diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-12 08:11:47 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-12 08:11:47 -0400 |
commit | 7e7d8a7a0f0fc5995fa15318dac017f4b99a665d (patch) | |
tree | 9bd2eb70d648b12edb52271191e4f6a1ec416ddd | |
parent | 70463283f4a5e9269074bd78831db18845284f72 (diff) |
Disassemble module 46
-rw-r--r-- | arm9/arm9.lcf | 28 | ||||
-rw-r--r-- | arm9/modules/46/asm/module_46.s | 399 |
2 files changed, 423 insertions, 4 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index c8182a9d..c20e6105 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -1859,10 +1859,21 @@ SECTIONS { SDK_OVERLAY.MODULE_45.BSS_SIZE = SDK_OVERLAY.MODULE_45.BSS_END - SDK_OVERLAY.MODULE_45.BSS_START; } >> MODULE_45 - .MODULE.46: { + .MODULE.46 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_46.START = .; - FILE_296400.o (.text) /* 0x292400 */ + module_46.o (.text) + module_46.o (.rodata) + module_46.o (.init) + SDK_OVERLAY.MODULE_46.SINIT_START = .; + module_46.o (.ctor) + module_46.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_46.SINIT_END = .; + . = ALIGN(32); + module_46.o (.sdata) + module_46.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_46.END = .; SDK_OVERLAY.MODULE_46.SIZE = SDK_OVERLAY.MODULE_46.END - SDK_OVERLAY.MODULE_46.START; @@ -1872,7 +1883,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_46.BSS_START = .; - FILE_296400.o (.bss) + module_46.o (.sbss) + module_46.o (.bss) . = ALIGN(32); SDK_OVERLAY.MODULE_46.BSS_END = .; SDK_OVERLAY.MODULE_46.BSS_SIZE = SDK_OVERLAY.MODULE_46.BSS_END - SDK_OVERLAY.MODULE_46.BSS_START; @@ -3175,7 +3187,15 @@ SECTIONS { WRITEW SDK_OVERLAY_MODULE_45_ID; WRITEW 0; - OVERLAY_TABLE(MODULE_46, 46) + WRITEW SDK_OVERLAY_MODULE_46_ID; + WRITEW SDK_OVERLAY.MODULE_46.START; + WRITEW SDK_OVERLAY.MODULE_46.SIZE; + WRITEW SDK_OVERLAY.MODULE_46.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_46.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_46.SINIT_END; + WRITEW SDK_OVERLAY_MODULE_46_ID; + WRITEW 0; + OVERLAY_TABLE(MODULE_47, 47) OVERLAY_TABLE(MODULE_48, 48) OVERLAY_TABLE(MODULE_49, 49) diff --git a/arm9/modules/46/asm/module_46.s b/arm9/modules/46/asm/module_46.s new file mode 100644 index 00000000..600e0c5b --- /dev/null +++ b/arm9/modules/46/asm/module_46.s @@ -0,0 +1,399 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD46_02254840 +MOD46_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD46_02254854 + ldr r1, _02254850 ; =MOD46_02254908 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD46_02254854 +_02254850: .word MOD46_02254908 + thumb_func_end MOD46_02254840 + + thumb_func_start MOD46_02254854 +MOD46_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x10 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254892 + ldr r3, [sp] + add r1, r6, #0 + add r2, r7, #0 + bl MOD46_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD46_022548D4 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _0225488C + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488C: + add r0, r4, #0 + bl FUN_02016A18 +_02254892: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254898: .word MOD46_022548D4 + thumb_func_end MOD46_02254854 + + thumb_func_start MOD46_0225489C +MOD46_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #8 + add r1, r5, #4 + bl MOD46_022549AC + cmp r0, #0 + beq _022548BC + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + str r4, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, pc} +_022548BC: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD46_0225489C + + thumb_func_start MOD46_022548C0 +MOD46_022548C0: ; 0x022548C0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl MOD46_022549DC + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD46_022548C0 + + thumb_func_start MOD46_022548D4 +MOD46_022548D4: ; 0x022548D4 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhs _02254900 + lsl r2, r1, #2 + ldr r1, _02254904 ; =0x02254AF4 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254900 + add r0, r4, #0 + bl MOD46_022548C0 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0xc] + bl MOD20_022529A0 +_02254900: + pop {r3, r4, r5, pc} + nop +_02254904: .word 0x02254AF4 + thumb_func_end MOD46_022548D4 + + thumb_func_start MOD46_02254908 +MOD46_02254908: ; 0x02254908 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD46_02254908 + + thumb_func_start MOD46_02254910 +MOD46_02254910: ; 0x02254910 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254918 + b _0225491A +_02254918: + mov r1, #2 +_0225491A: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD46_02254910 + + thumb_func_start MOD46_02254924 +MOD46_02254924: ; 0x02254924 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254934 + cmp r0, #1 + beq _02254944 + b _0225495E +_02254934: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD46_022549E8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _0225495E +_02254944: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD46_02254A0C + cmp r0, #0 + beq _0225495E + ldr r0, [r4, #0xc] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD46_02254910 +_0225495E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD46_02254924 + + thumb_func_start MOD46_02254964 +MOD46_02254964: ; 0x02254964 + push {r3, lr} + ldrb r1, [r0, #2] + cmp r1, #0 + beq _02254972 + mov r1, #2 + bl MOD46_02254910 +_02254972: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD46_02254964 + + thumb_func_start MOD46_02254978 +MOD46_02254978: ; 0x02254978 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254988 + cmp r0, #1 + beq _02254998 + b _022549A6 +_02254988: + ldr r0, [r4, #8] + mov r1, #1 + bl MOD46_022549E8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549A6 +_02254998: + ldr r0, [r4, #8] + bl MOD46_02254A18 + cmp r0, #0 + beq _022549A6 + mov r0, #1 + pop {r4, pc} +_022549A6: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD46_02254978 + + thumb_func_start MOD46_022549AC +MOD46_022549AC: ; 0x022549AC + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x30 + bl FUN_02016998 + add r4, r0, #0 + beq _022549D8 + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + str r6, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + cmp r0, #0 + beq _022549D8 + str r4, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_022549D8: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD46_022549AC + + thumb_func_start MOD46_022549DC +MOD46_022549DC: ; 0x022549DC + push {r3, lr} + cmp r0, #0 + beq _022549E6 + bl FUN_02016A18 +_022549E6: + pop {r3, pc} + thumb_func_end MOD46_022549DC + + thumb_func_start MOD46_022549E8 +MOD46_022549E8: ; 0x022549E8 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254A08 ; =0x02254B1C + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254A08: .word 0x02254B1C + thumb_func_end MOD46_022549E8 + + thumb_func_start MOD46_02254A0C +MOD46_02254A0C: ; 0x02254A0C + ldr r3, _02254A14 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254A14: .word MOD20_02253794 + thumb_func_end MOD46_02254A0C + + thumb_func_start MOD46_02254A18 +MOD46_02254A18: ; 0x02254A18 + ldr r3, _02254A20 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254A20: .word MOD20_022537B8 + thumb_func_end MOD46_02254A18 + + thumb_func_start MOD46_02254A24 +MOD46_02254A24: ; 0x02254A24 + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD46_02254A24 + + thumb_func_start MOD46_02254A38 +MOD46_02254A38: ; 0x02254A38 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254ACC ; =0x02254B00 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #8 + str r1, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r3, #6 + bl FUN_0200687C + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + str r2, [sp, #0xc] + ldr r0, [r5, #4] + mov r1, #6 + add r3, r2, #0 + bl FUN_02018540 + mov r0, #0x20 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #0xc + mov r1, #9 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + ldr r0, [r5, #4] + mov r1, #0x1a + mov r2, #6 + bl MOD20_02253AA4 + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254AD0 ; =0x04001000 + ldr r0, _02254AD4 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #4 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r4, #0 + bl MOD46_02254A24 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02254ACC: .word 0x02254B00 +_02254AD0: .word 0x04001000 +_02254AD4: .word 0xFFFFE0FF + thumb_func_end MOD46_02254A38 + + thumb_func_start MOD46_02254AD8 +MOD46_02254AD8: ; 0x02254AD8 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD46_02254A24 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD46_02254AD8 + + .section .rodata + ; 0x02254AF4 + .incbin "baserom.nds", 0x2966b4, 0x4c + + .section .sinit + .word MOD46_02254840 |