diff options
-rw-r--r-- | arm9/asm/unk_0204639C.s | 253 | ||||
-rw-r--r-- | arm9/global.inc | 9 | ||||
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 106 | ||||
-rw-r--r-- | arm9/src/unk_0204639C.c | 134 | ||||
-rw-r--r-- | include/script.h | 3 | ||||
-rw-r--r-- | include/unk_0204639C.h | 42 |
6 files changed, 241 insertions, 306 deletions
diff --git a/arm9/asm/unk_0204639C.s b/arm9/asm/unk_0204639C.s deleted file mode 100644 index 07a73204..00000000 --- a/arm9/asm/unk_0204639C.s +++ /dev/null @@ -1,253 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0204639C -FUN_0204639C: ; 0x0204639C - push {r3-r7, lr} - add r5, r0, #0x0 - mov r0, #0x20 - add r6, r1, #0x0 - add r1, r0, #0x0 - add r7, r2, #0x0 - bl AllocFromHeapAtEnd - add r4, r0, #0x0 - mov r0, #0x0 - str r0, [r4, #0x0] - str r6, [r4, #0x4] - str r0, [r4, #0x8] - str r7, [r4, #0xc] - str r0, [r4, #0x10] - str r0, [r4, #0x14] - mov r0, #0x20 - mov r1, #0x4 - str r5, [r4, #0x18] - bl AllocFromHeapAtEnd - str r0, [r4, #0x1c] - add r0, r4, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_020463CC -FUN_020463CC: ; 0x020463CC - push {r4-r6, lr} - add r5, r0, #0x0 - ldr r0, [r5, #0x10] - add r4, r1, #0x0 - add r6, r2, #0x0 - cmp r0, #0x0 - beq _020463DE - bl ErrorHandling -_020463DE: - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_0204639C - str r0, [r5, #0x10] - pop {r4-r6, pc} - - thumb_func_start FUN_020463EC -FUN_020463EC: ; 0x020463EC - push {r4, lr} - add r4, r0, #0x0 - str r1, [r4, #0x4] - mov r0, #0x0 - str r0, [r4, #0x8] - str r2, [r4, #0xc] - ldr r0, [r4, #0x14] - cmp r0, #0x0 - bne _02046400 - beq _0204640A -_02046400: - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x10] - str r0, [r4, #0x14] -_0204640A: - pop {r4, pc} - - thumb_func_start FUN_0204640C -FUN_0204640C: ; 0x0204640C - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x18] - bl FUN_0204639C - str r4, [r0, #0x0] - ldr r1, [r4, #0x18] - str r0, [r1, #0x10] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02046420 -FUN_02046420: ; 0x02046420 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r0, [r5, #0x10] - cmp r0, #0x0 - bne _0204642E - mov r0, #0x0 - pop {r3-r5, pc} -_0204642E: - ldr r1, [r0, #0x4] - blx r1 - cmp r0, #0x1 - bne _02046466 -_02046436: - ldr r0, [r5, #0x10] - ldr r4, [r0, #0x0] - ldr r0, [r0, #0x14] - cmp r0, #0x0 - beq _02046444 - bl FreeToHeap -_02046444: - ldr r0, [r5, #0x10] - ldr r0, [r0, #0x1c] - bl FreeToHeap - ldr r0, [r5, #0x10] - bl FreeToHeap - str r4, [r5, #0x10] - cmp r4, #0x0 - bne _0204645C - mov r0, #0x1 - pop {r3-r5, pc} -_0204645C: - ldr r0, [r5, #0x10] - ldr r1, [r0, #0x4] - blx r1 - cmp r0, #0x1 - beq _02046436 -_02046466: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0204646C -FUN_0204646C: ; 0x0204646C - ldr r0, [r0, #0x10] - cmp r0, #0x0 - beq _02046476 - mov r0, #0x1 - bx lr -_02046476: - mov r0, #0x0 - bx lr - .balign 4 - - thumb_func_start FUN_0204647C -FUN_0204647C: ; 0x0204647C - push {r4, lr} - add r4, r0, #0x0 - bl FUN_0203739C - cmp r0, #0x0 - bne _02046492 - add r0, r4, #0x0 - bl FUN_020373C4 - cmp r0, #0x0 - beq _02046496 -_02046492: - mov r0, #0x1 - pop {r4, pc} -_02046496: - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0204649C -FUN_0204649C: ; 0x0204649C - ldr r3, _020464A0 ; =LoadOverlay_MODULE_05 - bx r3 - .balign 4 -_020464A0: .word LoadOverlay_MODULE_05 - - thumb_func_start FUN_020464A4 -FUN_020464A4: ; 0x020464A4 - push {r3, lr} - bl FUN_020373AC - cmp r0, #0x0 - beq _020464B2 - mov r0, #0x1 - pop {r3, pc} -_020464B2: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_020464B8 -FUN_020464B8: ; 0x020464B8 - push {r3-r5, lr} - add r4, r0, #0x0 - bl FUN_02046528 - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0204652C - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - beq _020464D6 - cmp r0, #0x1 - beq _020464E8 - b _020464FC -_020464D6: - ldr r1, [r4, #0x4] - ldr r2, [r4, #0x8] - add r0, r5, #0x0 - bl FUN_020373D4 - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - b _020464FC -_020464E8: - add r0, r5, #0x0 - bl FUN_0204647C - cmp r0, #0x0 - bne _020464FC - add r0, r4, #0x0 - bl FreeToHeap - mov r0, #0x1 - pop {r3-r5, pc} -_020464FC: - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02046500 -FUN_02046500: ; 0x02046500 - push {r4-r6, lr} - add r6, r0, #0x0 - add r5, r1, #0x0 - mov r0, #0x20 - mov r1, #0xc - add r4, r2, #0x0 - bl AllocFromHeapAtEnd - add r2, r0, #0x0 - mov r0, #0x0 - str r0, [r2, #0x0] - str r5, [r2, #0x4] - ldr r1, _02046524 ; =FUN_020464B8 - add r0, r6, #0x0 - str r4, [r2, #0x8] - bl FUN_0204640C - pop {r4-r6, pc} - .balign 4 -_02046524: .word FUN_020464B8 - - thumb_func_start FUN_02046528 -FUN_02046528: ; 0x02046528 - ldr r0, [r0, #0x18] - bx lr - - thumb_func_start FUN_0204652C -FUN_0204652C: ; 0x0204652C - ldr r0, [r0, #0xc] - bx lr - - thumb_func_start FUN_02046530 -FUN_02046530: ; 0x02046530 - add r0, #0x8 - bx lr - - thumb_func_start FUN_02046534 -FUN_02046534: ; 0x02046534 - ldr r0, [r0, #0x1c] - ldr r0, [r0, #0x0] - bx lr - .balign 4 diff --git a/arm9/global.inc b/arm9/global.inc index e298bf3e..590dce1f 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -7662,6 +7662,15 @@ .extern Unk_02106900
.extern Unk_02106A00
.extern Unk_02106A04
+.extern UNK_020FFA38
+.extern UNK_02105BB8
+.extern UNK_021064BC
+.extern UNK_021064C4
+.extern gUnknown21C48B8
+.extern UNK_021CED20
+.extern UNK_021CED98
+.extern UNK_021CEDD4
+.extern UNK_021CEF70
.extern UnloadOverlayByID
.extern VEC_Add
.extern VEC_CrossProduct
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 7b887c14..b6c8c3b5 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -826,7 +826,7 @@ MOD05_021D7BE0: ; 0x021D7BE0 ldr r0, [r0] ldr r1, [r4, #0x2c] bl MOD05_021E805C - ldr r5, _021D7C98 ; =0x021CED20 + ldr r5, _021D7C98 ; =UNK_021CED20 add r3, sp, #0x40 mov r2, #8 _021D7C0E: @@ -859,11 +859,11 @@ _021D7C1C: orr r2, r0 add r0, r1, r2 str r0, [sp, #0x38] - ldr r1, _021D7C98 ; =0x021CED20 + ldr r1, _021D7C98 ; =UNK_021CED20 add r0, sp, #0 mov r2, #0x40 bl MIi_CpuCopyFast - ldr r1, _021D7C9C ; =0x021CED98 + ldr r1, _021D7C9C ; =UNK_021CED98 mov r0, #0x50 ldr r2, [r1, #0x7c] bic r2, r0 @@ -872,11 +872,11 @@ _021D7C1C: ldr r0, [r4, #0x3c] bl MOD05_021E4BA0 bl FUN_0201F178 - ldr r1, _021D7C98 ; =0x021CED20 + ldr r1, _021D7C98 ; =UNK_021CED20 add r0, sp, #0x40 mov r2, #0x40 bl MIi_CpuCopyFast - ldr r1, _021D7C9C ; =0x021CED98 + ldr r1, _021D7C9C ; =UNK_021CED98 mov r0, #0x50 ldr r2, [r1, #0x7c] bic r2, r0 @@ -885,16 +885,16 @@ _021D7C1C: ldr r0, [r4, #4] ldr r0, [r0, #4] bl MOD05_021D7FD0 - ldr r1, _021D7CA0 ; =0x02105BB8 + ldr r1, _021D7CA0 ; =UNK_02105BB8 mov r0, #0 ldr r1, [r1] bl FUN_020222B4 add sp, #0x80 pop {r3, r4, r5, pc} nop -_021D7C98: .word 0x021CED20 -_021D7C9C: .word 0x021CED98 -_021D7CA0: .word 0x02105BB8 +_021D7C98: .word UNK_021CED20 +_021D7C9C: .word UNK_021CED98 +_021D7CA0: .word UNK_02105BB8 thumb_func_start MOD05_021D7CA4 MOD05_021D7CA4: ; 0x021D7CA4 @@ -943,7 +943,7 @@ MOD05_021D7CF0: ; 0x021D7CF0 mov r0, #1 mov r1, #0 bl FUN_0201E6E4 - ldr r0, _021D7D44 ; =0x02105BB8 + ldr r0, _021D7D44 ; =UNK_02105BB8 ldr r0, [r0] lsl r1, r0, #1 ldr r0, _021D7D48 ; =0x04000540 @@ -973,7 +973,7 @@ _021D7D36: str r0, [r5, #0x30] pop {r3, r4, r5, pc} nop -_021D7D44: .word 0x02105BB8 +_021D7D44: .word UNK_02105BB8 _021D7D48: .word 0x04000540 thumb_func_start MOD05_021D7D4C @@ -11007,7 +11007,7 @@ _021DC998: str r2, [r1, r0] ldr r1, [r4, #0xc] add r0, r3, #4 - ldr r6, _021DCA38 ; =0x021CEF70 + ldr r6, _021DCA38 ; =UNK_021CEF70 add r5, r1, r0 ldmia r6!, {r0, r1} stmia r5!, {r0, r1} @@ -11058,7 +11058,7 @@ _021DCA30: pop {r4, r5, r6, pc} .balign 4, 0 _021DCA34: .word 0x00000F48 -_021DCA38: .word 0x021CEF70 +_021DCA38: .word UNK_021CEF70 _021DCA3C: .word 0x00000F58 _021DCA40: .word 0x0400000C @@ -11847,14 +11847,14 @@ _021DD030: thumb_func_start MOD05_021DD038 MOD05_021DD038: ; 0x021DD038 - ldr r3, _021DD044 ; =0x020DF4A4 + ldr r3, _021DD044 ; =memset mov r1, #0 str r1, [r0, #8] add r0, #0xc mov r2, #0x28 bx r3 .balign 4, 0 -_021DD044: .word 0x020DF4A4 +_021DD044: .word memset thumb_func_start MOD05_021DD048 MOD05_021DD048: ; 0x021DD048 @@ -12072,7 +12072,7 @@ MOD05_021DD180: ; 0x021DD180 ldr r0, [sp, #0xc] lsl r1, r1, #0x12 bl FX_Div - ldr r3, _021DD2B0 ; =0x021CEF70 + ldr r3, _021DD2B0 ; =UNK_021CEF70 str r0, [sp, #0xc] ldmia r3!, {r0, r1} add r2, sp, #0x14 @@ -12178,7 +12178,7 @@ _021DD2A4: add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 -_021DD2B0: .word 0x021CEF70 +_021DD2B0: .word UNK_021CEF70 _021DD2B4: .word 0x00000F4C _021DD2B8: .word 0xFFFFF000 @@ -22466,7 +22466,7 @@ _021E22B8: ldr r0, _021E235C ; =0x000005DC bl FUN_020054C8 _021E22EE: - ldr r0, _021E2360 ; =0x021C48B8 + ldr r0, _021E2360 ; =gUnknown21C48B8 mov r1, #0x40 ldr r0, [r0, #0x4c] tst r1, r0 @@ -22523,7 +22523,7 @@ _021E235A: pop {r4, r5, r6, pc} .balign 4, 0 _021E235C: .word 0x000005DC -_021E2360: .word 0x021C48B8 +_021E2360: .word gUnknown21C48B8 _021E2364: .word 0x0000FFFE thumb_func_start MOD05_021E2368 @@ -25873,7 +25873,7 @@ MOD05_021E3DA0: ; 0x021E3DA0 bl MTX_Identity22_ add r0, sp, #8 ldrh r0, [r0, #0x14] - ldr r3, _021E3E0C ; =0x020FFA38 + ldr r3, _021E3E0C ; =UNK_020FFA38 asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -25912,7 +25912,7 @@ MOD05_021E3DA0: ; 0x021E3DA0 bl FUN_0200CA98 pop {r3, r4, r5, r6, r7, pc} nop -_021E3E0C: .word 0x020FFA38 +_021E3E0C: .word UNK_020FFA38 _021E3E10: .word MOD05_021E3D70 thumb_func_start MOD05_021E3E14 @@ -26927,7 +26927,7 @@ MOD05_021E45A0: ; 0x021E45A0 add r4, r1, #0 lsl r1, r0, #1 lsl r0, r1, #1 - ldr r2, _021E4680 ; =0x020FFA38 + ldr r2, _021E4680 ; =UNK_020FFA38 add r1, r1, #1 lsl r1, r1, #1 ldrsh r0, [r2, r0] @@ -26938,7 +26938,7 @@ MOD05_021E45A0: ; 0x021E45A0 asr r0, r4, #4 lsl r1, r0, #1 lsl r0, r1, #1 - ldr r2, _021E4680 ; =0x020FFA38 + ldr r2, _021E4680 ; =UNK_020FFA38 add r1, r1, #1 lsl r1, r1, #1 ldrsh r0, [r2, r0] @@ -27030,7 +27030,7 @@ _021E464C: add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 -_021E4680: .word 0x020FFA38 +_021E4680: .word UNK_020FFA38 _021E4684: .word 0x00000000 thumb_func_start MOD05_021E4688 @@ -31475,7 +31475,7 @@ _021E6824: _021E682A: ldr r0, [r4, #0xc] bl FUN_020552F8 - ldr r2, _021E68D4 ; =0x021C48B8 + ldr r2, _021E68D4 ; =gUnknown21C48B8 str r0, [sp] ldr r1, [r2, #0x48] ldr r2, [r2, #0x44] @@ -31549,7 +31549,7 @@ _021E68C6: .balign 4, 0 _021E68CC: .word 0x00000651 _021E68D0: .word 0x00000652 -_021E68D4: .word 0x021C48B8 +_021E68D4: .word gUnknown21C48B8 thumb_func_start MOD05_021E68D8 MOD05_021E68D8: ; 0x021E68D8 @@ -34499,10 +34499,10 @@ MOD05_021E7F34: ; 0x021E7F34 add r4, r2, #0 add r5, r3, #0 bl FUN_020B8474 - ldr r1, _021E7FB4 ; =0x021CEDD4 + ldr r1, _021E7FB4 ; =UNK_021CEDD4 add r0, r4, #0 bl MI_Copy36B - ldr r1, _021E7FB8 ; =0x021CED98 + ldr r1, _021E7FB8 ; =UNK_021CED98 mov r0, #0xa4 ldr r2, [r1, #0x7c] bic r2, r0 @@ -34554,8 +34554,8 @@ _021E7F98: _021E7FB0: pop {r3, r4, r5, r6, r7, pc} nop -_021E7FB4: .word 0x021CEDD4 -_021E7FB8: .word 0x021CED98 +_021E7FB4: .word UNK_021CEDD4 +_021E7FB8: .word UNK_021CED98 thumb_func_start MOD05_021E7FBC MOD05_021E7FBC: ; 0x021E7FBC @@ -51192,7 +51192,7 @@ _021F03A8: asr r0, r1, #4 lsl r3, r0, #1 lsl r1, r3, #1 - ldr r2, _021F0438 ; =0x020FFA38 + ldr r2, _021F0438 ; =UNK_020FFA38 add r3, r3, #1 lsl r3, r3, #1 ldrsh r1, [r2, r1] @@ -51206,7 +51206,7 @@ _021F03A8: asr r0, r5, #4 lsl r2, r0, #1 lsl r1, r2, #1 - ldr r3, _021F0438 ; =0x020FFA38 + ldr r3, _021F0438 ; =UNK_020FFA38 add r2, r2, #1 lsl r2, r2, #1 ldrsh r1, [r3, r1] @@ -51251,7 +51251,7 @@ _021F03A8: pop {r4, r5, r6, r7, pc} nop _021F0434: .word 0x021F8B6C -_021F0438: .word 0x020FFA38 +_021F0438: .word UNK_020FFA38 thumb_func_start MOD05_021F043C MOD05_021F043C: ; 0x021F043C @@ -51278,7 +51278,7 @@ MOD05_021F0454: ; 0x021F0454 bl FUN_0201F008 strh r0, [r5] ldrh r0, [r5] - ldr r2, _021F04F0 ; =0x020FFA38 + ldr r2, _021F04F0 ; =UNK_020FFA38 asr r0, r0, #4 lsl r1, r0, #1 lsl r0, r1, #1 @@ -51321,7 +51321,7 @@ MOD05_021F0454: ; 0x021F0454 str r0, [r5, #0x1c] add r0, sp, #0 ldrh r0, [r0] - ldr r3, _021F04F0 ; =0x020FFA38 + ldr r3, _021F04F0 ; =UNK_020FFA38 asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -51336,7 +51336,7 @@ MOD05_021F0454: ; 0x021F0454 add sp, #0x2c pop {r4, r5, pc} nop -_021F04F0: .word 0x020FFA38 +_021F04F0: .word UNK_020FFA38 _021F04F4: .word 0x021F8B78 thumb_func_start MOD05_021F04F8 @@ -60238,13 +60238,13 @@ _021F48B2: thumb_func_start MOD05_021F48BC MOD05_021F48BC: ; 0x021F48BC mov r2, #0xc6 - ldr r3, _021F48C8 ; =0x020C7A04 + ldr r3, _021F48C8 ; =G3X_SetHOffset mov r0, #0 lsl r2, r2, #2 str r0, [r1, r2] bx r3 .balign 4, 0 -_021F48C8: .word 0x020C7A04 +_021F48C8: .word G3X_SetHOffset thumb_func_start MOD05_021F48CC MOD05_021F48CC: ; 0x021F48CC @@ -61579,17 +61579,17 @@ MOD05_021F52C8: ; 0x021F52C8 add r1, sp, #4 add r2, sp, #0 bl FUN_020B7CF0 - ldr r1, _021F5314 ; =0x021064BC + ldr r1, _021F5314 ; =UNK_021064BC ldr r0, [sp, #4] ldr r1, [r1] blx r1 - ldr r1, _021F5314 ; =0x021064BC + ldr r1, _021F5314 ; =UNK_021064BC ldr r0, [sp] ldr r1, [r1] blx r1 ldr r0, [r4, #0xc] bl FUN_020B7C58 - ldr r1, _021F5318 ; =0x021064C4 + ldr r1, _021F5318 ; =UNK_021064C4 ldr r1, [r1] blx r1 _021F52F8: @@ -61608,8 +61608,8 @@ _021F5306: add sp, #8 pop {r4, pc} nop -_021F5314: .word 0x021064BC -_021F5318: .word 0x021064C4 +_021F5314: .word UNK_021064BC +_021F5318: .word UNK_021064C4 thumb_func_start MOD05_021F531C MOD05_021F531C: ; 0x021F531C @@ -61766,11 +61766,11 @@ MOD05_021F5400: ; 0x021F5400 thumb_func_start MOD05_021F5424 MOD05_021F5424: ; 0x021F5424 - ldr r3, _021F542C ; =0x020B7EFC + ldr r3, _021F542C ; =FUN_020B7EFC ldr r1, [r1, #8] bx r3 nop -_021F542C: .word 0x020B7EFC +_021F542C: .word FUN_020B7EFC thumb_func_start MOD05_021F5430 MOD05_021F5430: ; 0x021F5430 @@ -61785,7 +61785,7 @@ MOD05_021F5430: ; 0x021F5430 add r0, r4, #0 add r0, #0x70 ldrh r0, [r0] - ldr r3, _021F54C8 ; =0x020FFA38 + ldr r3, _021F54C8 ; =UNK_020FFA38 asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -61802,7 +61802,7 @@ MOD05_021F5430: ; 0x021F5430 add r0, r4, #0 add r0, #0x74 ldrh r0, [r0] - ldr r3, _021F54C8 ; =0x020FFA38 + ldr r3, _021F54C8 ; =UNK_020FFA38 asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -61819,7 +61819,7 @@ MOD05_021F5430: ; 0x021F5430 add r0, r4, #0 add r0, #0x72 ldrh r0, [r0] - ldr r3, _021F54C8 ; =0x020FFA38 + ldr r3, _021F54C8 ; =UNK_020FFA38 asr r0, r0, #4 lsl r2, r0, #1 lsl r1, r2, #1 @@ -61844,7 +61844,7 @@ _021F54C4: add sp, #0x48 pop {r4, pc} .balign 4, 0 -_021F54C8: .word 0x020FFA38 +_021F54C8: .word UNK_020FFA38 thumb_func_start MOD05_021F54CC MOD05_021F54CC: ; 0x021F54CC @@ -63461,7 +63461,7 @@ _021F6088: thumb_func_start MOD05_021F6098 MOD05_021F6098: ; 0x021F6098 - ldr r0, _021F60A8 ; =0x021C48B8 + ldr r0, _021F60A8 ; =gUnknown21C48B8 ldr r1, [r0, #0x48] mov r0, #1 tst r1, r0 @@ -63470,11 +63470,11 @@ MOD05_021F6098: ; 0x021F6098 _021F60A4: bx lr nop -_021F60A8: .word 0x021C48B8 +_021F60A8: .word gUnknown21C48B8 thumb_func_start MOD05_021F60AC MOD05_021F60AC: ; 0x021F60AC - ldr r0, _021F60C0 ; =0x021C48B8 + ldr r0, _021F60C0 ; =gUnknown21C48B8 ldr r1, [r0, #0x48] mov r0, #3 tst r0, r1 @@ -63485,7 +63485,7 @@ _021F60BA: mov r0, #0 bx lr nop -_021F60C0: .word 0x021C48B8 +_021F60C0: .word gUnknown21C48B8 thumb_func_start MOD05_021F60C4 MOD05_021F60C4: ; 0x021F60C4 diff --git a/arm9/src/unk_0204639C.c b/arm9/src/unk_0204639C.c new file mode 100644 index 00000000..50aae8fa --- /dev/null +++ b/arm9/src/unk_0204639C.c @@ -0,0 +1,134 @@ +#include "global.h" +#include "heap.h" +#include "unk_0204639C.h" + +#pragma thumb on + +struct UnkStruct_0204639C * FUN_0204639C(struct UnkStruct_0204639C * r5, UnkStruct_0204639C_cb r6, u32 * r7) +{ + struct UnkStruct_0204639C * ret = AllocFromHeapAtEnd(32, sizeof(struct UnkStruct_0204639C)); + ret->unk0 = 0; + ret->unk4 = r6; + ret->unk8 = 0; + ret->unkC = r7; + ret->unk10 = NULL; + ret->unk14 = NULL; + ret->unk18 = r5; + ret->unk1C = AllocFromHeapAtEnd(32, 4); + return ret; +} + +void FUN_020463CC(struct UnkStruct_0204639C * r5, UnkStruct_0204639C_cb r4, u32 * r6) +{ + if (r5->unk10 != NULL) + ErrorHandling(); + r5->unk10 = FUN_0204639C(r5, r4, r6); +} + +void FUN_020463EC(struct UnkStruct_0204639C * r4, UnkStruct_0204639C_cb r1, u32 * r2) +{ + r4->unk4 = r1; + r4->unk8 = 0; + r4->unkC = r2; + if (r4->unk14 != NULL || r4->unk14 != NULL) + { + FreeToHeap(r4->unk14); + r4->unk10 = NULL; + r4->unk14 = NULL; + } +} + +void FUN_0204640C(struct UnkStruct_0204639C * r4, UnkStruct_0204639C_cb r1, u32 * r2) +{ + struct UnkStruct_0204639C * r0 = FUN_0204639C(r4->unk18, r1, r2); + r0->unk0 = r4; + r4->unk18->unk10 = r0; +} + +BOOL FUN_02046420(struct UnkStruct_0204639C * r5) +{ + if (r5->unk10 == NULL) + return FALSE; + while (r5->unk10->unk4(r5->unk10) == TRUE) + { + struct UnkStruct_0204639C * r4 = r5->unk10->unk0; + if (r5->unk10->unk14 != NULL) + FreeToHeap(r5->unk10->unk14); + FreeToHeap(r5->unk10->unk1C); + FreeToHeap(r5->unk10); + r5->unk10 = r4; + if (r4 == NULL) + return TRUE; + } + return FALSE; +} + +BOOL FUN_0204646C(struct UnkStruct_0204639C * r0) +{ + return (r0->unk10 != NULL); +} + +BOOL FUN_0204647C(void * r4) +{ + return (FUN_0203739C(r4) || FUN_020373C4(r4)); +} + +void FUN_0204649C(void * r0) +{ + LoadOverlay_MODULE_05(r0); +} + +BOOL FUN_020464A4(void * r0) +{ + return (FUN_020373AC(r0) != FALSE); +} + +BOOL FUN_020464B8(struct UnkStruct_0204639C * r4) +{ + struct UnkStruct_0204639C * r5 = FUN_02046528(r4); + u32 * r4_2 = FUN_0204652C(r4); + switch (r4_2[0]) + { + case 0: + FUN_020373D4(r5, r4_2[1], r4_2[2]); + r4_2[0]++; + break; + case 1: + if (!FUN_0204647C(r5)) + { + FreeToHeap(r4_2); + return TRUE; + } + break; + } + return FALSE; +} + +void FUN_02046500(struct UnkStruct_0204639C * r6, u32 r5, u32 r4) +{ + u32 * r2 = AllocFromHeapAtEnd(32, 3 * sizeof(u32)); + r2[0] = 0; + r2[1] = r5; + r2[2] = r4; + FUN_0204640C(r6, FUN_020464B8, r2); +} + +struct UnkStruct_0204639C * FUN_02046528(struct UnkStruct_0204639C * r0) +{ + return r0->unk18; +} + +u32 * FUN_0204652C(struct UnkStruct_0204639C * r0) +{ + return r0->unkC; +} + +u32 * FUN_02046530(struct UnkStruct_0204639C * r0) +{ + return &r0->unk8; +} + +u32 FUN_02046534(struct UnkStruct_0204639C * r0) +{ + return *r0->unk1C; +} diff --git a/include/script.h b/include/script.h index 0a69f7dd..87ac778b 100644 --- a/include/script.h +++ b/include/script.h @@ -20,6 +20,9 @@ struct ScriptContext ScrCmdFunc *cmdTableEnd;
u32 data[4];
u32 unk74;
+ u32 unk78;
+ u32 unk7C;
+ void * unk80;
};
#define ScriptReadByte(ctx) (*(ctx->scriptPtr++))
diff --git a/include/unk_0204639C.h b/include/unk_0204639C.h new file mode 100644 index 00000000..cff2241f --- /dev/null +++ b/include/unk_0204639C.h @@ -0,0 +1,42 @@ +#ifndef GUARD_UNK_0204639C_H +#define GUARD_UNK_0204639C_H + +struct UnkStruct_0204639C; + +typedef BOOL (*UnkStruct_0204639C_cb)(struct UnkStruct_0204639C * ); + +struct UnkStruct_0204639C +{ + struct UnkStruct_0204639C * unk0; + UnkStruct_0204639C_cb unk4; + u32 unk8; + u32 * unkC; + struct UnkStruct_0204639C * unk10; + void * unk14; + struct UnkStruct_0204639C * unk18; + u32 * unk1C; +}; + +extern void LoadOverlay_MODULE_05(void *); +extern void FUN_020373D4(struct UnkStruct_0204639C *, u32, u32); +extern BOOL FUN_020373AC(void *); +extern BOOL FUN_0203739C(void *); +extern BOOL FUN_020373C4(void *); + +struct UnkStruct_0204639C * FUN_0204639C(struct UnkStruct_0204639C * r5, UnkStruct_0204639C_cb r6, u32 * r7); +void FUN_020463CC(struct UnkStruct_0204639C * r5, UnkStruct_0204639C_cb r4, u32 * r6); +void FUN_020463EC(struct UnkStruct_0204639C * r4, UnkStruct_0204639C_cb r1, u32 * r2); +void FUN_0204640C(struct UnkStruct_0204639C * r4, UnkStruct_0204639C_cb r1, u32 * r2); +BOOL FUN_02046420(struct UnkStruct_0204639C * r5); +BOOL FUN_0204646C(struct UnkStruct_0204639C * r0); +BOOL FUN_0204647C(void * r4); +void FUN_0204649C(void * r0); +BOOL FUN_020464A4(void * r0); +BOOL FUN_020464B8(struct UnkStruct_0204639C * r4); +void FUN_02046500(struct UnkStruct_0204639C * r6, u32 r5, u32 r4); +u32 * FUN_0204652C(struct UnkStruct_0204639C * r0); +u32 * FUN_02046530(struct UnkStruct_0204639C * r0); +u32 FUN_02046534(struct UnkStruct_0204639C * r0); +struct UnkStruct_0204639C * FUN_02046528(struct UnkStruct_0204639C *); + +#endif //GUARD_UNK_0204639C_H |