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
_080000F0:
b start_vector
sp_irq: .4byte gUnk_03007FA0
sp_usr: .4byte gUnk_03007F00
sp_irq: .4byte irq_stack_begin
sp_usr: .4byte usr_stack_begin
INTR_VECTOR_BUF: .4byte 0x03007FFC
intr_main: .4byte ram_IntrMain
.ifdef EU
unk_function: .4byte sub_08000118
unk_function: .4byte fill_rq_stack
.else
.ifdef DEMO_JP
unk_function: .4byte sub_08000118
unk_function: .4byte fill_rq_stack
.endif
.endif

View File

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

View File

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

View File

@ -48,7 +48,10 @@ def parse_map(non_matching_funcs):
if dir == 'src':
src += size
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':
# scripts
src_data += size