summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/asm/unk_0204639C.s253
-rw-r--r--arm9/global.inc9
-rw-r--r--arm9/modules/05/asm/module_05.s106
-rw-r--r--arm9/src/unk_0204639C.c134
-rw-r--r--include/script.h3
-rw-r--r--include/unk_0204639C.h42
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