move handwritten asm to src

This commit is contained in:
theo3 2022-03-16 19:15:58 -07:00
parent f431f7def4
commit 2fe33a05b8
15 changed files with 49 additions and 75 deletions

View File

@ -36,14 +36,14 @@ start_vector:
bx r1 bx r1
_080000F0: _080000F0:
b start_vector b start_vector
sp_irq: .4byte gUnk_03007FA0 sp_irq: .4byte irq_stack_begin
sp_usr: .4byte gUnk_03007F00 sp_usr: .4byte usr_stack_begin
INTR_VECTOR_BUF: .4byte 0x03007FFC INTR_VECTOR_BUF: .4byte 0x03007FFC
intr_main: .4byte ram_IntrMain intr_main: .4byte ram_IntrMain
.ifdef EU .ifdef EU
unk_function: .4byte sub_08000118 unk_function: .4byte fill_rq_stack
.else .else
.ifdef DEMO_JP .ifdef DEMO_JP
unk_function: .4byte sub_08000118 unk_function: .4byte fill_rq_stack
.endif .endif
.endif .endif

View File

@ -5,77 +5,48 @@
.text .text
.ifdef EU .ifndef USA
thumb_func_start sub_08000118 .ifndef DEMO_USA
sub_08000118: @ 0x08000118 .ifndef JP
add r0, pc, #0x28 thumb_func_start fill_rq_stack
fill_rq_stack: // fill iqr and user stack with 'MCZ3'
adr r0, 1f
ldm r0!, {r1, r2, r3} ldm r0!, {r1, r2, r3}
_0800011C: 0:
subs r2, #4 subs r2, #4
str r1, [r2] str r1, [r2]
cmp r2, r3 cmp r2, r3
bgt _0800011C bgt 0b
bx lr bx lr
non_word_aligned_thumb_func_start sub_08000126 // unused
sub_08000126: @ 0x08000126 // returns the maximum values reached by irq stack (r0) and usr stack (r1)
add r0, pc, #0x1C check_stack_threshold:
adr r0, 1f
ldm r0!, {r1, r2, r3} ldm r0!, {r1, r2, r3}
_0800012A: 0:
ldr r0, [r3] ldr r0, [r3]
adds r3, #4 adds r3, #4
cmp r0, r1 cmp r0, r1 // cmp against magic
beq _0800012A beq 0b
subs r2, #0xa0 subs r2, #0xa0
_08000134: 0:
ldr r0, [r2] ldr r0, [r2]
adds r2, #4 adds r2, #4
cmp r0, r1 cmp r0, r1 // cmp against magic
beq _08000134 beq 0b
subs r1, r2, #4 subs r1, r2, #4
subs r0, r3, #4 subs r0, r3, #4
bx lr bx lr
.align 2, 0
_08000144EU:
.byte 0x33, 0x5A, 0x43, 0x4D
.4byte gUnk_03007FA0
.4byte gUnk_03006C14
.else
.ifdef DEMO_JP @ TODO deduplicate
thumb_func_start sub_08000118
sub_08000118: @ 0x08000118
add r0, pc, #0x28
ldm r0!, {r1, r2, r3}
_0800011C:
subs r2, #4
str r1, [r2]
cmp r2, r3
bgt _0800011C
bx lr
non_word_aligned_thumb_func_start sub_08000126
sub_08000126: @ 0x08000126
add r0, pc, #0x1C
ldm r0!, {r1, r2, r3}
_0800012A:
ldr r0, [r3]
adds r3, #4
cmp r0, r1
beq _0800012A
subs r2, #0xa0
_08000134:
ldr r0, [r2]
adds r2, #4
cmp r0, r1
beq _08000134
subs r1, r2, #4
subs r0, r3, #4
bx lr
.align 2, 0 .align 2, 0
_08000144EU: 1:
.byte 0x33, 0x5A, 0x43, 0x4D .byte '3, 'Z, 'C, 'M // r1
.4byte gUnk_03007FA0 .4byte irq_stack_begin // r2
.4byte gUnk_03006C14 .4byte usr_stack_top // r3
.endif
.endif .endif
.endif .endif

View File

