From f04a3496f52a0a83d513e5edb3ca4e082c1d7649 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 12 May 2020 10:35:52 -0400 Subject: Disassemble module 52; use SDK_OVERLAY_*_ID constants some more --- arm9/arm9.lcf | 28 ++++- arm9/asm/unk_02006864.s | 12 +- arm9/asm/unk_02046030.s | 36 +++--- arm9/global.inc | 16 ++- arm9/modules/18/asm/module_18.s | 2 +- arm9/modules/52/asm/module_52.s | 248 ++++++++++++++++++++++++++++++++++++++++ global.inc | 2 +- 7 files changed, 313 insertions(+), 31 deletions(-) create mode 100644 arm9/modules/52/asm/module_52.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 1cf77560..bef940ea 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -2045,10 +2045,21 @@ SECTIONS { SDK_OVERLAY.MODULE_51.BSS_SIZE = SDK_OVERLAY.MODULE_51.BSS_END - SDK_OVERLAY.MODULE_51.BSS_START; } >> MODULE_51 - .MODULE.52: { + .MODULE.52 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_52.START = .; - FILE_299A00.o (.text) /* 0x295A00 */ + module_52.o (.text) + module_52.o (.rodata) + module_52.o (.init) + SDK_OVERLAY.MODULE_52.SINIT_START = .; + module_52.o (.ctor) + module_52.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_52.SINIT_END = .; + . = ALIGN(32); + module_52.o (.sdata) + module_52.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_52.END = .; SDK_OVERLAY.MODULE_52.SIZE = SDK_OVERLAY.MODULE_52.END - SDK_OVERLAY.MODULE_52.START; @@ -2058,7 +2069,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_52.BSS_START = .; - FILE_299A00.o (.bss) + module_52.o (.sbss) + module_52.o (.bss) . = ALIGN(32); SDK_OVERLAY.MODULE_52.BSS_END = .; SDK_OVERLAY.MODULE_52.BSS_SIZE = SDK_OVERLAY.MODULE_52.BSS_END - SDK_OVERLAY.MODULE_52.BSS_START; @@ -3301,7 +3313,15 @@ SECTIONS { WRITEW SDK_OVERLAY_MODULE_51_ID; WRITEW 0; - OVERLAY_TABLE(MODULE_52, 52) + WRITEW SDK_OVERLAY_MODULE_52_ID; + WRITEW SDK_OVERLAY.MODULE_52.START; + WRITEW SDK_OVERLAY.MODULE_52.SIZE; + WRITEW SDK_OVERLAY.MODULE_52.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_52.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_52.SINIT_END; + WRITEW SDK_OVERLAY_MODULE_52_ID; + WRITEW 0; + OVERLAY_TABLE(MODULE_53, 53) OVERLAY_TABLE(MODULE_54, 54) OVERLAY_TABLE(MODULE_55, 55) diff --git a/arm9/asm/unk_02006864.s b/arm9/asm/unk_02006864.s index bcbdc275..10c81b44 100644 --- a/arm9/asm/unk_02006864.s +++ b/arm9/asm/unk_02006864.s @@ -106317,8 +106317,8 @@ FUN_02037334: ; 0x02037334 _02037348: .word 0x0000003F _0203734C: .word 0x021DBAB8 - thumb_func_start FUN_02037350 -FUN_02037350: ; 0x02037350 + thumb_func_start LoadOverlay_MODULE_05 +LoadOverlay_MODULE_05: ; 0x02037350 push {r4, lr} add r4, r0, #0x0 ldr r0, [r4, #0x0] @@ -106333,7 +106333,7 @@ _02037360: beq _0203736C bl ErrorHandling _0203736C: - ldr r0, _0203738C ; =0x00000005 + ldr r0, _0203738C ; =SDK_OVERLAY_MODULE_05_ID mov r1, #0x2 bl HandleLoadOverlay mov r1, #0x0 @@ -106348,7 +106348,7 @@ _0203736C: str r0, [r1, #0x0] pop {r4, pc} .balign 4 -_0203738C: .word 0x00000005 +_0203738C: .word SDK_OVERLAY_MODULE_05_ID _02037390: .word 0x021F64C8 thumb_func_start FUN_02037394 @@ -106575,7 +106575,7 @@ _02037546: ldr r0, [r0, #0x0] cmp r0, #0x0 bne _0203756E - ldr r0, _02037590 ; =0x00000005 + ldr r0, _02037590 ; =SDK_OVERLAY_MODULE_05_ID bl UnloadOverlayByID b _0203756E _02037562: @@ -106604,7 +106604,7 @@ _0203758C: mov r0, #0x0 pop {r4, pc} .balign 4 -_02037590: .word 0x00000005 +_02037590: .word SDK_OVERLAY_MODULE_05_ID thumb_func_start FUN_02037594 FUN_02037594: ; 0x02037594 diff --git a/arm9/asm/unk_02046030.s b/arm9/asm/unk_02046030.s index 5dc4a047..6423479b 100644 --- a/arm9/asm/unk_02046030.s +++ b/arm9/asm/unk_02046030.s @@ -597,10 +597,10 @@ _02046496: thumb_func_start FUN_0204649C FUN_0204649C: ; 0x0204649C - ldr r3, _020464A0 ; =FUN_02037350 + ldr r3, _020464A0 ; =LoadOverlay_MODULE_05 bx r3 .balign 4 -_020464A0: .word FUN_02037350 +_020464A0: .word LoadOverlay_MODULE_05 thumb_func_start FUN_020464A4 FUN_020464A4: ; 0x020464A4 @@ -7225,7 +7225,7 @@ _02049A06: _02049A14: mov r0, #0x1 str r0, [r5, #0x6c] - ldr r0, _02049AC8 ; =0x00000012 + ldr r0, _02049AC8 ; =SDK_OVERLAY_MODULE_18_ID mov r1, #0x2 bl HandleLoadOverlay add r0, r5, #0x0 @@ -7300,7 +7300,7 @@ _02049AB8: .word 0x000003D9 _02049ABC: .word 0x020F46D8 _02049AC0: .word 0x000007F2 _02049AC4: .word 0x000007D5 -_02049AC8: .word 0x00000012 +_02049AC8: .word SDK_OVERLAY_MODULE_18_ID thumb_func_start FUN_02049ACC FUN_02049ACC: ; 0x02049ACC @@ -7386,7 +7386,7 @@ _02049B68: _02049B76: mov r0, #0x0 str r0, [r5, #0x6c] - ldr r0, _02049BE4 ; =0x00000012 + ldr r0, _02049BE4 ; =SDK_OVERLAY_MODULE_18_ID bl UnloadOverlayByID ldr r0, [r4, #0x14] mov r2, #0x1 @@ -7435,7 +7435,7 @@ _02049BDC: add sp, #0x8 pop {r4-r6, pc} nop -_02049BE4: .word 0x00000012 +_02049BE4: .word SDK_OVERLAY_MODULE_18_ID thumb_func_start FUN_02049BE8 FUN_02049BE8: ; 0x02049BE8 @@ -137758,40 +137758,40 @@ FUN_02088854: ; 0x02088854 thumb_func_start FUN_02088858 FUN_02088858: ; 0x02088858 ldr r3, _02088860 ; =HandleLoadOverlay - ldr r0, _02088864 ; =0x00000004 + ldr r0, _02088864 ; =SDK_OVERLAY_MODULE_04_ID mov r1, #0x2 bx r3 .balign 4 _02088860: .word HandleLoadOverlay -_02088864: .word 0x00000004 +_02088864: .word SDK_OVERLAY_MODULE_04_ID thumb_func_start FUN_02088868 FUN_02088868: ; 0x02088868 ldr r3, _02088870 ; =UnloadOverlayByID - ldr r0, _02088874 ; =0x00000004 + ldr r0, _02088874 ; =SDK_OVERLAY_MODULE_04_ID bx r3 nop _02088870: .word UnloadOverlayByID -_02088874: .word 0x00000004 +_02088874: .word SDK_OVERLAY_MODULE_04_ID thumb_func_start FUN_02088878 FUN_02088878: ; 0x02088878 ldr r3, _02088880 ; =HandleLoadOverlay - ldr r0, _02088884 ; =0x0000000D + ldr r0, _02088884 ; =SDK_OVERLAY_MODULE_13_ID mov r1, #0x2 bx r3 .balign 4 _02088880: .word HandleLoadOverlay -_02088884: .word 0x0000000D +_02088884: .word SDK_OVERLAY_MODULE_13_ID thumb_func_start FUN_02088888 FUN_02088888: ; 0x02088888 ldr r3, _02088890 ; =UnloadOverlayByID - ldr r0, _02088894 ; =0x0000000D + ldr r0, _02088894 ; =SDK_OVERLAY_MODULE_13_ID bx r3 nop _02088890: .word UnloadOverlayByID -_02088894: .word 0x0000000D +_02088894: .word SDK_OVERLAY_MODULE_13_ID thumb_func_start FUN_02088898 FUN_02088898: ; 0x02088898 @@ -137811,21 +137811,21 @@ FUN_02088898: ; 0x02088898 thumb_func_start FUN_020888BC FUN_020888BC: ; 0x020888BC ldr r3, _020888C4 ; =HandleLoadOverlay - ldr r0, _020888C8 ; =0x0000004F + ldr r0, _020888C8 ; =SDK_OVERLAY_MODULE_79_ID mov r1, #0x2 bx r3 .balign 4 _020888C4: .word HandleLoadOverlay -_020888C8: .word 0x0000004F +_020888C8: .word SDK_OVERLAY_MODULE_79_ID thumb_func_start FUN_020888CC FUN_020888CC: ; 0x020888CC ldr r3, _020888D4 ; =UnloadOverlayByID - ldr r0, _020888D8 ; =0x0000004F + ldr r0, _020888D8 ; =SDK_OVERLAY_MODULE_79_ID bx r3 nop _020888D4: .word UnloadOverlayByID -_020888D8: .word 0x0000004F +_020888D8: .word SDK_OVERLAY_MODULE_79_ID thumb_func_start FUN_020888DC FUN_020888DC: ; 0x020888DC diff --git a/arm9/global.inc b/arm9/global.inc index 909ea0f7..aa94eac7 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1122,7 +1122,7 @@ .extern FUN_02036D94 .extern FUN_02036DD4 .extern FUN_02037024 -.extern FUN_02037350 +.extern LoadOverlay_MODULE_05 .extern FUN_02037394 .extern FUN_0203739C .extern FUN_020373AC @@ -5571,6 +5571,20 @@ .extern FUN_020254F8 .extern FUN_0202EF70 .extern FUN_02052CF0 +.extern FUN_02015E3C +.extern FUN_020226FC +.extern FUN_020227DC +.extern FUN_020237A0 +.extern FUN_020237CC +.extern FUN_020237FC +.extern FUN_02023840 +.extern FUN_020238A4 +.extern FUN_020239B8 +.extern FUN_02023A14 +.extern FUN_02024F9C +.extern FUN_020250C4 +.extern FUN_020377E0 +.extern FUN_0206007C .extern SDK_OVERLAY_MODULE_00_ID .extern SDK_OVERLAY_MODULE_01_ID .extern SDK_OVERLAY_MODULE_02_ID diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index e73fc56e..a2d31b86 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -26764,7 +26764,7 @@ MOD18_022464D0: ; 0x022464D0 b _0224650E _022464EE: add r0, r5, #0 - bl FUN_02037350 + bl LoadOverlay_MODULE_05 ldr r0, [r4, #0x10] add r0, r0, #1 str r0, [r4, #0x10] diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s new file mode 100644 index 00000000..b40034fb --- /dev/null +++ b/arm9/modules/52/asm/module_52.s @@ -0,0 +1,248 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD52_021D74E0 +MOD52_021D74E0: ; 0x021D74E0 + push {r3, lr} + mov r2, #2 + mov r0, #3 + mov r1, #0x4d + lsl r2, r2, #0x10 + bl FUN_0201681C + bl FUN_02000FA4 + mov r0, #1 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD52_021D74E0 + + thumb_func_start MOD52_021D74F8 +MOD52_021D74F8: ; 0x021D74F8 + push {r3, lr} + bl FUN_0200628C + ldr r1, [r0, #8] + mov r0, #0x4d + bl MOD52_021D769C + mov r0, #1 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD52_021D74F8 + + thumb_func_start MOD52_021D750C +MOD52_021D750C: ; 0x021D750C + push {r3, lr} + mov r0, #0x4d + bl FUN_020168D0 + mov r0, #0 + ldr r1, _021D7524 ; =0x020FD144 + mvn r0, r0 + bl FUN_02000E7C + mov r0, #1 + pop {r3, pc} + nop +_021D7524: .word 0x020FD144 + thumb_func_end MOD52_021D750C + + thumb_func_start MOD52_021D7528 +MOD52_021D7528: ; 0x021D7528 + push {r3, lr} + mov r2, #2 + mov r0, #3 + mov r1, #0x4d + lsl r2, r2, #0x10 + bl FUN_0201681C + bl FUN_02000FA4 + mov r0, #1 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD52_021D7528 + + thumb_func_start MOD52_021D7540 +MOD52_021D7540: ; 0x021D7540 + push {r4, lr} + bl FUN_0200628C + ldr r4, [r0, #8] + mov r0, #0x4d + add r1, r4, #0 + mov r2, #1 + bl MOD52_021D7604 + add r0, r4, #0 + bl FUN_02023918 + bl FUN_02015E3C + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD52_021D7540 + + thumb_func_start MOD52_021D7560 +MOD52_021D7560: ; 0x021D7560 + push {r3, lr} + mov r0, #0x4d + bl FUN_020168D0 + mov r0, #0 + ldr r1, _021D7578 ; =0x020F2B7C + mvn r0, r0 + bl FUN_02000E7C + mov r0, #1 + pop {r3, pc} + nop +_021D7578: .word 0x020F2B7C + thumb_func_end MOD52_021D7560 + + thumb_func_start MOD52_021D757C +MOD52_021D757C: ; 0x021D757C + push {r3, lr} + mov r2, #2 + mov r0, #3 + mov r1, #0x4d + lsl r2, r2, #0x10 + bl FUN_0201681C + bl FUN_02000FA4 + mov r0, #1 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD52_021D757C + + thumb_func_start MOD52_021D7594 +MOD52_021D7594: ; 0x021D7594 + push {r3, r4, r5, lr} + bl FUN_0200628C + ldr r4, [r0, #8] + add r0, r4, #0 + bl FUN_02023788 + add r5, r0, #0 + mov r0, #0x4d + add r1, r4, #0 + bl MOD52_021D7688 + add r0, r4, #0 + mov r1, #0 + bl FUN_02024F9C + add r0, r5, #0 + bl FUN_020237CC + cmp r0, #0 + beq _021D75C8 + add r0, r5, #0 + bl FUN_020237FC + cmp r0, #0 + bne _021D75D8 +_021D75C8: + add r0, r4, #0 + bl FUN_02023794 + bl FUN_020238A4 + add r0, r5, #0 + bl FUN_020237A0 +_021D75D8: + add r0, r4, #0 + bl FUN_02023918 + bl FUN_02015E3C + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD52_021D7594 + + thumb_func_start MOD52_021D75E8 +MOD52_021D75E8: ; 0x021D75E8 + push {r3, lr} + mov r0, #0x4d + bl FUN_020168D0 + mov r0, #0 + ldr r1, _021D7600 ; =0x020F2B8C + mvn r0, r0 + bl FUN_02000E7C + mov r0, #1 + pop {r3, pc} + nop +_021D7600: .word 0x020F2B8C + thumb_func_end MOD52_021D75E8 + + thumb_func_start MOD52_021D7604 +MOD52_021D7604: ; 0x021D7604 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + str r0, [sp] + add r0, r5, #0 + add r6, r2, #0 + bl FUN_02023788 + bl FUN_020237A0 + add r0, r5, #0 + bl FUN_02023794 + bl FUN_02023840 + add r0, r5, #0 + bl FUN_0202881C + add r4, r0, #0 + bl FUN_0201BA60 + add r2, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl FUN_02028788 + add r0, r5, #0 + bl FUN_0206007C + add r0, r5, #0 + bl FUN_020238F4 + add r4, r0, #0 + bl FUN_0201BA60 + add r7, r0, #0 + cmp r6, #0 + beq _021D7656 + add r0, r4, #0 + add r1, r7, #0 + bl FUN_020239B8 +_021D7656: + add r0, r4, #0 + bl FUN_020239CC + add r1, r0, #0 + add r0, r7, #0 + mov r2, #0 + bl FUN_02053678 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl FUN_02023A2C + add r0, r5, #0 + bl FUN_02024ECC + ldr r1, [sp] + ldr r2, _021D7684 ; =0x021D76F8 + mov r3, #0x76 + bl FUN_020250C4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D7684: .word 0x021D76F8 + thumb_func_end MOD52_021D7604 + + thumb_func_start MOD52_021D7688 +MOD52_021D7688: ; 0x021D7688 + push {r3, lr} + add r0, r1, #0 + bl FUN_020226FC + cmp r0, #0 + bne _021D769A + mov r0, #0 + bl OS_ResetSystem +_021D769A: + pop {r3, pc} + thumb_func_end MOD52_021D7688 + + thumb_func_start MOD52_021D769C +MOD52_021D769C: ; 0x021D769C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl FUN_020227DC + add r0, r4, #0 + bl FUN_020377E0 + add r0, r4, #0 + bl FUN_020238F4 + ldr r1, _021D76C4 ; =0x00000BB8 + bl FUN_02023A14 + add r0, r4, #0 + bl FUN_020462AC + bl FUN_0205ECD4 + pop {r4, pc} + .align 2, 0 +_021D76C4: .word 0x00000BB8 + thumb_func_end MOD52_021D769C + + .section .rodata + ; 0x021D76C8 + .incbin "baserom.nds", 0x299BE8, 0x208 diff --git a/global.inc b/global.inc index 7fe1f458..ddf73a30 100644 --- a/global.inc +++ b/global.inc @@ -1120,7 +1120,7 @@ .extern FUN_02036D94 .extern FUN_02036DD4 .extern FUN_02037024 -.extern FUN_02037350 +.extern LoadOverlay_MODULE_05 .extern FUN_02037394 .extern FUN_0203739C .extern FUN_020373AC -- cgit v1.2.3