summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt2
-rw-r--r--arm9/arm9.lsf8
-rw-r--r--arm9/global.inc3
-rw-r--r--arm9/modules/05/asm/mod05_021E72FC_asm1.s78
-rw-r--r--arm9/modules/05/asm/mod05_021E72FC_asm2.s172
-rw-r--r--arm9/modules/05/asm/mod05_021E7504.s316
-rw-r--r--arm9/modules/05/asm/module_05.s578
-rw-r--r--arm9/modules/05/include/mod05_021E72FC.h8
-rw-r--r--arm9/modules/05/src/mod05_021E72FC_src.c18
-rw-r--r--arm9/modules/59/asm/mod59_021D74E0.s (renamed from arm9/modules/59/asm/module_59.s)664
-rw-r--r--arm9/modules/59/asm/mod59_021D9868.s666
11 files changed, 1270 insertions, 1243 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 29df7380..c6a38a91 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,7 +16,7 @@ add_compile_options(-fms-extensions)
file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c" "*.cpp")
add_executable(PokeDiamond ${SOURCES})
-target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include arm7/lib/include arm9/modules/63/include)
+target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include arm7/lib/include arm9/modules/63/include arm9/modules/05/include)
add_executable(calcrom .travis/calcrom/calcrom.cpp)
target_include_directories(calcrom PRIVATE /usr/local/include)
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 57fbde66..eb4e1fa1 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -554,6 +554,11 @@ Overlay MODULE_05
Object mod05_021E5C8C.o
Object mod05_021E5E10.o
Object mod05_021E5FD8.o
+ #kinda awkward split, sorry
+ Object mod05_021E72FC_asm1.o
+ Object mod05_021E72FC_src.o
+ Object mod05_021E72FC_asm2.o
+ Object mod05_021E7504.o
Object module_05.o
}
@@ -937,7 +942,8 @@ Overlay MODULE_59
{
##Rowan's intro##
After arm9
- Object module_59.o
+ Object mod59_021D74E0.o
+ Object mod59_021D9868.o
}
Overlay MODULE_60
diff --git a/arm9/global.inc b/arm9/global.inc
index 0af44f98..60f00ea2 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -7469,6 +7469,9 @@
.extern MOD59_021D74E0
.extern MOD59_021D7564
.extern MOD59_021D76C0
+.extern MOD59_021D9868
+.extern MOD59_021D9898
+.extern MOD59_021D99F8
.extern MOD60_021D74E0
.extern MOD60_021D76B8
.extern MOD60_021D75B0
diff --git a/arm9/modules/05/asm/mod05_021E72FC_asm1.s b/arm9/modules/05/asm/mod05_021E72FC_asm1.s
new file mode 100644
index 00000000..2bc62fca
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E72FC_asm1.s
@@ -0,0 +1,78 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ #in asm2
+ .extern MOD05_021E73B4
+ .extern MOD05_021E74D4
+
+ 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
diff --git a/arm9/modules/05/asm/mod05_021E72FC_asm2.s b/arm9/modules/05/asm/mod05_021E72FC_asm2.s
new file mode 100644
index 00000000..2bfcbe12
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E72FC_asm2.s
@@ -0,0 +1,172 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ #in c file
+ .extern MOD05_021E7388
+
+ 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
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/module_05.s b/arm9/modules/05/asm/module_05.s
index d8ed3656..b7232407 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -3,584 +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}
diff --git a/arm9/modules/05/include/mod05_021E72FC.h b/arm9/modules/05/include/mod05_021E72FC.h
new file mode 100644
index 00000000..82f56cb2
--- /dev/null
+++ b/arm9/modules/05/include/mod05_021E72FC.h
@@ -0,0 +1,8 @@
+#ifndef POKEDIAMOND_MOD05_021E72FC_H
+#define POKEDIAMOND_MOD05_021E72FC_H
+
+#include "nitro/types.h"
+
+u32 MOD05_021E7388(u32 param0);
+
+#endif //POKEDIAMOND_MOD05_021E72FC_H
diff --git a/arm9/modules/05/src/mod05_021E72FC_src.c b/arm9/modules/05/src/mod05_021E72FC_src.c
new file mode 100644
index 00000000..9ab08746
--- /dev/null
+++ b/arm9/modules/05/src/mod05_021E72FC_src.c
@@ -0,0 +1,18 @@
+#include "global.h"
+#include "mod05_021E72FC.h"
+
+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;
+}
diff --git a/arm9/modules/59/asm/module_59.s b/arm9/modules/59/asm/mod59_021D74E0.s
index 9182c632..abc37879 100644
--- a/arm9/modules/59/asm/module_59.s
+++ b/arm9/modules/59/asm/mod59_021D74E0.s
@@ -4411,633 +4411,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 +4543,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