summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt2
-rw-r--r--arm9/arm9.lsf5
-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
8 files changed, 598 insertions, 579 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 12784096..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
}
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;
+}