diff options
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | arm9/arm9.lsf | 5 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E72FC_asm1.s | 78 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E72FC_asm2.s | 172 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E7504.s | 316 | ||||
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 578 | ||||
-rw-r--r-- | arm9/modules/05/include/mod05_021E72FC.h | 8 | ||||
-rw-r--r-- | arm9/modules/05/src/mod05_021E72FC_src.c | 18 |
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; +} |