@ -255,7 +255,7 @@ SECTIONS {
. = 0x00006A94; ram_0x80b2b58 = .; /* TODO 0x80b2b58 in unusedLabel_080B2AA8*/ . = 0x00006A94; ram_0x80b2b58 = .; /* TODO 0x80b2b58 in unusedLabel_080B2AA8*/
. = 0x00006B14; ram_0x80b2bd8 = .; /* 0x80b2bd8 */ . = 0x00006B14; ram_0x80b2bd8 = .; /* 0x80b2bd8 */
. = 0x00006B24; ram_0x80b2be8 = .; /* 0x80b2be8 */ . = 0x00006B24; ram_0x80b2be8 = .; /* 0x80b2be8 */
. = 0x00006C14; gUnk_03006C14 = .; . = 0x00006C14; usr_stack_top = .;
#else #else
. = 0x00006580; ram_DrawDirect = .; . = 0x00006580; ram_DrawDirect = .;
. = 0x0000659C; ram_sub_080ADA04 = .; . = 0x0000659C; ram_sub_080ADA04 = .;
@ -264,8 +264,8 @@ SECTIONS {
. = 0x0000694C; ram_0x80b2bd8 = .; /* 0x80b2bd8 */ . = 0x0000694C; ram_0x80b2bd8 = .; /* 0x80b2bd8 */
. = 0x0000695C; ram_0x80b2be8 = .; /* 0x80b2be8 */ . = 0x0000695C; ram_0x80b2be8 = .; /* 0x80b2be8 */
#endif #endif
. = 0x00007F00; gUnk_03007F00 = .; . = 0x00007F00; usr_stack_begin = .;
. = 0x00007FA0; gUnk_03007FA0 = .; . = 0x00007FA0; irq_stack_begin = .;
. = 0x00007FFA; gUnk_03007FFA = .; . = 0x00007FFA; gUnk_03007FFA = .;
. = 0x00008000; . = 0x00008000;
} >iwram } >iwram
@ -273,27 +273,27 @@ SECTIONS {
rom : ALIGN(2) { rom : ALIGN(2) {
/* handwritten assembly */ /* handwritten assembly */
asm/crt0.o(.text); asm/src/crt0.o(.text);
asm/veneer.o(.text); asm/src/veneer.o(.text);
data/data_08000360.o(.rodata); data/data_08000360.o(.rodata);
asm/code_08000E44.o(.text); asm/src/code_08000E44.o(.text);
asm/lib/libgcc.o(.text); asm/lib/libgcc.o(.text);
asm/code_08000F10.o(.text); asm/src/code_08000F10.o(.text);
data/data_08000F54.o(.rodata); data/data_08000F54.o(.rodata);
asm/enemy.o(.text); asm/src/enemy.o(.text);
src/droptables.o(.rodata); src/droptables.o(.rodata);
asm/code_08001A7C.o(.text); asm/src/code_08001A7C.o(.text);
data/gfx/sprite_ptrs.o(.rodata); data/gfx/sprite_ptrs.o(.rodata);
asm/code_08003FC4.o(.text); asm/src/code_08003FC4.o(.text);
asm/code_080043E8.o(.text); asm/src/code_080043E8.o(.text);
data/gfx/link_animations.o(.rodata); data/gfx/link_animations.o(.rodata);
asm/code_08007CAC.o(.text); asm/src/code_08007CAC.o(.text);
data/data_08007DF4.o(.rodata); data/data_08007DF4.o(.rodata);
asm/player.o(.text); asm/src/player.o(.text);
/* scripts */ /* scripts */
data/scripts.o(.text); data/scripts.o(.text);
asm/script.o(.text); asm/src/script.o(.text);
asm/projectileUpdate.o(.text); asm/src/projectileUpdate.o(.text);
/* C source compiled with interworking */ /* C source compiled with interworking */
src/interrupts.o(.text); src/interrupts.o(.text);
@ -883,7 +883,7 @@ SECTIONS {
src/eeprom.o(.text); src/eeprom.o(.text);
*libc.a:memcpy.o(.text); *libc.a:memcpy.o(.text);
/* handwritten assembly in arm mode */ /* handwritten assembly in arm mode */
asm/intr.o(.text); asm/src/intr.o(.text);
/* data */ /* data */
data/data_080B2A70.o(.rodata); data/data_080B2A70.o(.rodata);

View File

@ -48,7 +48,10 @@ def parse_map(non_matching_funcs):
if dir == 'src': if dir == 'src':
src += size src += size
elif dir == 'asm': elif dir == 'asm':
asm += size if filepath.find("asm/src/") != -1 or filepath.find("asm/lib/") != -1:
src += size
else:
asm += size
elif dir == 'data': elif dir == 'data':
# scripts # scripts
src_data += size src_data += size