diff options
Diffstat (limited to 'arm9/modules')
-rw-r--r-- | arm9/modules/03/asm/module_03_dummy.s | 2 | ||||
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 48 | ||||
-rw-r--r-- | arm9/modules/11/asm/module_11.s | 46 | ||||
-rw-r--r-- | arm9/modules/12/asm/module_12.s | 40 | ||||
-rw-r--r-- | arm9/modules/29/asm/module_29.s | 1126 | ||||
-rw-r--r-- | arm9/modules/30/asm/module_30.s | 734 | ||||
-rw-r--r-- | arm9/modules/31/asm/module_31.s | 724 | ||||
-rw-r--r-- | arm9/modules/32/asm/module_32.s | 576 |
8 files changed, 3227 insertions, 69 deletions
diff --git a/arm9/modules/03/asm/module_03_dummy.s b/arm9/modules/03/asm/module_03_dummy.s index 70f9f9c2..e8a42167 100644 --- a/arm9/modules/03/asm/module_03_dummy.s +++ b/arm9/modules/03/asm/module_03_dummy.s @@ -1,4 +1,2 @@ .section .data .space 32 - .section .bss - .space 32 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 9374c856..085ce35d 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -61,7 +61,7 @@ _021D752C: lsl r0, r0, #8 lsr r0, r0, #0x1c beq _021D7564 - ldr r0, _021D7678 ; =SDK_MODULE_06_ID + ldr r0, _021D7678 ; =SDK_OVERLAY_MODULE_06_ID mov r1, #2 bl HandleLoadOverlay _021D7564: @@ -174,7 +174,7 @@ _021D7666: .balign 4, 0 _021D7670: .word 0x04000050 _021D7674: .word 0x04001050 -_021D7678: .word SDK_MODULE_06_ID +_021D7678: .word SDK_OVERLAY_MODULE_06_ID thumb_func_start MOD05_021D767C MOD05_021D767C: ; 0x021D767C @@ -367,7 +367,7 @@ _021D7806: lsl r0, r0, #8 lsr r0, r0, #0x1c beq _021D7856 - ldr r0, _021D7860 ; =SDK_MODULE_06_ID + ldr r0, _021D7860 ; =SDK_OVERLAY_MODULE_06_ID bl UnloadOverlayByID _021D7856: mov r0, #1 @@ -376,7 +376,7 @@ _021D785A: mov r0, #0 pop {r3, r4, r5, pc} nop -_021D7860: .word SDK_MODULE_06_ID +_021D7860: .word SDK_OVERLAY_MODULE_06_ID thumb_func_start MOD05_021D7864 MOD05_021D7864: ; 0x021D7864 @@ -9485,7 +9485,7 @@ _021DBE9C: .word 0x02050E2D MOD05_021DBEA0: ; 0x021DBEA0 push {r4, lr} add r4, r0, #0 - ldr r0, _021DBEB8 ; =SDK_MODULE_51_ID + ldr r0, _021DBEB8 ; =SDK_OVERLAY_MODULE_51_ID mov r1, #2 bl HandleLoadOverlay add r0, r4, #0 @@ -9494,7 +9494,7 @@ MOD05_021DBEA0: ; 0x021DBEA0 str r0, [r4] pop {r4, pc} .balign 4, 0 -_021DBEB8: .word SDK_MODULE_51_ID +_021DBEB8: .word SDK_OVERLAY_MODULE_51_ID thumb_func_start MOD05_021DBEBC MOD05_021DBEBC: ; 0x021DBEBC @@ -9516,11 +9516,11 @@ MOD05_021DBECC: ; 0x021DBECC add r0, #0x80 ldr r0, [r0] bl FUN_02254AB8 - ldr r0, _021DBEE0 ; =SDK_MODULE_51_ID + ldr r0, _021DBEE0 ; =SDK_OVERLAY_MODULE_51_ID bl UnloadOverlayByID pop {r3, pc} nop -_021DBEE0: .word SDK_MODULE_51_ID +_021DBEE0: .word SDK_OVERLAY_MODULE_51_ID thumb_func_start MOD05_021DBEE4 MOD05_021DBEE4: ; 0x021DBEE4 @@ -24576,9 +24576,9 @@ _021E33A0: ldr r0, [r5, #0xc] bl FUN_0204C1A8 add r6, r0, #0 - ldr r0, _021E341C ; =SDK_MODULE_19_ID + ldr r0, _021E341C ; =SDK_OVERLAY_MODULE_19_ID bl UnloadOverlayByID - ldr r0, _021E3420 ; =SDK_MODULE_20_ID + ldr r0, _021E3420 ; =SDK_OVERLAY_MODULE_20_ID mov r1, #2 bl HandleLoadOverlay add r0, r6, #0 @@ -24624,8 +24624,8 @@ _021E3414: add sp, #4 pop {r3, r4, r5, r6, pc} nop -_021E341C: .word SDK_MODULE_19_ID -_021E3420: .word SDK_MODULE_20_ID +_021E341C: .word SDK_OVERLAY_MODULE_19_ID +_021E3420: .word SDK_OVERLAY_MODULE_20_ID thumb_func_start MOD05_021E3424 MOD05_021E3424: ; 0x021E3424 @@ -50085,7 +50085,7 @@ MOD05_021EFAAC: ; 0x021EFAAC bl FUN_0205F1E4 cmp r0, #0 bne _021EFAF8 - ldr r0, _021EFB0C ; =SDK_MODULE_20_ID + ldr r0, _021EFB0C ; =SDK_OVERLAY_MODULE_20_ID mov r1, #2 bl HandleLoadOverlay mov r0, #1 @@ -50100,7 +50100,7 @@ MOD05_021EFAAC: ; 0x021EFAAC add sp, #4 pop {r3, r4, r5, r6, pc} _021EFAF8: - ldr r0, _021EFB10 ; =SDK_MODULE_19_ID + ldr r0, _021EFB10 ; =SDK_OVERLAY_MODULE_19_ID mov r1, #2 bl HandleLoadOverlay ldr r0, [r5, #8] @@ -50108,8 +50108,8 @@ _021EFAF8: add sp, #4 pop {r3, r4, r5, r6, pc} nop -_021EFB0C: .word SDK_MODULE_20_ID -_021EFB10: .word SDK_MODULE_19_ID +_021EFB0C: .word SDK_OVERLAY_MODULE_20_ID +_021EFB10: .word SDK_OVERLAY_MODULE_19_ID thumb_func_start MOD05_021EFB14 MOD05_021EFB14: ; 0x021EFB14 @@ -50165,7 +50165,7 @@ MOD05_021EFB50: ; 0x021EFB50 ldr r0, [r5, #4] mov r1, #0 str r1, [r0, #0x14] - ldr r0, _021EFBAC ; =SDK_MODULE_20_ID + ldr r0, _021EFBAC ; =SDK_OVERLAY_MODULE_20_ID bl UnloadOverlayByID mov r0, #1 pop {r4, r5, r6, pc} @@ -50174,7 +50174,7 @@ _021EFB94: bl FUN_02252504 cmp r0, #0 beq _021EFBA8 - ldr r0, _021EFBB0 ; =SDK_MODULE_19_ID + ldr r0, _021EFBB0 ; =SDK_OVERLAY_MODULE_19_ID bl UnloadOverlayByID mov r0, #1 pop {r4, r5, r6, pc} @@ -50182,21 +50182,21 @@ _021EFBA8: mov r0, #0 pop {r4, r5, r6, pc} .balign 4, 0 -_021EFBAC: .word SDK_MODULE_20_ID -_021EFBB0: .word SDK_MODULE_19_ID +_021EFBAC: .word SDK_OVERLAY_MODULE_20_ID +_021EFBB0: .word SDK_OVERLAY_MODULE_19_ID thumb_func_start MOD05_021EFBB4 MOD05_021EFBB4: ; 0x021EFBB4 push {r4, lr} add r4, r0, #0 - ldr r0, _021EFBC8 ; =SDK_MODULE_19_ID + ldr r0, _021EFBC8 ; =SDK_OVERLAY_MODULE_19_ID mov r1, #2 bl HandleLoadOverlay ldr r0, [r4, #8] bl FUN_02252440 pop {r4, pc} .balign 4, 0 -_021EFBC8: .word SDK_MODULE_19_ID +_021EFBC8: .word SDK_OVERLAY_MODULE_19_ID thumb_func_start MOD05_021EFBCC MOD05_021EFBCC: ; 0x021EFBCC @@ -50213,7 +50213,7 @@ MOD05_021EFBD8: ; 0x021EFBD8 bl FUN_02252504 cmp r0, #0 beq _021EFBEE - ldr r0, _021EFBF4 ; =SDK_MODULE_19_ID + ldr r0, _021EFBF4 ; =SDK_OVERLAY_MODULE_19_ID bl UnloadOverlayByID mov r0, #1 pop {r3, pc} @@ -50221,7 +50221,7 @@ _021EFBEE: mov r0, #0 pop {r3, pc} nop -_021EFBF4: .word SDK_MODULE_19_ID +_021EFBF4: .word SDK_OVERLAY_MODULE_19_ID thumb_func_start MOD05_021EFBF8 MOD05_021EFBF8: ; 0x021EFBF8 diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s index 1f539d08..8288a770 100644 --- a/arm9/modules/11/asm/module_11.s +++ b/arm9/modules/11/asm/module_11.s @@ -128,7 +128,7 @@ _0222D6AC: bl MOD11_0222FC38
cmp r0, #1
bne _0222D6D2
- ldr r0, _0222D7F0 ; =SDK_MODULE_07_ID
+ ldr r0, _0222D7F0 ; =SDK_OVERLAY_MODULE_07_ID
bl UnloadOverlayByID
mov r0, #7
str r0, [r4]
@@ -147,7 +147,7 @@ _0222D6D4: str r0, [r4]
b _0222D7EA
_0222D6DA:
- ldr r0, _0222D7F4 ; =SDK_MODULE_08_ID
+ ldr r0, _0222D7F4 ; =SDK_OVERLAY_MODULE_08_ID
mov r1, #2
bl HandleLoadOverlay
add r0, r6, #0
@@ -184,7 +184,7 @@ _0222D720: bl MOD11_0222FE58
cmp r0, #1
bne _0222D7EA
- ldr r0, _0222D7F0 ; =SDK_MODULE_07_ID
+ ldr r0, _0222D7F0 ; =SDK_OVERLAY_MODULE_07_ID
bl UnloadOverlayByID
mov r0, #5
bl FUN_020168D0
@@ -279,8 +279,8 @@ _0222D7EA: add sp, #0x28
pop {r4, r5, r6, pc}
.align 2, 0
-_0222D7F0: .word SDK_MODULE_07_ID
-_0222D7F4: .word SDK_MODULE_08_ID
+_0222D7F0: .word SDK_OVERLAY_MODULE_07_ID
+_0222D7F4: .word SDK_OVERLAY_MODULE_08_ID
thumb_func_start MOD11_0222D7F8
MOD11_0222D7F8: ; 0x0222D7F8
@@ -302,16 +302,16 @@ MOD11_0222D7F8: ; 0x0222D7F8 add r0, r4, #0
mov r1, #3
bl MOD11_02231338
- ldr r0, _0222D838 ; =SDK_MODULE_08_ID
+ ldr r0, _0222D838 ; =SDK_OVERLAY_MODULE_08_ID
bl UnloadOverlayByID
- ldr r0, _0222D83C ; =SDK_MODULE_09_ID
+ ldr r0, _0222D83C ; =SDK_OVERLAY_MODULE_09_ID
mov r1, #2
bl HandleLoadOverlay
pop {r4, pc}
.align 2, 0
_0222D834: .word 0x000023FB
-_0222D838: .word SDK_MODULE_08_ID
-_0222D83C: .word SDK_MODULE_09_ID
+_0222D838: .word SDK_OVERLAY_MODULE_08_ID
+_0222D83C: .word SDK_OVERLAY_MODULE_09_ID
thumb_func_start MOD11_0222D840
MOD11_0222D840: ; 0x0222D840
@@ -349,9 +349,9 @@ MOD11_0222D840: ; 0x0222D840 MOD11_0222D88C: ; 0x0222D88C
push {r3, r4, r5, lr}
add r4, r0, #0
- ldr r0, _0222D938 ; =SDK_MODULE_09_ID
+ ldr r0, _0222D938 ; =SDK_OVERLAY_MODULE_09_ID
bl UnloadOverlayByID
- ldr r0, _0222D93C ; =SDK_MODULE_08_ID
+ ldr r0, _0222D93C ; =SDK_OVERLAY_MODULE_08_ID
mov r1, #2
bl HandleLoadOverlay
add r0, r4, #0
@@ -415,8 +415,8 @@ MOD11_0222D88C: ; 0x0222D88C bl FUN_02008D24
pop {r3, r4, r5, pc}
.align 2, 0
-_0222D938: .word SDK_MODULE_09_ID
-_0222D93C: .word SDK_MODULE_08_ID
+_0222D938: .word SDK_OVERLAY_MODULE_09_ID
+_0222D93C: .word SDK_OVERLAY_MODULE_08_ID
_0222D940: .word 0x000023FB
thumb_func_start MOD11_0222D944
@@ -1396,12 +1396,12 @@ _0222E220: bl FUN_0201C350
add r0, r4, #0
bl FUN_02016A18
- ldr r0, _0222E25C ; =SDK_MODULE_08_ID
+ ldr r0, _0222E25C ; =SDK_OVERLAY_MODULE_08_ID
bl UnloadOverlayByID
bl FUN_02033590
cmp r0, #0
bne _0222E244
- ldr r0, _0222E260 ; =SDK_MODULE_16_ID
+ ldr r0, _0222E260 ; =SDK_OVERLAY_MODULE_16_ID
bl UnloadOverlayByID
_0222E244:
pop {r3, r4, r5, r6, r7, pc}
@@ -1411,8 +1411,8 @@ _0222E24C: .word 0x00002410 _0222E250: .word 0x000023F9
_0222E254: .word 0x00002430
_0222E258: .word 0x00000704
-_0222E25C: .word SDK_MODULE_08_ID
-_0222E260: .word SDK_MODULE_16_ID
+_0222E25C: .word SDK_OVERLAY_MODULE_08_ID
+_0222E260: .word SDK_OVERLAY_MODULE_16_ID
thumb_func_start MOD11_0222E264
MOD11_0222E264: ; 0x0222E264
@@ -3384,13 +3384,13 @@ MOD11_0222F284: ; 0x0222F284 bl FUN_02033590
cmp r0, #0
bne _0222F296
- ldr r0, _0222F298 ; =SDK_MODULE_16_ID
+ ldr r0, _0222F298 ; =SDK_OVERLAY_MODULE_16_ID
mov r1, #2
bl HandleLoadOverlay
_0222F296:
pop {r3, pc}
.align 2, 0
-_0222F298: .word SDK_MODULE_16_ID
+_0222F298: .word SDK_OVERLAY_MODULE_16_ID
thumb_func_start MOD11_0222F29C
MOD11_0222F29C: ; 0x0222F29C
@@ -4244,7 +4244,7 @@ _0222F9C6: mov r0, #0
pop {r4, r5, r6, pc}
_0222F9CA:
- ldr r0, _0222FAB8 ; =SDK_MODULE_07_ID
+ ldr r0, _0222FAB8 ; =SDK_OVERLAY_MODULE_07_ID
mov r1, #2
bl HandleLoadOverlay
ldr r1, [r4, #0x2c]
@@ -4363,7 +4363,7 @@ _0222FAA4: pop {r4, r5, r6, pc}
nop
_0222FAB4: .word 0x00002444
-_0222FAB8: .word SDK_MODULE_07_ID
+_0222FAB8: .word SDK_OVERLAY_MODULE_07_ID
thumb_func_start MOD11_0222FABC
MOD11_0222FABC: ; 0x0222FABC
@@ -4612,7 +4612,7 @@ _0222FCA2: mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_0222FCA8:
- ldr r0, _0222FE54 ; =SDK_MODULE_07_ID
+ ldr r0, _0222FE54 ; =SDK_OVERLAY_MODULE_07_ID
mov r1, #2
bl HandleLoadOverlay
mov r0, #5
@@ -4818,7 +4818,7 @@ _0222FE48: add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
-_0222FE54: .word SDK_MODULE_07_ID
+_0222FE54: .word SDK_OVERLAY_MODULE_07_ID
thumb_func_start MOD11_0222FE58
MOD11_0222FE58: ; 0x0222FE58
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s index 9748eb5c..36381bcf 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -524,16 +524,16 @@ MOD12_0222D9B0: ; 0x0222D9B0 bl FUN_020168D0 bl FUN_02083404 bl FUN_02033ED0 - ldr r0, _0222DADC ; =SDK_MODULE_08_ID + ldr r0, _0222DADC ; =SDK_OVERLAY_MODULE_08_ID bl UnloadOverlayByID - ldr r0, _0222DAE0 ; =SDK_MODULE_17_ID + ldr r0, _0222DAE0 ; =SDK_OVERLAY_MODULE_17_ID bl UnloadOverlayByID mov r0, #1 pop {r3, r4, r5, pc} nop _0222DAD8: .word 0x0000081C -_0222DADC: .word SDK_MODULE_08_ID -_0222DAE0: .word SDK_MODULE_17_ID +_0222DADC: .word SDK_OVERLAY_MODULE_08_ID +_0222DAE0: .word SDK_OVERLAY_MODULE_17_ID thumb_func_start MOD12_0222DAE4 MOD12_0222DAE4: ; 0x0222DAE4 @@ -3689,15 +3689,15 @@ _0222F3AE: bl FUN_020168D0 bl FUN_02083404 bl FUN_02033ED0 - ldr r0, _0222F450 ; =SDK_MODULE_08_ID + ldr r0, _0222F450 ; =SDK_OVERLAY_MODULE_08_ID bl UnloadOverlayByID - ldr r0, _0222F454 ; =SDK_MODULE_17_ID + ldr r0, _0222F454 ; =SDK_OVERLAY_MODULE_17_ID bl UnloadOverlayByID mov r0, #1 pop {r3, r4, r5, r6, r7, pc} nop -_0222F450: .word SDK_MODULE_08_ID -_0222F454: .word SDK_MODULE_17_ID +_0222F450: .word SDK_OVERLAY_MODULE_08_ID +_0222F454: .word SDK_OVERLAY_MODULE_17_ID thumb_func_start MOD12_0222F458 MOD12_0222F458: ; 0x0222F458 @@ -5533,17 +5533,17 @@ _02230296: bl FUN_020168D0 bl FUN_02083404 bl FUN_02033ED0 - ldr r0, _022303B8 ; =SDK_MODULE_08_ID + ldr r0, _022303B8 ; =SDK_OVERLAY_MODULE_08_ID bl UnloadOverlayByID - ldr r0, _022303BC ; =SDK_MODULE_17_ID + ldr r0, _022303BC ; =SDK_OVERLAY_MODULE_17_ID bl UnloadOverlayByID mov r0, #1 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _022303B0: .word 0x00001130 _022303B4: .word 0x0000110C -_022303B8: .word SDK_MODULE_08_ID -_022303BC: .word SDK_MODULE_17_ID +_022303B8: .word SDK_OVERLAY_MODULE_08_ID +_022303BC: .word SDK_OVERLAY_MODULE_17_ID thumb_func_start MOD12_022303C0 MOD12_022303C0: ; 0x022303C0 @@ -7447,16 +7447,16 @@ _022312B8: .word 0x00000127 thumb_func_start MOD12_022312BC MOD12_022312BC: ; 0x022312BC push {r3, lr} - ldr r0, _022312D0 ; =SDK_MODULE_08_ID + ldr r0, _022312D0 ; =SDK_OVERLAY_MODULE_08_ID mov r1, #2 bl HandleLoadOverlay - ldr r0, _022312D4 ; =SDK_MODULE_17_ID + ldr r0, _022312D4 ; =SDK_OVERLAY_MODULE_17_ID mov r1, #2 bl HandleLoadOverlay pop {r3, pc} .align 2, 0 -_022312D0: .word SDK_MODULE_08_ID -_022312D4: .word SDK_MODULE_17_ID +_022312D0: .word SDK_OVERLAY_MODULE_08_ID +_022312D4: .word SDK_OVERLAY_MODULE_17_ID thumb_func_start MOD12_022312D8 MOD12_022312D8: ; 0x022312D8 @@ -41601,9 +41601,9 @@ _022415D4: lsl r2, r2, #8 bl MIi_CpuClear16 bl FUN_02033ED0 - ldr r0, _0224174C ; =SDK_MODULE_08_ID + ldr r0, _0224174C ; =SDK_OVERLAY_MODULE_08_ID bl UnloadOverlayByID - ldr r0, _02241750 ; =SDK_MODULE_17_ID + ldr r0, _02241750 ; =SDK_OVERLAY_MODULE_17_ID bl UnloadOverlayByID mov r0, #1 pop {r3, r4, r5, r6, r7, pc} @@ -41614,8 +41614,8 @@ _0224173C: .word 0x00007FFF _02241740: .word 0x05000200 _02241744: .word 0x05000400 _02241748: .word 0x05000600 -_0224174C: .word SDK_MODULE_08_ID -_02241750: .word SDK_MODULE_17_ID +_0224174C: .word SDK_OVERLAY_MODULE_08_ID +_02241750: .word SDK_OVERLAY_MODULE_17_ID thumb_func_start MOD12_02241754 MOD12_02241754: ; 0x02241754 diff --git a/arm9/modules/29/asm/module_29.s b/arm9/modules/29/asm/module_29.s new file mode 100644 index 00000000..818f41aa --- /dev/null +++ b/arm9/modules/29/asm/module_29.s @@ -0,0 +1,1126 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD29_02254840 +MOD29_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD29_02254854 + ldr r1, _02254850 ; =MOD29_02254914 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD29_02254854 +_02254850: .word MOD29_02254914 + thumb_func_end MOD29_02254840 + + thumb_func_start MOD29_02254854 +MOD29_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x54 + 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 MOD29_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD29_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 MOD29_022548E0 + thumb_func_end MOD29_02254854 + + thumb_func_start MOD29_0225489C +MOD29_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x48 + add r1, r5, #4 + bl MOD29_02254BC0 + cmp r0, #0 + beq _022548BE + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + str r0, [r5, #0x50] + str r4, [r5, #0x4c] + mov r0, #1 + pop {r3, r4, r5, pc} +_022548BE: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD29_0225489C + + thumb_func_start MOD29_022548C4 +MOD29_022548C4: ; 0x022548C4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _022548D2 + bl FUN_02016A18 +_022548D2: + ldr r0, [r4, #0x48] + bl MOD29_02254C84 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD29_022548C4 + + thumb_func_start MOD29_022548E0 +MOD29_022548E0: ; 0x022548E0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhs _0225490C + lsl r2, r1, #2 + ldr r1, _02254910 ; =0x0225509C + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _0225490C + add r0, r4, #0 + bl MOD29_022548C4 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x4c] + bl MOD20_022529A0 +_0225490C: + pop {r3, r4, r5, pc} + nop +_02254910: .word 0x0225509C + thumb_func_end MOD29_022548E0 + + thumb_func_start MOD29_02254914 +MOD29_02254914: ; 0x02254914 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD29_02254914 + + thumb_func_start MOD29_0225491C +MOD29_0225491C: ; 0x0225491C + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254924 + b _02254926 +_02254924: + mov r1, #2 +_02254926: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD29_0225491C + + thumb_func_start MOD29_02254930 +MOD29_02254930: ; 0x02254930 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254940 + cmp r0, #1 + beq _02254950 + b _0225496A +_02254940: + ldr r0, [r4, #0x48] + mov r1, #0 + bl MOD29_02254CC0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _0225496A +_02254950: + ldr r0, [r4, #0x48] + mov r1, #0 + bl MOD29_02254CE4 + cmp r0, #0 + beq _0225496A + ldr r0, [r4, #0x4c] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD29_0225491C +_0225496A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD29_02254930 + + thumb_func_start MOD29_02254970 +MOD29_02254970: ; 0x02254970 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254990 + ldr r0, [r4, #0x48] + bl MOD29_0225508C + add r0, r4, #0 + mov r1, #2 + bl MOD29_0225491C + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02254990: + ldrb r1, [r4, #1] + cmp r1, #3 + bhi _02254A5A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022549A2: ; jump table + .short _022549AA - _022549A2 - 2 ; case 0 + .short _022549D4 - _022549A2 - 2 ; case 1 + .short _02254A2A - _022549A2 - 2 ; case 2 + .short _02254A3C - _022549A2 - 2 ; case 3 +_022549AA: + add r1, sp, #4 + add r2, sp, #0 + bl MOD29_02254A64 + cmp r0, #0 + beq _02254A5A + ldr r1, [sp, #4] + ldr r2, [sp] + add r0, r4, #0 + bl MOD29_02254AA8 + ldr r0, _02254A60 ; =0x00000668 + bl MOD20_02252B28 + ldr r0, [r4, #0x48] + mov r1, #2 + bl MOD29_02254CC0 + mov r0, #1 + strb r0, [r4, #1] + b _02254A5A +_022549D4: + ldr r0, [r4, #0x48] + mov r1, #2 + bl MOD29_02254CE4 + cmp r0, #0 + beq _022549E6 + mov r0, #0 + strb r0, [r4, #1] + b _02254A5A +_022549E6: + ldr r0, [r4, #0x4c] + bl MOD20_02252C30 + cmp r0, #1 + beq _022549FA + ldr r0, [r4, #0x4c] + bl MOD20_02252C08 + cmp r0, #0 + beq _02254A06 +_022549FA: + ldr r0, [r4, #0x48] + bl MOD29_0225508C + mov r0, #2 + strb r0, [r4, #1] + b _02254A5A +_02254A06: + add r0, r4, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD29_02254A64 + cmp r0, #0 + beq _02254A5A + ldr r1, [sp, #4] + ldr r2, [sp] + add r0, r4, #0 + bl MOD29_02254AA8 + ldr r0, [r4, #0x48] + bl MOD29_0225508C + mov r0, #3 + strb r0, [r4, #1] + b _02254A5A +_02254A2A: + ldr r0, [r4, #0x48] + mov r1, #2 + bl MOD29_02254CE4 + cmp r0, #0 + beq _02254A5A + mov r0, #0 + strb r0, [r4, #1] + b _02254A5A +_02254A3C: + ldr r0, [r4, #0x48] + mov r1, #2 + bl MOD29_02254CE4 + cmp r0, #0 + beq _02254A5A + ldr r0, _02254A60 ; =0x00000668 + bl MOD20_02252B28 + ldr r0, [r4, #0x48] + mov r1, #2 + bl MOD29_02254CC0 + mov r0, #1 + strb r0, [r4, #1] +_02254A5A: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_02254A60: .word 0x00000668 + thumb_func_end MOD29_02254970 + + thumb_func_start MOD29_02254A64 +MOD29_02254A64: ; 0x02254A64 + push {r3, r4, r5, lr} + ldr r0, [r0, #0x4c] + add r5, r1, #0 + add r4, r2, #0 + bl MOD20_02252C08 + cmp r0, #0 + bne _02254AA4 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02020ACC + cmp r0, #0 + beq _02254AA4 + ldr r0, [r5] + sub r0, #0x18 + cmp r0, #0xb0 + bhs _02254A8C + mov r1, #1 + b _02254A8E +_02254A8C: + mov r1, #0 +_02254A8E: + ldr r0, [r4] + sub r0, #0x18 + cmp r0, #0x90 + bhs _02254A9A + mov r0, #1 + b _02254A9C +_02254A9A: + mov r0, #0 +_02254A9C: + tst r0, r1 + beq _02254AA4 + mov r0, #1 + pop {r3, r4, r5, pc} +_02254AA4: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD29_02254A64 + + thumb_func_start MOD29_02254AA8 +MOD29_02254AA8: ; 0x02254AA8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0x4c] + add r7, r1, #0 + str r2, [sp] + bl MOD20_02252C38 + mov r1, #8 + bl FUN_02039754 + str r0, [sp, #4] + add r4, r5, #4 + mov r1, #0 + str r1, [r4, #8] + ldr r0, [sp] + str r7, [r5, #4] + str r0, [r4, #4] + ldr r0, [sp, #4] + str r1, [r4, #0xc] + cmp r0, #0 + beq _02254B66 + ldrb r0, [r0, #4] + cmp r0, #0xff + beq _02254B60 + add r6, r4, #0 + ldr r5, [sp, #4] + add r6, #0xc +_02254AE0: + ldrh r0, [r5] + ldrh r1, [r5, #2] + add r2, sp, #0xc + add r3, sp, #8 + bl MOD29_02254B70 + ldr r1, [sp, #8] + ldr r0, [sp] + sub r0, r1, r0 + ldr r1, [sp, #0xc] + sub r1, r1, r7 + add r2, r1, #0 + mul r2, r1 + add r1, r0, #0 + mul r1, r0 + add r0, r2, r1 + lsl r0, r0, #0xc + blx FX_Sqrt + ldrb r1, [r5, #4] + lsl r2, r1, #2 + ldr r1, _02254B6C ; =0x022550A8 + ldr r1, [r1, r2] + cmp r0, r1 + bgt _02254B46 + ldr r1, [r4, #0xc] + cmp r1, #8 + bhs _02254B58 + mov r2, #6 + mul r2, r1 + ldr r0, [sp, #0xc] + add r1, r4, r2 + strh r0, [r1, #0x10] + ldr r2, [r4, #0xc] + mov r1, #6 + mul r1, r2 + ldr r0, [sp, #8] + add r1, r4, r1 + strh r0, [r1, #0x12] + ldr r2, [r4, #0xc] + mov r1, #6 + mul r1, r2 + ldrb r0, [r5, #4] + add r1, r4, r1 + strh r0, [r1, #0x14] + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + mov r0, #2 + str r0, [r4, #8] + b _02254B58 +_02254B46: + mov r1, #3 + lsl r1, r1, #0x10 + cmp r0, r1 + bgt _02254B58 + ldr r0, [r4, #8] + cmp r0, #0 + bne _02254B58 + mov r0, #1 + str r0, [r4, #8] +_02254B58: + add r5, r5, #6 + ldrb r0, [r5, #4] + cmp r0, #0xff + bne _02254AE0 +_02254B60: + ldr r0, [sp, #4] + bl FUN_02016A18 +_02254B66: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254B6C: .word 0x022550A8 + thumb_func_end MOD29_02254AA8 + + thumb_func_start MOD29_02254B70 +MOD29_02254B70: ; 0x02254B70 + push {r4, r5} + sub r4, r0, #7 + mov r0, #0xb + add r5, r4, #0 + mul r5, r0 + sub r1, r1, #7 + add r5, #0x70 + mul r0, r1 + str r5, [r2] + add r0, #0x65 + str r0, [r3] + pop {r4, r5} + bx lr + .align 2, 0 + thumb_func_end MOD29_02254B70 + + thumb_func_start MOD29_02254B8C +MOD29_02254B8C: ; 0x02254B8C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254B9C + cmp r0, #1 + beq _02254BAC + b _02254BBA +_02254B9C: + ldr r0, [r4, #0x48] + mov r1, #1 + bl MOD29_02254CC0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254BBA +_02254BAC: + ldr r0, [r4, #0x48] + bl MOD29_02254CF0 + cmp r0, #0 + beq _02254BBA + mov r0, #1 + pop {r4, pc} +_02254BBA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD29_02254B8C + + thumb_func_start MOD29_02254BC0 +MOD29_02254BC0: ; 0x02254BC0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x90 + bl FUN_02016998 + add r4, r0, #0 + beq _02254C04 + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + str r6, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #0x6c] + bl MOD20_02252D24 + str r0, [r4, #0x30] + mov r1, #0 + str r1, [r4, #0x34] + add r2, r4, #0 + add r0, r1, #0 +_02254BF4: + add r1, r1, #1 + str r0, [r2, #0x38] + add r2, r2, #4 + cmp r1, #8 + blt _02254BF4 + str r4, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254C04: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD29_02254BC0 + + thumb_func_start MOD29_02254C08 +MOD29_02254C08: ; 0x02254C08 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + mov r0, #8 + str r0, [sp] + add r0, r6, #0 + add r0, #0x58 + mov r1, #0xc + mov r2, #0x28 + mov r3, #0x29 + bl MOD20_02253FBC + cmp r0, #0 + beq _02254C74 + 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, #0x2a + bl FUN_02006A34 + add r2, r6, #0 + ldr r0, [r6, #0x30] + ldr r1, _02254C7C ; =0x022550C0 + add r2, #0x58 + bl MOD20_02253E74 + mov r1, #1 + str r0, [r6, #0x34] + bl MOD20_02253F78 + add r7, r6, #0 + mov r4, #0 + add r5, r6, #0 + add r7, #0x58 +_02254C54: + ldr r0, [r6, #0x30] + ldr r1, _02254C80 ; =0x022550D0 + add r2, r7, #0 + bl MOD20_02253E74 + mov r1, #1 + str r0, [r5, #0x38] + bl MOD20_02253F78 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _02254C54 + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02254C74: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02254C7C: .word 0x022550C0 +_02254C80: .word 0x022550D0 + thumb_func_end MOD29_02254C08 + + thumb_func_start MOD29_02254C84 +MOD29_02254C84: ; 0x02254C84 + push {r4, r5, r6, lr} + add r6, r0, #0 + beq _02254CBC + mov r4, #0 + add r5, r6, #0 +_02254C8E: + ldr r1, [r5, #0x38] + cmp r1, #0 + beq _02254C9A + ldr r0, [r6, #0x30] + bl MOD20_02253F14 +_02254C9A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _02254C8E + ldr r1, [r6, #0x34] + cmp r1, #0 + beq _02254CAE + ldr r0, [r6, #0x30] + bl MOD20_02253F14 +_02254CAE: + add r0, r6, #0 + add r0, #0x58 + bl MOD20_02254014 + add r0, r6, #0 + bl FUN_02016A18 +_02254CBC: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD29_02254C84 + + thumb_func_start MOD29_02254CC0 +MOD29_02254CC0: ; 0x02254CC0 + 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, _02254CE0 ; =0x022550FC + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254CE0: .word 0x022550FC + thumb_func_end MOD29_02254CC0 + + thumb_func_start MOD29_02254CE4 +MOD29_02254CE4: ; 0x02254CE4 + ldr r3, _02254CEC ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254CEC: .word MOD20_02253794 + thumb_func_end MOD29_02254CE4 + + thumb_func_start MOD29_02254CF0 +MOD29_02254CF0: ; 0x02254CF0 + ldr r3, _02254CF8 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254CF8: .word MOD20_022537B8 + thumb_func_end MOD29_02254CF0 + + thumb_func_start MOD29_02254CFC +MOD29_02254CFC: ; 0x02254CFC + 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 MOD29_02254CFC + + thumb_func_start MOD29_02254D10 +MOD29_02254D10: ; 0x02254D10 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r2, _02254DE8 ; =0x022550E0 + 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, #0x27 + 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, #0x26 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + add r0, r4, #0 + add r0, #0x70 + bl MOD20_02252DEC + add r0, r4, #0 + add r0, #0x80 + ldrh r1, [r0] + add r0, r4, #0 + add r0, #0x72 + strh r1, [r0] + add r0, r4, #0 + add r0, #0x70 + mov r1, #0x20 + blx DC_FlushRange + add r0, r4, #0 + mov r1, #0x1a + add r0, #0x70 + lsl r1, r1, #4 + mov r2, #0x20 + blx GXS_LoadOBJPltt + add r0, r4, #0 + add r0, #0x8e + ldrh r1, [r0] + add r0, r4, #0 + add r0, #0x72 + strh r1, [r0] + add r0, r4, #0 + add r0, #0x70 + mov r1, #0x20 + blx DC_FlushRange + add r0, r4, #0 + mov r1, #7 + add r0, #0x70 + lsl r1, r1, #6 + mov r2, #0x20 + blx GXS_LoadOBJPltt + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254DEC ; =0x04001000 + ldr r0, _02254DF0 ; =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 MOD29_02254C08 + add r0, r5, #0 + bl MOD29_02254CFC + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_02254DE8: .word 0x022550E0 +_02254DEC: .word 0x04001000 +_02254DF0: .word 0xFFFFE0FF + thumb_func_end MOD29_02254D10 + + thumb_func_start MOD29_02254DF4 +MOD29_02254DF4: ; 0x02254DF4 + 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 MOD29_02254CFC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD29_02254DF4 + + thumb_func_start MOD29_02254E10 +MOD29_02254E10: ; 0x02254E10 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + str r0, [sp] + add r0, r5, #0 + bl MOD20_022538A0 + add r6, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r7, r0, #0 + add r0, r5, #0 + bl MOD20_022538A8 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + bne _02254E40 + mov r0, #1 + str r0, [r6, #0x6c] + ldr r0, [r7, #8] + str r0, [r4] +_02254E40: + ldr r2, [r4] + ldr r0, [sp] + lsl r3, r2, #2 + ldr r2, _02254E50 ; =0x022550B4 + add r1, r5, #0 + ldr r2, [r2, r3] + blx r2 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254E50: .word 0x022550B4 + thumb_func_end MOD29_02254E10 + + thumb_func_start MOD29_02254E54 +MOD29_02254E54: ; 0x02254E54 + 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 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _02254E78 + cmp r0, #1 + beq _02254E9E + pop {r4, r5, r6, pc} +_02254E78: + ldr r1, [r6] + ldr r2, [r6, #4] + ldr r0, [r4, #0x34] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD20_02253F28 + add r0, r5, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} +_02254E9E: + ldr r0, [r4, #0x6c] + cmp r0, #0 + bne _02254EB2 + add r0, r4, #0 + bl MOD29_02255068 + add r0, r5, #0 + bl MOD29_02254CFC + pop {r4, r5, r6, pc} +_02254EB2: + ldr r0, [r4, #0x34] + bl MOD20_02253F44 + cmp r0, #0 + beq _02254EC8 + add r0, r4, #0 + bl MOD29_02255068 + add r0, r5, #0 + bl MOD29_02254CFC +_02254EC8: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD29_02254E54 + + thumb_func_start MOD29_02254ECC +MOD29_02254ECC: ; 0x02254ECC + 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 + add r0, r6, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _02254EF0 + cmp r0, #1 + beq _02254F16 + pop {r4, r5, r6, pc} +_02254EF0: + ldr r1, [r4] + ldr r2, [r4, #4] + ldr r0, [r5, #0x34] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + ldr r0, [r5, #0x34] + mov r1, #0 + bl MOD20_02253F28 + ldr r0, [r5, #0x34] + mov r1, #0 + bl MOD20_02253F78 + add r0, r6, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} +_02254F16: + ldr r0, [r5, #0x6c] + cmp r0, #0 + bne _02254F2A + add r0, r5, #0 + bl MOD29_02255068 + add r0, r6, #0 + bl MOD29_02254CFC + pop {r4, r5, r6, pc} +_02254F2A: + ldr r0, [r5, #0x34] + bl MOD20_02253F44 + cmp r0, #0 + beq _02254F3C + ldr r0, [r5, #0x34] + mov r1, #0 + bl MOD20_02253F28 +_02254F3C: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD29_02254ECC + + thumb_func_start MOD29_02254F40 +MOD29_02254F40: ; 0x02254F40 + 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 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _02254F68 + cmp r0, #1 + beq _02254F96 + cmp r0, #2 + beq _02254FC4 + pop {r4, r5, r6, pc} +_02254F68: + add r0, r4, #0 + add r1, r6, #0 + bl MOD29_02254FF4 + ldr r1, [r6] + ldr r2, [r6, #4] + ldr r0, [r4, #0x34] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD20_02253F28 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD20_02253F78 + add r0, r5, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} +_02254F96: + ldr r0, [r4, #0x6c] + cmp r0, #0 + bne _02254FAA + add r0, r4, #0 + bl MOD29_02255068 + add r0, r5, #0 + bl MOD29_02254CFC + pop {r4, r5, r6, pc} +_02254FAA: + ldr r0, [r4, #0x34] + bl MOD20_02253F44 + cmp r0, #0 + beq _02254FF2 + add r0, r4, #0 + add r1, r6, #0 + bl MOD29_02255020 + add r0, r5, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} +_02254FC4: + ldr r0, [r4, #0x6c] + cmp r0, #0 + bne _02254FD8 + add r0, r4, #0 + bl MOD29_02255068 + add r0, r5, #0 + bl MOD29_02254CFC + pop {r4, r5, r6, pc} +_02254FD8: + add r0, r4, #0 + bl MOD29_0225505C + cmp r0, #0 + beq _02254FF2 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD20_02253F28 + add r0, r5, #0 + mov r1, #1 + bl MOD20_022538B8 +_02254FF2: + pop {r4, r5, r6, pc} + thumb_func_end MOD29_02254F40 + + thumb_func_start MOD29_02254FF4 +MOD29_02254FF4: ; 0x02254FF4 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r5, r0, #0 + ldr r0, [r7, #0xc] + mov r6, #0 + cmp r0, #0 + bls _0225501E + add r4, r7, #0 +_02255004: + ldrh r1, [r4, #0x10] + ldrh r2, [r4, #0x12] + ldr r0, [r5, #0x38] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + ldr r0, [r7, #0xc] + add r6, r6, #1 + add r4, r4, #6 + add r5, r5, #4 + cmp r6, r0 + blo _02255004 +_0225501E: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD29_02254FF4 + + thumb_func_start MOD29_02255020 +MOD29_02255020: ; 0x02255020 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, r1, #0 + ldr r0, [r0, #0xc] + mov r6, #0 + str r1, [sp] + cmp r0, #0 + bls _0225505A + add r4, r1, #0 +_02255032: + ldrh r0, [r4, #0x14] + add r7, r0, #1 + cmp r7, #3 + blo _0225503C + mov r7, #3 +_0225503C: + ldr r0, [r5, #0x38] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x38] + add r1, r7, #0 + bl MOD20_02253F28 + ldr r0, [sp] + add r6, r6, #1 + ldr r0, [r0, #0xc] + add r4, r4, #6 + add r5, r5, #4 + cmp r6, r0 + blo _02255032 +_0225505A: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD29_02255020 + + thumb_func_start MOD29_0225505C +MOD29_0225505C: ; 0x0225505C + ldr r3, _02255064 ; =MOD20_02253F44 + ldr r0, [r0, #0x38] + bx r3 + nop +_02255064: .word MOD20_02253F44 + thumb_func_end MOD29_0225505C + + thumb_func_start MOD29_02255068 +MOD29_02255068: ; 0x02255068 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x34] + mov r1, #1 + bl MOD20_02253F78 + mov r4, #0 + mov r6, #1 +_02255078: + ldr r0, [r5, #0x38] + add r1, r6, #0 + bl MOD20_02253F78 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _02255078 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD29_02255068 + + thumb_func_start MOD29_0225508C +MOD29_0225508C: ; 0x0225508C + push {r4, lr} + add r4, r0, #0 + bl MOD29_02255068 + mov r0, #0 + str r0, [r4, #0x6c] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD29_0225508C + + .section .data + ; 0x0225509C + .incbin "baserom.nds", 0x28CA5C, 0xA4 diff --git a/arm9/modules/30/asm/module_30.s b/arm9/modules/30/asm/module_30.s new file mode 100644 index 00000000..36581e76 --- /dev/null +++ b/arm9/modules/30/asm/module_30.s @@ -0,0 +1,734 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD30_02254840 +MOD30_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD30_02254854 + ldr r1, _02254850 ; =MOD30_0225496C + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD30_02254854 +_02254850: .word MOD30_0225496C + thumb_func_end MOD30_02254840 + + thumb_func_start MOD30_02254854 +MOD30_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x20 + 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 MOD30_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD30_02254930 + 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 MOD30_02254930 + thumb_func_end MOD30_02254854 + + thumb_func_start MOD30_0225489C +MOD30_0225489C: ; 0x0225489C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #1 + add r1, r5, #0 + add r7, r2, #0 + add r4, r3, #0 + str r0, [r5, #0xc] + add r0, r4, #0 + add r1, #8 + mov r2, #4 + bl FUN_02089418 + cmp r0, #0 + bne _022548BE + mov r0, #0 + str r0, [r5, #8] +_022548BE: + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x10 + add r1, #8 + add r2, r7, #0 + str r4, [r5, #4] + bl MOD30_02254A90 + cmp r0, #0 + beq _022548F6 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + mov r0, #8 + str r0, [sp] + ldr r0, _022548FC ; =0x02254DA0 + ldr r2, _02254900 ; =MOD30_02254904 + mov r1, #1 + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x18] + mov r0, #0 + str r0, [r5, #0x1c] + str r6, [r5, #0x14] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022548F6: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022548FC: .word 0x02254DA0 +_02254900: .word MOD30_02254904 + thumb_func_end MOD30_0225489C + + thumb_func_start MOD30_02254904 +MOD30_02254904: ; 0x02254904 + cmp r0, #0 + bne _0225490A + str r1, [r3, #0x1c] +_0225490A: + bx lr + thumb_func_end MOD30_02254904 + + thumb_func_start MOD30_0225490C +MOD30_0225490C: ; 0x0225490C + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #8 + mov r2, #4 + bl FUN_020893F0 + ldr r0, [r4, #0x18] + bl MOD20_02254198 + ldr r0, [r4, #0x10] + bl MOD30_02254ACC + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD30_0225490C + + thumb_func_start MOD30_02254930 +MOD30_02254930: ; 0x02254930 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254966 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254968 ; =0x02254DA4 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254966 + add r0, r4, #0 + bl MOD30_0225490C + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x14] + bl MOD20_022529A0 +_02254966: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254968: .word 0x02254DA4 + thumb_func_end MOD30_02254930 + + thumb_func_start MOD30_0225496C +MOD30_0225496C: ; 0x0225496C + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD30_0225496C + + thumb_func_start MOD30_02254974 +MOD30_02254974: ; 0x02254974 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _0225497C + b _0225497E +_0225497C: + mov r1, #2 +_0225497E: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD30_02254974 + + thumb_func_start MOD30_02254988 +MOD30_02254988: ; 0x02254988 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254998 + cmp r0, #1 + beq _022549A8 + b _022549C2 +_02254998: + ldr r0, [r4, #0x10] + mov r1, #0 + bl MOD30_02254BC8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549C2 +_022549A8: + ldr r0, [r4, #0x10] + mov r1, #0 + bl MOD30_02254BEC + cmp r0, #0 + beq _022549C2 + ldr r0, [r4, #0x14] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD30_02254974 +_022549C2: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD30_02254988 + + thumb_func_start MOD30_022549C8 +MOD30_022549C8: ; 0x022549C8 + push {r4, lr} + add r4, r0, #0 + ldrb r2, [r4, #2] + add r1, r4, #0 + add r1, #8 + cmp r2, #0 + beq _022549E0 + mov r1, #2 + bl MOD30_02254974 + mov r0, #0 + pop {r4, pc} +_022549E0: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549EC + cmp r0, #1 + beq _02254A0A + b _02254A52 +_022549EC: + ldr r0, [r4, #0x1c] + cmp r0, #1 + bne _02254A52 + mov r0, #0 + str r0, [r1, #4] + ldr r0, [r4, #0x10] + mov r1, #2 + bl MOD30_02254BC8 + mov r0, #0 + str r0, [r4, #0x1c] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A52 +_02254A0A: + ldr r0, [r4, #0x1c] + cmp r0, #2 + bne _02254A24 + mov r0, #1 + str r0, [r1, #4] + ldr r0, [r4, #0x10] + mov r1, #2 + bl MOD30_02254BC8 + mov r0, #0 + str r0, [r4, #0x1c] + strb r0, [r4, #1] + b _02254A52 +_02254A24: + cmp r0, #3 + bne _02254A52 + mov r0, #1 + str r0, [r1, #4] + ldr r0, [r1] + add r2, r0, #1 + ldr r0, _02254A58 ; =0x0000270F + str r2, [r1] + cmp r2, r0 + bls _02254A3C + mov r0, #0 + str r0, [r1] +_02254A3C: + ldr r0, [r4, #0x10] + mov r1, #2 + bl MOD30_02254BC8 + ldr r0, [r4, #0x10] + mov r1, #3 + bl MOD30_02254BC8 + mov r0, #0 + str r0, [r4, #0x1c] + strb r0, [r4, #1] +_02254A52: + mov r0, #0 + pop {r4, pc} + nop +_02254A58: .word 0x0000270F + thumb_func_end MOD30_022549C8 + + thumb_func_start MOD30_02254A5C +MOD30_02254A5C: ; 0x02254A5C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A6C + cmp r0, #1 + beq _02254A7C + b _02254A8A +_02254A6C: + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD30_02254BC8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A8A +_02254A7C: + ldr r0, [r4, #0x10] + bl MOD30_02254BF8 + cmp r0, #0 + beq _02254A8A + mov r0, #1 + pop {r4, pc} +_02254A8A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD30_02254A5C + + thumb_func_start MOD30_02254A90 +MOD30_02254A90: ; 0x02254A90 + 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 _02254AC6 + 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 MOD30_02254AE0 + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254AC6: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD30_02254A90 + + thumb_func_start MOD30_02254ACC +MOD30_02254ACC: ; 0x02254ACC + push {r4, lr} + add r4, r0, #0 + beq _02254ADC + bl MOD30_02254B94 + add r0, r4, #0 + bl FUN_02016A18 +_02254ADC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD30_02254ACC + + thumb_func_start MOD30_02254AE0 +MOD30_02254AE0: ; 0x02254AE0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r7, r0, #0 + str r1, [sp, #0xc] + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #2 + bl FUN_02006A34 + mov r0, #0 + str r0, [sp] + mov r2, #1 + mov r3, #0xa + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x2f + lsl r3, r3, #8 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x38 + mov r1, #0xc + mov r2, #0x2d + mov r3, #0x2e + bl MOD20_02253FBC + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x4c + mov r1, #0xc + mov r2, #3 + mov r3, #4 + bl MOD20_02253FBC + add r2, r7, #0 + ldr r0, [r7, #0x20] + ldr r1, _02254B8C ; =0x02254DB0 + add r2, #0x38 + bl MOD20_02253E74 + mov r1, #0x50 + str r0, [r7, #0x24] + bl MOD20_02253FA4 + add r0, r7, #0 + mov r5, #0x16 + str r0, [sp, #0x10] + add r0, #0x4c + mov r6, #0 + add r4, r7, #0 + lsl r5, r5, #0xe + str r0, [sp, #0x10] +_02254B5C: + ldr r0, [r7, #0x20] + ldr r1, _02254B90 ; =0x02254DC0 + ldr r2, [sp, #0x10] + bl MOD20_02253E74 + mov r2, #1 + add r1, r5, #0 + lsl r2, r2, #0x12 + str r0, [r4, #0x28] + bl MOD20_02253F64 + mov r0, #1 + lsl r0, r0, #0x10 + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, r0 + cmp r6, #4 + blt _02254B5C + ldr r1, [sp, #0xc] + add r0, r7, #0 + bl MOD30_02254D28 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254B8C: .word 0x02254DB0 +_02254B90: .word 0x02254DC0 + thumb_func_end MOD30_02254AE0 + + thumb_func_start MOD30_02254B94 +MOD30_02254B94: ; 0x02254B94 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r6, #0x20] + ldr r1, [r6, #0x24] + bl MOD20_02253F14 + mov r4, #0 + add r5, r6, #0 +_02254BA4: + ldr r0, [r6, #0x20] + ldr r1, [r5, #0x28] + bl MOD20_02253F14 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02254BA4 + add r0, r6, #0 + add r0, #0x38 + bl MOD20_02254014 + add r6, #0x4c + add r0, r6, #0 + bl MOD20_02254014 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD30_02254B94 + + thumb_func_start MOD30_02254BC8 +MOD30_02254BC8: ; 0x02254BC8 + 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, _02254BE8 ; =0x02254DEC + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254BE8: .word 0x02254DEC + thumb_func_end MOD30_02254BC8 + + thumb_func_start MOD30_02254BEC +MOD30_02254BEC: ; 0x02254BEC + ldr r3, _02254BF4 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254BF4: .word MOD20_02253794 + thumb_func_end MOD30_02254BEC + + thumb_func_start MOD30_02254BF8 +MOD30_02254BF8: ; 0x02254BF8 + ldr r3, _02254C00 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254C00: .word MOD20_022537B8 + thumb_func_end MOD30_02254BF8 + + thumb_func_start MOD30_02254C04 +MOD30_02254C04: ; 0x02254C04 + 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 MOD30_02254C04 + + thumb_func_start MOD30_02254C18 +MOD30_02254C18: ; 0x02254C18 + 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, _02254C9C ; =0x02254DD0 + 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, #0x2c + 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, #0x2b + 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, _02254CA0 ; =0x04001000 + ldr r0, _02254CA4 ; =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 MOD30_02254C04 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02254C9C: .word 0x02254DD0 +_02254CA0: .word 0x04001000 +_02254CA4: .word 0xFFFFE0FF + thumb_func_end MOD30_02254C18 + + thumb_func_start MOD30_02254CA8 +MOD30_02254CA8: ; 0x02254CA8 + 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 MOD30_02254C04 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD30_02254CA8 + + thumb_func_start MOD30_02254CC4 +MOD30_02254CC4: ; 0x02254CC4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0, #4] + cmp r0, #0 + beq _02254CDE + cmp r0, #1 + beq _02254CEE + b _02254CF6 +_02254CDE: + ldr r0, _02254D00 ; =0x00000669 + bl MOD20_02252B28 + ldr r0, [r4, #0x24] + mov r1, #1 + bl MOD20_02253F28 + b _02254CF6 +_02254CEE: + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD20_02253F28 +_02254CF6: + add r0, r5, #0 + bl MOD30_02254C04 + pop {r3, r4, r5, pc} + nop +_02254D00: .word 0x00000669 + thumb_func_end MOD30_02254CC4 + + thumb_func_start MOD30_02254D04 +MOD30_02254D04: ; 0x02254D04 + 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 MOD30_02254D28 + add r0, r5, #0 + bl MOD30_02254C04 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD30_02254D04 + + thumb_func_start MOD30_02254D28 +MOD30_02254D28: ; 0x02254D28 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + ldr r0, [r1] + ldr r5, _02254D8C ; =0x04000280 + str r0, [sp, #4] + mov r0, #0xfa + lsl r0, r0, #2 + str r0, [sp] + mov r0, #0 + str r0, [sp, #8] + lsr r4, r5, #0xb + lsr r6, r5, #0xb +_02254D42: + mov r0, #0 + strh r0, [r5] + ldr r1, [sp, #4] + ldr r0, _02254D90 ; =0x04000290 + str r1, [r0] + ldr r1, [sp] + str r1, [r0, #8] + ldr r0, _02254D94 ; =0x04000298 + mov r1, #0 + str r1, [r0, #4] +_02254D56: + ldrh r0, [r5] + tst r0, r4 + bne _02254D56 + ldr r1, _02254D98 ; =0x040002A0 + ldr r0, [r7, #0x28] + ldr r1, [r1] + bl MOD20_02253F28 +_02254D66: + ldrh r0, [r5] + tst r0, r6 + bne _02254D66 + ldr r0, _02254D9C ; =0x040002A8 + mov r1, #0xa + ldr r0, [r0] + str r0, [sp, #4] + ldr r0, [sp] + bl _u32_div_f + str r0, [sp] + ldr r0, [sp, #8] + add r7, r7, #4 + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, #4 + blt _02254D42 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254D8C: .word 0x04000280 +_02254D90: .word 0x04000290 +_02254D94: .word 0x04000298 +_02254D98: .word 0x040002A0 +_02254D9C: .word 0x040002A8 + thumb_func_end MOD30_02254D28 + + .section .data + ; 0x02254DA0 + .incbin "baserom.nds", 0x28D160, 0xA0 diff --git a/arm9/modules/31/asm/module_31.s b/arm9/modules/31/asm/module_31.s new file mode 100644 index 00000000..cdf3282a --- /dev/null +++ b/arm9/modules/31/asm/module_31.s @@ -0,0 +1,724 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD31_02254840 +MOD31_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD31_02254854 + ldr r1, _02254850 ; =MOD31_02254954 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD31_02254854 +_02254850: .word MOD31_02254954 + thumb_func_end MOD31_02254840 + + thumb_func_start MOD31_02254854 +MOD31_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x20 + 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 MOD31_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD31_02254918 + 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 MOD31_02254918 + thumb_func_end MOD31_02254854 + + thumb_func_start MOD31_0225489C +MOD31_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + str r1, [r5, #0x10] + add r0, r1, #0 + add r4, r2, #0 + bl MOD20_02252C3C + str r0, [r5, #0x1c] + mov r0, #1 + str r0, [r5, #8] + ldr r0, [r5, #0x1c] + bl FUN_0204BF84 + str r0, [r5, #4] + add r0, r5, #0 + add r0, #0xc + add r1, r5, #4 + add r2, r4, #0 + bl MOD31_02254A84 + cmp r0, #0 + beq _022548EA + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + mov r0, #8 + str r0, [sp] + ldr r0, _022548F0 ; =0x02254D98 + ldr r2, _022548F4 ; =MOD31_022548F8 + mov r1, #1 + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x14] + mov r0, #0 + str r0, [r5, #0x18] + mov r0, #1 + pop {r3, r4, r5, pc} +_022548EA: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_022548F0: .word 0x02254D98 +_022548F4: .word MOD31_022548F8 + thumb_func_end MOD31_0225489C + + thumb_func_start MOD31_022548F8 +MOD31_022548F8: ; 0x022548F8 + cmp r0, #0 + bne _022548FE + str r1, [r3, #0x18] +_022548FE: + bx lr + thumb_func_end MOD31_022548F8 + + thumb_func_start MOD31_02254900 +MOD31_02254900: ; 0x02254900 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl MOD20_02254198 + ldr r0, [r4, #0xc] + bl MOD31_02254AC0 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD31_02254900 + + thumb_func_start MOD31_02254918 +MOD31_02254918: ; 0x02254918 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _0225494E + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254950 ; =0x02254D9C + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _0225494E + add r0, r4, #0 + bl MOD31_02254900 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x10] + bl MOD20_022529A0 +_0225494E: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254950: .word 0x02254D9C + thumb_func_end MOD31_02254918 + + thumb_func_start MOD31_02254954 +MOD31_02254954: ; 0x02254954 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD31_02254954 + + thumb_func_start MOD31_0225495C +MOD31_0225495C: ; 0x0225495C + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254964 + b _02254966 +_02254964: + mov r1, #2 +_02254966: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD31_0225495C + + thumb_func_start MOD31_02254970 +MOD31_02254970: ; 0x02254970 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254980 + cmp r0, #1 + beq _02254990 + b _022549AA +_02254980: + ldr r0, [r4, #0xc] + mov r1, #0 + bl MOD31_02254BBC + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549AA +_02254990: + ldr r0, [r4, #0xc] + mov r1, #0 + bl MOD31_02254BE0 + cmp r0, #0 + beq _022549AA + ldr r0, [r4, #0x10] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD31_0225495C +_022549AA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD31_02254970 + + thumb_func_start MOD31_022549B0 +MOD31_022549B0: ; 0x022549B0 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _022549C4 + mov r1, #2 + bl MOD31_0225495C + mov r0, #0 + pop {r4, pc} +_022549C4: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549D0 + cmp r0, #1 + beq _02254A0A + b _02254A4C +_022549D0: + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _022549EE + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4, #0xc] + mov r1, #2 + bl MOD31_02254BBC + mov r0, #0 + str r0, [r4, #0x18] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A4C +_022549EE: + ldr r0, [r4, #0x10] + bl MOD20_02252C34 + cmp r0, #0 + beq _02254A4C + ldr r0, [r4, #0x1c] + bl FUN_0204BF84 + str r0, [r4, #4] + ldr r0, [r4, #0xc] + mov r1, #3 + bl MOD31_02254BBC + b _02254A4C +_02254A0A: + ldr r0, [r4, #0x18] + cmp r0, #2 + bne _02254A24 + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #0xc] + mov r1, #2 + bl MOD31_02254BBC + mov r0, #0 + str r0, [r4, #0x18] + strb r0, [r4, #1] + b _02254A4C +_02254A24: + cmp r0, #3 + bne _02254A4C + mov r0, #1 + str r0, [r4, #8] + mov r1, #0 + str r1, [r4, #4] + ldr r0, [r4, #0x1c] + bl FUN_0204BF88 + ldr r0, [r4, #0xc] + mov r1, #2 + bl MOD31_02254BBC + ldr r0, [r4, #0xc] + mov r1, #3 + bl MOD31_02254BBC + mov r0, #0 + str r0, [r4, #0x18] + strb r0, [r4, #1] +_02254A4C: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD31_022549B0 + + thumb_func_start MOD31_02254A50 +MOD31_02254A50: ; 0x02254A50 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A60 + cmp r0, #1 + beq _02254A70 + b _02254A7E +_02254A60: + ldr r0, [r4, #0xc] + mov r1, #1 + bl MOD31_02254BBC + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A7E +_02254A70: + ldr r0, [r4, #0xc] + bl MOD31_02254BEC + cmp r0, #0 + beq _02254A7E + mov r0, #1 + pop {r4, pc} +_02254A7E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD31_02254A50 + + thumb_func_start MOD31_02254A84 +MOD31_02254A84: ; 0x02254A84 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0x64 + bl FUN_02016998 + add r4, r0, #0 + beq _02254ABA + 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 MOD31_02254AD4 + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254ABA: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD31_02254A84 + + thumb_func_start MOD31_02254AC0 +MOD31_02254AC0: ; 0x02254AC0 + push {r4, lr} + add r4, r0, #0 + beq _02254AD0 + bl MOD31_02254B88 + add r0, r4, #0 + bl FUN_02016A18 +_02254AD0: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD31_02254AC0 + + thumb_func_start MOD31_02254AD4 +MOD31_02254AD4: ; 0x02254AD4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r7, r0, #0 + str r1, [sp, #0xc] + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #2 + bl FUN_02006A34 + mov r0, #0 + str r0, [sp] + mov r2, #1 + mov r3, #0xa + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x34 + lsl r3, r3, #8 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x3c + mov r1, #0xc + mov r2, #0x32 + mov r3, #0x33 + bl MOD20_02253FBC + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x50 + mov r1, #0xc + mov r2, #3 + mov r3, #4 + bl MOD20_02253FBC + add r2, r7, #0 + ldr r0, [r7, #0x20] + ldr r1, _02254B80 ; =0x02254DA8 + add r2, #0x3c + bl MOD20_02253E74 + mov r1, #0x50 + str r0, [r7, #0x24] + bl MOD20_02253FA4 + add r0, r7, #0 + mov r5, #5 + str r0, [sp, #0x10] + add r0, #0x50 + mov r6, #0 + add r4, r7, #0 + lsl r5, r5, #0x10 + str r0, [sp, #0x10] +_02254B50: + ldr r0, [r7, #0x20] + ldr r1, _02254B84 ; =0x02254DB8 + ldr r2, [sp, #0x10] + bl MOD20_02253E74 + mov r2, #1 + add r1, r5, #0 + lsl r2, r2, #0x12 + str r0, [r4, #0x28] + bl MOD20_02253F64 + mov r0, #1 + lsl r0, r0, #0x10 + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, r0 + cmp r6, #5 + blt _02254B50 + ldr r1, [sp, #0xc] + add r0, r7, #0 + bl MOD31_02254D1C + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254B80: .word 0x02254DA8 +_02254B84: .word 0x02254DB8 + thumb_func_end MOD31_02254AD4 + + thumb_func_start MOD31_02254B88 +MOD31_02254B88: ; 0x02254B88 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r6, #0x20] + ldr r1, [r6, #0x24] + bl MOD20_02253F14 + mov r4, #0 + add r5, r6, #0 +_02254B98: + ldr r0, [r6, #0x20] + ldr r1, [r5, #0x28] + bl MOD20_02253F14 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02254B98 + add r0, r6, #0 + add r0, #0x3c + bl MOD20_02254014 + add r6, #0x50 + add r0, r6, #0 + bl MOD20_02254014 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD31_02254B88 + + thumb_func_start MOD31_02254BBC +MOD31_02254BBC: ; 0x02254BBC + 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, _02254BDC ; =0x02254DE4 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254BDC: .word 0x02254DE4 + thumb_func_end MOD31_02254BBC + + thumb_func_start MOD31_02254BE0 +MOD31_02254BE0: ; 0x02254BE0 + ldr r3, _02254BE8 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254BE8: .word MOD20_02253794 + thumb_func_end MOD31_02254BE0 + + thumb_func_start MOD31_02254BEC +MOD31_02254BEC: ; 0x02254BEC + ldr r3, _02254BF4 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254BF4: .word MOD20_022537B8 + thumb_func_end MOD31_02254BEC + + thumb_func_start MOD31_02254BF8 +MOD31_02254BF8: ; 0x02254BF8 + 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 MOD31_02254BF8 + + thumb_func_start MOD31_02254C0C +MOD31_02254C0C: ; 0x02254C0C + 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, _02254C90 ; =0x02254DC8 + 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, #0x31 + 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, #0x30 + 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, _02254C94 ; =0x04001000 + ldr r0, _02254C98 ; =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 MOD31_02254BF8 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02254C90: .word 0x02254DC8 +_02254C94: .word 0x04001000 +_02254C98: .word 0xFFFFE0FF + thumb_func_end MOD31_02254C0C + + thumb_func_start MOD31_02254C9C +MOD31_02254C9C: ; 0x02254C9C + 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 MOD31_02254BF8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD31_02254C9C + + thumb_func_start MOD31_02254CB8 +MOD31_02254CB8: ; 0x02254CB8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0, #4] + cmp r0, #0 + beq _02254CD2 + cmp r0, #1 + beq _02254CE2 + b _02254CEA +_02254CD2: + ldr r0, _02254CF4 ; =0x00000669 + bl MOD20_02252B28 + ldr r0, [r4, #0x24] + mov r1, #1 + bl MOD20_02253F28 + b _02254CEA +_02254CE2: + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD20_02253F28 +_02254CEA: + add r0, r5, #0 + bl MOD31_02254BF8 + pop {r3, r4, r5, pc} + nop +_02254CF4: .word 0x00000669 + thumb_func_end MOD31_02254CB8 + + thumb_func_start MOD31_02254CF8 +MOD31_02254CF8: ; 0x02254CF8 + 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 MOD31_02254D1C + add r0, r5, #0 + bl MOD31_02254BF8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD31_02254CF8 + + thumb_func_start MOD31_02254D1C +MOD31_02254D1C: ; 0x02254D1C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + ldr r0, [r1] + ldr r5, _02254D80 ; =0x04000280 + str r0, [sp, #4] + ldr r0, _02254D84 ; =0x00002710 + lsr r4, r5, #0xb + str r0, [sp] + mov r0, #0 + str r0, [sp, #8] + lsr r6, r5, #0xb +_02254D34: + mov r0, #0 + strh r0, [r5] + ldr r1, [sp, #4] + ldr r0, _02254D88 ; =0x04000290 + str r1, [r0] + ldr r1, [sp] + str r1, [r0, #8] + ldr r0, _02254D8C ; =0x04000298 + mov r1, #0 + str r1, [r0, #4] +_02254D48: + ldrh r0, [r5] + tst r0, r4 + bne _02254D48 + ldr r1, _02254D90 ; =0x040002A0 + ldr r0, [r7, #0x28] + ldr r1, [r1] + bl MOD20_02253F28 +_02254D58: + ldrh r0, [r5] + tst r0, r6 + bne _02254D58 + ldr r0, _02254D94 ; =0x040002A8 + mov r1, #0xa + ldr r0, [r0] + str r0, [sp, #4] + ldr r0, [sp] + bl _u32_div_f + str r0, [sp] + ldr r0, [sp, #8] + add r7, r7, #4 + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, #5 + blt _02254D34 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02254D80: .word 0x04000280 +_02254D84: .word 0x00002710 +_02254D88: .word 0x04000290 +_02254D8C: .word 0x04000298 +_02254D90: .word 0x040002A0 +_02254D94: .word 0x040002A8 + thumb_func_end MOD31_02254D1C + + .section .data + ; 0x02254D98 + .incbin "baserom.nds", 0x28D758, 0xA8 diff --git a/arm9/modules/32/asm/module_32.s b/arm9/modules/32/asm/module_32.s new file mode 100644 index 00000000..135a9b15 --- /dev/null +++ b/arm9/modules/32/asm/module_32.s @@ -0,0 +1,576 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD32_02254840 +MOD32_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD32_02254854 + ldr r1, _02254850 ; =MOD32_0225495C + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD32_02254854 +_02254850: .word MOD32_0225495C + thumb_func_end MOD32_02254840 + + thumb_func_start MOD32_02254854 +MOD32_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x1c + 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 MOD32_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD32_02254920 + 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 MOD32_02254920 + thumb_func_end MOD32_02254854 + + thumb_func_start MOD32_0225489C +MOD32_0225489C: ; 0x0225489C + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0 + add r1, sp, #4 + add r6, r2, #0 + bl PM_GetBackLight + ldr r0, [sp, #4] + cmp r0, #1 + bne _022548B8 + mov r0, #1 + b _022548BA +_022548B8: + mov r0, #0 +_022548BA: + str r0, [r5, #4] + add r0, r5, #0 + add r0, #8 + add r1, r5, #4 + add r2, r6, #0 + bl MOD32_02254A54 + cmp r0, #0 + beq _022548F2 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + mov r0, #8 + str r0, [sp] + ldr r0, _022548F8 ; =0x02254C54 + ldr r2, _022548FC ; =MOD32_02254918 + mov r1, #2 + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x10] + mov r0, #0 + str r0, [r5, #0x14] + add sp, #8 + str r4, [r5, #0xc] + mov r0, #1 + pop {r4, r5, r6, pc} +_022548F2: + mov r0, #0 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_022548F8: .word 0x02254C54 +_022548FC: .word MOD32_02254918 + thumb_func_end MOD32_0225489C + + thumb_func_start MOD32_02254900 +MOD32_02254900: ; 0x02254900 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + bl MOD20_02254198 + ldr r0, [r4, #8] + bl MOD32_02254A90 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD32_02254900 + + thumb_func_start MOD32_02254918 +MOD32_02254918: ; 0x02254918 + str r0, [r3, #0x18] + str r1, [r3, #0x14] + bx lr + .align 2, 0 + thumb_func_end MOD32_02254918 + + thumb_func_start MOD32_02254920 +MOD32_02254920: ; 0x02254920 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254956 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254958 ; =0x02254C5C + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254956 + add r0, r4, #0 + bl MOD32_02254900 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0xc] + bl MOD20_022529A0 +_02254956: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254958: .word 0x02254C5C + thumb_func_end MOD32_02254920 + + thumb_func_start MOD32_0225495C +MOD32_0225495C: ; 0x0225495C + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD32_0225495C + + thumb_func_start MOD32_02254964 +MOD32_02254964: ; 0x02254964 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _0225496C + b _0225496E +_0225496C: + mov r1, #2 +_0225496E: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD32_02254964 + + thumb_func_start MOD32_02254978 +MOD32_02254978: ; 0x02254978 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254988 + cmp r0, #1 + beq _02254998 + b _022549B2 +_02254988: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD32_02254B08 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549B2 +_02254998: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD32_02254B2C + cmp r0, #0 + beq _022549B2 + ldr r0, [r4, #0xc] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD32_02254964 +_022549B2: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD32_02254978 + + thumb_func_start MOD32_022549B8 +MOD32_022549B8: ; 0x022549B8 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _022549CC + mov r1, #2 + bl MOD32_02254964 + mov r0, #0 + pop {r4, pc} +_022549CC: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549D8 + cmp r0, #1 + beq _02254A0C + b _02254A1C +_022549D8: + ldr r0, [r4, #0x14] + cmp r0, #1 + bne _02254A1C + ldr r1, [r4, #0x18] + cmp r1, #0 + bne _022549EA + ldr r0, [r4, #4] + cmp r0, #0 + beq _022549F4 +_022549EA: + cmp r1, #1 + bne _02254A04 + ldr r0, [r4, #4] + cmp r0, #1 + bne _02254A04 +_022549F4: + ldr r1, [r4, #4] + mov r0, #1 + eor r0, r1 + str r0, [r4, #4] + ldr r0, [r4, #8] + mov r1, #2 + bl MOD32_02254B08 +_02254A04: + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A1C +_02254A0C: + ldr r0, [r4, #8] + mov r1, #2 + bl MOD32_02254B2C + cmp r0, #0 + beq _02254A1C + mov r0, #0 + strb r0, [r4, #1] +_02254A1C: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD32_022549B8 + + thumb_func_start MOD32_02254A20 +MOD32_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 MOD32_02254B08 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A4E +_02254A40: + ldr r0, [r4, #8] + bl MOD32_02254B38 + cmp r0, #0 + beq _02254A4E + mov r0, #1 + pop {r4, pc} +_02254A4E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD32_02254A20 + + thumb_func_start MOD32_02254A54 +MOD32_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 MOD32_02254A9C + 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 MOD32_02254A54 + + thumb_func_start MOD32_02254A90 +MOD32_02254A90: ; 0x02254A90 + push {r3, lr} + cmp r0, #0 + beq _02254A9A + bl FUN_02016A18 +_02254A9A: + pop {r3, pc} + thumb_func_end MOD32_02254A90 + + thumb_func_start MOD32_02254A9C +MOD32_02254A9C: ; 0x02254A9C + 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, #0x68 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + add r0, #0x28 + mov r1, #0xc + mov r2, #0x66 + mov r3, #0x67 + bl MOD20_02253FBC + add r2, r5, #0 + ldr r0, [r5, #0x20] + ldr r1, _02254AEC ; =0x02254C68 + add r2, #0x28 + bl MOD20_02253E74 + str r0, [r5, #0x24] + ldr r0, [r4] + cmp r0, #0 + bne _02254AE6 + ldr r0, [r5, #0x24] + mov r1, #1 + bl MOD20_02253F28 +_02254AE6: + add sp, #0xc + pop {r4, r5, pc} + nop +_02254AEC: .word 0x02254C68 + thumb_func_end MOD32_02254A9C + + thumb_func_start MOD32_02254AF0 +MOD32_02254AF0: ; 0x02254AF0 + 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 MOD32_02254AF0 + + thumb_func_start MOD32_02254B08 +MOD32_02254B08: ; 0x02254B08 + 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, _02254B28 ; =0x02254C94 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254B28: .word 0x02254C94 + thumb_func_end MOD32_02254B08 + + thumb_func_start MOD32_02254B2C +MOD32_02254B2C: ; 0x02254B2C + ldr r3, _02254B34 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254B34: .word MOD20_02253794 + thumb_func_end MOD32_02254B2C + + thumb_func_start MOD32_02254B38 +MOD32_02254B38: ; 0x02254B38 + ldr r3, _02254B40 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254B40: .word MOD20_022537B8 + thumb_func_end MOD32_02254B38 + + thumb_func_start MOD32_02254B44 +MOD32_02254B44: ; 0x02254B44 + 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 MOD32_02254B44 + + thumb_func_start MOD32_02254B58 +MOD32_02254B58: ; 0x02254B58 + 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, _02254BDC ; =0x02254C78 + 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, #0x65 + 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, #0x64 + 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, _02254BE0 ; =0x04001000 + ldr r0, _02254BE4 ; =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 MOD32_02254B44 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02254BDC: .word 0x02254C78 +_02254BE0: .word 0x04001000 +_02254BE4: .word 0xFFFFE0FF + thumb_func_end MOD32_02254B58 + + thumb_func_start MOD32_02254BE8 +MOD32_02254BE8: ; 0x02254BE8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + bl MOD32_02254AF0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD32_02254B44 + pop {r3, r4, r5, pc} + thumb_func_end MOD32_02254BE8 + + thumb_func_start MOD32_02254C08 +MOD32_02254C08: ; 0x02254C08 + 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 + ldr r0, [r4] + cmp r0, #0 + ldr r0, [r5, #0x24] + beq _02254C3A + mov r1, #0 + bl MOD20_02253F28 + mov r0, #1 + add r1, r0, #0 + bl PM_SetBackLight + b _02254C48 +_02254C3A: + mov r1, #1 + bl MOD20_02253F28 + mov r0, #1 + mov r1, #0 + bl PM_SetBackLight +_02254C48: + add r0, r6, #0 + bl MOD32_02254B44 + pop {r4, r5, r6, pc} + .align 2, 0 +_02254C50: .word 0x00000663 + thumb_func_end MOD32_02254C08 + + .section .data + ; 0x02254C54 + .incbin "baserom.nds", 0x28DC14, 0x8C |