diff options
Diffstat (limited to 'arm9/modules')
40 files changed, 3930 insertions, 80 deletions
diff --git a/arm9/modules/00/asm/module_00_dummy.s b/arm9/modules/00/asm/module_00_dummy.s index e8a42167..8b137891 100644 --- a/arm9/modules/00/asm/module_00_dummy.s +++ b/arm9/modules/00/asm/module_00_dummy.s @@ -1,2 +1 @@ - .section .data - .space 32 + diff --git a/arm9/modules/01/src/module_01.c b/arm9/modules/01/src/module_01.c deleted file mode 100644 index ae2e9d1f..00000000 --- a/arm9/modules/01/src/module_01.c +++ /dev/null @@ -1,12 +0,0 @@ -#include "global.h" - -u32 UNK_021D7500[8]; - -THUMB_FUNC void MOD01_021D74E0(void) -{ - UNK_021D7500[1]++; -} - -THUMB_FUNC void (*UNK_021D74F0[4])(void) = { - MOD01_021D74E0 -}; diff --git a/arm9/modules/01/src/module_01.cpp b/arm9/modules/01/src/module_01.cpp new file mode 100644 index 00000000..21b371e0 --- /dev/null +++ b/arm9/modules/01/src/module_01.cpp @@ -0,0 +1,11 @@ +#include "global.h" +#include "FS_overlay.h" + +class Unk021D7500 { + u32 unk0; + u32 unk4; +public: + THUMB_FUNC Unk021D7500() { unk4++; } +}; + +static class Unk021D7500 UNK_021D7500; diff --git a/arm9/modules/02/asm/module_02_dummy.s b/arm9/modules/02/asm/module_02_dummy.s index e8a42167..8b137891 100644 --- a/arm9/modules/02/asm/module_02_dummy.s +++ b/arm9/modules/02/asm/module_02_dummy.s @@ -1,2 +1 @@ - .section .data - .space 32 + diff --git a/arm9/modules/03/asm/module_03_dummy.s b/arm9/modules/03/asm/module_03_dummy.s index e8a42167..8b137891 100644 --- a/arm9/modules/03/asm/module_03_dummy.s +++ b/arm9/modules/03/asm/module_03_dummy.s @@ -1,2 +1 @@ - .section .data - .space 32 + diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 8d1d699b..9928ef16 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -58938,9 +58938,12 @@ _0220BAB8: mov r0, r2 bx lr - .section .data + .section .rodata ; 0x0220BAC0 - .incbin "baserom.nds", 0x1411e0, 0x4100 + .incbin "baserom.nds", 0x1411e0, 0x3D4 + + .section .data + .incbin "baserom.nds", 0x1415C0, 0x3D20 .section .bss ; 0x0220FBC0 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 085ce35d..2588e8a9 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -63948,9 +63948,13 @@ _021F6424: .align 2, 0 _021F6428: .word MOD05_021F57F0 - .section .data + .section .rodata ; 0x021F642C - .incbin "baserom.nds", 0x16434c, 0x7254 + .incbin "baserom.nds", 0x16434c, 0x6d9c + + .section .data + ; 0x021FD1E0 + .incbin "baserom.nds", 0x16b100, 0x4A0 .section .bss ; 0x021FD680 diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index ac7d6b48..a12da563 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -44468,9 +44468,13 @@ _0224F144: _0224F16C: .word 0x02252210 _0224F170: .word MOD06_0224F0D8 - .section .data + .section .rodata ; 0x0224F174 - .incbin "baserom.nds", 0x1810D4, 0x32AC + .incbin "baserom.nds", 0x1810D4, 0x30B4 + + .section .data + ; 0x022252240 + .incbin "baserom.nds", 0x1841a0, 0x1e0 .section .bss ; 0x02252420 diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s index 39869410..0afcff05 100644 --- a/arm9/modules/07/asm/module_07.s +++ b/arm9/modules/07/asm/module_07.s @@ -5270,6 +5270,6 @@ _0221494A: pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 - .section .data + .section .rodata ; 0x02214950 - .incbin "baserom.nds", 0x186EF0, 0x7F0 + .incbin "baserom.nds", 0x186EF0, 0x7E4 diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s index 50ed884f..f1281f99 100644 --- a/arm9/modules/08/asm/module_08.s +++ b/arm9/modules/08/asm/module_08.s @@ -49976,6 +49976,9 @@ _0222A758: .align 2, 0
_0222A75C: .word 0x0000013B
- .section .data
+ .section .rodata
; 0x0222A760
- .incbin "baserom.nds", 0x1A0100, 0x2E60
+ .incbin "baserom.nds", 0x1A0100, 0x2E38
+
+ .section .data
+ .incbin "baserom.nds", 0x1A2F40, 0x20
diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s index 7e5ad9c1..efa63611 100644 --- a/arm9/modules/09/asm/module_09.s +++ b/arm9/modules/09/asm/module_09.s @@ -17658,6 +17658,6 @@ _0221AEBC: .word 0x021C48B8 _0221AEC0: .word 0x000005DC
_0221AEC4: .word 0x000005DD
- .section .data
+ .section .rodata
; 0x0221AEC8
- .incbin "baserom.nds", 0x1AC068, 0x1138
+ .incbin "baserom.nds", 0x1AC068, 0x1120
diff --git a/arm9/modules/10/asm/module_10_dummy.s b/arm9/modules/10/asm/module_10_dummy.s index bae0dc2d..8b137891 100644 --- a/arm9/modules/10/asm/module_10_dummy.s +++ b/arm9/modules/10/asm/module_10_dummy.s @@ -1,5 +1 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .data - .balign 4, 0 - .space 32 + diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s index 8288a770..21746e52 100644 --- a/arm9/modules/11/asm/module_11.s +++ b/arm9/modules/11/asm/module_11.s @@ -3379,7 +3379,7 @@ _0222F27C: _0222F280: .word 0x00002434
thumb_func_start MOD11_0222F284
-MOD11_0222F284: ; 0x0222F284
+MOD11_0222F284: ; 0x0222F284 __sinit
push {r3, lr}
bl FUN_02033590
cmp r0, #0
@@ -98632,6 +98632,20 @@ MOD11_0225D98C: ; 0x0225D98C strb r1, [r0, #0x1e]
bx lr
- .section .data
+ .section .rodata
; 0x0225D998
- .incbin "baserom.nds", 0x1dd7d8, 0x2608
+ .incbin "baserom.nds", 0x1dd7d8, 0x2580
+
+ ; Stupid hack to override alignment
+ ; .section .sinit
+ ; 0x0225FF18
+ .global SDK_OVERLAY.MODULE_11.SINIT_START
+ .global SDK_OVERLAY.MODULE_11.SINIT_END
+SDK_OVERLAY.MODULE_11.SINIT_START:
+ .word MOD11_0222F284
+ .word 0
+SDK_OVERLAY.MODULE_11.SINIT_END:
+
+ .section .data
+ ; 0x0225FF20
+ .incbin "baserom.nds", 0x1dfd60, 0x80
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s index 36381bcf..b2e41348 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -7445,7 +7445,7 @@ _022312B4: .word 0x00001158 _022312B8: .word 0x00000127 thumb_func_start MOD12_022312BC -MOD12_022312BC: ; 0x022312BC +MOD12_022312BC: ; 0x022312BC __sinit push {r3, lr} ldr r0, _022312D0 ; =SDK_OVERLAY_MODULE_08_ID mov r1, #2 @@ -48103,6 +48103,9 @@ _0224496A: _02244988: pop {r4, r5, r6, pc} - .section .data + .section .rodata ; 0x0224498C - .incbin "baserom.nds", 0x1F71CC, 0x1E94 + .incbin "baserom.nds", 0x1F71CC, 0x1E84 + + .section .sinit + .word MOD12_022312BC diff --git a/arm9/modules/13/asm/module_13_arm1.s b/arm9/modules/13/asm/module_13_arm1.s index edb71ead..ffde9a27 100644 --- a/arm9/modules/13/asm/module_13_arm1.s +++ b/arm9/modules/13/asm/module_13_arm1.s @@ -6049,3 +6049,15 @@ MOD13_022172A0: ; 0x022172A0 bx lr .align 2, 0 _022172D8: .word 0x02240B28 + + .section .rodata + ; 0x0223C420 + .incbin "baserom.nds", 0x2237C0, 0x24 + + .section .data + ; 0x0223F780 + .incbin "baserom.nds", 0x226B20, 0x38 + + .section .bss + ; 0x02240A40 + .space 0xF4 diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s index 7910e1a0..2e9dd8b5 100644 --- a/arm9/modules/13/asm/module_13_arm2.s +++ b/arm9/modules/13/asm/module_13_arm2.s @@ -35364,10 +35364,14 @@ _0223C330: _0223C418: .word 0x0224320C _0223C41C: .word 0x0223F764 + .section .rodata + ; 0x0223EC6C + .incbin "baserom.nds", 0x22600C, 0xafc + .section .data ; 0x0223C420 - .incbin "baserom.nds", 0x2237C0, 0x4620 + .incbin "baserom.nds", 0x226CD4, 0x110C .section .bss - ; 0x02240A40 - .space 0x27E0 + ; 0x02242FE4 + .space 0x23C diff --git a/arm9/modules/13/asm/module_13_thumb.s b/arm9/modules/13/asm/module_13_thumb.s index b180ff6b..c231800c 100644 --- a/arm9/modules/13/asm/module_13_thumb.s +++ b/arm9/modules/13/asm/module_13_thumb.s @@ -14777,3 +14777,15 @@ _0221E556: bx r3 .align 2, 0 _0221E55C: .word 0x02241B30 + + .section .rodata + ; 0x0223C444 + .incbin "baserom.nds", 0x2237e4, 0x2828 + + .section .data + ; 0x0223F7B8 + .incbin "baserom.nds", 0x226B58, 0x17C + + .section .bss + ; 0x02240B34 + .space 0x24B0 diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index 42e1c73b..1ace4733 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -30394,9 +30394,13 @@ MOD14_021E6220: ; 0x021E6220 ldr r0, [r0, #0x74] bx lr - .section .data + .section .rodata ; 0x021E6224 - .incbin "baserom.nds", 0x236b44, 0x7dc + .incbin "baserom.nds", 0x236b44, 0x7a4 + + .section .data + ; 0x021E69E0 + .incbin "baserom.nds", 0x237300, 0x1C .section .bss ; 0x021E69FC diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s index bd9eb99a..8659bfeb 100644 --- a/arm9/modules/15/asm/module_15.s +++ b/arm9/modules/15/asm/module_15.s @@ -8748,6 +8748,6 @@ _021DB85C: .align 2, 0
_021DB868: .word 0x021DBA55
- .section .data
+ .section .rodata
; 0x021DB86C
- .incbin "baserom.nds", 0x23B78C, 0x2F4
+ .incbin "baserom.nds", 0x23B78C, 0x2F0
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s index 7d62c0f0..551ab8e1 100644 --- a/arm9/modules/16/asm/module_16.s +++ b/arm9/modules/16/asm/module_16.s @@ -63320,6 +63320,6 @@ _021F4E2C: .word 0x000003D1 _021F4E30: .word 0x000003D6 thumb_func_end MOD16_021F4A40 - .section .data + .section .rodata ; 0x021F4E34 - .incbin "baserom.nds", 0x259554, 0xABAC + .incbin "baserom.nds", 0x259554, 0xAB90 diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s index 884302f2..b839403b 100644 --- a/arm9/modules/17/asm/module_17.s +++ b/arm9/modules/17/asm/module_17.s @@ -14601,6 +14601,6 @@ _021DE24C: .word 0x00000151 _021DE250: .word 0x00010200 thumb_func_end MOD17_021DE0F4 - .section .data + .section .rodata ; 0x021DE254 - .incbin "baserom.nds", 0x26AF74, 0x10C + .incbin "baserom.nds", 0x26AF74, 0x100 diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index 767c2f6c..e73fc56e 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -46251,9 +46251,13 @@ _0224FFDC: .word 0x02250834 _0224FFE0: .word 0x022507F0 thumb_func_end MOD18_0224FFA0 - .section .data + .section .rodata ; 0x0224FFE4 - .incbin "baserom.nds", 0x281B44, 0x139C + .incbin "baserom.nds", 0x281B44, 0x874 + + .section .data + ; 0x02250860 + .incbin "baserom.nds", 0x2823C0, 0xB20 .section .bss ; 0x02251380 diff --git a/arm9/modules/19/asm/module_19.s b/arm9/modules/19/asm/module_19.s index 76dad3e4..52c045cc 100644 --- a/arm9/modules/19/asm/module_19.s +++ b/arm9/modules/19/asm/module_19.s @@ -101,6 +101,6 @@ MOD19_02252504: ; 0x02252504 bx lr thumb_func_end MOD19_02252504 - .section .data + .section .rodata ; 0x02252508 - .incbin "baserom.nds", 0x2830C8, 0x38 + .incbin "baserom.nds", 0x2830C8, 0x1c diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s index afe8646c..1c3ba821 100644 --- a/arm9/modules/20/asm/module_20.s +++ b/arm9/modules/20/asm/module_20.s @@ -4565,6 +4565,6 @@ _022544BC: .word 0x022547C4 _022544C0: .word 0x022547C5 thumb_func_end MOD20_02254488 - .section .data + .section .rodata ; 0x022544C4 - .incbin "baserom.nds", 0x285284, 0x37C + .incbin "baserom.nds", 0x285284, 0x374 diff --git a/arm9/modules/21/asm/module_21.s b/arm9/modules/21/asm/module_21.s index cea8f6e8..0c30eb9a 100644 --- a/arm9/modules/21/asm/module_21.s +++ b/arm9/modules/21/asm/module_21.s @@ -721,6 +721,15 @@ _02254D78: .word 0x040002A0 _02254D7C: .word 0x040002A8 thumb_func_end MOD21_02254C5C - .section .data + .section .rodata ; 0x02254D80 - .incbin "baserom.nds", 0x285B40, 0x80 + .incbin "baserom.nds", 0x285B40, 0x68 + + ; Dumb hack because the compiler aligns to 16 instead of 8 + ;.section .sinit + .global SDK_OVERLAY.MODULE_21.SINIT_START + .global SDK_OVERLAY.MODULE_21.SINIT_END +SDK_OVERLAY.MODULE_21.SINIT_START: + .word MOD21_02254840 + .word 0 +SDK_OVERLAY.MODULE_21.SINIT_END: diff --git a/arm9/modules/22/asm/module_22.s b/arm9/modules/22/asm/module_22.s index 77e6bff4..610d0a55 100644 --- a/arm9/modules/22/asm/module_22.s +++ b/arm9/modules/22/asm/module_22.s @@ -1840,6 +1840,9 @@ _02255604: .align 2, 0 thumb_func_end MOD22_022555FC - .section .data + .section .rodata ; 0x02255618 - .incbin "baserom.nds", 0x2869D8, 0x128 + .incbin "baserom.nds", 0x2869D8, 0x118 + + .section .sinit + .word MOD22_02254840 diff --git a/arm9/modules/23/asm/module_23.s b/arm9/modules/23/asm/module_23.s index 6688578e..a5adabbb 100644 --- a/arm9/modules/23/asm/module_23.s +++ b/arm9/modules/23/asm/module_23.s @@ -2789,6 +2789,14 @@ _02255C96: _02255CB8: .word 0x022560D0 thumb_func_end MOD23_02255C6C - .section .data + .section .rodata ; 0x02255CBC - .incbin "baserom.nds", 0x28807C, 0x484 + .incbin "baserom.nds", 0x28807C, 0x46C + + ; .section .sinit + .global SDK_OVERLAY.MODULE_23.SINIT_START + .global SDK_OVERLAY.MODULE_23.SINIT_END +SDK_OVERLAY.MODULE_23.SINIT_START: + .word MOD23_02254840 + .word 0 +SDK_OVERLAY.MODULE_23.SINIT_END: diff --git a/arm9/modules/24/asm/module_24.s b/arm9/modules/24/asm/module_24.s index e3b9a327..ba2c3f32 100644 --- a/arm9/modules/24/asm/module_24.s +++ b/arm9/modules/24/asm/module_24.s @@ -1179,6 +1179,9 @@ _022550DC: .align 2, 0 thumb_func_end MOD24_022550D4 - .section .data + .section .rodata ; 0x022550F8 - .incbin "baserom.nds", 0x288EB8, 0xE8 + .incbin "baserom.nds", 0x288EB8, 0xC8 + + .section .sinit + .word MOD24_02254840 diff --git a/arm9/modules/25/asm/module_25.s b/arm9/modules/25/asm/module_25.s index 6df522da..e1d7b555 100644 --- a/arm9/modules/25/asm/module_25.s +++ b/arm9/modules/25/asm/module_25.s @@ -658,6 +658,9 @@ _02254CE6: pop {r4, r5, r6, pc} thumb_func_end MOD25_02254CD8 - .section .data + .section .rodata ; 0x02254CF8 - .incbin "baserom.nds", 0x2894B8, 0xA8 + .incbin "baserom.nds", 0x2894B8, 0x88 + + .section .sinit + .word MOD25_02254840 diff --git a/arm9/modules/26/asm/module_26.s b/arm9/modules/26/asm/module_26.s index 2511101e..0b8d99df 100644 --- a/arm9/modules/26/asm/module_26.s +++ b/arm9/modules/26/asm/module_26.s @@ -788,6 +788,9 @@ _02254DC2: _02254DE0: .word 0x02254FD0 thumb_func_end MOD26_02254DAC - .section .data + .section .rodata ; 0x02254DE4 - .incbin "baserom.nds", 0x289BA4, 0x25C + .incbin "baserom.nds", 0x289BA4, 0x23C + + .section .sinit + .word MOD26_02254840 diff --git a/arm9/modules/27/asm/module_27.s b/arm9/modules/27/asm/module_27.s index b9a2d1ca..13a97851 100644 --- a/arm9/modules/27/asm/module_27.s +++ b/arm9/modules/27/asm/module_27.s @@ -1448,6 +1448,14 @@ MOD27_022552D0: ; 0x022552D0 _02255338: .word 0x00000669 thumb_func_end MOD27_022552D0 - .section .data + .section .rodata ; 0x0225533C - .incbin "baserom.nds", 0x28A8FC, 0xA4 + .incbin "baserom.nds", 0x28A8FC, 0x88 + + ; .section .sinit + .global SDK_OVERLAY.MODULE_27.SINIT_START + .global SDK_OVERLAY.MODULE_27.SINIT_END +SDK_OVERLAY.MODULE_27.SINIT_START: + .word MOD27_02254840 + .word 0 +SDK_OVERLAY.MODULE_27.SINIT_END: diff --git a/arm9/modules/28/asm/module_28.s b/arm9/modules/28/asm/module_28.s index 0ad10077..e1a1d741 100644 --- a/arm9/modules/28/asm/module_28.s +++ b/arm9/modules/28/asm/module_28.s @@ -2963,5 +2963,19 @@ _02255E6E: nop _02255E74: .word 0x00000163 thumb_func_end MOD28_02255920 + + .section .rodata ; 0x02255E78 - .incbin "baserom.nds", 0x28C038, 0x148 + .incbin "baserom.nds", 0x28C038, 0xa0 + + ; .section .sinit + .global SDK_OVERLAY.MODULE_28.SINIT_START + .global SDK_OVERLAY.MODULE_28.SINIT_END +SDK_OVERLAY.MODULE_28.SINIT_START: + .word MOD28_02254840 + .word 0 +SDK_OVERLAY.MODULE_28.SINIT_END: + + .section .data + ; 0x02255F20 + .incbin "baserom.nds", 0x28C0E0, 0xa0 diff --git a/arm9/modules/29/asm/module_29.s b/arm9/modules/29/asm/module_29.s index 818f41aa..db3f5ab8 100644 --- a/arm9/modules/29/asm/module_29.s +++ b/arm9/modules/29/asm/module_29.s @@ -1121,6 +1121,14 @@ MOD29_0225508C: ; 0x0225508C .align 2, 0 thumb_func_end MOD29_0225508C - .section .data + .section .rodata ; 0x0225509C - .incbin "baserom.nds", 0x28CA5C, 0xA4 + .incbin "baserom.nds", 0x28CA5C, 0x90 + + ; .section .sinit + .global SDK_OVERLAY.MODULE_29.SINIT_START + .global SDK_OVERLAY.MODULE_29.SINIT_END +SDK_OVERLAY.MODULE_29.SINIT_START: + .word MOD29_02254840 + .word 0 +SDK_OVERLAY.MODULE_29.SINIT_END: diff --git a/arm9/modules/30/asm/module_30.s b/arm9/modules/30/asm/module_30.s index 36581e76..924f7ad0 100644 --- a/arm9/modules/30/asm/module_30.s +++ b/arm9/modules/30/asm/module_30.s @@ -731,4 +731,12 @@ _02254D9C: .word 0x040002A8 .section .data ; 0x02254DA0 - .incbin "baserom.nds", 0x28D160, 0xA0 + .incbin "baserom.nds", 0x28D160, 0x88 + + ; .section .sinit + .global SDK_OVERLAY.MODULE_30.SINIT_START + .global SDK_OVERLAY.MODULE_30.SINIT_END +SDK_OVERLAY.MODULE_30.SINIT_START: + .word MOD30_02254840 + .word 0 +SDK_OVERLAY.MODULE_30.SINIT_END: diff --git a/arm9/modules/31/asm/module_31.s b/arm9/modules/31/asm/module_31.s index cdf3282a..e9c70424 100644 --- a/arm9/modules/31/asm/module_31.s +++ b/arm9/modules/31/asm/module_31.s @@ -719,6 +719,9 @@ _02254D90: .word 0x040002A0 _02254D94: .word 0x040002A8 thumb_func_end MOD31_02254D1C - .section .data + .section .rodata ; 0x02254D98 - .incbin "baserom.nds", 0x28D758, 0xA8 + .incbin "baserom.nds", 0x28D758, 0x88 + + .section .sinit + .word MOD31_02254840 diff --git a/arm9/modules/32/asm/module_32.s b/arm9/modules/32/asm/module_32.s index 135a9b15..299432f1 100644 --- a/arm9/modules/32/asm/module_32.s +++ b/arm9/modules/32/asm/module_32.s @@ -571,6 +571,14 @@ _02254C48: _02254C50: .word 0x00000663 thumb_func_end MOD32_02254C08 - .section .data + .section .rodata ; 0x02254C54 - .incbin "baserom.nds", 0x28DC14, 0x8C + .incbin "baserom.nds", 0x28DC14, 0x70 + + ; .section .sinit + .global SDK_OVERLAY.MODULE_32.SINIT_START + .global SDK_OVERLAY.MODULE_32.SINIT_END +SDK_OVERLAY.MODULE_32.SINIT_START: + .word MOD32_02254840 + .word 0 +SDK_OVERLAY.MODULE_32.SINIT_END: diff --git a/arm9/modules/33/asm/module_33.s b/arm9/modules/33/asm/module_33.s new file mode 100644 index 00000000..67ec554d --- /dev/null +++ b/arm9/modules/33/asm/module_33.s @@ -0,0 +1,399 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD33_02254840 +MOD33_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD33_02254854 + ldr r1, _02254850 ; =MOD33_02254908 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD33_02254854 +_02254850: .word MOD33_02254908 + thumb_func_end MOD33_02254840 + + thumb_func_start MOD33_02254854 +MOD33_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 MOD33_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD33_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 MOD33_022548D4 + thumb_func_end MOD33_02254854 + + thumb_func_start MOD33_0225489C +MOD33_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #8 + add r1, r5, #4 + bl MOD33_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 MOD33_0225489C + + thumb_func_start MOD33_022548C0 +MOD33_022548C0: ; 0x022548C0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl MOD33_022549DC + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD33_022548C0 + + thumb_func_start MOD33_022548D4 +MOD33_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 MOD33_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 MOD33_022548D4 + + thumb_func_start MOD33_02254908 +MOD33_02254908: ; 0x02254908 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD33_02254908 + + thumb_func_start MOD33_02254910 +MOD33_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 MOD33_02254910 + + thumb_func_start MOD33_02254924 +MOD33_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 MOD33_022549E8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _0225495E +_02254944: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD33_02254A0C + cmp r0, #0 + beq _0225495E + ldr r0, [r4, #0xc] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD33_02254910 +_0225495E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD33_02254924 + + thumb_func_start MOD33_02254964 +MOD33_02254964: ; 0x02254964 + push {r3, lr} + ldrb r1, [r0, #2] + cmp r1, #0 + beq _02254972 + mov r1, #2 + bl MOD33_02254910 +_02254972: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD33_02254964 + + thumb_func_start MOD33_02254978 +MOD33_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 MOD33_022549E8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549A6 +_02254998: + ldr r0, [r4, #8] + bl MOD33_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 MOD33_02254978 + + thumb_func_start MOD33_022549AC +MOD33_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 MOD33_022549AC + + thumb_func_start MOD33_022549DC +MOD33_022549DC: ; 0x022549DC + push {r3, lr} + cmp r0, #0 + beq _022549E6 + bl FUN_02016A18 +_022549E6: + pop {r3, pc} + thumb_func_end MOD33_022549DC + + thumb_func_start MOD33_022549E8 +MOD33_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 MOD33_022549E8 + + thumb_func_start MOD33_02254A0C +MOD33_02254A0C: ; 0x02254A0C + ldr r3, _02254A14 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254A14: .word MOD20_02253794 + thumb_func_end MOD33_02254A0C + + thumb_func_start MOD33_02254A18 +MOD33_02254A18: ; 0x02254A18 + ldr r3, _02254A20 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254A20: .word MOD20_022537B8 + thumb_func_end MOD33_02254A18 + + thumb_func_start MOD33_02254A24 +MOD33_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 MOD33_02254A24 + + thumb_func_start MOD33_02254A38 +MOD33_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, #0xc + 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 MOD33_02254A24 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02254ACC: .word 0x02254B00 +_02254AD0: .word 0x04001000 +_02254AD4: .word 0xFFFFE0FF + thumb_func_end MOD33_02254A38 + + thumb_func_start MOD33_02254AD8 +MOD33_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 MOD33_02254A24 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD33_02254AD8 + + .section .rodata + ; 0x02254AF4 + .incbin "baserom.nds", 0x28E0B4, 0x4C + + .section .sinit + .word MOD33_02254840 diff --git a/arm9/modules/34/asm/module_34.s b/arm9/modules/34/asm/module_34.s new file mode 100644 index 00000000..a12d1a4a --- /dev/null +++ b/arm9/modules/34/asm/module_34.s @@ -0,0 +1,601 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD34_02254840 +MOD34_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD34_02254854 + ldr r1, _02254850 ; =MOD34_02254948 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD34_02254854 +_02254850: .word MOD34_02254948 + thumb_func_end MOD34_02254840 + + thumb_func_start MOD34_02254854 +MOD34_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x38 + 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 MOD34_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD34_0225490C + 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 MOD34_0225490C + thumb_func_end MOD34_02254854 + + thumb_func_start MOD34_0225489C +MOD34_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x24 + add r1, r5, #4 + bl MOD34_02254A5C + cmp r0, #0 + beq _022548DC + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + str r4, [r5, #0x28] + mov r0, #8 + str r0, [sp] + ldr r0, _022548E0 ; =0x02254C7C + ldr r2, _022548E4 ; =MOD34_02254904 + mov r1, #6 + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x2c] + mov r1, #0 + str r1, [r5, #0x30] + mov r0, #1 +_022548D0: + add r1, r1, #1 + str r0, [r5, #8] + add r5, r5, #4 + cmp r1, #6 + blt _022548D0 + pop {r3, r4, r5, pc} +_022548DC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022548E0: .word 0x02254C7C +_022548E4: .word MOD34_02254904 + thumb_func_end MOD34_0225489C + + thumb_func_start MOD34_022548E8 +MOD34_022548E8: ; 0x022548E8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _022548F6 + bl MOD20_02254198 +_022548F6: + ldr r0, [r4, #0x24] + bl MOD34_02254A8C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD34_022548E8 + + thumb_func_start MOD34_02254904 +MOD34_02254904: ; 0x02254904 + str r1, [r3, #0x30] + str r0, [r3, #0x34] + bx lr + .align 2, 0 + thumb_func_end MOD34_02254904 + + thumb_func_start MOD34_0225490C +MOD34_0225490C: ; 0x0225490C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254942 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254944 ; =0x02254C70 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254942 + add r0, r4, #0 + bl MOD34_022548E8 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x28] + bl MOD20_022529A0 +_02254942: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254944: .word 0x02254C70 + thumb_func_end MOD34_0225490C + + thumb_func_start MOD34_02254948 +MOD34_02254948: ; 0x02254948 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD34_02254948 + + thumb_func_start MOD34_02254950 +MOD34_02254950: ; 0x02254950 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254958 + b _0225495A +_02254958: + mov r1, #2 +_0225495A: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD34_02254950 + + thumb_func_start MOD34_02254964 +MOD34_02254964: ; 0x02254964 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254974 + cmp r0, #1 + beq _02254984 + b _0225499E +_02254974: + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD34_02254A98 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _0225499E +_02254984: + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD34_02254ABC + cmp r0, #0 + beq _0225499E + ldr r0, [r4, #0x28] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD34_02254950 +_0225499E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD34_02254964 + + thumb_func_start MOD34_022549A4 +MOD34_022549A4: ; 0x022549A4 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _022549B8 + mov r1, #2 + bl MOD34_02254950 + mov r0, #0 + pop {r4, pc} +_022549B8: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549C4 + cmp r0, #1 + beq _022549F6 + b _02254A1A +_022549C4: + ldr r0, [r4, #0x30] + cmp r0, #1 + bne _02254A1A + ldr r1, [r4, #0x34] + lsl r0, r1, #2 + add r0, r4, r0 + ldr r0, [r0, #8] + cmp r0, #0 + beq _022549EE + strh r1, [r4, #0x20] + ldr r0, [r4, #0x24] + mov r1, #2 + bl MOD34_02254A98 + ldr r0, _02254A20 ; =0x00000663 + bl MOD20_02252B28 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A1A +_022549EE: + ldr r0, _02254A24 ; =0x0000066E + bl MOD20_02252B28 + b _02254A1A +_022549F6: + ldr r0, [r4, #0x30] + cmp r0, #2 + bne _02254A0A + ldr r0, [r4, #0x24] + mov r1, #3 + bl MOD34_02254A98 + mov r0, #0 + strb r0, [r4, #1] + b _02254A1A +_02254A0A: + cmp r0, #3 + bne _02254A1A + ldr r0, [r4, #0x24] + mov r1, #3 + bl MOD34_02254A98 + mov r0, #0 + strb r0, [r4, #1] +_02254A1A: + mov r0, #0 + pop {r4, pc} + nop +_02254A20: .word 0x00000663 +_02254A24: .word 0x0000066E + thumb_func_end MOD34_022549A4 + + thumb_func_start MOD34_02254A28 +MOD34_02254A28: ; 0x02254A28 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A38 + cmp r0, #1 + beq _02254A48 + b _02254A56 +_02254A38: + ldr r0, [r4, #0x24] + mov r1, #1 + bl MOD34_02254A98 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A56 +_02254A48: + ldr r0, [r4, #0x24] + bl MOD34_02254AC8 + cmp r0, #0 + beq _02254A56 + mov r0, #1 + pop {r4, pc} +_02254A56: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD34_02254A28 + + thumb_func_start MOD34_02254A5C +MOD34_02254A5C: ; 0x02254A5C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x20 + bl FUN_02016998 + add r4, r0, #0 + beq _02254A88 + add r0, #8 + mov r1, #4 + bl MOD20_022536F4 + str r6, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + cmp r0, #0 + beq _02254A88 + str r4, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254A88: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD34_02254A5C + + thumb_func_start MOD34_02254A8C +MOD34_02254A8C: ; 0x02254A8C + push {r3, lr} + cmp r0, #0 + beq _02254A96 + bl FUN_02016A18 +_02254A96: + pop {r3, pc} + thumb_func_end MOD34_02254A8C + + thumb_func_start MOD34_02254A98 +MOD34_02254A98: ; 0x02254A98 + 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, _02254AB8 ; =0x02254CBC + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254AB8: .word 0x02254CBC + thumb_func_end MOD34_02254A98 + + thumb_func_start MOD34_02254ABC +MOD34_02254ABC: ; 0x02254ABC + ldr r3, _02254AC4 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254AC4: .word MOD20_02253794 + thumb_func_end MOD34_02254ABC + + thumb_func_start MOD34_02254AC8 +MOD34_02254AC8: ; 0x02254AC8 + ldr r3, _02254AD0 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254AD0: .word MOD20_022537B8 + thumb_func_end MOD34_02254AC8 + + thumb_func_start MOD34_02254AD4 +MOD34_02254AD4: ; 0x02254AD4 + 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 MOD34_02254AD4 + + thumb_func_start MOD34_02254AE8 +MOD34_02254AE8: ; 0x02254AE8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r1, [sp, #0x10] + add r0, r1, #0 + bl MOD20_022538A0 + add r6, r0, #0 + ldr r0, [sp, #0x10] + bl MOD20_022538A4 + add r5, r0, #0 + ldr r0, [r6, #4] + ldr r2, _02254B8C ; =0x02254CA0 + 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, [r6, #4] + mov r0, #0xc + mov r1, #0x3b + 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, [r6, #4] + mov r0, #0xc + mov r1, #0x3a + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + mov r4, #0 + add r7, r4, #0 +_02254B4A: + ldr r2, [r5, #4] + add r0, r6, #0 + add r1, r4, #0 + add r3, r7, #0 + bl MOD34_02254C1C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02254B4A + ldr r0, [r6, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r0, _02254B90 ; =0x04001000 + ldr r1, _02254B94 ; =0xFFFFE0FF + ldr r2, [r0] + ldr r4, [r0] + add r3, r2, #0 + and r3, r1 + lsl r1, r4, #0x13 + lsr r2, r1, #0x1b + mov r1, #4 + orr r1, r2 + lsl r1, r1, #8 + orr r1, r3 + str r1, [r0] + ldr r0, [sp, #0x10] + str r4, [sp, #0x14] + bl MOD34_02254AD4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254B8C: .word 0x02254CA0 +_02254B90: .word 0x04001000 +_02254B94: .word 0xFFFFE0FF + thumb_func_end MOD34_02254AE8 + + thumb_func_start MOD34_02254B98 +MOD34_02254B98: ; 0x02254B98 + 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 MOD34_02254AD4 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD34_02254B98 + + thumb_func_start MOD34_02254BB4 +MOD34_02254BB4: ; 0x02254BB4 + 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 r3, r0, #0 + ldrh r1, [r3, #0x1c] + add r0, r4, #0 + lsl r2, r1, #2 + add r2, r3, r2 + ldr r2, [r2, #4] + mov r3, #1 + bl MOD34_02254C1C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD34_02254AD4 + pop {r3, r4, r5, pc} + thumb_func_end MOD34_02254BB4 + + thumb_func_start MOD34_02254BE8 +MOD34_02254BE8: ; 0x02254BE8 + 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 r3, r0, #0 + ldrh r1, [r3, #0x1c] + add r0, r4, #0 + lsl r2, r1, #2 + add r2, r3, r2 + ldr r2, [r2, #4] + mov r3, #0 + bl MOD34_02254C1C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD34_02254AD4 + pop {r3, r4, r5, pc} + thumb_func_end MOD34_02254BE8 + + thumb_func_start MOD34_02254C1C +MOD34_02254C1C: ; 0x02254C1C + push {r4, r5, r6, lr} + ldr r0, [r0, #4] + add r5, r1, #0 + mov r1, #6 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_0201886C + ldr r1, _02254C6C ; =0x02254C94 + lsl r2, r5, #1 + ldrh r1, [r1, r2] + lsl r1, r1, #1 + add r2, r0, r1 + cmp r4, #0 + beq _02254C44 + add r1, r5, #1 + mov r0, #0x48 + add r5, r1, #0 + mul r5, r0 + b _02254C46 +_02254C44: + mov r5, #0 +_02254C46: + cmp r6, #0 + beq _02254C4C + add r5, #0x24 +_02254C4C: + mov r3, #0 + add r0, r3, #0 +_02254C50: + add r1, r0, #0 + add r4, r2, #0 +_02254C54: + add r1, r1, #1 + strh r5, [r4] + add r5, r5, #1 + add r4, r4, #2 + cmp r1, #6 + blt _02254C54 + add r3, r3, #1 + add r2, #0x40 + cmp r3, #6 + blt _02254C50 + pop {r4, r5, r6, pc} + nop +_02254C6C: .word 0x02254C94 + thumb_func_end MOD34_02254C1C + + .section .rodata + ; 0x02254C70 + .incbin "baserom.nds", 0x28e630, 0x88 + + ; .section .sinit + .global SDK_OVERLAY.MODULE_34.SINIT_START + .global SDK_OVERLAY.MODULE_34.SINIT_END +SDK_OVERLAY.MODULE_34.SINIT_START: + .word MOD34_02254840 + .word 0 +SDK_OVERLAY.MODULE_34.SINIT_END: diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s new file mode 100644 index 00000000..fe5b7b14 --- /dev/null +++ b/arm9/modules/35/asm/module_35.s @@ -0,0 +1,1142 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD35_02254840 +MOD35_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD35_02254854 + ldr r1, _02254850 ; =MOD35_02254924 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD35_02254854 +_02254850: .word MOD35_02254924 + thumb_func_end MOD35_02254840 + + thumb_func_start MOD35_02254854 +MOD35_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x34 + 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 MOD35_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD35_022548F0 + 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 MOD35_022548F0 + thumb_func_end MOD35_02254854 + + thumb_func_start MOD35_0225489C +MOD35_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_02252C40 + bl FUN_02023D58 + str r0, [r5, #0x30] + ldr r1, [r5, #0x30] + add r0, r5, #4 + bl MOD35_02254A50 + add r0, r5, #0 + add r0, #0x28 + add r1, r5, #4 + add r2, r6, #0 + bl MOD35_02254ADC + cmp r0, #0 + beq _022548D6 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + str r4, [r5, #0x2c] + mov r0, #1 + pop {r4, r5, r6, pc} +_022548D6: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD35_0225489C + + thumb_func_start MOD35_022548DC +MOD35_022548DC: ; 0x022548DC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl MOD35_02254B38 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD35_022548DC + + thumb_func_start MOD35_022548F0 +MOD35_022548F0: ; 0x022548F0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhs _0225491C + lsl r2, r1, #2 + ldr r1, _02254920 ; =0x022550B8 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _0225491C + add r0, r4, #0 + bl MOD35_022548DC + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x2c] + bl MOD20_022529A0 +_0225491C: + pop {r3, r4, r5, pc} + nop +_02254920: .word 0x022550B8 + thumb_func_end MOD35_022548F0 + + thumb_func_start MOD35_02254924 +MOD35_02254924: ; 0x02254924 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD35_02254924 + + thumb_func_start MOD35_0225492C +MOD35_0225492C: ; 0x0225492C + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254934 + b _02254936 +_02254934: + mov r1, #2 +_02254936: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD35_0225492C + + thumb_func_start MOD35_02254940 +MOD35_02254940: ; 0x02254940 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254950 + cmp r0, #1 + beq _02254960 + b _0225497A +_02254950: + ldr r0, [r4, #0x28] + mov r1, #0 + bl MOD35_02254C48 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _0225497A +_02254960: + ldr r0, [r4, #0x28] + mov r1, #0 + bl MOD35_02254C6C + cmp r0, #0 + beq _0225497A + ldr r0, [r4, #0x2c] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD35_0225492C +_0225497A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD35_02254940 + + thumb_func_start MOD35_02254980 +MOD35_02254980: ; 0x02254980 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254994 + mov r1, #2 + bl MOD35_0225492C + mov r0, #0 + pop {r4, pc} +_02254994: + ldrb r1, [r4, #1] + cmp r1, #0 + beq _022549A0 + cmp r1, #1 + beq _022549C0 + b _022549D0 +_022549A0: + bl MOD35_02254A08 + cmp r0, #0 + beq _022549D0 + ldr r1, [r4, #0x30] + add r0, r4, #4 + bl MOD35_02254A50 + ldr r0, [r4, #0x28] + mov r1, #2 + bl MOD35_02254C48 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549D0 +_022549C0: + ldr r0, [r4, #0x28] + mov r1, #2 + bl MOD35_02254C6C + cmp r0, #0 + beq _022549D0 + mov r0, #0 + strb r0, [r4, #1] +_022549D0: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD35_02254980 + + thumb_func_start MOD35_022549D4 +MOD35_022549D4: ; 0x022549D4 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549E4 + cmp r0, #1 + beq _022549F4 + b _02254A02 +_022549E4: + ldr r0, [r4, #0x28] + mov r1, #1 + bl MOD35_02254C48 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A02 +_022549F4: + ldr r0, [r4, #0x28] + bl MOD35_02254C78 + cmp r0, #0 + beq _02254A02 + mov r0, #1 + pop {r4, pc} +_02254A02: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD35_022549D4 + + thumb_func_start MOD35_02254A08 +MOD35_02254A08: ; 0x02254A08 + push {r3, lr} + sub sp, #8 + ldr r0, [r0, #0x2c] + bl MOD20_02252C08 + cmp r0, #0 + bne _02254A48 + add r0, sp, #4 + add r1, sp, #0 + bl FUN_02020ACC + cmp r0, #0 + beq _02254A48 + ldr r0, [sp, #4] + sub r0, #0x10 + cmp r0, #0xbf + bhs _02254A2E + mov r1, #1 + b _02254A30 +_02254A2E: + mov r1, #0 +_02254A30: + ldr r0, [sp] + sub r0, #0x10 + cmp r0, #0x9f + bhs _02254A3C + mov r0, #1 + b _02254A3E +_02254A3C: + mov r0, #0 +_02254A3E: + tst r0, r1 + beq _02254A48 + add sp, #8 + mov r0, #1 + pop {r3, pc} +_02254A48: + mov r0, #0 + add sp, #8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD35_02254A08 + + thumb_func_start MOD35_02254A50 +MOD35_02254A50: ; 0x02254A50 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + add r0, r1, #0 + str r1, [sp, #4] + bl MOD05_021EC464 + ldr r1, [sp] + strb r0, [r1] + ldr r0, [sp, #4] + bl FUN_02023C90 + ldr r1, [sp] + mov r7, #0 + strb r0, [r1, #1] + add r0, r1, #0 + ldrb r0, [r0] + cmp r0, #0 + ble _02254AD6 + add r5, r1, #0 + add r6, r1, #0 +_02254A7A: + ldr r0, [sp, #4] + add r1, r7, #0 + bl FUN_02023C74 + str r0, [sp, #8] + bl FUN_02023C7C + add r4, r0, #0 + bl FUN_02066A6C + str r0, [sp, #0xc] + add r0, r4, #0 + bl FUN_0206B688 + str r0, [r5, #4] + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + strh r0, [r6, #0x1c] + add r0, r4, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020672BC + strh r0, [r6, #0x20] + ldr r0, [sp, #8] + bl MOD05_021EC7B4 + str r0, [r5, #0xc] + add r0, r4, #0 + bl FUN_020689E8 + str r0, [r5, #0x14] + ldr r1, [sp, #0xc] + add r0, r4, #0 + bl FUN_02066A94 + ldr r0, [sp] + add r7, r7, #1 + ldrb r0, [r0] + add r5, r5, #4 + add r6, r6, #2 + cmp r7, r0 + blt _02254A7A +_02254AD6: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD35_02254A50 + + thumb_func_start MOD35_02254ADC +MOD35_02254ADC: ; 0x02254ADC + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0x90 + bl FUN_02016998 + add r4, r0, #0 + beq _02254B2E + 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 + mov r2, #0 + add r0, #0x88 + str r2, [r0] + ldr r0, _02254B34 ; =MOD35_02254E60 + add r1, r4, #0 + bl FUN_0200CA98 + add r1, r4, #0 + add r1, #0x8c + str r0, [r1] + add r0, r4, #0 + add r1, r5, #0 + bl MOD35_02254B54 + ldr r0, [r4, #4] + cmp r0, #0 + beq _02254B2E + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254B2E: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02254B34: .word MOD35_02254E60 + thumb_func_end MOD35_02254ADC + + thumb_func_start MOD35_02254B38 +MOD35_02254B38: ; 0x02254B38 + push {r4, lr} + add r4, r0, #0 + beq _02254B52 + bl MOD35_02254C18 + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 +_02254B52: + pop {r4, pc} + thumb_func_end MOD35_02254B38 + + thumb_func_start MOD35_02254B54 +MOD35_02254B54: ; 0x02254B54 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r7, r0, #0 + mov r0, #1 + str r1, [sp, #0xc] + bl MOD20_022539C4 + 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, #0x54 + bl FUN_02006A34 + mov r1, #0x14 + bl _u32_div_f + ldr r1, [sp, #0xc] + str r0, [sp, #0x14] + str r0, [r7, #0x78] + bl MOD35_02254E88 + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x50 + mov r1, #0xc + mov r2, #0x52 + mov r3, #0x53 + bl MOD20_02253FBC + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x64 + mov r1, #0xc + mov r2, #5 + mov r3, #6 + bl MOD20_02253FBC + add r0, r7, #0 + str r0, [sp, #0x1c] + add r0, #0x50 + str r0, [sp, #0x1c] + add r0, r7, #0 + mov r4, #0 + str r0, [sp, #0x18] + add r0, #0x64 + ldr r6, _02254C14 ; =0x02255110 + add r5, r7, #0 + str r4, [sp, #0x10] + str r0, [sp, #0x18] +_02254BC2: + cmp r4, #0 + blt _02254BE2 + cmp r4, #2 + bgt _02254BE2 + ldr r0, [r7, #0x20] + ldr r2, [sp, #0x18] + add r1, r6, #0 + bl MOD20_02253E74 + ldr r2, [sp, #0x14] + ldr r1, [sp, #0x10] + str r0, [r5, #0x24] + add r1, r2, r1 + bl MOD20_02253FA4 + b _02254BEE +_02254BE2: + ldr r0, [r7, #0x20] + ldr r2, [sp, #0x1c] + add r1, r6, #0 + bl MOD20_02253E74 + str r0, [r5, #0x24] +_02254BEE: + ldr r0, [r5, #0x24] + mov r1, #1 + bl MOD20_02253FAC + ldr r0, [sp, #0x10] + add r4, r4, #1 + add r0, #0x20 + add r6, #0x10 + add r5, r5, #4 + str r0, [sp, #0x10] + cmp r4, #0xb + blt _02254BC2 + ldr r1, [sp, #0xc] + add r0, r7, #0 + bl MOD35_02254EC8 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254C14: .word 0x02255110 + thumb_func_end MOD35_02254B54 + + thumb_func_start MOD35_02254C18 +MOD35_02254C18: ; 0x02254C18 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02254C20: + ldr r1, [r5, #0x24] + cmp r1, #0 + beq _02254C2C + ldr r0, [r6, #0x20] + bl MOD20_02253F14 +_02254C2C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xb + blt _02254C20 + add r0, r6, #0 + add r0, #0x64 + bl MOD20_02254014 + add r6, #0x50 + add r0, r6, #0 + bl MOD20_02254014 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD35_02254C18 + + thumb_func_start MOD35_02254C48 +MOD35_02254C48: ; 0x02254C48 + 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, _02254C68 ; =0x022550E0 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254C68: .word 0x022550E0 + thumb_func_end MOD35_02254C48 + + thumb_func_start MOD35_02254C6C +MOD35_02254C6C: ; 0x02254C6C + ldr r3, _02254C74 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254C74: .word MOD20_02253794 + thumb_func_end MOD35_02254C6C + + thumb_func_start MOD35_02254C78 +MOD35_02254C78: ; 0x02254C78 + ldr r3, _02254C80 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254C80: .word MOD20_022537B8 + thumb_func_end MOD35_02254C78 + + thumb_func_start MOD35_02254C84 +MOD35_02254C84: ; 0x02254C84 + 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 MOD35_02254C84 + + thumb_func_start MOD35_02254C98 +MOD35_02254C98: ; 0x02254C98 + 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, _02254D24 ; =0x022550C4 + 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, #0x51 + 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, #0x50 + 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, _02254D28 ; =0x0400104C + mov r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + sub r1, #0x4c + ldr r3, [r1] + ldr r2, [r1] + ldr r0, _02254D2C ; =0xFFFFE0FF + 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 MOD35_02254C84 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02254D24: .word 0x022550C4 +_02254D28: .word 0x0400104C +_02254D2C: .word 0xFFFFE0FF + thumb_func_end MOD35_02254C98 + + thumb_func_start MOD35_02254D30 +MOD35_02254D30: ; 0x02254D30 + 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 _02254D4C + cmp r0, #1 + beq _02254D5A + pop {r3, r4, r5, pc} +_02254D4C: + mov r0, #1 + add r4, #0x84 + str r0, [r4] + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_02254D5A: + add r0, r4, #0 + mov r1, #2 + bl MOD35_02254C6C + cmp r0, #0 + beq _02254D7C + ldr r0, _02254D80 ; =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 MOD35_02254C84 +_02254D7C: + pop {r3, r4, r5, pc} + nop +_02254D80: .word 0x0400104C + thumb_func_end MOD35_02254D30 + + thumb_func_start MOD35_02254D84 +MOD35_02254D84: ; 0x02254D84 + 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, #3 + bhi _02254E50 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02254DAE: ; jump table + .short _02254DB6 - _02254DAE - 2 ; case 0 + .short _02254DDC - _02254DAE - 2 ; case 1 + .short _02254DF4 - _02254DAE - 2 ; case 2 + .short _02254E4A - _02254DAE - 2 ; case 3 +_02254DB6: + add r0, r4, #0 + mov r1, #0 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + mov r0, #0xa + str r0, [r4, #0x7c] + add r0, r4, #0 + bl MOD35_02254E58 + ldr r0, _02254E54 ; =0x00000678 + bl MOD20_02252B28 + add r0, r5, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} +_02254DDC: + ldr r0, [r4, #0x78] + add r1, r6, #0 + bl MOD35_02254E88 + add r0, r4, #0 + add r1, r6, #0 + bl MOD35_02254EC8 + add r0, r5, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} +_02254DF4: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _02254E10 + mov r0, #0 + str r0, [r4, #0x7c] + add r0, r4, #0 + bl MOD35_02254E58 + add r0, r5, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} +_02254E10: + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #4 + blo _02254E50 + add r0, r4, #0 + mov r1, #0 + add r0, #0x80 + str r1, [r0] + ldr r0, [r4, #0x7c] + sub r0, r0, #1 + str r0, [r4, #0x7c] + add r0, r4, #0 + bl MOD35_02254E58 + ldr r0, [r4, #0x7c] + cmp r0, #0 + bne _02254E50 + add r0, r5, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} +_02254E4A: + add r0, r5, #0 + bl MOD35_02254C84 +_02254E50: + pop {r4, r5, r6, pc} + nop +_02254E54: .word 0x00000678 + thumb_func_end MOD35_02254D84 + + thumb_func_start MOD35_02254E58 +MOD35_02254E58: ; 0x02254E58 + mov r1, #1 + add r0, #0x88 + str r1, [r0] + bx lr + thumb_func_end MOD35_02254E58 + + thumb_func_start MOD35_02254E60 +MOD35_02254E60: ; 0x02254E60 + add r0, r1, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #0 + beq _02254E82 + ldr r2, [r1, #0x7c] + ldr r3, _02254E84 ; =0x0400104C + lsl r0, r2, #4 + orr r0, r2 + strb r0, [r3] + ldr r2, [r1, #0x7c] + add r1, #0x88 + lsl r0, r2, #4 + orr r0, r2 + strb r0, [r3, #1] + mov r0, #0 + str r0, [r1] +_02254E82: + bx lr + .align 2, 0 +_02254E84: .word 0x0400104C + thumb_func_end MOD35_02254E60 + + thumb_func_start MOD35_02254E88 +MOD35_02254E88: ; 0x02254E88 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #1 + add r4, r1, #0 + add r1, r0, #0 + mov r2, #0 + bl FUN_0206B6D4 + ldrb r1, [r4] + cmp r1, #0 + beq _02254EA4 + ldr r1, [r4, #4] + b _02254EA6 +_02254EA4: + add r1, r0, #0 +_02254EA6: + str r1, [sp] + ldrb r1, [r4] + cmp r1, #1 + bls _02254EB2 + ldr r1, [r4, #8] + b _02254EB4 +_02254EB2: + add r1, r0, #0 +_02254EB4: + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r1, sp, #0 + mov r2, #3 + mov r3, #1 + bl MOD20_02253A04 + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end MOD35_02254E88 + + thumb_func_start MOD35_02254EC8 +MOD35_02254EC8: ; 0x02254EC8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0 + add r6, r1, #0 + str r0, [sp] + ldrb r0, [r6] + cmp r0, #0 + ble _02254F00 + add r4, r6, #0 + add r5, r7, #0 +_02254EDC: + ldrh r0, [r4, #0x1c] + ldrh r1, [r4, #0x20] + mov r2, #0 + bl FUN_0206B7BC + add r1, r0, #0 + ldr r0, [r5, #0x24] + add r1, r1, #1 + bl MOD20_02253F9C + ldr r0, [sp] + ldrb r1, [r6] + add r0, r0, #1 + add r4, r4, #2 + add r5, r5, #4 + str r0, [sp] + cmp r0, r1 + blt _02254EDC +_02254F00: + mov r0, #1 + mov r1, #0 + add r2, r0, #0 + bl FUN_0206B7BC + add r1, r0, #0 + ldr r0, [r7, #0x2c] + add r1, r1, #1 + bl MOD20_02253F9C + ldrb r0, [r6] + cmp r0, #0 + beq _02254F36 + ldrh r0, [r6, #0x1c] + mov r1, #0x1c + bl FUN_02068678 + cmp r0, #0 + ldr r0, [r7, #0x24] + beq _02254F30 + mov r1, #6 + bl MOD20_02253F28 + b _02254F36 +_02254F30: + mov r1, #7 + bl MOD20_02253F28 +_02254F36: + add r0, r7, #0 + ldr r1, [r6, #0xc] + add r0, #0x30 + bl MOD35_02254FD8 + add r0, r7, #0 + ldr r1, [r6, #0x10] + add r0, #0x3c + bl MOD35_02254FD8 + ldr r0, [r7, #0x48] + ldr r1, [r6, #0x14] + bl MOD35_02255094 + ldr r0, [r7, #0x4c] + ldr r1, [r6, #0x18] + bl MOD35_02255094 + ldrb r0, [r6] + cmp r0, #0 + bne _02254F64 + mov r4, #1 + b _02254F66 +_02254F64: + mov r4, #0 +_02254F66: + ldr r0, [r7, #0x24] + add r1, r4, #0 + bl MOD20_02253F78 + ldr r0, [r7, #0x30] + add r1, r4, #0 + bl MOD20_02253F78 + ldr r0, [r7, #0x34] + add r1, r4, #0 + bl MOD20_02253F78 + ldr r0, [r7, #0x38] + add r1, r4, #0 + bl MOD20_02253F78 + ldr r0, [r7, #0x48] + add r1, r4, #0 + bl MOD20_02253F78 + ldrb r0, [r6] + cmp r0, #1 + bhi _02254F98 + mov r4, #1 + b _02254F9A +_02254F98: + mov r4, #0 +_02254F9A: + ldr r0, [r7, #0x28] + add r1, r4, #0 + bl MOD20_02253F78 + ldr r0, [r7, #0x3c] + add r1, r4, #0 + bl MOD20_02253F78 + ldr r0, [r7, #0x40] + add r1, r4, #0 + bl MOD20_02253F78 + ldr r0, [r7, #0x44] + add r1, r4, #0 + bl MOD20_02253F78 + ldr r0, [r7, #0x4c] + add r1, r4, #0 + bl MOD20_02253F78 + ldrb r0, [r6, #1] + cmp r0, #0 + bne _02254FCC + mov r1, #1 + b _02254FCE +_02254FCC: + mov r1, #0 +_02254FCE: + ldr r0, [r7, #0x2c] + bl MOD20_02253F78 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD35_02254EC8 + + thumb_func_start MOD35_02254FD8 +MOD35_02254FD8: ; 0x02254FD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r1, #0 + str r0, [sp] + cmp r7, #0x64 + bls _02254FE6 + mov r7, #0x64 +_02254FE6: + ldr r2, _02255088 ; =0x04000280 + mov r3, #0 + strh r3, [r2] + add r0, r2, #0 + str r7, [r2, #0x10] + mov r1, #0x64 + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02254FFA: + ldrh r1, [r2] + tst r1, r0 + bne _02254FFA + ldr r0, _0225508C ; =0x040002A0 + ldr r4, _02255088 ; =0x04000280 + ldr r0, [r0] + str r0, [sp, #4] + lsr r0, r4, #0xb +_0225500A: + ldrh r1, [r4] + tst r1, r0 + bne _0225500A + ldr r3, _02255090 ; =0x040002A8 + mov r1, #0 + ldr r2, [r3] + add r0, r3, #0 + strh r1, [r4] + sub r0, #0x18 + str r2, [r0] + mov r0, #0xa + sub r3, #0x10 + str r0, [r3] + ldr r2, _02255088 ; =0x04000280 + str r1, [r3, #4] + lsr r0, r2, #0xb +_0225502A: + ldrh r1, [r2] + tst r1, r0 + bne _0225502A + ldr r0, _0225508C ; =0x040002A0 + ldr r2, _02255088 ; =0x04000280 + ldr r0, [r0] + str r0, [sp, #8] + lsr r0, r2, #0xb +_0225503A: + ldrh r1, [r2] + tst r1, r0 + bne _0225503A + ldr r0, _02255090 ; =0x040002A8 + ldr r5, [sp] + ldr r0, [r0] + mov r6, #0 + str r0, [sp, #0xc] + add r4, sp, #4 +_0225504C: + ldr r0, [r5] + ldr r1, [r4] + bl MOD20_02253F28 + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r6, #3 + blt _0225504C + cmp r7, #0x64 + bhs _02255066 + mov r1, #1 + b _02255068 +_02255066: + mov r1, #0 +_02255068: + ldr r0, [sp] + ldr r0, [r0] + bl MOD20_02253F78 + cmp r7, #0xa + bhs _02255078 + mov r1, #1 + b _0225507A +_02255078: + mov r1, #0 +_0225507A: + ldr r0, [sp] + ldr r0, [r0, #4] + bl MOD20_02253F78 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02255088: .word 0x04000280 +_0225508C: .word 0x040002A0 +_02255090: .word 0x040002A8 + thumb_func_end MOD35_02254FD8 + + thumb_func_start MOD35_02255094 +MOD35_02255094: ; 0x02255094 + push {r3, lr} + cmp r1, #0 + beq _022550A0 + cmp r1, #1 + beq _022550A8 + b _022550B0 +_022550A0: + mov r1, #0xa + bl MOD20_02253F28 + pop {r3, pc} +_022550A8: + mov r1, #0xb + bl MOD20_02253F28 + pop {r3, pc} +_022550B0: + mov r1, #0xc + bl MOD20_02253F28 + pop {r3, pc} + thumb_func_end MOD35_02255094 + + .section .rodata + ; 0x022550B8 + .incbin "baserom.nds", 0x28f078, 0x108 + + .section .sinit + .word MOD35_02254840 diff --git a/arm9/modules/36/asm/module_36.s b/arm9/modules/36/asm/module_36.s new file mode 100644 index 00000000..d15b1d72 --- /dev/null +++ b/arm9/modules/36/asm/module_36.s @@ -0,0 +1,1571 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD36_02254840 +MOD36_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD36_02254854 + ldr r1, _02254850 ; =MOD36_02254990 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD36_02254854 +_02254850: .word MOD36_02254990 + thumb_func_end MOD36_02254840 + + thumb_func_start MOD36_02254854 +MOD36_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + ldr r1, _02254898 ; =0x00005B90 + mov r0, #8 + 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 MOD36_022548A0 + cmp r0, #0 + beq _0225488C + ldr r0, _0225489C ; =MOD36_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 0x00005B90 +_0225489C: .word MOD36_02254938 + thumb_func_end MOD36_02254854 + + thumb_func_start MOD36_022548A0 +MOD36_022548A0: ; 0x022548A0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + ldr r1, _02254904 ; =0x00005B78 + str r3, [r5, #0xc] + mov r0, #0 + strb r0, [r5, r1] + mov r6, #1 + add r3, r1, #1 + strb r6, [r5, r3] + add r3, r1, #2 + strb r0, [r5, r3] + add r0, r1, #4 + add r0, r5, r0 + add r1, r5, #4 + bl MOD36_02254E30 + cmp r0, #0 + beq _022548FC + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + strb r0, [r5, #3] + add r0, r5, #4 + bl MOD36_02254E10 + mov r0, #8 + str r0, [sp] + ldr r0, _02254908 ; =0x022553E8 + ldr r2, _0225490C ; =MOD36_02254980 + mov r1, #3 + add r3, r5, #0 + bl MOD20_02254130 + ldr r1, _02254910 ; =0x00005B84 + mov r2, #0 + str r0, [r5, r1] + add r0, r1, #4 + str r2, [r5, r0] + sub r0, r1, #4 + str r4, [r5, r0] + add sp, #4 + add r0, r6, #0 + pop {r3, r4, r5, r6, pc} +_022548FC: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02254904: .word 0x00005B78 +_02254908: .word 0x022553E8 +_0225490C: .word MOD36_02254980 +_02254910: .word 0x00005B84 + thumb_func_end MOD36_022548A0 + + thumb_func_start MOD36_02254914 +MOD36_02254914: ; 0x02254914 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02254930 ; =0x00005B84 + ldr r0, [r4, r0] + bl MOD20_02254198 + ldr r0, _02254934 ; =0x00005B7C + ldr r0, [r4, r0] + bl MOD36_02254E78 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 +_02254930: .word 0x00005B84 +_02254934: .word 0x00005B7C + thumb_func_end MOD36_02254914 + + thumb_func_start MOD36_02254938 +MOD36_02254938: ; 0x02254938 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254974 + ldr r1, _02254978 ; =0x00005B80 + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _0225497C ; =0x022553F4 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254974 + add r0, r4, #0 + bl MOD36_02254914 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, _02254978 ; =0x00005B80 + ldr r0, [r4, r0] + bl MOD20_022529A0 +_02254974: + pop {r3, r4, r5, pc} + nop +_02254978: .word 0x00005B80 +_0225497C: .word 0x022553F4 + thumb_func_end MOD36_02254938 + + thumb_func_start MOD36_02254980 +MOD36_02254980: ; 0x02254980 + ldr r2, _0225498C ; =0x00005B88 + str r1, [r3, r2] + add r1, r2, #4 + str r0, [r3, r1] + bx lr + nop +_0225498C: .word 0x00005B88 + thumb_func_end MOD36_02254980 + + thumb_func_start MOD36_02254990 +MOD36_02254990: ; 0x02254990 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD36_02254990 + + thumb_func_start MOD36_02254998 +MOD36_02254998: ; 0x02254998 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _022549A0 + b _022549A2 +_022549A0: + mov r1, #2 +_022549A2: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD36_02254998 + + thumb_func_start MOD36_022549AC +MOD36_022549AC: ; 0x022549AC + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549BC + cmp r0, #1 + beq _022549CE + b _022549EC +_022549BC: + ldr r0, _022549F0 ; =0x00005B7C + mov r1, #0 + ldr r0, [r4, r0] + bl MOD36_02254F0C + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549EC +_022549CE: + ldr r0, _022549F0 ; =0x00005B7C + mov r1, #0 + ldr r0, [r4, r0] + bl MOD36_02254F30 + cmp r0, #0 + beq _022549EC + ldr r0, _022549F4 ; =0x00005B80 + ldr r0, [r4, r0] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD36_02254998 +_022549EC: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_022549F0: .word 0x00005B7C +_022549F4: .word 0x00005B80 + thumb_func_end MOD36_022549AC + + thumb_func_start MOD36_022549F8 +MOD36_022549F8: ; 0x022549F8 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254A0A + mov r1, #2 + bl MOD36_02254998 +_02254A0A: + ldrb r0, [r4, #1] + cmp r0, #3 + bhi _02254A30 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02254A1C: ; jump table + .short _02254A24 - _02254A1C - 2 ; case 0 + .short _02254AF4 - _02254A1C - 2 ; case 1 + .short _02254B4E - _02254A1C - 2 ; case 2 + .short _02254B7C - _02254A1C - 2 ; case 3 +_02254A24: + ldr r0, _02254BCC ; =0x00005B80 + ldr r0, [r4, r0] + bl MOD20_02252C08 + cmp r0, #0 + beq _02254A32 +_02254A30: + b _02254BC4 +_02254A32: + ldr r1, _02254BD0 ; =0x00005B88 + ldr r0, [r4, r1] + cmp r0, #1 + bne _02254AAE + add r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02254A4C + cmp r0, #1 + beq _02254A82 + cmp r0, #2 + beq _02254A8A + b _02254AA6 +_02254A4C: + add r0, r1, #0 + mov r3, #1 + sub r0, #0x10 + strb r3, [r4, r0] + add r0, r1, #0 + mov r2, #0 + sub r0, #0xf + strb r2, [r4, r0] + add r0, r1, #0 + sub r0, #0xe + sub r1, #0xc + strb r3, [r4, r0] + ldr r0, [r4, r1] + mov r1, #5 + bl MOD36_02254F0C + ldr r0, _02254BD4 ; =0x00005B7C + mov r1, #7 + ldr r0, [r4, r0] + bl MOD36_02254F0C + ldr r0, _02254BD8 ; =0x00000663 + bl MOD20_02252B28 + mov r0, #1 + strb r0, [r4, #1] + b _02254AA6 +_02254A82: + ldr r0, _02254BDC ; =0x0000066E + bl MOD20_02252B28 + b _02254AA6 +_02254A8A: + add r0, r1, #0 + mov r2, #1 + sub r0, #0xe + sub r1, #0xc + strb r2, [r4, r0] + ldr r0, [r4, r1] + mov r1, #5 + bl MOD36_02254F0C + ldr r0, _02254BD8 ; =0x00000663 + bl MOD20_02252B28 + mov r0, #3 + strb r0, [r4, #1] +_02254AA6: + ldr r0, _02254BD0 ; =0x00005B88 + mov r1, #0 + str r1, [r4, r0] + b _02254BC4 +_02254AAE: + ldrb r0, [r4, #3] + cmp r0, #0 + beq _02254ADA + add r0, r4, #0 + ldr r6, [r4, #4] + ldr r5, [r4, #8] + bl MOD36_02254C44 + cmp r0, #0 + beq _02254AD4 + ldr r0, [r4, #8] + add r1, r6, #0 + str r0, [sp] + ldr r3, [r4, #4] + add r0, r4, #0 + add r2, r5, #0 + bl MOD36_02254C90 + b _02254BC4 +_02254AD4: + mov r0, #0 + strb r0, [r4, #3] + b _02254BC4 +_02254ADA: + add r0, r4, #0 + bl MOD36_02254BE4 + cmp r0, #0 + beq _02254BC4 + ldr r0, _02254BD4 ; =0x00005B7C + mov r1, #3 + ldr r0, [r4, r0] + bl MOD36_02254F0C + mov r0, #1 + strb r0, [r4, #3] + b _02254BC4 +_02254AF4: + ldr r1, _02254BD0 ; =0x00005B88 + ldr r0, [r4, r1] + cmp r0, #1 + bne _02254BC4 + add r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02254B0C + cmp r0, #1 + beq _02254B14 + cmp r0, #2 + bne _02254B46 +_02254B0C: + ldr r0, _02254BDC ; =0x0000066E + bl MOD20_02252B28 + b _02254B46 +_02254B14: + add r0, r1, #0 + mov r2, #1 + sub r0, #0x10 + strb r2, [r4, r0] + add r0, r1, #0 + sub r0, #0xf + strb r2, [r4, r0] + add r0, r1, #0 + sub r0, #0xe + sub r1, #0xc + strb r2, [r4, r0] + ldr r0, [r4, r1] + mov r1, #5 + bl MOD36_02254F0C + ldr r0, _02254BD4 ; =0x00005B7C + mov r1, #8 + ldr r0, [r4, r0] + bl MOD36_02254F0C + ldr r0, _02254BD8 ; =0x00000663 + bl MOD20_02252B28 + mov r0, #2 + strb r0, [r4, #1] +_02254B46: + ldr r0, _02254BD0 ; =0x00005B88 + mov r1, #0 + str r1, [r4, r0] + b _02254BC4 +_02254B4E: + ldr r0, _02254BD4 ; =0x00005B7C + mov r1, #8 + ldr r0, [r4, r0] + bl MOD36_02254F30 + cmp r0, #0 + beq _02254BC4 + ldr r0, _02254BE0 ; =0x00005B78 + mov r3, #0 + strb r3, [r4, r0] + mov r2, #1 + add r1, r0, #1 + strb r2, [r4, r1] + add r1, r0, #2 + strb r3, [r4, r1] + add r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD36_02254F0C + mov r0, #0 + strb r0, [r4, #1] + b _02254BC4 +_02254B7C: + ldr r1, _02254BD0 ; =0x00005B88 + ldr r0, [r4, r1] + cmp r0, #2 + bne _02254B9C + add r0, r1, #0 + mov r2, #0 + sub r0, #0xe + sub r1, #0xc + strb r2, [r4, r0] + ldr r0, [r4, r1] + mov r1, #5 + bl MOD36_02254F0C + mov r0, #0 + strb r0, [r4, #1] + b _02254BC4 +_02254B9C: + cmp r0, #3 + bne _02254BC4 + mov r0, #0 + sub r1, #0xe + strb r0, [r4, r1] + add r0, r4, #4 + bl MOD36_02254E10 + ldr r0, _02254BD4 ; =0x00005B7C + mov r1, #5 + ldr r0, [r4, r0] + bl MOD36_02254F0C + ldr r0, _02254BD4 ; =0x00005B7C + mov r1, #6 + ldr r0, [r4, r0] + bl MOD36_02254F0C + mov r0, #0 + strb r0, [r4, #1] +_02254BC4: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02254BCC: .word 0x00005B80 +_02254BD0: .word 0x00005B88 +_02254BD4: .word 0x00005B7C +_02254BD8: .word 0x00000663 +_02254BDC: .word 0x0000066E +_02254BE0: .word 0x00005B78 + thumb_func_end MOD36_022549F8 + + thumb_func_start MOD36_02254BE4 +MOD36_02254BE4: ; 0x02254BE4 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r0, sp, #4 + add r1, sp, #0 + bl MOD20_02252B68 + cmp r0, #0 + beq _02254C3E + ldr r1, [sp, #4] + ldr r2, [sp] + sub r1, #0x10 + sub r2, #0x10 + cmp r1, #0x9b + bhs _02254C06 + mov r0, #1 + b _02254C08 +_02254C06: + mov r0, #0 +_02254C08: + cmp r2, #0x95 + bhs _02254C10 + mov r3, #1 + b _02254C12 +_02254C10: + mov r3, #0 +_02254C12: + tst r0, r3 + beq _02254C3E + lsr r3, r1, #1 + lsr r1, r2, #1 + add r2, r4, #0 + mov r0, #0x96 + add r2, #0x10 + mul r0, r3 + str r3, [sp, #4] + str r1, [sp] + add r2, r2, r0 + ldrb r0, [r2, r1] + cmp r0, #0 + bne _02254C3E + mov r0, #1 + strb r0, [r2, r1] + ldr r1, [sp, #4] + str r1, [r4, #4] + ldr r1, [sp] + add sp, #8 + str r1, [r4, #8] + pop {r4, pc} +_02254C3E: + mov r0, #0 + add sp, #8 + pop {r4, pc} + thumb_func_end MOD36_02254BE4 + + thumb_func_start MOD36_02254C44 +MOD36_02254C44: ; 0x02254C44 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r0, sp, #4 + add r1, sp, #0 + bl MOD20_02252B68 + cmp r0, #0 + beq _02254C8A + ldr r1, [sp, #4] + ldr r2, [sp] + sub r1, #0x10 + sub r2, #0x10 + cmp r1, #0x9b + bhs _02254C66 + mov r0, #1 + b _02254C68 +_02254C66: + mov r0, #0 +_02254C68: + cmp r2, #0x95 + bhs _02254C70 + mov r3, #1 + b _02254C72 +_02254C70: + mov r3, #0 +_02254C72: + tst r0, r3 + beq _02254C8A + lsr r1, r1, #1 + lsr r0, r2, #1 + str r1, [sp, #4] + str r0, [sp] + str r1, [r4, #4] + ldr r0, [sp] + add sp, #8 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} +_02254C8A: + mov r0, #0 + add sp, #8 + pop {r4, pc} + thumb_func_end MOD36_02254C44 + + thumb_func_start MOD36_02254C90 +MOD36_02254C90: ; 0x02254C90 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldr r0, [sp, #0x28] + add r4, r2, #0 + add r5, r1, #0 + str r3, [sp] + str r0, [sp, #0x28] + cmp r4, r0 + bne _02254CAC + add r0, r3, #0 + cmp r5, r0 + bne _02254CAC + b _02254DCC +_02254CAC: + ldr r0, [sp] + cmp r0, r5 + bls _02254CB6 + sub r1, r0, r5 + b _02254CB8 +_02254CB6: + sub r1, r5, r0 +_02254CB8: + ldr r0, [sp, #0x28] + cmp r0, r4 + bls _02254CC2 + sub r2, r0, r4 + b _02254CC4 +_02254CC2: + sub r2, r4, r0 +_02254CC4: + cmp r1, r2 + bls _02254D46 + ldr r0, [sp] + cmp r0, r5 + bls _02254CD4 + mov r0, #1 + str r0, [sp, #4] + b _02254CDA +_02254CD4: + mov r0, #0 + mvn r0, r0 + str r0, [sp, #4] +_02254CDA: + cmp r1, #0 + beq _02254CEC + ldr r0, [sp, #0x28] + sub r0, r0, r4 + lsl r0, r0, #0xc + blx _s32_div_f + str r0, [sp, #0x10] + b _02254CF0 +_02254CEC: + mov r0, #0 + str r0, [sp, #0x10] +_02254CF0: + ldr r0, [sp, #0x10] + lsl r1, r4, #0xc + add r7, r1, r0 + ldr r0, [sp, #4] + add r5, r5, r0 + ldr r0, [sp] + cmp r5, r0 + beq _02254DB0 + mov r1, #0x96 + add r0, r5, #0 + mul r0, r1 + add r4, r6, r0 + ldr r0, [sp, #4] + mul r1, r0 + str r1, [sp, #0xc] +_02254D0E: + asr r1, r7, #0xc + cmp r5, #0x9c + bhs _02254D32 + cmp r1, #0x96 + bhs _02254D32 + add r0, r4, r1 + ldrb r2, [r0, #0x10] + cmp r2, #0 + bne _02254D32 + mov r2, #0 + strb r2, [r0, #0x10] + str r5, [r6, #4] + str r1, [r6, #8] + ldr r0, _02254DD0 ; =0x00005B7C + mov r1, #3 + ldr r0, [r6, r0] + bl MOD36_02254F0C +_02254D32: + ldr r0, [sp, #0xc] + add r4, r4, r0 + ldr r0, [sp, #4] + add r5, r5, r0 + ldr r0, [sp, #0x10] + add r7, r7, r0 + ldr r0, [sp] + cmp r5, r0 + bne _02254D0E + b _02254DB0 +_02254D46: + ldr r0, [sp, #0x28] + cmp r0, r4 + bls _02254D50 + mov r7, #1 + b _02254D54 +_02254D50: + mov r7, #0 + mvn r7, r7 +_02254D54: + cmp r2, #0 + beq _02254D68 + ldr r0, [sp] + add r1, r2, #0 + sub r0, r0, r5 + lsl r0, r0, #0xc + blx _s32_div_f + str r0, [sp, #8] + b _02254D6C +_02254D68: + mov r0, #0 + str r0, [sp, #8] +_02254D6C: + ldr r0, [sp, #8] + lsl r1, r5, #0xc + add r5, r1, r0 + ldr r0, [sp, #0x28] + add r4, r4, r7 + cmp r4, r0 + beq _02254DB0 +_02254D7A: + asr r1, r5, #0xc + cmp r4, #0x96 + bhs _02254DA4 + cmp r1, #0x9c + bhs _02254DA4 + mov r0, #0x96 + mul r0, r1 + add r0, r6, r0 + add r0, r0, r4 + ldrb r2, [r0, #0x10] + cmp r2, #0 + bne _02254DA4 + mov r2, #1 + strb r2, [r0, #0x10] + str r1, [r6, #4] + ldr r0, _02254DD0 ; =0x00005B7C + str r4, [r6, #8] + ldr r0, [r6, r0] + mov r1, #3 + bl MOD36_02254F0C +_02254DA4: + ldr r0, [sp, #8] + add r4, r4, r7 + add r5, r5, r0 + ldr r0, [sp, #0x28] + cmp r4, r0 + bne _02254D7A +_02254DB0: + ldr r0, [sp, #0x28] + cmp r0, #0x96 + bhs _02254DCC + ldr r0, [sp] + cmp r0, #0x9c + bhs _02254DCC + str r0, [r6, #4] + ldr r0, [sp, #0x28] + mov r1, #3 + str r0, [r6, #8] + ldr r0, _02254DD0 ; =0x00005B7C + ldr r0, [r6, r0] + bl MOD36_02254F0C +_02254DCC: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254DD0: .word 0x00005B7C + thumb_func_end MOD36_02254C90 + + thumb_func_start MOD36_02254DD4 +MOD36_02254DD4: ; 0x02254DD4 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254DE4 + cmp r0, #1 + beq _02254DF6 + b _02254E06 +_02254DE4: + ldr r0, _02254E0C ; =0x00005B7C + mov r1, #1 + ldr r0, [r4, r0] + bl MOD36_02254F0C + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254E06 +_02254DF6: + ldr r0, _02254E0C ; =0x00005B7C + ldr r0, [r4, r0] + bl MOD36_02254F3C + cmp r0, #0 + beq _02254E06 + mov r0, #1 + pop {r4, pc} +_02254E06: + mov r0, #0 + pop {r4, pc} + nop +_02254E0C: .word 0x00005B7C + thumb_func_end MOD36_02254DD4 + + thumb_func_start MOD36_02254E10 +MOD36_02254E10: ; 0x02254E10 + push {r4, r5} + mov r4, #0 + add r2, r4, #0 + add r3, r4, #0 +_02254E18: + add r5, r3, #0 +_02254E1A: + add r1, r0, r5 + add r5, r5, #1 + strb r2, [r1, #0xc] + cmp r5, #0x96 + blt _02254E1A + add r4, r4, #1 + add r0, #0x96 + cmp r4, #0x9c + blt _02254E18 + pop {r4, r5} + bx lr + thumb_func_end MOD36_02254E10 + + thumb_func_start MOD36_02254E30 +MOD36_02254E30: ; 0x02254E30 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0x70 + bl FUN_02016998 + add r4, r0, #0 + beq _02254E74 + 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 + mov r1, #0 + add r0, #0x68 + strh r1, [r0] + add r0, r4, #0 + add r1, r5, #0 + bl MOD36_02254E8C + ldr r0, [r4, #4] + cmp r0, #0 + beq _02254E74 + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254E74: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD36_02254E30 + + thumb_func_start MOD36_02254E78 +MOD36_02254E78: ; 0x02254E78 + push {r4, lr} + add r4, r0, #0 + beq _02254E88 + bl MOD36_02254EE4 + add r0, r4, #0 + bl FUN_02016A18 +_02254E88: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD36_02254E78 + + thumb_func_start MOD36_02254E8C +MOD36_02254E8C: ; 0x02254E8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r7, r0, #0 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x59 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x34 + mov r1, #0xc + mov r2, #0x57 + mov r3, #0x58 + bl MOD20_02253FBC + add r0, r7, #0 + str r0, [sp, #0xc] + add r0, #0x34 + ldr r4, _02254EE0 ; =0x02255440 + mov r6, #0 + add r5, r7, #0 + str r0, [sp, #0xc] +_02254EC6: + ldr r0, [r7, #0x20] + ldr r2, [sp, #0xc] + add r1, r4, #0 + bl MOD20_02253E74 + str r0, [r5, #0x24] + add r6, r6, #1 + add r4, #0x10 + add r5, r5, #4 + cmp r6, #4 + blt _02254EC6 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254EE0: .word 0x02255440 + thumb_func_end MOD36_02254E8C + + thumb_func_start MOD36_02254EE4 +MOD36_02254EE4: ; 0x02254EE4 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02254EEC: + ldr r1, [r5, #0x24] + cmp r1, #0 + beq _02254EF8 + ldr r0, [r6, #0x20] + bl MOD20_02253F14 +_02254EF8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02254EEC + add r6, #0x34 + add r0, r6, #0 + bl MOD20_02254014 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD36_02254EE4 + + thumb_func_start MOD36_02254F0C +MOD36_02254F0C: ; 0x02254F0C + 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, _02254F2C ; =0x02255480 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254F2C: .word 0x02255480 + thumb_func_end MOD36_02254F0C + + thumb_func_start MOD36_02254F30 +MOD36_02254F30: ; 0x02254F30 + ldr r3, _02254F38 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254F38: .word MOD20_02253794 + thumb_func_end MOD36_02254F30 + + thumb_func_start MOD36_02254F3C +MOD36_02254F3C: ; 0x02254F3C + ldr r3, _02254F44 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254F44: .word MOD20_022537B8 + thumb_func_end MOD36_02254F3C + + thumb_func_start MOD36_02254F48 +MOD36_02254F48: ; 0x02254F48 + 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 MOD36_02254F48 + + thumb_func_start MOD36_02254F5C +MOD36_02254F5C: ; 0x02254F5C + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + mov r0, #8 + add r5, r1, #0 + bl FUN_02016B90 + cmp r0, #0 + bne _02254F70 + bl ErrorHandling +_02254F70: + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r2, _0225502C ; =0x02255408 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _02255030 ; =0x02255424 + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + mov r0, #8 + bl FUN_02016B90 + cmp r0, #0 + bne _02254F9E + bl ErrorHandling +_02254F9E: + 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, #0x56 + mov r3, #6 + bl FUN_0200687C + add r6, 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, [r4, #4] + mov r0, #0xc + mov r1, #0x55 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + mov r0, #8 + bl FUN_02016B90 + cmp r0, #0 + bne _02254FEA + bl ErrorHandling +_02254FEA: + add r0, r4, #0 + lsr r1, r6, #5 + bl MOD36_0225503C + ldr r0, [r4, #4] + mov r1, #7 + bl FUN_02017CD0 + ldr r1, _02255034 ; =0x04001000 + ldr r0, _02255038 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #0x14 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r5, #0 + bl MOD36_02254F48 + mov r0, #8 + bl FUN_02016B90 + cmp r0, #0 + bne _02255028 + bl ErrorHandling +_02255028: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0225502C: .word 0x02255408 +_02255030: .word 0x02255424 +_02255034: .word 0x04001000 +_02255038: .word 0xFFFFE0FF + thumb_func_end MOD36_02254F5C + + thumb_func_start MOD36_0225503C +MOD36_0225503C: ; 0x0225503C + push {r3, r4, r5, lr} + sub sp, #8 + ldr r3, _02255098 ; =0x02255400 + add r4, r0, #0 + ldrh r5, [r3] + add r0, sp, #0 + add r2, sp, #0 + strh r5, [r0] + ldrh r5, [r3, #2] + strh r5, [r0, #2] + ldrh r5, [r3, #4] + ldrh r3, [r3, #6] + strh r5, [r0, #4] + strh r3, [r0, #6] + str r1, [r4, #0x58] + strh r1, [r0, #6] + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x48 + bl FUN_02019150 + ldr r0, [r4] + mov r2, #0xbe + ldr r0, [r0, #8] + ldr r1, [r4, #0x54] + lsl r2, r2, #6 + bl FUN_0208946C + cmp r0, #0 + bne _02255082 + add r0, r4, #0 + add r0, #0x48 + mov r1, #4 + bl FUN_02019620 +_02255082: + add r0, r4, #0 + add r0, #0x48 + bl FUN_02019270 + add r4, #0x48 + add r0, r4, #0 + bl FUN_02019548 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_02255098: .word 0x02255400 + thumb_func_end MOD36_0225503C + + thumb_func_start MOD36_0225509C +MOD36_0225509C: ; 0x0225509C + 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 _022550B8 + cmp r0, #1 + beq _022550C4 + pop {r3, r4, r5, pc} +_022550B8: + mov r0, #1 + str r0, [r4, #0x5c] + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_022550C4: + ldr r0, [r4] + mov r2, #0xbe + ldr r0, [r0, #8] + ldr r1, [r4, #0x54] + lsl r2, r2, #6 + bl FUN_02089444 + add r0, r4, #0 + add r0, #0x48 + bl FUN_02019178 + 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 MOD36_02254F48 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD36_0225509C + + thumb_func_start MOD36_022550F4 +MOD36_022550F4: ; 0x022550F4 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r0, #0x48 + bl FUN_02019548 + add r0, r4, #0 + bl MOD36_02254F48 + pop {r4, pc} + thumb_func_end MOD36_022550F4 + + thumb_func_start MOD36_0225510C +MOD36_0225510C: ; 0x0225510C + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r1, [r4] + ldr r0, [r1] + lsl r2, r0, #1 + ldr r0, [r1, #4] + mov r1, #0x14 + lsl r3, r0, #1 + asr r5, r3, #3 + asr r0, r2, #3 + mul r1, r5 + add r5, r0, r1 + mov r0, #2 + str r0, [sp] + str r0, [sp, #4] + add r0, r4, #0 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + add r0, #0x48 + mov r1, #1 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_020196F4 + ldr r1, [r4, #0x54] + lsl r0, r5, #5 + add r0, r1, r0 + ldr r1, [r4, #0x58] + mov r2, #0x20 + add r1, r1, r5 + lsl r1, r1, #5 + blx GXS_LoadBG3Char + add r0, r6, #0 + bl MOD36_02254F48 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD36_0225510C + + thumb_func_start MOD36_02255164 +MOD36_02255164: ; 0x02255164 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r0, #0x48 + bl FUN_02019548 + add r0, r4, #0 + bl MOD36_02254F48 + pop {r4, pc} + thumb_func_end MOD36_02255164 + + thumb_func_start MOD36_0225517C +MOD36_0225517C: ; 0x0225517C + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r5, r0, #0 + ldr r0, _022551D4 ; =0x00005B74 + ldrb r0, [r5, r0] + cmp r0, #0 + beq _0225519C + mov r1, #2 + b _0225519E +_0225519C: + mov r1, #1 +_0225519E: + ldr r0, [r4, #0x28] + bl MOD20_02253F28 + ldr r0, _022551D8 ; =0x00005B75 + ldrb r0, [r5, r0] + cmp r0, #0 + beq _022551B0 + mov r1, #4 + b _022551B2 +_022551B0: + mov r1, #3 +_022551B2: + ldr r0, [r4, #0x2c] + bl MOD20_02253F28 + ldr r0, _022551DC ; =0x00005B76 + ldrb r0, [r5, r0] + cmp r0, #0 + beq _022551C4 + mov r1, #6 + b _022551C6 +_022551C4: + mov r1, #5 +_022551C6: + ldr r0, [r4, #0x30] + bl MOD20_02253F28 + add r0, r6, #0 + bl MOD36_02254F48 + pop {r4, r5, r6, pc} + .align 2, 0 +_022551D4: .word 0x00005B74 +_022551D8: .word 0x00005B75 +_022551DC: .word 0x00005B76 + thumb_func_end MOD36_0225517C + + thumb_func_start MOD36_022551E0 +MOD36_022551E0: ; 0x022551E0 + 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, r4, #0 + add r0, #0x48 + mov r1, #4 + bl FUN_02019620 + add r4, #0x48 + add r0, r4, #0 + bl FUN_02019548 + add r0, r5, #0 + bl MOD36_02254F48 + pop {r3, r4, r5, pc} + thumb_func_end MOD36_022551E0 + + thumb_func_start MOD36_0225520C +MOD36_0225520C: ; 0x0225520C + 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 _02255236 + ldr r1, [r4, #0x5c] + cmp r1, #0 + beq _02255236 + add r0, r5, #0 + bl MOD36_02254F48 + pop {r3, r4, r5, pc} +_02255236: + cmp r0, #4 + bls _0225523C + b _0225539A +_0225523C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02255248: ; jump table + .short _02255252 - _02255248 - 2 ; case 0 + .short _02255286 - _02255248 - 2 ; case 1 + .short _022552D8 - _02255248 - 2 ; case 2 + .short _02255322 - _02255248 - 2 ; case 3 + .short _02255356 - _02255248 - 2 ; case 4 +_02255252: + add r0, r4, #0 + add r0, #0x68 + ldrh r0, [r0] + mov r1, #0x15 + lsl r1, r1, #4 + add r2, r0, r1 + add r0, r4, #0 + add r0, #0x68 + strh r2, [r0] + add r0, r4, #0 + add r0, #0x6a + strh r1, [r0] + add r1, r4, #0 + add r1, #0x68 + ldrh r1, [r1] + ldr r0, [r4, #0x24] + bl MOD20_02253FB4 + mov r0, #0 + str r0, [r4, #0x64] + str r0, [r4, #0x60] + str r0, [r4, #0x5c] + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_02255286: + add r0, r4, #0 + add r0, #0x68 + ldrh r1, [r0] + add r0, r4, #0 + add r0, #0x6a + ldrh r0, [r0] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x68 + strh r1, [r0] + add r1, r4, #0 + add r1, #0x68 + ldrh r1, [r1] + ldr r0, [r4, #0x24] + bl MOD20_02253FB4 + add r0, r4, #0 + add r0, #0x6a + ldrh r1, [r0] + mov r0, #0x15 + lsl r0, r0, #4 + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x6a + strh r1, [r0] + add r0, r4, #0 + add r0, #0x6a + mov r1, #3 + ldrh r0, [r0] + lsl r1, r1, #0xc + cmp r0, r1 + blo _0225539A + add r0, r4, #0 + add r0, #0x6a + strh r1, [r0] + mov r0, #1 + str r0, [r4, #0x64] + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_022552D8: + add r0, r4, #0 + add r0, #0x68 + ldrh r1, [r0] + add r0, r4, #0 + add r0, #0x6a + ldrh r0, [r0] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x68 + strh r1, [r0] + add r1, r4, #0 + add r1, #0x68 + ldrh r1, [r1] + ldr r0, [r4, #0x24] + bl MOD20_02253FB4 + ldr r0, [r4, #0x60] + cmp r0, #0 + beq _0225539A + bl FUN_0201BA60 + mov r1, #7 + and r0, r1 + str r0, [r4, #0x6c] + add r0, r4, #0 + add r0, #0x6a + ldrh r1, [r0] + mov r0, #0x1a + lsl r0, r0, #8 + cmp r1, r0 + bls _0225531A + add r4, #0x6a + strh r0, [r4] +_0225531A: + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_02255322: + add r0, r4, #0 + add r0, #0x68 + ldrh r1, [r0] + add r0, r4, #0 + add r0, #0x6a + ldrh r0, [r0] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x68 + strh r1, [r0] + add r1, r4, #0 + add r1, #0x68 + ldrh r1, [r1] + ldr r0, [r4, #0x24] + bl MOD20_02253FB4 + ldr r0, [r4, #0x6c] + cmp r0, #0 + bne _0225534E + sub r0, r0, #1 + str r0, [r4, #0x6c] + pop {r3, r4, r5, pc} +_0225534E: + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_02255356: + add r0, r4, #0 + add r0, #0x6a + ldrh r0, [r0] + cmp r0, #0x50 + bls _0225538E + add r0, r4, #0 + add r0, #0x6a + ldrh r1, [r0] + add r0, r4, #0 + add r0, #0x6a + sub r1, #0x50 + strh r1, [r0] + add r0, r4, #0 + add r0, #0x68 + ldrh r1, [r0] + add r0, r4, #0 + add r0, #0x6a + ldrh r0, [r0] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x68 + strh r1, [r0] + ldr r0, [r4, #0x24] + add r4, #0x68 + ldrh r1, [r4] + bl MOD20_02253FB4 + pop {r3, r4, r5, pc} +_0225538E: + mov r0, #0 + add r4, #0x6a + strh r0, [r4] + add r0, r5, #0 + bl MOD36_02254F48 +_0225539A: + pop {r3, r4, r5, pc} + thumb_func_end MOD36_0225520C + + thumb_func_start MOD36_0225539C +MOD36_0225539C: ; 0x0225539C + 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 _022553BE + cmp r0, #1 + beq _022553CA + pop {r3, r4, r5, pc} +_022553BE: + mov r0, #1 + str r0, [r4, #0x60] + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_022553CA: + add r0, r4, #0 + mov r1, #7 + bl MOD36_02254F30 + cmp r0, #0 + beq _022553E2 + ldr r0, _022553E4 ; =0x0000066A + bl MOD20_02252B28 + add r0, r5, #0 + bl MOD36_02254F48 +_022553E2: + pop {r3, r4, r5, pc} + .align 2, 0 +_022553E4: .word 0x0000066A + thumb_func_end MOD36_0225539C + + .section .rodata + ; 0x022553E8 + .incbin "baserom.nds", 0x28fda8, 0x110 + + ; .section .sinit + .global SDK_OVERLAY.MODULE_36.SINIT_START + .global SDK_OVERLAY.MODULE_36.SINIT_END +SDK_OVERLAY.MODULE_36.SINIT_START: + .word MOD36_02254840 + .word 0 +SDK_OVERLAY.MODULE_36.SINIT_END: |