summaryrefslogtreecommitdiff
path: root/arm9/modules
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/modules')
-rw-r--r--arm9/modules/05/asm/mod05_021E1374.s2
-rw-r--r--arm9/modules/05/asm/mod05_021E2B80.s62
-rw-r--r--arm9/modules/05/asm/mod05_021E7504.s316
-rw-r--r--arm9/modules/05/asm/mod05_021E779C.s621
-rw-r--r--arm9/modules/05/asm/mod05_021E7C00.s708
-rw-r--r--arm9/modules/05/asm/mod05_021E80F8.s303
-rw-r--r--arm9/modules/05/asm/mod05_021E8310.s409
-rw-r--r--arm9/modules/05/asm/module_05.s2607
-rw-r--r--arm9/modules/05/include/mod05_021E72FC.h23
-rw-r--r--arm9/modules/05/src/mod05_021E72FC.c160
-rw-r--r--arm9/modules/06/asm/module_06.s20
-rw-r--r--arm9/modules/11/asm/module_11_thumb2.s14
-rw-r--r--arm9/modules/12/asm/module_12.s16
-rw-r--r--arm9/modules/14/asm/module_14.s4
-rw-r--r--arm9/modules/17/asm/module_17.s10
-rw-r--r--arm9/modules/18/asm/module_18.s30
-rw-r--r--arm9/modules/21/asm/module_21.s733
-rw-r--r--arm9/modules/21/include/mod21_02254854.h36
-rw-r--r--arm9/modules/21/include/mod21_02254A6C.h38
-rw-r--r--arm9/modules/21/src/mod21_02254854.c199
-rw-r--r--arm9/modules/21/src/mod21_02254A6C.c187
-rw-r--r--arm9/modules/21/src/module_21_sinit.c13
-rw-r--r--arm9/modules/52/asm/module_52.s2
-rw-r--r--arm9/modules/53/asm/module_53.s2
-rw-r--r--arm9/modules/54/asm/module_54.s8
-rw-r--r--arm9/modules/55/asm/module_55.s8
-rw-r--r--arm9/modules/56/asm/module_56.s28
-rw-r--r--arm9/modules/58/asm/module_58.s4
-rw-r--r--arm9/modules/59/asm/mod59_021D74E0_asm.s (renamed from arm9/modules/59/asm/module_59.s)729
-rw-r--r--arm9/modules/59/asm/mod59_021D9868.s666
-rw-r--r--arm9/modules/59/include/mod59_021D74E0.h32
-rw-r--r--arm9/modules/59/src/mod59_021D74E0_src.c29
-rw-r--r--arm9/modules/60/asm/module_60.s28
-rw-r--r--arm9/modules/61/asm/module_61.s6
-rw-r--r--arm9/modules/64/asm/module_64.s6
-rw-r--r--arm9/modules/65/asm/module_65.s6
-rw-r--r--arm9/modules/71/asm/module_71.s6
-rw-r--r--arm9/modules/73/asm/module_73.s4
-rw-r--r--arm9/modules/75/asm/module_75.s6
-rw-r--r--arm9/modules/76/asm/module_76.s6
-rw-r--r--arm9/modules/77/asm/module_77.s8
-rw-r--r--arm9/modules/80/asm/module_80.s22
-rw-r--r--arm9/modules/81/asm/module_81.s4
-rw-r--r--arm9/modules/82/asm/module_82.s4
-rw-r--r--arm9/modules/83/asm/module_83.s8
45 files changed, 3896 insertions, 4237 deletions
diff --git a/arm9/modules/05/asm/mod05_021E1374.s b/arm9/modules/05/asm/mod05_021E1374.s
index e3bb69a4..df43ddb9 100644
--- a/arm9/modules/05/asm/mod05_021E1374.s
+++ b/arm9/modules/05/asm/mod05_021E1374.s
@@ -915,7 +915,7 @@ MOD05_021E1A30: ; 0x021E1A30
str r0, [sp, #0xc]
bl FUN_020395F4
str r0, [sp, #8]
- bl FUN_0203962C
+ bl Field_TrainerIsDoubleBattle
cmp r0, #0
bne _021E1A60
add sp, #0x10
diff --git a/arm9/modules/05/asm/mod05_021E2B80.s b/arm9/modules/05/asm/mod05_021E2B80.s
index 8aa39261..16e19ae0 100644
--- a/arm9/modules/05/asm/mod05_021E2B80.s
+++ b/arm9/modules/05/asm/mod05_021E2B80.s
@@ -42,7 +42,7 @@ MOD05_021E2BB8: ; 0x021E2BB8
push {r4, lr}
add r4, r0, #0
add r0, r1, #0
- bl MOD05_021E2D00
+ bl MOD05_ScriptContext_GetTextFrameDelay
strb r0, [r4]
mov r0, #0
strb r0, [r4, #1]
@@ -68,15 +68,15 @@ MOD05_021E2BD0: ; 0x021E2BD0
add r0, #0x80
ldr r0, [r0]
add r1, sp, #8
- bl MOD05_021E2D9C
+ bl MOD05_CreateMessageBox
add r0, sp, #8
add r1, r6, #0
add r2, r7, #0
- bl MOD05_021E2DD4
+ bl MOD05_ReadAndExpandMsgDataViaBuffer
cmp r4, #0
bne _021E2C10
add r0, r5, #0
- bl MOD05_021E2D00
+ bl MOD05_ScriptContext_GetTextFrameDelay
add r2, r0, #0
mov r0, #0
mov r1, #1
@@ -89,7 +89,7 @@ _021E2C16:
str r0, [sp]
ldr r3, [sp, #4]
add r0, sp, #8
- bl MOD05_021E2E40
+ bl MOD05_DrawFieldMessage
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
@@ -107,14 +107,14 @@ MOD05_ShowMessageInField: ; 0x021E2C24
add r5, #0x80
ldr r0, [r5]
add r1, sp, #0
- bl MOD05_021E2D9C
+ bl MOD05_CreateMessageBox
add r0, sp, #0
add r1, r4, #0
add r2, r6, #0
- bl MOD05_021E2DD4
+ bl MOD05_ReadAndExpandMsgDataViaBuffer
add r0, sp, #0
mov r1, #1
- bl MOD05_021E2E68
+ bl MOD05_AddTextPrinterParameterized
add sp, #0x18
pop {r4, r5, r6, pc}
@@ -134,7 +134,7 @@ MOD05_021E2C58: ; 0x021E2C58
add r0, #0x80
ldr r0, [r0]
add r1, sp, #4
- bl MOD05_021E2D9C
+ bl MOD05_CreateMessageBox
add r0, sp, #0x20
ldrh r0, [r0, #0x10]
add r1, r4, #0
@@ -142,13 +142,13 @@ MOD05_021E2C58: ; 0x021E2C58
str r0, [sp]
add r0, sp, #4
add r3, r7, #0
- bl MOD05_021E2DF0
+ bl MOD05_ExpandEasyChatMessage
add r0, sp, #0x20
ldrb r0, [r0, #0x14]
cmp r0, #0xff
beq _021E2CB0
add r0, r5, #0
- bl MOD05_021E2D00
+ bl MOD05_ScriptContext_GetTextFrameDelay
add r2, r0, #0
mov r0, #0
str r0, [sp]
@@ -156,13 +156,13 @@ MOD05_021E2C58: ; 0x021E2C58
ldrb r3, [r3, #0x14]
add r0, sp, #4
mov r1, #1
- bl MOD05_021E2E40
+ bl MOD05_DrawFieldMessage
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
_021E2CB0:
add r0, sp, #4
mov r1, #1
- bl MOD05_021E2E68
+ bl MOD05_AddTextPrinterParameterized
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
@@ -181,31 +181,31 @@ MOD05_021E2CBC: ; 0x021E2CBC
add r0, #0x80
ldr r0, [r0]
add r1, sp, #4
- bl MOD05_021E2D9C
+ bl MOD05_CreateMessageBox
ldr r1, [r5, #0x78]
add r0, sp, #4
add r2, r4, #0
- bl MOD05_021E2DD4
+ bl MOD05_ReadAndExpandMsgDataViaBuffer
add r0, r5, #0
- bl MOD05_021E2D00
+ bl MOD05_ScriptContext_GetTextFrameDelay
add r2, r0, #0
mov r0, #0
str r0, [sp]
add r0, sp, #4
mov r1, #1
add r3, r6, #0
- bl MOD05_021E2E40
+ bl MOD05_DrawFieldMessage
add sp, #0x1c
pop {r3, r4, r5, r6, pc}
- thumb_func_start MOD05_021E2D00
-MOD05_021E2D00: ; 0x021E2D00
+ thumb_func_start MOD05_ScriptContext_GetTextFrameDelay
+MOD05_ScriptContext_GetTextFrameDelay: ; 0x021E2D00
push {r3, lr}
add r0, #0x80
ldr r0, [r0]
ldr r0, [r0, #0xc]
bl Sav2_PlayerData_GetOptionsAddr
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
pop {r3, pc}
.balign 4, 0
@@ -272,8 +272,8 @@ MOD05_021E2D5C: ; 0x021E2D5C
str r0, [r4, #0x14]
pop {r4, r5, r6, pc}
- thumb_func_start MOD05_021E2D9C
-MOD05_021E2D9C: ; 0x021E2D9C
+ thumb_func_start MOD05_CreateMessageBox
+MOD05_CreateMessageBox: ; 0x021E2D9C
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
@@ -300,8 +300,8 @@ _021E2DC8:
pop {r3, r4, r5, pc}
.balign 4, 0
- thumb_func_start MOD05_021E2DD4
-MOD05_021E2DD4: ; 0x021E2DD4
+ thumb_func_start MOD05_ReadAndExpandMsgDataViaBuffer
+MOD05_ReadAndExpandMsgDataViaBuffer: ; 0x021E2DD4
push {r4, lr}
add r4, r0, #0
add r0, r1, #0
@@ -315,8 +315,8 @@ MOD05_021E2DD4: ; 0x021E2DD4
pop {r4, pc}
.balign 4, 0
- thumb_func_start MOD05_021E2DF0
-MOD05_021E2DF0: ; 0x021E2DF0
+ thumb_func_start MOD05_ExpandEasyChatMessage
+MOD05_ExpandEasyChatMessage: ; 0x021E2DF0
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
@@ -351,8 +351,8 @@ MOD05_021E2DF0: ; 0x021E2DF0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
- thumb_func_start MOD05_021E2E40
-MOD05_021E2E40: ; 0x021E2E40
+ thumb_func_start MOD05_DrawFieldMessage
+MOD05_DrawFieldMessage: ; 0x021E2E40
push {r4, r5, r6, lr}
sub sp, #8
add r4, r0, #0
@@ -367,14 +367,14 @@ MOD05_021E2E40: ; 0x021E2E40
ldr r1, [r4]
add r2, r6, #0
add r3, r5, #0
- bl FUN_02054690
+ bl DrawFieldMessage
ldr r1, [r4, #0x14]
strb r0, [r1]
add sp, #8
pop {r4, r5, r6, pc}
- thumb_func_start MOD05_021E2E68
-MOD05_021E2E68: ; 0x021E2E68
+ thumb_func_start MOD05_AddTextPrinterParameterized
+MOD05_AddTextPrinterParameterized: ; 0x021E2E68
push {r3, r4, lr}
sub sp, #0xc
mov r3, #0
diff --git a/arm9/modules/05/asm/mod05_021E7504.s b/arm9/modules/05/asm/mod05_021E7504.s
new file mode 100644
index 00000000..d7f960b2
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E7504.s
@@ -0,0 +1,316 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7504
+MOD05_021E7504: ; 0x021E7504
+ add r1, r0, #0
+ ldr r0, [r1, #0x10]
+ cmp r0, #3
+ bhi _021E7536
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E7518: ; jump table
+ .short _021E7520 - _021E7518 - 2 ; case 0
+ .short _021E752C - _021E7518 - 2 ; case 1
+ .short _021E7526 - _021E7518 - 2 ; case 2
+ .short _021E7532 - _021E7518 - 2 ; case 3
+_021E7520:
+ mov r0, #2
+ str r0, [r1, #0x10]
+ b _021E7536
+_021E7526:
+ mov r0, #1
+ str r0, [r1, #0x10]
+ b _021E7536
+_021E752C:
+ mov r0, #3
+ str r0, [r1, #0x10]
+ b _021E7536
+_021E7532:
+ mov r0, #0
+ str r0, [r1, #0x10]
+_021E7536:
+ ldr r0, [r1]
+ ldr r3, _021E7540 ; =FUN_02055304
+ ldr r0, [r0, #0x38]
+ ldr r1, [r1, #0x10]
+ bx r3
+ .balign 4, 0
+_021E7540: .word FUN_02055304
+
+ thumb_func_start MOD05_021E7544
+MOD05_021E7544: ; 0x021E7544
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r1, #0
+ add r7, r0, #0
+ ldr r0, [r5]
+ ldr r0, [r0, #0x38]
+ bl FUN_020553A0
+ add r6, r0, #0
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _021E7564
+ cmp r0, #1
+ beq _021E756E
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+_021E7564:
+ mov r0, #1
+ str r0, [r5, #8]
+ ldr r0, _021E760C ; =0x0000064F
+ bl FUN_020054C8
+_021E756E:
+ ldr r0, [r5, #0xc]
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ beq _021E7584
+ add r0, r5, #0
+ bl MOD05_021E7504
+_021E7584:
+ add r0, r6, #0
+ add r1, sp, #0x18
+ bl FUN_02058BA4
+ ldr r4, [r5, #0xc]
+ add r0, r4, #0
+ bl _dflt
+ str r0, [sp, #0x14]
+ lsl r0, r4, #0xb
+ str r1, [sp, #0x10]
+ bl _dflt
+ add r2, r0, #0
+ add r3, r1, #0
+ ldr r0, _021E7610 ; =0x9999999A
+ ldr r1, _021E7614 ; =0x40C19999
+ bl _dadd
+ add r2, r0, #0
+ add r3, r1, #0
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x10]
+ bl _dmul
+ bl _dfix
+ str r0, [sp, #0x1c]
+ add r0, r6, #0
+ add r1, sp, #0x18
+ bl FUN_02058BB4
+ ldr r0, [r5, #0xc]
+ add r0, r0, #1
+ str r0, [r5, #0xc]
+ cmp r0, #0x14
+ bne _021E75EA
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #2
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+_021E75EA:
+ ble _021E7606
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021E7606
+ ldr r0, [r5, #4]
+ mov r1, #1
+ str r1, [r0]
+ add r0, r5, #0
+ bl FreeToHeap
+ add r0, r7, #0
+ bl FUN_0200CAB4
+_021E7606:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E760C: .word 0x0000064F
+_021E7610: .word 0x9999999A
+_021E7614: .word 0x40C19999
+
+ thumb_func_start MOD05_021E7618
+MOD05_021E7618: ; 0x021E7618
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5]
+ ldr r0, [r0, #0x38]
+ bl FUN_020553A0
+ ldr r1, [r5, #8]
+ add r4, r0, #0
+ cmp r1, #0
+ beq _021E763C
+ cmp r1, #1
+ beq _021E7694
+ cmp r1, #2
+ beq _021E771C
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+_021E763C:
+ bl FUN_02058914
+ add r0, r4, #0
+ add r1, sp, #0x14
+ bl FUN_02058BA4
+ ldr r1, [r5, #0xc]
+ mov r0, #0x14
+ sub r6, r0, r1
+ add r0, r6, #0
+ bl _dflt
+ str r0, [sp, #0xc]
+ lsl r0, r6, #0xb
+ add r7, r1, #0
+ bl _dflt
+ add r2, r0, #0
+ add r3, r1, #0
+ ldr r0, _021E7744 ; =0x9999999A
+ ldr r1, _021E7748 ; =0x40C19999
+ bl _dadd
+ add r2, r0, #0
+ add r3, r1, #0
+ ldr r0, [sp, #0xc]
+ add r1, r7, #0
+ bl _dmul
+ bl _dfix
+ str r0, [sp, #0x18]
+ add r0, r4, #0
+ add r1, sp, #0x14
+ bl FUN_02058BB4
+ add r0, r4, #0
+ bl MOD05_021F1D8C
+ ldr r0, _021E774C ; =0x0000064F
+ bl FUN_020054C8
+ mov r0, #1
+ str r0, [r5, #8]
+_021E7694:
+ ldr r0, [r5, #0xc]
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ beq _021E76AA
+ add r0, r5, #0
+ bl MOD05_021E7504
+_021E76AA:
+ add r0, r4, #0
+ add r1, sp, #0x14
+ bl FUN_02058BA4
+ ldr r1, [r5, #0xc]
+ mov r0, #0x14
+ sub r6, r0, r1
+ add r0, r6, #0
+ bl _dflt
+ str r0, [sp, #0x10]
+ lsl r0, r6, #0xb
+ add r7, r1, #0
+ bl _dflt
+ add r2, r0, #0
+ add r3, r1, #0
+ ldr r0, _021E7744 ; =0x9999999A
+ ldr r1, _021E7748 ; =0x40C19999
+ bl _dadd
+ add r2, r0, #0
+ add r3, r1, #0
+ ldr r0, [sp, #0x10]
+ add r1, r7, #0
+ bl _dmul
+ bl _dfix
+ str r0, [sp, #0x18]
+ add r0, r4, #0
+ add r1, sp, #0x14
+ bl FUN_02058BB4
+ ldr r0, [r5, #0xc]
+ add r0, r0, #1
+ str r0, [r5, #0xc]
+ cmp r0, #2
+ bne _021E770E
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #4
+ str r1, [sp, #8]
+ add r1, r0, #0
+ add r2, r0, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+_021E770E:
+ ldr r0, [r5, #0xc]
+ cmp r0, #0x14
+ ble _021E7740
+ mov r0, #2
+ add sp, #0x20
+ str r0, [r5, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E771C:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021E7740
+ ldr r0, [r5]
+ mov r1, #1
+ ldr r0, [r0, #0x38]
+ bl FUN_02055304
+ ldr r0, [r5, #4]
+ mov r1, #1
+ str r1, [r0]
+ add r0, r5, #0
+ bl FreeToHeap
+ add r0, r6, #0
+ bl FUN_0200CAB4
+_021E7740:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E7744: .word 0x9999999A
+_021E7748: .word 0x40C19999
+_021E774C: .word 0x0000064F
+
+ thumb_func_start MOD05_021E7750
+MOD05_021E7750: ; 0x021E7750
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #4
+ mov r1, #0x14
+ add r7, r2, #0
+ bl AllocFromHeapAtEnd
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x14
+ bl MI_CpuFill8
+ str r5, [r4]
+ str r7, [r4, #4]
+ ldr r0, [r5, #0x38]
+ bl FUN_020552F8
+ str r0, [r4, #0x10]
+ cmp r6, #0
+ beq _021E7786
+ ldr r0, _021E7794 ; =MOD05_021E7544
+ add r1, r4, #0
+ mov r2, #0x64
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+_021E7786:
+ ldr r0, _021E7798 ; =MOD05_021E7618
+ add r1, r4, #0
+ mov r2, #0x64
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E7794: .word MOD05_021E7544
+_021E7798: .word MOD05_021E7618
diff --git a/arm9/modules/05/asm/mod05_021E779C.s b/arm9/modules/05/asm/mod05_021E779C.s
new file mode 100644
index 00000000..ad4118ff
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E779C.s
@@ -0,0 +1,621 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E779C
+MOD05_021E779C: ; 0x021E779C
+ push {r4, lr}
+ mov r2, #0
+ mov r1, #0x14
+ add r3, r2, #0
+ add r4, r0, #0
+ bl MOD05_021E4BE8
+ str r4, [r0, #0x10]
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E77B0
+MOD05_021E77B0: ; 0x021E77B0
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD05_021E78B4
+ add r0, r4, #0
+ bl MOD05_021E4C00
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E77C0
+MOD05_021E77C0: ; 0x021E77C0
+ ldr r1, [r0]
+ add r1, r1, #1
+ str r1, [r0]
+ bx lr
+
+ thumb_func_start MOD05_021E77C8
+MOD05_021E77C8: ; 0x021E77C8
+ push {r3, lr}
+ ldr r1, [r0]
+ sub r1, r1, #1
+ str r1, [r0]
+ bpl _021E77D6
+ bl ErrorHandling
+_021E77D6:
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021E77D8
+MOD05_021E77D8: ; 0x021E77D8
+ ldr r1, [r0, #4]
+ add r1, r1, #1
+ str r1, [r0, #4]
+ bx lr
+
+ thumb_func_start MOD05_021E77E0
+MOD05_021E77E0: ; 0x021E77E0
+ push {r3, lr}
+ ldr r1, [r0, #4]
+ sub r1, r1, #1
+ str r1, [r0, #4]
+ bpl _021E77EE
+ bl ErrorHandling
+_021E77EE:
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021E77F0
+MOD05_021E77F0: ; 0x021E77F0
+ push {r3, lr}
+ cmp r1, #0
+ bne _021E77FC
+ bl MOD05_021E77C0
+ pop {r3, pc}
+_021E77FC:
+ bl MOD05_021E77D8
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7804
+MOD05_021E7804: ; 0x021E7804
+ push {r3, lr}
+ cmp r1, #0
+ bne _021E7810
+ bl MOD05_021E77C8
+ pop {r3, pc}
+_021E7810:
+ bl MOD05_021E77E0
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7818
+MOD05_021E7818: ; 0x021E7818
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ bne _021E785C
+ mov r1, #1
+ str r1, [r4, #8]
+ ldr r0, [r4, #0x10]
+ mov r2, #0x55
+ bl MOD05_021E5078
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ mov r2, #0x75
+ bl MOD05_021E50AC
+ mov r1, #1
+ ldr r0, [r4, #0x10]
+ mov r2, #4
+ add r3, r1, #0
+ bl MOD05_021E50D4
+ mov r1, #1
+ str r1, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _021E7860 ; =UNK05_021F7854
+ add r2, r1, #0
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x10]
+ add r3, r1, #0
+ bl MOD05_021E4EFC
+_021E785C:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .balign 4, 0
+_021E7860: .word UNK05_021F7854
+
+ thumb_func_start MOD05_021E7864
+MOD05_021E7864: ; 0x021E7864
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ bne _021E78AC
+ mov r0, #1
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x10]
+ mov r1, #0xa
+ mov r2, #0x6c
+ bl MOD05_021E5078
+ ldr r0, [r4, #0x10]
+ mov r1, #0xa
+ mov r2, #0x75
+ bl MOD05_021E50AC
+ ldr r0, [r4, #0x10]
+ mov r1, #0xb
+ mov r2, #0xd
+ mov r3, #1
+ bl MOD05_021E50D4
+ mov r0, #0xb
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _021E78B0 ; =UNK05_021F7854
+ mov r2, #0xa
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x10]
+ mov r1, #0xc
+ add r3, r2, #0
+ bl MOD05_021E4EFC
+_021E78AC:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .balign 4, 0
+_021E78B0: .word UNK05_021F7854
+
+ thumb_func_start MOD05_021E78B4
+MOD05_021E78B4: ; 0x021E78B4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #1
+ bne _021E78E2
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl MOD05_021E50A0
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl MOD05_021E50C8
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl MOD05_021E5114
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl MOD05_021E506C
+_021E78E2:
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E78E4
+MOD05_021E78E4: ; 0x021E78E4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #1
+ bne _021E7912
+ mov r0, #0
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x10]
+ mov r1, #0xa
+ bl MOD05_021E50A0
+ ldr r0, [r4, #0x10]
+ mov r1, #0xa
+ bl MOD05_021E50C8
+ ldr r0, [r4, #0x10]
+ mov r1, #0xb
+ bl MOD05_021E5114
+ ldr r0, [r4, #0x10]
+ mov r1, #0xc
+ bl MOD05_021E506C
+_021E7912:
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E7914
+MOD05_021E7914: ; 0x021E7914
+ push {r3, lr}
+ ldr r1, [r0]
+ cmp r1, #0
+ bne _021E7920
+ bl MOD05_021E7818
+_021E7920:
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7924
+MOD05_021E7924: ; 0x021E7924
+ push {r3, lr}
+ ldr r1, [r0, #4]
+ cmp r1, #0
+ bne _021E7930
+ bl MOD05_021E7864
+_021E7930:
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7934
+MOD05_021E7934: ; 0x021E7934
+ push {r3, lr}
+ ldr r1, [r0]
+ cmp r1, #0
+ bne _021E7940
+ bl MOD05_021E78B4
+_021E7940:
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7944
+MOD05_021E7944: ; 0x021E7944
+ push {r3, lr}
+ ldr r1, [r0, #4]
+ cmp r1, #0
+ bne _021E7950
+ bl MOD05_021E78E4
+_021E7950:
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7954
+MOD05_021E7954: ; 0x021E7954
+ push {r3, lr}
+ cmp r1, #0
+ bne _021E7960
+ bl MOD05_021E7914
+ pop {r3, pc}
+_021E7960:
+ bl MOD05_021E7924
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7968
+MOD05_021E7968: ; 0x021E7968
+ push {r3, lr}
+ cmp r1, #0
+ bne _021E7974
+ bl MOD05_021E7934
+ pop {r3, pc}
+_021E7974:
+ bl MOD05_021E7944
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E797C
+MOD05_021E797C: ; 0x021E797C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ ldr r3, _021E7998 ; =UNK05_021F7824
+ add r4, sp, #0
+ ldr r5, [r3]
+ ldr r3, [r3, #4]
+ str r5, [sp]
+ str r3, [sp, #4]
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ bl MOD05_021E4EE4
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021E7998: .word UNK05_021F7824
+
+ thumb_func_start MOD05_021E799C
+MOD05_021E799C: ; 0x021E799C
+ push {r3, lr}
+ bl FUN_02064738
+ ldr r0, [r0, #0x14]
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E79A8
+MOD05_021E79A8: ; 0x021E79A8
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ bl FUN_0206475C
+ add r2, r4, #0
+ add r3, r0, #0
+ add r2, #0x30
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ mov r0, #6
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x38]
+ ldr r1, [r4, #0x30]
+ bl MOD05_021E7954
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_0206477C
+ ldr r0, [r4, #0x34]
+ ldr r1, [r4, #0x30]
+ add r2, sp, #0
+ bl MOD05_021E797C
+ str r0, [r4, #0x40]
+ ldr r0, [r4, #0x38]
+ ldr r1, [r4, #0x30]
+ bl MOD05_021E77F0
+ add r0, r5, #0
+ bl FUN_02064754
+ cmp r0, #1
+ bne _021E79FC
+ ldr r0, _021E7A04 ; =0x000005DD
+ bl FUN_020054C8
+_021E79FC:
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021E7A04: .word 0x000005DD
+
+ thumb_func_start MOD05_021E7A08
+MOD05_021E7A08: ; 0x021E7A08
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r1, sp, #0
+ add r5, r0, #0
+ bl FUN_0206477C
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021E7A24
+ cmp r0, #1
+ beq _021E7A46
+ cmp r0, #2
+ b _021E7A5E
+_021E7A24:
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r4, #0x28]
+ add r0, r1, r0
+ str r0, [r4, #0x1c]
+ beq _021E7A3A
+ mov r0, #2
+ ldr r1, [r4, #0x28]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [r4, #0x28]
+ b _021E7A5E
+_021E7A3A:
+ mov r0, #0
+ str r0, [r4, #0x28]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E7A5E
+_021E7A46:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ cmp r0, #0x1e
+ blt _021E7A5E
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r4, #4]
+ mov r0, #1
+ str r0, [r4, #0x14]
+_021E7A5E:
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_0206476C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7A6C
+MOD05_021E7A6C: ; 0x021E7A6C
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x40]
+ bl FUN_0201F744
+ ldr r0, [r4, #0x38]
+ ldr r1, [r4, #0x30]
+ bl MOD05_021E7804
+ ldr r0, [r4, #0x38]
+ ldr r1, [r4, #0x30]
+ bl MOD05_021E7968
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E7A88
+MOD05_021E7A88: ; 0x021E7A88
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ ldr r1, [r4, #0x10]
+ cmp r1, #1
+ beq _021E7ABA
+ add r1, sp, #0
+ bl FUN_0206477C
+ ldr r1, [sp]
+ ldr r0, [r4, #0x18]
+ add r0, r1, r0
+ str r0, [sp]
+ ldr r1, [sp, #4]
+ ldr r0, [r4, #0x1c]
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r1, [sp, #8]
+ ldr r0, [r4, #0x20]
+ add r0, r1, r0
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x40]
+ add r1, sp, #0
+ bl FUN_0201F7C8
+_021E7ABA:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7AC0
+MOD05_021E7AC0: ; 0x021E7AC0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ bl MOD05_021E4C24
+ add r4, r0, #0
+ mov r1, #0x16
+ str r6, [sp, #0x14]
+ str r4, [sp, #0x18]
+ bl MOD05_021E4C08
+ str r0, [sp, #0x1c]
+ add r0, r5, #0
+ add r1, sp, #8
+ str r5, [sp, #0x20]
+ bl FUN_02058B5C
+ add r0, r5, #0
+ bl FUN_02058744
+ add r1, r0, #1
+ add r0, sp, #0x14
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r1, _021E7B04 ; =UNK05_021F7840
+ add r0, r4, #0
+ add r2, sp, #8
+ add r3, r7, #0
+ bl MOD05_021E4DC4
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E7B04: .word UNK05_021F7840
+
+ thumb_func_start MOD05_021E7B08
+MOD05_021E7B08: ; 0x021E7B08
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ bl FUN_0206475C
+ add r2, r4, #0
+ add r3, r0, #0
+ add r2, #0x30
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r4, #0x3c]
+ bl FUN_02058448
+ str r0, [r4, #8]
+ ldr r0, [r4, #0x3c]
+ bl FUN_02058450
+ str r0, [r4, #0xc]
+ mov r0, #6
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x38]
+ ldr r1, [r4, #0x30]
+ bl MOD05_021E7954
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_0206477C
+ ldr r0, [r4, #0x34]
+ ldr r1, [r4, #0x30]
+ add r2, sp, #0
+ bl MOD05_021E797C
+ str r0, [r4, #0x40]
+ ldr r0, [r4, #0x38]
+ ldr r1, [r4, #0x30]
+ bl MOD05_021E77F0
+ add r0, r5, #0
+ bl FUN_02064754
+ cmp r0, #1
+ bne _021E7B6C
+ ldr r0, _021E7B74 ; =0x000005DD
+ bl FUN_020054C8
+_021E7B6C:
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021E7B74: .word 0x000005DD
+
+ thumb_func_start MOD05_021E7B78
+MOD05_021E7B78: ; 0x021E7B78
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ ldr r6, [r4, #0x3c]
+ ldr r1, [r4, #8]
+ add r5, r0, #0
+ ldr r2, [r4, #0xc]
+ add r0, r6, #0
+ bl FUN_020582A8
+ cmp r0, #0
+ bne _021E7B94
+ bl ErrorHandling
+_021E7B94:
+ add r0, r6, #0
+ add r1, sp, #0
+ bl MOD05_021F1E64
+ mov r0, #2
+ ldr r1, [sp, #4]
+ lsl r0, r0, #0x10
+ add r1, r1, r0
+ str r1, [sp, #4]
+ ldr r2, [sp, #8]
+ lsr r1, r0, #5
+ add r1, r2, r1
+ str r1, [sp, #8]
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _021E7BBC
+ cmp r1, #1
+ beq _021E7BDC
+ cmp r1, #2
+ b _021E7BF4
+_021E7BBC:
+ ldr r2, [r4, #0x1c]
+ ldr r1, [r4, #0x28]
+ add r1, r2, r1
+ str r1, [r4, #0x1c]
+ beq _021E7BD0
+ ldr r1, [r4, #0x28]
+ lsr r0, r0, #4
+ sub r0, r1, r0
+ str r0, [r4, #0x28]
+ b _021E7BF4
+_021E7BD0:
+ mov r0, #0
+ str r0, [r4, #0x28]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E7BF4
+_021E7BDC:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ cmp r0, #0x1e
+ blt _021E7BF4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r4, #4]
+ mov r0, #1
+ str r0, [r4, #0x14]
+_021E7BF4:
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_0206476C
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+
+ .section .rodata
+
+ .global UNK05_021F7824
+UNK05_021F7824: ; 0x021F7824
+ .word 0x00000001, 0x0000000C, 0x00000044, MOD05_021E79A8
+ .word MOD05_021E7A6C, MOD05_021E7A08, MOD05_021E7A88
+
+ .global UNK05_021F7840
+UNK05_021F7840: ; 0x021F7840
+ .word 0x00000044, MOD05_021E7B08, MOD05_021E7A6C, MOD05_021E7B78
+ .word MOD05_021E7A88
+
+ .global UNK05_021F7854
+UNK05_021F7854: ; 0x021F7854
+ .word 0x00000000, 0x00000001, 0x00000000, 0x00000000
+ .word 0x00000000, 0x00000002
diff --git a/arm9/modules/05/asm/mod05_021E7C00.s b/arm9/modules/05/asm/mod05_021E7C00.s
new file mode 100644
index 00000000..2e968e4f
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E7C00.s
@@ -0,0 +1,708 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7C00
+MOD05_021E7C00: ; 0x021E7C00
+ push {r4, lr}
+ mov r1, #0x46
+ lsl r1, r1, #6
+ bl AllocFromHeap
+ add r4, r0, #0
+ bl MOD05_021E7C1C
+ add r0, r4, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E7C14
+MOD05_021E7C14: ; 0x021E7C14
+ ldr r3, _021E7C18 ; =FreeToHeap
+ bx r3
+ .balign 4, 0
+_021E7C18: .word FreeToHeap
+
+ thumb_func_start MOD05_021E7C1C
+MOD05_021E7C1C: ; 0x021E7C1C
+ push {r3, r4, r5, r6, r7}
+ sub sp, #0xc
+ mov r4, #0
+ mov ip, r0
+ add r7, sp, #0
+ add r3, r4, #0
+_021E7C28:
+ str r3, [r7]
+ str r3, [r7, #4]
+ mov r0, #0x8c
+ add r1, r4, #0
+ mul r1, r0
+ mov r0, ip
+ add r2, r0, r1
+ add r5, r2, #0
+ str r3, [r7, #8]
+ mov r0, ip
+ str r3, [r0, r1]
+ str r3, [r2, #4]
+ str r3, [r2, #8]
+ str r3, [r2, #0xc]
+ add r6, r7, #0
+ ldmia r6!, {r0, r1}
+ add r5, #0x68
+ stmia r5!, {r0, r1}
+ ldr r0, [r6]
+ add r6, r7, #0
+ str r0, [r5]
+ add r5, r2, #0
+ ldmia r6!, {r0, r1}
+ add r5, #0x74
+ stmia r5!, {r0, r1}
+ ldr r0, [r6]
+ add r6, r7, #0
+ str r0, [r5]
+ add r5, r2, #0
+ ldmia r6!, {r0, r1}
+ add r5, #0x80
+ stmia r5!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r5]
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ str r3, [r2, #0x64]
+ cmp r4, #0x20
+ blo _021E7C28
+ add sp, #0xc
+ pop {r3, r4, r5, r6, r7}
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7C80
+MOD05_021E7C80: ; 0x021E7C80
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r5, #0x20
+ blt _021E7C90
+ bl ErrorHandling
+_021E7C90:
+ add r6, sp, #0
+ mov r3, #0
+ str r3, [r6]
+ str r3, [r6, #4]
+ mov r0, #0x8c
+ mul r0, r5
+ str r3, [r6, #8]
+ str r3, [r4, r0]
+ add r2, r4, r0
+ str r3, [r2, #4]
+ str r3, [r2, #8]
+ add r4, r2, #0
+ str r3, [r2, #0xc]
+ add r5, r6, #0
+ ldmia r5!, {r0, r1}
+ add r4, #0x68
+ stmia r4!, {r0, r1}
+ ldr r0, [r5]
+ add r5, r6, #0
+ str r0, [r4]
+ add r4, r2, #0
+ ldmia r5!, {r0, r1}
+ add r4, #0x74
+ stmia r4!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r4]
+ add r4, r2, #0
+ ldmia r6!, {r0, r1}
+ add r4, #0x80
+ stmia r4!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r4]
+ str r3, [r2, #0x64]
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7CD8
+MOD05_021E7CD8: ; 0x021E7CD8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ ldr r0, [sp, #0x28]
+ add r4, r1, #0
+ str r0, [sp, #0x28]
+ mov r0, #0
+ add r7, r2, #0
+ add r5, r3, #0
+ str r0, [sp, #4]
+ cmp r4, #0
+ beq _021E7D0E
+ mov r0, #4
+ bl AllocFromHeapAtEnd
+ str r0, [sp, #4]
+ ldr r2, [sp, #4]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl NARC_ReadFile
+ add r0, r4, #0
+ mov r1, #0x30
+ bl _u32_div_f
+ str r0, [sp]
+ b _021E7D10
+_021E7D0E:
+ str r0, [sp]
+_021E7D10:
+ ldr r4, [sp, #4]
+ mov r6, #0
+_021E7D14:
+ ldr r0, [sp]
+ cmp r6, r0
+ bhs _021E7D82
+ ldr r0, [r4]
+ add r2, r5, #0
+ str r0, [r5]
+ mov r0, #1
+ str r0, [r5, #4]
+ mov r0, #0
+ add r3, r4, #4
+ str r0, [r5, #0xc]
+ ldmia r3!, {r0, r1}
+ add r2, #0x68
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r3, r4, #0
+ str r0, [r2]
+ add r3, #0x10
+ add r2, r5, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x74
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r3, r4, #0
+ str r0, [r2]
+ add r3, #0x1c
+ add r2, r5, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x80
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r3, r5, #0
+ str r0, [r2]
+ add r2, r5, #0
+ ldr r0, [r5]
+ add r1, r7, #0
+ add r2, #0x10
+ add r3, #0x64
+ bl MOD05_021E7F10
+ ldr r1, [r5]
+ add r0, r7, #0
+ bl MOD05_021F4CE4
+ cmp r0, #0
+ bne _021E7D74
+ mov r0, #0
+ str r0, [r5]
+_021E7D74:
+ add r1, r5, #0
+ ldr r0, [r5]
+ ldr r2, [sp, #0x28]
+ add r1, #0x10
+ bl MOD05_021D9E80
+ b _021E7DBE
+_021E7D82:
+ mov r1, #0
+ add r0, sp, #8
+ str r1, [r0]
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ add r0, r1, #0
+ str r0, [r5]
+ str r0, [r5, #4]
+ add r2, r5, #0
+ add r3, sp, #8
+ str r0, [r5, #0xc]
+ ldmia r3!, {r0, r1}
+ add r2, #0x68
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r3, sp, #8
+ str r0, [r2]
+ add r2, r5, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x74
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r3, sp, #8
+ str r0, [r2]
+ add r2, r5, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x80
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+_021E7DBE:
+ add r6, r6, #1
+ add r5, #0x8c
+ add r4, #0x30
+ cmp r6, #0x20
+ blt _021E7D14
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ beq _021E7DD2
+ bl FreeToHeap
+_021E7DD2:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7DD8
+MOD05_021E7DD8: ; 0x021E7DD8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x48
+ ldr r4, _021E7E94 ; =UNK05_021F7878
+ str r2, [sp, #0xc]
+ str r3, [sp, #0x10]
+ add r6, r0, #0
+ str r1, [sp, #8]
+ add r3, sp, #0x18
+ mov r2, #4
+_021E7DEA:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021E7DEA
+ ldr r0, [r4]
+ ldr r5, [sp, #0x60]
+ str r0, [r3]
+ mov r7, #0
+_021E7DFA:
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _021E7E86
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ bne _021E7E86
+ add r4, r5, #0
+ add r4, #0x68
+ ldmia r4!, {r0, r1}
+ add r3, sp, #0x3c
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r4]
+ str r0, [r3]
+ ldr r1, [sp, #0x3c]
+ ldr r0, [r6]
+ add r3, r5, #0
+ add r0, r1, r0
+ str r0, [sp, #0x3c]
+ ldr r1, [sp, #0x44]
+ ldr r0, [r6, #8]
+ add r3, #0x80
+ add r0, r1, r0
+ str r0, [sp, #0x44]
+ add r1, r2, #0
+ ldr r0, [r5, #0x64]
+ add r2, sp, #0x18
+ bl FUN_0201B6D0
+ cmp r0, #0
+ beq _021E7E86
+ ldr r0, [sp, #8]
+ bl MOD05_021F4C9C
+ add r4, r0, #0
+ ldr r0, [sp, #0xc]
+ cmp r0, #1
+ bne _021E7E50
+ ldr r0, [sp, #0x10]
+ ldr r1, [r5, #0x64]
+ ldr r2, _021E7E98 ; =0x00000F33
+ bl MOD05_021DBB8C
+_021E7E50:
+ ldr r0, [r5]
+ add r1, r4, #0
+ add r2, sp, #0x14
+ bl MOD05_021DB9D4
+ add r0, sp, #0x14
+ ldrh r0, [r0]
+ add r1, sp, #0x3c
+ cmp r0, #0
+ bne _021E7E74
+ add r0, r5, #0
+ add r3, r5, #0
+ add r0, #0x10
+ add r2, sp, #0x18
+ add r3, #0x80
+ bl FUN_0201B26C
+ b _021E7E86
+_021E7E74:
+ str r4, [sp]
+ ldr r0, [r5]
+ add r3, r5, #0
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x64]
+ add r2, sp, #0x18
+ add r3, #0x80
+ bl MOD05_021E7F34
+_021E7E86:
+ add r7, r7, #1
+ add r5, #0x8c
+ cmp r7, #0x20
+ blt _021E7DFA
+ add sp, #0x48
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E7E94: .word UNK05_021F7878
+_021E7E98: .word 0x00000F33
+
+ thumb_func_start MOD05_021E7E9C
+MOD05_021E7E9C: ; 0x021E7E9C
+ add r0, #0x74
+ bx lr
+
+ thumb_func_start MOD05_021E7EA0
+MOD05_021E7EA0: ; 0x021E7EA0
+ add r2, r1, #0
+ add r2, #0x68
+ add r3, r0, #0
+ ldmia r2!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r3]
+ bx lr
+
+ thumb_func_start MOD05_021E7EB0
+MOD05_021E7EB0: ; 0x021E7EB0
+ add r3, r1, #0
+ add r2, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x68
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ bx lr
+
+ thumb_func_start MOD05_021E7EC0
+MOD05_021E7EC0: ; 0x021E7EC0
+ str r1, [r0, #8]
+ bx lr
+
+ thumb_func_start MOD05_021E7EC4
+MOD05_021E7EC4: ; 0x021E7EC4
+ ldr r0, [r0]
+ bx lr
+
+ thumb_func_start MOD05_021E7EC8
+MOD05_021E7EC8: ; 0x021E7EC8
+ add r0, #0x10
+ bx lr
+
+ thumb_func_start MOD05_021E7ECC
+MOD05_021E7ECC: ; 0x021E7ECC
+ ldr r0, [r0, #0x64]
+ bx lr
+
+ thumb_func_start MOD05_021E7ED0
+MOD05_021E7ED0: ; 0x021E7ED0
+ mov r2, #0x8c
+ mul r2, r1
+ add r0, r0, r2
+ bx lr
+
+ thumb_func_start MOD05_021E7ED8
+MOD05_021E7ED8: ; 0x021E7ED8
+ mov r3, #0
+_021E7EDA:
+ ldr r2, [r0]
+ cmp r2, r1
+ beq _021E7EEA
+ add r3, r3, #1
+ add r0, #0x8c
+ cmp r3, #0x20
+ blt _021E7EDA
+ mov r0, #0
+_021E7EEA:
+ bx lr
+
+ thumb_func_start MOD05_021E7EEC
+MOD05_021E7EEC: ; 0x021E7EEC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ cmp r4, #0x20
+ blt _021E7EFA
+ bl ErrorHandling
+_021E7EFA:
+ mov r0, #0x8c
+ mul r0, r4
+ add r4, r5, r0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021E7F0A
+ bl ErrorHandling
+_021E7F0A:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7F10
+MOD05_021E7F10: ; 0x021E7F10
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ add r4, r3, #0
+ bl MOD05_021F4BD0
+ ldr r0, [r0]
+ bl FUN_020BC13C
+ ldrh r1, [r0, #0xe]
+ add r1, r0, r1
+ ldr r1, [r1, #0xc]
+ add r1, r0, r1
+ add r0, r5, #0
+ str r1, [r4]
+ bl FUN_020B80B4
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E7F34
+MOD05_021E7F34: ; 0x021E7F34
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r0, r1, #0
+ add r4, r2, #0
+ add r5, r3, #0
+ bl FUN_020B8474
+ ldr r1, _021E7FB4 ; =UNK_021CEDD4
+ add r0, r4, #0
+ bl MI_Copy36B
+ ldr r1, _021E7FB8 ; =UNK_021CED98
+ mov r0, #0xa4
+ ldr r2, [r1, #0x7c]
+ bic r2, r0
+ add r0, r5, #0
+ str r2, [r1, #0x7c]
+ bl FUN_020B844C
+ bl FUN_020B849C
+ add r2, sp, #0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ add r2, #2
+ add r3, sp, #0
+ bl MOD05_021DB9E0
+ add r0, sp, #0
+ ldrh r0, [r0]
+ ldr r1, [sp, #0x18]
+ bl MOD05_021DB9F8
+ add r6, r0, #0
+ add r0, sp, #0
+ ldrh r0, [r0, #2]
+ mov r5, #0xff
+ mov r4, #0
+ cmp r0, #0
+ ble _021E7FB0
+_021E7F84:
+ lsl r0, r4, #2
+ add r2, r6, r0
+ ldrh r0, [r6, r0]
+ cmp r5, r0
+ beq _021E7F96
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ mov r3, #1
+ b _021E7F98
+_021E7F96:
+ mov r3, #0
+_021E7F98:
+ ldrh r2, [r2, #2]
+ add r0, r7, #0
+ add r1, r5, #0
+ bl FUN_020BAFB8
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ add r0, sp, #0
+ ldrh r0, [r0, #2]
+ cmp r4, r0
+ blt _021E7F84
+_021E7FB0:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E7FB4: .word UNK_021CEDD4
+_021E7FB8: .word UNK_021CED98
+
+ thumb_func_start MOD05_021E7FBC
+MOD05_021E7FBC: ; 0x021E7FBC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r5, _021E8058 ; =UNK05_021F786C
+ add r6, r0, #0
+ add r7, r1, #0
+ ldmia r5!, {r0, r1}
+ add r4, sp, #4
+ stmia r4!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r4]
+ mov r4, #0
+ mov r0, #0x8c
+_021E7FD4:
+ add r1, r4, #0
+ mul r1, r0
+ add r5, r6, r1
+ ldr r1, [r5, #4]
+ cmp r1, #0
+ bne _021E8044
+ mov r0, #1
+ str r0, [r5, #4]
+ add r6, r5, #0
+ ldmia r3!, {r0, r1}
+ add r6, #0x68
+ stmia r6!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r6]
+ ldr r6, [sp, #0x28]
+ cmp r6, #0
+ beq _021E8008
+ mov r0, #1
+ str r0, [r5, #0xc]
+ add r3, r5, #0
+ ldmia r6!, {r0, r1}
+ add r3, #0x74
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ b _021E800C
+_021E8008:
+ mov r0, #0
+ str r0, [r5, #0xc]
+_021E800C:
+ add r6, sp, #4
+ add r3, r5, #0
+ ldmia r6!, {r0, r1}
+ add r3, #0x80
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r7, #0
+ str r0, [r3]
+ add r3, r5, #0
+ str r2, [r5]
+ add r0, r2, #0
+ add r2, r5, #0
+ add r2, #0x10
+ add r3, #0x64
+ bl MOD05_021E7F10
+ ldr r0, [sp, #0x2c]
+ mov r1, #0
+ str r0, [sp]
+ ldr r0, [r5]
+ add r5, #0x10
+ add r2, r1, #0
+ add r3, r5, #0
+ bl MOD05_021D9DC0
+ add sp, #0x10
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021E8044:
+ add r1, r4, #1
+ lsl r1, r1, #0x18
+ lsr r4, r1, #0x18
+ cmp r4, #0x20
+ blo _021E7FD4
+ bl ErrorHandling
+ mov r0, #0x20
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E8058: .word UNK05_021F786C
+
+ thumb_func_start MOD05_021E805C
+MOD05_021E805C: ; 0x021E805C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ ldr r4, _021E80F4 ; =UNK05_021F789C
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r3, sp, #0x14
+ mov r2, #4
+_021E806A:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021E806A
+ ldr r0, [r4]
+ mov r4, #0
+ str r0, [r3]
+ add r7, sp, #0x14
+_021E807A:
+ mov r0, #0x8c
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, [sp, #8]
+ add r5, r0, r1
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _021E80E4
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ bne _021E80E4
+ ldr r0, [sp, #0xc]
+ bl MOD05_021F4C9C
+ add r6, r0, #0
+ ldr r0, [r5]
+ add r1, r6, #0
+ add r2, sp, #0x10
+ bl MOD05_021DB9D4
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ beq _021E80B2
+ add r1, r5, #0
+ add r0, r7, #0
+ add r1, #0x74
+ bl FUN_0201CAA8
+_021E80B2:
+ add r0, sp, #0x10
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _021E80CE
+ add r0, r5, #0
+ add r1, r5, #0
+ add r5, #0x80
+ add r0, #0x10
+ add r1, #0x68
+ add r2, r7, #0
+ add r3, r5, #0
+ bl FUN_0201B26C
+ b _021E80E4
+_021E80CE:
+ str r6, [sp]
+ ldr r0, [r5]
+ add r1, r5, #0
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x64]
+ add r5, #0x80
+ add r1, #0x68
+ add r2, r7, #0
+ add r3, r5, #0
+ bl MOD05_021E7F34
+_021E80E4:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x20
+ blo _021E807A
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E80F4: .word UNK05_021F789C
+
+ .section .rodata
+
+ .global UNK05_021F786C
+UNK05_021F786C: ; 0x021F786C
+ .word 0x00001000, 0x00001000, 0x00001000
+
+ .global UNK05_021F7878
+UNK05_021F7878: ; 0x021F7878
+ .byte 0x00, 0x10, 0x00, 0x00 ;word
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
+
+ .global UNK05_021F789C
+UNK05_021F789C: ; 0x021F789C
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ;word
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
diff --git a/arm9/modules/05/asm/mod05_021E80F8.s b/arm9/modules/05/asm/mod05_021E80F8.s
new file mode 100644
index 00000000..82fd7a02
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E80F8.s
@@ -0,0 +1,303 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E80F8
+MOD05_021E80F8: ; 0x021E80F8
+ push {r3, lr}
+ mov r1, #0x14
+ bl AllocFromHeap
+ add r3, r0, #0
+ mov r2, #0x14
+ mov r1, #0
+_021E8106:
+ strb r1, [r3]
+ add r3, r3, #1
+ sub r2, r2, #1
+ bne _021E8106
+ pop {r3, pc}
+
+ thumb_func_start MOD05_021E8110
+MOD05_021E8110: ; 0x021E8110
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #0x13]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1f
+ beq _021E8120
+ bl FUN_02019178
+_021E8120:
+ add r0, r4, #0
+ bl FreeToHeap
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E8128
+MOD05_021E8128: ; 0x021E8128
+ strb r1, [r0, #0x12]
+ strh r2, [r0, #0x10]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E8130
+MOD05_021E8130: ; 0x021E8130
+ ldrb r3, [r0, #0x13]
+ mov r2, #0x7f
+ bic r3, r2
+ mov r2, #0x7f
+ and r1, r2
+ orr r1, r3
+ strb r1, [r0, #0x13]
+ bx lr
+
+ thumb_func_start MOD05_021E8140
+MOD05_021E8140: ; 0x021E8140
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E8144
+MOD05_021E8144: ; 0x021E8144
+ ldrb r0, [r0, #0x12]
+ bx lr
+
+ thumb_func_start MOD05_021E8148
+MOD05_021E8148: ; 0x021E8148
+ ldrb r0, [r0, #0x13]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x19
+ bne _021E8154
+ mov r0, #1
+ bx lr
+_021E8154:
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD05_021E8158
+MOD05_021E8158: ; 0x021E8158
+ push {r4, lr}
+ ldr r4, [r0, #0x60]
+ ldrb r1, [r4, #0x13]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x19
+ cmp r1, #4
+ bhi _021E81BA
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E8172: ; jump table
+ .short _021E81BA - _021E8172 - 2 ; case 0
+ .short _021E817C - _021E8172 - 2 ; case 1
+ .short _021E818A - _021E8172 - 2 ; case 2
+ .short _021E819C - _021E8172 - 2 ; case 3
+ .short _021E81AE - _021E8172 - 2 ; case 4
+_021E817C:
+ bl MOD05_021E81D0
+ ldrb r1, [r4, #0x13]
+ mov r0, #0x7f
+ bic r1, r0
+ strb r1, [r4, #0x13]
+ pop {r4, pc}
+_021E818A:
+ bl MOD05_021E82A0
+ cmp r0, #1
+ bne _021E81BA
+ ldrb r1, [r4, #0x13]
+ mov r0, #0x7f
+ bic r1, r0
+ strb r1, [r4, #0x13]
+ pop {r4, pc}
+_021E819C:
+ bl MOD05_021E8260
+ cmp r0, #1
+ bne _021E81BA
+ ldrb r1, [r4, #0x13]
+ mov r0, #0x7f
+ bic r1, r0
+ strb r1, [r4, #0x13]
+ pop {r4, pc}
+_021E81AE:
+ bl MOD05_021E820C
+ ldrb r1, [r4, #0x13]
+ mov r0, #0x7f
+ bic r1, r0
+ strb r1, [r4, #0x13]
+_021E81BA:
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E81BC
+MOD05_021E81BC: ; 0x021E81BC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x60]
+ bl MOD05_021E8130
+ add r0, r4, #0
+ bl MOD05_021E8158
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E81D0
+MOD05_021E81D0: ; 0x021E81D0
+ push {r4, lr}
+ mov r1, #3
+ add r4, r0, #0
+ add r3, r1, #0
+ ldr r0, [r4, #8]
+ add r2, r1, #0
+ sub r3, #0x33
+ bl FUN_020179E0
+ ldr r1, [r4, #0x60]
+ ldrb r0, [r1, #0x13]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bne _021E8200
+ ldrb r2, [r1, #0x12]
+ ldr r0, [r4, #8]
+ mov r3, #3
+ bl FUN_020546E0
+ ldr r2, [r4, #0x60]
+ mov r0, #0x80
+ ldrb r1, [r2, #0x13]
+ orr r0, r1
+ strb r0, [r2, #0x13]
+_021E8200:
+ ldr r0, [r4, #0x60]
+ ldrb r1, [r0, #0x12]
+ ldrh r2, [r0, #0x10]
+ bl FUN_02054744
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E820C
+MOD05_021E820C: ; 0x021E820C
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, [r4, #0x60]
+ ldrb r1, [r0, #0x13]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1f
+ beq _021E825A
+ bl FUN_02019178
+ mov r0, #0x12
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ mov r2, #0
+ ldr r0, [r4, #8]
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_02018540
+ ldr r0, [r4, #8]
+ mov r1, #3
+ bl FUN_02017CD0
+ mov r1, #3
+ ldr r0, [r4, #8]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ ldr r2, [r4, #0x60]
+ mov r0, #0x80
+ ldrb r1, [r2, #0x13]
+ bic r1, r0
+ strb r1, [r2, #0x13]
+_021E825A:
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E8260
+MOD05_021E8260: ; 0x021E8260
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ mov r1, #3
+ bl FUN_02017B54
+ cmp r0, #0
+ bne _021E8274
+ mov r0, #1
+ pop {r4, pc}
+_021E8274:
+ mov r1, #0x2f
+ mvn r1, r1
+ cmp r0, r1
+ ble _021E8280
+ cmp r0, #0
+ blt _021E828E
+_021E8280:
+ mov r1, #3
+ add r3, r1, #0
+ ldr r0, [r4, #8]
+ add r2, r1, #0
+ sub r3, #0x33
+ bl FUN_020179E0
+_021E828E:
+ ldr r0, [r4, #8]
+ mov r1, #3
+ mov r2, #4
+ mov r3, #0x10
+ bl FUN_020179E0
+ mov r0, #0
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E82A0
+MOD05_021E82A0: ; 0x021E82A0
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ mov r1, #3
+ bl FUN_02017B54
+ mov r1, #0x2f
+ mvn r1, r1
+ cmp r0, r1
+ bne _021E82EC
+ mov r0, #0x12
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ mov r2, #0
+ ldr r0, [r4, #8]
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_02018540
+ ldr r0, [r4, #8]
+ mov r1, #3
+ bl FUN_02017CD0
+ mov r1, #3
+ ldr r0, [r4, #8]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ add sp, #0x10
+ mov r0, #1
+ pop {r4, pc}
+_021E82EC:
+ ble _021E82F2
+ cmp r0, #0
+ blt _021E82FE
+_021E82F2:
+ mov r1, #3
+ ldr r0, [r4, #8]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+_021E82FE:
+ ldr r0, [r4, #8]
+ mov r1, #3
+ mov r2, #5
+ mov r3, #0x10
+ bl FUN_020179E0
+ mov r0, #0
+ add sp, #0x10
+ pop {r4, pc}
diff --git a/arm9/modules/05/asm/mod05_021E8310.s b/arm9/modules/05/asm/mod05_021E8310.s
new file mode 100644
index 00000000..e3a28a97
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E8310.s
@@ -0,0 +1,409 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E8310
+MOD05_021E8310: ; 0x021E8310
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, [r1, #0xc]
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_02034E30
+ bl FUN_02034DC0
+ add r6, r0, #0
+ add r0, r4, #0
+ bl Sav2_Pokedex_get
+ add r7, r0, #0
+ ldr r0, [r6]
+ bl FUN_02034824
+ str r0, [r5, #4]
+ add r0, r7, #0
+ bl Pokedex_GetSinnohDexFlag
+ cmp r0, #0
+ beq _021E8344
+ add r0, r7, #0
+ bl Pokedex_CountSeenMons
+ b _021E8346
+_021E8344:
+ mov r0, #0
+_021E8346:
+ str r0, [r5]
+ add r0, r4, #0
+ bl Sav2_PlayerData_GetProfileAddr
+ str r0, [r5, #8]
+ add r0, r4, #0
+ bl Sav2_PlayerData_GetIGTAddr
+ str r0, [r5, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E835C
+MOD05_021E835C: ; 0x021E835C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldr r2, [r4, #4]
+ mov r1, #0
+ add r5, r0, #0
+ bl BufferLandmarkName
+ ldr r2, [r4, #8]
+ add r0, r5, #0
+ mov r1, #1
+ bl BufferPlayersName
+ ldr r0, [r4, #8]
+ bl PlayerProfile_CountBadges
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ add r0, r5, #0
+ mov r1, #2
+ bl BufferIntegerAsString
+ ldr r2, [r4]
+ cmp r2, #0x64
+ blt _021E839A
+ mov r3, #3
+ mov r0, #0
+ b _021E83A8
+_021E839A:
+ cmp r2, #0xa
+ blt _021E83A4
+ mov r3, #3
+ mov r0, #1
+ b _021E83A8
+_021E83A4:
+ mov r3, #2
+ mov r0, #1
+_021E83A8:
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r1, #3
+ bl BufferIntegerAsString
+ ldr r0, [r4, #0xc]
+ bl GetIGTHours
+ add r2, r0, #0
+ cmp r2, #0x64
+ blt _021E83C8
+ mov r3, #3
+ mov r0, #0
+ b _021E83D6
+_021E83C8:
+ cmp r2, #0xa
+ blt _021E83D2
+ mov r3, #3
+ mov r0, #1
+ b _021E83D6
+_021E83D2:
+ mov r3, #2
+ mov r0, #1
+_021E83D6:
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r1, #4
+ bl BufferIntegerAsString
+ ldr r0, [r4, #0xc]
+ bl GetIGTMinutes
+ mov r3, #2
+ add r2, r0, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r1, #5
+ bl BufferIntegerAsString
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E8400
+MOD05_021E8400: ; 0x021E8400
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E840A
+ mov r0, #0xa
+ bx lr
+_021E840A:
+ mov r0, #8
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E8410
+MOD05_021E8410: ; 0x021E8410
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ mov r0, #0
+ mov r1, #1
+ bl FUN_02002E4C
+ add r4, r0, #0
+ mov r0, #0
+ mov r1, #3
+ bl FUN_02002E4C
+ add r0, r4, r0
+ str r0, [sp, #0x14]
+ mov r4, #0
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x18]
+ ldr r3, [r5, #4]
+ add r2, r4, #0
+ bl ReadMsgData_ExpandPlaceholders
+ add r1, r4, #0
+ add r6, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r5, #0x10]
+ add r2, r6, #0
+ add r3, r1, #0
+ bl AddTextPrinterParameterized
+ add r0, r6, #0
+ bl String_dtor
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, _021E84EC ; =UNK05_021F78D4
+ ldr r7, _021E84F0 ; =UNK05_021F78C4
+ str r0, [sp, #0xc]
+_021E8460:
+ ldr r0, [sp, #0xc]
+ ldr r1, [r0]
+ cmp r1, #3
+ bne _021E846E
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0
+ beq _021E84D6
+_021E846E:
+ ldr r0, [sp, #0x14]
+ add r4, r4, r0
+ ldr r0, [r5, #0x18]
+ bl NewString_ReadMsgData
+ add r6, r0, #0
+ mov r1, #0
+ str r4, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x10]
+ add r2, r6, #0
+ add r3, r1, #0
+ bl AddTextPrinterParameterized
+ add r0, r6, #0
+ bl String_dtor
+ sub r2, r7, #4
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x18]
+ ldr r2, [r2]
+ ldr r3, [r5, #4]
+ bl ReadMsgData_ExpandPlaceholders
+ add r6, r0, #0
+ mov r0, #0
+ mov r1, #2
+ bl FUN_02002E4C
+ add r2, r0, #0
+ mov r0, #0
+ add r1, r6, #0
+ bl FUN_02002E14
+ mov r1, #0x68
+ sub r3, r1, r0
+ str r4, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x10]
+ mov r1, #0
+ add r2, r6, #0
+ bl AddTextPrinterParameterized
+ add r0, r6, #0
+ bl String_dtor
+_021E84D6:
+ ldr r0, [sp, #0xc]
+ add r7, r7, #4
+ add r0, r0, #4
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #5
+ blo _021E8460
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E84EC: .word UNK05_021F78D4
+_021E84F0: .word UNK05_021F78C4
+
+ thumb_func_start MOD05_021E84F4
+MOD05_021E84F4: ; 0x021E84F4
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #0x10
+ bl AllocFromHeap
+ str r0, [r4, #0x10]
+ mov r3, #1
+ str r3, [sp]
+ ldr r0, [r4, #0x2c]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _021E8564 ; =0x0000027F
+ str r0, [sp, #0x10]
+ ldrb r2, [r4, #8]
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ bl FUN_02019064
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ ldr r2, _021E8568 ; =0x000003D9
+ str r0, [sp, #4]
+ ldrb r1, [r4, #8]
+ ldr r0, [r4, #0xc]
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r0, #0
+ mov r1, #6
+ bl FUN_02002E4C
+ add r1, r0, #0
+ ldr r0, [r4, #0x10]
+ bl FUN_02019620
+ add r0, r4, #0
+ bl MOD05_021E8410
+ ldr r0, [r4, #0x10]
+ ldr r2, _021E8568 ; =0x000003D9
+ mov r1, #0
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .balign 4, 0
+_021E8564: .word 0x0000027F
+_021E8568: .word 0x000003D9
+
+ thumb_func_start MOD05_021E856C
+MOD05_021E856C: ; 0x021E856C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_0200CCF8
+ ldr r0, [r4, #0x10]
+ bl FUN_02019178
+ ldr r0, [r4, #0x10]
+ bl FreeToHeap
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E8588
+MOD05_021E8588: ; 0x021E8588
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #0x34
+ add r7, r2, #0
+ bl AllocFromHeap
+ add r4, r0, #0
+ str r6, [r4]
+ str r5, [r4, #4]
+ strb r7, [r4, #8]
+ ldr r0, [r6, #8]
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ bl ScrStrBufs_new
+ str r0, [r4, #0x14]
+ ldr r2, _021E85E0 ; =0x000001E3
+ mov r0, #1
+ mov r1, #0x1a
+ add r3, r5, #0
+ bl NewMsgDataFromNarc
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ ldr r1, [r4]
+ add r0, #0x1c
+ bl MOD05_021E8310
+ add r1, r4, #0
+ ldr r0, [r4, #0x14]
+ add r1, #0x1c
+ bl MOD05_021E835C
+ mov r0, #0xd
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD05_021E8400
+ str r0, [r4, #0x30]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E85E0: .word 0x000001E3
+
+ thumb_func_start MOD05_021E85E4
+MOD05_021E85E4: ; 0x021E85E4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ bl DestroyMsgData
+ ldr r0, [r4, #0x14]
+ bl ScrStrBufs_delete
+ add r0, r4, #0
+ bl FreeToHeap
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021E85FC
+MOD05_021E85FC: ; 0x021E85FC
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02034E48
+ add r0, r4, #0
+ mov r1, #4
+ mov r2, #0
+ bl MOD05_021EFA9C
+ ldr r0, [r4, #0x38]
+ bl FUN_02055320
+ ldr r1, [r4, #0x1c]
+ str r0, [r1, #8]
+ ldr r0, [r4, #0x38]
+ bl FUN_0205532C
+ ldr r1, [r4, #0x1c]
+ str r0, [r1, #0xc]
+ mov r1, #0
+ ldr r0, [r4, #0x1c]
+ mvn r1, r1
+ str r1, [r0, #4]
+ ldr r0, [r4, #0x38]
+ bl FUN_020552F8
+ ldr r1, [r4, #0x1c]
+ str r0, [r1, #0x10]
+ ldr r0, [r4, #0xc]
+ bl FUN_02022720
+ cmp r0, #2
+ bne _021E8642
+ mov r0, #1
+ pop {r4, pc}
+_021E8642:
+ mov r0, #0
+ pop {r4, pc}
+ .balign 4, 0
+
+ .section .rodata
+
+ .global UNK05_021F78C4
+UNK05_021F78C4: ; 0x021F78C4
+ .word 0x00000006, 0x00000007, 0x00000008, 0x00000000
+
+ .global UNK05_021F78D4
+UNK05_021F78D4: ; 0x021F78D4
+ .word 0x00000001, 0x00000002, 0x00000003, 0x00000004
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index d8ed3656..23f6ea7b 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -3,2564 +3,6 @@
.section .text
.balign 4, 0
- thumb_func_start MOD05_021E72FC
-MOD05_021E72FC: ; 0x021E72FC
- push {r4, r5, r6, lr}
- add r6, r1, #0
- add r5, r0, #0
- add r0, r6, #0
- bl FUN_020553A0
- bl FUN_02058720
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- add r0, r4, #0
- bl FUN_02054B30
- cmp r0, #1
- bne _021E731E
- mov r2, #3
- b _021E734C
-_021E731E:
- add r0, r4, #0
- bl FUN_02054B3C
- cmp r0, #1
- bne _021E732C
- mov r2, #2
- b _021E734C
-_021E732C:
- add r0, r4, #0
- bl FUN_02054B48
- cmp r0, #1
- bne _021E733A
- mov r2, #0
- b _021E734C
-_021E733A:
- add r0, r4, #0
- bl FUN_02054B54
- cmp r0, #1
- bne _021E7348
- mov r2, #1
- b _021E734C
-_021E7348:
- mov r0, #0
- pop {r4, r5, r6, pc}
-_021E734C:
- add r0, r5, #0
- add r1, r6, #0
- bl MOD05_021E7358
- mov r0, #1
- pop {r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E7358
-MOD05_021E7358: ; 0x021E7358
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- mov r0, #0x18
- add r6, r1, #0
- add r7, r2, #0
- bl MOD05_021E74D4
- add r4, r0, #0
- str r5, [r4, #0xc]
- str r6, [r4, #0x10]
- ldr r0, _021E7380 ; =0x00000658
- str r7, [r4]
- bl FUN_020054C8
- ldr r1, _021E7384 ; =MOD05_021E73B4
- add r0, r5, #0
- add r2, r4, #0
- bl FUN_020463CC
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E7380: .word 0x00000658
-_021E7384: .word MOD05_021E73B4
-
- thumb_func_start MOD05_021E7388
-MOD05_021E7388: ; 0x021E7388
- cmp r0, #3
- bhi _021E73B0
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021E7398: ; jump table
- .short _021E73A0 - _021E7398 - 2 ; case 0
- .short _021E73A8 - _021E7398 - 2 ; case 1
- .short _021E73A4 - _021E7398 - 2 ; case 2
- .short _021E73AC - _021E7398 - 2 ; case 3
-_021E73A0:
- mov r0, #2
- bx lr
-_021E73A4:
- mov r0, #1
- bx lr
-_021E73A8:
- mov r0, #3
- bx lr
-_021E73AC:
- mov r0, #0
- bx lr
-_021E73B0:
- mov r0, #0
- bx lr
-
- thumb_func_start MOD05_021E73B4
-MOD05_021E73B4: ; 0x021E73B4
- push {r4, r5, r6, lr}
- bl FUN_0204652C
- add r4, r0, #0
- ldr r0, [r4, #0x10]
- bl FUN_020553A0
- add r6, r0, #0
- bl FUN_02058720
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- ldr r0, [r4, #8]
- cmp r0, #0
- beq _021E73DC
- cmp r0, #1
- beq _021E73EE
- cmp r0, #2
- beq _021E741C
- b _021E74CA
-_021E73DC:
- mov r1, #1
- add r0, r6, #0
- lsl r1, r1, #8
- bl FUN_02058410
- ldr r0, [r4, #8]
- add r0, r0, #1
- str r0, [r4, #8]
- b _021E74CA
-_021E73EE:
- ldr r0, [r4, #0x10]
- bl FUN_02057254
- cmp r0, #0
- beq _021E74CA
- ldr r0, [r4]
- mov r1, #0xc
- bl FUN_0205AFDC
- add r1, r0, #0
- ldr r0, [r4, #0x10]
- bl FUN_02057260
- ldr r0, [r4, #0x10]
- ldr r1, [r4]
- bl FUN_02055304
- ldr r0, [r4, #8]
- add r0, r0, #1
- str r0, [r4, #8]
- mov r0, #7
- str r0, [r4, #4]
- b _021E74CA
-_021E741C:
- ldr r0, [r4, #4]
- cmp r0, #2
- beq _021E742A
- cmp r0, #4
- beq _021E742A
- cmp r0, #6
- bne _021E743A
-_021E742A:
- ldr r0, [r4]
- bl MOD05_021E7388
- str r0, [r4]
- ldr r0, [r4, #0x10]
- ldr r1, [r4]
- bl FUN_02055304
-_021E743A:
- ldr r0, [r4, #4]
- sub r0, r0, #1
- str r0, [r4, #4]
- bne _021E74CA
- add r0, r5, #0
- bl FUN_02054B30
- cmp r0, #1
- bne _021E7452
- mov r0, #3
- str r0, [r4]
- b _021E748A
-_021E7452:
- add r0, r5, #0
- bl FUN_02054B3C
- cmp r0, #1
- bne _021E7462
- mov r0, #2
- str r0, [r4]
- b _021E748A
-_021E7462:
- add r0, r5, #0
- bl FUN_02054B48
- cmp r0, #1
- bne _021E7472
- mov r0, #0
- str r0, [r4]
- b _021E748A
-_021E7472:
- add r0, r5, #0
- bl FUN_02054B54
- cmp r0, #1
- bne _021E7482
- mov r0, #1
- str r0, [r4]
- b _021E748A
-_021E7482:
- ldr r0, [r4]
- bl MOD05_021E7388
- str r0, [r4]
-_021E748A:
- ldr r0, [r4, #0x10]
- ldr r2, [r4]
- add r1, r6, #0
- bl FUN_02056B74
- cmp r0, #0
- bne _021E749E
- mov r0, #1
- str r0, [r4, #8]
- b _021E74CA
-_021E749E:
- add r0, r6, #0
- mov r1, #0x80
- bl FUN_02058418
- mov r1, #1
- add r0, r6, #0
- lsl r1, r1, #8
- bl FUN_02058418
- ldr r0, [r4, #0x10]
- ldr r1, [r4]
- bl FUN_02055304
- add r0, r4, #0
- bl MOD05_021E74F8
- ldr r0, _021E74D0 ; =0x00000658
- mov r1, #0
- bl FUN_020054F0
- mov r0, #1
- pop {r4, r5, r6, pc}
-_021E74CA:
- mov r0, #0
- pop {r4, r5, r6, pc}
- nop
-_021E74D0: .word 0x00000658
-
- thumb_func_start MOD05_021E74D4
-MOD05_021E74D4: ; 0x021E74D4
- push {r3, r4, r5, lr}
- add r5, r0, #0
- mov r0, #4
- add r1, r5, #0
- bl AllocFromHeapAtEnd
- add r4, r0, #0
- bne _021E74E8
- bl ErrorHandling
-_021E74E8:
- add r0, r4, #0
- mov r1, #0
- add r2, r5, #0
- bl memset
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E74F8
-MOD05_021E74F8: ; 0x021E74F8
- ldr r3, _021E7500 ; =FUN_02016A8C
- add r1, r0, #0
- mov r0, #4
- bx r3
- .balign 4, 0
-_021E7500: .word FUN_02016A8C
-
- thumb_func_start MOD05_021E7504
-MOD05_021E7504: ; 0x021E7504
- add r1, r0, #0
- ldr r0, [r1, #0x10]
- cmp r0, #3
- bhi _021E7536
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021E7518: ; jump table
- .short _021E7520 - _021E7518 - 2 ; case 0
- .short _021E752C - _021E7518 - 2 ; case 1
- .short _021E7526 - _021E7518 - 2 ; case 2
- .short _021E7532 - _021E7518 - 2 ; case 3
-_021E7520:
- mov r0, #2
- str r0, [r1, #0x10]
- b _021E7536
-_021E7526:
- mov r0, #1
- str r0, [r1, #0x10]
- b _021E7536
-_021E752C:
- mov r0, #3
- str r0, [r1, #0x10]
- b _021E7536
-_021E7532:
- mov r0, #0
- str r0, [r1, #0x10]
-_021E7536:
- ldr r0, [r1]
- ldr r3, _021E7540 ; =FUN_02055304
- ldr r0, [r0, #0x38]
- ldr r1, [r1, #0x10]
- bx r3
- .balign 4, 0
-_021E7540: .word FUN_02055304
-
- thumb_func_start MOD05_021E7544
-MOD05_021E7544: ; 0x021E7544
- push {r4, r5, r6, r7, lr}
- sub sp, #0x24
- add r5, r1, #0
- add r7, r0, #0
- ldr r0, [r5]
- ldr r0, [r0, #0x38]
- bl FUN_020553A0
- add r6, r0, #0
- ldr r0, [r5, #8]
- cmp r0, #0
- beq _021E7564
- cmp r0, #1
- beq _021E756E
- add sp, #0x24
- pop {r4, r5, r6, r7, pc}
-_021E7564:
- mov r0, #1
- str r0, [r5, #8]
- ldr r0, _021E760C ; =0x0000064F
- bl FUN_020054C8
-_021E756E:
- ldr r0, [r5, #0xc]
- lsr r2, r0, #0x1f
- lsl r1, r0, #0x1f
- sub r1, r1, r2
- mov r0, #0x1f
- ror r1, r0
- add r0, r2, r1
- beq _021E7584
- add r0, r5, #0
- bl MOD05_021E7504
-_021E7584:
- add r0, r6, #0
- add r1, sp, #0x18
- bl FUN_02058BA4
- ldr r4, [r5, #0xc]
- add r0, r4, #0
- bl _dflt
- str r0, [sp, #0x14]
- lsl r0, r4, #0xb
- str r1, [sp, #0x10]
- bl _dflt
- add r2, r0, #0
- add r3, r1, #0
- ldr r0, _021E7610 ; =0x9999999A
- ldr r1, _021E7614 ; =0x40C19999
- bl _dadd
- add r2, r0, #0
- add r3, r1, #0
- ldr r0, [sp, #0x14]
- ldr r1, [sp, #0x10]
- bl _dmul
- bl _dfix
- str r0, [sp, #0x1c]
- add r0, r6, #0
- add r1, sp, #0x18
- bl FUN_02058BB4
- ldr r0, [r5, #0xc]
- add r0, r0, #1
- str r0, [r5, #0xc]
- cmp r0, #0x14
- bne _021E75EA
- mov r0, #6
- str r0, [sp]
- mov r1, #0
- mov r0, #1
- str r0, [sp, #4]
- mov r0, #4
- str r0, [sp, #8]
- mov r0, #2
- add r2, r1, #0
- add r3, r1, #0
- bl FUN_0200E1D0
- add sp, #0x24
- pop {r4, r5, r6, r7, pc}
-_021E75EA:
- ble _021E7606
- bl FUN_0200E308
- cmp r0, #0
- beq _021E7606
- ldr r0, [r5, #4]
- mov r1, #1
- str r1, [r0]
- add r0, r5, #0
- bl FreeToHeap
- add r0, r7, #0
- bl FUN_0200CAB4
-_021E7606:
- add sp, #0x24
- pop {r4, r5, r6, r7, pc}
- nop
-_021E760C: .word 0x0000064F
-_021E7610: .word 0x9999999A
-_021E7614: .word 0x40C19999
-
- thumb_func_start MOD05_021E7618
-MOD05_021E7618: ; 0x021E7618
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x20
- add r5, r1, #0
- add r6, r0, #0
- ldr r0, [r5]
- ldr r0, [r0, #0x38]
- bl FUN_020553A0
- ldr r1, [r5, #8]
- add r4, r0, #0
- cmp r1, #0
- beq _021E763C
- cmp r1, #1
- beq _021E7694
- cmp r1, #2
- beq _021E771C
- add sp, #0x20
- pop {r3, r4, r5, r6, r7, pc}
-_021E763C:
- bl FUN_02058914
- add r0, r4, #0
- add r1, sp, #0x14
- bl FUN_02058BA4
- ldr r1, [r5, #0xc]
- mov r0, #0x14
- sub r6, r0, r1
- add r0, r6, #0
- bl _dflt
- str r0, [sp, #0xc]
- lsl r0, r6, #0xb
- add r7, r1, #0
- bl _dflt
- add r2, r0, #0
- add r3, r1, #0
- ldr r0, _021E7744 ; =0x9999999A
- ldr r1, _021E7748 ; =0x40C19999
- bl _dadd
- add r2, r0, #0
- add r3, r1, #0
- ldr r0, [sp, #0xc]
- add r1, r7, #0
- bl _dmul
- bl _dfix
- str r0, [sp, #0x18]
- add r0, r4, #0
- add r1, sp, #0x14
- bl FUN_02058BB4
- add r0, r4, #0
- bl MOD05_021F1D8C
- ldr r0, _021E774C ; =0x0000064F
- bl FUN_020054C8
- mov r0, #1
- str r0, [r5, #8]
-_021E7694:
- ldr r0, [r5, #0xc]
- lsr r2, r0, #0x1f
- lsl r1, r0, #0x1f
- sub r1, r1, r2
- mov r0, #0x1f
- ror r1, r0
- add r0, r2, r1
- beq _021E76AA
- add r0, r5, #0
- bl MOD05_021E7504
-_021E76AA:
- add r0, r4, #0
- add r1, sp, #0x14
- bl FUN_02058BA4
- ldr r1, [r5, #0xc]
- mov r0, #0x14
- sub r6, r0, r1
- add r0, r6, #0
- bl _dflt
- str r0, [sp, #0x10]
- lsl r0, r6, #0xb
- add r7, r1, #0
- bl _dflt
- add r2, r0, #0
- add r3, r1, #0
- ldr r0, _021E7744 ; =0x9999999A
- ldr r1, _021E7748 ; =0x40C19999
- bl _dadd
- add r2, r0, #0
- add r3, r1, #0
- ldr r0, [sp, #0x10]
- add r1, r7, #0
- bl _dmul
- bl _dfix
- str r0, [sp, #0x18]
- add r0, r4, #0
- add r1, sp, #0x14
- bl FUN_02058BB4
- ldr r0, [r5, #0xc]
- add r0, r0, #1
- str r0, [r5, #0xc]
- cmp r0, #2
- bne _021E770E
- mov r0, #6
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- mov r1, #4
- str r1, [sp, #8]
- add r1, r0, #0
- add r2, r0, #0
- mov r3, #0
- bl FUN_0200E1D0
-_021E770E:
- ldr r0, [r5, #0xc]
- cmp r0, #0x14
- ble _021E7740
- mov r0, #2
- add sp, #0x20
- str r0, [r5, #8]
- pop {r3, r4, r5, r6, r7, pc}
-_021E771C:
- bl FUN_0200E308
- cmp r0, #0
- beq _021E7740
- ldr r0, [r5]
- mov r1, #1
- ldr r0, [r0, #0x38]
- bl FUN_02055304
- ldr r0, [r5, #4]
- mov r1, #1
- str r1, [r0]
- add r0, r5, #0
- bl FreeToHeap
- add r0, r6, #0
- bl FUN_0200CAB4
-_021E7740:
- add sp, #0x20
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E7744: .word 0x9999999A
-_021E7748: .word 0x40C19999
-_021E774C: .word 0x0000064F
-
- thumb_func_start MOD05_021E7750
-MOD05_021E7750: ; 0x021E7750
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r6, r1, #0
- mov r0, #4
- mov r1, #0x14
- add r7, r2, #0
- bl AllocFromHeapAtEnd
- add r4, r0, #0
- mov r1, #0
- mov r2, #0x14
- bl MI_CpuFill8
- str r5, [r4]
- str r7, [r4, #4]
- ldr r0, [r5, #0x38]
- bl FUN_020552F8
- str r0, [r4, #0x10]
- cmp r6, #0
- beq _021E7786
- ldr r0, _021E7794 ; =MOD05_021E7544
- add r1, r4, #0
- mov r2, #0x64
- bl FUN_0200CA44
- pop {r3, r4, r5, r6, r7, pc}
-_021E7786:
- ldr r0, _021E7798 ; =MOD05_021E7618
- add r1, r4, #0
- mov r2, #0x64
- bl FUN_0200CA44
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E7794: .word MOD05_021E7544
-_021E7798: .word MOD05_021E7618
-
- thumb_func_start MOD05_021E779C
-MOD05_021E779C: ; 0x021E779C
- push {r4, lr}
- mov r2, #0
- mov r1, #0x14
- add r3, r2, #0
- add r4, r0, #0
- bl MOD05_021E4BE8
- str r4, [r0, #0x10]
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E77B0
-MOD05_021E77B0: ; 0x021E77B0
- push {r4, lr}
- add r4, r0, #0
- bl MOD05_021E78B4
- add r0, r4, #0
- bl MOD05_021E4C00
- pop {r4, pc}
-
- thumb_func_start MOD05_021E77C0
-MOD05_021E77C0: ; 0x021E77C0
- ldr r1, [r0]
- add r1, r1, #1
- str r1, [r0]
- bx lr
-
- thumb_func_start MOD05_021E77C8
-MOD05_021E77C8: ; 0x021E77C8
- push {r3, lr}
- ldr r1, [r0]
- sub r1, r1, #1
- str r1, [r0]
- bpl _021E77D6
- bl ErrorHandling
-_021E77D6:
- pop {r3, pc}
-
- thumb_func_start MOD05_021E77D8
-MOD05_021E77D8: ; 0x021E77D8
- ldr r1, [r0, #4]
- add r1, r1, #1
- str r1, [r0, #4]
- bx lr
-
- thumb_func_start MOD05_021E77E0
-MOD05_021E77E0: ; 0x021E77E0
- push {r3, lr}
- ldr r1, [r0, #4]
- sub r1, r1, #1
- str r1, [r0, #4]
- bpl _021E77EE
- bl ErrorHandling
-_021E77EE:
- pop {r3, pc}
-
- thumb_func_start MOD05_021E77F0
-MOD05_021E77F0: ; 0x021E77F0
- push {r3, lr}
- cmp r1, #0
- bne _021E77FC
- bl MOD05_021E77C0
- pop {r3, pc}
-_021E77FC:
- bl MOD05_021E77D8
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7804
-MOD05_021E7804: ; 0x021E7804
- push {r3, lr}
- cmp r1, #0
- bne _021E7810
- bl MOD05_021E77C8
- pop {r3, pc}
-_021E7810:
- bl MOD05_021E77E0
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7818
-MOD05_021E7818: ; 0x021E7818
- push {r3, r4, lr}
- sub sp, #0xc
- add r4, r0, #0
- ldr r0, [r4, #8]
- cmp r0, #0
- bne _021E785C
- mov r1, #1
- str r1, [r4, #8]
- ldr r0, [r4, #0x10]
- mov r2, #0x55
- bl MOD05_021E5078
- ldr r0, [r4, #0x10]
- mov r1, #1
- mov r2, #0x75
- bl MOD05_021E50AC
- mov r1, #1
- ldr r0, [r4, #0x10]
- mov r2, #4
- add r3, r1, #0
- bl MOD05_021E50D4
- mov r1, #1
- str r1, [sp]
- mov r0, #0
- str r0, [sp, #4]
- ldr r0, _021E7860 ; =UNK05_021F7854
- add r2, r1, #0
- str r0, [sp, #8]
- ldr r0, [r4, #0x10]
- add r3, r1, #0
- bl MOD05_021E4EFC
-_021E785C:
- add sp, #0xc
- pop {r3, r4, pc}
- .balign 4, 0
-_021E7860: .word UNK05_021F7854
-
- thumb_func_start MOD05_021E7864
-MOD05_021E7864: ; 0x021E7864
- push {r3, r4, lr}
- sub sp, #0xc
- add r4, r0, #0
- ldr r0, [r4, #0xc]
- cmp r0, #0
- bne _021E78AC
- mov r0, #1
- str r0, [r4, #0xc]
- ldr r0, [r4, #0x10]
- mov r1, #0xa
- mov r2, #0x6c
- bl MOD05_021E5078
- ldr r0, [r4, #0x10]
- mov r1, #0xa
- mov r2, #0x75
- bl MOD05_021E50AC
- ldr r0, [r4, #0x10]
- mov r1, #0xb
- mov r2, #0xd
- mov r3, #1
- bl MOD05_021E50D4
- mov r0, #0xb
- str r0, [sp]
- mov r0, #0
- str r0, [sp, #4]
- ldr r0, _021E78B0 ; =UNK05_021F7854
- mov r2, #0xa
- str r0, [sp, #8]
- ldr r0, [r4, #0x10]
- mov r1, #0xc
- add r3, r2, #0
- bl MOD05_021E4EFC
-_021E78AC:
- add sp, #0xc
- pop {r3, r4, pc}
- .balign 4, 0
-_021E78B0: .word UNK05_021F7854
-
- thumb_func_start MOD05_021E78B4
-MOD05_021E78B4: ; 0x021E78B4
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #8]
- cmp r0, #1
- bne _021E78E2
- mov r0, #0
- str r0, [r4, #8]
- ldr r0, [r4, #0x10]
- mov r1, #1
- bl MOD05_021E50A0
- ldr r0, [r4, #0x10]
- mov r1, #1
- bl MOD05_021E50C8
- ldr r0, [r4, #0x10]
- mov r1, #1
- bl MOD05_021E5114
- ldr r0, [r4, #0x10]
- mov r1, #1
- bl MOD05_021E506C
-_021E78E2:
- pop {r4, pc}
-
- thumb_func_start MOD05_021E78E4
-MOD05_021E78E4: ; 0x021E78E4
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0xc]
- cmp r0, #1
- bne _021E7912
- mov r0, #0
- str r0, [r4, #0xc]
- ldr r0, [r4, #0x10]
- mov r1, #0xa
- bl MOD05_021E50A0
- ldr r0, [r4, #0x10]
- mov r1, #0xa
- bl MOD05_021E50C8
- ldr r0, [r4, #0x10]
- mov r1, #0xb
- bl MOD05_021E5114
- ldr r0, [r4, #0x10]
- mov r1, #0xc
- bl MOD05_021E506C
-_021E7912:
- pop {r4, pc}
-
- thumb_func_start MOD05_021E7914
-MOD05_021E7914: ; 0x021E7914
- push {r3, lr}
- ldr r1, [r0]
- cmp r1, #0
- bne _021E7920
- bl MOD05_021E7818
-_021E7920:
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7924
-MOD05_021E7924: ; 0x021E7924
- push {r3, lr}
- ldr r1, [r0, #4]
- cmp r1, #0
- bne _021E7930
- bl MOD05_021E7864
-_021E7930:
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7934
-MOD05_021E7934: ; 0x021E7934
- push {r3, lr}
- ldr r1, [r0]
- cmp r1, #0
- bne _021E7940
- bl MOD05_021E78B4
-_021E7940:
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7944
-MOD05_021E7944: ; 0x021E7944
- push {r3, lr}
- ldr r1, [r0, #4]
- cmp r1, #0
- bne _021E7950
- bl MOD05_021E78E4
-_021E7950:
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7954
-MOD05_021E7954: ; 0x021E7954
- push {r3, lr}
- cmp r1, #0
- bne _021E7960
- bl MOD05_021E7914
- pop {r3, pc}
-_021E7960:
- bl MOD05_021E7924
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7968
-MOD05_021E7968: ; 0x021E7968
- push {r3, lr}
- cmp r1, #0
- bne _021E7974
- bl MOD05_021E7934
- pop {r3, pc}
-_021E7974:
- bl MOD05_021E7944
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E797C
-MOD05_021E797C: ; 0x021E797C
- push {r3, r4, r5, lr}
- sub sp, #8
- ldr r3, _021E7998 ; =UNK05_021F7824
- add r4, sp, #0
- ldr r5, [r3]
- ldr r3, [r3, #4]
- str r5, [sp]
- str r3, [sp, #4]
- lsl r1, r1, #2
- ldr r1, [r4, r1]
- bl MOD05_021E4EE4
- add sp, #8
- pop {r3, r4, r5, pc}
- .balign 4, 0
-_021E7998: .word UNK05_021F7824
-
- thumb_func_start MOD05_021E799C
-MOD05_021E799C: ; 0x021E799C
- push {r3, lr}
- bl FUN_02064738
- ldr r0, [r0, #0x14]
- pop {r3, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E79A8
-MOD05_021E79A8: ; 0x021E79A8
- push {r4, r5, lr}
- sub sp, #0xc
- add r4, r1, #0
- add r5, r0, #0
- bl FUN_0206475C
- add r2, r4, #0
- add r3, r0, #0
- add r2, #0x30
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- mov r0, #6
- lsl r0, r0, #0xc
- str r0, [r4, #0x28]
- ldr r0, [r4, #0x38]
- ldr r1, [r4, #0x30]
- bl MOD05_021E7954
- add r0, r5, #0
- add r1, sp, #0
- bl FUN_0206477C
- ldr r0, [r4, #0x34]
- ldr r1, [r4, #0x30]
- add r2, sp, #0
- bl MOD05_021E797C
- str r0, [r4, #0x40]
- ldr r0, [r4, #0x38]
- ldr r1, [r4, #0x30]
- bl MOD05_021E77F0
- add r0, r5, #0
- bl FUN_02064754
- cmp r0, #1
- bne _021E79FC
- ldr r0, _021E7A04 ; =0x000005DD
- bl FUN_020054C8
-_021E79FC:
- mov r0, #1
- add sp, #0xc
- pop {r4, r5, pc}
- nop
-_021E7A04: .word 0x000005DD
-
- thumb_func_start MOD05_021E7A08
-MOD05_021E7A08: ; 0x021E7A08
- push {r4, r5, lr}
- sub sp, #0xc
- add r4, r1, #0
- add r1, sp, #0
- add r5, r0, #0
- bl FUN_0206477C
- ldr r0, [r4]
- cmp r0, #0
- beq _021E7A24
- cmp r0, #1
- beq _021E7A46
- cmp r0, #2
- b _021E7A5E
-_021E7A24:
- ldr r1, [r4, #0x1c]
- ldr r0, [r4, #0x28]
- add r0, r1, r0
- str r0, [r4, #0x1c]
- beq _021E7A3A
- mov r0, #2
- ldr r1, [r4, #0x28]
- lsl r0, r0, #0xc
- sub r0, r1, r0
- str r0, [r4, #0x28]
- b _021E7A5E
-_021E7A3A:
- mov r0, #0
- str r0, [r4, #0x28]
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E7A5E
-_021E7A46:
- ldr r0, [r4, #4]
- add r0, r0, #1
- str r0, [r4, #4]
- cmp r0, #0x1e
- blt _021E7A5E
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- mov r0, #0
- str r0, [r4, #4]
- mov r0, #1
- str r0, [r4, #0x14]
-_021E7A5E:
- add r0, r5, #0
- add r1, sp, #0
- bl FUN_0206476C
- add sp, #0xc
- pop {r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7A6C
-MOD05_021E7A6C: ; 0x021E7A6C
- push {r4, lr}
- add r4, r1, #0
- ldr r0, [r4, #0x40]
- bl FUN_0201F744
- ldr r0, [r4, #0x38]
- ldr r1, [r4, #0x30]
- bl MOD05_021E7804
- ldr r0, [r4, #0x38]
- ldr r1, [r4, #0x30]
- bl MOD05_021E7968
- pop {r4, pc}
-
- thumb_func_start MOD05_021E7A88
-MOD05_021E7A88: ; 0x021E7A88
- push {r3, r4, lr}
- sub sp, #0xc
- add r4, r1, #0
- ldr r1, [r4, #0x10]
- cmp r1, #1
- beq _021E7ABA
- add r1, sp, #0
- bl FUN_0206477C
- ldr r1, [sp]
- ldr r0, [r4, #0x18]
- add r0, r1, r0
- str r0, [sp]
- ldr r1, [sp, #4]
- ldr r0, [r4, #0x1c]
- add r0, r1, r0
- str r0, [sp, #4]
- ldr r1, [sp, #8]
- ldr r0, [r4, #0x20]
- add r0, r1, r0
- str r0, [sp, #8]
- ldr r0, [r4, #0x40]
- add r1, sp, #0
- bl FUN_0201F7C8
-_021E7ABA:
- add sp, #0xc
- pop {r3, r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7AC0
-MOD05_021E7AC0: ; 0x021E7AC0
- push {r4, r5, r6, r7, lr}
- sub sp, #0x24
- add r5, r0, #0
- add r6, r1, #0
- add r7, r2, #0
- bl MOD05_021E4C24
- add r4, r0, #0
- mov r1, #0x16
- str r6, [sp, #0x14]
- str r4, [sp, #0x18]
- bl MOD05_021E4C08
- str r0, [sp, #0x1c]
- add r0, r5, #0
- add r1, sp, #8
- str r5, [sp, #0x20]
- bl FUN_02058B5C
- add r0, r5, #0
- bl FUN_02058744
- add r1, r0, #1
- add r0, sp, #0x14
- str r0, [sp]
- str r1, [sp, #4]
- ldr r1, _021E7B04 ; =UNK05_021F7840
- add r0, r4, #0
- add r2, sp, #8
- add r3, r7, #0
- bl MOD05_021E4DC4
- add sp, #0x24
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E7B04: .word UNK05_021F7840
-
- thumb_func_start MOD05_021E7B08
-MOD05_021E7B08: ; 0x021E7B08
- push {r4, r5, lr}
- sub sp, #0xc
- add r4, r1, #0
- add r5, r0, #0
- bl FUN_0206475C
- add r2, r4, #0
- add r3, r0, #0
- add r2, #0x30
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldmia r3!, {r0, r1}
- stmia r2!, {r0, r1}
- ldr r0, [r4, #0x3c]
- bl FUN_02058448
- str r0, [r4, #8]
- ldr r0, [r4, #0x3c]
- bl FUN_02058450
- str r0, [r4, #0xc]
- mov r0, #6
- lsl r0, r0, #0xc
- str r0, [r4, #0x28]
- ldr r0, [r4, #0x38]
- ldr r1, [r4, #0x30]
- bl MOD05_021E7954
- add r0, r5, #0
- add r1, sp, #0
- bl FUN_0206477C
- ldr r0, [r4, #0x34]
- ldr r1, [r4, #0x30]
- add r2, sp, #0
- bl MOD05_021E797C
- str r0, [r4, #0x40]
- ldr r0, [r4, #0x38]
- ldr r1, [r4, #0x30]
- bl MOD05_021E77F0
- add r0, r5, #0
- bl FUN_02064754
- cmp r0, #1
- bne _021E7B6C
- ldr r0, _021E7B74 ; =0x000005DD
- bl FUN_020054C8
-_021E7B6C:
- mov r0, #1
- add sp, #0xc
- pop {r4, r5, pc}
- nop
-_021E7B74: .word 0x000005DD
-
- thumb_func_start MOD05_021E7B78
-MOD05_021E7B78: ; 0x021E7B78
- push {r3, r4, r5, r6, lr}
- sub sp, #0xc
- add r4, r1, #0
- ldr r6, [r4, #0x3c]
- ldr r1, [r4, #8]
- add r5, r0, #0
- ldr r2, [r4, #0xc]
- add r0, r6, #0
- bl FUN_020582A8
- cmp r0, #0
- bne _021E7B94
- bl ErrorHandling
-_021E7B94:
- add r0, r6, #0
- add r1, sp, #0
- bl MOD05_021F1E64
- mov r0, #2
- ldr r1, [sp, #4]
- lsl r0, r0, #0x10
- add r1, r1, r0
- str r1, [sp, #4]
- ldr r2, [sp, #8]
- lsr r1, r0, #5
- add r1, r2, r1
- str r1, [sp, #8]
- ldr r1, [r4]
- cmp r1, #0
- beq _021E7BBC
- cmp r1, #1
- beq _021E7BDC
- cmp r1, #2
- b _021E7BF4
-_021E7BBC:
- ldr r2, [r4, #0x1c]
- ldr r1, [r4, #0x28]
- add r1, r2, r1
- str r1, [r4, #0x1c]
- beq _021E7BD0
- ldr r1, [r4, #0x28]
- lsr r0, r0, #4
- sub r0, r1, r0
- str r0, [r4, #0x28]
- b _021E7BF4
-_021E7BD0:
- mov r0, #0
- str r0, [r4, #0x28]
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- b _021E7BF4
-_021E7BDC:
- ldr r0, [r4, #4]
- add r0, r0, #1
- str r0, [r4, #4]
- cmp r0, #0x1e
- blt _021E7BF4
- ldr r0, [r4]
- add r0, r0, #1
- str r0, [r4]
- mov r0, #0
- str r0, [r4, #4]
- mov r0, #1
- str r0, [r4, #0x14]
-_021E7BF4:
- add r0, r5, #0
- add r1, sp, #0
- bl FUN_0206476C
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
-
- thumb_func_start MOD05_021E7C00
-MOD05_021E7C00: ; 0x021E7C00
- push {r4, lr}
- mov r1, #0x46
- lsl r1, r1, #6
- bl AllocFromHeap
- add r4, r0, #0
- bl MOD05_021E7C1C
- add r0, r4, #0
- pop {r4, pc}
-
- thumb_func_start MOD05_021E7C14
-MOD05_021E7C14: ; 0x021E7C14
- ldr r3, _021E7C18 ; =FreeToHeap
- bx r3
- .balign 4, 0
-_021E7C18: .word FreeToHeap
-
- thumb_func_start MOD05_021E7C1C
-MOD05_021E7C1C: ; 0x021E7C1C
- push {r3, r4, r5, r6, r7}
- sub sp, #0xc
- mov r4, #0
- mov ip, r0
- add r7, sp, #0
- add r3, r4, #0
-_021E7C28:
- str r3, [r7]
- str r3, [r7, #4]
- mov r0, #0x8c
- add r1, r4, #0
- mul r1, r0
- mov r0, ip
- add r2, r0, r1
- add r5, r2, #0
- str r3, [r7, #8]
- mov r0, ip
- str r3, [r0, r1]
- str r3, [r2, #4]
- str r3, [r2, #8]
- str r3, [r2, #0xc]
- add r6, r7, #0
- ldmia r6!, {r0, r1}
- add r5, #0x68
- stmia r5!, {r0, r1}
- ldr r0, [r6]
- add r6, r7, #0
- str r0, [r5]
- add r5, r2, #0
- ldmia r6!, {r0, r1}
- add r5, #0x74
- stmia r5!, {r0, r1}
- ldr r0, [r6]
- add r6, r7, #0
- str r0, [r5]
- add r5, r2, #0
- ldmia r6!, {r0, r1}
- add r5, #0x80
- stmia r5!, {r0, r1}
- ldr r0, [r6]
- str r0, [r5]
- add r0, r4, #1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- str r3, [r2, #0x64]
- cmp r4, #0x20
- blo _021E7C28
- add sp, #0xc
- pop {r3, r4, r5, r6, r7}
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021E7C80
-MOD05_021E7C80: ; 0x021E7C80
- push {r3, r4, r5, r6, lr}
- sub sp, #0xc
- add r5, r0, #0
- add r4, r1, #0
- cmp r5, #0x20
- blt _021E7C90
- bl ErrorHandling
-_021E7C90:
- add r6, sp, #0
- mov r3, #0
- str r3, [r6]
- str r3, [r6, #4]
- mov r0, #0x8c
- mul r0, r5
- str r3, [r6, #8]
- str r3, [r4, r0]
- add r2, r4, r0
- str r3, [r2, #4]
- str r3, [r2, #8]
- add r4, r2, #0
- str r3, [r2, #0xc]
- add r5, r6, #0
- ldmia r5!, {r0, r1}
- add r4, #0x68
- stmia r4!, {r0, r1}
- ldr r0, [r5]
- add r5, r6, #0
- str r0, [r4]
- add r4, r2, #0
- ldmia r5!, {r0, r1}
- add r4, #0x74
- stmia r4!, {r0, r1}
- ldr r0, [r5]
- str r0, [r4]
- add r4, r2, #0
- ldmia r6!, {r0, r1}
- add r4, #0x80
- stmia r4!, {r0, r1}
- ldr r0, [r6]
- str r0, [r4]
- str r3, [r2, #0x64]
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7CD8
-MOD05_021E7CD8: ; 0x021E7CD8
- push {r4, r5, r6, r7, lr}
- sub sp, #0x14
- add r6, r0, #0
- ldr r0, [sp, #0x28]
- add r4, r1, #0
- str r0, [sp, #0x28]
- mov r0, #0
- add r7, r2, #0
- add r5, r3, #0
- str r0, [sp, #4]
- cmp r4, #0
- beq _021E7D0E
- mov r0, #4
- bl AllocFromHeapAtEnd
- str r0, [sp, #4]
- ldr r2, [sp, #4]
- add r0, r6, #0
- add r1, r4, #0
- bl NARC_ReadFile
- add r0, r4, #0
- mov r1, #0x30
- bl _u32_div_f
- str r0, [sp]
- b _021E7D10
-_021E7D0E:
- str r0, [sp]
-_021E7D10:
- ldr r4, [sp, #4]
- mov r6, #0
-_021E7D14:
- ldr r0, [sp]
- cmp r6, r0
- bhs _021E7D82
- ldr r0, [r4]
- add r2, r5, #0
- str r0, [r5]
- mov r0, #1
- str r0, [r5, #4]
- mov r0, #0
- add r3, r4, #4
- str r0, [r5, #0xc]
- ldmia r3!, {r0, r1}
- add r2, #0x68
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r3, r4, #0
- str r0, [r2]
- add r3, #0x10
- add r2, r5, #0
- ldmia r3!, {r0, r1}
- add r2, #0x74
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r3, r4, #0
- str r0, [r2]
- add r3, #0x1c
- add r2, r5, #0
- ldmia r3!, {r0, r1}
- add r2, #0x80
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r3, r5, #0
- str r0, [r2]
- add r2, r5, #0
- ldr r0, [r5]
- add r1, r7, #0
- add r2, #0x10
- add r3, #0x64
- bl MOD05_021E7F10
- ldr r1, [r5]
- add r0, r7, #0
- bl MOD05_021F4CE4
- cmp r0, #0
- bne _021E7D74
- mov r0, #0
- str r0, [r5]
-_021E7D74:
- add r1, r5, #0
- ldr r0, [r5]
- ldr r2, [sp, #0x28]
- add r1, #0x10
- bl MOD05_021D9E80
- b _021E7DBE
-_021E7D82:
- mov r1, #0
- add r0, sp, #8
- str r1, [r0]
- str r1, [r0, #4]
- str r1, [r0, #8]
- add r0, r1, #0
- str r0, [r5]
- str r0, [r5, #4]
- add r2, r5, #0
- add r3, sp, #8
- str r0, [r5, #0xc]
- ldmia r3!, {r0, r1}
- add r2, #0x68
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r3, sp, #8
- str r0, [r2]
- add r2, r5, #0
- ldmia r3!, {r0, r1}
- add r2, #0x74
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- add r3, sp, #8
- str r0, [r2]
- add r2, r5, #0
- ldmia r3!, {r0, r1}
- add r2, #0x80
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- str r0, [r2]
-_021E7DBE:
- add r6, r6, #1
- add r5, #0x8c
- add r4, #0x30
- cmp r6, #0x20
- blt _021E7D14
- ldr r0, [sp, #4]
- cmp r0, #0
- beq _021E7DD2
- bl FreeToHeap
-_021E7DD2:
- add sp, #0x14
- pop {r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7DD8
-MOD05_021E7DD8: ; 0x021E7DD8
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x48
- ldr r4, _021E7E94 ; =UNK05_021F7878
- str r2, [sp, #0xc]
- str r3, [sp, #0x10]
- add r6, r0, #0
- str r1, [sp, #8]
- add r3, sp, #0x18
- mov r2, #4
-_021E7DEA:
- ldmia r4!, {r0, r1}
- stmia r3!, {r0, r1}
- sub r2, r2, #1
- bne _021E7DEA
- ldr r0, [r4]
- ldr r5, [sp, #0x60]
- str r0, [r3]
- mov r7, #0
-_021E7DFA:
- ldr r0, [r5, #4]
- cmp r0, #0
- beq _021E7E86
- ldr r0, [r5, #8]
- cmp r0, #0
- bne _021E7E86
- add r4, r5, #0
- add r4, #0x68
- ldmia r4!, {r0, r1}
- add r3, sp, #0x3c
- add r2, r3, #0
- stmia r3!, {r0, r1}
- ldr r0, [r4]
- str r0, [r3]
- ldr r1, [sp, #0x3c]
- ldr r0, [r6]
- add r3, r5, #0
- add r0, r1, r0
- str r0, [sp, #0x3c]
- ldr r1, [sp, #0x44]
- ldr r0, [r6, #8]
- add r3, #0x80
- add r0, r1, r0
- str r0, [sp, #0x44]
- add r1, r2, #0
- ldr r0, [r5, #0x64]
- add r2, sp, #0x18
- bl FUN_0201B6D0
- cmp r0, #0
- beq _021E7E86
- ldr r0, [sp, #8]
- bl MOD05_021F4C9C
- add r4, r0, #0
- ldr r0, [sp, #0xc]
- cmp r0, #1
- bne _021E7E50
- ldr r0, [sp, #0x10]
- ldr r1, [r5, #0x64]
- ldr r2, _021E7E98 ; =0x00000F33
- bl MOD05_021DBB8C
-_021E7E50:
- ldr r0, [r5]
- add r1, r4, #0
- add r2, sp, #0x14
- bl MOD05_021DB9D4
- add r0, sp, #0x14
- ldrh r0, [r0]
- add r1, sp, #0x3c
- cmp r0, #0
- bne _021E7E74
- add r0, r5, #0
- add r3, r5, #0
- add r0, #0x10
- add r2, sp, #0x18
- add r3, #0x80
- bl FUN_0201B26C
- b _021E7E86
-_021E7E74:
- str r4, [sp]
- ldr r0, [r5]
- add r3, r5, #0
- str r0, [sp, #4]
- ldr r0, [r5, #0x64]
- add r2, sp, #0x18
- add r3, #0x80
- bl MOD05_021E7F34
-_021E7E86:
- add r7, r7, #1
- add r5, #0x8c
- cmp r7, #0x20
- blt _021E7DFA
- add sp, #0x48
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E7E94: .word UNK05_021F7878
-_021E7E98: .word 0x00000F33
-
- thumb_func_start MOD05_021E7E9C
-MOD05_021E7E9C: ; 0x021E7E9C
- add r0, #0x74
- bx lr
-
- thumb_func_start MOD05_021E7EA0
-MOD05_021E7EA0: ; 0x021E7EA0
- add r2, r1, #0
- add r2, #0x68
- add r3, r0, #0
- ldmia r2!, {r0, r1}
- stmia r3!, {r0, r1}
- ldr r0, [r2]
- str r0, [r3]
- bx lr
-
- thumb_func_start MOD05_021E7EB0
-MOD05_021E7EB0: ; 0x021E7EB0
- add r3, r1, #0
- add r2, r0, #0
- ldmia r3!, {r0, r1}
- add r2, #0x68
- stmia r2!, {r0, r1}
- ldr r0, [r3]
- str r0, [r2]
- bx lr
-
- thumb_func_start MOD05_021E7EC0
-MOD05_021E7EC0: ; 0x021E7EC0
- str r1, [r0, #8]
- bx lr
-
- thumb_func_start MOD05_021E7EC4
-MOD05_021E7EC4: ; 0x021E7EC4
- ldr r0, [r0]
- bx lr
-
- thumb_func_start MOD05_021E7EC8
-MOD05_021E7EC8: ; 0x021E7EC8
- add r0, #0x10
- bx lr
-
- thumb_func_start MOD05_021E7ECC
-MOD05_021E7ECC: ; 0x021E7ECC
- ldr r0, [r0, #0x64]
- bx lr
-
- thumb_func_start MOD05_021E7ED0
-MOD05_021E7ED0: ; 0x021E7ED0
- mov r2, #0x8c
- mul r2, r1
- add r0, r0, r2
- bx lr
-
- thumb_func_start MOD05_021E7ED8
-MOD05_021E7ED8: ; 0x021E7ED8
- mov r3, #0
-_021E7EDA:
- ldr r2, [r0]
- cmp r2, r1
- beq _021E7EEA
- add r3, r3, #1
- add r0, #0x8c
- cmp r3, #0x20
- blt _021E7EDA
- mov r0, #0
-_021E7EEA:
- bx lr
-
- thumb_func_start MOD05_021E7EEC
-MOD05_021E7EEC: ; 0x021E7EEC
- push {r3, r4, r5, lr}
- add r4, r1, #0
- add r5, r0, #0
- cmp r4, #0x20
- blt _021E7EFA
- bl ErrorHandling
-_021E7EFA:
- mov r0, #0x8c
- mul r0, r4
- add r4, r5, r0
- ldr r0, [r4, #4]
- cmp r0, #0
- bne _021E7F0A
- bl ErrorHandling
-_021E7F0A:
- add r0, r4, #0
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7F10
-MOD05_021E7F10: ; 0x021E7F10
- push {r3, r4, r5, lr}
- add r5, r2, #0
- add r4, r3, #0
- bl MOD05_021F4BD0
- ldr r0, [r0]
- bl FUN_020BC13C
- ldrh r1, [r0, #0xe]
- add r1, r0, r1
- ldr r1, [r1, #0xc]
- add r1, r0, r1
- add r0, r5, #0
- str r1, [r4]
- bl FUN_020B80B4
- pop {r3, r4, r5, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E7F34
-MOD05_021E7F34: ; 0x021E7F34
- push {r3, r4, r5, r6, r7, lr}
- add r7, r0, #0
- add r0, r1, #0
- add r4, r2, #0
- add r5, r3, #0
- bl FUN_020B8474
- ldr r1, _021E7FB4 ; =UNK_021CEDD4
- add r0, r4, #0
- bl MI_Copy36B
- ldr r1, _021E7FB8 ; =UNK_021CED98
- mov r0, #0xa4
- ldr r2, [r1, #0x7c]
- bic r2, r0
- add r0, r5, #0
- str r2, [r1, #0x7c]
- bl FUN_020B844C
- bl FUN_020B849C
- add r2, sp, #0
- ldr r0, [sp, #0x1c]
- ldr r1, [sp, #0x18]
- add r2, #2
- add r3, sp, #0
- bl MOD05_021DB9E0
- add r0, sp, #0
- ldrh r0, [r0]
- ldr r1, [sp, #0x18]
- bl MOD05_021DB9F8
- add r6, r0, #0
- add r0, sp, #0
- ldrh r0, [r0, #2]
- mov r5, #0xff
- mov r4, #0
- cmp r0, #0
- ble _021E7FB0
-_021E7F84:
- lsl r0, r4, #2
- add r2, r6, r0
- ldrh r0, [r6, r0]
- cmp r5, r0
- beq _021E7F96
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- mov r3, #1
- b _021E7F98
-_021E7F96:
- mov r3, #0
-_021E7F98:
- ldrh r2, [r2, #2]
- add r0, r7, #0
- add r1, r5, #0
- bl FUN_020BAFB8
- add r0, r4, #1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- add r0, sp, #0
- ldrh r0, [r0, #2]
- cmp r4, r0
- blt _021E7F84
-_021E7FB0:
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E7FB4: .word UNK_021CEDD4
-_021E7FB8: .word UNK_021CED98
-
- thumb_func_start MOD05_021E7FBC
-MOD05_021E7FBC: ; 0x021E7FBC
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x10
- ldr r5, _021E8058 ; =UNK05_021F786C
- add r6, r0, #0
- add r7, r1, #0
- ldmia r5!, {r0, r1}
- add r4, sp, #4
- stmia r4!, {r0, r1}
- ldr r0, [r5]
- str r0, [r4]
- mov r4, #0
- mov r0, #0x8c
-_021E7FD4:
- add r1, r4, #0
- mul r1, r0
- add r5, r6, r1
- ldr r1, [r5, #4]
- cmp r1, #0
- bne _021E8044
- mov r0, #1
- str r0, [r5, #4]
- add r6, r5, #0
- ldmia r3!, {r0, r1}
- add r6, #0x68
- stmia r6!, {r0, r1}
- ldr r0, [r3]
- str r0, [r6]
- ldr r6, [sp, #0x28]
- cmp r6, #0
- beq _021E8008
- mov r0, #1
- str r0, [r5, #0xc]
- add r3, r5, #0
- ldmia r6!, {r0, r1}
- add r3, #0x74
- stmia r3!, {r0, r1}
- ldr r0, [r6]
- str r0, [r3]
- b _021E800C
-_021E8008:
- mov r0, #0
- str r0, [r5, #0xc]
-_021E800C:
- add r6, sp, #4
- add r3, r5, #0
- ldmia r6!, {r0, r1}
- add r3, #0x80
- stmia r3!, {r0, r1}
- ldr r0, [r6]
- add r1, r7, #0
- str r0, [r3]
- add r3, r5, #0
- str r2, [r5]
- add r0, r2, #0
- add r2, r5, #0
- add r2, #0x10
- add r3, #0x64
- bl MOD05_021E7F10
- ldr r0, [sp, #0x2c]
- mov r1, #0
- str r0, [sp]
- ldr r0, [r5]
- add r5, #0x10
- add r2, r1, #0
- add r3, r5, #0
- bl MOD05_021D9DC0
- add sp, #0x10
- add r0, r4, #0
- pop {r3, r4, r5, r6, r7, pc}
-_021E8044:
- add r1, r4, #1
- lsl r1, r1, #0x18
- lsr r4, r1, #0x18
- cmp r4, #0x20
- blo _021E7FD4
- bl ErrorHandling
- mov r0, #0x20
- add sp, #0x10
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E8058: .word UNK05_021F786C
-
- thumb_func_start MOD05_021E805C
-MOD05_021E805C: ; 0x021E805C
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x38
- ldr r4, _021E80F4 ; =UNK05_021F789C
- str r0, [sp, #8]
- str r1, [sp, #0xc]
- add r3, sp, #0x14
- mov r2, #4
-_021E806A:
- ldmia r4!, {r0, r1}
- stmia r3!, {r0, r1}
- sub r2, r2, #1
- bne _021E806A
- ldr r0, [r4]
- mov r4, #0
- str r0, [r3]
- add r7, sp, #0x14
-_021E807A:
- mov r0, #0x8c
- add r1, r4, #0
- mul r1, r0
- ldr r0, [sp, #8]
- add r5, r0, r1
- ldr r0, [r5, #4]
- cmp r0, #0
- beq _021E80E4
- ldr r0, [r5, #8]
- cmp r0, #0
- bne _021E80E4
- ldr r0, [sp, #0xc]
- bl MOD05_021F4C9C
- add r6, r0, #0
- ldr r0, [r5]
- add r1, r6, #0
- add r2, sp, #0x10
- bl MOD05_021DB9D4
- ldr r0, [r5, #0xc]
- cmp r0, #0
- beq _021E80B2
- add r1, r5, #0
- add r0, r7, #0
- add r1, #0x74
- bl FUN_0201CAA8
-_021E80B2:
- add r0, sp, #0x10
- ldrh r0, [r0]
- cmp r0, #0
- bne _021E80CE
- add r0, r5, #0
- add r1, r5, #0
- add r5, #0x80
- add r0, #0x10
- add r1, #0x68
- add r2, r7, #0
- add r3, r5, #0
- bl FUN_0201B26C
- b _021E80E4
-_021E80CE:
- str r6, [sp]
- ldr r0, [r5]
- add r1, r5, #0
- str r0, [sp, #4]
- ldr r0, [r5, #0x64]
- add r5, #0x80
- add r1, #0x68
- add r2, r7, #0
- add r3, r5, #0
- bl MOD05_021E7F34
-_021E80E4:
- add r0, r4, #1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #0x20
- blo _021E807A
- add sp, #0x38
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_021E80F4: .word UNK05_021F789C
-
- thumb_func_start MOD05_021E80F8
-MOD05_021E80F8: ; 0x021E80F8
- push {r3, lr}
- mov r1, #0x14
- bl AllocFromHeap
- add r3, r0, #0
- mov r2, #0x14
- mov r1, #0
-_021E8106:
- strb r1, [r3]
- add r3, r3, #1
- sub r2, r2, #1
- bne _021E8106
- pop {r3, pc}
-
- thumb_func_start MOD05_021E8110
-MOD05_021E8110: ; 0x021E8110
- push {r4, lr}
- add r4, r0, #0
- ldrb r1, [r4, #0x13]
- lsl r1, r1, #0x18
- lsr r1, r1, #0x1f
- beq _021E8120
- bl FUN_02019178
-_021E8120:
- add r0, r4, #0
- bl FreeToHeap
- pop {r4, pc}
-
- thumb_func_start MOD05_021E8128
-MOD05_021E8128: ; 0x021E8128
- strb r1, [r0, #0x12]
- strh r2, [r0, #0x10]
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021E8130
-MOD05_021E8130: ; 0x021E8130
- ldrb r3, [r0, #0x13]
- mov r2, #0x7f
- bic r3, r2
- mov r2, #0x7f
- and r1, r2
- orr r1, r3
- strb r1, [r0, #0x13]
- bx lr
-
- thumb_func_start MOD05_021E8140
-MOD05_021E8140: ; 0x021E8140
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021E8144
-MOD05_021E8144: ; 0x021E8144
- ldrb r0, [r0, #0x12]
- bx lr
-
- thumb_func_start MOD05_021E8148
-MOD05_021E8148: ; 0x021E8148
- ldrb r0, [r0, #0x13]
- lsl r0, r0, #0x19
- lsr r0, r0, #0x19
- bne _021E8154
- mov r0, #1
- bx lr
-_021E8154:
- mov r0, #0
- bx lr
-
- thumb_func_start MOD05_021E8158
-MOD05_021E8158: ; 0x021E8158
- push {r4, lr}
- ldr r4, [r0, #0x60]
- ldrb r1, [r4, #0x13]
- lsl r1, r1, #0x19
- lsr r1, r1, #0x19
- cmp r1, #4
- bhi _021E81BA
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021E8172: ; jump table
- .short _021E81BA - _021E8172 - 2 ; case 0
- .short _021E817C - _021E8172 - 2 ; case 1
- .short _021E818A - _021E8172 - 2 ; case 2
- .short _021E819C - _021E8172 - 2 ; case 3
- .short _021E81AE - _021E8172 - 2 ; case 4
-_021E817C:
- bl MOD05_021E81D0
- ldrb r1, [r4, #0x13]
- mov r0, #0x7f
- bic r1, r0
- strb r1, [r4, #0x13]
- pop {r4, pc}
-_021E818A:
- bl MOD05_021E82A0
- cmp r0, #1
- bne _021E81BA
- ldrb r1, [r4, #0x13]
- mov r0, #0x7f
- bic r1, r0
- strb r1, [r4, #0x13]
- pop {r4, pc}
-_021E819C:
- bl MOD05_021E8260
- cmp r0, #1
- bne _021E81BA
- ldrb r1, [r4, #0x13]
- mov r0, #0x7f
- bic r1, r0
- strb r1, [r4, #0x13]
- pop {r4, pc}
-_021E81AE:
- bl MOD05_021E820C
- ldrb r1, [r4, #0x13]
- mov r0, #0x7f
- bic r1, r0
- strb r1, [r4, #0x13]
-_021E81BA:
- pop {r4, pc}
-
- thumb_func_start MOD05_021E81BC
-MOD05_021E81BC: ; 0x021E81BC
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x60]
- bl MOD05_021E8130
- add r0, r4, #0
- bl MOD05_021E8158
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E81D0
-MOD05_021E81D0: ; 0x021E81D0
- push {r4, lr}
- mov r1, #3
- add r4, r0, #0
- add r3, r1, #0
- ldr r0, [r4, #8]
- add r2, r1, #0
- sub r3, #0x33
- bl FUN_020179E0
- ldr r1, [r4, #0x60]
- ldrb r0, [r1, #0x13]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x1f
- bne _021E8200
- ldrb r2, [r1, #0x12]
- ldr r0, [r4, #8]
- mov r3, #3
- bl FUN_020546E0
- ldr r2, [r4, #0x60]
- mov r0, #0x80
- ldrb r1, [r2, #0x13]
- orr r0, r1
- strb r0, [r2, #0x13]
-_021E8200:
- ldr r0, [r4, #0x60]
- ldrb r1, [r0, #0x12]
- ldrh r2, [r0, #0x10]
- bl FUN_02054744
- pop {r4, pc}
-
- thumb_func_start MOD05_021E820C
-MOD05_021E820C: ; 0x021E820C
- push {r4, lr}
- sub sp, #0x10
- add r4, r0, #0
- ldr r0, [r4, #0x60]
- ldrb r1, [r0, #0x13]
- lsl r1, r1, #0x18
- lsr r1, r1, #0x1f
- beq _021E825A
- bl FUN_02019178
- mov r0, #0x12
- str r0, [sp]
- mov r0, #0x20
- str r0, [sp, #4]
- mov r0, #6
- str r0, [sp, #8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- mov r2, #0
- ldr r0, [r4, #8]
- mov r1, #3
- add r3, r2, #0
- bl FUN_02018540
- ldr r0, [r4, #8]
- mov r1, #3
- bl FUN_02017CD0
- mov r1, #3
- ldr r0, [r4, #8]
- add r2, r1, #0
- mov r3, #0
- bl FUN_020179E0
- ldr r2, [r4, #0x60]
- mov r0, #0x80
- ldrb r1, [r2, #0x13]
- bic r1, r0
- strb r1, [r2, #0x13]
-_021E825A:
- add sp, #0x10
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E8260
-MOD05_021E8260: ; 0x021E8260
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #8]
- mov r1, #3
- bl FUN_02017B54
- cmp r0, #0
- bne _021E8274
- mov r0, #1
- pop {r4, pc}
-_021E8274:
- mov r1, #0x2f
- mvn r1, r1
- cmp r0, r1
- ble _021E8280
- cmp r0, #0
- blt _021E828E
-_021E8280:
- mov r1, #3
- add r3, r1, #0
- ldr r0, [r4, #8]
- add r2, r1, #0
- sub r3, #0x33
- bl FUN_020179E0
-_021E828E:
- ldr r0, [r4, #8]
- mov r1, #3
- mov r2, #4
- mov r3, #0x10
- bl FUN_020179E0
- mov r0, #0
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E82A0
-MOD05_021E82A0: ; 0x021E82A0
- push {r4, lr}
- sub sp, #0x10
- add r4, r0, #0
- ldr r0, [r4, #8]
- mov r1, #3
- bl FUN_02017B54
- mov r1, #0x2f
- mvn r1, r1
- cmp r0, r1
- bne _021E82EC
- mov r0, #0x12
- str r0, [sp]
- mov r0, #0x20
- str r0, [sp, #4]
- mov r0, #6
- str r0, [sp, #8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- mov r2, #0
- ldr r0, [r4, #8]
- mov r1, #3
- add r3, r2, #0
- bl FUN_02018540
- ldr r0, [r4, #8]
- mov r1, #3
- bl FUN_02017CD0
- mov r1, #3
- ldr r0, [r4, #8]
- add r2, r1, #0
- mov r3, #0
- bl FUN_020179E0
- add sp, #0x10
- mov r0, #1
- pop {r4, pc}
-_021E82EC:
- ble _021E82F2
- cmp r0, #0
- blt _021E82FE
-_021E82F2:
- mov r1, #3
- ldr r0, [r4, #8]
- add r2, r1, #0
- mov r3, #0
- bl FUN_020179E0
-_021E82FE:
- ldr r0, [r4, #8]
- mov r1, #3
- mov r2, #5
- mov r3, #0x10
- bl FUN_020179E0
- mov r0, #0
- add sp, #0x10
- pop {r4, pc}
-
- thumb_func_start MOD05_021E8310
-MOD05_021E8310: ; 0x021E8310
- push {r3, r4, r5, r6, r7, lr}
- ldr r4, [r1, #0xc]
- add r5, r0, #0
- add r0, r4, #0
- bl FUN_02034E30
- bl FUN_02034DC0
- add r6, r0, #0
- add r0, r4, #0
- bl Sav2_Pokedex_get
- add r7, r0, #0
- ldr r0, [r6]
- bl FUN_02034824
- str r0, [r5, #4]
- add r0, r7, #0
- bl Pokedex_GetSinnohDexFlag
- cmp r0, #0
- beq _021E8344
- add r0, r7, #0
- bl Pokedex_CountSeenMons
- b _021E8346
-_021E8344:
- mov r0, #0
-_021E8346:
- str r0, [r5]
- add r0, r4, #0
- bl Sav2_PlayerData_GetProfileAddr
- str r0, [r5, #8]
- add r0, r4, #0
- bl Sav2_PlayerData_GetIGTAddr
- str r0, [r5, #0xc]
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E835C
-MOD05_021E835C: ; 0x021E835C
- push {r3, r4, r5, lr}
- sub sp, #8
- add r4, r1, #0
- ldr r2, [r4, #4]
- mov r1, #0
- add r5, r0, #0
- bl BufferLandmarkName
- ldr r2, [r4, #8]
- add r0, r5, #0
- mov r1, #1
- bl BufferPlayersName
- ldr r0, [r4, #8]
- bl PlayerProfile_CountBadges
- add r2, r0, #0
- mov r0, #0
- str r0, [sp]
- mov r3, #1
- str r3, [sp, #4]
- add r0, r5, #0
- mov r1, #2
- bl BufferIntegerAsString
- ldr r2, [r4]
- cmp r2, #0x64
- blt _021E839A
- mov r3, #3
- mov r0, #0
- b _021E83A8
-_021E839A:
- cmp r2, #0xa
- blt _021E83A4
- mov r3, #3
- mov r0, #1
- b _021E83A8
-_021E83A4:
- mov r3, #2
- mov r0, #1
-_021E83A8:
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- add r0, r5, #0
- mov r1, #3
- bl BufferIntegerAsString
- ldr r0, [r4, #0xc]
- bl GetIGTHours
- add r2, r0, #0
- cmp r2, #0x64
- blt _021E83C8
- mov r3, #3
- mov r0, #0
- b _021E83D6
-_021E83C8:
- cmp r2, #0xa
- blt _021E83D2
- mov r3, #3
- mov r0, #1
- b _021E83D6
-_021E83D2:
- mov r3, #2
- mov r0, #1
-_021E83D6:
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- add r0, r5, #0
- mov r1, #4
- bl BufferIntegerAsString
- ldr r0, [r4, #0xc]
- bl GetIGTMinutes
- mov r3, #2
- add r2, r0, #0
- str r3, [sp]
- mov r0, #1
- str r0, [sp, #4]
- add r0, r5, #0
- mov r1, #5
- bl BufferIntegerAsString
- add sp, #8
- pop {r3, r4, r5, pc}
-
- thumb_func_start MOD05_021E8400
-MOD05_021E8400: ; 0x021E8400
- ldr r0, [r0]
- cmp r0, #0
- beq _021E840A
- mov r0, #0xa
- bx lr
-_021E840A:
- mov r0, #8
- bx lr
- .balign 4, 0
-
- thumb_func_start MOD05_021E8410
-MOD05_021E8410: ; 0x021E8410
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x18
- add r5, r0, #0
- mov r0, #0
- mov r1, #1
- bl FUN_02002E4C
- add r4, r0, #0
- mov r0, #0
- mov r1, #3
- bl FUN_02002E4C
- add r0, r4, r0
- str r0, [sp, #0x14]
- mov r4, #0
- ldr r0, [r5, #0x14]
- ldr r1, [r5, #0x18]
- ldr r3, [r5, #4]
- add r2, r4, #0
- bl ReadMsgData_ExpandPlaceholders
- add r1, r4, #0
- add r6, r0, #0
- str r1, [sp]
- mov r0, #0xff
- str r0, [sp, #4]
- str r1, [sp, #8]
- ldr r0, [r5, #0x10]
- add r2, r6, #0
- add r3, r1, #0
- bl AddTextPrinterParameterized
- add r0, r6, #0
- bl String_dtor
- mov r0, #1
- str r0, [sp, #0x10]
- ldr r0, _021E84EC ; =UNK05_021F78D4
- ldr r7, _021E84F0 ; =UNK05_021F78C4
- str r0, [sp, #0xc]
-_021E8460:
- ldr r0, [sp, #0xc]
- ldr r1, [r0]
- cmp r1, #3
- bne _021E846E
- ldr r0, [r5, #0x1c]
- cmp r0, #0
- beq _021E84D6
-_021E846E:
- ldr r0, [sp, #0x14]
- add r4, r4, r0
- ldr r0, [r5, #0x18]
- bl NewString_ReadMsgData
- add r6, r0, #0
- mov r1, #0
- str r4, [sp]
- mov r0, #0xff
- str r0, [sp, #4]
- mov r0, #0
- str r0, [sp, #8]
- ldr r0, [r5, #0x10]
- add r2, r6, #0
- add r3, r1, #0
- bl AddTextPrinterParameterized
- add r0, r6, #0
- bl String_dtor
- sub r2, r7, #4
- ldr r0, [r5, #0x14]
- ldr r1, [r5, #0x18]
- ldr r2, [r2]
- ldr r3, [r5, #4]
- bl ReadMsgData_ExpandPlaceholders
- add r6, r0, #0
- mov r0, #0
- mov r1, #2
- bl FUN_02002E4C
- add r2, r0, #0
- mov r0, #0
- add r1, r6, #0
- bl FUN_02002E14
- mov r1, #0x68
- sub r3, r1, r0
- str r4, [sp]
- mov r0, #0xff
- str r0, [sp, #4]
- mov r0, #0
- str r0, [sp, #8]
- ldr r0, [r5, #0x10]
- mov r1, #0
- add r2, r6, #0
- bl AddTextPrinterParameterized
- add r0, r6, #0
- bl String_dtor
-_021E84D6:
- ldr r0, [sp, #0xc]
- add r7, r7, #4
- add r0, r0, #4
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x10]
- add r0, r0, #1
- str r0, [sp, #0x10]
- cmp r0, #5
- blo _021E8460
- add sp, #0x18
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E84EC: .word UNK05_021F78D4
-_021E84F0: .word UNK05_021F78C4
-
- thumb_func_start MOD05_021E84F4
-MOD05_021E84F4: ; 0x021E84F4
- push {r3, r4, lr}
- sub sp, #0x14
- add r4, r0, #0
- ldr r0, [r4, #4]
- mov r1, #0x10
- bl AllocFromHeap
- str r0, [r4, #0x10]
- mov r3, #1
- str r3, [sp]
- ldr r0, [r4, #0x2c]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #4]
- ldr r0, [r4, #0x30]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #8]
- mov r0, #0xd
- str r0, [sp, #0xc]
- ldr r0, _021E8564 ; =0x0000027F
- str r0, [sp, #0x10]
- ldrb r2, [r4, #8]
- ldr r0, [r4, #0xc]
- ldr r1, [r4, #0x10]
- bl FUN_02019064
- mov r0, #0
- str r0, [sp]
- ldr r0, [r4, #4]
- ldr r2, _021E8568 ; =0x000003D9
- str r0, [sp, #4]
- ldrb r1, [r4, #8]
- ldr r0, [r4, #0xc]
- mov r3, #0xb
- bl FUN_0200CB00
- mov r0, #0
- mov r1, #6
- bl FUN_02002E4C
- add r1, r0, #0
- ldr r0, [r4, #0x10]
- bl FUN_02019620
- add r0, r4, #0
- bl MOD05_021E8410
- ldr r0, [r4, #0x10]
- ldr r2, _021E8568 ; =0x000003D9
- mov r1, #0
- mov r3, #0xb
- bl FUN_0200CCA4
- add sp, #0x14
- pop {r3, r4, pc}
- .balign 4, 0
-_021E8564: .word 0x0000027F
-_021E8568: .word 0x000003D9
-
- thumb_func_start MOD05_021E856C
-MOD05_021E856C: ; 0x021E856C
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x10]
- mov r1, #0
- bl FUN_0200CCF8
- ldr r0, [r4, #0x10]
- bl FUN_02019178
- ldr r0, [r4, #0x10]
- bl FreeToHeap
- pop {r4, pc}
- .balign 4, 0
-
- thumb_func_start MOD05_021E8588
-MOD05_021E8588: ; 0x021E8588
- push {r3, r4, r5, r6, r7, lr}
- add r5, r1, #0
- add r6, r0, #0
- add r0, r5, #0
- mov r1, #0x34
- add r7, r2, #0
- bl AllocFromHeap
- add r4, r0, #0
- str r6, [r4]
- str r5, [r4, #4]
- strb r7, [r4, #8]
- ldr r0, [r6, #8]
- str r0, [r4, #0xc]
- add r0, r5, #0
- bl ScrStrBufs_new
- str r0, [r4, #0x14]
- ldr r2, _021E85E0 ; =0x000001E3
- mov r0, #1
- mov r1, #0x1a
- add r3, r5, #0
- bl NewMsgDataFromNarc
- str r0, [r4, #0x18]
- add r0, r4, #0
- ldr r1, [r4]
- add r0, #0x1c
- bl MOD05_021E8310
- add r1, r4, #0
- ldr r0, [r4, #0x14]
- add r1, #0x1c
- bl MOD05_021E835C
- mov r0, #0xd
- str r0, [r4, #0x2c]
- add r0, r4, #0
- add r0, #0x1c
- bl MOD05_021E8400
- str r0, [r4, #0x30]
- add r0, r4, #0
- pop {r3, r4, r5, r6, r7, pc}
- .balign 4, 0
-_021E85E0: .word 0x000001E3
-
- thumb_func_start MOD05_021E85E4
-MOD05_021E85E4: ; 0x021E85E4
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x18]
- bl DestroyMsgData
- ldr r0, [r4, #0x14]
- bl ScrStrBufs_delete
- add r0, r4, #0
- bl FreeToHeap
- pop {r4, pc}
-
- thumb_func_start MOD05_021E85FC
-MOD05_021E85FC: ; 0x021E85FC
- push {r4, lr}
- add r4, r0, #0
- bl FUN_02034E48
- add r0, r4, #0
- mov r1, #4
- mov r2, #0
- bl MOD05_021EFA9C
- ldr r0, [r4, #0x38]
- bl FUN_02055320
- ldr r1, [r4, #0x1c]
- str r0, [r1, #8]
- ldr r0, [r4, #0x38]
- bl FUN_0205532C
- ldr r1, [r4, #0x1c]
- str r0, [r1, #0xc]
- mov r1, #0
- ldr r0, [r4, #0x1c]
- mvn r1, r1
- str r1, [r0, #4]
- ldr r0, [r4, #0x38]
- bl FUN_020552F8
- ldr r1, [r4, #0x1c]
- str r0, [r1, #0x10]
- ldr r0, [r4, #0xc]
- bl FUN_02022720
- cmp r0, #2
- bne _021E8642
- mov r0, #1
- pop {r4, pc}
-_021E8642:
- mov r0, #0
- pop {r4, pc}
- .balign 4, 0
-
thumb_func_start MOD05_021E8648
MOD05_021E8648: ; 0x021E8648
push {r4, r5, r6, lr}
@@ -17395,7 +14837,7 @@ _021EFC20:
str r1, [r0]
ldr r0, [r4, #0x34]
bl Sav2_PlayerData_GetOptionsAddr
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -17546,7 +14988,7 @@ MOD05_021EFD40: ; 0x021EFD40
ldr r0, [r0, #8]
ldr r2, _021EFD78 ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x44]
mov r0, #3
str r0, [r4, #0x48]
@@ -17637,7 +15079,7 @@ MOD05_021EFDF0: ; 0x021EFDF0
ldr r0, [r0, #8]
ldr r2, _021EFE28 ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x44]
mov r0, #5
str r0, [r4, #0x48]
@@ -17703,7 +15145,7 @@ MOD05_021EFE70: ; 0x021EFE70
ldr r0, [r0, #8]
ldr r2, _021EFEA8 ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x44]
mov r0, #7
str r0, [r4, #0x48]
@@ -17950,7 +15392,7 @@ MOD05_021F0080: ; 0x021F0080
ldr r0, [r0, #8]
ldr r2, _021F00B8 ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x44]
mov r0, #0xb
str r0, [r4, #0x48]
@@ -31096,45 +28538,6 @@ _021F6428: .word MOD05_021F57F0
.section .rodata
- .global UNK05_021F7824
-UNK05_021F7824: ; 0x021F7824
- .word 0x00000001, 0x0000000C, 0x00000044, MOD05_021E79A8
- .word MOD05_021E7A6C, MOD05_021E7A08, MOD05_021E7A88
-
- .global UNK05_021F7840
-UNK05_021F7840: ; 0x021F7840
- .word 0x00000044, MOD05_021E7B08, MOD05_021E7A6C, MOD05_021E7B78
- .word MOD05_021E7A88
-
- .global UNK05_021F7854
-UNK05_021F7854: ; 0x021F7854
- .word 0x00000000, 0x00000001, 0x00000000, 0x00000000
- .word 0x00000000, 0x00000002
-
- .global UNK05_021F786C
-UNK05_021F786C: ; 0x021F786C
- .word 0x00001000, 0x00001000, 0x00001000
-
- .global UNK05_021F7878
-UNK05_021F7878: ; 0x021F7878
- .byte 0x00, 0x10, 0x00, 0x00 ;word
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
-
- .global UNK05_021F789C
-UNK05_021F789C: ; 0x021F789C
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ;word
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x10, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
-
- .global UNK05_021F78C4
-UNK05_021F78C4: ; 0x021F78C4
- .byte 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK05_021F78D4
-UNK05_021F78D4: ; 0x021F78D4
- .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
-
.global UNK05_021F78E4
UNK05_021F78E4: ; 0x021F78E4
.byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
diff --git a/arm9/modules/05/include/mod05_021E72FC.h b/arm9/modules/05/include/mod05_021E72FC.h
new file mode 100644
index 00000000..6c61c913
--- /dev/null
+++ b/arm9/modules/05/include/mod05_021E72FC.h
@@ -0,0 +1,23 @@
+#ifndef POKEDIAMOND_MOD05_021E72FC_H
+#define POKEDIAMOND_MOD05_021E72FC_H
+
+#include "nitro/types.h"
+
+typedef struct UnkStruct021E7358
+{
+ u32 Unk00;
+ u32 Unk04;
+ u32 Unk08;
+ u32 Unk0C;
+ u32 Unk10;
+
+} UnkStruct021E7358;
+
+BOOL MOD05_021E72FC(u32 param0, u32 param1);
+void MOD05_021E7358(u32 param0, u32 param1, u32 param2);
+u32 MOD05_021E7388(u32 param0);
+BOOL MOD05_021E73B4(UnkStruct021E7358 *param0);
+UnkStruct021E7358 *MOD05_021E74D4(u32 param0);
+void MOD05_021E74F8(UnkStruct021E7358 *param0);
+
+#endif //POKEDIAMOND_MOD05_021E72FC_H
diff --git a/arm9/modules/05/src/mod05_021E72FC.c b/arm9/modules/05/src/mod05_021E72FC.c
new file mode 100644
index 00000000..8a31d032
--- /dev/null
+++ b/arm9/modules/05/src/mod05_021E72FC.c
@@ -0,0 +1,160 @@
+#include "global.h"
+#include "mod05_021E72FC.h"
+#include "heap.h"
+
+extern void FUN_020054C8(u32 param0);
+extern void FUN_020463CC(u32 param0, void *func, UnkStruct021E7358 *param2);
+extern u32 FUN_020553A0(u32 param0);
+extern u32 FUN_02058720(u32 param0);
+extern BOOL FUN_02054B30(u8 param0);
+extern BOOL FUN_02054B3C(u8 param0);
+extern BOOL FUN_02054B48(u8 param0);
+extern BOOL FUN_02054B54(u8 param0);
+extern UnkStruct021E7358 *FUN_0204652C(UnkStruct021E7358 *param0);
+extern void FUN_02058410(u32 param0, u32 param1);
+extern BOOL FUN_02057254(u32 param0);
+extern u32 FUN_0205AFDC(u32 param0, u32 param1);
+extern void FUN_02057260(u32 param0, u32 param1);
+extern void FUN_02055304(u32 param0, u32 param1);
+extern BOOL FUN_02056B74(u32 param0, u32 param1, u32 param2);
+extern void FUN_02058418(u32 param0, u32 param1);
+extern void FUN_020054F0(u32 param0, u32 param1);
+extern void FUN_02016A8C(u32 param0, void *param1);
+
+THUMB_FUNC BOOL MOD05_021E72FC(u32 param0, u32 param1)
+{
+ u8 res = (u8)FUN_02058720(FUN_020553A0(param1));
+ u32 r2;
+ if (FUN_02054B30(res) == TRUE)
+ {
+ r2 = 3;
+ goto label;
+ }
+ else if (FUN_02054B3C(res) == TRUE)
+ {
+ r2 = 2;
+ goto label;
+ }
+ else if (FUN_02054B48(res) == TRUE)
+ {
+ r2 = 0;
+ goto label;
+ }
+ else if (FUN_02054B54(res) == TRUE)
+ {
+ r2 = 1;
+ goto label;
+ }
+ return FALSE;
+label:
+ MOD05_021E7358(param0, param1, r2);
+ return TRUE;
+}
+
+THUMB_FUNC void MOD05_021E7358(u32 param0, u32 param1, u32 param2)
+{
+ UnkStruct021E7358 *res = MOD05_021E74D4(24);
+ res->Unk0C = param0;
+ res->Unk10 = param1;
+ res->Unk00 = param2;
+ FUN_020054C8(1624);
+ FUN_020463CC(param0, MOD05_021E73B4, res);
+}
+
+THUMB_FUNC u32 MOD05_021E7388(u32 param0)
+{
+ switch (param0)
+ {
+ case 0:
+ return 2;
+ case 2:
+ return 1;
+ case 1:
+ return 3;
+ case 3:
+ return 0;
+ }
+ return 0;
+}
+
+THUMB_FUNC BOOL MOD05_021E73B4(UnkStruct021E7358 *param0)
+{
+ UnkStruct021E7358 *strct = FUN_0204652C(param0);
+ u32 res = FUN_020553A0(strct->Unk10);
+ u8 res2 = (u8)FUN_02058720(res);
+ switch (strct->Unk08)
+ {
+ case 0:
+ FUN_02058410(res, 1 << 8);
+ strct->Unk08++;
+ break;
+ case 1:
+ if (!FUN_02057254(strct->Unk10))
+ {
+ break;
+ }
+ FUN_02057260(strct->Unk10, FUN_0205AFDC(strct->Unk00, 12));
+ FUN_02055304(strct->Unk10, strct->Unk00);
+ strct->Unk08++;
+ strct->Unk04 = 7;
+ break;
+ case 2:
+ if (strct->Unk04 == 2 || strct->Unk04 == 4 || strct->Unk04 == 6)
+ {
+ strct->Unk00 = MOD05_021E7388(strct->Unk00);
+ FUN_02055304(strct->Unk10, strct->Unk00);
+ }
+ if (--(strct->Unk04))
+ {
+ break;
+ }
+ if (FUN_02054B30(res2) == TRUE)
+ {
+ strct->Unk00 = 3;
+ }
+ else if (FUN_02054B3C(res2) == TRUE)
+ {
+ strct->Unk00 = 2;
+ }
+ else if (FUN_02054B48(res2) == TRUE)
+ {
+ strct->Unk00 = 0;
+ }
+ else if (FUN_02054B54(res2) == TRUE)
+ {
+ strct->Unk00 = 1;
+ }
+ else
+ {
+ strct->Unk00 = MOD05_021E7388(strct->Unk00);
+ }
+ if (FUN_02056B74(strct->Unk10, res, strct->Unk00) == FALSE)
+ {
+ strct->Unk08 = 1;
+ break;
+ }
+ FUN_02058418(res, 0x80);
+ FUN_02058418(res, 1 << 8);
+ FUN_02055304(strct->Unk10, strct->Unk00);
+ MOD05_021E74F8(strct);
+ FUN_020054F0(1624, 0);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC UnkStruct021E7358 *MOD05_021E74D4(u32 param0)
+{
+ UnkStruct021E7358 *res = (UnkStruct021E7358 *)AllocFromHeapAtEnd(4, param0);
+ if (res == NULL)
+ {
+ ErrorHandling();
+ }
+ memset((void *)res, 0, param0);
+ return res;
+}
+
+THUMB_FUNC void MOD05_021E74F8(UnkStruct021E7358 *param0)
+{
+ FUN_02016A8C(4, param0);
+}
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index 1337a593..d39eedbd 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -8929,7 +8929,7 @@ _0223DA3E:
mov r0, #0x85
lsl r0, r0, #2
ldr r0, [r4, r0]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -10293,7 +10293,7 @@ _0223E5FE:
ldr r0, [r4]
ldr r1, _0223E618 ; =0x0224F348
mov r2, #0x1f
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
add r4, #0x80
str r0, [r4]
mov r0, #8
@@ -12384,7 +12384,7 @@ MOD06_0223F720: ; 0x0223F720
ldr r0, [r0, #0x68]
mov r3, #0xb
ldr r0, [r0, #8]
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x60]
ldr r0, _0223F76C ; =MOD06_0223F770
bl MOD06_0223F8BC
@@ -13438,7 +13438,7 @@ MOD06_0223FFD4: ; 0x0223FFD4
ldr r0, [r0, #0x68]
mov r3, #0xb
ldr r0, [r0, #8]
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x60]
ldr r0, _0224002C ; =MOD06_02240030
bl MOD06_0223F8BC
@@ -13698,7 +13698,7 @@ MOD06_02240204: ; 0x02240204
ldr r0, [r0, #0x68]
mov r3, #0xb
ldr r0, [r0, #8]
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x60]
ldr r0, _02240254 ; =MOD06_02240258
bl MOD06_0223F8BC
@@ -13821,7 +13821,7 @@ MOD06_02240310: ; 0x02240310
ldr r0, [r0, #0x68]
mov r3, #0xb
ldr r0, [r0, #8]
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x60]
ldr r0, _02240360 ; =MOD06_0223FD08
bl MOD06_0223F8BC
@@ -19372,7 +19372,7 @@ _02242FA6:
ldr r0, [r0, #8]
ldr r2, _02242FE8 ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x64]
add r0, r4, #0
mov r1, #0x24
@@ -41696,12 +41696,12 @@ MOD06_0224DBA8: ; 0x0224DBA8
ldr r0, [r5, #8]
bl Sav2_PlayerData_GetOptionsAddr
add r4, r0, #0
- bl FUN_02025084
+ bl Options_GetFrame
mov r1, #0x53
lsl r1, r1, #2
str r0, [r5, r1]
add r0, r4, #0
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
mov r1, #0x15
lsl r1, r1, #4
str r0, [r5, r1]
@@ -42800,7 +42800,7 @@ MOD06_0224E470: ; 0x0224E470
mov r2, #0x1f
mov r3, #0xb
str r4, [sp]
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r5, #4]
str r4, [r5, #8]
mov r0, #1
diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s
index 15f4c237..f04e67da 100644
--- a/arm9/modules/11/asm/module_11_thumb2.s
+++ b/arm9/modules/11/asm/module_11_thumb2.s
@@ -120,7 +120,7 @@ _0222F30E:
mov r0, #0x13
lsl r0, r0, #4
ldr r0, [r4, r0]
- bl FUN_02025084
+ bl Options_GetFrame
add r4, r0, #0
lsl r0, r4, #0x18
lsr r0, r0, #0x18
@@ -3600,7 +3600,7 @@ _02230E2E:
mov r1, #0x6d
lsl r1, r1, #2
ldr r0, [r0, r1]
- bl FUN_0202502C
+ bl Options_GetBattleScene
cmp r0, #0
bne _02230E40
mov r0, #1
@@ -3613,11 +3613,11 @@ _02230E40:
MOD11_02230E44: ; 0x02230E44
mov r1, #0x6d
lsl r1, r1, #2
- ldr r3, _02230E50 ; =FUN_02025084
+ ldr r3, _02230E50 ; =Options_GetFrame
ldr r0, [r0, r1]
bx r3
nop
-_02230E50: .word FUN_02025084
+_02230E50: .word Options_GetFrame
thumb_func_start MOD11_02230E54
MOD11_02230E54: ; 0x02230E54
@@ -3632,7 +3632,7 @@ _02230E62:
mov r1, #0x6d
lsl r1, r1, #2
ldr r0, [r0, r1]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
pop {r3, pc}
.align 2, 0
@@ -3640,11 +3640,11 @@ _02230E62:
MOD11_02230E70: ; 0x02230E70
mov r1, #0x6d
lsl r1, r1, #2
- ldr r3, _02230E7C ; =FUN_02025048
+ ldr r3, _02230E7C ; =Options_GetBattleStyle
ldr r0, [r0, r1]
bx r3
nop
-_02230E7C: .word FUN_02025048
+_02230E7C: .word Options_GetBattleStyle
thumb_func_start MOD11_02230E80
MOD11_02230E80: ; 0x02230E80
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s
index 215acf37..c24f23a7 100644
--- a/arm9/modules/12/asm/module_12.s
+++ b/arm9/modules/12/asm/module_12.s
@@ -4224,7 +4224,7 @@ MOD12_0222F834: ; 0x0222F834
ldr r1, [r5]
ldr r0, _0222F930 ; =0x00001988
ldr r0, [r1, r0]
- bl FUN_02025084
+ bl Options_GetFrame
add r4, r0, #0
lsl r0, r4, #0x18
lsr r0, r0, #0x18
@@ -6224,7 +6224,7 @@ MOD12_022308F0: ; 0x022308F0
ldr r1, [r5]
ldr r0, _022309C4 ; =0x00001988
ldr r0, [r1, r0]
- bl FUN_02025084
+ bl Options_GetFrame
add r4, r0, #0
lsl r0, r4, #0x18
lsr r0, r0, #0x18
@@ -15253,7 +15253,7 @@ _02234F2A:
bne _02234F40
ldr r0, _02234FAC ; =0x00001988
ldr r0, [r1, r0]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
add r4, r0, #0
b _02234F42
_02234F40:
@@ -25497,7 +25497,7 @@ MOD12_02239AD0: ; 0x02239AD0
bne _02239AF2
ldr r0, _02239B44 ; =0x00001988
ldr r0, [r1, r0]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
add r4, r0, #0
b _02239AF4
_02239AF2:
@@ -34742,7 +34742,7 @@ MOD12_0223E1EC: ; 0x0223E1EC
bne _0223E20E
ldr r0, _0223E26C ; =0x00001988
ldr r0, [r1, r0]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
add r4, r0, #0
b _0223E210
_0223E20E:
@@ -43529,7 +43529,7 @@ MOD12_022425F4: ; 0x022425F4
bne _02242616
ldr r0, _02242674 ; =0x00001988
ldr r0, [r1, r0]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
add r4, r0, #0
b _02242618
_02242616:
@@ -43673,7 +43673,7 @@ MOD12_022426BC: ; 0x022426BC
ldr r1, [r5]
ldr r0, _02242784 ; =0x00001988
ldr r0, [r1, r0]
- bl FUN_02025084
+ bl Options_GetFrame
add r4, r0, #0
lsl r0, r4, #0x18
lsr r0, r0, #0x18
@@ -43843,7 +43843,7 @@ MOD12_02242804: ; 0x02242804
ldr r1, [r6]
ldr r0, _022429D0 ; =0x00001988
ldr r0, [r1, r0]
- bl FUN_02025084
+ bl Options_GetFrame
add r4, r0, #0
lsl r0, r4, #0x18
lsr r0, r0, #0x18
diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s
index ae226da3..0bded4bf 100644
--- a/arm9/modules/14/asm/module_14.s
+++ b/arm9/modules/14/asm/module_14.s
@@ -9849,11 +9849,11 @@ MOD14_021DC3AC: ; 0x021DC3AC
MOD14_021DC3B4: ; 0x021DC3B4
mov r1, #0x69
lsl r1, r1, #2
- ldr r3, _021DC3C0 ; =FUN_02025084
+ ldr r3, _021DC3C0 ; =Options_GetFrame
ldr r0, [r0, r1]
bx r3
nop
-_021DC3C0: .word FUN_02025084
+_021DC3C0: .word Options_GetFrame
thumb_func_start MOD14_021DC3C4
MOD14_021DC3C4: ; 0x021DC3C4
diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s
index be4096d7..1f3abbf2 100644
--- a/arm9/modules/17/asm/module_17.s
+++ b/arm9/modules/17/asm/module_17.s
@@ -4666,7 +4666,7 @@ MOD17_021D9918: ; 0x021D9918
ldr r0, [r5, r0]
add r7, r2, #0
add r4, r3, #0
- bl FUN_02025084
+ bl Options_GetFrame
add r6, r0, #0
mov r0, #0
mov r1, #0xe0
@@ -4847,7 +4847,7 @@ _021D9A7E:
bne _021D9ACE
add r0, r0, #4
ldr r0, [r5, r0]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
b _021D9AD0
_021D9ACE:
mov r0, #1
@@ -11480,12 +11480,12 @@ _021DCA42:
ldr r1, [r4, #0xc]
bl MOD17_021DCC38
ldr r0, [r4, #0xc]
- bl FUN_02025084
+ bl Options_GetFrame
mov r1, #0x4f
lsl r1, r1, #2
str r0, [r5, r1]
ldr r0, [r4, #0xc]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
mov r1, #5
lsl r1, r1, #6
str r0, [r5, r1]
@@ -11760,7 +11760,7 @@ MOD17_021DCC38: ; 0x021DCC38
sub sp, #8
add r4, r0, #0
add r0, r1, #0
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s
index b611c883..6581e679 100644
--- a/arm9/modules/18/asm/module_18.s
+++ b/arm9/modules/18/asm/module_18.s
@@ -1223,7 +1223,7 @@ MOD18_02239F98: ; 0x02239F98
ldr r0, [r0]
mov r3, #0xb
ldr r0, [r0, #8]
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
ldr r2, _0223A044 ; =0x02251380
ldr r1, _0223A050 ; =0x000007E4
ldr r3, [r2]
@@ -7963,7 +7963,7 @@ MOD18_0223D414: ; 0x0223D414
add r6, r0, #0
ldr r0, [r5, #0xc]
bl Sav2_PlayerData_GetOptionsAddr
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
add r4, r0, #0
ldr r0, _0223D580 ; =0x02251388
mov r2, #0x15
@@ -25227,7 +25227,7 @@ _02245898:
ldr r1, _022459E0 ; =0x022504F8
ldr r2, _022459E4 ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #4]
mov r0, #2
str r0, [r4, #0xc]
@@ -25262,7 +25262,7 @@ _022458D4:
ldr r1, _022459E0 ; =0x022504F8
ldr r2, _022459E4 ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #4]
mov r0, #4
str r0, [r4, #0xc]
@@ -25302,7 +25302,7 @@ _0224592A:
ldr r1, _022459E0 ; =0x022504F8
ldr r2, _022459E4 ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #4]
mov r0, #6
str r0, [r4, #0xc]
@@ -25669,7 +25669,7 @@ _02245C14:
ldr r1, _02245E08 ; =0x022504F8
ldr r2, _02245E0C ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #4]
mov r0, #2
str r0, [r4, #0xc]
@@ -25715,7 +25715,7 @@ _02245C7C:
ldr r1, _02245E08 ; =0x022504F8
ldr r2, _02245E0C ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #4]
mov r0, #5
str r0, [r4, #0xc]
@@ -27379,7 +27379,7 @@ _022469E0:
ldr r1, _02246AD8 ; =0x022504F8
ldr r2, _02246ADC ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #8]
mov r0, #6
str r0, [r4, #0xc]
@@ -30583,7 +30583,7 @@ _0224830C:
ldr r0, [r0, #8]
ldr r2, _022484D4 ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x24]
add r0, r4, #0
mov r1, #0x14
@@ -31535,7 +31535,7 @@ _02248AAE:
ldr r0, [r0, #8]
ldr r2, _02248D94 ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x20]
b _02248DB6
_02248AD8:
@@ -31664,7 +31664,7 @@ _02248BC2:
ldr r0, [r0, #8]
ldr r2, _02248D94 ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x20]
b _02248DB6
_02248BEC:
@@ -35073,7 +35073,7 @@ MOD18_0224A710: ; 0x0224A710
ldr r0, [r0, #8]
ldr r2, _0224A744 ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x5c]
ldr r0, _0224A748 ; =0x00000246
mov r1, #0xc
@@ -35224,7 +35224,7 @@ MOD18_0224A844: ; 0x0224A844
ldr r0, [r0, #8]
ldr r2, _0224A878 ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x5c]
ldr r0, _0224A87C ; =0x00000246
mov r1, #1
@@ -37895,7 +37895,7 @@ _0224BE0A:
ldr r0, [r0, #8]
ldr r2, _0224BE80 ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #8]
mov r0, #1
str r0, [r4]
@@ -40208,7 +40208,7 @@ _0224D0DA:
ldr r0, [r0, #8]
ldr r2, _0224D1EC ; =0x000003D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r4, #0x5c]
ldr r0, _0224D1D8 ; =0x00000246
mov r1, #0xe
diff --git a/arm9/modules/21/asm/module_21.s b/arm9/modules/21/asm/module_21.s
deleted file mode 100644
index ad12a682..00000000
--- a/arm9/modules/21/asm/module_21.s
+++ /dev/null
@@ -1,733 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
- .section .text
- .balign 4, 0
-
- thumb_func_start MOD21_02254854
-MOD21_02254854: ; 0x02254854
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r6, r1, #0
- mov r0, #8
- mov r1, #0x2c
- add r7, r2, #0
- str r3, [sp]
- bl AllocFromHeap
- add r4, r0, #0
- beq _02254892
- ldr r3, [sp]
- add r1, r6, #0
- add r2, r7, #0
- bl MOD21_0225489C
- cmp r0, #0
- beq _0225488C
- ldr r0, _02254898 ; =MOD21_02254930
- add r1, r4, #0
- mov r2, #1
- bl FUN_0200CA44
- cmp r0, #0
- beq _0225488C
- str r4, [r5]
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_0225488C:
- add r0, r4, #0
- bl FreeToHeap
-_02254892:
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_02254898: .word MOD21_02254930
- thumb_func_end MOD21_02254854
-
- thumb_func_start MOD21_0225489C
-MOD21_0225489C: ; 0x0225489C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- add r1, r5, #0
- add r0, #0x24
- add r1, #0x14
- bl MOD21_02254A6C
- cmp r0, #0
- beq _0225490A
- mov r1, #0
- strb r1, [r5]
- strb r1, [r5, #1]
- strb r1, [r5, #2]
- mov r0, #1
- strb r0, [r5, #3]
- strb r1, [r5, #6]
- add r0, r5, #0
- str r1, [r5, #0x20]
- add r0, #0x14
- bl GF_RTC_CopyTime
- ldr r0, [r5, #0x14]
- cmp r0, #0x18
- blo _022548D6
- mov r1, #0x18
- bl _u32_div_f
- str r1, [r5, #0x14]
-_022548D6:
- ldr r0, [r5, #0x18]
- cmp r0, #0x3c
- blo _022548E6
- ldr r0, [r5, #0x14]
- mov r1, #0x3c
- bl _u32_div_f
- str r1, [r5, #0x14]
-_022548E6:
- ldr r0, [r5, #0x18]
- ldr r2, _02254910 ; =MOD21_02254974
- strb r0, [r5, #5]
- mov r0, #8
- str r0, [sp]
- ldr r0, _02254914 ; =MOD21_02254D80
- mov r1, #1
- add r3, r5, #0
- bl MOD20_02254130
- str r0, [r5, #0x10]
- cmp r0, #0
- bne _02254904
- mov r0, #0
- pop {r3, r4, r5, pc}
-_02254904:
- str r4, [r5, #0x28]
- mov r0, #1
- pop {r3, r4, r5, pc}
-_0225490A:
- mov r0, #0
- pop {r3, r4, r5, pc}
- nop
-_02254910: .word MOD21_02254974
-_02254914: .word MOD21_02254D80
- thumb_func_end MOD21_0225489C
-
- thumb_func_start MOD21_02254918
-MOD21_02254918: ; 0x02254918
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #0x24]
- bl MOD21_02254B04
- ldr r0, [r4, #0x10]
- bl MOD20_02254198
- add r0, r4, #0
- bl FreeToHeap
- pop {r4, pc}
- thumb_func_end MOD21_02254918
-
- thumb_func_start MOD21_02254930
-MOD21_02254930: ; 0x02254930
- push {r3, r4, r5, lr}
- add r4, r1, #0
- add r5, r0, #0
- ldrb r0, [r4]
- cmp r0, #3
- bhs _02254966
- ldr r0, [r4, #0x28]
- ldr r1, [r4, #0x10]
- bl MOD20_02252C14
- ldrb r1, [r4]
- add r0, r4, #0
- lsl r2, r1, #2
- ldr r1, _02254968 ; =MOD21_02254D84
- ldr r1, [r1, r2]
- blx r1
- cmp r0, #0
- beq _02254966
- add r0, r4, #0
- bl MOD21_02254918
- add r0, r5, #0
- bl FUN_0200CAB4
- ldr r0, [r4, #0x28]
- bl MOD20_022529A0
-_02254966:
- pop {r3, r4, r5, pc}
- .align 2, 0
-_02254968: .word MOD21_02254D84
- thumb_func_end MOD21_02254930
-
- thumb_func_start MOD21_0225496C
-MOD21_0225496C: ; 0x0225496C
- mov r1, #1
- strb r1, [r0, #2]
- bx lr
- .align 2, 0
- thumb_func_end MOD21_0225496C
-
- thumb_func_start MOD21_02254974
-MOD21_02254974: ; 0x02254974
- cmp r2, #0
- beq _02254984
- cmp r2, #1
- bne _0225498C
- mov r0, #1
- str r0, [r3, #0x20]
- strb r0, [r3, #6]
- bx lr
-_02254984:
- mov r0, #0
- str r0, [r3, #0x20]
- mov r0, #1
- strb r0, [r3, #6]
-_0225498C:
- bx lr
- .align 2, 0
- thumb_func_end MOD21_02254974
-
- thumb_func_start MOD21_02254990
-MOD21_02254990: ; 0x02254990
- ldrb r2, [r0, #2]
- cmp r2, #0
- bne _02254998
- b _0225499A
-_02254998:
- mov r1, #2
-_0225499A:
- strb r1, [r0]
- mov r1, #0
- strb r1, [r0, #1]
- bx lr
- .align 2, 0
- thumb_func_end MOD21_02254990
-
- thumb_func_start MOD21_022549A4
-MOD21_022549A4: ; 0x022549A4
- push {r4, lr}
- add r4, r0, #0
- ldrb r0, [r4, #1]
- cmp r0, #0
- beq _022549B4
- cmp r0, #1
- beq _022549C4
- b _022549DE
-_022549B4:
- ldr r0, [r4, #0x24]
- mov r1, #0
- bl MOD21_02254B10
- ldrb r0, [r4, #1]
- add r0, r0, #1
- strb r0, [r4, #1]
- b _022549DE
-_022549C4:
- ldr r0, [r4, #0x24]
- mov r1, #0
- bl MOD21_02254B34
- cmp r0, #0
- beq _022549DE
- ldr r0, [r4, #0x28]
- bl MOD20_0225298C
- add r0, r4, #0
- mov r1, #1
- bl MOD21_02254990
-_022549DE:
- mov r0, #0
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD21_022549A4
-
- thumb_func_start MOD21_022549E4
-MOD21_022549E4: ; 0x022549E4
- push {r4, lr}
- add r4, r0, #0
- ldrb r1, [r4, #2]
- cmp r1, #0
- beq _022549F8
- mov r1, #2
- bl MOD21_02254990
- mov r0, #0
- pop {r4, pc}
-_022549F8:
- ldrb r0, [r4, #6]
- cmp r0, #0
- beq _02254A0A
- mov r0, #0
- strb r0, [r4, #6]
- ldr r0, [r4, #0x24]
- mov r1, #2
- bl MOD21_02254B10
-_02254A0A:
- ldr r0, [r4, #0x24]
- mov r1, #1
- bl MOD21_02254B34
- cmp r0, #0
- beq _02254A32
- ldr r0, [r4, #0x18]
- strb r0, [r4, #5]
- add r0, r4, #0
- add r0, #0x14
- bl GF_RTC_CopyTime
- ldrb r1, [r4, #5]
- ldr r0, [r4, #0x18]
- cmp r1, r0
- beq _02254A32
- ldr r0, [r4, #0x24]
- mov r1, #1
- bl MOD21_02254B10
-_02254A32:
- mov r0, #0
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD21_022549E4
-
- thumb_func_start MOD21_02254A38
-MOD21_02254A38: ; 0x02254A38
- push {r4, lr}
- add r4, r0, #0
- ldrb r0, [r4, #1]
- cmp r0, #0
- beq _02254A48
- cmp r0, #1
- beq _02254A58
- b _02254A66
-_02254A48:
- ldr r0, [r4, #0x24]
- mov r1, #3
- bl MOD21_02254B10
- ldrb r0, [r4, #1]
- add r0, r0, #1
- strb r0, [r4, #1]
- b _02254A66
-_02254A58:
- ldr r0, [r4, #0x24]
- bl MOD21_02254B40
- cmp r0, #0
- beq _02254A66
- mov r0, #1
- pop {r4, pc}
-_02254A66:
- mov r0, #0
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD21_02254A38
-
- thumb_func_start MOD21_02254A6C
-MOD21_02254A6C: ; 0x02254A6C
- push {r4, r5, r6, lr}
- sub sp, #8
- add r6, r1, #0
- mov r1, #3
- add r5, r0, #0
- mov r0, #8
- lsl r1, r1, #8
- bl AllocFromHeap
- add r4, r0, #0
- beq _02254ACC
- add r0, #8
- mov r1, #8
- bl MOD20_022536F4
- str r6, [r4]
- bl MOD20_02252D34
- str r0, [r4, #4]
- mov r0, #8
- str r0, [sp]
- mov r0, #0xc
- mov r1, #0x19
- mov r2, #1
- add r3, sp, #4
- bl FUN_02006BDC
- add r6, r0, #0
- bne _02254AB2
- add r0, r4, #0
- bl FreeToHeap
- add sp, #8
- mov r0, #0
- pop {r4, r5, r6, pc}
-_02254AB2:
- ldr r0, [sp, #4]
- add r1, r4, #0
- add r0, #0xc
- add r1, #0x30
- bl MOD21_02254AD4
- add r0, r6, #0
- bl FreeToHeap
- add sp, #8
- str r4, [r5]
- mov r0, #1
- pop {r4, r5, r6, pc}
-_02254ACC:
- mov r0, #0
- add sp, #8
- pop {r4, r5, r6, pc}
- .align 2, 0
- thumb_func_end MOD21_02254A6C
-
- thumb_func_start MOD21_02254AD4
-MOD21_02254AD4: ; 0x02254AD4
- push {r3, r4, r5, r6, r7, lr}
- mov r6, #9
- add r5, r0, #0
- add r4, r1, #0
- mov r7, #0
- lsl r6, r6, #6
-_02254AE0:
- add r0, r5, #0
- add r1, r4, #0
- mov r2, #0x40
- bl MIi_CpuCopy16
- add r1, r4, #0
- add r0, r5, r6
- add r1, #0x40
- mov r2, #0x10
- bl MIi_CpuCopy16
- add r7, r7, #1
- add r5, #0x40
- add r4, #0x50
- sub r6, #0x30
- cmp r7, #9
- blt _02254AE0
- pop {r3, r4, r5, r6, r7, pc}
- thumb_func_end MOD21_02254AD4
-
- thumb_func_start MOD21_02254B04
-MOD21_02254B04: ; 0x02254B04
- push {r3, lr}
- cmp r0, #0
- beq _02254B0E
- bl FreeToHeap
-_02254B0E:
- pop {r3, pc}
- thumb_func_end MOD21_02254B04
-
- thumb_func_start MOD21_02254B10
-MOD21_02254B10: ; 0x02254B10
- 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, _02254B30 ; =MOD21_02254DAC
- ldr r3, [r2]
- bl MOD20_022537E0
- add sp, #0xc
- pop {pc}
- nop
-_02254B30: .word MOD21_02254DAC
- thumb_func_end MOD21_02254B10
-
- thumb_func_start MOD21_02254B34
-MOD21_02254B34: ; 0x02254B34
- ldr r3, _02254B3C ; =MOD20_02253794
- add r0, #8
- bx r3
- nop
-_02254B3C: .word MOD20_02253794
- thumb_func_end MOD21_02254B34
-
- thumb_func_start MOD21_02254B40
-MOD21_02254B40: ; 0x02254B40
- ldr r3, _02254B48 ; =MOD20_022537B8
- add r0, #8
- bx r3
- nop
-_02254B48: .word MOD20_022537B8
- thumb_func_end MOD21_02254B40
-
- thumb_func_start MOD21_02254B4C
-MOD21_02254B4C: ; 0x02254B4C
- 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 MOD21_02254B4C
-
- thumb_func_start MOD21_02254B60
-MOD21_02254B60: ; 0x02254B60
- 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, _02254BE8 ; =MOD21_02254D90
- 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, #0x17
- 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, #0x18
- mov r3, #6
- bl FUN_020068C8
- mov r0, #0
- add r1, r0, #0
- bl MOD20_02252D7C
- add r0, r5, #0
- bl MOD21_02254C5C
- ldr r0, [r5, #4]
- mov r1, #6
- bl FUN_02017CD0
- ldr r1, _02254BEC ; =0x04001000
- ldr r0, _02254BF0 ; =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 MOD21_02254B4C
- add sp, #0x14
- pop {r4, r5, pc}
- .align 2, 0
-_02254BE8: .word MOD21_02254D90
-_02254BEC: .word 0x04001000
-_02254BF0: .word 0xFFFFE0FF
- thumb_func_end MOD21_02254B60
-
- thumb_func_start MOD21_02254BF4
-MOD21_02254BF4: ; 0x02254BF4
- push {r3, r4, r5, lr}
- add r5, r1, #0
- add r0, r5, #0
- bl MOD20_022538A0
- add r4, r0, #0
- bl MOD21_02254C5C
- ldr r0, [r4, #4]
- mov r1, #6
- bl FUN_02017CD0
- add r0, r5, #0
- bl MOD21_02254B4C
- pop {r3, r4, r5, pc}
- thumb_func_end MOD21_02254BF4
-
- thumb_func_start MOD21_02254C14
-MOD21_02254C14: ; 0x02254C14
- push {r4, lr}
- add r4, r1, #0
- add r0, r4, #0
- bl MOD20_022538A0
- ldr r0, [r0]
- ldr r0, [r0, #0xc]
- cmp r0, #0
- beq _02254C30
- mov r0, #0
- add r1, r0, #0
- bl MOD11_02252DB4
- b _02254C38
-_02254C30:
- mov r0, #0
- add r1, r0, #0
- bl MOD20_02252D7C
-_02254C38:
- add r0, r4, #0
- bl MOD21_02254B4C
- pop {r4, pc}
- thumb_func_end MOD21_02254C14
-
- thumb_func_start MOD21_02254C40
-MOD21_02254C40: ; 0x02254C40
- 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 MOD21_02254B4C
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD21_02254C40
-
- thumb_func_start MOD21_02254C5C
-MOD21_02254C5C: ; 0x02254C5C
- push {r4, r5, lr}
- sub sp, #0x1c
- add r4, r0, #0
- ldr r0, [r4]
- ldr r2, _02254D74 ; =0x04000280
- ldr r0, [r0]
- mov r3, #0
- strh r3, [r2]
- str r0, [r2, #0x10]
- add r0, r2, #0
- mov r1, #0xa
- add r0, #0x18
- str r1, [r0]
- str r3, [r0, #4]
- lsr r0, r2, #0xb
-_02254C7A:
- ldrh r1, [r2]
- tst r1, r0
- bne _02254C7A
- ldr r0, _02254D78 ; =0x040002A0
- add r3, r0, #0
- ldr r1, [r0]
- sub r3, #0x20
- lsr r0, r0, #0xb
-_02254C8A:
- ldrh r2, [r3]
- tst r2, r0
- bne _02254C8A
- ldr r0, _02254D7C ; =0x040002A8
- add r2, r4, #0
- ldr r5, [r0]
- mov r0, #4
- str r0, [sp]
- mov r0, #9
- lsl r1, r1, #0x1a
- str r0, [sp, #4]
- add r2, #0x30
- str r2, [sp, #8]
- lsr r1, r1, #0x18
- str r1, [sp, #0xc]
- mov r1, #0
- str r1, [sp, #0x10]
- mov r1, #0x28
- str r1, [sp, #0x14]
- str r0, [sp, #0x18]
- ldr r0, [r4, #4]
- mov r1, #6
- mov r2, #3
- mov r3, #7
- bl FUN_02018170
- mov r0, #4
- str r0, [sp]
- mov r0, #9
- add r1, r4, #0
- str r0, [sp, #4]
- add r1, #0x30
- str r1, [sp, #8]
- lsl r1, r5, #0x1a
- lsr r1, r1, #0x18
- str r1, [sp, #0xc]
- mov r1, #0
- str r1, [sp, #0x10]
- mov r1, #0x28
- str r1, [sp, #0x14]
- str r0, [sp, #0x18]
- ldr r0, [r4, #4]
- mov r1, #6
- mov r2, #8
- mov r3, #7
- bl FUN_02018170
- ldr r0, [r4]
- ldr r2, _02254D74 ; =0x04000280
- ldr r0, [r0, #4]
- mov r3, #0
- strh r3, [r2]
- str r0, [r2, #0x10]
- add r0, r2, #0
- mov r1, #0xa
- add r0, #0x18
- str r1, [r0]
- str r3, [r0, #4]
- lsr r0, r2, #0xb
-_02254D00:
- ldrh r1, [r2]
- tst r1, r0
- bne _02254D00
- ldr r0, _02254D78 ; =0x040002A0
- add r3, r0, #0
- ldr r1, [r0]
- sub r3, #0x20
- lsr r0, r0, #0xb
-_02254D10:
- ldrh r2, [r3]
- tst r2, r0
- bne _02254D10
- ldr r0, _02254D7C ; =0x040002A8
- add r2, r4, #0
- ldr r5, [r0]
- mov r0, #4
- str r0, [sp]
- mov r0, #9
- lsl r1, r1, #0x1a
- str r0, [sp, #4]
- add r2, #0x30
- str r2, [sp, #8]
- lsr r1, r1, #0x18
- str r1, [sp, #0xc]
- mov r1, #0
- str r1, [sp, #0x10]
- mov r1, #0x28
- str r1, [sp, #0x14]
- str r0, [sp, #0x18]
- ldr r0, [r4, #4]
- mov r1, #6
- mov r2, #0xf
- mov r3, #7
- bl FUN_02018170
- mov r0, #4
- str r0, [sp]
- mov r0, #9
- add r1, r4, #0
- str r0, [sp, #4]
- add r1, #0x30
- str r1, [sp, #8]
- lsl r1, r5, #0x1a
- lsr r1, r1, #0x18
- str r1, [sp, #0xc]
- mov r1, #0
- str r1, [sp, #0x10]
- mov r1, #0x28
- str r1, [sp, #0x14]
- str r0, [sp, #0x18]
- ldr r0, [r4, #4]
- mov r1, #6
- mov r2, #0x14
- mov r3, #7
- bl FUN_02018170
- add sp, #0x1c
- pop {r4, r5, pc}
- nop
-_02254D74: .word 0x04000280
-_02254D78: .word 0x040002A0
-_02254D7C: .word 0x040002A8
- thumb_func_end MOD21_02254C5C
-
- .section .rodata
-
- .global MOD21_02254D80
-MOD21_02254D80: ; 0x02254D80
- .byte 0x10, 0xAF, 0x10, 0xCF
-
- .global MOD21_02254D84
-MOD21_02254D84: ; 0x02254D84
- .word MOD21_022549A4, MOD21_022549E4, MOD21_02254A38
-
- .global MOD21_02254D90
-MOD21_02254D90: ; 0x02254D90
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global MOD21_02254DAC
-MOD21_02254DAC: ; 0x02254DAC
- .word 0x00, MOD21_02254B60, 0x00
- .word 0x01, MOD21_02254BF4, 0x00
- .word 0x02, MOD21_02254C14, 0x00
- .word 0x03, MOD21_02254C40, 0x00
- .word 0x00, 0x00000000, 0x00
diff --git a/arm9/modules/21/include/mod21_02254854.h b/arm9/modules/21/include/mod21_02254854.h
new file mode 100644
index 00000000..cc243568
--- /dev/null
+++ b/arm9/modules/21/include/mod21_02254854.h
@@ -0,0 +1,36 @@
+#ifndef POKEDIAMOND_MOD21_02254854_H
+#define POKEDIAMOND_MOD21_02254854_H
+
+#include "nitro/types.h"
+#include "mod21_02254A6C.h"
+
+typedef struct Time
+{
+ u32 hour;
+ u32 minute;
+} Time;
+
+typedef struct UnkStruct02254854
+{
+ u8 bytearray[8];
+ u8 padding0[8];
+ BOOL Unk10;
+ Time time;
+ u8 padding1[4];
+ u32 Unk20;
+ void *Unk24;
+ u32 Unk28;
+} UnkStruct02254854;
+
+BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3);
+BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3);
+void MOD21_02254918(UnkStruct02254854 *param0);
+void MOD21_02254930(u32 param0, UnkStruct02254854 *param1);
+void MOD21_0225496C(UnkStruct02254854 *param0);
+void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct02254854 * param3);
+void MOD21_02254990(UnkStruct02254854 * param0, u8 param1);
+BOOL MOD21_022549A4(UnkStruct02254854 * param0);
+BOOL MOD21_022549E4(UnkStruct02254854 * param0);
+BOOL MOD21_02254A38(UnkStruct02254854 * param0);
+
+#endif //POKEDIAMOND_MOD21_02254854_H
diff --git a/arm9/modules/21/include/mod21_02254A6C.h b/arm9/modules/21/include/mod21_02254A6C.h
new file mode 100644
index 00000000..bae9cab6
--- /dev/null
+++ b/arm9/modules/21/include/mod21_02254A6C.h
@@ -0,0 +1,38 @@
+#ifndef POKEDIAMOND_MOD21_02254A6C_H
+#define POKEDIAMOND_MOD21_02254A6C_H
+
+#include "nitro/types.h"
+
+typedef struct UnkStruct02254A6C UnkStruct02254A6C;
+
+struct UnkStruct02254A6C
+{
+ UnkStruct02254A6C *Unk00;
+ u32 Unk04;
+ u32 Unk08[1];
+ u32 Unk0C;
+ u8 padding0[0x20];
+ u32 Unk30[1];
+};
+
+typedef struct UnkOverlayStruct1
+{
+ u32 number;
+ BOOL (*func)(u32 param0, void *param1);
+ u32 Unk08;
+} UnkOverlayStruct1; //todo should probably be in mod 20 header
+
+BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1);
+void MOD21_02254AD4(void *param0, void *param1);
+void MOD21_02254B04(void *param0);
+void MOD21_02254B10(u32 *param0, u32 param1);
+BOOL MOD21_02254B34(void *param0, u32 param1);
+BOOL MOD21_02254B40(void *param0);
+BOOL MOD21_02254B4C(void *param0);
+BOOL MOD21_02254B60(u32 param0, void *param1);
+BOOL MOD21_02254BF4(u32 param0, void *param1);
+BOOL MOD21_02254C14(u32 param0, void *param1);
+BOOL MOD21_02254C40(u32 param0, void *param1);
+void MOD21_02254C5C(UnkStruct02254A6C *param0);
+
+#endif //POKEDIAMOND_MOD21_02254A6C_H
diff --git a/arm9/modules/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c
new file mode 100644
index 00000000..a9a7599d
--- /dev/null
+++ b/arm9/modules/21/src/mod21_02254854.c
@@ -0,0 +1,199 @@
+#include "global.h"
+#include "heap.h"
+#include "unk_0200CA44.h"
+#include "mod21_02254854.h"
+
+extern void GF_RTC_CopyTime(Time *param0);
+
+u8 const MOD21_02254D80[] = { 0x10, 0xAF, 0x10, 0xCF };
+extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4);
+extern void MOD20_02252C14(u32 param0, BOOL param1);
+
+extern void MOD20_02254198(BOOL param0);
+extern void MOD20_022529A0(u32 param0);
+
+extern void MOD20_0225298C(u32 param0);
+
+extern void Poketch_InitApp(void *func1, void *func2);
+
+THUMB_FUNC static void MOD21_02254840(void)
+{
+ Poketch_InitApp(MOD21_02254854, MOD21_0225496C);
+}
+
+#define NitroStaticInit MOD21_02254840
+#include "sinit.h"
+
+THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3)
+{
+ UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854));
+ if (alloced != NULL)
+ {
+ if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44((void (*)(u32, void *))MOD21_02254930, alloced, (void *)1))
+ {
+ *param0 = alloced;
+ return TRUE;
+ }
+ FreeToHeap(alloced);
+ }
+ return FALSE;
+}
+
+THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3)
+{
+#pragma unused (param2, param3) //not sure, please check
+ if (MOD21_02254A6C((UnkStruct02254A6C *)&param0->Unk24, &param0->time)) //todo fix
+ {
+ param0->bytearray[0] = 0;
+ param0->bytearray[1] = 0;
+ param0->bytearray[2] = 0;
+ param0->bytearray[3] = 1;
+ param0->bytearray[6] = 0;
+ param0->Unk20 = 0;
+ GF_RTC_CopyTime(&param0->time);
+ if (param0->time.hour >= 0x18)
+ {
+ param0->time.hour = param0->time.hour % 0x18;
+ }
+ if (param0->time.minute >= 0x3c)
+ {
+ param0->time.hour = param0->time.hour % 0x3c;
+ }
+ param0->bytearray[5] = (u8)param0->time.minute;
+ param0->Unk10 = MOD20_02254130((void *)MOD21_02254D80, TRUE, MOD21_02254974, param0, 8);
+ if (param0->Unk10 == FALSE)
+ {
+ return FALSE;
+ }
+ param0->Unk28 = param1;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+BOOL (* const MOD21_02254D84[])(UnkStruct02254854 *) = { MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 };
+
+THUMB_FUNC void MOD21_02254918(UnkStruct02254854 *param0)
+{
+ MOD21_02254B04(param0->Unk24);
+ MOD20_02254198(param0->Unk10);
+ FreeToHeap((void *)param0);
+}
+
+THUMB_FUNC void MOD21_02254930(u32 param0, UnkStruct02254854 *param1)
+{
+ if (param1->bytearray[0] >= 3)
+ {
+ return;
+ }
+ MOD20_02252C14(param1->Unk28, param1->Unk10);
+ if (!MOD21_02254D84[param1->bytearray[0]](param1))
+ {
+ return;
+ }
+ MOD21_02254918(param1);
+ FUN_0200CAB4((s32)param0);
+ MOD20_022529A0(param1->Unk28);
+}
+
+THUMB_FUNC void MOD21_0225496C(UnkStruct02254854 *param0)
+{
+ param0->bytearray[2] = 1;
+}
+
+THUMB_FUNC void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct02254854 * param3)
+{
+#pragma unused (param0, param1)
+ switch (param2)
+ {
+ case 1:
+ param3->Unk20 = 1;
+ param3->bytearray[6] = 1;
+ return;
+ case 0:
+ param3->Unk20 = 0;
+ param3->bytearray[6] = 1;
+ return;
+ default:
+ return;
+ }
+}
+
+THUMB_FUNC void MOD21_02254990(UnkStruct02254854 * param0, u8 param1)
+{
+ if (param0->bytearray[2] == 0)
+ {
+ param0->bytearray[0] = param1;
+ }
+ else
+ {
+ param0->bytearray[0] = 2;
+ }
+ param0->bytearray[1] = 0;
+}
+
+THUMB_FUNC BOOL MOD21_022549A4(UnkStruct02254854 * param0)
+{
+ switch (param0->bytearray[1])
+ {
+ case 0:
+ MOD21_02254B10(param0->Unk24, 0);
+ param0->bytearray[1]++;
+ break;
+ case 1:
+ if (MOD21_02254B34(param0->Unk24, 0) == FALSE)
+ {
+ break;
+ }
+ MOD20_0225298C(param0->Unk28);
+ MOD21_02254990(param0, 1);
+ break;
+ default:
+ break;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC BOOL MOD21_022549E4(UnkStruct02254854 * param0)
+{
+ if (param0->bytearray[2])
+ {
+ MOD21_02254990(param0, 2);
+ return FALSE;
+ }
+ if (param0->bytearray[6])
+ {
+ param0->bytearray[6] = 0;
+ MOD21_02254B10(param0->Unk24, 2);
+ }
+ if (MOD21_02254B34(param0->Unk24, 1))
+ {
+ param0->bytearray[5] = (u8)param0->time.minute;
+ GF_RTC_CopyTime(&param0->time);
+ if (param0->bytearray[5] != param0->time.minute)
+ {
+ MOD21_02254B10(param0->Unk24, 1);
+ }
+ }
+ return FALSE;
+}
+
+THUMB_FUNC BOOL MOD21_02254A38(UnkStruct02254854 * param0)
+{
+ switch (param0->bytearray[1])
+ {
+ case 0:
+ MOD21_02254B10(param0->Unk24, 3);
+ param0->bytearray[1]++;
+ break;
+ case 1:
+ if (MOD21_02254B40(param0->Unk24))
+ {
+ return TRUE;
+ }
+ break;
+ default:
+ break;
+ }
+ return FALSE;
+}
diff --git a/arm9/modules/21/src/mod21_02254A6C.c b/arm9/modules/21/src/mod21_02254A6C.c
new file mode 100644
index 00000000..1dcbe4b8
--- /dev/null
+++ b/arm9/modules/21/src/mod21_02254A6C.c
@@ -0,0 +1,187 @@
+#include "global.h"
+#include "heap.h"
+#include "mod21_02254A6C.h"
+#include "MI_memory.h"
+
+extern void MOD20_022536F4(u32 *param0, u32 param1);
+extern u32 MOD20_02252D34(void);
+extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4);
+extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, void *param4, u32 param5, u32 param6);
+
+UnkOverlayStruct1 const MOD21_02254DAC[] = {
+ { 0, MOD21_02254B60, 0 },
+ { 1, MOD21_02254BF4, 0 },
+ { 2, MOD21_02254C14, 0 },
+ { 3, MOD21_02254C40, 0 },
+ { 0, NULL, 0 }
+};
+
+extern BOOL MOD20_02253794(void *param0, u32 param1);
+extern BOOL MOD20_022537B8(void *param0);
+extern UnkStruct02254A6C *MOD20_022538A0(void *param0);
+extern BOOL MOD20_02253888(void *param0, void *param1);
+
+//todo datatype
+u8 const MOD21_02254D90[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+extern void FUN_02016C18(u32 param0, u32 param1, void *param2, u32 param3);
+extern void FUN_0200687C(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7);
+extern void FUN_020068C8(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7);
+extern void MOD20_02252D7C(u32 param0, u32 param1);
+extern void FUN_02017CD0(u32 param0, u32 param1);
+extern void FUN_020178A0(u32 param0, u32 param1);
+
+extern void FUN_02018170(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 *param6, u8 param7, u32 param8, u32 param9, u32 param10);
+
+extern void MOD11_02252DB4(u32 param0, u32 param1);
+
+THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1)
+{
+ UnkStruct02254A6C *strct = (UnkStruct02254A6C *)AllocFromHeap(8, 3 << 8);
+ u32 sp4;
+ if (strct != NULL)
+ {
+ MOD20_022536F4(strct->Unk08, 8);
+ strct->Unk00 = param1;
+ strct->Unk04 = MOD20_02252D34();
+ void *res = FUN_02006BDC(12, 0x19, 1, &sp4, 8);
+ if (res == 0)
+ {
+ FreeToHeap(strct);
+ return FALSE;
+ }
+ MOD21_02254AD4((void *)(sp4 + 0xc), strct->Unk30);
+ FreeToHeap(res);
+ param0->Unk00 = strct;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void MOD21_02254AD4(void *param0, void *param1)
+{
+ s32 i = 0;
+ for (u32 r6 = 9 << 6; i < 9; r6 -= 0x30)
+ {
+ MI_CpuCopy16(param0, param1, 0x40);
+ MI_CpuCopy16((void *)((u32)param0 + r6), (void *)((u32)param1 + 0x40), 0x10);
+ i++;
+ param0 = (void *)((u32)param0 + 0x40);
+ param1 = (void *)((u32)param1 + 0x50);
+ }
+}
+
+THUMB_FUNC void MOD21_02254B04(void *param0)
+{
+ if (param0 != NULL)
+ {
+ FreeToHeap(param0);
+ }
+}
+
+THUMB_FUNC void MOD21_02254B10(u32 *param0, u32 param1)
+{
+ MOD20_022537E0(MOD21_02254DAC, param1, param0, *param0, (void *)(param0 + 2), 2, 8);
+}
+
+THUMB_FUNC BOOL MOD21_02254B34(void *param0, u32 param1)
+{
+ return MOD20_02253794((void *)((u32)param0 + 8), param1);
+}
+
+THUMB_FUNC BOOL MOD21_02254B40(void *param0)
+{
+ return MOD20_022537B8((void *)((u32)param0 + 8));
+}
+
+THUMB_FUNC BOOL MOD21_02254B4C(void *param0)
+{
+ return MOD20_02253888((void *)((u32)MOD20_022538A0(param0) + 8), param0);
+}
+
+THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1)
+{
+#pragma unused (param0)
+ UnkStruct02254A6C *strct = MOD20_022538A0(param1);
+ FUN_02016C18(strct->Unk04, 6, MOD21_02254D90, 0);
+ FUN_0200687C(12, 23, strct->Unk04, 6, 0, 0, 1, 8);
+ FUN_020068C8(12, 24, strct->Unk04, 6, 0, 0, 1, 8);
+ MOD20_02252D7C(0, 0);
+ MOD21_02254C5C(strct);
+ FUN_02017CD0(strct->Unk04, 6);
+ u32 r3 = reg_GXS_DB_DISPCNT;
+ u32 r2 = reg_GXS_DB_DISPCNT;
+ vu32 tmp = r3; //unused? wtf
+ u32 r0 = ~0x1F00 & r2;
+ r2 = r3 << 19; //cast with shift? can't replicate both though
+ r3 = r2 >> 27;
+ r2 = 4 | r3;
+ r2 <<= 8;
+ r0 |= r2;
+ reg_GXS_DB_DISPCNT = r0;
+ return MOD21_02254B4C(param1);
+}
+
+THUMB_FUNC BOOL MOD21_02254BF4(u32 param0, void *param1)
+{
+#pragma unused (param0)
+ UnkStruct02254A6C *strct = MOD20_022538A0(param1);
+ MOD21_02254C5C(strct);
+ FUN_02017CD0(strct->Unk04, 6);
+ return MOD21_02254B4C(param1);
+}
+
+THUMB_FUNC BOOL MOD21_02254C14(u32 param0, void *param1)
+{
+#pragma unused (param0)
+ UnkStruct02254A6C *strct = MOD20_022538A0(param1);
+ if (strct->Unk00->Unk0C)
+ {
+ MOD11_02252DB4(0, 0);
+ }
+ else
+ {
+ MOD20_02252D7C(0, 0);
+ }
+ return MOD21_02254B4C(param1);
+}
+
+THUMB_FUNC BOOL MOD21_02254C40(u32 param0, void *param1)
+{
+#pragma unused (param0)
+ UnkStruct02254A6C *strct = MOD20_022538A0(param1);
+ FUN_020178A0(strct->Unk04, 6);
+ return MOD21_02254B4C(param1);
+}
+
+THUMB_FUNC void MOD21_02254C5C(UnkStruct02254A6C *param0)
+{
+ u32 tmp = (u32)param0->Unk00->Unk00;
+ reg_CP_DIVCNT = 0;
+ (*(vu32 *)REG_DIV_NUMER_ADDR) = tmp;
+ reg_CP_DIV_DENOM = 10;
+ while (reg_CP_DIVCNT & ((u32)&reg_CP_DIVCNT >> 0xb)) { }
+
+ u32 regaddr = (u32)&reg_CP_DIV_RESULT_L;
+ u32 divResult = *(u32 *)regaddr;
+ while (reg_CP_DIVCNT & (regaddr >> 0xb)) { }
+
+ u32 divRemRes = reg_CP_DIVREM_RESULT_L;
+ FUN_02018170(param0->Unk04, 6, 3, 7, 4, 9, param0->Unk30, (u8)(divResult << 2), 0, 40, 9);
+ FUN_02018170(param0->Unk04, 6, 8, 7, 4, 9, param0->Unk30, (u8)(divRemRes << 2), 0, 40, 9);
+
+ tmp = param0->Unk00->Unk04;
+ reg_CP_DIVCNT = 0;
+ (*(vu32 *)REG_DIV_NUMER_ADDR) = tmp;
+ reg_CP_DIV_DENOM = 10;
+
+ while (reg_CP_DIVCNT & ((u32)&reg_CP_DIVCNT >> 0xb)) { }
+
+ divResult = *(u32 *)regaddr;
+ while (reg_CP_DIVCNT & (regaddr >> 0xb)) { }
+
+ divRemRes = reg_CP_DIVREM_RESULT_L;
+ FUN_02018170(param0->Unk04, 6, 15, 7, 4, 9, param0->Unk30, (u8)(divResult << 2), 0, 40, 9);
+ FUN_02018170(param0->Unk04, 6, 20, 7, 4, 9, param0->Unk30, (u8)(divRemRes << 2), 0, 40, 9);
+}
diff --git a/arm9/modules/21/src/module_21_sinit.c b/arm9/modules/21/src/module_21_sinit.c
deleted file mode 100644
index 2af569ec..00000000
--- a/arm9/modules/21/src/module_21_sinit.c
+++ /dev/null
@@ -1,13 +0,0 @@
-#include "global.h"
-
-extern void Poketch_InitApp(void *func1, void *func2);
-extern void MOD21_02254854();
-extern void MOD21_0225496C();
-
-THUMB_FUNC static void MOD21_02254840(void)
-{
- Poketch_InitApp(MOD21_02254854, MOD21_0225496C);
-}
-
-#define NitroStaticInit MOD21_02254840
-#include "sinit.h"
diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s
index 3fac1c6f..22824930 100644
--- a/arm9/modules/52/asm/module_52.s
+++ b/arm9/modules/52/asm/module_52.s
@@ -116,7 +116,7 @@ MOD52_021D7594: ; 0x021D7594
bl MOD52_021D7688
add r0, r4, #0
mov r1, #0
- bl FUN_02024F9C
+ bl Options_SetButtonModeOnMain
add r0, r5, #0
bl Sav2_SysInfo_MacAddressIsMine
cmp r0, #0
diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s
index d128782b..366c45bd 100644
--- a/arm9/modules/53/asm/module_53.s
+++ b/arm9/modules/53/asm/module_53.s
@@ -846,7 +846,7 @@ MOD53_021D7B60: ; 0x021D7B60
bl FUN_020068C8
ldr r0, [r5, #8]
ldr r0, [r0, #8]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s
index 0acfed98..49c51d11 100644
--- a/arm9/modules/54/asm/module_54.s
+++ b/arm9/modules/54/asm/module_54.s
@@ -766,7 +766,7 @@ MOD54_021D7AA0: ; 0x021D7AA0
bl FUN_020068C8
ldr r0, [r5, #8]
ldr r0, [r0, #8]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -1502,7 +1502,7 @@ MOD54_021D8120: ; 0x021D8120
ldr r1, _021D814C ; =0x021D9678
mov r2, #0x1f
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x32
lsl r1, r1, #4
str r0, [r5, r1]
@@ -1767,7 +1767,7 @@ MOD54_021D8340: ; 0x021D8340
ldr r1, _021D836C ; =0x021D9678
mov r2, #0x1f
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x32
lsl r1, r1, #4
str r0, [r5, r1]
@@ -2128,7 +2128,7 @@ MOD54_021D8600: ; 0x021D8600
ldr r1, _021D862C ; =0x021D9678
mov r2, #0x1f
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x32
lsl r1, r1, #4
str r0, [r5, r1]
diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s
index eb124639..b6f57d67 100644
--- a/arm9/modules/55/asm/module_55.s
+++ b/arm9/modules/55/asm/module_55.s
@@ -808,7 +808,7 @@ MOD55_021D7AE0: ; 0x021D7AE0
bl FUN_020068C8
ldr r0, [r5, #8]
bl Sav2_PlayerData_GetOptionsAddr
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -2031,7 +2031,7 @@ MOD55_021D8544: ; 0x021D8544
ldr r1, _021D857C ; =0x021DA2AC
ldr r2, _021D8580 ; =0x000001D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
add r1, r5, #0
add r1, #0xe8
str r0, [r1]
@@ -5253,7 +5253,7 @@ MOD55_021D9FDC: ; 0x021D9FDC
ldr r1, _021DA014 ; =0x021DA2AC
ldr r2, _021DA018 ; =0x000001D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
add r1, r5, #0
add r1, #0xe8
str r0, [r1]
@@ -5349,7 +5349,7 @@ MOD55_021DA0A4: ; 0x021DA0A4
ldr r0, [r5, #8]
add r6, r1, #0
bl Sav2_PlayerData_GetOptionsAddr
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
add r4, r0, #0
mov r0, #0xce
lsl r0, r0, #2
diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s
index fbe645b5..97d746da 100644
--- a/arm9/modules/56/asm/module_56.s
+++ b/arm9/modules/56/asm/module_56.s
@@ -1014,7 +1014,7 @@ MOD56_0221257C: ; 0x0221257C
add r5, #0xc4
ldr r0, [r5]
bl Sav2_PlayerData_GetOptionsAddr
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -1565,7 +1565,7 @@ _02212A9A:
ldr r1, _02212B34 ; =0x02216310
ldr r2, _02212B38 ; =0x000001D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r5, r1]
@@ -1627,7 +1627,7 @@ MOD56_02212B3C: ; 0x02212B3C
ldr r1, _02212B7C ; =0x022162F8
ldr r2, _02212B80 ; =0x000001D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r5, r1]
@@ -1727,7 +1727,7 @@ MOD56_02212BE8: ; 0x02212BE8
ldr r1, _02212C48 ; =0x02216310
ldr r2, _02212C4C ; =0x000001D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r5, r1]
@@ -1786,7 +1786,7 @@ _02212C74:
ldr r1, _02212CC4 ; =0x02216310
ldr r2, _02212CC8 ; =0x000001D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r5, r1]
@@ -2378,7 +2378,7 @@ MOD56_022130F4: ; 0x022130F4
ldr r1, _02213134 ; =0x02216308
ldr r2, _02213138 ; =0x000001D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r5, r1]
@@ -4575,7 +4575,7 @@ MOD56_02214238: ; 0x02214238
ldr r1, _02214284 ; =0x02216308
ldr r2, _02214288 ; =0x000001D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r5, r1]
@@ -4968,7 +4968,7 @@ MOD56_02214520: ; 0x02214520
ldr r1, _02214560 ; =0x02216308
ldr r2, _02214564 ; =0x000001D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r5, r1]
@@ -6212,7 +6212,7 @@ MOD56_02214F0C: ; 0x02214F0C
ldr r1, _02214F4C ; =0x02216308
ldr r2, _02214F50 ; =0x000001D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r5, r1]
@@ -6317,7 +6317,7 @@ MOD56_02214FD8: ; 0x02214FD8
ldr r1, _02215018 ; =0x02216308
ldr r2, _0221501C ; =0x000001D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r5, r1]
@@ -7646,7 +7646,7 @@ MOD56_02215A8C: ; 0x02215A8C
ldr r1, _02215ACC ; =0x02216308
ldr r2, _02215AD0 ; =0x000001D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r5, r1]
@@ -7831,7 +7831,7 @@ _02215BF0:
ldr r1, _02215C28 ; =0x02216308
ldr r2, _02215C2C ; =0x000001D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r5, r1]
@@ -7985,7 +7985,7 @@ MOD56_02215D20: ; 0x02215D20
ldr r1, _02215D60 ; =0x02216308
ldr r2, _02215D64 ; =0x000001D9
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r5, r1]
@@ -8164,7 +8164,7 @@ MOD56_02215EA4: ; 0x02215EA4
add r4, r1, #0
add r6, r2, #0
bl Sav2_PlayerData_GetOptionsAddr
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
add r7, r0, #0
mov r0, #0xdb
lsl r0, r0, #2
diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s
index ddcbedd9..a22e6e08 100644
--- a/arm9/modules/58/asm/module_58.s
+++ b/arm9/modules/58/asm/module_58.s
@@ -662,7 +662,7 @@ MOD58_021D9F14: ; 0x021D9F14
mov r3, #5
bl FUN_020068C8
ldr r0, [r5, #0xc]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -2226,7 +2226,7 @@ MOD58_021DAB94: ; 0x021DAB94
mov r3, #0xa
bl FUN_0200D0BC
ldr r0, [r5, #0xc]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
mov r3, #0
str r3, [sp]
str r0, [sp, #4]
diff --git a/arm9/modules/59/asm/module_59.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s
index 9182c632..77f574fd 100644
--- a/arm9/modules/59/asm/module_59.s
+++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s
@@ -3,69 +3,6 @@
.section .text
.balign 4, 0
- thumb_func_start MOD59_021D74E0
-MOD59_021D74E0: ; 0x021D74E0
- push {r3, r4, r5, lr}
- mov r2, #1
- add r5, r0, #0
- mov r0, #3
- mov r1, #0x52
- lsl r2, r2, #0x12
- bl FUN_0201681C
- add r0, r5, #0
- mov r1, #0xb4
- mov r2, #0x52
- bl OverlayManager_CreateAndGetData
- mov r1, #0
- mov r2, #0xb4
- add r4, r0, #0
- bl memset
- mov r0, #0x52
- str r0, [r4]
- add r0, r5, #0
- bl OverlayManager_GetField18
- ldr r0, [r0, #8]
- str r0, [r4, #4]
- bl Sav2_PlayerData_GetOptionsAddr
- mov r1, #0
- str r0, [r4, #8]
- str r1, [r4, #0xc]
- str r1, [r4, #0x10]
- str r1, [r4, #0x14]
- ldr r0, [r4, #8]
- add r2, r1, #0
- str r0, [sp]
- mov r0, #0x52
- mov r3, #7
- bl FUN_02077A84
- str r0, [r4, #0x70]
- ldr r0, [r4, #8]
- mov r1, #3
- str r0, [sp]
- mov r0, #0x52
- mov r2, #0
- mov r3, #7
- bl FUN_02077A84
- str r0, [r4, #0x74]
- add r0, r4, #0
- mov r1, #0
- add r0, #0x88
- strb r1, [r0]
- add r0, r4, #0
- add r0, #0x89
- strb r1, [r0]
- add r0, r4, #0
- add r0, #0x8a
- strb r1, [r0]
- add r0, r4, #0
- add r0, #0x8b
- strb r1, [r0]
- add r4, #0x90
- str r1, [r4]
- mov r0, #1
- pop {r3, r4, r5, pc}
- thumb_func_end MOD59_021D74E0
-
thumb_func_start MOD59_021D7564
MOD59_021D7564: ; 0x021D7564
push {r3, r4, r5, r6, lr}
@@ -999,7 +936,7 @@ _021D7C5E:
add r0, r6, #0
bl String_dtor
ldr r0, [r5, #8]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
add r3, r4, #0
str r3, [sp]
str r0, [sp, #4]
@@ -4411,633 +4348,8 @@ _021D985C:
_021D9864: .word MOD59_021D9DDC
thumb_func_end MOD59_021D8920
- thumb_func_start MOD59_021D9868
-MOD59_021D9868: ; 0x021D9868
- push {r4, lr}
- mov r2, #1
- add r4, r0, #0
- mov r0, #3
- mov r1, #0x53
- lsl r2, r2, #0x12
- bl FUN_0201681C
- add r0, r4, #0
- mov r1, #0x28
- mov r2, #0x53
- bl OverlayManager_CreateAndGetData
- mov r1, #0
- mov r2, #0x28
- add r4, r0, #0
- bl memset
- mov r0, #0x53
- str r0, [r4]
- mov r0, #0
- str r0, [r4, #0x24]
- mov r0, #1
- pop {r4, pc}
- thumb_func_end MOD59_021D9868
-
- thumb_func_start MOD59_021D9898
-MOD59_021D9898: ; 0x021D9898
- push {r3, r4, r5, r6, lr}
- sub sp, #0xc
- add r5, r1, #0
- bl OverlayManager_GetData
- ldr r1, [r5]
- add r4, r0, #0
- mov r6, #0
- cmp r1, #5
- bls _021D98AE
- b _021D99E2
-_021D98AE:
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021D98BA: ; jump table
- .short _021D98C6 - _021D98BA - 2 ; case 0
- .short _021D992C - _021D98BA - 2 ; case 1
- .short _021D9952 - _021D98BA - 2 ; case 2
- .short _021D997C - _021D98BA - 2 ; case 3
- .short _021D998E - _021D98BA - 2 ; case 4
- .short _021D99C0 - _021D98BA - 2 ; case 5
-_021D98C6:
- add r0, r6, #0
- add r1, r6, #0
- bl FUN_0200E3A0
- mov r0, #1
- add r1, r6, #0
- bl FUN_0200E3A0
- add r0, r6, #0
- add r1, r0, #0
- bl Main_SetVBlankIntrCB
- add r0, r6, #0
- add r1, r0, #0
- bl FUN_02015F34
- bl FUN_0201E6D8
- bl FUN_0201E740
- mov r2, #1
- lsl r2, r2, #0x1a
- ldr r1, [r2]
- ldr r0, _021D99E8 ; =0xFFFFE0FF
- and r1, r0
- str r1, [r2]
- ldr r2, _021D99EC ; =0x04001000
- ldr r1, [r2]
- and r0, r1
- str r0, [r2]
- mov r0, #4
- mov r1, #8
- bl FUN_0201669C
- add r0, r4, #0
- bl MOD59_021D9A20
- add r0, r4, #0
- bl MOD59_021D9C48
- ldr r0, _021D99F0 ; =MOD59_021D9A14
- add r1, r4, #0
- bl Main_SetVBlankIntrCB
- bl FUN_0201E788
- mov r0, #0x3c
- str r0, [r4, #0x24]
- mov r0, #1
- str r0, [r5]
- b _021D99E2
-_021D992C:
- ldr r0, [r4, #0x24]
- cmp r0, #0
- beq _021D9938
- sub r0, r0, #1
- str r0, [r4, #0x24]
- b _021D99E2
-_021D9938:
- ldr r0, _021D99F4 ; =0x00000406
- bl FUN_0200414C
- ldr r1, _021D99F4 ; =0x00000406
- mov r0, #4
- mov r2, #1
- bl FUN_0200433C
- mov r0, #0x5a
- str r0, [r4, #0x24]
- mov r0, #2
- str r0, [r5]
- b _021D99E2
-_021D9952:
- ldr r0, [r4, #0x24]
- cmp r0, #0
- beq _021D995E
- sub r0, r0, #1
- str r0, [r4, #0x24]
- b _021D99E2
-_021D995E:
- str r6, [r4, #0x24]
- mov r0, #6
- mov r1, #1
- str r0, [sp]
- str r1, [sp, #4]
- ldr r0, [r4]
- add r2, r1, #0
- str r0, [sp, #8]
- add r0, r6, #0
- add r3, r6, #0
- bl FUN_0200E1D0
- mov r0, #3
- str r0, [r5]
- b _021D99E2
-_021D997C:
- bl MOD59_021D9D78
- bl FUN_0200E308
- cmp r0, #1
- bne _021D99E2
- mov r0, #4
- str r0, [r5]
- b _021D99E2
-_021D998E:
- bl MOD59_021D9D78
- add r0, r4, #0
- add r1, r6, #0
- mov r2, #0x28
- mov r3, #0x30
- bl MOD59_021D9C74
- cmp r0, #1
- bne _021D99E2
- mov r0, #6
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- ldr r0, [r4]
- str r0, [sp, #8]
- add r0, r6, #0
- add r1, r0, #0
- add r2, r0, #0
- add r3, r0, #0
- bl FUN_0200E1D0
- mov r0, #5
- str r0, [r5]
- b _021D99E2
-_021D99C0:
- bl MOD59_021D9D78
- bl FUN_0200E308
- cmp r0, #1
- bne _021D99E2
- add r0, r4, #0
- bl MOD59_021D9C68
- add r0, r4, #0
- bl MOD59_021D9BD0
- add r0, r6, #0
- add r1, r0, #0
- bl Main_SetVBlankIntrCB
- mov r6, #1
-_021D99E2:
- add r0, r6, #0
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
- .align 2, 0
-_021D99E8: .word 0xFFFFE0FF
-_021D99EC: .word 0x04001000
-_021D99F0: .word MOD59_021D9A14
-_021D99F4: .word 0x00000406
- thumb_func_end MOD59_021D9898
-
- thumb_func_start MOD59_021D99F8
-MOD59_021D99F8: ; 0x021D99F8
- push {r3, r4, r5, lr}
- add r5, r0, #0
- bl OverlayManager_GetData
- ldr r4, [r0]
- add r0, r5, #0
- bl OverlayManager_FreeData
- add r0, r4, #0
- bl FUN_020168D0
- mov r0, #1
- pop {r3, r4, r5, pc}
- .align 2, 0
- thumb_func_end MOD59_021D99F8
-
- thumb_func_start MOD59_021D9A14
-MOD59_021D9A14: ; 0x021D9A14
- ldr r3, _021D9A1C ; =FUN_0201AB60
- ldr r0, [r0, #4]
- bx r3
- nop
-_021D9A1C: .word FUN_0201AB60
- thumb_func_end MOD59_021D9A14
-
- thumb_func_start MOD59_021D9A20
-MOD59_021D9A20: ; 0x021D9A20
- push {r3, r4, r5, lr}
- sub sp, #0xb8
- ldr r5, _021D9BB4 ; =0x021DA0D4
- add r4, r0, #0
- add r3, sp, #0x90
- mov r2, #5
-_021D9A2C:
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- sub r2, r2, #1
- bne _021D9A2C
- add r0, sp, #0x90
- bl FUN_0201E66C
- ldr r0, [r4]
- bl FUN_02016B94
- add r3, sp, #0x80
- ldr r5, _021D9BB8 ; =0x021DA054
- str r0, [r4, #4]
- add r2, r3, #0
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- add r0, r2, #0
- bl FUN_02016BBC
- ldr r5, _021D9BBC ; =0x021DA080
- add r3, sp, #0x64
- ldmia r5!, {r0, r1}
- add r2, r3, #0
- stmia r3!, {r0, r1}
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- ldr r0, [r5]
- mov r1, #2
- str r0, [r3]
- ldr r0, [r4, #4]
- mov r3, #0
- bl FUN_02016C18
- ldr r3, [r4]
- mov r0, #2
- mov r1, #0x20
- mov r2, #0
- bl FUN_02017F18
- ldr r0, [r4, #4]
- mov r1, #2
- bl FUN_02018744
- ldr r5, _021D9BC0 ; =0x021DA09C
- add r3, sp, #0x48
- ldmia r5!, {r0, r1}
- add r2, r3, #0
- stmia r3!, {r0, r1}
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- ldr r0, [r5]
- mov r1, #0
- str r0, [r3]
- ldr r0, [r4, #4]
- add r3, r1, #0
- bl FUN_02016C18
- mov r3, #0
- str r3, [sp]
- str r3, [sp, #4]
- str r3, [sp, #8]
- ldr r0, [r4]
- mov r1, #1
- str r0, [sp, #0xc]
- ldr r2, [r4, #4]
- mov r0, #0x88
- bl FUN_0200687C
- mov r3, #0
- str r3, [sp]
- str r3, [sp, #4]
- str r3, [sp, #8]
- ldr r0, [r4]
- mov r1, #4
- str r0, [sp, #0xc]
- ldr r2, [r4, #4]
- mov r0, #0x88
- bl FUN_020068C8
- ldr r5, _021D9BC4 ; =0x021DA064
- add r3, sp, #0x2c
- ldmia r5!, {r0, r1}
- add r2, r3, #0
- stmia r3!, {r0, r1}
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- ldr r0, [r5]
- mov r1, #1
- str r0, [r3]
- ldr r0, [r4, #4]
- mov r3, #0
- bl FUN_02016C18
- mov r0, #0
- str r0, [sp]
- str r0, [sp, #4]
- str r0, [sp, #8]
- ldr r0, [r4]
- mov r1, #2
- str r0, [sp, #0xc]
- ldr r2, [r4, #4]
- mov r0, #0x88
- mov r3, #1
- bl FUN_0200687C
- mov r0, #0
- str r0, [sp]
- str r0, [sp, #4]
- str r0, [sp, #8]
- ldr r0, [r4]
- mov r1, #5
- str r0, [sp, #0xc]
- ldr r2, [r4, #4]
- mov r0, #0x88
- mov r3, #1
- bl FUN_020068C8
- ldr r5, _021D9BC8 ; =0x021DA0B8
- add r3, sp, #0x10
- ldmia r5!, {r0, r1}
- add r2, r3, #0
- stmia r3!, {r0, r1}
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- ldmia r5!, {r0, r1}
- stmia r3!, {r0, r1}
- ldr r0, [r5]
- mov r1, #3
- str r0, [r3]
- ldr r0, [r4, #4]
- mov r3, #0
- bl FUN_02016C18
- mov r1, #0
- str r1, [sp]
- str r1, [sp, #4]
- str r1, [sp, #8]
- ldr r0, [r4]
- mov r3, #3
- str r0, [sp, #0xc]
- ldr r2, [r4, #4]
- mov r0, #0x88
- bl FUN_0200687C
- mov r0, #0
- str r0, [sp]
- str r0, [sp, #4]
- str r0, [sp, #8]
- ldr r0, [r4]
- mov r1, #3
- str r0, [sp, #0xc]
- ldr r2, [r4, #4]
- mov r0, #0x88
- add r3, r1, #0
- bl FUN_020068C8
- mov r2, #0
- str r2, [sp]
- ldr r0, [r4]
- mov r1, #6
- str r0, [sp, #4]
- mov r0, #0x88
- add r3, r2, #0
- bl FUN_02006930
- ldr r2, [r4]
- mov r0, #0
- mov r1, #0x20
- bl FUN_02002ED0
- mov r0, #0
- add r1, r0, #0
- bl FUN_02017FE4
- mov r0, #4
- mov r1, #0
- bl FUN_02017FE4
- mov r2, #0xc
- ldr r0, _021D9BCC ; =0x04000050
- mov r1, #2
- mov r3, #4
- str r2, [sp]
- bl G2x_SetBlendAlpha_
- add sp, #0xb8
- pop {r3, r4, r5, pc}
- nop
-_021D9BB4: .word MOD59_021DA0D4
-_021D9BB8: .word MOD59_021DA054
-_021D9BBC: .word MOD59_021DA080
-_021D9BC0: .word MOD59_021DA09C
-_021D9BC4: .word MOD59_021DA064
-_021D9BC8: .word MOD59_021DA0B8
-_021D9BCC: .word 0x04000050
- thumb_func_end MOD59_021D9A20
-
- thumb_func_start MOD59_021D9BD0
-MOD59_021D9BD0: ; 0x021D9BD0
- push {r4, lr}
- add r4, r0, #0
- mov r0, #0
- add r1, r0, #0
- bl FUN_0201797C
- mov r0, #1
- mov r1, #0
- bl FUN_0201797C
- mov r0, #2
- mov r1, #0
- bl FUN_0201797C
- mov r0, #3
- mov r1, #0
- bl FUN_0201797C
- mov r0, #4
- mov r1, #0
- bl FUN_0201797C
- mov r0, #5
- mov r1, #0
- bl FUN_0201797C
- mov r0, #6
- mov r1, #0
- bl FUN_0201797C
- mov r0, #7
- mov r1, #0
- bl FUN_0201797C
- ldr r0, _021D9C44 ; =0x04000050
- mov r1, #0
- strh r1, [r0]
- ldr r0, [r4, #4]
- mov r1, #3
- bl FUN_020178A0
- ldr r0, [r4, #4]
- mov r1, #1
- bl FUN_020178A0
- ldr r0, [r4, #4]
- mov r1, #0
- bl FUN_020178A0
- ldr r0, [r4, #4]
- mov r1, #2
- bl FUN_020178A0
- ldr r0, [r4, #4]
- bl FreeToHeap
- pop {r4, pc}
- nop
-_021D9C44: .word 0x04000050
- thumb_func_end MOD59_021D9BD0
-
- thumb_func_start MOD59_021D9C48
-MOD59_021D9C48: ; 0x021D9C48
- push {r4, lr}
- add r4, r0, #0
- ldr r2, _021D9C64 ; =0x00000225
- ldr r3, [r4]
- mov r0, #1
- mov r1, #0x1a
- bl NewMsgDataFromNarc
- str r0, [r4, #8]
- bl FUN_0201BD5C
- mov r0, #0
- str r0, [r4, #0xc]
- pop {r4, pc}
- .align 2, 0
-_021D9C64: .word 0x00000225
- thumb_func_end MOD59_021D9C48
-
- thumb_func_start MOD59_021D9C68
-MOD59_021D9C68: ; 0x021D9C68
- ldr r3, _021D9C70 ; =DestroyMsgData
- ldr r0, [r0, #8]
- bx r3
- nop
-_021D9C70: .word DestroyMsgData
- thumb_func_end MOD59_021D9C68
-
- thumb_func_start MOD59_021D9C74
-MOD59_021D9C74: ; 0x021D9C74
- push {r4, r5, r6, r7, lr}
- sub sp, #0x14
- add r4, r0, #0
- ldr r0, [r4, #0xc]
- str r1, [sp, #0x10]
- add r7, r3, #0
- mov r5, #0
- cmp r0, #3
- bhi _021D9D66
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_021D9C92: ; jump table
- .short _021D9C9A - _021D9C92 - 2 ; case 0
- .short _021D9D24 - _021D9C92 - 2 ; case 1
- .short _021D9D36 - _021D9C92 - 2 ; case 2
- .short _021D9D50 - _021D9C92 - 2 ; case 3
-_021D9C9A:
- mov r0, #2
- add r1, r5, #0
- bl FUN_0201797C
- mov r0, #1
- ldr r1, [r4]
- lsl r0, r0, #0xa
- bl String_ctor
- add r6, r0, #0
- ldr r0, [r4, #8]
- ldr r1, [sp, #0x10]
- add r2, r6, #0
- bl ReadMsgDataIntoString
- add r1, r4, #0
- ldr r0, [r4, #4]
- ldr r2, _021D9D6C ; =0x021DA04C
- add r1, #0x10
- bl FUN_02019150
- add r1, r5, #0
- mov r0, #1
- lsl r0, r0, #8
- str r0, [sp]
- mov r0, #0xc0
- str r0, [sp, #4]
- add r0, r4, #0
- add r0, #0x10
- add r2, r1, #0
- add r3, r1, #0
- bl FUN_020196F4
- add r0, r5, #0
- add r1, r6, #0
- add r2, r0, #0
- bl FUN_02002F08
- mov r1, #1
- lsl r1, r1, #8
- sub r0, r1, r0
- lsr r3, r0, #1
- str r7, [sp]
- add r1, r5, #0
- ldr r0, _021D9D70 ; =0x000F0200
- str r1, [sp, #4]
- str r0, [sp, #8]
- add r0, r4, #0
- add r0, #0x10
- add r2, r6, #0
- str r1, [sp, #0xc]
- bl AddTextPrinterParameterized2
- add r0, r6, #0
- bl String_dtor
- add r0, r4, #0
- add r0, #0x10
- bl FUN_020191D0
- mov r0, #2
- mov r1, #1
- bl FUN_0201797C
- mov r0, #0xf0
- str r0, [r4, #0x24]
- mov r0, #1
- str r0, [r4, #0xc]
- b _021D9D66
-_021D9D24:
- ldr r0, [r4, #0x24]
- cmp r0, #0
- beq _021D9D30
- sub r0, r0, #1
- str r0, [r4, #0x24]
- b _021D9D66
-_021D9D30:
- mov r0, #2
- str r0, [r4, #0xc]
- b _021D9D66
-_021D9D36:
- ldr r0, _021D9D74 ; =gMain
- ldr r1, [r0, #0x48]
- mov r0, #1
- and r0, r1
- cmp r0, #1
- beq _021D9D4A
- mov r0, #2
- and r0, r1
- cmp r0, #2
- bne _021D9D66
-_021D9D4A:
- mov r0, #3
- str r0, [r4, #0xc]
- b _021D9D66
-_021D9D50:
- add r0, r4, #0
- add r0, #0x10
- bl FUN_02019178
- ldr r0, [r4, #4]
- mov r1, #2
- bl FUN_02018744
- add r0, r5, #0
- str r0, [r4, #0xc]
- mov r5, #1
-_021D9D66:
- add r0, r5, #0
- add sp, #0x14
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_021D9D6C: .word MOD59_021DA04C
-_021D9D70: .word 0x000F0200
-_021D9D74: .word gMain
- thumb_func_end MOD59_021D9C74
-
- thumb_func_start MOD59_021D9D78
-MOD59_021D9D78: ; 0x021D9D78
- push {r3, lr}
- ldr r1, [r0, #0x20]
- mov r2, #3
- add r3, r1, #4
- str r3, [r0, #0x20]
- ldr r0, [r0, #4]
- mov r1, #1
- asr r3, r3, #4
- bl FUN_020179E0
- pop {r3, pc}
- .align 2, 0
- thumb_func_end MOD59_021D9D78
-
.rodata
+
.global MOD59_021D9D90
MOD59_021D9D90: ; 0x021D9D90
.byte 0x00, 0x08, 0x00, 0x18, 0x18, 0x05, 0x2D, 0x01, 0x00, 0x04, 0x00, 0x18, 0x18, 0x05, 0x2D, 0x01
@@ -5168,40 +4480,3 @@ MOD59_021D9FE8: ; 0x021D9FE8
.byte 0x34, 0x35, 0x36, 0x37, 0x4C, 0x4D, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x4E, 0x4F
.byte 0x50, 0x51, 0x52, 0x53, 0x58, 0x59, 0x5A, 0x5B, 0x60, 0x61, 0x54, 0x55, 0x56, 0x57, 0x5C, 0x5D
.byte 0x5E, 0x5F, 0x62, 0x63
-
- .global MOD59_021DA04C
-MOD59_021DA04C: ; 0x021DA04C
- .byte 0x02, 0x00, 0x00, 0x20, 0x18, 0x01, 0x01, 0x00
-
- .global MOD59_021DA054
-MOD59_021DA054: ; 0x021DA054
- .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global MOD59_021DA064
-MOD59_021DA064: ; 0x021DA064
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x02, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global MOD59_021DA080
-MOD59_021DA080: ; 0x021DA080
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global MOD59_021DA09C
-MOD59_021DA09C: ; 0x021DA09C
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x01, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global MOD59_021DA0B8
-MOD59_021DA0B8: ; 0x021DA0B8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x01, 0x03, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global MOD59_021DA0D4
-MOD59_021DA0D4: ; 0x021DA0D4
- .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .data
- .bss
diff --git a/arm9/modules/59/asm/mod59_021D9868.s b/arm9/modules/59/asm/mod59_021D9868.s
new file mode 100644
index 00000000..4e03cbe3
--- /dev/null
+++ b/arm9/modules/59/asm/mod59_021D9868.s
@@ -0,0 +1,666 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD59_021D9868
+MOD59_021D9868: ; 0x021D9868
+ push {r4, lr}
+ mov r2, #1
+ add r4, r0, #0
+ mov r0, #3
+ mov r1, #0x53
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ add r0, r4, #0
+ mov r1, #0x28
+ mov r2, #0x53
+ bl OverlayManager_CreateAndGetData
+ mov r1, #0
+ mov r2, #0x28
+ add r4, r0, #0
+ bl memset
+ mov r0, #0x53
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r4, #0x24]
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD59_021D9868
+
+ thumb_func_start MOD59_021D9898
+MOD59_021D9898: ; 0x021D9898
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ bl OverlayManager_GetData
+ ldr r1, [r5]
+ add r4, r0, #0
+ mov r6, #0
+ cmp r1, #5
+ bls _021D98AE
+ b _021D99E2
+_021D98AE:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D98BA: ; jump table
+ .short _021D98C6 - _021D98BA - 2 ; case 0
+ .short _021D992C - _021D98BA - 2 ; case 1
+ .short _021D9952 - _021D98BA - 2 ; case 2
+ .short _021D997C - _021D98BA - 2 ; case 3
+ .short _021D998E - _021D98BA - 2 ; case 4
+ .short _021D99C0 - _021D98BA - 2 ; case 5
+_021D98C6:
+ add r0, r6, #0
+ add r1, r6, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ add r1, r6, #0
+ bl FUN_0200E3A0
+ add r0, r6, #0
+ add r1, r0, #0
+ bl Main_SetVBlankIntrCB
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D99E8 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D99EC ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ add r0, r4, #0
+ bl MOD59_021D9A20
+ add r0, r4, #0
+ bl MOD59_021D9C48
+ ldr r0, _021D99F0 ; =MOD59_021D9A14
+ add r1, r4, #0
+ bl Main_SetVBlankIntrCB
+ bl FUN_0201E788
+ mov r0, #0x3c
+ str r0, [r4, #0x24]
+ mov r0, #1
+ str r0, [r5]
+ b _021D99E2
+_021D992C:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021D9938
+ sub r0, r0, #1
+ str r0, [r4, #0x24]
+ b _021D99E2
+_021D9938:
+ ldr r0, _021D99F4 ; =0x00000406
+ bl FUN_0200414C
+ ldr r1, _021D99F4 ; =0x00000406
+ mov r0, #4
+ mov r2, #1
+ bl FUN_0200433C
+ mov r0, #0x5a
+ str r0, [r4, #0x24]
+ mov r0, #2
+ str r0, [r5]
+ b _021D99E2
+_021D9952:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021D995E
+ sub r0, r0, #1
+ str r0, [r4, #0x24]
+ b _021D99E2
+_021D995E:
+ str r6, [r4, #0x24]
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r3, r6, #0
+ bl FUN_0200E1D0
+ mov r0, #3
+ str r0, [r5]
+ b _021D99E2
+_021D997C:
+ bl MOD59_021D9D78
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D99E2
+ mov r0, #4
+ str r0, [r5]
+ b _021D99E2
+_021D998E:
+ bl MOD59_021D9D78
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x28
+ mov r3, #0x30
+ bl MOD59_021D9C74
+ cmp r0, #1
+ bne _021D99E2
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #5
+ str r0, [r5]
+ b _021D99E2
+_021D99C0:
+ bl MOD59_021D9D78
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D99E2
+ add r0, r4, #0
+ bl MOD59_021D9C68
+ add r0, r4, #0
+ bl MOD59_021D9BD0
+ add r0, r6, #0
+ add r1, r0, #0
+ bl Main_SetVBlankIntrCB
+ mov r6, #1
+_021D99E2:
+ add r0, r6, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D99E8: .word 0xFFFFE0FF
+_021D99EC: .word 0x04001000
+_021D99F0: .word MOD59_021D9A14
+_021D99F4: .word 0x00000406
+ thumb_func_end MOD59_021D9898
+
+ thumb_func_start MOD59_021D99F8
+MOD59_021D99F8: ; 0x021D99F8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl OverlayManager_GetData
+ ldr r4, [r0]
+ add r0, r5, #0
+ bl OverlayManager_FreeData
+ add r0, r4, #0
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD59_021D99F8
+
+ thumb_func_start MOD59_021D9A14
+MOD59_021D9A14: ; 0x021D9A14
+ ldr r3, _021D9A1C ; =FUN_0201AB60
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021D9A1C: .word FUN_0201AB60
+ thumb_func_end MOD59_021D9A14
+
+ thumb_func_start MOD59_021D9A20
+MOD59_021D9A20: ; 0x021D9A20
+ push {r3, r4, r5, lr}
+ sub sp, #0xb8
+ ldr r5, _021D9BB4 ; =0x021DA0D4
+ add r4, r0, #0
+ add r3, sp, #0x90
+ mov r2, #5
+_021D9A2C:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D9A2C
+ add r0, sp, #0x90
+ bl FUN_0201E66C
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0x80
+ ldr r5, _021D9BB8 ; =0x021DA054
+ str r0, [r4, #4]
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D9BBC ; =0x021DA080
+ add r3, sp, #0x64
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r3, [r4]
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02018744
+ ldr r5, _021D9BC0 ; =0x021DA09C
+ add r3, sp, #0x48
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ add r3, r1, #0
+ bl FUN_02016C18
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #1
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ bl FUN_0200687C
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #4
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ bl FUN_020068C8
+ ldr r5, _021D9BC4 ; =0x021DA064
+ add r3, sp, #0x2c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #2
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ mov r3, #1
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #5
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ mov r3, #1
+ bl FUN_020068C8
+ ldr r5, _021D9BC8 ; =0x021DA0B8
+ add r3, sp, #0x10
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r4]
+ mov r3, #3
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #3
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ add r3, r1, #0
+ bl FUN_020068C8
+ mov r2, #0
+ str r2, [sp]
+ ldr r0, [r4]
+ mov r1, #6
+ str r0, [sp, #4]
+ mov r0, #0x88
+ add r3, r2, #0
+ bl FUN_02006930
+ ldr r2, [r4]
+ mov r0, #0
+ mov r1, #0x20
+ bl FUN_02002ED0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02017FE4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ mov r2, #0xc
+ ldr r0, _021D9BCC ; =0x04000050
+ mov r1, #2
+ mov r3, #4
+ str r2, [sp]
+ bl G2x_SetBlendAlpha_
+ add sp, #0xb8
+ pop {r3, r4, r5, pc}
+ nop
+_021D9BB4: .word MOD59_021DA0D4
+_021D9BB8: .word MOD59_021DA054
+_021D9BBC: .word MOD59_021DA080
+_021D9BC0: .word MOD59_021DA09C
+_021D9BC4: .word MOD59_021DA064
+_021D9BC8: .word MOD59_021DA0B8
+_021D9BCC: .word 0x04000050
+ thumb_func_end MOD59_021D9A20
+
+ thumb_func_start MOD59_021D9BD0
+MOD59_021D9BD0: ; 0x021D9BD0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0201797C
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #3
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #5
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #6
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #0
+ bl FUN_0201797C
+ ldr r0, _021D9C44 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ ldr r0, [r4, #4]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ bl FreeToHeap
+ pop {r4, pc}
+ nop
+_021D9C44: .word 0x04000050
+ thumb_func_end MOD59_021D9BD0
+
+ thumb_func_start MOD59_021D9C48
+MOD59_021D9C48: ; 0x021D9C48
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, _021D9C64 ; =0x00000225
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x1a
+ bl NewMsgDataFromNarc
+ str r0, [r4, #8]
+ bl FUN_0201BD5C
+ mov r0, #0
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+ .align 2, 0
+_021D9C64: .word 0x00000225
+ thumb_func_end MOD59_021D9C48
+
+ thumb_func_start MOD59_021D9C68
+MOD59_021D9C68: ; 0x021D9C68
+ ldr r3, _021D9C70 ; =DestroyMsgData
+ ldr r0, [r0, #8]
+ bx r3
+ nop
+_021D9C70: .word DestroyMsgData
+ thumb_func_end MOD59_021D9C68
+
+ thumb_func_start MOD59_021D9C74
+MOD59_021D9C74: ; 0x021D9C74
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ str r1, [sp, #0x10]
+ add r7, r3, #0
+ mov r5, #0
+ cmp r0, #3
+ bhi _021D9D66
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9C92: ; jump table
+ .short _021D9C9A - _021D9C92 - 2 ; case 0
+ .short _021D9D24 - _021D9C92 - 2 ; case 1
+ .short _021D9D36 - _021D9C92 - 2 ; case 2
+ .short _021D9D50 - _021D9C92 - 2 ; case 3
+_021D9C9A:
+ mov r0, #2
+ add r1, r5, #0
+ bl FUN_0201797C
+ mov r0, #1
+ ldr r1, [r4]
+ lsl r0, r0, #0xa
+ bl String_ctor
+ add r6, r0, #0
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #0x10]
+ add r2, r6, #0
+ bl ReadMsgDataIntoString
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ ldr r2, _021D9D6C ; =0x021DA04C
+ add r1, #0x10
+ bl FUN_02019150
+ add r1, r5, #0
+ mov r0, #1
+ lsl r0, r0, #8
+ str r0, [sp]
+ mov r0, #0xc0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x10
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ bl FUN_02002F08
+ mov r1, #1
+ lsl r1, r1, #8
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ str r7, [sp]
+ add r1, r5, #0
+ ldr r0, _021D9D70 ; =0x000F0200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x10
+ add r2, r6, #0
+ str r1, [sp, #0xc]
+ bl AddTextPrinterParameterized2
+ add r0, r6, #0
+ bl String_dtor
+ add r0, r4, #0
+ add r0, #0x10
+ bl FUN_020191D0
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #0xf0
+ str r0, [r4, #0x24]
+ mov r0, #1
+ str r0, [r4, #0xc]
+ b _021D9D66
+_021D9D24:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021D9D30
+ sub r0, r0, #1
+ str r0, [r4, #0x24]
+ b _021D9D66
+_021D9D30:
+ mov r0, #2
+ str r0, [r4, #0xc]
+ b _021D9D66
+_021D9D36:
+ ldr r0, _021D9D74 ; =gMain
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ and r0, r1
+ cmp r0, #1
+ beq _021D9D4A
+ mov r0, #2
+ and r0, r1
+ cmp r0, #2
+ bne _021D9D66
+_021D9D4A:
+ mov r0, #3
+ str r0, [r4, #0xc]
+ b _021D9D66
+_021D9D50:
+ add r0, r4, #0
+ add r0, #0x10
+ bl FUN_02019178
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02018744
+ add r0, r5, #0
+ str r0, [r4, #0xc]
+ mov r5, #1
+_021D9D66:
+ add r0, r5, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9D6C: .word MOD59_021DA04C
+_021D9D70: .word 0x000F0200
+_021D9D74: .word gMain
+ thumb_func_end MOD59_021D9C74
+
+ thumb_func_start MOD59_021D9D78
+MOD59_021D9D78: ; 0x021D9D78
+ push {r3, lr}
+ ldr r1, [r0, #0x20]
+ mov r2, #3
+ add r3, r1, #4
+ str r3, [r0, #0x20]
+ ldr r0, [r0, #4]
+ mov r1, #1
+ asr r3, r3, #4
+ bl FUN_020179E0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD59_021D9D78
+
+ .rodata
+
+ .global MOD59_021DA04C
+MOD59_021DA04C: ; 0x021DA04C
+ .byte 0x02, 0x00, 0x00, 0x20, 0x18, 0x01, 0x01, 0x00
+
+ .global MOD59_021DA054
+MOD59_021DA054: ; 0x021DA054
+ .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global MOD59_021DA064
+MOD59_021DA064: ; 0x021DA064
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x02, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global MOD59_021DA080
+MOD59_021DA080: ; 0x021DA080
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global MOD59_021DA09C
+MOD59_021DA09C: ; 0x021DA09C
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x01, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global MOD59_021DA0B8
+MOD59_021DA0B8: ; 0x021DA0B8
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x01, 0x01, 0x03, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global MOD59_021DA0D4
+MOD59_021DA0D4: ; 0x021DA0D4
+ .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
diff --git a/arm9/modules/59/include/mod59_021D74E0.h b/arm9/modules/59/include/mod59_021D74E0.h
new file mode 100644
index 00000000..9342913d
--- /dev/null
+++ b/arm9/modules/59/include/mod59_021D74E0.h
@@ -0,0 +1,32 @@
+#ifndef POKEDIAMOND_MOD59_021D74E0_H
+#define POKEDIAMOND_MOD59_021D74E0_H
+
+#include "nitro/types.h"
+#include "options.h"
+#include "save_block_2.h"
+#include "main.h"
+
+typedef struct MOD59_OverlayData
+{
+ u32 heap_id;
+ struct SaveBlock2 *sav2;
+ struct Options *options;
+ u32 Unk0C;
+ u32 Unk10;
+ u32 Unk14;
+ u8 padding[0x58];
+ u32 Unk70;
+ u32 Unk74;
+ u8 padding2[0x10];
+ u8 Unk88;
+ u8 Unk89;
+ u8 Unk8A;
+ u8 Unk8B;
+ u8 padding3[4];
+ u32 Unk90;
+ //TODO pad to 0xb4
+} MOD59_OverlayData;
+
+BOOL MOD59_Init(struct UnkStruct_02006234 *param0);
+
+#endif //POKEDIAMOND_MOD59_021D74E0_H
diff --git a/arm9/modules/59/src/mod59_021D74E0_src.c b/arm9/modules/59/src/mod59_021D74E0_src.c
new file mode 100644
index 00000000..9fccfd95
--- /dev/null
+++ b/arm9/modules/59/src/mod59_021D74E0_src.c
@@ -0,0 +1,29 @@
+#include "global.h"
+#include "player_data.h"
+#include "overlay_manager.h"
+#include "mod59_021D74E0.h"
+
+extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2);
+extern u32 FUN_02077A84(u32 heap_id, u32 param1, u32 param2, u32 param3, struct Options *options);
+
+THUMB_FUNC BOOL MOD59_Init(struct UnkStruct_02006234 *param0)
+{
+ //note: 0xb4 is likely the overlay data struct size, once struct is padded replace with sizeof
+ FUN_0201681C(3, 0x52, 1 << 18);
+ MOD59_OverlayData *data = (MOD59_OverlayData *) OverlayManager_CreateAndGetData(param0, 0xb4, 0x52);
+ (void)memset((void *)data, 0, 0xb4);
+
+ data->heap_id = 0x52;
+ int *field18 = OverlayManager_GetField18(param0);
+ data->sav2 = (struct SaveBlock2 *)field18[2]; //?
+ data->options = Sav2_PlayerData_GetOptionsAddr(data->sav2);
+ data->Unk14 = data->Unk10 = data->Unk0C = 0;
+ data->Unk70 = FUN_02077A84(0x52, 0, 0, 7, data->options);
+ data->Unk74 = FUN_02077A84(0x52, 3, 0, 7, data->options);
+ data->Unk88 = 0;
+ data->Unk89 = 0;
+ data->Unk8A = 0;
+ data->Unk8B = 0;
+ data->Unk90 = 0;
+ return TRUE;
+}
diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s
index 28028e5f..81f6d273 100644
--- a/arm9/modules/60/asm/module_60.s
+++ b/arm9/modules/60/asm/module_60.s
@@ -25,7 +25,7 @@ MOD60_021D74E0: ; 0x021D74E0
add r4, r0, #0
bl memset
add r0, r5, #0
- bl FUN_02024FD8
+ bl Options_GetTextSpeed
ldrh r1, [r4, #0x18]
mov r2, #0xf
lsl r0, r0, #0x10
@@ -36,7 +36,7 @@ MOD60_021D74E0: ; 0x021D74E0
orr r0, r1
strh r0, [r4, #0x18]
add r0, r5, #0
- bl FUN_0202502C
+ bl Options_GetBattleScene
lsl r0, r0, #0x10
lsr r0, r0, #0x10
lsl r0, r0, #0x1f
@@ -47,7 +47,7 @@ MOD60_021D74E0: ; 0x021D74E0
orr r0, r1
strh r0, [r4, #0x18]
add r0, r5, #0
- bl FUN_02025048
+ bl Options_GetBattleStyle
lsl r0, r0, #0x10
lsr r0, r0, #0x10
lsl r0, r0, #0x1f
@@ -58,7 +58,7 @@ MOD60_021D74E0: ; 0x021D74E0
orr r0, r1
strh r0, [r4, #0x18]
add r0, r5, #0
- bl FUN_02025010
+ bl Options_GetSoundMethod
lsl r0, r0, #0x10
lsr r0, r0, #0x10
lsl r0, r0, #0x1e
@@ -69,7 +69,7 @@ MOD60_021D74E0: ; 0x021D74E0
orr r0, r1
strh r0, [r4, #0x18]
add r0, r5, #0
- bl FUN_02025064
+ bl Options_GetButtonMode
lsl r0, r0, #0x10
lsr r0, r0, #0x10
lsl r0, r0, #0x1e
@@ -80,7 +80,7 @@ MOD60_021D74E0: ; 0x021D74E0
orr r0, r1
strh r0, [r4, #0x18]
add r0, r5, #0
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x10
lsr r0, r0, #0x10
lsl r0, r0, #0x1b
@@ -172,32 +172,32 @@ MOD60_021D75B0: ; 0x021D75B0
ldr r0, [r4, #0x1c]
lsl r1, r1, #0x1c
lsr r1, r1, #0x1c
- bl FUN_02024FE0
+ bl Options_SetTextSpeed
ldrh r1, [r4, #0x18]
ldr r0, [r4, #0x1c]
lsl r1, r1, #0x19
lsr r1, r1, #0x1f
- bl FUN_02025034
+ bl Options_SetBattleScene
ldrh r1, [r4, #0x18]
ldr r0, [r4, #0x1c]
lsl r1, r1, #0x18
lsr r1, r1, #0x1f
- bl FUN_02025050
+ bl Options_SetBattleStyle
ldrh r1, [r4, #0x18]
ldr r0, [r4, #0x1c]
lsl r1, r1, #0x1a
lsr r1, r1, #0x1e
- bl FUN_02025018
+ bl Options_SetSoundMethod
ldrh r1, [r4, #0x18]
ldr r0, [r4, #0x1c]
lsl r1, r1, #0x16
lsr r1, r1, #0x1e
- bl FUN_0202506C
+ bl Options_SetButtonMode
ldrh r1, [r4, #0x18]
ldr r0, [r4, #0x1c]
lsl r1, r1, #0x11
lsr r1, r1, #0x1b
- bl FUN_0202508C
+ bl Options_SetFrame
b _021D769A
_021D7680:
cmp r0, #2
@@ -210,7 +210,7 @@ _021D7680:
mov r0, #0
lsl r1, r1, #0x16
lsr r1, r1, #0x1e
- bl FUN_02024F9C
+ bl Options_SetButtonModeOnMain
_021D769A:
add r0, r5, #0
bl OverlayManager_FreeData
@@ -1270,7 +1270,7 @@ _021D7F3C:
add r1, r1, r2
add r1, #0x5e
ldrh r1, [r1]
- bl FUN_02024F9C
+ bl Options_SetButtonModeOnMain
_021D7F54:
ldr r0, [sp, #0x14]
mov r1, #0x54
diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s
index 5cb5badb..ed38301b 100644
--- a/arm9/modules/61/asm/module_61.s
+++ b/arm9/modules/61/asm/module_61.s
@@ -44,11 +44,11 @@ MOD61_021D74E0: ; 0x021D74E0
strh r1, [r0]
ldr r0, [r4, #0x1c]
ldr r0, [r0, #4]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
strb r0, [r4, #0x10]
ldr r0, [r4, #0x1c]
ldr r0, [r0, #4]
- bl FUN_02025084
+ bl Options_GetFrame
strh r0, [r4, #0xa]
mov r0, #1
pop {r3, r4, r5, pc}
@@ -374,7 +374,7 @@ MOD61_021D7790: ; 0x021D7790
ldr r0, [r4, #0x18]
mov r2, #1
mov r3, #5
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
add r4, #0xa4
str r0, [r4]
add sp, #4
diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s
index 1dee0562..645c9569 100644
--- a/arm9/modules/64/asm/module_64.s
+++ b/arm9/modules/64/asm/module_64.s
@@ -35,11 +35,11 @@ _021D7504:
bl OverlayManager_GetField18
add r4, r0, #0
ldr r0, [r4, #4]
- bl FUN_02025084
+ bl Options_GetFrame
ldr r1, _021D7634 ; =0x000006A8
str r0, [r5, r1]
ldr r0, [r4, #4]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
ldr r1, _021D7638 ; =0x000006AC
str r0, [r5, r1]
mov r0, #8
@@ -2212,7 +2212,7 @@ _021D8604:
ldr r2, _021D86D8 ; =0x0000029E
add r1, #0xb0
mov r3, #1
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
add r1, r4, #0
add r1, #0xb8
str r0, [r1]
diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s
index af08a5f3..4ff5aca1 100644
--- a/arm9/modules/65/asm/module_65.s
+++ b/arm9/modules/65/asm/module_65.s
@@ -950,7 +950,7 @@ MOD65_021D7C04: ; 0x021D7C04
bl FUN_0200CB00
ldr r0, [r6, #0x20]
ldr r0, [r0, #0x18]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -1103,7 +1103,7 @@ _021D7D42:
_021D7D66:
ldr r0, [r5, #0x20]
ldr r0, [r0, #0x18]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
add r5, #0x7c
strb r0, [r5]
pop {r4, r5, r6, pc}
@@ -2418,7 +2418,7 @@ MOD65_021D87B0: ; 0x021D87B0
ldr r0, [r4, #0x24]
mov r2, #0x1f
mov r3, #0xf
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
add r4, #0xd4
str r0, [r4]
add sp, #4
diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s
index b77c8662..e7f0b24d 100644
--- a/arm9/modules/71/asm/module_71.s
+++ b/arm9/modules/71/asm/module_71.s
@@ -278,7 +278,7 @@ MOD71_0222D820: ; 0x0222D820
bl MOD71_0222D780
ldr r0, [r4, #8]
ldr r0, [r0, #0x18]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r2, #0x5d
@@ -6668,7 +6668,7 @@ MOD71_02230C48: ; 0x02230C48
mov r1, #0
bl FUN_02019620
add r0, r4, #0
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -7038,7 +7038,7 @@ _02230FC8:
ldr r1, _02230FFC ; =0x022313CC
ldr r2, _02231000 ; =0x000001F7
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
str r0, [r5]
ldr r0, [r4]
add r0, r0, #1
diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s
index 20e8b507..e06f4d00 100644
--- a/arm9/modules/73/asm/module_73.s
+++ b/arm9/modules/73/asm/module_73.s
@@ -55,11 +55,11 @@ _021D7536:
bl MOD73_021D8DF4
ldr r0, [r4, #0x10]
ldr r0, [r0, #0x18]
- bl FUN_02025084
+ bl Options_GetFrame
str r0, [r5, #0x24]
ldr r0, [r4, #0x10]
ldr r0, [r0, #0x18]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
str r0, [r5, #0x28]
mov r0, #0xae
mov r1, #1
diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s
index 63f45d1d..87c9c55a 100644
--- a/arm9/modules/75/asm/module_75.s
+++ b/arm9/modules/75/asm/module_75.s
@@ -841,7 +841,7 @@ MOD75_021E7214: ; 0x021E7214
add r0, r4, #0
add r0, #0xd0
ldr r0, [r0]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -9447,7 +9447,7 @@ MOD75_021EB660: ; 0x021EB660
add r0, r4, #0
add r0, #0xd0
ldr r0, [r0]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
mov r3, #0
str r3, [sp]
str r0, [sp, #4]
@@ -9515,7 +9515,7 @@ MOD75_021EB6E0: ; 0x021EB6E0
ldr r1, _021EB700 ; =0x021EC6AC
ldr r2, _021EB704 ; =0x000003F7
mov r3, #0xe
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x56
lsl r1, r1, #2
str r0, [r4, r1]
diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s
index 12b6e9fc..d81a7697 100644
--- a/arm9/modules/76/asm/module_76.s
+++ b/arm9/modules/76/asm/module_76.s
@@ -437,7 +437,7 @@ MOD76_021D7814: ; 0x021D7814
bl FUN_0200CB00
ldr r0, [r4]
ldr r0, [r0, #8]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -735,7 +735,7 @@ MOD76_021D7AB4: ; 0x021D7AB4
ldr r1, _021D7AD8 ; =0x021D9034
mov r2, #1
mov r3, #0xc
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
mov r1, #0x43
lsl r1, r1, #2
str r0, [r4, r1]
@@ -2053,7 +2053,7 @@ MOD76_021D853C: ; 0x021D853C
bl FUN_02002B7C
ldr r0, [r4]
ldr r0, [r0, #8]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
mov r3, #0
str r3, [sp]
str r0, [sp, #4]
diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s
index 1c074133..4536decb 100644
--- a/arm9/modules/77/asm/module_77.s
+++ b/arm9/modules/77/asm/module_77.s
@@ -291,7 +291,7 @@ _021D7744:
ldr r2, _021D7998 ; =0x000001D9
ldr r0, [r4, r0]
mov r3, #7
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
ldr r1, _021D799C ; =0x0000C05C
str r0, [r4, r1]
mov r0, #6
@@ -499,7 +499,7 @@ _021D78EE:
ldr r2, _021D7998 ; =0x000001D9
ldr r0, [r4, r0]
mov r3, #7
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
ldr r1, _021D799C ; =0x0000C05C
str r0, [r4, r1]
mov r0, #0xd
@@ -1383,7 +1383,7 @@ MOD77_021D7FAC: ; 0x021D7FAC
add r3, r1, #0
bl FUN_020068C8
ldr r0, [r5, #8]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -1685,7 +1685,7 @@ _021D82B0:
ldr r2, [r5, r2]
bl ReadMsgDataIntoString
ldr r0, [r5, #8]
- bl FUN_02024FF4
+ bl Options_GetTextFrameDelay
add r3, r4, #0
str r3, [sp]
str r0, [sp, #4]
diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s
index 29a329f0..9e91c64e 100644
--- a/arm9/modules/80/asm/module_80.s
+++ b/arm9/modules/80/asm/module_80.s
@@ -2192,7 +2192,7 @@ MOD80_0222E6A8: ; 0x0222E6A8
add r1, r3, #0
mov r2, #0x1f
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -2328,11 +2328,11 @@ MOD80_0222E7B0: ; 0x0222E7B0
thumb_func_start MOD80_0222E7BC
MOD80_0222E7BC: ; 0x0222E7BC
ldr r0, [r0]
- ldr r3, _0222E7C4 ; =FUN_02024FF4
+ ldr r3, _0222E7C4 ; =Options_GetTextFrameDelay
ldr r0, [r0, #0x24]
bx r3
.align 2, 0
-_0222E7C4: .word FUN_02024FF4
+_0222E7C4: .word Options_GetTextFrameDelay
thumb_func_end MOD80_0222E7BC
thumb_func_start MOD80_0222E7C8
@@ -2805,7 +2805,7 @@ MOD80_0222EB6C: ; 0x0222EB6C
bl FUN_02002EEC
ldr r0, [r5]
ldr r0, [r0, #0x24]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -4099,7 +4099,7 @@ MOD80_0222F5A8: ; 0x0222F5A8
bl FUN_02002EEC
ldr r0, [r5]
ldr r0, [r0, #0x24]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -5388,7 +5388,7 @@ MOD80_02230054: ; 0x02230054
bl FUN_02002EEC
ldr r0, [r5]
ldr r0, [r0, #0x24]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -6395,7 +6395,7 @@ MOD80_02230840: ; 0x02230840
bl FUN_02002EEC
ldr r0, [r5]
ldr r0, [r0, #0x24]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -8807,7 +8807,7 @@ MOD80_02231BF4: ; 0x02231BF4
bl FUN_02002EEC
ldr r0, [r5]
ldr r0, [r0, #0x24]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -11836,7 +11836,7 @@ MOD80_0223346C: ; 0x0223346C
bl FUN_02002EEC
ldr r0, [r5]
ldr r0, [r0, #0x24]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -14380,7 +14380,7 @@ MOD80_022348CC: ; 0x022348CC
bl FUN_02002EEC
ldr r0, [r5]
ldr r0, [r0, #0x24]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -18024,7 +18024,7 @@ MOD80_02236488: ; 0x02236488
bl FUN_02002EEC
ldr r0, [r5]
ldr r0, [r0, #0x24]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s
index 3db42aa1..927b69b6 100644
--- a/arm9/modules/81/asm/module_81.s
+++ b/arm9/modules/81/asm/module_81.s
@@ -1325,11 +1325,11 @@ _02238840: .word 0x0000014E
thumb_func_start MOD81_02238844
MOD81_02238844: ; 0x02238844
ldr r0, [r0]
- ldr r3, _0223884C ; =FUN_02025084
+ ldr r3, _0223884C ; =Options_GetFrame
ldr r0, [r0, #0x14]
bx r3
.align 2, 0
-_0223884C: .word FUN_02025084
+_0223884C: .word Options_GetFrame
thumb_func_end MOD81_02238844
thumb_func_start MOD81_02238850
diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s
index 4e09a3ed..f1cd74ed 100644
--- a/arm9/modules/82/asm/module_82.s
+++ b/arm9/modules/82/asm/module_82.s
@@ -1230,7 +1230,7 @@ MOD82_0222DF38: ; 0x0222DF38
add r1, r3, #0
mov r2, #0x1f
mov r3, #0xb
- bl FUN_02002198
+ bl Std_CreateYesNoMenu
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -1638,7 +1638,7 @@ MOD82_0222E264: ; 0x0222E264
bl FUN_02002EEC
ldr r0, [r5]
ldr r0, [r0, #0x10]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s
index ca3ff8d3..59fd717f 100644
--- a/arm9/modules/83/asm/module_83.s
+++ b/arm9/modules/83/asm/module_83.s
@@ -2561,7 +2561,7 @@ _0222E960:
add r3, r2, #0
bl FUN_0200CB00
ldr r0, [r4, #0x14]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -6152,7 +6152,7 @@ MOD83_02230668: ; 0x02230668
mov r2, #0x56
bl FUN_02002ED0
ldr r0, [r4, #8]
- bl FUN_02025084
+ bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -10287,7 +10287,7 @@ _022327E6:
ldr r1, _02232B58 ; =0x00002B48
str r0, [r4, r1]
ldr r0, [r4, r1]
- bl FUN_02025084
+ bl Options_GetFrame
ldr r1, _02232B5C ; =0x00002B4C
str r0, [r4, r1]
sub r1, #0xc
@@ -18540,7 +18540,7 @@ MOD83_02236764: ; 0x02236764
ldr r0, [r4, #0x10]
bl Sav2_PlayerData_GetOptionsAddr
str r0, [r4, #0x18]
- bl FUN_02025084
+ bl Options_GetFrame
str r0, [r4, #0x1c]
ldr r1, _022367F8 ; =0x00000496
mov r0, #9