From e09a23f0a4f342aa83854ce8cc11aacc09e350fd Mon Sep 17 00:00:00 2001 From: Logan Hunt Date: Mon, 10 Aug 2020 14:04:44 -0600 Subject: [PATCH] Added rotation --- GBA-Dash.gba | Bin 2036 -> 0 bytes GBA-Dash.sav | 0 build/GBA-Dash.map | 498 ----------------------- build/gba-dash.map | 532 +++++++++++++++++++++++++ build/main.d | 72 ++-- build/main.o | Bin 11528 -> 6520 bytes build/player.d | 2 +- build/player.o | Bin 2512 -> 2512 bytes build/playerObject.d | 21 + build/playerObject.o | Bin 0 -> 13508 bytes build/sinlut.d | 5 + build/sinlut.o | Bin 0 -> 3044 bytes build/toolbox.d | 22 +- build/toolbox.o | Bin 4836 -> 6096 bytes copyToDesktop.sh | 4 + GBA-Dash.elf => gba-dash.elf | Bin 211852 -> 217416 bytes gba-dash.gba | Bin 0 -> 3468 bytes include/.playerObject.h.swp | Bin 12288 -> 0 bytes include/playerObject.h | 56 +-- include/sinlut.h | 15 + include/toolbox.h | 2 + source/{.main.c.swp => .toolbox.c.swp} | Bin 12288 -> 12288 bytes source/main.c | 30 +- source/playerObject.c | 98 +++++ source/sinlut.c | 73 ++++ {sprites => source}/toolbox.c | 17 + tools/a.out | Bin 0 -> 16872 bytes tools/lookuptablemaker.c | 29 ++ 28 files changed, 856 insertions(+), 620 deletions(-) delete mode 100755 GBA-Dash.gba delete mode 100644 GBA-Dash.sav delete mode 100644 build/GBA-Dash.map create mode 100644 build/gba-dash.map create mode 100644 build/playerObject.d create mode 100644 build/playerObject.o create mode 100644 build/sinlut.d create mode 100644 build/sinlut.o create mode 100755 copyToDesktop.sh rename GBA-Dash.elf => gba-dash.elf (89%) create mode 100755 gba-dash.gba delete mode 100644 include/.playerObject.h.swp create mode 100644 include/sinlut.h rename source/{.main.c.swp => .toolbox.c.swp} (80%) create mode 100644 source/playerObject.c create mode 100644 source/sinlut.c rename {sprites => source}/toolbox.c (74%) create mode 100755 tools/a.out create mode 100644 tools/lookuptablemaker.c diff --git a/GBA-Dash.gba b/GBA-Dash.gba deleted file mode 100755 index bf0c0cf900795d286d850d4e37ab01fc1c15a38b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2036 zcmeHHYfKzf6h3!mcA4cl3)Jib3OloumZcO}tk^=k?!sl4fySa@n`)eWjQ_z%kr(&U)B%HJ`)v^=e_+ z%$7?(y4xqOo3?ZW59n9lEB)>0{m4P-nq2Vlj&n5HRC#Omc!l=)2D+vV-Wd&=*Y)m-?BDUG zQuWETf~l^`FIP$X8l+WKp637)kt#f`2kZ4^6U^d^;0{CP7&>aW*=5J8zzU zN;rbIZ*kh1376l4QpVb_2c>;W@tMYzV!!RNoE`wBN-eGPI85|q1d2-){LX;M2FeP; zgamV_d_brd8WJ+XoP;@4G6$ZqQBk2D6uT)Kn6%`ns4v z=el0U4BldqH=^lhP*H;);&2`bLhHkm z=FfpRiP=b^0T&%L1dItQ?cSH#l6Zh2_tfpw&=2@|yb0H0nU9Cu0kR3+?NbBr(np;4wz3F#}tkWsydu3#dvRYn`vJs%fecdTu!sB}KtWTa&GkE0K$A z1*%rZl!YEBN{NoaAxlb-mc^h??h3MH9Wqo9_viytqv;V{T0-|Q0=V{934 z)vHY(;nnCA?yMr?Q(?Bw z0J{Fy*qv#e{XA`hyQD@--;jYcFlRQK7r|$8<^`C|`uibjv;YThMhnnoOZ<4w>>ya& qYpE|!{P@hpeRN-450FR0{)g=U@xPgY)8xPYI>F98Pc=1?6#NbS4!wQ= diff --git a/GBA-Dash.sav b/GBA-Dash.sav deleted file mode 100644 index e69de29..0000000 diff --git a/build/GBA-Dash.map b/build/GBA-Dash.map deleted file mode 100644 index f89749a..0000000 --- a/build/GBA-Dash.map +++ /dev/null @@ -1,498 +0,0 @@ -Archive member included to satisfy reference by file (symbol) - -/opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-init.o) - /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o (__libc_init_array) -/opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memcpy-stub.o) - main.o (memcpy) -/opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) - /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o (fake_heap_end) - -Discarded input sections - - .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o - .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o - .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o - .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crti.o - .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crti.o - .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crti.o - .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - .data.__dso_handle - 0x0000000000000000 0x4 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - .text 0x0000000000000000 0x5c main.o - .data 0x0000000000000000 0x4 main.o - .text 0x0000000000000000 0x0 player.o - .data 0x0000000000000000 0x0 player.o - .bss 0x0000000000000000 0x0 player.o - .data 0x0000000000000000 0x0 toolbox.o - .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-init.o) - .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-init.o) - .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-init.o) - .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memcpy-stub.o) - .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memcpy-stub.o) - .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memcpy-stub.o) - .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) - .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) - .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) - .bss.fake_heap_start - 0x0000000000000000 0x4 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) - .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtend.o - .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtend.o - .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtend.o - .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtn.o - .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtn.o - .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtn.o - -Memory Configuration - -Name Origin Length Attributes -rom 0x0000000008000000 0x0000000002000000 -iwram 0x0000000003000000 0x0000000000008000 -ewram 0x0000000002000000 0x0000000000040000 -*default* 0x0000000000000000 0xffffffffffffffff - -Linker script and memory map - - 0x0000000008000000 __text_start = ORIGIN (rom) - 0x0000000002040000 __eheap_end = (ORIGIN (ewram) + LENGTH (ewram)) - 0x0000000003000000 __iwram_start = ORIGIN (iwram) - 0x0000000003008000 __iwram_top = (ORIGIN (iwram) + LENGTH (iwram)) - 0x0000000003007fa0 __sp_irq = (__iwram_top - 0x60) - 0x0000000003007f00 __sp_usr = (__sp_irq - 0xa0) - 0x0000000003007ff8 __irq_flags = 0x3007ff8 - 0x0000000008000000 . = __text_start - -.crt0 0x0000000008000000 0x210 - *(.crt0) - .crt0 0x0000000008000000 0x210 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o - 0x0000000008000000 _start - 0x00000000080000c4 __boot_method - 0x00000000080000c5 __slave_number - 0x00000000080000e0 start_vector - 0x0000000008000210 . = ALIGN (0x4) - -.init 0x0000000008000210 0xc - *(SORT_NONE(.init)) - .init 0x0000000008000210 0x4 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crti.o - 0x0000000008000210 _init - .init 0x0000000008000214 0x8 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtn.o - -.plt 0x000000000800021c 0x0 - *(.plt) - 0x000000000800021c . = ALIGN (0x4) - -.text 0x000000000800021c 0x338 - *(EXCLUDE_FILE(*.iwram*) .text*) - .text.deregister_tm_clones - 0x000000000800021c 0x2c /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - .text.register_tm_clones - 0x0000000008000248 0x34 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - .text.__do_global_dtors_aux - 0x000000000800027c 0x30 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - .text.frame_dummy - 0x00000000080002ac 0x28 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - .text.startup 0x00000000080002d4 0x108 main.o - 0x00000000080002d4 main - .text 0x00000000080003dc 0x80 toolbox.o - 0x00000000080003dc oam_init - 0x000000000800041c oam_copy - 0x000000000800043c obj_copy - .text.__libc_init_array - 0x000000000800045c 0x50 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-init.o) - 0x000000000800045c __libc_init_array - .text.memcpy 0x00000000080004ac 0xa8 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memcpy-stub.o) - 0x00000000080004ac memcpy - *(.gnu.linkonce.t.*) - *(.text.*personality*) - *(.gnu.warning) - *(.glue_7t) - .glue_7t 0x0000000008000554 0x0 linker stubs - *(.glue_7) - .glue_7 0x0000000008000554 0x0 linker stubs - *(.vfp11_veneer) - .vfp11_veneer 0x0000000008000554 0x0 linker stubs - 0x0000000008000554 . = ALIGN (0x4) - 0x0000000008000554 __text_end = . - -.v4_bx 0x0000000008000554 0x0 - .v4_bx 0x0000000008000554 0x0 linker stubs - -.iplt 0x0000000008000554 0x0 - .iplt 0x0000000008000554 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o - -.fini 0x0000000008000554 0xc - *(.fini) - .fini 0x0000000008000554 0x4 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crti.o - 0x0000000008000554 _fini - .fini 0x0000000008000558 0x8 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtn.o - 0x0000000008000560 . = ALIGN (0x4) - -.rodata 0x0000000008000560 0x280 - *(.rodata) - .rodata 0x0000000008000560 0x280 player.o - 0x0000000008000560 playerTiles - 0x00000000080005e0 playerPal - *all.rodata*(*) - *(.roda) - *(.rodata.*) - *(.gnu.linkonce.r*) - 0x00000000080007e0 . = ALIGN (0x4) - -.ARM.extab - *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x00000000080007e0 __exidx_start = . - -.ARM.exidx - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - 0x00000000080007e0 __exidx_end = . - -.ctors 0x00000000080007e0 0x0 - *crtbegin.o(.ctors) - *(EXCLUDE_FILE(*crtend.o) .ctors) - *(SORT_BY_NAME(.ctors.*)) - *(.ctors) - 0x00000000080007e0 . = ALIGN (0x4) - -.dtors 0x00000000080007e0 0x0 - *crtbegin.o(.dtors) - *(EXCLUDE_FILE(*crtend.o) .dtors) - *(SORT_BY_NAME(.dtors.*)) - *(.dtors) - 0x00000000080007e0 . = ALIGN (0x4) - -.eh_frame 0x00000000080007e0 0x4 - *(.eh_frame) - .eh_frame 0x00000000080007e0 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - .eh_frame 0x00000000080007e0 0x4 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtend.o - 0x00000000080007e4 . = ALIGN (0x4) - -.rel.dyn 0x00000000080007e4 0x0 - .rel.iplt 0x00000000080007e4 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o - -.gcc_except_table - 0x00000000080007e4 0x0 - *(.gcc_except_table) - 0x00000000080007e4 . = ALIGN (0x4) - 0x00000000080007e4 __iwram_lma = . - -.iwram 0x0000000003000000 0x0 load address 0x00000000080007e4 - 0x0000000003000000 __iwram_start__ = ABSOLUTE (.) - *(.iwram .iwram*) - *iwram.*(.text* .data*) - 0x0000000003000000 . = ALIGN (0x4) - 0x0000000003000000 __iwram_end__ = ABSOLUTE (.) - 0x00000000080007e4 __data_lma = (__iwram_lma + SIZEOF (.iwram)) - -.bss 0x0000000003000000 0x424 - 0x0000000003000000 __bss_start = ABSOLUTE (.) - 0x0000000003000000 __bss_start__ = ABSOLUTE (.) - *(.dynbss) - *(.gnu.linkonce.b*) - *(.bss*) - .bss.completed.1 - 0x0000000003000000 0x1 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - *fill* 0x0000000003000001 0x3 - .bss.object.0 0x0000000003000004 0x18 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - .bss 0x000000000300001c 0x400 main.o - 0x000000000300001c obj_buffer - .bss 0x000000000300041c 0x4 toolbox.o - 0x000000000300041c __key_prev - 0x000000000300041e __key_curr - .bss.fake_heap_end - 0x0000000003000420 0x4 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) - 0x0000000003000420 fake_heap_end - *(COMMON) - 0x0000000003000424 . = ALIGN (0x4) - 0x0000000003000424 __bss_end__ = ABSOLUTE (.) - -.data 0x0000000003000424 0x0 load address 0x00000000080007e4 - 0x0000000003000424 __data_start__ = ABSOLUTE (.) - *(.data*) - *(.gnu.linkonce.d*) - 0x0000000003000424 . = ALIGN (0x4) - 0x00000000080007e4 __preinit_lma = (__data_lma + SIZEOF (.data)) - -.igot.plt 0x0000000003000000 0x0 - .igot.plt 0x0000000003000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o - -.tm_clone_table - 0x0000000003000000 0x0 - .tm_clone_table - 0x0000000003000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - .tm_clone_table - 0x0000000003000000 0x0 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtend.o - -.preinit_array 0x0000000003000424 0x0 load address 0x00000000080007e4 - 0x0000000003000424 __preinit_array_start = ABSOLUTE (.) - *(.preinit_array) - 0x0000000003000424 __preinit_array_end = ABSOLUTE (.) - 0x00000000080007e4 __init_lma = (__preinit_lma + SIZEOF (.preinit_array)) - -.init_array 0x0000000003000424 0x4 load address 0x00000000080007e4 - 0x0000000003000424 __init_array_start = ABSOLUTE (.) - *(SORT_BY_NAME(.init_array.*)) - *(.init_array) - .init_array 0x0000000003000424 0x4 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - 0x0000000003000428 __init_array_end = ABSOLUTE (.) - 0x00000000080007e8 __fini_lma = (__init_lma + SIZEOF (.init_array)) - -.fini_array 0x0000000003000428 0x4 load address 0x00000000080007e8 - 0x0000000003000428 __fini_array_start = ABSOLUTE (.) - *(SORT_BY_NAME(.fini_array.*)) - *(.fini_array) - .fini_array 0x0000000003000428 0x4 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - 0x000000000300042c __fini_array_end = ABSOLUTE (.) - 0x00000000080007ec __jcr_lma = (__fini_lma + SIZEOF (.fini_array)) - -.jcr 0x000000000300042c 0x0 load address 0x00000000080007ec - *(.jcr) - 0x000000000300042c __data_end__ = ABSOLUTE (.) - 0x00000000080007ec __iwram_overlay_lma = (__jcr_lma + SIZEOF (.jcr)) - 0x000000000300042c __iwram_overlay_start = . - -.iwram0 0x000000000300042c 0x0 load address 0x00000000080007ec - *(.iwram0) - 0x000000000300042c . = ALIGN (0x4) - 0x00000000080007ec PROVIDE (__load_start_iwram0 = LOADADDR (.iwram0)) - 0x00000000080007ec PROVIDE (__load_stop_iwram0 = (LOADADDR (.iwram0) + SIZEOF (.iwram0))) - -.iwram1 0x000000000300042c 0x0 - *(.iwram1) - 0x000000000300042c . = ALIGN (0x4) - [!provide] PROVIDE (__load_start_iwram1 = LOADADDR (.iwram1)) - [!provide] PROVIDE (__load_stop_iwram1 = (LOADADDR (.iwram1) + SIZEOF (.iwram1))) - -.iwram2 0x000000000300042c 0x0 - *(.iwram2) - 0x000000000300042c . = ALIGN (0x4) - [!provide] PROVIDE (__load_start_iwram2 = LOADADDR (.iwram2)) - [!provide] PROVIDE (__load_stop_iwram2 = (LOADADDR (.iwram2) + SIZEOF (.iwram2))) - -.iwram3 0x000000000300042c 0x0 - *(.iwram3) - 0x000000000300042c . = ALIGN (0x4) - [!provide] PROVIDE (__load_start_iwram3 = LOADADDR (.iwram3)) - [!provide] PROVIDE (__load_stop_iwram3 = (LOADADDR (.iwram3) + SIZEOF (.iwram3))) - -.iwram4 0x000000000300042c 0x0 - *(.iwram4) - 0x000000000300042c . = ALIGN (0x4) - [!provide] PROVIDE (__load_start_iwram4 = LOADADDR (.iwram4)) - [!provide] PROVIDE (__load_stop_iwram4 = (LOADADDR (.iwram4) + SIZEOF (.iwram4))) - -.iwram5 0x000000000300042c 0x0 - *(.iwram5) - 0x000000000300042c . = ALIGN (0x4) - [!provide] PROVIDE (__load_start_iwram5 = LOADADDR (.iwram5)) - [!provide] PROVIDE (__load_stop_iwram5 = (LOADADDR (.iwram5) + SIZEOF (.iwram5))) - -.iwram6 0x000000000300042c 0x0 - *(.iwram6) - 0x000000000300042c . = ALIGN (0x4) - [!provide] PROVIDE (__load_start_iwram6 = LOADADDR (.iwram6)) - [!provide] PROVIDE (__load_stop_iwram6 = (LOADADDR (.iwram6) + SIZEOF (.iwram6))) - -.iwram7 0x000000000300042c 0x0 - *(.iwram7) - 0x000000000300042c . = ALIGN (0x4) - [!provide] PROVIDE (__load_start_iwram7 = LOADADDR (.iwram7)) - [!provide] PROVIDE (__load_stop_iwram7 = (LOADADDR (.iwram7) + SIZEOF (.iwram7))) - -.iwram8 0x000000000300042c 0x0 - *(.iwram8) - 0x000000000300042c . = ALIGN (0x4) - [!provide] PROVIDE (__load_start_iwram8 = LOADADDR (.iwram8)) - [!provide] PROVIDE (__load_stop_iwram8 = (LOADADDR (.iwram8) + SIZEOF (.iwram8))) - -.iwram9 0x000000000300042c 0x0 - *(.iwram9) - 0x000000000300042c . = ALIGN (0x4) - [!provide] PROVIDE (__load_start_iwram9 = LOADADDR (.iwram9)) - [!provide] PROVIDE (__load_stop_iwram9 = (LOADADDR (.iwram9) + SIZEOF (.iwram9))) - 0x000000000300042c __iwram_overlay_end = . - 0x00000000080007ec __ewram_lma = (__iwram_overlay_lma + (__iwram_overlay_end - __iwram_overlay_start)) - 0x000000000300042c __iheap_start = . - 0x0000000002000000 __ewram_start = ORIGIN (ewram) - -.ewram 0x0000000002000000 0x0 load address 0x00000000080007ec - *(.ewram*) - 0x0000000002000000 . = ALIGN (0x4) - 0x0000000002000000 __ewram_end = ABSOLUTE (.) - 0x00000000080007ec __pad_lma = (__ewram_lma + SIZEOF (.ewram)) - -.sbss 0x0000000002000000 0x0 - 0x0000000002000000 __sbss_start__ = ABSOLUTE (.) - *(.sbss*) - 0x0000000002000000 . = ALIGN (0x4) - 0x0000000002000000 __sbss_end__ = ABSOLUTE (.) - 0x0000000002000000 __end__ = ABSOLUTE (.) - 0x0000000002000000 __eheap_start = ABSOLUTE (.) - -.pad 0x0000000002000000 0x8 load address 0x00000000080007ec - 0x0000000002000000 0x4 LONG 0x52416b64 - 0x0000000002000004 0x4 LONG 0x4d - 0x0000000002000008 . = ALIGN (0x4) - 0x00000000080007f4 __rom_end__ = (__pad_lma + SIZEOF (.pad)) - -.stab - *(.stab) - -.stabstr - *(.stabstr) - -.stab.excl - *(.stab.excl) - -.stab.exclstr - *(.stab.exclstr) - -.stab.index - *(.stab.index) - -.stab.indexstr - *(.stab.indexstr) - -.comment 0x0000000000000000 0x23 - *(.comment) - .comment 0x0000000000000000 0x23 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - 0x24 (size before relaxing) - .comment 0x0000000000000023 0x24 main.o - .comment 0x0000000000000023 0x24 player.o - .comment 0x0000000000000023 0x24 toolbox.o - .comment 0x0000000000000023 0x24 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-init.o) - .comment 0x0000000000000023 0x24 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memcpy-stub.o) - .comment 0x0000000000000023 0x24 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) - .comment 0x0000000000000023 0x24 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtend.o - -.debug - *(.debug) - -.line - *(.line) - -.debug_srcinfo - *(.debug_srcinfo) - -.debug_sfnames - *(.debug_sfnames) - -.debug_aranges 0x0000000000000000 0x60 - *(.debug_aranges) - .debug_aranges - 0x0000000000000000 0x28 main.o - .debug_aranges - 0x0000000000000028 0x18 player.o - .debug_aranges - 0x0000000000000040 0x20 toolbox.o - -.debug_pubnames - *(.debug_pubnames) - -.debug_info 0x0000000000000000 0xc70 - *(.debug_info) - .debug_info 0x0000000000000000 0x967 main.o - .debug_info 0x0000000000000967 0x7f player.o - .debug_info 0x00000000000009e6 0x28a toolbox.o - -.debug_abbrev 0x0000000000000000 0x46c - *(.debug_abbrev) - .debug_abbrev 0x0000000000000000 0x2cb main.o - .debug_abbrev 0x00000000000002cb 0x47 player.o - .debug_abbrev 0x0000000000000312 0x15a toolbox.o - -.debug_line 0x0000000000000000 0x603 - *(.debug_line) - .debug_line 0x0000000000000000 0x42f main.o - .debug_line 0x000000000000042f 0x4a player.o - .debug_line 0x0000000000000479 0x18a toolbox.o - -.debug_frame 0x0000000000000000 0xbc - *(.debug_frame) - .debug_frame 0x0000000000000000 0x60 main.o - .debug_frame 0x0000000000000060 0x5c toolbox.o - -.debug_str 0x0000000000000000 0x36b - *(.debug_str) - .debug_str 0x0000000000000000 0x307 main.o - 0x347 (size before relaxing) - .debug_str 0x0000000000000307 0x2a player.o - 0xdc (size before relaxing) - .debug_str 0x0000000000000331 0x3a toolbox.o - 0x167 (size before relaxing) - -.debug_loc 0x0000000000000000 0x5ea - *(.debug_loc) - .debug_loc 0x0000000000000000 0x310 main.o - .debug_loc 0x0000000000000310 0x2da toolbox.o - -.debug_macinfo - *(.debug_macinfo) - -.debug_weaknames - *(.debug_weaknames) - -.debug_funcnames - *(.debug_funcnames) - -.debug_typenames - *(.debug_typenames) - -.debug_varnames - *(.debug_varnames) - -.stack 0x0000000000080000 0x0 - 0x0000000000080000 _stack = . - *(.stack) - -.note.gnu.arm.ident - *(.note.gnu.arm.ident) - -.ARM.attributes - 0x0000000000000000 0x2c - *(.ARM.attributes) - .ARM.attributes - 0x0000000000000000 0x20 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o - .ARM.attributes - 0x0000000000000020 0x1c /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crti.o - .ARM.attributes - 0x000000000000003c 0x2a /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o - .ARM.attributes - 0x0000000000000066 0x2a main.o - .ARM.attributes - 0x0000000000000090 0x30 player.o - .ARM.attributes - 0x00000000000000c0 0x2a toolbox.o - .ARM.attributes - 0x00000000000000ea 0x2a /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-init.o) - .ARM.attributes - 0x0000000000000114 0x2a /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memcpy-stub.o) - .ARM.attributes - 0x000000000000013e 0x30 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) - .ARM.attributes - 0x000000000000016e 0x30 /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtend.o - .ARM.attributes - 0x000000000000019e 0x1c /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtn.o - -/DISCARD/ - *(.note.GNU-stack) -LOAD /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o -LOAD /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crti.o -LOAD /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtbegin.o -LOAD main.o -LOAD player.o -LOAD toolbox.o -LOAD /opt/devkitpro/libgba/lib/libmm.a -LOAD /opt/devkitpro/libgba/lib/libgba.a -START GROUP -LOAD /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/libgcc.a -LOAD /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libg.a -LOAD /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libc.a -LOAD /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a -END GROUP -LOAD /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtend.o -LOAD /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/10.1.0/thumb/crtn.o -OUTPUT(/home/logan/git/GBA-Dash/GBA-Dash.elf elf32-littlearm) - -.debug_ranges 0x0000000000000000 0x168 - .debug_ranges 0x0000000000000000 0x168 main.o diff --git a/build/gba-dash.map b/build/gba-dash.map new file mode 100644 index 0000000..ce8d3d4 --- /dev/null +++ b/build/gba-dash.map @@ -0,0 +1,532 @@ +Archive member included to satisfy reference by file (symbol) + +/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-init.o) + /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o (__libc_init_array) +/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memcpy-stub.o) + main.o (memcpy) +/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) + /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o (fake_heap_end) + +Discarded input sections + + .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o + .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o + .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o + .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crti.o + .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crti.o + .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crti.o + .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtbegin.o + .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtbegin.o + .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtbegin.o + .data.__dso_handle + 0x0000000000000000 0x4 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtbegin.o + .data 0x0000000000000000 0x0 playerObject.o + .bss 0x0000000000000000 0x0 playerObject.o + .text 0x0000000000000000 0x0 main.o + .text 0x0000000000000000 0x0 sinlut.o + .data 0x0000000000000000 0x0 sinlut.o + .bss 0x0000000000000000 0x0 sinlut.o + .data 0x0000000000000000 0x0 toolbox.o + .text 0x0000000000000000 0x0 player.o + .data 0x0000000000000000 0x0 player.o + .bss 0x0000000000000000 0x0 player.o + .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-init.o) + .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-init.o) + .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-init.o) + .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memcpy-stub.o) + .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memcpy-stub.o) + .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memcpy-stub.o) + .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) + .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) + .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) + .bss.fake_heap_start + 0x0000000000000000 0x4 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) + .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtend.o + .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtend.o + .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtend.o + .text 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtn.o + .data 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtn.o + .bss 0x0000000000000000 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtn.o + +Memory Configuration + +Name Origin Length Attributes +rom 0x0000000008000000 0x0000000002000000 +iwram 0x0000000003000000 0x0000000000008000 +ewram 0x0000000002000000 0x0000000000040000 +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x0000000008000000 __text_start = ORIGIN (rom) + 0x0000000002040000 __eheap_end = (ORIGIN (ewram) + LENGTH (ewram)) + 0x0000000003000000 __iwram_start = ORIGIN (iwram) + 0x0000000003008000 __iwram_top = (ORIGIN (iwram) + LENGTH (iwram)) + 0x0000000003007fa0 __sp_irq = (__iwram_top - 0x60) + 0x0000000003007f00 __sp_usr = (__sp_irq - 0xa0) + 0x0000000003007ff8 __irq_flags = 0x3007ff8 + 0x0000000008000000 . = __text_start + +.crt0 0x0000000008000000 0x210 + *(.crt0) + .crt0 0x0000000008000000 0x210 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o + 0x0000000008000000 _start + 0x00000000080000c4 __boot_method + 0x00000000080000c5 __slave_number + 0x00000000080000e0 start_vector + 0x0000000008000210 . = ALIGN (0x4) + +.init 0x0000000008000210 0xc + *(SORT_NONE(.init)) + .init 0x0000000008000210 0x4 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crti.o + 0x0000000008000210 _init + .init 0x0000000008000214 0x8 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtn.o + +.plt 0x000000000800021c 0x0 + *(.plt) + 0x000000000800021c . = ALIGN (0x4) + +.text 0x000000000800021c 0x4cc + *(EXCLUDE_FILE(*.iwram*) .text*) + .text.__do_global_dtors_aux + 0x000000000800021c 0x2c /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtbegin.o + .text.frame_dummy + 0x0000000008000248 0x24 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtbegin.o + .text 0x000000000800026c 0x1e8 playerObject.o + 0x000000000800026c initializePlayerObject + 0x0000000008000280 createPlayerObject + 0x00000000080002c8 applyGravity + 0x00000000080002d0 scalePlayer + 0x00000000080002e0 rotatePlayer + 0x0000000008000310 roundToNearest90Degrees + 0x0000000008000360 updatePlayer + .text.startup 0x0000000008000454 0xdc main.o + 0x0000000008000454 main + .text 0x0000000008000530 0xc0 toolbox.o + 0x0000000008000530 oam_init + 0x0000000008000570 oam_copy + 0x0000000008000590 obj_copy + 0x00000000080005b0 obj_affine_copy + 0x00000000080005e0 obj_affine_identity + .text.__libc_init_array + 0x00000000080005f0 0x50 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-init.o) + 0x00000000080005f0 __libc_init_array + .text.memcpy 0x0000000008000640 0xa8 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memcpy-stub.o) + 0x0000000008000640 memcpy + *(.gnu.linkonce.t.*) + *(.text.*personality*) + *(.gnu.warning) + *(.glue_7t) + .glue_7t 0x00000000080006e8 0x0 linker stubs + *(.glue_7) + .glue_7 0x00000000080006e8 0x0 linker stubs + *(.vfp11_veneer) + .vfp11_veneer 0x00000000080006e8 0x0 linker stubs + 0x00000000080006e8 . = ALIGN (0x4) + 0x00000000080006e8 __text_end = . + +.v4_bx 0x00000000080006e8 0x0 + .v4_bx 0x00000000080006e8 0x0 linker stubs + +.iplt 0x00000000080006e8 0x0 + .iplt 0x00000000080006e8 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o + +.fini 0x00000000080006e8 0xc + *(.fini) + .fini 0x00000000080006e8 0x4 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crti.o + 0x00000000080006e8 _fini + .fini 0x00000000080006ec 0x8 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtn.o + 0x00000000080006f4 . = ALIGN (0x4) + +.rodata 0x00000000080006f4 0x680 + *(.rodata) + .rodata 0x00000000080006f4 0x400 sinlut.o + 0x00000000080006f4 sin_lut + .rodata 0x0000000008000af4 0x280 player.o + 0x0000000008000af4 playerTiles + 0x0000000008000b74 playerPal + *all.rodata*(*) + *(.roda) + *(.rodata.*) + *(.gnu.linkonce.r*) + 0x0000000008000d74 . = ALIGN (0x4) + +.ARM.extab + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x0000000008000d74 __exidx_start = . + +.ARM.exidx + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + 0x0000000008000d74 __exidx_end = . + +.ctors 0x0000000008000d74 0x0 + *crtbegin.o(.ctors) + *(EXCLUDE_FILE(*crtend.o) .ctors) + *(SORT_BY_NAME(.ctors.*)) + *(.ctors) + 0x0000000008000d74 . = ALIGN (0x4) + +.dtors 0x0000000008000d74 0x0 + *crtbegin.o(.dtors) + *(EXCLUDE_FILE(*crtend.o) .dtors) + *(SORT_BY_NAME(.dtors.*)) + *(.dtors) + 0x0000000008000d74 . = ALIGN (0x4) + +.eh_frame 0x0000000008000d74 0x4 + *(.eh_frame) + .eh_frame 0x0000000008000d74 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtbegin.o + .eh_frame 0x0000000008000d74 0x4 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtend.o + 0x0000000008000d78 . = ALIGN (0x4) + +.rel.dyn 0x0000000008000d78 0x0 + .rel.iplt 0x0000000008000d78 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o + +.gcc_except_table + 0x0000000008000d78 0x0 + *(.gcc_except_table) + 0x0000000008000d78 . = ALIGN (0x4) + 0x0000000008000d78 __iwram_lma = . + +.iwram 0x0000000003000000 0x0 load address 0x0000000008000d78 + 0x0000000003000000 __iwram_start__ = ABSOLUTE (.) + *(.iwram .iwram*) + *iwram.*(.text* .data*) + 0x0000000003000000 . = ALIGN (0x4) + 0x0000000003000000 __iwram_end__ = ABSOLUTE (.) + 0x0000000008000d78 __data_lma = (__iwram_lma + SIZEOF (.iwram)) + +.bss 0x0000000003000000 0x424 + 0x0000000003000000 __bss_start = ABSOLUTE (.) + 0x0000000003000000 __bss_start__ = ABSOLUTE (.) + *(.dynbss) + *(.gnu.linkonce.b*) + *(.bss*) + .bss.completed.1 + 0x0000000003000000 0x1 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtbegin.o + *fill* 0x0000000003000001 0x3 + .bss.object.0 0x0000000003000004 0x18 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtbegin.o + .bss 0x000000000300001c 0x400 main.o + 0x000000000300001c obj_buffer + .bss 0x000000000300041c 0x4 toolbox.o + 0x000000000300041c __key_prev + 0x000000000300041e __key_curr + .bss.fake_heap_end + 0x0000000003000420 0x4 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) + 0x0000000003000420 fake_heap_end + *(COMMON) + 0x0000000003000424 . = ALIGN (0x4) + 0x0000000003000424 __bss_end__ = ABSOLUTE (.) + +.data 0x0000000003000424 0x4 load address 0x0000000008000d78 + 0x0000000003000424 __data_start__ = ABSOLUTE (.) + *(.data*) + .data 0x0000000003000424 0x4 main.o + 0x0000000003000424 obj_aff_buffer + *(.gnu.linkonce.d*) + 0x0000000003000428 . = ALIGN (0x4) + 0x0000000008000d7c __preinit_lma = (__data_lma + SIZEOF (.data)) + +.igot.plt 0x0000000003000428 0x0 load address 0x0000000008000d7c + .igot.plt 0x0000000003000428 0x0 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o + +.preinit_array 0x0000000003000428 0x0 load address 0x0000000008000d7c + 0x0000000003000428 __preinit_array_start = ABSOLUTE (.) + *(.preinit_array) + 0x0000000003000428 __preinit_array_end = ABSOLUTE (.) + 0x0000000008000d7c __init_lma = (__preinit_lma + SIZEOF (.preinit_array)) + +.init_array 0x0000000003000428 0x4 load address 0x0000000008000d7c + 0x0000000003000428 __init_array_start = ABSOLUTE (.) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array) + .init_array 0x0000000003000428 0x4 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtbegin.o + 0x000000000300042c __init_array_end = ABSOLUTE (.) + 0x0000000008000d80 __fini_lma = (__init_lma + SIZEOF (.init_array)) + +.fini_array 0x000000000300042c 0x4 load address 0x0000000008000d80 + 0x000000000300042c __fini_array_start = ABSOLUTE (.) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array) + .fini_array 0x000000000300042c 0x4 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtbegin.o + 0x0000000003000430 __fini_array_end = ABSOLUTE (.) + 0x0000000008000d84 __jcr_lma = (__fini_lma + SIZEOF (.fini_array)) + +.jcr 0x0000000003000430 0x0 load address 0x0000000008000d84 + *(.jcr) + 0x0000000003000430 __data_end__ = ABSOLUTE (.) + 0x0000000008000d84 __iwram_overlay_lma = (__jcr_lma + SIZEOF (.jcr)) + 0x0000000003000430 __iwram_overlay_start = . + +.iwram0 0x0000000003000430 0x0 load address 0x0000000008000d84 + *(.iwram0) + 0x0000000003000430 . = ALIGN (0x4) + 0x0000000008000d84 PROVIDE (__load_start_iwram0 = LOADADDR (.iwram0)) + 0x0000000008000d84 PROVIDE (__load_stop_iwram0 = (LOADADDR (.iwram0) + SIZEOF (.iwram0))) + +.iwram1 0x0000000003000430 0x0 + *(.iwram1) + 0x0000000003000430 . = ALIGN (0x4) + [!provide] PROVIDE (__load_start_iwram1 = LOADADDR (.iwram1)) + [!provide] PROVIDE (__load_stop_iwram1 = (LOADADDR (.iwram1) + SIZEOF (.iwram1))) + +.iwram2 0x0000000003000430 0x0 + *(.iwram2) + 0x0000000003000430 . = ALIGN (0x4) + [!provide] PROVIDE (__load_start_iwram2 = LOADADDR (.iwram2)) + [!provide] PROVIDE (__load_stop_iwram2 = (LOADADDR (.iwram2) + SIZEOF (.iwram2))) + +.iwram3 0x0000000003000430 0x0 + *(.iwram3) + 0x0000000003000430 . = ALIGN (0x4) + [!provide] PROVIDE (__load_start_iwram3 = LOADADDR (.iwram3)) + [!provide] PROVIDE (__load_stop_iwram3 = (LOADADDR (.iwram3) + SIZEOF (.iwram3))) + +.iwram4 0x0000000003000430 0x0 + *(.iwram4) + 0x0000000003000430 . = ALIGN (0x4) + [!provide] PROVIDE (__load_start_iwram4 = LOADADDR (.iwram4)) + [!provide] PROVIDE (__load_stop_iwram4 = (LOADADDR (.iwram4) + SIZEOF (.iwram4))) + +.iwram5 0x0000000003000430 0x0 + *(.iwram5) + 0x0000000003000430 . = ALIGN (0x4) + [!provide] PROVIDE (__load_start_iwram5 = LOADADDR (.iwram5)) + [!provide] PROVIDE (__load_stop_iwram5 = (LOADADDR (.iwram5) + SIZEOF (.iwram5))) + +.iwram6 0x0000000003000430 0x0 + *(.iwram6) + 0x0000000003000430 . = ALIGN (0x4) + [!provide] PROVIDE (__load_start_iwram6 = LOADADDR (.iwram6)) + [!provide] PROVIDE (__load_stop_iwram6 = (LOADADDR (.iwram6) + SIZEOF (.iwram6))) + +.iwram7 0x0000000003000430 0x0 + *(.iwram7) + 0x0000000003000430 . = ALIGN (0x4) + [!provide] PROVIDE (__load_start_iwram7 = LOADADDR (.iwram7)) + [!provide] PROVIDE (__load_stop_iwram7 = (LOADADDR (.iwram7) + SIZEOF (.iwram7))) + +.iwram8 0x0000000003000430 0x0 + *(.iwram8) + 0x0000000003000430 . = ALIGN (0x4) + [!provide] PROVIDE (__load_start_iwram8 = LOADADDR (.iwram8)) + [!provide] PROVIDE (__load_stop_iwram8 = (LOADADDR (.iwram8) + SIZEOF (.iwram8))) + +.iwram9 0x0000000003000430 0x0 + *(.iwram9) + 0x0000000003000430 . = ALIGN (0x4) + [!provide] PROVIDE (__load_start_iwram9 = LOADADDR (.iwram9)) + [!provide] PROVIDE (__load_stop_iwram9 = (LOADADDR (.iwram9) + SIZEOF (.iwram9))) + 0x0000000003000430 __iwram_overlay_end = . + 0x0000000008000d84 __ewram_lma = (__iwram_overlay_lma + (__iwram_overlay_end - __iwram_overlay_start)) + 0x0000000003000430 __iheap_start = . + 0x0000000002000000 __ewram_start = ORIGIN (ewram) + +.ewram 0x0000000002000000 0x0 load address 0x0000000008000d84 + *(.ewram*) + 0x0000000002000000 . = ALIGN (0x4) + 0x0000000002000000 __ewram_end = ABSOLUTE (.) + 0x0000000008000d84 __pad_lma = (__ewram_lma + SIZEOF (.ewram)) + +.sbss 0x0000000002000000 0x0 + 0x0000000002000000 __sbss_start__ = ABSOLUTE (.) + *(.sbss*) + 0x0000000002000000 . = ALIGN (0x4) + 0x0000000002000000 __sbss_end__ = ABSOLUTE (.) + 0x0000000002000000 __end__ = ABSOLUTE (.) + 0x0000000002000000 __eheap_start = ABSOLUTE (.) + +.pad 0x0000000002000000 0x8 load address 0x0000000008000d84 + 0x0000000002000000 0x4 LONG 0x52416b64 + 0x0000000002000004 0x4 LONG 0x4d + 0x0000000002000008 . = ALIGN (0x4) + 0x0000000008000d8c __rom_end__ = (__pad_lma + SIZEOF (.pad)) + +.stab + *(.stab) + +.stabstr + *(.stabstr) + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment 0x0000000000000000 0x23 + *(.comment) + .comment 0x0000000000000000 0x23 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtbegin.o + 0x24 (size before relaxing) + .comment 0x0000000000000023 0x24 playerObject.o + .comment 0x0000000000000023 0x24 main.o + .comment 0x0000000000000023 0x24 sinlut.o + .comment 0x0000000000000023 0x24 toolbox.o + .comment 0x0000000000000023 0x24 player.o + .comment 0x0000000000000023 0x24 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-init.o) + .comment 0x0000000000000023 0x24 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memcpy-stub.o) + .comment 0x0000000000000023 0x24 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) + .comment 0x0000000000000023 0x24 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtend.o + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x0000000000000000 0x90 + *(.debug_aranges) + .debug_aranges + 0x0000000000000000 0x20 playerObject.o + .debug_aranges + 0x0000000000000020 0x20 main.o + .debug_aranges + 0x0000000000000040 0x18 sinlut.o + .debug_aranges + 0x0000000000000058 0x20 toolbox.o + .debug_aranges + 0x0000000000000078 0x18 player.o + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x0000000000000000 0x13d6 + *(.debug_info) + .debug_info 0x0000000000000000 0x996 playerObject.o + .debug_info 0x0000000000000996 0x581 main.o + .debug_info 0x0000000000000f17 0x8b sinlut.o + .debug_info 0x0000000000000fa2 0x3b5 toolbox.o + .debug_info 0x0000000000001357 0x7f player.o + +.debug_abbrev 0x0000000000000000 0x70c + *(.debug_abbrev) + .debug_abbrev 0x0000000000000000 0x2b1 playerObject.o + .debug_abbrev 0x00000000000002b1 0x20d main.o + .debug_abbrev 0x00000000000004be 0x61 sinlut.o + .debug_abbrev 0x000000000000051f 0x1a6 toolbox.o + .debug_abbrev 0x00000000000006c5 0x47 player.o + +.debug_line 0x0000000000000000 0x9ee + *(.debug_line) + .debug_line 0x0000000000000000 0x4c7 playerObject.o + .debug_line 0x00000000000004c7 0x1f3 main.o + .debug_line 0x00000000000006ba 0x80 sinlut.o + .debug_line 0x000000000000073a 0x26a toolbox.o + .debug_line 0x00000000000009a4 0x4a player.o + +.debug_frame 0x0000000000000000 0x15c + *(.debug_frame) + .debug_frame 0x0000000000000000 0xa4 playerObject.o + .debug_frame 0x00000000000000a4 0x30 main.o + .debug_frame 0x00000000000000d4 0x88 toolbox.o + +.debug_str 0x0000000000000000 0x476 + *(.debug_str) + .debug_str 0x0000000000000000 0x2f2 playerObject.o + 0x30b (size before relaxing) + .debug_str 0x00000000000002f2 0xf8 main.o + 0x2c3 (size before relaxing) + .debug_str 0x00000000000003ea 0x29 sinlut.o + 0x116 (size before relaxing) + .debug_str 0x0000000000000413 0x39 toolbox.o + 0x1ad (size before relaxing) + .debug_str 0x000000000000044c 0x2a player.o + 0xdc (size before relaxing) + +.debug_loc 0x0000000000000000 0x9c2 + *(.debug_loc) + .debug_loc 0x0000000000000000 0x640 playerObject.o + .debug_loc 0x0000000000000640 0x16 main.o + .debug_loc 0x0000000000000656 0x36c toolbox.o + +.debug_macinfo + *(.debug_macinfo) + +.debug_weaknames + *(.debug_weaknames) + +.debug_funcnames + *(.debug_funcnames) + +.debug_typenames + *(.debug_typenames) + +.debug_varnames + *(.debug_varnames) + +.stack 0x0000000000080000 0x0 + 0x0000000000080000 _stack = . + *(.stack) + +.note.gnu.arm.ident + *(.note.gnu.arm.ident) + +.ARM.attributes + 0x0000000000000000 0x2c + *(.ARM.attributes) + .ARM.attributes + 0x0000000000000000 0x20 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o + .ARM.attributes + 0x0000000000000020 0x1c /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crti.o + .ARM.attributes + 0x000000000000003c 0x2a /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtbegin.o + .ARM.attributes + 0x0000000000000066 0x2a playerObject.o + .ARM.attributes + 0x0000000000000090 0x2a main.o + .ARM.attributes + 0x00000000000000ba 0x30 sinlut.o + .ARM.attributes + 0x00000000000000ea 0x2a toolbox.o + .ARM.attributes + 0x0000000000000114 0x30 player.o + .ARM.attributes + 0x0000000000000144 0x2a /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-init.o) + .ARM.attributes + 0x000000000000016e 0x2a /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memcpy-stub.o) + .ARM.attributes + 0x0000000000000198 0x30 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a(malloc_vars.o) + .ARM.attributes + 0x00000000000001c8 0x30 /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtend.o + .ARM.attributes + 0x00000000000001f8 0x1c /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtn.o + +/DISCARD/ + *(.note.GNU-stack) +LOAD /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/gba_crt0.o +LOAD /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crti.o +LOAD /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtbegin.o +LOAD playerObject.o +LOAD main.o +LOAD sinlut.o +LOAD toolbox.o +LOAD player.o +LOAD /opt/devkitpro/libgba/lib/libmm.a +LOAD /opt/devkitpro/libgba/lib/libgba.a +START GROUP +LOAD /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/libgcc.a +LOAD /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libg.a +LOAD /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libc.a +LOAD /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/libsysbase.a +END GROUP +LOAD /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtend.o +LOAD /opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/10.2.0/thumb/crtn.o +OUTPUT(/home/logan/git/gba-dash/gba-dash.elf elf32-littlearm) +LOAD linker stubs + +.debug_ranges 0x0000000000000000 0x1e8 + .debug_ranges 0x0000000000000000 0x1a8 playerObject.o + .debug_ranges 0x00000000000001a8 0x28 main.o + .debug_ranges 0x00000000000001d0 0x18 toolbox.o diff --git a/build/main.d b/build/main.d index 0d8f8cf..ebf3252 100644 --- a/build/main.d +++ b/build/main.d @@ -1,35 +1,37 @@ -main.o: /home/logan/git/GBA-Dash/source/main.c \ - /home/logan/git/GBA-Dash/source/../include/input.h \ - /home/logan/git/GBA-Dash/source/../include/memmap.h \ - /home/logan/git/GBA-Dash/source/../include/types.h \ - /home/logan/git/GBA-Dash/source/../include/memdef.h \ - /home/logan/git/GBA-Dash/source/../include/toolbox.h \ - /home/logan/git/GBA-Dash/source/../include/input.h \ - /home/logan/git/GBA-Dash/source/../include/memmap.h \ - /home/logan/git/GBA-Dash/source/../include/types.h \ - /home/logan/git/GBA-Dash/source/../include/memdef.h \ - /home/logan/git/GBA-Dash/source/../include/point.h \ - /home/logan/git/GBA-Dash/source/../include/fixed.h \ - /home/logan/git/GBA-Dash/source/../include/velocity.h \ - /home/logan/git/GBA-Dash/source/../include/point.h \ - /home/logan/git/GBA-Dash/source/../include/playerObject.h \ - /home/logan/git/GBA-Dash/source/../include/velocity.h \ - /home/logan/git/GBA-Dash/source/../include/toolbox.h \ - /home/logan/git/GBA-Dash/source/../sprites/player.h -/home/logan/git/GBA-Dash/source/../include/input.h: -/home/logan/git/GBA-Dash/source/../include/memmap.h: -/home/logan/git/GBA-Dash/source/../include/types.h: -/home/logan/git/GBA-Dash/source/../include/memdef.h: -/home/logan/git/GBA-Dash/source/../include/toolbox.h: -/home/logan/git/GBA-Dash/source/../include/input.h: -/home/logan/git/GBA-Dash/source/../include/memmap.h: -/home/logan/git/GBA-Dash/source/../include/types.h: -/home/logan/git/GBA-Dash/source/../include/memdef.h: -/home/logan/git/GBA-Dash/source/../include/point.h: -/home/logan/git/GBA-Dash/source/../include/fixed.h: -/home/logan/git/GBA-Dash/source/../include/velocity.h: -/home/logan/git/GBA-Dash/source/../include/point.h: -/home/logan/git/GBA-Dash/source/../include/playerObject.h: -/home/logan/git/GBA-Dash/source/../include/velocity.h: -/home/logan/git/GBA-Dash/source/../include/toolbox.h: -/home/logan/git/GBA-Dash/source/../sprites/player.h: +main.o: /home/logan/git/gba-dash/source/main.c \ + /home/logan/git/gba-dash/source/../include/input.h \ + /home/logan/git/gba-dash/source/../include/memmap.h \ + /home/logan/git/gba-dash/source/../include/types.h \ + /home/logan/git/gba-dash/source/../include/memdef.h \ + /home/logan/git/gba-dash/source/../include/toolbox.h \ + /home/logan/git/gba-dash/source/../include/input.h \ + /home/logan/git/gba-dash/source/../include/memmap.h \ + /home/logan/git/gba-dash/source/../include/types.h \ + /home/logan/git/gba-dash/source/../include/memdef.h \ + /home/logan/git/gba-dash/source/../include/point.h \ + /home/logan/git/gba-dash/source/../include/fixed.h \ + /home/logan/git/gba-dash/source/../include/velocity.h \ + /home/logan/git/gba-dash/source/../include/point.h \ + /home/logan/git/gba-dash/source/../include/playerObject.h \ + /home/logan/git/gba-dash/source/../include/velocity.h \ + /home/logan/git/gba-dash/source/../include/toolbox.h \ + /home/logan/git/gba-dash/source/../include/sinlut.h \ + /home/logan/git/gba-dash/source/../sprites/player.h +/home/logan/git/gba-dash/source/../include/input.h: +/home/logan/git/gba-dash/source/../include/memmap.h: +/home/logan/git/gba-dash/source/../include/types.h: +/home/logan/git/gba-dash/source/../include/memdef.h: +/home/logan/git/gba-dash/source/../include/toolbox.h: +/home/logan/git/gba-dash/source/../include/input.h: +/home/logan/git/gba-dash/source/../include/memmap.h: +/home/logan/git/gba-dash/source/../include/types.h: +/home/logan/git/gba-dash/source/../include/memdef.h: +/home/logan/git/gba-dash/source/../include/point.h: +/home/logan/git/gba-dash/source/../include/fixed.h: +/home/logan/git/gba-dash/source/../include/velocity.h: +/home/logan/git/gba-dash/source/../include/point.h: +/home/logan/git/gba-dash/source/../include/playerObject.h: +/home/logan/git/gba-dash/source/../include/velocity.h: +/home/logan/git/gba-dash/source/../include/toolbox.h: +/home/logan/git/gba-dash/source/../include/sinlut.h: +/home/logan/git/gba-dash/source/../sprites/player.h: diff --git a/build/main.o b/build/main.o index 387b5267594ad661af1fb3465d107667f487f288..0d22b719cd0ac16636761d608ce88964d7aff7f7 100644 GIT binary patch literal 6520 zcma)AS!`U@8UF7&W8azacpoou#*PD7$k+}EO9ZA_A{q3hG`yM&JX=2l!#ZUjUc(QNf z#P?{U;5Sa5?2VJqt~=HDjy|n)-o1WrXO7k>m-P~z)t_fu?_}RCeN*dBKfU?iZ;9{Q zn@+FYyW?cn>32rE^p4Ou-14u!|09dSDpir3H;KD7B#e5=)AC8%s*?6P8p%L$Ia>3Xt?eY|)LffWRRU z9B6Ufx5Lk<4P8ZgJjQLa>NrJ!0%266kA^vUeOw=})8K36IAFZ(4JhF>gO5JmcZvBPc0btE z1&1KJUV#$gREr9QFR@nFzZ@-rv39WQoub)f4YP2U5L9cNg&85}Rx=BCo6jJJNfAz= zC+j(_9)^nIx}J{ymGe!qW7cGz8p=uVEzf{8t!XyQ3PZ4=oB}Tl5$iA;=7b^IP)>sv zhBoUiHspjM)=G3Em?q%*AW zkHLo@$0w+pf#^Xf8;+A14EBSgh6OU~1gleooy_{sAU7lY0Wt;kKrs3MM`Vsu!1V*a zK!JKMhTQ^IC?#T^LV^u?FdU6&M2+*=JOv{b$LrKsb|}~o}pzn$v#no+s*VYit^N7uwmOW%*Glz;j5k*Zf70Ok4U6+X|X|r zXqtWa!&^@2);d0h*HQ4|gVdz-^t3?NX~3IhL0!Bmu7zd@rfy}w5rU)HtxT)IlhoBI zjZ;fT95FCz^~liG59@A(+OAb~kluSRR&^GsA3Q`)$f#w|XBbgVgm9obG_r z^DCT!$Ek~FBL~ZCu0@+1??=3T=9LqoW%ER9xc?4Z(B#iBQ_qX&p;`@VYcFCdv_goF z3atqN@nhKqC}OOjwLgHHcEq*vD7w}o-NM>)3&&1{wcdx}b`nB8^;rnxq7IvVKZJ@) zup`p90WMsE-DcnYuyaxOn0OCEbFx5^N#ql!-8#$_@!2Gd~};H;f)tOp~>xlIwR1{m%ajd89 zSffbKWi6-dG>}1U|M>_;zw3ch3MOSpj9>SIrxa3SXGT!X8qYw~lUV9)9F?t2V9eaX zy}Vj4)#d6JYS!bb~t-9>2 zeLS0S*>VZ*5tqf?P)gg*f;8ll3)#w4>S#7C?PZ~X6({4)RL#yiTkPTuJT!!J%@E_N zH7JJBY=q24!{{|aYwACjeueVVG6{J z4s&2x(iKB9wI7{G=$aAMu7uQVgyFY6ZiM4Tml-#CHkZT^&Da2;q`SbK}mKN)~49qU}(=RGf>8Ppw$B=Ze`(oL_e{GdKlj(zQy3aF5O;XJ=

R1E{ZkYB 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 diff --git a/build/player.d b/build/player.d index d176045..62dae18 100644 --- a/build/player.d +++ b/build/player.d @@ -1 +1 @@ -player.o: /home/logan/git/GBA-Dash/sprites/player.c +player.o: /home/logan/git/gba-dash/sprites/player.c diff --git a/build/player.o b/build/player.o index 1c7f9185ae5e0bacef6db1d05d6a91125ff6a09f..ec0384c7055b84bff7eac3ae69e8d8edb867b46f 100644 GIT binary patch delta 185 zcmca0d_j1_0VXbC1_lP6b|A5L@+l^Hp#mU_m5CilGO$`5C)D(rxyb^|joW#o1qJYF42K|iu z+*JLX{Pe^;{q)QdeTWG&S)?a3v4|Ofd5Ogt`bnjkIVlVb?#|9u3K}V?W!ae}jzPW( XMX5QdiN&c3rly);n>OEM`OX3W37s{1 delta 201 zcmca0d_j1_0VXbQ1_lP66+l8~@+l^HAz>hkm5CilGO$15uDoj>lp3Um+ zbguS!u9TVsVCkQfX#R3WK{}sDiVhxq_jAp5f%* z%z>f$8Tq-X`Z@XOiFx|znI-yg^~D86nI);k`UN?Om8nH~$qW!iKw=I9gS)e{m4Ze} gYFTz>iDQtjLQ!f?YGQG!f~kon*yPPOS-!IX0A=_)2><{9 diff --git a/build/playerObject.d b/build/playerObject.d new file mode 100644 index 0000000..ee762aa --- /dev/null +++ b/build/playerObject.d @@ -0,0 +1,21 @@ +playerObject.o: /home/logan/git/gba-dash/source/playerObject.c \ + /home/logan/git/gba-dash/source/../include/playerObject.h \ + /home/logan/git/gba-dash/source/../include/types.h \ + /home/logan/git/gba-dash/source/../include/point.h \ + /home/logan/git/gba-dash/source/../include/fixed.h \ + /home/logan/git/gba-dash/source/../include/velocity.h \ + /home/logan/git/gba-dash/source/../include/toolbox.h \ + /home/logan/git/gba-dash/source/../include/memmap.h \ + /home/logan/git/gba-dash/source/../include/memdef.h \ + /home/logan/git/gba-dash/source/../include/input.h \ + /home/logan/git/gba-dash/source/../include/sinlut.h +/home/logan/git/gba-dash/source/../include/playerObject.h: +/home/logan/git/gba-dash/source/../include/types.h: +/home/logan/git/gba-dash/source/../include/point.h: +/home/logan/git/gba-dash/source/../include/fixed.h: +/home/logan/git/gba-dash/source/../include/velocity.h: +/home/logan/git/gba-dash/source/../include/toolbox.h: +/home/logan/git/gba-dash/source/../include/memmap.h: +/home/logan/git/gba-dash/source/../include/memdef.h: +/home/logan/git/gba-dash/source/../include/input.h: +/home/logan/git/gba-dash/source/../include/sinlut.h: diff --git a/build/playerObject.o b/build/playerObject.o new file mode 100644 index 0000000000000000000000000000000000000000..2bb6ec1991e860d2f407856ef2e050bb49d9e1b6 GIT binary patch literal 13508 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 P`7J`nc`xoCzTck#q;5gn literal 0 HcmV?d00001 diff --git a/build/sinlut.d b/build/sinlut.d new file mode 100644 index 0000000..173b596 --- /dev/null +++ b/build/sinlut.d @@ -0,0 +1,5 @@ +sinlut.o: /home/logan/git/gba-dash/source/sinlut.c \ + /home/logan/git/gba-dash/source/../include/sinlut.h \ + /home/logan/git/gba-dash/source/../include/types.h +/home/logan/git/gba-dash/source/../include/sinlut.h: +/home/logan/git/gba-dash/source/../include/types.h: diff --git a/build/sinlut.o b/build/sinlut.o new file mode 100644 index 0000000000000000000000000000000000000000..e95d241aa0ef5894f1ca0b8c29a2adbb2e9cff02 GIT binary patch literal 3044 zcmb7GeQZ3m#GnYOtOKjAZ_5bk|;SxJ|;C1 zU=yx1* z{Kj$9!8^O1&pXGQzjuD&l*OH5R6H$S5vN73>l>~?*Xyo}uA8ogtIOT*&bZ%l|It0| z7NyP7At@uBlP*iQrMlGN+2eWM^Rnk{&j+4co{Fd4+wJZ5#=Wn3f9bvA{k!)|FE4*x zepG&1J}l?tlk$1_efeYgjyxkbjKkL`d=A6+0Ah3_ zR-4j5+&hT>KJqw;d=4Y8N0A>de~DbLAm`VRdp~Mu_f}BP2dL|1)VIge;i;qE%cwhp z`Zr6WG>v||g}(H=yW9=*=_2|yh`xDU)9B%8^m3;ti(jC(W9V_WlXu=k&yS(^oel#y zya_yd1YY*ZSAbn7Hv=5UfaiL)3~bK;;{a0w-sgb(R^WfVG2S@R*wGLg zHx@4}rWSWEN{hD^-do5m>|gLLOw}*ePt>2OchqNUAJ*Qe{h+p~R-gZ5{_Xk1{GR!? z`Kh^yxzV}r&25~kS0}6QRCCq7>gsBt@=;~Ha8KQE|2lhN_NCcFvm0lb+1urb z@~LvH{6x8!0@I#PP7)K%h3)5WXBcZ#nTBgF&7^+i|lZeg-8QTTb`ctI`n z7J`M9g?j#<`A_q|%b(AW<+J(2`Gff#`E_|;p2-`=Ka5G^&&DO=SH@Z6XT~ujWkikV zi~-|GW4E!*2pC;Pr?JXtH`)x3AsT|g8LYvWe=K+bG7og^u<3+t0B3gN>;Qa3;p-TD zo`vsAh%t#+hQT22I>bMSJhI5=Jo5S!`PK6)k!vq--@#x=;2ZH@}o+jvKqb3p~sWedUYdu zK8oH?&9woC1n~G|zCOPR_`Cs}W@;V4>;$lzs{4Rr4tU;LkbrFp7~fbFfcFvLe!cNJ zZUAq-2RyS9)bk50|274Lu#9*IEXz96l<-a}XGP~qxkgr&g{?)#ulFBZnpP8H${SXif5;6Nc=!K{;g5+^?*w><>KS|Uk%u!Z+7 z(&vMJOCrKK!}R$W$Q)~+3JGxBLpb>{>6_9{sn7SVRl8Qfe-G*PHAU>h2+)qn(nwat zCX3}bCP#8uS*9j?3EoipY+^E@p;ST(jih2~G8BvJp;%ZAMAghtD3i*jBU&gJ48@a? zk!(~W4=^Pp6Hkt0_23Y7Z1E8@pKLM{k0rIJpLP$LL70)=XTIa#*S+1}y(PFcxWykx zL|(}5R?~^?dNdKoR?jB2W&5FQB249!2H;6c|2UN%hD1$AhNxw(NB0L}{=mRik{L>+ zb^r3Xrl^^LnM`CzO+Top&{7>EsbtJ=F3Y?wZT`2na5g>?CHH*LG)V8heUJG!M77*- zTz~x8et%jU(bSCQ-?nX|)fMu12so*l8jcfY9asT&+rPcPzmGUrk#R9!;oF&&%tPG6 z%qr$<%<3liu)8-X(DvX-zG3r}a?AdE(*1G=93-uS!@Y913hujS9Kk(p85}V`s3i$U zaI;$mcb_+oNG)2LkLSL4YSEukici>#N6QUnUP|a{7*tO;>5$Fo+KV~~Mpa!U z!Eh!+g6ULq1LT8IEu4)F#*;rv!Nla%a5$~yV6~)G(`quN;b7BXB%ai49x+HTl1d~r zT&*CkNl?}GbUd8ZVgG-OM_^0u46TQb=5MJcPgnast+9CfhWs}>+E6PV&oQ7fZz*+6^V*MT*94aQ2?~`m z*06OHcblgwKdw4`bM0a4o`s+_?l^+bI5aM$c3cg-eFiMq0e?TCj5TZ>y=Ro)V#zPV z?yI)a($Ot_<6G^n1HiS`8A_;*&QVNYL0e&t0_<$xR6uR$pwz~K?$_dO8=wj%t%cUn hhDmF+u?0)oQ6&Aw>|y((-(RcUyRbWJ8-dz({{iIu_0s?V literal 0 HcmV?d00001 diff --git a/build/toolbox.d b/build/toolbox.d index 339b6d5..0b0b703 100644 --- a/build/toolbox.d +++ b/build/toolbox.d @@ -1,11 +1,11 @@ -toolbox.o: /home/logan/git/GBA-Dash/sprites/toolbox.c \ - /home/logan/git/GBA-Dash/sprites/../include/toolbox.h \ - /home/logan/git/GBA-Dash/sprites/../include/types.h \ - /home/logan/git/GBA-Dash/sprites/../include/memmap.h \ - /home/logan/git/GBA-Dash/sprites/../include/memdef.h \ - /home/logan/git/GBA-Dash/sprites/../include/input.h -/home/logan/git/GBA-Dash/sprites/../include/toolbox.h: -/home/logan/git/GBA-Dash/sprites/../include/types.h: -/home/logan/git/GBA-Dash/sprites/../include/memmap.h: -/home/logan/git/GBA-Dash/sprites/../include/memdef.h: -/home/logan/git/GBA-Dash/sprites/../include/input.h: +toolbox.o: /home/logan/git/gba-dash/source/toolbox.c \ + /home/logan/git/gba-dash/source/../include/toolbox.h \ + /home/logan/git/gba-dash/source/../include/types.h \ + /home/logan/git/gba-dash/source/../include/memmap.h \ + /home/logan/git/gba-dash/source/../include/memdef.h \ + /home/logan/git/gba-dash/source/../include/input.h +/home/logan/git/gba-dash/source/../include/toolbox.h: +/home/logan/git/gba-dash/source/../include/types.h: +/home/logan/git/gba-dash/source/../include/memmap.h: +/home/logan/git/gba-dash/source/../include/memdef.h: +/home/logan/git/gba-dash/source/../include/input.h: diff --git a/build/toolbox.o b/build/toolbox.o index 76fa92be04e30a9c1178d634990cb076b32add6c..6ed3dcd0028ac56ae9d805acadfb1a14314c021a 100644 GIT binary patch literal 6096 zcma)AYiwM_6`r|w@7=Z6-mKqt9%lVWNK&$1Cjm@IiW5Vk1PFHG2trEjec4`O?{0SQ z=7DIld62rLtqQ2LDrrnB1T6>^q()Q%RW77|3P>SRTlFPTsjd10Au8G`DpJ$$o1MG9 zHmEStneV*joO5UH%-r3Rcigp8N-5kX#agi-2{GHOEY@ZPYekD_7Ws>Jb&7Q@m&>b7 z(Je&Ri(=LI!STQ*x#d4s{CB?FeSYT^-}vnfBCxTkef-VwU&yUjujF5ouZdmrJFi~5 zcJ+gc2Rg-i|7Fo@cGPyv|7!k?z-GDa>Xi?)k60hPd_{b%JveKY@0=YfKRO%eKT{6G z9^3J+ck+l4yC~K-Toyg{>bu4+l|$@LwX#3miC%8HbSBati9NC7{dZz2V!20j9};hr zUqAKw={L^gcfD*1;Zx7!lm72W#68(J-M5ftq{*yfTFBG7Xc;5U$B5!7D?neU64HWoWO-r@$*ir>JGg2Vo7W zxe$Jc!pPMA2H*?OP{+=U)zPu;Pw328JNf#<(8~tP!csswrljVI6nY*ixz~OP5GH&6 z63olu6BE#`AuoqT*vH7B8QO>JG9ad0`wSr(Qbh;a9=cZ68M5xxI>`*R3X&_Q+)}n98lBWN%s6x)l>r=V`6a5GcA3;H9dIfGCHuWsM zDnYvn+^YhMP>>^9Z1iG~?D=Du--cY`L1@*`RY=kXs?^ic&3Z;5?*%nyvqHAnRPil7 zO_j>p?q`@^Lw+07@f^xo1E&x(bQ#Ovg4_VA2Q8mRcMGVW!cWmX3i>LDPsPwHID8OH zWfGOovrt_CsnPF)`5Ohsy$Ok<>K%~{a&@RFXogmV8f2p#Zo`|_D}uq#Lxl-!6=q;d z@Ydih!QEI$pSA?BEt;em3I=Couws@l+x5Z>x!wbqG(Uz{6>!DwTq78$2Atpi(O5X_(nS>Dk^X5aN}R!!SV;&zq6x*VU}5*1auBB z!$UE3!y-%DD?9MSjnGx=q<2$L9)P|XHB`$qD!wg?d@H)v#g#;YETPStNQidtI4t)n z+26#H?+YFb-izm5Zi)UTonu8*8`bk*QQ69%XF*a76S$4RqIVnK^fLHoKvIkl=x2%} z<8uoGMxatnt-fKXA+yjJA~r{S8YIPjLS=aIq#CYH5509^V;cueflvnF%OIclP!7+5 zskU)&6{iue)5yo1Cg3Q=K7t!*U)9O1CS#p&S<==(Mi~TNskX?^mdgWk$7mKA14%JT;B%t*lM6GWGtiF|5P4A$-8}*I zcYWOX4VbQ5;5e8{^19NVkJfDuH$>4!DU;Q93!t3My6bGe9-2m|AVT z0dAXj8DLq{Y2fo9w@qM>DNaE&HB|V2~rC zI!?su(E&OuYPY7(;(Y^$bXT9wR*{<6V{(5oM>Mq`l;Gs%2uTf8uH zvy+<1Ky*sk^dfnxG?Sp7xB(H;g=4wGVQAuoixhCrgEb zo(blSJ5C{{rl->PD}JNuHwo_)(z9RrZxm{cMn`ej>>3){5?Px{A3dCLw(q+;QbF^J>^0YCdZ{ z;yY)4h1NnYfv}%@nm>@nhAQqJD{e*%Enabq%5c9-M_iP$RhI z!0jNe5#=6W+#~Y`-6;^)jCRh&%OI{3Ly^iQjeZpZ;-OQei zTHWP(*H<^LXJ>jg3h#L2#B}i;HZTo*PGXBje7WQIx)5DNOv_rWzg6R2jp~Ou#(hD{ zIgR{<$atqUeoN!`HS!Xsoj(YPzts3!jephnUyb~sM!%TG`!!B$Jg)H@L=^uN5u4~~ zt$&V)=Xq1hSG4>d5ijuv8o3aZeHv?s$lFH5>$6(x*J->-+qV%x_iFtijfXYnG&)4Y zJE`R}8XwpAq{bf+;rF)2-)sCc5%duebzalx!&ajIG9vU%8oM>F(a0Z>v~STkL`01J zTE17~xW<&m8I4CYo+e`4V_N>U#tRyMsPP4jKhdb(yPC>=;CS_30QvoFV3Y9Nqdul( zezj5_*7B&9$F-c&^21s#Ygt5#CuW>@0_YSfIOTFq`nV&askjpt(L}K*qBz~7sdS<= ziEDWx2b1FCi3Be+EluZ=UdMPLo}El%Y{l1=79vgK@^!69ETYNW%nWW*Z;**XdM6;&ng_Yf{S@wkf__*6)&8l`1=`rI2k}Jp`nfS^$1z43kw!?PZR%kEj?cMo2s=}*Xe zaEafmC?W!#+uV3OyS(+K@CN`&RQ0hgx4tRx?ijG*4;bX$&y-!;Lmr;`58?NqJ82%< zQSjcp4)QV|=LK7{n)e)d#^!vpJ%GddMK>8_vZTi}x_-4duX~|$o9lN03eRv6gWs&{ z1myFweGlZV?_tz83?1vk5mT-21@M^uJV3RdA>Mjd0J^z|o@o$&f#1_mBCI0j4TG4| cvz+2AloQao&5g&q%Io(Q0`bp9x4C}*1I>xgb^rhX delta 2237 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 Q;kIjN!J9%y37wPtzix?o%m4rY literal 211852 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 Sj(OPb{ diff --git a/gba-dash.gba b/gba-dash.gba new file mode 100755 index 0000000000000000000000000000000000000000..f7fb7ef1e0a3005849ca7576593fa64075cccd79 GIT binary patch literal 3468 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 G4F3Ui{#hvi literal 0 HcmV?d00001 diff --git a/include/.playerObject.h.swp b/include/.playerObject.h.swp deleted file mode 100644 index 00a18a7344ccba871db7c144e280730f6f2b2716..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2O>Epm6vwAXKo=+=I3WajZKQUWZuTQBB~sf+n`E1A2}wvcDdl2$?b%&Z$K%@L zG~4oVq1=%;0Yc)yg$q|I!~uj5cRmhCd0zXgx>Ml{&-M!;F19UA4T&-(#O2Wy}{nJ5cspd}+Uxxm$QK_NsQQ_B>f# zm~BkX+i}0@1&*J%yc+uUfJe)nm$)M<{aa3D91H6 zN7ip=2IFf87y^cXAz%m?0)~JgUH+xNNTR>ux5mZ?@c$qHCvJ#=l!N%lDn-oQ_LL^xTI$HItlI;)nsJDmQF%y zl9Gq$~Mi+(3#c?*4o+DnRf2hAb0C#5v3U*uu(+u5yFz5^hCf4 zpi;2I&>t*B_Le6HX(Vd85iT!2mu!Y!&;zYHZg4;5bagm31GL5ciaUTqZG2=XE6TR8 zy1c$LZ!I=Anu~Pm)J{St)ke*W;E1H20LMrqy*~AD3EZ0mpy$V^<-i}1jvW3vbi%$5 zw}HHv0wGC?#ObTJ)edE|!fS+E$2U%xX7bUNRGx|6<`v-uvUoU4IFw}?eL(hmY(NT` zM3?L=vf*$ROIvyld4cZ*oVJALQo4$M`;m&{Z$Z*i!%<~Qj!orYs_;}{g9mDjTI6b$ zm+e3$PcFB8y6nk5IYLCP7pQ7=`gYI*lnS+lAm6?+(Bs>EK*K+qE^{w(F(TOFfhrO; zQ{UcF1XIp1sgl?E!R~qy-qnO>dFP0w^>Fkwb$ww=OA4#&ZF9G{u-e#YwJ)T&8mjcL zW;Qie1)5>>8MD1$jhF1+urf3emq~F?GWqq@PTG)Nsw8srKqC(f_ zLt(Fo8Gcv9+*NJYGth*|N@5_we&* zFO%4|p6(Vrh!a$>Bcdn?_2#;Q$EwQ<$4MeqP{EEW3|XtsDMmeAD{%R?%3!!r`rgnh zS6b>c?6?je(X5c$J3U<^dl<)RPSv}Hn5m0{ix<$*;?Y>MO4LJEv$C`|@i3CCu(I4* zYEvi?EuLb_bLe4;^+_fNA$NI~Vi_e4>SL^IRd=4iJ=NpWzDKpnGf(eWcm0ww;dPOD q_lDnHCeoMV>5y)smHr{NW0FGn9kHD^W@V7KhN=+rCKZ0HO#cD_c1wo< diff --git a/include/playerObject.h b/include/playerObject.h index 9394c4f..7feb894 100644 --- a/include/playerObject.h +++ b/include/playerObject.h @@ -3,6 +3,7 @@ #include "velocity.h" #include "toolbox.h" #include "fixed.h" +#include "sinlut.h" #ifndef PLAYEROBJECT_H #define PLAYEROBJECT_H @@ -14,60 +15,17 @@ typedef struct playerObject { POINT pt; u32 rotation; // Rotation amount OBJ_ATTR *obj; // Attributes of the object for GBA + OBJ_AFFINE *affine; // Affine transformations int pallete_bank; // Index of pallete int tile_id; // Index of player tile int isJumping; } ALIGN(4) playerObject; // Word-align to ensure corruption doesn't occur -static inline void initializePlayerObject (playerObject *object) { - // Initialize the point and velocity of an object - object->vel = createVelocity(0, 0); - object->pt = createPoint(20 << FIX_SHIFT, 100 << FIX_SHIFT); -} +void initializePlayerObject(); +playerObject createPlayerObject(); +void applyGravity(); +void scalePlayer(); +void updatePlayer(); -static inline playerObject createPlayerObject (OBJ_ATTR *obj_buffer, int pallete_bank, int tile_id) { - // Create a player object from data - playerObject temp; - initializePlayerObject(&temp); - temp.rotation = 0; - temp.obj = obj_buffer; - temp.pallete_bank = pallete_bank; - temp.tile_id = tile_id; - temp.isJumping = 0; - obj_set_attr(temp.obj, - ATTR0_SQUARE, // Set attribute 1 to be a square - ATTR1_SIZE_16, // Set size to 16 x 16 - ATTR2_PALBANK(pallete_bank) | tile_id // Which pallete to use, as we are in - // 16-color mode - ); - obj_set_pos(temp.obj, temp.pt.x >> FIX_SHIFT, temp.pt.y >> FIX_SHIFT); - return temp; -} - -static inline void applyGravity (playerObject *object) { - // Apply a gravity constant to a player - object->vel.dy += float_to_fixed(GRAVITY); - // This is a weird convention to have gravity in the positive direction, - // but I don't want to deal with coordinate changing. Too lazy -} - -static inline void updatePlayer (playerObject *object, u32 GROUND_LEVEL) { - // Update the position of a player object - updatePoint(&object->pt, &object->vel); - if (object->pt.y >> FIX_SHIFT >= GROUND_LEVEL) { - // Only apply gravity if player is not touching the ground - object->isJumping = 0; - object->pt.y = GROUND_LEVEL << FIX_SHIFT; // Don't go through ground - object->vel.dy = 0; - } - else { - object->isJumping = 1; - applyGravity(object); - } - // Update the player object's attributes' position - obj_set_pos(object->obj, object->pt.x >> FIX_SHIFT, object->pt.y >> FIX_SHIFT); - // Update the player's second attribute (tile and pallete bank) - object->obj->attr2 = ATTR2_BUILD(object->tile_id, object->pallete_bank, 0); -} #endif // PLAYEROBJECT_H diff --git a/include/sinlut.h b/include/sinlut.h new file mode 100644 index 0000000..126679f --- /dev/null +++ b/include/sinlut.h @@ -0,0 +1,15 @@ +#include "types.h" + +#ifndef SINLUT_H +#define SINLUT_H + +extern const short sin_lut[512]; + +static inline s32 lu_sin(u32 theta) +{ return sin_lut[(theta>>7)&0x1FF]; } + +//! Look-up a cosine value +static inline s32 lu_cos(u32 theta) +{ return sin_lut[((theta>>7)+128)&0x1FF]; } + +#endif //SINLUT_H diff --git a/include/toolbox.h b/include/toolbox.h index 064f0a3..b233374 100644 --- a/include/toolbox.h +++ b/include/toolbox.h @@ -69,6 +69,8 @@ INLINE void obj_set_pos(OBJ_ATTR *obj, int x, int y); INLINE void obj_hide(OBJ_ATTR *oatr); INLINE void obj_unhide(OBJ_ATTR *obj, u16 mode); void obj_copy(OBJ_ATTR *dst, const OBJ_ATTR *src, u32 count); +void obj_affine_copy(OBJ_AFFINE *dst, const OBJ_AFFINE *src, u32 count); +void obj_affine_identity(OBJ_AFFINE *aff); // === INLINES ======================================================== diff --git a/source/.main.c.swp b/source/.toolbox.c.swp similarity index 80% rename from source/.main.c.swp rename to source/.toolbox.c.swp index b3f5f6dde24ac582923b6629df9de7b31c4e3eef..6d0cad38b2a0fee6bdd4bfcb4d79cb095291ad67 100644 GIT binary patch literal 12288 zcmeI2OK2oj6ozktl4&OyMK|s|CW}e>-91B$c3Ox|CW$f+V#b9Jn(C_C-8bo~+teeO zFzC2(sfbHO5Z#I3&b8pe)o9!au3YFw2L=>DQ1Cyusyh#bkl6)pk&n7{?(3ZYoLeEJ z+SQlWuFyicCU89>#Ky<9*2G{;e0N5OzV12!+mE@-xYg^&j1uBaGqBQCai!aKN}dz- zDv?e?S5{)J`)z%*>>j&_9bgr(3Y=VlB<_?Jro@GMt;&;Urk|w89=&n$b?gkQfK|XM zU=^?mSOu&CRspMkRp8Vr5aVzC+wguoi(oywj~%&ZkM?F2unJfOtO8a6tAJI&Dqt0` z3RnfK0#*U5z$sL~@r3wkLWt!YoX7wFhkyV7^RN*2z+JEh?tm}A=iozd13Uqyz$EzX zoDjc)Pr)bPEpQt=1?IsyFbV#i65cnA1k3v7ZCD1bb;JBhJi z05-uZUr{h#$cZ;CrwKz6E!{d*EI0HrNDRumaA53Ge_I2V>yNhY$yN z4O|41;4Byie?hZ9!5`pv@C|q$_+SOFrbgFOSQpl1tAJI&Dqt0`3Rne>QQ!@cb2^>U zvjdl!R3*L|lv+GkYP7gW3k@2Mat_$iQEgbvRc(k|r9xMnElCayvUImhTCl1w3v8|Oyy1m&-&8^|E*=x_e&|12DdF|>l<YIKIZuzC)xd;Tm3qC*9@I?``;S@3BSY9BY6`?|nS*4n+gIXNQz&ePW(MUDK zt^LS2q%@+9jdjW&jmH>|M8laCGcxd0C(SU=+9?zuejY>7Vn_ea2=8`!sxN1aTcr|Q zVv)?yCe5OqpEDkqb%qwK*}#7NNM_59wlX^%S#d^ns3wqaqO}g~>VzVR=nhB1y4Fa08)S*}x@i8&+(4yphiqkBJtg#sU*k;F|}Lh`Gv)wN5@u#Qp}1SW4- zVil*Kq~rE@b?L@9*~4rOQ-==BWor;Lvom=xK=$H5^%*aDbn2;KC7Vqw7VE%m!P~Ms z$A*($LL{|$YPGiHZp%%=5P=r6$3ZB!P27j~a&;*0Z!;VX6}bHb+Dw1~+ue1LBZ|$+*zkA+EQvd(} literal 12288 zcmeI2L2nyH6vrnV0IL*Gkw9>orjoUe9Iw}@AjNScr?FeNC2?aH0U=tgz2kV(_3q*w zr!gdOp%*wH@d5Y<9N@rb00j4*xN?94z0h8O|Lm+CiZBtqMS83Jvi7_;v+w<894SgV z#Wx#o@a2NVa6Ql1nM;B*?0(H#2-r9Y9Dznb3X{&7#=(v1v|0Wv@a$N(8217v^(Y$?yNaJjd9N;7jlscn@rWn_vl?1HV3t9Pk798uWkwEpQdQ z1~_!pU*J%2lx$q1MY&4fdDQjgV(`B z^zZ=u4t@sr!1v%ga2GgW2fPbb!7Jb;@FI8`Bo0pD9#Y9qyb`ov|1i z*(kXqcCm;k!fKg}9xdz(zu=DfVufGgD=WO-c*|~GZPeRp8L!6;jtt`$kgQzUSKe@i^$Jx2nH8 zea{z$l_ayYs?E-x=t`~^ifKPOW@L}M-Y)Lsc@bZ#JGJCi?TWqLXf-cyv@3ia z-|fw{Yy5Ef(ze#qOy$rE(8uv=@Kjo!tOUPZsE!=pRvC$IT~*WZ^J#&2c|!zgJL!z9 zL{}<*`{GVgpPtpmXgryhywNkgKyvlp#zvw+Z@m7l`Z;;anMzaF-(~9&&i_-nN>Z)G zLSmO>vJ<&Dyb(|)Xqm8+;CzKa8|5h znUD3IWt3OdNtx}3o|`l(MJ%=EOkx4$=+|+66D@`Xg8H`9i^rqoIcqOx;_dKmTYrO-;l4Ni&o1*$um% z9M4RMLI_aNe}4#$rz?6hXUlOU;+auQ9yrm=una@L6CTWrdqFfxN}JkQiRBPKH46Pz F_7{Rhyuknf diff --git a/source/main.c b/source/main.c index ae0cf05..d0a60b1 100644 --- a/source/main.c +++ b/source/main.c @@ -13,28 +13,6 @@ OBJ_ATTR obj_buffer[128]; OBJ_AFFINE *obj_aff_buffer= (OBJ_AFFINE*)obj_buffer; // Object affine-buffer -void obj_test() { - int x, y; - x = 10; y = 10; - u32 tid= 0, pb= 0; - OBJ_ATTR *player = &obj_buffer[0]; - - obj_set_attr(player, - ATTR0_SQUARE, - ATTR1_SIZE_16, - ATTR2_PALBANK(pb) | tid - ); - - obj_set_pos(player, x, y); - - while(1) { - vid_vsync(); - key_poll(); - - oam_copy(oam_mem, obj_buffer, 1); - } -} - int main() { memcpy(&tile_mem[4][0], playerTiles, playerTilesLen); memcpy(pal_obj_mem, playerPal, playerPalLen); @@ -43,8 +21,7 @@ int main() { REG_DISPCNT= DCNT_OBJ | DCNT_OBJ_1D; - playerObject player = createPlayerObject(&obj_buffer[0], 0, 0); - + playerObject player = createPlayerObject(&obj_buffer[0], &obj_aff_buffer[0],0, 0); while(1) { vid_vsync(); @@ -54,8 +31,9 @@ int main() { player.vel.dy -= 9 << FIX_SHIFT; } - updatePlayer(&player, 140); - oam_copy(oam_mem, obj_buffer, 1); + updatePlayer(&player, 120); + obj_affine_copy(obj_aff_mem, player.affine, 1); + obj_copy(obj_mem, player.obj, 1); } return 0; diff --git a/source/playerObject.c b/source/playerObject.c new file mode 100644 index 0000000..3d7ec05 --- /dev/null +++ b/source/playerObject.c @@ -0,0 +1,98 @@ +#include "../include/playerObject.h" + +void initializePlayerObject (playerObject *object) { + // Initialize the point and velocity of a player object + object->vel = createVelocity(0, 0); + object->pt = createPoint(20 << FIX_SHIFT, 100 << FIX_SHIFT); +} + +playerObject createPlayerObject (OBJ_ATTR *obj_buffer, OBJ_AFFINE *affine_buffer, int pallete_bank, int tile_id) { + // Create a player object from data + obj_affine_identity(affine_buffer); + playerObject temp; + initializePlayerObject(&temp); + temp.rotation = 0; + temp.obj = obj_buffer; + temp.affine = affine_buffer; + temp.pallete_bank = pallete_bank; + temp.tile_id = tile_id; + temp.isJumping = 0; + obj_set_attr(temp.obj, + ATTR0_SQUARE | ATTR0_AFF | ATTR0_AFF_DBL_BIT, // Set attribute 1 to be a square using affine + ATTR1_SIZE_16 | ATTR1_AFF_ID(0), // Set size to 16 x 16 + ATTR2_PALBANK(pallete_bank) | tile_id // Which pallete to use, as we are in + // 16-color mode + ); + obj_set_pos(temp.obj, temp.pt.x >> FIX_SHIFT, temp.pt.y >> FIX_SHIFT); + return temp; +} + +void applyGravity (playerObject *object) { + // Apply a gravity constant to a player + object->vel.dy += float_to_fixed(GRAVITY); + // This is a weird convention to have gravity in the positive direction, + // but I don't want to deal with coordinate changing. Too lazy +} + +void scalePlayer (playerObject *object, u32 scaleX, u32 scaleY) { + // Scale the player's sprite + // Maximum 0.5 + object->affine->pa = scaleX; object->affine->pb = 0 ; + object->affine->pc = 0 ; object->affine->pd = scaleY; +} + +void rotatePlayer (playerObject *object) { + // Rotate the player's sprite + int sinAlpha = lu_sin(object->rotation >> 4) >> 4; + int cosAlpha = lu_cos(object->rotation >> 4) >> 4; + + object->affine->pa = cosAlpha; object->affine->pb =-sinAlpha; + object->affine->pc = sinAlpha; object->affine->pd = cosAlpha; +} + +u32 roundToNearest90Degrees(u32 rotation) { + // Round a rotation to the nearest 90 degree equivalent of "binary radians" + // (Where 2pi = 0xFFFF and 0pi = 0) + u32 twoPi = 0xFFFF << 4; + u32 pi = 0x8000 << 4; + u32 halfPi = 0x4000 << 4; + u32 quarterPi = 0x2000 << 4; + + + if (rotation > quarterPi && rotation < 3 * quarterPi) { + return halfPi; + } + else if (rotation > 3 * quarterPi && rotation < (pi + quarterPi)) { + return pi; + } + else if (rotation > (pi + quarterPi) && rotation < (pi + 3*quarterPi)) { + return pi + halfPi; + } + else if (rotation < quarterPi || rotation > (twoPi - quarterPi)) { + return 1; + } + return 1; +} + +void updatePlayer (playerObject *object, u32 GROUND_LEVEL) { + // Update the position of a player object + updatePoint(&object->pt, &object->vel); + if (object->pt.y >> FIX_SHIFT >= GROUND_LEVEL) { + // Only apply gravity if player is not touching the ground + object->isJumping = 0; + object->pt.y = GROUND_LEVEL << FIX_SHIFT; // Don't go through ground + object->vel.dy = 0; + object->rotation = roundToNearest90Degrees(object->rotation); + } + else { + object->isJumping = 1; + applyGravity(object); + object->rotation += 100 << 8; + } + rotatePlayer(object); + // Update the player object's attributes' position + obj_set_pos(object->obj, object->pt.x >> FIX_SHIFT, object->pt.y >> FIX_SHIFT); + // Update the player's second attribute (tile and pallete bank) + object->obj->attr2 = ATTR2_BUILD(object->tile_id, object->pallete_bank, 0); +} + diff --git a/source/sinlut.c b/source/sinlut.c new file mode 100644 index 0000000..e380a3e --- /dev/null +++ b/source/sinlut.c @@ -0,0 +1,73 @@ +#include "../include/sinlut.h" +// +// Sine lut; 512 entries, 12 fixeds +// + + +const short sin_lut[512]= +{ + 0x0000, 0x0032, 0x0064, 0x0096, 0x00C8, 0x00FB, 0x012D, 0x015F, + 0x0191, 0x01C3, 0x01F5, 0x0227, 0x0259, 0x028A, 0x02BC, 0x02ED, + 0x031F, 0x0350, 0x0381, 0x03B2, 0x03E3, 0x0413, 0x0444, 0x0474, + 0x04A5, 0x04D5, 0x0504, 0x0534, 0x0563, 0x0593, 0x05C2, 0x05F0, + 0x061F, 0x064D, 0x067B, 0x06A9, 0x06D7, 0x0704, 0x0731, 0x075E, + 0x078A, 0x07B7, 0x07E2, 0x080E, 0x0839, 0x0864, 0x088F, 0x08B9, + 0x08E3, 0x090D, 0x0936, 0x095F, 0x0987, 0x09B0, 0x09D7, 0x09FF, + 0x0A26, 0x0A4D, 0x0A73, 0x0A99, 0x0ABE, 0x0AE3, 0x0B08, 0x0B2C, + 0x0B50, 0x0B73, 0x0B96, 0x0BB8, 0x0BDA, 0x0BFC, 0x0C1D, 0x0C3E, + 0x0C5E, 0x0C7D, 0x0C9D, 0x0CBB, 0x0CD9, 0x0CF7, 0x0D14, 0x0D31, + 0x0D4D, 0x0D69, 0x0D84, 0x0D9F, 0x0DB9, 0x0DD2, 0x0DEB, 0x0E04, + 0x0E1C, 0x0E33, 0x0E4A, 0x0E60, 0x0E76, 0x0E8B, 0x0EA0, 0x0EB4, + 0x0EC8, 0x0EDB, 0x0EED, 0x0EFF, 0x0F10, 0x0F21, 0x0F31, 0x0F40, + 0x0F4F, 0x0F5D, 0x0F6B, 0x0F78, 0x0F85, 0x0F91, 0x0F9C, 0x0FA7, + 0x0FB1, 0x0FBA, 0x0FC3, 0x0FCB, 0x0FD3, 0x0FDA, 0x0FE1, 0x0FE7, + 0x0FEC, 0x0FF0, 0x0FF4, 0x0FF8, 0x0FFB, 0x0FFD, 0x0FFE, 0x0FFF, + 0x0FFF, 0x0FFF, 0x0FFE, 0x0FFD, 0x0FFB, 0x0FF8, 0x0FF4, 0x0FF0, + 0x0FEC, 0x0FE7, 0x0FE1, 0x0FDA, 0x0FD3, 0x0FCB, 0x0FC3, 0x0FBA, + 0x0FB1, 0x0FA7, 0x0F9C, 0x0F91, 0x0F85, 0x0F78, 0x0F6B, 0x0F5D, + 0x0F4F, 0x0F40, 0x0F31, 0x0F21, 0x0F10, 0x0EFF, 0x0EED, 0x0EDB, + 0x0EC8, 0x0EB4, 0x0EA0, 0x0E8B, 0x0E76, 0x0E60, 0x0E4A, 0x0E33, + 0x0E1C, 0x0E04, 0x0DEB, 0x0DD2, 0x0DB9, 0x0D9F, 0x0D84, 0x0D69, + 0x0D4D, 0x0D31, 0x0D14, 0x0CF7, 0x0CD9, 0x0CBB, 0x0C9D, 0x0C7D, + 0x0C5E, 0x0C3E, 0x0C1D, 0x0BFC, 0x0BDA, 0x0BB8, 0x0B96, 0x0B73, + 0x0B50, 0x0B2C, 0x0B08, 0x0AE3, 0x0ABE, 0x0A99, 0x0A73, 0x0A4D, + 0x0A26, 0x09FF, 0x09D7, 0x09B0, 0x0987, 0x095F, 0x0936, 0x090D, + 0x08E3, 0x08B9, 0x088F, 0x0864, 0x0839, 0x080E, 0x07E2, 0x07B7, + 0x078A, 0x075E, 0x0731, 0x0704, 0x06D7, 0x06A9, 0x067B, 0x064D, + 0x061F, 0x05F0, 0x05C2, 0x0593, 0x0563, 0x0534, 0x0504, 0x04D5, + 0x04A5, 0x0474, 0x0444, 0x0413, 0x03E3, 0x03B2, 0x0381, 0x0350, + 0x031F, 0x02ED, 0x02BC, 0x028A, 0x0259, 0x0227, 0x01F5, 0x01C3, + 0x0191, 0x015F, 0x012D, 0x00FB, 0x00C8, 0x0096, 0x0064, 0x0032, + 0x0000, 0xFFCE, 0xFF9C, 0xFF6A, 0xFF38, 0xFF05, 0xFED3, 0xFEA1, + 0xFE6F, 0xFE3D, 0xFE0B, 0xFDD9, 0xFDA7, 0xFD76, 0xFD44, 0xFD13, + 0xFCE1, 0xFCB0, 0xFC7F, 0xFC4E, 0xFC1D, 0xFBED, 0xFBBC, 0xFB8C, + 0xFB5B, 0xFB2B, 0xFAFC, 0xFACC, 0xFA9D, 0xFA6D, 0xFA3E, 0xFA10, + 0xF9E1, 0xF9B3, 0xF985, 0xF957, 0xF929, 0xF8FC, 0xF8CF, 0xF8A2, + 0xF876, 0xF849, 0xF81E, 0xF7F2, 0xF7C7, 0xF79C, 0xF771, 0xF747, + 0xF71D, 0xF6F3, 0xF6CA, 0xF6A1, 0xF679, 0xF650, 0xF629, 0xF601, + 0xF5DA, 0xF5B3, 0xF58D, 0xF567, 0xF542, 0xF51D, 0xF4F8, 0xF4D4, + 0xF4B0, 0xF48D, 0xF46A, 0xF448, 0xF426, 0xF404, 0xF3E3, 0xF3C2, + 0xF3A2, 0xF383, 0xF363, 0xF345, 0xF327, 0xF309, 0xF2EC, 0xF2CF, + 0xF2B3, 0xF297, 0xF27C, 0xF261, 0xF247, 0xF22E, 0xF215, 0xF1FC, + 0xF1E4, 0xF1CD, 0xF1B6, 0xF1A0, 0xF18A, 0xF175, 0xF160, 0xF14C, + 0xF138, 0xF125, 0xF113, 0xF101, 0xF0F0, 0xF0DF, 0xF0CF, 0xF0C0, + 0xF0B1, 0xF0A3, 0xF095, 0xF088, 0xF07B, 0xF06F, 0xF064, 0xF059, + 0xF04F, 0xF046, 0xF03D, 0xF035, 0xF02D, 0xF026, 0xF01F, 0xF019, + 0xF014, 0xF010, 0xF00C, 0xF008, 0xF005, 0xF003, 0xF002, 0xF001, + 0xF001, 0xF001, 0xF002, 0xF003, 0xF005, 0xF008, 0xF00C, 0xF010, + 0xF014, 0xF019, 0xF01F, 0xF026, 0xF02D, 0xF035, 0xF03D, 0xF046, + 0xF04F, 0xF059, 0xF064, 0xF06F, 0xF07B, 0xF088, 0xF095, 0xF0A3, + 0xF0B1, 0xF0C0, 0xF0CF, 0xF0DF, 0xF0F0, 0xF101, 0xF113, 0xF125, + 0xF138, 0xF14C, 0xF160, 0xF175, 0xF18A, 0xF1A0, 0xF1B6, 0xF1CD, + 0xF1E4, 0xF1FC, 0xF215, 0xF22E, 0xF247, 0xF261, 0xF27C, 0xF297, + 0xF2B3, 0xF2CF, 0xF2EC, 0xF309, 0xF327, 0xF345, 0xF363, 0xF383, + 0xF3A2, 0xF3C2, 0xF3E3, 0xF404, 0xF426, 0xF448, 0xF46A, 0xF48D, + 0xF4B0, 0xF4D4, 0xF4F8, 0xF51D, 0xF542, 0xF567, 0xF58D, 0xF5B3, + 0xF5DA, 0xF601, 0xF629, 0xF650, 0xF679, 0xF6A1, 0xF6CA, 0xF6F3, + 0xF71D, 0xF747, 0xF771, 0xF79C, 0xF7C7, 0xF7F2, 0xF81E, 0xF849, + 0xF876, 0xF8A2, 0xF8CF, 0xF8FC, 0xF929, 0xF957, 0xF985, 0xF9B3, + 0xF9E1, 0xFA10, 0xFA3E, 0xFA6D, 0xFA9D, 0xFACC, 0xFAFC, 0xFB2B, + 0xFB5B, 0xFB8C, 0xFBBC, 0xFBED, 0xFC1D, 0xFC4E, 0xFC7F, 0xFCB0, + 0xFCE1, 0xFD13, 0xFD44, 0xFD76, 0xFDA7, 0xFDD9, 0xFE0B, 0xFE3D, + 0xFE6F, 0xFEA1, 0xFED3, 0xFF05, 0xFF38, 0xFF6A, 0xFF9C, 0xFFCE, +}; diff --git a/sprites/toolbox.c b/source/toolbox.c similarity index 74% rename from sprites/toolbox.c rename to source/toolbox.c index e58687c..32042a0 100644 --- a/sprites/toolbox.c +++ b/source/toolbox.c @@ -63,3 +63,20 @@ void obj_copy(OBJ_ATTR *dst, const OBJ_ATTR *src, u32 count) dst[ii].attr2= src[ii].attr2; } } + +void obj_affine_copy (OBJ_AFFINE *dst, const OBJ_AFFINE *src, u32 count) { + // Copy affine attributes from one pointer to another + for (int i = 0; i < count; i++) { + dst->pa = src->pa; dst->pb = src->pb; + dst->pc = src->pc; dst->pd = src->pd; + + dst++; + src++; + } +} + +void obj_affine_identity(OBJ_AFFINE *aff) { + // Make a pointer point to a identity affine matrix + aff->pa = 1 << 8; aff->pb = 0; + aff->pc = 0 ; aff->pd = 1 << 8; +} diff --git a/tools/a.out b/tools/a.out new file mode 100755 index 0000000000000000000000000000000000000000..95fb169f3d9d2c9b7bc1d8330db90b2089706d34 GIT binary patch literal 16872 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 literal 0 HcmV?d00001 diff --git a/tools/lookuptablemaker.c b/tools/lookuptablemaker.c new file mode 100644 index 0000000..f16420a --- /dev/null +++ b/tools/lookuptablemaker.c @@ -0,0 +1,29 @@ +// Example sine lut generator +#include +#include + +#define M_PI 3.1415926535f +#define SIN_SIZE 512 +#define SIN_FP 12 + +int main() +{ + int ii; + FILE *fp= fopen("sinlut.c", "w"); + unsigned short hw; + + fprintf(fp, "//\n// Sine lut; %d entries, %d fixeds\n//\n\n", + SIN_SIZE, SIN_FP); + fprintf(fp, "const short sin_lut[%d]=\n{", SIN_SIZE); + for(ii=0; ii