diff options
Diffstat (limited to 'arm9/modules/05')
-rw-r--r-- | arm9/modules/05/asm/mod05_021E1374.s | 2 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E2B80.s | 62 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E7504.s | 316 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E779C.s | 621 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E7C00.s | 708 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E80F8.s | 303 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E8310.s | 409 | ||||
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 2607 | ||||
-rw-r--r-- | arm9/modules/05/include/mod05_021E72FC.h | 23 | ||||
-rw-r--r-- | arm9/modules/05/src/mod05_021E72FC.c | 160 |
10 files changed, 2577 insertions, 2634 deletions
diff --git a/arm9/modules/05/asm/mod05_021E1374.s b/arm9/modules/05/asm/mod05_021E1374.s index e3bb69a4..df43ddb9 100644 --- a/arm9/modules/05/asm/mod05_021E1374.s +++ b/arm9/modules/05/asm/mod05_021E1374.s @@ -915,7 +915,7 @@ MOD05_021E1A30: ; 0x021E1A30 str r0, [sp, #0xc] bl FUN_020395F4 str r0, [sp, #8] - bl FUN_0203962C + bl Field_TrainerIsDoubleBattle cmp r0, #0 bne _021E1A60 add sp, #0x10 diff --git a/arm9/modules/05/asm/mod05_021E2B80.s b/arm9/modules/05/asm/mod05_021E2B80.s index 8aa39261..16e19ae0 100644 --- a/arm9/modules/05/asm/mod05_021E2B80.s +++ b/arm9/modules/05/asm/mod05_021E2B80.s @@ -42,7 +42,7 @@ MOD05_021E2BB8: ; 0x021E2BB8 push {r4, lr} add r4, r0, #0 add r0, r1, #0 - bl MOD05_021E2D00 + bl MOD05_ScriptContext_GetTextFrameDelay strb r0, [r4] mov r0, #0 strb r0, [r4, #1] @@ -68,15 +68,15 @@ MOD05_021E2BD0: ; 0x021E2BD0 add r0, #0x80 ldr r0, [r0] add r1, sp, #8 - bl MOD05_021E2D9C + bl MOD05_CreateMessageBox add r0, sp, #8 add r1, r6, #0 add r2, r7, #0 - bl MOD05_021E2DD4 + bl MOD05_ReadAndExpandMsgDataViaBuffer cmp r4, #0 bne _021E2C10 add r0, r5, #0 - bl MOD05_021E2D00 + bl MOD05_ScriptContext_GetTextFrameDelay add r2, r0, #0 mov r0, #0 mov r1, #1 @@ -89,7 +89,7 @@ _021E2C16: str r0, [sp] ldr r3, [sp, #4] add r0, sp, #8 - bl MOD05_021E2E40 + bl MOD05_DrawFieldMessage add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} @@ -107,14 +107,14 @@ MOD05_ShowMessageInField: ; 0x021E2C24 add r5, #0x80 ldr r0, [r5] add r1, sp, #0 - bl MOD05_021E2D9C + bl MOD05_CreateMessageBox add r0, sp, #0 add r1, r4, #0 add r2, r6, #0 - bl MOD05_021E2DD4 + bl MOD05_ReadAndExpandMsgDataViaBuffer add r0, sp, #0 mov r1, #1 - bl MOD05_021E2E68 + bl MOD05_AddTextPrinterParameterized add sp, #0x18 pop {r4, r5, r6, pc} @@ -134,7 +134,7 @@ MOD05_021E2C58: ; 0x021E2C58 add r0, #0x80 ldr r0, [r0] add r1, sp, #4 - bl MOD05_021E2D9C + bl MOD05_CreateMessageBox add r0, sp, #0x20 ldrh r0, [r0, #0x10] add r1, r4, #0 @@ -142,13 +142,13 @@ MOD05_021E2C58: ; 0x021E2C58 str r0, [sp] add r0, sp, #4 add r3, r7, #0 - bl MOD05_021E2DF0 + bl MOD05_ExpandEasyChatMessage add r0, sp, #0x20 ldrb r0, [r0, #0x14] cmp r0, #0xff beq _021E2CB0 add r0, r5, #0 - bl MOD05_021E2D00 + bl MOD05_ScriptContext_GetTextFrameDelay add r2, r0, #0 mov r0, #0 str r0, [sp] @@ -156,13 +156,13 @@ MOD05_021E2C58: ; 0x021E2C58 ldrb r3, [r3, #0x14] add r0, sp, #4 mov r1, #1 - bl MOD05_021E2E40 + bl MOD05_DrawFieldMessage add sp, #0x1c pop {r4, r5, r6, r7, pc} _021E2CB0: add r0, sp, #4 mov r1, #1 - bl MOD05_021E2E68 + bl MOD05_AddTextPrinterParameterized add sp, #0x1c pop {r4, r5, r6, r7, pc} @@ -181,31 +181,31 @@ MOD05_021E2CBC: ; 0x021E2CBC add r0, #0x80 ldr r0, [r0] add r1, sp, #4 - bl MOD05_021E2D9C + bl MOD05_CreateMessageBox ldr r1, [r5, #0x78] add r0, sp, #4 add r2, r4, #0 - bl MOD05_021E2DD4 + bl MOD05_ReadAndExpandMsgDataViaBuffer add r0, r5, #0 - bl MOD05_021E2D00 + bl MOD05_ScriptContext_GetTextFrameDelay add r2, r0, #0 mov r0, #0 str r0, [sp] add r0, sp, #4 mov r1, #1 add r3, r6, #0 - bl MOD05_021E2E40 + bl MOD05_DrawFieldMessage add sp, #0x1c pop {r3, r4, r5, r6, pc} - thumb_func_start MOD05_021E2D00 -MOD05_021E2D00: ; 0x021E2D00 + thumb_func_start MOD05_ScriptContext_GetTextFrameDelay +MOD05_ScriptContext_GetTextFrameDelay: ; 0x021E2D00 push {r3, lr} add r0, #0x80 ldr r0, [r0] ldr r0, [r0, #0xc] bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02024FF4 + bl Options_GetTextFrameDelay pop {r3, pc} .balign 4, 0 @@ -272,8 +272,8 @@ MOD05_021E2D5C: ; 0x021E2D5C str r0, [r4, #0x14] pop {r4, r5, r6, pc} - thumb_func_start MOD05_021E2D9C -MOD05_021E2D9C: ; 0x021E2D9C + thumb_func_start MOD05_CreateMessageBox +MOD05_CreateMessageBox: ; 0x021E2D9C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 @@ -300,8 +300,8 @@ _021E2DC8: pop {r3, r4, r5, pc} .balign 4, 0 - thumb_func_start MOD05_021E2DD4 -MOD05_021E2DD4: ; 0x021E2DD4 + thumb_func_start MOD05_ReadAndExpandMsgDataViaBuffer +MOD05_ReadAndExpandMsgDataViaBuffer: ; 0x021E2DD4 push {r4, lr} add r4, r0, #0 add r0, r1, #0 @@ -315,8 +315,8 @@ MOD05_021E2DD4: ; 0x021E2DD4 pop {r4, pc} .balign 4, 0 - thumb_func_start MOD05_021E2DF0 -MOD05_021E2DF0: ; 0x021E2DF0 + thumb_func_start MOD05_ExpandEasyChatMessage +MOD05_ExpandEasyChatMessage: ; 0x021E2DF0 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r5, r0, #0 @@ -351,8 +351,8 @@ MOD05_021E2DF0: ; 0x021E2DF0 pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 - thumb_func_start MOD05_021E2E40 -MOD05_021E2E40: ; 0x021E2E40 + thumb_func_start MOD05_DrawFieldMessage +MOD05_DrawFieldMessage: ; 0x021E2E40 push {r4, r5, r6, lr} sub sp, #8 add r4, r0, #0 @@ -367,14 +367,14 @@ MOD05_021E2E40: ; 0x021E2E40 ldr r1, [r4] add r2, r6, #0 add r3, r5, #0 - bl FUN_02054690 + bl DrawFieldMessage ldr r1, [r4, #0x14] strb r0, [r1] add sp, #8 pop {r4, r5, r6, pc} - thumb_func_start MOD05_021E2E68 -MOD05_021E2E68: ; 0x021E2E68 + thumb_func_start MOD05_AddTextPrinterParameterized +MOD05_AddTextPrinterParameterized: ; 0x021E2E68 push {r3, r4, lr} sub sp, #0xc mov r3, #0 diff --git a/arm9/modules/05/asm/mod05_021E7504.s b/arm9/modules/05/asm/mod05_021E7504.s new file mode 100644 index 00000000..d7f960b2 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E7504.s @@ -0,0 +1,316 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E7504 +MOD05_021E7504: ; 0x021E7504 + add r1, r0, #0 + ldr r0, [r1, #0x10] + cmp r0, #3 + bhi _021E7536 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E7518: ; jump table + .short _021E7520 - _021E7518 - 2 ; case 0 + .short _021E752C - _021E7518 - 2 ; case 1 + .short _021E7526 - _021E7518 - 2 ; case 2 + .short _021E7532 - _021E7518 - 2 ; case 3 +_021E7520: + mov r0, #2 + str r0, [r1, #0x10] + b _021E7536 +_021E7526: + mov r0, #1 + str r0, [r1, #0x10] + b _021E7536 +_021E752C: + mov r0, #3 + str r0, [r1, #0x10] + b _021E7536 +_021E7532: + mov r0, #0 + str r0, [r1, #0x10] +_021E7536: + ldr r0, [r1] + ldr r3, _021E7540 ; =FUN_02055304 + ldr r0, [r0, #0x38] + ldr r1, [r1, #0x10] + bx r3 + .balign 4, 0 +_021E7540: .word FUN_02055304 + + thumb_func_start MOD05_021E7544 +MOD05_021E7544: ; 0x021E7544 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + ldr r0, [r5, #8] + cmp r0, #0 + beq _021E7564 + cmp r0, #1 + beq _021E756E + add sp, #0x24 + pop {r4, r5, r6, r7, pc} +_021E7564: + mov r0, #1 + str r0, [r5, #8] + ldr r0, _021E760C ; =0x0000064F + bl FUN_020054C8 +_021E756E: + ldr r0, [r5, #0xc] + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + beq _021E7584 + add r0, r5, #0 + bl MOD05_021E7504 +_021E7584: + add r0, r6, #0 + add r1, sp, #0x18 + bl FUN_02058BA4 + ldr r4, [r5, #0xc] + add r0, r4, #0 + bl _dflt + str r0, [sp, #0x14] + lsl r0, r4, #0xb + str r1, [sp, #0x10] + bl _dflt + add r2, r0, #0 + add r3, r1, #0 + ldr r0, _021E7610 ; =0x9999999A + ldr r1, _021E7614 ; =0x40C19999 + bl _dadd + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x10] + bl _dmul + bl _dfix + str r0, [sp, #0x1c] + add r0, r6, #0 + add r1, sp, #0x18 + bl FUN_02058BB4 + ldr r0, [r5, #0xc] + add r0, r0, #1 + str r0, [r5, #0xc] + cmp r0, #0x14 + bne _021E75EA + mov r0, #6 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} +_021E75EA: + ble _021E7606 + bl FUN_0200E308 + cmp r0, #0 + beq _021E7606 + ldr r0, [r5, #4] + mov r1, #1 + str r1, [r0] + add r0, r5, #0 + bl FreeToHeap + add r0, r7, #0 + bl FUN_0200CAB4 +_021E7606: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_021E760C: .word 0x0000064F +_021E7610: .word 0x9999999A +_021E7614: .word 0x40C19999 + + thumb_func_start MOD05_021E7618 +MOD05_021E7618: ; 0x021E7618 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #0x38] + bl FUN_020553A0 + ldr r1, [r5, #8] + add r4, r0, #0 + cmp r1, #0 + beq _021E763C + cmp r1, #1 + beq _021E7694 + cmp r1, #2 + beq _021E771C + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} +_021E763C: + bl FUN_02058914 + add r0, r4, #0 + add r1, sp, #0x14 + bl FUN_02058BA4 + ldr r1, [r5, #0xc] + mov r0, #0x14 + sub r6, r0, r1 + add r0, r6, #0 + bl _dflt + str r0, [sp, #0xc] + lsl r0, r6, #0xb + add r7, r1, #0 + bl _dflt + add r2, r0, #0 + add r3, r1, #0 + ldr r0, _021E7744 ; =0x9999999A + ldr r1, _021E7748 ; =0x40C19999 + bl _dadd + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0xc] + add r1, r7, #0 + bl _dmul + bl _dfix + str r0, [sp, #0x18] + add r0, r4, #0 + add r1, sp, #0x14 + bl FUN_02058BB4 + add r0, r4, #0 + bl MOD05_021F1D8C + ldr r0, _021E774C ; =0x0000064F + bl FUN_020054C8 + mov r0, #1 + str r0, [r5, #8] +_021E7694: + ldr r0, [r5, #0xc] + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + beq _021E76AA + add r0, r5, #0 + bl MOD05_021E7504 +_021E76AA: + add r0, r4, #0 + add r1, sp, #0x14 + bl FUN_02058BA4 + ldr r1, [r5, #0xc] + mov r0, #0x14 + sub r6, r0, r1 + add r0, r6, #0 + bl _dflt + str r0, [sp, #0x10] + lsl r0, r6, #0xb + add r7, r1, #0 + bl _dflt + add r2, r0, #0 + add r3, r1, #0 + ldr r0, _021E7744 ; =0x9999999A + ldr r1, _021E7748 ; =0x40C19999 + bl _dadd + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0x10] + add r1, r7, #0 + bl _dmul + bl _dfix + str r0, [sp, #0x18] + add r0, r4, #0 + add r1, sp, #0x14 + bl FUN_02058BB4 + ldr r0, [r5, #0xc] + add r0, r0, #1 + str r0, [r5, #0xc] + cmp r0, #2 + bne _021E770E + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + add r1, r0, #0 + add r2, r0, #0 + mov r3, #0 + bl FUN_0200E1D0 +_021E770E: + ldr r0, [r5, #0xc] + cmp r0, #0x14 + ble _021E7740 + mov r0, #2 + add sp, #0x20 + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_021E771C: + bl FUN_0200E308 + cmp r0, #0 + beq _021E7740 + ldr r0, [r5] + mov r1, #1 + ldr r0, [r0, #0x38] + bl FUN_02055304 + ldr r0, [r5, #4] + mov r1, #1 + str r1, [r0] + add r0, r5, #0 + bl FreeToHeap + add r0, r6, #0 + bl FUN_0200CAB4 +_021E7740: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E7744: .word 0x9999999A +_021E7748: .word 0x40C19999 +_021E774C: .word 0x0000064F + + thumb_func_start MOD05_021E7750 +MOD05_021E7750: ; 0x021E7750 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + mov r1, #0x14 + add r7, r2, #0 + bl AllocFromHeapAtEnd + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r5, [r4] + str r7, [r4, #4] + ldr r0, [r5, #0x38] + bl FUN_020552F8 + str r0, [r4, #0x10] + cmp r6, #0 + beq _021E7786 + ldr r0, _021E7794 ; =MOD05_021E7544 + add r1, r4, #0 + mov r2, #0x64 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_021E7786: + ldr r0, _021E7798 ; =MOD05_021E7618 + add r1, r4, #0 + mov r2, #0x64 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E7794: .word MOD05_021E7544 +_021E7798: .word MOD05_021E7618 diff --git a/arm9/modules/05/asm/mod05_021E779C.s b/arm9/modules/05/asm/mod05_021E779C.s new file mode 100644 index 00000000..ad4118ff --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E779C.s @@ -0,0 +1,621 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E779C +MOD05_021E779C: ; 0x021E779C + push {r4, lr} + mov r2, #0 + mov r1, #0x14 + add r3, r2, #0 + add r4, r0, #0 + bl MOD05_021E4BE8 + str r4, [r0, #0x10] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E77B0 +MOD05_021E77B0: ; 0x021E77B0 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021E78B4 + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E77C0 +MOD05_021E77C0: ; 0x021E77C0 + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + bx lr + + thumb_func_start MOD05_021E77C8 +MOD05_021E77C8: ; 0x021E77C8 + push {r3, lr} + ldr r1, [r0] + sub r1, r1, #1 + str r1, [r0] + bpl _021E77D6 + bl ErrorHandling +_021E77D6: + pop {r3, pc} + + thumb_func_start MOD05_021E77D8 +MOD05_021E77D8: ; 0x021E77D8 + ldr r1, [r0, #4] + add r1, r1, #1 + str r1, [r0, #4] + bx lr + + thumb_func_start MOD05_021E77E0 +MOD05_021E77E0: ; 0x021E77E0 + push {r3, lr} + ldr r1, [r0, #4] + sub r1, r1, #1 + str r1, [r0, #4] + bpl _021E77EE + bl ErrorHandling +_021E77EE: + pop {r3, pc} + + thumb_func_start MOD05_021E77F0 +MOD05_021E77F0: ; 0x021E77F0 + push {r3, lr} + cmp r1, #0 + bne _021E77FC + bl MOD05_021E77C0 + pop {r3, pc} +_021E77FC: + bl MOD05_021E77D8 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7804 +MOD05_021E7804: ; 0x021E7804 + push {r3, lr} + cmp r1, #0 + bne _021E7810 + bl MOD05_021E77C8 + pop {r3, pc} +_021E7810: + bl MOD05_021E77E0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7818 +MOD05_021E7818: ; 0x021E7818 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + bne _021E785C + mov r1, #1 + str r1, [r4, #8] + ldr r0, [r4, #0x10] + mov r2, #0x55 + bl MOD05_021E5078 + ldr r0, [r4, #0x10] + mov r1, #1 + mov r2, #0x75 + bl MOD05_021E50AC + mov r1, #1 + ldr r0, [r4, #0x10] + mov r2, #4 + add r3, r1, #0 + bl MOD05_021E50D4 + mov r1, #1 + str r1, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _021E7860 ; =UNK05_021F7854 + add r2, r1, #0 + str r0, [sp, #8] + ldr r0, [r4, #0x10] + add r3, r1, #0 + bl MOD05_021E4EFC +_021E785C: + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 +_021E7860: .word UNK05_021F7854 + + thumb_func_start MOD05_021E7864 +MOD05_021E7864: ; 0x021E7864 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _021E78AC + mov r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #0x10] + mov r1, #0xa + mov r2, #0x6c + bl MOD05_021E5078 + ldr r0, [r4, #0x10] + mov r1, #0xa + mov r2, #0x75 + bl MOD05_021E50AC + ldr r0, [r4, #0x10] + mov r1, #0xb + mov r2, #0xd + mov r3, #1 + bl MOD05_021E50D4 + mov r0, #0xb + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _021E78B0 ; =UNK05_021F7854 + mov r2, #0xa + str r0, [sp, #8] + ldr r0, [r4, #0x10] + mov r1, #0xc + add r3, r2, #0 + bl MOD05_021E4EFC +_021E78AC: + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 +_021E78B0: .word UNK05_021F7854 + + thumb_func_start MOD05_021E78B4 +MOD05_021E78B4: ; 0x021E78B4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #1 + bne _021E78E2 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD05_021E50A0 + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD05_021E50C8 + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD05_021E5114 + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD05_021E506C +_021E78E2: + pop {r4, pc} + + thumb_func_start MOD05_021E78E4 +MOD05_021E78E4: ; 0x021E78E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #1 + bne _021E7912 + mov r0, #0 + str r0, [r4, #0xc] + ldr r0, [r4, #0x10] + mov r1, #0xa + bl MOD05_021E50A0 + ldr r0, [r4, #0x10] + mov r1, #0xa + bl MOD05_021E50C8 + ldr r0, [r4, #0x10] + mov r1, #0xb + bl MOD05_021E5114 + ldr r0, [r4, #0x10] + mov r1, #0xc + bl MOD05_021E506C +_021E7912: + pop {r4, pc} + + thumb_func_start MOD05_021E7914 +MOD05_021E7914: ; 0x021E7914 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _021E7920 + bl MOD05_021E7818 +_021E7920: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7924 +MOD05_021E7924: ; 0x021E7924 + push {r3, lr} + ldr r1, [r0, #4] + cmp r1, #0 + bne _021E7930 + bl MOD05_021E7864 +_021E7930: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7934 +MOD05_021E7934: ; 0x021E7934 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _021E7940 + bl MOD05_021E78B4 +_021E7940: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7944 +MOD05_021E7944: ; 0x021E7944 + push {r3, lr} + ldr r1, [r0, #4] + cmp r1, #0 + bne _021E7950 + bl MOD05_021E78E4 +_021E7950: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7954 +MOD05_021E7954: ; 0x021E7954 + push {r3, lr} + cmp r1, #0 + bne _021E7960 + bl MOD05_021E7914 + pop {r3, pc} +_021E7960: + bl MOD05_021E7924 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7968 +MOD05_021E7968: ; 0x021E7968 + push {r3, lr} + cmp r1, #0 + bne _021E7974 + bl MOD05_021E7934 + pop {r3, pc} +_021E7974: + bl MOD05_021E7944 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E797C +MOD05_021E797C: ; 0x021E797C + push {r3, r4, r5, lr} + sub sp, #8 + ldr r3, _021E7998 ; =UNK05_021F7824 + add r4, sp, #0 + ldr r5, [r3] + ldr r3, [r3, #4] + str r5, [sp] + str r3, [sp, #4] + lsl r1, r1, #2 + ldr r1, [r4, r1] + bl MOD05_021E4EE4 + add sp, #8 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021E7998: .word UNK05_021F7824 + + thumb_func_start MOD05_021E799C +MOD05_021E799C: ; 0x021E799C + push {r3, lr} + bl FUN_02064738 + ldr r0, [r0, #0x14] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E79A8 +MOD05_021E79A8: ; 0x021E79A8 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x30 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0x28] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E7954 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x34] + ldr r1, [r4, #0x30] + add r2, sp, #0 + bl MOD05_021E797C + str r0, [r4, #0x40] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E77F0 + add r0, r5, #0 + bl FUN_02064754 + cmp r0, #1 + bne _021E79FC + ldr r0, _021E7A04 ; =0x000005DD + bl FUN_020054C8 +_021E79FC: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_021E7A04: .word 0x000005DD + + thumb_func_start MOD05_021E7A08 +MOD05_021E7A08: ; 0x021E7A08 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + add r5, r0, #0 + bl FUN_0206477C + ldr r0, [r4] + cmp r0, #0 + beq _021E7A24 + cmp r0, #1 + beq _021E7A46 + cmp r0, #2 + b _021E7A5E +_021E7A24: + ldr r1, [r4, #0x1c] + ldr r0, [r4, #0x28] + add r0, r1, r0 + str r0, [r4, #0x1c] + beq _021E7A3A + mov r0, #2 + ldr r1, [r4, #0x28] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [r4, #0x28] + b _021E7A5E +_021E7A3A: + mov r0, #0 + str r0, [r4, #0x28] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7A5E +_021E7A46: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x1e + blt _021E7A5E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #4] + mov r0, #1 + str r0, [r4, #0x14] +_021E7A5E: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7A6C +MOD05_021E7A6C: ; 0x021E7A6C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x40] + bl FUN_0201F744 + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E7804 + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E7968 + pop {r4, pc} + + thumb_func_start MOD05_021E7A88 +MOD05_021E7A88: ; 0x021E7A88 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r1, [r4, #0x10] + cmp r1, #1 + beq _021E7ABA + add r1, sp, #0 + bl FUN_0206477C + ldr r1, [sp] + ldr r0, [r4, #0x18] + add r0, r1, r0 + str r0, [sp] + ldr r1, [sp, #4] + ldr r0, [r4, #0x1c] + add r0, r1, r0 + str r0, [sp, #4] + ldr r1, [sp, #8] + ldr r0, [r4, #0x20] + add r0, r1, r0 + str r0, [sp, #8] + ldr r0, [r4, #0x40] + add r1, sp, #0 + bl FUN_0201F7C8 +_021E7ABA: + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7AC0 +MOD05_021E7AC0: ; 0x021E7AC0 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD05_021E4C24 + add r4, r0, #0 + mov r1, #0x16 + str r6, [sp, #0x14] + str r4, [sp, #0x18] + bl MOD05_021E4C08 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x20] + bl FUN_02058B5C + add r0, r5, #0 + bl FUN_02058744 + add r1, r0, #1 + add r0, sp, #0x14 + str r0, [sp] + str r1, [sp, #4] + ldr r1, _021E7B04 ; =UNK05_021F7840 + add r0, r4, #0 + add r2, sp, #8 + add r3, r7, #0 + bl MOD05_021E4DC4 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021E7B04: .word UNK05_021F7840 + + thumb_func_start MOD05_021E7B08 +MOD05_021E7B08: ; 0x021E7B08 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x30 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x3c] + bl FUN_02058448 + str r0, [r4, #8] + ldr r0, [r4, #0x3c] + bl FUN_02058450 + str r0, [r4, #0xc] + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0x28] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E7954 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x34] + ldr r1, [r4, #0x30] + add r2, sp, #0 + bl MOD05_021E797C + str r0, [r4, #0x40] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E77F0 + add r0, r5, #0 + bl FUN_02064754 + cmp r0, #1 + bne _021E7B6C + ldr r0, _021E7B74 ; =0x000005DD + bl FUN_020054C8 +_021E7B6C: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_021E7B74: .word 0x000005DD + + thumb_func_start MOD05_021E7B78 +MOD05_021E7B78: ; 0x021E7B78 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r6, [r4, #0x3c] + ldr r1, [r4, #8] + add r5, r0, #0 + ldr r2, [r4, #0xc] + add r0, r6, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _021E7B94 + bl ErrorHandling +_021E7B94: + add r0, r6, #0 + add r1, sp, #0 + bl MOD05_021F1E64 + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0x10 + add r1, r1, r0 + str r1, [sp, #4] + ldr r2, [sp, #8] + lsr r1, r0, #5 + add r1, r2, r1 + str r1, [sp, #8] + ldr r1, [r4] + cmp r1, #0 + beq _021E7BBC + cmp r1, #1 + beq _021E7BDC + cmp r1, #2 + b _021E7BF4 +_021E7BBC: + ldr r2, [r4, #0x1c] + ldr r1, [r4, #0x28] + add r1, r2, r1 + str r1, [r4, #0x1c] + beq _021E7BD0 + ldr r1, [r4, #0x28] + lsr r0, r0, #4 + sub r0, r1, r0 + str r0, [r4, #0x28] + b _021E7BF4 +_021E7BD0: + mov r0, #0 + str r0, [r4, #0x28] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7BF4 +_021E7BDC: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x1e + blt _021E7BF4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #4] + mov r0, #1 + str r0, [r4, #0x14] +_021E7BF4: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r3, r4, r5, r6, pc} + + .section .rodata + + .global UNK05_021F7824 +UNK05_021F7824: ; 0x021F7824 + .word 0x00000001, 0x0000000C, 0x00000044, MOD05_021E79A8 + .word MOD05_021E7A6C, MOD05_021E7A08, MOD05_021E7A88 + + .global UNK05_021F7840 +UNK05_021F7840: ; 0x021F7840 + .word 0x00000044, MOD05_021E7B08, MOD05_021E7A6C, MOD05_021E7B78 + .word MOD05_021E7A88 + + .global UNK05_021F7854 +UNK05_021F7854: ; 0x021F7854 + .word 0x00000000, 0x00000001, 0x00000000, 0x00000000 + .word 0x00000000, 0x00000002 diff --git a/arm9/modules/05/asm/mod05_021E7C00.s b/arm9/modules/05/asm/mod05_021E7C00.s new file mode 100644 index 00000000..2e968e4f --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E7C00.s @@ -0,0 +1,708 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E7C00 +MOD05_021E7C00: ; 0x021E7C00 + push {r4, lr} + mov r1, #0x46 + lsl r1, r1, #6 + bl AllocFromHeap + add r4, r0, #0 + bl MOD05_021E7C1C + add r0, r4, #0 + pop {r4, pc} + + thumb_func_start MOD05_021E7C14 +MOD05_021E7C14: ; 0x021E7C14 + ldr r3, _021E7C18 ; =FreeToHeap + bx r3 + .balign 4, 0 +_021E7C18: .word FreeToHeap + + thumb_func_start MOD05_021E7C1C +MOD05_021E7C1C: ; 0x021E7C1C + push {r3, r4, r5, r6, r7} + sub sp, #0xc + mov r4, #0 + mov ip, r0 + add r7, sp, #0 + add r3, r4, #0 +_021E7C28: + str r3, [r7] + str r3, [r7, #4] + mov r0, #0x8c + add r1, r4, #0 + mul r1, r0 + mov r0, ip + add r2, r0, r1 + add r5, r2, #0 + str r3, [r7, #8] + mov r0, ip + str r3, [r0, r1] + str r3, [r2, #4] + str r3, [r2, #8] + str r3, [r2, #0xc] + add r6, r7, #0 + ldmia r6!, {r0, r1} + add r5, #0x68 + stmia r5!, {r0, r1} + ldr r0, [r6] + add r6, r7, #0 + str r0, [r5] + add r5, r2, #0 + ldmia r6!, {r0, r1} + add r5, #0x74 + stmia r5!, {r0, r1} + ldr r0, [r6] + add r6, r7, #0 + str r0, [r5] + add r5, r2, #0 + ldmia r6!, {r0, r1} + add r5, #0x80 + stmia r5!, {r0, r1} + ldr r0, [r6] + str r0, [r5] + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + str r3, [r2, #0x64] + cmp r4, #0x20 + blo _021E7C28 + add sp, #0xc + pop {r3, r4, r5, r6, r7} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E7C80 +MOD05_021E7C80: ; 0x021E7C80 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0x20 + blt _021E7C90 + bl ErrorHandling +_021E7C90: + add r6, sp, #0 + mov r3, #0 + str r3, [r6] + str r3, [r6, #4] + mov r0, #0x8c + mul r0, r5 + str r3, [r6, #8] + str r3, [r4, r0] + add r2, r4, r0 + str r3, [r2, #4] + str r3, [r2, #8] + add r4, r2, #0 + str r3, [r2, #0xc] + add r5, r6, #0 + ldmia r5!, {r0, r1} + add r4, #0x68 + stmia r4!, {r0, r1} + ldr r0, [r5] + add r5, r6, #0 + str r0, [r4] + add r4, r2, #0 + ldmia r5!, {r0, r1} + add r4, #0x74 + stmia r4!, {r0, r1} + ldr r0, [r5] + str r0, [r4] + add r4, r2, #0 + ldmia r6!, {r0, r1} + add r4, #0x80 + stmia r4!, {r0, r1} + ldr r0, [r6] + str r0, [r4] + str r3, [r2, #0x64] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7CD8 +MOD05_021E7CD8: ; 0x021E7CD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldr r0, [sp, #0x28] + add r4, r1, #0 + str r0, [sp, #0x28] + mov r0, #0 + add r7, r2, #0 + add r5, r3, #0 + str r0, [sp, #4] + cmp r4, #0 + beq _021E7D0E + mov r0, #4 + bl AllocFromHeapAtEnd + str r0, [sp, #4] + ldr r2, [sp, #4] + add r0, r6, #0 + add r1, r4, #0 + bl NARC_ReadFile + add r0, r4, #0 + mov r1, #0x30 + bl _u32_div_f + str r0, [sp] + b _021E7D10 +_021E7D0E: + str r0, [sp] +_021E7D10: + ldr r4, [sp, #4] + mov r6, #0 +_021E7D14: + ldr r0, [sp] + cmp r6, r0 + bhs _021E7D82 + ldr r0, [r4] + add r2, r5, #0 + str r0, [r5] + mov r0, #1 + str r0, [r5, #4] + mov r0, #0 + add r3, r4, #4 + str r0, [r5, #0xc] + ldmia r3!, {r0, r1} + add r2, #0x68 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, r4, #0 + str r0, [r2] + add r3, #0x10 + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x74 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, r4, #0 + str r0, [r2] + add r3, #0x1c + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x80 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, r5, #0 + str r0, [r2] + add r2, r5, #0 + ldr r0, [r5] + add r1, r7, #0 + add r2, #0x10 + add r3, #0x64 + bl MOD05_021E7F10 + ldr r1, [r5] + add r0, r7, #0 + bl MOD05_021F4CE4 + cmp r0, #0 + bne _021E7D74 + mov r0, #0 + str r0, [r5] +_021E7D74: + add r1, r5, #0 + ldr r0, [r5] + ldr r2, [sp, #0x28] + add r1, #0x10 + bl MOD05_021D9E80 + b _021E7DBE +_021E7D82: + mov r1, #0 + add r0, sp, #8 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + add r0, r1, #0 + str r0, [r5] + str r0, [r5, #4] + add r2, r5, #0 + add r3, sp, #8 + str r0, [r5, #0xc] + ldmia r3!, {r0, r1} + add r2, #0x68 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, sp, #8 + str r0, [r2] + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x74 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, sp, #8 + str r0, [r2] + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x80 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] +_021E7DBE: + add r6, r6, #1 + add r5, #0x8c + add r4, #0x30 + cmp r6, #0x20 + blt _021E7D14 + ldr r0, [sp, #4] + cmp r0, #0 + beq _021E7DD2 + bl FreeToHeap +_021E7DD2: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7DD8 +MOD05_021E7DD8: ; 0x021E7DD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x48 + ldr r4, _021E7E94 ; =UNK05_021F7878 + str r2, [sp, #0xc] + str r3, [sp, #0x10] + add r6, r0, #0 + str r1, [sp, #8] + add r3, sp, #0x18 + mov r2, #4 +_021E7DEA: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021E7DEA + ldr r0, [r4] + ldr r5, [sp, #0x60] + str r0, [r3] + mov r7, #0 +_021E7DFA: + ldr r0, [r5, #4] + cmp r0, #0 + beq _021E7E86 + ldr r0, [r5, #8] + cmp r0, #0 + bne _021E7E86 + add r4, r5, #0 + add r4, #0x68 + ldmia r4!, {r0, r1} + add r3, sp, #0x3c + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + ldr r1, [sp, #0x3c] + ldr r0, [r6] + add r3, r5, #0 + add r0, r1, r0 + str r0, [sp, #0x3c] + ldr r1, [sp, #0x44] + ldr r0, [r6, #8] + add r3, #0x80 + add r0, r1, r0 + str r0, [sp, #0x44] + add r1, r2, #0 + ldr r0, [r5, #0x64] + add r2, sp, #0x18 + bl FUN_0201B6D0 + cmp r0, #0 + beq _021E7E86 + ldr r0, [sp, #8] + bl MOD05_021F4C9C + add r4, r0, #0 + ldr r0, [sp, #0xc] + cmp r0, #1 + bne _021E7E50 + ldr r0, [sp, #0x10] + ldr r1, [r5, #0x64] + ldr r2, _021E7E98 ; =0x00000F33 + bl MOD05_021DBB8C +_021E7E50: + ldr r0, [r5] + add r1, r4, #0 + add r2, sp, #0x14 + bl MOD05_021DB9D4 + add r0, sp, #0x14 + ldrh r0, [r0] + add r1, sp, #0x3c + cmp r0, #0 + bne _021E7E74 + add r0, r5, #0 + add r3, r5, #0 + add r0, #0x10 + add r2, sp, #0x18 + add r3, #0x80 + bl FUN_0201B26C + b _021E7E86 +_021E7E74: + str r4, [sp] + ldr r0, [r5] + add r3, r5, #0 + str r0, [sp, #4] + ldr r0, [r5, #0x64] + add r2, sp, #0x18 + add r3, #0x80 + bl MOD05_021E7F34 +_021E7E86: + add r7, r7, #1 + add r5, #0x8c + cmp r7, #0x20 + blt _021E7DFA + add sp, #0x48 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E7E94: .word UNK05_021F7878 +_021E7E98: .word 0x00000F33 + + thumb_func_start MOD05_021E7E9C +MOD05_021E7E9C: ; 0x021E7E9C + add r0, #0x74 + bx lr + + thumb_func_start MOD05_021E7EA0 +MOD05_021E7EA0: ; 0x021E7EA0 + add r2, r1, #0 + add r2, #0x68 + add r3, r0, #0 + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r2] + str r0, [r3] + bx lr + + thumb_func_start MOD05_021E7EB0 +MOD05_021E7EB0: ; 0x021E7EB0 + add r3, r1, #0 + add r2, r0, #0 + ldmia r3!, {r0, r1} + add r2, #0x68 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + bx lr + + thumb_func_start MOD05_021E7EC0 +MOD05_021E7EC0: ; 0x021E7EC0 + str r1, [r0, #8] + bx lr + + thumb_func_start MOD05_021E7EC4 +MOD05_021E7EC4: ; 0x021E7EC4 + ldr r0, [r0] + bx lr + + thumb_func_start MOD05_021E7EC8 +MOD05_021E7EC8: ; 0x021E7EC8 + add r0, #0x10 + bx lr + + thumb_func_start MOD05_021E7ECC +MOD05_021E7ECC: ; 0x021E7ECC + ldr r0, [r0, #0x64] + bx lr + + thumb_func_start MOD05_021E7ED0 +MOD05_021E7ED0: ; 0x021E7ED0 + mov r2, #0x8c + mul r2, r1 + add r0, r0, r2 + bx lr + + thumb_func_start MOD05_021E7ED8 +MOD05_021E7ED8: ; 0x021E7ED8 + mov r3, #0 +_021E7EDA: + ldr r2, [r0] + cmp r2, r1 + beq _021E7EEA + add r3, r3, #1 + add r0, #0x8c + cmp r3, #0x20 + blt _021E7EDA + mov r0, #0 +_021E7EEA: + bx lr + + thumb_func_start MOD05_021E7EEC +MOD05_021E7EEC: ; 0x021E7EEC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #0x20 + blt _021E7EFA + bl ErrorHandling +_021E7EFA: + mov r0, #0x8c + mul r0, r4 + add r4, r5, r0 + ldr r0, [r4, #4] + cmp r0, #0 + bne _021E7F0A + bl ErrorHandling +_021E7F0A: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7F10 +MOD05_021E7F10: ; 0x021E7F10 + push {r3, r4, r5, lr} + add r5, r2, #0 + add r4, r3, #0 + bl MOD05_021F4BD0 + ldr r0, [r0] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r1, r0, r1 + add r0, r5, #0 + str r1, [r4] + bl FUN_020B80B4 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7F34 +MOD05_021E7F34: ; 0x021E7F34 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, r1, #0 + add r4, r2, #0 + add r5, r3, #0 + bl FUN_020B8474 + ldr r1, _021E7FB4 ; =UNK_021CEDD4 + add r0, r4, #0 + bl MI_Copy36B + ldr r1, _021E7FB8 ; =UNK_021CED98 + mov r0, #0xa4 + ldr r2, [r1, #0x7c] + bic r2, r0 + add r0, r5, #0 + str r2, [r1, #0x7c] + bl FUN_020B844C + bl FUN_020B849C + add r2, sp, #0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r2, #2 + add r3, sp, #0 + bl MOD05_021DB9E0 + add r0, sp, #0 + ldrh r0, [r0] + ldr r1, [sp, #0x18] + bl MOD05_021DB9F8 + add r6, r0, #0 + add r0, sp, #0 + ldrh r0, [r0, #2] + mov r5, #0xff + mov r4, #0 + cmp r0, #0 + ble _021E7FB0 +_021E7F84: + lsl r0, r4, #2 + add r2, r6, r0 + ldrh r0, [r6, r0] + cmp r5, r0 + beq _021E7F96 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + mov r3, #1 + b _021E7F98 +_021E7F96: + mov r3, #0 +_021E7F98: + ldrh r2, [r2, #2] + add r0, r7, #0 + add r1, r5, #0 + bl FUN_020BAFB8 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, sp, #0 + ldrh r0, [r0, #2] + cmp r4, r0 + blt _021E7F84 +_021E7FB0: + pop {r3, r4, r5, r6, r7, pc} + nop +_021E7FB4: .word UNK_021CEDD4 +_021E7FB8: .word UNK_021CED98 + + thumb_func_start MOD05_021E7FBC +MOD05_021E7FBC: ; 0x021E7FBC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r5, _021E8058 ; =UNK05_021F786C + add r6, r0, #0 + add r7, r1, #0 + ldmia r5!, {r0, r1} + add r4, sp, #4 + stmia r4!, {r0, r1} + ldr r0, [r5] + str r0, [r4] + mov r4, #0 + mov r0, #0x8c +_021E7FD4: + add r1, r4, #0 + mul r1, r0 + add r5, r6, r1 + ldr r1, [r5, #4] + cmp r1, #0 + bne _021E8044 + mov r0, #1 + str r0, [r5, #4] + add r6, r5, #0 + ldmia r3!, {r0, r1} + add r6, #0x68 + stmia r6!, {r0, r1} + ldr r0, [r3] + str r0, [r6] + ldr r6, [sp, #0x28] + cmp r6, #0 + beq _021E8008 + mov r0, #1 + str r0, [r5, #0xc] + add r3, r5, #0 + ldmia r6!, {r0, r1} + add r3, #0x74 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + b _021E800C +_021E8008: + mov r0, #0 + str r0, [r5, #0xc] +_021E800C: + add r6, sp, #4 + add r3, r5, #0 + ldmia r6!, {r0, r1} + add r3, #0x80 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r7, #0 + str r0, [r3] + add r3, r5, #0 + str r2, [r5] + add r0, r2, #0 + add r2, r5, #0 + add r2, #0x10 + add r3, #0x64 + bl MOD05_021E7F10 + ldr r0, [sp, #0x2c] + mov r1, #0 + str r0, [sp] + ldr r0, [r5] + add r5, #0x10 + add r2, r1, #0 + add r3, r5, #0 + bl MOD05_021D9DC0 + add sp, #0x10 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E8044: + add r1, r4, #1 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + cmp r4, #0x20 + blo _021E7FD4 + bl ErrorHandling + mov r0, #0x20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E8058: .word UNK05_021F786C + + thumb_func_start MOD05_021E805C +MOD05_021E805C: ; 0x021E805C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + ldr r4, _021E80F4 ; =UNK05_021F789C + str r0, [sp, #8] + str r1, [sp, #0xc] + add r3, sp, #0x14 + mov r2, #4 +_021E806A: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021E806A + ldr r0, [r4] + mov r4, #0 + str r0, [r3] + add r7, sp, #0x14 +_021E807A: + mov r0, #0x8c + add r1, r4, #0 + mul r1, r0 + ldr r0, [sp, #8] + add r5, r0, r1 + ldr r0, [r5, #4] + cmp r0, #0 + beq _021E80E4 + ldr r0, [r5, #8] + cmp r0, #0 + bne _021E80E4 + ldr r0, [sp, #0xc] + bl MOD05_021F4C9C + add r6, r0, #0 + ldr r0, [r5] + add r1, r6, #0 + add r2, sp, #0x10 + bl MOD05_021DB9D4 + ldr r0, [r5, #0xc] + cmp r0, #0 + beq _021E80B2 + add r1, r5, #0 + add r0, r7, #0 + add r1, #0x74 + bl FUN_0201CAA8 +_021E80B2: + add r0, sp, #0x10 + ldrh r0, [r0] + cmp r0, #0 + bne _021E80CE + add r0, r5, #0 + add r1, r5, #0 + add r5, #0x80 + add r0, #0x10 + add r1, #0x68 + add r2, r7, #0 + add r3, r5, #0 + bl FUN_0201B26C + b _021E80E4 +_021E80CE: + str r6, [sp] + ldr r0, [r5] + add r1, r5, #0 + str r0, [sp, #4] + ldr r0, [r5, #0x64] + add r5, #0x80 + add r1, #0x68 + add r2, r7, #0 + add r3, r5, #0 + bl MOD05_021E7F34 +_021E80E4: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x20 + blo _021E807A + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E80F4: .word UNK05_021F789C + + .section .rodata + + .global UNK05_021F786C +UNK05_021F786C: ; 0x021F786C + .word 0x00001000, 0x00001000, 0x00001000 + + .global UNK05_021F7878 +UNK05_021F7878: ; 0x021F7878 + .byte 0x00, 0x10, 0x00, 0x00 ;word + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + + .global UNK05_021F789C +UNK05_021F789C: ; 0x021F789C + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ;word + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 diff --git a/arm9/modules/05/asm/mod05_021E80F8.s b/arm9/modules/05/asm/mod05_021E80F8.s new file mode 100644 index 00000000..82fd7a02 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E80F8.s @@ -0,0 +1,303 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E80F8 +MOD05_021E80F8: ; 0x021E80F8 + push {r3, lr} + mov r1, #0x14 + bl AllocFromHeap + add r3, r0, #0 + mov r2, #0x14 + mov r1, #0 +_021E8106: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _021E8106 + pop {r3, pc} + + thumb_func_start MOD05_021E8110 +MOD05_021E8110: ; 0x021E8110 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #0x13] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + beq _021E8120 + bl FUN_02019178 +_021E8120: + add r0, r4, #0 + bl FreeToHeap + pop {r4, pc} + + thumb_func_start MOD05_021E8128 +MOD05_021E8128: ; 0x021E8128 + strb r1, [r0, #0x12] + strh r2, [r0, #0x10] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E8130 +MOD05_021E8130: ; 0x021E8130 + ldrb r3, [r0, #0x13] + mov r2, #0x7f + bic r3, r2 + mov r2, #0x7f + and r1, r2 + orr r1, r3 + strb r1, [r0, #0x13] + bx lr + + thumb_func_start MOD05_021E8140 +MOD05_021E8140: ; 0x021E8140 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E8144 +MOD05_021E8144: ; 0x021E8144 + ldrb r0, [r0, #0x12] + bx lr + + thumb_func_start MOD05_021E8148 +MOD05_021E8148: ; 0x021E8148 + ldrb r0, [r0, #0x13] + lsl r0, r0, #0x19 + lsr r0, r0, #0x19 + bne _021E8154 + mov r0, #1 + bx lr +_021E8154: + mov r0, #0 + bx lr + + thumb_func_start MOD05_021E8158 +MOD05_021E8158: ; 0x021E8158 + push {r4, lr} + ldr r4, [r0, #0x60] + ldrb r1, [r4, #0x13] + lsl r1, r1, #0x19 + lsr r1, r1, #0x19 + cmp r1, #4 + bhi _021E81BA + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E8172: ; jump table + .short _021E81BA - _021E8172 - 2 ; case 0 + .short _021E817C - _021E8172 - 2 ; case 1 + .short _021E818A - _021E8172 - 2 ; case 2 + .short _021E819C - _021E8172 - 2 ; case 3 + .short _021E81AE - _021E8172 - 2 ; case 4 +_021E817C: + bl MOD05_021E81D0 + ldrb r1, [r4, #0x13] + mov r0, #0x7f + bic r1, r0 + strb r1, [r4, #0x13] + pop {r4, pc} +_021E818A: + bl MOD05_021E82A0 + cmp r0, #1 + bne _021E81BA + ldrb r1, [r4, #0x13] + mov r0, #0x7f + bic r1, r0 + strb r1, [r4, #0x13] + pop {r4, pc} +_021E819C: + bl MOD05_021E8260 + cmp r0, #1 + bne _021E81BA + ldrb r1, [r4, #0x13] + mov r0, #0x7f + bic r1, r0 + strb r1, [r4, #0x13] + pop {r4, pc} +_021E81AE: + bl MOD05_021E820C + ldrb r1, [r4, #0x13] + mov r0, #0x7f + bic r1, r0 + strb r1, [r4, #0x13] +_021E81BA: + pop {r4, pc} + + thumb_func_start MOD05_021E81BC +MOD05_021E81BC: ; 0x021E81BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x60] + bl MOD05_021E8130 + add r0, r4, #0 + bl MOD05_021E8158 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E81D0 +MOD05_021E81D0: ; 0x021E81D0 + push {r4, lr} + mov r1, #3 + add r4, r0, #0 + add r3, r1, #0 + ldr r0, [r4, #8] + add r2, r1, #0 + sub r3, #0x33 + bl FUN_020179E0 + ldr r1, [r4, #0x60] + ldrb r0, [r1, #0x13] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bne _021E8200 + ldrb r2, [r1, #0x12] + ldr r0, [r4, #8] + mov r3, #3 + bl FUN_020546E0 + ldr r2, [r4, #0x60] + mov r0, #0x80 + ldrb r1, [r2, #0x13] + orr r0, r1 + strb r0, [r2, #0x13] +_021E8200: + ldr r0, [r4, #0x60] + ldrb r1, [r0, #0x12] + ldrh r2, [r0, #0x10] + bl FUN_02054744 + pop {r4, pc} + + thumb_func_start MOD05_021E820C +MOD05_021E820C: ; 0x021E820C + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, [r4, #0x60] + ldrb r1, [r0, #0x13] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + beq _021E825A + bl FUN_02019178 + mov r0, #0x12 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + mov r2, #0 + ldr r0, [r4, #8] + mov r1, #3 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4, #8] + mov r1, #3 + bl FUN_02017CD0 + mov r1, #3 + ldr r0, [r4, #8] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r2, [r4, #0x60] + mov r0, #0x80 + ldrb r1, [r2, #0x13] + bic r1, r0 + strb r1, [r2, #0x13] +_021E825A: + add sp, #0x10 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E8260 +MOD05_021E8260: ; 0x021E8260 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + mov r1, #3 + bl FUN_02017B54 + cmp r0, #0 + bne _021E8274 + mov r0, #1 + pop {r4, pc} +_021E8274: + mov r1, #0x2f + mvn r1, r1 + cmp r0, r1 + ble _021E8280 + cmp r0, #0 + blt _021E828E +_021E8280: + mov r1, #3 + add r3, r1, #0 + ldr r0, [r4, #8] + add r2, r1, #0 + sub r3, #0x33 + bl FUN_020179E0 +_021E828E: + ldr r0, [r4, #8] + mov r1, #3 + mov r2, #4 + mov r3, #0x10 + bl FUN_020179E0 + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E82A0 +MOD05_021E82A0: ; 0x021E82A0 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, [r4, #8] + mov r1, #3 + bl FUN_02017B54 + mov r1, #0x2f + mvn r1, r1 + cmp r0, r1 + bne _021E82EC + mov r0, #0x12 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + mov r2, #0 + ldr r0, [r4, #8] + mov r1, #3 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4, #8] + mov r1, #3 + bl FUN_02017CD0 + mov r1, #3 + ldr r0, [r4, #8] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + add sp, #0x10 + mov r0, #1 + pop {r4, pc} +_021E82EC: + ble _021E82F2 + cmp r0, #0 + blt _021E82FE +_021E82F2: + mov r1, #3 + ldr r0, [r4, #8] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 +_021E82FE: + ldr r0, [r4, #8] + mov r1, #3 + mov r2, #5 + mov r3, #0x10 + bl FUN_020179E0 + mov r0, #0 + add sp, #0x10 + pop {r4, pc} diff --git a/arm9/modules/05/asm/mod05_021E8310.s b/arm9/modules/05/asm/mod05_021E8310.s new file mode 100644 index 00000000..e3a28a97 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E8310.s @@ -0,0 +1,409 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E8310 +MOD05_021E8310: ; 0x021E8310 + push {r3, r4, r5, r6, r7, lr} + ldr r4, [r1, #0xc] + add r5, r0, #0 + add r0, r4, #0 + bl FUN_02034E30 + bl FUN_02034DC0 + add r6, r0, #0 + add r0, r4, #0 + bl Sav2_Pokedex_get + add r7, r0, #0 + ldr r0, [r6] + bl FUN_02034824 + str r0, [r5, #4] + add r0, r7, #0 + bl Pokedex_GetSinnohDexFlag + cmp r0, #0 + beq _021E8344 + add r0, r7, #0 + bl Pokedex_CountSeenMons + b _021E8346 +_021E8344: + mov r0, #0 +_021E8346: + str r0, [r5] + add r0, r4, #0 + bl Sav2_PlayerData_GetProfileAddr + str r0, [r5, #8] + add r0, r4, #0 + bl Sav2_PlayerData_GetIGTAddr + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E835C +MOD05_021E835C: ; 0x021E835C + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + ldr r2, [r4, #4] + mov r1, #0 + add r5, r0, #0 + bl BufferLandmarkName + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl BufferPlayersName + ldr r0, [r4, #8] + bl PlayerProfile_CountBadges + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + add r0, r5, #0 + mov r1, #2 + bl BufferIntegerAsString + ldr r2, [r4] + cmp r2, #0x64 + blt _021E839A + mov r3, #3 + mov r0, #0 + b _021E83A8 +_021E839A: + cmp r2, #0xa + blt _021E83A4 + mov r3, #3 + mov r0, #1 + b _021E83A8 +_021E83A4: + mov r3, #2 + mov r0, #1 +_021E83A8: + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #3 + bl BufferIntegerAsString + ldr r0, [r4, #0xc] + bl GetIGTHours + add r2, r0, #0 + cmp r2, #0x64 + blt _021E83C8 + mov r3, #3 + mov r0, #0 + b _021E83D6 +_021E83C8: + cmp r2, #0xa + blt _021E83D2 + mov r3, #3 + mov r0, #1 + b _021E83D6 +_021E83D2: + mov r3, #2 + mov r0, #1 +_021E83D6: + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #4 + bl BufferIntegerAsString + ldr r0, [r4, #0xc] + bl GetIGTMinutes + mov r3, #2 + add r2, r0, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #5 + bl BufferIntegerAsString + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E8400 +MOD05_021E8400: ; 0x021E8400 + ldr r0, [r0] + cmp r0, #0 + beq _021E840A + mov r0, #0xa + bx lr +_021E840A: + mov r0, #8 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E8410 +MOD05_021E8410: ; 0x021E8410 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0 + mov r1, #1 + bl FUN_02002E4C + add r4, r0, #0 + mov r0, #0 + mov r1, #3 + bl FUN_02002E4C + add r0, r4, r0 + str r0, [sp, #0x14] + mov r4, #0 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r3, [r5, #4] + add r2, r4, #0 + bl ReadMsgData_ExpandPlaceholders + add r1, r4, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r5, #0x10] + add r2, r6, #0 + add r3, r1, #0 + bl AddTextPrinterParameterized + add r0, r6, #0 + bl String_dtor + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _021E84EC ; =UNK05_021F78D4 + ldr r7, _021E84F0 ; =UNK05_021F78C4 + str r0, [sp, #0xc] +_021E8460: + ldr r0, [sp, #0xc] + ldr r1, [r0] + cmp r1, #3 + bne _021E846E + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E84D6 +_021E846E: + ldr r0, [sp, #0x14] + add r4, r4, r0 + ldr r0, [r5, #0x18] + bl NewString_ReadMsgData + add r6, r0, #0 + mov r1, #0 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r5, #0x10] + add r2, r6, #0 + add r3, r1, #0 + bl AddTextPrinterParameterized + add r0, r6, #0 + bl String_dtor + sub r2, r7, #4 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r2, [r2] + ldr r3, [r5, #4] + bl ReadMsgData_ExpandPlaceholders + add r6, r0, #0 + mov r0, #0 + mov r1, #2 + bl FUN_02002E4C + add r2, r0, #0 + mov r0, #0 + add r1, r6, #0 + bl FUN_02002E14 + mov r1, #0x68 + sub r3, r1, r0 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r5, #0x10] + mov r1, #0 + add r2, r6, #0 + bl AddTextPrinterParameterized + add r0, r6, #0 + bl String_dtor +_021E84D6: + ldr r0, [sp, #0xc] + add r7, r7, #4 + add r0, r0, #4 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #5 + blo _021E8460 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E84EC: .word UNK05_021F78D4 +_021E84F0: .word UNK05_021F78C4 + + thumb_func_start MOD05_021E84F4 +MOD05_021E84F4: ; 0x021E84F4 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #0x10 + bl AllocFromHeap + str r0, [r4, #0x10] + mov r3, #1 + str r3, [sp] + ldr r0, [r4, #0x2c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _021E8564 ; =0x0000027F + str r0, [sp, #0x10] + ldrb r2, [r4, #8] + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #4] + ldr r2, _021E8568 ; =0x000003D9 + str r0, [sp, #4] + ldrb r1, [r4, #8] + ldr r0, [r4, #0xc] + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0 + mov r1, #6 + bl FUN_02002E4C + add r1, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_02019620 + add r0, r4, #0 + bl MOD05_021E8410 + ldr r0, [r4, #0x10] + ldr r2, _021E8568 ; =0x000003D9 + mov r1, #0 + mov r3, #0xb + bl FUN_0200CCA4 + add sp, #0x14 + pop {r3, r4, pc} + .balign 4, 0 +_021E8564: .word 0x0000027F +_021E8568: .word 0x000003D9 + + thumb_func_start MOD05_021E856C +MOD05_021E856C: ; 0x021E856C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200CCF8 + ldr r0, [r4, #0x10] + bl FUN_02019178 + ldr r0, [r4, #0x10] + bl FreeToHeap + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E8588 +MOD05_021E8588: ; 0x021E8588 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0x34 + add r7, r2, #0 + bl AllocFromHeap + add r4, r0, #0 + str r6, [r4] + str r5, [r4, #4] + strb r7, [r4, #8] + ldr r0, [r6, #8] + str r0, [r4, #0xc] + add r0, r5, #0 + bl ScrStrBufs_new + str r0, [r4, #0x14] + ldr r2, _021E85E0 ; =0x000001E3 + mov r0, #1 + mov r1, #0x1a + add r3, r5, #0 + bl NewMsgDataFromNarc + str r0, [r4, #0x18] + add r0, r4, #0 + ldr r1, [r4] + add r0, #0x1c + bl MOD05_021E8310 + add r1, r4, #0 + ldr r0, [r4, #0x14] + add r1, #0x1c + bl MOD05_021E835C + mov r0, #0xd + str r0, [r4, #0x2c] + add r0, r4, #0 + add r0, #0x1c + bl MOD05_021E8400 + str r0, [r4, #0x30] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E85E0: .word 0x000001E3 + + thumb_func_start MOD05_021E85E4 +MOD05_021E85E4: ; 0x021E85E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + bl DestroyMsgData + ldr r0, [r4, #0x14] + bl ScrStrBufs_delete + add r0, r4, #0 + bl FreeToHeap + pop {r4, pc} + + thumb_func_start MOD05_021E85FC +MOD05_021E85FC: ; 0x021E85FC + push {r4, lr} + add r4, r0, #0 + bl FUN_02034E48 + add r0, r4, #0 + mov r1, #4 + mov r2, #0 + bl MOD05_021EFA9C + ldr r0, [r4, #0x38] + bl FUN_02055320 + ldr r1, [r4, #0x1c] + str r0, [r1, #8] + ldr r0, [r4, #0x38] + bl FUN_0205532C + ldr r1, [r4, #0x1c] + str r0, [r1, #0xc] + mov r1, #0 + ldr r0, [r4, #0x1c] + mvn r1, r1 + str r1, [r0, #4] + ldr r0, [r4, #0x38] + bl FUN_020552F8 + ldr r1, [r4, #0x1c] + str r0, [r1, #0x10] + ldr r0, [r4, #0xc] + bl FUN_02022720 + cmp r0, #2 + bne _021E8642 + mov r0, #1 + pop {r4, pc} +_021E8642: + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + + .section .rodata + + .global UNK05_021F78C4 +UNK05_021F78C4: ; 0x021F78C4 + .word 0x00000006, 0x00000007, 0x00000008, 0x00000000 + + .global UNK05_021F78D4 +UNK05_021F78D4: ; 0x021F78D4 + .word 0x00000001, 0x00000002, 0x00000003, 0x00000004 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index d8ed3656..23f6ea7b 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -3,2564 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD05_021E72FC -MOD05_021E72FC: ; 0x021E72FC - push {r4, r5, r6, lr} - add r6, r1, #0 - add r5, r0, #0 - add r0, r6, #0 - bl FUN_020553A0 - bl FUN_02058720 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - add r0, r4, #0 - bl FUN_02054B30 - cmp r0, #1 - bne _021E731E - mov r2, #3 - b _021E734C -_021E731E: - add r0, r4, #0 - bl FUN_02054B3C - cmp r0, #1 - bne _021E732C - mov r2, #2 - b _021E734C -_021E732C: - add r0, r4, #0 - bl FUN_02054B48 - cmp r0, #1 - bne _021E733A - mov r2, #0 - b _021E734C -_021E733A: - add r0, r4, #0 - bl FUN_02054B54 - cmp r0, #1 - bne _021E7348 - mov r2, #1 - b _021E734C -_021E7348: - mov r0, #0 - pop {r4, r5, r6, pc} -_021E734C: - add r0, r5, #0 - add r1, r6, #0 - bl MOD05_021E7358 - mov r0, #1 - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021E7358 -MOD05_021E7358: ; 0x021E7358 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - mov r0, #0x18 - add r6, r1, #0 - add r7, r2, #0 - bl MOD05_021E74D4 - add r4, r0, #0 - str r5, [r4, #0xc] - str r6, [r4, #0x10] - ldr r0, _021E7380 ; =0x00000658 - str r7, [r4] - bl FUN_020054C8 - ldr r1, _021E7384 ; =MOD05_021E73B4 - add r0, r5, #0 - add r2, r4, #0 - bl FUN_020463CC - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E7380: .word 0x00000658 -_021E7384: .word MOD05_021E73B4 - - thumb_func_start MOD05_021E7388 -MOD05_021E7388: ; 0x021E7388 - cmp r0, #3 - bhi _021E73B0 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021E7398: ; jump table - .short _021E73A0 - _021E7398 - 2 ; case 0 - .short _021E73A8 - _021E7398 - 2 ; case 1 - .short _021E73A4 - _021E7398 - 2 ; case 2 - .short _021E73AC - _021E7398 - 2 ; case 3 -_021E73A0: - mov r0, #2 - bx lr -_021E73A4: - mov r0, #1 - bx lr -_021E73A8: - mov r0, #3 - bx lr -_021E73AC: - mov r0, #0 - bx lr -_021E73B0: - mov r0, #0 - bx lr - - thumb_func_start MOD05_021E73B4 -MOD05_021E73B4: ; 0x021E73B4 - push {r4, r5, r6, lr} - bl FUN_0204652C - add r4, r0, #0 - ldr r0, [r4, #0x10] - bl FUN_020553A0 - add r6, r0, #0 - bl FUN_02058720 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - ldr r0, [r4, #8] - cmp r0, #0 - beq _021E73DC - cmp r0, #1 - beq _021E73EE - cmp r0, #2 - beq _021E741C - b _021E74CA -_021E73DC: - mov r1, #1 - add r0, r6, #0 - lsl r1, r1, #8 - bl FUN_02058410 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - b _021E74CA -_021E73EE: - ldr r0, [r4, #0x10] - bl FUN_02057254 - cmp r0, #0 - beq _021E74CA - ldr r0, [r4] - mov r1, #0xc - bl FUN_0205AFDC - add r1, r0, #0 - ldr r0, [r4, #0x10] - bl FUN_02057260 - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #7 - str r0, [r4, #4] - b _021E74CA -_021E741C: - ldr r0, [r4, #4] - cmp r0, #2 - beq _021E742A - cmp r0, #4 - beq _021E742A - cmp r0, #6 - bne _021E743A -_021E742A: - ldr r0, [r4] - bl MOD05_021E7388 - str r0, [r4] - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 -_021E743A: - ldr r0, [r4, #4] - sub r0, r0, #1 - str r0, [r4, #4] - bne _021E74CA - add r0, r5, #0 - bl FUN_02054B30 - cmp r0, #1 - bne _021E7452 - mov r0, #3 - str r0, [r4] - b _021E748A -_021E7452: - add r0, r5, #0 - bl FUN_02054B3C - cmp r0, #1 - bne _021E7462 - mov r0, #2 - str r0, [r4] - b _021E748A -_021E7462: - add r0, r5, #0 - bl FUN_02054B48 - cmp r0, #1 - bne _021E7472 - mov r0, #0 - str r0, [r4] - b _021E748A -_021E7472: - add r0, r5, #0 - bl FUN_02054B54 - cmp r0, #1 - bne _021E7482 - mov r0, #1 - str r0, [r4] - b _021E748A -_021E7482: - ldr r0, [r4] - bl MOD05_021E7388 - str r0, [r4] -_021E748A: - ldr r0, [r4, #0x10] - ldr r2, [r4] - add r1, r6, #0 - bl FUN_02056B74 - cmp r0, #0 - bne _021E749E - mov r0, #1 - str r0, [r4, #8] - b _021E74CA -_021E749E: - add r0, r6, #0 - mov r1, #0x80 - bl FUN_02058418 - mov r1, #1 - add r0, r6, #0 - lsl r1, r1, #8 - bl FUN_02058418 - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 - add r0, r4, #0 - bl MOD05_021E74F8 - ldr r0, _021E74D0 ; =0x00000658 - mov r1, #0 - bl FUN_020054F0 - mov r0, #1 - pop {r4, r5, r6, pc} -_021E74CA: - mov r0, #0 - pop {r4, r5, r6, pc} - nop -_021E74D0: .word 0x00000658 - - thumb_func_start MOD05_021E74D4 -MOD05_021E74D4: ; 0x021E74D4 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #4 - add r1, r5, #0 - bl AllocFromHeapAtEnd - add r4, r0, #0 - bne _021E74E8 - bl ErrorHandling -_021E74E8: - add r0, r4, #0 - mov r1, #0 - add r2, r5, #0 - bl memset - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E74F8 -MOD05_021E74F8: ; 0x021E74F8 - ldr r3, _021E7500 ; =FUN_02016A8C - add r1, r0, #0 - mov r0, #4 - bx r3 - .balign 4, 0 -_021E7500: .word FUN_02016A8C - - thumb_func_start MOD05_021E7504 -MOD05_021E7504: ; 0x021E7504 - add r1, r0, #0 - ldr r0, [r1, #0x10] - cmp r0, #3 - bhi _021E7536 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021E7518: ; jump table - .short _021E7520 - _021E7518 - 2 ; case 0 - .short _021E752C - _021E7518 - 2 ; case 1 - .short _021E7526 - _021E7518 - 2 ; case 2 - .short _021E7532 - _021E7518 - 2 ; case 3 -_021E7520: - mov r0, #2 - str r0, [r1, #0x10] - b _021E7536 -_021E7526: - mov r0, #1 - str r0, [r1, #0x10] - b _021E7536 -_021E752C: - mov r0, #3 - str r0, [r1, #0x10] - b _021E7536 -_021E7532: - mov r0, #0 - str r0, [r1, #0x10] -_021E7536: - ldr r0, [r1] - ldr r3, _021E7540 ; =FUN_02055304 - ldr r0, [r0, #0x38] - ldr r1, [r1, #0x10] - bx r3 - .balign 4, 0 -_021E7540: .word FUN_02055304 - - thumb_func_start MOD05_021E7544 -MOD05_021E7544: ; 0x021E7544 - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r5, r1, #0 - add r7, r0, #0 - ldr r0, [r5] - ldr r0, [r0, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - ldr r0, [r5, #8] - cmp r0, #0 - beq _021E7564 - cmp r0, #1 - beq _021E756E - add sp, #0x24 - pop {r4, r5, r6, r7, pc} -_021E7564: - mov r0, #1 - str r0, [r5, #8] - ldr r0, _021E760C ; =0x0000064F - bl FUN_020054C8 -_021E756E: - ldr r0, [r5, #0xc] - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - beq _021E7584 - add r0, r5, #0 - bl MOD05_021E7504 -_021E7584: - add r0, r6, #0 - add r1, sp, #0x18 - bl FUN_02058BA4 - ldr r4, [r5, #0xc] - add r0, r4, #0 - bl _dflt - str r0, [sp, #0x14] - lsl r0, r4, #0xb - str r1, [sp, #0x10] - bl _dflt - add r2, r0, #0 - add r3, r1, #0 - ldr r0, _021E7610 ; =0x9999999A - ldr r1, _021E7614 ; =0x40C19999 - bl _dadd - add r2, r0, #0 - add r3, r1, #0 - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x10] - bl _dmul - bl _dfix - str r0, [sp, #0x1c] - add r0, r6, #0 - add r1, sp, #0x18 - bl FUN_02058BB4 - ldr r0, [r5, #0xc] - add r0, r0, #1 - str r0, [r5, #0xc] - cmp r0, #0x14 - bne _021E75EA - mov r0, #6 - str r0, [sp] - mov r1, #0 - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r0, #2 - add r2, r1, #0 - add r3, r1, #0 - bl FUN_0200E1D0 - add sp, #0x24 - pop {r4, r5, r6, r7, pc} -_021E75EA: - ble _021E7606 - bl FUN_0200E308 - cmp r0, #0 - beq _021E7606 - ldr r0, [r5, #4] - mov r1, #1 - str r1, [r0] - add r0, r5, #0 - bl FreeToHeap - add r0, r7, #0 - bl FUN_0200CAB4 -_021E7606: - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - nop -_021E760C: .word 0x0000064F -_021E7610: .word 0x9999999A -_021E7614: .word 0x40C19999 - - thumb_func_start MOD05_021E7618 -MOD05_021E7618: ; 0x021E7618 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - add r5, r1, #0 - add r6, r0, #0 - ldr r0, [r5] - ldr r0, [r0, #0x38] - bl FUN_020553A0 - ldr r1, [r5, #8] - add r4, r0, #0 - cmp r1, #0 - beq _021E763C - cmp r1, #1 - beq _021E7694 - cmp r1, #2 - beq _021E771C - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} -_021E763C: - bl FUN_02058914 - add r0, r4, #0 - add r1, sp, #0x14 - bl FUN_02058BA4 - ldr r1, [r5, #0xc] - mov r0, #0x14 - sub r6, r0, r1 - add r0, r6, #0 - bl _dflt - str r0, [sp, #0xc] - lsl r0, r6, #0xb - add r7, r1, #0 - bl _dflt - add r2, r0, #0 - add r3, r1, #0 - ldr r0, _021E7744 ; =0x9999999A - ldr r1, _021E7748 ; =0x40C19999 - bl _dadd - add r2, r0, #0 - add r3, r1, #0 - ldr r0, [sp, #0xc] - add r1, r7, #0 - bl _dmul - bl _dfix - str r0, [sp, #0x18] - add r0, r4, #0 - add r1, sp, #0x14 - bl FUN_02058BB4 - add r0, r4, #0 - bl MOD05_021F1D8C - ldr r0, _021E774C ; =0x0000064F - bl FUN_020054C8 - mov r0, #1 - str r0, [r5, #8] -_021E7694: - ldr r0, [r5, #0xc] - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - beq _021E76AA - add r0, r5, #0 - bl MOD05_021E7504 -_021E76AA: - add r0, r4, #0 - add r1, sp, #0x14 - bl FUN_02058BA4 - ldr r1, [r5, #0xc] - mov r0, #0x14 - sub r6, r0, r1 - add r0, r6, #0 - bl _dflt - str r0, [sp, #0x10] - lsl r0, r6, #0xb - add r7, r1, #0 - bl _dflt - add r2, r0, #0 - add r3, r1, #0 - ldr r0, _021E7744 ; =0x9999999A - ldr r1, _021E7748 ; =0x40C19999 - bl _dadd - add r2, r0, #0 - add r3, r1, #0 - ldr r0, [sp, #0x10] - add r1, r7, #0 - bl _dmul - bl _dfix - str r0, [sp, #0x18] - add r0, r4, #0 - add r1, sp, #0x14 - bl FUN_02058BB4 - ldr r0, [r5, #0xc] - add r0, r0, #1 - str r0, [r5, #0xc] - cmp r0, #2 - bne _021E770E - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r1, #4 - str r1, [sp, #8] - add r1, r0, #0 - add r2, r0, #0 - mov r3, #0 - bl FUN_0200E1D0 -_021E770E: - ldr r0, [r5, #0xc] - cmp r0, #0x14 - ble _021E7740 - mov r0, #2 - add sp, #0x20 - str r0, [r5, #8] - pop {r3, r4, r5, r6, r7, pc} -_021E771C: - bl FUN_0200E308 - cmp r0, #0 - beq _021E7740 - ldr r0, [r5] - mov r1, #1 - ldr r0, [r0, #0x38] - bl FUN_02055304 - ldr r0, [r5, #4] - mov r1, #1 - str r1, [r0] - add r0, r5, #0 - bl FreeToHeap - add r0, r6, #0 - bl FUN_0200CAB4 -_021E7740: - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E7744: .word 0x9999999A -_021E7748: .word 0x40C19999 -_021E774C: .word 0x0000064F - - thumb_func_start MOD05_021E7750 -MOD05_021E7750: ; 0x021E7750 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r6, r1, #0 - mov r0, #4 - mov r1, #0x14 - add r7, r2, #0 - bl AllocFromHeapAtEnd - add r4, r0, #0 - mov r1, #0 - mov r2, #0x14 - bl MI_CpuFill8 - str r5, [r4] - str r7, [r4, #4] - ldr r0, [r5, #0x38] - bl FUN_020552F8 - str r0, [r4, #0x10] - cmp r6, #0 - beq _021E7786 - ldr r0, _021E7794 ; =MOD05_021E7544 - add r1, r4, #0 - mov r2, #0x64 - bl FUN_0200CA44 - pop {r3, r4, r5, r6, r7, pc} -_021E7786: - ldr r0, _021E7798 ; =MOD05_021E7618 - add r1, r4, #0 - mov r2, #0x64 - bl FUN_0200CA44 - pop {r3, r4, r5, r6, r7, pc} - nop -_021E7794: .word MOD05_021E7544 -_021E7798: .word MOD05_021E7618 - - thumb_func_start MOD05_021E779C -MOD05_021E779C: ; 0x021E779C - push {r4, lr} - mov r2, #0 - mov r1, #0x14 - add r3, r2, #0 - add r4, r0, #0 - bl MOD05_021E4BE8 - str r4, [r0, #0x10] - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E77B0 -MOD05_021E77B0: ; 0x021E77B0 - push {r4, lr} - add r4, r0, #0 - bl MOD05_021E78B4 - add r0, r4, #0 - bl MOD05_021E4C00 - pop {r4, pc} - - thumb_func_start MOD05_021E77C0 -MOD05_021E77C0: ; 0x021E77C0 - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] - bx lr - - thumb_func_start MOD05_021E77C8 -MOD05_021E77C8: ; 0x021E77C8 - push {r3, lr} - ldr r1, [r0] - sub r1, r1, #1 - str r1, [r0] - bpl _021E77D6 - bl ErrorHandling -_021E77D6: - pop {r3, pc} - - thumb_func_start MOD05_021E77D8 -MOD05_021E77D8: ; 0x021E77D8 - ldr r1, [r0, #4] - add r1, r1, #1 - str r1, [r0, #4] - bx lr - - thumb_func_start MOD05_021E77E0 -MOD05_021E77E0: ; 0x021E77E0 - push {r3, lr} - ldr r1, [r0, #4] - sub r1, r1, #1 - str r1, [r0, #4] - bpl _021E77EE - bl ErrorHandling -_021E77EE: - pop {r3, pc} - - thumb_func_start MOD05_021E77F0 -MOD05_021E77F0: ; 0x021E77F0 - push {r3, lr} - cmp r1, #0 - bne _021E77FC - bl MOD05_021E77C0 - pop {r3, pc} -_021E77FC: - bl MOD05_021E77D8 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7804 -MOD05_021E7804: ; 0x021E7804 - push {r3, lr} - cmp r1, #0 - bne _021E7810 - bl MOD05_021E77C8 - pop {r3, pc} -_021E7810: - bl MOD05_021E77E0 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7818 -MOD05_021E7818: ; 0x021E7818 - push {r3, r4, lr} - sub sp, #0xc - add r4, r0, #0 - ldr r0, [r4, #8] - cmp r0, #0 - bne _021E785C - mov r1, #1 - str r1, [r4, #8] - ldr r0, [r4, #0x10] - mov r2, #0x55 - bl MOD05_021E5078 - ldr r0, [r4, #0x10] - mov r1, #1 - mov r2, #0x75 - bl MOD05_021E50AC - mov r1, #1 - ldr r0, [r4, #0x10] - mov r2, #4 - add r3, r1, #0 - bl MOD05_021E50D4 - mov r1, #1 - str r1, [sp] - mov r0, #0 - str r0, [sp, #4] - ldr r0, _021E7860 ; =UNK05_021F7854 - add r2, r1, #0 - str r0, [sp, #8] - ldr r0, [r4, #0x10] - add r3, r1, #0 - bl MOD05_021E4EFC -_021E785C: - add sp, #0xc - pop {r3, r4, pc} - .balign 4, 0 -_021E7860: .word UNK05_021F7854 - - thumb_func_start MOD05_021E7864 -MOD05_021E7864: ; 0x021E7864 - push {r3, r4, lr} - sub sp, #0xc - add r4, r0, #0 - ldr r0, [r4, #0xc] - cmp r0, #0 - bne _021E78AC - mov r0, #1 - str r0, [r4, #0xc] - ldr r0, [r4, #0x10] - mov r1, #0xa - mov r2, #0x6c - bl MOD05_021E5078 - ldr r0, [r4, #0x10] - mov r1, #0xa - mov r2, #0x75 - bl MOD05_021E50AC - ldr r0, [r4, #0x10] - mov r1, #0xb - mov r2, #0xd - mov r3, #1 - bl MOD05_021E50D4 - mov r0, #0xb - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - ldr r0, _021E78B0 ; =UNK05_021F7854 - mov r2, #0xa - str r0, [sp, #8] - ldr r0, [r4, #0x10] - mov r1, #0xc - add r3, r2, #0 - bl MOD05_021E4EFC -_021E78AC: - add sp, #0xc - pop {r3, r4, pc} - .balign 4, 0 -_021E78B0: .word UNK05_021F7854 - - thumb_func_start MOD05_021E78B4 -MOD05_021E78B4: ; 0x021E78B4 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #8] - cmp r0, #1 - bne _021E78E2 - mov r0, #0 - str r0, [r4, #8] - ldr r0, [r4, #0x10] - mov r1, #1 - bl MOD05_021E50A0 - ldr r0, [r4, #0x10] - mov r1, #1 - bl MOD05_021E50C8 - ldr r0, [r4, #0x10] - mov r1, #1 - bl MOD05_021E5114 - ldr r0, [r4, #0x10] - mov r1, #1 - bl MOD05_021E506C -_021E78E2: - pop {r4, pc} - - thumb_func_start MOD05_021E78E4 -MOD05_021E78E4: ; 0x021E78E4 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0xc] - cmp r0, #1 - bne _021E7912 - mov r0, #0 - str r0, [r4, #0xc] - ldr r0, [r4, #0x10] - mov r1, #0xa - bl MOD05_021E50A0 - ldr r0, [r4, #0x10] - mov r1, #0xa - bl MOD05_021E50C8 - ldr r0, [r4, #0x10] - mov r1, #0xb - bl MOD05_021E5114 - ldr r0, [r4, #0x10] - mov r1, #0xc - bl MOD05_021E506C -_021E7912: - pop {r4, pc} - - thumb_func_start MOD05_021E7914 -MOD05_021E7914: ; 0x021E7914 - push {r3, lr} - ldr r1, [r0] - cmp r1, #0 - bne _021E7920 - bl MOD05_021E7818 -_021E7920: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7924 -MOD05_021E7924: ; 0x021E7924 - push {r3, lr} - ldr r1, [r0, #4] - cmp r1, #0 - bne _021E7930 - bl MOD05_021E7864 -_021E7930: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7934 -MOD05_021E7934: ; 0x021E7934 - push {r3, lr} - ldr r1, [r0] - cmp r1, #0 - bne _021E7940 - bl MOD05_021E78B4 -_021E7940: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7944 -MOD05_021E7944: ; 0x021E7944 - push {r3, lr} - ldr r1, [r0, #4] - cmp r1, #0 - bne _021E7950 - bl MOD05_021E78E4 -_021E7950: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7954 -MOD05_021E7954: ; 0x021E7954 - push {r3, lr} - cmp r1, #0 - bne _021E7960 - bl MOD05_021E7914 - pop {r3, pc} -_021E7960: - bl MOD05_021E7924 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7968 -MOD05_021E7968: ; 0x021E7968 - push {r3, lr} - cmp r1, #0 - bne _021E7974 - bl MOD05_021E7934 - pop {r3, pc} -_021E7974: - bl MOD05_021E7944 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E797C -MOD05_021E797C: ; 0x021E797C - push {r3, r4, r5, lr} - sub sp, #8 - ldr r3, _021E7998 ; =UNK05_021F7824 - add r4, sp, #0 - ldr r5, [r3] - ldr r3, [r3, #4] - str r5, [sp] - str r3, [sp, #4] - lsl r1, r1, #2 - ldr r1, [r4, r1] - bl MOD05_021E4EE4 - add sp, #8 - pop {r3, r4, r5, pc} - .balign 4, 0 -_021E7998: .word UNK05_021F7824 - - thumb_func_start MOD05_021E799C -MOD05_021E799C: ; 0x021E799C - push {r3, lr} - bl FUN_02064738 - ldr r0, [r0, #0x14] - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E79A8 -MOD05_021E79A8: ; 0x021E79A8 - push {r4, r5, lr} - sub sp, #0xc - add r4, r1, #0 - add r5, r0, #0 - bl FUN_0206475C - add r2, r4, #0 - add r3, r0, #0 - add r2, #0x30 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - mov r0, #6 - lsl r0, r0, #0xc - str r0, [r4, #0x28] - ldr r0, [r4, #0x38] - ldr r1, [r4, #0x30] - bl MOD05_021E7954 - add r0, r5, #0 - add r1, sp, #0 - bl FUN_0206477C - ldr r0, [r4, #0x34] - ldr r1, [r4, #0x30] - add r2, sp, #0 - bl MOD05_021E797C - str r0, [r4, #0x40] - ldr r0, [r4, #0x38] - ldr r1, [r4, #0x30] - bl MOD05_021E77F0 - add r0, r5, #0 - bl FUN_02064754 - cmp r0, #1 - bne _021E79FC - ldr r0, _021E7A04 ; =0x000005DD - bl FUN_020054C8 -_021E79FC: - mov r0, #1 - add sp, #0xc - pop {r4, r5, pc} - nop -_021E7A04: .word 0x000005DD - - thumb_func_start MOD05_021E7A08 -MOD05_021E7A08: ; 0x021E7A08 - push {r4, r5, lr} - sub sp, #0xc - add r4, r1, #0 - add r1, sp, #0 - add r5, r0, #0 - bl FUN_0206477C - ldr r0, [r4] - cmp r0, #0 - beq _021E7A24 - cmp r0, #1 - beq _021E7A46 - cmp r0, #2 - b _021E7A5E -_021E7A24: - ldr r1, [r4, #0x1c] - ldr r0, [r4, #0x28] - add r0, r1, r0 - str r0, [r4, #0x1c] - beq _021E7A3A - mov r0, #2 - ldr r1, [r4, #0x28] - lsl r0, r0, #0xc - sub r0, r1, r0 - str r0, [r4, #0x28] - b _021E7A5E -_021E7A3A: - mov r0, #0 - str r0, [r4, #0x28] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021E7A5E -_021E7A46: - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - cmp r0, #0x1e - blt _021E7A5E - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - str r0, [r4, #4] - mov r0, #1 - str r0, [r4, #0x14] -_021E7A5E: - add r0, r5, #0 - add r1, sp, #0 - bl FUN_0206476C - add sp, #0xc - pop {r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7A6C -MOD05_021E7A6C: ; 0x021E7A6C - push {r4, lr} - add r4, r1, #0 - ldr r0, [r4, #0x40] - bl FUN_0201F744 - ldr r0, [r4, #0x38] - ldr r1, [r4, #0x30] - bl MOD05_021E7804 - ldr r0, [r4, #0x38] - ldr r1, [r4, #0x30] - bl MOD05_021E7968 - pop {r4, pc} - - thumb_func_start MOD05_021E7A88 -MOD05_021E7A88: ; 0x021E7A88 - push {r3, r4, lr} - sub sp, #0xc - add r4, r1, #0 - ldr r1, [r4, #0x10] - cmp r1, #1 - beq _021E7ABA - add r1, sp, #0 - bl FUN_0206477C - ldr r1, [sp] - ldr r0, [r4, #0x18] - add r0, r1, r0 - str r0, [sp] - ldr r1, [sp, #4] - ldr r0, [r4, #0x1c] - add r0, r1, r0 - str r0, [sp, #4] - ldr r1, [sp, #8] - ldr r0, [r4, #0x20] - add r0, r1, r0 - str r0, [sp, #8] - ldr r0, [r4, #0x40] - add r1, sp, #0 - bl FUN_0201F7C8 -_021E7ABA: - add sp, #0xc - pop {r3, r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7AC0 -MOD05_021E7AC0: ; 0x021E7AC0 - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r5, r0, #0 - add r6, r1, #0 - add r7, r2, #0 - bl MOD05_021E4C24 - add r4, r0, #0 - mov r1, #0x16 - str r6, [sp, #0x14] - str r4, [sp, #0x18] - bl MOD05_021E4C08 - str r0, [sp, #0x1c] - add r0, r5, #0 - add r1, sp, #8 - str r5, [sp, #0x20] - bl FUN_02058B5C - add r0, r5, #0 - bl FUN_02058744 - add r1, r0, #1 - add r0, sp, #0x14 - str r0, [sp] - str r1, [sp, #4] - ldr r1, _021E7B04 ; =UNK05_021F7840 - add r0, r4, #0 - add r2, sp, #8 - add r3, r7, #0 - bl MOD05_021E4DC4 - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021E7B04: .word UNK05_021F7840 - - thumb_func_start MOD05_021E7B08 -MOD05_021E7B08: ; 0x021E7B08 - push {r4, r5, lr} - sub sp, #0xc - add r4, r1, #0 - add r5, r0, #0 - bl FUN_0206475C - add r2, r4, #0 - add r3, r0, #0 - add r2, #0x30 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r4, #0x3c] - bl FUN_02058448 - str r0, [r4, #8] - ldr r0, [r4, #0x3c] - bl FUN_02058450 - str r0, [r4, #0xc] - mov r0, #6 - lsl r0, r0, #0xc - str r0, [r4, #0x28] - ldr r0, [r4, #0x38] - ldr r1, [r4, #0x30] - bl MOD05_021E7954 - add r0, r5, #0 - add r1, sp, #0 - bl FUN_0206477C - ldr r0, [r4, #0x34] - ldr r1, [r4, #0x30] - add r2, sp, #0 - bl MOD05_021E797C - str r0, [r4, #0x40] - ldr r0, [r4, #0x38] - ldr r1, [r4, #0x30] - bl MOD05_021E77F0 - add r0, r5, #0 - bl FUN_02064754 - cmp r0, #1 - bne _021E7B6C - ldr r0, _021E7B74 ; =0x000005DD - bl FUN_020054C8 -_021E7B6C: - mov r0, #1 - add sp, #0xc - pop {r4, r5, pc} - nop -_021E7B74: .word 0x000005DD - - thumb_func_start MOD05_021E7B78 -MOD05_021E7B78: ; 0x021E7B78 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r4, r1, #0 - ldr r6, [r4, #0x3c] - ldr r1, [r4, #8] - add r5, r0, #0 - ldr r2, [r4, #0xc] - add r0, r6, #0 - bl FUN_020582A8 - cmp r0, #0 - bne _021E7B94 - bl ErrorHandling -_021E7B94: - add r0, r6, #0 - add r1, sp, #0 - bl MOD05_021F1E64 - mov r0, #2 - ldr r1, [sp, #4] - lsl r0, r0, #0x10 - add r1, r1, r0 - str r1, [sp, #4] - ldr r2, [sp, #8] - lsr r1, r0, #5 - add r1, r2, r1 - str r1, [sp, #8] - ldr r1, [r4] - cmp r1, #0 - beq _021E7BBC - cmp r1, #1 - beq _021E7BDC - cmp r1, #2 - b _021E7BF4 -_021E7BBC: - ldr r2, [r4, #0x1c] - ldr r1, [r4, #0x28] - add r1, r2, r1 - str r1, [r4, #0x1c] - beq _021E7BD0 - ldr r1, [r4, #0x28] - lsr r0, r0, #4 - sub r0, r1, r0 - str r0, [r4, #0x28] - b _021E7BF4 -_021E7BD0: - mov r0, #0 - str r0, [r4, #0x28] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021E7BF4 -_021E7BDC: - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - cmp r0, #0x1e - blt _021E7BF4 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - str r0, [r4, #4] - mov r0, #1 - str r0, [r4, #0x14] -_021E7BF4: - add r0, r5, #0 - add r1, sp, #0 - bl FUN_0206476C - add sp, #0xc - pop {r3, r4, r5, r6, pc} - - thumb_func_start MOD05_021E7C00 -MOD05_021E7C00: ; 0x021E7C00 - push {r4, lr} - mov r1, #0x46 - lsl r1, r1, #6 - bl AllocFromHeap - add r4, r0, #0 - bl MOD05_021E7C1C - add r0, r4, #0 - pop {r4, pc} - - thumb_func_start MOD05_021E7C14 -MOD05_021E7C14: ; 0x021E7C14 - ldr r3, _021E7C18 ; =FreeToHeap - bx r3 - .balign 4, 0 -_021E7C18: .word FreeToHeap - - thumb_func_start MOD05_021E7C1C -MOD05_021E7C1C: ; 0x021E7C1C - push {r3, r4, r5, r6, r7} - sub sp, #0xc - mov r4, #0 - mov ip, r0 - add r7, sp, #0 - add r3, r4, #0 -_021E7C28: - str r3, [r7] - str r3, [r7, #4] - mov r0, #0x8c - add r1, r4, #0 - mul r1, r0 - mov r0, ip - add r2, r0, r1 - add r5, r2, #0 - str r3, [r7, #8] - mov r0, ip - str r3, [r0, r1] - str r3, [r2, #4] - str r3, [r2, #8] - str r3, [r2, #0xc] - add r6, r7, #0 - ldmia r6!, {r0, r1} - add r5, #0x68 - stmia r5!, {r0, r1} - ldr r0, [r6] - add r6, r7, #0 - str r0, [r5] - add r5, r2, #0 - ldmia r6!, {r0, r1} - add r5, #0x74 - stmia r5!, {r0, r1} - ldr r0, [r6] - add r6, r7, #0 - str r0, [r5] - add r5, r2, #0 - ldmia r6!, {r0, r1} - add r5, #0x80 - stmia r5!, {r0, r1} - ldr r0, [r6] - str r0, [r5] - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - str r3, [r2, #0x64] - cmp r4, #0x20 - blo _021E7C28 - add sp, #0xc - pop {r3, r4, r5, r6, r7} - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021E7C80 -MOD05_021E7C80: ; 0x021E7C80 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r0, #0 - add r4, r1, #0 - cmp r5, #0x20 - blt _021E7C90 - bl ErrorHandling -_021E7C90: - add r6, sp, #0 - mov r3, #0 - str r3, [r6] - str r3, [r6, #4] - mov r0, #0x8c - mul r0, r5 - str r3, [r6, #8] - str r3, [r4, r0] - add r2, r4, r0 - str r3, [r2, #4] - str r3, [r2, #8] - add r4, r2, #0 - str r3, [r2, #0xc] - add r5, r6, #0 - ldmia r5!, {r0, r1} - add r4, #0x68 - stmia r4!, {r0, r1} - ldr r0, [r5] - add r5, r6, #0 - str r0, [r4] - add r4, r2, #0 - ldmia r5!, {r0, r1} - add r4, #0x74 - stmia r4!, {r0, r1} - ldr r0, [r5] - str r0, [r4] - add r4, r2, #0 - ldmia r6!, {r0, r1} - add r4, #0x80 - stmia r4!, {r0, r1} - ldr r0, [r6] - str r0, [r4] - str r3, [r2, #0x64] - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7CD8 -MOD05_021E7CD8: ; 0x021E7CD8 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r6, r0, #0 - ldr r0, [sp, #0x28] - add r4, r1, #0 - str r0, [sp, #0x28] - mov r0, #0 - add r7, r2, #0 - add r5, r3, #0 - str r0, [sp, #4] - cmp r4, #0 - beq _021E7D0E - mov r0, #4 - bl AllocFromHeapAtEnd - str r0, [sp, #4] - ldr r2, [sp, #4] - add r0, r6, #0 - add r1, r4, #0 - bl NARC_ReadFile - add r0, r4, #0 - mov r1, #0x30 - bl _u32_div_f - str r0, [sp] - b _021E7D10 -_021E7D0E: - str r0, [sp] -_021E7D10: - ldr r4, [sp, #4] - mov r6, #0 -_021E7D14: - ldr r0, [sp] - cmp r6, r0 - bhs _021E7D82 - ldr r0, [r4] - add r2, r5, #0 - str r0, [r5] - mov r0, #1 - str r0, [r5, #4] - mov r0, #0 - add r3, r4, #4 - str r0, [r5, #0xc] - ldmia r3!, {r0, r1} - add r2, #0x68 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r3, r4, #0 - str r0, [r2] - add r3, #0x10 - add r2, r5, #0 - ldmia r3!, {r0, r1} - add r2, #0x74 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r3, r4, #0 - str r0, [r2] - add r3, #0x1c - add r2, r5, #0 - ldmia r3!, {r0, r1} - add r2, #0x80 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r3, r5, #0 - str r0, [r2] - add r2, r5, #0 - ldr r0, [r5] - add r1, r7, #0 - add r2, #0x10 - add r3, #0x64 - bl MOD05_021E7F10 - ldr r1, [r5] - add r0, r7, #0 - bl MOD05_021F4CE4 - cmp r0, #0 - bne _021E7D74 - mov r0, #0 - str r0, [r5] -_021E7D74: - add r1, r5, #0 - ldr r0, [r5] - ldr r2, [sp, #0x28] - add r1, #0x10 - bl MOD05_021D9E80 - b _021E7DBE -_021E7D82: - mov r1, #0 - add r0, sp, #8 - str r1, [r0] - str r1, [r0, #4] - str r1, [r0, #8] - add r0, r1, #0 - str r0, [r5] - str r0, [r5, #4] - add r2, r5, #0 - add r3, sp, #8 - str r0, [r5, #0xc] - ldmia r3!, {r0, r1} - add r2, #0x68 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r3, sp, #8 - str r0, [r2] - add r2, r5, #0 - ldmia r3!, {r0, r1} - add r2, #0x74 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r3, sp, #8 - str r0, [r2] - add r2, r5, #0 - ldmia r3!, {r0, r1} - add r2, #0x80 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] -_021E7DBE: - add r6, r6, #1 - add r5, #0x8c - add r4, #0x30 - cmp r6, #0x20 - blt _021E7D14 - ldr r0, [sp, #4] - cmp r0, #0 - beq _021E7DD2 - bl FreeToHeap -_021E7DD2: - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7DD8 -MOD05_021E7DD8: ; 0x021E7DD8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x48 - ldr r4, _021E7E94 ; =UNK05_021F7878 - str r2, [sp, #0xc] - str r3, [sp, #0x10] - add r6, r0, #0 - str r1, [sp, #8] - add r3, sp, #0x18 - mov r2, #4 -_021E7DEA: - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021E7DEA - ldr r0, [r4] - ldr r5, [sp, #0x60] - str r0, [r3] - mov r7, #0 -_021E7DFA: - ldr r0, [r5, #4] - cmp r0, #0 - beq _021E7E86 - ldr r0, [r5, #8] - cmp r0, #0 - bne _021E7E86 - add r4, r5, #0 - add r4, #0x68 - ldmia r4!, {r0, r1} - add r3, sp, #0x3c - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r4] - str r0, [r3] - ldr r1, [sp, #0x3c] - ldr r0, [r6] - add r3, r5, #0 - add r0, r1, r0 - str r0, [sp, #0x3c] - ldr r1, [sp, #0x44] - ldr r0, [r6, #8] - add r3, #0x80 - add r0, r1, r0 - str r0, [sp, #0x44] - add r1, r2, #0 - ldr r0, [r5, #0x64] - add r2, sp, #0x18 - bl FUN_0201B6D0 - cmp r0, #0 - beq _021E7E86 - ldr r0, [sp, #8] - bl MOD05_021F4C9C - add r4, r0, #0 - ldr r0, [sp, #0xc] - cmp r0, #1 - bne _021E7E50 - ldr r0, [sp, #0x10] - ldr r1, [r5, #0x64] - ldr r2, _021E7E98 ; =0x00000F33 - bl MOD05_021DBB8C -_021E7E50: - ldr r0, [r5] - add r1, r4, #0 - add r2, sp, #0x14 - bl MOD05_021DB9D4 - add r0, sp, #0x14 - ldrh r0, [r0] - add r1, sp, #0x3c - cmp r0, #0 - bne _021E7E74 - add r0, r5, #0 - add r3, r5, #0 - add r0, #0x10 - add r2, sp, #0x18 - add r3, #0x80 - bl FUN_0201B26C - b _021E7E86 -_021E7E74: - str r4, [sp] - ldr r0, [r5] - add r3, r5, #0 - str r0, [sp, #4] - ldr r0, [r5, #0x64] - add r2, sp, #0x18 - add r3, #0x80 - bl MOD05_021E7F34 -_021E7E86: - add r7, r7, #1 - add r5, #0x8c - cmp r7, #0x20 - blt _021E7DFA - add sp, #0x48 - pop {r3, r4, r5, r6, r7, pc} - nop -_021E7E94: .word UNK05_021F7878 -_021E7E98: .word 0x00000F33 - - thumb_func_start MOD05_021E7E9C -MOD05_021E7E9C: ; 0x021E7E9C - add r0, #0x74 - bx lr - - thumb_func_start MOD05_021E7EA0 -MOD05_021E7EA0: ; 0x021E7EA0 - add r2, r1, #0 - add r2, #0x68 - add r3, r0, #0 - ldmia r2!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r2] - str r0, [r3] - bx lr - - thumb_func_start MOD05_021E7EB0 -MOD05_021E7EB0: ; 0x021E7EB0 - add r3, r1, #0 - add r2, r0, #0 - ldmia r3!, {r0, r1} - add r2, #0x68 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - bx lr - - thumb_func_start MOD05_021E7EC0 -MOD05_021E7EC0: ; 0x021E7EC0 - str r1, [r0, #8] - bx lr - - thumb_func_start MOD05_021E7EC4 -MOD05_021E7EC4: ; 0x021E7EC4 - ldr r0, [r0] - bx lr - - thumb_func_start MOD05_021E7EC8 -MOD05_021E7EC8: ; 0x021E7EC8 - add r0, #0x10 - bx lr - - thumb_func_start MOD05_021E7ECC -MOD05_021E7ECC: ; 0x021E7ECC - ldr r0, [r0, #0x64] - bx lr - - thumb_func_start MOD05_021E7ED0 -MOD05_021E7ED0: ; 0x021E7ED0 - mov r2, #0x8c - mul r2, r1 - add r0, r0, r2 - bx lr - - thumb_func_start MOD05_021E7ED8 -MOD05_021E7ED8: ; 0x021E7ED8 - mov r3, #0 -_021E7EDA: - ldr r2, [r0] - cmp r2, r1 - beq _021E7EEA - add r3, r3, #1 - add r0, #0x8c - cmp r3, #0x20 - blt _021E7EDA - mov r0, #0 -_021E7EEA: - bx lr - - thumb_func_start MOD05_021E7EEC -MOD05_021E7EEC: ; 0x021E7EEC - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - cmp r4, #0x20 - blt _021E7EFA - bl ErrorHandling -_021E7EFA: - mov r0, #0x8c - mul r0, r4 - add r4, r5, r0 - ldr r0, [r4, #4] - cmp r0, #0 - bne _021E7F0A - bl ErrorHandling -_021E7F0A: - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7F10 -MOD05_021E7F10: ; 0x021E7F10 - push {r3, r4, r5, lr} - add r5, r2, #0 - add r4, r3, #0 - bl MOD05_021F4BD0 - ldr r0, [r0] - bl FUN_020BC13C - ldrh r1, [r0, #0xe] - add r1, r0, r1 - ldr r1, [r1, #0xc] - add r1, r0, r1 - add r0, r5, #0 - str r1, [r4] - bl FUN_020B80B4 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7F34 -MOD05_021E7F34: ; 0x021E7F34 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r0, r1, #0 - add r4, r2, #0 - add r5, r3, #0 - bl FUN_020B8474 - ldr r1, _021E7FB4 ; =UNK_021CEDD4 - add r0, r4, #0 - bl MI_Copy36B - ldr r1, _021E7FB8 ; =UNK_021CED98 - mov r0, #0xa4 - ldr r2, [r1, #0x7c] - bic r2, r0 - add r0, r5, #0 - str r2, [r1, #0x7c] - bl FUN_020B844C - bl FUN_020B849C - add r2, sp, #0 - ldr r0, [sp, #0x1c] - ldr r1, [sp, #0x18] - add r2, #2 - add r3, sp, #0 - bl MOD05_021DB9E0 - add r0, sp, #0 - ldrh r0, [r0] - ldr r1, [sp, #0x18] - bl MOD05_021DB9F8 - add r6, r0, #0 - add r0, sp, #0 - ldrh r0, [r0, #2] - mov r5, #0xff - mov r4, #0 - cmp r0, #0 - ble _021E7FB0 -_021E7F84: - lsl r0, r4, #2 - add r2, r6, r0 - ldrh r0, [r6, r0] - cmp r5, r0 - beq _021E7F96 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - mov r3, #1 - b _021E7F98 -_021E7F96: - mov r3, #0 -_021E7F98: - ldrh r2, [r2, #2] - add r0, r7, #0 - add r1, r5, #0 - bl FUN_020BAFB8 - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - add r0, sp, #0 - ldrh r0, [r0, #2] - cmp r4, r0 - blt _021E7F84 -_021E7FB0: - pop {r3, r4, r5, r6, r7, pc} - nop -_021E7FB4: .word UNK_021CEDD4 -_021E7FB8: .word UNK_021CED98 - - thumb_func_start MOD05_021E7FBC -MOD05_021E7FBC: ; 0x021E7FBC - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - ldr r5, _021E8058 ; =UNK05_021F786C - add r6, r0, #0 - add r7, r1, #0 - ldmia r5!, {r0, r1} - add r4, sp, #4 - stmia r4!, {r0, r1} - ldr r0, [r5] - str r0, [r4] - mov r4, #0 - mov r0, #0x8c -_021E7FD4: - add r1, r4, #0 - mul r1, r0 - add r5, r6, r1 - ldr r1, [r5, #4] - cmp r1, #0 - bne _021E8044 - mov r0, #1 - str r0, [r5, #4] - add r6, r5, #0 - ldmia r3!, {r0, r1} - add r6, #0x68 - stmia r6!, {r0, r1} - ldr r0, [r3] - str r0, [r6] - ldr r6, [sp, #0x28] - cmp r6, #0 - beq _021E8008 - mov r0, #1 - str r0, [r5, #0xc] - add r3, r5, #0 - ldmia r6!, {r0, r1} - add r3, #0x74 - stmia r3!, {r0, r1} - ldr r0, [r6] - str r0, [r3] - b _021E800C -_021E8008: - mov r0, #0 - str r0, [r5, #0xc] -_021E800C: - add r6, sp, #4 - add r3, r5, #0 - ldmia r6!, {r0, r1} - add r3, #0x80 - stmia r3!, {r0, r1} - ldr r0, [r6] - add r1, r7, #0 - str r0, [r3] - add r3, r5, #0 - str r2, [r5] - add r0, r2, #0 - add r2, r5, #0 - add r2, #0x10 - add r3, #0x64 - bl MOD05_021E7F10 - ldr r0, [sp, #0x2c] - mov r1, #0 - str r0, [sp] - ldr r0, [r5] - add r5, #0x10 - add r2, r1, #0 - add r3, r5, #0 - bl MOD05_021D9DC0 - add sp, #0x10 - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} -_021E8044: - add r1, r4, #1 - lsl r1, r1, #0x18 - lsr r4, r1, #0x18 - cmp r4, #0x20 - blo _021E7FD4 - bl ErrorHandling - mov r0, #0x20 - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E8058: .word UNK05_021F786C - - thumb_func_start MOD05_021E805C -MOD05_021E805C: ; 0x021E805C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x38 - ldr r4, _021E80F4 ; =UNK05_021F789C - str r0, [sp, #8] - str r1, [sp, #0xc] - add r3, sp, #0x14 - mov r2, #4 -_021E806A: - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021E806A - ldr r0, [r4] - mov r4, #0 - str r0, [r3] - add r7, sp, #0x14 -_021E807A: - mov r0, #0x8c - add r1, r4, #0 - mul r1, r0 - ldr r0, [sp, #8] - add r5, r0, r1 - ldr r0, [r5, #4] - cmp r0, #0 - beq _021E80E4 - ldr r0, [r5, #8] - cmp r0, #0 - bne _021E80E4 - ldr r0, [sp, #0xc] - bl MOD05_021F4C9C - add r6, r0, #0 - ldr r0, [r5] - add r1, r6, #0 - add r2, sp, #0x10 - bl MOD05_021DB9D4 - ldr r0, [r5, #0xc] - cmp r0, #0 - beq _021E80B2 - add r1, r5, #0 - add r0, r7, #0 - add r1, #0x74 - bl FUN_0201CAA8 -_021E80B2: - add r0, sp, #0x10 - ldrh r0, [r0] - cmp r0, #0 - bne _021E80CE - add r0, r5, #0 - add r1, r5, #0 - add r5, #0x80 - add r0, #0x10 - add r1, #0x68 - add r2, r7, #0 - add r3, r5, #0 - bl FUN_0201B26C - b _021E80E4 -_021E80CE: - str r6, [sp] - ldr r0, [r5] - add r1, r5, #0 - str r0, [sp, #4] - ldr r0, [r5, #0x64] - add r5, #0x80 - add r1, #0x68 - add r2, r7, #0 - add r3, r5, #0 - bl MOD05_021E7F34 -_021E80E4: - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0x20 - blo _021E807A - add sp, #0x38 - pop {r3, r4, r5, r6, r7, pc} - nop -_021E80F4: .word UNK05_021F789C - - thumb_func_start MOD05_021E80F8 -MOD05_021E80F8: ; 0x021E80F8 - push {r3, lr} - mov r1, #0x14 - bl AllocFromHeap - add r3, r0, #0 - mov r2, #0x14 - mov r1, #0 -_021E8106: - strb r1, [r3] - add r3, r3, #1 - sub r2, r2, #1 - bne _021E8106 - pop {r3, pc} - - thumb_func_start MOD05_021E8110 -MOD05_021E8110: ; 0x021E8110 - push {r4, lr} - add r4, r0, #0 - ldrb r1, [r4, #0x13] - lsl r1, r1, #0x18 - lsr r1, r1, #0x1f - beq _021E8120 - bl FUN_02019178 -_021E8120: - add r0, r4, #0 - bl FreeToHeap - pop {r4, pc} - - thumb_func_start MOD05_021E8128 -MOD05_021E8128: ; 0x021E8128 - strb r1, [r0, #0x12] - strh r2, [r0, #0x10] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021E8130 -MOD05_021E8130: ; 0x021E8130 - ldrb r3, [r0, #0x13] - mov r2, #0x7f - bic r3, r2 - mov r2, #0x7f - and r1, r2 - orr r1, r3 - strb r1, [r0, #0x13] - bx lr - - thumb_func_start MOD05_021E8140 -MOD05_021E8140: ; 0x021E8140 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021E8144 -MOD05_021E8144: ; 0x021E8144 - ldrb r0, [r0, #0x12] - bx lr - - thumb_func_start MOD05_021E8148 -MOD05_021E8148: ; 0x021E8148 - ldrb r0, [r0, #0x13] - lsl r0, r0, #0x19 - lsr r0, r0, #0x19 - bne _021E8154 - mov r0, #1 - bx lr -_021E8154: - mov r0, #0 - bx lr - - thumb_func_start MOD05_021E8158 -MOD05_021E8158: ; 0x021E8158 - push {r4, lr} - ldr r4, [r0, #0x60] - ldrb r1, [r4, #0x13] - lsl r1, r1, #0x19 - lsr r1, r1, #0x19 - cmp r1, #4 - bhi _021E81BA - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021E8172: ; jump table - .short _021E81BA - _021E8172 - 2 ; case 0 - .short _021E817C - _021E8172 - 2 ; case 1 - .short _021E818A - _021E8172 - 2 ; case 2 - .short _021E819C - _021E8172 - 2 ; case 3 - .short _021E81AE - _021E8172 - 2 ; case 4 -_021E817C: - bl MOD05_021E81D0 - ldrb r1, [r4, #0x13] - mov r0, #0x7f - bic r1, r0 - strb r1, [r4, #0x13] - pop {r4, pc} -_021E818A: - bl MOD05_021E82A0 - cmp r0, #1 - bne _021E81BA - ldrb r1, [r4, #0x13] - mov r0, #0x7f - bic r1, r0 - strb r1, [r4, #0x13] - pop {r4, pc} -_021E819C: - bl MOD05_021E8260 - cmp r0, #1 - bne _021E81BA - ldrb r1, [r4, #0x13] - mov r0, #0x7f - bic r1, r0 - strb r1, [r4, #0x13] - pop {r4, pc} -_021E81AE: - bl MOD05_021E820C - ldrb r1, [r4, #0x13] - mov r0, #0x7f - bic r1, r0 - strb r1, [r4, #0x13] -_021E81BA: - pop {r4, pc} - - thumb_func_start MOD05_021E81BC -MOD05_021E81BC: ; 0x021E81BC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x60] - bl MOD05_021E8130 - add r0, r4, #0 - bl MOD05_021E8158 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E81D0 -MOD05_021E81D0: ; 0x021E81D0 - push {r4, lr} - mov r1, #3 - add r4, r0, #0 - add r3, r1, #0 - ldr r0, [r4, #8] - add r2, r1, #0 - sub r3, #0x33 - bl FUN_020179E0 - ldr r1, [r4, #0x60] - ldrb r0, [r1, #0x13] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1f - bne _021E8200 - ldrb r2, [r1, #0x12] - ldr r0, [r4, #8] - mov r3, #3 - bl FUN_020546E0 - ldr r2, [r4, #0x60] - mov r0, #0x80 - ldrb r1, [r2, #0x13] - orr r0, r1 - strb r0, [r2, #0x13] -_021E8200: - ldr r0, [r4, #0x60] - ldrb r1, [r0, #0x12] - ldrh r2, [r0, #0x10] - bl FUN_02054744 - pop {r4, pc} - - thumb_func_start MOD05_021E820C -MOD05_021E820C: ; 0x021E820C - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0 - ldr r0, [r4, #0x60] - ldrb r1, [r0, #0x13] - lsl r1, r1, #0x18 - lsr r1, r1, #0x1f - beq _021E825A - bl FUN_02019178 - mov r0, #0x12 - str r0, [sp] - mov r0, #0x20 - str r0, [sp, #4] - mov r0, #6 - str r0, [sp, #8] - mov r0, #0x10 - str r0, [sp, #0xc] - mov r2, #0 - ldr r0, [r4, #8] - mov r1, #3 - add r3, r2, #0 - bl FUN_02018540 - ldr r0, [r4, #8] - mov r1, #3 - bl FUN_02017CD0 - mov r1, #3 - ldr r0, [r4, #8] - add r2, r1, #0 - mov r3, #0 - bl FUN_020179E0 - ldr r2, [r4, #0x60] - mov r0, #0x80 - ldrb r1, [r2, #0x13] - bic r1, r0 - strb r1, [r2, #0x13] -_021E825A: - add sp, #0x10 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E8260 -MOD05_021E8260: ; 0x021E8260 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #8] - mov r1, #3 - bl FUN_02017B54 - cmp r0, #0 - bne _021E8274 - mov r0, #1 - pop {r4, pc} -_021E8274: - mov r1, #0x2f - mvn r1, r1 - cmp r0, r1 - ble _021E8280 - cmp r0, #0 - blt _021E828E -_021E8280: - mov r1, #3 - add r3, r1, #0 - ldr r0, [r4, #8] - add r2, r1, #0 - sub r3, #0x33 - bl FUN_020179E0 -_021E828E: - ldr r0, [r4, #8] - mov r1, #3 - mov r2, #4 - mov r3, #0x10 - bl FUN_020179E0 - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E82A0 -MOD05_021E82A0: ; 0x021E82A0 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0 - ldr r0, [r4, #8] - mov r1, #3 - bl FUN_02017B54 - mov r1, #0x2f - mvn r1, r1 - cmp r0, r1 - bne _021E82EC - mov r0, #0x12 - str r0, [sp] - mov r0, #0x20 - str r0, [sp, #4] - mov r0, #6 - str r0, [sp, #8] - mov r0, #0x10 - str r0, [sp, #0xc] - mov r2, #0 - ldr r0, [r4, #8] - mov r1, #3 - add r3, r2, #0 - bl FUN_02018540 - ldr r0, [r4, #8] - mov r1, #3 - bl FUN_02017CD0 - mov r1, #3 - ldr r0, [r4, #8] - add r2, r1, #0 - mov r3, #0 - bl FUN_020179E0 - add sp, #0x10 - mov r0, #1 - pop {r4, pc} -_021E82EC: - ble _021E82F2 - cmp r0, #0 - blt _021E82FE -_021E82F2: - mov r1, #3 - ldr r0, [r4, #8] - add r2, r1, #0 - mov r3, #0 - bl FUN_020179E0 -_021E82FE: - ldr r0, [r4, #8] - mov r1, #3 - mov r2, #5 - mov r3, #0x10 - bl FUN_020179E0 - mov r0, #0 - add sp, #0x10 - pop {r4, pc} - - thumb_func_start MOD05_021E8310 -MOD05_021E8310: ; 0x021E8310 - push {r3, r4, r5, r6, r7, lr} - ldr r4, [r1, #0xc] - add r5, r0, #0 - add r0, r4, #0 - bl FUN_02034E30 - bl FUN_02034DC0 - add r6, r0, #0 - add r0, r4, #0 - bl Sav2_Pokedex_get - add r7, r0, #0 - ldr r0, [r6] - bl FUN_02034824 - str r0, [r5, #4] - add r0, r7, #0 - bl Pokedex_GetSinnohDexFlag - cmp r0, #0 - beq _021E8344 - add r0, r7, #0 - bl Pokedex_CountSeenMons - b _021E8346 -_021E8344: - mov r0, #0 -_021E8346: - str r0, [r5] - add r0, r4, #0 - bl Sav2_PlayerData_GetProfileAddr - str r0, [r5, #8] - add r0, r4, #0 - bl Sav2_PlayerData_GetIGTAddr - str r0, [r5, #0xc] - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E835C -MOD05_021E835C: ; 0x021E835C - push {r3, r4, r5, lr} - sub sp, #8 - add r4, r1, #0 - ldr r2, [r4, #4] - mov r1, #0 - add r5, r0, #0 - bl BufferLandmarkName - ldr r2, [r4, #8] - add r0, r5, #0 - mov r1, #1 - bl BufferPlayersName - ldr r0, [r4, #8] - bl PlayerProfile_CountBadges - add r2, r0, #0 - mov r0, #0 - str r0, [sp] - mov r3, #1 - str r3, [sp, #4] - add r0, r5, #0 - mov r1, #2 - bl BufferIntegerAsString - ldr r2, [r4] - cmp r2, #0x64 - blt _021E839A - mov r3, #3 - mov r0, #0 - b _021E83A8 -_021E839A: - cmp r2, #0xa - blt _021E83A4 - mov r3, #3 - mov r0, #1 - b _021E83A8 -_021E83A4: - mov r3, #2 - mov r0, #1 -_021E83A8: - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - add r0, r5, #0 - mov r1, #3 - bl BufferIntegerAsString - ldr r0, [r4, #0xc] - bl GetIGTHours - add r2, r0, #0 - cmp r2, #0x64 - blt _021E83C8 - mov r3, #3 - mov r0, #0 - b _021E83D6 -_021E83C8: - cmp r2, #0xa - blt _021E83D2 - mov r3, #3 - mov r0, #1 - b _021E83D6 -_021E83D2: - mov r3, #2 - mov r0, #1 -_021E83D6: - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - add r0, r5, #0 - mov r1, #4 - bl BufferIntegerAsString - ldr r0, [r4, #0xc] - bl GetIGTMinutes - mov r3, #2 - add r2, r0, #0 - str r3, [sp] - mov r0, #1 - str r0, [sp, #4] - add r0, r5, #0 - mov r1, #5 - bl BufferIntegerAsString - add sp, #8 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021E8400 -MOD05_021E8400: ; 0x021E8400 - ldr r0, [r0] - cmp r0, #0 - beq _021E840A - mov r0, #0xa - bx lr -_021E840A: - mov r0, #8 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021E8410 -MOD05_021E8410: ; 0x021E8410 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r5, r0, #0 - mov r0, #0 - mov r1, #1 - bl FUN_02002E4C - add r4, r0, #0 - mov r0, #0 - mov r1, #3 - bl FUN_02002E4C - add r0, r4, r0 - str r0, [sp, #0x14] - mov r4, #0 - ldr r0, [r5, #0x14] - ldr r1, [r5, #0x18] - ldr r3, [r5, #4] - add r2, r4, #0 - bl ReadMsgData_ExpandPlaceholders - add r1, r4, #0 - add r6, r0, #0 - str r1, [sp] - mov r0, #0xff - str r0, [sp, #4] - str r1, [sp, #8] - ldr r0, [r5, #0x10] - add r2, r6, #0 - add r3, r1, #0 - bl AddTextPrinterParameterized - add r0, r6, #0 - bl String_dtor - mov r0, #1 - str r0, [sp, #0x10] - ldr r0, _021E84EC ; =UNK05_021F78D4 - ldr r7, _021E84F0 ; =UNK05_021F78C4 - str r0, [sp, #0xc] -_021E8460: - ldr r0, [sp, #0xc] - ldr r1, [r0] - cmp r1, #3 - bne _021E846E - ldr r0, [r5, #0x1c] - cmp r0, #0 - beq _021E84D6 -_021E846E: - ldr r0, [sp, #0x14] - add r4, r4, r0 - ldr r0, [r5, #0x18] - bl NewString_ReadMsgData - add r6, r0, #0 - mov r1, #0 - str r4, [sp] - mov r0, #0xff - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - ldr r0, [r5, #0x10] - add r2, r6, #0 - add r3, r1, #0 - bl AddTextPrinterParameterized - add r0, r6, #0 - bl String_dtor - sub r2, r7, #4 - ldr r0, [r5, #0x14] - ldr r1, [r5, #0x18] - ldr r2, [r2] - ldr r3, [r5, #4] - bl ReadMsgData_ExpandPlaceholders - add r6, r0, #0 - mov r0, #0 - mov r1, #2 - bl FUN_02002E4C - add r2, r0, #0 - mov r0, #0 - add r1, r6, #0 - bl FUN_02002E14 - mov r1, #0x68 - sub r3, r1, r0 - str r4, [sp] - mov r0, #0xff - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - ldr r0, [r5, #0x10] - mov r1, #0 - add r2, r6, #0 - bl AddTextPrinterParameterized - add r0, r6, #0 - bl String_dtor -_021E84D6: - ldr r0, [sp, #0xc] - add r7, r7, #4 - add r0, r0, #4 - str r0, [sp, #0xc] - ldr r0, [sp, #0x10] - add r0, r0, #1 - str r0, [sp, #0x10] - cmp r0, #5 - blo _021E8460 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E84EC: .word UNK05_021F78D4 -_021E84F0: .word UNK05_021F78C4 - - thumb_func_start MOD05_021E84F4 -MOD05_021E84F4: ; 0x021E84F4 - push {r3, r4, lr} - sub sp, #0x14 - add r4, r0, #0 - ldr r0, [r4, #4] - mov r1, #0x10 - bl AllocFromHeap - str r0, [r4, #0x10] - mov r3, #1 - str r3, [sp] - ldr r0, [r4, #0x2c] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #4] - ldr r0, [r4, #0x30] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #8] - mov r0, #0xd - str r0, [sp, #0xc] - ldr r0, _021E8564 ; =0x0000027F - str r0, [sp, #0x10] - ldrb r2, [r4, #8] - ldr r0, [r4, #0xc] - ldr r1, [r4, #0x10] - bl FUN_02019064 - mov r0, #0 - str r0, [sp] - ldr r0, [r4, #4] - ldr r2, _021E8568 ; =0x000003D9 - str r0, [sp, #4] - ldrb r1, [r4, #8] - ldr r0, [r4, #0xc] - mov r3, #0xb - bl FUN_0200CB00 - mov r0, #0 - mov r1, #6 - bl FUN_02002E4C - add r1, r0, #0 - ldr r0, [r4, #0x10] - bl FUN_02019620 - add r0, r4, #0 - bl MOD05_021E8410 - ldr r0, [r4, #0x10] - ldr r2, _021E8568 ; =0x000003D9 - mov r1, #0 - mov r3, #0xb - bl FUN_0200CCA4 - add sp, #0x14 - pop {r3, r4, pc} - .balign 4, 0 -_021E8564: .word 0x0000027F -_021E8568: .word 0x000003D9 - - thumb_func_start MOD05_021E856C -MOD05_021E856C: ; 0x021E856C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x10] - mov r1, #0 - bl FUN_0200CCF8 - ldr r0, [r4, #0x10] - bl FUN_02019178 - ldr r0, [r4, #0x10] - bl FreeToHeap - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E8588 -MOD05_021E8588: ; 0x021E8588 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r6, r0, #0 - add r0, r5, #0 - mov r1, #0x34 - add r7, r2, #0 - bl AllocFromHeap - add r4, r0, #0 - str r6, [r4] - str r5, [r4, #4] - strb r7, [r4, #8] - ldr r0, [r6, #8] - str r0, [r4, #0xc] - add r0, r5, #0 - bl ScrStrBufs_new - str r0, [r4, #0x14] - ldr r2, _021E85E0 ; =0x000001E3 - mov r0, #1 - mov r1, #0x1a - add r3, r5, #0 - bl NewMsgDataFromNarc - str r0, [r4, #0x18] - add r0, r4, #0 - ldr r1, [r4] - add r0, #0x1c - bl MOD05_021E8310 - add r1, r4, #0 - ldr r0, [r4, #0x14] - add r1, #0x1c - bl MOD05_021E835C - mov r0, #0xd - str r0, [r4, #0x2c] - add r0, r4, #0 - add r0, #0x1c - bl MOD05_021E8400 - str r0, [r4, #0x30] - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E85E0: .word 0x000001E3 - - thumb_func_start MOD05_021E85E4 -MOD05_021E85E4: ; 0x021E85E4 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x18] - bl DestroyMsgData - ldr r0, [r4, #0x14] - bl ScrStrBufs_delete - add r0, r4, #0 - bl FreeToHeap - pop {r4, pc} - - thumb_func_start MOD05_021E85FC -MOD05_021E85FC: ; 0x021E85FC - push {r4, lr} - add r4, r0, #0 - bl FUN_02034E48 - add r0, r4, #0 - mov r1, #4 - mov r2, #0 - bl MOD05_021EFA9C - ldr r0, [r4, #0x38] - bl FUN_02055320 - ldr r1, [r4, #0x1c] - str r0, [r1, #8] - ldr r0, [r4, #0x38] - bl FUN_0205532C - ldr r1, [r4, #0x1c] - str r0, [r1, #0xc] - mov r1, #0 - ldr r0, [r4, #0x1c] - mvn r1, r1 - str r1, [r0, #4] - ldr r0, [r4, #0x38] - bl FUN_020552F8 - ldr r1, [r4, #0x1c] - str r0, [r1, #0x10] - ldr r0, [r4, #0xc] - bl FUN_02022720 - cmp r0, #2 - bne _021E8642 - mov r0, #1 - pop {r4, pc} -_021E8642: - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_start MOD05_021E8648 MOD05_021E8648: ; 0x021E8648 push {r4, r5, r6, lr} @@ -17395,7 +14837,7 @@ _021EFC20: str r1, [r0] ldr r0, [r4, #0x34] bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -17546,7 +14988,7 @@ MOD05_021EFD40: ; 0x021EFD40 ldr r0, [r0, #8] ldr r2, _021EFD78 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x44] mov r0, #3 str r0, [r4, #0x48] @@ -17637,7 +15079,7 @@ MOD05_021EFDF0: ; 0x021EFDF0 ldr r0, [r0, #8] ldr r2, _021EFE28 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x44] mov r0, #5 str r0, [r4, #0x48] @@ -17703,7 +15145,7 @@ MOD05_021EFE70: ; 0x021EFE70 ldr r0, [r0, #8] ldr r2, _021EFEA8 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x44] mov r0, #7 str r0, [r4, #0x48] @@ -17950,7 +15392,7 @@ MOD05_021F0080: ; 0x021F0080 ldr r0, [r0, #8] ldr r2, _021F00B8 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x44] mov r0, #0xb str r0, [r4, #0x48] @@ -31096,45 +28538,6 @@ _021F6428: .word MOD05_021F57F0 .section .rodata - .global UNK05_021F7824 -UNK05_021F7824: ; 0x021F7824 - .word 0x00000001, 0x0000000C, 0x00000044, MOD05_021E79A8 - .word MOD05_021E7A6C, MOD05_021E7A08, MOD05_021E7A88 - - .global UNK05_021F7840 -UNK05_021F7840: ; 0x021F7840 - .word 0x00000044, MOD05_021E7B08, MOD05_021E7A6C, MOD05_021E7B78 - .word MOD05_021E7A88 - - .global UNK05_021F7854 -UNK05_021F7854: ; 0x021F7854 - .word 0x00000000, 0x00000001, 0x00000000, 0x00000000 - .word 0x00000000, 0x00000002 - - .global UNK05_021F786C -UNK05_021F786C: ; 0x021F786C - .word 0x00001000, 0x00001000, 0x00001000 - - .global UNK05_021F7878 -UNK05_021F7878: ; 0x021F7878 - .byte 0x00, 0x10, 0x00, 0x00 ;word - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - - .global UNK05_021F789C -UNK05_021F789C: ; 0x021F789C - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ;word - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - - .global UNK05_021F78C4 -UNK05_021F78C4: ; 0x021F78C4 - .byte 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021F78D4 -UNK05_021F78D4: ; 0x021F78D4 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .global UNK05_021F78E4 UNK05_021F78E4: ; 0x021F78E4 .byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/arm9/modules/05/include/mod05_021E72FC.h b/arm9/modules/05/include/mod05_021E72FC.h new file mode 100644 index 00000000..6c61c913 --- /dev/null +++ b/arm9/modules/05/include/mod05_021E72FC.h @@ -0,0 +1,23 @@ +#ifndef POKEDIAMOND_MOD05_021E72FC_H +#define POKEDIAMOND_MOD05_021E72FC_H + +#include "nitro/types.h" + +typedef struct UnkStruct021E7358 +{ + u32 Unk00; + u32 Unk04; + u32 Unk08; + u32 Unk0C; + u32 Unk10; + +} UnkStruct021E7358; + +BOOL MOD05_021E72FC(u32 param0, u32 param1); +void MOD05_021E7358(u32 param0, u32 param1, u32 param2); +u32 MOD05_021E7388(u32 param0); +BOOL MOD05_021E73B4(UnkStruct021E7358 *param0); +UnkStruct021E7358 *MOD05_021E74D4(u32 param0); +void MOD05_021E74F8(UnkStruct021E7358 *param0); + +#endif //POKEDIAMOND_MOD05_021E72FC_H diff --git a/arm9/modules/05/src/mod05_021E72FC.c b/arm9/modules/05/src/mod05_021E72FC.c new file mode 100644 index 00000000..8a31d032 --- /dev/null +++ b/arm9/modules/05/src/mod05_021E72FC.c @@ -0,0 +1,160 @@ +#include "global.h" +#include "mod05_021E72FC.h" +#include "heap.h" + +extern void FUN_020054C8(u32 param0); +extern void FUN_020463CC(u32 param0, void *func, UnkStruct021E7358 *param2); +extern u32 FUN_020553A0(u32 param0); +extern u32 FUN_02058720(u32 param0); +extern BOOL FUN_02054B30(u8 param0); +extern BOOL FUN_02054B3C(u8 param0); +extern BOOL FUN_02054B48(u8 param0); +extern BOOL FUN_02054B54(u8 param0); +extern UnkStruct021E7358 *FUN_0204652C(UnkStruct021E7358 *param0); +extern void FUN_02058410(u32 param0, u32 param1); +extern BOOL FUN_02057254(u32 param0); +extern u32 FUN_0205AFDC(u32 param0, u32 param1); +extern void FUN_02057260(u32 param0, u32 param1); +extern void FUN_02055304(u32 param0, u32 param1); +extern BOOL FUN_02056B74(u32 param0, u32 param1, u32 param2); +extern void FUN_02058418(u32 param0, u32 param1); +extern void FUN_020054F0(u32 param0, u32 param1); +extern void FUN_02016A8C(u32 param0, void *param1); + +THUMB_FUNC BOOL MOD05_021E72FC(u32 param0, u32 param1) +{ + u8 res = (u8)FUN_02058720(FUN_020553A0(param1)); + u32 r2; + if (FUN_02054B30(res) == TRUE) + { + r2 = 3; + goto label; + } + else if (FUN_02054B3C(res) == TRUE) + { + r2 = 2; + goto label; + } + else if (FUN_02054B48(res) == TRUE) + { + r2 = 0; + goto label; + } + else if (FUN_02054B54(res) == TRUE) + { + r2 = 1; + goto label; + } + return FALSE; +label: + MOD05_021E7358(param0, param1, r2); + return TRUE; +} + +THUMB_FUNC void MOD05_021E7358(u32 param0, u32 param1, u32 param2) +{ + UnkStruct021E7358 *res = MOD05_021E74D4(24); + res->Unk0C = param0; + res->Unk10 = param1; + res->Unk00 = param2; + FUN_020054C8(1624); + FUN_020463CC(param0, MOD05_021E73B4, res); +} + +THUMB_FUNC u32 MOD05_021E7388(u32 param0) +{ + switch (param0) + { + case 0: + return 2; + case 2: + return 1; + case 1: + return 3; + case 3: + return 0; + } + return 0; +} + +THUMB_FUNC BOOL MOD05_021E73B4(UnkStruct021E7358 *param0) +{ + UnkStruct021E7358 *strct = FUN_0204652C(param0); + u32 res = FUN_020553A0(strct->Unk10); + u8 res2 = (u8)FUN_02058720(res); + switch (strct->Unk08) + { + case 0: + FUN_02058410(res, 1 << 8); + strct->Unk08++; + break; + case 1: + if (!FUN_02057254(strct->Unk10)) + { + break; + } + FUN_02057260(strct->Unk10, FUN_0205AFDC(strct->Unk00, 12)); + FUN_02055304(strct->Unk10, strct->Unk00); + strct->Unk08++; + strct->Unk04 = 7; + break; + case 2: + if (strct->Unk04 == 2 || strct->Unk04 == 4 || strct->Unk04 == 6) + { + strct->Unk00 = MOD05_021E7388(strct->Unk00); + FUN_02055304(strct->Unk10, strct->Unk00); + } + if (--(strct->Unk04)) + { + break; + } + if (FUN_02054B30(res2) == TRUE) + { + strct->Unk00 = 3; + } + else if (FUN_02054B3C(res2) == TRUE) + { + strct->Unk00 = 2; + } + else if (FUN_02054B48(res2) == TRUE) + { + strct->Unk00 = 0; + } + else if (FUN_02054B54(res2) == TRUE) + { + strct->Unk00 = 1; + } + else + { + strct->Unk00 = MOD05_021E7388(strct->Unk00); + } + if (FUN_02056B74(strct->Unk10, res, strct->Unk00) == FALSE) + { + strct->Unk08 = 1; + break; + } + FUN_02058418(res, 0x80); + FUN_02058418(res, 1 << 8); + FUN_02055304(strct->Unk10, strct->Unk00); + MOD05_021E74F8(strct); + FUN_020054F0(1624, 0); + return TRUE; + } + return FALSE; +} + +THUMB_FUNC UnkStruct021E7358 *MOD05_021E74D4(u32 param0) +{ + UnkStruct021E7358 *res = (UnkStruct021E7358 *)AllocFromHeapAtEnd(4, param0); + if (res == NULL) + { + ErrorHandling(); + } + memset((void *)res, 0, param0); + return res; +} + +THUMB_FUNC void MOD05_021E74F8(UnkStruct021E7358 *param0) +{ + FUN_02016A8C(4, param0); +} |