diff options
author | red031000 <rubenru09@aol.com> | 2021-08-17 13:41:32 +0100 |
---|---|---|
committer | red031000 <rubenru09@aol.com> | 2021-08-17 13:41:32 +0100 |
commit | 5b5d2638dc1ffe73295ce239185c3c652f9ab3d3 (patch) | |
tree | 6a1089e1ddb5656248820e4ba19b2e74490790df | |
parent | 6d864e78e737cec5387da17e5062b9e64bcec5eb (diff) |
mod04_021E05FC
-rw-r--r-- | arm9/arm9.lsf | 1 | ||||
-rw-r--r-- | arm9/global.inc | 7 | ||||
-rw-r--r-- | arm9/modules/04/asm/arm_04.s | 822 | ||||
-rw-r--r-- | arm9/modules/04/asm/mod04_021E05FC.s | 830 |
4 files changed, 838 insertions, 822 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 5b9fee47..31f43a15 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -673,6 +673,7 @@ Overlay MODULE_04 Object mod04_021DE2D0.o Object mod04_021DE89C.o Object mod04_021DEB90.o + Object mod04_021E05FC.o Object arm_04.o } diff --git a/arm9/global.inc b/arm9/global.inc index f08623d5..59162090 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6208,8 +6208,10 @@ .extern MOD04_021DFF74 .extern MOD04_021E0200 .extern MOD04_021E0374 +.extern MOD04_021E05FC .extern MOD04_021E0E48 .extern MOD04_021E0EAC +.extern MOD04_021E0F00 .extern MOD04_021E0F1C .extern MOD04_021E1034 .extern MOD04_021E1074 @@ -6248,6 +6250,7 @@ .extern MOD04_021E9568 .extern MOD04_021E9FD0 .extern MOD04_021EA138 +.extern MOD04_021EA1E0 .extern MOD04_021EA368 .extern MOD04_021EA530 .extern MOD04_021EA9C4 @@ -6302,6 +6305,10 @@ .extern MOD04_021F05F4 .extern MOD04_021F0664 .extern MOD04_021F06E4 +.extern MOD04_021F0B30 +.extern MOD04_021F0B9C +.extern MOD04_021F0D54 +.extern MOD04_021F0D8C .extern MOD04_021F0EB0 .extern MOD04_021F0F18 .extern MOD04_021F0F64 diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 5d87ee03..696e0b3b 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -3,812 +3,6 @@ .section .text .balign 4, 0 - arm_func_start MOD04_021E05FC -MOD04_021E05FC: ; 0x021E05FC - ldr r0, _021E0624 ; =UNK04_022106C8 - ldr r0, [r0] - cmp r0, #0 - beq _021E061C - ldr r0, [r0, #4] - cmp r0, #5 - moveq r0, #1 - bxeq lr -_021E061C: - mov r0, #0 - bx lr - .align 2, 0 -_021E0624: .word UNK04_022106C8 - arm_func_end MOD04_021E05FC - - arm_func_start MOD04_021E0628 -MOD04_021E0628: ; 0x021E0628 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x4c - mov r4, r1 - ldr r1, [r4] - mov r5, r0 - cmp r1, #0 - addne sp, sp, #0x4c - ldmneia sp!, {r4, r5, pc} - ldr r1, _021E07CC ; =UNK04_022106C8 - ldr r2, [r1] - ldr r1, [r2, #4] - cmp r1, #3 - bne _021E0704 - ldrsb r1, [r4, #0x8e] - cmp r1, #0 - bne _021E06DC - ldr r0, [r2, #0x1c] - ldr r1, [r2, #0xc] - add r2, sp, #8 - add r0, r0, #4 - bl DWCi_Acc_LoginIdToUserName - ldr r1, _021E07D0 ; =0x00000705 - add r2, sp, #8 - mov r0, r5 - bl MOD04_021F0B30 - bl MOD04_021E0DB0 - cmp r0, #0 - addne sp, sp, #0x4c - ldmneia sp!, {r4, r5, pc} - ldr r0, _021E07CC ; =UNK04_022106C8 - mov r3, #4 - ldr r1, [r0] - ldr r0, _021E07D4 ; =MOD04_021E0628 - str r3, [r1, #4] - mov r2, #0 - str r0, [sp] - str r2, [sp, #4] - ldr r1, [r4, #4] - mov r0, r5 - mov r3, r2 - bl MOD04_021F0B9C - bl MOD04_021E0DB0 - add sp, sp, #0x4c - cmp r0, #0 - ldmia sp!, {r4, r5, pc} -_021E06DC: - bl MOD04_021F0D54 - ldr r0, _021E07D8 ; =MOD04_021E0C80 - mov r1, #0 - bl MOD04_021E0A00 - ldr r0, _021E07CC ; =UNK04_022106C8 - mov r1, #1 - ldr r0, [r0] - add sp, sp, #0x4c - str r1, [r0, #4] - ldmia sp!, {r4, r5, pc} -_021E0704: - cmp r1, #4 - addne sp, sp, #0x4c - ldmneia sp!, {r4, r5, pc} - ldr r0, [r2, #0x1c] - ldr r1, [r2, #0xc] - add r2, sp, #0x1d - add r0, r0, #4 - bl DWCi_Acc_LoginIdToUserName - add r1, sp, #0x1d - add r0, r4, #0x8e - bl strcmp - cmp r0, #0 - bne _021E079C - ldr r0, _021E07CC ; =UNK04_022106C8 - add r2, sp, #0x32 - ldr r0, [r0] - ldr r1, [r0, #0xc] - add r0, r0, #0x3c - bl DWCi_Acc_LoginIdToUserName - ldr r0, _021E07CC ; =UNK04_022106C8 - ldr r2, [r4, #4] - ldr r1, [r0] - ldr r0, [r1, #0x1c] - add r1, r1, #0x3c - bl DWCi_Acc_SetLoginIdToUserData - mov r0, r5 - bl MOD04_021F0D54 - ldr r0, _021E07CC ; =UNK04_022106C8 - ldr r1, _021E07DC ; =UNK04_022106C4 - ldr r4, [r0] - ldr r0, _021E07E0 ; =UNK04_022106CC - ldr r2, [r1] - ldr r3, [r0] - add r0, r4, #0x48 - add r1, r4, #0x148 - blx r3 - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_021E079C: - ldr r0, _021E07D4 ; =MOD04_021E0628 - mov r2, #0 - str r0, [sp] - str r2, [sp, #4] - ldr r1, [r4, #4] - mov r0, r5 - mov r3, r2 - bl MOD04_021F0B9C - bl MOD04_021E0DB0 - cmp r0, #0 - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E07CC: .word UNK04_022106C8 -_021E07D0: .word 0x00000705 -_021E07D4: .word MOD04_021E0628 -_021E07D8: .word MOD04_021E0C80 -_021E07DC: .word UNK04_022106C4 -_021E07E0: .word UNK04_022106CC - arm_func_end MOD04_021E0628 - - arm_func_start MOD04_021E07E4 -MOD04_021E07E4: ; 0x021E07E4 - stmdb sp!, {lr} - sub sp, sp, #0x3d4 - bl MOD04_021D988C - cmp r0, #0x15 - bne _021E08BC - add r0, sp, #0 - bl MOD04_021D97F8 - ldr r0, _021E09DC ; =UNK04_022106C8 - add r1, sp, #0x4a - ldr r0, [r0] - add r0, r0, #0x48 - bl strcpy - ldr r0, _021E09DC ; =UNK04_022106C8 - add r1, sp, #0x100 - ldr r0, [r0] - add r1, r1, #0x77 - add r0, r0, #0x148 - bl strcpy - bl MOD04_021D991C - ldr r1, _021E09DC ; =UNK04_022106C8 - mov r0, #0 - ldr r1, [r1] - mov r2, r0 - ldr r1, [r1, #0x24] - bl MOD04_021DD904 - ldr r0, _021E09DC ; =UNK04_022106C8 - mov r2, #0 - ldr r1, [r0] - str r2, [r1, #0x24] - ldr r0, [r0] - ldr r0, [r0, #0x1c] - bl DWCi_Acc_IsAuthentic - cmp r0, #0 - beq _021E0898 - ldr r0, _021E09DC ; =UNK04_022106C8 - ldr r1, _021E09E0 ; =UNK04_022106C4 - ldr ip, [r0] - ldr r0, _021E09E4 ; =UNK04_022106CC - ldr r2, [r1] - ldr r3, [r0] - add r0, ip, #0x48 - add r1, ip, #0x148 - blx r3 - add sp, sp, #0x3d4 - ldmfd sp!, {pc} -_021E0898: - ldr r0, _021E09DC ; =UNK04_022106C8 - ldr r2, _021E09E8 ; =MOD04_021E0C98 - ldr r1, [r0] - mov r3, #3 - add r0, r1, #0x48 - add r1, r1, #0x148 - bl MOD04_021E0BE0 - add sp, sp, #0x3d4 - ldmfd sp!, {pc} -_021E08BC: - bl MOD04_021D988C - cmp r0, #0 - addeq sp, sp, #0x3d4 - ldmeqia sp!, {pc} - bl OS_GetTick - ldr r3, _021E09DC ; =UNK04_022106C8 - ldr r2, _021E09EC ; =0x000082EA - ldr ip, [r3] - mov r3, #0 - ldr lr, [ip, #0x28] - ldr ip, [ip, #0x2c] - subs lr, r0, lr - sbc r0, r1, ip - mov r1, r0, lsl #6 - orr r1, r1, lr, lsr #26 - mov r0, lr, lsl #6 - bl _ll_udiv - ldr r2, _021E09F0 ; =0x00002710 - cmp r1, #0 - cmpeq r0, r2 - bls _021E0958 - add r0, sp, #0x1c4 - bl MOD04_021D97F8 - bl MOD04_021D991C - ldr r1, _021E09DC ; =UNK04_022106C8 - mov r0, #0 - ldr r1, [r1] - mov r2, r0 - ldr r1, [r1, #0x24] - bl MOD04_021DD904 - ldr r0, _021E09DC ; =UNK04_022106C8 - mov r2, #0 - ldr r1, [r0] - mov r0, #2 - str r2, [r1, #0x24] - ldr r1, [sp, #0x1c4] - bl MOD04_021E0EAC - add sp, sp, #0x3d4 - ldmfd sp!, {pc} -_021E0958: - bl MOD04_021D991C - add r0, sp, #0x388 - mov r1, #0 - mov r2, #0x48 - bl MI_CpuFill8 - ldr r0, _021E09DC ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x10] - bl MOD04_021DE89C - ldr r1, _021E09DC ; =UNK04_022106C8 - mov r2, r0, lsl #1 - ldr r1, [r1] - add r2, r2, #2 - ldr r0, [r1, #0x10] - add r1, sp, #0x388 - bl MI_CpuCopy8 - ldr r0, _021E09DC ; =UNK04_022106C8 - ldr r1, _021E09F4 ; =0x00000251 - ldr r2, [r0] - add r0, sp, #0x3bc - add r1, r2, r1 - bl strcpy - ldr r2, _021E09F8 ; =MOD04_021DD944 - ldr r0, _021E09DC ; =UNK04_022106C8 - str r2, [sp, #0x3c8] - ldr r2, _021E09FC ; =MOD04_021DD904 - ldr r1, [r0] - str r2, [sp, #0x3cc] - ldr r1, [r1, #0x24] - add r0, sp, #0x388 - bl MOD04_021D9ACC - add sp, sp, #0x3d4 - ldmfd sp!, {pc} - .align 2, 0 -_021E09DC: .word UNK04_022106C8 -_021E09E0: .word UNK04_022106C4 -_021E09E4: .word UNK04_022106CC -_021E09E8: .word MOD04_021E0C98 -_021E09EC: .word 0x000082EA -_021E09F0: .word 0x00002710 -_021E09F4: .word 0x00000251 -_021E09F8: .word MOD04_021DD944 -_021E09FC: .word MOD04_021DD904 - arm_func_end MOD04_021E07E4 - - arm_func_start MOD04_021E0A00 -MOD04_021E0A00: ; 0x021E0A00 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x4c - mov r5, r0 - mov r4, r1 - add r0, sp, #0 - mov r1, #0 - mov r2, #0x48 - bl MI_CpuFill8 - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r2, _021E0BBC ; =UNK04_022106CC - ldr r1, _021E0BC0 ; =UNK04_022106C4 - ldr r0, [r0] - str r5, [r2] - str r4, [r1] - ldr r0, [r0, #0x1c] - bl DWCi_Acc_IsAuthentic - cmp r0, #0 - beq _021E0A68 - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r1, [r0] - ldr r0, [r1, #0x1c] - add r2, r1, #0x248 - ldr r1, [r0, #0x24] - add r0, r0, #0x10 - bl DWCi_Acc_LoginIdToUserName - b _021E0B1C -_021E0A68: - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r0, [r0] - add r0, r0, #0x3c - bl DWCi_Acc_IsValidLoginId - cmp r0, #0 - bne _021E0AD0 - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x1c] - add r0, r0, #4 - bl DWCi_Acc_CheckConsoleUserId - cmp r0, #0 - beq _021E0ABC - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r1, [r0] - ldr r0, [r1, #0x1c] - add r3, r1, #0x3c - add r0, r0, #4 - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - b _021E0B04 -_021E0ABC: - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r0, [r0] - add r0, r0, #0x3c - bl DWCi_Acc_CreateTempLoginId - b _021E0B04 -_021E0AD0: - bl OS_GetTick - ldr r2, _021E0BC4 ; =0x6C078965 - ldr r3, _021E0BC8 ; =0x5D588B65 - umull ip, r4, r0, r2 - mla r4, r0, r3, r4 - ldr r3, _021E0BB8 ; =UNK04_022106C8 - ldr r0, _021E0BCC ; =0x00269EC3 - mla r4, r1, r2, r4 - adds r0, ip, r0 - ldr r3, [r3] - adc r1, r4, #0 - add r0, r3, #0x3c - bl DWCi_Acc_SetPlayerId -_021E0B04: - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r2, [r0] - ldr r1, [r2, #0xc] - add r0, r2, #0x3c - add r2, r2, #0x248 - bl DWCi_Acc_LoginIdToUserName -_021E0B1C: - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x10] - bl MOD04_021DE89C - ldr r1, _021E0BB8 ; =UNK04_022106C8 - mov r2, r0, lsl #1 - ldr r1, [r1] - add r2, r2, #2 - ldr r0, [r1, #0x10] - add r1, sp, #0 - bl MI_CpuCopy8 - ldr r0, _021E0BB8 ; =UNK04_022106C8 - ldr r1, _021E0BD0 ; =0x00000251 - ldr r2, [r0] - add r0, sp, #0x34 - add r1, r2, r1 - bl strcpy - ldr r4, _021E0BD4 ; =MOD04_021DD944 - ldr r3, _021E0BD8 ; =MOD04_021DD904 - ldr r1, _021E0BDC ; =0x00001C10 - mov r0, #0 - mov r2, #4 - str r4, [sp, #0x40] - str r3, [sp, #0x44] - bl MOD04_021DD924 - ldr r1, _021E0BB8 ; =UNK04_022106C8 - mov r4, r0 - ldr r0, [r1] - str r4, [r0, #0x24] - bl OS_GetTick - ldr r2, _021E0BB8 ; =UNK04_022106C8 - ldr r2, [r2] - str r0, [r2, #0x28] - str r1, [r2, #0x2c] - mov r1, r4 - add r0, sp, #0 - bl MOD04_021D9ACC - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_021E0BB8: .word UNK04_022106C8 -_021E0BBC: .word UNK04_022106CC -_021E0BC0: .word UNK04_022106C4 -_021E0BC4: .word 0x6C078965 -_021E0BC8: .word 0x5D588B65 -_021E0BCC: .word 0x00269EC3 -_021E0BD0: .word 0x00000251 -_021E0BD4: .word MOD04_021DD944 -_021E0BD8: .word MOD04_021DD904 -_021E0BDC: .word 0x00001C10 - arm_func_end MOD04_021E0A00 - - arm_func_start MOD04_021E0BE0 -MOD04_021E0BE0: ; 0x021E0BE0 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - ldr r4, _021E0C7C ; =UNK04_022106C8 - mov r6, r1 - ldr r4, [r4] - mov r1, r0 - add r0, r4, #0x48 - mov r5, r2 - mov r4, r3 - bl strcpy - ldr r0, _021E0C7C ; =UNK04_022106C8 - mov r1, r6 - ldr r0, [r0] - add r0, r0, #0x148 - bl strcpy - ldr r0, _021E0C7C ; =UNK04_022106C8 - ldr r6, [r0] - bl OS_GetTick - str r0, [r6, #0x34] - str r1, [r6, #0x38] - mov r3, #1 - ldr r0, _021E0C7C ; =UNK04_022106C8 - str r3, [r6, #0x30] - ldr r2, [r0] - mov r1, #0 - str r1, [sp] - str r5, [sp, #4] - str r1, [sp, #8] - ldr r0, [r2] - add r1, r2, #0x48 - add r2, r2, #0x148 - bl MOD04_021F0D8C - bl MOD04_021E0DB0 - cmp r0, #0 - ldreq r0, _021E0C7C ; =UNK04_022106C8 - ldreq r0, [r0] - streq r4, [r0, #4] - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E0C7C: .word UNK04_022106C8 - arm_func_end MOD04_021E0BE0 - - arm_func_start MOD04_021E0C80 -MOD04_021E0C80: ; 0x021E0C80 - ldr ip, _021E0C90 ; =MOD04_021E0BE0 - ldr r2, _021E0C94 ; =MOD04_021E0C98 - mov r3, #2 - bx ip - .align 2, 0 -_021E0C90: .word MOD04_021E0BE0 -_021E0C94: .word MOD04_021E0C98 - arm_func_end MOD04_021E0C80 - - arm_func_start MOD04_021E0C98 -MOD04_021E0C98: ; 0x021E0C98 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r3, _021E0DA0 ; =UNK04_022106C8 - mov r2, #0 - ldr ip, [r3] - mov r4, r1 - str r2, [ip, #0x30] - ldr r1, [r4] - cmp r1, #0 - bne _021E0D90 - ldr ip, [r3] - ldr r1, [ip, #4] - cmp r1, #2 - bne _021E0D5C - ldr r1, [ip, #0x1c] - ldr r0, [r4, #4] - ldr r1, [r1, #0x1c] - cmp r1, r0 - bne _021E0D48 - ldr r1, _021E0DA4 ; =UNK04_0220D34C - mov r3, #5 - mov r0, #1 - str r3, [ip, #4] - bl MOD04_021E1E30 - bl MOD04_021E0DB0 - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, pc} - ldr r0, _021E0DA0 ; =UNK04_022106C8 - ldr r1, [r4, #4] - ldr r3, [r0] - mov r0, #0 - ldr r2, [r3, #0x18] - ldr r3, [r3, #0x14] - blx r3 - bl MOD04_021DF7C4 - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, pc} - ldr r0, [r4, #4] - bl MOD04_021EA1E0 - add sp, sp, #8 - cmp r0, #0 - ldmia sp!, {r4, pc} -_021E0D48: - ldr r1, _021E0DA8 ; =0xFFFF15A0 - mov r0, #6 - bl MOD04_021E0EAC - add sp, sp, #8 - ldmia sp!, {r4, pc} -_021E0D5C: - cmp r1, #3 - addne sp, sp, #8 - ldmneia sp!, {r4, pc} - ldr r1, _021E0DAC ; =MOD04_021E0628 - mov r3, r2 - str r1, [sp] - str r2, [sp, #4] - ldr r1, [r4, #4] - bl MOD04_021F0B9C - bl MOD04_021E0DB0 - add sp, sp, #8 - cmp r0, #0 - ldmia sp!, {r4, pc} -_021E0D90: - mov r0, r1 - bl MOD04_021E0DB0 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E0DA0: .word UNK04_022106C8 -_021E0DA4: .word UNK04_0220D34C -_021E0DA8: .word 0xFFFF15A0 -_021E0DAC: .word MOD04_021E0628 - arm_func_end MOD04_021E0C98 - - arm_func_start MOD04_021E0DB0 -MOD04_021E0DB0: ; 0x021E0DB0 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #4 - addls pc, pc, r4, lsl #2 - b _021E0E0C -_021E0DCC: ; jump table - b _021E0E0C ; case 0 - b _021E0DE0 ; case 1 - b _021E0DEC ; case 2 - b _021E0DF8 ; case 3 - b _021E0E04 ; case 4 -_021E0DE0: - mov r0, #9 - mvn r2, #0 - b _021E0E0C -_021E0DEC: - mov r0, #9 - mvn r2, #1 - b _021E0E0C -_021E0DF8: - mov r0, #6 - mvn r2, #9 - b _021E0E0C -_021E0E04: - mov r0, #6 - mvn r2, #0x13 -_021E0E0C: - ldr r1, _021E0E20 ; =0xFFFF11B8 - add r1, r2, r1 - bl MOD04_021E0EAC - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E0E20: .word 0xFFFF11B8 - arm_func_end MOD04_021E0DB0 - - arm_func_start MOD04_021E0E24 -MOD04_021E0E24: ; 0x021E0E24 - ldr r0, _021E0E44 ; =UNK04_022106C8 - ldr r2, [r0] - cmp r2, #0 - movne r1, #0 - strne r1, [r2, #4] - ldrne r0, [r0] - strne r1, [r0, #0x30] - bx lr - .align 2, 0 -_021E0E44: .word UNK04_022106C8 - arm_func_end MOD04_021E0E24 - - arm_func_start MOD04_021E0E48 -MOD04_021E0E48: ; 0x021E0E48 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021E0EA8 ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, #0 - beq _021E0E94 - bl MOD04_021D9974 - bl MOD04_021D991C - ldr r1, _021E0EA8 ; =UNK04_022106C8 - mov r0, #0 - ldr r1, [r1] - mov r2, r0 - ldr r1, [r1, #0x24] - bl MOD04_021DD904 - ldr r0, _021E0EA8 ; =UNK04_022106C8 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x24] -_021E0E94: - ldr r0, _021E0EA8 ; =UNK04_022106C8 - mov r1, #0 - str r1, [r0] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E0EA8: .word UNK04_022106C8 - arm_func_end MOD04_021E0E48 - - arm_func_start MOD04_021E0EAC -MOD04_021E0EAC: ; 0x021E0EAC - stmdb sp!, {r4, lr} - ldr r2, _021E0EFC ; =UNK04_022106C8 - mov r4, r0 - ldr r2, [r2] - cmp r2, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #0 - ldmeqia sp!, {r4, pc} - bl MOD04_021DD6B0 - ldr r0, _021E0EFC ; =UNK04_022106C8 - ldr r0, [r0] - ldr r3, [r0, #0x14] - cmp r3, #0 - beq _021E0EF4 - ldr r2, [r0, #0x18] - mov r0, r4 - mov r1, #0 - blx r3 -_021E0EF4: - bl MOD04_021E0E24 - ldmia sp!, {r4, pc} - .align 2, 0 -_021E0EFC: .word UNK04_022106C8 - arm_func_end MOD04_021E0EAC - - arm_func_start MOD04_021E0F00 -MOD04_021E0F00: ; 0x021E0F00 - ldr r0, _021E0F18 ; =UNK04_022106C8 - ldr r0, [r0] - cmp r0, #0 - ldrne r0, [r0, #0x1c] - moveq r0, #0 - bx lr - .align 2, 0 -_021E0F18: .word UNK04_022106C8 - arm_func_end MOD04_021E0F00 - - arm_func_start MOD04_021E0F1C -MOD04_021E0F1C: ; 0x021E0F1C - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021E1024 ; =UNK04_022106C8 - ldr r0, [r0] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl MOD04_021DD6D4 - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {pc} - ldr r0, _021E1024 ; =UNK04_022106C8 - ldr r1, [r0] - ldr r0, [r1, #4] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _021E101C -_021E0F60: ; jump table - b _021E101C ; case 0 - b _021E0F78 ; case 1 - b _021E0F84 ; case 2 - b _021E0F84 ; case 3 - b _021E0F84 ; case 4 - b _021E101C ; case 5 -_021E0F78: - bl MOD04_021E07E4 - add sp, sp, #4 - ldmfd sp!, {pc} -_021E0F84: - ldr r0, [r1] - cmp r0, #0 - beq _021E0FA0 - ldr r1, [r0] - cmp r1, #0 - beq _021E0FA0 - bl MOD04_021F0F18 -_021E0FA0: - ldr r0, _021E1024 ; =UNK04_022106C8 - ldr r0, [r0] - ldr r0, [r0, #0x30] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {pc} - bl OS_GetTick - ldr r3, _021E1024 ; =UNK04_022106C8 - ldr r2, _021E1028 ; =0x000082EA - ldr ip, [r3] - mov r3, #0 - ldr lr, [ip, #0x34] - ldr ip, [ip, #0x38] - subs lr, r0, lr - sbc r0, r1, ip - mov r1, r0, lsl #6 - orr r1, r1, lr, lsr #26 - mov r0, lr, lsl #6 - bl _ll_udiv - ldr r2, _021E102C ; =0x0000EA60 - cmp r1, #0 - cmpeq r0, r2 - addls sp, sp, #4 - ldmlsia sp!, {pc} - ldr r1, _021E1030 ; =0xFFFF1172 - mov r0, #6 - bl MOD04_021E0EAC - ldr r0, _021E1024 ; =UNK04_022106C8 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x30] -_021E101C: - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E1024: .word UNK04_022106C8 -_021E1028: .word 0x000082EA -_021E102C: .word 0x0000EA60 -_021E1030: .word 0xFFFF1172 - arm_func_end MOD04_021E0F1C - - arm_func_start MOD04_021E1034 -MOD04_021E1034: ; 0x021E1034 - stmdb sp!, {lr} - sub sp, sp, #4 - ldr r0, _021E106C ; =MOD04_021E0C80 - mov r1, #0 - bl MOD04_021E0A00 - ldr r0, _021E1070 ; =UNK04_022106C8 - mov r3, #1 - ldr r2, [r0] - mov r1, #0 - str r3, [r2, #4] - ldr r0, [r0] - str r1, [r0, #0x30] - add sp, sp, #4 - ldmfd sp!, {pc} - .align 2, 0 -_021E106C: .word MOD04_021E0C80 -_021E1070: .word UNK04_022106C8 - arm_func_end MOD04_021E1034 - - arm_func_start MOD04_021E1074 -MOD04_021E1074: ; 0x021E1074 - stmdb sp!, {r4, r5, r6, lr} - ldr ip, _021E10F4 ; =UNK04_022106C8 - mov r6, r1 - mov r5, r2 - mov r1, #0 - mov r2, #0x260 - mov r4, r3 - str r0, [ip] - bl MI_CpuFill8 - ldr r0, _021E10F4 ; =UNK04_022106C8 - mov r2, #0 - ldr r1, [r0] - ldr ip, [sp, #0x10] - str r5, [r1] - ldr r1, [r0] - ldr r5, [sp, #0x14] - str r2, [r1, #4] - ldr r1, [r0] - ldr r3, [sp, #0x18] - str r4, [r1, #8] - ldr r1, [r0] - ldr r2, [sp, #0x1c] - str ip, [r1, #0xc] - ldr r1, [r0] - str r5, [r1, #0x10] - ldr r1, [r0] - str r3, [r1, #0x14] - ldr r1, [r0] - str r2, [r1, #0x18] - ldr r0, [r0] - str r6, [r0, #0x1c] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_021E10F4: .word UNK04_022106C8 - arm_func_end MOD04_021E1074 - arm_func_start MOD04_021E10F8 MOD04_021E10F8: ; 0x021E10F8 ldr r0, _021E1108 ; =UNK04_022106D0 @@ -51314,10 +50508,6 @@ UNK04_0220BE70: ; 0x0220BE70 .section .data - .global UNK_0220D34C -UNK04_0220D34C: ; 0x0220D34C - .byte 0x00, 0x00, 0x00, 0x00 - .global UNK_0220D350 UNK04_0220D350: ; 0x0220D350 .byte 0x00, 0x00, 0x00, 0x00 @@ -53952,18 +53142,6 @@ UNK04_0220FBA4: ; 0x0220FBA4 .section .bss - .global UNK04_022106C4 -UNK04_022106C4: ; 0x022106C4 - .space 0x4 - - .global UNK04_022106C8 -UNK04_022106C8: ; 0x022106C8 - .space 0x4 - - .global UNK04_022106CC -UNK04_022106CC: ; 0x022106CC - .space 0x4 - .global UNK04_022106D0 UNK04_022106D0: ; 0x022106D0 .space 0x4 diff --git a/arm9/modules/04/asm/mod04_021E05FC.s b/arm9/modules/04/asm/mod04_021E05FC.s new file mode 100644 index 00000000..21395d39 --- /dev/null +++ b/arm9/modules/04/asm/mod04_021E05FC.s @@ -0,0 +1,830 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD04_021E05FC +MOD04_021E05FC: ; 0x021E05FC + ldr r0, _021E0624 ; =UNK04_022106C8 + ldr r0, [r0] + cmp r0, #0 + beq _021E061C + ldr r0, [r0, #4] + cmp r0, #5 + moveq r0, #1 + bxeq lr +_021E061C: + mov r0, #0 + bx lr + .align 2, 0 +_021E0624: .word UNK04_022106C8 + arm_func_end MOD04_021E05FC + + arm_func_start MOD04_021E0628 +MOD04_021E0628: ; 0x021E0628 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x4c + mov r4, r1 + ldr r1, [r4] + mov r5, r0 + cmp r1, #0 + addne sp, sp, #0x4c + ldmneia sp!, {r4, r5, pc} + ldr r1, _021E07CC ; =UNK04_022106C8 + ldr r2, [r1] + ldr r1, [r2, #4] + cmp r1, #3 + bne _021E0704 + ldrsb r1, [r4, #0x8e] + cmp r1, #0 + bne _021E06DC + ldr r0, [r2, #0x1c] + ldr r1, [r2, #0xc] + add r2, sp, #8 + add r0, r0, #4 + bl DWCi_Acc_LoginIdToUserName + ldr r1, _021E07D0 ; =0x00000705 + add r2, sp, #8 + mov r0, r5 + bl MOD04_021F0B30 + bl MOD04_021E0DB0 + cmp r0, #0 + addne sp, sp, #0x4c + ldmneia sp!, {r4, r5, pc} + ldr r0, _021E07CC ; =UNK04_022106C8 + mov r3, #4 + ldr r1, [r0] + ldr r0, _021E07D4 ; =MOD04_021E0628 + str r3, [r1, #4] + mov r2, #0 + str r0, [sp] + str r2, [sp, #4] + ldr r1, [r4, #4] + mov r0, r5 + mov r3, r2 + bl MOD04_021F0B9C + bl MOD04_021E0DB0 + add sp, sp, #0x4c + cmp r0, #0 + ldmia sp!, {r4, r5, pc} +_021E06DC: + bl MOD04_021F0D54 + ldr r0, _021E07D8 ; =MOD04_021E0C80 + mov r1, #0 + bl MOD04_021E0A00 + ldr r0, _021E07CC ; =UNK04_022106C8 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #0x4c + str r1, [r0, #4] + ldmia sp!, {r4, r5, pc} +_021E0704: + cmp r1, #4 + addne sp, sp, #0x4c + ldmneia sp!, {r4, r5, pc} + ldr r0, [r2, #0x1c] + ldr r1, [r2, #0xc] + add r2, sp, #0x1d + add r0, r0, #4 + bl DWCi_Acc_LoginIdToUserName + add r1, sp, #0x1d + add r0, r4, #0x8e + bl strcmp + cmp r0, #0 + bne _021E079C + ldr r0, _021E07CC ; =UNK04_022106C8 + add r2, sp, #0x32 + ldr r0, [r0] + ldr r1, [r0, #0xc] + add r0, r0, #0x3c + bl DWCi_Acc_LoginIdToUserName + ldr r0, _021E07CC ; =UNK04_022106C8 + ldr r2, [r4, #4] + ldr r1, [r0] + ldr r0, [r1, #0x1c] + add r1, r1, #0x3c + bl DWCi_Acc_SetLoginIdToUserData + mov r0, r5 + bl MOD04_021F0D54 + ldr r0, _021E07CC ; =UNK04_022106C8 + ldr r1, _021E07DC ; =UNK04_022106C4 + ldr r4, [r0] + ldr r0, _021E07E0 ; =UNK04_022106CC + ldr r2, [r1] + ldr r3, [r0] + add r0, r4, #0x48 + add r1, r4, #0x148 + blx r3 + add sp, sp, #0x4c + ldmia sp!, {r4, r5, pc} +_021E079C: + ldr r0, _021E07D4 ; =MOD04_021E0628 + mov r2, #0 + str r0, [sp] + str r2, [sp, #4] + ldr r1, [r4, #4] + mov r0, r5 + mov r3, r2 + bl MOD04_021F0B9C + bl MOD04_021E0DB0 + cmp r0, #0 + add sp, sp, #0x4c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E07CC: .word UNK04_022106C8 +_021E07D0: .word 0x00000705 +_021E07D4: .word MOD04_021E0628 +_021E07D8: .word MOD04_021E0C80 +_021E07DC: .word UNK04_022106C4 +_021E07E0: .word UNK04_022106CC + arm_func_end MOD04_021E0628 + + arm_func_start MOD04_021E07E4 +MOD04_021E07E4: ; 0x021E07E4 + stmdb sp!, {lr} + sub sp, sp, #0x3d4 + bl MOD04_021D988C + cmp r0, #0x15 + bne _021E08BC + add r0, sp, #0 + bl MOD04_021D97F8 + ldr r0, _021E09DC ; =UNK04_022106C8 + add r1, sp, #0x4a + ldr r0, [r0] + add r0, r0, #0x48 + bl strcpy + ldr r0, _021E09DC ; =UNK04_022106C8 + add r1, sp, #0x100 + ldr r0, [r0] + add r1, r1, #0x77 + add r0, r0, #0x148 + bl strcpy + bl MOD04_021D991C + ldr r1, _021E09DC ; =UNK04_022106C8 + mov r0, #0 + ldr r1, [r1] + mov r2, r0 + ldr r1, [r1, #0x24] + bl MOD04_021DD904 + ldr r0, _021E09DC ; =UNK04_022106C8 + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0x24] + ldr r0, [r0] + ldr r0, [r0, #0x1c] + bl DWCi_Acc_IsAuthentic + cmp r0, #0 + beq _021E0898 + ldr r0, _021E09DC ; =UNK04_022106C8 + ldr r1, _021E09E0 ; =UNK04_022106C4 + ldr ip, [r0] + ldr r0, _021E09E4 ; =UNK04_022106CC + ldr r2, [r1] + ldr r3, [r0] + add r0, ip, #0x48 + add r1, ip, #0x148 + blx r3 + add sp, sp, #0x3d4 + ldmfd sp!, {pc} +_021E0898: + ldr r0, _021E09DC ; =UNK04_022106C8 + ldr r2, _021E09E8 ; =MOD04_021E0C98 + ldr r1, [r0] + mov r3, #3 + add r0, r1, #0x48 + add r1, r1, #0x148 + bl MOD04_021E0BE0 + add sp, sp, #0x3d4 + ldmfd sp!, {pc} +_021E08BC: + bl MOD04_021D988C + cmp r0, #0 + addeq sp, sp, #0x3d4 + ldmeqia sp!, {pc} + bl OS_GetTick + ldr r3, _021E09DC ; =UNK04_022106C8 + ldr r2, _021E09EC ; =0x000082EA + ldr ip, [r3] + mov r3, #0 + ldr lr, [ip, #0x28] + ldr ip, [ip, #0x2c] + subs lr, r0, lr + sbc r0, r1, ip + mov r1, r0, lsl #6 + orr r1, r1, lr, lsr #26 + mov r0, lr, lsl #6 + bl _ll_udiv + ldr r2, _021E09F0 ; =0x00002710 + cmp r1, #0 + cmpeq r0, r2 + bls _021E0958 + add r0, sp, #0x1c4 + bl MOD04_021D97F8 + bl MOD04_021D991C + ldr r1, _021E09DC ; =UNK04_022106C8 + mov r0, #0 + ldr r1, [r1] + mov r2, r0 + ldr r1, [r1, #0x24] + bl MOD04_021DD904 + ldr r0, _021E09DC ; =UNK04_022106C8 + mov r2, #0 + ldr r1, [r0] + mov r0, #2 + str r2, [r1, #0x24] + ldr r1, [sp, #0x1c4] + bl MOD04_021E0EAC + add sp, sp, #0x3d4 + ldmfd sp!, {pc} +_021E0958: + bl MOD04_021D991C + add r0, sp, #0x388 + mov r1, #0 + mov r2, #0x48 + bl MI_CpuFill8 + ldr r0, _021E09DC ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x10] + bl MOD04_021DE89C + ldr r1, _021E09DC ; =UNK04_022106C8 + mov r2, r0, lsl #1 + ldr r1, [r1] + add r2, r2, #2 + ldr r0, [r1, #0x10] + add r1, sp, #0x388 + bl MI_CpuCopy8 + ldr r0, _021E09DC ; =UNK04_022106C8 + ldr r1, _021E09F4 ; =0x00000251 + ldr r2, [r0] + add r0, sp, #0x3bc + add r1, r2, r1 + bl strcpy + ldr r2, _021E09F8 ; =MOD04_021DD944 + ldr r0, _021E09DC ; =UNK04_022106C8 + str r2, [sp, #0x3c8] + ldr r2, _021E09FC ; =MOD04_021DD904 + ldr r1, [r0] + str r2, [sp, #0x3cc] + ldr r1, [r1, #0x24] + add r0, sp, #0x388 + bl MOD04_021D9ACC + add sp, sp, #0x3d4 + ldmfd sp!, {pc} + .align 2, 0 +_021E09DC: .word UNK04_022106C8 +_021E09E0: .word UNK04_022106C4 +_021E09E4: .word UNK04_022106CC +_021E09E8: .word MOD04_021E0C98 +_021E09EC: .word 0x000082EA +_021E09F0: .word 0x00002710 +_021E09F4: .word 0x00000251 +_021E09F8: .word MOD04_021DD944 +_021E09FC: .word MOD04_021DD904 + arm_func_end MOD04_021E07E4 + + arm_func_start MOD04_021E0A00 +MOD04_021E0A00: ; 0x021E0A00 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x4c + mov r5, r0 + mov r4, r1 + add r0, sp, #0 + mov r1, #0 + mov r2, #0x48 + bl MI_CpuFill8 + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r2, _021E0BBC ; =UNK04_022106CC + ldr r1, _021E0BC0 ; =UNK04_022106C4 + ldr r0, [r0] + str r5, [r2] + str r4, [r1] + ldr r0, [r0, #0x1c] + bl DWCi_Acc_IsAuthentic + cmp r0, #0 + beq _021E0A68 + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r1, [r0] + ldr r0, [r1, #0x1c] + add r2, r1, #0x248 + ldr r1, [r0, #0x24] + add r0, r0, #0x10 + bl DWCi_Acc_LoginIdToUserName + b _021E0B1C +_021E0A68: + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r0, [r0] + add r0, r0, #0x3c + bl DWCi_Acc_IsValidLoginId + cmp r0, #0 + bne _021E0AD0 + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x1c] + add r0, r0, #4 + bl DWCi_Acc_CheckConsoleUserId + cmp r0, #0 + beq _021E0ABC + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r1, [r0] + ldr r0, [r1, #0x1c] + add r3, r1, #0x3c + add r0, r0, #4 + ldmia r0, {r0, r1, r2} + stmia r3, {r0, r1, r2} + b _021E0B04 +_021E0ABC: + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r0, [r0] + add r0, r0, #0x3c + bl DWCi_Acc_CreateTempLoginId + b _021E0B04 +_021E0AD0: + bl OS_GetTick + ldr r2, _021E0BC4 ; =0x6C078965 + ldr r3, _021E0BC8 ; =0x5D588B65 + umull ip, r4, r0, r2 + mla r4, r0, r3, r4 + ldr r3, _021E0BB8 ; =UNK04_022106C8 + ldr r0, _021E0BCC ; =0x00269EC3 + mla r4, r1, r2, r4 + adds r0, ip, r0 + ldr r3, [r3] + adc r1, r4, #0 + add r0, r3, #0x3c + bl DWCi_Acc_SetPlayerId +_021E0B04: + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r2, [r0] + ldr r1, [r2, #0xc] + add r0, r2, #0x3c + add r2, r2, #0x248 + bl DWCi_Acc_LoginIdToUserName +_021E0B1C: + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x10] + bl MOD04_021DE89C + ldr r1, _021E0BB8 ; =UNK04_022106C8 + mov r2, r0, lsl #1 + ldr r1, [r1] + add r2, r2, #2 + ldr r0, [r1, #0x10] + add r1, sp, #0 + bl MI_CpuCopy8 + ldr r0, _021E0BB8 ; =UNK04_022106C8 + ldr r1, _021E0BD0 ; =0x00000251 + ldr r2, [r0] + add r0, sp, #0x34 + add r1, r2, r1 + bl strcpy + ldr r4, _021E0BD4 ; =MOD04_021DD944 + ldr r3, _021E0BD8 ; =MOD04_021DD904 + ldr r1, _021E0BDC ; =0x00001C10 + mov r0, #0 + mov r2, #4 + str r4, [sp, #0x40] + str r3, [sp, #0x44] + bl MOD04_021DD924 + ldr r1, _021E0BB8 ; =UNK04_022106C8 + mov r4, r0 + ldr r0, [r1] + str r4, [r0, #0x24] + bl OS_GetTick + ldr r2, _021E0BB8 ; =UNK04_022106C8 + ldr r2, [r2] + str r0, [r2, #0x28] + str r1, [r2, #0x2c] + mov r1, r4 + add r0, sp, #0 + bl MOD04_021D9ACC + add sp, sp, #0x4c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_021E0BB8: .word UNK04_022106C8 +_021E0BBC: .word UNK04_022106CC +_021E0BC0: .word UNK04_022106C4 +_021E0BC4: .word 0x6C078965 +_021E0BC8: .word 0x5D588B65 +_021E0BCC: .word 0x00269EC3 +_021E0BD0: .word 0x00000251 +_021E0BD4: .word MOD04_021DD944 +_021E0BD8: .word MOD04_021DD904 +_021E0BDC: .word 0x00001C10 + arm_func_end MOD04_021E0A00 + + arm_func_start MOD04_021E0BE0 +MOD04_021E0BE0: ; 0x021E0BE0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr r4, _021E0C7C ; =UNK04_022106C8 + mov r6, r1 + ldr r4, [r4] + mov r1, r0 + add r0, r4, #0x48 + mov r5, r2 + mov r4, r3 + bl strcpy + ldr r0, _021E0C7C ; =UNK04_022106C8 + mov r1, r6 + ldr r0, [r0] + add r0, r0, #0x148 + bl strcpy + ldr r0, _021E0C7C ; =UNK04_022106C8 + ldr r6, [r0] + bl OS_GetTick + str r0, [r6, #0x34] + str r1, [r6, #0x38] + mov r3, #1 + ldr r0, _021E0C7C ; =UNK04_022106C8 + str r3, [r6, #0x30] + ldr r2, [r0] + mov r1, #0 + str r1, [sp] + str r5, [sp, #4] + str r1, [sp, #8] + ldr r0, [r2] + add r1, r2, #0x48 + add r2, r2, #0x148 + bl MOD04_021F0D8C + bl MOD04_021E0DB0 + cmp r0, #0 + ldreq r0, _021E0C7C ; =UNK04_022106C8 + ldreq r0, [r0] + streq r4, [r0, #4] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E0C7C: .word UNK04_022106C8 + arm_func_end MOD04_021E0BE0 + + arm_func_start MOD04_021E0C80 +MOD04_021E0C80: ; 0x021E0C80 + ldr ip, _021E0C90 ; =MOD04_021E0BE0 + ldr r2, _021E0C94 ; =MOD04_021E0C98 + mov r3, #2 + bx ip + .align 2, 0 +_021E0C90: .word MOD04_021E0BE0 +_021E0C94: .word MOD04_021E0C98 + arm_func_end MOD04_021E0C80 + + arm_func_start MOD04_021E0C98 +MOD04_021E0C98: ; 0x021E0C98 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r3, _021E0DA0 ; =UNK04_022106C8 + mov r2, #0 + ldr ip, [r3] + mov r4, r1 + str r2, [ip, #0x30] + ldr r1, [r4] + cmp r1, #0 + bne _021E0D90 + ldr ip, [r3] + ldr r1, [ip, #4] + cmp r1, #2 + bne _021E0D5C + ldr r1, [ip, #0x1c] + ldr r0, [r4, #4] + ldr r1, [r1, #0x1c] + cmp r1, r0 + bne _021E0D48 + ldr r1, _021E0DA4 ; =UNK04_0220D34C + mov r3, #5 + mov r0, #1 + str r3, [ip, #4] + bl MOD04_021E1E30 + bl MOD04_021E0DB0 + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + ldr r0, _021E0DA0 ; =UNK04_022106C8 + ldr r1, [r4, #4] + ldr r3, [r0] + mov r0, #0 + ldr r2, [r3, #0x18] + ldr r3, [r3, #0x14] + blx r3 + bl MOD04_021DF7C4 + cmp r0, #0 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + ldr r0, [r4, #4] + bl MOD04_021EA1E0 + add sp, sp, #8 + cmp r0, #0 + ldmia sp!, {r4, pc} +_021E0D48: + ldr r1, _021E0DA8 ; =0xFFFF15A0 + mov r0, #6 + bl MOD04_021E0EAC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_021E0D5C: + cmp r1, #3 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + ldr r1, _021E0DAC ; =MOD04_021E0628 + mov r3, r2 + str r1, [sp] + str r2, [sp, #4] + ldr r1, [r4, #4] + bl MOD04_021F0B9C + bl MOD04_021E0DB0 + add sp, sp, #8 + cmp r0, #0 + ldmia sp!, {r4, pc} +_021E0D90: + mov r0, r1 + bl MOD04_021E0DB0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E0DA0: .word UNK04_022106C8 +_021E0DA4: .word UNK04_0220D34C +_021E0DA8: .word 0xFFFF15A0 +_021E0DAC: .word MOD04_021E0628 + arm_func_end MOD04_021E0C98 + + arm_func_start MOD04_021E0DB0 +MOD04_021E0DB0: ; 0x021E0DB0 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #4 + addls pc, pc, r4, lsl #2 + b _021E0E0C +_021E0DCC: ; jump table + b _021E0E0C ; case 0 + b _021E0DE0 ; case 1 + b _021E0DEC ; case 2 + b _021E0DF8 ; case 3 + b _021E0E04 ; case 4 +_021E0DE0: + mov r0, #9 + mvn r2, #0 + b _021E0E0C +_021E0DEC: + mov r0, #9 + mvn r2, #1 + b _021E0E0C +_021E0DF8: + mov r0, #6 + mvn r2, #9 + b _021E0E0C +_021E0E04: + mov r0, #6 + mvn r2, #0x13 +_021E0E0C: + ldr r1, _021E0E20 ; =0xFFFF11B8 + add r1, r2, r1 + bl MOD04_021E0EAC + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E0E20: .word 0xFFFF11B8 + arm_func_end MOD04_021E0DB0 + + arm_func_start MOD04_021E0E24 +MOD04_021E0E24: ; 0x021E0E24 + ldr r0, _021E0E44 ; =UNK04_022106C8 + ldr r2, [r0] + cmp r2, #0 + movne r1, #0 + strne r1, [r2, #4] + ldrne r0, [r0] + strne r1, [r0, #0x30] + bx lr + .align 2, 0 +_021E0E44: .word UNK04_022106C8 + arm_func_end MOD04_021E0E24 + + arm_func_start MOD04_021E0E48 +MOD04_021E0E48: ; 0x021E0E48 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E0EA8 ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #0 + beq _021E0E94 + bl MOD04_021D9974 + bl MOD04_021D991C + ldr r1, _021E0EA8 ; =UNK04_022106C8 + mov r0, #0 + ldr r1, [r1] + mov r2, r0 + ldr r1, [r1, #0x24] + bl MOD04_021DD904 + ldr r0, _021E0EA8 ; =UNK04_022106C8 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x24] +_021E0E94: + ldr r0, _021E0EA8 ; =UNK04_022106C8 + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E0EA8: .word UNK04_022106C8 + arm_func_end MOD04_021E0E48 + + arm_func_start MOD04_021E0EAC +MOD04_021E0EAC: ; 0x021E0EAC + stmdb sp!, {r4, lr} + ldr r2, _021E0EFC ; =UNK04_022106C8 + mov r4, r0 + ldr r2, [r2] + cmp r2, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #0 + ldmeqia sp!, {r4, pc} + bl MOD04_021DD6B0 + ldr r0, _021E0EFC ; =UNK04_022106C8 + ldr r0, [r0] + ldr r3, [r0, #0x14] + cmp r3, #0 + beq _021E0EF4 + ldr r2, [r0, #0x18] + mov r0, r4 + mov r1, #0 + blx r3 +_021E0EF4: + bl MOD04_021E0E24 + ldmia sp!, {r4, pc} + .align 2, 0 +_021E0EFC: .word UNK04_022106C8 + arm_func_end MOD04_021E0EAC + + arm_func_start MOD04_021E0F00 +MOD04_021E0F00: ; 0x021E0F00 + ldr r0, _021E0F18 ; =UNK04_022106C8 + ldr r0, [r0] + cmp r0, #0 + ldrne r0, [r0, #0x1c] + moveq r0, #0 + bx lr + .align 2, 0 +_021E0F18: .word UNK04_022106C8 + arm_func_end MOD04_021E0F00 + + arm_func_start MOD04_021E0F1C +MOD04_021E0F1C: ; 0x021E0F1C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E1024 ; =UNK04_022106C8 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD04_021DD6D4 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _021E1024 ; =UNK04_022106C8 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _021E101C +_021E0F60: ; jump table + b _021E101C ; case 0 + b _021E0F78 ; case 1 + b _021E0F84 ; case 2 + b _021E0F84 ; case 3 + b _021E0F84 ; case 4 + b _021E101C ; case 5 +_021E0F78: + bl MOD04_021E07E4 + add sp, sp, #4 + ldmfd sp!, {pc} +_021E0F84: + ldr r0, [r1] + cmp r0, #0 + beq _021E0FA0 + ldr r1, [r0] + cmp r1, #0 + beq _021E0FA0 + bl MOD04_021F0F18 +_021E0FA0: + ldr r0, _021E1024 ; =UNK04_022106C8 + ldr r0, [r0] + ldr r0, [r0, #0x30] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl OS_GetTick + ldr r3, _021E1024 ; =UNK04_022106C8 + ldr r2, _021E1028 ; =0x000082EA + ldr ip, [r3] + mov r3, #0 + ldr lr, [ip, #0x34] + ldr ip, [ip, #0x38] + subs lr, r0, lr + sbc r0, r1, ip + mov r1, r0, lsl #6 + orr r1, r1, lr, lsr #26 + mov r0, lr, lsl #6 + bl _ll_udiv + ldr r2, _021E102C ; =0x0000EA60 + cmp r1, #0 + cmpeq r0, r2 + addls sp, sp, #4 + ldmlsia sp!, {pc} + ldr r1, _021E1030 ; =0xFFFF1172 + mov r0, #6 + bl MOD04_021E0EAC + ldr r0, _021E1024 ; =UNK04_022106C8 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x30] +_021E101C: + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E1024: .word UNK04_022106C8 +_021E1028: .word 0x000082EA +_021E102C: .word 0x0000EA60 +_021E1030: .word 0xFFFF1172 + arm_func_end MOD04_021E0F1C + + arm_func_start MOD04_021E1034 +MOD04_021E1034: ; 0x021E1034 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _021E106C ; =MOD04_021E0C80 + mov r1, #0 + bl MOD04_021E0A00 + ldr r0, _021E1070 ; =UNK04_022106C8 + mov r3, #1 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #4] + ldr r0, [r0] + str r1, [r0, #0x30] + add sp, sp, #4 + ldmfd sp!, {pc} + .align 2, 0 +_021E106C: .word MOD04_021E0C80 +_021E1070: .word UNK04_022106C8 + arm_func_end MOD04_021E1034 + + arm_func_start MOD04_021E1074 +MOD04_021E1074: ; 0x021E1074 + stmdb sp!, {r4, r5, r6, lr} + ldr ip, _021E10F4 ; =UNK04_022106C8 + mov r6, r1 + mov r5, r2 + mov r1, #0 + mov r2, #0x260 + mov r4, r3 + str r0, [ip] + bl MI_CpuFill8 + ldr r0, _021E10F4 ; =UNK04_022106C8 + mov r2, #0 + ldr r1, [r0] + ldr ip, [sp, #0x10] + str r5, [r1] + ldr r1, [r0] + ldr r5, [sp, #0x14] + str r2, [r1, #4] + ldr r1, [r0] + ldr r3, [sp, #0x18] + str r4, [r1, #8] + ldr r1, [r0] + ldr r2, [sp, #0x1c] + str ip, [r1, #0xc] + ldr r1, [r0] + str r5, [r1, #0x10] + ldr r1, [r0] + str r3, [r1, #0x14] + ldr r1, [r0] + str r2, [r1, #0x18] + ldr r0, [r0] + str r6, [r0, #0x1c] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_021E10F4: .word UNK04_022106C8 + arm_func_end MOD04_021E1074 + + .section .data + + .global UNK_0220D34C +UNK04_0220D34C: ; 0x0220D34C + .byte 0x00, 0x00, 0x00, 0x00 + + .section .bss + + .global UNK04_022106C4 +UNK04_022106C4: ; 0x022106C4 + .space 0x4 + + .global UNK04_022106C8 +UNK04_022106C8: ; 0x022106C8 + .space 0x4 + + .global UNK04_022106CC +UNK04_022106CC: ; 0x022106CC + .space 0x4 |