diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-25 16:52:35 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-25 16:52:35 -0400 |
commit | f0dd1eeed8089f27b1960e96e48f28e46d8bb55b (patch) | |
tree | 7534772dd473aa84e24f7fcc97a13ad3807c0a47 | |
parent | 9879097c8be35c1b85954f3556f3ebd0933c6796 (diff) |
Split libwcm and name routines
-rw-r--r-- | arm9/arm9.lcf | 12 | ||||
-rw-r--r-- | arm9/asm/WCM_aplist.s | 408 | ||||
-rw-r--r-- | arm9/asm/WCM_cpsif.s | 361 | ||||
-rw-r--r-- | arm9/asm/WCM_system.s (renamed from arm9/asm/libwcm.s) | 1999 | ||||
-rw-r--r-- | arm9/asm/WCM_util.s | 156 | ||||
-rw-r--r-- | arm9/global.inc | 38 | ||||
-rw-r--r-- | arm9/modules/04/asm/arm_04.s | 46 | ||||
-rw-r--r-- | arm9/modules/13/asm/module_13_thumb.s | 92 | ||||
-rw-r--r-- | arm9/modules/80/asm/module_80.s | 2 | ||||
-rw-r--r-- | arm9/modules/82/asm/module_82.s | 2 |
10 files changed, 1525 insertions, 1591 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 656f0541..098e71f8 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -451,7 +451,10 @@ SECTIONS { SSL_sha1.o (.text) SSL_rca4.o (.text) SSL_biginteger.o (.text) - libwcm.o (.text) + WCM_system.o (.text) + WCM_aplist.o (.text) + WCM_cpsif.o (.text) + WCM_util.o (.text) libVCT.o (.text) /* Nitro SDK */ FX_mtx22.o (.text) @@ -734,7 +737,7 @@ SECTIONS { SSL_sha1.o (.rodata) SSL_rca4.o (.rodata) SSL_biginteger.o (.rodata) - libwcm.o (.rodata) + WCM_system.o (.rodata) libVCT.o (.rodata) FX_atan.o (.rodata) GX_load3d.o (.rodata) @@ -797,7 +800,6 @@ SECTIONS { SSL_sha1.o (.data) SSL_rca4.o (.data) SSL_biginteger.o (.data) - libwcm.o (.data) libVCT.o (.data) GX.o (.data) OS_irqHandler.o (.data) @@ -889,7 +891,9 @@ SECTIONS { SSL_sha1.o (.bss) SSL_rca4.o (.bss) SSL_biginteger.o (.bss) - libwcm.o (.bss) + WCM_system.o (.bss) + WCM_cpsif.o (.bss) + WCM_util.o (.bss) libVCT.o (.bss) GX.o (.bss) GX_state.o (.bss) diff --git a/arm9/asm/WCM_aplist.s b/arm9/asm/WCM_aplist.s new file mode 100644 index 00000000..69067574 --- /dev/null +++ b/arm9/asm/WCM_aplist.s @@ -0,0 +1,408 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start WcmAppendApList +WcmAppendApList: ; 0x020A7FB0 + stmdb sp!, {r4,lr} + mov r4, r0 + bl WCMi_GetSystemWork + add r1, r0, #0x2000 + cmp r4, #0x0 + ldr r0, [r1, #0x270] + ldmeqia sp!, {r4,lr} + bxeq lr + cmp r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, [r1, #0x274] + cmp r1, #0xc + ldmlsia sp!, {r4,lr} + bxls lr + ldr r3, [r0, #0x4] + cmp r3, #0x0 + beq _020A8040 +_020A7FF8: + cmp r3, r4 + bne _020A8034 + ldr r2, [r3, #0x8] + cmp r2, #0x0 + ldrne r1, [r3, #0xc] + strne r1, [r2, #0xc] + ldreq r1, [r3, #0xc] + streq r1, [r0, #0x4] + ldr r2, [r3, #0xc] + cmp r2, #0x0 + ldrne r1, [r3, #0x8] + strne r1, [r2, #0x8] + ldreq r1, [r3, #0x8] + streq r1, [r0, #0x8] + b _020A8040 +_020A8034: + ldr r3, [r3, #0xc] + cmp r3, #0x0 + bne _020A7FF8 +_020A8040: + mov r1, #0x0 + str r1, [r4, #0xc] + ldr r1, [r0, #0x8] + str r1, [r4, #0x8] + str r4, [r0, #0x8] + ldr r1, [r4, #0x8] + cmp r1, #0x0 + strne r4, [r1, #0xc] + streq r4, [r0, #0x4] + cmp r3, #0x0 + ldreq r1, [r0, #0x0] + streq r1, [r4, #0x4] + ldreq r1, [r0, #0x0] + addeq r1, r1, #0x1 + streq r1, [r0, #0x0] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start WcmSearchIndexedApList +WcmSearchIndexedApList: ; 0x020A8084 + stmdb sp!, {r4,lr} + mov r4, r0 + bl WCMi_GetSystemWork + add r1, r0, #0x2000 + ldr r2, [r1, #0x270] + mov r0, #0x0 + cmp r2, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, [r1, #0x274] + cmp r1, #0xc + ldmlsia sp!, {r4,lr} + bxls lr + ldr r0, [r2, #0x4] + cmp r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr +_020A80C8: + ldr r1, [r0, #0x4] + cmp r1, r4 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r0, [r0, #0xc] + cmp r0, #0x0 + bne _020A80C8 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start WcmSearchApList +WcmSearchApList: ; 0x020A80EC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl WCMi_GetSystemWork + add r0, r0, #0x2000 + cmp r5, #0x0 + mov r4, #0x0 + ldr r1, [r0, #0x270] + addeq sp, sp, #0x4 + moveq r0, r4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + cmp r1, #0x0 + beq _020A8160 + ldr r0, [r0, #0x274] + cmp r0, #0xc + bls _020A8160 + ldr r4, [r1, #0x4] + cmp r4, #0x0 + beq _020A8160 +_020A813C: + add r0, r4, #0x10 + mov r1, r5 + add r0, r0, #0x4 + bl WCM_CompareBssID + cmp r0, #0x0 + bne _020A8160 + ldr r4, [r4, #0xc] + cmp r4, #0x0 + bne _020A813C +_020A8160: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start WcmGetLastApList +WcmGetLastApList: ; 0x020A8170 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl WCMi_GetSystemWork + add r0, r0, #0x2000 + ldr r1, [r0, #0x270] + cmp r1, #0x0 + beq _020A81A4 + ldr r0, [r0, #0x274] + cmp r0, #0xc + addhi sp, sp, #0x4 + ldrhi r0, [r1, #0x4] + ldmhiia sp!, {lr} + bxhi lr +_020A81A4: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start WcmAllocApList +WcmAllocApList: ; 0x020A81B4 + stmdb sp!, {r4,lr} + bl WCMi_GetSystemWork + add r2, r0, #0x2000 + ldr r1, [r2, #0x270] + mov r0, #0x0 + cmp r1, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r3, [r2, #0x274] + cmp r3, #0xc + ldmlsia sp!, {r4,lr} + bxls lr + ldr r2, _020A8294 ; =0x4EC4EC4F + sub r3, r3, #0xc + umull r2, r4, r3, r2 + movs r4, r4, lsr #0x6 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r2, [r1, #0x0] + cmp r4, r2 + ldmlsia sp!, {r4,lr} + bxls lr + mov lr, r0 + cmp r4, #0x0 + bls _020A8240 + add r12, r1, #0xc + mov r2, #0xd0 +_020A8220: + mul r0, lr, r2 + ldrb r3, [r12, r0] + add r0, r12, r0 + cmp r3, #0x0 + beq _020A8240 + add lr, lr, #0x1 + cmp lr, r4 + blo _020A8220 +_020A8240: + cmp lr, r4 + ldmcsia sp!, {r4,lr} + bxcs lr + mov r2, #0x1 + strb r2, [r0, #0x0] + ldr r3, [r1, #0x0] + mov r2, #0x0 + str r3, [r0, #0x4] + str r2, [r0, #0xc] + ldr r2, [r1, #0x8] + str r2, [r0, #0x8] + str r0, [r1, #0x8] + ldr r2, [r0, #0x8] + cmp r2, #0x0 + strne r0, [r2, #0xc] + streq r0, [r1, #0x4] + ldr r2, [r1, #0x0] + add r2, r2, #0x1 + str r2, [r1, #0x0] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A8294: .word 0x4EC4EC4F + + arm_func_start WCMi_EntryApList +WCMi_EntryApList: ; 0x020A8298 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl WCMi_GetSystemWork + movs r7, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + add r0, r7, #0x2000 + ldrb r0, [r0, #0x26a] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldrh r0, [r5, #0x3c] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + add r0, r5, #0x4 + bl WcmSearchApList + movs r6, r0 + bne _020A8300 + bl WcmAllocApList + mov r6, r0 +_020A8300: + cmp r6, #0x0 + bne _020A8320 + add r0, r7, #0x2000 + ldr r0, [r0, #0x278] + cmp r0, #0x1 + bne _020A8320 + bl WcmGetLastApList + mov r6, r0 +_020A8320: + cmp r6, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, r5 + add r1, r6, #0x10 + mov r2, #0xc0 + strh r4, [r6, #0x2] + bl MIi_CpuCopyFast + mov r0, r6 + bl WcmAppendApList + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start WCM_PointApList +WCM_PointApList: ; 0x020A8358 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + bl OS_DisableInterrupts + mov r5, r0 + bl WCMi_GetSystemWork + cmp r0, #0x0 + bne _020A8390 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A8390: + mov r0, r4 + bl WcmSearchIndexedApList + movs r4, r0 + bne _020A83B8 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A83B8: + mov r0, r5 + bl OS_RestoreInterrupts + add r0, r4, #0x10 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start WCM_LockApList +WCM_LockApList: ; 0x020A83D0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + mov r4, r0 + bl WCMi_GetSystemWork + cmp r0, #0x0 + bne _020A8408 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A8408: + cmp r5, #0x0 + beq _020A8434 + add r1, r0, #0x2000 + ldrb r1, [r1, #0x26a] + add r0, r0, #0x2000 + cmp r1, #0x0 + movne r5, #0x1 + mov r1, #0x1 + moveq r5, #0x0 + strb r1, [r0, #0x26a] + b _020A8454 +_020A8434: + add r1, r0, #0x2000 + ldrb r1, [r1, #0x26a] + add r0, r0, #0x2000 + cmp r1, #0x0 + movne r5, #0x1 + mov r1, #0x0 + moveq r5, #0x0 + strb r1, [r0, #0x26a] +_020A8454: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start WCM_CountApList +WCM_CountApList: ; 0x020A846C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + mov r5, r0 + bl WCMi_GetSystemWork + cmp r0, #0x0 + mov r4, #0x0 + bne _020A84A4 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, r4 + ldmia sp!, {r4-r5,lr} + bx lr +_020A84A4: + add r0, r0, #0x2000 + ldr r1, [r0, #0x270] + cmp r1, #0x0 + beq _020A84C0 + ldr r0, [r0, #0x274] + cmp r0, #0xc + ldrhi r4, [r1, #0x0] +_020A84C0: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start WCM_ClearApList +WCM_ClearApList: ; 0x020A84D8 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + mov r4, r0 + bl WCMi_GetSystemWork + cmp r0, #0x0 + bne _020A8500 + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr +_020A8500: + add r1, r0, #0x2000 + ldr r0, [r1, #0x270] + cmp r0, #0x0 + beq _020A8524 + ldr r2, [r1, #0x274] + cmp r2, #0x0 + ble _020A8524 + mov r1, #0x0 + bl MI_CpuFill8 +_020A8524: + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr diff --git a/arm9/asm/WCM_cpsif.s b/arm9/asm/WCM_cpsif.s new file mode 100644 index 00000000..09b72e80 --- /dev/null +++ b/arm9/asm/WCM_cpsif.s @@ -0,0 +1,361 @@ + .include "asm/macros.inc" + .include "global.inc" + + .bss + + .global wcmCpsifw +wcmCpsifw: ; 0x021CA870 + .space 0x2C + + .text + + arm_func_start WcmCpsifUnlockMutexInIRQ +WcmCpsifUnlockMutexInIRQ: ; 0x020A8534 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + ldr r1, _020A858C ; =OS_IrqHandler + cmp r2, r1 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r1, [r0, #0xc] + sub r1, r1, #0x1 + str r1, [r0, #0xc] + ldr r1, [r0, #0xc] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + mov r1, #0x0 + str r1, [r0, #0x8] + bl OS_WakeupThread + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A858C: .word OS_IrqHandler + + arm_func_start WcmCpsifTryLockMutexInIRQ +WcmCpsifTryLockMutexInIRQ: ; 0x020A8590 + ldr r2, [r0, #0x8] + cmp r2, #0x0 + bne _020A85B8 + ldr r1, _020A85D8 ; =OS_IrqHandler + str r1, [r0, #0x8] + ldr r1, [r0, #0xc] + add r1, r1, #0x1 + str r1, [r0, #0xc] + mov r0, #0x1 + bx lr +_020A85B8: + ldr r1, _020A85D8 ; =OS_IrqHandler + cmp r2, r1 + ldreq r1, [r0, #0xc] + addeq r1, r1, #0x1 + streq r1, [r0, #0xc] + moveq r0, #0x1 + movne r0, #0x0 + bx lr + .balign 4 +_020A85D8: .word OS_IrqHandler + + arm_func_start WcmCpsifKACallback +WcmCpsifKACallback: ; 0x020A85DC + ldr ip, _020A85E8 ; =WcmCpsifUnlockMutexInIRQ + ldr r0, _020A85EC ; =wcmCpsifw+0xC + bx r12 + .balign 4 +_020A85E8: .word WcmCpsifUnlockMutexInIRQ +_020A85EC: .word wcmCpsifw+0xC + + arm_func_start WcmCpsifWmCallback +WcmCpsifWmCallback: ; 0x020A85F0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r1, [r0, #0x0] + cmp r1, #0x12 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldrh r2, [r0, #0x2] + ldr r1, _020A863C ; =wcmCpsifw + str r2, [r1, #0x24] + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + bne _020A8628 + bl WCMi_ResetKeepAliveAlarm +_020A8628: + ldr r0, _020A8640 ; =wcmCpsifw+0x4 + bl OS_WakeupThread + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A863C: .word wcmCpsifw +_020A8640: .word wcmCpsifw+0x4 + + arm_func_start WCM_SendDCFData +WCM_SendDCFData: ; 0x020A8644 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + bl OS_DisableInterrupts + mov r5, r0 + bl WCMi_GetSystemWork + cmp r0, #0x0 + bne _020A867C + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr +_020A867C: + ldr r0, _020A87AC ; =wcmCpsifw+0xC + bl OS_LockMutex + bl WCMi_GetSystemWork + movs r4, r0 + bne _020A86AC + ldr r0, _020A87AC ; =wcmCpsifw+0xC + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr +_020A86AC: + add r0, r4, #0x2000 + ldr r1, [r0, #0x260] + cmp r1, #0x9 + bne _020A86C8 + ldrb r0, [r0, #0x26b] + cmp r0, #0x1 + bne _020A86E4 +_020A86C8: + ldr r0, _020A87AC ; =wcmCpsifw+0xC + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x3 + ldmia sp!, {r4-r8,lr} + bx lr +_020A86E4: + mov r0, r7 + mov r2, r6 + add r1, r4, #0xf00 + bl MI_CpuCopy8 + mov r3, r6, lsl #0x10 + ldr r0, _020A87B0 ; =WcmCpsifWmCallback + mov r1, r8 + add r2, r4, #0xf00 + mov r3, r3, lsr #0x10 + bl WM_SetDCFData + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020A873C +_020A8718: ; jump table + b _020A873C ; case 0 + b _020A873C ; case 1 + b _020A8758 ; case 2 + b _020A873C ; case 3 + b _020A873C ; case 4 + b _020A873C ; case 5 + b _020A873C ; case 6 + b _020A873C ; case 7 + b _020A873C ; case 8 +_020A873C: + ldr r0, _020A87AC ; =wcmCpsifw+0xC + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x4 + ldmia sp!, {r4-r8,lr} + bx lr +_020A8758: + ldr r0, _020A87B4 ; =wcmCpsifw+0x4 + bl OS_SleepThread + ldr r0, _020A87B8 ; =wcmCpsifw + ldr r0, [r0, #0x24] + cmp r0, #0x0 + beq _020A8790 + cmp r0, #0x1 + ldr r0, _020A87AC ; =wcmCpsifw+0xC + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x4 + ldmia sp!, {r4-r8,lr} + bx lr +_020A8790: + ldr r0, _020A87AC ; =wcmCpsifw+0xC + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r6 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A87AC: .word wcmCpsifw+0xC +_020A87B0: .word WcmCpsifWmCallback +_020A87B4: .word wcmCpsifw+0x4 +_020A87B8: .word wcmCpsifw + + arm_func_start WCM_SetRecvDCFCallback +WCM_SetRecvDCFCallback: ; 0x020A87BC + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _020A87DC ; =wcmCpsifw + str r4, [r1, #0x28] + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A87DC: .word wcmCpsifw + + arm_func_start WCM_GetApEssid +WCM_GetApEssid: ; 0x020A87E0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, #0x0 + mov r4, r0 + mov r6, r7 + bl WCMi_GetSystemWork + mov r5, r0 + bl OS_DisableInterrupts + cmp r5, #0x0 + beq _020A8830 + add r1, r5, #0x2000 + ldr r2, [r1, #0x260] + cmp r2, #0x9 + bne _020A8830 + ldrb r1, [r1, #0x26b] + cmp r1, #0x0 + addeq r2, r5, #0x2100 + ldreq r1, _020A884C ; =0x0000214C + ldreqh r6, [r2, #0x4a] + addeq r7, r5, r1 +_020A8830: + bl OS_RestoreInterrupts + cmp r4, #0x0 + strneh r6, [r4, #0x0] + mov r0, r7 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020A884C: .word 0x0000214C + + arm_func_start WCM_GetApMacAddress +WCM_GetApMacAddress: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, #0x0 + bl WCMi_GetSystemWork + mov r4, r0 + bl OS_DisableInterrupts + cmp r4, #0x0 + beq _020A8890 + add r1, r4, #0x2000 + ldr r2, [r1, #0x260] + cmp r2, #0x9 + bne _020A8890 + ldrb r1, [r1, #0x26b] + cmp r1, #0x0 + ldreq r1, _020A88A4 ; =0x00002144 + addeq r5, r4, r1 +_020A8890: + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A88A4: .word 0x00002144 + + arm_func_start WCMi_CpsifSendNullPacket +WCMi_CpsifSendNullPacket: ; 0x020A88A8 + stmdb sp!, {r4,lr} + bl WCMi_GetSystemWork + movs r4, r0 + ldmeqia sp!, {r4,lr} + bxeq lr + add r0, r4, #0x2000 + ldr r1, [r0, #0x260] + cmp r1, #0x9 + ldmneia sp!, {r4,lr} + bxne lr + ldrb r0, [r0, #0x26b] + cmp r0, #0x1 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r0, _020A8928 ; =wcmCpsifw+0xC + bl WcmCpsifTryLockMutexInIRQ + cmp r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, _020A892C ; =0x00002144 + ldr r0, _020A8930 ; =WcmCpsifKACallback + add r1, r4, r1 + add r2, r4, #0xf00 + mov r3, #0x0 + bl WM_SetDCFData + cmp r0, #0x2 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r0, _020A8928 ; =wcmCpsifw+0xC + bl WcmCpsifUnlockMutexInIRQ + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A8928: .word wcmCpsifw+0xC +_020A892C: .word 0x00002144 +_020A8930: .word WcmCpsifKACallback + + arm_func_start WCMi_CpsifRecvCallback +WCMi_CpsifRecvCallback: ; 0x020A8934 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020A8978 ; =wcmCpsifw + mov r2, r0 + ldr r12, [r1, #0x28] + cmp r12, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + ldrh r3, [r2, #0x6] + add r0, r2, #0x1e + add r1, r2, #0x18 + add r2, r2, #0x2c + blx r12 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A8978: .word wcmCpsifw + + arm_func_start WCMi_InitCpsif +WCMi_InitCpsif: ; 0x020A897C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020A89C8 ; =wcmCpsifw + ldrb r0, [r1, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r0, _020A89CC ; =wcmCpsifw+0xC + mov r2, #0x0 + mov r3, #0x1 + strb r3, [r1, #0x0] + str r2, [r1, #0x24] + str r2, [r1, #0x8] + str r2, [r1, #0x4] + bl OS_InitMutex + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A89C8: .word wcmCpsifw +_020A89CC: .word wcmCpsifw+0xC diff --git a/arm9/asm/libwcm.s b/arm9/asm/WCM_system.s index 7583bf9e..ff427b90 100644 --- a/arm9/asm/libwcm.s +++ b/arm9/asm/WCM_system.s @@ -3,45 +3,25 @@ .section .rodata - .global UNK_020FF590 -UNK_020FF590: ; 0x020FF590 + .global WCM_Bssid_Any +WCM_Bssid_Any: ; 0x020FF590 .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00 - .global UNK_020FF598 -UNK_020FF598: ; 0x020FF598 + .global WCM_Essid_Any +WCM_Essid_Any: ; 0x020FF598 .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF .bss - .global UNK_021CA86C -UNK_021CA86C: ; 0x021CA86C + .global wcmw +wcmw: ; 0x021CA86C .space 0x4 - .global UNK_021CA870 -UNK_021CA870: ; 0x021CA870 - .space 0x4 - - .global UNK_021CA874 -UNK_021CA874: ; 0x021CA874 - .space 0x8 - - .global UNK_021CA87C -UNK_021CA87C: ; 0x021CA87C - .space 0x20 - - .global UNK_021CA89C -UNK_021CA89C: ; 0x021CA89C - .space 0x4 - - .global UNK_021CA8A0 -UNK_021CA8A0: ; 0x021CA8A0 - .space 0x10 - .text - arm_func_start FUN_020A5A4C -FUN_020A5A4C: ; 0x020A5A4C + arm_func_start WcmCountBits +WcmCountBits: ; 0x020A5A4C mov r1, r0 mov r0, #0x0 mov r3, #0x1 @@ -53,19 +33,19 @@ _020A5A58: add r0, r0, #0x1 b _020A5A58 - arm_func_start FUN_020A5A70 -FUN_020A5A70: ; 0x020A5A70 + arm_func_start WcmCountLeadingZero +WcmCountLeadingZero: ; 0x020A5A70 clz r0, r0 bx lr - arm_func_start FUN_020A5A78 -FUN_020A5A78: ; 0x020A5A78 + arm_func_start WcmWcmbReset +WcmWcmbReset: ; 0x020A5A78 stmdb sp!, {r4,lr} sub sp, sp, #0x8 ldrh r0, [r0, #0x2] cmp r0, #0x0 bne _020A5D80 - ldr r2, _020A5DA8 ; =UNK_021CA86C + ldr r2, _020A5DA8 ; =wcmw mov r0, #0x0 ldr r1, [r2, #0x0] add r1, r1, #0x2000 @@ -79,53 +59,40 @@ FUN_020A5A78: ; 0x020A5A78 cmp r1, #0xd addls pc, pc, r1, lsl #0x2 b _020A5D4C -_020A5AC4: - b _020A5D4C -_020A5AC8: - b _020A5D4C -_020A5ACC: - b _020A5D4C -_020A5AD0: - b _020A5D4C -_020A5AD4: - b _020A5D4C -_020A5AD8: - b _020A5AFC -_020A5ADC: - b _020A5AFC -_020A5AE0: - b _020A5B24 -_020A5AE4: - b _020A5B4C -_020A5AE8: - b _020A5C74 -_020A5AEC: - b _020A5CA4 -_020A5AF0: - b _020A5D4C -_020A5AF4: - b _020A5C74 -_020A5AF8: - b _020A5CD4 +_020A5AC4: ; jump table + b _020A5D4C ; case 0 + b _020A5D4C ; case 1 + b _020A5D4C ; case 2 + b _020A5D4C ; case 3 + b _020A5D4C ; case 4 + b _020A5AFC ; case 5 + b _020A5AFC ; case 6 + b _020A5B24 ; case 7 + b _020A5B4C ; case 8 + b _020A5C74 ; case 9 + b _020A5CA4 ; case 10 + b _020A5D4C ; case 11 + b _020A5C74 ; case 12 + b _020A5CD4 ; case 13 _020A5AFC: mov r0, #0x3 - bl FUN_020A6C38 + bl WcmSetPhase mov r1, #0x0 ldr r3, _020A5DAC ; =0x000008F5 mov r2, r1 mov r0, #0x1 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x8 ldmia sp!, {r4,lr} bx lr _020A5B24: mov r0, #0x3 - bl FUN_020A6C38 + bl WcmSetPhase mov r0, #0x0 ldr r3, _020A5DB0 ; =0x000008FB mov r1, r0 mov r2, r0 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x8 ldmia sp!, {r4,lr} bx lr @@ -155,7 +122,7 @@ _020A5B4C: cmp r1, #0x30000 movne r3, #0x1 add r1, r2, #0x2140 - ldr r0, _020A5DB4 ; =FUN_020A6144 + ldr r0, _020A5DB4 ; =WcmWmcbConnect moveq r3, #0x0 mov r2, #0x0 str r12, [sp, #0x0] @@ -169,71 +136,71 @@ _020A5B4C: cmp r0, #0x8 bne _020A5C14 mov r0, #0xc - bl FUN_020A6C38 - ldr r0, _020A5DA8 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A5DA8 ; =wcmw ldr r3, _020A5DB8 ; =0x0000091C ldr r0, [r0, #0x0] mov r2, r4 add r1, r0, #0x2140 mov r0, #0x1 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x8 ldmia sp!, {r4,lr} bx lr _020A5C14: mov r0, #0xb - bl FUN_020A6C38 - ldr r0, _020A5DA8 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A5DA8 ; =wcmw ldr r3, _020A5DBC ; =0x00000925 ldr r0, [r0, #0x0] mov r2, r4 add r1, r0, #0x2140 mov r0, #0x7 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x8 ldmia sp!, {r4,lr} bx lr _020A5C44: mov r0, #0x3 - bl FUN_020A6C38 - ldr r0, _020A5DA8 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A5DA8 ; =wcmw ldr r3, _020A5DC0 ; =0x0000092D ldr r0, [r0, #0x0] mov r2, r4 add r1, r0, #0x2140 mov r0, #0x1 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x8 ldmia sp!, {r4,lr} bx lr _020A5C74: mov r0, #0x3 - bl FUN_020A6C38 - ldr r0, _020A5DA8 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A5DA8 ; =wcmw ldr r3, _020A5DC4 ; =0x00000935 ldr r1, [r0, #0x0] mov r0, #0x0 add r1, r1, #0x2140 mov r2, #0x1 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x8 ldmia sp!, {r4,lr} bx lr _020A5CA4: mov r0, #0x3 - bl FUN_020A6C38 - ldr r1, _020A5DA8 ; =UNK_021CA86C + bl WcmSetPhase + ldr r1, _020A5DA8 ; =wcmw mov r0, #0x0 ldr r1, [r1, #0x0] ldr r3, _020A5DC8 ; =0x0000093C mov r2, r0 add r1, r1, #0x2140 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x8 ldmia sp!, {r4,lr} bx lr _020A5CD4: - ldr r0, _020A5DCC ; =FUN_020A6768 + ldr r0, _020A5DCC ; =WcmWmcbCommon bl WM_PowerOff cmp r0, #0x2 addeq sp, sp, #0x8 @@ -244,99 +211,95 @@ _020A5CD4: cmp r0, #0x8 bne _020A5D24 mov r0, #0xc - bl FUN_020A6C38 + bl WcmSetPhase mov r1, #0x0 ldr r3, _020A5DD0 ; =0x0000094A mov r2, r1 mov r0, #0x1 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x8 ldmia sp!, {r4,lr} bx lr _020A5D24: mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r1, #0x0 ldr r3, _020A5DD4 ; =0x00000953 mov r2, r1 mov r0, #0x7 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x8 ldmia sp!, {r4,lr} bx lr _020A5D4C: mov r0, #0xb - bl FUN_020A6C38 - ldr r0, _020A5DA8 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A5DA8 ; =wcmw ldr r3, _020A5DD8 ; =0x00000959 ldr r1, [r0, #0x0] mov r0, #0x7 add r1, r1, #0x2000 ldr r2, [r1, #0x260] mov r1, #0x0 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x8 ldmia sp!, {r4,lr} bx lr _020A5D80: mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r1, #0x0 mov r2, r1 mov r0, #0x7 mov r3, #0x960 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x8 ldmia sp!, {r4,lr} bx lr .balign 4 -_020A5DA8: .word UNK_021CA86C +_020A5DA8: .word wcmw _020A5DAC: .word 0x000008F5 _020A5DB0: .word 0x000008FB -_020A5DB4: .word FUN_020A6144 +_020A5DB4: .word WcmWmcbConnect _020A5DB8: .word 0x0000091C _020A5DBC: .word 0x00000925 _020A5DC0: .word 0x0000092D _020A5DC4: .word 0x00000935 _020A5DC8: .word 0x0000093C -_020A5DCC: .word FUN_020A6768 +_020A5DCC: .word WcmWmcbCommon _020A5DD0: .word 0x0000094A _020A5DD4: .word 0x00000953 _020A5DD8: .word 0x00000959 - arm_func_start FUN_020A5DDC -FUN_020A5DDC: ; 0x020A5DDC + arm_func_start WcmWmcbEndDCF +WcmWmcbEndDCF: ; 0x020A5DDC stmdb sp!, {lr} sub sp, sp, #0x4 ldrh r0, [r0, #0x2] cmp r0, #0x4 addls pc, pc, r0, lsl #0x2 b _020A5EF4 -_020A5DF4: - b _020A5E08 -_020A5DF8: - b _020A5EDC -_020A5DFC: - b _020A5EF4 -_020A5E00: - b _020A5EDC -_020A5E04: - b _020A5EF4 +_020A5DF4: ; jump table + b _020A5E08 ; case 0 + b _020A5EDC ; case 1 + b _020A5EF4 ; case 2 + b _020A5EDC ; case 3 + b _020A5EF4 ; case 4 _020A5E08: - ldr r0, _020A5F24 ; =UNK_021CA86C + ldr r0, _020A5F24 ; =wcmw ldr r0, [r0, #0x0] add r0, r0, #0x2000 ldr r0, [r0, #0x260] cmp r0, #0xc bne _020A5E38 mov r0, #0xa - bl FUN_020A6C38 - bl FUN_020A6B28 + bl WcmSetPhase + bl WcmWmReset add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A5E38: - ldr r0, _020A5F28 ; =FUN_020A6058 + ldr r0, _020A5F28 ; =WcmWmcbDisconnect mov r1, #0x0 bl WM_Disconnect cmp r0, #0x2 @@ -348,65 +311,65 @@ _020A5E38: cmp r0, #0x8 bne _020A5EAC mov r0, #0xc - bl FUN_020A6C38 - ldr r0, _020A5F24 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A5F24 ; =wcmw ldr r3, _020A5F2C ; =0x000008B4 ldr r1, [r0, #0x0] mov r0, #0x1 add r1, r1, #0x2140 mov r2, #0x0 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A5E94: mov r0, #0xa - bl FUN_020A6C38 - bl FUN_020A6B28 + bl WcmSetPhase + bl WcmWmReset add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A5EAC: mov r0, #0xb - bl FUN_020A6C38 - ldr r1, _020A5F24 ; =UNK_021CA86C + bl WcmSetPhase + ldr r1, _020A5F24 ; =wcmw mov r0, #0x7 ldr r1, [r1, #0x0] mov r2, #0x0 add r1, r1, #0x2140 mov r3, #0x8c0 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A5EDC: mov r0, #0xa - bl FUN_020A6C38 - bl FUN_020A6B28 + bl WcmSetPhase + bl WcmWmReset add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A5EF4: mov r0, #0xb - bl FUN_020A6C38 - ldr r0, _020A5F24 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A5F24 ; =wcmw ldr r3, _020A5F30 ; =0x000008D3 ldr r1, [r0, #0x0] mov r0, #0x7 add r1, r1, #0x2140 mov r2, #0x0 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr .balign 4 -_020A5F24: .word UNK_021CA86C -_020A5F28: .word FUN_020A6058 +_020A5F24: .word wcmw +_020A5F28: .word WcmWmcbDisconnect _020A5F2C: .word 0x000008B4 _020A5F30: .word 0x000008D3 - arm_func_start FUN_020A5F34 -FUN_020A5F34: ; 0x020A5F34 + arm_func_start WcmWmcbStartDCF +WcmWmcbStartDCF: ; 0x020A5F34 stmdb sp!, {r4,lr} mov r4, r0 ldrh r0, [r4, #0x2] @@ -422,27 +385,27 @@ _020A5F50: beq _020A5FC0 b _020A5FF0 _020A5F68: - ldr r0, _020A6048 ; =UNK_021CA86C + ldr r0, _020A6048 ; =wcmw ldr r0, [r0, #0x0] add r0, r0, #0x2000 ldr r0, [r0, #0x260] cmp r0, #0xc bne _020A5F94 mov r0, #0x8 - bl FUN_020A6C38 - bl FUN_020A6B28 + bl WcmSetPhase + bl WcmWmReset ldmia sp!, {r4,lr} bx lr _020A5F94: mov r0, #0x9 - bl FUN_020A6C38 - ldr r1, _020A6048 ; =UNK_021CA86C + bl WcmSetPhase + ldr r1, _020A6048 ; =wcmw mov r0, #0x0 ldr r1, [r1, #0x0] ldr r3, _020A604C ; =0x00000872 mov r2, r0 add r1, r1, #0x2140 - bl FUN_020A6D3C + bl WcmNotify ldmia sp!, {r4,lr} bx lr _020A5FC0: @@ -450,72 +413,68 @@ _020A5FC0: ldrh r0, [r0, #0xe] mov r0, r0, asr #0x8 and r0, r0, #0xff - bl FUN_020A89D0 + bl WCMi_ShelterRssi ldr r0, [r4, #0x8] mov r1, #0x620 bl DC_InvalidateRange ldr r0, [r4, #0x8] - bl FUN_020A8934 + bl WCMi_CpsifRecvCallback ldmia sp!, {r4,lr} bx lr _020A5FF0: mov r0, #0xb - bl FUN_020A6C38 - ldr r0, _020A6048 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A6048 ; =wcmw ldrh r2, [r4, #0x4] ldr r0, [r0, #0x0] ldr r3, _020A6050 ; =0x00000881 add r1, r0, #0x2140 mov r0, #0x7 - bl FUN_020A6D3C + bl WcmNotify ldmia sp!, {r4,lr} bx lr _020A601C: mov r0, #0xb - bl FUN_020A6C38 - ldr r0, _020A6048 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A6048 ; =wcmw ldr r3, _020A6054 ; =0x0000088C ldr r1, [r0, #0x0] mov r0, #0x7 add r1, r1, #0x2140 mov r2, #0x0 - bl FUN_020A6D3C + bl WcmNotify ldmia sp!, {r4,lr} bx lr .balign 4 -_020A6048: .word UNK_021CA86C +_020A6048: .word wcmw _020A604C: .word 0x00000872 _020A6050: .word 0x00000881 _020A6054: .word 0x0000088C - arm_func_start FUN_020A6058 -FUN_020A6058: ; 0x020A6058 + arm_func_start WcmWmcbDisconnect +WcmWmcbDisconnect: ; 0x020A6058 stmdb sp!, {lr} sub sp, sp, #0x4 ldrh r0, [r0, #0x2] cmp r0, #0x4 addls pc, pc, r0, lsl #0x2 b _020A6108 -_020A6070: - b _020A6084 -_020A6074: - b _020A60F0 -_020A6078: - b _020A6108 -_020A607C: - b _020A60F0 -_020A6080: - b _020A6108 +_020A6070: ; jump table + b _020A6084 ; case 0 + b _020A60F0 ; case 1 + b _020A6108 ; case 2 + b _020A60F0 ; case 3 + b _020A6108 ; case 4 _020A6084: - ldr r0, _020A6138 ; =UNK_021CA86C + ldr r0, _020A6138 ; =wcmw ldr r1, [r0, #0x0] add r0, r1, #0x2000 ldr r0, [r0, #0x260] cmp r0, #0xc bne _020A60B4 mov r0, #0xa - bl FUN_020A6C38 - bl FUN_020A6B28 + bl WcmSetPhase + bl WcmWmReset add sp, sp, #0x4 ldmia sp!, {lr} bx lr @@ -524,100 +483,88 @@ _020A60B4: mov r2, #0x0 mov r0, #0x3 strh r2, [r1, #0x82] - bl FUN_020A6C38 - ldr r1, _020A6138 ; =UNK_021CA86C + bl WcmSetPhase + ldr r1, _020A6138 ; =wcmw mov r0, #0x0 ldr r1, [r1, #0x0] ldr r3, _020A613C ; =0x0000083D mov r2, r0 add r1, r1, #0x2140 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A60F0: mov r0, #0xa - bl FUN_020A6C38 - bl FUN_020A6B28 + bl WcmSetPhase + bl WcmWmReset add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A6108: mov r0, #0xb - bl FUN_020A6C38 - ldr r0, _020A6138 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A6138 ; =wcmw ldr r3, _020A6140 ; =0x0000084F ldr r1, [r0, #0x0] mov r0, #0x7 add r1, r1, #0x2140 mov r2, #0x0 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr .balign 4 -_020A6138: .word UNK_021CA86C +_020A6138: .word wcmw _020A613C: .word 0x0000083D _020A6140: .word 0x0000084F - arm_func_start FUN_020A6144 -FUN_020A6144: ; 0x020A6144 + arm_func_start WcmWmcbConnect +WcmWmcbConnect: ; 0x020A6144 stmdb sp!, {r4,lr} mov r4, r0 ldrh r0, [r4, #0x2] cmp r0, #0xc addls pc, pc, r0, lsl #0x2 b _020A638C -_020A615C: - b _020A6190 -_020A6160: - b _020A6364 -_020A6164: - b _020A638C -_020A6168: - b _020A638C -_020A616C: - b _020A638C -_020A6170: - b _020A638C -_020A6174: - b _020A6378 -_020A6178: - b _020A638C -_020A617C: - b _020A638C -_020A6180: - b _020A638C -_020A6184: - b _020A638C -_020A6188: - b _020A6378 -_020A618C: - b _020A6378 +_020A615C: ; jump table + b _020A6190 ; case 0 + b _020A6364 ; case 1 + b _020A638C ; case 2 + b _020A638C ; case 3 + b _020A638C ; case 4 + b _020A638C ; case 5 + b _020A6378 ; case 6 + b _020A638C ; case 7 + b _020A638C ; case 8 + b _020A638C ; case 9 + b _020A638C ; case 10 + b _020A6378 ; case 11 + b _020A6378 ; case 12 _020A6190: ldrh r0, [r4, #0x8] cmp r0, #0x9 bgt _020A61D0 cmp r0, #0x0 addge pc, pc, r0, lsl #0x2 - b _020A6338 - b _020A6338 - b _020A6338 - b _020A6338 - b _020A6338 - b _020A6338 - b _020A6338 - b _020A63B0 - b _020A6258 - b _020A61E0 - b _020A61E0 + b _020A6338 ; case 0 + b _020A6338 ; case 1 + b _020A6338 ; case 2 + b _020A6338 ; case 3 + b _020A6338 ; case 4 + b _020A6338 ; case 5 + b _020A6338 ; case 6 + b _020A63B0 ; case 7 + b _020A6258 ; case 8 + b _020A61E0 ; case 9 + b _020A61E0 ; case 10 _020A61D0: cmp r0, #0x1a ldmeqia sp!, {r4,lr} bxeq lr b _020A6338 _020A61E0: - ldr r1, _020A63B8 ; =UNK_021CA86C + ldr r1, _020A63B8 ; =wcmw ldr r2, [r1, #0x0] add r0, r2, #0x2000 ldr r0, [r0, #0x260] @@ -625,23 +572,19 @@ _020A61E0: cmp r0, #0x4 addls pc, pc, r0, lsl #0x2 b _020A63B0 -_020A6200: - b _020A6220 -_020A6204: - b _020A6230 -_020A6208: - b _020A6214 -_020A620C: - b _020A63B0 -_020A6210: - b _020A624C +_020A6200: ; jump table + b _020A6220 ; case 0 + b _020A6230 ; case 1 + b _020A6214 ; case 2 + b _020A63B0 ; case 3 + b _020A624C ; case 4 _020A6214: add r0, r2, #0x2200 mov r1, #0x0 strh r1, [r0, #0x82] _020A6220: mov r0, #0xc - bl FUN_020A6C38 + bl WcmSetPhase ldmia sp!, {r4,lr} bx lr _020A6230: @@ -653,19 +596,19 @@ _020A6230: add r0, r0, #0x2200 strh r1, [r0, #0x80] _020A624C: - bl FUN_020A6B28 + bl WcmWmReset ldmia sp!, {r4,lr} bx lr _020A6258: - ldr r1, _020A63B8 ; =UNK_021CA86C + ldr r1, _020A63B8 ; =wcmw ldr r3, [r1, #0x0] add r0, r3, #0x2000 ldr r0, [r0, #0x260] cmp r0, #0xc bne _020A6284 mov r0, #0x8 - bl FUN_020A6C38 - bl FUN_020A6B28 + bl WcmSetPhase + bl WcmWmReset ldmia sp!, {r4,lr} bx lr _020A6284: @@ -678,7 +621,7 @@ _020A6284: add r0, r3, #0x2200 strh r2, [r0, #0x82] ldr r1, [r1, #0x0] - ldr r0, _020A63C0 ; =FUN_020A5F34 + ldr r0, _020A63C0 ; =WcmWmcbStartDCF add r1, r1, #0x1500 mov r2, #0x620 bl WM_StartDCF @@ -690,120 +633,116 @@ _020A6284: cmp r0, #0x8 bne _020A6300 mov r0, #0xc - bl FUN_020A6C38 - ldr r0, _020A63B8 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A63B8 ; =wcmw ldr r3, _020A63C4 ; =0x000007ED ldr r1, [r0, #0x0] mov r0, #0x1 add r1, r1, #0x2140 mov r2, #0x0 - bl FUN_020A6D3C + bl WcmNotify ldmia sp!, {r4,lr} bx lr _020A6300: mov r0, #0xb - bl FUN_020A6C38 - ldr r0, _020A63B8 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A63B8 ; =wcmw ldr r3, _020A63C8 ; =0x000007F6 ldr r1, [r0, #0x0] mov r0, #0x7 add r1, r1, #0x2140 mov r2, #0x0 - bl FUN_020A6D3C + bl WcmNotify ldmia sp!, {r4,lr} bx lr _020A632C: - bl FUN_020A6B28 + bl WcmWmReset ldmia sp!, {r4,lr} bx lr _020A6338: mov r0, #0xb - bl FUN_020A6C38 - ldr r0, _020A63B8 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A63B8 ; =wcmw ldrh r2, [r4, #0x8] ldr r0, [r0, #0x0] ldr r3, _020A63CC ; =0x00000804 add r1, r0, #0x2140 mov r0, #0x7 - bl FUN_020A6D3C + bl WcmNotify ldmia sp!, {r4,lr} bx lr _020A6364: - ldr r0, _020A63B8 ; =UNK_021CA86C + ldr r0, _020A63B8 ; =wcmw ldrh r1, [r4, #0xe] ldr r0, [r0, #0x0] add r0, r0, #0x2200 strh r1, [r0, #0xf8] _020A6378: mov r0, #0x8 - bl FUN_020A6C38 - bl FUN_020A6B28 + bl WcmSetPhase + bl WcmWmReset ldmia sp!, {r4,lr} bx lr _020A638C: mov r0, #0xb - bl FUN_020A6C38 - ldr r0, _020A63B8 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A63B8 ; =wcmw ldr r3, _020A63D0 ; =0x0000081B ldr r1, [r0, #0x0] mov r0, #0x7 add r1, r1, #0x2140 mov r2, #0x0 - bl FUN_020A6D3C + bl WcmNotify _020A63B0: ldmia sp!, {r4,lr} bx lr .balign 4 -_020A63B8: .word UNK_021CA86C +_020A63B8: .word wcmw _020A63BC: .word 0x000007D7 -_020A63C0: .word FUN_020A5F34 +_020A63C0: .word WcmWmcbStartDCF _020A63C4: .word 0x000007ED _020A63C8: .word 0x000007F6 _020A63CC: .word 0x00000804 _020A63D0: .word 0x0000081B - arm_func_start FUN_020A63D4 -FUN_020A63D4: ; 0x020A63D4 + arm_func_start WcmWmcbEndScan +WcmWmcbEndScan: ; 0x020A63D4 stmdb sp!, {lr} sub sp, sp, #0x4 ldrh r0, [r0, #0x2] cmp r0, #0x4 addls pc, pc, r0, lsl #0x2 b _020A6438 -_020A63EC: - b _020A6400 -_020A63F0: - b _020A6428 -_020A63F4: - b _020A6438 -_020A63F8: - b _020A6438 -_020A63FC: - b _020A6438 +_020A63EC: ; jump table + b _020A6400 ; case 0 + b _020A6428 ; case 1 + b _020A6438 ; case 2 + b _020A6438 ; case 3 + b _020A6438 ; case 4 _020A6400: mov r0, #0x3 - bl FUN_020A6C38 + bl WcmSetPhase mov r0, #0x0 ldr r3, _020A6460 ; =0x00000783 mov r1, r0 mov r2, r0 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A6428: - bl FUN_020A6B28 + bl WcmWmReset add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A6438: mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r1, #0x0 ldr r3, _020A6464 ; =0x00000793 mov r2, r1 mov r0, #0x7 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr @@ -811,8 +750,8 @@ _020A6438: _020A6460: .word 0x00000783 _020A6464: .word 0x00000793 - arm_func_start FUN_020A6468 -FUN_020A6468: ; 0x020A6468 + arm_func_start WcmWmcbScanEx +WcmWmcbScanEx: ; 0x020A6468 stmdb sp!, {r4-r8,lr} sub sp, sp, #0x8 mov r5, r0 @@ -821,32 +760,28 @@ FUN_020A6468: ; 0x020A6468 cmp r0, #0x4 addls pc, pc, r0, lsl #0x2 b _020A6714 -_020A6488: - b _020A649C -_020A648C: - b _020A6704 -_020A6490: - b _020A6714 -_020A6494: - b _020A6714 -_020A6498: - b _020A6714 +_020A6488: ; jump table + b _020A649C ; case 0 + b _020A6704 ; case 1 + b _020A6714 ; case 2 + b _020A6714 ; case 3 + b _020A6714 ; case 4 _020A649C: - ldr r0, _020A673C ; =UNK_021CA86C + ldr r0, _020A673C ; =wcmw ldr r0, [r0, #0x0] add r0, r0, #0x2000 ldr r0, [r0, #0x260] cmp r0, #0x5 bne _020A64D0 mov r0, #0x6 - bl FUN_020A6C38 + bl WcmSetPhase mov r0, #0x0 ldr r3, _020A6740 ; =0x00000704 mov r1, r0 mov r2, r0 - bl FUN_020A6D3C + bl WcmNotify _020A64D0: - ldr r1, _020A673C ; =UNK_021CA86C + ldr r1, _020A673C ; =wcmw ldr r2, [r1, #0x0] add r0, r2, #0x2000 ldr r0, [r0, #0x260] @@ -882,20 +817,20 @@ _020A6548: add r2, r5, r4, lsl #0x2 ldrh r1, [r0, #0x50] ldr r0, [r2, #0x10] - bl FUN_020A8298 + bl WCMi_EntryApList str r8, [sp, #0x0] add r0, r5, r4, lsl #0x2 ldr r2, [r0, #0x10] mov r0, r7 mov r1, r6 mov r3, r5 - bl FUN_020A6CE0 + bl WcmNotifyEx ldrh r0, [r5, #0xe] add r4, r4, #0x1 cmp r4, r0 blt _020A6548 _020A6588: - ldr r0, _020A673C ; =UNK_021CA86C + ldr r0, _020A673C ; =wcmw ldr r0, [r0, #0x0] add r0, r0, #0x2000 ldr r1, [r0, #0x264] @@ -904,10 +839,10 @@ _020A6588: bne _020A65F4 ldr r0, _020A6748 ; =0x00003FFE and r0, r1, r0 - bl FUN_020A5A4C + bl WcmCountBits movs r1, r0 beq _020A65F4 - ldr r0, _020A673C ; =UNK_021CA86C + ldr r0, _020A673C ; =wcmw ldr r0, [r0, #0x0] add r0, r0, #0x2000 ldr r6, [r0, #0x284] @@ -921,15 +856,15 @@ _020A6588: mov r3, r1 mov r0, #0x8 str r4, [sp, #0x0] - bl FUN_020A6CE0 + bl WcmNotifyEx _020A65F4: ldrh r0, [r5, #0xa] - bl FUN_020A5A70 + bl WcmCountLeadingZero rsb r0, r0, #0x20 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 - bl FUN_020A6D8C - ldr r1, _020A673C ; =UNK_021CA86C + bl WcmGetNextScanChannel + ldr r1, _020A673C ; =wcmw mov r2, #0x1 mov r2, r2, lsl r0 ldr r0, [r1, #0x0] @@ -942,10 +877,10 @@ _020A65F4: ldrh r1, [r1, #0x8c] ldr r0, [r0, #0x288] bl DC_InvalidateRange - ldr r3, _020A673C ; =UNK_021CA86C + ldr r3, _020A673C ; =wcmw ldr r2, _020A6750 ; =0x00002288 ldr r1, [r3, #0x0] - ldr r0, _020A6754 ; =FUN_020A6468 + ldr r0, _020A6754 ; =WcmWmcbScanEx add r1, r1, #0x2000 ldr r4, [r1, #0x284] add r4, r4, #0x1 @@ -956,12 +891,12 @@ _020A65F4: mov r4, r0 b _020A6694 _020A6674: - ldr r0, _020A6758 ; =FUN_020A63D4 + ldr r0, _020A6758 ; =WcmWmcbEndScan bl WM_EndScan mov r4, r0 b _020A6694 _020A6684: - bl FUN_020A6B28 + bl WcmWmReset add sp, sp, #0x8 ldmia sp!, {r4-r8,lr} bx lr @@ -975,57 +910,57 @@ _020A6694: cmp r4, #0x8 bne _020A66DC mov r0, #0xc - bl FUN_020A6C38 + bl WcmSetPhase mov r1, #0x0 ldr r3, _020A675C ; =0x00000753 mov r2, r1 mov r0, #0x1 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x8 ldmia sp!, {r4-r8,lr} bx lr _020A66DC: mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r1, #0x0 ldr r3, _020A6760 ; =0x0000075C mov r2, r1 mov r0, #0x7 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x8 ldmia sp!, {r4-r8,lr} bx lr _020A6704: - bl FUN_020A6B28 + bl WcmWmReset add sp, sp, #0x8 ldmia sp!, {r4-r8,lr} bx lr _020A6714: mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r1, #0x0 ldr r3, _020A6764 ; =0x0000076D mov r2, r1 mov r0, #0x7 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x8 ldmia sp!, {r4-r8,lr} bx lr .balign 4 -_020A673C: .word UNK_021CA86C +_020A673C: .word wcmw _020A6740: .word 0x00000704 _020A6744: .word 0x0000071A _020A6748: .word 0x00003FFE _020A674C: .word 0x00000728 _020A6750: .word 0x00002288 -_020A6754: .word FUN_020A6468 -_020A6758: .word FUN_020A63D4 +_020A6754: .word WcmWmcbScanEx +_020A6758: .word WcmWmcbEndScan _020A675C: .word 0x00000753 _020A6760: .word 0x0000075C _020A6764: .word 0x0000076D - arm_func_start FUN_020A6768 -FUN_020A6768: ; 0x020A6768 + arm_func_start WcmWmcbCommon +WcmWmcbCommon: ; 0x020A6768 stmdb sp!, {lr} sub sp, sp, #0x4 ldrh r1, [r0, #0x2] @@ -1033,16 +968,12 @@ FUN_020A6768: ; 0x020A6768 cmp r1, #0x4 addls pc, pc, r1, lsl #0x2 b _020A6A0C -_020A6784: - b _020A6798 -_020A6788: - b _020A69CC -_020A678C: - b _020A6A0C -_020A6790: - b _020A6A0C -_020A6794: - b _020A6A0C +_020A6784: ; jump table + b _020A6798 ; case 0 + b _020A69CC ; case 1 + b _020A6A0C ; case 2 + b _020A6A0C ; case 3 + b _020A6A0C ; case 4 _020A6798: ldrh r0, [r0, #0x0] cmp r0, #0x19 @@ -1052,20 +983,14 @@ _020A6798: cmp r0, #0x6 addls pc, pc, r0, lsl #0x2 b _020A692C -_020A67B8: - b _020A692C -_020A67BC: - b _020A692C -_020A67C0: - b _020A692C -_020A67C4: - b _020A67F4 -_020A67C8: - b _020A6804 -_020A67CC: - b _020A6868 -_020A67D0: - b _020A6890 +_020A67B8: ; jump table + b _020A692C ; case 0 + b _020A692C ; case 1 + b _020A692C ; case 2 + b _020A67F4 ; case 3 + b _020A6804 ; case 4 + b _020A6868 ; case 5 + b _020A6890 ; case 6 _020A67D4: cmp r0, #0x1d bgt _020A67E8 @@ -1077,7 +1002,7 @@ _020A67E8: beq _020A68DC b _020A692C _020A67F4: - ldr r0, _020A6A4C ; =FUN_020A6768 + ldr r0, _020A6A4C ; =WcmWmcbCommon bl WM_PowerOn mov r2, r0 b _020A692C @@ -1089,51 +1014,51 @@ _020A6804: b _020A6840 _020A6818: mov r0, #0x1 - bl FUN_020A6C38 + bl WcmSetPhase mov r0, #0x0 ldr r3, _020A6A50 ; =0x00000663 mov r1, r0 mov r2, r0 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A6840: mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r1, #0x0 ldr r3, _020A6A54 ; =0x0000066C mov r2, r1 mov r0, #0x7 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A6868: mov r0, #0x3 - bl FUN_020A6C38 + bl WcmSetPhase mov r0, #0x0 ldr r3, _020A6A58 ; =0x00000673 mov r1, r0 mov r2, r0 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A6890: - ldr r0, _020A6A4C ; =FUN_020A6768 + ldr r0, _020A6A4C ; =WcmWmcbCommon bl WM_Disable mov r2, r0 b _020A692C _020A68A0: - ldr r0, _020A6A4C ; =FUN_020A6768 + ldr r0, _020A6A4C ; =WcmWmcbCommon mov r1, #0x0 bl WM_SetBeaconIndication mov r2, r0 b _020A692C _020A68B4: - ldr r1, _020A6A5C ; =UNK_021CA86C - ldr r0, _020A6A4C ; =FUN_020A6768 + ldr r1, _020A6A5C ; =wcmw + ldr r0, _020A6A4C ; =WcmWmcbCommon ldr r3, [r1, #0x0] add r2, r3, #0x2000 ldrb r1, [r2, #0x250] @@ -1143,7 +1068,7 @@ _020A68B4: mov r2, r0 b _020A692C _020A68DC: - ldr r0, _020A6A5C ; =UNK_021CA86C + ldr r0, _020A6A5C ; =wcmw ldr r2, [r0, #0x0] add r0, r2, #0x2000 ldr r1, [r0, #0x264] @@ -1157,7 +1082,7 @@ _020A68DC: cmp r1, #0x30000 movne r3, #0x1 add r1, r2, #0x2140 - ldr r0, _020A6A60 ; =FUN_020A6144 + ldr r0, _020A6A60 ; =WcmWmcbConnect moveq r3, #0x0 mov r2, #0x0 str r12, [sp, #0x0] @@ -1173,8 +1098,8 @@ _020A692C: cmp r2, #0x8 bne _020A698C mov r0, #0xc - bl FUN_020A6C38 - ldr r0, _020A6A5C ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A6A5C ; =wcmw ldr r3, _020A6A64 ; =0x000006AF ldr r1, [r0, #0x0] mov r2, #0x0 @@ -1184,14 +1109,14 @@ _020A692C: addeq r1, r1, #0x2140 movne r1, #0x0 mov r0, #0x1 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A698C: mov r0, #0xb - bl FUN_020A6C38 - ldr r0, _020A6A5C ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A6A5C ; =wcmw ldr r3, _020A6A68 ; =0x000006B8 ldr r1, [r0, #0x0] mov r2, #0x0 @@ -1201,14 +1126,14 @@ _020A698C: addeq r1, r1, #0x2140 movne r1, #0x0 mov r0, #0x7 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A69CC: mov r0, #0xc - bl FUN_020A6C38 - ldr r0, _020A6A5C ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A6A5C ; =wcmw ldr r3, _020A6A6C ; =0x000006DE ldr r1, [r0, #0x0] mov r2, #0x0 @@ -1218,14 +1143,14 @@ _020A69CC: addeq r1, r1, #0x2140 movne r1, #0x0 mov r0, #0x1 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A6A0C: mov r0, #0xb - bl FUN_020A6C38 - ldr r0, _020A6A5C ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A6A5C ; =wcmw ldr r3, _020A6A70 ; =0x000006E8 ldr r1, [r0, #0x0] mov r2, #0x0 @@ -1235,24 +1160,24 @@ _020A6A0C: addeq r1, r1, #0x2140 movne r1, #0x0 mov r0, #0x7 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr .balign 4 -_020A6A4C: .word FUN_020A6768 +_020A6A4C: .word WcmWmcbCommon _020A6A50: .word 0x00000663 _020A6A54: .word 0x0000066C _020A6A58: .word 0x00000673 -_020A6A5C: .word UNK_021CA86C -_020A6A60: .word FUN_020A6144 +_020A6A5C: .word wcmw +_020A6A60: .word WcmWmcbConnect _020A6A64: .word 0x000006AF _020A6A68: .word 0x000006B8 _020A6A6C: .word 0x000006DE _020A6A70: .word 0x000006E8 - arm_func_start FUN_020A6A74 -FUN_020A6A74: ; 0x020A6A74 + arm_func_start WcmWmcbIndication +WcmWmcbIndication: ; 0x020A6A74 stmdb sp!, {lr} sub sp, sp, #0x4 ldrh r1, [r0, #0x2] @@ -1270,7 +1195,7 @@ FUN_020A6A74: ; 0x020A6A74 addne sp, sp, #0x4 ldmneia sp!, {lr} bxne lr - ldr r0, _020A6B24 ; =UNK_021CA86C + ldr r0, _020A6B24 ; =wcmw ldr r0, [r0, #0x0] add r0, r0, #0x2000 ldr r0, [r0, #0x260] @@ -1278,42 +1203,38 @@ FUN_020A6A74: ; 0x020A6A74 cmp r0, #0x4 addls pc, pc, r0, lsl #0x2 b _020A6B18 -_020A6AD8: - b _020A6AEC -_020A6ADC: - b _020A6B00 -_020A6AE0: - b _020A6B10 -_020A6AE4: - b _020A6B18 -_020A6AE8: - b _020A6B00 +_020A6AD8: ; jump table + b _020A6AEC ; case 0 + b _020A6B00 ; case 1 + b _020A6B10 ; case 2 + b _020A6B18 ; case 3 + b _020A6B00 ; case 4 _020A6AEC: mov r0, #0xc - bl FUN_020A6C38 + bl WcmSetPhase add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A6B00: - bl FUN_020A6B28 + bl WcmWmReset add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A6B10: mov r0, #0xc - bl FUN_020A6C38 + bl WcmSetPhase _020A6B18: add sp, sp, #0x4 ldmia sp!, {lr} bx lr .balign 4 -_020A6B24: .word UNK_021CA86C +_020A6B24: .word wcmw - arm_func_start FUN_020A6B28 -FUN_020A6B28: ; 0x020A6B28 + arm_func_start WcmWmReset +WcmWmReset: ; 0x020A6B28 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r0, _020A6B98 ; =UNK_021CA86C + ldr r0, _020A6B98 ; =wcmw ldr r0, [r0, #0x0] add r1, r0, #0x2000 ldrb r0, [r1, #0x26b] @@ -1321,7 +1242,7 @@ FUN_020A6B28: ; 0x020A6B28 addne sp, sp, #0x4 ldmneia sp!, {lr} bxne lr - ldr r0, _020A6B9C ; =FUN_020A5A78 + ldr r0, _020A6B9C ; =WcmWcmbReset mov r2, #0x1 strb r2, [r1, #0x26b] bl WM_Reset @@ -1330,41 +1251,41 @@ FUN_020A6B28: ; 0x020A6B28 ldmeqia sp!, {lr} bxeq lr mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r1, #0x0 mov r2, r1 mov r0, #0x7 mov r3, #0x610 - bl FUN_020A6D3C + bl WcmNotify add sp, sp, #0x4 ldmia sp!, {lr} bx lr .balign 4 -_020A6B98: .word UNK_021CA86C -_020A6B9C: .word FUN_020A5A78 +_020A6B98: .word wcmw +_020A6B9C: .word WcmWcmbReset - arm_func_start FUN_020A6BA0 -FUN_020A6BA0: ; 0x020A6BA0 + arm_func_start WcmKeepAliveAlarm +WcmKeepAliveAlarm: ; 0x020A6BA0 stmdb sp!, {lr} sub sp, sp, #0x4 - bl FUN_020A88A8 - bl FUN_020A6BBC + bl WCMi_CpsifSendNullPacket + bl WCMi_ResetKeepAliveAlarm add sp, sp, #0x4 ldmia sp!, {lr} bx lr - arm_func_start FUN_020A6BBC -FUN_020A6BBC: ; 0x020A6BBC + arm_func_start WCMi_ResetKeepAliveAlarm +WCMi_ResetKeepAliveAlarm: ; 0x020A6BBC stmdb sp!, {r4,lr} sub sp, sp, #0x8 bl OS_DisableInterrupts - ldr r2, _020A6C28 ; =UNK_021CA86C + ldr r2, _020A6C28 ; =wcmw ldr r1, _020A6C2C ; =0x000022CC ldr r2, [r2, #0x0] mov r4, r0 add r0, r2, r1 bl OS_CancelAlarm - ldr r0, _020A6C28 ; =UNK_021CA86C + ldr r0, _020A6C28 ; =wcmw ldr r12, [r0, #0x0] add r0, r12, #0x2000 ldr r0, [r0, #0x260] @@ -1373,7 +1294,7 @@ FUN_020A6BBC: ; 0x020A6BBC ldr r0, _020A6C2C ; =0x000022CC ldr r1, _020A6C30 ; =0x022F5341 mov r2, #0x0 - ldr r3, _020A6C34 ; =FUN_020A6BA0 + ldr r3, _020A6C34 ; =WcmKeepAliveAlarm add r0, r12, r0 str r2, [sp, #0x0] bl OS_SetAlarm @@ -1384,18 +1305,18 @@ _020A6C14: ldmia sp!, {r4,lr} bx lr .balign 4 -_020A6C28: .word UNK_021CA86C +_020A6C28: .word wcmw _020A6C2C: .word 0x000022CC _020A6C30: .word 0x022F5341 -_020A6C34: .word FUN_020A6BA0 +_020A6C34: .word WcmKeepAliveAlarm - arm_func_start FUN_020A6C38 -FUN_020A6C38: + arm_func_start WcmSetPhase +WcmSetPhase: stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 bl OS_DisableInterrupts - ldr r1, _020A6CD0 ; =UNK_021CA86C + ldr r1, _020A6CD0 ; =wcmw mov r4, r0 ldr r1, [r1, #0x0] add r0, r1, #0x2000 @@ -1408,7 +1329,7 @@ FUN_020A6C38: add r0, r1, r0 bl OS_CancelAlarm _020A6C78: - ldr r0, _020A6CD0 ; =UNK_021CA86C + ldr r0, _020A6CD0 ; =wcmw ldr r0, [r0, #0x0] add r0, r0, #0x2000 ldr r1, [r0, #0x260] @@ -1417,12 +1338,12 @@ _020A6C78: cmp r5, #0x9 bne _020A6CBC mov r2, #0x0 - ldr r0, _020A6CD0 ; =UNK_021CA86C + ldr r0, _020A6CD0 ; =wcmw str r2, [sp, #0x0] ldr r5, [r0, #0x0] ldr r0, _020A6CD4 ; =0x000022CC ldr r1, _020A6CD8 ; =0x022F5341 - ldr r3, _020A6CDC ; =FUN_020A6BA0 + ldr r3, _020A6CDC ; =WcmKeepAliveAlarm add r0, r5, r0 bl OS_SetAlarm _020A6CBC: @@ -1432,16 +1353,16 @@ _020A6CBC: ldmia sp!, {r4-r5,lr} bx lr .balign 4 -_020A6CD0: .word UNK_021CA86C +_020A6CD0: .word wcmw _020A6CD4: .word 0x000022CC _020A6CD8: .word 0x022F5341 -_020A6CDC: .word FUN_020A6BA0 +_020A6CDC: .word WcmKeepAliveAlarm - arm_func_start FUN_020A6CE0 -FUN_020A6CE0: ; 0x020A6CE0 + arm_func_start WcmNotifyEx +WcmNotifyEx: ; 0x020A6CE0 stmdb sp!, {lr} sub sp, sp, #0x14 - ldr ip, _020A6D38 ; =UNK_021CA86C + ldr ip, _020A6D38 ; =wcmw ldr r12, [r12, #0x0] add r12, r12, #0x2000 ldr lr, [r12, #0x27c] @@ -1462,13 +1383,13 @@ FUN_020A6CE0: ; 0x020A6CE0 ldmia sp!, {lr} bx lr .balign 4 -_020A6D38: .word UNK_021CA86C +_020A6D38: .word wcmw - arm_func_start FUN_020A6D3C -FUN_020A6D3C: ; 0x020A6D3C + arm_func_start WcmNotify +WcmNotify: ; 0x020A6D3C stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 - ldr ip, _020A6D88 ; =UNK_021CA86C + ldr ip, _020A6D88 ; =wcmw mov r5, r0 ldr r0, [r12, #0x0] mov r4, r1 @@ -1481,17 +1402,17 @@ FUN_020A6D3C: ; 0x020A6D3C mov r1, r5 mov r2, r4 mov r3, lr - bl FUN_020A6CE0 + bl WcmNotifyEx add sp, sp, #0x4 ldmia sp!, {r4-r5,lr} bx lr .balign 4 -_020A6D88: .word UNK_021CA86C +_020A6D88: .word wcmw - arm_func_start FUN_020A6D8C -FUN_020A6D8C: ; 0x020A6D8C + arm_func_start WcmGetNextScanChannel +WcmGetNextScanChannel: ; 0x020A6D8C stmdb sp!, {r4-r6,lr} - ldr r1, _020A6E24 ; =UNK_021CA86C + ldr r1, _020A6E24 ; =wcmw mov r2, r0 ldr r1, [r1, #0x0] mov r3, #0x0 @@ -1531,31 +1452,31 @@ _020A6DEC: ldmia sp!, {r4-r6,lr} bx lr .balign 4 -_020A6E24: .word UNK_021CA86C +_020A6E24: .word wcmw _020A6E28: .word 0x4EC4EC4F _020A6E2C: .word 0x0000000D - arm_func_start FUN_020A6E30 -FUN_020A6E30: ; 0x020A6E30 - ldr r0, _020A6E48 ; =UNK_021CA86C + arm_func_start WcmInitOption +WcmInitOption: ; 0x020A6E30 + ldr r0, _020A6E48 ; =wcmw ldr r1, _020A6E4C ; =0x00AAA082 ldr r0, [r0, #0x0] add r0, r0, #0x2000 str r1, [r0, #0x264] bx lr .balign 4 -_020A6E48: .word UNK_021CA86C +_020A6E48: .word wcmw _020A6E4C: .word 0x00AAA082 - arm_func_start FUN_020A6E50 -FUN_020A6E50: ; 0x020A6E50 + arm_func_start WcmEditScanExParam +WcmEditScanExParam: ; 0x020A6E50 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 mov r0, r2 mov r4, r1 - bl FUN_020A7148 - ldr r2, _020A6FF4 ; =UNK_021CA86C + bl WCM_UpdateOption + ldr r2, _020A6FF4 ; =wcmw mov r3, #0x400 ldr r1, [r2, #0x0] mov r0, #0x0 @@ -1565,8 +1486,8 @@ FUN_020A6E50: ; 0x020A6E50 ldr r1, [r2, #0x0] add r1, r1, #0x2200 strh r3, [r1, #0x8c] - bl FUN_020A6D8C - ldr r1, _020A6FF4 ; =UNK_021CA86C + bl WcmGetNextScanChannel + ldr r1, _020A6FF4 ; =wcmw mov r2, #0x1 mov r2, r2, lsl r0 ldr r0, [r1, #0x0] @@ -1580,7 +1501,7 @@ FUN_020A6E50: ; 0x020A6E50 bne _020A6EC8 bl WM_GetDispersionScanPeriod _020A6EC8: - ldr r2, _020A6FF4 ; =UNK_021CA86C + ldr r2, _020A6FF4 ; =wcmw ldr r1, [r2, #0x0] add r1, r1, #0x2200 strh r0, [r1, #0x90] @@ -1595,16 +1516,16 @@ _020A6EC8: strh r2, [r0, #0x98] cmp r5, #0x0 bne _020A6F24 - ldr r0, _020A6FF4 ; =UNK_021CA86C + ldr r0, _020A6FF4 ; =wcmw ldr r1, _020A6FF8 ; =0x00002292 ldr r2, [r0, #0x0] - ldr r0, _020A6FFC ; =UNK_020FF590 + ldr r0, _020A6FFC ; =WCM_Bssid_Any add r1, r2, r1 mov r2, #0x6 bl MI_CpuCopy8 b _020A6F40 _020A6F24: - ldr r0, _020A6FF4 ; =UNK_021CA86C + ldr r0, _020A6FF4 ; =wcmw ldr r1, _020A6FF8 ; =0x00002292 ldr r2, [r0, #0x0] mov r0, r5 @@ -1614,25 +1535,25 @@ _020A6F24: _020A6F40: cmp r4, #0x0 beq _020A6F54 - ldr r0, _020A7000 ; =UNK_020FF598 + ldr r0, _020A7000 ; =WCM_Essid_Any cmp r4, r0 bne _020A6F88 _020A6F54: - ldr r0, _020A6FF4 ; =UNK_021CA86C + ldr r0, _020A6FF4 ; =wcmw ldr r1, _020A7004 ; =0x0000229C ldr r2, [r0, #0x0] - ldr r0, _020A7000 ; =UNK_020FF598 + ldr r0, _020A7000 ; =WCM_Essid_Any add r1, r2, r1 mov r2, #0x20 bl MI_CpuCopy8 - ldr r0, _020A6FF4 ; =UNK_021CA86C + ldr r0, _020A6FF4 ; =wcmw mov r1, #0x0 ldr r0, [r0, #0x0] add r0, r0, #0x2200 strh r1, [r0, #0x9a] b _020A6FD4 _020A6F88: - ldr r0, _020A6FF4 ; =UNK_021CA86C + ldr r0, _020A6FF4 ; =wcmw ldr r1, _020A7004 ; =0x0000229C ldr r2, [r0, #0x0] mov r0, r4 @@ -1649,12 +1570,12 @@ _020A6FA8: add r4, r4, #0x1 blt _020A6FA8 _020A6FC4: - ldr r0, _020A6FF4 ; =UNK_021CA86C + ldr r0, _020A6FF4 ; =wcmw ldr r0, [r0, #0x0] add r0, r0, #0x2200 strh r1, [r0, #0x9a] _020A6FD4: - ldr r0, _020A6FF4 ; =UNK_021CA86C + ldr r0, _020A6FF4 ; =wcmw mov r1, #0x0 ldr r0, [r0, #0x0] add r0, r0, #0x2000 @@ -1663,20 +1584,20 @@ _020A6FD4: ldmia sp!, {r4-r5,lr} bx lr .balign 4 -_020A6FF4: .word UNK_021CA86C +_020A6FF4: .word wcmw _020A6FF8: .word 0x00002292 -_020A6FFC: .word UNK_020FF590 -_020A7000: .word UNK_020FF598 +_020A6FFC: .word WCM_Bssid_Any +_020A7000: .word WCM_Essid_Any _020A7004: .word 0x0000229C - arm_func_start FUN_020A7008 -FUN_020A7008: ; 0x020A7008 + arm_func_start WcmConfigure +WcmConfigure: ; 0x020A7008 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 movs r5, r0 mov r4, r1 bne _020A705C - ldr r1, _020A7134 ; =UNK_021CA86C + ldr r1, _020A7134 ; =wcmw mov r3, #0x3 ldr r0, [r1, #0x0] mov r2, #0x0 @@ -1693,7 +1614,7 @@ FUN_020A7008: ; 0x020A7008 str r2, [r0, #0x278] b _020A7118 _020A705C: - ldr r1, _020A7134 ; =UNK_021CA86C + ldr r1, _020A7134 ; =wcmw ldr r2, [r5, #0x0] ldr r0, [r1, #0x0] and r2, r2, #0x3 @@ -1737,13 +1658,13 @@ _020A70B4: ldr r2, [r2, #0x274] bl MI_CpuFill8 _020A7104: - ldr r0, _020A7134 ; =UNK_021CA86C + ldr r0, _020A7134 ; =wcmw ldr r1, [r5, #0xc] ldr r0, [r0, #0x0] add r0, r0, #0x2000 str r1, [r0, #0x278] _020A7118: - ldr r0, _020A7134 ; =UNK_021CA86C + ldr r0, _020A7134 ; =wcmw ldr r0, [r0, #0x0] add r0, r0, #0x2000 str r4, [r0, #0x27c] @@ -1751,23 +1672,23 @@ _020A7118: ldmia sp!, {r4-r5,lr} bx lr .balign 4 -_020A7134: .word UNK_021CA86C +_020A7134: .word wcmw - arm_func_start FUN_020A7138 -FUN_020A7138: - ldr r0, _020A7144 ; =UNK_021CA86C + arm_func_start WCMi_GetSystemWork +WCMi_GetSystemWork: + ldr r0, _020A7144 ; =wcmw ldr r0, [r0, #0x0] bx lr .balign 4 -_020A7144: .word UNK_021CA86C +_020A7144: .word wcmw - arm_func_start FUN_020A7148 -FUN_020A7148: ; 0x020A7148 + arm_func_start WCM_UpdateOption +WCM_UpdateOption: ; 0x020A7148 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 bl OS_DisableInterrupts - ldr r1, _020A71EC ; =UNK_021CA86C + ldr r1, _020A71EC ; =wcmw mov r2, #0x0 ldr r1, [r1, #0x0] add r3, r1, #0x2000 @@ -1807,15 +1728,15 @@ _020A71A4: ldmia sp!, {r4-r5,lr} bx lr .balign 4 -_020A71EC: .word UNK_021CA86C +_020A71EC: .word wcmw _020A71F0: .word 0x00003FFE _020A71F4: .word 0x0000A082 - arm_func_start FUN_020A71F8 -FUN_020A71F8: ; 0x020A71F8 + arm_func_start WCM_GetPhase +WCM_GetPhase: ; 0x020A71F8 stmdb sp!, {r4,lr} bl OS_DisableInterrupts - ldr r1, _020A7228 ; =UNK_021CA86C + ldr r1, _020A7228 ; =wcmw mov r4, #0x0 ldr r1, [r1, #0x0] cmp r1, #0x0 @@ -1826,14 +1747,14 @@ FUN_020A71F8: ; 0x020A71F8 ldmia sp!, {r4,lr} bx lr .balign 4 -_020A7228: .word UNK_021CA86C +_020A7228: .word wcmw - arm_func_start FUN_020A722C -FUN_020A722C: ; 0x020A722C + arm_func_start WCM_TerminateAsync +WCM_TerminateAsync: ; 0x020A722C stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 bl OS_DisableInterrupts - ldr r1, _020A747C ; =UNK_021CA86C + ldr r1, _020A747C ; =wcmw mov r4, r0 ldr r1, [r1, #0x0] cmp r1, #0x0 @@ -1849,34 +1770,21 @@ _020A7260: cmp r2, #0xd addls pc, pc, r2, lsl #0x2 b _020A7308 -_020A7274: - b _020A7308 -_020A7278: - b _020A72C0 -_020A727C: - b _020A7308 -_020A7280: - b _020A7320 -_020A7284: - b _020A7308 -_020A7288: - b _020A7308 -_020A728C: - b _020A72D4 -_020A7290: - b _020A7308 -_020A7294: - b _020A7308 -_020A7298: - b _020A7320 -_020A729C: - b _020A7308 -_020A72A0: - b _020A7308 -_020A72A4: - b _020A7320 -_020A72A8: - b _020A72AC +_020A7274: ; jump table + b _020A7308 ; case 0 + b _020A72C0 ; case 1 + b _020A7308 ; case 2 + b _020A7320 ; case 3 + b _020A7308 ; case 4 + b _020A7308 ; case 5 + b _020A72D4 ; case 6 + b _020A7308 ; case 7 + b _020A7308 ; case 8 + b _020A7320 ; case 9 + b _020A7308 ; case 10 + b _020A7308 ; case 11 + b _020A7320 ; case 12 + b _020A72AC ; case 13 _020A72AC: bl OS_RestoreInterrupts add sp, sp, #0x4 @@ -1891,8 +1799,8 @@ _020A72C0: bx lr _020A72D4: mov r0, #0xd - bl FUN_020A6C38 - ldr r1, _020A747C ; =UNK_021CA86C + bl WcmSetPhase + ldr r1, _020A747C ; =wcmw mov r0, r4 ldr r1, [r1, #0x0] mov r2, #0x9 @@ -1915,8 +1823,8 @@ _020A7320: cmp r0, #0x1 bne _020A734C mov r0, #0xd - bl FUN_020A6C38 - ldr r0, _020A747C ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A747C ; =wcmw mov r1, #0x9 ldr r0, [r0, #0x0] add r0, r0, #0x2200 @@ -1940,8 +1848,8 @@ _020A737C: cmp r0, #0x0 bne _020A73F0 mov r0, #0x1 - bl FUN_020A6C38 - ldr r1, _020A747C ; =UNK_021CA86C + bl WcmSetPhase + ldr r1, _020A747C ; =wcmw mov r0, r4 ldr r1, [r1, #0x0] mov r2, #0x0 @@ -1953,16 +1861,16 @@ _020A737C: ldmia sp!, {r4-r5,lr} bx lr _020A73BC: - ldr r0, _020A7480 ; =FUN_020A6768 + ldr r0, _020A7480 ; =WcmWmcbCommon bl WM_Disable b _020A73F0 _020A73C8: - ldr r0, _020A7480 ; =FUN_020A6768 + ldr r0, _020A7480 ; =WcmWmcbCommon bl WM_PowerOff b _020A73F0 _020A73D4: - ldr r1, _020A747C ; =UNK_021CA86C - ldr r0, _020A7484 ; =FUN_020A5A78 + ldr r1, _020A747C ; =wcmw + ldr r0, _020A7484 ; =WcmWcmbReset ldr r1, [r1, #0x0] mov r2, #0x1 add r1, r1, #0x2000 @@ -1978,8 +1886,8 @@ _020A73F0: b _020A7444 _020A740C: mov r0, #0xd - bl FUN_020A6C38 - ldr r0, _020A747C ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A747C ; =wcmw mov r1, #0x9 ldr r0, [r0, #0x0] add r0, r0, #0x2200 @@ -1994,7 +1902,7 @@ _020A742C: bx lr _020A7444: mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r0, r4 bl OS_RestoreInterrupts add sp, sp, #0x4 @@ -2009,15 +1917,15 @@ _020A7464: ldmia sp!, {r4-r5,lr} bx lr .balign 4 -_020A747C: .word UNK_021CA86C -_020A7480: .word FUN_020A6768 -_020A7484: .word FUN_020A5A78 +_020A747C: .word wcmw +_020A7480: .word WcmWmcbCommon +_020A7484: .word WcmWcmbReset - arm_func_start FUN_020A7488 -FUN_020A7488: ; 0x020A7488 + arm_func_start WCM_DisconnectAsync +WCM_DisconnectAsync: ; 0x020A7488 stmdb sp!, {r4,lr} bl OS_DisableInterrupts - ldr r1, _020A75B8 ; =UNK_021CA86C + ldr r1, _020A75B8 ; =wcmw mov r4, r0 ldr r1, [r1, #0x0] cmp r1, #0x0 @@ -2054,15 +1962,15 @@ _020A7504: cmp r0, #0x1 bne _020A7530 mov r0, #0xa - bl FUN_020A6C38 - ldr r0, _020A75B8 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A75B8 ; =wcmw mov r1, #0x6 ldr r0, [r0, #0x0] add r0, r0, #0x2200 strh r1, [r0, #0x80] b _020A75A4 _020A7530: - ldr r0, _020A75BC ; =FUN_020A5DDC + ldr r0, _020A75BC ; =WcmWmcbEndDCF bl WM_EndDCF cmp r0, #0x2 beq _020A7554 @@ -2073,8 +1981,8 @@ _020A7530: b _020A7588 _020A7554: mov r0, #0xa - bl FUN_020A6C38 - ldr r0, _020A75B8 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A75B8 ; =wcmw mov r1, #0x6 ldr r0, [r0, #0x0] add r0, r0, #0x2200 @@ -2088,7 +1996,7 @@ _020A7574: bx lr _020A7588: mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r0, r4 bl OS_RestoreInterrupts mov r0, #0x7 @@ -2101,18 +2009,18 @@ _020A75A4: ldmia sp!, {r4,lr} bx lr .balign 4 -_020A75B8: .word UNK_021CA86C -_020A75BC: .word FUN_020A5DDC +_020A75B8: .word wcmw +_020A75BC: .word WcmWmcbEndDCF - arm_func_start FUN_020A75C0 -FUN_020A75C0: ; 0x020A75C0 + arm_func_start WCM_ConnectAsync +WCM_ConnectAsync: ; 0x020A75C0 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r7, r0 mov r6, r1 mov r5, r2 bl OS_DisableInterrupts - ldr r2, _020A7814 ; =UNK_021CA86C + ldr r2, _020A7814 ; =wcmw mov r4, r0 ldr r12, [r2, #0x0] cmp r12, #0x0 @@ -2193,20 +2101,20 @@ _020A76E8: mov r2, #0x52 bl MI_CpuFill8 _020A76F8: - ldr r1, _020A7814 ; =UNK_021CA86C + ldr r1, _020A7814 ; =wcmw mov r0, r7 ldr r1, [r1, #0x0] mov r2, #0xc0 add r1, r1, #0x2140 bl MI_CpuCopy8 - ldr r1, _020A7814 ; =UNK_021CA86C + ldr r1, _020A7814 ; =wcmw mov r0, r5 ldr r1, [r1, #0x0] add r1, r1, #0x2100 ldrh r2, [r1, #0x6e] orr r2, r2, #0x3 strh r2, [r1, #0x70] - bl FUN_020A7148 + bl WCM_UpdateOption b _020A7770 _020A7734: bl OS_RestoreInterrupts @@ -2228,7 +2136,7 @@ _020A775C: bx lr _020A7770: ldr r1, _020A7818 ; =0x0000FFFF - ldr r0, _020A781C ; =FUN_020A6768 + ldr r0, _020A781C ; =WcmWmcbCommon mov r3, r1 mov r2, #0x50 str r1, [sp, #0x0] @@ -2242,8 +2150,8 @@ _020A7770: b _020A77DC _020A77A4: mov r0, #0x8 - bl FUN_020A6C38 - ldr r0, _020A7814 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A7814 ; =wcmw mov r1, #0x5 ldr r0, [r0, #0x0] add r0, r0, #0x2200 @@ -2258,7 +2166,7 @@ _020A77C4: bx lr _020A77DC: mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r0, r4 bl OS_RestoreInterrupts add sp, sp, #0x4 @@ -2273,15 +2181,15 @@ _020A77FC: ldmia sp!, {r4-r7,lr} bx lr .balign 4 -_020A7814: .word UNK_021CA86C +_020A7814: .word wcmw _020A7818: .word 0x0000FFFF -_020A781C: .word FUN_020A6768 +_020A781C: .word WcmWmcbCommon - arm_func_start FUN_020A7820 -FUN_020A7820: ; 0x020A7820 + arm_func_start WCM_EndSearchAsync +WCM_EndSearchAsync: ; 0x020A7820 stmdb sp!, {r4,lr} bl OS_DisableInterrupts - ldr r1, _020A78D4 ; =UNK_021CA86C + ldr r1, _020A78D4 ; =wcmw mov r4, r0 ldr r1, [r1, #0x0] cmp r1, #0x0 @@ -2302,8 +2210,8 @@ _020A784C: b _020A78B0 _020A7870: mov r0, #0x7 - bl FUN_020A6C38 - ldr r0, _020A78D4 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A78D4 ; =wcmw mov r1, #0x4 ldr r0, [r0, #0x0] add r0, r0, #0x2200 @@ -2331,17 +2239,17 @@ _020A78C0: ldmia sp!, {r4,lr} bx lr .balign 4 -_020A78D4: .word UNK_021CA86C +_020A78D4: .word wcmw - arm_func_start FUN_020A78D8 -FUN_020A78D8: ; 0x020A78D8 + arm_func_start WCM_BeginSearchAsync +WCM_BeginSearchAsync: ; 0x020A78D8 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r7, r0 mov r6, r1 mov r5, r2 bl OS_DisableInterrupts - ldr r1, _020A7A84 ; =UNK_021CA86C + ldr r1, _020A7A84 ; =wcmw mov r4, r0 ldr r1, [r1, #0x0] cmp r1, #0x0 @@ -2365,7 +2273,7 @@ _020A793C: mov r0, r7 mov r1, r6 mov r2, r5 - bl FUN_020A6E50 + bl WcmEditScanExParam mov r0, r4 bl OS_RestoreInterrupts add sp, sp, #0x4 @@ -2376,7 +2284,7 @@ _020A7964: mov r0, r7 mov r1, r6 mov r2, r5 - bl FUN_020A6E50 + bl WcmEditScanExParam mov r0, r4 bl OS_RestoreInterrupts add sp, sp, #0x4 @@ -2393,18 +2301,18 @@ _020A79A0: mov r0, r7 mov r1, r6 mov r2, r5 - bl FUN_020A6E50 - ldr r0, _020A7A84 ; =UNK_021CA86C + bl WcmEditScanExParam + ldr r0, _020A7A84 ; =wcmw ldr r0, [r0, #0x0] add r1, r0, #0x2200 add r0, r0, #0x2000 ldrh r1, [r1, #0x8c] ldr r0, [r0, #0x288] bl DC_InvalidateRange - ldr r3, _020A7A84 ; =UNK_021CA86C + ldr r3, _020A7A84 ; =wcmw ldr r2, _020A7A88 ; =0x00002288 ldr r1, [r3, #0x0] - ldr r0, _020A7A8C ; =FUN_020A6468 + ldr r0, _020A7A8C ; =WcmWmcbScanEx add r1, r1, #0x2000 ldr r5, [r1, #0x284] add r5, r5, #0x1 @@ -2421,8 +2329,8 @@ _020A79A0: b _020A7A4C _020A7A14: mov r0, #0x5 - bl FUN_020A6C38 - ldr r0, _020A7A84 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A7A84 ; =wcmw mov r1, #0x3 ldr r0, [r0, #0x0] add r0, r0, #0x2200 @@ -2437,7 +2345,7 @@ _020A7A34: bx lr _020A7A4C: mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r0, r4 bl OS_RestoreInterrupts add sp, sp, #0x4 @@ -2452,12 +2360,12 @@ _020A7A6C: ldmia sp!, {r4-r7,lr} bx lr .balign 4 -_020A7A84: .word UNK_021CA86C +_020A7A84: .word wcmw _020A7A88: .word 0x00002288 -_020A7A8C: .word FUN_020A6468 +_020A7A8C: .word WcmWmcbScanEx - arm_func_start FUN_020A7A90 -FUN_020A7A90: ; 0x020A7A90 + arm_func_start WCM_SearchAsync +WCM_SearchAsync: ; 0x020A7A90 stmdb sp!, {lr} sub sp, sp, #0x4 cmp r0, #0x0 @@ -2465,21 +2373,21 @@ FUN_020A7A90: ; 0x020A7A90 cmp r1, #0x0 bne _020A7AB8 _020A7AA8: - bl FUN_020A7820 + bl WCM_EndSearchAsync add sp, sp, #0x4 ldmia sp!, {lr} bx lr _020A7AB8: - bl FUN_020A78D8 + bl WCM_BeginSearchAsync add sp, sp, #0x4 ldmia sp!, {lr} bx lr - arm_func_start FUN_020A7AC8 -FUN_020A7AC8: ; 0x020A7AC8 + arm_func_start WCM_CleanupAsync +WCM_CleanupAsync: ; 0x020A7AC8 stmdb sp!, {r4,lr} bl OS_DisableInterrupts - ldr r1, _020A7BCC ; =UNK_021CA86C + ldr r1, _020A7BCC ; =wcmw mov r4, r0 ldr r1, [r1, #0x0] cmp r1, #0x0 @@ -2512,7 +2420,7 @@ _020A7B34: ldmia sp!, {r4,lr} bx lr _020A7B44: - ldr r0, _020A7BD0 ; =FUN_020A6768 + ldr r0, _020A7BD0 ; =WcmWmcbCommon bl WM_PowerOff cmp r0, #0x2 beq _020A7B68 @@ -2523,8 +2431,8 @@ _020A7B44: b _020A7B9C _020A7B68: mov r0, #0x4 - bl FUN_020A6C38 - ldr r0, _020A7BCC ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A7BCC ; =wcmw mov r1, #0x2 ldr r0, [r0, #0x0] add r0, r0, #0x2200 @@ -2538,7 +2446,7 @@ _020A7B88: bx lr _020A7B9C: mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r0, r4 bl OS_RestoreInterrupts mov r0, #0x7 @@ -2551,16 +2459,16 @@ _020A7BB8: ldmia sp!, {r4,lr} bx lr .balign 4 -_020A7BCC: .word UNK_021CA86C -_020A7BD0: .word FUN_020A6768 +_020A7BCC: .word wcmw +_020A7BD0: .word WcmWmcbCommon - arm_func_start FUN_020A7BD4 -FUN_020A7BD4: ; 0x020A7BD4 + arm_func_start WCM_StartupAsync +WCM_StartupAsync: ; 0x020A7BD4 stmdb sp!, {r4-r6,lr} mov r6, r0 mov r5, r1 bl OS_DisableInterrupts - ldr r1, _020A7E00 ; =UNK_021CA86C + ldr r1, _020A7E00 ; =wcmw mov r4, r0 ldr r1, [r1, #0x0] cmp r1, #0x0 @@ -2582,7 +2490,7 @@ _020A7C08: _020A7C2C: mov r0, r6 mov r1, r5 - bl FUN_020A7008 + bl WcmConfigure b _020A7C6C _020A7C3C: bl OS_RestoreInterrupts @@ -2600,7 +2508,7 @@ _020A7C5C: ldmia sp!, {r4-r6,lr} bx lr _020A7C6C: - ldr r0, _020A7E00 ; =UNK_021CA86C + ldr r0, _020A7E00 ; =wcmw ldr r0, [r0, #0x0] add r1, r0, #0x2000 ldr r1, [r1, #0x26c] @@ -2610,23 +2518,17 @@ _020A7C6C: cmp r0, #0x6 addls pc, pc, r0, lsl #0x2 b _020A7CE0 -_020A7C94: - b _020A7CFC -_020A7C98: - b _020A7CE0 -_020A7C9C: - b _020A7CE0 -_020A7CA0: - b _020A7CB0 -_020A7CA4: - b _020A7CCC -_020A7CA8: - b _020A7CE0 -_020A7CAC: - b _020A7CE0 +_020A7C94: ; jump table + b _020A7CFC ; case 0 + b _020A7CE0 ; case 1 + b _020A7CE0 ; case 2 + b _020A7CB0 ; case 3 + b _020A7CCC ; case 4 + b _020A7CE0 ; case 5 + b _020A7CE0 ; case 6 _020A7CB0: mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r0, r4 bl OS_RestoreInterrupts mov r0, #0x7 @@ -2640,7 +2542,7 @@ _020A7CCC: bx lr _020A7CE0: mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r0, r4 bl OS_RestoreInterrupts mov r0, #0x7 @@ -2654,7 +2556,7 @@ _020A7CFC: cmp r0, #0x0 beq _020A7D30 mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r0, r4 bl OS_RestoreInterrupts mov r0, #0x7 @@ -2667,19 +2569,19 @@ _020A7D30: ldmia sp!, {r4-r6,lr} bx lr _020A7D44: - ldr r0, _020A7E04 ; =FUN_020A6A74 + ldr r0, _020A7E04 ; =WcmWmcbIndication bl WM_SetIndCallback cmp r0, #0x0 beq _020A7D70 mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r0, r4 bl OS_RestoreInterrupts mov r0, #0x7 ldmia sp!, {r4-r6,lr} bx lr _020A7D70: - ldr r0, _020A7E08 ; =FUN_020A6768 + ldr r0, _020A7E08 ; =WcmWmcbCommon bl WM_Enable cmp r0, #0x2 beq _020A7D94 @@ -2690,8 +2592,8 @@ _020A7D70: b _020A7DD0 _020A7D94: mov r0, #0x2 - bl FUN_020A6C38 - ldr r0, _020A7E00 ; =UNK_021CA86C + bl WcmSetPhase + ldr r0, _020A7E00 ; =wcmw mov r1, #0x1 ldr r0, [r0, #0x0] add r0, r0, #0x2200 @@ -2699,7 +2601,7 @@ _020A7D94: b _020A7DEC _020A7DB4: mov r0, #0xc - bl FUN_020A6C38 + bl WcmSetPhase mov r0, r4 bl OS_RestoreInterrupts mov r0, #0x1 @@ -2707,7 +2609,7 @@ _020A7DB4: bx lr _020A7DD0: mov r0, #0xb - bl FUN_020A6C38 + bl WcmSetPhase mov r0, r4 bl OS_RestoreInterrupts mov r0, #0x7 @@ -2720,16 +2622,16 @@ _020A7DEC: ldmia sp!, {r4-r6,lr} bx lr .balign 4 -_020A7E00: .word UNK_021CA86C -_020A7E04: .word FUN_020A6A74 -_020A7E08: .word FUN_020A6768 +_020A7E00: .word wcmw +_020A7E04: .word WcmWmcbIndication +_020A7E08: .word WcmWmcbCommon - arm_func_start FUN_020A7E0C -FUN_020A7E0C: ; 0x020A7E0C + arm_func_start WCM_Finish +WCM_Finish: ; 0x020A7E0C stmdb sp!, {lr} sub sp, sp, #0x4 bl OS_DisableInterrupts - ldr r2, _020A7E7C ; =UNK_021CA86C + ldr r2, _020A7E7C ; =wcmw ldr r1, [r2, #0x0] cmp r1, #0x0 bne _020A7E3C @@ -2757,15 +2659,15 @@ _020A7E60: ldmia sp!, {lr} bx lr .balign 4 -_020A7E7C: .word UNK_021CA86C +_020A7E7C: .word wcmw - arm_func_start FUN_020A7E80 -FUN_020A7E80: ; 0x020A7E80 + arm_func_start WCM_Init +WCM_Init: ; 0x020A7E80 stmdb sp!, {r4-r6,lr} mov r6, r0 mov r5, r1 bl OS_DisableInterrupts - ldr r2, _020A7FA8 ; =UNK_021CA86C + ldr r2, _020A7FA8 ; =wcmw mov r4, r0 ldr r1, [r2, #0x0] cmp r1, #0x0 @@ -2819,8 +2721,8 @@ _020A7EFC: ldr r1, [r2, #0x0] add r1, r1, #0x2200 strh r0, [r1, #0xf8] - bl FUN_020A6E30 - bl FUN_020A897C + bl WcmInitOption + bl WCMi_InitCpsif bl OS_IsTickAvailable cmp r0, #0x0 bne _020A7F70 @@ -2831,7 +2733,7 @@ _020A7F70: bne _020A7F80 bl OS_InitAlarm _020A7F80: - ldr r1, _020A7FA8 ; =UNK_021CA86C + ldr r1, _020A7FA8 ; =wcmw ldr r0, _020A7FAC ; =0x000022CC ldr r1, [r1, #0x0] add r0, r1, r0 @@ -2842,910 +2744,5 @@ _020A7F80: ldmia sp!, {r4-r6,lr} bx lr .balign 4 -_020A7FA8: .word UNK_021CA86C +_020A7FA8: .word wcmw _020A7FAC: .word 0x000022CC - - arm_func_start FUN_020A7FB0 -FUN_020A7FB0: ; 0x020A7FB0 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020A7138 - add r1, r0, #0x2000 - cmp r4, #0x0 - ldr r0, [r1, #0x270] - ldmeqia sp!, {r4,lr} - bxeq lr - cmp r0, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr - ldr r1, [r1, #0x274] - cmp r1, #0xc - ldmlsia sp!, {r4,lr} - bxls lr - ldr r3, [r0, #0x4] - cmp r3, #0x0 - beq _020A8040 -_020A7FF8: - cmp r3, r4 - bne _020A8034 - ldr r2, [r3, #0x8] - cmp r2, #0x0 - ldrne r1, [r3, #0xc] - strne r1, [r2, #0xc] - ldreq r1, [r3, #0xc] - streq r1, [r0, #0x4] - ldr r2, [r3, #0xc] - cmp r2, #0x0 - ldrne r1, [r3, #0x8] - strne r1, [r2, #0x8] - ldreq r1, [r3, #0x8] - streq r1, [r0, #0x8] - b _020A8040 -_020A8034: - ldr r3, [r3, #0xc] - cmp r3, #0x0 - bne _020A7FF8 -_020A8040: - mov r1, #0x0 - str r1, [r4, #0xc] - ldr r1, [r0, #0x8] - str r1, [r4, #0x8] - str r4, [r0, #0x8] - ldr r1, [r4, #0x8] - cmp r1, #0x0 - strne r4, [r1, #0xc] - streq r4, [r0, #0x4] - cmp r3, #0x0 - ldreq r1, [r0, #0x0] - streq r1, [r4, #0x4] - ldreq r1, [r0, #0x0] - addeq r1, r1, #0x1 - streq r1, [r0, #0x0] - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_020A8084 -FUN_020A8084: ; 0x020A8084 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020A7138 - add r1, r0, #0x2000 - ldr r2, [r1, #0x270] - mov r0, #0x0 - cmp r2, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr - ldr r1, [r1, #0x274] - cmp r1, #0xc - ldmlsia sp!, {r4,lr} - bxls lr - ldr r0, [r2, #0x4] - cmp r0, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr -_020A80C8: - ldr r1, [r0, #0x4] - cmp r1, r4 - ldmeqia sp!, {r4,lr} - bxeq lr - ldr r0, [r0, #0xc] - cmp r0, #0x0 - bne _020A80C8 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_020A80EC -FUN_020A80EC: ; 0x020A80EC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - bl FUN_020A7138 - add r0, r0, #0x2000 - cmp r5, #0x0 - mov r4, #0x0 - ldr r1, [r0, #0x270] - addeq sp, sp, #0x4 - moveq r0, r4 - ldmeqia sp!, {r4-r5,lr} - bxeq lr - cmp r1, #0x0 - beq _020A8160 - ldr r0, [r0, #0x274] - cmp r0, #0xc - bls _020A8160 - ldr r4, [r1, #0x4] - cmp r4, #0x0 - beq _020A8160 -_020A813C: - add r0, r4, #0x10 - mov r1, r5 - add r0, r0, #0x4 - bl FUN_020A8B78 - cmp r0, #0x0 - bne _020A8160 - ldr r4, [r4, #0xc] - cmp r4, #0x0 - bne _020A813C -_020A8160: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_020A8170 -FUN_020A8170: ; 0x020A8170 - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020A7138 - add r0, r0, #0x2000 - ldr r1, [r0, #0x270] - cmp r1, #0x0 - beq _020A81A4 - ldr r0, [r0, #0x274] - cmp r0, #0xc - addhi sp, sp, #0x4 - ldrhi r0, [r1, #0x4] - ldmhiia sp!, {lr} - bxhi lr -_020A81A4: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_020A81B4 -FUN_020A81B4: ; 0x020A81B4 - stmdb sp!, {r4,lr} - bl FUN_020A7138 - add r2, r0, #0x2000 - ldr r1, [r2, #0x270] - mov r0, #0x0 - cmp r1, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr - ldr r3, [r2, #0x274] - cmp r3, #0xc - ldmlsia sp!, {r4,lr} - bxls lr - ldr r2, _020A8294 ; =0x4EC4EC4F - sub r3, r3, #0xc - umull r2, r4, r3, r2 - movs r4, r4, lsr #0x6 - ldmeqia sp!, {r4,lr} - bxeq lr - ldr r2, [r1, #0x0] - cmp r4, r2 - ldmlsia sp!, {r4,lr} - bxls lr - mov lr, r0 - cmp r4, #0x0 - bls _020A8240 - add r12, r1, #0xc - mov r2, #0xd0 -_020A8220: - mul r0, lr, r2 - ldrb r3, [r12, r0] - add r0, r12, r0 - cmp r3, #0x0 - beq _020A8240 - add lr, lr, #0x1 - cmp lr, r4 - blo _020A8220 -_020A8240: - cmp lr, r4 - ldmcsia sp!, {r4,lr} - bxcs lr - mov r2, #0x1 - strb r2, [r0, #0x0] - ldr r3, [r1, #0x0] - mov r2, #0x0 - str r3, [r0, #0x4] - str r2, [r0, #0xc] - ldr r2, [r1, #0x8] - str r2, [r0, #0x8] - str r0, [r1, #0x8] - ldr r2, [r0, #0x8] - cmp r2, #0x0 - strne r0, [r2, #0xc] - streq r0, [r1, #0x4] - ldr r2, [r1, #0x0] - add r2, r2, #0x1 - str r2, [r1, #0x0] - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020A8294: .word 0x4EC4EC4F - - arm_func_start FUN_020A8298 -FUN_020A8298: ; 0x020A8298 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - bl FUN_020A7138 - movs r7, r0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - add r0, r7, #0x2000 - ldrb r0, [r0, #0x26a] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr - ldrh r0, [r5, #0x3c] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr - add r0, r5, #0x4 - bl FUN_020A80EC - movs r6, r0 - bne _020A8300 - bl FUN_020A81B4 - mov r6, r0 -_020A8300: - cmp r6, #0x0 - bne _020A8320 - add r0, r7, #0x2000 - ldr r0, [r0, #0x278] - cmp r0, #0x1 - bne _020A8320 - bl FUN_020A8170 - mov r6, r0 -_020A8320: - cmp r6, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - mov r0, r5 - add r1, r6, #0x10 - mov r2, #0xc0 - strh r4, [r6, #0x2] - bl MIi_CpuCopyFast - mov r0, r6 - bl FUN_020A7FB0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start FUN_020A8358 -FUN_020A8358: ; 0x020A8358 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - bl OS_DisableInterrupts - mov r5, r0 - bl FUN_020A7138 - cmp r0, #0x0 - bne _020A8390 - mov r0, r5 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r5,lr} - bx lr -_020A8390: - mov r0, r4 - bl FUN_020A8084 - movs r4, r0 - bne _020A83B8 - mov r0, r5 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r5,lr} - bx lr -_020A83B8: - mov r0, r5 - bl OS_RestoreInterrupts - add r0, r4, #0x10 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_020A83D0 -FUN_020A83D0: ; 0x020A83D0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - bl OS_DisableInterrupts - mov r4, r0 - bl FUN_020A7138 - cmp r0, #0x0 - bne _020A8408 - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r5,lr} - bx lr -_020A8408: - cmp r5, #0x0 - beq _020A8434 - add r1, r0, #0x2000 - ldrb r1, [r1, #0x26a] - add r0, r0, #0x2000 - cmp r1, #0x0 - movne r5, #0x1 - mov r1, #0x1 - moveq r5, #0x0 - strb r1, [r0, #0x26a] - b _020A8454 -_020A8434: - add r1, r0, #0x2000 - ldrb r1, [r1, #0x26a] - add r0, r0, #0x2000 - cmp r1, #0x0 - movne r5, #0x1 - mov r1, #0x0 - moveq r5, #0x0 - strb r1, [r0, #0x26a] -_020A8454: - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, r5 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_020A846C -FUN_020A846C: ; 0x020A846C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - bl OS_DisableInterrupts - mov r5, r0 - bl FUN_020A7138 - cmp r0, #0x0 - mov r4, #0x0 - bne _020A84A4 - mov r0, r5 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - mov r0, r4 - ldmia sp!, {r4-r5,lr} - bx lr -_020A84A4: - add r0, r0, #0x2000 - ldr r1, [r0, #0x270] - cmp r1, #0x0 - beq _020A84C0 - ldr r0, [r0, #0x274] - cmp r0, #0xc - ldrhi r4, [r1, #0x0] -_020A84C0: - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_020A84D8 -FUN_020A84D8: ; 0x020A84D8 - stmdb sp!, {r4,lr} - bl OS_DisableInterrupts - mov r4, r0 - bl FUN_020A7138 - cmp r0, #0x0 - bne _020A8500 - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r4,lr} - bx lr -_020A8500: - add r1, r0, #0x2000 - ldr r0, [r1, #0x270] - cmp r0, #0x0 - beq _020A8524 - ldr r2, [r1, #0x274] - cmp r2, #0x0 - ble _020A8524 - mov r1, #0x0 - bl MI_CpuFill8 -_020A8524: - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r4,lr} - bx lr - - arm_func_start FUN_020A8534 -FUN_020A8534: ; 0x020A8534 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x8] - ldr r1, _020A858C ; =0x01FF8000 - cmp r2, r1 - addne sp, sp, #0x4 - ldmneia sp!, {lr} - bxne lr - ldr r1, [r0, #0xc] - sub r1, r1, #0x1 - str r1, [r0, #0xc] - ldr r1, [r0, #0xc] - cmp r1, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {lr} - bxne lr - mov r1, #0x0 - str r1, [r0, #0x8] - bl OS_WakeupThread - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020A858C: .word 0x01FF8000 - - arm_func_start FUN_020A8590 -FUN_020A8590: - ldr r2, [r0, #0x8] - cmp r2, #0x0 - bne _020A85B8 - ldr r1, _020A85D8 ; =0x01FF8000 - str r1, [r0, #0x8] - ldr r1, [r0, #0xc] - add r1, r1, #0x1 - str r1, [r0, #0xc] - mov r0, #0x1 - bx lr -_020A85B8: - ldr r1, _020A85D8 ; =0x01FF8000 - cmp r2, r1 - ldreq r1, [r0, #0xc] - addeq r1, r1, #0x1 - streq r1, [r0, #0xc] - moveq r0, #0x1 - movne r0, #0x0 - bx lr - .balign 4 -_020A85D8: .word 0x01FF8000 - - arm_func_start FUN_020A85DC -FUN_020A85DC: ; 0x020A85DC - ldr ip, _020A85E8 ; =FUN_020A8534 - ldr r0, _020A85EC ; =UNK_021CA87C - bx r12 - .balign 4 -_020A85E8: .word FUN_020A8534 -_020A85EC: .word UNK_021CA87C - - arm_func_start FUN_020A85F0 -FUN_020A85F0: ; 0x020A85F0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r1, [r0, #0x0] - cmp r1, #0x12 - addne sp, sp, #0x4 - ldmneia sp!, {lr} - bxne lr - ldrh r2, [r0, #0x2] - ldr r1, _020A863C ; =UNK_021CA870 - str r2, [r1, #0x24] - ldrh r0, [r0, #0x2] - cmp r0, #0x0 - bne _020A8628 - bl FUN_020A6BBC -_020A8628: - ldr r0, _020A8640 ; =UNK_021CA874 - bl OS_WakeupThread - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020A863C: .word UNK_021CA870 -_020A8640: .word UNK_021CA874 - - arm_func_start WCM_SendDCFData -WCM_SendDCFData: - stmdb sp!, {r4-r8,lr} - mov r8, r0 - mov r7, r1 - mov r6, r2 - bl OS_DisableInterrupts - mov r5, r0 - bl FUN_020A7138 - cmp r0, #0x0 - bne _020A867C - mov r0, r5 - bl OS_RestoreInterrupts - mvn r0, #0x0 - ldmia sp!, {r4-r8,lr} - bx lr -_020A867C: - ldr r0, _020A87AC ; =UNK_021CA87C - bl OS_LockMutex - bl FUN_020A7138 - movs r4, r0 - bne _020A86AC - ldr r0, _020A87AC ; =UNK_021CA87C - bl OS_UnlockMutex - mov r0, r5 - bl OS_RestoreInterrupts - mvn r0, #0x0 - ldmia sp!, {r4-r8,lr} - bx lr -_020A86AC: - add r0, r4, #0x2000 - ldr r1, [r0, #0x260] - cmp r1, #0x9 - bne _020A86C8 - ldrb r0, [r0, #0x26b] - cmp r0, #0x1 - bne _020A86E4 -_020A86C8: - ldr r0, _020A87AC ; =UNK_021CA87C - bl OS_UnlockMutex - mov r0, r5 - bl OS_RestoreInterrupts - mvn r0, #0x3 - ldmia sp!, {r4-r8,lr} - bx lr -_020A86E4: - mov r0, r7 - mov r2, r6 - add r1, r4, #0xf00 - bl MI_CpuCopy8 - mov r3, r6, lsl #0x10 - ldr r0, _020A87B0 ; =FUN_020A85F0 - mov r1, r8 - add r2, r4, #0xf00 - mov r3, r3, lsr #0x10 - bl WM_SetDCFData - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020A873C -_020A8718: - b _020A873C -_020A871C: - b _020A873C -_020A8720: - b _020A8758 -_020A8724: - b _020A873C -_020A8728: - b _020A873C -_020A872C: - b _020A873C -_020A8730: - b _020A873C -_020A8734: - b _020A873C -_020A8738: - b _020A873C -_020A873C: - ldr r0, _020A87AC ; =UNK_021CA87C - bl OS_UnlockMutex - mov r0, r5 - bl OS_RestoreInterrupts - mvn r0, #0x4 - ldmia sp!, {r4-r8,lr} - bx lr -_020A8758: - ldr r0, _020A87B4 ; =UNK_021CA874 - bl OS_SleepThread - ldr r0, _020A87B8 ; =UNK_021CA870 - ldr r0, [r0, #0x24] - cmp r0, #0x0 - beq _020A8790 - cmp r0, #0x1 - ldr r0, _020A87AC ; =UNK_021CA87C - bl OS_UnlockMutex - mov r0, r5 - bl OS_RestoreInterrupts - mvn r0, #0x4 - ldmia sp!, {r4-r8,lr} - bx lr -_020A8790: - ldr r0, _020A87AC ; =UNK_021CA87C - bl OS_UnlockMutex - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, r6 - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_020A87AC: .word UNK_021CA87C -_020A87B0: .word FUN_020A85F0 -_020A87B4: .word UNK_021CA874 -_020A87B8: .word UNK_021CA870 - - arm_func_start WCM_SetRecvDCFCallback -WCM_SetRecvDCFCallback: ; 0x020A87BC - stmdb sp!, {r4,lr} - mov r4, r0 - bl OS_DisableInterrupts - ldr r1, _020A87DC ; =UNK_021CA870 - str r4, [r1, #0x28] - bl OS_RestoreInterrupts - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020A87DC: .word UNK_021CA870 - - arm_func_start FUN_020A87E0 -FUN_020A87E0: ; 0x020A87E0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, #0x0 - mov r4, r0 - mov r6, r7 - bl FUN_020A7138 - mov r5, r0 - bl OS_DisableInterrupts - cmp r5, #0x0 - beq _020A8830 - add r1, r5, #0x2000 - ldr r2, [r1, #0x260] - cmp r2, #0x9 - bne _020A8830 - ldrb r1, [r1, #0x26b] - cmp r1, #0x0 - addeq r2, r5, #0x2100 - ldreq r1, _020A884C ; =0x0000214C - ldreqh r6, [r2, #0x4a] - addeq r7, r5, r1 -_020A8830: - bl OS_RestoreInterrupts - cmp r4, #0x0 - strneh r6, [r4, #0x0] - mov r0, r7 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_020A884C: .word 0x0000214C - - arm_func_start WCM_GetApMacAddress -WCM_GetApMacAddress: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, #0x0 - bl FUN_020A7138 - mov r4, r0 - bl OS_DisableInterrupts - cmp r4, #0x0 - beq _020A8890 - add r1, r4, #0x2000 - ldr r2, [r1, #0x260] - cmp r2, #0x9 - bne _020A8890 - ldrb r1, [r1, #0x26b] - cmp r1, #0x0 - ldreq r1, _020A88A4 ; =0x00002144 - addeq r5, r4, r1 -_020A8890: - bl OS_RestoreInterrupts - mov r0, r5 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020A88A4: .word 0x00002144 - - arm_func_start FUN_020A88A8 -FUN_020A88A8: ; 0x020A88A8 - stmdb sp!, {r4,lr} - bl FUN_020A7138 - movs r4, r0 - ldmeqia sp!, {r4,lr} - bxeq lr - add r0, r4, #0x2000 - ldr r1, [r0, #0x260] - cmp r1, #0x9 - ldmneia sp!, {r4,lr} - bxne lr - ldrb r0, [r0, #0x26b] - cmp r0, #0x1 - ldmeqia sp!, {r4,lr} - bxeq lr - ldr r0, _020A8928 ; =UNK_021CA87C - bl FUN_020A8590 - cmp r0, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr - ldr r1, _020A892C ; =0x00002144 - ldr r0, _020A8930 ; =FUN_020A85DC - add r1, r4, r1 - add r2, r4, #0xf00 - mov r3, #0x0 - bl WM_SetDCFData - cmp r0, #0x2 - ldmeqia sp!, {r4,lr} - bxeq lr - ldr r0, _020A8928 ; =UNK_021CA87C - bl FUN_020A8534 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020A8928: .word UNK_021CA87C -_020A892C: .word 0x00002144 -_020A8930: .word FUN_020A85DC - - arm_func_start FUN_020A8934 -FUN_020A8934: ; 0x020A8934 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020A8978 ; =UNK_021CA870 - mov r2, r0 - ldr r12, [r1, #0x28] - cmp r12, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {lr} - bxeq lr - ldrh r3, [r2, #0x6] - add r0, r2, #0x1e - add r1, r2, #0x18 - add r2, r2, #0x2c - blx r12 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020A8978: .word UNK_021CA870 - - arm_func_start FUN_020A897C -FUN_020A897C: ; 0x020A897C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020A89C8 ; =UNK_021CA870 - ldrb r0, [r1, #0x0] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {lr} - bxne lr - ldr r0, _020A89CC ; =UNK_021CA87C - mov r2, #0x0 - mov r3, #0x1 - strb r3, [r1, #0x0] - str r2, [r1, #0x24] - str r2, [r1, #0x8] - str r2, [r1, #0x4] - bl OS_InitMutex - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020A89C8: .word UNK_021CA870 -_020A89CC: .word UNK_021CA87C - - arm_func_start FUN_020A89D0 -FUN_020A89D0: ; 0x020A89D0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, _020A8A48 ; =UNK_021CA89C - ands r1, r0, #0x2 - ldrb r12, [r2, #0x0] - movne r0, r0, asr #0x2 - andne lr, r0, #0xff - moveq r0, r0, asr #0x2 - addeq r0, r0, #0x19 - andeq lr, r0, #0xff - mov r1, r12, lsr #0x1f - rsb r0, r1, r12, lsl #0x1c - cmp r12, #0x10 - ldr r3, _020A8A4C ; =UNK_021CA8A0 - add r0, r1, r0, ror #0x1c - strb lr, [r3, r0] - addcc r0, r12, #0x1 - strccb r0, [r2, #0x0] - addcc sp, sp, #0x4 - ldmccia sp!, {lr} - bxcc lr - add r0, r12, #0x1 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #0x1c - add r0, r1, r0, ror #0x1c - add r0, r0, #0x10 - strb r0, [r2, #0x0] - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020A8A48: .word UNK_021CA89C -_020A8A4C: .word UNK_021CA8A0 - - arm_func_start FUN_020A8A50 -FUN_020A8A50: ; 0x020A8A50 - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020A8A90 - mov r1, #0x0 - cmp r0, #0x1c - movcs r1, #0x3 - bhs _020A8A80 - cmp r0, #0x16 - movcs r1, #0x2 - bhs _020A8A80 - cmp r0, #0x10 - movcs r1, #0x1 -_020A8A80: - mov r0, r1 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start FUN_020A8A90 -FUN_020A8A90: ; 0x020A8A90 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020A8B20 ; =UNK_021CA89C - mov r0, #0x0 - ldrb r1, [r1, #0x0] - cmp r1, #0x10 - bls _020A8ADC - ldr r2, _020A8B24 ; =UNK_021CA8A0 - mov r3, r0 -_020A8AB4: - ldrb r1, [r2, #0x0] - add r3, r3, #0x1 - cmp r3, #0x10 - add r0, r0, r1 - add r2, r2, #0x1 - blt _020A8AB4 - mov r1, r0, asr #0x3 - add r0, r0, r1, lsr #0x1c - mov r0, r0, asr #0x4 - b _020A8B10 -_020A8ADC: - cmp r1, #0x0 - beq _020A8B10 - mov r3, r0 - cmp r1, #0x0 - ble _020A8B0C - ldr ip, _020A8B24 ; =UNK_021CA8A0 -_020A8AF4: - ldrb r2, [r12, #0x0] - add r3, r3, #0x1 - cmp r3, r1 - add r0, r0, r2 - add r12, r12, #0x1 - blt _020A8AF4 -_020A8B0C: - bl _s32_div_f -_020A8B10: - and r0, r0, #0xff - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020A8B20: .word UNK_021CA89C -_020A8B24: .word UNK_021CA8A0 - - arm_func_start FUN_020A8B28 -FUN_020A8B28: ; 0x020A8B28 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - bl OS_DisableInterrupts - mov r5, r0 - bl FUN_020A7138 - cmp r0, #0x0 - mov r4, #0x0 - beq _020A8B60 - add r0, r0, #0x2000 - ldr r0, [r0, #0x260] - cmp r0, #0x9 - bne _020A8B60 - bl FUN_020A8A50 - mov r4, r0 -_020A8B60: - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - - arm_func_start FUN_020A8B78 -FUN_020A8B78: - mov r12, #0x0 -_020A8B7C: - ldrb r3, [r0, r12] - ldrb r2, [r1, r12] - cmp r3, r2 - movne r0, #0x0 - bxne lr - add r12, r12, #0x1 - cmp r12, #0x6 - blt _020A8B7C - mov r0, #0x1 - bx lr diff --git a/arm9/asm/WCM_util.s b/arm9/asm/WCM_util.s new file mode 100644 index 00000000..e5ba5702 --- /dev/null +++ b/arm9/asm/WCM_util.s @@ -0,0 +1,156 @@ + .include "asm/macros.inc" + .include "global.inc" + + .bss + + .global wcmRssiIndex +wcmRssiIndex: ; 0x021CA89C + .space 0x4 + + .global wcmRssi +wcmRssi: ; 0x021CA8A0 + .space 0x10 + + .text + + arm_func_start WCMi_ShelterRssi +WCMi_ShelterRssi: ; 0x020A89D0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020A8A48 ; =wcmRssiIndex + ands r1, r0, #0x2 + ldrb r12, [r2, #0x0] + movne r0, r0, asr #0x2 + andne lr, r0, #0xff + moveq r0, r0, asr #0x2 + addeq r0, r0, #0x19 + andeq lr, r0, #0xff + mov r1, r12, lsr #0x1f + rsb r0, r1, r12, lsl #0x1c + cmp r12, #0x10 + ldr r3, _020A8A4C ; =wcmRssi + add r0, r1, r0, ror #0x1c + strb lr, [r3, r0] + addcc r0, r12, #0x1 + strccb r0, [r2, #0x0] + addcc sp, sp, #0x4 + ldmccia sp!, {lr} + bxcc lr + add r0, r12, #0x1 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #0x1c + add r0, r1, r0, ror #0x1c + add r0, r0, #0x10 + strb r0, [r2, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A8A48: .word wcmRssiIndex +_020A8A4C: .word wcmRssi + + arm_func_start WcmGetLinkLevel +WcmGetLinkLevel: ; 0x020A8A50 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl WCMi_GetRssiAverage + mov r1, #0x0 + cmp r0, #0x1c + movcs r1, #0x3 + bhs _020A8A80 + cmp r0, #0x16 + movcs r1, #0x2 + bhs _020A8A80 + cmp r0, #0x10 + movcs r1, #0x1 +_020A8A80: + mov r0, r1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start WCMi_GetRssiAverage +WCMi_GetRssiAverage: ; 0x020A8A90 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020A8B20 ; =wcmRssiIndex + mov r0, #0x0 + ldrb r1, [r1, #0x0] + cmp r1, #0x10 + bls _020A8ADC + ldr r2, _020A8B24 ; =wcmRssi + mov r3, r0 +_020A8AB4: + ldrb r1, [r2, #0x0] + add r3, r3, #0x1 + cmp r3, #0x10 + add r0, r0, r1 + add r2, r2, #0x1 + blt _020A8AB4 + mov r1, r0, asr #0x3 + add r0, r0, r1, lsr #0x1c + mov r0, r0, asr #0x4 + b _020A8B10 +_020A8ADC: + cmp r1, #0x0 + beq _020A8B10 + mov r3, r0 + cmp r1, #0x0 + ble _020A8B0C + ldr ip, _020A8B24 ; =wcmRssi +_020A8AF4: + ldrb r2, [r12, #0x0] + add r3, r3, #0x1 + cmp r3, r1 + add r0, r0, r2 + add r12, r12, #0x1 + blt _020A8AF4 +_020A8B0C: + bl _s32_div_f +_020A8B10: + and r0, r0, #0xff + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A8B20: .word wcmRssiIndex +_020A8B24: .word wcmRssi + + arm_func_start WCM_GetLinkLevel +WCM_GetLinkLevel: ; 0x020A8B28 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + mov r5, r0 + bl WCMi_GetSystemWork + cmp r0, #0x0 + mov r4, #0x0 + beq _020A8B60 + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0x9 + bne _020A8B60 + bl WcmGetLinkLevel + mov r4, r0 +_020A8B60: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start WCM_CompareBssID +WCM_CompareBssID: + mov r12, #0x0 +_020A8B7C: + ldrb r3, [r0, r12] + ldrb r2, [r1, r12] + cmp r3, r2 + movne r0, #0x0 + bxne lr + add r12, r12, #0x1 + cmp r12, #0x6 + blt _020A8B7C + mov r0, #0x1 + bx lr diff --git a/arm9/global.inc b/arm9/global.inc index 62d708f6..12497154 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5515,21 +5515,21 @@ .extern FUN_02097484
.extern FUN_02097490
.extern FUN_02097508
-.extern FUN_020A71F8
-.extern FUN_020A722C
-.extern FUN_020A7488
-.extern FUN_020A75C0
-.extern FUN_020A7820
-.extern FUN_020A7A90
-.extern FUN_020A7AC8
-.extern FUN_020A7BD4
-.extern FUN_020A7E0C
-.extern FUN_020A7E80
-.extern FUN_020A8358
-.extern FUN_020A83D0
-.extern FUN_020A846C
-.extern FUN_020A84D8
-.extern FUN_020A87E0
+.extern WCM_GetPhase
+.extern WCM_TerminateAsync
+.extern WCM_DisconnectAsync
+.extern WCM_ConnectAsync
+.extern WCM_EndSearchAsync
+.extern WCM_SearchAsync
+.extern WCM_CleanupAsync
+.extern WCM_StartupAsync
+.extern WCM_Finish
+.extern WCM_Init
+.extern WCM_PointApList
+.extern WCM_LockApList
+.extern WCM_CountApList
+.extern WCM_ClearApList
+.extern WCM_GetApEssid
.extern FUN_020A8BA4
.extern FUN_020A8BB0
.extern FUN_020A8BBC
@@ -7889,3 +7889,11 @@ .extern wcstombs
.extern wctomb
.extern wmemcpy
+.extern WCMi_GetSystemWork
+.extern WCM_CompareBssID
+.extern WCMi_ResetKeepAliveAlarm
+.extern WCMi_CpsifSendNullPacket
+.extern WCMi_InitCpsif
+.extern WCMi_EntryApList
+.extern WCMi_CpsifRecvCallback
+.extern WCMi_ShelterRssi
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s index 129acd10..1f9a41fa 100644 --- a/arm9/modules/04/asm/arm_04.s +++ b/arm9/modules/04/asm/arm_04.s @@ -1442,7 +1442,7 @@ _021DA180: mov r1, #0xe bl OS_SNPrintf add r0, sp, #0x14 - bl FUN_020A87E0 + bl WCM_GetApEssid mov r5, r0 mov r1, #0x20 bl DC_InvalidateRange @@ -5473,7 +5473,7 @@ _021DDA4C: cmp r0, #3 bge _021DDAB0 add r0, sp, #0 - bl FUN_020A87E0 + bl WCM_GetApEssid mov r5, r0 mov r1, #0x20 bl DC_InvalidateRange @@ -5686,7 +5686,7 @@ _021DDD28: cmp r0, #0 addeq sp, sp, #4 ldmeqia sp!, {pc} - bl FUN_020A71F8 + bl WCM_GetPhase cmp r0, #9 addeq sp, sp, #4 ldmeqia sp!, {pc} @@ -21692,7 +21692,7 @@ MOD04_021EBA28: ; 0x021EBA28 cmp r0, #4 bne _021EBAA8 mov r0, #0 - bl FUN_020A87E0 + bl WCM_GetApEssid mov r4, r0 mov r1, #0x20 bl DC_InvalidateRange @@ -21928,7 +21928,7 @@ MOD04_021EBC60: ; 0x021EBC60 ldr r0, _021EBE14 ; =0x02210E4C mov r1, #0x2300 ldr r0, [r0] - bl FUN_020A7E80 + bl WCM_Init cmp r0, #1 beq _021EBDF4 cmp r0, #4 @@ -22664,7 +22664,7 @@ _021EC7AC: .word 0x00000D0C MOD04_021EC7B0: ; 0x021EC7B0 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 - bl FUN_020A71F8 + bl WCM_GetPhase ldrb r2, [r6, #0xd13] add r3, r6, #0x470 mov r1, #0xc0 @@ -22731,7 +22731,7 @@ _021EC898: mov r0, r5 add r1, r6, r1 orr r2, r4, r2 - bl FUN_020A75C0 + bl WCM_ConnectAsync b _021EC8E0 _021EC8BC: cmp r0, #9 @@ -22878,7 +22878,7 @@ _021ECA8C: MOD04_021ECA98: ; 0x021ECA98 stmdb sp!, {lr} sub sp, sp, #4 - bl FUN_020A71F8 + bl WCM_GetPhase cmp r0, #0xc addls pc, pc, r0, lsl #2 b _021ECB2C @@ -22901,19 +22901,19 @@ _021ECAE4: mov r0, #1 ldmfd sp!, {pc} _021ECAF0: - bl FUN_020A7E0C + bl WCM_Finish b _021ECB2C _021ECAF8: - bl FUN_020A7AC8 + bl WCM_CleanupAsync b _021ECB2C _021ECB00: - bl FUN_020A7820 + bl WCM_EndSearchAsync b _021ECB2C _021ECB08: - bl FUN_020A7488 + bl WCM_DisconnectAsync b _021ECB2C _021ECB10: - bl FUN_020A722C + bl WCM_TerminateAsync b _021ECB2C _021ECB18: mov r0, #0 @@ -23463,7 +23463,7 @@ MOD04_021ED218: ; 0x021ED218 bl MOD04_021EB798 mov r4, r0 mov r5, #9 - bl FUN_020A71F8 + bl WCM_GetPhase cmp r0, #0xc addls pc, pc, r0, lsl #2 b _021ED2F0 @@ -23503,13 +23503,13 @@ _021ED2A4: bl MOD04_021ED8D4 b _021ED2F0 _021ED2C0: - bl FUN_020A7820 + bl WCM_EndSearchAsync b _021ED2F0 _021ED2C8: - bl FUN_020A7488 + bl WCM_DisconnectAsync b _021ED2F0 _021ED2D0: - bl FUN_020A722C + bl WCM_TerminateAsync mov r0, #4 bl MOD04_021EB6F4 mov r5, #0x11 @@ -23532,7 +23532,7 @@ MOD04_021ED2FC: ; 0x021ED2FC movgt r2, #0xc ldr r2, [ip, r2, lsl #2] orr r2, r3, r2 - bl FUN_020A7A90 + bl WCM_SearchAsync add sp, sp, #4 ldmfd sp!, {pc} .align 2, 0 @@ -23623,7 +23623,7 @@ _021ED410: ldmloia sp!, {r4, r5, pc} _021ED448: strb r2, [r5, #0xd13] - bl FUN_020A7820 + bl WCM_EndSearchAsync cmp r0, #1 strneb r4, [r5, #0xd0e] movne r4, #7 @@ -24080,7 +24080,7 @@ MOD04_021EDA70: ; 0x021EDA70 mov r5, r0 bl MOD04_021EB720 mov r4, r0 - bl FUN_020A71F8 + bl WCM_GetPhase cmp r4, #2 bne _021EDAB0 cmp r0, #3 @@ -24137,7 +24137,7 @@ _021EDB38: MOD04_021EDB44: ; 0x021EDB44 stmdb sp!, {r4, lr} sub sp, sp, #0x10 - bl FUN_020A71F8 + bl WCM_GetPhase mov r4, r0 mov r0, #0x10 bl MOD04_021EB798 @@ -24152,7 +24152,7 @@ MOD04_021EDB44: ; 0x021EDB44 bl MOD04_021ED17C ldr r1, _021EDBC8 ; =MOD04_021EC44C add r0, sp, #0 - bl FUN_020A7BD4 + bl WCM_StartupAsync cmp r0, #1 beq _021EDB9C cmp r0, #4 @@ -24476,7 +24476,7 @@ MOD04_021EDFBC: ; 0x021EDFBC mov r0, #0x10 bl MOD04_021EB798 mov r4, r0 - bl FUN_020A71F8 + bl WCM_GetPhase cmp r0, #9 bne _021EE064 sub r0, r5, #0xa diff --git a/arm9/modules/13/asm/module_13_thumb.s b/arm9/modules/13/asm/module_13_thumb.s index 4eadd8c7..51681246 100644 --- a/arm9/modules/13/asm/module_13_thumb.s +++ b/arm9/modules/13/asm/module_13_thumb.s @@ -4941,7 +4941,7 @@ _0221994E: ldr r2, [sp, #4] ldr r2, [r2, #0x28] bl MI_CpuCopy8 - bl FUN_020A84D8 + bl WCM_ClearApList mov r0, #0 ldr r1, [sp, #4] add r1, r1, #4 @@ -5769,7 +5769,7 @@ MOD13_02219F54: ; 0x02219F54 ldr r0, _0221A030 ; =0x02241A60 ldr r0, [r0] ldr r1, _0221A044 ; =0x00002300 - bl FUN_020A7E80 + bl WCM_Init cmp r0, #0 beq _02219FD4 add r0, r4, #0 @@ -5791,7 +5791,7 @@ _02219FDA: ldr r0, _0221A02C ; =0x02241A68 ldr r0, [r0] ldr r1, _0221A048 ; =MOD13_0221A3CC - bl FUN_020A7BD4 + bl WCM_StartupAsync cmp r0, #3 beq _0221A000 add r0, r4, #0 @@ -5886,7 +5886,7 @@ _0221A0A8: ldr r1, [r1] ldr r2, _0221A0EC ; =0x02241A6C ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 bne _0221A0DA mov r1, #8 @@ -5922,7 +5922,7 @@ MOD13_0221A0FC: ; 0x0221A0FC ldr r0, [r0] cmp r0, #3 bne _0221A136 - bl FUN_020A7AC8 + bl WCM_CleanupAsync cmp r0, #3 beq _0221A122 add r0, r4, #0 @@ -5973,7 +5973,7 @@ MOD13_0221A164: ; 0x0221A164 ldr r0, [r0] cmp r0, #7 bne _0221A190 - bl FUN_020A7488 + bl WCM_DisconnectAsync cmp r0, #3 bne _0221A190 mov r1, #4 @@ -6007,7 +6007,7 @@ MOD13_0221A1A4: ; 0x0221A1A4 mov r0, #0 add r1, r0, #0 add r2, r0, #0 - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221A1D6 mov r1, #4 @@ -6121,7 +6121,7 @@ _0221A27C: ldr r1, [r1] ldr r2, _0221A2DC ; =0x02241A64 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221A2CC mov r1, #6 @@ -6173,8 +6173,8 @@ MOD13_0221A2FC: ; 0x0221A2FC add r5, r0, #0 add r7, r1, #0 mov r0, #1 - bl FUN_020A83D0 - bl FUN_020A846C + bl WCM_LockApList + bl WCM_CountApList add r6, r0, #0 cmp r6, #0 ble _0221A336 @@ -6186,7 +6186,7 @@ _0221A31A: bge _0221A336 lsl r0, r4, #0x10 lsr r0, r0, #0x10 - bl FUN_020A8358 + bl WCM_PointApList add r1, r5, #0 mov r2, #0xc0 bl MIi_CpuCopy32 @@ -6196,7 +6196,7 @@ _0221A31A: blt _0221A31A _0221A336: mov r0, #0 - bl FUN_020A83D0 + bl WCM_LockApList add r0, r6, #0 add sp, #4 pop {r4, r5, r6, r7} @@ -6233,7 +6233,7 @@ _0221A374: mov r0, #0 add r1, r0, #0 add r2, r0, #0 - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 beq _0221A3B8 mov r0, #0 @@ -6241,7 +6241,7 @@ _0221A374: pop {r3} bx r3 _0221A38A: - bl FUN_020A7488 + bl WCM_DisconnectAsync cmp r0, #3 beq _0221A3B8 mov r0, #0 @@ -6252,7 +6252,7 @@ _0221A39A: ldr r0, _0221A3C4 ; =0x02241A68 ldr r0, [r0] ldr r1, _0221A3C8 ; =MOD13_0221A3CC - bl FUN_020A7BD4 + bl WCM_StartupAsync cmp r0, #3 beq _0221A3B8 mov r0, #0 @@ -6335,7 +6335,7 @@ _0221A426: ldr r1, [r1] ldr r2, _0221A768 ; =0x02241A64 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221A440 b _0221A750 @@ -6366,7 +6366,7 @@ _0221A462: ldr r1, [r1] ldr r2, _0221A774 ; =0x02241A6C ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 bne _0221A478 b _0221A750 @@ -6510,7 +6510,7 @@ _0221A55E: ldr r1, [r1] ldr r2, _0221A768 ; =0x02241A64 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221A578 b _0221A750 @@ -6533,7 +6533,7 @@ _0221A588: _0221A594: cmp r2, #2 bne _0221A5BE - bl FUN_020A7AC8 + bl WCM_CleanupAsync cmp r0, #3 bne _0221A5A2 b _0221A750 @@ -6564,7 +6564,7 @@ _0221A5C4: ldr r1, [r1] ldr r2, _0221A774 ; =0x02241A6C ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 bne _0221A5DA b _0221A750 @@ -6630,7 +6630,7 @@ _0221A638: ldr r1, [r1] ldr r2, _0221A768 ; =0x02241A64 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 beq _0221A750 mov r1, #3 @@ -6649,7 +6649,7 @@ _0221A638: _0221A66A: cmp r2, #2 bne _0221A690 - bl FUN_020A7AC8 + bl WCM_CleanupAsync cmp r0, #3 beq _0221A750 mov r1, #3 @@ -6674,7 +6674,7 @@ _0221A690: ldr r1, [r1] ldr r2, _0221A774 ; =0x02241A6C ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 beq _0221A750 mov r1, #3 @@ -6718,7 +6718,7 @@ _0221A6E4: ldr r0, [r0] cmp r0, #2 bne _0221A750 - bl FUN_020A7E0C + bl WCM_Finish mov r1, #0 ldr r0, _0221A758 ; =0x02241A78 str r1, [r0] @@ -13768,7 +13768,7 @@ MOD13_0221DD4C: ; 0x0221DD4C ldr r0, _0221DE28 ; =0x02241AEC ldr r0, [r0] ldr r1, _0221DE3C ; =0x00002300 - bl FUN_020A7E80 + bl WCM_Init cmp r0, #0 beq _0221DDCC add r0, r4, #0 @@ -13790,7 +13790,7 @@ _0221DDD2: ldr r0, _0221DE24 ; =0x02241AB8 ldr r0, [r0] ldr r1, _0221DE40 ; =MOD13_0221E178 - bl FUN_020A7BD4 + bl WCM_StartupAsync cmp r0, #3 beq _0221DDF8 add r0, r4, #0 @@ -13885,7 +13885,7 @@ _0221DEA0: ldr r1, [r1] ldr r2, _0221DEE4 ; =0x02241B08 ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 bne _0221DED2 mov r1, #8 @@ -13921,7 +13921,7 @@ MOD13_0221DEF4: ; 0x0221DEF4 ldr r0, [r0] cmp r0, #3 bne _0221DF2E - bl FUN_020A7AC8 + bl WCM_CleanupAsync cmp r0, #3 beq _0221DF1A add r0, r4, #0 @@ -13972,7 +13972,7 @@ MOD13_0221DF5C: ; 0x0221DF5C ldr r0, [r0] cmp r0, #7 bne _0221DF88 - bl FUN_020A7488 + bl WCM_DisconnectAsync cmp r0, #3 bne _0221DF88 mov r1, #4 @@ -14081,7 +14081,7 @@ _0221E02A: ldr r1, [r1] ldr r2, _0221E088 ; =0x02241B10 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221E078 mov r1, #6 @@ -14133,8 +14133,8 @@ MOD13_0221E0A8: ; 0x0221E0A8 add r5, r0, #0 add r7, r1, #0 mov r0, #1 - bl FUN_020A83D0 - bl FUN_020A846C + bl WCM_LockApList + bl WCM_CountApList add r6, r0, #0 cmp r6, #0 ble _0221E0E2 @@ -14146,7 +14146,7 @@ _0221E0C6: bge _0221E0E2 lsl r0, r4, #0x10 lsr r0, r0, #0x10 - bl FUN_020A8358 + bl WCM_PointApList add r1, r5, #0 mov r2, #0xc0 bl MIi_CpuCopy32 @@ -14156,7 +14156,7 @@ _0221E0C6: blt _0221E0C6 _0221E0E2: mov r0, #0 - bl FUN_020A83D0 + bl WCM_LockApList add r0, r6, #0 add sp, #4 pop {r4, r5, r6, r7} @@ -14193,7 +14193,7 @@ _0221E120: mov r0, #0 add r1, r0, #0 add r2, r0, #0 - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 beq _0221E164 mov r0, #0 @@ -14201,7 +14201,7 @@ _0221E120: pop {r3} bx r3 _0221E136: - bl FUN_020A7488 + bl WCM_DisconnectAsync cmp r0, #3 beq _0221E164 mov r0, #0 @@ -14212,7 +14212,7 @@ _0221E146: ldr r0, _0221E170 ; =0x02241AB8 ldr r0, [r0] ldr r1, _0221E174 ; =MOD13_0221E178 - bl FUN_020A7BD4 + bl WCM_StartupAsync cmp r0, #3 beq _0221E164 mov r0, #0 @@ -14297,7 +14297,7 @@ _0221E1D6: ldr r1, [r1] ldr r2, _0221E528 ; =0x02241B10 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221E1F0 b _0221E556 @@ -14328,7 +14328,7 @@ _0221E212: ldr r1, [r1] ldr r2, _0221E534 ; =0x02241B08 ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 bne _0221E228 b _0221E556 @@ -14472,7 +14472,7 @@ _0221E30E: ldr r1, [r1] ldr r2, _0221E528 ; =0x02241B10 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221E328 b _0221E556 @@ -14495,7 +14495,7 @@ _0221E338: _0221E344: cmp r2, #2 bne _0221E36E - bl FUN_020A7AC8 + bl WCM_CleanupAsync cmp r0, #3 bne _0221E352 b _0221E556 @@ -14526,7 +14526,7 @@ _0221E374: ldr r1, [r1] ldr r2, _0221E534 ; =0x02241B08 ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 bne _0221E38A b _0221E556 @@ -14592,7 +14592,7 @@ _0221E3E8: ldr r1, [r1] ldr r2, _0221E528 ; =0x02241B10 ldr r2, [r2] - bl FUN_020A7A90 + bl WCM_SearchAsync cmp r0, #3 bne _0221E402 b _0221E556 @@ -14615,7 +14615,7 @@ _0221E412: _0221E41E: cmp r2, #2 bne _0221E448 - bl FUN_020A7AC8 + bl WCM_CleanupAsync cmp r0, #3 bne _0221E42C b _0221E556 @@ -14644,7 +14644,7 @@ _0221E448: ldr r1, [r1] ldr r2, _0221E534 ; =0x02241B08 ldr r2, [r2] - bl FUN_020A75C0 + bl WCM_ConnectAsync cmp r0, #3 beq _0221E556 mov r1, #3 @@ -14690,7 +14690,7 @@ _0221E4A0: ldr r0, [r0] cmp r0, #2 bne _0221E556 - bl FUN_020A7E0C + bl WCM_Finish mov r1, #0 ldr r0, _0221E518 ; =0x02241ADC str r1, [r0] diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index de0e7672..bf202f2f 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -1346,7 +1346,7 @@ _0222DFB4: mvn r0, r0 cmp r4, r0 beq _0222DFCC - bl FUN_020A71F8 + bl WCM_GetPhase cmp r0, #9 beq _0222DFC8 mov r4, #0xd diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s index 73c58a93..18e1984d 100644 --- a/arm9/modules/82/asm/module_82.s +++ b/arm9/modules/82/asm/module_82.s @@ -596,7 +596,7 @@ _0222DA18: mvn r0, r0 cmp r4, r0 beq _0222DA30 - bl FUN_020A71F8 + bl WCM_GetPhase cmp r0, #9 beq _0222DA2C mov r4, #5 |