diff options
-rw-r--r-- | arm9/arm9.lcf | 252 | ||||
-rw-r--r-- | arm9/global.inc | 23 | ||||
-rw-r--r-- | arm9/modules/42/asm/module_42.s | 1161 | ||||
-rw-r--r-- | arm9/modules/43/asm/module_43.s | 1140 | ||||
-rw-r--r-- | arm9/modules/44/asm/module_44.s | 580 | ||||
-rw-r--r-- | arm9/modules/45/asm/module_45.s | 1061 | ||||
-rw-r--r-- | arm9/modules/46/asm/module_46.s | 399 | ||||
-rw-r--r-- | arm9/modules/47/asm/module_47.s | 1497 | ||||
-rw-r--r-- | arm9/modules/48/asm/module_48.s | 960 | ||||
-rw-r--r-- | arm9/modules/49/asm/module_49.s | 638 | ||||
-rw-r--r-- | arm9/modules/50/asm/module_50.s | 409 |
11 files changed, 8084 insertions, 36 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 8883447f..2755047d 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -1735,10 +1735,21 @@ SECTIONS { SDK_OVERLAY.MODULE_41.BSS_SIZE = SDK_OVERLAY.MODULE_41.BSS_END - SDK_OVERLAY.MODULE_41.BSS_START; } >> MODULE_41 - .MODULE.42: { + .MODULE.42 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_42.START = .; - FILE_294000.o (.text) /* 0x290000 */ + module_42.o (.text) + module_42.o (.rodata) + module_42.o (.init) + // SDK_OVERLAY.MODULE_42.SINIT_START = .; + module_42.o (.ctor) + module_42.o (.sinit) + // WRITEW 0; + // SDK_OVERLAY.MODULE_42.SINIT_END = .; + . = ALIGN(32); + module_42.o (.sdata) + module_42.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_42.END = .; SDK_OVERLAY.MODULE_42.SIZE = SDK_OVERLAY.MODULE_42.END - SDK_OVERLAY.MODULE_42.START; @@ -1748,16 +1759,28 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_42.BSS_START = .; - FILE_294000.o (.bss) + module_42.o (.sbss) + module_42.o (.bss) . = ALIGN(32); SDK_OVERLAY.MODULE_42.BSS_END = .; SDK_OVERLAY.MODULE_42.BSS_SIZE = SDK_OVERLAY.MODULE_42.BSS_END - SDK_OVERLAY.MODULE_42.BSS_START; } >> MODULE_42 - .MODULE.43: { + .MODULE.43 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_43.START = .; - FILE_294A00.o (.text) /* 0x290A00 */ + module_43.o (.text) + module_43.o (.rodata) + module_43.o (.init) + // SDK_OVERLAY.MODULE_43.SINIT_START = .; + module_43.o (.ctor) + module_43.o (.sinit) + // WRITEW 0; + // SDK_OVERLAY.MODULE_43.SINIT_END = .; + . = ALIGN(32); + module_43.o (.sdata) + module_43.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_43.END = .; SDK_OVERLAY.MODULE_43.SIZE = SDK_OVERLAY.MODULE_43.END - SDK_OVERLAY.MODULE_43.START; @@ -1767,16 +1790,28 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_43.BSS_START = .; - FILE_294A00.o (.bss) + module_43.o (.sbss) + module_43.o (.bss) . = ALIGN(32); SDK_OVERLAY.MODULE_43.BSS_END = .; SDK_OVERLAY.MODULE_43.BSS_SIZE = SDK_OVERLAY.MODULE_43.BSS_END - SDK_OVERLAY.MODULE_43.BSS_START; } >> MODULE_43 - .MODULE.44: { + .MODULE.44 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_44.START = .; - FILE_295400.o (.text) /* 0x291400 */ + module_44.o (.text) + module_44.o (.rodata) + module_44.o (.init) + // SDK_OVERLAY.MODULE_44.SINIT_START = .; + module_44.o (.ctor) + module_44.o (.sinit) + // WRITEW 0; + // SDK_OVERLAY.MODULE_44.SINIT_END = .; + . = ALIGN(32); + module_44.o (.sdata) + module_44.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_44.END = .; SDK_OVERLAY.MODULE_44.SIZE = SDK_OVERLAY.MODULE_44.END - SDK_OVERLAY.MODULE_44.START; @@ -1786,16 +1821,28 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_44.BSS_START = .; - FILE_295400.o (.bss) + module_44.o (.sbss) + module_44.o (.bss) . = ALIGN(32); SDK_OVERLAY.MODULE_44.BSS_END = .; SDK_OVERLAY.MODULE_44.BSS_SIZE = SDK_OVERLAY.MODULE_44.BSS_END - SDK_OVERLAY.MODULE_44.BSS_START; } >> MODULE_44 - .MODULE.45: { + .MODULE.45 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_45.START = .; - FILE_295A00.o (.text) /* 0x291A00 */ + module_45.o (.text) + module_45.o (.rodata) + module_45.o (.init) + SDK_OVERLAY.MODULE_45.SINIT_START = .; + module_45.o (.ctor) + module_45.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_45.SINIT_END = .; + . = ALIGN(32); + module_45.o (.sdata) + module_45.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_45.END = .; SDK_OVERLAY.MODULE_45.SIZE = SDK_OVERLAY.MODULE_45.END - SDK_OVERLAY.MODULE_45.START; @@ -1805,16 +1852,28 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_45.BSS_START = .; - FILE_295A00.o (.bss) + module_45.o (.sbss) + module_45.o (.bss) . = ALIGN(32); SDK_OVERLAY.MODULE_45.BSS_END = .; 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; @@ -1824,16 +1883,28 @@ 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; } >> MODULE_46 - .MODULE.47: { + .MODULE.47 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_47.START = .; - FILE_296800.o (.text) /* 0x292800 */ + module_47.o (.text) + module_47.o (.rodata) + module_47.o (.init) + // SDK_OVERLAY.MODULE_47.SINIT_START = .; + module_47.o (.ctor) + module_47.o (.sinit) + // WRITEW 0; + // SDK_OVERLAY.MODULE_47.SINIT_END = .; + . = ALIGN(32); + module_47.o (.sdata) + module_47.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_47.END = .; SDK_OVERLAY.MODULE_47.SIZE = SDK_OVERLAY.MODULE_47.END - SDK_OVERLAY.MODULE_47.START; @@ -1843,16 +1914,28 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_47.BSS_START = .; - FILE_296800.o (.bss) + module_47.o (.sbss) + module_47.o (.bss) . = ALIGN(32); SDK_OVERLAY.MODULE_47.BSS_END = .; SDK_OVERLAY.MODULE_47.BSS_SIZE = SDK_OVERLAY.MODULE_47.BSS_END - SDK_OVERLAY.MODULE_47.BSS_START; } >> MODULE_47 - .MODULE.48: { + .MODULE.48 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_48.START = .; - FILE_297600.o (.text) /* 0x293600 */ + module_48.o (.text) + module_48.o (.rodata) + module_48.o (.init) + SDK_OVERLAY.MODULE_48.SINIT_START = .; + module_48.o (.ctor) + module_48.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_48.SINIT_END = .; + . = ALIGN(32); + module_48.o (.sdata) + module_48.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_48.END = .; SDK_OVERLAY.MODULE_48.SIZE = SDK_OVERLAY.MODULE_48.END - SDK_OVERLAY.MODULE_48.START; @@ -1862,16 +1945,28 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_48.BSS_START = .; - FILE_297600.o (.bss) + module_48.o (.sbss) + module_48.o (.bss) . = ALIGN(32); SDK_OVERLAY.MODULE_48.BSS_END = .; SDK_OVERLAY.MODULE_48.BSS_SIZE = SDK_OVERLAY.MODULE_48.BSS_END - SDK_OVERLAY.MODULE_48.BSS_START; } >> MODULE_48 - .MODULE.49: { + .MODULE.49 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_49.START = .; - FILE_298000.o (.text) /* 0x294000 */ + module_49.o (.text) + module_49.o (.rodata) + module_49.o (.init) + SDK_OVERLAY.MODULE_49.SINIT_START = .; + module_49.o (.ctor) + module_49.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_49.SINIT_END = .; + . = ALIGN(32); + module_49.o (.sdata) + module_49.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_49.END = .; SDK_OVERLAY.MODULE_49.SIZE = SDK_OVERLAY.MODULE_49.END - SDK_OVERLAY.MODULE_49.START; @@ -1881,16 +1976,28 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_49.BSS_START = .; - FILE_298000.o (.bss) + module_49.o (.sbss) + module_49.o (.bss) . = ALIGN(32); SDK_OVERLAY.MODULE_49.BSS_END = .; SDK_OVERLAY.MODULE_49.BSS_SIZE = SDK_OVERLAY.MODULE_49.BSS_END - SDK_OVERLAY.MODULE_49.BSS_START; } >> MODULE_49 - .MODULE.50: { + .MODULE.50 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_50.START = .; - FILE_298600.o (.text) /* 0x294600 */ + module_50.o (.text) + module_50.o (.rodata) + module_50.o (.init) + SDK_OVERLAY.MODULE_50.SINIT_START = .; + module_50.o (.ctor) + module_50.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_50.SINIT_END = .; + . = ALIGN(32); + module_50.o (.sdata) + module_50.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_50.END = .; SDK_OVERLAY.MODULE_50.SIZE = SDK_OVERLAY.MODULE_50.END - SDK_OVERLAY.MODULE_50.START; @@ -1900,7 +2007,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_50.BSS_START = .; - FILE_298600.o (.bss) + module_50.o (.sbss) + module_50.o (.bss) . = ALIGN(32); SDK_OVERLAY.MODULE_50.BSS_END = .; SDK_OVERLAY.MODULE_50.BSS_SIZE = SDK_OVERLAY.MODULE_50.BSS_END - SDK_OVERLAY.MODULE_50.BSS_START; @@ -3091,15 +3199,87 @@ SECTIONS { WRITEW SDK_OVERLAY_MODULE_41_ID; WRITEW 0; - OVERLAY_TABLE(MODULE_42, 42) - OVERLAY_TABLE(MODULE_43, 43) - OVERLAY_TABLE(MODULE_44, 44) - OVERLAY_TABLE(MODULE_45, 45) - OVERLAY_TABLE(MODULE_46, 46) - OVERLAY_TABLE(MODULE_47, 47) - OVERLAY_TABLE(MODULE_48, 48) - OVERLAY_TABLE(MODULE_49, 49) - OVERLAY_TABLE(MODULE_50, 50) + WRITEW SDK_OVERLAY_MODULE_42_ID; + WRITEW SDK_OVERLAY.MODULE_42.START; + WRITEW SDK_OVERLAY.MODULE_42.SIZE; + WRITEW SDK_OVERLAY.MODULE_42.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_42.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_42.SINIT_END; + WRITEW SDK_OVERLAY_MODULE_42_ID; + WRITEW 0; + + WRITEW SDK_OVERLAY_MODULE_43_ID; + WRITEW SDK_OVERLAY.MODULE_43.START; + WRITEW SDK_OVERLAY.MODULE_43.SIZE; + WRITEW SDK_OVERLAY.MODULE_43.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_43.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_43.SINIT_END; + WRITEW SDK_OVERLAY_MODULE_43_ID; + WRITEW 0; + + WRITEW SDK_OVERLAY_MODULE_44_ID; + WRITEW SDK_OVERLAY.MODULE_44.START; + WRITEW SDK_OVERLAY.MODULE_44.SIZE; + WRITEW SDK_OVERLAY.MODULE_44.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_44.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_44.SINIT_END; + WRITEW SDK_OVERLAY_MODULE_44_ID; + WRITEW 0; + + WRITEW SDK_OVERLAY_MODULE_45_ID; + WRITEW SDK_OVERLAY.MODULE_45.START; + WRITEW SDK_OVERLAY.MODULE_45.SIZE; + WRITEW SDK_OVERLAY.MODULE_45.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_45.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_45.SINIT_END; + WRITEW SDK_OVERLAY_MODULE_45_ID; + WRITEW 0; + + 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; + + WRITEW SDK_OVERLAY_MODULE_47_ID; + WRITEW SDK_OVERLAY.MODULE_47.START; + WRITEW SDK_OVERLAY.MODULE_47.SIZE; + WRITEW SDK_OVERLAY.MODULE_47.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_47.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_47.SINIT_END; + WRITEW SDK_OVERLAY_MODULE_47_ID; + WRITEW 0; + + WRITEW SDK_OVERLAY_MODULE_48_ID; + WRITEW SDK_OVERLAY.MODULE_48.START; + WRITEW SDK_OVERLAY.MODULE_48.SIZE; + WRITEW SDK_OVERLAY.MODULE_48.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_48.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_48.SINIT_END; + WRITEW SDK_OVERLAY_MODULE_48_ID; + WRITEW 0; + + WRITEW SDK_OVERLAY_MODULE_49_ID; + WRITEW SDK_OVERLAY.MODULE_49.START; + WRITEW SDK_OVERLAY.MODULE_49.SIZE; + WRITEW SDK_OVERLAY.MODULE_49.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_49.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_49.SINIT_END; + WRITEW SDK_OVERLAY_MODULE_49_ID; + WRITEW 0; + + WRITEW SDK_OVERLAY_MODULE_50_ID; + WRITEW SDK_OVERLAY.MODULE_50.START; + WRITEW SDK_OVERLAY.MODULE_50.SIZE; + WRITEW SDK_OVERLAY.MODULE_50.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_50.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_50.SINIT_END; + WRITEW SDK_OVERLAY_MODULE_50_ID; + WRITEW 0; + OVERLAY_TABLE(MODULE_51, 51) OVERLAY_TABLE(MODULE_52, 52) OVERLAY_TABLE(MODULE_53, 53) diff --git a/arm9/global.inc b/arm9/global.inc index 5cee7a46..6f76948a 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2662,6 +2662,29 @@ .extern FUN_0204BF94
.extern FUN_0204BF9C
.extern FUN_0204BFB0
+.extern FUN_0204C080
+.extern FUN_0204C0A4
+.extern FUN_020252B8
+.extern FUN_0204BF58
+.extern FUN_0204BFF0
+.extern FUN_0204C02C
+.extern FUN_0204C064
+.extern FUN_0202F0DC
+.extern FUN_02032BD0
+.extern FUN_02032C0C
+.extern FUN_02032C28
+.extern FUN_02034984
+.extern FUN_0204C158
+.extern FUN_0204C174
+.extern MOD06_022457A8
+.extern MOD06_022457CC
+.extern MOD06_022457F8
+.extern MOD06_02245824
+.extern MOD06_0224582C
+.extern MOD20_02253F6C
+.extern MOD20_02254420
+.extern MOD20_02254460
+.extern MOD20_02254488
.extern MOD20_022542C0
.extern MOD05_021EC464
.extern MOD05_021ED9B4
diff --git a/arm9/modules/42/asm/module_42.s b/arm9/modules/42/asm/module_42.s new file mode 100644 index 00000000..6ec9b916 --- /dev/null +++ b/arm9/modules/42/asm/module_42.s @@ -0,0 +1,1161 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD42_02254840 +MOD42_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD42_02254854 + ldr r1, _02254850 ; =MOD42_02254A38 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD42_02254854 +_02254850: .word MOD42_02254A38 + thumb_func_end MOD42_02254840 + + thumb_func_start MOD42_02254854 +MOD42_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x78 + 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 MOD42_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD42_02254A04 + 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 MOD42_02254A04 + thumb_func_end MOD42_02254854 + + thumb_func_start MOD42_0225489C +MOD42_0225489C: ; 0x0225489C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r0, r1, #0 + str r1, [sp] + str r2, [sp, #4] + bl MOD20_02252C3C + str r0, [r5, #0x60] + add r0, r5, #0 + str r0, [sp, #8] + add r0, #0x11 + add r7, r5, #0 + mov r6, #0 + add r4, r5, #0 + str r0, [sp, #8] + add r7, #0x10 +_022548BE: + mov r0, #1 + strb r0, [r4, #0x13] + strb r6, [r4, #0x12] + ldr r0, [r5, #0x60] + ldr r3, [sp, #8] + add r1, r6, #0 + add r2, r7, #0 + bl FUN_0204C0A4 + ldrb r0, [r4, #0x10] + add r7, r7, #4 + add r0, #0x10 + strb r0, [r4, #0x10] + ldrb r0, [r4, #0x11] + add r0, #0x10 + strb r0, [r4, #0x11] + mov r0, #0 + strb r0, [r4, #0x13] + add r0, r5, r6 + add r0, #0x70 + strb r6, [r0] + ldr r0, [sp, #8] + add r6, r6, #1 + add r0, r0, #4 + add r4, r4, #4 + str r0, [sp, #8] + cmp r6, #6 + blt _022548BE + mov r0, #0 + str r0, [r5, #0x28] + str r0, [r5, #0x2c] + str r0, [r5, #0xc] + ldr r0, [sp] + bl MOD20_02252C40 + bl FUN_020462AC + add r7, r0, #0 + mov r4, #0 + add r6, r5, #0 +_0225490E: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_0205F524 + str r0, [r6, #0x30] + add r4, r4, #1 + add r6, r6, #4 + cmp r4, #4 + blt _0225490E + ldr r0, [sp] + bl MOD20_02252C40 + bl FUN_0202A9B0 + str r0, [sp, #0xc] + mov r4, #0 + add r7, r5, #0 + add r6, r5, #0 +_02254932: + lsl r1, r4, #0x18 + ldr r0, [sp, #0xc] + lsr r1, r1, #0x18 + bl FUN_0202AAA0 + mov r1, #8 + str r0, [r7, #0x64] + bl FUN_0202AAB8 + str r0, [r6, #0x40] + add r1, r5, #0 + add r1, #0x76 + mov r0, #0 + add r4, r4, #1 + strb r0, [r1] + add r7, r7, #4 + add r6, #8 + cmp r4, #3 + blt _02254932 + ldr r0, [sp] + bl MOD20_02252C38 + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DCC + add r6, r0, #0 + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl FUN_02034908 + cmp r0, #0 + beq _02254984 + ldr r0, [r4, #0x1c] + ldr r0, [r0, #8] + str r0, [r5, #4] + ldr r0, [r4, #0x1c] + ldr r0, [r0, #0xc] + b _0225498A +_02254984: + ldr r0, [r6, #8] + str r0, [r5, #4] + ldr r0, [r6, #0xc] +_0225498A: + str r0, [r5, #8] + ldr r1, [r5, #4] + ldr r2, [sp, #4] + asr r0, r1, #4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r0, r0, #5 + str r0, [r5, #4] + ldr r1, [r5, #8] + asr r0, r1, #4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r0, r0, #5 + str r0, [r5, #8] + add r0, r5, #0 + add r0, #0x58 + add r1, r5, #4 + bl MOD42_02254CB4 + cmp r0, #0 + beq _022549C6 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + ldr r0, [sp] + add sp, #0x10 + str r0, [r5, #0x5c] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022549C6: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD42_0225489C + + thumb_func_start MOD42_022549CC +MOD42_022549CC: ; 0x022549CC + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_022549D4: + ldrb r2, [r5, #0x10] + ldrb r3, [r5, #0x11] + ldr r0, [r6, #0x60] + sub r2, #0x10 + sub r3, #0x10 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + add r1, r4, #0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_0204C080 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _022549D4 + ldr r0, [r6, #0x58] + bl MOD42_02254CF0 + add r0, r6, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD42_022549CC + + thumb_func_start MOD42_02254A04 +MOD42_02254A04: ; 0x02254A04 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #4 + bhs _02254A30 + lsl r2, r1, #2 + ldr r1, _02254A34 ; =0x022550CC + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254A30 + add r0, r4, #0 + bl MOD42_022549CC + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x5c] + bl MOD20_022529A0 +_02254A30: + pop {r3, r4, r5, pc} + nop +_02254A34: .word 0x022550CC + thumb_func_end MOD42_02254A04 + + thumb_func_start MOD42_02254A38 +MOD42_02254A38: ; 0x02254A38 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD42_02254A38 + + thumb_func_start MOD42_02254A40 +MOD42_02254A40: ; 0x02254A40 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254A48 + b _02254A4A +_02254A48: + mov r1, #3 +_02254A4A: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD42_02254A40 + + thumb_func_start MOD42_02254A54 +MOD42_02254A54: ; 0x02254A54 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A64 + cmp r0, #1 + beq _02254A74 + b _02254A8E +_02254A64: + ldr r0, [r4, #0x58] + mov r1, #0 + bl MOD42_02254EEC + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A8E +_02254A74: + ldr r0, [r4, #0x58] + mov r1, #0 + bl MOD42_02254F10 + cmp r0, #0 + beq _02254A8E + ldr r0, [r4, #0x5c] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD42_02254A40 +_02254A8E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD42_02254A54 + + thumb_func_start MOD42_02254A94 +MOD42_02254A94: ; 0x02254A94 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254AAC + mov r1, #3 + bl MOD42_02254A40 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02254AAC: + bl MOD42_02254C04 + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x2c] + add r0, sp, #8 + add r1, sp, #4 + bl MOD20_02252BB8 + cmp r0, #0 + beq _02254B20 + ldr r5, [sp, #8] + ldr r6, [sp, #4] + mov r3, #0 +_02254AC8: + add r0, r4, r3 + add r0, #0x70 + ldrb r7, [r0] + lsl r0, r7, #2 + add r2, r4, r0 + str r0, [sp] + ldrb r0, [r2, #0x10] + sub r1, r0, r5 + mov r0, #7 + mvn r0, r0 + cmp r1, r0 + blt _02254B1A + cmp r1, #8 + bgt _02254B1A + ldrb r0, [r2, #0x11] + sub r1, r0, r6 + mov r0, #7 + mvn r0, r0 + cmp r1, r0 + blt _02254B1A + cmp r1, #8 + bgt _02254B1A + add r0, r4, #0 + add r1, r7, #0 + bl MOD42_02254BB4 + ldr r0, [sp] + ldr r2, [sp, #8] + add r1, r4, r0 + strb r2, [r1, #0x10] + ldr r0, [sp, #4] + strb r0, [r1, #0x11] + mov r0, #1 + strb r0, [r1, #0x13] + str r7, [r4, #0x28] + str r0, [r4, #0x2c] + add r0, r4, #0 + mov r1, #2 + bl MOD42_02254A40 + b _02254B20 +_02254B1A: + add r3, r3, #1 + cmp r3, #6 + blt _02254AC8 +_02254B20: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD42_02254A94 + + thumb_func_start MOD42_02254B28 +MOD42_02254B28: ; 0x02254B28 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254B40 + mov r1, #3 + bl MOD42_02254A40 + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02254B40: + bl MOD42_02254C04 + str r0, [r4, #0xc] + add r0, sp, #4 + add r1, sp, #0 + bl MOD20_02252B68 + cmp r0, #0 + beq _02254B68 + ldr r0, [r4, #0x28] + ldr r1, [sp, #4] + lsl r0, r0, #2 + add r0, r4, r0 + strb r1, [r0, #0x10] + ldr r0, [r4, #0x28] + ldr r1, [sp] + lsl r0, r0, #2 + add r0, r4, r0 + strb r1, [r0, #0x11] + b _02254B7A +_02254B68: + ldr r0, [r4, #0x28] + mov r1, #0 + lsl r0, r0, #2 + add r0, r4, r0 + strb r1, [r0, #0x13] + add r0, r4, #0 + mov r1, #1 + bl MOD42_02254A40 +_02254B7A: + mov r0, #0 + add sp, #8 + pop {r4, pc} + thumb_func_end MOD42_02254B28 + + thumb_func_start MOD42_02254B80 +MOD42_02254B80: ; 0x02254B80 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254B90 + cmp r0, #1 + beq _02254BA0 + b _02254BAE +_02254B90: + ldr r0, [r4, #0x58] + mov r1, #1 + bl MOD42_02254EEC + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254BAE +_02254BA0: + ldr r0, [r4, #0x58] + bl MOD42_02254F1C + cmp r0, #0 + beq _02254BAE + mov r0, #1 + pop {r4, pc} +_02254BAE: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD42_02254B80 + + thumb_func_start MOD42_02254BB4 +MOD42_02254BB4: ; 0x02254BB4 + push {r3, r4} + add r2, r0, #0 + add r2, #0x70 + ldrb r2, [r2] + cmp r2, r1 + beq _02254C00 + mov r4, #0 +_02254BC2: + add r2, r0, r4 + add r2, #0x70 + ldrb r2, [r2] + cmp r1, r2 + beq _02254BD2 + add r4, r4, #1 + cmp r4, #6 + blt _02254BC2 +_02254BD2: + cmp r4, #0 + beq _02254BE6 +_02254BD6: + add r2, r0, r4 + add r2, #0x6f + ldrb r3, [r2] + add r2, r0, r4 + add r2, #0x70 + strb r3, [r2] + sub r4, r4, #1 + bne _02254BD6 +_02254BE6: + add r2, r0, #0 + add r2, #0x70 + strb r1, [r2] + mov r2, #0 +_02254BEE: + add r1, r0, r2 + add r1, #0x70 + ldrb r1, [r1] + lsl r1, r1, #2 + add r1, r0, r1 + strb r2, [r1, #0x12] + add r2, r2, #1 + cmp r2, #6 + blt _02254BEE +_02254C00: + pop {r3, r4} + bx lr + thumb_func_end MOD42_02254BB4 + + thumb_func_start MOD42_02254C04 +MOD42_02254C04: ; 0x02254C04 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x5c] + mov r7, #0 + bl MOD20_02252C30 + cmp r0, #0 + beq _02254CAE + ldr r0, [r5, #0x5c] + bl MOD20_02252C38 + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DCC + add r6, r0, #0 + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl FUN_02034908 + cmp r0, #0 + beq _02254C3C + ldr r1, [r4, #0x1c] + ldr r0, [r1, #8] + ldr r1, [r1, #0xc] + b _02254C40 +_02254C3C: + ldr r0, [r6, #8] + ldr r1, [r6, #0xc] +_02254C40: + asr r2, r0, #4 + lsr r2, r2, #0x1b + add r2, r0, r2 + asr r0, r2, #5 + asr r2, r1, #4 + lsr r2, r2, #0x1b + add r2, r1, r2 + asr r1, r2, #5 + ldr r2, [r5, #4] + cmp r0, r2 + bne _02254C5C + ldr r2, [r5, #8] + cmp r1, r2 + beq _02254C62 +_02254C5C: + str r0, [r5, #4] + str r1, [r5, #8] + mov r7, #1 +_02254C62: + add r0, r5, #0 + add r0, #0x76 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x76 + strb r1, [r0] + add r0, r5, #0 + add r0, #0x76 + ldrb r0, [r0] + cmp r0, #5 + blo _02254CAE + mov r6, #0 + add r4, r5, #0 +_02254C7E: + ldr r0, [r5, #0x40] + cmp r0, #0 + bne _02254C94 + ldr r0, [r4, #0x64] + mov r1, #8 + bl FUN_0202AAB8 + str r0, [r5, #0x40] + cmp r0, #0 + beq _02254C94 + mov r7, #1 +_02254C94: + cmp r0, #0 + beq _02254CA4 + ldr r0, [r4, #0x64] + mov r1, #1 + bl FUN_0202AAB8 + str r0, [r5, #0x44] + mov r7, #1 +_02254CA4: + add r6, r6, #1 + add r5, #8 + add r4, r4, #4 + cmp r6, #3 + blt _02254C7E +_02254CAE: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD42_02254C04 + + thumb_func_start MOD42_02254CB4 +MOD42_02254CB4: ; 0x02254CB4 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0x74 + bl FUN_02016998 + add r4, r0, #0 + beq _02254CEA + add r0, #8 + mov r1, #4 + bl MOD20_022536F4 + str r5, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x20] + add r0, r4, #0 + add r1, r5, #0 + bl MOD42_02254D04 + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254CEA: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD42_02254CB4 + + thumb_func_start MOD42_02254CF0 +MOD42_02254CF0: ; 0x02254CF0 + push {r4, lr} + add r4, r0, #0 + beq _02254D00 + bl MOD42_02254E7C + add r0, r4, #0 + bl FUN_02016A18 +_02254D00: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD42_02254CF0 + + thumb_func_start MOD42_02254D04 +MOD42_02254D04: ; 0x02254D04 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r5, r0, #0 + add r7, r1, #0 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x78 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + add r0, #0x5c + mov r1, #0xc + mov r2, #0x76 + mov r3, #0x77 + bl MOD20_02253FBC + mov r2, #0 + add r0, sp, #0x24 + strb r2, [r0, #0x12] + mov r1, #2 + strb r1, [r0, #0x13] + strb r2, [r0, #0x15] + ldr r0, [r7] + ldr r1, [r7, #4] + add r2, sp, #0x28 + add r3, sp, #0x24 + bl MOD20_02254420 + ldr r0, [sp, #0x28] + add r2, r5, #0 + lsl r0, r0, #0xc + str r0, [sp, #0x2c] + ldr r0, [sp, #0x24] + mov r1, #1 + lsl r0, r0, #0xc + str r0, [sp, #0x30] + add r0, sp, #0x24 + strb r1, [r0, #0x14] + mov r1, #0 + strh r1, [r0, #0x10] + ldr r0, [r5, #0x20] + add r1, sp, #0x2c + add r2, #0x5c + bl MOD20_02253E74 + str r0, [r5, #0x58] + mov r1, #1 + add r0, sp, #0x24 + strb r1, [r0, #0x15] + add r0, r5, #0 + str r0, [sp, #0x14] + add r0, #0x5c + mov r6, #0 + add r4, r7, #0 + str r5, [sp, #0xc] + str r0, [sp, #0x14] +_02254D82: + ldrb r0, [r4, #0xc] + ldr r2, [sp, #0x14] + lsl r0, r0, #0xc + str r0, [sp, #0x2c] + ldrb r0, [r4, #0xd] + lsl r0, r0, #0xc + str r0, [sp, #0x30] + ldrb r0, [r4, #0xe] + add r1, r0, #2 + add r0, sp, #0x24 + strb r1, [r0, #0x14] + add r1, r6, #1 + strh r1, [r0, #0x10] + ldr r0, [r5, #0x20] + add r1, sp, #0x2c + bl MOD20_02253E74 + ldr r1, [sp, #0xc] + add r6, r6, #1 + str r0, [r1, #0x24] + add r0, r1, #0 + add r0, r0, #4 + add r4, r4, #4 + str r0, [sp, #0xc] + cmp r6, #6 + blt _02254D82 + add r0, r5, #0 + str r0, [sp, #0x18] + add r0, #0x5c + mov r6, #0 + add r4, r5, #0 + str r7, [sp, #0x10] + str r0, [sp, #0x18] +_02254DC4: + add r0, r6, #0 + add r1, sp, #0x28 + add r2, sp, #0x24 + bl MOD20_02254460 + ldr r0, [sp, #0x28] + mov r1, #9 + lsl r0, r0, #0xc + str r0, [sp, #0x2c] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x18] + lsl r0, r0, #0xc + str r0, [sp, #0x30] + add r0, sp, #0x24 + strb r1, [r0, #0x14] + add r1, r6, #0 + add r1, #0xe + strh r1, [r0, #0x10] + ldr r0, [r5, #0x20] + add r1, sp, #0x2c + bl MOD20_02253E74 + str r0, [r4, #0x3c] + ldr r0, [sp, #0x10] + ldr r0, [r0, #0x2c] + cmp r0, #0 + bne _02254E02 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl MOD20_02253F78 +_02254E02: + ldr r0, [sp, #0x10] + add r6, r6, #1 + add r0, r0, #4 + add r4, r4, #4 + str r0, [sp, #0x10] + cmp r6, #4 + blt _02254DC4 + add r0, r5, #0 + str r0, [sp, #0x20] + add r0, #0x5c + mov r6, #0 + add r4, r5, #0 + str r0, [sp, #0x20] +_02254E1C: + ldr r0, [r7, #0x40] + add r1, sp, #0x28 + add r2, sp, #0x24 + bl MOD20_02254488 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x28] + mov r1, #8 + lsl r0, r0, #0xc + str r0, [sp, #0x2c] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x20] + lsl r0, r0, #0xc + str r0, [sp, #0x30] + add r0, sp, #0x24 + strb r1, [r0, #0x14] + mov r1, #0x12 + strh r1, [r0, #0x10] + ldr r0, [r5, #0x20] + add r1, sp, #0x2c + bl MOD20_02253E74 + str r0, [r4, #0x4c] + ldr r0, [r7, #0x3c] + cmp r0, #0 + beq _02254E56 + ldr r0, [sp, #0x1c] + cmp r0, #0 + bne _02254E5E +_02254E56: + ldr r0, [r4, #0x4c] + mov r1, #1 + bl MOD20_02253F78 +_02254E5E: + add r6, r6, #1 + add r7, #8 + add r4, r4, #4 + cmp r6, #3 + blt _02254E1C + ldr r0, _02254E78 ; =MOD42_02254FE8 + add r1, r5, #0 + mov r2, #3 + bl FUN_0200CA44 + str r0, [r5, #0x70] + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254E78: .word MOD42_02254FE8 + thumb_func_end MOD42_02254D04 + + thumb_func_start MOD42_02254E7C +MOD42_02254E7C: ; 0x02254E7C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x70] + bl FUN_0200CAB4 + mov r6, #0 + add r4, r5, #0 + add r7, r6, #0 +_02254E8C: + ldr r1, [r4, #0x24] + cmp r1, #0 + beq _02254E9A + ldr r0, [r5, #0x20] + bl MOD20_02253F14 + str r7, [r4, #0x24] +_02254E9A: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #6 + blt _02254E8C + mov r6, #0 + add r4, r5, #0 + add r7, r6, #0 +_02254EA8: + ldr r1, [r4, #0x3c] + cmp r1, #0 + beq _02254EB6 + ldr r0, [r5, #0x20] + bl MOD20_02253F14 + str r7, [r4, #0x3c] +_02254EB6: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02254EA8 + mov r6, #0 + add r4, r5, #0 + add r7, r6, #0 +_02254EC4: + ldr r1, [r4, #0x4c] + cmp r1, #0 + beq _02254ED2 + ldr r0, [r5, #0x20] + bl MOD20_02253F14 + str r7, [r4, #0x4c] +_02254ED2: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #3 + blt _02254EC4 + ldr r0, [r5, #0x20] + ldr r1, [r5, #0x58] + bl MOD20_02253F14 + add r5, #0x5c + add r0, r5, #0 + bl MOD20_02254014 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD42_02254E7C + + thumb_func_start MOD42_02254EEC +MOD42_02254EEC: ; 0x02254EEC + 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, _02254F0C ; =0x022550F8 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254F0C: .word 0x022550F8 + thumb_func_end MOD42_02254EEC + + thumb_func_start MOD42_02254F10 +MOD42_02254F10: ; 0x02254F10 + ldr r3, _02254F18 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254F18: .word MOD20_02253794 + thumb_func_end MOD42_02254F10 + + thumb_func_start MOD42_02254F1C +MOD42_02254F1C: ; 0x02254F1C + ldr r3, _02254F24 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254F24: .word MOD20_022537B8 + thumb_func_end MOD42_02254F1C + + thumb_func_start MOD42_02254F28 +MOD42_02254F28: ; 0x02254F28 + 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 MOD42_02254F28 + + thumb_func_start MOD42_02254F3C +MOD42_02254F3C: ; 0x02254F3C + 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, _02254FC0 ; =0x022550DC + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x75 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x73 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254FC4 ; =0x04001000 + ldr r0, _02254FC8 ; =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 MOD42_02254F28 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02254FC0: .word 0x022550DC +_02254FC4: .word 0x04001000 +_02254FC8: .word 0xFFFFE0FF + thumb_func_end MOD42_02254F3C + + thumb_func_start MOD42_02254FCC +MOD42_02254FCC: ; 0x02254FCC + 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 MOD42_02254F28 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD42_02254FCC + + thumb_func_start MOD42_02254FE8 +MOD42_02254FE8: ; 0x02254FE8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + ldr r4, [r5] + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _0225505E + ldr r7, [r4, #0x24] + lsl r6, r7, #2 + add r2, r4, r6 + ldrb r0, [r2, #0xf] + cmp r0, #0 + beq _02255028 + add r0, r5, #0 + str r0, [sp, #4] + add r0, #0x24 + str r0, [sp, #4] + ldr r1, [sp, #4] + add r0, r0, r6 + str r0, [sp] + ldr r0, [r5, #0x20] + ldr r1, [r1, r6] + mov r2, #0 + bl MOD20_02253F80 + ldr r0, [sp, #4] + add r7, #8 + ldr r0, [r0, r6] + add r1, r7, #0 + bl MOD20_02253F28 + b _0225504C +_02255028: + add r0, r5, #0 + str r0, [sp, #8] + add r0, #0x24 + str r0, [sp, #8] + ldr r1, [sp, #8] + ldrb r2, [r2, #0xe] + add r0, r0, r6 + str r0, [sp] + ldr r0, [r5, #0x20] + ldr r1, [r1, r6] + add r2, r2, #2 + bl MOD20_02253F80 + ldr r0, [sp, #8] + add r1, r7, #1 + ldr r0, [r0, r6] + bl MOD20_02253F28 +_0225504C: + add r2, r4, r6 + ldrb r1, [r2, #0xc] + ldr r0, [sp] + ldrb r2, [r2, #0xd] + ldr r0, [r0] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 +_0225505E: + ldr r0, [r4, #8] + cmp r0, #0 + beq _022550C8 + ldr r0, [r4] + ldr r1, [r4, #4] + add r2, sp, #0x10 + add r3, sp, #0xc + bl MOD20_02254420 + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + ldr r0, [r5, #0x58] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + mov r6, #0 + add r7, sp, #0x10 +_02255082: + ldr r0, [r4, #0x3c] + cmp r0, #0 + beq _022550B6 + ldr r0, [r4, #0x40] + add r1, r7, #0 + add r2, sp, #0xc + bl MOD20_02254488 + cmp r0, #0 + ldr r0, [r5, #0x4c] + beq _022550AE + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + ldr r0, [r5, #0x4c] + mov r1, #0 + bl MOD20_02253F78 + b _022550BE +_022550AE: + mov r1, #1 + bl MOD20_02253F78 + b _022550BE +_022550B6: + ldr r0, [r5, #0x4c] + mov r1, #1 + bl MOD20_02253F78 +_022550BE: + add r6, r6, #1 + add r4, #8 + add r5, r5, #4 + cmp r6, #3 + blo _02255082 +_022550C8: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD42_02254FE8 + + .section .rodata + ; 0x022550CC + .incbin "baserom.nds", 0x29488c, 0x50 + + ; .section .sinit + .global SDK_OVERLAY.MODULE_42.SINIT_START + .global SDK_OVERLAY.MODULE_42.SINIT_END +SDK_OVERLAY.MODULE_42.SINIT_START: + .word MOD42_02254840 + .word 0 +SDK_OVERLAY.MODULE_42.SINIT_END: diff --git a/arm9/modules/43/asm/module_43.s b/arm9/modules/43/asm/module_43.s new file mode 100644 index 00000000..78bb538f --- /dev/null +++ b/arm9/modules/43/asm/module_43.s @@ -0,0 +1,1140 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD43_02254840 +MOD43_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD43_02254854 + ldr r1, _02254850 ; =MOD43_02254970 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD43_02254854 +_02254850: .word MOD43_02254970 + thumb_func_end MOD43_02254840 + + thumb_func_start MOD43_02254854 +MOD43_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0xb0 + 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 MOD43_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD43_0225493C + 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 MOD43_0225493C + thumb_func_end MOD43_02254854 + + thumb_func_start MOD43_0225489C +MOD43_0225489C: ; 0x0225489C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + add r1, r5, #0 + add r1, #0xac + str r7, [r1] + str r2, [sp] + bl MOD43_02254A88 + str r0, [r5, #0xc] + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + bl MOD20_02252C38 + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DCC + add r6, r0, #0 + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl FUN_02034908 + cmp r0, #0 + beq _022548E0 + ldr r0, [r4, #0x1c] + ldr r0, [r0, #8] + str r0, [r5, #4] + ldr r0, [r4, #0x1c] + ldr r0, [r0, #0xc] + b _022548E6 +_022548E0: + ldr r0, [r6, #8] + str r0, [r5, #4] + ldr r0, [r6, #0xc] +_022548E6: + str r0, [r5, #8] + ldr r1, [r5, #4] + asr r0, r1, #4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r0, r0, #5 + str r0, [r5, #4] + ldr r1, [r5, #8] + asr r0, r1, #4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r0, r0, #5 + str r0, [r5, #8] + add r0, r5, #0 + add r1, r7, #0 + bl MOD43_02254B60 + add r0, r5, #0 + ldr r2, [sp] + add r0, #0xa8 + add r1, r5, #4 + bl MOD43_02254B8C + cmp r0, #0 + beq _02254924 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02254924: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD43_0225489C + + thumb_func_start MOD43_02254928 +MOD43_02254928: ; 0x02254928 + push {r4, lr} + add r4, r0, #0 + add r0, #0xa8 + ldr r0, [r0] + bl MOD43_02254BCC + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD43_02254928 + + thumb_func_start MOD43_0225493C +MOD43_0225493C: ; 0x0225493C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhs _0225496A + lsl r2, r1, #2 + ldr r1, _0225496C ; =0x022550A8 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _0225496A + add r0, r4, #0 + bl MOD43_02254928 + add r0, r5, #0 + bl FUN_0200CAB4 + add r4, #0xac + ldr r0, [r4] + bl MOD20_022529A0 +_0225496A: + pop {r3, r4, r5, pc} + .align 2, 0 +_0225496C: .word 0x022550A8 + thumb_func_end MOD43_0225493C + + thumb_func_start MOD43_02254970 +MOD43_02254970: ; 0x02254970 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD43_02254970 + + thumb_func_start MOD43_02254978 +MOD43_02254978: ; 0x02254978 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254980 + b _02254982 +_02254980: + mov r1, #2 +_02254982: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD43_02254978 + + thumb_func_start MOD43_0225498C +MOD43_0225498C: ; 0x0225498C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _0225499C + cmp r0, #1 + beq _022549B0 + b _022549D2 +_0225499C: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0 + bl MOD43_02254BD8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549D2 +_022549B0: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0 + bl MOD43_02254BFC + cmp r0, #0 + beq _022549D2 + add r0, r4, #0 + add r0, #0xac + ldr r0, [r0] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD43_02254978 +_022549D2: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD43_0225498C + + thumb_func_start MOD43_022549D8 +MOD43_022549D8: ; 0x022549D8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _022549F0 + mov r1, #2 + bl MOD43_02254978 + add sp, #8 + mov r0, #0 + pop {r4, pc} +_022549F0: + bl MOD43_02254AF8 + add r1, r4, #0 + add r1, #0x94 + str r0, [r1] + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #2 + bl MOD43_02254BFC + cmp r0, #0 + beq _02254A48 + add r0, sp, #4 + add r1, sp, #0 + bl MOD20_02252BB8 + cmp r0, #0 + beq _02254A48 + ldr r0, [sp, #4] + sub r0, #0x10 + cmp r0, #0xc0 + bhs _02254A22 + mov r1, #1 + b _02254A24 +_02254A22: + mov r1, #0 +_02254A24: + ldr r0, [sp] + sub r0, #0x10 + cmp r0, #0xc0 + bhs _02254A30 + mov r0, #1 + b _02254A32 +_02254A30: + mov r0, #0 +_02254A32: + tst r0, r1 + beq _02254A48 + add r0, r4, #0 + bl MOD43_02254A88 + str r0, [r4, #0xc] + add r4, #0xa8 + ldr r0, [r4] + mov r1, #2 + bl MOD43_02254BD8 +_02254A48: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD43_022549D8 + + thumb_func_start MOD43_02254A50 +MOD43_02254A50: ; 0x02254A50 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A60 + cmp r0, #1 + beq _02254A74 + b _02254A84 +_02254A60: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #1 + bl MOD43_02254BD8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A84 +_02254A74: + add r4, #0xa8 + ldr r0, [r4] + bl MOD43_02254C08 + cmp r0, #0 + beq _02254A84 + mov r0, #1 + pop {r4, pc} +_02254A84: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD43_02254A50 + + thumb_func_start MOD43_02254A88 +MOD43_02254A88: ; 0x02254A88 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0xac + ldr r0, [r0] + bl MOD20_02252C40 + bl FUN_02024ECC + mov r4, #0 + add r6, r0, #0 + add r7, r4, #0 +_02254A9E: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_020252B8 + cmp r0, #1 + bne _02254AEA + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02025238 + cmp r0, #5 + bne _02254AEA + ldr r1, _02254AF4 ; =0x022550B4 + lsl r0, r4, #1 + ldr r2, _02254AF4 ; =0x022550B4 + add r1, r1, r0 + ldrb r0, [r2, r0] + strb r0, [r5, #0x10] + ldrb r0, [r1, #1] + strb r0, [r5, #0x11] + b _02254ACC +_02254AC8: + add r1, r1, #2 + add r4, r4, #1 +_02254ACC: + add r0, r4, #1 + cmp r0, #0x76 + bhs _02254AE2 + ldrb r2, [r5, #0x10] + ldrb r0, [r1, #2] + cmp r2, r0 + bne _02254AE2 + ldrb r2, [r5, #0x11] + ldrb r0, [r1, #3] + cmp r2, r0 + beq _02254AC8 +_02254AE2: + add r7, r7, #1 + add r5, r5, #2 + cmp r7, #0x40 + bge _02254AF0 +_02254AEA: + add r4, r4, #1 + cmp r4, #0x76 + blo _02254A9E +_02254AF0: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254AF4: .word 0x022550B4 + thumb_func_end MOD43_02254A88 + + thumb_func_start MOD43_02254AF8 +MOD43_02254AF8: ; 0x02254AF8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0xac + ldr r0, [r0] + mov r6, #0 + bl MOD20_02252C30 + cmp r0, #0 + beq _02254B5C + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + bl MOD20_02252C38 + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DCC + add r7, r0, #0 + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl FUN_02034908 + cmp r0, #0 + beq _02254B36 + ldr r1, [r4, #0x1c] + ldr r0, [r1, #8] + ldr r1, [r1, #0xc] + b _02254B3A +_02254B36: + ldr r0, [r7, #8] + ldr r1, [r7, #0xc] +_02254B3A: + asr r2, r0, #4 + lsr r2, r2, #0x1b + add r2, r0, r2 + asr r0, r2, #5 + asr r2, r1, #4 + lsr r2, r2, #0x1b + add r2, r1, r2 + asr r1, r2, #5 + ldr r2, [r5, #4] + cmp r0, r2 + bne _02254B56 + ldr r2, [r5, #8] + cmp r1, r2 + beq _02254B5C +_02254B56: + str r0, [r5, #4] + str r1, [r5, #8] + mov r6, #1 +_02254B5C: + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD43_02254AF8 + + thumb_func_start MOD43_02254B60 +MOD43_02254B60: ; 0x02254B60 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, r1, #0 + bl MOD20_02252C40 + bl FUN_020462AC + add r6, r0, #0 + mov r4, #0 +_02254B72: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0205F524 + add r1, r5, #0 + add r1, #0x98 + add r4, r4, #1 + add r5, r5, #4 + str r0, [r1] + cmp r4, #4 + blt _02254B72 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD43_02254B60 + + thumb_func_start MOD43_02254B8C +MOD43_02254B8C: ; 0x02254B8C + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0x16 + add r6, r0, #0 + mov r0, #8 + lsl r1, r1, #4 + bl FUN_02016998 + add r4, r0, #0 + beq _02254BC6 + add r0, #8 + mov r1, #4 + bl MOD20_022536F4 + str r5, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x20] + add r5, #0x8c + mov r0, #0x15 + ldr r1, [r5] + lsl r0, r0, #4 + str r1, [r4, r0] + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254BC6: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD43_02254B8C + + thumb_func_start MOD43_02254BCC +MOD43_02254BCC: ; 0x02254BCC + push {r3, lr} + cmp r0, #0 + beq _02254BD6 + bl FUN_02016A18 +_02254BD6: + pop {r3, pc} + thumb_func_end MOD43_02254BCC + + thumb_func_start MOD43_02254BD8 +MOD43_02254BD8: ; 0x02254BD8 + 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, _02254BF8 ; =0x022551BC + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254BF8: .word 0x022551BC + thumb_func_end MOD43_02254BD8 + + thumb_func_start MOD43_02254BFC +MOD43_02254BFC: ; 0x02254BFC + ldr r3, _02254C04 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254C04: .word MOD20_02253794 + thumb_func_end MOD43_02254BFC + + thumb_func_start MOD43_02254C08 +MOD43_02254C08: ; 0x02254C08 + ldr r3, _02254C10 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254C10: .word MOD20_022537B8 + thumb_func_end MOD43_02254C08 + + thumb_func_start MOD43_02254C14 +MOD43_02254C14: ; 0x02254C14 + 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 MOD43_02254C14 + + thumb_func_start MOD43_02254C28 +MOD43_02254C28: ; 0x02254C28 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, _02254CC0 ; =0x0400104C + mov r3, #0 + strb r3, [r0] + strb r3, [r0, #1] + ldr r0, [r5, #4] + ldr r2, _02254CC4 ; =0x022551A0 + mov r1, #6 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x75 + mov r3, #6 + bl FUN_0200687C + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x74 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + add r0, r5, #0 + lsr r1, r4, #5 + bl MOD43_02254CD0 + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254CC8 ; =0x04001000 + ldr r0, _02254CCC ; =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, r5, #0 + bl MOD43_02254E78 + add r0, r6, #0 + bl MOD43_02254C14 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02254CC0: .word 0x0400104C +_02254CC4: .word 0x022551A0 +_02254CC8: .word 0x04001000 +_02254CCC: .word 0xFFFFE0FF + thumb_func_end MOD43_02254C28 + + thumb_func_start MOD43_02254CD0 +MOD43_02254CD0: ; 0x02254CD0 + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r4, r1, #0 + mov r1, #0x66 + add r5, r0, #0 + mov r0, #0x1a + lsl r1, r1, #2 + mov r2, #0 + mov r3, #8 + bl FUN_0200A738 + add r6, r0, #0 + beq _02254D44 + mov r0, #0x14 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #4] + add r1, sp, #0x14 + mov r2, #6 + mov r3, #0x12 + bl FUN_02019064 + add r0, sp, #0x14 + mov r1, #4 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02254D48 ; =0x00010104 + add r2, r6, #0 + str r0, [sp, #8] + add r0, sp, #0x14 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, sp, #0x14 + bl FUN_02019270 + add r0, sp, #0x14 + bl FUN_02019548 + add r0, sp, #0x14 + bl FUN_02019178 + add r0, r6, #0 + bl FUN_02021A20 +_02254D44: + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02254D48: .word 0x00010104 + thumb_func_end MOD43_02254CD0 + + thumb_func_start MOD43_02254D4C +MOD43_02254D4C: ; 0x02254D4C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _02254D68 + cmp r0, #1 + beq _02254D78 + pop {r3, r4, r5, pc} +_02254D68: + mov r0, #0x57 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_02254D78: + add r0, r4, #0 + mov r1, #2 + bl MOD43_02254BFC + cmp r0, #0 + beq _02254DA0 + add r0, r4, #0 + bl MOD43_02255000 + ldr r0, _02254DA4 ; =0x0400104C + mov r1, #0 + strb r1, [r0] + strb r1, [r0, #1] + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD43_02254C14 +_02254DA0: + pop {r3, r4, r5, pc} + nop +_02254DA4: .word 0x0400104C + thumb_func_end MOD43_02254D4C + + thumb_func_start MOD43_02254DA8 +MOD43_02254DA8: ; 0x02254DA8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _02254DCE + cmp r0, #1 + beq _02254E02 + cmp r0, #2 + beq _02254E10 + pop {r3, r4, r5, pc} +_02254DCE: + mov r1, #0x55 + mov r0, #6 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r2, #0 + add r0, r1, #4 + str r2, [r4, r0] + add r0, r1, #0 + add r0, #8 + str r2, [r4, r0] + ldr r2, [r4, r1] + lsl r0, r2, #4 + orr r0, r2 + ldr r2, _02254E70 ; =0x0400104C + strb r0, [r2] + ldr r1, [r4, r1] + lsl r0, r1, #4 + orr r0, r1 + strb r0, [r2, #1] + ldr r0, _02254E74 ; =0x00000678 + bl MOD20_02252B28 + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_02254E02: + add r0, r4, #0 + bl MOD43_02254F9C + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_02254E10: + mov r0, #0x57 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _02254E22 + add r0, r5, #0 + bl MOD43_02254C14 + pop {r3, r4, r5, pc} +_02254E22: + sub r1, r0, #4 + ldr r1, [r4, r1] + add r2, r1, #1 + sub r1, r0, #4 + str r2, [r4, r1] + ldr r1, [r4, r1] + cmp r1, #3 + blt _02254E6E + mov r2, #0 + sub r1, r0, #4 + str r2, [r4, r1] + add r1, r0, #0 + sub r1, #8 + ldr r1, [r4, r1] + sub r2, r1, #1 + add r1, r0, #0 + sub r1, #8 + str r2, [r4, r1] + add r1, r0, #0 + sub r1, #8 + ldr r2, [r4, r1] + lsl r1, r2, #4 + orr r2, r1 + ldr r1, _02254E70 ; =0x0400104C + strb r2, [r1] + add r2, r0, #0 + sub r2, #8 + ldr r3, [r4, r2] + sub r0, #8 + lsl r2, r3, #4 + orr r2, r3 + strb r2, [r1, #1] + ldr r0, [r4, r0] + cmp r0, #0 + bne _02254E6E + add r0, r5, #0 + bl MOD43_02254C14 +_02254E6E: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254E70: .word 0x0400104C +_02254E74: .word 0x00000678 + thumb_func_end MOD43_02254DA8 + + thumb_func_start MOD43_02254E78 +MOD43_02254E78: ; 0x02254E78 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r6, r0, #0 + ldr r7, [r6] + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x78 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + mov r0, #0x4e + lsl r0, r0, #2 + add r0, r6, r0 + mov r1, #0xc + mov r2, #0x76 + mov r3, #0x77 + bl MOD20_02253FBC + mov r2, #0 + add r0, sp, #0xc + strb r2, [r0, #0x12] + mov r1, #2 + strb r1, [r0, #0x13] + strb r2, [r0, #0x15] + ldr r0, [r7] + ldr r1, [r7, #4] + add r2, sp, #0x10 + add r3, sp, #0xc + bl MOD20_02254420 + ldr r0, [sp, #0x10] + mov r2, #0x4e + lsl r0, r0, #0xc + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + lsl r2, r2, #2 + lsl r0, r0, #0xc + str r0, [sp, #0x18] + mov r1, #0 + add r0, sp, #0xc + strb r1, [r0, #0x14] + strh r1, [r0, #0x10] + ldr r0, [r6, #0x20] + add r1, sp, #0x14 + add r2, r6, r2 + bl MOD20_02253E74 + mov r1, #1 + str r0, [r6, #0x24] + bl MOD20_02253FAC + mov r1, #1 + add r0, sp, #0xc + strb r1, [r0, #0x14] + mov r1, #7 + strh r1, [r0, #0x10] + mov r5, #0 + str r5, [sp, #0x14] + str r5, [sp, #0x18] + add r4, r6, #0 +_02254EFC: + mov r2, #0x4e + lsl r2, r2, #2 + ldr r0, [r6, #0x20] + add r1, sp, #0x14 + add r2, r6, r2 + bl MOD20_02253E74 + mov r1, #1 + str r0, [r4, #0x28] + bl MOD20_02253FAC + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #0x40 + blt _02254EFC + add r0, r6, #0 + bl MOD43_02254F9C + mov r5, #0 + add r4, r6, #0 +_02254F24: + add r0, r5, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD20_02254460 + ldr r0, [sp, #0x10] + mov r1, #2 + lsl r0, r0, #0xc + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + mov r2, #0x4e + lsl r0, r0, #0xc + str r0, [sp, #0x18] + add r0, sp, #0xc + strb r1, [r0, #0x14] + add r1, r5, #0 + add r1, #0xe + strh r1, [r0, #0x10] + lsl r2, r2, #2 + ldr r0, [r6, #0x20] + add r1, sp, #0x14 + add r2, r6, r2 + bl MOD20_02253E74 + mov r1, #0x4a + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD20_02253FAC + add r0, r7, #0 + add r0, #0x94 + ldr r0, [r0] + cmp r0, #0 + bne _02254F7A + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD20_02253F78 +_02254F7A: + add r5, r5, #1 + add r4, r4, #4 + add r7, r7, #4 + cmp r5, #4 + blt _02254F24 + ldr r0, _02254F98 ; =MOD43_02255078 + add r1, r6, #0 + mov r2, #3 + bl FUN_0200CA44 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r6, r1] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254F98: .word MOD43_02255078 + thumb_func_end MOD43_02254E78 + + thumb_func_start MOD43_02254F9C +MOD43_02254F9C: ; 0x02254F9C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + ldr r1, [r7] + mov r4, #0 + ldr r0, [r1, #8] + cmp r0, #0 + ble _02254FE2 + add r6, r4, #0 + add r5, r7, #0 +_02254FB0: + add r1, r1, r6 + ldrb r0, [r1, #0xc] + ldrb r1, [r1, #0xd] + add r2, sp, #4 + add r3, sp, #0 + bl MOD20_02254420 + ldr r1, [sp, #4] + ldr r2, [sp] + ldr r0, [r5, #0x28] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + ldr r0, [r5, #0x28] + mov r1, #0 + bl MOD20_02253F78 + ldr r1, [r7] + add r4, r4, #1 + ldr r0, [r1, #8] + add r6, r6, #2 + add r5, r5, #4 + cmp r4, r0 + blt _02254FB0 +_02254FE2: + cmp r4, #0x40 + bge _02254FFC + lsl r0, r4, #2 + add r5, r7, r0 + mov r6, #1 +_02254FEC: + ldr r0, [r5, #0x28] + add r1, r6, #0 + bl MOD20_02253F78 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x40 + blt _02254FEC +_02254FFC: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD43_02254F9C + + thumb_func_start MOD43_02255000 +MOD43_02255000: ; 0x02255000 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0225501A + bl FUN_0200CAB4 + mov r0, #0x53 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] +_0225501A: + mov r6, #0 + add r4, r5, #0 + add r7, r6, #0 +_02255020: + mov r0, #0x4a + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _02255036 + ldr r0, [r5, #0x20] + bl MOD20_02253F14 + mov r0, #0x4a + lsl r0, r0, #2 + str r7, [r4, r0] +_02255036: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02255020 + mov r6, #0 + add r4, r5, #0 + add r7, r6, #0 +_02255044: + ldr r1, [r4, #0x28] + cmp r1, #0 + beq _02255052 + ldr r0, [r5, #0x20] + bl MOD20_02253F14 + str r7, [r4, #0x28] +_02255052: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #0x40 + blt _02255044 + ldr r1, [r5, #0x24] + cmp r1, #0 + beq _0225506A + ldr r0, [r5, #0x20] + bl MOD20_02253F14 + mov r0, #0 + str r0, [r5, #0x24] +_0225506A: + mov r0, #0x4e + lsl r0, r0, #2 + add r0, r5, r0 + bl MOD20_02254014 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD43_02255000 + + thumb_func_start MOD43_02255078 +MOD43_02255078: ; 0x02255078 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + ldr r1, [r4] + add r0, r1, #0 + add r0, #0x90 + ldr r0, [r0] + cmp r0, #0 + beq _022550A2 + ldmia r1!, {r0, r1} + add r2, sp, #4 + add r3, sp, #0 + bl MOD20_02254420 + ldr r1, [sp, #4] + ldr r2, [sp] + ldr r0, [r4, #0x24] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 +_022550A2: + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD43_02255078 + + .section .rodata + ; 0x022550A8 + .incbin "baserom.nds", 0x295268, 0x144 + + ; .section .sinit + .global SDK_OVERLAY.MODULE_43.SINIT_START + .global SDK_OVERLAY.MODULE_43.SINIT_END +SDK_OVERLAY.MODULE_43.SINIT_START: + .word MOD43_02254840 + .word 0 +SDK_OVERLAY.MODULE_43.SINIT_END: diff --git a/arm9/modules/44/asm/module_44.s b/arm9/modules/44/asm/module_44.s new file mode 100644 index 00000000..a9743a1e --- /dev/null +++ b/arm9/modules/44/asm/module_44.s @@ -0,0 +1,580 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD44_02254840 +MOD44_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD44_02254854 + ldr r1, _02254850 ; =MOD44_02254920 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD44_02254854 +_02254850: .word MOD44_02254920 + thumb_func_end MOD44_02254840 + + thumb_func_start MOD44_02254854 +MOD44_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x14 + 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 MOD44_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD44_022548EC + 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 MOD44_022548EC + thumb_func_end MOD44_02254854 + + thumb_func_start MOD44_0225489C +MOD44_0225489C: ; 0x0225489C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r6, r2, #0 + bl MOD20_02252C3C + str r0, [r5, #0x10] + bl FUN_0204BF44 + str r0, [r5, #4] + strb r0, [r5, #3] + add r0, r5, #0 + add r0, #8 + add r1, r5, #4 + add r2, r6, #0 + bl MOD44_02254A54 + cmp r0, #0 + beq _022548D2 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + str r4, [r5, #0xc] + mov r0, #1 + pop {r4, r5, r6, pc} +_022548D2: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD44_0225489C + + thumb_func_start MOD44_022548D8 +MOD44_022548D8: ; 0x022548D8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl MOD44_02254B00 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD44_022548D8 + + thumb_func_start MOD44_022548EC +MOD44_022548EC: ; 0x022548EC + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhs _02254918 + lsl r2, r1, #2 + ldr r1, _0225491C ; =0x02254C54 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254918 + add r0, r4, #0 + bl MOD44_022548D8 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0xc] + bl MOD20_022529A0 +_02254918: + pop {r3, r4, r5, pc} + nop +_0225491C: .word 0x02254C54 + thumb_func_end MOD44_022548EC + + thumb_func_start MOD44_02254920 +MOD44_02254920: ; 0x02254920 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD44_02254920 + + thumb_func_start MOD44_02254928 +MOD44_02254928: ; 0x02254928 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254930 + b _02254932 +_02254930: + mov r1, #2 +_02254932: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD44_02254928 + + thumb_func_start MOD44_0225493C +MOD44_0225493C: ; 0x0225493C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _0225494C + cmp r0, #1 + beq _0225495C + b _02254976 +_0225494C: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD44_02254B14 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254976 +_0225495C: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD44_02254B38 + cmp r0, #0 + beq _02254976 + ldr r0, [r4, #0xc] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD44_02254928 +_02254976: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD44_0225493C + + thumb_func_start MOD44_0225497C +MOD44_0225497C: ; 0x0225497C + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254990 + mov r1, #2 + bl MOD44_02254928 + mov r0, #0 + pop {r4, pc} +_02254990: + ldrb r1, [r4, #1] + cmp r1, #0 + beq _0225499C + cmp r1, #1 + beq _022549B4 + b _022549C4 +_0225499C: + bl MOD44_022549C8 + cmp r0, #0 + beq _022549C4 + ldr r0, [r4, #8] + mov r1, #2 + bl MOD44_02254B14 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549C4 +_022549B4: + ldr r0, [r4, #8] + mov r1, #2 + bl MOD44_02254B38 + cmp r0, #0 + beq _022549C4 + mov r0, #0 + strb r0, [r4, #1] +_022549C4: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD44_0225497C + + thumb_func_start MOD44_022549C8 +MOD44_022549C8: ; 0x022549C8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl MOD20_02252C08 + cmp r0, #0 + bne _02254A18 + add r0, sp, #4 + add r1, sp, #0 + bl FUN_02020AB0 + cmp r0, #0 + beq _02254A18 + ldr r0, [sp] + cmp r0, #0x88 + blo _02254A18 + cmp r0, #0xa0 + bhs _02254A18 + ldr r0, [sp, #4] + cmp r0, #0x30 + blo _02254A18 + cmp r0, #0xb8 + bhs _02254A18 + sub r0, #0x30 + lsr r1, r0, #4 + cmp r1, #8 + blo _02254A02 + mov r1, #7 +_02254A02: + ldrb r0, [r4, #3] + cmp r1, r0 + beq _02254A18 + str r1, [r4, #4] + strb r1, [r4, #3] + ldr r0, [r4, #0x10] + bl FUN_0204BF58 + add sp, #8 + mov r0, #1 + pop {r4, pc} +_02254A18: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD44_022549C8 + + thumb_func_start MOD44_02254A20 +MOD44_02254A20: ; 0x02254A20 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A30 + cmp r0, #1 + beq _02254A40 + b _02254A4E +_02254A30: + ldr r0, [r4, #8] + mov r1, #1 + bl MOD44_02254B14 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A4E +_02254A40: + ldr r0, [r4, #8] + bl MOD44_02254B44 + cmp r0, #0 + beq _02254A4E + mov r0, #1 + pop {r4, pc} +_02254A4E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD44_02254A20 + + thumb_func_start MOD44_02254A54 +MOD44_02254A54: ; 0x02254A54 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0x3c + bl FUN_02016998 + add r4, r0, #0 + beq _02254A8A + add r0, #8 + mov r1, #4 + bl MOD20_022536F4 + str r5, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x20] + add r0, r4, #0 + add r1, r5, #0 + bl MOD44_02254A90 + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254A8A: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD44_02254A54 + + thumb_func_start MOD44_02254A90 +MOD44_02254A90: ; 0x02254A90 + push {r4, r5, lr} + sub sp, #0xc + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r5, r0, #0 + add r4, r1, #0 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x45 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + add r0, #0x28 + mov r1, #0xc + mov r2, #0x43 + mov r3, #0x44 + bl MOD20_02253FBC + add r2, r5, #0 + ldr r0, [r5, #0x20] + ldr r1, _02254AE0 ; =0x02254C60 + add r2, #0x28 + bl MOD20_02253E74 + str r0, [r5, #0x24] + ldr r1, [r4] + mov r2, #0x25 + lsl r1, r1, #4 + add r1, #0x38 + lsl r1, r1, #0xc + lsl r2, r2, #0xe + bl MOD20_02253F64 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02254AE0: .word 0x02254C60 + thumb_func_end MOD44_02254A90 + + thumb_func_start MOD44_02254AE4 +MOD44_02254AE4: ; 0x02254AE4 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x24] + cmp r1, #0 + beq _02254AF4 + ldr r0, [r4, #0x20] + bl MOD20_02253F14 +_02254AF4: + add r4, #0x28 + add r0, r4, #0 + bl MOD20_02254014 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD44_02254AE4 + + thumb_func_start MOD44_02254B00 +MOD44_02254B00: ; 0x02254B00 + push {r4, lr} + add r4, r0, #0 + beq _02254B10 + bl MOD44_02254AE4 + add r0, r4, #0 + bl FUN_02016A18 +_02254B10: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD44_02254B00 + + thumb_func_start MOD44_02254B14 +MOD44_02254B14: ; 0x02254B14 + 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, _02254B34 ; =0x02254C8C + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254B34: .word 0x02254C8C + thumb_func_end MOD44_02254B14 + + thumb_func_start MOD44_02254B38 +MOD44_02254B38: ; 0x02254B38 + ldr r3, _02254B40 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254B40: .word MOD20_02253794 + thumb_func_end MOD44_02254B38 + + thumb_func_start MOD44_02254B44 +MOD44_02254B44: ; 0x02254B44 + ldr r3, _02254B4C ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254B4C: .word MOD20_022537B8 + thumb_func_end MOD44_02254B44 + + thumb_func_start MOD44_02254B50 +MOD44_02254B50: ; 0x02254B50 + 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 MOD44_02254B50 + + thumb_func_start MOD44_02254B64 +MOD44_02254B64: ; 0x02254B64 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD20_022538A4 + ldr r0, [r5, #4] + ldr r2, _02254BEC ; =0x02254C70 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x42 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x41 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254BF0 ; =0x04001000 + ldr r0, _02254BF4 ; =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 MOD44_02254B50 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_02254BEC: .word 0x02254C70 +_02254BF0: .word 0x04001000 +_02254BF4: .word 0xFFFFE0FF + thumb_func_end MOD44_02254B64 + + thumb_func_start MOD44_02254BF8 +MOD44_02254BF8: ; 0x02254BF8 + 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 MOD44_02254B50 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD44_02254BF8 + + thumb_func_start MOD44_02254C14 +MOD44_02254C14: ; 0x02254C14 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r4, r0, #0 + ldr r0, _02254C50 ; =0x00000663 + bl MOD20_02252B28 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r1, [r4] + mov r2, #0x25 + lsl r1, r1, #4 + add r1, #0x38 + ldr r0, [r5, #0x24] + lsl r1, r1, #0xc + lsl r2, r2, #0xe + bl MOD20_02253F64 + add r0, r6, #0 + bl MOD44_02254B50 + pop {r4, r5, r6, pc} + .align 2, 0 +_02254C50: .word 0x00000663 + thumb_func_end MOD44_02254C14 + + .section .rodata + ; 0x02254C54 + .incbin "baserom.nds", 0x295814, 0x68 + + ; .section .sinit + .global SDK_OVERLAY.MODULE_44.SINIT_START + .global SDK_OVERLAY.MODULE_44.SINIT_END +SDK_OVERLAY.MODULE_44.SINIT_START: + .word MOD44_02254840 + .word 0 +SDK_OVERLAY.MODULE_44.SINIT_END: diff --git a/arm9/modules/45/asm/module_45.s b/arm9/modules/45/asm/module_45.s new file mode 100644 index 00000000..96762d44 --- /dev/null +++ b/arm9/modules/45/asm/module_45.s @@ -0,0 +1,1061 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD45_02254840 +MOD45_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD45_02254854 + ldr r1, _02254850 ; =MOD45_02254A30 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD45_02254854 +_02254850: .word MOD45_02254A30 + thumb_func_end MOD45_02254840 + + thumb_func_start MOD45_02254854 +MOD45_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0xb0 + 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 MOD45_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD45_022549EC + 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 MOD45_022549EC + thumb_func_end MOD45_02254854 + + thumb_func_start MOD45_0225489C +MOD45_0225489C: ; 0x0225489C + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + add r4, r1, #0 + add r0, sp, #4 + add r6, r2, #0 + bl FUN_020126B4 + add r0, r4, #0 + bl MOD20_02252C3C + add r1, r5, #0 + add r1, #0x98 + str r0, [r1] + add r0, r5, #4 + add r1, r5, #0 + add r2, sp, #4 + bl MOD45_0225492C + add r0, r5, #0 + ldrb r1, [r5, #0x12] + add r0, #0xa8 + add r2, r6, #0 + str r1, [r0] + add r0, r5, #0 + add r0, #0xa8 + ldr r1, [r0] + ldr r0, [r5, #8] + sub r0, r0, #1 + add r1, r1, r0 + add r0, r5, #0 + add r0, #0xac + str r1, [r0] + add r0, r5, #0 + add r0, #0x90 + add r1, r5, #4 + bl MOD45_02254B90 + cmp r0, #0 + beq _0225491C + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + mov r0, #8 + str r0, [sp] + ldr r0, _02254924 ; =0x02255018 + ldr r2, _02254928 ; =MOD45_022549E0 + mov r1, #0x25 + add r3, r5, #0 + bl MOD20_02254130 + add r1, r5, #0 + add r1, #0x9c + str r0, [r1] + add r0, r5, #0 + mov r1, #0 + add r0, #0xa0 + str r1, [r0] + add r5, #0x94 + add sp, #0x14 + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_0225491C: + mov r0, #0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_02254924: .word 0x02255018 +_02254928: .word MOD45_022549E0 + thumb_func_end MOD45_0225489C + + thumb_func_start MOD45_0225492C +MOD45_0225492C: ; 0x0225492C + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + add r6, r0, #0 + ldr r0, [r4, #4] + str r1, [sp] + str r0, [r6] + ldr r0, [r4, #8] + str r0, [r6, #8] + ldr r1, [r6] + ldr r0, _022549BC ; =0x022550AB + ldrb r0, [r0, r1] + str r0, [r6, #4] + ldr r0, [r6] + cmp r0, #2 + bne _02254970 + ldr r5, [r4] + mov r1, #0x19 + add r0, r5, #0 + lsl r1, r1, #4 + bl _u32_div_f + cmp r1, #0 + beq _0225496C + add r0, r5, #0 + mov r1, #0x64 + bl _u32_div_f + cmp r1, #0 + beq _02254970 + mov r0, #3 + tst r0, r5 + bne _02254970 +_0225496C: + mov r0, #0x1d + str r0, [r6, #4] +_02254970: + ldr r0, [r4, #8] + mov r1, #7 + sub r0, r0, #1 + bl _u32_div_f + mov r2, #7 + ldr r3, [r4, #0xc] + sub r0, r2, r1 + add r7, r3, r0 + cmp r7, #7 + blo _02254990 + add r0, r7, #0 + add r1, r2, #0 + bl _u32_div_f + add r7, r1, #0 +_02254990: + ldr r0, [r6, #4] + mov r4, #0 + cmp r0, #0 + bls _022549BA + add r5, r6, #0 +_0225499A: + ldr r0, [sp] + add r2, r4, #1 + strh r2, [r5, #0xc] + add r0, #0x98 + ldr r0, [r0] + ldr r1, [r6] + bl FUN_0204C064 + strb r0, [r5, #0xf] + add r0, r7, r4 + strb r0, [r5, #0xe] + ldr r0, [r6, #4] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blo _0225499A +_022549BA: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022549BC: .word 0x022550AB + thumb_func_end MOD45_0225492C + + thumb_func_start MOD45_022549C0 +MOD45_022549C0: ; 0x022549C0 + push {r4, lr} + add r4, r0, #0 + add r0, #0x9c + ldr r0, [r0] + bl MOD20_02254198 + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl MOD45_02254BCC + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD45_022549C0 + + thumb_func_start MOD45_022549E0 +MOD45_022549E0: ; 0x022549E0 + add r2, r3, #0 + add r2, #0xa4 + str r0, [r2] + add r3, #0xa0 + str r1, [r3] + bx lr + thumb_func_end MOD45_022549E0 + + thumb_func_start MOD45_022549EC +MOD45_022549EC: ; 0x022549EC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254A2A + add r0, r4, #0 + add r0, #0x94 + add r1, #0x9c + ldr r0, [r0] + ldr r1, [r1] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254A2C ; =0x0225500C + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254A2A + add r0, r4, #0 + bl MOD45_022549C0 + add r0, r5, #0 + bl FUN_0200CAB4 + add r4, #0x94 + ldr r0, [r4] + bl MOD20_022529A0 +_02254A2A: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254A2C: .word 0x0225500C + thumb_func_end MOD45_022549EC + + thumb_func_start MOD45_02254A30 +MOD45_02254A30: ; 0x02254A30 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD45_02254A30 + + thumb_func_start MOD45_02254A38 +MOD45_02254A38: ; 0x02254A38 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254A40 + b _02254A42 +_02254A40: + mov r1, #2 +_02254A42: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD45_02254A38 + + thumb_func_start MOD45_02254A4C +MOD45_02254A4C: ; 0x02254A4C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A5C + cmp r0, #1 + beq _02254A70 + b _02254A92 +_02254A5C: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + mov r1, #0 + bl MOD45_02254C7C + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A92 +_02254A70: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + mov r1, #0 + bl MOD45_02254CA0 + cmp r0, #0 + beq _02254A92 + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD45_02254A38 +_02254A92: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD45_02254A4C + + thumb_func_start MOD45_02254A98 +MOD45_02254A98: ; 0x02254A98 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrb r1, [r5, #2] + cmp r1, #0 + beq _02254AAC + mov r1, #2 + bl MOD45_02254A38 + mov r0, #0 + pop {r3, r4, r5, pc} +_02254AAC: + ldrb r0, [r5, #1] + cmp r0, #0 + beq _02254AB8 + cmp r0, #1 + beq _02254B3E + b _02254B52 +_02254AB8: + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + cmp r0, #1 + bne _02254B52 + add r0, r5, #0 + mov r1, #0 + add r0, #0xa0 + str r1, [r0] + add r0, r5, #0 + add r0, #0xa8 + ldr r2, [r0] + add r0, r5, #0 + add r0, #0xa4 + ldr r1, [r0] + cmp r1, r2 + blo _02254B52 + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + cmp r1, r0 + bhi _02254B52 + add r0, r5, #0 + add r0, #0x98 + sub r4, r1, r2 + ldr r0, [r0] + ldr r1, [r5, #4] + add r2, r4, #1 + bl FUN_0204C064 + cmp r0, #0 + beq _02254B08 + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + ldr r1, [r5, #4] + add r2, r4, #1 + bl FUN_0204C02C + b _02254B16 +_02254B08: + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + ldr r1, [r5, #4] + add r2, r4, #1 + bl FUN_0204BFF0 +_02254B16: + add r3, r5, #0 + add r3, #0x13 + lsl r2, r4, #2 + ldrb r1, [r3, r2] + mov r0, #1 + eor r0, r1 + strb r0, [r3, r2] + add r0, r5, #0 + add r0, #0x8c + str r4, [r0] + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + mov r1, #2 + bl MOD45_02254C7C + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] + b _02254B52 +_02254B3E: + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + mov r1, #2 + bl MOD45_02254CA0 + cmp r0, #0 + beq _02254B52 + mov r0, #0 + strb r0, [r5, #1] +_02254B52: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD45_02254A98 + + thumb_func_start MOD45_02254B58 +MOD45_02254B58: ; 0x02254B58 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254B68 + cmp r0, #1 + beq _02254B7C + b _02254B8C +_02254B68: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + mov r1, #1 + bl MOD45_02254C7C + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254B8C +_02254B7C: + add r4, #0x90 + ldr r0, [r4] + bl MOD45_02254CAC + cmp r0, #0 + beq _02254B8C + mov r0, #1 + pop {r4, pc} +_02254B8C: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD45_02254B58 + + thumb_func_start MOD45_02254B90 +MOD45_02254B90: ; 0x02254B90 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0x3c + bl FUN_02016998 + add r4, r0, #0 + beq _02254BC6 + add r0, #8 + mov r1, #4 + bl MOD20_022536F4 + str r5, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x20] + add r0, r4, #0 + add r1, r5, #0 + bl MOD45_02254BE0 + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254BC6: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD45_02254B90 + + thumb_func_start MOD45_02254BCC +MOD45_02254BCC: ; 0x02254BCC + push {r4, lr} + add r4, r0, #0 + beq _02254BDC + bl MOD45_02254C64 + add r0, r4, #0 + bl FUN_02016A18 +_02254BDC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD45_02254BCC + + thumb_func_start MOD45_02254BE0 +MOD45_02254BE0: ; 0x02254BE0 + push {r4, r5, lr} + sub sp, #0xc + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r5, r0, #0 + add r4, r1, #0 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x72 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + add r0, #0x28 + mov r1, #0xc + mov r2, #0x70 + mov r3, #0x71 + bl MOD20_02253FBC + add r2, r5, #0 + ldr r0, [r5, #0x20] + ldr r1, _02254C2C ; =0x022550B8 + add r2, #0x28 + bl MOD20_02253E74 + str r0, [r5, #0x24] + ldr r1, [r4, #8] + lsl r1, r1, #2 + add r1, r4, r1 + ldrb r1, [r1, #0xa] + bl MOD45_02254C30 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02254C2C: .word 0x022550B8 + thumb_func_end MOD45_02254BE0 + + thumb_func_start MOD45_02254C30 +MOD45_02254C30: ; 0x02254C30 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #7 + bl _u32_div_f + add r4, r1, #0 + add r0, r6, #0 + mov r1, #7 + bl _u32_div_f + add r2, r0, #0 + lsl r1, r4, #1 + lsl r3, r2, #1 + add r1, r4, r1 + add r2, r2, r3 + add r1, r1, #5 + add r2, r2, #6 + add r0, r5, #0 + lsl r1, r1, #0xf + lsl r2, r2, #0xf + bl MOD20_02253F64 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD45_02254C30 + + thumb_func_start MOD45_02254C64 +MOD45_02254C64: ; 0x02254C64 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x24] + bl MOD20_02253F14 + add r4, #0x28 + add r0, r4, #0 + bl MOD20_02254014 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD45_02254C64 + + thumb_func_start MOD45_02254C7C +MOD45_02254C7C: ; 0x02254C7C + 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, _02254C9C ; =0x02255140 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254C9C: .word 0x02255140 + thumb_func_end MOD45_02254C7C + + thumb_func_start MOD45_02254CA0 +MOD45_02254CA0: ; 0x02254CA0 + ldr r3, _02254CA8 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254CA8: .word MOD20_02253794 + thumb_func_end MOD45_02254CA0 + + thumb_func_start MOD45_02254CAC +MOD45_02254CAC: ; 0x02254CAC + ldr r3, _02254CB4 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254CB4: .word MOD20_022537B8 + thumb_func_end MOD45_02254CAC + + thumb_func_start MOD45_02254CB8 +MOD45_02254CB8: ; 0x02254CB8 + 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 MOD45_02254CB8 + + thumb_func_start MOD45_02254CCC +MOD45_02254CCC: ; 0x02254CCC + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r4, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254D60 ; =0x022550FC + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + ldr r2, _02254D64 ; =0x022550E0 + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + add r0, r5, #0 + add r1, r4, #0 + bl MOD45_02254DDC + add r0, r5, #0 + add r1, r4, #0 + bl MOD45_02254E74 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x6f + mov r3, #7 + bl FUN_0200687C + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r0, [r5, #4] + mov r1, #7 + bl FUN_02017CD0 + ldr r1, _02254D68 ; =0x04001000 + ldr r0, _02254D6C ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #0xc + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r6, #0 + bl MOD45_02254CB8 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02254D60: .word 0x022550FC +_02254D64: .word 0x022550E0 +_02254D68: .word 0x04001000 +_02254D6C: .word 0xFFFFE0FF + thumb_func_end MOD45_02254CCC + + thumb_func_start MOD45_02254D70 +MOD45_02254D70: ; 0x02254D70 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #7 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD45_02254CB8 + pop {r3, r4, r5, pc} + thumb_func_end MOD45_02254D70 + + thumb_func_start MOD45_02254D94 +MOD45_02254D94: ; 0x02254D94 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD20_022538A4 + add r2, r0, #0 + add r0, #0x88 + ldr r0, [r0] + lsl r3, r0, #2 + add r0, r2, r3 + ldrb r0, [r0, #0xf] + cmp r0, #0 + beq _02254DBA + mov r1, #0x8f + b _02254DBC +_02254DBA: + mov r1, #0x83 +_02254DBC: + add r2, r2, r3 + ldrb r2, [r2, #0xe] + lsl r1, r1, #0x10 + ldr r0, [r5, #4] + lsr r1, r1, #0x10 + bl MOD45_02254E28 + ldr r0, [r5, #4] + mov r1, #7 + bl FUN_02017CD0 + add r0, r4, #0 + bl MOD45_02254CB8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD45_02254D94 + + thumb_func_start MOD45_02254DDC +MOD45_02254DDC: ; 0x02254DDC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + add r6, r1, #0 + ldr r2, [r7, #4] + mov r0, #0xc + mov r1, #0x6e + mov r3, #7 + bl FUN_020068C8 + ldr r0, [r6, #4] + mov r4, #0 + cmp r0, #0 + bls _02254E22 + add r5, r6, #0 +_02254E08: + ldrb r0, [r5, #0xf] + cmp r0, #0 + beq _02254E18 + ldrb r2, [r5, #0xe] + ldr r0, [r7, #4] + mov r1, #0x8f + bl MOD45_02254E28 +_02254E18: + ldr r0, [r6, #4] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blo _02254E08 +_02254E22: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD45_02254DDC + + thumb_func_start MOD45_02254E28 +MOD45_02254E28: ; 0x02254E28 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r7, #0 + mov r1, #7 + bl _u32_div_f + add r4, r1, #0 + add r0, r7, #0 + mov r1, #7 + bl _u32_div_f + lsl r1, r0, #1 + add r0, r0, r1 + add r0, r0, #5 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r3, r4, #1 + str r0, [sp] + mov r0, #2 + add r3, r4, r3 + str r0, [sp, #4] + add r3, r3, #4 + str r0, [sp, #8] + mov r0, #0 + lsl r3, r3, #0x18 + str r0, [sp, #0xc] + add r0, r5, #0 + mov r1, #7 + add r2, r6, #0 + lsr r3, r3, #0x18 + bl FUN_02018540 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD45_02254E28 + + thumb_func_start MOD45_02254E74 +MOD45_02254E74: ; 0x02254E74 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r3, #0 + add r7, r0, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #0xc] + add r6, r1, #0 + ldr r0, [r7, #4] + mov r1, #6 + mov r2, #0x82 + bl FUN_02018540 + ldr r0, [r7, #4] + ldr r1, [r6] + bl MOD45_02254EBC + ldr r0, [r6, #4] + mov r4, #0 + cmp r0, #0 + bls _02254EB8 + add r5, r6, #0 +_02254EA4: + ldrb r2, [r5, #0xe] + ldr r0, [r7, #4] + add r1, r4, #1 + bl MOD45_02254F14 + ldr r0, [r6, #4] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blo _02254EA4 +_02254EB8: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD45_02254E74 + + thumb_func_start MOD45_02254EBC +MOD45_02254EBC: ; 0x02254EBC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + ldr r0, _02254F10 ; =0x022550C6 + lsl r1, r1, #1 + ldrh r4, [r0, r1] + mov r0, #0 + str r0, [sp, #0x10] +_02254ECC: + ldr r0, [sp, #0x10] + mov r5, #0 + add r0, r0, #2 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 +_02254ED6: + add r3, r5, #0 + add r2, r4, r5 + add r3, #0xc + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + str r6, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r7, #0 + mov r1, #6 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + add r5, r5, #1 + cmp r5, #4 + blt _02254ED6 + ldr r0, [sp, #0x10] + add r4, #0xc + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #2 + blt _02254ECC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02254F10: .word 0x022550C6 + thumb_func_end MOD45_02254EBC + + thumb_func_start MOD45_02254F14 +MOD45_02254F14: ; 0x02254F14 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r2, #0 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r5, #0 + mov r1, #7 + bl _u32_div_f + add r6, r1, #0 + lsl r0, r6, #1 + add r0, r6, r0 + add r4, r0, #4 + add r0, r5, #0 + mov r1, #7 + bl _u32_div_f + lsl r1, r0, #1 + add r0, r0, r1 + add r5, r0, #5 + cmp r6, #0 + bne _02254F44 + mov r6, #1 + b _02254F46 +_02254F44: + mov r6, #0 +_02254F46: + ldr r0, [sp, #0x14] + mov r1, #0xa + bl _u32_div_f + add r7, r0, #0 + ldr r0, [sp, #0x14] + mov r1, #0xa + bl _u32_div_f + str r1, [sp, #0x18] + cmp r7, #0 + beq _02254FAE + mov r0, #0x14 + add r2, r6, #0 + mul r2, r0 + ldr r0, _02255008 ; =0x02255118 + lsl r1, r7, #1 + add r0, r0, r2 + ldrh r7, [r1, r0] + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + lsl r3, r4, #0x18 + ldr r0, [sp, #0x10] + mov r1, #6 + add r2, r7, #0 + lsr r3, r3, #0x18 + bl FUN_02018540 + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + add r7, #0xc + str r0, [sp, #0xc] + lsl r2, r7, #0x10 + lsl r3, r4, #0x18 + ldr r0, [sp, #0x10] + mov r1, #6 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 +_02254FAE: + mov r0, #0x14 + add r3, r6, #0 + mul r3, r0 + ldr r0, [sp, #0x18] + ldr r2, _02255008 ; =0x02255118 + lsl r1, r0, #1 + add r0, r2, r3 + ldrh r6, [r1, r0] + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + add r3, r4, #1 + str r0, [sp, #0xc] + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + mov r1, #6 + add r2, r6, #0 + lsr r3, r3, #0x18 + bl FUN_02018540 + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + add r6, #0xc + add r3, r4, #1 + str r0, [sp, #0xc] + lsl r2, r6, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + mov r1, #6 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02255008: .word 0x02255118 + thumb_func_end MOD45_02254F14 + + .section .rodata + ; 0x0225500C + .incbin "baserom.nds", 0x2961CC, 0x164 + + .section .sinit + .word MOD45_02254840 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 diff --git a/arm9/modules/47/asm/module_47.s b/arm9/modules/47/asm/module_47.s new file mode 100644 index 00000000..c10b696b --- /dev/null +++ b/arm9/modules/47/asm/module_47.s @@ -0,0 +1,1497 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD47_02254840 +MOD47_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD47_02254854 + ldr r1, _02254850 ; =MOD47_0225491C + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD47_02254854 +_02254850: .word MOD47_0225491C + thumb_func_end MOD47_02254840 + + thumb_func_start MOD47_02254854 +MOD47_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x24 + 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 MOD47_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD47_022548E0 + 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 MOD47_022548E0 + thumb_func_end MOD47_02254854 + + thumb_func_start MOD47_0225489C +MOD47_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x14 + add r1, r5, #4 + bl MOD47_02254D14 + cmp r0, #0 + beq _022548C8 + mov r1, #0 + strb r1, [r5] + strb r1, [r5, #1] + add r0, r5, #0 + strb r1, [r5, #2] + add r0, #0x20 + strb r1, [r0] + add r0, r5, #0 + add r0, #0x21 + strb r1, [r0] + str r4, [r5, #0x18] + mov r0, #1 + pop {r3, r4, r5, pc} +_022548C8: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD47_0225489C + + thumb_func_start MOD47_022548CC +MOD47_022548CC: ; 0x022548CC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl MOD47_02254D6C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD47_022548CC + + thumb_func_start MOD47_022548E0 +MOD47_022548E0: ; 0x022548E0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #6 + bhs _02254914 + add r0, r4, #0 + bl MOD47_02254C6C + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254918 ; =0x022553B8 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254914 + add r0, r4, #0 + bl MOD47_022548CC + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x18] + bl MOD20_022529A0 +_02254914: + pop {r3, r4, r5, pc} + nop +_02254918: .word 0x022553B8 + thumb_func_end MOD47_022548E0 + + thumb_func_start MOD47_0225491C +MOD47_0225491C: ; 0x0225491C + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD47_0225491C + + thumb_func_start MOD47_02254924 +MOD47_02254924: ; 0x02254924 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _0225492C + b _0225492E +_0225492C: + mov r1, #5 +_0225492E: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD47_02254924 + + thumb_func_start MOD47_02254938 +MOD47_02254938: ; 0x02254938 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254948 + cmp r0, #1 + beq _02254958 + b _02254972 +_02254948: + ldr r0, [r4, #0x14] + mov r1, #0 + bl MOD47_02254E24 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254972 +_02254958: + ldr r0, [r4, #0x14] + mov r1, #0 + bl MOD47_02254E48 + cmp r0, #0 + beq _02254972 + ldr r0, [r4, #0x18] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD47_02254924 +_02254972: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD47_02254938 + + thumb_func_start MOD47_02254978 +MOD47_02254978: ; 0x02254978 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _0225498C + mov r1, #5 + bl MOD47_02254924 + mov r0, #0 + pop {r3, r4, r5, pc} +_0225498C: + ldrb r1, [r4, #1] + cmp r1, #0 + bne _022549DA + bl MOD47_02254BD4 + cmp r0, #0 + beq _022549DA + add r0, r4, #0 + bl MOD47_02254D04 + cmp r0, #0 + beq _022549D4 + ldr r0, [r4, #0x18] + bl MOD20_02252C38 + add r5, r0, #0 + ldr r0, [r4, #0x14] + mov r1, #3 + bl MOD47_02254E24 + ldr r0, [r5, #0x1c] + ldr r0, [r0] + bl FUN_02034984 + cmp r0, #0 + beq _022549CA + add r0, r4, #0 + mov r1, #3 + bl MOD47_02254924 + b _022549DA +_022549CA: + add r0, r4, #0 + mov r1, #2 + bl MOD47_02254924 + b _022549DA +_022549D4: + ldr r0, _022549E0 ; =0x0000066E + bl MOD20_02252B28 +_022549DA: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_022549E0: .word 0x0000066E + thumb_func_end MOD47_02254978 + + thumb_func_start MOD47_022549E4 +MOD47_022549E4: ; 0x022549E4 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _022549F8 + mov r1, #5 + bl MOD47_02254924 + mov r0, #0 + pop {r4, pc} +_022549F8: + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254A08 + cmp r1, #1 + beq _02254A18 + cmp r1, #2 + beq _02254A60 + b _02254AAC +_02254A08: + bl MOD47_02254CCC + mov r0, #0 + str r0, [r4, #0x1c] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254AAC +_02254A18: + bl MOD47_02254AB0 + cmp r0, #0 + beq _02254A2C + add r0, r4, #0 + mov r1, #4 + bl MOD47_02254924 + mov r0, #0 + pop {r4, pc} +_02254A2C: + ldr r0, [r4, #0x1c] + cmp r0, #0x3c + bhs _02254A36 + add r0, r0, #1 + str r0, [r4, #0x1c] +_02254A36: + add r0, r4, #0 + bl MOD47_02254CEC + cmp r0, #0 + beq _02254AAC + ldr r0, [r4, #0x1c] + cmp r0, #0x3c + blo _02254AAC + add r0, r4, #0 + bl MOD47_02254C1C + ldr r0, [r4, #0x14] + mov r1, #6 + bl MOD47_02254E24 + mov r0, #0 + str r0, [r4, #0x1c] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254AAC +_02254A60: + bl MOD47_02254AB0 + cmp r0, #0 + bne _02254A72 + add r0, r4, #0 + bl MOD47_02254BD4 + cmp r0, #0 + beq _02254A8C +_02254A72: + add r0, r4, #0 + bl MOD47_02254CFC + ldr r0, [r4, #0x14] + mov r1, #2 + bl MOD47_02254E24 + add r0, r4, #0 + mov r1, #1 + bl MOD47_02254924 + mov r0, #0 + pop {r4, pc} +_02254A8C: + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + cmp r0, #0x1e + blo _02254AAC + mov r0, #0 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD47_02254C1C + cmp r0, #0 + beq _02254AAC + ldr r0, [r4, #0x14] + mov r1, #6 + bl MOD47_02254E24 +_02254AAC: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD47_022549E4 + + thumb_func_start MOD47_02254AB0 +MOD47_02254AB0: ; 0x02254AB0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + bl MOD20_02252C08 + cmp r0, #0 + beq _02254AC2 + mov r0, #1 + pop {r4, pc} +_02254AC2: + ldr r0, [r4, #0x18] + bl MOD20_02252C30 + cmp r0, #0 + beq _02254AD0 + mov r0, #1 + pop {r4, pc} +_02254AD0: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD47_02254AB0 + + thumb_func_start MOD47_02254AD4 +MOD47_02254AD4: ; 0x02254AD4 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254AE8 + mov r1, #5 + bl MOD47_02254924 + mov r0, #0 + pop {r4, pc} +_02254AE8: + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254AF8 + cmp r1, #1 + beq _02254B02 + cmp r1, #2 + beq _02254B1C + b _02254B34 +_02254AF8: + mov r0, #0 + str r0, [r4, #0x1c] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] +_02254B02: + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + cmp r0, #0x3c + blo _02254B34 + ldr r0, [r4, #0x14] + mov r1, #4 + bl MOD47_02254E24 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254B34 +_02254B1C: + bl MOD47_02254BD4 + cmp r0, #0 + beq _02254B34 + ldr r0, [r4, #0x14] + mov r1, #2 + bl MOD47_02254E24 + add r0, r4, #0 + mov r1, #1 + bl MOD47_02254924 +_02254B34: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD47_02254AD4 + + thumb_func_start MOD47_02254B38 +MOD47_02254B38: ; 0x02254B38 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254B4C + mov r1, #5 + bl MOD47_02254924 + mov r0, #0 + pop {r4, pc} +_02254B4C: + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254B58 + cmp r1, #1 + beq _02254B6C + b _02254B84 +_02254B58: + bl MOD47_02254CFC + ldr r0, [r4, #0x14] + mov r1, #5 + bl MOD47_02254E24 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254B84 +_02254B6C: + bl MOD47_02254BD4 + cmp r0, #0 + beq _02254B84 + ldr r0, [r4, #0x14] + mov r1, #2 + bl MOD47_02254E24 + add r0, r4, #0 + mov r1, #1 + bl MOD47_02254924 +_02254B84: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD47_02254B38 + + thumb_func_start MOD47_02254B88 +MOD47_02254B88: ; 0x02254B88 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254B9C + cmp r1, #1 + beq _02254BA6 + cmp r1, #2 + beq _02254BC0 + b _02254BCE +_02254B9C: + bl MOD47_02254CFC + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] +_02254BA6: + add r0, r4, #0 + bl MOD47_02254D04 + cmp r0, #0 + beq _02254BCE + ldr r0, [r4, #0x14] + mov r1, #1 + bl MOD47_02254E24 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254BCE +_02254BC0: + ldr r0, [r4, #0x14] + bl MOD47_02254E54 + cmp r0, #0 + beq _02254BCE + mov r0, #1 + pop {r4, pc} +_02254BCE: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD47_02254B88 + + thumb_func_start MOD47_02254BD4 +MOD47_02254BD4: ; 0x02254BD4 + push {r3, lr} + sub sp, #8 + ldr r0, [r0, #0x18] + bl MOD20_02252C08 + cmp r0, #0 + bne _02254C14 + add r0, sp, #4 + add r1, sp, #0 + bl FUN_02020ACC + cmp r0, #0 + beq _02254C14 + ldr r0, [sp, #4] + sub r0, #0x10 + cmp r0, #0xbf + bhs _02254BFA + mov r1, #1 + b _02254BFC +_02254BFA: + mov r1, #0 +_02254BFC: + ldr r0, [sp] + sub r0, #0x10 + cmp r0, #0x9f + bhs _02254C08 + mov r0, #1 + b _02254C0A +_02254C08: + mov r0, #0 +_02254C0A: + tst r0, r1 + beq _02254C14 + add sp, #8 + mov r0, #1 + pop {r3, pc} +_02254C14: + mov r0, #0 + add sp, #8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD47_02254BD4 + + thumb_func_start MOD47_02254C1C +MOD47_02254C1C: ; 0x02254C1C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + mov r0, #0 + ldr r5, _02254C68 ; =0x022553D0 + str r0, [sp] + str r0, [sp, #4] +_02254C2A: + ldr r0, [r5, #4] + mov r4, #0 + add r6, r4, #0 + cmp r0, #0 + bls _02254C46 +_02254C34: + ldr r0, [r5] + ldrb r0, [r0, r4] + bl FUN_0202F0DC + add r6, r6, r0 + ldr r0, [r5, #4] + add r4, r4, #1 + cmp r4, r0 + blo _02254C34 +_02254C46: + ldr r0, [r7, #4] + cmp r6, r0 + beq _02254C52 + mov r0, #1 + str r6, [r7, #4] + str r0, [sp] +_02254C52: + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + add r7, r7, #4 + str r0, [sp, #4] + cmp r0, #4 + blo _02254C2A + ldr r0, [sp] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254C68: .word 0x022553D0 + thumb_func_end MOD47_02254C1C + + thumb_func_start MOD47_02254C6C +MOD47_02254C6C: ; 0x02254C6C + push {r4, lr} + add r4, r0, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #3 + bhi _02254CC8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02254C84: ; jump table + .short _02254CC8 - _02254C84 - 2 ; case 0 + .short _02254C8C - _02254C84 - 2 ; case 1 + .short _02254C9C - _02254C84 - 2 ; case 2 + .short _02254CBA - _02254C84 - 2 ; case 3 +_02254C8C: + bl FUN_02032C28 + cmp r0, #0 + beq _02254CC8 + mov r0, #2 + add r4, #0x20 + strb r0, [r4] + pop {r4, pc} +_02254C9C: + add r0, r4, #0 + add r0, #0x21 + ldrb r0, [r0] + cmp r0, #0 + beq _02254CC8 + bl FUN_02032C0C + add r0, r4, #0 + mov r1, #0 + add r0, #0x21 + strb r1, [r0] + mov r0, #3 + add r4, #0x20 + strb r0, [r4] + pop {r4, pc} +_02254CBA: + bl FUN_02030F40 + cmp r0, #0 + bne _02254CC8 + mov r0, #0 + add r4, #0x20 + strb r0, [r4] +_02254CC8: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD47_02254C6C + + thumb_func_start MOD47_02254CCC +MOD47_02254CCC: ; 0x02254CCC + push {r4, lr} + add r4, r0, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + bne _02254CE8 + ldr r0, [r4, #0x18] + bl MOD20_02252C40 + bl FUN_02032BD0 + mov r0, #1 + add r4, #0x20 + strb r0, [r4] +_02254CE8: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD47_02254CCC + + thumb_func_start MOD47_02254CEC +MOD47_02254CEC: ; 0x02254CEC + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #2 + bne _02254CF8 + mov r0, #1 + bx lr +_02254CF8: + mov r0, #0 + bx lr + thumb_func_end MOD47_02254CEC + + thumb_func_start MOD47_02254CFC +MOD47_02254CFC: ; 0x02254CFC + mov r1, #1 + add r0, #0x21 + strb r1, [r0] + bx lr + thumb_func_end MOD47_02254CFC + + thumb_func_start MOD47_02254D04 +MOD47_02254D04: ; 0x02254D04 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + bne _02254D10 + mov r0, #1 + bx lr +_02254D10: + mov r0, #0 + bx lr + thumb_func_end MOD47_02254D04 + + thumb_func_start MOD47_02254D14 +MOD47_02254D14: ; 0x02254D14 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0x60 + bl FUN_02016998 + add r4, r0, #0 + beq _02254D62 + add r0, #8 + mov r1, #4 + bl MOD20_022536F4 + str r5, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x30] + ldr r2, _02254D68 ; =0x0000019A + mov r0, #1 + mov r1, #0x1a + mov r3, #8 + bl FUN_0200A86C + str r0, [r4, #0x58] + mov r0, #0x60 + mov r1, #8 + bl FUN_020219F4 + str r0, [r4, #0x5c] + add r0, r4, #0 + add r1, r5, #0 + bl MOD47_02254D8C + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254D62: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02254D68: .word 0x0000019A + thumb_func_end MOD47_02254D14 + + thumb_func_start MOD47_02254D6C +MOD47_02254D6C: ; 0x02254D6C + push {r4, lr} + add r4, r0, #0 + beq _02254D8A + ldr r0, [r4, #0x5c] + bl FUN_02021A20 + ldr r0, [r4, #0x58] + bl FUN_0200A8B8 + add r0, r4, #0 + bl MOD47_02254DFC + add r0, r4, #0 + bl FUN_02016A18 +_02254D8A: + pop {r4, pc} + thumb_func_end MOD47_02254D6C + + thumb_func_start MOD47_02254D8C +MOD47_02254D8C: ; 0x02254D8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r6, r0, #0 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x63 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r6, #0 + add r0, #0x44 + mov r1, #0xc + mov r2, #0x61 + mov r3, #0x62 + bl MOD20_02253FBC + add r0, r6, #0 + str r0, [sp, #0xc] + add r0, #0x44 + ldr r4, _02254DF8 ; =0x02255410 + mov r7, #0 + add r5, r6, #0 + str r0, [sp, #0xc] +_02254DC6: + ldr r0, [r6, #0x30] + ldr r2, [sp, #0xc] + add r1, r4, #0 + bl MOD20_02253E74 + str r0, [r5, #0x34] + add r7, r7, #1 + add r4, #0x10 + add r5, r5, #4 + cmp r7, #4 + blt _02254DC6 + ldr r0, [r6, #0x38] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r6, #0x3c] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r6, #0x40] + mov r1, #1 + bl MOD20_02253F78 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254DF8: .word 0x02255410 + thumb_func_end MOD47_02254D8C + + thumb_func_start MOD47_02254DFC +MOD47_02254DFC: ; 0x02254DFC + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02254E04: + ldr r1, [r5, #0x34] + cmp r1, #0 + beq _02254E10 + ldr r0, [r6, #0x30] + bl MOD20_02253F14 +_02254E10: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02254E04 + add r6, #0x44 + add r0, r6, #0 + bl MOD20_02254014 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD47_02254DFC + + thumb_func_start MOD47_02254E24 +MOD47_02254E24: ; 0x02254E24 + 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, _02254E44 ; =0x02255450 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254E44: .word 0x02255450 + thumb_func_end MOD47_02254E24 + + thumb_func_start MOD47_02254E48 +MOD47_02254E48: ; 0x02254E48 + ldr r3, _02254E50 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254E50: .word MOD20_02253794 + thumb_func_end MOD47_02254E48 + + thumb_func_start MOD47_02254E54 +MOD47_02254E54: ; 0x02254E54 + ldr r3, _02254E5C ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254E5C: .word MOD20_022537B8 + thumb_func_end MOD47_02254E54 + + thumb_func_start MOD47_02254E60 +MOD47_02254E60: ; 0x02254E60 + 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 MOD47_02254E60 + + thumb_func_start MOD47_02254E74 +MOD47_02254E74: ; 0x02254E74 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254F28 ; =0x022553F4 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x60 + mov r3, #6 + bl FUN_0200687C + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x5f + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + mov r3, #2 + add r1, r5, #0 + str r3, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #0x14 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + lsl r0, r4, #0xb + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #4] + add r1, #0x20 + mov r2, #6 + bl FUN_02019064 + add r0, r5, #0 + add r0, #0x20 + bl FUN_02019270 + add r0, r5, #0 + bl MOD47_022550FC + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254F2C ; =0x04001000 + ldr r0, _02254F30 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x14] + 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, r6, #0 + bl MOD47_02254E60 + add sp, #0x18 + pop {r4, r5, r6, pc} + .align 2, 0 +_02254F28: .word 0x022553F4 +_02254F2C: .word 0x04001000 +_02254F30: .word 0xFFFFE0FF + thumb_func_end MOD47_02254E74 + + thumb_func_start MOD47_02254F34 +MOD47_02254F34: ; 0x02254F34 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, #0x20 + bl FUN_02019178 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD47_02254E60 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD47_02254F34 + + thumb_func_start MOD47_02254F58 +MOD47_02254F58: ; 0x02254F58 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x38] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r4, #0x40] + mov r1, #1 + bl MOD20_02253F78 + add r0, r4, #0 + bl MOD47_022550FC + ldr r0, _02254F98 ; =0x00000663 + bl MOD20_02252B28 + add r0, r5, #0 + bl MOD47_02254E60 + pop {r3, r4, r5, pc} + .align 2, 0 +_02254F98: .word 0x00000663 + thumb_func_end MOD47_02254F58 + + thumb_func_start MOD47_02254F9C +MOD47_02254F9C: ; 0x02254F9C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x38] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r4, #0x40] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r4, #0x38] + mov r1, #1 + bl MOD20_02253F28 + add r0, r4, #0 + bl MOD47_02255184 + ldr r0, _02254FE4 ; =0x00000663 + bl MOD20_02252B28 + add r0, r5, #0 + bl MOD47_02254E60 + pop {r3, r4, r5, pc} + .align 2, 0 +_02254FE4: .word 0x00000663 + thumb_func_end MOD47_02254F9C + + thumb_func_start MOD47_02254FE8 +MOD47_02254FE8: ; 0x02254FE8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x38] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r4, #0x3c] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x40] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r4, #0x3c] + mov r1, #2 + bl MOD20_02253F28 + add r0, r4, #0 + bl MOD47_022551D8 + ldr r0, _02255030 ; =0x0000066E + bl MOD20_02252B28 + add r0, r5, #0 + bl MOD47_02254E60 + pop {r3, r4, r5, pc} + .align 2, 0 +_02255030: .word 0x0000066E + thumb_func_end MOD47_02254FE8 + + thumb_func_start MOD47_02255034 +MOD47_02255034: ; 0x02255034 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x38] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r4, #0x3c] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x40] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r4, #0x3c] + mov r1, #2 + bl MOD20_02253F28 + add r0, r4, #0 + bl MOD47_02255250 + ldr r0, _0225507C ; =0x0000066E + bl MOD20_02252B28 + add r0, r5, #0 + bl MOD47_02254E60 + pop {r3, r4, r5, pc} + .align 2, 0 +_0225507C: .word 0x0000066E + thumb_func_end MOD47_02255034 + + thumb_func_start MOD47_02255080 +MOD47_02255080: ; 0x02255080 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r6, r0, #0 + ldr r0, [r4, #0x34] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r4, #0x38] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r4, #0x40] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x40] + mov r1, #0 + bl MOD20_02253F28 + add r0, r4, #0 + add r1, r6, #0 + bl MOD47_022552D8 + ldr r0, _022550D4 ; =0x00000663 + bl MOD20_02252B28 + add r0, r5, #0 + bl MOD47_02254E60 + pop {r4, r5, r6, pc} + nop +_022550D4: .word 0x00000663 + thumb_func_end MOD47_02255080 + + thumb_func_start MOD47_022550D8 +MOD47_022550D8: ; 0x022550D8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r1, r0, #0 + add r0, r4, #0 + bl MOD47_022552D8 + add r0, r5, #0 + bl MOD47_02254E60 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD47_022550D8 + + thumb_func_start MOD47_022550FC +MOD47_022550FC: ; 0x022550FC + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + add r0, #0x20 + mov r1, #4 + bl FUN_02019620 + ldr r0, [r4, #0x58] + ldr r2, [r4, #0x5c] + mov r1, #0 + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r4, #0x5c] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xc0 + sub r0, r1, r0 + lsr r3, r0, #1 + mov r0, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02255180 ; =0x00010104 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x20 + bl FUN_0201BDE0 + ldr r0, [r4, #0x58] + ldr r2, [r4, #0x5c] + mov r1, #0xa + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r4, #0x5c] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xc0 + sub r0, r1, r0 + lsr r3, r0, #1 + mov r0, #0x38 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02255180 ; =0x00010104 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x20 + bl FUN_0201BDE0 + add r4, #0x20 + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x10 + pop {r4, pc} + nop +_02255180: .word 0x00010104 + thumb_func_end MOD47_022550FC + + thumb_func_start MOD47_02255184 +MOD47_02255184: ; 0x02255184 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + add r0, #0x20 + mov r1, #4 + bl FUN_02019620 + ldr r0, [r4, #0x58] + ldr r2, [r4, #0x5c] + mov r1, #1 + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r4, #0x5c] + add r2, r0, #0 + bl FUN_02002F08 + mov r1, #0xc0 + sub r0, r1, r0 + lsr r3, r0, #1 + mov r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022551D4 ; =0x00010104 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x20 + bl FUN_0201BDE0 + add r4, #0x20 + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x10 + pop {r4, pc} + nop +_022551D4: .word 0x00010104 + thumb_func_end MOD47_02255184 + + thumb_func_start MOD47_022551D8 +MOD47_022551D8: ; 0x022551D8 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + add r0, #0x20 + mov r1, #4 + bl FUN_02019620 + ldr r0, [r4, #0x58] + ldr r2, [r4, #0x5c] + mov r1, #2 + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r4, #0x5c] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xc0 + sub r0, r1, r0 + lsr r3, r0, #1 + mov r0, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0225524C ; =0x00010104 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x20 + bl FUN_0201BDE0 + ldr r0, [r4, #0x58] + ldr r2, [r4, #0x5c] + mov r1, #3 + bl FUN_0200A8E0 + mov r0, #0x18 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0225524C ; =0x00010104 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x20 + mov r3, #0x10 + bl FUN_0201BDE0 + add r4, #0x20 + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0225524C: .word 0x00010104 + thumb_func_end MOD47_022551D8 + + thumb_func_start MOD47_02255250 +MOD47_02255250: ; 0x02255250 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + add r0, #0x20 + mov r1, #4 + bl FUN_02019620 + ldr r0, [r4, #0x58] + ldr r2, [r4, #0x5c] + mov r1, #2 + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r4, #0x5c] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xc0 + sub r0, r1, r0 + lsr r3, r0, #1 + mov r0, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022552D4 ; =0x00010104 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x20 + bl FUN_0201BDE0 + ldr r0, [r4, #0x58] + ldr r2, [r4, #0x5c] + mov r1, #4 + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r4, #0x5c] + add r2, r0, #0 + bl FUN_02002F08 + mov r1, #0xc0 + sub r0, r1, r0 + lsr r3, r0, #1 + mov r0, #0x18 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _022552D4 ; =0x00010104 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x20 + bl FUN_0201BDE0 + add r4, #0x20 + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x10 + pop {r4, pc} + nop +_022552D4: .word 0x00010104 + thumb_func_end MOD47_02255250 + + thumb_func_start MOD47_022552D8 +MOD47_022552D8: ; 0x022552D8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + add r7, r1, #0 + add r0, #0x20 + mov r1, #4 + bl FUN_02019620 + ldr r0, [r5, #0x58] + ldr r2, [r5, #0x5c] + mov r1, #5 + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r5, #0x5c] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xc0 + sub r0, r1, r0 + lsr r3, r0, #1 + mov r0, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02255398 ; =0x00010104 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + ldr r2, [r5, #0x5c] + add r0, #0x20 + bl FUN_0201BDE0 + mov r0, #0 + str r0, [sp, #0x10] + add r0, r5, #0 + str r0, [sp, #0x14] + add r0, #0x20 + ldr r6, _0225539C ; =0x022553F0 + mov r4, #0x20 + str r0, [sp, #0x14] +_0225532C: + ldrb r1, [r6] + ldr r0, [r5, #0x58] + ldr r2, [r5, #0x5c] + bl FUN_0200A8E0 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02255398 ; =0x00010104 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + ldr r2, [r5, #0x5c] + mov r3, #8 + bl FUN_0201BDE0 + mov r0, #1 + str r0, [sp] + mov r2, #2 + ldr r0, [r5, #0x5c] + ldr r1, [r7] + add r3, r2, #0 + bl FUN_02021B04 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02255398 ; =0x00010104 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + ldr r2, [r5, #0x5c] + mov r3, #0xa0 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + add r6, r6, #1 + add r0, r0, #1 + add r4, #0x10 + add r7, r7, #4 + str r0, [sp, #0x10] + cmp r0, #4 + blt _0225532C + add r5, #0x20 + add r0, r5, #0 + bl FUN_02019548 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02255398: .word 0x00010104 +_0225539C: .word 0x022553F0 + thumb_func_end MOD47_022552D8 + + .section .rodata + ; 0x022553A0 + .incbin "baserom.nds", 0x297360, 0x11C + + ; .section .sinit + .global SDK_OVERLAY.MODULE_47.SINIT_START + .global SDK_OVERLAY.MODULE_47.SINIT_END +SDK_OVERLAY.MODULE_47.SINIT_START: + .word MOD47_02254840 + .word 0 +SDK_OVERLAY.MODULE_47.SINIT_END: diff --git a/arm9/modules/48/asm/module_48.s b/arm9/modules/48/asm/module_48.s new file mode 100644 index 00000000..bcb3b7b4 --- /dev/null +++ b/arm9/modules/48/asm/module_48.s @@ -0,0 +1,960 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD48_02254840 +MOD48_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD48_02254854 + ldr r1, _02254850 ; =MOD48_0225498C + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD48_02254854 +_02254850: .word MOD48_0225498C + thumb_func_end MOD48_02254840 + + thumb_func_start MOD48_02254854 +MOD48_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x40 + 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 MOD48_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD48_02254950 + 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 MOD48_02254950 + thumb_func_end MOD48_02254854 + + thumb_func_start MOD48_0225489C +MOD48_0225489C: ; 0x0225489C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + add r0, r1, #0 + str r1, [sp, #4] + str r2, [sp, #8] + bl MOD20_02252C38 + add r6, r0, #0 + bl MOD06_02245824 + str r0, [r7, #8] + cmp r0, #0 + beq _022548C0 + add r0, r6, #0 + bl MOD06_0224582C + b _022548C2 +_022548C0: + mov r0, #0 +_022548C2: + str r0, [r7, #4] + mov r4, #0 + add r5, r7, #0 +_022548C8: + lsl r1, r4, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x18 + bl MOD06_022457F8 + lsl r1, r4, #0x18 + str r0, [r5, #0x18] + add r0, r6, #0 + lsr r1, r1, #0x18 + bl MOD06_022457CC + str r0, [r5, #0xc] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _022548C8 + add r0, r6, #0 + bl MOD06_022457A8 + str r0, [r7, #0x24] + add r0, r7, #0 + ldr r2, [sp, #8] + add r0, #0x2c + add r1, r7, #4 + bl MOD48_02254AA0 + cmp r0, #0 + beq _0225492A + mov r0, #0 + strb r0, [r7] + strb r0, [r7, #1] + strb r0, [r7, #2] + mov r0, #8 + str r0, [sp] + ldr r0, _02254930 ; =0x02254F60 + ldr r2, _02254934 ; =MOD48_02254994 + mov r1, #3 + add r3, r7, #0 + bl MOD20_02254130 + str r0, [r7, #0x34] + mov r0, #0 + str r0, [r7, #0x38] + str r0, [r7, #0x3c] + ldr r0, [sp, #4] + add sp, #0xc + str r0, [r7, #0x30] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0225492A: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254930: .word 0x02254F60 +_02254934: .word MOD48_02254994 + thumb_func_end MOD48_0225489C + + thumb_func_start MOD48_02254938 +MOD48_02254938: ; 0x02254938 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x34] + bl MOD20_02254198 + ldr r0, [r4, #0x2c] + bl MOD48_02254AD4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD48_02254938 + + thumb_func_start MOD48_02254950 +MOD48_02254950: ; 0x02254950 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254986 + ldr r0, [r4, #0x30] + ldr r1, [r4, #0x34] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254988 ; =0x02254F6C + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254986 + add r0, r4, #0 + bl MOD48_02254938 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x30] + bl MOD20_022529A0 +_02254986: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254988: .word 0x02254F6C + thumb_func_end MOD48_02254950 + + thumb_func_start MOD48_0225498C +MOD48_0225498C: ; 0x0225498C + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD48_0225498C + + thumb_func_start MOD48_02254994 +MOD48_02254994: ; 0x02254994 + str r0, [r3, #0x3c] + str r1, [r3, #0x38] + bx lr + .align 2, 0 + thumb_func_end MOD48_02254994 + + thumb_func_start MOD48_0225499C +MOD48_0225499C: ; 0x0225499C + ldrb r2, [r0, #2] + cmp r2, #0 + bne _022549A4 + b _022549A6 +_022549A4: + mov r1, #2 +_022549A6: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD48_0225499C + + thumb_func_start MOD48_022549B0 +MOD48_022549B0: ; 0x022549B0 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549C0 + cmp r0, #1 + beq _022549D0 + b _022549EA +_022549C0: + ldr r0, [r4, #0x2c] + mov r1, #0 + bl MOD48_02254AE0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549EA +_022549D0: + ldr r0, [r4, #0x2c] + mov r1, #0 + bl MOD48_02254B04 + cmp r0, #0 + beq _022549EA + ldr r0, [r4, #0x30] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD48_0225499C +_022549EA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD48_022549B0 + + thumb_func_start MOD48_022549F0 +MOD48_022549F0: ; 0x022549F0 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254A04 + mov r1, #2 + bl MOD48_0225499C + mov r0, #0 + pop {r3, r4, r5, pc} +_02254A04: + ldr r0, [r4, #0x30] + bl MOD20_02252C38 + add r5, r0, #0 + bl MOD06_02245824 + str r0, [r4, #8] + cmp r0, #0 + bne _02254A1A + mov r0, #0 + b _02254A20 +_02254A1A: + add r0, r5, #0 + bl MOD06_0224582C +_02254A20: + ldr r1, [r4, #4] + cmp r0, r1 + beq _02254A34 + str r0, [r4, #4] + ldr r0, [r4, #0x2c] + mov r1, #2 + bl MOD48_02254AE0 + mov r0, #0 + pop {r3, r4, r5, pc} +_02254A34: + ldr r0, [r4, #0x2c] + mov r1, #3 + bl MOD48_02254B04 + cmp r0, #0 + beq _02254A66 + ldr r0, [r4, #0x38] + cmp r0, #1 + bne _02254A66 + ldr r1, [r4, #0x3c] + ldr r0, [r4, #0x24] + cmp r1, r0 + bhs _02254A62 + lsl r0, r1, #2 + add r0, r4, r0 + ldr r0, [r0, #0x18] + cmp r0, #0 + beq _02254A62 + str r1, [r4, #0x28] + ldr r0, [r4, #0x2c] + mov r1, #3 + bl MOD48_02254AE0 +_02254A62: + mov r0, #0 + str r0, [r4, #0x38] +_02254A66: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD48_022549F0 + + thumb_func_start MOD48_02254A6C +MOD48_02254A6C: ; 0x02254A6C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A7C + cmp r0, #1 + beq _02254A8C + b _02254A9A +_02254A7C: + ldr r0, [r4, #0x2c] + mov r1, #1 + bl MOD48_02254AE0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A9A +_02254A8C: + ldr r0, [r4, #0x2c] + bl MOD48_02254B10 + cmp r0, #0 + beq _02254A9A + mov r0, #1 + pop {r4, pc} +_02254A9A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD48_02254A6C + + thumb_func_start MOD48_02254AA0 +MOD48_02254AA0: ; 0x02254AA0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0xb0 + bl FUN_02016998 + add r4, r0, #0 + beq _02254ACE + add r0, #8 + mov r1, #4 + bl MOD20_022536F4 + str r6, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x20] + str r4, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254ACE: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD48_02254AA0 + + thumb_func_start MOD48_02254AD4 +MOD48_02254AD4: ; 0x02254AD4 + push {r3, lr} + cmp r0, #0 + beq _02254ADE + bl FUN_02016A18 +_02254ADE: + pop {r3, pc} + thumb_func_end MOD48_02254AD4 + + thumb_func_start MOD48_02254AE0 +MOD48_02254AE0: ; 0x02254AE0 + 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, _02254B00 ; =0x02254F94 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254B00: .word 0x02254F94 + thumb_func_end MOD48_02254AE0 + + thumb_func_start MOD48_02254B04 +MOD48_02254B04: ; 0x02254B04 + ldr r3, _02254B0C ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254B0C: .word MOD20_02253794 + thumb_func_end MOD48_02254B04 + + thumb_func_start MOD48_02254B10 +MOD48_02254B10: ; 0x02254B10 + ldr r3, _02254B18 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254B18: .word MOD20_022537B8 + thumb_func_end MOD48_02254B10 + + thumb_func_start MOD48_02254B1C +MOD48_02254B1C: ; 0x02254B1C + 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 MOD48_02254B1C + + thumb_func_start MOD48_02254B30 +MOD48_02254B30: ; 0x02254B30 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r6, r0, #0 + ldr r0, [r4, #4] + ldr r2, _02254BBC ; =0x02254F78 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0xc + mov r1, #0x7a + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0xc + mov r1, #0x79 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + add r0, r4, #0 + add r1, r6, #0 + bl MOD48_02254D2C + ldr r1, _02254BC0 ; =0x04001000 + ldr r0, _02254BC4 ; =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, r5, #0 + bl MOD48_02254B1C + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_02254BBC: .word 0x02254F78 +_02254BC0: .word 0x04001000 +_02254BC4: .word 0xFFFFE0FF + thumb_func_end MOD48_02254B30 + + thumb_func_start MOD48_02254BC8 +MOD48_02254BC8: ; 0x02254BC8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + bl MOD48_02254EC0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD48_02254B1C + pop {r3, r4, r5, pc} + thumb_func_end MOD48_02254BC8 + + thumb_func_start MOD48_02254BE8 +MOD48_02254BE8: ; 0x02254BE8 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r0, r7, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r7, #0 + bl MOD20_022538A4 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _02254C3C + mov r1, #0 + add r2, r1, #0 + bl FUN_0206B6D4 + str r0, [sp] + add r0, r5, #0 + add r0, #0xac + mov r2, #1 + ldr r0, [r0] + add r1, sp, #0 + add r3, r2, #0 + bl MOD20_02253A04 + mov r1, #0 + ldr r0, [r4] + add r2, r1, #0 + bl FUN_0206B7BC + add r1, r0, #0 + ldr r0, [r5, #0x24] + add r1, r1, #1 + bl MOD20_02253F9C + add r5, #0x34 + ldr r1, [r4, #4] + add r0, r5, #0 + bl MOD48_02254EF4 + b _02254C58 +_02254C3C: + ldr r0, [r5, #0x24] + mov r1, #1 + bl MOD20_02253F78 + mov r4, #0 + mov r6, #1 +_02254C48: + ldr r0, [r5, #0x34] + add r1, r6, #0 + bl MOD20_02253F78 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _02254C48 +_02254C58: + add r0, r7, #0 + bl MOD48_02254B1C + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD48_02254BE8 + + thumb_func_start MOD48_02254C60 +MOD48_02254C60: ; 0x02254C60 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r0, r7, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r7, #0 + bl MOD20_022538A4 + add r6, r0, #0 + add r0, r7, #0 + bl MOD20_022538AC + add r5, r0, #0 + beq _02254C84 + cmp r5, #0x10 + beq _02254CFE + b _02254CC6 +_02254C84: + ldr r0, [r6, #0x24] + add r2, r4, #0 + add r0, r0, #1 + lsl r0, r0, #2 + add r0, r4, r0 + ldr r1, [r0, #0x24] + add r0, r4, #0 + add r0, #0x9c + str r1, [r0] + add r0, r4, #0 + add r0, #0x9c + add r1, r4, #0 + ldr r0, [r0] + add r1, #0xa4 + add r2, #0xa0 + bl MOD20_02253F6C + ldr r0, [r6, #0x24] + lsl r0, r0, #2 + add r0, r6, r0 + ldr r0, [r0, #8] + bl MOD20_02252B48 + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + mov r1, #6 + bl MOD20_02253F28 + add r0, r7, #0 + bl MOD20_022538B0 + add r5, r5, #1 +_02254CC6: + add r0, r4, #0 + add r1, r4, #0 + add r4, #0xa0 + mov r3, #0x2d + ldr r2, [r4] + lsl r3, r3, #0xa + add r4, r5, #0 + mul r4, r3 + mov r3, #2 + lsl r3, r3, #0xa + add r3, r4, r3 + asr r3, r3, #0xc + lsl r4, r3, #2 + ldr r3, _02254D28 ; =0x020EDF50 + add r0, #0x9c + ldr r4, [r3, r4] + add r1, #0xa4 + mov r3, #0x18 + mul r3, r4 + ldr r0, [r0] + ldr r1, [r1] + sub r2, r2, r3 + bl MOD20_02253F64 + add r0, r7, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, r6, r7, pc} +_02254CFE: + add r0, r4, #0 + add r1, r4, #0 + add r2, r4, #0 + add r0, #0x9c + add r1, #0xa4 + add r2, #0xa0 + ldr r0, [r0] + ldr r1, [r1] + ldr r2, [r2] + bl MOD20_02253F64 + add r4, #0x9c + ldr r0, [r4] + mov r1, #4 + bl MOD20_02253F28 + add r0, r7, #0 + bl MOD48_02254B1C + pop {r3, r4, r5, r6, r7, pc} + nop +_02254D28: .word 0x020EDF50 + thumb_func_end MOD48_02254C60 + + thumb_func_start MOD48_02254D2C +MOD48_02254D2C: ; 0x02254D2C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r0, #0 + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + str r1, [sp, #0xc] + add r0, #0x78 + mov r1, #0xc + mov r2, #5 + mov r3, #6 + bl MOD20_02253FBC + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + add r0, #0x64 + mov r1, #0xc + mov r2, #0x7b + mov r3, #0x7c + bl MOD20_02253FBC + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x7d + bl FUN_02006A34 + add r1, r4, #0 + lsr r0, r0, #5 + add r1, #0xac + str r0, [r1] + str r0, [sp, #0x28] + ldr r0, [sp, #0xc] + ldr r2, [sp, #0xc] + ldr r0, [r0] + mov r1, #0 + str r0, [sp, #0x30] + add r3, sp, #0x30 +_02254D82: + ldr r0, [r2, #8] + add r1, r1, #1 + str r0, [r3, #4] + add r2, r2, #4 + add r3, r3, #4 + cmp r1, #3 + blt _02254D82 + mov r7, #0 + add r5, sp, #0x30 + add r6, r4, #0 +_02254D96: + ldr r0, [r5] + cmp r0, #0 + bne _02254D9E + mov r0, #1 +_02254D9E: + mov r1, #0 + add r2, r1, #0 + bl FUN_0206B6D4 + add r1, r6, #0 + add r1, #0x8c + add r7, r7, #1 + str r0, [r1] + add r5, r5, #4 + add r6, r6, #4 + cmp r7, #4 + blt _02254D96 + add r1, r4, #0 + ldr r0, [sp, #0x28] + add r1, #0x8c + mov r2, #4 + mov r3, #1 + bl MOD20_02253A04 + mov r0, #1 + bl MOD20_022539C4 + mov r2, #0 + add r0, r2, #0 + add r1, r4, #0 + str r0, [sp, #0x10] +_02254DD2: + ldr r0, [sp, #0x10] + add r2, r2, #1 + str r0, [r1, #0x24] + add r1, r1, #4 + cmp r2, #0x10 + blt _02254DD2 + ldr r0, _02254EBC ; =0x02254FD0 + str r4, [sp, #0x20] + str r0, [sp, #0x24] + ldr r0, [sp, #0x10] + mov r6, #4 + str r0, [sp, #0x1c] + add r0, sp, #0x30 + str r0, [sp, #0x18] + ldr r0, [sp, #0xc] + str r0, [sp, #0x14] +_02254DF2: + add r2, r4, #0 + ldr r0, [r4, #0x20] + ldr r1, [sp, #0x24] + add r2, #0x78 + bl MOD20_02253E74 + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x28] + str r0, [r1, #0x24] + ldr r1, [sp, #0x1c] + add r1, r2, r1 + bl MOD20_02253FA4 + add r0, r4, #0 + str r0, [sp, #0x2c] + add r0, #0x64 + mov r5, #0 + str r0, [sp, #0x2c] +_02254E16: + add r7, r5, r6 + ldr r1, _02254EBC ; =0x02254FD0 + lsl r2, r7, #4 + add r1, r1, r2 + ldr r0, [r4, #0x20] + ldr r2, [sp, #0x2c] + bl MOD20_02253E74 + lsl r1, r7, #2 + add r1, r4, r1 + add r5, r5, #1 + str r0, [r1, #0x24] + cmp r5, #3 + blt _02254E16 + ldr r0, [sp, #0x18] + ldr r0, [r0] + cmp r0, #0 + bne _02254E5E + ldr r0, [sp, #0x20] + mov r1, #1 + ldr r0, [r0, #0x24] + bl MOD20_02253F78 + mov r5, #0 + mov r7, #1 +_02254E48: + add r0, r5, r6 + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #0x24] + add r1, r7, #0 + bl MOD20_02253F78 + add r5, r5, #1 + cmp r5, #3 + blt _02254E48 + b _02254E8E +_02254E5E: + mov r1, #0 + add r2, r1, #0 + bl FUN_0206B7BC + add r1, r0, #0 + ldr r0, [sp, #0x20] + add r1, r1, #1 + ldr r0, [r0, #0x24] + bl MOD20_02253F9C + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _02254E7E + ldr r0, [sp, #0xc] + ldr r1, [r0, #4] + b _02254E82 +_02254E7E: + ldr r0, [sp, #0x14] + ldr r1, [r0, #0x10] +_02254E82: + add r2, r4, #0 + add r2, #0x24 + lsl r0, r6, #2 + add r0, r2, r0 + bl MOD48_02254EF4 +_02254E8E: + ldr r0, [sp, #0x24] + add r6, r6, #3 + add r0, #0x10 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + add r0, r0, #4 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r0, #0x20 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, r0, #4 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r0, r0, #4 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #4 + blt _02254DF2 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254EBC: .word 0x02254FD0 + thumb_func_end MOD48_02254D2C + + thumb_func_start MOD48_02254EC0 +MOD48_02254EC0: ; 0x02254EC0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 + add r7, r4, #0 +_02254ECA: + ldr r1, [r5, #0x24] + cmp r1, #0 + beq _02254ED8 + ldr r0, [r6, #0x20] + bl MOD20_02253F14 + str r7, [r5, #0x24] +_02254ED8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x10 + blt _02254ECA + add r0, r6, #0 + add r0, #0x78 + bl MOD20_02254014 + add r6, #0x64 + add r0, r6, #0 + bl MOD20_02254014 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD48_02254EC0 + + thumb_func_start MOD48_02254EF4 +MOD48_02254EF4: ; 0x02254EF4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + str r1, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r1, _02254F5C ; =0x000003E7 + ldr r0, [sp] + cmp r0, r1 + bls _02254F0A + str r1, [sp] +_02254F0A: + mov r4, #0 + mov r6, #0x64 +_02254F0E: + ldr r0, [sp] + add r1, r6, #0 + bl _u32_div_f + add r7, r0, #0 + ldr r0, [sp, #4] + cmp r0, #1 + beq _02254F26 + cmp r7, #0 + bne _02254F26 + cmp r4, #2 + bne _02254F34 +_02254F26: + ldr r0, [r5] + add r1, r7, #0 + bl MOD20_02253F28 + mov r0, #1 + str r0, [sp, #4] + b _02254F3C +_02254F34: + ldr r0, [r5] + mov r1, #1 + bl MOD20_02253F78 +_02254F3C: + add r1, r7, #0 + ldr r0, [sp] + mul r1, r6 + sub r0, r0, r1 + str r0, [sp] + add r0, r6, #0 + mov r1, #0xa + add r5, r5, #4 + add r4, r4, #1 + bl _s32_div_f + add r6, r0, #0 + cmp r4, #3 + blt _02254F0E + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254F5C: .word 0x000003E7 + thumb_func_end MOD48_02254EF4 + + .section .rodata + ; 0x02254F60 + .incbin "baserom.nds", 0x297d20, 0x170 + + .section .sinit + .word MOD48_02254840 diff --git a/arm9/modules/49/asm/module_49.s b/arm9/modules/49/asm/module_49.s new file mode 100644 index 00000000..46ab8f05 --- /dev/null +++ b/arm9/modules/49/asm/module_49.s @@ -0,0 +1,638 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD49_02254840 +MOD49_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD49_02254854 + ldr r1, _02254850 ; =MOD49_02254974 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD49_02254854 +_02254850: .word MOD49_02254974 + thumb_func_end MOD49_02254840 + + thumb_func_start MOD49_02254854 +MOD49_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x7c + 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 MOD49_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD49_02254938 + 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 MOD49_02254938 + thumb_func_end MOD49_02254854 + + thumb_func_start MOD49_0225489C +MOD49_0225489C: ; 0x0225489C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r0, #0 + add r0, r1, #0 + str r1, [sp, #4] + str r2, [sp, #8] + bl MOD20_02252C3C + str r0, [sp, #0xc] + bl FUN_0204C158 + mov r6, #0 + str r0, [r7, #0x64] + cmp r0, #0 + bls _022548D8 + add r4, r7, #0 + add r4, #8 + add r5, r7, #4 +_022548C0: + ldr r0, [sp, #0xc] + add r1, r6, #0 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_0204C174 + ldr r0, [r7, #0x64] + add r6, r6, #1 + add r4, #8 + add r5, #8 + cmp r6, r0 + blo _022548C0 +_022548D8: + add r0, r7, #0 + ldr r2, [sp, #8] + add r0, #0x68 + add r1, r7, #4 + bl MOD49_02254A44 + cmp r0, #0 + beq _02254912 + mov r0, #0 + strb r0, [r7] + strb r0, [r7, #1] + strb r0, [r7, #2] + mov r0, #8 + str r0, [sp] + ldr r0, _02254918 ; =0x02254CF0 + ldr r2, _0225491C ; =MOD49_0225497C + mov r1, #0xc + add r3, r7, #0 + bl MOD20_02254130 + str r0, [r7, #0x70] + mov r0, #0 + str r0, [r7, #0x74] + str r0, [r7, #0x78] + ldr r0, [sp, #4] + add sp, #0x10 + str r0, [r7, #0x6c] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02254912: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254918: .word 0x02254CF0 +_0225491C: .word MOD49_0225497C + thumb_func_end MOD49_0225489C + + thumb_func_start MOD49_02254920 +MOD49_02254920: ; 0x02254920 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x70] + bl MOD20_02254198 + ldr r0, [r4, #0x68] + bl MOD49_02254A78 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD49_02254920 + + thumb_func_start MOD49_02254938 +MOD49_02254938: ; 0x02254938 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _0225496E + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254970 ; =0x02254CE4 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _0225496E + add r0, r4, #0 + bl MOD49_02254920 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x6c] + bl MOD20_022529A0 +_0225496E: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254970: .word 0x02254CE4 + thumb_func_end MOD49_02254938 + + thumb_func_start MOD49_02254974 +MOD49_02254974: ; 0x02254974 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD49_02254974 + + thumb_func_start MOD49_0225497C +MOD49_0225497C: ; 0x0225497C + str r0, [r3, #0x78] + str r1, [r3, #0x74] + bx lr + .align 2, 0 + thumb_func_end MOD49_0225497C + + thumb_func_start MOD49_02254984 +MOD49_02254984: ; 0x02254984 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _0225498C + b _0225498E +_0225498C: + mov r1, #2 +_0225498E: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD49_02254984 + + thumb_func_start MOD49_02254998 +MOD49_02254998: ; 0x02254998 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549A8 + cmp r0, #1 + beq _022549B8 + b _022549D2 +_022549A8: + ldr r0, [r4, #0x68] + mov r1, #0 + bl MOD49_02254A84 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549D2 +_022549B8: + ldr r0, [r4, #0x68] + mov r1, #0 + bl MOD49_02254AA8 + cmp r0, #0 + beq _022549D2 + ldr r0, [r4, #0x6c] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD49_02254984 +_022549D2: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD49_02254998 + + thumb_func_start MOD49_022549D8 +MOD49_022549D8: ; 0x022549D8 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _022549EC + mov r1, #2 + bl MOD49_02254984 + mov r0, #0 + pop {r4, pc} +_022549EC: + ldr r0, [r4, #0x74] + cmp r0, #1 + bne _02254A0C + ldr r1, [r4, #0x78] + mov r0, #0xb + sub r1, r0, r1 + ldr r0, [r4, #0x64] + cmp r1, r0 + bhs _02254A08 + lsl r0, r1, #3 + add r0, r4, r0 + ldr r0, [r0, #4] + bl MOD20_02252B48 +_02254A08: + mov r0, #0 + str r0, [r4, #0x74] +_02254A0C: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD49_022549D8 + + thumb_func_start MOD49_02254A10 +MOD49_02254A10: ; 0x02254A10 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A20 + cmp r0, #1 + beq _02254A30 + b _02254A3E +_02254A20: + ldr r0, [r4, #0x68] + mov r1, #1 + bl MOD49_02254A84 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A3E +_02254A30: + ldr r0, [r4, #0x68] + bl MOD49_02254AB4 + cmp r0, #0 + beq _02254A3E + mov r0, #1 + pop {r4, pc} +_02254A3E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD49_02254A10 + + thumb_func_start MOD49_02254A44 +MOD49_02254A44: ; 0x02254A44 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x98 + bl FUN_02016998 + add r4, r0, #0 + beq _02254A72 + add r0, #8 + mov r1, #4 + bl MOD20_022536F4 + str r6, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x20] + str r4, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254A72: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD49_02254A44 + + thumb_func_start MOD49_02254A78 +MOD49_02254A78: ; 0x02254A78 + push {r3, lr} + cmp r0, #0 + beq _02254A82 + bl FUN_02016A18 +_02254A82: + pop {r3, pc} + thumb_func_end MOD49_02254A78 + + thumb_func_start MOD49_02254A84 +MOD49_02254A84: ; 0x02254A84 + 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, _02254AA4 ; =0x02254D3C + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254AA4: .word 0x02254D3C + thumb_func_end MOD49_02254A84 + + thumb_func_start MOD49_02254AA8 +MOD49_02254AA8: ; 0x02254AA8 + ldr r3, _02254AB0 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254AB0: .word MOD20_02253794 + thumb_func_end MOD49_02254AA8 + + thumb_func_start MOD49_02254AB4 +MOD49_02254AB4: ; 0x02254AB4 + ldr r3, _02254ABC ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254ABC: .word MOD20_022537B8 + thumb_func_end MOD49_02254AB4 + + thumb_func_start MOD49_02254AC0 +MOD49_02254AC0: ; 0x02254AC0 + 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 MOD49_02254AC0 + + thumb_func_start MOD49_02254AD4 +MOD49_02254AD4: ; 0x02254AD4 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r7, r1, #0 + add r0, r7, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r7, #0 + bl MOD20_022538A4 + str r0, [sp, #0x14] + ldr r0, [r5, #4] + ldr r2, _02254BD0 ; =0x02254D20 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #6 + mov r2, #4 + mov r3, #1 + bl FUN_02017F48 + 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, #0 + add r1, r0, #0 + bl MOD20_02252D7C + mov r3, #2 + str r3, [sp] + mov r0, #0x18 + str r0, [sp, #4] + str r3, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [r5, #4] + add r1, sp, #0x1c + mov r2, #6 + bl FUN_02019064 + add r0, sp, #0x1c + mov r1, #4 + bl FUN_02019620 + add r0, sp, #0x1c + bl FUN_02019270 + ldr r1, _02254BD4 ; =0x00000197 + mov r0, #0x1a + mov r2, #0 + mov r3, #8 + bl FUN_0200A738 + add r4, r0, #0 + beq _02254B94 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0 + add r6, r0, #0 + mov r3, #0xc0 + sub r3, r3, r6 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02254BD8 ; =0x00010104 + add r2, r4, #0 + str r0, [sp, #8] + add r0, sp, #0x1c + lsr r3, r3, #1 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, sp, #0x1c + bl FUN_02019548 + add r0, r4, #0 + bl FUN_02021A20 +_02254B94: + add r0, sp, #0x1c + bl FUN_02019178 + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, [sp, #0x14] + add r0, r5, #0 + bl MOD49_02254C04 + ldr r1, _02254BDC ; =0x04001000 + ldr r0, _02254BE0 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x18] + 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, r7, #0 + bl MOD49_02254AC0 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_02254BD0: .word 0x02254D20 +_02254BD4: .word 0x00000197 +_02254BD8: .word 0x00010104 +_02254BDC: .word 0x04001000 +_02254BE0: .word 0xFFFFE0FF + thumb_func_end MOD49_02254AD4 + + thumb_func_start MOD49_02254BE4 +MOD49_02254BE4: ; 0x02254BE4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + bl MOD49_02254CB8 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD49_02254AC0 + pop {r3, r4, r5, pc} + thumb_func_end MOD49_02254BE4 + + thumb_func_start MOD49_02254C04 +MOD49_02254C04: ; 0x02254C04 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp, #4] + mov r0, #0 + str r1, [sp, #8] + bl MOD20_022539C4 + mov r0, #8 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #0xc + add r0, #0x54 + mov r2, #5 + mov r3, #6 + bl MOD20_02253FBC + ldr r0, [sp, #8] + mov r4, #0 + ldr r0, [r0, #0x60] + cmp r0, #0 + bls _02254C86 + ldr r5, [sp, #4] + ldr r6, [sp, #8] + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #0x54 + ldr r7, _02254CB4 ; =0x02254D60 + str r4, [sp, #0xc] + str r0, [sp, #0x10] +_02254C3E: + ldr r0, [r6] + ldr r2, [r6, #4] + mov r1, #0 + bl FUN_0206B6D4 + str r0, [r5, #0x68] + ldr r0, [sp, #4] + ldr r2, [sp, #0x10] + ldr r0, [r0, #0x20] + add r1, r7, #0 + bl MOD20_02253E74 + ldr r1, [sp, #0xc] + str r0, [r5, #0x24] + bl MOD20_02253FA4 + ldr r0, [r6] + ldr r1, [r6, #4] + mov r2, #0 + bl FUN_0206B7BC + add r1, r0, #0 + ldr r0, [r5, #0x24] + bl MOD20_02253F9C + ldr r0, [sp, #0xc] + add r4, r4, #1 + add r0, #0x10 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + add r6, #8 + ldr r0, [r0, #0x60] + add r5, r5, #4 + add r7, #0x10 + cmp r4, r0 + blo _02254C3E +_02254C86: + cmp r4, #0xc + bge _02254C9C + ldr r0, [sp, #4] + lsl r1, r4, #2 + add r1, r0, r1 + mov r0, #0 +_02254C92: + add r4, r4, #1 + str r0, [r1, #0x24] + add r1, r1, #4 + cmp r4, #0xc + blt _02254C92 +_02254C9C: + ldr r2, [sp, #8] + ldr r1, [sp, #4] + mov r0, #0 + add r1, #0x68 + ldr r2, [r2, #0x60] + add r3, r0, #0 + str r1, [sp, #4] + bl MOD20_02253A04 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02254CB4: .word 0x02254D60 + thumb_func_end MOD49_02254C04 + + thumb_func_start MOD49_02254CB8 +MOD49_02254CB8: ; 0x02254CB8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 + add r7, r4, #0 +_02254CC2: + ldr r1, [r5, #0x24] + cmp r1, #0 + beq _02254CD0 + ldr r0, [r6, #0x20] + bl MOD20_02253F14 + str r7, [r5, #0x24] +_02254CD0: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xc + blt _02254CC2 + add r6, #0x54 + add r0, r6, #0 + bl MOD20_02254014 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD49_02254CB8 + + .section .rodata + ; 0x02254CE4 + .incbin "baserom.nds", 0x2984a4, 0x13C + + .section .sinit + .word MOD49_02254840 diff --git a/arm9/modules/50/asm/module_50.s b/arm9/modules/50/asm/module_50.s new file mode 100644 index 00000000..734eadea --- /dev/null +++ b/arm9/modules/50/asm/module_50.s @@ -0,0 +1,409 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD50_02254840 +MOD50_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD50_02254854 + ldr r1, _02254850 ; =MOD50_02254908 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD50_02254854 +_02254850: .word MOD50_02254908 + thumb_func_end MOD50_02254840 + + thumb_func_start MOD50_02254854 +MOD50_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #8 + mov r1, #0x10 + str r2, [sp] + add r5, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _02254894 + ldr r2, [sp] + add r1, r7, #0 + add r3, r5, #0 + bl MOD50_0225489C + cmp r0, #0 + beq _0225488E + ldr r0, _02254898 ; =MOD50_022548D4 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _0225488E + str r4, [r6] + str r5, [r4, #4] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488E: + add r0, r4, #0 + bl FUN_02016A18 +_02254894: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254898: .word MOD50_022548D4 + thumb_func_end MOD50_02254854 + + thumb_func_start MOD50_0225489C +MOD50_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #8 + add r1, r5, #4 + bl MOD50_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 MOD50_0225489C + + thumb_func_start MOD50_022548C0 +MOD50_022548C0: ; 0x022548C0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl MOD50_022549E0 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD50_022548C0 + + thumb_func_start MOD50_022548D4 +MOD50_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 ; =0x02254B04 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254900 + add r0, r4, #0 + bl MOD50_022548C0 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0xc] + bl MOD20_022529A0 +_02254900: + pop {r3, r4, r5, pc} + nop +_02254904: .word 0x02254B04 + thumb_func_end MOD50_022548D4 + + thumb_func_start MOD50_02254908 +MOD50_02254908: ; 0x02254908 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD50_02254908 + + thumb_func_start MOD50_02254910 +MOD50_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 MOD50_02254910 + + thumb_func_start MOD50_02254924 +MOD50_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 MOD50_022549F8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _0225495E +_02254944: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD50_02254A1C + cmp r0, #0 + beq _0225495E + ldr r0, [r4, #0xc] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD50_02254910 +_0225495E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD50_02254924 + + thumb_func_start MOD50_02254964 +MOD50_02254964: ; 0x02254964 + push {r3, lr} + ldrb r1, [r0, #2] + cmp r1, #0 + beq _02254972 + mov r1, #2 + bl MOD50_02254910 +_02254972: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD50_02254964 + + thumb_func_start MOD50_02254978 +MOD50_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 MOD50_022549F8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549A6 +_02254998: + ldr r0, [r4, #8] + bl MOD50_02254A28 + cmp r0, #0 + beq _022549A6 + mov r0, #1 + pop {r4, pc} +_022549A6: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD50_02254978 + + thumb_func_start MOD50_022549AC +MOD50_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 _022549DA + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + mov r0, #8 + str r6, [r4] + bl FUN_02016B94 + str r0, [r4, #4] + cmp r0, #0 + beq _022549DA + str r4, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_022549DA: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD50_022549AC + + thumb_func_start MOD50_022549E0 +MOD50_022549E0: ; 0x022549E0 + push {r4, lr} + add r4, r0, #0 + beq _022549F6 + ldr r0, [r4, #4] + cmp r0, #0 + beq _022549F0 + bl FUN_02016A18 +_022549F0: + add r0, r4, #0 + bl FUN_02016A18 +_022549F6: + pop {r4, pc} + thumb_func_end MOD50_022549E0 + + thumb_func_start MOD50_022549F8 +MOD50_022549F8: ; 0x022549F8 + 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, _02254A18 ; =0x02254B2C + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254A18: .word 0x02254B2C + thumb_func_end MOD50_022549F8 + + thumb_func_start MOD50_02254A1C +MOD50_02254A1C: ; 0x02254A1C + ldr r3, _02254A24 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254A24: .word MOD20_02253794 + thumb_func_end MOD50_02254A1C + + thumb_func_start MOD50_02254A28 +MOD50_02254A28: ; 0x02254A28 + ldr r3, _02254A30 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254A30: .word MOD20_022537B8 + thumb_func_end MOD50_02254A28 + + thumb_func_start MOD50_02254A34 +MOD50_02254A34: ; 0x02254A34 + 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 MOD50_02254A34 + + thumb_func_start MOD50_02254A48 +MOD50_02254A48: ; 0x02254A48 + 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, _02254ADC ; =0x02254B10 + 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 r1, [r5] + ldr r0, [r5, #4] + ldr r1, [r1] + mov r2, #6 + bl MOD20_02253AA4 + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254AE0 ; =0x04001000 + ldr r0, _02254AE4 ; =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 MOD50_02254A34 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_02254ADC: .word 0x02254B10 +_02254AE0: .word 0x04001000 +_02254AE4: .word 0xFFFFE0FF + thumb_func_end MOD50_02254A48 + + thumb_func_start MOD50_02254AE8 +MOD50_02254AE8: ; 0x02254AE8 + 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 MOD50_02254A34 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD50_02254AE8 + + .section .rodata + ; 0x02254B04 + .incbin "baserom.nds", 0x2988c4, 0x4C + + .section .sinit + .word MOD50_02254840 |