From 9196d2b6ea626f592483912147af913730d301f1 Mon Sep 17 00:00:00 2001 From: KikooDX Date: Tue, 17 Mar 2020 18:01:24 +0100 Subject: [PATCH] =?UTF-8?q?To=20Leph=C3=A9'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 324 +++++++++ Makefile | 194 ++++++ assets-cg/icon-cg-sel.png | Bin 0 -> 8388 bytes assets-cg/icon-cg-uns.png | Bin 0 -> 4629 bytes assets-cg/img/elevator.png | Bin 0 -> 134 bytes assets-cg/img/elevator1.png | Bin 0 -> 143 bytes assets-cg/img/elevator10.png | Bin 0 -> 150 bytes assets-cg/img/elevator11.png | Bin 0 -> 147 bytes assets-cg/img/elevator12.png | Bin 0 -> 150 bytes assets-cg/img/elevator13.png | Bin 0 -> 148 bytes assets-cg/img/elevator14.png | Bin 0 -> 134 bytes assets-cg/img/elevator15.png | Bin 0 -> 141 bytes assets-cg/img/elevator16.png | Bin 0 -> 141 bytes assets-cg/img/elevator2.png | Bin 0 -> 145 bytes assets-cg/img/elevator3.png | Bin 0 -> 146 bytes assets-cg/img/elevator4.png | Bin 0 -> 149 bytes assets-cg/img/elevator5.png | Bin 0 -> 147 bytes assets-cg/img/elevator6.png | Bin 0 -> 152 bytes assets-cg/img/elevator7.png | Bin 0 -> 153 bytes assets-cg/img/elevator8.png | Bin 0 -> 155 bytes assets-cg/img/elevator9.png | Bin 0 -> 149 bytes assets-cg/img/ground.png | Bin 0 -> 99 bytes assets-cg/img/ice.png | Bin 0 -> 181 bytes assets-cg/img/player.png | Bin 0 -> 140 bytes assets-cg/img/spike.png | Bin 0 -> 192 bytes build-cg/assets/img/coin.png.o | Bin 0 -> 928 bytes build-cg/assets/img/elevator.png.o | Bin 0 -> 940 bytes build-cg/assets/img/elevator1.png.o | Bin 0 -> 944 bytes build-cg/assets/img/elevator10.png.o | Bin 0 -> 948 bytes build-cg/assets/img/elevator11.png.o | Bin 0 -> 948 bytes build-cg/assets/img/elevator12.png.o | Bin 0 -> 948 bytes build-cg/assets/img/elevator13.png.o | Bin 0 -> 948 bytes build-cg/assets/img/elevator14.png.o | Bin 0 -> 948 bytes build-cg/assets/img/elevator15.png.o | Bin 0 -> 948 bytes build-cg/assets/img/elevator16.png.o | Bin 0 -> 948 bytes build-cg/assets/img/elevator2.png.o | Bin 0 -> 944 bytes build-cg/assets/img/elevator3.png.o | Bin 0 -> 944 bytes build-cg/assets/img/elevator4.png.o | Bin 0 -> 944 bytes build-cg/assets/img/elevator5.png.o | Bin 0 -> 944 bytes build-cg/assets/img/elevator6.png.o | Bin 0 -> 944 bytes build-cg/assets/img/elevator7.png.o | Bin 0 -> 944 bytes build-cg/assets/img/elevator8.png.o | Bin 0 -> 944 bytes build-cg/assets/img/elevator9.png.o | Bin 0 -> 944 bytes build-cg/assets/img/glue.png.o | Bin 0 -> 672 bytes build-cg/assets/img/ground.png.o | Bin 0 -> 936 bytes build-cg/assets/img/ice.png.o | Bin 0 -> 668 bytes build-cg/assets/img/ice0.png.o | Bin 0 -> 672 bytes build-cg/assets/img/ice1.png.o | Bin 0 -> 672 bytes build-cg/assets/img/ice2.png.o | Bin 0 -> 672 bytes build-cg/assets/img/ice3.png.o | Bin 0 -> 672 bytes build-cg/assets/img/ice4.png.o | Bin 0 -> 672 bytes build-cg/assets/img/ice5.png.o | Bin 0 -> 672 bytes build-cg/assets/img/ice6.png.o | Bin 0 -> 672 bytes build-cg/assets/img/ice7.png.o | Bin 0 -> 672 bytes build-cg/assets/img/ice8.png.o | Bin 0 -> 672 bytes build-cg/assets/img/jitem.png.o | Bin 0 -> 932 bytes build-cg/assets/img/jitem_popup.png.o | Bin 0 -> 2484 bytes build-cg/assets/img/player.png.o | Bin 0 -> 808 bytes build-cg/assets/img/spike.png.o | Bin 0 -> 932 bytes build-cg/map | 917 ++++++++++++++++++++++++++ build-cg/platform.bin | Bin 0 -> 34844 bytes build-cg/platform.elf | Bin 0 -> 48984 bytes build-cg/src/collide.c.d | 5 + build-cg/src/collide.c.o | Bin 0 -> 1200 bytes build-cg/src/draw.c.d | 3 + build-cg/src/draw.c.o | Bin 0 -> 2520 bytes build-cg/src/levels.c.d | 3 + build-cg/src/levels.c.o | Bin 0 -> 2284 bytes build-cg/src/main.c.d | 10 + build-cg/src/main.c.o | Bin 0 -> 3456 bytes build-cg/src/player.c.d | 3 + build-cg/src/player.c.o | Bin 0 -> 812 bytes build.sh | 7 + editor.sh | 3 + include/collide.h | 4 + include/draw.h | 5 + include/levels.h | 1 + include/player.h | 3 + levels.lua | 31 + platform.g3a | Bin 0 -> 63520 bytes project.cfg | 91 +++ src/collide.c | 54 ++ src/draw.c | 109 +++ src/levels.c | 3 + src/main.c | 223 +++++++ src/player.c | 31 + transfer.sh | 3 + 87 files changed, 2027 insertions(+) create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 assets-cg/icon-cg-sel.png create mode 100644 assets-cg/icon-cg-uns.png create mode 100644 assets-cg/img/elevator.png create mode 100644 assets-cg/img/elevator1.png create mode 100644 assets-cg/img/elevator10.png create mode 100644 assets-cg/img/elevator11.png create mode 100644 assets-cg/img/elevator12.png create mode 100644 assets-cg/img/elevator13.png create mode 100644 assets-cg/img/elevator14.png create mode 100644 assets-cg/img/elevator15.png create mode 100644 assets-cg/img/elevator16.png create mode 100644 assets-cg/img/elevator2.png create mode 100644 assets-cg/img/elevator3.png create mode 100644 assets-cg/img/elevator4.png create mode 100644 assets-cg/img/elevator5.png create mode 100644 assets-cg/img/elevator6.png create mode 100644 assets-cg/img/elevator7.png create mode 100644 assets-cg/img/elevator8.png create mode 100644 assets-cg/img/elevator9.png create mode 100644 assets-cg/img/ground.png create mode 100644 assets-cg/img/ice.png create mode 100644 assets-cg/img/player.png create mode 100644 assets-cg/img/spike.png create mode 100644 build-cg/assets/img/coin.png.o create mode 100644 build-cg/assets/img/elevator.png.o create mode 100644 build-cg/assets/img/elevator1.png.o create mode 100644 build-cg/assets/img/elevator10.png.o create mode 100644 build-cg/assets/img/elevator11.png.o create mode 100644 build-cg/assets/img/elevator12.png.o create mode 100644 build-cg/assets/img/elevator13.png.o create mode 100644 build-cg/assets/img/elevator14.png.o create mode 100644 build-cg/assets/img/elevator15.png.o create mode 100644 build-cg/assets/img/elevator16.png.o create mode 100644 build-cg/assets/img/elevator2.png.o create mode 100644 build-cg/assets/img/elevator3.png.o create mode 100644 build-cg/assets/img/elevator4.png.o create mode 100644 build-cg/assets/img/elevator5.png.o create mode 100644 build-cg/assets/img/elevator6.png.o create mode 100644 build-cg/assets/img/elevator7.png.o create mode 100644 build-cg/assets/img/elevator8.png.o create mode 100644 build-cg/assets/img/elevator9.png.o create mode 100644 build-cg/assets/img/glue.png.o create mode 100644 build-cg/assets/img/ground.png.o create mode 100644 build-cg/assets/img/ice.png.o create mode 100644 build-cg/assets/img/ice0.png.o create mode 100644 build-cg/assets/img/ice1.png.o create mode 100644 build-cg/assets/img/ice2.png.o create mode 100644 build-cg/assets/img/ice3.png.o create mode 100644 build-cg/assets/img/ice4.png.o create mode 100644 build-cg/assets/img/ice5.png.o create mode 100644 build-cg/assets/img/ice6.png.o create mode 100644 build-cg/assets/img/ice7.png.o create mode 100644 build-cg/assets/img/ice8.png.o create mode 100644 build-cg/assets/img/jitem.png.o create mode 100644 build-cg/assets/img/jitem_popup.png.o create mode 100644 build-cg/assets/img/player.png.o create mode 100644 build-cg/assets/img/spike.png.o create mode 100644 build-cg/map create mode 100755 build-cg/platform.bin create mode 100755 build-cg/platform.elf create mode 100644 build-cg/src/collide.c.d create mode 100644 build-cg/src/collide.c.o create mode 100644 build-cg/src/draw.c.d create mode 100644 build-cg/src/draw.c.o create mode 100644 build-cg/src/levels.c.d create mode 100644 build-cg/src/levels.c.o create mode 100644 build-cg/src/main.c.d create mode 100644 build-cg/src/main.c.o create mode 100644 build-cg/src/player.c.d create mode 100644 build-cg/src/player.c.o create mode 100755 build.sh create mode 100755 editor.sh create mode 100644 include/collide.h create mode 100644 include/draw.h create mode 100644 include/levels.h create mode 100644 include/player.h create mode 100755 levels.lua create mode 100644 platform.g3a create mode 100644 project.cfg create mode 100644 src/collide.c create mode 100644 src/draw.c create mode 100644 src/levels.c create mode 100644 src/main.c create mode 100644 src/player.c create mode 100755 transfer.sh diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3f92dfc --- /dev/null +++ b/LICENSE @@ -0,0 +1,324 @@ +Creative Commons Attribution 4.0 International Creative Commons Corporation +("Creative Commons") is not a law firm and does not provide legal services +or legal advice. Distribution of Creative Commons public licenses does not +create a lawyer-client or other relationship. Creative Commons makes its licenses +and related information available on an "as-is" basis. Creative Commons gives +no warranties regarding its licenses, any material licensed under their terms +and conditions, or any related information. Creative Commons disclaims all +liability for damages resulting from their use to the fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and conditions +that creators and other rights holders may use to share original works of +authorship and other material subject to copyright and certain other rights +specified in the public license below. The following considerations are for +informational purposes only, are not exhaustive, and do not form part of our +licenses. + +Considerations for licensors: Our public licenses are intended for use by +those authorized to give the public permission to use material in ways otherwise +restricted by copyright and certain other rights. Our licenses are irrevocable. +Licensors should read and understand the terms and conditions of the license +they choose before applying it. Licensors should also secure all rights necessary +before applying our licenses so that the public can reuse the material as +expected. Licensors should clearly mark any material not subject to the license. +This includes other CC-licensed material, or material used under an exception +or limitation to copyright. More considerations for licensors : wiki.creativecommons.org/Considerations_for_licensors + +Considerations for the public: By using one of our public licenses, a licensor +grants the public permission to use the licensed material under specified +terms and conditions. If the licensor's permission is not necessary for any +reason–for example, because of any applicable exception or limitation to copyright–then +that use is not regulated by the license. Our licenses grant only permissions +under copyright and certain other rights that a licensor has authority to +grant. Use of the licensed material may still be restricted for other reasons, +including because others have copyright or other rights in the material. A +licensor may make special requests, such as asking that all changes be marked +or described. Although not required by our licenses, you are encouraged to +respect those requests where reasonable. More considerations for the public +: wiki.creativecommons.org/Considerations_for_licensees Creative Commons Attribution +4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to +be bound by the terms and conditions of this Creative Commons Attribution +4.0 International Public License ("Public License"). To the extent this Public +License may be interpreted as a contract, You are granted the Licensed Rights +in consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the Licensor +receives from making the Licensed Material available under these terms and +conditions. + +Section 1 – Definitions. + +a. Adapted Material means material subject to Copyright and Similar Rights +that is derived from or based upon the Licensed Material and in which the +Licensed Material is translated, altered, arranged, transformed, or otherwise +modified in a manner requiring permission under the Copyright and Similar +Rights held by the Licensor. For purposes of this Public License, where the +Licensed Material is a musical work, performance, or sound recording, Adapted +Material is always produced where the Licensed Material is synched in timed +relation with a moving image. + +b. Adapter's License means the license You apply to Your Copyright and Similar +Rights in Your contributions to Adapted Material in accordance with the terms +and conditions of this Public License. + +c. Copyright and Similar Rights means copyright and/or similar rights closely +related to copyright including, without limitation, performance, broadcast, +sound recording, and Sui Generis Database Rights, without regard to how the +rights are labeled or categorized. For purposes of this Public License, the +rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + +d. Effective Technological Measures means those measures that, in the absence +of proper authority, may not be circumvented under laws fulfilling obligations +under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, +and/or similar international agreements. + +e. Exceptions and Limitations means fair use, fair dealing, and/or any other +exception or limitation to Copyright and Similar Rights that applies to Your +use of the Licensed Material. + +f. Licensed Material means the artistic or literary work, database, or other +material to which the Licensor applied this Public License. + +g. Licensed Rights means the rights granted to You subject to the terms and +conditions of this Public License, which are limited to all Copyright and +Similar Rights that apply to Your use of the Licensed Material and that the +Licensor has authority to license. + +h. Licensor means the individual(s) or entity(ies) granting rights under this +Public License. + +i. Share means to provide material to the public by any means or process that +requires permission under the Licensed Rights, such as reproduction, public +display, public performance, distribution, dissemination, communication, or +importation, and to make material available to the public including in ways +that members of the public may access the material from a place and at a time +individually chosen by them. + +j. Sui Generis Database Rights means rights other than copyright resulting +from Directive 96/9/EC of the European Parliament and of the Council of 11 +March 1996 on the legal protection of databases, as amended and/or succeeded, +as well as other essentially equivalent rights anywhere in the world. + +k. You means the individual or entity exercising the Licensed Rights under +this Public License. Your has a corresponding meaning. + +Section 2 – Scope. + + a. License grant. + +1. Subject to the terms and conditions of this Public License, the Licensor +hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, +irrevocable license to exercise the Licensed Rights in the Licensed Material +to: + + A. reproduce and Share the Licensed Material, in whole or in part; and + + B. produce, reproduce, and Share Adapted Material. + +2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions +and Limitations apply to Your use, this Public License does not apply, and +You do not need to comply with its terms and conditions. + + 3. Term. The term of this Public License is specified in Section 6(a). + +4. Media and formats; technical modifications allowed. The Licensor authorizes +You to exercise the Licensed Rights in all media and formats whether now known +or hereafter created, and to make technical modifications necessary to do +so. The Licensor waives and/or agrees not to assert any right or authority +to forbid You from making technical modifications necessary to exercise the +Licensed Rights, including technical modifications necessary to circumvent +Effective Technological Measures. For purposes of this Public License, simply +making modifications authorized by this Section 2(a)(4) never produces Adapted +Material. + + 5. Downstream recipients. + +A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed +Material automatically receives an offer from the Licensor to exercise the +Licensed Rights under the terms and conditions of this Public License. + +B. No downstream restrictions. You may not offer or impose any additional +or different terms or conditions on, or apply any Effective Technological +Measures to, the Licensed Material if doing so restricts exercise of the Licensed +Rights by any recipient of the Licensed Material. + +6. No endorsement. Nothing in this Public License constitutes or may be construed +as permission to assert or imply that You are, or that Your use of the Licensed +Material is, connected with, or sponsored, endorsed, or granted official status +by, the Licensor or others designated to receive attribution as provided in +Section 3(a)(1)(A)(i). + + b. Other rights. + +1. Moral rights, such as the right of integrity, are not licensed under this +Public License, nor are publicity, privacy, and/or other similar personality +rights; however, to the extent possible, the Licensor waives and/or agrees +not to assert any such rights held by the Licensor to the limited extent necessary +to allow You to exercise the Licensed Rights, but not otherwise. + +2. Patent and trademark rights are not licensed under this Public License. + +3. To the extent possible, the Licensor waives any right to collect royalties +from You for the exercise of the Licensed Rights, whether directly or through +a collecting society under any voluntary or waivable statutory or compulsory +licensing scheme. In all other cases the Licensor expressly reserves any right +to collect such royalties. + +Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following +conditions. + + a. Attribution. + +1. If You Share the Licensed Material (including in modified form), You must: + +A. retain the following if it is supplied by the Licensor with the Licensed +Material: + +i. identification of the creator(s) of the Licensed Material and any others +designated to receive attribution, in any reasonable manner requested by the +Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + +v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + +B. indicate if You modified the Licensed Material and retain an indication +of any previous modifications; and + +C. indicate the Licensed Material is licensed under this Public License, and +include the text of, or the URI or hyperlink to, this Public License. + +2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner +based on the medium, means, and context in which You Share the Licensed Material. +For example, it may be reasonable to satisfy the conditions by providing a +URI or hyperlink to a resource that includes the required information. + +3. If requested by the Licensor, You must remove any of the information required +by Section 3(a)(1)(A) to the extent reasonably practicable. + +4. If You Share Adapted Material You produce, the Adapter's License You apply +must not prevent recipients of the Adapted Material from complying with this +Public License. + +Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to +Your use of the Licensed Material: + +a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, +reuse, reproduce, and Share all or a substantial portion of the contents of +the database; + +b. if You include all or a substantial portion of the database contents in +a database in which You have Sui Generis Database Rights, then the database +in which You have Sui Generis Database Rights (but not its individual contents) +is Adapted Material; and + +c. You must comply with the conditions in Section 3(a) if You Share all or +a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not replace +Your obligations under this Public License where the Licensed Rights include +other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. + +a. Unless otherwise separately undertaken by the Licensor, to the extent possible, +the Licensor offers the Licensed Material as-is and as-available, and makes +no representations or warranties of any kind concerning the Licensed Material, +whether express, implied, statutory, or other. This includes, without limitation, +warranties of title, merchantability, fitness for a particular purpose, non-infringement, +absence of latent or other defects, accuracy, or the presence or absence of +errors, whether or not known or discoverable. Where disclaimers of warranties +are not allowed in full or in part, this disclaimer may not apply to You. + +b. To the extent possible, in no event will the Licensor be liable to You +on any legal theory (including, without limitation, negligence) or otherwise +for any direct, special, indirect, incidental, consequential, punitive, exemplary, +or other losses, costs, expenses, or damages arising out of this Public License +or use of the Licensed Material, even if the Licensor has been advised of +the possibility of such losses, costs, expenses, or damages. Where a limitation +of liability is not allowed in full or in part, this limitation may not apply +to You. + +c. The disclaimer of warranties and limitation of liability provided above +shall be interpreted in a manner that, to the extent possible, most closely +approximates an absolute disclaimer and waiver of all liability. + +Section 6 – Term and Termination. + +a. This Public License applies for the term of the Copyright and Similar Rights +licensed here. However, if You fail to comply with this Public License, then +Your rights under this Public License terminate automatically. + +b. Where Your right to use the Licensed Material has terminated under Section +6(a), it reinstates: + +1. automatically as of the date the violation is cured, provided it is cured +within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + +c. For the avoidance of doubt, this Section 6(b) does not affect any right +the Licensor may have to seek remedies for Your violations of this Public +License. + +d. For the avoidance of doubt, the Licensor may also offer the Licensed Material +under separate terms or conditions or stop distributing the Licensed Material +at any time; however, doing so will not terminate this Public License. + + e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 – Other Terms and Conditions. + +a. The Licensor shall not be bound by any additional or different terms or +conditions communicated by You unless expressly agreed. + +b. Any arrangements, understandings, or agreements regarding the Licensed +Material not stated herein are separate from and independent of the terms +and conditions of this Public License. + +Section 8 – Interpretation. + +a. For the avoidance of doubt, this Public License does not, and shall not +be interpreted to, reduce, limit, restrict, or impose conditions on any use +of the Licensed Material that could lawfully be made without permission under +this Public License. + +b. To the extent possible, if any provision of this Public License is deemed +unenforceable, it shall be automatically reformed to the minimum extent necessary +to make it enforceable. If the provision cannot be reformed, it shall be severed +from this Public License without affecting the enforceability of the remaining +terms and conditions. + +c. No term or condition of this Public License will be waived and no failure +to comply consented to unless expressly agreed to by the Licensor. + +d. Nothing in this Public License constitutes or may be interpreted as a limitation +upon, or waiver of, any privileges and immunities that apply to the Licensor +or You, including from the legal processes of any jurisdiction or authority. + +Creative Commons is not a party to its public licenses. Notwithstanding, Creative +Commons may elect to apply one of its public licenses to material it publishes +and in those instances will be considered the "Licensor." The text of the +Creative Commons public licenses is dedicated to the public domain under the +CC0 Public Domain Dedication. Except for the limited purpose of indicating +that material is shared under a Creative Commons public license or as otherwise +permitted by the Creative Commons policies published at creativecommons.org/policies, +Creative Commons does not authorize the use of the trademark "Creative Commons" +or any other trademark or logo of Creative Commons without its prior written +consent including, without limitation, in connection with any unauthorized +modifications to any of its public licenses or any other arrangements, understandings, +or agreements concerning use of licensed material. For the avoidance of doubt, +this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..94fd233 --- /dev/null +++ b/Makefile @@ -0,0 +1,194 @@ +#! /usr/bin/make -f +# Default Makefile for fxSDK add-ins. This file was probably copied there by +# the [fxsdk] program. +#--- + +# +# Configuration +# + +include project.cfg + +# Compiler flags +CFLAGSFX := $(CFLAGS) $(CFLAGS_FX) $(INCLUDE) +CFLAGSCG := $(CFLAGS) $(CFLAGS_CG) $(INCLUDE) + +# Linker flags +LDFLAGSFX := $(LDFLAGS) $(LDFLAGS_FX) +LDFLAGSCG := $(LDFLAGS) $(LDFLAGS_CG) + +# Dependency list generation flags +depflags = -MMD -MT $@ -MF $(@:.o=.d) -MP +# ELF to binary flags +BINFLAGS := -R .bss -R .gint_bss + +# G1A and G3A generation flags +NAME_G1A ?= $(NAME) +NAME_G3A ?= $(NAME) +G1AF := -i "$(ICON_FX)" -n "$(NAME_G1A)" --internal="$(INTERNAL)" +G3AF := -n basic:"$(NAME_G3A)" -i uns:"$(ICON_CG_UNS)" -i sel:"$(ICON_CG_SEL)" + +ifeq "$(TOOLCHAIN_FX)" "" +TOOLCHAIN_FX := sh3eb-elf +endif + +ifeq "$(TOOLCHAIN_CG)" "" +TOOLCHAIN_CG := sh4eb-elf +endif + +# fxconv flags +FXCONVFX := --fx --toolchain=$(TOOLCHAIN_FX) +FXCONVCG := --cg --toolchain=$(TOOLCHAIN_CG) + +# +# File listings +# + +NULL := +TARGET := $(subst $(NULL) $(NULL),-,$(NAME)) + +ifeq "$(TARGET_FX)" "" +TARGET_FX := $(TARGET).g1a +endif + +ifeq "$(TARGET_CG)" "" +TARGET_CG := $(TARGET).g3a +endif + +ELF_FX := build-fx/$(shell basename -s .g1a $(TARGET_FX)).elf +BIN_FX := $(ELF_FX:.elf=.bin) + +ELF_CG := build-cg/$(shell basename -s .g3a $(TARGET_CG)).elf +BIN_CG := $(ELF_CG:.elf=.bin) + +# Source files +src := $(wildcard src/*.[csS] \ + src/*/*.[csS] \ + src/*/*/*.[csS] \ + src/*/*/*/*.[csS]) +assets-fx := $(wildcard assets-fx/*/*) +assets-cg := $(wildcard assets-cg/*/*) + +# Object files +obj-fx := $(src:%=build-fx/%.o) \ + $(assets-fx:assets-fx/%=build-fx/assets/%.o) +obj-cg := $(src:%=build-cg/%.o) \ + $(assets-cg:assets-cg/%=build-cg/assets/%.o) + +# Additional dependencies +deps-fx := $(ICON_FX) +deps-cg := $(ICON_CG_UNS) $(ICON_CG_SEL) + +# All targets +all := +ifneq "$(wildcard build-fx)" "" +all += all-fx +endif +ifneq "$(wildcard build-cg)" "" +all += all-cg +endif + +# +# Build rules +# + +all: $(all) + +all-fx: $(TARGET_FX) +all-cg: $(TARGET_CG) + +$(TARGET_FX): $(obj-fx) $(deps-fx) + @ mkdir -p $(dir $@) + $(TOOLCHAIN_FX)-gcc -o $(ELF_FX) $(obj-fx) $(CFLAGSFX) $(LDFLAGSFX) + $(TOOLCHAIN_FX)-objcopy -O binary $(BINFLAGS) $(ELF_FX) $(BIN_FX) + fxg1a $(BIN_FX) -o $@ $(G1AF) + +$(TARGET_CG): $(obj-cg) $(deps-cg) + @ mkdir -p $(dir $@) + $(TOOLCHAIN_CG)-gcc -o $(ELF_CG) $(obj-cg) $(CFLAGSCG) $(LDFLAGSCG) + $(TOOLCHAIN_CG)-objcopy -O binary $(BINFLAGS) $(ELF_CG) $(BIN_CG) + mkg3a $(G3AF) $(BIN_CG) $@ + +# C sources +build-fx/%.c.o: %.c + @ mkdir -p $(dir $@) + $(TOOLCHAIN_FX)-gcc -c $< -o $@ $(CFLAGSFX) $(depflags) +build-cg/%.c.o: %.c + @ mkdir -p $(dir $@) + $(TOOLCHAIN_CG)-gcc -c $< -o $@ $(CFLAGSCG) $(depflags) + +# Assembler sources +build-fx/%.s.o: %.s + @ mkdir -p $(dir $@) + $(TOOLCHAIN_FX)-gcc -c $< -o $@ +build-cg/%.s.o: %.s + @ mkdir -p $(dir $@) + $(TOOLCHAIN_CG)-gcc -c $< -o $@ + +# Preprocessed assembler sources +build-fx/%.S.o: %.S + @ mkdir -p $(dir $@) + $(TOOLCHAIN_FX)-gcc -c $< -o $@ $(INCLUDE) +build-cg/%.S.o: %.S + @ mkdir -p $(dir $@) + $(TOOLCHAIN_CG)-gcc -c $< -o $@ $(INCLUDE) + +# Images +build-fx/assets/img/%.o: assets-fx/img/% + @ mkdir -p $(dir $@) + fxconv -i $< -o $@ $(FXCONVFX) name:img_$(basename $*) $(IMG.$*) +build-cg/assets/img/%.o: assets-cg/img/% + @ mkdir -p $(dir $@) + fxconv -i $< -o $@ $(FXCONVCG) name:img_$(basename $*) $(IMG.$*) + +# Fonts +build-fx/assets/fonts/%.o: assets-fx/fonts/% + @ mkdir -p $(dir $@) + fxconv -f $< -o $@ $(FXCONVFX) name:font_$(basename $*) $(FONT.$*) +build-cg/assets/fonts/%.o: assets-cg/fonts/% + @ mkdir -p $(dir $@) + fxconv -f $< -o $@ $(FXCONVCG) name:font_$(basename $*) $(FONT.$*) + +# Binaries +build-fx/assets/bin/%.o: assets-fx/bin/% + @ mkdir -p $(dir $@) + fxconv -b $< -o $@ $(FXCONVFX) name:bin_$(basename $*) $(BIN.$*) +build-cg/assets/bin/%.o: assets-cg/bin/% + @ mkdir -p $(dir $@) + fxconv -b $< -o $@ $(FXCONVCG) name:bin_$(basename $*) $(BIN.$*) + +# +# Cleaning and utilities +# + +# Dependency information +-include $(shell find build* -name *.d 2> /dev/null) +build-fx/%.d: ; +build-cg/%.d: ; +.PRECIOUS: build-fx build-cg build-fx/%.d build-cg/%.d %/ + +clean-fx: + @ rm -rf build-fx/ +clean-cg: + @ rm -rf build-cg/ + +distclean-fx: clean-fx + @ rm -f $(TARGET_FX) +distclean-cg: clean-cg + @ rm -f $(TARGET_CG) + +clean: clean-fx clean-cg + +distclean: distclean-fx distclean-cg + +install-fx: $(TARGET_FX) + p7 send -f $< +install-cg: $(TARGET_CG) + @ while [[ ! -h /dev/Prizm1 ]]; do sleep 0.25; done + @ while ! mount /dev/Prizm1; do sleep 0.25; done + @ rm -f /mnt/prizm/$< + @ cp $< /mnt/prizm + @ umount /dev/Prizm1 + @- eject /dev/Prizm1 + +.PHONY: all all-fx all-cg clean distclean install-fx install-cg diff --git a/assets-cg/icon-cg-sel.png b/assets-cg/icon-cg-sel.png new file mode 100644 index 0000000000000000000000000000000000000000..7137b504cfd44f62f3105ce7a203b9100a557d0f GIT binary patch literal 8388 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 ag#Q8hHNm}t`+-sb0000 zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=Q1b|gEFMdw^aErBH1E{9-qPVFF%Ir$HAB8KVSRx`CJP=-Jc(? z@cJ3t*BcsNw2+OR*FP32?@t!`&5e-1O_2Bg@$1HQyf==&Sk%QI|Mk^A z|DUtkIr}-?NCh{P=TOfU?qeASDqfO1t?;h=&wQ`<-FY`Z{0zx2KfUsvp@$gQJfyH( z7~zB+7N0XrY)o;-%4du-%DvX4#vZ4536ks`POQ>pNs}luZV^dN;@g&R_w9GT85%pU zz|a_2EHLFy-|nvl{GInX)8nHM%$XXmudpjx5@3c!&VDkCfQ0jkTfPqdc)wrnOJIcv z=IiFh0f*OT3C-a%x8x>(FfQ}?uAza%dNE9TI+4}*oBhJz4Y2!?|lsR9LbG5m^~OV zhDH@lnzd-vrd`J*eP)_@mRV<;eU25EthDkftFE^C8ar%K$?dfBF1zlw`yPi}J95&= zr<{7)>1Vv7_KNBs-v1zK;T5%bBW2_2J8E35)fT!-1jCtZF(YCz1tMN80wi>_nE4h` ziWWJGneUOR$Ppv6#byORTquMv?GW<`@7R4t?r+D<;p@MOTl_nba~8V)K;)v^@-1$^ ziP|zGoHt@m6`D`IP<@OUvGEUQTRyRO8&cMotFeqwm@DlSQun3oRKuz1oR)pm5!a$X zho zweN3-nIp>7wvTz?+d%XR%ncoyLauQBfXAV?16eH?E;Pnh2$L@g1AZ{ytOK>2!} z-=4Tr%S_8G18_Yw@`p^OPc+b&j6Zo-iP#1$$fSyoVbQn_wYG4 zrk@KqxM)JCDJLtOfA+`2Dq_7u`W?}vYDF7aNuV5 zf+$FtAz`+qMb6yh%C3VQ)=8xu8TqNjc0F1V9VMeo2v1*Ne|P;li~~sOyQcNHFC5uj z+Y;XhBj7kY*kZz})_$0HR?$sKY)O@sZqd$@Z4F^One{sngDT+gt^@(xOLO}}5Rp%)|+m0PCOt?Tt>4=}@ z3m$28-D8D4j9(U#mv6lh{%2c@h{pO6q{otv3mq1TRBM~RnEG{&`@;Bu{l%`!kE&EFr=K?R%xr@y^5l0s&14r;d>~lw@r?WRniI_rYDyTB$lvz zI!gwOwIK44c50%Es$H!^+HfJ^x6D3%lQov~fLDGpcK~OYr5*OEkTkprP2y*ivtFWT z{>H7L;nG(3^X-e?qt&~n!uc4vP!Mlo9Q9ZmLE+9Gq7Y2 zs3tJd^Bql52%hG!_)#AP~`<>lYos# z1S$mF~QCPuqCQ=5D5y}u*9YTC55gaB==Jh{?i(CKNaCWtwHxw z5&pgg(L_L6szoRQ+L298p(H?Y=O=oTiaY~yHl2cli^ki7P>!0OjGH##RR7#C5ZLeN>)xCG+&Nm%y zY_kS3(-`A#E$;5>V`kJ1$DaU$^?+&P#SV5^}eLni^i-J8$m=U?^P0X1>vsX3WH#1QR+}$&F5v z)Ta_HhV2!~&O#X`o7$XdB?oRM)}Ek~uTrb|J@Ali!x!7ElM z&CV?J5RLk1V+Z&IpMfQXumcLl+od^@lu_Uo2@W9C$wmOpp*J`FrrRc$vSh*!n9?v& zQ7M5er+^mawk$jN>W~PPy{ST|f)_Q*|VNL+rT8#y6rs;4(V`M>XH)3ngMTg_yFkJ_Auf+li-k2F2K$JB8|tE z4R`^4Q3@Trb_4pYy`bGUT`QDJcs0-#(HwFa#6`JlYu1rlLh4Xj8rTx|YvKH0cmP@8 z=~*~M_L^yZM}TOjq=YjNgR|0z%;Gy009ZL>ss_&j9OWhF(uX!PS%zB5#>0Nu)8cU2 z)tDa$O9DU0(cBAV!_U}!O#6r9fz8|M-MVZZk;_2&==2=0@+Y?g_!Y6D&-4h@OM> zL5n0o7l%m^t$1D4yPwjK7B-GMRFJnW?LKEh*^`9mBiusr;};UMn_i!lE@sVYQU?xv zlxghtgpZI@w!f35?%$`zhZ)^JrpB6gBDW(dtI>Xl(&-}3TqE78@2oL5GS5O{e;Xj# z>`DC96JH|~peo7)T7 zm(>n6((%`2{eKvMu02poa5{@jy8=BRyX}EV&(r!{l%+k-z@`l19(QD-_mDaLwS*aT zr0Hq{xJjqkd{Vn|@H+3K1beb^LIy=)HfA$@JKJl4q7Z}jCU<&ncRFHQXsAD@d)g9Y z_9Dgm^E4%65y@^WGUPoSTSL6`-uE?tfXutmi}A6+9=PD!@5>Bv?`7(18Okzz^}>r1 z(t0maaKmef-98L)_Ncm2;`m|y>W8by?tFW8bIo`gfin6$N_w6{hS(pm@;c8i4uuKe zzz>JM{AuE(3iQMW^5l-H$YV$ZYHeHfZr8_xYV#Q@1f@}-4X940FDHv)6CS{&4 zHqd>Jyix~gM;g3SBH*RWEXr_K4@)bx5zK9*_I+ggI&yOL6_oEc9wYiSqE!K3JgRmv!fYs6+3b-{` zm+sY-QV>(Yn#CwaWjnP(X_!V?fEAQNzR@Ghk)Z(mS{nSmbj)OboWN)B(YC&ylt9q< z*PkW+x1a9cUEu#0`oFLch=>LS7XAnQTdXQe8tq&F000SaNLh0L01FcU01FcV0GgZ_ z00007bV*G`2jd106DSx@HxUjR55_;C2hJY6wFkX(BjJGm1n~lakQhQ*A;E~@;;$e?ASo?Y-Dan=TMuI< z<8HgVn%P>)d#Bmiwsb%FzVCZ|Or+6hAc#Lh0R#XApa2w!f!$j*LQX1YC=xk5EqlC^ z+7v68FQ`qu|B`LnilXp^ZQI_jH|tc7V!klzRPK}C7#xhC#0Sy)x6Wd(e_VUoD6877e~hlH*V^z|lUv5DcEmwS4= z(&xj`NvT>rsebn$!V!o>G^}}ma1+6*>H)${B(7_6q5L$>!_)F{rSk5}fsd!`mrAud zwLG=WpPvz7mmXr_&(DakOAoQ|=VwINWf)?iw*A8-?~jgrpp?H=2@RCJTp*lF5WR?8 zg6Ku$5{6#Pdc9ORlU9AWKtxaR)r-SZeD&h+lrZ!nxg-bll%_80p^>I8D_tXDK?&$7 zqF91>iYS&)Jw-m0rk>(06St>$%f#&|oerg`r+CZculkgxp3=Ecx}#5#45e%Ols0+F zx$9Hf;VICkbZwu4rSvI;5{4!_br&JDxVpv`jy2z*mgU$KV_|tk^pqzLA0UM0mR`0E zigR@EVr4C=X~AXU(97FG0U zJsO?Q=h$88bSNQDA3u@8*w3mD!nT$Bw8GMg$?m7uj4sBsw7~g(r>}W0?%Q#gd56Yev)Q-D1(5I|!lOVsSp7 zn_GJ6=xCY6h;&BACpsm4y!Fy5aojbiRVo=K`S@msbK!!L#X@rWwCYpbRYt5qj7ZZA z;tnEi#&vBpozCX+EKQ`d2rGRY8rj}>~PubkC>-!X}D8^Z3_-e`r%5W-`?Cm}N{OOY4&%*QGrzCW}e0Y%R@4t0@ z$Y*qb5ULTfyuMy26u-Jov$(^usj6Vh4th#2;3+@>y`^E5P)oW@h6a*%(wY1Bru+{A zLLfLt3s3+GKmjNK1)u;FfC5ke3P1rU00jb|02F`%Pyh-*`JeF%0p|(b4g|HY00000 LNkvXXu0mjfMjhGA literal 0 HcmV?d00001 diff --git a/assets-cg/img/elevator.png b/assets-cg/img/elevator.png new file mode 100644 index 0000000000000000000000000000000000000000..2df08a3c4a22a1bab4f596b5c487cbca2041b523 GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|96VhdLo9le zw`|w{dES9BVUf${2L=tS(~rzM+aB;kZ(mtS5#z42FCM+nTR4xq;HJ+BRc86#E8NU6 gAAO3&dG;_esMHF0_3eH56KEELr>mdKI;Vst0C3qY=>Px# literal 0 HcmV?d00001 diff --git a/assets-cg/img/elevator1.png b/assets-cg/img/elevator1.png new file mode 100644 index 0000000000000000000000000000000000000000..6810489ed6e7c43d097c02350dbdf7ddbd2b006f GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|JUv|;Lo9le zw`|w{dES9BVUdgRTizR+e+nF)ceee6F+-%XopZ)x)*Q1(MXXB5~&zw{0~kIyM$kUl1TrsexTV5p00i_>zopr08!2}+W-In literal 0 HcmV?d00001 diff --git a/assets-cg/img/elevator11.png b/assets-cg/img/elevator11.png new file mode 100644 index 0000000000000000000000000000000000000000..d38971d07c8eedea0e6bb65e6ec41c1b4c441e91 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|d_7$pLo9le zw`|w{d7go_+Dtx4fo;c+TL*9YxV${TtYOx`Im>8Bgif8Rx?C}g}FoUP7pUXO@geCy!gEajB literal 0 HcmV?d00001 diff --git a/assets-cg/img/elevator12.png b/assets-cg/img/elevator12.png new file mode 100644 index 0000000000000000000000000000000000000000..aad06e50e0ab3ab772452e4e708970bd9d085863 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|0z6$DLo9le zw`|w{d7go_+Dtx4fo;c+TL*9YxV${T98oaSM`yte*2QcB1_|e%IkQ}5^JAW1`pCG& xEbc&>vR-(=ebyg;x_$e0=_#mLFJ8^aaCf)#nIC&ZzXHu>@O1TaS?83{1OVqxGXVeq literal 0 HcmV?d00001 diff --git a/assets-cg/img/elevator13.png b/assets-cg/img/elevator13.png new file mode 100644 index 0000000000000000000000000000000000000000..cfd1c5e3b16ce6ffb671beea9eba11e0d613997c GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|{5)M8Lo9le zw`|w{d7go_+Dtx4fo;c+TL*9I>`>`o^-*~(VcKBA{4K}M#UQIts$q@be8nvvnardM ucQ*afJMcU{r|3#4qv1}$Sl*+03=E4WNS}G_|JDU)GJ~h9pUXO@geCwxBruEs literal 0 HcmV?d00001 diff --git a/assets-cg/img/elevator14.png b/assets-cg/img/elevator14.png new file mode 100644 index 0000000000000000000000000000000000000000..68820baacd9dacf8303dd76666784724bb95185a GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|96VhdLo9le zw`|w{dES9BVUf${6^t$t8`3{3w%N|+pP0_D$*rdC!ZGd}IY*vyz1qz%zkcJ%!0W6n gi+Ezopr05GF1?*IS* literal 0 HcmV?d00001 diff --git a/assets-cg/img/elevator15.png b/assets-cg/img/elevator15.png new file mode 100644 index 0000000000000000000000000000000000000000..fae3c265c0eb98b765b6a3a00262ba700c393f93 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|+&x_!Lo9le zw`|w{dES9BVUf#c4}*mB&zyOx&E%ENGogTe~DWM4f`dTc{ literal 0 HcmV?d00001 diff --git a/assets-cg/img/elevator2.png b/assets-cg/img/elevator2.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8ce78cf327a82013debad7e0405b7f7825861e GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|yggkULo9le zw`|w{dES9BVUdfmBlEW$yCWOYKP!IXak$oTUf@;*2n(;=?k*8d*b~DVc-*__cI%~@! sp4n2jjxcF9u+Dt^DBHbWoQIj2f$y2bnTjxP4xqUVp00i_>zopr05@4L&j0`b literal 0 HcmV?d00001 diff --git a/assets-cg/img/elevator4.png b/assets-cg/img/elevator4.png new file mode 100644 index 0000000000000000000000000000000000000000..f909bc85228d32fc9ed0cd9a41490e7b22df584b GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|{5@S9Lo9le zw`|w{dA@=9&CQyQMj$wN^g7>kAvQIqSr>1*NIU2p$YL;)F5KDlOYgw*_?)6ErHppB u3s)}m)tSH)F~Rajkj&W_gDeJSW`-nD@hrB_yUziQX7F_Nb6Mw<&;$T4!!kku literal 0 HcmV?d00001 diff --git a/assets-cg/img/elevator5.png b/assets-cg/img/elevator5.png new file mode 100644 index 0000000000000000000000000000000000000000..5dd1d8a7fddf603a4445981710d7bec583ddc19b GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|d_7$pLo9le zw`|w{dA@=5&CME)*7uLH+kGXOg~I}c7{Zt@7y!vY4z4VeTai sVkvymdKI;Vst0KK0qJpcdz literal 0 HcmV?d00001 diff --git a/assets-cg/img/elevator6.png b/assets-cg/img/elevator6.png new file mode 100644 index 0000000000000000000000000000000000000000..e46c9afec1372a1ededae5e6ae8068643fa20ac0 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|f;?RuLo9le zw`|w{dA@=5&CME)*7uLH+kGXOg$-vFc0M#|5NSwc(3@RwGVnUVn5Am$t%3GI##xr=j`njxgN@xNA^5Ho< literal 0 HcmV?d00001 diff --git a/assets-cg/img/elevator8.png b/assets-cg/img/elevator8.png new file mode 100644 index 0000000000000000000000000000000000000000..227736b3544d24cb2ed4751eb2f2b961483e0bb6 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|LOop^Lo9le zw`|w{dA@<|TaI0e-jM@9@ZeE)yW%mIHEA(L5^NK=0(cIjTkDx#DP^>5V4c~lJ0k#D?_GicOu|%Nb8deUx;P)=$_hI9;0|@{sfyqsHmWffg`$y85}Sb4q9e06-Bl A;Q#;t literal 0 HcmV?d00001 diff --git a/assets-cg/img/elevator9.png b/assets-cg/img/elevator9.png new file mode 100644 index 0000000000000000000000000000000000000000..811936f0d9131643012a4339229459d8aa32894e GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|{5@S9Lo9le zw`|w{dA@<=TaMk42L2sCZY}&U^TR4NrUeoXC(3fNR=j2^V&FDnw{3Xws40+{Lt;bv vXT_#Y?&XXpq&`YIN$V$U7M!lFQO3yd$W}b7+UD~epwSGTu6{1-oD!M1ACWEsDrE3<^>bP0l+XkKSVtO3 literal 0 HcmV?d00001 diff --git a/assets-cg/img/ice.png b/assets-cg/img/ice.png new file mode 100644 index 0000000000000000000000000000000000000000..4910965555856a3e09dd67ff1965f0cd98b3b39c GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3HEhl+{lMQjEnx?oJHr&dIz4a`HW0978lF zCSQs9{okHh@N;q8hyCan4V9*>}8xSO4zE8I6LLVjD8=eF|k;Z^OOo$-=|OB_)6$t@g>05Bg@6 Z4EtJL;yKR?MFOp6@O1TaS?83{1OTg`K7RlJ literal 0 HcmV?d00001 diff --git a/assets-cg/img/player.png b/assets-cg/img/player.png new file mode 100644 index 0000000000000000000000000000000000000000..23ee085c93f31b047ad01cb8e83d6a0f88c188ac GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eK!3HFi66di4DaPU;cPEB*=VV?2Ic}aVjv*Qo zlmGnxc(k5Ph(TDh>*S>aO?m}CF4cA6FS{}y0W+issyx@Tv&_o7LS3j3^P6u7H`HWP;)8E(U_jhQWsZaGb5+ots#=}I(hh+r^pka13kbN#5lu}z^} z*iZb-+)Is%G%c4itya`|@=JbMf2YjZ6Ai4-rW_RSP}$iqsinnKVB=Hvm`axHUu_#V mrW%xd)wy9JRAjcvk-_+ARMrt?sT!aw7(8A5T-G@yGywp-t3mw$ literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/coin.png.o b/build-cg/assets/img/coin.png.o new file mode 100644 index 0000000000000000000000000000000000000000..2d9d87bec00716e2533f9ebd389af6163590594d GIT binary patch literal 928 zcmb<-^>JflVq|~=Mg}b)8%coa23XDnOlmN&GO&PU1sDY2dMIN2Pr-x;12N?wA}|#Y zo^Cw?V#*`rAS{pyWc^Ulx&PhWO0f^!Vib%sd1uJ~b}| ziC3IimCC@NS6rD}l9&XfONtmdpORRTNRqFlfvQ1nV}j}ergVrKp?sJhkkx>c z+W?6GAO?CBtd|8ygYpC?R18Rg08JflVq|~=Mg}b)8%coa30TeqOlmN&GO&PI0t^C{?*^CI_R@ z&47u+Xk>Yq7&;A8gDwu^Q%fFZ&Op%Mbby0khNK~QIud~J`573PI6zvUd_@HR|3`-S z%-r<&)ST3^#FG3XR9<{)UJ9B>ab{I21A|_1Wo}7g5|Az_g3uW-R#ARRVo4$n2VxhN z1`31R%mkGNrh15bp?sKskkx>c+W?6GAO?CHtQV9=fL>(ago*(v5Mb&75|Eq(=EL)u VAdm~v3k6IEfDC0A4@iUU1px2&X)yo* literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/elevator1.png.o b/build-cg/assets/img/elevator1.png.o new file mode 100644 index 0000000000000000000000000000000000000000..c3317d97e25c1a95e9088684b0bc9f234e879226 GIT binary patch literal 944 zcmb<-^>JflVq|~=Mg}b)8%coa1z64mOlmN&GO&PI0t^C{@8}8txBYL!Z68P$p9=i) zFj-tC;Fm|1#byG2d30HH6DXC(9cGlufYSjEf*F#A;OR&J!Us}J93U-FzA}RU|06?u zW^Q_XYEEidVo83HAsRP6H7^BSs5rAKm4QL8xH7jSF$qYQ6hY_=7^^5hC9xzChZ}JS zO9RD0?q-6@15-Z4%}_qfPsnOO%58u|01yMc4%Q3GCqQp9a6-j^6bLZ&010z26GFhu V69jTWdZB>nFpvQZA2JflVq|~=Mg}b)8%coa4Oq?uOlmN&GO&PI0t^C{?;!Ah8!Ci}W0wV~MOJ~T z7s4Y&9$D>BW}}A-s$XECger>Q;g^TW;<5w3JhCjZ3E*^qgJ6cFA$U3xfbazw7??Of zTA+MY1pog>hWO0f^!U`A)Uw2q{31gGbbfqlUJ8a-ab{I21A|_1Wo}7g5|Az_g3uW- zR#ARRVo4$nXW|l;217(QUVP${NkK!!4u1ERp{0DNy~_5c6? literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/elevator11.png.o b/build-cg/assets/img/elevator11.png.o new file mode 100644 index 0000000000000000000000000000000000000000..07d4e5b6bc262a3c1ef50be3bf04ef3071b2eb2a GIT binary patch literal 948 zcmb<-^>JflVq|~=Mg}b)8%coa4Oq?uOlmN&GO&PI0t^C{??CW>8zzLvP)8owtf9;X zg%WP}!@>}k3jFdgSzLDDmq(VxW&$pGa5}(2FhkN1JRJ!@_<{@!OdKFBP`)aH|NkRH zd}eNXd}>Z=Sz<|kk)a_vKRz`t1w*VjvnrK=L9e(nwJflVq|~=Mg}b)8%coa4Oq?uOlmN&GO&PI0t^C{??CW>8zzLv5GRkUb||w! zp@7@{urR`<0>3;=7MC6P<&kBvnSfs&T^3;iI33_1m?3Eho{j_{d_e{VCJvAmC|?!9 z|NoI8J~KBxJ~bz`EU_fN$j}I#AD^0+f+1F%S(VDbpjTX(TauUrq)Un*bOwx7l%JAV zl8D2ZxP+yF5+JuTK@|W~Kg8WoKFnXpYCy_ufJ6Wg1HBK{3(6}%uQG5##eftDF!cZl bD=-s6z{~@N4_Gf$is=}Tp$z4KD6l#Jh%{*Y literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/elevator13.png.o b/build-cg/assets/img/elevator13.png.o new file mode 100644 index 0000000000000000000000000000000000000000..502f93316fd3820aaa2b3ee79624213f930aa807 GIT binary patch literal 948 zcmb<-^>JflVq|~=Mg}b)8%coa4Oq?uOlmN&GO&PI0t^C{??CW>8zzLv3@;MoOWZz! zg#j)V_~l`;xa`0$k1UJL1pM;ovgjt@mItQ;90W5Y4Z+iq0E92dz`(=-(gNkHBKZG5 zGQ?-*rpKq|q?RR?JflVq|~=Mg}b)8%coa4Oq?uOlmN&GO&PI0t^C{?}iin-}b)^w|_vg_*CGR zhsokH0lz%5EH)GH%cIMpn?SxiI33_1m?3Eho{j_{d_e{VCJvAmC|?!9|NoI8J~KBx zJ~bz`EU_fN$j}6xAD^0+f+1F%S(VDbpjTX(TauUrq)Un*bOwx7l%JAVl8D2ZxP+yF z5+JuTK@|W~Kg8WoKFnXpYCy_ufJ6Wg1HBK{3(6}%uQG5##eftDF!cZlD=-s6z{~@N T4_Gf$is=}Tp$z4KD6l#J8|rBS literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/elevator15.png.o b/build-cg/assets/img/elevator15.png.o new file mode 100644 index 0000000000000000000000000000000000000000..0f78e3638decd1648fb2547c4a43b0e24a6bc8f7 GIT binary patch literal 948 zcmb<-^>JflVq|~=Mg}b)8%coa4Oq?uOlmN&GO&PI0t^C{?}ifm-}b)^w|had_*CGR zhsokH0lz%5EH)GH%cIMpn?R{N?l1$V0~`c1Bn`pSkpP4*$iTqF0n!5Ht0MUSKQhE; z=BCG|=A@P-mgE;1nxgaLQ}a?V#ELVkQW+TZiYs$V5|e;*NfCt3fU%15QxZ!OaX1r~ zuryEtg0$}QgxEsoc`3qSMNVyG=2moTB_rZEWc?IZI22Q9LkOBdw9w1=_WxD`&9Ro6yp&SqeRtEq+E@=e- literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/elevator16.png.o b/build-cg/assets/img/elevator16.png.o new file mode 100644 index 0000000000000000000000000000000000000000..9f127fa0d194be452eea37c62d40e683ad52b7d4 GIT binary patch literal 948 zcmb<-^>JflVq|~=Mg}b)8%coa4Oq?uOlmN&GO&PI0t^C{?*ElVuPFETVk=f|h!rC^8^XI7;$Fz6Lm=9VNT0qK$=2%Q0A73HTSmL%eE zCN5!VpajV6Oi%^D)DLktln?V4vKo+b8z2z?#6a(Z^@8#W(5nobP%$6{0!%$X!V1iU Y5HRzA;RDtSm0~&uWGF*9APTGw0AO-y2mk;8 literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/elevator2.png.o b/build-cg/assets/img/elevator2.png.o new file mode 100644 index 0000000000000000000000000000000000000000..c8b8b8a72b1a04784cc746e7bbb77aa3b10f29da GIT binary patch literal 944 zcmb<-^>JflVq|~=Mg}b)8%coa1z64mOlmN&GO&PI0t^C{@2Cm?xBYL!Z5~J#p9=i) zFj-tC;Fm|1#byG2d30HH6DXC(9cHwa0jC2T1T!QJ!PAidgb$>cI6zvUd}Rdx|3`-S z%-r<&)ST3^#FG3XBQ$P&YF-MuP;q8eDg%RFab<2vViJ%pDT2@$Fji51N@7VO4maWu zmIjK0+|2})2c~?8o1uJ|pODpnl-mG_03Zf>9jq6WPk`QJ;Dm|+DG*@l0TSk5CWL^Q VCkW(%^g;pCVITt-K5zh52LO*+Xj}jQ literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/elevator3.png.o b/build-cg/assets/img/elevator3.png.o new file mode 100644 index 0000000000000000000000000000000000000000..974c6b71fa5f5ce98132b2a965c58438409197f2 GIT binary patch literal 944 zcmb<-^>JflVq|~=Mg}b)8%coa1z64mOlmN&GO&PI0t^C{??{3F+y1xVRu7WJrvkq` zOcs|3_~nshv6+Bh9$gmQ1WM&`huJ{OfYSjEf*F#A;OR&J!Us}J93U-FzA}RU|06?u zW^Q_XYEEidVo83HF&Z~MH7^BSs5rAKm4QL8xH7jSF$qYQ6hY_=7^^5hC9xzChZ}JS zO9RD0?q-6@15-Z4%}_qfPsnOO%58u|01yMc4%Q3GCqQp9a6-j^6bLZ&010z26GFhu V69jTWdZB>nFpvQZA2JflVq|~=Mg}b)8%coa1z64mOlmN&GO&PI0t^C{?~vjDw*PI&d{j0_7M}|I z@-SIkCg7Jxmc?cQetC3RbQ36*M-8W;!~>@T90W5Y4Z+iq0E7>um^eUMpnPQn|NlpZ z_{`k&_|%-#vc!`7A`>)jd}>|_x=?XuRVo96UU6k^Nn#R^E-8Z088B8+eoA6VA`Um= z5S9jtgWSyol?SGLh?}8&n4gfH!kwU?zls WnI{P3g7iWG(_tV37(Q?SRtEsn)@Wh? literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/elevator5.png.o b/build-cg/assets/img/elevator5.png.o new file mode 100644 index 0000000000000000000000000000000000000000..078ddf7bacae50d1fa9d6e1491473a1111e6a44b GIT binary patch literal 944 zcmb<-^>JflVq|~=Mg}b)8%coa1z64mOlmN&GO&PI0t^C{?-1~R8w4UmP+9opVX`0^ zRUd?hUmjT&n+f>k(Phz1pi~~4e}cI6zvUd}Rdx z|3`-S%-r<&)ST3^#FG3XQ#5XTYF-MuP;q8eDg%RFab<2vViJ%pDT2@$Fji51N@7VO z4maWumIjK0+|2})2c~?8o1uJ|pODpnl-mG_03Zf>9jq6WPk`QJ;Dm|+DG*@l0TSk5 ZCWL^QCkW(%^g;pCVITt-K5zh52LOHrXk`EZ literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/elevator6.png.o b/build-cg/assets/img/elevator6.png.o new file mode 100644 index 0000000000000000000000000000000000000000..e7f2894706b3a7b305d991fc68f2a5e9497c494a GIT binary patch literal 944 zcmb<-^>JflVq|~=Mg}b)8%coa1z64mOlmN&GO&PI0t^C{?-1~R8w4UmkXbNU5REJj zW8;@cmc?cQetC3RbQ36*hxuWs)9B%X>K|ArA&Y|30SJflVq|~=Mg}b)8%coa1z64mOlmN&GO&PI0t^C{?_ltM8v??_kZFYM|2AZC z2pd@z#70+vUmjf+-2_VI(OolC`RL(->JL~bp^74S*yO?K00+SgNki~-Bmm(9DJBk( z7ARjC!TxALb`yH6Z0SKq3H$fnEpe1?3ZJflVq|~=Mg}b)8%coa1z64mOlmN&GO&PI0t^C{?_ltM8v??_5Hvy#!a~SE zSor19WkGyo6DXBOHft!e(ZdDRFR)NT6-Dsy%fn<*?Et3(90W5Y4Z+iq0E7>um^eUM zpnPQn|NlpZ_{`k&_|%-#vc!`7A`3Kbd}>|_x=?XuRVo96UU6k^Nn#R^E-8Z088B8+ zeoA6VA`Um=5S9jtgWSyol?SGLh?}8&n4gfH!kwU?zlsnI{P3g7iWG(_tV37(Q?SRtEr_DQIp0 literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/elevator9.png.o b/build-cg/assets/img/elevator9.png.o new file mode 100644 index 0000000000000000000000000000000000000000..8e0517c551574b3352f67c5bd53325b426b3e685 GIT binary patch literal 944 zcmb<-^>JflVq|~=Mg}b)8%coa1z64mOlmN&GO&PI0t^C{?;!Ah8!Ci}!)R35|7|dF z?7Bg!kyW7UCRHBUtf9Lo5r?oeP#olLCa63xJflVq|~=Mg}b)8(H86Sk44YYA~=euz+O+7&!hi&<}!aN45>@8YB_ye3%}H zEQo}df#B1M#S95UcsL3`_}oB>17s(ZFNxs)|Hu%ZnVTM;o>Q8NV8y5Ar6BQ&GpkY= z81#xOb4wDFfOJU_gwBAmitS`2krCNQ(`S2moTB uSHXH&fHcrs44hCgAO!-9JwQSO%!Cjy^8|rhkX|TY+yZ1M!+1a%tPTLBKW%XU literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/ground.png.o b/build-cg/assets/img/ground.png.o new file mode 100644 index 0000000000000000000000000000000000000000..bdc9903d1cebfb10184e23b4653553c6bc474057 GIT binary patch literal 936 zcmb<-^>JflVq|~=Mg}b)8%coa0a(riOlmN&GO&PI0t^Dpn@8bD4gqjFz(FuW(hxiy z2|)O~3=B*hAT3b7EQ0_4BSU;JflVq|~=Mg}b)8(H8ASk44YYA~=euz+O+7&vt6LGYLa2twGHeA>xEY=+qj zaviceAbez5kUT0MmB+whWO0f z^!Uu=R5&9(H7^ChDbB1)Wnj=NuFNe-Oajs+MG!gz#wyBBNi0dk=PYzNX`leejZ9Dp zU@Sx22j#=ukE{ly#RfJflVq|~=Mg}b)8(H86Sk44YYA~=euz+O+7&vt62M+|f4%s!Re6ZV*DD3Nd*7@M~3*!-1PX&X( zkO%-`pjW|qS%5UqTMV2~F(3s3j6Fa?1I&aFF!Ka~T##NUVB7*^D8qO_8mtZgXMbd& literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/ice1.png.o b/build-cg/assets/img/ice1.png.o new file mode 100644 index 0000000000000000000000000000000000000000..f9524a36d064c8e3fbbfa2e4d643edfa9de789d8 GIT binary patch literal 672 zcmb<-^>JflVq|~=Mg}b)8(H86Sk44YYA~=euz+O+7&wkefS_(Y3}WNMe$2xdqa!oyJj!siB393U-Fz9fSG|06?u zW^Q_XW^$?_f)$^dmx9DA&a6shV9+bB%q>Yw0@5W#5IO_KD#}kuEJ?)SDD1-0Kw*$O znV{0Zn1;9!%7^&@Sq(^w4Uh-`VxU*SdRc%p&|3_gP%$6{0*pOCLIcc%5HRxufn1PY QC}7+IWGKUUKpLzL0I#QPbN~PV literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/ice2.png.o b/build-cg/assets/img/ice2.png.o new file mode 100644 index 0000000000000000000000000000000000000000..74dfe80bc1449bc7369265ff212154e2a1ef9b3b GIT binary patch literal 672 zcmb<-^>JflVq|~=Mg}b)8(H86Sk44YYA~=euz+O+7&wkeK%j0t45IQ;dAjx3_%NN6 z%7R>nY!)*Am;~7EaCuZdj0e+?%17`Z^2mIMsn|(oNEpJyQ2@f{22va#9ZqS8Qd zkUN>6^1zsexDm>S`2krCNQ(`S2moTBSHXH&fHcrs44hCgAO!-9JwQSO%!Cjy^8|rh SkX|TY+yZ1M!+1a%tPTL1uWK0q literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/ice3.png.o b/build-cg/assets/img/ice3.png.o new file mode 100644 index 0000000000000000000000000000000000000000..520072af51825cc0500f598959a16f2baf5d311a GIT binary patch literal 672 zcmb<-^>JflVq|~=Mg}b)8(H86Sk44YYA~=euz+O+7&vt6k4ZqFZaoYl^YP2Vbi;IF z=MyUna@{crglZ5Um4}-TQVRkw^$;G65949-5i*!8W=I&q!%+aj=LS+7Ak|R5B!d6{ zBSU;X(kO%-`pjW|qS%5UqTMV2~F(3s3j6Fa?1I&aFF!Ka~ TT##NUVB7*^D8qO_8mtZgIKXNm literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/ice4.png.o b/build-cg/assets/img/ice4.png.o new file mode 100644 index 0000000000000000000000000000000000000000..59d6f68210c8376cf55da87368216abebf3b2e8f GIT binary patch literal 672 zcmb<-^>JflVq|~=Mg}b)8(H86Sk44YYA~=euz+O+7&vt6LGYLa2twGHeA>xEY=+qj zaviceAbez5kUT0MmB+whWO0f z^!Uu=R1*X%J~b}|iC3IimCC@NS6rD}l9&XfONtmdpORRTh|gsha?(H%kUN>6 zGQgOIxDm>S`2krCNQ(`S2moTBSHXH&fHcrs44hCgAO!-9JwQSO%!Cjy^8|rhkX|TY O+yZ1M!+1a%tPTLTnQDmu literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/ice5.png.o b/build-cg/assets/img/ice5.png.o new file mode 100644 index 0000000000000000000000000000000000000000..c5f55f394cf2ea9630d1fb82e7e117c796c3da30 GIT binary patch literal 672 zcmb<-^>JflVq|~=Mg}b)8(H86Sk44YYA~=euz+O+7&vt6A@G<42*P-}^{9MQ9<5|S zu0ys7#)r5H>~^p`Dj%5#(vQkVtzAbKyNW{LdAd-2r%{l2@Nn4Lcq)u1ad)o Qp@4AJflVq|~=Mg}b)8(H86Sk44YYA~=euz+O+7&vt6Veps)2*P-}^{9MQ9&Kbn zu0u8%#7Ec*;$i25+zgS0$fNR+c_4XIK1?4rni&#?@Ng7>@VS8$2S`1XFNxs)|Hu%Z znVTM;nVf2dV8y5Ar6BQ&GpkY=81#xOb4wDFfOJU_gwBAmit}Ey(~Z)=q(0Ls2Gp}0mdF6p#f$>2$*?-KrTox Q6fkZ9GL&IFAPrUr0F(c0=Kufz literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/ice7.png.o b/build-cg/assets/img/ice7.png.o new file mode 100644 index 0000000000000000000000000000000000000000..64619dfc4560d69ebda2d265d9cafaef9c7d97d6 GIT binary patch literal 672 zcmb<-^>JflVq|~=Mg}b)8(H86Sk44YYA~=euz+O+7&wke=+?vFF$oZa@pS7kdFZkT zJ~q9i%7R=6vK?j?gpbSv$)oa7c?=BL_`3CAe}f5-JTf04gUMosgdsc}1t5HGAjJVv z4dqKB`2RmL#AoKF$7d#|nj={8sd*_#yyDENR0amU;>z5T#3UeHQUswhV63A2l*E!m zO!wdskp{|v+{px01B_{i8=-udACT36wAcWN03Zf>6|9#9NCUmazzG!tQXs(C10*!S ZOb7upPY}oj>4gHuEkK4cj0dE_>Hx#xZL$CW literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/ice8.png.o b/build-cg/assets/img/ice8.png.o new file mode 100644 index 0000000000000000000000000000000000000000..d6be43393d49e190e4c30737e9f4304eea760134 GIT binary patch literal 672 zcmb<-^>JflVq|~=Mg}b)8(H86Sk44YYA~=euz+O+7&wke9Fx$khd~ezoez`KttVX; zVHP&M=&~T!L2QGlhVc;V!QU?zls WnI{P3g7iWG;}#%88O8(BV08diwQd;z literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/jitem.png.o b/build-cg/assets/img/jitem.png.o new file mode 100644 index 0000000000000000000000000000000000000000..d8ead6ec36e124c42475dd12c019770243f7decd GIT binary patch literal 932 zcmb7CI}XAy40QuYAThwq$bvv(Vq}Ghfg4mst)NH+sdRyb3veGU!zDODdHJ|aL&Yai zZ9hLh*NJjntd^ees8}A25nBoIP~1$}5w)lZ)}tP_^gr%Abaz$hvU&K<7c-Kq{)gAy zN$b$Y)|Y>->(6Y-$%yrut#U5^&Q|r`d7gp&e|lEAUf!RZvvKu)Yf;_kCfCq!sCY*` zjk`pmElUg@lsJEqA17OXA7@cwg?@AhZFq_=5z+K?PO@MFpQYOGI7*LUkOd!RtD!Il zPKaR)hu5y>G?>p}*U0iY%o-n#tF%pc9F00A2Pc=f!Aw-B4fpE<;dJFq$1tm27W zrSpSh%+fizzT#G`d$WeC-ko%e$Tc(LcRKQHdL;d!o Q^xF0*-X%HIN@BzN0^1TpasU7T literal 0 HcmV?d00001 diff --git a/build-cg/assets/img/player.png.o b/build-cg/assets/img/player.png.o new file mode 100644 index 0000000000000000000000000000000000000000..c4dd9524ff64205f315de18374ee33c1c430ba54 GIT binary patch literal 808 zcmb<-^>JflVq|~=Mg}b)8%cmE0W4<%CN&sX8Cbw99tMH`bEylDNkAZ~sW4FxjVyy* z99a}u2d%~b&qcNY*_{X(R8idG=<0Cs!SR5DV1~pYJRSugd|n{c0n!5H%Od#yKQhE; z=BCFNJflVq|~=Mg}b)8%coa4p`0vOlmN&GO&PU1sDX5NgR`a>tn#=fkY6Zs4NH% zA`dbJ8w(){lSQT>HY1B5vr*lJECXU=%0{h(K$uF93K$ziqst@9;gUx-16@C+3y@93 zFAGu$QGu)nosDce!Y|laFtwPbLPSvIF?k48Fcvc;4Z+iq0EExOz`(=-QUm2nBl!P6 zGQ?-*rpFf-WM-!#G2>J7QjodDnN_I_40^?txh087K)R#|LTA8OMfoX-C5bSH5Jv;u z0Z!FSQ02hX4sj=x5Az3zhN%HDZGc1o5Cgpn7H0v{K(8@yLdAd-2r%^k32iVFLcq)u U1ad)op@3;Skf99Y0co&003D3Qo&W#< literal 0 HcmV?d00001 diff --git a/build-cg/map b/build-cg/map new file mode 100644 index 0000000..5d83ea9 --- /dev/null +++ b/build-cg/map @@ -0,0 +1,917 @@ +Archive member included to satisfy reference by file (symbol) + +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(memory.c.o) + build-cg/src/levels.c.o (_memcpy) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(start.c.o) + (_start) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(setup.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(start.c.o) (_gint_install) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(mmu.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(start.c.o) (_utlb_mapped_memory) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(start.c.o) (_gint_panic) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(gint.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(setup.c.o) (_SH7305_INTC) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.s.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(setup.c.o) (_gint_exch_tlbh) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(vbr.s.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(setup.c.o) (_gint_setvbr) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(hardware.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(start.c.o) (_hw_detect) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.c.o) (_dfont) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dprint.c.o) + build-cg/src/draw.c.o (_dprint) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dimage.c.o) + build-cg/src/draw.c.o (_dimage) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dclear.c.o) + build-cg/src/draw.c.o (_dclear) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dvram.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.c.o) (_gint_vram) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(drect.c.o) + build-cg/src/draw.c.o (_drect) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.c.o) (_dtext) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dupdate.c.o) + build-cg/src/main.c.o (_dupdate) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti-asm.s.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) (_topti_glyph_fg_bg) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(bopti.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dimage.c.o) (_bopti_render_clip) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(keysc.c.o) + build-cg/src/main.c.o (_clearevents) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(tmu.c.o) + build-cg/src/main.c.o (_timer_setup) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(memset.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dclear.c.o) (_dma_memset) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(font8x9.png.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) (_gint_font8x9) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(r61524.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dupdate.c.o) (_r61524_display) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(string.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) (_strlen) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(stdio.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dprint.c.o) (_vsnprintf) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.S.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(setup.c.o) (_gint_inth_7305) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(bopti-asm.s.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(bopti.c.o) (_bopti_r5g6b5) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(cpg.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(tmu.c.o) (_clock_freq) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(getkey.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(keysc.c.o) (_getkey_repeat) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.s.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(tmu.c.o) (_inth_tmu) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dma.c.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(memset.c.o) (_dma_transfer) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.s.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dma.c.o) (_inth_dma_te) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_movmem.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) (___movmemSI24) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(tmu.c.o) (___udivdi3) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_umoddi3.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(stdio.c.o) (___umoddi3) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) + build-cg/src/main.c.o (___adddf3) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_mul_df.o) + build-cg/src/main.c.o (___muldf3) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ne_df.o) + build-cg/src/main.c.o (___nedf2) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_gt_df.o) + build-cg/src/main.c.o (___gtdf2) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ge_df.o) + build-cg/src/main.c.o (___gedf2) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_lt_df.o) + build-cg/src/main.c.o (___ltdf2) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_si_to_df.o) + build-cg/src/main.c.o (___floatsidf) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_df_to_si.o) + build-cg/src/main.c.o (___fixdfsi) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_thenan_df.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) (___thenan_df) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udiv_qrnnd_16.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) (___udiv_qrnnd_16) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clz.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) (___clz_tab) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clzsi2.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_si_to_df.o) (___clzsi2) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_pack_df.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) (___pack_d) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_unpack_df.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) (___unpack_d) +/home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_fpcmp_parts_df.o) + /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ne_df.o) (___fpcmp_parts_d) + +Allocating common symbols +Common symbol size file + +coins 0x100 build-cg/src/main.c.o + +Discarded input sections + + .comment 0x0000000000000000 0x12 build-cg/src/collide.c.o + .comment 0x0000000000000000 0x12 build-cg/src/player.c.o + .comment 0x0000000000000000 0x12 build-cg/src/draw.c.o + .comment 0x0000000000000000 0x12 build-cg/src/levels.c.o + .comment 0x0000000000000000 0x12 build-cg/src/main.c.o + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(memory.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(start.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(setup.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(mmu.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(gint.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(hardware.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dprint.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dimage.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dclear.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dvram.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(drect.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dupdate.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(bopti.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(keysc.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(tmu.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(memset.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(r61524.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(string.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(stdio.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(cpg.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(getkey.c.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dma.c.o) + .debug_info 0x0000000000000000 0x737 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) + .debug_abbrev 0x0000000000000000 0x218 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) + .debug_loc 0x0000000000000000 0x6d5 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) + .debug_aranges + 0x0000000000000000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) + .debug_ranges 0x0000000000000000 0xf0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) + .debug_line 0x0000000000000000 0x28f /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) + .debug_str 0x0000000000000000 0x5a6 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) + .eh_frame 0x0000000000000000 0x84 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) + .debug_info 0x0000000000000000 0x746 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_umoddi3.o) + .debug_abbrev 0x0000000000000000 0x229 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_umoddi3.o) + .debug_loc 0x0000000000000000 0x6ef /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_umoddi3.o) + .debug_aranges + 0x0000000000000000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_umoddi3.o) + .debug_ranges 0x0000000000000000 0x108 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_umoddi3.o) + .debug_line 0x0000000000000000 0x2e5 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_umoddi3.o) + .debug_str 0x0000000000000000 0x5a6 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_umoddi3.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_umoddi3.o) + .eh_frame 0x0000000000000000 0x94 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_umoddi3.o) + .debug_info 0x0000000000000000 0x740 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) + .debug_abbrev 0x0000000000000000 0x244 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) + .debug_loc 0x0000000000000000 0x6aa /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) + .debug_aranges + 0x0000000000000000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) + .debug_ranges 0x0000000000000000 0x60 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) + .debug_line 0x0000000000000000 0x400 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) + .debug_str 0x0000000000000000 0x613 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) + .debug_info 0x0000000000000000 0x6e9 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_mul_df.o) + .debug_abbrev 0x0000000000000000 0x27c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_mul_df.o) + .debug_loc 0x0000000000000000 0x4c5 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_mul_df.o) + .debug_aranges + 0x0000000000000000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_mul_df.o) + .debug_ranges 0x0000000000000000 0xa8 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_mul_df.o) + .debug_line 0x0000000000000000 0x356 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_mul_df.o) + .debug_str 0x0000000000000000 0x5e5 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_mul_df.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_mul_df.o) + .debug_info 0x0000000000000000 0x4f4 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ne_df.o) + .debug_abbrev 0x0000000000000000 0x1b7 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ne_df.o) + .debug_loc 0x0000000000000000 0x50 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ne_df.o) + .debug_aranges + 0x0000000000000000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ne_df.o) + .debug_line 0x0000000000000000 0x11a /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ne_df.o) + .debug_str 0x0000000000000000 0x5a2 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ne_df.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ne_df.o) + .debug_info 0x0000000000000000 0x4f4 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_gt_df.o) + .debug_abbrev 0x0000000000000000 0x1b7 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_gt_df.o) + .debug_loc 0x0000000000000000 0x50 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_gt_df.o) + .debug_aranges + 0x0000000000000000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_gt_df.o) + .debug_line 0x0000000000000000 0x11a /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_gt_df.o) + .debug_str 0x0000000000000000 0x5a2 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_gt_df.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_gt_df.o) + .debug_info 0x0000000000000000 0x4f4 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ge_df.o) + .debug_abbrev 0x0000000000000000 0x1b7 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ge_df.o) + .debug_loc 0x0000000000000000 0x50 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ge_df.o) + .debug_aranges + 0x0000000000000000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ge_df.o) + .debug_line 0x0000000000000000 0x11a /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ge_df.o) + .debug_str 0x0000000000000000 0x5a2 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ge_df.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ge_df.o) + .debug_info 0x0000000000000000 0x4f4 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_lt_df.o) + .debug_abbrev 0x0000000000000000 0x1b7 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_lt_df.o) + .debug_loc 0x0000000000000000 0x50 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_lt_df.o) + .debug_aranges + 0x0000000000000000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_lt_df.o) + .debug_line 0x0000000000000000 0x11a /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_lt_df.o) + .debug_str 0x0000000000000000 0x5a2 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_lt_df.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_lt_df.o) + .debug_info 0x0000000000000000 0x494 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_si_to_df.o) + .debug_abbrev 0x0000000000000000 0x1fb /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_si_to_df.o) + .debug_loc 0x0000000000000000 0xd1 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_si_to_df.o) + .debug_aranges + 0x0000000000000000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_si_to_df.o) + .debug_ranges 0x0000000000000000 0x48 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_si_to_df.o) + .debug_line 0x0000000000000000 0x19e /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_si_to_df.o) + .debug_str 0x0000000000000000 0x57d /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_si_to_df.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_si_to_df.o) + .debug_info 0x0000000000000000 0x4ce /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_df_to_si.o) + .debug_abbrev 0x0000000000000000 0x1bb /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_df_to_si.o) + .debug_loc 0x0000000000000000 0x49 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_df_to_si.o) + .debug_aranges + 0x0000000000000000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_df_to_si.o) + .debug_line 0x0000000000000000 0x152 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_df_to_si.o) + .debug_str 0x0000000000000000 0x59a /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_df_to_si.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_df_to_si.o) + .debug_info 0x0000000000000000 0x391 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_thenan_df.o) + .debug_abbrev 0x0000000000000000 0x11c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_thenan_df.o) + .debug_aranges + 0x0000000000000000 0x18 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_thenan_df.o) + .debug_line 0x0000000000000000 0xab /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_thenan_df.o) + .debug_str 0x0000000000000000 0x530 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_thenan_df.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_thenan_df.o) + .debug_info 0x0000000000000000 0x371 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clz.o) + .debug_abbrev 0x0000000000000000 0xcf /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clz.o) + .debug_aranges + 0x0000000000000000 0x18 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clz.o) + .debug_line 0x0000000000000000 0xe2 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clz.o) + .debug_str 0x0000000000000000 0x523 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clz.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clz.o) + .debug_info 0x0000000000000000 0x3de /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clzsi2.o) + .debug_abbrev 0x0000000000000000 0x129 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clzsi2.o) + .debug_loc 0x0000000000000000 0x5a /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clzsi2.o) + .debug_aranges + 0x0000000000000000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clzsi2.o) + .debug_ranges 0x0000000000000000 0x38 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clzsi2.o) + .debug_line 0x0000000000000000 0x13c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clzsi2.o) + .debug_str 0x0000000000000000 0x540 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clzsi2.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clzsi2.o) + .debug_info 0x0000000000000000 0x4d4 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_pack_df.o) + .debug_abbrev 0x0000000000000000 0x1cb /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_pack_df.o) + .debug_loc 0x0000000000000000 0x31c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_pack_df.o) + .debug_aranges + 0x0000000000000000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_pack_df.o) + .debug_ranges 0x0000000000000000 0x58 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_pack_df.o) + .debug_line 0x0000000000000000 0x282 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_pack_df.o) + .debug_str 0x0000000000000000 0x58e /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_pack_df.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_pack_df.o) + .debug_info 0x0000000000000000 0x45d /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_unpack_df.o) + .debug_abbrev 0x0000000000000000 0x18b /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_unpack_df.o) + .debug_loc 0x0000000000000000 0xb5 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_unpack_df.o) + .debug_aranges + 0x0000000000000000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_unpack_df.o) + .debug_line 0x0000000000000000 0x1a8 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_unpack_df.o) + .debug_str 0x0000000000000000 0x570 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_unpack_df.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_unpack_df.o) + .debug_info 0x0000000000000000 0x425 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_fpcmp_parts_df.o) + .debug_abbrev 0x0000000000000000 0x173 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_fpcmp_parts_df.o) + .debug_aranges + 0x0000000000000000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_fpcmp_parts_df.o) + .debug_line 0x0000000000000000 0x1f6 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_fpcmp_parts_df.o) + .debug_str 0x0000000000000000 0x553 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_fpcmp_parts_df.o) + .comment 0x0000000000000000 0x12 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_fpcmp_parts_df.o) + +Memory Configuration + +Name Origin Length Attributes +rom 0x0000000000300000 0x0000000000037000 xr +ram 0x0000000008102000 0x000000000007e000 rw +vbr 0x000000008c160000 0x0000000000001400 xrw +rram 0x000000008c161400 0x0000000000000c00 xrw +ilram 0x00000000e5200000 0x0000000000001000 xrw +xram 0x00000000e5007000 0x0000000000002000 xrw +yram 0x00000000e5017000 0x0000000000002000 xrw +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +LOAD build-cg/src/collide.c.o +LOAD build-cg/src/player.c.o +LOAD build-cg/src/draw.c.o +LOAD build-cg/src/levels.c.o +LOAD build-cg/src/main.c.o +LOAD build-cg/assets/img/elevator13.png.o +LOAD build-cg/assets/img/elevator1.png.o +LOAD build-cg/assets/img/ground.png.o +LOAD build-cg/assets/img/elevator6.png.o +LOAD build-cg/assets/img/spike.png.o +LOAD build-cg/assets/img/elevator8.png.o +LOAD build-cg/assets/img/elevator2.png.o +LOAD build-cg/assets/img/elevator11.png.o +LOAD build-cg/assets/img/elevator5.png.o +LOAD build-cg/assets/img/elevator.png.o +LOAD build-cg/assets/img/ice.png.o +LOAD build-cg/assets/img/elevator12.png.o +LOAD build-cg/assets/img/elevator16.png.o +LOAD build-cg/assets/img/elevator4.png.o +LOAD build-cg/assets/img/elevator7.png.o +LOAD build-cg/assets/img/elevator10.png.o +LOAD build-cg/assets/img/player.png.o +LOAD build-cg/assets/img/elevator3.png.o +LOAD build-cg/assets/img/elevator15.png.o +LOAD build-cg/assets/img/elevator9.png.o +LOAD build-cg/assets/img/elevator14.png.o +LOAD /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a +LOAD /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a +LOAD /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a + 0x0000000000300000 _brom = 0x300000 + 0x000000000000864c _srom = (((SIZEOF (.text) + SIZEOF (.rodata)) + SIZEOF (.gint.drivers)) + SIZEOF (.gint.blocks)) + +.text 0x0000000000300000 0x4ca0 + *(.pretext.entry) + .pretext.entry + 0x0000000000300000 0x1a4 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(start.c.o) + 0x0000000000300000 _start + *(.pretext) + .pretext 0x00000000003001a4 0x30 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(start.c.o) + .pretext 0x00000000003001d4 0x40 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(hardware.c.o) + 0x00000000003001d4 _hw_detect + .pretext 0x0000000000300214 0x110 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) + 0x0000000000300214 _dfont + 0x000000000030022c _charset_size + 0x0000000000300258 _charset_decode + 0x00000000003002c6 _topti_offset + .pretext 0x0000000000300324 0x23c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) + 0x0000000000300324 _topti_render + 0x0000000000300514 _dtext + .pretext 0x0000000000300560 0xc4 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti-asm.s.o) + 0x0000000000300560 _topti_glyph_fg_bg + 0x000000000030059e _topti_glyph_fg + 0x00000000003005d8 _topti_glyph_bg + 0x0000000000300624 _btors = . + *(.ctors .ctors.*) + 0x0000000000300624 _mtors = . + *(.dtors .dtors.*) + 0x0000000000300624 _etors = . + 0x0000000000300624 _gint_exch_tlbh_start = . + *(.gint.exch_tlbh) + *fill* 0x0000000000300624 0xc + .gint.exch_tlbh + 0x0000000000300630 0x4c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.s.o) + 0x0000000000300630 _gint_exch_tlbh + 0x0000000000000058 _gint_exch_tlbh_size = ABSOLUTE ((. - _gint_exch_tlbh_start)) + *(.text .text.*) + .text 0x000000000030067c 0x19c build-cg/src/collide.c.o + 0x000000000030067c _collide + 0x00000000003006f4 _collide_point + 0x0000000000300722 _collide_solid + 0x0000000000300774 _collide_and_erase + .text 0x0000000000300818 0x58 build-cg/src/player.c.o + 0x0000000000300818 _jump_test + 0x0000000000300860 _set_start_pos + 0x0000000000300866 _reset_old_pos + .text 0x0000000000300870 0x1f8 build-cg/src/draw.c.o + 0x0000000000300870 _draw_player + 0x00000000003008c4 _draw_level + 0x000000000030096c _draw_level_anims + 0x00000000003009d0 _erase_tile + 0x0000000000300a24 _draw_timer + .text 0x0000000000300a68 0x4c build-cg/src/levels.c.o + 0x0000000000300a68 _set_level + .text 0x0000000000300ab4 0x14 build-cg/src/main.c.o + 0x0000000000300ab4 _callback + 0x0000000000300abc _sgn + .text.startup 0x0000000000300ac8 0x5a8 build-cg/src/main.c.o + 0x0000000000300ac8 _main + .text 0x0000000000301070 0xdc /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(memory.c.o) + 0x0000000000301070 _memcpy + 0x000000000030112a __memmove + 0x000000000030112e __memcmp + 0x0000000000301132 _memset + .text 0x000000000030114c 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(start.c.o) + .text 0x000000000030114c 0x104 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(setup.c.o) + 0x00000000003011b8 _gint_install + 0x0000000000301238 _gint_unload + .text 0x0000000000301250 0xf8 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(mmu.c.o) + 0x0000000000301250 _utlb_addr + 0x0000000000301260 _utlb_data + 0x0000000000301270 _utlb_mapped_memory + .text 0x0000000000301348 0x2e4 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.c.o) + 0x00000000003015f0 _gint_panic + 0x0000000000301600 _gint_panic_set + 0x0000000000301614 _gint_exc_catch + 0x0000000000301620 _gint_exc_skip + .text 0x000000000030162c 0x5c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(gint.c.o) + 0x000000000030162c _gint_intlevel + 0x0000000000301664 _gint_inthandler + .text 0x0000000000301688 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.s.o) + .text 0x0000000000301688 0x2c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(vbr.s.o) + 0x0000000000301688 _gint_setvbr + .text 0x00000000003016b4 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(hardware.c.o) + .text 0x00000000003016b4 0x9c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) + 0x00000000003016b4 _dsize + .text 0x0000000000301750 0x58 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dprint.c.o) + 0x0000000000301750 _dprint + .text 0x00000000003017a8 0x40 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dimage.c.o) + 0x00000000003017a8 _dimage + 0x00000000003017d0 _dsubimage + .text 0x00000000003017e8 0x1c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dclear.c.o) + 0x00000000003017e8 _dclear + .text 0x0000000000301804 0x4c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dvram.c.o) + 0x0000000000301804 _dvram + 0x0000000000301830 _dvram_switch + .text 0x0000000000301850 0xc0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(drect.c.o) + 0x0000000000301850 _drect + .text 0x0000000000301910 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) + .text 0x0000000000301910 0x3c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dupdate.c.o) + 0x0000000000301910 _dupdate + 0x0000000000301934 _dupdate_noint + .text 0x000000000030194c 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti-asm.s.o) + .text 0x000000000030194c 0x1e4 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(bopti.c.o) + 0x000000000030194c _bopti_render + 0x0000000000301a3c _bopti_render_clip + 0x0000000000301b04 _bopti_render_noclip + .text 0x0000000000301b30 0x3ac /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(keysc.c.o) + 0x0000000000301c88 _pollevent + 0x0000000000301dcc _waitevent + 0x0000000000301e18 _clearevents + 0x0000000000301e38 _keydown + 0x0000000000301e64 _keydown_all + 0x0000000000301ea0 _keydown_any + .text 0x0000000000301edc 0x4cc /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(tmu.c.o) + 0x0000000000302164 _timer_setup + 0x00000000003021f4 _timer_delay + 0x0000000000302254 _timer_start + 0x0000000000302288 _timer_reload + 0x00000000003022a8 _timer_pause + 0x00000000003022dc _timer_stop + 0x0000000000302338 _timer_timeout + 0x0000000000302344 _timer_address + 0x0000000000302378 _timer_clear + .text 0x00000000003023a8 0x4c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(memset.c.o) + 0x00000000003023a8 _dma_memset + .text 0x00000000003023f4 0x2d4 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(r61524.c.o) + 0x0000000000302444 _r61524_win_get + 0x00000000003024fc _r61524_win_set + 0x00000000003025bc _r61524_display + .text 0x00000000003026c8 0x7c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(string.c.o) + 0x00000000003026c8 _strlen + 0x00000000003026d8 _strncpy + 0x00000000003026f0 _strcat + 0x0000000000302734 _strcmp + .text 0x0000000000302744 0xce4 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(stdio.c.o) + 0x0000000000303140 _kprint_opt + 0x0000000000303288 _kprint + 0x0000000000303360 _kvsprint + 0x00000000003033a8 _sprintf + 0x00000000003033d0 _vsprintf + 0x00000000003033f0 _snprintf + 0x0000000000303410 _vsnprintf + .text 0x0000000000303428 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.S.o) + *fill* 0x0000000000303428 0x8 + .text 0x0000000000303430 0x100 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(bopti-asm.s.o) + 0x0000000000303430 _bopti_r5g6b5 + 0x0000000000303480 _bopti_r5g6b5a + 0x00000000003034b0 _bopti_p8 + 0x00000000003034e0 _bopti_p4 + .text 0x0000000000303530 0xc8 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(cpg.c.o) + 0x00000000003035ec _clock_freq + .text 0x00000000003035f8 0x1f0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(getkey.c.o) + 0x00000000003035f8 _getkey_opt + 0x00000000003037a0 _getkey + 0x00000000003037ac _getkey_repeat + .text 0x00000000003037e8 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.s.o) + .text 0x00000000003037e8 0x3f8 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dma.c.o) + 0x0000000000303abc _dma_transfer + 0x0000000000303afc _dma_transfer_wait + 0x0000000000303b74 _dma_transfer_noint + .text 0x0000000000303be0 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.s.o) + .text 0x0000000000303be0 0x78 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_movmem.o) + 0x0000000000303be0 ___movstr + 0x0000000000303be0 ___movmem + 0x0000000000303c14 ___movmemSI64 + 0x0000000000303c14 ___movstrSI64 + 0x0000000000303c18 ___movstrSI60 + 0x0000000000303c18 ___movmemSI60 + 0x0000000000303c1c ___movmemSI56 + 0x0000000000303c1c ___movstrSI56 + 0x0000000000303c20 ___movstrSI52 + 0x0000000000303c20 ___movmemSI52 + 0x0000000000303c24 ___movstrSI48 + 0x0000000000303c24 ___movmemSI48 + 0x0000000000303c28 ___movstrSI44 + 0x0000000000303c28 ___movmemSI44 + 0x0000000000303c2c ___movstrSI40 + 0x0000000000303c2c ___movmemSI40 + 0x0000000000303c30 ___movstrSI36 + 0x0000000000303c30 ___movmemSI36 + 0x0000000000303c34 ___movmemSI32 + 0x0000000000303c34 ___movstrSI32 + 0x0000000000303c38 ___movmemSI28 + 0x0000000000303c38 ___movstrSI28 + 0x0000000000303c3c ___movstrSI24 + 0x0000000000303c3c ___movmemSI24 + 0x0000000000303c40 ___movmemSI20 + 0x0000000000303c40 ___movstrSI20 + 0x0000000000303c44 ___movstrSI16 + 0x0000000000303c44 ___movmemSI16 + 0x0000000000303c48 ___movmemSI12 + 0x0000000000303c48 ___movstrSI12 + 0x0000000000303c4c ___movmemSI8 + 0x0000000000303c4c ___movstrSI8 + 0x0000000000303c50 ___movmemSI4 + 0x0000000000303c50 ___movstrSI4 + .text 0x0000000000303c58 0x1e0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) + 0x0000000000303c58 ___udivdi3 + .text 0x0000000000303e38 0x208 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_umoddi3.o) + 0x0000000000303e38 ___umoddi3 + .text 0x0000000000304040 0x348 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) + 0x00000000003042e4 ___adddf3 + 0x0000000000304334 ___subdf3 + .text 0x0000000000304388 0x208 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_mul_df.o) + 0x0000000000304388 ___muldf3 + .text 0x0000000000304590 0x58 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ne_df.o) + 0x0000000000304590 ___nedf2 + .text 0x00000000003045e8 0x58 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_gt_df.o) + 0x00000000003045e8 ___gtdf2 + .text 0x0000000000304640 0x58 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ge_df.o) + 0x0000000000304640 ___gedf2 + .text 0x0000000000304698 0x58 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_lt_df.o) + 0x0000000000304698 ___ltdf2 + .text 0x00000000003046f0 0x98 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_si_to_df.o) + 0x00000000003046f0 ___floatsidf + .text 0x0000000000304788 0x8c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_df_to_si.o) + 0x0000000000304788 ___fixdfsi + .text 0x0000000000304814 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_thenan_df.o) + *fill* 0x0000000000304814 0x4 + .text 0x0000000000304818 0x60 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udiv_qrnnd_16.o) + 0x0000000000304818 ___udiv_qrnnd_16 + .text 0x0000000000304878 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clz.o) + .text 0x0000000000304878 0x54 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clzsi2.o) + 0x0000000000304878 ___clzsi2 + .text 0x00000000003048cc 0x240 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_pack_df.o) + 0x00000000003048cc ___pack_d + .text 0x0000000000304b0c 0xcc /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_unpack_df.o) + 0x0000000000304b0c ___unpack_d + .text 0x0000000000304bd8 0xc8 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_fpcmp_parts_df.o) + 0x0000000000304bd8 ___fpcmp_parts_d + +.gint.blocks 0x0000000000304ca0 0x140 + *(.gint.blocks) + .gint.blocks 0x0000000000304ca0 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.S.o) + 0x0000000000304ca0 _gint_inth_7305 + .gint.blocks 0x0000000000304cc0 0xe0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.s.o) + 0x0000000000304cc0 _inth_tmu + 0x0000000000304d40 _inth_etmu2 + 0x0000000000304d60 _inth_etmu_help + 0x0000000000304d80 _inth_etmux + .gint.blocks 0x0000000000304da0 0x40 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.s.o) + 0x0000000000304da0 _inth_dma_te + 0x0000000000304dc0 _inth_dma_ae + +.gint.drivers 0x0000000000304de0 0xc8 + 0x0000000000304de0 _bdrv = . + *(.gint.drivers.0) + *(.gint.drivers.1) + .gint.drivers.1 + 0x0000000000304de0 0x28 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(cpg.c.o) + 0x0000000000304de0 _drv_cpg + *(.gint.drivers.2) + .gint.drivers.2 + 0x0000000000304e08 0x28 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(tmu.c.o) + 0x0000000000304e08 _drv_tmu + .gint.drivers.2 + 0x0000000000304e30 0x28 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dma.c.o) + 0x0000000000304e30 _drv_dma0 + *(.gint.drivers.3) + *(.gint.drivers.4) + .gint.drivers.4 + 0x0000000000304e58 0x28 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(keysc.c.o) + 0x0000000000304e58 _drv_keysc + *(.gint.drivers.5) + .gint.drivers.5 + 0x0000000000304e80 0x28 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(r61524.c.o) + 0x0000000000304e80 _drv_r61524 + *(.gint.drivers.6) + 0x0000000000304ea8 _edrv = . + +.rodata 0x0000000000304ea8 0x37a4 + *(.rodata.4) + *(.rodata .rodata.*) + .rodata.str1.4 + 0x0000000000304ea8 0x8 build-cg/src/draw.c.o + .rodata.str1.4 + 0x0000000000304eb0 0x59d build-cg/src/levels.c.o + *fill* 0x000000000030544d 0x3 + .rodata 0x0000000000305450 0x208 build-cg/assets/img/elevator13.png.o + 0x0000000000305450 _img_elevator13 + 0x0000000000305658 _img_elevator13_end + .rodata 0x0000000000305658 0x208 build-cg/assets/img/elevator1.png.o + 0x0000000000305658 _img_elevator1 + 0x0000000000305860 _img_elevator1_end + .rodata 0x0000000000305860 0x208 build-cg/assets/img/ground.png.o + 0x0000000000305860 _img_ground + 0x0000000000305a68 _img_ground_end + .rodata 0x0000000000305a68 0x208 build-cg/assets/img/elevator6.png.o + 0x0000000000305a68 _img_elevator6 + 0x0000000000305c70 _img_elevator6_end + .rodata 0x0000000000305c70 0x208 build-cg/assets/img/spike.png.o + 0x0000000000305c70 _img_spike + 0x0000000000305e78 _img_spike_end + .rodata 0x0000000000305e78 0x208 build-cg/assets/img/elevator8.png.o + 0x0000000000305e78 _img_elevator8 + 0x0000000000306080 _img_elevator8_end + .rodata 0x0000000000306080 0x208 build-cg/assets/img/elevator2.png.o + 0x0000000000306080 _img_elevator2 + 0x0000000000306288 _img_elevator2_end + .rodata 0x0000000000306288 0x208 build-cg/assets/img/elevator11.png.o + 0x0000000000306288 _img_elevator11 + 0x0000000000306490 _img_elevator11_end + .rodata 0x0000000000306490 0x208 build-cg/assets/img/elevator5.png.o + 0x0000000000306490 _img_elevator5 + 0x0000000000306698 _img_elevator5_end + .rodata 0x0000000000306698 0x208 build-cg/assets/img/elevator.png.o + 0x0000000000306698 _img_elevator + 0x00000000003068a0 _img_elevator_end + .rodata 0x00000000003068a0 0x108 build-cg/assets/img/ice.png.o + 0x00000000003068a0 _img_ice + 0x00000000003069a8 _img_ice_end + .rodata 0x00000000003069a8 0x208 build-cg/assets/img/elevator12.png.o + 0x00000000003069a8 _img_elevator12 + 0x0000000000306bb0 _img_elevator12_end + .rodata 0x0000000000306bb0 0x208 build-cg/assets/img/elevator16.png.o + 0x0000000000306bb0 _img_elevator16 + 0x0000000000306db8 _img_elevator16_end + .rodata 0x0000000000306db8 0x208 build-cg/assets/img/elevator4.png.o + 0x0000000000306db8 _img_elevator4 + 0x0000000000306fc0 _img_elevator4_end + .rodata 0x0000000000306fc0 0x208 build-cg/assets/img/elevator7.png.o + 0x0000000000306fc0 _img_elevator7 + 0x00000000003071c8 _img_elevator7_end + .rodata 0x00000000003071c8 0x208 build-cg/assets/img/elevator10.png.o + 0x00000000003071c8 _img_elevator10 + 0x00000000003073d0 _img_elevator10_end + .rodata 0x00000000003073d0 0x188 build-cg/assets/img/player.png.o + 0x00000000003073d0 _img_player + 0x0000000000307558 _img_player_end + .rodata 0x0000000000307558 0x208 build-cg/assets/img/elevator3.png.o + 0x0000000000307558 _img_elevator3 + 0x0000000000307760 _img_elevator3_end + .rodata 0x0000000000307760 0x208 build-cg/assets/img/elevator15.png.o + 0x0000000000307760 _img_elevator15 + 0x0000000000307968 _img_elevator15_end + .rodata 0x0000000000307968 0x208 build-cg/assets/img/elevator9.png.o + 0x0000000000307968 _img_elevator9 + 0x0000000000307b70 _img_elevator9_end + .rodata 0x0000000000307b70 0x208 build-cg/assets/img/elevator14.png.o + 0x0000000000307b70 _img_elevator14 + 0x0000000000307d78 _img_elevator14_end + .rodata.str1.4 + 0x0000000000307d78 0x288 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.c.o) + 0x28c (size before relaxing) + .rodata 0x0000000000308000 0x18 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) + .rodata.str1.4 + 0x0000000000308018 0x6 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(keysc.c.o) + *fill* 0x000000000030801e 0x2 + .rodata.str1.4 + 0x0000000000308020 0x4 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(tmu.c.o) + .rodata 0x0000000000308024 0x49c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(font8x9.png.o) + 0x0000000000308024 _gint_font8x9 + 0x00000000003084c0 _gint_font8x9_end + .rodata.str1.4 + 0x00000000003084c0 0x7 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(r61524.c.o) + *fill* 0x00000000003084c7 0x1 + .rodata.str1.4 + 0x00000000003084c8 0x31 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(stdio.c.o) + *fill* 0x00000000003084f9 0x3 + .rodata.str1.4 + 0x00000000003084fc 0x4 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(cpg.c.o) + .rodata 0x0000000000308500 0x30 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dma.c.o) + .rodata.str1.4 + 0x0000000000308530 0x8 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dma.c.o) + 0x5 (size before relaxing) + .rodata 0x0000000000308538 0x14 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_thenan_df.o) + 0x0000000000308538 ___thenan_df + .rodata 0x000000000030854c 0x100 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clz.o) + 0x000000000030854c ___clz_tab + +.rela.dyn 0x000000000030864c 0x0 + .rela.pretext.entry + 0x000000000030864c 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(start.c.o) + .rela.text 0x000000000030864c 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(start.c.o) + .rela.pretext 0x000000000030864c 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(start.c.o) + 0x0000000008102000 . = ORIGIN (ram) + +.bss 0x0000000008102000 0x250 + 0x0000000008102000 _rbss = . + *(.bss COMMON) + .bss 0x0000000008102000 0x0 build-cg/src/collide.c.o + .bss 0x0000000008102000 0x0 build-cg/src/player.c.o + .bss 0x0000000008102000 0x0 build-cg/src/draw.c.o + .bss 0x0000000008102000 0x0 build-cg/src/levels.c.o + .bss 0x0000000008102000 0x0 build-cg/src/main.c.o + COMMON 0x0000000008102000 0x100 build-cg/src/main.c.o + 0x0000000008102000 _coins + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(memory.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(start.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(setup.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(mmu.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(gint.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.s.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(vbr.s.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(hardware.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dprint.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dimage.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dclear.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dvram.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(drect.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dupdate.c.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti-asm.s.o) + .bss 0x0000000008102100 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(bopti.c.o) + .bss 0x0000000008102100 0x24 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(keysc.c.o) + .bss 0x0000000008102124 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(tmu.c.o) + .bss 0x0000000008102124 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(memset.c.o) + .bss 0x0000000008102124 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(r61524.c.o) + .bss 0x0000000008102124 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(string.c.o) + .bss 0x0000000008102124 0x114 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(stdio.c.o) + .bss 0x0000000008102238 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.S.o) + .bss 0x0000000008102238 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(bopti-asm.s.o) + .bss 0x0000000008102238 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(cpg.c.o) + .bss 0x0000000008102238 0xc /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(getkey.c.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.s.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dma.c.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.s.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_movmem.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_umoddi3.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_mul_df.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ne_df.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_gt_df.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ge_df.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_lt_df.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_si_to_df.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_df_to_si.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_thenan_df.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udiv_qrnnd_16.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clz.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clzsi2.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_pack_df.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_unpack_df.o) + .bss 0x0000000008102244 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_fpcmp_parts_df.o) + 0x0000000008102250 . = ALIGN (0x10) + *fill* 0x0000000008102244 0xc + 0x0000000000000250 _sbss = SIZEOF (.bss) + +.data 0x0000000008102250 0xd0 load address 0x000000000030864c + 0x000000000030864c _ldata = LOADADDR (.data) + 0x0000000008102250 _rdata = . + *(.data .data.*) + .data 0x0000000008102250 0x0 build-cg/src/collide.c.o + .data 0x0000000008102250 0x0 build-cg/src/player.c.o + .data 0x0000000008102250 0x40 build-cg/src/draw.c.o + 0x0000000008102250 _ani_elevator + .data 0x0000000008102290 0x0 build-cg/src/levels.c.o + .data 0x0000000008102290 0x0 build-cg/src/main.c.o + .data 0x0000000008102290 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(memory.c.o) + .data 0x0000000008102290 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(start.c.o) + .data 0x0000000008102290 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(setup.c.o) + .data 0x0000000008102290 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(mmu.c.o) + .data 0x0000000008102290 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.c.o) + .data 0x0000000008102290 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(gint.c.o) + .data 0x0000000008102290 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.s.o) + .data 0x0000000008102290 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(vbr.s.o) + .data 0x0000000008102290 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(hardware.c.o) + .data 0x0000000008102290 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) + .data 0x0000000008102290 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dprint.c.o) + .data 0x0000000008102290 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dimage.c.o) + .data 0x0000000008102290 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dclear.c.o) + .data 0x0000000008102290 0xc /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dvram.c.o) + 0x0000000008102290 _gint_vram + .data 0x000000000810229c 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(drect.c.o) + .data 0x000000000810229c 0x8 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti.c.o) + 0x000000000810229c _topti_font + 0x00000000081022a0 _gint_default_font + .data 0x00000000081022a4 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dupdate.c.o) + .data 0x00000000081022a4 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(topti-asm.s.o) + .data 0x00000000081022a4 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(bopti.c.o) + .data 0x00000000081022a4 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(keysc.c.o) + .data 0x00000000081022a4 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(tmu.c.o) + .data 0x00000000081022a4 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(memset.c.o) + .data 0x00000000081022a4 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(r61524.c.o) + .data 0x00000000081022a4 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(string.c.o) + .data 0x00000000081022a4 0x68 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(stdio.c.o) + 0x00000000081022a4 _kprint_formatters + .data 0x000000000810230c 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.S.o) + .data 0x000000000810230c 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(bopti-asm.s.o) + .data 0x000000000810230c 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(cpg.c.o) + .data 0x000000000810230c 0x8 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(getkey.c.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.s.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dma.c.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(inth.s.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_movmem.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udivdi3.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_umoddi3.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_mul_df.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ne_df.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_gt_df.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ge_df.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_lt_df.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_si_to_df.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_df_to_si.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_thenan_df.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_udiv_qrnnd_16.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clz.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clzsi2.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_pack_df.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_unpack_df.o) + .data 0x0000000008102314 0x0 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_fpcmp_parts_df.o) + 0x0000000008102320 . = ALIGN (0x10) + *fill* 0x0000000008102314 0xc + +.data.4 0x0000000008102320 0x0 load address 0x000000000030871c + *(.data.4) + 0x0000000008102320 . = ALIGN (0x10) + 0x00000000000000d0 _sdata = (SIZEOF (.data) + SIZEOF (.data.4)) + 0x00000000e5200000 . = ORIGIN (ilram) + +.ilram 0x00000000e5200000 0x20 load address 0x000000000030871c + 0x000000000030871c _lilram = LOADADDR (.ilram) + 0x00000000e5200000 _rilram = . + *(.ilram) + .ilram 0x00000000e5200000 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(memset.c.o) + 0x00000000e5200020 . = ALIGN (0x10) + 0x00000000e5007000 . = ORIGIN (xram) + +.xram 0x00000000e5007000 0x0 load address 0x000000000030873c + 0x000000000030873c _lxram = LOADADDR (.xram) + 0x00000000e5007000 _rxram = . + *(.xram) + 0x00000000e5007000 . = ALIGN (0x10) + 0x00000000e5017000 . = ORIGIN (yram) + +.yram 0x00000000e5017000 0x0 load address 0x000000000030873c + 0x000000000030873c _lyram = LOADADDR (.yram) + 0x00000000e5017000 _ryram = . + *(.yram) + 0x00000000e5017000 . = ALIGN (0x10) + 0x0000000000000020 _silram = SIZEOF (.ilram) + 0x0000000000000000 _sxram = SIZEOF (.xram) + 0x0000000000000000 _syram = SIZEOF (.yram) + 0x000000008c15ff00 _gint_vbr = (ORIGIN (vbr) - 0x100) + 0x000000008c161400 . = ORIGIN (rram) + +.gint.data 0x000000008c161400 0xe0 load address 0x000000000030873c + 0x000000000030873c _lgdata = LOADADDR (.gint.data) + 0x000000008c161400 _rgdata = . + *(.gint.data .gint.data.*) + .gint.data 0x000000008c161400 0x8 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(exch.c.o) + 0x000000008c161400 _gint_exc_catcher + 0x000000008c161404 _gint_exc_panic + .gint.data 0x000000008c161408 0x10 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(gint.c.o) + 0x000000008c161408 _SH7305_INTC + .gint.data.sh3 + 0x000000008c161418 0x24 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(gint.c.o) + 0x000000008c161418 _SH7705_INTC + .gint.data 0x000000008c16143c 0x24 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(keysc.c.o) + .gint.data 0x000000008c161460 0x70 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(tmu.c.o) + .gint.data 0x000000008c1614d0 0x8 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(r61524.c.o) + 0x000000008c1614e0 . = ALIGN (0x10) + *fill* 0x000000008c1614d8 0x8 + 0x00000000000000e0 _sgdata = SIZEOF (.gint.data) + +.gint.bss 0x000000008c1614e0 0x300 load address 0x000000000030881c + *(.gint.bss .gint.bss.*) + .gint.bss 0x000000008c1614e0 0x1c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(setup.c.o) + .gint.bss 0x000000008c1614fc 0x40 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(hardware.c.o) + 0x000000008c1614fc _gint + .gint.bss 0x000000008c16153c 0x180 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(keysc.c.o) + .gint.bss 0x000000008c1616bc 0x88 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(tmu.c.o) + .gint.bss 0x000000008c161744 0x8 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(r61524.c.o) + .gint.bss 0x000000008c16174c 0x24 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(cpg.c.o) + .gint.bss 0x000000008c161770 0x68 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-cg.a(dma.c.o) + 0x000000008c1617e0 . = ALIGN (0x10) + *fill* 0x000000008c1617d8 0x8 + 0x0000000000000300 _sgbss = SIZEOF (.gint.bss) + +/DISCARD/ + *(.gint.bss.sh3) + *(.gint.data.sh3) + *(.debug_info .debug_abbrev .debug_loc .debug_aranges .debug_ranges .debug_line .debug_str) + *(.jcr) + *(.eh_frame_hdr) + *(.eh_frame) + *(.comment) +OUTPUT(build-cg/platform.elf elf32-sh) + +.debug_frame 0x0000000000000000 0x414 + .debug_frame 0x0000000000000000 0x110 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_addsub_df.o) + .debug_frame 0x0000000000000110 0x98 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_mul_df.o) + .debug_frame 0x00000000000001a8 0x48 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ne_df.o) + .debug_frame 0x00000000000001f0 0x48 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_gt_df.o) + .debug_frame 0x0000000000000238 0x48 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_ge_df.o) + .debug_frame 0x0000000000000280 0x48 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_lt_df.o) + .debug_frame 0x00000000000002c8 0x3c /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_si_to_df.o) + .debug_frame 0x0000000000000304 0x48 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_df_to_si.o) + .debug_frame 0x000000000000034c 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_clzsi2.o) + .debug_frame 0x000000000000036c 0x68 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_pack_df.o) + .debug_frame 0x00000000000003d4 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_unpack_df.o) + .debug_frame 0x00000000000003f4 0x20 /home/user/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/m4-nofpu/libgcc.a(_fpcmp_parts_df.o) diff --git a/build-cg/platform.bin b/build-cg/platform.bin new file mode 100755 index 0000000000000000000000000000000000000000..f62de9597681a8af98723f4276c917027932f3eb GIT binary patch literal 34844 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 literal 0 HcmV?d00001 diff --git a/build-cg/platform.elf b/build-cg/platform.elf new file mode 100755 index 0000000000000000000000000000000000000000..9e11564a06853feb76f45dbb82b3fdf03d253392 GIT binary patch literal 48984 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 H5nA5gkF}nd literal 0 HcmV?d00001 diff --git a/build-cg/src/levels.c.d b/build-cg/src/levels.c.d new file mode 100644 index 0000000..32ff5c6 --- /dev/null +++ b/build-cg/src/levels.c.d @@ -0,0 +1,3 @@ +build-cg/src/levels.c.o: src/levels.c include/levels.h + +include/levels.h: diff --git a/build-cg/src/levels.c.o b/build-cg/src/levels.c.o new file mode 100644 index 0000000000000000000000000000000000000000..36b0892018c42b4822001faaf94025bd062ff0f8 GIT binary patch literal 2284 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 L5_n0GU|rr9F#}Xa literal 0 HcmV?d00001 diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..9eaee66 --- /dev/null +++ b/build.sh @@ -0,0 +1,7 @@ +#/bin/#!/usr/bin/env bash +echo "making levels.c" +rm src/levels.c +luajit levels.lua >> src/levels.c +echo "building for cg" +fxsdk build-cg +echo "done" diff --git a/editor.sh b/editor.sh new file mode 100755 index 0000000..1cd3d92 --- /dev/null +++ b/editor.sh @@ -0,0 +1,3 @@ +cd ../up-editor/ +love . + diff --git a/include/collide.h b/include/collide.h new file mode 100644 index 0000000..9be6f95 --- /dev/null +++ b/include/collide.h @@ -0,0 +1,4 @@ +char collide(int x, int y, char level[], char tile); +char collide_solid(int x, int y, char level[]); +char collide_point(int x, int y, char level[], char tile); +char collide_and_erase(int x, int y, char level[], char tile); diff --git a/include/draw.h b/include/draw.h new file mode 100644 index 0000000..a40d8f6 --- /dev/null +++ b/include/draw.h @@ -0,0 +1,5 @@ +void draw_player(int old_x, int old_y, int x, int y); +void draw_level(char level[]); +void draw_level_anims(char level[], unsigned int step); +void erase_tile(int x, int y, char level[]); +void draw_timer(unsigned int step); //coucou Lephé' diff --git a/include/levels.h b/include/levels.h new file mode 100644 index 0000000..04d8536 --- /dev/null +++ b/include/levels.h @@ -0,0 +1 @@ +void set_level(int level_id, char level[]); diff --git a/include/player.h b/include/player.h new file mode 100644 index 0000000..69af390 --- /dev/null +++ b/include/player.h @@ -0,0 +1,3 @@ +void jump_test(char *jump_pressed, char *jump_buffer, unsigned int *jump_hold); +void set_start_pos(int *start_x, int *start_y, int x, int y); +void reset_old_pos(int *old_x, int *old_y); diff --git a/levels.lua b/levels.lua new file mode 100755 index 0000000..f940ed1 --- /dev/null +++ b/levels.lua @@ -0,0 +1,31 @@ +#!/usr/bin/luajit + +io.write([[#include "levels.h" +#include +]]) +io.write("void set_level(int level_id, char level[]){") +io.write("switch (level_id){") +current = 0 +for i = 0, 9999, 1 do + file = io.open("../up-editor/screens/"..i..".scr") + file_content = nil + if file then + file_content = file:read() + formated_file = "" + for j = 1, #file_content, 1 do + if j == 1 then + formated_file = formated_file.."-----------------------------" + end + formated_file = formated_file..file_content:sub(j, j) + if j % 26 == 0 then formated_file = formated_file.."--" end + if j == 390 then + formated_file = formated_file.."---------------------------" + end + end + file:close() + io.write("case "..i..":memcpy(level,\"".. + formated_file.."\","..#formated_file..");") + io.write("break;") + end +end +io.write("}}") diff --git a/platform.g3a b/platform.g3a new file mode 100644 index 0000000000000000000000000000000000000000..334066821c8bc08b78f880b56454128e2314b0eb GIT binary patch literal 63520 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, replace spaces with dashes, +# and add .g1a (or .g3a). You can specify a different folder if you want. +TARGET_FX := +TARGET_CG := + +# fx-9860G icon location +ICON_FX = assets-fx/icon-fx.png +# fx-CG 50 icon locations +ICON_CG_UNS = assets-cg/icon-cg-uns.png +ICON_CG_SEL = assets-cg/icon-cg-sel.png + +#--- +# Toolchain selection +#--- + +# Toolchain for fx9860g. Please see also CFLAGS_FX below. +TOOLCHAIN_FX := sh3eb-elf + +# Toolchain for fxcg50. Please see also CFLAGS_CG below. +TOOLCHAIN_CG := sh-elf + +#--- +# Compiler flags +#--- + +# Base compiler flags for the fxSDK, you usually want to keep these. +CFLAGS := -mb -ffreestanding -nostdlib -fstrict-volatile-bitfields + +# Platform-specific compiler flags. +# <> If you are using sh3eb-elf, use -m3. (You can do this on both FX and CG.) +# <> If you are using sh4eb-elf, use -m4-nofpu. (Not ideal on FX but works.) +# <> If you are using sh4eb-nofpu-elf, then your compiler will likely use the +# FPU and cause problems on the calculator. Consider another configuration. +# <> If you are using an sh-elf with several targets, specify whichever you +# support. I recommend -m3 on FX and -m4-nofpu on CG. +# Please see also TOOLCHAIN_FX and TOOLCHAIN_CG above. +CFLAGS_FX := -D FX9860G -m3 +CFLAGS_CG := -D FXCG50 -m4-nofpu + +# Additional compiler flags, change to your own taste! +CFLAGS += -Wall -Wextra -Os + +# Include paths. Add one -I option for each folder from which you want to +# be able to include files with #include<>. +INCLUDE := -I include + +# Libraries. Add one -l option for each library you are using, and also +# suitable -L options if you have library files in custom folders. To use +# fxlib, add libfx.a to the project directory and use "-L . -lfx". +LIBS := + +# Base linker flags for the fxSDK, you usually want to keep these. +LDFLAGS_FX := -T fx9860g.ld -lgint-fx $(LIBS) -lgint-fx -lgcc +LDFLAGS_CG := -T fxcg50.ld -lgint-cg $(LIBS) -lgint-cg -lgcc + +# Additional linker flags, if you need any. +LDFLAGS := + +# Additional platform-specific linker flags. +LDFLAGS_FX += -Wl,-Map=build-fx/map +LDFLAGS_CG += -Wl,-Map=build-cg/map + +#--- +# File conversion parameters +#--- + +#IMG.player.png = profile:p4 +#IMG.elevator.png = profile:p4 +#IMG.ground.png = profile:p4 +#IMG.jitem_popup.png = profile:p4 +#IMG.jitem.png = profile:p4 +#IMG.spike.png = profile:p4 + +# Here you can add fxconv options for each converted file, individually. +# The syntax is ".". For example, to specify the parameters for a +# font name "hexa.png", you might write: +# +# FONT.hexa.png = charset:print grid:size:3x5 grid.padding:1 diff --git a/src/collide.c b/src/collide.c new file mode 100644 index 0000000..2884185 --- /dev/null +++ b/src/collide.c @@ -0,0 +1,54 @@ +#include "collide.h" +#include "draw.h" + +#define PLAYER_H 15 +#define PLAYER_W 11 +#define LEVEL_WIDTH 28 + +char collide(int x, int y, char level[], char tile) +{ + if ((level[(int)(x/16) + (int)(y/16) * LEVEL_WIDTH] == tile) || + (level[(int)(x/16) + (int)((y+PLAYER_H)/16) * LEVEL_WIDTH] == tile) || + (level[(int)((x+PLAYER_W)/16) + (int)((y+PLAYER_H)/16) * + LEVEL_WIDTH] == tile) || (level[(int)((x+PLAYER_W)/16) + (int)(y/16) * + LEVEL_WIDTH] == tile)) return 1; + return 0; +} + +char collide_point(int x, int y, char level[], char tile) +{ + return (level[(int)(x/16) + (int)(y/16) * LEVEL_WIDTH] == tile); +} + +char collide_solid(int x, int y, char level[]) +{ + return (collide(x, y, level, '0') || + collide(x, y, level, '^') || + collide(x, y, level, '~')); +} + +char collide_and_erase(int x, int y, char level[], char tile) +{ + char collided = 0; + if (collide_point(x, y, level, tile)) + { + erase_tile(x, y, level); + collided = 1; + } + if (collide_point(x + PLAYER_W, y, level, tile)) + { + erase_tile(x + PLAYER_W, y, level); + collided = 1; + } + if (collide_point(x, y + PLAYER_H, level, tile)) + { + erase_tile(x, y + PLAYER_H, level); + collided = 1; + } + if (collide_point(x + PLAYER_W, y + PLAYER_H, level, tile)) + { + erase_tile(x + PLAYER_W, y + PLAYER_H, level); + collided = 1; + } + return collided; +} diff --git a/src/draw.c b/src/draw.c new file mode 100644 index 0000000..333f2eb --- /dev/null +++ b/src/draw.c @@ -0,0 +1,109 @@ +#include +#include "draw.h" + +#define PLAYER_H 15 +#define PLAYER_W 11 +#define BG_COLOR 0 +#define LEVEL_WIDTH 28 +#define DRAW_OFFSET_Y -24 +#define DRAW_OFFSET_X -27 + +extern image_t img_player; //player texture, 12x12 +extern image_t img_ground; //ground texture, 16x16 +extern image_t img_spike; //spike texture, 16x16 +extern image_t img_ice; //ice texture, 16x8 +//animated textures +extern image_t img_elevator1, img_elevator2, img_elevator3, img_elevator4; +extern image_t img_elevator5, img_elevator6, img_elevator7, img_elevator8; +extern image_t img_elevator9, img_elevator10, img_elevator11, img_elevator12; +extern image_t img_elevator13, img_elevator14, img_elevator15, img_elevator16; +const image_t * ani_elevator[16] = {&img_elevator1, &img_elevator2, + &img_elevator3, &img_elevator4, &img_elevator5, &img_elevator6, + &img_elevator7, &img_elevator8, &img_elevator9, &img_elevator10, + &img_elevator11, &img_elevator12, &img_elevator13, &img_elevator14, + &img_elevator15, &img_elevator16}; + +void draw_player(int old_x, int old_y, int x, int y) +{ + if (old_x != x || old_y != y) + { + drect(old_x + DRAW_OFFSET_X, old_y + DRAW_OFFSET_Y, + (old_x + PLAYER_W) + DRAW_OFFSET_X, + (old_y + PLAYER_H) + DRAW_OFFSET_Y, BG_COLOR); + dimage(x + DRAW_OFFSET_X, y + DRAW_OFFSET_Y, &img_player); + } +} + +void draw_level(char level[]) +{ + dclear(BG_COLOR); + unsigned int i = 0; + unsigned int x = 0; + unsigned int y = 0; + while (i != LEVEL_WIDTH*16) + { + switch (level[i]) + { + case '0': + dimage(x + DRAW_OFFSET_X, y + DRAW_OFFSET_Y, &img_ground); + break; + case 'v': + dimage(x + DRAW_OFFSET_X, y + DRAW_OFFSET_Y, &img_spike); + break; + case '~': + dimage(x + DRAW_OFFSET_X, y + DRAW_OFFSET_Y, &img_ground); + dimage(x + DRAW_OFFSET_X, y + DRAW_OFFSET_Y, &img_ice); + break; + case 's': + dimage(x + DRAW_OFFSET_X, y + DRAW_OFFSET_Y, &img_ground); + break; + } + x += 16; + if (x == 16*LEVEL_WIDTH) + { + x = 0; + y += 16; + } + i++; + } +} + +void draw_level_anims(char level[], unsigned int step) +{ + unsigned int i = 0; + unsigned int x = 0; + unsigned int y = 0; + while (i != LEVEL_WIDTH*16) + { + switch (level[i]) + { + case '^': + dimage(x + DRAW_OFFSET_X, y + DRAW_OFFSET_Y, ani_elevator[(step/2)%16]); + break; + } + x += 16; + if (x == 16*LEVEL_WIDTH) + { + x = 0; + y += 16; + } + i++; + } +} + +void erase_tile(int x, int y, char level[]) +{ + x = (int)(x/16); + y = (int)(y/16); + level[x + y * LEVEL_WIDTH] = '.'; + x *= 16; + y *= 16; + drect(x + DRAW_OFFSET_X, y + DRAW_OFFSET_Y, + x + 15 + DRAW_OFFSET_X, + y + 15 + DRAW_OFFSET_Y, BG_COLOR); +} + +void draw_timer(unsigned int step) +{ + dprint(0, 0, C_WHITE, C_BLACK, "%u.%02u", step/60, step%60); +} diff --git a/src/levels.c b/src/levels.c new file mode 100644 index 0000000..2782c8d --- /dev/null +++ b/src/levels.c @@ -0,0 +1,3 @@ +#include "levels.h" +#include +void set_level(int level_id, char level[]){switch (level_id){case 4950:memcpy(level,"-----------------------------..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--.......00000..............-----------------------------",476);break;case 5050:memcpy(level,"-----------------------------..........................--............00............--..........................--..........................--................00........--..........................--..........................--..........................--.....................00...--..........................--..........................--0........................0--000....................000--00000000..........00000000--00000000000000000000000000-----------------------------",476);break;case 5150:memcpy(level,"-----------------------------..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................-----------------------------",476);break;}} \ No newline at end of file diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..30bf627 --- /dev/null +++ b/src/main.c @@ -0,0 +1,223 @@ +#include +#include +#include +#include "draw.h" +#include "collide.h" +#include "levels.h" +#include "player.h" + +#define MAX_HSPD 2.5 +#define ACCELERATION 1 +#define DECELERATION 0.5 +#define MIN_VSPD -12.0 +#define MAX_VSPD 12 +#define JUMP_SPD -3.99 +#define GRAV 0.4 +#define JUMP_SCALE 12 +#define JUMP_REDUCTION -0.41 +#define UG_CAN_JUMP upgrades[0] +char coins[256]; +#define DRAW_LEVEL() draw_level(level) + +void dupdate(); //gint function +//test if jump pressed +int sgn(int number); //return the sign of input double + +int callback(volatile void *arg) +{ + volatile int *has_ticked = arg; + *has_ticked = 1; + return 0; +} + +int main(void) +{ + volatile int has_ticked = 1; //fps cap + char level[477]; + int level_id = 5050; + char jump_pressed = 1; //avoid holding jump + char jump_buffer = 0; //jump buffer, last 3 frames + unsigned int jump_hold = 0; //number of consecutive frames jump has been held + double vspd = 0.0; //player vertical speed + double hspd = 0; //player horizontal speed + int move = 0; + int direction = 0; + int on_ground = 6; //remember if player is on solid + int player_x = 0; + int player_y = 0; + int start_x = 18*16 + 2; + int start_y = 9*16 + 4; + int old_x, old_y; + char spawn_buffer = 0; + unsigned int step = 0; + set_level(level_id, level); + DRAW_LEVEL(); + draw_level_anims(level, step); + player_x = start_x; + player_y = start_y; + old_x = player_x + 1; //offset to draw it on first cycle + old_y = player_y; + //fps cap timer + timer_setup(0, timer_delay(0, 16667), 0, callback, &has_ticked); + timer_start(0); + while (1) { + while(!has_ticked) sleep(); + has_ticked = 0; + //START DRAW + step++; + draw_level_anims(level, step); + draw_player(old_x, old_y, player_x, player_y); + draw_timer(step); + dupdate(); + old_y = player_y; + old_x = player_x; + //END DRAW + clearevents(); + //horizontal movement & collision + { + move = 0; + double friction = 1; + int trunc_hspd; + //ice + if (collide(player_x, player_y + 1, level, '~')) friction = 0.2; + move = keydown(KEY_RIGHT) + 0 - keydown(KEY_LEFT); + if (move) { + if (hspd < MAX_HSPD) + { + hspd += ACCELERATION * friction; + if (hspd > MAX_HSPD) hspd = MAX_HSPD; + } + direction = move; + } + else if (hspd > 0) + { + if (friction != 0.2) hspd -= DECELERATION * friction; + else hspd -= DECELERATION / 4 * friction; + if (hspd < 0) hspd = 0; + } + trunc_hspd = hspd * direction; + if (1) //glue was here + { + if (!collide_solid(player_x + trunc_hspd, player_y, level)) + { + player_x += trunc_hspd; + } + else + { + int sign_hspd = sgn(trunc_hspd); + while (!collide_solid(player_x + sign_hspd, player_y, level)) + { + player_x += sign_hspd; + } + hspd = 0; + } + } + } + //ground detection + if (vspd >= 0 && collide_solid(player_x, player_y + 1, level)) + { + on_ground = 6; + vspd = 0; + if (spawn_buffer) + { + spawn_buffer = 0; + set_start_pos(&start_x, &start_y, player_x, player_y); + } + } + else + { + if (on_ground != 6 && vspd < MAX_VSPD) vspd += GRAV; + if (on_ground) on_ground--; + } + //vertical movement + jump_test(&jump_pressed, &jump_buffer, &jump_hold); + //jump + if (jump_buffer && on_ground) { + vspd = JUMP_SPD; + on_ground = 0; + jump_hold = JUMP_SCALE; + } + else if (jump_hold && keydown(KEY_SHIFT)) + { + jump_hold--; + vspd += JUMP_REDUCTION; + } + else jump_hold = 0; + //elevator collision and raise + if ((collide(player_x - 1, player_y, level, '^') || + collide(player_x + 1, player_y, level, '^')) && vspd > MIN_VSPD) + { + if (vspd > -2) + { + vspd -= GRAV; + } + vspd -= GRAV; + } + //vertical collision + { + int trunc_vspd = vspd; //truncate vspd + if (trunc_vspd) + { + if (!collide_solid(player_x, player_y + trunc_vspd, level)) + { + player_y += trunc_vspd; + } + else + { + int sign_vspd = sgn(trunc_vspd); + while (!collide_solid(player_x, player_y + sign_vspd, level)) + { + player_y += sign_vspd; + } + vspd = 0; + jump_hold = 0; + } + } + } + //spike collision and death + if (collide(player_x, player_y, level, 'v')) + { + player_x = start_x; + player_y = start_y; + vspd = 0; + } + //borders collision + if (player_x <= 22) + { + player_x = 414; + } + else if (player_x >= 416) + { + player_x = 24; + } + else if (player_y <= 8) + { + level_id -= 100; + player_y = 246; + spawn_buffer = 1; + set_start_pos(&start_x, &start_y, player_x, player_y); + set_level(level_id, level); + DRAW_LEVEL(); + reset_old_pos(&old_x, &old_y); + } + else if (player_y >= 248) + { + level_id += 100; + player_y = 10; + set_start_pos(&start_x, &start_y, player_x, player_y); + set_level(level_id, level); + DRAW_LEVEL(); + reset_old_pos(&old_x, &old_y); + } + //secret way/hidden passage + collide_and_erase(player_x, player_y, level, 's'); + //exit + if (keydown(KEY_EXIT)) return 0; + } +} + +int sgn(int number) +{ + if (number < 0) return -1; + else return 1; +} diff --git a/src/player.c b/src/player.c new file mode 100644 index 0000000..22a32b5 --- /dev/null +++ b/src/player.c @@ -0,0 +1,31 @@ +#include +#include "player.h" + +void jump_test(char *jump_pressed, char *jump_buffer, unsigned int *jump_hold) +{ + if (keydown(KEY_SHIFT)) + { + if (!*jump_pressed) + { + *jump_pressed = 1; + *jump_buffer = 3; + } + } + else { + *jump_hold = 0; + *jump_pressed = 0; + } + if (*jump_buffer) *jump_buffer -= 1; +} + +void set_start_pos(int *start_x, int *start_y, int x, int y) +{ + *start_x = x; + *start_y = y; +} + +void reset_old_pos(int *old_x, int *old_y) +{ + *old_x = -16; + *old_y = -16; +} diff --git a/transfer.sh b/transfer.sh new file mode 100755 index 0000000..6c66e40 --- /dev/null +++ b/transfer.sh @@ -0,0 +1,3 @@ +#/bin/#!/usr/bin/env bash +cp platform.g3a /media/user/disk/ -v +echo done