From de4dba08bb3788f70164f53839618e63576aef77 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 22 May 2021 20:34:27 -0400 Subject: Split libnns, 1 --- arm9/asm/NNS_FND_allocator.s | 61 +++ arm9/asm/NNS_FND_expheap.s | 569 +++++++++++++++++++++ arm9/asm/NNS_FND_frameheap.s | 234 +++++++++ arm9/asm/NNS_FND_heapcommon.s | 109 ++++ arm9/asm/NNS_FND_list.s | 163 ++++++ arm9/asm/unk_020ADA84.s | 1107 +---------------------------------------- 6 files changed, 1138 insertions(+), 1105 deletions(-) create mode 100644 arm9/asm/NNS_FND_allocator.s create mode 100644 arm9/asm/NNS_FND_expheap.s create mode 100644 arm9/asm/NNS_FND_frameheap.s create mode 100644 arm9/asm/NNS_FND_heapcommon.s create mode 100644 arm9/asm/NNS_FND_list.s (limited to 'arm9/asm') diff --git a/arm9/asm/NNS_FND_allocator.s b/arm9/asm/NNS_FND_allocator.s new file mode 100644 index 00000000..e93809af --- /dev/null +++ b/arm9/asm/NNS_FND_allocator.s @@ -0,0 +1,61 @@ + .include "asm/macros.inc" + .include "global.inc" + + .rodata + + .global UNK_020FF7CC +UNK_020FF7CC: ; 0x020FF7CC + .word FUN_020AE894 + .word FUN_020AE884 + + .text + + arm_func_start FUN_020AE82C +FUN_020AE82C: ; 0x020AE82C + ldr ip, _020AE848 ; =UNK_020FF7CC + mov r3, #0x0 + str r12, [r0, #0x0] + str r1, [r0, #0x4] + str r2, [r0, #0x8] + str r3, [r0, #0xc] + bx lr + .balign 4 +_020AE848: .word UNK_020FF7CC + + arm_func_start FUN_020AE84C +FUN_020AE84C: ; 0x020AE84C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + ldr r2, [r2, #0x4] + blx r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AE868 +FUN_020AE868: ; 0x020AE868 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + ldr r2, [r2, #0x0] + blx r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AE884 +FUN_020AE884: ; 0x020AE884 + ldr ip, _020AE890 ; =FUN_020ADDF0 + ldr r0, [r0, #0x4] + bx r12 + .balign 4 +_020AE890: .word FUN_020ADDF0 + + arm_func_start FUN_020AE894 +FUN_020AE894: ; 0x020AE894 + ldr ip, _020AE8A8 ; =tempName_NNS_FndAllocFromExpHeapEx + mov r2, r0 + ldr r0, [r2, #0x4] + ldr r2, [r2, #0x8] + bx r12 + .balign 4 +_020AE8A8: .word tempName_NNS_FndAllocFromExpHeapEx diff --git a/arm9/asm/NNS_FND_expheap.s b/arm9/asm/NNS_FND_expheap.s new file mode 100644 index 00000000..c30c6e88 --- /dev/null +++ b/arm9/asm/NNS_FND_expheap.s @@ -0,0 +1,569 @@ + .include "asm/macros.inc" + .include "global.inc" + + .extern FUN_020ADCA4 + .extern FUN_020ADC8C + + .text + + arm_func_start FUN_020ADDC0 +FUN_020ADDC0: ; 0x020ADDC0 + ldr r0, [r0, #-0xc] + bx lr + + arm_func_start FUN_020ADDC8 +FUN_020ADDC8: ; 0x020ADDC8 + ldr r2, [r0, #0x24] + mov r0, #0x0 + cmp r2, #0x0 + bxeq lr +_020ADDD8: + ldr r1, [r2, #0x4] + ldr r2, [r2, #0xc] + add r0, r0, r1 + cmp r2, #0x0 + bne _020ADDD8 + bx lr + + arm_func_start FUN_020ADDF0 +FUN_020ADDF0: ; 0x020ADDF0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + sub r4, r1, #0x10 + add r5, r0, #0x24 + add r0, sp, #0x0 + mov r1, r4 + bl FUN_020AE528 + mov r1, r4 + add r0, r5, #0x8 + bl FUN_020AE500 + add r1, sp, #0x0 + mov r0, r5 + bl FUN_020AE02C + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020ADE2C +FUN_020ADE2C: ; 0x020ADE2C + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x10 + mov r4, r1 + mov r10, r2 + sub r6, r4, #0x10 + add r1, r10, #0x3 + mov r5, r0 + ldr r8, [r6, #0x4] + bic r10, r1, #0x3 + cmp r10, r8 + add r7, r5, #0x24 + addeq sp, sp, #0x10 + moveq r0, r10 + ldmeqia sp!, {r4-r10,pc} + cmp r10, r8 + bls _020ADF60 + ldr r9, [r7, #0x0] + add r0, r6, #0x10 + cmp r9, #0x0 + add r0, r8, r0 + beq _020ADE94 +_020ADE80: + cmp r9, r0 + beq _020ADE94 + ldr r9, [r9, #0xc] + cmp r9, #0x0 + bne _020ADE80 +_020ADE94: + cmp r9, #0x0 + beq _020ADEB0 + ldr r0, [r9, #0x4] + add r1, r8, #0x10 + add r0, r1, r0 + cmp r10, r0 + bls _020ADEBC +_020ADEB0: + add sp, sp, #0x10 + mov r0, #0x0 + ldmia sp!, {r4-r10,pc} +_020ADEBC: + add r0, sp, #0x0 + mov r1, r9 + bl FUN_020AE528 + mov r0, r7 + mov r1, r9 + bl FUN_020AE500 + ldr r2, [sp, #0x4] + add r3, r10, r4 + ldr r9, [sp, #0x0] + sub r1, r2, r3 + str r3, [sp, #0x0] + cmp r1, #0x10 + strcc r2, [sp, #0x0] + mov r8, r0 + ldr r0, [sp, #0x0] + sub r0, r0, r4 + str r0, [r6, #0x4] + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x0] + sub r0, r1, r0 + cmp r0, #0x10 + blo _020ADF30 + ldr r1, _020ADF9C ; =0x00004652 + add r0, sp, #0x0 + bl FUN_020AE4A0 + mov r1, r0 + mov r0, r7 + mov r2, r8 + bl FUN_020AE4D0 +_020ADF30: + ldr r0, [r5, #0x20] + ldr r1, [sp, #0x0] + and r0, r0, #0xff + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + sub r2, r1, r9 + ands r0, r0, #0x1 + beq _020ADF90 + mov r1, r9 + mov r0, #0x0 + bl MIi_CpuClear32 + b _020ADF90 +_020ADF60: + add r0, r10, r4 + str r0, [sp, #0x8] + ldr r1, [r6, #0x4] + add r0, r6, #0x10 + add r0, r1, r0 + str r0, [sp, #0xc] + add r1, sp, #0x8 + mov r0, r7 + str r10, [r6, #0x4] + bl FUN_020AE02C + cmp r0, #0x0 + streq r8, [r6, #0x4] +_020ADF90: + ldr r0, [r6, #0x4] + add sp, sp, #0x10 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020ADF9C: .word 0x00004652 + + arm_func_start tempName_NNS_FndAllocFromExpHeapEx +tempName_NNS_FndAllocFromExpHeapEx: ; 0x020ADFA0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + moveq r1, #0x1 + add r1, r1, #0x3 + cmp r2, #0x0 + bic r1, r1, #0x3 + blt _020ADFCC + bl FUN_020AE1D8 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADFCC: + rsb r2, r2, #0x0 + bl FUN_020AE11C + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start thunk_FUN_020adc8c +thunk_FUN_020adc8c: ; 0x020ADFDC + ldr ip, _020ADFE4 ; =FUN_020ADC8C + bx r12 + .balign 4 +_020ADFE4: .word FUN_020ADC8C + + arm_func_start tempName_NNS_FndCreateExpHeapEx +tempName_NNS_FndCreateExpHeapEx: ; 0x020ADFE8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + add r1, r1, r0 + add r0, r0, #0x3 + bic r1, r1, #0x3 + bic r0, r0, #0x3 + cmp r0, r1 + bhi _020AE014 + sub r3, r1, r0 + cmp r3, #0x4c + bhs _020AE020 +_020AE014: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {pc} +_020AE020: + bl FUN_020AE420 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AE02C +FUN_020AE02C: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r5, r1 + ldr r2, [r5, #0x0] + ldr r1, [r5, #0x4] + mov r6, r0 + str r2, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [r6, #0x0] + mov r4, #0x0 + cmp r1, #0x0 + beq _020AE0A0 + ldr r0, [r5, #0x0] +_020AE060: + cmp r1, r0 + movcc r4, r1 + blo _020AE094 + ldr r0, [r5, #0x4] + cmp r1, r0 + bne _020AE0A0 + ldr r2, [r1, #0x4] + add r0, r1, #0x10 + add r2, r2, r0 + mov r0, r6 + str r2, [sp, #0x4] + bl FUN_020AE500 + b _020AE0A0 +_020AE094: + ldr r1, [r1, #0xc] + cmp r1, #0x0 + bne _020AE060 +_020AE0A0: + cmp r4, #0x0 + beq _020AE0D4 + ldr r2, [r4, #0x4] + add r1, r4, #0x10 + ldr r0, [r5, #0x0] + add r1, r2, r1 + cmp r1, r0 + bne _020AE0D4 + mov r0, r6 + mov r1, r4 + str r4, [sp, #0x0] + bl FUN_020AE500 + mov r4, r0 +_020AE0D4: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x0] + sub r0, r1, r0 + cmp r0, #0x10 + addcc sp, sp, #0x8 + movcc r0, #0x0 + ldmccia sp!, {r4-r6,pc} + ldr r1, _020AE118 ; =0x00004652 + add r0, sp, #0x0 + bl FUN_020AE4A0 + mov r1, r0 + mov r0, r6 + mov r2, r4 + bl FUN_020AE4D0 + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AE118: .word 0x00004652 + + arm_func_start FUN_020AE11C +FUN_020AE11C: ; 0x020AE11C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + add r0, r0, #0x24 + ldrh r4, [r0, #0x12] + mov r3, r1 + mvn lr, #0x0 + and r1, r4, #0x1 + mov r1, r1, lsl #0x10 + movs r1, r1, lsr #0x10 + moveq r5, #0x1 + mov r1, #0x0 + ldr r4, [r0, #0x4] + movne r5, #0x0 + mov r12, r1 + cmp r4, #0x0 + beq _020AE1B0 + sub r2, r2, #0x1 + mvn r2, r2 +_020AE164: + ldr r8, [r4, #0x4] + add r9, r4, #0x10 + add r6, r8, r9 + sub r6, r6, r3 + and r7, r2, r6 + subs r6, r7, r9 + bmi _020AE1A4 + cmp lr, r8 + bls _020AE1A4 + mov r1, r4 + mov lr, r8 + mov r12, r7 + cmp r5, #0x0 + bne _020AE1B0 + cmp r8, r3 + beq _020AE1B0 +_020AE1A4: + ldr r4, [r4, #0x8] + cmp r4, #0x0 + bne _020AE164 +_020AE1B0: + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + mov r4, #0x1 + mov r2, r12 + str r4, [sp, #0x0] + bl FUN_020AE298 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020AE1D8 +FUN_020AE1D8: ; 0x020AE1D8 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + add r0, r0, #0x24 + ldrh r4, [r0, #0x12] + mov r3, r1 + ldr r5, [r0, #0x0] + and r1, r4, #0x1 + mov r1, r1, lsl #0x10 + movs r1, r1, lsr #0x10 + moveq r6, #0x1 + mov r1, #0x0 + movne r6, #0x0 + mov lr, r1 + cmp r5, #0x0 + mvn r4, #0x0 + beq _020AE270 + sub r12, r2, #0x1 + mvn r2, r12 +_020AE220: + add r8, r5, #0x10 + add r7, r12, r8 + and r9, r2, r7 + sub r7, r9, r8 + ldr r8, [r5, #0x4] + add r7, r3, r7 + cmp r8, r7 + blo _020AE264 + cmp r4, r8 + bls _020AE264 + mov r1, r5 + mov r4, r8 + mov lr, r9 + cmp r6, #0x0 + bne _020AE270 + cmp r8, r3 + beq _020AE270 +_020AE264: + ldr r5, [r5, #0xc] + cmp r5, #0x0 + bne _020AE220 +_020AE270: + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + mov r4, #0x0 + mov r2, lr + str r4, [sp, #0x0] + bl FUN_020AE298 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020AE298 +FUN_020AE298: ; 0x020AE298 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x18 + mov r7, r0 + add r0, sp, #0x0 + mov r8, r1 + mov r6, r2 + mov r5, r3 + bl FUN_020AE528 + ldr r3, [sp, #0x4] + sub r4, r6, #0x10 + add r2, r5, r6 + mov r0, r7 + mov r1, r8 + str r4, [sp, #0x4] + str r3, [sp, #0xc] + str r2, [sp, #0x8] + bl FUN_020AE500 + ldr r2, [sp, #0x0] + ldr r1, [sp, #0x4] + mov r5, r0 + sub r0, r1, r2 + cmp r0, #0x10 + strcc r2, [sp, #0x4] + blo _020AE318 + ldr r1, _020AE418 ; =0x00004652 + add r0, sp, #0x0 + bl FUN_020AE4A0 + mov r1, r0 + mov r0, r7 + mov r2, r5 + bl FUN_020AE4D0 + mov r5, r0 +_020AE318: + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x8] + sub r0, r1, r0 + cmp r0, #0x10 + strcc r1, [sp, #0x8] + blo _020AE34C + ldr r1, _020AE418 ; =0x00004652 + add r0, sp, #0x8 + bl FUN_020AE4A0 + mov r1, r0 + mov r0, r7 + mov r2, r5 + bl FUN_020AE4D0 +_020AE34C: + ldr r0, [r7, #-0x4] + ldr r1, [sp, #0x4] + and r0, r0, #0xff + mov r0, r0, lsl #0x10 + ldr r2, [sp, #0x8] + mov r0, r0, lsr #0x10 + sub r2, r2, r1 + ands r0, r0, #0x1 + beq _020AE378 + mov r0, #0x0 + bl MIi_CpuClear32 +_020AE378: + ldr r2, [sp, #0x8] + ldr r1, _020AE41C ; =0x00005544 + add r0, sp, #0x10 + str r4, [sp, #0x10] + str r2, [sp, #0x14] + bl FUN_020AE4A0 + mov r1, r0 + ldrh r3, [r1, #0x2] + ldrh r2, [sp, #0x30] + add r0, r7, #0x8 + bic r3, r3, #0x8000 + strh r3, [r1, #0x2] + ldrh r3, [r1, #0x2] + and r2, r2, #0x1 + orr r2, r3, r2, lsl #0xf + strh r2, [r1, #0x2] + ldrh r2, [r1, #0x2] + ldr r3, [sp, #0x4] + bic r2, r2, #0x7f00 + strh r2, [r1, #0x2] + sub r2, r1, r3 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + ldrh r3, [r1, #0x2] + and r2, r2, #0x7f + orr r2, r3, r2, lsl #0x8 + strh r2, [r1, #0x2] + ldrh r2, [r1, #0x2] + ldrh r3, [r7, #0x10] + bic r2, r2, #0xff + strh r2, [r1, #0x2] + ldrh r2, [r1, #0x2] + and r3, r3, #0xff + orr r2, r2, r3 + strh r2, [r1, #0x2] + ldr r2, [r7, #0xc] + bl FUN_020AE4D0 + mov r0, r6 + add sp, sp, #0x18 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020AE418: .word 0x00004652 +_020AE41C: .word 0x00005544 + + arm_func_start FUN_020AE420 +FUN_020AE420: ; 0x020AE420 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r5, r0 + mov r3, r1 + add r4, r5, #0x24 + str r2, [sp, #0x0] + ldr r1, _020AE498 ; =0x45585048 + add r2, r4, #0x14 + bl FUN_020ADCA4 + mov r0, #0x0 + strh r0, [r4, #0x10] + strh r0, [r4, #0x12] + ldrh r2, [r4, #0x12] + ldr r1, _020AE49C ; =0x00004652 + add r0, sp, #0x4 + bic r2, r2, #0x1 + strh r2, [r4, #0x12] + ldr r2, [r5, #0x18] + str r2, [sp, #0x4] + ldr r2, [r5, #0x1c] + str r2, [sp, #0x8] + bl FUN_020AE4A0 + str r0, [r5, #0x24] + str r0, [r4, #0x4] + mov r1, #0x0 + str r1, [r4, #0x8] + mov r0, r5 + str r1, [r4, #0xc] + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AE498: .word 0x45585048 +_020AE49C: .word 0x00004652 + + arm_func_start FUN_020AE4A0 +FUN_020AE4A0: ; 0x020AE4A0 + ldr r3, [r0, #0x0] + mov r2, #0x0 + strh r1, [r3, #0x0] + strh r2, [r3, #0x2] + ldr r1, [r0, #0x4] + add r0, r3, #0x10 + sub r0, r1, r0 + str r0, [r3, #0x4] + str r2, [r3, #0x8] + mov r0, r3 + str r2, [r3, #0xc] + bx lr + + arm_func_start FUN_020AE4D0 +FUN_020AE4D0: ; 0x020AE4D0 + str r2, [r1, #0x8] + cmp r2, #0x0 + ldrne r3, [r2, #0xc] + strne r1, [r2, #0xc] + ldreq r3, [r0, #0x0] + streq r1, [r0, #0x0] + str r3, [r1, #0xc] + cmp r3, #0x0 + strne r1, [r3, #0x8] + streq r1, [r0, #0x4] + mov r0, r1 + bx lr + + arm_func_start FUN_020AE500 +FUN_020AE500: ; 0x020AE500 + ldr r2, [r1, #0x8] + ldr r1, [r1, #0xc] + cmp r2, #0x0 + strne r1, [r2, #0xc] + streq r1, [r0, #0x0] + cmp r1, #0x0 + strne r2, [r1, #0x8] + streq r2, [r0, #0x4] + mov r0, r2 + bx lr + + arm_func_start FUN_020AE528 +FUN_020AE528: ; 0x020AE528 + ldrh r2, [r1, #0x2] + add r3, r1, #0x10 + mov r2, r2, asr #0x8 + and r2, r2, #0x7f + mov r2, r2, lsl #0x10 + sub r2, r1, r2, lsr #0x10 + str r2, [r0, #0x0] + ldr r1, [r1, #0x4] + add r1, r1, r3 + str r1, [r0, #0x4] + bx lr diff --git a/arm9/asm/NNS_FND_frameheap.s b/arm9/asm/NNS_FND_frameheap.s new file mode 100644 index 00000000..4dc662d7 --- /dev/null +++ b/arm9/asm/NNS_FND_frameheap.s @@ -0,0 +1,234 @@ + .include "asm/macros.inc" + .include "global.inc" + + .extern FUN_020ADCA4 + .extern FUN_020ADC8C + + .text + + arm_func_start FUN_020AE554 +FUN_020AE554: ; 0x020AE554 + add r2, r0, #0x24 + cmp r1, #0x0 + ldr r3, [r2, #0x8] + beq _020AE584 + cmp r3, #0x0 + beq _020AE584 +_020AE56C: + ldr r0, [r3, #0x0] + cmp r0, r1 + beq _020AE584 + ldr r3, [r3, #0xc] + cmp r3, #0x0 + bne _020AE56C +_020AE584: + cmp r3, #0x0 + moveq r0, #0x0 + bxeq lr + ldr r1, [r3, #0x4] + mov r0, #0x1 + str r1, [r2, #0x0] + ldr r1, [r3, #0x8] + str r1, [r2, #0x4] + ldr r1, [r3, #0xc] + str r1, [r2, #0x8] + bx lr + + arm_func_start FUN_020AE5B0 +FUN_020AE5B0: ; 0x020AE5B0 + stmdb sp!, {r4-r6,lr} + add r4, r0, #0x24 + ldr r5, [r0, #0x24] + mov r6, r1 + mov r0, r4 + mov r1, #0x10 + mov r2, #0x4 + bl FUN_020AE77C + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + str r6, [r0, #0x0] + str r5, [r0, #0x4] + ldr r1, [r4, #0x4] + str r1, [r0, #0x8] + ldr r1, [r4, #0x8] + str r1, [r0, #0xc] + str r0, [r4, #0x8] + mov r0, #0x1 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AE600 +FUN_020AE600: ; 0x020AE600 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + ands r1, r4, #0x1 + beq _020AE61C + bl FUN_020AE6F8 +_020AE61C: + ands r0, r4, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r0, r5 + bl FUN_020AE6C8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020AE638 +FUN_020AE638: ; 0x020AE638 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + moveq r1, #0x1 + add r1, r1, #0x3 + add r0, r0, #0x24 + cmp r2, #0x0 + bic r1, r1, #0x3 + blt _020AE668 + bl FUN_020AE77C + add sp, sp, #0x4 + ldmia sp!, {pc} +_020AE668: + rsb r2, r2, #0x0 + bl FUN_020AE710 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start thunk_FUN_020adc8c_2 +thunk_FUN_020adc8c_2: ; 0x020AE678 + ldr ip, _020AE680 ; =FUN_020ADC8C + bx r12 + .balign 4 +_020AE680: .word FUN_020ADC8C + + arm_func_start FUN_020AE684 +FUN_020AE684: ; 0x020AE684 + stmdb sp!, {lr} + sub sp, sp, #0x4 + add r1, r1, r0 + add r0, r0, #0x3 + bic r1, r1, #0x3 + bic r0, r0, #0x3 + cmp r0, r1 + bhi _020AE6B0 + sub r3, r1, r0 + cmp r3, #0x30 + bhs _020AE6BC +_020AE6B0: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {pc} +_020AE6BC: + bl FUN_020AE7E0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AE6C8 +FUN_020AE6C8: ; 0x020AE6C8 + add r2, r0, #0x24 + ldr r3, [r2, #0x8] + cmp r3, #0x0 + beq _020AE6EC +_020AE6D8: + ldr r1, [r0, #0x1c] + str r1, [r3, #0x8] + ldr r3, [r3, #0xc] + cmp r3, #0x0 + bne _020AE6D8 +_020AE6EC: + ldr r0, [r0, #0x1c] + str r0, [r2, #0x4] + bx lr + + arm_func_start FUN_020AE6F8 +FUN_020AE6F8: ; 0x020AE6F8 + ldr r1, [r0, #0x18] + add r2, r0, #0x24 + str r1, [r0, #0x24] + mov r0, #0x0 + str r0, [r2, #0x8] + bx lr + + arm_func_start FUN_020AE710 +FUN_020AE710: ; 0x020AE710 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r3, [r5, #0x4] + sub r0, r2, #0x1 + mvn r2, r0 + sub r1, r3, r1 + ldr r0, [r5, #0x0] + and r4, r2, r1 + cmp r4, r0 + addcc sp, sp, #0x4 + movcc r0, #0x0 + ldmccia sp!, {r4-r5,pc} + ldr r0, [r5, #-0x4] + sub r2, r3, r4 + and r0, r0, #0xff + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ands r0, r0, #0x1 + beq _020AE76C + mov r1, r4 + mov r0, #0x0 + bl MIi_CpuClear32 +_020AE76C: + mov r0, r4 + str r4, [r5, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020AE77C +FUN_020AE77C: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x0] + sub r2, r2, #0x1 + mvn r3, r2 + add r2, r2, r0 + and r5, r3, r2 + ldr r2, [r6, #0x4] + add r4, r1, r5 + cmp r4, r2 + movhi r0, #0x0 + ldmhiia sp!, {r4-r6,pc} + ldr r1, [r6, #-0x4] + sub r2, r4, r0 + and r1, r1, #0xff + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + ands r1, r1, #0x1 + beq _020AE7D4 + mov r1, r0 + mov r0, #0x0 + bl MIi_CpuClear32 +_020AE7D4: + mov r0, r5 + str r4, [r6, #0x0] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AE7E0 +FUN_020AE7E0: ; 0x020AE7E0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r3, r1 + add r4, r5, #0x24 + str r2, [sp, #0x0] + ldr r1, _020AE828 ; =0x46524D48 + add r2, r4, #0xc + bl FUN_020ADCA4 + ldr r0, [r5, #0x18] + mov r1, #0x0 + str r0, [r5, #0x24] + ldr r2, [r5, #0x1c] + mov r0, r5 + str r2, [r4, #0x4] + str r1, [r4, #0x8] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AE828: .word 0x46524D48 diff --git a/arm9/asm/NNS_FND_heapcommon.s b/arm9/asm/NNS_FND_heapcommon.s new file mode 100644 index 00000000..196d12b0 --- /dev/null +++ b/arm9/asm/NNS_FND_heapcommon.s @@ -0,0 +1,109 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + .global UNK_021CCD38 +UNK_021CCD38: ; 0x021CCD38 + .space 0x4 + + .global UNK_021CCD3C +UNK_021CCD3C: ; 0x021CCD3C + .space 0xc + + .text + + arm_func_start FUN_020ADC8C +FUN_020ADC8C: ; 0x020ADC8C + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020ADD30 + mov r1, r4 + bl FUN_020ADAB0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020ADCA4 +FUN_020ADCA4: + stmdb sp!, {r4,lr} + mov r4, r0 + str r1, [r4, #0x0] + str r2, [r4, #0x18] + str r3, [r4, #0x1c] + mov r0, #0x0 + str r0, [r4, #0x20] + ldr r1, [r4, #0x20] + ldrh r0, [sp, #0x8] + bic r1, r1, #0xff + str r1, [r4, #0x20] + ldr r1, [r4, #0x20] + and r0, r0, #0xff + orr r2, r1, r0 + add r0, r4, #0xc + mov r1, #0x4 + str r2, [r4, #0x20] + bl FUN_020ADC74 + ldr r0, _020ADD28 ; =UNK_021CCD38 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020ADD14 + ldr r0, _020ADD2C ; =UNK_021CCD3C + mov r1, #0x4 + bl FUN_020ADC74 + ldr r0, _020ADD28 ; =UNK_021CCD38 + mov r1, #0x1 + str r1, [r0, #0x0] +_020ADD14: + mov r0, r4 + bl FUN_020ADD30 + mov r1, r4 + bl FUN_020ADBE8 + ldmia sp!, {r4,pc} + .balign 4 +_020ADD28: .word UNK_021CCD38 +_020ADD2C: .word UNK_021CCD3C + + arm_func_start FUN_020ADD30 +FUN_020ADD30: ; 0x020ADD30 + stmdb sp!, {r4,lr} + ldr r4, _020ADD54 ; =UNK_021CCD3C + mov r1, r0 + mov r0, r4 + bl FUN_020ADD58 + cmp r0, #0x0 + addne r4, r0, #0xc + mov r0, r4 + ldmia sp!, {r4,pc} + .balign 4 +_020ADD54: .word UNK_021CCD3C + + arm_func_start FUN_020ADD58 +FUN_020ADD58: + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r1, #0x0 + mov r6, r0 + bl FUN_020ADA98 + movs r4, r0 + beq _020ADDB8 +_020ADD74: + ldr r0, [r4, #0x18] + cmp r0, r5 + bhi _020ADDA4 + ldr r0, [r4, #0x1c] + cmp r5, r0 + bhs _020ADDA4 + mov r1, r5 + add r0, r4, #0xc + bl FUN_020ADD58 + cmp r0, #0x0 + moveq r0, r4 + ldmia sp!, {r4-r6,pc} +_020ADDA4: + mov r0, r6 + mov r1, r4 + bl FUN_020ADA98 + movs r4, r0 + bne _020ADD74 +_020ADDB8: + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} diff --git a/arm9/asm/NNS_FND_list.s b/arm9/asm/NNS_FND_list.s new file mode 100644 index 00000000..9f9ff1e0 --- /dev/null +++ b/arm9/asm/NNS_FND_list.s @@ -0,0 +1,163 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start FUN_020ADA84 +FUN_020ADA84: ; 0x020ADA84 + cmp r1, #0x0 + ldreq r0, [r0, #0x4] + ldrneh r0, [r0, #0xa] + ldrne r0, [r1, r0] + bx lr + + arm_func_start FUN_020ADA98 +FUN_020ADA98: ; 0x020ADA98 + cmp r1, #0x0 + ldreq r0, [r0, #0x0] + ldrneh r0, [r0, #0xa] + addne r0, r1, r0 + ldrne r0, [r0, #0x4] + bx lr + + arm_func_start FUN_020ADAB0 +FUN_020ADAB0: ; 0x020ADAB0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r12, [r0, #0xa] + ldr r3, [r1, r12] + add lr, r1, r12 + cmp r3, #0x0 + ldreq r1, [lr, #0x4] + streq r1, [r0, #0x0] + ldrne r2, [lr, #0x4] + addne r1, r3, r12 + strne r2, [r1, #0x4] + ldr r3, [lr, #0x4] + cmp r3, #0x0 + ldreq r1, [lr, #0x0] + streq r1, [r0, #0x4] + ldrneh r1, [r0, #0xa] + ldrne r2, [lr, #0x0] + strne r2, [r3, r1] + mov r1, #0x0 + str r1, [lr, #0x0] + str r1, [lr, #0x4] + ldrh r1, [r0, #0x8] + sub r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020ADB18 +FUN_020ADB18: ; 0x020ADB18 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + bne _020ADB38 + mov r1, r2 + bl FUN_020ADBE8 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADB38: + ldr r3, [r0, #0x0] + cmp r1, r3 + bne _020ADB54 + mov r1, r2 + bl FUN_020ADB8C + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADB54: + ldrh lr, [r0, #0xa] + ldr r3, [r1, lr] + add r12, r2, lr + str r3, [r2, lr] + str r1, [r12, #0x4] + add r3, r3, lr + str r2, [r3, #0x4] + ldrh r3, [r0, #0xa] + str r2, [r1, r3] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020ADB8C +FUN_020ADB8C: ; 0x020ADB8C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + bne _020ADBAC + bl FUN_020ADC48 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADBAC: + ldrh r3, [r0, #0xa] + mov r2, #0x0 + str r2, [r1, r3] + ldr r2, [r0, #0x0] + add r3, r1, r3 + str r2, [r3, #0x4] + ldrh r2, [r0, #0xa] + ldr r3, [r0, #0x0] + str r1, [r3, r2] + str r1, [r0, #0x0] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020ADBE8 +FUN_020ADBE8: ; 0x020ADBE8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + bne _020ADC08 + bl FUN_020ADC48 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADC08: + ldrh r12, [r0, #0xa] + ldr r3, [r0, #0x4] + mov r2, #0x0 + str r3, [r1, r12] + add r3, r1, r12 + str r2, [r3, #0x4] + ldrh r2, [r0, #0xa] + ldr r3, [r0, #0x4] + add r2, r3, r2 + str r1, [r2, #0x4] + str r1, [r0, #0x4] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020ADC48 +FUN_020ADC48: ; 0x020ADC48 + ldrh r3, [r0, #0xa] + mov r2, #0x0 + add r12, r1, r3 + str r2, [r12, #0x4] + str r2, [r1, r3] + str r1, [r0, #0x0] + str r1, [r0, #0x4] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + bx lr + + arm_func_start FUN_020ADC74 +FUN_020ADC74: ; 0x020ADC74 + mov r2, #0x0 + str r2, [r0, #0x0] + str r2, [r0, #0x4] + strh r2, [r0, #0x8] + strh r1, [r0, #0xa] + bx lr + diff --git a/arm9/asm/unk_020ADA84.s b/arm9/asm/unk_020ADA84.s index 29fddc4a..7a31a3de 100644 --- a/arm9/asm/unk_020ADA84.s +++ b/arm9/asm/unk_020ADA84.s @@ -3,14 +3,11 @@ .extern SNDi_DecibelTable .extern GXi_DmaId + .extern FUN_020ADCA4 + .extern FUN_020ADC8C .section .rodata - .global UNK_020FF7CC -UNK_020FF7CC: ; 0x020FF7CC - .word FUN_020AE894 - .word FUN_020AE884 - .global UNK_020FF7D4 UNK_020FF7D4: ; 0x020FF7D4 .word FUN_020AF2B4 @@ -1466,14 +1463,6 @@ UNK_021067F0: ; 0x021067F0 .section .bss - .global UNK_021CCD38 -UNK_021CCD38: ; 0x021CCD38 - .space 0x4 - - .global UNK_021CCD3C -UNK_021CCD3C: ; 0x021CCD3C - .space 0xc - .global UNK_021CCD48 UNK_021CCD48: ; 0x021CCD48 .space 0x4 @@ -1752,1098 +1741,6 @@ UNK_021D1C88: ; 0x021D1C88 .text - arm_func_start FUN_020ADA84 -FUN_020ADA84: ; 0x020ADA84 - cmp r1, #0x0 - ldreq r0, [r0, #0x4] - ldrneh r0, [r0, #0xa] - ldrne r0, [r1, r0] - bx lr - - arm_func_start FUN_020ADA98 -FUN_020ADA98: ; 0x020ADA98 - cmp r1, #0x0 - ldreq r0, [r0, #0x0] - ldrneh r0, [r0, #0xa] - addne r0, r1, r0 - ldrne r0, [r0, #0x4] - bx lr - - arm_func_start FUN_020ADAB0 -FUN_020ADAB0: ; 0x020ADAB0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r12, [r0, #0xa] - ldr r3, [r1, r12] - add lr, r1, r12 - cmp r3, #0x0 - ldreq r1, [lr, #0x4] - streq r1, [r0, #0x0] - ldrne r2, [lr, #0x4] - addne r1, r3, r12 - strne r2, [r1, #0x4] - ldr r3, [lr, #0x4] - cmp r3, #0x0 - ldreq r1, [lr, #0x0] - streq r1, [r0, #0x4] - ldrneh r1, [r0, #0xa] - ldrne r2, [lr, #0x0] - strne r2, [r3, r1] - mov r1, #0x0 - str r1, [lr, #0x0] - str r1, [lr, #0x4] - ldrh r1, [r0, #0x8] - sub r1, r1, #0x1 - strh r1, [r0, #0x8] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020ADB18 -FUN_020ADB18: ; 0x020ADB18 - stmdb sp!, {lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - bne _020ADB38 - mov r1, r2 - bl FUN_020ADBE8 - add sp, sp, #0x4 - ldmia sp!, {pc} -_020ADB38: - ldr r3, [r0, #0x0] - cmp r1, r3 - bne _020ADB54 - mov r1, r2 - bl FUN_020ADB8C - add sp, sp, #0x4 - ldmia sp!, {pc} -_020ADB54: - ldrh lr, [r0, #0xa] - ldr r3, [r1, lr] - add r12, r2, lr - str r3, [r2, lr] - str r1, [r12, #0x4] - add r3, r3, lr - str r2, [r3, #0x4] - ldrh r3, [r0, #0xa] - str r2, [r1, r3] - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020ADB8C -FUN_020ADB8C: ; 0x020ADB8C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x0] - cmp r2, #0x0 - bne _020ADBAC - bl FUN_020ADC48 - add sp, sp, #0x4 - ldmia sp!, {pc} -_020ADBAC: - ldrh r3, [r0, #0xa] - mov r2, #0x0 - str r2, [r1, r3] - ldr r2, [r0, #0x0] - add r3, r1, r3 - str r2, [r3, #0x4] - ldrh r2, [r0, #0xa] - ldr r3, [r0, #0x0] - str r1, [r3, r2] - str r1, [r0, #0x0] - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020ADBE8 -FUN_020ADBE8: ; 0x020ADBE8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x0] - cmp r2, #0x0 - bne _020ADC08 - bl FUN_020ADC48 - add sp, sp, #0x4 - ldmia sp!, {pc} -_020ADC08: - ldrh r12, [r0, #0xa] - ldr r3, [r0, #0x4] - mov r2, #0x0 - str r3, [r1, r12] - add r3, r1, r12 - str r2, [r3, #0x4] - ldrh r2, [r0, #0xa] - ldr r3, [r0, #0x4] - add r2, r3, r2 - str r1, [r2, #0x4] - str r1, [r0, #0x4] - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020ADC48 -FUN_020ADC48: ; 0x020ADC48 - ldrh r3, [r0, #0xa] - mov r2, #0x0 - add r12, r1, r3 - str r2, [r12, #0x4] - str r2, [r1, r3] - str r1, [r0, #0x0] - str r1, [r0, #0x4] - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - bx lr - - arm_func_start FUN_020ADC74 -FUN_020ADC74: ; 0x020ADC74 - mov r2, #0x0 - str r2, [r0, #0x0] - str r2, [r0, #0x4] - strh r2, [r0, #0x8] - strh r1, [r0, #0xa] - bx lr - - arm_func_start FUN_020ADC8C -FUN_020ADC8C: ; 0x020ADC8C - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020ADD30 - mov r1, r4 - bl FUN_020ADAB0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020ADCA4 -FUN_020ADCA4: - stmdb sp!, {r4,lr} - mov r4, r0 - str r1, [r4, #0x0] - str r2, [r4, #0x18] - str r3, [r4, #0x1c] - mov r0, #0x0 - str r0, [r4, #0x20] - ldr r1, [r4, #0x20] - ldrh r0, [sp, #0x8] - bic r1, r1, #0xff - str r1, [r4, #0x20] - ldr r1, [r4, #0x20] - and r0, r0, #0xff - orr r2, r1, r0 - add r0, r4, #0xc - mov r1, #0x4 - str r2, [r4, #0x20] - bl FUN_020ADC74 - ldr r0, _020ADD28 ; =UNK_021CCD38 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020ADD14 - ldr r0, _020ADD2C ; =UNK_021CCD3C - mov r1, #0x4 - bl FUN_020ADC74 - ldr r0, _020ADD28 ; =UNK_021CCD38 - mov r1, #0x1 - str r1, [r0, #0x0] -_020ADD14: - mov r0, r4 - bl FUN_020ADD30 - mov r1, r4 - bl FUN_020ADBE8 - ldmia sp!, {r4,pc} - .balign 4 -_020ADD28: .word UNK_021CCD38 -_020ADD2C: .word UNK_021CCD3C - - arm_func_start FUN_020ADD30 -FUN_020ADD30: ; 0x020ADD30 - stmdb sp!, {r4,lr} - ldr r4, _020ADD54 ; =UNK_021CCD3C - mov r1, r0 - mov r0, r4 - bl FUN_020ADD58 - cmp r0, #0x0 - addne r4, r0, #0xc - mov r0, r4 - ldmia sp!, {r4,pc} - .balign 4 -_020ADD54: .word UNK_021CCD3C - - arm_func_start FUN_020ADD58 -FUN_020ADD58: - stmdb sp!, {r4-r6,lr} - mov r5, r1 - mov r1, #0x0 - mov r6, r0 - bl FUN_020ADA98 - movs r4, r0 - beq _020ADDB8 -_020ADD74: - ldr r0, [r4, #0x18] - cmp r0, r5 - bhi _020ADDA4 - ldr r0, [r4, #0x1c] - cmp r5, r0 - bhs _020ADDA4 - mov r1, r5 - add r0, r4, #0xc - bl FUN_020ADD58 - cmp r0, #0x0 - moveq r0, r4 - ldmia sp!, {r4-r6,pc} -_020ADDA4: - mov r0, r6 - mov r1, r4 - bl FUN_020ADA98 - movs r4, r0 - bne _020ADD74 -_020ADDB8: - mov r0, #0x0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020ADDC0 -FUN_020ADDC0: ; 0x020ADDC0 - ldr r0, [r0, #-0xc] - bx lr - - arm_func_start FUN_020ADDC8 -FUN_020ADDC8: ; 0x020ADDC8 - ldr r2, [r0, #0x24] - mov r0, #0x0 - cmp r2, #0x0 - bxeq lr -_020ADDD8: - ldr r1, [r2, #0x4] - ldr r2, [r2, #0xc] - add r0, r0, r1 - cmp r2, #0x0 - bne _020ADDD8 - bx lr - - arm_func_start FUN_020ADDF0 -FUN_020ADDF0: ; 0x020ADDF0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - sub r4, r1, #0x10 - add r5, r0, #0x24 - add r0, sp, #0x0 - mov r1, r4 - bl FUN_020AE528 - mov r1, r4 - add r0, r5, #0x8 - bl FUN_020AE500 - add r1, sp, #0x0 - mov r0, r5 - bl FUN_020AE02C - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020ADE2C -FUN_020ADE2C: ; 0x020ADE2C - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x10 - mov r4, r1 - mov r10, r2 - sub r6, r4, #0x10 - add r1, r10, #0x3 - mov r5, r0 - ldr r8, [r6, #0x4] - bic r10, r1, #0x3 - cmp r10, r8 - add r7, r5, #0x24 - addeq sp, sp, #0x10 - moveq r0, r10 - ldmeqia sp!, {r4-r10,pc} - cmp r10, r8 - bls _020ADF60 - ldr r9, [r7, #0x0] - add r0, r6, #0x10 - cmp r9, #0x0 - add r0, r8, r0 - beq _020ADE94 -_020ADE80: - cmp r9, r0 - beq _020ADE94 - ldr r9, [r9, #0xc] - cmp r9, #0x0 - bne _020ADE80 -_020ADE94: - cmp r9, #0x0 - beq _020ADEB0 - ldr r0, [r9, #0x4] - add r1, r8, #0x10 - add r0, r1, r0 - cmp r10, r0 - bls _020ADEBC -_020ADEB0: - add sp, sp, #0x10 - mov r0, #0x0 - ldmia sp!, {r4-r10,pc} -_020ADEBC: - add r0, sp, #0x0 - mov r1, r9 - bl FUN_020AE528 - mov r0, r7 - mov r1, r9 - bl FUN_020AE500 - ldr r2, [sp, #0x4] - add r3, r10, r4 - ldr r9, [sp, #0x0] - sub r1, r2, r3 - str r3, [sp, #0x0] - cmp r1, #0x10 - strcc r2, [sp, #0x0] - mov r8, r0 - ldr r0, [sp, #0x0] - sub r0, r0, r4 - str r0, [r6, #0x4] - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x0] - sub r0, r1, r0 - cmp r0, #0x10 - blo _020ADF30 - ldr r1, _020ADF9C ; =0x00004652 - add r0, sp, #0x0 - bl FUN_020AE4A0 - mov r1, r0 - mov r0, r7 - mov r2, r8 - bl FUN_020AE4D0 -_020ADF30: - ldr r0, [r5, #0x20] - ldr r1, [sp, #0x0] - and r0, r0, #0xff - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - sub r2, r1, r9 - ands r0, r0, #0x1 - beq _020ADF90 - mov r1, r9 - mov r0, #0x0 - bl MIi_CpuClear32 - b _020ADF90 -_020ADF60: - add r0, r10, r4 - str r0, [sp, #0x8] - ldr r1, [r6, #0x4] - add r0, r6, #0x10 - add r0, r1, r0 - str r0, [sp, #0xc] - add r1, sp, #0x8 - mov r0, r7 - str r10, [r6, #0x4] - bl FUN_020AE02C - cmp r0, #0x0 - streq r8, [r6, #0x4] -_020ADF90: - ldr r0, [r6, #0x4] - add sp, sp, #0x10 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020ADF9C: .word 0x00004652 - - arm_func_start tempName_NNS_FndAllocFromExpHeapEx -tempName_NNS_FndAllocFromExpHeapEx: ; 0x020ADFA0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - moveq r1, #0x1 - add r1, r1, #0x3 - cmp r2, #0x0 - bic r1, r1, #0x3 - blt _020ADFCC - bl FUN_020AE1D8 - add sp, sp, #0x4 - ldmia sp!, {pc} -_020ADFCC: - rsb r2, r2, #0x0 - bl FUN_020AE11C - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start thunk_FUN_020adc8c -thunk_FUN_020adc8c: ; 0x020ADFDC - ldr ip, _020ADFE4 ; =FUN_020ADC8C - bx r12 - .balign 4 -_020ADFE4: .word FUN_020ADC8C - - arm_func_start tempName_NNS_FndCreateExpHeapEx -tempName_NNS_FndCreateExpHeapEx: ; 0x020ADFE8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - add r1, r1, r0 - add r0, r0, #0x3 - bic r1, r1, #0x3 - bic r0, r0, #0x3 - cmp r0, r1 - bhi _020AE014 - sub r3, r1, r0 - cmp r3, #0x4c - bhs _020AE020 -_020AE014: - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {pc} -_020AE020: - bl FUN_020AE420 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AE02C -FUN_020AE02C: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r5, r1 - ldr r2, [r5, #0x0] - ldr r1, [r5, #0x4] - mov r6, r0 - str r2, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [r6, #0x0] - mov r4, #0x0 - cmp r1, #0x0 - beq _020AE0A0 - ldr r0, [r5, #0x0] -_020AE060: - cmp r1, r0 - movcc r4, r1 - blo _020AE094 - ldr r0, [r5, #0x4] - cmp r1, r0 - bne _020AE0A0 - ldr r2, [r1, #0x4] - add r0, r1, #0x10 - add r2, r2, r0 - mov r0, r6 - str r2, [sp, #0x4] - bl FUN_020AE500 - b _020AE0A0 -_020AE094: - ldr r1, [r1, #0xc] - cmp r1, #0x0 - bne _020AE060 -_020AE0A0: - cmp r4, #0x0 - beq _020AE0D4 - ldr r2, [r4, #0x4] - add r1, r4, #0x10 - ldr r0, [r5, #0x0] - add r1, r2, r1 - cmp r1, r0 - bne _020AE0D4 - mov r0, r6 - mov r1, r4 - str r4, [sp, #0x0] - bl FUN_020AE500 - mov r4, r0 -_020AE0D4: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x0] - sub r0, r1, r0 - cmp r0, #0x10 - addcc sp, sp, #0x8 - movcc r0, #0x0 - ldmccia sp!, {r4-r6,pc} - ldr r1, _020AE118 ; =0x00004652 - add r0, sp, #0x0 - bl FUN_020AE4A0 - mov r1, r0 - mov r0, r6 - mov r2, r4 - bl FUN_020AE4D0 - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020AE118: .word 0x00004652 - - arm_func_start FUN_020AE11C -FUN_020AE11C: ; 0x020AE11C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - add r0, r0, #0x24 - ldrh r4, [r0, #0x12] - mov r3, r1 - mvn lr, #0x0 - and r1, r4, #0x1 - mov r1, r1, lsl #0x10 - movs r1, r1, lsr #0x10 - moveq r5, #0x1 - mov r1, #0x0 - ldr r4, [r0, #0x4] - movne r5, #0x0 - mov r12, r1 - cmp r4, #0x0 - beq _020AE1B0 - sub r2, r2, #0x1 - mvn r2, r2 -_020AE164: - ldr r8, [r4, #0x4] - add r9, r4, #0x10 - add r6, r8, r9 - sub r6, r6, r3 - and r7, r2, r6 - subs r6, r7, r9 - bmi _020AE1A4 - cmp lr, r8 - bls _020AE1A4 - mov r1, r4 - mov lr, r8 - mov r12, r7 - cmp r5, #0x0 - bne _020AE1B0 - cmp r8, r3 - beq _020AE1B0 -_020AE1A4: - ldr r4, [r4, #0x8] - cmp r4, #0x0 - bne _020AE164 -_020AE1B0: - cmp r1, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - mov r4, #0x1 - mov r2, r12 - str r4, [sp, #0x0] - bl FUN_020AE298 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020AE1D8 -FUN_020AE1D8: ; 0x020AE1D8 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - add r0, r0, #0x24 - ldrh r4, [r0, #0x12] - mov r3, r1 - ldr r5, [r0, #0x0] - and r1, r4, #0x1 - mov r1, r1, lsl #0x10 - movs r1, r1, lsr #0x10 - moveq r6, #0x1 - mov r1, #0x0 - movne r6, #0x0 - mov lr, r1 - cmp r5, #0x0 - mvn r4, #0x0 - beq _020AE270 - sub r12, r2, #0x1 - mvn r2, r12 -_020AE220: - add r8, r5, #0x10 - add r7, r12, r8 - and r9, r2, r7 - sub r7, r9, r8 - ldr r8, [r5, #0x4] - add r7, r3, r7 - cmp r8, r7 - blo _020AE264 - cmp r4, r8 - bls _020AE264 - mov r1, r5 - mov r4, r8 - mov lr, r9 - cmp r6, #0x0 - bne _020AE270 - cmp r8, r3 - beq _020AE270 -_020AE264: - ldr r5, [r5, #0xc] - cmp r5, #0x0 - bne _020AE220 -_020AE270: - cmp r1, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - mov r4, #0x0 - mov r2, lr - str r4, [sp, #0x0] - bl FUN_020AE298 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - - arm_func_start FUN_020AE298 -FUN_020AE298: ; 0x020AE298 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x18 - mov r7, r0 - add r0, sp, #0x0 - mov r8, r1 - mov r6, r2 - mov r5, r3 - bl FUN_020AE528 - ldr r3, [sp, #0x4] - sub r4, r6, #0x10 - add r2, r5, r6 - mov r0, r7 - mov r1, r8 - str r4, [sp, #0x4] - str r3, [sp, #0xc] - str r2, [sp, #0x8] - bl FUN_020AE500 - ldr r2, [sp, #0x0] - ldr r1, [sp, #0x4] - mov r5, r0 - sub r0, r1, r2 - cmp r0, #0x10 - strcc r2, [sp, #0x4] - blo _020AE318 - ldr r1, _020AE418 ; =0x00004652 - add r0, sp, #0x0 - bl FUN_020AE4A0 - mov r1, r0 - mov r0, r7 - mov r2, r5 - bl FUN_020AE4D0 - mov r5, r0 -_020AE318: - ldr r1, [sp, #0xc] - ldr r0, [sp, #0x8] - sub r0, r1, r0 - cmp r0, #0x10 - strcc r1, [sp, #0x8] - blo _020AE34C - ldr r1, _020AE418 ; =0x00004652 - add r0, sp, #0x8 - bl FUN_020AE4A0 - mov r1, r0 - mov r0, r7 - mov r2, r5 - bl FUN_020AE4D0 -_020AE34C: - ldr r0, [r7, #-0x4] - ldr r1, [sp, #0x4] - and r0, r0, #0xff - mov r0, r0, lsl #0x10 - ldr r2, [sp, #0x8] - mov r0, r0, lsr #0x10 - sub r2, r2, r1 - ands r0, r0, #0x1 - beq _020AE378 - mov r0, #0x0 - bl MIi_CpuClear32 -_020AE378: - ldr r2, [sp, #0x8] - ldr r1, _020AE41C ; =0x00005544 - add r0, sp, #0x10 - str r4, [sp, #0x10] - str r2, [sp, #0x14] - bl FUN_020AE4A0 - mov r1, r0 - ldrh r3, [r1, #0x2] - ldrh r2, [sp, #0x30] - add r0, r7, #0x8 - bic r3, r3, #0x8000 - strh r3, [r1, #0x2] - ldrh r3, [r1, #0x2] - and r2, r2, #0x1 - orr r2, r3, r2, lsl #0xf - strh r2, [r1, #0x2] - ldrh r2, [r1, #0x2] - ldr r3, [sp, #0x4] - bic r2, r2, #0x7f00 - strh r2, [r1, #0x2] - sub r2, r1, r3 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - ldrh r3, [r1, #0x2] - and r2, r2, #0x7f - orr r2, r3, r2, lsl #0x8 - strh r2, [r1, #0x2] - ldrh r2, [r1, #0x2] - ldrh r3, [r7, #0x10] - bic r2, r2, #0xff - strh r2, [r1, #0x2] - ldrh r2, [r1, #0x2] - and r3, r3, #0xff - orr r2, r2, r3 - strh r2, [r1, #0x2] - ldr r2, [r7, #0xc] - bl FUN_020AE4D0 - mov r0, r6 - add sp, sp, #0x18 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020AE418: .word 0x00004652 -_020AE41C: .word 0x00005544 - - arm_func_start FUN_020AE420 -FUN_020AE420: ; 0x020AE420 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - mov r5, r0 - mov r3, r1 - add r4, r5, #0x24 - str r2, [sp, #0x0] - ldr r1, _020AE498 ; =0x45585048 - add r2, r4, #0x14 - bl FUN_020ADCA4 - mov r0, #0x0 - strh r0, [r4, #0x10] - strh r0, [r4, #0x12] - ldrh r2, [r4, #0x12] - ldr r1, _020AE49C ; =0x00004652 - add r0, sp, #0x4 - bic r2, r2, #0x1 - strh r2, [r4, #0x12] - ldr r2, [r5, #0x18] - str r2, [sp, #0x4] - ldr r2, [r5, #0x1c] - str r2, [sp, #0x8] - bl FUN_020AE4A0 - str r0, [r5, #0x24] - str r0, [r4, #0x4] - mov r1, #0x0 - str r1, [r4, #0x8] - mov r0, r5 - str r1, [r4, #0xc] - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AE498: .word 0x45585048 -_020AE49C: .word 0x00004652 - - arm_func_start FUN_020AE4A0 -FUN_020AE4A0: ; 0x020AE4A0 - ldr r3, [r0, #0x0] - mov r2, #0x0 - strh r1, [r3, #0x0] - strh r2, [r3, #0x2] - ldr r1, [r0, #0x4] - add r0, r3, #0x10 - sub r0, r1, r0 - str r0, [r3, #0x4] - str r2, [r3, #0x8] - mov r0, r3 - str r2, [r3, #0xc] - bx lr - - arm_func_start FUN_020AE4D0 -FUN_020AE4D0: ; 0x020AE4D0 - str r2, [r1, #0x8] - cmp r2, #0x0 - ldrne r3, [r2, #0xc] - strne r1, [r2, #0xc] - ldreq r3, [r0, #0x0] - streq r1, [r0, #0x0] - str r3, [r1, #0xc] - cmp r3, #0x0 - strne r1, [r3, #0x8] - streq r1, [r0, #0x4] - mov r0, r1 - bx lr - - arm_func_start FUN_020AE500 -FUN_020AE500: ; 0x020AE500 - ldr r2, [r1, #0x8] - ldr r1, [r1, #0xc] - cmp r2, #0x0 - strne r1, [r2, #0xc] - streq r1, [r0, #0x0] - cmp r1, #0x0 - strne r2, [r1, #0x8] - streq r2, [r0, #0x4] - mov r0, r2 - bx lr - - arm_func_start FUN_020AE528 -FUN_020AE528: ; 0x020AE528 - ldrh r2, [r1, #0x2] - add r3, r1, #0x10 - mov r2, r2, asr #0x8 - and r2, r2, #0x7f - mov r2, r2, lsl #0x10 - sub r2, r1, r2, lsr #0x10 - str r2, [r0, #0x0] - ldr r1, [r1, #0x4] - add r1, r1, r3 - str r1, [r0, #0x4] - bx lr - - arm_func_start FUN_020AE554 -FUN_020AE554: ; 0x020AE554 - add r2, r0, #0x24 - cmp r1, #0x0 - ldr r3, [r2, #0x8] - beq _020AE584 - cmp r3, #0x0 - beq _020AE584 -_020AE56C: - ldr r0, [r3, #0x0] - cmp r0, r1 - beq _020AE584 - ldr r3, [r3, #0xc] - cmp r3, #0x0 - bne _020AE56C -_020AE584: - cmp r3, #0x0 - moveq r0, #0x0 - bxeq lr - ldr r1, [r3, #0x4] - mov r0, #0x1 - str r1, [r2, #0x0] - ldr r1, [r3, #0x8] - str r1, [r2, #0x4] - ldr r1, [r3, #0xc] - str r1, [r2, #0x8] - bx lr - - arm_func_start FUN_020AE5B0 -FUN_020AE5B0: ; 0x020AE5B0 - stmdb sp!, {r4-r6,lr} - add r4, r0, #0x24 - ldr r5, [r0, #0x24] - mov r6, r1 - mov r0, r4 - mov r1, #0x10 - mov r2, #0x4 - bl FUN_020AE77C - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - str r6, [r0, #0x0] - str r5, [r0, #0x4] - ldr r1, [r4, #0x4] - str r1, [r0, #0x8] - ldr r1, [r4, #0x8] - str r1, [r0, #0xc] - str r0, [r4, #0x8] - mov r0, #0x1 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AE600 -FUN_020AE600: ; 0x020AE600 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r5, r0 - ands r1, r4, #0x1 - beq _020AE61C - bl FUN_020AE6F8 -_020AE61C: - ands r0, r4, #0x2 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - mov r0, r5 - bl FUN_020AE6C8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020AE638 -FUN_020AE638: ; 0x020AE638 - stmdb sp!, {lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - moveq r1, #0x1 - add r1, r1, #0x3 - add r0, r0, #0x24 - cmp r2, #0x0 - bic r1, r1, #0x3 - blt _020AE668 - bl FUN_020AE77C - add sp, sp, #0x4 - ldmia sp!, {pc} -_020AE668: - rsb r2, r2, #0x0 - bl FUN_020AE710 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start thunk_FUN_020adc8c_2 -thunk_FUN_020adc8c_2: ; 0x020AE678 - ldr ip, _020AE680 ; =FUN_020ADC8C - bx r12 - .balign 4 -_020AE680: .word FUN_020ADC8C - - arm_func_start FUN_020AE684 -FUN_020AE684: ; 0x020AE684 - stmdb sp!, {lr} - sub sp, sp, #0x4 - add r1, r1, r0 - add r0, r0, #0x3 - bic r1, r1, #0x3 - bic r0, r0, #0x3 - cmp r0, r1 - bhi _020AE6B0 - sub r3, r1, r0 - cmp r3, #0x30 - bhs _020AE6BC -_020AE6B0: - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {pc} -_020AE6BC: - bl FUN_020AE7E0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AE6C8 -FUN_020AE6C8: ; 0x020AE6C8 - add r2, r0, #0x24 - ldr r3, [r2, #0x8] - cmp r3, #0x0 - beq _020AE6EC -_020AE6D8: - ldr r1, [r0, #0x1c] - str r1, [r3, #0x8] - ldr r3, [r3, #0xc] - cmp r3, #0x0 - bne _020AE6D8 -_020AE6EC: - ldr r0, [r0, #0x1c] - str r0, [r2, #0x4] - bx lr - - arm_func_start FUN_020AE6F8 -FUN_020AE6F8: ; 0x020AE6F8 - ldr r1, [r0, #0x18] - add r2, r0, #0x24 - str r1, [r0, #0x24] - mov r0, #0x0 - str r0, [r2, #0x8] - bx lr - - arm_func_start FUN_020AE710 -FUN_020AE710: ; 0x020AE710 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r3, [r5, #0x4] - sub r0, r2, #0x1 - mvn r2, r0 - sub r1, r3, r1 - ldr r0, [r5, #0x0] - and r4, r2, r1 - cmp r4, r0 - addcc sp, sp, #0x4 - movcc r0, #0x0 - ldmccia sp!, {r4-r5,pc} - ldr r0, [r5, #-0x4] - sub r2, r3, r4 - and r0, r0, #0xff - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - ands r0, r0, #0x1 - beq _020AE76C - mov r1, r4 - mov r0, #0x0 - bl MIi_CpuClear32 -_020AE76C: - mov r0, r4 - str r4, [r5, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020AE77C -FUN_020AE77C: - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r0, [r6, #0x0] - sub r2, r2, #0x1 - mvn r3, r2 - add r2, r2, r0 - and r5, r3, r2 - ldr r2, [r6, #0x4] - add r4, r1, r5 - cmp r4, r2 - movhi r0, #0x0 - ldmhiia sp!, {r4-r6,pc} - ldr r1, [r6, #-0x4] - sub r2, r4, r0 - and r1, r1, #0xff - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - ands r1, r1, #0x1 - beq _020AE7D4 - mov r1, r0 - mov r0, #0x0 - bl MIi_CpuClear32 -_020AE7D4: - mov r0, r5 - str r4, [r6, #0x0] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020AE7E0 -FUN_020AE7E0: ; 0x020AE7E0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r3, r1 - add r4, r5, #0x24 - str r2, [sp, #0x0] - ldr r1, _020AE828 ; =0x46524D48 - add r2, r4, #0xc - bl FUN_020ADCA4 - ldr r0, [r5, #0x18] - mov r1, #0x0 - str r0, [r5, #0x24] - ldr r2, [r5, #0x1c] - mov r0, r5 - str r2, [r4, #0x4] - str r1, [r4, #0x8] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AE828: .word 0x46524D48 - - arm_func_start FUN_020AE82C -FUN_020AE82C: ; 0x020AE82C - ldr ip, _020AE848 ; =UNK_020FF7CC - mov r3, #0x0 - str r12, [r0, #0x0] - str r1, [r0, #0x4] - str r2, [r0, #0x8] - str r3, [r0, #0xc] - bx lr - .balign 4 -_020AE848: .word UNK_020FF7CC - - arm_func_start FUN_020AE84C -FUN_020AE84C: ; 0x020AE84C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x0] - ldr r2, [r2, #0x4] - blx r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AE868 -FUN_020AE868: ; 0x020AE868 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x0] - ldr r2, [r2, #0x0] - blx r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020AE884 -FUN_020AE884: ; 0x020AE884 - ldr ip, _020AE890 ; =FUN_020ADDF0 - ldr r0, [r0, #0x4] - bx r12 - .balign 4 -_020AE890: .word FUN_020ADDF0 - - arm_func_start FUN_020AE894 -FUN_020AE894: ; 0x020AE894 - ldr ip, _020AE8A8 ; =tempName_NNS_FndAllocFromExpHeapEx - mov r2, r0 - ldr r0, [r2, #0x4] - ldr r2, [r2, #0x8] - bx r12 - .balign 4 -_020AE8A8: .word tempName_NNS_FndAllocFromExpHeapEx - arm_func_start FUN_020AE8AC FUN_020AE8AC: ; 0x020AE8AC mvn r0, #0x0 -- cgit v1.2.3 From de8a5e2c14aa91d95c30f77944f266b1e1a0ff0e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 23 May 2021 07:16:39 -0400 Subject: Split FX_sincos --- arm9/asm/NNS_FND_allocator.s | 1 + arm9/asm/unk_02006D98.s | 10 +- arm9/asm/unk_0200E850.s | 10 +- arm9/asm/unk_02011744.s | 2 +- arm9/asm/unk_02012944.s | 4 +- arm9/asm/unk_02013CD4.s | 6 +- arm9/asm/unk_02014BF4.s | 30 +- arm9/asm/unk_0201C7A0.s | 14 +- arm9/asm/unk_0201E7D8.s | 38 +- arm9/asm/unk_0201F06C.s | 6 +- arm9/asm/unk_02053750.s | 10 +- arm9/asm/unk_0208AC14.s | 44 +- arm9/asm/unk_020ADA84.s | 1135 ++---------------------------------------- 13 files changed, 141 insertions(+), 1169 deletions(-) (limited to 'arm9/asm') diff --git a/arm9/asm/NNS_FND_allocator.s b/arm9/asm/NNS_FND_allocator.s index e93809af..f6e77344 100644 --- a/arm9/asm/NNS_FND_allocator.s +++ b/arm9/asm/NNS_FND_allocator.s @@ -3,6 +3,7 @@ .rodata + ; static const in function .global UNK_020FF7CC UNK_020FF7CC: ; 0x020FF7CC .word FUN_020AE894 diff --git a/arm9/asm/unk_02006D98.s b/arm9/asm/unk_02006D98.s index 0e1ff930..c1e95596 100644 --- a/arm9/asm/unk_02006D98.s +++ b/arm9/asm/unk_02006D98.s @@ -2,7 +2,7 @@ .include "global.inc" .extern UNK_020ECD4C - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .section .rodata @@ -349,7 +349,7 @@ _02006F7E: ldrh r0, [r4, #0x38] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _02007268 ; =UNK_020FFA38 + ldr r0, _02007268 ; =FX_SinCosTable_ add r2, r0, r1 ldrsh r0, [r0, r1] mov r1, #0x2 @@ -358,7 +358,7 @@ _02006F7E: ldrh r0, [r4, #0x3a] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _02007268 ; =UNK_020FFA38 + ldr r0, _02007268 ; =FX_SinCosTable_ add r2, r0, r1 ldrsh r0, [r0, r1] mov r1, #0x2 @@ -367,7 +367,7 @@ _02006F7E: ldrh r0, [r4, #0x3c] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _02007268 ; =UNK_020FFA38 + ldr r0, _02007268 ; =FX_SinCosTable_ add r2, r0, r1 ldrsh r0, [r0, r1] mov r1, #0x2 @@ -689,7 +689,7 @@ _02007258: .word 0x000002E3 _0200725C: .word 0x04000454 _02007260: .word 0x040004AC _02007264: .word 0x04000470 -_02007268: .word UNK_020FFA38 +_02007268: .word FX_SinCosTable_ _0200726C: .word 0x040004C0 _02007270: .word 0x00004210 _02007274: .word 0x040004A4 diff --git a/arm9/asm/unk_0200E850.s b/arm9/asm/unk_0200E850.s index 15526585..f42d0a24 100644 --- a/arm9/asm/unk_0200E850.s +++ b/arm9/asm/unk_0200E850.s @@ -1,7 +1,7 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .section .rodata @@ -1353,7 +1353,7 @@ FUN_0200F0B4: ; 0x0200F0B4 asr r0, r0, #0x4 lsl r1, r0, #0x1 lsl r0, r1, #0x1 - ldr r2, _0200F0C8 ; =UNK_020FFA38 + ldr r2, _0200F0C8 ; =FX_SinCosTable_ add r1, r1, #0x1 lsl r1, r1, #0x1 ldr r3, _0200F0CC ; =FX_Div @@ -1361,7 +1361,7 @@ FUN_0200F0B4: ; 0x0200F0B4 ldrsh r1, [r2, r1] bx r3 .balign 4 -_0200F0C8: .word UNK_020FFA38 +_0200F0C8: .word FX_SinCosTable_ _0200F0CC: .word FX_Div thumb_func_start FUN_0200F0D0 @@ -4153,7 +4153,7 @@ FUN_020105A0: ; 0x020105A0 ldr r2, [r4, #0xc] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _02010680 ; =UNK_020FFA38 + ldr r0, _02010680 ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -4249,7 +4249,7 @@ _02010634: add sp, #0x110 pop {r4-r7, pc} .balign 4 -_02010680: .word UNK_020FFA38 +_02010680: .word FX_SinCosTable_ _02010684: .word 0x0000FFFF thumb_func_start FUN_02010688 diff --git a/arm9/asm/unk_02011744.s b/arm9/asm/unk_02011744.s index 40ddf1ab..fc5c7b32 100644 --- a/arm9/asm/unk_02011744.s +++ b/arm9/asm/unk_02011744.s @@ -1,7 +1,7 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .section .rodata diff --git a/arm9/asm/unk_02012944.s b/arm9/asm/unk_02012944.s index 03ccc1ea..1c1f2ab2 100644 --- a/arm9/asm/unk_02012944.s +++ b/arm9/asm/unk_02012944.s @@ -323,7 +323,7 @@ FUN_02012B88: ; 0x02012B88 _02012BA0: asr r0, r4, #0x4 lsl r1, r0, #0x2 - ldr r0, _02012BDC ; =UNK_020FFA38 + ldr r0, _02012BDC ; =FX_SinCosTable_ ldr r2, [sp, #0x4] ldrsh r0, [r0, r1] ldr r3, [sp, #0x8] @@ -351,7 +351,7 @@ _02012BD6: add sp, #0xc pop {r4-r7, pc} nop -_02012BDC: .word UNK_020FFA38 +_02012BDC: .word FX_SinCosTable_ _02012BE0: .word 0x00000000 thumb_func_start FUN_02012BE4 diff --git a/arm9/asm/unk_02013CD4.s b/arm9/asm/unk_02013CD4.s index 7f278032..f4fc4db4 100644 --- a/arm9/asm/unk_02013CD4.s +++ b/arm9/asm/unk_02013CD4.s @@ -2,7 +2,7 @@ .include "global.inc" .extern UNK_021064C0 - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .extern UNK_021064B8 .extern UNK_021064C4 .extern UNK_021064BC @@ -741,7 +741,7 @@ _02014172: str r1, [r3, #0x0] str r2, [r3, #0x0] ldr r0, [r5, #0x18] - ldr r1, _0201420C ; =UNK_020FFA38 + ldr r1, _0201420C ; =FX_SinCosTable_ asr r0, r0, #0x4 lsl r2, r0, #0x1 lsl r0, r2, #0x1 @@ -793,7 +793,7 @@ _020141FC: .word 0x7FFF8000 _02014200: .word 0x00004210 _02014204: .word 0x040004AC _02014208: .word 0x04000470 -_0201420C: .word UNK_020FFA38 +_0201420C: .word FX_SinCosTable_ _02014210: .word 0x0400046C _02014214: .word 0x04000448 diff --git a/arm9/asm/unk_02014BF4.s b/arm9/asm/unk_02014BF4.s index 20e8fa45..a8205c88 100644 --- a/arm9/asm/unk_02014BF4.s +++ b/arm9/asm/unk_02014BF4.s @@ -1,7 +1,7 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .section .rodata @@ -1311,7 +1311,7 @@ FUN_0201551C: ; 0x0201551C ldr r2, [sp, #0x4] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _0201554C ; =UNK_020FFA38 + ldr r0, _0201554C ; =FX_SinCosTable_ ldrsh r0, [r0, r1] mul r0, r2 asr r1, r0, #0xc @@ -1323,7 +1323,7 @@ FUN_0201551C: ; 0x0201551C add sp, #0xc pop {r3-r4, pc} nop -_0201554C: .word UNK_020FFA38 +_0201554C: .word FX_SinCosTable_ thumb_func_start FUN_02015550 FUN_02015550: ; 0x02015550 @@ -1340,7 +1340,7 @@ FUN_02015550: ; 0x02015550 lsl r1, r1, #0x1 add r1, r1, #0x1 lsl r2, r1, #0x1 - ldr r1, _02015584 ; =UNK_020FFA38 + ldr r1, _02015584 ; =FX_SinCosTable_ ldrsh r1, [r1, r2] mul r1, r0 add r0, sp, #0x0 @@ -1352,7 +1352,7 @@ FUN_02015550: ; 0x02015550 add sp, #0xc pop {r3-r4, pc} nop -_02015584: .word UNK_020FFA38 +_02015584: .word FX_SinCosTable_ thumb_func_start FUN_02015588 FUN_02015588: ; 0x02015588 @@ -2032,7 +2032,7 @@ _02015A5C: ; jump table (using 16-bit offset) _02015A64: asr r0, r1, #0x4 lsl r1, r0, #0x2 - ldr r0, _02015AE8 ; =UNK_020FFA38 + ldr r0, _02015AE8 ; =FX_SinCosTable_ ldr r2, [r4, #0xc] ldrsh r0, [r0, r1] mul r0, r2 @@ -2045,7 +2045,7 @@ _02015A78: lsl r1, r1, #0x1 add r1, r1, #0x1 lsl r2, r1, #0x1 - ldr r1, _02015AE8 ; =UNK_020FFA38 + ldr r1, _02015AE8 ; =FX_SinCosTable_ ldr r0, [r4, #0xc] ldrsh r1, [r1, r2] mul r1, r0 @@ -2056,7 +2056,7 @@ _02015A78: _02015A90: asr r0, r1, #0x4 lsl r1, r0, #0x2 - ldr r0, _02015AE8 ; =UNK_020FFA38 + ldr r0, _02015AE8 ; =FX_SinCosTable_ ldr r2, [r4, #0xc] ldrsh r0, [r0, r1] mul r0, r2 @@ -2070,7 +2070,7 @@ _02015AA6: lsl r1, r1, #0x1 add r1, r1, #0x1 lsl r2, r1, #0x1 - ldr r1, _02015AE8 ; =UNK_020FFA38 + ldr r1, _02015AE8 ; =FX_SinCosTable_ ldr r0, [r4, #0xc] ldrsh r1, [r1, r2] mul r1, r0 @@ -2101,7 +2101,7 @@ _02015AC4: _02015AE6: pop {r4, pc} .balign 4 -_02015AE8: .word UNK_020FFA38 +_02015AE8: .word FX_SinCosTable_ thumb_func_start FUN_02015AEC FUN_02015AEC: ; 0x02015AEC @@ -2135,7 +2135,7 @@ _02015B1A: ; jump table (using 16-bit offset) _02015B22: asr r0, r1, #0x4 lsl r1, r0, #0x2 - ldr r0, _02015BA8 ; =UNK_020FFA38 + ldr r0, _02015BA8 ; =FX_SinCosTable_ ldr r2, [r4, #0xc] ldrsh r0, [r0, r1] mul r0, r2 @@ -2148,7 +2148,7 @@ _02015B36: lsl r1, r1, #0x1 add r1, r1, #0x1 lsl r2, r1, #0x1 - ldr r1, _02015BA8 ; =UNK_020FFA38 + ldr r1, _02015BA8 ; =FX_SinCosTable_ ldr r0, [r4, #0xc] ldrsh r1, [r1, r2] mul r1, r0 @@ -2159,7 +2159,7 @@ _02015B36: _02015B4E: asr r0, r1, #0x4 lsl r1, r0, #0x2 - ldr r0, _02015BA8 ; =UNK_020FFA38 + ldr r0, _02015BA8 ; =FX_SinCosTable_ ldr r2, [r4, #0xc] ldrsh r0, [r0, r1] mul r0, r2 @@ -2173,7 +2173,7 @@ _02015B64: lsl r1, r1, #0x1 add r1, r1, #0x1 lsl r2, r1, #0x1 - ldr r1, _02015BA8 ; =UNK_020FFA38 + ldr r1, _02015BA8 ; =FX_SinCosTable_ ldr r0, [r4, #0xc] ldrsh r1, [r1, r2] mul r1, r0 @@ -2204,7 +2204,7 @@ _02015B82: _02015BA4: pop {r4, pc} nop -_02015BA8: .word UNK_020FFA38 +_02015BA8: .word FX_SinCosTable_ thumb_func_start FUN_02015BAC FUN_02015BAC: ; 0x02015BAC diff --git a/arm9/asm/unk_0201C7A0.s b/arm9/asm/unk_0201C7A0.s index 0a43b49f..aa8bfe83 100644 --- a/arm9/asm/unk_0201C7A0.s +++ b/arm9/asm/unk_0201C7A0.s @@ -2,7 +2,7 @@ .include "global.inc" .extern gSineTable - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .text @@ -401,7 +401,7 @@ FUN_0201CAA8: ; 0x0201CAA8 sub sp, #0x24 add r4, r1, #0x0 ldr r1, [r4, #0x0] - ldr r3, _0201CB1C ; =UNK_020FFA38 + ldr r3, _0201CB1C ; =FX_SinCosTable_ lsl r1, r1, #0x10 lsr r1, r1, #0x10 asr r1, r1, #0x4 @@ -414,7 +414,7 @@ FUN_0201CAA8: ; 0x0201CAA8 add r5, r0, #0x0 bl MTX_RotX33_ ldr r0, [r4, #0x4] - ldr r3, _0201CB1C ; =UNK_020FFA38 + ldr r3, _0201CB1C ; =FX_SinCosTable_ lsl r0, r0, #0x10 lsr r0, r0, #0x10 asr r0, r0, #0x4 @@ -431,7 +431,7 @@ FUN_0201CAA8: ; 0x0201CAA8 add r2, r5, #0x0 bl MTX_Concat33 ldr r0, [r4, #0x8] - ldr r3, _0201CB1C ; =UNK_020FFA38 + ldr r3, _0201CB1C ; =FX_SinCosTable_ lsl r0, r0, #0x10 lsr r0, r0, #0x10 asr r0, r0, #0x4 @@ -450,7 +450,7 @@ FUN_0201CAA8: ; 0x0201CAA8 add sp, #0x24 pop {r4-r5, pc} nop -_0201CB1C: .word UNK_020FFA38 +_0201CB1C: .word FX_SinCosTable_ thumb_func_start FUN_0201CB20 FUN_0201CB20: ; 0x0201CB20 @@ -504,7 +504,7 @@ FUN_0201CB7C: ; 0x0201CB7C lsl r2, r0, #0x1 add r6, r1, #0x0 lsl r0, r2, #0x1 - ldr r1, _0201CBE8 ; =UNK_020FFA38 + ldr r1, _0201CBE8 ; =FX_SinCosTable_ add r2, r2, #0x1 lsl r2, r2, #0x1 ldrsh r0, [r1, r0] @@ -550,4 +550,4 @@ FUN_0201CB7C: ; 0x0201CB7C str r1, [r5, #0x0] pop {r3-r7, pc} .balign 4 -_0201CBE8: .word UNK_020FFA38 +_0201CBE8: .word FX_SinCosTable_ diff --git a/arm9/asm/unk_0201E7D8.s b/arm9/asm/unk_0201E7D8.s index a70f909d..4f183c7e 100644 --- a/arm9/asm/unk_0201E7D8.s +++ b/arm9/asm/unk_0201E7D8.s @@ -4,7 +4,7 @@ .extern UNK_021CED98 .extern UNK_021CEF64 .extern UNK_021CED20 - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .extern UNK_021CEF58 .extern UNK_021CEF70 .extern UNK_021CED64 @@ -32,7 +32,7 @@ FUN_0201E7D8: ; 0x0201E7D8 ldrh r4, [r5, #0x3c] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _0201E8B4 ; =UNK_020FFA38 + ldr r0, _0201E8B4 ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -46,7 +46,7 @@ FUN_0201E7D8: ; 0x0201E7D8 lsl r2, r2, #0x1 add r2, r2, #0x1 lsl r3, r2, #0x1 - ldr r2, _0201E8B4 ; =UNK_020FFA38 + ldr r2, _0201E8B4 ; =FX_SinCosTable_ lsl r1, r1, #0x14 ldrsh r2, [r2, r3] lsr r0, r0, #0xc @@ -69,7 +69,7 @@ FUN_0201E7D8: ; 0x0201E7D8 lsl r0, r0, #0x1 add r0, r0, #0x1 lsl r1, r0, #0x1 - ldr r0, _0201E8B4 ; =UNK_020FFA38 + ldr r0, _0201E8B4 ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -86,7 +86,7 @@ FUN_0201E7D8: ; 0x0201E7D8 lsl r2, r2, #0x1 add r2, r2, #0x1 lsl r3, r2, #0x1 - ldr r2, _0201E8B4 ; =UNK_020FFA38 + ldr r2, _0201E8B4 ; =FX_SinCosTable_ orr r0, r1 ldrsh r2, [r2, r3] asr r1, r0, #0x1f @@ -106,7 +106,7 @@ FUN_0201E7D8: ; 0x0201E7D8 str r1, [r5, #0x1c] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _0201E8B4 ; =UNK_020FFA38 + ldr r0, _0201E8B4 ; =FX_SinCosTable_ ldr r2, [r5, #0x38] ldrsh r0, [r0, r1] asr r3, r2, #0x1f @@ -129,7 +129,7 @@ FUN_0201E7D8: ; 0x0201E7D8 bl VEC_Add pop {r3-r5, pc} nop -_0201E8B4: .word UNK_020FFA38 +_0201E8B4: .word FX_SinCosTable_ thumb_func_start FUN_0201E8B8 FUN_0201E8B8: ; 0x0201E8B8 @@ -140,7 +140,7 @@ FUN_0201E8B8: ; 0x0201E8B8 ldrh r4, [r5, #0x3c] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _0201E998 ; =UNK_020FFA38 + ldr r0, _0201E998 ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -154,7 +154,7 @@ FUN_0201E8B8: ; 0x0201E8B8 lsl r2, r2, #0x1 add r2, r2, #0x1 lsl r3, r2, #0x1 - ldr r2, _0201E998 ; =UNK_020FFA38 + ldr r2, _0201E998 ; =FX_SinCosTable_ lsl r1, r1, #0x14 ldrsh r2, [r2, r3] lsr r0, r0, #0xc @@ -178,7 +178,7 @@ FUN_0201E8B8: ; 0x0201E8B8 lsl r0, r0, #0x1 add r0, r0, #0x1 lsl r1, r0, #0x1 - ldr r0, _0201E998 ; =UNK_020FFA38 + ldr r0, _0201E998 ; =FX_SinCosTable_ asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f @@ -195,7 +195,7 @@ FUN_0201E8B8: ; 0x0201E8B8 lsl r2, r2, #0x1 add r2, r2, #0x1 lsl r3, r2, #0x1 - ldr r2, _0201E998 ; =UNK_020FFA38 + ldr r2, _0201E998 ; =FX_SinCosTable_ orr r0, r1 ldrsh r2, [r2, r3] asr r1, r0, #0x1f @@ -216,7 +216,7 @@ FUN_0201E8B8: ; 0x0201E8B8 lsr r0, r0, #0x10 asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _0201E998 ; =UNK_020FFA38 + ldr r0, _0201E998 ; =FX_SinCosTable_ ldr r2, [r5, #0x38] ldrsh r0, [r0, r1] asr r3, r2, #0x1f @@ -240,7 +240,7 @@ FUN_0201E8B8: ; 0x0201E8B8 bl VEC_Add pop {r3-r5, pc} .balign 4 -_0201E998: .word UNK_020FFA38 +_0201E998: .word FX_SinCosTable_ thumb_func_start FUN_0201E99C FUN_0201E99C: ; 0x0201E99C @@ -249,7 +249,7 @@ FUN_0201E99C: ; 0x0201E99C strh r0, [r2, #0x0] asr r0, r0, #0x4 lsl r3, r0, #0x1 - ldr r2, _0201E9E0 ; =UNK_020FFA38 + ldr r2, _0201E9E0 ; =FX_SinCosTable_ lsl r0, r3, #0x1 ldrsh r0, [r2, r0] str r0, [r1, #0x0] @@ -278,7 +278,7 @@ FUN_0201E99C: ; 0x0201E99C str r2, [r1, #0x64] bx lr nop -_0201E9E0: .word UNK_020FFA38 +_0201E9E0: .word FX_SinCosTable_ _0201E9E4: .word 0x00001555 thumb_func_start FUN_0201E9E8 @@ -973,7 +973,7 @@ FUN_0201EEF0: ; 0x0201EEF0 ldr r3, _0201EF24 ; =FUN_0201EE2C asr r0, r0, #0x4 lsl r2, r0, #0x2 - ldr r0, _0201EF28 ; =UNK_020FFA38 + ldr r0, _0201EF28 ; =FX_SinCosTable_ ldrsh r2, [r0, r2] str r2, [r1, #0x0] add r2, r1, #0x0 @@ -991,7 +991,7 @@ FUN_0201EEF0: ; 0x0201EEF0 bx r3 nop _0201EF24: .word FUN_0201EE2C -_0201EF28: .word UNK_020FFA38 +_0201EF28: .word FX_SinCosTable_ thumb_func_start FUN_0201EF2C FUN_0201EF2C: ; 0x0201EF2C @@ -1008,7 +1008,7 @@ FUN_0201EF2C: ; 0x0201EF2C ldrh r0, [r0, #0x0] asr r0, r0, #0x4 lsl r2, r0, #0x2 - ldr r0, _0201EF6C ; =UNK_020FFA38 + ldr r0, _0201EF6C ; =FX_SinCosTable_ ldrsh r2, [r0, r2] str r2, [r1, #0x0] add r2, r1, #0x0 @@ -1026,7 +1026,7 @@ FUN_0201EF2C: ; 0x0201EF2C bx r3 nop _0201EF68: .word FUN_0201EE2C -_0201EF6C: .word UNK_020FFA38 +_0201EF6C: .word FX_SinCosTable_ thumb_func_start FUN_0201EF70 FUN_0201EF70: ; 0x0201EF70 diff --git a/arm9/asm/unk_0201F06C.s b/arm9/asm/unk_0201F06C.s index e48364ec..c032ba64 100644 --- a/arm9/asm/unk_0201F06C.s +++ b/arm9/asm/unk_0201F06C.s @@ -1,7 +1,7 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .extern UNK_021064C0 .extern UNK_021064B8 .extern UNK_021064BC @@ -3171,7 +3171,7 @@ _0202068E: ldr r2, [r4, #0x20] bl FUN_020B28B4 ldrh r0, [r4, #0x24] - ldr r2, _02020770 ; =UNK_020FFA38 + ldr r2, _02020770 ; =FX_SinCosTable_ asr r0, r0, #0x4 lsl r1, r0, #0x1 lsl r0, r1, #0x1 @@ -3262,7 +3262,7 @@ _02020764: add sp, #0xc pop {r3-r6, pc} .balign 4 -_02020770: .word UNK_020FFA38 +_02020770: .word FX_SinCosTable_ thumb_func_start FUN_02020774 FUN_02020774: ; 0x02020774 diff --git a/arm9/asm/unk_02053750.s b/arm9/asm/unk_02053750.s index 4724c308..0cf428b2 100644 --- a/arm9/asm/unk_02053750.s +++ b/arm9/asm/unk_02053750.s @@ -1,7 +1,7 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .section .rodata .global UNK_020F5C04 @@ -1320,7 +1320,7 @@ FUN_020540E8: ; 0x020540E8 ldr r1, [sp, #0x4] asr r0, r0, #0x4 lsl r5, r0, #0x2 - ldr r0, _02054164 ; =UNK_020FFA38 + ldr r0, _02054164 ; =FX_SinCosTable_ ldrsh r5, [r0, r5] asr r0, r5, #0x1f lsr r6, r5, #0x10 @@ -1363,7 +1363,7 @@ _0205415E: add sp, #0xc pop {r3-r6, pc} .balign 4 -_02054164: .word UNK_020FFA38 +_02054164: .word FX_SinCosTable_ thumb_func_start FUN_02054168 FUN_02054168: ; 0x02054168 @@ -1801,7 +1801,7 @@ _0205447E: ldr r6, [sp, #0x4] asr r0, r0, #0x4 lsl r1, r0, #0x2 - ldr r0, _02054500 ; =UNK_020FFA38 + ldr r0, _02054500 ; =FX_SinCosTable_ ldrsh r0, [r0, r1] asr r3, r0, #0x1f lsr r1, r0, #0xf @@ -1851,7 +1851,7 @@ _020544F8: add sp, #0xc pop {r4-r7, pc} nop -_02054500: .word UNK_020FFA38 +_02054500: .word FX_SinCosTable_ _02054504: .word 0x00000666 thumb_func_start FUN_02054508 diff --git a/arm9/asm/unk_0208AC14.s b/arm9/asm/unk_0208AC14.s index 4d334a19..058f8c32 100644 --- a/arm9/asm/unk_0208AC14.s +++ b/arm9/asm/unk_0208AC14.s @@ -1,7 +1,7 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_020FFA38 + .extern FX_SinCosTable_ .extern UNK_021064B8 .extern UNK_021064C0 @@ -1823,7 +1823,7 @@ FUN_0208C4F4: ; 0x0208C4F4 ldr r0, [r5, #0x40] ldrh r1, [r4, #0x20] ldr r0, [r0, #0x20] - ldr r6, _0208C954 ; =UNK_020FFA38 + ldr r6, _0208C954 ; =FX_SinCosTable_ ldr r0, [r0, #0x14] mov r1, r1, asr #0x4 ldrh r0, [r0, #0x0] @@ -2087,7 +2087,7 @@ _0208C8BC: bx lr .balign 4 _0208C950: .word 0x040004A4 -_0208C954: .word UNK_020FFA38 +_0208C954: .word FX_SinCosTable_ _0208C958: .word UNK_02106160 _0208C95C: .word 0x00000CCD _0208C960: .word 0xFFFFF333 @@ -2125,7 +2125,7 @@ FUN_0208C974: ; 0x0208C974 ldr r0, [r5, #0x40] ldrh r1, [r4, #0x20] ldr r0, [r0, #0x20] - ldr r6, _0208CDD0 ; =UNK_020FFA38 + ldr r6, _0208CDD0 ; =FX_SinCosTable_ ldr r0, [r0, #0x0] mov r1, r1, asr #0x4 mov r2, r1, lsl #0x1 @@ -2388,7 +2388,7 @@ _0208CD38: bx lr .balign 4 _0208CDCC: .word 0x040004A4 -_0208CDD0: .word UNK_020FFA38 +_0208CDD0: .word FX_SinCosTable_ _0208CDD4: .word UNK_02106160 _0208CDD8: .word 0x00000CCD _0208CDDC: .word 0xFFFFF333 @@ -2426,7 +2426,7 @@ FUN_0208CDF0: ; 0x0208CDF0 ldr r0, [r5, #0x40] ldrh r1, [r4, #0x20] ldr r0, [r0, #0x20] - ldr r6, _0208D128 ; =UNK_020FFA38 + ldr r6, _0208D128 ; =FX_SinCosTable_ ldr r0, [r0, #0x14] mov r1, r1, asr #0x4 ldrh r0, [r0, #0x0] @@ -2612,7 +2612,7 @@ _0208D090: bx lr .balign 4 _0208D124: .word 0x040004A4 -_0208D128: .word UNK_020FFA38 +_0208D128: .word FX_SinCosTable_ _0208D12C: .word UNK_02106160 _0208D130: .word 0x04000454 _0208D134: .word 0x04000470 @@ -2648,7 +2648,7 @@ FUN_0208D140: ; 0x0208D140 ldr r0, [r5, #0x40] ldrh r1, [r4, #0x20] ldr r0, [r0, #0x20] - ldr r6, _0208D478 ; =UNK_020FFA38 + ldr r6, _0208D478 ; =FX_SinCosTable_ ldr r0, [r0, #0x0] mov r1, r1, asr #0x4 mov r2, r1, lsl #0x1 @@ -2834,7 +2834,7 @@ _0208D3E0: bx lr .balign 4 _0208D474: .word 0x040004A4 -_0208D478: .word UNK_020FFA38 +_0208D478: .word FX_SinCosTable_ _0208D47C: .word UNK_02106160 _0208D480: .word 0x04000454 _0208D484: .word 0x04000470 @@ -3854,7 +3854,7 @@ _0208E39C: str r3, [sp, #0x8] bl MTX_MultVec43 ldrh r0, [r6, #0x20] - ldr r2, _0208E69C ; =UNK_020FFA38 + ldr r2, _0208E69C ; =FX_SinCosTable_ mov r9, #0x0 mov r0, r0, asr #0x4 mov r3, r0, lsl #0x1 @@ -3935,7 +3935,7 @@ _0208E4BC: str r3, [sp, #0x8] bl MTX_MultVec43 ldrh r0, [r6, #0x20] - ldr r2, _0208E69C ; =UNK_020FFA38 + ldr r2, _0208E69C ; =FX_SinCosTable_ mov lr, #0x0 mov r0, r0, asr #0x4 mov r3, r0, lsl #0x1 @@ -4029,7 +4029,7 @@ _0208E620: bx lr .balign 4 _0208E698: .word 0x040004A4 -_0208E69C: .word UNK_020FFA38 +_0208E69C: .word FX_SinCosTable_ _0208E6A0: .word 0x04000454 _0208E6A4: .word 0x04000470 _0208E6A8: .word 0x04000480 @@ -4139,7 +4139,7 @@ _0208E7E0: str r3, [sp, #0x8] bl MTX_MultVec43 ldrh r0, [r8, #0x20] - ldr r2, _0208EAE8 ; =UNK_020FFA38 + ldr r2, _0208EAE8 ; =FX_SinCosTable_ ldr r12, [sp, #0x0] mov r0, r0, asr #0x4 mov r3, r0, lsl #0x1 @@ -4220,7 +4220,7 @@ _0208E90C: str r3, [sp, #0x8] bl MTX_MultVec43 ldrh r0, [r8, #0x20] - ldr r2, _0208EAE8 ; =UNK_020FFA38 + ldr r2, _0208EAE8 ; =FX_SinCosTable_ mov r8, #0x0 mov r0, r0, asr #0x4 mov r3, r0, lsl #0x1 @@ -4313,7 +4313,7 @@ _0208EA70: bx lr .balign 4 _0208EAE4: .word 0x040004A4 -_0208EAE8: .word UNK_020FFA38 +_0208EAE8: .word FX_SinCosTable_ _0208EAEC: .word 0x04000454 _0208EAF0: .word 0x04000470 _0208EAF4: .word 0x04000480 @@ -4846,12 +4846,12 @@ _0208F294: add r1, r1, #0x10000 mov r2, r0, lsl #0x1 str r1, [sp, #0x18] - ldr r0, _0208FD98 ; =UNK_020FFA38 + ldr r0, _0208FD98 ; =FX_SinCosTable_ mov r1, r2, lsl #0x1 ldrsh r0, [r0, r1] add r1, r2, #0x1 mov r2, r1, lsl #0x1 - ldr r1, _0208FD98 ; =UNK_020FFA38 + ldr r1, _0208FD98 ; =FX_SinCosTable_ ldrsh r3, [r1, r2] ldr r2, [r9, #0x5c] mov r1, #0x800 @@ -5562,7 +5562,7 @@ _0208FD88: .word 0x00000FFF _0208FD8C: .word UNK_021C8C5C _0208FD90: .word 0x5EEDF715 _0208FD94: .word 0x1B0CB173 -_0208FD98: .word UNK_020FFA38 +_0208FD98: .word FX_SinCosTable_ _0208FD9C: .word 0x00000003 _0208FDA0: .word 0xAAAAAAAB _0208FDA4: .word 0x0000FFFF @@ -6265,7 +6265,7 @@ FUN_02090780: ; 0x02090780 b _02090838 _020907AC: ldrh r1, [r0, #0x0] - ldr r3, _02090854 ; =UNK_020FFA38 + ldr r3, _02090854 ; =FX_SinCosTable_ add r0, sp, #0x0 mov r1, r1, asr #0x4 mov r2, r1, lsl #0x1 @@ -6278,7 +6278,7 @@ _020907AC: b _02090838 _020907DC: ldrh r1, [r0, #0x0] - ldr r3, _02090854 ; =UNK_020FFA38 + ldr r3, _02090854 ; =FX_SinCosTable_ add r0, sp, #0x0 mov r1, r1, asr #0x4 mov r2, r1, lsl #0x1 @@ -6291,7 +6291,7 @@ _020907DC: b _02090838 _0209080C: ldrh r1, [r0, #0x0] - ldr r3, _02090854 ; =UNK_020FFA38 + ldr r3, _02090854 ; =FX_SinCosTable_ add r0, sp, #0x0 mov r1, r1, asr #0x4 mov r2, r1, lsl #0x1 @@ -6310,7 +6310,7 @@ _02090838: ldmia sp!, {r4,lr} bx lr .balign 4 -_02090854: .word UNK_020FFA38 +_02090854: .word FX_SinCosTable_ arm_func_start FUN_02090858 FUN_02090858: ; 0x02090858 diff --git a/arm9/asm/unk_020ADA84.s b/arm9/asm/unk_020ADA84.s index 7a31a3de..f06eeff0 100644 --- a/arm9/asm/unk_020ADA84.s +++ b/arm9/asm/unk_020ADA84.s @@ -8,6 +8,7 @@ .section .rodata + ; static const in function .global UNK_020FF7D4 UNK_020FF7D4: ; 0x020FF7D4 .word FUN_020AF2B4 @@ -47,6 +48,7 @@ UNK_020FF7D4: ; 0x020FF7D4 .word GXS_LoadOAM_2 .word GXS_LoadOBJ_2 + ; const initializer .global UNK_020FF864 UNK_020FF864: ; 0x020FF864 .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 @@ -63,14 +65,17 @@ UNK_020FF8AC: ; 0x020FF8AC .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 .byte 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 + ; static const in function .global UNK_020FF8C4 UNK_020FF8C4: ; 0x020FF8C4 .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00 + ; static const in function .global UNK_020FF8D0 UNK_020FF8D0: ; 0x020FF8D0 .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + ; static const in function .global UNK_020FF8D8 UNK_020FF8D8: ; 0x020FF8D8 .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 @@ -93,11 +98,13 @@ UNK_020FF958: ; 0x020FF958 .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + ; static const in function .global UNK_020FF970 UNK_020FF970: ; 0x020FF970 .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01 .byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x00, 0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03 + ; static const in function .global UNK_020FF990 UNK_020FF990: ; 0x020FF990 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 @@ -105,1073 +112,37 @@ UNK_020FF990: ; 0x020FF990 .byte 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0xC0 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xC0 + ; static const in function .global UNK_020FF9D0 UNK_020FF9D0: ; 0x020FF9D0 .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F .byte 0x00, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F + ; static const in function .global UNK_020FF9F0 UNK_020FF9F0: ; 0x020FF9F0 - .byte 0x04 - - .global UNK_020FF9F1 -UNK_020FF9F1: ; 0x020FF9F1 - .byte 0x05 - - .global UNK_020FF9F2 -UNK_020FF9F2: ; 0x020FF9F2 - .byte 0x07 - - .global UNK_020FF9F3 -UNK_020FF9F3: ; 0x020FF9F3 - .byte 0x08, 0x03, 0x05, 0x06, 0x08, 0x03, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x08, 0x00, 0x02, 0x06 - .byte 0x08, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 0x04, 0x05, 0x00, 0x02, 0x03, 0x05, 0x00, 0x01, 0x03 - .byte 0x04 - + .byte 0x04, 0x05, 0x07, 0x08 + .byte 0x03, 0x05, 0x06, 0x08 + .byte 0x03, 0x04, 0x06, 0x07 + .byte 0x01, 0x02, 0x07, 0x08 + .byte 0x00, 0x02, 0x06, 0x08 + .byte 0x00, 0x01, 0x06, 0x07 + .byte 0x01, 0x02, 0x04, 0x05 + .byte 0x00, 0x02, 0x03, 0x05 + .byte 0x00, 0x01, 0x03, 0x04 + + ; static const in function .global UNK_020FFA14 UNK_020FFA14: ; 0x020FFA14 - .byte 0x04 - - .global UNK_020FFA15 -UNK_020FFA15: ; 0x020FFA15 - .byte 0x05 - - .global UNK_020FFA16 -UNK_020FFA16: ; 0x020FFA16 - .byte 0x07 - - .global UNK_020FFA17 -UNK_020FFA17: ; 0x020FFA17 - .byte 0x08, 0x03, 0x05, 0x06, 0x08, 0x03, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x08, 0x00, 0x02, 0x06 - .byte 0x08, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 0x04, 0x05, 0x00, 0x02, 0x03, 0x05, 0x00, 0x01, 0x03 - .byte 0x04 - - .global UNK_020FFA38 -UNK_020FFA38: ; 0x020FFA38 - .byte 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x10, - .byte 0x19, 0x00, 0x00, 0x10, 0x1F, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x10, - .byte 0x32, 0x00, 0x00, 0x10, 0x39, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x10, 0x45, 0x00, 0xFF, 0x0F, - .byte 0x4B, 0x00, 0xFF, 0x0F, 0x52, 0x00, 0xFF, 0x0F, 0x58, 0x00, 0xFF, 0x0F, 0x5E, 0x00, 0xFF, 0x0F, - .byte 0x65, 0x00, 0xFF, 0x0F, 0x6B, 0x00, 0xFF, 0x0F, 0x71, 0x00, 0xFE, 0x0F, 0x77, 0x00, 0xFE, 0x0F, - .byte 0x7E, 0x00, 0xFE, 0x0F, 0x84, 0x00, 0xFE, 0x0F, 0x8A, 0x00, 0xFE, 0x0F, 0x90, 0x00, 0xFD, 0x0F, - .byte 0x97, 0x00, 0xFD, 0x0F, 0x9D, 0x00, 0xFD, 0x0F, 0xA3, 0x00, 0xFD, 0x0F, 0xAA, 0x00, 0xFC, 0x0F, - .byte 0xB0, 0x00, 0xFC, 0x0F, 0xB6, 0x00, 0xFC, 0x0F, 0xBC, 0x00, 0xFC, 0x0F, 0xC3, 0x00, 0xFB, 0x0F, - .byte 0xC9, 0x00, 0xFB, 0x0F, 0xCF, 0x00, 0xFB, 0x0F, 0xD6, 0x00, 0xFA, 0x0F, 0xDC, 0x00, 0xFA, 0x0F, - .byte 0xE2, 0x00, 0xFA, 0x0F, 0xE8, 0x00, 0xF9, 0x0F, 0xEF, 0x00, 0xF9, 0x0F, 0xF5, 0x00, 0xF9, 0x0F, - .byte 0xFB, 0x00, 0xF8, 0x0F, 0x01, 0x01, 0xF8, 0x0F, 0x08, 0x01, 0xF8, 0x0F, 0x0E, 0x01, 0xF7, 0x0F, - .byte 0x14, 0x01, 0xF7, 0x0F, 0x1B, 0x01, 0xF6, 0x0F, 0x21, 0x01, 0xF6, 0x0F, 0x27, 0x01, 0xF5, 0x0F, - .byte 0x2D, 0x01, 0xF5, 0x0F, 0x34, 0x01, 0xF4, 0x0F, 0x3A, 0x01, 0xF4, 0x0F, 0x40, 0x01, 0xF3, 0x0F, - .byte 0x46, 0x01, 0xF3, 0x0F, 0x4D, 0x01, 0xF2, 0x0F, 0x53, 0x01, 0xF2, 0x0F, 0x59, 0x01, 0xF1, 0x0F, - .byte 0x5F, 0x01, 0xF1, 0x0F, 0x66, 0x01, 0xF0, 0x0F, 0x6C, 0x01, 0xF0, 0x0F, 0x72, 0x01, 0xEF, 0x0F, - .byte 0x78, 0x01, 0xEF, 0x0F, 0x7F, 0x01, 0xEE, 0x0F, 0x85, 0x01, 0xED, 0x0F, 0x8B, 0x01, 0xED, 0x0F, - .byte 0x91, 0x01, 0xEC, 0x0F, 0x98, 0x01, 0xEC, 0x0F, 0x9E, 0x01, 0xEB, 0x0F, 0xA4, 0x01, 0xEA, 0x0F, - .byte 0xAA, 0x01, 0xEA, 0x0F, 0xB1, 0x01, 0xE9, 0x0F, 0xB7, 0x01, 0xE8, 0x0F, 0xBD, 0x01, 0xE8, 0x0F, - .byte 0xC3, 0x01, 0xE7, 0x0F, 0xCA, 0x01, 0xE6, 0x0F, 0xD0, 0x01, 0xE6, 0x0F, 0xD6, 0x01, 0xE5, 0x0F, - .byte 0xDC, 0x01, 0xE4, 0x0F, 0xE3, 0x01, 0xE3, 0x0F, 0xE9, 0x01, 0xE3, 0x0F, 0xEF, 0x01, 0xE2, 0x0F, - .byte 0xF5, 0x01, 0xE1, 0x0F, 0xFC, 0x01, 0xE0, 0x0F, 0x02, 0x02, 0xE0, 0x0F, 0x08, 0x02, 0xDF, 0x0F, - .byte 0x0E, 0x02, 0xDE, 0x0F, 0x15, 0x02, 0xDD, 0x0F, 0x1B, 0x02, 0xDC, 0x0F, 0x21, 0x02, 0xDC, 0x0F, - .byte 0x27, 0x02, 0xDB, 0x0F, 0x2D, 0x02, 0xDA, 0x0F, 0x34, 0x02, 0xD9, 0x0F, 0x3A, 0x02, 0xD8, 0x0F, - .byte 0x40, 0x02, 0xD7, 0x0F, 0x46, 0x02, 0xD6, 0x0F, 0x4D, 0x02, 0xD5, 0x0F, 0x53, 0x02, 0xD5, 0x0F, - .byte 0x59, 0x02, 0xD4, 0x0F, 0x5F, 0x02, 0xD3, 0x0F, 0x65, 0x02, 0xD2, 0x0F, 0x6C, 0x02, 0xD1, 0x0F, - .byte 0x72, 0x02, 0xD0, 0x0F, 0x78, 0x02, 0xCF, 0x0F, 0x7E, 0x02, 0xCE, 0x0F, 0x84, 0x02, 0xCD, 0x0F, - .byte 0x8B, 0x02, 0xCC, 0x0F, 0x91, 0x02, 0xCB, 0x0F, 0x97, 0x02, 0xCA, 0x0F, 0x9D, 0x02, 0xC9, 0x0F, - .byte 0xA3, 0x02, 0xC8, 0x0F, 0xAA, 0x02, 0xC7, 0x0F, 0xB0, 0x02, 0xC6, 0x0F, 0xB6, 0x02, 0xC5, 0x0F, - .byte 0xBC, 0x02, 0xC4, 0x0F, 0xC2, 0x02, 0xC3, 0x0F, 0xC9, 0x02, 0xC2, 0x0F, 0xCF, 0x02, 0xC0, 0x0F, - .byte 0xD5, 0x02, 0xBF, 0x0F, 0xDB, 0x02, 0xBE, 0x0F, 0xE1, 0x02, 0xBD, 0x0F, 0xE8, 0x02, 0xBC, 0x0F, - .byte 0xEE, 0x02, 0xBB, 0x0F, 0xF4, 0x02, 0xBA, 0x0F, 0xFA, 0x02, 0xB8, 0x0F, 0x00, 0x03, 0xB7, 0x0F, - .byte 0x06, 0x03, 0xB6, 0x0F, 0x0D, 0x03, 0xB5, 0x0F, 0x13, 0x03, 0xB4, 0x0F, 0x19, 0x03, 0xB3, 0x0F, - .byte 0x1F, 0x03, 0xB1, 0x0F, 0x25, 0x03, 0xB0, 0x0F, 0x2B, 0x03, 0xAF, 0x0F, 0x32, 0x03, 0xAE, 0x0F, - .byte 0x38, 0x03, 0xAC, 0x0F, 0x3E, 0x03, 0xAB, 0x0F, 0x44, 0x03, 0xAA, 0x0F, 0x4A, 0x03, 0xA8, 0x0F, - .byte 0x50, 0x03, 0xA7, 0x0F, 0x56, 0x03, 0xA6, 0x0F, 0x5D, 0x03, 0xA5, 0x0F, 0x63, 0x03, 0xA3, 0x0F, - .byte 0x69, 0x03, 0xA2, 0x0F, 0x6F, 0x03, 0xA1, 0x0F, 0x75, 0x03, 0x9F, 0x0F, 0x7B, 0x03, 0x9E, 0x0F, - .byte 0x81, 0x03, 0x9C, 0x0F, 0x88, 0x03, 0x9B, 0x0F, 0x8E, 0x03, 0x9A, 0x0F, 0x94, 0x03, 0x98, 0x0F, - .byte 0x9A, 0x03, 0x97, 0x0F, 0xA0, 0x03, 0x95, 0x0F, 0xA6, 0x03, 0x94, 0x0F, 0xAC, 0x03, 0x93, 0x0F, - .byte 0xB2, 0x03, 0x91, 0x0F, 0xB9, 0x03, 0x90, 0x0F, 0xBF, 0x03, 0x8E, 0x0F, 0xC5, 0x03, 0x8D, 0x0F, - .byte 0xCB, 0x03, 0x8B, 0x0F, 0xD1, 0x03, 0x8A, 0x0F, 0xD7, 0x03, 0x88, 0x0F, 0xDD, 0x03, 0x87, 0x0F, - .byte 0xE3, 0x03, 0x85, 0x0F, 0xE9, 0x03, 0x84, 0x0F, 0xEF, 0x03, 0x82, 0x0F, 0xF6, 0x03, 0x81, 0x0F, - .byte 0xFC, 0x03, 0x7F, 0x0F, 0x02, 0x04, 0x7D, 0x0F, 0x08, 0x04, 0x7C, 0x0F, 0x0E, 0x04, 0x7A, 0x0F, - .byte 0x14, 0x04, 0x79, 0x0F, 0x1A, 0x04, 0x77, 0x0F, 0x20, 0x04, 0x76, 0x0F, 0x26, 0x04, 0x74, 0x0F, - .byte 0x2C, 0x04, 0x72, 0x0F, 0x32, 0x04, 0x71, 0x0F, 0x38, 0x04, 0x6F, 0x0F, 0x3E, 0x04, 0x6D, 0x0F, - .byte 0x44, 0x04, 0x6C, 0x0F, 0x4B, 0x04, 0x6A, 0x0F, 0x51, 0x04, 0x68, 0x0F, 0x57, 0x04, 0x67, 0x0F, - .byte 0x5D, 0x04, 0x65, 0x0F, 0x63, 0x04, 0x63, 0x0F, 0x69, 0x04, 0x61, 0x0F, 0x6F, 0x04, 0x60, 0x0F, - .byte 0x75, 0x04, 0x5E, 0x0F, 0x7B, 0x04, 0x5C, 0x0F, 0x81, 0x04, 0x5A, 0x0F, 0x87, 0x04, 0x59, 0x0F, - .byte 0x8D, 0x04, 0x57, 0x0F, 0x93, 0x04, 0x55, 0x0F, 0x99, 0x04, 0x53, 0x0F, 0x9F, 0x04, 0x51, 0x0F, - .byte 0xA5, 0x04, 0x50, 0x0F, 0xAB, 0x04, 0x4E, 0x0F, 0xB1, 0x04, 0x4C, 0x0F, 0xB7, 0x04, 0x4A, 0x0F, - .byte 0xBD, 0x04, 0x48, 0x0F, 0xC3, 0x04, 0x46, 0x0F, 0xC9, 0x04, 0x45, 0x0F, 0xCF, 0x04, 0x43, 0x0F, - .byte 0xD5, 0x04, 0x41, 0x0F, 0xDB, 0x04, 0x3F, 0x0F, 0xE1, 0x04, 0x3D, 0x0F, 0xE7, 0x04, 0x3B, 0x0F, - .byte 0xED, 0x04, 0x39, 0x0F, 0xF3, 0x04, 0x37, 0x0F, 0xF9, 0x04, 0x35, 0x0F, 0xFF, 0x04, 0x33, 0x0F, - .byte 0x05, 0x05, 0x31, 0x0F, 0x0B, 0x05, 0x2F, 0x0F, 0x11, 0x05, 0x2D, 0x0F, 0x17, 0x05, 0x2B, 0x0F, - .byte 0x1D, 0x05, 0x29, 0x0F, 0x23, 0x05, 0x27, 0x0F, 0x29, 0x05, 0x25, 0x0F, 0x2F, 0x05, 0x23, 0x0F, - .byte 0x34, 0x05, 0x21, 0x0F, 0x3A, 0x05, 0x1F, 0x0F, 0x40, 0x05, 0x1D, 0x0F, 0x46, 0x05, 0x1B, 0x0F, - .byte 0x4C, 0x05, 0x19, 0x0F, 0x52, 0x05, 0x17, 0x0F, 0x58, 0x05, 0x15, 0x0F, 0x5E, 0x05, 0x13, 0x0F, - .byte 0x64, 0x05, 0x11, 0x0F, 0x6A, 0x05, 0x0E, 0x0F, 0x70, 0x05, 0x0C, 0x0F, 0x76, 0x05, 0x0A, 0x0F, - .byte 0x7C, 0x05, 0x08, 0x0F, 0x81, 0x05, 0x06, 0x0F, 0x87, 0x05, 0x04, 0x0F, 0x8D, 0x05, 0x02, 0x0F, - .byte 0x93, 0x05, 0xFF, 0x0E, 0x99, 0x05, 0xFD, 0x0E, 0x9F, 0x05, 0xFB, 0x0E, 0xA5, 0x05, 0xF9, 0x0E, - .byte 0xAB, 0x05, 0xF7, 0x0E, 0xB1, 0x05, 0xF4, 0x0E, 0xB6, 0x05, 0xF2, 0x0E, 0xBC, 0x05, 0xF0, 0x0E, - .byte 0xC2, 0x05, 0xEE, 0x0E, 0xC8, 0x05, 0xEB, 0x0E, 0xCE, 0x05, 0xE9, 0x0E, 0xD4, 0x05, 0xE7, 0x0E, - .byte 0xDA, 0x05, 0xE4, 0x0E, 0xDF, 0x05, 0xE2, 0x0E, 0xE5, 0x05, 0xE0, 0x0E, 0xEB, 0x05, 0xDD, 0x0E, - .byte 0xF1, 0x05, 0xDB, 0x0E, 0xF7, 0x05, 0xD9, 0x0E, 0xFD, 0x05, 0xD6, 0x0E, 0x02, 0x06, 0xD4, 0x0E, - .byte 0x08, 0x06, 0xD2, 0x0E, 0x0E, 0x06, 0xCF, 0x0E, 0x14, 0x06, 0xCD, 0x0E, 0x1A, 0x06, 0xCB, 0x0E, - .byte 0x1F, 0x06, 0xC8, 0x0E, 0x25, 0x06, 0xC6, 0x0E, 0x2B, 0x06, 0xC3, 0x0E, 0x31, 0x06, 0xC1, 0x0E, - .byte 0x37, 0x06, 0xBF, 0x0E, 0x3C, 0x06, 0xBC, 0x0E, 0x42, 0x06, 0xBA, 0x0E, 0x48, 0x06, 0xB7, 0x0E, - .byte 0x4E, 0x06, 0xB5, 0x0E, 0x54, 0x06, 0xB2, 0x0E, 0x59, 0x06, 0xB0, 0x0E, 0x5F, 0x06, 0xAD, 0x0E, - .byte 0x65, 0x06, 0xAB, 0x0E, 0x6B, 0x06, 0xA8, 0x0E, 0x70, 0x06, 0xA6, 0x0E, 0x76, 0x06, 0xA3, 0x0E, - .byte 0x7C, 0x06, 0xA1, 0x0E, 0x82, 0x06, 0x9E, 0x0E, 0x87, 0x06, 0x9B, 0x0E, 0x8D, 0x06, 0x99, 0x0E, - .byte 0x93, 0x06, 0x96, 0x0E, 0x99, 0x06, 0x94, 0x0E, 0x9E, 0x06, 0x91, 0x0E, 0xA4, 0x06, 0x8F, 0x0E, - .byte 0xAA, 0x06, 0x8C, 0x0E, 0xAF, 0x06, 0x89, 0x0E, 0xB5, 0x06, 0x87, 0x0E, 0xBB, 0x06, 0x84, 0x0E, - .byte 0xC1, 0x06, 0x81, 0x0E, 0xC6, 0x06, 0x7F, 0x0E, 0xCC, 0x06, 0x7C, 0x0E, 0xD2, 0x06, 0x79, 0x0E, - .byte 0xD7, 0x06, 0x77, 0x0E, 0xDD, 0x06, 0x74, 0x0E, 0xE3, 0x06, 0x71, 0x0E, 0xE8, 0x06, 0x6F, 0x0E, - .byte 0xEE, 0x06, 0x6C, 0x0E, 0xF4, 0x06, 0x69, 0x0E, 0xF9, 0x06, 0x66, 0x0E, 0xFF, 0x06, 0x64, 0x0E, - .byte 0x05, 0x07, 0x61, 0x0E, 0x0A, 0x07, 0x5E, 0x0E, 0x10, 0x07, 0x5B, 0x0E, 0x15, 0x07, 0x59, 0x0E, - .byte 0x1B, 0x07, 0x56, 0x0E, 0x21, 0x07, 0x53, 0x0E, 0x26, 0x07, 0x50, 0x0E, 0x2C, 0x07, 0x4D, 0x0E, - .byte 0x32, 0x07, 0x4B, 0x0E, 0x37, 0x07, 0x48, 0x0E, 0x3D, 0x07, 0x45, 0x0E, 0x42, 0x07, 0x42, 0x0E, - .byte 0x48, 0x07, 0x3F, 0x0E, 0x4E, 0x07, 0x3C, 0x0E, 0x53, 0x07, 0x3A, 0x0E, 0x59, 0x07, 0x37, 0x0E, - .byte 0x5E, 0x07, 0x34, 0x0E, 0x64, 0x07, 0x31, 0x0E, 0x6A, 0x07, 0x2E, 0x0E, 0x6F, 0x07, 0x2B, 0x0E, - .byte 0x75, 0x07, 0x28, 0x0E, 0x7A, 0x07, 0x25, 0x0E, 0x80, 0x07, 0x22, 0x0E, 0x85, 0x07, 0x1F, 0x0E, - .byte 0x8B, 0x07, 0x1C, 0x0E, 0x90, 0x07, 0x19, 0x0E, 0x96, 0x07, 0x16, 0x0E, 0x9B, 0x07, 0x13, 0x0E, - .byte 0xA1, 0x07, 0x10, 0x0E, 0xA6, 0x07, 0x0D, 0x0E, 0xAC, 0x07, 0x0A, 0x0E, 0xB2, 0x07, 0x07, 0x0E, - .byte 0xB7, 0x07, 0x04, 0x0E, 0xBD, 0x07, 0x01, 0x0E, 0xC2, 0x07, 0xFE, 0x0D, 0xC8, 0x07, 0xFB, 0x0D, - .byte 0xCD, 0x07, 0xF8, 0x0D, 0xD2, 0x07, 0xF5, 0x0D, 0xD8, 0x07, 0xF2, 0x0D, 0xDD, 0x07, 0xEF, 0x0D, - .byte 0xE3, 0x07, 0xEC, 0x0D, 0xE8, 0x07, 0xE9, 0x0D, 0xEE, 0x07, 0xE6, 0x0D, 0xF3, 0x07, 0xE3, 0x0D, - .byte 0xF9, 0x07, 0xDF, 0x0D, 0xFE, 0x07, 0xDC, 0x0D, 0x04, 0x08, 0xD9, 0x0D, 0x09, 0x08, 0xD6, 0x0D, - .byte 0x0E, 0x08, 0xD3, 0x0D, 0x14, 0x08, 0xD0, 0x0D, 0x19, 0x08, 0xCC, 0x0D, 0x1F, 0x08, 0xC9, 0x0D, - .byte 0x24, 0x08, 0xC6, 0x0D, 0x2A, 0x08, 0xC3, 0x0D, 0x2F, 0x08, 0xC0, 0x0D, 0x34, 0x08, 0xBC, 0x0D, - .byte 0x3A, 0x08, 0xB9, 0x0D, 0x3F, 0x08, 0xB6, 0x0D, 0x45, 0x08, 0xB3, 0x0D, 0x4A, 0x08, 0xB0, 0x0D, - .byte 0x4F, 0x08, 0xAC, 0x0D, 0x55, 0x08, 0xA9, 0x0D, 0x5A, 0x08, 0xA6, 0x0D, 0x5F, 0x08, 0xA2, 0x0D, - .byte 0x65, 0x08, 0x9F, 0x0D, 0x6A, 0x08, 0x9C, 0x0D, 0x6F, 0x08, 0x99, 0x0D, 0x75, 0x08, 0x95, 0x0D, - .byte 0x7A, 0x08, 0x92, 0x0D, 0x7F, 0x08, 0x8F, 0x0D, 0x85, 0x08, 0x8B, 0x0D, 0x8A, 0x08, 0x88, 0x0D, - .byte 0x8F, 0x08, 0x85, 0x0D, 0x95, 0x08, 0x81, 0x0D, 0x9A, 0x08, 0x7E, 0x0D, 0x9F, 0x08, 0x7A, 0x0D, - .byte 0xA5, 0x08, 0x77, 0x0D, 0xAA, 0x08, 0x74, 0x0D, 0xAF, 0x08, 0x70, 0x0D, 0xB4, 0x08, 0x6D, 0x0D, - .byte 0xBA, 0x08, 0x69, 0x0D, 0xBF, 0x08, 0x66, 0x0D, 0xC4, 0x08, 0x62, 0x0D, 0xC9, 0x08, 0x5F, 0x0D, - .byte 0xCF, 0x08, 0x5C, 0x0D, 0xD4, 0x08, 0x58, 0x0D, 0xD9, 0x08, 0x55, 0x0D, 0xDE, 0x08, 0x51, 0x0D, - .byte 0xE4, 0x08, 0x4E, 0x0D, 0xE9, 0x08, 0x4A, 0x0D, 0xEE, 0x08, 0x47, 0x0D, 0xF3, 0x08, 0x43, 0x0D, - .byte 0xF8, 0x08, 0x40, 0x0D, 0xFE, 0x08, 0x3C, 0x0D, 0x03, 0x09, 0x39, 0x0D, 0x08, 0x09, 0x35, 0x0D, - .byte 0x0D, 0x09, 0x32, 0x0D, 0x12, 0x09, 0x2E, 0x0D, 0x18, 0x09, 0x2A, 0x0D, 0x1D, 0x09, 0x27, 0x0D, - .byte 0x22, 0x09, 0x23, 0x0D, 0x27, 0x09, 0x20, 0x0D, 0x2C, 0x09, 0x1C, 0x0D, 0x31, 0x09, 0x18, 0x0D, - .byte 0x37, 0x09, 0x15, 0x0D, 0x3C, 0x09, 0x11, 0x0D, 0x41, 0x09, 0x0E, 0x0D, 0x46, 0x09, 0x0A, 0x0D, - .byte 0x4B, 0x09, 0x06, 0x0D, 0x50, 0x09, 0x03, 0x0D, 0x55, 0x09, 0xFF, 0x0C, 0x5A, 0x09, 0xFB, 0x0C, - .byte 0x5F, 0x09, 0xF8, 0x0C, 0x65, 0x09, 0xF4, 0x0C, 0x6A, 0x09, 0xF0, 0x0C, 0x6F, 0x09, 0xED, 0x0C, - .byte 0x74, 0x09, 0xE9, 0x0C, 0x79, 0x09, 0xE5, 0x0C, 0x7E, 0x09, 0xE1, 0x0C, 0x83, 0x09, 0xDE, 0x0C, - .byte 0x88, 0x09, 0xDA, 0x0C, 0x8D, 0x09, 0xD6, 0x0C, 0x92, 0x09, 0xD2, 0x0C, 0x97, 0x09, 0xCF, 0x0C, - .byte 0x9C, 0x09, 0xCB, 0x0C, 0xA1, 0x09, 0xC7, 0x0C, 0xA6, 0x09, 0xC3, 0x0C, 0xAB, 0x09, 0xC0, 0x0C, - .byte 0xB0, 0x09, 0xBC, 0x0C, 0xB5, 0x09, 0xB8, 0x0C, 0xBA, 0x09, 0xB4, 0x0C, 0xBF, 0x09, 0xB0, 0x0C, - .byte 0xC4, 0x09, 0xAC, 0x0C, 0xC9, 0x09, 0xA9, 0x0C, 0xCE, 0x09, 0xA5, 0x0C, 0xD3, 0x09, 0xA1, 0x0C, - .byte 0xD8, 0x09, 0x9D, 0x0C, 0xDD, 0x09, 0x99, 0x0C, 0xE2, 0x09, 0x95, 0x0C, 0xE7, 0x09, 0x91, 0x0C, - .byte 0xEC, 0x09, 0x8E, 0x0C, 0xF1, 0x09, 0x8A, 0x0C, 0xF6, 0x09, 0x86, 0x0C, 0xFB, 0x09, 0x82, 0x0C, - .byte 0xFF, 0x09, 0x7E, 0x0C, 0x04, 0x0A, 0x7A, 0x0C, 0x09, 0x0A, 0x76, 0x0C, 0x0E, 0x0A, 0x72, 0x0C, - .byte 0x13, 0x0A, 0x6E, 0x0C, 0x18, 0x0A, 0x6A, 0x0C, 0x1D, 0x0A, 0x66, 0x0C, 0x22, 0x0A, 0x62, 0x0C, - .byte 0x26, 0x0A, 0x5E, 0x0C, 0x2B, 0x0A, 0x5A, 0x0C, 0x30, 0x0A, 0x56, 0x0C, 0x35, 0x0A, 0x52, 0x0C, - .byte 0x3A, 0x0A, 0x4E, 0x0C, 0x3F, 0x0A, 0x4A, 0x0C, 0x44, 0x0A, 0x46, 0x0C, 0x48, 0x0A, 0x42, 0x0C, - .byte 0x4D, 0x0A, 0x3E, 0x0C, 0x52, 0x0A, 0x3A, 0x0C, 0x57, 0x0A, 0x36, 0x0C, 0x5C, 0x0A, 0x32, 0x0C, - .byte 0x60, 0x0A, 0x2E, 0x0C, 0x65, 0x0A, 0x2A, 0x0C, 0x6A, 0x0A, 0x26, 0x0C, 0x6F, 0x0A, 0x22, 0x0C, - .byte 0x73, 0x0A, 0x1E, 0x0C, 0x78, 0x0A, 0x19, 0x0C, 0x7D, 0x0A, 0x15, 0x0C, 0x82, 0x0A, 0x11, 0x0C, - .byte 0x86, 0x0A, 0x0D, 0x0C, 0x8B, 0x0A, 0x09, 0x0C, 0x90, 0x0A, 0x05, 0x0C, 0x95, 0x0A, 0x01, 0x0C, - .byte 0x99, 0x0A, 0xFC, 0x0B, 0x9E, 0x0A, 0xF8, 0x0B, 0xA3, 0x0A, 0xF4, 0x0B, 0xA7, 0x0A, 0xF0, 0x0B, - .byte 0xAC, 0x0A, 0xEC, 0x0B, 0xB1, 0x0A, 0xE8, 0x0B, 0xB5, 0x0A, 0xE3, 0x0B, 0xBA, 0x0A, 0xDF, 0x0B, - .byte 0xBF, 0x0A, 0xDB, 0x0B, 0xC3, 0x0A, 0xD7, 0x0B, 0xC8, 0x0A, 0xD2, 0x0B, 0xCD, 0x0A, 0xCE, 0x0B, - .byte 0xD1, 0x0A, 0xCA, 0x0B, 0xD6, 0x0A, 0xC6, 0x0B, 0xDB, 0x0A, 0xC1, 0x0B, 0xDF, 0x0A, 0xBD, 0x0B, - .byte 0xE4, 0x0A, 0xB9, 0x0B, 0xE8, 0x0A, 0xB5, 0x0B, 0xED, 0x0A, 0xB0, 0x0B, 0xF2, 0x0A, 0xAC, 0x0B, - .byte 0xF6, 0x0A, 0xA8, 0x0B, 0xFB, 0x0A, 0xA3, 0x0B, 0xFF, 0x0A, 0x9F, 0x0B, 0x04, 0x0B, 0x9B, 0x0B, - .byte 0x08, 0x0B, 0x97, 0x0B, 0x0D, 0x0B, 0x92, 0x0B, 0x11, 0x0B, 0x8E, 0x0B, 0x16, 0x0B, 0x89, 0x0B, - .byte 0x1B, 0x0B, 0x85, 0x0B, 0x1F, 0x0B, 0x81, 0x0B, 0x24, 0x0B, 0x7C, 0x0B, 0x28, 0x0B, 0x78, 0x0B, - .byte 0x2D, 0x0B, 0x74, 0x0B, 0x31, 0x0B, 0x6F, 0x0B, 0x36, 0x0B, 0x6B, 0x0B, 0x3A, 0x0B, 0x66, 0x0B, - .byte 0x3E, 0x0B, 0x62, 0x0B, 0x43, 0x0B, 0x5E, 0x0B, 0x47, 0x0B, 0x59, 0x0B, 0x4C, 0x0B, 0x55, 0x0B, - .byte 0x50, 0x0B, 0x50, 0x0B, 0x55, 0x0B, 0x4C, 0x0B, 0x59, 0x0B, 0x47, 0x0B, 0x5E, 0x0B, 0x43, 0x0B, - .byte 0x62, 0x0B, 0x3E, 0x0B, 0x66, 0x0B, 0x3A, 0x0B, 0x6B, 0x0B, 0x36, 0x0B, 0x6F, 0x0B, 0x31, 0x0B, - .byte 0x74, 0x0B, 0x2D, 0x0B, 0x78, 0x0B, 0x28, 0x0B, 0x7C, 0x0B, 0x24, 0x0B, 0x81, 0x0B, 0x1F, 0x0B, - .byte 0x85, 0x0B, 0x1B, 0x0B, 0x89, 0x0B, 0x16, 0x0B, 0x8E, 0x0B, 0x11, 0x0B, 0x92, 0x0B, 0x0D, 0x0B, - .byte 0x97, 0x0B, 0x08, 0x0B, 0x9B, 0x0B, 0x04, 0x0B, 0x9F, 0x0B, 0xFF, 0x0A, 0xA3, 0x0B, 0xFB, 0x0A, - .byte 0xA8, 0x0B, 0xF6, 0x0A, 0xAC, 0x0B, 0xF2, 0x0A, 0xB0, 0x0B, 0xED, 0x0A, 0xB5, 0x0B, 0xE8, 0x0A, - .byte 0xB9, 0x0B, 0xE4, 0x0A, 0xBD, 0x0B, 0xDF, 0x0A, 0xC1, 0x0B, 0xDB, 0x0A, 0xC6, 0x0B, 0xD6, 0x0A, - .byte 0xCA, 0x0B, 0xD1, 0x0A, 0xCE, 0x0B, 0xCD, 0x0A, 0xD2, 0x0B, 0xC8, 0x0A, 0xD7, 0x0B, 0xC3, 0x0A, - .byte 0xDB, 0x0B, 0xBF, 0x0A, 0xDF, 0x0B, 0xBA, 0x0A, 0xE3, 0x0B, 0xB5, 0x0A, 0xE8, 0x0B, 0xB1, 0x0A, - .byte 0xEC, 0x0B, 0xAC, 0x0A, 0xF0, 0x0B, 0xA7, 0x0A, 0xF4, 0x0B, 0xA3, 0x0A, 0xF8, 0x0B, 0x9E, 0x0A, - .byte 0xFC, 0x0B, 0x99, 0x0A, 0x01, 0x0C, 0x95, 0x0A, 0x05, 0x0C, 0x90, 0x0A, 0x09, 0x0C, 0x8B, 0x0A, - .byte 0x0D, 0x0C, 0x86, 0x0A, 0x11, 0x0C, 0x82, 0x0A, 0x15, 0x0C, 0x7D, 0x0A, 0x19, 0x0C, 0x78, 0x0A, - .byte 0x1E, 0x0C, 0x73, 0x0A, 0x22, 0x0C, 0x6F, 0x0A, 0x26, 0x0C, 0x6A, 0x0A, 0x2A, 0x0C, 0x65, 0x0A, - .byte 0x2E, 0x0C, 0x60, 0x0A, 0x32, 0x0C, 0x5C, 0x0A, 0x36, 0x0C, 0x57, 0x0A, 0x3A, 0x0C, 0x52, 0x0A, - .byte 0x3E, 0x0C, 0x4D, 0x0A, 0x42, 0x0C, 0x48, 0x0A, 0x46, 0x0C, 0x44, 0x0A, 0x4A, 0x0C, 0x3F, 0x0A, - .byte 0x4E, 0x0C, 0x3A, 0x0A, 0x52, 0x0C, 0x35, 0x0A, 0x56, 0x0C, 0x30, 0x0A, 0x5A, 0x0C, 0x2B, 0x0A, - .byte 0x5E, 0x0C, 0x26, 0x0A, 0x62, 0x0C, 0x22, 0x0A, 0x66, 0x0C, 0x1D, 0x0A, 0x6A, 0x0C, 0x18, 0x0A, - .byte 0x6E, 0x0C, 0x13, 0x0A, 0x72, 0x0C, 0x0E, 0x0A, 0x76, 0x0C, 0x09, 0x0A, 0x7A, 0x0C, 0x04, 0x0A, - .byte 0x7E, 0x0C, 0xFF, 0x09, 0x82, 0x0C, 0xFB, 0x09, 0x86, 0x0C, 0xF6, 0x09, 0x8A, 0x0C, 0xF1, 0x09, - .byte 0x8E, 0x0C, 0xEC, 0x09, 0x91, 0x0C, 0xE7, 0x09, 0x95, 0x0C, 0xE2, 0x09, 0x99, 0x0C, 0xDD, 0x09, - .byte 0x9D, 0x0C, 0xD8, 0x09, 0xA1, 0x0C, 0xD3, 0x09, 0xA5, 0x0C, 0xCE, 0x09, 0xA9, 0x0C, 0xC9, 0x09, - .byte 0xAC, 0x0C, 0xC4, 0x09, 0xB0, 0x0C, 0xBF, 0x09, 0xB4, 0x0C, 0xBA, 0x09, 0xB8, 0x0C, 0xB5, 0x09, - .byte 0xBC, 0x0C, 0xB0, 0x09, 0xC0, 0x0C, 0xAB, 0x09, 0xC3, 0x0C, 0xA6, 0x09, 0xC7, 0x0C, 0xA1, 0x09, - .byte 0xCB, 0x0C, 0x9C, 0x09, 0xCF, 0x0C, 0x97, 0x09, 0xD2, 0x0C, 0x92, 0x09, 0xD6, 0x0C, 0x8D, 0x09, - .byte 0xDA, 0x0C, 0x88, 0x09, 0xDE, 0x0C, 0x83, 0x09, 0xE1, 0x0C, 0x7E, 0x09, 0xE5, 0x0C, 0x79, 0x09, - .byte 0xE9, 0x0C, 0x74, 0x09, 0xED, 0x0C, 0x6F, 0x09, 0xF0, 0x0C, 0x6A, 0x09, 0xF4, 0x0C, 0x65, 0x09, - .byte 0xF8, 0x0C, 0x5F, 0x09, 0xFB, 0x0C, 0x5A, 0x09, 0xFF, 0x0C, 0x55, 0x09, 0x03, 0x0D, 0x50, 0x09, - .byte 0x06, 0x0D, 0x4B, 0x09, 0x0A, 0x0D, 0x46, 0x09, 0x0E, 0x0D, 0x41, 0x09, 0x11, 0x0D, 0x3C, 0x09, - .byte 0x15, 0x0D, 0x37, 0x09, 0x18, 0x0D, 0x31, 0x09, 0x1C, 0x0D, 0x2C, 0x09, 0x20, 0x0D, 0x27, 0x09, - .byte 0x23, 0x0D, 0x22, 0x09, 0x27, 0x0D, 0x1D, 0x09, 0x2A, 0x0D, 0x18, 0x09, 0x2E, 0x0D, 0x12, 0x09, - .byte 0x32, 0x0D, 0x0D, 0x09, 0x35, 0x0D, 0x08, 0x09, 0x39, 0x0D, 0x03, 0x09, 0x3C, 0x0D, 0xFE, 0x08, - .byte 0x40, 0x0D, 0xF8, 0x08, 0x43, 0x0D, 0xF3, 0x08, 0x47, 0x0D, 0xEE, 0x08, 0x4A, 0x0D, 0xE9, 0x08, - .byte 0x4E, 0x0D, 0xE4, 0x08, 0x51, 0x0D, 0xDE, 0x08, 0x55, 0x0D, 0xD9, 0x08, 0x58, 0x0D, 0xD4, 0x08, - .byte 0x5C, 0x0D, 0xCF, 0x08, 0x5F, 0x0D, 0xC9, 0x08, 0x62, 0x0D, 0xC4, 0x08, 0x66, 0x0D, 0xBF, 0x08, - .byte 0x69, 0x0D, 0xBA, 0x08, 0x6D, 0x0D, 0xB4, 0x08, 0x70, 0x0D, 0xAF, 0x08, 0x74, 0x0D, 0xAA, 0x08, - .byte 0x77, 0x0D, 0xA5, 0x08, 0x7A, 0x0D, 0x9F, 0x08, 0x7E, 0x0D, 0x9A, 0x08, 0x81, 0x0D, 0x95, 0x08, - .byte 0x85, 0x0D, 0x8F, 0x08, 0x88, 0x0D, 0x8A, 0x08, 0x8B, 0x0D, 0x85, 0x08, 0x8F, 0x0D, 0x7F, 0x08, - .byte 0x92, 0x0D, 0x7A, 0x08, 0x95, 0x0D, 0x75, 0x08, 0x99, 0x0D, 0x6F, 0x08, 0x9C, 0x0D, 0x6A, 0x08, - .byte 0x9F, 0x0D, 0x65, 0x08, 0xA2, 0x0D, 0x5F, 0x08, 0xA6, 0x0D, 0x5A, 0x08, 0xA9, 0x0D, 0x55, 0x08, - .byte 0xAC, 0x0D, 0x4F, 0x08, 0xB0, 0x0D, 0x4A, 0x08, 0xB3, 0x0D, 0x45, 0x08, 0xB6, 0x0D, 0x3F, 0x08, - .byte 0xB9, 0x0D, 0x3A, 0x08, 0xBC, 0x0D, 0x34, 0x08, 0xC0, 0x0D, 0x2F, 0x08, 0xC3, 0x0D, 0x2A, 0x08, - .byte 0xC6, 0x0D, 0x24, 0x08, 0xC9, 0x0D, 0x1F, 0x08, 0xCC, 0x0D, 0x19, 0x08, 0xD0, 0x0D, 0x14, 0x08, - .byte 0xD3, 0x0D, 0x0E, 0x08, 0xD6, 0x0D, 0x09, 0x08, 0xD9, 0x0D, 0x04, 0x08, 0xDC, 0x0D, 0xFE, 0x07, - .byte 0xDF, 0x0D, 0xF9, 0x07, 0xE3, 0x0D, 0xF3, 0x07, 0xE6, 0x0D, 0xEE, 0x07, 0xE9, 0x0D, 0xE8, 0x07, - .byte 0xEC, 0x0D, 0xE3, 0x07, 0xEF, 0x0D, 0xDD, 0x07, 0xF2, 0x0D, 0xD8, 0x07, 0xF5, 0x0D, 0xD2, 0x07, - .byte 0xF8, 0x0D, 0xCD, 0x07, 0xFB, 0x0D, 0xC8, 0x07, 0xFE, 0x0D, 0xC2, 0x07, 0x01, 0x0E, 0xBD, 0x07, - .byte 0x04, 0x0E, 0xB7, 0x07, 0x07, 0x0E, 0xB2, 0x07, 0x0A, 0x0E, 0xAC, 0x07, 0x0D, 0x0E, 0xA6, 0x07, - .byte 0x10, 0x0E, 0xA1, 0x07, 0x13, 0x0E, 0x9B, 0x07, 0x16, 0x0E, 0x96, 0x07, 0x19, 0x0E, 0x90, 0x07, - .byte 0x1C, 0x0E, 0x8B, 0x07, 0x1F, 0x0E, 0x85, 0x07, 0x22, 0x0E, 0x80, 0x07, 0x25, 0x0E, 0x7A, 0x07, - .byte 0x28, 0x0E, 0x75, 0x07, 0x2B, 0x0E, 0x6F, 0x07, 0x2E, 0x0E, 0x6A, 0x07, 0x31, 0x0E, 0x64, 0x07, - .byte 0x34, 0x0E, 0x5E, 0x07, 0x37, 0x0E, 0x59, 0x07, 0x3A, 0x0E, 0x53, 0x07, 0x3C, 0x0E, 0x4E, 0x07, - .byte 0x3F, 0x0E, 0x48, 0x07, 0x42, 0x0E, 0x42, 0x07, 0x45, 0x0E, 0x3D, 0x07, 0x48, 0x0E, 0x37, 0x07, - .byte 0x4B, 0x0E, 0x32, 0x07, 0x4D, 0x0E, 0x2C, 0x07, 0x50, 0x0E, 0x26, 0x07, 0x53, 0x0E, 0x21, 0x07, - .byte 0x56, 0x0E, 0x1B, 0x07, 0x59, 0x0E, 0x15, 0x07, 0x5B, 0x0E, 0x10, 0x07, 0x5E, 0x0E, 0x0A, 0x07, - .byte 0x61, 0x0E, 0x05, 0x07, 0x64, 0x0E, 0xFF, 0x06, 0x66, 0x0E, 0xF9, 0x06, 0x69, 0x0E, 0xF4, 0x06, - .byte 0x6C, 0x0E, 0xEE, 0x06, 0x6F, 0x0E, 0xE8, 0x06, 0x71, 0x0E, 0xE3, 0x06, 0x74, 0x0E, 0xDD, 0x06, - .byte 0x77, 0x0E, 0xD7, 0x06, 0x79, 0x0E, 0xD2, 0x06, 0x7C, 0x0E, 0xCC, 0x06, 0x7F, 0x0E, 0xC6, 0x06, - .byte 0x81, 0x0E, 0xC1, 0x06, 0x84, 0x0E, 0xBB, 0x06, 0x87, 0x0E, 0xB5, 0x06, 0x89, 0x0E, 0xAF, 0x06, - .byte 0x8C, 0x0E, 0xAA, 0x06, 0x8F, 0x0E, 0xA4, 0x06, 0x91, 0x0E, 0x9E, 0x06, 0x94, 0x0E, 0x99, 0x06, - .byte 0x96, 0x0E, 0x93, 0x06, 0x99, 0x0E, 0x8D, 0x06, 0x9B, 0x0E, 0x87, 0x06, 0x9E, 0x0E, 0x82, 0x06, - .byte 0xA1, 0x0E, 0x7C, 0x06, 0xA3, 0x0E, 0x76, 0x06, 0xA6, 0x0E, 0x70, 0x06, 0xA8, 0x0E, 0x6B, 0x06, - .byte 0xAB, 0x0E, 0x65, 0x06, 0xAD, 0x0E, 0x5F, 0x06, 0xB0, 0x0E, 0x59, 0x06, 0xB2, 0x0E, 0x54, 0x06, - .byte 0xB5, 0x0E, 0x4E, 0x06, 0xB7, 0x0E, 0x48, 0x06, 0xBA, 0x0E, 0x42, 0x06, 0xBC, 0x0E, 0x3C, 0x06, - .byte 0xBF, 0x0E, 0x37, 0x06, 0xC1, 0x0E, 0x31, 0x06, 0xC3, 0x0E, 0x2B, 0x06, 0xC6, 0x0E, 0x25, 0x06, - .byte 0xC8, 0x0E, 0x1F, 0x06, 0xCB, 0x0E, 0x1A, 0x06, 0xCD, 0x0E, 0x14, 0x06, 0xCF, 0x0E, 0x0E, 0x06, - .byte 0xD2, 0x0E, 0x08, 0x06, 0xD4, 0x0E, 0x02, 0x06, 0xD6, 0x0E, 0xFD, 0x05, 0xD9, 0x0E, 0xF7, 0x05, - .byte 0xDB, 0x0E, 0xF1, 0x05, 0xDD, 0x0E, 0xEB, 0x05, 0xE0, 0x0E, 0xE5, 0x05, 0xE2, 0x0E, 0xDF, 0x05, - .byte 0xE4, 0x0E, 0xDA, 0x05, 0xE7, 0x0E, 0xD4, 0x05, 0xE9, 0x0E, 0xCE, 0x05, 0xEB, 0x0E, 0xC8, 0x05, - .byte 0xEE, 0x0E, 0xC2, 0x05, 0xF0, 0x0E, 0xBC, 0x05, 0xF2, 0x0E, 0xB6, 0x05, 0xF4, 0x0E, 0xB1, 0x05, - .byte 0xF7, 0x0E, 0xAB, 0x05, 0xF9, 0x0E, 0xA5, 0x05, 0xFB, 0x0E, 0x9F, 0x05, 0xFD, 0x0E, 0x99, 0x05, - .byte 0xFF, 0x0E, 0x93, 0x05, 0x02, 0x0F, 0x8D, 0x05, 0x04, 0x0F, 0x87, 0x05, 0x06, 0x0F, 0x81, 0x05, - .byte 0x08, 0x0F, 0x7C, 0x05, 0x0A, 0x0F, 0x76, 0x05, 0x0C, 0x0F, 0x70, 0x05, 0x0E, 0x0F, 0x6A, 0x05, - .byte 0x11, 0x0F, 0x64, 0x05, 0x13, 0x0F, 0x5E, 0x05, 0x15, 0x0F, 0x58, 0x05, 0x17, 0x0F, 0x52, 0x05, - .byte 0x19, 0x0F, 0x4C, 0x05, 0x1B, 0x0F, 0x46, 0x05, 0x1D, 0x0F, 0x40, 0x05, 0x1F, 0x0F, 0x3A, 0x05, - .byte 0x21, 0x0F, 0x34, 0x05, 0x23, 0x0F, 0x2F, 0x05, 0x25, 0x0F, 0x29, 0x05, 0x27, 0x0F, 0x23, 0x05, - .byte 0x29, 0x0F, 0x1D, 0x05, 0x2B, 0x0F, 0x17, 0x05, 0x2D, 0x0F, 0x11, 0x05, 0x2F, 0x0F, 0x0B, 0x05, - .byte 0x31, 0x0F, 0x05, 0x05, 0x33, 0x0F, 0xFF, 0x04, 0x35, 0x0F, 0xF9, 0x04, 0x37, 0x0F, 0xF3, 0x04, - .byte 0x39, 0x0F, 0xED, 0x04, 0x3B, 0x0F, 0xE7, 0x04, 0x3D, 0x0F, 0xE1, 0x04, 0x3F, 0x0F, 0xDB, 0x04, - .byte 0x41, 0x0F, 0xD5, 0x04, 0x43, 0x0F, 0xCF, 0x04, 0x45, 0x0F, 0xC9, 0x04, 0x46, 0x0F, 0xC3, 0x04, - .byte 0x48, 0x0F, 0xBD, 0x04, 0x4A, 0x0F, 0xB7, 0x04, 0x4C, 0x0F, 0xB1, 0x04, 0x4E, 0x0F, 0xAB, 0x04, - .byte 0x50, 0x0F, 0xA5, 0x04, 0x51, 0x0F, 0x9F, 0x04, 0x53, 0x0F, 0x99, 0x04, 0x55, 0x0F, 0x93, 0x04, - .byte 0x57, 0x0F, 0x8D, 0x04, 0x59, 0x0F, 0x87, 0x04, 0x5A, 0x0F, 0x81, 0x04, 0x5C, 0x0F, 0x7B, 0x04, - .byte 0x5E, 0x0F, 0x75, 0x04, 0x60, 0x0F, 0x6F, 0x04, 0x61, 0x0F, 0x69, 0x04, 0x63, 0x0F, 0x63, 0x04, - .byte 0x65, 0x0F, 0x5D, 0x04, 0x67, 0x0F, 0x57, 0x04, 0x68, 0x0F, 0x51, 0x04, 0x6A, 0x0F, 0x4B, 0x04, - .byte 0x6C, 0x0F, 0x44, 0x04, 0x6D, 0x0F, 0x3E, 0x04, 0x6F, 0x0F, 0x38, 0x04, 0x71, 0x0F, 0x32, 0x04, - .byte 0x72, 0x0F, 0x2C, 0x04, 0x74, 0x0F, 0x26, 0x04, 0x76, 0x0F, 0x20, 0x04, 0x77, 0x0F, 0x1A, 0x04, - .byte 0x79, 0x0F, 0x14, 0x04, 0x7A, 0x0F, 0x0E, 0x04, 0x7C, 0x0F, 0x08, 0x04, 0x7D, 0x0F, 0x02, 0x04, - .byte 0x7F, 0x0F, 0xFC, 0x03, 0x81, 0x0F, 0xF6, 0x03, 0x82, 0x0F, 0xEF, 0x03, 0x84, 0x0F, 0xE9, 0x03, - .byte 0x85, 0x0F, 0xE3, 0x03, 0x87, 0x0F, 0xDD, 0x03, 0x88, 0x0F, 0xD7, 0x03, 0x8A, 0x0F, 0xD1, 0x03, - .byte 0x8B, 0x0F, 0xCB, 0x03, 0x8D, 0x0F, 0xC5, 0x03, 0x8E, 0x0F, 0xBF, 0x03, 0x90, 0x0F, 0xB9, 0x03, - .byte 0x91, 0x0F, 0xB2, 0x03, 0x93, 0x0F, 0xAC, 0x03, 0x94, 0x0F, 0xA6, 0x03, 0x95, 0x0F, 0xA0, 0x03, - .byte 0x97, 0x0F, 0x9A, 0x03, 0x98, 0x0F, 0x94, 0x03, 0x9A, 0x0F, 0x8E, 0x03, 0x9B, 0x0F, 0x88, 0x03, - .byte 0x9C, 0x0F, 0x81, 0x03, 0x9E, 0x0F, 0x7B, 0x03, 0x9F, 0x0F, 0x75, 0x03, 0xA1, 0x0F, 0x6F, 0x03, - .byte 0xA2, 0x0F, 0x69, 0x03, 0xA3, 0x0F, 0x63, 0x03, 0xA5, 0x0F, 0x5D, 0x03, 0xA6, 0x0F, 0x56, 0x03, - .byte 0xA7, 0x0F, 0x50, 0x03, 0xA8, 0x0F, 0x4A, 0x03, 0xAA, 0x0F, 0x44, 0x03, 0xAB, 0x0F, 0x3E, 0x03, - .byte 0xAC, 0x0F, 0x38, 0x03, 0xAE, 0x0F, 0x32, 0x03, 0xAF, 0x0F, 0x2B, 0x03, 0xB0, 0x0F, 0x25, 0x03, - .byte 0xB1, 0x0F, 0x1F, 0x03, 0xB3, 0x0F, 0x19, 0x03, 0xB4, 0x0F, 0x13, 0x03, 0xB5, 0x0F, 0x0D, 0x03, - .byte 0xB6, 0x0F, 0x06, 0x03, 0xB7, 0x0F, 0x00, 0x03, 0xB8, 0x0F, 0xFA, 0x02, 0xBA, 0x0F, 0xF4, 0x02, - .byte 0xBB, 0x0F, 0xEE, 0x02, 0xBC, 0x0F, 0xE8, 0x02, 0xBD, 0x0F, 0xE1, 0x02, 0xBE, 0x0F, 0xDB, 0x02, - .byte 0xBF, 0x0F, 0xD5, 0x02, 0xC0, 0x0F, 0xCF, 0x02, 0xC2, 0x0F, 0xC9, 0x02, 0xC3, 0x0F, 0xC2, 0x02, - .byte 0xC4, 0x0F, 0xBC, 0x02, 0xC5, 0x0F, 0xB6, 0x02, 0xC6, 0x0F, 0xB0, 0x02, 0xC7, 0x0F, 0xAA, 0x02, - .byte 0xC8, 0x0F, 0xA3, 0x02, 0xC9, 0x0F, 0x9D, 0x02, 0xCA, 0x0F, 0x97, 0x02, 0xCB, 0x0F, 0x91, 0x02, - .byte 0xCC, 0x0F, 0x8B, 0x02, 0xCD, 0x0F, 0x84, 0x02, 0xCE, 0x0F, 0x7E, 0x02, 0xCF, 0x0F, 0x78, 0x02, - .byte 0xD0, 0x0F, 0x72, 0x02, 0xD1, 0x0F, 0x6C, 0x02, 0xD2, 0x0F, 0x65, 0x02, 0xD3, 0x0F, 0x5F, 0x02, - .byte 0xD4, 0x0F, 0x59, 0x02, 0xD5, 0x0F, 0x53, 0x02, 0xD5, 0x0F, 0x4D, 0x02, 0xD6, 0x0F, 0x46, 0x02, - .byte 0xD7, 0x0F, 0x40, 0x02, 0xD8, 0x0F, 0x3A, 0x02, 0xD9, 0x0F, 0x34, 0x02, 0xDA, 0x0F, 0x2D, 0x02, - .byte 0xDB, 0x0F, 0x27, 0x02, 0xDC, 0x0F, 0x21, 0x02, 0xDC, 0x0F, 0x1B, 0x02, 0xDD, 0x0F, 0x15, 0x02, - .byte 0xDE, 0x0F, 0x0E, 0x02, 0xDF, 0x0F, 0x08, 0x02, 0xE0, 0x0F, 0x02, 0x02, 0xE0, 0x0F, 0xFC, 0x01, - .byte 0xE1, 0x0F, 0xF5, 0x01, 0xE2, 0x0F, 0xEF, 0x01, 0xE3, 0x0F, 0xE9, 0x01, 0xE3, 0x0F, 0xE3, 0x01, - .byte 0xE4, 0x0F, 0xDC, 0x01, 0xE5, 0x0F, 0xD6, 0x01, 0xE6, 0x0F, 0xD0, 0x01, 0xE6, 0x0F, 0xCA, 0x01, - .byte 0xE7, 0x0F, 0xC3, 0x01, 0xE8, 0x0F, 0xBD, 0x01, 0xE8, 0x0F, 0xB7, 0x01, 0xE9, 0x0F, 0xB1, 0x01, - .byte 0xEA, 0x0F, 0xAA, 0x01, 0xEA, 0x0F, 0xA4, 0x01, 0xEB, 0x0F, 0x9E, 0x01, 0xEC, 0x0F, 0x98, 0x01, - .byte 0xEC, 0x0F, 0x91, 0x01, 0xED, 0x0F, 0x8B, 0x01, 0xED, 0x0F, 0x85, 0x01, 0xEE, 0x0F, 0x7F, 0x01, - .byte 0xEF, 0x0F, 0x78, 0x01, 0xEF, 0x0F, 0x72, 0x01, 0xF0, 0x0F, 0x6C, 0x01, 0xF0, 0x0F, 0x66, 0x01, - .byte 0xF1, 0x0F, 0x5F, 0x01, 0xF1, 0x0F, 0x59, 0x01, 0xF2, 0x0F, 0x53, 0x01, 0xF2, 0x0F, 0x4D, 0x01, - .byte 0xF3, 0x0F, 0x46, 0x01, 0xF3, 0x0F, 0x40, 0x01, 0xF4, 0x0F, 0x3A, 0x01, 0xF4, 0x0F, 0x34, 0x01, - .byte 0xF5, 0x0F, 0x2D, 0x01, 0xF5, 0x0F, 0x27, 0x01, 0xF6, 0x0F, 0x21, 0x01, 0xF6, 0x0F, 0x1B, 0x01, - .byte 0xF7, 0x0F, 0x14, 0x01, 0xF7, 0x0F, 0x0E, 0x01, 0xF8, 0x0F, 0x08, 0x01, 0xF8, 0x0F, 0x01, 0x01, - .byte 0xF8, 0x0F, 0xFB, 0x00, 0xF9, 0x0F, 0xF5, 0x00, 0xF9, 0x0F, 0xEF, 0x00, 0xF9, 0x0F, 0xE8, 0x00, - .byte 0xFA, 0x0F, 0xE2, 0x00, 0xFA, 0x0F, 0xDC, 0x00, 0xFA, 0x0F, 0xD6, 0x00, 0xFB, 0x0F, 0xCF, 0x00, - .byte 0xFB, 0x0F, 0xC9, 0x00, 0xFB, 0x0F, 0xC3, 0x00, 0xFC, 0x0F, 0xBC, 0x00, 0xFC, 0x0F, 0xB6, 0x00, - .byte 0xFC, 0x0F, 0xB0, 0x00, 0xFC, 0x0F, 0xAA, 0x00, 0xFD, 0x0F, 0xA3, 0x00, 0xFD, 0x0F, 0x9D, 0x00, - .byte 0xFD, 0x0F, 0x97, 0x00, 0xFD, 0x0F, 0x90, 0x00, 0xFE, 0x0F, 0x8A, 0x00, 0xFE, 0x0F, 0x84, 0x00, - .byte 0xFE, 0x0F, 0x7E, 0x00, 0xFE, 0x0F, 0x77, 0x00, 0xFE, 0x0F, 0x71, 0x00, 0xFF, 0x0F, 0x6B, 0x00, - .byte 0xFF, 0x0F, 0x65, 0x00, 0xFF, 0x0F, 0x5E, 0x00, 0xFF, 0x0F, 0x58, 0x00, 0xFF, 0x0F, 0x52, 0x00, - .byte 0xFF, 0x0F, 0x4B, 0x00, 0xFF, 0x0F, 0x45, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x10, 0x39, 0x00, - .byte 0x00, 0x10, 0x32, 0x00, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x10, 0x1F, 0x00, - .byte 0x00, 0x10, 0x19, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00, 0x10, 0x06, 0x00, - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0xFA, 0xFF, 0x00, 0x10, 0xF3, 0xFF, 0x00, 0x10, 0xED, 0xFF, - .byte 0x00, 0x10, 0xE7, 0xFF, 0x00, 0x10, 0xE1, 0xFF, 0x00, 0x10, 0xDA, 0xFF, 0x00, 0x10, 0xD4, 0xFF, - .byte 0x00, 0x10, 0xCE, 0xFF, 0x00, 0x10, 0xC7, 0xFF, 0x00, 0x10, 0xC1, 0xFF, 0xFF, 0x0F, 0xBB, 0xFF, - .byte 0xFF, 0x0F, 0xB5, 0xFF, 0xFF, 0x0F, 0xAE, 0xFF, 0xFF, 0x0F, 0xA8, 0xFF, 0xFF, 0x0F, 0xA2, 0xFF, - .byte 0xFF, 0x0F, 0x9B, 0xFF, 0xFF, 0x0F, 0x95, 0xFF, 0xFE, 0x0F, 0x8F, 0xFF, 0xFE, 0x0F, 0x89, 0xFF, - .byte 0xFE, 0x0F, 0x82, 0xFF, 0xFE, 0x0F, 0x7C, 0xFF, 0xFE, 0x0F, 0x76, 0xFF, 0xFD, 0x0F, 0x70, 0xFF, - .byte 0xFD, 0x0F, 0x69, 0xFF, 0xFD, 0x0F, 0x63, 0xFF, 0xFD, 0x0F, 0x5D, 0xFF, 0xFC, 0x0F, 0x56, 0xFF, - .byte 0xFC, 0x0F, 0x50, 0xFF, 0xFC, 0x0F, 0x4A, 0xFF, 0xFC, 0x0F, 0x44, 0xFF, 0xFB, 0x0F, 0x3D, 0xFF, - .byte 0xFB, 0x0F, 0x37, 0xFF, 0xFB, 0x0F, 0x31, 0xFF, 0xFA, 0x0F, 0x2A, 0xFF, 0xFA, 0x0F, 0x24, 0xFF, - .byte 0xFA, 0x0F, 0x1E, 0xFF, 0xF9, 0x0F, 0x18, 0xFF, 0xF9, 0x0F, 0x11, 0xFF, 0xF9, 0x0F, 0x0B, 0xFF, - .byte 0xF8, 0x0F, 0x05, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, 0xF8, 0xFE, 0xF7, 0x0F, 0xF2, 0xFE, - .byte 0xF7, 0x0F, 0xEC, 0xFE, 0xF6, 0x0F, 0xE5, 0xFE, 0xF6, 0x0F, 0xDF, 0xFE, 0xF5, 0x0F, 0xD9, 0xFE, - .byte 0xF5, 0x0F, 0xD3, 0xFE, 0xF4, 0x0F, 0xCC, 0xFE, 0xF4, 0x0F, 0xC6, 0xFE, 0xF3, 0x0F, 0xC0, 0xFE, - .byte 0xF3, 0x0F, 0xBA, 0xFE, 0xF2, 0x0F, 0xB3, 0xFE, 0xF2, 0x0F, 0xAD, 0xFE, 0xF1, 0x0F, 0xA7, 0xFE, - .byte 0xF1, 0x0F, 0xA1, 0xFE, 0xF0, 0x0F, 0x9A, 0xFE, 0xF0, 0x0F, 0x94, 0xFE, 0xEF, 0x0F, 0x8E, 0xFE, - .byte 0xEF, 0x0F, 0x88, 0xFE, 0xEE, 0x0F, 0x81, 0xFE, 0xED, 0x0F, 0x7B, 0xFE, 0xED, 0x0F, 0x75, 0xFE, - .byte 0xEC, 0x0F, 0x6F, 0xFE, 0xEC, 0x0F, 0x68, 0xFE, 0xEB, 0x0F, 0x62, 0xFE, 0xEA, 0x0F, 0x5C, 0xFE, - .byte 0xEA, 0x0F, 0x56, 0xFE, 0xE9, 0x0F, 0x4F, 0xFE, 0xE8, 0x0F, 0x49, 0xFE, 0xE8, 0x0F, 0x43, 0xFE, - .byte 0xE7, 0x0F, 0x3D, 0xFE, 0xE6, 0x0F, 0x36, 0xFE, 0xE6, 0x0F, 0x30, 0xFE, 0xE5, 0x0F, 0x2A, 0xFE, - .byte 0xE4, 0x0F, 0x24, 0xFE, 0xE3, 0x0F, 0x1D, 0xFE, 0xE3, 0x0F, 0x17, 0xFE, 0xE2, 0x0F, 0x11, 0xFE, - .byte 0xE1, 0x0F, 0x0B, 0xFE, 0xE0, 0x0F, 0x04, 0xFE, 0xE0, 0x0F, 0xFE, 0xFD, 0xDF, 0x0F, 0xF8, 0xFD, - .byte 0xDE, 0x0F, 0xF2, 0xFD, 0xDD, 0x0F, 0xEB, 0xFD, 0xDC, 0x0F, 0xE5, 0xFD, 0xDC, 0x0F, 0xDF, 0xFD, - .byte 0xDB, 0x0F, 0xD9, 0xFD, 0xDA, 0x0F, 0xD3, 0xFD, 0xD9, 0x0F, 0xCC, 0xFD, 0xD8, 0x0F, 0xC6, 0xFD, - .byte 0xD7, 0x0F, 0xC0, 0xFD, 0xD6, 0x0F, 0xBA, 0xFD, 0xD5, 0x0F, 0xB3, 0xFD, 0xD5, 0x0F, 0xAD, 0xFD, - .byte 0xD4, 0x0F, 0xA7, 0xFD, 0xD3, 0x0F, 0xA1, 0xFD, 0xD2, 0x0F, 0x9B, 0xFD, 0xD1, 0x0F, 0x94, 0xFD, - .byte 0xD0, 0x0F, 0x8E, 0xFD, 0xCF, 0x0F, 0x88, 0xFD, 0xCE, 0x0F, 0x82, 0xFD, 0xCD, 0x0F, 0x7C, 0xFD, - .byte 0xCC, 0x0F, 0x75, 0xFD, 0xCB, 0x0F, 0x6F, 0xFD, 0xCA, 0x0F, 0x69, 0xFD, 0xC9, 0x0F, 0x63, 0xFD, - .byte 0xC8, 0x0F, 0x5D, 0xFD, 0xC7, 0x0F, 0x56, 0xFD, 0xC6, 0x0F, 0x50, 0xFD, 0xC5, 0x0F, 0x4A, 0xFD, - .byte 0xC4, 0x0F, 0x44, 0xFD, 0xC3, 0x0F, 0x3E, 0xFD, 0xC2, 0x0F, 0x37, 0xFD, 0xC0, 0x0F, 0x31, 0xFD, - .byte 0xBF, 0x0F, 0x2B, 0xFD, 0xBE, 0x0F, 0x25, 0xFD, 0xBD, 0x0F, 0x1F, 0xFD, 0xBC, 0x0F, 0x18, 0xFD, - .byte 0xBB, 0x0F, 0x12, 0xFD, 0xBA, 0x0F, 0x0C, 0xFD, 0xB8, 0x0F, 0x06, 0xFD, 0xB7, 0x0F, 0x00, 0xFD, - .byte 0xB6, 0x0F, 0xFA, 0xFC, 0xB5, 0x0F, 0xF3, 0xFC, 0xB4, 0x0F, 0xED, 0xFC, 0xB3, 0x0F, 0xE7, 0xFC, - .byte 0xB1, 0x0F, 0xE1, 0xFC, 0xB0, 0x0F, 0xDB, 0xFC, 0xAF, 0x0F, 0xD5, 0xFC, 0xAE, 0x0F, 0xCE, 0xFC, - .byte 0xAC, 0x0F, 0xC8, 0xFC, 0xAB, 0x0F, 0xC2, 0xFC, 0xAA, 0x0F, 0xBC, 0xFC, 0xA8, 0x0F, 0xB6, 0xFC, - .byte 0xA7, 0x0F, 0xB0, 0xFC, 0xA6, 0x0F, 0xAA, 0xFC, 0xA5, 0x0F, 0xA3, 0xFC, 0xA3, 0x0F, 0x9D, 0xFC, - .byte 0xA2, 0x0F, 0x97, 0xFC, 0xA1, 0x0F, 0x91, 0xFC, 0x9F, 0x0F, 0x8B, 0xFC, 0x9E, 0x0F, 0x85, 0xFC, - .byte 0x9C, 0x0F, 0x7F, 0xFC, 0x9B, 0x0F, 0x78, 0xFC, 0x9A, 0x0F, 0x72, 0xFC, 0x98, 0x0F, 0x6C, 0xFC, - .byte 0x97, 0x0F, 0x66, 0xFC, 0x95, 0x0F, 0x60, 0xFC, 0x94, 0x0F, 0x5A, 0xFC, 0x93, 0x0F, 0x54, 0xFC, - .byte 0x91, 0x0F, 0x4E, 0xFC, 0x90, 0x0F, 0x47, 0xFC, 0x8E, 0x0F, 0x41, 0xFC, 0x8D, 0x0F, 0x3B, 0xFC, - .byte 0x8B, 0x0F, 0x35, 0xFC, 0x8A, 0x0F, 0x2F, 0xFC, 0x88, 0x0F, 0x29, 0xFC, 0x87, 0x0F, 0x23, 0xFC, - .byte 0x85, 0x0F, 0x1D, 0xFC, 0x84, 0x0F, 0x17, 0xFC, 0x82, 0x0F, 0x11, 0xFC, 0x81, 0x0F, 0x0A, 0xFC, - .byte 0x7F, 0x0F, 0x04, 0xFC, 0x7D, 0x0F, 0xFE, 0xFB, 0x7C, 0x0F, 0xF8, 0xFB, 0x7A, 0x0F, 0xF2, 0xFB, - .byte 0x79, 0x0F, 0xEC, 0xFB, 0x77, 0x0F, 0xE6, 0xFB, 0x76, 0x0F, 0xE0, 0xFB, 0x74, 0x0F, 0xDA, 0xFB, - .byte 0x72, 0x0F, 0xD4, 0xFB, 0x71, 0x0F, 0xCE, 0xFB, 0x6F, 0x0F, 0xC8, 0xFB, 0x6D, 0x0F, 0xC2, 0xFB, - .byte 0x6C, 0x0F, 0xBC, 0xFB, 0x6A, 0x0F, 0xB5, 0xFB, 0x68, 0x0F, 0xAF, 0xFB, 0x67, 0x0F, 0xA9, 0xFB, - .byte 0x65, 0x0F, 0xA3, 0xFB, 0x63, 0x0F, 0x9D, 0xFB, 0x61, 0x0F, 0x97, 0xFB, 0x60, 0x0F, 0x91, 0xFB, - .byte 0x5E, 0x0F, 0x8B, 0xFB, 0x5C, 0x0F, 0x85, 0xFB, 0x5A, 0x0F, 0x7F, 0xFB, 0x59, 0x0F, 0x79, 0xFB, - .byte 0x57, 0x0F, 0x73, 0xFB, 0x55, 0x0F, 0x6D, 0xFB, 0x53, 0x0F, 0x67, 0xFB, 0x51, 0x0F, 0x61, 0xFB, - .byte 0x50, 0x0F, 0x5B, 0xFB, 0x4E, 0x0F, 0x55, 0xFB, 0x4C, 0x0F, 0x4F, 0xFB, 0x4A, 0x0F, 0x49, 0xFB, - .byte 0x48, 0x0F, 0x43, 0xFB, 0x46, 0x0F, 0x3D, 0xFB, 0x45, 0x0F, 0x37, 0xFB, 0x43, 0x0F, 0x31, 0xFB, - .byte 0x41, 0x0F, 0x2B, 0xFB, 0x3F, 0x0F, 0x25, 0xFB, 0x3D, 0x0F, 0x1F, 0xFB, 0x3B, 0x0F, 0x19, 0xFB, - .byte 0x39, 0x0F, 0x13, 0xFB, 0x37, 0x0F, 0x0D, 0xFB, 0x35, 0x0F, 0x07, 0xFB, 0x33, 0x0F, 0x01, 0xFB, - .byte 0x31, 0x0F, 0xFB, 0xFA, 0x2F, 0x0F, 0xF5, 0xFA, 0x2D, 0x0F, 0xEF, 0xFA, 0x2B, 0x0F, 0xE9, 0xFA, - .byte 0x29, 0x0F, 0xE3, 0xFA, 0x27, 0x0F, 0xDD, 0xFA, 0x25, 0x0F, 0xD7, 0xFA, 0x23, 0x0F, 0xD1, 0xFA, - .byte 0x21, 0x0F, 0xCC, 0xFA, 0x1F, 0x0F, 0xC6, 0xFA, 0x1D, 0x0F, 0xC0, 0xFA, 0x1B, 0x0F, 0xBA, 0xFA, - .byte 0x19, 0x0F, 0xB4, 0xFA, 0x17, 0x0F, 0xAE, 0xFA, 0x15, 0x0F, 0xA8, 0xFA, 0x13, 0x0F, 0xA2, 0xFA, - .byte 0x11, 0x0F, 0x9C, 0xFA, 0x0E, 0x0F, 0x96, 0xFA, 0x0C, 0x0F, 0x90, 0xFA, 0x0A, 0x0F, 0x8A, 0xFA, - .byte 0x08, 0x0F, 0x84, 0xFA, 0x06, 0x0F, 0x7F, 0xFA, 0x04, 0x0F, 0x79, 0xFA, 0x02, 0x0F, 0x73, 0xFA, - .byte 0xFF, 0x0E, 0x6D, 0xFA, 0xFD, 0x0E, 0x67, 0xFA, 0xFB, 0x0E, 0x61, 0xFA, 0xF9, 0x0E, 0x5B, 0xFA, - .byte 0xF7, 0x0E, 0x55, 0xFA, 0xF4, 0x0E, 0x4F, 0xFA, 0xF2, 0x0E, 0x4A, 0xFA, 0xF0, 0x0E, 0x44, 0xFA, - .byte 0xEE, 0x0E, 0x3E, 0xFA, 0xEB, 0x0E, 0x38, 0xFA, 0xE9, 0x0E, 0x32, 0xFA, 0xE7, 0x0E, 0x2C, 0xFA, - .byte 0xE4, 0x0E, 0x26, 0xFA, 0xE2, 0x0E, 0x21, 0xFA, 0xE0, 0x0E, 0x1B, 0xFA, 0xDD, 0x0E, 0x15, 0xFA, - .byte 0xDB, 0x0E, 0x0F, 0xFA, 0xD9, 0x0E, 0x09, 0xFA, 0xD6, 0x0E, 0x03, 0xFA, 0xD4, 0x0E, 0xFE, 0xF9, - .byte 0xD2, 0x0E, 0xF8, 0xF9, 0xCF, 0x0E, 0xF2, 0xF9, 0xCD, 0x0E, 0xEC, 0xF9, 0xCB, 0x0E, 0xE6, 0xF9, - .byte 0xC8, 0x0E, 0xE1, 0xF9, 0xC6, 0x0E, 0xDB, 0xF9, 0xC3, 0x0E, 0xD5, 0xF9, 0xC1, 0x0E, 0xCF, 0xF9, - .byte 0xBF, 0x0E, 0xC9, 0xF9, 0xBC, 0x0E, 0xC4, 0xF9, 0xBA, 0x0E, 0xBE, 0xF9, 0xB7, 0x0E, 0xB8, 0xF9, - .byte 0xB5, 0x0E, 0xB2, 0xF9, 0xB2, 0x0E, 0xAC, 0xF9, 0xB0, 0x0E, 0xA7, 0xF9, 0xAD, 0x0E, 0xA1, 0xF9, - .byte 0xAB, 0x0E, 0x9B, 0xF9, 0xA8, 0x0E, 0x95, 0xF9, 0xA6, 0x0E, 0x90, 0xF9, 0xA3, 0x0E, 0x8A, 0xF9, - .byte 0xA1, 0x0E, 0x84, 0xF9, 0x9E, 0x0E, 0x7E, 0xF9, 0x9B, 0x0E, 0x79, 0xF9, 0x99, 0x0E, 0x73, 0xF9, - .byte 0x96, 0x0E, 0x6D, 0xF9, 0x94, 0x0E, 0x67, 0xF9, 0x91, 0x0E, 0x62, 0xF9, 0x8F, 0x0E, 0x5C, 0xF9, - .byte 0x8C, 0x0E, 0x56, 0xF9, 0x89, 0x0E, 0x51, 0xF9, 0x87, 0x0E, 0x4B, 0xF9, 0x84, 0x0E, 0x45, 0xF9, - .byte 0x81, 0x0E, 0x3F, 0xF9, 0x7F, 0x0E, 0x3A, 0xF9, 0x7C, 0x0E, 0x34, 0xF9, 0x79, 0x0E, 0x2E, 0xF9, - .byte 0x77, 0x0E, 0x29, 0xF9, 0x74, 0x0E, 0x23, 0xF9, 0x71, 0x0E, 0x1D, 0xF9, 0x6F, 0x0E, 0x18, 0xF9, - .byte 0x6C, 0x0E, 0x12, 0xF9, 0x69, 0x0E, 0x0C, 0xF9, 0x66, 0x0E, 0x07, 0xF9, 0x64, 0x0E, 0x01, 0xF9, - .byte 0x61, 0x0E, 0xFB, 0xF8, 0x5E, 0x0E, 0xF6, 0xF8, 0x5B, 0x0E, 0xF0, 0xF8, 0x59, 0x0E, 0xEB, 0xF8, - .byte 0x56, 0x0E, 0xE5, 0xF8, 0x53, 0x0E, 0xDF, 0xF8, 0x50, 0x0E, 0xDA, 0xF8, 0x4D, 0x0E, 0xD4, 0xF8, - .byte 0x4B, 0x0E, 0xCE, 0xF8, 0x48, 0x0E, 0xC9, 0xF8, 0x45, 0x0E, 0xC3, 0xF8, 0x42, 0x0E, 0xBE, 0xF8, - .byte 0x3F, 0x0E, 0xB8, 0xF8, 0x3C, 0x0E, 0xB2, 0xF8, 0x3A, 0x0E, 0xAD, 0xF8, 0x37, 0x0E, 0xA7, 0xF8, - .byte 0x34, 0x0E, 0xA2, 0xF8, 0x31, 0x0E, 0x9C, 0xF8, 0x2E, 0x0E, 0x96, 0xF8, 0x2B, 0x0E, 0x91, 0xF8, - .byte 0x28, 0x0E, 0x8B, 0xF8, 0x25, 0x0E, 0x86, 0xF8, 0x22, 0x0E, 0x80, 0xF8, 0x1F, 0x0E, 0x7B, 0xF8, - .byte 0x1C, 0x0E, 0x75, 0xF8, 0x19, 0x0E, 0x70, 0xF8, 0x16, 0x0E, 0x6A, 0xF8, 0x13, 0x0E, 0x65, 0xF8, - .byte 0x10, 0x0E, 0x5F, 0xF8, 0x0D, 0x0E, 0x5A, 0xF8, 0x0A, 0x0E, 0x54, 0xF8, 0x07, 0x0E, 0x4E, 0xF8, - .byte 0x04, 0x0E, 0x49, 0xF8, 0x01, 0x0E, 0x43, 0xF8, 0xFE, 0x0D, 0x3E, 0xF8, 0xFB, 0x0D, 0x38, 0xF8, - .byte 0xF8, 0x0D, 0x33, 0xF8, 0xF5, 0x0D, 0x2E, 0xF8, 0xF2, 0x0D, 0x28, 0xF8, 0xEF, 0x0D, 0x23, 0xF8, - .byte 0xEC, 0x0D, 0x1D, 0xF8, 0xE9, 0x0D, 0x18, 0xF8, 0xE6, 0x0D, 0x12, 0xF8, 0xE3, 0x0D, 0x0D, 0xF8, - .byte 0xDF, 0x0D, 0x07, 0xF8, 0xDC, 0x0D, 0x02, 0xF8, 0xD9, 0x0D, 0xFC, 0xF7, 0xD6, 0x0D, 0xF7, 0xF7, - .byte 0xD3, 0x0D, 0xF2, 0xF7, 0xD0, 0x0D, 0xEC, 0xF7, 0xCC, 0x0D, 0xE7, 0xF7, 0xC9, 0x0D, 0xE1, 0xF7, - .byte 0xC6, 0x0D, 0xDC, 0xF7, 0xC3, 0x0D, 0xD6, 0xF7, 0xC0, 0x0D, 0xD1, 0xF7, 0xBC, 0x0D, 0xCC, 0xF7, - .byte 0xB9, 0x0D, 0xC6, 0xF7, 0xB6, 0x0D, 0xC1, 0xF7, 0xB3, 0x0D, 0xBB, 0xF7, 0xB0, 0x0D, 0xB6, 0xF7, - .byte 0xAC, 0x0D, 0xB1, 0xF7, 0xA9, 0x0D, 0xAB, 0xF7, 0xA6, 0x0D, 0xA6, 0xF7, 0xA2, 0x0D, 0xA1, 0xF7, - .byte 0x9F, 0x0D, 0x9B, 0xF7, 0x9C, 0x0D, 0x96, 0xF7, 0x99, 0x0D, 0x91, 0xF7, 0x95, 0x0D, 0x8B, 0xF7, - .byte 0x92, 0x0D, 0x86, 0xF7, 0x8F, 0x0D, 0x81, 0xF7, 0x8B, 0x0D, 0x7B, 0xF7, 0x88, 0x0D, 0x76, 0xF7, - .byte 0x85, 0x0D, 0x71, 0xF7, 0x81, 0x0D, 0x6B, 0xF7, 0x7E, 0x0D, 0x66, 0xF7, 0x7A, 0x0D, 0x61, 0xF7, - .byte 0x77, 0x0D, 0x5B, 0xF7, 0x74, 0x0D, 0x56, 0xF7, 0x70, 0x0D, 0x51, 0xF7, 0x6D, 0x0D, 0x4C, 0xF7, - .byte 0x69, 0x0D, 0x46, 0xF7, 0x66, 0x0D, 0x41, 0xF7, 0x62, 0x0D, 0x3C, 0xF7, 0x5F, 0x0D, 0x37, 0xF7, - .byte 0x5C, 0x0D, 0x31, 0xF7, 0x58, 0x0D, 0x2C, 0xF7, 0x55, 0x0D, 0x27, 0xF7, 0x51, 0x0D, 0x22, 0xF7, - .byte 0x4E, 0x0D, 0x1C, 0xF7, 0x4A, 0x0D, 0x17, 0xF7, 0x47, 0x0D, 0x12, 0xF7, 0x43, 0x0D, 0x0D, 0xF7, - .byte 0x40, 0x0D, 0x08, 0xF7, 0x3C, 0x0D, 0x02, 0xF7, 0x39, 0x0D, 0xFD, 0xF6, 0x35, 0x0D, 0xF8, 0xF6, - .byte 0x32, 0x0D, 0xF3, 0xF6, 0x2E, 0x0D, 0xEE, 0xF6, 0x2A, 0x0D, 0xE8, 0xF6, 0x27, 0x0D, 0xE3, 0xF6, - .byte 0x23, 0x0D, 0xDE, 0xF6, 0x20, 0x0D, 0xD9, 0xF6, 0x1C, 0x0D, 0xD4, 0xF6, 0x18, 0x0D, 0xCF, 0xF6, - .byte 0x15, 0x0D, 0xC9, 0xF6, 0x11, 0x0D, 0xC4, 0xF6, 0x0E, 0x0D, 0xBF, 0xF6, 0x0A, 0x0D, 0xBA, 0xF6, - .byte 0x06, 0x0D, 0xB5, 0xF6, 0x03, 0x0D, 0xB0, 0xF6, 0xFF, 0x0C, 0xAB, 0xF6, 0xFB, 0x0C, 0xA6, 0xF6, - .byte 0xF8, 0x0C, 0xA1, 0xF6, 0xF4, 0x0C, 0x9B, 0xF6, 0xF0, 0x0C, 0x96, 0xF6, 0xED, 0x0C, 0x91, 0xF6, - .byte 0xE9, 0x0C, 0x8C, 0xF6, 0xE5, 0x0C, 0x87, 0xF6, 0xE1, 0x0C, 0x82, 0xF6, 0xDE, 0x0C, 0x7D, 0xF6, - .byte 0xDA, 0x0C, 0x78, 0xF6, 0xD6, 0x0C, 0x73, 0xF6, 0xD2, 0x0C, 0x6E, 0xF6, 0xCF, 0x0C, 0x69, 0xF6, - .byte 0xCB, 0x0C, 0x64, 0xF6, 0xC7, 0x0C, 0x5F, 0xF6, 0xC3, 0x0C, 0x5A, 0xF6, 0xC0, 0x0C, 0x55, 0xF6, - .byte 0xBC, 0x0C, 0x50, 0xF6, 0xB8, 0x0C, 0x4B, 0xF6, 0xB4, 0x0C, 0x46, 0xF6, 0xB0, 0x0C, 0x41, 0xF6, - .byte 0xAC, 0x0C, 0x3C, 0xF6, 0xA9, 0x0C, 0x37, 0xF6, 0xA5, 0x0C, 0x32, 0xF6, 0xA1, 0x0C, 0x2D, 0xF6, - .byte 0x9D, 0x0C, 0x28, 0xF6, 0x99, 0x0C, 0x23, 0xF6, 0x95, 0x0C, 0x1E, 0xF6, 0x91, 0x0C, 0x19, 0xF6, - .byte 0x8E, 0x0C, 0x14, 0xF6, 0x8A, 0x0C, 0x0F, 0xF6, 0x86, 0x0C, 0x0A, 0xF6, 0x82, 0x0C, 0x05, 0xF6, - .byte 0x7E, 0x0C, 0x01, 0xF6, 0x7A, 0x0C, 0xFC, 0xF5, 0x76, 0x0C, 0xF7, 0xF5, 0x72, 0x0C, 0xF2, 0xF5, - .byte 0x6E, 0x0C, 0xED, 0xF5, 0x6A, 0x0C, 0xE8, 0xF5, 0x66, 0x0C, 0xE3, 0xF5, 0x62, 0x0C, 0xDE, 0xF5, - .byte 0x5E, 0x0C, 0xDA, 0xF5, 0x5A, 0x0C, 0xD5, 0xF5, 0x56, 0x0C, 0xD0, 0xF5, 0x52, 0x0C, 0xCB, 0xF5, - .byte 0x4E, 0x0C, 0xC6, 0xF5, 0x4A, 0x0C, 0xC1, 0xF5, 0x46, 0x0C, 0xBC, 0xF5, 0x42, 0x0C, 0xB8, 0xF5, - .byte 0x3E, 0x0C, 0xB3, 0xF5, 0x3A, 0x0C, 0xAE, 0xF5, 0x36, 0x0C, 0xA9, 0xF5, 0x32, 0x0C, 0xA4, 0xF5, - .byte 0x2E, 0x0C, 0xA0, 0xF5, 0x2A, 0x0C, 0x9B, 0xF5, 0x26, 0x0C, 0x96, 0xF5, 0x22, 0x0C, 0x91, 0xF5, - .byte 0x1E, 0x0C, 0x8D, 0xF5, 0x19, 0x0C, 0x88, 0xF5, 0x15, 0x0C, 0x83, 0xF5, 0x11, 0x0C, 0x7E, 0xF5, - .byte 0x0D, 0x0C, 0x7A, 0xF5, 0x09, 0x0C, 0x75, 0xF5, 0x05, 0x0C, 0x70, 0xF5, 0x01, 0x0C, 0x6B, 0xF5, - .byte 0xFC, 0x0B, 0x67, 0xF5, 0xF8, 0x0B, 0x62, 0xF5, 0xF4, 0x0B, 0x5D, 0xF5, 0xF0, 0x0B, 0x59, 0xF5, - .byte 0xEC, 0x0B, 0x54, 0xF5, 0xE8, 0x0B, 0x4F, 0xF5, 0xE3, 0x0B, 0x4B, 0xF5, 0xDF, 0x0B, 0x46, 0xF5, - .byte 0xDB, 0x0B, 0x41, 0xF5, 0xD7, 0x0B, 0x3D, 0xF5, 0xD2, 0x0B, 0x38, 0xF5, 0xCE, 0x0B, 0x33, 0xF5, - .byte 0xCA, 0x0B, 0x2F, 0xF5, 0xC6, 0x0B, 0x2A, 0xF5, 0xC1, 0x0B, 0x25, 0xF5, 0xBD, 0x0B, 0x21, 0xF5, - .byte 0xB9, 0x0B, 0x1C, 0xF5, 0xB5, 0x0B, 0x18, 0xF5, 0xB0, 0x0B, 0x13, 0xF5, 0xAC, 0x0B, 0x0E, 0xF5, - .byte 0xA8, 0x0B, 0x0A, 0xF5, 0xA3, 0x0B, 0x05, 0xF5, 0x9F, 0x0B, 0x01, 0xF5, 0x9B, 0x0B, 0xFC, 0xF4, - .byte 0x97, 0x0B, 0xF8, 0xF4, 0x92, 0x0B, 0xF3, 0xF4, 0x8E, 0x0B, 0xEF, 0xF4, 0x89, 0x0B, 0xEA, 0xF4, - .byte 0x85, 0x0B, 0xE5, 0xF4, 0x81, 0x0B, 0xE1, 0xF4, 0x7C, 0x0B, 0xDC, 0xF4, 0x78, 0x0B, 0xD8, 0xF4, - .byte 0x74, 0x0B, 0xD3, 0xF4, 0x6F, 0x0B, 0xCF, 0xF4, 0x6B, 0x0B, 0xCA, 0xF4, 0x66, 0x0B, 0xC6, 0xF4, - .byte 0x62, 0x0B, 0xC2, 0xF4, 0x5E, 0x0B, 0xBD, 0xF4, 0x59, 0x0B, 0xB9, 0xF4, 0x55, 0x0B, 0xB4, 0xF4, - .byte 0x50, 0x0B, 0xB0, 0xF4, 0x4C, 0x0B, 0xAB, 0xF4, 0x47, 0x0B, 0xA7, 0xF4, 0x43, 0x0B, 0xA2, 0xF4, - .byte 0x3E, 0x0B, 0x9E, 0xF4, 0x3A, 0x0B, 0x9A, 0xF4, 0x36, 0x0B, 0x95, 0xF4, 0x31, 0x0B, 0x91, 0xF4, - .byte 0x2D, 0x0B, 0x8C, 0xF4, 0x28, 0x0B, 0x88, 0xF4, 0x24, 0x0B, 0x84, 0xF4, 0x1F, 0x0B, 0x7F, 0xF4, - .byte 0x1B, 0x0B, 0x7B, 0xF4, 0x16, 0x0B, 0x77, 0xF4, 0x11, 0x0B, 0x72, 0xF4, 0x0D, 0x0B, 0x6E, 0xF4, - .byte 0x08, 0x0B, 0x69, 0xF4, 0x04, 0x0B, 0x65, 0xF4, 0xFF, 0x0A, 0x61, 0xF4, 0xFB, 0x0A, 0x5D, 0xF4, - .byte 0xF6, 0x0A, 0x58, 0xF4, 0xF2, 0x0A, 0x54, 0xF4, 0xED, 0x0A, 0x50, 0xF4, 0xE8, 0x0A, 0x4B, 0xF4, - .byte 0xE4, 0x0A, 0x47, 0xF4, 0xDF, 0x0A, 0x43, 0xF4, 0xDB, 0x0A, 0x3F, 0xF4, 0xD6, 0x0A, 0x3A, 0xF4, - .byte 0xD1, 0x0A, 0x36, 0xF4, 0xCD, 0x0A, 0x32, 0xF4, 0xC8, 0x0A, 0x2E, 0xF4, 0xC3, 0x0A, 0x29, 0xF4, - .byte 0xBF, 0x0A, 0x25, 0xF4, 0xBA, 0x0A, 0x21, 0xF4, 0xB5, 0x0A, 0x1D, 0xF4, 0xB1, 0x0A, 0x18, 0xF4, - .byte 0xAC, 0x0A, 0x14, 0xF4, 0xA7, 0x0A, 0x10, 0xF4, 0xA3, 0x0A, 0x0C, 0xF4, 0x9E, 0x0A, 0x08, 0xF4, - .byte 0x99, 0x0A, 0x04, 0xF4, 0x95, 0x0A, 0xFF, 0xF3, 0x90, 0x0A, 0xFB, 0xF3, 0x8B, 0x0A, 0xF7, 0xF3, - .byte 0x86, 0x0A, 0xF3, 0xF3, 0x82, 0x0A, 0xEF, 0xF3, 0x7D, 0x0A, 0xEB, 0xF3, 0x78, 0x0A, 0xE7, 0xF3, - .byte 0x73, 0x0A, 0xE2, 0xF3, 0x6F, 0x0A, 0xDE, 0xF3, 0x6A, 0x0A, 0xDA, 0xF3, 0x65, 0x0A, 0xD6, 0xF3, - .byte 0x60, 0x0A, 0xD2, 0xF3, 0x5C, 0x0A, 0xCE, 0xF3, 0x57, 0x0A, 0xCA, 0xF3, 0x52, 0x0A, 0xC6, 0xF3, - .byte 0x4D, 0x0A, 0xC2, 0xF3, 0x48, 0x0A, 0xBE, 0xF3, 0x44, 0x0A, 0xBA, 0xF3, 0x3F, 0x0A, 0xB6, 0xF3, - .byte 0x3A, 0x0A, 0xB2, 0xF3, 0x35, 0x0A, 0xAE, 0xF3, 0x30, 0x0A, 0xAA, 0xF3, 0x2B, 0x0A, 0xA6, 0xF3, - .byte 0x26, 0x0A, 0xA2, 0xF3, 0x22, 0x0A, 0x9E, 0xF3, 0x1D, 0x0A, 0x9A, 0xF3, 0x18, 0x0A, 0x96, 0xF3, - .byte 0x13, 0x0A, 0x92, 0xF3, 0x0E, 0x0A, 0x8E, 0xF3, 0x09, 0x0A, 0x8A, 0xF3, 0x04, 0x0A, 0x86, 0xF3, - .byte 0xFF, 0x09, 0x82, 0xF3, 0xFB, 0x09, 0x7E, 0xF3, 0xF6, 0x09, 0x7A, 0xF3, 0xF1, 0x09, 0x76, 0xF3, - .byte 0xEC, 0x09, 0x72, 0xF3, 0xE7, 0x09, 0x6F, 0xF3, 0xE2, 0x09, 0x6B, 0xF3, 0xDD, 0x09, 0x67, 0xF3, - .byte 0xD8, 0x09, 0x63, 0xF3, 0xD3, 0x09, 0x5F, 0xF3, 0xCE, 0x09, 0x5B, 0xF3, 0xC9, 0x09, 0x57, 0xF3, - .byte 0xC4, 0x09, 0x54, 0xF3, 0xBF, 0x09, 0x50, 0xF3, 0xBA, 0x09, 0x4C, 0xF3, 0xB5, 0x09, 0x48, 0xF3, - .byte 0xB0, 0x09, 0x44, 0xF3, 0xAB, 0x09, 0x40, 0xF3, 0xA6, 0x09, 0x3D, 0xF3, 0xA1, 0x09, 0x39, 0xF3, - .byte 0x9C, 0x09, 0x35, 0xF3, 0x97, 0x09, 0x31, 0xF3, 0x92, 0x09, 0x2E, 0xF3, 0x8D, 0x09, 0x2A, 0xF3, - .byte 0x88, 0x09, 0x26, 0xF3, 0x83, 0x09, 0x22, 0xF3, 0x7E, 0x09, 0x1F, 0xF3, 0x79, 0x09, 0x1B, 0xF3, - .byte 0x74, 0x09, 0x17, 0xF3, 0x6F, 0x09, 0x13, 0xF3, 0x6A, 0x09, 0x10, 0xF3, 0x65, 0x09, 0x0C, 0xF3, - .byte 0x5F, 0x09, 0x08, 0xF3, 0x5A, 0x09, 0x05, 0xF3, 0x55, 0x09, 0x01, 0xF3, 0x50, 0x09, 0xFD, 0xF2, - .byte 0x4B, 0x09, 0xFA, 0xF2, 0x46, 0x09, 0xF6, 0xF2, 0x41, 0x09, 0xF2, 0xF2, 0x3C, 0x09, 0xEF, 0xF2, - .byte 0x37, 0x09, 0xEB, 0xF2, 0x31, 0x09, 0xE8, 0xF2, 0x2C, 0x09, 0xE4, 0xF2, 0x27, 0x09, 0xE0, 0xF2, - .byte 0x22, 0x09, 0xDD, 0xF2, 0x1D, 0x09, 0xD9, 0xF2, 0x18, 0x09, 0xD6, 0xF2, 0x12, 0x09, 0xD2, 0xF2, - .byte 0x0D, 0x09, 0xCE, 0xF2, 0x08, 0x09, 0xCB, 0xF2, 0x03, 0x09, 0xC7, 0xF2, 0xFE, 0x08, 0xC4, 0xF2, - .byte 0xF8, 0x08, 0xC0, 0xF2, 0xF3, 0x08, 0xBD, 0xF2, 0xEE, 0x08, 0xB9, 0xF2, 0xE9, 0x08, 0xB6, 0xF2, - .byte 0xE4, 0x08, 0xB2, 0xF2, 0xDE, 0x08, 0xAF, 0xF2, 0xD9, 0x08, 0xAB, 0xF2, 0xD4, 0x08, 0xA8, 0xF2, - .byte 0xCF, 0x08, 0xA4, 0xF2, 0xC9, 0x08, 0xA1, 0xF2, 0xC4, 0x08, 0x9E, 0xF2, 0xBF, 0x08, 0x9A, 0xF2, - .byte 0xBA, 0x08, 0x97, 0xF2, 0xB4, 0x08, 0x93, 0xF2, 0xAF, 0x08, 0x90, 0xF2, 0xAA, 0x08, 0x8C, 0xF2, - .byte 0xA5, 0x08, 0x89, 0xF2, 0x9F, 0x08, 0x86, 0xF2, 0x9A, 0x08, 0x82, 0xF2, 0x95, 0x08, 0x7F, 0xF2, - .byte 0x8F, 0x08, 0x7B, 0xF2, 0x8A, 0x08, 0x78, 0xF2, 0x85, 0x08, 0x75, 0xF2, 0x7F, 0x08, 0x71, 0xF2, - .byte 0x7A, 0x08, 0x6E, 0xF2, 0x75, 0x08, 0x6B, 0xF2, 0x6F, 0x08, 0x67, 0xF2, 0x6A, 0x08, 0x64, 0xF2, - .byte 0x65, 0x08, 0x61, 0xF2, 0x5F, 0x08, 0x5E, 0xF2, 0x5A, 0x08, 0x5A, 0xF2, 0x55, 0x08, 0x57, 0xF2, - .byte 0x4F, 0x08, 0x54, 0xF2, 0x4A, 0x08, 0x50, 0xF2, 0x45, 0x08, 0x4D, 0xF2, 0x3F, 0x08, 0x4A, 0xF2, - .byte 0x3A, 0x08, 0x47, 0xF2, 0x34, 0x08, 0x44, 0xF2, 0x2F, 0x08, 0x40, 0xF2, 0x2A, 0x08, 0x3D, 0xF2, - .byte 0x24, 0x08, 0x3A, 0xF2, 0x1F, 0x08, 0x37, 0xF2, 0x19, 0x08, 0x34, 0xF2, 0x14, 0x08, 0x30, 0xF2, - .byte 0x0E, 0x08, 0x2D, 0xF2, 0x09, 0x08, 0x2A, 0xF2, 0x04, 0x08, 0x27, 0xF2, 0xFE, 0x07, 0x24, 0xF2, - .byte 0xF9, 0x07, 0x21, 0xF2, 0xF3, 0x07, 0x1D, 0xF2, 0xEE, 0x07, 0x1A, 0xF2, 0xE8, 0x07, 0x17, 0xF2, - .byte 0xE3, 0x07, 0x14, 0xF2, 0xDD, 0x07, 0x11, 0xF2, 0xD8, 0x07, 0x0E, 0xF2, 0xD2, 0x07, 0x0B, 0xF2, - .byte 0xCD, 0x07, 0x08, 0xF2, 0xC8, 0x07, 0x05, 0xF2, 0xC2, 0x07, 0x02, 0xF2, 0xBD, 0x07, 0xFF, 0xF1, - .byte 0xB7, 0x07, 0xFC, 0xF1, 0xB2, 0x07, 0xF9, 0xF1, 0xAC, 0x07, 0xF6, 0xF1, 0xA6, 0x07, 0xF3, 0xF1, - .byte 0xA1, 0x07, 0xF0, 0xF1, 0x9B, 0x07, 0xED, 0xF1, 0x96, 0x07, 0xEA, 0xF1, 0x90, 0x07, 0xE7, 0xF1, - .byte 0x8B, 0x07, 0xE4, 0xF1, 0x85, 0x07, 0xE1, 0xF1, 0x80, 0x07, 0xDE, 0xF1, 0x7A, 0x07, 0xDB, 0xF1, - .byte 0x75, 0x07, 0xD8, 0xF1, 0x6F, 0x07, 0xD5, 0xF1, 0x6A, 0x07, 0xD2, 0xF1, 0x64, 0x07, 0xCF, 0xF1, - .byte 0x5E, 0x07, 0xCC, 0xF1, 0x59, 0x07, 0xC9, 0xF1, 0x53, 0x07, 0xC6, 0xF1, 0x4E, 0x07, 0xC4, 0xF1, - .byte 0x48, 0x07, 0xC1, 0xF1, 0x42, 0x07, 0xBE, 0xF1, 0x3D, 0x07, 0xBB, 0xF1, 0x37, 0x07, 0xB8, 0xF1, - .byte 0x32, 0x07, 0xB5, 0xF1, 0x2C, 0x07, 0xB3, 0xF1, 0x26, 0x07, 0xB0, 0xF1, 0x21, 0x07, 0xAD, 0xF1, - .byte 0x1B, 0x07, 0xAA, 0xF1, 0x15, 0x07, 0xA7, 0xF1, 0x10, 0x07, 0xA5, 0xF1, 0x0A, 0x07, 0xA2, 0xF1, - .byte 0x05, 0x07, 0x9F, 0xF1, 0xFF, 0x06, 0x9C, 0xF1, 0xF9, 0x06, 0x9A, 0xF1, 0xF4, 0x06, 0x97, 0xF1, - .byte 0xEE, 0x06, 0x94, 0xF1, 0xE8, 0x06, 0x91, 0xF1, 0xE3, 0x06, 0x8F, 0xF1, 0xDD, 0x06, 0x8C, 0xF1, - .byte 0xD7, 0x06, 0x89, 0xF1, 0xD2, 0x06, 0x87, 0xF1, 0xCC, 0x06, 0x84, 0xF1, 0xC6, 0x06, 0x81, 0xF1, - .byte 0xC1, 0x06, 0x7F, 0xF1, 0xBB, 0x06, 0x7C, 0xF1, 0xB5, 0x06, 0x79, 0xF1, 0xAF, 0x06, 0x77, 0xF1, - .byte 0xAA, 0x06, 0x74, 0xF1, 0xA4, 0x06, 0x71, 0xF1, 0x9E, 0x06, 0x6F, 0xF1, 0x99, 0x06, 0x6C, 0xF1, - .byte 0x93, 0x06, 0x6A, 0xF1, 0x8D, 0x06, 0x67, 0xF1, 0x87, 0x06, 0x65, 0xF1, 0x82, 0x06, 0x62, 0xF1, - .byte 0x7C, 0x06, 0x5F, 0xF1, 0x76, 0x06, 0x5D, 0xF1, 0x70, 0x06, 0x5A, 0xF1, 0x6B, 0x06, 0x58, 0xF1, - .byte 0x65, 0x06, 0x55, 0xF1, 0x5F, 0x06, 0x53, 0xF1, 0x59, 0x06, 0x50, 0xF1, 0x54, 0x06, 0x4E, 0xF1, - .byte 0x4E, 0x06, 0x4B, 0xF1, 0x48, 0x06, 0x49, 0xF1, 0x42, 0x06, 0x46, 0xF1, 0x3C, 0x06, 0x44, 0xF1, - .byte 0x37, 0x06, 0x41, 0xF1, 0x31, 0x06, 0x3F, 0xF1, 0x2B, 0x06, 0x3D, 0xF1, 0x25, 0x06, 0x3A, 0xF1, - .byte 0x1F, 0x06, 0x38, 0xF1, 0x1A, 0x06, 0x35, 0xF1, 0x14, 0x06, 0x33, 0xF1, 0x0E, 0x06, 0x31, 0xF1, - .byte 0x08, 0x06, 0x2E, 0xF1, 0x02, 0x06, 0x2C, 0xF1, 0xFD, 0x05, 0x2A, 0xF1, 0xF7, 0x05, 0x27, 0xF1, - .byte 0xF1, 0x05, 0x25, 0xF1, 0xEB, 0x05, 0x23, 0xF1, 0xE5, 0x05, 0x20, 0xF1, 0xDF, 0x05, 0x1E, 0xF1, - .byte 0xDA, 0x05, 0x1C, 0xF1, 0xD4, 0x05, 0x19, 0xF1, 0xCE, 0x05, 0x17, 0xF1, 0xC8, 0x05, 0x15, 0xF1, - .byte 0xC2, 0x05, 0x12, 0xF1, 0xBC, 0x05, 0x10, 0xF1, 0xB6, 0x05, 0x0E, 0xF1, 0xB1, 0x05, 0x0C, 0xF1, - .byte 0xAB, 0x05, 0x09, 0xF1, 0xA5, 0x05, 0x07, 0xF1, 0x9F, 0x05, 0x05, 0xF1, 0x99, 0x05, 0x03, 0xF1, - .byte 0x93, 0x05, 0x01, 0xF1, 0x8D, 0x05, 0xFE, 0xF0, 0x87, 0x05, 0xFC, 0xF0, 0x81, 0x05, 0xFA, 0xF0, - .byte 0x7C, 0x05, 0xF8, 0xF0, 0x76, 0x05, 0xF6, 0xF0, 0x70, 0x05, 0xF4, 0xF0, 0x6A, 0x05, 0xF2, 0xF0, - .byte 0x64, 0x05, 0xEF, 0xF0, 0x5E, 0x05, 0xED, 0xF0, 0x58, 0x05, 0xEB, 0xF0, 0x52, 0x05, 0xE9, 0xF0, - .byte 0x4C, 0x05, 0xE7, 0xF0, 0x46, 0x05, 0xE5, 0xF0, 0x40, 0x05, 0xE3, 0xF0, 0x3A, 0x05, 0xE1, 0xF0, - .byte 0x34, 0x05, 0xDF, 0xF0, 0x2F, 0x05, 0xDD, 0xF0, 0x29, 0x05, 0xDB, 0xF0, 0x23, 0x05, 0xD9, 0xF0, - .byte 0x1D, 0x05, 0xD7, 0xF0, 0x17, 0x05, 0xD5, 0xF0, 0x11, 0x05, 0xD3, 0xF0, 0x0B, 0x05, 0xD1, 0xF0, - .byte 0x05, 0x05, 0xCF, 0xF0, 0xFF, 0x04, 0xCD, 0xF0, 0xF9, 0x04, 0xCB, 0xF0, 0xF3, 0x04, 0xC9, 0xF0, - .byte 0xED, 0x04, 0xC7, 0xF0, 0xE7, 0x04, 0xC5, 0xF0, 0xE1, 0x04, 0xC3, 0xF0, 0xDB, 0x04, 0xC1, 0xF0, - .byte 0xD5, 0x04, 0xBF, 0xF0, 0xCF, 0x04, 0xBD, 0xF0, 0xC9, 0x04, 0xBB, 0xF0, 0xC3, 0x04, 0xBA, 0xF0, - .byte 0xBD, 0x04, 0xB8, 0xF0, 0xB7, 0x04, 0xB6, 0xF0, 0xB1, 0x04, 0xB4, 0xF0, 0xAB, 0x04, 0xB2, 0xF0, - .byte 0xA5, 0x04, 0xB0, 0xF0, 0x9F, 0x04, 0xAF, 0xF0, 0x99, 0x04, 0xAD, 0xF0, 0x93, 0x04, 0xAB, 0xF0, - .byte 0x8D, 0x04, 0xA9, 0xF0, 0x87, 0x04, 0xA7, 0xF0, 0x81, 0x04, 0xA6, 0xF0, 0x7B, 0x04, 0xA4, 0xF0, - .byte 0x75, 0x04, 0xA2, 0xF0, 0x6F, 0x04, 0xA0, 0xF0, 0x69, 0x04, 0x9F, 0xF0, 0x63, 0x04, 0x9D, 0xF0, - .byte 0x5D, 0x04, 0x9B, 0xF0, 0x57, 0x04, 0x99, 0xF0, 0x51, 0x04, 0x98, 0xF0, 0x4B, 0x04, 0x96, 0xF0, - .byte 0x44, 0x04, 0x94, 0xF0, 0x3E, 0x04, 0x93, 0xF0, 0x38, 0x04, 0x91, 0xF0, 0x32, 0x04, 0x8F, 0xF0, - .byte 0x2C, 0x04, 0x8E, 0xF0, 0x26, 0x04, 0x8C, 0xF0, 0x20, 0x04, 0x8A, 0xF0, 0x1A, 0x04, 0x89, 0xF0, - .byte 0x14, 0x04, 0x87, 0xF0, 0x0E, 0x04, 0x86, 0xF0, 0x08, 0x04, 0x84, 0xF0, 0x02, 0x04, 0x83, 0xF0, - .byte 0xFC, 0x03, 0x81, 0xF0, 0xF6, 0x03, 0x7F, 0xF0, 0xEF, 0x03, 0x7E, 0xF0, 0xE9, 0x03, 0x7C, 0xF0, - .byte 0xE3, 0x03, 0x7B, 0xF0, 0xDD, 0x03, 0x79, 0xF0, 0xD7, 0x03, 0x78, 0xF0, 0xD1, 0x03, 0x76, 0xF0, - .byte 0xCB, 0x03, 0x75, 0xF0, 0xC5, 0x03, 0x73, 0xF0, 0xBF, 0x03, 0x72, 0xF0, 0xB9, 0x03, 0x70, 0xF0, - .byte 0xB2, 0x03, 0x6F, 0xF0, 0xAC, 0x03, 0x6D, 0xF0, 0xA6, 0x03, 0x6C, 0xF0, 0xA0, 0x03, 0x6B, 0xF0, - .byte 0x9A, 0x03, 0x69, 0xF0, 0x94, 0x03, 0x68, 0xF0, 0x8E, 0x03, 0x66, 0xF0, 0x88, 0x03, 0x65, 0xF0, - .byte 0x81, 0x03, 0x64, 0xF0, 0x7B, 0x03, 0x62, 0xF0, 0x75, 0x03, 0x61, 0xF0, 0x6F, 0x03, 0x5F, 0xF0, - .byte 0x69, 0x03, 0x5E, 0xF0, 0x63, 0x03, 0x5D, 0xF0, 0x5D, 0x03, 0x5B, 0xF0, 0x56, 0x03, 0x5A, 0xF0, - .byte 0x50, 0x03, 0x59, 0xF0, 0x4A, 0x03, 0x58, 0xF0, 0x44, 0x03, 0x56, 0xF0, 0x3E, 0x03, 0x55, 0xF0, - .byte 0x38, 0x03, 0x54, 0xF0, 0x32, 0x03, 0x52, 0xF0, 0x2B, 0x03, 0x51, 0xF0, 0x25, 0x03, 0x50, 0xF0, - .byte 0x1F, 0x03, 0x4F, 0xF0, 0x19, 0x03, 0x4D, 0xF0, 0x13, 0x03, 0x4C, 0xF0, 0x0D, 0x03, 0x4B, 0xF0, - .byte 0x06, 0x03, 0x4A, 0xF0, 0x00, 0x03, 0x49, 0xF0, 0xFA, 0x02, 0x48, 0xF0, 0xF4, 0x02, 0x46, 0xF0, - .byte 0xEE, 0x02, 0x45, 0xF0, 0xE8, 0x02, 0x44, 0xF0, 0xE1, 0x02, 0x43, 0xF0, 0xDB, 0x02, 0x42, 0xF0, - .byte 0xD5, 0x02, 0x41, 0xF0, 0xCF, 0x02, 0x40, 0xF0, 0xC9, 0x02, 0x3E, 0xF0, 0xC2, 0x02, 0x3D, 0xF0, - .byte 0xBC, 0x02, 0x3C, 0xF0, 0xB6, 0x02, 0x3B, 0xF0, 0xB0, 0x02, 0x3A, 0xF0, 0xAA, 0x02, 0x39, 0xF0, - .byte 0xA3, 0x02, 0x38, 0xF0, 0x9D, 0x02, 0x37, 0xF0, 0x97, 0x02, 0x36, 0xF0, 0x91, 0x02, 0x35, 0xF0, - .byte 0x8B, 0x02, 0x34, 0xF0, 0x84, 0x02, 0x33, 0xF0, 0x7E, 0x02, 0x32, 0xF0, 0x78, 0x02, 0x31, 0xF0, - .byte 0x72, 0x02, 0x30, 0xF0, 0x6C, 0x02, 0x2F, 0xF0, 0x65, 0x02, 0x2E, 0xF0, 0x5F, 0x02, 0x2D, 0xF0, - .byte 0x59, 0x02, 0x2C, 0xF0, 0x53, 0x02, 0x2B, 0xF0, 0x4D, 0x02, 0x2B, 0xF0, 0x46, 0x02, 0x2A, 0xF0, - .byte 0x40, 0x02, 0x29, 0xF0, 0x3A, 0x02, 0x28, 0xF0, 0x34, 0x02, 0x27, 0xF0, 0x2D, 0x02, 0x26, 0xF0, - .byte 0x27, 0x02, 0x25, 0xF0, 0x21, 0x02, 0x24, 0xF0, 0x1B, 0x02, 0x24, 0xF0, 0x15, 0x02, 0x23, 0xF0, - .byte 0x0E, 0x02, 0x22, 0xF0, 0x08, 0x02, 0x21, 0xF0, 0x02, 0x02, 0x20, 0xF0, 0xFC, 0x01, 0x20, 0xF0, - .byte 0xF5, 0x01, 0x1F, 0xF0, 0xEF, 0x01, 0x1E, 0xF0, 0xE9, 0x01, 0x1D, 0xF0, 0xE3, 0x01, 0x1D, 0xF0, - .byte 0xDC, 0x01, 0x1C, 0xF0, 0xD6, 0x01, 0x1B, 0xF0, 0xD0, 0x01, 0x1A, 0xF0, 0xCA, 0x01, 0x1A, 0xF0, - .byte 0xC3, 0x01, 0x19, 0xF0, 0xBD, 0x01, 0x18, 0xF0, 0xB7, 0x01, 0x18, 0xF0, 0xB1, 0x01, 0x17, 0xF0, - .byte 0xAA, 0x01, 0x16, 0xF0, 0xA4, 0x01, 0x16, 0xF0, 0x9E, 0x01, 0x15, 0xF0, 0x98, 0x01, 0x14, 0xF0, - .byte 0x91, 0x01, 0x14, 0xF0, 0x8B, 0x01, 0x13, 0xF0, 0x85, 0x01, 0x13, 0xF0, 0x7F, 0x01, 0x12, 0xF0, - .byte 0x78, 0x01, 0x11, 0xF0, 0x72, 0x01, 0x11, 0xF0, 0x6C, 0x01, 0x10, 0xF0, 0x66, 0x01, 0x10, 0xF0, - .byte 0x5F, 0x01, 0x0F, 0xF0, 0x59, 0x01, 0x0F, 0xF0, 0x53, 0x01, 0x0E, 0xF0, 0x4D, 0x01, 0x0E, 0xF0, - .byte 0x46, 0x01, 0x0D, 0xF0, 0x40, 0x01, 0x0D, 0xF0, 0x3A, 0x01, 0x0C, 0xF0, 0x34, 0x01, 0x0C, 0xF0, - .byte 0x2D, 0x01, 0x0B, 0xF0, 0x27, 0x01, 0x0B, 0xF0, 0x21, 0x01, 0x0A, 0xF0, 0x1B, 0x01, 0x0A, 0xF0, - .byte 0x14, 0x01, 0x09, 0xF0, 0x0E, 0x01, 0x09, 0xF0, 0x08, 0x01, 0x08, 0xF0, 0x01, 0x01, 0x08, 0xF0, - .byte 0xFB, 0x00, 0x08, 0xF0, 0xF5, 0x00, 0x07, 0xF0, 0xEF, 0x00, 0x07, 0xF0, 0xE8, 0x00, 0x07, 0xF0, - .byte 0xE2, 0x00, 0x06, 0xF0, 0xDC, 0x00, 0x06, 0xF0, 0xD6, 0x00, 0x06, 0xF0, 0xCF, 0x00, 0x05, 0xF0, - .byte 0xC9, 0x00, 0x05, 0xF0, 0xC3, 0x00, 0x05, 0xF0, 0xBC, 0x00, 0x04, 0xF0, 0xB6, 0x00, 0x04, 0xF0, - .byte 0xB0, 0x00, 0x04, 0xF0, 0xAA, 0x00, 0x04, 0xF0, 0xA3, 0x00, 0x03, 0xF0, 0x9D, 0x00, 0x03, 0xF0, - .byte 0x97, 0x00, 0x03, 0xF0, 0x90, 0x00, 0x03, 0xF0, 0x8A, 0x00, 0x02, 0xF0, 0x84, 0x00, 0x02, 0xF0, - .byte 0x7E, 0x00, 0x02, 0xF0, 0x77, 0x00, 0x02, 0xF0, 0x71, 0x00, 0x02, 0xF0, 0x6B, 0x00, 0x01, 0xF0, - .byte 0x65, 0x00, 0x01, 0xF0, 0x5E, 0x00, 0x01, 0xF0, 0x58, 0x00, 0x01, 0xF0, 0x52, 0x00, 0x01, 0xF0, - .byte 0x4B, 0x00, 0x01, 0xF0, 0x45, 0x00, 0x01, 0xF0, 0x3F, 0x00, 0x00, 0xF0, 0x39, 0x00, 0x00, 0xF0, - .byte 0x32, 0x00, 0x00, 0xF0, 0x2C, 0x00, 0x00, 0xF0, 0x26, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0, - .byte 0x19, 0x00, 0x00, 0xF0, 0x13, 0x00, 0x00, 0xF0, 0x0D, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0xF0, - .byte 0x00, 0x00, 0x00, 0xF0, 0xFA, 0xFF, 0x00, 0xF0, 0xF3, 0xFF, 0x00, 0xF0, 0xED, 0xFF, 0x00, 0xF0, - .byte 0xE7, 0xFF, 0x00, 0xF0, 0xE1, 0xFF, 0x00, 0xF0, 0xDA, 0xFF, 0x00, 0xF0, 0xD4, 0xFF, 0x00, 0xF0, - .byte 0xCE, 0xFF, 0x00, 0xF0, 0xC7, 0xFF, 0x00, 0xF0, 0xC1, 0xFF, 0x00, 0xF0, 0xBB, 0xFF, 0x01, 0xF0, - .byte 0xB5, 0xFF, 0x01, 0xF0, 0xAE, 0xFF, 0x01, 0xF0, 0xA8, 0xFF, 0x01, 0xF0, 0xA2, 0xFF, 0x01, 0xF0, - .byte 0x9B, 0xFF, 0x01, 0xF0, 0x95, 0xFF, 0x01, 0xF0, 0x8F, 0xFF, 0x02, 0xF0, 0x89, 0xFF, 0x02, 0xF0, - .byte 0x82, 0xFF, 0x02, 0xF0, 0x7C, 0xFF, 0x02, 0xF0, 0x76, 0xFF, 0x02, 0xF0, 0x70, 0xFF, 0x03, 0xF0, - .byte 0x69, 0xFF, 0x03, 0xF0, 0x63, 0xFF, 0x03, 0xF0, 0x5D, 0xFF, 0x03, 0xF0, 0x56, 0xFF, 0x04, 0xF0, - .byte 0x50, 0xFF, 0x04, 0xF0, 0x4A, 0xFF, 0x04, 0xF0, 0x44, 0xFF, 0x04, 0xF0, 0x3D, 0xFF, 0x05, 0xF0, - .byte 0x37, 0xFF, 0x05, 0xF0, 0x31, 0xFF, 0x05, 0xF0, 0x2A, 0xFF, 0x06, 0xF0, 0x24, 0xFF, 0x06, 0xF0, - .byte 0x1E, 0xFF, 0x06, 0xF0, 0x18, 0xFF, 0x07, 0xF0, 0x11, 0xFF, 0x07, 0xF0, 0x0B, 0xFF, 0x07, 0xF0, - .byte 0x05, 0xFF, 0x08, 0xF0, 0xFF, 0xFE, 0x08, 0xF0, 0xF8, 0xFE, 0x08, 0xF0, 0xF2, 0xFE, 0x09, 0xF0, - .byte 0xEC, 0xFE, 0x09, 0xF0, 0xE5, 0xFE, 0x0A, 0xF0, 0xDF, 0xFE, 0x0A, 0xF0, 0xD9, 0xFE, 0x0B, 0xF0, - .byte 0xD3, 0xFE, 0x0B, 0xF0, 0xCC, 0xFE, 0x0C, 0xF0, 0xC6, 0xFE, 0x0C, 0xF0, 0xC0, 0xFE, 0x0D, 0xF0, - .byte 0xBA, 0xFE, 0x0D, 0xF0, 0xB3, 0xFE, 0x0E, 0xF0, 0xAD, 0xFE, 0x0E, 0xF0, 0xA7, 0xFE, 0x0F, 0xF0, - .byte 0xA1, 0xFE, 0x0F, 0xF0, 0x9A, 0xFE, 0x10, 0xF0, 0x94, 0xFE, 0x10, 0xF0, 0x8E, 0xFE, 0x11, 0xF0, - .byte 0x88, 0xFE, 0x11, 0xF0, 0x81, 0xFE, 0x12, 0xF0, 0x7B, 0xFE, 0x13, 0xF0, 0x75, 0xFE, 0x13, 0xF0, - .byte 0x6F, 0xFE, 0x14, 0xF0, 0x68, 0xFE, 0x14, 0xF0, 0x62, 0xFE, 0x15, 0xF0, 0x5C, 0xFE, 0x16, 0xF0, - .byte 0x56, 0xFE, 0x16, 0xF0, 0x4F, 0xFE, 0x17, 0xF0, 0x49, 0xFE, 0x18, 0xF0, 0x43, 0xFE, 0x18, 0xF0, - .byte 0x3D, 0xFE, 0x19, 0xF0, 0x36, 0xFE, 0x1A, 0xF0, 0x30, 0xFE, 0x1A, 0xF0, 0x2A, 0xFE, 0x1B, 0xF0, - .byte 0x24, 0xFE, 0x1C, 0xF0, 0x1D, 0xFE, 0x1D, 0xF0, 0x17, 0xFE, 0x1D, 0xF0, 0x11, 0xFE, 0x1E, 0xF0, - .byte 0x0B, 0xFE, 0x1F, 0xF0, 0x04, 0xFE, 0x20, 0xF0, 0xFE, 0xFD, 0x20, 0xF0, 0xF8, 0xFD, 0x21, 0xF0, - .byte 0xF2, 0xFD, 0x22, 0xF0, 0xEB, 0xFD, 0x23, 0xF0, 0xE5, 0xFD, 0x24, 0xF0, 0xDF, 0xFD, 0x24, 0xF0, - .byte 0xD9, 0xFD, 0x25, 0xF0, 0xD3, 0xFD, 0x26, 0xF0, 0xCC, 0xFD, 0x27, 0xF0, 0xC6, 0xFD, 0x28, 0xF0, - .byte 0xC0, 0xFD, 0x29, 0xF0, 0xBA, 0xFD, 0x2A, 0xF0, 0xB3, 0xFD, 0x2B, 0xF0, 0xAD, 0xFD, 0x2B, 0xF0, - .byte 0xA7, 0xFD, 0x2C, 0xF0, 0xA1, 0xFD, 0x2D, 0xF0, 0x9B, 0xFD, 0x2E, 0xF0, 0x94, 0xFD, 0x2F, 0xF0, - .byte 0x8E, 0xFD, 0x30, 0xF0, 0x88, 0xFD, 0x31, 0xF0, 0x82, 0xFD, 0x32, 0xF0, 0x7C, 0xFD, 0x33, 0xF0, - .byte 0x75, 0xFD, 0x34, 0xF0, 0x6F, 0xFD, 0x35, 0xF0, 0x69, 0xFD, 0x36, 0xF0, 0x63, 0xFD, 0x37, 0xF0, - .byte 0x5D, 0xFD, 0x38, 0xF0, 0x56, 0xFD, 0x39, 0xF0, 0x50, 0xFD, 0x3A, 0xF0, 0x4A, 0xFD, 0x3B, 0xF0, - .byte 0x44, 0xFD, 0x3C, 0xF0, 0x3E, 0xFD, 0x3D, 0xF0, 0x37, 0xFD, 0x3E, 0xF0, 0x31, 0xFD, 0x40, 0xF0, - .byte 0x2B, 0xFD, 0x41, 0xF0, 0x25, 0xFD, 0x42, 0xF0, 0x1F, 0xFD, 0x43, 0xF0, 0x18, 0xFD, 0x44, 0xF0, - .byte 0x12, 0xFD, 0x45, 0xF0, 0x0C, 0xFD, 0x46, 0xF0, 0x06, 0xFD, 0x48, 0xF0, 0x00, 0xFD, 0x49, 0xF0, - .byte 0xFA, 0xFC, 0x4A, 0xF0, 0xF3, 0xFC, 0x4B, 0xF0, 0xED, 0xFC, 0x4C, 0xF0, 0xE7, 0xFC, 0x4D, 0xF0, - .byte 0xE1, 0xFC, 0x4F, 0xF0, 0xDB, 0xFC, 0x50, 0xF0, 0xD5, 0xFC, 0x51, 0xF0, 0xCE, 0xFC, 0x52, 0xF0, - .byte 0xC8, 0xFC, 0x54, 0xF0, 0xC2, 0xFC, 0x55, 0xF0, 0xBC, 0xFC, 0x56, 0xF0, 0xB6, 0xFC, 0x58, 0xF0, - .byte 0xB0, 0xFC, 0x59, 0xF0, 0xAA, 0xFC, 0x5A, 0xF0, 0xA3, 0xFC, 0x5B, 0xF0, 0x9D, 0xFC, 0x5D, 0xF0, - .byte 0x97, 0xFC, 0x5E, 0xF0, 0x91, 0xFC, 0x5F, 0xF0, 0x8B, 0xFC, 0x61, 0xF0, 0x85, 0xFC, 0x62, 0xF0, - .byte 0x7F, 0xFC, 0x64, 0xF0, 0x78, 0xFC, 0x65, 0xF0, 0x72, 0xFC, 0x66, 0xF0, 0x6C, 0xFC, 0x68, 0xF0, - .byte 0x66, 0xFC, 0x69, 0xF0, 0x60, 0xFC, 0x6B, 0xF0, 0x5A, 0xFC, 0x6C, 0xF0, 0x54, 0xFC, 0x6D, 0xF0, - .byte 0x4E, 0xFC, 0x6F, 0xF0, 0x47, 0xFC, 0x70, 0xF0, 0x41, 0xFC, 0x72, 0xF0, 0x3B, 0xFC, 0x73, 0xF0, - .byte 0x35, 0xFC, 0x75, 0xF0, 0x2F, 0xFC, 0x76, 0xF0, 0x29, 0xFC, 0x78, 0xF0, 0x23, 0xFC, 0x79, 0xF0, - .byte 0x1D, 0xFC, 0x7B, 0xF0, 0x17, 0xFC, 0x7C, 0xF0, 0x11, 0xFC, 0x7E, 0xF0, 0x0A, 0xFC, 0x7F, 0xF0, - .byte 0x04, 0xFC, 0x81, 0xF0, 0xFE, 0xFB, 0x83, 0xF0, 0xF8, 0xFB, 0x84, 0xF0, 0xF2, 0xFB, 0x86, 0xF0, - .byte 0xEC, 0xFB, 0x87, 0xF0, 0xE6, 0xFB, 0x89, 0xF0, 0xE0, 0xFB, 0x8A, 0xF0, 0xDA, 0xFB, 0x8C, 0xF0, - .byte 0xD4, 0xFB, 0x8E, 0xF0, 0xCE, 0xFB, 0x8F, 0xF0, 0xC8, 0xFB, 0x91, 0xF0, 0xC2, 0xFB, 0x93, 0xF0, - .byte 0xBC, 0xFB, 0x94, 0xF0, 0xB5, 0xFB, 0x96, 0xF0, 0xAF, 0xFB, 0x98, 0xF0, 0xA9, 0xFB, 0x99, 0xF0, - .byte 0xA3, 0xFB, 0x9B, 0xF0, 0x9D, 0xFB, 0x9D, 0xF0, 0x97, 0xFB, 0x9F, 0xF0, 0x91, 0xFB, 0xA0, 0xF0, - .byte 0x8B, 0xFB, 0xA2, 0xF0, 0x85, 0xFB, 0xA4, 0xF0, 0x7F, 0xFB, 0xA6, 0xF0, 0x79, 0xFB, 0xA7, 0xF0, - .byte 0x73, 0xFB, 0xA9, 0xF0, 0x6D, 0xFB, 0xAB, 0xF0, 0x67, 0xFB, 0xAD, 0xF0, 0x61, 0xFB, 0xAF, 0xF0, - .byte 0x5B, 0xFB, 0xB0, 0xF0, 0x55, 0xFB, 0xB2, 0xF0, 0x4F, 0xFB, 0xB4, 0xF0, 0x49, 0xFB, 0xB6, 0xF0, - .byte 0x43, 0xFB, 0xB8, 0xF0, 0x3D, 0xFB, 0xBA, 0xF0, 0x37, 0xFB, 0xBB, 0xF0, 0x31, 0xFB, 0xBD, 0xF0, - .byte 0x2B, 0xFB, 0xBF, 0xF0, 0x25, 0xFB, 0xC1, 0xF0, 0x1F, 0xFB, 0xC3, 0xF0, 0x19, 0xFB, 0xC5, 0xF0, - .byte 0x13, 0xFB, 0xC7, 0xF0, 0x0D, 0xFB, 0xC9, 0xF0, 0x07, 0xFB, 0xCB, 0xF0, 0x01, 0xFB, 0xCD, 0xF0, - .byte 0xFB, 0xFA, 0xCF, 0xF0, 0xF5, 0xFA, 0xD1, 0xF0, 0xEF, 0xFA, 0xD3, 0xF0, 0xE9, 0xFA, 0xD5, 0xF0, - .byte 0xE3, 0xFA, 0xD7, 0xF0, 0xDD, 0xFA, 0xD9, 0xF0, 0xD7, 0xFA, 0xDB, 0xF0, 0xD1, 0xFA, 0xDD, 0xF0, - .byte 0xCC, 0xFA, 0xDF, 0xF0, 0xC6, 0xFA, 0xE1, 0xF0, 0xC0, 0xFA, 0xE3, 0xF0, 0xBA, 0xFA, 0xE5, 0xF0, - .byte 0xB4, 0xFA, 0xE7, 0xF0, 0xAE, 0xFA, 0xE9, 0xF0, 0xA8, 0xFA, 0xEB, 0xF0, 0xA2, 0xFA, 0xED, 0xF0, - .byte 0x9C, 0xFA, 0xEF, 0xF0, 0x96, 0xFA, 0xF2, 0xF0, 0x90, 0xFA, 0xF4, 0xF0, 0x8A, 0xFA, 0xF6, 0xF0, - .byte 0x84, 0xFA, 0xF8, 0xF0, 0x7F, 0xFA, 0xFA, 0xF0, 0x79, 0xFA, 0xFC, 0xF0, 0x73, 0xFA, 0xFE, 0xF0, - .byte 0x6D, 0xFA, 0x01, 0xF1, 0x67, 0xFA, 0x03, 0xF1, 0x61, 0xFA, 0x05, 0xF1, 0x5B, 0xFA, 0x07, 0xF1, - .byte 0x55, 0xFA, 0x09, 0xF1, 0x4F, 0xFA, 0x0C, 0xF1, 0x4A, 0xFA, 0x0E, 0xF1, 0x44, 0xFA, 0x10, 0xF1, - .byte 0x3E, 0xFA, 0x12, 0xF1, 0x38, 0xFA, 0x15, 0xF1, 0x32, 0xFA, 0x17, 0xF1, 0x2C, 0xFA, 0x19, 0xF1, - .byte 0x26, 0xFA, 0x1C, 0xF1, 0x21, 0xFA, 0x1E, 0xF1, 0x1B, 0xFA, 0x20, 0xF1, 0x15, 0xFA, 0x23, 0xF1, - .byte 0x0F, 0xFA, 0x25, 0xF1, 0x09, 0xFA, 0x27, 0xF1, 0x03, 0xFA, 0x2A, 0xF1, 0xFE, 0xF9, 0x2C, 0xF1, - .byte 0xF8, 0xF9, 0x2E, 0xF1, 0xF2, 0xF9, 0x31, 0xF1, 0xEC, 0xF9, 0x33, 0xF1, 0xE6, 0xF9, 0x35, 0xF1, - .byte 0xE1, 0xF9, 0x38, 0xF1, 0xDB, 0xF9, 0x3A, 0xF1, 0xD5, 0xF9, 0x3D, 0xF1, 0xCF, 0xF9, 0x3F, 0xF1, - .byte 0xC9, 0xF9, 0x41, 0xF1, 0xC4, 0xF9, 0x44, 0xF1, 0xBE, 0xF9, 0x46, 0xF1, 0xB8, 0xF9, 0x49, 0xF1, - .byte 0xB2, 0xF9, 0x4B, 0xF1, 0xAC, 0xF9, 0x4E, 0xF1, 0xA7, 0xF9, 0x50, 0xF1, 0xA1, 0xF9, 0x53, 0xF1, - .byte 0x9B, 0xF9, 0x55, 0xF1, 0x95, 0xF9, 0x58, 0xF1, 0x90, 0xF9, 0x5A, 0xF1, 0x8A, 0xF9, 0x5D, 0xF1, - .byte 0x84, 0xF9, 0x5F, 0xF1, 0x7E, 0xF9, 0x62, 0xF1, 0x79, 0xF9, 0x65, 0xF1, 0x73, 0xF9, 0x67, 0xF1, - .byte 0x6D, 0xF9, 0x6A, 0xF1, 0x67, 0xF9, 0x6C, 0xF1, 0x62, 0xF9, 0x6F, 0xF1, 0x5C, 0xF9, 0x71, 0xF1, - .byte 0x56, 0xF9, 0x74, 0xF1, 0x51, 0xF9, 0x77, 0xF1, 0x4B, 0xF9, 0x79, 0xF1, 0x45, 0xF9, 0x7C, 0xF1, - .byte 0x3F, 0xF9, 0x7F, 0xF1, 0x3A, 0xF9, 0x81, 0xF1, 0x34, 0xF9, 0x84, 0xF1, 0x2E, 0xF9, 0x87, 0xF1, - .byte 0x29, 0xF9, 0x89, 0xF1, 0x23, 0xF9, 0x8C, 0xF1, 0x1D, 0xF9, 0x8F, 0xF1, 0x18, 0xF9, 0x91, 0xF1, - .byte 0x12, 0xF9, 0x94, 0xF1, 0x0C, 0xF9, 0x97, 0xF1, 0x07, 0xF9, 0x9A, 0xF1, 0x01, 0xF9, 0x9C, 0xF1, - .byte 0xFB, 0xF8, 0x9F, 0xF1, 0xF6, 0xF8, 0xA2, 0xF1, 0xF0, 0xF8, 0xA5, 0xF1, 0xEB, 0xF8, 0xA7, 0xF1, - .byte 0xE5, 0xF8, 0xAA, 0xF1, 0xDF, 0xF8, 0xAD, 0xF1, 0xDA, 0xF8, 0xB0, 0xF1, 0xD4, 0xF8, 0xB3, 0xF1, - .byte 0xCE, 0xF8, 0xB5, 0xF1, 0xC9, 0xF8, 0xB8, 0xF1, 0xC3, 0xF8, 0xBB, 0xF1, 0xBE, 0xF8, 0xBE, 0xF1, - .byte 0xB8, 0xF8, 0xC1, 0xF1, 0xB2, 0xF8, 0xC4, 0xF1, 0xAD, 0xF8, 0xC6, 0xF1, 0xA7, 0xF8, 0xC9, 0xF1, - .byte 0xA2, 0xF8, 0xCC, 0xF1, 0x9C, 0xF8, 0xCF, 0xF1, 0x96, 0xF8, 0xD2, 0xF1, 0x91, 0xF8, 0xD5, 0xF1, - .byte 0x8B, 0xF8, 0xD8, 0xF1, 0x86, 0xF8, 0xDB, 0xF1, 0x80, 0xF8, 0xDE, 0xF1, 0x7B, 0xF8, 0xE1, 0xF1, - .byte 0x75, 0xF8, 0xE4, 0xF1, 0x70, 0xF8, 0xE7, 0xF1, 0x6A, 0xF8, 0xEA, 0xF1, 0x65, 0xF8, 0xED, 0xF1, - .byte 0x5F, 0xF8, 0xF0, 0xF1, 0x5A, 0xF8, 0xF3, 0xF1, 0x54, 0xF8, 0xF6, 0xF1, 0x4E, 0xF8, 0xF9, 0xF1, - .byte 0x49, 0xF8, 0xFC, 0xF1, 0x43, 0xF8, 0xFF, 0xF1, 0x3E, 0xF8, 0x02, 0xF2, 0x38, 0xF8, 0x05, 0xF2, - .byte 0x33, 0xF8, 0x08, 0xF2, 0x2E, 0xF8, 0x0B, 0xF2, 0x28, 0xF8, 0x0E, 0xF2, 0x23, 0xF8, 0x11, 0xF2, - .byte 0x1D, 0xF8, 0x14, 0xF2, 0x18, 0xF8, 0x17, 0xF2, 0x12, 0xF8, 0x1A, 0xF2, 0x0D, 0xF8, 0x1D, 0xF2, - .byte 0x07, 0xF8, 0x21, 0xF2, 0x02, 0xF8, 0x24, 0xF2, 0xFC, 0xF7, 0x27, 0xF2, 0xF7, 0xF7, 0x2A, 0xF2, - .byte 0xF2, 0xF7, 0x2D, 0xF2, 0xEC, 0xF7, 0x30, 0xF2, 0xE7, 0xF7, 0x34, 0xF2, 0xE1, 0xF7, 0x37, 0xF2, - .byte 0xDC, 0xF7, 0x3A, 0xF2, 0xD6, 0xF7, 0x3D, 0xF2, 0xD1, 0xF7, 0x40, 0xF2, 0xCC, 0xF7, 0x44, 0xF2, - .byte 0xC6, 0xF7, 0x47, 0xF2, 0xC1, 0xF7, 0x4A, 0xF2, 0xBB, 0xF7, 0x4D, 0xF2, 0xB6, 0xF7, 0x50, 0xF2, - .byte 0xB1, 0xF7, 0x54, 0xF2, 0xAB, 0xF7, 0x57, 0xF2, 0xA6, 0xF7, 0x5A, 0xF2, 0xA1, 0xF7, 0x5E, 0xF2, - .byte 0x9B, 0xF7, 0x61, 0xF2, 0x96, 0xF7, 0x64, 0xF2, 0x91, 0xF7, 0x67, 0xF2, 0x8B, 0xF7, 0x6B, 0xF2, - .byte 0x86, 0xF7, 0x6E, 0xF2, 0x81, 0xF7, 0x71, 0xF2, 0x7B, 0xF7, 0x75, 0xF2, 0x76, 0xF7, 0x78, 0xF2, - .byte 0x71, 0xF7, 0x7B, 0xF2, 0x6B, 0xF7, 0x7F, 0xF2, 0x66, 0xF7, 0x82, 0xF2, 0x61, 0xF7, 0x86, 0xF2, - .byte 0x5B, 0xF7, 0x89, 0xF2, 0x56, 0xF7, 0x8C, 0xF2, 0x51, 0xF7, 0x90, 0xF2, 0x4C, 0xF7, 0x93, 0xF2, - .byte 0x46, 0xF7, 0x97, 0xF2, 0x41, 0xF7, 0x9A, 0xF2, 0x3C, 0xF7, 0x9E, 0xF2, 0x37, 0xF7, 0xA1, 0xF2, - .byte 0x31, 0xF7, 0xA4, 0xF2, 0x2C, 0xF7, 0xA8, 0xF2, 0x27, 0xF7, 0xAB, 0xF2, 0x22, 0xF7, 0xAF, 0xF2, - .byte 0x1C, 0xF7, 0xB2, 0xF2, 0x17, 0xF7, 0xB6, 0xF2, 0x12, 0xF7, 0xB9, 0xF2, 0x0D, 0xF7, 0xBD, 0xF2, - .byte 0x08, 0xF7, 0xC0, 0xF2, 0x02, 0xF7, 0xC4, 0xF2, 0xFD, 0xF6, 0xC7, 0xF2, 0xF8, 0xF6, 0xCB, 0xF2, - .byte 0xF3, 0xF6, 0xCE, 0xF2, 0xEE, 0xF6, 0xD2, 0xF2, 0xE8, 0xF6, 0xD6, 0xF2, 0xE3, 0xF6, 0xD9, 0xF2, - .byte 0xDE, 0xF6, 0xDD, 0xF2, 0xD9, 0xF6, 0xE0, 0xF2, 0xD4, 0xF6, 0xE4, 0xF2, 0xCF, 0xF6, 0xE8, 0xF2, - .byte 0xC9, 0xF6, 0xEB, 0xF2, 0xC4, 0xF6, 0xEF, 0xF2, 0xBF, 0xF6, 0xF2, 0xF2, 0xBA, 0xF6, 0xF6, 0xF2, - .byte 0xB5, 0xF6, 0xFA, 0xF2, 0xB0, 0xF6, 0xFD, 0xF2, 0xAB, 0xF6, 0x01, 0xF3, 0xA6, 0xF6, 0x05, 0xF3, - .byte 0xA1, 0xF6, 0x08, 0xF3, 0x9B, 0xF6, 0x0C, 0xF3, 0x96, 0xF6, 0x10, 0xF3, 0x91, 0xF6, 0x13, 0xF3, - .byte 0x8C, 0xF6, 0x17, 0xF3, 0x87, 0xF6, 0x1B, 0xF3, 0x82, 0xF6, 0x1F, 0xF3, 0x7D, 0xF6, 0x22, 0xF3, - .byte 0x78, 0xF6, 0x26, 0xF3, 0x73, 0xF6, 0x2A, 0xF3, 0x6E, 0xF6, 0x2E, 0xF3, 0x69, 0xF6, 0x31, 0xF3, - .byte 0x64, 0xF6, 0x35, 0xF3, 0x5F, 0xF6, 0x39, 0xF3, 0x5A, 0xF6, 0x3D, 0xF3, 0x55, 0xF6, 0x40, 0xF3, - .byte 0x50, 0xF6, 0x44, 0xF3, 0x4B, 0xF6, 0x48, 0xF3, 0x46, 0xF6, 0x4C, 0xF3, 0x41, 0xF6, 0x50, 0xF3, - .byte 0x3C, 0xF6, 0x54, 0xF3, 0x37, 0xF6, 0x57, 0xF3, 0x32, 0xF6, 0x5B, 0xF3, 0x2D, 0xF6, 0x5F, 0xF3, - .byte 0x28, 0xF6, 0x63, 0xF3, 0x23, 0xF6, 0x67, 0xF3, 0x1E, 0xF6, 0x6B, 0xF3, 0x19, 0xF6, 0x6F, 0xF3, - .byte 0x14, 0xF6, 0x72, 0xF3, 0x0F, 0xF6, 0x76, 0xF3, 0x0A, 0xF6, 0x7A, 0xF3, 0x05, 0xF6, 0x7E, 0xF3, - .byte 0x01, 0xF6, 0x82, 0xF3, 0xFC, 0xF5, 0x86, 0xF3, 0xF7, 0xF5, 0x8A, 0xF3, 0xF2, 0xF5, 0x8E, 0xF3, - .byte 0xED, 0xF5, 0x92, 0xF3, 0xE8, 0xF5, 0x96, 0xF3, 0xE3, 0xF5, 0x9A, 0xF3, 0xDE, 0xF5, 0x9E, 0xF3, - .byte 0xDA, 0xF5, 0xA2, 0xF3, 0xD5, 0xF5, 0xA6, 0xF3, 0xD0, 0xF5, 0xAA, 0xF3, 0xCB, 0xF5, 0xAE, 0xF3, - .byte 0xC6, 0xF5, 0xB2, 0xF3, 0xC1, 0xF5, 0xB6, 0xF3, 0xBC, 0xF5, 0xBA, 0xF3, 0xB8, 0xF5, 0xBE, 0xF3, - .byte 0xB3, 0xF5, 0xC2, 0xF3, 0xAE, 0xF5, 0xC6, 0xF3, 0xA9, 0xF5, 0xCA, 0xF3, 0xA4, 0xF5, 0xCE, 0xF3, - .byte 0xA0, 0xF5, 0xD2, 0xF3, 0x9B, 0xF5, 0xD6, 0xF3, 0x96, 0xF5, 0xDA, 0xF3, 0x91, 0xF5, 0xDE, 0xF3, - .byte 0x8D, 0xF5, 0xE2, 0xF3, 0x88, 0xF5, 0xE7, 0xF3, 0x83, 0xF5, 0xEB, 0xF3, 0x7E, 0xF5, 0xEF, 0xF3, - .byte 0x7A, 0xF5, 0xF3, 0xF3, 0x75, 0xF5, 0xF7, 0xF3, 0x70, 0xF5, 0xFB, 0xF3, 0x6B, 0xF5, 0xFF, 0xF3, - .byte 0x67, 0xF5, 0x04, 0xF4, 0x62, 0xF5, 0x08, 0xF4, 0x5D, 0xF5, 0x0C, 0xF4, 0x59, 0xF5, 0x10, 0xF4, - .byte 0x54, 0xF5, 0x14, 0xF4, 0x4F, 0xF5, 0x18, 0xF4, 0x4B, 0xF5, 0x1D, 0xF4, 0x46, 0xF5, 0x21, 0xF4, - .byte 0x41, 0xF5, 0x25, 0xF4, 0x3D, 0xF5, 0x29, 0xF4, 0x38, 0xF5, 0x2E, 0xF4, 0x33, 0xF5, 0x32, 0xF4, - .byte 0x2F, 0xF5, 0x36, 0xF4, 0x2A, 0xF5, 0x3A, 0xF4, 0x25, 0xF5, 0x3F, 0xF4, 0x21, 0xF5, 0x43, 0xF4, - .byte 0x1C, 0xF5, 0x47, 0xF4, 0x18, 0xF5, 0x4B, 0xF4, 0x13, 0xF5, 0x50, 0xF4, 0x0E, 0xF5, 0x54, 0xF4, - .byte 0x0A, 0xF5, 0x58, 0xF4, 0x05, 0xF5, 0x5D, 0xF4, 0x01, 0xF5, 0x61, 0xF4, 0xFC, 0xF4, 0x65, 0xF4, - .byte 0xF8, 0xF4, 0x69, 0xF4, 0xF3, 0xF4, 0x6E, 0xF4, 0xEF, 0xF4, 0x72, 0xF4, 0xEA, 0xF4, 0x77, 0xF4, - .byte 0xE5, 0xF4, 0x7B, 0xF4, 0xE1, 0xF4, 0x7F, 0xF4, 0xDC, 0xF4, 0x84, 0xF4, 0xD8, 0xF4, 0x88, 0xF4, - .byte 0xD3, 0xF4, 0x8C, 0xF4, 0xCF, 0xF4, 0x91, 0xF4, 0xCA, 0xF4, 0x95, 0xF4, 0xC6, 0xF4, 0x9A, 0xF4, - .byte 0xC2, 0xF4, 0x9E, 0xF4, 0xBD, 0xF4, 0xA2, 0xF4, 0xB9, 0xF4, 0xA7, 0xF4, 0xB4, 0xF4, 0xAB, 0xF4, - .byte 0xB0, 0xF4, 0xB0, 0xF4, 0xAB, 0xF4, 0xB4, 0xF4, 0xA7, 0xF4, 0xB9, 0xF4, 0xA2, 0xF4, 0xBD, 0xF4, - .byte 0x9E, 0xF4, 0xC2, 0xF4, 0x9A, 0xF4, 0xC6, 0xF4, 0x95, 0xF4, 0xCA, 0xF4, 0x91, 0xF4, 0xCF, 0xF4, - .byte 0x8C, 0xF4, 0xD3, 0xF4, 0x88, 0xF4, 0xD8, 0xF4, 0x84, 0xF4, 0xDC, 0xF4, 0x7F, 0xF4, 0xE1, 0xF4, - .byte 0x7B, 0xF4, 0xE5, 0xF4, 0x77, 0xF4, 0xEA, 0xF4, 0x72, 0xF4, 0xEF, 0xF4, 0x6E, 0xF4, 0xF3, 0xF4, - .byte 0x69, 0xF4, 0xF8, 0xF4, 0x65, 0xF4, 0xFC, 0xF4, 0x61, 0xF4, 0x01, 0xF5, 0x5D, 0xF4, 0x05, 0xF5, - .byte 0x58, 0xF4, 0x0A, 0xF5, 0x54, 0xF4, 0x0E, 0xF5, 0x50, 0xF4, 0x13, 0xF5, 0x4B, 0xF4, 0x18, 0xF5, - .byte 0x47, 0xF4, 0x1C, 0xF5, 0x43, 0xF4, 0x21, 0xF5, 0x3F, 0xF4, 0x25, 0xF5, 0x3A, 0xF4, 0x2A, 0xF5, - .byte 0x36, 0xF4, 0x2F, 0xF5, 0x32, 0xF4, 0x33, 0xF5, 0x2E, 0xF4, 0x38, 0xF5, 0x29, 0xF4, 0x3D, 0xF5, - .byte 0x25, 0xF4, 0x41, 0xF5, 0x21, 0xF4, 0x46, 0xF5, 0x1D, 0xF4, 0x4B, 0xF5, 0x18, 0xF4, 0x4F, 0xF5, - .byte 0x14, 0xF4, 0x54, 0xF5, 0x10, 0xF4, 0x59, 0xF5, 0x0C, 0xF4, 0x5D, 0xF5, 0x08, 0xF4, 0x62, 0xF5, - .byte 0x04, 0xF4, 0x67, 0xF5, 0xFF, 0xF3, 0x6B, 0xF5, 0xFB, 0xF3, 0x70, 0xF5, 0xF7, 0xF3, 0x75, 0xF5, - .byte 0xF3, 0xF3, 0x7A, 0xF5, 0xEF, 0xF3, 0x7E, 0xF5, 0xEB, 0xF3, 0x83, 0xF5, 0xE7, 0xF3, 0x88, 0xF5, - .byte 0xE2, 0xF3, 0x8D, 0xF5, 0xDE, 0xF3, 0x91, 0xF5, 0xDA, 0xF3, 0x96, 0xF5, 0xD6, 0xF3, 0x9B, 0xF5, - .byte 0xD2, 0xF3, 0xA0, 0xF5, 0xCE, 0xF3, 0xA4, 0xF5, 0xCA, 0xF3, 0xA9, 0xF5, 0xC6, 0xF3, 0xAE, 0xF5, - .byte 0xC2, 0xF3, 0xB3, 0xF5, 0xBE, 0xF3, 0xB8, 0xF5, 0xBA, 0xF3, 0xBC, 0xF5, 0xB6, 0xF3, 0xC1, 0xF5, - .byte 0xB2, 0xF3, 0xC6, 0xF5, 0xAE, 0xF3, 0xCB, 0xF5, 0xAA, 0xF3, 0xD0, 0xF5, 0xA6, 0xF3, 0xD5, 0xF5, - .byte 0xA2, 0xF3, 0xDA, 0xF5, 0x9E, 0xF3, 0xDE, 0xF5, 0x9A, 0xF3, 0xE3, 0xF5, 0x96, 0xF3, 0xE8, 0xF5, - .byte 0x92, 0xF3, 0xED, 0xF5, 0x8E, 0xF3, 0xF2, 0xF5, 0x8A, 0xF3, 0xF7, 0xF5, 0x86, 0xF3, 0xFC, 0xF5, - .byte 0x82, 0xF3, 0x01, 0xF6, 0x7E, 0xF3, 0x05, 0xF6, 0x7A, 0xF3, 0x0A, 0xF6, 0x76, 0xF3, 0x0F, 0xF6, - .byte 0x72, 0xF3, 0x14, 0xF6, 0x6F, 0xF3, 0x19, 0xF6, 0x6B, 0xF3, 0x1E, 0xF6, 0x67, 0xF3, 0x23, 0xF6, - .byte 0x63, 0xF3, 0x28, 0xF6, 0x5F, 0xF3, 0x2D, 0xF6, 0x5B, 0xF3, 0x32, 0xF6, 0x57, 0xF3, 0x37, 0xF6, - .byte 0x54, 0xF3, 0x3C, 0xF6, 0x50, 0xF3, 0x41, 0xF6, 0x4C, 0xF3, 0x46, 0xF6, 0x48, 0xF3, 0x4B, 0xF6, - .byte 0x44, 0xF3, 0x50, 0xF6, 0x40, 0xF3, 0x55, 0xF6, 0x3D, 0xF3, 0x5A, 0xF6, 0x39, 0xF3, 0x5F, 0xF6, - .byte 0x35, 0xF3, 0x64, 0xF6, 0x31, 0xF3, 0x69, 0xF6, 0x2E, 0xF3, 0x6E, 0xF6, 0x2A, 0xF3, 0x73, 0xF6, - .byte 0x26, 0xF3, 0x78, 0xF6, 0x22, 0xF3, 0x7D, 0xF6, 0x1F, 0xF3, 0x82, 0xF6, 0x1B, 0xF3, 0x87, 0xF6, - .byte 0x17, 0xF3, 0x8C, 0xF6, 0x13, 0xF3, 0x91, 0xF6, 0x10, 0xF3, 0x96, 0xF6, 0x0C, 0xF3, 0x9B, 0xF6, - .byte 0x08, 0xF3, 0xA1, 0xF6, 0x05, 0xF3, 0xA6, 0xF6, 0x01, 0xF3, 0xAB, 0xF6, 0xFD, 0xF2, 0xB0, 0xF6, - .byte 0xFA, 0xF2, 0xB5, 0xF6, 0xF6, 0xF2, 0xBA, 0xF6, 0xF2, 0xF2, 0xBF, 0xF6, 0xEF, 0xF2, 0xC4, 0xF6, - .byte 0xEB, 0xF2, 0xC9, 0xF6, 0xE8, 0xF2, 0xCF, 0xF6, 0xE4, 0xF2, 0xD4, 0xF6, 0xE0, 0xF2, 0xD9, 0xF6, - .byte 0xDD, 0xF2, 0xDE, 0xF6, 0xD9, 0xF2, 0xE3, 0xF6, 0xD6, 0xF2, 0xE8, 0xF6, 0xD2, 0xF2, 0xEE, 0xF6, - .byte 0xCE, 0xF2, 0xF3, 0xF6, 0xCB, 0xF2, 0xF8, 0xF6, 0xC7, 0xF2, 0xFD, 0xF6, 0xC4, 0xF2, 0x02, 0xF7, - .byte 0xC0, 0xF2, 0x08, 0xF7, 0xBD, 0xF2, 0x0D, 0xF7, 0xB9, 0xF2, 0x12, 0xF7, 0xB6, 0xF2, 0x17, 0xF7, - .byte 0xB2, 0xF2, 0x1C, 0xF7, 0xAF, 0xF2, 0x22, 0xF7, 0xAB, 0xF2, 0x27, 0xF7, 0xA8, 0xF2, 0x2C, 0xF7, - .byte 0xA4, 0xF2, 0x31, 0xF7, 0xA1, 0xF2, 0x37, 0xF7, 0x9E, 0xF2, 0x3C, 0xF7, 0x9A, 0xF2, 0x41, 0xF7, - .byte 0x97, 0xF2, 0x46, 0xF7, 0x93, 0xF2, 0x4C, 0xF7, 0x90, 0xF2, 0x51, 0xF7, 0x8C, 0xF2, 0x56, 0xF7, - .byte 0x89, 0xF2, 0x5B, 0xF7, 0x86, 0xF2, 0x61, 0xF7, 0x82, 0xF2, 0x66, 0xF7, 0x7F, 0xF2, 0x6B, 0xF7, - .byte 0x7B, 0xF2, 0x71, 0xF7, 0x78, 0xF2, 0x76, 0xF7, 0x75, 0xF2, 0x7B, 0xF7, 0x71, 0xF2, 0x81, 0xF7, - .byte 0x6E, 0xF2, 0x86, 0xF7, 0x6B, 0xF2, 0x8B, 0xF7, 0x67, 0xF2, 0x91, 0xF7, 0x64, 0xF2, 0x96, 0xF7, - .byte 0x61, 0xF2, 0x9B, 0xF7, 0x5E, 0xF2, 0xA1, 0xF7, 0x5A, 0xF2, 0xA6, 0xF7, 0x57, 0xF2, 0xAB, 0xF7, - .byte 0x54, 0xF2, 0xB1, 0xF7, 0x50, 0xF2, 0xB6, 0xF7, 0x4D, 0xF2, 0xBB, 0xF7, 0x4A, 0xF2, 0xC1, 0xF7, - .byte 0x47, 0xF2, 0xC6, 0xF7, 0x44, 0xF2, 0xCC, 0xF7, 0x40, 0xF2, 0xD1, 0xF7, 0x3D, 0xF2, 0xD6, 0xF7, - .byte 0x3A, 0xF2, 0xDC, 0xF7, 0x37, 0xF2, 0xE1, 0xF7, 0x34, 0xF2, 0xE7, 0xF7, 0x30, 0xF2, 0xEC, 0xF7, - .byte 0x2D, 0xF2, 0xF2, 0xF7, 0x2A, 0xF2, 0xF7, 0xF7, 0x27, 0xF2, 0xFC, 0xF7, 0x24, 0xF2, 0x02, 0xF8, - .byte 0x21, 0xF2, 0x07, 0xF8, 0x1D, 0xF2, 0x0D, 0xF8, 0x1A, 0xF2, 0x12, 0xF8, 0x17, 0xF2, 0x18, 0xF8, - .byte 0x14, 0xF2, 0x1D, 0xF8, 0x11, 0xF2, 0x23, 0xF8, 0x0E, 0xF2, 0x28, 0xF8, 0x0B, 0xF2, 0x2E, 0xF8, - .byte 0x08, 0xF2, 0x33, 0xF8, 0x05, 0xF2, 0x38, 0xF8, 0x02, 0xF2, 0x3E, 0xF8, 0xFF, 0xF1, 0x43, 0xF8, - .byte 0xFC, 0xF1, 0x49, 0xF8, 0xF9, 0xF1, 0x4E, 0xF8, 0xF6, 0xF1, 0x54, 0xF8, 0xF3, 0xF1, 0x5A, 0xF8, - .byte 0xF0, 0xF1, 0x5F, 0xF8, 0xED, 0xF1, 0x65, 0xF8, 0xEA, 0xF1, 0x6A, 0xF8, 0xE7, 0xF1, 0x70, 0xF8, - .byte 0xE4, 0xF1, 0x75, 0xF8, 0xE1, 0xF1, 0x7B, 0xF8, 0xDE, 0xF1, 0x80, 0xF8, 0xDB, 0xF1, 0x86, 0xF8, - .byte 0xD8, 0xF1, 0x8B, 0xF8, 0xD5, 0xF1, 0x91, 0xF8, 0xD2, 0xF1, 0x96, 0xF8, 0xCF, 0xF1, 0x9C, 0xF8, - .byte 0xCC, 0xF1, 0xA2, 0xF8, 0xC9, 0xF1, 0xA7, 0xF8, 0xC6, 0xF1, 0xAD, 0xF8, 0xC4, 0xF1, 0xB2, 0xF8, - .byte 0xC1, 0xF1, 0xB8, 0xF8, 0xBE, 0xF1, 0xBE, 0xF8, 0xBB, 0xF1, 0xC3, 0xF8, 0xB8, 0xF1, 0xC9, 0xF8, - .byte 0xB5, 0xF1, 0xCE, 0xF8, 0xB3, 0xF1, 0xD4, 0xF8, 0xB0, 0xF1, 0xDA, 0xF8, 0xAD, 0xF1, 0xDF, 0xF8, - .byte 0xAA, 0xF1, 0xE5, 0xF8, 0xA7, 0xF1, 0xEB, 0xF8, 0xA5, 0xF1, 0xF0, 0xF8, 0xA2, 0xF1, 0xF6, 0xF8, - .byte 0x9F, 0xF1, 0xFB, 0xF8, 0x9C, 0xF1, 0x01, 0xF9, 0x9A, 0xF1, 0x07, 0xF9, 0x97, 0xF1, 0x0C, 0xF9, - .byte 0x94, 0xF1, 0x12, 0xF9, 0x91, 0xF1, 0x18, 0xF9, 0x8F, 0xF1, 0x1D, 0xF9, 0x8C, 0xF1, 0x23, 0xF9, - .byte 0x89, 0xF1, 0x29, 0xF9, 0x87, 0xF1, 0x2E, 0xF9, 0x84, 0xF1, 0x34, 0xF9, 0x81, 0xF1, 0x3A, 0xF9, - .byte 0x7F, 0xF1, 0x3F, 0xF9, 0x7C, 0xF1, 0x45, 0xF9, 0x79, 0xF1, 0x4B, 0xF9, 0x77, 0xF1, 0x51, 0xF9, - .byte 0x74, 0xF1, 0x56, 0xF9, 0x71, 0xF1, 0x5C, 0xF9, 0x6F, 0xF1, 0x62, 0xF9, 0x6C, 0xF1, 0x67, 0xF9, - .byte 0x6A, 0xF1, 0x6D, 0xF9, 0x67, 0xF1, 0x73, 0xF9, 0x65, 0xF1, 0x79, 0xF9, 0x62, 0xF1, 0x7E, 0xF9, - .byte 0x5F, 0xF1, 0x84, 0xF9, 0x5D, 0xF1, 0x8A, 0xF9, 0x5A, 0xF1, 0x90, 0xF9, 0x58, 0xF1, 0x95, 0xF9, - .byte 0x55, 0xF1, 0x9B, 0xF9, 0x53, 0xF1, 0xA1, 0xF9, 0x50, 0xF1, 0xA7, 0xF9, 0x4E, 0xF1, 0xAC, 0xF9, - .byte 0x4B, 0xF1, 0xB2, 0xF9, 0x49, 0xF1, 0xB8, 0xF9, 0x46, 0xF1, 0xBE, 0xF9, 0x44, 0xF1, 0xC4, 0xF9, - .byte 0x41, 0xF1, 0xC9, 0xF9, 0x3F, 0xF1, 0xCF, 0xF9, 0x3D, 0xF1, 0xD5, 0xF9, 0x3A, 0xF1, 0xDB, 0xF9, - .byte 0x38, 0xF1, 0xE1, 0xF9, 0x35, 0xF1, 0xE6, 0xF9, 0x33, 0xF1, 0xEC, 0xF9, 0x31, 0xF1, 0xF2, 0xF9, - .byte 0x2E, 0xF1, 0xF8, 0xF9, 0x2C, 0xF1, 0xFE, 0xF9, 0x2A, 0xF1, 0x03, 0xFA, 0x27, 0xF1, 0x09, 0xFA, - .byte 0x25, 0xF1, 0x0F, 0xFA, 0x23, 0xF1, 0x15, 0xFA, 0x20, 0xF1, 0x1B, 0xFA, 0x1E, 0xF1, 0x21, 0xFA, - .byte 0x1C, 0xF1, 0x26, 0xFA, 0x19, 0xF1, 0x2C, 0xFA, 0x17, 0xF1, 0x32, 0xFA, 0x15, 0xF1, 0x38, 0xFA, - .byte 0x12, 0xF1, 0x3E, 0xFA, 0x10, 0xF1, 0x44, 0xFA, 0x0E, 0xF1, 0x4A, 0xFA, 0x0C, 0xF1, 0x4F, 0xFA, - .byte 0x09, 0xF1, 0x55, 0xFA, 0x07, 0xF1, 0x5B, 0xFA, 0x05, 0xF1, 0x61, 0xFA, 0x03, 0xF1, 0x67, 0xFA, - .byte 0x01, 0xF1, 0x6D, 0xFA, 0xFE, 0xF0, 0x73, 0xFA, 0xFC, 0xF0, 0x79, 0xFA, 0xFA, 0xF0, 0x7F, 0xFA, - .byte 0xF8, 0xF0, 0x84, 0xFA, 0xF6, 0xF0, 0x8A, 0xFA, 0xF4, 0xF0, 0x90, 0xFA, 0xF2, 0xF0, 0x96, 0xFA, - .byte 0xEF, 0xF0, 0x9C, 0xFA, 0xED, 0xF0, 0xA2, 0xFA, 0xEB, 0xF0, 0xA8, 0xFA, 0xE9, 0xF0, 0xAE, 0xFA, - .byte 0xE7, 0xF0, 0xB4, 0xFA, 0xE5, 0xF0, 0xBA, 0xFA, 0xE3, 0xF0, 0xC0, 0xFA, 0xE1, 0xF0, 0xC6, 0xFA, - .byte 0xDF, 0xF0, 0xCC, 0xFA, 0xDD, 0xF0, 0xD1, 0xFA, 0xDB, 0xF0, 0xD7, 0xFA, 0xD9, 0xF0, 0xDD, 0xFA, - .byte 0xD7, 0xF0, 0xE3, 0xFA, 0xD5, 0xF0, 0xE9, 0xFA, 0xD3, 0xF0, 0xEF, 0xFA, 0xD1, 0xF0, 0xF5, 0xFA, - .byte 0xCF, 0xF0, 0xFB, 0xFA, 0xCD, 0xF0, 0x01, 0xFB, 0xCB, 0xF0, 0x07, 0xFB, 0xC9, 0xF0, 0x0D, 0xFB, - .byte 0xC7, 0xF0, 0x13, 0xFB, 0xC5, 0xF0, 0x19, 0xFB, 0xC3, 0xF0, 0x1F, 0xFB, 0xC1, 0xF0, 0x25, 0xFB, - .byte 0xBF, 0xF0, 0x2B, 0xFB, 0xBD, 0xF0, 0x31, 0xFB, 0xBB, 0xF0, 0x37, 0xFB, 0xBA, 0xF0, 0x3D, 0xFB, - .byte 0xB8, 0xF0, 0x43, 0xFB, 0xB6, 0xF0, 0x49, 0xFB, 0xB4, 0xF0, 0x4F, 0xFB, 0xB2, 0xF0, 0x55, 0xFB, - .byte 0xB0, 0xF0, 0x5B, 0xFB, 0xAF, 0xF0, 0x61, 0xFB, 0xAD, 0xF0, 0x67, 0xFB, 0xAB, 0xF0, 0x6D, 0xFB, - .byte 0xA9, 0xF0, 0x73, 0xFB, 0xA7, 0xF0, 0x79, 0xFB, 0xA6, 0xF0, 0x7F, 0xFB, 0xA4, 0xF0, 0x85, 0xFB, - .byte 0xA2, 0xF0, 0x8B, 0xFB, 0xA0, 0xF0, 0x91, 0xFB, 0x9F, 0xF0, 0x97, 0xFB, 0x9D, 0xF0, 0x9D, 0xFB, - .byte 0x9B, 0xF0, 0xA3, 0xFB, 0x99, 0xF0, 0xA9, 0xFB, 0x98, 0xF0, 0xAF, 0xFB, 0x96, 0xF0, 0xB5, 0xFB, - .byte 0x94, 0xF0, 0xBC, 0xFB, 0x93, 0xF0, 0xC2, 0xFB, 0x91, 0xF0, 0xC8, 0xFB, 0x8F, 0xF0, 0xCE, 0xFB, - .byte 0x8E, 0xF0, 0xD4, 0xFB, 0x8C, 0xF0, 0xDA, 0xFB, 0x8A, 0xF0, 0xE0, 0xFB, 0x89, 0xF0, 0xE6, 0xFB, - .byte 0x87, 0xF0, 0xEC, 0xFB, 0x86, 0xF0, 0xF2, 0xFB, 0x84, 0xF0, 0xF8, 0xFB, 0x83, 0xF0, 0xFE, 0xFB, - .byte 0x81, 0xF0, 0x04, 0xFC, 0x7F, 0xF0, 0x0A, 0xFC, 0x7E, 0xF0, 0x11, 0xFC, 0x7C, 0xF0, 0x17, 0xFC, - .byte 0x7B, 0xF0, 0x1D, 0xFC, 0x79, 0xF0, 0x23, 0xFC, 0x78, 0xF0, 0x29, 0xFC, 0x76, 0xF0, 0x2F, 0xFC, - .byte 0x75, 0xF0, 0x35, 0xFC, 0x73, 0xF0, 0x3B, 0xFC, 0x72, 0xF0, 0x41, 0xFC, 0x70, 0xF0, 0x47, 0xFC, - .byte 0x6F, 0xF0, 0x4E, 0xFC, 0x6D, 0xF0, 0x54, 0xFC, 0x6C, 0xF0, 0x5A, 0xFC, 0x6B, 0xF0, 0x60, 0xFC, - .byte 0x69, 0xF0, 0x66, 0xFC, 0x68, 0xF0, 0x6C, 0xFC, 0x66, 0xF0, 0x72, 0xFC, 0x65, 0xF0, 0x78, 0xFC, - .byte 0x64, 0xF0, 0x7F, 0xFC, 0x62, 0xF0, 0x85, 0xFC, 0x61, 0xF0, 0x8B, 0xFC, 0x5F, 0xF0, 0x91, 0xFC, - .byte 0x5E, 0xF0, 0x97, 0xFC, 0x5D, 0xF0, 0x9D, 0xFC, 0x5B, 0xF0, 0xA3, 0xFC, 0x5A, 0xF0, 0xAA, 0xFC, - .byte 0x59, 0xF0, 0xB0, 0xFC, 0x58, 0xF0, 0xB6, 0xFC, 0x56, 0xF0, 0xBC, 0xFC, 0x55, 0xF0, 0xC2, 0xFC, - .byte 0x54, 0xF0, 0xC8, 0xFC, 0x52, 0xF0, 0xCE, 0xFC, 0x51, 0xF0, 0xD5, 0xFC, 0x50, 0xF0, 0xDB, 0xFC, - .byte 0x4F, 0xF0, 0xE1, 0xFC, 0x4D, 0xF0, 0xE7, 0xFC, 0x4C, 0xF0, 0xED, 0xFC, 0x4B, 0xF0, 0xF3, 0xFC, - .byte 0x4A, 0xF0, 0xFA, 0xFC, 0x49, 0xF0, 0x00, 0xFD, 0x48, 0xF0, 0x06, 0xFD, 0x46, 0xF0, 0x0C, 0xFD, - .byte 0x45, 0xF0, 0x12, 0xFD, 0x44, 0xF0, 0x18, 0xFD, 0x43, 0xF0, 0x1F, 0xFD, 0x42, 0xF0, 0x25, 0xFD, - .byte 0x41, 0xF0, 0x2B, 0xFD, 0x40, 0xF0, 0x31, 0xFD, 0x3E, 0xF0, 0x37, 0xFD, 0x3D, 0xF0, 0x3E, 0xFD, - .byte 0x3C, 0xF0, 0x44, 0xFD, 0x3B, 0xF0, 0x4A, 0xFD, 0x3A, 0xF0, 0x50, 0xFD, 0x39, 0xF0, 0x56, 0xFD, - .byte 0x38, 0xF0, 0x5D, 0xFD, 0x37, 0xF0, 0x63, 0xFD, 0x36, 0xF0, 0x69, 0xFD, 0x35, 0xF0, 0x6F, 0xFD, - .byte 0x34, 0xF0, 0x75, 0xFD, 0x33, 0xF0, 0x7C, 0xFD, 0x32, 0xF0, 0x82, 0xFD, 0x31, 0xF0, 0x88, 0xFD, - .byte 0x30, 0xF0, 0x8E, 0xFD, 0x2F, 0xF0, 0x94, 0xFD, 0x2E, 0xF0, 0x9B, 0xFD, 0x2D, 0xF0, 0xA1, 0xFD, - .byte 0x2C, 0xF0, 0xA7, 0xFD, 0x2B, 0xF0, 0xAD, 0xFD, 0x2B, 0xF0, 0xB3, 0xFD, 0x2A, 0xF0, 0xBA, 0xFD, - .byte 0x29, 0xF0, 0xC0, 0xFD, 0x28, 0xF0, 0xC6, 0xFD, 0x27, 0xF0, 0xCC, 0xFD, 0x26, 0xF0, 0xD3, 0xFD, - .byte 0x25, 0xF0, 0xD9, 0xFD, 0x24, 0xF0, 0xDF, 0xFD, 0x24, 0xF0, 0xE5, 0xFD, 0x23, 0xF0, 0xEB, 0xFD, - .byte 0x22, 0xF0, 0xF2, 0xFD, 0x21, 0xF0, 0xF8, 0xFD, 0x20, 0xF0, 0xFE, 0xFD, 0x20, 0xF0, 0x04, 0xFE, - .byte 0x1F, 0xF0, 0x0B, 0xFE, 0x1E, 0xF0, 0x11, 0xFE, 0x1D, 0xF0, 0x17, 0xFE, 0x1D, 0xF0, 0x1D, 0xFE, - .byte 0x1C, 0xF0, 0x24, 0xFE, 0x1B, 0xF0, 0x2A, 0xFE, 0x1A, 0xF0, 0x30, 0xFE, 0x1A, 0xF0, 0x36, 0xFE, - .byte 0x19, 0xF0, 0x3D, 0xFE, 0x18, 0xF0, 0x43, 0xFE, 0x18, 0xF0, 0x49, 0xFE, 0x17, 0xF0, 0x4F, 0xFE, - .byte 0x16, 0xF0, 0x56, 0xFE, 0x16, 0xF0, 0x5C, 0xFE, 0x15, 0xF0, 0x62, 0xFE, 0x14, 0xF0, 0x68, 0xFE, - .byte 0x14, 0xF0, 0x6F, 0xFE, 0x13, 0xF0, 0x75, 0xFE, 0x13, 0xF0, 0x7B, 0xFE, 0x12, 0xF0, 0x81, 0xFE, - .byte 0x11, 0xF0, 0x88, 0xFE, 0x11, 0xF0, 0x8E, 0xFE, 0x10, 0xF0, 0x94, 0xFE, 0x10, 0xF0, 0x9A, 0xFE, - .byte 0x0F, 0xF0, 0xA1, 0xFE, 0x0F, 0xF0, 0xA7, 0xFE, 0x0E, 0xF0, 0xAD, 0xFE, 0x0E, 0xF0, 0xB3, 0xFE, - .byte 0x0D, 0xF0, 0xBA, 0xFE, 0x0D, 0xF0, 0xC0, 0xFE, 0x0C, 0xF0, 0xC6, 0xFE, 0x0C, 0xF0, 0xCC, 0xFE, - .byte 0x0B, 0xF0, 0xD3, 0xFE, 0x0B, 0xF0, 0xD9, 0xFE, 0x0A, 0xF0, 0xDF, 0xFE, 0x0A, 0xF0, 0xE5, 0xFE, - .byte 0x09, 0xF0, 0xEC, 0xFE, 0x09, 0xF0, 0xF2, 0xFE, 0x08, 0xF0, 0xF8, 0xFE, 0x08, 0xF0, 0xFF, 0xFE, - .byte 0x08, 0xF0, 0x05, 0xFF, 0x07, 0xF0, 0x0B, 0xFF, 0x07, 0xF0, 0x11, 0xFF, 0x07, 0xF0, 0x18, 0xFF, - .byte 0x06, 0xF0, 0x1E, 0xFF, 0x06, 0xF0, 0x24, 0xFF, 0x06, 0xF0, 0x2A, 0xFF, 0x05, 0xF0, 0x31, 0xFF, - .byte 0x05, 0xF0, 0x37, 0xFF, 0x05, 0xF0, 0x3D, 0xFF, 0x04, 0xF0, 0x44, 0xFF, 0x04, 0xF0, 0x4A, 0xFF, - .byte 0x04, 0xF0, 0x50, 0xFF, 0x04, 0xF0, 0x56, 0xFF, 0x03, 0xF0, 0x5D, 0xFF, 0x03, 0xF0, 0x63, 0xFF, - .byte 0x03, 0xF0, 0x69, 0xFF, 0x03, 0xF0, 0x70, 0xFF, 0x02, 0xF0, 0x76, 0xFF, 0x02, 0xF0, 0x7C, 0xFF, - .byte 0x02, 0xF0, 0x82, 0xFF, 0x02, 0xF0, 0x89, 0xFF, 0x02, 0xF0, 0x8F, 0xFF, 0x01, 0xF0, 0x95, 0xFF, - .byte 0x01, 0xF0, 0x9B, 0xFF, 0x01, 0xF0, 0xA2, 0xFF, 0x01, 0xF0, 0xA8, 0xFF, 0x01, 0xF0, 0xAE, 0xFF, - .byte 0x01, 0xF0, 0xB5, 0xFF, 0x01, 0xF0, 0xBB, 0xFF, 0x00, 0xF0, 0xC1, 0xFF, 0x00, 0xF0, 0xC7, 0xFF, - .byte 0x00, 0xF0, 0xCE, 0xFF, 0x00, 0xF0, 0xD4, 0xFF, 0x00, 0xF0, 0xDA, 0xFF, 0x00, 0xF0, 0xE1, 0xFF, - .byte 0x00, 0xF0, 0xE7, 0xFF, 0x00, 0xF0, 0xED, 0xFF, 0x00, 0xF0, 0xF3, 0xFF, 0x00, 0xF0, 0xFA, 0xFF, - .byte 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0xF0, 0x0D, 0x00, 0x00, 0xF0, 0x13, 0x00, - .byte 0x00, 0xF0, 0x19, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0, 0x26, 0x00, 0x00, 0xF0, 0x2C, 0x00, - .byte 0x00, 0xF0, 0x32, 0x00, 0x00, 0xF0, 0x39, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x01, 0xF0, 0x45, 0x00, - .byte 0x01, 0xF0, 0x4B, 0x00, 0x01, 0xF0, 0x52, 0x00, 0x01, 0xF0, 0x58, 0x00, 0x01, 0xF0, 0x5E, 0x00, - .byte 0x01, 0xF0, 0x65, 0x00, 0x01, 0xF0, 0x6B, 0x00, 0x02, 0xF0, 0x71, 0x00, 0x02, 0xF0, 0x77, 0x00, - .byte 0x02, 0xF0, 0x7E, 0x00, 0x02, 0xF0, 0x84, 0x00, 0x02, 0xF0, 0x8A, 0x00, 0x03, 0xF0, 0x90, 0x00, - .byte 0x03, 0xF0, 0x97, 0x00, 0x03, 0xF0, 0x9D, 0x00, 0x03, 0xF0, 0xA3, 0x00, 0x04, 0xF0, 0xAA, 0x00, - .byte 0x04, 0xF0, 0xB0, 0x00, 0x04, 0xF0, 0xB6, 0x00, 0x04, 0xF0, 0xBC, 0x00, 0x05, 0xF0, 0xC3, 0x00, - .byte 0x05, 0xF0, 0xC9, 0x00, 0x05, 0xF0, 0xCF, 0x00, 0x06, 0xF0, 0xD6, 0x00, 0x06, 0xF0, 0xDC, 0x00, - .byte 0x06, 0xF0, 0xE2, 0x00, 0x07, 0xF0, 0xE8, 0x00, 0x07, 0xF0, 0xEF, 0x00, 0x07, 0xF0, 0xF5, 0x00, - .byte 0x08, 0xF0, 0xFB, 0x00, 0x08, 0xF0, 0x01, 0x01, 0x08, 0xF0, 0x08, 0x01, 0x09, 0xF0, 0x0E, 0x01, - .byte 0x09, 0xF0, 0x14, 0x01, 0x0A, 0xF0, 0x1B, 0x01, 0x0A, 0xF0, 0x21, 0x01, 0x0B, 0xF0, 0x27, 0x01, - .byte 0x0B, 0xF0, 0x2D, 0x01, 0x0C, 0xF0, 0x34, 0x01, 0x0C, 0xF0, 0x3A, 0x01, 0x0D, 0xF0, 0x40, 0x01, - .byte 0x0D, 0xF0, 0x46, 0x01, 0x0E, 0xF0, 0x4D, 0x01, 0x0E, 0xF0, 0x53, 0x01, 0x0F, 0xF0, 0x59, 0x01, - .byte 0x0F, 0xF0, 0x5F, 0x01, 0x10, 0xF0, 0x66, 0x01, 0x10, 0xF0, 0x6C, 0x01, 0x11, 0xF0, 0x72, 0x01, - .byte 0x11, 0xF0, 0x78, 0x01, 0x12, 0xF0, 0x7F, 0x01, 0x13, 0xF0, 0x85, 0x01, 0x13, 0xF0, 0x8B, 0x01, - .byte 0x14, 0xF0, 0x91, 0x01, 0x14, 0xF0, 0x98, 0x01, 0x15, 0xF0, 0x9E, 0x01, 0x16, 0xF0, 0xA4, 0x01, - .byte 0x16, 0xF0, 0xAA, 0x01, 0x17, 0xF0, 0xB1, 0x01, 0x18, 0xF0, 0xB7, 0x01, 0x18, 0xF0, 0xBD, 0x01, - .byte 0x19, 0xF0, 0xC3, 0x01, 0x1A, 0xF0, 0xCA, 0x01, 0x1A, 0xF0, 0xD0, 0x01, 0x1B, 0xF0, 0xD6, 0x01, - .byte 0x1C, 0xF0, 0xDC, 0x01, 0x1D, 0xF0, 0xE3, 0x01, 0x1D, 0xF0, 0xE9, 0x01, 0x1E, 0xF0, 0xEF, 0x01, - .byte 0x1F, 0xF0, 0xF5, 0x01, 0x20, 0xF0, 0xFC, 0x01, 0x20, 0xF0, 0x02, 0x02, 0x21, 0xF0, 0x08, 0x02, - .byte 0x22, 0xF0, 0x0E, 0x02, 0x23, 0xF0, 0x15, 0x02, 0x24, 0xF0, 0x1B, 0x02, 0x24, 0xF0, 0x21, 0x02, - .byte 0x25, 0xF0, 0x27, 0x02, 0x26, 0xF0, 0x2D, 0x02, 0x27, 0xF0, 0x34, 0x02, 0x28, 0xF0, 0x3A, 0x02, - .byte 0x29, 0xF0, 0x40, 0x02, 0x2A, 0xF0, 0x46, 0x02, 0x2B, 0xF0, 0x4D, 0x02, 0x2B, 0xF0, 0x53, 0x02, - .byte 0x2C, 0xF0, 0x59, 0x02, 0x2D, 0xF0, 0x5F, 0x02, 0x2E, 0xF0, 0x65, 0x02, 0x2F, 0xF0, 0x6C, 0x02, - .byte 0x30, 0xF0, 0x72, 0x02, 0x31, 0xF0, 0x78, 0x02, 0x32, 0xF0, 0x7E, 0x02, 0x33, 0xF0, 0x84, 0x02, - .byte 0x34, 0xF0, 0x8B, 0x02, 0x35, 0xF0, 0x91, 0x02, 0x36, 0xF0, 0x97, 0x02, 0x37, 0xF0, 0x9D, 0x02, - .byte 0x38, 0xF0, 0xA3, 0x02, 0x39, 0xF0, 0xAA, 0x02, 0x3A, 0xF0, 0xB0, 0x02, 0x3B, 0xF0, 0xB6, 0x02, - .byte 0x3C, 0xF0, 0xBC, 0x02, 0x3D, 0xF0, 0xC2, 0x02, 0x3E, 0xF0, 0xC9, 0x02, 0x40, 0xF0, 0xCF, 0x02, - .byte 0x41, 0xF0, 0xD5, 0x02, 0x42, 0xF0, 0xDB, 0x02, 0x43, 0xF0, 0xE1, 0x02, 0x44, 0xF0, 0xE8, 0x02, - .byte 0x45, 0xF0, 0xEE, 0x02, 0x46, 0xF0, 0xF4, 0x02, 0x48, 0xF0, 0xFA, 0x02, 0x49, 0xF0, 0x00, 0x03, - .byte 0x4A, 0xF0, 0x06, 0x03, 0x4B, 0xF0, 0x0D, 0x03, 0x4C, 0xF0, 0x13, 0x03, 0x4D, 0xF0, 0x19, 0x03, - .byte 0x4F, 0xF0, 0x1F, 0x03, 0x50, 0xF0, 0x25, 0x03, 0x51, 0xF0, 0x2B, 0x03, 0x52, 0xF0, 0x32, 0x03, - .byte 0x54, 0xF0, 0x38, 0x03, 0x55, 0xF0, 0x3E, 0x03, 0x56, 0xF0, 0x44, 0x03, 0x58, 0xF0, 0x4A, 0x03, - .byte 0x59, 0xF0, 0x50, 0x03, 0x5A, 0xF0, 0x56, 0x03, 0x5B, 0xF0, 0x5D, 0x03, 0x5D, 0xF0, 0x63, 0x03, - .byte 0x5E, 0xF0, 0x69, 0x03, 0x5F, 0xF0, 0x6F, 0x03, 0x61, 0xF0, 0x75, 0x03, 0x62, 0xF0, 0x7B, 0x03, - .byte 0x64, 0xF0, 0x81, 0x03, 0x65, 0xF0, 0x88, 0x03, 0x66, 0xF0, 0x8E, 0x03, 0x68, 0xF0, 0x94, 0x03, - .byte 0x69, 0xF0, 0x9A, 0x03, 0x6B, 0xF0, 0xA0, 0x03, 0x6C, 0xF0, 0xA6, 0x03, 0x6D, 0xF0, 0xAC, 0x03, - .byte 0x6F, 0xF0, 0xB2, 0x03, 0x70, 0xF0, 0xB9, 0x03, 0x72, 0xF0, 0xBF, 0x03, 0x73, 0xF0, 0xC5, 0x03, - .byte 0x75, 0xF0, 0xCB, 0x03, 0x76, 0xF0, 0xD1, 0x03, 0x78, 0xF0, 0xD7, 0x03, 0x79, 0xF0, 0xDD, 0x03, - .byte 0x7B, 0xF0, 0xE3, 0x03, 0x7C, 0xF0, 0xE9, 0x03, 0x7E, 0xF0, 0xEF, 0x03, 0x7F, 0xF0, 0xF6, 0x03, - .byte 0x81, 0xF0, 0xFC, 0x03, 0x83, 0xF0, 0x02, 0x04, 0x84, 0xF0, 0x08, 0x04, 0x86, 0xF0, 0x0E, 0x04, - .byte 0x87, 0xF0, 0x14, 0x04, 0x89, 0xF0, 0x1A, 0x04, 0x8A, 0xF0, 0x20, 0x04, 0x8C, 0xF0, 0x26, 0x04, - .byte 0x8E, 0xF0, 0x2C, 0x04, 0x8F, 0xF0, 0x32, 0x04, 0x91, 0xF0, 0x38, 0x04, 0x93, 0xF0, 0x3E, 0x04, - .byte 0x94, 0xF0, 0x44, 0x04, 0x96, 0xF0, 0x4B, 0x04, 0x98, 0xF0, 0x51, 0x04, 0x99, 0xF0, 0x57, 0x04, - .byte 0x9B, 0xF0, 0x5D, 0x04, 0x9D, 0xF0, 0x63, 0x04, 0x9F, 0xF0, 0x69, 0x04, 0xA0, 0xF0, 0x6F, 0x04, - .byte 0xA2, 0xF0, 0x75, 0x04, 0xA4, 0xF0, 0x7B, 0x04, 0xA6, 0xF0, 0x81, 0x04, 0xA7, 0xF0, 0x87, 0x04, - .byte 0xA9, 0xF0, 0x8D, 0x04, 0xAB, 0xF0, 0x93, 0x04, 0xAD, 0xF0, 0x99, 0x04, 0xAF, 0xF0, 0x9F, 0x04, - .byte 0xB0, 0xF0, 0xA5, 0x04, 0xB2, 0xF0, 0xAB, 0x04, 0xB4, 0xF0, 0xB1, 0x04, 0xB6, 0xF0, 0xB7, 0x04, - .byte 0xB8, 0xF0, 0xBD, 0x04, 0xBA, 0xF0, 0xC3, 0x04, 0xBB, 0xF0, 0xC9, 0x04, 0xBD, 0xF0, 0xCF, 0x04, - .byte 0xBF, 0xF0, 0xD5, 0x04, 0xC1, 0xF0, 0xDB, 0x04, 0xC3, 0xF0, 0xE1, 0x04, 0xC5, 0xF0, 0xE7, 0x04, - .byte 0xC7, 0xF0, 0xED, 0x04, 0xC9, 0xF0, 0xF3, 0x04, 0xCB, 0xF0, 0xF9, 0x04, 0xCD, 0xF0, 0xFF, 0x04, - .byte 0xCF, 0xF0, 0x05, 0x05, 0xD1, 0xF0, 0x0B, 0x05, 0xD3, 0xF0, 0x11, 0x05, 0xD5, 0xF0, 0x17, 0x05, - .byte 0xD7, 0xF0, 0x1D, 0x05, 0xD9, 0xF0, 0x23, 0x05, 0xDB, 0xF0, 0x29, 0x05, 0xDD, 0xF0, 0x2F, 0x05, - .byte 0xDF, 0xF0, 0x34, 0x05, 0xE1, 0xF0, 0x3A, 0x05, 0xE3, 0xF0, 0x40, 0x05, 0xE5, 0xF0, 0x46, 0x05, - .byte 0xE7, 0xF0, 0x4C, 0x05, 0xE9, 0xF0, 0x52, 0x05, 0xEB, 0xF0, 0x58, 0x05, 0xED, 0xF0, 0x5E, 0x05, - .byte 0xEF, 0xF0, 0x64, 0x05, 0xF2, 0xF0, 0x6A, 0x05, 0xF4, 0xF0, 0x70, 0x05, 0xF6, 0xF0, 0x76, 0x05, - .byte 0xF8, 0xF0, 0x7C, 0x05, 0xFA, 0xF0, 0x81, 0x05, 0xFC, 0xF0, 0x87, 0x05, 0xFE, 0xF0, 0x8D, 0x05, - .byte 0x01, 0xF1, 0x93, 0x05, 0x03, 0xF1, 0x99, 0x05, 0x05, 0xF1, 0x9F, 0x05, 0x07, 0xF1, 0xA5, 0x05, - .byte 0x09, 0xF1, 0xAB, 0x05, 0x0C, 0xF1, 0xB1, 0x05, 0x0E, 0xF1, 0xB6, 0x05, 0x10, 0xF1, 0xBC, 0x05, - .byte 0x12, 0xF1, 0xC2, 0x05, 0x15, 0xF1, 0xC8, 0x05, 0x17, 0xF1, 0xCE, 0x05, 0x19, 0xF1, 0xD4, 0x05, - .byte 0x1C, 0xF1, 0xDA, 0x05, 0x1E, 0xF1, 0xDF, 0x05, 0x20, 0xF1, 0xE5, 0x05, 0x23, 0xF1, 0xEB, 0x05, - .byte 0x25, 0xF1, 0xF1, 0x05, 0x27, 0xF1, 0xF7, 0x05, 0x2A, 0xF1, 0xFD, 0x05, 0x2C, 0xF1, 0x02, 0x06, - .byte 0x2E, 0xF1, 0x08, 0x06, 0x31, 0xF1, 0x0E, 0x06, 0x33, 0xF1, 0x14, 0x06, 0x35, 0xF1, 0x1A, 0x06, - .byte 0x38, 0xF1, 0x1F, 0x06, 0x3A, 0xF1, 0x25, 0x06, 0x3D, 0xF1, 0x2B, 0x06, 0x3F, 0xF1, 0x31, 0x06, - .byte 0x41, 0xF1, 0x37, 0x06, 0x44, 0xF1, 0x3C, 0x06, 0x46, 0xF1, 0x42, 0x06, 0x49, 0xF1, 0x48, 0x06, - .byte 0x4B, 0xF1, 0x4E, 0x06, 0x4E, 0xF1, 0x54, 0x06, 0x50, 0xF1, 0x59, 0x06, 0x53, 0xF1, 0x5F, 0x06, - .byte 0x55, 0xF1, 0x65, 0x06, 0x58, 0xF1, 0x6B, 0x06, 0x5A, 0xF1, 0x70, 0x06, 0x5D, 0xF1, 0x76, 0x06, - .byte 0x5F, 0xF1, 0x7C, 0x06, 0x62, 0xF1, 0x82, 0x06, 0x65, 0xF1, 0x87, 0x06, 0x67, 0xF1, 0x8D, 0x06, - .byte 0x6A, 0xF1, 0x93, 0x06, 0x6C, 0xF1, 0x99, 0x06, 0x6F, 0xF1, 0x9E, 0x06, 0x71, 0xF1, 0xA4, 0x06, - .byte 0x74, 0xF1, 0xAA, 0x06, 0x77, 0xF1, 0xAF, 0x06, 0x79, 0xF1, 0xB5, 0x06, 0x7C, 0xF1, 0xBB, 0x06, - .byte 0x7F, 0xF1, 0xC1, 0x06, 0x81, 0xF1, 0xC6, 0x06, 0x84, 0xF1, 0xCC, 0x06, 0x87, 0xF1, 0xD2, 0x06, - .byte 0x89, 0xF1, 0xD7, 0x06, 0x8C, 0xF1, 0xDD, 0x06, 0x8F, 0xF1, 0xE3, 0x06, 0x91, 0xF1, 0xE8, 0x06, - .byte 0x94, 0xF1, 0xEE, 0x06, 0x97, 0xF1, 0xF4, 0x06, 0x9A, 0xF1, 0xF9, 0x06, 0x9C, 0xF1, 0xFF, 0x06, - .byte 0x9F, 0xF1, 0x05, 0x07, 0xA2, 0xF1, 0x0A, 0x07, 0xA5, 0xF1, 0x10, 0x07, 0xA7, 0xF1, 0x15, 0x07, - .byte 0xAA, 0xF1, 0x1B, 0x07, 0xAD, 0xF1, 0x21, 0x07, 0xB0, 0xF1, 0x26, 0x07, 0xB3, 0xF1, 0x2C, 0x07, - .byte 0xB5, 0xF1, 0x32, 0x07, 0xB8, 0xF1, 0x37, 0x07, 0xBB, 0xF1, 0x3D, 0x07, 0xBE, 0xF1, 0x42, 0x07, - .byte 0xC1, 0xF1, 0x48, 0x07, 0xC4, 0xF1, 0x4E, 0x07, 0xC6, 0xF1, 0x53, 0x07, 0xC9, 0xF1, 0x59, 0x07, - .byte 0xCC, 0xF1, 0x5E, 0x07, 0xCF, 0xF1, 0x64, 0x07, 0xD2, 0xF1, 0x6A, 0x07, 0xD5, 0xF1, 0x6F, 0x07, - .byte 0xD8, 0xF1, 0x75, 0x07, 0xDB, 0xF1, 0x7A, 0x07, 0xDE, 0xF1, 0x80, 0x07, 0xE1, 0xF1, 0x85, 0x07, - .byte 0xE4, 0xF1, 0x8B, 0x07, 0xE7, 0xF1, 0x90, 0x07, 0xEA, 0xF1, 0x96, 0x07, 0xED, 0xF1, 0x9B, 0x07, - .byte 0xF0, 0xF1, 0xA1, 0x07, 0xF3, 0xF1, 0xA6, 0x07, 0xF6, 0xF1, 0xAC, 0x07, 0xF9, 0xF1, 0xB2, 0x07, - .byte 0xFC, 0xF1, 0xB7, 0x07, 0xFF, 0xF1, 0xBD, 0x07, 0x02, 0xF2, 0xC2, 0x07, 0x05, 0xF2, 0xC8, 0x07, - .byte 0x08, 0xF2, 0xCD, 0x07, 0x0B, 0xF2, 0xD2, 0x07, 0x0E, 0xF2, 0xD8, 0x07, 0x11, 0xF2, 0xDD, 0x07, - .byte 0x14, 0xF2, 0xE3, 0x07, 0x17, 0xF2, 0xE8, 0x07, 0x1A, 0xF2, 0xEE, 0x07, 0x1D, 0xF2, 0xF3, 0x07, - .byte 0x21, 0xF2, 0xF9, 0x07, 0x24, 0xF2, 0xFE, 0x07, 0x27, 0xF2, 0x04, 0x08, 0x2A, 0xF2, 0x09, 0x08, - .byte 0x2D, 0xF2, 0x0E, 0x08, 0x30, 0xF2, 0x14, 0x08, 0x34, 0xF2, 0x19, 0x08, 0x37, 0xF2, 0x1F, 0x08, - .byte 0x3A, 0xF2, 0x24, 0x08, 0x3D, 0xF2, 0x2A, 0x08, 0x40, 0xF2, 0x2F, 0x08, 0x44, 0xF2, 0x34, 0x08, - .byte 0x47, 0xF2, 0x3A, 0x08, 0x4A, 0xF2, 0x3F, 0x08, 0x4D, 0xF2, 0x45, 0x08, 0x50, 0xF2, 0x4A, 0x08, - .byte 0x54, 0xF2, 0x4F, 0x08, 0x57, 0xF2, 0x55, 0x08, 0x5A, 0xF2, 0x5A, 0x08, 0x5E, 0xF2, 0x5F, 0x08, - .byte 0x61, 0xF2, 0x65, 0x08, 0x64, 0xF2, 0x6A, 0x08, 0x67, 0xF2, 0x6F, 0x08, 0x6B, 0xF2, 0x75, 0x08, - .byte 0x6E, 0xF2, 0x7A, 0x08, 0x71, 0xF2, 0x7F, 0x08, 0x75, 0xF2, 0x85, 0x08, 0x78, 0xF2, 0x8A, 0x08, - .byte 0x7B, 0xF2, 0x8F, 0x08, 0x7F, 0xF2, 0x95, 0x08, 0x82, 0xF2, 0x9A, 0x08, 0x86, 0xF2, 0x9F, 0x08, - .byte 0x89, 0xF2, 0xA5, 0x08, 0x8C, 0xF2, 0xAA, 0x08, 0x90, 0xF2, 0xAF, 0x08, 0x93, 0xF2, 0xB4, 0x08, - .byte 0x97, 0xF2, 0xBA, 0x08, 0x9A, 0xF2, 0xBF, 0x08, 0x9E, 0xF2, 0xC4, 0x08, 0xA1, 0xF2, 0xC9, 0x08, - .byte 0xA4, 0xF2, 0xCF, 0x08, 0xA8, 0xF2, 0xD4, 0x08, 0xAB, 0xF2, 0xD9, 0x08, 0xAF, 0xF2, 0xDE, 0x08, - .byte 0xB2, 0xF2, 0xE4, 0x08, 0xB6, 0xF2, 0xE9, 0x08, 0xB9, 0xF2, 0xEE, 0x08, 0xBD, 0xF2, 0xF3, 0x08, - .byte 0xC0, 0xF2, 0xF8, 0x08, 0xC4, 0xF2, 0xFE, 0x08, 0xC7, 0xF2, 0x03, 0x09, 0xCB, 0xF2, 0x08, 0x09, - .byte 0xCE, 0xF2, 0x0D, 0x09, 0xD2, 0xF2, 0x12, 0x09, 0xD6, 0xF2, 0x18, 0x09, 0xD9, 0xF2, 0x1D, 0x09, - .byte 0xDD, 0xF2, 0x22, 0x09, 0xE0, 0xF2, 0x27, 0x09, 0xE4, 0xF2, 0x2C, 0x09, 0xE8, 0xF2, 0x31, 0x09, - .byte 0xEB, 0xF2, 0x37, 0x09, 0xEF, 0xF2, 0x3C, 0x09, 0xF2, 0xF2, 0x41, 0x09, 0xF6, 0xF2, 0x46, 0x09, - .byte 0xFA, 0xF2, 0x4B, 0x09, 0xFD, 0xF2, 0x50, 0x09, 0x01, 0xF3, 0x55, 0x09, 0x05, 0xF3, 0x5A, 0x09, - .byte 0x08, 0xF3, 0x5F, 0x09, 0x0C, 0xF3, 0x65, 0x09, 0x10, 0xF3, 0x6A, 0x09, 0x13, 0xF3, 0x6F, 0x09, - .byte 0x17, 0xF3, 0x74, 0x09, 0x1B, 0xF3, 0x79, 0x09, 0x1F, 0xF3, 0x7E, 0x09, 0x22, 0xF3, 0x83, 0x09, - .byte 0x26, 0xF3, 0x88, 0x09, 0x2A, 0xF3, 0x8D, 0x09, 0x2E, 0xF3, 0x92, 0x09, 0x31, 0xF3, 0x97, 0x09, - .byte 0x35, 0xF3, 0x9C, 0x09, 0x39, 0xF3, 0xA1, 0x09, 0x3D, 0xF3, 0xA6, 0x09, 0x40, 0xF3, 0xAB, 0x09, - .byte 0x44, 0xF3, 0xB0, 0x09, 0x48, 0xF3, 0xB5, 0x09, 0x4C, 0xF3, 0xBA, 0x09, 0x50, 0xF3, 0xBF, 0x09, - .byte 0x54, 0xF3, 0xC4, 0x09, 0x57, 0xF3, 0xC9, 0x09, 0x5B, 0xF3, 0xCE, 0x09, 0x5F, 0xF3, 0xD3, 0x09, - .byte 0x63, 0xF3, 0xD8, 0x09, 0x67, 0xF3, 0xDD, 0x09, 0x6B, 0xF3, 0xE2, 0x09, 0x6F, 0xF3, 0xE7, 0x09, - .byte 0x72, 0xF3, 0xEC, 0x09, 0x76, 0xF3, 0xF1, 0x09, 0x7A, 0xF3, 0xF6, 0x09, 0x7E, 0xF3, 0xFB, 0x09, - .byte 0x82, 0xF3, 0xFF, 0x09, 0x86, 0xF3, 0x04, 0x0A, 0x8A, 0xF3, 0x09, 0x0A, 0x8E, 0xF3, 0x0E, 0x0A, - .byte 0x92, 0xF3, 0x13, 0x0A, 0x96, 0xF3, 0x18, 0x0A, 0x9A, 0xF3, 0x1D, 0x0A, 0x9E, 0xF3, 0x22, 0x0A, - .byte 0xA2, 0xF3, 0x26, 0x0A, 0xA6, 0xF3, 0x2B, 0x0A, 0xAA, 0xF3, 0x30, 0x0A, 0xAE, 0xF3, 0x35, 0x0A, - .byte 0xB2, 0xF3, 0x3A, 0x0A, 0xB6, 0xF3, 0x3F, 0x0A, 0xBA, 0xF3, 0x44, 0x0A, 0xBE, 0xF3, 0x48, 0x0A, - .byte 0xC2, 0xF3, 0x4D, 0x0A, 0xC6, 0xF3, 0x52, 0x0A, 0xCA, 0xF3, 0x57, 0x0A, 0xCE, 0xF3, 0x5C, 0x0A, - .byte 0xD2, 0xF3, 0x60, 0x0A, 0xD6, 0xF3, 0x65, 0x0A, 0xDA, 0xF3, 0x6A, 0x0A, 0xDE, 0xF3, 0x6F, 0x0A, - .byte 0xE2, 0xF3, 0x73, 0x0A, 0xE7, 0xF3, 0x78, 0x0A, 0xEB, 0xF3, 0x7D, 0x0A, 0xEF, 0xF3, 0x82, 0x0A, - .byte 0xF3, 0xF3, 0x86, 0x0A, 0xF7, 0xF3, 0x8B, 0x0A, 0xFB, 0xF3, 0x90, 0x0A, 0xFF, 0xF3, 0x95, 0x0A, - .byte 0x04, 0xF4, 0x99, 0x0A, 0x08, 0xF4, 0x9E, 0x0A, 0x0C, 0xF4, 0xA3, 0x0A, 0x10, 0xF4, 0xA7, 0x0A, - .byte 0x14, 0xF4, 0xAC, 0x0A, 0x18, 0xF4, 0xB1, 0x0A, 0x1D, 0xF4, 0xB5, 0x0A, 0x21, 0xF4, 0xBA, 0x0A, - .byte 0x25, 0xF4, 0xBF, 0x0A, 0x29, 0xF4, 0xC3, 0x0A, 0x2E, 0xF4, 0xC8, 0x0A, 0x32, 0xF4, 0xCD, 0x0A, - .byte 0x36, 0xF4, 0xD1, 0x0A, 0x3A, 0xF4, 0xD6, 0x0A, 0x3F, 0xF4, 0xDB, 0x0A, 0x43, 0xF4, 0xDF, 0x0A, - .byte 0x47, 0xF4, 0xE4, 0x0A, 0x4B, 0xF4, 0xE8, 0x0A, 0x50, 0xF4, 0xED, 0x0A, 0x54, 0xF4, 0xF2, 0x0A, - .byte 0x58, 0xF4, 0xF6, 0x0A, 0x5D, 0xF4, 0xFB, 0x0A, 0x61, 0xF4, 0xFF, 0x0A, 0x65, 0xF4, 0x04, 0x0B, - .byte 0x69, 0xF4, 0x08, 0x0B, 0x6E, 0xF4, 0x0D, 0x0B, 0x72, 0xF4, 0x11, 0x0B, 0x77, 0xF4, 0x16, 0x0B, - .byte 0x7B, 0xF4, 0x1B, 0x0B, 0x7F, 0xF4, 0x1F, 0x0B, 0x84, 0xF4, 0x24, 0x0B, 0x88, 0xF4, 0x28, 0x0B, - .byte 0x8C, 0xF4, 0x2D, 0x0B, 0x91, 0xF4, 0x31, 0x0B, 0x95, 0xF4, 0x36, 0x0B, 0x9A, 0xF4, 0x3A, 0x0B, - .byte 0x9E, 0xF4, 0x3E, 0x0B, 0xA2, 0xF4, 0x43, 0x0B, 0xA7, 0xF4, 0x47, 0x0B, 0xAB, 0xF4, 0x4C, 0x0B, - .byte 0xB0, 0xF4, 0x50, 0x0B, 0xB4, 0xF4, 0x55, 0x0B, 0xB9, 0xF4, 0x59, 0x0B, 0xBD, 0xF4, 0x5E, 0x0B, - .byte 0xC2, 0xF4, 0x62, 0x0B, 0xC6, 0xF4, 0x66, 0x0B, 0xCA, 0xF4, 0x6B, 0x0B, 0xCF, 0xF4, 0x6F, 0x0B, - .byte 0xD3, 0xF4, 0x74, 0x0B, 0xD8, 0xF4, 0x78, 0x0B, 0xDC, 0xF4, 0x7C, 0x0B, 0xE1, 0xF4, 0x81, 0x0B, - .byte 0xE5, 0xF4, 0x85, 0x0B, 0xEA, 0xF4, 0x89, 0x0B, 0xEF, 0xF4, 0x8E, 0x0B, 0xF3, 0xF4, 0x92, 0x0B, - .byte 0xF8, 0xF4, 0x97, 0x0B, 0xFC, 0xF4, 0x9B, 0x0B, 0x01, 0xF5, 0x9F, 0x0B, 0x05, 0xF5, 0xA3, 0x0B, - .byte 0x0A, 0xF5, 0xA8, 0x0B, 0x0E, 0xF5, 0xAC, 0x0B, 0x13, 0xF5, 0xB0, 0x0B, 0x18, 0xF5, 0xB5, 0x0B, - .byte 0x1C, 0xF5, 0xB9, 0x0B, 0x21, 0xF5, 0xBD, 0x0B, 0x25, 0xF5, 0xC1, 0x0B, 0x2A, 0xF5, 0xC6, 0x0B, - .byte 0x2F, 0xF5, 0xCA, 0x0B, 0x33, 0xF5, 0xCE, 0x0B, 0x38, 0xF5, 0xD2, 0x0B, 0x3D, 0xF5, 0xD7, 0x0B, - .byte 0x41, 0xF5, 0xDB, 0x0B, 0x46, 0xF5, 0xDF, 0x0B, 0x4B, 0xF5, 0xE3, 0x0B, 0x4F, 0xF5, 0xE8, 0x0B, - .byte 0x54, 0xF5, 0xEC, 0x0B, 0x59, 0xF5, 0xF0, 0x0B, 0x5D, 0xF5, 0xF4, 0x0B, 0x62, 0xF5, 0xF8, 0x0B, - .byte 0x67, 0xF5, 0xFC, 0x0B, 0x6B, 0xF5, 0x01, 0x0C, 0x70, 0xF5, 0x05, 0x0C, 0x75, 0xF5, 0x09, 0x0C, - .byte 0x7A, 0xF5, 0x0D, 0x0C, 0x7E, 0xF5, 0x11, 0x0C, 0x83, 0xF5, 0x15, 0x0C, 0x88, 0xF5, 0x19, 0x0C, - .byte 0x8D, 0xF5, 0x1E, 0x0C, 0x91, 0xF5, 0x22, 0x0C, 0x96, 0xF5, 0x26, 0x0C, 0x9B, 0xF5, 0x2A, 0x0C, - .byte 0xA0, 0xF5, 0x2E, 0x0C, 0xA4, 0xF5, 0x32, 0x0C, 0xA9, 0xF5, 0x36, 0x0C, 0xAE, 0xF5, 0x3A, 0x0C, - .byte 0xB3, 0xF5, 0x3E, 0x0C, 0xB8, 0xF5, 0x42, 0x0C, 0xBC, 0xF5, 0x46, 0x0C, 0xC1, 0xF5, 0x4A, 0x0C, - .byte 0xC6, 0xF5, 0x4E, 0x0C, 0xCB, 0xF5, 0x52, 0x0C, 0xD0, 0xF5, 0x56, 0x0C, 0xD5, 0xF5, 0x5A, 0x0C, - .byte 0xDA, 0xF5, 0x5E, 0x0C, 0xDE, 0xF5, 0x62, 0x0C, 0xE3, 0xF5, 0x66, 0x0C, 0xE8, 0xF5, 0x6A, 0x0C, - .byte 0xED, 0xF5, 0x6E, 0x0C, 0xF2, 0xF5, 0x72, 0x0C, 0xF7, 0xF5, 0x76, 0x0C, 0xFC, 0xF5, 0x7A, 0x0C, - .byte 0x01, 0xF6, 0x7E, 0x0C, 0x05, 0xF6, 0x82, 0x0C, 0x0A, 0xF6, 0x86, 0x0C, 0x0F, 0xF6, 0x8A, 0x0C, - .byte 0x14, 0xF6, 0x8E, 0x0C, 0x19, 0xF6, 0x91, 0x0C, 0x1E, 0xF6, 0x95, 0x0C, 0x23, 0xF6, 0x99, 0x0C, - .byte 0x28, 0xF6, 0x9D, 0x0C, 0x2D, 0xF6, 0xA1, 0x0C, 0x32, 0xF6, 0xA5, 0x0C, 0x37, 0xF6, 0xA9, 0x0C, - .byte 0x3C, 0xF6, 0xAC, 0x0C, 0x41, 0xF6, 0xB0, 0x0C, 0x46, 0xF6, 0xB4, 0x0C, 0x4B, 0xF6, 0xB8, 0x0C, - .byte 0x50, 0xF6, 0xBC, 0x0C, 0x55, 0xF6, 0xC0, 0x0C, 0x5A, 0xF6, 0xC3, 0x0C, 0x5F, 0xF6, 0xC7, 0x0C, - .byte 0x64, 0xF6, 0xCB, 0x0C, 0x69, 0xF6, 0xCF, 0x0C, 0x6E, 0xF6, 0xD2, 0x0C, 0x73, 0xF6, 0xD6, 0x0C, - .byte 0x78, 0xF6, 0xDA, 0x0C, 0x7D, 0xF6, 0xDE, 0x0C, 0x82, 0xF6, 0xE1, 0x0C, 0x87, 0xF6, 0xE5, 0x0C, - .byte 0x8C, 0xF6, 0xE9, 0x0C, 0x91, 0xF6, 0xED, 0x0C, 0x96, 0xF6, 0xF0, 0x0C, 0x9B, 0xF6, 0xF4, 0x0C, - .byte 0xA1, 0xF6, 0xF8, 0x0C, 0xA6, 0xF6, 0xFB, 0x0C, 0xAB, 0xF6, 0xFF, 0x0C, 0xB0, 0xF6, 0x03, 0x0D, - .byte 0xB5, 0xF6, 0x06, 0x0D, 0xBA, 0xF6, 0x0A, 0x0D, 0xBF, 0xF6, 0x0E, 0x0D, 0xC4, 0xF6, 0x11, 0x0D, - .byte 0xC9, 0xF6, 0x15, 0x0D, 0xCF, 0xF6, 0x18, 0x0D, 0xD4, 0xF6, 0x1C, 0x0D, 0xD9, 0xF6, 0x20, 0x0D, - .byte 0xDE, 0xF6, 0x23, 0x0D, 0xE3, 0xF6, 0x27, 0x0D, 0xE8, 0xF6, 0x2A, 0x0D, 0xEE, 0xF6, 0x2E, 0x0D, - .byte 0xF3, 0xF6, 0x32, 0x0D, 0xF8, 0xF6, 0x35, 0x0D, 0xFD, 0xF6, 0x39, 0x0D, 0x02, 0xF7, 0x3C, 0x0D, - .byte 0x08, 0xF7, 0x40, 0x0D, 0x0D, 0xF7, 0x43, 0x0D, 0x12, 0xF7, 0x47, 0x0D, 0x17, 0xF7, 0x4A, 0x0D, - .byte 0x1C, 0xF7, 0x4E, 0x0D, 0x22, 0xF7, 0x51, 0x0D, 0x27, 0xF7, 0x55, 0x0D, 0x2C, 0xF7, 0x58, 0x0D, - .byte 0x31, 0xF7, 0x5C, 0x0D, 0x37, 0xF7, 0x5F, 0x0D, 0x3C, 0xF7, 0x62, 0x0D, 0x41, 0xF7, 0x66, 0x0D, - .byte 0x46, 0xF7, 0x69, 0x0D, 0x4C, 0xF7, 0x6D, 0x0D, 0x51, 0xF7, 0x70, 0x0D, 0x56, 0xF7, 0x74, 0x0D, - .byte 0x5B, 0xF7, 0x77, 0x0D, 0x61, 0xF7, 0x7A, 0x0D, 0x66, 0xF7, 0x7E, 0x0D, 0x6B, 0xF7, 0x81, 0x0D, - .byte 0x71, 0xF7, 0x85, 0x0D, 0x76, 0xF7, 0x88, 0x0D, 0x7B, 0xF7, 0x8B, 0x0D, 0x81, 0xF7, 0x8F, 0x0D, - .byte 0x86, 0xF7, 0x92, 0x0D, 0x8B, 0xF7, 0x95, 0x0D, 0x91, 0xF7, 0x99, 0x0D, 0x96, 0xF7, 0x9C, 0x0D, - .byte 0x9B, 0xF7, 0x9F, 0x0D, 0xA1, 0xF7, 0xA2, 0x0D, 0xA6, 0xF7, 0xA6, 0x0D, 0xAB, 0xF7, 0xA9, 0x0D, - .byte 0xB1, 0xF7, 0xAC, 0x0D, 0xB6, 0xF7, 0xB0, 0x0D, 0xBB, 0xF7, 0xB3, 0x0D, 0xC1, 0xF7, 0xB6, 0x0D, - .byte 0xC6, 0xF7, 0xB9, 0x0D, 0xCC, 0xF7, 0xBC, 0x0D, 0xD1, 0xF7, 0xC0, 0x0D, 0xD6, 0xF7, 0xC3, 0x0D, - .byte 0xDC, 0xF7, 0xC6, 0x0D, 0xE1, 0xF7, 0xC9, 0x0D, 0xE7, 0xF7, 0xCC, 0x0D, 0xEC, 0xF7, 0xD0, 0x0D, - .byte 0xF2, 0xF7, 0xD3, 0x0D, 0xF7, 0xF7, 0xD6, 0x0D, 0xFC, 0xF7, 0xD9, 0x0D, 0x02, 0xF8, 0xDC, 0x0D, - .byte 0x07, 0xF8, 0xDF, 0x0D, 0x0D, 0xF8, 0xE3, 0x0D, 0x12, 0xF8, 0xE6, 0x0D, 0x18, 0xF8, 0xE9, 0x0D, - .byte 0x1D, 0xF8, 0xEC, 0x0D, 0x23, 0xF8, 0xEF, 0x0D, 0x28, 0xF8, 0xF2, 0x0D, 0x2E, 0xF8, 0xF5, 0x0D, - .byte 0x33, 0xF8, 0xF8, 0x0D, 0x38, 0xF8, 0xFB, 0x0D, 0x3E, 0xF8, 0xFE, 0x0D, 0x43, 0xF8, 0x01, 0x0E, - .byte 0x49, 0xF8, 0x04, 0x0E, 0x4E, 0xF8, 0x07, 0x0E, 0x54, 0xF8, 0x0A, 0x0E, 0x5A, 0xF8, 0x0D, 0x0E, - .byte 0x5F, 0xF8, 0x10, 0x0E, 0x65, 0xF8, 0x13, 0x0E, 0x6A, 0xF8, 0x16, 0x0E, 0x70, 0xF8, 0x19, 0x0E, - .byte 0x75, 0xF8, 0x1C, 0x0E, 0x7B, 0xF8, 0x1F, 0x0E, 0x80, 0xF8, 0x22, 0x0E, 0x86, 0xF8, 0x25, 0x0E, - .byte 0x8B, 0xF8, 0x28, 0x0E, 0x91, 0xF8, 0x2B, 0x0E, 0x96, 0xF8, 0x2E, 0x0E, 0x9C, 0xF8, 0x31, 0x0E, - .byte 0xA2, 0xF8, 0x34, 0x0E, 0xA7, 0xF8, 0x37, 0x0E, 0xAD, 0xF8, 0x3A, 0x0E, 0xB2, 0xF8, 0x3C, 0x0E, - .byte 0xB8, 0xF8, 0x3F, 0x0E, 0xBE, 0xF8, 0x42, 0x0E, 0xC3, 0xF8, 0x45, 0x0E, 0xC9, 0xF8, 0x48, 0x0E, - .byte 0xCE, 0xF8, 0x4B, 0x0E, 0xD4, 0xF8, 0x4D, 0x0E, 0xDA, 0xF8, 0x50, 0x0E, 0xDF, 0xF8, 0x53, 0x0E, - .byte 0xE5, 0xF8, 0x56, 0x0E, 0xEB, 0xF8, 0x59, 0x0E, 0xF0, 0xF8, 0x5B, 0x0E, 0xF6, 0xF8, 0x5E, 0x0E, - .byte 0xFB, 0xF8, 0x61, 0x0E, 0x01, 0xF9, 0x64, 0x0E, 0x07, 0xF9, 0x66, 0x0E, 0x0C, 0xF9, 0x69, 0x0E, - .byte 0x12, 0xF9, 0x6C, 0x0E, 0x18, 0xF9, 0x6F, 0x0E, 0x1D, 0xF9, 0x71, 0x0E, 0x23, 0xF9, 0x74, 0x0E, - .byte 0x29, 0xF9, 0x77, 0x0E, 0x2E, 0xF9, 0x79, 0x0E, 0x34, 0xF9, 0x7C, 0x0E, 0x3A, 0xF9, 0x7F, 0x0E, - .byte 0x3F, 0xF9, 0x81, 0x0E, 0x45, 0xF9, 0x84, 0x0E, 0x4B, 0xF9, 0x87, 0x0E, 0x51, 0xF9, 0x89, 0x0E, - .byte 0x56, 0xF9, 0x8C, 0x0E, 0x5C, 0xF9, 0x8F, 0x0E, 0x62, 0xF9, 0x91, 0x0E, 0x67, 0xF9, 0x94, 0x0E, - .byte 0x6D, 0xF9, 0x96, 0x0E, 0x73, 0xF9, 0x99, 0x0E, 0x79, 0xF9, 0x9B, 0x0E, 0x7E, 0xF9, 0x9E, 0x0E, - .byte 0x84, 0xF9, 0xA1, 0x0E, 0x8A, 0xF9, 0xA3, 0x0E, 0x90, 0xF9, 0xA6, 0x0E, 0x95, 0xF9, 0xA8, 0x0E, - .byte 0x9B, 0xF9, 0xAB, 0x0E, 0xA1, 0xF9, 0xAD, 0x0E, 0xA7, 0xF9, 0xB0, 0x0E, 0xAC, 0xF9, 0xB2, 0x0E, - .byte 0xB2, 0xF9, 0xB5, 0x0E, 0xB8, 0xF9, 0xB7, 0x0E, 0xBE, 0xF9, 0xBA, 0x0E, 0xC4, 0xF9, 0xBC, 0x0E, - .byte 0xC9, 0xF9, 0xBF, 0x0E, 0xCF, 0xF9, 0xC1, 0x0E, 0xD5, 0xF9, 0xC3, 0x0E, 0xDB, 0xF9, 0xC6, 0x0E, - .byte 0xE1, 0xF9, 0xC8, 0x0E, 0xE6, 0xF9, 0xCB, 0x0E, 0xEC, 0xF9, 0xCD, 0x0E, 0xF2, 0xF9, 0xCF, 0x0E, - .byte 0xF8, 0xF9, 0xD2, 0x0E, 0xFE, 0xF9, 0xD4, 0x0E, 0x03, 0xFA, 0xD6, 0x0E, 0x09, 0xFA, 0xD9, 0x0E, - .byte 0x0F, 0xFA, 0xDB, 0x0E, 0x15, 0xFA, 0xDD, 0x0E, 0x1B, 0xFA, 0xE0, 0x0E, 0x21, 0xFA, 0xE2, 0x0E, - .byte 0x26, 0xFA, 0xE4, 0x0E, 0x2C, 0xFA, 0xE7, 0x0E, 0x32, 0xFA, 0xE9, 0x0E, 0x38, 0xFA, 0xEB, 0x0E, - .byte 0x3E, 0xFA, 0xEE, 0x0E, 0x44, 0xFA, 0xF0, 0x0E, 0x4A, 0xFA, 0xF2, 0x0E, 0x4F, 0xFA, 0xF4, 0x0E, - .byte 0x55, 0xFA, 0xF7, 0x0E, 0x5B, 0xFA, 0xF9, 0x0E, 0x61, 0xFA, 0xFB, 0x0E, 0x67, 0xFA, 0xFD, 0x0E, - .byte 0x6D, 0xFA, 0xFF, 0x0E, 0x73, 0xFA, 0x02, 0x0F, 0x79, 0xFA, 0x04, 0x0F, 0x7F, 0xFA, 0x06, 0x0F, - .byte 0x84, 0xFA, 0x08, 0x0F, 0x8A, 0xFA, 0x0A, 0x0F, 0x90, 0xFA, 0x0C, 0x0F, 0x96, 0xFA, 0x0E, 0x0F, - .byte 0x9C, 0xFA, 0x11, 0x0F, 0xA2, 0xFA, 0x13, 0x0F, 0xA8, 0xFA, 0x15, 0x0F, 0xAE, 0xFA, 0x17, 0x0F, - .byte 0xB4, 0xFA, 0x19, 0x0F, 0xBA, 0xFA, 0x1B, 0x0F, 0xC0, 0xFA, 0x1D, 0x0F, 0xC6, 0xFA, 0x1F, 0x0F, - .byte 0xCC, 0xFA, 0x21, 0x0F, 0xD1, 0xFA, 0x23, 0x0F, 0xD7, 0xFA, 0x25, 0x0F, 0xDD, 0xFA, 0x27, 0x0F, - .byte 0xE3, 0xFA, 0x29, 0x0F, 0xE9, 0xFA, 0x2B, 0x0F, 0xEF, 0xFA, 0x2D, 0x0F, 0xF5, 0xFA, 0x2F, 0x0F, - .byte 0xFB, 0xFA, 0x31, 0x0F, 0x01, 0xFB, 0x33, 0x0F, 0x07, 0xFB, 0x35, 0x0F, 0x0D, 0xFB, 0x37, 0x0F, - .byte 0x13, 0xFB, 0x39, 0x0F, 0x19, 0xFB, 0x3B, 0x0F, 0x1F, 0xFB, 0x3D, 0x0F, 0x25, 0xFB, 0x3F, 0x0F, - .byte 0x2B, 0xFB, 0x41, 0x0F, 0x31, 0xFB, 0x43, 0x0F, 0x37, 0xFB, 0x45, 0x0F, 0x3D, 0xFB, 0x46, 0x0F, - .byte 0x43, 0xFB, 0x48, 0x0F, 0x49, 0xFB, 0x4A, 0x0F, 0x4F, 0xFB, 0x4C, 0x0F, 0x55, 0xFB, 0x4E, 0x0F, - .byte 0x5B, 0xFB, 0x50, 0x0F, 0x61, 0xFB, 0x51, 0x0F, 0x67, 0xFB, 0x53, 0x0F, 0x6D, 0xFB, 0x55, 0x0F, - .byte 0x73, 0xFB, 0x57, 0x0F, 0x79, 0xFB, 0x59, 0x0F, 0x7F, 0xFB, 0x5A, 0x0F, 0x85, 0xFB, 0x5C, 0x0F, - .byte 0x8B, 0xFB, 0x5E, 0x0F, 0x91, 0xFB, 0x60, 0x0F, 0x97, 0xFB, 0x61, 0x0F, 0x9D, 0xFB, 0x63, 0x0F, - .byte 0xA3, 0xFB, 0x65, 0x0F, 0xA9, 0xFB, 0x67, 0x0F, 0xAF, 0xFB, 0x68, 0x0F, 0xB5, 0xFB, 0x6A, 0x0F, - .byte 0xBC, 0xFB, 0x6C, 0x0F, 0xC2, 0xFB, 0x6D, 0x0F, 0xC8, 0xFB, 0x6F, 0x0F, 0xCE, 0xFB, 0x71, 0x0F, - .byte 0xD4, 0xFB, 0x72, 0x0F, 0xDA, 0xFB, 0x74, 0x0F, 0xE0, 0xFB, 0x76, 0x0F, 0xE6, 0xFB, 0x77, 0x0F, - .byte 0xEC, 0xFB, 0x79, 0x0F, 0xF2, 0xFB, 0x7A, 0x0F, 0xF8, 0xFB, 0x7C, 0x0F, 0xFE, 0xFB, 0x7D, 0x0F, - .byte 0x04, 0xFC, 0x7F, 0x0F, 0x0A, 0xFC, 0x81, 0x0F, 0x11, 0xFC, 0x82, 0x0F, 0x17, 0xFC, 0x84, 0x0F, - .byte 0x1D, 0xFC, 0x85, 0x0F, 0x23, 0xFC, 0x87, 0x0F, 0x29, 0xFC, 0x88, 0x0F, 0x2F, 0xFC, 0x8A, 0x0F, - .byte 0x35, 0xFC, 0x8B, 0x0F, 0x3B, 0xFC, 0x8D, 0x0F, 0x41, 0xFC, 0x8E, 0x0F, 0x47, 0xFC, 0x90, 0x0F, - .byte 0x4E, 0xFC, 0x91, 0x0F, 0x54, 0xFC, 0x93, 0x0F, 0x5A, 0xFC, 0x94, 0x0F, 0x60, 0xFC, 0x95, 0x0F, - .byte 0x66, 0xFC, 0x97, 0x0F, 0x6C, 0xFC, 0x98, 0x0F, 0x72, 0xFC, 0x9A, 0x0F, 0x78, 0xFC, 0x9B, 0x0F, - .byte 0x7F, 0xFC, 0x9C, 0x0F, 0x85, 0xFC, 0x9E, 0x0F, 0x8B, 0xFC, 0x9F, 0x0F, 0x91, 0xFC, 0xA1, 0x0F, - .byte 0x97, 0xFC, 0xA2, 0x0F, 0x9D, 0xFC, 0xA3, 0x0F, 0xA3, 0xFC, 0xA5, 0x0F, 0xAA, 0xFC, 0xA6, 0x0F, - .byte 0xB0, 0xFC, 0xA7, 0x0F, 0xB6, 0xFC, 0xA8, 0x0F, 0xBC, 0xFC, 0xAA, 0x0F, 0xC2, 0xFC, 0xAB, 0x0F, - .byte 0xC8, 0xFC, 0xAC, 0x0F, 0xCE, 0xFC, 0xAE, 0x0F, 0xD5, 0xFC, 0xAF, 0x0F, 0xDB, 0xFC, 0xB0, 0x0F, - .byte 0xE1, 0xFC, 0xB1, 0x0F, 0xE7, 0xFC, 0xB3, 0x0F, 0xED, 0xFC, 0xB4, 0x0F, 0xF3, 0xFC, 0xB5, 0x0F, - .byte 0xFA, 0xFC, 0xB6, 0x0F, 0x00, 0xFD, 0xB7, 0x0F, 0x06, 0xFD, 0xB8, 0x0F, 0x0C, 0xFD, 0xBA, 0x0F, - .byte 0x12, 0xFD, 0xBB, 0x0F, 0x18, 0xFD, 0xBC, 0x0F, 0x1F, 0xFD, 0xBD, 0x0F, 0x25, 0xFD, 0xBE, 0x0F, - .byte 0x2B, 0xFD, 0xBF, 0x0F, 0x31, 0xFD, 0xC0, 0x0F, 0x37, 0xFD, 0xC2, 0x0F, 0x3E, 0xFD, 0xC3, 0x0F, - .byte 0x44, 0xFD, 0xC4, 0x0F, 0x4A, 0xFD, 0xC5, 0x0F, 0x50, 0xFD, 0xC6, 0x0F, 0x56, 0xFD, 0xC7, 0x0F, - .byte 0x5D, 0xFD, 0xC8, 0x0F, 0x63, 0xFD, 0xC9, 0x0F, 0x69, 0xFD, 0xCA, 0x0F, 0x6F, 0xFD, 0xCB, 0x0F, - .byte 0x75, 0xFD, 0xCC, 0x0F, 0x7C, 0xFD, 0xCD, 0x0F, 0x82, 0xFD, 0xCE, 0x0F, 0x88, 0xFD, 0xCF, 0x0F, - .byte 0x8E, 0xFD, 0xD0, 0x0F, 0x94, 0xFD, 0xD1, 0x0F, 0x9B, 0xFD, 0xD2, 0x0F, 0xA1, 0xFD, 0xD3, 0x0F, - .byte 0xA7, 0xFD, 0xD4, 0x0F, 0xAD, 0xFD, 0xD5, 0x0F, 0xB3, 0xFD, 0xD5, 0x0F, 0xBA, 0xFD, 0xD6, 0x0F, - .byte 0xC0, 0xFD, 0xD7, 0x0F, 0xC6, 0xFD, 0xD8, 0x0F, 0xCC, 0xFD, 0xD9, 0x0F, 0xD3, 0xFD, 0xDA, 0x0F, - .byte 0xD9, 0xFD, 0xDB, 0x0F, 0xDF, 0xFD, 0xDC, 0x0F, 0xE5, 0xFD, 0xDC, 0x0F, 0xEB, 0xFD, 0xDD, 0x0F, - .byte 0xF2, 0xFD, 0xDE, 0x0F, 0xF8, 0xFD, 0xDF, 0x0F, 0xFE, 0xFD, 0xE0, 0x0F, 0x04, 0xFE, 0xE0, 0x0F, - .byte 0x0B, 0xFE, 0xE1, 0x0F, 0x11, 0xFE, 0xE2, 0x0F, 0x17, 0xFE, 0xE3, 0x0F, 0x1D, 0xFE, 0xE3, 0x0F, - .byte 0x24, 0xFE, 0xE4, 0x0F, 0x2A, 0xFE, 0xE5, 0x0F, 0x30, 0xFE, 0xE6, 0x0F, 0x36, 0xFE, 0xE6, 0x0F, - .byte 0x3D, 0xFE, 0xE7, 0x0F, 0x43, 0xFE, 0xE8, 0x0F, 0x49, 0xFE, 0xE8, 0x0F, 0x4F, 0xFE, 0xE9, 0x0F, - .byte 0x56, 0xFE, 0xEA, 0x0F, 0x5C, 0xFE, 0xEA, 0x0F, 0x62, 0xFE, 0xEB, 0x0F, 0x68, 0xFE, 0xEC, 0x0F, - .byte 0x6F, 0xFE, 0xEC, 0x0F, 0x75, 0xFE, 0xED, 0x0F, 0x7B, 0xFE, 0xED, 0x0F, 0x81, 0xFE, 0xEE, 0x0F, - .byte 0x88, 0xFE, 0xEF, 0x0F, 0x8E, 0xFE, 0xEF, 0x0F, 0x94, 0xFE, 0xF0, 0x0F, 0x9A, 0xFE, 0xF0, 0x0F, - .byte 0xA1, 0xFE, 0xF1, 0x0F, 0xA7, 0xFE, 0xF1, 0x0F, 0xAD, 0xFE, 0xF2, 0x0F, 0xB3, 0xFE, 0xF2, 0x0F, - .byte 0xBA, 0xFE, 0xF3, 0x0F, 0xC0, 0xFE, 0xF3, 0x0F, 0xC6, 0xFE, 0xF4, 0x0F, 0xCC, 0xFE, 0xF4, 0x0F, - .byte 0xD3, 0xFE, 0xF5, 0x0F, 0xD9, 0xFE, 0xF5, 0x0F, 0xDF, 0xFE, 0xF6, 0x0F, 0xE5, 0xFE, 0xF6, 0x0F, - .byte 0xEC, 0xFE, 0xF7, 0x0F, 0xF2, 0xFE, 0xF7, 0x0F, 0xF8, 0xFE, 0xF8, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, - .byte 0x05, 0xFF, 0xF8, 0x0F, 0x0B, 0xFF, 0xF9, 0x0F, 0x11, 0xFF, 0xF9, 0x0F, 0x18, 0xFF, 0xF9, 0x0F, - .byte 0x1E, 0xFF, 0xFA, 0x0F, 0x24, 0xFF, 0xFA, 0x0F, 0x2A, 0xFF, 0xFA, 0x0F, 0x31, 0xFF, 0xFB, 0x0F, - .byte 0x37, 0xFF, 0xFB, 0x0F, 0x3D, 0xFF, 0xFB, 0x0F, 0x44, 0xFF, 0xFC, 0x0F, 0x4A, 0xFF, 0xFC, 0x0F, - .byte 0x50, 0xFF, 0xFC, 0x0F, 0x56, 0xFF, 0xFC, 0x0F, 0x5D, 0xFF, 0xFD, 0x0F, 0x63, 0xFF, 0xFD, 0x0F, - .byte 0x69, 0xFF, 0xFD, 0x0F, 0x70, 0xFF, 0xFD, 0x0F, 0x76, 0xFF, 0xFE, 0x0F, 0x7C, 0xFF, 0xFE, 0x0F, - .byte 0x82, 0xFF, 0xFE, 0x0F, 0x89, 0xFF, 0xFE, 0x0F, 0x8F, 0xFF, 0xFE, 0x0F, 0x95, 0xFF, 0xFF, 0x0F, - .byte 0x9B, 0xFF, 0xFF, 0x0F, 0xA2, 0xFF, 0xFF, 0x0F, 0xA8, 0xFF, 0xFF, 0x0F, 0xAE, 0xFF, 0xFF, 0x0F, - .byte 0xB5, 0xFF, 0xFF, 0x0F, 0xBB, 0xFF, 0xFF, 0x0F, 0xC1, 0xFF, 0x00, 0x10, 0xC7, 0xFF, 0x00, 0x10, - .byte 0xCE, 0xFF, 0x00, 0x10, 0xD4, 0xFF, 0x00, 0x10, 0xDA, 0xFF, 0x00, 0x10, 0xE1, 0xFF, 0x00, 0x10, - .byte 0xE7, 0xFF, 0x00, 0x10, 0xED, 0xFF, 0x00, 0x10, 0xF3, 0xFF, 0x00, 0x10, 0xFA, 0xFF, 0x00, 0x10 + .byte 0x04, 0x05, 0x07, 0x08 + .byte 0x03, 0x05, 0x06, 0x08 + .byte 0x03, 0x04, 0x06, 0x07 + .byte 0x01, 0x02, 0x07, 0x08 + .byte 0x00, 0x02, 0x06, 0x08 + .byte 0x00, 0x01, 0x06, 0x07 + .byte 0x01, 0x02, 0x04, 0x05 + .byte 0x00, 0x02, 0x03, 0x05 + .byte 0x00, 0x01, 0x03, 0x04 .section .data @@ -7080,7 +6051,7 @@ _020B2E0C: ands r0, r0, #0x4 beq _020B2E40 ldrh r0, [r4, #0x54] - ldr r2, _020B2E74 ; =UNK_020FFA38 + ldr r2, _020B2E74 ; =FX_SinCosTable_ mov r0, r0, asr #0x4 mov r1, r0, lsl #0x1 add r0, r1, #0x1 @@ -7105,7 +6076,7 @@ _020B2E5C: ldmia sp!, {r4-r6,pc} .balign 4 _020B2E70: .word UNK_021CDD6C -_020B2E74: .word UNK_020FFA38 +_020B2E74: .word FX_SinCosTable_ arm_func_start FUN_020B2E78 FUN_020B2E78: ; 0x020B2E78 @@ -7570,7 +6541,7 @@ _020B34E4: ands r0, r0, #0x4 beq _020B3518 ldrh r0, [r5, #0x1c] - ldr r2, _020B3550 ; =UNK_020FFA38 + ldr r2, _020B3550 ; =FX_SinCosTable_ mov r0, r0, asr #0x4 mov r1, r0, lsl #0x1 add r0, r1, #0x1 @@ -7596,7 +6567,7 @@ _020B3534: ldmia sp!, {r4-r7,pc} .balign 4 _020B354C: .word UNK_021CDD6C -_020B3550: .word UNK_020FFA38 +_020B3550: .word FX_SinCosTable_ arm_func_start FUN_020B3554 FUN_020B3554: @@ -7654,7 +6625,7 @@ _020B3610: ands r0, r0, #0x4 beq _020B3644 ldrh r0, [r5, #0x48] - ldr r2, _020B36BC ; =UNK_020FFA38 + ldr r2, _020B36BC ; =FX_SinCosTable_ mov r0, r0, asr #0x4 mov r1, r0, lsl #0x1 add r0, r1, #0x1 @@ -7698,7 +6669,7 @@ _020B36A4: .balign 4 _020B36B4: .word UNK_02106574 _020B36B8: .word UNK_021CDD6C -_020B36BC: .word UNK_020FFA38 +_020B36BC: .word FX_SinCosTable_ arm_func_start FUN_020B36C0 FUN_020B36C0: ; 0x020B36C0 @@ -15354,7 +14325,7 @@ _020BA188: moveq r2, #0x1000 str r2, [r1, #0x28] ldr r0, _020BA3B4 ; =UNK_020FF9F0 - ldr r1, _020BA3B8 ; =UNK_020FF9F1 + ldr r1, _020BA3B8 ; =UNK_020FF9F0 + 1 ldrb r0, [r0, r11, lsl #0x2] add r2, r6, r0, lsl #0x2 ldr r0, [sp, #0x0] @@ -15368,7 +14339,7 @@ _020BA188: ldrne r0, [sp, #0x4] rsbne r0, r0, #0x0 strne r0, [sp, #0x4] - ldr r0, _020BA3BC ; =UNK_020FF9F2 + ldr r0, _020BA3BC ; =UNK_020FF9F0 + 2 ldrb r0, [r0, r11, lsl #0x2] add r1, r6, r0, lsl #0x2 ldr r0, [sp, #0x4] @@ -15378,7 +14349,7 @@ _020BA188: ldrne r0, [sp, #0x0] rsbne r0, r0, #0x0 strne r0, [sp, #0x0] - ldr r0, _020BA3C0 ; =UNK_020FF9F3 + ldr r0, _020BA3C0 ; =UNK_020FF9F0 + 3 ldrb r0, [r0, r11, lsl #0x2] add r1, r6, r0, lsl #0x2 ldr r0, [sp, #0x0] @@ -15480,9 +14451,9 @@ _020BA3A0: ldmia sp!, {r4-r11,pc} .balign 4 _020BA3B4: .word UNK_020FF9F0 -_020BA3B8: .word UNK_020FF9F1 -_020BA3BC: .word UNK_020FF9F2 -_020BA3C0: .word UNK_020FF9F3 +_020BA3B8: .word UNK_020FF9F0 + 1 +_020BA3BC: .word UNK_020FF9F0 + 2 +_020BA3C0: .word UNK_020FF9F0 + 3 arm_func_start FUN_020BA3C4 FUN_020BA3C4: ; 0x020BA3C4 @@ -17977,20 +16948,20 @@ FUN_020BC500: moveq lr, #0x1000 str lr, [r0, r1, lsl #0x2] ldr r4, _020BC688 ; =UNK_020FFA14 - ldr lr, _020BC68C ; =UNK_020FFA15 + ldr lr, _020BC68C ; =UNK_020FFA14 + 1 ldrb r4, [r4, r1, lsl #0x2] str r12, [r0, r4, lsl #0x2] ldrb lr, [lr, r1, lsl #0x2] str r3, [r0, lr, lsl #0x2] ldrsh lr, [r2, #0x0] ands lr, lr, #0x20 - ldr lr, _020BC690 ; =UNK_020FFA16 + ldr lr, _020BC690 ; =UNK_020FFA14 + 2 rsbne r3, r3, #0x0 ldrb lr, [lr, r1, lsl #0x2] str r3, [r0, lr, lsl #0x2] ldrsh r2, [r2, #0x0] ands r2, r2, #0x40 - ldr r2, _020BC694 ; =UNK_020FFA17 + ldr r2, _020BC694 ; =UNK_020FFA14 + 3 rsbne r12, r12, #0x0 ldrb r1, [r2, r1, lsl #0x2] str r12, [r0, r1, lsl #0x2] @@ -18041,9 +17012,9 @@ _020BC5E0: .balign 4 _020BC684: .word 0x00007FFF _020BC688: .word UNK_020FFA14 -_020BC68C: .word UNK_020FFA15 -_020BC690: .word UNK_020FFA16 -_020BC694: .word UNK_020FFA17 +_020BC68C: .word UNK_020FFA14 + 1 +_020BC690: .word UNK_020FFA14 + 2 +_020BC694: .word UNK_020FFA14 + 3 arm_func_start FUN_020BC698 FUN_020BC698: ; 0x020BC698 @@ -19324,7 +18295,7 @@ FUN_020BD850: ; 0x020BD850 ldr r0, _020BD994 ; =UNK_020FFA14 str r2, [r1, #0x28] ldrb r1, [r0, r5, lsl #0x2] - ldr r0, _020BD998 ; =UNK_020FFA15 + ldr r0, _020BD998 ; =UNK_020FFA14 + 1 add r1, r8, r1, lsl #0x2 str r7, [r1, #0x28] ldrb r0, [r0, r5, lsl #0x2] @@ -19332,14 +18303,14 @@ FUN_020BD850: ; 0x020BD850 str r6, [r0, #0x28] ldrh r0, [r4, #0x0] ands r0, r0, #0x200 - ldr r0, _020BD99C ; =UNK_020FFA16 + ldr r0, _020BD99C ; =UNK_020FFA14 + 2 rsbne r6, r6, #0x0 ldrb r0, [r0, r5, lsl #0x2] add r0, r8, r0, lsl #0x2 str r6, [r0, #0x28] ldrh r0, [r4, #0x0] ands r0, r0, #0x400 - ldr r0, _020BD9A0 ; =UNK_020FFA17 + ldr r0, _020BD9A0 ; =UNK_020FFA14 + 3 rsbne r7, r7, #0x0 ldrb r0, [r0, r5, lsl #0x2] add r0, r8, r0, lsl #0x2 @@ -19373,9 +18344,9 @@ _020BD980: .balign 4 _020BD990: .word UNK_021CEF7C _020BD994: .word UNK_020FFA14 -_020BD998: .word UNK_020FFA15 -_020BD99C: .word UNK_020FFA16 -_020BD9A0: .word UNK_020FFA17 +_020BD998: .word UNK_020FFA14 + 1 +_020BD99C: .word UNK_020FFA14 + 2 +_020BD9A0: .word UNK_020FFA14 + 3 arm_func_start FUN_020BD9A4 FUN_020BD9A4: ; 0x020BD9A4 -- cgit v1.2.3 From d4eb3c403ca992d1e5614375e67a4a1f3a6962ae Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 23 May 2021 08:14:46 -0400 Subject: Remove superfluous global labels --- arm9/asm/unk_020ADA84.s | 6 ------ 1 file changed, 6 deletions(-) (limited to 'arm9/asm') diff --git a/arm9/asm/unk_020ADA84.s b/arm9/asm/unk_020ADA84.s index f06eeff0..7aacee03 100644 --- a/arm9/asm/unk_020ADA84.s +++ b/arm9/asm/unk_020ADA84.s @@ -12201,9 +12201,6 @@ _020B838C: .word UNK_021CEE18 arm_func_start FUN_020B8390 FUN_020B8390: ; 0x020B8390 orr r0, r0, r1, lsl #0x4 - - arm_func_start FUN_020B8394 -FUN_020B8394: ; 0x020B8394 ldr r1, [sp, #0x4] orr r0, r0, r2, lsl #0x6 orr r0, r1, r0 @@ -19260,9 +19257,6 @@ FUN_020BE62C: ; 0x020BE62C orrne r1, r1, #0x1 strne r1, [r0, #0x0] bne _020BE658 - - arm_func_start FUN_020BE640 -FUN_020BE640: ; 0x020BE640 ldr r2, [r1, #0x0] str r2, [r0, #0x4] ldr r2, [r1, #0x4] -- cgit v1.2.3 From 466b024d6c4fca0f17a39547096c014654a1d051 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 23 May 2021 08:19:24 -0400 Subject: Add arm_func_end to unk_020ADA84.s --- arm9/asm/unk_020ADA84.s | 434 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 434 insertions(+) (limited to 'arm9/asm') diff --git a/arm9/asm/unk_020ADA84.s b/arm9/asm/unk_020ADA84.s index 7aacee03..b4d467ae 100644 --- a/arm9/asm/unk_020ADA84.s +++ b/arm9/asm/unk_020ADA84.s @@ -716,21 +716,25 @@ UNK_021D1C88: ; 0x021D1C88 FUN_020AE8AC: ; 0x020AE8AC mvn r0, #0x0 bx lr + arm_func_end FUN_020AE8AC arm_func_start FUN_020AE8B4 FUN_020AE8B4: ; 0x020AE8B4 mov r0, #0x0 bx lr + arm_func_end FUN_020AE8B4 arm_func_start FUN_020AE8BC FUN_020AE8BC: ; 0x020AE8BC mvn r0, #0x0 bx lr + arm_func_end FUN_020AE8BC arm_func_start FUN_020AE8C4 FUN_020AE8C4: ; 0x020AE8C4 mov r0, #0x0 bx lr + arm_func_end FUN_020AE8C4 arm_func_start FUN_020AE8CC FUN_020AE8CC: ; 0x020AE8CC @@ -755,6 +759,7 @@ _020AE8E4: ldmia sp!, {pc} .balign 4 _020AE914: .word UNK_021064E4 + arm_func_end FUN_020AE8CC arm_func_start FUN_020AE918 FUN_020AE918: ; 0x020AE918 @@ -779,11 +784,13 @@ _020AE930: ldmia sp!, {pc} .balign 4 _020AE960: .word UNK_021064E4 + arm_func_end FUN_020AE918 arm_func_start FUN_020AE964 FUN_020AE964: ; 0x020AE964 mov r0, #0x0 bx lr + arm_func_end FUN_020AE964 arm_func_start FUN_020AE96C FUN_020AE96C: ; 0x020AE96C @@ -896,6 +903,7 @@ _020AEAE4: .word UNK_021064FC _020AEAE8: .word UNK_021064C8 _020AEAEC: .word UNK_021064D0 _020AEAF0: .word 0x0000FFFF + arm_func_end FUN_020AE96C arm_func_start FUN_020AEAF4 FUN_020AEAF4: @@ -932,6 +940,7 @@ _020AEB2C: .balign 4 _020AEB68: .word UNK_021CCD48 _020AEB6C: .word UNK_021064E4 + arm_func_end FUN_020AEAF4 arm_func_start FUN_020AEB70 FUN_020AEB70: ; 0x020AEB70 @@ -978,6 +987,7 @@ _020AEC00: .word FUN_020AE96C _020AEC04: .word UNK_021064B8 _020AEC08: .word FUN_020AE964 _020AEC0C: .word UNK_021064BC + arm_func_end FUN_020AEB70 arm_func_start FUN_020AEC10 FUN_020AEC10: ; 0x020AEC10 @@ -1002,6 +1012,7 @@ FUN_020AEC10: ; 0x020AEC10 .balign 4 _020AEC58: .word UNK_021064E4 _020AEC5C: .word UNK_021064D0 + arm_func_end FUN_020AEC10 arm_func_start FUN_020AEC60 FUN_020AEC60: @@ -1013,6 +1024,7 @@ FUN_020AEC60: bx lr .balign 4 _020AEC78: .word UNK_021CCD4C + arm_func_end FUN_020AEC60 arm_func_start FUN_020AEC7C FUN_020AEC7C: ; 0x020AEC7C @@ -1024,6 +1036,7 @@ FUN_020AEC7C: ; 0x020AEC7C bx lr .balign 4 _020AEC94: .word UNK_021CCD4C + arm_func_end FUN_020AEC7C arm_func_start FUN_020AEC98 FUN_020AEC98: ; 0x020AEC98 @@ -1035,11 +1048,13 @@ FUN_020AEC98: ; 0x020AEC98 bx lr .balign 4 _020AECB0: .word UNK_021CCD4C + arm_func_end FUN_020AEC98 arm_func_start FUN_020AECB4 FUN_020AECB4: ; 0x020AECB4 mov r0, #0x0 bx lr + arm_func_end FUN_020AECB4 arm_func_start FUN_020AECBC FUN_020AECBC: ; 0x020AECBC @@ -1128,6 +1143,7 @@ _020AEDCC: _020AEDE8: .word 0x0007FFF8 _020AEDEC: .word UNK_021CCD4C _020AEDF0: .word 0x0000FFFF + arm_func_end FUN_020AECBC arm_func_start FUN_020AEDF4 FUN_020AEDF4: ; 0x020AEDF4 @@ -1151,6 +1167,7 @@ _020AEE30: .word FUN_020AECBC _020AEE34: .word UNK_021064C0 _020AEE38: .word FUN_020AECB4 _020AEE3C: .word UNK_021064C4 + arm_func_end FUN_020AEDF4 arm_func_start FUN_020AEE40 FUN_020AEE40: ; 0x020AEE40 @@ -1185,6 +1202,7 @@ FUN_020AEE40: ; 0x020AEE40 ldmia sp!, {r4-r9,pc} .balign 4 _020AEEB4: .word UNK_021CCD58 + arm_func_end FUN_020AEE40 arm_func_start FUN_020AEEB8 FUN_020AEEB8: ; 0x020AEEB8 @@ -1215,6 +1233,7 @@ _020AEEE0: ldmia sp!, {r4-r6,pc} .balign 4 _020AEF18: .word UNK_021CCD58 + arm_func_end FUN_020AEEB8 arm_func_start FUN_020AEF1C FUN_020AEF1C: ; 0x020AEF1C @@ -1227,6 +1246,7 @@ FUN_020AEF1C: ; 0x020AEF1C .balign 4 _020AEF34: .word UNK_021CCD58 _020AEF38: .word FUN_020AEFD4 + arm_func_end FUN_020AEF1C arm_func_start FUN_020AEF3C FUN_020AEF3C: @@ -1245,6 +1265,7 @@ FUN_020AEF3C: sub r1, r1, #0x1 strh r1, [r4, #0xc] ldmia sp!, {r4,pc} + arm_func_end FUN_020AEF3C arm_func_start FUN_020AEF78 FUN_020AEF78: ; 0x020AEF78 @@ -1252,6 +1273,7 @@ FUN_020AEF78: ; 0x020AEF78 ldr r0, [r0, #0x0] add r0, r0, r1, lsl #0x4 bx lr + arm_func_end FUN_020AEF78 arm_func_start FUN_020AEF88 FUN_020AEF88: ; 0x020AEF88 @@ -1259,6 +1281,7 @@ FUN_020AEF88: ; 0x020AEF88 ldr r0, [r0, #0x0] add r0, r0, r1, lsl #0x4 bx lr + arm_func_end FUN_020AEF88 arm_func_start FUN_020AEF98 FUN_020AEF98: ; 0x020AEF98 @@ -1277,6 +1300,7 @@ FUN_020AEF98: ; 0x020AEF98 add r1, r1, #0x1 strh r1, [r4, #0xc] ldmia sp!, {r4,pc} + arm_func_end FUN_020AEF98 arm_func_start FUN_020AEFD4 FUN_020AEFD4: ; 0x020AEFD4 @@ -1287,6 +1311,7 @@ FUN_020AEFD4: ; 0x020AEFD4 strh r2, [r0, #0xc] str r2, [r0, #0x10] bx lr + arm_func_end FUN_020AEFD4 arm_func_start FUN_020AEFF0 FUN_020AEFF0: ; 0x020AEFF0 @@ -1307,6 +1332,7 @@ FUN_020AEFF0: ; 0x020AEFF0 ldmia sp!, {r4-r5,pc} .balign 4 _020AF02C: .word UNK_020FF7D4 + arm_func_end FUN_020AEFF0 arm_func_start GXS_LoadOBJ_2 GXS_LoadOBJ_2: @@ -1314,6 +1340,7 @@ GXS_LoadOBJ_2: bx r12 .balign 4 _020AF038: .word GXS_LoadOBJ + arm_func_end GXS_LoadOBJ_2 arm_func_start GXS_LoadOAM_2 GXS_LoadOAM_2: ; 0x020AF03C @@ -1321,6 +1348,7 @@ GXS_LoadOAM_2: ; 0x020AF03C bx r12 .balign 4 _020AF044: .word GXS_LoadOAM + arm_func_end GXS_LoadOAM_2 arm_func_start FUN_020AF048 FUN_020AF048: ; 0x020AF048 @@ -1335,6 +1363,7 @@ FUN_020AF048: ; 0x020AF048 bl GXS_LoadBGExtPltt bl GXS_EndLoadBGExtPltt ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AF048 arm_func_start FUN_020AF074 FUN_020AF074: ; 0x020AF074 @@ -1349,6 +1378,7 @@ FUN_020AF074: ; 0x020AF074 bl GXS_LoadOBJExtPltt bl GXS_EndLoadOBJExtPltt ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AF074 arm_func_start GXS_LoadBGPltt_2 GXS_LoadBGPltt_2: ; 0x020AF0A0 @@ -1356,6 +1386,7 @@ GXS_LoadBGPltt_2: ; 0x020AF0A0 bx r12 .balign 4 _020AF0A8: .word GXS_LoadBGPltt + arm_func_end GXS_LoadBGPltt_2 arm_func_start GXS_LoadOBJPltt_2 GXS_LoadOBJPltt_2: ; 0x020AF0AC @@ -1363,6 +1394,7 @@ GXS_LoadOBJPltt_2: ; 0x020AF0AC bx r12 .balign 4 _020AF0B4: .word GXS_LoadOBJPltt + arm_func_end GXS_LoadOBJPltt_2 arm_func_start GXS_LoadBG3Scr_3 GXS_LoadBG3Scr_3: ; 0x020AF0B8 @@ -1370,6 +1402,7 @@ GXS_LoadBG3Scr_3: ; 0x020AF0B8 bx r12 .balign 4 _020AF0C0: .word GXS_LoadBG3Scr + arm_func_end GXS_LoadBG3Scr_3 arm_func_start GXS_LoadBG2Scr_3 GXS_LoadBG2Scr_3: ; 0x020AF0C4 @@ -1377,6 +1410,7 @@ GXS_LoadBG2Scr_3: ; 0x020AF0C4 bx r12 .balign 4 _020AF0CC: .word GXS_LoadBG2Scr + arm_func_end GXS_LoadBG2Scr_3 arm_func_start GXS_LoadBG3Scr_2 GXS_LoadBG3Scr_2: ; 0x020AF0D0 @@ -1384,6 +1418,7 @@ GXS_LoadBG3Scr_2: ; 0x020AF0D0 bx r12 .balign 4 _020AF0D8: .word GXS_LoadBG3Scr + arm_func_end GXS_LoadBG3Scr_2 arm_func_start GXS_LoadBG2Scr_2 GXS_LoadBG2Scr_2: ; 0x020AF0DC @@ -1391,6 +1426,7 @@ GXS_LoadBG2Scr_2: ; 0x020AF0DC bx r12 .balign 4 _020AF0E4: .word GXS_LoadBG2Scr + arm_func_end GXS_LoadBG2Scr_2 arm_func_start GXS_LoadBG1Scr_2 GXS_LoadBG1Scr_2: ; 0x020AF0E8 @@ -1398,6 +1434,7 @@ GXS_LoadBG1Scr_2: ; 0x020AF0E8 bx r12 .balign 4 _020AF0F0: .word GXS_LoadBG1Scr + arm_func_end GXS_LoadBG1Scr_2 arm_func_start GXS_LoadBG0Scr_2 GXS_LoadBG0Scr_2: ; 0x020AF0F4 @@ -1405,6 +1442,7 @@ GXS_LoadBG0Scr_2: ; 0x020AF0F4 bx r12 .balign 4 _020AF0FC: .word GXS_LoadBG0Scr + arm_func_end GXS_LoadBG0Scr_2 arm_func_start GXS_LoadBG3Char_2 GXS_LoadBG3Char_2: ; 0x020AF100 @@ -1412,6 +1450,7 @@ GXS_LoadBG3Char_2: ; 0x020AF100 bx r12 .balign 4 _020AF108: .word GXS_LoadBG3Char + arm_func_end GXS_LoadBG3Char_2 arm_func_start GXS_LoadBG2Char_2 GXS_LoadBG2Char_2: ; 0x020AF10C @@ -1419,6 +1458,7 @@ GXS_LoadBG2Char_2: ; 0x020AF10C bx r12 .balign 4 _020AF114: .word GXS_LoadBG2Char + arm_func_end GXS_LoadBG2Char_2 arm_func_start GXS_LoadBG1Char_2 GXS_LoadBG1Char_2: ; 0x020AF118 @@ -1426,6 +1466,7 @@ GXS_LoadBG1Char_2: ; 0x020AF118 bx r12 .balign 4 _020AF120: .word GXS_LoadBG1Char + arm_func_end GXS_LoadBG1Char_2 arm_func_start GXS_LoadBG0Char_2 GXS_LoadBG0Char_2: ; 0x020AF124 @@ -1433,6 +1474,7 @@ GXS_LoadBG0Char_2: ; 0x020AF124 bx r12 .balign 4 _020AF12C: .word GXS_LoadBG0Char + arm_func_end GXS_LoadBG0Char_2 arm_func_start GX_LoadOBJ_2 GX_LoadOBJ_2: ; 0x020AF130 @@ -1440,6 +1482,7 @@ GX_LoadOBJ_2: ; 0x020AF130 bx r12 .balign 4 _020AF138: .word GX_LoadOBJ + arm_func_end GX_LoadOBJ_2 arm_func_start GX_LoadOAM_2 GX_LoadOAM_2: ; 0x020AF13C @@ -1447,6 +1490,7 @@ GX_LoadOAM_2: ; 0x020AF13C bx r12 .balign 4 _020AF144: .word GX_LoadOAM + arm_func_end GX_LoadOAM_2 arm_func_start FUN_020AF148 FUN_020AF148: ; 0x020AF148 @@ -1461,6 +1505,7 @@ FUN_020AF148: ; 0x020AF148 bl GX_LoadBGExtPltt bl GX_EndLoadBGExtPltt ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AF148 arm_func_start FUN_020AF174 FUN_020AF174: ; 0x020AF174 @@ -1475,6 +1520,7 @@ FUN_020AF174: ; 0x020AF174 bl GX_LoadOBJExtPltt bl GX_EndLoadOBJExtPltt ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AF174 arm_func_start GX_LoadBGPltt_2 GX_LoadBGPltt_2: ; 0x020AF1A0 @@ -1482,6 +1528,7 @@ GX_LoadBGPltt_2: ; 0x020AF1A0 bx r12 .balign 4 _020AF1A8: .word GX_LoadBGPltt + arm_func_end GX_LoadBGPltt_2 arm_func_start GX_LoadOBJPltt_2 GX_LoadOBJPltt_2: ; 0x020AF1AC @@ -1489,6 +1536,7 @@ GX_LoadOBJPltt_2: ; 0x020AF1AC bx r12 .balign 4 _020AF1B4: .word GX_LoadOBJPltt + arm_func_end GX_LoadOBJPltt_2 arm_func_start GX_LoadBG3Scr_3 GX_LoadBG3Scr_3: ; 0x020AF1B8 @@ -1496,6 +1544,7 @@ GX_LoadBG3Scr_3: ; 0x020AF1B8 bx r12 .balign 4 _020AF1C0: .word GX_LoadBG3Scr + arm_func_end GX_LoadBG3Scr_3 arm_func_start GX_LoadBG2Scr_3 GX_LoadBG2Scr_3: ; 0x020AF1C4 @@ -1503,6 +1552,7 @@ GX_LoadBG2Scr_3: ; 0x020AF1C4 bx r12 .balign 4 _020AF1CC: .word GX_LoadBG2Scr + arm_func_end GX_LoadBG2Scr_3 arm_func_start GX_LoadBG3Scr_2 GX_LoadBG3Scr_2: ; 0x020AF1D0 @@ -1510,6 +1560,7 @@ GX_LoadBG3Scr_2: ; 0x020AF1D0 bx r12 .balign 4 _020AF1D8: .word GX_LoadBG3Scr + arm_func_end GX_LoadBG3Scr_2 arm_func_start GX_LoadBG2Scr_2 GX_LoadBG2Scr_2: ; 0x020AF1DC @@ -1517,6 +1568,7 @@ GX_LoadBG2Scr_2: ; 0x020AF1DC bx r12 .balign 4 _020AF1E4: .word GX_LoadBG2Scr + arm_func_end GX_LoadBG2Scr_2 arm_func_start GX_LoadBG1Scr_2 GX_LoadBG1Scr_2: ; 0x020AF1E8 @@ -1524,6 +1576,7 @@ GX_LoadBG1Scr_2: ; 0x020AF1E8 bx r12 .balign 4 _020AF1F0: .word GX_LoadBG1Scr + arm_func_end GX_LoadBG1Scr_2 arm_func_start GX_LoadBG0Scr_2 GX_LoadBG0Scr_2: ; 0x020AF1F4 @@ -1531,6 +1584,7 @@ GX_LoadBG0Scr_2: ; 0x020AF1F4 bx r12 .balign 4 _020AF1FC: .word GX_LoadBG0Scr + arm_func_end GX_LoadBG0Scr_2 arm_func_start GX_LoadBG3Char_2 GX_LoadBG3Char_2: ; 0x020AF200 @@ -1538,6 +1592,7 @@ GX_LoadBG3Char_2: ; 0x020AF200 bx r12 .balign 4 _020AF208: .word GX_LoadBG3Char + arm_func_end GX_LoadBG3Char_2 arm_func_start GX_LoadBG2Char_2 GX_LoadBG2Char_2: ; 0x020AF20C @@ -1545,6 +1600,7 @@ GX_LoadBG2Char_2: ; 0x020AF20C bx r12 .balign 4 _020AF214: .word GX_LoadBG2Char + arm_func_end GX_LoadBG2Char_2 arm_func_start GX_LoadBG1Char_2 GX_LoadBG1Char_2: ; 0x020AF218 @@ -1552,6 +1608,7 @@ GX_LoadBG1Char_2: ; 0x020AF218 bx r12 .balign 4 _020AF220: .word GX_LoadBG1Char + arm_func_end GX_LoadBG1Char_2 arm_func_start GX_LoadBG0Char_2 GX_LoadBG0Char_2: ; 0x020AF224 @@ -1559,6 +1616,7 @@ GX_LoadBG0Char_2: ; 0x020AF224 bx r12 .balign 4 _020AF22C: .word GX_LoadBG0Char + arm_func_end GX_LoadBG0Char_2 arm_func_start FUN_020AF230 FUN_020AF230: ; 0x020AF230 @@ -1573,6 +1631,7 @@ FUN_020AF230: ; 0x020AF230 bl GX_EndLoadClearImage add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020AF230 arm_func_start FUN_020AF25C FUN_020AF25C: ; 0x020AF25C @@ -1587,6 +1646,7 @@ FUN_020AF25C: ; 0x020AF25C bl GX_EndLoadClearImage add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020AF25C arm_func_start FUN_020AF288 FUN_020AF288: ; 0x020AF288 @@ -1601,6 +1661,7 @@ FUN_020AF288: ; 0x020AF288 bl GX_LoadTexPltt bl GX_EndLoadTexPltt ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AF288 arm_func_start FUN_020AF2B4 FUN_020AF2B4: ; 0x020AF2B4 @@ -1615,6 +1676,7 @@ FUN_020AF2B4: ; 0x020AF2B4 bl GX_LoadTex bl GX_EndLoadTex ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AF2B4 arm_func_start FUN_020AF2E0 FUN_020AF2E0: ; 0x020AF2E0 @@ -1623,6 +1685,7 @@ FUN_020AF2E0: ; 0x020AF2E0 moveq r0, #0x1 movne r0, #0x0 bx lr + arm_func_end FUN_020AF2E0 arm_func_start FUN_020AF2F4 FUN_020AF2F4: ; 0x020AF2F4 @@ -1632,6 +1695,7 @@ FUN_020AF2F4: ; 0x020AF2F4 moveq r0, #0x1 movne r0, #0x0 bx lr + arm_func_end FUN_020AF2F4 arm_func_start FUN_020AF30C FUN_020AF30C: ; 0x020AF30C @@ -1645,6 +1709,7 @@ FUN_020AF30C: ; 0x020AF30C mov r0, r0, lsr #0x10 add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020AF30C arm_func_start FUN_020AF334 FUN_020AF334: @@ -1737,6 +1802,7 @@ _020AF418: mov r0, #0x1 add sp, sp, #0x10 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AF334 arm_func_start FUN_020AF488 FUN_020AF488: @@ -1825,6 +1891,7 @@ _020AF5B8: mov r0, #0x0 str r0, [r2, #0x0] ldmia sp!, {r4-r10,pc} + arm_func_end FUN_020AF488 arm_func_start FUN_020AF5C4 FUN_020AF5C4: @@ -1835,6 +1902,7 @@ FUN_020AF5C4: bl FUN_020AF488 add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020AF5C4 arm_func_start FUN_020AF5E0 FUN_020AF5E0: ; 0x020AF5E0 @@ -1866,6 +1934,7 @@ _020AF640: mov r0, #0x0 add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020AF5E0 arm_func_start FUN_020AF64C FUN_020AF64C: ; 0x020AF64C @@ -1890,12 +1959,14 @@ _020AF684: add r1, r0, r1, lsl #0x4 str r2, [r1, #-0x4] ldmia sp!, {r4,pc} + arm_func_end FUN_020AF64C arm_func_start FUN_020AF698 FUN_020AF698: ; 0x020AF698 mov r1, #0x0 str r1, [r0, #0x0] bx lr + arm_func_end FUN_020AF698 arm_func_start FUN_020AF6A4 FUN_020AF6A4: ; 0x020AF6A4 @@ -2034,6 +2105,7 @@ _020AF884: .word UNK_020FF864 _020AF888: .word UNK_021CCD6C _020AF88C: .word UNK_021CCD70 _020AF890: .word UNK_021CCD74 + arm_func_end FUN_020AF6A4 arm_func_start FUN_020AF894 FUN_020AF894: ; 0x020AF894 @@ -2075,6 +2147,7 @@ _020AF90C: .word 0x0000FFFF _020AF910: .word UNK_021CCD70 _020AF914: .word UNK_021CCD74 _020AF918: .word UNK_021CCD6C + arm_func_end FUN_020AF894 arm_func_start FUN_020AF91C FUN_020AF91C: ; 0x020AF91C @@ -2123,6 +2196,7 @@ _020AF9B4: .word UNK_021CCD70 _020AF9B8: .word UNK_021CCD74 _020AF9BC: .word UNK_021CCD6C _020AF9C0: .word 0x0000FFFF + arm_func_end FUN_020AF91C arm_func_start FUN_020AF9C4 FUN_020AF9C4: ; 0x020AF9C4 @@ -2152,11 +2226,13 @@ _020AFA18: .word FUN_020AF91C _020AFA1C: .word UNK_021064B8 _020AFA20: .word FUN_020AF894 _020AFA24: .word UNK_021064BC + arm_func_end FUN_020AF9C4 arm_func_start FUN_020AFA28 FUN_020AFA28: ; 0x020AFA28 mov r0, r0, lsl #0x4 bx lr + arm_func_end FUN_020AFA28 arm_func_start FUN_020AFA30 FUN_020AFA30: @@ -2181,6 +2257,7 @@ FUN_020AFA30: .balign 4 _020AFA78: .word UNK_021CCD88 _020AFA7C: .word UNK_021CCD8C + arm_func_end FUN_020AFA30 arm_func_start FUN_020AFA80 FUN_020AFA80: ; 0x020AFA80 @@ -2206,6 +2283,7 @@ FUN_020AFA80: ; 0x020AFA80 _020AFAC8: .word 0x0000FFFF _020AFACC: .word UNK_021CCD88 _020AFAD0: .word UNK_021CCD8C + arm_func_end FUN_020AFA80 arm_func_start FUN_020AFAD4 FUN_020AFAD4: ; 0x020AFAD4 @@ -2265,6 +2343,7 @@ _020AFB98: .word 0x0007FFF8 _020AFB9C: .word UNK_021CCD88 _020AFBA0: .word UNK_021CCD8C _020AFBA4: .word 0x0000FFFF + arm_func_end FUN_020AFAD4 arm_func_start FUN_020AFBA8 FUN_020AFBA8: ; 0x020AFBA8 @@ -2290,11 +2369,13 @@ _020AFBEC: .word FUN_020AFAD4 _020AFBF0: .word UNK_021064C0 _020AFBF4: .word FUN_020AFA80 _020AFBF8: .word UNK_021064C4 + arm_func_end FUN_020AFBA8 arm_func_start FUN_020AFBFC FUN_020AFBFC: ; 0x020AFBFC mov r0, r0, lsl #0x4 bx lr + arm_func_end FUN_020AFBFC arm_func_start FUN_020AFC04 FUN_020AFC04: ; 0x020AFC04 @@ -2304,6 +2385,7 @@ FUN_020AFC04: ; 0x020AFC04 addhi r0, r0, r1, lsl #0x4 movls r0, #0x0 bx lr + arm_func_end FUN_020AFC04 arm_func_start FUN_020AFC1C FUN_020AFC1C: ; 0x020AFC1C @@ -2405,6 +2487,7 @@ _020AFD6C: blo _020AFD14 add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} + arm_func_end FUN_020AFC1C arm_func_start thunk_FUN_020afda0 thunk_FUN_020afda0: ; 0x020AFD88 @@ -2412,6 +2495,7 @@ thunk_FUN_020afda0: ; 0x020AFD88 bx r12 .balign 4 _020AFD90: .word FUN_020AFDA0 + arm_func_end thunk_FUN_020afda0 arm_func_start thunk_FUN_020afda0_2 thunk_FUN_020afda0_2: ; 0x020AFD94 @@ -2419,6 +2503,7 @@ thunk_FUN_020afda0_2: ; 0x020AFD94 bx r12 .balign 4 _020AFD9C: .word FUN_020AFDA0 + arm_func_end thunk_FUN_020afda0_2 arm_func_start FUN_020AFDA0 FUN_020AFDA0: ; 0x020AFDA0 @@ -2441,6 +2526,7 @@ FUN_020AFDA0: ; 0x020AFDA0 ldmia sp!, {r4-r5,pc} .balign 4 _020AFDE4: .word 0x41424E4B + arm_func_end FUN_020AFDA0 arm_func_start FUN_020AFDE8 FUN_020AFDE8: ; 0x020AFDE8 @@ -2488,6 +2574,7 @@ _020AFE6C: ldr r0, [r5, #0x14] bl FUN_020AFF00 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AFDE8 arm_func_start FUN_020AFE8C FUN_020AFE8C: ; 0x020AFE8C @@ -2502,6 +2589,7 @@ FUN_020AFE8C: ; 0x020AFE8C ldreq r0, [r0, #0x4] addeq r0, r0, r1, lsl #0x3 bx lr + arm_func_end FUN_020AFE8C arm_func_start FUN_020AFEB8 FUN_020AFEB8: ; 0x020AFEB8 @@ -2524,6 +2612,7 @@ FUN_020AFEB8: ; 0x020AFEB8 ldmia sp!, {r4-r5,pc} .balign 4 _020AFEFC: .word 0x4345424B + arm_func_end FUN_020AFEB8 arm_func_start FUN_020AFF00 FUN_020AFF00: ; 0x020AFF00 @@ -2532,6 +2621,7 @@ FUN_020AFF00: ; 0x020AFF00 bx r12 .balign 4 _020AFF0C: .word FUN_020B01B0 + arm_func_end FUN_020AFF00 arm_func_start FUN_020AFF10 FUN_020AFF10: ; 0x020AFF10 @@ -2544,6 +2634,7 @@ FUN_020AFF10: ; 0x020AFF10 ldreq r0, [r0, #0x4] addeq r0, r0, r1, lsl #0x3 bx lr + arm_func_end FUN_020AFF10 arm_func_start FUN_020AFF34 FUN_020AFF34: ; 0x020AFF34 @@ -2553,6 +2644,7 @@ FUN_020AFF34: ; 0x020AFF34 addcc r0, r0, r1, lsl #0x3 movcs r0, #0x0 bx lr + arm_func_end FUN_020AFF34 arm_func_start FUN_020AFF4C FUN_020AFF4C: ; 0x020AFF4C @@ -2589,6 +2681,7 @@ _020AFFA8: ldr r0, [r0, #0x10] bl FUN_020AFFC8 ldmia sp!, {r4,pc} + arm_func_end FUN_020AFF4C arm_func_start FUN_020AFFC8 FUN_020AFFC8: ; 0x020AFFC8 @@ -2597,6 +2690,7 @@ FUN_020AFFC8: ; 0x020AFFC8 bx r12 .balign 4 _020AFFD4: .word FUN_020B01B0 + arm_func_end FUN_020AFFC8 arm_func_start FUN_020AFFD8 FUN_020AFFD8: ; 0x020AFFD8 @@ -2619,6 +2713,7 @@ FUN_020AFFD8: ; 0x020AFFD8 ldmia sp!, {r4-r5,pc} .balign 4 _020B001C: .word 0x4D43424B + arm_func_end FUN_020AFFD8 arm_func_start FUN_020B0020 FUN_020B0020: ; 0x020B0020 @@ -2626,6 +2721,7 @@ FUN_020B0020: ; 0x020B0020 add r1, r1, r0 str r1, [r0, #0x14] bx lr + arm_func_end FUN_020B0020 arm_func_start FUN_020B0030 FUN_020B0030: ; 0x020B0030 @@ -2648,6 +2744,7 @@ FUN_020B0030: ; 0x020B0030 ldmia sp!, {r4-r5,pc} .balign 4 _020B0074: .word 0x43484152 + arm_func_end FUN_020B0030 arm_func_start FUN_020B0078 FUN_020B0078: ; 0x020B0078 @@ -2655,6 +2752,7 @@ FUN_020B0078: ; 0x020B0078 add r1, r1, r0 str r1, [r0, #0x14] bx lr + arm_func_end FUN_020B0078 arm_func_start FUN_020B0088 FUN_020B0088: ; 0x020B0088 @@ -2677,6 +2775,7 @@ FUN_020B0088: ; 0x020B0088 ldmia sp!, {r4-r5,pc} .balign 4 _020B00CC: .word 0x43484152 + arm_func_end FUN_020B0088 arm_func_start FUN_020B00D0 FUN_020B00D0: ; 0x020B00D0 @@ -2684,6 +2783,7 @@ FUN_020B00D0: ; 0x020B00D0 add r1, r1, r0 str r1, [r0, #0xc] bx lr + arm_func_end FUN_020B00D0 arm_func_start FUN_020B00E0 FUN_020B00E0: ; 0x020B00E0 @@ -2691,6 +2791,7 @@ FUN_020B00E0: ; 0x020B00E0 add r1, r1, r0 str r1, [r0, #0x4] bx lr + arm_func_end FUN_020B00E0 arm_func_start FUN_020B00F0 FUN_020B00F0: ; 0x020B00F0 @@ -2713,6 +2814,7 @@ FUN_020B00F0: ; 0x020B00F0 ldmia sp!, {r4-r5,pc} .balign 4 _020B0134: .word 0x50434D50 + arm_func_end FUN_020B00F0 arm_func_start FUN_020B0138 FUN_020B0138: ; 0x020B0138 @@ -2735,6 +2837,7 @@ FUN_020B0138: ; 0x020B0138 ldmia sp!, {r4-r5,pc} .balign 4 _020B017C: .word 0x504C5454 + arm_func_end FUN_020B0138 arm_func_start FUN_020B0180 FUN_020B0180: ; 0x020B0180 @@ -2751,6 +2854,7 @@ FUN_020B0180: ; 0x020B0180 ldmia sp!, {r4,pc} .balign 4 _020B01AC: .word 0x5343524E + arm_func_end FUN_020B0180 arm_func_start FUN_020B01B0 FUN_020B01B0: ; 0x020B01B0 @@ -2773,6 +2877,7 @@ _020B01CC: cmp r12, r2 blo _020B01CC bx lr + arm_func_end FUN_020B01B0 arm_func_start FUN_020B01F8 FUN_020B01F8: @@ -2800,6 +2905,7 @@ _020B0244: mov r0, #0x0 add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020B01F8 arm_func_start FUN_020B0250 FUN_020B0250: ; 0x020B0250 @@ -2834,6 +2940,7 @@ FUN_020B0250: ; 0x020B0250 .balign 4 _020B02C0: .word 0x04000470 _020B02C4: .word 0x0400046C + arm_func_end FUN_020B0250 arm_func_start FUN_020B02C8 FUN_020B02C8: ; 0x020B02C8 @@ -2868,6 +2975,7 @@ _020B0330: .word 0xBFFF0000 _020B0334: .word 0x04000580 _020B0338: .word 0x0400044C _020B033C: .word 0x04000440 + arm_func_end FUN_020B02C8 arm_func_start FUN_020B0340 FUN_020B0340: ; 0x020B0340 @@ -2922,6 +3030,7 @@ _020B03F8: .word 0x04000488 _020B03FC: .word 0x0400048C _020B0400: .word 0x10001000 _020B0404: .word 0x04000504 + arm_func_end FUN_020B0340 arm_func_start FUN_020B0408 FUN_020B0408: @@ -2939,6 +3048,7 @@ _020B0428: _020B0430: mov r0, #0x0 bx lr + arm_func_end FUN_020B0408 arm_func_start FUN_020B0438 FUN_020B0438: ; 0x020B0438 @@ -2947,6 +3057,7 @@ FUN_020B0438: ; 0x020B0438 bx r12 .balign 4 _020B0444: .word FUN_020B0448 + arm_func_end FUN_020B0438 arm_func_start FUN_020B0448 FUN_020B0448: ; 0x020B0448 @@ -2977,6 +3088,7 @@ _020B0494: bx r12 .balign 4 _020B04A4: .word FUN_020B0534 + arm_func_end FUN_020B0448 arm_func_start FUN_020B04A8 FUN_020B04A8: ; 0x020B04A8 @@ -2986,6 +3098,7 @@ FUN_020B04A8: ; 0x020B04A8 str r1, [r0, #0x8] strh r1, [r0, #0xc] bx lr + arm_func_end FUN_020B04A8 arm_func_start FUN_020B04C0 FUN_020B04C0: ; 0x020B04C0 @@ -3004,6 +3117,7 @@ FUN_020B04C0: ; 0x020B04C0 str r1, [r4, #0x14] str r1, [r4, #0x18] ldmia sp!, {r4,pc} + arm_func_end FUN_020B04C0 arm_func_start FUN_020B04FC FUN_020B04FC: ; 0x020B04FC @@ -3014,6 +3128,7 @@ FUN_020B04FC: ; 0x020B04FC mov r0, r0, lsl #0xd mov r0, r0, lsr #0x10 bx lr + arm_func_end FUN_020B04FC arm_func_start FUN_020B0518 FUN_020B0518: @@ -3024,6 +3139,7 @@ FUN_020B0518: movne r1, #0x0 strne r1, [r4, #0xc] ldmia sp!, {r4,pc} + arm_func_end FUN_020B0518 arm_func_start FUN_020B0534 FUN_020B0534: @@ -3143,12 +3259,14 @@ _020B06D0: bne _020B058C mov r0, r7 ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020B0534 arm_func_start FUN_020B06E0 FUN_020B06E0: ; 0x020B06E0 ldr r0, [r0, #0x0] ldr r0, [r0, #0x0] bx lr + arm_func_end FUN_020B06E0 arm_func_start FUN_020B06EC FUN_020B06EC: @@ -3161,6 +3279,7 @@ FUN_020B06EC: movcc r0, #0x1 movcs r0, #0x0 bx lr + arm_func_end FUN_020B06EC arm_func_start FUN_020B0710 FUN_020B0710: ; 0x020B0710 @@ -3243,6 +3362,7 @@ _020B0800: cmp r2, r1 strcc r1, [r4, #0x0] ldmia sp!, {r4,pc} + arm_func_end FUN_020B0710 arm_func_start FUN_020B0830 FUN_020B0830: ; 0x020B0830 @@ -3263,6 +3383,7 @@ _020B0854: movne r0, r0, lsr #0x10 moveq r0, #0x0 bx lr + arm_func_end FUN_020B0830 arm_func_start FUN_020B0870 FUN_020B0870: ; 0x020B0870 @@ -3272,6 +3393,7 @@ FUN_020B0870: ; 0x020B0870 mov r0, r4 bl FUN_020B0888 ldmia sp!, {r4,pc} + arm_func_end FUN_020B0870 arm_func_start FUN_020B0888 FUN_020B0888: ; 0x020B0888 @@ -3357,6 +3479,7 @@ _020B0998: .balign 4 _020B09AC: .word UNK_021CCDA0 _020B09B0: .word GXi_DmaId + arm_func_end FUN_020B0888 arm_func_start FUN_020B09B4 FUN_020B09B4: ; 0x020B09B4 @@ -3495,6 +3618,7 @@ _020B0B40: .balign 4 _020B0BA8: .word UNK_021CCDA0 _020B0BAC: .word UNK_0210655C + arm_func_end FUN_020B09B4 arm_func_start FUN_020B0BB0 FUN_020B0BB0: ; 0x020B0BB0 @@ -3551,6 +3675,7 @@ _020B0BDC: .balign 4 _020B0C74: .word 0x0000FFFE _020B0C78: .word UNK_021CCDA0 + arm_func_end FUN_020B0BB0 arm_func_start FUN_020B0C7C FUN_020B0C7C: ; 0x020B0C7C @@ -3613,6 +3738,7 @@ _020B0D48: .balign 4 _020B0D50: .word UNK_021CCDA0 _020B0D54: .word 0x0000FFFE + arm_func_end FUN_020B0C7C arm_func_start FUN_020B0D58 FUN_020B0D58: ; 0x020B0D58 @@ -3676,6 +3802,7 @@ _020B0E24: ldmia sp!, {r4-r5,pc} .balign 4 _020B0E30: .word UNK_021CCDA0 + arm_func_end FUN_020B0D58 arm_func_start FUN_020B0E34 FUN_020B0E34: ; 0x020B0E34 @@ -3790,6 +3917,7 @@ _020B0F98: _020B0FB4: .word UNK_021CCDA0 _020B0FB8: .word 0x0000FFFF _020B0FBC: .word UNK_021CCD9C + arm_func_end FUN_020B0E34 arm_func_start FUN_020B0FC0 FUN_020B0FC0: ; 0x020B0FC0 @@ -3844,6 +3972,7 @@ _020B1078: .word UNK_021CD820 _020B107C: .word UNK_021CD2A0 _020B1080: .word UNK_021CD7E0 _020B1084: .word UNK_021CDD20 + arm_func_end FUN_020B0FC0 arm_func_start FUN_020B1088 FUN_020B1088: ; 0x020B1088 @@ -3852,6 +3981,7 @@ FUN_020B1088: ; 0x020B1088 bx r12 .balign 4 _020B1094: .word MIi_CpuCopy16 + arm_func_end FUN_020B1088 arm_func_start FUN_020B1098 FUN_020B1098: ; 0x020B1098 @@ -3862,22 +3992,26 @@ FUN_020B1098: ; 0x020B1098 .balign 4 _020B10A8: .word 0x07000400 _020B10AC: .word MIi_CpuCopy16 + arm_func_end FUN_020B1098 arm_func_start FUN_020B10B0 FUN_020B10B0: ; 0x020B10B0 mov r1, r1, lsl #0x1 ldrh r0, [r0, r1] bx lr + arm_func_end FUN_020B10B0 arm_func_start FUN_020B10BC FUN_020B10BC: ; 0x020B10BC ldr r0, [r0, r1, lsl #0x2] bx lr + arm_func_end FUN_020B10BC arm_func_start FUN_020B10C4 FUN_020B10C4: str r2, [r0, r1, lsl #0x2] bx lr + arm_func_end FUN_020B10C4 arm_func_start FUN_020B10CC FUN_020B10CC: @@ -3889,6 +4023,7 @@ _020B10D4: cmp r2, #0x3 blt _020B10D4 bx lr + arm_func_end FUN_020B10CC arm_func_start FUN_020B10E8 FUN_020B10E8: ; 0x020B10E8 @@ -3986,6 +4121,7 @@ _020B1210: bl FUN_020B19D0 add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B10E8 arm_func_start FUN_020B1240 FUN_020B1240: ; 0x020B1240 @@ -4059,6 +4195,7 @@ _020B1318: bl FUN_020B19D0 add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} + arm_func_end FUN_020B1240 arm_func_start FUN_020B1340 FUN_020B1340: ; 0x020B1340 @@ -4210,6 +4347,7 @@ _020B14E8: .balign 4 _020B1520: .word 0xFFCFFFEF _020B1524: .word 0x04001000 + arm_func_end FUN_020B1340 arm_func_start FUN_020B1528 FUN_020B1528: ; 0x020B1528 @@ -4387,6 +4525,7 @@ _020B1728: .balign 4 _020B1760: .word 0xFFCFFFEF _020B1764: .word 0x04001000 + arm_func_end FUN_020B1528 arm_func_start FUN_020B1768 FUN_020B1768: ; 0x020B1768 @@ -4564,6 +4703,7 @@ _020B1968: .balign 4 _020B19A0: .word 0xFFCFFFEF _020B19A4: .word 0x04001000 + arm_func_end FUN_020B1768 arm_func_start FUN_020B19A8 FUN_020B19A8: @@ -4574,18 +4714,21 @@ FUN_020B19A8: movne r0, #0x1 moveq r0, #0x0 bx lr + arm_func_end FUN_020B19A8 arm_func_start FUN_020B19C4 FUN_020B19C4: ; 0x020B19C4 add r0, r0, r1, lsl #0x2 ldr r0, [r0, #0x8] bx lr + arm_func_end FUN_020B19C4 arm_func_start FUN_020B19D0 FUN_020B19D0: ; 0x020B19D0 add r0, r0, r1, lsl #0x2 str r2, [r0, #0x8] bx lr + arm_func_end FUN_020B19D0 arm_func_start FUN_020B19DC FUN_020B19DC: ; 0x020B19DC @@ -4598,6 +4741,7 @@ _020B19E4: cmp r3, #0x3 blt _020B19E4 bx lr + arm_func_end FUN_020B19DC arm_func_start FUN_020B19FC FUN_020B19FC: @@ -4607,16 +4751,19 @@ FUN_020B19FC: movne r0, #0x1 moveq r0, #0x0 bx lr + arm_func_end FUN_020B19FC arm_func_start FUN_020B1A14 FUN_020B1A14: ; 0x020B1A14 ldr r0, [r0, r1, lsl #0x2] bx lr + arm_func_end FUN_020B1A14 arm_func_start FUN_020B1A1C FUN_020B1A1C: ; 0x020B1A1C str r2, [r0, r1, lsl #0x2] bx lr + arm_func_end FUN_020B1A1C arm_func_start FUN_020B1A24 FUN_020B1A24: ; 0x020B1A24 @@ -4628,6 +4775,7 @@ _020B1A2C: cmp r2, #0x3 blt _020B1A2C bx lr + arm_func_end FUN_020B1A24 arm_func_start FUN_020B1A40 FUN_020B1A40: ; 0x020B1A40 @@ -4641,6 +4789,7 @@ FUN_020B1A40: ; 0x020B1A40 str r0, [r4, #0x4] str r0, [r4, #0x8] ldmia sp!, {r4,pc} + arm_func_end FUN_020B1A40 arm_func_start FUN_020B1A68 FUN_020B1A68: @@ -4649,6 +4798,7 @@ FUN_020B1A68: bx r12 .balign 4 _020B1A74: .word FUN_020B1A40 + arm_func_end FUN_020B1A68 arm_func_start FUN_020B1A78 FUN_020B1A78: ; 0x020B1A78 @@ -4660,6 +4810,7 @@ FUN_020B1A78: ; 0x020B1A78 streq r1, [r0, #0x4] streq r2, [r0, #0x8] bx lr + arm_func_end FUN_020B1A78 arm_func_start FUN_020B1A98 FUN_020B1A98: ; 0x020B1A98 @@ -4670,6 +4821,7 @@ FUN_020B1A98: ; 0x020B1A98 streqh r2, [r0, #0x12] streqh r1, [r0, #0x10] bx lr + arm_func_end FUN_020B1A98 arm_func_start FUN_020B1AB4 FUN_020B1AB4: ; 0x020B1AB4 @@ -4681,6 +4833,7 @@ FUN_020B1AB4: ; 0x020B1AB4 streqh r1, [r0, #0xc] streqh r2, [r0, #0xe] bx lr + arm_func_end FUN_020B1AB4 arm_func_start FUN_020B1AD4 FUN_020B1AD4: ; 0x020B1AD4 @@ -4694,6 +4847,7 @@ FUN_020B1AD4: ; 0x020B1AD4 bx r12 .balign 4 _020B1AF4: .word FUN_020B1A68 + arm_func_end FUN_020B1AD4 arm_func_start FUN_020B1AF8 FUN_020B1AF8: ; 0x020B1AF8 @@ -4943,6 +5097,7 @@ _020B1E94: .word UNK_020FF894 _020B1E98: .word 0xC1FFFCFF _020B1E9C: .word 0x000001FF _020B1EA0: .word 0xFE00FF00 + arm_func_end FUN_020B1AF8 arm_func_start FUN_020B1EA4 FUN_020B1EA4: ; 0x020B1EA4 @@ -4954,6 +5109,7 @@ FUN_020B1EA4: ; 0x020B1EA4 mov r0, r4 bl FUN_020B1FC4 ldmia sp!, {r4,pc} + arm_func_end FUN_020B1EA4 arm_func_start FUN_020B1EC4 FUN_020B1EC4: ; 0x020B1EC4 @@ -4965,6 +5121,7 @@ FUN_020B1EC4: ; 0x020B1EC4 mov r0, r4 bl FUN_020B1FC4 ldmia sp!, {r4,pc} + arm_func_end FUN_020B1EC4 arm_func_start FUN_020B1EE4 FUN_020B1EE4: ; 0x020B1EE4 @@ -4974,6 +5131,7 @@ FUN_020B1EE4: ; 0x020B1EE4 mov r0, r4 bl FUN_020B1FC4 ldmia sp!, {r4,pc} + arm_func_end FUN_020B1EE4 arm_func_start FUN_020B1EFC FUN_020B1EFC: ; 0x020B1EFC @@ -5010,6 +5168,7 @@ FUN_020B1EFC: ; 0x020B1EFC bl FUN_020B1EE4 add sp, sp, #0x14 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B1EFC arm_func_start FUN_020B1F80 FUN_020B1F80: ; 0x020B1F80 @@ -5030,6 +5189,7 @@ FUN_020B1F80: ; 0x020B1F80 bl FUN_020B1EE4 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020B1F80 arm_func_start FUN_020B1FC4 FUN_020B1FC4: ; 0x020B1FC4 @@ -5100,6 +5260,7 @@ _020B2068: bl FUN_020B4400 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B1FC4 arm_func_start FUN_020B20C8 FUN_020B20C8: ; 0x020B20C8 @@ -5156,6 +5317,7 @@ _020B215C: strh r1, [r0, #0x2c] add sp, sp, #0xc ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B20C8 arm_func_start FUN_020B2194 FUN_020B2194: ; 0x020B2194 @@ -5207,6 +5369,7 @@ _020B2234: bl FUN_020B24E0 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B2194 arm_func_start FUN_020B224C FUN_020B224C: ; 0x020B224C @@ -5269,6 +5432,7 @@ _020B2318: bl FUN_020B232C add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B224C arm_func_start FUN_020B232C FUN_020B232C: ; 0x020B232C @@ -5318,6 +5482,7 @@ _020B23A8: cmp r5, r1 blo _020B23A8 ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020B232C arm_func_start FUN_020B23D8 FUN_020B23D8: ; 0x020B23D8 @@ -5344,6 +5509,7 @@ _020B23F4: _020B2424: mov r0, r4 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020B23D8 arm_func_start FUN_020B242C FUN_020B242C: ; 0x020B242C @@ -5394,6 +5560,7 @@ _020B24C8: bl FUN_020B24E0 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B242C arm_func_start FUN_020B24E0 FUN_020B24E0: ; 0x020B24E0 @@ -5579,6 +5746,7 @@ _020B2740: blo _020B267C add sp, sp, #0x14 ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B24E0 arm_func_start thunk_FUN_020b5040 thunk_FUN_020b5040: ; 0x020B2780 @@ -5586,11 +5754,13 @@ thunk_FUN_020b5040: ; 0x020B2780 bx r12 .balign 4 _020B2788: .word FUN_020B5040 + arm_func_end thunk_FUN_020b5040 arm_func_start FUN_020B278C FUN_020B278C: ldr r0, [r0, #0x78] bx lr + arm_func_end FUN_020B278C arm_func_start FUN_020B2794 FUN_020B2794: ; 0x020B2794 @@ -5672,6 +5842,7 @@ _020B28A4: .word UNK_02106570 _020B28A8: .word 0x0000FFFE _020B28AC: .word UNK_021CDDF4 _020B28B0: .word UNK_021CDD64 + arm_func_end FUN_020B2794 arm_func_start FUN_020B28B4 FUN_020B28B4: ; 0x020B28B4 @@ -5766,6 +5937,7 @@ _020B29F8: .word UNK_02106570 _020B29FC: .word 0x0000FFFE _020B2A00: .word UNK_021CDDF4 _020B2A04: .word UNK_021CDD64 + arm_func_end FUN_020B28B4 arm_func_start FUN_020B2A08 FUN_020B2A08: ; 0x020B2A08 @@ -5835,6 +6007,7 @@ _020B2AF8: .word UNK_021CDF08 _020B2AFC: .word UNK_021CDD74 _020B2B00: .word UNK_021CDEF4 _020B2B04: .word UNK_021CE1F4 + arm_func_end FUN_020B2A08 arm_func_start FUN_020B2B08 FUN_020B2B08: ; 0x020B2B08 @@ -5859,6 +6032,7 @@ FUN_020B2B08: ; 0x020B2B08 _020B2B4C: .word UNK_021CDD70 _020B2B50: .word UNK_02106570 _020B2B54: .word 0x0000FFFE + arm_func_end FUN_020B2B08 arm_func_start FUN_020B2B58 FUN_020B2B58: ; 0x020B2B58 @@ -6014,6 +6188,7 @@ _020B2D8C: .word UNK_021CDEF4 _020B2D90: .word UNK_021CE1F4 _020B2D94: .word UNK_021CDDF4 _020B2D98: .word UNK_021CDDF8 + arm_func_end FUN_020B2B58 arm_func_start FUN_020B2D9C FUN_020B2D9C: ; 0x020B2D9C @@ -6077,6 +6252,7 @@ _020B2E5C: .balign 4 _020B2E70: .word UNK_021CDD6C _020B2E74: .word FX_SinCosTable_ + arm_func_end FUN_020B2D9C arm_func_start FUN_020B2E78 FUN_020B2E78: ; 0x020B2E78 @@ -6286,6 +6462,7 @@ _020B3148: .balign 4 _020B3174: .word UNK_021CE8F4 _020B3178: .word UNK_021CDD6C + arm_func_end FUN_020B2E78 arm_func_start FUN_020B317C FUN_020B317C: ; 0x020B317C @@ -6320,6 +6497,7 @@ _020B31E0: ldmia sp!, {r4-r5,pc} .balign 4 _020B31EC: .word UNK_021CDD6C + arm_func_end FUN_020B317C arm_func_start FUN_020B31F0 FUN_020B31F0: ; 0x020B31F0 @@ -6357,6 +6535,7 @@ _020B324C: _020B3260: .word 0x04000448 _020B3264: .word UNK_021CDD6C _020B3268: .word UNK_021CDD68 + arm_func_end FUN_020B31F0 arm_func_start FUN_020B326C FUN_020B326C: ; 0x020B326C @@ -6413,6 +6592,7 @@ _020B3324: .word UNK_021CDD64 _020B3328: .word UNK_021CDDF4 _020B332C: .word 0x04000444 _020B3330: .word 0x04000454 + arm_func_end FUN_020B326C arm_func_start FUN_020B3334 FUN_020B3334: ; 0x020B3334 @@ -6440,6 +6620,7 @@ _020B3380: .word FUN_020B3EE0 _020B3384: .word FUN_020B3E48 _020B3388: .word FUN_020B3C40 _020B338C: .word FUN_020B3B90 + arm_func_end FUN_020B3334 arm_func_start FUN_020B3390 FUN_020B3390: ; 0x020B3390 @@ -6447,6 +6628,7 @@ FUN_020B3390: ; 0x020B3390 str r2, [r1, #0x30] str r1, [r0, #0x70] bx lr + arm_func_end FUN_020B3390 arm_func_start FUN_020B33A0 FUN_020B33A0: ; 0x020B33A0 @@ -6505,6 +6687,7 @@ _020B3464: .word UNK_021CDD60 _020B3468: .word UNK_021CDD64 _020B346C: .word UNK_021CDDF4 _020B3470: .word UNK_021CDD68 + arm_func_end FUN_020B33A0 arm_func_start FUN_020B3474 FUN_020B3474: ; 0x020B3474 @@ -6568,6 +6751,7 @@ _020B3534: .balign 4 _020B354C: .word UNK_021CDD6C _020B3550: .word FX_SinCosTable_ + arm_func_end FUN_020B3474 arm_func_start FUN_020B3554 FUN_020B3554: @@ -6670,6 +6854,7 @@ _020B36A4: _020B36B4: .word UNK_02106574 _020B36B8: .word UNK_021CDD6C _020B36BC: .word FX_SinCosTable_ + arm_func_end FUN_020B3554 arm_func_start FUN_020B36C0 FUN_020B36C0: ; 0x020B36C0 @@ -7005,6 +7190,7 @@ _020B3B80: .word UNK_021CDF08 _020B3B84: .word UNK_02106578 _020B3B88: .word UNK_02106574 _020B3B8C: .word UNK_021CDD74 + arm_func_end FUN_020B36C0 arm_func_start FUN_020B3B90 FUN_020B3B90: ; 0x020B3B90 @@ -7054,6 +7240,7 @@ _020B3C30: .word UNK_021CDEF4 _020B3C34: .word UNK_021CDF04 _020B3C38: .word UNK_021CDF08 _020B3C3C: .word UNK_02106578 + arm_func_end FUN_020B3B90 arm_func_start FUN_020B3C40 FUN_020B3C40: ; 0x020B3C40 @@ -7195,6 +7382,7 @@ _020B3E38: .word UNK_021CDEF4 _020B3E3C: .word UNK_021CDF04 _020B3E40: .word UNK_021CDF08 _020B3E44: .word UNK_02106578 + arm_func_end FUN_020B3C40 arm_func_start FUN_020B3E48 FUN_020B3E48: ; 0x020B3E48 @@ -7238,6 +7426,7 @@ _020B3ED0: .word UNK_021CDEF4 _020B3ED4: .word UNK_021CDF04 _020B3ED8: .word UNK_021CDF08 _020B3EDC: .word UNK_02106578 + arm_func_end FUN_020B3E48 arm_func_start FUN_020B3EE0 FUN_020B3EE0: ; 0x020B3EE0 @@ -7321,6 +7510,7 @@ _020B4000: .word UNK_021CDEF4 _020B4004: .word UNK_021CDF04 _020B4008: .word UNK_021CDF08 _020B400C: .word UNK_02106578 + arm_func_end FUN_020B3EE0 arm_func_start FUN_020B4010 FUN_020B4010: @@ -7418,6 +7608,7 @@ _020B4168: .word UNK_021CE1F4 _020B416C: .word UNK_021CDF04 _020B4170: .word UNK_021CDF08 _020B4174: .word UNK_02106578 + arm_func_end FUN_020B4010 arm_func_start FUN_020B4178 FUN_020B4178: ; 0x020B4178 @@ -7473,6 +7664,7 @@ _020B422C: .word UNK_021CDF08 _020B4230: .word UNK_021CDEF4 _020B4234: .word UNK_021CE1F4 _020B4238: .word UNK_021CDD74 + arm_func_end FUN_020B4178 arm_func_start FUN_020B423C FUN_020B423C: ; 0x020B423C @@ -7547,6 +7739,7 @@ FUN_020B423C: ; 0x020B423C stmeqia r12, {r0-r1} add sp, sp, #0x1c ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B423C arm_func_start FUN_020B4358 FUN_020B4358: ; 0x020B4358 @@ -7570,6 +7763,7 @@ FUN_020B4358: ; 0x020B4358 ldmia sp!, {r4,pc} .balign 4 _020B43A0: .word UNK_021CED04 + arm_func_end FUN_020B4358 arm_func_start FUN_020B43A4 FUN_020B43A4: ; 0x020B43A4 @@ -7599,6 +7793,7 @@ _020B43F0: .balign 4 _020B43F8: .word UNK_021CED00 _020B43FC: .word UNK_021CED04 + arm_func_end FUN_020B43A4 arm_func_start FUN_020B4400 FUN_020B4400: ; 0x020B4400 @@ -7613,6 +7808,7 @@ FUN_020B4400: ; 0x020B4400 str r4, [r0, #0x2c] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020B4400 arm_func_start FUN_020B442C FUN_020B442C: ; 0x020B442C @@ -7702,6 +7898,7 @@ _020B4558: .word UNK_021CED00 _020B455C: .word UNK_021CED04 _020B4560: .word UNK_020FF8C4 _020B4564: .word UNK_021CECFC + arm_func_end FUN_020B442C arm_func_start FUN_020B4568 FUN_020B4568: ; 0x020B4568 @@ -7741,6 +7938,7 @@ _020B45A0: _020B45E4: .word UNK_021CECFC _020B45E8: .word UNK_021CED00 _020B45EC: .word UNK_021CED04 + arm_func_end FUN_020B4568 arm_func_start FUN_020B45F0 FUN_020B45F0: ; 0x020B45F0 @@ -7791,6 +7989,7 @@ _020B4670: ldmia sp!, {r4-r7,pc} .balign 4 _020B4698: .word UNK_021CED04 + arm_func_end FUN_020B45F0 arm_func_start FUN_020B469C FUN_020B469C: ; 0x020B469C @@ -7801,6 +8000,7 @@ FUN_020B469C: ; 0x020B469C bx lr .balign 4 _020B46B0: .word UNK_021CED04 + arm_func_end FUN_020B469C arm_func_start FUN_020B46B4 FUN_020B46B4: ; 0x020B46B4 @@ -7973,6 +8173,7 @@ _020B4938: .word 0x04000490 _020B493C: .word 0x00010040 _020B4940: .word 0x04000504 _020B4944: .word UNK_02106590 + arm_func_end FUN_020B46B4 arm_func_start FUN_020B4948 FUN_020B4948: @@ -7981,6 +8182,7 @@ FUN_020B4948: bx lr .balign 4 _020B4954: .word UNK_02106590 + arm_func_end FUN_020B4948 arm_func_start FUN_020B4958 FUN_020B4958: @@ -7989,6 +8191,7 @@ FUN_020B4958: bx lr .balign 4 _020B4964: .word UNK_02106590 + arm_func_end FUN_020B4958 arm_func_start FUN_020B4968 FUN_020B4968: ; 0x020B4968 @@ -7998,6 +8201,7 @@ FUN_020B4968: ; 0x020B4968 bx lr .balign 4 _020B4978: .word UNK_021CED10 + arm_func_end FUN_020B4968 arm_func_start FUN_020B497C FUN_020B497C: @@ -8006,6 +8210,7 @@ FUN_020B497C: bx lr .balign 4 _020B4988: .word UNK_021CED08 + arm_func_end FUN_020B497C arm_func_start FUN_020B498C FUN_020B498C: ; 0x020B498C @@ -8168,6 +8373,7 @@ _020B4BE4: .word UNK_020FF928 _020B4BE8: .word UNK_021CED0C _020B4BEC: .word UNK_020FF8D0 _020B4BF0: .word 0x040004AC + arm_func_end FUN_020B498C arm_func_start FUN_020B4BF4 FUN_020B4BF4: ; 0x020B4BF4 @@ -8236,6 +8442,7 @@ _020B4CB8: ldmia sp!, {r4-r6,pc} .balign 4 _020B4CD8: .word UNK_021CED14 + arm_func_end FUN_020B4BF4 arm_func_start FUN_020B4CDC FUN_020B4CDC: @@ -8294,6 +8501,7 @@ _020B4D74: ldmia sp!, {r4-r5,pc} .balign 4 _020B4D9C: .word UNK_021CED14 + arm_func_end FUN_020B4CDC arm_func_start FUN_020B4DA0 FUN_020B4DA0: ; 0x020B4DA0 @@ -8327,6 +8535,7 @@ _020B4DF0: _020B4E00: .word UNK_021CED14 _020B4E04: .word 0x04000440 _020B4E08: .word 0x04000448 + arm_func_end FUN_020B4DA0 arm_func_start FUN_020B4E0C FUN_020B4E0C: ; 0x020B4E0C @@ -8410,6 +8619,7 @@ _020B4F28: .word UNK_021CED14 _020B4F2C: .word 0x04000440 _020B4F30: .word 0x04000444 _020B4F34: .word 0x04000470 + arm_func_end FUN_020B4E0C arm_func_start FUN_020B4F38 FUN_020B4F38: ; 0x020B4F38 @@ -8428,6 +8638,7 @@ FUN_020B4F38: ; 0x020B4F38 biceq r1, r1, #0x2 streq r1, [r0, #0x24] bx lr + arm_func_end FUN_020B4F38 arm_func_start FUN_020B4F74 FUN_020B4F74: @@ -8436,6 +8647,7 @@ FUN_020B4F74: movne r0, #0x1 moveq r0, #0x0 bx lr + arm_func_end FUN_020B4F74 arm_func_start FUN_020B4F88 FUN_020B4F88: @@ -8444,16 +8656,19 @@ FUN_020B4F88: movne r0, #0x1 moveq r0, #0x0 bx lr + arm_func_end FUN_020B4F88 arm_func_start FUN_020B4F9C FUN_020B4F9C: ; 0x020B4F9C str r1, [r0, #0x0] bx lr + arm_func_end FUN_020B4F9C arm_func_start FUN_020B4FA4 FUN_020B4FA4: ; 0x020B4FA4 str r1, [r0, #0x34] bx lr + arm_func_end FUN_020B4FA4 arm_func_start FUN_020B4FAC FUN_020B4FAC: ; 0x020B4FAC @@ -8464,6 +8679,7 @@ FUN_020B4FAC: ; 0x020B4FAC bx lr .balign 4 _020B4FC0: .word UNK_021CED14 + arm_func_end FUN_020B4FAC arm_func_start FUN_020B4FC4 FUN_020B4FC4: ; 0x020B4FC4 @@ -8494,23 +8710,27 @@ FUN_020B4FC4: ; 0x020B4FC4 bx lr .balign 4 _020B5028: .word UNK_021CED14 + arm_func_end FUN_020B4FC4 arm_func_start FUN_020B502C FUN_020B502C: ; 0x020B502C str r1, [r0, #0x4] bx lr + arm_func_end FUN_020B502C arm_func_start FUN_020B5034 FUN_020B5034: ; 0x020B5034 str r1, [r0, #0x1c] str r2, [r0, #0x20] bx lr + arm_func_end FUN_020B5034 arm_func_start FUN_020B5040 FUN_020B5040: ; 0x020B5040 str r1, [r0, #0x8] str r2, [r0, #0xc] bx lr + arm_func_end FUN_020B5040 arm_func_start FUN_020B504C FUN_020B504C: ; 0x020B504C @@ -8531,6 +8751,7 @@ FUN_020B504C: ; 0x020B504C str r0, [r4, #0x30] str r1, [r4, #0x28] ldmia sp!, {r4,pc} + arm_func_end FUN_020B504C arm_func_start FUN_020B5090 FUN_020B5090: ; 0x020B5090 @@ -8590,6 +8811,7 @@ _020B513C: ldmia sp!, {r4-r10,pc} .balign 4 _020B5158: .word UNK_021CED14 + arm_func_end FUN_020B5090 arm_func_start FUN_020B515C FUN_020B515C: ; 0x020B515C @@ -8749,6 +8971,7 @@ _020B53A4: .word UNK_021CED14 _020B53A8: .word 0xC000C000 _020B53AC: .word UNK_020FF8AC _020B53B0: .word UNK_020FF894 + arm_func_end FUN_020B515C arm_func_start FUN_020B53B4 FUN_020B53B4: ; 0x020B53B4 @@ -9032,6 +9255,7 @@ _020B57C8: .word UNK_020FF8AC _020B57CC: .word 0xFE00FFFF _020B57D0: .word 0x000001FF _020B57D4: .word UNK_020FF894 + arm_func_end FUN_020B53B4 arm_func_start FUN_020B57D8 FUN_020B57D8: ; 0x020B57D8 @@ -9226,6 +9450,7 @@ _020B5AAC: .word UNK_021CED14 _020B5AB0: .word 0xC1FFFCFF _020B5AB4: .word 0x000001FF _020B5AB8: .word 0xFE00FF00 + arm_func_end FUN_020B57D8 arm_func_start FUN_020B5ABC FUN_020B5ABC: ; 0x020B5ABC @@ -9269,6 +9494,7 @@ _020B5B24: str r1, [r5, #0x4] add sp, sp, #0xc ldmia sp!, {r4-r9,pc} + arm_func_end FUN_020B5ABC arm_func_start FUN_020B5B54 FUN_020B5B54: ; 0x020B5B54 @@ -9303,6 +9529,7 @@ _020B5BAC: sub r0, r0, r5 add sp, sp, #0x10 ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020B5B54 arm_func_start FUN_020B5BC8 FUN_020B5BC8: @@ -9358,6 +9585,7 @@ _020B5C70: ldmia sp!, {r4-r10,pc} .balign 4 _020B5C84: .word 0x0000FFFF + arm_func_end FUN_020B5BC8 arm_func_start FUN_020B5C88 FUN_020B5C88: ; 0x020B5C88 @@ -9387,6 +9615,7 @@ _020B5CD8: add r0, r3, #0x4 add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020B5C88 arm_func_start FUN_020B5CE4 FUN_020B5CE4: ; 0x020B5CE4 @@ -9416,6 +9645,7 @@ _020B5D2C: ldmia sp!, {pc} .balign 4 _020B5D38: .word 0x0000FFFF + arm_func_end FUN_020B5CE4 arm_func_start FUN_020B5D3C FUN_020B5D3C: ; 0x020B5D3C @@ -9436,6 +9666,7 @@ FUN_020B5D3C: ; 0x020B5D3C ldmia sp!, {r4,pc} .balign 4 _020B5D78: .word FUN_020B7718 + arm_func_end FUN_020B5D3C arm_func_start FUN_020B5D7C FUN_020B5D7C: ; 0x020B5D7C @@ -9499,6 +9730,7 @@ _020B5E40: ldmia sp!, {pc} .balign 4 _020B5E4C: .word 0x0000FFFF + arm_func_end FUN_020B5D7C arm_func_start FUN_020B5E50 FUN_020B5E50: ; 0x020B5E50 @@ -9714,6 +9946,7 @@ _020B6170: .word UNK_020FF970 _020B6174: .word 0x000001FF _020B6178: .word 0xFE00FF00 _020B617C: .word 0x3FFF3FFF + arm_func_end FUN_020B5E50 arm_func_start FUN_020B6180 FUN_020B6180: ; 0x020B6180 @@ -9740,6 +9973,7 @@ FUN_020B6180: ; 0x020B6180 add r0, lr, r0, lsr #0x2 mla r0, r1, r0, r12 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020B6180 arm_func_start FUN_020B61DC FUN_020B61DC: ; 0x020B61DC @@ -9771,6 +10005,7 @@ _020B622C: add r0, r0, lr blt _020B6204 ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020B61DC arm_func_start FUN_020B6240 FUN_020B6240: ; 0x020B6240 @@ -9824,6 +10059,7 @@ _020B62E4: blt _020B62A0 add sp, sp, #0x8 ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020B6240 arm_func_start FUN_020B62F8 FUN_020B62F8: ; 0x020B62F8 @@ -9864,6 +10100,7 @@ _020B6378: .word UNK_020FF970 _020B637C: .word FUN_020B6908 _020B6380: .word FUN_020B68AC _020B6384: .word FUN_020B64C0 + arm_func_end FUN_020B62F8 arm_func_start FUN_020B6388 FUN_020B6388: ; 0x020B6388 @@ -9885,6 +10122,7 @@ FUN_020B6388: ; 0x020B6388 _020B63C0: .word FUN_020B6B10 _020B63C4: .word FUN_020B68AC _020B63C8: .word FUN_020B66D4 + arm_func_end FUN_020B6388 arm_func_start FUN_020B63CC FUN_020B63CC: ; 0x020B63CC @@ -9936,6 +10174,7 @@ FUN_020B63CC: ; 0x020B63CC ldmia sp!, {r4-r8,pc} .balign 4 _020B6484: .word 0x0000FFFF + arm_func_end FUN_020B63CC arm_func_start FUN_020B6488 FUN_020B6488: ; 0x020B6488 @@ -9953,6 +10192,7 @@ FUN_020B6488: ; 0x020B6488 str r2, [r0, #0x1c] str r1, [r0, #0x10] bx lr + arm_func_end FUN_020B6488 arm_func_start FUN_020B64C0 FUN_020B64C0: ; 0x020B64C0 @@ -10093,6 +10333,7 @@ _020B66B0: blt _020B65E4 add sp, sp, #0x54 ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B64C0 arm_func_start FUN_020B66D4 FUN_020B66D4: ; 0x020B66D4 @@ -10218,6 +10459,7 @@ _020B687C: blt _020B67E0 add sp, sp, #0x3c ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B66D4 arm_func_start FUN_020B68AC FUN_020B68AC: ; 0x020B68AC @@ -10244,6 +10486,7 @@ FUN_020B68AC: ; 0x020B68AC bl MIi_CpuClearFast add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020B68AC arm_func_start FUN_020B6908 FUN_020B6908: ; 0x020B6908 @@ -10380,6 +10623,7 @@ _020B6AEC: bgt _020B6A90 add sp, sp, #0x4c ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B6908 arm_func_start FUN_020B6B10 FUN_020B6B10: ; 0x020B6B10 @@ -10489,6 +10733,7 @@ _020B6C90: bgt _020B6C60 add sp, sp, #0x2c ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B6B10 arm_func_start FUN_020B6CAC FUN_020B6CAC: ; 0x020B6CAC @@ -10655,6 +10900,7 @@ _020B6EE8: blo _020B6E58 add sp, sp, #0x34 ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B6CAC arm_func_start FUN_020B6F18 FUN_020B6F18: ; 0x020B6F18 @@ -10739,6 +10985,7 @@ _020B701C: cmp r5, r4 blo _020B701C ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020B6F18 arm_func_start FUN_020B704C FUN_020B704C: ; 0x020B704C @@ -10750,6 +10997,7 @@ FUN_020B704C: ; 0x020B704C bx lr .balign 4 _020B7064: .word UNK_020FF990 + arm_func_end FUN_020B704C arm_func_start FUN_020B7068 FUN_020B7068: ; 0x020B7068 @@ -10821,6 +11069,7 @@ _020B7118: ldmia sp!, {r4-r11,pc} .balign 4 _020B7164: .word UNK_020FF970 + arm_func_end FUN_020B7068 arm_func_start FUN_020B7168 FUN_020B7168: ; 0x020B7168 @@ -10870,6 +11119,7 @@ _020B71E4: bl FUN_020B72C4 add sp, sp, #0xc ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B7168 arm_func_start FUN_020B7218 FUN_020B7218: ; 0x020B7218 @@ -10918,6 +11168,7 @@ _020B7298: bl FUN_020B72C4 add sp, sp, #0x18 ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020B7218 arm_func_start FUN_020B72C4 FUN_020B72C4: ; 0x020B72C4 @@ -10987,6 +11238,7 @@ _020B7388: bne _020B732C add sp, sp, #0x14 ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B72C4 arm_func_start FUN_020B73C0 FUN_020B73C0: ; 0x020B73C0 @@ -11034,6 +11286,7 @@ _020B743C: str r1, [r0, #0x0] add sp, sp, #0xc ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B73C0 arm_func_start FUN_020B7468 FUN_020B7468: ; 0x020B7468 @@ -11104,6 +11357,7 @@ _020B7548: .word 0x46494E46 _020B754C: .word 0x43574448 _020B7550: .word 0x434D4150 _020B7554: .word 0x43474C50 + arm_func_end FUN_020B7468 arm_func_start FUN_020B7558 FUN_020B7558: ; 0x020B7558 @@ -11208,6 +11462,7 @@ _020B76A0: .balign 4 _020B76A8: .word 0x4E465452 _020B76AC: .word 0x46494E46 + arm_func_end FUN_020B7558 arm_func_start FUN_020B76B0 FUN_020B76B0: @@ -11238,6 +11493,7 @@ _020B7704: and r0, r5, r1, asr r0 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020B76B0 arm_func_start FUN_020B7718 FUN_020B7718: ; 0x020B7718 @@ -11246,6 +11502,7 @@ FUN_020B7718: ; 0x020B7718 str r1, [r0, #0x0] mov r0, r2 bx lr + arm_func_end FUN_020B7718 arm_func_start FUN_020B772C FUN_020B772C: ; 0x020B772C @@ -11275,6 +11532,7 @@ _020B7750: blo _020B7750 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B772C arm_func_start FUN_020B7790 FUN_020B7790: ; 0x020B7790 @@ -11311,6 +11569,7 @@ _020B7800: mov r0, r5 add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} + arm_func_end FUN_020B7790 arm_func_start FUN_020B780C FUN_020B780C: ; 0x020B780C @@ -11337,6 +11596,7 @@ _020B782C: cmp r1, r0 blo _020B782C bx lr + arm_func_end FUN_020B780C arm_func_start FUN_020B7864 FUN_020B7864: ; 0x020B7864 @@ -11387,6 +11647,7 @@ _020B78F4: _020B7908: mov r0, r6 ldmia sp!, {r4-r10,pc} + arm_func_end FUN_020B7864 arm_func_start FUN_020B7910 FUN_020B7910: @@ -11429,6 +11690,7 @@ _020B7994: orr r0, r0, #0x1 strb r0, [r1, #0x3] ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020B7910 arm_func_start FUN_020B79A4 FUN_020B79A4: ; 0x020B79A4 @@ -11458,6 +11720,7 @@ _020B79F0: cmp r4, r0 blo _020B79C8 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020B79A4 arm_func_start FUN_020B7A04 FUN_020B7A04: ; 0x020B7A04 @@ -11510,6 +11773,7 @@ _020B7AAC: mov r0, r11 add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B7A04 arm_func_start FUN_020B7AB8 FUN_020B7AB8: ; 0x020B7AB8 @@ -11550,6 +11814,7 @@ _020B7B28: ldmia sp!, {r4-r7,pc} .balign 4 _020B7B3C: .word 0xC00F0000 + arm_func_end FUN_020B7AB8 arm_func_start FUN_020B7B40 FUN_020B7B40: @@ -11628,6 +11893,7 @@ _020B7C3C: .balign 4 _020B7C50: .word 0x0000FFFF _020B7C54: .word 0x000007FF + arm_func_end FUN_020B7B40 arm_func_start FUN_020B7C58 FUN_020B7C58: ; 0x020B7C58 @@ -11639,6 +11905,7 @@ FUN_020B7C58: ; 0x020B7C58 str r1, [r0, #0x2c] mov r0, r2 bx lr + arm_func_end FUN_020B7C58 arm_func_start FUN_020B7C78 FUN_020B7C78: ; 0x020B7C78 @@ -11669,17 +11936,20 @@ _020B7C90: ldmia sp!, {r4-r5,pc} .balign 4 _020B7CD8: .word 0x0000FFFF + arm_func_end FUN_020B7C78 arm_func_start FUN_020B7CDC FUN_020B7CDC: ; 0x020B7CDC str r1, [r0, #0x2c] bx lr + arm_func_end FUN_020B7CDC arm_func_start FUN_020B7CE4 FUN_020B7CE4: ; 0x020B7CE4 ldrh r0, [r0, #0x30] mov r0, r0, lsl #0x3 bx lr + arm_func_end FUN_020B7CE4 arm_func_start FUN_020B7CF0 FUN_020B7CF0: ; 0x020B7CF0 @@ -11697,6 +11967,7 @@ FUN_020B7CF0: ; 0x020B7CF0 str r1, [r2, #0x0] str r3, [r0, #0x18] bx lr + arm_func_end FUN_020B7CF0 arm_func_start FUN_020B7D28 FUN_020B7D28: ; 0x020B7D28 @@ -11757,6 +12028,7 @@ _020B7DDC: .balign 4 _020B7DF4: .word 0x0000FFFF _020B7DF8: .word 0x0001FFFF + arm_func_end FUN_020B7D28 arm_func_start FUN_020B7DFC FUN_020B7DFC: ; 0x020B7DFC @@ -11765,18 +12037,21 @@ FUN_020B7DFC: ; 0x020B7DFC cmp r2, #0x0 strne r2, [r0, #0x18] bx lr + arm_func_end FUN_020B7DFC arm_func_start FUN_020B7E10 FUN_020B7E10: ; 0x020B7E10 ldrh r0, [r0, #0x1c] mov r0, r0, lsl #0x3 bx lr + arm_func_end FUN_020B7E10 arm_func_start FUN_020B7E1C FUN_020B7E1C: ; 0x020B7E1C ldrh r0, [r0, #0xc] mov r0, r0, lsl #0x3 bx lr + arm_func_end FUN_020B7E1C arm_func_start FUN_020B7E28 FUN_020B7E28: ; 0x020B7E28 @@ -11805,6 +12080,7 @@ _020B7E74: str r0, [r5, #0x0] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020B7E28 arm_func_start FUN_020B7E88 FUN_020B7E88: @@ -11841,6 +12117,7 @@ _020B7EE4: _020B7EF4: mov r0, #0x0 bx lr + arm_func_end FUN_020B7E88 arm_func_start FUN_020B7EFC FUN_020B7EFC: ; 0x020B7EFC @@ -11882,6 +12159,7 @@ _020B7F6C: bl FUN_020B7FF8 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020B7EFC arm_func_start FUN_020B7F88 FUN_020B7F88: ; 0x020B7F88 @@ -11916,6 +12194,7 @@ _020B7FE4: bne _020B7FA4 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020B7F88 arm_func_start FUN_020B7FF8 FUN_020B7FF8: ; 0x020B7FF8 @@ -11975,6 +12254,7 @@ _020B809C: _020B80AC: str r1, [r12, #0x10] bx lr + arm_func_end FUN_020B7FF8 arm_func_start FUN_020B80B4 FUN_020B80B4: ; 0x020B80B4 @@ -12002,6 +12282,7 @@ FUN_020B80B4: ; 0x020B80B4 _020B8104: .word UNK_021065B4 _020B8108: .word UNK_021065B0 _020B810C: .word UNK_021065AC + arm_func_end FUN_020B80B4 arm_func_start FUN_020B8110 FUN_020B8110: ; 0x020B8110 @@ -12048,6 +12329,7 @@ _020B8190: _020B81A4: .word UNK_02106594 _020B81A8: .word UNK_021065B8 _020B81AC: .word UNK_021065BC + arm_func_end FUN_020B8110 arm_func_start FUN_020B81B0 FUN_020B81B0: ; 0x020B81B0 @@ -12074,6 +12356,7 @@ _020B81E4: _020B81F8: mov r0, #0x0 bx lr + arm_func_end FUN_020B81B0 arm_func_start FUN_020B8200 FUN_020B8200: ; 0x020B8200 @@ -12103,6 +12386,7 @@ FUN_020B8200: ; 0x020B8200 bx lr .balign 4 _020B8260: .word UNK_021CED18 + arm_func_end FUN_020B8200 arm_func_start FUN_020B8264 FUN_020B8264: ; 0x020B8264 @@ -12124,6 +12408,7 @@ _020B8290: .balign 4 _020B829C: .word UNK_021CED18 _020B82A0: .word UNK_021CEE78 + arm_func_end FUN_020B8264 arm_func_start FUN_020B82A4 FUN_020B82A4: ; 0x020B82A4 @@ -12145,6 +12430,7 @@ _020B82D0: .balign 4 _020B82DC: .word UNK_021CED18 _020B82E0: .word UNK_021CEE48 + arm_func_end FUN_020B82A4 arm_func_start FUN_020B82E4 FUN_020B82E4: ; 0x020B82E4 @@ -12173,6 +12459,7 @@ _020B8334: .word UNK_021CED64 _020B8338: .word UNK_021CEE48 _020B833C: .word UNK_021CED18 _020B8340: .word UNK_021CEE78 + arm_func_end FUN_020B82E4 arm_func_start FUN_020B8344 FUN_020B8344: ; 0x020B8344 @@ -12197,6 +12484,7 @@ _020B8378: _020B8384: .word UNK_021CED18 _020B8388: .word UNK_021CED64 _020B838C: .word UNK_021CEE18 + arm_func_end FUN_020B8344 arm_func_start FUN_020B8390 FUN_020B8390: ; 0x020B8390 @@ -12212,6 +12500,7 @@ FUN_020B8390: ; 0x020B8390 bx lr .balign 4 _020B83B8: .word UNK_021CED18 + arm_func_end FUN_020B8390 arm_func_start FUN_020B83BC FUN_020B83BC: ; 0x020B83BC @@ -12225,6 +12514,7 @@ FUN_020B83BC: ; 0x020B83BC bx lr .balign 4 _020B83DC: .word UNK_021CED18 + arm_func_end FUN_020B83BC arm_func_start FUN_020B83E0 FUN_020B83E0: ; 0x020B83E0 @@ -12238,6 +12528,7 @@ FUN_020B83E0: ; 0x020B83E0 bx lr .balign 4 _020B8400: .word UNK_021CED18 + arm_func_end FUN_020B83E0 arm_func_start FUN_020B8404 FUN_020B8404: ; 0x020B8404 @@ -12247,6 +12538,7 @@ FUN_020B8404: ; 0x020B8404 bx lr .balign 4 _020B8414: .word UNK_021CEDC0 + arm_func_end FUN_020B8404 arm_func_start FUN_020B8418 FUN_020B8418: ; 0x020B8418 @@ -12264,6 +12556,7 @@ FUN_020B8418: ; 0x020B8418 .balign 4 _020B8444: .word 0x000003FF _020B8448: .word UNK_021CED98 + arm_func_end FUN_020B8418 arm_func_start FUN_020B844C FUN_020B844C: ; 0x020B844C @@ -12278,6 +12571,7 @@ FUN_020B844C: ; 0x020B844C .balign 4 _020B846C: .word UNK_021CEE04 _020B8470: .word UNK_021CED18 + arm_func_end FUN_020B844C arm_func_start FUN_020B8474 FUN_020B8474: ; 0x020B8474 @@ -12292,6 +12586,7 @@ FUN_020B8474: ; 0x020B8474 .balign 4 _020B8494: .word UNK_021CEDF8 _020B8498: .word UNK_021CED18 + arm_func_end FUN_020B8474 arm_func_start FUN_020B849C FUN_020B849C: ; 0x020B849C @@ -12311,6 +12606,7 @@ FUN_020B849C: ; 0x020B849C ldmia sp!, {pc} .balign 4 _020B84D4: .word UNK_021CED18 + arm_func_end FUN_020B849C arm_func_start FUN_020B84D8 FUN_020B84D8: ; 0x020B84D8 @@ -12405,6 +12701,7 @@ _020B8630: .word 0x00007FFF _020B8634: .word 0x800003E0 _020B8638: .word 0xC0007C00 _020B863C: .word UNK_021CEDD4 + arm_func_end FUN_020B84D8 arm_func_start FUN_020B8640 FUN_020B8640: ; 0x020B8640 @@ -12438,6 +12735,7 @@ _020B869C: bne _020B8664 add sp, sp, #0x8 ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020B8640 arm_func_start FUN_020B86B0 FUN_020B86B0: ; 0x020B86B0 @@ -12636,6 +12934,7 @@ _020B8948: mov r0, #0x1 add sp, sp, #0x5c ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B86B0 arm_func_start FUN_020B8998 FUN_020B8998: @@ -12668,6 +12967,7 @@ _020B89C8: add r1, r3, r1, asr #0xc str r1, [r0, #0x8] bx lr + arm_func_end FUN_020B8998 arm_func_start FUN_020B8A08 FUN_020B8A08: ; 0x020B8A08 @@ -12695,6 +12995,7 @@ _020B8A4C: bne _020B8A24 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B8A08 arm_func_start FUN_020B8A60 FUN_020B8A60: ; 0x020B8A60 @@ -12941,6 +13242,7 @@ _020B8DE0: .word 0x04000440 _020B8DE4: .word 0x04000444 _020B8DE8: .word 0x04000454 _020B8DEC: .word 0x04000448 + arm_func_end FUN_020B8A60 arm_func_start FUN_020B8DF0 FUN_020B8DF0: ; 0x020B8DF0 @@ -13157,6 +13459,7 @@ _020B9100: .word UNK_0210663C _020B9104: .word UNK_021CED18 _020B9108: .word UNK_021CED64 _020B910C: .word UNK_021CEDD4 + arm_func_end FUN_020B8DF0 arm_func_start FUN_020B9110 FUN_020B9110: ; 0x020B9110 @@ -13187,6 +13490,7 @@ _020B9164: str r0, [r4, #0x0] add sp, sp, #0x10 ldmia sp!, {r4,pc} + arm_func_end FUN_020B9110 arm_func_start FUN_020B9178 FUN_020B9178: ; 0x020B9178 @@ -13250,6 +13554,7 @@ _020B9248: add r0, r0, #0x9 str r0, [r5, #0x0] ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020B9178 arm_func_start FUN_020B9258 FUN_020B9258: ; 0x020B9258 @@ -13673,6 +13978,7 @@ _020B98B4: .word 0x04000454 _020B98B8: .word UNK_021D0380 _020B98BC: .word 0x04000450 _020B98C0: .word UNK_021D03C0 + arm_func_end FUN_020B9258 arm_func_start FUN_020B98C4 FUN_020B98C4: ; 0x020B98C4 @@ -13926,6 +14232,7 @@ _020B9C44: .word 0x00171012 _020B9C48: .word UNK_021066EC _020B9C4C: .word 0x00001B19 _020B9C50: .word UNK_021066E8 + arm_func_end FUN_020B98C4 arm_func_start FUN_020B9C54 FUN_020B9C54: ; 0x020B9C54 @@ -14152,6 +14459,7 @@ _020B9F74: .word UNK_021066A4 _020B9F78: .word 0x00001B19 _020B9F7C: .word UNK_021066AC _020B9F80: .word UNK_021066A0 + arm_func_end FUN_020B9C54 arm_func_start FUN_020B9F84 FUN_020B9F84: ; 0x020B9F84 @@ -14451,6 +14759,7 @@ _020BA3B4: .word UNK_020FF9F0 _020BA3B8: .word UNK_020FF9F0 + 1 _020BA3BC: .word UNK_020FF9F0 + 2 _020BA3C0: .word UNK_020FF9F0 + 3 + arm_func_end FUN_020B9F84 arm_func_start FUN_020BA3C4 FUN_020BA3C4: ; 0x020BA3C4 @@ -14485,6 +14794,7 @@ _020BA420: ldmia sp!, {r4-r5,pc} .balign 4 _020BA434: .word UNK_02106650 + arm_func_end FUN_020BA3C4 arm_func_start FUN_020BA438 FUN_020BA438: ; 0x020BA438 @@ -14545,6 +14855,7 @@ _020BA4E8: ldr r1, [r6, #0x20] blx r1 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BA438 arm_func_start FUN_020BA50C FUN_020BA50C: ; 0x020BA50C @@ -14583,6 +14894,7 @@ _020BA578: ldmia sp!, {r4-r6,pc} .balign 4 _020BA588: .word UNK_02106640 + arm_func_end FUN_020BA50C arm_func_start FUN_020BA58C FUN_020BA58C: ; 0x020BA58C @@ -14884,6 +15196,7 @@ _020BA9DC: .word UNK_021CED18 _020BA9E0: .word UNK_020FF9D0 _020BA9E4: .word 0x00293130 _020BA9E8: .word 0x00002B2A + arm_func_end FUN_020BA58C arm_func_start FUN_020BA9EC FUN_020BA9EC: ; 0x020BA9EC @@ -14944,6 +15257,7 @@ _020BAAAC: str r0, [r5, #0x0] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020BA9EC arm_func_start FUN_020BAAC0 FUN_020BAAC0: ; 0x020BAAC0 @@ -15053,6 +15367,7 @@ _020BAC38: add r0, r0, #0x3 str r0, [r6, #0x0] ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BAAC0 arm_func_start FUN_020BAC48 FUN_020BAC48: ; 0x020BAC48 @@ -15067,6 +15382,7 @@ _020BAC60: orr r0, r0, #0x20 str r0, [r4, #0x8] ldmia sp!, {r4,pc} + arm_func_end FUN_020BAC48 arm_func_start FUN_020BAC70 FUN_020BAC70: ; 0x020BAC70 @@ -15081,6 +15397,7 @@ _020BAC88: add r0, r0, #0x1 str r0, [r4, #0x0] ldmia sp!, {r4,pc} + arm_func_end FUN_020BAC70 arm_func_start FUN_020BAC98 FUN_020BAC98: ; 0x020BAC98 @@ -15145,6 +15462,7 @@ _020BAD4C: ldmia sp!, {r4,pc} .balign 4 _020BAD70: .word UNK_021CEF7C + arm_func_end FUN_020BAC98 arm_func_start FUN_020BAD74 FUN_020BAD74: @@ -15179,6 +15497,7 @@ _020BADD0: bne _020BAD90 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020BAD74 arm_func_start FUN_020BADE4 FUN_020BADE4: ; 0x020BADE4 @@ -15283,6 +15602,7 @@ _020BAF44: _020BAF60: .word UNK_02106614 _020BAF64: .word UNK_02106608 _020BAF68: .word UNK_02106620 + arm_func_end FUN_020BADE4 arm_func_start FUN_020BAF6C FUN_020BAF6C: @@ -15307,6 +15627,7 @@ _020BAF7C: ldmia sp!, {r4-r6,pc} .balign 4 _020BAFB4: .word UNK_02106730 + arm_func_end FUN_020BAF6C arm_func_start FUN_020BAFB8 FUN_020BAFB8: ; 0x020BAFB8 @@ -15445,6 +15766,7 @@ _020BB150: _020BB1B4: .word 0x00293130 _020BB1B8: .word 0x00002B2A _020BB1BC: .word UNK_02106620 + arm_func_end FUN_020BAFB8 arm_func_start FUN_020BB1C0 FUN_020BB1C0: @@ -15513,6 +15835,7 @@ _020BB28C: _020BB2A4: .word UNK_021D1C80 _020BB2A8: .word UNK_021D1C84 _020BB2AC: .word 0x04000400 + arm_func_end FUN_020BB1C0 arm_func_start FUN_020BB2B0 FUN_020BB2B0: ; 0x020BB2B0 @@ -15568,12 +15891,14 @@ _020BB360: .word GXi_DmaId _020BB364: .word UNK_021D1C88 _020BB368: .word UNK_021D1C84 _020BB36C: .word FUN_020BB370 + arm_func_end FUN_020BB2B0 arm_func_start FUN_020BB370 FUN_020BB370: ; 0x020BB370 mov r1, #0x0 str r1, [r0, #0x0] bx lr + arm_func_end FUN_020BB370 arm_func_start FUN_020BB37C FUN_020BB37C: ; 0x020BB37C @@ -15585,6 +15910,7 @@ _020BB380: bx lr .balign 4 _020BB390: .word UNK_021D1C84 + arm_func_end FUN_020BB37C arm_func_start FUN_020BB394 FUN_020BB394: ; 0x020BB394 @@ -15619,6 +15945,7 @@ _020BB3B0: _020BB3FC: .word UNK_021D1C84 _020BB400: .word UNK_021D1C80 _020BB404: .word 0x04000400 + arm_func_end FUN_020BB394 arm_func_start FUN_020BB408 FUN_020BB408: ; 0x020BB408 @@ -15726,6 +16053,7 @@ _020BB534: .balign 4 _020BB594: .word UNK_021CED20 _020BB598: .word UNK_021CED64 + arm_func_end FUN_020BB408 arm_func_start FUN_020BB59C FUN_020BB59C: ; 0x020BB59C @@ -15896,6 +16224,7 @@ _020BB7E4: .word UNK_021064B8 _020BB7E8: .word UNK_021064C0 _020BB7EC: .word UNK_021064C4 _020BB7F0: .word UNK_021064BC + arm_func_end FUN_020BB59C arm_func_start FUN_020BB7F4 FUN_020BB7F4: ; 0x020BB7F4 @@ -15912,6 +16241,7 @@ FUN_020BB7F4: ; 0x020BB7F4 ldmia sp!, {pc} .balign 4 _020BB820: .word 0x04000600 + arm_func_end FUN_020BB7F4 arm_func_start FUN_020BB824 FUN_020BB824: ; 0x020BB824 @@ -15960,6 +16290,7 @@ _020BB8B4: .word 0x04000440 _020BB8B8: .word 0x04000444 _020BB8BC: .word 0x04000454 _020BB8C0: .word 0x04000448 + arm_func_end FUN_020BB824 arm_func_start thunk_FUN_020ae84c thunk_FUN_020ae84c: ; 0x020BB8C4 @@ -15967,6 +16298,7 @@ thunk_FUN_020ae84c: ; 0x020BB8C4 bx r12 .balign 4 _020BB8CC: .word FUN_020AE84C + arm_func_end thunk_FUN_020ae84c arm_func_start FUN_020BB8D0 FUN_020BB8D0: ; 0x020BB8D0 @@ -15979,6 +16311,7 @@ FUN_020BB8D0: ; 0x020BB8D0 mov r0, r4 bl FUN_020AE868 ldmia sp!, {r4,pc} + arm_func_end FUN_020BB8D0 arm_func_start FUN_020BB8F4 FUN_020BB8F4: ; 0x020BB8F4 @@ -15999,6 +16332,7 @@ _020BB910: cmp r4, r0 blo _020BB910 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BB8F4 arm_func_start FUN_020BB934 FUN_020BB934: ; 0x020BB934 @@ -16019,6 +16353,7 @@ _020BB950: cmp r4, r0 blo _020BB950 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BB934 arm_func_start FUN_020BB974 FUN_020BB974: ; 0x020BB974 @@ -16039,6 +16374,7 @@ _020BB990: cmp r4, r0 blo _020BB990 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BB974 arm_func_start FUN_020BB9B4 FUN_020BB9B4: ; 0x020BB9B4 @@ -16059,6 +16395,7 @@ _020BB9D0: cmp r4, r0 blo _020BB9D0 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BB9B4 arm_func_start FUN_020BB9F4 FUN_020BB9F4: ; 0x020BB9F4 @@ -16079,6 +16416,7 @@ _020BBA10: cmp r4, r0 blo _020BBA10 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BB9F4 arm_func_start FUN_020BBA34 FUN_020BBA34: ; 0x020BBA34 @@ -16099,6 +16437,7 @@ _020BBA50: cmp r4, r0 blo _020BBA50 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBA34 arm_func_start FUN_020BBA74 FUN_020BBA74: ; 0x020BBA74 @@ -16119,6 +16458,7 @@ _020BBA90: cmp r4, r0 blo _020BBA90 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBA74 arm_func_start FUN_020BBAB4 FUN_020BBAB4: ; 0x020BBAB4 @@ -16139,6 +16479,7 @@ _020BBAD0: cmp r4, r0 blo _020BBAD0 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBAB4 arm_func_start FUN_020BBAF4 FUN_020BBAF4: ; 0x020BBAF4 @@ -16159,6 +16500,7 @@ _020BBB10: cmp r4, r0 blo _020BBB10 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBAF4 arm_func_start FUN_020BBB34 FUN_020BBB34: ; 0x020BBB34 @@ -16179,6 +16521,7 @@ _020BBB50: cmp r4, r0 blo _020BBB50 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBB34 arm_func_start FUN_020BBB74 FUN_020BBB74: ; 0x020BBB74 @@ -16199,6 +16542,7 @@ _020BBB90: cmp r4, r0 blo _020BBB90 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBB74 arm_func_start FUN_020BBBB4 FUN_020BBBB4: ; 0x020BBBB4 @@ -16219,6 +16563,7 @@ _020BBBD0: cmp r4, r0 blo _020BBBD0 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBBB4 arm_func_start FUN_020BBBF4 FUN_020BBBF4: ; 0x020BBBF4 @@ -16239,6 +16584,7 @@ _020BBC10: cmp r4, r0 blo _020BBC10 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBBF4 arm_func_start FUN_020BBC34 FUN_020BBC34: ; 0x020BBC34 @@ -16259,6 +16605,7 @@ _020BBC50: cmp r4, r0 blo _020BBC50 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBC34 arm_func_start FUN_020BBC74 FUN_020BBC74: ; 0x020BBC74 @@ -16279,6 +16626,7 @@ FUN_020BBC74: ; 0x020BBC74 biceq r0, r0, #0x800 streq r0, [r1, #0xc] bx lr + arm_func_end FUN_020BBC74 arm_func_start FUN_020BBCB8 FUN_020BBCB8: ; 0x020BBCB8 @@ -16299,6 +16647,7 @@ FUN_020BBCB8: ; 0x020BBCB8 biceq r0, r0, #0x1000 streq r0, [r1, #0xc] bx lr + arm_func_end FUN_020BBCB8 arm_func_start FUN_020BBCFC FUN_020BBCFC: ; 0x020BBCFC @@ -16319,6 +16668,7 @@ FUN_020BBCFC: ; 0x020BBCFC biceq r0, r0, #0x2000 streq r0, [r1, #0xc] bx lr + arm_func_end FUN_020BBCFC arm_func_start FUN_020BBD40 FUN_020BBD40: ; 0x020BBD40 @@ -16339,6 +16689,7 @@ FUN_020BBD40: ; 0x020BBD40 biceq r0, r0, #0x4000 streq r0, [r1, #0xc] bx lr + arm_func_end FUN_020BBD40 arm_func_start FUN_020BBD84 FUN_020BBD84: ; 0x020BBD84 @@ -16359,6 +16710,7 @@ FUN_020BBD84: ; 0x020BBD84 biceq r0, r0, #0x8000 streq r0, [r1, #0xc] bx lr + arm_func_end FUN_020BBD84 arm_func_start FUN_020BBDC8 FUN_020BBDC8: ; 0x020BBDC8 @@ -16379,6 +16731,7 @@ FUN_020BBDC8: ; 0x020BBDC8 str r0, [r1, #0xc] add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020BBDC8 arm_func_start FUN_020BBE0C FUN_020BBE0C: ; 0x020BBE0C @@ -16399,6 +16752,7 @@ FUN_020BBE0C: ; 0x020BBE0C str r0, [r1, #0xc] add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020BBE0C arm_func_start FUN_020BBE50 FUN_020BBE50: ; 0x020BBE50 @@ -16419,6 +16773,7 @@ FUN_020BBE50: ; 0x020BBE50 str r0, [r1, #0xc] add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020BBE50 arm_func_start FUN_020BBE94 FUN_020BBE94: ; 0x020BBE94 @@ -16439,6 +16794,7 @@ FUN_020BBE94: ; 0x020BBE94 str r0, [r1, #0xc] add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020BBE94 arm_func_start FUN_020BBED8 FUN_020BBED8: ; 0x020BBED8 @@ -16459,6 +16815,7 @@ FUN_020BBED8: ; 0x020BBED8 str r0, [r1, #0xc] add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020BBED8 arm_func_start FUN_020BBF1C FUN_020BBF1C: ; 0x020BBF1C @@ -16480,6 +16837,7 @@ FUN_020BBF1C: ; 0x020BBF1C ldmia sp!, {r4,pc} .balign 4 _020BBF5C: .word 0x8000FFFF + arm_func_end FUN_020BBF1C arm_func_start FUN_020BBF60 FUN_020BBF60: ; 0x020BBF60 @@ -16500,6 +16858,7 @@ FUN_020BBF60: ; 0x020BBF60 orr r0, r0, r2 str r0, [r3, #0x8] ldmia sp!, {r4,pc} + arm_func_end FUN_020BBF60 arm_func_start FUN_020BBFA4 FUN_020BBFA4: ; 0x020BBFA4 @@ -16521,6 +16880,7 @@ FUN_020BBFA4: ; 0x020BBFA4 ldmia sp!, {r4,pc} .balign 4 _020BBFE4: .word 0x8000FFFF + arm_func_end FUN_020BBFA4 arm_func_start FUN_020BBFE8 FUN_020BBFE8: ; 0x020BBFE8 @@ -16541,6 +16901,7 @@ FUN_020BBFE8: ; 0x020BBFE8 orr r0, r0, r2 str r0, [r3, #0x4] ldmia sp!, {r4,pc} + arm_func_end FUN_020BBFE8 arm_func_start FUN_020BC02C FUN_020BC02C: ; 0x020BC02C @@ -16571,6 +16932,7 @@ _020BC050: cmp lr, r4 blo _020BC050 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BC02C arm_func_start FUN_020BC094 FUN_020BC094: ; 0x020BC094 @@ -16601,6 +16963,7 @@ _020BC0B8: cmp lr, r4 blo _020BC0B8 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BC094 arm_func_start FUN_020BC0FC FUN_020BC0FC: ; 0x020BC0FC @@ -16622,6 +16985,7 @@ _020BC12C: bx lr .balign 4 _020BC138: .word 0x30585442 + arm_func_end FUN_020BC0FC arm_func_start FUN_020BC13C FUN_020BC13C: @@ -16629,6 +16993,7 @@ FUN_020BC13C: ldr r1, [r0, r1] add r0, r0, r1 bx lr + arm_func_end FUN_020BC13C arm_func_start FUN_020BC14C FUN_020BC14C: @@ -16723,6 +17088,7 @@ _020BC294: mvn r0, #0x0 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BC14C arm_func_start FUN_020BC2A0 FUN_020BC2A0: ; 0x020BC2A0 @@ -16824,6 +17190,7 @@ _020BC404: mov r0, #0x0 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BC2A0 arm_func_start FUN_020BC410 FUN_020BC410: ; 0x020BC410 @@ -16834,6 +17201,7 @@ FUN_020BC410: ; 0x020BC410 add r0, r0, #0x4 mla r0, r2, r1, r0 bx lr + arm_func_end FUN_020BC410 arm_func_start FUN_020BC42C FUN_020BC42C: ; 0x020BC42C @@ -16874,6 +17242,7 @@ _020BC49C: add r0, r3, r2, lsl #0x2 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020BC42C arm_func_start FUN_020BC4A8 FUN_020BC4A8: ; 0x020BC4A8 @@ -16881,6 +17250,7 @@ FUN_020BC4A8: ; 0x020BC4A8 add r0, r0, r2 add r0, r0, r1, lsl #0x4 bx lr + arm_func_end FUN_020BC4A8 arm_func_start FUN_020BC4B8 FUN_020BC4B8: ; 0x020BC4B8 @@ -16888,6 +17258,7 @@ FUN_020BC4B8: ; 0x020BC4B8 add r0, r0, r2 add r0, r0, r1, lsl #0x4 bx lr + arm_func_end FUN_020BC4B8 arm_func_start FUN_020BC4C8 FUN_020BC4C8: ; 0x020BC4C8 @@ -16905,6 +17276,7 @@ FUN_020BC4C8: ; 0x020BC4C8 addne r0, r12, r0 moveq r0, #0x0 bx lr + arm_func_end FUN_020BC4C8 arm_func_start FUN_020BC500 FUN_020BC500: @@ -17012,6 +17384,7 @@ _020BC688: .word UNK_020FFA14 _020BC68C: .word UNK_020FFA14 + 1 _020BC690: .word UNK_020FFA14 + 2 _020BC694: .word UNK_020FFA14 + 3 + arm_func_end FUN_020BC500 arm_func_start FUN_020BC698 FUN_020BC698: ; 0x020BC698 @@ -17230,6 +17603,7 @@ _020BC9C4: .word 0x1FFF0000 _020BC9C8: .word 0x00001FFF _020BC9CC: .word 0x00003FFF _020BC9D0: .word 0x00000FFF + arm_func_end FUN_020BC698 arm_func_start FUN_020BC9D4 FUN_020BC9D4: ; 0x020BC9D4 @@ -17494,6 +17868,7 @@ _020BCD40: ldmia sp!, {r4-r9,pc} .balign 4 _020BCDC0: .word 0x1FFF0000 + arm_func_end FUN_020BC9D4 arm_func_start FUN_020BCDC4 FUN_020BCDC4: ; 0x020BCDC4 @@ -17613,6 +17988,7 @@ _020BCF60: .word 0x1FFF0000 _020BCF64: .word 0x00001FFF _020BCF68: .word 0x00003FFF _020BCF6C: .word 0x00000FFF + arm_func_end FUN_020BCDC4 arm_func_start FUN_020BCF70 FUN_020BCF70: ; 0x020BCF70 @@ -17759,6 +18135,7 @@ _020BD150: ldmia sp!, {r4-r5,pc} .balign 4 _020BD184: .word 0x1FFF0000 + arm_func_end FUN_020BCF70 arm_func_start FUN_020BD188 FUN_020BD188: ; 0x020BD188 @@ -17861,6 +18238,7 @@ _020BD2E8: .word 0x00000FFF _020BD2EC: .word 0x1FFF0000 _020BD2F0: .word 0x00001FFF _020BD2F4: .word 0x00003FFF + arm_func_end FUN_020BD188 arm_func_start FUN_020BD2F8 FUN_020BD2F8: ; 0x020BD2F8 @@ -17967,6 +18345,7 @@ _020BD44C: ldmia sp!, {pc} .balign 4 _020BD46C: .word 0x1FFF0000 + arm_func_end FUN_020BD2F8 arm_func_start FUN_020BD470 FUN_020BD470: ; 0x020BD470 @@ -18253,6 +18632,7 @@ _020BD814: .balign 4 _020BD848: .word 0x00000FFF _020BD84C: .word UNK_021CEF7C + arm_func_end FUN_020BD470 arm_func_start FUN_020BD850 FUN_020BD850: ; 0x020BD850 @@ -18344,6 +18724,7 @@ _020BD994: .word UNK_020FFA14 _020BD998: .word UNK_020FFA14 + 1 _020BD99C: .word UNK_020FFA14 + 2 _020BD9A0: .word UNK_020FFA14 + 3 + arm_func_end FUN_020BD850 arm_func_start FUN_020BD9A4 FUN_020BD9A4: ; 0x020BD9A4 @@ -18374,6 +18755,7 @@ _020BD9F8: ldmia sp!, {r4,pc} .balign 4 _020BDA04: .word UNK_021CEF7C + arm_func_end FUN_020BD9A4 arm_func_start FUN_020BDA08 FUN_020BDA08: ; 0x020BDA08 @@ -18404,6 +18786,7 @@ FUN_020BDA08: ; 0x020BDA08 bx lr .balign 4 _020BDA6C: .word UNK_021CEF7C + arm_func_end FUN_020BDA08 arm_func_start FUN_020BDA70 FUN_020BDA70: ; 0x020BDA70 @@ -18425,6 +18808,7 @@ _020BDAA0: bl FUN_020BD470 add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020BDA70 arm_func_start FUN_020BDAB4 FUN_020BDAB4: ; 0x020BDAB4 @@ -18465,6 +18849,7 @@ _020BDB08: ldmia sp!, {r4-r5,pc} .balign 4 _020BDB3C: .word UNK_0210659C + arm_func_end FUN_020BDAB4 arm_func_start FUN_020BDB40 FUN_020BDB40: ; 0x020BDB40 @@ -18519,6 +18904,7 @@ FUN_020BDB40: ; 0x020BDB40 orr r0, r1, r0, lsl #0x10 str r0, [r8, #0xc] ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020BDB40 arm_func_start FUN_020BDC0C FUN_020BDC0C: ; 0x020BDC0C @@ -18567,6 +18953,7 @@ _020BDC6C: ldmia sp!, {r4-r9,pc} .balign 4 _020BDCB4: .word UNK_021065A8 + arm_func_end FUN_020BDC0C arm_func_start FUN_020BDCB8 FUN_020BDCB8: ; 0x020BDCB8 @@ -18636,6 +19023,7 @@ _020BDD9C: .balign 4 _020BDDA4: .word 0x0000FFFF _020BDDA8: .word 0x1FFF0000 + arm_func_end FUN_020BDCB8 arm_func_start FUN_020BDDAC FUN_020BDDAC: ; 0x020BDDAC @@ -18744,6 +19132,7 @@ _020BDEE0: _020BDF2C: .word 0x0000FFFF _020BDF30: .word 0x1FFF0000 _020BDF34: .word 0x00007C1F + arm_func_end FUN_020BDDAC arm_func_start FUN_020BDF38 FUN_020BDF38: ; 0x020BDF38 @@ -18766,6 +19155,7 @@ FUN_020BDF38: ; 0x020BDF38 orr r0, r0, #0x8 str r0, [r4, #0x0] ldmia sp!, {r4,pc} + arm_func_end FUN_020BDF38 arm_func_start FUN_020BDF84 FUN_020BDF84: ; 0x020BDF84 @@ -18814,6 +19204,7 @@ _020BDFE4: ldmia sp!, {r4-r9,pc} .balign 4 _020BE02C: .word UNK_021065A0 + arm_func_end FUN_020BDF84 arm_func_start FUN_020BE030 FUN_020BE030: ; 0x020BE030 @@ -18884,6 +19275,7 @@ _020BE120: str r4, [r6, #0x0] add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} + arm_func_end FUN_020BE030 arm_func_start FUN_020BE12C FUN_020BE12C: ; 0x020BE12C @@ -18961,6 +19353,7 @@ _020BE200: bx lr .balign 4 _020BE234: .word 0x0000FFFF + arm_func_end FUN_020BE12C arm_func_start FUN_020BE238 FUN_020BE238: @@ -19034,6 +19427,7 @@ _020BE304: bx lr .balign 4 _020BE330: .word 0x0000FFFF + arm_func_end FUN_020BE238 arm_func_start FUN_020BE334 FUN_020BE334: ; 0x020BE334 @@ -19069,6 +19463,7 @@ FUN_020BE334: ; 0x020BE334 bl FUN_020BE3B4 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BE334 arm_func_start FUN_020BE3B4 FUN_020BE3B4: ; 0x020BE3B4 @@ -19093,6 +19488,7 @@ FUN_020BE3B4: ; 0x020BE3B4 str r0, [r4, #0x14] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020BE3B4 arm_func_start FUN_020BE408 FUN_020BE408: ; 0x020BE408 @@ -19157,6 +19553,7 @@ _020BE4E0: .word 0x0000FFFF _020BE4E4: .word 0xC00F0000 _020BE4E8: .word 0x000007FF _020BE4EC: .word 0x003FF800 + arm_func_end FUN_020BE408 arm_func_start FUN_020BE4F0 FUN_020BE4F0: ; 0x020BE4F0 @@ -19206,6 +19603,7 @@ _020BE554: ldmia sp!, {r4-r9,pc} .balign 4 _020BE59C: .word UNK_021065A4 + arm_func_end FUN_020BE4F0 arm_func_start FUN_020BE5A0 FUN_020BE5A0: ; 0x020BE5A0 @@ -19225,6 +19623,7 @@ FUN_020BE5A0: ; 0x020BE5A0 str r1, [r0, #0x0] add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020BE5A0 arm_func_start FUN_020BE5E0 FUN_020BE5E0: ; 0x020BE5E0 @@ -19249,6 +19648,7 @@ _020BE608: bx lr .balign 4 _020BE628: .word UNK_02106598 + arm_func_end FUN_020BE5E0 arm_func_start FUN_020BE62C FUN_020BE62C: ; 0x020BE62C @@ -19268,6 +19668,7 @@ _020BE658: orr r1, r1, #0x18 str r1, [r0, #0x0] bx lr + arm_func_end FUN_020BE62C arm_func_start FUN_020BE668 FUN_020BE668: ; 0x020BE668 @@ -19305,6 +19706,7 @@ _020BE6C4: mov r2, #0x3 bl FUN_020BB1C0 ldmia sp!, {r4,pc} + arm_func_end FUN_020BE668 arm_func_start FUN_020BE6E4 FUN_020BE6E4: ; 0x020BE6E4 @@ -19393,6 +19795,7 @@ _020BE804: _020BE820: .word 0x00101610 _020BE824: .word 0x00101810 _020BE828: .word UNK_021067B0 + arm_func_end FUN_020BE6E4 arm_func_start FUN_020BE82C FUN_020BE82C: ; 0x020BE82C @@ -19405,6 +19808,7 @@ FUN_020BE82C: ; 0x020BE82C str r1, [r0, #0x30] str r1, [r0, #0x34] bx lr + arm_func_end FUN_020BE82C arm_func_start FUN_020BE850 FUN_020BE850: ; 0x020BE850 @@ -19425,6 +19829,7 @@ FUN_020BE850: ; 0x020BE850 str r1, [r0, #0x34] str r12, [r0, #0x10] bx lr + arm_func_end FUN_020BE850 arm_func_start FUN_020BE894 FUN_020BE894: ; 0x020BE894 @@ -19476,6 +19881,7 @@ FUN_020BE894: ; 0x020BE894 str r0, [r6, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BE894 arm_func_start FUN_020BE954 FUN_020BE954: ; 0x020BE954 @@ -19537,6 +19943,7 @@ FUN_020BE954: ; 0x020BE954 str r0, [r10, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020BE954 arm_func_start FUN_020BEA3C FUN_020BEA3C: ; 0x020BEA3C @@ -19558,6 +19965,7 @@ FUN_020BEA3C: ; 0x020BEA3C str r1, [r0, #0x34] str r12, [r0, #0x10] bx lr + arm_func_end FUN_020BEA3C arm_func_start FUN_020BEA84 FUN_020BEA84: ; 0x020BEA84 @@ -19592,6 +20000,7 @@ FUN_020BEA84: ; 0x020BEA84 str r1, [r0, #0x34] str r2, [r0, #0x10] ldmia sp!, {r4,pc} + arm_func_end FUN_020BEA84 arm_func_start FUN_020BEB00 FUN_020BEB00: ; 0x020BEB00 @@ -19649,6 +20058,7 @@ FUN_020BEB00: ; 0x020BEB00 str r0, [r6, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BEB00 arm_func_start FUN_020BEBD8 FUN_020BEBD8: ; 0x020BEBD8 @@ -19721,6 +20131,7 @@ FUN_020BEBD8: ; 0x020BEBD8 str r0, [r10, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020BEBD8 arm_func_start FUN_020BECEC FUN_020BECEC: ; 0x020BECEC @@ -19812,6 +20223,7 @@ _020BEE2C: .word UNK_021CEF7C _020BEE30: .word UNK_021CFD8C _020BEE34: .word UNK_021CFD90 _020BEE38: .word UNK_021CFD94 + arm_func_end FUN_020BECEC arm_func_start FUN_020BEE3C FUN_020BEE3C: ; 0x020BEE3C @@ -19873,6 +20285,7 @@ _020BEEE8: bl FUN_020BB1C0 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020BEE3C arm_func_start FUN_020BEF10 FUN_020BEF10: ; 0x020BEF10 @@ -19995,6 +20408,7 @@ _020BF0B0: .balign 4 _020BF0CC: .word 0x00101710 _020BF0D0: .word 0x00101910 + arm_func_end FUN_020BEF10 arm_func_start FUN_020BF0D4 FUN_020BF0D4: ; 0x020BF0D4 @@ -20140,6 +20554,7 @@ _020BF2EC: .word UNK_021CFD88 _020BF2F0: .word UNK_021CFD8C _020BF2F4: .word UNK_021CFD90 _020BF2F8: .word UNK_021CFD94 + arm_func_end FUN_020BF0D4 arm_func_start FUN_020BF2FC FUN_020BF2FC: ; 0x020BF2FC @@ -20225,6 +20640,7 @@ _020BF404: bl FUN_020BB1C0 add sp, sp, #0x10 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BF2FC arm_func_start FUN_020BF42C FUN_020BF42C: ; 0x020BF42C @@ -20313,6 +20729,7 @@ _020BF54C: _020BF568: .word 0x00101610 _020BF56C: .word 0x00101810 _020BF570: .word UNK_021067D0 + arm_func_end FUN_020BF42C arm_func_start FUN_020BF574 FUN_020BF574: ; 0x020BF574 @@ -20325,6 +20742,7 @@ FUN_020BF574: ; 0x020BF574 str r1, [r0, #0x30] str r1, [r0, #0x34] bx lr + arm_func_end FUN_020BF574 arm_func_start FUN_020BF598 FUN_020BF598: ; 0x020BF598 @@ -20348,6 +20766,7 @@ FUN_020BF598: ; 0x020BF598 str r1, [r0, #0x34] str r12, [r0, #0x10] bx lr + arm_func_end FUN_020BF598 arm_func_start FUN_020BF5E8 FUN_020BF5E8: ; 0x020BF5E8 @@ -20407,6 +20826,7 @@ FUN_020BF5E8: ; 0x020BF5E8 str r0, [r6, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BF5E8 arm_func_start FUN_020BF6C8 FUN_020BF6C8: ; 0x020BF6C8 @@ -20474,6 +20894,7 @@ FUN_020BF6C8: ; 0x020BF6C8 str r0, [r10, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020BF6C8 arm_func_start FUN_020BF7C8 FUN_020BF7C8: ; 0x020BF7C8 @@ -20495,6 +20916,7 @@ FUN_020BF7C8: ; 0x020BF7C8 str r1, [r0, #0x34] str r12, [r0, #0x10] bx lr + arm_func_end FUN_020BF7C8 arm_func_start FUN_020BF810 FUN_020BF810: ; 0x020BF810 @@ -20531,6 +20953,7 @@ FUN_020BF810: ; 0x020BF810 str r1, [r0, #0x34] str r3, [r0, #0x10] ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BF810 arm_func_start FUN_020BF894 FUN_020BF894: ; 0x020BF894 @@ -20595,6 +21018,7 @@ FUN_020BF894: ; 0x020BF894 str r0, [r6, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BF894 arm_func_start FUN_020BF988 FUN_020BF988: ; 0x020BF988 @@ -20667,6 +21091,7 @@ FUN_020BF988: ; 0x020BF988 str r0, [r10, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020BF988 arm_func_start FUN_020BFA9C FUN_020BFA9C: ; 0x020BFA9C @@ -20772,6 +21197,7 @@ _020BFC00: _020BFC1C: .word 0x00101610 _020BFC20: .word 0x00101810 _020BFC24: .word UNK_021067F0 + arm_func_end FUN_020BFA9C arm_func_start FUN_020BFC28 FUN_020BFC28: ; 0x020BFC28 @@ -20784,6 +21210,7 @@ FUN_020BFC28: ; 0x020BFC28 str r1, [r0, #0x30] str r1, [r0, #0x34] bx lr + arm_func_end FUN_020BFC28 arm_func_start FUN_020BFC4C FUN_020BFC4C: ; 0x020BFC4C @@ -20803,6 +21230,7 @@ FUN_020BFC4C: ; 0x020BFC4C str r1, [r0, #0x34] str r3, [r0, #0x10] bx lr + arm_func_end FUN_020BFC4C arm_func_start FUN_020BFC8C FUN_020BFC8C: ; 0x020BFC8C @@ -20849,6 +21277,7 @@ FUN_020BFC8C: ; 0x020BFC8C str r0, [r6, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BFC8C arm_func_start FUN_020BFD38 FUN_020BFD38: ; 0x020BFD38 @@ -20905,6 +21334,7 @@ FUN_020BFD38: ; 0x020BFD38 str r0, [r10, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020BFD38 arm_func_start FUN_020BFE0C FUN_020BFE0C: ; 0x020BFE0C @@ -20931,6 +21361,7 @@ FUN_020BFE0C: ; 0x020BFE0C str lr, [r0, #0x10] add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020BFE0C arm_func_start FUN_020BFE68 FUN_020BFE68: ; 0x020BFE68 @@ -20967,6 +21398,7 @@ FUN_020BFE68: ; 0x020BFE68 str r1, [r0, #0x34] str r2, [r0, #0x10] ldmia sp!, {r4,pc} + arm_func_end FUN_020BFE68 arm_func_start FUN_020BFEEC FUN_020BFEEC: ; 0x020BFEEC @@ -21028,6 +21460,7 @@ FUN_020BFEEC: ; 0x020BFEEC str r0, [r6, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BFEEC arm_func_start FUN_020BFFD4 FUN_020BFFD4: ; 0x020BFFD4 @@ -21118,3 +21551,4 @@ FUN_020BFFD4: ; 0x020BFFD4 str r0, [r7, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020BFFD4 \ No newline at end of file -- cgit v1.2.3 From 335cfe43c3a5bdf40aa815e2af3076302491a0bf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 23 May 2021 08:22:47 -0400 Subject: Add arm_func_end to already-split libnnsfnd files --- arm9/asm/NNS_FND_allocator.s | 5 +++++ arm9/asm/NNS_FND_expheap.s | 16 ++++++++++++++++ arm9/asm/NNS_FND_frameheap.s | 11 +++++++++++ arm9/asm/NNS_FND_heapcommon.s | 4 ++++ arm9/asm/NNS_FND_list.s | 9 ++++++++- 5 files changed, 44 insertions(+), 1 deletion(-) (limited to 'arm9/asm') diff --git a/arm9/asm/NNS_FND_allocator.s b/arm9/asm/NNS_FND_allocator.s index f6e77344..404b1983 100644 --- a/arm9/asm/NNS_FND_allocator.s +++ b/arm9/asm/NNS_FND_allocator.s @@ -22,6 +22,7 @@ FUN_020AE82C: ; 0x020AE82C bx lr .balign 4 _020AE848: .word UNK_020FF7CC + arm_func_end FUN_020AE82C arm_func_start FUN_020AE84C FUN_020AE84C: ; 0x020AE84C @@ -32,6 +33,7 @@ FUN_020AE84C: ; 0x020AE84C blx r2 add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020AE84C arm_func_start FUN_020AE868 FUN_020AE868: ; 0x020AE868 @@ -42,6 +44,7 @@ FUN_020AE868: ; 0x020AE868 blx r2 add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020AE868 arm_func_start FUN_020AE884 FUN_020AE884: ; 0x020AE884 @@ -50,6 +53,7 @@ FUN_020AE884: ; 0x020AE884 bx r12 .balign 4 _020AE890: .word FUN_020ADDF0 + arm_func_end FUN_020AE884 arm_func_start FUN_020AE894 FUN_020AE894: ; 0x020AE894 @@ -60,3 +64,4 @@ FUN_020AE894: ; 0x020AE894 bx r12 .balign 4 _020AE8A8: .word tempName_NNS_FndAllocFromExpHeapEx + arm_func_end FUN_020AE894 diff --git a/arm9/asm/NNS_FND_expheap.s b/arm9/asm/NNS_FND_expheap.s index c30c6e88..cb42f116 100644 --- a/arm9/asm/NNS_FND_expheap.s +++ b/arm9/asm/NNS_FND_expheap.s @@ -10,6 +10,7 @@ FUN_020ADDC0: ; 0x020ADDC0 ldr r0, [r0, #-0xc] bx lr + arm_func_end FUN_020ADDC0 arm_func_start FUN_020ADDC8 FUN_020ADDC8: ; 0x020ADDC8 @@ -24,6 +25,7 @@ _020ADDD8: cmp r2, #0x0 bne _020ADDD8 bx lr + arm_func_end FUN_020ADDC8 arm_func_start FUN_020ADDF0 FUN_020ADDF0: ; 0x020ADDF0 @@ -42,6 +44,7 @@ FUN_020ADDF0: ; 0x020ADDF0 bl FUN_020AE02C add sp, sp, #0xc ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020ADDF0 arm_func_start FUN_020ADE2C FUN_020ADE2C: ; 0x020ADE2C @@ -146,6 +149,7 @@ _020ADF90: ldmia sp!, {r4-r10,pc} .balign 4 _020ADF9C: .word 0x00004652 + arm_func_end FUN_020ADE2C arm_func_start tempName_NNS_FndAllocFromExpHeapEx tempName_NNS_FndAllocFromExpHeapEx: ; 0x020ADFA0 @@ -165,6 +169,7 @@ _020ADFCC: bl FUN_020AE11C add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end tempName_NNS_FndAllocFromExpHeapEx arm_func_start thunk_FUN_020adc8c thunk_FUN_020adc8c: ; 0x020ADFDC @@ -172,6 +177,7 @@ thunk_FUN_020adc8c: ; 0x020ADFDC bx r12 .balign 4 _020ADFE4: .word FUN_020ADC8C + arm_func_end thunk_FUN_020adc8c arm_func_start tempName_NNS_FndCreateExpHeapEx tempName_NNS_FndCreateExpHeapEx: ; 0x020ADFE8 @@ -194,6 +200,7 @@ _020AE020: bl FUN_020AE420 add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end tempName_NNS_FndCreateExpHeapEx arm_func_start FUN_020AE02C FUN_020AE02C: @@ -262,6 +269,7 @@ _020AE0D4: ldmia sp!, {r4-r6,pc} .balign 4 _020AE118: .word 0x00004652 + arm_func_end FUN_020AE02C arm_func_start FUN_020AE11C FUN_020AE11C: ; 0x020AE11C @@ -315,6 +323,7 @@ _020AE1B0: bl FUN_020AE298 add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} + arm_func_end FUN_020AE11C arm_func_start FUN_020AE1D8 FUN_020AE1D8: ; 0x020AE1D8 @@ -369,6 +378,7 @@ _020AE270: bl FUN_020AE298 add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} + arm_func_end FUN_020AE1D8 arm_func_start FUN_020AE298 FUN_020AE298: ; 0x020AE298 @@ -474,6 +484,7 @@ _020AE378: .balign 4 _020AE418: .word 0x00004652 _020AE41C: .word 0x00005544 + arm_func_end FUN_020AE298 arm_func_start FUN_020AE420 FUN_020AE420: ; 0x020AE420 @@ -510,6 +521,7 @@ FUN_020AE420: ; 0x020AE420 .balign 4 _020AE498: .word 0x45585048 _020AE49C: .word 0x00004652 + arm_func_end FUN_020AE420 arm_func_start FUN_020AE4A0 FUN_020AE4A0: ; 0x020AE4A0 @@ -525,6 +537,7 @@ FUN_020AE4A0: ; 0x020AE4A0 mov r0, r3 str r2, [r3, #0xc] bx lr + arm_func_end FUN_020AE4A0 arm_func_start FUN_020AE4D0 FUN_020AE4D0: ; 0x020AE4D0 @@ -540,6 +553,7 @@ FUN_020AE4D0: ; 0x020AE4D0 streq r1, [r0, #0x4] mov r0, r1 bx lr + arm_func_end FUN_020AE4D0 arm_func_start FUN_020AE500 FUN_020AE500: ; 0x020AE500 @@ -553,6 +567,7 @@ FUN_020AE500: ; 0x020AE500 streq r2, [r0, #0x4] mov r0, r2 bx lr + arm_func_end FUN_020AE500 arm_func_start FUN_020AE528 FUN_020AE528: ; 0x020AE528 @@ -567,3 +582,4 @@ FUN_020AE528: ; 0x020AE528 add r1, r1, r3 str r1, [r0, #0x4] bx lr + arm_func_end FUN_020AE528 diff --git a/arm9/asm/NNS_FND_frameheap.s b/arm9/asm/NNS_FND_frameheap.s index 4dc662d7..078180b5 100644 --- a/arm9/asm/NNS_FND_frameheap.s +++ b/arm9/asm/NNS_FND_frameheap.s @@ -33,6 +33,7 @@ _020AE584: ldr r1, [r3, #0xc] str r1, [r2, #0x8] bx lr + arm_func_end FUN_020AE554 arm_func_start FUN_020AE5B0 FUN_020AE5B0: ; 0x020AE5B0 @@ -56,6 +57,7 @@ FUN_020AE5B0: ; 0x020AE5B0 str r0, [r4, #0x8] mov r0, #0x1 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AE5B0 arm_func_start FUN_020AE600 FUN_020AE600: ; 0x020AE600 @@ -74,6 +76,7 @@ _020AE61C: bl FUN_020AE6C8 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020AE600 arm_func_start FUN_020AE638 FUN_020AE638: ; 0x020AE638 @@ -94,6 +97,7 @@ _020AE668: bl FUN_020AE710 add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020AE638 arm_func_start thunk_FUN_020adc8c_2 thunk_FUN_020adc8c_2: ; 0x020AE678 @@ -101,6 +105,7 @@ thunk_FUN_020adc8c_2: ; 0x020AE678 bx r12 .balign 4 _020AE680: .word FUN_020ADC8C + arm_func_end thunk_FUN_020adc8c_2 arm_func_start FUN_020AE684 FUN_020AE684: ; 0x020AE684 @@ -123,6 +128,7 @@ _020AE6BC: bl FUN_020AE7E0 add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020AE684 arm_func_start FUN_020AE6C8 FUN_020AE6C8: ; 0x020AE6C8 @@ -140,6 +146,7 @@ _020AE6EC: ldr r0, [r0, #0x1c] str r0, [r2, #0x4] bx lr + arm_func_end FUN_020AE6C8 arm_func_start FUN_020AE6F8 FUN_020AE6F8: ; 0x020AE6F8 @@ -149,6 +156,7 @@ FUN_020AE6F8: ; 0x020AE6F8 mov r0, #0x0 str r0, [r2, #0x8] bx lr + arm_func_end FUN_020AE6F8 arm_func_start FUN_020AE710 FUN_020AE710: ; 0x020AE710 @@ -180,6 +188,7 @@ _020AE76C: str r4, [r5, #0x4] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020AE710 arm_func_start FUN_020AE77C FUN_020AE77C: @@ -209,6 +218,7 @@ _020AE7D4: mov r0, r5 str r4, [r6, #0x0] ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AE77C arm_func_start FUN_020AE7E0 FUN_020AE7E0: ; 0x020AE7E0 @@ -232,3 +242,4 @@ FUN_020AE7E0: ; 0x020AE7E0 ldmia sp!, {r4-r5,pc} .balign 4 _020AE828: .word 0x46524D48 + arm_func_end FUN_020AE7E0 diff --git a/arm9/asm/NNS_FND_heapcommon.s b/arm9/asm/NNS_FND_heapcommon.s index 196d12b0..0aa40512 100644 --- a/arm9/asm/NNS_FND_heapcommon.s +++ b/arm9/asm/NNS_FND_heapcommon.s @@ -21,6 +21,7 @@ FUN_020ADC8C: ; 0x020ADC8C mov r1, r4 bl FUN_020ADAB0 ldmia sp!, {r4,pc} + arm_func_end FUN_020ADC8C arm_func_start FUN_020ADCA4 FUN_020ADCA4: @@ -61,6 +62,7 @@ _020ADD14: .balign 4 _020ADD28: .word UNK_021CCD38 _020ADD2C: .word UNK_021CCD3C + arm_func_end FUN_020ADCA4 arm_func_start FUN_020ADD30 FUN_020ADD30: ; 0x020ADD30 @@ -75,6 +77,7 @@ FUN_020ADD30: ; 0x020ADD30 ldmia sp!, {r4,pc} .balign 4 _020ADD54: .word UNK_021CCD3C + arm_func_end FUN_020ADD30 arm_func_start FUN_020ADD58 FUN_020ADD58: @@ -107,3 +110,4 @@ _020ADDA4: _020ADDB8: mov r0, #0x0 ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020ADD58 diff --git a/arm9/asm/NNS_FND_list.s b/arm9/asm/NNS_FND_list.s index 9f9ff1e0..b88b2159 100644 --- a/arm9/asm/NNS_FND_list.s +++ b/arm9/asm/NNS_FND_list.s @@ -10,6 +10,7 @@ FUN_020ADA84: ; 0x020ADA84 ldrneh r0, [r0, #0xa] ldrne r0, [r1, r0] bx lr + arm_func_end FUN_020ADA84 arm_func_start FUN_020ADA98 FUN_020ADA98: ; 0x020ADA98 @@ -19,6 +20,7 @@ FUN_020ADA98: ; 0x020ADA98 addne r0, r1, r0 ldrne r0, [r0, #0x4] bx lr + arm_func_end FUN_020ADA98 arm_func_start FUN_020ADAB0 FUN_020ADAB0: ; 0x020ADAB0 @@ -48,6 +50,7 @@ FUN_020ADAB0: ; 0x020ADAB0 strh r1, [r0, #0x8] add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020ADAB0 arm_func_start FUN_020ADB18 FUN_020ADB18: ; 0x020ADB18 @@ -82,6 +85,7 @@ _020ADB54: strh r1, [r0, #0x8] add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020ADB18 arm_func_start FUN_020ADB8C FUN_020ADB8C: ; 0x020ADB8C @@ -109,6 +113,7 @@ _020ADBAC: strh r1, [r0, #0x8] add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020ADB8C arm_func_start FUN_020ADBE8 FUN_020ADBE8: ; 0x020ADBE8 @@ -137,6 +142,7 @@ _020ADC08: strh r1, [r0, #0x8] add sp, sp, #0x4 ldmia sp!, {pc} + arm_func_end FUN_020ADBE8 arm_func_start FUN_020ADC48 FUN_020ADC48: ; 0x020ADC48 @@ -151,6 +157,7 @@ FUN_020ADC48: ; 0x020ADC48 add r1, r1, #0x1 strh r1, [r0, #0x8] bx lr + arm_func_end FUN_020ADC48 arm_func_start FUN_020ADC74 FUN_020ADC74: ; 0x020ADC74 @@ -160,4 +167,4 @@ FUN_020ADC74: ; 0x020ADC74 strh r2, [r0, #0x8] strh r1, [r0, #0xa] bx lr - + arm_func_end FUN_020ADC74 -- cgit v1.2.3 From d73b12d8fb7b7b386cafe98976373c8b7d50dc3d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 23 May 2021 13:28:56 -0400 Subject: Add missing address comments in unk_020ADA84.s --- arm9/asm/unk_020ADA84.s | 78 ++++++++++++++++++++++++------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) (limited to 'arm9/asm') diff --git a/arm9/asm/unk_020ADA84.s b/arm9/asm/unk_020ADA84.s index b4d467ae..21bde852 100644 --- a/arm9/asm/unk_020ADA84.s +++ b/arm9/asm/unk_020ADA84.s @@ -906,7 +906,7 @@ _020AEAF0: .word 0x0000FFFF arm_func_end FUN_020AE96C arm_func_start FUN_020AEAF4 -FUN_020AEAF4: +FUN_020AEAF4: ; 0x020AEAF4 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 ldr r0, _020AEB68 ; =UNK_021CCD48 @@ -1015,7 +1015,7 @@ _020AEC5C: .word UNK_021064D0 arm_func_end FUN_020AEC10 arm_func_start FUN_020AEC60 -FUN_020AEC60: +FUN_020AEC60: ; 0x020AEC60 ldr r0, _020AEC78 ; =UNK_021CCD4C mov r2, #0x0 ldr r1, [r0, #0x8] @@ -1249,7 +1249,7 @@ _020AEF38: .word FUN_020AEFD4 arm_func_end FUN_020AEF1C arm_func_start FUN_020AEF3C -FUN_020AEF3C: +FUN_020AEF3C: ; 0x020AEF3C stmdb sp!, {r4,lr} mov r4, r0 bl FUN_020AF2E0 @@ -1712,7 +1712,7 @@ FUN_020AF30C: ; 0x020AF30C arm_func_end FUN_020AF30C arm_func_start FUN_020AF334 -FUN_020AF334: +FUN_020AF334: ; 0x020AF334 stmdb sp!, {r4-r6,lr} sub sp, sp, #0x10 add r3, r2, r3 @@ -1805,7 +1805,7 @@ _020AF418: arm_func_end FUN_020AF334 arm_func_start FUN_020AF488 -FUN_020AF488: +FUN_020AF488: ; 0x020AF488 stmdb sp!, {r4-r10,lr} ldr r4, [r0, #0x0] ldr r9, [sp, #0x20] @@ -1894,7 +1894,7 @@ _020AF5B8: arm_func_end FUN_020AF488 arm_func_start FUN_020AF5C4 -FUN_020AF5C4: +FUN_020AF5C4: ; 0x020AF5C4 stmdb sp!, {lr} sub sp, sp, #0x4 mov r12, #0x0 @@ -2235,7 +2235,7 @@ FUN_020AFA28: ; 0x020AFA28 arm_func_end FUN_020AFA28 arm_func_start FUN_020AFA30 -FUN_020AFA30: +FUN_020AFA30: ; 0x020AFA30 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r0, _020AFA78 ; =UNK_021CCD88 @@ -2880,7 +2880,7 @@ _020B01CC: arm_func_end FUN_020B01B0 arm_func_start FUN_020B01F8 -FUN_020B01F8: +FUN_020B01F8: ; 0x020B01F8 stmdb sp!, {lr} sub sp, sp, #0x4 ldrh r2, [r0, #0xc] @@ -3033,7 +3033,7 @@ _020B0404: .word 0x04000504 arm_func_end FUN_020B0340 arm_func_start FUN_020B0408 -FUN_020B0408: +FUN_020B0408: ; 0x020B0408 ldr r1, [r0, #0x14] cmp r1, #0x0 ldreq r0, [r0, #0x18] @@ -3131,7 +3131,7 @@ FUN_020B04FC: ; 0x020B04FC arm_func_end FUN_020B04FC arm_func_start FUN_020B0518 -FUN_020B0518: +FUN_020B0518: ; 0x020B0518 stmdb sp!, {r4,lr} mov r4, r0 bl FUN_020B06EC @@ -3142,7 +3142,7 @@ FUN_020B0518: arm_func_end FUN_020B0518 arm_func_start FUN_020B0534 -FUN_020B0534: +FUN_020B0534: ; 0x020B0534 stmdb sp!, {r4-r8,lr} mov r8, r0 ldr r0, [r8, #0x8] @@ -3269,7 +3269,7 @@ FUN_020B06E0: ; 0x020B06E0 arm_func_end FUN_020B06E0 arm_func_start FUN_020B06EC -FUN_020B06EC: +FUN_020B06EC: ; 0x020B06EC ldr r3, [r0, #0x18] ldrh r2, [r3, #0x0] cmp r1, r2 @@ -4008,13 +4008,13 @@ FUN_020B10BC: ; 0x020B10BC arm_func_end FUN_020B10BC arm_func_start FUN_020B10C4 -FUN_020B10C4: +FUN_020B10C4: ; 0x020B10C4 str r2, [r0, r1, lsl #0x2] bx lr arm_func_end FUN_020B10C4 arm_func_start FUN_020B10CC -FUN_020B10CC: +FUN_020B10CC: ; 0x020B10CC mov r2, #0x0 mvn r1, #0x0 _020B10D4: @@ -4706,7 +4706,7 @@ _020B19A4: .word 0x04001000 arm_func_end FUN_020B1768 arm_func_start FUN_020B19A8 -FUN_020B19A8: +FUN_020B19A8: ; 0x020B19A8 add r0, r0, r1, lsl #0x2 ldr r1, [r0, #0x8] mvn r0, #0x0 @@ -4744,7 +4744,7 @@ _020B19E4: arm_func_end FUN_020B19DC arm_func_start FUN_020B19FC -FUN_020B19FC: +FUN_020B19FC: ; 0x020B19FC ldr r1, [r0, r1, lsl #0x2] mvn r0, #0x0 cmp r1, r0 @@ -4792,7 +4792,7 @@ FUN_020B1A40: ; 0x020B1A40 arm_func_end FUN_020B1A40 arm_func_start FUN_020B1A68 -FUN_020B1A68: +FUN_020B1A68: ; 0x020B1A68 ldr ip, _020B1A74 ; =FUN_020B1A40 str r1, [r0, #0x0] bx r12 @@ -5757,7 +5757,7 @@ _020B2788: .word FUN_020B5040 arm_func_end thunk_FUN_020b5040 arm_func_start FUN_020B278C -FUN_020B278C: +FUN_020B278C: ; 0x020B278C ldr r0, [r0, #0x78] bx lr arm_func_end FUN_020B278C @@ -6754,7 +6754,7 @@ _020B3550: .word FX_SinCosTable_ arm_func_end FUN_020B3474 arm_func_start FUN_020B3554 -FUN_020B3554: +FUN_020B3554: ; 0x020B3554 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r5, r0 @@ -7513,7 +7513,7 @@ _020B400C: .word UNK_02106578 arm_func_end FUN_020B3EE0 arm_func_start FUN_020B4010 -FUN_020B4010: +FUN_020B4010: ; 0x020B4010 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 ldr r0, _020B4154 ; =UNK_021CDD70 @@ -8176,7 +8176,7 @@ _020B4944: .word UNK_02106590 arm_func_end FUN_020B46B4 arm_func_start FUN_020B4948 -FUN_020B4948: +FUN_020B4948: ; 0x020B4948 ldr r0, _020B4954 ; =UNK_02106590 ldr r0, [r0, #0x0] bx lr @@ -8185,7 +8185,7 @@ _020B4954: .word UNK_02106590 arm_func_end FUN_020B4948 arm_func_start FUN_020B4958 -FUN_020B4958: +FUN_020B4958: ; 0x020B4958 ldr r1, _020B4964 ; =UNK_02106590 str r0, [r1, #0x0] bx lr @@ -8204,7 +8204,7 @@ _020B4978: .word UNK_021CED10 arm_func_end FUN_020B4968 arm_func_start FUN_020B497C -FUN_020B497C: +FUN_020B497C: ; 0x020B497C ldr r1, _020B4988 ; =UNK_021CED08 str r0, [r1, #0x0] bx lr @@ -8445,7 +8445,7 @@ _020B4CD8: .word UNK_021CED14 arm_func_end FUN_020B4BF4 arm_func_start FUN_020B4CDC -FUN_020B4CDC: +FUN_020B4CDC: ; 0x020B4CDC stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 ldr r1, _020B4D9C ; =UNK_021CED14 @@ -8641,7 +8641,7 @@ FUN_020B4F38: ; 0x020B4F38 arm_func_end FUN_020B4F38 arm_func_start FUN_020B4F74 -FUN_020B4F74: +FUN_020B4F74: ; 0x020B4F74 ldr r0, [r0, #0x24] ands r0, r0, #0x2 movne r0, #0x1 @@ -8650,7 +8650,7 @@ FUN_020B4F74: arm_func_end FUN_020B4F74 arm_func_start FUN_020B4F88 -FUN_020B4F88: +FUN_020B4F88: ; 0x020B4F88 ldr r0, [r0, #0x24] ands r0, r0, #0x1 movne r0, #0x1 @@ -9532,7 +9532,7 @@ _020B5BAC: arm_func_end FUN_020B5B54 arm_func_start FUN_020B5BC8 -FUN_020B5BC8: +FUN_020B5BC8: ; 0x020B5BC8 stmdb sp!, {r4-r10,lr} sub sp, sp, #0x8 mov r8, r0 @@ -11465,7 +11465,7 @@ _020B76AC: .word 0x46494E46 arm_func_end FUN_020B7558 arm_func_start FUN_020B76B0 -FUN_020B76B0: +FUN_020B76B0: ; 0x020B76B0 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 ldrsb r2, [r0, #0x4] @@ -11650,7 +11650,7 @@ _020B7908: arm_func_end FUN_020B7864 arm_func_start FUN_020B7910 -FUN_020B7910: +FUN_020B7910: ; 0x020B7910 stmdb sp!, {r4-r6,lr} ldrh r5, [r1, #0x0] ldr r2, [r2, #0x2c] @@ -11817,7 +11817,7 @@ _020B7B3C: .word 0xC00F0000 arm_func_end FUN_020B7AB8 arm_func_start FUN_020B7B40 -FUN_020B7B40: +FUN_020B7B40: ; 0x020B7B40 stmdb sp!, {r4-r11,lr} sub sp, sp, #0xc mov r11, r1 @@ -12083,7 +12083,7 @@ _020B7E74: arm_func_end FUN_020B7E28 arm_func_start FUN_020B7E88 -FUN_020B7E88: +FUN_020B7E88: ; 0x020B7E88 ldr r2, [r0, #0x0] cmp r2, #0x0 moveq r0, #0x0 @@ -12937,7 +12937,7 @@ _020B8948: arm_func_end FUN_020B86B0 arm_func_start FUN_020B8998 -FUN_020B8998: +FUN_020B8998: ; 0x020B8998 cmp r3, #0x0 beq _020B89C8 ldr r1, [r0, #0x0] @@ -15465,7 +15465,7 @@ _020BAD70: .word UNK_021CEF7C arm_func_end FUN_020BAC98 arm_func_start FUN_020BAD74 -FUN_020BAD74: +FUN_020BAD74: ; 0x020BAD74 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 cmp r1, #0x0 @@ -15605,7 +15605,7 @@ _020BAF68: .word UNK_02106620 arm_func_end FUN_020BADE4 arm_func_start FUN_020BAF6C -FUN_020BAF6C: +FUN_020BAF6C: ; 0x020BAF6C stmdb sp!, {r4-r6,lr} mov r5, r0 ldr r6, _020BAFB4 ; =UNK_02106730 @@ -15769,7 +15769,7 @@ _020BB1BC: .word UNK_02106620 arm_func_end FUN_020BAFB8 arm_func_start FUN_020BB1C0 -FUN_020BB1C0: +FUN_020BB1C0: ; 0x020BB1C0 stmdb sp!, {r4-r6,lr} ldr r3, _020BB2A4 ; =UNK_021D1C80 mov r6, r0 @@ -16988,7 +16988,7 @@ _020BC138: .word 0x30585442 arm_func_end FUN_020BC0FC arm_func_start FUN_020BC13C -FUN_020BC13C: +FUN_020BC13C: ; 0x020BC13C ldrh r1, [r0, #0xc] ldr r1, [r0, r1] add r0, r0, r1 @@ -16996,7 +16996,7 @@ FUN_020BC13C: arm_func_end FUN_020BC13C arm_func_start FUN_020BC14C -FUN_020BC14C: +FUN_020BC14C: ; 0x020BC14C stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 ldrb r2, [r0, #0x1] @@ -17279,7 +17279,7 @@ FUN_020BC4C8: ; 0x020BC4C8 arm_func_end FUN_020BC4C8 arm_func_start FUN_020BC500 -FUN_020BC500: +FUN_020BC500: ; 0x020BC500 stmdb sp!, {r4,lr} ands r4, r3, #0x8000 beq _020BC5E0 @@ -19356,7 +19356,7 @@ _020BE234: .word 0x0000FFFF arm_func_end FUN_020BE12C arm_func_start FUN_020BE238 -FUN_020BE238: +FUN_020BE238: ; 0x020BE238 ands r12, r1, #0x20000000 movne r0, r2 bxne lr -- cgit v1.2.3 From 5bc62e95bf1ea5d2416118d688b1e938f978d497 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 23 May 2021 14:50:49 -0400 Subject: Split libnns --- arm9/asm/NNS_G2D_g2d_animation.s | 348 + arm9/asm/NNS_G2D_g2d_cellanimati.s | 425 + arm9/asm/NNS_G2D_g2d_celltransfe.s | 298 + arm9/asm/NNS_G2D_g2d_charcanvas.s | 1379 +++ arm9/asm/NNS_G2D_g2d_font.s | 292 + arm9/asm/NNS_G2D_g2d_image.s | 797 ++ arm9/asm/NNS_G2D_g2d_load.s | 58 + arm9/asm/NNS_G2D_g2d_multicellan.s | 498 + arm9/asm/NNS_G2D_g2d_nan_load.s | 161 + arm9/asm/NNS_G2D_g2d_ncg_load.s | 71 + arm9/asm/NNS_G2D_g2d_ncl_load.s | 71 + arm9/asm/NNS_G2D_g2d_nft_load.s | 183 + arm9/asm/NNS_G2D_g2d_nmc_load.s | 88 + arm9/asm/NNS_G2D_g2d_nob_load.s | 118 + arm9/asm/NNS_G2D_g2d_node.s | 20 + arm9/asm/NNS_G2D_g2d_nsc_load.s | 23 + arm9/asm/NNS_G2D_g2d_oam.s | 724 ++ arm9/asm/NNS_G2D_g2d_oamsoftware.s | 436 + arm9/asm/NNS_G2D_g2d_palettetabl.s | 13 + arm9/asm/NNS_G2D_g2d_renderer.s | 2043 ++++ arm9/asm/NNS_G2D_g2d_renderercor.s | 1117 ++ arm9/asm/NNS_G2D_g2d_softsprite.s | 133 + arm9/asm/NNS_G2D_g2d_srtcontrol.s | 68 + arm9/asm/NNS_G2D_g2d_textcanvas.s | 226 + arm9/asm/NNS_G2D_g2di_bitreader.s | 37 + arm9/asm/NNS_G2D_g2di_mtx32.s | 81 + arm9/asm/NNS_G2D_g2di_splitchar.s | 15 + arm9/asm/NNS_G3D_1mat1shp.s | 145 + arm9/asm/NNS_G3D_3dsmax.s | 479 + arm9/asm/NNS_G3D_anm.s | 371 + arm9/asm/NNS_G3D_basic.s | 65 + arm9/asm/NNS_G3D_cgtool.s | 27 + arm9/asm/NNS_G3D_gecom.s | 206 + arm9/asm/NNS_G3D_glbstate.s | 436 + arm9/asm/NNS_G3D_kernel.s | 885 ++ arm9/asm/NNS_G3D_maya.s | 609 + arm9/asm/NNS_G3D_mem.s | 28 + arm9/asm/NNS_G3D_model.s | 687 ++ arm9/asm/NNS_G3D_nsbca.s | 1606 +++ arm9/asm/NNS_G3D_nsbma.s | 292 + arm9/asm/NNS_G3D_nsbta.s | 305 + arm9/asm/NNS_G3D_nsbtp.s | 185 + arm9/asm/NNS_G3D_nsbva.s | 52 + arm9/asm/NNS_G3D_res_struct_acce.s | 327 + arm9/asm/NNS_G3D_sbc.s | 2861 +++++ arm9/asm/NNS_G3D_si3d.s | 363 + arm9/asm/NNS_G3D_util.s | 354 + arm9/asm/NNS_G3D_xsi.s | 487 + arm9/asm/NNS_GFD_gfd_frameplttvr.s | 173 + arm9/asm/NNS_GFD_gfd_frametexvra.s | 344 + arm9/asm/NNS_GFD_gfd_linkedlistp.s | 165 + arm9/asm/NNS_GFD_gfd_linkedlistt.s | 302 + arm9/asm/NNS_GFD_gfd_plttvramman.s | 31 + arm9/asm/NNS_GFD_gfd_texvramman.s | 31 + arm9/asm/NNS_GFD_gfd_vramtransfe.s | 643 ++ arm9/asm/NNS_GFD_gfdi_linkedlist.s | 268 + arm9/asm/NNS_SND_capture.s | 699 ++ arm9/asm/NNS_SND_fader.s | 68 + arm9/asm/NNS_SND_heap.s | 293 + arm9/asm/NNS_SND_main.s | 136 + arm9/asm/NNS_SND_player.s | 940 ++ arm9/asm/NNS_SND_resource_mgr.s | 140 + arm9/asm/NNS_SND_seqdata.s | 25 + arm9/asm/NNS_SND_sndarc.s | 546 + arm9/asm/NNS_SND_sndarc_loader.s | 898 ++ arm9/asm/NNS_SND_sndarc_player.s | 268 + arm9/asm/NNS_SND_sndarc_stream.s | 280 + arm9/asm/NNS_SND_stream.s | 474 + arm9/asm/NNS_SND_waveout.s | 250 + arm9/asm/sndlib.s | 4758 -------- arm9/asm/unk_020ADA84.s | 21554 ----------------------------------- 71 files changed, 27467 insertions(+), 26312 deletions(-) create mode 100644 arm9/asm/NNS_G2D_g2d_animation.s create mode 100644 arm9/asm/NNS_G2D_g2d_cellanimati.s create mode 100644 arm9/asm/NNS_G2D_g2d_celltransfe.s create mode 100644 arm9/asm/NNS_G2D_g2d_charcanvas.s create mode 100644 arm9/asm/NNS_G2D_g2d_font.s create mode 100644 arm9/asm/NNS_G2D_g2d_image.s create mode 100644 arm9/asm/NNS_G2D_g2d_load.s create mode 100644 arm9/asm/NNS_G2D_g2d_multicellan.s create mode 100644 arm9/asm/NNS_G2D_g2d_nan_load.s create mode 100644 arm9/asm/NNS_G2D_g2d_ncg_load.s create mode 100644 arm9/asm/NNS_G2D_g2d_ncl_load.s create mode 100644 arm9/asm/NNS_G2D_g2d_nft_load.s create mode 100644 arm9/asm/NNS_G2D_g2d_nmc_load.s create mode 100644 arm9/asm/NNS_G2D_g2d_nob_load.s create mode 100644 arm9/asm/NNS_G2D_g2d_node.s create mode 100644 arm9/asm/NNS_G2D_g2d_nsc_load.s create mode 100644 arm9/asm/NNS_G2D_g2d_oam.s create mode 100644 arm9/asm/NNS_G2D_g2d_oamsoftware.s create mode 100644 arm9/asm/NNS_G2D_g2d_palettetabl.s create mode 100644 arm9/asm/NNS_G2D_g2d_renderer.s create mode 100644 arm9/asm/NNS_G2D_g2d_renderercor.s create mode 100644 arm9/asm/NNS_G2D_g2d_softsprite.s create mode 100644 arm9/asm/NNS_G2D_g2d_srtcontrol.s create mode 100644 arm9/asm/NNS_G2D_g2d_textcanvas.s create mode 100644 arm9/asm/NNS_G2D_g2di_bitreader.s create mode 100644 arm9/asm/NNS_G2D_g2di_mtx32.s create mode 100644 arm9/asm/NNS_G2D_g2di_splitchar.s create mode 100644 arm9/asm/NNS_G3D_1mat1shp.s create mode 100644 arm9/asm/NNS_G3D_3dsmax.s create mode 100644 arm9/asm/NNS_G3D_anm.s create mode 100644 arm9/asm/NNS_G3D_basic.s create mode 100644 arm9/asm/NNS_G3D_cgtool.s create mode 100644 arm9/asm/NNS_G3D_gecom.s create mode 100644 arm9/asm/NNS_G3D_glbstate.s create mode 100644 arm9/asm/NNS_G3D_kernel.s create mode 100644 arm9/asm/NNS_G3D_maya.s create mode 100644 arm9/asm/NNS_G3D_mem.s create mode 100644 arm9/asm/NNS_G3D_model.s create mode 100644 arm9/asm/NNS_G3D_nsbca.s create mode 100644 arm9/asm/NNS_G3D_nsbma.s create mode 100644 arm9/asm/NNS_G3D_nsbta.s create mode 100644 arm9/asm/NNS_G3D_nsbtp.s create mode 100644 arm9/asm/NNS_G3D_nsbva.s create mode 100644 arm9/asm/NNS_G3D_res_struct_acce.s create mode 100644 arm9/asm/NNS_G3D_sbc.s create mode 100644 arm9/asm/NNS_G3D_si3d.s create mode 100644 arm9/asm/NNS_G3D_util.s create mode 100644 arm9/asm/NNS_G3D_xsi.s create mode 100644 arm9/asm/NNS_GFD_gfd_frameplttvr.s create mode 100644 arm9/asm/NNS_GFD_gfd_frametexvra.s create mode 100644 arm9/asm/NNS_GFD_gfd_linkedlistp.s create mode 100644 arm9/asm/NNS_GFD_gfd_linkedlistt.s create mode 100644 arm9/asm/NNS_GFD_gfd_plttvramman.s create mode 100644 arm9/asm/NNS_GFD_gfd_texvramman.s create mode 100644 arm9/asm/NNS_GFD_gfd_vramtransfe.s create mode 100644 arm9/asm/NNS_GFD_gfdi_linkedlist.s create mode 100644 arm9/asm/NNS_SND_capture.s create mode 100644 arm9/asm/NNS_SND_fader.s create mode 100644 arm9/asm/NNS_SND_heap.s create mode 100644 arm9/asm/NNS_SND_main.s create mode 100644 arm9/asm/NNS_SND_player.s create mode 100644 arm9/asm/NNS_SND_resource_mgr.s create mode 100644 arm9/asm/NNS_SND_seqdata.s create mode 100644 arm9/asm/NNS_SND_sndarc.s create mode 100644 arm9/asm/NNS_SND_sndarc_loader.s create mode 100644 arm9/asm/NNS_SND_sndarc_player.s create mode 100644 arm9/asm/NNS_SND_sndarc_stream.s create mode 100644 arm9/asm/NNS_SND_stream.s create mode 100644 arm9/asm/NNS_SND_waveout.s delete mode 100644 arm9/asm/sndlib.s delete mode 100644 arm9/asm/unk_020ADA84.s (limited to 'arm9/asm') diff --git a/arm9/asm/NNS_G2D_g2d_animation.s b/arm9/asm/NNS_G2D_g2d_animation.s new file mode 100644 index 00000000..60fcde4c --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_animation.s @@ -0,0 +1,348 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020B0408 +FUN_020B0408: ; 0x020B0408 + ldr r1, [r0, #0x14] + cmp r1, #0x0 + ldreq r0, [r0, #0x18] + ldreq r1, [r0, #0x8] + cmp r1, #0x2 + beq _020B0428 + cmp r1, #0x4 + bne _020B0430 +_020B0428: + mov r0, #0x1 + bx lr +_020B0430: + mov r0, #0x0 + bx lr + arm_func_end FUN_020B0408 + + ; NNS_G2dBindAnimCtrl + arm_func_start FUN_020B0438 +FUN_020B0438: ; 0x020B0438 + ldr ip, _020B0444 ; =FUN_020B0448 + str r1, [r0, #0x18] + bx r12 + .balign 4 +_020B0444: .word FUN_020B0448 + arm_func_end FUN_020B0438 + + ; NNS_G2dResetAnimCtrlState + arm_func_start FUN_020B0448 +FUN_020B0448: ; 0x020B0448 + ldr r1, [r0, #0x10] + cmp r1, #0x0 + movgt r2, #0x1 + ldr r1, [r0, #0x4] + movle r2, #0x0 + eors r1, r2, r1 + beq _020B047C + ldr r2, [r0, #0x18] + ldrh r1, [r2, #0x2] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + str r1, [r0, #0x0] + b _020B0494 +_020B047C: + ldr r2, [r0, #0x18] + ldrh r1, [r2, #0x0] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + sub r1, r1, #0x8 + str r1, [r0, #0x0] +_020B0494: + ldr ip, _020B04A4 ; =FUN_020B0534 + mov r1, #0x0 + str r1, [r0, #0xc] + bx r12 + .balign 4 +_020B04A4: .word FUN_020B0534 + arm_func_end FUN_020B0448 + + ; _end + arm_func_start FUN_020B04A8 +FUN_020B04A8: ; 0x020B04A8 + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] + str r1, [r0, #0x8] + strh r1, [r0, #0xc] + bx lr + arm_func_end FUN_020B04A8 + + ; _end + arm_func_start FUN_020B04C0 +FUN_020B04C0: ; 0x020B04C0 + stmdb sp!, {r4,lr} + mov r4, r0 + add r0, r4, #0x1c + bl FUN_020B04A8 + mov r1, #0x0 + str r1, [r4, #0x0] + str r1, [r4, #0x4] + mov r0, #0x1 + str r0, [r4, #0x8] + str r1, [r4, #0xc] + mov r0, #0x1000 + str r0, [r4, #0x10] + str r1, [r4, #0x14] + str r1, [r4, #0x18] + ldmia sp!, {r4,pc} + arm_func_end FUN_020B04C0 + + ; _end + arm_func_start FUN_020B04FC +FUN_020B04FC: ; 0x020B04FC + ldr r1, [r0, #0x18] + ldr r2, [r0, #0x0] + ldr r0, [r1, #0xc] + sub r0, r2, r0 + mov r0, r0, lsl #0xd + mov r0, r0, lsr #0x10 + bx lr + arm_func_end FUN_020B04FC + + ; _end + arm_func_start FUN_020B0518 +FUN_020B0518: ; 0x020B0518 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B06EC + cmp r0, #0x0 + movne r1, #0x0 + strne r1, [r4, #0xc] + ldmia sp!, {r4,pc} + arm_func_end FUN_020B0518 + + ; _end + arm_func_start FUN_020B0534 +FUN_020B0534: ; 0x020B0534 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + ldr r0, [r8, #0x8] + mov r7, #0x0 + cmp r0, #0x1 + movne r0, r7 + ldmneia sp!, {r4-r8,pc} + ldr r2, [r8, #0x10] + mov r0, #0x800 + smull r3, r1, r2, r1 + adds r0, r3, r0 + adc r1, r1, r7 + mov r0, r0, lsr #0xc + orr r0, r0, r1, lsl #0x14 + bl abs + ldr r1, [r8, #0xc] + add r6, r8, #0xc + add r0, r1, r0 + str r0, [r8, #0xc] + mov r4, r7 + mov r5, #0x1 + b _020B06A8 +_020B058C: + ldr r0, [r8, #0x0] + ldr r1, [r6, #0x0] + ldrh r0, [r0, #0x4] + mov r7, r5 + sub r0, r1, r0, lsl #0xc + str r0, [r6, #0x0] + ldr r0, [r8, #0x10] + cmp r0, #0x0 + movgt r1, r5 + ldr r0, [r8, #0x4] + movle r1, r4 + eors r0, r1, r0 + ldrne r0, [r8, #0x0] + addne r0, r0, #0x8 + strne r0, [r8, #0x0] + ldreq r0, [r8, #0x0] + subeq r0, r0, #0x8 + streq r0, [r8, #0x0] + ldr r1, [r8, #0x10] + ldr r0, [r8, #0x0] + cmp r1, #0x0 + movgt r2, r5 + ldr r1, [r8, #0x4] + movle r2, r4 + eors r1, r2, r1 + beq _020B0614 + ldr r2, [r8, #0x18] + ldrh r1, [r2, #0x0] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + cmp r0, r1 + movcs r0, r5 + movcc r0, r4 + b _020B0634 +_020B0614: + ldr r2, [r8, #0x18] + ldrh r1, [r2, #0x2] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + sub r1, r1, #0x8 + cmp r0, r1 + movls r0, r5 + movhi r0, r4 +_020B0634: + cmp r0, #0x0 + beq _020B0644 + mov r0, r8 + bl FUN_020B0710 +_020B0644: + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + beq _020B06A8 + ldr r0, [r8, #0x18] + ldr r2, [r8, #0x1c] + ldr r1, [r8, #0x0] + ldr r0, [r0, #0xc] + cmp r2, #0x2 + sub r0, r1, r0 + mov r0, r0, lsl #0xd + mov r1, r0, lsr #0x10 + beq _020B0680 + cmp r2, #0x3 + beq _020B069C + b _020B06A8 +_020B0680: + ldrh r0, [r8, #0x28] + cmp r1, r0 + bne _020B06A8 + ldr r0, [r8, #0x20] + ldr r2, [r8, #0x24] + blx r2 + b _020B06A8 +_020B069C: + ldr r0, [r8, #0x20] + ldr r2, [r8, #0x24] + blx r2 +_020B06A8: + ldr r0, [r8, #0x8] + cmp r0, #0x0 + beq _020B06CC + ldr r0, [r8, #0x0] + ldr r1, [r8, #0xc] + ldrh r0, [r0, #0x4] + cmp r1, r0, lsl #0xc + movge r0, r5 + bge _020B06D0 +_020B06CC: + mov r0, r4 +_020B06D0: + cmp r0, #0x0 + bne _020B058C + mov r0, r7 + ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020B0534 + + ; _end + arm_func_start FUN_020B06E0 +FUN_020B06E0: ; 0x020B06E0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + bx lr + arm_func_end FUN_020B06E0 + + ; _end + arm_func_start FUN_020B06EC +FUN_020B06EC: ; 0x020B06EC + ldr r3, [r0, #0x18] + ldrh r2, [r3, #0x0] + cmp r1, r2 + ldrcc r2, [r3, #0xc] + addcc r1, r2, r1, lsl #0x3 + strcc r1, [r0, #0x0] + movcc r0, #0x1 + movcs r0, #0x0 + bx lr + arm_func_end FUN_020B06EC + + ; _end + arm_func_start FUN_020B0710 +FUN_020B0710: ; 0x020B0710 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x3 + beq _020B0738 + cmp r0, #0x4 + bne _020B07B4 +_020B0738: + ldr r0, [r4, #0x4] + eor r0, r0, #0x1 + str r0, [r4, #0x4] + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x0] + ldrh r0, [r1, #0x2] + ldr r1, [r1, #0xc] + add r0, r1, r0, lsl #0x3 + sub r0, r0, #0x8 + cmp r2, r0 + bhi _020B0800 + ldr r0, [r4, #0x1c] + cmp r0, #0x1 + bne _020B0780 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x24] + blx r2 +_020B0780: + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x2 + beq _020B07A8 + cmp r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x8] + bne _020B0800 +_020B07A8: + mov r0, r4 + bl FUN_020B0448 + b _020B0800 +_020B07B4: + ldr r0, [r4, #0x1c] + cmp r0, #0x1 + bne _020B07D0 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x24] + blx r2 +_020B07D0: + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x2 + beq _020B07F8 + cmp r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x8] + bne _020B0800 +_020B07F8: + mov r0, r4 + bl FUN_020B0448 +_020B0800: + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x0] + ldrh r0, [r1, #0x0] + ldr r1, [r1, #0xc] + add r0, r1, r0, lsl #0x3 + sub r0, r0, #0x8 + cmp r2, r0 + strhi r0, [r4, #0x0] + ldmhiia sp!, {r4,pc} + cmp r2, r1 + strcc r1, [r4, #0x0] + ldmia sp!, {r4,pc} + arm_func_end FUN_020B0710 + diff --git a/arm9/asm/NNS_G2D_g2d_cellanimati.s b/arm9/asm/NNS_G2D_g2d_cellanimati.s new file mode 100644 index 00000000..91d32786 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_cellanimati.s @@ -0,0 +1,425 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; NNS_G2dMakeCellToOams + arm_func_start FUN_020B1AF8 +FUN_020B1AF8: ; 0x020B1AF8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + ldrh r5, [r2, #0x0] + ldr r4, [sp, #0x60] + ldr r10, [sp, #0x58] + str r4, [sp, #0x60] + cmp r1, r5 + movcs r1, r5 + mov r4, #0x0 + cmp r1, #0x0 + str r4, [sp, #0x0] + bls _020B1E7C + ldrh r4, [sp, #0x5c] + mov r4, r4, lsl #0x19 + str r4, [sp, #0x4] + ldr r4, [sp, #0x0] + str r4, [sp, #0x14] + mov r4, #0x100 + str r4, [sp, #0xc] + mov r4, #0x300 + str r4, [sp, #0x8] + mov r4, #0x1 + str r4, [sp, #0x10] +_020B1B54: + ldr r5, [sp, #0x0] + mov r6, #0x6 + mul r6, r5, r6 + ldr r8, [r2, #0x4] + ldr r4, [sp, #0x0] + add r7, r0, r5, lsl #0x3 + ldrh r5, [r8, r6] + mov r4, r4, lsl #0x3 + add r9, r8, r6 + strh r5, [r0, r4] + ldrh r4, [r9, #0x2] + cmp r3, #0x0 + strh r4, [r7, #0x2] + ldrh r4, [r9, #0x4] + strh r4, [r7, #0x4] + bne _020B1B9C + cmp r10, #0x0 + beq _020B1E60 +_020B1B9C: + ldr r5, [r7, #0x0] + ldr r4, _020B1E88 ; =0x01FF0000 + and r4, r5, r4 + mov r4, r4, lsr #0x10 + mov r4, r4, lsl #0x10 + mov r4, r4, asr #0x10 + cmp r4, #0xff + orrgt r4, r4, #0xff00 + movgt r4, r4, lsl #0x10 + movgt r4, r4, asr #0x10 + mov r4, r4, lsl #0xc + str r4, [sp, #0x20] + ldr r4, [r7, #0x0] + and r4, r4, #0xff + mov r4, r4, lsl #0x10 + mov r4, r4, asr #0x10 + cmp r4, #0x7f + orrgt r4, r4, #0xff00 + movgt r4, r4, lsl #0x10 + movgt r4, r4, asr #0x10 + mov r4, r4, lsl #0xc + str r4, [sp, #0x24] + cmp r3, #0x0 + beq _020B1E00 + ldr r5, [r7, #0x0] + and r6, r5, #0x300 + cmp r6, #0x100 + beq _020B1C1C + cmp r6, #0x300 + beq _020B1C1C + and r4, r5, #0x30000000 + orr r6, r6, r4 +_020B1C1C: + cmp r6, #0x300 + bne _020B1C70 + ldr r4, _020B1E8C ; =0xC000C000 + ldr r8, _020B1E90 ; =UNK_020FF8AC + and r5, r5, r4 + and r4, r5, #0xc000 + mov r6, r4, asr #0xe + and r4, r5, #0xc0000000 + mov r4, r4, lsr #0x1e + mov r4, r4, lsl #0x1 + add r8, r8, r6, lsl #0x3 + ldrh r9, [r4, r8] + ldr r8, _020B1E94 ; =UNK_020FF894 + ldr r5, [sp, #0x20] + add r6, r8, r6, lsl #0x3 + add r5, r5, r9, lsl #0xb + str r5, [sp, #0x20] + ldrh r4, [r4, r6] + ldr r5, [sp, #0x24] + add r4, r5, r4, lsl #0xb + str r4, [sp, #0x24] +_020B1C70: + ldr r4, [sp, #0x60] + ldr r5, [r3, #0x8] + cmp r4, #0x0 + ldrne r8, [sp, #0x8] + add r4, sp, #0x20 + ldreq r8, [sp, #0xc] + mov r6, r4 + cmp r8, #0x300 + ldreq r9, [sp, #0x10] + mov r12, #0x1000 + ldrne r9, [sp, #0x14] + cmp r4, r4 + ldr r4, [sp, #0x24] + addeq r6, sp, #0x28 + smull r11, r4, r5, r4 + adds r5, r11, r12 + adc r11, r4, #0x0 + ldr r4, [r3, #0x0] + ldr lr, [sp, #0x20] + smlal r5, r11, r4, lr + mov r4, r5, lsr #0xc + orr r4, r4, r11, lsl #0x14 + str r4, [r6, #0x0] + ldr r4, [r3, #0xc] + ldr r5, [sp, #0x24] + ldr lr, [r3, #0x4] + smull r11, r5, r4, r5 + adds r11, r11, r12 + adc r4, r5, #0x0 + add r5, sp, #0x28 + cmp r6, r5 + ldr r5, [sp, #0x20] + smlal r11, r4, lr, r5 + mov r5, r11, lsr #0xc + orr r5, r5, r4, lsl #0x14 + str r5, [r6, #0x4] + ldreq r5, [sp, #0x28] + ldreq r4, [sp, #0x2c] + streq r5, [sp, #0x20] + streq r4, [sp, #0x24] + cmp r8, #0x100 + beq _020B1D38 + cmp r8, #0x300 + beq _020B1D38 + ldr r5, [r7, #0x0] + ldr r4, _020B1E98 ; =0xC1FFFCFF + and r4, r5, r4 + orr r4, r4, r8 + str r4, [r7, #0x0] + b _020B1D54 +_020B1D38: + ldr r5, [r7, #0x0] + ldr r4, _020B1E98 ; =0xC1FFFCFF + and r4, r5, r4 + orr r5, r4, r8 + ldr r4, [sp, #0x4] + orr r4, r4, r5 + str r4, [r7, #0x0] +_020B1D54: + ldr r6, [r7, #0x0] + ldr r5, _020B1E8C ; =0xC000C000 + cmp r9, #0x0 + and r8, r6, r5 + and r5, r8, #0xc000 + mov r6, r5, asr #0xe + and r5, r8, #0xc0000000 + ldr r8, _020B1E90 ; =UNK_020FF8AC + mov r5, r5, lsr #0x1e + mov r5, r5, lsl #0x1 + add r8, r8, r6, lsl #0x3 + ldrh r9, [r5, r8] + ldr r8, _020B1E94 ; =UNK_020FF894 + ldr r4, [sp, #0x20] + add r6, r8, r6, lsl #0x3 + mov r11, r9, asr #0x1 + ldrh r5, [r5, r6] + mov r8, r11, lsl #0xc + ldr r6, [r3, #0x0] + rsb r12, r8, #0x0 + mov r9, r5, asr #0x1 + mla r12, r6, r11, r12 + ldr r5, [r3, #0x8] + mla r6, r5, r9, r12 + add r6, r4, r6 + str r6, [sp, #0x20] + ldr r12, [r3, #0x4] + mov r5, r9, lsl #0xc + str r12, [sp, #0x1c] + ldr r12, [r3, #0xc] + rsb lr, r5, #0x0 + str r12, [sp, #0x18] + ldr r12, [sp, #0x1c] + ldr r4, [sp, #0x24] + mla r11, r12, r11, lr + ldr r12, [sp, #0x18] + subne r6, r6, r8 + mla r9, r12, r9, r11 + add r4, r4, r9 + str r4, [sp, #0x24] + subne r4, r4, r5 + strne r6, [sp, #0x20] + strne r4, [sp, #0x24] +_020B1E00: + cmp r10, #0x0 + beq _020B1E28 + ldr r6, [sp, #0x20] + ldr r4, [r10, #0x0] + ldr r5, [sp, #0x24] + add r4, r6, r4 + str r4, [sp, #0x20] + ldr r4, [r10, #0x4] + add r4, r5, r4 + str r4, [sp, #0x24] +_020B1E28: + ldr r4, [sp, #0x20] + ldr r6, [r7, #0x0] + add r5, r4, #0x800 + ldr r4, _020B1E9C ; =0x000001FF + and r4, r4, r5, asr #0xc + ldr r5, _020B1EA0 ; =0xFE00FF00 + and r6, r6, r5 + ldr r5, [sp, #0x24] + add r5, r5, #0x800 + mov r5, r5, asr #0xc + and r5, r5, #0xff + orr r5, r6, r5 + orr r4, r5, r4, lsl #0x10 + str r4, [r7, #0x0] +_020B1E60: + ldr r4, [sp, #0x0] + add r4, r4, #0x1 + mov r4, r4, lsl #0x10 + mov r4, r4, lsr #0x10 + str r4, [sp, #0x0] + cmp r4, r1 + blo _020B1B54 +_020B1E7C: + mov r0, r1 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B1E88: .word 0x01FF0000 +_020B1E8C: .word 0xC000C000 +_020B1E90: .word UNK_020FF8AC +_020B1E94: .word UNK_020FF894 +_020B1E98: .word 0xC1FFFCFF +_020B1E9C: .word 0x000001FF +_020B1EA0: .word 0xFE00FF00 + arm_func_end FUN_020B1AF8 + + ; _end + arm_func_start FUN_020B1EA4 +FUN_020B1EA4: ; 0x020B1EA4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B0518 + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, r4 + bl FUN_020B1FC4 + ldmia sp!, {r4,pc} + arm_func_end FUN_020B1EA4 + + ; _end + arm_func_start FUN_020B1EC4 +FUN_020B1EC4: ; 0x020B1EC4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B0534 + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, r4 + bl FUN_020B1FC4 + ldmia sp!, {r4,pc} + arm_func_end FUN_020B1EC4 + + ; _end + arm_func_start FUN_020B1EE4 +FUN_020B1EE4: ; 0x020B1EE4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B0438 + mov r0, r4 + bl FUN_020B1FC4 + ldmia sp!, {r4,pc} + arm_func_end FUN_020B1EE4 + + ; _end + arm_func_start FUN_020B1EFC +FUN_020B1EFC: ; 0x020B1EFC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r4, r2 + ldr r2, [r4, #0xc] + mov r5, r1 + ldr r1, [r2, #0x0] + ldr r2, [sp, #0x34] + str r1, [sp, #0x0] + ldr r1, [sp, #0x38] + str r2, [sp, #0x4] + mov r6, r3 + mov r7, r0 + ldr r12, [sp, #0x3c] + str r1, [sp, #0x8] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + ldr r3, [sp, #0x30] + mov r0, r6 + str r12, [sp, #0xc] + bl FUN_020B45F0 + str r6, [r7, #0x34] + str r4, [r7, #0x30] + add r0, r7, #0x38 + mov r1, #0x1 + str r6, [r7, #0x34] + bl FUN_020B1A68 + mov r0, r7 + bl FUN_020B04C0 + mov r0, r7 + mov r1, r5 + bl FUN_020B1EE4 + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B1EFC + + ; _end + arm_func_start FUN_020B1F80 +FUN_020B1F80: ; 0x020B1F80 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + str r2, [r5, #0x30] + mvn r2, #0x0 + add r0, r5, #0x38 + mov r1, #0x1 + str r2, [r5, #0x34] + bl FUN_020B1A68 + mov r0, r5 + bl FUN_020B04C0 + mov r0, r5 + mov r1, r4 + bl FUN_020B1EE4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020B1F80 + + ; _end + arm_func_start FUN_020B1FC4 +FUN_020B1FC4: ; 0x020B1FC4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + ldrh r1, [r1, #0x4] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + bl FUN_020B06E0 + mov r4, r0 + ldr r7, [r5, #0x30] + ldrh r1, [r4, #0x0] + mov r0, r7 + bl FUN_020AFE8C + str r0, [r5, #0x2c] + ldr r1, [r5, #0x18] + add r0, r5, #0x38 + ldr r2, [r1, #0x4] + mov r1, #0x1 + and r6, r2, #0xff + bl FUN_020B1A68 + cmp r6, #0x0 + beq _020B2068 + cmp r6, #0x2 + bne _020B203C + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r5, #0x38 + bl FUN_020B1AB4 + b _020B2068 +_020B203C: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r5, #0x38 + bl FUN_020B1A78 + ldrh r1, [r4, #0x2] + add r0, r5, #0x38 + bl FUN_020B1A98 + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r5, #0x38 + bl FUN_020B1AB4 +_020B2068: + ldr r2, [r7, #0xc] + cmp r2, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldr r1, [r5, #0x34] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldrh r1, [r4, #0x0] + ldr r2, [r2, #0x4] + ldr r0, [r5, #0x34] + add r3, r2, r1, lsl #0x3 + ldr r1, [r2, r1, lsl #0x3] + ldr r2, [r3, #0x4] + bl FUN_020B4400 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B1FC4 + diff --git a/arm9/asm/NNS_G2D_g2d_celltransfe.s b/arm9/asm/NNS_G2D_g2d_celltransfe.s new file mode 100644 index 00000000..f7c8cec6 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_celltransfe.s @@ -0,0 +1,298 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + ; cvtTbl$7926 + .global UNK_020FF8C4 +UNK_020FF8C4: ; 0x020FF8C4 + .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00 + + ; static const in function + .section .bss + + ; s_pTaskRegisterFunc + .global UNK_021CECFC +UNK_021CECFC: ; 0x021CECFC + .space 0x4 + + ; s_numCellState + .global UNK_021CED00 +UNK_021CED00: ; 0x021CED00 + .space 0x4 + + ; s_pCellStateArray + .global UNK_021CED04 +UNK_021CED04: ; 0x021CED04 + .space 0x4 + + .section .text + + ; NNS_G2dFreeCellTransferStateHandle + arm_func_start FUN_020B4358 +FUN_020B4358: ; 0x020B4358 + stmdb sp!, {r4,lr} + ldr r2, _020B43A0 ; =UNK_021CED04 + mov r1, #0x30 + ldr r2, [r2, #0x0] + mla r4, r0, r1, r2 + mov r0, r4 + bl FUN_020B10CC + mov r0, #0x0 + str r0, [r4, #0xc] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + str r0, [r4, #0x20] + str r0, [r4, #0x24] + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + ldmia sp!, {r4,pc} + .balign 4 +_020B43A0: .word UNK_021CED04 + arm_func_end FUN_020B4358 + + ; NNS_G2dGetNewCellTransferStateHandle + arm_func_start FUN_020B43A4 +FUN_020B43A4: ; 0x020B43A4 + ldr r1, _020B43F8 ; =UNK_021CED00 + mov r0, #0x0 + ldr r3, [r1, #0x0] + cmp r3, #0x0 + bls _020B43F0 + ldr r1, _020B43FC ; =UNK_021CED04 + ldr r2, [r1, #0x0] + mov r12, r2 +_020B43C4: + ldr r1, [r12, #0x1c] + cmp r1, #0x1 + movne r1, #0x30 + mlane r1, r0, r1, r2 + movne r2, #0x1 + strne r2, [r1, #0x1c] + bxne lr + add r0, r0, #0x1 + cmp r0, r3 + add r12, r12, #0x30 + blo _020B43C4 +_020B43F0: + mvn r0, #0x0 + bx lr + .balign 4 +_020B43F8: .word UNK_021CED00 +_020B43FC: .word UNK_021CED04 + arm_func_end FUN_020B43A4 + + ; _end + arm_func_start FUN_020B4400 +FUN_020B4400: ; 0x020B4400 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + mov r4, r2 + bl FUN_020B469C + mvn r1, #0x0 + str r1, [r0, #0x24] + str r5, [r0, #0x28] + str r4, [r0, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020B4400 + + ; NNS_G2dUpdateCellTransferStateManager + arm_func_start FUN_020B442C +FUN_020B442C: ; 0x020B442C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r0, _020B4558 ; =UNK_021CED00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} + ldr r0, [sp, #0x0] + mov r5, #0x1 + str r0, [sp, #0x4] + mov r11, r0 + str r0, [sp, #0x8] + str r0, [sp, #0xc] +_020B4468: + ldr r0, _020B455C ; =UNK_021CED04 + ldr r1, [r0, #0x0] + ldr r0, [sp, #0x4] + add r8, r1, r0 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + beq _020B4528 + ldr r9, [sp, #0x8] + mov r0, r9 + cmp r0, #0x3 + bge _020B4520 + add r4, r8, #0x24 +_020B4498: + mov r6, r5, lsl r9 + mov r1, r11 + ldr r0, [r8, #0x24] + ands r0, r0, r6 + beq _020B44B8 + ldr r0, [r8, #0x20] + ands r0, r0, r6 + movne r1, r5 +_020B44B8: + cmp r1, #0x0 + beq _020B4514 + ldr r0, _020B4560 ; =UNK_020FF8C4 + cmp r9, #0x0 + ldr r7, [r0, r9, lsl #0x2] + ldreq r10, [r8, #0x14] + mov r0, r8 + mov r1, r9 + ldrne r10, [r8, #0x10] + bl FUN_020B10BC + mov r1, r0 + mov r0, r7 + ldr r7, _020B4564 ; =UNK_021CECFC + ldr r2, [r8, #0x28] + ldr r3, [r8, #0x2c] + ldr r7, [r7, #0x0] + add r2, r10, r2 + blx r7 + cmp r0, #0x0 + ldrne r1, [r4, #0x0] + mvnne r0, r6 + andne r0, r1, r0 + strne r0, [r4, #0x0] +_020B4514: + add r9, r9, #0x1 + cmp r9, #0x3 + blt _020B4498 +_020B4520: + ldr r0, [sp, #0xc] + str r0, [r8, #0x20] +_020B4528: + ldr r0, _020B4558 ; =UNK_021CED00 + ldr r1, [r0, #0x0] + ldr r0, [sp, #0x0] + add r0, r0, #0x1 + str r0, [sp, #0x0] + cmp r0, r1 + ldr r0, [sp, #0x4] + add r0, r0, #0x30 + str r0, [sp, #0x4] + blo _020B4468 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B4558: .word UNK_021CED00 +_020B455C: .word UNK_021CED04 +_020B4560: .word UNK_020FF8C4 +_020B4564: .word UNK_021CECFC + arm_func_end FUN_020B442C + + ; NNS_G2dInitCellTransferStateManager + arm_func_start FUN_020B4568 +FUN_020B4568: ; 0x020B4568 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020B45E4 ; =UNK_021CECFC + movs r6, r1 + ldr r1, _020B45E8 ; =UNK_021CED00 + ldr r3, _020B45EC ; =UNK_021CED04 + mov r7, r0 + str r2, [r12, #0x0] + mov r5, #0x0 + addeq sp, sp, #0x4 + str r7, [r3, #0x0] + str r6, [r1, #0x0] + ldmeqia sp!, {r4-r7,pc} + mov r4, r5 +_020B45A0: + mov r0, r7 + bl FUN_020B10CC + str r4, [r7, #0xc] + str r4, [r7, #0x10] + str r4, [r7, #0x14] + str r4, [r7, #0x18] + str r4, [r7, #0x1c] + str r4, [r7, #0x20] + str r4, [r7, #0x24] + str r4, [r7, #0x28] + add r5, r5, #0x1 + str r4, [r7, #0x2c] + cmp r5, r6 + add r7, r7, #0x30 + blo _020B45A0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B45E4: .word UNK_021CECFC +_020B45E8: .word UNK_021CED00 +_020B45EC: .word UNK_021CED04 + arm_func_end FUN_020B4568 + + ; NNSi_G2dInitCellTransferState + arm_func_start FUN_020B45F0 +FUN_020B45F0: ; 0x020B45F0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020B4698 ; =UNK_021CED04 + mov r4, #0x30 + ldr r12, [r12, #0x0] + mov r7, r1 + mla r4, r0, r4, r12 + mov r0, r4 + mov r6, r2 + mov r5, r3 + bl FUN_020B10CC + mvn r0, #0x0 + cmp r7, r0 + beq _020B4638 + mov r0, r4 + mov r2, r7 + mov r1, #0x0 + bl FUN_020B10C4 +_020B4638: + mvn r0, #0x0 + cmp r6, r0 + beq _020B4654 + mov r0, r4 + mov r2, r6 + mov r1, #0x1 + bl FUN_020B10C4 +_020B4654: + mvn r0, #0x0 + cmp r5, r0 + beq _020B4670 + mov r0, r4 + mov r2, r5 + mov r1, #0x2 + bl FUN_020B10C4 +_020B4670: + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + str r1, [r4, #0xc] + ldr r1, [sp, #0x20] + str r0, [r4, #0x10] + ldr r0, [sp, #0x24] + str r1, [r4, #0x14] + str r0, [r4, #0x18] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B4698: .word UNK_021CED04 + arm_func_end FUN_020B45F0 + + ; NNSi_G2dGetCellTransferState + arm_func_start FUN_020B469C +FUN_020B469C: ; 0x020B469C + ldr r2, _020B46B0 ; =UNK_021CED04 + mov r1, #0x30 + ldr r2, [r2, #0x0] + mla r0, r1, r0, r2 + bx lr + .balign 4 +_020B46B0: .word UNK_021CED04 + arm_func_end FUN_020B469C + diff --git a/arm9/asm/NNS_G2D_g2d_charcanvas.s b/arm9/asm/NNS_G2D_g2d_charcanvas.s new file mode 100644 index 00000000..b21235e8 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_charcanvas.s @@ -0,0 +1,1379 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + ; objs$8221 + .global UNK_020FF970 +UNK_020FF970: ; 0x020FF970 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01 + .byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x00, 0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03 + + ; static const in function + ; shape$8277 + .global UNK_020FF990 +UNK_020FF990: ; 0x020FF990 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0xC0 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xC0 + + ; static const in function + .section .text + + ; NNS_G2dArrangeOBJ1D + arm_func_start FUN_020B5E50 +FUN_020B5E50: ; 0x020B5E50 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + mov r7, r0 + mov r0, r1 + cmp r0, #0x8 + ldr r0, [sp, #0x60] + str r1, [sp, #0x10] + str r0, [sp, #0x60] + ldr r0, [sp, #0x6c] + str r2, [sp, #0x14] + str r0, [sp, #0x6c] + ldrlt r0, [sp, #0x10] + mov r11, r3 + ldr r6, [sp, #0x64] + ldr r5, [sp, #0x68] + movge r2, #0x3 + clzlt r0, r0 + rsblt r2, r0, #0x1f + ldr r0, [sp, #0x14] + cmp r0, #0x8 + ldrlt r0, [sp, #0x14] + movge r1, #0x3 + clzlt r0, r0 + rsblt r1, r0, #0x1f + ldr r0, _020B6170 ; =UNK_020FF970 + mvn r3, #0x0 + add r1, r0, r1, lsl #0x3 + add r0, r1, r2, lsl #0x1 + ldrb r4, [r1, r2, lsl #0x1] + ldrb r1, [r0, #0x1] + ldr r2, [sp, #0x14] + cmp r6, #0x0 + str r1, [sp, #0x18] + ldr r1, [sp, #0x10] + and r1, r1, r3, lsl r4 + str r1, [sp, #0x1c] + ldr r1, [sp, #0x18] + and r1, r2, r3, lsl r1 + str r1, [sp, #0x20] + moveq r1, #0x1 + streq r1, [sp, #0x24] + movne r1, #0x2 + strne r1, [sp, #0x24] + mov r1, #0x0 + str r1, [sp, #0x28] + bl FUN_020B704C + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + mov r10, r1, asr r4 + ldr r1, [sp, #0x18] + mov r1, r2, asr r1 + str r1, [sp, #0x2c] + ldr r1, [sp, #0x24] + mov r2, r1, lsl r4 + ldr r1, [sp, #0x18] + mov r2, r2, lsl r1 + ldr r1, [sp, #0x6c] + mov r9, r2, asr r1 + mov r1, #0x0 + str r1, [sp, #0x30] + str r1, [sp, #0x34] + b _020B5FE8 +_020B5F48: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x18] + ldr r8, [sp, #0x34] + mov r2, r2, lsl r1 + ldr r1, [sp, #0x60] + add lr, r1, r2, lsl #0x3 + b _020B5FD4 +_020B5F64: + mov r1, r8, lsl r4 + add r2, r11, r1, lsl #0x3 + ldr r1, _020B6174 ; =0x000001FF + ldr r3, [r7, #0x0] + and r12, r2, r1 + ldr r1, _020B6178 ; =0xFE00FF00 + and r2, lr, #0xff + and r1, r3, r1 + orr r1, r1, r2 + orr r1, r1, r12, lsl #0x10 + str r1, [r7, #0x0] + ldr r3, [r7, #0x0] + ldr r1, _020B617C ; =0x3FFF3FFF + mov r2, #0x400 + and r1, r3, r1 + orr r1, r1, r0 + str r1, [r7, #0x0] + rsb r1, r2, #0x0 + ldrh r2, [r7, #0x4] + add r8, r8, #0x1 + and r1, r2, r1 + orr r1, r1, r5 + strh r1, [r7, #0x4] + ldr r1, [r7, #0x0] + add r5, r5, r9 + bic r1, r1, #0x2000 + orr r1, r1, r6, lsl #0xd + str r1, [r7], #0x8 +_020B5FD4: + cmp r8, r10 + blt _020B5F64 + ldr r1, [sp, #0x30] + add r1, r1, #0x1 + str r1, [sp, #0x30] +_020B5FE8: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x2c] + cmp r2, r1 + blt _020B5F48 + ldr r0, [sp, #0x28] + mla r0, r10, r1, r0 + str r0, [sp, #0x28] + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x10] + cmp r1, r0 + bhs _020B6078 + ldr r0, [sp, #0x60] + ldr r1, [sp, #0x10] + str r0, [sp, #0x0] + ldr r0, [sp, #0x1c] + str r6, [sp, #0x4] + sub r4, r1, r0 + ldr r1, [sp, #0x6c] + str r5, [sp, #0x8] + str r1, [sp, #0xc] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + add r3, r11, r1, lsl #0x3 + mov r0, r7 + mov r1, r4 + bl FUN_020B5E50 + ldr r1, [sp, #0x24] + add r7, r7, r0, lsl #0x3 + mul r2, r1, r4 + ldr r1, [sp, #0x20] + mul r2, r1, r2 + ldr r1, [sp, #0x6c] + add r5, r5, r2, lsr r1 + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B6078: + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + cmp r1, r0 + bhs _020B60F0 + ldr r1, [sp, #0x60] + ldr r0, [sp, #0x20] + mov r3, r11 + add r0, r1, r0, lsl #0x3 + str r0, [sp, #0x0] + str r6, [sp, #0x4] + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x20] + str r5, [sp, #0x8] + sub r4, r1, r0 + ldr r1, [sp, #0x6c] + mov r0, r7 + str r1, [sp, #0xc] + ldr r1, [sp, #0x1c] + mov r2, r4 + bl FUN_020B5E50 + ldr r2, [sp, #0x24] + ldr r1, [sp, #0x1c] + add r7, r7, r0, lsl #0x3 + mul r1, r2, r1 + mul r2, r4, r1 + ldr r1, [sp, #0x6c] + add r5, r5, r2, lsr r1 + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B60F0: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x10] + cmp r1, r0 + bhs _020B6164 + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + cmp r1, r0 + bhs _020B6164 + ldr r1, [sp, #0x60] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x10] + add r0, r1, r0, lsl #0x3 + ldr r1, [sp, #0x1c] + ldr r3, [sp, #0x14] + str r0, [sp, #0x0] + sub r1, r2, r1 + ldr r2, [sp, #0x20] + str r6, [sp, #0x4] + sub r2, r3, r2 + ldr r3, [sp, #0x1c] + ldr r4, [sp, #0x6c] + str r5, [sp, #0x8] + mov r0, r7 + add r3, r11, r3, lsl #0x3 + str r4, [sp, #0xc] + bl FUN_020B5E50 + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B6164: + ldr r0, [sp, #0x28] + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B6170: .word UNK_020FF970 +_020B6174: .word 0x000001FF +_020B6178: .word 0xFE00FF00 +_020B617C: .word 0x3FFF3FFF + arm_func_end FUN_020B5E50 + + ; _end + arm_func_start FUN_020B6180 +FUN_020B6180: ; 0x020B6180 + stmdb sp!, {r4-r6,lr} + mov r3, r0, lsr #0x3 + mov r6, r1, lsr #0x3 + mul r12, r3, r6 + and r2, r0, #0x4 + and lr, r0, #0x2 + and r0, r0, #0x1 + add r4, r0, lr, lsr #0x1 + mov r5, r2, lsr #0x2 + and r0, r1, #0x4 + add lr, r12, #0x0 + add r12, r5, r4, lsl #0x1 + mla r12, r6, r12, lr + and lr, r1, #0x2 + and r1, r1, #0x1 + add lr, r1, lr, lsr #0x1 + mov r1, r0, lsr #0x2 + add r1, r1, lr, lsl #0x1 + mla r12, r3, r1, r12 + add r1, r4, r2, lsr #0x2 + add r0, lr, r0, lsr #0x2 + mla r0, r1, r0, r12 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020B6180 + + ; _end + arm_func_start FUN_020B61DC +FUN_020B61DC: ; 0x020B61DC + stmdb sp!, {r4-r8,lr} + ldr r12, [sp, #0x1c] + ldr r8, [sp, #0x18] + mov r12, r12, lsl #0x1c + mov r4, r12, lsr #0x10 + mov r6, #0x0 + cmp r2, #0x0 + ldmleia sp!, {r4-r8,pc} + mov lr, r3, lsl #0x1 + mov r12, r6 +_020B6204: + mov r5, r0 + mov r7, r12 + cmp r1, #0x0 + ble _020B622C +_020B6214: + orr r3, r4, r8 + add r7, r7, #0x1 + cmp r7, r1 + add r8, r8, #0x1 + strh r3, [r5], #0x2 + blt _020B6214 +_020B622C: + add r6, r6, #0x1 + cmp r6, r2 + add r0, r0, lr + blt _020B6204 + ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020B61DC + + ; _end + arm_func_start FUN_020B6240 +FUN_020B6240: ; 0x020B6240 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + ldr r5, [sp, #0x24] + ldr lr, [sp, #0x20] + cmp r5, #0x20 + ldr r12, [sp, #0x28] + bgt _020B6280 + mla r4, r5, lr, r3 + ldr lr, [sp, #0x2c] + str r12, [sp, #0x0] + mov r3, r5 + add r0, r0, r4, lsl #0x1 + str lr, [sp, #0x4] + bl FUN_020B61DC + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} +_020B6280: + ldr r4, [sp, #0x2c] + add r7, lr, r2 + mov r2, r4, lsl #0x1c + cmp lr, r7 + add r8, r3, r1 + mov r4, r2, lsr #0x10 + addge sp, sp, #0x8 + ldmgeia sp!, {r4-r8,pc} +_020B62A0: + cmp lr, #0x20 + movlt r1, lr + addge r1, lr, #0x20 + mov r6, r3 + cmp r3, r8 + add r5, r0, r1, lsl #0x6 + bge _020B62E4 +_020B62BC: + cmp r6, #0x20 + movlt r1, r6 + addge r1, r6, #0x3e0 + orr r2, r4, r12 + mov r1, r1, lsl #0x1 + add r6, r6, #0x1 + strh r2, [r5, r1] + cmp r6, r8 + add r12, r12, #0x1 + blt _020B62BC +_020B62E4: + add lr, lr, #0x1 + cmp lr, r7 + blt _020B62A0 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020B6240 + + ; NNS_G2dCharCanvasInitForOBJ1D + arm_func_start FUN_020B62F8 +FUN_020B62F8: ; 0x020B62F8 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x18 + cmp r2, #0x8 + movlt r4, r2 + movge r12, #0x3 + clzlt r4, r4 + rsblt r12, r4, #0x1f + cmp r3, #0x8 + movlt r4, r3 + movge r6, #0x3 + clzlt r4, r4 + rsblt r6, r4, #0x1f + ldr r4, _020B6378 ; =UNK_020FF970 + ldr r5, [sp, #0x28] + add r4, r4, r6, lsl #0x3 + ldrb r6, [r4, r12, lsl #0x1] + add r12, r4, r12, lsl #0x1 + ldr r4, _020B637C ; =FUN_020B6908 + strb r6, [sp, #0x14] + ldrb r6, [r12, #0x1] + ldr lr, _020B6380 ; =FUN_020B68AC + ldr ip, _020B6384 ; =FUN_020B64C0 + strb r6, [sp, #0x15] + str r5, [sp, #0x0] + str r4, [sp, #0x4] + str lr, [sp, #0x8] + str r12, [sp, #0xc] + ldr r12, [sp, #0x14] + str r12, [sp, #0x10] + bl FUN_020B6488 + add sp, sp, #0x18 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B6378: .word UNK_020FF970 +_020B637C: .word FUN_020B6908 +_020B6380: .word FUN_020B68AC +_020B6384: .word FUN_020B64C0 + arm_func_end FUN_020B62F8 + + ; NNS_G2dCharCanvasInitForBG + arm_func_start FUN_020B6388 +FUN_020B6388: ; 0x020B6388 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr lr, [sp, #0x18] + ldr ip, _020B63C0 ; =FUN_020B6B10 + str lr, [sp, #0x0] + ldr lr, _020B63C4 ; =FUN_020B68AC + str r12, [sp, #0x4] + ldr ip, _020B63C8 ; =FUN_020B66D4 + str lr, [sp, #0x8] + str r12, [sp, #0xc] + str r2, [sp, #0x10] + bl FUN_020B6488 + add sp, sp, #0x14 + ldmia sp!, {pc} + .balign 4 +_020B63C0: .word FUN_020B6B10 +_020B63C4: .word FUN_020B68AC +_020B63C8: .word FUN_020B66D4 + arm_func_end FUN_020B6388 + + ; NNS_G2dCharCanvasDrawChar + arm_func_start FUN_020B63CC +FUN_020B63CC: ; 0x020B63CC + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + mov r7, r1 + ldrh r1, [sp, #0x2c] + mov r8, r0 + mov r0, r7 + mov r6, r2 + mov r5, r3 + bl FUN_020B5CE4 + ldr r1, _020B6484 ; =0x0000FFFF + mov r4, r0 + cmp r4, r1 + ldreq r0, [r7, #0x0] + ldreqh r4, [r0, #0x2] + mov r0, r7 + mov r1, r4 + bl FUN_020B5C88 + str r0, [sp, #0x8] + ldr r0, [r7, #0x0] + ldr r2, [sp, #0x28] + ldr r0, [r0, #0x8] + add r1, sp, #0x8 + ldrh r3, [r0, #0x2] + add r12, r0, #0x8 + mov r0, r8 + mla r3, r4, r3, r12 + str r3, [sp, #0xc] + str r2, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x8] + ldr r4, [r8, #0x14] + ldrsb r2, [r1, #0x0] + mov r1, r7 + mov r3, r5 + add r2, r6, r2 + blx r4 + ldrh r0, [r7, #0x8] + cmp r0, #0x0 + ldrne r0, [sp, #0x8] + ldrnesb r1, [r0, #0x0] + ldrneb r0, [r0, #0x1] + addne r0, r1, r0 + ldreq r0, [sp, #0x8] + ldreqsb r0, [r0, #0x2] + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B6484: .word 0x0000FFFF + arm_func_end FUN_020B63CC + + ; _end + arm_func_start FUN_020B6488 +FUN_020B6488: ; 0x020B6488 + str r2, [r0, #0x4] + ldr r2, [sp, #0x0] + str r3, [r0, #0x8] + strb r2, [r0, #0xc] + ldr r2, [sp, #0x4] + str r1, [r0, #0x0] + ldr r1, [sp, #0x8] + str r2, [r0, #0x14] + ldr r2, [sp, #0xc] + str r1, [r0, #0x18] + ldr r1, [sp, #0x10] + str r2, [r0, #0x1c] + str r1, [r0, #0x10] + bx lr + arm_func_end FUN_020B6488 + + ; _end + arm_func_start FUN_020B64C0 +FUN_020B64C0: ; 0x020B64C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x54 + ldrb r4, [r0, #0xc] + mov r10, r2 + str r1, [sp, #0xc] + str r4, [sp, #0x44] + ldr r1, [sp, #0x44] + ldr r4, [sp, #0x78] + cmp r1, #0x4 + add r1, r10, r4 + str r1, [sp, #0x1c] + ldr r2, [sp, #0x7c] + mov r1, r3 + add r1, r1, r2 + str r1, [sp, #0x20] + ldrne r1, [sp, #0xc] + str r3, [sp, #0x10] + orrne r1, r1, r1, lsl #0x8 + orrne r1, r1, r1, lsl #0x10 + strne r1, [sp, #0xc] + bne _020B6528 + ldr r1, [sp, #0xc] + orr r1, r1, r1, lsl #0x4 + orr r1, r1, r1, lsl #0x8 + orr r1, r1, r1, lsl #0x10 + str r1, [sp, #0xc] +_020B6528: + bic r1, r10, #0x7 + str r1, [sp, #0x30] + ldr r1, [sp, #0x10] + ldr r2, [r0, #0x10] + bic r1, r1, #0x7 + str r1, [sp, #0x14] + ldr r1, [sp, #0x44] + str r2, [sp, #0x4c] + mov r3, r1, lsl #0x6 + mov r2, r3, asr #0x2 + ldr r1, [sp, #0x20] + add r3, r3, r2, lsr #0x1d + ldr r2, [sp, #0x1c] + add r6, r1, #0x7 + add r2, r2, #0x7 + bic r5, r2, #0x7 + bic r2, r6, #0x7 + ldr r1, [sp, #0x30] + str r2, [sp, #0x24] + mov r2, r3, asr #0x3 + str r2, [sp, #0x48] + mov r4, r1, asr #0x2 + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x14] + add r2, r2, r4, lsr #0x1d + mov r2, r2, asr #0x3 + str r2, [sp, #0x2c] + ldr r2, [sp, #0x14] + mov r1, r1, asr #0x2 + add r1, r2, r1, lsr #0x1d + mov r6, r1, asr #0x3 + ldr r1, [sp, #0x24] + cmp r2, r1 + ldr r1, [r0, #0x4] + str r1, [sp, #0x40] + ldr r1, [r0, #0x8] + ldr r0, [r0, #0x0] + str r1, [sp, #0x3c] + str r0, [sp, #0x28] + ldrb r0, [sp, #0x4c] + str r0, [sp, #0x38] + ldrb r0, [sp, #0x4d] + str r0, [sp, #0x34] + addge sp, sp, #0x54 + ldmgeia sp!, {r4-r11,pc} + mov r4, #0x0 + mov r11, #0x8 +_020B65E4: + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x2c] + cmp r1, r0 + movlt r1, r0 + ldrlt r0, [sp, #0x14] + sublt r9, r1, r0 + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + movge r9, r4 + sub r0, r1, r0 + cmp r0, #0x8 + movgt r0, r11 + sub r0, r0, r9 + str r0, [sp, #0x18] + ldr r0, [sp, #0x30] + cmp r0, r5 + mov r8, r0 + bge _020B66B0 +_020B6630: + ldr r0, [sp, #0x38] + ldr r2, [sp, #0x40] + str r0, [sp, #0x0] + ldr r0, [sp, #0x34] + ldr r3, [sp, #0x3c] + str r0, [sp, #0x4] + mov r0, r7 + mov r1, r6 + bl FUN_020B7068 + ldr r2, [sp, #0x1c] + cmp r8, r10 + sublt r1, r10, r8 + sub r2, r2, r8 + movge r1, r4 + cmp r2, #0x8 + movgt r2, r11 + sub r3, r2, r1 + ldr r2, [sp, #0x18] + ldr r12, [sp, #0x48] + str r2, [sp, #0x0] + ldr r2, [sp, #0xc] + str r2, [sp, #0x4] + ldr r2, [sp, #0x44] + str r2, [sp, #0x8] + ldr r2, [sp, #0x28] + mla r0, r12, r0, r2 + mov r2, r9 + bl FUN_020B6F18 + add r8, r8, #0x8 + add r7, r7, #0x1 + cmp r8, r5 + blt _020B6630 +_020B66B0: + ldr r0, [sp, #0x14] + add r6, r6, #0x1 + add r1, r0, #0x8 + ldr r0, [sp, #0x24] + str r1, [sp, #0x14] + cmp r1, r0 + blt _020B65E4 + add sp, sp, #0x54 + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B64C0 + + ; _end + arm_func_start FUN_020B66D4 +FUN_020B66D4: ; 0x020B66D4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + ldrb r4, [r0, #0xc] + mov r10, r2 + str r1, [sp, #0xc] + str r4, [sp, #0x2c] + ldr r1, [sp, #0x2c] + ldr r4, [sp, #0x60] + cmp r1, #0x4 + add r1, r10, r4 + str r1, [sp, #0x18] + ldr r2, [sp, #0x64] + mov r1, r3 + add r1, r1, r2 + str r1, [sp, #0x1c] + ldrne r1, [sp, #0xc] + str r3, [sp, #0x10] + orrne r1, r1, r1, lsl #0x8 + orrne r1, r1, r1, lsl #0x10 + strne r1, [sp, #0xc] + bne _020B673C + ldr r1, [sp, #0xc] + orr r1, r1, r1, lsl #0x4 + orr r1, r1, r1, lsl #0x8 + orr r1, r1, r1, lsl #0x10 + str r1, [sp, #0xc] +_020B673C: + ldr r1, [sp, #0x10] + bic r1, r1, #0x7 + mov r2, r1, asr #0x2 + str r1, [sp, #0x14] + add r1, r1, r2, lsr #0x1d + ldr r2, [r0, #0x10] + mov r3, r1, asr #0x3 + mul r1, r3, r2 + bic r3, r10, #0x7 + str r3, [sp, #0x28] + ldr r3, [sp, #0x2c] + mov r6, r3, lsl #0x6 + ldr r3, [sp, #0x28] + mov r4, r6, asr #0x2 + mov r5, r3, asr #0x2 + add r5, r3, r5, lsr #0x1d + add r4, r6, r4, lsr #0x1d + mov r3, r4, asr #0x3 + str r3, [sp, #0x30] + ldr r3, [sp, #0x1c] + add r1, r1, r5, asr #0x3 + add r4, r3, #0x7 + ldr r3, [r0, #0x0] + ldr r0, [sp, #0x18] + add r5, r0, #0x7 + ldr r0, [sp, #0x30] + bic r7, r5, #0x7 + mla r1, r0, r1, r3 + bic r0, r4, #0x7 + str r0, [sp, #0x20] + ldr r0, [sp, #0x30] + str r1, [sp, #0x24] + mul r0, r2, r0 + str r0, [sp, #0x34] + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x20] + cmp r1, r0 + addge sp, sp, #0x3c + ldmgeia sp!, {r4-r11,pc} + mov r5, #0x0 + mov r4, #0x8 +_020B67E0: + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x10] + ldr r6, [sp, #0x24] + cmp r1, r0 + movlt r1, r0 + ldrlt r0, [sp, #0x14] + sublt r9, r1, r0 + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x14] + movge r9, r5 + sub r0, r1, r0 + cmp r0, #0x8 + movgt r0, r4 + sub r11, r0, r9 + ldr r0, [sp, #0x28] + cmp r0, r7 + mov r8, r0 + bge _020B687C +_020B6828: + ldr r0, [sp, #0x18] + cmp r8, r10 + sublt r1, r10, r8 + sub r0, r0, r8 + movge r1, r5 + cmp r0, #0x8 + movgt r0, r4 + sub r3, r0, r1 + ldr r0, [sp, #0xc] + str r11, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x2c] + mov r2, r9 + str r0, [sp, #0x8] + mov r0, r6 + bl FUN_020B6F18 + ldr r0, [sp, #0x30] + add r8, r8, #0x8 + add r6, r6, r0 + cmp r8, r7 + blt _020B6828 +_020B687C: + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x34] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x14] + add r1, r0, #0x8 + ldr r0, [sp, #0x20] + str r1, [sp, #0x14] + cmp r1, r0 + blt _020B67E0 + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B66D4 + + ; _end + arm_func_start FUN_020B68AC +FUN_020B68AC: ; 0x020B68AC + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r0 + ldrb r2, [r3, #0xc] + ldr r12, [r3, #0x4] + cmp r2, #0x4 + orreq r0, r1, r1, lsl #0x4 + orreq r0, r0, r0, lsl #0x8 + orreq r1, r0, r0, lsl #0x10 + orrne r0, r1, r1, lsl #0x8 + orrne r1, r0, r0, lsl #0x10 + ldr r0, [r3, #0x8] + mov r2, r2, lsl #0x6 + mul lr, r12, r0 + mov r0, r2, asr #0x2 + add r0, r2, r0, lsr #0x1d + mov r2, r0, asr #0x3 + mov r0, r1 + mul r2, lr, r2 + ldr r1, [r3, #0x0] + bl MIi_CpuClearFast + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end FUN_020B68AC + + ; _end + arm_func_start FUN_020B6908 +FUN_020B6908: ; 0x020B6908 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4c + ldr r7, [sp, #0x74] + ldrb r5, [r0, #0xc] + ldr r6, [r1, #0x0] + ldr r4, [r7, #0x0] + ldr r9, [r6, #0x8] + mov r8, r5, lsl #0x6 + ldrb r4, [r4, #0x1] + mov r5, r8, asr #0x2 + add r5, r8, r5, lsr #0x1d + ldrb r9, [r9, #0x1] + ldr r8, [r0, #0x4] + ldr r6, [r0, #0x8] + str r2, [sp, #0x8] + str r3, [sp, #0xc] + cmp r4, #0x0 + mov r5, r5, asr #0x3 + addeq sp, sp, #0x4c + ldmeqia sp!, {r4-r11,pc} + adds r3, r2, r4 + addmi sp, sp, #0x4c + ldmmiia sp!, {r4-r11,pc} + ldr r2, [sp, #0xc] + adds r2, r2, r9 + addmi sp, sp, #0x4c + ldmmiia sp!, {r4-r11,pc} + ldr r10, [sp, #0x8] + add r3, r3, #0x7 + cmp r10, #0x0 + movle r10, #0x0 + strle r10, [sp, #0x10] + movgt r10, r10, lsr #0x3 + strgt r10, [sp, #0x10] + ldr r10, [sp, #0xc] + add r2, r2, #0x7 + cmp r10, #0x0 + movle r10, #0x0 + mov r11, r2, lsr #0x3 + mov r3, r3, lsr #0x3 + movgt r10, r10, lsr #0x3 + cmp r3, r8 + movcs r3, r8 + cmp r11, r6 + ldr r2, [sp, #0x10] + movcs r11, r6 + subs r8, r3, r2 + addmi sp, sp, #0x4c + sub r3, r11, r10 + ldmmiia sp!, {r4-r11,pc} + cmp r3, #0x0 + addlt sp, sp, #0x4c + ldmltia sp!, {r4-r11,pc} + ldr r2, [sp, #0x8] + ldr r6, [r0, #0x0] + cmp r2, #0x0 + andge r2, r2, #0x7 + strge r2, [sp, #0x8] + ldr r2, [sp, #0xc] + ldr r11, [sp, #0x8] + cmp r2, #0x0 + andge r2, r2, #0x7 + strge r2, [sp, #0xc] + sub r8, r11, r8, lsl #0x3 + ldr r11, [sp, #0xc] + ldr r2, [sp, #0x70] + sub r3, r11, r3, lsl #0x3 + str r3, [sp, #0x14] + ldr r3, [r7, #0x4] + sub r2, r2, #0x1 + str r3, [sp, #0x28] + str r2, [sp, #0x48] + str r9, [sp, #0x38] + str r4, [sp, #0x34] + ldr r4, [r1, #0x0] + ldr r2, [sp, #0x14] + mov r3, r11 + cmp r3, r2 + ldr r2, [r4, #0x8] + ldrb r3, [r2, #0x6] + str r3, [sp, #0x40] + ldrb r2, [r0, #0xc] + str r2, [sp, #0x44] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x8] + ldrb r1, [r1, #0x0] + mul r1, r3, r1 + str r1, [sp, #0x3c] + ldr r1, [r0, #0x10] + str r1, [sp, #0x20] + ldr r1, [r0, #0x4] + ldr r0, [r0, #0x8] + ldrb r11, [sp, #0x20] + ldrb r4, [sp, #0x21] + str r1, [sp, #0x1c] + str r0, [sp, #0x18] + addle sp, sp, #0x4c + ldmleia sp!, {r4-r11,pc} +_020B6A90: + ldr r0, [sp, #0xc] + ldr r7, [sp, #0x10] + str r0, [sp, #0x30] + ldr r0, [sp, #0x8] + cmp r0, r8 + mov r9, r0 + ble _020B6AEC +_020B6AAC: + ldr r2, [sp, #0x1c] + str r11, [sp, #0x0] + ldr r3, [sp, #0x18] + mov r0, r7 + mov r1, r10 + str r4, [sp, #0x4] + bl FUN_020B7068 + mla r1, r0, r5, r6 + add r0, sp, #0x24 + str r9, [sp, #0x2c] + str r1, [sp, #0x24] + bl FUN_020B6CAC + sub r9, r9, #0x8 + add r7, r7, #0x1 + cmp r9, r8 + bgt _020B6AAC +_020B6AEC: + ldr r0, [sp, #0xc] + add r10, r10, #0x1 + sub r1, r0, #0x8 + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + cmp r1, r0 + bgt _020B6A90 + add sp, sp, #0x4c + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B6908 + + ; _end + arm_func_start FUN_020B6B10 +FUN_020B6B10: ; 0x020B6B10 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x2c + ldr r4, [sp, #0x54] + ldrb r5, [r0, #0xc] + str r4, [sp, #0x54] + ldr r4, [r4, #0x0] + ldr r6, [r1, #0x0] + mov r7, r5, lsl #0x6 + ldrb r4, [r4, #0x1] + mov r5, r7, asr #0x2 + add r5, r7, r5, lsr #0x1d + cmp r4, #0x0 + ldr r6, [r6, #0x8] + mov r9, r3 + ldr r8, [r0, #0x4] + ldr r7, [r0, #0x8] + mov r10, r2 + mov r5, r5, asr #0x3 + addeq sp, sp, #0x2c + ldr lr, [r0, #0x0] + ldrb r3, [r6, #0x1] + ldmeqia sp!, {r4-r11,pc} + adds r6, r10, r4 + addmi sp, sp, #0x2c + ldmmiia sp!, {r4-r11,pc} + adds r2, r9, r3 + addmi sp, sp, #0x2c + ldmmiia sp!, {r4-r11,pc} + cmp r10, #0x0 + movle r11, #0x0 + add r6, r6, #0x7 + movgt r11, r10, lsr #0x3 + cmp r9, #0x0 + movle r12, #0x0 + add r2, r2, #0x7 + mov r6, r6, lsr #0x3 + movgt r12, r9, lsr #0x3 + cmp r6, r8 + movcs r6, r8 + mov r2, r2, lsr #0x3 + cmp r2, r7 + movcs r2, r7 + subs r7, r6, r11 + addmi sp, sp, #0x2c + sub r2, r2, r12 + ldmmiia sp!, {r4-r11,pc} + cmp r2, #0x0 + addlt sp, sp, #0x2c + ldmltia sp!, {r4-r11,pc} + ldr r6, [r0, #0x10] + cmp r10, #0x0 + sub r8, r6, r7 + mul r8, r5, r8 + mla r11, r6, r12, r11 + andge r10, r10, #0x7 + str r8, [sp, #0x0] + ldr r8, [sp, #0x54] + mla r6, r5, r11, lr + ldr r12, [r8, #0x4] + ldr r11, [sp, #0x50] + cmp r9, #0x0 + sub r8, r11, #0x1 + andge r9, r9, #0x7 + sub r11, r9, r2, lsl #0x3 + str r12, [sp, #0x8] + str r4, [sp, #0x14] + str r8, [sp, #0x28] + str r3, [sp, #0x18] + ldr r3, [r1, #0x0] + cmp r9, r11 + ldr r2, [r3, #0x8] + sub r7, r10, r7, lsl #0x3 + ldrb r2, [r2, #0x6] + str r2, [sp, #0x20] + ldrb r0, [r0, #0xc] + str r0, [sp, #0x24] + ldr r0, [r1, #0x0] + ldr r0, [r0, #0x8] + ldrb r0, [r0, #0x0] + mul r0, r2, r0 + str r0, [sp, #0x1c] + addle sp, sp, #0x2c + ldmleia sp!, {r4-r11,pc} + add r4, sp, #0x4 +_020B6C60: + mov r8, r10 + str r9, [sp, #0x10] + cmp r10, r7 + ble _020B6C90 +_020B6C70: + mov r0, r4 + str r6, [sp, #0x4] + str r8, [sp, #0xc] + bl FUN_020B6CAC + sub r8, r8, #0x8 + cmp r8, r7 + add r6, r6, r5 + bgt _020B6C70 +_020B6C90: + ldr r0, [sp, #0x0] + sub r9, r9, #0x8 + cmp r9, r11 + add r6, r6, r0 + bgt _020B6C60 + add sp, sp, #0x2c + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B6B10 + + ; _end + arm_func_start FUN_020B6CAC +FUN_020B6CAC: ; 0x020B6CAC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + ldr r5, [r0, #0x8] + ldr r4, [r0, #0xc] + cmp r5, #0x0 + strge r5, [sp, #0x0] + movlt r1, #0x0 + strlt r1, [sp, #0x0] + ldr r1, [r0, #0x10] + cmp r4, #0x0 + add r10, r5, r1 + ldr r1, [r0, #0x14] + movge r2, r4 + movlt r2, #0x0 + cmp r10, #0x8 + add r3, r4, r1 + movge r10, #0x8 + cmp r3, #0x8 + movge r3, #0x8 + cmp r4, #0x0 + movgt r4, #0x0 + cmp r5, #0x0 + ldr r8, [r0, #0x20] + movgt r5, #0x0 + rsb r1, r4, #0x0 + mul r7, r10, r8 + ldr r6, [r0, #0x1c] + rsb r4, r5, #0x0 + mul r9, r6, r4 + ldr r4, [r0, #0x18] + mov r10, r7 + str r4, [sp, #0x8] + ldr r4, [sp, #0x0] + cmp r8, #0x4 + mul r5, r4, r8 + ldr r4, [sp, #0x8] + str r5, [sp, #0x0] + mla r11, r1, r4, r9 + ldr r1, [r0, #0x4] + str r1, [sp, #0x4] + bne _020B6E24 + ldr r1, [r0, #0x0] + ldr r7, [r0, #0x24] + add r0, r1, r2, lsl #0x2 + str r0, [sp, #0xc] + add r0, r1, r3, lsl #0x2 + ldr r1, [sp, #0xc] + str r0, [sp, #0x10] + cmp r1, r0 + addcs sp, sp, #0x34 + ldmcsia sp!, {r4-r11,pc} + mov r0, #0x0 + add r9, sp, #0x24 + mov r4, #0xf + str r0, [sp, #0x1c] +_020B6D88: + ldr r0, [sp, #0xc] + mov r1, r11, lsr #0x1f + ldr r5, [r0, #0x0] + ldr r0, [sp, #0x4] + rsb r2, r1, r11, lsl #0x1d + add r0, r0, r11, lsr #0x3 + str r0, [sp, #0x24] + ldr r0, [sp, #0x1c] + add r1, r1, r2, ror #0x1d + strb r0, [sp, #0x28] + strb r0, [sp, #0x29] + mov r0, r9 + bl FUN_020B76B0 + ldr r8, [sp, #0x0] + mov r0, r8 + cmp r0, r10 + bhs _020B6DF8 +_020B6DCC: + mov r0, r9 + mov r1, r6 + bl FUN_020B76B0 + cmp r0, #0x0 + mvnne r1, r4, lsl r8 + addne r0, r7, r0 + andne r1, r5, r1 + orrne r5, r1, r0, lsl r8 + add r8, r8, #0x4 + cmp r8, r10 + blo _020B6DCC +_020B6DF8: + ldr r0, [sp, #0xc] + add r1, r0, #0x4 + str r5, [r0, #0x0] + ldr r0, [sp, #0x10] + str r1, [sp, #0xc] + cmp r1, r0 + ldr r0, [sp, #0x8] + add r11, r11, r0 + blo _020B6D88 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} +_020B6E24: + ldr r1, [r0, #0x0] + ldr r9, [r0, #0x24] + add r0, r1, r2, lsl #0x3 + str r0, [sp, #0x14] + add r0, r1, r3, lsl #0x3 + ldr r1, [sp, #0x14] + str r0, [sp, #0x18] + cmp r1, r0 + addcs sp, sp, #0x34 + ldmcsia sp!, {r4-r11,pc} + mov r0, #0x0 + mov r4, #0xff + str r0, [sp, #0x20] +_020B6E58: + mov r1, r11, lsr #0x1f + rsb r0, r1, r11, lsl #0x1d + add r1, r1, r0, ror #0x1d + ldr r0, [sp, #0x14] + ldr r8, [r0, #0x0] + ldr r7, [r0, #0x4] + ldr r0, [sp, #0x4] + add r0, r0, r11, lsr #0x3 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x20] + strb r0, [sp, #0x30] + strb r0, [sp, #0x31] + add r0, sp, #0x2c + bl FUN_020B76B0 + ldr r0, [sp, #0x0] + cmp r0, r10 + mov r5, r0 + bhs _020B6EE8 +_020B6EA0: + add r0, sp, #0x2c + mov r1, r6 + bl FUN_020B76B0 + cmp r0, #0x0 + beq _020B6EDC + cmp r5, #0x20 + mvncc r1, r4, lsl r5 + addcc r0, r9, r0 + andcc r1, r8, r1 + orrcc r8, r1, r0, lsl r5 + subcs r2, r5, #0x20 + mvncs r1, r4, lsl r2 + addcs r0, r9, r0 + andcs r1, r7, r1 + orrcs r7, r1, r0, lsl r2 +_020B6EDC: + add r5, r5, #0x8 + cmp r5, r10 + blo _020B6EA0 +_020B6EE8: + ldr r0, [sp, #0x14] + str r8, [r0, #0x0] + add r1, r0, #0x8 + str r7, [r0, #0x4] + ldr r0, [sp, #0x18] + str r1, [sp, #0x14] + cmp r1, r0 + ldr r0, [sp, #0x8] + add r11, r11, r0 + blo _020B6E58 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B6CAC + + ; _end + arm_func_start FUN_020B6F18 +FUN_020B6F18: ; 0x020B6F18 + stmdb sp!, {r4-r6,lr} + mov lr, r0 + cmp r3, #0x8 + ldr r0, [sp, #0x14] + bne _020B6F4C + ldr r4, [sp, #0x10] + cmp r4, #0x8 + bne _020B6F4C + ldr r2, [sp, #0x18] + mov r1, lr + mov r2, r2, lsl #0x3 + bl MIi_CpuClearFast + ldmia sp!, {r4-r6,pc} +_020B6F4C: + ldr r4, [sp, #0x18] + cmp r4, #0x4 + bne _020B6FAC + mov r5, r1, lsl #0x2 + add r4, r5, r3, lsl #0x2 + mvn r3, #0x0 + rsb r4, r4, #0x20 + mov r3, r3, lsr r5 + add r1, r4, r1, lsl #0x2 + mov r3, r3, lsl r1 + ldr r1, [sp, #0x10] + add r5, lr, r2, lsl #0x2 + add r2, r5, r1, lsl #0x2 + and r6, r0, r3, lsr r4 + cmp r5, r2 + mvn r1, r3, lsr r4 + ldmcsia sp!, {r4-r6,pc} +_020B6F90: + ldr r0, [r5, #0x0] + and r0, r0, r1 + orr r0, r6, r0 + str r0, [r5], #0x4 + cmp r5, r2 + blo _020B6F90 + ldmia sp!, {r4-r6,pc} +_020B6FAC: + mov r12, r1, lsl #0x3 + add r1, r12, r3, lsl #0x3 + rsb r1, r1, #0x40 + mvn r3, #0x0 + cmp r1, #0x20 + mov r5, r3, lsr r12 + subcs r4, r1, #0x20 + addcs r3, r12, r4 + movcs r3, r5, lsl r3 + movcs r3, r3, lsr r4 + movcc r3, r5, lsl r12 + mvn r4, #0x0 + add r5, lr, r2, lsl #0x3 + cmp r12, #0x20 + mov r4, r4, lsl r1 + subcs r12, r12, #0x20 + addcs r1, r12, r1 + movcs r1, r4, lsr r1 + movcs r6, r1, lsl r12 + movcc r6, r4, lsr r1 + ldr r1, [sp, #0x10] + and lr, r0, r3 + add r4, r5, r1, lsl #0x3 + cmp r5, r4 + and r12, r0, r6 + mvn r2, r3 + mvn r1, r6 + ldmcsia sp!, {r4-r6,pc} +_020B701C: + ldr r0, [r5, #0x0] + and r0, r0, r2 + orr r0, lr, r0 + str r0, [r5, #0x0] + ldr r0, [r5, #0x4] + and r0, r0, r1 + orr r0, r12, r0 + str r0, [r5, #0x4] + add r5, r5, #0x8 + cmp r5, r4 + blo _020B701C + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020B6F18 + + ; OBJSizeToShape + arm_func_start FUN_020B704C +FUN_020B704C: ; 0x020B704C + ldrb r3, [r0, #0x1] + ldr r2, _020B7064 ; =UNK_020FF990 + ldrb r1, [r0, #0x0] + add r0, r2, r3, lsl #0x4 + ldr r0, [r0, r1, lsl #0x2] + bx lr + .balign 4 +_020B7064: .word UNK_020FF990 + arm_func_end FUN_020B704C + + ; GetCharIndex1D + arm_func_start FUN_020B7068 +FUN_020B7068: ; 0x020B7068 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr fp, _020B7164 ; =UNK_020FF970 + mov r9, #0x0 + mov r10, #0x3 + mvn r7, #0x0 +_020B7080: + ldr r4, [sp, #0x2c] + ldr r6, [sp, #0x28] + and r12, r3, r7, lsl r4 + cmp r12, r1 + mov r8, r7, lsl r6 + mov r5, r7, lsl r4 + and lr, r2, r7, lsl r6 + bhi _020B70D0 + mla r9, r2, r12, r9 + cmp lr, r0 + movhi r2, lr + subhi r1, r1, r12 + subhi r3, r3, r12 + bhi _020B7118 + sub r3, r3, r12 + mla r9, lr, r3, r9 + sub r0, r0, lr + sub r1, r1, r12 + sub r2, r2, lr + b _020B7118 +_020B70D0: + cmp lr, r0 + mlals r9, lr, r12, r9 + mvn r3, r5 + movls r3, r12 + subls r0, r0, lr + subls r2, r2, lr + bls _020B7118 + and r2, r1, r5 + mla r5, lr, r2, r9 + and r2, r0, r8 + and r1, r1, r3 + add r2, r5, r2, lsl r4 + mvn r3, r8 + add r1, r2, r1, lsl r6 + and r0, r0, r3 + add sp, sp, #0x4 + add r0, r1, r0 + ldmia sp!, {r4-r11,pc} +_020B7118: + cmp r2, #0x8 + movlt r4, r2 + movge r5, r10 + clzlt r4, r4 + rsblt r5, r4, #0x1f + cmp r3, #0x8 + movge r4, r10 + movlt r4, r3 + clzlt r4, r4 + rsblt r4, r4, #0x1f + add r4, r11, r4, lsl #0x3 + add r6, r4, r5, lsl #0x1 + ldrb r5, [r4, r5, lsl #0x1] + ldrb r4, [r6, #0x1] + str r5, [sp, #0x28] + str r4, [sp, #0x2c] + b _020B7080 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B7164: .word UNK_020FF970 + arm_func_end FUN_020B7068 + diff --git a/arm9/asm/NNS_G2D_g2d_font.s b/arm9/asm/NNS_G2D_g2d_font.s new file mode 100644 index 00000000..acb0abe8 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_font.s @@ -0,0 +1,292 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020B5ABC +FUN_020B5ABC: ; 0x020B5ABC + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc + add r5, sp, #0x0 + mov r4, #0x0 + str r4, [r5, #0x0] + str r4, [r5, #0x4] + mov r8, r2 + ldr r2, [sp, #0x28] + mov r5, r0 + mov r9, r1 + mov r4, r3 + cmp r2, #0x0 + mov r7, #0x1 + beq _020B5B24 + add r6, sp, #0x28 +_020B5AF8: + mov r0, r9 + mov r1, r8 + mov r3, r6 + bl FUN_020B5BC8 + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x28] + cmp r0, r1 + strgt r0, [sp, #0x0] + add r7, r7, #0x1 + cmp r2, #0x0 + bne _020B5AF8 +_020B5B24: + ldr r0, [r9, #0x0] + sub r2, r7, #0x1 + ldrsb r1, [r0, #0x1] + ldr r0, [sp, #0x0] + add r1, r4, r1 + mul r1, r2, r1 + sub r1, r1, r4 + str r1, [sp, #0x4] + str r0, [r5, #0x0] + str r1, [r5, #0x4] + add sp, sp, #0xc + ldmia sp!, {r4-r9,pc} + arm_func_end FUN_020B5ABC + + ; _end + arm_func_start FUN_020B5B54 +FUN_020B5B54: ; 0x020B5B54 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + str r2, [sp, #0x0] + add r3, sp, #0x4 + mov r2, #0x0 + str r2, [r3, #0x0] + mov r8, r0 + str r2, [r3, #0x4] + ldr r7, [r8, #0x4] + add r0, sp, #0x0 + mov r5, r1 + mov r4, #0x1 + blx r7 + cmp r0, #0x0 + beq _020B5BAC + add r6, sp, #0x0 +_020B5B94: + cmp r0, #0xa + mov r0, r6 + addeq r4, r4, #0x1 + blx r7 + cmp r0, #0x0 + bne _020B5B94 +_020B5BAC: + ldr r0, [r8, #0x0] + ldrsb r0, [r0, #0x1] + add r0, r5, r0 + mul r0, r4, r0 + sub r0, r0, r5 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020B5B54 + + ; NNSi_G2dFontGetStringWidth + arm_func_start FUN_020B5BC8 +FUN_020B5BC8: ; 0x020B5BC8 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x8 + mov r8, r0 + str r2, [sp, #0x0] + ldr r4, [r8, #0x4] + add r0, sp, #0x0 + mov r7, r1 + mov r6, r3 + mov r5, #0x0 + blx r4 + movs r1, r0 + beq _020B5C58 + ldr sb, _020B5C84 ; =0x0000FFFF + add r10, sp, #0x0 +_020B5C00: + cmp r1, #0xa + beq _020B5C58 + mov r0, r8 + bl FUN_020B5CE4 + mov r1, r0 + cmp r1, r9 + ldreq r0, [r8, #0x0] + ldreqh r1, [r0, #0x2] + mov r0, r8 + bl FUN_020B5C88 + ldrh r1, [r8, #0x8] + cmp r1, #0x0 + ldrnesb r1, [r0, #0x0] + ldrneb r0, [r0, #0x1] + addne r0, r1, r0 + ldreqsb r0, [r0, #0x2] + add r1, r7, r0 + mov r0, r10 + add r5, r5, r1 + blx r4 + movs r1, r0 + bne _020B5C00 +_020B5C58: + cmp r6, #0x0 + beq _020B5C70 + cmp r1, #0xa + ldreq r0, [sp, #0x0] + movne r0, #0x0 + str r0, [r6, #0x0] +_020B5C70: + cmp r5, #0x0 + subgt r5, r5, r7 + mov r0, r5 + add sp, sp, #0x8 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B5C84: .word 0x0000FFFF + arm_func_end FUN_020B5BC8 + + ; _end + arm_func_start FUN_020B5C88 +FUN_020B5C88: ; 0x020B5C88 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x0] + ldr lr, [r3, #0xc] + cmp lr, #0x0 + beq _020B5CD8 +_020B5CA0: + ldrh r12, [lr, #0x0] + cmp r12, r1 + bhi _020B5CCC + ldrh r2, [lr, #0x2] + cmp r1, r2 + ldrlsh r2, [r0, #0xa] + addls r3, lr, #0x8 + subls r0, r1, r12 + mlals r0, r2, r0, r3 + addls sp, sp, #0x4 + ldmlsia sp!, {pc} +_020B5CCC: + ldr lr, [lr, #0x4] + cmp lr, #0x0 + bne _020B5CA0 +_020B5CD8: + add r0, r3, #0x4 + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end FUN_020B5C88 + + ; NNS_G2dFontFindGlyphIndex + arm_func_start FUN_020B5CE4 +FUN_020B5CE4: ; 0x020B5CE4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + cmp r0, #0x0 + beq _020B5D2C +_020B5CFC: + ldrh r2, [r0, #0x0] + cmp r2, r1 + bhi _020B5D20 + ldrh r2, [r0, #0x2] + cmp r1, r2 + bhi _020B5D20 + bl FUN_020B5D7C + add sp, sp, #0x4 + ldmia sp!, {pc} +_020B5D20: + ldr r0, [r0, #0x8] + cmp r0, #0x0 + bne _020B5CFC +_020B5D2C: + ldr r0, _020B5D38 ; =0x0000FFFF + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B5D38: .word 0x0000FFFF + arm_func_end FUN_020B5CE4 + + ; NNS_G2dFontInitUTF16 + arm_func_start FUN_020B5D3C +FUN_020B5D3C: ; 0x020B5D3C + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, r1 + mov r1, r4 + bl FUN_020B7558 + sub r0, r0, #0x1 + strh r0, [r4, #0x8] + ldrh r0, [r4, #0x8] + cmp r0, #0x0 + movne r1, #0x2 + moveq r1, #0x3 + ldr r0, _020B5D78 ; =FUN_020B7718 + strh r1, [r4, #0xa] + str r0, [r4, #0x4] + ldmia sp!, {r4,pc} + .balign 4 +_020B5D78: .word FUN_020B7718 + arm_func_end FUN_020B5D3C + + ; GetGlyphIndex + arm_func_start FUN_020B5D7C +FUN_020B5D7C: ; 0x020B5D7C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r3, [r0, #0x4] + ldr r2, _020B5E4C ; =0x0000FFFF + cmp r3, #0x0 + beq _020B5DA8 + cmp r3, #0x1 + beq _020B5DC4 + cmp r3, #0x2 + beq _020B5DD8 + b _020B5E40 +_020B5DA8: + ldrh r2, [r0, #0x0] + ldrh r3, [r0, #0xc] + sub r0, r1, r2 + add r0, r3, r0 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + b _020B5E40 +_020B5DC4: + ldrh r2, [r0, #0x0] + sub r1, r1, r2 + add r0, r0, r1, lsl #0x1 + ldrh r2, [r0, #0xc] + b _020B5E40 +_020B5DD8: + ldrh r3, [r0, #0xc] + add r0, r0, #0xc + add r0, r0, #0x2 + sub r3, r3, #0x1 + add lr, r0, r3, lsl #0x2 + cmp r0, lr + bhi _020B5E40 +_020B5DF4: + sub r12, lr, r0 + mov r3, r12, asr #0x1 + add r3, r12, r3, lsr #0x1e + mov r3, r3, asr #0x2 + add r3, r3, r3, lsr #0x1f + mov r12, r3, asr #0x1 + mov r3, r12, lsl #0x2 + ldrh r3, [r0, r3] + add r12, r0, r12, lsl #0x2 + cmp r3, r1 + addcc r0, r12, #0x4 + blo _020B5E38 + cmp r1, r3 + subcc lr, r12, #0x4 + blo _020B5E38 + ldrh r2, [r12, #0x2] + b _020B5E40 +_020B5E38: + cmp r0, lr + bls _020B5DF4 +_020B5E40: + mov r0, r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B5E4C: .word 0x0000FFFF + arm_func_end FUN_020B5D7C + diff --git a/arm9/asm/NNS_G2D_g2d_image.s b/arm9/asm/NNS_G2D_g2d_image.s new file mode 100644 index 00000000..208994cc --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_image.s @@ -0,0 +1,797 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020B10BC +FUN_020B10BC: ; 0x020B10BC + ldr r0, [r0, r1, lsl #0x2] + bx lr + arm_func_end FUN_020B10BC + + ; _end + arm_func_start FUN_020B10C4 +FUN_020B10C4: ; 0x020B10C4 + str r2, [r0, r1, lsl #0x2] + bx lr + arm_func_end FUN_020B10C4 + + ; _end + arm_func_start FUN_020B10CC +FUN_020B10CC: ; 0x020B10CC + mov r2, #0x0 + mvn r1, #0x0 +_020B10D4: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x3 + blt _020B10D4 + bx lr + arm_func_end FUN_020B10CC + + ; _end + arm_func_start FUN_020B10E8 +FUN_020B10E8: ; 0x020B10E8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r10, r0 + ldr r0, [r10, #0x0] + mov r9, r1 + cmp r0, #0x3 + ldr r0, [sp, #0x28] + moveq r7, #0x20 + str r0, [sp, #0x28] + ldrh r0, [r9, #0x0] + movne r7, #0x200 + mov r11, r2 + mov r8, r3 + str r0, [sp, #0x0] + mov r6, #0x0 + cmp r0, #0x0 + bls _020B1210 +_020B112C: + ldr r1, [r9, #0x4] + mov r0, r6, lsl #0x1 + ldrh r2, [r1, r0] + ldr r0, [r10, #0xc] + ldr r1, [r10, #0x8] + mla r5, r7, r2, r11 + mla r4, r7, r6, r0 + bl DC_FlushRange + cmp r8, #0x0 + beq _020B11E0 + cmp r8, #0x1 + beq _020B1168 + cmp r8, #0x2 + beq _020B11A4 + b _020B11F8 +_020B1168: + ldr r0, [r10, #0x4] + cmp r0, #0x0 + beq _020B1190 + bl GX_BeginLoadOBJExtPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + b _020B11F8 +_020B1190: + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadOBJPltt + b _020B11F8 +_020B11A4: + ldr r0, [r10, #0x4] + cmp r0, #0x0 + beq _020B11CC + bl GXS_BeginLoadOBJExtPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + b _020B11F8 +_020B11CC: + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GXS_LoadOBJPltt + b _020B11F8 +_020B11E0: + bl GX_BeginLoadTexPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt +_020B11F8: + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + ldr r0, [sp, #0x0] + cmp r6, r0 + blo _020B112C +_020B1210: + ldr r0, [sp, #0x28] + ldr r2, [r10, #0x0] + mov r1, r0 + str r2, [r1, #0x0] + ldr r4, [r10, #0x4] + mov r3, r0 + mov r1, r8 + mov r2, r11 + str r4, [r3, #0x4] + bl FUN_020B19D0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B10E8 + + ; _end + arm_func_start FUN_020B1240 +FUN_020B1240: ; 0x020B1240 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + ldr r5, [r9, #0xc] + ldr r4, [r9, #0x8] + mov r8, r1 + mov r7, r2 + mov r0, r5 + mov r1, r4 + mov r6, r3 + bl DC_FlushRange + cmp r7, #0x0 + beq _020B1300 + cmp r7, #0x1 + beq _020B1288 + cmp r7, #0x2 + beq _020B12C4 + b _020B1318 +_020B1288: + ldr r0, [r9, #0x4] + cmp r0, #0x0 + beq _020B12B0 + bl GX_BeginLoadOBJExtPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + b _020B1318 +_020B12B0: + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadOBJPltt + b _020B1318 +_020B12C4: + ldr r0, [r9, #0x4] + cmp r0, #0x0 + beq _020B12EC + bl GXS_BeginLoadOBJExtPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + b _020B1318 +_020B12EC: + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GXS_LoadOBJPltt + b _020B1318 +_020B1300: + bl GX_BeginLoadTexPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt +_020B1318: + ldr r1, [r9, #0x0] + mov r0, r6 + str r1, [r6, #0x0] + ldr r3, [r9, #0x4] + mov r1, r7 + mov r2, r8 + str r3, [r6, #0x4] + bl FUN_020B19D0 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + arm_func_end FUN_020B1240 + + ; NNS_G2dLoadImageVramTransfer + arm_func_start FUN_020B1340 +FUN_020B1340: ; 0x020B1340 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + mov r5, r2 + mov r4, r3 + bl DC_FlushRange + cmp r5, #0x0 + ldr r0, [r7, #0x8] + beq _020B13B8 + cmp r5, #0x1 + beq _020B1384 + cmp r5, #0x2 + beq _020B13A0 + b _020B13B8 +_020B1384: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B1520 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B13B8 +_020B13A0: + ldr r3, _020B1524 ; =0x04001000 + ldr r1, _020B1520 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B13B8: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B14D8 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1408 + cmp r0, #0x10 + bge _020B1434 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B1444 + ; Jump table + b _020B1444 ; case 0 + b _020B1414 ; case 1 + b _020B141C ; case 2 + b _020B1444 ; case 3 + b _020B1424 ; case 4 + b _020B1444 ; case 5 + b _020B1444 ; case 6 + b _020B1444 ; case 7 + b _020B142C ; case 8 +_020B1408: + cmp r0, #0x20 + beq _020B143C + b _020B1444 +_020B1414: + mov r0, #0x0 + b _020B1448 +_020B141C: + mov r0, #0x1 + b _020B1448 +_020B1424: + mov r0, #0x2 + b _020B1448 +_020B142C: + mov r0, #0x3 + b _020B1448 +_020B1434: + mov r0, #0x4 + b _020B1448 +_020B143C: + mov r0, #0x5 + b _020B1448 +_020B1444: + mov r0, #0x0 +_020B1448: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B1490 + cmp r0, #0x10 + bge _020B14BC + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B14CC + ; Jump table + b _020B14CC ; case 0 + b _020B149C ; case 1 + b _020B14A4 ; case 2 + b _020B14CC ; case 3 + b _020B14AC ; case 4 + b _020B14CC ; case 5 + b _020B14CC ; case 6 + b _020B14CC ; case 7 + b _020B14B4 ; case 8 +_020B1490: + cmp r0, #0x20 + beq _020B14C4 + b _020B14CC +_020B149C: + mov r0, #0x0 + b _020B14D0 +_020B14A4: + mov r0, #0x1 + b _020B14D0 +_020B14AC: + mov r0, #0x2 + b _020B14D0 +_020B14B4: + mov r0, #0x3 + b _020B14D0 +_020B14BC: + mov r0, #0x4 + b _020B14D0 +_020B14C4: + mov r0, #0x5 + b _020B14D0 +_020B14CC: + mov r0, #0x0 +_020B14D0: + str r0, [r4, #0x10] + b _020B14E8 +_020B14D8: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B14E8: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl FUN_020B1A1C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B1520: .word 0xFFCFFFEF +_020B1524: .word 0x04001000 + arm_func_end FUN_020B1340 + + ; NNS_G2dLoadImage2DMapping + arm_func_start FUN_020B1528 +FUN_020B1528: ; 0x020B1528 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + movs r5, r2 + mov r6, r1 + mov r4, r3 + ldr r0, [r7, #0x8] + beq _020B1590 + cmp r5, #0x1 + beq _020B155C + cmp r5, #0x2 + beq _020B1578 + b _020B1590 +_020B155C: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B1760 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B1590 +_020B1578: + ldr r3, _020B1764 ; =0x04001000 + ldr r1, _020B1760 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B1590: + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + bl DC_FlushRange + cmp r5, #0x0 + beq _020B15B8 + cmp r5, #0x1 + beq _020B15D4 + cmp r5, #0x2 + beq _020B15E8 + b _020B15F8 +_020B15B8: + bl GX_BeginLoadTex + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadTex + bl GX_EndLoadTex + b _020B15F8 +_020B15D4: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadOBJ + b _020B15F8 +_020B15E8: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GXS_LoadOBJ +_020B15F8: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B1718 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1648 + cmp r0, #0x10 + bge _020B1674 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B1684 + ; Jump table + b _020B1684 ; case 0 + b _020B1654 ; case 1 + b _020B165C ; case 2 + b _020B1684 ; case 3 + b _020B1664 ; case 4 + b _020B1684 ; case 5 + b _020B1684 ; case 6 + b _020B1684 ; case 7 + b _020B166C ; case 8 +_020B1648: + cmp r0, #0x20 + beq _020B167C + b _020B1684 +_020B1654: + mov r0, #0x0 + b _020B1688 +_020B165C: + mov r0, #0x1 + b _020B1688 +_020B1664: + mov r0, #0x2 + b _020B1688 +_020B166C: + mov r0, #0x3 + b _020B1688 +_020B1674: + mov r0, #0x4 + b _020B1688 +_020B167C: + mov r0, #0x5 + b _020B1688 +_020B1684: + mov r0, #0x0 +_020B1688: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B16D0 + cmp r0, #0x10 + bge _020B16FC + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B170C + ; Jump table + b _020B170C ; case 0 + b _020B16DC ; case 1 + b _020B16E4 ; case 2 + b _020B170C ; case 3 + b _020B16EC ; case 4 + b _020B170C ; case 5 + b _020B170C ; case 6 + b _020B170C ; case 7 + b _020B16F4 ; case 8 +_020B16D0: + cmp r0, #0x20 + beq _020B1704 + b _020B170C +_020B16DC: + mov r0, #0x0 + b _020B1710 +_020B16E4: + mov r0, #0x1 + b _020B1710 +_020B16EC: + mov r0, #0x2 + b _020B1710 +_020B16F4: + mov r0, #0x3 + b _020B1710 +_020B16FC: + mov r0, #0x4 + b _020B1710 +_020B1704: + mov r0, #0x5 + b _020B1710 +_020B170C: + mov r0, #0x0 +_020B1710: + str r0, [r4, #0x10] + b _020B1728 +_020B1718: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B1728: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl FUN_020B1A1C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B1760: .word 0xFFCFFFEF +_020B1764: .word 0x04001000 + arm_func_end FUN_020B1528 + + ; NNS_G2dLoadImage1DMapping + arm_func_start FUN_020B1768 +FUN_020B1768: ; 0x020B1768 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + movs r5, r2 + mov r6, r1 + mov r4, r3 + ldr r0, [r7, #0x8] + beq _020B17D0 + cmp r5, #0x1 + beq _020B179C + cmp r5, #0x2 + beq _020B17B8 + b _020B17D0 +_020B179C: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B19A0 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B17D0 +_020B17B8: + ldr r3, _020B19A4 ; =0x04001000 + ldr r1, _020B19A0 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B17D0: + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + bl DC_FlushRange + cmp r5, #0x0 + beq _020B17F8 + cmp r5, #0x1 + beq _020B1814 + cmp r5, #0x2 + beq _020B1828 + b _020B1838 +_020B17F8: + bl GX_BeginLoadTex + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadTex + bl GX_EndLoadTex + b _020B1838 +_020B1814: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadOBJ + b _020B1838 +_020B1828: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GXS_LoadOBJ +_020B1838: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B1958 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1888 + cmp r0, #0x10 + bge _020B18B4 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B18C4 + ; Jump table + b _020B18C4 ; case 0 + b _020B1894 ; case 1 + b _020B189C ; case 2 + b _020B18C4 ; case 3 + b _020B18A4 ; case 4 + b _020B18C4 ; case 5 + b _020B18C4 ; case 6 + b _020B18C4 ; case 7 + b _020B18AC ; case 8 +_020B1888: + cmp r0, #0x20 + beq _020B18BC + b _020B18C4 +_020B1894: + mov r0, #0x0 + b _020B18C8 +_020B189C: + mov r0, #0x1 + b _020B18C8 +_020B18A4: + mov r0, #0x2 + b _020B18C8 +_020B18AC: + mov r0, #0x3 + b _020B18C8 +_020B18B4: + mov r0, #0x4 + b _020B18C8 +_020B18BC: + mov r0, #0x5 + b _020B18C8 +_020B18C4: + mov r0, #0x0 +_020B18C8: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B1910 + cmp r0, #0x10 + bge _020B193C + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B194C + ; Jump table + b _020B194C ; case 0 + b _020B191C ; case 1 + b _020B1924 ; case 2 + b _020B194C ; case 3 + b _020B192C ; case 4 + b _020B194C ; case 5 + b _020B194C ; case 6 + b _020B194C ; case 7 + b _020B1934 ; case 8 +_020B1910: + cmp r0, #0x20 + beq _020B1944 + b _020B194C +_020B191C: + mov r0, #0x0 + b _020B1950 +_020B1924: + mov r0, #0x1 + b _020B1950 +_020B192C: + mov r0, #0x2 + b _020B1950 +_020B1934: + mov r0, #0x3 + b _020B1950 +_020B193C: + mov r0, #0x4 + b _020B1950 +_020B1944: + mov r0, #0x5 + b _020B1950 +_020B194C: + mov r0, #0x0 +_020B1950: + str r0, [r4, #0x10] + b _020B1968 +_020B1958: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B1968: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl FUN_020B1A1C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B19A0: .word 0xFFCFFFEF +_020B19A4: .word 0x04001000 + arm_func_end FUN_020B1768 + + ; _end + arm_func_start FUN_020B19A8 +FUN_020B19A8: ; 0x020B19A8 + add r0, r0, r1, lsl #0x2 + ldr r1, [r0, #0x8] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + arm_func_end FUN_020B19A8 + + ; _end + arm_func_start FUN_020B19C4 +FUN_020B19C4: ; 0x020B19C4 + add r0, r0, r1, lsl #0x2 + ldr r0, [r0, #0x8] + bx lr + arm_func_end FUN_020B19C4 + + ; _end + arm_func_start FUN_020B19D0 +FUN_020B19D0: ; 0x020B19D0 + add r0, r0, r1, lsl #0x2 + str r2, [r0, #0x8] + bx lr + arm_func_end FUN_020B19D0 + + ; _end + arm_func_start FUN_020B19DC +FUN_020B19DC: ; 0x020B19DC + mov r3, #0x0 + mvn r2, #0x0 +_020B19E4: + add r1, r0, r3, lsl #0x2 + add r3, r3, #0x1 + str r2, [r1, #0x8] + cmp r3, #0x3 + blt _020B19E4 + bx lr + arm_func_end FUN_020B19DC + + ; _end + arm_func_start FUN_020B19FC +FUN_020B19FC: ; 0x020B19FC + ldr r1, [r0, r1, lsl #0x2] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + arm_func_end FUN_020B19FC + + ; _end + arm_func_start FUN_020B1A14 +FUN_020B1A14: ; 0x020B1A14 + ldr r0, [r0, r1, lsl #0x2] + bx lr + arm_func_end FUN_020B1A14 + + ; _end + arm_func_start FUN_020B1A1C +FUN_020B1A1C: ; 0x020B1A1C + str r2, [r0, r1, lsl #0x2] + bx lr + arm_func_end FUN_020B1A1C + + ; _end + arm_func_start FUN_020B1A24 +FUN_020B1A24: ; 0x020B1A24 + mov r2, #0x0 + mvn r1, #0x0 +_020B1A2C: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x3 + blt _020B1A2C + bx lr + arm_func_end FUN_020B1A24 + diff --git a/arm9/asm/NNS_G2D_g2d_load.s b/arm9/asm/NNS_G2D_g2d_load.s new file mode 100644 index 00000000..ea06ed9c --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_load.s @@ -0,0 +1,58 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020B01B0 +FUN_020B01B0: ; 0x020B01B0 + ldr r1, [r0, #0x4] + mov r12, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldrh r1, [r0, #0x0] + cmp r1, #0x0 + bxls lr +_020B01CC: + ldr r3, [r0, #0x4] + add r1, r12, #0x1 + ldr r2, [r3, r12, lsl #0x2] + mov r1, r1, lsl #0x10 + add r2, r0, r2 + str r2, [r3, r12, lsl #0x2] + ldrh r2, [r0, #0x0] + mov r12, r1, lsr #0x10 + cmp r12, r2 + blo _020B01CC + bx lr + arm_func_end FUN_020B01B0 + + ; _end + arm_func_start FUN_020B01F8 +FUN_020B01F8: ; 0x020B01F8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r2, [r0, #0xc] + ldrh r12, [r0, #0xe] + mov lr, #0x0 + add r0, r0, r2 + cmp r12, #0x0 + bls _020B0244 +_020B0218: + ldr r2, [r0, #0x0] + cmp r2, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + add r2, lr, #0x1 + mov r2, r2, lsl #0x10 + ldr r3, [r0, #0x4] + mov lr, r2, lsr #0x10 + cmp lr, r12 + add r0, r0, r3 + blo _020B0218 +_020B0244: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end FUN_020B01F8 + diff --git a/arm9/asm/NNS_G2D_g2d_multicellan.s b/arm9/asm/NNS_G2D_g2d_multicellan.s new file mode 100644 index 00000000..c6aaf3e6 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_multicellan.s @@ -0,0 +1,498 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020B20C8 +FUN_020B20C8: ; 0x020B20C8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r6, #0x0 + str r6, [r0, #0x38] + ldr r7, [sp, #0x30] + str r6, [r0, #0x30] + mov r10, r1 + str r7, [r0, #0x34] + str r0, [sp, #0x0] + movs r8, r3 + mov r9, r2 + str r10, [r0, #0x3c] + ldr r11, [sp, #0x34] + beq _020B215C + mov r0, #0x1 + str r6, [sp, #0x8] + str r0, [sp, #0x4] +_020B210C: + mov r0, #0x28 + mul r4, r6, r0 + ldr r1, [sp, #0x4] + add r0, r10, r4 + bl FUN_020B1AD4 + mov r0, #0x54 + mla r5, r6, r0, r9 + ldr r1, [sp, #0x8] + mov r0, r7 + str r5, [r10, r4] + bl FUN_020AFC04 + mov r1, r0 + mov r0, r5 + mov r2, r11 + bl FUN_020B1F80 + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r8 + blo _020B210C +_020B215C: + ldr r0, [sp, #0x0] + bl FUN_020B04C0 + ldr r0, [sp, #0x0] + ldr r3, [sp, #0x38] + ldr r2, [sp, #0x0] + add r0, r0, #0x44 + mov r1, #0x1 + str r3, [r2, #0x40] + bl FUN_020B1A68 + ldr r0, [sp, #0x0] + mov r1, #0x0 + strh r1, [r0, #0x2c] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B20C8 + + ; _end + arm_func_start FUN_020B2194 +FUN_020B2194: ; 0x020B2194 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl FUN_020B0518 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + mov r0, r7 + bl FUN_020B06E0 + mov r4, r0 + ldrh r1, [r4, #0x0] + ldr r0, [r7, #0x40] + bl FUN_020AFF34 + ldr r1, [r7, #0x18] + mov r6, r0 + ldr r1, [r1, #0x4] + add r0, r7, #0x44 + and r5, r1, #0xff + mov r1, #0x1 + bl FUN_020B1A68 + cmp r5, #0x0 + beq _020B2234 + cmp r5, #0x2 + bne _020B2208 + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r7, #0x44 + bl FUN_020B1AB4 + b _020B2234 +_020B2208: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r7, #0x44 + bl FUN_020B1A78 + ldrh r1, [r4, #0x2] + add r0, r7, #0x44 + bl FUN_020B1A98 + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r7, #0x44 + bl FUN_020B1AB4 +_020B2234: + ldrh r2, [r7, #0x2c] + mov r1, r6 + add r0, r7, #0x30 + bl FUN_020B24E0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B2194 + + ; _end + arm_func_start FUN_020B224C +FUN_020B224C: ; 0x020B224C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r2, [r4, #0x0] + mov r6, r1 + ldrh r5, [r2, #0x4] + bl FUN_020B0534 + cmp r0, #0x0 + beq _020B2318 + ldrh r1, [r4, #0x2c] + mov r0, r4 + add r1, r1, r5 + strh r1, [r4, #0x2c] + bl FUN_020B06E0 + mov r5, r0 + ldrh r1, [r5, #0x0] + ldr r0, [r4, #0x40] + bl FUN_020AFF34 + ldr r1, [r4, #0x18] + mov r7, r0 + ldr r1, [r1, #0x4] + add r0, r4, #0x44 + and r6, r1, #0xff + mov r1, #0x1 + bl FUN_020B1A68 + cmp r6, #0x0 + beq _020B2300 + cmp r6, #0x2 + bne _020B22D4 + ldrsh r1, [r5, #0x4] + ldrsh r2, [r5, #0x6] + add r0, r4, #0x44 + bl FUN_020B1AB4 + b _020B2300 +_020B22D4: + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x8] + add r0, r4, #0x44 + bl FUN_020B1A78 + ldrh r1, [r5, #0x2] + add r0, r4, #0x44 + bl FUN_020B1A98 + ldrsh r1, [r5, #0xc] + ldrsh r2, [r5, #0xe] + add r0, r4, #0x44 + bl FUN_020B1AB4 +_020B2300: + ldrh r2, [r4, #0x2c] + mov r1, r7 + add r0, r4, #0x30 + bl FUN_020B24E0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B2318: + mov r1, r6 + add r0, r4, #0x30 + bl FUN_020B232C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B224C + + ; _end + arm_func_start FUN_020B232C +FUN_020B232C: ; 0x020B232C + stmdb sp!, {r4-r8,lr} + mov r7, r0 + ldr r0, [r7, #0x8] + mov r6, r1 + cmp r0, #0x1 + bne _020B238C + ldr r0, [r7, #0x0] + ldr r4, [r7, #0xc] + ldrh r0, [r0, #0x2] + mov r5, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r8,pc} + mov r8, #0x58 +_020B2360: + mla r0, r5, r8, r4 + mov r1, r6 + bl FUN_020B1EC4 + ldr r1, [r7, #0x0] + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x2] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B2360 + ldmia sp!, {r4-r8,pc} +_020B238C: + ldr r0, [r7, #0x0] + ldr r4, [r7, #0xc] + ldrh r0, [r0, #0x0] + mov r5, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r8,pc} + mov r8, #0x28 +_020B23A8: + mul r0, r5, r8 + ldr r0, [r4, r0] + mov r1, r6 + bl FUN_020B1EC4 + ldr r1, [r7, #0x0] + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B23A8 + ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020B232C + + ; _end + arm_func_start FUN_020B23D8 +FUN_020B23D8: ; 0x020B23D8 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldrh r0, [r5, #0x0] + mov r4, #0x0 + mov r6, r4 + cmp r0, #0x0 + bls _020B2424 +_020B23F4: + mov r0, r5 + mov r1, r6 + bl FUN_020AFF34 + ldrh r0, [r0, #0x0] + ldrh r1, [r5, #0x0] + cmp r0, r4 + movhi r4, r0 + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r1 + blo _020B23F4 +_020B2424: + mov r0, r4 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020B23D8 + + ; _end + arm_func_start FUN_020B242C +FUN_020B242C: ; 0x020B242C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl FUN_020B0438 + mov r1, #0x0 + mov r0, r7 + strh r1, [r7, #0x2c] + bl FUN_020B06E0 + mov r4, r0 + ldrh r1, [r4, #0x0] + ldr r0, [r7, #0x40] + bl FUN_020AFF34 + ldr r1, [r7, #0x18] + mov r6, r0 + ldr r1, [r1, #0x4] + add r0, r7, #0x44 + and r5, r1, #0xff + mov r1, #0x1 + bl FUN_020B1A68 + cmp r5, #0x0 + beq _020B24C8 + cmp r5, #0x2 + bne _020B249C + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r7, #0x44 + bl FUN_020B1AB4 + b _020B24C8 +_020B249C: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r7, #0x44 + bl FUN_020B1A78 + ldrh r1, [r4, #0x2] + add r0, r7, #0x44 + bl FUN_020B1A98 + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r7, #0x44 + bl FUN_020B1AB4 +_020B24C8: + ldrh r2, [r7, #0x2c] + mov r1, r6 + add r0, r7, #0x30 + bl FUN_020B24E0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B242C + + ; _end + arm_func_start FUN_020B24E0 +FUN_020B24E0: ; 0x020B24E0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r1 + str r0, [sp, #0x0] + str r10, [r0, #0x0] + ldr r0, [r0, #0x8] + mov r9, r2 + cmp r0, #0x1 + bne _020B2654 + ldrh r1, [r10, #0x2] + ldr r0, [sp, #0x0] + mov r4, #0x0 + ldr r8, [r0, #0xc] + cmp r1, #0x0 + bls _020B2544 + mov r3, r4 + mov r0, #0x58 +_020B2524: + mla r1, r4, r0, r8 + str r3, [r1, #0x54] + add r1, r4, #0x1 + mov r1, r1, lsl #0x10 + ldrh r2, [r10, #0x2] + mov r4, r1, lsr #0x10 + cmp r4, r2 + blo _020B2524 +_020B2544: + ldrh r0, [r10, #0x0] + mov r5, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} + str r5, [sp, #0x4] + mov r11, #0x1 +_020B2560: + ldr r0, [r10, #0x4] + mov r1, #0x58 + add r7, r0, r5, lsl #0x3 + ldrh r0, [r7, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x10 + mla r6, r0, r1, r8 + ldr r0, [r6, #0x54] + cmp r0, #0x0 + bne _020B2634 + ldr r0, [sp, #0x0] + ldrh r1, [r7, #0x0] + ldr r0, [r0, #0x4] + bl FUN_020AFC04 + mov r4, r0 + mov r0, r6 + mov r1, r4 + bl FUN_020B1EE4 + str r11, [r6, #0x8] + ldrh r0, [r7, #0x6] + and r0, r0, #0xf + cmp r0, #0x1 + bne _020B2630 + ldrh r1, [r4, #0x0] + ldr r7, [sp, #0x4] + mov r3, r7 + cmp r1, #0x0 + bls _020B25F0 + ldr r2, [r4, #0xc] +_020B25D8: + add r0, r2, r3, lsl #0x3 + ldrh r0, [r0, #0x4] + add r3, r3, #0x1 + cmp r3, r1 + add r7, r7, r0 + blo _020B25D8 +_020B25F0: + mov r0, r6 + bl FUN_020B0408 + cmp r0, #0x0 + beq _020B261C + mov r0, r9 + mov r1, r7 + bl _u32_div_f + mov r0, r6 + mov r1, r1, lsl #0xc + bl FUN_020B1EC4 + b _020B2630 +_020B261C: + cmp r9, r7 + movcc r7, r9 + mov r0, r6 + mov r1, r7, lsl #0xc + bl FUN_020B1EC4 +_020B2630: + str r11, [r6, #0x54] +_020B2634: + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r10, #0x0] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B2560 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} +_020B2654: + ldrh r1, [r10, #0x0] + ldr r0, [sp, #0x0] + mov r4, #0x0 + cmp r1, #0x0 + ldr r11, [r0, #0xc] + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} + mov r0, #0x1 + str r4, [sp, #0xc] + str r0, [sp, #0x8] +_020B267C: + mov r0, #0x28 + mul r2, r4, r0 + ldr r3, [r10, #0x4] + mov r0, r4, lsl #0x3 + ldrh r1, [r3, r0] + ldr r0, [sp, #0x0] + ldr r6, [r11, r2] + ldr r0, [r0, #0x4] + add r7, r3, r4, lsl #0x3 + bl FUN_020AFC04 + mov r5, r0 + mov r0, r6 + mov r1, r5 + bl FUN_020B1EE4 + ldr r0, [sp, #0x8] + str r0, [r6, #0x8] + ldrh r0, [r7, #0x6] + and r0, r0, #0xf + cmp r0, #0x1 + bne _020B2740 + ldrh r1, [r5, #0x0] + ldr r8, [sp, #0xc] + mov r0, r8 + cmp r1, #0x0 + bls _020B2700 + ldr r3, [r5, #0xc] +_020B26E4: + add r1, r3, r0, lsl #0x3 + ldrh r2, [r1, #0x4] + add r0, r0, #0x1 + ldrh r1, [r5, #0x0] + add r8, r8, r2 + cmp r0, r1 + blo _020B26E4 +_020B2700: + mov r0, r6 + bl FUN_020B0408 + cmp r0, #0x0 + beq _020B272C + mov r0, r9 + mov r1, r8 + bl _u32_div_f + mov r0, r6 + mov r1, r1, lsl #0xc + bl FUN_020B1EC4 + b _020B2740 +_020B272C: + cmp r9, r8 + movcc r8, r9 + mov r0, r6 + mov r1, r8, lsl #0xc + bl FUN_020B1EC4 +_020B2740: + mov r0, #0x28 + mla r3, r4, r0, r11 + ldr r0, [sp, #0x8] + str r0, [r3, #0x8] + ldrsh r1, [r7, #0x2] + ldrsh r2, [r7, #0x4] + add r0, r3, #0xc + bl FUN_020B1AB4 + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r10, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B267C + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B24E0 + diff --git a/arm9/asm/NNS_G2D_g2d_nan_load.s b/arm9/asm/NNS_G2D_g2d_nan_load.s new file mode 100644 index 00000000..4137e8ae --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_nan_load.s @@ -0,0 +1,161 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020AFC04 +FUN_020AFC04: ; 0x020AFC04 + ldrh r2, [r0, #0x0] + cmp r2, r1 + ldrhi r0, [r0, #0x4] + addhi r0, r0, r1, lsl #0x4 + movls r0, #0x0 + bx lr + arm_func_end FUN_020AFC04 + + ; _end + arm_func_start FUN_020AFC1C +FUN_020AFC1C: ; 0x020AFC1C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x4] + mov r6, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r0 + str r1, [r0, #0x8] + ldr r1, [r0, #0xc] + add r1, r1, r0 + str r1, [r0, #0xc] + ldrh r1, [r0, #0x0] + ldr r4, [r0, #0x4] + ldr lr, [r0, #0x8] + cmp r1, #0x0 + ldr r12, [r0, #0xc] + bls _020AFCCC + mov r1, r6 +_020AFC68: + add r2, r4, r6, lsl #0x4 + ldr r5, [r2, #0xc] + mov r3, r6, lsl #0x4 + add r5, lr, r5 + str r5, [r2, #0xc] + ldrh r7, [r4, r3] + mov r5, r1 + cmp r7, #0x0 + bls _020AFCB4 +_020AFC8C: + ldr r9, [r2, #0xc] + add r7, r5, #0x1 + ldr r8, [r9, r5, lsl #0x3] + mov r7, r7, lsl #0x10 + add r8, r12, r8 + str r8, [r9, r5, lsl #0x3] + ldrh r8, [r4, r3] + mov r5, r7, lsr #0x10 + cmp r5, r8 + blo _020AFC8C +_020AFCB4: + add r2, r6, #0x1 + mov r2, r2, lsl #0x10 + ldrh r3, [r0, #0x0] + mov r6, r2, lsr #0x10 + cmp r6, r3 + blo _020AFC68 +_020AFCCC: + ldr r1, [r0, #0x14] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r9,pc} + add r1, r1, r0 + str r1, [r0, #0x14] + ldr r1, [r0, #0x14] + mov r12, #0x0 + add r2, r1, #0x8 + ldr r0, [r2, #0x4] + add r0, r0, r2 + str r0, [r2, #0x4] + ldrh r0, [r1, #0x8] + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r0, r12 + mov r6, r12 +_020AFD14: + ldr r5, [r2, #0x4] + mov r3, r6 + add r1, r5, r0 + ldr r4, [r1, #0x4] + add r4, r4, r2 + str r4, [r1, #0x4] + ldr r4, [r1, #0x8] + add r4, r4, r2 + str r4, [r1, #0x8] + ldrh r4, [r5, r0] + cmp r4, #0x0 + bls _020AFD6C + mov r7, r6 +_020AFD48: + ldr r5, [r1, #0x8] + add r3, r3, #0x1 + ldr r4, [r5, r7] + add r4, r4, r2 + str r4, [r5, r7] + ldrh r4, [r1, #0x0] + add r7, r7, #0x4 + cmp r3, r4 + blo _020AFD48 +_020AFD6C: + ldrh r1, [r2, #0x0] + add r12, r12, #0x1 + add r0, r0, #0xc + cmp r12, r1 + blo _020AFD14 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + arm_func_end FUN_020AFC1C + + ; NNS_G2dGetUnpackedMCAnimBank + arm_func_start thunk_FUN_020afda0 +thunk_FUN_020afda0: ; 0x020AFD88 + ldr ip, _020AFD90 ; =FUN_020AFDA0 + bx r12 + .balign 4 +_020AFD90: .word FUN_020AFDA0 + arm_func_end thunk_FUN_020afda0 + + ; NNS_G2dGetUnpackedAnimBank + arm_func_start thunk_FUN_020afda0_2 +thunk_FUN_020afda0_2: ; 0x020AFD94 + ldr ip, _020AFD9C ; =FUN_020AFDA0 + bx r12 + .balign 4 +_020AFD9C: .word FUN_020AFDA0 + arm_func_end thunk_FUN_020afda0_2 + + ; GetUnpackedAnimBankImpl_ + arm_func_start FUN_020AFDA0 +FUN_020AFDA0: ; 0x020AFDA0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020AFDE4 ; =0x41424E4B + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020AFC1C + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AFDE4: .word 0x41424E4B + arm_func_end FUN_020AFDA0 + diff --git a/arm9/asm/NNS_G2D_g2d_ncg_load.s b/arm9/asm/NNS_G2D_g2d_ncg_load.s new file mode 100644 index 00000000..78956dde --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_ncg_load.s @@ -0,0 +1,71 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020B0020 +FUN_020B0020: ; 0x020B0020 + ldr r1, [r0, #0x14] + add r1, r1, r0 + str r1, [r0, #0x14] + bx lr + arm_func_end FUN_020B0020 + + ; NNS_G2dGetUnpackedBGCharacterData + arm_func_start FUN_020B0030 +FUN_020B0030: ; 0x020B0030 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B0074 ; =0x43484152 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020B0020 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0074: .word 0x43484152 + arm_func_end FUN_020B0030 + + ; _end + arm_func_start FUN_020B0078 +FUN_020B0078: ; 0x020B0078 + ldr r1, [r0, #0x14] + add r1, r1, r0 + str r1, [r0, #0x14] + bx lr + arm_func_end FUN_020B0078 + + ; NNS_G2dGetUnpackedCharacterData + arm_func_start FUN_020B0088 +FUN_020B0088: ; 0x020B0088 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B00CC ; =0x43484152 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020B0078 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B00CC: .word 0x43484152 + arm_func_end FUN_020B0088 + diff --git a/arm9/asm/NNS_G2D_g2d_ncl_load.s b/arm9/asm/NNS_G2D_g2d_ncl_load.s new file mode 100644 index 00000000..ecaa454b --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_ncl_load.s @@ -0,0 +1,71 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020B00D0 +FUN_020B00D0: ; 0x020B00D0 + ldr r1, [r0, #0xc] + add r1, r1, r0 + str r1, [r0, #0xc] + bx lr + arm_func_end FUN_020B00D0 + + ; _end + arm_func_start FUN_020B00E0 +FUN_020B00E0: ; 0x020B00E0 + ldr r1, [r0, #0x4] + add r1, r1, r0 + str r1, [r0, #0x4] + bx lr + arm_func_end FUN_020B00E0 + + ; NNS_G2dGetUnpackedPaletteCompressInfo + arm_func_start FUN_020B00F0 +FUN_020B00F0: ; 0x020B00F0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B0134 ; =0x50434D50 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020B00E0 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0134: .word 0x50434D50 + arm_func_end FUN_020B00F0 + + ; NNS_G2dGetUnpackedPaletteData + arm_func_start FUN_020B0138 +FUN_020B0138: ; 0x020B0138 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B017C ; =0x504C5454 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020B00D0 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B017C: .word 0x504C5454 + arm_func_end FUN_020B0138 + diff --git a/arm9/asm/NNS_G2D_g2d_nft_load.s b/arm9/asm/NNS_G2D_g2d_nft_load.s new file mode 100644 index 00000000..1bd9a1bf --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_nft_load.s @@ -0,0 +1,183 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; NNSi_G2dUnpackNFT + arm_func_start FUN_020B7468 +FUN_020B7468: ; 0x020B7468 + stmdb sp!, {r4-r6,lr} + ldrh r2, [r0, #0xc] + ldrh r3, [r0, #0xe] + mov r1, #0x0 + add r2, r0, r2 + cmp r3, #0x0 + ldmleia sp!, {r4-r6,pc} + ldr r3, _020B7548 ; =0x46494E46 + ldr ip, _020B754C ; =0x43574448 + ldr r4, _020B7550 ; =0x434D4150 + ldr lr, _020B7554 ; =0x43474C50 +_020B7494: + ldr r5, [r2, #0x0] + cmp r5, r4 + bhi _020B74B0 + cmp r5, r4 + bhs _020B7518 + cmp r5, lr + b _020B752C +_020B74B0: + cmp r5, r12 + bhi _020B74C4 + cmp r5, r12 + beq _020B7500 + b _020B752C +_020B74C4: + cmp r5, r3 + bne _020B752C + add r6, r2, #0x8 + ldr r5, [r6, #0x8] + add r5, r5, r0 + str r5, [r6, #0x8] + ldr r5, [r6, #0xc] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0xc] + ldr r5, [r6, #0x10] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x10] + b _020B752C +_020B7500: + add r6, r2, #0x8 + ldr r5, [r6, #0x4] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x4] + b _020B752C +_020B7518: + add r6, r2, #0x8 + ldr r5, [r6, #0x8] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x8] +_020B752C: + ldrh r5, [r0, #0xe] + ldr r6, [r2, #0x4] + add r1, r1, #0x1 + cmp r1, r5 + add r2, r2, r6 + blt _020B7494 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B7548: .word 0x46494E46 +_020B754C: .word 0x43574448 +_020B7550: .word 0x434D4150 +_020B7554: .word 0x43474C50 + arm_func_end FUN_020B7468 + + ; NNSi_G2dGetUnpackedFont + arm_func_start FUN_020B7558 +FUN_020B7558: ; 0x020B7558 + stmdb sp!, {r4-r6,lr} + movs r6, r0 + mov r5, r1 + beq _020B75C8 + cmp r6, #0x0 + beq _020B7584 + ldr r1, [r6, #0x0] + ldr r0, _020B76A8 ; =0x4E465452 + cmp r1, r0 + moveq r0, #0x1 + beq _020B7588 +_020B7584: + mov r0, #0x0 +_020B7588: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B75CC + cmp r6, #0x0 + beq _020B75B4 + ldrh r0, [r6, #0x6] + cmp r0, #0x100 + movcs r0, #0x1 + bhs _020B75B8 +_020B75B4: + mov r0, #0x0 +_020B75B8: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + b _020B75CC +_020B75C8: + mov r0, #0x0 +_020B75CC: + cmp r0, #0x0 + movne r4, #0x0 + bne _020B7654 + cmp r6, #0x0 + beq _020B7640 + cmp r6, #0x0 + beq _020B75FC + ldr r1, [r6, #0x0] + ldr r0, _020B76A8 ; =0x4E465452 + cmp r1, r0 + moveq r0, #0x1 + beq _020B7600 +_020B75FC: + mov r0, #0x0 +_020B7600: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B7644 + cmp r6, #0x0 + beq _020B762C + ldrh r0, [r6, #0x6] + cmp r0, #0x1 + movcs r0, #0x1 + bhs _020B7630 +_020B762C: + mov r0, #0x0 +_020B7630: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + b _020B7644 +_020B7640: + mov r0, #0x0 +_020B7644: + cmp r0, #0x0 + movne r4, #0x1 + bne _020B7654 + bl OS_Terminate +_020B7654: + mov r0, r6 + bl FUN_020B7468 + ldr r1, _020B76AC ; =0x46494E46 + mov r0, r6 + bl FUN_020B01F8 + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r6,pc} + add r0, r0, #0x8 + str r0, [r5, #0x0] + cmp r4, #0x0 + beq _020B76A0 + ldr r2, [r5, #0x0] + mov r1, #0x0 + ldrsb r0, [r2, #0x6] + strb r0, [r2, #0x7] + ldr r0, [r5, #0x0] + strb r1, [r0, #0x6] +_020B76A0: + add r0, r4, #0x1 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B76A8: .word 0x4E465452 +_020B76AC: .word 0x46494E46 + arm_func_end FUN_020B7558 + diff --git a/arm9/asm/NNS_G2D_g2d_nmc_load.s b/arm9/asm/NNS_G2D_g2d_nmc_load.s new file mode 100644 index 00000000..eb13c705 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_nmc_load.s @@ -0,0 +1,88 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020AFF34 +FUN_020AFF34: ; 0x020AFF34 + ldrh r2, [r0, #0x0] + cmp r1, r2 + ldrcc r0, [r0, #0x4] + addcc r0, r0, r1, lsl #0x3 + movcs r0, #0x0 + bx lr + arm_func_end FUN_020AFF34 + + ; _end + arm_func_start FUN_020AFF4C +FUN_020AFF4C: ; 0x020AFF4C + stmdb sp!, {r4,lr} + ldr r1, [r0, #0x4] + mov r4, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r0 + str r1, [r0, #0x8] + ldrh r1, [r0, #0x0] + ldr lr, [r0, #0x4] + cmp r1, #0x0 + bls _020AFFA8 +_020AFF7C: + add r3, lr, r4, lsl #0x3 + ldr r12, [r0, #0x8] + ldr r2, [r3, #0x4] + add r1, r4, #0x1 + add r2, r12, r2 + str r2, [r3, #0x4] + mov r1, r1, lsl #0x10 + ldrh r2, [r0, #0x0] + mov r4, r1, lsr #0x10 + cmp r4, r2 + blo _020AFF7C +_020AFFA8: + ldr r1, [r0, #0x10] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} + add r1, r1, r0 + str r1, [r0, #0x10] + ldr r0, [r0, #0x10] + bl FUN_020AFFC8 + ldmia sp!, {r4,pc} + arm_func_end FUN_020AFF4C + + ; UnpackExtendedData_ + arm_func_start FUN_020AFFC8 +FUN_020AFFC8: ; 0x020AFFC8 + ldr ip, _020AFFD4 ; =FUN_020B01B0 + add r0, r0, #0x8 + bx r12 + .balign 4 +_020AFFD4: .word FUN_020B01B0 + arm_func_end FUN_020AFFC8 + + ; NNS_G2dGetUnpackedMultiCellBank + arm_func_start FUN_020AFFD8 +FUN_020AFFD8: ; 0x020AFFD8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B001C ; =0x4D43424B + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020AFF4C + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B001C: .word 0x4D43424B + arm_func_end FUN_020AFFD8 + diff --git a/arm9/asm/NNS_G2D_g2d_nob_load.s b/arm9/asm/NNS_G2D_g2d_nob_load.s new file mode 100644 index 00000000..ddeb473c --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_nob_load.s @@ -0,0 +1,118 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020AFDE8 +FUN_020AFDE8: ; 0x020AFDE8 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r1, [r5, #0x4] + add r1, r1, r5 + str r1, [r5, #0x4] + bl FUN_020AFF10 + ldrh r1, [r5, #0x0] + mov r4, r0 + mov r6, #0x0 + cmp r1, #0x0 + bls _020AFE44 +_020AFE14: + mov r0, r5 + mov r1, r6 + bl FUN_020AFE8C + ldr r2, [r0, #0x4] + add r1, r6, #0x1 + add r2, r2, r4 + str r2, [r0, #0x4] + mov r0, r1, lsl #0x10 + ldrh r1, [r5, #0x0] + mov r6, r0, lsr #0x10 + cmp r6, r1 + blo _020AFE14 +_020AFE44: + ldr r0, [r5, #0xc] + cmp r0, #0x0 + beq _020AFE6C + add r0, r0, r5 + str r0, [r5, #0xc] + ldr r1, [r5, #0xc] + ldr r0, [r1, #0x4] + add r0, r0, r1 + str r0, [r1, #0x4] + str r1, [r5, #0xc] +_020AFE6C: + ldr r0, [r5, #0x14] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + add r0, r0, r5 + str r0, [r5, #0x14] + ldr r0, [r5, #0x14] + bl FUN_020AFF00 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AFDE8 + + ; _end + arm_func_start FUN_020AFE8C +FUN_020AFE8C: ; 0x020AFE8C + ldrh r2, [r0, #0x0] + cmp r1, r2 + movcs r0, #0x0 + bxcs lr + ldrh r2, [r0, #0x2] + ands r2, r2, #0x1 + ldrne r0, [r0, #0x4] + addne r0, r0, r1, lsl #0x4 + ldreq r0, [r0, #0x4] + addeq r0, r0, r1, lsl #0x3 + bx lr + arm_func_end FUN_020AFE8C + + ; NNS_G2dGetUnpackedCellBank + arm_func_start FUN_020AFEB8 +FUN_020AFEB8: ; 0x020AFEB8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020AFEFC ; =0x4345424B + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} + add r0, r4, #0x8 + bl FUN_020AFDE8 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AFEFC: .word 0x4345424B + arm_func_end FUN_020AFEB8 + + ; UnPackExtendedData_ + arm_func_start FUN_020AFF00 +FUN_020AFF00: ; 0x020AFF00 + ldr ip, _020AFF0C ; =FUN_020B01B0 + add r0, r0, #0x8 + bx r12 + .balign 4 +_020AFF0C: .word FUN_020B01B0 + arm_func_end FUN_020AFF00 + + ; _end + arm_func_start FUN_020AFF10 +FUN_020AFF10: ; 0x020AFF10 + ldrh r1, [r0, #0x2] + ands r1, r1, #0x1 + ldrneh r1, [r0, #0x0] + ldrne r0, [r0, #0x4] + addne r0, r0, r1, lsl #0x4 + ldreqh r1, [r0, #0x0] + ldreq r0, [r0, #0x4] + addeq r0, r0, r1, lsl #0x3 + bx lr + arm_func_end FUN_020AFF10 + diff --git a/arm9/asm/NNS_G2D_g2d_node.s b/arm9/asm/NNS_G2D_g2d_node.s new file mode 100644 index 00000000..8e918dda --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_node.s @@ -0,0 +1,20 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; NNSi_G2dInitializeNode + arm_func_start FUN_020B1AD4 +FUN_020B1AD4: ; 0x020B1AD4 + mov r2, #0x0 + str r2, [r0, #0x0] + str r1, [r0, #0x4] + mov r1, #0x1 + str r1, [r0, #0x8] + ldr ip, _020B1AF4 ; =FUN_020B1A68 + add r0, r0, #0xc + bx r12 + .balign 4 +_020B1AF4: .word FUN_020B1A68 + arm_func_end FUN_020B1AD4 + diff --git a/arm9/asm/NNS_G2D_g2d_nsc_load.s b/arm9/asm/NNS_G2D_g2d_nsc_load.s new file mode 100644 index 00000000..47f76264 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_nsc_load.s @@ -0,0 +1,23 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; NNS_G2dGetUnpackedScreenData + arm_func_start FUN_020B0180 +FUN_020B0180: ; 0x020B0180 + stmdb sp!, {r4,lr} + mov r4, r1 + ldr r1, _020B01AC ; =0x5343524E + bl FUN_020B01F8 + cmp r0, #0x0 + addne r0, r0, #0x8 + strne r0, [r4, #0x0] + movne r0, #0x1 + moveq r0, #0x0 + streq r0, [r4, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020B01AC: .word 0x5343524E + arm_func_end FUN_020B0180 + diff --git a/arm9/asm/NNS_G2D_g2d_oam.s b/arm9/asm/NNS_G2D_g2d_oam.s new file mode 100644 index 00000000..9ef72ad0 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_oam.s @@ -0,0 +1,724 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + ; NNSi_objSizeHTbl + .global UNK_020FF894 +UNK_020FF894: ; 0x020FF894 + .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 + .byte 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 + + ; NNSi_objSizeWTbl + .global UNK_020FF8AC +UNK_020FF8AC: ; 0x020FF8AC + .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 + .byte 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 + + ; static const in function + .section .data + + ; funcTbl$8497 + .global UNK_0210655C +UNK_0210655C: ; 0x0210655C + .word FUN_020B1088 + .word FUN_020B1098 + .word 0 + .word 0 + .word 0 + + .section .bss + + ; numRegisterdInstance_ + .global UNK_021CCD9C +UNK_021CCD9C: ; 0x021CCD9C + .space 0x4 + + ; oamCache_ + .global UNK_021CCDA0 +UNK_021CCDA0: ; 0x021CCDA0 + .space 0x100 + + ; oamCache_ + 0x100 + .global UNK_021CCEA0 +UNK_021CCEA0: ; 0x021CCEA0 + .space 0x400 + + ; oamCache_ + 0x500 + .global UNK_021CD2A0 +UNK_021CD2A0: ; 0x021CD2A0 + .space 0x40 + + ; oamCache_ + 0x540 + .global UNK_021CD2E0 +UNK_021CD2E0: ; 0x021CD2E0 + .space 0x100 + + ; oamCache_ + 0x640 + .global UNK_021CD3E0 +UNK_021CD3E0: ; 0x021CD3E0 + .space 0x400 + + ; oamCache_ + 0xA40 + .global UNK_021CD7E0 +UNK_021CD7E0: ; 0x021CD7E0 + .space 0x40 + + ; oamCache_ + 0xA80 + .global UNK_021CD820 +UNK_021CD820: ; 0x021CD820 + .space 0x100 + + ; oamCache_ + 0xB80 + .global UNK_021CD920 +UNK_021CD920: ; 0x021CD920 + .space 0x400 + + ; oamCache_ + 0xF80 + .global UNK_021CDD20 +UNK_021CDD20: ; 0x021CDD20 + .space 0x40 + + .section .text + + ; _end + arm_func_start FUN_020B0830 +FUN_020B0830: ; 0x020B0830 + ldrh r3, [r0, #0x6] + ldrh r2, [r0, #0x8] + mov r12, #0x0 + add r1, r3, #0x1 + cmp r2, r1 + bgt _020B0854 + ldrh r0, [r0, #0x4] + cmp r0, r3 + movls r12, #0x1 +_020B0854: + cmp r12, #0x0 + subne r0, r3, r2 + addne r0, r0, #0x1 + movne r0, r0, lsl #0x10 + movne r0, r0, lsr #0x10 + moveq r0, #0x0 + bx lr + arm_func_end FUN_020B0830 + + ; _end + arm_func_start FUN_020B0870 +FUN_020B0870: ; 0x020B0870 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B09B4 + mov r0, r4 + bl FUN_020B0888 + ldmia sp!, {r4,pc} + arm_func_end FUN_020B0870 + + ; NNS_G2dResetOamManagerBuffer + arm_func_start FUN_020B0888 +FUN_020B0888: ; 0x020B0888 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r0, [r5, #0x14] + cmp r0, #0x0 + beq _020B0944 + ldrh r2, [r5, #0x6] + ldrh r1, [r5, #0x8] + mov r3, #0x0 + add r0, r2, #0x1 + cmp r1, r0 + bgt _020B08C0 + ldrh r0, [r5, #0x4] + cmp r0, r2 + movls r3, #0x1 +_020B08C0: + cmp r3, #0x0 + moveq r4, #0x0 + beq _020B08E0 + ldrh r0, [r5, #0x4] + sub r0, r2, r0 + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0xd +_020B08E0: + ldr r2, [r5, #0x0] + ldr r1, _020B09AC ; =UNK_021CCDA0 + mov r0, #0x540 + mla r1, r2, r0, r1 + ldrh r0, [r5, #0x4] + add r2, r1, #0x100 + mov r1, r4 + add r6, r2, r0, lsl #0x3 + mov r0, r6 + bl DC_InvalidateRange + ldr r0, _020B09B0 ; =GXi_DmaId + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020B0930 + mov r1, r6 + mov r3, r4 + mov r2, #0xc0 + bl MI_DmaFill32 + b _020B0998 +_020B0930: + mov r1, r6 + mov r2, r4 + mov r0, #0xc0 + bl MIi_CpuClear32 + b _020B0998 +_020B0944: + ldr r2, [r5, #0x0] + ldr r1, _020B09AC ; =UNK_021CCDA0 + mov r0, #0x540 + mla r1, r2, r0, r1 + ldrh r2, [r5, #0x4] + ldrh r0, [r5, #0x6] + add r1, r1, #0x100 + add r3, r1, r2, lsl #0x3 + sub r0, r0, r2 + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + movs r2, r0, lsr #0x10 + mov r0, #0x0 + beq _020B0998 + mov r1, #0xc0 +_020B0980: + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, r2 + strh r1, [r3], #0x8 + blo _020B0980 +_020B0998: + ldrh r0, [r5, #0x4] + strh r0, [r5, #0x8] + ldrh r0, [r5, #0xa] + strh r0, [r5, #0xe] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B09AC: .word UNK_021CCDA0 +_020B09B0: .word GXi_DmaId + arm_func_end FUN_020B0888 + + ; NNS_G2dApplyOamManagerToHW + arm_func_start FUN_020B09B4 +FUN_020B09B4: ; 0x020B09B4 + stmdb sp!, {r4-r10,lr} + mov r7, r0 + ldr r0, [r7, #0x14] + cmp r0, #0x0 + beq _020B0A48 + ldr r5, [r7, #0x0] + ldr r1, _020B0BA8 ; =UNK_021CCDA0 + mov r0, #0x540 + mla r1, r5, r0, r1 + ldrh r2, [r7, #0x4] + ldrh r0, [r7, #0x6] + add r1, r1, #0x100 + add r4, r1, r2, lsl #0x3 + sub r0, r0, r2 + add r0, r0, #0x1 + mov r0, r0, lsl #0x13 + mov r6, r0, lsr #0x10 + mov r2, r2, lsl #0x13 + mov r0, r4 + mov r1, r6 + mov r7, r2, lsr #0x10 + bl DC_FlushRange + cmp r5, #0x0 + beq _020B0A20 + cmp r5, #0x1 + beq _020B0A34 + ldmia sp!, {r4-r10,pc} +_020B0A20: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl GX_LoadOAM + ldmia sp!, {r4-r10,pc} +_020B0A34: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl GXS_LoadOAM + ldmia sp!, {r4-r10,pc} +_020B0A48: + ldr r0, [r7, #0x0] + ldr r2, _020B0BA8 ; =UNK_021CCDA0 + mov r1, #0x540 + mla r2, r0, r1, r2 + ldrh r5, [r7, #0x4] + ldrh r1, [r7, #0x6] + ldr r3, _020B0BAC ; =UNK_0210655C + add r4, r2, #0x100 + sub r1, r1, r5 + add r1, r1, #0x1 + mov r1, r1, lsl #0x10 + mov r2, r5, lsl #0x13 + add r6, r4, r5, lsl #0x3 + movs r5, r1, lsr #0x10 + mov r4, r2, lsr #0x10 + ldr r9, [r3, r0, lsl #0x2] + mov r10, #0x0 + beq _020B0AC8 + mov r8, #0x6 +_020B0A94: + mov r0, r6 + mov r1, r4 + mov r2, r8 + blx r9 + add r0, r10, #0x1 + add r2, r4, #0x8 + mov r1, r0, lsl #0x10 + mov r0, r2, lsl #0x10 + mov r10, r1, lsr #0x10 + cmp r10, r5 + mov r4, r0, lsr #0x10 + add r6, r6, #0x8 + blo _020B0A94 +_020B0AC8: + ldrh r2, [r7, #0xc] + ldrh r1, [r7, #0xe] + mov r3, #0x0 + add r0, r2, #0x1 + cmp r1, r0 + bgt _020B0AEC + ldrh r0, [r7, #0xa] + cmp r0, r2 + movls r3, #0x1 +_020B0AEC: + cmp r3, #0x0 + ldmeqia sp!, {r4-r10,pc} + ldr r0, [r7, #0x0] + ldr r2, _020B0BA8 ; =UNK_021CCDA0 + mov r1, #0x540 + mla r2, r0, r1, r2 + ldrh r5, [r7, #0xa] + add r4, r2, #0x100 + ldrh r1, [r7, #0xc] + mov r2, r5, lsl #0x15 + ldr r3, _020B0BAC ; =UNK_0210655C + sub r1, r1, r5 + add r1, r1, #0x1 + mov r1, r1, lsl #0x10 + add r9, r4, r5, lsl #0x5 + ldr r5, [r3, r0, lsl #0x2] + movs r8, r1, lsr #0x10 + mov r7, r2, lsr #0x10 + mov r6, #0x0 + ldmeqia sp!, {r4-r10,pc} + mov r4, #0x2 +_020B0B40: + mov r2, r4 + add r0, r9, #0x6 + add r1, r7, #0x6 + blx r5 + mov r2, r4 + add r0, r9, #0xe + add r1, r7, #0xe + blx r5 + mov r2, r4 + add r0, r9, #0x16 + add r1, r7, #0x16 + blx r5 + add r0, r9, #0x1e + add r1, r7, #0x1e + mov r2, r4 + blx r5 + add r0, r7, #0x20 + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 + add r9, r9, #0x20 + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r8 + blo _020B0B40 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B0BA8: .word UNK_021CCDA0 +_020B0BAC: .word UNK_0210655C + arm_func_end FUN_020B09B4 + + ; NNS_G2dEntryOamManagerAffine + arm_func_start FUN_020B0BB0 +FUN_020B0BB0: ; 0x020B0BB0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r12, [r0, #0xc] + ldrh r3, [r0, #0xe] + mov lr, #0x0 + add r2, r12, #0x1 + cmp r3, r2 + bgt _020B0BDC + ldrh r2, [r0, #0xa] + cmp r2, r12 + movls lr, #0x1 +_020B0BDC: + cmp lr, #0x0 + subne r2, r12, r3 + addne r2, r2, #0x1 + movne r2, r2, lsl #0x10 + movne r2, r2, lsr #0x10 + moveq r2, #0x0 + cmp r2, #0x1 + movcs r2, #0x1 + movcc r2, #0x0 + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldreq r0, _020B0C74 ; =0x0000FFFE + ldmeqia sp!, {pc} + ldr lr, [r0, #0x0] + ldr r3, _020B0C78 ; =UNK_021CCDA0 + mov r2, #0x540 + mla r12, lr, r2, r3 + ldr r3, [r1, #0x0] + ldrh r2, [r0, #0xe] + add r12, r12, #0x100 + mov r3, r3, asr #0x4 + add r12, r12, r2, lsl #0x5 + strh r3, [r12, #0x6] + ldr r3, [r1, #0x4] + mov r3, r3, asr #0x4 + strh r3, [r12, #0xe] + ldr r3, [r1, #0x8] + mov r3, r3, asr #0x4 + strh r3, [r12, #0x16] + ldr r1, [r1, #0xc] + mov r1, r1, asr #0x4 + strh r1, [r12, #0x1e] + ldrh r1, [r0, #0xe] + add r1, r1, #0x1 + strh r1, [r0, #0xe] + mov r0, r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B0C74: .word 0x0000FFFE +_020B0C78: .word UNK_021CCDA0 + arm_func_end FUN_020B0BB0 + + ; NNS_G2dEntryOamManagerOamWithAffineIdx + arm_func_start FUN_020B0C7C +FUN_020B0C7C: ; 0x020B0C7C + stmdb sp!, {r4,lr} + ldrh r12, [r0, #0x6] + ldrh r4, [r0, #0x8] + mov lr, #0x0 + add r3, r12, #0x1 + cmp r4, r3 + bgt _020B0CA4 + ldrh r3, [r0, #0x4] + cmp r3, r12 + movls lr, #0x1 +_020B0CA4: + cmp lr, #0x0 + subne r3, r12, r4 + addne r3, r3, #0x1 + movne r3, r3, lsl #0x10 + movne r3, r3, lsr #0x10 + moveq r3, #0x0 + cmp r3, #0x1 + movcs r3, #0x1 + movcc r3, #0x0 + cmp r3, #0x0 + beq _020B0D48 + ldr r4, [r0, #0x0] + ldr ip, _020B0D50 ; =UNK_021CCDA0 + mov r3, #0x540 + mla r12, r4, r3, r12 + ldrh r3, [r0, #0x8] + add r4, r12, #0x100 + ldrh r12, [r1, #0x0] + mov lr, r3, lsl #0x3 + add r3, r4, r3, lsl #0x3 + strh r12, [r4, lr] + ldrh lr, [r1, #0x2] + ldr ip, _020B0D54 ; =0x0000FFFE + strh lr, [r3, #0x2] + ldrh r1, [r1, #0x4] + cmp r2, r12 + strh r1, [r3, #0x4] + beq _020B0D34 + ldr r1, [r3, #0x0] + mov r12, r1, lsl #0x16 + mov r12, r12, lsr #0x1e + ands r12, r12, #0x1 + bicne r12, r1, #0x3e000000 + andne r1, r2, #0x1f + orrne r1, r12, r1, lsl #0x19 + strne r1, [r3, #0x0] +_020B0D34: + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + mov r0, #0x1 + ldmia sp!, {r4,pc} +_020B0D48: + mov r0, #0x0 + ldmia sp!, {r4,pc} + .balign 4 +_020B0D50: .word UNK_021CCDA0 +_020B0D54: .word 0x0000FFFE + arm_func_end FUN_020B0C7C + + ; NNS_G2dEntryOamManagerOam + arm_func_start FUN_020B0D58 +FUN_020B0D58: ; 0x020B0D58 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrh lr, [r0, #0x6] + ldrh r12, [r0, #0x8] + mov r4, #0x0 + add r3, lr, #0x1 + cmp r12, r3 + bgt _020B0D84 + ldrh r3, [r0, #0x4] + cmp r3, lr + movls r4, #0x1 +_020B0D84: + cmp r4, #0x0 + subne r3, lr, r12 + addne r3, r3, #0x1 + movne r3, r3, lsl #0x10 + movne r3, r3, lsr #0x10 + moveq r3, #0x0 + cmp r3, r2 + movcs r3, #0x1 + movcc r3, #0x0 + cmp r3, #0x0 + beq _020B0E24 + ldr lr, [r0, #0x0] + ldr ip, _020B0E30 ; =UNK_021CCDA0 + mov r3, #0x540 + mla r12, lr, r3, r12 + ldrh r3, [r0, #0x8] + add r12, r12, #0x100 + cmp r2, #0x0 + add r4, r12, r3, lsl #0x3 + mov r5, #0x0 + ble _020B0E18 + add r3, r0, #0x8 +_020B0DDC: + ldrh lr, [r1, #0x0] + mov r0, r5, lsl #0x3 + add r12, r4, r5, lsl #0x3 + strh lr, [r4, r0] + ldrh r0, [r1, #0x2] + add r5, r5, #0x1 + cmp r5, r2 + strh r0, [r12, #0x2] + ldrh r0, [r1, #0x4] + add r1, r1, #0x8 + strh r0, [r12, #0x4] + ldrh r0, [r3, #0x0] + add r0, r0, #0x1 + strh r0, [r3, #0x0] + blt _020B0DDC +_020B0E18: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,pc} +_020B0E24: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0E30: .word UNK_021CCDA0 + arm_func_end FUN_020B0D58 + + ; NNS_G2dGetNewOamManagerInstance + arm_func_start FUN_020B0E34 +FUN_020B0E34: ; 0x020B0E34 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r5, [sp, #0x1c] + ldr r6, _020B0FB4 ; =UNK_021CCDA0 + mov r4, #0x540 + mla r4, r5, r4, r6 + mov lr, r1 + sub r1, r2, #0x1 + add r1, lr, r1 + mov r1, r1, lsl #0x10 + mov r12, r1, lsr #0x10 + add r7, r4, lr, lsl #0x1 + add r2, r4, r12, lsl #0x1 + mov r6, r0 + mov r5, r3 + cmp r7, r2 + mov r3, lr, lsl #0x1 + bhi _020B0E9C + ldr r0, _020B0FB8 ; =0x0000FFFF +_020B0E80: + ldrh r1, [r7, #0x0] + cmp r1, r0 + movne r0, #0x0 + bne _020B0EA0 + add r7, r7, #0x2 + cmp r7, r2 + bls _020B0E80 +_020B0E9C: + mov r0, #0x1 +_020B0EA0: + cmp r0, #0x0 + beq _020B0EE0 + ldr r0, _020B0FBC ; =UNK_021CCD9C + sub r2, r12, lr + ldrh r7, [r0, #0x0] + add r1, r4, r3 + mov r2, r2, lsl #0x1 + add r3, r7, #0x1 + strh r3, [r0, #0x0] + strh r7, [r6, #0x10] + strh lr, [r6, #0x4] + strh r12, [r6, #0x6] + strh lr, [r6, #0x8] + ldrh r0, [r6, #0x10] + bl MIi_CpuClear16 + b _020B0EEC +_020B0EE0: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020B0EEC: + ldrh r0, [sp, #0x18] + add r4, r4, #0x500 + cmp r0, #0x0 + bne _020B0F18 + mov r0, #0x20 + strh r0, [r6, #0xa] + mov r0, #0x0 + strh r0, [r6, #0xc] + ldrh r0, [r6, #0xa] + strh r0, [r6, #0xe] + b _020B0F98 +_020B0F18: + sub r0, r0, #0x1 + add r0, r5, r0 + mov r0, r0, lsl #0x10 + mov r12, r0, lsr #0x10 + add r7, r4, r5, lsl #0x1 + add r2, r4, r12, lsl #0x1 + cmp r7, r2 + mov r3, r5, lsl #0x1 + bhi _020B0F5C + ldr r0, _020B0FB8 ; =0x0000FFFF +_020B0F40: + ldrh r1, [r7, #0x0] + cmp r1, r0 + movne r0, #0x0 + bne _020B0F60 + add r7, r7, #0x2 + cmp r7, r2 + bls _020B0F40 +_020B0F5C: + mov r0, #0x1 +_020B0F60: + cmp r0, #0x0 + beq _020B0F8C + strh r5, [r6, #0xa] + strh r12, [r6, #0xc] + strh r5, [r6, #0xe] + ldrh r0, [r6, #0x10] + sub r2, r12, r5 + add r1, r4, r3 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + b _020B0F98 +_020B0F8C: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020B0F98: + mov r1, #0x0 + ldr r0, [sp, #0x1c] + str r1, [r6, #0x14] + str r0, [r6, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B0FB4: .word UNK_021CCDA0 +_020B0FB8: .word 0x0000FFFF +_020B0FBC: .word UNK_021CCD9C + arm_func_end FUN_020B0E34 + + ; NNS_G2dInitOamManagerModule + arm_func_start FUN_020B0FC0 +FUN_020B0FC0: ; 0x020B0FC0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B1060 ; =UNK_021CCEA0 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r1, _020B1064 ; =UNK_021CD3E0 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r1, _020B1068 ; =UNK_021CD920 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1070 ; =UNK_021CCDA0 + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1074 ; =UNK_021CD2E0 + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1078 ; =UNK_021CD820 + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B107C ; =UNK_021CD2A0 + mov r2, #0x40 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1080 ; =UNK_021CD7E0 + mov r2, #0x40 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1084 ; =UNK_021CDD20 + mov r2, #0x40 + bl MIi_CpuClear16 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B1060: .word UNK_021CCEA0 +_020B1064: .word UNK_021CD3E0 +_020B1068: .word UNK_021CD920 +_020B106C: .word 0x0000FFFF +_020B1070: .word UNK_021CCDA0 +_020B1074: .word UNK_021CD2E0 +_020B1078: .word UNK_021CD820 +_020B107C: .word UNK_021CD2A0 +_020B1080: .word UNK_021CD7E0 +_020B1084: .word UNK_021CDD20 + arm_func_end FUN_020B0FC0 + + ; CpuLoadOAMMain_ + arm_func_start FUN_020B1088 +FUN_020B1088: ; 0x020B1088 + ldr ip, _020B1094 ; =MIi_CpuCopy16 + add r1, r1, #0x7000000 + bx r12 + .balign 4 +_020B1094: .word MIi_CpuCopy16 + arm_func_end FUN_020B1088 + + ; CpuLoadOAMSub_ + arm_func_start FUN_020B1098 +FUN_020B1098: ; 0x020B1098 + ldr r3, _020B10A8 ; =0x07000400 + ldr ip, _020B10AC ; =MIi_CpuCopy16 + add r1, r1, r3 + bx r12 + .balign 4 +_020B10A8: .word 0x07000400 +_020B10AC: .word MIi_CpuCopy16 + arm_func_end FUN_020B1098 + diff --git a/arm9/asm/NNS_G2D_g2d_oamsoftware.s b/arm9/asm/NNS_G2D_g2d_oamsoftware.s new file mode 100644 index 00000000..0929557b --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_oamsoftware.s @@ -0,0 +1,436 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + ; pltFmtTbl$8430 + .global UNK_020FF8D0 +UNK_020FF8D0: ; 0x020FF8D0 + .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + + ; static const in function + ; texSize_$8337 + .global UNK_020FF8D8 +UNK_020FF8D8: ; 0x020FF8D8 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 + + ; gxTexSizeSTbl + .global UNK_020FF8F8 +UNK_020FF8F8: ; 0x020FF8F8 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + ; gxTexSizeTTbl + .global UNK_020FF928 +UNK_020FF928: ; 0x020FF928 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + + .section .data + + ; zOffsetStep_ + .global UNK_02106590 +UNK_02106590: ; 0x02106590 + .byte 0x00, 0xF0, 0xFF, 0xFF + + .section .bss + + ; bAutoZOffsetAdd_ + .global UNK_021CED08 +UNK_021CED08: ; 0x021CED08 + .space 0x4 + + ; s_pUVFlipCorrectFunc + .global UNK_021CED0C +UNK_021CED0C: ; 0x021CED0C + .space 0x4 + + ; zOffset_ + .global UNK_021CED10 +UNK_021CED10: ; 0x021CED10 + .space 0x4 + + .section .text + + ; NNS_G2dDrawOneOam3DDirectWithPosFast + arm_func_start FUN_020B46B4 +FUN_020B46B4: ; 0x020B46B4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x1c + add r12, sp, #0x4 + mov r5, r1 + mov r4, r2 + mov r7, r3 + mov r6, r0 + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x34] + ldr r3, [sp, #0x38] + mov r0, r7 + str r12, [sp, #0x0] + bl FUN_020B498C + ldr r2, [r7, #0x0] + and r1, r2, #0x300 + cmp r1, #0x100 + beq _020B4708 + cmp r1, #0x300 + beq _020B4708 + and r0, r2, #0x30000000 + orr r1, r1, r0 +_020B4708: + cmp r1, #0x300 + bne _020B478C + ldr r0, _020B4914 ; =0xC000C000 + ldr r1, _020B4918 ; =UNK_021CED08 + and r0, r2, r0 + and r2, r0, #0xc0000000 + mov r12, r2, lsr #0x1e + and r0, r0, #0xc000 + mov lr, r0, asr #0xe + ldr r3, _020B491C ; =UNK_020FF8AC + ldr r0, [r1, #0x0] + ldr r2, _020B4920 ; =UNK_020FF894 + cmp r0, #0x0 + ldrne r0, _020B4924 ; =UNK_021CED10 + mov r12, r12, lsl #0x1 + add r1, r2, lr, lsl #0x3 + add r3, r3, lr, lsl #0x3 + ldrh r2, [r12, r3] + ldrh r1, [r12, r1] + ldrne r0, [r0, #0x0] + mov r2, r2, asr #0x1 + addne r3, r0, r4, lsl #0xc + mov r1, r1, asr #0x1 + add r0, r5, r1 + add r2, r6, r2 + ldr r1, _020B4928 ; =0x04000470 + mov r2, r2, lsl #0xc + str r2, [r1, #0x0] + mov r0, r0, lsl #0xc + moveq r3, r4, lsl #0xc + str r0, [r1, #0x0] + str r3, [r1, #0x0] + b _020B47C0 +_020B478C: + ldr r0, _020B4918 ; =UNK_021CED08 + ldr r1, _020B4928 ; =0x04000470 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldrne r0, _020B4924 ; =UNK_021CED10 + ldrne r0, [r0, #0x0] + addne r2, r0, r4, lsl #0xc + mov r0, r6, lsl #0xc + str r0, [r1, #0x0] + mov r0, r5, lsl #0xc + moveq r2, r4, lsl #0xc + str r0, [r1, #0x0] + str r2, [r1, #0x0] +_020B47C0: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, _020B492C ; =0x0400046C + mov r0, r0, lsl #0xc + str r0, [r2, #0x0] + mov r0, r1, lsl #0xc + str r0, [r2, #0x0] + mov r1, #0x1000 + str r1, [r2, #0x0] + ldr r0, _020B4930 ; =0x04000500 + mov r1, #0x1 + str r1, [r0, #0x0] + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x10] + mov r0, r0, lsl #0x8 + mov r1, r1, lsl #0x8 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r2, r2, r0, lsl #0x10 + ldr r1, _020B4934 ; =0x04000488 + ldr r0, _020B4938 ; =0x04000490 + str r2, [r1, #0x0] + mov r2, #0x10000 + str r2, [r0, #0x0] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r3, r4, r2, lsl #0x10 + ldr r2, _020B493C ; =0x00010040 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x8] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r2, r4, r2, lsl #0x10 + str r2, [r1, #0x0] + mov r2, #0x40 + str r2, [r0, #0x0] + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x8] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r2, r4, r2, lsl #0x10 + str r2, [r1, #0x0] + mov r2, #0x0 + str r2, [r0, #0x0] + ldr r1, _020B4940 ; =0x04000504 + ldr r0, _020B4918 ; =UNK_021CED08 + str r2, [r1, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r7,pc} + ldr r1, _020B4924 ; =UNK_021CED10 + ldr r0, _020B4944 ; =UNK_02106590 + ldr r2, [r1, #0x0] + ldr r0, [r0, #0x0] + add r0, r2, r0 + str r0, [r1, #0x0] + add sp, sp, #0x1c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B4914: .word 0xC000C000 +_020B4918: .word UNK_021CED08 +_020B491C: .word UNK_020FF8AC +_020B4920: .word UNK_020FF894 +_020B4924: .word UNK_021CED10 +_020B4928: .word 0x04000470 +_020B492C: .word 0x0400046C +_020B4930: .word 0x04000500 +_020B4934: .word 0x04000488 +_020B4938: .word 0x04000490 +_020B493C: .word 0x00010040 +_020B4940: .word 0x04000504 +_020B4944: .word UNK_02106590 + arm_func_end FUN_020B46B4 + + ; NNSi_G2dGetOamSoftEmuAutoZOffsetStep + arm_func_start FUN_020B4948 +FUN_020B4948: ; 0x020B4948 + ldr r0, _020B4954 ; =UNK_02106590 + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020B4954: .word UNK_02106590 + arm_func_end FUN_020B4948 + + ; NNSi_G2dSetOamSoftEmuAutoZOffsetStep + arm_func_start FUN_020B4958 +FUN_020B4958: ; 0x020B4958 + ldr r1, _020B4964 ; =UNK_02106590 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020B4964: .word UNK_02106590 + arm_func_end FUN_020B4958 + + ; NNSi_G2dResetOamSoftEmuAutoZOffset + arm_func_start FUN_020B4968 +FUN_020B4968: ; 0x020B4968 + ldr r0, _020B4978 ; =UNK_021CED10 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020B4978: .word UNK_021CED10 + arm_func_end FUN_020B4968 + + ; NNSi_G2dSetOamSoftEmuAutoZOffsetFlag + arm_func_start FUN_020B497C +FUN_020B497C: ; 0x020B497C + ldr r1, _020B4988 ; =UNK_021CED08 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020B4988: .word UNK_021CED08 + arm_func_end FUN_020B497C + + ; CalcSpriteParams_ + arm_func_start FUN_020B498C +FUN_020B498C: ; 0x020B498C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc + mov r6, r0 + ldr r4, [r6, #0x0] + ldr r0, _020B4BCC ; =0xC000C000 + ldr r5, [r6, #0x4] + and r4, r4, r0 + and r0, r4, #0xc0000000 + and r4, r4, #0xc000 + mov lr, r0, lsr #0x1e + ldr r0, _020B4BD0 ; =UNK_020FF8AC + mov r12, r4, asr #0xe + ldr r8, _020B4BD4 ; =UNK_020FF894 + mov r4, lr, lsl #0x1 + add r0, r0, r12, lsl #0x3 + ldrh r9, [r4, r0] + ldr r0, [sp, #0x28] + mov r5, r5, lsl #0x16 + mov r5, r5, lsr #0x16 + mov r7, r5, lsl #0x10 + str r9, [r0, #0x10] + add r5, r8, r12, lsl #0x3 + ldrh r8, [r4, r5] + mov r5, r1 + mov r4, r3 + str r8, [r0, #0x14] + ldr r1, [r5, #0x14] + mov r7, r7, lsr #0x10 + cmp r1, #0x0 + bne _020B4A74 + ldr r1, [r5, #0x8] + mov r2, r2, lsr #0x3 + orr r1, r2, r1, lsl #0x1a + ldr r2, [r5, #0x0] + orr r1, r1, #0x40000000 + ldr r3, [r5, #0x4] + orr r1, r1, r2, lsl #0x14 + orr r2, r1, r3, lsl #0x17 + ldr r8, [r5, #0x10] + ldr r1, _020B4BD8 ; =0x040004A8 + orr r2, r2, r8, lsl #0x1d + str r2, [r1, #0x0] + ldr r1, [r5, #0x8] + ldr r2, [r5, #0x0] + cmp r1, #0x4 + moveq r1, r7, lsl #0xf + moveq r7, r1, lsr #0x10 + ldr r1, _020B4BDC ; =UNK_020FF8D8 + ldr r1, [r1, r2, lsl #0x2] + sub r1, r1, #0x1 + and r1, r7, r1 + mov r1, r1, lsl #0xf + str r1, [r0, #0x0] + ldr r1, [r5, #0x0] + mov r1, r7, asr r1 + mov r1, r1, lsl #0xf + str r1, [r0, #0x4] + b _020B4AE0 +_020B4A74: + and r1, r1, #0x700000 + mov r1, r1, asr #0x14 + mov r12, r12, lsl #0x10 + add r1, r1, #0x5 + ldr r3, [r5, #0x8] + mov lr, lr, lsl #0x10 + ldr sb, _020B4BE0 ; =UNK_020FF8F8 + mov r12, r12, lsr #0x10 + ldr r8, _020B4BE4 ; =UNK_020FF928 + add r1, r2, r7, lsl r1 + mov r2, r3, lsl #0x1a + orr r3, r2, r1, lsr #0x3 + mov r7, lr, lsr #0x10 + add r2, r9, r12, lsl #0x4 + add r1, r8, r12, lsl #0x4 + ldr r2, [r2, r7, lsl #0x2] + orr r3, r3, #0x40000000 + ldr r1, [r1, r7, lsl #0x2] + orr r2, r3, r2, lsl #0x14 + ldr r3, [r5, #0x10] + orr r2, r2, r1, lsl #0x17 + ldr r1, _020B4BD8 ; =0x040004A8 + orr r2, r2, r3, lsl #0x1d + str r2, [r1, #0x0] + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] +_020B4AE0: + ldr r2, [r0, #0x0] + ldr r1, [r0, #0x10] + add r1, r2, r1, lsl #0xc + str r1, [r0, #0x8] + ldr r2, [r0, #0x4] + ldr r1, [r0, #0x14] + add r1, r2, r1, lsl #0xc + str r1, [r0, #0xc] + ldr r1, [r6, #0x0] + mov r2, r1, lsl #0x2 + mov r1, r1, lsl #0x3 + movs r3, r1, lsr #0x1f + mov r12, r2, lsr #0x1f + ldrne r2, [r0, #0x0] + ldrne r1, [r0, #0x8] + strne r1, [r0, #0x0] + strne r2, [r0, #0x8] + cmp r12, #0x0 + ldrne r2, [r0, #0x4] + ldrne r1, [r0, #0xc] + strne r1, [r0, #0x4] + ldr r1, _020B4BE8 ; =UNK_021CED0C + strne r2, [r0, #0xc] + ldr r7, [r1, #0x0] + cmp r7, #0x0 + beq _020B4B60 + str r3, [sp, #0x0] + add r1, r0, #0x4 + add r2, r0, #0x8 + add r3, r0, #0xc + str r12, [sp, #0x4] + blx r7 +_020B4B60: + ldr r0, [r6, #0x4] + ldr r1, [r6, #0x0] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x1c + mov r3, r1, lsl #0x12 + ldr r1, [r5, #0xc] + mov r0, r0, lsl #0x10 + ldr r2, _020B4BEC ; =UNK_020FF8D0 + mov r3, r3, lsr #0x1f + cmp r1, #0x0 + mov r0, r0, lsr #0x10 + ldr r1, [r2, r3, lsl #0x2] + movne r0, r0, lsl #0x9 + bne _020B4BA4 + cmp r1, #0x4 + moveq r0, #0x0 + movne r0, r0, lsl #0x5 +_020B4BA4: + cmp r1, #0x2 + moveq r2, #0x1 + movne r2, #0x0 + add r1, r4, r0 + rsb r0, r2, #0x4 + mov r1, r1, lsr r0 + ldr r0, _020B4BF0 ; =0x040004AC + str r1, [r0, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B4BCC: .word 0xC000C000 +_020B4BD0: .word UNK_020FF8AC +_020B4BD4: .word UNK_020FF894 +_020B4BD8: .word 0x040004A8 +_020B4BDC: .word UNK_020FF8D8 +_020B4BE0: .word UNK_020FF8F8 +_020B4BE4: .word UNK_020FF928 +_020B4BE8: .word UNK_021CED0C +_020B4BEC: .word UNK_020FF8D0 +_020B4BF0: .word 0x040004AC + arm_func_end FUN_020B498C + diff --git a/arm9/asm/NNS_G2D_g2d_palettetabl.s b/arm9/asm/NNS_G2D_g2d_palettetabl.s new file mode 100644 index 00000000..bfa00006 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_palettetabl.s @@ -0,0 +1,13 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020B10B0 +FUN_020B10B0: ; 0x020B10B0 + mov r1, r1, lsl #0x1 + ldrh r0, [r0, r1] + bx lr + arm_func_end FUN_020B10B0 + diff --git a/arm9/asm/NNS_G2D_g2d_renderer.s b/arm9/asm/NNS_G2D_g2d_renderer.s new file mode 100644 index 00000000..d6213a1b --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_renderer.s @@ -0,0 +1,2043 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + ; firstSRTransformedMtxIdx_ + .global UNK_02106570 +UNK_02106570: ; 0x02106570 + .short -2 + + .balign 4, 0 + ; currenVramTransferHandle_ + .global UNK_02106574 +UNK_02106574: ; 0x02106574 + .word -1 + + ; mtxI_ + .global UNK_02106578 +UNK_02106578: ; 0x02106578 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .section .bss + + ; currentMtxCachePos_ + .global UNK_021CDD60 +UNK_021CDD60: ; 0x021CDD60 + .space 0x4 + + ; groupID_ + .global UNK_021CDD64 +UNK_021CDD64: ; 0x021CDD64 + .space 0x4 + + ; bDonotUseSRTransform + .global UNK_021CDD68 +UNK_021CDD68: ; 0x021CDD68 + .space 0x4 + + ; pCurrentInstance_ + .global UNK_021CDD6C +UNK_021CDD6C: ; 0x021CDD6C + .space 0x4 + + ; stackPos_ + .global UNK_021CDD70 +UNK_021CDD70: ; 0x021CDD70 + .space 0x4 + + ; fxZStack_ + .global UNK_021CDD74 +UNK_021CDD74: ; 0x021CDD74 + .space 0x80 + + ; mtxStateStack_ + .global UNK_021CDDF4 +UNK_021CDDF4: ; 0x021CDDF4 + .space 0x4 + + ; mtxStateStack_ + 0x4 + .global UNK_021CDDF8 +UNK_021CDDF8: ; 0x021CDDF8 + .space 0xfc + + ; mtxStack_ + .global UNK_021CDEF4 +UNK_021CDEF4: ; 0x021CDEF4 + .space 0x10 + + ; mtxStack_ + 0x10 + .global UNK_021CDF04 +UNK_021CDF04: ; 0x021CDF04 + .space 0x4 + + ; mtxStack_ + 0x14 + .global UNK_021CDF08 +UNK_021CDF08: ; 0x021CDF08 + .space 0x2ec + + ; mtxStackFor2DHW_ + .global UNK_021CE1F4 +UNK_021CE1F4: ; 0x021CE1F4 + .space 0x300 + + ; mtxCacheBuffer_ + .global UNK_021CE4F4 +UNK_021CE4F4: ; 0x021CE4F4 + .space 0x400 + + ; mcRenderState_ + .global UNK_021CE8F4 +UNK_021CE8F4: ; 0x021CE8F4 + .space 0x4 + + ; mcRenderState_ + 0x4 + .global UNK_021CE8F8 +UNK_021CE8F8: ; 0x021CE8F8 + .space 0x404 + + .section .text + + ; NNS_G2dSetRendererImageProxy + arm_func_start thunk_FUN_020b5040 +thunk_FUN_020b5040: ; 0x020B2780 + ldr ip, _020B2788 ; =FUN_020B5040 + bx r12 + .balign 4 +_020B2788: .word FUN_020B5040 + arm_func_end thunk_FUN_020b5040 + + ; _end + arm_func_start FUN_020B278C +FUN_020B278C: ; 0x020B278C + ldr r0, [r0, #0x78] + bx lr + arm_func_end FUN_020B278C + + ; NNS_G2dRotZ + arm_func_start FUN_020B2794 +FUN_020B2794: ; 0x020B2794 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr r2, _020B2894 ; =UNK_021CDD70 + mov lr, #0x0 + ldr r12, [r2, #0x0] + ldr r3, _020B2898 ; =UNK_021CDEF4 + mov r2, #0x18 + str r1, [sp, #0x0] + str r1, [sp, #0xc] + mla r1, r12, r2, r3 + rsb r3, r0, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0x0 + mov r2, r1 + str r3, [sp, #0x8] + str lr, [sp, #0x10] + str lr, [sp, #0x14] + bl FUN_020B423C + ldr r0, _020B2894 ; =UNK_021CDD70 + ldr r1, _020B289C ; =UNK_021CE1F4 + ldr r2, [r0, #0x0] + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + bl FUN_020B423C + ldr r0, _020B28A0 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B2824 + ldr r1, _020B28A4 ; =UNK_02106570 + ldr r0, _020B28A8 ; =0x0000FFFE + ldrh r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + bne _020B2828 +_020B2824: + mov r0, #0x0 +_020B2828: + cmp r0, #0x0 + ldreq r1, _020B2894 ; =UNK_021CDD70 + ldreq r0, _020B28A4 ; =UNK_02106570 + ldreq r1, [r1, #0x0] + streqh r1, [r0, #0x0] + ldr r0, _020B2894 ; =UNK_021CDD70 + ldr r1, _020B28AC ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + add r12, r1, r0, lsr #0xd + ldrh r0, [r12, #0x4] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B288C + ; Jump table + b _020B2870 ; case 0 + b _020B288C ; case 1 + b _020B2870 ; case 2 + b _020B2870 ; case 3 +_020B2870: + ldr r0, _020B28B0 ; =UNK_021CDD64 + mov r1, #0x1 + ldrh r3, [r0, #0x0] + add r2, r3, #0x1 + strh r2, [r0, #0x0] + strh r3, [r12, #0x2] + strh r1, [r12, #0x4] +_020B288C: + add sp, sp, #0x1c + ldmia sp!, {pc} + .balign 4 +_020B2894: .word UNK_021CDD70 +_020B2898: .word UNK_021CDEF4 +_020B289C: .word UNK_021CE1F4 +_020B28A0: .word UNK_021CDD68 +_020B28A4: .word UNK_02106570 +_020B28A8: .word 0x0000FFFE +_020B28AC: .word UNK_021CDDF4 +_020B28B0: .word UNK_021CDD64 + arm_func_end FUN_020B2794 + + ; NNS_G2dScale + arm_func_start FUN_020B28B4 +FUN_020B28B4: ; 0x020B28B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x1c + ldr r2, _020B29E8 ; =UNK_021CDD70 + mov r12, #0x0 + ldr r3, [r2, #0x0] + mov r4, r1 + ldr r2, _020B29EC ; =UNK_021CDEF4 + mov r1, #0x18 + mla r1, r3, r1, r2 + mov r5, r0 + add r0, sp, #0x0 + mov r2, r1 + str r5, [sp, #0x0] + str r12, [sp, #0x4] + str r12, [sp, #0x8] + str r4, [sp, #0xc] + str r12, [sp, #0x10] + str r12, [sp, #0x14] + bl FUN_020B423C + mov r0, r5 + bl FX_Inv + mov r1, #0x0 + str r0, [sp, #0x0] + mov r0, r4 + str r1, [sp, #0x4] + str r1, [sp, #0x8] + bl FX_Inv + mov r3, #0x0 + ldr r1, _020B29E8 ; =UNK_021CDD70 + str r0, [sp, #0xc] + ldr r2, [r1, #0x0] + ldr r1, _020B29F0 ; =UNK_021CE1F4 + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + str r3, [sp, #0x10] + str r3, [sp, #0x14] + bl FUN_020B423C + ldr r0, _020B29F4 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B2978 + ldr r1, _020B29F8 ; =UNK_02106570 + ldr r0, _020B29FC ; =0x0000FFFE + ldrh r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + bne _020B297C +_020B2978: + mov r0, #0x0 +_020B297C: + cmp r0, #0x0 + ldreq r1, _020B29E8 ; =UNK_021CDD70 + ldreq r0, _020B29F8 ; =UNK_02106570 + ldreq r1, [r1, #0x0] + streqh r1, [r0, #0x0] + ldr r0, _020B29E8 ; =UNK_021CDD70 + ldr r1, _020B2A00 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + add r12, r1, r0, lsr #0xd + ldrh r0, [r12, #0x4] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B29E0 + ; Jump table + b _020B29C4 ; case 0 + b _020B29E0 ; case 1 + b _020B29C4 ; case 2 + b _020B29C4 ; case 3 +_020B29C4: + ldr r0, _020B2A04 ; =UNK_021CDD64 + mov r1, #0x1 + ldrh r3, [r0, #0x0] + add r2, r3, #0x1 + strh r2, [r0, #0x0] + strh r3, [r12, #0x2] + strh r1, [r12, #0x4] +_020B29E0: + add sp, sp, #0x1c + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B29E8: .word UNK_021CDD70 +_020B29EC: .word UNK_021CDEF4 +_020B29F0: .word UNK_021CE1F4 +_020B29F4: .word UNK_021CDD68 +_020B29F8: .word UNK_02106570 +_020B29FC: .word 0x0000FFFE +_020B2A00: .word UNK_021CDDF4 +_020B2A04: .word UNK_021CDD64 + arm_func_end FUN_020B28B4 + + ; NNS_G2dTranslate + arm_func_start FUN_020B2A08 +FUN_020B2A08: ; 0x020B2A08 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x1c + ldr r3, _020B2AEC ; =UNK_021CDD68 + mov r4, r2 + ldr r2, [r3, #0x0] + cmp r2, #0x0 + beq _020B2A6C + ldr r2, _020B2AF0 ; =UNK_021CDD70 + mov r3, #0x18 + ldr r2, [r2, #0x0] + ldr lr, _020B2AF4 ; =UNK_021CDF04 + mul r5, r2, r3 + ldr r3, [lr, r5] + ldr ip, _020B2AF8 ; =UNK_021CDF08 + add r0, r3, r0 + str r0, [lr, r5] + ldr r0, [r12, r5] + ldr r3, _020B2AFC ; =UNK_021CDD74 + add r0, r0, r1 + str r0, [r12, r5] + ldr r0, [r3, r2, lsl #0x2] + add sp, sp, #0x1c + add r0, r0, r4 + str r0, [r3, r2, lsl #0x2] + ldmia sp!, {r4-r5,pc} +_020B2A6C: + ldr r2, _020B2AF0 ; =UNK_021CDD70 + mov lr, #0x1000 + ldr r12, [r2, #0x0] + ldr r3, _020B2B00 ; =UNK_021CDEF4 + mov r2, #0x18 + str r1, [sp, #0x14] + mla r1, r12, r2, r3 + mov r3, #0x0 + str r0, [sp, #0x10] + add r0, sp, #0x0 + mov r2, r1 + str lr, [sp, #0x0] + str r3, [sp, #0x4] + str r3, [sp, #0x8] + str lr, [sp, #0xc] + bl FUN_020B423C + ldr r0, _020B2AF0 ; =UNK_021CDD70 + ldr r1, _020B2B04 ; =UNK_021CE1F4 + ldr r2, [r0, #0x0] + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + bl FUN_020B423C + ldr r0, _020B2AF0 ; =UNK_021CDD70 + ldr r2, _020B2AFC ; =UNK_021CDD74 + ldr r1, [r0, #0x0] + ldr r0, [r2, r1, lsl #0x2] + add r0, r0, r4 + str r0, [r2, r1, lsl #0x2] + add sp, sp, #0x1c + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B2AEC: .word UNK_021CDD68 +_020B2AF0: .word UNK_021CDD70 +_020B2AF4: .word UNK_021CDF04 +_020B2AF8: .word UNK_021CDF08 +_020B2AFC: .word UNK_021CDD74 +_020B2B00: .word UNK_021CDEF4 +_020B2B04: .word UNK_021CE1F4 + arm_func_end FUN_020B2A08 + + ; NNS_G2dPopMtx + arm_func_start FUN_020B2B08 +FUN_020B2B08: ; 0x020B2B08 + ldr r0, _020B2B4C ; =UNK_021CDD70 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + movle r0, #0x1 + movgt r0, #0x0 + cmp r0, #0x0 + bxne lr + ldr r1, _020B2B4C ; =UNK_021CDD70 + ldr r0, _020B2B50 ; =UNK_02106570 + ldr r3, [r1, #0x0] + ldrh r2, [r0, #0x0] + sub r3, r3, #0x1 + str r3, [r1, #0x0] + cmp r2, r3 + ldrgt r1, _020B2B54 ; =0x0000FFFE + strgth r1, [r0, #0x0] + bx lr + .balign 4 +_020B2B4C: .word UNK_021CDD70 +_020B2B50: .word UNK_02106570 +_020B2B54: .word 0x0000FFFE + arm_func_end FUN_020B2B08 + + ; NNS_G2dPushMtx + arm_func_start FUN_020B2B58 +FUN_020B2B58: ; 0x020B2B58 + stmdb sp!, {r4-r10,lr} + ldr r0, _020B2D74 ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x7c] + ands r0, r0, #0x1 + bne _020B2CA4 + ldr r0, _020B2D78 ; =UNK_021CDD70 + ldr r1, [r0, #0x0] + mov r0, r1, lsl #0x10 + add r5, r1, #0x1 + cmp r5, #0x20 + mov r4, r0, lsr #0x10 + movlt r0, #0x1 + movge r0, #0x0 + cmp r0, #0x0 + beq _020B2C44 + ldr r0, _020B2D7C ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B2BE4 + ldr r1, _020B2D78 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r3, [r1, #0x0] + ldr r1, _020B2D80 ; =UNK_021CDD74 + mul r8, r3, r0 + ldr r6, _020B2D84 ; =UNK_021CDF04 + mul r7, r5, r0 + ldr r2, [r6, r8] + ldr r0, [r1, r3, lsl #0x2] + ldr r3, _020B2D88 ; =UNK_021CDF08 + str r2, [r6, r7] + ldr r2, [r3, r8] + str r0, [r1, r5, lsl #0x2] + str r2, [r3, r7] + b _020B2C3C +_020B2BE4: + ldr r1, _020B2D78 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r7, _020B2D80 ; =UNK_021CDD74 + mul lr, r2, r0 + ldr r1, _020B2D8C ; =UNK_021CDEF4 + mul r12, r5, r0 + ldr r8, _020B2D90 ; =UNK_021CE1F4 + add r10, r1, lr + ldr r6, [r7, r2, lsl #0x2] + add r9, r1, r12 + ldmia r10!, {r0-r3} + stmia r9!, {r0-r3} + ldmia r10, {r0-r1} + str r6, [r7, r5, lsl #0x2] + add r7, r8, lr + stmia r9, {r0-r1} + add r6, r8, r12 + ldmia r7!, {r0-r3} + stmia r6!, {r0-r3} + ldmia r7, {r0-r1} + stmia r6, {r0-r1} +_020B2C3C: + ldr r0, _020B2D78 ; =UNK_021CDD70 + str r5, [r0, #0x0] +_020B2C44: + ldr r0, _020B2D78 ; =UNK_021CDD70 + ldr r2, _020B2D94 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + mov r5, r4, lsl #0x3 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + add r4, r2, r4, lsl #0x3 + mov r6, r3, lsl #0x3 + ldrh r1, [r2, r5] + ldrh r0, [r4, #0x2] + add r3, r2, r3, lsl #0x3 + strh r1, [r2, r6] + strh r0, [r3, #0x2] + ldrh r2, [r4, #0x4] + ldrh r0, [r4, #0x6] + ldr r1, _020B2D98 ; =UNK_021CDDF8 + strh r2, [r3, #0x4] + strh r0, [r3, #0x6] + ldrh r0, [r1, r5] + cmp r0, #0x1 + moveq r0, #0x2 + streqh r0, [r1, r6] + strneh r0, [r1, r6] + ldmia sp!, {r4-r10,pc} +_020B2CA4: + ldr r0, _020B2D78 ; =UNK_021CDD70 + ldr r0, [r0, #0x0] + add r4, r0, #0x1 + cmp r4, #0x20 + movlt r0, #0x1 + movge r0, #0x0 + cmp r0, #0x0 + ldmeqia sp!, {r4-r10,pc} + ldr r0, _020B2D7C ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B2D10 + ldr r1, _020B2D78 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r3, [r1, #0x0] + ldr r1, _020B2D80 ; =UNK_021CDD74 + mul r7, r3, r0 + ldr r5, _020B2D84 ; =UNK_021CDF04 + mul r6, r4, r0 + ldr r2, [r5, r7] + ldr r0, [r1, r3, lsl #0x2] + ldr r3, _020B2D88 ; =UNK_021CDF08 + str r2, [r5, r6] + ldr r2, [r3, r7] + str r0, [r1, r4, lsl #0x2] + str r2, [r3, r6] + b _020B2D68 +_020B2D10: + ldr r1, _020B2D78 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr ip, _020B2D80 ; =UNK_021CDD74 + mul r9, r2, r0 + ldr r1, _020B2D8C ; =UNK_021CDEF4 + mul r8, r4, r0 + ldr lr, _020B2D90 ; =UNK_021CE1F4 + add r6, r1, r9 + ldr r5, [r12, r2, lsl #0x2] + add r7, r1, r8 + ldmia r6!, {r0-r3} + stmia r7!, {r0-r3} + ldmia r6, {r0-r1} + add r6, lr, r9 + stmia r7, {r0-r1} + add lr, lr, r8 + ldmia r6!, {r0-r3} + stmia lr!, {r0-r3} + ldmia r6, {r0-r1} + stmia lr, {r0-r1} + str r5, [r12, r4, lsl #0x2] +_020B2D68: + ldr r0, _020B2D78 ; =UNK_021CDD70 + str r4, [r0, #0x0] + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B2D74: .word UNK_021CDD6C +_020B2D78: .word UNK_021CDD70 +_020B2D7C: .word UNK_021CDD68 +_020B2D80: .word UNK_021CDD74 +_020B2D84: .word UNK_021CDF04 +_020B2D88: .word UNK_021CDF08 +_020B2D8C: .word UNK_021CDEF4 +_020B2D90: .word UNK_021CE1F4 +_020B2D94: .word UNK_021CDDF4 +_020B2D98: .word UNK_021CDDF8 + arm_func_end FUN_020B2B58 + + ; NNS_G2dDrawMultiCellAnimation + arm_func_start FUN_020B2D9C +FUN_020B2D9C: ; 0x020B2D9C + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldrh r0, [r4, #0x56] + cmp r0, #0x0 + bne _020B2DBC + add r0, r4, #0x30 + bl FUN_020B2E78 + ldmia sp!, {r4-r6,pc} +_020B2DBC: + bl FUN_020B2B58 + ldrh r0, [r4, #0x56] + ands r0, r0, #0x8 + beq _020B2E0C + ldr r0, _020B2E70 ; =UNK_021CDD6C + ldrsh r6, [r4, #0x52] + ldr r0, [r0, #0x0] + ldrsh r5, [r4, #0x50] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B2E70 ; =UNK_021CDD6C + rsbne r5, r5, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r6, r6, #0x0 + mov r0, r5, lsl #0xc + mov r1, r6, lsl #0xc + mov r2, #0x0 + bl FUN_020B2A08 +_020B2E0C: + ldrh r0, [r4, #0x56] + ands r0, r0, #0x4 + beq _020B2E40 + ldrh r0, [r4, #0x54] + ldr r2, _020B2E74 ; =FX_SinCosTable_ + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl FUN_020B2794 +_020B2E40: + ldrh r0, [r4, #0x56] + ands r0, r0, #0x2 + beq _020B2E5C + ldr r0, [r4, #0x48] + ldr r1, [r4, #0x4c] + mov r2, #0x1000 + bl FUN_020B28B4 +_020B2E5C: + add r0, r4, #0x30 + bl FUN_020B2E78 + mov r0, #0x1 + bl FUN_020B2B08 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B2E70: .word UNK_021CDD6C +_020B2E74: .word FX_SinCosTable_ + arm_func_end FUN_020B2D9C + + ; NNS_G2dDrawMultiCell + arm_func_start FUN_020B2E78 +FUN_020B2E78: ; 0x020B2E78 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r5, r0 + ldr r0, [r5, #0x8] + cmp r0, #0x1 + bne _020B309C + ldr r0, [r5, #0x0] + mov r2, #0x0 + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + bls _020B2ED0 + ldr r3, _020B3174 ; =UNK_021CE8F4 + mov r4, r2 +_020B2EAC: + add r0, r3, r2, lsl #0x2 + str r4, [r0, #0x4] + ldr r0, [r5, #0x0] + add r2, r2, #0x1 + ldrh r1, [r0, #0x2] + mov r0, r2, lsl #0x10 + mov r2, r0, lsr #0x10 + cmp r2, r1 + blo _020B2EAC +_020B2ED0: + ldr r0, _020B3178 ; =UNK_021CDD6C + mov r6, #0x1 + ldr r1, [r0, #0x0] + ldr r0, _020B3174 ; =UNK_021CE8F4 + str r6, [r0, #0x404] + ldr r0, [r1, #0x80] + cmp r0, #0x0 + beq _020B2FD8 + bl FUN_020B4948 + str r0, [sp, #0x0] + mov r0, r6 + bl FUN_020B497C + ldr r0, _020B3178 ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl FUN_020B4958 + ldr r2, [r5, #0x0] + mov r7, #0x0 + ldrh r0, [r2, #0x0] + cmp r0, #0x0 + bls _020B2FC0 + mov r11, r7 +_020B2F28: + ldr r0, [r2, #0x4] + ldr r9, [r5, #0xc] + add r10, r0, r7, lsl #0x3 + ldrh r0, [r10, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r8, r0, lsr #0x10 + ldr r0, _020B3174 ; =UNK_021CE8F4 + strh r8, [r0, #0x0] + bl FUN_020B2B58 + ldr r0, _020B3178 ; =UNK_021CDD6C + ldrsh r4, [r10, #0x4] + ldr r0, [r0, #0x0] + ldrsh r10, [r10, #0x2] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B3178 ; =UNK_021CDD6C + rsbne r10, r10, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r4, r4, #0x0 + mov r2, r11 + mov r0, r10, lsl #0xc + mov r1, r4, lsl #0xc + bl FUN_020B2A08 + mov r0, #0x58 + mla r0, r8, r0, r9 + bl FUN_020B3554 + mov r0, r6 + bl FUN_020B2B08 + ldr r2, [r5, #0x0] + add r0, r7, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r2, #0x0] + mov r7, r0, lsr #0x10 + cmp r7, r1 + blo _020B2F28 +_020B2FC0: + mov r0, #0x0 + bl FUN_020B497C + ldr r0, [sp, #0x0] + bl FUN_020B4958 + bl FUN_020B4968 + b _020B3088 +_020B2FD8: + ldr r2, [r5, #0x0] + mov r7, #0x0 + ldrh r0, [r2, #0x0] + cmp r0, #0x0 + bls _020B3088 + str r7, [sp, #0x4] + mov r11, #0x58 +_020B2FF4: + ldr r0, [r2, #0x4] + ldr r9, [r5, #0xc] + add r10, r0, r7, lsl #0x3 + ldrh r0, [r10, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r8, r0, lsr #0x10 + ldr r0, _020B3174 ; =UNK_021CE8F4 + strh r8, [r0, #0x0] + bl FUN_020B2B58 + ldr r0, _020B3178 ; =UNK_021CDD6C + ldrsh r4, [r10, #0x4] + ldr r0, [r0, #0x0] + ldrsh r10, [r10, #0x2] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B3178 ; =UNK_021CDD6C + rsbne r10, r10, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r4, r4, #0x0 + ldr r2, [sp, #0x4] + mov r0, r10, lsl #0xc + mov r1, r4, lsl #0xc + bl FUN_020B2A08 + mla r0, r8, r11, r9 + bl FUN_020B3554 + mov r0, r6 + bl FUN_020B2B08 + ldr r2, [r5, #0x0] + add r0, r7, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r2, #0x0] + mov r7, r0, lsr #0x10 + cmp r7, r1 + blo _020B2FF4 +_020B3088: + ldr r0, _020B3174 ; =UNK_021CE8F4 + mov r1, #0x0 + str r1, [r0, #0x404] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020B309C: + ldr r0, _020B3178 ; =UNK_021CDD6C + ldr r7, [r5, #0xc] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + cmp r0, #0x0 + beq _020B312C + bl FUN_020B4948 + mov r6, r0 + mov r0, #0x1 + bl FUN_020B497C + ldr r0, _020B3178 ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl FUN_020B4958 + ldr r0, [r5, #0x0] + mov r4, #0x0 + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + bls _020B3110 + mov r8, #0x28 +_020B30EC: + mla r0, r4, r8, r7 + bl FUN_020B3474 + ldr r1, [r5, #0x0] + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B30EC +_020B3110: + mov r0, #0x0 + bl FUN_020B497C + mov r0, r6 + bl FUN_020B4958 + bl FUN_020B4968 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020B312C: + ldr r0, [r5, #0x0] + mov r4, #0x0 + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + addls sp, sp, #0xc + ldmlsia sp!, {r4-r11,pc} + mov r6, #0x28 +_020B3148: + mla r0, r4, r6, r7 + bl FUN_020B3474 + ldr r1, [r5, #0x0] + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B3148 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B3174: .word UNK_021CE8F4 +_020B3178: .word UNK_021CDD6C + arm_func_end FUN_020B2E78 + + ; NNS_G2dDrawCellAnimation + arm_func_start FUN_020B317C +FUN_020B317C: ; 0x020B317C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _020B31EC ; =UNK_021CDD6C + mov r5, r0 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x80] + cmp r1, #0x0 + beq _020B31E0 + bl FUN_020B4948 + mov r4, r0 + mov r0, #0x1 + bl FUN_020B497C + ldr r0, _020B31EC ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl FUN_020B4958 + mov r0, r5 + bl FUN_020B3554 + mov r0, #0x0 + bl FUN_020B497C + mov r0, r4 + bl FUN_020B4958 + bl FUN_020B4968 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B31E0: + bl FUN_020B3554 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B31EC: .word UNK_021CDD6C + arm_func_end FUN_020B317C + + ; NNS_G2dEndRendering + arm_func_start FUN_020B31F0 +FUN_020B31F0: ; 0x020B31F0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B3260 ; =0x04000448 + mov r2, #0x1 + ldr r0, _020B3264 ; =UNK_021CDD6C + str r2, [r1, #0x0] + ldr r2, [r0, #0x0] + ldr r3, [r2, #0x7c] + cmp r3, #0x0 + beq _020B324C + ands r0, r3, #0x1 + ldrne r0, _020B3268 ; =UNK_021CDD68 + movne r1, #0x0 + strne r1, [r0, #0x0] + ands r0, r3, #0x2 + beq _020B323C + mov r0, #0x0 + str r0, [r2, #0x74] + bl FUN_020B4DA0 +_020B323C: + ldr r0, _020B3264 ; =UNK_021CDD6C + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x7c] +_020B324C: + ldr r0, _020B3264 ; =UNK_021CDD6C + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B3260: .word 0x04000448 +_020B3264: .word UNK_021CDD6C +_020B3268: .word UNK_021CDD68 + arm_func_end FUN_020B31F0 + + ; NNS_G2dBeginRendering + arm_func_start FUN_020B326C +FUN_020B326C: ; 0x020B326C + stmdb sp!, {r4-r8,lr} + ldr r5, _020B330C ; =UNK_021CDD60 + ldr r3, _020B3310 ; =UNK_021CDD6C + ldrh r6, [r5, #0x0] + ldr r2, _020B3314 ; =UNK_021CDD70 + mov r4, #0x0 + ldr r7, _020B3318 ; =0x0000FFFE + ldr r1, _020B331C ; =UNK_02106570 + str r0, [r3, #0x0] + str r4, [r2, #0x0] + strh r7, [r1, #0x0] + cmp r6, #0x0 + ble _020B32D0 + ldr r8, _020B3320 ; =UNK_021CE4F4 + mvn r7, #0x0 + mov r6, #0x10 +_020B32AC: + mov r0, r7 + mov r2, r6 + add r1, r8, #0x10 + bl MIi_CpuClearFast + ldrh r0, [r5, #0x0] + add r4, r4, #0x1 + add r8, r8, #0x20 + cmp r4, r0 + blt _020B32AC +_020B32D0: + ldr r4, _020B330C ; =UNK_021CDD60 + mov r0, #0x0 + ldr r3, _020B3324 ; =UNK_021CDD64 + ldr r1, _020B3328 ; =UNK_021CDDF4 + mov r2, #0x100 + strh r0, [r4, #0x0] + strh r0, [r3, #0x0] + bl MIi_CpuClearFast + ldr r1, _020B332C ; =0x04000444 + mov r2, #0x0 + ldr r0, _020B3330 ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + bl FUN_020B4178 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B330C: .word UNK_021CDD60 +_020B3310: .word UNK_021CDD6C +_020B3314: .word UNK_021CDD70 +_020B3318: .word 0x0000FFFE +_020B331C: .word UNK_02106570 +_020B3320: .word UNK_021CE4F4 +_020B3324: .word UNK_021CDD64 +_020B3328: .word UNK_021CDDF4 +_020B332C: .word 0x04000444 +_020B3330: .word 0x04000454 + arm_func_end FUN_020B326C + + ; NNS_G2dInitRenderSurface + arm_func_start FUN_020B3334 +FUN_020B3334: ; 0x020B3334 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r1, r4 + mov r0, #0x0 + mov r2, #0x48 + bl MIi_CpuClear16 + mov r0, #0x1 + str r0, [r4, #0x10] + mov r0, #0x3 + ldr r1, _020B3380 ; =FUN_020B3EE0 + str r0, [r4, #0x14] + ldr r0, _020B3384 ; =FUN_020B3E48 + str r1, [r4, #0x18] + ldr r1, _020B3388 ; =FUN_020B3C40 + str r0, [r4, #0x1c] + ldr r0, _020B338C ; =FUN_020B3B90 + str r1, [r4, #0x20] + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020B3380: .word FUN_020B3EE0 +_020B3384: .word FUN_020B3E48 +_020B3388: .word FUN_020B3C40 +_020B338C: .word FUN_020B3B90 + arm_func_end FUN_020B3334 + + ; _end + arm_func_start FUN_020B3390 +FUN_020B3390: ; 0x020B3390 + ldr r2, [r0, #0x70] + str r2, [r1, #0x30] + str r1, [r0, #0x70] + bx lr + arm_func_end FUN_020B3390 + + ; NNS_G2dInitRenderer + arm_func_start FUN_020B33A0 +FUN_020B33A0: ; 0x020B33A0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + bl FUN_020B504C + mov r7, #0x0 + str r7, [r4, #0x70] + str r7, [r4, #0x74] + str r7, [r4, #0x78] + str r7, [r4, #0x7c] + str r7, [r4, #0x80] + str r7, [r4, #0x84] + strh r7, [r4, #0x88] + strh r7, [r4, #0x8a] + str r7, [r4, #0x8c] + str r7, [r4, #0x90] + ldr r1, _020B3454 ; =UNK_021CDD70 + strh r7, [r4, #0x94] + ldr r2, _020B3458 ; =0x0000FFFE + ldr r0, _020B345C ; =UNK_02106570 + ldr r6, _020B3460 ; =UNK_021CE4F4 + str r7, [r1, #0x0] + strh r2, [r0, #0x0] + mvn r5, #0x0 + mov r4, #0x10 +_020B3400: + mov r0, r5 + mov r2, r4 + add r1, r6, #0x10 + bl MIi_CpuClearFast + add r7, r7, #0x1 + cmp r7, #0x20 + add r6, r6, #0x20 + blt _020B3400 + ldr ip, _020B3464 ; =UNK_021CDD60 + mov r0, #0x0 + ldr r3, _020B3468 ; =UNK_021CDD64 + ldr r1, _020B346C ; =UNK_021CDDF4 + mov r2, #0x100 + strh r0, [r12, #0x0] + strh r0, [r3, #0x0] + bl MIi_CpuClearFast + ldr r0, _020B3470 ; =UNK_021CDD68 + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B3454: .word UNK_021CDD70 +_020B3458: .word 0x0000FFFE +_020B345C: .word UNK_02106570 +_020B3460: .word UNK_021CE4F4 +_020B3464: .word UNK_021CDD60 +_020B3468: .word UNK_021CDD64 +_020B346C: .word UNK_021CDDF4 +_020B3470: .word UNK_021CDD68 + arm_func_end FUN_020B33A0 + + ; DrawNode_ + arm_func_start FUN_020B3474 +FUN_020B3474: ; 0x020B3474 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x8] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldr r4, [r5, #0x0] + bl FUN_020B2B58 + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x8 + beq _020B34E4 + ldr r0, _020B354C ; =UNK_021CDD6C + ldrsh r7, [r5, #0x1a] + ldr r0, [r0, #0x0] + ldrsh r6, [r5, #0x18] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B354C ; =UNK_021CDD6C + rsbne r6, r6, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r7, r7, #0x0 + mov r0, r6, lsl #0xc + mov r1, r7, lsl #0xc + mov r2, #0x0 + bl FUN_020B2A08 +_020B34E4: + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x4 + beq _020B3518 + ldrh r0, [r5, #0x1c] + ldr r2, _020B3550 ; =FX_SinCosTable_ + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl FUN_020B2794 +_020B3518: + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x2 + beq _020B3534 + ldr r0, [r5, #0x10] + ldr r1, [r5, #0x14] + mov r2, #0x1000 + bl FUN_020B28B4 +_020B3534: + mov r0, r4 + bl FUN_020B3554 + mov r0, #0x1 + bl FUN_020B2B08 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B354C: .word UNK_021CDD6C +_020B3550: .word FX_SinCosTable_ + arm_func_end FUN_020B3474 + + ; DrawCellAnimationImpl_ + arm_func_start FUN_020B3554 +FUN_020B3554: ; 0x020B3554 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrh r0, [r5, #0x4a] + ldr r4, [r5, #0x2c] + cmp r0, #0x0 + bne _020B35C0 + ldr r2, [r5, #0x34] + mvn r0, #0x0 + cmp r2, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B35B0 + ldr r1, _020B36B4 ; =UNK_02106574 + mov r0, r4 + str r2, [r1, #0x0] + bl FUN_020B36C0 + ldr r0, _020B36B4 ; =UNK_02106574 + mvn r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B35B0: + mov r0, r4 + bl FUN_020B36C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B35C0: + bl FUN_020B2B58 + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x8 + beq _020B3610 + ldr r0, _020B36B8 ; =UNK_021CDD6C + ldrsh r7, [r5, #0x46] + ldr r0, [r0, #0x0] + ldrsh r6, [r5, #0x44] + bl FUN_020B4F88 + cmp r0, #0x0 + ldr r0, _020B36B8 ; =UNK_021CDD6C + rsbne r6, r6, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + rsbne r7, r7, #0x0 + mov r0, r6, lsl #0xc + mov r1, r7, lsl #0xc + mov r2, #0x0 + bl FUN_020B2A08 +_020B3610: + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x4 + beq _020B3644 + ldrh r0, [r5, #0x48] + ldr r2, _020B36BC ; =FX_SinCosTable_ + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl FUN_020B2794 +_020B3644: + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x2 + beq _020B3660 + ldr r0, [r5, #0x3c] + ldr r1, [r5, #0x40] + mov r2, #0x1000 + bl FUN_020B28B4 +_020B3660: + ldr r2, [r5, #0x34] + mvn r0, #0x0 + cmp r2, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B369C + ldr r1, _020B36B4 ; =UNK_02106574 + mov r0, r4 + str r2, [r1, #0x0] + bl FUN_020B36C0 + ldr r0, _020B36B4 ; =UNK_02106574 + mvn r1, #0x0 + str r1, [r0, #0x0] + b _020B36A4 +_020B369C: + mov r0, r4 + bl FUN_020B36C0 +_020B36A4: + mov r0, #0x1 + bl FUN_020B2B08 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B36B4: .word UNK_02106574 +_020B36B8: .word UNK_021CDD6C +_020B36BC: .word FX_SinCosTable_ + arm_func_end FUN_020B3554 + + ; DrawCellImpl_ + arm_func_start FUN_020B36C0 +FUN_020B36C0: ; 0x020B36C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r5, _020B3B54 ; =UNK_021CDD6C + mov r10, r0 + ldr r0, [r5, #0x0] + ldr r1, [r0, #0x7c] + str r0, [sp, #0x0] + ldr r9, [r0, #0x70] + ands r0, r1, #0x2 + beq _020B38EC + ldr r0, [r9, #0x14] + cmp r0, #0x0 + beq _020B3840 + ldr r0, _020B3B58 ; =UNK_021CDD68 + mov r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B3720 + ldr r2, _020B3B5C ; =UNK_02106570 + ldr r0, _020B3B60 ; =0x0000FFFE + ldrh r2, [r2, #0x0] + cmp r2, r0 + movne r0, #0x1 + bne _020B3724 +_020B3720: + mov r0, #0x0 +_020B3724: + cmp r0, #0x0 + beq _020B37AC + ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldr r1, [r0, #0x404] + cmp r1, #0x0 + beq _020B3788 + ldrh r1, [r0, #0x0] + ldr r0, _020B3B68 ; =UNK_021CE8F8 + ldr r1, [r0, r1, lsl #0x2] + cmp r1, #0x0 + bne _020B37AC + bl FUN_020B4010 + ldr r0, _020B3B6C ; =UNK_021CDD70 + ldr r2, _020B3B70 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + ldr r1, _020B3B64 ; =UNK_021CE8F4 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0xd + ldrh r3, [r2, r0] + ldr r4, _020B3B74 ; =UNK_021CE4F4 + ldrh r2, [r1, #0x0] + ldr r0, _020B3B68 ; =UNK_021CE8F8 + add r1, r4, r3, lsl #0x5 + str r1, [r0, r2, lsl #0x2] + b _020B37AC +_020B3788: + bl FUN_020B4010 + ldr r0, _020B3B6C ; =UNK_021CDD70 + ldr r1, _020B3B70 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + ldr r2, _020B3B74 ; =UNK_021CE4F4 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0xd + ldrh r0, [r1, r0] + add r1, r2, r0, lsl #0x5 +_020B37AC: + ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3B6C ; =UNK_021CDD70 + ldreq r3, _020B3B78 ; =UNK_021CDEF4 + ldreq r2, [r0, #0x0] + moveq r0, #0x18 + mlaeq r0, r2, r0, r3 + beq _020B37FC + ldr r2, _020B3B6C ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r2, #0x0] + ldr r3, _020B3B7C ; =UNK_021CDF04 + mul r4, r2, r0 + ldr r2, _020B3B80 ; =UNK_021CDF08 + ldr r3, [r3, r4] + ldr r0, _020B3B84 ; =UNK_02106578 + ldr r2, [r2, r4] + str r3, [r0, #0x10] + str r2, [r0, #0x14] +_020B37FC: + bl FUN_020B4FAC + ldr r1, _020B3B88 ; =UNK_02106574 + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B3830 + mov r0, r10 + bl FUN_020B4BF4 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B3830: + mov r0, r10 + bl FUN_020B4CDC + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B3840: + ldr r0, _020B3B6C ; =UNK_021CDD70 + ldr r1, _020B3B8C ; =UNK_021CDD74 + ldr r2, [r0, #0x0] + ldr r0, [sp, #0x0] + ldr r1, [r1, r2, lsl #0x2] + bl FUN_020B4FA4 + ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3B6C ; =UNK_021CDD70 + ldreq r2, _020B3B78 ; =UNK_021CDEF4 + ldreq r1, [r0, #0x0] + moveq r0, #0x18 + mlaeq r0, r1, r0, r2 + beq _020B38A8 + ldr r1, _020B3B6C ; =UNK_021CDD70 + mov r0, #0x18 + ldr r1, [r1, #0x0] + ldr r2, _020B3B7C ; =UNK_021CDF04 + mul r3, r1, r0 + ldr r1, _020B3B80 ; =UNK_021CDF08 + ldr r2, [r2, r3] + ldr r0, _020B3B84 ; =UNK_02106578 + ldr r1, [r1, r3] + str r2, [r0, #0x10] + str r1, [r0, #0x14] +_020B38A8: + bl FUN_020B4FC4 + ldr r1, _020B3B88 ; =UNK_02106574 + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B38DC + mov r0, r10 + bl FUN_020B4BF4 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B38DC: + mov r0, r10 + bl FUN_020B4CDC + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B38EC: + cmp r9, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r11,pc} + ldr r4, _020B3B6C ; =UNK_021CDD70 + ldr fp, _020B3B78 ; =UNK_021CDEF4 + mov r7, #0x0 + mov r6, #0x1 +_020B3908: + ldr r0, [r9, #0x10] + cmp r0, #0x0 + beq _020B3B40 + ldr r0, [r9, #0x14] + cmp r0, #0x0 + beq _020B3A8C + ldr r8, [r5, #0x0] + mov r1, r9 + str r9, [r8, #0x74] + mov r0, r8 + bl FUN_020B4F9C + ldr r1, [r9, #0x28] + ldr r2, [r9, #0x2c] + mov r0, r8 + bl FUN_020B5034 + mov r0, r8 + bl FUN_020B4E0C + ldr r0, _020B3B58 ; =UNK_021CDD68 + mov r1, r7 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B3978 + ldr r0, _020B3B5C ; =UNK_02106570 + ldrh r2, [r0, #0x0] + ldr r0, _020B3B60 ; =0x0000FFFE + cmp r2, r0 + movne r0, r6 + bne _020B397C +_020B3978: + mov r0, r7 +_020B397C: + cmp r0, #0x0 + beq _020B3A04 + ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldr r0, [r0, #0x404] + cmp r0, #0x0 + beq _020B39E4 + ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldrh r1, [r0, #0x0] + add r0, r0, r1, lsl #0x2 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + bne _020B3A04 + bl FUN_020B4010 + ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldr r2, [r4, #0x0] + ldrh r1, [r0, #0x0] + mov r0, r2, lsl #0x10 + mov r2, r0, lsr #0xd + ldr r0, _020B3B70 ; =UNK_021CDDF4 + ldrh r3, [r0, r2] + ldr r0, _020B3B64 ; =UNK_021CE8F4 + add r2, r0, r1, lsl #0x2 + ldr r0, _020B3B74 ; =UNK_021CE4F4 + add r1, r0, r3, lsl #0x5 + str r1, [r2, #0x4] + b _020B3A04 +_020B39E4: + bl FUN_020B4010 + ldr r0, [r4, #0x0] + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0xd + ldr r0, _020B3B70 ; =UNK_021CDDF4 + ldrh r1, [r0, r1] + ldr r0, _020B3B74 ; =UNK_021CE4F4 + add r1, r0, r1, lsl #0x5 +_020B3A04: + ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r2, [r4, #0x0] + moveq r0, #0x18 + mlaeq r0, r2, r0, r11 + beq _020B3A44 + ldr r2, [r4, #0x0] + mov r0, #0x18 + mla r8, r2, r0, r11 + ldr r0, _020B3B84 ; =UNK_02106578 + ldr r3, [r8, #0x10] + mov r2, r0 + str r3, [r2, #0x10] + ldr r3, [r8, #0x14] + str r3, [r2, #0x14] +_020B3A44: + bl FUN_020B4FAC + ldr r0, _020B3B88 ; =UNK_02106574 + ldr r1, [r0, #0x0] + mvn r0, #0x0 + cmp r1, r0 + movne r0, r6 + moveq r0, r7 + cmp r0, #0x0 + beq _020B3A74 + mov r0, r10 + bl FUN_020B4BF4 + b _020B3A7C +_020B3A74: + mov r0, r10 + bl FUN_020B4CDC +_020B3A7C: + ldr r0, [r5, #0x0] + str r7, [r0, #0x74] + bl FUN_020B4DA0 + b _020B3B40 +_020B3A8C: + ldr r8, [r5, #0x0] + mov r1, r9 + mov r0, r8 + str r9, [r8, #0x74] + bl FUN_020B4F9C + mov r0, r8 + bl FUN_020B4E0C + ldr r2, [r4, #0x0] + ldr r1, _020B3B8C ; =UNK_021CDD74 + ldr r0, [sp, #0x0] + ldr r1, [r1, r2, lsl #0x2] + bl FUN_020B4FA4 + ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r1, [r4, #0x0] + moveq r0, #0x18 + mlaeq r0, r1, r0, r11 + beq _020B3AFC + ldr r1, [r4, #0x0] + mov r0, #0x18 + mla r3, r1, r0, r11 + ldr r0, _020B3B84 ; =UNK_02106578 + ldr r2, [r3, #0x10] + mov r1, r0 + str r2, [r1, #0x10] + ldr r2, [r3, #0x14] + str r2, [r1, #0x14] +_020B3AFC: + bl FUN_020B4FC4 + ldr r0, _020B3B88 ; =UNK_02106574 + ldr r1, [r0, #0x0] + mvn r0, #0x0 + cmp r1, r0 + movne r0, r6 + moveq r0, r7 + cmp r0, #0x0 + beq _020B3B2C + mov r0, r10 + bl FUN_020B4BF4 + b _020B3B34 +_020B3B2C: + mov r0, r10 + bl FUN_020B4CDC +_020B3B34: + ldr r0, [r5, #0x0] + str r7, [r0, #0x74] + bl FUN_020B4DA0 +_020B3B40: + ldr r9, [r9, #0x30] + cmp r9, #0x0 + bne _020B3908 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B3B54: .word UNK_021CDD6C +_020B3B58: .word UNK_021CDD68 +_020B3B5C: .word UNK_02106570 +_020B3B60: .word 0x0000FFFE +_020B3B64: .word UNK_021CE8F4 +_020B3B68: .word UNK_021CE8F8 +_020B3B6C: .word UNK_021CDD70 +_020B3B70: .word UNK_021CDDF4 +_020B3B74: .word UNK_021CE4F4 +_020B3B78: .word UNK_021CDEF4 +_020B3B7C: .word UNK_021CDF04 +_020B3B80: .word UNK_021CDF08 +_020B3B84: .word UNK_02106578 +_020B3B88: .word UNK_02106574 +_020B3B8C: .word UNK_021CDD74 + arm_func_end FUN_020B36C0 + + ; RndCoreCBFuncAfterOBJ_ + arm_func_start FUN_020B3B90 +FUN_020B3B90: ; 0x020B3B90 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + ldr r0, _020B3C24 ; =UNK_021CDD6C + mov r12, r1 + ldr r0, [r0, #0x0] + mov r3, r2 + ldr r1, [r0, #0x74] + ldr r2, [r1, #0x44] + cmp r2, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,pc} + ldr r2, _020B3C28 ; =UNK_021CDD68 + ldr r2, [r2, #0x0] + cmp r2, #0x0 + ldreq r2, _020B3C2C ; =UNK_021CDD70 + ldreq r4, _020B3C30 ; =UNK_021CDEF4 + ldreq lr, [r2, #0x0] + moveq r2, #0x18 + mlaeq r6, lr, r2, r4 + beq _020B3C0C + ldr lr, _020B3C2C ; =UNK_021CDD70 + mov r2, #0x18 + ldr lr, [lr, #0x0] + ldr r4, _020B3C34 ; =UNK_021CDF04 + mul r5, lr, r2 + ldr r2, _020B3C38 ; =UNK_021CDF08 + ldr r4, [r4, r5] + ldr r6, _020B3C3C ; =UNK_02106578 + ldr r2, [r2, r5] + str r4, [r6, #0x10] + str r2, [r6, #0x14] +_020B3C0C: + str r6, [sp, #0x0] + ldr lr, [r1, #0x44] + mov r2, r12 + blx lr + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3C24: .word UNK_021CDD6C +_020B3C28: .word UNK_021CDD68 +_020B3C2C: .word UNK_021CDD70 +_020B3C30: .word UNK_021CDEF4 +_020B3C34: .word UNK_021CDF04 +_020B3C38: .word UNK_021CDF08 +_020B3C3C: .word UNK_02106578 + arm_func_end FUN_020B3B90 + + ; RndCoreCBFuncBeforeOBJ_ + arm_func_start FUN_020B3C40 +FUN_020B3C40: ; 0x020B3C40 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + ldr r3, _020B3E2C ; =UNK_021CDD6C + add r4, r0, #0x38 + ldr r0, [r3, #0x0] + mov r6, r1 + mov r5, r2 + bl FUN_020B278C + cmp r0, #0x0 + beq _020B3C90 + ldrh r1, [r4, #0x4] + and r1, r1, #0xf000 + mov r1, r1, lsl #0x4 + mov r1, r1, lsr #0x10 + bl FUN_020B10B0 + ldr r1, [r4, #0x4] + and r0, r0, #0xf + bic r1, r1, #0xf000 + orr r0, r1, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3C90: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + cmp r0, #0x0 + beq _020B3DA4 + ldr r0, [r1, #0x84] + ands r0, r0, #0x1 + beq _020B3CC8 + ldrh r0, [r1, #0x88] + ldr r1, [r4, #0x4] + bic r1, r1, #0xc00 + and r0, r0, #0x3 + orr r0, r1, r0, lsl #0xa + str r0, [r4, #0x4] +_020B3CC8: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x2 + beq _020B3CF4 + ldrh r0, [r1, #0x8a] + ldr r1, [r4, #0x4] + bic r1, r1, #0xf000 + and r0, r0, #0xf + orr r0, r1, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3CF4: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x10 + beq _020B3D2C + ldr r2, [r4, #0x4] + ldrh r0, [r1, #0x94] + mov r1, r2, lsl #0x10 + bic r2, r2, #0xf000 + add r0, r0, r1, lsr #0x1c + and r0, r0, #0xf + and r0, r0, #0xf + orr r0, r2, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3D2C: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x4 + beq _020B3D60 + ldr r0, [r1, #0x90] + cmp r0, #0x0 + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x1000 + strne r0, [r4, #0x0] + ldreq r0, [r4, #0x0] + biceq r0, r0, #0x1000 + streq r0, [r4, #0x0] +_020B3D60: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x8 + beq _020B3DA4 + ldr r0, [r4, #0x0] + ldrh r2, [r4, #0x4] + ldr r1, [r1, #0x8c] + bic r0, r0, #0xc00 + orr r0, r0, r1, lsl #0xa + str r0, [r4, #0x0] + ldrh r0, [r4, #0x4] + and r1, r2, #0xf000 + mov r1, r1, asr #0xc + bic r0, r0, #0xf000 + orr r0, r0, r1, lsl #0xc + strh r0, [r4, #0x4] +_020B3DA4: + ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x74] + ldr r2, [r1, #0x40] + cmp r2, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,pc} + ldr r2, _020B3E30 ; =UNK_021CDD68 + ldr r2, [r2, #0x0] + cmp r2, #0x0 + ldreq r2, _020B3E34 ; =UNK_021CDD70 + ldreq r4, _020B3E38 ; =UNK_021CDEF4 + ldreq r3, [r2, #0x0] + moveq r2, #0x18 + mlaeq r4, r3, r2, r4 + beq _020B3E10 + ldr r3, _020B3E34 ; =UNK_021CDD70 + mov r2, #0x18 + ldr r4, [r3, #0x0] + ldr r3, _020B3E3C ; =UNK_021CDF04 + mul r12, r4, r2 + ldr r2, _020B3E40 ; =UNK_021CDF08 + ldr r3, [r3, r12] + ldr r4, _020B3E44 ; =UNK_02106578 + ldr r2, [r2, r12] + str r3, [r4, #0x10] + str r2, [r4, #0x14] +_020B3E10: + str r4, [sp, #0x0] + ldr r4, [r1, #0x40] + mov r2, r6 + mov r3, r5 + blx r4 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3E2C: .word UNK_021CDD6C +_020B3E30: .word UNK_021CDD68 +_020B3E34: .word UNK_021CDD70 +_020B3E38: .word UNK_021CDEF4 +_020B3E3C: .word UNK_021CDF04 +_020B3E40: .word UNK_021CDF08 +_020B3E44: .word UNK_02106578 + arm_func_end FUN_020B3C40 + + ; RndCoreCBFuncAfterCell_ + arm_func_start FUN_020B3E48 +FUN_020B3E48: ; 0x020B3E48 + stmdb sp!, {r4,lr} + ldr r0, _020B3EC4 ; =UNK_021CDD6C + mov r2, r1 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x74] + ldr r3, [r1, #0x3c] + cmp r3, #0x0 + ldmeqia sp!, {r4,pc} + ldr r3, _020B3EC8 ; =UNK_021CDD68 + ldr r3, [r3, #0x0] + cmp r3, #0x0 + ldreq r3, _020B3ECC ; =UNK_021CDD70 + ldreq lr, _020B3ED0 ; =UNK_021CDEF4 + ldreq r12, [r3, #0x0] + moveq r3, #0x18 + mlaeq r3, r12, r3, lr + beq _020B3EB8 + ldr ip, _020B3ECC ; =UNK_021CDD70 + mov r3, #0x18 + ldr r12, [r12, #0x0] + ldr lr, _020B3ED4 ; =UNK_021CDF04 + mul r4, r12, r3 + ldr ip, _020B3ED8 ; =UNK_021CDF08 + ldr lr, [lr, r4] + ldr r3, _020B3EDC ; =UNK_02106578 + ldr r12, [r12, r4] + str lr, [r3, #0x10] + str r12, [r3, #0x14] +_020B3EB8: + ldr r12, [r1, #0x3c] + blx r12 + ldmia sp!, {r4,pc} + .balign 4 +_020B3EC4: .word UNK_021CDD6C +_020B3EC8: .word UNK_021CDD68 +_020B3ECC: .word UNK_021CDD70 +_020B3ED0: .word UNK_021CDEF4 +_020B3ED4: .word UNK_021CDF04 +_020B3ED8: .word UNK_021CDF08 +_020B3EDC: .word UNK_02106578 + arm_func_end FUN_020B3E48 + + ; RndCoreCBFuncBeforeCell_ + arm_func_start FUN_020B3EE0 +FUN_020B3EE0: ; 0x020B3EE0 + stmdb sp!, {r4-r6,lr} + ldr r2, _020B3FF4 ; =UNK_021CDD6C + mov r6, r0 + ldr r0, [r2, #0x0] + mov r5, r1 + ldr r4, [r0, #0x74] + ldr r0, [r4, #0x34] + cmp r0, #0x0 + beq _020B3F7C + ldr r0, _020B3FF8 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3FFC ; =UNK_021CDD70 + ldreq r1, _020B4000 ; =UNK_021CDEF4 + ldreq r2, [r0, #0x0] + moveq r0, #0x18 + mlaeq r1, r2, r0, r1 + beq _020B3F54 + ldr r1, _020B3FFC ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r1, _020B4004 ; =UNK_021CDF04 + mul r3, r2, r0 + ldr r0, _020B4008 ; =UNK_021CDF08 + ldr r2, [r1, r3] + ldr r1, _020B400C ; =UNK_02106578 + ldr r0, [r0, r3] + str r2, [r1, #0x10] + str r0, [r1, #0x14] +_020B3F54: + ldr r3, [r4, #0x34] + mov r0, r5 + mov r2, r4 + blx r3 + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r6, #0x30] + ldmeqia sp!, {r4-r6,pc} + mov r0, #0x1 + str r0, [r6, #0x30] +_020B3F7C: + ldr r0, [r4, #0x38] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r0, _020B3FF8 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3FFC ; =UNK_021CDD70 + ldreq r2, _020B4000 ; =UNK_021CDEF4 + ldreq r1, [r0, #0x0] + moveq r0, #0x18 + mlaeq r3, r1, r0, r2 + beq _020B3FD8 + ldr r1, _020B3FFC ; =UNK_021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r1, _020B4004 ; =UNK_021CDF04 + mul r6, r2, r0 + ldr r0, _020B4008 ; =UNK_021CDF08 + ldr r1, [r1, r6] + ldr r3, _020B400C ; =UNK_02106578 + ldr r0, [r0, r6] + str r1, [r3, #0x10] + str r0, [r3, #0x14] +_020B3FD8: + ldr r0, _020B3FF4 ; =UNK_021CDD6C + ldr r6, [r4, #0x38] + ldr r0, [r0, #0x0] + mov r1, r4 + mov r2, r5 + blx r6 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3FF4: .word UNK_021CDD6C +_020B3FF8: .word UNK_021CDD68 +_020B3FFC: .word UNK_021CDD70 +_020B4000: .word UNK_021CDEF4 +_020B4004: .word UNK_021CDF04 +_020B4008: .word UNK_021CDF08 +_020B400C: .word UNK_02106578 + arm_func_end FUN_020B3EE0 + + ; NNSi_G2dMCMStoreCurrentMtxToMtxCache + arm_func_start FUN_020B4010 +FUN_020B4010: ; 0x020B4010 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020B4154 ; =UNK_021CDD70 + ldr r1, _020B4158 ; =UNK_021CDDF4 + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r0, lsl #0x10 + add r3, r1, r0, lsr #0xd + ldrh r0, [r3, #0x4] + cmp r0, #0x1 + beq _020B4044 + cmp r0, #0x2 + movne r2, #0x0 +_020B4044: + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, _020B415C ; =UNK_021CDD60 + mov r2, #0x10 + ldrh r4, [r0, #0x0] + cmp r4, #0x1f + addcc r1, r4, #0x1 + strcch r1, [r0, #0x0] + ldr r0, _020B4160 ; =UNK_021CE4F4 + ldrh r5, [r3, #0x2] + add r0, r0, r4, lsl #0x5 + add r1, r0, #0x10 + mvn r0, #0x0 + strh r4, [r3, #0x0] + bl MIi_CpuClearFast + ldr r0, _020B4154 ; =UNK_021CDD70 + ldr r1, _020B4164 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + ldr r2, [r1, #0x0] + mov r1, r0, lsl #0x10 + cmp r2, #0x0 + ldr r3, _020B4158 ; =UNK_021CDDF4 + mov r1, r1, lsr #0xd + ldrh r1, [r3, r1] + ldr r3, _020B4160 ; =UNK_021CE4F4 + moveq r2, #0x18 + add r1, r3, r1, lsl #0x5 + ldreq r3, _020B4168 ; =UNK_021CE1F4 + mlaeq r12, r0, r2, r3 + beq _020B40E4 + mov r2, #0x18 + mul r3, r0, r2 + ldr r2, _020B416C ; =UNK_021CDF04 + ldr r0, _020B4170 ; =UNK_021CDF08 + ldr r2, [r2, r3] + ldr ip, _020B4174 ; =UNK_02106578 + ldr r0, [r0, r3] + str r2, [r12, #0x10] + str r0, [r12, #0x14] +_020B40E4: + ldr r2, [r12, #0x0] + ldr r0, _020B4154 ; =UNK_021CDD70 + str r2, [r1, #0x0] + ldr r2, [r12, #0x4] + str r2, [r1, #0x4] + ldr r2, [r12, #0x8] + str r2, [r1, #0x8] + ldr r2, [r12, #0xc] + str r2, [r1, #0xc] + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + movs lr, r0, lsr #0x10 + addmi sp, sp, #0x4 + ldmmiia sp!, {r4-r5,pc} + ldr r3, _020B4158 ; =UNK_021CDDF4 + mov r0, #0x3 +_020B4124: + add r2, r3, lr, lsl #0x3 + ldrh r1, [r2, #0x2] + mov r12, lr, lsl #0x3 + cmp r5, r1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + strh r0, [r2, #0x4] + strh r4, [r3, r12] + subs lr, lr, #0x1 + bpl _020B4124 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4154: .word UNK_021CDD70 +_020B4158: .word UNK_021CDDF4 +_020B415C: .word UNK_021CDD60 +_020B4160: .word UNK_021CE4F4 +_020B4164: .word UNK_021CDD68 +_020B4168: .word UNK_021CE1F4 +_020B416C: .word UNK_021CDF04 +_020B4170: .word UNK_021CDF08 +_020B4174: .word UNK_02106578 + arm_func_end FUN_020B4010 + + ; NNSi_G2dIdentity + arm_func_start FUN_020B4178 +FUN_020B4178: ; 0x020B4178 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020B4220 ; =UNK_021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B41B8 + ldr r1, _020B4224 ; =UNK_021CDD70 + mov r0, #0x18 + ldr r12, [r1, #0x0] + ldr r1, _020B4228 ; =UNK_021CDF04 + mul r3, r12, r0 + mov r2, #0x0 + ldr r0, _020B422C ; =UNK_021CDF08 + str r2, [r1, r3] + str r2, [r0, r3] + b _020B420C +_020B41B8: + ldr r0, _020B4224 ; =UNK_021CDD70 + mov lr, #0x18 + ldr r1, [r0, #0x0] + ldr r4, _020B4230 ; =UNK_021CDEF4 + mul r3, r1, lr + mov r2, #0x1000 + str r2, [r4, r3] + add r5, r4, r3 + mov r1, #0x0 + str r1, [r5, #0x4] + str r1, [r5, #0x8] + str r2, [r5, #0xc] + str r1, [r5, #0x10] + str r1, [r5, #0x14] + ldr r12, [r0, #0x0] + ldr r4, _020B4234 ; =UNK_021CE1F4 + ldmia r5!, {r0-r3} + mla lr, r12, lr, r4 + stmia lr!, {r0-r3} + ldmia r5, {r0-r1} + stmia lr, {r0-r1} +_020B420C: + ldr r0, _020B4238 ; =UNK_021CDD74 + mov r1, #0x0 + str r1, [r0, r12, lsl #0x2] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4220: .word UNK_021CDD68 +_020B4224: .word UNK_021CDD70 +_020B4228: .word UNK_021CDF04 +_020B422C: .word UNK_021CDF08 +_020B4230: .word UNK_021CDEF4 +_020B4234: .word UNK_021CE1F4 +_020B4238: .word UNK_021CDD74 + arm_func_end FUN_020B4178 + diff --git a/arm9/asm/NNS_G2D_g2d_renderercor.s b/arm9/asm/NNS_G2D_g2d_renderercor.s new file mode 100644 index 00000000..e1c3be6e --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_renderercor.s @@ -0,0 +1,1117 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + ; mtxIdentity_ + .global UNK_020FF958 +UNK_020FF958: ; 0x020FF958 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; static const in function + .section .bss + + ; pTheInstance_ + .global UNK_021CED14 +UNK_021CED14: ; 0x021CED14 + .space 0x4 + + .section .text + + ; NNS_G2dRndCoreDrawCellVramTransfer + arm_func_start FUN_020B4BF4 +FUN_020B4BF4: ; 0x020B4BF4 + stmdb sp!, {r4-r6,lr} + ldr r2, _020B4CD8 ; =UNK_021CED14 + mov r6, r0 + ldr r3, [r2, #0x0] + mov r4, r1 + ldr r5, [r3, #0x0] + ldr r0, [r5, #0x10] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r0, #0x1 + str r0, [r3, #0x30] + ldr r3, [r5, #0x18] + cmp r3, #0x0 + beq _020B4C38 + ldr r0, [r2, #0x0] + mov r1, r6 + blx r3 +_020B4C38: + ldr r0, _020B4CD8 ; =UNK_021CED14 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B4CB8 + mvn r0, #0x0 + cmp r4, r0 + beq _020B4C7C + mov r0, r4 + ldr r4, [r5, #0x14] + bl FUN_020B469C + mov r3, #0x1 + mvn r1, r3, lsl r4 + ldr r2, [r0, #0x20] + and r1, r2, r1 + orr r1, r1, r3, lsl r4 + str r1, [r0, #0x20] +_020B4C7C: + ldr r0, [r5, #0x14] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B4CB8 + ; Jump table + b _020B4C9C ; case 0 + b _020B4CAC ; case 1 + b _020B4CAC ; case 2 + b _020B4CB8 ; case 3 +_020B4C9C: + mov r0, r5 + mov r1, r6 + bl FUN_020B5090 + b _020B4CB8 +_020B4CAC: + mov r0, r5 + mov r1, r6 + bl FUN_020B53B4 +_020B4CB8: + ldr r2, [r5, #0x1c] + cmp r2, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r0, _020B4CD8 ; =UNK_021CED14 + mov r1, r6 + ldr r0, [r0, #0x0] + blx r2 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B4CD8: .word UNK_021CED14 + arm_func_end FUN_020B4BF4 + + ; NNS_G2dRndCoreDrawCell + arm_func_start FUN_020B4CDC +FUN_020B4CDC: ; 0x020B4CDC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _020B4D9C ; =UNK_021CED14 + mov r5, r0 + ldr r2, [r1, #0x0] + ldr r4, [r2, #0x0] + ldr r0, [r4, #0x10] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r0, #0x1 + str r0, [r2, #0x30] + ldr r2, [r4, #0x18] + cmp r2, #0x0 + beq _020B4D24 + ldr r0, [r1, #0x0] + mov r1, r5 + blx r2 +_020B4D24: + ldr r0, _020B4D9C ; =UNK_021CED14 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B4D74 + ldr r0, [r4, #0x14] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B4D74 + ; Jump table + b _020B4D58 ; case 0 + b _020B4D68 ; case 1 + b _020B4D68 ; case 2 + b _020B4D74 ; case 3 +_020B4D58: + mov r0, r4 + mov r1, r5 + bl FUN_020B5090 + b _020B4D74 +_020B4D68: + mov r0, r4 + mov r1, r5 + bl FUN_020B53B4 +_020B4D74: + ldr r2, [r4, #0x1c] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, _020B4D9C ; =UNK_021CED14 + mov r1, r5 + ldr r0, [r0, #0x0] + blx r2 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4D9C: .word UNK_021CED14 + arm_func_end FUN_020B4CDC + + ; NNS_G2dRndCoreEndRendering + arm_func_start FUN_020B4DA0 +FUN_020B4DA0: ; 0x020B4DA0 + ldr r0, _020B4E00 ; =UNK_021CED14 + ldr r3, [r0, #0x0] + ldr r1, [r3, #0x0] + ldr r1, [r1, #0x14] + cmp r1, #0x0 + bne _020B4DD8 + ldr r2, _020B4E04 ; =0x04000440 + mov r1, #0x0 + ldr r0, _020B4E08 ; =0x04000448 + str r1, [r2, #0x0] + mov r1, #0x1 + str r1, [r0, #0x0] + str r1, [r2, #0x0] + b _020B4DF0 +_020B4DD8: + mov r2, #0x0 + str r2, [r3, #0x10] + ldr r1, [r0, #0x0] + str r2, [r1, #0x2c] + ldr r0, [r0, #0x0] + str r2, [r0, #0x28] +_020B4DF0: + ldr r0, _020B4E00 ; =UNK_021CED14 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020B4E00: .word UNK_021CED14 +_020B4E04: .word 0x04000440 +_020B4E08: .word 0x04000448 + arm_func_end FUN_020B4DA0 + + ; NNS_G2dRndCoreBeginRendering + arm_func_start FUN_020B4E0C +FUN_020B4E0C: ; 0x020B4E0C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r2, _020B4F28 ; =UNK_021CED14 + mov r4, r0 + str r4, [r2, #0x0] + ldr r0, [r4, #0x0] + ldr r5, [r0, #0x14] + cmp r5, #0x0 + bne _020B4ED8 + ldr lr, _020B4F2C ; =0x04000440 + mov r1, #0x0 + ldr r0, _020B4F30 ; =0x04000444 + str r1, [lr, #0x0] + str r1, [r0, #0x0] + ldr r12, [r4, #0x0] + ldr r0, _020B4F34 ; =0x04000470 + ldr r3, [r12, #0x0] + ldr r12, [r12, #0x4] + rsb r3, r3, #0x0 + str r3, [r0, #0x0] + rsb r3, r12, #0x0 + str r3, [r0, #0x0] + str r1, [r0, #0x0] + mov r0, #0x1 + str r0, [lr, #0x0] + ldr r0, [r2, #0x0] + ldr r5, [r0, #0x8] + mov r0, r5 + bl FUN_020B19FC + cmp r0, #0x0 + moveq r0, #0x0 + beq _020B4E98 + mov r0, r5 + mov r1, #0x0 + bl FUN_020B1A14 +_020B4E98: + ldr r1, _020B4F28 ; =UNK_021CED14 + str r0, [r4, #0x14] + ldr r0, [r1, #0x0] + mov r1, #0x0 + ldr r5, [r0, #0xc] + mov r0, r5 + bl FUN_020B19A8 + cmp r0, #0x0 + moveq r0, #0x0 + beq _020B4ECC + mov r0, r5 + mov r1, #0x0 + bl FUN_020B19C4 +_020B4ECC: + add sp, sp, #0x4 + str r0, [r4, #0x18] + ldmia sp!, {r4-r5,pc} +_020B4ED8: + ldr r4, [r4, #0x8] + mov r1, r5 + mov r0, r4 + bl FUN_020B19FC + cmp r0, #0x0 + moveq r1, #0x0 + beq _020B4F14 + mov r0, r4 + mov r1, r5 + bl FUN_020B1A14 + ldr r1, [r4, #0x20] + and r1, r1, #0x700000 + mov r1, r1, asr #0x14 + add r1, r1, #0x5 + mov r1, r0, lsr r1 +_020B4F14: + ldr r0, _020B4F28 ; =UNK_021CED14 + ldr r0, [r0, #0x0] + str r1, [r0, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4F28: .word UNK_021CED14 +_020B4F2C: .word 0x04000440 +_020B4F30: .word 0x04000444 +_020B4F34: .word 0x04000470 + arm_func_end FUN_020B4E0C + + ; _end + arm_func_start FUN_020B4F38 +FUN_020B4F38: ; 0x020B4F38 + cmp r1, #0x0 + ldrne r1, [r0, #0x24] + orrne r1, r1, #0x1 + strne r1, [r0, #0x24] + ldreq r1, [r0, #0x24] + biceq r1, r1, #0x1 + streq r1, [r0, #0x24] + cmp r2, #0x0 + ldrne r1, [r0, #0x24] + orrne r1, r1, #0x2 + strne r1, [r0, #0x24] + ldreq r1, [r0, #0x24] + biceq r1, r1, #0x2 + streq r1, [r0, #0x24] + bx lr + arm_func_end FUN_020B4F38 + + ; _end + arm_func_start FUN_020B4F74 +FUN_020B4F74: ; 0x020B4F74 + ldr r0, [r0, #0x24] + ands r0, r0, #0x2 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + arm_func_end FUN_020B4F74 + + ; _end + arm_func_start FUN_020B4F88 +FUN_020B4F88: ; 0x020B4F88 + ldr r0, [r0, #0x24] + ands r0, r0, #0x1 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + arm_func_end FUN_020B4F88 + + ; _end + arm_func_start FUN_020B4F9C +FUN_020B4F9C: ; 0x020B4F9C + str r1, [r0, #0x0] + bx lr + arm_func_end FUN_020B4F9C + + ; _end + arm_func_start FUN_020B4FA4 +FUN_020B4FA4: ; 0x020B4FA4 + str r1, [r0, #0x34] + bx lr + arm_func_end FUN_020B4FA4 + + ; NNS_G2dSetRndCoreCurrentMtx2D + arm_func_start FUN_020B4FAC +FUN_020B4FAC: ; 0x020B4FAC + ldr r2, _020B4FC0 ; =UNK_021CED14 + ldr r2, [r2, #0x0] + str r0, [r2, #0x2c] + str r1, [r2, #0x28] + bx lr + .balign 4 +_020B4FC0: .word UNK_021CED14 + arm_func_end FUN_020B4FAC + + ; NNS_G2dSetRndCoreCurrentMtx3D + arm_func_start FUN_020B4FC4 +FUN_020B4FC4: ; 0x020B4FC4 + ldr r1, _020B5028 ; =UNK_021CED14 + mov r3, #0x0 + ldr r12, [r1, #0x0] + mov r1, #0x1000 + str r0, [r12, #0x2c] + ldr r2, [r0, #0x0] + str r2, [r12, #0x40] + ldr r2, [r0, #0x4] + str r2, [r12, #0x44] + str r3, [r12, #0x48] + ldr r2, [r0, #0x8] + str r2, [r12, #0x4c] + ldr r2, [r0, #0xc] + str r2, [r12, #0x50] + str r3, [r12, #0x54] + str r3, [r12, #0x58] + str r3, [r12, #0x5c] + str r1, [r12, #0x60] + ldr r1, [r0, #0x10] + str r1, [r12, #0x64] + ldr r0, [r0, #0x14] + str r0, [r12, #0x68] + ldr r0, [r12, #0x34] + str r0, [r12, #0x6c] + bx lr + .balign 4 +_020B5028: .word UNK_021CED14 + arm_func_end FUN_020B4FC4 + + ; _end + arm_func_start FUN_020B502C +FUN_020B502C: ; 0x020B502C + str r1, [r0, #0x4] + bx lr + arm_func_end FUN_020B502C + + ; _end + arm_func_start FUN_020B5034 +FUN_020B5034: ; 0x020B5034 + str r1, [r0, #0x1c] + str r2, [r0, #0x20] + bx lr + arm_func_end FUN_020B5034 + + ; _end + arm_func_start FUN_020B5040 +FUN_020B5040: ; 0x020B5040 + str r1, [r0, #0x8] + str r2, [r0, #0xc] + bx lr + arm_func_end FUN_020B5040 + + ; _end + arm_func_start FUN_020B504C +FUN_020B504C: ; 0x020B504C + stmdb sp!, {r4,lr} + mov r4, r0 + mov r1, r4 + mov r0, #0x0 + mov r2, #0x70 + bl MIi_CpuClear16 + mov r1, #0x0 + str r1, [r4, #0x0] + mov r0, #0x2 + str r0, [r4, #0x4] + str r1, [r4, #0x8] + str r1, [r4, #0xc] + str r1, [r4, #0x24] + mov r0, #0x1 + str r0, [r4, #0x30] + str r1, [r4, #0x28] + ldmia sp!, {r4,pc} + arm_func_end FUN_020B504C + + ; DrawCellToSurface3D_ + arm_func_start FUN_020B5090 +FUN_020B5090: ; 0x020B5090 + stmdb sp!, {r4-r10,lr} + ldr r5, _020B5158 ; =UNK_021CED14 + mov r9, r1 + ldrh r1, [r9, #0x0] + ldr r2, [r5, #0x0] + mov r10, r0 + add r7, r2, #0x38 + mov r8, #0x0 + cmp r1, #0x0 + ldmlsia sp!, {r4-r10,pc} + mov r6, #0x1 + mov r4, #0x6 +_020B50C0: + mul r1, r8, r4 + ldr r0, [r5, #0x0] + str r6, [r0, #0x30] + ldr r2, [r9, #0x4] + ldrh r0, [r2, r1] + add r1, r2, r1 + strh r0, [r7, #0x0] + ldrh r0, [r1, #0x2] + strh r0, [r7, #0x2] + ldrh r0, [r1, #0x4] + strh r0, [r7, #0x4] + ldr r3, [r10, #0x20] + cmp r3, #0x0 + beq _020B5108 + ldr r0, [r5, #0x0] + mov r1, r9 + mov r2, r8 + blx r3 +_020B5108: + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B5120 + mov r0, r7 + bl FUN_020B515C +_020B5120: + ldr r3, [r10, #0x24] + cmp r3, #0x0 + beq _020B513C + ldr r0, [r5, #0x0] + mov r1, r9 + mov r2, r8 + blx r3 +_020B513C: + add r0, r8, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r9, #0x0] + mov r8, r0, lsr #0x10 + cmp r8, r1 + blo _020B50C0 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B5158: .word UNK_021CED14 + arm_func_end FUN_020B5090 + + ; DrawOamToSurface3D_ + arm_func_start FUN_020B515C +FUN_020B515C: ; 0x020B515C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + ldr r1, _020B53A4 ; =UNK_021CED14 + mov r7, r0 + ldr r0, [r1, #0x0] + add r0, r0, #0x40 + bl G3_LoadMtx43 + ldr r0, _020B53A4 ; =UNK_021CED14 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x24] + cmp r1, #0x0 + beq _020B533C + ldr r2, [r7, #0x0] + ldr r1, _020B53A8 ; =0xC000C000 + and r4, r2, r1 + bl FUN_020B4F88 + cmp r0, #0x0 + beq _020B51F4 + ldr r0, [r7, #0x0] + and r2, r4, #0xc000 + mov r0, r0, lsl #0x7 + mov r3, r0, lsr #0x17 + and r1, r4, #0xc0000000 + mov r1, r1, lsr #0x1e + ldr r0, _020B53AC ; =UNK_020FF8AC + mov r2, r2, asr #0xe + mov r1, r1, lsl #0x1 + add r0, r0, r2, lsl #0x3 + cmp r3, #0xff + ldrh r1, [r1, r0] + orrgt r0, r3, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r3, r0, asr #0x10 + add r0, r3, r1 + rsb r0, r0, #0x0 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + b _020B5218 +_020B51F4: + ldr r0, [r7, #0x0] + mov r0, r0, lsl #0x7 + mov r0, r0, lsr #0x17 + cmp r0, #0xff + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 +_020B5218: + ldr r0, _020B53A4 ; =UNK_021CED14 + mov r1, r1, lsl #0x10 + ldr r0, [r0, #0x0] + mov r6, r1, asr #0x10 + bl FUN_020B4F74 + cmp r0, #0x0 + beq _020B527C + and r1, r4, #0xc000 + and r0, r4, #0xc0000000 + ldrb r4, [r7, #0x0] + ldr r2, _020B53B0 ; =UNK_020FF894 + mov r0, r0, lsr #0x1e + mov r3, r1, asr #0xe + mov r1, r0, lsl #0x1 + add r0, r2, r3, lsl #0x3 + cmp r4, #0x7f + ldrh r1, [r1, r0] + orrgt r0, r4, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r4, r0, asr #0x10 + add r0, r4, r1 + rsb r0, r0, #0x0 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + b _020B5298 +_020B527C: + ldrb r0, [r7, #0x0] + cmp r0, #0x7f + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 +_020B5298: + ldr r0, _020B53A4 ; =UNK_021CED14 + ldr r1, [r7, #0x0] + ldr r0, [r0, #0x0] + mov r5, r1, lsl #0x3 + bl FUN_020B4F88 + ldr r2, [r7, #0x0] + ldr r1, _020B53A4 ; =UNK_021CED14 + eor r5, r0, r5, lsr #0x1f + ldr r0, [r1, #0x0] + mov r8, r2, lsl #0x2 + bl FUN_020B4F74 + ldr r2, [r7, #0x0] + eor r1, r0, r8, lsr #0x1f + bic r0, r2, #0x10000000 + str r0, [r7, #0x0] + ldr r2, [r7, #0x0] + ldr r3, _020B53A4 ; =UNK_021CED14 + orr r2, r2, r5, lsl #0x1c + str r2, [r7, #0x0] + ldr r2, [r7, #0x0] + mov r0, r6 + bic r2, r2, #0x20000000 + str r2, [r7, #0x0] + ldr r5, [r7, #0x0] + mov r2, r4, lsl #0x10 + orr r1, r5, r1, lsl #0x1d + str r1, [r7, #0x0] + ldr r5, [r3, #0x0] + mov r1, r2, asr #0x10 + ldr r4, [r5, #0x8] + mov r3, r7 + add r2, r4, #0xc + str r2, [sp, #0x0] + ldr r4, [r5, #0x14] + mvn r2, #0x0 + str r4, [sp, #0x4] + ldr r4, [r5, #0x18] + str r4, [sp, #0x8] + bl FUN_020B46B4 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} +_020B533C: + ldr r2, _020B53A4 ; =UNK_021CED14 + ldr r0, [r7, #0x0] + ldr r5, [r2, #0x0] + mov r0, r0, lsl #0x7 + ldr r4, [r5, #0x8] + mov r0, r0, lsr #0x17 + cmp r0, #0xff + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + ldrb r1, [r7, #0x0] + add r4, r4, #0xc + movgt r0, r0, asr #0x10 + str r4, [sp, #0x0] + ldr r4, [r5, #0x14] + cmp r1, #0x7f + orrgt r1, r1, #0xff00 + movgt r1, r1, lsl #0x10 + str r4, [sp, #0x4] + ldr r4, [r5, #0x18] + movgt r1, r1, asr #0x10 + mov r3, r7 + mvn r2, #0x0 + str r4, [sp, #0x8] + bl FUN_020B46B4 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B53A4: .word UNK_021CED14 +_020B53A8: .word 0xC000C000 +_020B53AC: .word UNK_020FF8AC +_020B53B0: .word UNK_020FF894 + arm_func_end FUN_020B515C + + ; DrawCellToSurface2D_ + arm_func_start FUN_020B53B4 +FUN_020B53B4: ; 0x020B53B4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x44 + ldr r2, _020B57B0 ; =UNK_021CED14 + mov r10, r0 + ldr r0, [r2, #0x0] + mov r11, r1 + ldr r9, [r0, #0x2c] + ldr r1, _020B57B0 ; =UNK_021CED14 + cmp r9, #0x0 + ldreq sb, _020B57B4 ; =UNK_020FF958 + ldr r3, [r1, #0x0] + ldr r4, [r9, #0x10] + str r4, [sp, #0x18] + ldr r2, [r9, #0x14] + str r2, [sp, #0x1c] + ldr r1, [r10, #0x0] + sub r1, r4, r1 + str r1, [sp, #0x18] + ldr r1, [r10, #0x4] + sub r1, r2, r1 + str r1, [sp, #0x1c] + ldr r2, [r3, #0x24] + ldr r1, [r3, #0x10] + cmp r2, #0x0 + str r1, [sp, #0x4] + bne _020B5430 + ldr r1, [r3, #0x28] + cmp r1, #0x0 + movne r1, #0x1 + strne r1, [sp, #0x0] + bne _020B5438 +_020B5430: + mov r1, #0x0 + str r1, [sp, #0x0] +_020B5438: + ldrh r1, [r11, #0x0] + add r7, r0, #0x38 + mov r8, #0x0 + cmp r1, #0x0 + addls sp, sp, #0x44 + ldmlsia sp!, {r4-r11,pc} + mov r0, #0x1 + ldr r4, _020B57B0 ; =UNK_021CED14 + str r8, [sp, #0x14] + str r0, [sp, #0xc] +_020B5460: + ldr r2, [r4, #0x0] + ldr r0, [sp, #0xc] + mov r1, #0x6 + str r0, [r2, #0x30] + mul r0, r8, r1 + ldr r1, [r11, #0x4] + add r2, r1, r0 + ldrh r0, [r1, r0] + strh r0, [r7, #0x0] + ldrh r0, [r2, #0x2] + strh r0, [r7, #0x2] + ldrh r0, [r2, #0x4] + strh r0, [r7, #0x4] + ldr r3, [r10, #0x20] + cmp r3, #0x0 + beq _020B54B0 + ldr r0, [r4, #0x0] + mov r1, r11 + mov r2, r8 + blx r3 +_020B54B0: + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B5790 + ldr r0, [sp, #0x0] + ldr r1, [r7, #0x4] + cmp r0, #0x0 + mov r0, #0x400 + rsb r0, r0, #0x0 + and r2, r1, r0 + ldr r0, [sp, #0x4] + mov r1, r1, lsl #0x16 + add r1, r0, r1, lsr #0x16 + ldr r0, _020B57B8 ; =0x000003FF + and r0, r1, r0 + orr r0, r2, r0 + str r0, [r7, #0x4] + beq _020B5600 + ldr r0, [r10, #0x14] + ldr lr, [r4, #0x0] + sub r1, r0, #0x1 + ldr r0, [r7, #0x0] + ldr r6, [lr, #0x28] + mov r2, r0, lsl #0x2 + mov r2, r2, lsr #0x1f + mov r2, r2, lsl #0x1 + mov r0, r0, lsl #0x3 + orr r5, r2, r0, lsr #0x1f + add r0, r6, r5, lsl #0x2 + add r0, r0, r1, lsl #0x1 + ldrh r1, [r0, #0x10] + ldr r0, _020B57BC ; =0x0000FFFF + str r1, [sp, #0x8] + cmp r1, r0 + bne _020B55CC + cmp r5, #0x0 + bne _020B5558 + ldr r1, [lr, #0x20] + mov r0, r6 + blx r1 + str r0, [sp, #0x8] + b _020B55B4 +_020B5558: + ands r0, r5, #0x1 + add r12, sp, #0x30 + ldmia r6, {r0-r3} + stmia r12, {r0-r3} + beq _020B5584 + ldr r1, [sp, #0x30] + ldr r0, [sp, #0x34] + rsb r1, r1, #0x0 + str r1, [sp, #0x30] + rsb r0, r0, #0x0 + str r0, [sp, #0x34] +_020B5584: + ands r0, r5, #0x2 + beq _020B55A4 + ldr r1, [sp, #0x38] + ldr r0, [sp, #0x3c] + rsb r1, r1, #0x0 + str r1, [sp, #0x38] + rsb r0, r0, #0x0 + str r0, [sp, #0x3c] +_020B55A4: + ldr r1, [lr, #0x20] + add r0, sp, #0x30 + blx r1 + str r0, [sp, #0x8] +_020B55B4: + ldr r1, [r10, #0x14] + add r0, r6, r5, lsl #0x2 + sub r1, r1, #0x1 + add r1, r0, r1, lsl #0x1 + ldr r0, [sp, #0x8] + strh r0, [r1, #0x10] +_020B55CC: + ldr r1, [r9, #0x0] + add r0, sp, #0x20 + str r1, [sp, #0x20] + ldr r2, [r9, #0x4] + mov r1, r7 + str r2, [sp, #0x24] + ldr r3, [r9, #0x8] + add r2, sp, #0x18 + str r3, [sp, #0x28] + ldr r3, [r9, #0xc] + str r3, [sp, #0x2c] + bl FUN_020B57D8 + b _020B5750 +_020B5600: + ldr r0, _020B57C0 ; =0x0000FFFE + str r0, [sp, #0x8] + ldr r0, [r4, #0x0] + ldr r1, [r0, #0x24] + cmp r1, #0x0 + beq _020B5714 + ldr r2, [r7, #0x0] + ldr r1, _020B57C4 ; =0xC000C000 + mov r6, r2, lsl #0x3 + and r5, r2, r1 + bl FUN_020B4F88 + ldr r1, [r7, #0x0] + eor r6, r0, r6, lsr #0x1f + mov r1, r1, lsl #0x2 + ldr r0, [r4, #0x0] + str r1, [sp, #0x10] + bl FUN_020B4F74 + ldr r1, [sp, #0x10] + eor r0, r0, r1, lsr #0x1f + ldr r1, [r7, #0x0] + bic r1, r1, #0x10000000 + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + orr r1, r1, r6, lsl #0x1c + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + bic r1, r1, #0x20000000 + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + orr r0, r1, r0, lsl #0x1d + str r0, [r7, #0x0] + ldr r0, [r4, #0x0] + bl FUN_020B4F88 + cmp r0, #0x0 + beq _020B56D4 + and r1, r5, #0xc000 + mov r2, r1, asr #0xe + ldr r1, _020B57C8 ; =UNK_020FF8AC + and r3, r5, #0xc0000000 + mov r3, r3, lsr #0x1e + add r2, r1, r2, lsl #0x3 + mov r3, r3, lsl #0x1 + ldr r0, [r7, #0x0] + ldr r1, _020B57CC ; =0xFE00FFFF + ldrh r2, [r3, r2] + and r1, r0, r1 + mov r0, r0, lsl #0x7 + add r0, r2, r0, lsr #0x17 + rsb r2, r0, #0x0 + ldr r0, _020B57D0 ; =0x000001FF + and r0, r2, r0 + orr r0, r1, r0, lsl #0x10 + str r0, [r7, #0x0] +_020B56D4: + ldr r0, [r4, #0x0] + bl FUN_020B4F74 + cmp r0, #0x0 + beq _020B5714 + and r1, r5, #0xc000 + mov r3, r1, asr #0xe + and r1, r5, #0xc0000000 + mov r1, r1, lsr #0x1e + mov r2, r1, lsl #0x1 + ldr r1, _020B57D4 ; =UNK_020FF894 + ldrb r0, [r7, #0x0] + add r1, r1, r3, lsl #0x3 + ldrh r1, [r2, r1] + add r0, r0, r1 + rsb r0, r0, #0x0 + strb r0, [r7, #0x0] +_020B5714: + ldr r2, [r7, #0x0] + ldr r0, _020B57CC ; =0xFE00FFFF + ldr r1, [sp, #0x18] + and r0, r2, r0 + mov r2, r2, lsl #0x7 + mov r2, r2, lsr #0x17 + add r2, r2, r1, asr #0xc + ldr r1, _020B57D0 ; =0x000001FF + and r1, r2, r1 + orr r0, r0, r1, lsl #0x10 + str r0, [r7, #0x0] + ldrb r1, [r7, #0x0] + ldr r0, [sp, #0x1c] + add r0, r1, r0, asr #0xc + strb r0, [r7, #0x0] +_020B5750: + ldr r3, [r4, #0x0] + ldr r1, [sp, #0x8] + ldr r2, [sp, #0x14] + ldr r3, [r3, #0x1c] + mov r0, r7 + blx r3 + cmp r0, #0x1 + addne sp, sp, #0x44 + ldmneia sp!, {r4-r11,pc} + ldr r3, [r10, #0x24] + cmp r3, #0x0 + beq _020B5790 + ldr r0, [r4, #0x0] + mov r1, r11 + mov r2, r8 + blx r3 +_020B5790: + add r0, r8, #0x1 + mov r0, r0, lsl #0x10 + mov r8, r0, lsr #0x10 + ldrh r0, [r11, #0x0] + cmp r8, r0 + blo _020B5460 + add sp, sp, #0x44 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B57B0: .word UNK_021CED14 +_020B57B4: .word UNK_020FF958 +_020B57B8: .word 0x000003FF +_020B57BC: .word 0x0000FFFF +_020B57C0: .word 0x0000FFFE +_020B57C4: .word 0xC000C000 +_020B57C8: .word UNK_020FF8AC +_020B57CC: .word 0xFE00FFFF +_020B57D0: .word 0x000001FF +_020B57D4: .word UNK_020FF894 + arm_func_end FUN_020B53B4 + + ; DoAffineTransforme_ + arm_func_start FUN_020B57D8 +FUN_020B57D8: ; 0x020B57D8 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + ldr r4, [r1, #0x0] + ldr r3, _020B5A9C ; =0x01FF0000 + and r3, r4, r3 + mov r3, r3, lsr #0x10 + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + cmp r3, #0xff + orrgt r3, r3, #0xff00 + movgt r3, r3, lsl #0x10 + movgt r3, r3, asr #0x10 + mov r3, r3, lsl #0xc + str r3, [sp, #0x0] + ldr r3, [r1, #0x0] + and r3, r3, #0xff + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + cmp r3, #0x7f + orrgt r3, r3, #0xff00 + movgt r3, r3, lsl #0x10 + movgt r3, r3, asr #0x10 + mov r3, r3, lsl #0xc + str r3, [sp, #0x4] + ldr r5, [r1, #0x0] + and r4, r5, #0x300 + cmp r4, #0x100 + beq _020B5858 + cmp r4, #0x300 + beq _020B5858 + and r3, r5, #0x30000000 + orr r4, r4, r3 +_020B5858: + cmp r4, #0x300 + bne _020B58AC + ldr r3, _020B5AA0 ; =0xC000C000 + ldr r4, _020B5AA4 ; =UNK_020FF8AC + and r3, r5, r3 + and r5, r3, #0xc0000000 + and r3, r3, #0xc000 + mov r6, r5, lsr #0x1e + mov r5, r3, asr #0xe + ldr r3, _020B5AA8 ; =UNK_020FF894 + mov r6, r6, lsl #0x1 + add r4, r4, r5, lsl #0x3 + add r3, r3, r5, lsl #0x3 + ldrh r5, [r6, r4] + ldr r7, [sp, #0x0] + ldrh r3, [r6, r3] + ldr r4, [sp, #0x4] + add r5, r7, r5, lsl #0xb + add r3, r4, r3, lsl #0xb + str r5, [sp, #0x0] + str r3, [sp, #0x4] +_020B58AC: + ldr r5, [r0, #0x8] + ldr r4, [sp, #0x4] + add r3, sp, #0x0 + smull r8, r7, r5, r4 + cmp r3, r3 + ldr r6, [r0, #0x0] + mov r4, #0x1000 + addeq r3, sp, #0x8 + adds r8, r8, r4 + ldr r5, [sp, #0x0] + adc r7, r7, #0x0 + smlal r8, r7, r6, r5 + mov r5, r8, lsr #0xc + orr r5, r5, r7, lsl #0x14 + str r5, [r3, #0x0] + ldr r7, [r0, #0xc] + ldr r6, [sp, #0x4] + ldr r5, [r0, #0x4] + smull r8, r6, r7, r6 + adds r7, r8, r4 + ldr r4, [sp, #0x0] + adc r6, r6, #0x0 + smlal r7, r6, r5, r4 + mov r5, r7, lsr #0xc + add r4, sp, #0x8 + orr r5, r5, r6, lsl #0x14 + str r5, [r3, #0x4] + cmp r3, r4 + ldreq r3, [sp, #0xc] + ldreq r4, [sp, #0x8] + streq r3, [sp, #0x4] + ldr r3, _020B5AAC ; =UNK_021CED14 + streq r4, [sp, #0x0] + ldr r3, [r3, #0x0] + ldr r3, [r3, #0x4] + cmp r3, #0x0 + beq _020B597C + cmp r3, #0x2 + moveq r5, #0x300 + movne r5, #0x100 + cmp r5, #0x100 + ldreq r4, [r1, #0x0] + ldreq r3, _020B5AB0 ; =0xC1FFFCFF + andeq r3, r4, r3 + orreq r3, r3, r5 + streq r3, [r1, #0x0] + beq _020B597C + ldr r4, [r1, #0x0] + ldr r3, _020B5AB0 ; =0xC1FFFCFF + and r3, r4, r3 + orr r3, r3, r5 + str r3, [r1, #0x0] +_020B597C: + ldr r6, [r1, #0x0] + and r5, r6, #0x300 + cmp r5, #0x100 + beq _020B599C + cmp r5, #0x300 + beq _020B599C + and r3, r6, #0x30000000 + orr r5, r5, r3 +_020B599C: + ldr r3, _020B5AA0 ; =0xC000C000 + ldr r4, _020B5AA4 ; =UNK_020FF8AC + and r3, r6, r3 + and r6, r3, #0xc0000000 + and r3, r3, #0xc000 + mov lr, r3, asr #0xe + mov r6, r6, lsr #0x1e + mov r3, r6, lsl #0x1 + add r4, r4, lr, lsl #0x3 + ldrh r4, [r3, r4] + ldr r6, [r0, #0x0] + ldr r8, _020B5AA8 ; =UNK_020FF894 + mov r12, r4, asr #0x1 + mov r4, r12, lsl #0xc + rsb r7, r4, #0x0 + mla r7, r6, r12, r7 + add lr, r8, lr, lsl #0x3 + ldrh r3, [r3, lr] + ldr r6, [r0, #0x8] + ldr lr, [sp, #0x0] + mov r3, r3, asr #0x1 + mla r7, r6, r3, r7 + add r6, lr, r7 + str r6, [sp, #0x0] + mov lr, r3, lsl #0xc + ldr r6, [r0, #0x4] + rsb r7, lr, #0x0 + mla r7, r6, r12, r7 + ldr r0, [r0, #0xc] + ldr r6, [sp, #0x4] + mla r3, r0, r3, r7 + add r0, r6, r3 + str r0, [sp, #0x4] + cmp r5, #0x300 + moveq r0, #0x1 + movne r0, #0x0 + cmp r0, #0x0 + beq _020B5A4C + ldr r3, [sp, #0x0] + ldr r0, [sp, #0x4] + sub r3, r3, r4 + sub r0, r0, lr + str r3, [sp, #0x0] + str r0, [sp, #0x4] +_020B5A4C: + ldr r4, [sp, #0x0] + ldr r0, [r2, #0x0] + ldr r3, [sp, #0x4] + add r5, r4, r0 + str r5, [sp, #0x0] + ldr r2, [r2, #0x4] + ldr r0, _020B5AB4 ; =0x000001FF + add r2, r3, r2 + str r2, [sp, #0x4] + mov r3, r2, asr #0xc + ldr r4, [r1, #0x0] + ldr r2, _020B5AB8 ; =0xFE00FF00 + and r3, r3, #0xff + and r2, r4, r2 + and r4, r0, r5, asr #0xc + orr r0, r2, r3 + orr r0, r0, r4, lsl #0x10 + str r0, [r1, #0x0] + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B5A9C: .word 0x01FF0000 +_020B5AA0: .word 0xC000C000 +_020B5AA4: .word UNK_020FF8AC +_020B5AA8: .word UNK_020FF894 +_020B5AAC: .word UNK_021CED14 +_020B5AB0: .word 0xC1FFFCFF +_020B5AB4: .word 0x000001FF +_020B5AB8: .word 0xFE00FF00 + arm_func_end FUN_020B57D8 + diff --git a/arm9/asm/NNS_G2D_g2d_softsprite.s b/arm9/asm/NNS_G2D_g2d_softsprite.s new file mode 100644 index 00000000..9a22950f --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_softsprite.s @@ -0,0 +1,133 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; NNS_G2dDrawSpriteFast + arm_func_start FUN_020B0250 +FUN_020B0250: ; 0x020B0250 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r5, _020B02C0 ; =0x04000470 + mov r0, r0, lsl #0xc + str r0, [r5, #0x0] + mov r4, r1, lsl #0xc + ldr r12, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x1c] + str r4, [r5, #0x0] + mov r4, r2, lsl #0xc + ldr r2, [sp, #0x18] + ldr lr, _020B02C4 ; =0x0400046C + str r4, [r5, #0x0] + mov r4, r3, lsl #0xc + ldr r3, [sp, #0x20] + str r4, [lr, #0x0] + mov r12, r12, lsl #0xc + str r12, [lr, #0x0] + mov r12, #0x1000 + mov r0, r0, lsl #0xc + mov r1, r1, lsl #0xc + mov r2, r2, lsl #0xc + mov r3, r3, lsl #0xc + str r12, [lr, #0x0] + bl FUN_020B0340 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B02C0: .word 0x04000470 +_020B02C4: .word 0x0400046C + arm_func_end FUN_020B0250 + + ; NNS_G2dSetupSoftwareSpriteCamera + arm_func_start FUN_020B02C8 +FUN_020B02C8: ; 0x020B02C8 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r2, _020B0330 ; =0xBFFF0000 + ldr r0, _020B0334 ; =0x04000580 + mov r1, #0x400000 + str r2, [r0, #0x0] + rsb r0, r1, #0x0 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + mov r0, #0x0 + str r1, [sp, #0x8] + mov r1, #0x1 + str r1, [sp, #0xc] + mov r2, r0 + mov r1, #0xc0000 + mov r3, #0x100000 + str r0, [sp, #0x10] + bl G3i_OrthoW_ + ldr r1, _020B0338 ; =0x0400044C + mov r2, #0x0 + ldr r0, _020B033C ; =0x04000440 + str r2, [r1, #0x0] + mov r1, #0x1 + str r1, [r0, #0x0] + add sp, sp, #0x14 + ldmia sp!, {pc} + .balign 4 +_020B0330: .word 0xBFFF0000 +_020B0334: .word 0x04000580 +_020B0338: .word 0x0400044C +_020B033C: .word 0x04000440 + arm_func_end FUN_020B02C8 + + ; DrawOneQuad_ + arm_func_start FUN_020B0340 +FUN_020B0340: ; 0x020B0340 + stmdb sp!, {r4-r6,lr} + mov r3, r3, lsl #0x8 + mov r0, r0, lsl #0x8 + mov r4, r3, asr #0x10 + mov r3, r0, asr #0x10 + mov r0, r4, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r1, r1, lsl #0x8 + mov r1, r1, asr #0x10 + mov r1, r1, lsl #0x10 + mov r2, r2, lsl #0x8 + mov r2, r2, asr #0x10 + mov r2, r2, lsl #0x10 + ldr ip, _020B03F4 ; =0x04000500 + mov lr, #0x1 + mov r6, r0, lsr #0x10 + mov r5, r3, lsr #0x10 + mov r3, r1, lsr #0x10 + mov r1, r2, lsr #0x10 + ldr r4, _020B03F8 ; =0x04000488 + str lr, [r12, #0x0] + orr r0, r5, r6, lsl #0x10 + ldr lr, _020B03FC ; =0x0400048C + str r0, [r4, #0x0] + mov r0, #0x10000000 + str r0, [lr, #0x0] + mov r12, #0x0 + str r12, [lr, #0x0] + orr r2, r3, r6, lsl #0x10 + ldr r0, _020B0400 ; =0x10001000 + str r2, [r4, #0x0] + str r0, [lr, #0x0] + str r12, [lr, #0x0] + orr r0, r3, r1, lsl #0x10 + str r0, [r4, #0x0] + mov r0, #0x1000 + str r0, [lr, #0x0] + str r12, [lr, #0x0] + orr r0, r5, r1, lsl #0x10 + str r0, [r4, #0x0] + str r12, [lr, #0x0] + ldr r0, _020B0404 ; =0x04000504 + str r12, [lr, #0x0] + str r12, [r0, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B03F4: .word 0x04000500 +_020B03F8: .word 0x04000488 +_020B03FC: .word 0x0400048C +_020B0400: .word 0x10001000 +_020B0404: .word 0x04000504 + arm_func_end FUN_020B0340 + diff --git a/arm9/asm/NNS_G2D_g2d_srtcontrol.s b/arm9/asm/NNS_G2D_g2d_srtcontrol.s new file mode 100644 index 00000000..01f30a6d --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_srtcontrol.s @@ -0,0 +1,68 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020B1A40 +FUN_020B1A40: ; 0x020B1A40 + stmdb sp!, {r4,lr} + mov r4, r0 + add r1, r4, #0x4 + mov r0, #0x0 + mov r2, #0x18 + bl MIi_CpuClear16 + mov r0, #0x1000 + str r0, [r4, #0x4] + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + arm_func_end FUN_020B1A40 + + ; NNSi_G2dSrtcInitControl + arm_func_start FUN_020B1A68 +FUN_020B1A68: ; 0x020B1A68 + ldr ip, _020B1A74 ; =FUN_020B1A40 + str r1, [r0, #0x0] + bx r12 + .balign 4 +_020B1A74: .word FUN_020B1A40 + arm_func_end FUN_020B1A68 + + ; _end + arm_func_start FUN_020B1A78 +FUN_020B1A78: ; 0x020B1A78 + ldr r3, [r0, #0x0] + cmp r3, #0x1 + ldreqh r3, [r0, #0x12] + orreq r3, r3, #0x2 + streqh r3, [r0, #0x12] + streq r1, [r0, #0x4] + streq r2, [r0, #0x8] + bx lr + arm_func_end FUN_020B1A78 + + ; _end + arm_func_start FUN_020B1A98 +FUN_020B1A98: ; 0x020B1A98 + ldr r2, [r0, #0x0] + cmp r2, #0x1 + ldreqh r2, [r0, #0x12] + orreq r2, r2, #0x4 + streqh r2, [r0, #0x12] + streqh r1, [r0, #0x10] + bx lr + arm_func_end FUN_020B1A98 + + ; _end + arm_func_start FUN_020B1AB4 +FUN_020B1AB4: ; 0x020B1AB4 + ldr r3, [r0, #0x0] + cmp r3, #0x1 + ldreqh r3, [r0, #0x12] + orreq r3, r3, #0x8 + streqh r3, [r0, #0x12] + streqh r1, [r0, #0xc] + streqh r2, [r0, #0xe] + bx lr + arm_func_end FUN_020B1AB4 + diff --git a/arm9/asm/NNS_G2D_g2d_textcanvas.s b/arm9/asm/NNS_G2D_g2d_textcanvas.s new file mode 100644 index 00000000..7ac3477a --- /dev/null +++ b/arm9/asm/NNS_G2D_g2d_textcanvas.s @@ -0,0 +1,226 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020B7168 +FUN_020B7168: ; 0x020B7168 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + ldr r12, [sp, #0x28] + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + ands r0, r12, #0x100 + beq _020B71AC + ldr r0, [r7, #0x4] + ldr r1, [r7, #0xc] + ldr r2, [sp, #0x2c] + bl FUN_020B5B54 + ldr r1, [sp, #0x20] + sub r0, r1, r0 + add r5, r5, r0 + b _020B71E4 +_020B71AC: + ands r0, r12, #0x80 + beq _020B71E4 + ldr r0, [r7, #0x4] + ldr r1, [r7, #0xc] + ldr r2, [sp, #0x2c] + bl FUN_020B5B54 + ldr r2, [sp, #0x20] + add r1, r0, #0x1 + add r0, r2, #0x1 + add r0, r0, r0, lsr #0x1f + mov r2, r0, asr #0x1 + add r0, r1, r1, lsr #0x1f + sub r0, r2, r0, asr #0x1 + add r5, r5, r0 +_020B71E4: + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x28] + str r1, [sp, #0x0] + ldr r12, [sp, #0x2c] + str r0, [sp, #0x4] + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + str r12, [sp, #0x8] + bl FUN_020B72C4 + add sp, sp, #0xc + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B7168 + + ; _end + arm_func_start FUN_020B7218 +FUN_020B7218: ; 0x020B7218 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x18 + ldr r4, [sp, #0x34] + mov r8, r0 + str r4, [sp, #0x0] + mov r7, r1 + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x30] + ldr r1, [r8, #0x4] + ldr r2, [r8, #0x8] + ldr r3, [r8, #0xc] + add r0, sp, #0xc + bl FUN_020B5ABC + ands r0, r4, #0x10 + ldrne r0, [sp, #0xc] + addne r0, r0, #0x1 + addne r0, r0, r0, lsr #0x1f + subne r7, r7, r0, asr #0x1 + bne _020B7274 + ands r0, r4, #0x20 + ldrne r0, [sp, #0xc] + subne r7, r7, r0 +_020B7274: + ands r0, r4, #0x2 + ldrne r0, [sp, #0x10] + addne r0, r0, #0x1 + addne r0, r0, r0, lsr #0x1f + subne r6, r6, r0, asr #0x1 + bne _020B7298 + ands r0, r4, #0x4 + ldrne r0, [sp, #0x10] + subne r6, r6, r0 +_020B7298: + str r5, [sp, #0x0] + ldr r0, [sp, #0x34] + str r4, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0xc] + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl FUN_020B72C4 + add sp, sp, #0x18 + ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020B7218 + + ; _end + arm_func_start FUN_020B72C4 +FUN_020B72C4: ; 0x020B72C4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + ldr r4, [r10, #0x4] + ldr r0, [sp, #0x40] + ldr r4, [r4, #0x0] + ldr r5, [r10, #0xc] + ldrsb r4, [r4, #0x1] + cmp r0, #0x0 + mov r9, r1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x38] + mov r8, r2 + str r0, [sp, #0x38] + mov r7, r3 + add r6, r5, r4 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4-r11,pc} + add r0, r7, #0x1 + ldr r1, [sp, #0x3c] + add r0, r0, r0, lsr #0x1f + mov r0, r0, asr #0x1 + and r5, r1, #0x800 + and r11, r1, #0x400 + str r0, [sp, #0x8] + mov r4, #0x0 +_020B732C: + mov r1, r9 + cmp r5, #0x0 + beq _020B7358 + ldr r0, [r10, #0x4] + ldr r1, [r10, #0x8] + ldr r2, [sp, #0xc] + mov r3, r4 + bl FUN_020B5BC8 + sub r0, r7, r0 + add r1, r9, r0 + b _020B7388 +_020B7358: + cmp r11, #0x0 + beq _020B7388 + ldr r0, [r10, #0x4] + ldr r1, [r10, #0x8] + ldr r2, [sp, #0xc] + mov r3, r4 + bl FUN_020B5BC8 + add r0, r0, #0x1 + add r1, r0, r0, lsr #0x1f + ldr r0, [sp, #0x8] + sub r0, r0, r1, asr #0x1 + add r1, r9, r0 +_020B7388: + ldr r2, [sp, #0xc] + add r3, sp, #0xc + str r2, [sp, #0x0] + str r3, [sp, #0x4] + ldr r3, [sp, #0x38] + mov r0, r10 + mov r2, r8 + bl FUN_020B73C0 + ldr r0, [sp, #0xc] + add r8, r8, r6 + cmp r0, #0x0 + bne _020B732C + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B72C4 + + ; _end + arm_func_start FUN_020B73C0 +FUN_020B73C0: ; 0x020B73C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r10, r0 + ldr r6, [r10, #0x8] + ldr r5, [r10, #0x4] + ldr r4, [sp, #0x30] + add r0, sp, #0x8 + str r4, [sp, #0x8] + ldr r4, [r5, #0x4] + mov r9, r1 + mov r8, r2 + mov r7, r3 + blx r4 + cmp r0, #0x0 + beq _020B743C + add r11, sp, #0x8 +_020B7400: + cmp r0, #0xa + beq _020B743C + str r7, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [r10, #0x0] + mov r1, r5 + mov r2, r9 + mov r3, r8 + bl FUN_020B63CC + add r1, r9, r0 + mov r0, r11 + add r9, r1, r6 + blx r4 + cmp r0, #0x0 + bne _020B7400 +_020B743C: + ldr r1, [sp, #0x34] + cmp r1, #0x0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r11,pc} + cmp r0, #0xa + ldreq r1, [sp, #0x8] + ldr r0, [sp, #0x34] + movne r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B73C0 + diff --git a/arm9/asm/NNS_G2D_g2di_bitreader.s b/arm9/asm/NNS_G2D_g2di_bitreader.s new file mode 100644 index 00000000..da823629 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2di_bitreader.s @@ -0,0 +1,37 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020B76B0 +FUN_020B76B0: ; 0x020B76B0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrsb r2, [r0, #0x4] + ldrb r12, [r0, #0x5] + mov r4, r1 + cmp r2, r4 + subge r1, r2, r4 + movge r5, r12, lsr r1 + strgeb r1, [r0, #0x4] + bge _020B7704 + ldr r3, [r0, #0x0] + sub r1, r4, r2 + add r2, r3, #0x1 + str r2, [r0, #0x0] + ldrb r2, [r3, #0x0] + mov r5, r12, lsl r1 + strb r2, [r0, #0x5] + mov r2, #0x8 + strb r2, [r0, #0x4] + bl FUN_020B76B0 + orr r5, r0, r5 +_020B7704: + rsb r0, r4, #0x8 + mov r1, #0xff + and r0, r5, r1, asr r0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020B76B0 + diff --git a/arm9/asm/NNS_G2D_g2di_mtx32.s b/arm9/asm/NNS_G2D_g2di_mtx32.s new file mode 100644 index 00000000..777ed944 --- /dev/null +++ b/arm9/asm/NNS_G2D_g2di_mtx32.s @@ -0,0 +1,81 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020B423C +FUN_020B423C: ; 0x020B423C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x1c + ldr r4, [r0, #0x4] + ldr r3, [r1, #0x8] + mov r12, r2 + smull r6, r5, r4, r3 + ldr r4, [r0, #0x0] + ldr r3, [r1, #0x0] + cmp r12, r1 + smlal r6, r5, r4, r3 + mov r3, r6, lsr #0xc + addeq r2, sp, #0x0 + orr r3, r3, r5, lsl #0x14 + str r3, [r2, #0x0] + ldr r4, [r0, #0x4] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x0] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x4] + add lr, sp, #0x0 + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0x4] + ldr r4, [r0, #0xc] + ldr r3, [r1, #0x8] + ldr r5, [r0, #0x8] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x0] + cmp r2, lr + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0x8] + ldr r4, [r0, #0xc] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x8] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x4] + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0xc] + ldr r4, [r0, #0x14] + ldr r3, [r1, #0x8] + ldr r5, [r0, #0x10] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x0] + ldr r4, [r1, #0x10] + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + add r3, r4, r3 + str r3, [r2, #0x10] + ldr r4, [r0, #0x14] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x10] + ldr r0, [r1, #0x4] + smull r6, r3, r4, r3 + smlal r6, r3, r5, r0 + mov r0, r6, lsr #0xc + ldr r1, [r1, #0x14] + orr r0, r0, r3, lsl #0x14 + add r0, r1, r0 + str r0, [r2, #0x14] + ldmeqia lr!, {r0-r3} + stmeqia r12!, {r0-r3} + ldmeqia lr, {r0-r1} + stmeqia r12, {r0-r1} + add sp, sp, #0x1c + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B423C + diff --git a/arm9/asm/NNS_G2D_g2di_splitchar.s b/arm9/asm/NNS_G2D_g2di_splitchar.s new file mode 100644 index 00000000..e96ae08d --- /dev/null +++ b/arm9/asm/NNS_G2D_g2di_splitchar.s @@ -0,0 +1,15 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020B7718 +FUN_020B7718: ; 0x020B7718 + ldr r1, [r0, #0x0] + ldrh r2, [r1], #0x2 + str r1, [r0, #0x0] + mov r0, r2 + bx lr + arm_func_end FUN_020B7718 + diff --git a/arm9/asm/NNS_G3D_1mat1shp.s b/arm9/asm/NNS_G3D_1mat1shp.s new file mode 100644 index 00000000..34f2e482 --- /dev/null +++ b/arm9/asm/NNS_G3D_1mat1shp.s @@ -0,0 +1,145 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; NNS_G3dDraw1Mat1Shp + arm_func_start FUN_020BAFB8 +FUN_020BAFB8: ; 0x020BAFB8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x6c + mov r6, r0 + ldr r12, [r6, #0x1c] + mov r4, r1 + mov r5, r2 + mov r7, r3 + cmp r12, #0x1000 + beq _020BAFF8 + add r1, sp, #0x54 + mov r0, #0x1b + mov r2, #0x3 + str r12, [sp, #0x54] + str r12, [sp, #0x58] + str r12, [sp, #0x5c] + bl FUN_020BB1C0 +_020BAFF8: + cmp r7, #0x0 + beq _020BB150 + ldr r0, [r6, #0x8] + add r3, r6, r0 + ldrh r0, [r3, #0xa] + add r2, r3, #0x4 + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r4, r0 + ldr r0, [r0, #0x4] + add r4, r3, r0 + ldr r0, [r4, #0xc] + ands r0, r0, #0x1f0000 + addeq sp, sp, #0x6c + ldmeqia sp!, {r4-r7,pc} + ldr r0, _020BB1B4 ; =0x00293130 + str r0, [sp, #0x0] + ldr r0, [r4, #0x4] + str r0, [sp, #0x4] + ldr r0, [r4, #0x8] + str r0, [sp, #0x8] + ldr r1, [r4, #0xc] + str r1, [sp, #0xc] + ldrh r0, [r4, #0x1e] + ands r0, r0, #0x20 + bicne r0, r1, #0x1f0000 + ldr r1, _020BB1B8 ; =0x00002B2A + strne r0, [sp, #0xc] + str r1, [sp, #0x10] + ldr r2, [r4, #0x14] + ldr r0, [sp, #0x0] + str r2, [sp, #0x14] + ldrh r3, [r4, #0x1c] + add r1, sp, #0x4 + mov r2, #0x6 + str r3, [sp, #0x18] + bl FUN_020BB1C0 + ldrh r0, [r4, #0x1e] + ands r0, r0, #0x1 + beq _020BB150 + ldrb r12, [r6, #0x16] + mov r3, #0x8 + ldr r1, _020BB1BC ; =UNK_02106620 + str r3, [sp, #0x1c] + ldrh r2, [r4, #0x20] + add r0, r4, #0x2c + ldr r1, [r1, r12, lsl #0x2] + strh r2, [sp, #0x48] + ldrh r2, [r4, #0x22] + strh r2, [sp, #0x4a] + ldr r2, [r4, #0x24] + str r2, [sp, #0x4c] + ldr r2, [r4, #0x28] + str r2, [sp, #0x50] + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x2 + orrne r2, r3, #0x1 + strne r2, [sp, #0x1c] + bne _020BB0F8 + ldr r2, [r0, #0x0] + str r2, [sp, #0x34] + ldr r2, [r0, #0x4] + add r0, r0, #0x8 + str r2, [sp, #0x38] +_020BB0F8: + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x4 + ldrne r2, [sp, #0x1c] + orrne r2, r2, #0x2 + strne r2, [sp, #0x1c] + bne _020BB124 + ldrsh r2, [r0, #0x0] + strh r2, [sp, #0x3c] + ldrsh r2, [r0, #0x2] + add r0, r0, #0x4 + strh r2, [sp, #0x3e] +_020BB124: + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x8 + ldreq r2, [r0, #0x0] + streq r2, [sp, #0x40] + ldreq r0, [r0, #0x4] + streq r0, [sp, #0x44] + ldrne r0, [sp, #0x1c] + orrne r0, r0, #0x4 + strne r0, [sp, #0x1c] + add r0, sp, #0x1c + blx r1 +_020BB150: + ldr r0, [r6, #0xc] + add r2, r6, r0 + ldrh r0, [r2, #0x6] + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r5, r0 + ldr r0, [r0, #0x4] + add r2, r2, r0 + ldr r0, [r2, #0x8] + ldr r1, [r2, #0xc] + add r0, r2, r0 + bl FUN_020BB2B0 + ldr r3, [r6, #0x20] + cmp r3, #0x1000 + addeq sp, sp, #0x6c + ldmeqia sp!, {r4-r7,pc} + add r1, sp, #0x60 + mov r0, #0x1b + mov r2, #0x3 + str r3, [sp, #0x60] + str r3, [sp, #0x64] + str r3, [sp, #0x68] + bl FUN_020BB1C0 + add sp, sp, #0x6c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020BB1B4: .word 0x00293130 +_020BB1B8: .word 0x00002B2A +_020BB1BC: .word UNK_02106620 + arm_func_end FUN_020BAFB8 + diff --git a/arm9/asm/NNS_G3D_3dsmax.s b/arm9/asm/NNS_G3D_3dsmax.s new file mode 100644 index 00000000..8037126d --- /dev/null +++ b/arm9/asm/NNS_G3D_3dsmax.s @@ -0,0 +1,479 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + ; calcTexMtx_ + .global UNK_021067D0 +UNK_021067D0: ; 0x021067D0 + .word FUN_020BF988 + .word FUN_020BF894 + .word FUN_020BF810 + .word FUN_020BF7C8 + .word FUN_020BF6C8 + .word FUN_020BF5E8 + .word FUN_020BF598 + .word FUN_020BF574 + + .section .text + + ; NNSi_G3dSendTexSRT3dsMax + arm_func_start FUN_020BF42C +FUN_020BF42C: ; 0x020BF42C + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r1, #0x0 + ands r0, r0, #0x8 + ldrne r0, _020BF568 ; =0x00101610 + mov r3, #0x3 + strne r0, [sp, #0x0] + ldreq r0, _020BF56C ; =0x00101810 + mov r2, #0x2 + streq r0, [sp, #0x0] + mov r0, #0x1000 + str r0, [sp, #0x44] + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x40] + str r1, [sp, #0x34] + str r1, [sp, #0x30] + str r1, [sp, #0x2c] + str r1, [sp, #0x28] + str r1, [sp, #0x24] + str r1, [sp, #0x20] + str r1, [sp, #0x14] + str r1, [sp, #0x10] + ldr r1, [r4, #0x0] + ldr r0, _020BF570 ; =UNK_021067D0 + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BF4FC + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BF4FC: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BF54C + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BF54C: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl FUN_020BB1C0 + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BF568: .word 0x00101610 +_020BF56C: .word 0x00101810 +_020BF570: .word UNK_021067D0 + arm_func_end FUN_020BF42C + + ; _end + arm_func_start FUN_020BF574 +FUN_020BF574: ; 0x020BF574 + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + arm_func_end FUN_020BF574 + + ; _end + arm_func_start FUN_020BF598 +FUN_020BF598: ; 0x020BF598 + ldr r2, [r1, #0x18] + mov r12, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r12, [r0, #0x4] + ldr r3, [r1, #0x18] + ldrh r2, [r1, #0x2c] + rsb r3, r3, #0x1000 + mul r2, r3, r2 + mov r2, r2, lsl #0x3 + str r2, [r0, #0x30] + ldr r2, [r1, #0x1c] + ldrh r1, [r1, #0x2e] + rsb r2, r2, #0x1000 + mul r1, r2, r1 + mov r1, r1, lsl #0x3 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + arm_func_end FUN_020BF598 + + ; _end + arm_func_start FUN_020BF5E8 +FUN_020BF5E8: ; 0x020BF5E8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + ldrsh r4, [r5, #0x22] + rsb r0, r2, #0x0 + rsb r1, r1, #0x0 + mov r0, r0, lsl #0xb + ldrsh r3, [r5, #0x20] + mov r1, r1, lsl #0xb + smull r7, lr, r4, r0 + smull r12, r4, r3, r1 + subs r7, r7, r12 + sbc r3, lr, r4 + mov r4, r7, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + add r2, r4, r2, lsl #0xf + str r2, [r6, #0x30] + ldrsh r2, [r5, #0x22] + ldrsh r3, [r5, #0x20] + ldrh r12, [r5, #0x2e] + smull r4, r1, r2, r1 + smlal r4, r1, r3, r0 + mov r0, r4, lsr #0x8 + orr r0, r0, r1, lsl #0x18 + add r0, r0, r12, lsl #0xf + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BF5E8 + + ; _end + arm_func_start FUN_020BF6C8 +FUN_020BF6C8: ; 0x020BF6C8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r0, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r5, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r7, [r10, #0x0] + str r5, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + mul r0, r4, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + ldrh r3, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + rsb r0, r3, #0x0 + rsb r1, r1, #0x0 + mov r2, r1, lsl #0xb + mov r11, r0, lsl #0xb + smull r1, r0, r7, r11 + smull r8, r7, r5, r2 + smlal r8, r7, r4, r11 + mov r4, r8, lsr #0x8 + orr r4, r4, r7, lsl #0x18 + smull r5, r2, r6, r2 + subs r1, r1, r5 + sbc r0, r0, r2 + mov r1, r1, lsr #0x8 + orr r1, r1, r0, lsl #0x18 + add r0, r1, r3, lsl #0xf + str r0, [r10, #0x30] + ldrh r0, [r9, #0x2e] + add r0, r4, r0, lsl #0xf + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020BF6C8 + + ; _end + arm_func_start FUN_020BF7C8 +FUN_020BF7C8: ; 0x020BF7C8 + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov r12, #0x0 + str r12, [r0, #0x4] + ldr r3, [r1, #0x24] + ldrh r2, [r1, #0x2c] + rsb r3, r3, #0x0 + mul r2, r3, r2 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x28] + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + arm_func_end FUN_020BF7C8 + + ; _end + arm_func_start FUN_020BF810 +FUN_020BF810: ; 0x020BF810 + stmdb sp!, {r4-r6,lr} + ldr r2, [r1, #0x18] + mov r3, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r3, [r0, #0x4] + ldrh r5, [r1, #0x2c] + ldr r12, [r1, #0x24] + ldrh r2, [r1, #0x2e] + mul lr, r12, r5 + rsb r12, r5, #0x0 + mov r12, r12, lsl #0xb + ldr r4, [r1, #0x18] + sub r12, r12, lr + smull lr, r12, r4, r12 + ldr r6, [r1, #0x28] + mov r4, lr, lsr #0x8 + orr r4, r4, r12, lsl #0x18 + add r4, r4, r5, lsl #0xf + str r4, [r0, #0x30] + mul r4, r6, r2 + rsb r5, r2, #0x0 + ldr r2, [r1, #0x1c] + add r4, r4, r5, lsl #0xb + smull lr, r12, r2, r4 + mov r2, lr, lsr #0x8 + ldrh r1, [r1, #0x2e] + orr r2, r2, r12, lsl #0x18 + add r1, r2, r1, lsl #0xf + str r1, [r0, #0x34] + str r3, [r0, #0x10] + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BF810 + + ; _end + arm_func_start FUN_020BF894 +FUN_020BF894: ; 0x020BF894 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r2, [r5, #0x2c] + ldrh r7, [r5, #0x2e] + ldr r1, [r5, #0x28] + ldr r0, [r5, #0x24] + rsb r4, r2, #0x0 + mul r3, r1, r7 + rsb r1, r7, #0x0 + add r1, r3, r1, lsl #0xb + ldrsh r3, [r5, #0x20] + mov r7, r4, lsl #0xb + mul r4, r0, r2 + sub r0, r7, r4 + ldrsh lr, [r5, #0x22] + smull r12, r4, r3, r1 + smull r7, r3, lr, r0 + subs r7, r7, r12 + sbc r3, r3, r4 + mov r4, r7, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + add r2, r4, r2, lsl #0xf + str r2, [r6, #0x30] + ldrsh r2, [r5, #0x22] + ldrsh r3, [r5, #0x20] + ldrh r12, [r5, #0x2e] + smull r4, r1, r2, r1 + smlal r4, r1, r3, r0 + mov r0, r4, lsr #0x8 + orr r0, r0, r1, lsl #0x18 + add r0, r0, r12, lsl #0xf + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BF894 + + ; _end + arm_func_start FUN_020BF988 +FUN_020BF988: ; 0x020BF988 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r0, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r5, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r7, [r10, #0x0] + str r5, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + mul r0, r4, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + ldrh r1, [r9, #0x2c] + ldrh r8, [r9, #0x2e] + ldr r2, [r9, #0x28] + rsb r0, r1, #0x0 + mul r3, r2, r8 + rsb r2, r8, #0x0 + add r8, r3, r2, lsl #0xb + mov r0, r0, lsl #0xb + smull r3, r2, r5, r8 + smull r8, r5, r6, r8 + ldr r11, [r9, #0x24] + mul r12, r11, r1 + sub r0, r0, r12 + smlal r3, r2, r4, r0 + smull r4, r0, r7, r0 + subs r4, r4, r8 + sbc r0, r0, r5 + mov r4, r4, lsr #0x8 + orr r4, r4, r0, lsl #0x18 + add r0, r4, r1, lsl #0xf + str r0, [r10, #0x30] + ldrh r1, [r9, #0x2e] + mov r0, r3, lsr #0x8 + orr r0, r0, r2, lsl #0x18 + add r0, r0, r1, lsl #0xf + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020BF988 + diff --git a/arm9/asm/NNS_G3D_anm.s b/arm9/asm/NNS_G3D_anm.s new file mode 100644 index 00000000..ddd94ecd --- /dev/null +++ b/arm9/asm/NNS_G3D_anm.s @@ -0,0 +1,371 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + ; NNS_G3dAnmFmtNum + .global UNK_02106594 +UNK_02106594: ; 0x02106594 + .byte 0x05, 0x00, 0x00, 0x00 + + ; NNS_G3dFuncAnmVisNsBvaDefault + .global UNK_02106598 +UNK_02106598: ; 0x02106598 + .word FUN_020BE5A0 + + ; NNS_G3dFuncAnmJntNsBcaDefault + .global UNK_0210659C +UNK_0210659C: ; 0x0210659C + .word FUN_020BDA70 + + ; NNS_G3dFuncAnmMatNsBtaDefault + .global UNK_021065A0 +UNK_021065A0: ; 0x021065A0 + .word FUN_020BDF38 + + ; NNS_G3dFuncAnmMatNsBtpDefault + .global UNK_021065A4 +UNK_021065A4: ; 0x021065A4 + .word FUN_020BE334 + + ; NNS_G3dFuncAnmMatNsBmaDefault + .global UNK_021065A8 +UNK_021065A8: ; 0x021065A8 + .word FUN_020BDB40 + + ; NNS_G3dFuncBlendVisDefault + .global UNK_021065AC +UNK_021065AC: ; 0x021065AC + .word FUN_020B8640 + + ; NNS_G3dFuncBlendJntDefault + .global UNK_021065B0 +UNK_021065B0: ; 0x021065B0 + .word FUN_020B86B0 + + ; NNS_G3dFuncBlendMatDefault + .global UNK_021065B4 +UNK_021065B4: ; 0x021065B4 + .word FUN_020B8A08 + + ; NNS_G3dAnmObjInitFuncArray + .global UNK_021065B8 +UNK_021065B8: ; 0x021065B8 + .byte 0x4D, 0x00, 0x41, 0x4D + + ; NNS_G3dAnmObjInitFuncArray + 0x4 + .global UNK_021065BC +UNK_021065BC: ; 0x021065BC + .word FUN_020BDC0C + .byte 0x4D, 0x00, 0x50, 0x54 + .word FUN_020BE4F0 + .byte 0x4D, 0x00, 0x41, 0x54 + .word FUN_020BDF84 + .byte 0x56, 0x00, 0x41, 0x56 + .word FUN_020BE5E0 + .byte 0x4A, 0x00, 0x41, 0x43 + .word FUN_020BDAB4 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .section .text + + ; _end + arm_func_start FUN_020B8640 +FUN_020B8640: ; 0x020B8640 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r7, r0 + mov r0, #0x0 + mov r6, r1 + str r0, [r7, #0x0] + add r4, sp, #0x0 + mov r5, r2, lsl #0x1 + mov r8, #0x1 +_020B8664: + add r1, r5, r6 + ldrh r2, [r1, #0x1a] + ands r1, r2, #0x100 + beq _020B869C + ldr r3, [r6, #0xc] + mov r0, r4 + mov r1, r6 + and r2, r2, #0xff + blx r3 + ldr r2, [r7, #0x0] + ldr r1, [sp, #0x0] + mov r0, r8 + orr r1, r2, r1 + str r1, [r7, #0x0] +_020B869C: + ldr r6, [r6, #0x10] + cmp r6, #0x0 + bne _020B8664 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020B8640 + + ; _end + arm_func_start FUN_020B86B0 +FUN_020B86B0: ; 0x020B86B0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x5c + mov r9, r1 + ldr r3, [r9, #0x10] + mov r10, r0 + mov r8, r2 + cmp r3, #0x0 + bne _020B8704 + add r2, r9, r8, lsl #0x1 + ldrh r4, [r2, #0x1a] + and r2, r4, #0x300 + cmp r2, #0x100 + addne sp, sp, #0x5c + movne r0, #0x0 + ldmneia sp!, {r4-r11,pc} + ldr r3, [r9, #0xc] + and r2, r4, #0xff + blx r3 + add sp, sp, #0x5c + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020B8704: + mov r7, #0x0 + mov r3, r7 + mov r4, r9 + mov r2, r8, lsl #0x1 +_020B8714: + add r0, r2, r4 + ldrh r0, [r0, #0x1a] + and r0, r0, #0x300 + cmp r0, #0x100 + ldreq r0, [r4, #0x4] + moveq r1, r4 + ldr r4, [r4, #0x10] + addeq r7, r7, r0 + addeq r3, r3, #0x1 + cmp r4, #0x0 + bne _020B8714 + cmp r7, #0x0 + addeq sp, sp, #0x5c + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,pc} + cmp r3, #0x1 + bne _020B877C + add r0, r1, r8, lsl #0x1 + ldrh r2, [r0, #0x1a] + ldr r3, [r1, #0xc] + mov r0, r10 + and r2, r2, #0xff + blx r3 + add sp, sp, #0x5c + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020B877C: + mov r1, r10 + mov r0, #0x0 + mov r2, #0x58 + bl MIi_CpuClearFast + mvn r0, #0x0 + str r0, [r10, #0x0] + add r5, sp, #0x0 + add r4, sp, #0x4 + add r11, sp, #0x10 +_020B87A0: + add r0, r9, r8, lsl #0x1 + ldrh r2, [r0, #0x1a] + and r0, r2, #0x300 + cmp r0, #0x100 + bne _020B8948 + ldr r0, [r9, #0x4] + cmp r0, #0x0 + ble _020B8948 + ldr r3, [r9, #0xc] + mov r0, r5 + mov r1, r9 + and r2, r2, #0xff + blx r3 + cmp r7, #0x1000 + ldreq r6, [r9, #0x4] + beq _020B87F0 + ldr r0, [r9, #0x4] + mov r1, r7 + bl FX_Div + mov r6, r0 +_020B87F0: + ldr r3, [sp, #0x0] + mov r1, r4 + mov r2, r6 + add r0, r10, #0x4 + and r3, r3, #0x1 + bl FUN_020B8998 + ldr r1, [sp, #0x0] + add r0, r10, #0x10 + and r3, r1, #0x8 + mov r1, r11 + mov r2, r6 + bl FUN_020B8998 + ldr r3, [sp, #0x0] + add r0, r10, #0x1c + add r1, sp, #0x1c + mov r2, r6 + and r3, r3, #0x10 + bl FUN_020B8998 + ldr r0, [sp, #0x0] + ands r0, r0, #0x4 + bne _020B8898 + ldr r0, [sp, #0x4c] + ldr r2, [r10, #0x4c] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x4c] + ldr r0, [sp, #0x50] + ldr r2, [r10, #0x50] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x50] + ldr r0, [sp, #0x54] + ldr r2, [r10, #0x54] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x54] +_020B8898: + ldr r0, [sp, #0x0] + ands r0, r0, #0x2 + bne _020B8920 + ldr r0, [sp, #0x28] + ldr r1, [r10, #0x28] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x28] + ldr r0, [sp, #0x2c] + ldr r1, [r10, #0x2c] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x2c] + ldr r0, [sp, #0x30] + ldr r1, [r10, #0x30] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x30] + ldr r0, [sp, #0x34] + ldr r1, [r10, #0x34] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x34] + ldr r0, [sp, #0x38] + ldr r1, [r10, #0x38] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x38] + ldr r0, [sp, #0x3c] + ldr r1, [r10, #0x3c] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x3c] + b _020B8938 +_020B8920: + ldr r0, [r10, #0x28] + add r0, r0, r6 + str r0, [r10, #0x28] + ldr r0, [r10, #0x38] + add r0, r0, r6 + str r0, [r10, #0x38] +_020B8938: + ldr r1, [r10, #0x0] + ldr r0, [sp, #0x0] + and r0, r1, r0 + str r0, [r10, #0x0] +_020B8948: + ldr r9, [r9, #0x10] + cmp r9, #0x0 + bne _020B87A0 + add r0, r10, #0x28 + add r1, r10, #0x34 + add r2, r10, #0x40 + bl VEC_CrossProduct + add r0, r10, #0x28 + mov r1, r0 + bl VEC_Normalize + add r0, r10, #0x40 + mov r1, r0 + bl VEC_Normalize + add r0, r10, #0x40 + add r1, r10, #0x28 + add r2, r10, #0x34 + bl VEC_CrossProduct + mov r0, #0x1 + add sp, sp, #0x5c + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B86B0 + + ; _end + arm_func_start FUN_020B8998 +FUN_020B8998: ; 0x020B8998 + cmp r3, #0x0 + beq _020B89C8 + ldr r1, [r0, #0x0] + add r1, r1, r2 + str r1, [r0, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, r2 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r2 + str r1, [r0, #0x8] + bx lr +_020B89C8: + ldr r3, [r1, #0x0] + ldr r12, [r0, #0x0] + mul r3, r2, r3 + add r3, r12, r3, asr #0xc + str r3, [r0, #0x0] + ldr r3, [r1, #0x4] + ldr r12, [r0, #0x4] + mul r3, r2, r3 + add r3, r12, r3, asr #0xc + str r3, [r0, #0x4] + ldr r1, [r1, #0x8] + ldr r3, [r0, #0x8] + mul r1, r2, r1 + add r1, r3, r1, asr #0xc + str r1, [r0, #0x8] + bx lr + arm_func_end FUN_020B8998 + + ; _end + arm_func_start FUN_020B8A08 +FUN_020B8A08: ; 0x020B8A08 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + mov r5, r1 + mov r0, #0x0 + mov r4, r2, lsl #0x1 + mov r7, #0x1 +_020B8A24: + add r1, r4, r5 + ldrh r2, [r1, #0x1a] + ands r1, r2, #0x100 + beq _020B8A4C + ldr r3, [r5, #0xc] + mov r0, r6 + mov r1, r5 + and r2, r2, #0xff + blx r3 + mov r0, r7 +_020B8A4C: + ldr r5, [r5, #0x10] + cmp r5, #0x0 + bne _020B8A24 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B8A08 + diff --git a/arm9/asm/NNS_G3D_basic.s b/arm9/asm/NNS_G3D_basic.s new file mode 100644 index 00000000..03950bfc --- /dev/null +++ b/arm9/asm/NNS_G3D_basic.s @@ -0,0 +1,65 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020BE62C +FUN_020BE62C: ; 0x020BE62C + ands r2, r3, #0x4 + ldrne r1, [r0, #0x0] + orrne r1, r1, #0x1 + strne r1, [r0, #0x0] + bne _020BE658 + ldr r2, [r1, #0x0] + str r2, [r0, #0x4] + ldr r2, [r1, #0x4] + str r2, [r0, #0x8] + ldr r1, [r1, #0x8] + str r1, [r0, #0xc] +_020BE658: + ldr r1, [r0, #0x0] + orr r1, r1, #0x18 + str r1, [r0, #0x0] + bx lr + arm_func_end FUN_020BE62C + + ; _end + arm_func_start FUN_020BE668 +FUN_020BE668: ; 0x020BE668 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x0] + ands r0, r1, #0x4 + bne _020BE6AC + ands r0, r1, #0x2 + bne _020BE698 + add r1, r4, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020BE6C4 +_020BE698: + add r1, r4, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 + b _020BE6C4 +_020BE6AC: + ands r0, r1, #0x2 + bne _020BE6C4 + add r1, r4, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 +_020BE6C4: + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + ldmneia sp!, {r4,pc} + add r1, r4, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 + ldmia sp!, {r4,pc} + arm_func_end FUN_020BE668 + diff --git a/arm9/asm/NNS_G3D_cgtool.s b/arm9/asm/NNS_G3D_cgtool.s new file mode 100644 index 00000000..9abb2031 --- /dev/null +++ b/arm9/asm/NNS_G3D_cgtool.s @@ -0,0 +1,27 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + ; NNS_G3dSendJointSRT_FuncArray + .global UNK_02106608 +UNK_02106608: ; 0x02106608 + .word FUN_020BE668 + .word FUN_020BEE3C + .word FUN_020BF2FC + + ; NNS_G3dGetJointScale_FuncArray + .global UNK_02106614 +UNK_02106614: ; 0x02106614 + .word FUN_020BE62C + .word FUN_020BECEC + .word FUN_020BF0D4 + + ; NNS_G3dSendTexSRT_FuncArray + .global UNK_02106620 +UNK_02106620: ; 0x02106620 + .word FUN_020BE6E4 + .word FUN_020BEF10 + .word FUN_020BF42C + .word FUN_020BFA9C + diff --git a/arm9/asm/NNS_G3D_gecom.s b/arm9/asm/NNS_G3D_gecom.s new file mode 100644 index 00000000..56c81114 --- /dev/null +++ b/arm9/asm/NNS_G3D_gecom.s @@ -0,0 +1,206 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + ; NNS_G3dGeBuffer + .global UNK_021D1C80 +UNK_021D1C80: ; 0x021D1C80 + .space 0x4 + + ; NNS_G3dFlagGXDmaAsync + .global UNK_021D1C84 +UNK_021D1C84: ; 0x021D1C84 + .space 0x4 + + ; NNS_G3dFlagUseFastDma + .global UNK_021D1C88 +UNK_021D1C88: ; 0x021D1C88 + .space 0x4 + + .section .text + + ; NNS_G3dGeBufferOP_N + arm_func_start FUN_020BB1C0 +FUN_020BB1C0: ; 0x020BB1C0 + stmdb sp!, {r4-r6,lr} + ldr r3, _020BB2A4 ; =UNK_021D1C80 + mov r6, r0 + ldr r12, [r3, #0x0] + mov r5, r1 + mov r4, r2 + cmp r12, #0x0 + beq _020BB278 + ldr r0, _020BB2A8 ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB24C + ldr r2, [r12, #0x0] + add r0, r2, #0x1 + add r1, r0, r4 + cmp r1, #0xc0 + bhi _020BB24C + str r0, [r12, #0x0] + ldr r0, [r3, #0x0] + cmp r4, #0x0 + add r0, r0, r2, lsl #0x2 + str r6, [r0, #0x4] + ldmeqia sp!, {r4-r6,pc} + ldr r2, [r3, #0x0] + mov r0, r5 + ldr r1, [r2], #0x4 + add r1, r2, r1, lsl #0x2 + mov r2, r4, lsl #0x2 + bl MIi_CpuCopyFast + ldr r0, _020BB2A4 ; =UNK_021D1C80 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x0] + add r0, r0, r4 + str r0, [r1, #0x0] + ldmia sp!, {r4-r6,pc} +_020BB24C: + ldr r0, [r12, #0x0] + cmp r0, #0x0 + beq _020BB260 + bl FUN_020BB394 + b _020BB28C +_020BB260: + ldr r0, _020BB2A8 ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB28C + bl FUN_020BB37C + b _020BB28C +_020BB278: + ldr r0, _020BB2A8 ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB28C + bl FUN_020BB37C +_020BB28C: + ldr r1, _020BB2AC ; =0x04000400 + mov r0, r5 + mov r2, r4, lsl #0x2 + str r6, [r1, #0x0] + bl MIi_CpuSend32 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BB2A4: .word UNK_021D1C80 +_020BB2A8: .word UNK_021D1C84 +_020BB2AC: .word 0x04000400 + arm_func_end FUN_020BB1C0 + + ; NNS_G3dGeSendDL + arm_func_start FUN_020BB2B0 +FUN_020BB2B0: ; 0x020BB2B0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + cmp r4, #0x100 + blo _020BB2DC + ldr r1, _020BB360 ; =GXi_DmaId + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + bne _020BB2F8 +_020BB2DC: + mov r2, r4, lsr #0x2 + ldr r0, [r5, #0x0] + add r1, r5, #0x4 + sub r2, r2, #0x1 + bl FUN_020BB1C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BB2F8: + bl FUN_020BB394 + ldr r0, _020BB364 ; =UNK_021D1C88 + ldr r1, _020BB368 ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + mov r2, #0x1 + str r2, [r1, #0x0] + cmp r0, #0x0 + beq _020BB33C + ldr r0, _020BB360 ; =GXi_DmaId + str r1, [sp, #0x0] + ldr r0, [r0, #0x0] + ldr r3, _020BB36C ; =FUN_020BB370 + mov r1, r5 + mov r2, r4 + bl MI_SendGXCommandAsyncFast + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BB33C: + ldr r0, _020BB360 ; =GXi_DmaId + str r1, [sp, #0x0] + ldr r0, [r0, #0x0] + ldr r3, _020BB36C ; =FUN_020BB370 + mov r1, r5 + mov r2, r4 + bl MI_SendGXCommandAsync + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BB360: .word GXi_DmaId +_020BB364: .word UNK_021D1C88 +_020BB368: .word UNK_021D1C84 +_020BB36C: .word FUN_020BB370 + arm_func_end FUN_020BB2B0 + + ; _end + arm_func_start FUN_020BB370 +FUN_020BB370: ; 0x020BB370 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + arm_func_end FUN_020BB370 + + ; NNS_G3dGeWaitSendDL + arm_func_start FUN_020BB37C +FUN_020BB37C: ; 0x020BB37C + ldr r0, _020BB390 ; =UNK_021D1C84 +_020BB380: + ldr r1, [r0, #0x0] + cmp r1, #0x0 + bne _020BB380 + bx lr + .balign 4 +_020BB390: .word UNK_021D1C84 + arm_func_end FUN_020BB37C + + ; NNS_G3dGeFlushBuffer + arm_func_start FUN_020BB394 +FUN_020BB394: ; 0x020BB394 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020BB3FC ; =UNK_021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB3B0 + bl FUN_020BB37C +_020BB3B0: + ldr r0, _020BB400 ; =UNK_021D1C80 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r2, [r0, #0x0] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r1, _020BB404 ; =0x04000400 + add r0, r0, #0x4 + mov r2, r2, lsl #0x2 + bl MIi_CpuSend32 + ldr r0, _020BB400 ; =UNK_021D1C80 + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BB3FC: .word UNK_021D1C84 +_020BB400: .word UNK_021D1C80 +_020BB404: .word 0x04000400 + arm_func_end FUN_020BB394 + diff --git a/arm9/asm/NNS_G3D_glbstate.s b/arm9/asm/NNS_G3D_glbstate.s new file mode 100644 index 00000000..73b6609d --- /dev/null +++ b/arm9/asm/NNS_G3D_glbstate.s @@ -0,0 +1,436 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + ; NNS_G3dGlb + .global UNK_021CED18 +UNK_021CED18: ; 0x021CED18 + .space 0x8 + + ; NNS_G3dGlb + 0x8 + .global UNK_021CED20 +UNK_021CED20: ; 0x021CED20 + .space 0x44 + + ; NNS_G3dGlb + 0x4C + .global UNK_021CED64 +UNK_021CED64: ; 0x021CED64 + .space 0x34 + + ; NNS_G3dGlb + 0x80 + .global UNK_021CED98 +UNK_021CED98: ; 0x021CED98 + .space 0x28 + + ; NNS_G3dGlb + 0xA8 + .global UNK_021CEDC0 +UNK_021CEDC0: ; 0x021CEDC0 + .space 0x14 + + ; NNS_G3dGlb + 0xBC + .global UNK_021CEDD4 +UNK_021CEDD4: ; 0x021CEDD4 + .space 0x24 + + ; NNS_G3dGlb + 0xE0 + .global UNK_021CEDF8 +UNK_021CEDF8: ; 0x021CEDF8 + .space 0xc + + ; NNS_G3dGlb + 0xEC + .global UNK_021CEE04 +UNK_021CEE04: ; 0x021CEE04 + .space 0x14 + + ; NNS_G3dGlb + 0x100 + .global UNK_021CEE18 +UNK_021CEE18: ; 0x021CEE18 + .space 0x30 + + ; NNS_G3dGlb + 0x130 + .global UNK_021CEE48 +UNK_021CEE48: ; 0x021CEE48 + .space 0x30 + + ; NNS_G3dGlb + 0x160 + .global UNK_021CEE78 +UNK_021CEE78: ; 0x021CEE78 + .space 0xe0 + + ; NNS_G3dGlb + 0x240 + .global UNK_021CEF58 +UNK_021CEF58: ; 0x021CEF58 + .space 0xc + + ; NNS_G3dGlb + 0x24C + .global UNK_021CEF64 +UNK_021CEF64: ; 0x021CEF64 + .space 0xc + + ; NNS_G3dGlb + 0x258 + .global UNK_021CEF70 +UNK_021CEF70: ; 0x021CEF70 + .space 0xc + + .section .text + + ; NNS_G3dGlbGetViewPort + arm_func_start FUN_020B8200 +FUN_020B8200: ; 0x020B8200 + cmp r0, #0x0 + ldrne ip, _020B8260 ; =UNK_021CED18 + ldrne r12, [r12, #0xa0] + andne r12, r12, #0xff + strne r12, [r0, #0x0] + cmp r1, #0x0 + ldrne r0, _020B8260 ; =UNK_021CED18 + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x8 + andne r0, r0, #0xff + strne r0, [r1, #0x0] + cmp r2, #0x0 + ldrne r0, _020B8260 ; =UNK_021CED18 + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x10 + andne r0, r0, #0xff + strne r0, [r2, #0x0] + cmp r3, #0x0 + ldrne r0, _020B8260 ; =UNK_021CED18 + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x18 + andne r0, r0, #0xff + strne r0, [r3, #0x0] + bx lr + .balign 4 +_020B8260: .word UNK_021CED18 + arm_func_end FUN_020B8200 + + ; NNS_G3dGlbGetInvWV + arm_func_start FUN_020B8264 +FUN_020B8264: ; 0x020B8264 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B829C ; =UNK_021CED18 + ldr r0, [r0, #0xfc] + ands r0, r0, #0x80 + bne _020B8290 + bl FUN_020B82E4 + ldr r0, _020B829C ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + orr r1, r1, #0x80 + str r1, [r0, #0xfc] +_020B8290: + ldr r0, _020B82A0 ; =UNK_021CEE78 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B829C: .word UNK_021CED18 +_020B82A0: .word UNK_021CEE78 + arm_func_end FUN_020B8264 + + ; NNS_G3dGlbGetWV + arm_func_start FUN_020B82A4 +FUN_020B82A4: ; 0x020B82A4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B82DC ; =UNK_021CED18 + ldr r0, [r0, #0xfc] + ands r0, r0, #0x80 + bne _020B82D0 + bl FUN_020B82E4 + ldr r0, _020B82DC ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + orr r1, r1, #0x80 + str r1, [r0, #0xfc] +_020B82D0: + ldr r0, _020B82E0 ; =UNK_021CEE48 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B82DC: .word UNK_021CED18 +_020B82E0: .word UNK_021CEE48 + arm_func_end FUN_020B82A4 + + ; calcSrtCameraMtx_ + arm_func_start FUN_020B82E4 +FUN_020B82E4: ; 0x020B82E4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B8330 ; =UNK_021CEDD4 + ldr r1, _020B8334 ; =UNK_021CED64 + ldr r2, _020B8338 ; =UNK_021CEE48 + bl MTX_Concat43 + ldr r3, _020B833C ; =UNK_021CED18 + ldr r0, _020B8338 ; =UNK_021CEE48 + ldr r2, [r3, #0xf4] + mov r1, r0 + str r2, [sp, #0x0] + ldr r2, [r3, #0xec] + ldr r3, [r3, #0xf0] + bl MTX_ScaleApply43 + ldr r0, _020B8338 ; =UNK_021CEE48 + ldr r1, _020B8340 ; =UNK_021CEE78 + bl MTX_Inverse43 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B8330: .word UNK_021CEDD4 +_020B8334: .word UNK_021CED64 +_020B8338: .word UNK_021CEE48 +_020B833C: .word UNK_021CED18 +_020B8340: .word UNK_021CEE78 + arm_func_end FUN_020B82E4 + + ; NNS_G3dGlbGetInvV + arm_func_start FUN_020B8344 +FUN_020B8344: ; 0x020B8344 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B8384 ; =UNK_021CED18 + ldr r0, [r0, #0xfc] + ands r0, r0, #0x8 + bne _020B8378 + ldr r0, _020B8388 ; =UNK_021CED64 + ldr r1, _020B838C ; =UNK_021CEE18 + bl MTX_Inverse43 + ldr r0, _020B8384 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + orr r1, r1, #0x8 + str r1, [r0, #0xfc] +_020B8378: + ldr r0, _020B838C ; =UNK_021CEE18 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B8384: .word UNK_021CED18 +_020B8388: .word UNK_021CED64 +_020B838C: .word UNK_021CEE18 + arm_func_end FUN_020B8344 + + ; NNS_G3dGlbPolygonAttr + arm_func_start FUN_020B8390 +FUN_020B8390: ; 0x020B8390 + orr r0, r0, r1, lsl #0x4 + ldr r1, [sp, #0x4] + orr r0, r0, r2, lsl #0x6 + orr r0, r1, r0 + ldr r2, [sp, #0x0] + orr r1, r0, r3, lsl #0x18 + ldr r0, _020B83B8 ; =UNK_021CED18 + orr r1, r1, r2, lsl #0x10 + str r1, [r0, #0x9c] + bx lr + .balign 4 +_020B83B8: .word UNK_021CED18 + arm_func_end FUN_020B8390 + + ; NNS_G3dGlbMaterialColorSpecEmi + arm_func_start FUN_020B83BC +FUN_020B83BC: ; 0x020B83BC + cmp r2, #0x0 + movne r2, #0x1 + orr r1, r0, r1, lsl #0x10 + moveq r2, #0x0 + ldr r0, _020B83DC ; =UNK_021CED18 + orr r1, r1, r2, lsl #0xf + str r1, [r0, #0x98] + bx lr + .balign 4 +_020B83DC: .word UNK_021CED18 + arm_func_end FUN_020B83BC + + ; NNS_G3dGlbMaterialColorDiffAmb + arm_func_start FUN_020B83E0 +FUN_020B83E0: ; 0x020B83E0 + cmp r2, #0x0 + movne r2, #0x1 + orr r1, r0, r1, lsl #0x10 + moveq r2, #0x0 + ldr r0, _020B8400 ; =UNK_021CED18 + orr r1, r1, r2, lsl #0xf + str r1, [r0, #0x94] + bx lr + .balign 4 +_020B8400: .word UNK_021CED18 + arm_func_end FUN_020B83E0 + + ; NNS_G3dGlbLightColor + arm_func_start FUN_020B8404 +FUN_020B8404: ; 0x020B8404 + ldr r2, _020B8414 ; =UNK_021CEDC0 + orr r1, r1, r0, lsl #0x1e + str r1, [r2, r0, lsl #0x2] + bx lr + .balign 4 +_020B8414: .word UNK_021CEDC0 + arm_func_end FUN_020B8404 + + ; NNS_G3dGlbLightVector + arm_func_start FUN_020B8418 +FUN_020B8418: ; 0x020B8418 + stmdb sp!, {r4,lr} + ldr ip, _020B8444 ; =0x000003FF + ldr lr, _020B8448 ; =UNK_021CED98 + and r4, r12, r1, asr #0x3 + and r1, r12, r2, asr #0x3 + and r2, r12, r3, asr #0x3 + orr r1, r4, r1, lsl #0xa + orr r1, r1, r2, lsl #0x14 + orr r1, r1, r0, lsl #0x1e + str r1, [lr, r0, lsl #0x2] + ldmia sp!, {r4,pc} + .balign 4 +_020B8444: .word 0x000003FF +_020B8448: .word UNK_021CED98 + arm_func_end FUN_020B8418 + + ; NNS_G3dGlbSetBaseScale + arm_func_start FUN_020B844C +FUN_020B844C: ; 0x020B844C + ldr r3, _020B846C ; =UNK_021CEE04 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + ldr r0, _020B8470 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + bic r1, r1, #0xa4 + str r1, [r0, #0xfc] + bx lr + .balign 4 +_020B846C: .word UNK_021CEE04 +_020B8470: .word UNK_021CED18 + arm_func_end FUN_020B844C + + ; NNS_G3dGlbSetBaseTrans + arm_func_start FUN_020B8474 +FUN_020B8474: ; 0x020B8474 + ldr r3, _020B8494 ; =UNK_021CEDF8 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + ldr r0, _020B8498 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + bic r1, r1, #0xa4 + str r1, [r0, #0xfc] + bx lr + .balign 4 +_020B8494: .word UNK_021CEDF8 +_020B8498: .word UNK_021CED18 + arm_func_end FUN_020B8474 + + ; NNS_G3dGlbFlushP + arm_func_start FUN_020B849C +FUN_020B849C: ; 0x020B849C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B84D4 ; =UNK_021CED18 + mov r2, #0x3e + ldr r0, [r1], #0x4 + bl FUN_020BB1C0 + ldr r0, _020B84D4 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + bic r1, r1, #0x1 + str r1, [r0, #0xfc] + bic r1, r1, #0x2 + str r1, [r0, #0xfc] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B84D4: .word UNK_021CED18 + arm_func_end FUN_020B849C + + ; NNS_G3dGlbInit + arm_func_start FUN_020B84D8 +FUN_020B84D8: ; 0x020B84D8 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r8, _020B85F4 ; =0x17101610 + ldr r1, _020B85F8 ; =UNK_021CED18 + ldr r5, _020B85FC ; =0x32323232 + ldr r4, _020B8600 ; =0x60293130 + ldr r3, _020B8604 ; =0x33333333 + ldr r2, _020B8608 ; =0x002A1B19 + mov r7, #0x0 + mov r6, #0x2 + ldr r0, _020B860C ; =UNK_021CED64 + str r8, [r1, #0x0] + str r7, [r1, #0x4] + str r6, [r1, #0x48] + str r5, [r1, #0x7c] + str r4, [r1, #0x90] + str r3, [r1, #0xa4] + str r2, [r1, #0xb8] + bl MTX_Identity43_ + ldr r0, _020B8610 ; =UNK_021CED20 + bl MTX_Identity44_ + mov r2, r7 + ldr r1, _020B85F8 ; =UNK_021CED18 + ldr r7, _020B8614 ; =0x4210C210 + ldr r0, _020B8618 ; =0x40000200 + ldr lr, _020B861C ; =0x2D8B62D8 + ldr sb, _020B8620 ; =0x800001FF + ldr r8, _020B8624 ; =0xC0080000 + ldr r6, _020B8628 ; =0x001F008F + ldr r5, _020B862C ; =0xBFFF0000 + ldr r4, _020B8630 ; =0x00007FFF + ldr ip, _020B8634 ; =0x800003E0 + ldr r3, _020B8638 ; =0xC0007C00 + str r0, [r1, #0x84] + str lr, [r1, #0x80] + mov lr, #0x4000001f + ldr r0, _020B863C ; =UNK_021CEDD4 + str r9, [r1, #0x88] + str r8, [r1, #0x8c] + str r7, [r1, #0x94] + str r7, [r1, #0x98] + str r6, [r1, #0x9c] + str r5, [r1, #0xa0] + str r4, [r1, #0xa8] + str lr, [r1, #0xac] + str r12, [r1, #0xb0] + str r3, [r1, #0xb4] + str r2, [r1, #0xe0] + str r2, [r1, #0xe4] + str r2, [r1, #0xe8] + bl MTX_Identity33_ + mov r3, #0x1000 + ldr r0, _020B85F8 ; =UNK_021CED18 + mov r2, #0x0 + rsb r1, r3, #0x0 + str r3, [r0, #0xec] + str r3, [r0, #0xf0] + str r3, [r0, #0xf4] + str r2, [r0, #0xf8] + str r2, [r0, #0xfc] + str r2, [r0, #0x248] + str r2, [r0, #0x244] + str r2, [r0, #0x240] + str r2, [r0, #0x254] + str r2, [r0, #0x24c] + str r3, [r0, #0x250] + str r2, [r0, #0x25c] + str r2, [r0, #0x258] + str r1, [r0, #0x260] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B85F4: .word 0x17101610 +_020B85F8: .word UNK_021CED18 +_020B85FC: .word 0x32323232 +_020B8600: .word 0x60293130 +_020B8604: .word 0x33333333 +_020B8608: .word 0x002A1B19 +_020B860C: .word UNK_021CED64 +_020B8610: .word UNK_021CED20 +_020B8614: .word 0x4210C210 +_020B8618: .word 0x40000200 +_020B861C: .word 0x2D8B62D8 +_020B8620: .word 0x800001FF +_020B8624: .word 0xC0080000 +_020B8628: .word 0x001F008F +_020B862C: .word 0xBFFF0000 +_020B8630: .word 0x00007FFF +_020B8634: .word 0x800003E0 +_020B8638: .word 0xC0007C00 +_020B863C: .word UNK_021CEDD4 + arm_func_end FUN_020B84D8 + diff --git a/arm9/asm/NNS_G3D_kernel.s b/arm9/asm/NNS_G3D_kernel.s new file mode 100644 index 00000000..71052927 --- /dev/null +++ b/arm9/asm/NNS_G3D_kernel.s @@ -0,0 +1,885 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020B772C +FUN_020B772C: ; 0x020B772C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + ldrb r0, [r6, #0x9] + mov r5, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r7,pc} + add r4, r6, #0x8 +_020B7750: + ldrh r0, [r6, #0xe] + ldrh r1, [r4, r0] + add r0, r4, r0 + mla r0, r1, r5, r0 + ldr r0, [r0, #0x4] + add r7, r6, r0 + mov r0, r7 + bl FUN_020B79A4 + mov r0, r7 + bl FUN_020B780C + ldrb r0, [r6, #0x9] + add r5, r5, #0x1 + cmp r5, r0 + blo _020B7750 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020B772C + + ; _end + arm_func_start FUN_020B7790 +FUN_020B7790: ; 0x020B7790 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + ldrb r0, [r8, #0x9] + mov r7, r1 + mov r5, #0x1 + cmp r0, #0x0 + mov r6, #0x0 + bls _020B7800 + add r4, r8, #0x8 +_020B77B8: + ldrh r0, [r8, #0xe] + mov r1, r7 + ldrh r2, [r4, r0] + add r0, r4, r0 + mla r0, r2, r6, r0 + ldr r0, [r0, #0x4] + add r9, r8, r0 + mov r0, r9 + bl FUN_020B7A04 + and r5, r5, r0 + mov r0, r9 + mov r1, r7 + bl FUN_020B7864 + ldrb r1, [r8, #0x9] + add r6, r6, #0x1 + and r5, r5, r0 + cmp r6, r1 + blo _020B77B8 +_020B7800: + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + arm_func_end FUN_020B7790 + + ; _end + arm_func_start FUN_020B780C +FUN_020B780C: ; 0x020B780C + ldr r2, [r0, #0x8] + mov r1, #0x0 + add r2, r0, r2 + ldrh r0, [r2, #0x2] + add r12, r2, r0 + ldrb r0, [r12, #0x1] + cmp r0, #0x0 + bxls lr +_020B782C: + ldrh r2, [r12, #0x6] + ldrh r0, [r12, r2] + add r2, r12, r2 + add r2, r2, #0x4 + mla r3, r0, r1, r2 + ldrb r0, [r3, #0x3] + add r1, r1, #0x1 + ands r2, r0, #0x1 + bicne r0, r0, #0x1 + strneb r0, [r3, #0x3] + ldrb r0, [r12, #0x1] + cmp r1, r0 + blo _020B782C + bx lr + arm_func_end FUN_020B780C + + ; _end + arm_func_start FUN_020B7864 +FUN_020B7864: ; 0x020B7864 + stmdb sp!, {r4-r10,lr} + ldr r2, [r0, #0x8] + mov r10, r1 + add r9, r0, r2 + ldrh r0, [r9, #0x2] + mov r6, #0x1 + mov r7, #0x0 + add r8, r9, r0 + ldrb r0, [r8, #0x1] + cmp r0, #0x0 + bls _020B7908 + mov r5, r7 + mov r4, r7 +_020B7898: + ldrh r1, [r8, #0x6] + ldrh r0, [r10, #0x34] + add r2, r8, r1 + ldrh r1, [r2, #0x2] + add r0, r10, r0 + add r1, r2, r1 + add r1, r1, r5 + bl FUN_020BC2A0 + movs r3, r0 + beq _020B78F0 + ldrh r1, [r8, #0x6] + ldrh r0, [r8, r1] + add r1, r8, r1 + add r1, r1, #0x4 + mla r1, r0, r7, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + bne _020B78F4 + mov r0, r9 + mov r2, r10 + bl FUN_020B7910 + b _020B78F4 +_020B78F0: + mov r6, r4 +_020B78F4: + ldrb r0, [r8, #0x1] + add r7, r7, #0x1 + add r5, r5, #0x10 + cmp r7, r0 + blo _020B7898 +_020B7908: + mov r0, r6 + ldmia sp!, {r4-r10,pc} + arm_func_end FUN_020B7864 + + ; _end + arm_func_start FUN_020B7910 +FUN_020B7910: ; 0x020B7910 + stmdb sp!, {r4-r6,lr} + ldrh r5, [r1, #0x0] + ldr r2, [r2, #0x2c] + ldrh r4, [r3, #0x2] + mov r2, r2, lsl #0x10 + add r12, r0, r5 + mov r5, r2, lsr #0x10 + ands r2, r4, #0x1 + ldrh r4, [r3, #0x0] + moveq r3, r5, lsl #0xf + moveq r5, r3, lsr #0x10 + moveq r2, r4, lsl #0xf + moveq r4, r2, lsr #0x10 + ldrb r3, [r1, #0x2] + mov r2, #0x0 + cmp r3, #0x0 + bls _020B7994 + add r3, r4, r5 + mov r3, r3, lsl #0x10 + add r6, r0, #0x4 + mov r4, r3, lsr #0x10 +_020B7964: + ldrh r5, [r0, #0xa] + ldrb r3, [r12, r2] + add r2, r2, #0x1 + ldrh lr, [r6, r5] + add r5, r6, r5 + mla r3, lr, r3, r5 + ldr r3, [r3, #0x4] + add r3, r0, r3 + strh r4, [r3, #0x1c] + ldrb r3, [r1, #0x2] + cmp r2, r3 + blo _020B7964 +_020B7994: + ldrb r0, [r1, #0x3] + orr r0, r0, #0x1 + strb r0, [r1, #0x3] + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020B7910 + + ; _end + arm_func_start FUN_020B79A4 +FUN_020B79A4: ; 0x020B79A4 + stmdb sp!, {r4-r6,lr} + ldr r2, [r0, #0x8] + mov r4, #0x0 + ldrh r1, [r0, r2] + add r6, r0, r2 + add r5, r6, r1 + ldrb r0, [r5, #0x1] + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020B79C8: + ldrh r1, [r5, #0x6] + ldrh r0, [r5, r1] + add r1, r5, r1 + add r1, r1, #0x4 + mla r1, r0, r4, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + beq _020B79F0 + mov r0, r6 + bl FUN_020B7AB8 +_020B79F0: + ldrb r0, [r5, #0x1] + add r4, r4, #0x1 + cmp r4, r0 + blo _020B79C8 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020B79A4 + + ; _end + arm_func_start FUN_020B7A04 +FUN_020B7A04: ; 0x020B7A04 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + mov r10, r1 + ldrh r1, [r0, r2] + add r9, r0, r2 + mov r11, #0x1 + add r8, r9, r1 + ldrb r0, [r8, #0x1] + mov r7, #0x0 + cmp r0, #0x0 + bls _020B7AAC + mov r6, r7 + mov r4, r7 + add r5, r10, #0x3c +_020B7A40: + ldrh r1, [r8, #0x6] + mov r0, r5 + add r2, r8, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC2A0 + movs r3, r0 + beq _020B7A94 + ldrh r1, [r8, #0x6] + ldrh r0, [r8, r1] + add r1, r8, r1 + add r1, r1, #0x4 + mla r1, r0, r7, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + bne _020B7A98 + mov r0, r9 + mov r2, r10 + bl FUN_020B7B40 + b _020B7A98 +_020B7A94: + mov r11, r4 +_020B7A98: + ldrb r0, [r8, #0x1] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020B7A40 +_020B7AAC: + mov r0, r11 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020B7A04 + + ; releaseMdlTex_Internal_ + arm_func_start FUN_020B7AB8 +FUN_020B7AB8: ; 0x020B7AB8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrh r4, [r1, #0x0] + ldrb r2, [r1, #0x2] + mov r3, #0x0 + add r12, r0, r4 + cmp r2, #0x0 + bls _020B7B28 + add r2, r0, #0x4 + mov r5, #0x1000 + ldr lr, _020B7B3C ; =0xC00F0000 +_020B7AE4: + ldrh r7, [r0, #0xa] + ldrb r4, [r12, r3] + add r3, r3, #0x1 + ldrh r6, [r2, r7] + add r7, r2, r7 + mla r4, r6, r4, r7 + ldr r4, [r4, #0x4] + add r6, r0, r4 + ldr r4, [r6, #0x14] + and r4, r4, lr + str r4, [r6, #0x14] + str r5, [r6, #0x24] + ldr r4, [r6, #0x24] + str r4, [r6, #0x28] + ldrb r4, [r1, #0x2] + cmp r3, r4 + blo _020B7AE4 +_020B7B28: + ldrb r0, [r1, #0x3] + bic r0, r0, #0x1 + strb r0, [r1, #0x3] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B7B3C: .word 0xC00F0000 + arm_func_end FUN_020B7AB8 + + ; bindMdlTex_Internal_ + arm_func_start FUN_020B7B40 +FUN_020B7B40: ; 0x020B7B40 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r11, r1 + mov r9, r3 + ldr r1, [r9, #0x0] + mov r10, r0 + and r0, r1, #0x1c000000 + cmp r0, #0x14000000 + ldrh r3, [r11, #0x0] + ldrne r1, [r2, #0x8] + mov r8, #0x0 + add r0, r10, r3 + str r0, [sp, #0x4] + ldrne r0, _020B7C50 ; =0x0000FFFF + andne r0, r1, r0 + strne r0, [sp, #0x0] + ldreq r1, [r2, #0x18] + ldreq r0, _020B7C50 ; =0x0000FFFF + andeq r0, r1, r0 + streq r0, [sp, #0x0] + ldrb r0, [r11, #0x2] + cmp r0, #0x0 + bls _020B7C3C + mov r4, #0x1000 + add r5, r10, #0x4 +_020B7BA4: + ldrh r6, [r10, #0xa] + ldr r0, [sp, #0x4] + ldr r1, [r9, #0x0] + ldrb r2, [r0, r8] + ldrh r3, [r5, r6] + ldr r0, [sp, #0x0] + add r6, r5, r6 + add r0, r1, r0 + mla r1, r3, r2, r6 + ldr r1, [r1, #0x4] + add r6, r10, r1 + ldr r1, [r6, #0x14] + orr r0, r1, r0 + str r0, [r6, #0x14] + ldr r3, [r9, #0x4] + ldr r0, _020B7C54 ; =0x000007FF + ldrh r1, [r6, #0x20] + and r2, r3, r0 + and r7, r0, r3, lsr #0xb + cmp r2, r1 + moveq r0, r4 + beq _020B7C08 + mov r0, r2, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020B7C08: + str r0, [r6, #0x24] + ldrh r1, [r6, #0x22] + cmp r7, r1 + moveq r0, r4 + beq _020B7C28 + mov r0, r7, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020B7C28: + str r0, [r6, #0x28] + ldrb r0, [r11, #0x2] + add r8, r8, #0x1 + cmp r8, r0 + blo _020B7BA4 +_020B7C3C: + ldrb r0, [r11, #0x3] + orr r0, r0, #0x1 + strb r0, [r11, #0x3] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B7C50: .word 0x0000FFFF +_020B7C54: .word 0x000007FF + arm_func_end FUN_020B7B40 + + ; _end + arm_func_start FUN_020B7C58 +FUN_020B7C58: ; 0x020B7C58 + ldrh r2, [r0, #0x32] + mov r1, #0x0 + bic r2, r2, #0x1 + strh r2, [r0, #0x32] + ldr r2, [r0, #0x2c] + str r1, [r0, #0x2c] + mov r0, r2 + bx lr + arm_func_end FUN_020B7C58 + + ; NNS_G3dPlttLoad + arm_func_start FUN_020B7C78 +FUN_020B7C78: ; 0x020B7C78 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r4, r1 + mov r5, r0 + beq _020B7C90 + bl GX_BeginLoadTexPltt +_020B7C90: + ldrh r2, [r5, #0x30] + ldr r0, [r5, #0x38] + ldr r3, [r5, #0x2c] + ldr r1, _020B7CD8 ; =0x0000FFFF + add r0, r5, r0 + and r1, r3, r1 + mov r1, r1, lsl #0x3 + mov r2, r2, lsl #0x3 + bl GX_LoadTexPltt + ldrh r0, [r5, #0x32] + cmp r4, #0x0 + addeq sp, sp, #0x4 + orr r0, r0, #0x1 + strh r0, [r5, #0x32] + ldmeqia sp!, {r4-r5,pc} + bl GX_EndLoadTexPltt + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B7CD8: .word 0x0000FFFF + arm_func_end FUN_020B7C78 + + ; _end + arm_func_start FUN_020B7CDC +FUN_020B7CDC: ; 0x020B7CDC + str r1, [r0, #0x2c] + bx lr + arm_func_end FUN_020B7CDC + + ; _end + arm_func_start FUN_020B7CE4 +FUN_020B7CE4: ; 0x020B7CE4 + ldrh r0, [r0, #0x30] + mov r0, r0, lsl #0x3 + bx lr + arm_func_end FUN_020B7CE4 + + ; _end + arm_func_start FUN_020B7CF0 +FUN_020B7CF0: ; 0x020B7CF0 + ldrh r12, [r0, #0x10] + mov r3, #0x0 + bic r12, r12, #0x1 + strh r12, [r0, #0x10] + ldrh r12, [r0, #0x20] + bic r12, r12, #0x1 + strh r12, [r0, #0x20] + ldr r12, [r0, #0x8] + str r12, [r1, #0x0] + str r3, [r0, #0x8] + ldr r1, [r0, #0x18] + str r1, [r2, #0x0] + str r3, [r0, #0x18] + bx lr + arm_func_end FUN_020B7CF0 + + ; NNS_G3dTexLoad + arm_func_start FUN_020B7D28 +FUN_020B7D28: ; 0x020B7D28 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + movs r8, r1 + mov r9, r0 + beq _020B7D40 + bl GX_BeginLoadTex +_020B7D40: + ldrh r0, [r9, #0xc] + movs r2, r0, lsl #0x3 + beq _020B7D74 + ldr r1, [r9, #0x8] + ldr r0, _020B7DF4 ; =0x0000FFFF + ldr r3, [r9, #0x14] + and r1, r1, r0 + add r0, r9, r3 + mov r1, r1, lsl #0x3 + bl GX_LoadTex + ldrh r0, [r9, #0x10] + orr r0, r0, #0x1 + strh r0, [r9, #0x10] +_020B7D74: + ldrh r0, [r9, #0x1c] + movs r7, r0, lsl #0x3 + beq _020B7DDC + ldr r1, [r9, #0x18] + ldr r0, _020B7DF4 ; =0x0000FFFF + ldr r3, [r9, #0x24] + and r4, r1, r0 + mov r5, r4, lsl #0x3 + ldr r6, [r9, #0x28] + mov r1, r5 + mov r2, r7 + add r0, r9, r3 + add r6, r9, r6 + bl GX_LoadTex + ldr r0, _020B7DF8 ; =0x0001FFFF + and r1, r5, #0x40000 + and r0, r0, r4, lsl #0x3 + mov r0, r0, lsr #0x1 + add r2, r0, #0x20000 + mov r0, r6 + add r1, r2, r1, lsr #0x2 + mov r2, r7, lsr #0x1 + bl GX_LoadTex + ldrh r0, [r9, #0x20] + orr r0, r0, #0x1 + strh r0, [r9, #0x20] +_020B7DDC: + cmp r8, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r9,pc} + bl GX_EndLoadTex + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B7DF4: .word 0x0000FFFF +_020B7DF8: .word 0x0001FFFF + arm_func_end FUN_020B7D28 + + ; _end + arm_func_start FUN_020B7DFC +FUN_020B7DFC: ; 0x020B7DFC + cmp r1, #0x0 + strne r1, [r0, #0x8] + cmp r2, #0x0 + strne r2, [r0, #0x18] + bx lr + arm_func_end FUN_020B7DFC + + ; _end + arm_func_start FUN_020B7E10 +FUN_020B7E10: ; 0x020B7E10 + ldrh r0, [r0, #0x1c] + mov r0, r0, lsl #0x3 + bx lr + arm_func_end FUN_020B7E10 + + ; _end + arm_func_start FUN_020B7E1C +FUN_020B7E1C: ; 0x020B7E1C + ldrh r0, [r0, #0xc] + mov r0, r0, lsl #0x3 + bx lr + arm_func_end FUN_020B7E1C + + ; _end + arm_func_start FUN_020B7E28 +FUN_020B7E28: ; 0x020B7E28 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + add r0, r5, #0x8 + mov r4, r1 + bl FUN_020B7E88 + cmp r0, #0x0 + bne _020B7E74 + mov r1, r4 + add r0, r5, #0x10 + bl FUN_020B7E88 + cmp r0, #0x0 + bne _020B7E74 + mov r1, r4 + add r0, r5, #0x18 + bl FUN_020B7E88 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020B7E74: + ldr r0, [r5, #0x0] + orr r0, r0, #0x10 + str r0, [r5, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020B7E28 + + ; _end + arm_func_start FUN_020B7E88 +FUN_020B7E88: ; 0x020B7E88 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r2, r1 + bne _020B7EB8 + ldr r3, [r2, #0x10] + mov r2, #0x0 + str r3, [r0, #0x0] + str r2, [r1, #0x10] + mov r0, #0x1 + bx lr +_020B7EB8: + ldr r3, [r2, #0x10] + cmp r3, #0x0 + beq _020B7EF4 +_020B7EC4: + cmp r3, r1 + bne _020B7EE4 + ldr r1, [r3, #0x10] + mov r0, #0x0 + str r1, [r2, #0x10] + str r0, [r3, #0x10] + mov r0, #0x1 + bx lr +_020B7EE4: + mov r2, r3 + ldr r3, [r3, #0x10] + cmp r3, #0x0 + bne _020B7EC4 +_020B7EF4: + mov r0, #0x0 + bx lr + arm_func_end FUN_020B7E88 + + ; _end + arm_func_start FUN_020B7EFC +FUN_020B7EFC: ; 0x020B7EFC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + ldr r2, [r4, #0x8] + mov r5, r0 + ldrb r0, [r2, #0x0] + cmp r0, #0x4a + beq _020B7F50 + cmp r0, #0x4d + beq _020B7F34 + cmp r0, #0x56 + beq _020B7F6C + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F34: + add r0, r5, #0x3c + bl FUN_020B7F88 + mov r1, r4 + add r0, r5, #0x8 + bl FUN_020B7FF8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F50: + add r0, r5, #0x44 + bl FUN_020B7F88 + mov r1, r4 + add r0, r5, #0x10 + bl FUN_020B7FF8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F6C: + add r0, r5, #0x4c + bl FUN_020B7F88 + mov r1, r4 + add r0, r5, #0x18 + bl FUN_020B7FF8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020B7EFC + + ; _end + arm_func_start FUN_020B7F88 +FUN_020B7F88: ; 0x020B7F88 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r3, #0x1 + mov r4, #0x0 +_020B7FA4: + ldrb r2, [r1, #0x19] + mov r5, r4 + cmp r2, #0x0 + ble _020B7FE4 +_020B7FB4: + add r2, r1, r5, lsl #0x1 + ldrh r2, [r2, #0x1a] + ands r2, r2, #0x100 + movne lr, r5, asr #0x5 + andne r2, r5, #0x1f + ldrne r12, [r0, lr, lsl #0x2] + add r5, r5, #0x1 + orrne r2, r12, r3, lsl r2 + strne r2, [r0, lr, lsl #0x2] + ldrb r2, [r1, #0x19] + cmp r5, r2 + blt _020B7FB4 +_020B7FE4: + ldr r1, [r1, #0x10] + cmp r1, #0x0 + bne _020B7FA4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020B7F88 + + ; _end + arm_func_start FUN_020B7FF8 +FUN_020B7FF8: ; 0x020B7FF8 + ldr r12, [r0, #0x0] + cmp r12, #0x0 + streq r1, [r0, #0x0] + bxeq lr + ldr r3, [r12, #0x10] + cmp r3, #0x0 + bne _020B8058 + ldrb r3, [r12, #0x18] + ldrb r2, [r1, #0x18] + cmp r3, r2 + bls _020B8050 + ldr r2, [r1, #0x10] + mov r3, r1 + cmp r2, #0x0 + beq _020B8044 +_020B8034: + ldr r3, [r3, #0x10] + ldr r2, [r3, #0x10] + cmp r2, #0x0 + bne _020B8034 +_020B8044: + str r12, [r3, #0x10] + str r1, [r0, #0x0] + bx lr +_020B8050: + str r1, [r12, #0x10] + bx lr +_020B8058: + cmp r3, #0x0 + beq _020B80AC + ldrb r2, [r1, #0x18] +_020B8064: + ldrb r0, [r3, #0x18] + cmp r0, r2 + blo _020B809C + ldr r0, [r1, #0x10] + mov r2, r1 + cmp r0, #0x0 + beq _020B8090 +_020B8080: + ldr r2, [r2, #0x10] + ldr r0, [r2, #0x10] + cmp r0, #0x0 + bne _020B8080 +_020B8090: + str r1, [r12, #0x10] + str r3, [r2, #0x10] + bx lr +_020B809C: + mov r12, r3 + ldr r3, [r3, #0x10] + cmp r3, #0x0 + bne _020B8064 +_020B80AC: + str r1, [r12, #0x10] + bx lr + arm_func_end FUN_020B7FF8 + + ; NNS_G3dRenderObjInit + arm_func_start FUN_020B80B4 +FUN_020B80B4: ; 0x020B80B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r1, r5 + mov r0, #0x0 + mov r2, #0x54 + bl MIi_CpuClear32 + ldr r0, _020B8104 ; =UNK_021065B4 + ldr r1, _020B8108 ; =UNK_021065B0 + ldr r2, [r0, #0x0] + ldr r0, _020B810C ; =UNK_021065AC + str r2, [r5, #0xc] + ldr r1, [r1, #0x0] + str r1, [r5, #0x14] + ldr r0, [r0, #0x0] + str r0, [r5, #0x1c] + str r4, [r5, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B8104: .word UNK_021065B4 +_020B8108: .word UNK_021065B0 +_020B810C: .word UNK_021065AC + arm_func_end FUN_020B80B4 + + ; NNS_G3dAnmObjInit + arm_func_start FUN_020B8110 +FUN_020B8110: ; 0x020B8110 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r12, #0x0 + str r12, [r0, #0x0] + str r1, [r0, #0x8] + str r12, [r0, #0x10] + mov r4, #0x7f + strb r4, [r0, #0x18] + mov r4, #0x1000 + str r4, [r0, #0x4] + ldr lr, _020B81A4 ; =UNK_02106594 + str r3, [r0, #0x14] + ldr r6, [lr, #0x0] + cmp r6, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r7,pc} + ldrb r7, [r1, #0x0] + ldr r4, _020B81A8 ; =UNK_021065B8 +_020B8158: + ldrb r3, [r4, r12, lsl #0x3] + mov r5, r12, lsl #0x3 + cmp r7, r3 + bne _020B8190 + add r3, r4, r5 + ldrh lr, [r1, #0x2] + ldrh r3, [r3, #0x2] + cmp lr, r3 + bne _020B8190 + ldr r3, _020B81AC ; =UNK_021065BC + ldr r3, [r3, r5] + blx r3 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B8190: + add r12, r12, #0x1 + cmp r12, r6 + blo _020B8158 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B81A4: .word UNK_02106594 +_020B81A8: .word UNK_021065B8 +_020B81AC: .word UNK_021065BC + arm_func_end FUN_020B8110 + + ; _end + arm_func_start FUN_020B81B0 +FUN_020B81B0: ; 0x020B81B0 + ldrb r0, [r0, #0x0] + cmp r0, #0x4a + beq _020B81E4 + cmp r0, #0x4d + beq _020B81D0 + cmp r0, #0x56 + beq _020B81E4 + b _020B81F8 +_020B81D0: + ldrb r0, [r1, #0x18] + mov r0, r0, lsl #0x1 + add r0, r0, #0x1c + bic r0, r0, #0x3 + bx lr +_020B81E4: + ldrb r0, [r1, #0x17] + mov r0, r0, lsl #0x1 + add r0, r0, #0x1c + bic r0, r0, #0x3 + bx lr +_020B81F8: + mov r0, #0x0 + bx lr + arm_func_end FUN_020B81B0 + diff --git a/arm9/asm/NNS_G3D_maya.s b/arm9/asm/NNS_G3D_maya.s new file mode 100644 index 00000000..d7d26b5c --- /dev/null +++ b/arm9/asm/NNS_G3D_maya.s @@ -0,0 +1,609 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + ; calcTexMtx_ + .global UNK_021067B0 +UNK_021067B0: ; 0x021067B0 + .word FUN_020BEBD8 + .word FUN_020BEB00 + .word FUN_020BEA84 + .word FUN_020BEA3C + .word FUN_020BE954 + .word FUN_020BE894 + .word FUN_020BE850 + .word FUN_020BE82C + + .section .text + + ; NNSi_G3dSendTexSRTMaya + arm_func_start FUN_020BE6E4 +FUN_020BE6E4: ; 0x020BE6E4 + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r1, #0x0 + ands r0, r0, #0x8 + ldrne r0, _020BE820 ; =0x00101610 + mov r3, #0x3 + strne r0, [sp, #0x0] + ldreq r0, _020BE824 ; =0x00101810 + mov r2, #0x2 + streq r0, [sp, #0x0] + mov r0, #0x1000 + str r0, [sp, #0x44] + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x40] + str r1, [sp, #0x34] + str r1, [sp, #0x30] + str r1, [sp, #0x2c] + str r1, [sp, #0x28] + str r1, [sp, #0x24] + str r1, [sp, #0x20] + str r1, [sp, #0x14] + str r1, [sp, #0x10] + ldr r1, [r4, #0x0] + ldr r0, _020BE828 ; =UNK_021067B0 + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BE7B4 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BE7B4: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BE804 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BE804: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl FUN_020BB1C0 + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BE820: .word 0x00101610 +_020BE824: .word 0x00101810 +_020BE828: .word UNK_021067B0 + arm_func_end FUN_020BE6E4 + + ; _end + arm_func_start FUN_020BE82C +FUN_020BE82C: ; 0x020BE82C + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + arm_func_end FUN_020BE82C + + ; _end + arm_func_start FUN_020BE850 +FUN_020BE850: ; 0x020BE850 + ldr r2, [r1, #0x18] + mov r12, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r12, [r0, #0x4] + str r12, [r0, #0x30] + ldr r2, [r1, #0x1c] + ldrh r3, [r1, #0x2e] + mov r1, r2, lsl #0x1 + rsb r1, r1, #0x0 + add r1, r1, #0x2000 + mul r1, r3, r1 + mov r1, r1, lsl #0x3 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + arm_func_end FUN_020BE850 + + ; _end + arm_func_start FUN_020BE894 +FUN_020BE894: ; 0x020BE894 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + rsb r2, r2, #0x0 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh r1, [r5, #0x20] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2c] + add r0, r1, r0 + rsb r0, r0, #0x0 + add r0, r0, #0x1000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r6, #0x30] + ldrsh r1, [r5, #0x20] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2e] + sub r0, r1, r0 + add r0, r0, #0x1000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BE894 + + ; _end + arm_func_start FUN_020BE954 +FUN_020BE954: ; 0x020BE954 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r5, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r0, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r6, [r10, #0x0] + str r4, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + rsb r2, r5, #0x0 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + sub r1, r5, r4 + add r0, r7, r6 + ldrh r3, [r9, #0x2c] + ldr r2, [r9, #0x18] + sub r0, r2, r0 + mul r0, r3, r0 + mov r0, r0, lsl #0x3 + str r0, [r10, #0x30] + ldrh r2, [r9, #0x2e] + ldr r0, [r9, #0x1c] + sub r0, r1, r0 + add r0, r0, #0x2000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r10, #0x34] + bl FX_GetDivResult + mul r0, r7, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020BE954 + + ; _end + arm_func_start FUN_020BEA3C +FUN_020BEA3C: ; 0x020BEA3C + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov r12, #0x0 + str r12, [r0, #0x4] + ldrh r2, [r1, #0x2c] + ldr r3, [r1, #0x24] + mul r2, r3, r2 + rsb r2, r2, #0x0 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x28] + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + arm_func_end FUN_020BEA3C + + ; _end + arm_func_start FUN_020BEA84 +FUN_020BEA84: ; 0x020BEA84 + stmdb sp!, {r4,lr} + ldr r3, [r1, #0x18] + mov r2, #0x0 + str r3, [r0, #0x0] + ldr r3, [r1, #0x1c] + str r3, [r0, #0x14] + str r2, [r0, #0x4] + ldr r4, [r1, #0x18] + ldr r3, [r1, #0x24] + ldrh lr, [r1, #0x2c] + smull r12, r3, r4, r3 + mov r4, r12, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + rsb r3, r4, #0x0 + mul r3, lr, r3 + str r3, [r0, #0x30] + ldr r4, [r1, #0x1c] + ldr r12, [r1, #0x28] + mov r3, r4, lsl #0x1 + smull lr, r12, r4, r12 + rsb r4, r3, #0x0 + mov r3, lr, lsr #0x8 + ldrh lr, [r1, #0x2e] + add r1, r4, #0x2000 + orr r3, r3, r12, lsl #0x18 + mul r4, lr, r1 + mul r1, lr, r3 + add r1, r1, r4, lsl #0x3 + str r1, [r0, #0x34] + str r2, [r0, #0x10] + ldmia sp!, {r4,pc} + arm_func_end FUN_020BEA84 + + ; _end + arm_func_start FUN_020BEB00 +FUN_020BEB00: ; 0x020BEB00 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + rsb r2, r2, #0x0 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh r2, [r5, #0x20] + ldrsh r1, [r5, #0x22] + ldrh r3, [r5, #0x2c] + ldr r0, [r5, #0x24] + add r1, r2, r1 + rsb r1, r1, #0x0 + add r1, r1, #0x1000 + mul r2, r3, r1 + mul r1, r0, r3 + mov r0, r2, lsl #0x3 + sub r0, r0, r1, lsl #0x4 + str r0, [r6, #0x30] + ldrsh r2, [r5, #0x20] + ldrsh r1, [r5, #0x22] + ldrh r3, [r5, #0x2e] + ldr r0, [r5, #0x28] + sub r1, r2, r1 + add r1, r1, #0x1000 + mul r2, r3, r1 + mul r1, r0, r3 + mov r0, r2, lsl #0x3 + add r0, r0, r1, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BEB00 + + ; _end + arm_func_start FUN_020BEBD8 +FUN_020BEBD8: ; 0x020BEBD8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r5, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r0, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r6, [r10, #0x0] + str r4, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + rsb r2, r5, #0x0 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + sub r1, r5, r4 + add r2, r7, r6 + ldr r5, [r9, #0x18] + ldrh r0, [r9, #0x2c] + sub r3, r5, r2 + ldr r2, [r9, #0x24] + mul r4, r0, r3 + smull r3, r2, r5, r2 + mov r4, r4, lsl #0x3 + mov r3, r3, lsr #0x8 + orr r3, r3, r2, lsl #0x18 + mul r2, r0, r3 + sub r0, r4, r2 + str r0, [r10, #0x30] + ldr r4, [r9, #0x1c] + ldrh r3, [r9, #0x2e] + sub r0, r1, r4 + add r0, r0, #0x2000 + mul r2, r3, r0 + ldr r0, [r9, #0x28] + smull r1, r0, r4, r0 + mov r1, r1, lsr #0x8 + orr r1, r1, r0, lsl #0x18 + mul r0, r3, r1 + add r0, r0, r2, lsl #0x3 + str r0, [r10, #0x34] + bl FX_GetDivResult + mul r0, r7, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020BEBD8 + + ; NNSi_G3dGetJointScaleMaya + arm_func_start FUN_020BECEC +FUN_020BECEC: ; 0x020BECEC + stmdb sp!, {r4-r8,lr} + mov r12, r0 + ands r0, r3, #0x4 + ldrb r3, [r2, #0x3] + beq _020BED40 + ldr r1, [r12, #0x0] + ands r0, r3, #0x2 + orr r0, r1, #0x1 + str r0, [r12, #0x0] + beq _020BEDB8 + ldr r0, _020BEE2C ; =UNK_021CEF7C + ldrb r7, [r2, #0x1] + ldr r0, [r0, #0x0] + mov r1, #0x1 + add r6, r0, #0xc4 + mov r5, r7, lsr #0x5 + ldr r4, [r6, r5, lsl #0x2] + and r0, r7, #0x1f + orr r0, r4, r1, lsl r0 + str r0, [r6, r5, lsl #0x2] + b _020BEDB8 +_020BED40: + ldr r4, [r1, #0x0] + ands r0, r3, #0x2 + str r4, [r12, #0x4] + ldr r0, [r1, #0x4] + str r0, [r12, #0x8] + ldr r0, [r1, #0x8] + str r0, [r12, #0xc] + beq _020BEDB8 + ldr lr, _020BEE2C ; =UNK_021CEF7C + ldrb r0, [r2, #0x1] + ldr r4, [lr, #0x0] + mov lr, #0x18 + add r8, r4, #0xc4 + mov r7, r0, lsr #0x5 + and r4, r0, #0x1f + mov r5, #0x1 + mvn r4, r5, lsl r4 + ldr r6, [r8, r7, lsl #0x2] + mul r5, r0, lr + and r0, r6, r4 + str r0, [r8, r7, lsl #0x2] + ldr r4, [r1, #0xc] + ldr r0, _020BEE30 ; =UNK_021CFD8C + ldr lr, _020BEE34 ; =UNK_021CFD90 + str r4, [r0, r5] + ldr r4, [r1, #0x10] + ldr r0, _020BEE38 ; =UNK_021CFD94 + str r4, [lr, r5] + ldr r1, [r1, #0x14] + str r1, [r0, r5] +_020BEDB8: + ands r0, r3, #0x1 + beq _020BEE1C + ldrb r0, [r2, #0x2] + ldr r2, [r12, #0x0] + ldr r1, _020BEE2C ; =UNK_021CEF7C + orr r2, r2, #0x20 + str r2, [r12, #0x0] + ldr r2, [r1, #0x0] + mov r1, r0, lsr #0x5 + add r1, r2, r1, lsl #0x2 + and r2, r0, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r1, [r1, #0xc4] + ands r1, r2, r1 + ldrne r0, [r12, #0x0] + orrne r0, r0, #0x8 + strne r0, [r12, #0x0] + bne _020BEE1C + ldr r2, _020BEE30 ; =UNK_021CFD8C + mov r1, #0x18 + mla r1, r0, r1, r2 + add r3, r12, #0x10 + ldmia r1, {r0-r2} + stmia r3, {r0-r2} +_020BEE1C: + ldr r0, [r12, #0x0] + orr r0, r0, #0x10 + str r0, [r12, #0x0] + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BEE2C: .word UNK_021CEF7C +_020BEE30: .word UNK_021CFD8C +_020BEE34: .word UNK_021CFD90 +_020BEE38: .word UNK_021CFD94 + arm_func_end FUN_020BECEC + + ; _end + arm_func_start FUN_020BEE3C +FUN_020BEE3C: ; 0x020BEE3C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + mov r4, #0x0 + ands r0, r1, #0x4 + moveq r4, #0x1 + ands r0, r1, #0x20 + beq _020BEE94 + ands r0, r1, #0x8 + bne _020BEE94 + cmp r4, #0x0 + beq _020BEE84 + add r1, r5, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 + mov r4, #0x0 +_020BEE84: + add r1, r5, #0x10 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 +_020BEE94: + ldr r0, [r5, #0x0] + ands r0, r0, #0x2 + bne _020BEED0 + cmp r4, #0x0 + beq _020BEEBC + add r1, r5, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020BEEE8 +_020BEEBC: + add r1, r5, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020BEEE8 +_020BEED0: + cmp r4, #0x0 + beq _020BEEE8 + add r1, r5, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 +_020BEEE8: + ldr r0, [r5, #0x0] + ands r0, r0, #0x1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + add r1, r5, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020BEE3C + diff --git a/arm9/asm/NNS_G3D_mem.s b/arm9/asm/NNS_G3D_mem.s new file mode 100644 index 00000000..97d2c224 --- /dev/null +++ b/arm9/asm/NNS_G3D_mem.s @@ -0,0 +1,28 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; NNS_G3dFreeAnmObj + arm_func_start thunk_FUN_020ae84c +thunk_FUN_020ae84c: ; 0x020BB8C4 + ldr ip, _020BB8CC ; =FUN_020AE84C + bx r12 + .balign 4 +_020BB8CC: .word FUN_020AE84C + arm_func_end thunk_FUN_020ae84c + + ; _end + arm_func_start FUN_020BB8D0 +FUN_020BB8D0: ; 0x020BB8D0 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, r1 + mov r1, r2 + bl FUN_020B81B0 + mov r1, r0 + mov r0, r4 + bl FUN_020AE868 + ldmia sp!, {r4,pc} + arm_func_end FUN_020BB8D0 + diff --git a/arm9/asm/NNS_G3D_model.s b/arm9/asm/NNS_G3D_model.s new file mode 100644 index 00000000..437290e8 --- /dev/null +++ b/arm9/asm/NNS_G3D_model.s @@ -0,0 +1,687 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020BB8F4 +FUN_020BB8F4: ; 0x020BB8F4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB910: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBC74 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB910 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BB8F4 + + ; _end + arm_func_start FUN_020BB934 +FUN_020BB934: ; 0x020BB934 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB950: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBCB8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB950 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BB934 + + ; _end + arm_func_start FUN_020BB974 +FUN_020BB974: ; 0x020BB974 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB990: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBCFC + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB990 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BB974 + + ; _end + arm_func_start FUN_020BB9B4 +FUN_020BB9B4: ; 0x020BB9B4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB9D0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBD40 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB9D0 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BB9B4 + + ; _end + arm_func_start FUN_020BB9F4 +FUN_020BB9F4: ; 0x020BB9F4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBD84 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA10 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BB9F4 + + ; _end + arm_func_start FUN_020BBA34 +FUN_020BBA34: ; 0x020BBA34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBDC8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA50 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBA34 + + ; _end + arm_func_start FUN_020BBA74 +FUN_020BBA74: ; 0x020BBA74 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA90: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBE0C + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA90 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBA74 + + ; _end + arm_func_start FUN_020BBAB4 +FUN_020BBAB4: ; 0x020BBAB4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBAD0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBE50 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBAD0 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBAB4 + + ; _end + arm_func_start FUN_020BBAF4 +FUN_020BBAF4: ; 0x020BBAF4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBE94 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB10 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBAF4 + + ; _end + arm_func_start FUN_020BBB34 +FUN_020BBB34: ; 0x020BBB34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBED8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB50 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBB34 + + ; _end + arm_func_start FUN_020BBB74 +FUN_020BBB74: ; 0x020BBB74 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB90: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBF1C + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB90 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBB74 + + ; _end + arm_func_start FUN_020BBBB4 +FUN_020BBBB4: ; 0x020BBBB4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBBD0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBF60 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBBD0 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBBB4 + + ; _end + arm_func_start FUN_020BBBF4 +FUN_020BBBF4: ; 0x020BBBF4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBC10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBFA4 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBC10 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBBF4 + + ; _end + arm_func_start FUN_020BBC34 +FUN_020BBC34: ; 0x020BBC34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBC50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBFE8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBC50 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BBC34 + + ; _end + arm_func_start FUN_020BBC74 +FUN_020BBC74: ; 0x020BBC74 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x800 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x800 + streq r0, [r1, #0xc] + bx lr + arm_func_end FUN_020BBC74 + + ; _end + arm_func_start FUN_020BBCB8 +FUN_020BBCB8: ; 0x020BBCB8 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x1000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x1000 + streq r0, [r1, #0xc] + bx lr + arm_func_end FUN_020BBCB8 + + ; _end + arm_func_start FUN_020BBCFC +FUN_020BBCFC: ; 0x020BBCFC + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x2000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x2000 + streq r0, [r1, #0xc] + bx lr + arm_func_end FUN_020BBCFC + + ; _end + arm_func_start FUN_020BBD40 +FUN_020BBD40: ; 0x020BBD40 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x4000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x4000 + streq r0, [r1, #0xc] + bx lr + arm_func_end FUN_020BBD40 + + ; _end + arm_func_start FUN_020BBD84 +FUN_020BBD84: ; 0x020BBD84 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x8000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x8000 + streq r0, [r1, #0xc] + bx lr + arm_func_end FUN_020BBD84 + + ; _end + arm_func_start FUN_020BBDC8 +FUN_020BBDC8: ; 0x020BBDC8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x1f0000 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end FUN_020BBDC8 + + ; _end + arm_func_start FUN_020BBE0C +FUN_020BBE0C: ; 0x020BBE0C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x3f000000 + orr r0, r0, r2, lsl #0x18 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end FUN_020BBE0C + + ; _end + arm_func_start FUN_020BBE50 +FUN_020BBE50: ; 0x020BBE50 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0xc0 + orr r0, r0, r2, lsl #0x6 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end FUN_020BBE50 + + ; _end + arm_func_start FUN_020BBE94 +FUN_020BBE94: ; 0x020BBE94 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x30 + orr r0, r0, r2, lsl #0x4 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end FUN_020BBE94 + + ; _end + arm_func_start FUN_020BBED8 +FUN_020BBED8: ; 0x020BBED8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0xf + orr r0, r0, r2 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end FUN_020BBED8 + + ; NNS_G3dMdlSetMdlEmi + arm_func_start FUN_020BBF1C +FUN_020BBF1C: ; 0x020BBF1C + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + ldr r3, _020BBF5C ; =0x8000FFFF + add r4, r0, r12 + ldrh r0, [r4, #0xa] + add lr, r4, #0x4 + ldrh r12, [lr, r0] + add r0, lr, r0 + mla r0, r12, r1, r0 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldr r0, [r1, #0x8] + and r0, r0, r3 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0x8] + ldmia sp!, {r4,pc} + .balign 4 +_020BBF5C: .word 0x8000FFFF + arm_func_end FUN_020BBF1C + + ; _end + arm_func_start FUN_020BBF60 +FUN_020BBF60: ; 0x020BBF60 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + mov r3, #0x8000 + add r4, r0, r12 + ldrh r12, [r4, #0xa] + add lr, r4, #0x4 + rsb r0, r3, #0x0 + ldrh r3, [lr, r12] + add r12, lr, r12 + mla r1, r3, r1, r12 + ldr r1, [r1, #0x4] + add r3, r4, r1 + ldr r1, [r3, #0x8] + and r0, r1, r0 + orr r0, r0, r2 + str r0, [r3, #0x8] + ldmia sp!, {r4,pc} + arm_func_end FUN_020BBF60 + + ; NNS_G3dMdlSetMdlAmb + arm_func_start FUN_020BBFA4 +FUN_020BBFA4: ; 0x020BBFA4 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + ldr r3, _020BBFE4 ; =0x8000FFFF + add r4, r0, r12 + ldrh r0, [r4, #0xa] + add lr, r4, #0x4 + ldrh r12, [lr, r0] + add r0, lr, r0 + mla r0, r12, r1, r0 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldr r0, [r1, #0x4] + and r0, r0, r3 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0x4] + ldmia sp!, {r4,pc} + .balign 4 +_020BBFE4: .word 0x8000FFFF + arm_func_end FUN_020BBFA4 + + ; _end + arm_func_start FUN_020BBFE8 +FUN_020BBFE8: ; 0x020BBFE8 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + mov r3, #0x8000 + add r4, r0, r12 + ldrh r12, [r4, #0xa] + add lr, r4, #0x4 + rsb r0, r3, #0x0 + ldrh r3, [lr, r12] + add r12, lr, r12 + mla r1, r3, r1, r12 + ldr r1, [r1, #0x4] + add r3, r4, r1 + ldr r1, [r3, #0x4] + and r0, r1, r0 + orr r0, r0, r2 + str r0, [r3, #0x4] + ldmia sp!, {r4,pc} + arm_func_end FUN_020BBFE8 + + ; _end + arm_func_start FUN_020BC02C +FUN_020BC02C: ; 0x020BC02C + stmdb sp!, {r4-r6,lr} + ldrb r4, [r0, #0x18] + ldr r3, [r0, #0x8] + mov lr, #0x0 + cmp r4, #0x0 + add r12, r0, r3 + ldmlsia sp!, {r4-r6,pc} + mvn r3, r2 + add r0, r12, #0x4 +_020BC050: + ldrh r5, [r12, #0xa] + cmp r1, #0x0 + ldrh r6, [r0, r5] + add r5, r0, r5 + mla r5, r6, lr, r5 + ldr r5, [r5, #0x4] + add lr, lr, #0x1 + add r6, r12, r5 + ldrne r5, [r6, #0x10] + orrne r5, r5, r2 + strne r5, [r6, #0x10] + ldreq r5, [r6, #0x10] + andeq r5, r5, r3 + streq r5, [r6, #0x10] + cmp lr, r4 + blo _020BC050 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BC02C + + ; _end + arm_func_start FUN_020BC094 +FUN_020BC094: ; 0x020BC094 + stmdb sp!, {r4-r6,lr} + ldrb r4, [r0, #0x18] + ldr r3, [r0, #0x8] + mov lr, #0x0 + cmp r4, #0x0 + add r12, r0, r3 + ldmlsia sp!, {r4-r6,pc} + mvn r3, r2 + add r0, r12, #0x4 +_020BC0B8: + ldrh r5, [r12, #0xa] + cmp r1, #0x0 + ldrh r6, [r0, r5] + add r5, r0, r5 + mla r5, r6, lr, r5 + ldr r5, [r5, #0x4] + add lr, lr, #0x1 + add r6, r12, r5 + ldrneh r5, [r6, #0x1e] + orrne r5, r5, r2 + strneh r5, [r6, #0x1e] + ldreqh r5, [r6, #0x1e] + andeq r5, r5, r3 + streqh r5, [r6, #0x1e] + cmp lr, r4 + blo _020BC0B8 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BC094 + diff --git a/arm9/asm/NNS_G3D_nsbca.s b/arm9/asm/NNS_G3D_nsbca.s new file mode 100644 index 00000000..b8835362 --- /dev/null +++ b/arm9/asm/NNS_G3D_nsbca.s @@ -0,0 +1,1606 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + ; pivotUtil_ + .global UNK_020FFA14 +UNK_020FFA14: ; 0x020FFA14 + .byte 0x04, 0x05, 0x07, 0x08 + .byte 0x03, 0x05, 0x06, 0x08 + .byte 0x03, 0x04, 0x06, 0x07 + .byte 0x01, 0x02, 0x07, 0x08 + .byte 0x00, 0x02, 0x06, 0x08 + .byte 0x00, 0x01, 0x06, 0x07 + .byte 0x01, 0x02, 0x04, 0x05 + .byte 0x00, 0x02, 0x03, 0x05 + .byte 0x00, 0x01, 0x03, 0x04 + + .section .text + + ; getRotDataByIdx_ + arm_func_start FUN_020BC500 +FUN_020BC500: ; 0x020BC500 + stmdb sp!, {r4,lr} + ands r4, r3, #0x8000 + beq _020BC5E0 + mov r2, #0x0 + str r2, [r0, #0x20] + ldr r4, [r0, #0x20] + ldr r2, _020BC684 ; =0x00007FFF + str r4, [r0, #0x1c] + ldr r4, [r0, #0x1c] + and r3, r3, r2 + str r4, [r0, #0x18] + ldr r4, [r0, #0x18] + mov r2, #0x3 + str r4, [r0, #0x14] + ldr r4, [r0, #0x14] + mul r2, r3, r2 + str r4, [r0, #0x10] + ldr r4, [r0, #0x10] + mov r3, r2, lsl #0x1 + str r4, [r0, #0xc] + ldr r4, [r0, #0xc] + add r2, r1, r2, lsl #0x1 + str r4, [r0, #0x8] + ldr r4, [r0, #0x8] + str r4, [r0, #0x4] + ldr r4, [r0, #0x4] + str r4, [r0, #0x0] + ldrsh r4, [r1, r3] + ldrsh r12, [r2, #0x2] + ldrsh r3, [r2, #0x4] + and r1, r4, #0xf + ands r4, r4, #0x10 + movne lr, #0x1000 + rsbne lr, lr, #0x0 + moveq lr, #0x1000 + str lr, [r0, r1, lsl #0x2] + ldr r4, _020BC688 ; =UNK_020FFA14 + ldr lr, _020BC68C ; =UNK_020FFA14 + 1 + ldrb r4, [r4, r1, lsl #0x2] + str r12, [r0, r4, lsl #0x2] + ldrb lr, [lr, r1, lsl #0x2] + str r3, [r0, lr, lsl #0x2] + ldrsh lr, [r2, #0x0] + ands lr, lr, #0x20 + ldr lr, _020BC690 ; =UNK_020FFA14 + 2 + rsbne r3, r3, #0x0 + ldrb lr, [lr, r1, lsl #0x2] + str r3, [r0, lr, lsl #0x2] + ldrsh r2, [r2, #0x0] + ands r2, r2, #0x40 + ldr r2, _020BC694 ; =UNK_020FFA14 + 3 + rsbne r12, r12, #0x0 + ldrb r1, [r2, r1, lsl #0x2] + str r12, [r0, r1, lsl #0x2] + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020BC5E0: + ldr r1, _020BC684 ; =0x00007FFF + mov r12, #0x5 + and r1, r3, r1 + mul r3, r1, r12 + add r1, r2, r3, lsl #0x1 + ldrsh lr, [r1, #0x8] + mov r12, r3, lsl #0x1 + mov r3, lr, asr #0x3 + str r3, [r0, #0x10] + ldrsh r12, [r2, r12] + and r2, lr, #0x7 + mov r2, r2, lsl #0x10 + mov r3, r12, asr #0x3 + str r3, [r0, #0x0] + ldrsh r3, [r1, #0x2] + and r12, r12, #0x7 + orr lr, r12, r2, asr #0xd + mov r2, r3, asr #0x3 + str r2, [r0, #0x4] + ldrsh r12, [r1, #0x4] + mov r2, lr, lsl #0x10 + and lr, r3, #0x7 + mov r3, r12, asr #0x3 + str r3, [r0, #0x8] + ldrsh r3, [r1, #0x6] + orr r1, lr, r2, asr #0xd + mov r1, r1, lsl #0x10 + and r2, r12, #0x7 + orr r1, r2, r1, asr #0xd + mov r1, r1, lsl #0x10 + and r2, r3, #0x7 + orr r1, r2, r1, asr #0xd + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + mov r2, r3, asr #0x3 + mov r1, r1, lsl #0x13 + str r2, [r0, #0xc] + mov r1, r1, asr #0x13 + str r1, [r0, #0x14] + mov r0, #0x1 + ldmia sp!, {r4,pc} + .balign 4 +_020BC684: .word 0x00007FFF +_020BC688: .word UNK_020FFA14 +_020BC68C: .word UNK_020FFA14 + 1 +_020BC690: .word UNK_020FFA14 + 2 +_020BC694: .word UNK_020FFA14 + 3 + arm_func_end FUN_020BC500 + + ; getRotDataEx_ + arm_func_start FUN_020BC698 +FUN_020BC698: ; 0x020BC698 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x48 + ldrh r4, [r3, #0x4] + ldr r5, [r3, #0xc] + ldr r8, [r3, #0x10] + ldr r7, [r2, #0x4] + mov r12, r1, asr #0xc + sub r4, r4, #0x1 + mov r6, r0 + cmp r12, r4 + add r5, r3, r5 + add r4, r3, r8 + add r8, r3, r7 + ldr r7, [r2, #0x0] + bne _020BC780 + ands r0, r7, #0xc0000000 + beq _020BC6F0 + ands r0, r7, #0x40000000 + andne r0, r12, #0x1 + addne r12, r0, r12, lsr #0x1 + andeq r0, r12, #0x3 + addeq r12, r0, r12, lsr #0x2 +_020BC6F0: + ldr r0, [r3, #0x8] + ands r0, r0, #0x2 + movne r7, #0x0 + bne _020BC7F4 + mov r0, r12, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + cmp r0, #0x0 + addeq sp, sp, #0x48 + ldmeqia sp!, {r4-r10,pc} + ldr r9, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r9 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r9 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x48 + str r0, [r6, #0x20] + ldmia sp!, {r4-r10,pc} +_020BC780: + ands r0, r7, #0xc0000000 + beq _020BC7F0 + ldr r0, _020BC9C4 ; =0x1FFF0000 + ands r2, r7, #0x40000000 + and r0, r7, r0 + mov r0, r0, lsr #0x10 + beq _020BC7C4 + cmp r12, r0 + movcs r12, r0, lsr #0x1 + addcs r7, r12, #0x1 + bhs _020BC7F4 + ldr r0, _020BC9C8 ; =0x00001FFF + mov r12, r12, lsr #0x1 + add r7, r12, #0x1 + and r10, r1, r0 + mov r9, #0x2 + b _020BC800 +_020BC7C4: + cmp r12, r0 + andcs r0, r12, #0x3 + addcs r12, r0, r12, lsr #0x2 + addcs r7, r12, #0x1 + bhs _020BC7F4 + ldr r0, _020BC9CC ; =0x00003FFF + mov r12, r12, lsr #0x2 + add r7, r12, #0x1 + and r10, r1, r0 + mov r9, #0x4 + b _020BC800 +_020BC7F0: + add r7, r12, #0x1 +_020BC7F4: + ldr r0, _020BC9D0 ; =0x00000FFF + mov r9, #0x1 + and r10, r1, r0 +_020BC800: + mov r0, r12, lsl #0x1 + ldrh r3, [r8, r0] + add r0, sp, #0x0 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + mov r1, r7, lsl #0x1 + ldrh r3, [r8, r1] + orr r7, r0, #0x0 + add r0, sp, #0x24 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + ldr r3, [sp, #0x0] + ldr r1, [sp, #0x24] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x0] + ldr r3, [sp, #0x4] + ldr r1, [sp, #0x28] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [sp, #0x2c] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x8] + ldr r3, [sp, #0xc] + ldr r1, [sp, #0x30] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0xc] + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x34] + orr r7, r7, r0 + sub r0, r1, r2 + mul r1, r2, r9 + mul r0, r10, r0 + add r0, r1, r0, asr #0xc + str r0, [r6, #0x10] + ldr r2, [sp, #0x14] + ldr r0, [sp, #0x38] + mul r1, r2, r9 + sub r0, r0, r2 + mul r0, r10, r0 + add r2, r1, r0, asr #0xc + mov r0, r6 + mov r1, r6 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize + cmp r7, #0x0 + bne _020BC968 + ldr r3, [sp, #0x18] + ldr r1, [sp, #0x3c] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x18] + ldr r3, [sp, #0x1c] + ldr r1, [sp, #0x40] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x1c] + ldr r3, [sp, #0x20] + ldr r1, [sp, #0x44] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r2, r2, r1, asr #0xc + add r0, r6, #0x18 + mov r1, r0 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x48 + ldmia sp!, {r4-r10,pc} +_020BC968: + ldr r9, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r8, [r6, #0x0] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + ldr r7, [r6, #0xc] + mul r1, r5, r9 + mul r0, r2, r4 + sub r0, r1, r0 + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r9 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + str r0, [r6, #0x20] + add sp, sp, #0x48 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020BC9C4: .word 0x1FFF0000 +_020BC9C8: .word 0x00001FFF +_020BC9CC: .word 0x00003FFF +_020BC9D0: .word 0x00000FFF + arm_func_end FUN_020BC698 + + ; getRotData_ + arm_func_start FUN_020BC9D4 +FUN_020BC9D4: ; 0x020BC9D4 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4c + ldr r5, [r3, #0xc] + ldr r4, [r3, #0x10] + ldr r12, [r2, #0x0] + ldr r2, [r2, #0x4] + mov r6, r0 + mov r0, r1, asr #0xc + add r5, r3, r5 + add r4, r3, r4 + add r8, r3, r2 + ands r1, r12, #0xc0000000 + beq _020BCD40 + ldr r1, _020BCDC0 ; =0x1FFF0000 + ands r2, r12, #0x40000000 + and r1, r12, r1 + mov r2, r1, lsr #0x10 + beq _020BCA44 + ands r1, r0, #0x1 + beq _020BCA3C + cmp r0, r2 + movhi r0, r2, lsr #0x1 + addhi r0, r0, #0x1 + bhi _020BCD40 + mov r7, r0, lsr #0x1 + b _020BCBE8 +_020BCA3C: + mov r0, r0, lsr #0x1 + b _020BCD40 +_020BCA44: + ands r1, r0, #0x3 + beq _020BCBE0 + cmp r0, r2 + addhi r0, r1, r2, lsr #0x2 + bhi _020BCD40 + ands r1, r0, #0x1 + beq _020BCBD8 + ands r1, r0, #0x2 + movne r9, r0, lsr #0x2 + addne r0, r9, #0x1 + moveq r0, r0, lsr #0x2 + addeq r9, r0, #0x1 + mov r0, r0, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r7, #0x0 + bl FUN_020BC500 + mov r1, r9, lsl #0x1 + ldrh r3, [r8, r1] + orr r7, r7, r0 + add r0, sp, #0x0 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + ldr r3, [sp, #0x0] + ldr r1, [r6, #0x0] + mov r2, #0x3 + mla r3, r1, r2, r3 + str r3, [r6, #0x0] + ldr r3, [sp, #0x4] + ldr r1, [r6, #0x4] + orr r7, r7, r0 + mla r0, r1, r2, r3 + str r0, [r6, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [r6, #0x8] + mov r0, r6 + mla r3, r1, r2, r3 + str r3, [r6, #0x8] + ldr r4, [sp, #0xc] + ldr r3, [r6, #0xc] + mov r1, r6 + mla r4, r3, r2, r4 + str r4, [r6, #0xc] + ldr r4, [sp, #0x10] + ldr r3, [r6, #0x10] + mla r4, r3, r2, r4 + str r4, [r6, #0x10] + ldr r4, [sp, #0x14] + ldr r3, [r6, #0x14] + mla r2, r3, r2, r4 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize + cmp r7, #0x0 + bne _020BCB7C + ldr r1, [sp, #0x18] + ldr r0, [r6, #0x18] + mov r2, #0x3 + mla r1, r0, r2, r1 + str r1, [r6, #0x18] + ldr r3, [sp, #0x1c] + ldr r1, [r6, #0x1c] + add r0, r6, #0x18 + mla r3, r1, r2, r3 + str r3, [r6, #0x1c] + ldr r4, [sp, #0x20] + ldr r3, [r6, #0x20] + mov r1, r0 + mla r2, r3, r2, r4 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} +_020BCB7C: + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x4c + str r0, [r6, #0x20] + ldmia sp!, {r4-r9,pc} +_020BCBD8: + mov r7, r0, lsr #0x2 + b _020BCBE8 +_020BCBE0: + mov r0, r0, lsr #0x2 + b _020BCD40 +_020BCBE8: + mov r0, r7, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + add r1, r8, r7, lsl #0x1 + ldrh r3, [r1, #0x2] + orr r7, r0, #0x0 + add r0, sp, #0x24 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + ldr r2, [r6, #0x0] + ldr r1, [sp, #0x24] + orr r7, r7, r0 + add r0, r2, r1 + str r0, [r6, #0x0] + ldr r2, [r6, #0x4] + ldr r1, [sp, #0x28] + mov r0, r6 + add r1, r2, r1 + str r1, [r6, #0x4] + ldr r3, [r6, #0x8] + ldr r2, [sp, #0x2c] + mov r1, r6 + add r2, r3, r2 + str r2, [r6, #0x8] + ldr r3, [r6, #0xc] + ldr r2, [sp, #0x30] + add r2, r3, r2 + str r2, [r6, #0xc] + ldr r3, [r6, #0x10] + ldr r2, [sp, #0x34] + add r2, r3, r2 + str r2, [r6, #0x10] + ldr r3, [r6, #0x14] + ldr r2, [sp, #0x38] + add r2, r3, r2 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize + cmp r7, #0x0 + bne _020BCCE4 + ldr r2, [r6, #0x18] + ldr r1, [sp, #0x3c] + add r0, r6, #0x18 + add r1, r2, r1 + str r1, [r6, #0x18] + ldr r3, [r6, #0x1c] + ldr r2, [sp, #0x40] + mov r1, r0 + add r2, r3, r2 + str r2, [r6, #0x1c] + ldr r3, [r6, #0x20] + ldr r2, [sp, #0x44] + add r2, r3, r2 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} +_020BCCE4: + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x4c + str r0, [r6, #0x20] + ldmia sp!, {r4-r9,pc} +_020BCD40: + mov r0, r0, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + cmp r0, #0x0 + addeq sp, sp, #0x4c + ldmeqia sp!, {r4-r9,pc} + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r8, [r6, #0x0] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + ldr r7, [r6, #0xc] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + str r0, [r6, #0x20] + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BCDC0: .word 0x1FFF0000 + arm_func_end FUN_020BC9D4 + + ; getScaleDataEx_ + arm_func_start FUN_020BCDC4 +FUN_020BCDC4: ; 0x020BCDC4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrh r4, [r3, #0x4] + ldr r6, [r2, #0x4] + mov r5, r1, asr #0xc + sub r4, r4, #0x1 + cmp r5, r4 + add r6, r3, r6 + ldr r2, [r2, #0x0] + bne _020BCE58 + ands r4, r2, #0xc0000000 + beq _020BCE08 + ands r4, r2, #0x40000000 + andne r4, r5, #0x1 + addne r5, r4, r5, lsr #0x1 + andeq r4, r5, #0x3 + addeq r5, r4, r5, lsr #0x2 +_020BCE08: + ldr r3, [r3, #0x8] + ands r3, r3, #0x2 + movne r4, #0x0 + bne _020BCED4 + ands r1, r2, #0x20000000 + ldreq r2, [r6, r5, lsl #0x3] + addeq r1, r6, r5, lsl #0x3 + streq r2, [r0, #0x0] + ldreq r1, [r1, #0x4] + addeq sp, sp, #0x4 + streq r1, [r0, #0x4] + ldmeqia sp!, {r4-r7,pc} + mov r1, r5, lsl #0x2 + ldrsh r2, [r6, r1] + add r1, r6, r5, lsl #0x2 + add sp, sp, #0x4 + str r2, [r0, #0x0] + ldrsh r1, [r1, #0x2] + str r1, [r0, #0x4] + ldmia sp!, {r4-r7,pc} +_020BCE58: + ands r3, r2, #0xc0000000 + beq _020BCED0 + ldr r3, _020BCF60 ; =0x1FFF0000 + ands r4, r2, #0x40000000 + and r3, r2, r3 + mov r3, r3, lsr #0x10 + beq _020BCEA0 + cmp r5, r3 + movcs r5, r3, lsr #0x1 + addcs r4, r5, #0x1 + bhs _020BCED4 + ldr r3, _020BCF64 ; =0x00001FFF + mov r5, r5, lsr #0x1 + add r4, r5, #0x1 + and lr, r1, r3 + mov r12, #0x2 + mov r3, #0x1 + b _020BCEE4 +_020BCEA0: + cmp r5, r3 + andcs r3, r5, #0x3 + addcs r5, r3, r5, lsr #0x2 + addcs r4, r5, #0x1 + bhs _020BCED4 + ldr r3, _020BCF68 ; =0x00003FFF + mov r5, r5, lsr #0x2 + add r4, r5, #0x1 + and lr, r1, r3 + mov r12, #0x4 + mov r3, #0x2 + b _020BCEE4 +_020BCED0: + add r4, r5, #0x1 +_020BCED4: + ldr r3, _020BCF6C ; =0x00000FFF + mov r12, #0x1 + and lr, r1, r3 + mov r3, #0x0 +_020BCEE4: + ands r1, r2, #0x20000000 + beq _020BCF10 + mov r2, r5, lsl #0x2 + add r1, r6, r5, lsl #0x2 + mov r5, r4, lsl #0x2 + add r4, r6, r4, lsl #0x2 + ldrsh r2, [r6, r2] + ldrsh r1, [r1, #0x2] + ldrsh r5, [r6, r5] + ldrsh r4, [r4, #0x2] + b _020BCF28 +_020BCF10: + add r1, r6, r5, lsl #0x3 + add r7, r6, r4, lsl #0x3 + ldr r2, [r6, r5, lsl #0x3] + ldr r1, [r1, #0x4] + ldr r5, [r6, r4, lsl #0x3] + ldr r4, [r7, #0x4] +_020BCF28: + sub r5, r5, r2 + sub r4, r4, r1 + mul r6, r2, r12 + mul r2, lr, r5 + add r2, r6, r2, asr #0xc + mov r5, r2, asr r3 + mul r2, r1, r12 + mul r1, lr, r4 + add r1, r2, r1, asr #0xc + mov r1, r1, asr r3 + str r5, [r0, #0x0] + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020BCF60: .word 0x1FFF0000 +_020BCF64: .word 0x00001FFF +_020BCF68: .word 0x00003FFF +_020BCF6C: .word 0x00000FFF + arm_func_end FUN_020BCDC4 + + ; getScaleData_ + arm_func_start FUN_020BCF70 +FUN_020BCF70: ; 0x020BCF70 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r4, [r2, #0x4] + ldr r12, [r2, #0x0] + mov r1, r1, asr #0xc + add r3, r3, r4 + ands r2, r12, #0xc0000000 + beq _020BD0D0 + ldr r2, _020BD184 ; =0x1FFF0000 + ands r4, r12, #0x40000000 + and r2, r12, r2 + mov r4, r2, lsr #0x10 + beq _020BCFCC + ands r2, r1, #0x1 + beq _020BCFC4 + cmp r1, r4 + movhi r1, r4, lsr #0x1 + addhi r1, r1, #0x1 + bhi _020BD0D0 + mov r2, r1, lsr #0x1 + b _020BD110 +_020BCFC4: + mov r1, r1, lsr #0x1 + b _020BD0D0 +_020BCFCC: + ands r2, r1, #0x3 + beq _020BD0CC + cmp r1, r4 + addhi r1, r2, r4, lsr #0x2 + bhi _020BD0D0 + ands r2, r1, #0x1 + beq _020BD0C4 + ands r2, r1, #0x2 + movne r1, r1, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r1, lsr #0x2 + addeq r1, r2, #0x1 + ands r4, r12, #0x20000000 + beq _020BD04C + mov r5, r2, lsl #0x2 + mov r4, r1, lsl #0x2 + ldrsh r12, [r3, r5] + ldrsh r5, [r3, r4] + add r2, r3, r2, lsl #0x2 + add r4, r12, r12, lsl #0x1 + add r4, r5, r4 + mov r4, r4, asr #0x2 + str r4, [r0, #0x0] + add r1, r3, r1, lsl #0x2 + ldrsh r3, [r2, #0x2] + ldrsh r2, [r1, #0x2] + add sp, sp, #0x4 + add r1, r3, r3, lsl #0x1 + add r1, r2, r1 + mov r1, r1, asr #0x2 + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD04C: + ldr r5, [r3, r2, lsl #0x3] + ldr r4, [r3, r1, lsl #0x3] + mov r12, r5, asr #0x1f + mov r12, r12, lsl #0x1 + mov lr, r5, lsl #0x1 + orr r12, r12, r5, lsr #0x1f + adds lr, lr, r5 + adc r12, r12, r5, asr #0x1f + adds lr, lr, r4 + adc r12, r12, r4, asr #0x1f + mov lr, lr, lsr #0x2 + orr lr, lr, r12, lsl #0x1e + str lr, [r0, #0x0] + add r2, r3, r2, lsl #0x3 + ldr r12, [r2, #0x4] + add r1, r3, r1, lsl #0x3 + mov r2, r12, asr #0x1f + mov r2, r2, lsl #0x1 + mov r3, r12, lsl #0x1 + ldr r1, [r1, #0x4] + orr r2, r2, r12, lsr #0x1f + adds r3, r3, r12 + adc r2, r2, r12, asr #0x1f + adds r3, r3, r1 + adc r1, r2, r1, asr #0x1f + mov r2, r3, lsr #0x2 + orr r2, r2, r1, lsl #0x1e + str r2, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BD0C4: + mov r2, r1, lsr #0x2 + b _020BD110 +_020BD0CC: + mov r1, r1, lsr #0x2 +_020BD0D0: + ands r2, r12, #0x20000000 + ldreq r2, [r3, r1, lsl #0x3] + addeq r1, r3, r1, lsl #0x3 + streq r2, [r0, #0x0] + ldreq r1, [r1, #0x4] + addeq sp, sp, #0x4 + streq r1, [r0, #0x4] + ldmeqia sp!, {r4-r5,pc} + mov r2, r1, lsl #0x2 + ldrsh r2, [r3, r2] + add r1, r3, r1, lsl #0x2 + add sp, sp, #0x4 + str r2, [r0, #0x0] + ldrsh r1, [r1, #0x2] + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD110: + ands r1, r12, #0x20000000 + beq _020BD150 + mov r1, r2, lsl #0x2 + add r12, r3, r2, lsl #0x2 + ldrsh r2, [r3, r1] + ldrsh r1, [r12, #0x4] + add sp, sp, #0x4 + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldrsh r2, [r12, #0x2] + ldrsh r1, [r12, #0x6] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD150: + add r12, r3, r2, lsl #0x3 + ldr r2, [r3, r2, lsl #0x3] + ldr r1, [r12, #0x8] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldr r2, [r12, #0x4] + ldr r1, [r12, #0xc] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BD184: .word 0x1FFF0000 + arm_func_end FUN_020BCF70 + + ; getTransDataEx_ + arm_func_start FUN_020BD188 +FUN_020BD188: ; 0x020BD188 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrh r4, [r3, #0x4] + ldr lr, [r2, #0x4] + mov r12, r1, asr #0xc + sub r4, r4, #0x1 + cmp r12, r4 + add r4, r3, lr + ldr lr, [r2, #0x0] + bne _020BD230 + ands r2, lr, #0xc0000000 + beq _020BD1CC + ands r2, lr, #0x40000000 + andne r2, r12, #0x1 + addne r12, r2, r12, lsr #0x1 + andeq r2, r12, #0x3 + addeq r12, r2, r12, lsr #0x2 +_020BD1CC: + ldr r2, [r3, #0x8] + ands r2, r2, #0x2 + beq _020BD210 + ldr r2, _020BD2E8 ; =0x00000FFF + ands r3, lr, #0x20000000 + and r3, r1, r2 + movne r1, r12, lsl #0x1 + ldrnesh r2, [r4, r1] + ldrnesh r1, [r4, #0x0] + add sp, sp, #0x4 + ldreq r2, [r4, r12, lsl #0x2] + ldreq r1, [r4, #0x0] + sub r1, r1, r2 + mul r1, r3, r1 + add r1, r2, r1, asr #0xc + str r1, [r0, #0x0] + ldmia sp!, {r4-r5,pc} +_020BD210: + ands r1, lr, #0x20000000 + movne r1, r12, lsl #0x1 + ldrnesh r1, [r4, r1] + add sp, sp, #0x4 + strne r1, [r0, #0x0] + ldreq r1, [r4, r12, lsl #0x2] + streq r1, [r0, #0x0] + ldmia sp!, {r4-r5,pc} +_020BD230: + ands r2, lr, #0xc0000000 + beq _020BD298 + ldr r2, _020BD2EC ; =0x1FFF0000 + ands r3, lr, #0x40000000 + and r2, lr, r2 + mov r2, r2, lsr #0x10 + beq _020BD270 + cmp r12, r2 + movcs r12, r2, lsr #0x1 + bhs _020BD298 + ldr r2, _020BD2F0 ; =0x00001FFF + mov r12, r12, lsr #0x1 + and r5, r1, r2 + mov r2, #0x2 + mov r1, #0x1 + b _020BD2A8 +_020BD270: + cmp r12, r2 + andcs r2, r12, #0x3 + addcs r12, r2, r12, lsr #0x2 + bhs _020BD298 + ldr r2, _020BD2F4 ; =0x00003FFF + mov r12, r12, lsr #0x2 + and r5, r1, r2 + mov r2, #0x4 + mov r1, #0x2 + b _020BD2A8 +_020BD298: + ldr r3, _020BD2E8 ; =0x00000FFF + mov r2, #0x1 + and r5, r1, r3 + mov r1, #0x0 +_020BD2A8: + ands r3, lr, #0x20000000 + addne r3, r4, r12, lsl #0x1 + movne lr, r12, lsl #0x1 + ldrnesh r12, [r4, lr] + ldrnesh r3, [r3, #0x2] + addeq r3, r4, r12, lsl #0x2 + ldreq r12, [r4, r12, lsl #0x2] + ldreq r3, [r3, #0x4] + mul r4, r12, r2 + sub r3, r3, r12 + mul r2, r5, r3 + add r2, r4, r2, asr #0xc + mov r1, r2, asr r1 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BD2E8: .word 0x00000FFF +_020BD2EC: .word 0x1FFF0000 +_020BD2F0: .word 0x00001FFF +_020BD2F4: .word 0x00003FFF + arm_func_end FUN_020BD188 + + ; getTransData_ + arm_func_start FUN_020BD2F8 +FUN_020BD2F8: ; 0x020BD2F8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r12, [r2, #0x4] + ldr r2, [r2, #0x0] + mov r1, r1, asr #0xc + add r3, r3, r12 + ands r12, r2, #0xc0000000 + beq _020BD44C + ldr ip, _020BD46C ; =0x1FFF0000 + ands lr, r2, #0x40000000 + and r12, r2, r12 + mov lr, r12, lsr #0x10 + beq _020BD354 + ands r12, r1, #0x1 + beq _020BD34C + cmp r1, lr + movhi r1, lr, lsr #0x1 + addhi r1, r1, #0x1 + bhi _020BD44C + mov r12, r1, lsr #0x1 + b _020BD400 +_020BD34C: + mov r1, r1, lsr #0x1 + b _020BD44C +_020BD354: + ands r12, r1, #0x3 + beq _020BD3F8 + cmp r1, lr + addhi r1, r12, lr, lsr #0x2 + bhi _020BD44C + ands r12, r1, #0x1 + beq _020BD3F0 + ands r12, r1, #0x2 + movne lr, r1, lsr #0x2 + addne r12, lr, #0x1 + moveq r12, r1, lsr #0x2 + addeq lr, r12, #0x1 + ands r1, r2, #0x20000000 + beq _020BD3B4 + mov r2, r12, lsl #0x1 + mov r1, lr, lsl #0x1 + ldrsh r12, [r3, r2] + ldrsh r2, [r3, r1] + mov r1, #0x3 + add sp, sp, #0x4 + smlabb r1, r12, r1, r2 + mov r1, r1, asr #0x2 + str r1, [r0, #0x0] + ldmia sp!, {pc} +_020BD3B4: + ldr r12, [r3, r12, lsl #0x2] + ldr r1, [r3, lr, lsl #0x2] + mov r2, r12, asr #0x1f + mov r2, r2, lsl #0x1 + mov r3, r12, lsl #0x1 + orr r2, r2, r12, lsr #0x1f + adds r3, r3, r12 + adc r2, r2, r12, asr #0x1f + adds r3, r3, r1 + adc r1, r2, r1, asr #0x1f + mov r2, r3, lsr #0x2 + orr r2, r2, r1, lsl #0x1e + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} +_020BD3F0: + mov r12, r1, lsr #0x2 + b _020BD400 +_020BD3F8: + mov r1, r1, lsr #0x2 + b _020BD44C +_020BD400: + ands r1, r2, #0x20000000 + beq _020BD42C + mov r2, r12, lsl #0x1 + add r1, r3, r12, lsl #0x1 + ldrsh r2, [r3, r2] + ldrsh r1, [r1, #0x2] + add sp, sp, #0x4 + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldmia sp!, {pc} +_020BD42C: + add r1, r3, r12, lsl #0x2 + ldr r2, [r3, r12, lsl #0x2] + ldr r1, [r1, #0x4] + mov r2, r2, asr #0x1 + add r1, r2, r1, asr #0x1 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} +_020BD44C: + ands r2, r2, #0x20000000 + movne r1, r1, lsl #0x1 + ldrnesh r1, [r3, r1] + strne r1, [r0, #0x0] + ldreq r1, [r3, r1, lsl #0x2] + streq r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BD46C: .word 0x1FFF0000 + arm_func_end FUN_020BD2F8 + + ; getJntSRTAnmResult_ + arm_func_start FUN_020BD470 +FUN_020BD470: ; 0x020BD470 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + mov r9, r0 + add r0, r9, r1, lsl #0x1 + ldrh r0, [r0, #0x14] + mov r7, r3 + mov r8, r2 + ldr r5, [r9, r0] + add r1, r9, r0 + ands r0, r5, #0x1 + movne r0, #0x7 + strne r0, [r7, #0x0] + bne _020BD814 + ldr r0, _020BD848 ; =0x00000FFF + add r4, r1, #0x4 + ands r0, r8, r0 + beq _020BD4C4 + ldr r0, [r9, #0x8] + ands r0, r0, #0x1 + movne r6, #0x1 + bne _020BD4C8 +_020BD4C4: + mov r6, #0x0 +_020BD4C8: + mov r0, #0x0 + str r0, [r7, #0x0] + ands r0, r5, #0x6 + bne _020BD5C0 + ands r0, r5, #0x8 + bne _020BD51C + cmp r6, #0x0 + beq _020BD500 + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x4c + bl FUN_020BD188 + b _020BD514 +_020BD500: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x4c + bl FUN_020BD2F8 +_020BD514: + add r4, r4, #0x8 + b _020BD524 +_020BD51C: + ldr r0, [r4], #0x4 + str r0, [r7, #0x4c] +_020BD524: + ands r0, r5, #0x10 + bne _020BD568 + cmp r6, #0x0 + beq _020BD54C + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x50 + bl FUN_020BD188 + b _020BD560 +_020BD54C: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x50 + bl FUN_020BD2F8 +_020BD560: + add r4, r4, #0x8 + b _020BD570 +_020BD568: + ldr r0, [r4], #0x4 + str r0, [r7, #0x50] +_020BD570: + ands r0, r5, #0x20 + bne _020BD5B4 + cmp r6, #0x0 + beq _020BD598 + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x54 + bl FUN_020BD188 + b _020BD5AC +_020BD598: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x54 + bl FUN_020BD2F8 +_020BD5AC: + add r4, r4, #0x8 + b _020BD5DC +_020BD5B4: + ldr r0, [r4], #0x4 + str r0, [r7, #0x54] + b _020BD5DC +_020BD5C0: + ands r0, r5, #0x2 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x4 + strne r0, [r7, #0x0] + bne _020BD5DC + mov r0, r7 + bl FUN_020BDA08 +_020BD5DC: + ands r0, r5, #0xc0 + bne _020BD6A8 + ands r0, r5, #0x100 + bne _020BD628 + cmp r6, #0x0 + beq _020BD60C + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x28 + bl FUN_020BC698 + b _020BD620 +_020BD60C: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x28 + bl FUN_020BC9D4 +_020BD620: + add r4, r4, #0x8 + b _020BD6C4 +_020BD628: + ldr r1, [r9, #0xc] + ldr r2, [r9, #0x10] + ldr r3, [r4, #0x0] + add r0, r7, #0x28 + add r1, r9, r1 + add r2, r9, r2 + bl FUN_020BC500 + cmp r0, #0x0 + beq _020BD6A0 + ldr r12, [r7, #0x3c] + ldr r0, [r7, #0x2c] + ldr r3, [r7, #0x28] + ldr r11, [r7, #0x38] + ldr r1, [r7, #0x30] + ldr r2, [r7, #0x34] + mul r10, r0, r12 + mul lr, r1, r11 + sub r10, r10, lr + mov r10, r10, asr #0xc + mul lr, r1, r2 + mul r1, r3, r12 + sub r1, lr, r1 + mul r11, r3, r11 + mul r2, r0, r2 + sub r0, r11, r2 + str r10, [r7, #0x40] + mov r1, r1, asr #0xc + str r1, [r7, #0x44] + mov r0, r0, asr #0xc + str r0, [r7, #0x48] +_020BD6A0: + add r4, r4, #0x4 + b _020BD6C4 +_020BD6A8: + ands r0, r5, #0x40 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x2 + strne r0, [r7, #0x0] + bne _020BD6C4 + mov r0, r7 + bl FUN_020BD850 +_020BD6C4: + ands r0, r5, #0x600 + bne _020BD7F0 + ands r0, r5, #0x800 + bne _020BD71C + cmp r6, #0x0 + beq _020BD6F4 + add r0, sp, #0x0 + mov r1, r8 + mov r2, r4 + mov r3, r9 + bl FUN_020BCDC4 + b _020BD708 +_020BD6F4: + add r0, sp, #0x0 + mov r1, r8 + mov r2, r4 + mov r3, r9 + bl FUN_020BCF70 +_020BD708: + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x4] + str r1, [sp, #0x18] + str r0, [sp, #0x24] + b _020BD72C +_020BD71C: + ldr r0, [r4, #0x0] + str r0, [sp, #0x18] + ldr r0, [r4, #0x4] + str r0, [sp, #0x24] +_020BD72C: + ands r0, r5, #0x1000 + bne _020BD77C + cmp r6, #0x0 + beq _020BD754 + add r0, sp, #0x8 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x8 + bl FUN_020BCDC4 + b _020BD768 +_020BD754: + add r0, sp, #0x8 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x8 + bl FUN_020BCF70 +_020BD768: + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + str r1, [sp, #0x1c] + str r0, [sp, #0x28] + b _020BD78C +_020BD77C: + ldr r0, [r4, #0x8] + str r0, [sp, #0x1c] + ldr r0, [r4, #0xc] + str r0, [sp, #0x28] +_020BD78C: + ands r0, r5, #0x2000 + bne _020BD7DC + cmp r6, #0x0 + beq _020BD7B4 + add r0, sp, #0x10 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x10 + bl FUN_020BCDC4 + b _020BD7C8 +_020BD7B4: + add r0, sp, #0x10 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x10 + bl FUN_020BCF70 +_020BD7C8: + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x14] + str r1, [sp, #0x20] + str r0, [sp, #0x2c] + b _020BD814 +_020BD7DC: + ldr r0, [r4, #0x10] + str r0, [sp, #0x20] + ldr r0, [r4, #0x14] + str r0, [sp, #0x2c] + b _020BD814 +_020BD7F0: + ands r0, r5, #0x200 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x1 + strne r0, [r7, #0x0] + bne _020BD814 + mov r0, r7 + bl FUN_020BD9A4 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} +_020BD814: + ldr r0, [r7, #0x0] + add r1, sp, #0x18 + ands r0, r0, #0x1 + ldr r0, _020BD84C ; =UNK_021CEF7C + movne r3, #0x4 + ldr r4, [r0, #0x0] + moveq r3, #0x0 + ldr r2, [r4, #0x0] + ldr r4, [r4, #0xe8] + mov r0, r7 + blx r4 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BD848: .word 0x00000FFF +_020BD84C: .word UNK_021CEF7C + arm_func_end FUN_020BD470 + + ; getMdlRot_ + arm_func_start FUN_020BD850 +FUN_020BD850: ; 0x020BD850 + stmdb sp!, {r4-r8,lr} + ldr r1, _020BD990 ; =UNK_021CEF7C + mov r8, r0 + ldr r0, [r1, #0x0] + ldr r3, [r0, #0xd4] + ldr r0, [r0, #0x0] + ldrh r2, [r3, #0x6] + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + ldrh r2, [r3, r0] + add r4, r3, r0 + add r1, r4, #0x4 + ands r0, r2, #0x1 + addeq r1, r1, #0xc + ands r0, r2, #0x2 + bne _020BD980 + ands r0, r2, #0x8 + beq _020BD934 + and r2, r2, #0xf0 + add r0, r8, #0x28 + mov r5, r2, asr #0x4 + ldrsh r7, [r1, #0x0] + ldrsh r6, [r1, #0x2] + bl MI_Zero36B + ldrh r0, [r4, #0x0] + add r1, r8, r5, lsl #0x2 + ands r0, r0, #0x100 + movne r0, #0x1000 + rsbne r2, r0, #0x0 + moveq r2, #0x1000 + ldr r0, _020BD994 ; =UNK_020FFA14 + str r2, [r1, #0x28] + ldrb r1, [r0, r5, lsl #0x2] + ldr r0, _020BD998 ; =UNK_020FFA14 + 1 + add r1, r8, r1, lsl #0x2 + str r7, [r1, #0x28] + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r6, [r0, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x200 + ldr r0, _020BD99C ; =UNK_020FFA14 + 2 + rsbne r6, r6, #0x0 + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r6, [r0, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x400 + ldr r0, _020BD9A0 ; =UNK_020FFA14 + 3 + rsbne r7, r7, #0x0 + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r7, [r0, #0x28] + ldmia sp!, {r4-r8,pc} +_020BD934: + ldrsh r0, [r4, #0x2] + str r0, [r8, #0x28] + ldrsh r0, [r1, #0x0] + str r0, [r8, #0x2c] + ldrsh r0, [r1, #0x2] + str r0, [r8, #0x30] + ldrsh r0, [r1, #0x4] + str r0, [r8, #0x34] + ldrsh r0, [r1, #0x6] + str r0, [r8, #0x38] + ldrsh r0, [r1, #0x8] + str r0, [r8, #0x3c] + ldrsh r0, [r1, #0xa] + str r0, [r8, #0x40] + ldrsh r0, [r1, #0xc] + str r0, [r8, #0x44] + ldrsh r0, [r1, #0xe] + str r0, [r8, #0x48] + ldmia sp!, {r4-r8,pc} +_020BD980: + ldr r0, [r8, #0x0] + orr r0, r0, #0x2 + str r0, [r8, #0x0] + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BD990: .word UNK_021CEF7C +_020BD994: .word UNK_020FFA14 +_020BD998: .word UNK_020FFA14 + 1 +_020BD99C: .word UNK_020FFA14 + 2 +_020BD9A0: .word UNK_020FFA14 + 3 + arm_func_end FUN_020BD850 + + ; getMdlScale_ + arm_func_start FUN_020BD9A4 +FUN_020BD9A4: ; 0x020BD9A4 + stmdb sp!, {r4,lr} + ldr r1, _020BDA04 ; =UNK_021CEF7C + ldr r12, [r1, #0x0] + ldr r4, [r12, #0xd4] + ldr r2, [r12, #0x0] + ldrh lr, [r4, #0x6] + ldrb r1, [r2, #0x1] + ldrh r3, [r4, lr] + add lr, r4, lr + mla r1, r3, r1, lr + ldr r1, [r1, #0x4] + ldrh r3, [r4, r1] + add r1, r4, r1 + add r1, r1, #0x4 + ands lr, r3, #0x1 + addeq r1, r1, #0xc + ands lr, r3, #0x2 + bne _020BD9F8 + ands lr, r3, #0x8 + addne r1, r1, #0x4 + addeq r1, r1, #0x10 +_020BD9F8: + ldr r12, [r12, #0xe8] + blx r12 + ldmia sp!, {r4,pc} + .balign 4 +_020BDA04: .word UNK_021CEF7C + arm_func_end FUN_020BD9A4 + + ; getMdlTrans_ + arm_func_start FUN_020BDA08 +FUN_020BDA08: ; 0x020BDA08 + ldr r1, _020BDA6C ; =UNK_021CEF7C + ldr r1, [r1, #0x0] + ldr r12, [r1, #0xd4] + ldr r1, [r1, #0x0] + ldrh r3, [r12, #0x6] + ldrb r1, [r1, #0x1] + ldrh r2, [r12, r3] + add r3, r12, r3 + mla r1, r2, r1, r3 + ldr r2, [r1, #0x4] + ldrh r1, [r12, r2] + add r2, r12, r2 + ands r1, r1, #0x1 + ldrne r1, [r0, #0x0] + orrne r1, r1, #0x4 + strne r1, [r0, #0x0] + bxne lr + ldr r1, [r2, #0x4] + add r2, r2, #0x4 + str r1, [r0, #0x4c] + ldr r1, [r2, #0x4] + str r1, [r0, #0x50] + ldr r1, [r2, #0x8] + str r1, [r0, #0x54] + bx lr + .balign 4 +_020BDA6C: .word UNK_021CEF7C + arm_func_end FUN_020BDA08 + + ; _end + arm_func_start FUN_020BDA70 +FUN_020BDA70: ; 0x020BDA70 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r0 + ldr r0, [r1, #0x8] + ldr r12, [r1, #0x0] + ldrh r1, [r0, #0x4] + mov r1, r1, lsl #0xc + cmp r12, r1 + subge r12, r1, #0x1 + bge _020BDAA0 + cmp r12, #0x0 + movlt r12, #0x0 +_020BDAA0: + mov r1, r2 + mov r2, r12 + bl FUN_020BD470 + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end FUN_020BDA70 + + ; NNSi_G3dAnmObjInitNsBca + arm_func_start FUN_020BDAB4 +FUN_020BDAB4: ; 0x020BDAB4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + ldr r0, _020BDB3C ; =UNK_0210659C + str r4, [r5, #0x8] + ldr r0, [r0, #0x0] + add r1, r5, #0x1a + str r0, [r5, #0xc] + ldrb r2, [r2, #0x17] + mov r0, #0x0 + strb r2, [r5, #0x19] + ldrb r2, [r5, #0x19] + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrh r0, [r4, #0x6] + add r2, r4, #0x14 + mov r3, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r5,pc} +_020BDB08: + mov r0, r3, lsl #0x1 + ldrh r1, [r2, r0] + add r0, r5, r3, lsl #0x1 + add r3, r3, #0x1 + ldr r1, [r4, r1] + mov r1, r1, lsr #0x18 + orr r1, r1, #0x100 + strh r1, [r0, #0x1a] + ldrh r0, [r4, #0x6] + cmp r3, r0 + blo _020BDB08 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BDB3C: .word UNK_0210659C + arm_func_end FUN_020BDAB4 + diff --git a/arm9/asm/NNS_G3D_nsbma.s b/arm9/asm/NNS_G3D_nsbma.s new file mode 100644 index 00000000..67c92e46 --- /dev/null +++ b/arm9/asm/NNS_G3D_nsbma.s @@ -0,0 +1,292 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020BDB40 +FUN_020BDB40: ; 0x020BDB40 + stmdb sp!, {r4-r8,lr} + ldr r7, [r1, #0x8] + mov r2, r2, lsl #0x10 + ldrh r4, [r7, #0xe] + add r5, r7, #0x8 + ldr r6, [r1, #0x0] + ldrh r3, [r5, r4] + mov r1, r2, lsr #0x10 + add r2, r5, r4 + mul r4, r3, r1 + add r3, r2, #0x4 + mov r6, r6, asr #0xc + mov r8, r0 + ldr r1, [r3, r4] + mov r0, r7 + mov r2, r6 + add r5, r3, r4 + bl FUN_020BDDAC + mov r4, r0 + ldr r1, [r5, #0x4] + mov r0, r7 + mov r2, r6 + bl FUN_020BDDAC + ldr r1, [r8, #0x4] + mov r2, r6 + and r1, r1, #0x8000 + orr r1, r1, r4 + orr r0, r1, r0, lsl #0x10 + str r0, [r8, #0x4] + mov r0, r7 + ldr r1, [r5, #0xc] + bl FUN_020BDDAC + mov r4, r0 + mov r0, r7 + ldr r1, [r5, #0x8] + mov r2, r6 + bl FUN_020BDDAC + mov r2, r6 + ldr r1, [r8, #0x8] + and r1, r1, #0x8000 + orr r0, r1, r0 + orr r0, r0, r4, lsl #0x10 + str r0, [r8, #0x8] + mov r0, r7 + ldr r1, [r5, #0x10] + bl FUN_020BDCB8 + ldr r1, [r8, #0xc] + bic r1, r1, #0x1f0000 + orr r0, r1, r0, lsl #0x10 + str r0, [r8, #0xc] + ldmia sp!, {r4-r8,pc} + arm_func_end FUN_020BDB40 + + ; NNSi_G3dAnmObjInitNsBma + arm_func_start FUN_020BDC0C +FUN_020BDC0C: ; 0x020BDC0C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BDCB4 ; =UNK_021065A8 + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0x9] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r6, r7 + add r5, r8, #0x8 + add r4, r4, #0x4 +_020BDC6C: + ldrh r1, [r8, #0xe] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC14C + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0x9] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BDC6C + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BDCB4: .word UNK_021065A8 + arm_func_end FUN_020BDC0C + + ; GetMatColAnmuAlphaValue_ + arm_func_start FUN_020BDCB8 +FUN_020BDCB8: ; 0x020BDCB8 + ands r3, r1, #0x20000000 + movne r0, r1, lsl #0x10 + movne r0, r0, lsr #0x10 + bxne lr + ldr r3, _020BDDA4 ; =0x0000FFFF + ands r12, r1, #0xc0000000 + and r3, r1, r3 + add r0, r0, r3 + ldreqb r0, [r0, r2] + bxeq lr + ldr r3, _020BDDA8 ; =0x1FFF0000 + ands r12, r1, #0x40000000 + and r1, r1, r3 + mov r3, r1, lsr #0x10 + beq _020BDD30 + ands r1, r2, #0x1 + beq _020BDD28 + cmp r2, r3 + addhi r0, r0, r3, lsr #0x1 + ldrhib r0, [r0, #0x1] + bxhi lr + add r1, r0, r2, lsr #0x1 + ldrb r2, [r0, r2, lsr #0x1] + ldrb r0, [r1, #0x1] + add r0, r2, r0 + mov r0, r0, lsl #0xf + mov r0, r0, lsr #0x10 + bx lr +_020BDD28: + ldrb r0, [r0, r2, lsr #0x1] + bx lr +_020BDD30: + ands r1, r2, #0x3 + beq _020BDD9C + cmp r2, r3 + addhi r0, r0, r3, lsr #0x2 + ldrhib r0, [r1, r0] + bxhi lr + ands r1, r2, #0x1 + beq _020BDD80 + ands r1, r2, #0x2 + movne r1, r2, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r2, lsr #0x2 + addeq r1, r2, #0x1 + ldrb r2, [r0, r2] + ldrb r1, [r0, r1] + mov r0, #0x3 + mla r0, r2, r0, r1 + mov r0, r0, lsl #0xe + mov r0, r0, lsr #0x10 + bx lr +_020BDD80: + add r1, r0, r2, lsr #0x2 + ldrb r2, [r0, r2, lsr #0x2] + ldrb r0, [r1, #0x1] + add r0, r2, r0 + mov r0, r0, lsl #0xf + mov r0, r0, lsr #0x10 + bx lr +_020BDD9C: + ldrb r0, [r0, r2, lsr #0x2] + bx lr + .balign 4 +_020BDDA4: .word 0x0000FFFF +_020BDDA8: .word 0x1FFF0000 + arm_func_end FUN_020BDCB8 + + ; GetMatColAnmValue_ + arm_func_start FUN_020BDDAC +FUN_020BDDAC: ; 0x020BDDAC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ands r3, r1, #0x20000000 + movne r0, r1, lsl #0x10 + addne sp, sp, #0x4 + movne r0, r0, lsr #0x10 + ldmneia sp!, {pc} + ldr r3, _020BDF2C ; =0x0000FFFF + ands r12, r1, #0xc0000000 + and r3, r1, r3 + add r0, r0, r3 + moveq r1, r2, lsl #0x1 + addeq sp, sp, #0x4 + ldreqh r0, [r0, r1] + ldmeqia sp!, {pc} + ldr r3, _020BDF30 ; =0x1FFF0000 + ands r12, r1, #0x40000000 + and r1, r1, r3 + mov r3, r1, lsr #0x10 + beq _020BDE34 + ands r1, r2, #0x1 + beq _020BDE24 + cmp r2, r3 + bichi r1, r3, #0x1 + addhi r0, r0, r1 + addhi sp, sp, #0x4 + ldrhih r0, [r0, #0x2] + ldmhiia sp!, {pc} + mov r1, r2, lsr #0x1 + b _020BDEE0 +_020BDE24: + bic r1, r2, #0x1 + add sp, sp, #0x4 + ldrh r0, [r0, r1] + ldmia sp!, {pc} +_020BDE34: + ands r1, r2, #0x3 + beq _020BDECC + cmp r2, r3 + movhi r2, r3, lsr #0x2 + movhi r1, r1, lsl #0x1 + addhi r0, r0, r2, lsl #0x1 + addhi sp, sp, #0x4 + ldrhih r0, [r1, r0] + ldmhiia sp!, {pc} + ands r1, r2, #0x1 + beq _020BDEC4 + ands r1, r2, #0x2 + movne r1, r2, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r2, lsr #0x2 + addeq r1, r2, #0x1 + mov r2, r2, lsl #0x1 + mov r1, r1, lsl #0x1 + ldrh r12, [r0, r2] + ldrh lr, [r0, r1] + ldr r0, _020BDF34 ; =0x00007C1F + and r3, r12, #0x3e0 + and r2, lr, #0x3e0 + mov r1, #0x3 + mla r2, r3, r1, r2 + and r12, r12, r0 + and r3, lr, r0 + mla r1, r12, r1, r3 + mov r2, r2, lsr #0x2 + and r1, r0, r1, lsr #0x2 + and r0, r2, #0x3e0 + orr r0, r1, r0 + mov r0, r0, lsl #0x10 + add sp, sp, #0x4 + mov r0, r0, lsr #0x10 + ldmia sp!, {pc} +_020BDEC4: + mov r1, r2, lsr #0x2 + b _020BDEE0 +_020BDECC: + mov r1, r2, lsr #0x2 + mov r1, r1, lsl #0x1 + add sp, sp, #0x4 + ldrh r0, [r0, r1] + ldmia sp!, {pc} +_020BDEE0: + mov r2, r1, lsl #0x1 + add r1, r0, r1, lsl #0x1 + ldrh r3, [r0, r2] + ldrh r12, [r1, #0x2] + ldr r0, _020BDF34 ; =0x00007C1F + and r2, r3, #0x3e0 + and r1, r12, #0x3e0 + add r1, r2, r1 + mov r1, r1, lsr #0x1 + and r3, r3, r0 + and r2, r12, r0 + add r2, r3, r2 + and r2, r0, r2, lsr #0x1 + and r0, r1, #0x3e0 + orr r0, r2, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BDF2C: .word 0x0000FFFF +_020BDF30: .word 0x1FFF0000 +_020BDF34: .word 0x00007C1F + arm_func_end FUN_020BDDAC + diff --git a/arm9/asm/NNS_G3D_nsbta.s b/arm9/asm/NNS_G3D_nsbta.s new file mode 100644 index 00000000..85d25dca --- /dev/null +++ b/arm9/asm/NNS_G3D_nsbta.s @@ -0,0 +1,305 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020BDF38 +FUN_020BDF38: ; 0x020BDF38 + stmdb sp!, {r4,lr} + ldr r12, [r1, #0x0] + mov r4, r0 + mov r2, r2, lsl #0x10 + ldr r0, [r1, #0x8] + mov r1, r2, lsr #0x10 + mov r3, r4 + mov r2, r12, asr #0xc + bl FUN_020BE030 + ldr r0, [r4, #0x10] + bic r0, r0, #0xc0000000 + str r0, [r4, #0x10] + ldr r0, [r4, #0x10] + orr r0, r0, #0x40000000 + str r0, [r4, #0x10] + ldr r0, [r4, #0x0] + orr r0, r0, #0x8 + str r0, [r4, #0x0] + ldmia sp!, {r4,pc} + arm_func_end FUN_020BDF38 + + ; NNSi_G3dAnmObjInitNsBta + arm_func_start FUN_020BDF84 +FUN_020BDF84: ; 0x020BDF84 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BE02C ; =UNK_021065A0 + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0x9] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r6, r7 + add r5, r8, #0x8 + add r4, r4, #0x4 +_020BDFE4: + ldrh r1, [r8, #0xe] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC14C + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0x9] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BDFE4 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BE02C: .word UNK_021065A0 + arm_func_end FUN_020BDF84 + + ; _end + arm_func_start FUN_020BE030 +FUN_020BE030: ; 0x020BE030 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + ldrh r4, [r8, #0xe] + add r5, r8, #0x8 + mov r6, r3 + ldrh r3, [r5, r4] + add r4, r5, r4 + add r4, r4, #0x4 + mla r5, r3, r1, r4 + mov r7, r2 + ldr r1, [r5, #0x18] + ldr r2, [r5, #0x1c] + mov r3, r7 + ldr r4, [r6, #0x0] + bl FUN_020BE238 + mov r9, r0 + ldr r1, [r5, #0x20] + mov r0, r8 + ldr r2, [r5, #0x24] + mov r3, r7 + bl FUN_020BE238 + cmp r9, #0x0 + bne _020BE09C + cmp r0, #0x0 + orreq r4, r4, #0x4 + beq _020BE0A8 +_020BE09C: + str r9, [r6, #0x24] + str r0, [r6, #0x28] + bic r4, r4, #0x4 +_020BE0A8: + ldr r1, [r5, #0x10] + ldr r2, [r5, #0x14] + mov r0, r8 + mov r3, r7 + bl FUN_020BE12C + cmp r0, #0x10000000 + strneh r0, [r6, #0x20] + movne r0, r0, lsr #0x10 + strneh r0, [r6, #0x22] + orreq r4, r4, #0x2 + ldr r1, [r5, #0x0] + ldr r2, [r5, #0x4] + mov r0, r8 + mov r3, r7 + bicne r4, r4, #0x2 + bl FUN_020BE238 + mov r9, r0 + ldr r1, [r5, #0x8] + ldr r2, [r5, #0xc] + mov r0, r8 + mov r3, r7 + bl FUN_020BE238 + cmp r9, #0x1000 + bne _020BE114 + cmp r0, #0x1000 + orreq r4, r4, #0x1 + beq _020BE120 +_020BE114: + str r9, [r6, #0x18] + str r0, [r6, #0x1c] + bic r4, r4, #0x1 +_020BE120: + str r4, [r6, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + arm_func_end FUN_020BE030 + + ; GetTexSRTAnmSinCosVal_ + arm_func_start FUN_020BE12C +FUN_020BE12C: ; 0x020BE12C + ands r12, r1, #0x20000000 + movne r0, r2 + bxne lr + add r0, r0, r2 + ands r2, r1, #0xc0000000 + beq _020BE1F8 + ldr r2, _020BE234 ; =0x0000FFFF + ands r12, r1, #0x40000000 + and r2, r1, r2 + beq _020BE17C + ands r1, r3, #0x1 + beq _020BE174 + cmp r3, r2 + movhi r1, r2, lsr #0x1 + addhi r3, r1, #0x1 + bhi _020BE1F8 + mov r2, r3, lsr #0x1 + b _020BE200 +_020BE174: + mov r3, r3, lsr #0x1 + b _020BE1F8 +_020BE17C: + ands r1, r3, #0x3 + beq _020BE1F4 + cmp r3, r2 + addhi r3, r1, r2, lsr #0x2 + bhi _020BE1F8 + ands r1, r3, #0x1 + beq _020BE1EC + ands r1, r3, #0x2 + movne r1, r3, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r3, lsr #0x2 + addeq r1, r2, #0x1 + mov r12, r2, lsl #0x2 + add r3, r0, r2, lsl #0x2 + mov r2, r1, lsl #0x2 + add r1, r0, r1, lsl #0x2 + ldrsh r12, [r0, r12] + ldrsh r2, [r0, r2] + mov r0, #0x3 + ldrsh r3, [r3, #0x2] + ldrsh r1, [r1, #0x2] + mla r2, r12, r0, r2 + mla r1, r3, r0, r1 + ldr r0, _020BE234 ; =0x0000FFFF + mov r1, r1, asr #0x2 + and r0, r0, r2, asr #0x2 + orr r0, r0, r1, lsl #0x10 + bx lr +_020BE1EC: + mov r2, r3, lsr #0x2 + b _020BE200 +_020BE1F4: + mov r3, r3, lsr #0x2 +_020BE1F8: + ldr r0, [r0, r3, lsl #0x2] + bx lr +_020BE200: + add r1, r0, r2, lsl #0x2 + mov r2, r2, lsl #0x2 + ldrsh r12, [r0, r2] + ldrsh r3, [r1, #0x4] + ldrsh r2, [r1, #0x2] + ldrsh r1, [r1, #0x6] + ldr r0, _020BE234 ; =0x0000FFFF + add r3, r12, r3 + add r1, r2, r1 + and r2, r0, r3, asr #0x1 + mov r0, r1, asr #0x1 + orr r0, r2, r0, lsl #0x10 + bx lr + .balign 4 +_020BE234: .word 0x0000FFFF + arm_func_end FUN_020BE12C + + ; GetTexSRTAnmVectorVal_ + arm_func_start FUN_020BE238 +FUN_020BE238: ; 0x020BE238 + ands r12, r1, #0x20000000 + movne r0, r2 + bxne lr + add r0, r0, r2 + ands r2, r1, #0xc0000000 + beq _020BE2F0 + ldr r2, _020BE330 ; =0x0000FFFF + ands r12, r1, #0x40000000 + and r12, r1, r2 + beq _020BE288 + ands r2, r3, #0x1 + beq _020BE280 + cmp r3, r12 + movhi r2, r12, lsr #0x1 + addhi r3, r2, #0x1 + bhi _020BE2F0 + mov r3, r3, lsr #0x1 + b _020BE304 +_020BE280: + mov r3, r3, lsr #0x1 + b _020BE2F0 +_020BE288: + ands r2, r3, #0x3 + beq _020BE2EC + cmp r3, r12 + addhi r3, r2, r12, lsr #0x2 + bhi _020BE2F0 + ands r2, r3, #0x1 + beq _020BE2E4 + ands r2, r3, #0x2 + movne r3, r3, lsr #0x2 + addne r2, r3, #0x1 + moveq r2, r3, lsr #0x2 + addeq r3, r2, #0x1 + ands r1, r1, #0x10000000 + movne r2, r2, lsl #0x1 + movne r1, r3, lsl #0x1 + ldrnesh r2, [r0, r2] + ldrnesh r1, [r0, r1] + ldreq r2, [r0, r2, lsl #0x2] + ldreq r1, [r0, r3, lsl #0x2] + mov r0, #0x3 + mla r0, r2, r0, r1 + mov r0, r0, asr #0x2 + bx lr +_020BE2E4: + mov r3, r3, lsr #0x2 + b _020BE304 +_020BE2EC: + mov r3, r3, lsr #0x2 +_020BE2F0: + ands r1, r1, #0x10000000 + movne r1, r3, lsl #0x1 + ldrnesh r0, [r0, r1] + ldreq r0, [r0, r3, lsl #0x2] + bx lr +_020BE304: + ands r1, r1, #0x10000000 + movne r2, r3, lsl #0x1 + addne r1, r0, r3, lsl #0x1 + ldrnesh r2, [r0, r2] + ldrnesh r0, [r1, #0x2] + addeq r1, r0, r3, lsl #0x2 + ldreq r2, [r0, r3, lsl #0x2] + ldreq r0, [r1, #0x4] + add r0, r2, r0 + mov r0, r0, asr #0x1 + bx lr + .balign 4 +_020BE330: .word 0x0000FFFF + arm_func_end FUN_020BE238 + diff --git a/arm9/asm/NNS_G3D_nsbtp.s b/arm9/asm/NNS_G3D_nsbtp.s new file mode 100644 index 00000000..3701b92e --- /dev/null +++ b/arm9/asm/NNS_G3D_nsbtp.s @@ -0,0 +1,185 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020BE334 +FUN_020BE334: ; 0x020BE334 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r1 + ldr r3, [r6, #0x0] + ldr r5, [r6, #0x8] + mov r1, r2, lsl #0x10 + mov r2, r3, lsl #0x4 + mov r7, r0 + mov r0, r5 + mov r1, r1, lsr #0x10 + mov r2, r2, lsr #0x10 + bl FUN_020BC42C + mov r4, r0 + ldrb r1, [r4, #0x2] + mov r0, r5 + bl FUN_020BC4B8 + mov r1, r0 + ldr r0, [r6, #0x14] + mov r2, r7 + bl FUN_020BE408 + ldrb r1, [r4, #0x3] + cmp r1, #0xff + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + mov r0, r5 + bl FUN_020BC4A8 + mov r1, r0 + ldr r0, [r6, #0x14] + mov r2, r7 + bl FUN_020BE3B4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BE334 + + ; _end + arm_func_start FUN_020BE3B4 +FUN_020BE3B4: ; 0x020BE3B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrh r0, [r5, #0x34] + mov r4, r2 + add r0, r5, r0 + bl FUN_020BC2A0 + ldr r1, [r5, #0x2c] + ldrh r2, [r0, #0x2] + mov r1, r1, lsl #0x10 + mov r3, r1, lsr #0x10 + ands r1, r2, #0x1 + ldrh r0, [r0, #0x0] + moveq r1, r3, lsl #0xf + moveq r3, r1, lsr #0x10 + moveq r0, r0, lsl #0xf + moveq r0, r0, lsr #0x10 + add r0, r0, r3 + str r0, [r4, #0x14] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020BE3B4 + + ; SetTexParamaters_ + arm_func_start FUN_020BE408 +FUN_020BE408: ; 0x020BE408 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + add r0, r5, #0x3c + mov r4, r2 + bl FUN_020BC2A0 + ldr r1, [r0, #0x0] + ldr r3, [r4, #0x10] + and r1, r1, #0x1c000000 + cmp r1, #0x14000000 + ldrne r2, [r5, #0x8] + ldrne r1, _020BE4E0 ; =0x0000FFFF + andne r5, r2, r1 + ldreq r2, [r5, #0x18] + ldreq r1, _020BE4E0 ; =0x0000FFFF + andeq r5, r2, r1 + ldr r1, _020BE4E4 ; =0xC00F0000 + ldr r2, _020BE4E8 ; =0x000007FF + and r1, r3, r1 + str r1, [r4, #0x10] + ldr r1, [r0, #0x0] + ldr r3, [r4, #0x10] + add r1, r1, r5 + orr r1, r3, r1 + str r1, [r4, #0x10] + ldr r3, [r0, #0x4] + ldr r1, _020BE4EC ; =0x003FF800 + and r3, r3, r2 + strh r3, [r4, #0x2c] + ldr r3, [r0, #0x4] + and r1, r3, r1 + mov r1, r1, lsr #0xb + strh r1, [r4, #0x2e] + ldr r3, [r0, #0x4] + ldrh r1, [r4, #0x2c] + and r0, r3, r2 + and r5, r2, r3, lsr #0xb + cmp r0, r1 + moveq r0, #0x1000 + beq _020BE4B4 + mov r0, r0, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020BE4B4: + str r0, [r4, #0x30] + ldrh r1, [r4, #0x2e] + cmp r5, r1 + moveq r0, #0x1000 + beq _020BE4D4 + mov r0, r5, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020BE4D4: + str r0, [r4, #0x34] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BE4E0: .word 0x0000FFFF +_020BE4E4: .word 0xC00F0000 +_020BE4E8: .word 0x000007FF +_020BE4EC: .word 0x003FF800 + arm_func_end FUN_020BE408 + + ; NNSi_G3dAnmObjInitNsBtp + arm_func_start FUN_020BE4F0 +FUN_020BE4F0: ; 0x020BE4F0 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BE59C ; =UNK_021065A4 + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + str r8, [r9, #0x8] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0xd] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} + mov r6, r7 + add r5, r8, #0xc + add r4, r4, #0x4 +_020BE554: + ldrh r1, [r8, #0x12] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC14C + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0xd] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BE554 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BE59C: .word UNK_021065A4 + arm_func_end FUN_020BE4F0 + diff --git a/arm9/asm/NNS_G3D_nsbva.s b/arm9/asm/NNS_G3D_nsbva.s new file mode 100644 index 00000000..8b675545 --- /dev/null +++ b/arm9/asm/NNS_G3D_nsbva.s @@ -0,0 +1,52 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020BE5A0 +FUN_020BE5A0: ; 0x020BE5A0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr lr, [r1, #0x8] + ldr r3, [r1, #0x0] + ldrh r1, [lr, #0x6] + mov r12, r3, asr #0xc + mov r3, #0x1 + mla r2, r12, r1, r2 + mov r1, r2, lsr #0x5 + add r1, lr, r1, lsl #0x2 + ldr r1, [r1, #0xc] + and r2, r2, #0x1f + and r1, r1, r3, lsl r2 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end FUN_020BE5A0 + + ; NNSi_G3dAnmObjInitNsBva + arm_func_start FUN_020BE5E0 +FUN_020BE5E0: ; 0x020BE5E0 + ldr r3, _020BE628 ; =UNK_02106598 + mov r12, #0x0 + ldr r3, [r3, #0x0] + str r3, [r0, #0xc] + ldrb r2, [r2, #0x17] + strb r2, [r0, #0x19] + str r1, [r0, #0x8] + ldrb r1, [r0, #0x19] + cmp r1, #0x0 + bxls lr +_020BE608: + orr r2, r12, #0x100 + add r1, r0, r12, lsl #0x1 + strh r2, [r1, #0x1a] + ldrb r1, [r0, #0x19] + add r12, r12, #0x1 + cmp r12, r1 + blo _020BE608 + bx lr + .balign 4 +_020BE628: .word UNK_02106598 + arm_func_end FUN_020BE5E0 + diff --git a/arm9/asm/NNS_G3D_res_struct_acce.s b/arm9/asm/NNS_G3D_res_struct_acce.s new file mode 100644 index 00000000..1455f0dc --- /dev/null +++ b/arm9/asm/NNS_G3D_res_struct_acce.s @@ -0,0 +1,327 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; NNS_G3dGetTex + arm_func_start FUN_020BC0FC +FUN_020BC0FC: ; 0x020BC0FC + ldrh r2, [r0, #0xc] + ldrh r1, [r0, #0xe] + add r3, r0, r2 + cmp r1, #0x1 + bne _020BC12C + ldr r2, [r0, #0x0] + ldr r1, _020BC138 ; =0x30585442 + cmp r2, r1 + ldreq r1, [r3, #0x0] + addeq r0, r0, r1 + movne r0, #0x0 + bx lr +_020BC12C: + ldr r1, [r3, #0x4] + add r0, r0, r1 + bx lr + .balign 4 +_020BC138: .word 0x30585442 + arm_func_end FUN_020BC0FC + + ; _end + arm_func_start FUN_020BC13C +FUN_020BC13C: ; 0x020BC13C + ldrh r1, [r0, #0xc] + ldr r1, [r0, r1] + add r0, r0, r1 + bx lr + arm_func_end FUN_020BC13C + + ; _end + arm_func_start FUN_020BC14C +FUN_020BC14C: ; 0x020BC14C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrb r2, [r0, #0x1] + cmp r2, #0x10 + bhs _020BC1E4 + cmp r2, #0x0 + ldr lr, [r1, #0x0] + ldr r12, [r1, #0x4] + ldr r3, [r1, #0x8] + ldr r2, [r1, #0xc] + mov r4, #0x0 + bls _020BC294 + ldrh r5, [r0, #0x6] + mov r1, r4 + add r6, r0, r5 + ldrh r5, [r6, #0x2] + add r6, r6, r5 +_020BC190: + ldr r5, [r6, r1] + add r7, r6, r1 + cmp r5, lr + bne _020BC1CC + ldr r5, [r7, #0x4] + cmp r5, r12 + bne _020BC1CC + ldr r5, [r7, #0x8] + cmp r5, r3 + bne _020BC1CC + ldr r5, [r7, #0xc] + cmp r5, r2 + addeq sp, sp, #0x4 + moveq r0, r4 + ldmeqia sp!, {r4-r7,pc} +_020BC1CC: + ldrb r5, [r0, #0x1] + add r4, r4, #0x1 + add r1, r1, #0x10 + cmp r4, r5 + blo _020BC190 + b _020BC294 +_020BC1E4: + add r3, r0, #0x8 + ldrb r2, [r3, #0x1] + cmp r2, #0x0 + beq _020BC294 + ldrb r5, [r3, r2, lsl #0x2] + ldrb r4, [r3, #0x0] + add r2, r3, r2, lsl #0x2 + cmp r4, r5 + bls _020BC238 +_020BC208: + mov r4, r5, asr #0x5 + ldr r12, [r1, r4, lsl #0x2] + and r4, r5, #0x1f + mov r4, r12, lsr r4 + and r4, r4, #0x1 + add r4, r2, r4 + ldrb r12, [r4, #0x1] + ldrb r4, [r2, #0x0] + ldrb r5, [r3, r12, lsl #0x2] + add r2, r3, r12, lsl #0x2 + cmp r4, r5 + bhi _020BC208 +_020BC238: + ldrh r4, [r0, #0x6] + ldr r3, [r1, #0x0] + add r12, r0, r4 + ldrh r4, [r12, #0x2] + ldrb r0, [r2, #0x3] + add r4, r12, r4 + ldr r2, [r4, r0, lsl #0x4] + add r4, r4, r0, lsl #0x4 + cmp r2, r3 + bne _020BC294 + ldr r3, [r4, #0x4] + ldr r2, [r1, #0x4] + cmp r3, r2 + bne _020BC294 + ldr r3, [r4, #0x8] + ldr r2, [r1, #0x8] + cmp r3, r2 + bne _020BC294 + ldr r2, [r4, #0xc] + ldr r1, [r1, #0xc] + cmp r2, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} +_020BC294: + mvn r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BC14C + + ; _end + arm_func_start FUN_020BC2A0 +FUN_020BC2A0: ; 0x020BC2A0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrb r2, [r0, #0x1] + cmp r2, #0x10 + bhs _020BC34C + cmp r2, #0x0 + ldr lr, [r1, #0x0] + ldr r12, [r1, #0x4] + ldr r3, [r1, #0x8] + ldr r2, [r1, #0xc] + mov r4, #0x0 + bls _020BC404 + ldrh r5, [r0, #0x6] + mov r1, r4 + add r6, r0, r5 + ldrh r5, [r6, #0x2] + add r6, r6, r5 +_020BC2E4: + ldr r5, [r6, r1] + add r7, r6, r1 + cmp r5, lr + bne _020BC334 + ldr r5, [r7, #0x4] + cmp r5, r12 + bne _020BC334 + ldr r5, [r7, #0x8] + cmp r5, r3 + bne _020BC334 + ldr r5, [r7, #0xc] + cmp r5, r2 + bne _020BC334 + ldrh r2, [r0, #0x6] + add sp, sp, #0x4 + ldrh r1, [r0, r2] + add r0, r0, r2 + add r0, r0, #0x4 + mla r0, r1, r4, r0 + ldmia sp!, {r4-r7,pc} +_020BC334: + ldrb r5, [r0, #0x1] + add r4, r4, #0x1 + add r1, r1, #0x10 + cmp r4, r5 + blo _020BC2E4 + b _020BC404 +_020BC34C: + add r3, r0, #0x8 + ldrb r2, [r3, #0x1] + cmp r2, #0x0 + beq _020BC404 + ldrb r5, [r3, r2, lsl #0x2] + ldrb r4, [r3, #0x0] + add r2, r3, r2, lsl #0x2 + cmp r4, r5 + bls _020BC3A0 +_020BC370: + mov r4, r5, asr #0x5 + ldr r12, [r1, r4, lsl #0x2] + and r4, r5, #0x1f + mov r4, r12, lsr r4 + and r4, r4, #0x1 + add r4, r2, r4 + ldrb r12, [r4, #0x1] + ldrb r4, [r2, #0x0] + ldrb r5, [r3, r12, lsl #0x2] + add r2, r3, r12, lsl #0x2 + cmp r4, r5 + bhi _020BC370 +_020BC3A0: + ldrh r4, [r0, #0x6] + ldrb r2, [r2, #0x3] + ldr r3, [r1, #0x0] + add r0, r0, r4 + ldrh r4, [r0, #0x2] + add r12, r0, r4 + ldr r4, [r12, r2, lsl #0x4] + add r12, r12, r2, lsl #0x4 + cmp r4, r3 + bne _020BC404 + ldr r4, [r12, #0x4] + ldr r3, [r1, #0x4] + cmp r4, r3 + bne _020BC404 + ldr r4, [r12, #0x8] + ldr r3, [r1, #0x8] + cmp r4, r3 + bne _020BC404 + ldr r3, [r12, #0xc] + ldr r1, [r1, #0xc] + cmp r3, r1 + ldreqh r1, [r0], #0x4 + addeq sp, sp, #0x4 + mlaeq r0, r1, r2, r0 + ldmeqia sp!, {r4-r7,pc} +_020BC404: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BC2A0 + + ; _end + arm_func_start FUN_020BC410 +FUN_020BC410: ; 0x020BC410 + ldrh r3, [r0, #0x12] + add r0, r0, #0xc + ldrh r2, [r0, r3] + add r0, r0, r3 + add r0, r0, #0x4 + mla r0, r2, r1, r0 + bx lr + arm_func_end FUN_020BC410 + + ; _end + arm_func_start FUN_020BC42C +FUN_020BC42C: ; 0x020BC42C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl FUN_020BC410 + ldrsh r1, [r0, #0x4] + ldrh r3, [r0, #0x6] + mul r2, r1, r4 + add r3, r5, r3 + mov r2, r2, lsr #0xc + b _020BC45C +_020BC458: + sub r2, r2, #0x1 +_020BC45C: + cmp r2, #0x0 + beq _020BC474 + mov r1, r2, lsl #0x2 + ldrh r1, [r3, r1] + cmp r1, r4 + bhs _020BC458 +_020BC474: + ldrh r1, [r0, #0x0] + b _020BC480 +_020BC47C: + add r2, r2, #0x1 +_020BC480: + add r0, r2, #0x1 + cmp r0, r1 + bhs _020BC49C + add r0, r3, r2, lsl #0x2 + ldrh r0, [r0, #0x4] + cmp r0, r4 + bls _020BC47C +_020BC49C: + add r0, r3, r2, lsl #0x2 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020BC42C + + ; _end + arm_func_start FUN_020BC4A8 +FUN_020BC4A8: ; 0x020BC4A8 + ldrh r2, [r0, #0xa] + add r0, r0, r2 + add r0, r0, r1, lsl #0x4 + bx lr + arm_func_end FUN_020BC4A8 + + ; _end + arm_func_start FUN_020BC4B8 +FUN_020BC4B8: ; 0x020BC4B8 + ldrh r2, [r0, #0x8] + add r0, r0, r2 + add r0, r0, r1, lsl #0x4 + bx lr + arm_func_end FUN_020BC4B8 + + ; _end + arm_func_start FUN_020BC4C8 +FUN_020BC4C8: ; 0x020BC4C8 + ldrh r2, [r0, #0xc] + ldr r2, [r0, r2] + add r12, r0, r2 + ldrh r2, [r12, #0xe] + add r3, r12, #0x8 + ldrh r0, [r3, r2] + add r2, r3, r2 + add r2, r2, #0x4 + mul r1, r0, r1 + adds r0, r2, r1 + ldrne r0, [r0, #0x0] + addne r0, r12, r0 + moveq r0, #0x0 + bx lr + arm_func_end FUN_020BC4C8 + diff --git a/arm9/asm/NNS_G3D_sbc.s b/arm9/asm/NNS_G3D_sbc.s new file mode 100644 index 00000000..48ad7470 --- /dev/null +++ b/arm9/asm/NNS_G3D_sbc.s @@ -0,0 +1,2861 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + ; matColorMask_$8998 + .global UNK_020FF9D0 +UNK_020FF9D0: ; 0x020FF9D0 + .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F + .byte 0x00, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F + + ; static const in function + ; pivotUtil_$9100 + .global UNK_020FF9F0 +UNK_020FF9F0: ; 0x020FF9F0 + .byte 0x04, 0x05, 0x07, 0x08 + .byte 0x03, 0x05, 0x06, 0x08 + .byte 0x03, 0x04, 0x06, 0x07 + .byte 0x01, 0x02, 0x07, 0x08 + .byte 0x00, 0x02, 0x06, 0x08 + .byte 0x00, 0x01, 0x06, 0x07 + .byte 0x01, 0x02, 0x04, 0x05 + .byte 0x00, 0x02, 0x03, 0x05 + .byte 0x00, 0x01, 0x03, 0x04 + + ; static const in function + .section .data + + ; cmd$9407 + .global UNK_02106630 +UNK_02106630: ; 0x02106630 + .byte 0x2A, 0x00, 0x00, 0x00 + + ; cmd$9407 + 0x4 + .global UNK_02106634 +UNK_02106634: ; 0x02106634 + .byte 0x00, 0x00, 0x00, 0x00 + + ; cmd$9366 + .global UNK_02106638 +UNK_02106638: ; 0x02106638 + .byte 0x2A, 0x00, 0x00, 0x00 + + ; cmd$9366 + 0x4 + .global UNK_0210663C +UNK_0210663C: ; 0x0210663C + .byte 0x00, 0x00, 0x00, 0x00 + + ; NNS_G3dFuncSbcMatTable + .global UNK_02106640 +UNK_02106640: ; 0x02106640 + .word FUN_020BA58C + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; NNS_G3dFuncSbcShpTable + .global UNK_02106650 +UNK_02106650: ; 0x02106650 + .word FUN_020BA438 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; mtx$9412 + .global UNK_02106660 +UNK_02106660: ; 0x02106660 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 + + ; bbcmd1$9173 + .global UNK_021066A0 +UNK_021066A0: ; 0x021066A0 + .byte 0x12, 0x10, 0x17, 0x1B + + ; bbcmd1$9173 + 0x4 + .global UNK_021066A4 +UNK_021066A4: ; 0x021066A4 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + ; bbcmd1$9173 + 0xC + .global UNK_021066AC +UNK_021066AC: ; 0x021066AC + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00 + + ; bbcmd1$9173 + 0x30 + .global UNK_021066D0 +UNK_021066D0: ; 0x021066D0 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; bbcmd1$9173 + 0x3C + .global UNK_021066DC +UNK_021066DC: ; 0x021066DC + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; bbcmd1$9234 + .global UNK_021066E8 +UNK_021066E8: ; 0x021066E8 + .byte 0x12, 0x10, 0x17, 0x1B + + ; bbcmd1$9234 + 0x4 + .global UNK_021066EC +UNK_021066EC: ; 0x021066EC + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + ; bbcmd1$9234 + 0xC + .global UNK_021066F4 +UNK_021066F4: ; 0x021066F4 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00 + + ; bbcmd1$9234 + 0x30 + .global UNK_02106718 +UNK_02106718: ; 0x02106718 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; bbcmd1$9234 + 0x3C + .global UNK_02106724 +UNK_02106724: ; 0x02106724 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; NNS_G3dFuncSbcTable + .global UNK_02106730 +UNK_02106730: ; 0x02106730 + .word FUN_020BAC70 + .word FUN_020BAC48 + .word FUN_020BAAC0 + .word FUN_020BA9EC + .word FUN_020BA50C + .word FUN_020BA3C4 + .word FUN_020B9F84 + .word FUN_020B9C54 + .word FUN_020B98C4 + .word FUN_020B9258 + .word FUN_020B9178 + .word FUN_020B9110 + .word FUN_020B8DF0 + .word FUN_020B8A60 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .section .bss + + ; NNS_G3dRS + .global UNK_021CEF7C +UNK_021CEF7C: ; 0x021CEF7C + .space 0x4 + + ; NNS_G3dRSOnGlb + .global UNK_021CEF80 +UNK_021CEF80: ; 0x021CEF80 + .space 0xe00 + + ; NNS_G3dRSOnGlb + 0xE00 + .global UNK_021CFD80 +UNK_021CFD80: ; 0x021CFD80 + .space 0x4 + + ; NNS_G3dRSOnGlb + 0xE04 + .global UNK_021CFD84 +UNK_021CFD84: ; 0x021CFD84 + .space 0x4 + + ; NNS_G3dRSOnGlb + 0xE08 + .global UNK_021CFD88 +UNK_021CFD88: ; 0x021CFD88 + .space 0x4 + + ; NNS_G3dRSOnGlb + 0xE0C + .global UNK_021CFD8C +UNK_021CFD8C: ; 0x021CFD8C + .space 0x4 + + ; NNS_G3dRSOnGlb + 0xE10 + .global UNK_021CFD90 +UNK_021CFD90: ; 0x021CFD90 + .space 0x4 + + ; NNS_G3dRSOnGlb + 0xE14 + .global UNK_021CFD94 +UNK_021CFD94: ; 0x021CFD94 + .space 0x2ba + + ; NNS_G3dRSOnGlb + 0x10CE + .global UNK_021D004E +UNK_021D004E: ; 0x021D004E + .space 0x332 + + ; NNS_G3dRSOnGlb + 0x1400 + .global UNK_021D0380 +UNK_021D0380: ; 0x021D0380 + .space 0x40 + + ; NNS_G3dRSOnGlb + 0x1440 + .global UNK_021D03C0 +UNK_021D03C0: ; 0x021D03C0 + .space 0xb42 + + ; NNS_G3dRSOnGlb + 0x1F82 + .global UNK_021D0F02 +UNK_021D0F02: ; 0x021D0F02 + .space 0xd7e + + .section .text + + ; NNSi_G3dFuncSbc_PRJMAP + arm_func_start FUN_020B8A60 +FUN_020B8A60: ; 0x020B8A60 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x80 + mov r5, r0 + ldr r1, [r5, #0x8] + ands r0, r1, #0x200 + bne _020B8DB4 + ands r0, r1, #0x1 + beq _020B8DB4 + add r0, sp, #0x10 + mov r1, #0x0 + bl FUN_020BB824 + mov r0, #0x1e + str r0, [sp, #0x0] + add r1, sp, #0x0 + mov r0, #0x13 + mov r2, #0x1 + bl FUN_020BB1C0 + ldr r2, [r5, #0xb0] + ldr r0, [r2, #0x10] + and r1, r0, #0xc0000000 + cmp r1, #0xc0000000 + beq _020B8AF0 + bic r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r5, #0xb0] + ldr r3, _020B8DC8 ; =UNK_02106630 + ldr r0, [r2, #0x10] + ldr r1, _020B8DCC ; =UNK_02106634 + orr r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r5, #0xb0] + ldr r0, [r3, #0x0] + ldr r4, [r2, #0x10] + mov r2, #0x1 + str r4, [r3, #0x4] + bl FUN_020BB1C0 +_020B8AF0: + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020B8B3C + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020B8B40 +_020B8B3C: + mov r0, #0x0 +_020B8B40: + cmp r0, #0x0 + bne _020B8B84 + ldr r0, [r5, #0xb0] + ldr r1, _020B8DD0 ; =UNK_02106660 + ldrh r6, [r0, #0x2e] + ldrh r3, [r0, #0x2c] + mov r0, #0x16 + rsb r2, r6, #0x0 + mov lr, r3, lsl #0xf + mov r12, r2, lsl #0xf + mov r3, r6, lsl #0xf + mov r2, #0x10 + str lr, [r1, #0x0] + str r12, [r1, #0x14] + str lr, [r1, #0x30] + str r3, [r1, #0x34] + bl FUN_020BB1C0 +_020B8B84: + cmp r4, #0x2 + bne _020B8BC0 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020B8BC4 +_020B8BC0: + mov r0, #0x0 +_020B8BC4: + cmp r0, #0x0 + bne _020B8C28 + ldr r12, [r5, #0xd8] + ldr r0, [r5, #0x0] + ldrh r2, [r12, #0xa] + add r3, r12, #0x4 + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrh r2, [r1, #0x1e] + ands r0, r2, #0x2000 + beq _020B8C28 + add r1, r1, #0x2c + ands r0, r2, #0x2 + addeq r1, r1, #0x8 + ands r0, r2, #0x4 + addeq r1, r1, #0x4 + ands r0, r2, #0x8 + addeq r1, r1, #0x8 + mov r0, #0x18 + mov r2, #0x10 + bl FUN_020BB1C0 +_020B8C28: + cmp r4, #0x3 + movne r0, #0x0 + bne _020B8C54 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x8] + and r0, r0, #0x40 +_020B8C54: + cmp r0, #0x0 + bne _020B8D84 + ldr r0, _020B8DD4 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B8CA0 + ldr r1, _020B8DD8 ; =UNK_021CEDF8 + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 + ldr r1, _020B8DDC ; =UNK_021CEDD4 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020B8CE0 +_020B8CA0: + ands r0, r1, #0x2 + beq _020B8CBC + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020B8CE0 +_020B8CBC: + bl FUN_020B8344 + mov r1, r0 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 +_020B8CE0: + bl FUN_020BB394 + ldr r0, _020B8DE0 ; =0x04000440 + mov r2, #0x0 + ldr r1, _020B8DE4 ; =0x04000444 + str r2, [r0, #0x0] + ldr r0, _020B8DE8 ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + add r4, sp, #0x40 +_020B8D04: + mov r0, r4 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B8D04 + ldr r1, _020B8DEC ; =0x04000448 + mov r2, #0x1 + str r2, [r1, #0x0] + ldr r0, _020B8DE0 ; =0x04000440 + mov r2, #0x3 + str r2, [r0, #0x0] + add r1, sp, #0x40 + mov r0, #0x16 + mov r2, #0x10 + bl FUN_020BB1C0 + ldr r1, [sp, #0x70] + ldr r0, [sp, #0x74] + mov r2, r1, asr #0x4 + mov r1, r0, asr #0x4 + mov r0, r2, lsl #0x8 + mov r1, r1, lsl #0x8 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r3, r2, r0, lsl #0x10 + add r1, sp, #0x4 + mov r0, #0x22 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B8D84: + mov r3, #0x2 + add r1, sp, #0x8 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x8] + bl FUN_020BB1C0 + mov r3, #0x1e + add r1, sp, #0xc + mov r0, #0x14 + mov r2, #0x1 + str r3, [sp, #0xc] + bl FUN_020BB1C0 +_020B8DB4: + ldr r0, [r5, #0x0] + add r0, r0, #0x3 + str r0, [r5, #0x0] + add sp, sp, #0x80 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B8DC8: .word UNK_02106630 +_020B8DCC: .word UNK_02106634 +_020B8DD0: .word UNK_02106660 +_020B8DD4: .word UNK_021CED18 +_020B8DD8: .word UNK_021CEDF8 +_020B8DDC: .word UNK_021CEDD4 +_020B8DE0: .word 0x04000440 +_020B8DE4: .word 0x04000444 +_020B8DE8: .word 0x04000454 +_020B8DEC: .word 0x04000448 + arm_func_end FUN_020B8A60 + + ; NNSi_G3dFuncSbc_ENVMAP + arm_func_start FUN_020B8DF0 +FUN_020B8DF0: ; 0x020B8DF0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x44 + mov r7, r0 + ldr r1, [r7, #0x8] + ands r0, r1, #0x200 + bne _020B90E8 + ands r0, r1, #0x1 + beq _020B90E8 + ldr r2, [r7, #0xb0] + ldr r0, [r2, #0x10] + and r1, r0, #0xc0000000 + cmp r1, #0x80000000 + beq _020B8E5C + bic r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r7, #0xb0] + ldr r3, _020B90FC ; =UNK_02106638 + ldr r0, [r2, #0x10] + ldr r1, _020B9100 ; =UNK_0210663C + orr r0, r0, #0x80000000 + str r0, [r2, #0x10] + ldr r2, [r7, #0xb0] + ldr r0, [r3, #0x0] + ldr r4, [r2, #0x10] + mov r2, #0x1 + str r4, [r3, #0x4] + bl FUN_020BB1C0 +_020B8E5C: + mov r0, #0x3 + str r0, [sp, #0x0] + add r1, sp, #0x0 + mov r0, #0x10 + mov r2, #0x1 + bl FUN_020BB1C0 + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + moveq r6, #0x0 + cmp r6, #0x1 + bne _020B8EC0 + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + ldr r0, [r7, #0x8] + moveq r6, #0x0 + and r0, r0, #0x40 + b _020B8EC4 +_020B8EC0: + mov r0, #0x0 +_020B8EC4: + cmp r0, #0x0 + bne _020B8F3C + ldr r0, [r7, #0xb0] + add r1, sp, #0x38 + ldrh r4, [r0, #0x2e] + ldrh r5, [r0, #0x2c] + mov r3, #0x10000 + rsb r0, r4, #0x0 + mov r12, r0, lsl #0xf + mov lr, r5, lsl #0xf + mov r0, #0x1b + mov r2, #0x3 + str lr, [sp, #0x38] + str r12, [sp, #0x3c] + str r3, [sp, #0x40] + bl FUN_020BB1C0 + mov r0, r5, lsl #0x13 + mov r1, r4, lsl #0x13 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r3, r2, r0, lsl #0x10 + add r1, sp, #0x4 + mov r0, #0x22 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B8F3C: + cmp r6, #0x2 + bne _020B8F78 + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + ldr r0, [r7, #0x8] + moveq r6, #0x0 + and r0, r0, #0x40 + b _020B8F7C +_020B8F78: + mov r0, #0x0 +_020B8F7C: + cmp r0, #0x0 + bne _020B8FE0 + ldr r4, [r7, #0xd8] + ldr r0, [r7, #0x0] + ldrh r2, [r4, #0xa] + add r3, r4, #0x4 + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldrh r2, [r1, #0x1e] + ands r0, r2, #0x2000 + beq _020B8FE0 + add r1, r1, #0x2c + ands r0, r2, #0x2 + addeq r1, r1, #0x8 + ands r0, r2, #0x4 + addeq r1, r1, #0x4 + ands r0, r2, #0x8 + addeq r1, r1, #0x8 + mov r0, #0x18 + mov r2, #0x10 + bl FUN_020BB1C0 +_020B8FE0: + cmp r6, #0x3 + movne r0, #0x0 + bne _020B900C + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x8] + and r0, r0, #0x40 +_020B900C: + cmp r0, #0x0 + bne _020B90D0 + mov r3, #0x2 + add r1, sp, #0x8 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x8] + bl FUN_020BB1C0 + add r1, sp, #0x14 + mov r0, #0x0 + bl FUN_020BB824 + mov r3, #0x3 + add r1, sp, #0xc + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0xc] + bl FUN_020BB1C0 + ldr r0, _020B9104 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9094 + ldr r1, _020B9108 ; =UNK_021CED64 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + ldr r1, _020B910C ; =UNK_021CEDD4 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020B90D0 +_020B9094: + ands r0, r1, #0x2 + beq _020B90C0 + ldr r1, _020B9108 ; =UNK_021CED64 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020B90D0 +_020B90C0: + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 +_020B90D0: + mov r3, #0x2 + add r1, sp, #0x10 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x10] + bl FUN_020BB1C0 +_020B90E8: + ldr r0, [r7, #0x0] + add r0, r0, #0x3 + str r0, [r7, #0x0] + add sp, sp, #0x44 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B90FC: .word UNK_02106638 +_020B9100: .word UNK_0210663C +_020B9104: .word UNK_021CED18 +_020B9108: .word UNK_021CED64 +_020B910C: .word UNK_021CEDD4 + arm_func_end FUN_020B8DF0 + + ; _end + arm_func_start FUN_020B9110 +FUN_020B9110: ; 0x020B9110 + stmdb sp!, {r4,lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r2, [r4, #0x8] + ands r0, r2, #0x100 + bne _020B9164 + ands r0, r2, #0x200 + bne _020B9164 + cmp r1, #0x0 + ldreq r0, [r4, #0xe0] + add r1, sp, #0x0 + streq r0, [sp, #0x8] + streq r0, [sp, #0x4] + streq r0, [sp, #0x0] + ldrne r0, [r4, #0xe4] + mov r2, #0x3 + strne r0, [sp, #0x8] + strne r0, [sp, #0x4] + strne r0, [sp, #0x0] + mov r0, #0x1b + bl FUN_020BB1C0 +_020B9164: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + add sp, sp, #0x10 + ldmia sp!, {r4,pc} + arm_func_end FUN_020B9110 + + ; _end + arm_func_start FUN_020B9178 +FUN_020B9178: ; 0x020B9178 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r0, [r5, #0x34] + cmp r0, #0x0 + ldrneb r4, [r5, #0x96] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020B91CC + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x34] + blx r1 + ldr r0, [r5, #0x34] + cmp r0, #0x0 + ldrneb r4, [r5, #0x96] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r1, r0, #0x40 + b _020B91D0 +_020B91CC: + mov r1, #0x0 +_020B91D0: + ldr r0, [r5, #0x8] + ands r0, r0, #0x100 + bne _020B9228 + cmp r1, #0x0 + bne _020B9228 + ldr r0, [r5, #0x0] + ldrb r12, [r0, #0x1] + ldrb r3, [r0, #0x2] + ldrb lr, [r0, #0x3] + ldrb r2, [r0, #0x5] + ldrb r1, [r0, #0x6] + orr r3, r12, r3, lsl #0x8 + ldrb r6, [r0, #0x4] + orr r12, r3, lr, lsl #0x10 + ldrb r3, [r0, #0x7] + orr r1, r2, r1, lsl #0x8 + orr r6, r12, r6, lsl #0x18 + ldrb r2, [r0, #0x8] + orr r1, r1, r3, lsl #0x10 + add r0, r0, r6 + orr r1, r1, r2, lsl #0x18 + bl FUN_020BB2B0 +_020B9228: + cmp r4, #0x3 + bne _020B9248 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x34] + blx r1 +_020B9248: + ldr r0, [r5, #0x0] + add r0, r0, #0x9 + str r0, [r5, #0x0] + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020B9178 + + ; NNSi_G3dFuncSbc_NODEMIX + arm_func_start FUN_020B9258 +FUN_020B9258: ; 0x020B9258 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x8c + ldr r1, [r0, #0x4] + ldr r4, [r0, #0x0] + ldr r6, [r1, #0x4] + ldrb r2, [r4, #0x2] + ldr r3, [r6, #0x10] + mov r10, #0x0 + str r0, [sp, #0x0] + str r2, [sp, #0x8] + add r3, r6, r3 + add r1, sp, #0x34 + mov r0, r10 + mov r2, #0x54 + mov r9, r10 + str r3, [sp, #0x4] + add r8, r4, #0x3 + bl MIi_CpuClearFast + bl FUN_020BB394 + ldr r0, _020B98AC ; =0x04000440 + mov r7, r10 + str r7, [r0, #0x0] + mov r0, #0x1 + ldr r2, _020B98B0 ; =0x0400044C + ldr r1, _020B98B4 ; =0x04000454 + str r0, [r2, #0x0] + str r0, [sp, #0x10] + str r7, [r1, #0x0] + mov r1, #0x2 + ldr r0, _020B98AC ; =0x04000440 + str r1, [sp, #0x14] + str r1, [r0, #0x0] + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bls _020B96CC +_020B92E4: + ldrb r4, [r8, #0x1] + mov r0, #0x64 + ldr r3, _020B98B8 ; =UNK_021D0380 + mul r0, r4, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x0] + mov r1, r4, lsr #0x5 + add r0, r0, r1, lsl #0x2 + ldr r1, [sp, #0x10] + and r2, r4, #0x1f + mov r1, r1, lsl r2 + ldr r11, [r0, #0xcc] + ldr r2, [sp, #0xc] + ands r11, r1, r11 + add r6, r3, r2 + bne _020B9358 + ldr r3, [r0, #0xcc] + mov r2, #0x54 + orr r1, r3, r1 + str r1, [r0, #0xcc] + ldr r0, [sp, #0x4] + ldr r1, _020B98BC ; =0x04000450 + mla r0, r4, r2, r0 + ldrb r2, [r8, #0x0] + str r2, [r1, #0x0] + ldr r2, [sp, #0x10] + ldr r1, _020B98AC ; =0x04000440 + str r2, [r1, #0x0] + bl G3_MultMtx43 +_020B9358: + cmp r7, #0x0 + beq _020B9500 + ldr r2, [sp, #0x6c] + ldr r1, [r5, #0x0] + str r2, [sp, #0x18] + ldr r2, [sp, #0x70] + mov r0, r1, asr #0x1f + str r2, [sp, #0x1c] + ldr r2, [sp, #0x74] + ldr r12, [sp, #0x64] + str r2, [sp, #0x20] + ldr r2, [sp, #0x78] + ldr lr, [sp, #0x68] + str r2, [sp, #0x24] + ldr r2, [sp, #0x7c] + str r2, [sp, #0x28] + ldr r2, [sp, #0x80] + str r2, [sp, #0x2c] + ldr r2, [sp, #0x84] + str r2, [sp, #0x30] + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r12, r0 + str r0, [sp, #0x64] + ldr r1, [r5, #0x4] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, lr, r0 + str r0, [sp, #0x68] + ldr r1, [r5, #0x8] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x18] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x6c] + ldr r1, [r5, #0xc] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x1c] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x70] + ldr r1, [r5, #0x10] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x20] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x74] + ldr r1, [r5, #0x14] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x24] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x78] + ldr r1, [r5, #0x18] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x28] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x7c] + ldr r1, [r5, #0x1c] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x2c] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x80] + ldr r1, [r5, #0x20] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x30] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x84] +_020B9500: + cmp r11, #0x0 + bne _020B9538 +_020B9508: + mov r0, r6 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B9508 + ldr r1, [sp, #0x14] + ldr r0, _020B98AC ; =0x04000440 + str r1, [r0, #0x0] + ldr r0, [sp, #0x4] + mov r1, #0x54 + mla r0, r4, r1, r0 + add r0, r0, #0x30 + bl G3_MultMtx33 +_020B9538: + ldrb r1, [r8, #0x2] + ldr r2, [sp, #0x34] + ldr r0, [r6, #0x0] + mov r10, r1, lsl #0x4 + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x34] + mov r9, r10, asr #0x1f + ldr r2, [sp, #0x38] + ldr r0, [r6, #0x4] + ldr r3, [sp, #0x3c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x38] + ldr r0, [r6, #0x8] + ldr r2, [sp, #0x40] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x3c] + ldr r0, [r6, #0x10] + ldr r3, [sp, #0x44] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x40] + ldr r0, [r6, #0x14] + ldr r2, [sp, #0x48] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x44] + ldr r0, [r6, #0x18] + ldr r3, [sp, #0x4c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x48] + ldr r0, [r6, #0x20] + ldr r2, [sp, #0x50] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x4c] + ldr r0, [r6, #0x24] + ldr r3, [sp, #0x54] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x50] + ldr r0, [r6, #0x28] + ldr r2, [sp, #0x58] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x54] + ldr r0, [r6, #0x30] + ldr r3, [sp, #0x5c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x58] + ldr r0, [r6, #0x34] + ldr r2, [sp, #0x60] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x5c] + ldr r0, [r6, #0x38] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x60] + cmp r11, #0x0 + ldr r1, _020B98C0 ; =UNK_021D03C0 + ldr r0, [sp, #0xc] + add r5, r1, r0 + add r8, r8, #0x3 + bne _020B96BC +_020B96AC: + mov r0, r5 + bl G3X_GetVectorMtx + cmp r0, #0x0 + bne _020B96AC +_020B96BC: + ldr r0, [sp, #0x8] + add r7, r7, #0x1 + cmp r7, r0 + blo _020B92E4 +_020B96CC: + ldr r1, [r5, #0x0] + ldr r4, [sp, #0x64] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r4, r0 + str r0, [sp, #0x64] + ldr r1, [r5, #0x4] + ldr r4, [sp, #0x68] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r4, r0 + str r0, [sp, #0x68] + ldr r1, [r5, #0x8] + ldr r4, [sp, #0x6c] + umull r0, r2, r10, r1 + mov r3, r0, lsr #0xc + mov r0, r1, asr #0x1f + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + orr r3, r3, r2, lsl #0x14 + adds r0, r4, r3 + str r0, [sp, #0x6c] + ldr r7, [r5, #0xc] + ldr r12, [sp, #0x70] + mov r6, r7, asr #0x1f + umull r11, r8, r10, r7 + mla r8, r10, r6, r8 + mla r8, r9, r7, r8 + mov r6, r11, lsr #0xc + orr r6, r6, r8, lsl #0x14 + adds r6, r12, r6 + str r6, [sp, #0x70] + ldr r7, [r5, #0x10] + ldr r4, [sp, #0x74] + mov r6, r7, asr #0x1f + umull r11, r8, r10, r7 + mla r8, r10, r6, r8 + mla r8, r9, r7, r8 + mov r6, r11, lsr #0xc + orr r6, r6, r8, lsl #0x14 + adds r4, r4, r6 + str r4, [sp, #0x74] + ldr r6, [r5, #0x14] + ldr r3, [sp, #0x78] + mov r4, r6, asr #0x1f + umull r8, r7, r10, r6 + mla r7, r10, r4, r7 + mla r7, r9, r6, r7 + mov r4, r8, lsr #0xc + orr r4, r4, r7, lsl #0x14 + adds r3, r3, r4 + str r3, [sp, #0x78] + ldr r4, [r5, #0x18] + ldr r2, [sp, #0x7c] + mov r3, r4, asr #0x1f + umull r7, r6, r10, r4 + mla r6, r10, r3, r6 + mla r6, r9, r4, r6 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + adds r2, r2, r3 + str r2, [sp, #0x7c] + ldr r3, [r5, #0x1c] + ldr r1, [sp, #0x80] + mov r2, r3, asr #0x1f + umull r6, r4, r10, r3 + mla r4, r10, r2, r4 + mla r4, r9, r3, r4 + mov r2, r6, lsr #0xc + orr r2, r2, r4, lsl #0x14 + adds r1, r1, r2 + str r1, [sp, #0x80] + ldr r2, [r5, #0x20] + ldr lr, [sp, #0x84] + mov r1, r2, asr #0x1f + umull r4, r3, r10, r2 + mla r3, r10, r1, r3 + mla r3, r9, r2, r3 + mov r1, r4, lsr #0xc + orr r1, r1, r3, lsl #0x14 + adds r1, lr, r1 + add r0, sp, #0x64 + str r1, [sp, #0x84] + bl G3_LoadMtx43 + ldr r1, _020B98AC ; =0x04000440 + mov r2, #0x1 + add r0, sp, #0x34 + str r2, [r1, #0x0] + bl G3_LoadMtx43 + ldr r3, _020B98AC ; =0x04000440 + mov r0, #0x0 + str r0, [r3, #0x0] + ldr r1, _020B98BC ; =0x04000450 + mov r2, #0x1 + mov r0, #0x2 + str r2, [r1, #0x0] + str r0, [r3, #0x0] + ldr r0, [sp, #0x0] + ldr r1, [r0, #0x0] + ldr r0, _020B98B0 ; =0x0400044C + ldrb r2, [r1, #0x1] + mov r1, #0x3 + str r2, [r0, #0x0] + ldr r0, [sp, #0x0] + ldr r2, [r0, #0x0] + ldrb r0, [r2, #0x2] + add r0, r0, #0x1 + mla r1, r0, r1, r2 + ldr r0, [sp, #0x0] + str r1, [r0, #0x0] + add sp, sp, #0x8c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B98AC: .word 0x04000440 +_020B98B0: .word 0x0400044C +_020B98B4: .word 0x04000454 +_020B98B8: .word UNK_021D0380 +_020B98BC: .word 0x04000450 +_020B98C0: .word UNK_021D03C0 + arm_func_end FUN_020B9258 + + ; NNSi_G3dFuncSbc_BBY + arm_func_start FUN_020B98C4 +FUN_020B98C4: ; 0x020B98C4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xcc + mov r10, r0 + ldr r2, [r10, #0x8] + mov r9, r1 + ands r0, r2, #0x200 + mov r7, #0x2 + ldr r6, _020B9C28 ; =UNK_02106718 + ldr fp, _020B9C2C ; =UNK_02106724 + ldr r5, _020B9C30 ; =UNK_021066F4 + beq _020B992C + cmp r9, #0x40 + beq _020B9900 + cmp r9, #0x60 + bne _020B9904 +_020B9900: + add r7, r7, #0x1 +_020B9904: + cmp r9, #0x20 + beq _020B9914 + cmp r9, #0x60 + bne _020B9918 +_020B9914: + add r7, r7, #0x1 +_020B9918: + ldr r0, [r10, #0x0] + add sp, sp, #0xcc + add r0, r0, r7 + str r0, [r10, #0x0] + ldmia sp!, {r4-r11,pc} +_020B992C: + cmp r9, #0x40 + beq _020B993C + cmp r9, #0x60 + bne _020B9974 +_020B993C: + add r7, r7, #0x1 + ands r0, r2, #0x100 + bne _020B9974 + cmp r9, #0x40 + ldreq r0, [r10, #0x0] + add r1, sp, #0x0 + ldreqb r0, [r0, #0x2] + mov r2, #0x1 + streq r0, [sp, #0x0] + ldrne r0, [r10, #0x0] + ldrneb r0, [r0, #0x3] + strne r0, [sp, #0x0] + mov r0, #0x14 + bl FUN_020BB1C0 +_020B9974: + ldr r0, [r10, #0x2c] + cmp r0, #0x0 + ldrneb r8, [r10, #0x94] + moveq r8, #0x0 + cmp r8, #0x1 + bne _020B99C0 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x2c] + blx r1 + ldr r0, [r10, #0x2c] + cmp r0, #0x0 + ldrneb r8, [r10, #0x94] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r1, r0, #0x40 + b _020B99C4 +_020B99C0: + mov r1, #0x0 +_020B99C4: + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020B9BA4 + cmp r1, #0x0 + bne _020B9BA4 + bl FUN_020BB394 + ldr r2, _020B9C34 ; =0x00151110 + ldr r1, _020B9C38 ; =0x04000400 + mov r0, #0x0 + str r2, [r1, #0x0] + str r0, [r1, #0x0] + str r0, [r1, #0x0] + add r4, sp, #0x8 +_020B99F8: + mov r0, r4 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B99F8 + ldr r0, _020B9C3C ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9A38 + bl FUN_020B82A4 + add r1, sp, #0x48 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x48 + mov r2, r0 + bl MTX_Concat44 + b _020B9A5C +_020B9A38: + ands r0, r1, #0x2 + beq _020B9A5C + ldr r0, _020B9C40 ; =UNK_021CED64 + add r1, sp, #0x88 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x88 + mov r2, r0 + bl MTX_Concat44 +_020B9A5C: + ldr r1, [sp, #0x38] + add r0, sp, #0x8 + str r1, [r6, #0x0] + ldr r1, [sp, #0x3c] + str r1, [r6, #0x4] + ldr r1, [sp, #0x40] + str r1, [r6, #0x8] + bl VEC_Mag + str r0, [r11, #0x0] + add r0, sp, #0x18 + bl VEC_Mag + str r0, [r11, #0x4] + add r0, sp, #0x28 + bl VEC_Mag + str r0, [r11, #0x8] + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + bne _020B9AB0 + ldr r0, [sp, #0x20] + cmp r0, #0x0 + beq _020B9AD4 +_020B9AB0: + add r0, sp, #0x18 + add r1, r5, #0xc + bl VEC_Normalize + ldr r0, [r5, #0x14] + rsb r0, r0, #0x0 + str r0, [r5, #0x1c] + ldr r0, [r5, #0x10] + str r0, [r5, #0x20] + b _020B9AF4 +_020B9AD4: + add r0, sp, #0x28 + add r1, r5, #0x18 + bl VEC_Normalize + ldr r0, [r5, #0x1c] + rsb r0, r0, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0x20] + str r0, [r5, #0x10] +_020B9AF4: + ldr r0, _020B9C3C ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9B48 + ldr r3, _020B9C44 ; =0x00171012 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C48 ; =UNK_021066EC + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8264 + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9C4C ; =0x00001B19 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C30 ; =UNK_021066F4 + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9BA4 +_020B9B48: + ands r0, r1, #0x2 + beq _020B9B94 + ldr r3, _020B9C44 ; =0x00171012 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C48 ; =UNK_021066EC + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8344 + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9C4C ; =0x00001B19 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C30 ; =UNK_021066F4 + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9BA4 +_020B9B94: + ldr r0, _020B9C50 ; =UNK_021066E8 + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x48 + bl MIi_CpuSend32 +_020B9BA4: + cmp r8, #0x3 + movne r0, #0x0 + bne _020B9BD0 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x2c] + blx r1 + ldr r0, [r10, #0x8] + and r0, r0, #0x40 +_020B9BD0: + cmp r9, #0x20 + beq _020B9BE0 + cmp r9, #0x60 + bne _020B9C14 +_020B9BE0: + cmp r0, #0x0 + add r7, r7, #0x1 + bne _020B9C14 + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020B9C14 + ldr r0, [r10, #0x0] + add r1, sp, #0x4 + ldrb r3, [r0, #0x2] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B9C14: + ldr r0, [r10, #0x0] + add r0, r0, r7 + str r0, [r10, #0x0] + add sp, sp, #0xcc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B9C28: .word UNK_02106718 +_020B9C2C: .word UNK_02106724 +_020B9C30: .word UNK_021066F4 +_020B9C34: .word 0x00151110 +_020B9C38: .word 0x04000400 +_020B9C3C: .word UNK_021CED18 +_020B9C40: .word UNK_021CED64 +_020B9C44: .word 0x00171012 +_020B9C48: .word UNK_021066EC +_020B9C4C: .word 0x00001B19 +_020B9C50: .word UNK_021066E8 + arm_func_end FUN_020B98C4 + + ; NNSi_G3dFuncSbc_BB + arm_func_start FUN_020B9C54 +FUN_020B9C54: ; 0x020B9C54 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0xc8 + mov r9, r0 + ldr r2, [r9, #0x8] + mov r8, r1 + ands r0, r2, #0x200 + mov r6, #0x2 + ldr r5, _020B9F58 ; =UNK_021066D0 + ldr r4, _020B9F5C ; =UNK_021066DC + beq _020B9CB8 + cmp r8, #0x40 + beq _020B9C8C + cmp r8, #0x60 + bne _020B9C90 +_020B9C8C: + add r6, r6, #0x1 +_020B9C90: + cmp r8, #0x20 + beq _020B9CA0 + cmp r8, #0x60 + bne _020B9CA4 +_020B9CA0: + add r6, r6, #0x1 +_020B9CA4: + ldr r0, [r9, #0x0] + add sp, sp, #0xc8 + add r0, r0, r6 + str r0, [r9, #0x0] + ldmia sp!, {r4-r10,pc} +_020B9CB8: + cmp r8, #0x40 + beq _020B9CC8 + cmp r8, #0x60 + bne _020B9D00 +_020B9CC8: + add r6, r6, #0x1 + ands r0, r2, #0x100 + bne _020B9D00 + cmp r8, #0x40 + ldreq r0, [r9, #0x0] + add r1, sp, #0x0 + ldreqb r0, [r0, #0x2] + mov r2, #0x1 + streq r0, [sp, #0x0] + ldrne r0, [r9, #0x0] + ldrneb r0, [r0, #0x3] + strne r0, [sp, #0x0] + mov r0, #0x14 + bl FUN_020BB1C0 +_020B9D00: + ldr r0, [r9, #0x28] + cmp r0, #0x0 + ldrneb r7, [r9, #0x93] + moveq r7, #0x0 + cmp r7, #0x1 + bne _020B9D4C + ldr r1, [r9, #0x8] + mov r0, r9 + bic r1, r1, #0x40 + str r1, [r9, #0x8] + ldr r1, [r9, #0x28] + blx r1 + ldr r0, [r9, #0x28] + cmp r0, #0x0 + ldrneb r7, [r9, #0x93] + ldr r0, [r9, #0x8] + moveq r7, #0x0 + and r1, r0, #0x40 + b _020B9D50 +_020B9D4C: + mov r1, #0x0 +_020B9D50: + ldr r0, [r9, #0x8] + ands r0, r0, #0x100 + bne _020B9ED4 + cmp r1, #0x0 + bne _020B9ED4 + bl FUN_020BB394 + ldr r2, _020B9F60 ; =0x00151110 + ldr r1, _020B9F64 ; =0x04000400 + mov r0, #0x0 + str r2, [r1, #0x0] + str r0, [r1, #0x0] + str r0, [r1, #0x0] + add r10, sp, #0x8 +_020B9D84: + mov r0, r10 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020B9D84 + ldr r0, _020B9F68 ; =UNK_021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9DC4 + bl FUN_020B82A4 + add r1, sp, #0x48 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x48 + mov r2, r0 + bl MTX_Concat44 + b _020B9DE8 +_020B9DC4: + ands r0, r1, #0x2 + beq _020B9DE8 + ldr r0, _020B9F6C ; =UNK_021CED64 + add r1, sp, #0x88 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x88 + mov r2, r0 + bl MTX_Concat44 +_020B9DE8: + ldr r1, [sp, #0x38] + add r0, sp, #0x8 + str r1, [r5, #0x0] + ldr r1, [sp, #0x3c] + str r1, [r5, #0x4] + ldr r1, [sp, #0x40] + str r1, [r5, #0x8] + bl VEC_Mag + str r0, [r4, #0x0] + add r0, sp, #0x18 + bl VEC_Mag + str r0, [r4, #0x4] + add r0, sp, #0x28 + bl VEC_Mag + ldr r1, _020B9F68 ; =UNK_021CED18 + str r0, [r4, #0x8] + ldr r1, [r1, #0xfc] + ands r0, r1, #0x1 + beq _020B9E78 + ldr r3, _020B9F70 ; =0x00171012 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F74 ; =UNK_021066A4 + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8264 + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9F78 ; =0x00001B19 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F7C ; =UNK_021066AC + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9ED4 +_020B9E78: + ands r0, r1, #0x2 + beq _020B9EC4 + ldr r3, _020B9F70 ; =0x00171012 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F74 ; =UNK_021066A4 + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8344 + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9F78 ; =0x00001B19 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F7C ; =UNK_021066AC + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9ED4 +_020B9EC4: + ldr r0, _020B9F80 ; =UNK_021066A0 + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x48 + bl MIi_CpuSend32 +_020B9ED4: + cmp r7, #0x3 + movne r0, #0x0 + bne _020B9F00 + ldr r1, [r9, #0x8] + mov r0, r9 + bic r1, r1, #0x40 + str r1, [r9, #0x8] + ldr r1, [r9, #0x28] + blx r1 + ldr r0, [r9, #0x8] + and r0, r0, #0x40 +_020B9F00: + cmp r8, #0x20 + beq _020B9F10 + cmp r8, #0x60 + bne _020B9F44 +_020B9F10: + cmp r0, #0x0 + add r6, r6, #0x1 + bne _020B9F44 + ldr r0, [r9, #0x8] + ands r0, r0, #0x100 + bne _020B9F44 + ldr r0, [r9, #0x0] + add r1, sp, #0x4 + ldrb r3, [r0, #0x2] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B9F44: + ldr r0, [r9, #0x0] + add r0, r0, r6 + str r0, [r9, #0x0] + add sp, sp, #0xc8 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B9F58: .word UNK_021066D0 +_020B9F5C: .word UNK_021066DC +_020B9F60: .word 0x00151110 +_020B9F64: .word 0x04000400 +_020B9F68: .word UNK_021CED18 +_020B9F6C: .word UNK_021CED64 +_020B9F70: .word 0x00171012 +_020B9F74: .word UNK_021066A4 +_020B9F78: .word 0x00001B19 +_020B9F7C: .word UNK_021066AC +_020B9F80: .word UNK_021066A0 + arm_func_end FUN_020B9C54 + + ; NNSi_G3dFuncSbc_NODEDESC + arm_func_start FUN_020B9F84 +FUN_020B9F84: ; 0x020B9F84 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + ldr r0, [r10, #0x0] + mov r9, r1 + ldrb r4, [r0, #0x1] + mov r7, #0x4 + strb r4, [r10, #0xae] + ldr r0, [r10, #0x8] + orr r0, r0, #0x10 + str r0, [r10, #0x8] + ldr r1, [r10, #0x8] + ands r0, r1, #0x400 + beq _020BA01C + cmp r9, #0x40 + beq _020B9FCC + cmp r9, #0x60 + bne _020B9FD0 +_020B9FCC: + add r7, r7, #0x1 +_020B9FD0: + cmp r9, #0x20 + beq _020B9FE0 + cmp r9, #0x60 + bne _020BA008 +_020B9FE0: + add r7, r7, #0x1 + ands r0, r1, #0x100 + bne _020BA008 + ldr r0, [r10, #0x0] + add r1, sp, #0x8 + ldrb r3, [r0, #0x4] + mov r0, #0x14 + mov r2, #0x1 + str r3, [sp, #0x8] + bl FUN_020BB1C0 +_020BA008: + ldr r0, [r10, #0x0] + add sp, sp, #0x14 + add r0, r0, r7 + str r0, [r10, #0x0] + ldmia sp!, {r4-r11,pc} +_020BA01C: + cmp r9, #0x40 + beq _020BA02C + cmp r9, #0x60 + bne _020BA068 +_020BA02C: + cmp r9, #0x40 + ldreq r0, [r10, #0x0] + add r7, r7, #0x1 + ldreqb r0, [r0, #0x4] + streq r0, [sp, #0xc] + ldrne r0, [r10, #0x0] + ldrneb r0, [r0, #0x5] + strne r0, [sp, #0xc] + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA068 + add r1, sp, #0xc + mov r0, #0x14 + mov r2, #0x1 + bl FUN_020BB1C0 +_020BA068: + add r0, r10, #0x12c + str r0, [r10, #0xb4] + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + moveq r8, #0x0 + cmp r8, #0x1 + bne _020BA0BC + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r0, r0, #0x40 + b _020BA0C0 +_020BA0BC: + mov r0, #0x0 +_020BA0C0: + cmp r0, #0x0 + bne _020BA2CC + ldr r0, [r10, #0x4] + ldr r1, [r0, #0x34] + cmp r1, #0x0 + beq _020BA0F4 + mov r0, #0x58 + mla r6, r4, r0, r1 + ldr r0, [r10, #0x8] + ands r0, r0, #0x80 + moveq r0, #0x1 + movne r0, #0x0 + b _020BA0FC +_020BA0F4: + add r6, r10, #0x12c + mov r0, #0x0 +_020BA0FC: + cmp r0, #0x0 + bne _020BA2C8 + mov r0, #0x0 + str r0, [r6, #0x0] + ldr r0, [r10, #0x4] + ldr r1, [r0, #0x10] + cmp r1, #0x0 + beq _020BA134 + ldr r3, [r0, #0x14] + mov r0, r6 + mov r2, r4 + blx r3 + cmp r0, #0x0 + bne _020BA2C8 +_020BA134: + ldr r2, [r10, #0xd4] + ldrh r0, [r2, #0x6] + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r4, r0 + ldr r1, [r0, #0x4] + ldrh r0, [r2, r1] + add r4, r2, r1 + add r5, r4, #0x4 + ands r0, r0, #0x1 + ldrne r0, [r6, #0x0] + orrne r0, r0, #0x4 + strne r0, [r6, #0x0] + bne _020BA188 + ldr r0, [r5, #0x0] + str r0, [r6, #0x4c] + ldr r0, [r5, #0x4] + str r0, [r6, #0x50] + ldr r0, [r5, #0x8] + add r5, r5, #0xc + str r0, [r6, #0x54] +_020BA188: + ldrh r1, [r4, #0x0] + ands r0, r1, #0x2 + ldrne r0, [r6, #0x0] + orrne r0, r0, #0x2 + strne r0, [r6, #0x0] + bne _020BA2B0 + ands r0, r1, #0x8 + beq _020BA264 + and r1, r1, #0xf0 + mov r11, r1, asr #0x4 + ldrsh r1, [r5, #0x0] + add r0, r6, #0x28 + str r1, [sp, #0x0] + ldrsh r1, [r5, #0x2] + str r1, [sp, #0x4] + bl MI_Zero36B + ldrh r0, [r4, #0x0] + add r1, r6, r11, lsl #0x2 + add r5, r5, #0x4 + ands r0, r0, #0x100 + movne r0, #0x1000 + rsbne r2, r0, #0x0 + moveq r2, #0x1000 + str r2, [r1, #0x28] + ldr r0, _020BA3B4 ; =UNK_020FF9F0 + ldr r1, _020BA3B8 ; =UNK_020FF9F0 + 1 + ldrb r0, [r0, r11, lsl #0x2] + add r2, r6, r0, lsl #0x2 + ldr r0, [sp, #0x0] + str r0, [r2, #0x28] + ldrb r0, [r1, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x4] + str r0, [r1, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x200 + ldrne r0, [sp, #0x4] + rsbne r0, r0, #0x0 + strne r0, [sp, #0x4] + ldr r0, _020BA3BC ; =UNK_020FF9F0 + 2 + ldrb r0, [r0, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x4] + str r0, [r1, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x400 + ldrne r0, [sp, #0x0] + rsbne r0, r0, #0x0 + strne r0, [sp, #0x0] + ldr r0, _020BA3C0 ; =UNK_020FF9F0 + 3 + ldrb r0, [r0, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x0] + str r0, [r1, #0x28] + b _020BA2B0 +_020BA264: + ldrsh r0, [r4, #0x2] + str r0, [r6, #0x28] + ldrsh r0, [r5, #0x0] + str r0, [r6, #0x2c] + ldrsh r0, [r5, #0x2] + str r0, [r6, #0x30] + ldrsh r0, [r5, #0x4] + str r0, [r6, #0x34] + ldrsh r0, [r5, #0x6] + str r0, [r6, #0x38] + ldrsh r0, [r5, #0x8] + str r0, [r6, #0x3c] + ldrsh r0, [r5, #0xa] + str r0, [r6, #0x40] + ldrsh r0, [r5, #0xc] + str r0, [r6, #0x44] + ldrsh r0, [r5, #0xe] + add r5, r5, #0x10 + str r0, [r6, #0x48] +_020BA2B0: + ldrh r3, [r4, #0x0] + ldr r2, [r10, #0x0] + ldr r4, [r10, #0xe8] + mov r0, r6 + mov r1, r5 + blx r4 +_020BA2C8: + str r6, [r10, #0xb4] +_020BA2CC: + cmp r8, #0x2 + bne _020BA308 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r0, r0, #0x40 + b _020BA30C +_020BA308: + mov r0, #0x0 +_020BA30C: + cmp r0, #0x0 + bne _020BA32C + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA32C + ldr r0, [r10, #0xb4] + ldr r1, [r10, #0xec] + blx r1 +_020BA32C: + mov r0, #0x0 + str r0, [r10, #0xb4] + cmp r8, #0x3 + bne _020BA35C + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x8] + and r0, r0, #0x40 +_020BA35C: + cmp r9, #0x20 + beq _020BA36C + cmp r9, #0x60 + bne _020BA3A0 +_020BA36C: + cmp r0, #0x0 + add r7, r7, #0x1 + bne _020BA3A0 + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA3A0 + ldr r0, [r10, #0x0] + add r1, sp, #0x10 + ldrb r3, [r0, #0x4] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x10] + bl FUN_020BB1C0 +_020BA3A0: + ldr r0, [r10, #0x0] + add r0, r0, r7 + str r0, [r10, #0x0] + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BA3B4: .word UNK_020FF9F0 +_020BA3B8: .word UNK_020FF9F0 + 1 +_020BA3BC: .word UNK_020FF9F0 + 2 +_020BA3C0: .word UNK_020FF9F0 + 3 + arm_func_end FUN_020B9F84 + + ; NNSi_G3dFuncSbc_SHP + arm_func_start FUN_020BA3C4 +FUN_020BA3C4: ; 0x020BA3C4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r3, [r4, #0x8] + ands r2, r3, #0x200 + bne _020BA420 + ands r2, r3, #0x1 + beq _020BA420 + ands r2, r3, #0x2 + bne _020BA420 + ldr r5, [r4, #0xdc] + ldr r3, [r4, #0x0] + ldrh r2, [r5, #0x6] + ldrb r3, [r3, #0x1] + ldr ip, _020BA434 ; =UNK_02106650 + ldrh lr, [r5, r2] + add r2, r5, r2 + mla r2, lr, r3, r2 + ldr r2, [r2, #0x4] + ldrh lr, [r5, r2] + add r2, r5, r2 + ldr r12, [r12, lr, lsl #0x2] + blx r12 +_020BA420: + ldr r0, [r4, #0x0] + add r0, r0, #0x2 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BA434: .word UNK_02106650 + arm_func_end FUN_020BA3C4 + + ; _end + arm_func_start FUN_020BA438 +FUN_020BA438: ; 0x020BA438 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x20] + mov r5, r2 + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020BA490 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldr r0, [r6, #0x20] + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + ldr r0, [r6, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020BA494 +_020BA490: + mov r0, #0x0 +_020BA494: + cmp r0, #0x0 + bne _020BA4B8 + ldr r0, [r6, #0x8] + ands r0, r0, #0x100 + bne _020BA4B8 + ldr r0, [r5, #0x8] + ldr r1, [r5, #0xc] + add r0, r5, r0 + bl FUN_020BB2B0 +_020BA4B8: + cmp r4, #0x2 + bne _020BA4E8 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldr r0, [r6, #0x20] + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + moveq r4, #0x0 +_020BA4E8: + cmp r4, #0x3 + ldmneia sp!, {r4-r6,pc} + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BA438 + + ; NNSi_G3dFuncSbc_MAT + arm_func_start FUN_020BA50C +FUN_020BA50C: ; 0x020BA50C + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldr r5, [r4, #0x8] + ands r0, r5, #0x200 + bne _020BA578 + ldr r2, [r4, #0x0] + ands r0, r5, #0x1 + ldrb r3, [r2, #0x1] + bne _020BA544 + ands r0, r5, #0x8 + beq _020BA544 + ldrb r0, [r4, #0xad] + cmp r3, r0 + beq _020BA578 +_020BA544: + ldr r6, [r4, #0xd8] + ldr ip, _020BA588 ; =UNK_02106640 + ldrh r2, [r6, #0xa] + add r5, r6, #0x4 + mov r0, r4 + ldrh lr, [r5, r2] + add r2, r5, r2 + mla r2, lr, r3, r2 + ldr r2, [r2, #0x4] + ldrh lr, [r6, r2] + add r2, r6, r2 + ldr r12, [r12, lr, lsl #0x2] + blx r12 +_020BA578: + ldr r0, [r4, #0x0] + add r0, r0, #0x2 + str r0, [r4, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BA588: .word UNK_02106640 + arm_func_end FUN_020BA50C + + ; NNSi_G3dFuncSbc_MAT_InternalDefault + arm_func_start FUN_020BA58C +FUN_020BA58C: ; 0x020BA58C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x20 + mov r8, r0 + mov r6, r3 + strb r6, [r8, #0xad] + ldr r3, [r8, #0x8] + add r0, r8, #0xf4 + orr r3, r3, #0x8 + str r3, [r8, #0x8] + str r0, [r8, #0xb0] + ldr r0, [r8, #0x1c] + mov r4, r1 + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + mov r7, r2 + moveq r5, #0x0 + cmp r5, #0x1 + bne _020BA608 + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + ldr r0, [r8, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BA60C +_020BA608: + mov r0, #0x0 +_020BA60C: + cmp r0, #0x0 + bne _020BA8C0 + ldr r0, [r8, #0x4] + ldr r0, [r0, #0x38] + cmp r0, #0x0 + beq _020BA638 + ldr r1, [r8, #0x8] + ands r1, r1, #0x80 + moveq r1, #0x38 + mlaeq r4, r6, r1, r0 + beq _020BA8BC +_020BA638: + cmp r4, #0x20 + beq _020BA648 + cmp r4, #0x40 + bne _020BA684 +_020BA648: + mov r1, r6, lsr #0x5 + add r1, r8, r1, lsl #0x2 + and r2, r6, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r1, [r1, #0xbc] + ands r1, r2, r1 + beq _020BA684 + cmp r0, #0x0 + movne r1, #0x38 + mlane r4, r6, r1, r0 + ldreq r1, _020BA9D8 ; =UNK_021CEF80 + moveq r0, #0x38 + mlaeq r4, r6, r0, r1 + b _020BA8BC +_020BA684: + cmp r0, #0x0 + beq _020BA6BC + add r4, r8, #0xbc + mov r3, r6, lsr #0x5 + ldr r2, [r4, r3, lsl #0x2] + and r0, r6, #0x1f + mov r1, #0x1 + orr r0, r2, r1, lsl r0 + str r0, [r4, r3, lsl #0x2] + ldr r1, [r8, #0x4] + mov r0, #0x38 + ldr r1, [r1, #0x38] + mla r4, r6, r0, r1 + b _020BA6F0 +_020BA6BC: + cmp r4, #0x40 + addne r4, r8, #0xf4 + bne _020BA6F0 + add lr, r8, #0xbc + mov r12, r6, lsr #0x5 + ldr r1, _020BA9D8 ; =UNK_021CEF80 + ldr r4, [lr, r12, lsl #0x2] + mov r0, #0x38 + and r2, r6, #0x1f + mov r3, #0x1 + orr r2, r4, r3, lsl r2 + mla r4, r6, r0, r1 + str r2, [lr, r12, lsl #0x2] +_020BA6F0: + mov r0, #0x0 + str r0, [r4, #0x0] + ldr r3, [r8, #0xd8] + ldrh r0, [r3, #0xa] + add r2, r3, #0x4 + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r6, r0 + ldr r0, [r0, #0x4] + ldr r1, _020BA9DC ; =UNK_021CED18 + add r0, r3, r0 + ldrh r0, [r0, #0x1e] + ands r0, r0, #0x20 + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x20 + strne r0, [r4, #0x0] + ldrh r2, [r7, #0x1e] + ldr r0, _020BA9E0 ; =UNK_020FF9D0 + ldr r12, [r1, #0x94] + mov r2, r2, asr #0x6 + and r2, r2, #0x7 + ldr lr, [r0, r2, lsl #0x2] + ldr r2, [r7, #0x4] + mvn r3, lr + and r3, r12, r3 + and r2, r2, lr + orr r2, r3, r2 + str r2, [r4, #0x4] + ldrh r12, [r7, #0x1e] + ldr r3, [r1, #0x98] + ldr r2, [r7, #0x8] + mov r12, r12, asr #0x9 + and r12, r12, #0x7 + ldr r12, [r0, r12, lsl #0x2] + mvn r0, r12 + and r3, r3, r0 + and r0, r2, r12 + orr r0, r3, r0 + str r0, [r4, #0x8] + ldr r3, [r7, #0x10] + ldr r0, [r7, #0xc] + ldr r2, [r1, #0x9c] + mvn r1, r3 + and r1, r2, r1 + and r0, r0, r3 + orr r0, r1, r0 + str r0, [r4, #0xc] + ldr r0, [r7, #0x14] + str r0, [r4, #0x10] + ldrh r0, [r7, #0x1c] + str r0, [r4, #0x14] + ldrh r1, [r7, #0x1e] + ands r0, r1, #0x1 + beq _020BA850 + ands r1, r1, #0x2 + ldrne r1, [r4, #0x0] + add r0, r7, #0x2c + orrne r1, r1, #0x1 + strne r1, [r4, #0x0] + bne _020BA7F4 + ldr r1, [r0, #0x0] + str r1, [r4, #0x18] + ldr r1, [r0, #0x4] + add r0, r0, #0x8 + str r1, [r4, #0x1c] +_020BA7F4: + ldrh r1, [r7, #0x1e] + ands r1, r1, #0x4 + ldrne r1, [r4, #0x0] + orrne r1, r1, #0x2 + strne r1, [r4, #0x0] + bne _020BA820 + ldrsh r1, [r0, #0x0] + strh r1, [r4, #0x20] + ldrsh r1, [r0, #0x2] + add r0, r0, #0x4 + strh r1, [r4, #0x22] +_020BA820: + ldrh r1, [r7, #0x1e] + ands r1, r1, #0x8 + ldreq r1, [r0, #0x0] + streq r1, [r4, #0x24] + ldreq r0, [r0, #0x4] + streq r0, [r4, #0x28] + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x4 + strne r0, [r4, #0x0] + ldr r0, [r4, #0x0] + orr r0, r0, #0x8 + str r0, [r4, #0x0] +_020BA850: + ldr r0, [r8, #0x4] + ldr r1, [r0, #0x8] + cmp r1, #0x0 + beq _020BA890 + mov r2, r6, lsr #0x5 + add r2, r0, r2, lsl #0x2 + and r3, r6, #0x1f + mov r12, #0x1 + mov r3, r12, lsl r3 + ldr r2, [r2, #0x3c] + ands r2, r3, r2 + beq _020BA890 + ldr r3, [r0, #0xc] + mov r0, r4 + mov r2, r6 + blx r3 +_020BA890: + ldr r0, [r4, #0x0] + ands r0, r0, #0x18 + beq _020BA8BC + ldrh r0, [r7, #0x20] + strh r0, [r4, #0x2c] + ldrh r0, [r7, #0x22] + strh r0, [r4, #0x2e] + ldr r0, [r7, #0x24] + str r0, [r4, #0x30] + ldr r0, [r7, #0x28] + str r0, [r4, #0x34] +_020BA8BC: + str r4, [r8, #0xb0] +_020BA8C0: + cmp r5, #0x2 + bne _020BA8FC + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + ldr r0, [r8, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BA900 +_020BA8FC: + mov r0, #0x0 +_020BA900: + cmp r0, #0x0 + bne _020BA9AC + ldr r4, [r8, #0xb0] + ldr r1, [r4, #0xc] + ands r0, r1, #0x1f0000 + beq _020BA9A0 + ldr r0, [r4, #0x0] + ands r0, r0, #0x20 + bicne r0, r1, #0x1f0000 + strne r0, [r4, #0xc] + ldr r0, [r8, #0x8] + bic r0, r0, #0x2 + str r0, [r8, #0x8] + ldr r0, [r8, #0x8] + ands r0, r0, #0x100 + bne _020BA9AC + ldr r0, _020BA9E4 ; =0x00293130 + ldr r3, _020BA9E8 ; =0x00002B2A + str r0, [sp, #0x0] + ldr r2, [r4, #0x4] + add r1, sp, #0x4 + str r2, [sp, #0x4] + ldr r6, [r4, #0x8] + mov r2, #0x6 + str r6, [sp, #0x8] + ldr r6, [r4, #0xc] + str r6, [sp, #0xc] + str r3, [sp, #0x10] + ldr r3, [r4, #0x10] + str r3, [sp, #0x14] + ldr r3, [r4, #0x14] + str r3, [sp, #0x18] + bl FUN_020BB1C0 + ldr r0, [r4, #0x0] + ands r0, r0, #0x18 + beq _020BA9AC + ldr r1, [r8, #0xf0] + mov r0, r4 + blx r1 + b _020BA9AC +_020BA9A0: + ldr r0, [r8, #0x8] + orr r0, r0, #0x2 + str r0, [r8, #0x8] +_020BA9AC: + cmp r5, #0x3 + addne sp, sp, #0x20 + ldmneia sp!, {r4-r8,pc} + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + add sp, sp, #0x20 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BA9D8: .word UNK_021CEF80 +_020BA9DC: .word UNK_021CED18 +_020BA9E0: .word UNK_020FF9D0 +_020BA9E4: .word 0x00293130 +_020BA9E8: .word 0x00002B2A + arm_func_end FUN_020BA58C + + ; _end + arm_func_start FUN_020BA9EC +FUN_020BA9EC: ; 0x020BA9EC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x8] + ands r0, r1, #0x200 + bne _020BAAAC + ands r0, r1, #0x1 + beq _020BAAAC + ldr r0, [r5, #0x18] + cmp r0, #0x0 + ldrneb r4, [r5, #0x8f] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020BAA58 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x18] + blx r1 + ldr r0, [r5, #0x18] + cmp r0, #0x0 + ldrneb r4, [r5, #0x8f] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020BAA5C +_020BAA58: + mov r0, #0x0 +_020BAA5C: + cmp r0, #0x0 + bne _020BAA8C + ldr r0, [r5, #0x0] + ldrb r0, [r0, #0x1] + str r0, [sp, #0x0] + ldr r0, [r5, #0x8] + ands r0, r0, #0x100 + bne _020BAA8C + add r1, sp, #0x0 + mov r0, #0x14 + mov r2, #0x1 + bl FUN_020BB1C0 +_020BAA8C: + cmp r4, #0x3 + bne _020BAAAC + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x18] + blx r1 +_020BAAAC: + ldr r0, [r5, #0x0] + add r0, r0, #0x2 + str r0, [r5, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020BA9EC + + ; _end + arm_func_start FUN_020BAAC0 +FUN_020BAAC0: ; 0x020BAAC0 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x8] + ands r0, r0, #0x200 + bne _020BAC38 + ldr r1, [r6, #0x0] + add r0, r6, #0x184 + ldrb r1, [r1, #0x1] + strb r1, [r6, #0xac] + ldr r1, [r6, #0x8] + ldrb r4, [r6, #0xac] + orr r1, r1, #0x4 + str r1, [r6, #0x8] + str r0, [r6, #0xb8] + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + moveq r5, #0x0 + cmp r5, #0x1 + bne _020BAB44 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + ldr r0, [r6, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BAB48 +_020BAB44: + mov r0, #0x0 +_020BAB48: + cmp r0, #0x0 + bne _020BABAC + ldr r12, [r6, #0x4] + ldr r1, [r12, #0x18] + cmp r1, #0x0 + beq _020BAB98 + mov r0, r4, lsr #0x5 + add r0, r12, r0, lsl #0x2 + and r2, r4, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r0, [r0, #0x4c] + ands r0, r2, r0 + beq _020BAB98 + ldr r0, [r6, #0xb8] + ldr r3, [r12, #0x1c] + mov r2, r4 + blx r3 + cmp r0, #0x0 + bne _020BABAC +_020BAB98: + ldr r1, [r6, #0x0] + ldr r0, [r6, #0xb8] + ldrb r1, [r1, #0x2] + and r1, r1, #0x1 + str r1, [r0, #0x0] +_020BABAC: + cmp r5, #0x2 + bne _020BABE8 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + ldr r0, [r6, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BABEC +_020BABE8: + mov r0, #0x0 +_020BABEC: + cmp r0, #0x0 + bne _020BAC18 + ldr r0, [r6, #0xb8] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldrne r0, [r6, #0x8] + orrne r0, r0, #0x1 + strne r0, [r6, #0x8] + ldreq r0, [r6, #0x8] + biceq r0, r0, #0x1 + streq r0, [r6, #0x8] +_020BAC18: + cmp r5, #0x3 + bne _020BAC38 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 +_020BAC38: + ldr r0, [r6, #0x0] + add r0, r0, #0x3 + str r0, [r6, #0x0] + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BAAC0 + + ; _end + arm_func_start FUN_020BAC48 +FUN_020BAC48: ; 0x020BAC48 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x10] + cmp r1, #0x0 + beq _020BAC60 + blx r1 +_020BAC60: + ldr r0, [r4, #0x8] + orr r0, r0, #0x20 + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + arm_func_end FUN_020BAC48 + + ; _end + arm_func_start FUN_020BAC70 +FUN_020BAC70: ; 0x020BAC70 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + beq _020BAC88 + blx r1 +_020BAC88: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + ldmia sp!, {r4,pc} + arm_func_end FUN_020BAC70 + + ; NNS_G3dDraw + arm_func_start FUN_020BAC98 +FUN_020BAC98: ; 0x020BAC98 + stmdb sp!, {r4,lr} + sub sp, sp, #0x188 + mov r4, r0 + ldr r0, [r4, #0x0] + and r0, r0, #0x10 + cmp r0, #0x10 + bne _020BAD2C + add r1, r4, #0x3c + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + add r1, r4, #0x44 + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + add r1, r4, #0x4c + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _020BACF8 + add r0, r4, #0x3c + bl FUN_020BAD74 +_020BACF8: + ldr r1, [r4, #0x10] + cmp r1, #0x0 + beq _020BAD0C + add r0, r4, #0x44 + bl FUN_020BAD74 +_020BAD0C: + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _020BAD20 + add r0, r4, #0x4c + bl FUN_020BAD74 +_020BAD20: + ldr r0, [r4, #0x0] + bic r0, r0, #0x10 + str r0, [r4, #0x0] +_020BAD2C: + ldr r2, _020BAD70 ; =UNK_021CEF7C + ldr r0, [r2, #0x0] + cmp r0, #0x0 + beq _020BAD4C + mov r1, r4 + bl FUN_020BADE4 + add sp, sp, #0x188 + ldmia sp!, {r4,pc} +_020BAD4C: + add r0, sp, #0x0 + mov r1, r4 + str r0, [r2, #0x0] + bl FUN_020BADE4 + ldr r0, _020BAD70 ; =UNK_021CEF7C + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x188 + ldmia sp!, {r4,pc} + .balign 4 +_020BAD70: .word UNK_021CEF7C + arm_func_end FUN_020BAC98 + + ; _end + arm_func_start FUN_020BAD74 +FUN_020BAD74: ; 0x020BAD74 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + mov r3, #0x1 + mov r4, #0x0 +_020BAD90: + ldrb r2, [r1, #0x19] + mov r5, r4 + cmp r2, #0x0 + ble _020BADD0 +_020BADA0: + add r2, r1, r5, lsl #0x1 + ldrh r2, [r2, #0x1a] + ands r2, r2, #0x100 + movne lr, r5, asr #0x5 + andne r2, r5, #0x1f + ldrne r12, [r0, lr, lsl #0x2] + add r5, r5, #0x1 + orrne r2, r12, r3, lsl r2 + strne r2, [r0, lr, lsl #0x2] + ldrb r2, [r1, #0x19] + cmp r5, r2 + blt _020BADA0 +_020BADD0: + ldr r1, [r1, #0x10] + cmp r1, #0x0 + bne _020BAD90 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020BAD74 + + ; G3dDrawInternal_ + arm_func_start FUN_020BADE4 +FUN_020BADE4: ; 0x020BADE4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r1, r5 + mov r0, #0x0 + mov r2, #0x188 + bl MIi_CpuClearFast + mov r0, #0x1 + str r0, [r5, #0xc4] + str r0, [r5, #0x8] + ldr r0, [r4, #0x30] + ldr r2, _020BAF60 ; =UNK_02106614 + cmp r0, #0x0 + strne r0, [r5, #0x0] + ldreq r1, [r4, #0x4] + ldreq r0, [r1, #0x4] + addeq r0, r1, r0 + streq r0, [r5, #0x0] + str r4, [r5, #0x4] + ldr r0, [r4, #0x4] + ldr r1, _020BAF64 ; =UNK_02106608 + add r0, r0, #0x40 + str r0, [r5, #0xd4] + ldr r12, [r4, #0x4] + ldr r0, _020BAF68 ; =UNK_02106620 + ldr r3, [r12, #0x8] + add r3, r12, r3 + str r3, [r5, #0xd8] + ldr r12, [r4, #0x4] + ldr r3, [r12, #0xc] + add r3, r12, r3 + str r3, [r5, #0xdc] + ldr r3, [r4, #0x4] + ldrb r3, [r3, #0x15] + ldr r2, [r2, r3, lsl #0x2] + str r2, [r5, #0xe8] + ldr r2, [r4, #0x4] + ldrb r2, [r2, #0x15] + ldr r1, [r1, r2, lsl #0x2] + str r1, [r5, #0xec] + ldr r1, [r4, #0x4] + ldrb r1, [r1, #0x16] + ldr r0, [r0, r1, lsl #0x2] + str r0, [r5, #0xf0] + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x1c] + str r0, [r5, #0xe0] + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x20] + str r0, [r5, #0xe4] + ldr r1, [r4, #0x20] + cmp r1, #0x0 + beq _020BAEE0 + ldrb r0, [r4, #0x24] + cmp r0, #0x20 + bhs _020BAEE0 + add r0, r5, r0, lsl #0x2 + str r1, [r0, #0xc] + ldrb r0, [r4, #0x24] + ldrb r1, [r4, #0x25] + add r0, r5, r0 + strb r1, [r0, #0x8c] +_020BAEE0: + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x80 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x2 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x100 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x4 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x200 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x8 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x400 + strne r0, [r5, #0x8] + ldr r1, [r4, #0x28] + cmp r1, #0x0 + beq _020BAF44 + mov r0, r5 + blx r1 +_020BAF44: + mov r0, r5 + bl FUN_020BAF6C + ldr r0, [r4, #0x0] + bic r0, r0, #0x1 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BAF60: .word UNK_02106614 +_020BAF64: .word UNK_02106608 +_020BAF68: .word UNK_02106620 + arm_func_end FUN_020BADE4 + + ; G3dDrawInternal_Loop_ + arm_func_start FUN_020BAF6C +FUN_020BAF6C: ; 0x020BAF6C + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r6, _020BAFB4 ; =UNK_02106730 + add r4, r5, #0x8 +_020BAF7C: + ldr r1, [r4, #0x0] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r4, #0x0] + ldr r1, [r5, #0x0] + ldrb r3, [r1, #0x0] + and r1, r3, #0x1f + ldr r2, [r6, r1, lsl #0x2] + and r1, r3, #0xe0 + blx r2 + ldr r0, [r5, #0x8] + ands r0, r0, #0x20 + beq _020BAF7C + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BAFB4: .word UNK_02106730 + arm_func_end FUN_020BAF6C + diff --git a/arm9/asm/NNS_G3D_si3d.s b/arm9/asm/NNS_G3D_si3d.s new file mode 100644 index 00000000..d6986712 --- /dev/null +++ b/arm9/asm/NNS_G3D_si3d.s @@ -0,0 +1,363 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; NNSi_G3dSendTexSRTSi3d + arm_func_start FUN_020BEF10 +FUN_020BEF10: ; 0x020BEF10 + stmdb sp!, {lr} + sub sp, sp, #0x3c + ldr r1, [r0, #0x0] + mov r3, #0x0 + ands r1, r1, #0x8 + ldrne r1, _020BF0CC ; =0x00101710 + mov r2, #0x3 + strne r1, [sp, #0x0] + ldreq r1, _020BF0D0 ; =0x00101910 + str r3, [sp, #0x34] + streq r1, [sp, #0x0] + mov r1, #0x2 + str r1, [sp, #0x38] + str r3, [sp, #0x28] + str r3, [sp, #0x24] + str r3, [sp, #0x20] + str r3, [sp, #0x1c] + str r3, [sp, #0x14] + str r3, [sp, #0x10] + str r3, [sp, #0xc] + str r2, [sp, #0x4] + ldr r2, [r0, #0x0] + ands r1, r2, #0x4 + beq _020BEFA0 + str r3, [sp, #0x2c] + str r3, [sp, #0x30] + ldr r1, [r0, #0x0] + ands r1, r1, #0x1 + movne r1, #0x1000 + strne r1, [sp, #0x8] + strne r1, [sp, #0x18] + ldreq r1, [r0, #0x18] + streq r1, [sp, #0x8] + ldreq r1, [r0, #0x1c] + streq r1, [sp, #0x18] + b _020BF040 +_020BEFA0: + ands r1, r2, #0x1 + beq _020BEFE8 + ldr r2, [r0, #0x24] + ldrh r1, [r0, #0x2c] + mov r2, r2, lsl #0x4 + rsb r2, r2, #0x0 + mul r1, r2, r1 + str r1, [sp, #0x2c] + ldr r2, [r0, #0x28] + ldrh r1, [r0, #0x2e] + mov r2, r2, lsl #0x4 + rsb r2, r2, #0x0 + mul r3, r2, r1 + mov r1, #0x1000 + str r3, [sp, #0x30] + str r1, [sp, #0x8] + str r1, [sp, #0x18] + b _020BF040 +_020BEFE8: + ldr r2, [r0, #0x18] + ldr r1, [r0, #0x24] + ldrh r12, [r0, #0x2c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0x8 + orr r2, r2, r1, lsl #0x18 + rsb r1, r2, #0x0 + mul r1, r12, r1 + str r1, [sp, #0x2c] + ldr r2, [r0, #0x1c] + ldr r1, [r0, #0x28] + ldrh r12, [r0, #0x2e] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0x8 + orr r2, r2, r1, lsl #0x18 + rsb r1, r2, #0x0 + mul r1, r12, r1 + str r1, [sp, #0x30] + ldr r1, [r0, #0x18] + str r1, [sp, #0x8] + ldr r1, [r0, #0x1c] + str r1, [sp, #0x18] +_020BF040: + ldr r12, [r0, #0x30] + cmp r12, #0x1000 + beq _020BF078 + ldr r2, [sp, #0x8] + ldr r1, [sp, #0x2c] + smull r3, r2, r12, r2 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x8] + ldr r2, [r0, #0x30] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x2c] +_020BF078: + ldr r12, [r0, #0x34] + cmp r12, #0x1000 + beq _020BF0B0 + ldr r2, [sp, #0x18] + ldr r1, [sp, #0x30] + smull r3, r2, r12, r2 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x18] + ldr r0, [r0, #0x34] + smull r2, r1, r0, r1 + mov r0, r2, lsr #0xc + orr r0, r0, r1, lsl #0x14 + str r0, [sp, #0x30] +_020BF0B0: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0xe + bl FUN_020BB1C0 + add sp, sp, #0x3c + ldmia sp!, {pc} + .balign 4 +_020BF0CC: .word 0x00101710 +_020BF0D0: .word 0x00101910 + arm_func_end FUN_020BEF10 + + ; NNSi_G3dGetJointScaleSi3d + arm_func_start FUN_020BF0D4 +FUN_020BF0D4: ; 0x020BF0D4 + stmdb sp!, {r4-r8,lr} + mov r5, r0 + ands r0, r3, #0x4 + ldrb r4, [r2, #0x1] + ldrb r0, [r2, #0x2] + beq _020BF174 + ldr r2, [r5, #0x0] + ldr r1, _020BF2E0 ; =UNK_021CEF7C + orr r2, r2, #0x1 + str r2, [r5, #0x0] + ldr r3, [r1, #0x0] + mov r1, r0, lsr #0x5 + add r1, r3, r1, lsl #0x2 + and r2, r0, #0x1f + mov r6, #0x1 + mov r2, r6, lsl r2 + ldr r1, [r1, #0xc4] + ands r1, r2, r1 + beq _020BF148 + add r3, r3, #0xc4 + mov r2, r4, lsr #0x5 + ldr r1, [r3, r2, lsl #0x2] + and r0, r4, #0x1f + orr r0, r1, r6, lsl r0 + str r0, [r3, r2, lsl #0x2] + ldr r0, [r5, #0x0] + orr r0, r0, #0x18 + str r0, [r5, #0x0] + ldmia sp!, {r4-r8,pc} +_020BF148: + ldr r1, _020BF2E4 ; =UNK_021CFD80 + mov r2, #0x18 + mla r6, r0, r2, r1 + mla r1, r4, r2, r1 + mov r0, r6 + bl MIi_CpuCopy32 + mov r0, r6 + add r1, r5, #0x10 + mov r2, #0x18 + bl MIi_CpuCopy32 + ldmia sp!, {r4-r8,pc} +_020BF174: + ldr r3, [r1, #0x0] + ldr r2, _020BF2E0 ; =UNK_021CEF7C + str r3, [r5, #0x4] + ldr r3, [r1, #0x4] + mov r7, r0, lsr #0x5 + str r3, [r5, #0x8] + ldr r3, [r1, #0x8] + and r8, r0, #0x1f + str r3, [r5, #0xc] + ldr r6, [r2, #0x0] + mov r3, #0x1 + add r2, r6, r7, lsl #0x2 + mov r7, r3, lsl r8 + ldr r2, [r2, #0xc4] + ands r2, r7, r2 + beq _020BF200 + ldr r3, _020BF2E4 ; =UNK_021CFD80 + mov r2, #0x18 + mov r0, r1 + mla r1, r4, r2, r3 + bl MIi_CpuCopy32 + ldr r0, _020BF2E0 ; =UNK_021CEF7C + mov r2, r4, lsr #0x5 + ldr r1, [r0, #0x0] + and r0, r4, #0x1f + add r3, r1, #0xc4 + mov r1, #0x1 + mvn r0, r1, lsl r0 + ldr r1, [r3, r2, lsl #0x2] + and r0, r1, r0 + str r0, [r3, r2, lsl #0x2] + ldr r0, [r5, #0x0] + orr r0, r0, #0x18 + str r0, [r5, #0x0] + ldmia sp!, {r4-r8,pc} +_020BF200: + mov r2, #0x18 + mul r12, r0, r2 + and r7, r4, #0x1f + ldr r0, _020BF2E4 ; =UNK_021CFD80 + add r6, r6, #0xc4 + mov lr, r4, lsr #0x5 + mvn r7, r3, lsl r7 + ldr r8, [r6, lr, lsl #0x2] + mul r3, r4, r2 + and r4, r8, r7 + str r4, [r6, lr, lsl #0x2] + ldr r7, [r1, #0x0] + ldr r4, [r0, r12] + ldr r6, _020BF2E8 ; =UNK_021CFD84 + smull r8, r4, r7, r4 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [r0, r3] + ldr r8, [r1, #0x4] + ldr r4, [r6, r12] + ldr r7, _020BF2EC ; =UNK_021CFD88 + smull lr, r4, r8, r4 + mov r8, lr, lsr #0xc + orr r8, r8, r4, lsl #0x14 + str r8, [r6, r3] + ldr r8, [r1, #0x8] + ldr r4, [r7, r12] + ldr r6, _020BF2F0 ; =UNK_021CFD8C + smull lr, r4, r8, r4 + mov r8, lr, lsr #0xc + orr r8, r8, r4, lsl #0x14 + str r8, [r7, r3] + ldr r7, [r1, #0xc] + ldr r4, [r6, r12] + ldr lr, _020BF2F4 ; =UNK_021CFD90 + smull r8, r4, r7, r4 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [r6, r3] + ldr r7, [r1, #0x10] + ldr r4, [lr, r12] + ldr r6, _020BF2F8 ; =UNK_021CFD94 + smull r8, r4, r7, r4 + add r0, r0, r12 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [lr, r3] + ldr lr, [r1, #0x14] + ldr r4, [r6, r12] + add r1, r5, #0x10 + smull r5, r4, lr, r4 + mov r5, r5, lsr #0xc + orr r5, r5, r4, lsl #0x14 + str r5, [r6, r3] + bl MIi_CpuCopy32 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BF2E0: .word UNK_021CEF7C +_020BF2E4: .word UNK_021CFD80 +_020BF2E8: .word UNK_021CFD84 +_020BF2EC: .word UNK_021CFD88 +_020BF2F0: .word UNK_021CFD8C +_020BF2F4: .word UNK_021CFD90 +_020BF2F8: .word UNK_021CFD94 + arm_func_end FUN_020BF0D4 + + ; _end + arm_func_start FUN_020BF2FC +FUN_020BF2FC: ; 0x020BF2FC + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x10 + mov r6, r0 + ldr r0, [r6, #0x0] + mov r5, #0x0 + ands r4, r0, #0x18 + bne _020BF328 + add r1, r6, #0x1c + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 +_020BF328: + ldr r0, [r6, #0x0] + ands r0, r0, #0x4 + bne _020BF398 + cmp r4, #0x0 + movne r5, #0x1 + bne _020BF398 + ldr r2, [r6, #0x4c] + ldr r0, [r6, #0x10] + add r1, sp, #0x0 + smull r3, r0, r2, r0 + mov r2, r3, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x0] + ldr r3, [r6, #0x50] + ldr r2, [r6, #0x14] + mov r0, #0x1c + smull r12, r2, r3, r2 + mov r3, r12, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x4] + ldr r12, [r6, #0x54] + ldr r3, [r6, #0x18] + mov r2, #0x3 + smull lr, r3, r12, r3 + mov r12, lr, lsr #0xc + orr r12, r12, r3, lsl #0x14 + str r12, [sp, #0x8] + bl FUN_020BB1C0 +_020BF398: + ldr r0, [r6, #0x0] + ands r0, r0, #0x2 + bne _020BF3D4 + cmp r5, #0x0 + beq _020BF3C0 + add r1, r6, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020BF3EC +_020BF3C0: + add r1, r6, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020BF3EC +_020BF3D4: + cmp r5, #0x0 + beq _020BF3EC + add r1, r6, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 +_020BF3EC: + cmp r4, #0x0 + bne _020BF404 + add r1, r6, #0x10 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 +_020BF404: + ldr r0, [r6, #0x0] + ands r0, r0, #0x1 + addne sp, sp, #0x10 + ldmneia sp!, {r4-r6,pc} + add r1, r6, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 + add sp, sp, #0x10 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020BF2FC + diff --git a/arm9/asm/NNS_G3D_util.s b/arm9/asm/NNS_G3D_util.s new file mode 100644 index 00000000..f6f204d4 --- /dev/null +++ b/arm9/asm/NNS_G3D_util.s @@ -0,0 +1,354 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; NNS_G3dWorldPosToScrPos + arm_func_start FUN_020BB408 +FUN_020BB408: ; 0x020BB408 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x1c + mov r5, r1 + mov r4, r2 + ldr r6, _020BB594 ; =UNK_021CED20 + ldr r1, _020BB598 ; =UNK_021CED64 + add r2, sp, #0x10 + bl MTX_MultVec43 + ldr r1, [sp, #0x14] + ldr r0, [r6, #0x1c] + ldr r2, [sp, #0x10] + smull r8, r7, r1, r0 + ldr r0, [r6, #0xc] + ldr r3, [sp, #0x18] + smlal r8, r7, r2, r0 + ldr r1, [r6, #0x2c] + ldr r0, [r6, #0x3c] + smlal r8, r7, r3, r1 + mov r1, r8, lsr #0xc + orr r1, r1, r7, lsl #0x14 + add r0, r1, r0 + bl FX_InvAsync + ldr r2, [sp, #0x14] + ldr r1, [r6, #0x10] + ldr r0, [r6, #0x14] + smull lr, r8, r2, r1 + smull r12, r9, r2, r0 + ldr r1, [sp, #0x10] + ldr r3, [r6, #0x0] + ldr r0, [sp, #0x18] + smlal lr, r8, r1, r3 + ldr r7, [r6, #0x20] + ldr r2, [r6, #0x30] + smlal lr, r8, r0, r7 + mov r3, lr, lsr #0xc + orr r3, r3, r8, lsl #0x14 + add r7, r3, r2 + ldr r3, [r6, #0x4] + ldr r8, [r6, #0x24] + smlal r12, r9, r1, r3 + smlal r12, r9, r0, r8 + mov r0, r12, lsr #0xc + ldr r2, [r6, #0x34] + orr r0, r0, r9, lsl #0x14 + add r6, r0, r2 + bl FX_GetDivResultFx64c + mov r2, r7, asr #0x1f + umull r9, lr, r0, r7 + mla lr, r0, r2, lr + mov r3, #0x80000000 + mla lr, r1, r7, lr + adds r9, r9, r3 + adc r2, lr, #0x0 + add r2, r2, #0x1000 + add r2, r2, r2, lsr #0x1f + mov r7, r2, asr #0x1 + umull lr, r2, r0, r6 + mov r12, r6, asr #0x1f + mla r2, r0, r12, r2 + mla r2, r1, r6, r2 + adds r3, lr, r3 + adc r0, r2, #0x0 + add r0, r0, #0x1000 + add r0, r0, r0, lsr #0x1f + mov r8, #0x0 + mov r6, r0, asr #0x1 + cmp r7, #0x0 + blt _020BB530 + cmp r6, #0x0 + blt _020BB530 + cmp r7, #0x1000 + bgt _020BB530 + cmp r6, #0x1000 + ble _020BB534 +_020BB530: + mvn r8, #0x0 +_020BB534: + add r0, sp, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x8 + add r3, sp, #0xc + bl FUN_020B8200 + ldr r2, [sp, #0x0] + ldr r0, [sp, #0x8] + ldr r12, [sp, #0xc] + sub r0, r0, r2 + mul r0, r7, r0 + add r1, r0, #0x800 + ldr r3, [sp, #0x4] + add r1, r2, r1, asr #0xc + sub r0, r12, r3 + mul r0, r6, r0 + str r1, [r5, #0x0] + ldr r1, [sp, #0x4] + add r0, r0, #0x800 + rsb r1, r1, #0xbf + sub r1, r1, r0, asr #0xc + mov r0, r8 + str r1, [r4, #0x0] + add sp, sp, #0x1c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BB594: .word UNK_021CED20 +_020BB598: .word UNK_021CED64 + arm_func_end FUN_020BB408 + + ; NNS_G3dResDefaultSetup + arm_func_start FUN_020BB59C +FUN_020BB59C: ; 0x020BB59C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + ldr r0, _020BB7C8 ; =0x30415642 + cmp r1, r0 + bhi _020BB5F4 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7CC ; =0x30414D42 + cmp r1, r0 + bhi _020BB5E4 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7D0 ; =0x30414342 + cmp r1, r0 + beq _020BB7B0 + b _020BB7BC +_020BB5E4: + ldr r0, _020BB7D4 ; =0x30415442 + cmp r1, r0 + beq _020BB7B0 + b _020BB7BC +_020BB5F4: + ldr r0, _020BB7D8 ; =0x30505442 + cmp r1, r0 + bhi _020BB618 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7DC ; =0x30444D42 + cmp r1, r0 + beq _020BB624 + b _020BB7BC +_020BB618: + ldr r0, _020BB7E0 ; =0x30585442 + cmp r1, r0 + bne _020BB7BC +_020BB624: + mov r11, #0x1 + mov r0, r5 + mov r9, r11 + mov r8, r11 + bl FUN_020BC0FC + movs r4, r0 + beq _020BB77C + bl FUN_020B7E1C + mov r7, r0 + mov r0, r4 + bl FUN_020B7E10 + mov r6, r0 + mov r0, r4 + bl FUN_020B7CE4 + mov r10, r0 + cmp r7, #0x0 + beq _020BB68C + ldr r0, _020BB7E4 ; =UNK_021064B8 + mov r1, #0x0 + ldr r3, [r0, #0x0] + mov r0, r7 + mov r2, r1 + blx r3 + movs r7, r0 + moveq r11, #0x0 + b _020BB690 +_020BB68C: + mov r7, #0x0 +_020BB690: + cmp r6, #0x0 + beq _020BB6BC + ldr r1, _020BB7E4 ; =UNK_021064B8 + mov r0, r6 + ldr r3, [r1, #0x0] + mov r1, #0x1 + mov r2, #0x0 + blx r3 + movs r6, r0 + moveq r9, #0x0 + b _020BB6C0 +_020BB6BC: + mov r6, #0x0 +_020BB6C0: + cmp r10, #0x0 + beq _020BB6F0 + ldr r1, _020BB7E8 ; =UNK_021064C0 + ldrh r2, [r4, #0x20] + ldr r3, [r1, #0x0] + mov r0, r10 + and r1, r2, #0x8000 + mov r2, #0x0 + blx r3 + movs r10, r0 + moveq r8, #0x0 + b _020BB6F4 +_020BB6F0: + mov r10, #0x0 +_020BB6F4: + cmp r11, #0x0 + beq _020BB70C + cmp r9, #0x0 + beq _020BB70C + cmp r8, #0x0 + bne _020BB748 +_020BB70C: + ldr r1, _020BB7EC ; =UNK_021064C4 + mov r0, r10 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020BB7F0 ; =UNK_021064BC + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020BB7F0 ; =UNK_021064BC + mov r0, r7 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020BB748: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl FUN_020B7DFC + mov r0, r4 + mov r1, r10 + bl FUN_020B7CDC + mov r0, r4 + mov r1, #0x1 + bl FUN_020B7D28 + mov r0, r4 + mov r1, #0x1 + bl FUN_020B7C78 +_020BB77C: + ldr r1, [r5, #0x0] + ldr r0, _020BB7DC ; =0x30444D42 + cmp r1, r0 + bne _020BB7A4 + mov r0, r5 + bl FUN_020BC13C + cmp r4, #0x0 + beq _020BB7A4 + mov r1, r4 + bl FUN_020B7790 +_020BB7A4: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020BB7B0: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020BB7BC: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BB7C8: .word 0x30415642 +_020BB7CC: .word 0x30414D42 +_020BB7D0: .word 0x30414342 +_020BB7D4: .word 0x30415442 +_020BB7D8: .word 0x30505442 +_020BB7DC: .word 0x30444D42 +_020BB7E0: .word 0x30585442 +_020BB7E4: .word UNK_021064B8 +_020BB7E8: .word UNK_021064C0 +_020BB7EC: .word UNK_021064C4 +_020BB7F0: .word UNK_021064BC + arm_func_end FUN_020BB59C + + ; NNS_G3dInit + arm_func_start FUN_020BB7F4 +FUN_020BB7F4: ; 0x020BB7F4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl G3X_Init + bl FUN_020B84D8 + ldr r1, _020BB820 ; =0x04000600 + ldr r0, [r1, #0x0] + bic r0, r0, #0xc0000000 + orr r0, r0, #0x80000000 + str r0, [r1, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BB820: .word 0x04000600 + arm_func_end FUN_020BB7F4 + + ; NNS_G3dGetCurrentMtx + arm_func_start FUN_020BB824 +FUN_020BB824: ; 0x020BB824 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x40 + mov r6, r0 + mov r5, r1 + bl FUN_020BB394 + ldr r0, _020BB8B4 ; =0x04000440 + mov r2, #0x0 + ldr r1, _020BB8B8 ; =0x04000444 + str r2, [r0, #0x0] + ldr r0, _020BB8BC ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + cmp r6, #0x0 + beq _020BB87C + add r4, sp, #0x0 +_020BB860: + mov r0, r4 + bl G3X_GetClipMtx + cmp r0, #0x0 + bne _020BB860 + add r0, sp, #0x0 + mov r1, r6 + bl MTX_Copy44To43_ +_020BB87C: + cmp r5, #0x0 + beq _020BB894 +_020BB884: + mov r0, r5 + bl G3X_GetVectorMtx + cmp r0, #0x0 + bne _020BB884 +_020BB894: + ldr r1, _020BB8C0 ; =0x04000448 + mov r2, #0x1 + ldr r0, _020BB8B4 ; =0x04000440 + str r2, [r1, #0x0] + mov r1, #0x2 + str r1, [r0, #0x0] + add sp, sp, #0x40 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BB8B4: .word 0x04000440 +_020BB8B8: .word 0x04000444 +_020BB8BC: .word 0x04000454 +_020BB8C0: .word 0x04000448 + arm_func_end FUN_020BB824 + diff --git a/arm9/asm/NNS_G3D_xsi.s b/arm9/asm/NNS_G3D_xsi.s new file mode 100644 index 00000000..bc0315c1 --- /dev/null +++ b/arm9/asm/NNS_G3D_xsi.s @@ -0,0 +1,487 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + ; calcTexMtx_ + .global UNK_021067F0 +UNK_021067F0: ; 0x021067F0 + .word FUN_020BFFD4 + .word FUN_020BFEEC + .word FUN_020BFE68 + .word FUN_020BFE0C + .word FUN_020BFD38 + .word FUN_020BFC8C + .word FUN_020BFC4C + .word FUN_020BFC28 + + .section .text + + ; NNSi_G3dSendTexSRTXsi + arm_func_start FUN_020BFA9C +FUN_020BFA9C: ; 0x020BFA9C + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r3, #0x3 + ands r0, r0, #0x8 + ldrne r0, _020BFC1C ; =0x00101610 + mov r2, #0x2 + strne r0, [sp, #0x0] + ldreq r0, _020BFC20 ; =0x00101810 + mov r1, #0x1000 + streq r0, [sp, #0x0] + mov r0, #0x0 + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x44] + str r0, [sp, #0x40] + str r0, [sp, #0x34] + str r0, [sp, #0x30] + str r0, [sp, #0x2c] + str r0, [sp, #0x28] + str r0, [sp, #0x24] + str r0, [sp, #0x20] + str r0, [sp, #0x14] + str r0, [sp, #0x10] + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + strne r1, [r4, #0x1c] + ldrne r0, [r4, #0x1c] + strne r0, [r4, #0x18] + ldr r0, [r4, #0x0] + ands r0, r0, #0x2 + movne r0, #0x1000 + strneh r0, [r4, #0x22] + movne r0, #0x0 + strneh r0, [r4, #0x20] + ldr r0, [r4, #0x0] + ands r0, r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x28] + ldrne r0, [r4, #0x28] + strne r0, [r4, #0x24] + ldr r1, [r4, #0x0] + ldr r0, _020BFC24 ; =UNK_021067F0 + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BFBB0 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BFBB0: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BFC00 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BFC00: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl FUN_020BB1C0 + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BFC1C: .word 0x00101610 +_020BFC20: .word 0x00101810 +_020BFC24: .word UNK_021067F0 + arm_func_end FUN_020BFA9C + + ; _end + arm_func_start FUN_020BFC28 +FUN_020BFC28: ; 0x020BFC28 + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + arm_func_end FUN_020BFC28 + + ; _end + arm_func_start FUN_020BFC4C +FUN_020BFC4C: ; 0x020BFC4C + ldr r2, [r1, #0x18] + mov r3, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r3, [r0, #0x4] + str r3, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x1c] + rsb r2, r2, #0x0 + sub r1, r1, #0x1000 + mul r1, r2, r1 + mov r1, r1, lsl #0x4 + str r1, [r0, #0x34] + str r3, [r0, #0x10] + bx lr + arm_func_end FUN_020BFC4C + + ; _end + arm_func_start FUN_020BFC8C +FUN_020BFC8C: ; 0x020BFC8C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r1, [r5, #0x2c] + ldrsh r0, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x30] + ldrh r1, [r5, #0x2e] + ldrsh r0, [r5, #0x22] + rsb r1, r1, #0x0 + sub r0, r0, #0x1000 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BFC8C + + ; _end + arm_func_start FUN_020BFD38 +FUN_020BFD38: ; 0x020BFD38 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r3, [r9, #0x22] + ldr r0, [r9, #0x18] + ldrsh r7, [r9, #0x20] + ldr r5, [r9, #0x1c] + smull r2, r1, r0, r3 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [r10, #0x0] + smull r2, r1, r5, r3 + mov r4, r2, lsr #0xc + orr r4, r4, r1, lsl #0x14 + smull r2, r1, r0, r7 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + str r4, [r10, #0x14] + bl FX_GetDivResult + smull r2, r1, r5, r7 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + mov r1, r11 + bl FX_DivAsync + sub r0, r4, #0x1000 + ldrh r1, [r9, #0x2c] + mul r2, r1, r6 + mov r1, r2, lsl #0x4 + str r1, [r10, #0x30] + ldrh r1, [r9, #0x2e] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020BFD38 + + ; _end + arm_func_start FUN_020BFE0C +FUN_020BFE0C: ; 0x020BFE0C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov lr, #0x0 + str lr, [r0, #0x4] + ldr r2, [r1, #0x24] + ldrh r3, [r1, #0x2c] + rsb r2, r2, #0x0 + ldr r12, [r1, #0x28] + mul r2, r3, r2 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r1, [r1, #0x2e] + rsb r2, r12, #0x0 + rsb r1, r1, #0x0 + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str lr, [r0, #0x10] + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end FUN_020BFE0C + + ; _end + arm_func_start FUN_020BFE68 +FUN_020BFE68: ; 0x020BFE68 + stmdb sp!, {r4,lr} + ldr r3, [r1, #0x18] + mov r2, #0x0 + str r3, [r0, #0x0] + ldr r3, [r1, #0x1c] + str r3, [r0, #0x14] + str r2, [r0, #0x4] + ldr r12, [r1, #0x24] + ldr r3, [r1, #0x18] + ldr r4, [r1, #0x28] + smull lr, r3, r12, r3 + mov r12, lr, lsr #0xc + orr r12, r12, r3, lsl #0x14 + ldrh lr, [r1, #0x2c] + rsb r3, r12, #0x0 + ldr r12, [r1, #0x1c] + rsb r4, r4, #0x0 + mul r3, lr, r3 + smull lr, r12, r4, r12 + mov r3, r3, lsl #0x4 + str r3, [r0, #0x30] + mov r4, lr, lsr #0xc + ldrh r3, [r1, #0x2e] + ldr r1, [r1, #0x1c] + orr r4, r4, r12, lsl #0x14 + add r1, r1, r4 + rsb r3, r3, #0x0 + sub r1, r1, #0x1000 + mul r1, r3, r1 + mov r1, r1, lsl #0x4 + str r1, [r0, #0x34] + str r2, [r0, #0x10] + ldmia sp!, {r4,pc} + arm_func_end FUN_020BFE68 + + ; _end + arm_func_start FUN_020BFEEC +FUN_020BFEEC: ; 0x020BFEEC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh lr, [r5, #0x20] + ldr r4, [r5, #0x28] + ldrsh r0, [r5, #0x22] + ldr r12, [r5, #0x24] + smull r3, r2, r4, lr + smlal r3, r2, r12, r0 + smull r1, r0, r4, r0 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + sub r4, lr, r3 + smull r3, r2, r12, lr + subs r1, r3, r1 + sbc r0, r2, r0 + ldrh r2, [r5, #0x2c] + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + mul r0, r2, r4 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x30] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2e] + add r0, r0, r1 + rsb r1, r2, #0x0 + sub r0, r0, #0x1000 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + arm_func_end FUN_020BFEEC + + ; _end + arm_func_start FUN_020BFFD4 +FUN_020BFFD4: ; 0x020BFFD4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r6, r1 + ldrh r2, [r6, #0x2c] + ldrh r1, [r6, #0x2e] + mov r7, r0 + mov r10, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r10 + bl FX_DivAsync + ldrsh r3, [r6, #0x22] + ldr r0, [r6, #0x18] + ldrsh r9, [r6, #0x20] + smull r2, r1, r0, r3 + mov r2, r2, lsr #0xc + ldr r8, [r6, #0x1c] + orr r2, r2, r1, lsl #0x14 + str r2, [r7, #0x0] + smull r2, r1, r8, r3 + mov r4, r2, lsr #0xc + orr r4, r4, r1, lsl #0x14 + smull r2, r1, r0, r9 + mov r5, r2, lsr #0xc + orr r5, r5, r1, lsl #0x14 + str r4, [r7, #0x14] + bl FX_GetDivResult + smull r2, r1, r8, r9 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r7, #0x4] + mov r0, r10 + mov r1, r11 + bl FX_DivAsync + ldr lr, [r6, #0x1c] + ldrsh r2, [r6, #0x20] + ldr r8, [r6, #0x24] + ldr r0, [r6, #0x28] + smull r10, r9, r8, r2 + ldrh r1, [r6, #0x2c] + smull r3, r2, r0, r2 + ldrsh r12, [r6, #0x22] + str r1, [sp, #0x0] + mov r11, lr, asr #0x1f + smlal r3, r2, r8, r12 + smull r8, r12, r0, r12 + subs r8, r10, r8 + sbc r0, r9, r12 + mov r9, r8, lsr #0xc + mov r12, r3, lsr #0xc + orr r9, r9, r0, lsl #0x14 + mov r3, r2, asr #0xc + orr r12, r12, r2, lsl #0x14 + umull r10, r2, r9, lr + mla r2, r9, r11, r2 + mov r8, r0, asr #0xc + mla r2, r8, lr, r2 + ldr r1, [r6, #0x18] + mov r8, r10, lsr #0xc + orr r8, r8, r2, lsl #0x14 + add r2, r4, r8 + mov r0, r1, asr #0x1f + umull r8, r4, r12, r1 + mla r4, r12, r0, r4 + mla r4, r3, r1, r4 + mov r0, r8, lsr #0xc + orr r0, r0, r4, lsl #0x14 + sub r1, r5, r0 + ldr r0, [sp, #0x0] + sub r2, r2, #0x1000 + mul r1, r0, r1 + mov r0, r1, lsl #0x4 + str r0, [r7, #0x30] + ldrh r0, [r6, #0x2e] + rsb r0, r0, #0x0 + mul r1, r0, r2 + mov r0, r1, lsl #0x4 + str r0, [r7, #0x34] + bl FX_GetDivResult + rsb r1, r5, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r7, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + arm_func_end FUN_020BFFD4 diff --git a/arm9/asm/NNS_GFD_gfd_frameplttvr.s b/arm9/asm/NNS_GFD_gfd_frameplttvr.s new file mode 100644 index 00000000..de838ccd --- /dev/null +++ b/arm9/asm/NNS_GFD_gfd_frameplttvr.s @@ -0,0 +1,173 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + ; s_managerState_ + .global UNK_021CCD4C +UNK_021CCD4C: ; 0x021CCD4C + .space 0xc + + .section .text + + ; NNS_GfdResetFrmPlttVramState + arm_func_start FUN_020AEC60 +FUN_020AEC60: ; 0x020AEC60 + ldr r0, _020AEC78 ; =UNK_021CCD4C + mov r2, #0x0 + ldr r1, [r0, #0x8] + str r2, [r0, #0x0] + str r1, [r0, #0x4] + bx lr + .balign 4 +_020AEC78: .word UNK_021CCD4C + arm_func_end FUN_020AEC60 + + ; NNS_GfdSetFrmPlttVramState + arm_func_start FUN_020AEC7C +FUN_020AEC7C: ; 0x020AEC7C + ldr r2, [r0, #0x0] + ldr r1, _020AEC94 ; =UNK_021CCD4C + str r2, [r1, #0x0] + ldr r0, [r0, #0x4] + str r0, [r1, #0x4] + bx lr + .balign 4 +_020AEC94: .word UNK_021CCD4C + arm_func_end FUN_020AEC7C + + ; NNS_GfdGetFrmPlttVramState + arm_func_start FUN_020AEC98 +FUN_020AEC98: ; 0x020AEC98 + ldr r1, _020AECB0 ; =UNK_021CCD4C + ldr r2, [r1, #0x0] + str r2, [r0, #0x0] + ldr r1, [r1, #0x4] + str r1, [r0, #0x4] + bx lr + .balign 4 +_020AECB0: .word UNK_021CCD4C + arm_func_end FUN_020AEC98 + + ; _end + arm_func_start FUN_020AECB4 +FUN_020AECB4: ; 0x020AECB4 + mov r0, #0x0 + bx lr + arm_func_end FUN_020AECB4 + + ; NNS_GfdAllocFrmPlttVram + arm_func_start FUN_020AECBC +FUN_020AECBC: ; 0x020AECBC + stmdb sp!, {r4,lr} + cmp r0, #0x0 + moveq r0, #0x8 + addne r0, r0, #0x7 + ldr ip, _020AEDE8 ; =0x0007FFF8 + bicne r0, r0, #0x7 + cmp r0, r12 + mov r3, #0x0 + movcs r0, #0x0 + ldmcsia sp!, {r4,pc} + cmp r2, #0x1 + bne _020AED64 + ldr r2, _020AEDEC ; =UNK_021CCD4C + cmp r1, #0x0 + ldr r12, [r2, #0x0] + andne r2, r12, #0x7 + rsbne r2, r2, #0x8 + andne r4, r2, #0x7 + andeq r2, r12, #0xf + rsbeq r2, r2, #0x10 + andeq r4, r2, #0xf + ldr r2, _020AEDEC ; =UNK_021CCD4C + add lr, r0, r4 + ldr r2, [r2, #0x4] + sub r2, r2, r12 + cmp r2, lr + blo _020AED5C + cmp r1, #0x0 + add r1, r12, lr + beq _020AED40 + cmp r1, #0x10000 + movhi r12, #0x0 + bhi _020AEDCC +_020AED40: + ldr r1, _020AEDEC ; =UNK_021CCD4C + add r3, r12, r4 + ldr r2, [r1, #0x0] + mov r12, #0x1 + add r2, r2, lr + str r2, [r1, #0x0] + b _020AEDCC +_020AED5C: + mov r12, #0x0 + b _020AEDCC +_020AED64: + ldr r2, _020AEDEC ; =UNK_021CCD4C + ldr r12, [r2, #0x4] + cmp r12, r0 + blo _020AEDC8 + sub r2, r12, r0 + cmp r1, #0x0 + andne r4, r2, #0x7 + andeq r4, r2, #0xf + ldr r2, _020AEDEC ; =UNK_021CCD4C + add lr, r0, r4 + ldr r2, [r2, #0x0] + sub r2, r12, r2 + cmp r2, lr + blo _020AEDC8 + cmp r1, #0x0 + beq _020AEDB0 + cmp r12, #0x10000 + movhi r12, #0x0 + bhi _020AEDCC +_020AEDB0: + ldr r1, _020AEDEC ; =UNK_021CCD4C + mov r12, #0x1 + ldr r2, [r1, #0x4] + sub r3, r2, lr + str r3, [r1, #0x4] + b _020AEDCC +_020AEDC8: + mov r12, #0x0 +_020AEDCC: + cmp r12, #0x0 + ldrne r1, _020AEDF0 ; =0x0000FFFF + movne r2, r0, lsr #0x3 + andne r0, r1, r3, lsr #0x3 + orrne r0, r0, r2, lsl #0x10 + moveq r0, #0x0 + ldmia sp!, {r4,pc} + .balign 4 +_020AEDE8: .word 0x0007FFF8 +_020AEDEC: .word UNK_021CCD4C +_020AEDF0: .word 0x0000FFFF + arm_func_end FUN_020AECBC + + ; NNS_GfdInitFrmPlttVramManager + arm_func_start FUN_020AEDF4 +FUN_020AEDF4: ; 0x020AEDF4 + stmdb sp!, {r4,lr} + ldr r2, _020AEE2C ; =UNK_021CCD4C + mov r4, r1 + str r0, [r2, #0x8] + bl FUN_020AEC60 + cmp r4, #0x0 + ldmeqia sp!, {r4,pc} + ldr r3, _020AEE30 ; =FUN_020AECBC + ldr r1, _020AEE34 ; =UNK_021064C0 + ldr r2, _020AEE38 ; =FUN_020AECB4 + ldr r0, _020AEE3C ; =UNK_021064C4 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020AEE2C: .word UNK_021CCD4C +_020AEE30: .word FUN_020AECBC +_020AEE34: .word UNK_021064C0 +_020AEE38: .word FUN_020AECB4 +_020AEE3C: .word UNK_021064C4 + arm_func_end FUN_020AEDF4 + diff --git a/arm9/asm/NNS_GFD_gfd_frametexvra.s b/arm9/asm/NNS_GFD_gfd_frametexvra.s new file mode 100644 index 00000000..7d9f5874 --- /dev/null +++ b/arm9/asm/NNS_GFD_gfd_frametexvra.s @@ -0,0 +1,344 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + ; tex4x4SearchArray_ + .global UNK_021064C8 +UNK_021064C8: ; 0x021064C8 + .word UNK_021064E4 + .word UNK_0210652C + + ; texNrmSearchArray_ + .global UNK_021064D0 +UNK_021064D0: ; 0x021064D0 + .word UNK_02106544 + .word UNK_0210652C + .word UNK_021064E4 + .word UNK_02106514 + .word UNK_021064FC + + ; vramRegions_ + .global UNK_021064E4 +UNK_021064E4: ; 0x021064E4 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 + + ; vramRegions_ + 0x18 + .global UNK_021064FC +UNK_021064FC: ; 0x021064FC + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x00 + + ; vramRegions_ + 0x30 + .global UNK_02106514 +UNK_02106514: ; 0x02106514 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x00 + + ; vramRegions_ + 0x48 + .global UNK_0210652C +UNK_0210652C: ; 0x0210652C + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00 + + ; vramRegions_ + 0x60 + .global UNK_02106544 +UNK_02106544: ; 0x02106544 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0x00 + + .section .bss + + ; frmExVramMan_ + .global UNK_021CCD48 +UNK_021CCD48: ; 0x021CCD48 + .space 0x4 + + .section .text + + ; NNS_GfdSetFrmTexVramState + arm_func_start FUN_020AE8CC +FUN_020AE8CC: ; 0x020AE8CC + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, #0x0 + ldr r3, _020AE914 ; =UNK_021064E4 + mov r12, lr + mov r2, #0x1 +_020AE8E4: + ldr r1, [r0, r12, lsl #0x2] + add lr, lr, #0x1 + str r1, [r3, #0x0] + ldr r1, [r0, r2, lsl #0x2] + cmp lr, #0x5 + str r1, [r3, #0x4] + add r12, r12, #0x2 + add r3, r3, #0x18 + add r2, r2, #0x2 + blt _020AE8E4 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AE914: .word UNK_021064E4 + arm_func_end FUN_020AE8CC + + ; NNS_GfdGetFrmTexVramState + arm_func_start FUN_020AE918 +FUN_020AE918: ; 0x020AE918 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, #0x0 + ldr ip, _020AE960 ; =UNK_021064E4 + mov r3, lr + mov r2, #0x1 +_020AE930: + ldr r1, [r12, #0x0] + add lr, lr, #0x1 + str r1, [r0, r3, lsl #0x2] + ldr r1, [r12, #0x4] + cmp lr, #0x5 + str r1, [r0, r2, lsl #0x2] + add r12, r12, #0x18 + add r3, r3, #0x2 + add r2, r2, #0x2 + blt _020AE930 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AE960: .word UNK_021064E4 + arm_func_end FUN_020AE918 + + ; _end + arm_func_start FUN_020AE964 +FUN_020AE964: ; 0x020AE964 + mov r0, #0x0 + bx lr + arm_func_end FUN_020AE964 + + ; NNS_GfdAllocFrmTexVram + arm_func_start FUN_020AE96C +FUN_020AE96C: ; 0x020AE96C + stmdb sp!, {r4-r10,lr} + cmp r0, #0x0 + moveq r7, #0x10 + addne r0, r0, #0xf + bicne r7, r0, #0xf + ldr r0, _020AEADC ; =0x0007FFF0 + cmp r7, r0 + movcs r0, #0x0 + ldmcsia sp!, {r4-r10,pc} + cmp r1, #0x0 + beq _020AEA5C + mov lr, r7, lsr #0x1 + mov r6, #0x0 + ldr r2, _020AEAE0 ; =UNK_02106514 + ldr r3, _020AEAE4 ; =UNK_021064FC + ldr ip, _020AEAE8 ; =UNK_021064C8 + mov r0, r6 +_020AE9B0: + ldr r5, [r12, r6, lsl #0x2] + ldr r4, [r5, #0x8] + cmp r4, #0x0 + beq _020AEA48 + ldr r9, [r5, #0x4] + ldr r4, [r5, #0x0] + sub r4, r9, r4 + cmp r4, r7 + blo _020AEA48 + ldrh r4, [r5, #0x10] + cmp r4, #0x0 + beq _020AE9EC + cmp r4, #0x3 + beq _020AE9F4 + b _020AE9FC +_020AE9EC: + mov r4, r3 + b _020AEA00 +_020AE9F4: + mov r4, r2 + b _020AEA00 +_020AE9FC: + mov r4, r0 +_020AEA00: + ldr r9, [r4, #0x8] + cmp r9, #0x0 + beq _020AEA48 + ldr r10, [r4, #0x4] + ldr r9, [r4, #0x0] + sub r9, r10, r9 + cmp r9, lr + blo _020AEA48 + ldr r3, [r5, #0x0] + mov r0, #0x1 + add r2, r3, r7 + str r2, [r5, #0x0] + ldr r2, [r4, #0x0] + add r2, r2, lr + str r2, [r4, #0x0] + ldr r2, [r5, #0x14] + add r8, r3, r2 + b _020AEAB8 +_020AEA48: + add r6, r6, #0x1 + cmp r6, #0x2 + blt _020AE9B0 + mov r0, #0x0 + b _020AEAB8 +_020AEA5C: + ldr r3, _020AEAEC ; =UNK_021064D0 + mov r5, #0x0 +_020AEA64: + ldr r4, [r3, r5, lsl #0x2] + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _020AEAA8 + ldr r2, [r4, #0x4] + ldr r0, [r4, #0x0] + sub r0, r2, r0 + cmp r0, r7 + blo _020AEAA8 + ldr r2, [r4, #0x4] + mov r0, #0x1 + sub r2, r2, r7 + str r2, [r4, #0x4] + ldr r3, [r4, #0x4] + ldr r2, [r4, #0x14] + add r8, r3, r2 + b _020AEAB8 +_020AEAA8: + add r5, r5, #0x1 + cmp r5, #0x5 + blt _020AEA64 + mov r0, #0x0 +_020AEAB8: + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,pc} + ldr r0, _020AEAF0 ; =0x0000FFFF + mov r2, r7, lsr #0x4 + and r0, r0, r8, lsr #0x3 + orr r0, r0, r2, lsl #0x10 + orr r0, r0, r1, lsl #0x1f + ldmia sp!, {r4-r10,pc} + .balign 4 +_020AEADC: .word 0x0007FFF0 +_020AEAE0: .word UNK_02106514 +_020AEAE4: .word UNK_021064FC +_020AEAE8: .word UNK_021064C8 +_020AEAEC: .word UNK_021064D0 +_020AEAF0: .word 0x0000FFFF + arm_func_end FUN_020AE96C + + ; NNS_GfdResetFrmTexVramState + arm_func_start FUN_020AEAF4 +FUN_020AEAF4: ; 0x020AEAF4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r0, _020AEB68 ; =UNK_021CCD48 + mov r6, #0x0 + ldrh r7, [r0, #0x0] + ldr r5, _020AEB6C ; =UNK_021064E4 + mov lr, r6 + cmp r7, #0x1 + addhi r7, r7, #0x1 + mov r1, r6 + mov r3, r6 + mov r4, #0x1 + mov r0, #0x20000 + mov r2, #0x10000 +_020AEB2C: + cmp r6, r7 + strlt r4, [r5, #0x8] + strge lr, [r5, #0x8] + ldr r12, [r5, #0xc] + add r6, r6, #0x1 + cmp r12, #0x0 + strne r3, [r5, #0x0] + strne r2, [r5, #0x4] + streq r1, [r5, #0x0] + streq r0, [r5, #0x4] + cmp r6, #0x5 + add r5, r5, #0x18 + blt _020AEB2C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020AEB68: .word UNK_021CCD48 +_020AEB6C: .word UNK_021064E4 + arm_func_end FUN_020AEAF4 + + ; NNS_GfdInitFrmTexVramManager + arm_func_start FUN_020AEB70 +FUN_020AEB70: ; 0x020AEB70 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + cmp r5, #0x2 + bhi _020AEBA8 + mov r12, #0x1 + mov r0, #0x4 + mov r1, #0x3 + mov r2, #0x2 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020AEC10 + b _020AEBC4 +_020AEBA8: + mov r12, #0x1 + mov r0, #0x4 + mov r1, #0x3 + mov r2, #0x0 + mov r3, #0x2 + str r12, [sp, #0x0] + bl FUN_020AEC10 +_020AEBC4: + ldr r0, _020AEBFC ; =UNK_021CCD48 + strh r5, [r0, #0x0] + bl FUN_020AEAF4 + cmp r4, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r3, _020AEC00 ; =FUN_020AE96C + ldr r1, _020AEC04 ; =UNK_021064B8 + ldr r2, _020AEC08 ; =FUN_020AE964 + ldr r0, _020AEC0C ; =UNK_021064BC + str r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AEBFC: .word UNK_021CCD48 +_020AEC00: .word FUN_020AE96C +_020AEC04: .word UNK_021064B8 +_020AEC08: .word FUN_020AE964 +_020AEC0C: .word UNK_021064BC + arm_func_end FUN_020AEB70 + + ; NNSi_GfdSetTexNrmSearchArray + arm_func_start FUN_020AEC10 +FUN_020AEC10: ; 0x020AEC10 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr lr, [sp, #0x18] + ldr r6, _020AEC58 ; =UNK_021064E4 + mov r12, #0x18 + mla r7, r0, r12, r6 + ldr r0, _020AEC5C ; =UNK_021064D0 + mla r5, r1, r12, r6 + mla r4, r2, r12, r6 + mla r2, r3, r12, r6 + mla r1, lr, r12, r6 + str r7, [r0, #0x0] + str r5, [r0, #0x4] + str r4, [r0, #0x8] + str r2, [r0, #0xc] + str r1, [r0, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020AEC58: .word UNK_021064E4 +_020AEC5C: .word UNK_021064D0 + arm_func_end FUN_020AEC10 + diff --git a/arm9/asm/NNS_GFD_gfd_linkedlistp.s b/arm9/asm/NNS_GFD_gfd_linkedlistp.s new file mode 100644 index 00000000..4ef85974 --- /dev/null +++ b/arm9/asm/NNS_GFD_gfd_linkedlistp.s @@ -0,0 +1,165 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + ; mgr_ + .global UNK_021CCD88 +UNK_021CCD88: ; 0x021CCD88 + .space 0x4 + + ; mgr_ + 0x4 + .global UNK_021CCD8C +UNK_021CCD8C: ; 0x021CCD8C + .space 0x10 + + .section .text + + ; NNS_GfdResetLnkPlttVramState + arm_func_start FUN_020AFA30 +FUN_020AFA30: ; 0x020AFA30 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020AFA78 ; =UNK_021CCD88 + ldr r1, [r0, #0x10] + ldr r0, [r0, #0xc] + mov r1, r1, lsr #0x4 + bl FUN_020AF64C + ldr r1, _020AFA78 ; =UNK_021CCD88 + str r0, [r1, #0x4] + mov r0, r1 + bl FUN_020AF698 + ldr r0, _020AFA78 ; =UNK_021CCD88 + ldr r1, _020AFA7C ; =UNK_021CCD8C + ldr r3, [r0, #0x8] + mov r2, #0x0 + bl FUN_020AF5E0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFA78: .word UNK_021CCD88 +_020AFA7C: .word UNK_021CCD8C + arm_func_end FUN_020AFA30 + + ; NNS_GfdFreeLnkPlttVram + arm_func_start FUN_020AFA80 +FUN_020AFA80: ; 0x020AFA80 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r1, #0x10000 + rsb r2, r1, #0x0 + ldr r1, _020AFAC8 ; =0x0000FFFF + and r2, r0, r2 + and r12, r0, r1 + mov r3, r2, lsr #0x10 + ldr r0, _020AFACC ; =UNK_021CCD88 + ldr r1, _020AFAD0 ; =UNK_021CCD8C + mov r2, r12, lsl #0x3 + mov r3, r3, lsl #0x3 + bl FUN_020AF334 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFAC8: .word 0x0000FFFF +_020AFACC: .word UNK_021CCD88 +_020AFAD0: .word UNK_021CCD8C + arm_func_end FUN_020AFA80 + + ; NNS_GfdAllocLnkPlttVram + arm_func_start FUN_020AFAD4 +FUN_020AFAD4: ; 0x020AFAD4 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + cmp r0, #0x0 + moveq r4, #0x8 + addne r0, r0, #0x7 + bicne r4, r0, #0x7 + ldr r0, _020AFB98 ; =0x0007FFF8 + cmp r4, r0 + addcs sp, sp, #0x8 + movcs r0, #0x0 + ldmcsia sp!, {r4,pc} + cmp r1, #0x0 + beq _020AFB50 + mov r12, #0x8 + ldr r0, _020AFB9C ; =UNK_021CCD88 + ldr r1, _020AFBA0 ; =UNK_021CCD8C + add r2, sp, #0x4 + mov r3, r4 + str r12, [sp, #0x0] + bl FUN_020AF488 + ldr r2, [sp, #0x4] + add r1, r2, r4 + cmp r1, #0x10000 + bls _020AFB6C + ldr r0, _020AFB9C ; =UNK_021CCD88 + ldr r1, _020AFBA0 ; =UNK_021CCD8C + mov r3, r4 + bl FUN_020AF334 + add sp, sp, #0x8 + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020AFB50: + ldr r0, _020AFB9C ; =UNK_021CCD88 + mov r12, #0x10 + ldr r1, _020AFBA0 ; =UNK_021CCD8C + add r2, sp, #0x4 + mov r3, r4 + str r12, [sp, #0x0] + bl FUN_020AF488 +_020AFB6C: + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r1, [sp, #0x4] + ldr r0, _020AFBA4 ; =0x0000FFFF + mov r2, r4, lsr #0x3 + and r0, r0, r1, lsr #0x3 + orr r0, r0, r2, lsl #0x10 + add sp, sp, #0x8 + ldmia sp!, {r4,pc} + .balign 4 +_020AFB98: .word 0x0007FFF8 +_020AFB9C: .word UNK_021CCD88 +_020AFBA0: .word UNK_021CCD8C +_020AFBA4: .word 0x0000FFFF + arm_func_end FUN_020AFAD4 + + ; NNS_GfdInitLnkPlttVramManager + arm_func_start FUN_020AFBA8 +FUN_020AFBA8: ; 0x020AFBA8 + stmdb sp!, {r4,lr} + ldr ip, _020AFBE8 ; =UNK_021CCD88 + mov r4, r3 + str r0, [r12, #0x8] + str r1, [r12, #0xc] + str r2, [r12, #0x10] + bl FUN_020AFA30 + cmp r4, #0x0 + ldmeqia sp!, {r4,pc} + ldr r3, _020AFBEC ; =FUN_020AFAD4 + ldr r1, _020AFBF0 ; =UNK_021064C0 + ldr r2, _020AFBF4 ; =FUN_020AFA80 + ldr r0, _020AFBF8 ; =UNK_021064C4 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020AFBE8: .word UNK_021CCD88 +_020AFBEC: .word FUN_020AFAD4 +_020AFBF0: .word UNK_021064C0 +_020AFBF4: .word FUN_020AFA80 +_020AFBF8: .word UNK_021064C4 + arm_func_end FUN_020AFBA8 + + ; _end + arm_func_start FUN_020AFBFC +FUN_020AFBFC: ; 0x020AFBFC + mov r0, r0, lsl #0x4 + bx lr + arm_func_end FUN_020AFBFC + diff --git a/arm9/asm/NNS_GFD_gfd_linkedlistt.s b/arm9/asm/NNS_GFD_gfd_linkedlistt.s new file mode 100644 index 00000000..1c611a0e --- /dev/null +++ b/arm9/asm/NNS_GFD_gfd_linkedlistt.s @@ -0,0 +1,302 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + ; @7929 + .global UNK_020FF864 +UNK_020FF864: ; 0x020FF864 + .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .section .bss + + ; mgr_ + .global UNK_021CCD6C +UNK_021CCD6C: ; 0x021CCD6C + .space 0x4 + + ; mgr_ + 0x4 + .global UNK_021CCD70 +UNK_021CCD70: ; 0x021CCD70 + .space 0x4 + + ; mgr_ + 0x8 + .global UNK_021CCD74 +UNK_021CCD74: ; 0x021CCD74 + .space 0x14 + + .section .text + + ; NNS_GfdResetLnkTexVramState + arm_func_start FUN_020AF6A4 +FUN_020AF6A4: ; 0x020AF6A4 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x30 + ldr r6, _020AF884 ; =UNK_020FF864 + add r5, sp, #0x0 + ldmia r6!, {r0-r3} + mov r12, r5 + stmia r5!, {r0-r3} + ldmia r6!, {r0-r3} + stmia r5!, {r0-r3} + ldr r4, _020AF888 ; =UNK_021CCD6C + ldmia r6, {r0-r3} + stmia r5, {r0-r3} + ldr lr, [r4, #0x10] + ldr r1, [r4, #0xc] + add r0, lr, lr, lsr #0x1 + mov r4, lr, lsr #0x1 + sub r0, r1, r0 + mov r3, #0x0 +_020AF6EC: + cmp r3, #0x0 + beq _020AF6FC + cmp r3, #0x2 + bne _020AF734 +_020AF6FC: + ldr r2, [r12, #0x0] + cmp r2, #0x0 + beq _020AF734 + cmp lr, #0x0 + beq _020AF734 + ldr r1, [r12, #0x8] + cmp r2, lr + movhi r2, lr + add r1, r1, r2 + str r1, [r12, #0x8] + ldr r1, [r12, #0x0] + sub lr, lr, r2 + sub r1, r1, r2 + str r1, [r12, #0x0] +_020AF734: + add r3, r3, #0x1 + cmp r3, #0x4 + add r12, r12, #0xc + blo _020AF6EC + ldr r1, [sp, #0xc] + add r5, sp, #0x0 + sub r1, r1, r4 + str r1, [sp, #0xc] + mov r3, #0x0 +_020AF758: + ldr r2, [r5, #0x0] + cmp r2, #0x0 + beq _020AF790 + cmp r0, #0x0 + beq _020AF790 + ldr r1, [r5, #0x4] + cmp r2, r0 + movhi r2, r0 + add r1, r1, r2 + str r1, [r5, #0x4] + ldr r1, [r5, #0x0] + sub r0, r0, r2 + sub r1, r1, r2 + str r1, [r5, #0x0] +_020AF790: + add r3, r3, #0x1 + cmp r3, #0x4 + add r5, r5, #0xc + blo _020AF758 + ldr r0, _020AF888 ; =UNK_021CCD6C + bl FUN_020AF698 + ldr r0, _020AF88C ; =UNK_021CCD70 + bl FUN_020AF698 + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, [r0, #0x18] + ldr r0, [r0, #0x14] + mov r1, r1, lsr #0x4 + bl FUN_020AF64C + ldr r3, [sp, #0x8] + ldr r1, _020AF888 ; =UNK_021CCD6C + cmp r3, #0x0 + str r0, [r1, #0x8] + beq _020AF7E8 + ldr r0, _020AF88C ; =UNK_021CCD70 + ldr r1, _020AF890 ; =UNK_021CCD74 + mov r2, #0x0 + bl FUN_020AF5E0 +_020AF7E8: + ldr r3, [sp, #0x4] + ldr r2, [sp, #0x8] + cmp r3, #0x0 + beq _020AF804 + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, _020AF890 ; =UNK_021CCD74 + bl FUN_020AF5E0 +_020AF804: + ldr r3, [sp, #0x20] + cmp r3, #0x0 + beq _020AF820 + ldr r0, _020AF88C ; =UNK_021CCD70 + ldr r1, _020AF890 ; =UNK_021CCD74 + mov r2, #0x40000 + bl FUN_020AF5E0 +_020AF820: + ldr r3, [sp, #0x1c] + ldr r0, [sp, #0x20] + cmp r3, #0x0 + add r2, r0, #0x40000 + beq _020AF840 + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, _020AF890 ; =UNK_021CCD74 + bl FUN_020AF5E0 +_020AF840: + ldr r3, [sp, #0x28] + cmp r3, #0x0 + beq _020AF85C + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, _020AF890 ; =UNK_021CCD74 + mov r2, #0x60000 + bl FUN_020AF5E0 +_020AF85C: + ldr r3, [sp, #0x10] + cmp r3, #0x0 + addeq sp, sp, #0x30 + ldmeqia sp!, {r4-r6,pc} + ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r1, _020AF890 ; =UNK_021CCD74 + add r2, r4, #0x20000 + bl FUN_020AF5E0 + add sp, sp, #0x30 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AF884: .word UNK_020FF864 +_020AF888: .word UNK_021CCD6C +_020AF88C: .word UNK_021CCD70 +_020AF890: .word UNK_021CCD74 + arm_func_end FUN_020AF6A4 + + ; NNS_GfdFreeLnkTexVram + arm_func_start FUN_020AF894 +FUN_020AF894: ; 0x020AF894 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020AF908 ; =0x7FFF0000 + ldr r1, _020AF90C ; =0x0000FFFF + and r2, r0, r2 + and r3, r0, r1 + mov r1, r2, lsr #0x10 + and r0, r0, #0x80000000 + mov r2, r3, lsl #0x3 + movs r3, r1, lsl #0x4 + mov r0, r0, lsr #0x1f + beq _020AF8FC + cmp r0, #0x0 + beq _020AF8DC + ldr r0, _020AF910 ; =UNK_021CCD70 + ldr r1, _020AF914 ; =UNK_021CCD74 + bl FUN_020AF334 + b _020AF8E8 +_020AF8DC: + ldr r0, _020AF918 ; =UNK_021CCD6C + ldr r1, _020AF914 ; =UNK_021CCD74 + bl FUN_020AF334 +_020AF8E8: + cmp r0, #0x0 + movne r0, #0x0 + add sp, sp, #0x4 + moveq r0, #0x1 + ldmia sp!, {pc} +_020AF8FC: + mov r0, #0x2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AF908: .word 0x7FFF0000 +_020AF90C: .word 0x0000FFFF +_020AF910: .word UNK_021CCD70 +_020AF914: .word UNK_021CCD74 +_020AF918: .word UNK_021CCD6C + arm_func_end FUN_020AF894 + + ; NNS_GfdAllocLnkTexVram + arm_func_start FUN_020AF91C +FUN_020AF91C: ; 0x020AF91C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + moveq r5, #0x10 + addne r0, r0, #0xf + bicne r5, r0, #0xf + ldr r0, _020AF9B0 ; =0x0007FFF0 + mov r4, r1 + cmp r5, r0 + addcs sp, sp, #0x4 + movcs r0, #0x0 + ldmcsia sp!, {r4-r5,pc} + cmp r4, #0x0 + beq _020AF96C + ldr r0, _020AF9B4 ; =UNK_021CCD70 + ldr r1, _020AF9B8 ; =UNK_021CCD74 + add r2, sp, #0x0 + mov r3, r5 + bl FUN_020AF5C4 + b _020AF980 +_020AF96C: + ldr r0, _020AF9BC ; =UNK_021CCD6C + ldr r1, _020AF9B8 ; =UNK_021CCD74 + add r2, sp, #0x0 + mov r3, r5 + bl FUN_020AF5C4 +_020AF980: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + ldr r1, [sp, #0x0] + ldr r0, _020AF9C0 ; =0x0000FFFF + mov r2, r5, lsr #0x4 + and r0, r0, r1, lsr #0x3 + orr r0, r0, r2, lsl #0x10 + orr r0, r0, r4, lsl #0x1f + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AF9B0: .word 0x0007FFF0 +_020AF9B4: .word UNK_021CCD70 +_020AF9B8: .word UNK_021CCD74 +_020AF9BC: .word UNK_021CCD6C +_020AF9C0: .word 0x0000FFFF + arm_func_end FUN_020AF91C + + ; NNS_GfdInitLnkTexVramManager + arm_func_start FUN_020AF9C4 +FUN_020AF9C4: ; 0x020AF9C4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr ip, _020AFA14 ; =UNK_021CCD6C + str r0, [r12, #0xc] + str r1, [r12, #0x10] + str r2, [r12, #0x14] + str r3, [r12, #0x18] + bl FUN_020AF6A4 + ldr r0, [sp, #0x8] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r3, _020AFA18 ; =FUN_020AF91C + ldr r1, _020AFA1C ; =UNK_021064B8 + ldr r2, _020AFA20 ; =FUN_020AF894 + ldr r0, _020AFA24 ; =UNK_021064BC + str r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFA14: .word UNK_021CCD6C +_020AFA18: .word FUN_020AF91C +_020AFA1C: .word UNK_021064B8 +_020AFA20: .word FUN_020AF894 +_020AFA24: .word UNK_021064BC + arm_func_end FUN_020AF9C4 + + ; _end + arm_func_start FUN_020AFA28 +FUN_020AFA28: ; 0x020AFA28 + mov r0, r0, lsl #0x4 + bx lr + arm_func_end FUN_020AFA28 + diff --git a/arm9/asm/NNS_GFD_gfd_plttvramman.s b/arm9/asm/NNS_GFD_gfd_plttvramman.s new file mode 100644 index 00000000..d1a9c3cc --- /dev/null +++ b/arm9/asm/NNS_GFD_gfd_plttvramman.s @@ -0,0 +1,31 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + ; NNS_GfdDefaultFuncAllocPlttVram + .global UNK_021064C0 +UNK_021064C0: ; 0x021064C0 + .word FUN_020AE8C4 + + ; NNS_GfdDefaultFuncFreePlttVram + .global UNK_021064C4 +UNK_021064C4: ; 0x021064C4 + .word FUN_020AE8BC + + .section .text + + ; _end + arm_func_start FUN_020AE8BC +FUN_020AE8BC: ; 0x020AE8BC + mvn r0, #0x0 + bx lr + arm_func_end FUN_020AE8BC + + ; _end + arm_func_start FUN_020AE8C4 +FUN_020AE8C4: ; 0x020AE8C4 + mov r0, #0x0 + bx lr + arm_func_end FUN_020AE8C4 + diff --git a/arm9/asm/NNS_GFD_gfd_texvramman.s b/arm9/asm/NNS_GFD_gfd_texvramman.s new file mode 100644 index 00000000..e647619d --- /dev/null +++ b/arm9/asm/NNS_GFD_gfd_texvramman.s @@ -0,0 +1,31 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .data + + ; NNS_GfdDefaultFuncAllocTexVram + .global UNK_021064B8 +UNK_021064B8: ; 0x021064B8 + .word FUN_020AE8B4 + + ; NNS_GfdDefaultFuncFreeTexVram + .global UNK_021064BC +UNK_021064BC: ; 0x021064BC + .word FUN_020AE8AC + + .section .text + + ; _end + arm_func_start FUN_020AE8AC +FUN_020AE8AC: ; 0x020AE8AC + mvn r0, #0x0 + bx lr + arm_func_end FUN_020AE8AC + + ; _end + arm_func_start FUN_020AE8B4 +FUN_020AE8B4: ; 0x020AE8B4 + mov r0, #0x0 + bx lr + arm_func_end FUN_020AE8B4 + diff --git a/arm9/asm/NNS_GFD_gfd_vramtransfe.s b/arm9/asm/NNS_GFD_gfd_vramtransfe.s new file mode 100644 index 00000000..86c62841 --- /dev/null +++ b/arm9/asm/NNS_GFD_gfd_vramtransfe.s @@ -0,0 +1,643 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .rodata + + ; transFunc$7934 + .global UNK_020FF7D4 +UNK_020FF7D4: ; 0x020FF7D4 + .word FUN_020AF2B4 + .word FUN_020AF288 + .word FUN_020AF25C + .word FUN_020AF230 + .word GX_LoadBG0Char_2 + .word GX_LoadBG1Char_2 + .word GX_LoadBG2Char_2 + .word GX_LoadBG3Char_2 + .word GX_LoadBG0Scr_2 + .word GX_LoadBG1Scr_2 + .word GX_LoadBG2Scr_2 + .word GX_LoadBG3Scr_2 + .word GX_LoadBG2Scr_3 + .word GX_LoadBG3Scr_3 + .word GX_LoadOBJPltt_2 + .word GX_LoadBGPltt_2 + .word FUN_020AF174 + .word FUN_020AF148 + .word GX_LoadOAM_2 + .word GX_LoadOBJ_2 + .word GXS_LoadBG0Char_2 + .word GXS_LoadBG1Char_2 + .word GXS_LoadBG2Char_2 + .word GXS_LoadBG3Char_2 + .word GXS_LoadBG0Scr_2 + .word GXS_LoadBG1Scr_2 + .word GXS_LoadBG2Scr_2 + .word GXS_LoadBG3Scr_2 + .word GXS_LoadBG2Scr_3 + .word GXS_LoadBG3Scr_3 + .word GXS_LoadOBJPltt_2 + .word GXS_LoadBGPltt_2 + .word FUN_020AF074 + .word FUN_020AF048 + .word GXS_LoadOAM_2 + .word GXS_LoadOBJ_2 + + ; const initializer + .section .bss + + ; s_VramTransferManager + .global UNK_021CCD58 +UNK_021CCD58: ; 0x021CCD58 + .space 0x14 + + .section .text + + ; NNS_GfdRegisterNewVramTransferTask + arm_func_start FUN_020AEE40 +FUN_020AEE40: ; 0x020AEE40 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r5, _020AEEB4 ; =UNK_021CCD58 + mov r9, r0 + mov r0, r5 + mov r8, r1 + mov r7, r2 + mov r6, r3 + bl FUN_020AF2F4 + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + mov r0, r5 + bl FUN_020AEF78 + mov r4, r0 + str r9, [r4, #0x0] + str r7, [r4, #0x4] + str r8, [r4, #0x8] + mov r0, r5 + str r6, [r4, #0xc] + bl FUN_020AEF98 + ldr r2, [r5, #0x10] + ldr r1, [r4, #0xc] + mov r0, #0x1 + add r1, r2, r1 + str r1, [r5, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020AEEB4: .word UNK_021CCD58 + arm_func_end FUN_020AEE40 + + ; NNS_GfdDoVramTransfer + arm_func_start FUN_020AEEB8 +FUN_020AEEB8: ; 0x020AEEB8 + stmdb sp!, {r4-r6,lr} + ldr r6, _020AEF18 ; =UNK_021CCD58 + mov r0, r6 + bl FUN_020AEF88 + mov r5, r0 + mov r0, r6 + bl FUN_020AEF3C + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + add r4, r6, #0x10 +_020AEEE0: + mov r0, r5 + bl FUN_020AEFF0 + ldr r2, [r4, #0x0] + ldr r1, [r5, #0xc] + mov r0, r6 + sub r1, r2, r1 + str r1, [r4, #0x0] + bl FUN_020AEF88 + mov r5, r0 + mov r0, r6 + bl FUN_020AEF3C + cmp r0, #0x0 + bne _020AEEE0 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AEF18: .word UNK_021CCD58 + arm_func_end FUN_020AEEB8 + + ; NNS_GfdInitVramTransferManager + arm_func_start FUN_020AEF1C +FUN_020AEF1C: ; 0x020AEF1C + ldr r2, _020AEF34 ; =UNK_021CCD58 + ldr ip, _020AEF38 ; =FUN_020AEFD4 + str r0, [r2, #0x0] + mov r0, r2 + str r1, [r2, #0x4] + bx r12 + .balign 4 +_020AEF34: .word UNK_021CCD58 +_020AEF38: .word FUN_020AEFD4 + arm_func_end FUN_020AEF1C + + ; _end + arm_func_start FUN_020AEF3C +FUN_020AEF3C: ; 0x020AEF3C + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020AF2E0 + cmp r0, #0x0 + movne r0, #0x0 + ldmneia sp!, {r4,pc} + ldrh r1, [r4, #0x8] + mov r0, r4 + bl FUN_020AF30C + strh r0, [r4, #0x8] + ldrh r1, [r4, #0xc] + mov r0, #0x1 + sub r1, r1, #0x1 + strh r1, [r4, #0xc] + ldmia sp!, {r4,pc} + arm_func_end FUN_020AEF3C + + ; _end + arm_func_start FUN_020AEF78 +FUN_020AEF78: ; 0x020AEF78 + ldrh r1, [r0, #0xa] + ldr r0, [r0, #0x0] + add r0, r0, r1, lsl #0x4 + bx lr + arm_func_end FUN_020AEF78 + + ; _end + arm_func_start FUN_020AEF88 +FUN_020AEF88: ; 0x020AEF88 + ldrh r1, [r0, #0x8] + ldr r0, [r0, #0x0] + add r0, r0, r1, lsl #0x4 + bx lr + arm_func_end FUN_020AEF88 + + ; _end + arm_func_start FUN_020AEF98 +FUN_020AEF98: ; 0x020AEF98 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020AF2F4 + cmp r0, #0x0 + movne r0, #0x0 + ldmneia sp!, {r4,pc} + ldrh r1, [r4, #0xa] + mov r0, r4 + bl FUN_020AF30C + strh r0, [r4, #0xa] + ldrh r1, [r4, #0xc] + mov r0, #0x1 + add r1, r1, #0x1 + strh r1, [r4, #0xc] + ldmia sp!, {r4,pc} + arm_func_end FUN_020AEF98 + + ; _end + arm_func_start FUN_020AEFD4 +FUN_020AEFD4: ; 0x020AEFD4 + mov r2, #0x0 + strh r2, [r0, #0xa] + ldrh r1, [r0, #0xa] + strh r1, [r0, #0x8] + strh r2, [r0, #0xc] + str r2, [r0, #0x10] + bx lr + arm_func_end FUN_020AEFD4 + + ; DoTransfer_ + arm_func_start FUN_020AEFF0 +FUN_020AEFF0: ; 0x020AEFF0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r3, [r5, #0x0] + ldr r2, _020AF02C ; =UNK_020FF7D4 + ldr r0, [r5, #0x4] + ldr r1, [r5, #0xc] + ldr r4, [r2, r3, lsl #0x2] + bl DC_FlushRange + ldr r0, [r5, #0x4] + ldr r1, [r5, #0x8] + ldr r2, [r5, #0xc] + blx r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AF02C: .word UNK_020FF7D4 + arm_func_end FUN_020AEFF0 + +GXS_LoadOBJ_2: + ldr ip, _020AF038 ; =GXS_LoadOBJ + bx r12 + .balign 4 +_020AF038: .word GXS_LoadOBJ + arm_func_end GXS_LoadOBJ_2 + + ; DoTransfer2dObjOamSub + arm_func_start GXS_LoadOAM_2 +GXS_LoadOAM_2: ; 0x020AF03C + ldr ip, _020AF044 ; =GXS_LoadOAM + bx r12 + .balign 4 +_020AF044: .word GXS_LoadOAM + arm_func_end GXS_LoadOAM_2 + + ; _end + arm_func_start FUN_020AF048 +FUN_020AF048: ; 0x020AF048 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GXS_BeginLoadBGExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GXS_LoadBGExtPltt + bl GXS_EndLoadBGExtPltt + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AF048 + + ; _end + arm_func_start FUN_020AF074 +FUN_020AF074: ; 0x020AF074 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GXS_BeginLoadOBJExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AF074 + + ; DoTransfer2dBGPlttSub + arm_func_start GXS_LoadBGPltt_2 +GXS_LoadBGPltt_2: ; 0x020AF0A0 + ldr ip, _020AF0A8 ; =GXS_LoadBGPltt + bx r12 + .balign 4 +_020AF0A8: .word GXS_LoadBGPltt + arm_func_end GXS_LoadBGPltt_2 + + ; DoTransfer2dObjPlttSub + arm_func_start GXS_LoadOBJPltt_2 +GXS_LoadOBJPltt_2: ; 0x020AF0AC + ldr ip, _020AF0B4 ; =GXS_LoadOBJPltt + bx r12 + .balign 4 +_020AF0B4: .word GXS_LoadOBJPltt + arm_func_end GXS_LoadOBJPltt_2 + + ; DoTransfer2dBG3BmpSub + arm_func_start GXS_LoadBG3Scr_3 +GXS_LoadBG3Scr_3: ; 0x020AF0B8 + ldr ip, _020AF0C0 ; =GXS_LoadBG3Scr + bx r12 + .balign 4 +_020AF0C0: .word GXS_LoadBG3Scr + arm_func_end GXS_LoadBG3Scr_3 + + ; DoTransfer2dBG2BmpSub + arm_func_start GXS_LoadBG2Scr_3 +GXS_LoadBG2Scr_3: ; 0x020AF0C4 + ldr ip, _020AF0CC ; =GXS_LoadBG2Scr + bx r12 + .balign 4 +_020AF0CC: .word GXS_LoadBG2Scr + arm_func_end GXS_LoadBG2Scr_3 + + ; DoTransfer2dBG3ScrSub + arm_func_start GXS_LoadBG3Scr_2 +GXS_LoadBG3Scr_2: ; 0x020AF0D0 + ldr ip, _020AF0D8 ; =GXS_LoadBG3Scr + bx r12 + .balign 4 +_020AF0D8: .word GXS_LoadBG3Scr + arm_func_end GXS_LoadBG3Scr_2 + + ; DoTransfer2dBG2ScrSub + arm_func_start GXS_LoadBG2Scr_2 +GXS_LoadBG2Scr_2: ; 0x020AF0DC + ldr ip, _020AF0E4 ; =GXS_LoadBG2Scr + bx r12 + .balign 4 +_020AF0E4: .word GXS_LoadBG2Scr + arm_func_end GXS_LoadBG2Scr_2 + + ; DoTransfer2dBG1ScrSub + arm_func_start GXS_LoadBG1Scr_2 +GXS_LoadBG1Scr_2: ; 0x020AF0E8 + ldr ip, _020AF0F0 ; =GXS_LoadBG1Scr + bx r12 + .balign 4 +_020AF0F0: .word GXS_LoadBG1Scr + arm_func_end GXS_LoadBG1Scr_2 + + ; DoTransfer2dBG0ScrSub + arm_func_start GXS_LoadBG0Scr_2 +GXS_LoadBG0Scr_2: ; 0x020AF0F4 + ldr ip, _020AF0FC ; =GXS_LoadBG0Scr + bx r12 + .balign 4 +_020AF0FC: .word GXS_LoadBG0Scr + arm_func_end GXS_LoadBG0Scr_2 + + ; DoTransfer2dBG3CharSub + arm_func_start GXS_LoadBG3Char_2 +GXS_LoadBG3Char_2: ; 0x020AF100 + ldr ip, _020AF108 ; =GXS_LoadBG3Char + bx r12 + .balign 4 +_020AF108: .word GXS_LoadBG3Char + arm_func_end GXS_LoadBG3Char_2 + + ; DoTransfer2dBG2CharSub + arm_func_start GXS_LoadBG2Char_2 +GXS_LoadBG2Char_2: ; 0x020AF10C + ldr ip, _020AF114 ; =GXS_LoadBG2Char + bx r12 + .balign 4 +_020AF114: .word GXS_LoadBG2Char + arm_func_end GXS_LoadBG2Char_2 + + ; DoTransfer2dBG1CharSub + arm_func_start GXS_LoadBG1Char_2 +GXS_LoadBG1Char_2: ; 0x020AF118 + ldr ip, _020AF120 ; =GXS_LoadBG1Char + bx r12 + .balign 4 +_020AF120: .word GXS_LoadBG1Char + arm_func_end GXS_LoadBG1Char_2 + + ; DoTransfer2dBG0CharSub + arm_func_start GXS_LoadBG0Char_2 +GXS_LoadBG0Char_2: ; 0x020AF124 + ldr ip, _020AF12C ; =GXS_LoadBG0Char + bx r12 + .balign 4 +_020AF12C: .word GXS_LoadBG0Char + arm_func_end GXS_LoadBG0Char_2 + + ; DoTransfer2dObjCharMain + arm_func_start GX_LoadOBJ_2 +GX_LoadOBJ_2: ; 0x020AF130 + ldr ip, _020AF138 ; =GX_LoadOBJ + bx r12 + .balign 4 +_020AF138: .word GX_LoadOBJ + arm_func_end GX_LoadOBJ_2 + + ; DoTransfer2dObjOamMain + arm_func_start GX_LoadOAM_2 +GX_LoadOAM_2: ; 0x020AF13C + ldr ip, _020AF144 ; =GX_LoadOAM + bx r12 + .balign 4 +_020AF144: .word GX_LoadOAM + arm_func_end GX_LoadOAM_2 + + ; _end + arm_func_start FUN_020AF148 +FUN_020AF148: ; 0x020AF148 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadBGExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadBGExtPltt + bl GX_EndLoadBGExtPltt + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AF148 + + ; _end + arm_func_start FUN_020AF174 +FUN_020AF174: ; 0x020AF174 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadOBJExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AF174 + + ; DoTransfer2dBGPlttMain + arm_func_start GX_LoadBGPltt_2 +GX_LoadBGPltt_2: ; 0x020AF1A0 + ldr ip, _020AF1A8 ; =GX_LoadBGPltt + bx r12 + .balign 4 +_020AF1A8: .word GX_LoadBGPltt + arm_func_end GX_LoadBGPltt_2 + + ; DoTransfer2dObjPlttMain + arm_func_start GX_LoadOBJPltt_2 +GX_LoadOBJPltt_2: ; 0x020AF1AC + ldr ip, _020AF1B4 ; =GX_LoadOBJPltt + bx r12 + .balign 4 +_020AF1B4: .word GX_LoadOBJPltt + arm_func_end GX_LoadOBJPltt_2 + + ; DoTransfer2dBG3BmpMain + arm_func_start GX_LoadBG3Scr_3 +GX_LoadBG3Scr_3: ; 0x020AF1B8 + ldr ip, _020AF1C0 ; =GX_LoadBG3Scr + bx r12 + .balign 4 +_020AF1C0: .word GX_LoadBG3Scr + arm_func_end GX_LoadBG3Scr_3 + + ; DoTransfer2dBG2BmpMain + arm_func_start GX_LoadBG2Scr_3 +GX_LoadBG2Scr_3: ; 0x020AF1C4 + ldr ip, _020AF1CC ; =GX_LoadBG2Scr + bx r12 + .balign 4 +_020AF1CC: .word GX_LoadBG2Scr + arm_func_end GX_LoadBG2Scr_3 + + ; DoTransfer2dBG3ScrMain + arm_func_start GX_LoadBG3Scr_2 +GX_LoadBG3Scr_2: ; 0x020AF1D0 + ldr ip, _020AF1D8 ; =GX_LoadBG3Scr + bx r12 + .balign 4 +_020AF1D8: .word GX_LoadBG3Scr + arm_func_end GX_LoadBG3Scr_2 + + ; DoTransfer2dBG2ScrMain + arm_func_start GX_LoadBG2Scr_2 +GX_LoadBG2Scr_2: ; 0x020AF1DC + ldr ip, _020AF1E4 ; =GX_LoadBG2Scr + bx r12 + .balign 4 +_020AF1E4: .word GX_LoadBG2Scr + arm_func_end GX_LoadBG2Scr_2 + + ; DoTransfer2dBG1ScrMain + arm_func_start GX_LoadBG1Scr_2 +GX_LoadBG1Scr_2: ; 0x020AF1E8 + ldr ip, _020AF1F0 ; =GX_LoadBG1Scr + bx r12 + .balign 4 +_020AF1F0: .word GX_LoadBG1Scr + arm_func_end GX_LoadBG1Scr_2 + + ; DoTransfer2dBG0ScrMain + arm_func_start GX_LoadBG0Scr_2 +GX_LoadBG0Scr_2: ; 0x020AF1F4 + ldr ip, _020AF1FC ; =GX_LoadBG0Scr + bx r12 + .balign 4 +_020AF1FC: .word GX_LoadBG0Scr + arm_func_end GX_LoadBG0Scr_2 + + ; DoTransfer2dBG3CharMain + arm_func_start GX_LoadBG3Char_2 +GX_LoadBG3Char_2: ; 0x020AF200 + ldr ip, _020AF208 ; =GX_LoadBG3Char + bx r12 + .balign 4 +_020AF208: .word GX_LoadBG3Char + arm_func_end GX_LoadBG3Char_2 + + ; DoTransfer2dBG2CharMain + arm_func_start GX_LoadBG2Char_2 +GX_LoadBG2Char_2: ; 0x020AF20C + ldr ip, _020AF214 ; =GX_LoadBG2Char + bx r12 + .balign 4 +_020AF214: .word GX_LoadBG2Char + arm_func_end GX_LoadBG2Char_2 + + ; DoTransfer2dBG1CharMain + arm_func_start GX_LoadBG1Char_2 +GX_LoadBG1Char_2: ; 0x020AF218 + ldr ip, _020AF220 ; =GX_LoadBG1Char + bx r12 + .balign 4 +_020AF220: .word GX_LoadBG1Char + arm_func_end GX_LoadBG1Char_2 + + ; DoTransfer2dBG0CharMain + arm_func_start GX_LoadBG0Char_2 +GX_LoadBG0Char_2: ; 0x020AF224 + ldr ip, _020AF22C ; =GX_LoadBG0Char + bx r12 + .balign 4 +_020AF22C: .word GX_LoadBG0Char + arm_func_end GX_LoadBG0Char_2 + + ; _end + arm_func_start FUN_020AF230 +FUN_020AF230: ; 0x020AF230 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl GX_BeginLoadClearImage + mov r0, r5 + mov r1, r4 + bl GX_LoadClearImageDepth + bl GX_EndLoadClearImage + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020AF230 + + ; _end + arm_func_start FUN_020AF25C +FUN_020AF25C: ; 0x020AF25C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl GX_BeginLoadClearImage + mov r0, r5 + mov r1, r4 + bl GX_LoadClearImageColor + bl GX_EndLoadClearImage + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + arm_func_end FUN_020AF25C + + ; _end + arm_func_start FUN_020AF288 +FUN_020AF288: ; 0x020AF288 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadTexPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AF288 + + ; _end + arm_func_start FUN_020AF2B4 +FUN_020AF2B4: ; 0x020AF2B4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadTex + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadTex + bl GX_EndLoadTex + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AF2B4 + + ; _end + arm_func_start FUN_020AF2E0 +FUN_020AF2E0: ; 0x020AF2E0 + ldrh r0, [r0, #0xc] + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + arm_func_end FUN_020AF2E0 + + ; _end + arm_func_start FUN_020AF2F4 +FUN_020AF2F4: ; 0x020AF2F4 + ldrh r1, [r0, #0xc] + ldr r0, [r0, #0x4] + cmp r1, r0 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + arm_func_end FUN_020AF2F4 + + ; _end + arm_func_start FUN_020AF30C +FUN_020AF30C: ; 0x020AF30C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r0 + add r0, r1, #0x1 + ldr r1, [r2, #0x4] + bl _u32_div_f + mov r0, r1, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end FUN_020AF30C + diff --git a/arm9/asm/NNS_GFD_gfdi_linkedlist.s b/arm9/asm/NNS_GFD_gfdi_linkedlist.s new file mode 100644 index 00000000..793cbf04 --- /dev/null +++ b/arm9/asm/NNS_GFD_gfdi_linkedlist.s @@ -0,0 +1,268 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020AF334 +FUN_020AF334: ; 0x020AF334 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x10 + add r3, r2, r3 + str r2, [sp, #0x0] + str r2, [sp, #0x8] + str r3, [sp, #0x4] + str r3, [sp, #0xc] + ldr r3, [r0, #0x0] + add r12, sp, #0x0 + cmp r3, #0x0 + beq _020AF418 + mov r6, #0x0 +_020AF364: + ldr r5, [r3, #0x0] + ldr r4, [r12, #0x4] + ldr r2, [r3, #0xc] + cmp r5, r4 + bne _020AF3B8 + ldr r4, [r3, #0x4] + add r4, r5, r4 + str r4, [sp, #0xc] + ldr r4, [r3, #0x8] + cmp r4, #0x0 + strne r2, [r4, #0xc] + streq r2, [r0, #0x0] + cmp r2, #0x0 + strne r4, [r2, #0x8] + ldr r4, [r1, #0x0] + cmp r4, #0x0 + strne r3, [r4, #0x8] + ldr r4, [r1, #0x0] + str r4, [r3, #0xc] + str r6, [r3, #0x8] + str r3, [r1, #0x0] +_020AF3B8: + ldr r5, [r3, #0x0] + ldr lr, [r3, #0x4] + ldr r4, [r12, #0x0] + add lr, r5, lr + cmp r4, lr + bne _020AF40C + str r5, [sp, #0x8] + ldr r5, [r3, #0x8] + ldr r4, [r3, #0xc] + cmp r5, #0x0 + strne r4, [r5, #0xc] + streq r4, [r0, #0x0] + cmp r4, #0x0 + strne r5, [r4, #0x8] + ldr lr, [r1, #0x0] + cmp lr, #0x0 + strne r3, [lr, #0x8] + ldr lr, [r1, #0x0] + str lr, [r3, #0xc] + str r6, [r3, #0x8] + str r3, [r1, #0x0] +_020AF40C: + mov r3, r2 + cmp r2, #0x0 + bne _020AF364 +_020AF418: + ldr r4, [r1, #0x0] + cmp r4, #0x0 + ldrne r2, [r4, #0xc] + strne r2, [r1, #0x0] + cmp r4, #0x0 + addeq sp, sp, #0x10 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r2, [sp, #0x8] + mov r1, #0x0 + str r2, [r4, #0x0] + ldr r3, [sp, #0xc] + ldr r2, [sp, #0x8] + sub r2, r3, r2 + str r2, [r4, #0x4] + str r1, [r4, #0x8] + str r1, [r4, #0xc] + ldr r1, [r0, #0x0] + cmp r1, #0x0 + strne r4, [r1, #0x8] + ldr r2, [r0, #0x0] + mov r1, #0x0 + str r2, [r4, #0xc] + str r1, [r4, #0x8] + str r4, [r0, #0x0] + mov r0, #0x1 + add sp, sp, #0x10 + ldmia sp!, {r4-r6,pc} + arm_func_end FUN_020AF334 + + ; _end + arm_func_start FUN_020AF488 +FUN_020AF488: ; 0x020AF488 + stmdb sp!, {r4-r10,lr} + ldr r4, [r0, #0x0] + ldr r9, [sp, #0x20] + cmp r4, #0x0 + mov r5, #0x0 + beq _020AF4EC + sub r12, r9, #0x1 + mvn lr, r12 +_020AF4A8: + cmp r9, #0x1 + ldrls r8, [r4, #0x0] + movls r6, r5 + movls r7, r3 + bls _020AF4D0 + ldr r7, [r4, #0x0] + add r6, r7, r12 + and r8, lr, r6 + sub r6, r8, r7 + add r7, r3, r6 +_020AF4D0: + ldr r10, [r4, #0x4] + cmp r10, r7 + movcs r5, r4 + bhs _020AF4EC + ldr r4, [r4, #0xc] + cmp r4, #0x0 + bne _020AF4A8 +_020AF4EC: + cmp r5, #0x0 + beq _020AF5B8 + cmp r6, #0x0 + beq _020AF54C + ldr r9, [r1, #0x0] + cmp r9, #0x0 + ldrne r3, [r9, #0xc] + strne r3, [r1, #0x0] + cmp r9, #0x0 + beq _020AF5B8 + ldr r4, [r5, #0x0] + mov r3, #0x0 + str r4, [r9, #0x0] + str r6, [r9, #0x4] + str r3, [r9, #0x8] + str r3, [r9, #0xc] + ldr r3, [r0, #0x0] + cmp r3, #0x0 + strne r9, [r3, #0x8] + ldr r4, [r0, #0x0] + mov r3, #0x0 + str r4, [r9, #0xc] + str r3, [r9, #0x8] + str r9, [r0, #0x0] +_020AF54C: + ldr r3, [r5, #0x4] + sub r3, r3, r7 + str r3, [r5, #0x4] + ldr r3, [r5, #0x0] + add r3, r3, r7 + str r3, [r5, #0x0] + ldr r3, [r5, #0x4] + cmp r3, #0x0 + bne _020AF5AC + ldr r4, [r5, #0x8] + ldr r3, [r5, #0xc] + cmp r4, #0x0 + strne r3, [r4, #0xc] + streq r3, [r0, #0x0] + cmp r3, #0x0 + strne r4, [r3, #0x8] + ldr r0, [r1, #0x0] + cmp r0, #0x0 + strne r5, [r0, #0x8] + ldr r3, [r1, #0x0] + mov r0, #0x0 + str r3, [r5, #0xc] + str r0, [r5, #0x8] + str r5, [r1, #0x0] +_020AF5AC: + str r8, [r2, #0x0] + mov r0, #0x1 + ldmia sp!, {r4-r10,pc} +_020AF5B8: + mov r0, #0x0 + str r0, [r2, #0x0] + ldmia sp!, {r4-r10,pc} + arm_func_end FUN_020AF488 + + ; _end + arm_func_start FUN_020AF5C4 +FUN_020AF5C4: ; 0x020AF5C4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r12, #0x0 + str r12, [sp, #0x0] + bl FUN_020AF488 + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end FUN_020AF5C4 + + ; _end + arm_func_start FUN_020AF5E0 +FUN_020AF5E0: ; 0x020AF5E0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr lr, [r1, #0x0] + cmp lr, #0x0 + ldrne r12, [lr, #0xc] + strne r12, [r1, #0x0] + cmp lr, #0x0 + beq _020AF640 + str r2, [lr, #0x0] + str r3, [lr, #0x4] + mov r1, #0x0 + str r1, [lr, #0x8] + str r1, [lr, #0xc] + ldr r1, [r0, #0x0] + add sp, sp, #0x4 + cmp r1, #0x0 + strne lr, [r1, #0x8] + ldr r2, [r0, #0x0] + mov r1, #0x0 + str r2, [lr, #0xc] + str r1, [lr, #0x8] + str lr, [r0, #0x0] + mov r0, #0x1 + ldmia sp!, {pc} +_020AF640: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + arm_func_end FUN_020AF5E0 + + ; _end + arm_func_start FUN_020AF64C +FUN_020AF64C: ; 0x020AF64C + stmdb sp!, {r4,lr} + subs lr, r1, #0x1 + mov r2, #0x0 + beq _020AF684 + mov r4, r0 +_020AF660: + add r12, r2, #0x1 + add r2, r0, r2, lsl #0x4 + add r3, r0, r12, lsl #0x4 + str r3, [r2, #0xc] + str r4, [r3, #0x8] + mov r2, r12 + cmp r12, lr + add r4, r4, #0x10 + blo _020AF660 +_020AF684: + mov r2, #0x0 + str r2, [r0, #0x8] + add r1, r0, r1, lsl #0x4 + str r2, [r1, #-0x4] + ldmia sp!, {r4,pc} + arm_func_end FUN_020AF64C + + ; _end + arm_func_start FUN_020AF698 +FUN_020AF698: ; 0x020AF698 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + arm_func_end FUN_020AF698 + diff --git a/arm9/asm/NNS_SND_capture.s b/arm9/asm/NNS_SND_capture.s new file mode 100644 index 00000000..a30a85f1 --- /dev/null +++ b/arm9/asm/NNS_SND_capture.s @@ -0,0 +1,699 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + ; sIsThreadCreated + .global UNK_021D27A4 +UNK_021D27A4: ; 0x021D27A4 + .space 0x4 + + ; sCurEffectInfo + .global UNK_021D27A8 +UNK_021D27A8: ; 0x021D27A8 + .space 0x4 + + ; sMesgQ + .global UNK_021D27AC +UNK_021D27AC: ; 0x021D27AC + .space 0x20 + + ; sCapParam + .global UNK_021D27CC +UNK_021D27CC: ; 0x021D27CC + .space 0x54 + + ; sEffectInfoBuffer + .global UNK_021D2820 +UNK_021D2820: ; 0x021D2820 + .space 0xa0 + + .section .text + + ; AlarmCallback + arm_func_start FUN_020C177C +FUN_020C177C: ; 0x020C177C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldr r4, [r7, #0x18] + ldr r0, [r7, #0x1c] + ldr r1, _020C186C ; =UNK_021D27A4 + mul r0, r4, r0 + ldr r3, [r7, #0xc] + ldr r2, [r7, #0x10] + ldr r1, [r1, #0x0] + add r6, r3, r0 + cmp r1, #0x0 + add r5, r2, r0 + beq _020C180C + ldr r2, _020C1870 ; =UNK_021D27A8 + mov r1, #0x14 + ldr r2, [r2, #0x0] + ldr r3, _020C1874 ; =UNK_021D2820 + mul r1, r2, r1 + str r7, [r3, r1] + add r1, r3, r1 + str r4, [r1, #0x4] + str r0, [r1, #0x8] + str r6, [r1, #0xc] + ldr r0, _020C1878 ; =UNK_021D27AC + mov r2, #0x0 + str r5, [r1, #0x10] + bl OS_SendMessage + ldr r0, _020C1870 ; =UNK_021D27A8 + ldr r1, [r0, #0x0] + add r1, r1, #0x1 + str r1, [r0, #0x0] + cmp r1, #0x8 + movge r1, #0x0 + strge r1, [r0, #0x0] + b _020C1844 +_020C180C: + mov r0, r6 + mov r1, r4 + bl DC_InvalidateRange + mov r0, r5 + mov r1, r4 + bl DC_InvalidateRange + ldr r1, [r7, #0x38] + mov r0, r6 + str r1, [sp, #0x0] + ldr r3, [r7, #0x8] + ldr r6, [r7, #0x34] + mov r1, r5 + mov r2, r4 + blx r6 +_020C1844: + ldr r0, [r7, #0x1c] + add r0, r0, #0x1 + str r0, [r7, #0x1c] + ldr r1, [r7, #0x1c] + ldr r0, [r7, #0x30] + cmp r1, r0 + movge r0, #0x0 + strge r0, [r7, #0x1c] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C186C: .word UNK_021D27A4 +_020C1870: .word UNK_021D27A8 +_020C1874: .word UNK_021D2820 +_020C1878: .word UNK_021D27AC + + ; NNSi_SndCaptureEndSleep + arm_func_start FUN_020C187C +FUN_020C187C: ; 0x020C187C + stmdb sp!, {r4,lr} + ldr r4, _020C18F4 ; =UNK_021D27CC + ldr r0, [r4, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, #0x0 + str r0, [r4, #0x1c] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x14] + bl MIi_CpuClear32 + ldr r1, [r4, #0x10] + ldr r2, [r4, #0x14] + mov r0, #0x0 + bl MIi_CpuClear32 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + bl DC_FlushRange + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + bl DC_FlushRange + ldr r1, [r4, #0x2c] + mov r3, #0x0 + cmp r1, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r1 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + movlt r2, #0x0 + bl SND_StartTimer + ldmia sp!, {r4,pc} + .balign 4 +_020C18F4: .word UNK_021D27CC + + ; NNSi_SndCaptureBeginSleep + arm_func_start FUN_020C18F8 +FUN_020C18F8: ; 0x020C18F8 + stmdb sp!, {r4,lr} + ldr r3, _020C194C ; =UNK_021D27CC + ldr r0, [r3, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r1, [r3, #0x2c] + cmp r1, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r1 + ldr r0, [r3, #0x24] + ldr r1, [r3, #0x28] + movlt r2, #0x0 + mov r3, #0x0 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + .balign 4 +_020C194C: .word UNK_021D27CC + + ; NNSi_SndCaptureStop + arm_func_start FUN_020C1950 +FUN_020C1950: ; 0x020C1950 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r4, _020C1A3C ; =UNK_021D27CC + ldr r0, [r4, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + ldr r1, [r4, #0x2c] + mov r3, #0x0 + cmp r1, #0x0 + movge r7, #0x1 + movlt r7, #0x0 + cmp r7, #0x0 + movne r0, #0x1 + movne r2, r0, lsl r1 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + moveq r2, #0x0 + bl SND_StopTimer + cmp r7, #0x0 + beq _020C19DC + bl SND_GetCurrentCommandTag + mov r5, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r5 + bl SND_WaitForCommandProc + ldr r6, _020C1A40 ; =UNK_021D27AC + mov r5, #0x0 +_020C19C4: + mov r0, r6 + mov r1, r5 + mov r2, r5 + bl OS_ReceiveMessage + cmp r0, #0x0 + bne _020C19C4 +_020C19DC: + ldr r0, [r4, #0x28] + cmp r0, #0x0 + beq _020C19EC + bl FUN_020C0300 +_020C19EC: + ldr r0, [r4, #0x20] + cmp r0, #0x0 + beq _020C19FC + bl FUN_020C0340 +_020C19FC: + cmp r7, #0x0 + beq _020C1A0C + ldr r0, [r4, #0x2c] + bl FUN_020C029C +_020C1A0C: + ldr r0, [r4, #0x4] + cmp r0, #0x1 + bne _020C1A2C + mov r0, #0x0 + mov r1, r0 + mov r2, r0 + mov r3, r0 + bl SND_SetOutputSelector +_020C1A2C: + mov r0, #0x0 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C1A3C: .word UNK_021D27CC +_020C1A40: .word UNK_021D27AC + + ; NNSi_SndCaptureStart + arm_func_start FUN_020C1A44 +FUN_020C1A44: ; 0x020C1A44 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + mov r10, r3 + str r0, [sp, #0x18] + str r2, [sp, #0x20] + mov r2, #0x0 + str r1, [sp, #0x1c] + mov r0, r1 + mov r1, r10 + ldr r9, [sp, #0x6c] + ldr r8, [sp, #0x74] + str r2, [sp, #0x2c] + mvn r6, #0x0 + ldr r4, _020C1D90 ; =UNK_021D27CC + bl DC_FlushRange + ldr r0, [sp, #0x20] + mov r1, r10 + bl DC_FlushRange + ldr r0, [sp, #0x60] + ldr r1, [sp, #0x70] + cmp r0, #0x1 + moveq r7, #0x1 + ldr r0, _020C1D94 ; =0x00FFB0FF + movne r7, #0x0 + bl _s32_div_f + ldr r1, [sp, #0x84] + mov r11, r0 + cmp r1, #0x0 + beq _020C1B00 + add r1, r11, #0x10 + bic r11, r1, #0x1f + mov r2, r11, asr #0x5 + mov r0, r10 + cmp r7, #0x0 + ldr r1, [sp, #0x80] + moveq r0, r10, lsr #0x1 + str r2, [sp, #0x34] + bl _u32_div_f + ldr r1, [sp, #0x34] + mov r5, #0x20 + mul r0, r1, r0 + str r0, [sp, #0x30] + cmp r7, #0x0 + ldr r0, [sp, #0x34] + moveq r5, r5, lsr #0x1 + mul r0, r5, r0 + mov r5, r0 +_020C1B00: + cmp r7, #0x0 + movne r0, #0x0 + strne r0, [sp, #0x28] + moveq r0, #0x1 + streq r0, [sp, #0x28] + cmp r7, #0x0 + movne r0, #0x1 + strne r0, [sp, #0x24] + moveq r0, #0x0 + streq r0, [sp, #0x24] + ldr r0, [sp, #0x18] + cmp r0, #0x2 + movne r0, #0xa + strne r0, [sp, #0x2c] + ldr r0, [sp, #0x84] + cmp r0, #0x0 + beq _020C1B58 + bl FUN_020C02BC + movs r6, r0 + addmi sp, sp, #0x3c + movmi r0, #0x0 + ldmmiia sp!, {r4-r11,pc} +_020C1B58: + mov r0, #0x3 + bl FUN_020C031C + cmp r0, #0x0 + bne _020C1B84 + cmp r6, #0x0 + blt _020C1B78 + mov r0, r6 + bl FUN_020C029C +_020C1B78: + add sp, sp, #0x3c + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020C1B84: + mov r0, #0xa + bl FUN_020C0370 + cmp r0, #0x0 + bne _020C1BB8 + cmp r6, #0x0 + blt _020C1BA4 + mov r0, r6 + bl FUN_020C029C +_020C1BA4: + mov r0, #0x3 + bl FUN_020C0300 + add sp, sp, #0x3c + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020C1BB8: + mov r0, #0x0 + mov r7, r10, lsr #0x2 + str r0, [sp, #0x0] + str r7, [sp, #0x4] + str r8, [sp, #0x8] + str r0, [sp, #0xc] + cmp r9, #0x0 + movne r3, #0x1 + ldr r1, [sp, #0x78] + str r11, [sp, #0x10] + str r1, [sp, #0x14] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x1c] + moveq r3, #0x2 + mov r0, #0x1 + bl SND_SetupChannelPcm + ldr r1, [sp, #0x64] + str r9, [sp, #0x0] + str r1, [sp, #0x4] + ldr r0, [sp, #0x68] + ldr r1, [sp, #0x24] + str r0, [sp, #0x8] + ldr r2, [sp, #0x1c] + mov r0, #0x0 + mov r3, r7 + bl SND_SetupCapture + mov r0, #0x0 + str r0, [sp, #0x0] + str r7, [sp, #0x4] + str r8, [sp, #0x8] + str r0, [sp, #0xc] + cmp r9, #0x0 + movne r3, #0x1 + ldr r2, [sp, #0x7c] + str r11, [sp, #0x10] + str r2, [sp, #0x14] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x20] + moveq r3, #0x2 + mov r0, #0x3 + bl SND_SetupChannelPcm + ldr r2, [sp, #0x64] + str r9, [sp, #0x0] + str r2, [sp, #0x4] + ldr r0, [sp, #0x68] + ldr r1, [sp, #0x24] + str r0, [sp, #0x8] + ldr r2, [sp, #0x20] + mov r3, r7 + mov r0, #0x1 + bl SND_SetupCapture + cmp r6, #0x0 + blt _020C1CA8 + ldr r2, [sp, #0x30] + ldr r3, _020C1D98 ; =FUN_020C177C + mov r1, r2 + mov r0, r6 + add r1, r1, r5 + str r4, [sp, #0x0] + bl SND_SetupAlarm +_020C1CA8: + ldr r0, [sp, #0x18] + cmp r0, #0x1 + bne _020C1CC8 + mov r0, #0x1 + mov r2, r0 + mov r3, r0 + mov r1, #0x2 + bl SND_SetOutputSelector +_020C1CC8: + cmp r6, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r6 + ldr r0, [sp, #0x2c] + movlt r2, #0x0 + mov r1, #0x3 + mov r3, #0x0 + bl SND_StartTimer + mov r0, #0x1 + str r0, [r4, #0x0] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x80] + str r0, [r4, #0x4] + mov r0, #0xa + str r0, [r4, #0x20] + ldr r0, [sp, #0x2c] + str r0, [r4, #0x24] + mov r0, #0x3 + str r0, [r4, #0x28] + ldr r0, [sp, #0x60] + str r6, [r4, #0x2c] + str r0, [r4, #0x8] + ldr r0, [sp, #0x1c] + str r0, [r4, #0xc] + ldr r0, [sp, #0x20] + str r0, [r4, #0x10] + mov r0, r10 + str r10, [r4, #0x14] + bl _u32_div_f + str r0, [r4, #0x18] + mov r1, #0x0 + str r1, [r4, #0x1c] + ldr r0, [sp, #0x80] + ldr r1, [sp, #0x84] + str r0, [r4, #0x30] + ldr r0, [sp, #0x88] + str r1, [r4, #0x34] + str r0, [r4, #0x38] + add r0, r4, #0x3c + str r8, [r4, #0x50] + bl FUN_020C3E6C + add r0, r4, #0x3c + mov r1, r8, lsl #0x8 + mov r2, #0x1 + bl FUN_020C3E40 + mov r0, #0x0 + str r0, [r4, #0x4c] + mov r0, #0x1 + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C1D90: .word UNK_021D27CC +_020C1D94: .word 0x00FFB0FF +_020C1D98: .word FUN_020C177C + + ; NNSi_SndCaptureMain + arm_func_start FUN_020C1D9C +FUN_020C1D9C: ; 0x020C1D9C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r5, _020C1E34 ; =UNK_021D27CC + ldr r0, [r5, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, [r5, #0x4] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} + add r4, r5, #0x3c + mov r0, r4 + bl FUN_020C3DF4 + ldr r0, [r5, #0x4c] + cmp r0, #0x0 + beq _020C1DFC + mov r0, r4 + bl FUN_020C3DDC + cmp r0, #0x0 + beq _020C1DFC + bl FUN_020C1950 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020C1DFC: + mov r0, r4 + bl FUN_020C3E0C + ldr r1, [r5, #0x50] + mov r4, r0, asr #0x8 + cmp r4, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r0, [r5, #0x24] + mov r1, r4 + mov r2, #0x0 + bl SND_SetChannelVolume + str r4, [r5, #0x50] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C1E34: .word UNK_021D27CC + + ; NNSi_SndCaptureInit + arm_func_start FUN_020C1E38 +FUN_020C1E38: ; 0x020C1E38 + ldr r1, _020C1E50 ; =UNK_021D27A4 + mov r2, #0x0 + ldr r0, _020C1E54 ; =UNK_021D27CC + str r2, [r1, #0x0] + str r2, [r0, #0x0] + bx lr + .balign 4 +_020C1E50: .word UNK_021D27A4 +_020C1E54: .word UNK_021D27CC + + ; NNS_SndCaptureIsActive + arm_func_start FUN_020C1E58 +FUN_020C1E58: ; 0x020C1E58 + ldr r0, _020C1E64 ; =UNK_021D27CC + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020C1E64: .word UNK_021D27CC + + ; NNS_SndCaptureStopEffect + arm_func_start FUN_020C1E68 +FUN_020C1E68: ; 0x020C1E68 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C1EA0 ; =UNK_021D27CC + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x4] + cmp r0, #0x1 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + bl FUN_020C1950 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C1EA0: .word UNK_021D27CC + + ; NNS_SndCaptureStartEffect + arm_func_start FUN_020C1EA4 +FUN_020C1EA4: ; 0x020C1EA4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x2c + mov r5, r0 + mov r4, r1 + mov r7, r2 + mov r6, r3 + bl FUN_020C1E68 + ldr r0, _020C1F50 ; =UNK_021D27CC + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x2c + movne r0, #0x0 + ldmneia sp!, {r4-r7,pc} + mov r1, r5 + mov r2, r4 + mov r0, #0x0 + bl MIi_CpuClear32 + mov r0, r5 + mov r1, r4 + bl DC_FlushRange + str r7, [sp, #0x0] + mov r2, #0x0 + str r2, [sp, #0x4] + str r2, [sp, #0x8] + mov r0, #0x1 + str r0, [sp, #0xc] + str r6, [sp, #0x10] + mov r1, #0x7f + str r1, [sp, #0x14] + str r2, [sp, #0x18] + ldr r2, [sp, #0x40] + str r1, [sp, #0x1c] + ldr r1, [sp, #0x44] + str r2, [sp, #0x20] + ldr r12, [sp, #0x48] + str r1, [sp, #0x24] + mov r1, r5 + mov r3, r4, lsr #0x1 + add r2, r5, r4, lsr #0x1 + str r12, [sp, #0x28] + bl FUN_020C1A44 + add sp, sp, #0x2c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C1F50: .word UNK_021D27CC + + ; NNS_SndCaptureStopReverb + arm_func_start FUN_020C1F54 +FUN_020C1F54: ; 0x020C1F54 + stmdb sp!, {r4,lr} + ldr r4, _020C1FA0 ; =UNK_021D27CC + mov r2, r0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, [r4, #0x4] + cmp r0, #0x0 + ldmneia sp!, {r4,pc} + cmp r2, #0x0 + bne _020C1F88 + bl FUN_020C1950 + ldmia sp!, {r4,pc} +_020C1F88: + add r0, r4, #0x3c + mov r1, #0x0 + bl FUN_020C3E40 + mov r0, #0x1 + str r0, [r4, #0x4c] + ldmia sp!, {r4,pc} + .balign 4 +_020C1FA0: .word UNK_021D27CC + + ; NNS_SndCaptureSetReverbVolume + arm_func_start FUN_020C1FA4 +FUN_020C1FA4: ; 0x020C1FA4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, _020C1FEC ; =UNK_021D27CC + mov r12, r0 + ldr r0, [r3, #0x0] + mov r2, r1 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r3, #0x4] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + add r0, r3, #0x3c + mov r1, r12, lsl #0x8 + bl FUN_020C3E40 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C1FEC: .word UNK_021D27CC + + ; NNS_SndCaptureStartReverb + arm_func_start FUN_020C1FF0 +FUN_020C1FF0: ; 0x020C1FF0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x2c + mov r5, r0 + mov r0, #0x0 + mov r4, r1 + mov r7, r2 + mov r6, r3 + bl FUN_020C1F54 + ldr r0, _020C2098 ; =UNK_021D27CC + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x2c + movne r0, #0x0 + ldmneia sp!, {r4-r7,pc} + mov r1, r5 + mov r2, r4 + mov r0, #0x0 + bl MIi_CpuClear32 + mov r0, r5 + mov r1, r4 + bl DC_FlushRange + str r7, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r1, #0x1 + str r1, [sp, #0xc] + ldr r1, [sp, #0x40] + str r6, [sp, #0x10] + str r1, [sp, #0x14] + str r0, [sp, #0x18] + mov r1, #0x7f + str r1, [sp, #0x1c] + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r1, r5 + mov r3, r4, lsr #0x1 + add r2, r5, r4, lsr #0x1 + str r0, [sp, #0x28] + bl FUN_020C1A44 + add sp, sp, #0x2c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C2098: .word UNK_021D27CC + diff --git a/arm9/asm/NNS_SND_fader.s b/arm9/asm/NNS_SND_fader.s new file mode 100644 index 00000000..b36093a2 --- /dev/null +++ b/arm9/asm/NNS_SND_fader.s @@ -0,0 +1,68 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020C3DDC +FUN_020C3DDC: ; 0x020C3DDC + ldr r1, [r0, #0x8] + ldr r0, [r0, #0xc] + cmp r1, r0 + movge r0, #0x1 + movlt r0, #0x0 + bx lr + + ; _end + arm_func_start FUN_020C3DF4 +FUN_020C3DF4: ; 0x020C3DF4 + ldr r2, [r0, #0x8] + ldr r1, [r0, #0xc] + cmp r2, r1 + addlt r1, r2, #0x1 + strlt r1, [r0, #0x8] + bx lr + + ; _end + arm_func_start FUN_020C3E0C +FUN_020C3E0C: ; 0x020C3E0C + stmdb sp!, {r4,lr} + ldr r1, [r0, #0xc] + ldr r2, [r0, #0x8] + cmp r2, r1 + ldrge r0, [r0, #0x4] + ldmgeia sp!, {r4,pc} + ldr r4, [r0, #0x0] + ldr r0, [r0, #0x4] + sub r0, r0, r4 + mul r0, r2, r0 + bl _s32_div_f + add r0, r4, r0 + ldmia sp!, {r4,pc} + + ; _end + arm_func_start FUN_020C3E40 +FUN_020C3E40: ; 0x020C3E40 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_020C3E0C + str r0, [r6, #0x0] + str r5, [r6, #0x4] + str r4, [r6, #0xc] + mov r0, #0x0 + str r0, [r6, #0x8] + ldmia sp!, {r4-r6,pc} + + ; _end + arm_func_start FUN_020C3E6C +FUN_020C3E6C: ; 0x020C3E6C + mov r2, #0x0 + str r2, [r0, #0x4] + ldr r1, [r0, #0x4] + str r1, [r0, #0x0] + str r2, [r0, #0xc] + ldr r1, [r0, #0xc] + str r1, [r0, #0x8] + bx lr diff --git a/arm9/asm/NNS_SND_heap.s b/arm9/asm/NNS_SND_heap.s new file mode 100644 index 00000000..5d2efe32 --- /dev/null +++ b/arm9/asm/NNS_SND_heap.s @@ -0,0 +1,293 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020C2774 +FUN_020C2774: ; 0x020C2774 + stmdb sp!, {r4,lr} + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + ; _end + arm_func_start FUN_020C2794 +FUN_020C2794: ; 0x020C2794 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x0] + mov r1, #0x14 + mov r2, #0x4 + bl FUN_020AE638 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + bl FUN_020C2818 + mov r1, r4 + add r0, r5, #0x4 + bl FUN_020ADBE8 + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + ; _end + arm_func_start FUN_020C27DC +FUN_020C27DC: ; 0x020C27DC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + add r0, r5, #0x4 + mov r1, #0xc + bl FUN_020ADC74 + mov r0, r5 + str r4, [r5, #0x0] + bl FUN_020C2794 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + ; InitHeapSection + arm_func_start FUN_020C2818 +FUN_020C2818: ; 0x020C2818 + ldr ip, _020C2824 ; =FUN_020ADC74 + mov r1, #0x0 + bx r12 + .balign 4 +_020C2824: .word FUN_020ADC74 + + ; _end + arm_func_start FUN_020C2828 +FUN_020C2828: ; 0x020C2828 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r7, #0x0 + movs r9, r1 + mov r10, r0 + mov r6, r7 + bne _020C2850 + bl FUN_020C29C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020C2850: + ldrh r0, [r10, #0xc] + cmp r9, r0 + bge _020C28D8 + mov r11, r7 + add r5, r10, #0x4 + mov r4, #0x1 +_020C2868: + mov r0, r5 + mov r1, r11 + bl FUN_020ADA84 + mov r1, r7 + mov r8, r0 + bl FUN_020ADA84 + movs r7, r0 + beq _020C28C0 +_020C2888: + ldr r12, [r7, #0xc] + cmp r12, #0x0 + beq _020C28AC + ldr r1, [r7, #0x8] + ldr r2, [r7, #0x10] + ldr r3, [r7, #0x14] + add r0, r7, #0x20 + blx r12 + mov r6, r4 +_020C28AC: + mov r0, r8 + mov r1, r7 + bl FUN_020ADA84 + movs r7, r0 + bne _020C2888 +_020C28C0: + mov r0, r5 + mov r1, r8 + bl FUN_020ADAB0 + ldrh r0, [r10, #0xc] + cmp r9, r0 + blt _020C2868 +_020C28D8: + ldr r0, [r10, #0x0] + mov r1, r9 + bl FUN_020AE554 + cmp r6, #0x0 + beq _020C28F0 + bl FUN_020C2774 +_020C28F0: + ldrh r1, [r10, #0xc] + ldr r0, [r10, #0x0] + bl FUN_020AE5B0 + mov r0, r10 + bl FUN_020C2794 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + ; _end + arm_func_start FUN_020C290C +FUN_020C290C: ; 0x020C290C + stmdb sp!, {r4,lr} + mov r4, r0 + ldrh r1, [r4, #0xc] + ldr r0, [r4, #0x0] + bl FUN_020AE5B0 + cmp r0, #0x0 + mvneq r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, r4 + bl FUN_020C2794 + cmp r0, #0x0 + ldrneh r0, [r4, #0xc] + subne r0, r0, #0x1 + ldmneia sp!, {r4,pc} + ldr r0, [r4, #0x0] + mov r1, #0x0 + bl FUN_020AE554 + mvn r0, #0x0 + ldmia sp!, {r4,pc} + + ; _end + arm_func_start SDATi_AllocAndInitChunk +SDATi_AllocAndInitChunk: ; 0x020C2958 + stmdb sp!, {r4-r8,lr} + mov r7, r1 + mov r8, r0 + add r0, r7, #0x1f + bic r1, r0, #0x1f + mov r6, r2 + ldr r0, [r8, #0x0] + add r1, r1, #0x20 + mov r2, #0x20 + mov r5, r3 + bl FUN_020AE638 // some allocator? + movs r4, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + add r0, r8, #0x4 + mov r1, #0x0 + bl FUN_020ADA84 + str r7, [r4, #0x8] + str r6, [r4, #0xc] + ldr r2, [sp, #0x18] + str r5, [r4, #0x10] + mov r1, r4 + str r2, [r4, #0x14] + bl FUN_020ADBE8 + add r0, r4, #0x20 + ldmia sp!, {r4-r8,pc} + + ; _end + arm_func_start FUN_020C29C0 +FUN_020C29C0: ; 0x020C29C0 + stmdb sp!, {r4-r10,lr} + mov r8, r0 + mov r5, #0x0 + mov r1, r5 + add r0, r8, #0x4 + bl FUN_020ADA84 + movs r7, r0 + beq _020C2A58 + add r9, r8, #0x4 + mov r10, #0x1 + mov r4, r5 +_020C29EC: + mov r0, r7 + mov r1, r4 + bl FUN_020ADA84 + movs r6, r0 + beq _020C2A38 +_020C2A00: + ldr r12, [r6, #0xc] + cmp r12, #0x0 + beq _020C2A24 + ldr r1, [r6, #0x8] + ldr r2, [r6, #0x10] + ldr r3, [r6, #0x14] + add r0, r6, #0x20 + blx r12 + mov r5, r10 +_020C2A24: + mov r0, r7 + mov r1, r6 + bl FUN_020ADA84 + movs r6, r0 + bne _020C2A00 +_020C2A38: + mov r0, r9 + mov r1, r7 + bl FUN_020ADAB0 + mov r0, r9 + mov r1, r4 + bl FUN_020ADA84 + movs r7, r0 + bne _020C29EC +_020C2A58: + ldr r0, [r8, #0x0] + mov r1, #0x3 + bl FUN_020AE600 + cmp r5, #0x0 + beq _020C2A70 + bl FUN_020C2774 +_020C2A70: + mov r0, r8 + bl FUN_020C2794 + ldmia sp!, {r4-r10,pc} + + ; _end + arm_func_start FUN_020C2A7C +FUN_020C2A7C: ; 0x020C2A7C + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020C29C0 + ldr r0, [r4, #0x0] + bl thunk_FUN_020adc8c_2 + ldmia sp!, {r4,pc} + + ; _end + arm_func_start FUN_020C2A94 +FUN_020C2A94: ; 0x020C2A94 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + add r2, r0, #0x3 + add r0, r0, r1 + bic r5, r2, #0x3 + cmp r5, r0 + addhi sp, sp, #0x4 + movhi r0, #0x0 + ldmhiia sp!, {r4-r5,pc} + sub r1, r0, r5 + cmp r1, #0x10 + addcc sp, sp, #0x4 + movcc r0, #0x0 + ldmccia sp!, {r4-r5,pc} + add r0, r5, #0x10 + sub r1, r1, #0x10 + mov r2, #0x0 + bl FUN_020AE684 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + mov r0, r5 + mov r1, r4 + bl FUN_020C27DC + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, r5 + ldmneia sp!, {r4-r5,pc} + mov r0, r4 + bl thunk_FUN_020adc8c_2 + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + diff --git a/arm9/asm/NNS_SND_main.s b/arm9/asm/NNS_SND_main.s new file mode 100644 index 00000000..94817a22 --- /dev/null +++ b/arm9/asm/NNS_SND_main.s @@ -0,0 +1,136 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + ; sCurDriverInfo + .global UNK_021D1C8C +UNK_021D1C8C: ; 0x021D1C8C + .space 0x4 + + ; sDriverInfoFirstFlag + .global UNK_021D1C90 +UNK_021D1C90: ; 0x021D1C90 + .space 0x4 + + ; initialized$8127 + .global UNK_021D1C94 +UNK_021D1C94: ; 0x021D1C94 + .space 0x4 + + ; sPreSleepCallback + .global UNK_021D1C98 +UNK_021D1C98: ; 0x021D1C98 + .space 0xc + + ; sPostSleepCallback + .global UNK_021D1CA4 +UNK_021D1CA4: ; 0x021D1CA4 + .space 0xc + + .section .text + + ; EndSleep + arm_func_start FUN_020C0130 +FUN_020C0130: ; 0x020C0130 + ldr ip, _020C0138 ; =FUN_020C187C + bx r12 + .balign 4 +_020C0138: .word FUN_020C187C + + ; _end + arm_func_start FUN_020C013C +FUN_020C013C: ; 0x020C013C + stmdb sp!, {r4,lr} + bl FUN_020C18F8 + mov r0, #0x0 + mov r1, r0 + mov r2, r0 + mov r3, r0 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + ; _end + arm_func_start FUN_020C0174 +FUN_020C0174: ; 0x020C0174 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + beq _020C0194 + mov r0, #0x40 + bl SND_SetMasterPan + add sp, sp, #0x4 + ldmia sp!, {pc} +_020C0194: + bl SND_ResetMasterPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; _end + arm_func_start FUN_020C01A0 +FUN_020C01A0: ; 0x020C01A0 + stmdb sp!, {r4,lr} + mov r4, #0x0 +_020C01A8: + mov r0, r4 + bl SND_RecvCommandReply + cmp r0, #0x0 + bne _020C01A8 + bl FUN_020C0BA0 + bl FUN_020C1D9C + bl FUN_020C3C88 + mov r0, #0x0 + bl SND_FlushCommand + ldmia sp!, {r4,pc} + + ; NNS_SndInit + arm_func_start SDAT_Init +SDAT_Init: ; 0x020C01D0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C0254 ; =UNK_021D1C94 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + mov r1, #0x1 + str r1, [r0, #0x0] + bl SND_Init + ldr ip, _020C0258 ; =FUN_020C013C + ldr r0, _020C025C ; =UNK_021D1C98 + mov r3, #0x0 + ldr r1, _020C0260 ; =UNK_021D1CA4 + ldr r2, _020C0264 ; =FUN_020C0130 + str r12, [r0, #0x0] + str r3, [r0, #0x4] + str r2, [r1, #0x0] + str r3, [r1, #0x4] + bl PM_PrependPreSleepCallback + ldr r0, _020C0260 ; =UNK_021D1CA4 + bl PM_AppendPostSleepCallback + bl FUN_020C0270 + bl FUN_020C1E38 + bl FUN_020C0D20 + ldr r1, _020C0268 ; =UNK_021D1C8C + mvn r3, #0x0 + ldr r0, _020C026C ; =UNK_021D1C90 + mov r2, #0x1 + strb r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C0254: .word UNK_021D1C94 +_020C0258: .word FUN_020C013C +_020C025C: .word UNK_021D1C98 +_020C0260: .word UNK_021D1CA4 +_020C0264: .word FUN_020C0130 +_020C0268: .word UNK_021D1C8C +_020C026C: .word UNK_021D1C90 + diff --git a/arm9/asm/NNS_SND_player.s b/arm9/asm/NNS_SND_player.s new file mode 100644 index 00000000..557afb1b --- /dev/null +++ b/arm9/asm/NNS_SND_player.s @@ -0,0 +1,940 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + ; sFreeList + .global UNK_021D1DFC +UNK_021D1DFC: ; 0x021D1DFC + .space 0xc + + ; sPrioList + .global UNK_021D1E08 +UNK_021D1E08: ; 0x021D1E08 + .space 0xc + + ; sSeqPlayer + .global UNK_021D1E14 +UNK_021D1E14: ; 0x021D1E14 + .space 0x440 + + ; sPlayer + .global UNK_021D2254 +UNK_021D2254: ; 0x021D2254 + .space 0x8 + + ; sPlayer + 0x8 + .global UNK_021D225C +UNK_021D225C: ; 0x021D225C + .space 0x10 + + ; sPlayer + 0x18 + .global UNK_021D226C +UNK_021D226C: ; 0x021D226C + .space 0x4 + + ; sPlayer + 0x1C + .global UNK_021D2270 +UNK_021D2270: ; 0x021D2270 + .space 0x4 + + ; sPlayer + 0x20 + .global UNK_021D2274 +UNK_021D2274: ; 0x021D2274 + .space 0x460 + + .section .text + + ; SetPlayerPriority + arm_func_start FUN_020C06CC +FUN_020C06CC: ; 0x020C06CC + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r4, [r6, #0x4] + mov r5, r1 + cmp r4, #0x0 + beq _020C06F8 + mov r0, r4 + mov r1, r6 + bl FUN_020ADAB0 + mov r0, #0x0 + str r0, [r6, #0x4] +_020C06F8: + ldr r0, _020C0728 ; =UNK_021D1E08 + mov r1, r6 + bl FUN_020ADAB0 + strb r5, [r6, #0x3d] + cmp r4, #0x0 + beq _020C071C + mov r0, r4 + mov r1, r6 + bl FUN_020C0910 +_020C071C: + mov r0, r6 + bl FUN_020C08B4 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0728: .word UNK_021D1E08 + + ; PlayerHeapDisposeCallback + arm_func_start FUN_020C072C +FUN_020C072C: ; 0x020C072C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + bl FUN_020C2A7C + ldr r1, [r4, #0xc] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x8] + ldmneia sp!, {r4,pc} + ldr r1, [r4, #0x10] + ldr r2, _020C0778 ; =UNK_021D2254 + mov r0, #0x24 + mla r0, r1, r0, r2 + mov r1, r4 + add r0, r0, #0xc + bl FUN_020ADAB0 + ldmia sp!, {r4,pc} + .balign 4 +_020C0778: .word UNK_021D2254 + + ; ShutdownPlayer + arm_func_start FUN_020C077C +FUN_020C077C: ; 0x020C077C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r1, [r4, #0x0] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x0] + strne r0, [r4, #0x0] + ldr r5, [r4, #0x4] + mov r1, r4 + mov r0, r5 + bl FUN_020ADAB0 + mov r0, #0x0 + str r0, [r4, #0x4] + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _020C07D8 + add r0, r5, #0xc + bl FUN_020ADBE8 + ldr r0, [r4, #0x8] + mov r1, #0x0 + str r1, [r0, #0xc] + str r1, [r4, #0x8] +_020C07D8: + ldr r0, _020C0800 ; =UNK_021D1E08 + mov r1, r4 + bl FUN_020ADAB0 + ldr r0, _020C0804 ; =UNK_021D1DFC + mov r1, r4 + bl FUN_020ADBE8 + mov r0, #0x0 + strb r0, [r4, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0800: .word UNK_021D1E08 +_020C0804: .word UNK_021D1DFC + + ; AllocSeqPlayer + arm_func_start FUN_020C0808 +FUN_020C0808: ; 0x020C0808 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, _020C0874 ; =UNK_021D1DFC + mov r1, #0x0 + bl FUN_020ADA98 + movs r4, r0 + bne _020C0850 + ldr r0, _020C0878 ; =UNK_021D1E08 + mov r1, #0x0 + bl FUN_020ADA98 + mov r4, r0 + ldrb r1, [r4, #0x3d] + cmp r5, r1 + addlt sp, sp, #0x4 + movlt r0, #0x0 + ldmltia sp!, {r4-r5,pc} + bl FUN_020C087C +_020C0850: + ldr r0, _020C0874 ; =UNK_021D1DFC + mov r1, r4 + bl FUN_020ADAB0 + mov r0, r4 + strb r5, [r4, #0x3d] + bl FUN_020C08B4 + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0874: .word UNK_021D1DFC +_020C0878: .word UNK_021D1E08 + + ; ForceStopSeq + arm_func_start FUN_020C087C +FUN_020C087C: ; 0x020C087C + stmdb sp!, {r4,lr} + mov r4, r0 + ldrb r0, [r4, #0x2c] + cmp r0, #0x2 + bne _020C089C + ldrb r0, [r4, #0x3c] + ldr r1, _020C08B0 ; =0xFFFFFD2D + bl SND_SetPlayerVolume +_020C089C: + ldrb r0, [r4, #0x3c] + bl SND_StopSeq + mov r0, r4 + bl FUN_020C077C + ldmia sp!, {r4,pc} + .balign 4 +_020C08B0: .word 0xFFFFFD2D + + ; InsertPrioList + arm_func_start FUN_020C08B4 +FUN_020C08B4: ; 0x020C08B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, _020C090C ; =UNK_021D1E08 + mov r1, #0x0 + bl FUN_020ADA98 + movs r1, r0 + beq _020C08F8 + ldr r4, _020C090C ; =UNK_021D1E08 +_020C08D8: + ldrb r2, [r5, #0x3d] + ldrb r0, [r1, #0x3d] + cmp r2, r0 + blo _020C08F8 + mov r0, r4 + bl FUN_020ADA98 + movs r1, r0 + bne _020C08D8 +_020C08F8: + ldr r0, _020C090C ; =UNK_021D1E08 + mov r2, r5 + bl FUN_020ADB18 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C090C: .word UNK_021D1E08 + + ; _end + arm_func_start FUN_020C0910 +FUN_020C0910: ; 0x020C0910 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, #0x0 + mov r5, r0 + bl FUN_020ADA98 + movs r1, r0 + beq _020C0950 +_020C0930: + ldrb r2, [r4, #0x3d] + ldrb r0, [r1, #0x3d] + cmp r2, r0 + blo _020C0950 + mov r0, r5 + bl FUN_020ADA98 + movs r1, r0 + bne _020C0930 +_020C0950: + mov r0, r5 + mov r2, r4 + bl FUN_020ADB18 + str r5, [r4, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + ; _end + arm_func_start FUN_020C0968 +FUN_020C0968: ; 0x020C0968 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, #0x0 + strb r0, [r4, #0x2e] + strb r0, [r4, #0x2d] + strb r0, [r4, #0x2f] + strh r0, [r4, #0x34] + strh r0, [r4, #0x3e] + mov r1, #0x7f + strb r1, [r4, #0x40] + add r0, r4, #0x1c + strb r1, [r4, #0x41] + bl FUN_020C3E6C + add r0, r4, #0x1c + mov r1, #0x7f00 + mov r2, #0x1 + bl FUN_020C3E40 + ldmia sp!, {r4,pc} + + ; NNSi_SndPlayerAllocHeap + arm_func_start FUN_020C09B0 +FUN_020C09B0: ; 0x020C09B0 + stmdb sp!, {r4-r6,lr} + ldr r3, _020C0A00 ; =UNK_021D2254 + mov r2, #0x24 + mla r5, r0, r2, r3 + mov r6, r1 + add r0, r5, #0xc + mov r1, #0x0 + bl FUN_020ADA98 + movs r4, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r1, r4 + add r0, r5, #0xc + bl FUN_020ADAB0 + str r6, [r4, #0xc] + str r4, [r6, #0x8] + ldr r0, [r4, #0x8] + bl FUN_020C29C0 + ldr r0, [r4, #0x8] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0A00: .word UNK_021D2254 + + ; _end + arm_func_start FUN_020C0A04 +FUN_020C0A04: ; 0x020C0A04 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r5, r0 + mov r4, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldrb r0, [r5, #0x2e] + cmp r4, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldrb r0, [r5, #0x3c] + bl SND_PauseSeq + strb r4, [r5, #0x2e] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + ; _end + arm_func_start FUN_020C0A40 +FUN_020C0A40: ; 0x020C0A40 + stmdb sp!, {r4,lr} + movs r4, r0 + mov r2, r1 + ldmeqia sp!, {r4,pc} + ldrb r1, [r4, #0x2c] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} + cmp r2, #0x0 + bne _020C0A6C + bl FUN_020C087C + ldmia sp!, {r4,pc} +_020C0A6C: + add r0, r4, #0x1c + mov r1, #0x0 + bl FUN_020C3E40 + mov r0, r4 + mov r1, #0x0 + bl FUN_020C06CC + mov r0, #0x2 + strb r0, [r4, #0x2c] + ldmia sp!, {r4,pc} + + ; NNSi_SndPlayerStartSeq + arm_func_start FUN_020C0A90 +FUN_020C0A90: ; 0x020C0A90 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrb r0, [r5, #0x3c] + ldr r4, [r5, #0x4] + bl SND_PrepareSeq + ldr r2, [r4, #0x1c] + cmp r2, #0x0 + beq _020C0AC0 + ldrb r0, [r5, #0x3c] + ldr r1, _020C0AE4 ; =0x0000FFFF + bl SND_SetTrackAllocatableChannel +_020C0AC0: + mov r0, r5 + bl FUN_020C0968 + bl SND_GetCurrentCommandTag + str r0, [r5, #0x30] + mov r0, #0x1 + strb r0, [r5, #0x2f] + strb r0, [r5, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0AE4: .word 0x0000FFFF + + ; NNSi_SndPlayerFreeSeqPlayer + arm_func_start thunk_FUN_020c077c +thunk_FUN_020c077c: ; 0x020C0AE8 + ldr ip, _020C0AF0 ; =FUN_020C077C + bx r12 + .balign 4 +_020C0AF0: .word FUN_020C077C + + ; NNSi_SndPlayerAllocSeqPlayer + arm_func_start FUN_020C0AF4 +FUN_020C0AF4: ; 0x020C0AF4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020C0B9C ; =UNK_021D2254 + mov r3, #0x24 + mov r4, r0 + ldr r5, [r4, #0x0] + mla r6, r1, r3, r12 + mov r7, r2 + cmp r5, #0x0 + beq _020C0B20 + bl FUN_020C0F68 +_020C0B20: + ldrh r1, [r6, #0x8] + ldr r0, [r6, #0x18] + cmp r1, r0 + blo _020C0B64 + mov r0, r6 + mov r1, #0x0 + bl FUN_020ADA98 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + ldrb r1, [r0, #0x3d] + cmp r7, r1 + addlt sp, sp, #0x4 + movlt r0, #0x0 + ldmltia sp!, {r4-r7,pc} + bl FUN_020C087C +_020C0B64: + mov r0, r7 + bl FUN_020C0808 + movs r5, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + mov r0, r6 + mov r1, r5 + bl FUN_020C0910 + str r4, [r5, #0x0] + mov r0, r5 + str r5, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C0B9C: .word UNK_021D2254 + + ; NNSi_SndPlayerMain + arm_func_start FUN_020C0BA0 +FUN_020C0BA0: ; 0x020C0BA0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + bl SND_GetPlayerStatus + str r0, [sp, #0x0] + ldr r0, _020C0D14 ; =UNK_021D1E08 + mov r1, #0x0 + bl FUN_020ADA98 + movs r10, r0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r11,pc} + mov r0, #0x8000 + rsb r0, r0, #0x0 + ldr r4, _020C0D18 ; =SNDi_DecibelTable + str r0, [sp, #0x4] + mov r5, #0x1 + mov r11, #0x0 +_020C0BE0: + ldr r0, _020C0D14 ; =UNK_021D1E08 + mov r1, r10 + bl FUN_020ADA98 + ldrb r1, [r10, #0x2d] + mov r9, r0 + cmp r1, #0x0 + bne _020C0C0C + ldr r0, [r10, #0x30] + bl SND_IsFinishedCommandTag + cmp r0, #0x0 + strneb r5, [r10, #0x2d] +_020C0C0C: + ldrb r0, [r10, #0x2d] + cmp r0, #0x0 + beq _020C0C38 + ldrb r0, [r10, #0x3c] + mov r1, r5, lsl r0 + ldr r0, [sp, #0x0] + ands r0, r0, r1 + bne _020C0C38 + mov r0, r10 + bl FUN_020C077C + b _020C0D00 +_020C0C38: + add r0, r10, #0x1c + bl FUN_020C3DF4 + ldr r0, [r10, #0x4] + ldrb r2, [r10, #0x41] + ldrb r1, [r10, #0x40] + ldrb r0, [r0, #0x20] + mov r3, r2, lsl #0x1 + mov r2, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + add r0, r10, #0x1c + ldrsh r8, [r4, r3] + ldrsh r7, [r4, r2] + ldrsh r6, [r4, r1] + bl FUN_020C3E0C + mov r0, r0, asr #0x8 + mov r2, r0, lsl #0x1 + add r1, r7, r8 + mov r0, #0x8000 + ldrsh r2, [r4, r2] + add r1, r6, r1 + rsb r0, r0, #0x0 + add r6, r2, r1 + cmp r6, r0 + ldrlt r6, [sp, #0x4] + blt _020C0CA8 + ldr r0, _020C0D1C ; =0x00007FFF + cmp r6, r0 + movgt r6, r0 +_020C0CA8: + ldrsh r0, [r10, #0x3e] + cmp r6, r0 + beq _020C0CC4 + ldrb r0, [r10, #0x3c] + mov r1, r6 + bl SND_SetPlayerVolume + strh r6, [r10, #0x3e] +_020C0CC4: + ldrb r0, [r10, #0x2c] + cmp r0, #0x2 + bne _020C0CE8 + add r0, r10, #0x1c + bl FUN_020C3DDC + cmp r0, #0x0 + beq _020C0CE8 + mov r0, r10 + bl FUN_020C087C +_020C0CE8: + ldrb r0, [r10, #0x2f] + cmp r0, #0x0 + beq _020C0D00 + ldrb r0, [r10, #0x3c] + bl SND_StartPreparedSeq + strb r11, [r10, #0x2f] +_020C0D00: + mov r10, r9 + cmp r9, #0x0 + bne _020C0BE0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C0D14: .word UNK_021D1E08 +_020C0D18: .word SNDi_DecibelTable +_020C0D1C: .word 0x00007FFF + + ; NNSi_SndPlayerInit + arm_func_start FUN_020C0D20 +FUN_020C0D20: ; 0x020C0D20 + stmdb sp!, {r4-r10,lr} + ldr r0, _020C0DC4 ; =UNK_021D1E08 + mov r1, #0x14 + bl FUN_020ADC74 + ldr r0, _020C0DC8 ; =UNK_021D1DFC + mov r1, #0x14 + bl FUN_020ADC74 + ldr r6, _020C0DCC ; =UNK_021D1E14 + mov r7, #0x0 + ldr r4, _020C0DC8 ; =UNK_021D1DFC + mov r5, r7 +_020C0D4C: + strb r5, [r6, #0x2c] + mov r0, r4 + mov r1, r6 + strb r7, [r6, #0x3c] + bl FUN_020ADBE8 + add r7, r7, #0x1 + cmp r7, #0x10 + add r6, r6, #0x44 + blt _020C0D4C + ldr sl, _020C0DD0 ; =UNK_021D2254 + mov r9, #0x0 + mov r7, r9 + mov r4, r9 + mov r8, #0xc + mov r6, #0x7f + mov r5, #0x1 +_020C0D8C: + mov r0, r10 + mov r1, r8 + bl FUN_020ADC74 + mov r1, r7 + add r0, r10, #0xc + bl FUN_020ADC74 + strb r6, [r10, #0x20] + str r5, [r10, #0x18] + add r9, r9, #0x1 + str r4, [r10, #0x1c] + cmp r9, #0x20 + add r10, r10, #0x24 + blt _020C0D8C + ldmia sp!, {r4-r10,pc} + .balign 4 +_020C0DC4: .word UNK_021D1E08 +_020C0DC8: .word UNK_021D1DFC +_020C0DCC: .word UNK_021D1E14 +_020C0DD0: .word UNK_021D2254 + + ; _end + arm_func_start FUN_020C0DD4 +FUN_020C0DD4: ; 0x020C0DD4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {pc} + ldrb r0, [r1, #0x2d] + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {pc} + ldrb r0, [r1, #0x3c] + bl SND_GetPlayerTickCounter + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; _end + arm_func_start FUN_020C0E14 +FUN_020C0E14: ; 0x020C0E14 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + mvneq r0, #0x0 + bxeq lr + ldrh r0, [r1, #0x34] + cmp r0, #0x1 + mvnne r0, #0x0 + ldreqh r0, [r1, #0x38] + bx lr + + ; _end + arm_func_start FUN_020C0E38 +FUN_020C0E38: ; 0x020C0E38 + ldr r12, [r0, #0x0] + cmp r12, #0x0 + bxeq lr + mov r3, #0x2 + strh r3, [r12, #0x34] + ldr r3, [r0, #0x0] + strh r1, [r3, #0x38] + ldr r0, [r0, #0x0] + strh r2, [r0, #0x3a] + bx lr + + ; _end + arm_func_start FUN_020C0E60 +FUN_020C0E60: ; 0x020C0E60 + ldr r3, [r0, #0x0] + cmp r3, #0x0 + movne r2, #0x1 + strneh r2, [r3, #0x34] + ldrne r0, [r0, #0x0] + strneh r1, [r0, #0x38] + bx lr + + ; _end + arm_func_start FUN_020C0E7C +FUN_020C0E7C: ; 0x020C0E7C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetTrackPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; _end + arm_func_start FUN_020C0EA4 +FUN_020C0EA4: ; 0x020C0EA4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetTrackPitch + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; _end + arm_func_start FUN_020C0ECC +FUN_020C0ECC: ; 0x020C0ECC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetPlayerChannelPriority + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; _end + arm_func_start FUN_020C0EF4 +FUN_020C0EF4: ; 0x020C0EF4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x0] + cmp r3, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r3, #0x2c] + cmp r0, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + add r0, r3, #0x1c + mov r1, r1, lsl #0x8 + bl FUN_020C3E40 + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; _end + arm_func_start FUN_020C0F30 +FUN_020C0F30: ; 0x020C0F30 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + strneb r1, [r0, #0x40] + bx lr + + ; _end + arm_func_start FUN_020C0F40 +FUN_020C0F40: ; 0x020C0F40 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + strneb r1, [r0, #0x41] + bx lr + + ; NNS_SndPlayerCountPlayingSeqByPlayerNo + arm_func_start FUN_020C0F50 +FUN_020C0F50: ; 0x020C0F50 + mov r1, #0x24 + mul r1, r0, r1 + ldr r0, _020C0F64 ; =UNK_021D225C + ldrh r0, [r0, r1] + bx lr + .balign 4 +_020C0F64: .word UNK_021D225C + + ; _end + arm_func_start FUN_020C0F68 +FUN_020C0F68: ; 0x020C0F68 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + movne r1, #0x0 + strne r1, [r2, #0x0] + strne r1, [r0, #0x0] + bx lr + + ; _end + arm_func_start FUN_020C0F80 +FUN_020C0F80: ; 0x020C0F80 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + + ; NNS_SndPlayerPause + arm_func_start FUN_020C0F8C +FUN_020C0F8C: ; 0x020C0F8C + ldr ip, _020C0F98 ; =FUN_020C0A04 + ldr r0, [r0, #0x0] + bx r12 + .balign 4 +_020C0F98: .word FUN_020C0A04 + + ; NNS_SndPlayerStopSeqAll + arm_func_start FUN_020C0F9C +FUN_020C0F9C: ; 0x020C0F9C + stmdb sp!, {r4-r6,lr} + ldr r4, _020C0FD8 ; =UNK_021D1E14 + mov r6, r0 + mov r5, #0x0 +_020C0FAC: + ldrb r0, [r4, #0x2c] + cmp r0, #0x0 + beq _020C0FC4 + mov r0, r4 + mov r1, r6 + bl FUN_020C0A40 +_020C0FC4: + add r5, r5, #0x1 + cmp r5, #0x10 + add r4, r4, #0x44 + blt _020C0FAC + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0FD8: .word UNK_021D1E14 + + ; NNS_SndPlayerStopSeqBySeqNo + arm_func_start FUN_020C0FDC +FUN_020C0FDC: ; 0x020C0FDC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r4, _020C103C ; =UNK_021D1E14 + mov r7, r0 + mov r6, r1 + mov r5, #0x0 +_020C0FF4: + ldrb r0, [r4, #0x2c] + cmp r0, #0x0 + beq _020C1024 + ldrh r0, [r4, #0x34] + cmp r0, #0x1 + bne _020C1024 + ldrh r0, [r4, #0x38] + cmp r0, r7 + bne _020C1024 + mov r0, r4 + mov r1, r6 + bl FUN_020C0A40 +_020C1024: + add r5, r5, #0x1 + cmp r5, #0x10 + add r4, r4, #0x44 + blt _020C0FF4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C103C: .word UNK_021D1E14 + + ; NNS_SndPlayerStopSeqByPlayerNo + arm_func_start FUN_020C1040 +FUN_020C1040: ; 0x020C1040 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r3, _020C109C ; =UNK_021D2254 + mov r2, #0x24 + mla r4, r0, r2, r3 + ldr r5, _020C10A0 ; =UNK_021D1E14 + mov r7, r1 + mov r6, #0x0 +_020C1060: + ldrb r0, [r5, #0x2c] + cmp r0, #0x0 + beq _020C1084 + ldr r0, [r5, #0x4] + cmp r0, r4 + bne _020C1084 + mov r0, r5 + mov r1, r7 + bl FUN_020C0A40 +_020C1084: + add r6, r6, #0x1 + cmp r6, #0x10 + add r5, r5, #0x44 + blt _020C1060 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C109C: .word UNK_021D2254 +_020C10A0: .word UNK_021D1E14 + + ; NNS_SndPlayerStopSeq + arm_func_start FUN_020C10A4 +FUN_020C10A4: ; 0x020C10A4 + ldr ip, _020C10B0 ; =FUN_020C0A40 + ldr r0, [r0, #0x0] + bx r12 + .balign 4 +_020C10B0: .word FUN_020C0A40 + + ; NNS_SndPlayerCreateHeap + arm_func_start FUN_020C10B4 +FUN_020C10B4: ; 0x020C10B4 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r5, r2 + mov r6, r0 + mov r0, r1 + mov r3, #0x0 + ldr r2, _020C1140 ; =FUN_020C072C + add r1, r5, #0x14 + str r3, [sp, #0x0] + bl SDATi_AllocAndInitChunk + movs r4, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r2, #0x0 + str r2, [r4, #0xc] + str r6, [r4, #0x10] + mov r1, r5 + add r0, r4, #0x14 + str r2, [r4, #0x8] + bl FUN_020C2A94 + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r2, _020C1144 ; =UNK_021D2254 + mov r1, #0x24 + mla r2, r6, r1, r2 + str r0, [r4, #0x8] + mov r1, r4 + add r0, r2, #0xc + bl FUN_020ADBE8 + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C1140: .word FUN_020C072C +_020C1144: .word UNK_021D2254 + + ; NNS_SndPlayerSetAllocatableChannel + arm_func_start FUN_020C1148 +FUN_020C1148: ; 0x020C1148 + mov r2, #0x24 + mul r2, r0, r2 + ldr r0, _020C115C ; =UNK_021D2270 + str r1, [r0, r2] + bx lr + .balign 4 +_020C115C: .word UNK_021D2270 + + ; NNS_SndPlayerSetPlayableSeqCount + arm_func_start FUN_020C1160 +FUN_020C1160: ; 0x020C1160 + mov r2, #0x24 + mul r2, r0, r2 + mov r0, r1, lsl #0x10 + ldr r1, _020C117C ; =UNK_021D226C + mov r0, r0, lsr #0x10 + str r0, [r1, r2] + bx lr + .balign 4 +_020C117C: .word UNK_021D226C + + ; NNS_SndPlayerSetPlayerVolume + arm_func_start FUN_020C1180 +FUN_020C1180: ; 0x020C1180 + mov r2, #0x24 + mul r2, r0, r2 + ldr r0, _020C1194 ; =UNK_021D2274 + strb r1, [r0, r2] + bx lr + .balign 4 +_020C1194: .word UNK_021D2274 + diff --git a/arm9/asm/NNS_SND_resource_mgr.s b/arm9/asm/NNS_SND_resource_mgr.s new file mode 100644 index 00000000..482b8e81 --- /dev/null +++ b/arm9/asm/NNS_SND_resource_mgr.s @@ -0,0 +1,140 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + ; sCaptureLock + .global UNK_021D1CB0 +UNK_021D1CB0: ; 0x021D1CB0 + .space 0x4 + + ; sAlarmLock + .global UNK_021D1CB4 +UNK_021D1CB4: ; 0x021D1CB4 + .space 0x4 + + ; sChannelLock + .global UNK_021D1CB8 +UNK_021D1CB8: ; 0x021D1CB8 + .space 0x4 + + .section .text + + ; NNSi_SndInitResourceMgr + arm_func_start FUN_020C0270 +FUN_020C0270: ; 0x020C0270 + ldr r2, _020C0290 ; =UNK_021D1CB8 + mov r3, #0x0 + ldr r1, _020C0294 ; =UNK_021D1CB0 + ldr r0, _020C0298 ; =UNK_021D1CB4 + str r3, [r2, #0x0] + str r3, [r1, #0x0] + str r3, [r0, #0x0] + bx lr + .balign 4 +_020C0290: .word UNK_021D1CB8 +_020C0294: .word UNK_021D1CB0 +_020C0298: .word UNK_021D1CB4 + + ; NNS_SndFreeAlarm + arm_func_start FUN_020C029C +FUN_020C029C: ; 0x020C029C + ldr r1, _020C02B8 ; =UNK_021D1CB4 + mov r2, #0x1 + mvn r0, r2, lsl r0 + ldr r2, [r1, #0x0] + and r0, r2, r0 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020C02B8: .word UNK_021D1CB4 + + ; NNS_SndAllocAlarm + arm_func_start FUN_020C02BC +FUN_020C02BC: ; 0x020C02BC + ldr r0, _020C02FC ; =UNK_021D1CB4 + mov r3, #0x1 + ldr r2, [r0, #0x0] + mov r0, #0x0 +_020C02CC: + ands r1, r2, r3 + ldreq r1, _020C02FC ; =UNK_021D1CB4 + ldreq r2, [r1, #0x0] + orreq r2, r2, r3 + streq r2, [r1, #0x0] + bxeq lr + add r0, r0, #0x1 + cmp r0, #0x8 + mov r3, r3, lsl #0x1 + blt _020C02CC + mvn r0, #0x0 + bx lr + .balign 4 +_020C02FC: .word UNK_021D1CB4 + + ; NNS_SndUnlockCapture + arm_func_start FUN_020C0300 +FUN_020C0300: ; 0x020C0300 + ldr r1, _020C0318 ; =UNK_021D1CB0 + mvn r0, r0 + ldr r2, [r1, #0x0] + and r0, r2, r0 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020C0318: .word UNK_021D1CB0 + + ; NNS_SndLockCapture + arm_func_start FUN_020C031C +FUN_020C031C: ; 0x020C031C + ldr r1, _020C033C ; =UNK_021D1CB0 + ldr r2, [r1, #0x0] + ands r3, r0, r2 + movne r0, #0x0 + orreq r0, r2, r0 + streq r0, [r1, #0x0] + moveq r0, #0x1 + bx lr + .balign 4 +_020C033C: .word UNK_021D1CB0 + + ; NNS_SndUnlockChannel + arm_func_start FUN_020C0340 +FUN_020C0340: ; 0x020C0340 + stmdb sp!, {r4,lr} + movs r4, r0 + ldmeqia sp!, {r4,pc} + mov r1, #0x0 + bl SND_UnlockChannel + ldr r0, _020C036C ; =UNK_021D1CB8 + mvn r1, r4 + ldr r2, [r0, #0x0] + and r1, r2, r1 + str r1, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020C036C: .word UNK_021D1CB8 + + ; NNS_SndLockChannel + arm_func_start FUN_020C0370 +FUN_020C0370: ; 0x020C0370 + stmdb sp!, {r4,lr} + movs r4, r0 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} + ldr r1, _020C03B4 ; =UNK_021D1CB8 + ldr r1, [r1, #0x0] + ands r1, r4, r1 + movne r0, #0x0 + ldmneia sp!, {r4,pc} + mov r1, #0x0 + bl SND_LockChannel + ldr r1, _020C03B4 ; =UNK_021D1CB8 + mov r0, #0x1 + ldr r2, [r1, #0x0] + orr r2, r2, r4 + str r2, [r1, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020C03B4: .word UNK_021D1CB8 + diff --git a/arm9/asm/NNS_SND_seqdata.s b/arm9/asm/NNS_SND_seqdata.s new file mode 100644 index 00000000..86a4217c --- /dev/null +++ b/arm9/asm/NNS_SND_seqdata.s @@ -0,0 +1,25 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020C3D9C +FUN_020C3D9C: ; 0x020C3D9C + cmp r1, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r2, [r0, #0x1c] + cmp r1, r2 + movcs r0, #0x0 + bxcs lr + mov r2, #0xc + mul r2, r1, r2 + add r3, r0, #0x20 + ldr r1, [r3, r2] + mvn r0, #0x0 + cmp r1, r0 + add r0, r3, r2 + moveq r0, #0x0 + bx lr + diff --git a/arm9/asm/NNS_SND_sndarc.s b/arm9/asm/NNS_SND_sndarc.s new file mode 100644 index 00000000..1f781631 --- /dev/null +++ b/arm9/asm/NNS_SND_sndarc.s @@ -0,0 +1,546 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + ; sCurrent + .global UNK_021D28C0 +UNK_021D28C0: ; 0x021D28C0 + .space 0x4 + + .section .text + + ; _end + arm_func_start SDATi_SymbDtor +SDATi_SymbDtor: ; 0x020C209C + mov r0, #0x0 + str r0, [r2, #0x88] + bx lr + + ; _end + arm_func_start SDATi_FatDtor +SDATi_FatDtor: ; 0x020C20A8 + mov r0, #0x0 + str r0, [r2, #0x84] + bx lr + + ; _end + arm_func_start SDATi_InfoDtor +SDATi_InfoDtor: ; 0x020C20B4 + mov r0, #0x0 + str r0, [r2, #0x8c] + bx lr + + ; NNS_SndArcSetFileAddress + arm_func_start FUN_020C20C0 +FUN_020C20C0: ; 0x020C20C0 + ldr r2, _020C20D8 ; =UNK_021D28C0 + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x84] + add r0, r2, r0, lsl #0x4 + str r1, [r0, #0x14] + bx lr + .balign 4 +_020C20D8: .word UNK_021D28C0 + + ; NNS_SndArcGetFileAddress + arm_func_start FUN_020C20DC +FUN_020C20DC: ; 0x020C20DC + ldr r1, _020C2100 ; =UNK_021D28C0 + ldr r1, [r1, #0x0] + ldr r2, [r1, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + movcs r0, #0x0 + addcc r0, r2, r0, lsl #0x4 + ldrcc r0, [r0, #0x14] + bx lr + .balign 4 +_020C2100: .word UNK_021D28C0 + + ; NNS_SndArcReadFile + arm_func_start FUN_020C2104 +FUN_020C2104: ; 0x020C2104 + stmdb sp!, {r4-r6,lr} + ldr r4, _020C2178 ; =UNK_021D28C0 + mov r5, r2 + ldr r4, [r4, #0x0] + mov r6, r1 + ldr r2, [r4, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + mvncs r0, #0x0 + ldmcsia sp!, {r4-r6,pc} + add r1, r2, #0xc + add r1, r1, r0, lsl #0x4 + ldr r0, [r1, #0x4] + ldr r1, [r1, #0x0] + sub r0, r0, r3 + cmp r5, r0 + movhi r5, r0 + add r0, r4, #0x34 + add r1, r1, r3 + mov r2, #0x0 + bl FS_SeekFile + cmp r0, #0x0 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r1, r6 + mov r2, r5 + add r0, r4, #0x34 + bl FS_ReadFile + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C2178: .word UNK_021D28C0 + + ; NNS_SndArcGetFileSize + arm_func_start FUN_020C217C +FUN_020C217C: ; 0x020C217C + ldr r1, _020C21A0 ; =UNK_021D28C0 + ldr r1, [r1, #0x0] + ldr r2, [r1, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + movcs r0, #0x0 + addcc r0, r2, r0, lsl #0x4 + ldrcc r0, [r0, #0x10] + bx lr + .balign 4 +_020C21A0: .word UNK_021D28C0 + + ; NNS_SndArcGetGroupInfo + arm_func_start FUN_020C21A4 +FUN_020C21A4: ; 0x020C21A4 + ldr r1, _020C2204 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x1c] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2204: .word UNK_021D28C0 + + ; NNS_SndArcGetPlayerInfo + arm_func_start FUN_020C2208 +FUN_020C2208: ; 0x020C2208 + ldr r1, _020C2268 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x18] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2268: .word UNK_021D28C0 + + ; NNS_SndArcGetWaveArcInfo + arm_func_start FUN_020C226C +FUN_020C226C: ; 0x020C226C + ldr r1, _020C22CC ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x14] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C22CC: .word UNK_021D28C0 + + ; NNS_SndArcGetBankInfo + arm_func_start FUN_020C22D0 +FUN_020C22D0: ; 0x020C22D0 + ldr r1, _020C2330 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x10] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2330: .word UNK_021D28C0 + + ; NNS_SndArcGetSeqArcInfo + arm_func_start FUN_020C2334 +FUN_020C2334: ; 0x020C2334 + ldr r1, _020C2394 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0xc] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2394: .word UNK_021D28C0 + + ; NNS_SndArcGetSeqInfo + arm_func_start FUN_020C2398 +FUN_020C2398: ; 0x020C2398 + ldr r1, _020C23F8 ; =UNK_021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x8] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C23F8: .word UNK_021D28C0 + + ; _end + arm_func_start FUN_020C23FC +FUN_020C23FC: ; 0x020C23FC + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020C2398 + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r0, #0x4 + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; NNS_SndArcGetCurrent + arm_func_start FUN_020C241C +FUN_020C241C: ; 0x020C241C + ldr r0, _020C2428 ; =UNK_021D28C0 + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020C2428: .word UNK_021D28C0 + + ; NNS_SndArcSetCurrent + arm_func_start FUN_020C242C +FUN_020C242C: ; 0x020C242C + ldr r1, _020C2440 ; =UNK_021D28C0 + ldr r2, [r1, #0x0] + str r0, [r1, #0x0] + mov r0, r2 + bx lr + .balign 4 +_020C2440: .word UNK_021D28C0 + + ; NNS_SndArcInitOnMemory + arm_func_start FUN_020C2444 +FUN_020C2444: ; 0x020C2444 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r0, r4 + mov r1, r5 + mov r2, #0x30 + bl MIi_CpuCopy32 + ldr r0, [r5, #0x18] + mov r12, #0x0 + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x8c] + ldr r0, [r5, #0x20] + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x84] + ldr r0, [r5, #0x10] + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x88] + ldr r2, [r5, #0x84] + ldr r0, [r2, #0x8] + cmp r0, #0x0 + bls _020C24F0 + mov r3, r12 + mov r1, r12 +_020C24BC: + add r2, r2, #0xc + ldr r0, [r2, r3] + add r2, r2, r3 + cmp r0, #0x0 + moveq r0, r1 + addne r0, r4, r0 + str r0, [r2, #0x8] + ldr r2, [r5, #0x84] + add r12, r12, #0x1 + ldr r0, [r2, #0x8] + add r3, r3, #0x10 + cmp r12, r0 + blo _020C24BC +_020C24F0: + mov r1, #0x0 + ldr r0, _020C2508 ; =UNK_021D28C0 + str r1, [r5, #0x30] + str r5, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C2508: .word UNK_021D28C0 + +SDATi_ReadHeaders: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r6, r0 + mov r5, r1 + mov r1, #0x0 + mov r4, r2 + mov r2, r1 + add r0, r6, #0x34 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r1, r6 + add r0, r6, #0x34 + mov r2, #0x30 + bl FS_ReadFile + cmp r0, #0x30 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} + cmp r5, #0x0 + beq _020C26E0 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [r6, #0x1c] + ldr r2, _020C26EC ; =SDATi_InfoDtor + mov r0, r5 + mov r3, r6 + bl SDATi_AllocAndInitChunk + str r0, [r6, #0x8c] + ldr r0, [r6, #0x8c] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x18] + add r0, r6, #0x34 + mov r2, #0x0 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x8c] + ldr r2, [r6, #0x1c] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x1c] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [r6, #0x24] + ldr r2, _020C26F0 ; =SDATi_FatDtor + mov r0, r5 + mov r3, r6 + bl SDATi_AllocAndInitChunk + str r0, [r6, #0x84] + ldr r0, [r6, #0x84] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x20] + add r0, r6, #0x34 + mov r2, #0x0 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x84] + ldr r2, [r6, #0x24] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x24] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} + cmp r4, #0x0 + beq _020C26E0 + ldr r1, [r6, #0x14] + cmp r1, #0x0 + beq _020C26E0 + mov r4, #0x0 + ldr r2, _020C26F4 ; =SDATi_SymbDtor + mov r0, r5 + mov r3, r6 + str r4, [sp, #0x0] + bl SDATi_AllocAndInitChunk + str r0, [r6, #0x88] + ldr r0, [r6, #0x88] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, r4 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x10] + add r0, r6, #0x34 + mov r2, r4 + bl FS_SeekFile + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, r4 + ldmeqia sp!, {r4-r6,pc} + ldr r1, [r6, #0x88] + ldr r2, [r6, #0x14] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x14] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, r4 + ldmneia sp!, {r4-r6,pc} +_020C26E0: + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C26EC: .word SDATi_InfoDtor +_020C26F0: .word SDATi_FatDtor +_020C26F4: .word SDATi_SymbDtor + + ; NNS_SndArcInit + arm_func_start SDAT_Open +SDAT_Open: ; 0x020C26F8 + ; r0: &sSoundDataBuffer + ; r1: char* filename + ; r2: (&sSoundDataBuffer)->unk_0090 + ; r3: 0 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r12, #0x0 + str r12, [r6, #0x8c] + str r12, [r6, #0x84] + add r0, r6, #0x7c + mov r5, r2 + mov r4, r3 + str r12, [r6, #0x88] + bl FS_ConvertPathToFileID + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + add r0, r6, #0x34 + bl FS_InitFile + add r1, r6, #0x7c + add r0, r6, #0x34 + ldmia r1, {r1-r2} + bl FS_OpenFileFast + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} + mov r3, #0x1 + mov r0, r6 + mov r1, r5 + mov r2, r4 + str r3, [r6, #0x30] + bl SDATi_ReadHeaders + cmp r0, #0x0 + ldrne r0, _020C2770 ; =UNK_021D28C0 + strne r6, [r0, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C2770: .word UNK_021D28C0 + diff --git a/arm9/asm/NNS_SND_sndarc_loader.s b/arm9/asm/NNS_SND_sndarc_loader.s new file mode 100644 index 00000000..918a296b --- /dev/null +++ b/arm9/asm/NNS_SND_sndarc_loader.s @@ -0,0 +1,898 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + ; waveArcHeader$8213 + .global UNK_021D28C4 +UNK_021D28C4: ; 0x021D28C4 + .space 0x3c + + .section .text + + ; _end + arm_func_start FUN_020C2B1C +FUN_020C2B1C: ; 0x020C2B1C + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x20 + mov r8, r0 + add r0, sp, #0x8 + mov r7, r1 + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x40] + bl SND_GetFirstInstDataPos + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + str r1, [sp, #0x0] + str r0, [sp, #0x4] + cmp r7, #0x0 + add r2, sp, #0x0 + addeq sp, sp, #0x20 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,pc} + add r1, sp, #0x10 + mov r0, r7 + bl SND_GetNextInstData + cmp r0, #0x0 + beq _020C2BD4 + add r10, sp, #0x10 + add r9, sp, #0x0 +_020C2B80: + ldrb r0, [sp, #0x10] + cmp r0, #0x1 + bne _020C2BBC + ldrh r0, [sp, #0x14] + cmp r6, r0 + bne _020C2BBC + ldrh r1, [sp, #0x12] + mov r0, r8 + mov r2, r5 + mov r3, r4 + bl FUN_020C2BE0 + cmp r0, #0x0 + addeq sp, sp, #0x20 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,pc} +_020C2BBC: + mov r0, r7 + mov r1, r10 + mov r2, r9 + bl SND_GetNextInstData + cmp r0, #0x0 + bne _020C2B80 +_020C2BD4: + mov r0, #0x1 + add sp, sp, #0x20 + ldmia sp!, {r4-r10,pc} + + ; LoadSingleWave + arm_func_start FUN_020C2BE0 +FUN_020C2BE0: ; 0x020C2BE0 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl SND_GetWaveDataAddress + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x1 + ldmneia sp!, {r4-r9,pc} + mov r0, r7 + bl SND_GetWaveDataCount + ldr r1, [r7, #0x38] + sub r0, r0, #0x1 + add r1, r1, r6 + add r1, r7, r1, lsl #0x2 + cmp r6, r0 + ldrcc r0, [r1, #0x40] + ldr r8, [r1, #0x3c] + ldrcs r0, [r7, #0x8] + cmp r4, #0x0 + sub r9, r0, r8 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + ldr r2, _020C2CBC ; =FUN_020C2CC0 + mov r0, r4 + mov r3, r7 + add r1, r9, #0x20 + str r6, [sp, #0x0] + bl SDATi_AllocAndInitChunk + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + mov r0, r5 + mov r1, r4 + mov r2, r9 + mov r3, r8 + bl FUN_020C2104 + cmp r9, r0 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + mov r0, r4 + mov r1, r9 + bl DC_StoreRange + mov r0, r7 + mov r1, r6 + mov r2, r4 + bl SND_SetWaveDataAddress + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C2CBC: .word FUN_020C2CC0 + + ; _end + arm_func_start FUN_020C2CC0 +FUN_020C2CC0: ; 0x020C2CC0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r2 + mov r7, r0 + mov r4, r3 + mov r6, r1 + mov r0, r5 + mov r1, r4 + bl SND_GetWaveDataAddress + cmp r7, r0 + bne _020C2CFC + mov r0, r5 + mov r1, r4 + mov r2, #0x0 + bl SND_SetWaveDataAddress +_020C2CFC: + mov r0, r7 + add r1, r7, r6 + bl SND_InvalidateWaveData + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + ; _end + arm_func_start FUN_020C2D10 +FUN_020C2D10: ; 0x020C2D10 + stmdb sp!, {r4,lr} + mov r1, r2 + mov r4, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r4 + bl SND_DestroyWaveArc + ldmia sp!, {r4,pc} + + ; _end + arm_func_start FUN_020C2D30 +FUN_020C2D30: ; 0x020C2D30 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateWaveData + mov r0, r5 + bl SND_DestroyWaveArc + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + ; _end + arm_func_start FUN_020C2D68 +FUN_020C2D68: ; 0x020C2D68 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateBankData + mov r0, r5 + bl SND_DestroyBank + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + ; _end + arm_func_start FUN_020C2DA0 +FUN_020C2DA0: ; 0x020C2DA0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateSeqData + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + ; _end + arm_func_start FUN_020C2DD0 +FUN_020C2DD0: ; 0x020C2DD0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + movs r5, r1 + mov r7, r0 + mov r6, r2 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} + bl OS_DisableInterrupts + mov r4, r0 + mov r0, r5 + bl FUN_020C242C + mov r5, r0 + mov r0, r6 + bl FUN_020C20DC + cmp r7, r0 + bne _020C2E1C + mov r0, r6 + mov r1, #0x0 + bl FUN_020C20C0 +_020C2E1C: + mov r0, r5 + bl FUN_020C242C + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + ; LoadWaveArcTable + arm_func_start FUN_020C2E34 +FUN_020C2E34: ; 0x020C2E34 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + mov r8, r1 + mov r7, r2 + bl FUN_020C20DC + movs r6, r0 + bne _020C2F40 + ldr r1, _020C2F4C ; =UNK_021D28C4 + mov r0, r9 + mov r2, #0x3c + mov r3, #0x0 + bl FUN_020C2104 + cmp r0, #0x3c + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + ldr r0, _020C2F4C ; =UNK_021D28C4 + cmp r8, #0x0 + ldr r0, [r0, #0x38] + addeq sp, sp, #0x4 + mov r4, r0, lsl #0x2 + mov r0, r4, lsl #0x1 + add r5, r0, #0x3c + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + cmp r7, #0x0 + moveq r3, #0x0 + beq _020C2EB0 + bl FUN_020C241C + mov r3, r0 +_020C2EB0: + ldr r2, _020C2F50 ; =FUN_020C2D10 + mov r0, r8 + add r1, r5, #0x20 + str r9, [sp, #0x0] + bl SDATi_AllocAndInitChunk + movs r6, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} + mov r0, r9 + mov r1, r6 + add r2, r4, #0x3c + mov r3, #0x0 + bl FUN_020C2104 + add r1, r4, #0x3c + cmp r0, r1 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} + ldr r1, [r6, #0x38] + add r0, r6, #0x3c + mov r2, r4 + add r1, r0, r1, lsl #0x2 + bl MI_CpuCopy8 + mov r2, r4 + add r0, r6, #0x3c + mov r1, #0x0 + bl MI_CpuFill8 + mov r0, r6 + mov r1, r5 + bl DC_StoreRange + cmp r7, #0x0 + beq _020C2F40 + mov r0, r9 + mov r1, r6 + bl FUN_020C20C0 +_020C2F40: + mov r0, r6 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C2F4C: .word UNK_021D28C4 +_020C2F50: .word FUN_020C2D10 + + ; LoadWaveArc + arm_func_start FUN_020C2F54 +FUN_020C2F54: ; 0x020C2F54 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C2FBC + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C2F88 + bl FUN_020C241C + mov r2, r0 +_020C2F88: + ldr r1, _020C2FC8 ; =FUN_020C2D30 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C2FBC + cmp r4, #0x0 + beq _020C2FBC + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C2FBC: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C2FC8: .word FUN_020C2D30 + + ; LoadBank + arm_func_start FUN_020C2FCC +FUN_020C2FCC: ; 0x020C2FCC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C3034 + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C3000 + bl FUN_020C241C + mov r2, r0 +_020C3000: + ldr r1, _020C3040 ; =FUN_020C2D68 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C3034 + cmp r4, #0x0 + beq _020C3034 + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C3034: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3040: .word FUN_020C2D68 + + ; LoadSeqArc + arm_func_start FUN_020C3044 +FUN_020C3044: ; 0x020C3044 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C30AC + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C3078 + bl FUN_020C241C + mov r2, r0 +_020C3078: + ldr r1, _020C30B8 ; =FUN_020C2DA0 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C30AC + cmp r4, #0x0 + beq _020C30AC + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C30AC: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C30B8: .word FUN_020C2DA0 + + ; LoadSeq + arm_func_start FUN_020C30BC +FUN_020C30BC: ; 0x020C30BC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C3124 + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C30F0 + bl FUN_020C241C + mov r2, r0 +_020C30F0: + ldr r1, _020C3130 ; =FUN_020C2DA0 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C3124 + cmp r4, #0x0 + beq _020C3124 + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C3124: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3130: .word FUN_020C2DA0 + + ; _end + arm_func_start FUN_020C3134 +FUN_020C3134: ; 0x020C3134 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r4, r3 + bl FUN_020C217C + movs r5, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + ldr r0, [sp, #0x20] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r2, r7 + mov r3, r6 + add r1, r5, #0x20 + str r4, [sp, #0x0] + bl SDATi_AllocAndInitChunk + movs r4, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r0, r8 + mov r1, r4 + mov r2, r5 + mov r3, #0x0 + bl FUN_020C2104 + cmp r5, r0 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r8,pc} + mov r0, r4 + mov r1, r5 + bl DC_StoreRange + mov r0, r4 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + ; _end + arm_func_start FUN_020C31D4 +FUN_020C31D4: ; 0x020C31D4 + stmdb sp!, {r4-r6,lr} + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_020C226C + cmp r0, #0x0 + moveq r0, #0x5 + ldmeqia sp!, {r4-r6,pc} + ands r1, r6, #0x4 + beq _020C324C + ldrb r1, [r0, #0x3] + ands r1, r1, #0x1 + beq _020C3224 + ldr r0, [r0, #0x0] + mov r1, r5 + mov r0, r0, lsl #0x8 + mov r2, r4 + mov r0, r0, lsr #0x8 + bl FUN_020C2E34 + b _020C323C +_020C3224: + ldr r0, [r0, #0x0] + mov r1, r5 + mov r0, r0, lsl #0x8 + mov r2, r4 + mov r0, r0, lsr #0x8 + bl FUN_020C2F54 +_020C323C: + cmp r0, #0x0 + bne _020C325C + mov r0, #0x9 + ldmia sp!, {r4-r6,pc} +_020C324C: + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x8 + bl FUN_020C20DC +_020C325C: + ldr r1, [sp, #0x10] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + ; NNSi_SndArcLoadBank + arm_func_start FUN_020C3270 +FUN_020C3270: ; 0x020C3270 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r10, r1 + mov r9, r2 + mov r11, r3 + bl FUN_020C22D0 + movs r8, r0 + addeq sp, sp, #0xc + moveq r0, #0x4 + ldmeqia sp!, {r4-r11,pc} + ands r0, r10, #0x2 + beq _020C32C4 + ldr r0, [r8, #0x0] + mov r1, r9 + mov r2, r11 + bl FUN_020C2FCC + movs r7, r0 + bne _020C32D0 + add sp, sp, #0xc + mov r0, #0x8 + ldmia sp!, {r4-r11,pc} +_020C32C4: + ldr r0, [r8, #0x0] + bl FUN_020C20DC + mov r7, r0 +_020C32D0: + and r5, r10, #0x4 + mov r6, #0x0 +_020C32D8: + add r0, r8, r6, lsl #0x1 + ldrh r0, [r0, #0x4] + ldr r1, _020C33B4 ; =0x0000FFFF + cmp r0, r1 + beq _020C3390 + bl FUN_020C226C + movs r4, r0 + addeq sp, sp, #0xc + moveq r0, #0x5 + ldmeqia sp!, {r4-r11,pc} + add r0, sp, #0x4 + str r0, [sp, #0x0] + add r0, r8, r6, lsl #0x1 + ldrh r0, [r0, #0x4] + mov r1, r10 + mov r2, r9 + mov r3, r11 + bl FUN_020C31D4 + cmp r0, #0x0 + addne sp, sp, #0xc + ldmneia sp!, {r4-r11,pc} + ldrb r0, [r4, #0x3] + ands r0, r0, #0x1 + beq _020C3370 + cmp r5, #0x0 + beq _020C3370 + str r9, [sp, #0x0] + ldr r1, [r4, #0x0] + ldr r0, [sp, #0x4] + mov r3, r1, lsl #0x8 + mov r1, r7 + mov r2, r6 + mov r3, r3, lsr #0x8 + bl FUN_020C2B1C + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x9 + ldmeqia sp!, {r4-r11,pc} +_020C3370: + cmp r7, #0x0 + beq _020C3390 + ldr r2, [sp, #0x4] + cmp r2, #0x0 + beq _020C3390 + mov r0, r7 + mov r1, r6 + bl SND_AssignWaveArc +_020C3390: + add r6, r6, #0x1 + cmp r6, #0x4 + blt _020C32D8 + ldr r0, [sp, #0x30] + cmp r0, #0x0 + strne r7, [r0, #0x0] + mov r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C33B4: .word 0x0000FFFF + + ; _end + arm_func_start FUN_020C33B8 +FUN_020C33B8: ; 0x020C33B8 + stmdb sp!, {r4-r6,lr} + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_020C2334 + cmp r0, #0x0 + moveq r0, #0x3 + ldmeqia sp!, {r4-r6,pc} + ands r1, r6, #0x8 + beq _020C3400 + ldr r0, [r0, #0x0] + mov r1, r5 + mov r2, r4 + bl FUN_020C3044 + cmp r0, #0x0 + bne _020C3408 + mov r0, #0x7 + ldmia sp!, {r4-r6,pc} +_020C3400: + ldr r0, [r0, #0x0] + bl FUN_020C20DC +_020C3408: + ldr r1, [sp, #0x10] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + ; _end + arm_func_start FUN_020C341C +FUN_020C341C: ; 0x020C341C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl FUN_020C2398 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x2 + ldmeqia sp!, {r4-r7,pc} + mov r0, #0x0 + str r0, [sp, #0x0] + ldrh r0, [r4, #0x4] + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl FUN_020C3270 + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,pc} + ands r0, r7, #0x1 + beq _020C3498 + ldr r0, [r4, #0x0] + mov r1, r6 + mov r2, r5 + bl FUN_020C30BC + cmp r0, #0x0 + bne _020C34A0 + add sp, sp, #0x4 + mov r0, #0x6 + ldmia sp!, {r4-r7,pc} +_020C3498: + ldr r0, [r4, #0x0] + bl FUN_020C20DC +_020C34A0: + ldr r1, [sp, #0x18] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + ; _end + arm_func_start FUN_020C34B8 +FUN_020C34B8: ; 0x020C34B8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r9, r1 + bl FUN_020C21A4 + movs r8, r0 + addeq sp, sp, #0xc + moveq r0, #0x1 + ldmeqia sp!, {r4-r11,pc} + ldr r0, [r8, #0x0] + mov r7, #0x0 + cmp r0, #0x0 + bls _020C35D4 + add r6, r8, #0x4 + str r7, [sp, #0x4] + mov r11, r7 + mov r10, r7 + mov r5, r7 + mov r4, #0x1 +_020C3500: + ldrb r0, [r6, #0x0] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020C35C0 + ; Jump table + b _020C3520 ; case 0 + b _020C3570 ; case 1 + b _020C3598 ; case 2 + b _020C3548 ; case 3 +_020C3520: + str r5, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl FUN_020C341C + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3548: + str r10, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl FUN_020C33B8 + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3570: + str r11, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl FUN_020C3270 + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3598: + ldr r0, [sp, #0x4] + mov r2, r9 + str r0, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r3, r4 + bl FUN_020C31D4 + cmp r0, #0x0 + addne sp, sp, #0xc + ldmneia sp!, {r4-r11,pc} +_020C35C0: + ldr r0, [r8, #0x0] + add r7, r7, #0x1 + cmp r7, r0 + add r6, r6, #0x8 + blo _020C3500 +_020C35D4: + mov r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + + ; _end + arm_func_start FUN_020C35E0 +FUN_020C35E0: ; 0x020C35E0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r12, #0x0 + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C341C + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; _end + arm_func_start FUN_020C360C +FUN_020C360C: ; 0x020C360C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C31D4 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; _end + arm_func_start FUN_020C3640 +FUN_020C3640: ; 0x020C3640 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C3270 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; _end + arm_func_start FUN_020C3674 +FUN_020C3674: ; 0x020C3674 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C341C + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; _end + arm_func_start FUN_020C36A8 +FUN_020C36A8: ; 0x020C36A8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020C34B8 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + diff --git a/arm9/asm/NNS_SND_sndarc_player.s b/arm9/asm/NNS_SND_sndarc_player.s new file mode 100644 index 00000000..8657cdfc --- /dev/null +++ b/arm9/asm/NNS_SND_sndarc_player.s @@ -0,0 +1,268 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .text + + ; _end + arm_func_start FUN_020C36C8 +FUN_020C36C8: ; 0x020C36C8 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r7, r2 + mov r2, r3 + ldr r6, [sp, #0x20] + mov r4, r0 + mov r8, r1 + bl FUN_020C0AF4 + movs r5, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r0, r8 + mov r1, r5 + bl FUN_020C09B0 + add r12, sp, #0x4 + mov r2, r0 + mov r0, r7 + mov r1, #0x6 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020C3270 + cmp r0, #0x0 + beq _020C373C + mov r0, r5 + bl thunk_FUN_020c077c + add sp, sp, #0x8 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C373C: + ldr r12, [sp, #0x24] + ldr r2, [r6, #0x0] + ldr r1, [r12, #0x18] + ldr r3, [sp, #0x4] + mov r0, r5 + add r1, r12, r1 + bl FUN_020C0A90 + ldrb r1, [r6, #0x6] + mov r0, r4 + bl FUN_020C0F30 + ldrb r1, [r6, #0x7] + mov r0, r4 + bl FUN_020C0ECC + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + mov r0, r4 + bl FUN_020C0E38 + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + ; _end + arm_func_start FUN_020C378C +FUN_020C378C: ; 0x020C378C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + mov r8, r2 + mov r2, r3 + ldr r5, [sp, #0x28] + mov r6, r0 + mov r7, r1 + bl FUN_020C0AF4 + movs r4, r0 + addeq sp, sp, #0x10 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + mov r0, r7 + mov r1, r4 + bl FUN_020C09B0 + mov r7, r0 + add r12, sp, #0x8 + mov r0, r8 + mov r2, r7 + mov r1, #0x6 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020C3270 + cmp r0, #0x0 + beq _020C3804 + mov r0, r4 + bl thunk_FUN_020c077c + add sp, sp, #0x10 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C3804: + ldr r0, [sp, #0x2c] + add r12, sp, #0x4 + mov r2, r7 + mov r1, #0x1 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020C341C + cmp r0, #0x0 + beq _020C383C + mov r0, r4 + bl thunk_FUN_020c077c + add sp, sp, #0x10 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C383C: + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [r2, #0x18] + mov r0, r4 + add r1, r2, r1 + mov r2, #0x0 + bl FUN_020C0A90 + ldrb r1, [r5, #0x6] + mov r0, r6 + bl FUN_020C0F30 + ldrb r1, [r5, #0x7] + mov r0, r6 + bl FUN_020C0ECC + ldr r1, [sp, #0x2c] + mov r0, r6 + bl FUN_020C0E60 + mov r0, #0x1 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + + ; _end + arm_func_start FUN_020C3888 +FUN_020C3888: ; 0x020C3888 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r5, r2 + bl FUN_020C2334 + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + ldr r0, [r0, #0x0] + bl FUN_020C20DC + movs r4, r0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + mov r1, r5 + bl FUN_020C3D9C + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + str r0, [sp, #0x0] + str r4, [sp, #0x4] + str r6, [sp, #0x8] + str r5, [sp, #0xc] + ldrb r1, [r0, #0x9] + ldrh r2, [r0, #0x4] + ldrb r3, [r0, #0x8] + mov r0, r7 + bl FUN_020C36C8 + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + + ; _end + arm_func_start FUN_020C3910 +FUN_020C3910: ; 0x020C3910 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + mov r7, r0 + ldr r0, [sp, #0x20] + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_020C2398 + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} + cmp r4, #0x0 + ldrltb r4, [r0, #0x8] + cmp r5, #0x0 + ldrlth r5, [r0, #0x4] + cmp r6, #0x0 + ldrltb r6, [r0, #0x9] + ldr r12, [sp, #0x20] + mov r2, r5 + str r0, [sp, #0x0] + mov r0, r7 + mov r1, r6 + mov r3, r4 + str r12, [sp, #0x4] + bl FUN_020C378C + add sp, sp, #0xc + ldmia sp!, {r4-r7,pc} + + ; _end + arm_func_start FUN_020C3980 +FUN_020C3980: ; 0x020C3980 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl FUN_020C2398 + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} + str r0, [sp, #0x0] + str r4, [sp, #0x4] + ldrb r1, [r0, #0x9] + ldrh r2, [r0, #0x4] + ldrb r3, [r0, #0x8] + mov r0, r5 + bl FUN_020C378C + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + + ; _end + arm_func_start FUN_020C39CC +FUN_020C39CC: ; 0x020C39CC + stmdb sp!, {r4-r8,lr} + mov r6, r0 + bl FUN_020C241C + mov r5, #0x0 + mov r7, r5 +_020C39E0: + mov r0, r5 + bl FUN_020C2208 + movs r4, r0 + beq _020C3A58 + ldrb r1, [r4, #0x0] + mov r0, r5 + bl FUN_020C1160 + ldrh r1, [r4, #0x2] + mov r0, r5 + bl FUN_020C1148 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _020C3A58 + cmp r6, #0x0 + beq _020C3A58 + ldrb r0, [r4, #0x0] + mov r8, r7 + cmp r0, #0x0 + ble _020C3A58 +_020C3A2C: + ldr r2, [r4, #0x4] + mov r0, r5 + mov r1, r6 + bl FUN_020C10B4 + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} + ldrb r0, [r4, #0x0] + add r8, r8, #0x1 + cmp r8, r0 + blt _020C3A2C +_020C3A58: + add r5, r5, #0x1 + cmp r5, #0x20 + blt _020C39E0 + mov r0, #0x1 + ldmia sp!, {r4-r8,pc} + diff --git a/arm9/asm/NNS_SND_sndarc_stream.s b/arm9/asm/NNS_SND_sndarc_stream.s new file mode 100644 index 00000000..8b6ad0b9 --- /dev/null +++ b/arm9/asm/NNS_SND_sndarc_stream.s @@ -0,0 +1,280 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + ; sPrepareThread + .global UNK_021D2900 +UNK_021D2900: ; 0x021D2900 + .space 0x4 + + ; sFreeCommandList + .global UNK_021D2904 +UNK_021D2904: ; 0x021D2904 + .space 0x4d4 + + ; sFreeCommandList + 0x4D4 + .global UNK_021D2DD8 +UNK_021D2DD8: ; 0x021D2DD8 + .space 0x18 + + ; sFreeCommandList + 0x4EC + .global UNK_021D2DF0 +UNK_021D2DF0: ; 0x021D2DF0 + .space 0xc + + ; sStrmPlayer + .global UNK_021D2DFC +UNK_021D2DFC: ; 0x021D2DFC + .space 0x5c0 + + .section .text + + ; FreeCommandBuffer + arm_func_start FUN_020C3A6C +FUN_020C3A6C: ; 0x020C3A6C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + mov r4, r0 + ldr r0, _020C3A9C ; =UNK_021D2904 + mov r1, r5 + bl FUN_020ADBE8 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C3A9C: .word UNK_021D2904 + + ; _end + arm_func_start FUN_020C3AA0 +FUN_020C3AA0: ; 0x020C3AA0 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r8 + mov r1, #0x0 + bl FUN_020ADA98 + movs r5, r0 + beq _020C3B04 +_020C3AC8: + mov r0, r8 + mov r1, r5 + bl FUN_020ADA98 + ldr r1, [r5, #0x8] + mov r4, r0 + cmp r1, r7 + bne _020C3AF8 + mov r0, r8 + mov r1, r5 + bl FUN_020ADAB0 + mov r0, r5 + bl FUN_020C3A6C +_020C3AF8: + mov r5, r4 + cmp r4, #0x0 + bne _020C3AC8 +_020C3B04: + mov r0, r6 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,pc} + + ; _end + arm_func_start FUN_020C3B10 +FUN_020C3B10: ; 0x020C3B10 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x120] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + sub r1, r1, #0x1 + str r1, [r0, #0x120] + ldr r1, [r0, #0x120] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + bl FUN_020C1674 + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; ShutdownPlayer + arm_func_start FUN_020C3B4C +FUN_020C3B4C: ; 0x020C3B4C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x110] + mov r1, r1, lsl #0x1f + movs r1, r1, asr #0x1f + ldmeqia sp!, {r4,pc} + bl FUN_020C3B10 + ldr r1, [r4, #0x164] + mov r0, r4 + blx r1 + ldr r0, _020C3BA8 ; =UNK_021D2DF0 + mov r1, r4 + bl FUN_020C3AA0 + ldr r0, _020C3BAC ; =UNK_021D2900 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020C3B9C + mov r1, r4 + add r0, r0, #0x4e0 + bl FUN_020C3AA0 +_020C3B9C: + mov r0, r4 + bl FUN_020C3C4C + ldmia sp!, {r4,pc} + .balign 4 +_020C3BA8: .word UNK_021D2DF0 +_020C3BAC: .word UNK_021D2900 + + ; ForceStopStrm + arm_func_start FUN_020C3BB0 +FUN_020C3BB0: ; 0x020C3BB0 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, _020C3C40 ; =UNK_021D2DD8 + bl OS_LockMutex + ldr r0, _020C3C44 ; =UNK_021D2900 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _020C3BDC + ldr r0, _020C3C48 ; =0x000004C8 + add r0, r1, r0 + bl OS_LockMutex +_020C3BDC: + ldr r0, [r4, #0x110] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C3BF4 + mov r0, r4 + bl FUN_020C1430 +_020C3BF4: + ldr r0, [r4, #0x110] + mov r0, r0, lsl #0x1f + movs r0, r0, asr #0x1f + beq _020C3C10 + ldr r1, [r4, #0x16c] + mov r0, r4 + blx r1 +_020C3C10: + mov r0, r4 + bl FUN_020C3B4C + ldr r0, _020C3C40 ; =UNK_021D2DD8 + bl OS_UnlockMutex + ldr r0, _020C3C44 ; =UNK_021D2900 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, _020C3C48 ; =0x000004C8 + add r0, r1, r0 + bl OS_UnlockMutex + ldmia sp!, {r4,pc} + .balign 4 +_020C3C40: .word UNK_021D2DD8 +_020C3C44: .word UNK_021D2900 +_020C3C48: .word 0x000004C8 + + ; _end + arm_func_start FUN_020C3C4C +FUN_020C3C4C: ; 0x020C3C4C + ldr r2, [r0, #0x14c] + cmp r2, #0x0 + movne r1, #0x0 + strne r1, [r2, #0x0] + strne r1, [r0, #0x14c] + ldr r1, [r0, #0x110] + bic r1, r1, #0x1 + str r1, [r0, #0x110] + ldr r1, [r0, #0x110] + bic r1, r1, #0x4 + str r1, [r0, #0x110] + ldr r1, [r0, #0x110] + bic r1, r1, #0x2 + str r1, [r0, #0x110] + bx lr + + ; NNSi_SndArcStrmMain + arm_func_start FUN_020C3C88 +FUN_020C3C88: ; 0x020C3C88 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r5, _020C3D94 ; =UNK_021D2DFC + mov r7, #0x0 + ldr r4, _020C3D98 ; =SNDi_DecibelTable +_020C3C9C: + ldr r1, [r5, #0x110] + mov r0, r1, lsl #0x1f + movs r0, r0, asr #0x1f + beq _020C3D7C + ldr r0, [r5, #0x114] + cmp r0, #0x0 + bne _020C3CC4 + mov r0, r5 + bl FUN_020C3BB0 + b _020C3D7C +_020C3CC4: + mov r0, r1, lsl #0x1d + movs r0, r0, asr #0x1f + beq _020C3CFC + ldr r0, [r5, #0x118] + cmp r0, #0x0 + beq _020C3CFC + mov r0, r5 + bl FUN_020C1458 + ldr r0, [r5, #0x110] + orr r0, r0, #0x2 + str r0, [r5, #0x110] + ldr r0, [r5, #0x110] + bic r0, r0, #0x4 + str r0, [r5, #0x110] +_020C3CFC: + ldr r0, [r5, #0x110] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C3D7C + add r0, r5, #0xe8 + bl FUN_020C3DF4 + ldr r1, [r5, #0x154] + add r0, r5, #0xe8 + mov r1, r1, lsl #0x1 + ldrsh r6, [r4, r1] + bl FUN_020C3E0C + mov r0, r0, asr #0x8 + mov r0, r0, lsl #0x1 + ldrsh r1, [r4, r0] + ldr r0, [r5, #0x158] + add r6, r1, r6 + cmp r6, r0 + beq _020C3D54 + mov r0, r5 + mov r1, r6 + bl FUN_020C13C4 + str r6, [r5, #0x158] +_020C3D54: + ldr r0, [r5, #0x110] + mov r0, r0, lsl #0x1c + movs r0, r0, asr #0x1f + beq _020C3D7C + add r0, r5, #0xe8 + bl FUN_020C3DDC + cmp r0, #0x0 + beq _020C3D7C + mov r0, r5 + bl FUN_020C3BB0 +_020C3D7C: + add r7, r7, #0x1 + cmp r7, #0x4 + add r5, r5, #0x170 + blt _020C3C9C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3D94: .word UNK_021D2DFC +_020C3D98: .word SNDi_DecibelTable + diff --git a/arm9/asm/NNS_SND_stream.s b/arm9/asm/NNS_SND_stream.s new file mode 100644 index 00000000..752fcab0 --- /dev/null +++ b/arm9/asm/NNS_SND_stream.s @@ -0,0 +1,474 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + ; bInitialized$7761 + .global UNK_021D26D4 +UNK_021D26D4: ; 0x021D26D4 + .space 0x4 + + ; sStrmList + .global UNK_021D26D8 +UNK_021D26D8: ; 0x021D26D8 + .space 0xc + + ; buffer$7877 + .global UNK_021D26E4 +UNK_021D26E4: ; 0x021D26E4 + .space 0x40 + + ; sStrmChannel + .global UNK_021D2724 +UNK_021D2724: ; 0x021D2724 + .space 0x80 + + .section .text + + ; _end + arm_func_start FUN_020C1198 +FUN_020C1198: ; 0x020C1198 + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + ldmeqia sp!, {r4-r6,pc} + ldr r0, [r4, #0x38] + cmp r0, #0x0 + beq _020C11E8 + mov r5, #0x1 +_020C11C0: + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r4 + mov r1, r5 + bl FUN_020C1254 + mov r0, r6 + bl OS_RestoreInterrupts + ldr r0, [r4, #0x38] + cmp r0, #0x0 + bne _020C11C0 +_020C11E8: + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StartTimer + ldmia sp!, {r4-r6,pc} + + ; _end + arm_func_start FUN_020C1208 +FUN_020C1208: ; 0x020C1208 + stmdb sp!, {r4,lr} + ldr r1, [r0, #0x24] + mov r1, r1, lsl #0x1e + movs r1, r1, asr #0x1f + ldmeqia sp!, {r4,pc} + ldr r2, [r0, #0x40] + mov r3, #0x1 + mov r1, #0x0 + mov r2, r3, lsl r2 + ldr r0, [r0, #0x44] + mov r3, r1 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + ; StrmCallback + arm_func_start FUN_020C1254 +FUN_020C1254: ; 0x020C1254 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r5, r0 + mov r4, r1 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl _u32_div_f + ldr r1, [r5, #0x48] + ldr r2, [r5, #0x38] + mov r3, r0 + mul lr, r3, r2 + cmp r1, #0x0 + mov r12, #0x0 + ble _020C12B8 + ldr r2, _020C1300 ; =UNK_021D2724 + ldr r0, _020C1304 ; =UNK_021D26E4 +_020C1294: + add r1, r5, r12 + ldrb r1, [r1, #0x4c] + ldr r1, [r2, r1, lsl #0x3] + add r1, r1, lr + str r1, [r0, r12, lsl #0x2] + ldr r1, [r5, #0x48] + add r12, r12, #0x1 + cmp r12, r1 + blt _020C1294 +_020C12B8: + ldr r0, [r5, #0x20] + ldr r2, _020C1304 ; =UNK_021D26E4 + str r0, [sp, #0x0] + ldr r12, [r5, #0x34] + mov r0, r4 + str r12, [sp, #0x4] + ldr r4, [r5, #0x30] + blx r4 + ldr r0, [r5, #0x38] + add r0, r0, #0x1 + str r0, [r5, #0x38] + ldr r1, [r5, #0x38] + ldr r0, [r5, #0x2c] + cmp r1, r0 + movge r0, #0x0 + strge r0, [r5, #0x38] + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C1300: .word UNK_021D2724 +_020C1304: .word UNK_021D26E4 + + ; AlarmCallback + arm_func_start FUN_020C1308 +FUN_020C1308: ; 0x020C1308 + ldr ip, _020C1314 ; =FUN_020C1254 + mov r1, #0x1 + bx r12 + .balign 4 +_020C1314: .word FUN_020C1254 + + ; ShutdownStrm + arm_func_start FUN_020C1318 +FUN_020C1318: ; 0x020C1318 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x40] + bl FUN_020C029C + ldr r0, _020C1344 ; =UNK_021D26D8 + mov r1, r4 + bl FUN_020ADAB0 + ldr r0, [r4, #0x24] + bic r0, r0, #0x1 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020C1344: .word UNK_021D26D8 + + ; _end + arm_func_start FUN_020C1348 +FUN_020C1348: ; 0x020C1348 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C13B4 + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StopTimer + add r0, r4, #0x8 + bl PM_DeletePreSleepCallback + add r0, r4, #0x14 + bl PM_DeletePostSleepCallback + ldr r0, [r4, #0x24] + bic r0, r0, #0x2 + str r0, [r4, #0x24] + bl SND_GetCurrentCommandTag + mov r5, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r5 + bl SND_WaitForCommandProc +_020C13B4: + mov r0, r4 + bl FUN_020C1318 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + ; NNS_SndStrmSetVolume + arm_func_start FUN_020C13C4 +FUN_020C13C4: ; 0x020C13C4 + stmdb sp!, {r4-r8,lr} + mov r7, r0 + str r1, [r7, #0x3c] + ldr r0, [r7, #0x48] + mov r5, #0x0 + cmp r0, #0x0 + ldmleia sp!, {r4-r8,pc} + ldr r4, _020C142C ; =UNK_021D2724 + mov r8, #0x1 +_020C13E8: + add r0, r7, r5 + ldrb r6, [r0, #0x4c] + ldr r1, [r7, #0x3c] + add r0, r4, r6, lsl #0x3 + ldr r0, [r0, #0x4] + add r0, r1, r0 + bl SND_CalcChannelVolume + mov r2, r0 + mov r0, r8, lsl r6 + and r1, r2, #0xff + mov r2, r2, asr #0x8 + bl SND_SetChannelVolume + ldr r0, [r7, #0x48] + add r5, r5, #0x1 + cmp r5, r0 + blt _020C13E8 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020C142C: .word UNK_021D2724 + + ; _end + arm_func_start FUN_020C1430 +FUN_020C1430: ; 0x020C1430 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x24] + mov r1, r1, lsl #0x1f + movs r1, r1, asr #0x1f + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + bl FUN_020C1348 + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; _end + arm_func_start FUN_020C1458 +FUN_020C1458: ; 0x020C1458 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StartTimer + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + ldmneia sp!, {r4,pc} + add r0, r4, #0x8 + bl PM_PrependPreSleepCallback + add r0, r4, #0x14 + bl PM_AppendPostSleepCallback + ldr r0, [r4, #0x24] + orr r0, r0, #0x2 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + + ; NNS_SndStrmSetup + arm_func_start FUN_020C14AC +FUN_020C14AC: ; 0x020C14AC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x24 + mov r10, r0 + ldr r4, [r10, #0x24] + mov r9, r1 + mov r1, r4, lsl #0x1f + movs r1, r1, asr #0x1f + ldr r1, [sp, #0x4c] + str r2, [sp, #0x18] + mov r4, r3 + str r1, [sp, #0x4c] + beq _020C14E0 + bl FUN_020C1430 +_020C14E0: + ldr r0, [sp, #0x4c] + ldr r2, [r10, #0x48] + mov r0, r0, lsl #0x5 + mul r1, r2, r0 + mov r0, r4 + bl _u32_div_f + ldr r1, [sp, #0x4c] + ldr r2, [sp, #0x48] + mul r1, r0, r1 + mov r0, r1, lsl #0x5 + str r0, [r10, #0x28] + ldr r0, [r10, #0x28] + cmp r9, #0x1 + moveq r0, r0, lsr #0x1 + mul r0, r2, r0 + ldr r1, [sp, #0x4c] + bl _u32_div_f + str r0, [sp, #0x1c] + bl FUN_020C02BC + str r0, [r10, #0x40] + ldr r0, [r10, #0x40] + cmp r0, #0x0 + addlt sp, sp, #0x24 + movlt r0, #0x0 + ldmltia sp!, {r4-r11,pc} + ldr r0, [r10, #0x48] + mov r8, #0x0 + cmp r0, #0x0 + ble _020C15D4 + ldr r0, [sp, #0x48] + mov r7, r0, lsl #0x5 + ldr r6, _020C1668 ; =UNK_021D2724 + mov r5, r8 + mov r4, #0x7f + mov r11, #0x40 + mov r0, #0x1 + str r0, [sp, #0x20] +_020C1574: + ldr r2, [r10, #0x28] + ldr r1, [sp, #0x18] + add r0, r10, r8 + mla r1, r2, r8, r1 + ldrb r0, [r0, #0x4c] + ldr r3, [sp, #0x20] + str r1, [r6, r0, lsl #0x3] + add r1, r6, r0, lsl #0x3 + str r5, [r1, #0x4] + str r5, [sp, #0x0] + ldr r2, [r10, #0x28] + mov r1, r9 + mov r2, r2, lsr #0x2 + str r2, [sp, #0x4] + str r4, [sp, #0x8] + str r5, [sp, #0xc] + str r7, [sp, #0x10] + str r11, [sp, #0x14] + ldr r2, [r6, r0, lsl #0x3] + bl SND_SetupChannelPcm + ldr r0, [r10, #0x48] + add r8, r8, #0x1 + cmp r8, r0 + blt _020C1574 +_020C15D4: + str r10, [sp, #0x0] + ldr r1, [sp, #0x1c] + ldr r0, [r10, #0x40] + ldr r3, _020C166C ; =FUN_020C1308 + mov r2, r1 + bl SND_SetupAlarm + ldr r0, _020C1670 ; =UNK_021D26D8 + mov r1, r10 + bl FUN_020ADBE8 + ldr r0, [sp, #0x4c] + str r9, [r10, #0x20] + str r0, [r10, #0x2c] + ldr r1, [sp, #0x50] + ldr r0, [sp, #0x54] + str r1, [r10, #0x30] + str r0, [r10, #0x34] + mov r0, #0x0 + str r0, [r10, #0x38] + str r0, [r10, #0x3c] + ldr r0, [r10, #0x24] + bic r0, r0, #0x1 + orr r0, r0, #0x1 + str r0, [r10, #0x24] + bl OS_DisableInterrupts + mov r4, r0 + mov r2, #0x1 + mov r0, r10 + mov r1, #0x0 + str r2, [r10, #0x2c] + bl FUN_020C1254 + ldr r1, [sp, #0x4c] + mov r0, r4 + str r1, [r10, #0x2c] + bl OS_RestoreInterrupts + mov r0, #0x1 + add sp, sp, #0x24 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C1668: .word UNK_021D2724 +_020C166C: .word FUN_020C1308 +_020C1670: .word UNK_021D26D8 + + ; _end + arm_func_start FUN_020C1674 +FUN_020C1674: ; 0x020C1674 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x44] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + bl FUN_020C0340 + mov r0, #0x0 + str r0, [r4, #0x44] + str r0, [r4, #0x48] + ldmia sp!, {r4,pc} + + ; _end + arm_func_start FUN_020C169C +FUN_020C169C: ; 0x020C169C + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r4, #0x0 + mov r6, r0 + mov r12, r4 + cmp r5, #0x0 + ble _020C16DC + mov r1, #0x1 +_020C16BC: + ldrb r3, [r2, r12] + add r0, r6, r12 + strb r3, [r0, #0x4c] + ldrb r0, [r2, r12] + add r12, r12, #0x1 + cmp r12, r5 + orr r4, r4, r1, lsl r0 + blt _020C16BC +_020C16DC: + mov r0, r4 + bl FUN_020C0370 + cmp r0, #0x0 + moveq r0, #0x0 + strne r5, [r6, #0x48] + strne r4, [r6, #0x44] + movne r0, #0x1 + ldmia sp!, {r4-r6,pc} + + ; NNS_SndStrmInit + arm_func_start FUN_020C16FC +FUN_020C16FC: ; 0x020C16FC + stmdb sp!, {r4,lr} + ldr r1, _020C176C ; =UNK_021D26D4 + mov r4, r0 + ldr r0, [r1, #0x0] + cmp r0, #0x0 + bne _020C172C + ldr r0, _020C1770 ; =UNK_021D26D8 + mov r1, #0x0 + bl FUN_020ADC74 + ldr r0, _020C176C ; =UNK_021D26D4 + mov r1, #0x1 + str r1, [r0, #0x0] +_020C172C: + ldr r1, _020C1774 ; =FUN_020C1208 + ldr r0, _020C1778 ; =FUN_020C1198 + str r1, [r4, #0x8] + str r4, [r4, #0xc] + str r0, [r4, #0x14] + str r4, [r4, #0x18] + mov r0, #0x0 + str r0, [r4, #0x44] + str r0, [r4, #0x48] + ldr r0, [r4, #0x24] + bic r0, r0, #0x1 + str r0, [r4, #0x24] + ldr r0, [r4, #0x24] + bic r0, r0, #0x2 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020C176C: .word UNK_021D26D4 +_020C1770: .word UNK_021D26D8 +_020C1774: .word FUN_020C1208 +_020C1778: .word FUN_020C1198 + diff --git a/arm9/asm/NNS_SND_waveout.s b/arm9/asm/NNS_SND_waveout.s new file mode 100644 index 00000000..4d5a536d --- /dev/null +++ b/arm9/asm/NNS_SND_waveout.s @@ -0,0 +1,250 @@ + .include "asm/macros.inc" + .include "global.inc" + + .section .bss + + ; sWaveOut + .global UNK_021D1CBC +UNK_021D1CBC: ; 0x021D1CBC + .space 0x140 + + .section .text + + ; _end + arm_func_start FUN_020C03B8 +FUN_020C03B8: ; 0x020C03B8 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, [r4, #0xc] + cmp r0, #0x0 + bne _020C03F8 + ldr r0, [r4, #0x10] + bl SND_IsFinishedCommandTag + cmp r0, #0x0 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} + mov r0, #0x1 + str r0, [r4, #0xc] +_020C03F8: + bl SND_GetChannelStatus + ldr r1, [r4, #0x0] + mov r2, #0x1 + mov r1, r2, lsl r1 + ands r0, r1, r0 + movne r0, r2 + moveq r0, #0x0 + streq r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + ; _end + arm_func_start FUN_020C041C +FUN_020C041C: ; 0x020C041C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + bl SND_SetChannelPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; NNS_SndWaveOutSetSpeed + arm_func_start FUN_020C044C +FUN_020C044C: ; 0x020C044C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x8] + mov r4, r1 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} + ldr r2, [r5, #0x4] + ldr r0, _020C04D4 ; =0xD87F8000 + mov r3, r2, asr #0x1f + mov r1, #0x7f + bl _ll_udiv + mov r2, r4 + mov r3, r4, asr #0x1f + bl _ll_udiv + mov r2, #0x0 + mov r3, r0 + mov r0, #0x10 + cmp r1, r2 + cmpeq r3, r0 + movcc r3, r0 + blo _020C04B8 + ldr r0, _020C04D8 ; =0x0000FFFF + cmp r1, r2 + cmpeq r3, r0 + movhi r3, r0 +_020C04B8: + ldr r0, [r5, #0x0] + mov r1, #0x1 + mov r0, r1, lsl r0 + mov r1, r3 + bl SND_SetChannelTimer + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C04D4: .word 0xD87F8000 +_020C04D8: .word 0x0000FFFF + + ; _end + arm_func_start FUN_020C04DC +FUN_020C04DC: ; 0x020C04DC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + mov r2, #0x0 + bl SND_SetChannelVolume + add sp, sp, #0x4 + ldmia sp!, {pc} + + ; _end + arm_func_start FUN_020C0510 +FUN_020C0510: ; 0x020C0510 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} + ldr r0, [r4, #0x0] + mov r2, #0x1 + mov r1, #0x0 + mov r0, r2, lsl r0 + mov r2, r1 + mov r3, r1 + bl SND_StopTimer + mov r0, #0x0 + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + ; NNS_SndWaveOutStart + arm_func_start FUN_020C054C +FUN_020C054C: ; 0x020C054C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x1c + movs r8, r1 + mov r9, r0 + mov r7, r2 + mov r6, r3 + beq _020C0584 + cmp r8, #0x1 + ldreq r0, [sp, #0x3c] + ldreq r1, [sp, #0x38] + moveq r0, r0, asr #0x1 + moveq r5, r1, asr #0x1 + subeq r4, r0, r1, asr #0x1 + b _020C0598 +_020C0584: + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0x38] + mov r0, r0, asr #0x2 + mov r5, r1, asr #0x2 + sub r4, r0, r1, asr #0x2 +_020C0598: + ldr r2, [sp, #0x40] + ldr r0, _020C0668 ; =0xD87F8000 + mov r3, r2, asr #0x1f + mov r1, #0x7f + bl _ll_udiv + ldr r2, [sp, #0x48] + mov r3, r2, asr #0x1f + bl _ll_udiv + mov r3, #0x0 + mov r2, #0x10 + cmp r1, r3 + cmpeq r0, r2 + movcc r0, r2 + blo _020C05E0 + ldr r2, _020C066C ; =0x0000FFFF + cmp r1, r3 + cmpeq r0, r2 + movhi r0, r2 +_020C05E0: + str r5, [sp, #0x0] + ldr r1, [sp, #0x44] + str r4, [sp, #0x4] + str r1, [sp, #0x8] + mov r1, #0x0 + str r1, [sp, #0xc] + cmp r6, #0x0 + movne r3, #0x1 + ldr r1, [sp, #0x4c] + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, [r9, #0x0] + moveq r3, #0x2 + mov r1, r8 + mov r2, r7 + bl SND_SetupChannelPcm + mov r1, #0x0 + ldr r0, [r9, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + mov r2, r1 + mov r3, r1 + bl SND_StartTimer + mov r0, #0x1 + str r0, [r9, #0x8] + mov r0, #0x0 + str r0, [r9, #0xc] + bl SND_GetCurrentCommandTag + str r0, [r9, #0x10] + ldr r1, [sp, #0x40] + mov r0, #0x1 + str r1, [r9, #0x4] + add sp, sp, #0x1c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C0668: .word 0xD87F8000 +_020C066C: .word 0x0000FFFF + + ; NNS_SndWaveOutFreeChannel + arm_func_start FUN_020C0670 +FUN_020C0670: ; 0x020C0670 + ldr r0, [r0, #0x0] + mov r1, #0x1 + ldr ip, _020C0684 ; =FUN_020C0340 + mov r0, r1, lsl r0 + bx r12 + .balign 4 +_020C0684: .word FUN_020C0340 + + ; NNS_SndWaveOutAllocChannel + arm_func_start FUN_020C0688 +FUN_020C0688: ; 0x020C0688 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, #0x1 + mov r0, r0, lsl r4 + bl FUN_020C0370 + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} + mov r0, #0x14 + mul r0, r4, r0 + ldr r2, _020C06C8 ; =UNK_021D1CBC + mov r1, #0x0 + str r4, [r2, r0] + add r0, r2, r0 + str r1, [r0, #0x8] + ldmia sp!, {r4,pc} + .balign 4 +_020C06C8: .word UNK_021D1CBC + diff --git a/arm9/asm/sndlib.s b/arm9/asm/sndlib.s deleted file mode 100644 index 840e72d3..00000000 --- a/arm9/asm/sndlib.s +++ /dev/null @@ -1,4758 +0,0 @@ - ; Compiled with MWCCARM 1.2 sp3 - - .include "asm/macros.inc" - .include "global.inc" - - .extern SNDi_DecibelTable - - .bss - - .global UNK_021D1C8C -UNK_021D1C8C: ; 0x021D1C8C - .space 0x4 - - .global UNK_021D1C90 -UNK_021D1C90: ; 0x021D1C90 - .space 0x4 - - .global UNK_021D1C94 -UNK_021D1C94: ; 0x021D1C94 - .space 0x4 - - .global UNK_021D1C98 -UNK_021D1C98: ; 0x021D1C98 - .space 0xc - - .global UNK_021D1CA4 -UNK_021D1CA4: ; 0x021D1CA4 - .space 0xc - - .global UNK_021D1CB0 -UNK_021D1CB0: ; 0x021D1CB0 - .space 0x4 - - .global UNK_021D1CB4 -UNK_021D1CB4: ; 0x021D1CB4 - .space 0x4 - - .global UNK_021D1CB8 -UNK_021D1CB8: ; 0x021D1CB8 - .space 0x4 - - .global UNK_021D1CBC -UNK_021D1CBC: ; 0x021D1CBC - .space 0x140 - - .global UNK_021D1DFC -UNK_021D1DFC: ; 0x021D1DFC - .space 0xc - - .global UNK_021D1E08 -UNK_021D1E08: ; 0x021D1E08 - .space 0xc - - .global UNK_021D1E14 -UNK_021D1E14: ; 0x021D1E14 - .space 0x440 - - .global UNK_021D2254 -UNK_021D2254: ; 0x021D2254 - .space 0x8 - - .global UNK_021D225C -UNK_021D225C: ; 0x021D225C - .space 0x10 - - .global UNK_021D226C -UNK_021D226C: ; 0x021D226C - .space 0x4 - - .global UNK_021D2270 -UNK_021D2270: ; 0x021D2270 - .space 0x4 - - .global UNK_021D2274 -UNK_021D2274: ; 0x021D2274 - .space 0x460 - - .global UNK_021D26D4 -UNK_021D26D4: ; 0x021D26D4 - .space 0x4 - - .global UNK_021D26D8 -UNK_021D26D8: ; 0x021D26D8 - .space 0xc - - .global UNK_021D26E4 -UNK_021D26E4: ; 0x021D26E4 - .space 0x40 - - .global UNK_021D2724 -UNK_021D2724: ; 0x021D2724 - .space 0x80 - - .global UNK_021D27A4 -UNK_021D27A4: ; 0x021D27A4 - .space 0x4 - - .global UNK_021D27A8 -UNK_021D27A8: ; 0x021D27A8 - .space 0x4 - - .global UNK_021D27AC -UNK_021D27AC: ; 0x021D27AC - .space 0x20 - - .global UNK_021D27CC -UNK_021D27CC: ; 0x021D27CC - .space 0x54 - - .global UNK_021D2820 -UNK_021D2820: ; 0x021D2820 - .space 0xa0 - - .global UNK_021D28C0 -UNK_021D28C0: ; 0x021D28C0 - .space 0x4 - - .global UNK_021D28C4 -UNK_021D28C4: ; 0x021D28C4 - .space 0x3c - - .global UNK_021D2900 -UNK_021D2900: ; 0x021D2900 - .space 0x4 - - .global UNK_021D2904 -UNK_021D2904: ; 0x021D2904 - .space 0x4d4 - - .global UNK_021D2DD8 -UNK_021D2DD8: ; 0x021D2DD8 - .space 0x18 - - .global UNK_021D2DF0 -UNK_021D2DF0: ; 0x021D2DF0 - .space 0xc - - .global UNK_021D2DFC -UNK_021D2DFC: ; 0x021D2DFC - .space 0x5c0 - - .text - - arm_func_start FUN_020C0130 -FUN_020C0130: ; 0x020C0130 - ldr ip, _020C0138 ; =FUN_020C187C - bx r12 - .balign 4 -_020C0138: .word FUN_020C187C - - arm_func_start FUN_020C013C -FUN_020C013C: ; 0x020C013C - stmdb sp!, {r4,lr} - bl FUN_020C18F8 - mov r0, #0x0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - bl SND_StopTimer - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C0174 -FUN_020C0174: ; 0x020C0174 - stmdb sp!, {lr} - sub sp, sp, #0x4 - cmp r0, #0x0 - beq _020C0194 - mov r0, #0x40 - bl SND_SetMasterPan - add sp, sp, #0x4 - ldmia sp!, {pc} -_020C0194: - bl SND_ResetMasterPan - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C01A0 -FUN_020C01A0: ; 0x020C01A0 - stmdb sp!, {r4,lr} - mov r4, #0x0 -_020C01A8: - mov r0, r4 - bl SND_RecvCommandReply - cmp r0, #0x0 - bne _020C01A8 - bl FUN_020C0BA0 - bl FUN_020C1D9C - bl FUN_020C3C88 - mov r0, #0x0 - bl SND_FlushCommand - ldmia sp!, {r4,pc} - - arm_func_start SDAT_Init -SDAT_Init: ; 0x020C01D0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020C0254 ; =UNK_021D1C94 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - mov r1, #0x1 - str r1, [r0, #0x0] - bl SND_Init - ldr ip, _020C0258 ; =FUN_020C013C - ldr r0, _020C025C ; =UNK_021D1C98 - mov r3, #0x0 - ldr r1, _020C0260 ; =UNK_021D1CA4 - ldr r2, _020C0264 ; =FUN_020C0130 - str r12, [r0, #0x0] - str r3, [r0, #0x4] - str r2, [r1, #0x0] - str r3, [r1, #0x4] - bl PM_PrependPreSleepCallback - ldr r0, _020C0260 ; =UNK_021D1CA4 - bl PM_AppendPostSleepCallback - bl FUN_020C0270 - bl FUN_020C1E38 - bl FUN_020C0D20 - ldr r1, _020C0268 ; =UNK_021D1C8C - mvn r3, #0x0 - ldr r0, _020C026C ; =UNK_021D1C90 - mov r2, #0x1 - strb r3, [r1, #0x0] - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020C0254: .word UNK_021D1C94 -_020C0258: .word FUN_020C013C -_020C025C: .word UNK_021D1C98 -_020C0260: .word UNK_021D1CA4 -_020C0264: .word FUN_020C0130 -_020C0268: .word UNK_021D1C8C -_020C026C: .word UNK_021D1C90 - - arm_func_start FUN_020C0270 -FUN_020C0270: ; 0x020C0270 - ldr r2, _020C0290 ; =UNK_021D1CB8 - mov r3, #0x0 - ldr r1, _020C0294 ; =UNK_021D1CB0 - ldr r0, _020C0298 ; =UNK_021D1CB4 - str r3, [r2, #0x0] - str r3, [r1, #0x0] - str r3, [r0, #0x0] - bx lr - .balign 4 -_020C0290: .word UNK_021D1CB8 -_020C0294: .word UNK_021D1CB0 -_020C0298: .word UNK_021D1CB4 - - arm_func_start FUN_020C029C -FUN_020C029C: ; 0x020C029C - ldr r1, _020C02B8 ; =UNK_021D1CB4 - mov r2, #0x1 - mvn r0, r2, lsl r0 - ldr r2, [r1, #0x0] - and r0, r2, r0 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020C02B8: .word UNK_021D1CB4 - - arm_func_start FUN_020C02BC -FUN_020C02BC: ; 0x020C02BC - ldr r0, _020C02FC ; =UNK_021D1CB4 - mov r3, #0x1 - ldr r2, [r0, #0x0] - mov r0, #0x0 -_020C02CC: - ands r1, r2, r3 - ldreq r1, _020C02FC ; =UNK_021D1CB4 - ldreq r2, [r1, #0x0] - orreq r2, r2, r3 - streq r2, [r1, #0x0] - bxeq lr - add r0, r0, #0x1 - cmp r0, #0x8 - mov r3, r3, lsl #0x1 - blt _020C02CC - mvn r0, #0x0 - bx lr - .balign 4 -_020C02FC: .word UNK_021D1CB4 - - arm_func_start FUN_020C0300 -FUN_020C0300: ; 0x020C0300 - ldr r1, _020C0318 ; =UNK_021D1CB0 - mvn r0, r0 - ldr r2, [r1, #0x0] - and r0, r2, r0 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020C0318: .word UNK_021D1CB0 - - arm_func_start FUN_020C031C -FUN_020C031C: - ldr r1, _020C033C ; =UNK_021D1CB0 - ldr r2, [r1, #0x0] - ands r3, r0, r2 - movne r0, #0x0 - orreq r0, r2, r0 - streq r0, [r1, #0x0] - moveq r0, #0x1 - bx lr - .balign 4 -_020C033C: .word UNK_021D1CB0 - - arm_func_start FUN_020C0340 -FUN_020C0340: - stmdb sp!, {r4,lr} - movs r4, r0 - ldmeqia sp!, {r4,pc} - mov r1, #0x0 - bl SND_UnlockChannel - ldr r0, _020C036C ; =UNK_021D1CB8 - mvn r1, r4 - ldr r2, [r0, #0x0] - and r1, r2, r1 - str r1, [r0, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020C036C: .word UNK_021D1CB8 - - arm_func_start FUN_020C0370 -FUN_020C0370: - stmdb sp!, {r4,lr} - movs r4, r0 - moveq r0, #0x1 - ldmeqia sp!, {r4,pc} - ldr r1, _020C03B4 ; =UNK_021D1CB8 - ldr r1, [r1, #0x0] - ands r1, r4, r1 - movne r0, #0x0 - ldmneia sp!, {r4,pc} - mov r1, #0x0 - bl SND_LockChannel - ldr r1, _020C03B4 ; =UNK_021D1CB8 - mov r0, #0x1 - ldr r2, [r1, #0x0] - orr r2, r2, r4 - str r2, [r1, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020C03B4: .word UNK_021D1CB8 - - arm_func_start FUN_020C03B8 -FUN_020C03B8: ; 0x020C03B8 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x8] - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, [r4, #0xc] - cmp r0, #0x0 - bne _020C03F8 - ldr r0, [r4, #0x10] - bl SND_IsFinishedCommandTag - cmp r0, #0x0 - moveq r0, #0x1 - ldmeqia sp!, {r4,pc} - mov r0, #0x1 - str r0, [r4, #0xc] -_020C03F8: - bl SND_GetChannelStatus - ldr r1, [r4, #0x0] - mov r2, #0x1 - mov r1, r2, lsl r1 - ands r0, r1, r0 - movne r0, r2 - moveq r0, #0x0 - streq r0, [r4, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C041C -FUN_020C041C: ; 0x020C041C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x8] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x0] - mov r2, #0x1 - mov r0, r2, lsl r0 - bl SND_SetChannelPan - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C044C -FUN_020C044C: ; 0x020C044C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, [r5, #0x8] - mov r4, r1 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r2, [r5, #0x4] - ldr r0, _020C04D4 ; =0xD87F8000 - mov r3, r2, asr #0x1f - mov r1, #0x7f - bl _ll_udiv - mov r2, r4 - mov r3, r4, asr #0x1f - bl _ll_udiv - mov r2, #0x0 - mov r3, r0 - mov r0, #0x10 - cmp r1, r2 - cmpeq r3, r0 - movcc r3, r0 - blo _020C04B8 - ldr r0, _020C04D8 ; =0x0000FFFF - cmp r1, r2 - cmpeq r3, r0 - movhi r3, r0 -_020C04B8: - ldr r0, [r5, #0x0] - mov r1, #0x1 - mov r0, r1, lsl r0 - mov r1, r3 - bl SND_SetChannelTimer - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C04D4: .word 0xD87F8000 -_020C04D8: .word 0x0000FFFF - - arm_func_start FUN_020C04DC -FUN_020C04DC: ; 0x020C04DC - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x8] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x0] - mov r2, #0x1 - mov r0, r2, lsl r0 - mov r2, #0x0 - bl SND_SetChannelVolume - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0510 -FUN_020C0510: ; 0x020C0510 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x8] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, [r4, #0x0] - mov r2, #0x1 - mov r1, #0x0 - mov r0, r2, lsl r0 - mov r2, r1 - mov r3, r1 - bl SND_StopTimer - mov r0, #0x0 - str r0, [r4, #0x8] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C054C -FUN_020C054C: ; 0x020C054C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x1c - movs r8, r1 - mov r9, r0 - mov r7, r2 - mov r6, r3 - beq _020C0584 - cmp r8, #0x1 - ldreq r0, [sp, #0x3c] - ldreq r1, [sp, #0x38] - moveq r0, r0, asr #0x1 - moveq r5, r1, asr #0x1 - subeq r4, r0, r1, asr #0x1 - b _020C0598 -_020C0584: - ldr r0, [sp, #0x3c] - ldr r1, [sp, #0x38] - mov r0, r0, asr #0x2 - mov r5, r1, asr #0x2 - sub r4, r0, r1, asr #0x2 -_020C0598: - ldr r2, [sp, #0x40] - ldr r0, _020C0668 ; =0xD87F8000 - mov r3, r2, asr #0x1f - mov r1, #0x7f - bl _ll_udiv - ldr r2, [sp, #0x48] - mov r3, r2, asr #0x1f - bl _ll_udiv - mov r3, #0x0 - mov r2, #0x10 - cmp r1, r3 - cmpeq r0, r2 - movcc r0, r2 - blo _020C05E0 - ldr r2, _020C066C ; =0x0000FFFF - cmp r1, r3 - cmpeq r0, r2 - movhi r0, r2 -_020C05E0: - str r5, [sp, #0x0] - ldr r1, [sp, #0x44] - str r4, [sp, #0x4] - str r1, [sp, #0x8] - mov r1, #0x0 - str r1, [sp, #0xc] - cmp r6, #0x0 - movne r3, #0x1 - ldr r1, [sp, #0x4c] - str r0, [sp, #0x10] - str r1, [sp, #0x14] - ldr r0, [r9, #0x0] - moveq r3, #0x2 - mov r1, r8 - mov r2, r7 - bl SND_SetupChannelPcm - mov r1, #0x0 - ldr r0, [r9, #0x0] - mov r2, #0x1 - mov r0, r2, lsl r0 - mov r2, r1 - mov r3, r1 - bl SND_StartTimer - mov r0, #0x1 - str r0, [r9, #0x8] - mov r0, #0x0 - str r0, [r9, #0xc] - bl SND_GetCurrentCommandTag - str r0, [r9, #0x10] - ldr r1, [sp, #0x40] - mov r0, #0x1 - str r1, [r9, #0x4] - add sp, sp, #0x1c - ldmia sp!, {r4-r9,pc} - .balign 4 -_020C0668: .word 0xD87F8000 -_020C066C: .word 0x0000FFFF - - arm_func_start FUN_020C0670 -FUN_020C0670: ; 0x020C0670 - ldr r0, [r0, #0x0] - mov r1, #0x1 - ldr ip, _020C0684 ; =FUN_020C0340 - mov r0, r1, lsl r0 - bx r12 - .balign 4 -_020C0684: .word FUN_020C0340 - - arm_func_start FUN_020C0688 -FUN_020C0688: ; 0x020C0688 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, #0x1 - mov r0, r0, lsl r4 - bl FUN_020C0370 - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, #0x14 - mul r0, r4, r0 - ldr r2, _020C06C8 ; =UNK_021D1CBC - mov r1, #0x0 - str r4, [r2, r0] - add r0, r2, r0 - str r1, [r0, #0x8] - ldmia sp!, {r4,pc} - .balign 4 -_020C06C8: .word UNK_021D1CBC - - arm_func_start FUN_020C06CC -FUN_020C06CC: ; 0x020C06CC - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r4, [r6, #0x4] - mov r5, r1 - cmp r4, #0x0 - beq _020C06F8 - mov r0, r4 - mov r1, r6 - bl FUN_020ADAB0 - mov r0, #0x0 - str r0, [r6, #0x4] -_020C06F8: - ldr r0, _020C0728 ; =UNK_021D1E08 - mov r1, r6 - bl FUN_020ADAB0 - strb r5, [r6, #0x3d] - cmp r4, #0x0 - beq _020C071C - mov r0, r4 - mov r1, r6 - bl FUN_020C0910 -_020C071C: - mov r0, r6 - bl FUN_020C08B4 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C0728: .word UNK_021D1E08 - - arm_func_start FUN_020C072C -FUN_020C072C: ; 0x020C072C - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x8] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - bl FUN_020C2A7C - ldr r1, [r4, #0xc] - cmp r1, #0x0 - movne r0, #0x0 - strne r0, [r1, #0x8] - ldmneia sp!, {r4,pc} - ldr r1, [r4, #0x10] - ldr r2, _020C0778 ; =UNK_021D2254 - mov r0, #0x24 - mla r0, r1, r0, r2 - mov r1, r4 - add r0, r0, #0xc - bl FUN_020ADAB0 - ldmia sp!, {r4,pc} - .balign 4 -_020C0778: .word UNK_021D2254 - - arm_func_start FUN_020C077C -FUN_020C077C: ; 0x020C077C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r1, [r4, #0x0] - cmp r1, #0x0 - movne r0, #0x0 - strne r0, [r1, #0x0] - strne r0, [r4, #0x0] - ldr r5, [r4, #0x4] - mov r1, r4 - mov r0, r5 - bl FUN_020ADAB0 - mov r0, #0x0 - str r0, [r4, #0x4] - ldr r1, [r4, #0x8] - cmp r1, #0x0 - beq _020C07D8 - add r0, r5, #0xc - bl FUN_020ADBE8 - ldr r0, [r4, #0x8] - mov r1, #0x0 - str r1, [r0, #0xc] - str r1, [r4, #0x8] -_020C07D8: - ldr r0, _020C0800 ; =UNK_021D1E08 - mov r1, r4 - bl FUN_020ADAB0 - ldr r0, _020C0804 ; =UNK_021D1DFC - mov r1, r4 - bl FUN_020ADBE8 - mov r0, #0x0 - strb r0, [r4, #0x2c] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C0800: .word UNK_021D1E08 -_020C0804: .word UNK_021D1DFC - - arm_func_start FUN_020C0808 -FUN_020C0808: ; 0x020C0808 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, _020C0874 ; =UNK_021D1DFC - mov r1, #0x0 - bl FUN_020ADA98 - movs r4, r0 - bne _020C0850 - ldr r0, _020C0878 ; =UNK_021D1E08 - mov r1, #0x0 - bl FUN_020ADA98 - mov r4, r0 - ldrb r1, [r4, #0x3d] - cmp r5, r1 - addlt sp, sp, #0x4 - movlt r0, #0x0 - ldmltia sp!, {r4-r5,pc} - bl FUN_020C087C -_020C0850: - ldr r0, _020C0874 ; =UNK_021D1DFC - mov r1, r4 - bl FUN_020ADAB0 - mov r0, r4 - strb r5, [r4, #0x3d] - bl FUN_020C08B4 - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C0874: .word UNK_021D1DFC -_020C0878: .word UNK_021D1E08 - - arm_func_start FUN_020C087C -FUN_020C087C: ; 0x020C087C - stmdb sp!, {r4,lr} - mov r4, r0 - ldrb r0, [r4, #0x2c] - cmp r0, #0x2 - bne _020C089C - ldrb r0, [r4, #0x3c] - ldr r1, _020C08B0 ; =0xFFFFFD2D - bl SND_SetPlayerVolume -_020C089C: - ldrb r0, [r4, #0x3c] - bl SND_StopSeq - mov r0, r4 - bl FUN_020C077C - ldmia sp!, {r4,pc} - .balign 4 -_020C08B0: .word 0xFFFFFD2D - - arm_func_start FUN_020C08B4 -FUN_020C08B4: ; 0x020C08B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, _020C090C ; =UNK_021D1E08 - mov r1, #0x0 - bl FUN_020ADA98 - movs r1, r0 - beq _020C08F8 - ldr r4, _020C090C ; =UNK_021D1E08 -_020C08D8: - ldrb r2, [r5, #0x3d] - ldrb r0, [r1, #0x3d] - cmp r2, r0 - blo _020C08F8 - mov r0, r4 - bl FUN_020ADA98 - movs r1, r0 - bne _020C08D8 -_020C08F8: - ldr r0, _020C090C ; =UNK_021D1E08 - mov r2, r5 - bl FUN_020ADB18 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C090C: .word UNK_021D1E08 - - arm_func_start FUN_020C0910 -FUN_020C0910: ; 0x020C0910 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, #0x0 - mov r5, r0 - bl FUN_020ADA98 - movs r1, r0 - beq _020C0950 -_020C0930: - ldrb r2, [r4, #0x3d] - ldrb r0, [r1, #0x3d] - cmp r2, r0 - blo _020C0950 - mov r0, r5 - bl FUN_020ADA98 - movs r1, r0 - bne _020C0930 -_020C0950: - mov r0, r5 - mov r2, r4 - bl FUN_020ADB18 - str r5, [r4, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C0968 -FUN_020C0968: ; 0x020C0968 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, #0x0 - strb r0, [r4, #0x2e] - strb r0, [r4, #0x2d] - strb r0, [r4, #0x2f] - strh r0, [r4, #0x34] - strh r0, [r4, #0x3e] - mov r1, #0x7f - strb r1, [r4, #0x40] - add r0, r4, #0x1c - strb r1, [r4, #0x41] - bl FUN_020C3E6C - add r0, r4, #0x1c - mov r1, #0x7f00 - mov r2, #0x1 - bl FUN_020C3E40 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C09B0 -FUN_020C09B0: ; 0x020C09B0 - stmdb sp!, {r4-r6,lr} - ldr r3, _020C0A00 ; =UNK_021D2254 - mov r2, #0x24 - mla r5, r0, r2, r3 - mov r6, r1 - add r0, r5, #0xc - mov r1, #0x0 - bl FUN_020ADA98 - movs r4, r0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r1, r4 - add r0, r5, #0xc - bl FUN_020ADAB0 - str r6, [r4, #0xc] - str r4, [r6, #0x8] - ldr r0, [r4, #0x8] - bl FUN_020C29C0 - ldr r0, [r4, #0x8] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C0A00: .word UNK_021D2254 - - arm_func_start FUN_020C0A04 -FUN_020C0A04: ; 0x020C0A04 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - movs r5, r0 - mov r4, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldrb r0, [r5, #0x2e] - cmp r4, r0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldrb r0, [r5, #0x3c] - bl SND_PauseSeq - strb r4, [r5, #0x2e] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C0A40 -FUN_020C0A40: ; 0x020C0A40 - stmdb sp!, {r4,lr} - movs r4, r0 - mov r2, r1 - ldmeqia sp!, {r4,pc} - ldrb r1, [r4, #0x2c] - cmp r1, #0x0 - ldmeqia sp!, {r4,pc} - cmp r2, #0x0 - bne _020C0A6C - bl FUN_020C087C - ldmia sp!, {r4,pc} -_020C0A6C: - add r0, r4, #0x1c - mov r1, #0x0 - bl FUN_020C3E40 - mov r0, r4 - mov r1, #0x0 - bl FUN_020C06CC - mov r0, #0x2 - strb r0, [r4, #0x2c] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C0A90 -FUN_020C0A90: ; 0x020C0A90 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrb r0, [r5, #0x3c] - ldr r4, [r5, #0x4] - bl SND_PrepareSeq - ldr r2, [r4, #0x1c] - cmp r2, #0x0 - beq _020C0AC0 - ldrb r0, [r5, #0x3c] - ldr r1, _020C0AE4 ; =0x0000FFFF - bl SND_SetTrackAllocatableChannel -_020C0AC0: - mov r0, r5 - bl FUN_020C0968 - bl SND_GetCurrentCommandTag - str r0, [r5, #0x30] - mov r0, #0x1 - strb r0, [r5, #0x2f] - strb r0, [r5, #0x2c] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C0AE4: .word 0x0000FFFF - - arm_func_start thunk_FUN_020c077c -thunk_FUN_020c077c: ; 0x020C0AE8 - ldr ip, _020C0AF0 ; =FUN_020C077C - bx r12 - .balign 4 -_020C0AF0: .word FUN_020C077C - - arm_func_start FUN_020C0AF4 -FUN_020C0AF4: ; 0x020C0AF4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr ip, _020C0B9C ; =UNK_021D2254 - mov r3, #0x24 - mov r4, r0 - ldr r5, [r4, #0x0] - mla r6, r1, r3, r12 - mov r7, r2 - cmp r5, #0x0 - beq _020C0B20 - bl FUN_020C0F68 -_020C0B20: - ldrh r1, [r6, #0x8] - ldr r0, [r6, #0x18] - cmp r1, r0 - blo _020C0B64 - mov r0, r6 - mov r1, #0x0 - bl FUN_020ADA98 - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - ldrb r1, [r0, #0x3d] - cmp r7, r1 - addlt sp, sp, #0x4 - movlt r0, #0x0 - ldmltia sp!, {r4-r7,pc} - bl FUN_020C087C -_020C0B64: - mov r0, r7 - bl FUN_020C0808 - movs r5, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - mov r0, r6 - mov r1, r5 - bl FUN_020C0910 - str r4, [r5, #0x0] - mov r0, r5 - str r5, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C0B9C: .word UNK_021D2254 - - arm_func_start FUN_020C0BA0 -FUN_020C0BA0: ; 0x020C0BA0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - bl SND_GetPlayerStatus - str r0, [sp, #0x0] - ldr r0, _020C0D14 ; =UNK_021D1E08 - mov r1, #0x0 - bl FUN_020ADA98 - movs r10, r0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4-r11,pc} - mov r0, #0x8000 - rsb r0, r0, #0x0 - ldr r4, _020C0D18 ; =SNDi_DecibelTable - str r0, [sp, #0x4] - mov r5, #0x1 - mov r11, #0x0 -_020C0BE0: - ldr r0, _020C0D14 ; =UNK_021D1E08 - mov r1, r10 - bl FUN_020ADA98 - ldrb r1, [r10, #0x2d] - mov r9, r0 - cmp r1, #0x0 - bne _020C0C0C - ldr r0, [r10, #0x30] - bl SND_IsFinishedCommandTag - cmp r0, #0x0 - strneb r5, [r10, #0x2d] -_020C0C0C: - ldrb r0, [r10, #0x2d] - cmp r0, #0x0 - beq _020C0C38 - ldrb r0, [r10, #0x3c] - mov r1, r5, lsl r0 - ldr r0, [sp, #0x0] - ands r0, r0, r1 - bne _020C0C38 - mov r0, r10 - bl FUN_020C077C - b _020C0D00 -_020C0C38: - add r0, r10, #0x1c - bl FUN_020C3DF4 - ldr r0, [r10, #0x4] - ldrb r2, [r10, #0x41] - ldrb r1, [r10, #0x40] - ldrb r0, [r0, #0x20] - mov r3, r2, lsl #0x1 - mov r2, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - add r0, r10, #0x1c - ldrsh r8, [r4, r3] - ldrsh r7, [r4, r2] - ldrsh r6, [r4, r1] - bl FUN_020C3E0C - mov r0, r0, asr #0x8 - mov r2, r0, lsl #0x1 - add r1, r7, r8 - mov r0, #0x8000 - ldrsh r2, [r4, r2] - add r1, r6, r1 - rsb r0, r0, #0x0 - add r6, r2, r1 - cmp r6, r0 - ldrlt r6, [sp, #0x4] - blt _020C0CA8 - ldr r0, _020C0D1C ; =0x00007FFF - cmp r6, r0 - movgt r6, r0 -_020C0CA8: - ldrsh r0, [r10, #0x3e] - cmp r6, r0 - beq _020C0CC4 - ldrb r0, [r10, #0x3c] - mov r1, r6 - bl SND_SetPlayerVolume - strh r6, [r10, #0x3e] -_020C0CC4: - ldrb r0, [r10, #0x2c] - cmp r0, #0x2 - bne _020C0CE8 - add r0, r10, #0x1c - bl FUN_020C3DDC - cmp r0, #0x0 - beq _020C0CE8 - mov r0, r10 - bl FUN_020C087C -_020C0CE8: - ldrb r0, [r10, #0x2f] - cmp r0, #0x0 - beq _020C0D00 - ldrb r0, [r10, #0x3c] - bl SND_StartPreparedSeq - strb r11, [r10, #0x2f] -_020C0D00: - mov r10, r9 - cmp r9, #0x0 - bne _020C0BE0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C0D14: .word UNK_021D1E08 -_020C0D18: .word SNDi_DecibelTable -_020C0D1C: .word 0x00007FFF - - arm_func_start FUN_020C0D20 -FUN_020C0D20: ; 0x020C0D20 - stmdb sp!, {r4-r10,lr} - ldr r0, _020C0DC4 ; =UNK_021D1E08 - mov r1, #0x14 - bl FUN_020ADC74 - ldr r0, _020C0DC8 ; =UNK_021D1DFC - mov r1, #0x14 - bl FUN_020ADC74 - ldr r6, _020C0DCC ; =UNK_021D1E14 - mov r7, #0x0 - ldr r4, _020C0DC8 ; =UNK_021D1DFC - mov r5, r7 -_020C0D4C: - strb r5, [r6, #0x2c] - mov r0, r4 - mov r1, r6 - strb r7, [r6, #0x3c] - bl FUN_020ADBE8 - add r7, r7, #0x1 - cmp r7, #0x10 - add r6, r6, #0x44 - blt _020C0D4C - ldr sl, _020C0DD0 ; =UNK_021D2254 - mov r9, #0x0 - mov r7, r9 - mov r4, r9 - mov r8, #0xc - mov r6, #0x7f - mov r5, #0x1 -_020C0D8C: - mov r0, r10 - mov r1, r8 - bl FUN_020ADC74 - mov r1, r7 - add r0, r10, #0xc - bl FUN_020ADC74 - strb r6, [r10, #0x20] - str r5, [r10, #0x18] - add r9, r9, #0x1 - str r4, [r10, #0x1c] - cmp r9, #0x20 - add r10, r10, #0x24 - blt _020C0D8C - ldmia sp!, {r4-r10,pc} - .balign 4 -_020C0DC4: .word UNK_021D1E08 -_020C0DC8: .word UNK_021D1DFC -_020C0DCC: .word UNK_021D1E14 -_020C0DD0: .word UNK_021D2254 - - arm_func_start FUN_020C0DD4 -FUN_020C0DD4: ; 0x020C0DD4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {pc} - ldrb r0, [r1, #0x2d] - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {pc} - ldrb r0, [r1, #0x3c] - bl SND_GetPlayerTickCounter - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0E14 -FUN_020C0E14: ; 0x020C0E14 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - mvneq r0, #0x0 - bxeq lr - ldrh r0, [r1, #0x34] - cmp r0, #0x1 - mvnne r0, #0x0 - ldreqh r0, [r1, #0x38] - bx lr - - arm_func_start FUN_020C0E38 -FUN_020C0E38: ; 0x020C0E38 - ldr r12, [r0, #0x0] - cmp r12, #0x0 - bxeq lr - mov r3, #0x2 - strh r3, [r12, #0x34] - ldr r3, [r0, #0x0] - strh r1, [r3, #0x38] - ldr r0, [r0, #0x0] - strh r2, [r0, #0x3a] - bx lr - - arm_func_start FUN_020C0E60 -FUN_020C0E60: ; 0x020C0E60 - ldr r3, [r0, #0x0] - cmp r3, #0x0 - movne r2, #0x1 - strneh r2, [r3, #0x34] - ldrne r0, [r0, #0x0] - strneh r1, [r0, #0x38] - bx lr - - arm_func_start FUN_020C0E7C -FUN_020C0E7C: ; 0x020C0E7C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r0, #0x3c] - bl SND_SetTrackPan - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0EA4 -FUN_020C0EA4: ; 0x020C0EA4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r0, #0x3c] - bl SND_SetTrackPitch - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0ECC -FUN_020C0ECC: ; 0x020C0ECC - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r0, #0x3c] - bl SND_SetPlayerChannelPriority - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0EF4 -FUN_020C0EF4: ; 0x020C0EF4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x0] - cmp r3, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldrb r0, [r3, #0x2c] - cmp r0, #0x2 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - add r0, r3, #0x1c - mov r1, r1, lsl #0x8 - bl FUN_020C3E40 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C0F30 -FUN_020C0F30: ; 0x020C0F30 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - strneb r1, [r0, #0x40] - bx lr - - arm_func_start FUN_020C0F40 -FUN_020C0F40: ; 0x020C0F40 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - strneb r1, [r0, #0x41] - bx lr - - arm_func_start FUN_020C0F50 -FUN_020C0F50: ; 0x020C0F50 - mov r1, #0x24 - mul r1, r0, r1 - ldr r0, _020C0F64 ; =UNK_021D225C - ldrh r0, [r0, r1] - bx lr - .balign 4 -_020C0F64: .word UNK_021D225C - - arm_func_start FUN_020C0F68 -FUN_020C0F68: ; 0x020C0F68 - ldr r2, [r0, #0x0] - cmp r2, #0x0 - movne r1, #0x0 - strne r1, [r2, #0x0] - strne r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020C0F80 -FUN_020C0F80: ; 0x020C0F80 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - - arm_func_start FUN_020C0F8C -FUN_020C0F8C: ; 0x020C0F8C - ldr ip, _020C0F98 ; =FUN_020C0A04 - ldr r0, [r0, #0x0] - bx r12 - .balign 4 -_020C0F98: .word FUN_020C0A04 - - arm_func_start FUN_020C0F9C -FUN_020C0F9C: ; 0x020C0F9C - stmdb sp!, {r4-r6,lr} - ldr r4, _020C0FD8 ; =UNK_021D1E14 - mov r6, r0 - mov r5, #0x0 -_020C0FAC: - ldrb r0, [r4, #0x2c] - cmp r0, #0x0 - beq _020C0FC4 - mov r0, r4 - mov r1, r6 - bl FUN_020C0A40 -_020C0FC4: - add r5, r5, #0x1 - cmp r5, #0x10 - add r4, r4, #0x44 - blt _020C0FAC - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C0FD8: .word UNK_021D1E14 - - arm_func_start FUN_020C0FDC -FUN_020C0FDC: ; 0x020C0FDC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r4, _020C103C ; =UNK_021D1E14 - mov r7, r0 - mov r6, r1 - mov r5, #0x0 -_020C0FF4: - ldrb r0, [r4, #0x2c] - cmp r0, #0x0 - beq _020C1024 - ldrh r0, [r4, #0x34] - cmp r0, #0x1 - bne _020C1024 - ldrh r0, [r4, #0x38] - cmp r0, r7 - bne _020C1024 - mov r0, r4 - mov r1, r6 - bl FUN_020C0A40 -_020C1024: - add r5, r5, #0x1 - cmp r5, #0x10 - add r4, r4, #0x44 - blt _020C0FF4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C103C: .word UNK_021D1E14 - - arm_func_start FUN_020C1040 -FUN_020C1040: ; 0x020C1040 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r3, _020C109C ; =UNK_021D2254 - mov r2, #0x24 - mla r4, r0, r2, r3 - ldr r5, _020C10A0 ; =UNK_021D1E14 - mov r7, r1 - mov r6, #0x0 -_020C1060: - ldrb r0, [r5, #0x2c] - cmp r0, #0x0 - beq _020C1084 - ldr r0, [r5, #0x4] - cmp r0, r4 - bne _020C1084 - mov r0, r5 - mov r1, r7 - bl FUN_020C0A40 -_020C1084: - add r6, r6, #0x1 - cmp r6, #0x10 - add r5, r5, #0x44 - blt _020C1060 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C109C: .word UNK_021D2254 -_020C10A0: .word UNK_021D1E14 - - arm_func_start FUN_020C10A4 -FUN_020C10A4: ; 0x020C10A4 - ldr ip, _020C10B0 ; =FUN_020C0A40 - ldr r0, [r0, #0x0] - bx r12 - .balign 4 -_020C10B0: .word FUN_020C0A40 - - arm_func_start FUN_020C10B4 -FUN_020C10B4: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r5, r2 - mov r6, r0 - mov r0, r1 - mov r3, #0x0 - ldr r2, _020C1140 ; =FUN_020C072C - add r1, r5, #0x14 - str r3, [sp, #0x0] - bl SDATi_AllocAndInitChunk - movs r4, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r2, #0x0 - str r2, [r4, #0xc] - str r6, [r4, #0x10] - mov r1, r5 - add r0, r4, #0x14 - str r2, [r4, #0x8] - bl FUN_020C2A94 - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r2, _020C1144 ; =UNK_021D2254 - mov r1, #0x24 - mla r2, r6, r1, r2 - str r0, [r4, #0x8] - mov r1, r4 - add r0, r2, #0xc - bl FUN_020ADBE8 - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C1140: .word FUN_020C072C -_020C1144: .word UNK_021D2254 - - arm_func_start FUN_020C1148 -FUN_020C1148: ; 0x020C1148 - mov r2, #0x24 - mul r2, r0, r2 - ldr r0, _020C115C ; =UNK_021D2270 - str r1, [r0, r2] - bx lr - .balign 4 -_020C115C: .word UNK_021D2270 - - arm_func_start FUN_020C1160 -FUN_020C1160: ; 0x020C1160 - mov r2, #0x24 - mul r2, r0, r2 - mov r0, r1, lsl #0x10 - ldr r1, _020C117C ; =UNK_021D226C - mov r0, r0, lsr #0x10 - str r0, [r1, r2] - bx lr - .balign 4 -_020C117C: .word UNK_021D226C - - arm_func_start FUN_020C1180 -FUN_020C1180: ; 0x020C1180 - mov r2, #0x24 - mul r2, r0, r2 - ldr r0, _020C1194 ; =UNK_021D2274 - strb r1, [r0, r2] - bx lr - .balign 4 -_020C1194: .word UNK_021D2274 - - arm_func_start FUN_020C1198 -FUN_020C1198: ; 0x020C1198 - stmdb sp!, {r4-r6,lr} - mov r4, r0 - ldr r0, [r4, #0x24] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - ldmeqia sp!, {r4-r6,pc} - ldr r0, [r4, #0x38] - cmp r0, #0x0 - beq _020C11E8 - mov r5, #0x1 -_020C11C0: - bl OS_DisableInterrupts - mov r6, r0 - mov r0, r4 - mov r1, r5 - bl FUN_020C1254 - mov r0, r6 - bl OS_RestoreInterrupts - ldr r0, [r4, #0x38] - cmp r0, #0x0 - bne _020C11C0 -_020C11E8: - ldr r0, [r4, #0x40] - mov r2, #0x1 - mov r1, #0x0 - mov r2, r2, lsl r0 - ldr r0, [r4, #0x44] - mov r3, r1 - bl SND_StartTimer - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C1208 -FUN_020C1208: ; 0x020C1208 - stmdb sp!, {r4,lr} - ldr r1, [r0, #0x24] - mov r1, r1, lsl #0x1e - movs r1, r1, asr #0x1f - ldmeqia sp!, {r4,pc} - ldr r2, [r0, #0x40] - mov r3, #0x1 - mov r1, #0x0 - mov r2, r3, lsl r2 - ldr r0, [r0, #0x44] - mov r3, r1 - bl SND_StopTimer - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C1254 -FUN_020C1254: ; 0x020C1254 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - mov r5, r0 - mov r4, r1 - ldr r0, [r5, #0x28] - ldr r1, [r5, #0x2c] - bl _u32_div_f - ldr r1, [r5, #0x48] - ldr r2, [r5, #0x38] - mov r3, r0 - mul lr, r3, r2 - cmp r1, #0x0 - mov r12, #0x0 - ble _020C12B8 - ldr r2, _020C1300 ; =UNK_021D2724 - ldr r0, _020C1304 ; =UNK_021D26E4 -_020C1294: - add r1, r5, r12 - ldrb r1, [r1, #0x4c] - ldr r1, [r2, r1, lsl #0x3] - add r1, r1, lr - str r1, [r0, r12, lsl #0x2] - ldr r1, [r5, #0x48] - add r12, r12, #0x1 - cmp r12, r1 - blt _020C1294 -_020C12B8: - ldr r0, [r5, #0x20] - ldr r2, _020C1304 ; =UNK_021D26E4 - str r0, [sp, #0x0] - ldr r12, [r5, #0x34] - mov r0, r4 - str r12, [sp, #0x4] - ldr r4, [r5, #0x30] - blx r4 - ldr r0, [r5, #0x38] - add r0, r0, #0x1 - str r0, [r5, #0x38] - ldr r1, [r5, #0x38] - ldr r0, [r5, #0x2c] - cmp r1, r0 - movge r0, #0x0 - strge r0, [r5, #0x38] - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C1300: .word UNK_021D2724 -_020C1304: .word UNK_021D26E4 - - arm_func_start FUN_020C1308 -FUN_020C1308: ; 0x020C1308 - ldr ip, _020C1314 ; =FUN_020C1254 - mov r1, #0x1 - bx r12 - .balign 4 -_020C1314: .word FUN_020C1254 - - arm_func_start FUN_020C1318 -FUN_020C1318: ; 0x020C1318 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x40] - bl FUN_020C029C - ldr r0, _020C1344 ; =UNK_021D26D8 - mov r1, r4 - bl FUN_020ADAB0 - ldr r0, [r4, #0x24] - bic r0, r0, #0x1 - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - .balign 4 -_020C1344: .word UNK_021D26D8 - - arm_func_start FUN_020C1348 -FUN_020C1348: ; 0x020C1348 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r0, [r4, #0x24] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - beq _020C13B4 - ldr r0, [r4, #0x40] - mov r2, #0x1 - mov r1, #0x0 - mov r2, r2, lsl r0 - ldr r0, [r4, #0x44] - mov r3, r1 - bl SND_StopTimer - add r0, r4, #0x8 - bl PM_DeletePreSleepCallback - add r0, r4, #0x14 - bl PM_DeletePostSleepCallback - ldr r0, [r4, #0x24] - bic r0, r0, #0x2 - str r0, [r4, #0x24] - bl SND_GetCurrentCommandTag - mov r5, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r5 - bl SND_WaitForCommandProc -_020C13B4: - mov r0, r4 - bl FUN_020C1318 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C13C4 -FUN_020C13C4: ; 0x020C13C4 - stmdb sp!, {r4-r8,lr} - mov r7, r0 - str r1, [r7, #0x3c] - ldr r0, [r7, #0x48] - mov r5, #0x0 - cmp r0, #0x0 - ldmleia sp!, {r4-r8,pc} - ldr r4, _020C142C ; =UNK_021D2724 - mov r8, #0x1 -_020C13E8: - add r0, r7, r5 - ldrb r6, [r0, #0x4c] - ldr r1, [r7, #0x3c] - add r0, r4, r6, lsl #0x3 - ldr r0, [r0, #0x4] - add r0, r1, r0 - bl SND_CalcChannelVolume - mov r2, r0 - mov r0, r8, lsl r6 - and r1, r2, #0xff - mov r2, r2, asr #0x8 - bl SND_SetChannelVolume - ldr r0, [r7, #0x48] - add r5, r5, #0x1 - cmp r5, r0 - blt _020C13E8 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020C142C: .word UNK_021D2724 - - arm_func_start FUN_020C1430 -FUN_020C1430: ; 0x020C1430 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x24] - mov r1, r1, lsl #0x1f - movs r1, r1, asr #0x1f - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - bl FUN_020C1348 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C1458 -FUN_020C1458: ; 0x020C1458 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x40] - mov r2, #0x1 - mov r1, #0x0 - mov r2, r2, lsl r0 - ldr r0, [r4, #0x44] - mov r3, r1 - bl SND_StartTimer - ldr r0, [r4, #0x24] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - ldmneia sp!, {r4,pc} - add r0, r4, #0x8 - bl PM_PrependPreSleepCallback - add r0, r4, #0x14 - bl PM_AppendPostSleepCallback - ldr r0, [r4, #0x24] - orr r0, r0, #0x2 - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C14AC -FUN_020C14AC: ; 0x020C14AC - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x24 - mov r10, r0 - ldr r4, [r10, #0x24] - mov r9, r1 - mov r1, r4, lsl #0x1f - movs r1, r1, asr #0x1f - ldr r1, [sp, #0x4c] - str r2, [sp, #0x18] - mov r4, r3 - str r1, [sp, #0x4c] - beq _020C14E0 - bl FUN_020C1430 -_020C14E0: - ldr r0, [sp, #0x4c] - ldr r2, [r10, #0x48] - mov r0, r0, lsl #0x5 - mul r1, r2, r0 - mov r0, r4 - bl _u32_div_f - ldr r1, [sp, #0x4c] - ldr r2, [sp, #0x48] - mul r1, r0, r1 - mov r0, r1, lsl #0x5 - str r0, [r10, #0x28] - ldr r0, [r10, #0x28] - cmp r9, #0x1 - moveq r0, r0, lsr #0x1 - mul r0, r2, r0 - ldr r1, [sp, #0x4c] - bl _u32_div_f - str r0, [sp, #0x1c] - bl FUN_020C02BC - str r0, [r10, #0x40] - ldr r0, [r10, #0x40] - cmp r0, #0x0 - addlt sp, sp, #0x24 - movlt r0, #0x0 - ldmltia sp!, {r4-r11,pc} - ldr r0, [r10, #0x48] - mov r8, #0x0 - cmp r0, #0x0 - ble _020C15D4 - ldr r0, [sp, #0x48] - mov r7, r0, lsl #0x5 - ldr r6, _020C1668 ; =UNK_021D2724 - mov r5, r8 - mov r4, #0x7f - mov r11, #0x40 - mov r0, #0x1 - str r0, [sp, #0x20] -_020C1574: - ldr r2, [r10, #0x28] - ldr r1, [sp, #0x18] - add r0, r10, r8 - mla r1, r2, r8, r1 - ldrb r0, [r0, #0x4c] - ldr r3, [sp, #0x20] - str r1, [r6, r0, lsl #0x3] - add r1, r6, r0, lsl #0x3 - str r5, [r1, #0x4] - str r5, [sp, #0x0] - ldr r2, [r10, #0x28] - mov r1, r9 - mov r2, r2, lsr #0x2 - str r2, [sp, #0x4] - str r4, [sp, #0x8] - str r5, [sp, #0xc] - str r7, [sp, #0x10] - str r11, [sp, #0x14] - ldr r2, [r6, r0, lsl #0x3] - bl SND_SetupChannelPcm - ldr r0, [r10, #0x48] - add r8, r8, #0x1 - cmp r8, r0 - blt _020C1574 -_020C15D4: - str r10, [sp, #0x0] - ldr r1, [sp, #0x1c] - ldr r0, [r10, #0x40] - ldr r3, _020C166C ; =FUN_020C1308 - mov r2, r1 - bl SND_SetupAlarm - ldr r0, _020C1670 ; =UNK_021D26D8 - mov r1, r10 - bl FUN_020ADBE8 - ldr r0, [sp, #0x4c] - str r9, [r10, #0x20] - str r0, [r10, #0x2c] - ldr r1, [sp, #0x50] - ldr r0, [sp, #0x54] - str r1, [r10, #0x30] - str r0, [r10, #0x34] - mov r0, #0x0 - str r0, [r10, #0x38] - str r0, [r10, #0x3c] - ldr r0, [r10, #0x24] - bic r0, r0, #0x1 - orr r0, r0, #0x1 - str r0, [r10, #0x24] - bl OS_DisableInterrupts - mov r4, r0 - mov r2, #0x1 - mov r0, r10 - mov r1, #0x0 - str r2, [r10, #0x2c] - bl FUN_020C1254 - ldr r1, [sp, #0x4c] - mov r0, r4 - str r1, [r10, #0x2c] - bl OS_RestoreInterrupts - mov r0, #0x1 - add sp, sp, #0x24 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C1668: .word UNK_021D2724 -_020C166C: .word FUN_020C1308 -_020C1670: .word UNK_021D26D8 - - arm_func_start FUN_020C1674 -FUN_020C1674: ; 0x020C1674 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x44] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - bl FUN_020C0340 - mov r0, #0x0 - str r0, [r4, #0x44] - str r0, [r4, #0x48] - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C169C -FUN_020C169C: ; 0x020C169C - stmdb sp!, {r4-r6,lr} - mov r5, r1 - mov r4, #0x0 - mov r6, r0 - mov r12, r4 - cmp r5, #0x0 - ble _020C16DC - mov r1, #0x1 -_020C16BC: - ldrb r3, [r2, r12] - add r0, r6, r12 - strb r3, [r0, #0x4c] - ldrb r0, [r2, r12] - add r12, r12, #0x1 - cmp r12, r5 - orr r4, r4, r1, lsl r0 - blt _020C16BC -_020C16DC: - mov r0, r4 - bl FUN_020C0370 - cmp r0, #0x0 - moveq r0, #0x0 - strne r5, [r6, #0x48] - strne r4, [r6, #0x44] - movne r0, #0x1 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C16FC -FUN_020C16FC: ; 0x020C16FC - stmdb sp!, {r4,lr} - ldr r1, _020C176C ; =UNK_021D26D4 - mov r4, r0 - ldr r0, [r1, #0x0] - cmp r0, #0x0 - bne _020C172C - ldr r0, _020C1770 ; =UNK_021D26D8 - mov r1, #0x0 - bl FUN_020ADC74 - ldr r0, _020C176C ; =UNK_021D26D4 - mov r1, #0x1 - str r1, [r0, #0x0] -_020C172C: - ldr r1, _020C1774 ; =FUN_020C1208 - ldr r0, _020C1778 ; =FUN_020C1198 - str r1, [r4, #0x8] - str r4, [r4, #0xc] - str r0, [r4, #0x14] - str r4, [r4, #0x18] - mov r0, #0x0 - str r0, [r4, #0x44] - str r0, [r4, #0x48] - ldr r0, [r4, #0x24] - bic r0, r0, #0x1 - str r0, [r4, #0x24] - ldr r0, [r4, #0x24] - bic r0, r0, #0x2 - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - .balign 4 -_020C176C: .word UNK_021D26D4 -_020C1770: .word UNK_021D26D8 -_020C1774: .word FUN_020C1208 -_020C1778: .word FUN_020C1198 - - arm_func_start FUN_020C177C -FUN_020C177C: ; 0x020C177C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - ldr r4, [r7, #0x18] - ldr r0, [r7, #0x1c] - ldr r1, _020C186C ; =UNK_021D27A4 - mul r0, r4, r0 - ldr r3, [r7, #0xc] - ldr r2, [r7, #0x10] - ldr r1, [r1, #0x0] - add r6, r3, r0 - cmp r1, #0x0 - add r5, r2, r0 - beq _020C180C - ldr r2, _020C1870 ; =UNK_021D27A8 - mov r1, #0x14 - ldr r2, [r2, #0x0] - ldr r3, _020C1874 ; =UNK_021D2820 - mul r1, r2, r1 - str r7, [r3, r1] - add r1, r3, r1 - str r4, [r1, #0x4] - str r0, [r1, #0x8] - str r6, [r1, #0xc] - ldr r0, _020C1878 ; =UNK_021D27AC - mov r2, #0x0 - str r5, [r1, #0x10] - bl OS_SendMessage - ldr r0, _020C1870 ; =UNK_021D27A8 - ldr r1, [r0, #0x0] - add r1, r1, #0x1 - str r1, [r0, #0x0] - cmp r1, #0x8 - movge r1, #0x0 - strge r1, [r0, #0x0] - b _020C1844 -_020C180C: - mov r0, r6 - mov r1, r4 - bl DC_InvalidateRange - mov r0, r5 - mov r1, r4 - bl DC_InvalidateRange - ldr r1, [r7, #0x38] - mov r0, r6 - str r1, [sp, #0x0] - ldr r3, [r7, #0x8] - ldr r6, [r7, #0x34] - mov r1, r5 - mov r2, r4 - blx r6 -_020C1844: - ldr r0, [r7, #0x1c] - add r0, r0, #0x1 - str r0, [r7, #0x1c] - ldr r1, [r7, #0x1c] - ldr r0, [r7, #0x30] - cmp r1, r0 - movge r0, #0x0 - strge r0, [r7, #0x1c] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C186C: .word UNK_021D27A4 -_020C1870: .word UNK_021D27A8 -_020C1874: .word UNK_021D2820 -_020C1878: .word UNK_021D27AC - - arm_func_start FUN_020C187C -FUN_020C187C: ; 0x020C187C - stmdb sp!, {r4,lr} - ldr r4, _020C18F4 ; =UNK_021D27CC - ldr r0, [r4, #0x0] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, #0x0 - str r0, [r4, #0x1c] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x14] - bl MIi_CpuClear32 - ldr r1, [r4, #0x10] - ldr r2, [r4, #0x14] - mov r0, #0x0 - bl MIi_CpuClear32 - ldr r0, [r4, #0xc] - ldr r1, [r4, #0x14] - bl DC_FlushRange - ldr r0, [r4, #0x10] - ldr r1, [r4, #0x14] - bl DC_FlushRange - ldr r1, [r4, #0x2c] - mov r3, #0x0 - cmp r1, #0x0 - movge r0, #0x1 - movge r2, r0, lsl r1 - ldr r0, [r4, #0x24] - ldr r1, [r4, #0x28] - movlt r2, #0x0 - bl SND_StartTimer - ldmia sp!, {r4,pc} - .balign 4 -_020C18F4: .word UNK_021D27CC - - arm_func_start FUN_020C18F8 -FUN_020C18F8: - stmdb sp!, {r4,lr} - ldr r3, _020C194C ; =UNK_021D27CC - ldr r0, [r3, #0x0] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r1, [r3, #0x2c] - cmp r1, #0x0 - movge r0, #0x1 - movge r2, r0, lsl r1 - ldr r0, [r3, #0x24] - ldr r1, [r3, #0x28] - movlt r2, #0x0 - mov r3, #0x0 - bl SND_StopTimer - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - .balign 4 -_020C194C: .word UNK_021D27CC - - arm_func_start FUN_020C1950 -FUN_020C1950: ; 0x020C1950 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r4, _020C1A3C ; =UNK_021D27CC - ldr r0, [r4, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldr r1, [r4, #0x2c] - mov r3, #0x0 - cmp r1, #0x0 - movge r7, #0x1 - movlt r7, #0x0 - cmp r7, #0x0 - movne r0, #0x1 - movne r2, r0, lsl r1 - ldr r0, [r4, #0x24] - ldr r1, [r4, #0x28] - moveq r2, #0x0 - bl SND_StopTimer - cmp r7, #0x0 - beq _020C19DC - bl SND_GetCurrentCommandTag - mov r5, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r5 - bl SND_WaitForCommandProc - ldr r6, _020C1A40 ; =UNK_021D27AC - mov r5, #0x0 -_020C19C4: - mov r0, r6 - mov r1, r5 - mov r2, r5 - bl OS_ReceiveMessage - cmp r0, #0x0 - bne _020C19C4 -_020C19DC: - ldr r0, [r4, #0x28] - cmp r0, #0x0 - beq _020C19EC - bl FUN_020C0300 -_020C19EC: - ldr r0, [r4, #0x20] - cmp r0, #0x0 - beq _020C19FC - bl FUN_020C0340 -_020C19FC: - cmp r7, #0x0 - beq _020C1A0C - ldr r0, [r4, #0x2c] - bl FUN_020C029C -_020C1A0C: - ldr r0, [r4, #0x4] - cmp r0, #0x1 - bne _020C1A2C - mov r0, #0x0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - bl SND_SetOutputSelector -_020C1A2C: - mov r0, #0x0 - str r0, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C1A3C: .word UNK_021D27CC -_020C1A40: .word UNK_021D27AC - - arm_func_start FUN_020C1A44 -FUN_020C1A44: ; 0x020C1A44 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x3c - mov r10, r3 - str r0, [sp, #0x18] - str r2, [sp, #0x20] - mov r2, #0x0 - str r1, [sp, #0x1c] - mov r0, r1 - mov r1, r10 - ldr r9, [sp, #0x6c] - ldr r8, [sp, #0x74] - str r2, [sp, #0x2c] - mvn r6, #0x0 - ldr r4, _020C1D90 ; =UNK_021D27CC - bl DC_FlushRange - ldr r0, [sp, #0x20] - mov r1, r10 - bl DC_FlushRange - ldr r0, [sp, #0x60] - ldr r1, [sp, #0x70] - cmp r0, #0x1 - moveq r7, #0x1 - ldr r0, _020C1D94 ; =0x00FFB0FF - movne r7, #0x0 - bl _s32_div_f - ldr r1, [sp, #0x84] - mov r11, r0 - cmp r1, #0x0 - beq _020C1B00 - add r1, r11, #0x10 - bic r11, r1, #0x1f - mov r2, r11, asr #0x5 - mov r0, r10 - cmp r7, #0x0 - ldr r1, [sp, #0x80] - moveq r0, r10, lsr #0x1 - str r2, [sp, #0x34] - bl _u32_div_f - ldr r1, [sp, #0x34] - mov r5, #0x20 - mul r0, r1, r0 - str r0, [sp, #0x30] - cmp r7, #0x0 - ldr r0, [sp, #0x34] - moveq r5, r5, lsr #0x1 - mul r0, r5, r0 - mov r5, r0 -_020C1B00: - cmp r7, #0x0 - movne r0, #0x0 - strne r0, [sp, #0x28] - moveq r0, #0x1 - streq r0, [sp, #0x28] - cmp r7, #0x0 - movne r0, #0x1 - strne r0, [sp, #0x24] - moveq r0, #0x0 - streq r0, [sp, #0x24] - ldr r0, [sp, #0x18] - cmp r0, #0x2 - movne r0, #0xa - strne r0, [sp, #0x2c] - ldr r0, [sp, #0x84] - cmp r0, #0x0 - beq _020C1B58 - bl FUN_020C02BC - movs r6, r0 - addmi sp, sp, #0x3c - movmi r0, #0x0 - ldmmiia sp!, {r4-r11,pc} -_020C1B58: - mov r0, #0x3 - bl FUN_020C031C - cmp r0, #0x0 - bne _020C1B84 - cmp r6, #0x0 - blt _020C1B78 - mov r0, r6 - bl FUN_020C029C -_020C1B78: - add sp, sp, #0x3c - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_020C1B84: - mov r0, #0xa - bl FUN_020C0370 - cmp r0, #0x0 - bne _020C1BB8 - cmp r6, #0x0 - blt _020C1BA4 - mov r0, r6 - bl FUN_020C029C -_020C1BA4: - mov r0, #0x3 - bl FUN_020C0300 - add sp, sp, #0x3c - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_020C1BB8: - mov r0, #0x0 - mov r7, r10, lsr #0x2 - str r0, [sp, #0x0] - str r7, [sp, #0x4] - str r8, [sp, #0x8] - str r0, [sp, #0xc] - cmp r9, #0x0 - movne r3, #0x1 - ldr r1, [sp, #0x78] - str r11, [sp, #0x10] - str r1, [sp, #0x14] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x1c] - moveq r3, #0x2 - mov r0, #0x1 - bl SND_SetupChannelPcm - ldr r1, [sp, #0x64] - str r9, [sp, #0x0] - str r1, [sp, #0x4] - ldr r0, [sp, #0x68] - ldr r1, [sp, #0x24] - str r0, [sp, #0x8] - ldr r2, [sp, #0x1c] - mov r0, #0x0 - mov r3, r7 - bl SND_SetupCapture - mov r0, #0x0 - str r0, [sp, #0x0] - str r7, [sp, #0x4] - str r8, [sp, #0x8] - str r0, [sp, #0xc] - cmp r9, #0x0 - movne r3, #0x1 - ldr r2, [sp, #0x7c] - str r11, [sp, #0x10] - str r2, [sp, #0x14] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x20] - moveq r3, #0x2 - mov r0, #0x3 - bl SND_SetupChannelPcm - ldr r2, [sp, #0x64] - str r9, [sp, #0x0] - str r2, [sp, #0x4] - ldr r0, [sp, #0x68] - ldr r1, [sp, #0x24] - str r0, [sp, #0x8] - ldr r2, [sp, #0x20] - mov r3, r7 - mov r0, #0x1 - bl SND_SetupCapture - cmp r6, #0x0 - blt _020C1CA8 - ldr r2, [sp, #0x30] - ldr r3, _020C1D98 ; =FUN_020C177C - mov r1, r2 - mov r0, r6 - add r1, r1, r5 - str r4, [sp, #0x0] - bl SND_SetupAlarm -_020C1CA8: - ldr r0, [sp, #0x18] - cmp r0, #0x1 - bne _020C1CC8 - mov r0, #0x1 - mov r2, r0 - mov r3, r0 - mov r1, #0x2 - bl SND_SetOutputSelector -_020C1CC8: - cmp r6, #0x0 - movge r0, #0x1 - movge r2, r0, lsl r6 - ldr r0, [sp, #0x2c] - movlt r2, #0x0 - mov r1, #0x3 - mov r3, #0x0 - bl SND_StartTimer - mov r0, #0x1 - str r0, [r4, #0x0] - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x80] - str r0, [r4, #0x4] - mov r0, #0xa - str r0, [r4, #0x20] - ldr r0, [sp, #0x2c] - str r0, [r4, #0x24] - mov r0, #0x3 - str r0, [r4, #0x28] - ldr r0, [sp, #0x60] - str r6, [r4, #0x2c] - str r0, [r4, #0x8] - ldr r0, [sp, #0x1c] - str r0, [r4, #0xc] - ldr r0, [sp, #0x20] - str r0, [r4, #0x10] - mov r0, r10 - str r10, [r4, #0x14] - bl _u32_div_f - str r0, [r4, #0x18] - mov r1, #0x0 - str r1, [r4, #0x1c] - ldr r0, [sp, #0x80] - ldr r1, [sp, #0x84] - str r0, [r4, #0x30] - ldr r0, [sp, #0x88] - str r1, [r4, #0x34] - str r0, [r4, #0x38] - add r0, r4, #0x3c - str r8, [r4, #0x50] - bl FUN_020C3E6C - add r0, r4, #0x3c - mov r1, r8, lsl #0x8 - mov r2, #0x1 - bl FUN_020C3E40 - mov r0, #0x0 - str r0, [r4, #0x4c] - mov r0, #0x1 - add sp, sp, #0x3c - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C1D90: .word UNK_021D27CC -_020C1D94: .word 0x00FFB0FF -_020C1D98: .word FUN_020C177C - - arm_func_start FUN_020C1D9C -FUN_020C1D9C: ; 0x020C1D9C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r5, _020C1E34 ; =UNK_021D27CC - ldr r0, [r5, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, [r5, #0x4] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r5,pc} - add r4, r5, #0x3c - mov r0, r4 - bl FUN_020C3DF4 - ldr r0, [r5, #0x4c] - cmp r0, #0x0 - beq _020C1DFC - mov r0, r4 - bl FUN_020C3DDC - cmp r0, #0x0 - beq _020C1DFC - bl FUN_020C1950 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020C1DFC: - mov r0, r4 - bl FUN_020C3E0C - ldr r1, [r5, #0x50] - mov r4, r0, asr #0x8 - cmp r4, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, [r5, #0x24] - mov r1, r4 - mov r2, #0x0 - bl SND_SetChannelVolume - str r4, [r5, #0x50] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C1E34: .word UNK_021D27CC - - arm_func_start FUN_020C1E38 -FUN_020C1E38: ; 0x020C1E38 - ldr r1, _020C1E50 ; =UNK_021D27A4 - mov r2, #0x0 - ldr r0, _020C1E54 ; =UNK_021D27CC - str r2, [r1, #0x0] - str r2, [r0, #0x0] - bx lr - .balign 4 -_020C1E50: .word UNK_021D27A4 -_020C1E54: .word UNK_021D27CC - - arm_func_start FUN_020C1E58 -FUN_020C1E58: ; 0x020C1E58 - ldr r0, _020C1E64 ; =UNK_021D27CC - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020C1E64: .word UNK_021D27CC - - arm_func_start FUN_020C1E68 -FUN_020C1E68: ; 0x020C1E68 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020C1EA0 ; =UNK_021D27CC - ldr r1, [r0, #0x0] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r0, #0x4] - cmp r0, #0x1 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - bl FUN_020C1950 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020C1EA0: .word UNK_021D27CC - - arm_func_start FUN_020C1EA4 -FUN_020C1EA4: ; 0x020C1EA4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x2c - mov r5, r0 - mov r4, r1 - mov r7, r2 - mov r6, r3 - bl FUN_020C1E68 - ldr r0, _020C1F50 ; =UNK_021D27CC - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addne sp, sp, #0x2c - movne r0, #0x0 - ldmneia sp!, {r4-r7,pc} - mov r1, r5 - mov r2, r4 - mov r0, #0x0 - bl MIi_CpuClear32 - mov r0, r5 - mov r1, r4 - bl DC_FlushRange - str r7, [sp, #0x0] - mov r2, #0x0 - str r2, [sp, #0x4] - str r2, [sp, #0x8] - mov r0, #0x1 - str r0, [sp, #0xc] - str r6, [sp, #0x10] - mov r1, #0x7f - str r1, [sp, #0x14] - str r2, [sp, #0x18] - ldr r2, [sp, #0x40] - str r1, [sp, #0x1c] - ldr r1, [sp, #0x44] - str r2, [sp, #0x20] - ldr r12, [sp, #0x48] - str r1, [sp, #0x24] - mov r1, r5 - mov r3, r4, lsr #0x1 - add r2, r5, r4, lsr #0x1 - str r12, [sp, #0x28] - bl FUN_020C1A44 - add sp, sp, #0x2c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C1F50: .word UNK_021D27CC - - arm_func_start FUN_020C1F54 -FUN_020C1F54: ; 0x020C1F54 - stmdb sp!, {r4,lr} - ldr r4, _020C1FA0 ; =UNK_021D27CC - mov r2, r0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, [r4, #0x4] - cmp r0, #0x0 - ldmneia sp!, {r4,pc} - cmp r2, #0x0 - bne _020C1F88 - bl FUN_020C1950 - ldmia sp!, {r4,pc} -_020C1F88: - add r0, r4, #0x3c - mov r1, #0x0 - bl FUN_020C3E40 - mov r0, #0x1 - str r0, [r4, #0x4c] - ldmia sp!, {r4,pc} - .balign 4 -_020C1FA0: .word UNK_021D27CC - - arm_func_start FUN_020C1FA4 -FUN_020C1FA4: ; 0x020C1FA4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, _020C1FEC ; =UNK_021D27CC - mov r12, r0 - ldr r0, [r3, #0x0] - mov r2, r1 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r0, [r3, #0x4] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - add r0, r3, #0x3c - mov r1, r12, lsl #0x8 - bl FUN_020C3E40 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020C1FEC: .word UNK_021D27CC - - arm_func_start FUN_020C1FF0 -FUN_020C1FF0: ; 0x020C1FF0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x2c - mov r5, r0 - mov r0, #0x0 - mov r4, r1 - mov r7, r2 - mov r6, r3 - bl FUN_020C1F54 - ldr r0, _020C2098 ; =UNK_021D27CC - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addne sp, sp, #0x2c - movne r0, #0x0 - ldmneia sp!, {r4-r7,pc} - mov r1, r5 - mov r2, r4 - mov r0, #0x0 - bl MIi_CpuClear32 - mov r0, r5 - mov r1, r4 - bl DC_FlushRange - str r7, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - mov r1, #0x1 - str r1, [sp, #0xc] - ldr r1, [sp, #0x40] - str r6, [sp, #0x10] - str r1, [sp, #0x14] - str r0, [sp, #0x18] - mov r1, #0x7f - str r1, [sp, #0x1c] - str r0, [sp, #0x20] - str r0, [sp, #0x24] - mov r1, r5 - mov r3, r4, lsr #0x1 - add r2, r5, r4, lsr #0x1 - str r0, [sp, #0x28] - bl FUN_020C1A44 - add sp, sp, #0x2c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C2098: .word UNK_021D27CC - - arm_func_start SDATi_SymbDtor -SDATi_SymbDtor: ; 0x020C209C - mov r0, #0x0 - str r0, [r2, #0x88] - bx lr - - arm_func_start SDATi_FatDtor -SDATi_FatDtor: ; 0x020C20A8 - mov r0, #0x0 - str r0, [r2, #0x84] - bx lr - - arm_func_start SDATi_InfoDtor -SDATi_InfoDtor: ; 0x020C20B4 - mov r0, #0x0 - str r0, [r2, #0x8c] - bx lr - - arm_func_start FUN_020C20C0 -FUN_020C20C0: ; 0x020C20C0 - ldr r2, _020C20D8 ; =UNK_021D28C0 - ldr r2, [r2, #0x0] - ldr r2, [r2, #0x84] - add r0, r2, r0, lsl #0x4 - str r1, [r0, #0x14] - bx lr - .balign 4 -_020C20D8: .word UNK_021D28C0 - - arm_func_start FUN_020C20DC -FUN_020C20DC: - ldr r1, _020C2100 ; =UNK_021D28C0 - ldr r1, [r1, #0x0] - ldr r2, [r1, #0x84] - ldr r1, [r2, #0x8] - cmp r0, r1 - movcs r0, #0x0 - addcc r0, r2, r0, lsl #0x4 - ldrcc r0, [r0, #0x14] - bx lr - .balign 4 -_020C2100: .word UNK_021D28C0 - - arm_func_start FUN_020C2104 -FUN_020C2104: - stmdb sp!, {r4-r6,lr} - ldr r4, _020C2178 ; =UNK_021D28C0 - mov r5, r2 - ldr r4, [r4, #0x0] - mov r6, r1 - ldr r2, [r4, #0x84] - ldr r1, [r2, #0x8] - cmp r0, r1 - mvncs r0, #0x0 - ldmcsia sp!, {r4-r6,pc} - add r1, r2, #0xc - add r1, r1, r0, lsl #0x4 - ldr r0, [r1, #0x4] - ldr r1, [r1, #0x0] - sub r0, r0, r3 - cmp r5, r0 - movhi r5, r0 - add r0, r4, #0x34 - add r1, r1, r3 - mov r2, #0x0 - bl FS_SeekFile - cmp r0, #0x0 - mvneq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r1, r6 - mov r2, r5 - add r0, r4, #0x34 - bl FS_ReadFile - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C2178: .word UNK_021D28C0 - - arm_func_start FUN_020C217C -FUN_020C217C: ; 0x020C217C - ldr r1, _020C21A0 ; =UNK_021D28C0 - ldr r1, [r1, #0x0] - ldr r2, [r1, #0x84] - ldr r1, [r2, #0x8] - cmp r0, r1 - movcs r0, #0x0 - addcc r0, r2, r0, lsl #0x4 - ldrcc r0, [r0, #0x10] - bx lr - .balign 4 -_020C21A0: .word UNK_021D28C0 - - arm_func_start FUN_020C21A4 -FUN_020C21A4: ; 0x020C21A4 - ldr r1, _020C2204 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x1c] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2204: .word UNK_021D28C0 - - arm_func_start FUN_020C2208 -FUN_020C2208: ; 0x020C2208 - ldr r1, _020C2268 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x18] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2268: .word UNK_021D28C0 - - arm_func_start FUN_020C226C -FUN_020C226C: - ldr r1, _020C22CC ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x14] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C22CC: .word UNK_021D28C0 - - arm_func_start FUN_020C22D0 -FUN_020C22D0: ; 0x020C22D0 - ldr r1, _020C2330 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x10] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2330: .word UNK_021D28C0 - - arm_func_start FUN_020C2334 -FUN_020C2334: - ldr r1, _020C2394 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0xc] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C2394: .word UNK_021D28C0 - - arm_func_start FUN_020C2398 -FUN_020C2398: - ldr r1, _020C23F8 ; =UNK_021D28C0 - ldr r3, [r1, #0x0] - ldr r2, [r3, #0x8c] - ldr r1, [r2, #0x8] - cmp r1, #0x0 - moveq r2, #0x0 - addne r2, r2, r1 - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r0, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r1, [r2, #0x0] - cmp r0, r1 - movcs r0, #0x0 - bxcs lr - add r0, r2, r0, lsl #0x2 - ldr r1, [r0, #0x4] - ldr r0, [r3, #0x8c] - cmp r1, #0x0 - moveq r0, #0x0 - addne r0, r0, r1 - bx lr - .balign 4 -_020C23F8: .word UNK_021D28C0 - - arm_func_start FUN_020C23FC -FUN_020C23FC: ; 0x020C23FC - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020C2398 - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r0, #0x4 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C241C -FUN_020C241C: ; 0x020C241C - ldr r0, _020C2428 ; =UNK_021D28C0 - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020C2428: .word UNK_021D28C0 - - arm_func_start FUN_020C242C -FUN_020C242C: ; 0x020C242C - ldr r1, _020C2440 ; =UNK_021D28C0 - ldr r2, [r1, #0x0] - str r0, [r1, #0x0] - mov r0, r2 - bx lr - .balign 4 -_020C2440: .word UNK_021D28C0 - - arm_func_start FUN_020C2444 -FUN_020C2444: ; 0x020C2444 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - mov r0, r4 - mov r1, r5 - mov r2, #0x30 - bl MIi_CpuCopy32 - ldr r0, [r5, #0x18] - mov r12, #0x0 - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r4, r0 - str r0, [r5, #0x8c] - ldr r0, [r5, #0x20] - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r4, r0 - str r0, [r5, #0x84] - ldr r0, [r5, #0x10] - cmp r0, #0x0 - moveq r0, #0x0 - addne r0, r4, r0 - str r0, [r5, #0x88] - ldr r2, [r5, #0x84] - ldr r0, [r2, #0x8] - cmp r0, #0x0 - bls _020C24F0 - mov r3, r12 - mov r1, r12 -_020C24BC: - add r2, r2, #0xc - ldr r0, [r2, r3] - add r2, r2, r3 - cmp r0, #0x0 - moveq r0, r1 - addne r0, r4, r0 - str r0, [r2, #0x8] - ldr r2, [r5, #0x84] - add r12, r12, #0x1 - ldr r0, [r2, #0x8] - add r3, r3, #0x10 - cmp r12, r0 - blo _020C24BC -_020C24F0: - mov r1, #0x0 - ldr r0, _020C2508 ; =UNK_021D28C0 - str r1, [r5, #0x30] - str r5, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C2508: .word UNK_021D28C0 - - arm_func_start SDATi_ReadHeaders -SDATi_ReadHeaders: - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - mov r6, r0 - mov r5, r1 - mov r1, #0x0 - mov r4, r2 - mov r2, r1 - add r0, r6, #0x34 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r1, r6 - add r0, r6, #0x34 - mov r2, #0x30 - bl FS_ReadFile - cmp r0, #0x30 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r6,pc} - cmp r5, #0x0 - beq _020C26E0 - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r1, [r6, #0x1c] - ldr r2, _020C26EC ; =SDATi_InfoDtor - mov r0, r5 - mov r3, r6 - bl SDATi_AllocAndInitChunk - str r0, [r6, #0x8c] - ldr r0, [r6, #0x8c] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x18] - add r0, r6, #0x34 - mov r2, #0x0 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x8c] - ldr r2, [r6, #0x1c] - add r0, r6, #0x34 - bl FS_ReadFile - ldr r1, [r6, #0x1c] - cmp r0, r1 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r6,pc} - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r1, [r6, #0x24] - ldr r2, _020C26F0 ; =SDATi_FatDtor - mov r0, r5 - mov r3, r6 - bl SDATi_AllocAndInitChunk - str r0, [r6, #0x84] - ldr r0, [r6, #0x84] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x20] - add r0, r6, #0x34 - mov r2, #0x0 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x84] - ldr r2, [r6, #0x24] - add r0, r6, #0x34 - bl FS_ReadFile - ldr r1, [r6, #0x24] - cmp r0, r1 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r6,pc} - cmp r4, #0x0 - beq _020C26E0 - ldr r1, [r6, #0x14] - cmp r1, #0x0 - beq _020C26E0 - mov r4, #0x0 - ldr r2, _020C26F4 ; =SDATi_SymbDtor - mov r0, r5 - mov r3, r6 - str r4, [sp, #0x0] - bl SDATi_AllocAndInitChunk - str r0, [r6, #0x88] - ldr r0, [r6, #0x88] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, r4 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x10] - add r0, r6, #0x34 - mov r2, r4 - bl FS_SeekFile - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, r4 - ldmeqia sp!, {r4-r6,pc} - ldr r1, [r6, #0x88] - ldr r2, [r6, #0x14] - add r0, r6, #0x34 - bl FS_ReadFile - ldr r1, [r6, #0x14] - cmp r0, r1 - addne sp, sp, #0x8 - movne r0, r4 - ldmneia sp!, {r4-r6,pc} -_020C26E0: - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C26EC: .word SDATi_InfoDtor -_020C26F0: .word SDATi_FatDtor -_020C26F4: .word SDATi_SymbDtor - - arm_func_start SDAT_Open -SDAT_Open: ; 0x020C26F8 - ; r0: &sSoundDataBuffer - ; r1: char* filename - ; r2: (&sSoundDataBuffer)->unk_0090 - ; r3: 0 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r12, #0x0 - str r12, [r6, #0x8c] - str r12, [r6, #0x84] - add r0, r6, #0x7c - mov r5, r2 - mov r4, r3 - str r12, [r6, #0x88] - bl FS_ConvertPathToFileID - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - add r0, r6, #0x34 - bl FS_InitFile - add r1, r6, #0x7c - add r0, r6, #0x34 - ldmia r1, {r1-r2} - bl FS_OpenFileFast - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r3, #0x1 - mov r0, r6 - mov r1, r5 - mov r2, r4 - str r3, [r6, #0x30] - bl SDATi_ReadHeaders - cmp r0, #0x0 - ldrne r0, _020C2770 ; =UNK_021D28C0 - strne r6, [r0, #0x0] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020C2770: .word UNK_021D28C0 - - arm_func_start FUN_020C2774 -FUN_020C2774: ; 0x020C2774 - stmdb sp!, {r4,lr} - bl SND_GetCurrentCommandTag - mov r4, r0 - mov r0, #0x1 - bl SND_FlushCommand - mov r0, r4 - bl SND_WaitForCommandProc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C2794 -FUN_020C2794: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, [r5, #0x0] - mov r1, #0x14 - mov r2, #0x4 - bl FUN_020AE638 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - bl FUN_020C2818 - mov r1, r4 - add r0, r5, #0x4 - bl FUN_020ADBE8 - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C27DC -FUN_020C27DC: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - add r0, r5, #0x4 - mov r1, #0xc - bl FUN_020ADC74 - mov r0, r5 - str r4, [r5, #0x0] - bl FUN_020C2794 - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2818 -FUN_020C2818: ; 0x020C2818 - ldr ip, _020C2824 ; =FUN_020ADC74 - mov r1, #0x0 - bx r12 - .balign 4 -_020C2824: .word FUN_020ADC74 - - arm_func_start FUN_020C2828 -FUN_020C2828: ; 0x020C2828 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r7, #0x0 - movs r9, r1 - mov r10, r0 - mov r6, r7 - bne _020C2850 - bl FUN_020C29C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020C2850: - ldrh r0, [r10, #0xc] - cmp r9, r0 - bge _020C28D8 - mov r11, r7 - add r5, r10, #0x4 - mov r4, #0x1 -_020C2868: - mov r0, r5 - mov r1, r11 - bl FUN_020ADA84 - mov r1, r7 - mov r8, r0 - bl FUN_020ADA84 - movs r7, r0 - beq _020C28C0 -_020C2888: - ldr r12, [r7, #0xc] - cmp r12, #0x0 - beq _020C28AC - ldr r1, [r7, #0x8] - ldr r2, [r7, #0x10] - ldr r3, [r7, #0x14] - add r0, r7, #0x20 - blx r12 - mov r6, r4 -_020C28AC: - mov r0, r8 - mov r1, r7 - bl FUN_020ADA84 - movs r7, r0 - bne _020C2888 -_020C28C0: - mov r0, r5 - mov r1, r8 - bl FUN_020ADAB0 - ldrh r0, [r10, #0xc] - cmp r9, r0 - blt _020C2868 -_020C28D8: - ldr r0, [r10, #0x0] - mov r1, r9 - bl FUN_020AE554 - cmp r6, #0x0 - beq _020C28F0 - bl FUN_020C2774 -_020C28F0: - ldrh r1, [r10, #0xc] - ldr r0, [r10, #0x0] - bl FUN_020AE5B0 - mov r0, r10 - bl FUN_020C2794 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020C290C -FUN_020C290C: ; 0x020C290C - stmdb sp!, {r4,lr} - mov r4, r0 - ldrh r1, [r4, #0xc] - ldr r0, [r4, #0x0] - bl FUN_020AE5B0 - cmp r0, #0x0 - mvneq r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, r4 - bl FUN_020C2794 - cmp r0, #0x0 - ldrneh r0, [r4, #0xc] - subne r0, r0, #0x1 - ldmneia sp!, {r4,pc} - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl FUN_020AE554 - mvn r0, #0x0 - ldmia sp!, {r4,pc} - - arm_func_start SDATi_AllocAndInitChunk -SDATi_AllocAndInitChunk: ; 0x020C2958 - stmdb sp!, {r4-r8,lr} - mov r7, r1 - mov r8, r0 - add r0, r7, #0x1f - bic r1, r0, #0x1f - mov r6, r2 - ldr r0, [r8, #0x0] - add r1, r1, #0x20 - mov r2, #0x20 - mov r5, r3 - bl FUN_020AE638 // some allocator? - movs r4, r0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - add r0, r8, #0x4 - mov r1, #0x0 - bl FUN_020ADA84 - str r7, [r4, #0x8] - str r6, [r4, #0xc] - ldr r2, [sp, #0x18] - str r5, [r4, #0x10] - mov r1, r4 - str r2, [r4, #0x14] - bl FUN_020ADBE8 - add r0, r4, #0x20 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C29C0 -FUN_020C29C0: - stmdb sp!, {r4-r10,lr} - mov r8, r0 - mov r5, #0x0 - mov r1, r5 - add r0, r8, #0x4 - bl FUN_020ADA84 - movs r7, r0 - beq _020C2A58 - add r9, r8, #0x4 - mov r10, #0x1 - mov r4, r5 -_020C29EC: - mov r0, r7 - mov r1, r4 - bl FUN_020ADA84 - movs r6, r0 - beq _020C2A38 -_020C2A00: - ldr r12, [r6, #0xc] - cmp r12, #0x0 - beq _020C2A24 - ldr r1, [r6, #0x8] - ldr r2, [r6, #0x10] - ldr r3, [r6, #0x14] - add r0, r6, #0x20 - blx r12 - mov r5, r10 -_020C2A24: - mov r0, r7 - mov r1, r6 - bl FUN_020ADA84 - movs r6, r0 - bne _020C2A00 -_020C2A38: - mov r0, r9 - mov r1, r7 - bl FUN_020ADAB0 - mov r0, r9 - mov r1, r4 - bl FUN_020ADA84 - movs r7, r0 - bne _020C29EC -_020C2A58: - ldr r0, [r8, #0x0] - mov r1, #0x3 - bl FUN_020AE600 - cmp r5, #0x0 - beq _020C2A70 - bl FUN_020C2774 -_020C2A70: - mov r0, r8 - bl FUN_020C2794 - ldmia sp!, {r4-r10,pc} - - arm_func_start FUN_020C2A7C -FUN_020C2A7C: ; 0x020C2A7C - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020C29C0 - ldr r0, [r4, #0x0] - bl thunk_FUN_020adc8c_2 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C2A94 -FUN_020C2A94: - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - add r2, r0, #0x3 - add r0, r0, r1 - bic r5, r2, #0x3 - cmp r5, r0 - addhi sp, sp, #0x4 - movhi r0, #0x0 - ldmhiia sp!, {r4-r5,pc} - sub r1, r0, r5 - cmp r1, #0x10 - addcc sp, sp, #0x4 - movcc r0, #0x0 - ldmccia sp!, {r4-r5,pc} - add r0, r5, #0x10 - sub r1, r1, #0x10 - mov r2, #0x0 - bl FUN_020AE684 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - mov r0, r5 - mov r1, r4 - bl FUN_020C27DC - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, r5 - ldmneia sp!, {r4-r5,pc} - mov r0, r4 - bl thunk_FUN_020adc8c_2 - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2B1C -FUN_020C2B1C: - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x20 - mov r8, r0 - add r0, sp, #0x8 - mov r7, r1 - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x40] - bl SND_GetFirstInstDataPos - ldr r1, [sp, #0x8] - ldr r0, [sp, #0xc] - str r1, [sp, #0x0] - str r0, [sp, #0x4] - cmp r7, #0x0 - add r2, sp, #0x0 - addeq sp, sp, #0x20 - moveq r0, #0x0 - ldmeqia sp!, {r4-r10,pc} - add r1, sp, #0x10 - mov r0, r7 - bl SND_GetNextInstData - cmp r0, #0x0 - beq _020C2BD4 - add r10, sp, #0x10 - add r9, sp, #0x0 -_020C2B80: - ldrb r0, [sp, #0x10] - cmp r0, #0x1 - bne _020C2BBC - ldrh r0, [sp, #0x14] - cmp r6, r0 - bne _020C2BBC - ldrh r1, [sp, #0x12] - mov r0, r8 - mov r2, r5 - mov r3, r4 - bl FUN_020C2BE0 - cmp r0, #0x0 - addeq sp, sp, #0x20 - moveq r0, #0x0 - ldmeqia sp!, {r4-r10,pc} -_020C2BBC: - mov r0, r7 - mov r1, r10 - mov r2, r9 - bl SND_GetNextInstData - cmp r0, #0x0 - bne _020C2B80 -_020C2BD4: - mov r0, #0x1 - add sp, sp, #0x20 - ldmia sp!, {r4-r10,pc} - - arm_func_start FUN_020C2BE0 -FUN_020C2BE0: - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl SND_GetWaveDataAddress - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, #0x1 - ldmneia sp!, {r4-r9,pc} - mov r0, r7 - bl SND_GetWaveDataCount - ldr r1, [r7, #0x38] - sub r0, r0, #0x1 - add r1, r1, r6 - add r1, r7, r1, lsl #0x2 - cmp r6, r0 - ldrcc r0, [r1, #0x40] - ldr r8, [r1, #0x3c] - ldrcs r0, [r7, #0x8] - cmp r4, #0x0 - sub r9, r0, r8 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - ldr r2, _020C2CBC ; =FUN_020C2CC0 - mov r0, r4 - mov r3, r7 - add r1, r9, #0x20 - str r6, [sp, #0x0] - bl SDATi_AllocAndInitChunk - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - mov r0, r5 - mov r1, r4 - mov r2, r9 - mov r3, r8 - bl FUN_020C2104 - cmp r9, r0 - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r9,pc} - mov r0, r4 - mov r1, r9 - bl DC_StoreRange - mov r0, r7 - mov r1, r6 - mov r2, r4 - bl SND_SetWaveDataAddress - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020C2CBC: .word FUN_020C2CC0 - - arm_func_start FUN_020C2CC0 -FUN_020C2CC0: ; 0x020C2CC0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r2 - mov r7, r0 - mov r4, r3 - mov r6, r1 - mov r0, r5 - mov r1, r4 - bl SND_GetWaveDataAddress - cmp r7, r0 - bne _020C2CFC - mov r0, r5 - mov r1, r4 - mov r2, #0x0 - bl SND_SetWaveDataAddress -_020C2CFC: - mov r0, r7 - add r1, r7, r6 - bl SND_InvalidateWaveData - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C2D10 -FUN_020C2D10: ; 0x020C2D10 - stmdb sp!, {r4,lr} - mov r1, r2 - mov r4, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r4 - bl SND_DestroyWaveArc - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C2D30 -FUN_020C2D30: ; 0x020C2D30 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, r2 - mov r5, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r5 - add r1, r5, r4 - bl SND_InvalidateWaveData - mov r0, r5 - bl SND_DestroyWaveArc - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2D68 -FUN_020C2D68: ; 0x020C2D68 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, r2 - mov r5, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r5 - add r1, r5, r4 - bl SND_InvalidateBankData - mov r0, r5 - bl SND_DestroyBank - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2DA0 -FUN_020C2DA0: ; 0x020C2DA0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r1, r2 - mov r5, r0 - mov r2, r3 - bl FUN_020C2DD0 - mov r0, r5 - add r1, r5, r4 - bl SND_InvalidateSeqData - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C2DD0 -FUN_020C2DD0: ; 0x020C2DD0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - movs r5, r1 - mov r7, r0 - mov r6, r2 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - bl OS_DisableInterrupts - mov r4, r0 - mov r0, r5 - bl FUN_020C242C - mov r5, r0 - mov r0, r6 - bl FUN_020C20DC - cmp r7, r0 - bne _020C2E1C - mov r0, r6 - mov r1, #0x0 - bl FUN_020C20C0 -_020C2E1C: - mov r0, r5 - bl FUN_020C242C - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C2E34 -FUN_020C2E34: ; 0x020C2E34 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r9, r0 - mov r8, r1 - mov r7, r2 - bl FUN_020C20DC - movs r6, r0 - bne _020C2F40 - ldr r1, _020C2F4C ; =UNK_021D28C4 - mov r0, r9 - mov r2, #0x3c - mov r3, #0x0 - bl FUN_020C2104 - cmp r0, #0x3c - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r9,pc} - ldr r0, _020C2F4C ; =UNK_021D28C4 - cmp r8, #0x0 - ldr r0, [r0, #0x38] - addeq sp, sp, #0x4 - mov r4, r0, lsl #0x2 - mov r0, r4, lsl #0x1 - add r5, r0, #0x3c - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - cmp r7, #0x0 - moveq r3, #0x0 - beq _020C2EB0 - bl FUN_020C241C - mov r3, r0 -_020C2EB0: - ldr r2, _020C2F50 ; =FUN_020C2D10 - mov r0, r8 - add r1, r5, #0x20 - str r9, [sp, #0x0] - bl SDATi_AllocAndInitChunk - movs r6, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r9,pc} - mov r0, r9 - mov r1, r6 - add r2, r4, #0x3c - mov r3, #0x0 - bl FUN_020C2104 - add r1, r4, #0x3c - cmp r0, r1 - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r9,pc} - ldr r1, [r6, #0x38] - add r0, r6, #0x3c - mov r2, r4 - add r1, r0, r1, lsl #0x2 - bl MI_CpuCopy8 - mov r2, r4 - add r0, r6, #0x3c - mov r1, #0x0 - bl MI_CpuFill8 - mov r0, r6 - mov r1, r5 - bl DC_StoreRange - cmp r7, #0x0 - beq _020C2F40 - mov r0, r9 - mov r1, r6 - bl FUN_020C20C0 -_020C2F40: - mov r0, r6 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020C2F4C: .word UNK_021D28C4 -_020C2F50: .word FUN_020C2D10 - - arm_func_start FUN_020C2F54 -FUN_020C2F54: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C2FBC - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C2F88 - bl FUN_020C241C - mov r2, r0 -_020C2F88: - ldr r1, _020C2FC8 ; =FUN_020C2D30 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C2FBC - cmp r4, #0x0 - beq _020C2FBC - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C2FBC: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C2FC8: .word FUN_020C2D30 - - arm_func_start FUN_020C2FCC -FUN_020C2FCC: ; 0x020C2FCC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C3034 - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C3000 - bl FUN_020C241C - mov r2, r0 -_020C3000: - ldr r1, _020C3040 ; =FUN_020C2D68 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C3034 - cmp r4, #0x0 - beq _020C3034 - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C3034: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C3040: .word FUN_020C2D68 - - arm_func_start FUN_020C3044 -FUN_020C3044: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C30AC - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C3078 - bl FUN_020C241C - mov r2, r0 -_020C3078: - ldr r1, _020C30B8 ; =FUN_020C2DA0 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C30AC - cmp r4, #0x0 - beq _020C30AC - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C30AC: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C30B8: .word FUN_020C2DA0 - - arm_func_start FUN_020C30BC -FUN_020C30BC: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl FUN_020C20DC - movs r4, r0 - bne _020C3124 - cmp r5, #0x0 - moveq r2, #0x0 - beq _020C30F0 - bl FUN_020C241C - mov r2, r0 -_020C30F0: - ldr r1, _020C3130 ; =FUN_020C2DA0 - mov r0, r7 - mov r3, r7 - str r6, [sp, #0x0] - bl FUN_020C3134 - mov r4, r0 - cmp r5, #0x0 - beq _020C3124 - cmp r4, #0x0 - beq _020C3124 - mov r0, r7 - mov r1, r4 - bl FUN_020C20C0 -_020C3124: - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C3130: .word FUN_020C2DA0 - - arm_func_start FUN_020C3134 -FUN_020C3134: ; 0x020C3134 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r4, r3 - bl FUN_020C217C - movs r5, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - ldr r0, [sp, #0x20] - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r2, r7 - mov r3, r6 - add r1, r5, #0x20 - str r4, [sp, #0x0] - bl SDATi_AllocAndInitChunk - movs r4, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r0, r8 - mov r1, r4 - mov r2, r5 - mov r3, #0x0 - bl FUN_020C2104 - cmp r5, r0 - addne sp, sp, #0x8 - movne r0, #0x0 - ldmneia sp!, {r4-r8,pc} - mov r0, r4 - mov r1, r5 - bl DC_StoreRange - mov r0, r4 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C31D4 -FUN_020C31D4: - stmdb sp!, {r4-r6,lr} - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl FUN_020C226C - cmp r0, #0x0 - moveq r0, #0x5 - ldmeqia sp!, {r4-r6,pc} - ands r1, r6, #0x4 - beq _020C324C - ldrb r1, [r0, #0x3] - ands r1, r1, #0x1 - beq _020C3224 - ldr r0, [r0, #0x0] - mov r1, r5 - mov r0, r0, lsl #0x8 - mov r2, r4 - mov r0, r0, lsr #0x8 - bl FUN_020C2E34 - b _020C323C -_020C3224: - ldr r0, [r0, #0x0] - mov r1, r5 - mov r0, r0, lsl #0x8 - mov r2, r4 - mov r0, r0, lsr #0x8 - bl FUN_020C2F54 -_020C323C: - cmp r0, #0x0 - bne _020C325C - mov r0, #0x9 - ldmia sp!, {r4-r6,pc} -_020C324C: - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x8 - mov r0, r0, lsr #0x8 - bl FUN_020C20DC -_020C325C: - ldr r1, [sp, #0x10] - cmp r1, #0x0 - strne r0, [r1, #0x0] - mov r0, #0x0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C3270 -FUN_020C3270: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r10, r1 - mov r9, r2 - mov r11, r3 - bl FUN_020C22D0 - movs r8, r0 - addeq sp, sp, #0xc - moveq r0, #0x4 - ldmeqia sp!, {r4-r11,pc} - ands r0, r10, #0x2 - beq _020C32C4 - ldr r0, [r8, #0x0] - mov r1, r9 - mov r2, r11 - bl FUN_020C2FCC - movs r7, r0 - bne _020C32D0 - add sp, sp, #0xc - mov r0, #0x8 - ldmia sp!, {r4-r11,pc} -_020C32C4: - ldr r0, [r8, #0x0] - bl FUN_020C20DC - mov r7, r0 -_020C32D0: - and r5, r10, #0x4 - mov r6, #0x0 -_020C32D8: - add r0, r8, r6, lsl #0x1 - ldrh r0, [r0, #0x4] - ldr r1, _020C33B4 ; =0x0000FFFF - cmp r0, r1 - beq _020C3390 - bl FUN_020C226C - movs r4, r0 - addeq sp, sp, #0xc - moveq r0, #0x5 - ldmeqia sp!, {r4-r11,pc} - add r0, sp, #0x4 - str r0, [sp, #0x0] - add r0, r8, r6, lsl #0x1 - ldrh r0, [r0, #0x4] - mov r1, r10 - mov r2, r9 - mov r3, r11 - bl FUN_020C31D4 - cmp r0, #0x0 - addne sp, sp, #0xc - ldmneia sp!, {r4-r11,pc} - ldrb r0, [r4, #0x3] - ands r0, r0, #0x1 - beq _020C3370 - cmp r5, #0x0 - beq _020C3370 - str r9, [sp, #0x0] - ldr r1, [r4, #0x0] - ldr r0, [sp, #0x4] - mov r3, r1, lsl #0x8 - mov r1, r7 - mov r2, r6 - mov r3, r3, lsr #0x8 - bl FUN_020C2B1C - cmp r0, #0x0 - addeq sp, sp, #0xc - moveq r0, #0x9 - ldmeqia sp!, {r4-r11,pc} -_020C3370: - cmp r7, #0x0 - beq _020C3390 - ldr r2, [sp, #0x4] - cmp r2, #0x0 - beq _020C3390 - mov r0, r7 - mov r1, r6 - bl SND_AssignWaveArc -_020C3390: - add r6, r6, #0x1 - cmp r6, #0x4 - blt _020C32D8 - ldr r0, [sp, #0x30] - cmp r0, #0x0 - strne r7, [r0, #0x0] - mov r0, #0x0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020C33B4: .word 0x0000FFFF - - arm_func_start FUN_020C33B8 -FUN_020C33B8: - stmdb sp!, {r4-r6,lr} - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl FUN_020C2334 - cmp r0, #0x0 - moveq r0, #0x3 - ldmeqia sp!, {r4-r6,pc} - ands r1, r6, #0x8 - beq _020C3400 - ldr r0, [r0, #0x0] - mov r1, r5 - mov r2, r4 - bl FUN_020C3044 - cmp r0, #0x0 - bne _020C3408 - mov r0, #0x7 - ldmia sp!, {r4-r6,pc} -_020C3400: - ldr r0, [r0, #0x0] - bl FUN_020C20DC -_020C3408: - ldr r1, [sp, #0x10] - cmp r1, #0x0 - strne r0, [r1, #0x0] - mov r0, #0x0 - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C341C -FUN_020C341C: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl FUN_020C2398 - movs r4, r0 - addeq sp, sp, #0x4 - moveq r0, #0x2 - ldmeqia sp!, {r4-r7,pc} - mov r0, #0x0 - str r0, [sp, #0x0] - ldrh r0, [r4, #0x4] - mov r1, r7 - mov r2, r6 - mov r3, r5 - bl FUN_020C3270 - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,pc} - ands r0, r7, #0x1 - beq _020C3498 - ldr r0, [r4, #0x0] - mov r1, r6 - mov r2, r5 - bl FUN_020C30BC - cmp r0, #0x0 - bne _020C34A0 - add sp, sp, #0x4 - mov r0, #0x6 - ldmia sp!, {r4-r7,pc} -_020C3498: - ldr r0, [r4, #0x0] - bl FUN_020C20DC -_020C34A0: - ldr r1, [sp, #0x18] - cmp r1, #0x0 - strne r0, [r1, #0x0] - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C34B8 -FUN_020C34B8: - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r9, r1 - bl FUN_020C21A4 - movs r8, r0 - addeq sp, sp, #0xc - moveq r0, #0x1 - ldmeqia sp!, {r4-r11,pc} - ldr r0, [r8, #0x0] - mov r7, #0x0 - cmp r0, #0x0 - bls _020C35D4 - add r6, r8, #0x4 - str r7, [sp, #0x4] - mov r11, r7 - mov r10, r7 - mov r5, r7 - mov r4, #0x1 -_020C3500: - ldrb r0, [r6, #0x0] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020C35C0 - ; Jump table - b _020C3520 ; case 0 - b _020C3570 ; case 1 - b _020C3598 ; case 2 - b _020C3548 ; case 3 -_020C3520: - str r5, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r2, r9 - mov r3, r4 - bl FUN_020C341C - cmp r0, #0x0 - beq _020C35C0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020C3548: - str r10, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r2, r9 - mov r3, r4 - bl FUN_020C33B8 - cmp r0, #0x0 - beq _020C35C0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020C3570: - str r11, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r2, r9 - mov r3, r4 - bl FUN_020C3270 - cmp r0, #0x0 - beq _020C35C0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020C3598: - ldr r0, [sp, #0x4] - mov r2, r9 - str r0, [sp, #0x0] - ldrb r1, [r6, #0x1] - ldr r0, [r6, #0x4] - mov r3, r4 - bl FUN_020C31D4 - cmp r0, #0x0 - addne sp, sp, #0xc - ldmneia sp!, {r4-r11,pc} -_020C35C0: - ldr r0, [r8, #0x0] - add r7, r7, #0x1 - cmp r7, r0 - add r6, r6, #0x8 - blo _020C3500 -_020C35D4: - mov r0, #0x0 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - - arm_func_start FUN_020C35E0 -FUN_020C35E0: ; 0x020C35E0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r12, #0x0 - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C341C - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C360C -FUN_020C360C: ; 0x020C360C - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r1 - mov r12, #0x0 - mov r1, #0xff - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C31D4 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C3640 -FUN_020C3640: ; 0x020C3640 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r1 - mov r12, #0x0 - mov r1, #0xff - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C3270 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C3674 -FUN_020C3674: ; 0x020C3674 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r1 - mov r12, #0x0 - mov r1, #0xff - mov r3, #0x1 - str r12, [sp, #0x0] - bl FUN_020C341C - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C36A8 -FUN_020C36A8: ; 0x020C36A8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl FUN_020C34B8 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C36C8 -FUN_020C36C8: ; 0x020C36C8 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r7, r2 - mov r2, r3 - ldr r6, [sp, #0x20] - mov r4, r0 - mov r8, r1 - bl FUN_020C0AF4 - movs r5, r0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r0, r8 - mov r1, r5 - bl FUN_020C09B0 - add r12, sp, #0x4 - mov r2, r0 - mov r0, r7 - mov r1, #0x6 - mov r3, #0x0 - str r12, [sp, #0x0] - bl FUN_020C3270 - cmp r0, #0x0 - beq _020C373C - mov r0, r5 - bl thunk_FUN_020c077c - add sp, sp, #0x8 - mov r0, #0x0 - ldmia sp!, {r4-r8,pc} -_020C373C: - ldr r12, [sp, #0x24] - ldr r2, [r6, #0x0] - ldr r1, [r12, #0x18] - ldr r3, [sp, #0x4] - mov r0, r5 - add r1, r12, r1 - bl FUN_020C0A90 - ldrb r1, [r6, #0x6] - mov r0, r4 - bl FUN_020C0F30 - ldrb r1, [r6, #0x7] - mov r0, r4 - bl FUN_020C0ECC - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - mov r0, r4 - bl FUN_020C0E38 - mov r0, #0x1 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C378C -FUN_020C378C: ; 0x020C378C - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - mov r8, r2 - mov r2, r3 - ldr r5, [sp, #0x28] - mov r6, r0 - mov r7, r1 - bl FUN_020C0AF4 - movs r4, r0 - addeq sp, sp, #0x10 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - mov r0, r7 - mov r1, r4 - bl FUN_020C09B0 - mov r7, r0 - add r12, sp, #0x8 - mov r0, r8 - mov r2, r7 - mov r1, #0x6 - mov r3, #0x0 - str r12, [sp, #0x0] - bl FUN_020C3270 - cmp r0, #0x0 - beq _020C3804 - mov r0, r4 - bl thunk_FUN_020c077c - add sp, sp, #0x10 - mov r0, #0x0 - ldmia sp!, {r4-r8,pc} -_020C3804: - ldr r0, [sp, #0x2c] - add r12, sp, #0x4 - mov r2, r7 - mov r1, #0x1 - mov r3, #0x0 - str r12, [sp, #0x0] - bl FUN_020C341C - cmp r0, #0x0 - beq _020C383C - mov r0, r4 - bl thunk_FUN_020c077c - add sp, sp, #0x10 - mov r0, #0x0 - ldmia sp!, {r4-r8,pc} -_020C383C: - ldr r2, [sp, #0x4] - ldr r3, [sp, #0x8] - ldr r1, [r2, #0x18] - mov r0, r4 - add r1, r2, r1 - mov r2, #0x0 - bl FUN_020C0A90 - ldrb r1, [r5, #0x6] - mov r0, r6 - bl FUN_020C0F30 - ldrb r1, [r5, #0x7] - mov r0, r6 - bl FUN_020C0ECC - ldr r1, [sp, #0x2c] - mov r0, r6 - bl FUN_020C0E60 - mov r0, #0x1 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C3888 -FUN_020C3888: ; 0x020C3888 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x14 - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r5, r2 - bl FUN_020C2334 - cmp r0, #0x0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - ldr r0, [r0, #0x0] - bl FUN_020C20DC - movs r4, r0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - mov r1, r5 - bl FUN_020C3D9C - cmp r0, #0x0 - addeq sp, sp, #0x14 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - str r0, [sp, #0x0] - str r4, [sp, #0x4] - str r6, [sp, #0x8] - str r5, [sp, #0xc] - ldrb r1, [r0, #0x9] - ldrh r2, [r0, #0x4] - ldrb r3, [r0, #0x8] - mov r0, r7 - bl FUN_020C36C8 - add sp, sp, #0x14 - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C3910 -FUN_020C3910: ; 0x020C3910 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0xc - mov r7, r0 - ldr r0, [sp, #0x20] - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl FUN_020C2398 - cmp r0, #0x0 - addeq sp, sp, #0xc - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,pc} - cmp r4, #0x0 - ldrltb r4, [r0, #0x8] - cmp r5, #0x0 - ldrlth r5, [r0, #0x4] - cmp r6, #0x0 - ldrltb r6, [r0, #0x9] - ldr r12, [sp, #0x20] - mov r2, r5 - str r0, [sp, #0x0] - mov r0, r7 - mov r1, r6 - mov r3, r4 - str r12, [sp, #0x4] - bl FUN_020C378C - add sp, sp, #0xc - ldmia sp!, {r4-r7,pc} - - arm_func_start FUN_020C3980 -FUN_020C3980: ; 0x020C3980 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0xc - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl FUN_020C2398 - cmp r0, #0x0 - addeq sp, sp, #0xc - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - str r0, [sp, #0x0] - str r4, [sp, #0x4] - ldrb r1, [r0, #0x9] - ldrh r2, [r0, #0x4] - ldrb r3, [r0, #0x8] - mov r0, r5 - bl FUN_020C378C - add sp, sp, #0xc - ldmia sp!, {r4-r5,pc} - - arm_func_start FUN_020C39CC -FUN_020C39CC: ; 0x020C39CC - stmdb sp!, {r4-r8,lr} - mov r6, r0 - bl FUN_020C241C - mov r5, #0x0 - mov r7, r5 -_020C39E0: - mov r0, r5 - bl FUN_020C2208 - movs r4, r0 - beq _020C3A58 - ldrb r1, [r4, #0x0] - mov r0, r5 - bl FUN_020C1160 - ldrh r1, [r4, #0x2] - mov r0, r5 - bl FUN_020C1148 - ldr r0, [r4, #0x4] - cmp r0, #0x0 - beq _020C3A58 - cmp r6, #0x0 - beq _020C3A58 - ldrb r0, [r4, #0x0] - mov r8, r7 - cmp r0, #0x0 - ble _020C3A58 -_020C3A2C: - ldr r2, [r4, #0x4] - mov r0, r5 - mov r1, r6 - bl FUN_020C10B4 - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r8,pc} - ldrb r0, [r4, #0x0] - add r8, r8, #0x1 - cmp r8, r0 - blt _020C3A2C -_020C3A58: - add r5, r5, #0x1 - cmp r5, #0x20 - blt _020C39E0 - mov r0, #0x1 - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C3A6C -FUN_020C3A6C: ; 0x020C3A6C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - bl OS_DisableInterrupts - mov r4, r0 - ldr r0, _020C3A9C ; =UNK_021D2904 - mov r1, r5 - bl FUN_020ADBE8 - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020C3A9C: .word UNK_021D2904 - - arm_func_start FUN_020C3AA0 -FUN_020C3AA0: ; 0x020C3AA0 - stmdb sp!, {r4-r8,lr} - mov r8, r0 - mov r7, r1 - bl OS_DisableInterrupts - mov r6, r0 - mov r0, r8 - mov r1, #0x0 - bl FUN_020ADA98 - movs r5, r0 - beq _020C3B04 -_020C3AC8: - mov r0, r8 - mov r1, r5 - bl FUN_020ADA98 - ldr r1, [r5, #0x8] - mov r4, r0 - cmp r1, r7 - bne _020C3AF8 - mov r0, r8 - mov r1, r5 - bl FUN_020ADAB0 - mov r0, r5 - bl FUN_020C3A6C -_020C3AF8: - mov r5, r4 - cmp r4, #0x0 - bne _020C3AC8 -_020C3B04: - mov r0, r6 - bl OS_RestoreInterrupts - ldmia sp!, {r4-r8,pc} - - arm_func_start FUN_020C3B10 -FUN_020C3B10: ; 0x020C3B10 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x120] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - sub r1, r1, #0x1 - str r1, [r0, #0x120] - ldr r1, [r0, #0x120] - cmp r1, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {pc} - bl FUN_020C1674 - add sp, sp, #0x4 - ldmia sp!, {pc} - - arm_func_start FUN_020C3B4C -FUN_020C3B4C: ; 0x020C3B4C - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0x110] - mov r1, r1, lsl #0x1f - movs r1, r1, asr #0x1f - ldmeqia sp!, {r4,pc} - bl FUN_020C3B10 - ldr r1, [r4, #0x164] - mov r0, r4 - blx r1 - ldr r0, _020C3BA8 ; =UNK_021D2DF0 - mov r1, r4 - bl FUN_020C3AA0 - ldr r0, _020C3BAC ; =UNK_021D2900 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020C3B9C - mov r1, r4 - add r0, r0, #0x4e0 - bl FUN_020C3AA0 -_020C3B9C: - mov r0, r4 - bl FUN_020C3C4C - ldmia sp!, {r4,pc} - .balign 4 -_020C3BA8: .word UNK_021D2DF0 -_020C3BAC: .word UNK_021D2900 - - arm_func_start FUN_020C3BB0 -FUN_020C3BB0: ; 0x020C3BB0 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, _020C3C40 ; =UNK_021D2DD8 - bl OS_LockMutex - ldr r0, _020C3C44 ; =UNK_021D2900 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - beq _020C3BDC - ldr r0, _020C3C48 ; =0x000004C8 - add r0, r1, r0 - bl OS_LockMutex -_020C3BDC: - ldr r0, [r4, #0x110] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - beq _020C3BF4 - mov r0, r4 - bl FUN_020C1430 -_020C3BF4: - ldr r0, [r4, #0x110] - mov r0, r0, lsl #0x1f - movs r0, r0, asr #0x1f - beq _020C3C10 - ldr r1, [r4, #0x16c] - mov r0, r4 - blx r1 -_020C3C10: - mov r0, r4 - bl FUN_020C3B4C - ldr r0, _020C3C40 ; =UNK_021D2DD8 - bl OS_UnlockMutex - ldr r0, _020C3C44 ; =UNK_021D2900 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - ldmeqia sp!, {r4,pc} - ldr r0, _020C3C48 ; =0x000004C8 - add r0, r1, r0 - bl OS_UnlockMutex - ldmia sp!, {r4,pc} - .balign 4 -_020C3C40: .word UNK_021D2DD8 -_020C3C44: .word UNK_021D2900 -_020C3C48: .word 0x000004C8 - - arm_func_start FUN_020C3C4C -FUN_020C3C4C: ; 0x020C3C4C - ldr r2, [r0, #0x14c] - cmp r2, #0x0 - movne r1, #0x0 - strne r1, [r2, #0x0] - strne r1, [r0, #0x14c] - ldr r1, [r0, #0x110] - bic r1, r1, #0x1 - str r1, [r0, #0x110] - ldr r1, [r0, #0x110] - bic r1, r1, #0x4 - str r1, [r0, #0x110] - ldr r1, [r0, #0x110] - bic r1, r1, #0x2 - str r1, [r0, #0x110] - bx lr - - arm_func_start FUN_020C3C88 -FUN_020C3C88: - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r5, _020C3D94 ; =UNK_021D2DFC - mov r7, #0x0 - ldr r4, _020C3D98 ; =SNDi_DecibelTable -_020C3C9C: - ldr r1, [r5, #0x110] - mov r0, r1, lsl #0x1f - movs r0, r0, asr #0x1f - beq _020C3D7C - ldr r0, [r5, #0x114] - cmp r0, #0x0 - bne _020C3CC4 - mov r0, r5 - bl FUN_020C3BB0 - b _020C3D7C -_020C3CC4: - mov r0, r1, lsl #0x1d - movs r0, r0, asr #0x1f - beq _020C3CFC - ldr r0, [r5, #0x118] - cmp r0, #0x0 - beq _020C3CFC - mov r0, r5 - bl FUN_020C1458 - ldr r0, [r5, #0x110] - orr r0, r0, #0x2 - str r0, [r5, #0x110] - ldr r0, [r5, #0x110] - bic r0, r0, #0x4 - str r0, [r5, #0x110] -_020C3CFC: - ldr r0, [r5, #0x110] - mov r0, r0, lsl #0x1e - movs r0, r0, asr #0x1f - beq _020C3D7C - add r0, r5, #0xe8 - bl FUN_020C3DF4 - ldr r1, [r5, #0x154] - add r0, r5, #0xe8 - mov r1, r1, lsl #0x1 - ldrsh r6, [r4, r1] - bl FUN_020C3E0C - mov r0, r0, asr #0x8 - mov r0, r0, lsl #0x1 - ldrsh r1, [r4, r0] - ldr r0, [r5, #0x158] - add r6, r1, r6 - cmp r6, r0 - beq _020C3D54 - mov r0, r5 - mov r1, r6 - bl FUN_020C13C4 - str r6, [r5, #0x158] -_020C3D54: - ldr r0, [r5, #0x110] - mov r0, r0, lsl #0x1c - movs r0, r0, asr #0x1f - beq _020C3D7C - add r0, r5, #0xe8 - bl FUN_020C3DDC - cmp r0, #0x0 - beq _020C3D7C - mov r0, r5 - bl FUN_020C3BB0 -_020C3D7C: - add r7, r7, #0x1 - cmp r7, #0x4 - add r5, r5, #0x170 - blt _020C3C9C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020C3D94: .word UNK_021D2DFC -_020C3D98: .word SNDi_DecibelTable - - arm_func_start FUN_020C3D9C -FUN_020C3D9C: - cmp r1, #0x0 - movlt r0, #0x0 - bxlt lr - ldr r2, [r0, #0x1c] - cmp r1, r2 - movcs r0, #0x0 - bxcs lr - mov r2, #0xc - mul r2, r1, r2 - add r3, r0, #0x20 - ldr r1, [r3, r2] - mvn r0, #0x0 - cmp r1, r0 - add r0, r3, r2 - moveq r0, #0x0 - bx lr - - arm_func_start FUN_020C3DDC -FUN_020C3DDC: - ldr r1, [r0, #0x8] - ldr r0, [r0, #0xc] - cmp r1, r0 - movge r0, #0x1 - movlt r0, #0x0 - bx lr - - arm_func_start FUN_020C3DF4 -FUN_020C3DF4: ; 0x020C3DF4 - ldr r2, [r0, #0x8] - ldr r1, [r0, #0xc] - cmp r2, r1 - addlt r1, r2, #0x1 - strlt r1, [r0, #0x8] - bx lr - - arm_func_start FUN_020C3E0C -FUN_020C3E0C: - stmdb sp!, {r4,lr} - ldr r1, [r0, #0xc] - ldr r2, [r0, #0x8] - cmp r2, r1 - ldrge r0, [r0, #0x4] - ldmgeia sp!, {r4,pc} - ldr r4, [r0, #0x0] - ldr r0, [r0, #0x4] - sub r0, r0, r4 - mul r0, r2, r0 - bl _s32_div_f - add r0, r4, r0 - ldmia sp!, {r4,pc} - - arm_func_start FUN_020C3E40 -FUN_020C3E40: - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl FUN_020C3E0C - str r0, [r6, #0x0] - str r5, [r6, #0x4] - str r4, [r6, #0xc] - mov r0, #0x0 - str r0, [r6, #0x8] - ldmia sp!, {r4-r6,pc} - - arm_func_start FUN_020C3E6C -FUN_020C3E6C: ; 0x020C3E6C - mov r2, #0x0 - str r2, [r0, #0x4] - ldr r1, [r0, #0x4] - str r1, [r0, #0x0] - str r2, [r0, #0xc] - ldr r1, [r0, #0xc] - str r1, [r0, #0x8] - bx lr diff --git a/arm9/asm/unk_020ADA84.s b/arm9/asm/unk_020ADA84.s deleted file mode 100644 index 21bde852..00000000 --- a/arm9/asm/unk_020ADA84.s +++ /dev/null @@ -1,21554 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern SNDi_DecibelTable - .extern GXi_DmaId - .extern FUN_020ADCA4 - .extern FUN_020ADC8C - - .section .rodata - - ; static const in function - .global UNK_020FF7D4 -UNK_020FF7D4: ; 0x020FF7D4 - .word FUN_020AF2B4 - .word FUN_020AF288 - .word FUN_020AF25C - .word FUN_020AF230 - .word GX_LoadBG0Char_2 - .word GX_LoadBG1Char_2 - .word GX_LoadBG2Char_2 - .word GX_LoadBG3Char_2 - .word GX_LoadBG0Scr_2 - .word GX_LoadBG1Scr_2 - .word GX_LoadBG2Scr_2 - .word GX_LoadBG3Scr_2 - .word GX_LoadBG2Scr_3 - .word GX_LoadBG3Scr_3 - .word GX_LoadOBJPltt_2 - .word GX_LoadBGPltt_2 - .word FUN_020AF174 - .word FUN_020AF148 - .word GX_LoadOAM_2 - .word GX_LoadOBJ_2 - .word GXS_LoadBG0Char_2 - .word GXS_LoadBG1Char_2 - .word GXS_LoadBG2Char_2 - .word GXS_LoadBG3Char_2 - .word GXS_LoadBG0Scr_2 - .word GXS_LoadBG1Scr_2 - .word GXS_LoadBG2Scr_2 - .word GXS_LoadBG3Scr_2 - .word GXS_LoadBG2Scr_3 - .word GXS_LoadBG3Scr_3 - .word GXS_LoadOBJPltt_2 - .word GXS_LoadBGPltt_2 - .word FUN_020AF074 - .word FUN_020AF048 - .word GXS_LoadOAM_2 - .word GXS_LoadOBJ_2 - - ; const initializer - .global UNK_020FF864 -UNK_020FF864: ; 0x020FF864 - .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF894 -UNK_020FF894: ; 0x020FF894 - .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 - .byte 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 - - .global UNK_020FF8AC -UNK_020FF8AC: ; 0x020FF8AC - .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 - .byte 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 - - ; static const in function - .global UNK_020FF8C4 -UNK_020FF8C4: ; 0x020FF8C4 - .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00 - - ; static const in function - .global UNK_020FF8D0 -UNK_020FF8D0: ; 0x020FF8D0 - .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - - ; static const in function - .global UNK_020FF8D8 -UNK_020FF8D8: ; 0x020FF8D8 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 - - .global UNK_020FF8F8 -UNK_020FF8F8: ; 0x020FF8F8 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK_020FF928 -UNK_020FF928: ; 0x020FF928 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - - .global UNK_020FF958 -UNK_020FF958: ; 0x020FF958 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - ; static const in function - .global UNK_020FF970 -UNK_020FF970: ; 0x020FF970 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01 - .byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x00, 0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03 - - ; static const in function - .global UNK_020FF990 -UNK_020FF990: ; 0x020FF990 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0xC0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xC0 - - ; static const in function - .global UNK_020FF9D0 -UNK_020FF9D0: ; 0x020FF9D0 - .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F - .byte 0x00, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F - - ; static const in function - .global UNK_020FF9F0 -UNK_020FF9F0: ; 0x020FF9F0 - .byte 0x04, 0x05, 0x07, 0x08 - .byte 0x03, 0x05, 0x06, 0x08 - .byte 0x03, 0x04, 0x06, 0x07 - .byte 0x01, 0x02, 0x07, 0x08 - .byte 0x00, 0x02, 0x06, 0x08 - .byte 0x00, 0x01, 0x06, 0x07 - .byte 0x01, 0x02, 0x04, 0x05 - .byte 0x00, 0x02, 0x03, 0x05 - .byte 0x00, 0x01, 0x03, 0x04 - - ; static const in function - .global UNK_020FFA14 -UNK_020FFA14: ; 0x020FFA14 - .byte 0x04, 0x05, 0x07, 0x08 - .byte 0x03, 0x05, 0x06, 0x08 - .byte 0x03, 0x04, 0x06, 0x07 - .byte 0x01, 0x02, 0x07, 0x08 - .byte 0x00, 0x02, 0x06, 0x08 - .byte 0x00, 0x01, 0x06, 0x07 - .byte 0x01, 0x02, 0x04, 0x05 - .byte 0x00, 0x02, 0x03, 0x05 - .byte 0x00, 0x01, 0x03, 0x04 - - .section .data - - .global UNK_021064B8 -UNK_021064B8: ; 0x021064B8 - .word FUN_020AE8B4 - - .global UNK_021064BC -UNK_021064BC: ; 0x021064BC - .word FUN_020AE8AC - - .global UNK_021064C0 -UNK_021064C0: ; 0x021064C0 - .word FUN_020AE8C4 - - .global UNK_021064C4 -UNK_021064C4: ; 0x021064C4 - .word FUN_020AE8BC - - .global UNK_021064C8 -UNK_021064C8: ; 0x021064C8 - .word UNK_021064E4 - .word UNK_0210652C - - .global UNK_021064D0 -UNK_021064D0: ; 0x021064D0 - .word UNK_02106544 - .word UNK_0210652C - .word UNK_021064E4 - .word UNK_02106514 - .word UNK_021064FC - - .global UNK_021064E4 -UNK_021064E4: ; 0x021064E4 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021064FC -UNK_021064FC: ; 0x021064FC - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x00 - - .global UNK_02106514 -UNK_02106514: ; 0x02106514 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x00 - - .global UNK_0210652C -UNK_0210652C: ; 0x0210652C - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00 - - .global UNK_02106544 -UNK_02106544: ; 0x02106544 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0x00 - - .global UNK_0210655C -UNK_0210655C: ; 0x0210655C - .word FUN_020B1088 - .word FUN_020B1098 - .word 0 - .word 0 - .word 0 - - .global UNK_02106570 -UNK_02106570: ; 0x02106570 - .short -2 - - .balign 4, 0 - .global UNK_02106574 -UNK_02106574: ; 0x02106574 - .word -1 - - .global UNK_02106578 -UNK_02106578: ; 0x02106578 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106590 -UNK_02106590: ; 0x02106590 - .byte 0x00, 0xF0, 0xFF, 0xFF - - .global UNK_02106594 -UNK_02106594: ; 0x02106594 - .byte 0x05, 0x00, 0x00, 0x00 - - .global UNK_02106598 -UNK_02106598: ; 0x02106598 - .word FUN_020BE5A0 - - .global UNK_0210659C -UNK_0210659C: ; 0x0210659C - .word FUN_020BDA70 - - .global UNK_021065A0 -UNK_021065A0: ; 0x021065A0 - .word FUN_020BDF38 - - .global UNK_021065A4 -UNK_021065A4: ; 0x021065A4 - .word FUN_020BE334 - - .global UNK_021065A8 -UNK_021065A8: ; 0x021065A8 - .word FUN_020BDB40 - - .global UNK_021065AC -UNK_021065AC: ; 0x021065AC - .word FUN_020B8640 - - .global UNK_021065B0 -UNK_021065B0: ; 0x021065B0 - .word FUN_020B86B0 - - .global UNK_021065B4 -UNK_021065B4: ; 0x021065B4 - .word FUN_020B8A08 - - .global UNK_021065B8 -UNK_021065B8: ; 0x021065B8 - .byte 0x4D, 0x00, 0x41, 0x4D - - .global UNK_021065BC -UNK_021065BC: ; 0x021065BC - .word FUN_020BDC0C - .byte 0x4D, 0x00, 0x50, 0x54 - .word FUN_020BE4F0 - .byte 0x4D, 0x00, 0x41, 0x54 - .word FUN_020BDF84 - .byte 0x56, 0x00, 0x41, 0x56 - .word FUN_020BE5E0 - .byte 0x4A, 0x00, 0x41, 0x43 - .word FUN_020BDAB4 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106608 -UNK_02106608: ; 0x02106608 - .word FUN_020BE668 - .word FUN_020BEE3C - .word FUN_020BF2FC - - .global UNK_02106614 -UNK_02106614: ; 0x02106614 - .word FUN_020BE62C - .word FUN_020BECEC - .word FUN_020BF0D4 - - .global UNK_02106620 -UNK_02106620: ; 0x02106620 - .word FUN_020BE6E4 - .word FUN_020BEF10 - .word FUN_020BF42C - .word FUN_020BFA9C - - .global UNK_02106630 -UNK_02106630: ; 0x02106630 - .byte 0x2A, 0x00, 0x00, 0x00 - - .global UNK_02106634 -UNK_02106634: ; 0x02106634 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106638 -UNK_02106638: ; 0x02106638 - .byte 0x2A, 0x00, 0x00, 0x00 - - .global UNK_0210663C -UNK_0210663C: ; 0x0210663C - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106640 -UNK_02106640: ; 0x02106640 - .word FUN_020BA58C - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106650 -UNK_02106650: ; 0x02106650 - .word FUN_020BA438 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106660 -UNK_02106660: ; 0x02106660 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 - - .global UNK_021066A0 -UNK_021066A0: ; 0x021066A0 - .byte 0x12, 0x10, 0x17, 0x1B - - .global UNK_021066A4 -UNK_021066A4: ; 0x021066A4 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK_021066AC -UNK_021066AC: ; 0x021066AC - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00 - - .global UNK_021066D0 -UNK_021066D0: ; 0x021066D0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021066DC -UNK_021066DC: ; 0x021066DC - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021066E8 -UNK_021066E8: ; 0x021066E8 - .byte 0x12, 0x10, 0x17, 0x1B - - .global UNK_021066EC -UNK_021066EC: ; 0x021066EC - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK_021066F4 -UNK_021066F4: ; 0x021066F4 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00 - - .global UNK_02106718 -UNK_02106718: ; 0x02106718 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106724 -UNK_02106724: ; 0x02106724 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_02106730 -UNK_02106730: ; 0x02106730 - .word FUN_020BAC70 - .word FUN_020BAC48 - .word FUN_020BAAC0 - .word FUN_020BA9EC - .word FUN_020BA50C - .word FUN_020BA3C4 - .word FUN_020B9F84 - .word FUN_020B9C54 - .word FUN_020B98C4 - .word FUN_020B9258 - .word FUN_020B9178 - .word FUN_020B9110 - .word FUN_020B8DF0 - .word FUN_020B8A60 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021067B0 -UNK_021067B0: ; 0x021067B0 - .word FUN_020BEBD8 - .word FUN_020BEB00 - .word FUN_020BEA84 - .word FUN_020BEA3C - .word FUN_020BE954 - .word FUN_020BE894 - .word FUN_020BE850 - .word FUN_020BE82C - - .global UNK_021067D0 -UNK_021067D0: ; 0x021067D0 - .word FUN_020BF988 - .word FUN_020BF894 - .word FUN_020BF810 - .word FUN_020BF7C8 - .word FUN_020BF6C8 - .word FUN_020BF5E8 - .word FUN_020BF598 - .word FUN_020BF574 - - .global UNK_021067F0 -UNK_021067F0: ; 0x021067F0 - .word FUN_020BFFD4 - .word FUN_020BFEEC - .word FUN_020BFE68 - .word FUN_020BFE0C - .word FUN_020BFD38 - .word FUN_020BFC8C - .word FUN_020BFC4C - .word FUN_020BFC28 - - .section .bss - - .global UNK_021CCD48 -UNK_021CCD48: ; 0x021CCD48 - .space 0x4 - - .global UNK_021CCD4C -UNK_021CCD4C: ; 0x021CCD4C - .space 0xc - - .global UNK_021CCD58 -UNK_021CCD58: ; 0x021CCD58 - .space 0x14 - - .global UNK_021CCD6C -UNK_021CCD6C: ; 0x021CCD6C - .space 0x4 - - .global UNK_021CCD70 -UNK_021CCD70: ; 0x021CCD70 - .space 0x4 - - .global UNK_021CCD74 -UNK_021CCD74: ; 0x021CCD74 - .space 0x14 - - .global UNK_021CCD88 -UNK_021CCD88: ; 0x021CCD88 - .space 0x4 - - .global UNK_021CCD8C -UNK_021CCD8C: ; 0x021CCD8C - .space 0x10 - - .global UNK_021CCD9C -UNK_021CCD9C: ; 0x021CCD9C - .space 0x4 - - .global UNK_021CCDA0 -UNK_021CCDA0: ; 0x021CCDA0 - .space 0x100 - - .global UNK_021CCEA0 -UNK_021CCEA0: ; 0x021CCEA0 - .space 0x400 - - .global UNK_021CD2A0 -UNK_021CD2A0: ; 0x021CD2A0 - .space 0x40 - - .global UNK_021CD2E0 -UNK_021CD2E0: ; 0x021CD2E0 - .space 0x100 - - .global UNK_021CD3E0 -UNK_021CD3E0: ; 0x021CD3E0 - .space 0x400 - - .global UNK_021CD7E0 -UNK_021CD7E0: ; 0x021CD7E0 - .space 0x40 - - .global UNK_021CD820 -UNK_021CD820: ; 0x021CD820 - .space 0x100 - - .global UNK_021CD920 -UNK_021CD920: ; 0x021CD920 - .space 0x400 - - .global UNK_021CDD20 -UNK_021CDD20: ; 0x021CDD20 - .space 0x40 - - .global UNK_021CDD60 -UNK_021CDD60: ; 0x021CDD60 - .space 0x4 - - .global UNK_021CDD64 -UNK_021CDD64: ; 0x021CDD64 - .space 0x4 - - .global UNK_021CDD68 -UNK_021CDD68: ; 0x021CDD68 - .space 0x4 - - .global UNK_021CDD6C -UNK_021CDD6C: ; 0x021CDD6C - .space 0x4 - - .global UNK_021CDD70 -UNK_021CDD70: ; 0x021CDD70 - .space 0x4 - - .global UNK_021CDD74 -UNK_021CDD74: ; 0x021CDD74 - .space 0x80 - - .global UNK_021CDDF4 -UNK_021CDDF4: ; 0x021CDDF4 - .space 0x4 - - .global UNK_021CDDF8 -UNK_021CDDF8: ; 0x021CDDF8 - .space 0xfc - - .global UNK_021CDEF4 -UNK_021CDEF4: ; 0x021CDEF4 - .space 0x10 - - .global UNK_021CDF04 -UNK_021CDF04: ; 0x021CDF04 - .space 0x4 - - .global UNK_021CDF08 -UNK_021CDF08: ; 0x021CDF08 - .space 0x2ec - - .global UNK_021CE1F4 -UNK_021CE1F4: ; 0x021CE1F4 - .space 0x300 - - .global UNK_021CE4F4 -UNK_021CE4F4: ; 0x021CE4F4 - .space 0x400 - - .global UNK_021CE8F4 -UNK_021CE8F4: ; 0x021CE8F4 - .space 0x4 - - .global UNK_021CE8F8 -UNK_021CE8F8: ; 0x021CE8F8 - .space 0x404 - - .global UNK_021CECFC -UNK_021CECFC: ; 0x021CECFC - .space 0x4 - - .global UNK_021CED00 -UNK_021CED00: ; 0x021CED00 - .space 0x4 - - .global UNK_021CED04 -UNK_021CED04: ; 0x021CED04 - .space 0x4 - - .global UNK_021CED08 -UNK_021CED08: ; 0x021CED08 - .space 0x4 - - .global UNK_021CED0C -UNK_021CED0C: ; 0x021CED0C - .space 0x4 - - .global UNK_021CED10 -UNK_021CED10: ; 0x021CED10 - .space 0x4 - - .global UNK_021CED14 -UNK_021CED14: ; 0x021CED14 - .space 0x4 - - .global UNK_021CED18 -UNK_021CED18: ; 0x021CED18 - .space 0x8 - - .global UNK_021CED20 -UNK_021CED20: ; 0x021CED20 - .space 0x44 - - .global UNK_021CED64 -UNK_021CED64: ; 0x021CED64 - .space 0x34 - - .global UNK_021CED98 -UNK_021CED98: ; 0x021CED98 - .space 0x28 - - .global UNK_021CEDC0 -UNK_021CEDC0: ; 0x021CEDC0 - .space 0x14 - - .global UNK_021CEDD4 -UNK_021CEDD4: ; 0x021CEDD4 - .space 0x24 - - .global UNK_021CEDF8 -UNK_021CEDF8: ; 0x021CEDF8 - .space 0xc - - .global UNK_021CEE04 -UNK_021CEE04: ; 0x021CEE04 - .space 0x14 - - .global UNK_021CEE18 -UNK_021CEE18: ; 0x021CEE18 - .space 0x30 - - .global UNK_021CEE48 -UNK_021CEE48: ; 0x021CEE48 - .space 0x30 - - .global UNK_021CEE78 -UNK_021CEE78: ; 0x021CEE78 - .space 0xe0 - - .global UNK_021CEF58 -UNK_021CEF58: ; 0x021CEF58 - .space 0xc - - .global UNK_021CEF64 -UNK_021CEF64: ; 0x021CEF64 - .space 0xc - - .global UNK_021CEF70 -UNK_021CEF70: ; 0x021CEF70 - .space 0xc - - .global UNK_021CEF7C -UNK_021CEF7C: ; 0x021CEF7C - .space 0x4 - - .global UNK_021CEF80 -UNK_021CEF80: ; 0x021CEF80 - .space 0xe00 - - .global UNK_021CFD80 -UNK_021CFD80: ; 0x021CFD80 - .space 0x4 - - .global UNK_021CFD84 -UNK_021CFD84: ; 0x021CFD84 - .space 0x4 - - .global UNK_021CFD88 -UNK_021CFD88: ; 0x021CFD88 - .space 0x4 - - .global UNK_021CFD8C -UNK_021CFD8C: ; 0x021CFD8C - .space 0x4 - - .global UNK_021CFD90 -UNK_021CFD90: ; 0x021CFD90 - .space 0x4 - - .global UNK_021CFD94 -UNK_021CFD94: ; 0x021CFD94 - .space 0x2ba - - .global UNK_021D004E -UNK_021D004E: ; 0x021D004E - .space 0x332 - - .global UNK_021D0380 -UNK_021D0380: ; 0x021D0380 - .space 0x40 - - .global UNK_021D03C0 -UNK_021D03C0: ; 0x021D03C0 - .space 0xb42 - - .global UNK_021D0F02 -UNK_021D0F02: ; 0x021D0F02 - .space 0xd7e - - .global UNK_021D1C80 -UNK_021D1C80: ; 0x021D1C80 - .space 0x4 - - .global UNK_021D1C84 -UNK_021D1C84: ; 0x021D1C84 - .space 0x4 - - .global UNK_021D1C88 -UNK_021D1C88: ; 0x021D1C88 - .space 0x4 - - .text - - arm_func_start FUN_020AE8AC -FUN_020AE8AC: ; 0x020AE8AC - mvn r0, #0x0 - bx lr - arm_func_end FUN_020AE8AC - - arm_func_start FUN_020AE8B4 -FUN_020AE8B4: ; 0x020AE8B4 - mov r0, #0x0 - bx lr - arm_func_end FUN_020AE8B4 - - arm_func_start FUN_020AE8BC -FUN_020AE8BC: ; 0x020AE8BC - mvn r0, #0x0 - bx lr - arm_func_end FUN_020AE8BC - - arm_func_start FUN_020AE8C4 -FUN_020AE8C4: ; 0x020AE8C4 - mov r0, #0x0 - bx lr - arm_func_end FUN_020AE8C4 - - arm_func_start FUN_020AE8CC -FUN_020AE8CC: ; 0x020AE8CC - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov lr, #0x0 - ldr r3, _020AE914 ; =UNK_021064E4 - mov r12, lr - mov r2, #0x1 -_020AE8E4: - ldr r1, [r0, r12, lsl #0x2] - add lr, lr, #0x1 - str r1, [r3, #0x0] - ldr r1, [r0, r2, lsl #0x2] - cmp lr, #0x5 - str r1, [r3, #0x4] - add r12, r12, #0x2 - add r3, r3, #0x18 - add r2, r2, #0x2 - blt _020AE8E4 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AE914: .word UNK_021064E4 - arm_func_end FUN_020AE8CC - - arm_func_start FUN_020AE918 -FUN_020AE918: ; 0x020AE918 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov lr, #0x0 - ldr ip, _020AE960 ; =UNK_021064E4 - mov r3, lr - mov r2, #0x1 -_020AE930: - ldr r1, [r12, #0x0] - add lr, lr, #0x1 - str r1, [r0, r3, lsl #0x2] - ldr r1, [r12, #0x4] - cmp lr, #0x5 - str r1, [r0, r2, lsl #0x2] - add r12, r12, #0x18 - add r3, r3, #0x2 - add r2, r2, #0x2 - blt _020AE930 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AE960: .word UNK_021064E4 - arm_func_end FUN_020AE918 - - arm_func_start FUN_020AE964 -FUN_020AE964: ; 0x020AE964 - mov r0, #0x0 - bx lr - arm_func_end FUN_020AE964 - - arm_func_start FUN_020AE96C -FUN_020AE96C: ; 0x020AE96C - stmdb sp!, {r4-r10,lr} - cmp r0, #0x0 - moveq r7, #0x10 - addne r0, r0, #0xf - bicne r7, r0, #0xf - ldr r0, _020AEADC ; =0x0007FFF0 - cmp r7, r0 - movcs r0, #0x0 - ldmcsia sp!, {r4-r10,pc} - cmp r1, #0x0 - beq _020AEA5C - mov lr, r7, lsr #0x1 - mov r6, #0x0 - ldr r2, _020AEAE0 ; =UNK_02106514 - ldr r3, _020AEAE4 ; =UNK_021064FC - ldr ip, _020AEAE8 ; =UNK_021064C8 - mov r0, r6 -_020AE9B0: - ldr r5, [r12, r6, lsl #0x2] - ldr r4, [r5, #0x8] - cmp r4, #0x0 - beq _020AEA48 - ldr r9, [r5, #0x4] - ldr r4, [r5, #0x0] - sub r4, r9, r4 - cmp r4, r7 - blo _020AEA48 - ldrh r4, [r5, #0x10] - cmp r4, #0x0 - beq _020AE9EC - cmp r4, #0x3 - beq _020AE9F4 - b _020AE9FC -_020AE9EC: - mov r4, r3 - b _020AEA00 -_020AE9F4: - mov r4, r2 - b _020AEA00 -_020AE9FC: - mov r4, r0 -_020AEA00: - ldr r9, [r4, #0x8] - cmp r9, #0x0 - beq _020AEA48 - ldr r10, [r4, #0x4] - ldr r9, [r4, #0x0] - sub r9, r10, r9 - cmp r9, lr - blo _020AEA48 - ldr r3, [r5, #0x0] - mov r0, #0x1 - add r2, r3, r7 - str r2, [r5, #0x0] - ldr r2, [r4, #0x0] - add r2, r2, lr - str r2, [r4, #0x0] - ldr r2, [r5, #0x14] - add r8, r3, r2 - b _020AEAB8 -_020AEA48: - add r6, r6, #0x1 - cmp r6, #0x2 - blt _020AE9B0 - mov r0, #0x0 - b _020AEAB8 -_020AEA5C: - ldr r3, _020AEAEC ; =UNK_021064D0 - mov r5, #0x0 -_020AEA64: - ldr r4, [r3, r5, lsl #0x2] - ldr r0, [r4, #0x8] - cmp r0, #0x0 - beq _020AEAA8 - ldr r2, [r4, #0x4] - ldr r0, [r4, #0x0] - sub r0, r2, r0 - cmp r0, r7 - blo _020AEAA8 - ldr r2, [r4, #0x4] - mov r0, #0x1 - sub r2, r2, r7 - str r2, [r4, #0x4] - ldr r3, [r4, #0x4] - ldr r2, [r4, #0x14] - add r8, r3, r2 - b _020AEAB8 -_020AEAA8: - add r5, r5, #0x1 - cmp r5, #0x5 - blt _020AEA64 - mov r0, #0x0 -_020AEAB8: - cmp r0, #0x0 - moveq r0, #0x0 - ldmeqia sp!, {r4-r10,pc} - ldr r0, _020AEAF0 ; =0x0000FFFF - mov r2, r7, lsr #0x4 - and r0, r0, r8, lsr #0x3 - orr r0, r0, r2, lsl #0x10 - orr r0, r0, r1, lsl #0x1f - ldmia sp!, {r4-r10,pc} - .balign 4 -_020AEADC: .word 0x0007FFF0 -_020AEAE0: .word UNK_02106514 -_020AEAE4: .word UNK_021064FC -_020AEAE8: .word UNK_021064C8 -_020AEAEC: .word UNK_021064D0 -_020AEAF0: .word 0x0000FFFF - arm_func_end FUN_020AE96C - - arm_func_start FUN_020AEAF4 -FUN_020AEAF4: ; 0x020AEAF4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r0, _020AEB68 ; =UNK_021CCD48 - mov r6, #0x0 - ldrh r7, [r0, #0x0] - ldr r5, _020AEB6C ; =UNK_021064E4 - mov lr, r6 - cmp r7, #0x1 - addhi r7, r7, #0x1 - mov r1, r6 - mov r3, r6 - mov r4, #0x1 - mov r0, #0x20000 - mov r2, #0x10000 -_020AEB2C: - cmp r6, r7 - strlt r4, [r5, #0x8] - strge lr, [r5, #0x8] - ldr r12, [r5, #0xc] - add r6, r6, #0x1 - cmp r12, #0x0 - strne r3, [r5, #0x0] - strne r2, [r5, #0x4] - streq r1, [r5, #0x0] - streq r0, [r5, #0x4] - cmp r6, #0x5 - add r5, r5, #0x18 - blt _020AEB2C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020AEB68: .word UNK_021CCD48 -_020AEB6C: .word UNK_021064E4 - arm_func_end FUN_020AEAF4 - - arm_func_start FUN_020AEB70 -FUN_020AEB70: ; 0x020AEB70 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - cmp r5, #0x2 - bhi _020AEBA8 - mov r12, #0x1 - mov r0, #0x4 - mov r1, #0x3 - mov r2, #0x2 - mov r3, #0x0 - str r12, [sp, #0x0] - bl FUN_020AEC10 - b _020AEBC4 -_020AEBA8: - mov r12, #0x1 - mov r0, #0x4 - mov r1, #0x3 - mov r2, #0x0 - mov r3, #0x2 - str r12, [sp, #0x0] - bl FUN_020AEC10 -_020AEBC4: - ldr r0, _020AEBFC ; =UNK_021CCD48 - strh r5, [r0, #0x0] - bl FUN_020AEAF4 - cmp r4, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r3, _020AEC00 ; =FUN_020AE96C - ldr r1, _020AEC04 ; =UNK_021064B8 - ldr r2, _020AEC08 ; =FUN_020AE964 - ldr r0, _020AEC0C ; =UNK_021064BC - str r3, [r1, #0x0] - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AEBFC: .word UNK_021CCD48 -_020AEC00: .word FUN_020AE96C -_020AEC04: .word UNK_021064B8 -_020AEC08: .word FUN_020AE964 -_020AEC0C: .word UNK_021064BC - arm_func_end FUN_020AEB70 - - arm_func_start FUN_020AEC10 -FUN_020AEC10: ; 0x020AEC10 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr lr, [sp, #0x18] - ldr r6, _020AEC58 ; =UNK_021064E4 - mov r12, #0x18 - mla r7, r0, r12, r6 - ldr r0, _020AEC5C ; =UNK_021064D0 - mla r5, r1, r12, r6 - mla r4, r2, r12, r6 - mla r2, r3, r12, r6 - mla r1, lr, r12, r6 - str r7, [r0, #0x0] - str r5, [r0, #0x4] - str r4, [r0, #0x8] - str r2, [r0, #0xc] - str r1, [r0, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020AEC58: .word UNK_021064E4 -_020AEC5C: .word UNK_021064D0 - arm_func_end FUN_020AEC10 - - arm_func_start FUN_020AEC60 -FUN_020AEC60: ; 0x020AEC60 - ldr r0, _020AEC78 ; =UNK_021CCD4C - mov r2, #0x0 - ldr r1, [r0, #0x8] - str r2, [r0, #0x0] - str r1, [r0, #0x4] - bx lr - .balign 4 -_020AEC78: .word UNK_021CCD4C - arm_func_end FUN_020AEC60 - - arm_func_start FUN_020AEC7C -FUN_020AEC7C: ; 0x020AEC7C - ldr r2, [r0, #0x0] - ldr r1, _020AEC94 ; =UNK_021CCD4C - str r2, [r1, #0x0] - ldr r0, [r0, #0x4] - str r0, [r1, #0x4] - bx lr - .balign 4 -_020AEC94: .word UNK_021CCD4C - arm_func_end FUN_020AEC7C - - arm_func_start FUN_020AEC98 -FUN_020AEC98: ; 0x020AEC98 - ldr r1, _020AECB0 ; =UNK_021CCD4C - ldr r2, [r1, #0x0] - str r2, [r0, #0x0] - ldr r1, [r1, #0x4] - str r1, [r0, #0x4] - bx lr - .balign 4 -_020AECB0: .word UNK_021CCD4C - arm_func_end FUN_020AEC98 - - arm_func_start FUN_020AECB4 -FUN_020AECB4: ; 0x020AECB4 - mov r0, #0x0 - bx lr - arm_func_end FUN_020AECB4 - - arm_func_start FUN_020AECBC -FUN_020AECBC: ; 0x020AECBC - stmdb sp!, {r4,lr} - cmp r0, #0x0 - moveq r0, #0x8 - addne r0, r0, #0x7 - ldr ip, _020AEDE8 ; =0x0007FFF8 - bicne r0, r0, #0x7 - cmp r0, r12 - mov r3, #0x0 - movcs r0, #0x0 - ldmcsia sp!, {r4,pc} - cmp r2, #0x1 - bne _020AED64 - ldr r2, _020AEDEC ; =UNK_021CCD4C - cmp r1, #0x0 - ldr r12, [r2, #0x0] - andne r2, r12, #0x7 - rsbne r2, r2, #0x8 - andne r4, r2, #0x7 - andeq r2, r12, #0xf - rsbeq r2, r2, #0x10 - andeq r4, r2, #0xf - ldr r2, _020AEDEC ; =UNK_021CCD4C - add lr, r0, r4 - ldr r2, [r2, #0x4] - sub r2, r2, r12 - cmp r2, lr - blo _020AED5C - cmp r1, #0x0 - add r1, r12, lr - beq _020AED40 - cmp r1, #0x10000 - movhi r12, #0x0 - bhi _020AEDCC -_020AED40: - ldr r1, _020AEDEC ; =UNK_021CCD4C - add r3, r12, r4 - ldr r2, [r1, #0x0] - mov r12, #0x1 - add r2, r2, lr - str r2, [r1, #0x0] - b _020AEDCC -_020AED5C: - mov r12, #0x0 - b _020AEDCC -_020AED64: - ldr r2, _020AEDEC ; =UNK_021CCD4C - ldr r12, [r2, #0x4] - cmp r12, r0 - blo _020AEDC8 - sub r2, r12, r0 - cmp r1, #0x0 - andne r4, r2, #0x7 - andeq r4, r2, #0xf - ldr r2, _020AEDEC ; =UNK_021CCD4C - add lr, r0, r4 - ldr r2, [r2, #0x0] - sub r2, r12, r2 - cmp r2, lr - blo _020AEDC8 - cmp r1, #0x0 - beq _020AEDB0 - cmp r12, #0x10000 - movhi r12, #0x0 - bhi _020AEDCC -_020AEDB0: - ldr r1, _020AEDEC ; =UNK_021CCD4C - mov r12, #0x1 - ldr r2, [r1, #0x4] - sub r3, r2, lr - str r3, [r1, #0x4] - b _020AEDCC -_020AEDC8: - mov r12, #0x0 -_020AEDCC: - cmp r12, #0x0 - ldrne r1, _020AEDF0 ; =0x0000FFFF - movne r2, r0, lsr #0x3 - andne r0, r1, r3, lsr #0x3 - orrne r0, r0, r2, lsl #0x10 - moveq r0, #0x0 - ldmia sp!, {r4,pc} - .balign 4 -_020AEDE8: .word 0x0007FFF8 -_020AEDEC: .word UNK_021CCD4C -_020AEDF0: .word 0x0000FFFF - arm_func_end FUN_020AECBC - - arm_func_start FUN_020AEDF4 -FUN_020AEDF4: ; 0x020AEDF4 - stmdb sp!, {r4,lr} - ldr r2, _020AEE2C ; =UNK_021CCD4C - mov r4, r1 - str r0, [r2, #0x8] - bl FUN_020AEC60 - cmp r4, #0x0 - ldmeqia sp!, {r4,pc} - ldr r3, _020AEE30 ; =FUN_020AECBC - ldr r1, _020AEE34 ; =UNK_021064C0 - ldr r2, _020AEE38 ; =FUN_020AECB4 - ldr r0, _020AEE3C ; =UNK_021064C4 - str r3, [r1, #0x0] - str r2, [r0, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020AEE2C: .word UNK_021CCD4C -_020AEE30: .word FUN_020AECBC -_020AEE34: .word UNK_021064C0 -_020AEE38: .word FUN_020AECB4 -_020AEE3C: .word UNK_021064C4 - arm_func_end FUN_020AEDF4 - - arm_func_start FUN_020AEE40 -FUN_020AEE40: ; 0x020AEE40 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r5, _020AEEB4 ; =UNK_021CCD58 - mov r9, r0 - mov r0, r5 - mov r8, r1 - mov r7, r2 - mov r6, r3 - bl FUN_020AF2F4 - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, #0x0 - ldmneia sp!, {r4-r9,pc} - mov r0, r5 - bl FUN_020AEF78 - mov r4, r0 - str r9, [r4, #0x0] - str r7, [r4, #0x4] - str r8, [r4, #0x8] - mov r0, r5 - str r6, [r4, #0xc] - bl FUN_020AEF98 - ldr r2, [r5, #0x10] - ldr r1, [r4, #0xc] - mov r0, #0x1 - add r1, r2, r1 - str r1, [r5, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020AEEB4: .word UNK_021CCD58 - arm_func_end FUN_020AEE40 - - arm_func_start FUN_020AEEB8 -FUN_020AEEB8: ; 0x020AEEB8 - stmdb sp!, {r4-r6,lr} - ldr r6, _020AEF18 ; =UNK_021CCD58 - mov r0, r6 - bl FUN_020AEF88 - mov r5, r0 - mov r0, r6 - bl FUN_020AEF3C - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - add r4, r6, #0x10 -_020AEEE0: - mov r0, r5 - bl FUN_020AEFF0 - ldr r2, [r4, #0x0] - ldr r1, [r5, #0xc] - mov r0, r6 - sub r1, r2, r1 - str r1, [r4, #0x0] - bl FUN_020AEF88 - mov r5, r0 - mov r0, r6 - bl FUN_020AEF3C - cmp r0, #0x0 - bne _020AEEE0 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020AEF18: .word UNK_021CCD58 - arm_func_end FUN_020AEEB8 - - arm_func_start FUN_020AEF1C -FUN_020AEF1C: ; 0x020AEF1C - ldr r2, _020AEF34 ; =UNK_021CCD58 - ldr ip, _020AEF38 ; =FUN_020AEFD4 - str r0, [r2, #0x0] - mov r0, r2 - str r1, [r2, #0x4] - bx r12 - .balign 4 -_020AEF34: .word UNK_021CCD58 -_020AEF38: .word FUN_020AEFD4 - arm_func_end FUN_020AEF1C - - arm_func_start FUN_020AEF3C -FUN_020AEF3C: ; 0x020AEF3C - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020AF2E0 - cmp r0, #0x0 - movne r0, #0x0 - ldmneia sp!, {r4,pc} - ldrh r1, [r4, #0x8] - mov r0, r4 - bl FUN_020AF30C - strh r0, [r4, #0x8] - ldrh r1, [r4, #0xc] - mov r0, #0x1 - sub r1, r1, #0x1 - strh r1, [r4, #0xc] - ldmia sp!, {r4,pc} - arm_func_end FUN_020AEF3C - - arm_func_start FUN_020AEF78 -FUN_020AEF78: ; 0x020AEF78 - ldrh r1, [r0, #0xa] - ldr r0, [r0, #0x0] - add r0, r0, r1, lsl #0x4 - bx lr - arm_func_end FUN_020AEF78 - - arm_func_start FUN_020AEF88 -FUN_020AEF88: ; 0x020AEF88 - ldrh r1, [r0, #0x8] - ldr r0, [r0, #0x0] - add r0, r0, r1, lsl #0x4 - bx lr - arm_func_end FUN_020AEF88 - - arm_func_start FUN_020AEF98 -FUN_020AEF98: ; 0x020AEF98 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020AF2F4 - cmp r0, #0x0 - movne r0, #0x0 - ldmneia sp!, {r4,pc} - ldrh r1, [r4, #0xa] - mov r0, r4 - bl FUN_020AF30C - strh r0, [r4, #0xa] - ldrh r1, [r4, #0xc] - mov r0, #0x1 - add r1, r1, #0x1 - strh r1, [r4, #0xc] - ldmia sp!, {r4,pc} - arm_func_end FUN_020AEF98 - - arm_func_start FUN_020AEFD4 -FUN_020AEFD4: ; 0x020AEFD4 - mov r2, #0x0 - strh r2, [r0, #0xa] - ldrh r1, [r0, #0xa] - strh r1, [r0, #0x8] - strh r2, [r0, #0xc] - str r2, [r0, #0x10] - bx lr - arm_func_end FUN_020AEFD4 - - arm_func_start FUN_020AEFF0 -FUN_020AEFF0: ; 0x020AEFF0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r3, [r5, #0x0] - ldr r2, _020AF02C ; =UNK_020FF7D4 - ldr r0, [r5, #0x4] - ldr r1, [r5, #0xc] - ldr r4, [r2, r3, lsl #0x2] - bl DC_FlushRange - ldr r0, [r5, #0x4] - ldr r1, [r5, #0x8] - ldr r2, [r5, #0xc] - blx r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AF02C: .word UNK_020FF7D4 - arm_func_end FUN_020AEFF0 - - arm_func_start GXS_LoadOBJ_2 -GXS_LoadOBJ_2: - ldr ip, _020AF038 ; =GXS_LoadOBJ - bx r12 - .balign 4 -_020AF038: .word GXS_LoadOBJ - arm_func_end GXS_LoadOBJ_2 - - arm_func_start GXS_LoadOAM_2 -GXS_LoadOAM_2: ; 0x020AF03C - ldr ip, _020AF044 ; =GXS_LoadOAM - bx r12 - .balign 4 -_020AF044: .word GXS_LoadOAM - arm_func_end GXS_LoadOAM_2 - - arm_func_start FUN_020AF048 -FUN_020AF048: ; 0x020AF048 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GXS_BeginLoadBGExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GXS_LoadBGExtPltt - bl GXS_EndLoadBGExtPltt - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AF048 - - arm_func_start FUN_020AF074 -FUN_020AF074: ; 0x020AF074 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GXS_BeginLoadOBJExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GXS_LoadOBJExtPltt - bl GXS_EndLoadOBJExtPltt - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AF074 - - arm_func_start GXS_LoadBGPltt_2 -GXS_LoadBGPltt_2: ; 0x020AF0A0 - ldr ip, _020AF0A8 ; =GXS_LoadBGPltt - bx r12 - .balign 4 -_020AF0A8: .word GXS_LoadBGPltt - arm_func_end GXS_LoadBGPltt_2 - - arm_func_start GXS_LoadOBJPltt_2 -GXS_LoadOBJPltt_2: ; 0x020AF0AC - ldr ip, _020AF0B4 ; =GXS_LoadOBJPltt - bx r12 - .balign 4 -_020AF0B4: .word GXS_LoadOBJPltt - arm_func_end GXS_LoadOBJPltt_2 - - arm_func_start GXS_LoadBG3Scr_3 -GXS_LoadBG3Scr_3: ; 0x020AF0B8 - ldr ip, _020AF0C0 ; =GXS_LoadBG3Scr - bx r12 - .balign 4 -_020AF0C0: .word GXS_LoadBG3Scr - arm_func_end GXS_LoadBG3Scr_3 - - arm_func_start GXS_LoadBG2Scr_3 -GXS_LoadBG2Scr_3: ; 0x020AF0C4 - ldr ip, _020AF0CC ; =GXS_LoadBG2Scr - bx r12 - .balign 4 -_020AF0CC: .word GXS_LoadBG2Scr - arm_func_end GXS_LoadBG2Scr_3 - - arm_func_start GXS_LoadBG3Scr_2 -GXS_LoadBG3Scr_2: ; 0x020AF0D0 - ldr ip, _020AF0D8 ; =GXS_LoadBG3Scr - bx r12 - .balign 4 -_020AF0D8: .word GXS_LoadBG3Scr - arm_func_end GXS_LoadBG3Scr_2 - - arm_func_start GXS_LoadBG2Scr_2 -GXS_LoadBG2Scr_2: ; 0x020AF0DC - ldr ip, _020AF0E4 ; =GXS_LoadBG2Scr - bx r12 - .balign 4 -_020AF0E4: .word GXS_LoadBG2Scr - arm_func_end GXS_LoadBG2Scr_2 - - arm_func_start GXS_LoadBG1Scr_2 -GXS_LoadBG1Scr_2: ; 0x020AF0E8 - ldr ip, _020AF0F0 ; =GXS_LoadBG1Scr - bx r12 - .balign 4 -_020AF0F0: .word GXS_LoadBG1Scr - arm_func_end GXS_LoadBG1Scr_2 - - arm_func_start GXS_LoadBG0Scr_2 -GXS_LoadBG0Scr_2: ; 0x020AF0F4 - ldr ip, _020AF0FC ; =GXS_LoadBG0Scr - bx r12 - .balign 4 -_020AF0FC: .word GXS_LoadBG0Scr - arm_func_end GXS_LoadBG0Scr_2 - - arm_func_start GXS_LoadBG3Char_2 -GXS_LoadBG3Char_2: ; 0x020AF100 - ldr ip, _020AF108 ; =GXS_LoadBG3Char - bx r12 - .balign 4 -_020AF108: .word GXS_LoadBG3Char - arm_func_end GXS_LoadBG3Char_2 - - arm_func_start GXS_LoadBG2Char_2 -GXS_LoadBG2Char_2: ; 0x020AF10C - ldr ip, _020AF114 ; =GXS_LoadBG2Char - bx r12 - .balign 4 -_020AF114: .word GXS_LoadBG2Char - arm_func_end GXS_LoadBG2Char_2 - - arm_func_start GXS_LoadBG1Char_2 -GXS_LoadBG1Char_2: ; 0x020AF118 - ldr ip, _020AF120 ; =GXS_LoadBG1Char - bx r12 - .balign 4 -_020AF120: .word GXS_LoadBG1Char - arm_func_end GXS_LoadBG1Char_2 - - arm_func_start GXS_LoadBG0Char_2 -GXS_LoadBG0Char_2: ; 0x020AF124 - ldr ip, _020AF12C ; =GXS_LoadBG0Char - bx r12 - .balign 4 -_020AF12C: .word GXS_LoadBG0Char - arm_func_end GXS_LoadBG0Char_2 - - arm_func_start GX_LoadOBJ_2 -GX_LoadOBJ_2: ; 0x020AF130 - ldr ip, _020AF138 ; =GX_LoadOBJ - bx r12 - .balign 4 -_020AF138: .word GX_LoadOBJ - arm_func_end GX_LoadOBJ_2 - - arm_func_start GX_LoadOAM_2 -GX_LoadOAM_2: ; 0x020AF13C - ldr ip, _020AF144 ; =GX_LoadOAM - bx r12 - .balign 4 -_020AF144: .word GX_LoadOAM - arm_func_end GX_LoadOAM_2 - - arm_func_start FUN_020AF148 -FUN_020AF148: ; 0x020AF148 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadBGExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadBGExtPltt - bl GX_EndLoadBGExtPltt - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AF148 - - arm_func_start FUN_020AF174 -FUN_020AF174: ; 0x020AF174 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadOBJExtPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadOBJExtPltt - bl GX_EndLoadOBJExtPltt - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AF174 - - arm_func_start GX_LoadBGPltt_2 -GX_LoadBGPltt_2: ; 0x020AF1A0 - ldr ip, _020AF1A8 ; =GX_LoadBGPltt - bx r12 - .balign 4 -_020AF1A8: .word GX_LoadBGPltt - arm_func_end GX_LoadBGPltt_2 - - arm_func_start GX_LoadOBJPltt_2 -GX_LoadOBJPltt_2: ; 0x020AF1AC - ldr ip, _020AF1B4 ; =GX_LoadOBJPltt - bx r12 - .balign 4 -_020AF1B4: .word GX_LoadOBJPltt - arm_func_end GX_LoadOBJPltt_2 - - arm_func_start GX_LoadBG3Scr_3 -GX_LoadBG3Scr_3: ; 0x020AF1B8 - ldr ip, _020AF1C0 ; =GX_LoadBG3Scr - bx r12 - .balign 4 -_020AF1C0: .word GX_LoadBG3Scr - arm_func_end GX_LoadBG3Scr_3 - - arm_func_start GX_LoadBG2Scr_3 -GX_LoadBG2Scr_3: ; 0x020AF1C4 - ldr ip, _020AF1CC ; =GX_LoadBG2Scr - bx r12 - .balign 4 -_020AF1CC: .word GX_LoadBG2Scr - arm_func_end GX_LoadBG2Scr_3 - - arm_func_start GX_LoadBG3Scr_2 -GX_LoadBG3Scr_2: ; 0x020AF1D0 - ldr ip, _020AF1D8 ; =GX_LoadBG3Scr - bx r12 - .balign 4 -_020AF1D8: .word GX_LoadBG3Scr - arm_func_end GX_LoadBG3Scr_2 - - arm_func_start GX_LoadBG2Scr_2 -GX_LoadBG2Scr_2: ; 0x020AF1DC - ldr ip, _020AF1E4 ; =GX_LoadBG2Scr - bx r12 - .balign 4 -_020AF1E4: .word GX_LoadBG2Scr - arm_func_end GX_LoadBG2Scr_2 - - arm_func_start GX_LoadBG1Scr_2 -GX_LoadBG1Scr_2: ; 0x020AF1E8 - ldr ip, _020AF1F0 ; =GX_LoadBG1Scr - bx r12 - .balign 4 -_020AF1F0: .word GX_LoadBG1Scr - arm_func_end GX_LoadBG1Scr_2 - - arm_func_start GX_LoadBG0Scr_2 -GX_LoadBG0Scr_2: ; 0x020AF1F4 - ldr ip, _020AF1FC ; =GX_LoadBG0Scr - bx r12 - .balign 4 -_020AF1FC: .word GX_LoadBG0Scr - arm_func_end GX_LoadBG0Scr_2 - - arm_func_start GX_LoadBG3Char_2 -GX_LoadBG3Char_2: ; 0x020AF200 - ldr ip, _020AF208 ; =GX_LoadBG3Char - bx r12 - .balign 4 -_020AF208: .word GX_LoadBG3Char - arm_func_end GX_LoadBG3Char_2 - - arm_func_start GX_LoadBG2Char_2 -GX_LoadBG2Char_2: ; 0x020AF20C - ldr ip, _020AF214 ; =GX_LoadBG2Char - bx r12 - .balign 4 -_020AF214: .word GX_LoadBG2Char - arm_func_end GX_LoadBG2Char_2 - - arm_func_start GX_LoadBG1Char_2 -GX_LoadBG1Char_2: ; 0x020AF218 - ldr ip, _020AF220 ; =GX_LoadBG1Char - bx r12 - .balign 4 -_020AF220: .word GX_LoadBG1Char - arm_func_end GX_LoadBG1Char_2 - - arm_func_start GX_LoadBG0Char_2 -GX_LoadBG0Char_2: ; 0x020AF224 - ldr ip, _020AF22C ; =GX_LoadBG0Char - bx r12 - .balign 4 -_020AF22C: .word GX_LoadBG0Char - arm_func_end GX_LoadBG0Char_2 - - arm_func_start FUN_020AF230 -FUN_020AF230: ; 0x020AF230 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r2 - bl GX_BeginLoadClearImage - mov r0, r5 - mov r1, r4 - bl GX_LoadClearImageDepth - bl GX_EndLoadClearImage - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020AF230 - - arm_func_start FUN_020AF25C -FUN_020AF25C: ; 0x020AF25C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r2 - bl GX_BeginLoadClearImage - mov r0, r5 - mov r1, r4 - bl GX_LoadClearImageColor - bl GX_EndLoadClearImage - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020AF25C - - arm_func_start FUN_020AF288 -FUN_020AF288: ; 0x020AF288 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadTexPltt - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadTexPltt - bl GX_EndLoadTexPltt - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AF288 - - arm_func_start FUN_020AF2B4 -FUN_020AF2B4: ; 0x020AF2B4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GX_BeginLoadTex - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl GX_LoadTex - bl GX_EndLoadTex - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AF2B4 - - arm_func_start FUN_020AF2E0 -FUN_020AF2E0: ; 0x020AF2E0 - ldrh r0, [r0, #0xc] - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - bx lr - arm_func_end FUN_020AF2E0 - - arm_func_start FUN_020AF2F4 -FUN_020AF2F4: ; 0x020AF2F4 - ldrh r1, [r0, #0xc] - ldr r0, [r0, #0x4] - cmp r1, r0 - moveq r0, #0x1 - movne r0, #0x0 - bx lr - arm_func_end FUN_020AF2F4 - - arm_func_start FUN_020AF30C -FUN_020AF30C: ; 0x020AF30C - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, r0 - add r0, r1, #0x1 - ldr r1, [r2, #0x4] - bl _u32_div_f - mov r0, r1, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end FUN_020AF30C - - arm_func_start FUN_020AF334 -FUN_020AF334: ; 0x020AF334 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x10 - add r3, r2, r3 - str r2, [sp, #0x0] - str r2, [sp, #0x8] - str r3, [sp, #0x4] - str r3, [sp, #0xc] - ldr r3, [r0, #0x0] - add r12, sp, #0x0 - cmp r3, #0x0 - beq _020AF418 - mov r6, #0x0 -_020AF364: - ldr r5, [r3, #0x0] - ldr r4, [r12, #0x4] - ldr r2, [r3, #0xc] - cmp r5, r4 - bne _020AF3B8 - ldr r4, [r3, #0x4] - add r4, r5, r4 - str r4, [sp, #0xc] - ldr r4, [r3, #0x8] - cmp r4, #0x0 - strne r2, [r4, #0xc] - streq r2, [r0, #0x0] - cmp r2, #0x0 - strne r4, [r2, #0x8] - ldr r4, [r1, #0x0] - cmp r4, #0x0 - strne r3, [r4, #0x8] - ldr r4, [r1, #0x0] - str r4, [r3, #0xc] - str r6, [r3, #0x8] - str r3, [r1, #0x0] -_020AF3B8: - ldr r5, [r3, #0x0] - ldr lr, [r3, #0x4] - ldr r4, [r12, #0x0] - add lr, r5, lr - cmp r4, lr - bne _020AF40C - str r5, [sp, #0x8] - ldr r5, [r3, #0x8] - ldr r4, [r3, #0xc] - cmp r5, #0x0 - strne r4, [r5, #0xc] - streq r4, [r0, #0x0] - cmp r4, #0x0 - strne r5, [r4, #0x8] - ldr lr, [r1, #0x0] - cmp lr, #0x0 - strne r3, [lr, #0x8] - ldr lr, [r1, #0x0] - str lr, [r3, #0xc] - str r6, [r3, #0x8] - str r3, [r1, #0x0] -_020AF40C: - mov r3, r2 - cmp r2, #0x0 - bne _020AF364 -_020AF418: - ldr r4, [r1, #0x0] - cmp r4, #0x0 - ldrne r2, [r4, #0xc] - strne r2, [r1, #0x0] - cmp r4, #0x0 - addeq sp, sp, #0x10 - moveq r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r2, [sp, #0x8] - mov r1, #0x0 - str r2, [r4, #0x0] - ldr r3, [sp, #0xc] - ldr r2, [sp, #0x8] - sub r2, r3, r2 - str r2, [r4, #0x4] - str r1, [r4, #0x8] - str r1, [r4, #0xc] - ldr r1, [r0, #0x0] - cmp r1, #0x0 - strne r4, [r1, #0x8] - ldr r2, [r0, #0x0] - mov r1, #0x0 - str r2, [r4, #0xc] - str r1, [r4, #0x8] - str r4, [r0, #0x0] - mov r0, #0x1 - add sp, sp, #0x10 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AF334 - - arm_func_start FUN_020AF488 -FUN_020AF488: ; 0x020AF488 - stmdb sp!, {r4-r10,lr} - ldr r4, [r0, #0x0] - ldr r9, [sp, #0x20] - cmp r4, #0x0 - mov r5, #0x0 - beq _020AF4EC - sub r12, r9, #0x1 - mvn lr, r12 -_020AF4A8: - cmp r9, #0x1 - ldrls r8, [r4, #0x0] - movls r6, r5 - movls r7, r3 - bls _020AF4D0 - ldr r7, [r4, #0x0] - add r6, r7, r12 - and r8, lr, r6 - sub r6, r8, r7 - add r7, r3, r6 -_020AF4D0: - ldr r10, [r4, #0x4] - cmp r10, r7 - movcs r5, r4 - bhs _020AF4EC - ldr r4, [r4, #0xc] - cmp r4, #0x0 - bne _020AF4A8 -_020AF4EC: - cmp r5, #0x0 - beq _020AF5B8 - cmp r6, #0x0 - beq _020AF54C - ldr r9, [r1, #0x0] - cmp r9, #0x0 - ldrne r3, [r9, #0xc] - strne r3, [r1, #0x0] - cmp r9, #0x0 - beq _020AF5B8 - ldr r4, [r5, #0x0] - mov r3, #0x0 - str r4, [r9, #0x0] - str r6, [r9, #0x4] - str r3, [r9, #0x8] - str r3, [r9, #0xc] - ldr r3, [r0, #0x0] - cmp r3, #0x0 - strne r9, [r3, #0x8] - ldr r4, [r0, #0x0] - mov r3, #0x0 - str r4, [r9, #0xc] - str r3, [r9, #0x8] - str r9, [r0, #0x0] -_020AF54C: - ldr r3, [r5, #0x4] - sub r3, r3, r7 - str r3, [r5, #0x4] - ldr r3, [r5, #0x0] - add r3, r3, r7 - str r3, [r5, #0x0] - ldr r3, [r5, #0x4] - cmp r3, #0x0 - bne _020AF5AC - ldr r4, [r5, #0x8] - ldr r3, [r5, #0xc] - cmp r4, #0x0 - strne r3, [r4, #0xc] - streq r3, [r0, #0x0] - cmp r3, #0x0 - strne r4, [r3, #0x8] - ldr r0, [r1, #0x0] - cmp r0, #0x0 - strne r5, [r0, #0x8] - ldr r3, [r1, #0x0] - mov r0, #0x0 - str r3, [r5, #0xc] - str r0, [r5, #0x8] - str r5, [r1, #0x0] -_020AF5AC: - str r8, [r2, #0x0] - mov r0, #0x1 - ldmia sp!, {r4-r10,pc} -_020AF5B8: - mov r0, #0x0 - str r0, [r2, #0x0] - ldmia sp!, {r4-r10,pc} - arm_func_end FUN_020AF488 - - arm_func_start FUN_020AF5C4 -FUN_020AF5C4: ; 0x020AF5C4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r12, #0x0 - str r12, [sp, #0x0] - bl FUN_020AF488 - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end FUN_020AF5C4 - - arm_func_start FUN_020AF5E0 -FUN_020AF5E0: ; 0x020AF5E0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr lr, [r1, #0x0] - cmp lr, #0x0 - ldrne r12, [lr, #0xc] - strne r12, [r1, #0x0] - cmp lr, #0x0 - beq _020AF640 - str r2, [lr, #0x0] - str r3, [lr, #0x4] - mov r1, #0x0 - str r1, [lr, #0x8] - str r1, [lr, #0xc] - ldr r1, [r0, #0x0] - add sp, sp, #0x4 - cmp r1, #0x0 - strne lr, [r1, #0x8] - ldr r2, [r0, #0x0] - mov r1, #0x0 - str r2, [lr, #0xc] - str r1, [lr, #0x8] - str lr, [r0, #0x0] - mov r0, #0x1 - ldmia sp!, {pc} -_020AF640: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end FUN_020AF5E0 - - arm_func_start FUN_020AF64C -FUN_020AF64C: ; 0x020AF64C - stmdb sp!, {r4,lr} - subs lr, r1, #0x1 - mov r2, #0x0 - beq _020AF684 - mov r4, r0 -_020AF660: - add r12, r2, #0x1 - add r2, r0, r2, lsl #0x4 - add r3, r0, r12, lsl #0x4 - str r3, [r2, #0xc] - str r4, [r3, #0x8] - mov r2, r12 - cmp r12, lr - add r4, r4, #0x10 - blo _020AF660 -_020AF684: - mov r2, #0x0 - str r2, [r0, #0x8] - add r1, r0, r1, lsl #0x4 - str r2, [r1, #-0x4] - ldmia sp!, {r4,pc} - arm_func_end FUN_020AF64C - - arm_func_start FUN_020AF698 -FUN_020AF698: ; 0x020AF698 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - arm_func_end FUN_020AF698 - - arm_func_start FUN_020AF6A4 -FUN_020AF6A4: ; 0x020AF6A4 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x30 - ldr r6, _020AF884 ; =UNK_020FF864 - add r5, sp, #0x0 - ldmia r6!, {r0-r3} - mov r12, r5 - stmia r5!, {r0-r3} - ldmia r6!, {r0-r3} - stmia r5!, {r0-r3} - ldr r4, _020AF888 ; =UNK_021CCD6C - ldmia r6, {r0-r3} - stmia r5, {r0-r3} - ldr lr, [r4, #0x10] - ldr r1, [r4, #0xc] - add r0, lr, lr, lsr #0x1 - mov r4, lr, lsr #0x1 - sub r0, r1, r0 - mov r3, #0x0 -_020AF6EC: - cmp r3, #0x0 - beq _020AF6FC - cmp r3, #0x2 - bne _020AF734 -_020AF6FC: - ldr r2, [r12, #0x0] - cmp r2, #0x0 - beq _020AF734 - cmp lr, #0x0 - beq _020AF734 - ldr r1, [r12, #0x8] - cmp r2, lr - movhi r2, lr - add r1, r1, r2 - str r1, [r12, #0x8] - ldr r1, [r12, #0x0] - sub lr, lr, r2 - sub r1, r1, r2 - str r1, [r12, #0x0] -_020AF734: - add r3, r3, #0x1 - cmp r3, #0x4 - add r12, r12, #0xc - blo _020AF6EC - ldr r1, [sp, #0xc] - add r5, sp, #0x0 - sub r1, r1, r4 - str r1, [sp, #0xc] - mov r3, #0x0 -_020AF758: - ldr r2, [r5, #0x0] - cmp r2, #0x0 - beq _020AF790 - cmp r0, #0x0 - beq _020AF790 - ldr r1, [r5, #0x4] - cmp r2, r0 - movhi r2, r0 - add r1, r1, r2 - str r1, [r5, #0x4] - ldr r1, [r5, #0x0] - sub r0, r0, r2 - sub r1, r1, r2 - str r1, [r5, #0x0] -_020AF790: - add r3, r3, #0x1 - cmp r3, #0x4 - add r5, r5, #0xc - blo _020AF758 - ldr r0, _020AF888 ; =UNK_021CCD6C - bl FUN_020AF698 - ldr r0, _020AF88C ; =UNK_021CCD70 - bl FUN_020AF698 - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, [r0, #0x18] - ldr r0, [r0, #0x14] - mov r1, r1, lsr #0x4 - bl FUN_020AF64C - ldr r3, [sp, #0x8] - ldr r1, _020AF888 ; =UNK_021CCD6C - cmp r3, #0x0 - str r0, [r1, #0x8] - beq _020AF7E8 - ldr r0, _020AF88C ; =UNK_021CCD70 - ldr r1, _020AF890 ; =UNK_021CCD74 - mov r2, #0x0 - bl FUN_020AF5E0 -_020AF7E8: - ldr r3, [sp, #0x4] - ldr r2, [sp, #0x8] - cmp r3, #0x0 - beq _020AF804 - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - bl FUN_020AF5E0 -_020AF804: - ldr r3, [sp, #0x20] - cmp r3, #0x0 - beq _020AF820 - ldr r0, _020AF88C ; =UNK_021CCD70 - ldr r1, _020AF890 ; =UNK_021CCD74 - mov r2, #0x40000 - bl FUN_020AF5E0 -_020AF820: - ldr r3, [sp, #0x1c] - ldr r0, [sp, #0x20] - cmp r3, #0x0 - add r2, r0, #0x40000 - beq _020AF840 - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - bl FUN_020AF5E0 -_020AF840: - ldr r3, [sp, #0x28] - cmp r3, #0x0 - beq _020AF85C - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - mov r2, #0x60000 - bl FUN_020AF5E0 -_020AF85C: - ldr r3, [sp, #0x10] - cmp r3, #0x0 - addeq sp, sp, #0x30 - ldmeqia sp!, {r4-r6,pc} - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - add r2, r4, #0x20000 - bl FUN_020AF5E0 - add sp, sp, #0x30 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020AF884: .word UNK_020FF864 -_020AF888: .word UNK_021CCD6C -_020AF88C: .word UNK_021CCD70 -_020AF890: .word UNK_021CCD74 - arm_func_end FUN_020AF6A4 - - arm_func_start FUN_020AF894 -FUN_020AF894: ; 0x020AF894 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, _020AF908 ; =0x7FFF0000 - ldr r1, _020AF90C ; =0x0000FFFF - and r2, r0, r2 - and r3, r0, r1 - mov r1, r2, lsr #0x10 - and r0, r0, #0x80000000 - mov r2, r3, lsl #0x3 - movs r3, r1, lsl #0x4 - mov r0, r0, lsr #0x1f - beq _020AF8FC - cmp r0, #0x0 - beq _020AF8DC - ldr r0, _020AF910 ; =UNK_021CCD70 - ldr r1, _020AF914 ; =UNK_021CCD74 - bl FUN_020AF334 - b _020AF8E8 -_020AF8DC: - ldr r0, _020AF918 ; =UNK_021CCD6C - ldr r1, _020AF914 ; =UNK_021CCD74 - bl FUN_020AF334 -_020AF8E8: - cmp r0, #0x0 - movne r0, #0x0 - add sp, sp, #0x4 - moveq r0, #0x1 - ldmia sp!, {pc} -_020AF8FC: - mov r0, #0x2 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AF908: .word 0x7FFF0000 -_020AF90C: .word 0x0000FFFF -_020AF910: .word UNK_021CCD70 -_020AF914: .word UNK_021CCD74 -_020AF918: .word UNK_021CCD6C - arm_func_end FUN_020AF894 - - arm_func_start FUN_020AF91C -FUN_020AF91C: ; 0x020AF91C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - cmp r0, #0x0 - moveq r5, #0x10 - addne r0, r0, #0xf - bicne r5, r0, #0xf - ldr r0, _020AF9B0 ; =0x0007FFF0 - mov r4, r1 - cmp r5, r0 - addcs sp, sp, #0x4 - movcs r0, #0x0 - ldmcsia sp!, {r4-r5,pc} - cmp r4, #0x0 - beq _020AF96C - ldr r0, _020AF9B4 ; =UNK_021CCD70 - ldr r1, _020AF9B8 ; =UNK_021CCD74 - add r2, sp, #0x0 - mov r3, r5 - bl FUN_020AF5C4 - b _020AF980 -_020AF96C: - ldr r0, _020AF9BC ; =UNK_021CCD6C - ldr r1, _020AF9B8 ; =UNK_021CCD74 - add r2, sp, #0x0 - mov r3, r5 - bl FUN_020AF5C4 -_020AF980: - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r5,pc} - ldr r1, [sp, #0x0] - ldr r0, _020AF9C0 ; =0x0000FFFF - mov r2, r5, lsr #0x4 - and r0, r0, r1, lsr #0x3 - orr r0, r0, r2, lsl #0x10 - orr r0, r0, r4, lsl #0x1f - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AF9B0: .word 0x0007FFF0 -_020AF9B4: .word UNK_021CCD70 -_020AF9B8: .word UNK_021CCD74 -_020AF9BC: .word UNK_021CCD6C -_020AF9C0: .word 0x0000FFFF - arm_func_end FUN_020AF91C - - arm_func_start FUN_020AF9C4 -FUN_020AF9C4: ; 0x020AF9C4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr ip, _020AFA14 ; =UNK_021CCD6C - str r0, [r12, #0xc] - str r1, [r12, #0x10] - str r2, [r12, #0x14] - str r3, [r12, #0x18] - bl FUN_020AF6A4 - ldr r0, [sp, #0x8] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r3, _020AFA18 ; =FUN_020AF91C - ldr r1, _020AFA1C ; =UNK_021064B8 - ldr r2, _020AFA20 ; =FUN_020AF894 - ldr r0, _020AFA24 ; =UNK_021064BC - str r3, [r1, #0x0] - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AFA14: .word UNK_021CCD6C -_020AFA18: .word FUN_020AF91C -_020AFA1C: .word UNK_021064B8 -_020AFA20: .word FUN_020AF894 -_020AFA24: .word UNK_021064BC - arm_func_end FUN_020AF9C4 - - arm_func_start FUN_020AFA28 -FUN_020AFA28: ; 0x020AFA28 - mov r0, r0, lsl #0x4 - bx lr - arm_func_end FUN_020AFA28 - - arm_func_start FUN_020AFA30 -FUN_020AFA30: ; 0x020AFA30 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020AFA78 ; =UNK_021CCD88 - ldr r1, [r0, #0x10] - ldr r0, [r0, #0xc] - mov r1, r1, lsr #0x4 - bl FUN_020AF64C - ldr r1, _020AFA78 ; =UNK_021CCD88 - str r0, [r1, #0x4] - mov r0, r1 - bl FUN_020AF698 - ldr r0, _020AFA78 ; =UNK_021CCD88 - ldr r1, _020AFA7C ; =UNK_021CCD8C - ldr r3, [r0, #0x8] - mov r2, #0x0 - bl FUN_020AF5E0 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AFA78: .word UNK_021CCD88 -_020AFA7C: .word UNK_021CCD8C - arm_func_end FUN_020AFA30 - - arm_func_start FUN_020AFA80 -FUN_020AFA80: ; 0x020AFA80 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r1, #0x10000 - rsb r2, r1, #0x0 - ldr r1, _020AFAC8 ; =0x0000FFFF - and r2, r0, r2 - and r12, r0, r1 - mov r3, r2, lsr #0x10 - ldr r0, _020AFACC ; =UNK_021CCD88 - ldr r1, _020AFAD0 ; =UNK_021CCD8C - mov r2, r12, lsl #0x3 - mov r3, r3, lsl #0x3 - bl FUN_020AF334 - cmp r0, #0x0 - moveq r0, #0x1 - movne r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020AFAC8: .word 0x0000FFFF -_020AFACC: .word UNK_021CCD88 -_020AFAD0: .word UNK_021CCD8C - arm_func_end FUN_020AFA80 - - arm_func_start FUN_020AFAD4 -FUN_020AFAD4: ; 0x020AFAD4 - stmdb sp!, {r4,lr} - sub sp, sp, #0x8 - cmp r0, #0x0 - moveq r4, #0x8 - addne r0, r0, #0x7 - bicne r4, r0, #0x7 - ldr r0, _020AFB98 ; =0x0007FFF8 - cmp r4, r0 - addcs sp, sp, #0x8 - movcs r0, #0x0 - ldmcsia sp!, {r4,pc} - cmp r1, #0x0 - beq _020AFB50 - mov r12, #0x8 - ldr r0, _020AFB9C ; =UNK_021CCD88 - ldr r1, _020AFBA0 ; =UNK_021CCD8C - add r2, sp, #0x4 - mov r3, r4 - str r12, [sp, #0x0] - bl FUN_020AF488 - ldr r2, [sp, #0x4] - add r1, r2, r4 - cmp r1, #0x10000 - bls _020AFB6C - ldr r0, _020AFB9C ; =UNK_021CCD88 - ldr r1, _020AFBA0 ; =UNK_021CCD8C - mov r3, r4 - bl FUN_020AF334 - add sp, sp, #0x8 - mov r0, #0x0 - ldmia sp!, {r4,pc} -_020AFB50: - ldr r0, _020AFB9C ; =UNK_021CCD88 - mov r12, #0x10 - ldr r1, _020AFBA0 ; =UNK_021CCD8C - add r2, sp, #0x4 - mov r3, r4 - str r12, [sp, #0x0] - bl FUN_020AF488 -_020AFB6C: - cmp r0, #0x0 - addeq sp, sp, #0x8 - moveq r0, #0x0 - ldmeqia sp!, {r4,pc} - ldr r1, [sp, #0x4] - ldr r0, _020AFBA4 ; =0x0000FFFF - mov r2, r4, lsr #0x3 - and r0, r0, r1, lsr #0x3 - orr r0, r0, r2, lsl #0x10 - add sp, sp, #0x8 - ldmia sp!, {r4,pc} - .balign 4 -_020AFB98: .word 0x0007FFF8 -_020AFB9C: .word UNK_021CCD88 -_020AFBA0: .word UNK_021CCD8C -_020AFBA4: .word 0x0000FFFF - arm_func_end FUN_020AFAD4 - - arm_func_start FUN_020AFBA8 -FUN_020AFBA8: ; 0x020AFBA8 - stmdb sp!, {r4,lr} - ldr ip, _020AFBE8 ; =UNK_021CCD88 - mov r4, r3 - str r0, [r12, #0x8] - str r1, [r12, #0xc] - str r2, [r12, #0x10] - bl FUN_020AFA30 - cmp r4, #0x0 - ldmeqia sp!, {r4,pc} - ldr r3, _020AFBEC ; =FUN_020AFAD4 - ldr r1, _020AFBF0 ; =UNK_021064C0 - ldr r2, _020AFBF4 ; =FUN_020AFA80 - ldr r0, _020AFBF8 ; =UNK_021064C4 - str r3, [r1, #0x0] - str r2, [r0, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020AFBE8: .word UNK_021CCD88 -_020AFBEC: .word FUN_020AFAD4 -_020AFBF0: .word UNK_021064C0 -_020AFBF4: .word FUN_020AFA80 -_020AFBF8: .word UNK_021064C4 - arm_func_end FUN_020AFBA8 - - arm_func_start FUN_020AFBFC -FUN_020AFBFC: ; 0x020AFBFC - mov r0, r0, lsl #0x4 - bx lr - arm_func_end FUN_020AFBFC - - arm_func_start FUN_020AFC04 -FUN_020AFC04: ; 0x020AFC04 - ldrh r2, [r0, #0x0] - cmp r2, r1 - ldrhi r0, [r0, #0x4] - addhi r0, r0, r1, lsl #0x4 - movls r0, #0x0 - bx lr - arm_func_end FUN_020AFC04 - - arm_func_start FUN_020AFC1C -FUN_020AFC1C: ; 0x020AFC1C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r1, [r0, #0x4] - mov r6, #0x0 - add r1, r1, r0 - str r1, [r0, #0x4] - ldr r1, [r0, #0x8] - add r1, r1, r0 - str r1, [r0, #0x8] - ldr r1, [r0, #0xc] - add r1, r1, r0 - str r1, [r0, #0xc] - ldrh r1, [r0, #0x0] - ldr r4, [r0, #0x4] - ldr lr, [r0, #0x8] - cmp r1, #0x0 - ldr r12, [r0, #0xc] - bls _020AFCCC - mov r1, r6 -_020AFC68: - add r2, r4, r6, lsl #0x4 - ldr r5, [r2, #0xc] - mov r3, r6, lsl #0x4 - add r5, lr, r5 - str r5, [r2, #0xc] - ldrh r7, [r4, r3] - mov r5, r1 - cmp r7, #0x0 - bls _020AFCB4 -_020AFC8C: - ldr r9, [r2, #0xc] - add r7, r5, #0x1 - ldr r8, [r9, r5, lsl #0x3] - mov r7, r7, lsl #0x10 - add r8, r12, r8 - str r8, [r9, r5, lsl #0x3] - ldrh r8, [r4, r3] - mov r5, r7, lsr #0x10 - cmp r5, r8 - blo _020AFC8C -_020AFCB4: - add r2, r6, #0x1 - mov r2, r2, lsl #0x10 - ldrh r3, [r0, #0x0] - mov r6, r2, lsr #0x10 - cmp r6, r3 - blo _020AFC68 -_020AFCCC: - ldr r1, [r0, #0x14] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r9,pc} - add r1, r1, r0 - str r1, [r0, #0x14] - ldr r1, [r0, #0x14] - mov r12, #0x0 - add r2, r1, #0x8 - ldr r0, [r2, #0x4] - add r0, r0, r2 - str r0, [r2, #0x4] - ldrh r0, [r1, #0x8] - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r0, r12 - mov r6, r12 -_020AFD14: - ldr r5, [r2, #0x4] - mov r3, r6 - add r1, r5, r0 - ldr r4, [r1, #0x4] - add r4, r4, r2 - str r4, [r1, #0x4] - ldr r4, [r1, #0x8] - add r4, r4, r2 - str r4, [r1, #0x8] - ldrh r4, [r5, r0] - cmp r4, #0x0 - bls _020AFD6C - mov r7, r6 -_020AFD48: - ldr r5, [r1, #0x8] - add r3, r3, #0x1 - ldr r4, [r5, r7] - add r4, r4, r2 - str r4, [r5, r7] - ldrh r4, [r1, #0x0] - add r7, r7, #0x4 - cmp r3, r4 - blo _020AFD48 -_020AFD6C: - ldrh r1, [r2, #0x0] - add r12, r12, #0x1 - add r0, r0, #0xc - cmp r12, r1 - blo _020AFD14 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - arm_func_end FUN_020AFC1C - - arm_func_start thunk_FUN_020afda0 -thunk_FUN_020afda0: ; 0x020AFD88 - ldr ip, _020AFD90 ; =FUN_020AFDA0 - bx r12 - .balign 4 -_020AFD90: .word FUN_020AFDA0 - arm_func_end thunk_FUN_020afda0 - - arm_func_start thunk_FUN_020afda0_2 -thunk_FUN_020afda0_2: ; 0x020AFD94 - ldr ip, _020AFD9C ; =FUN_020AFDA0 - bx r12 - .balign 4 -_020AFD9C: .word FUN_020AFDA0 - arm_func_end thunk_FUN_020afda0_2 - - arm_func_start FUN_020AFDA0 -FUN_020AFDA0: ; 0x020AFDA0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020AFDE4 ; =0x41424E4B - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020AFC1C - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AFDE4: .word 0x41424E4B - arm_func_end FUN_020AFDA0 - - arm_func_start FUN_020AFDE8 -FUN_020AFDE8: ; 0x020AFDE8 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r1, [r5, #0x4] - add r1, r1, r5 - str r1, [r5, #0x4] - bl FUN_020AFF10 - ldrh r1, [r5, #0x0] - mov r4, r0 - mov r6, #0x0 - cmp r1, #0x0 - bls _020AFE44 -_020AFE14: - mov r0, r5 - mov r1, r6 - bl FUN_020AFE8C - ldr r2, [r0, #0x4] - add r1, r6, #0x1 - add r2, r2, r4 - str r2, [r0, #0x4] - mov r0, r1, lsl #0x10 - ldrh r1, [r5, #0x0] - mov r6, r0, lsr #0x10 - cmp r6, r1 - blo _020AFE14 -_020AFE44: - ldr r0, [r5, #0xc] - cmp r0, #0x0 - beq _020AFE6C - add r0, r0, r5 - str r0, [r5, #0xc] - ldr r1, [r5, #0xc] - ldr r0, [r1, #0x4] - add r0, r0, r1 - str r0, [r1, #0x4] - str r1, [r5, #0xc] -_020AFE6C: - ldr r0, [r5, #0x14] - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - add r0, r0, r5 - str r0, [r5, #0x14] - ldr r0, [r5, #0x14] - bl FUN_020AFF00 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AFDE8 - - arm_func_start FUN_020AFE8C -FUN_020AFE8C: ; 0x020AFE8C - ldrh r2, [r0, #0x0] - cmp r1, r2 - movcs r0, #0x0 - bxcs lr - ldrh r2, [r0, #0x2] - ands r2, r2, #0x1 - ldrne r0, [r0, #0x4] - addne r0, r0, r1, lsl #0x4 - ldreq r0, [r0, #0x4] - addeq r0, r0, r1, lsl #0x3 - bx lr - arm_func_end FUN_020AFE8C - - arm_func_start FUN_020AFEB8 -FUN_020AFEB8: ; 0x020AFEB8 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020AFEFC ; =0x4345424B - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020AFDE8 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020AFEFC: .word 0x4345424B - arm_func_end FUN_020AFEB8 - - arm_func_start FUN_020AFF00 -FUN_020AFF00: ; 0x020AFF00 - ldr ip, _020AFF0C ; =FUN_020B01B0 - add r0, r0, #0x8 - bx r12 - .balign 4 -_020AFF0C: .word FUN_020B01B0 - arm_func_end FUN_020AFF00 - - arm_func_start FUN_020AFF10 -FUN_020AFF10: ; 0x020AFF10 - ldrh r1, [r0, #0x2] - ands r1, r1, #0x1 - ldrneh r1, [r0, #0x0] - ldrne r0, [r0, #0x4] - addne r0, r0, r1, lsl #0x4 - ldreqh r1, [r0, #0x0] - ldreq r0, [r0, #0x4] - addeq r0, r0, r1, lsl #0x3 - bx lr - arm_func_end FUN_020AFF10 - - arm_func_start FUN_020AFF34 -FUN_020AFF34: ; 0x020AFF34 - ldrh r2, [r0, #0x0] - cmp r1, r2 - ldrcc r0, [r0, #0x4] - addcc r0, r0, r1, lsl #0x3 - movcs r0, #0x0 - bx lr - arm_func_end FUN_020AFF34 - - arm_func_start FUN_020AFF4C -FUN_020AFF4C: ; 0x020AFF4C - stmdb sp!, {r4,lr} - ldr r1, [r0, #0x4] - mov r4, #0x0 - add r1, r1, r0 - str r1, [r0, #0x4] - ldr r1, [r0, #0x8] - add r1, r1, r0 - str r1, [r0, #0x8] - ldrh r1, [r0, #0x0] - ldr lr, [r0, #0x4] - cmp r1, #0x0 - bls _020AFFA8 -_020AFF7C: - add r3, lr, r4, lsl #0x3 - ldr r12, [r0, #0x8] - ldr r2, [r3, #0x4] - add r1, r4, #0x1 - add r2, r12, r2 - str r2, [r3, #0x4] - mov r1, r1, lsl #0x10 - ldrh r2, [r0, #0x0] - mov r4, r1, lsr #0x10 - cmp r4, r2 - blo _020AFF7C -_020AFFA8: - ldr r1, [r0, #0x10] - cmp r1, #0x0 - ldmeqia sp!, {r4,pc} - add r1, r1, r0 - str r1, [r0, #0x10] - ldr r0, [r0, #0x10] - bl FUN_020AFFC8 - ldmia sp!, {r4,pc} - arm_func_end FUN_020AFF4C - - arm_func_start FUN_020AFFC8 -FUN_020AFFC8: ; 0x020AFFC8 - ldr ip, _020AFFD4 ; =FUN_020B01B0 - add r0, r0, #0x8 - bx r12 - .balign 4 -_020AFFD4: .word FUN_020B01B0 - arm_func_end FUN_020AFFC8 - - arm_func_start FUN_020AFFD8 -FUN_020AFFD8: ; 0x020AFFD8 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B001C ; =0x4D43424B - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020AFF4C - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B001C: .word 0x4D43424B - arm_func_end FUN_020AFFD8 - - arm_func_start FUN_020B0020 -FUN_020B0020: ; 0x020B0020 - ldr r1, [r0, #0x14] - add r1, r1, r0 - str r1, [r0, #0x14] - bx lr - arm_func_end FUN_020B0020 - - arm_func_start FUN_020B0030 -FUN_020B0030: ; 0x020B0030 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B0074 ; =0x43484152 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B0020 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B0074: .word 0x43484152 - arm_func_end FUN_020B0030 - - arm_func_start FUN_020B0078 -FUN_020B0078: ; 0x020B0078 - ldr r1, [r0, #0x14] - add r1, r1, r0 - str r1, [r0, #0x14] - bx lr - arm_func_end FUN_020B0078 - - arm_func_start FUN_020B0088 -FUN_020B0088: ; 0x020B0088 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B00CC ; =0x43484152 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B0078 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B00CC: .word 0x43484152 - arm_func_end FUN_020B0088 - - arm_func_start FUN_020B00D0 -FUN_020B00D0: ; 0x020B00D0 - ldr r1, [r0, #0xc] - add r1, r1, r0 - str r1, [r0, #0xc] - bx lr - arm_func_end FUN_020B00D0 - - arm_func_start FUN_020B00E0 -FUN_020B00E0: ; 0x020B00E0 - ldr r1, [r0, #0x4] - add r1, r1, r0 - str r1, [r0, #0x4] - bx lr - arm_func_end FUN_020B00E0 - - arm_func_start FUN_020B00F0 -FUN_020B00F0: ; 0x020B00F0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B0134 ; =0x50434D50 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B00E0 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B0134: .word 0x50434D50 - arm_func_end FUN_020B00F0 - - arm_func_start FUN_020B0138 -FUN_020B0138: ; 0x020B0138 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldr r1, _020B017C ; =0x504C5454 - bl FUN_020B01F8 - movs r4, r0 - moveq r0, #0x0 - addeq sp, sp, #0x4 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r5,pc} - add r0, r4, #0x8 - bl FUN_020B00D0 - add r0, r4, #0x8 - str r0, [r5, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B017C: .word 0x504C5454 - arm_func_end FUN_020B0138 - - arm_func_start FUN_020B0180 -FUN_020B0180: ; 0x020B0180 - stmdb sp!, {r4,lr} - mov r4, r1 - ldr r1, _020B01AC ; =0x5343524E - bl FUN_020B01F8 - cmp r0, #0x0 - addne r0, r0, #0x8 - strne r0, [r4, #0x0] - movne r0, #0x1 - moveq r0, #0x0 - streq r0, [r4, #0x0] - ldmia sp!, {r4,pc} - .balign 4 -_020B01AC: .word 0x5343524E - arm_func_end FUN_020B0180 - - arm_func_start FUN_020B01B0 -FUN_020B01B0: ; 0x020B01B0 - ldr r1, [r0, #0x4] - mov r12, #0x0 - add r1, r1, r0 - str r1, [r0, #0x4] - ldrh r1, [r0, #0x0] - cmp r1, #0x0 - bxls lr -_020B01CC: - ldr r3, [r0, #0x4] - add r1, r12, #0x1 - ldr r2, [r3, r12, lsl #0x2] - mov r1, r1, lsl #0x10 - add r2, r0, r2 - str r2, [r3, r12, lsl #0x2] - ldrh r2, [r0, #0x0] - mov r12, r1, lsr #0x10 - cmp r12, r2 - blo _020B01CC - bx lr - arm_func_end FUN_020B01B0 - - arm_func_start FUN_020B01F8 -FUN_020B01F8: ; 0x020B01F8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r2, [r0, #0xc] - ldrh r12, [r0, #0xe] - mov lr, #0x0 - add r0, r0, r2 - cmp r12, #0x0 - bls _020B0244 -_020B0218: - ldr r2, [r0, #0x0] - cmp r2, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - add r2, lr, #0x1 - mov r2, r2, lsl #0x10 - ldr r3, [r0, #0x4] - mov lr, r2, lsr #0x10 - cmp lr, r12 - add r0, r0, r3 - blo _020B0218 -_020B0244: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end FUN_020B01F8 - - arm_func_start FUN_020B0250 -FUN_020B0250: ; 0x020B0250 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r5, _020B02C0 ; =0x04000470 - mov r0, r0, lsl #0xc - str r0, [r5, #0x0] - mov r4, r1, lsl #0xc - ldr r12, [sp, #0x10] - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x1c] - str r4, [r5, #0x0] - mov r4, r2, lsl #0xc - ldr r2, [sp, #0x18] - ldr lr, _020B02C4 ; =0x0400046C - str r4, [r5, #0x0] - mov r4, r3, lsl #0xc - ldr r3, [sp, #0x20] - str r4, [lr, #0x0] - mov r12, r12, lsl #0xc - str r12, [lr, #0x0] - mov r12, #0x1000 - mov r0, r0, lsl #0xc - mov r1, r1, lsl #0xc - mov r2, r2, lsl #0xc - mov r3, r3, lsl #0xc - str r12, [lr, #0x0] - bl FUN_020B0340 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B02C0: .word 0x04000470 -_020B02C4: .word 0x0400046C - arm_func_end FUN_020B0250 - - arm_func_start FUN_020B02C8 -FUN_020B02C8: ; 0x020B02C8 - stmdb sp!, {lr} - sub sp, sp, #0x14 - ldr r2, _020B0330 ; =0xBFFF0000 - ldr r0, _020B0334 ; =0x04000580 - mov r1, #0x400000 - str r2, [r0, #0x0] - rsb r0, r1, #0x0 - str r0, [sp, #0x0] - str r1, [sp, #0x4] - mov r0, #0x0 - str r1, [sp, #0x8] - mov r1, #0x1 - str r1, [sp, #0xc] - mov r2, r0 - mov r1, #0xc0000 - mov r3, #0x100000 - str r0, [sp, #0x10] - bl G3i_OrthoW_ - ldr r1, _020B0338 ; =0x0400044C - mov r2, #0x0 - ldr r0, _020B033C ; =0x04000440 - str r2, [r1, #0x0] - mov r1, #0x1 - str r1, [r0, #0x0] - add sp, sp, #0x14 - ldmia sp!, {pc} - .balign 4 -_020B0330: .word 0xBFFF0000 -_020B0334: .word 0x04000580 -_020B0338: .word 0x0400044C -_020B033C: .word 0x04000440 - arm_func_end FUN_020B02C8 - - arm_func_start FUN_020B0340 -FUN_020B0340: ; 0x020B0340 - stmdb sp!, {r4-r6,lr} - mov r3, r3, lsl #0x8 - mov r0, r0, lsl #0x8 - mov r4, r3, asr #0x10 - mov r3, r0, asr #0x10 - mov r0, r4, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r1, r1, lsl #0x8 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r2, r2, lsl #0x8 - mov r2, r2, asr #0x10 - mov r2, r2, lsl #0x10 - ldr ip, _020B03F4 ; =0x04000500 - mov lr, #0x1 - mov r6, r0, lsr #0x10 - mov r5, r3, lsr #0x10 - mov r3, r1, lsr #0x10 - mov r1, r2, lsr #0x10 - ldr r4, _020B03F8 ; =0x04000488 - str lr, [r12, #0x0] - orr r0, r5, r6, lsl #0x10 - ldr lr, _020B03FC ; =0x0400048C - str r0, [r4, #0x0] - mov r0, #0x10000000 - str r0, [lr, #0x0] - mov r12, #0x0 - str r12, [lr, #0x0] - orr r2, r3, r6, lsl #0x10 - ldr r0, _020B0400 ; =0x10001000 - str r2, [r4, #0x0] - str r0, [lr, #0x0] - str r12, [lr, #0x0] - orr r0, r3, r1, lsl #0x10 - str r0, [r4, #0x0] - mov r0, #0x1000 - str r0, [lr, #0x0] - str r12, [lr, #0x0] - orr r0, r5, r1, lsl #0x10 - str r0, [r4, #0x0] - str r12, [lr, #0x0] - ldr r0, _020B0404 ; =0x04000504 - str r12, [lr, #0x0] - str r12, [r0, #0x0] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B03F4: .word 0x04000500 -_020B03F8: .word 0x04000488 -_020B03FC: .word 0x0400048C -_020B0400: .word 0x10001000 -_020B0404: .word 0x04000504 - arm_func_end FUN_020B0340 - - arm_func_start FUN_020B0408 -FUN_020B0408: ; 0x020B0408 - ldr r1, [r0, #0x14] - cmp r1, #0x0 - ldreq r0, [r0, #0x18] - ldreq r1, [r0, #0x8] - cmp r1, #0x2 - beq _020B0428 - cmp r1, #0x4 - bne _020B0430 -_020B0428: - mov r0, #0x1 - bx lr -_020B0430: - mov r0, #0x0 - bx lr - arm_func_end FUN_020B0408 - - arm_func_start FUN_020B0438 -FUN_020B0438: ; 0x020B0438 - ldr ip, _020B0444 ; =FUN_020B0448 - str r1, [r0, #0x18] - bx r12 - .balign 4 -_020B0444: .word FUN_020B0448 - arm_func_end FUN_020B0438 - - arm_func_start FUN_020B0448 -FUN_020B0448: ; 0x020B0448 - ldr r1, [r0, #0x10] - cmp r1, #0x0 - movgt r2, #0x1 - ldr r1, [r0, #0x4] - movle r2, #0x0 - eors r1, r2, r1 - beq _020B047C - ldr r2, [r0, #0x18] - ldrh r1, [r2, #0x2] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - str r1, [r0, #0x0] - b _020B0494 -_020B047C: - ldr r2, [r0, #0x18] - ldrh r1, [r2, #0x0] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - sub r1, r1, #0x8 - str r1, [r0, #0x0] -_020B0494: - ldr ip, _020B04A4 ; =FUN_020B0534 - mov r1, #0x0 - str r1, [r0, #0xc] - bx r12 - .balign 4 -_020B04A4: .word FUN_020B0534 - arm_func_end FUN_020B0448 - - arm_func_start FUN_020B04A8 -FUN_020B04A8: ; 0x020B04A8 - mov r1, #0x0 - str r1, [r0, #0x0] - str r1, [r0, #0x4] - str r1, [r0, #0x8] - strh r1, [r0, #0xc] - bx lr - arm_func_end FUN_020B04A8 - - arm_func_start FUN_020B04C0 -FUN_020B04C0: ; 0x020B04C0 - stmdb sp!, {r4,lr} - mov r4, r0 - add r0, r4, #0x1c - bl FUN_020B04A8 - mov r1, #0x0 - str r1, [r4, #0x0] - str r1, [r4, #0x4] - mov r0, #0x1 - str r0, [r4, #0x8] - str r1, [r4, #0xc] - mov r0, #0x1000 - str r0, [r4, #0x10] - str r1, [r4, #0x14] - str r1, [r4, #0x18] - ldmia sp!, {r4,pc} - arm_func_end FUN_020B04C0 - - arm_func_start FUN_020B04FC -FUN_020B04FC: ; 0x020B04FC - ldr r1, [r0, #0x18] - ldr r2, [r0, #0x0] - ldr r0, [r1, #0xc] - sub r0, r2, r0 - mov r0, r0, lsl #0xd - mov r0, r0, lsr #0x10 - bx lr - arm_func_end FUN_020B04FC - - arm_func_start FUN_020B0518 -FUN_020B0518: ; 0x020B0518 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B06EC - cmp r0, #0x0 - movne r1, #0x0 - strne r1, [r4, #0xc] - ldmia sp!, {r4,pc} - arm_func_end FUN_020B0518 - - arm_func_start FUN_020B0534 -FUN_020B0534: ; 0x020B0534 - stmdb sp!, {r4-r8,lr} - mov r8, r0 - ldr r0, [r8, #0x8] - mov r7, #0x0 - cmp r0, #0x1 - movne r0, r7 - ldmneia sp!, {r4-r8,pc} - ldr r2, [r8, #0x10] - mov r0, #0x800 - smull r3, r1, r2, r1 - adds r0, r3, r0 - adc r1, r1, r7 - mov r0, r0, lsr #0xc - orr r0, r0, r1, lsl #0x14 - bl abs - ldr r1, [r8, #0xc] - add r6, r8, #0xc - add r0, r1, r0 - str r0, [r8, #0xc] - mov r4, r7 - mov r5, #0x1 - b _020B06A8 -_020B058C: - ldr r0, [r8, #0x0] - ldr r1, [r6, #0x0] - ldrh r0, [r0, #0x4] - mov r7, r5 - sub r0, r1, r0, lsl #0xc - str r0, [r6, #0x0] - ldr r0, [r8, #0x10] - cmp r0, #0x0 - movgt r1, r5 - ldr r0, [r8, #0x4] - movle r1, r4 - eors r0, r1, r0 - ldrne r0, [r8, #0x0] - addne r0, r0, #0x8 - strne r0, [r8, #0x0] - ldreq r0, [r8, #0x0] - subeq r0, r0, #0x8 - streq r0, [r8, #0x0] - ldr r1, [r8, #0x10] - ldr r0, [r8, #0x0] - cmp r1, #0x0 - movgt r2, r5 - ldr r1, [r8, #0x4] - movle r2, r4 - eors r1, r2, r1 - beq _020B0614 - ldr r2, [r8, #0x18] - ldrh r1, [r2, #0x0] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - cmp r0, r1 - movcs r0, r5 - movcc r0, r4 - b _020B0634 -_020B0614: - ldr r2, [r8, #0x18] - ldrh r1, [r2, #0x2] - ldr r2, [r2, #0xc] - add r1, r2, r1, lsl #0x3 - sub r1, r1, #0x8 - cmp r0, r1 - movls r0, r5 - movhi r0, r4 -_020B0634: - cmp r0, #0x0 - beq _020B0644 - mov r0, r8 - bl FUN_020B0710 -_020B0644: - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - beq _020B06A8 - ldr r0, [r8, #0x18] - ldr r2, [r8, #0x1c] - ldr r1, [r8, #0x0] - ldr r0, [r0, #0xc] - cmp r2, #0x2 - sub r0, r1, r0 - mov r0, r0, lsl #0xd - mov r1, r0, lsr #0x10 - beq _020B0680 - cmp r2, #0x3 - beq _020B069C - b _020B06A8 -_020B0680: - ldrh r0, [r8, #0x28] - cmp r1, r0 - bne _020B06A8 - ldr r0, [r8, #0x20] - ldr r2, [r8, #0x24] - blx r2 - b _020B06A8 -_020B069C: - ldr r0, [r8, #0x20] - ldr r2, [r8, #0x24] - blx r2 -_020B06A8: - ldr r0, [r8, #0x8] - cmp r0, #0x0 - beq _020B06CC - ldr r0, [r8, #0x0] - ldr r1, [r8, #0xc] - ldrh r0, [r0, #0x4] - cmp r1, r0, lsl #0xc - movge r0, r5 - bge _020B06D0 -_020B06CC: - mov r0, r4 -_020B06D0: - cmp r0, #0x0 - bne _020B058C - mov r0, r7 - ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020B0534 - - arm_func_start FUN_020B06E0 -FUN_020B06E0: ; 0x020B06E0 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x0] - bx lr - arm_func_end FUN_020B06E0 - - arm_func_start FUN_020B06EC -FUN_020B06EC: ; 0x020B06EC - ldr r3, [r0, #0x18] - ldrh r2, [r3, #0x0] - cmp r1, r2 - ldrcc r2, [r3, #0xc] - addcc r1, r2, r1, lsl #0x3 - strcc r1, [r0, #0x0] - movcc r0, #0x1 - movcs r0, #0x0 - bx lr - arm_func_end FUN_020B06EC - - arm_func_start FUN_020B0710 -FUN_020B0710: ; 0x020B0710 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r0, [r4, #0x14] - cmp r0, #0x0 - ldreq r0, [r4, #0x18] - ldreq r0, [r0, #0x8] - cmp r0, #0x3 - beq _020B0738 - cmp r0, #0x4 - bne _020B07B4 -_020B0738: - ldr r0, [r4, #0x4] - eor r0, r0, #0x1 - str r0, [r4, #0x4] - ldr r1, [r4, #0x18] - ldr r2, [r4, #0x0] - ldrh r0, [r1, #0x2] - ldr r1, [r1, #0xc] - add r0, r1, r0, lsl #0x3 - sub r0, r0, #0x8 - cmp r2, r0 - bhi _020B0800 - ldr r0, [r4, #0x1c] - cmp r0, #0x1 - bne _020B0780 - ldr r0, [r4, #0x20] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x24] - blx r2 -_020B0780: - ldr r0, [r4, #0x14] - cmp r0, #0x0 - ldreq r0, [r4, #0x18] - ldreq r0, [r0, #0x8] - cmp r0, #0x2 - beq _020B07A8 - cmp r0, #0x4 - movne r0, #0x0 - strne r0, [r4, #0x8] - bne _020B0800 -_020B07A8: - mov r0, r4 - bl FUN_020B0448 - b _020B0800 -_020B07B4: - ldr r0, [r4, #0x1c] - cmp r0, #0x1 - bne _020B07D0 - ldr r0, [r4, #0x20] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x24] - blx r2 -_020B07D0: - ldr r0, [r4, #0x14] - cmp r0, #0x0 - ldreq r0, [r4, #0x18] - ldreq r0, [r0, #0x8] - cmp r0, #0x2 - beq _020B07F8 - cmp r0, #0x4 - movne r0, #0x0 - strne r0, [r4, #0x8] - bne _020B0800 -_020B07F8: - mov r0, r4 - bl FUN_020B0448 -_020B0800: - ldr r1, [r4, #0x18] - ldr r2, [r4, #0x0] - ldrh r0, [r1, #0x0] - ldr r1, [r1, #0xc] - add r0, r1, r0, lsl #0x3 - sub r0, r0, #0x8 - cmp r2, r0 - strhi r0, [r4, #0x0] - ldmhiia sp!, {r4,pc} - cmp r2, r1 - strcc r1, [r4, #0x0] - ldmia sp!, {r4,pc} - arm_func_end FUN_020B0710 - - arm_func_start FUN_020B0830 -FUN_020B0830: ; 0x020B0830 - ldrh r3, [r0, #0x6] - ldrh r2, [r0, #0x8] - mov r12, #0x0 - add r1, r3, #0x1 - cmp r2, r1 - bgt _020B0854 - ldrh r0, [r0, #0x4] - cmp r0, r3 - movls r12, #0x1 -_020B0854: - cmp r12, #0x0 - subne r0, r3, r2 - addne r0, r0, #0x1 - movne r0, r0, lsl #0x10 - movne r0, r0, lsr #0x10 - moveq r0, #0x0 - bx lr - arm_func_end FUN_020B0830 - - arm_func_start FUN_020B0870 -FUN_020B0870: ; 0x020B0870 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B09B4 - mov r0, r4 - bl FUN_020B0888 - ldmia sp!, {r4,pc} - arm_func_end FUN_020B0870 - - arm_func_start FUN_020B0888 -FUN_020B0888: ; 0x020B0888 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r0, [r5, #0x14] - cmp r0, #0x0 - beq _020B0944 - ldrh r2, [r5, #0x6] - ldrh r1, [r5, #0x8] - mov r3, #0x0 - add r0, r2, #0x1 - cmp r1, r0 - bgt _020B08C0 - ldrh r0, [r5, #0x4] - cmp r0, r2 - movls r3, #0x1 -_020B08C0: - cmp r3, #0x0 - moveq r4, #0x0 - beq _020B08E0 - ldrh r0, [r5, #0x4] - sub r0, r2, r0 - add r0, r0, #0x1 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0xd -_020B08E0: - ldr r2, [r5, #0x0] - ldr r1, _020B09AC ; =UNK_021CCDA0 - mov r0, #0x540 - mla r1, r2, r0, r1 - ldrh r0, [r5, #0x4] - add r2, r1, #0x100 - mov r1, r4 - add r6, r2, r0, lsl #0x3 - mov r0, r6 - bl DC_InvalidateRange - ldr r0, _020B09B0 ; =GXi_DmaId - mvn r1, #0x0 - ldr r0, [r0, #0x0] - cmp r0, r1 - beq _020B0930 - mov r1, r6 - mov r3, r4 - mov r2, #0xc0 - bl MI_DmaFill32 - b _020B0998 -_020B0930: - mov r1, r6 - mov r2, r4 - mov r0, #0xc0 - bl MIi_CpuClear32 - b _020B0998 -_020B0944: - ldr r2, [r5, #0x0] - ldr r1, _020B09AC ; =UNK_021CCDA0 - mov r0, #0x540 - mla r1, r2, r0, r1 - ldrh r2, [r5, #0x4] - ldrh r0, [r5, #0x6] - add r1, r1, #0x100 - add r3, r1, r2, lsl #0x3 - sub r0, r0, r2 - add r0, r0, #0x1 - mov r0, r0, lsl #0x10 - movs r2, r0, lsr #0x10 - mov r0, #0x0 - beq _020B0998 - mov r1, #0xc0 -_020B0980: - add r0, r0, #0x1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, r2 - strh r1, [r3], #0x8 - blo _020B0980 -_020B0998: - ldrh r0, [r5, #0x4] - strh r0, [r5, #0x8] - ldrh r0, [r5, #0xa] - strh r0, [r5, #0xe] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B09AC: .word UNK_021CCDA0 -_020B09B0: .word GXi_DmaId - arm_func_end FUN_020B0888 - - arm_func_start FUN_020B09B4 -FUN_020B09B4: ; 0x020B09B4 - stmdb sp!, {r4-r10,lr} - mov r7, r0 - ldr r0, [r7, #0x14] - cmp r0, #0x0 - beq _020B0A48 - ldr r5, [r7, #0x0] - ldr r1, _020B0BA8 ; =UNK_021CCDA0 - mov r0, #0x540 - mla r1, r5, r0, r1 - ldrh r2, [r7, #0x4] - ldrh r0, [r7, #0x6] - add r1, r1, #0x100 - add r4, r1, r2, lsl #0x3 - sub r0, r0, r2 - add r0, r0, #0x1 - mov r0, r0, lsl #0x13 - mov r6, r0, lsr #0x10 - mov r2, r2, lsl #0x13 - mov r0, r4 - mov r1, r6 - mov r7, r2, lsr #0x10 - bl DC_FlushRange - cmp r5, #0x0 - beq _020B0A20 - cmp r5, #0x1 - beq _020B0A34 - ldmia sp!, {r4-r10,pc} -_020B0A20: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl GX_LoadOAM - ldmia sp!, {r4-r10,pc} -_020B0A34: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl GXS_LoadOAM - ldmia sp!, {r4-r10,pc} -_020B0A48: - ldr r0, [r7, #0x0] - ldr r2, _020B0BA8 ; =UNK_021CCDA0 - mov r1, #0x540 - mla r2, r0, r1, r2 - ldrh r5, [r7, #0x4] - ldrh r1, [r7, #0x6] - ldr r3, _020B0BAC ; =UNK_0210655C - add r4, r2, #0x100 - sub r1, r1, r5 - add r1, r1, #0x1 - mov r1, r1, lsl #0x10 - mov r2, r5, lsl #0x13 - add r6, r4, r5, lsl #0x3 - movs r5, r1, lsr #0x10 - mov r4, r2, lsr #0x10 - ldr r9, [r3, r0, lsl #0x2] - mov r10, #0x0 - beq _020B0AC8 - mov r8, #0x6 -_020B0A94: - mov r0, r6 - mov r1, r4 - mov r2, r8 - blx r9 - add r0, r10, #0x1 - add r2, r4, #0x8 - mov r1, r0, lsl #0x10 - mov r0, r2, lsl #0x10 - mov r10, r1, lsr #0x10 - cmp r10, r5 - mov r4, r0, lsr #0x10 - add r6, r6, #0x8 - blo _020B0A94 -_020B0AC8: - ldrh r2, [r7, #0xc] - ldrh r1, [r7, #0xe] - mov r3, #0x0 - add r0, r2, #0x1 - cmp r1, r0 - bgt _020B0AEC - ldrh r0, [r7, #0xa] - cmp r0, r2 - movls r3, #0x1 -_020B0AEC: - cmp r3, #0x0 - ldmeqia sp!, {r4-r10,pc} - ldr r0, [r7, #0x0] - ldr r2, _020B0BA8 ; =UNK_021CCDA0 - mov r1, #0x540 - mla r2, r0, r1, r2 - ldrh r5, [r7, #0xa] - add r4, r2, #0x100 - ldrh r1, [r7, #0xc] - mov r2, r5, lsl #0x15 - ldr r3, _020B0BAC ; =UNK_0210655C - sub r1, r1, r5 - add r1, r1, #0x1 - mov r1, r1, lsl #0x10 - add r9, r4, r5, lsl #0x5 - ldr r5, [r3, r0, lsl #0x2] - movs r8, r1, lsr #0x10 - mov r7, r2, lsr #0x10 - mov r6, #0x0 - ldmeqia sp!, {r4-r10,pc} - mov r4, #0x2 -_020B0B40: - mov r2, r4 - add r0, r9, #0x6 - add r1, r7, #0x6 - blx r5 - mov r2, r4 - add r0, r9, #0xe - add r1, r7, #0xe - blx r5 - mov r2, r4 - add r0, r9, #0x16 - add r1, r7, #0x16 - blx r5 - add r0, r9, #0x1e - add r1, r7, #0x1e - mov r2, r4 - blx r5 - add r0, r7, #0x20 - mov r0, r0, lsl #0x10 - mov r7, r0, lsr #0x10 - add r9, r9, #0x20 - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, r8 - blo _020B0B40 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B0BA8: .word UNK_021CCDA0 -_020B0BAC: .word UNK_0210655C - arm_func_end FUN_020B09B4 - - arm_func_start FUN_020B0BB0 -FUN_020B0BB0: ; 0x020B0BB0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r12, [r0, #0xc] - ldrh r3, [r0, #0xe] - mov lr, #0x0 - add r2, r12, #0x1 - cmp r3, r2 - bgt _020B0BDC - ldrh r2, [r0, #0xa] - cmp r2, r12 - movls lr, #0x1 -_020B0BDC: - cmp lr, #0x0 - subne r2, r12, r3 - addne r2, r2, #0x1 - movne r2, r2, lsl #0x10 - movne r2, r2, lsr #0x10 - moveq r2, #0x0 - cmp r2, #0x1 - movcs r2, #0x1 - movcc r2, #0x0 - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldreq r0, _020B0C74 ; =0x0000FFFE - ldmeqia sp!, {pc} - ldr lr, [r0, #0x0] - ldr r3, _020B0C78 ; =UNK_021CCDA0 - mov r2, #0x540 - mla r12, lr, r2, r3 - ldr r3, [r1, #0x0] - ldrh r2, [r0, #0xe] - add r12, r12, #0x100 - mov r3, r3, asr #0x4 - add r12, r12, r2, lsl #0x5 - strh r3, [r12, #0x6] - ldr r3, [r1, #0x4] - mov r3, r3, asr #0x4 - strh r3, [r12, #0xe] - ldr r3, [r1, #0x8] - mov r3, r3, asr #0x4 - strh r3, [r12, #0x16] - ldr r1, [r1, #0xc] - mov r1, r1, asr #0x4 - strh r1, [r12, #0x1e] - ldrh r1, [r0, #0xe] - add r1, r1, #0x1 - strh r1, [r0, #0xe] - mov r0, r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B0C74: .word 0x0000FFFE -_020B0C78: .word UNK_021CCDA0 - arm_func_end FUN_020B0BB0 - - arm_func_start FUN_020B0C7C -FUN_020B0C7C: ; 0x020B0C7C - stmdb sp!, {r4,lr} - ldrh r12, [r0, #0x6] - ldrh r4, [r0, #0x8] - mov lr, #0x0 - add r3, r12, #0x1 - cmp r4, r3 - bgt _020B0CA4 - ldrh r3, [r0, #0x4] - cmp r3, r12 - movls lr, #0x1 -_020B0CA4: - cmp lr, #0x0 - subne r3, r12, r4 - addne r3, r3, #0x1 - movne r3, r3, lsl #0x10 - movne r3, r3, lsr #0x10 - moveq r3, #0x0 - cmp r3, #0x1 - movcs r3, #0x1 - movcc r3, #0x0 - cmp r3, #0x0 - beq _020B0D48 - ldr r4, [r0, #0x0] - ldr ip, _020B0D50 ; =UNK_021CCDA0 - mov r3, #0x540 - mla r12, r4, r3, r12 - ldrh r3, [r0, #0x8] - add r4, r12, #0x100 - ldrh r12, [r1, #0x0] - mov lr, r3, lsl #0x3 - add r3, r4, r3, lsl #0x3 - strh r12, [r4, lr] - ldrh lr, [r1, #0x2] - ldr ip, _020B0D54 ; =0x0000FFFE - strh lr, [r3, #0x2] - ldrh r1, [r1, #0x4] - cmp r2, r12 - strh r1, [r3, #0x4] - beq _020B0D34 - ldr r1, [r3, #0x0] - mov r12, r1, lsl #0x16 - mov r12, r12, lsr #0x1e - ands r12, r12, #0x1 - bicne r12, r1, #0x3e000000 - andne r1, r2, #0x1f - orrne r1, r12, r1, lsl #0x19 - strne r1, [r3, #0x0] -_020B0D34: - ldrh r1, [r0, #0x8] - add r1, r1, #0x1 - strh r1, [r0, #0x8] - mov r0, #0x1 - ldmia sp!, {r4,pc} -_020B0D48: - mov r0, #0x0 - ldmia sp!, {r4,pc} - .balign 4 -_020B0D50: .word UNK_021CCDA0 -_020B0D54: .word 0x0000FFFE - arm_func_end FUN_020B0C7C - - arm_func_start FUN_020B0D58 -FUN_020B0D58: ; 0x020B0D58 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldrh lr, [r0, #0x6] - ldrh r12, [r0, #0x8] - mov r4, #0x0 - add r3, lr, #0x1 - cmp r12, r3 - bgt _020B0D84 - ldrh r3, [r0, #0x4] - cmp r3, lr - movls r4, #0x1 -_020B0D84: - cmp r4, #0x0 - subne r3, lr, r12 - addne r3, r3, #0x1 - movne r3, r3, lsl #0x10 - movne r3, r3, lsr #0x10 - moveq r3, #0x0 - cmp r3, r2 - movcs r3, #0x1 - movcc r3, #0x0 - cmp r3, #0x0 - beq _020B0E24 - ldr lr, [r0, #0x0] - ldr ip, _020B0E30 ; =UNK_021CCDA0 - mov r3, #0x540 - mla r12, lr, r3, r12 - ldrh r3, [r0, #0x8] - add r12, r12, #0x100 - cmp r2, #0x0 - add r4, r12, r3, lsl #0x3 - mov r5, #0x0 - ble _020B0E18 - add r3, r0, #0x8 -_020B0DDC: - ldrh lr, [r1, #0x0] - mov r0, r5, lsl #0x3 - add r12, r4, r5, lsl #0x3 - strh lr, [r4, r0] - ldrh r0, [r1, #0x2] - add r5, r5, #0x1 - cmp r5, r2 - strh r0, [r12, #0x2] - ldrh r0, [r1, #0x4] - add r1, r1, #0x8 - strh r0, [r12, #0x4] - ldrh r0, [r3, #0x0] - add r0, r0, #0x1 - strh r0, [r3, #0x0] - blt _020B0DDC -_020B0E18: - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r5,pc} -_020B0E24: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B0E30: .word UNK_021CCDA0 - arm_func_end FUN_020B0D58 - - arm_func_start FUN_020B0E34 -FUN_020B0E34: ; 0x020B0E34 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr r5, [sp, #0x1c] - ldr r6, _020B0FB4 ; =UNK_021CCDA0 - mov r4, #0x540 - mla r4, r5, r4, r6 - mov lr, r1 - sub r1, r2, #0x1 - add r1, lr, r1 - mov r1, r1, lsl #0x10 - mov r12, r1, lsr #0x10 - add r7, r4, lr, lsl #0x1 - add r2, r4, r12, lsl #0x1 - mov r6, r0 - mov r5, r3 - cmp r7, r2 - mov r3, lr, lsl #0x1 - bhi _020B0E9C - ldr r0, _020B0FB8 ; =0x0000FFFF -_020B0E80: - ldrh r1, [r7, #0x0] - cmp r1, r0 - movne r0, #0x0 - bne _020B0EA0 - add r7, r7, #0x2 - cmp r7, r2 - bls _020B0E80 -_020B0E9C: - mov r0, #0x1 -_020B0EA0: - cmp r0, #0x0 - beq _020B0EE0 - ldr r0, _020B0FBC ; =UNK_021CCD9C - sub r2, r12, lr - ldrh r7, [r0, #0x0] - add r1, r4, r3 - mov r2, r2, lsl #0x1 - add r3, r7, #0x1 - strh r3, [r0, #0x0] - strh r7, [r6, #0x10] - strh lr, [r6, #0x4] - strh r12, [r6, #0x6] - strh lr, [r6, #0x8] - ldrh r0, [r6, #0x10] - bl MIi_CpuClear16 - b _020B0EEC -_020B0EE0: - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r7,pc} -_020B0EEC: - ldrh r0, [sp, #0x18] - add r4, r4, #0x500 - cmp r0, #0x0 - bne _020B0F18 - mov r0, #0x20 - strh r0, [r6, #0xa] - mov r0, #0x0 - strh r0, [r6, #0xc] - ldrh r0, [r6, #0xa] - strh r0, [r6, #0xe] - b _020B0F98 -_020B0F18: - sub r0, r0, #0x1 - add r0, r5, r0 - mov r0, r0, lsl #0x10 - mov r12, r0, lsr #0x10 - add r7, r4, r5, lsl #0x1 - add r2, r4, r12, lsl #0x1 - cmp r7, r2 - mov r3, r5, lsl #0x1 - bhi _020B0F5C - ldr r0, _020B0FB8 ; =0x0000FFFF -_020B0F40: - ldrh r1, [r7, #0x0] - cmp r1, r0 - movne r0, #0x0 - bne _020B0F60 - add r7, r7, #0x2 - cmp r7, r2 - bls _020B0F40 -_020B0F5C: - mov r0, #0x1 -_020B0F60: - cmp r0, #0x0 - beq _020B0F8C - strh r5, [r6, #0xa] - strh r12, [r6, #0xc] - strh r5, [r6, #0xe] - ldrh r0, [r6, #0x10] - sub r2, r12, r5 - add r1, r4, r3 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - b _020B0F98 -_020B0F8C: - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r7,pc} -_020B0F98: - mov r1, #0x0 - ldr r0, [sp, #0x1c] - str r1, [r6, #0x14] - str r0, [r6, #0x0] - mov r0, #0x1 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B0FB4: .word UNK_021CCDA0 -_020B0FB8: .word 0x0000FFFF -_020B0FBC: .word UNK_021CCD9C - arm_func_end FUN_020B0E34 - - arm_func_start FUN_020B0FC0 -FUN_020B0FC0: ; 0x020B0FC0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020B1060 ; =UNK_021CCEA0 - mov r0, #0xc0 - mov r2, #0x400 - bl MIi_CpuClear16 - ldr r1, _020B1064 ; =UNK_021CD3E0 - mov r0, #0xc0 - mov r2, #0x400 - bl MIi_CpuClear16 - ldr r1, _020B1068 ; =UNK_021CD920 - mov r0, #0xc0 - mov r2, #0x400 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1070 ; =UNK_021CCDA0 - mov r2, #0x100 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1074 ; =UNK_021CD2E0 - mov r2, #0x100 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1078 ; =UNK_021CD820 - mov r2, #0x100 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B107C ; =UNK_021CD2A0 - mov r2, #0x40 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1080 ; =UNK_021CD7E0 - mov r2, #0x40 - bl MIi_CpuClear16 - ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1084 ; =UNK_021CDD20 - mov r2, #0x40 - bl MIi_CpuClear16 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B1060: .word UNK_021CCEA0 -_020B1064: .word UNK_021CD3E0 -_020B1068: .word UNK_021CD920 -_020B106C: .word 0x0000FFFF -_020B1070: .word UNK_021CCDA0 -_020B1074: .word UNK_021CD2E0 -_020B1078: .word UNK_021CD820 -_020B107C: .word UNK_021CD2A0 -_020B1080: .word UNK_021CD7E0 -_020B1084: .word UNK_021CDD20 - arm_func_end FUN_020B0FC0 - - arm_func_start FUN_020B1088 -FUN_020B1088: ; 0x020B1088 - ldr ip, _020B1094 ; =MIi_CpuCopy16 - add r1, r1, #0x7000000 - bx r12 - .balign 4 -_020B1094: .word MIi_CpuCopy16 - arm_func_end FUN_020B1088 - - arm_func_start FUN_020B1098 -FUN_020B1098: ; 0x020B1098 - ldr r3, _020B10A8 ; =0x07000400 - ldr ip, _020B10AC ; =MIi_CpuCopy16 - add r1, r1, r3 - bx r12 - .balign 4 -_020B10A8: .word 0x07000400 -_020B10AC: .word MIi_CpuCopy16 - arm_func_end FUN_020B1098 - - arm_func_start FUN_020B10B0 -FUN_020B10B0: ; 0x020B10B0 - mov r1, r1, lsl #0x1 - ldrh r0, [r0, r1] - bx lr - arm_func_end FUN_020B10B0 - - arm_func_start FUN_020B10BC -FUN_020B10BC: ; 0x020B10BC - ldr r0, [r0, r1, lsl #0x2] - bx lr - arm_func_end FUN_020B10BC - - arm_func_start FUN_020B10C4 -FUN_020B10C4: ; 0x020B10C4 - str r2, [r0, r1, lsl #0x2] - bx lr - arm_func_end FUN_020B10C4 - - arm_func_start FUN_020B10CC -FUN_020B10CC: ; 0x020B10CC - mov r2, #0x0 - mvn r1, #0x0 -_020B10D4: - str r1, [r0, r2, lsl #0x2] - add r2, r2, #0x1 - cmp r2, #0x3 - blt _020B10D4 - bx lr - arm_func_end FUN_020B10CC - - arm_func_start FUN_020B10E8 -FUN_020B10E8: ; 0x020B10E8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r10, r0 - ldr r0, [r10, #0x0] - mov r9, r1 - cmp r0, #0x3 - ldr r0, [sp, #0x28] - moveq r7, #0x20 - str r0, [sp, #0x28] - ldrh r0, [r9, #0x0] - movne r7, #0x200 - mov r11, r2 - mov r8, r3 - str r0, [sp, #0x0] - mov r6, #0x0 - cmp r0, #0x0 - bls _020B1210 -_020B112C: - ldr r1, [r9, #0x4] - mov r0, r6, lsl #0x1 - ldrh r2, [r1, r0] - ldr r0, [r10, #0xc] - ldr r1, [r10, #0x8] - mla r5, r7, r2, r11 - mla r4, r7, r6, r0 - bl DC_FlushRange - cmp r8, #0x0 - beq _020B11E0 - cmp r8, #0x1 - beq _020B1168 - cmp r8, #0x2 - beq _020B11A4 - b _020B11F8 -_020B1168: - ldr r0, [r10, #0x4] - cmp r0, #0x0 - beq _020B1190 - bl GX_BeginLoadOBJExtPltt - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GX_LoadOBJExtPltt - bl GX_EndLoadOBJExtPltt - b _020B11F8 -_020B1190: - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GX_LoadOBJPltt - b _020B11F8 -_020B11A4: - ldr r0, [r10, #0x4] - cmp r0, #0x0 - beq _020B11CC - bl GXS_BeginLoadOBJExtPltt - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GXS_LoadOBJExtPltt - bl GXS_EndLoadOBJExtPltt - b _020B11F8 -_020B11CC: - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GXS_LoadOBJPltt - b _020B11F8 -_020B11E0: - bl GX_BeginLoadTexPltt - mov r0, r4 - mov r1, r5 - mov r2, r7 - bl GX_LoadTexPltt - bl GX_EndLoadTexPltt -_020B11F8: - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - ldr r0, [sp, #0x0] - cmp r6, r0 - blo _020B112C -_020B1210: - ldr r0, [sp, #0x28] - ldr r2, [r10, #0x0] - mov r1, r0 - str r2, [r1, #0x0] - ldr r4, [r10, #0x4] - mov r3, r0 - mov r1, r8 - mov r2, r11 - str r4, [r3, #0x4] - bl FUN_020B19D0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B10E8 - - arm_func_start FUN_020B1240 -FUN_020B1240: ; 0x020B1240 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r9, r0 - ldr r5, [r9, #0xc] - ldr r4, [r9, #0x8] - mov r8, r1 - mov r7, r2 - mov r0, r5 - mov r1, r4 - mov r6, r3 - bl DC_FlushRange - cmp r7, #0x0 - beq _020B1300 - cmp r7, #0x1 - beq _020B1288 - cmp r7, #0x2 - beq _020B12C4 - b _020B1318 -_020B1288: - ldr r0, [r9, #0x4] - cmp r0, #0x0 - beq _020B12B0 - bl GX_BeginLoadOBJExtPltt - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GX_LoadOBJExtPltt - bl GX_EndLoadOBJExtPltt - b _020B1318 -_020B12B0: - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GX_LoadOBJPltt - b _020B1318 -_020B12C4: - ldr r0, [r9, #0x4] - cmp r0, #0x0 - beq _020B12EC - bl GXS_BeginLoadOBJExtPltt - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GXS_LoadOBJExtPltt - bl GXS_EndLoadOBJExtPltt - b _020B1318 -_020B12EC: - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GXS_LoadOBJPltt - b _020B1318 -_020B1300: - bl GX_BeginLoadTexPltt - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl GX_LoadTexPltt - bl GX_EndLoadTexPltt -_020B1318: - ldr r1, [r9, #0x0] - mov r0, r6 - str r1, [r6, #0x0] - ldr r3, [r9, #0x4] - mov r1, r7 - mov r2, r8 - str r3, [r6, #0x4] - bl FUN_020B19D0 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - arm_func_end FUN_020B1240 - - arm_func_start FUN_020B1340 -FUN_020B1340: ; 0x020B1340 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - ldr r0, [r7, #0x14] - ldr r1, [r7, #0x10] - mov r5, r2 - mov r4, r3 - bl DC_FlushRange - cmp r5, #0x0 - ldr r0, [r7, #0x8] - beq _020B13B8 - cmp r5, #0x1 - beq _020B1384 - cmp r5, #0x2 - beq _020B13A0 - b _020B13B8 -_020B1384: - mov r3, #0x4000000 - ldr r2, [r3, #0x0] - ldr r1, _020B1520 ; =0xFFCFFFEF - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] - b _020B13B8 -_020B13A0: - ldr r3, _020B1524 ; =0x04001000 - ldr r1, _020B1520 ; =0xFFCFFFEF - ldr r2, [r3, #0x0] - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] -_020B13B8: - ldr r0, [r7, #0x8] - cmp r0, #0x0 - bne _020B14D8 - ldrh r0, [r7, #0x2] - cmp r0, #0x10 - bgt _020B1408 - cmp r0, #0x10 - bge _020B1434 - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B1444 - ; Jump table - b _020B1444 ; case 0 - b _020B1414 ; case 1 - b _020B141C ; case 2 - b _020B1444 ; case 3 - b _020B1424 ; case 4 - b _020B1444 ; case 5 - b _020B1444 ; case 6 - b _020B1444 ; case 7 - b _020B142C ; case 8 -_020B1408: - cmp r0, #0x20 - beq _020B143C - b _020B1444 -_020B1414: - mov r0, #0x0 - b _020B1448 -_020B141C: - mov r0, #0x1 - b _020B1448 -_020B1424: - mov r0, #0x2 - b _020B1448 -_020B142C: - mov r0, #0x3 - b _020B1448 -_020B1434: - mov r0, #0x4 - b _020B1448 -_020B143C: - mov r0, #0x5 - b _020B1448 -_020B1444: - mov r0, #0x0 -_020B1448: - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - cmp r0, #0x10 - bgt _020B1490 - cmp r0, #0x10 - bge _020B14BC - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B14CC - ; Jump table - b _020B14CC ; case 0 - b _020B149C ; case 1 - b _020B14A4 ; case 2 - b _020B14CC ; case 3 - b _020B14AC ; case 4 - b _020B14CC ; case 5 - b _020B14CC ; case 6 - b _020B14CC ; case 7 - b _020B14B4 ; case 8 -_020B1490: - cmp r0, #0x20 - beq _020B14C4 - b _020B14CC -_020B149C: - mov r0, #0x0 - b _020B14D0 -_020B14A4: - mov r0, #0x1 - b _020B14D0 -_020B14AC: - mov r0, #0x2 - b _020B14D0 -_020B14B4: - mov r0, #0x3 - b _020B14D0 -_020B14BC: - mov r0, #0x4 - b _020B14D0 -_020B14C4: - mov r0, #0x5 - b _020B14D0 -_020B14CC: - mov r0, #0x0 -_020B14D0: - str r0, [r4, #0x10] - b _020B14E8 -_020B14D8: - ldrh r0, [r7, #0x2] - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - str r0, [r4, #0x10] -_020B14E8: - ldr r1, [r7, #0x4] - mov r0, #0x0 - str r1, [r4, #0x14] - str r0, [r4, #0x18] - mov r0, #0x1 - str r0, [r4, #0x1c] - ldr r3, [r7, #0x8] - mov r0, r4 - mov r1, r5 - mov r2, r6 - str r3, [r4, #0x20] - bl FUN_020B1A1C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B1520: .word 0xFFCFFFEF -_020B1524: .word 0x04001000 - arm_func_end FUN_020B1340 - - arm_func_start FUN_020B1528 -FUN_020B1528: ; 0x020B1528 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - movs r5, r2 - mov r6, r1 - mov r4, r3 - ldr r0, [r7, #0x8] - beq _020B1590 - cmp r5, #0x1 - beq _020B155C - cmp r5, #0x2 - beq _020B1578 - b _020B1590 -_020B155C: - mov r3, #0x4000000 - ldr r2, [r3, #0x0] - ldr r1, _020B1760 ; =0xFFCFFFEF - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] - b _020B1590 -_020B1578: - ldr r3, _020B1764 ; =0x04001000 - ldr r1, _020B1760 ; =0xFFCFFFEF - ldr r2, [r3, #0x0] - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] -_020B1590: - ldr r0, [r7, #0x14] - ldr r1, [r7, #0x10] - bl DC_FlushRange - cmp r5, #0x0 - beq _020B15B8 - cmp r5, #0x1 - beq _020B15D4 - cmp r5, #0x2 - beq _020B15E8 - b _020B15F8 -_020B15B8: - bl GX_BeginLoadTex - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadTex - bl GX_EndLoadTex - b _020B15F8 -_020B15D4: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadOBJ - b _020B15F8 -_020B15E8: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GXS_LoadOBJ -_020B15F8: - ldr r0, [r7, #0x8] - cmp r0, #0x0 - bne _020B1718 - ldrh r0, [r7, #0x2] - cmp r0, #0x10 - bgt _020B1648 - cmp r0, #0x10 - bge _020B1674 - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B1684 - ; Jump table - b _020B1684 ; case 0 - b _020B1654 ; case 1 - b _020B165C ; case 2 - b _020B1684 ; case 3 - b _020B1664 ; case 4 - b _020B1684 ; case 5 - b _020B1684 ; case 6 - b _020B1684 ; case 7 - b _020B166C ; case 8 -_020B1648: - cmp r0, #0x20 - beq _020B167C - b _020B1684 -_020B1654: - mov r0, #0x0 - b _020B1688 -_020B165C: - mov r0, #0x1 - b _020B1688 -_020B1664: - mov r0, #0x2 - b _020B1688 -_020B166C: - mov r0, #0x3 - b _020B1688 -_020B1674: - mov r0, #0x4 - b _020B1688 -_020B167C: - mov r0, #0x5 - b _020B1688 -_020B1684: - mov r0, #0x0 -_020B1688: - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - cmp r0, #0x10 - bgt _020B16D0 - cmp r0, #0x10 - bge _020B16FC - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B170C - ; Jump table - b _020B170C ; case 0 - b _020B16DC ; case 1 - b _020B16E4 ; case 2 - b _020B170C ; case 3 - b _020B16EC ; case 4 - b _020B170C ; case 5 - b _020B170C ; case 6 - b _020B170C ; case 7 - b _020B16F4 ; case 8 -_020B16D0: - cmp r0, #0x20 - beq _020B1704 - b _020B170C -_020B16DC: - mov r0, #0x0 - b _020B1710 -_020B16E4: - mov r0, #0x1 - b _020B1710 -_020B16EC: - mov r0, #0x2 - b _020B1710 -_020B16F4: - mov r0, #0x3 - b _020B1710 -_020B16FC: - mov r0, #0x4 - b _020B1710 -_020B1704: - mov r0, #0x5 - b _020B1710 -_020B170C: - mov r0, #0x0 -_020B1710: - str r0, [r4, #0x10] - b _020B1728 -_020B1718: - ldrh r0, [r7, #0x2] - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - str r0, [r4, #0x10] -_020B1728: - ldr r1, [r7, #0x4] - mov r0, #0x0 - str r1, [r4, #0x14] - str r0, [r4, #0x18] - mov r0, #0x1 - str r0, [r4, #0x1c] - ldr r3, [r7, #0x8] - mov r0, r4 - mov r1, r5 - mov r2, r6 - str r3, [r4, #0x20] - bl FUN_020B1A1C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B1760: .word 0xFFCFFFEF -_020B1764: .word 0x04001000 - arm_func_end FUN_020B1528 - - arm_func_start FUN_020B1768 -FUN_020B1768: ; 0x020B1768 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - movs r5, r2 - mov r6, r1 - mov r4, r3 - ldr r0, [r7, #0x8] - beq _020B17D0 - cmp r5, #0x1 - beq _020B179C - cmp r5, #0x2 - beq _020B17B8 - b _020B17D0 -_020B179C: - mov r3, #0x4000000 - ldr r2, [r3, #0x0] - ldr r1, _020B19A0 ; =0xFFCFFFEF - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] - b _020B17D0 -_020B17B8: - ldr r3, _020B19A4 ; =0x04001000 - ldr r1, _020B19A0 ; =0xFFCFFFEF - ldr r2, [r3, #0x0] - and r1, r2, r1 - orr r0, r1, r0 - str r0, [r3, #0x0] -_020B17D0: - ldr r0, [r7, #0x14] - ldr r1, [r7, #0x10] - bl DC_FlushRange - cmp r5, #0x0 - beq _020B17F8 - cmp r5, #0x1 - beq _020B1814 - cmp r5, #0x2 - beq _020B1828 - b _020B1838 -_020B17F8: - bl GX_BeginLoadTex - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadTex - bl GX_EndLoadTex - b _020B1838 -_020B1814: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GX_LoadOBJ - b _020B1838 -_020B1828: - ldr r0, [r7, #0x14] - ldr r2, [r7, #0x10] - mov r1, r6 - bl GXS_LoadOBJ -_020B1838: - ldr r0, [r7, #0x8] - cmp r0, #0x0 - bne _020B1958 - ldrh r0, [r7, #0x2] - cmp r0, #0x10 - bgt _020B1888 - cmp r0, #0x10 - bge _020B18B4 - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B18C4 - ; Jump table - b _020B18C4 ; case 0 - b _020B1894 ; case 1 - b _020B189C ; case 2 - b _020B18C4 ; case 3 - b _020B18A4 ; case 4 - b _020B18C4 ; case 5 - b _020B18C4 ; case 6 - b _020B18C4 ; case 7 - b _020B18AC ; case 8 -_020B1888: - cmp r0, #0x20 - beq _020B18BC - b _020B18C4 -_020B1894: - mov r0, #0x0 - b _020B18C8 -_020B189C: - mov r0, #0x1 - b _020B18C8 -_020B18A4: - mov r0, #0x2 - b _020B18C8 -_020B18AC: - mov r0, #0x3 - b _020B18C8 -_020B18B4: - mov r0, #0x4 - b _020B18C8 -_020B18BC: - mov r0, #0x5 - b _020B18C8 -_020B18C4: - mov r0, #0x0 -_020B18C8: - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - cmp r0, #0x10 - bgt _020B1910 - cmp r0, #0x10 - bge _020B193C - cmp r0, #0x8 - addls pc, pc, r0, lsl #0x2 - b _020B194C - ; Jump table - b _020B194C ; case 0 - b _020B191C ; case 1 - b _020B1924 ; case 2 - b _020B194C ; case 3 - b _020B192C ; case 4 - b _020B194C ; case 5 - b _020B194C ; case 6 - b _020B194C ; case 7 - b _020B1934 ; case 8 -_020B1910: - cmp r0, #0x20 - beq _020B1944 - b _020B194C -_020B191C: - mov r0, #0x0 - b _020B1950 -_020B1924: - mov r0, #0x1 - b _020B1950 -_020B192C: - mov r0, #0x2 - b _020B1950 -_020B1934: - mov r0, #0x3 - b _020B1950 -_020B193C: - mov r0, #0x4 - b _020B1950 -_020B1944: - mov r0, #0x5 - b _020B1950 -_020B194C: - mov r0, #0x0 -_020B1950: - str r0, [r4, #0x10] - b _020B1968 -_020B1958: - ldrh r0, [r7, #0x2] - str r0, [r4, #0xc] - ldrh r0, [r7, #0x0] - str r0, [r4, #0x10] -_020B1968: - ldr r1, [r7, #0x4] - mov r0, #0x0 - str r1, [r4, #0x14] - str r0, [r4, #0x18] - mov r0, #0x1 - str r0, [r4, #0x1c] - ldr r3, [r7, #0x8] - mov r0, r4 - mov r1, r5 - mov r2, r6 - str r3, [r4, #0x20] - bl FUN_020B1A1C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B19A0: .word 0xFFCFFFEF -_020B19A4: .word 0x04001000 - arm_func_end FUN_020B1768 - - arm_func_start FUN_020B19A8 -FUN_020B19A8: ; 0x020B19A8 - add r0, r0, r1, lsl #0x2 - ldr r1, [r0, #0x8] - mvn r0, #0x0 - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - arm_func_end FUN_020B19A8 - - arm_func_start FUN_020B19C4 -FUN_020B19C4: ; 0x020B19C4 - add r0, r0, r1, lsl #0x2 - ldr r0, [r0, #0x8] - bx lr - arm_func_end FUN_020B19C4 - - arm_func_start FUN_020B19D0 -FUN_020B19D0: ; 0x020B19D0 - add r0, r0, r1, lsl #0x2 - str r2, [r0, #0x8] - bx lr - arm_func_end FUN_020B19D0 - - arm_func_start FUN_020B19DC -FUN_020B19DC: ; 0x020B19DC - mov r3, #0x0 - mvn r2, #0x0 -_020B19E4: - add r1, r0, r3, lsl #0x2 - add r3, r3, #0x1 - str r2, [r1, #0x8] - cmp r3, #0x3 - blt _020B19E4 - bx lr - arm_func_end FUN_020B19DC - - arm_func_start FUN_020B19FC -FUN_020B19FC: ; 0x020B19FC - ldr r1, [r0, r1, lsl #0x2] - mvn r0, #0x0 - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - arm_func_end FUN_020B19FC - - arm_func_start FUN_020B1A14 -FUN_020B1A14: ; 0x020B1A14 - ldr r0, [r0, r1, lsl #0x2] - bx lr - arm_func_end FUN_020B1A14 - - arm_func_start FUN_020B1A1C -FUN_020B1A1C: ; 0x020B1A1C - str r2, [r0, r1, lsl #0x2] - bx lr - arm_func_end FUN_020B1A1C - - arm_func_start FUN_020B1A24 -FUN_020B1A24: ; 0x020B1A24 - mov r2, #0x0 - mvn r1, #0x0 -_020B1A2C: - str r1, [r0, r2, lsl #0x2] - add r2, r2, #0x1 - cmp r2, #0x3 - blt _020B1A2C - bx lr - arm_func_end FUN_020B1A24 - - arm_func_start FUN_020B1A40 -FUN_020B1A40: ; 0x020B1A40 - stmdb sp!, {r4,lr} - mov r4, r0 - add r1, r4, #0x4 - mov r0, #0x0 - mov r2, #0x18 - bl MIi_CpuClear16 - mov r0, #0x1000 - str r0, [r4, #0x4] - str r0, [r4, #0x8] - ldmia sp!, {r4,pc} - arm_func_end FUN_020B1A40 - - arm_func_start FUN_020B1A68 -FUN_020B1A68: ; 0x020B1A68 - ldr ip, _020B1A74 ; =FUN_020B1A40 - str r1, [r0, #0x0] - bx r12 - .balign 4 -_020B1A74: .word FUN_020B1A40 - arm_func_end FUN_020B1A68 - - arm_func_start FUN_020B1A78 -FUN_020B1A78: ; 0x020B1A78 - ldr r3, [r0, #0x0] - cmp r3, #0x1 - ldreqh r3, [r0, #0x12] - orreq r3, r3, #0x2 - streqh r3, [r0, #0x12] - streq r1, [r0, #0x4] - streq r2, [r0, #0x8] - bx lr - arm_func_end FUN_020B1A78 - - arm_func_start FUN_020B1A98 -FUN_020B1A98: ; 0x020B1A98 - ldr r2, [r0, #0x0] - cmp r2, #0x1 - ldreqh r2, [r0, #0x12] - orreq r2, r2, #0x4 - streqh r2, [r0, #0x12] - streqh r1, [r0, #0x10] - bx lr - arm_func_end FUN_020B1A98 - - arm_func_start FUN_020B1AB4 -FUN_020B1AB4: ; 0x020B1AB4 - ldr r3, [r0, #0x0] - cmp r3, #0x1 - ldreqh r3, [r0, #0x12] - orreq r3, r3, #0x8 - streqh r3, [r0, #0x12] - streqh r1, [r0, #0xc] - streqh r2, [r0, #0xe] - bx lr - arm_func_end FUN_020B1AB4 - - arm_func_start FUN_020B1AD4 -FUN_020B1AD4: ; 0x020B1AD4 - mov r2, #0x0 - str r2, [r0, #0x0] - str r1, [r0, #0x4] - mov r1, #0x1 - str r1, [r0, #0x8] - ldr ip, _020B1AF4 ; =FUN_020B1A68 - add r0, r0, #0xc - bx r12 - .balign 4 -_020B1AF4: .word FUN_020B1A68 - arm_func_end FUN_020B1AD4 - - arm_func_start FUN_020B1AF8 -FUN_020B1AF8: ; 0x020B1AF8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x34 - ldrh r5, [r2, #0x0] - ldr r4, [sp, #0x60] - ldr r10, [sp, #0x58] - str r4, [sp, #0x60] - cmp r1, r5 - movcs r1, r5 - mov r4, #0x0 - cmp r1, #0x0 - str r4, [sp, #0x0] - bls _020B1E7C - ldrh r4, [sp, #0x5c] - mov r4, r4, lsl #0x19 - str r4, [sp, #0x4] - ldr r4, [sp, #0x0] - str r4, [sp, #0x14] - mov r4, #0x100 - str r4, [sp, #0xc] - mov r4, #0x300 - str r4, [sp, #0x8] - mov r4, #0x1 - str r4, [sp, #0x10] -_020B1B54: - ldr r5, [sp, #0x0] - mov r6, #0x6 - mul r6, r5, r6 - ldr r8, [r2, #0x4] - ldr r4, [sp, #0x0] - add r7, r0, r5, lsl #0x3 - ldrh r5, [r8, r6] - mov r4, r4, lsl #0x3 - add r9, r8, r6 - strh r5, [r0, r4] - ldrh r4, [r9, #0x2] - cmp r3, #0x0 - strh r4, [r7, #0x2] - ldrh r4, [r9, #0x4] - strh r4, [r7, #0x4] - bne _020B1B9C - cmp r10, #0x0 - beq _020B1E60 -_020B1B9C: - ldr r5, [r7, #0x0] - ldr r4, _020B1E88 ; =0x01FF0000 - and r4, r5, r4 - mov r4, r4, lsr #0x10 - mov r4, r4, lsl #0x10 - mov r4, r4, asr #0x10 - cmp r4, #0xff - orrgt r4, r4, #0xff00 - movgt r4, r4, lsl #0x10 - movgt r4, r4, asr #0x10 - mov r4, r4, lsl #0xc - str r4, [sp, #0x20] - ldr r4, [r7, #0x0] - and r4, r4, #0xff - mov r4, r4, lsl #0x10 - mov r4, r4, asr #0x10 - cmp r4, #0x7f - orrgt r4, r4, #0xff00 - movgt r4, r4, lsl #0x10 - movgt r4, r4, asr #0x10 - mov r4, r4, lsl #0xc - str r4, [sp, #0x24] - cmp r3, #0x0 - beq _020B1E00 - ldr r5, [r7, #0x0] - and r6, r5, #0x300 - cmp r6, #0x100 - beq _020B1C1C - cmp r6, #0x300 - beq _020B1C1C - and r4, r5, #0x30000000 - orr r6, r6, r4 -_020B1C1C: - cmp r6, #0x300 - bne _020B1C70 - ldr r4, _020B1E8C ; =0xC000C000 - ldr r8, _020B1E90 ; =UNK_020FF8AC - and r5, r5, r4 - and r4, r5, #0xc000 - mov r6, r4, asr #0xe - and r4, r5, #0xc0000000 - mov r4, r4, lsr #0x1e - mov r4, r4, lsl #0x1 - add r8, r8, r6, lsl #0x3 - ldrh r9, [r4, r8] - ldr r8, _020B1E94 ; =UNK_020FF894 - ldr r5, [sp, #0x20] - add r6, r8, r6, lsl #0x3 - add r5, r5, r9, lsl #0xb - str r5, [sp, #0x20] - ldrh r4, [r4, r6] - ldr r5, [sp, #0x24] - add r4, r5, r4, lsl #0xb - str r4, [sp, #0x24] -_020B1C70: - ldr r4, [sp, #0x60] - ldr r5, [r3, #0x8] - cmp r4, #0x0 - ldrne r8, [sp, #0x8] - add r4, sp, #0x20 - ldreq r8, [sp, #0xc] - mov r6, r4 - cmp r8, #0x300 - ldreq r9, [sp, #0x10] - mov r12, #0x1000 - ldrne r9, [sp, #0x14] - cmp r4, r4 - ldr r4, [sp, #0x24] - addeq r6, sp, #0x28 - smull r11, r4, r5, r4 - adds r5, r11, r12 - adc r11, r4, #0x0 - ldr r4, [r3, #0x0] - ldr lr, [sp, #0x20] - smlal r5, r11, r4, lr - mov r4, r5, lsr #0xc - orr r4, r4, r11, lsl #0x14 - str r4, [r6, #0x0] - ldr r4, [r3, #0xc] - ldr r5, [sp, #0x24] - ldr lr, [r3, #0x4] - smull r11, r5, r4, r5 - adds r11, r11, r12 - adc r4, r5, #0x0 - add r5, sp, #0x28 - cmp r6, r5 - ldr r5, [sp, #0x20] - smlal r11, r4, lr, r5 - mov r5, r11, lsr #0xc - orr r5, r5, r4, lsl #0x14 - str r5, [r6, #0x4] - ldreq r5, [sp, #0x28] - ldreq r4, [sp, #0x2c] - streq r5, [sp, #0x20] - streq r4, [sp, #0x24] - cmp r8, #0x100 - beq _020B1D38 - cmp r8, #0x300 - beq _020B1D38 - ldr r5, [r7, #0x0] - ldr r4, _020B1E98 ; =0xC1FFFCFF - and r4, r5, r4 - orr r4, r4, r8 - str r4, [r7, #0x0] - b _020B1D54 -_020B1D38: - ldr r5, [r7, #0x0] - ldr r4, _020B1E98 ; =0xC1FFFCFF - and r4, r5, r4 - orr r5, r4, r8 - ldr r4, [sp, #0x4] - orr r4, r4, r5 - str r4, [r7, #0x0] -_020B1D54: - ldr r6, [r7, #0x0] - ldr r5, _020B1E8C ; =0xC000C000 - cmp r9, #0x0 - and r8, r6, r5 - and r5, r8, #0xc000 - mov r6, r5, asr #0xe - and r5, r8, #0xc0000000 - ldr r8, _020B1E90 ; =UNK_020FF8AC - mov r5, r5, lsr #0x1e - mov r5, r5, lsl #0x1 - add r8, r8, r6, lsl #0x3 - ldrh r9, [r5, r8] - ldr r8, _020B1E94 ; =UNK_020FF894 - ldr r4, [sp, #0x20] - add r6, r8, r6, lsl #0x3 - mov r11, r9, asr #0x1 - ldrh r5, [r5, r6] - mov r8, r11, lsl #0xc - ldr r6, [r3, #0x0] - rsb r12, r8, #0x0 - mov r9, r5, asr #0x1 - mla r12, r6, r11, r12 - ldr r5, [r3, #0x8] - mla r6, r5, r9, r12 - add r6, r4, r6 - str r6, [sp, #0x20] - ldr r12, [r3, #0x4] - mov r5, r9, lsl #0xc - str r12, [sp, #0x1c] - ldr r12, [r3, #0xc] - rsb lr, r5, #0x0 - str r12, [sp, #0x18] - ldr r12, [sp, #0x1c] - ldr r4, [sp, #0x24] - mla r11, r12, r11, lr - ldr r12, [sp, #0x18] - subne r6, r6, r8 - mla r9, r12, r9, r11 - add r4, r4, r9 - str r4, [sp, #0x24] - subne r4, r4, r5 - strne r6, [sp, #0x20] - strne r4, [sp, #0x24] -_020B1E00: - cmp r10, #0x0 - beq _020B1E28 - ldr r6, [sp, #0x20] - ldr r4, [r10, #0x0] - ldr r5, [sp, #0x24] - add r4, r6, r4 - str r4, [sp, #0x20] - ldr r4, [r10, #0x4] - add r4, r5, r4 - str r4, [sp, #0x24] -_020B1E28: - ldr r4, [sp, #0x20] - ldr r6, [r7, #0x0] - add r5, r4, #0x800 - ldr r4, _020B1E9C ; =0x000001FF - and r4, r4, r5, asr #0xc - ldr r5, _020B1EA0 ; =0xFE00FF00 - and r6, r6, r5 - ldr r5, [sp, #0x24] - add r5, r5, #0x800 - mov r5, r5, asr #0xc - and r5, r5, #0xff - orr r5, r6, r5 - orr r4, r5, r4, lsl #0x10 - str r4, [r7, #0x0] -_020B1E60: - ldr r4, [sp, #0x0] - add r4, r4, #0x1 - mov r4, r4, lsl #0x10 - mov r4, r4, lsr #0x10 - str r4, [sp, #0x0] - cmp r4, r1 - blo _020B1B54 -_020B1E7C: - mov r0, r1 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B1E88: .word 0x01FF0000 -_020B1E8C: .word 0xC000C000 -_020B1E90: .word UNK_020FF8AC -_020B1E94: .word UNK_020FF894 -_020B1E98: .word 0xC1FFFCFF -_020B1E9C: .word 0x000001FF -_020B1EA0: .word 0xFE00FF00 - arm_func_end FUN_020B1AF8 - - arm_func_start FUN_020B1EA4 -FUN_020B1EA4: ; 0x020B1EA4 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B0518 - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, r4 - bl FUN_020B1FC4 - ldmia sp!, {r4,pc} - arm_func_end FUN_020B1EA4 - - arm_func_start FUN_020B1EC4 -FUN_020B1EC4: ; 0x020B1EC4 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B0534 - cmp r0, #0x0 - ldmeqia sp!, {r4,pc} - mov r0, r4 - bl FUN_020B1FC4 - ldmia sp!, {r4,pc} - arm_func_end FUN_020B1EC4 - - arm_func_start FUN_020B1EE4 -FUN_020B1EE4: ; 0x020B1EE4 - stmdb sp!, {r4,lr} - mov r4, r0 - bl FUN_020B0438 - mov r0, r4 - bl FUN_020B1FC4 - ldmia sp!, {r4,pc} - arm_func_end FUN_020B1EE4 - - arm_func_start FUN_020B1EFC -FUN_020B1EFC: ; 0x020B1EFC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x14 - mov r4, r2 - ldr r2, [r4, #0xc] - mov r5, r1 - ldr r1, [r2, #0x0] - ldr r2, [sp, #0x34] - str r1, [sp, #0x0] - ldr r1, [sp, #0x38] - str r2, [sp, #0x4] - mov r6, r3 - mov r7, r0 - ldr r12, [sp, #0x3c] - str r1, [sp, #0x8] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - ldr r3, [sp, #0x30] - mov r0, r6 - str r12, [sp, #0xc] - bl FUN_020B45F0 - str r6, [r7, #0x34] - str r4, [r7, #0x30] - add r0, r7, #0x38 - mov r1, #0x1 - str r6, [r7, #0x34] - bl FUN_020B1A68 - mov r0, r7 - bl FUN_020B04C0 - mov r0, r7 - mov r1, r5 - bl FUN_020B1EE4 - add sp, sp, #0x14 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B1EFC - - arm_func_start FUN_020B1F80 -FUN_020B1F80: ; 0x020B1F80 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - str r2, [r5, #0x30] - mvn r2, #0x0 - add r0, r5, #0x38 - mov r1, #0x1 - str r2, [r5, #0x34] - bl FUN_020B1A68 - mov r0, r5 - bl FUN_020B04C0 - mov r0, r5 - mov r1, r4 - bl FUN_020B1EE4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020B1F80 - - arm_func_start FUN_020B1FC4 -FUN_020B1FC4: ; 0x020B1FC4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x0] - ldrh r1, [r1, #0x4] - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - bl FUN_020B06E0 - mov r4, r0 - ldr r7, [r5, #0x30] - ldrh r1, [r4, #0x0] - mov r0, r7 - bl FUN_020AFE8C - str r0, [r5, #0x2c] - ldr r1, [r5, #0x18] - add r0, r5, #0x38 - ldr r2, [r1, #0x4] - mov r1, #0x1 - and r6, r2, #0xff - bl FUN_020B1A68 - cmp r6, #0x0 - beq _020B2068 - cmp r6, #0x2 - bne _020B203C - ldrsh r1, [r4, #0x4] - ldrsh r2, [r4, #0x6] - add r0, r5, #0x38 - bl FUN_020B1AB4 - b _020B2068 -_020B203C: - ldr r1, [r4, #0x4] - ldr r2, [r4, #0x8] - add r0, r5, #0x38 - bl FUN_020B1A78 - ldrh r1, [r4, #0x2] - add r0, r5, #0x38 - bl FUN_020B1A98 - ldrsh r1, [r4, #0xc] - ldrsh r2, [r4, #0xe] - add r0, r5, #0x38 - bl FUN_020B1AB4 -_020B2068: - ldr r2, [r7, #0xc] - cmp r2, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldr r1, [r5, #0x34] - mvn r0, #0x0 - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldrh r1, [r4, #0x0] - ldr r2, [r2, #0x4] - ldr r0, [r5, #0x34] - add r3, r2, r1, lsl #0x3 - ldr r1, [r2, r1, lsl #0x3] - ldr r2, [r3, #0x4] - bl FUN_020B4400 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B1FC4 - - arm_func_start FUN_020B20C8 -FUN_020B20C8: ; 0x020B20C8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r6, #0x0 - str r6, [r0, #0x38] - ldr r7, [sp, #0x30] - str r6, [r0, #0x30] - mov r10, r1 - str r7, [r0, #0x34] - str r0, [sp, #0x0] - movs r8, r3 - mov r9, r2 - str r10, [r0, #0x3c] - ldr r11, [sp, #0x34] - beq _020B215C - mov r0, #0x1 - str r6, [sp, #0x8] - str r0, [sp, #0x4] -_020B210C: - mov r0, #0x28 - mul r4, r6, r0 - ldr r1, [sp, #0x4] - add r0, r10, r4 - bl FUN_020B1AD4 - mov r0, #0x54 - mla r5, r6, r0, r9 - ldr r1, [sp, #0x8] - mov r0, r7 - str r5, [r10, r4] - bl FUN_020AFC04 - mov r1, r0 - mov r0, r5 - mov r2, r11 - bl FUN_020B1F80 - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, r8 - blo _020B210C -_020B215C: - ldr r0, [sp, #0x0] - bl FUN_020B04C0 - ldr r0, [sp, #0x0] - ldr r3, [sp, #0x38] - ldr r2, [sp, #0x0] - add r0, r0, #0x44 - mov r1, #0x1 - str r3, [r2, #0x40] - bl FUN_020B1A68 - ldr r0, [sp, #0x0] - mov r1, #0x0 - strh r1, [r0, #0x2c] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B20C8 - - arm_func_start FUN_020B2194 -FUN_020B2194: ; 0x020B2194 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - bl FUN_020B0518 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - mov r0, r7 - bl FUN_020B06E0 - mov r4, r0 - ldrh r1, [r4, #0x0] - ldr r0, [r7, #0x40] - bl FUN_020AFF34 - ldr r1, [r7, #0x18] - mov r6, r0 - ldr r1, [r1, #0x4] - add r0, r7, #0x44 - and r5, r1, #0xff - mov r1, #0x1 - bl FUN_020B1A68 - cmp r5, #0x0 - beq _020B2234 - cmp r5, #0x2 - bne _020B2208 - ldrsh r1, [r4, #0x4] - ldrsh r2, [r4, #0x6] - add r0, r7, #0x44 - bl FUN_020B1AB4 - b _020B2234 -_020B2208: - ldr r1, [r4, #0x4] - ldr r2, [r4, #0x8] - add r0, r7, #0x44 - bl FUN_020B1A78 - ldrh r1, [r4, #0x2] - add r0, r7, #0x44 - bl FUN_020B1A98 - ldrsh r1, [r4, #0xc] - ldrsh r2, [r4, #0xe] - add r0, r7, #0x44 - bl FUN_020B1AB4 -_020B2234: - ldrh r2, [r7, #0x2c] - mov r1, r6 - add r0, r7, #0x30 - bl FUN_020B24E0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B2194 - - arm_func_start FUN_020B224C -FUN_020B224C: ; 0x020B224C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r2, [r4, #0x0] - mov r6, r1 - ldrh r5, [r2, #0x4] - bl FUN_020B0534 - cmp r0, #0x0 - beq _020B2318 - ldrh r1, [r4, #0x2c] - mov r0, r4 - add r1, r1, r5 - strh r1, [r4, #0x2c] - bl FUN_020B06E0 - mov r5, r0 - ldrh r1, [r5, #0x0] - ldr r0, [r4, #0x40] - bl FUN_020AFF34 - ldr r1, [r4, #0x18] - mov r7, r0 - ldr r1, [r1, #0x4] - add r0, r4, #0x44 - and r6, r1, #0xff - mov r1, #0x1 - bl FUN_020B1A68 - cmp r6, #0x0 - beq _020B2300 - cmp r6, #0x2 - bne _020B22D4 - ldrsh r1, [r5, #0x4] - ldrsh r2, [r5, #0x6] - add r0, r4, #0x44 - bl FUN_020B1AB4 - b _020B2300 -_020B22D4: - ldr r1, [r5, #0x4] - ldr r2, [r5, #0x8] - add r0, r4, #0x44 - bl FUN_020B1A78 - ldrh r1, [r5, #0x2] - add r0, r4, #0x44 - bl FUN_020B1A98 - ldrsh r1, [r5, #0xc] - ldrsh r2, [r5, #0xe] - add r0, r4, #0x44 - bl FUN_020B1AB4 -_020B2300: - ldrh r2, [r4, #0x2c] - mov r1, r7 - add r0, r4, #0x30 - bl FUN_020B24E0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B2318: - mov r1, r6 - add r0, r4, #0x30 - bl FUN_020B232C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B224C - - arm_func_start FUN_020B232C -FUN_020B232C: ; 0x020B232C - stmdb sp!, {r4-r8,lr} - mov r7, r0 - ldr r0, [r7, #0x8] - mov r6, r1 - cmp r0, #0x1 - bne _020B238C - ldr r0, [r7, #0x0] - ldr r4, [r7, #0xc] - ldrh r0, [r0, #0x2] - mov r5, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r8,pc} - mov r8, #0x58 -_020B2360: - mla r0, r5, r8, r4 - mov r1, r6 - bl FUN_020B1EC4 - ldr r1, [r7, #0x0] - add r0, r5, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x2] - mov r5, r0, lsr #0x10 - cmp r5, r1 - blo _020B2360 - ldmia sp!, {r4-r8,pc} -_020B238C: - ldr r0, [r7, #0x0] - ldr r4, [r7, #0xc] - ldrh r0, [r0, #0x0] - mov r5, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r8,pc} - mov r8, #0x28 -_020B23A8: - mul r0, r5, r8 - ldr r0, [r4, r0] - mov r1, r6 - bl FUN_020B1EC4 - ldr r1, [r7, #0x0] - add r0, r5, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x0] - mov r5, r0, lsr #0x10 - cmp r5, r1 - blo _020B23A8 - ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020B232C - - arm_func_start FUN_020B23D8 -FUN_020B23D8: ; 0x020B23D8 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldrh r0, [r5, #0x0] - mov r4, #0x0 - mov r6, r4 - cmp r0, #0x0 - bls _020B2424 -_020B23F4: - mov r0, r5 - mov r1, r6 - bl FUN_020AFF34 - ldrh r0, [r0, #0x0] - ldrh r1, [r5, #0x0] - cmp r0, r4 - movhi r4, r0 - add r0, r6, #0x1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, r1 - blo _020B23F4 -_020B2424: - mov r0, r4 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020B23D8 - - arm_func_start FUN_020B242C -FUN_020B242C: ; 0x020B242C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - bl FUN_020B0438 - mov r1, #0x0 - mov r0, r7 - strh r1, [r7, #0x2c] - bl FUN_020B06E0 - mov r4, r0 - ldrh r1, [r4, #0x0] - ldr r0, [r7, #0x40] - bl FUN_020AFF34 - ldr r1, [r7, #0x18] - mov r6, r0 - ldr r1, [r1, #0x4] - add r0, r7, #0x44 - and r5, r1, #0xff - mov r1, #0x1 - bl FUN_020B1A68 - cmp r5, #0x0 - beq _020B24C8 - cmp r5, #0x2 - bne _020B249C - ldrsh r1, [r4, #0x4] - ldrsh r2, [r4, #0x6] - add r0, r7, #0x44 - bl FUN_020B1AB4 - b _020B24C8 -_020B249C: - ldr r1, [r4, #0x4] - ldr r2, [r4, #0x8] - add r0, r7, #0x44 - bl FUN_020B1A78 - ldrh r1, [r4, #0x2] - add r0, r7, #0x44 - bl FUN_020B1A98 - ldrsh r1, [r4, #0xc] - ldrsh r2, [r4, #0xe] - add r0, r7, #0x44 - bl FUN_020B1AB4 -_020B24C8: - ldrh r2, [r7, #0x2c] - mov r1, r6 - add r0, r7, #0x30 - bl FUN_020B24E0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B242C - - arm_func_start FUN_020B24E0 -FUN_020B24E0: ; 0x020B24E0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r1 - str r0, [sp, #0x0] - str r10, [r0, #0x0] - ldr r0, [r0, #0x8] - mov r9, r2 - cmp r0, #0x1 - bne _020B2654 - ldrh r1, [r10, #0x2] - ldr r0, [sp, #0x0] - mov r4, #0x0 - ldr r8, [r0, #0xc] - cmp r1, #0x0 - bls _020B2544 - mov r3, r4 - mov r0, #0x58 -_020B2524: - mla r1, r4, r0, r8 - str r3, [r1, #0x54] - add r1, r4, #0x1 - mov r1, r1, lsl #0x10 - ldrh r2, [r10, #0x2] - mov r4, r1, lsr #0x10 - cmp r4, r2 - blo _020B2524 -_020B2544: - ldrh r0, [r10, #0x0] - mov r5, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x14 - ldmlsia sp!, {r4-r11,pc} - str r5, [sp, #0x4] - mov r11, #0x1 -_020B2560: - ldr r0, [r10, #0x4] - mov r1, #0x58 - add r7, r0, r5, lsl #0x3 - ldrh r0, [r7, #0x6] - and r0, r0, #0xff00 - mov r0, r0, lsl #0x8 - mov r0, r0, lsr #0x10 - mla r6, r0, r1, r8 - ldr r0, [r6, #0x54] - cmp r0, #0x0 - bne _020B2634 - ldr r0, [sp, #0x0] - ldrh r1, [r7, #0x0] - ldr r0, [r0, #0x4] - bl FUN_020AFC04 - mov r4, r0 - mov r0, r6 - mov r1, r4 - bl FUN_020B1EE4 - str r11, [r6, #0x8] - ldrh r0, [r7, #0x6] - and r0, r0, #0xf - cmp r0, #0x1 - bne _020B2630 - ldrh r1, [r4, #0x0] - ldr r7, [sp, #0x4] - mov r3, r7 - cmp r1, #0x0 - bls _020B25F0 - ldr r2, [r4, #0xc] -_020B25D8: - add r0, r2, r3, lsl #0x3 - ldrh r0, [r0, #0x4] - add r3, r3, #0x1 - cmp r3, r1 - add r7, r7, r0 - blo _020B25D8 -_020B25F0: - mov r0, r6 - bl FUN_020B0408 - cmp r0, #0x0 - beq _020B261C - mov r0, r9 - mov r1, r7 - bl _u32_div_f - mov r0, r6 - mov r1, r1, lsl #0xc - bl FUN_020B1EC4 - b _020B2630 -_020B261C: - cmp r9, r7 - movcc r7, r9 - mov r0, r6 - mov r1, r7, lsl #0xc - bl FUN_020B1EC4 -_020B2630: - str r11, [r6, #0x54] -_020B2634: - add r0, r5, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r10, #0x0] - mov r5, r0, lsr #0x10 - cmp r5, r1 - blo _020B2560 - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} -_020B2654: - ldrh r1, [r10, #0x0] - ldr r0, [sp, #0x0] - mov r4, #0x0 - cmp r1, #0x0 - ldr r11, [r0, #0xc] - addls sp, sp, #0x14 - ldmlsia sp!, {r4-r11,pc} - mov r0, #0x1 - str r4, [sp, #0xc] - str r0, [sp, #0x8] -_020B267C: - mov r0, #0x28 - mul r2, r4, r0 - ldr r3, [r10, #0x4] - mov r0, r4, lsl #0x3 - ldrh r1, [r3, r0] - ldr r0, [sp, #0x0] - ldr r6, [r11, r2] - ldr r0, [r0, #0x4] - add r7, r3, r4, lsl #0x3 - bl FUN_020AFC04 - mov r5, r0 - mov r0, r6 - mov r1, r5 - bl FUN_020B1EE4 - ldr r0, [sp, #0x8] - str r0, [r6, #0x8] - ldrh r0, [r7, #0x6] - and r0, r0, #0xf - cmp r0, #0x1 - bne _020B2740 - ldrh r1, [r5, #0x0] - ldr r8, [sp, #0xc] - mov r0, r8 - cmp r1, #0x0 - bls _020B2700 - ldr r3, [r5, #0xc] -_020B26E4: - add r1, r3, r0, lsl #0x3 - ldrh r2, [r1, #0x4] - add r0, r0, #0x1 - ldrh r1, [r5, #0x0] - add r8, r8, r2 - cmp r0, r1 - blo _020B26E4 -_020B2700: - mov r0, r6 - bl FUN_020B0408 - cmp r0, #0x0 - beq _020B272C - mov r0, r9 - mov r1, r8 - bl _u32_div_f - mov r0, r6 - mov r1, r1, lsl #0xc - bl FUN_020B1EC4 - b _020B2740 -_020B272C: - cmp r9, r8 - movcc r8, r9 - mov r0, r6 - mov r1, r8, lsl #0xc - bl FUN_020B1EC4 -_020B2740: - mov r0, #0x28 - mla r3, r4, r0, r11 - ldr r0, [sp, #0x8] - str r0, [r3, #0x8] - ldrsh r1, [r7, #0x2] - ldrsh r2, [r7, #0x4] - add r0, r3, #0xc - bl FUN_020B1AB4 - add r0, r4, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r10, #0x0] - mov r4, r0, lsr #0x10 - cmp r4, r1 - blo _020B267C - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B24E0 - - arm_func_start thunk_FUN_020b5040 -thunk_FUN_020b5040: ; 0x020B2780 - ldr ip, _020B2788 ; =FUN_020B5040 - bx r12 - .balign 4 -_020B2788: .word FUN_020B5040 - arm_func_end thunk_FUN_020b5040 - - arm_func_start FUN_020B278C -FUN_020B278C: ; 0x020B278C - ldr r0, [r0, #0x78] - bx lr - arm_func_end FUN_020B278C - - arm_func_start FUN_020B2794 -FUN_020B2794: ; 0x020B2794 - stmdb sp!, {lr} - sub sp, sp, #0x1c - ldr r2, _020B2894 ; =UNK_021CDD70 - mov lr, #0x0 - ldr r12, [r2, #0x0] - ldr r3, _020B2898 ; =UNK_021CDEF4 - mov r2, #0x18 - str r1, [sp, #0x0] - str r1, [sp, #0xc] - mla r1, r12, r2, r3 - rsb r3, r0, #0x0 - str r0, [sp, #0x4] - add r0, sp, #0x0 - mov r2, r1 - str r3, [sp, #0x8] - str lr, [sp, #0x10] - str lr, [sp, #0x14] - bl FUN_020B423C - ldr r0, _020B2894 ; =UNK_021CDD70 - ldr r1, _020B289C ; =UNK_021CE1F4 - ldr r2, [r0, #0x0] - mov r0, #0x18 - mla r1, r2, r0, r1 - add r0, sp, #0x0 - mov r2, r1 - bl FUN_020B423C - ldr r0, _020B28A0 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B2824 - ldr r1, _020B28A4 ; =UNK_02106570 - ldr r0, _020B28A8 ; =0x0000FFFE - ldrh r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - bne _020B2828 -_020B2824: - mov r0, #0x0 -_020B2828: - cmp r0, #0x0 - ldreq r1, _020B2894 ; =UNK_021CDD70 - ldreq r0, _020B28A4 ; =UNK_02106570 - ldreq r1, [r1, #0x0] - streqh r1, [r0, #0x0] - ldr r0, _020B2894 ; =UNK_021CDD70 - ldr r1, _020B28AC ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x10 - add r12, r1, r0, lsr #0xd - ldrh r0, [r12, #0x4] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B288C - ; Jump table - b _020B2870 ; case 0 - b _020B288C ; case 1 - b _020B2870 ; case 2 - b _020B2870 ; case 3 -_020B2870: - ldr r0, _020B28B0 ; =UNK_021CDD64 - mov r1, #0x1 - ldrh r3, [r0, #0x0] - add r2, r3, #0x1 - strh r2, [r0, #0x0] - strh r3, [r12, #0x2] - strh r1, [r12, #0x4] -_020B288C: - add sp, sp, #0x1c - ldmia sp!, {pc} - .balign 4 -_020B2894: .word UNK_021CDD70 -_020B2898: .word UNK_021CDEF4 -_020B289C: .word UNK_021CE1F4 -_020B28A0: .word UNK_021CDD68 -_020B28A4: .word UNK_02106570 -_020B28A8: .word 0x0000FFFE -_020B28AC: .word UNK_021CDDF4 -_020B28B0: .word UNK_021CDD64 - arm_func_end FUN_020B2794 - - arm_func_start FUN_020B28B4 -FUN_020B28B4: ; 0x020B28B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x1c - ldr r2, _020B29E8 ; =UNK_021CDD70 - mov r12, #0x0 - ldr r3, [r2, #0x0] - mov r4, r1 - ldr r2, _020B29EC ; =UNK_021CDEF4 - mov r1, #0x18 - mla r1, r3, r1, r2 - mov r5, r0 - add r0, sp, #0x0 - mov r2, r1 - str r5, [sp, #0x0] - str r12, [sp, #0x4] - str r12, [sp, #0x8] - str r4, [sp, #0xc] - str r12, [sp, #0x10] - str r12, [sp, #0x14] - bl FUN_020B423C - mov r0, r5 - bl FX_Inv - mov r1, #0x0 - str r0, [sp, #0x0] - mov r0, r4 - str r1, [sp, #0x4] - str r1, [sp, #0x8] - bl FX_Inv - mov r3, #0x0 - ldr r1, _020B29E8 ; =UNK_021CDD70 - str r0, [sp, #0xc] - ldr r2, [r1, #0x0] - ldr r1, _020B29F0 ; =UNK_021CE1F4 - mov r0, #0x18 - mla r1, r2, r0, r1 - add r0, sp, #0x0 - mov r2, r1 - str r3, [sp, #0x10] - str r3, [sp, #0x14] - bl FUN_020B423C - ldr r0, _020B29F4 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B2978 - ldr r1, _020B29F8 ; =UNK_02106570 - ldr r0, _020B29FC ; =0x0000FFFE - ldrh r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - bne _020B297C -_020B2978: - mov r0, #0x0 -_020B297C: - cmp r0, #0x0 - ldreq r1, _020B29E8 ; =UNK_021CDD70 - ldreq r0, _020B29F8 ; =UNK_02106570 - ldreq r1, [r1, #0x0] - streqh r1, [r0, #0x0] - ldr r0, _020B29E8 ; =UNK_021CDD70 - ldr r1, _020B2A00 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x10 - add r12, r1, r0, lsr #0xd - ldrh r0, [r12, #0x4] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B29E0 - ; Jump table - b _020B29C4 ; case 0 - b _020B29E0 ; case 1 - b _020B29C4 ; case 2 - b _020B29C4 ; case 3 -_020B29C4: - ldr r0, _020B2A04 ; =UNK_021CDD64 - mov r1, #0x1 - ldrh r3, [r0, #0x0] - add r2, r3, #0x1 - strh r2, [r0, #0x0] - strh r3, [r12, #0x2] - strh r1, [r12, #0x4] -_020B29E0: - add sp, sp, #0x1c - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B29E8: .word UNK_021CDD70 -_020B29EC: .word UNK_021CDEF4 -_020B29F0: .word UNK_021CE1F4 -_020B29F4: .word UNK_021CDD68 -_020B29F8: .word UNK_02106570 -_020B29FC: .word 0x0000FFFE -_020B2A00: .word UNK_021CDDF4 -_020B2A04: .word UNK_021CDD64 - arm_func_end FUN_020B28B4 - - arm_func_start FUN_020B2A08 -FUN_020B2A08: ; 0x020B2A08 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x1c - ldr r3, _020B2AEC ; =UNK_021CDD68 - mov r4, r2 - ldr r2, [r3, #0x0] - cmp r2, #0x0 - beq _020B2A6C - ldr r2, _020B2AF0 ; =UNK_021CDD70 - mov r3, #0x18 - ldr r2, [r2, #0x0] - ldr lr, _020B2AF4 ; =UNK_021CDF04 - mul r5, r2, r3 - ldr r3, [lr, r5] - ldr ip, _020B2AF8 ; =UNK_021CDF08 - add r0, r3, r0 - str r0, [lr, r5] - ldr r0, [r12, r5] - ldr r3, _020B2AFC ; =UNK_021CDD74 - add r0, r0, r1 - str r0, [r12, r5] - ldr r0, [r3, r2, lsl #0x2] - add sp, sp, #0x1c - add r0, r0, r4 - str r0, [r3, r2, lsl #0x2] - ldmia sp!, {r4-r5,pc} -_020B2A6C: - ldr r2, _020B2AF0 ; =UNK_021CDD70 - mov lr, #0x1000 - ldr r12, [r2, #0x0] - ldr r3, _020B2B00 ; =UNK_021CDEF4 - mov r2, #0x18 - str r1, [sp, #0x14] - mla r1, r12, r2, r3 - mov r3, #0x0 - str r0, [sp, #0x10] - add r0, sp, #0x0 - mov r2, r1 - str lr, [sp, #0x0] - str r3, [sp, #0x4] - str r3, [sp, #0x8] - str lr, [sp, #0xc] - bl FUN_020B423C - ldr r0, _020B2AF0 ; =UNK_021CDD70 - ldr r1, _020B2B04 ; =UNK_021CE1F4 - ldr r2, [r0, #0x0] - mov r0, #0x18 - mla r1, r2, r0, r1 - add r0, sp, #0x0 - mov r2, r1 - bl FUN_020B423C - ldr r0, _020B2AF0 ; =UNK_021CDD70 - ldr r2, _020B2AFC ; =UNK_021CDD74 - ldr r1, [r0, #0x0] - ldr r0, [r2, r1, lsl #0x2] - add r0, r0, r4 - str r0, [r2, r1, lsl #0x2] - add sp, sp, #0x1c - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B2AEC: .word UNK_021CDD68 -_020B2AF0: .word UNK_021CDD70 -_020B2AF4: .word UNK_021CDF04 -_020B2AF8: .word UNK_021CDF08 -_020B2AFC: .word UNK_021CDD74 -_020B2B00: .word UNK_021CDEF4 -_020B2B04: .word UNK_021CE1F4 - arm_func_end FUN_020B2A08 - - arm_func_start FUN_020B2B08 -FUN_020B2B08: ; 0x020B2B08 - ldr r0, _020B2B4C ; =UNK_021CDD70 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - movle r0, #0x1 - movgt r0, #0x0 - cmp r0, #0x0 - bxne lr - ldr r1, _020B2B4C ; =UNK_021CDD70 - ldr r0, _020B2B50 ; =UNK_02106570 - ldr r3, [r1, #0x0] - ldrh r2, [r0, #0x0] - sub r3, r3, #0x1 - str r3, [r1, #0x0] - cmp r2, r3 - ldrgt r1, _020B2B54 ; =0x0000FFFE - strgth r1, [r0, #0x0] - bx lr - .balign 4 -_020B2B4C: .word UNK_021CDD70 -_020B2B50: .word UNK_02106570 -_020B2B54: .word 0x0000FFFE - arm_func_end FUN_020B2B08 - - arm_func_start FUN_020B2B58 -FUN_020B2B58: ; 0x020B2B58 - stmdb sp!, {r4-r10,lr} - ldr r0, _020B2D74 ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x7c] - ands r0, r0, #0x1 - bne _020B2CA4 - ldr r0, _020B2D78 ; =UNK_021CDD70 - ldr r1, [r0, #0x0] - mov r0, r1, lsl #0x10 - add r5, r1, #0x1 - cmp r5, #0x20 - mov r4, r0, lsr #0x10 - movlt r0, #0x1 - movge r0, #0x0 - cmp r0, #0x0 - beq _020B2C44 - ldr r0, _020B2D7C ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020B2BE4 - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r3, [r1, #0x0] - ldr r1, _020B2D80 ; =UNK_021CDD74 - mul r8, r3, r0 - ldr r6, _020B2D84 ; =UNK_021CDF04 - mul r7, r5, r0 - ldr r2, [r6, r8] - ldr r0, [r1, r3, lsl #0x2] - ldr r3, _020B2D88 ; =UNK_021CDF08 - str r2, [r6, r7] - ldr r2, [r3, r8] - str r0, [r1, r5, lsl #0x2] - str r2, [r3, r7] - b _020B2C3C -_020B2BE4: - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr r7, _020B2D80 ; =UNK_021CDD74 - mul lr, r2, r0 - ldr r1, _020B2D8C ; =UNK_021CDEF4 - mul r12, r5, r0 - ldr r8, _020B2D90 ; =UNK_021CE1F4 - add r10, r1, lr - ldr r6, [r7, r2, lsl #0x2] - add r9, r1, r12 - ldmia r10!, {r0-r3} - stmia r9!, {r0-r3} - ldmia r10, {r0-r1} - str r6, [r7, r5, lsl #0x2] - add r7, r8, lr - stmia r9, {r0-r1} - add r6, r8, r12 - ldmia r7!, {r0-r3} - stmia r6!, {r0-r3} - ldmia r7, {r0-r1} - stmia r6, {r0-r1} -_020B2C3C: - ldr r0, _020B2D78 ; =UNK_021CDD70 - str r5, [r0, #0x0] -_020B2C44: - ldr r0, _020B2D78 ; =UNK_021CDD70 - ldr r2, _020B2D94 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r5, r4, lsl #0x3 - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - add r4, r2, r4, lsl #0x3 - mov r6, r3, lsl #0x3 - ldrh r1, [r2, r5] - ldrh r0, [r4, #0x2] - add r3, r2, r3, lsl #0x3 - strh r1, [r2, r6] - strh r0, [r3, #0x2] - ldrh r2, [r4, #0x4] - ldrh r0, [r4, #0x6] - ldr r1, _020B2D98 ; =UNK_021CDDF8 - strh r2, [r3, #0x4] - strh r0, [r3, #0x6] - ldrh r0, [r1, r5] - cmp r0, #0x1 - moveq r0, #0x2 - streqh r0, [r1, r6] - strneh r0, [r1, r6] - ldmia sp!, {r4-r10,pc} -_020B2CA4: - ldr r0, _020B2D78 ; =UNK_021CDD70 - ldr r0, [r0, #0x0] - add r4, r0, #0x1 - cmp r4, #0x20 - movlt r0, #0x1 - movge r0, #0x0 - cmp r0, #0x0 - ldmeqia sp!, {r4-r10,pc} - ldr r0, _020B2D7C ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020B2D10 - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r3, [r1, #0x0] - ldr r1, _020B2D80 ; =UNK_021CDD74 - mul r7, r3, r0 - ldr r5, _020B2D84 ; =UNK_021CDF04 - mul r6, r4, r0 - ldr r2, [r5, r7] - ldr r0, [r1, r3, lsl #0x2] - ldr r3, _020B2D88 ; =UNK_021CDF08 - str r2, [r5, r6] - ldr r2, [r3, r7] - str r0, [r1, r4, lsl #0x2] - str r2, [r3, r6] - b _020B2D68 -_020B2D10: - ldr r1, _020B2D78 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr ip, _020B2D80 ; =UNK_021CDD74 - mul r9, r2, r0 - ldr r1, _020B2D8C ; =UNK_021CDEF4 - mul r8, r4, r0 - ldr lr, _020B2D90 ; =UNK_021CE1F4 - add r6, r1, r9 - ldr r5, [r12, r2, lsl #0x2] - add r7, r1, r8 - ldmia r6!, {r0-r3} - stmia r7!, {r0-r3} - ldmia r6, {r0-r1} - add r6, lr, r9 - stmia r7, {r0-r1} - add lr, lr, r8 - ldmia r6!, {r0-r3} - stmia lr!, {r0-r3} - ldmia r6, {r0-r1} - stmia lr, {r0-r1} - str r5, [r12, r4, lsl #0x2] -_020B2D68: - ldr r0, _020B2D78 ; =UNK_021CDD70 - str r4, [r0, #0x0] - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B2D74: .word UNK_021CDD6C -_020B2D78: .word UNK_021CDD70 -_020B2D7C: .word UNK_021CDD68 -_020B2D80: .word UNK_021CDD74 -_020B2D84: .word UNK_021CDF04 -_020B2D88: .word UNK_021CDF08 -_020B2D8C: .word UNK_021CDEF4 -_020B2D90: .word UNK_021CE1F4 -_020B2D94: .word UNK_021CDDF4 -_020B2D98: .word UNK_021CDDF8 - arm_func_end FUN_020B2B58 - - arm_func_start FUN_020B2D9C -FUN_020B2D9C: ; 0x020B2D9C - stmdb sp!, {r4-r6,lr} - mov r4, r0 - ldrh r0, [r4, #0x56] - cmp r0, #0x0 - bne _020B2DBC - add r0, r4, #0x30 - bl FUN_020B2E78 - ldmia sp!, {r4-r6,pc} -_020B2DBC: - bl FUN_020B2B58 - ldrh r0, [r4, #0x56] - ands r0, r0, #0x8 - beq _020B2E0C - ldr r0, _020B2E70 ; =UNK_021CDD6C - ldrsh r6, [r4, #0x52] - ldr r0, [r0, #0x0] - ldrsh r5, [r4, #0x50] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B2E70 ; =UNK_021CDD6C - rsbne r5, r5, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r6, r6, #0x0 - mov r0, r5, lsl #0xc - mov r1, r6, lsl #0xc - mov r2, #0x0 - bl FUN_020B2A08 -_020B2E0C: - ldrh r0, [r4, #0x56] - ands r0, r0, #0x4 - beq _020B2E40 - ldrh r0, [r4, #0x54] - ldr r2, _020B2E74 ; =FX_SinCosTable_ - mov r0, r0, asr #0x4 - mov r1, r0, lsl #0x1 - add r0, r1, #0x1 - mov r3, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - ldrsh r0, [r2, r3] - ldrsh r1, [r2, r1] - bl FUN_020B2794 -_020B2E40: - ldrh r0, [r4, #0x56] - ands r0, r0, #0x2 - beq _020B2E5C - ldr r0, [r4, #0x48] - ldr r1, [r4, #0x4c] - mov r2, #0x1000 - bl FUN_020B28B4 -_020B2E5C: - add r0, r4, #0x30 - bl FUN_020B2E78 - mov r0, #0x1 - bl FUN_020B2B08 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B2E70: .word UNK_021CDD6C -_020B2E74: .word FX_SinCosTable_ - arm_func_end FUN_020B2D9C - - arm_func_start FUN_020B2E78 -FUN_020B2E78: ; 0x020B2E78 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r5, r0 - ldr r0, [r5, #0x8] - cmp r0, #0x1 - bne _020B309C - ldr r0, [r5, #0x0] - mov r2, #0x0 - ldrh r0, [r0, #0x2] - cmp r0, #0x0 - bls _020B2ED0 - ldr r3, _020B3174 ; =UNK_021CE8F4 - mov r4, r2 -_020B2EAC: - add r0, r3, r2, lsl #0x2 - str r4, [r0, #0x4] - ldr r0, [r5, #0x0] - add r2, r2, #0x1 - ldrh r1, [r0, #0x2] - mov r0, r2, lsl #0x10 - mov r2, r0, lsr #0x10 - cmp r2, r1 - blo _020B2EAC -_020B2ED0: - ldr r0, _020B3178 ; =UNK_021CDD6C - mov r6, #0x1 - ldr r1, [r0, #0x0] - ldr r0, _020B3174 ; =UNK_021CE8F4 - str r6, [r0, #0x404] - ldr r0, [r1, #0x80] - cmp r0, #0x0 - beq _020B2FD8 - bl FUN_020B4948 - str r0, [sp, #0x0] - mov r0, r6 - bl FUN_020B497C - ldr r0, _020B3178 ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - bl FUN_020B4958 - ldr r2, [r5, #0x0] - mov r7, #0x0 - ldrh r0, [r2, #0x0] - cmp r0, #0x0 - bls _020B2FC0 - mov r11, r7 -_020B2F28: - ldr r0, [r2, #0x4] - ldr r9, [r5, #0xc] - add r10, r0, r7, lsl #0x3 - ldrh r0, [r10, #0x6] - and r0, r0, #0xff00 - mov r0, r0, lsl #0x8 - mov r8, r0, lsr #0x10 - ldr r0, _020B3174 ; =UNK_021CE8F4 - strh r8, [r0, #0x0] - bl FUN_020B2B58 - ldr r0, _020B3178 ; =UNK_021CDD6C - ldrsh r4, [r10, #0x4] - ldr r0, [r0, #0x0] - ldrsh r10, [r10, #0x2] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B3178 ; =UNK_021CDD6C - rsbne r10, r10, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r4, r4, #0x0 - mov r2, r11 - mov r0, r10, lsl #0xc - mov r1, r4, lsl #0xc - bl FUN_020B2A08 - mov r0, #0x58 - mla r0, r8, r0, r9 - bl FUN_020B3554 - mov r0, r6 - bl FUN_020B2B08 - ldr r2, [r5, #0x0] - add r0, r7, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r2, #0x0] - mov r7, r0, lsr #0x10 - cmp r7, r1 - blo _020B2F28 -_020B2FC0: - mov r0, #0x0 - bl FUN_020B497C - ldr r0, [sp, #0x0] - bl FUN_020B4958 - bl FUN_020B4968 - b _020B3088 -_020B2FD8: - ldr r2, [r5, #0x0] - mov r7, #0x0 - ldrh r0, [r2, #0x0] - cmp r0, #0x0 - bls _020B3088 - str r7, [sp, #0x4] - mov r11, #0x58 -_020B2FF4: - ldr r0, [r2, #0x4] - ldr r9, [r5, #0xc] - add r10, r0, r7, lsl #0x3 - ldrh r0, [r10, #0x6] - and r0, r0, #0xff00 - mov r0, r0, lsl #0x8 - mov r8, r0, lsr #0x10 - ldr r0, _020B3174 ; =UNK_021CE8F4 - strh r8, [r0, #0x0] - bl FUN_020B2B58 - ldr r0, _020B3178 ; =UNK_021CDD6C - ldrsh r4, [r10, #0x4] - ldr r0, [r0, #0x0] - ldrsh r10, [r10, #0x2] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B3178 ; =UNK_021CDD6C - rsbne r10, r10, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r4, r4, #0x0 - ldr r2, [sp, #0x4] - mov r0, r10, lsl #0xc - mov r1, r4, lsl #0xc - bl FUN_020B2A08 - mla r0, r8, r11, r9 - bl FUN_020B3554 - mov r0, r6 - bl FUN_020B2B08 - ldr r2, [r5, #0x0] - add r0, r7, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r2, #0x0] - mov r7, r0, lsr #0x10 - cmp r7, r1 - blo _020B2FF4 -_020B3088: - ldr r0, _020B3174 ; =UNK_021CE8F4 - mov r1, #0x0 - str r1, [r0, #0x404] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020B309C: - ldr r0, _020B3178 ; =UNK_021CDD6C - ldr r7, [r5, #0xc] - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - cmp r0, #0x0 - beq _020B312C - bl FUN_020B4948 - mov r6, r0 - mov r0, #0x1 - bl FUN_020B497C - ldr r0, _020B3178 ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - bl FUN_020B4958 - ldr r0, [r5, #0x0] - mov r4, #0x0 - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - bls _020B3110 - mov r8, #0x28 -_020B30EC: - mla r0, r4, r8, r7 - bl FUN_020B3474 - ldr r1, [r5, #0x0] - add r0, r4, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x0] - mov r4, r0, lsr #0x10 - cmp r4, r1 - blo _020B30EC -_020B3110: - mov r0, #0x0 - bl FUN_020B497C - mov r0, r6 - bl FUN_020B4958 - bl FUN_020B4968 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} -_020B312C: - ldr r0, [r5, #0x0] - mov r4, #0x0 - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - addls sp, sp, #0xc - ldmlsia sp!, {r4-r11,pc} - mov r6, #0x28 -_020B3148: - mla r0, r4, r6, r7 - bl FUN_020B3474 - ldr r1, [r5, #0x0] - add r0, r4, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r1, #0x0] - mov r4, r0, lsr #0x10 - cmp r4, r1 - blo _020B3148 - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B3174: .word UNK_021CE8F4 -_020B3178: .word UNK_021CDD6C - arm_func_end FUN_020B2E78 - - arm_func_start FUN_020B317C -FUN_020B317C: ; 0x020B317C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r1, _020B31EC ; =UNK_021CDD6C - mov r5, r0 - ldr r1, [r1, #0x0] - ldr r1, [r1, #0x80] - cmp r1, #0x0 - beq _020B31E0 - bl FUN_020B4948 - mov r4, r0 - mov r0, #0x1 - bl FUN_020B497C - ldr r0, _020B31EC ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x80] - bl FUN_020B4958 - mov r0, r5 - bl FUN_020B3554 - mov r0, #0x0 - bl FUN_020B497C - mov r0, r4 - bl FUN_020B4958 - bl FUN_020B4968 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B31E0: - bl FUN_020B3554 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B31EC: .word UNK_021CDD6C - arm_func_end FUN_020B317C - - arm_func_start FUN_020B31F0 -FUN_020B31F0: ; 0x020B31F0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020B3260 ; =0x04000448 - mov r2, #0x1 - ldr r0, _020B3264 ; =UNK_021CDD6C - str r2, [r1, #0x0] - ldr r2, [r0, #0x0] - ldr r3, [r2, #0x7c] - cmp r3, #0x0 - beq _020B324C - ands r0, r3, #0x1 - ldrne r0, _020B3268 ; =UNK_021CDD68 - movne r1, #0x0 - strne r1, [r0, #0x0] - ands r0, r3, #0x2 - beq _020B323C - mov r0, #0x0 - str r0, [r2, #0x74] - bl FUN_020B4DA0 -_020B323C: - ldr r0, _020B3264 ; =UNK_021CDD6C - mov r1, #0x0 - ldr r0, [r0, #0x0] - str r1, [r0, #0x7c] -_020B324C: - ldr r0, _020B3264 ; =UNK_021CDD6C - mov r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B3260: .word 0x04000448 -_020B3264: .word UNK_021CDD6C -_020B3268: .word UNK_021CDD68 - arm_func_end FUN_020B31F0 - - arm_func_start FUN_020B326C -FUN_020B326C: ; 0x020B326C - stmdb sp!, {r4-r8,lr} - ldr r5, _020B330C ; =UNK_021CDD60 - ldr r3, _020B3310 ; =UNK_021CDD6C - ldrh r6, [r5, #0x0] - ldr r2, _020B3314 ; =UNK_021CDD70 - mov r4, #0x0 - ldr r7, _020B3318 ; =0x0000FFFE - ldr r1, _020B331C ; =UNK_02106570 - str r0, [r3, #0x0] - str r4, [r2, #0x0] - strh r7, [r1, #0x0] - cmp r6, #0x0 - ble _020B32D0 - ldr r8, _020B3320 ; =UNK_021CE4F4 - mvn r7, #0x0 - mov r6, #0x10 -_020B32AC: - mov r0, r7 - mov r2, r6 - add r1, r8, #0x10 - bl MIi_CpuClearFast - ldrh r0, [r5, #0x0] - add r4, r4, #0x1 - add r8, r8, #0x20 - cmp r4, r0 - blt _020B32AC -_020B32D0: - ldr r4, _020B330C ; =UNK_021CDD60 - mov r0, #0x0 - ldr r3, _020B3324 ; =UNK_021CDD64 - ldr r1, _020B3328 ; =UNK_021CDDF4 - mov r2, #0x100 - strh r0, [r4, #0x0] - strh r0, [r3, #0x0] - bl MIi_CpuClearFast - ldr r1, _020B332C ; =0x04000444 - mov r2, #0x0 - ldr r0, _020B3330 ; =0x04000454 - str r2, [r1, #0x0] - str r2, [r0, #0x0] - bl FUN_020B4178 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B330C: .word UNK_021CDD60 -_020B3310: .word UNK_021CDD6C -_020B3314: .word UNK_021CDD70 -_020B3318: .word 0x0000FFFE -_020B331C: .word UNK_02106570 -_020B3320: .word UNK_021CE4F4 -_020B3324: .word UNK_021CDD64 -_020B3328: .word UNK_021CDDF4 -_020B332C: .word 0x04000444 -_020B3330: .word 0x04000454 - arm_func_end FUN_020B326C - - arm_func_start FUN_020B3334 -FUN_020B3334: ; 0x020B3334 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r1, r4 - mov r0, #0x0 - mov r2, #0x48 - bl MIi_CpuClear16 - mov r0, #0x1 - str r0, [r4, #0x10] - mov r0, #0x3 - ldr r1, _020B3380 ; =FUN_020B3EE0 - str r0, [r4, #0x14] - ldr r0, _020B3384 ; =FUN_020B3E48 - str r1, [r4, #0x18] - ldr r1, _020B3388 ; =FUN_020B3C40 - str r0, [r4, #0x1c] - ldr r0, _020B338C ; =FUN_020B3B90 - str r1, [r4, #0x20] - str r0, [r4, #0x24] - ldmia sp!, {r4,pc} - .balign 4 -_020B3380: .word FUN_020B3EE0 -_020B3384: .word FUN_020B3E48 -_020B3388: .word FUN_020B3C40 -_020B338C: .word FUN_020B3B90 - arm_func_end FUN_020B3334 - - arm_func_start FUN_020B3390 -FUN_020B3390: ; 0x020B3390 - ldr r2, [r0, #0x70] - str r2, [r1, #0x30] - str r1, [r0, #0x70] - bx lr - arm_func_end FUN_020B3390 - - arm_func_start FUN_020B33A0 -FUN_020B33A0: ; 0x020B33A0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r4, r0 - bl FUN_020B504C - mov r7, #0x0 - str r7, [r4, #0x70] - str r7, [r4, #0x74] - str r7, [r4, #0x78] - str r7, [r4, #0x7c] - str r7, [r4, #0x80] - str r7, [r4, #0x84] - strh r7, [r4, #0x88] - strh r7, [r4, #0x8a] - str r7, [r4, #0x8c] - str r7, [r4, #0x90] - ldr r1, _020B3454 ; =UNK_021CDD70 - strh r7, [r4, #0x94] - ldr r2, _020B3458 ; =0x0000FFFE - ldr r0, _020B345C ; =UNK_02106570 - ldr r6, _020B3460 ; =UNK_021CE4F4 - str r7, [r1, #0x0] - strh r2, [r0, #0x0] - mvn r5, #0x0 - mov r4, #0x10 -_020B3400: - mov r0, r5 - mov r2, r4 - add r1, r6, #0x10 - bl MIi_CpuClearFast - add r7, r7, #0x1 - cmp r7, #0x20 - add r6, r6, #0x20 - blt _020B3400 - ldr ip, _020B3464 ; =UNK_021CDD60 - mov r0, #0x0 - ldr r3, _020B3468 ; =UNK_021CDD64 - ldr r1, _020B346C ; =UNK_021CDDF4 - mov r2, #0x100 - strh r0, [r12, #0x0] - strh r0, [r3, #0x0] - bl MIi_CpuClearFast - ldr r0, _020B3470 ; =UNK_021CDD68 - mov r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B3454: .word UNK_021CDD70 -_020B3458: .word 0x0000FFFE -_020B345C: .word UNK_02106570 -_020B3460: .word UNK_021CE4F4 -_020B3464: .word UNK_021CDD60 -_020B3468: .word UNK_021CDD64 -_020B346C: .word UNK_021CDDF4 -_020B3470: .word UNK_021CDD68 - arm_func_end FUN_020B33A0 - - arm_func_start FUN_020B3474 -FUN_020B3474: ; 0x020B3474 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r0, [r5, #0x8] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - ldr r4, [r5, #0x0] - bl FUN_020B2B58 - ldrh r0, [r5, #0x1e] - ands r0, r0, #0x8 - beq _020B34E4 - ldr r0, _020B354C ; =UNK_021CDD6C - ldrsh r7, [r5, #0x1a] - ldr r0, [r0, #0x0] - ldrsh r6, [r5, #0x18] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B354C ; =UNK_021CDD6C - rsbne r6, r6, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r7, r7, #0x0 - mov r0, r6, lsl #0xc - mov r1, r7, lsl #0xc - mov r2, #0x0 - bl FUN_020B2A08 -_020B34E4: - ldrh r0, [r5, #0x1e] - ands r0, r0, #0x4 - beq _020B3518 - ldrh r0, [r5, #0x1c] - ldr r2, _020B3550 ; =FX_SinCosTable_ - mov r0, r0, asr #0x4 - mov r1, r0, lsl #0x1 - add r0, r1, #0x1 - mov r3, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - ldrsh r0, [r2, r3] - ldrsh r1, [r2, r1] - bl FUN_020B2794 -_020B3518: - ldrh r0, [r5, #0x1e] - ands r0, r0, #0x2 - beq _020B3534 - ldr r0, [r5, #0x10] - ldr r1, [r5, #0x14] - mov r2, #0x1000 - bl FUN_020B28B4 -_020B3534: - mov r0, r4 - bl FUN_020B3554 - mov r0, #0x1 - bl FUN_020B2B08 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B354C: .word UNK_021CDD6C -_020B3550: .word FX_SinCosTable_ - arm_func_end FUN_020B3474 - - arm_func_start FUN_020B3554 -FUN_020B3554: ; 0x020B3554 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrh r0, [r5, #0x4a] - ldr r4, [r5, #0x2c] - cmp r0, #0x0 - bne _020B35C0 - ldr r2, [r5, #0x34] - mvn r0, #0x0 - cmp r2, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B35B0 - ldr r1, _020B36B4 ; =UNK_02106574 - mov r0, r4 - str r2, [r1, #0x0] - bl FUN_020B36C0 - ldr r0, _020B36B4 ; =UNK_02106574 - mvn r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B35B0: - mov r0, r4 - bl FUN_020B36C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B35C0: - bl FUN_020B2B58 - ldrh r0, [r5, #0x4a] - ands r0, r0, #0x8 - beq _020B3610 - ldr r0, _020B36B8 ; =UNK_021CDD6C - ldrsh r7, [r5, #0x46] - ldr r0, [r0, #0x0] - ldrsh r6, [r5, #0x44] - bl FUN_020B4F88 - cmp r0, #0x0 - ldr r0, _020B36B8 ; =UNK_021CDD6C - rsbne r6, r6, #0x0 - ldr r0, [r0, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - rsbne r7, r7, #0x0 - mov r0, r6, lsl #0xc - mov r1, r7, lsl #0xc - mov r2, #0x0 - bl FUN_020B2A08 -_020B3610: - ldrh r0, [r5, #0x4a] - ands r0, r0, #0x4 - beq _020B3644 - ldrh r0, [r5, #0x48] - ldr r2, _020B36BC ; =FX_SinCosTable_ - mov r0, r0, asr #0x4 - mov r1, r0, lsl #0x1 - add r0, r1, #0x1 - mov r3, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - ldrsh r0, [r2, r3] - ldrsh r1, [r2, r1] - bl FUN_020B2794 -_020B3644: - ldrh r0, [r5, #0x4a] - ands r0, r0, #0x2 - beq _020B3660 - ldr r0, [r5, #0x3c] - ldr r1, [r5, #0x40] - mov r2, #0x1000 - bl FUN_020B28B4 -_020B3660: - ldr r2, [r5, #0x34] - mvn r0, #0x0 - cmp r2, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B369C - ldr r1, _020B36B4 ; =UNK_02106574 - mov r0, r4 - str r2, [r1, #0x0] - bl FUN_020B36C0 - ldr r0, _020B36B4 ; =UNK_02106574 - mvn r1, #0x0 - str r1, [r0, #0x0] - b _020B36A4 -_020B369C: - mov r0, r4 - bl FUN_020B36C0 -_020B36A4: - mov r0, #0x1 - bl FUN_020B2B08 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B36B4: .word UNK_02106574 -_020B36B8: .word UNK_021CDD6C -_020B36BC: .word FX_SinCosTable_ - arm_func_end FUN_020B3554 - - arm_func_start FUN_020B36C0 -FUN_020B36C0: ; 0x020B36C0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr r5, _020B3B54 ; =UNK_021CDD6C - mov r10, r0 - ldr r0, [r5, #0x0] - ldr r1, [r0, #0x7c] - str r0, [sp, #0x0] - ldr r9, [r0, #0x70] - ands r0, r1, #0x2 - beq _020B38EC - ldr r0, [r9, #0x14] - cmp r0, #0x0 - beq _020B3840 - ldr r0, _020B3B58 ; =UNK_021CDD68 - mov r1, #0x0 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B3720 - ldr r2, _020B3B5C ; =UNK_02106570 - ldr r0, _020B3B60 ; =0x0000FFFE - ldrh r2, [r2, #0x0] - cmp r2, r0 - movne r0, #0x1 - bne _020B3724 -_020B3720: - mov r0, #0x0 -_020B3724: - cmp r0, #0x0 - beq _020B37AC - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldr r1, [r0, #0x404] - cmp r1, #0x0 - beq _020B3788 - ldrh r1, [r0, #0x0] - ldr r0, _020B3B68 ; =UNK_021CE8F8 - ldr r1, [r0, r1, lsl #0x2] - cmp r1, #0x0 - bne _020B37AC - bl FUN_020B4010 - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r2, _020B3B70 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - ldr r1, _020B3B64 ; =UNK_021CE8F4 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0xd - ldrh r3, [r2, r0] - ldr r4, _020B3B74 ; =UNK_021CE4F4 - ldrh r2, [r1, #0x0] - ldr r0, _020B3B68 ; =UNK_021CE8F8 - add r1, r4, r3, lsl #0x5 - str r1, [r0, r2, lsl #0x2] - b _020B37AC -_020B3788: - bl FUN_020B4010 - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r1, _020B3B70 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - ldr r2, _020B3B74 ; =UNK_021CE4F4 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0xd - ldrh r0, [r1, r0] - add r1, r2, r0, lsl #0x5 -_020B37AC: - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3B6C ; =UNK_021CDD70 - ldreq r3, _020B3B78 ; =UNK_021CDEF4 - ldreq r2, [r0, #0x0] - moveq r0, #0x18 - mlaeq r0, r2, r0, r3 - beq _020B37FC - ldr r2, _020B3B6C ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r2, #0x0] - ldr r3, _020B3B7C ; =UNK_021CDF04 - mul r4, r2, r0 - ldr r2, _020B3B80 ; =UNK_021CDF08 - ldr r3, [r3, r4] - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r2, [r2, r4] - str r3, [r0, #0x10] - str r2, [r0, #0x14] -_020B37FC: - bl FUN_020B4FAC - ldr r1, _020B3B88 ; =UNK_02106574 - mvn r0, #0x0 - ldr r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B3830 - mov r0, r10 - bl FUN_020B4BF4 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B3830: - mov r0, r10 - bl FUN_020B4CDC - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B3840: - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r1, _020B3B8C ; =UNK_021CDD74 - ldr r2, [r0, #0x0] - ldr r0, [sp, #0x0] - ldr r1, [r1, r2, lsl #0x2] - bl FUN_020B4FA4 - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3B6C ; =UNK_021CDD70 - ldreq r2, _020B3B78 ; =UNK_021CDEF4 - ldreq r1, [r0, #0x0] - moveq r0, #0x18 - mlaeq r0, r1, r0, r2 - beq _020B38A8 - ldr r1, _020B3B6C ; =UNK_021CDD70 - mov r0, #0x18 - ldr r1, [r1, #0x0] - ldr r2, _020B3B7C ; =UNK_021CDF04 - mul r3, r1, r0 - ldr r1, _020B3B80 ; =UNK_021CDF08 - ldr r2, [r2, r3] - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r1, [r1, r3] - str r2, [r0, #0x10] - str r1, [r0, #0x14] -_020B38A8: - bl FUN_020B4FC4 - ldr r1, _020B3B88 ; =UNK_02106574 - mvn r0, #0x0 - ldr r1, [r1, #0x0] - cmp r1, r0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B38DC - mov r0, r10 - bl FUN_020B4BF4 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B38DC: - mov r0, r10 - bl FUN_020B4CDC - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} -_020B38EC: - cmp r9, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r11,pc} - ldr r4, _020B3B6C ; =UNK_021CDD70 - ldr fp, _020B3B78 ; =UNK_021CDEF4 - mov r7, #0x0 - mov r6, #0x1 -_020B3908: - ldr r0, [r9, #0x10] - cmp r0, #0x0 - beq _020B3B40 - ldr r0, [r9, #0x14] - cmp r0, #0x0 - beq _020B3A8C - ldr r8, [r5, #0x0] - mov r1, r9 - str r9, [r8, #0x74] - mov r0, r8 - bl FUN_020B4F9C - ldr r1, [r9, #0x28] - ldr r2, [r9, #0x2c] - mov r0, r8 - bl FUN_020B5034 - mov r0, r8 - bl FUN_020B4E0C - ldr r0, _020B3B58 ; =UNK_021CDD68 - mov r1, r7 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _020B3978 - ldr r0, _020B3B5C ; =UNK_02106570 - ldrh r2, [r0, #0x0] - ldr r0, _020B3B60 ; =0x0000FFFE - cmp r2, r0 - movne r0, r6 - bne _020B397C -_020B3978: - mov r0, r7 -_020B397C: - cmp r0, #0x0 - beq _020B3A04 - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldr r0, [r0, #0x404] - cmp r0, #0x0 - beq _020B39E4 - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldrh r1, [r0, #0x0] - add r0, r0, r1, lsl #0x2 - ldr r1, [r0, #0x4] - cmp r1, #0x0 - bne _020B3A04 - bl FUN_020B4010 - ldr r0, _020B3B64 ; =UNK_021CE8F4 - ldr r2, [r4, #0x0] - ldrh r1, [r0, #0x0] - mov r0, r2, lsl #0x10 - mov r2, r0, lsr #0xd - ldr r0, _020B3B70 ; =UNK_021CDDF4 - ldrh r3, [r0, r2] - ldr r0, _020B3B64 ; =UNK_021CE8F4 - add r2, r0, r1, lsl #0x2 - ldr r0, _020B3B74 ; =UNK_021CE4F4 - add r1, r0, r3, lsl #0x5 - str r1, [r2, #0x4] - b _020B3A04 -_020B39E4: - bl FUN_020B4010 - ldr r0, [r4, #0x0] - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0xd - ldr r0, _020B3B70 ; =UNK_021CDDF4 - ldrh r1, [r0, r1] - ldr r0, _020B3B74 ; =UNK_021CE4F4 - add r1, r0, r1, lsl #0x5 -_020B3A04: - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r2, [r4, #0x0] - moveq r0, #0x18 - mlaeq r0, r2, r0, r11 - beq _020B3A44 - ldr r2, [r4, #0x0] - mov r0, #0x18 - mla r8, r2, r0, r11 - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r3, [r8, #0x10] - mov r2, r0 - str r3, [r2, #0x10] - ldr r3, [r8, #0x14] - str r3, [r2, #0x14] -_020B3A44: - bl FUN_020B4FAC - ldr r0, _020B3B88 ; =UNK_02106574 - ldr r1, [r0, #0x0] - mvn r0, #0x0 - cmp r1, r0 - movne r0, r6 - moveq r0, r7 - cmp r0, #0x0 - beq _020B3A74 - mov r0, r10 - bl FUN_020B4BF4 - b _020B3A7C -_020B3A74: - mov r0, r10 - bl FUN_020B4CDC -_020B3A7C: - ldr r0, [r5, #0x0] - str r7, [r0, #0x74] - bl FUN_020B4DA0 - b _020B3B40 -_020B3A8C: - ldr r8, [r5, #0x0] - mov r1, r9 - mov r0, r8 - str r9, [r8, #0x74] - bl FUN_020B4F9C - mov r0, r8 - bl FUN_020B4E0C - ldr r2, [r4, #0x0] - ldr r1, _020B3B8C ; =UNK_021CDD74 - ldr r0, [sp, #0x0] - ldr r1, [r1, r2, lsl #0x2] - bl FUN_020B4FA4 - ldr r0, _020B3B58 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r1, [r4, #0x0] - moveq r0, #0x18 - mlaeq r0, r1, r0, r11 - beq _020B3AFC - ldr r1, [r4, #0x0] - mov r0, #0x18 - mla r3, r1, r0, r11 - ldr r0, _020B3B84 ; =UNK_02106578 - ldr r2, [r3, #0x10] - mov r1, r0 - str r2, [r1, #0x10] - ldr r2, [r3, #0x14] - str r2, [r1, #0x14] -_020B3AFC: - bl FUN_020B4FC4 - ldr r0, _020B3B88 ; =UNK_02106574 - ldr r1, [r0, #0x0] - mvn r0, #0x0 - cmp r1, r0 - movne r0, r6 - moveq r0, r7 - cmp r0, #0x0 - beq _020B3B2C - mov r0, r10 - bl FUN_020B4BF4 - b _020B3B34 -_020B3B2C: - mov r0, r10 - bl FUN_020B4CDC -_020B3B34: - ldr r0, [r5, #0x0] - str r7, [r0, #0x74] - bl FUN_020B4DA0 -_020B3B40: - ldr r9, [r9, #0x30] - cmp r9, #0x0 - bne _020B3908 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B3B54: .word UNK_021CDD6C -_020B3B58: .word UNK_021CDD68 -_020B3B5C: .word UNK_02106570 -_020B3B60: .word 0x0000FFFE -_020B3B64: .word UNK_021CE8F4 -_020B3B68: .word UNK_021CE8F8 -_020B3B6C: .word UNK_021CDD70 -_020B3B70: .word UNK_021CDDF4 -_020B3B74: .word UNK_021CE4F4 -_020B3B78: .word UNK_021CDEF4 -_020B3B7C: .word UNK_021CDF04 -_020B3B80: .word UNK_021CDF08 -_020B3B84: .word UNK_02106578 -_020B3B88: .word UNK_02106574 -_020B3B8C: .word UNK_021CDD74 - arm_func_end FUN_020B36C0 - - arm_func_start FUN_020B3B90 -FUN_020B3B90: ; 0x020B3B90 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - ldr r0, _020B3C24 ; =UNK_021CDD6C - mov r12, r1 - ldr r0, [r0, #0x0] - mov r3, r2 - ldr r1, [r0, #0x74] - ldr r2, [r1, #0x44] - cmp r2, #0x0 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r6,pc} - ldr r2, _020B3C28 ; =UNK_021CDD68 - ldr r2, [r2, #0x0] - cmp r2, #0x0 - ldreq r2, _020B3C2C ; =UNK_021CDD70 - ldreq r4, _020B3C30 ; =UNK_021CDEF4 - ldreq lr, [r2, #0x0] - moveq r2, #0x18 - mlaeq r6, lr, r2, r4 - beq _020B3C0C - ldr lr, _020B3C2C ; =UNK_021CDD70 - mov r2, #0x18 - ldr lr, [lr, #0x0] - ldr r4, _020B3C34 ; =UNK_021CDF04 - mul r5, lr, r2 - ldr r2, _020B3C38 ; =UNK_021CDF08 - ldr r4, [r4, r5] - ldr r6, _020B3C3C ; =UNK_02106578 - ldr r2, [r2, r5] - str r4, [r6, #0x10] - str r2, [r6, #0x14] -_020B3C0C: - str r6, [sp, #0x0] - ldr lr, [r1, #0x44] - mov r2, r12 - blx lr - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B3C24: .word UNK_021CDD6C -_020B3C28: .word UNK_021CDD68 -_020B3C2C: .word UNK_021CDD70 -_020B3C30: .word UNK_021CDEF4 -_020B3C34: .word UNK_021CDF04 -_020B3C38: .word UNK_021CDF08 -_020B3C3C: .word UNK_02106578 - arm_func_end FUN_020B3B90 - - arm_func_start FUN_020B3C40 -FUN_020B3C40: ; 0x020B3C40 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x8 - ldr r3, _020B3E2C ; =UNK_021CDD6C - add r4, r0, #0x38 - ldr r0, [r3, #0x0] - mov r6, r1 - mov r5, r2 - bl FUN_020B278C - cmp r0, #0x0 - beq _020B3C90 - ldrh r1, [r4, #0x4] - and r1, r1, #0xf000 - mov r1, r1, lsl #0x4 - mov r1, r1, lsr #0x10 - bl FUN_020B10B0 - ldr r1, [r4, #0x4] - and r0, r0, #0xf - bic r1, r1, #0xf000 - orr r0, r1, r0, lsl #0xc - str r0, [r4, #0x4] -_020B3C90: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - cmp r0, #0x0 - beq _020B3DA4 - ldr r0, [r1, #0x84] - ands r0, r0, #0x1 - beq _020B3CC8 - ldrh r0, [r1, #0x88] - ldr r1, [r4, #0x4] - bic r1, r1, #0xc00 - and r0, r0, #0x3 - orr r0, r1, r0, lsl #0xa - str r0, [r4, #0x4] -_020B3CC8: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x2 - beq _020B3CF4 - ldrh r0, [r1, #0x8a] - ldr r1, [r4, #0x4] - bic r1, r1, #0xf000 - and r0, r0, #0xf - orr r0, r1, r0, lsl #0xc - str r0, [r4, #0x4] -_020B3CF4: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x10 - beq _020B3D2C - ldr r2, [r4, #0x4] - ldrh r0, [r1, #0x94] - mov r1, r2, lsl #0x10 - bic r2, r2, #0xf000 - add r0, r0, r1, lsr #0x1c - and r0, r0, #0xf - and r0, r0, #0xf - orr r0, r2, r0, lsl #0xc - str r0, [r4, #0x4] -_020B3D2C: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x4 - beq _020B3D60 - ldr r0, [r1, #0x90] - cmp r0, #0x0 - ldrne r0, [r4, #0x0] - orrne r0, r0, #0x1000 - strne r0, [r4, #0x0] - ldreq r0, [r4, #0x0] - biceq r0, r0, #0x1000 - streq r0, [r4, #0x0] -_020B3D60: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x84] - ands r0, r0, #0x8 - beq _020B3DA4 - ldr r0, [r4, #0x0] - ldrh r2, [r4, #0x4] - ldr r1, [r1, #0x8c] - bic r0, r0, #0xc00 - orr r0, r0, r1, lsl #0xa - str r0, [r4, #0x0] - ldrh r0, [r4, #0x4] - and r1, r2, #0xf000 - mov r1, r1, asr #0xc - bic r0, r0, #0xf000 - orr r0, r0, r1, lsl #0xc - strh r0, [r4, #0x4] -_020B3DA4: - ldr r0, _020B3E2C ; =UNK_021CDD6C - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x74] - ldr r2, [r1, #0x40] - cmp r2, #0x0 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r6,pc} - ldr r2, _020B3E30 ; =UNK_021CDD68 - ldr r2, [r2, #0x0] - cmp r2, #0x0 - ldreq r2, _020B3E34 ; =UNK_021CDD70 - ldreq r4, _020B3E38 ; =UNK_021CDEF4 - ldreq r3, [r2, #0x0] - moveq r2, #0x18 - mlaeq r4, r3, r2, r4 - beq _020B3E10 - ldr r3, _020B3E34 ; =UNK_021CDD70 - mov r2, #0x18 - ldr r4, [r3, #0x0] - ldr r3, _020B3E3C ; =UNK_021CDF04 - mul r12, r4, r2 - ldr r2, _020B3E40 ; =UNK_021CDF08 - ldr r3, [r3, r12] - ldr r4, _020B3E44 ; =UNK_02106578 - ldr r2, [r2, r12] - str r3, [r4, #0x10] - str r2, [r4, #0x14] -_020B3E10: - str r4, [sp, #0x0] - ldr r4, [r1, #0x40] - mov r2, r6 - mov r3, r5 - blx r4 - add sp, sp, #0x8 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B3E2C: .word UNK_021CDD6C -_020B3E30: .word UNK_021CDD68 -_020B3E34: .word UNK_021CDD70 -_020B3E38: .word UNK_021CDEF4 -_020B3E3C: .word UNK_021CDF04 -_020B3E40: .word UNK_021CDF08 -_020B3E44: .word UNK_02106578 - arm_func_end FUN_020B3C40 - - arm_func_start FUN_020B3E48 -FUN_020B3E48: ; 0x020B3E48 - stmdb sp!, {r4,lr} - ldr r0, _020B3EC4 ; =UNK_021CDD6C - mov r2, r1 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x74] - ldr r3, [r1, #0x3c] - cmp r3, #0x0 - ldmeqia sp!, {r4,pc} - ldr r3, _020B3EC8 ; =UNK_021CDD68 - ldr r3, [r3, #0x0] - cmp r3, #0x0 - ldreq r3, _020B3ECC ; =UNK_021CDD70 - ldreq lr, _020B3ED0 ; =UNK_021CDEF4 - ldreq r12, [r3, #0x0] - moveq r3, #0x18 - mlaeq r3, r12, r3, lr - beq _020B3EB8 - ldr ip, _020B3ECC ; =UNK_021CDD70 - mov r3, #0x18 - ldr r12, [r12, #0x0] - ldr lr, _020B3ED4 ; =UNK_021CDF04 - mul r4, r12, r3 - ldr ip, _020B3ED8 ; =UNK_021CDF08 - ldr lr, [lr, r4] - ldr r3, _020B3EDC ; =UNK_02106578 - ldr r12, [r12, r4] - str lr, [r3, #0x10] - str r12, [r3, #0x14] -_020B3EB8: - ldr r12, [r1, #0x3c] - blx r12 - ldmia sp!, {r4,pc} - .balign 4 -_020B3EC4: .word UNK_021CDD6C -_020B3EC8: .word UNK_021CDD68 -_020B3ECC: .word UNK_021CDD70 -_020B3ED0: .word UNK_021CDEF4 -_020B3ED4: .word UNK_021CDF04 -_020B3ED8: .word UNK_021CDF08 -_020B3EDC: .word UNK_02106578 - arm_func_end FUN_020B3E48 - - arm_func_start FUN_020B3EE0 -FUN_020B3EE0: ; 0x020B3EE0 - stmdb sp!, {r4-r6,lr} - ldr r2, _020B3FF4 ; =UNK_021CDD6C - mov r6, r0 - ldr r0, [r2, #0x0] - mov r5, r1 - ldr r4, [r0, #0x74] - ldr r0, [r4, #0x34] - cmp r0, #0x0 - beq _020B3F7C - ldr r0, _020B3FF8 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3FFC ; =UNK_021CDD70 - ldreq r1, _020B4000 ; =UNK_021CDEF4 - ldreq r2, [r0, #0x0] - moveq r0, #0x18 - mlaeq r1, r2, r0, r1 - beq _020B3F54 - ldr r1, _020B3FFC ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr r1, _020B4004 ; =UNK_021CDF04 - mul r3, r2, r0 - ldr r0, _020B4008 ; =UNK_021CDF08 - ldr r2, [r1, r3] - ldr r1, _020B400C ; =UNK_02106578 - ldr r0, [r0, r3] - str r2, [r1, #0x10] - str r0, [r1, #0x14] -_020B3F54: - ldr r3, [r4, #0x34] - mov r0, r5 - mov r2, r4 - blx r3 - cmp r0, #0x0 - moveq r0, #0x0 - streq r0, [r6, #0x30] - ldmeqia sp!, {r4-r6,pc} - mov r0, #0x1 - str r0, [r6, #0x30] -_020B3F7C: - ldr r0, [r4, #0x38] - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r0, _020B3FF8 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldreq r0, _020B3FFC ; =UNK_021CDD70 - ldreq r2, _020B4000 ; =UNK_021CDEF4 - ldreq r1, [r0, #0x0] - moveq r0, #0x18 - mlaeq r3, r1, r0, r2 - beq _020B3FD8 - ldr r1, _020B3FFC ; =UNK_021CDD70 - mov r0, #0x18 - ldr r2, [r1, #0x0] - ldr r1, _020B4004 ; =UNK_021CDF04 - mul r6, r2, r0 - ldr r0, _020B4008 ; =UNK_021CDF08 - ldr r1, [r1, r6] - ldr r3, _020B400C ; =UNK_02106578 - ldr r0, [r0, r6] - str r1, [r3, #0x10] - str r0, [r3, #0x14] -_020B3FD8: - ldr r0, _020B3FF4 ; =UNK_021CDD6C - ldr r6, [r4, #0x38] - ldr r0, [r0, #0x0] - mov r1, r4 - mov r2, r5 - blx r6 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B3FF4: .word UNK_021CDD6C -_020B3FF8: .word UNK_021CDD68 -_020B3FFC: .word UNK_021CDD70 -_020B4000: .word UNK_021CDEF4 -_020B4004: .word UNK_021CDF04 -_020B4008: .word UNK_021CDF08 -_020B400C: .word UNK_02106578 - arm_func_end FUN_020B3EE0 - - arm_func_start FUN_020B4010 -FUN_020B4010: ; 0x020B4010 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r0, _020B4154 ; =UNK_021CDD70 - ldr r1, _020B4158 ; =UNK_021CDDF4 - ldr r0, [r0, #0x0] - mov r2, #0x1 - mov r0, r0, lsl #0x10 - add r3, r1, r0, lsr #0xd - ldrh r0, [r3, #0x4] - cmp r0, #0x1 - beq _020B4044 - cmp r0, #0x2 - movne r2, #0x0 -_020B4044: - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, _020B415C ; =UNK_021CDD60 - mov r2, #0x10 - ldrh r4, [r0, #0x0] - cmp r4, #0x1f - addcc r1, r4, #0x1 - strcch r1, [r0, #0x0] - ldr r0, _020B4160 ; =UNK_021CE4F4 - ldrh r5, [r3, #0x2] - add r0, r0, r4, lsl #0x5 - add r1, r0, #0x10 - mvn r0, #0x0 - strh r4, [r3, #0x0] - bl MIi_CpuClearFast - ldr r0, _020B4154 ; =UNK_021CDD70 - ldr r1, _020B4164 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - ldr r2, [r1, #0x0] - mov r1, r0, lsl #0x10 - cmp r2, #0x0 - ldr r3, _020B4158 ; =UNK_021CDDF4 - mov r1, r1, lsr #0xd - ldrh r1, [r3, r1] - ldr r3, _020B4160 ; =UNK_021CE4F4 - moveq r2, #0x18 - add r1, r3, r1, lsl #0x5 - ldreq r3, _020B4168 ; =UNK_021CE1F4 - mlaeq r12, r0, r2, r3 - beq _020B40E4 - mov r2, #0x18 - mul r3, r0, r2 - ldr r2, _020B416C ; =UNK_021CDF04 - ldr r0, _020B4170 ; =UNK_021CDF08 - ldr r2, [r2, r3] - ldr ip, _020B4174 ; =UNK_02106578 - ldr r0, [r0, r3] - str r2, [r12, #0x10] - str r0, [r12, #0x14] -_020B40E4: - ldr r2, [r12, #0x0] - ldr r0, _020B4154 ; =UNK_021CDD70 - str r2, [r1, #0x0] - ldr r2, [r12, #0x4] - str r2, [r1, #0x4] - ldr r2, [r12, #0x8] - str r2, [r1, #0x8] - ldr r2, [r12, #0xc] - str r2, [r1, #0xc] - ldr r0, [r0, #0x0] - mov r0, r0, lsl #0x10 - movs lr, r0, lsr #0x10 - addmi sp, sp, #0x4 - ldmmiia sp!, {r4-r5,pc} - ldr r3, _020B4158 ; =UNK_021CDDF4 - mov r0, #0x3 -_020B4124: - add r2, r3, lr, lsl #0x3 - ldrh r1, [r2, #0x2] - mov r12, lr, lsl #0x3 - cmp r5, r1 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r5,pc} - strh r0, [r2, #0x4] - strh r4, [r3, r12] - subs lr, lr, #0x1 - bpl _020B4124 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4154: .word UNK_021CDD70 -_020B4158: .word UNK_021CDDF4 -_020B415C: .word UNK_021CDD60 -_020B4160: .word UNK_021CE4F4 -_020B4164: .word UNK_021CDD68 -_020B4168: .word UNK_021CE1F4 -_020B416C: .word UNK_021CDF04 -_020B4170: .word UNK_021CDF08 -_020B4174: .word UNK_02106578 - arm_func_end FUN_020B4010 - - arm_func_start FUN_020B4178 -FUN_020B4178: ; 0x020B4178 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r0, _020B4220 ; =UNK_021CDD68 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020B41B8 - ldr r1, _020B4224 ; =UNK_021CDD70 - mov r0, #0x18 - ldr r12, [r1, #0x0] - ldr r1, _020B4228 ; =UNK_021CDF04 - mul r3, r12, r0 - mov r2, #0x0 - ldr r0, _020B422C ; =UNK_021CDF08 - str r2, [r1, r3] - str r2, [r0, r3] - b _020B420C -_020B41B8: - ldr r0, _020B4224 ; =UNK_021CDD70 - mov lr, #0x18 - ldr r1, [r0, #0x0] - ldr r4, _020B4230 ; =UNK_021CDEF4 - mul r3, r1, lr - mov r2, #0x1000 - str r2, [r4, r3] - add r5, r4, r3 - mov r1, #0x0 - str r1, [r5, #0x4] - str r1, [r5, #0x8] - str r2, [r5, #0xc] - str r1, [r5, #0x10] - str r1, [r5, #0x14] - ldr r12, [r0, #0x0] - ldr r4, _020B4234 ; =UNK_021CE1F4 - ldmia r5!, {r0-r3} - mla lr, r12, lr, r4 - stmia lr!, {r0-r3} - ldmia r5, {r0-r1} - stmia lr, {r0-r1} -_020B420C: - ldr r0, _020B4238 ; =UNK_021CDD74 - mov r1, #0x0 - str r1, [r0, r12, lsl #0x2] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4220: .word UNK_021CDD68 -_020B4224: .word UNK_021CDD70 -_020B4228: .word UNK_021CDF04 -_020B422C: .word UNK_021CDF08 -_020B4230: .word UNK_021CDEF4 -_020B4234: .word UNK_021CE1F4 -_020B4238: .word UNK_021CDD74 - arm_func_end FUN_020B4178 - - arm_func_start FUN_020B423C -FUN_020B423C: ; 0x020B423C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x1c - ldr r4, [r0, #0x4] - ldr r3, [r1, #0x8] - mov r12, r2 - smull r6, r5, r4, r3 - ldr r4, [r0, #0x0] - ldr r3, [r1, #0x0] - cmp r12, r1 - smlal r6, r5, r4, r3 - mov r3, r6, lsr #0xc - addeq r2, sp, #0x0 - orr r3, r3, r5, lsl #0x14 - str r3, [r2, #0x0] - ldr r4, [r0, #0x4] - ldr r3, [r1, #0xc] - ldr r5, [r0, #0x0] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x4] - add lr, sp, #0x0 - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - str r3, [r2, #0x4] - ldr r4, [r0, #0xc] - ldr r3, [r1, #0x8] - ldr r5, [r0, #0x8] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x0] - cmp r2, lr - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - str r3, [r2, #0x8] - ldr r4, [r0, #0xc] - ldr r3, [r1, #0xc] - ldr r5, [r0, #0x8] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x4] - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - str r3, [r2, #0xc] - ldr r4, [r0, #0x14] - ldr r3, [r1, #0x8] - ldr r5, [r0, #0x10] - smull r7, r6, r4, r3 - ldr r3, [r1, #0x0] - ldr r4, [r1, #0x10] - smlal r7, r6, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - add r3, r4, r3 - str r3, [r2, #0x10] - ldr r4, [r0, #0x14] - ldr r3, [r1, #0xc] - ldr r5, [r0, #0x10] - ldr r0, [r1, #0x4] - smull r6, r3, r4, r3 - smlal r6, r3, r5, r0 - mov r0, r6, lsr #0xc - ldr r1, [r1, #0x14] - orr r0, r0, r3, lsl #0x14 - add r0, r1, r0 - str r0, [r2, #0x14] - ldmeqia lr!, {r0-r3} - stmeqia r12!, {r0-r3} - ldmeqia lr, {r0-r1} - stmeqia r12, {r0-r1} - add sp, sp, #0x1c - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B423C - - arm_func_start FUN_020B4358 -FUN_020B4358: ; 0x020B4358 - stmdb sp!, {r4,lr} - ldr r2, _020B43A0 ; =UNK_021CED04 - mov r1, #0x30 - ldr r2, [r2, #0x0] - mla r4, r0, r1, r2 - mov r0, r4 - bl FUN_020B10CC - mov r0, #0x0 - str r0, [r4, #0xc] - str r0, [r4, #0x10] - str r0, [r4, #0x14] - str r0, [r4, #0x18] - str r0, [r4, #0x1c] - str r0, [r4, #0x20] - str r0, [r4, #0x24] - str r0, [r4, #0x28] - str r0, [r4, #0x2c] - ldmia sp!, {r4,pc} - .balign 4 -_020B43A0: .word UNK_021CED04 - arm_func_end FUN_020B4358 - - arm_func_start FUN_020B43A4 -FUN_020B43A4: ; 0x020B43A4 - ldr r1, _020B43F8 ; =UNK_021CED00 - mov r0, #0x0 - ldr r3, [r1, #0x0] - cmp r3, #0x0 - bls _020B43F0 - ldr r1, _020B43FC ; =UNK_021CED04 - ldr r2, [r1, #0x0] - mov r12, r2 -_020B43C4: - ldr r1, [r12, #0x1c] - cmp r1, #0x1 - movne r1, #0x30 - mlane r1, r0, r1, r2 - movne r2, #0x1 - strne r2, [r1, #0x1c] - bxne lr - add r0, r0, #0x1 - cmp r0, r3 - add r12, r12, #0x30 - blo _020B43C4 -_020B43F0: - mvn r0, #0x0 - bx lr - .balign 4 -_020B43F8: .word UNK_021CED00 -_020B43FC: .word UNK_021CED04 - arm_func_end FUN_020B43A4 - - arm_func_start FUN_020B4400 -FUN_020B4400: ; 0x020B4400 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r1 - mov r4, r2 - bl FUN_020B469C - mvn r1, #0x0 - str r1, [r0, #0x24] - str r5, [r0, #0x28] - str r4, [r0, #0x2c] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020B4400 - - arm_func_start FUN_020B442C -FUN_020B442C: ; 0x020B442C - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r0, _020B4558 ; =UNK_021CED00 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addls sp, sp, #0x14 - ldmlsia sp!, {r4-r11,pc} - ldr r0, [sp, #0x0] - mov r5, #0x1 - str r0, [sp, #0x4] - mov r11, r0 - str r0, [sp, #0x8] - str r0, [sp, #0xc] -_020B4468: - ldr r0, _020B455C ; =UNK_021CED04 - ldr r1, [r0, #0x0] - ldr r0, [sp, #0x4] - add r8, r1, r0 - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - beq _020B4528 - ldr r9, [sp, #0x8] - mov r0, r9 - cmp r0, #0x3 - bge _020B4520 - add r4, r8, #0x24 -_020B4498: - mov r6, r5, lsl r9 - mov r1, r11 - ldr r0, [r8, #0x24] - ands r0, r0, r6 - beq _020B44B8 - ldr r0, [r8, #0x20] - ands r0, r0, r6 - movne r1, r5 -_020B44B8: - cmp r1, #0x0 - beq _020B4514 - ldr r0, _020B4560 ; =UNK_020FF8C4 - cmp r9, #0x0 - ldr r7, [r0, r9, lsl #0x2] - ldreq r10, [r8, #0x14] - mov r0, r8 - mov r1, r9 - ldrne r10, [r8, #0x10] - bl FUN_020B10BC - mov r1, r0 - mov r0, r7 - ldr r7, _020B4564 ; =UNK_021CECFC - ldr r2, [r8, #0x28] - ldr r3, [r8, #0x2c] - ldr r7, [r7, #0x0] - add r2, r10, r2 - blx r7 - cmp r0, #0x0 - ldrne r1, [r4, #0x0] - mvnne r0, r6 - andne r0, r1, r0 - strne r0, [r4, #0x0] -_020B4514: - add r9, r9, #0x1 - cmp r9, #0x3 - blt _020B4498 -_020B4520: - ldr r0, [sp, #0xc] - str r0, [r8, #0x20] -_020B4528: - ldr r0, _020B4558 ; =UNK_021CED00 - ldr r1, [r0, #0x0] - ldr r0, [sp, #0x0] - add r0, r0, #0x1 - str r0, [sp, #0x0] - cmp r0, r1 - ldr r0, [sp, #0x4] - add r0, r0, #0x30 - str r0, [sp, #0x4] - blo _020B4468 - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B4558: .word UNK_021CED00 -_020B455C: .word UNK_021CED04 -_020B4560: .word UNK_020FF8C4 -_020B4564: .word UNK_021CECFC - arm_func_end FUN_020B442C - - arm_func_start FUN_020B4568 -FUN_020B4568: ; 0x020B4568 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr ip, _020B45E4 ; =UNK_021CECFC - movs r6, r1 - ldr r1, _020B45E8 ; =UNK_021CED00 - ldr r3, _020B45EC ; =UNK_021CED04 - mov r7, r0 - str r2, [r12, #0x0] - mov r5, #0x0 - addeq sp, sp, #0x4 - str r7, [r3, #0x0] - str r6, [r1, #0x0] - ldmeqia sp!, {r4-r7,pc} - mov r4, r5 -_020B45A0: - mov r0, r7 - bl FUN_020B10CC - str r4, [r7, #0xc] - str r4, [r7, #0x10] - str r4, [r7, #0x14] - str r4, [r7, #0x18] - str r4, [r7, #0x1c] - str r4, [r7, #0x20] - str r4, [r7, #0x24] - str r4, [r7, #0x28] - add r5, r5, #0x1 - str r4, [r7, #0x2c] - cmp r5, r6 - add r7, r7, #0x30 - blo _020B45A0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B45E4: .word UNK_021CECFC -_020B45E8: .word UNK_021CED00 -_020B45EC: .word UNK_021CED04 - arm_func_end FUN_020B4568 - - arm_func_start FUN_020B45F0 -FUN_020B45F0: ; 0x020B45F0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldr ip, _020B4698 ; =UNK_021CED04 - mov r4, #0x30 - ldr r12, [r12, #0x0] - mov r7, r1 - mla r4, r0, r4, r12 - mov r0, r4 - mov r6, r2 - mov r5, r3 - bl FUN_020B10CC - mvn r0, #0x0 - cmp r7, r0 - beq _020B4638 - mov r0, r4 - mov r2, r7 - mov r1, #0x0 - bl FUN_020B10C4 -_020B4638: - mvn r0, #0x0 - cmp r6, r0 - beq _020B4654 - mov r0, r4 - mov r2, r6 - mov r1, #0x1 - bl FUN_020B10C4 -_020B4654: - mvn r0, #0x0 - cmp r5, r0 - beq _020B4670 - mov r0, r4 - mov r2, r5 - mov r1, #0x2 - bl FUN_020B10C4 -_020B4670: - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x1c] - str r1, [r4, #0xc] - ldr r1, [sp, #0x20] - str r0, [r4, #0x10] - ldr r0, [sp, #0x24] - str r1, [r4, #0x14] - str r0, [r4, #0x18] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B4698: .word UNK_021CED04 - arm_func_end FUN_020B45F0 - - arm_func_start FUN_020B469C -FUN_020B469C: ; 0x020B469C - ldr r2, _020B46B0 ; =UNK_021CED04 - mov r1, #0x30 - ldr r2, [r2, #0x0] - mla r0, r1, r0, r2 - bx lr - .balign 4 -_020B46B0: .word UNK_021CED04 - arm_func_end FUN_020B469C - - arm_func_start FUN_020B46B4 -FUN_020B46B4: ; 0x020B46B4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x1c - add r12, sp, #0x4 - mov r5, r1 - mov r4, r2 - mov r7, r3 - mov r6, r0 - ldr r1, [sp, #0x30] - ldr r2, [sp, #0x34] - ldr r3, [sp, #0x38] - mov r0, r7 - str r12, [sp, #0x0] - bl FUN_020B498C - ldr r2, [r7, #0x0] - and r1, r2, #0x300 - cmp r1, #0x100 - beq _020B4708 - cmp r1, #0x300 - beq _020B4708 - and r0, r2, #0x30000000 - orr r1, r1, r0 -_020B4708: - cmp r1, #0x300 - bne _020B478C - ldr r0, _020B4914 ; =0xC000C000 - ldr r1, _020B4918 ; =UNK_021CED08 - and r0, r2, r0 - and r2, r0, #0xc0000000 - mov r12, r2, lsr #0x1e - and r0, r0, #0xc000 - mov lr, r0, asr #0xe - ldr r3, _020B491C ; =UNK_020FF8AC - ldr r0, [r1, #0x0] - ldr r2, _020B4920 ; =UNK_020FF894 - cmp r0, #0x0 - ldrne r0, _020B4924 ; =UNK_021CED10 - mov r12, r12, lsl #0x1 - add r1, r2, lr, lsl #0x3 - add r3, r3, lr, lsl #0x3 - ldrh r2, [r12, r3] - ldrh r1, [r12, r1] - ldrne r0, [r0, #0x0] - mov r2, r2, asr #0x1 - addne r3, r0, r4, lsl #0xc - mov r1, r1, asr #0x1 - add r0, r5, r1 - add r2, r6, r2 - ldr r1, _020B4928 ; =0x04000470 - mov r2, r2, lsl #0xc - str r2, [r1, #0x0] - mov r0, r0, lsl #0xc - moveq r3, r4, lsl #0xc - str r0, [r1, #0x0] - str r3, [r1, #0x0] - b _020B47C0 -_020B478C: - ldr r0, _020B4918 ; =UNK_021CED08 - ldr r1, _020B4928 ; =0x04000470 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldrne r0, _020B4924 ; =UNK_021CED10 - ldrne r0, [r0, #0x0] - addne r2, r0, r4, lsl #0xc - mov r0, r6, lsl #0xc - str r0, [r1, #0x0] - mov r0, r5, lsl #0xc - moveq r2, r4, lsl #0xc - str r0, [r1, #0x0] - str r2, [r1, #0x0] -_020B47C0: - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x18] - ldr r2, _020B492C ; =0x0400046C - mov r0, r0, lsl #0xc - str r0, [r2, #0x0] - mov r0, r1, lsl #0xc - str r0, [r2, #0x0] - mov r1, #0x1000 - str r1, [r2, #0x0] - ldr r0, _020B4930 ; =0x04000500 - mov r1, #0x1 - str r1, [r0, #0x0] - ldr r0, [sp, #0x4] - ldr r1, [sp, #0x10] - mov r0, r0, lsl #0x8 - mov r1, r1, lsl #0x8 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r2, r2, r0, lsl #0x10 - ldr r1, _020B4934 ; =0x04000488 - ldr r0, _020B4938 ; =0x04000490 - str r2, [r1, #0x0] - mov r2, #0x10000 - str r2, [r0, #0x0] - ldr r2, [sp, #0xc] - ldr r3, [sp, #0x10] - mov r2, r2, lsl #0x8 - mov r3, r3, lsl #0x8 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r4, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r3, r4, r2, lsl #0x10 - ldr r2, _020B493C ; =0x00010040 - str r3, [r1, #0x0] - str r2, [r0, #0x0] - ldr r2, [sp, #0xc] - ldr r3, [sp, #0x8] - mov r2, r2, lsl #0x8 - mov r3, r3, lsl #0x8 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r4, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r2, r4, r2, lsl #0x10 - str r2, [r1, #0x0] - mov r2, #0x40 - str r2, [r0, #0x0] - ldr r2, [sp, #0x4] - ldr r3, [sp, #0x8] - mov r2, r2, lsl #0x8 - mov r3, r3, lsl #0x8 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r4, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r2, r4, r2, lsl #0x10 - str r2, [r1, #0x0] - mov r2, #0x0 - str r2, [r0, #0x0] - ldr r1, _020B4940 ; =0x04000504 - ldr r0, _020B4918 ; =UNK_021CED08 - str r2, [r1, #0x0] - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4-r7,pc} - ldr r1, _020B4924 ; =UNK_021CED10 - ldr r0, _020B4944 ; =UNK_02106590 - ldr r2, [r1, #0x0] - ldr r0, [r0, #0x0] - add r0, r2, r0 - str r0, [r1, #0x0] - add sp, sp, #0x1c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B4914: .word 0xC000C000 -_020B4918: .word UNK_021CED08 -_020B491C: .word UNK_020FF8AC -_020B4920: .word UNK_020FF894 -_020B4924: .word UNK_021CED10 -_020B4928: .word 0x04000470 -_020B492C: .word 0x0400046C -_020B4930: .word 0x04000500 -_020B4934: .word 0x04000488 -_020B4938: .word 0x04000490 -_020B493C: .word 0x00010040 -_020B4940: .word 0x04000504 -_020B4944: .word UNK_02106590 - arm_func_end FUN_020B46B4 - - arm_func_start FUN_020B4948 -FUN_020B4948: ; 0x020B4948 - ldr r0, _020B4954 ; =UNK_02106590 - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020B4954: .word UNK_02106590 - arm_func_end FUN_020B4948 - - arm_func_start FUN_020B4958 -FUN_020B4958: ; 0x020B4958 - ldr r1, _020B4964 ; =UNK_02106590 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020B4964: .word UNK_02106590 - arm_func_end FUN_020B4958 - - arm_func_start FUN_020B4968 -FUN_020B4968: ; 0x020B4968 - ldr r0, _020B4978 ; =UNK_021CED10 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - .balign 4 -_020B4978: .word UNK_021CED10 - arm_func_end FUN_020B4968 - - arm_func_start FUN_020B497C -FUN_020B497C: ; 0x020B497C - ldr r1, _020B4988 ; =UNK_021CED08 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020B4988: .word UNK_021CED08 - arm_func_end FUN_020B497C - - arm_func_start FUN_020B498C -FUN_020B498C: ; 0x020B498C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0xc - mov r6, r0 - ldr r4, [r6, #0x0] - ldr r0, _020B4BCC ; =0xC000C000 - ldr r5, [r6, #0x4] - and r4, r4, r0 - and r0, r4, #0xc0000000 - and r4, r4, #0xc000 - mov lr, r0, lsr #0x1e - ldr r0, _020B4BD0 ; =UNK_020FF8AC - mov r12, r4, asr #0xe - ldr r8, _020B4BD4 ; =UNK_020FF894 - mov r4, lr, lsl #0x1 - add r0, r0, r12, lsl #0x3 - ldrh r9, [r4, r0] - ldr r0, [sp, #0x28] - mov r5, r5, lsl #0x16 - mov r5, r5, lsr #0x16 - mov r7, r5, lsl #0x10 - str r9, [r0, #0x10] - add r5, r8, r12, lsl #0x3 - ldrh r8, [r4, r5] - mov r5, r1 - mov r4, r3 - str r8, [r0, #0x14] - ldr r1, [r5, #0x14] - mov r7, r7, lsr #0x10 - cmp r1, #0x0 - bne _020B4A74 - ldr r1, [r5, #0x8] - mov r2, r2, lsr #0x3 - orr r1, r2, r1, lsl #0x1a - ldr r2, [r5, #0x0] - orr r1, r1, #0x40000000 - ldr r3, [r5, #0x4] - orr r1, r1, r2, lsl #0x14 - orr r2, r1, r3, lsl #0x17 - ldr r8, [r5, #0x10] - ldr r1, _020B4BD8 ; =0x040004A8 - orr r2, r2, r8, lsl #0x1d - str r2, [r1, #0x0] - ldr r1, [r5, #0x8] - ldr r2, [r5, #0x0] - cmp r1, #0x4 - moveq r1, r7, lsl #0xf - moveq r7, r1, lsr #0x10 - ldr r1, _020B4BDC ; =UNK_020FF8D8 - ldr r1, [r1, r2, lsl #0x2] - sub r1, r1, #0x1 - and r1, r7, r1 - mov r1, r1, lsl #0xf - str r1, [r0, #0x0] - ldr r1, [r5, #0x0] - mov r1, r7, asr r1 - mov r1, r1, lsl #0xf - str r1, [r0, #0x4] - b _020B4AE0 -_020B4A74: - and r1, r1, #0x700000 - mov r1, r1, asr #0x14 - mov r12, r12, lsl #0x10 - add r1, r1, #0x5 - ldr r3, [r5, #0x8] - mov lr, lr, lsl #0x10 - ldr sb, _020B4BE0 ; =UNK_020FF8F8 - mov r12, r12, lsr #0x10 - ldr r8, _020B4BE4 ; =UNK_020FF928 - add r1, r2, r7, lsl r1 - mov r2, r3, lsl #0x1a - orr r3, r2, r1, lsr #0x3 - mov r7, lr, lsr #0x10 - add r2, r9, r12, lsl #0x4 - add r1, r8, r12, lsl #0x4 - ldr r2, [r2, r7, lsl #0x2] - orr r3, r3, #0x40000000 - ldr r1, [r1, r7, lsl #0x2] - orr r2, r3, r2, lsl #0x14 - ldr r3, [r5, #0x10] - orr r2, r2, r1, lsl #0x17 - ldr r1, _020B4BD8 ; =0x040004A8 - orr r2, r2, r3, lsl #0x1d - str r2, [r1, #0x0] - mov r1, #0x0 - str r1, [r0, #0x0] - str r1, [r0, #0x4] -_020B4AE0: - ldr r2, [r0, #0x0] - ldr r1, [r0, #0x10] - add r1, r2, r1, lsl #0xc - str r1, [r0, #0x8] - ldr r2, [r0, #0x4] - ldr r1, [r0, #0x14] - add r1, r2, r1, lsl #0xc - str r1, [r0, #0xc] - ldr r1, [r6, #0x0] - mov r2, r1, lsl #0x2 - mov r1, r1, lsl #0x3 - movs r3, r1, lsr #0x1f - mov r12, r2, lsr #0x1f - ldrne r2, [r0, #0x0] - ldrne r1, [r0, #0x8] - strne r1, [r0, #0x0] - strne r2, [r0, #0x8] - cmp r12, #0x0 - ldrne r2, [r0, #0x4] - ldrne r1, [r0, #0xc] - strne r1, [r0, #0x4] - ldr r1, _020B4BE8 ; =UNK_021CED0C - strne r2, [r0, #0xc] - ldr r7, [r1, #0x0] - cmp r7, #0x0 - beq _020B4B60 - str r3, [sp, #0x0] - add r1, r0, #0x4 - add r2, r0, #0x8 - add r3, r0, #0xc - str r12, [sp, #0x4] - blx r7 -_020B4B60: - ldr r0, [r6, #0x4] - ldr r1, [r6, #0x0] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x1c - mov r3, r1, lsl #0x12 - ldr r1, [r5, #0xc] - mov r0, r0, lsl #0x10 - ldr r2, _020B4BEC ; =UNK_020FF8D0 - mov r3, r3, lsr #0x1f - cmp r1, #0x0 - mov r0, r0, lsr #0x10 - ldr r1, [r2, r3, lsl #0x2] - movne r0, r0, lsl #0x9 - bne _020B4BA4 - cmp r1, #0x4 - moveq r0, #0x0 - movne r0, r0, lsl #0x5 -_020B4BA4: - cmp r1, #0x2 - moveq r2, #0x1 - movne r2, #0x0 - add r1, r4, r0 - rsb r0, r2, #0x4 - mov r1, r1, lsr r0 - ldr r0, _020B4BF0 ; =0x040004AC - str r1, [r0, #0x0] - add sp, sp, #0xc - ldmia sp!, {r4-r9,pc} - .balign 4 -_020B4BCC: .word 0xC000C000 -_020B4BD0: .word UNK_020FF8AC -_020B4BD4: .word UNK_020FF894 -_020B4BD8: .word 0x040004A8 -_020B4BDC: .word UNK_020FF8D8 -_020B4BE0: .word UNK_020FF8F8 -_020B4BE4: .word UNK_020FF928 -_020B4BE8: .word UNK_021CED0C -_020B4BEC: .word UNK_020FF8D0 -_020B4BF0: .word 0x040004AC - arm_func_end FUN_020B498C - - arm_func_start FUN_020B4BF4 -FUN_020B4BF4: ; 0x020B4BF4 - stmdb sp!, {r4-r6,lr} - ldr r2, _020B4CD8 ; =UNK_021CED14 - mov r6, r0 - ldr r3, [r2, #0x0] - mov r4, r1 - ldr r5, [r3, #0x0] - ldr r0, [r5, #0x10] - cmp r0, #0x0 - ldmeqia sp!, {r4-r6,pc} - mov r0, #0x1 - str r0, [r3, #0x30] - ldr r3, [r5, #0x18] - cmp r3, #0x0 - beq _020B4C38 - ldr r0, [r2, #0x0] - mov r1, r6 - blx r3 -_020B4C38: - ldr r0, _020B4CD8 ; =UNK_021CED14 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B4CB8 - mvn r0, #0x0 - cmp r4, r0 - beq _020B4C7C - mov r0, r4 - ldr r4, [r5, #0x14] - bl FUN_020B469C - mov r3, #0x1 - mvn r1, r3, lsl r4 - ldr r2, [r0, #0x20] - and r1, r2, r1 - orr r1, r1, r3, lsl r4 - str r1, [r0, #0x20] -_020B4C7C: - ldr r0, [r5, #0x14] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B4CB8 - ; Jump table - b _020B4C9C ; case 0 - b _020B4CAC ; case 1 - b _020B4CAC ; case 2 - b _020B4CB8 ; case 3 -_020B4C9C: - mov r0, r5 - mov r1, r6 - bl FUN_020B5090 - b _020B4CB8 -_020B4CAC: - mov r0, r5 - mov r1, r6 - bl FUN_020B53B4 -_020B4CB8: - ldr r2, [r5, #0x1c] - cmp r2, #0x0 - ldmeqia sp!, {r4-r6,pc} - ldr r0, _020B4CD8 ; =UNK_021CED14 - mov r1, r6 - ldr r0, [r0, #0x0] - blx r2 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B4CD8: .word UNK_021CED14 - arm_func_end FUN_020B4BF4 - - arm_func_start FUN_020B4CDC -FUN_020B4CDC: ; 0x020B4CDC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r1, _020B4D9C ; =UNK_021CED14 - mov r5, r0 - ldr r2, [r1, #0x0] - ldr r4, [r2, #0x0] - ldr r0, [r4, #0x10] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - mov r0, #0x1 - str r0, [r2, #0x30] - ldr r2, [r4, #0x18] - cmp r2, #0x0 - beq _020B4D24 - ldr r0, [r1, #0x0] - mov r1, r5 - blx r2 -_020B4D24: - ldr r0, _020B4D9C ; =UNK_021CED14 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B4D74 - ldr r0, [r4, #0x14] - cmp r0, #0x3 - addls pc, pc, r0, lsl #0x2 - b _020B4D74 - ; Jump table - b _020B4D58 ; case 0 - b _020B4D68 ; case 1 - b _020B4D68 ; case 2 - b _020B4D74 ; case 3 -_020B4D58: - mov r0, r4 - mov r1, r5 - bl FUN_020B5090 - b _020B4D74 -_020B4D68: - mov r0, r4 - mov r1, r5 - bl FUN_020B53B4 -_020B4D74: - ldr r2, [r4, #0x1c] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - ldr r0, _020B4D9C ; =UNK_021CED14 - mov r1, r5 - ldr r0, [r0, #0x0] - blx r2 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4D9C: .word UNK_021CED14 - arm_func_end FUN_020B4CDC - - arm_func_start FUN_020B4DA0 -FUN_020B4DA0: ; 0x020B4DA0 - ldr r0, _020B4E00 ; =UNK_021CED14 - ldr r3, [r0, #0x0] - ldr r1, [r3, #0x0] - ldr r1, [r1, #0x14] - cmp r1, #0x0 - bne _020B4DD8 - ldr r2, _020B4E04 ; =0x04000440 - mov r1, #0x0 - ldr r0, _020B4E08 ; =0x04000448 - str r1, [r2, #0x0] - mov r1, #0x1 - str r1, [r0, #0x0] - str r1, [r2, #0x0] - b _020B4DF0 -_020B4DD8: - mov r2, #0x0 - str r2, [r3, #0x10] - ldr r1, [r0, #0x0] - str r2, [r1, #0x2c] - ldr r0, [r0, #0x0] - str r2, [r0, #0x28] -_020B4DF0: - ldr r0, _020B4E00 ; =UNK_021CED14 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - .balign 4 -_020B4E00: .word UNK_021CED14 -_020B4E04: .word 0x04000440 -_020B4E08: .word 0x04000448 - arm_func_end FUN_020B4DA0 - - arm_func_start FUN_020B4E0C -FUN_020B4E0C: ; 0x020B4E0C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r2, _020B4F28 ; =UNK_021CED14 - mov r4, r0 - str r4, [r2, #0x0] - ldr r0, [r4, #0x0] - ldr r5, [r0, #0x14] - cmp r5, #0x0 - bne _020B4ED8 - ldr lr, _020B4F2C ; =0x04000440 - mov r1, #0x0 - ldr r0, _020B4F30 ; =0x04000444 - str r1, [lr, #0x0] - str r1, [r0, #0x0] - ldr r12, [r4, #0x0] - ldr r0, _020B4F34 ; =0x04000470 - ldr r3, [r12, #0x0] - ldr r12, [r12, #0x4] - rsb r3, r3, #0x0 - str r3, [r0, #0x0] - rsb r3, r12, #0x0 - str r3, [r0, #0x0] - str r1, [r0, #0x0] - mov r0, #0x1 - str r0, [lr, #0x0] - ldr r0, [r2, #0x0] - ldr r5, [r0, #0x8] - mov r0, r5 - bl FUN_020B19FC - cmp r0, #0x0 - moveq r0, #0x0 - beq _020B4E98 - mov r0, r5 - mov r1, #0x0 - bl FUN_020B1A14 -_020B4E98: - ldr r1, _020B4F28 ; =UNK_021CED14 - str r0, [r4, #0x14] - ldr r0, [r1, #0x0] - mov r1, #0x0 - ldr r5, [r0, #0xc] - mov r0, r5 - bl FUN_020B19A8 - cmp r0, #0x0 - moveq r0, #0x0 - beq _020B4ECC - mov r0, r5 - mov r1, #0x0 - bl FUN_020B19C4 -_020B4ECC: - add sp, sp, #0x4 - str r0, [r4, #0x18] - ldmia sp!, {r4-r5,pc} -_020B4ED8: - ldr r4, [r4, #0x8] - mov r1, r5 - mov r0, r4 - bl FUN_020B19FC - cmp r0, #0x0 - moveq r1, #0x0 - beq _020B4F14 - mov r0, r4 - mov r1, r5 - bl FUN_020B1A14 - ldr r1, [r4, #0x20] - and r1, r1, #0x700000 - mov r1, r1, asr #0x14 - add r1, r1, #0x5 - mov r1, r0, lsr r1 -_020B4F14: - ldr r0, _020B4F28 ; =UNK_021CED14 - ldr r0, [r0, #0x0] - str r1, [r0, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B4F28: .word UNK_021CED14 -_020B4F2C: .word 0x04000440 -_020B4F30: .word 0x04000444 -_020B4F34: .word 0x04000470 - arm_func_end FUN_020B4E0C - - arm_func_start FUN_020B4F38 -FUN_020B4F38: ; 0x020B4F38 - cmp r1, #0x0 - ldrne r1, [r0, #0x24] - orrne r1, r1, #0x1 - strne r1, [r0, #0x24] - ldreq r1, [r0, #0x24] - biceq r1, r1, #0x1 - streq r1, [r0, #0x24] - cmp r2, #0x0 - ldrne r1, [r0, #0x24] - orrne r1, r1, #0x2 - strne r1, [r0, #0x24] - ldreq r1, [r0, #0x24] - biceq r1, r1, #0x2 - streq r1, [r0, #0x24] - bx lr - arm_func_end FUN_020B4F38 - - arm_func_start FUN_020B4F74 -FUN_020B4F74: ; 0x020B4F74 - ldr r0, [r0, #0x24] - ands r0, r0, #0x2 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - arm_func_end FUN_020B4F74 - - arm_func_start FUN_020B4F88 -FUN_020B4F88: ; 0x020B4F88 - ldr r0, [r0, #0x24] - ands r0, r0, #0x1 - movne r0, #0x1 - moveq r0, #0x0 - bx lr - arm_func_end FUN_020B4F88 - - arm_func_start FUN_020B4F9C -FUN_020B4F9C: ; 0x020B4F9C - str r1, [r0, #0x0] - bx lr - arm_func_end FUN_020B4F9C - - arm_func_start FUN_020B4FA4 -FUN_020B4FA4: ; 0x020B4FA4 - str r1, [r0, #0x34] - bx lr - arm_func_end FUN_020B4FA4 - - arm_func_start FUN_020B4FAC -FUN_020B4FAC: ; 0x020B4FAC - ldr r2, _020B4FC0 ; =UNK_021CED14 - ldr r2, [r2, #0x0] - str r0, [r2, #0x2c] - str r1, [r2, #0x28] - bx lr - .balign 4 -_020B4FC0: .word UNK_021CED14 - arm_func_end FUN_020B4FAC - - arm_func_start FUN_020B4FC4 -FUN_020B4FC4: ; 0x020B4FC4 - ldr r1, _020B5028 ; =UNK_021CED14 - mov r3, #0x0 - ldr r12, [r1, #0x0] - mov r1, #0x1000 - str r0, [r12, #0x2c] - ldr r2, [r0, #0x0] - str r2, [r12, #0x40] - ldr r2, [r0, #0x4] - str r2, [r12, #0x44] - str r3, [r12, #0x48] - ldr r2, [r0, #0x8] - str r2, [r12, #0x4c] - ldr r2, [r0, #0xc] - str r2, [r12, #0x50] - str r3, [r12, #0x54] - str r3, [r12, #0x58] - str r3, [r12, #0x5c] - str r1, [r12, #0x60] - ldr r1, [r0, #0x10] - str r1, [r12, #0x64] - ldr r0, [r0, #0x14] - str r0, [r12, #0x68] - ldr r0, [r12, #0x34] - str r0, [r12, #0x6c] - bx lr - .balign 4 -_020B5028: .word UNK_021CED14 - arm_func_end FUN_020B4FC4 - - arm_func_start FUN_020B502C -FUN_020B502C: ; 0x020B502C - str r1, [r0, #0x4] - bx lr - arm_func_end FUN_020B502C - - arm_func_start FUN_020B5034 -FUN_020B5034: ; 0x020B5034 - str r1, [r0, #0x1c] - str r2, [r0, #0x20] - bx lr - arm_func_end FUN_020B5034 - - arm_func_start FUN_020B5040 -FUN_020B5040: ; 0x020B5040 - str r1, [r0, #0x8] - str r2, [r0, #0xc] - bx lr - arm_func_end FUN_020B5040 - - arm_func_start FUN_020B504C -FUN_020B504C: ; 0x020B504C - stmdb sp!, {r4,lr} - mov r4, r0 - mov r1, r4 - mov r0, #0x0 - mov r2, #0x70 - bl MIi_CpuClear16 - mov r1, #0x0 - str r1, [r4, #0x0] - mov r0, #0x2 - str r0, [r4, #0x4] - str r1, [r4, #0x8] - str r1, [r4, #0xc] - str r1, [r4, #0x24] - mov r0, #0x1 - str r0, [r4, #0x30] - str r1, [r4, #0x28] - ldmia sp!, {r4,pc} - arm_func_end FUN_020B504C - - arm_func_start FUN_020B5090 -FUN_020B5090: ; 0x020B5090 - stmdb sp!, {r4-r10,lr} - ldr r5, _020B5158 ; =UNK_021CED14 - mov r9, r1 - ldrh r1, [r9, #0x0] - ldr r2, [r5, #0x0] - mov r10, r0 - add r7, r2, #0x38 - mov r8, #0x0 - cmp r1, #0x0 - ldmlsia sp!, {r4-r10,pc} - mov r6, #0x1 - mov r4, #0x6 -_020B50C0: - mul r1, r8, r4 - ldr r0, [r5, #0x0] - str r6, [r0, #0x30] - ldr r2, [r9, #0x4] - ldrh r0, [r2, r1] - add r1, r2, r1 - strh r0, [r7, #0x0] - ldrh r0, [r1, #0x2] - strh r0, [r7, #0x2] - ldrh r0, [r1, #0x4] - strh r0, [r7, #0x4] - ldr r3, [r10, #0x20] - cmp r3, #0x0 - beq _020B5108 - ldr r0, [r5, #0x0] - mov r1, r9 - mov r2, r8 - blx r3 -_020B5108: - ldr r0, [r5, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B5120 - mov r0, r7 - bl FUN_020B515C -_020B5120: - ldr r3, [r10, #0x24] - cmp r3, #0x0 - beq _020B513C - ldr r0, [r5, #0x0] - mov r1, r9 - mov r2, r8 - blx r3 -_020B513C: - add r0, r8, #0x1 - mov r0, r0, lsl #0x10 - ldrh r1, [r9, #0x0] - mov r8, r0, lsr #0x10 - cmp r8, r1 - blo _020B50C0 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B5158: .word UNK_021CED14 - arm_func_end FUN_020B5090 - - arm_func_start FUN_020B515C -FUN_020B515C: ; 0x020B515C - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - ldr r1, _020B53A4 ; =UNK_021CED14 - mov r7, r0 - ldr r0, [r1, #0x0] - add r0, r0, #0x40 - bl G3_LoadMtx43 - ldr r0, _020B53A4 ; =UNK_021CED14 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x24] - cmp r1, #0x0 - beq _020B533C - ldr r2, [r7, #0x0] - ldr r1, _020B53A8 ; =0xC000C000 - and r4, r2, r1 - bl FUN_020B4F88 - cmp r0, #0x0 - beq _020B51F4 - ldr r0, [r7, #0x0] - and r2, r4, #0xc000 - mov r0, r0, lsl #0x7 - mov r3, r0, lsr #0x17 - and r1, r4, #0xc0000000 - mov r1, r1, lsr #0x1e - ldr r0, _020B53AC ; =UNK_020FF8AC - mov r2, r2, asr #0xe - mov r1, r1, lsl #0x1 - add r0, r0, r2, lsl #0x3 - cmp r3, #0xff - ldrh r1, [r1, r0] - orrgt r0, r3, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r3, r0, asr #0x10 - add r0, r3, r1 - rsb r0, r0, #0x0 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - b _020B5218 -_020B51F4: - ldr r0, [r7, #0x0] - mov r0, r0, lsl #0x7 - mov r0, r0, lsr #0x17 - cmp r0, #0xff - orrgt r0, r0, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 -_020B5218: - ldr r0, _020B53A4 ; =UNK_021CED14 - mov r1, r1, lsl #0x10 - ldr r0, [r0, #0x0] - mov r6, r1, asr #0x10 - bl FUN_020B4F74 - cmp r0, #0x0 - beq _020B527C - and r1, r4, #0xc000 - and r0, r4, #0xc0000000 - ldrb r4, [r7, #0x0] - ldr r2, _020B53B0 ; =UNK_020FF894 - mov r0, r0, lsr #0x1e - mov r3, r1, asr #0xe - mov r1, r0, lsl #0x1 - add r0, r2, r3, lsl #0x3 - cmp r4, #0x7f - ldrh r1, [r1, r0] - orrgt r0, r4, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r4, r0, asr #0x10 - add r0, r4, r1 - rsb r0, r0, #0x0 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - b _020B5298 -_020B527C: - ldrb r0, [r7, #0x0] - cmp r0, #0x7f - orrgt r0, r0, #0xff00 - movgt r0, r0, lsl #0x10 - movgt r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 -_020B5298: - ldr r0, _020B53A4 ; =UNK_021CED14 - ldr r1, [r7, #0x0] - ldr r0, [r0, #0x0] - mov r5, r1, lsl #0x3 - bl FUN_020B4F88 - ldr r2, [r7, #0x0] - ldr r1, _020B53A4 ; =UNK_021CED14 - eor r5, r0, r5, lsr #0x1f - ldr r0, [r1, #0x0] - mov r8, r2, lsl #0x2 - bl FUN_020B4F74 - ldr r2, [r7, #0x0] - eor r1, r0, r8, lsr #0x1f - bic r0, r2, #0x10000000 - str r0, [r7, #0x0] - ldr r2, [r7, #0x0] - ldr r3, _020B53A4 ; =UNK_021CED14 - orr r2, r2, r5, lsl #0x1c - str r2, [r7, #0x0] - ldr r2, [r7, #0x0] - mov r0, r6 - bic r2, r2, #0x20000000 - str r2, [r7, #0x0] - ldr r5, [r7, #0x0] - mov r2, r4, lsl #0x10 - orr r1, r5, r1, lsl #0x1d - str r1, [r7, #0x0] - ldr r5, [r3, #0x0] - mov r1, r2, asr #0x10 - ldr r4, [r5, #0x8] - mov r3, r7 - add r2, r4, #0xc - str r2, [sp, #0x0] - ldr r4, [r5, #0x14] - mvn r2, #0x0 - str r4, [sp, #0x4] - ldr r4, [r5, #0x18] - str r4, [sp, #0x8] - bl FUN_020B46B4 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} -_020B533C: - ldr r2, _020B53A4 ; =UNK_021CED14 - ldr r0, [r7, #0x0] - ldr r5, [r2, #0x0] - mov r0, r0, lsl #0x7 - ldr r4, [r5, #0x8] - mov r0, r0, lsr #0x17 - cmp r0, #0xff - orrgt r0, r0, #0xff00 - movgt r0, r0, lsl #0x10 - ldrb r1, [r7, #0x0] - add r4, r4, #0xc - movgt r0, r0, asr #0x10 - str r4, [sp, #0x0] - ldr r4, [r5, #0x14] - cmp r1, #0x7f - orrgt r1, r1, #0xff00 - movgt r1, r1, lsl #0x10 - str r4, [sp, #0x4] - ldr r4, [r5, #0x18] - movgt r1, r1, asr #0x10 - mov r3, r7 - mvn r2, #0x0 - str r4, [sp, #0x8] - bl FUN_020B46B4 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B53A4: .word UNK_021CED14 -_020B53A8: .word 0xC000C000 -_020B53AC: .word UNK_020FF8AC -_020B53B0: .word UNK_020FF894 - arm_func_end FUN_020B515C - - arm_func_start FUN_020B53B4 -FUN_020B53B4: ; 0x020B53B4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x44 - ldr r2, _020B57B0 ; =UNK_021CED14 - mov r10, r0 - ldr r0, [r2, #0x0] - mov r11, r1 - ldr r9, [r0, #0x2c] - ldr r1, _020B57B0 ; =UNK_021CED14 - cmp r9, #0x0 - ldreq sb, _020B57B4 ; =UNK_020FF958 - ldr r3, [r1, #0x0] - ldr r4, [r9, #0x10] - str r4, [sp, #0x18] - ldr r2, [r9, #0x14] - str r2, [sp, #0x1c] - ldr r1, [r10, #0x0] - sub r1, r4, r1 - str r1, [sp, #0x18] - ldr r1, [r10, #0x4] - sub r1, r2, r1 - str r1, [sp, #0x1c] - ldr r2, [r3, #0x24] - ldr r1, [r3, #0x10] - cmp r2, #0x0 - str r1, [sp, #0x4] - bne _020B5430 - ldr r1, [r3, #0x28] - cmp r1, #0x0 - movne r1, #0x1 - strne r1, [sp, #0x0] - bne _020B5438 -_020B5430: - mov r1, #0x0 - str r1, [sp, #0x0] -_020B5438: - ldrh r1, [r11, #0x0] - add r7, r0, #0x38 - mov r8, #0x0 - cmp r1, #0x0 - addls sp, sp, #0x44 - ldmlsia sp!, {r4-r11,pc} - mov r0, #0x1 - ldr r4, _020B57B0 ; =UNK_021CED14 - str r8, [sp, #0x14] - str r0, [sp, #0xc] -_020B5460: - ldr r2, [r4, #0x0] - ldr r0, [sp, #0xc] - mov r1, #0x6 - str r0, [r2, #0x30] - mul r0, r8, r1 - ldr r1, [r11, #0x4] - add r2, r1, r0 - ldrh r0, [r1, r0] - strh r0, [r7, #0x0] - ldrh r0, [r2, #0x2] - strh r0, [r7, #0x2] - ldrh r0, [r2, #0x4] - strh r0, [r7, #0x4] - ldr r3, [r10, #0x20] - cmp r3, #0x0 - beq _020B54B0 - ldr r0, [r4, #0x0] - mov r1, r11 - mov r2, r8 - blx r3 -_020B54B0: - ldr r0, [r4, #0x0] - ldr r0, [r0, #0x30] - cmp r0, #0x0 - beq _020B5790 - ldr r0, [sp, #0x0] - ldr r1, [r7, #0x4] - cmp r0, #0x0 - mov r0, #0x400 - rsb r0, r0, #0x0 - and r2, r1, r0 - ldr r0, [sp, #0x4] - mov r1, r1, lsl #0x16 - add r1, r0, r1, lsr #0x16 - ldr r0, _020B57B8 ; =0x000003FF - and r0, r1, r0 - orr r0, r2, r0 - str r0, [r7, #0x4] - beq _020B5600 - ldr r0, [r10, #0x14] - ldr lr, [r4, #0x0] - sub r1, r0, #0x1 - ldr r0, [r7, #0x0] - ldr r6, [lr, #0x28] - mov r2, r0, lsl #0x2 - mov r2, r2, lsr #0x1f - mov r2, r2, lsl #0x1 - mov r0, r0, lsl #0x3 - orr r5, r2, r0, lsr #0x1f - add r0, r6, r5, lsl #0x2 - add r0, r0, r1, lsl #0x1 - ldrh r1, [r0, #0x10] - ldr r0, _020B57BC ; =0x0000FFFF - str r1, [sp, #0x8] - cmp r1, r0 - bne _020B55CC - cmp r5, #0x0 - bne _020B5558 - ldr r1, [lr, #0x20] - mov r0, r6 - blx r1 - str r0, [sp, #0x8] - b _020B55B4 -_020B5558: - ands r0, r5, #0x1 - add r12, sp, #0x30 - ldmia r6, {r0-r3} - stmia r12, {r0-r3} - beq _020B5584 - ldr r1, [sp, #0x30] - ldr r0, [sp, #0x34] - rsb r1, r1, #0x0 - str r1, [sp, #0x30] - rsb r0, r0, #0x0 - str r0, [sp, #0x34] -_020B5584: - ands r0, r5, #0x2 - beq _020B55A4 - ldr r1, [sp, #0x38] - ldr r0, [sp, #0x3c] - rsb r1, r1, #0x0 - str r1, [sp, #0x38] - rsb r0, r0, #0x0 - str r0, [sp, #0x3c] -_020B55A4: - ldr r1, [lr, #0x20] - add r0, sp, #0x30 - blx r1 - str r0, [sp, #0x8] -_020B55B4: - ldr r1, [r10, #0x14] - add r0, r6, r5, lsl #0x2 - sub r1, r1, #0x1 - add r1, r0, r1, lsl #0x1 - ldr r0, [sp, #0x8] - strh r0, [r1, #0x10] -_020B55CC: - ldr r1, [r9, #0x0] - add r0, sp, #0x20 - str r1, [sp, #0x20] - ldr r2, [r9, #0x4] - mov r1, r7 - str r2, [sp, #0x24] - ldr r3, [r9, #0x8] - add r2, sp, #0x18 - str r3, [sp, #0x28] - ldr r3, [r9, #0xc] - str r3, [sp, #0x2c] - bl FUN_020B57D8 - b _020B5750 -_020B5600: - ldr r0, _020B57C0 ; =0x0000FFFE - str r0, [sp, #0x8] - ldr r0, [r4, #0x0] - ldr r1, [r0, #0x24] - cmp r1, #0x0 - beq _020B5714 - ldr r2, [r7, #0x0] - ldr r1, _020B57C4 ; =0xC000C000 - mov r6, r2, lsl #0x3 - and r5, r2, r1 - bl FUN_020B4F88 - ldr r1, [r7, #0x0] - eor r6, r0, r6, lsr #0x1f - mov r1, r1, lsl #0x2 - ldr r0, [r4, #0x0] - str r1, [sp, #0x10] - bl FUN_020B4F74 - ldr r1, [sp, #0x10] - eor r0, r0, r1, lsr #0x1f - ldr r1, [r7, #0x0] - bic r1, r1, #0x10000000 - str r1, [r7, #0x0] - ldr r1, [r7, #0x0] - orr r1, r1, r6, lsl #0x1c - str r1, [r7, #0x0] - ldr r1, [r7, #0x0] - bic r1, r1, #0x20000000 - str r1, [r7, #0x0] - ldr r1, [r7, #0x0] - orr r0, r1, r0, lsl #0x1d - str r0, [r7, #0x0] - ldr r0, [r4, #0x0] - bl FUN_020B4F88 - cmp r0, #0x0 - beq _020B56D4 - and r1, r5, #0xc000 - mov r2, r1, asr #0xe - ldr r1, _020B57C8 ; =UNK_020FF8AC - and r3, r5, #0xc0000000 - mov r3, r3, lsr #0x1e - add r2, r1, r2, lsl #0x3 - mov r3, r3, lsl #0x1 - ldr r0, [r7, #0x0] - ldr r1, _020B57CC ; =0xFE00FFFF - ldrh r2, [r3, r2] - and r1, r0, r1 - mov r0, r0, lsl #0x7 - add r0, r2, r0, lsr #0x17 - rsb r2, r0, #0x0 - ldr r0, _020B57D0 ; =0x000001FF - and r0, r2, r0 - orr r0, r1, r0, lsl #0x10 - str r0, [r7, #0x0] -_020B56D4: - ldr r0, [r4, #0x0] - bl FUN_020B4F74 - cmp r0, #0x0 - beq _020B5714 - and r1, r5, #0xc000 - mov r3, r1, asr #0xe - and r1, r5, #0xc0000000 - mov r1, r1, lsr #0x1e - mov r2, r1, lsl #0x1 - ldr r1, _020B57D4 ; =UNK_020FF894 - ldrb r0, [r7, #0x0] - add r1, r1, r3, lsl #0x3 - ldrh r1, [r2, r1] - add r0, r0, r1 - rsb r0, r0, #0x0 - strb r0, [r7, #0x0] -_020B5714: - ldr r2, [r7, #0x0] - ldr r0, _020B57CC ; =0xFE00FFFF - ldr r1, [sp, #0x18] - and r0, r2, r0 - mov r2, r2, lsl #0x7 - mov r2, r2, lsr #0x17 - add r2, r2, r1, asr #0xc - ldr r1, _020B57D0 ; =0x000001FF - and r1, r2, r1 - orr r0, r0, r1, lsl #0x10 - str r0, [r7, #0x0] - ldrb r1, [r7, #0x0] - ldr r0, [sp, #0x1c] - add r0, r1, r0, asr #0xc - strb r0, [r7, #0x0] -_020B5750: - ldr r3, [r4, #0x0] - ldr r1, [sp, #0x8] - ldr r2, [sp, #0x14] - ldr r3, [r3, #0x1c] - mov r0, r7 - blx r3 - cmp r0, #0x1 - addne sp, sp, #0x44 - ldmneia sp!, {r4-r11,pc} - ldr r3, [r10, #0x24] - cmp r3, #0x0 - beq _020B5790 - ldr r0, [r4, #0x0] - mov r1, r11 - mov r2, r8 - blx r3 -_020B5790: - add r0, r8, #0x1 - mov r0, r0, lsl #0x10 - mov r8, r0, lsr #0x10 - ldrh r0, [r11, #0x0] - cmp r8, r0 - blo _020B5460 - add sp, sp, #0x44 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B57B0: .word UNK_021CED14 -_020B57B4: .word UNK_020FF958 -_020B57B8: .word 0x000003FF -_020B57BC: .word 0x0000FFFF -_020B57C0: .word 0x0000FFFE -_020B57C4: .word 0xC000C000 -_020B57C8: .word UNK_020FF8AC -_020B57CC: .word 0xFE00FFFF -_020B57D0: .word 0x000001FF -_020B57D4: .word UNK_020FF894 - arm_func_end FUN_020B53B4 - - arm_func_start FUN_020B57D8 -FUN_020B57D8: ; 0x020B57D8 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - ldr r4, [r1, #0x0] - ldr r3, _020B5A9C ; =0x01FF0000 - and r3, r4, r3 - mov r3, r3, lsr #0x10 - mov r3, r3, lsl #0x10 - mov r3, r3, asr #0x10 - cmp r3, #0xff - orrgt r3, r3, #0xff00 - movgt r3, r3, lsl #0x10 - movgt r3, r3, asr #0x10 - mov r3, r3, lsl #0xc - str r3, [sp, #0x0] - ldr r3, [r1, #0x0] - and r3, r3, #0xff - mov r3, r3, lsl #0x10 - mov r3, r3, asr #0x10 - cmp r3, #0x7f - orrgt r3, r3, #0xff00 - movgt r3, r3, lsl #0x10 - movgt r3, r3, asr #0x10 - mov r3, r3, lsl #0xc - str r3, [sp, #0x4] - ldr r5, [r1, #0x0] - and r4, r5, #0x300 - cmp r4, #0x100 - beq _020B5858 - cmp r4, #0x300 - beq _020B5858 - and r3, r5, #0x30000000 - orr r4, r4, r3 -_020B5858: - cmp r4, #0x300 - bne _020B58AC - ldr r3, _020B5AA0 ; =0xC000C000 - ldr r4, _020B5AA4 ; =UNK_020FF8AC - and r3, r5, r3 - and r5, r3, #0xc0000000 - and r3, r3, #0xc000 - mov r6, r5, lsr #0x1e - mov r5, r3, asr #0xe - ldr r3, _020B5AA8 ; =UNK_020FF894 - mov r6, r6, lsl #0x1 - add r4, r4, r5, lsl #0x3 - add r3, r3, r5, lsl #0x3 - ldrh r5, [r6, r4] - ldr r7, [sp, #0x0] - ldrh r3, [r6, r3] - ldr r4, [sp, #0x4] - add r5, r7, r5, lsl #0xb - add r3, r4, r3, lsl #0xb - str r5, [sp, #0x0] - str r3, [sp, #0x4] -_020B58AC: - ldr r5, [r0, #0x8] - ldr r4, [sp, #0x4] - add r3, sp, #0x0 - smull r8, r7, r5, r4 - cmp r3, r3 - ldr r6, [r0, #0x0] - mov r4, #0x1000 - addeq r3, sp, #0x8 - adds r8, r8, r4 - ldr r5, [sp, #0x0] - adc r7, r7, #0x0 - smlal r8, r7, r6, r5 - mov r5, r8, lsr #0xc - orr r5, r5, r7, lsl #0x14 - str r5, [r3, #0x0] - ldr r7, [r0, #0xc] - ldr r6, [sp, #0x4] - ldr r5, [r0, #0x4] - smull r8, r6, r7, r6 - adds r7, r8, r4 - ldr r4, [sp, #0x0] - adc r6, r6, #0x0 - smlal r7, r6, r5, r4 - mov r5, r7, lsr #0xc - add r4, sp, #0x8 - orr r5, r5, r6, lsl #0x14 - str r5, [r3, #0x4] - cmp r3, r4 - ldreq r3, [sp, #0xc] - ldreq r4, [sp, #0x8] - streq r3, [sp, #0x4] - ldr r3, _020B5AAC ; =UNK_021CED14 - streq r4, [sp, #0x0] - ldr r3, [r3, #0x0] - ldr r3, [r3, #0x4] - cmp r3, #0x0 - beq _020B597C - cmp r3, #0x2 - moveq r5, #0x300 - movne r5, #0x100 - cmp r5, #0x100 - ldreq r4, [r1, #0x0] - ldreq r3, _020B5AB0 ; =0xC1FFFCFF - andeq r3, r4, r3 - orreq r3, r3, r5 - streq r3, [r1, #0x0] - beq _020B597C - ldr r4, [r1, #0x0] - ldr r3, _020B5AB0 ; =0xC1FFFCFF - and r3, r4, r3 - orr r3, r3, r5 - str r3, [r1, #0x0] -_020B597C: - ldr r6, [r1, #0x0] - and r5, r6, #0x300 - cmp r5, #0x100 - beq _020B599C - cmp r5, #0x300 - beq _020B599C - and r3, r6, #0x30000000 - orr r5, r5, r3 -_020B599C: - ldr r3, _020B5AA0 ; =0xC000C000 - ldr r4, _020B5AA4 ; =UNK_020FF8AC - and r3, r6, r3 - and r6, r3, #0xc0000000 - and r3, r3, #0xc000 - mov lr, r3, asr #0xe - mov r6, r6, lsr #0x1e - mov r3, r6, lsl #0x1 - add r4, r4, lr, lsl #0x3 - ldrh r4, [r3, r4] - ldr r6, [r0, #0x0] - ldr r8, _020B5AA8 ; =UNK_020FF894 - mov r12, r4, asr #0x1 - mov r4, r12, lsl #0xc - rsb r7, r4, #0x0 - mla r7, r6, r12, r7 - add lr, r8, lr, lsl #0x3 - ldrh r3, [r3, lr] - ldr r6, [r0, #0x8] - ldr lr, [sp, #0x0] - mov r3, r3, asr #0x1 - mla r7, r6, r3, r7 - add r6, lr, r7 - str r6, [sp, #0x0] - mov lr, r3, lsl #0xc - ldr r6, [r0, #0x4] - rsb r7, lr, #0x0 - mla r7, r6, r12, r7 - ldr r0, [r0, #0xc] - ldr r6, [sp, #0x4] - mla r3, r0, r3, r7 - add r0, r6, r3 - str r0, [sp, #0x4] - cmp r5, #0x300 - moveq r0, #0x1 - movne r0, #0x0 - cmp r0, #0x0 - beq _020B5A4C - ldr r3, [sp, #0x0] - ldr r0, [sp, #0x4] - sub r3, r3, r4 - sub r0, r0, lr - str r3, [sp, #0x0] - str r0, [sp, #0x4] -_020B5A4C: - ldr r4, [sp, #0x0] - ldr r0, [r2, #0x0] - ldr r3, [sp, #0x4] - add r5, r4, r0 - str r5, [sp, #0x0] - ldr r2, [r2, #0x4] - ldr r0, _020B5AB4 ; =0x000001FF - add r2, r3, r2 - str r2, [sp, #0x4] - mov r3, r2, asr #0xc - ldr r4, [r1, #0x0] - ldr r2, _020B5AB8 ; =0xFE00FF00 - and r3, r3, #0xff - and r2, r4, r2 - and r4, r0, r5, asr #0xc - orr r0, r2, r3 - orr r0, r0, r4, lsl #0x10 - str r0, [r1, #0x0] - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B5A9C: .word 0x01FF0000 -_020B5AA0: .word 0xC000C000 -_020B5AA4: .word UNK_020FF8AC -_020B5AA8: .word UNK_020FF894 -_020B5AAC: .word UNK_021CED14 -_020B5AB0: .word 0xC1FFFCFF -_020B5AB4: .word 0x000001FF -_020B5AB8: .word 0xFE00FF00 - arm_func_end FUN_020B57D8 - - arm_func_start FUN_020B5ABC -FUN_020B5ABC: ; 0x020B5ABC - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0xc - add r5, sp, #0x0 - mov r4, #0x0 - str r4, [r5, #0x0] - str r4, [r5, #0x4] - mov r8, r2 - ldr r2, [sp, #0x28] - mov r5, r0 - mov r9, r1 - mov r4, r3 - cmp r2, #0x0 - mov r7, #0x1 - beq _020B5B24 - add r6, sp, #0x28 -_020B5AF8: - mov r0, r9 - mov r1, r8 - mov r3, r6 - bl FUN_020B5BC8 - ldr r1, [sp, #0x0] - ldr r2, [sp, #0x28] - cmp r0, r1 - strgt r0, [sp, #0x0] - add r7, r7, #0x1 - cmp r2, #0x0 - bne _020B5AF8 -_020B5B24: - ldr r0, [r9, #0x0] - sub r2, r7, #0x1 - ldrsb r1, [r0, #0x1] - ldr r0, [sp, #0x0] - add r1, r4, r1 - mul r1, r2, r1 - sub r1, r1, r4 - str r1, [sp, #0x4] - str r0, [r5, #0x0] - str r1, [r5, #0x4] - add sp, sp, #0xc - ldmia sp!, {r4-r9,pc} - arm_func_end FUN_020B5ABC - - arm_func_start FUN_020B5B54 -FUN_020B5B54: ; 0x020B5B54 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - str r2, [sp, #0x0] - add r3, sp, #0x4 - mov r2, #0x0 - str r2, [r3, #0x0] - mov r8, r0 - str r2, [r3, #0x4] - ldr r7, [r8, #0x4] - add r0, sp, #0x0 - mov r5, r1 - mov r4, #0x1 - blx r7 - cmp r0, #0x0 - beq _020B5BAC - add r6, sp, #0x0 -_020B5B94: - cmp r0, #0xa - mov r0, r6 - addeq r4, r4, #0x1 - blx r7 - cmp r0, #0x0 - bne _020B5B94 -_020B5BAC: - ldr r0, [r8, #0x0] - ldrsb r0, [r0, #0x1] - add r0, r5, r0 - mul r0, r4, r0 - sub r0, r0, r5 - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020B5B54 - - arm_func_start FUN_020B5BC8 -FUN_020B5BC8: ; 0x020B5BC8 - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x8 - mov r8, r0 - str r2, [sp, #0x0] - ldr r4, [r8, #0x4] - add r0, sp, #0x0 - mov r7, r1 - mov r6, r3 - mov r5, #0x0 - blx r4 - movs r1, r0 - beq _020B5C58 - ldr sb, _020B5C84 ; =0x0000FFFF - add r10, sp, #0x0 -_020B5C00: - cmp r1, #0xa - beq _020B5C58 - mov r0, r8 - bl FUN_020B5CE4 - mov r1, r0 - cmp r1, r9 - ldreq r0, [r8, #0x0] - ldreqh r1, [r0, #0x2] - mov r0, r8 - bl FUN_020B5C88 - ldrh r1, [r8, #0x8] - cmp r1, #0x0 - ldrnesb r1, [r0, #0x0] - ldrneb r0, [r0, #0x1] - addne r0, r1, r0 - ldreqsb r0, [r0, #0x2] - add r1, r7, r0 - mov r0, r10 - add r5, r5, r1 - blx r4 - movs r1, r0 - bne _020B5C00 -_020B5C58: - cmp r6, #0x0 - beq _020B5C70 - cmp r1, #0xa - ldreq r0, [sp, #0x0] - movne r0, #0x0 - str r0, [r6, #0x0] -_020B5C70: - cmp r5, #0x0 - subgt r5, r5, r7 - mov r0, r5 - add sp, sp, #0x8 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B5C84: .word 0x0000FFFF - arm_func_end FUN_020B5BC8 - - arm_func_start FUN_020B5C88 -FUN_020B5C88: ; 0x020B5C88 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x0] - ldr lr, [r3, #0xc] - cmp lr, #0x0 - beq _020B5CD8 -_020B5CA0: - ldrh r12, [lr, #0x0] - cmp r12, r1 - bhi _020B5CCC - ldrh r2, [lr, #0x2] - cmp r1, r2 - ldrlsh r2, [r0, #0xa] - addls r3, lr, #0x8 - subls r0, r1, r12 - mlals r0, r2, r0, r3 - addls sp, sp, #0x4 - ldmlsia sp!, {pc} -_020B5CCC: - ldr lr, [lr, #0x4] - cmp lr, #0x0 - bne _020B5CA0 -_020B5CD8: - add r0, r3, #0x4 - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end FUN_020B5C88 - - arm_func_start FUN_020B5CE4 -FUN_020B5CE4: ; 0x020B5CE4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x10] - cmp r0, #0x0 - beq _020B5D2C -_020B5CFC: - ldrh r2, [r0, #0x0] - cmp r2, r1 - bhi _020B5D20 - ldrh r2, [r0, #0x2] - cmp r1, r2 - bhi _020B5D20 - bl FUN_020B5D7C - add sp, sp, #0x4 - ldmia sp!, {pc} -_020B5D20: - ldr r0, [r0, #0x8] - cmp r0, #0x0 - bne _020B5CFC -_020B5D2C: - ldr r0, _020B5D38 ; =0x0000FFFF - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B5D38: .word 0x0000FFFF - arm_func_end FUN_020B5CE4 - - arm_func_start FUN_020B5D3C -FUN_020B5D3C: ; 0x020B5D3C - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, r1 - mov r1, r4 - bl FUN_020B7558 - sub r0, r0, #0x1 - strh r0, [r4, #0x8] - ldrh r0, [r4, #0x8] - cmp r0, #0x0 - movne r1, #0x2 - moveq r1, #0x3 - ldr r0, _020B5D78 ; =FUN_020B7718 - strh r1, [r4, #0xa] - str r0, [r4, #0x4] - ldmia sp!, {r4,pc} - .balign 4 -_020B5D78: .word FUN_020B7718 - arm_func_end FUN_020B5D3C - - arm_func_start FUN_020B5D7C -FUN_020B5D7C: ; 0x020B5D7C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldrh r3, [r0, #0x4] - ldr r2, _020B5E4C ; =0x0000FFFF - cmp r3, #0x0 - beq _020B5DA8 - cmp r3, #0x1 - beq _020B5DC4 - cmp r3, #0x2 - beq _020B5DD8 - b _020B5E40 -_020B5DA8: - ldrh r2, [r0, #0x0] - ldrh r3, [r0, #0xc] - sub r0, r1, r2 - add r0, r3, r0 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - b _020B5E40 -_020B5DC4: - ldrh r2, [r0, #0x0] - sub r1, r1, r2 - add r0, r0, r1, lsl #0x1 - ldrh r2, [r0, #0xc] - b _020B5E40 -_020B5DD8: - ldrh r3, [r0, #0xc] - add r0, r0, #0xc - add r0, r0, #0x2 - sub r3, r3, #0x1 - add lr, r0, r3, lsl #0x2 - cmp r0, lr - bhi _020B5E40 -_020B5DF4: - sub r12, lr, r0 - mov r3, r12, asr #0x1 - add r3, r12, r3, lsr #0x1e - mov r3, r3, asr #0x2 - add r3, r3, r3, lsr #0x1f - mov r12, r3, asr #0x1 - mov r3, r12, lsl #0x2 - ldrh r3, [r0, r3] - add r12, r0, r12, lsl #0x2 - cmp r3, r1 - addcc r0, r12, #0x4 - blo _020B5E38 - cmp r1, r3 - subcc lr, r12, #0x4 - blo _020B5E38 - ldrh r2, [r12, #0x2] - b _020B5E40 -_020B5E38: - cmp r0, lr - bls _020B5DF4 -_020B5E40: - mov r0, r2 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B5E4C: .word 0x0000FFFF - arm_func_end FUN_020B5D7C - - arm_func_start FUN_020B5E50 -FUN_020B5E50: ; 0x020B5E50 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x3c - mov r7, r0 - mov r0, r1 - cmp r0, #0x8 - ldr r0, [sp, #0x60] - str r1, [sp, #0x10] - str r0, [sp, #0x60] - ldr r0, [sp, #0x6c] - str r2, [sp, #0x14] - str r0, [sp, #0x6c] - ldrlt r0, [sp, #0x10] - mov r11, r3 - ldr r6, [sp, #0x64] - ldr r5, [sp, #0x68] - movge r2, #0x3 - clzlt r0, r0 - rsblt r2, r0, #0x1f - ldr r0, [sp, #0x14] - cmp r0, #0x8 - ldrlt r0, [sp, #0x14] - movge r1, #0x3 - clzlt r0, r0 - rsblt r1, r0, #0x1f - ldr r0, _020B6170 ; =UNK_020FF970 - mvn r3, #0x0 - add r1, r0, r1, lsl #0x3 - add r0, r1, r2, lsl #0x1 - ldrb r4, [r1, r2, lsl #0x1] - ldrb r1, [r0, #0x1] - ldr r2, [sp, #0x14] - cmp r6, #0x0 - str r1, [sp, #0x18] - ldr r1, [sp, #0x10] - and r1, r1, r3, lsl r4 - str r1, [sp, #0x1c] - ldr r1, [sp, #0x18] - and r1, r2, r3, lsl r1 - str r1, [sp, #0x20] - moveq r1, #0x1 - streq r1, [sp, #0x24] - movne r1, #0x2 - strne r1, [sp, #0x24] - mov r1, #0x0 - str r1, [sp, #0x28] - bl FUN_020B704C - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x14] - mov r10, r1, asr r4 - ldr r1, [sp, #0x18] - mov r1, r2, asr r1 - str r1, [sp, #0x2c] - ldr r1, [sp, #0x24] - mov r2, r1, lsl r4 - ldr r1, [sp, #0x18] - mov r2, r2, lsl r1 - ldr r1, [sp, #0x6c] - mov r9, r2, asr r1 - mov r1, #0x0 - str r1, [sp, #0x30] - str r1, [sp, #0x34] - b _020B5FE8 -_020B5F48: - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x18] - ldr r8, [sp, #0x34] - mov r2, r2, lsl r1 - ldr r1, [sp, #0x60] - add lr, r1, r2, lsl #0x3 - b _020B5FD4 -_020B5F64: - mov r1, r8, lsl r4 - add r2, r11, r1, lsl #0x3 - ldr r1, _020B6174 ; =0x000001FF - ldr r3, [r7, #0x0] - and r12, r2, r1 - ldr r1, _020B6178 ; =0xFE00FF00 - and r2, lr, #0xff - and r1, r3, r1 - orr r1, r1, r2 - orr r1, r1, r12, lsl #0x10 - str r1, [r7, #0x0] - ldr r3, [r7, #0x0] - ldr r1, _020B617C ; =0x3FFF3FFF - mov r2, #0x400 - and r1, r3, r1 - orr r1, r1, r0 - str r1, [r7, #0x0] - rsb r1, r2, #0x0 - ldrh r2, [r7, #0x4] - add r8, r8, #0x1 - and r1, r2, r1 - orr r1, r1, r5 - strh r1, [r7, #0x4] - ldr r1, [r7, #0x0] - add r5, r5, r9 - bic r1, r1, #0x2000 - orr r1, r1, r6, lsl #0xd - str r1, [r7], #0x8 -_020B5FD4: - cmp r8, r10 - blt _020B5F64 - ldr r1, [sp, #0x30] - add r1, r1, #0x1 - str r1, [sp, #0x30] -_020B5FE8: - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x2c] - cmp r2, r1 - blt _020B5F48 - ldr r0, [sp, #0x28] - mla r0, r10, r1, r0 - str r0, [sp, #0x28] - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x10] - cmp r1, r0 - bhs _020B6078 - ldr r0, [sp, #0x60] - ldr r1, [sp, #0x10] - str r0, [sp, #0x0] - ldr r0, [sp, #0x1c] - str r6, [sp, #0x4] - sub r4, r1, r0 - ldr r1, [sp, #0x6c] - str r5, [sp, #0x8] - str r1, [sp, #0xc] - ldr r1, [sp, #0x1c] - ldr r2, [sp, #0x20] - add r3, r11, r1, lsl #0x3 - mov r0, r7 - mov r1, r4 - bl FUN_020B5E50 - ldr r1, [sp, #0x24] - add r7, r7, r0, lsl #0x3 - mul r2, r1, r4 - ldr r1, [sp, #0x20] - mul r2, r1, r2 - ldr r1, [sp, #0x6c] - add r5, r5, r2, lsr r1 - ldr r1, [sp, #0x28] - add r0, r1, r0 - str r0, [sp, #0x28] -_020B6078: - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x14] - cmp r1, r0 - bhs _020B60F0 - ldr r1, [sp, #0x60] - ldr r0, [sp, #0x20] - mov r3, r11 - add r0, r1, r0, lsl #0x3 - str r0, [sp, #0x0] - str r6, [sp, #0x4] - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x20] - str r5, [sp, #0x8] - sub r4, r1, r0 - ldr r1, [sp, #0x6c] - mov r0, r7 - str r1, [sp, #0xc] - ldr r1, [sp, #0x1c] - mov r2, r4 - bl FUN_020B5E50 - ldr r2, [sp, #0x24] - ldr r1, [sp, #0x1c] - add r7, r7, r0, lsl #0x3 - mul r1, r2, r1 - mul r2, r4, r1 - ldr r1, [sp, #0x6c] - add r5, r5, r2, lsr r1 - ldr r1, [sp, #0x28] - add r0, r1, r0 - str r0, [sp, #0x28] -_020B60F0: - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x10] - cmp r1, r0 - bhs _020B6164 - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x14] - cmp r1, r0 - bhs _020B6164 - ldr r1, [sp, #0x60] - ldr r0, [sp, #0x20] - ldr r2, [sp, #0x10] - add r0, r1, r0, lsl #0x3 - ldr r1, [sp, #0x1c] - ldr r3, [sp, #0x14] - str r0, [sp, #0x0] - sub r1, r2, r1 - ldr r2, [sp, #0x20] - str r6, [sp, #0x4] - sub r2, r3, r2 - ldr r3, [sp, #0x1c] - ldr r4, [sp, #0x6c] - str r5, [sp, #0x8] - mov r0, r7 - add r3, r11, r3, lsl #0x3 - str r4, [sp, #0xc] - bl FUN_020B5E50 - ldr r1, [sp, #0x28] - add r0, r1, r0 - str r0, [sp, #0x28] -_020B6164: - ldr r0, [sp, #0x28] - add sp, sp, #0x3c - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B6170: .word UNK_020FF970 -_020B6174: .word 0x000001FF -_020B6178: .word 0xFE00FF00 -_020B617C: .word 0x3FFF3FFF - arm_func_end FUN_020B5E50 - - arm_func_start FUN_020B6180 -FUN_020B6180: ; 0x020B6180 - stmdb sp!, {r4-r6,lr} - mov r3, r0, lsr #0x3 - mov r6, r1, lsr #0x3 - mul r12, r3, r6 - and r2, r0, #0x4 - and lr, r0, #0x2 - and r0, r0, #0x1 - add r4, r0, lr, lsr #0x1 - mov r5, r2, lsr #0x2 - and r0, r1, #0x4 - add lr, r12, #0x0 - add r12, r5, r4, lsl #0x1 - mla r12, r6, r12, lr - and lr, r1, #0x2 - and r1, r1, #0x1 - add lr, r1, lr, lsr #0x1 - mov r1, r0, lsr #0x2 - add r1, r1, lr, lsl #0x1 - mla r12, r3, r1, r12 - add r1, r4, r2, lsr #0x2 - add r0, lr, r0, lsr #0x2 - mla r0, r1, r0, r12 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020B6180 - - arm_func_start FUN_020B61DC -FUN_020B61DC: ; 0x020B61DC - stmdb sp!, {r4-r8,lr} - ldr r12, [sp, #0x1c] - ldr r8, [sp, #0x18] - mov r12, r12, lsl #0x1c - mov r4, r12, lsr #0x10 - mov r6, #0x0 - cmp r2, #0x0 - ldmleia sp!, {r4-r8,pc} - mov lr, r3, lsl #0x1 - mov r12, r6 -_020B6204: - mov r5, r0 - mov r7, r12 - cmp r1, #0x0 - ble _020B622C -_020B6214: - orr r3, r4, r8 - add r7, r7, #0x1 - cmp r7, r1 - add r8, r8, #0x1 - strh r3, [r5], #0x2 - blt _020B6214 -_020B622C: - add r6, r6, #0x1 - cmp r6, r2 - add r0, r0, lr - blt _020B6204 - ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020B61DC - - arm_func_start FUN_020B6240 -FUN_020B6240: ; 0x020B6240 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - ldr r5, [sp, #0x24] - ldr lr, [sp, #0x20] - cmp r5, #0x20 - ldr r12, [sp, #0x28] - bgt _020B6280 - mla r4, r5, lr, r3 - ldr lr, [sp, #0x2c] - str r12, [sp, #0x0] - mov r3, r5 - add r0, r0, r4, lsl #0x1 - str lr, [sp, #0x4] - bl FUN_020B61DC - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} -_020B6280: - ldr r4, [sp, #0x2c] - add r7, lr, r2 - mov r2, r4, lsl #0x1c - cmp lr, r7 - add r8, r3, r1 - mov r4, r2, lsr #0x10 - addge sp, sp, #0x8 - ldmgeia sp!, {r4-r8,pc} -_020B62A0: - cmp lr, #0x20 - movlt r1, lr - addge r1, lr, #0x20 - mov r6, r3 - cmp r3, r8 - add r5, r0, r1, lsl #0x6 - bge _020B62E4 -_020B62BC: - cmp r6, #0x20 - movlt r1, r6 - addge r1, r6, #0x3e0 - orr r2, r4, r12 - mov r1, r1, lsl #0x1 - add r6, r6, #0x1 - strh r2, [r5, r1] - cmp r6, r8 - add r12, r12, #0x1 - blt _020B62BC -_020B62E4: - add lr, lr, #0x1 - cmp lr, r7 - blt _020B62A0 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020B6240 - - arm_func_start FUN_020B62F8 -FUN_020B62F8: ; 0x020B62F8 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x18 - cmp r2, #0x8 - movlt r4, r2 - movge r12, #0x3 - clzlt r4, r4 - rsblt r12, r4, #0x1f - cmp r3, #0x8 - movlt r4, r3 - movge r6, #0x3 - clzlt r4, r4 - rsblt r6, r4, #0x1f - ldr r4, _020B6378 ; =UNK_020FF970 - ldr r5, [sp, #0x28] - add r4, r4, r6, lsl #0x3 - ldrb r6, [r4, r12, lsl #0x1] - add r12, r4, r12, lsl #0x1 - ldr r4, _020B637C ; =FUN_020B6908 - strb r6, [sp, #0x14] - ldrb r6, [r12, #0x1] - ldr lr, _020B6380 ; =FUN_020B68AC - ldr ip, _020B6384 ; =FUN_020B64C0 - strb r6, [sp, #0x15] - str r5, [sp, #0x0] - str r4, [sp, #0x4] - str lr, [sp, #0x8] - str r12, [sp, #0xc] - ldr r12, [sp, #0x14] - str r12, [sp, #0x10] - bl FUN_020B6488 - add sp, sp, #0x18 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B6378: .word UNK_020FF970 -_020B637C: .word FUN_020B6908 -_020B6380: .word FUN_020B68AC -_020B6384: .word FUN_020B64C0 - arm_func_end FUN_020B62F8 - - arm_func_start FUN_020B6388 -FUN_020B6388: ; 0x020B6388 - stmdb sp!, {lr} - sub sp, sp, #0x14 - ldr lr, [sp, #0x18] - ldr ip, _020B63C0 ; =FUN_020B6B10 - str lr, [sp, #0x0] - ldr lr, _020B63C4 ; =FUN_020B68AC - str r12, [sp, #0x4] - ldr ip, _020B63C8 ; =FUN_020B66D4 - str lr, [sp, #0x8] - str r12, [sp, #0xc] - str r2, [sp, #0x10] - bl FUN_020B6488 - add sp, sp, #0x14 - ldmia sp!, {pc} - .balign 4 -_020B63C0: .word FUN_020B6B10 -_020B63C4: .word FUN_020B68AC -_020B63C8: .word FUN_020B66D4 - arm_func_end FUN_020B6388 - - arm_func_start FUN_020B63CC -FUN_020B63CC: ; 0x020B63CC - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x10 - mov r7, r1 - ldrh r1, [sp, #0x2c] - mov r8, r0 - mov r0, r7 - mov r6, r2 - mov r5, r3 - bl FUN_020B5CE4 - ldr r1, _020B6484 ; =0x0000FFFF - mov r4, r0 - cmp r4, r1 - ldreq r0, [r7, #0x0] - ldreqh r4, [r0, #0x2] - mov r0, r7 - mov r1, r4 - bl FUN_020B5C88 - str r0, [sp, #0x8] - ldr r0, [r7, #0x0] - ldr r2, [sp, #0x28] - ldr r0, [r0, #0x8] - add r1, sp, #0x8 - ldrh r3, [r0, #0x2] - add r12, r0, #0x8 - mov r0, r8 - mla r3, r4, r3, r12 - str r3, [sp, #0xc] - str r2, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [sp, #0x8] - ldr r4, [r8, #0x14] - ldrsb r2, [r1, #0x0] - mov r1, r7 - mov r3, r5 - add r2, r6, r2 - blx r4 - ldrh r0, [r7, #0x8] - cmp r0, #0x0 - ldrne r0, [sp, #0x8] - ldrnesb r1, [r0, #0x0] - ldrneb r0, [r0, #0x1] - addne r0, r1, r0 - ldreq r0, [sp, #0x8] - ldreqsb r0, [r0, #0x2] - add sp, sp, #0x10 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020B6484: .word 0x0000FFFF - arm_func_end FUN_020B63CC - - arm_func_start FUN_020B6488 -FUN_020B6488: ; 0x020B6488 - str r2, [r0, #0x4] - ldr r2, [sp, #0x0] - str r3, [r0, #0x8] - strb r2, [r0, #0xc] - ldr r2, [sp, #0x4] - str r1, [r0, #0x0] - ldr r1, [sp, #0x8] - str r2, [r0, #0x14] - ldr r2, [sp, #0xc] - str r1, [r0, #0x18] - ldr r1, [sp, #0x10] - str r2, [r0, #0x1c] - str r1, [r0, #0x10] - bx lr - arm_func_end FUN_020B6488 - - arm_func_start FUN_020B64C0 -FUN_020B64C0: ; 0x020B64C0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x54 - ldrb r4, [r0, #0xc] - mov r10, r2 - str r1, [sp, #0xc] - str r4, [sp, #0x44] - ldr r1, [sp, #0x44] - ldr r4, [sp, #0x78] - cmp r1, #0x4 - add r1, r10, r4 - str r1, [sp, #0x1c] - ldr r2, [sp, #0x7c] - mov r1, r3 - add r1, r1, r2 - str r1, [sp, #0x20] - ldrne r1, [sp, #0xc] - str r3, [sp, #0x10] - orrne r1, r1, r1, lsl #0x8 - orrne r1, r1, r1, lsl #0x10 - strne r1, [sp, #0xc] - bne _020B6528 - ldr r1, [sp, #0xc] - orr r1, r1, r1, lsl #0x4 - orr r1, r1, r1, lsl #0x8 - orr r1, r1, r1, lsl #0x10 - str r1, [sp, #0xc] -_020B6528: - bic r1, r10, #0x7 - str r1, [sp, #0x30] - ldr r1, [sp, #0x10] - ldr r2, [r0, #0x10] - bic r1, r1, #0x7 - str r1, [sp, #0x14] - ldr r1, [sp, #0x44] - str r2, [sp, #0x4c] - mov r3, r1, lsl #0x6 - mov r2, r3, asr #0x2 - ldr r1, [sp, #0x20] - add r3, r3, r2, lsr #0x1d - ldr r2, [sp, #0x1c] - add r6, r1, #0x7 - add r2, r2, #0x7 - bic r5, r2, #0x7 - bic r2, r6, #0x7 - ldr r1, [sp, #0x30] - str r2, [sp, #0x24] - mov r2, r3, asr #0x3 - str r2, [sp, #0x48] - mov r4, r1, asr #0x2 - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x14] - add r2, r2, r4, lsr #0x1d - mov r2, r2, asr #0x3 - str r2, [sp, #0x2c] - ldr r2, [sp, #0x14] - mov r1, r1, asr #0x2 - add r1, r2, r1, lsr #0x1d - mov r6, r1, asr #0x3 - ldr r1, [sp, #0x24] - cmp r2, r1 - ldr r1, [r0, #0x4] - str r1, [sp, #0x40] - ldr r1, [r0, #0x8] - ldr r0, [r0, #0x0] - str r1, [sp, #0x3c] - str r0, [sp, #0x28] - ldrb r0, [sp, #0x4c] - str r0, [sp, #0x38] - ldrb r0, [sp, #0x4d] - str r0, [sp, #0x34] - addge sp, sp, #0x54 - ldmgeia sp!, {r4-r11,pc} - mov r4, #0x0 - mov r11, #0x8 -_020B65E4: - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x10] - ldr r7, [sp, #0x2c] - cmp r1, r0 - movlt r1, r0 - ldrlt r0, [sp, #0x14] - sublt r9, r1, r0 - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x14] - movge r9, r4 - sub r0, r1, r0 - cmp r0, #0x8 - movgt r0, r11 - sub r0, r0, r9 - str r0, [sp, #0x18] - ldr r0, [sp, #0x30] - cmp r0, r5 - mov r8, r0 - bge _020B66B0 -_020B6630: - ldr r0, [sp, #0x38] - ldr r2, [sp, #0x40] - str r0, [sp, #0x0] - ldr r0, [sp, #0x34] - ldr r3, [sp, #0x3c] - str r0, [sp, #0x4] - mov r0, r7 - mov r1, r6 - bl FUN_020B7068 - ldr r2, [sp, #0x1c] - cmp r8, r10 - sublt r1, r10, r8 - sub r2, r2, r8 - movge r1, r4 - cmp r2, #0x8 - movgt r2, r11 - sub r3, r2, r1 - ldr r2, [sp, #0x18] - ldr r12, [sp, #0x48] - str r2, [sp, #0x0] - ldr r2, [sp, #0xc] - str r2, [sp, #0x4] - ldr r2, [sp, #0x44] - str r2, [sp, #0x8] - ldr r2, [sp, #0x28] - mla r0, r12, r0, r2 - mov r2, r9 - bl FUN_020B6F18 - add r8, r8, #0x8 - add r7, r7, #0x1 - cmp r8, r5 - blt _020B6630 -_020B66B0: - ldr r0, [sp, #0x14] - add r6, r6, #0x1 - add r1, r0, #0x8 - ldr r0, [sp, #0x24] - str r1, [sp, #0x14] - cmp r1, r0 - blt _020B65E4 - add sp, sp, #0x54 - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B64C0 - - arm_func_start FUN_020B66D4 -FUN_020B66D4: ; 0x020B66D4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x3c - ldrb r4, [r0, #0xc] - mov r10, r2 - str r1, [sp, #0xc] - str r4, [sp, #0x2c] - ldr r1, [sp, #0x2c] - ldr r4, [sp, #0x60] - cmp r1, #0x4 - add r1, r10, r4 - str r1, [sp, #0x18] - ldr r2, [sp, #0x64] - mov r1, r3 - add r1, r1, r2 - str r1, [sp, #0x1c] - ldrne r1, [sp, #0xc] - str r3, [sp, #0x10] - orrne r1, r1, r1, lsl #0x8 - orrne r1, r1, r1, lsl #0x10 - strne r1, [sp, #0xc] - bne _020B673C - ldr r1, [sp, #0xc] - orr r1, r1, r1, lsl #0x4 - orr r1, r1, r1, lsl #0x8 - orr r1, r1, r1, lsl #0x10 - str r1, [sp, #0xc] -_020B673C: - ldr r1, [sp, #0x10] - bic r1, r1, #0x7 - mov r2, r1, asr #0x2 - str r1, [sp, #0x14] - add r1, r1, r2, lsr #0x1d - ldr r2, [r0, #0x10] - mov r3, r1, asr #0x3 - mul r1, r3, r2 - bic r3, r10, #0x7 - str r3, [sp, #0x28] - ldr r3, [sp, #0x2c] - mov r6, r3, lsl #0x6 - ldr r3, [sp, #0x28] - mov r4, r6, asr #0x2 - mov r5, r3, asr #0x2 - add r5, r3, r5, lsr #0x1d - add r4, r6, r4, lsr #0x1d - mov r3, r4, asr #0x3 - str r3, [sp, #0x30] - ldr r3, [sp, #0x1c] - add r1, r1, r5, asr #0x3 - add r4, r3, #0x7 - ldr r3, [r0, #0x0] - ldr r0, [sp, #0x18] - add r5, r0, #0x7 - ldr r0, [sp, #0x30] - bic r7, r5, #0x7 - mla r1, r0, r1, r3 - bic r0, r4, #0x7 - str r0, [sp, #0x20] - ldr r0, [sp, #0x30] - str r1, [sp, #0x24] - mul r0, r2, r0 - str r0, [sp, #0x34] - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x20] - cmp r1, r0 - addge sp, sp, #0x3c - ldmgeia sp!, {r4-r11,pc} - mov r5, #0x0 - mov r4, #0x8 -_020B67E0: - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x10] - ldr r6, [sp, #0x24] - cmp r1, r0 - movlt r1, r0 - ldrlt r0, [sp, #0x14] - sublt r9, r1, r0 - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x14] - movge r9, r5 - sub r0, r1, r0 - cmp r0, #0x8 - movgt r0, r4 - sub r11, r0, r9 - ldr r0, [sp, #0x28] - cmp r0, r7 - mov r8, r0 - bge _020B687C -_020B6828: - ldr r0, [sp, #0x18] - cmp r8, r10 - sublt r1, r10, r8 - sub r0, r0, r8 - movge r1, r5 - cmp r0, #0x8 - movgt r0, r4 - sub r3, r0, r1 - ldr r0, [sp, #0xc] - str r11, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x2c] - mov r2, r9 - str r0, [sp, #0x8] - mov r0, r6 - bl FUN_020B6F18 - ldr r0, [sp, #0x30] - add r8, r8, #0x8 - add r6, r6, r0 - cmp r8, r7 - blt _020B6828 -_020B687C: - ldr r1, [sp, #0x24] - ldr r0, [sp, #0x34] - add r0, r1, r0 - str r0, [sp, #0x24] - ldr r0, [sp, #0x14] - add r1, r0, #0x8 - ldr r0, [sp, #0x20] - str r1, [sp, #0x14] - cmp r1, r0 - blt _020B67E0 - add sp, sp, #0x3c - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B66D4 - - arm_func_start FUN_020B68AC -FUN_020B68AC: ; 0x020B68AC - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r3, r0 - ldrb r2, [r3, #0xc] - ldr r12, [r3, #0x4] - cmp r2, #0x4 - orreq r0, r1, r1, lsl #0x4 - orreq r0, r0, r0, lsl #0x8 - orreq r1, r0, r0, lsl #0x10 - orrne r0, r1, r1, lsl #0x8 - orrne r1, r0, r0, lsl #0x10 - ldr r0, [r3, #0x8] - mov r2, r2, lsl #0x6 - mul lr, r12, r0 - mov r0, r2, asr #0x2 - add r0, r2, r0, lsr #0x1d - mov r2, r0, asr #0x3 - mov r0, r1 - mul r2, lr, r2 - ldr r1, [r3, #0x0] - bl MIi_CpuClearFast - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end FUN_020B68AC - - arm_func_start FUN_020B6908 -FUN_020B6908: ; 0x020B6908 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4c - ldr r7, [sp, #0x74] - ldrb r5, [r0, #0xc] - ldr r6, [r1, #0x0] - ldr r4, [r7, #0x0] - ldr r9, [r6, #0x8] - mov r8, r5, lsl #0x6 - ldrb r4, [r4, #0x1] - mov r5, r8, asr #0x2 - add r5, r8, r5, lsr #0x1d - ldrb r9, [r9, #0x1] - ldr r8, [r0, #0x4] - ldr r6, [r0, #0x8] - str r2, [sp, #0x8] - str r3, [sp, #0xc] - cmp r4, #0x0 - mov r5, r5, asr #0x3 - addeq sp, sp, #0x4c - ldmeqia sp!, {r4-r11,pc} - adds r3, r2, r4 - addmi sp, sp, #0x4c - ldmmiia sp!, {r4-r11,pc} - ldr r2, [sp, #0xc] - adds r2, r2, r9 - addmi sp, sp, #0x4c - ldmmiia sp!, {r4-r11,pc} - ldr r10, [sp, #0x8] - add r3, r3, #0x7 - cmp r10, #0x0 - movle r10, #0x0 - strle r10, [sp, #0x10] - movgt r10, r10, lsr #0x3 - strgt r10, [sp, #0x10] - ldr r10, [sp, #0xc] - add r2, r2, #0x7 - cmp r10, #0x0 - movle r10, #0x0 - mov r11, r2, lsr #0x3 - mov r3, r3, lsr #0x3 - movgt r10, r10, lsr #0x3 - cmp r3, r8 - movcs r3, r8 - cmp r11, r6 - ldr r2, [sp, #0x10] - movcs r11, r6 - subs r8, r3, r2 - addmi sp, sp, #0x4c - sub r3, r11, r10 - ldmmiia sp!, {r4-r11,pc} - cmp r3, #0x0 - addlt sp, sp, #0x4c - ldmltia sp!, {r4-r11,pc} - ldr r2, [sp, #0x8] - ldr r6, [r0, #0x0] - cmp r2, #0x0 - andge r2, r2, #0x7 - strge r2, [sp, #0x8] - ldr r2, [sp, #0xc] - ldr r11, [sp, #0x8] - cmp r2, #0x0 - andge r2, r2, #0x7 - strge r2, [sp, #0xc] - sub r8, r11, r8, lsl #0x3 - ldr r11, [sp, #0xc] - ldr r2, [sp, #0x70] - sub r3, r11, r3, lsl #0x3 - str r3, [sp, #0x14] - ldr r3, [r7, #0x4] - sub r2, r2, #0x1 - str r3, [sp, #0x28] - str r2, [sp, #0x48] - str r9, [sp, #0x38] - str r4, [sp, #0x34] - ldr r4, [r1, #0x0] - ldr r2, [sp, #0x14] - mov r3, r11 - cmp r3, r2 - ldr r2, [r4, #0x8] - ldrb r3, [r2, #0x6] - str r3, [sp, #0x40] - ldrb r2, [r0, #0xc] - str r2, [sp, #0x44] - ldr r1, [r1, #0x0] - ldr r1, [r1, #0x8] - ldrb r1, [r1, #0x0] - mul r1, r3, r1 - str r1, [sp, #0x3c] - ldr r1, [r0, #0x10] - str r1, [sp, #0x20] - ldr r1, [r0, #0x4] - ldr r0, [r0, #0x8] - ldrb r11, [sp, #0x20] - ldrb r4, [sp, #0x21] - str r1, [sp, #0x1c] - str r0, [sp, #0x18] - addle sp, sp, #0x4c - ldmleia sp!, {r4-r11,pc} -_020B6A90: - ldr r0, [sp, #0xc] - ldr r7, [sp, #0x10] - str r0, [sp, #0x30] - ldr r0, [sp, #0x8] - cmp r0, r8 - mov r9, r0 - ble _020B6AEC -_020B6AAC: - ldr r2, [sp, #0x1c] - str r11, [sp, #0x0] - ldr r3, [sp, #0x18] - mov r0, r7 - mov r1, r10 - str r4, [sp, #0x4] - bl FUN_020B7068 - mla r1, r0, r5, r6 - add r0, sp, #0x24 - str r9, [sp, #0x2c] - str r1, [sp, #0x24] - bl FUN_020B6CAC - sub r9, r9, #0x8 - add r7, r7, #0x1 - cmp r9, r8 - bgt _020B6AAC -_020B6AEC: - ldr r0, [sp, #0xc] - add r10, r10, #0x1 - sub r1, r0, #0x8 - ldr r0, [sp, #0x14] - str r1, [sp, #0xc] - cmp r1, r0 - bgt _020B6A90 - add sp, sp, #0x4c - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B6908 - - arm_func_start FUN_020B6B10 -FUN_020B6B10: ; 0x020B6B10 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x2c - ldr r4, [sp, #0x54] - ldrb r5, [r0, #0xc] - str r4, [sp, #0x54] - ldr r4, [r4, #0x0] - ldr r6, [r1, #0x0] - mov r7, r5, lsl #0x6 - ldrb r4, [r4, #0x1] - mov r5, r7, asr #0x2 - add r5, r7, r5, lsr #0x1d - cmp r4, #0x0 - ldr r6, [r6, #0x8] - mov r9, r3 - ldr r8, [r0, #0x4] - ldr r7, [r0, #0x8] - mov r10, r2 - mov r5, r5, asr #0x3 - addeq sp, sp, #0x2c - ldr lr, [r0, #0x0] - ldrb r3, [r6, #0x1] - ldmeqia sp!, {r4-r11,pc} - adds r6, r10, r4 - addmi sp, sp, #0x2c - ldmmiia sp!, {r4-r11,pc} - adds r2, r9, r3 - addmi sp, sp, #0x2c - ldmmiia sp!, {r4-r11,pc} - cmp r10, #0x0 - movle r11, #0x0 - add r6, r6, #0x7 - movgt r11, r10, lsr #0x3 - cmp r9, #0x0 - movle r12, #0x0 - add r2, r2, #0x7 - mov r6, r6, lsr #0x3 - movgt r12, r9, lsr #0x3 - cmp r6, r8 - movcs r6, r8 - mov r2, r2, lsr #0x3 - cmp r2, r7 - movcs r2, r7 - subs r7, r6, r11 - addmi sp, sp, #0x2c - sub r2, r2, r12 - ldmmiia sp!, {r4-r11,pc} - cmp r2, #0x0 - addlt sp, sp, #0x2c - ldmltia sp!, {r4-r11,pc} - ldr r6, [r0, #0x10] - cmp r10, #0x0 - sub r8, r6, r7 - mul r8, r5, r8 - mla r11, r6, r12, r11 - andge r10, r10, #0x7 - str r8, [sp, #0x0] - ldr r8, [sp, #0x54] - mla r6, r5, r11, lr - ldr r12, [r8, #0x4] - ldr r11, [sp, #0x50] - cmp r9, #0x0 - sub r8, r11, #0x1 - andge r9, r9, #0x7 - sub r11, r9, r2, lsl #0x3 - str r12, [sp, #0x8] - str r4, [sp, #0x14] - str r8, [sp, #0x28] - str r3, [sp, #0x18] - ldr r3, [r1, #0x0] - cmp r9, r11 - ldr r2, [r3, #0x8] - sub r7, r10, r7, lsl #0x3 - ldrb r2, [r2, #0x6] - str r2, [sp, #0x20] - ldrb r0, [r0, #0xc] - str r0, [sp, #0x24] - ldr r0, [r1, #0x0] - ldr r0, [r0, #0x8] - ldrb r0, [r0, #0x0] - mul r0, r2, r0 - str r0, [sp, #0x1c] - addle sp, sp, #0x2c - ldmleia sp!, {r4-r11,pc} - add r4, sp, #0x4 -_020B6C60: - mov r8, r10 - str r9, [sp, #0x10] - cmp r10, r7 - ble _020B6C90 -_020B6C70: - mov r0, r4 - str r6, [sp, #0x4] - str r8, [sp, #0xc] - bl FUN_020B6CAC - sub r8, r8, #0x8 - cmp r8, r7 - add r6, r6, r5 - bgt _020B6C70 -_020B6C90: - ldr r0, [sp, #0x0] - sub r9, r9, #0x8 - cmp r9, r11 - add r6, r6, r0 - bgt _020B6C60 - add sp, sp, #0x2c - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B6B10 - - arm_func_start FUN_020B6CAC -FUN_020B6CAC: ; 0x020B6CAC - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x34 - ldr r5, [r0, #0x8] - ldr r4, [r0, #0xc] - cmp r5, #0x0 - strge r5, [sp, #0x0] - movlt r1, #0x0 - strlt r1, [sp, #0x0] - ldr r1, [r0, #0x10] - cmp r4, #0x0 - add r10, r5, r1 - ldr r1, [r0, #0x14] - movge r2, r4 - movlt r2, #0x0 - cmp r10, #0x8 - add r3, r4, r1 - movge r10, #0x8 - cmp r3, #0x8 - movge r3, #0x8 - cmp r4, #0x0 - movgt r4, #0x0 - cmp r5, #0x0 - ldr r8, [r0, #0x20] - movgt r5, #0x0 - rsb r1, r4, #0x0 - mul r7, r10, r8 - ldr r6, [r0, #0x1c] - rsb r4, r5, #0x0 - mul r9, r6, r4 - ldr r4, [r0, #0x18] - mov r10, r7 - str r4, [sp, #0x8] - ldr r4, [sp, #0x0] - cmp r8, #0x4 - mul r5, r4, r8 - ldr r4, [sp, #0x8] - str r5, [sp, #0x0] - mla r11, r1, r4, r9 - ldr r1, [r0, #0x4] - str r1, [sp, #0x4] - bne _020B6E24 - ldr r1, [r0, #0x0] - ldr r7, [r0, #0x24] - add r0, r1, r2, lsl #0x2 - str r0, [sp, #0xc] - add r0, r1, r3, lsl #0x2 - ldr r1, [sp, #0xc] - str r0, [sp, #0x10] - cmp r1, r0 - addcs sp, sp, #0x34 - ldmcsia sp!, {r4-r11,pc} - mov r0, #0x0 - add r9, sp, #0x24 - mov r4, #0xf - str r0, [sp, #0x1c] -_020B6D88: - ldr r0, [sp, #0xc] - mov r1, r11, lsr #0x1f - ldr r5, [r0, #0x0] - ldr r0, [sp, #0x4] - rsb r2, r1, r11, lsl #0x1d - add r0, r0, r11, lsr #0x3 - str r0, [sp, #0x24] - ldr r0, [sp, #0x1c] - add r1, r1, r2, ror #0x1d - strb r0, [sp, #0x28] - strb r0, [sp, #0x29] - mov r0, r9 - bl FUN_020B76B0 - ldr r8, [sp, #0x0] - mov r0, r8 - cmp r0, r10 - bhs _020B6DF8 -_020B6DCC: - mov r0, r9 - mov r1, r6 - bl FUN_020B76B0 - cmp r0, #0x0 - mvnne r1, r4, lsl r8 - addne r0, r7, r0 - andne r1, r5, r1 - orrne r5, r1, r0, lsl r8 - add r8, r8, #0x4 - cmp r8, r10 - blo _020B6DCC -_020B6DF8: - ldr r0, [sp, #0xc] - add r1, r0, #0x4 - str r5, [r0, #0x0] - ldr r0, [sp, #0x10] - str r1, [sp, #0xc] - cmp r1, r0 - ldr r0, [sp, #0x8] - add r11, r11, r0 - blo _020B6D88 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} -_020B6E24: - ldr r1, [r0, #0x0] - ldr r9, [r0, #0x24] - add r0, r1, r2, lsl #0x3 - str r0, [sp, #0x14] - add r0, r1, r3, lsl #0x3 - ldr r1, [sp, #0x14] - str r0, [sp, #0x18] - cmp r1, r0 - addcs sp, sp, #0x34 - ldmcsia sp!, {r4-r11,pc} - mov r0, #0x0 - mov r4, #0xff - str r0, [sp, #0x20] -_020B6E58: - mov r1, r11, lsr #0x1f - rsb r0, r1, r11, lsl #0x1d - add r1, r1, r0, ror #0x1d - ldr r0, [sp, #0x14] - ldr r8, [r0, #0x0] - ldr r7, [r0, #0x4] - ldr r0, [sp, #0x4] - add r0, r0, r11, lsr #0x3 - str r0, [sp, #0x2c] - ldr r0, [sp, #0x20] - strb r0, [sp, #0x30] - strb r0, [sp, #0x31] - add r0, sp, #0x2c - bl FUN_020B76B0 - ldr r0, [sp, #0x0] - cmp r0, r10 - mov r5, r0 - bhs _020B6EE8 -_020B6EA0: - add r0, sp, #0x2c - mov r1, r6 - bl FUN_020B76B0 - cmp r0, #0x0 - beq _020B6EDC - cmp r5, #0x20 - mvncc r1, r4, lsl r5 - addcc r0, r9, r0 - andcc r1, r8, r1 - orrcc r8, r1, r0, lsl r5 - subcs r2, r5, #0x20 - mvncs r1, r4, lsl r2 - addcs r0, r9, r0 - andcs r1, r7, r1 - orrcs r7, r1, r0, lsl r2 -_020B6EDC: - add r5, r5, #0x8 - cmp r5, r10 - blo _020B6EA0 -_020B6EE8: - ldr r0, [sp, #0x14] - str r8, [r0, #0x0] - add r1, r0, #0x8 - str r7, [r0, #0x4] - ldr r0, [sp, #0x18] - str r1, [sp, #0x14] - cmp r1, r0 - ldr r0, [sp, #0x8] - add r11, r11, r0 - blo _020B6E58 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B6CAC - - arm_func_start FUN_020B6F18 -FUN_020B6F18: ; 0x020B6F18 - stmdb sp!, {r4-r6,lr} - mov lr, r0 - cmp r3, #0x8 - ldr r0, [sp, #0x14] - bne _020B6F4C - ldr r4, [sp, #0x10] - cmp r4, #0x8 - bne _020B6F4C - ldr r2, [sp, #0x18] - mov r1, lr - mov r2, r2, lsl #0x3 - bl MIi_CpuClearFast - ldmia sp!, {r4-r6,pc} -_020B6F4C: - ldr r4, [sp, #0x18] - cmp r4, #0x4 - bne _020B6FAC - mov r5, r1, lsl #0x2 - add r4, r5, r3, lsl #0x2 - mvn r3, #0x0 - rsb r4, r4, #0x20 - mov r3, r3, lsr r5 - add r1, r4, r1, lsl #0x2 - mov r3, r3, lsl r1 - ldr r1, [sp, #0x10] - add r5, lr, r2, lsl #0x2 - add r2, r5, r1, lsl #0x2 - and r6, r0, r3, lsr r4 - cmp r5, r2 - mvn r1, r3, lsr r4 - ldmcsia sp!, {r4-r6,pc} -_020B6F90: - ldr r0, [r5, #0x0] - and r0, r0, r1 - orr r0, r6, r0 - str r0, [r5], #0x4 - cmp r5, r2 - blo _020B6F90 - ldmia sp!, {r4-r6,pc} -_020B6FAC: - mov r12, r1, lsl #0x3 - add r1, r12, r3, lsl #0x3 - rsb r1, r1, #0x40 - mvn r3, #0x0 - cmp r1, #0x20 - mov r5, r3, lsr r12 - subcs r4, r1, #0x20 - addcs r3, r12, r4 - movcs r3, r5, lsl r3 - movcs r3, r3, lsr r4 - movcc r3, r5, lsl r12 - mvn r4, #0x0 - add r5, lr, r2, lsl #0x3 - cmp r12, #0x20 - mov r4, r4, lsl r1 - subcs r12, r12, #0x20 - addcs r1, r12, r1 - movcs r1, r4, lsr r1 - movcs r6, r1, lsl r12 - movcc r6, r4, lsr r1 - ldr r1, [sp, #0x10] - and lr, r0, r3 - add r4, r5, r1, lsl #0x3 - cmp r5, r4 - and r12, r0, r6 - mvn r2, r3 - mvn r1, r6 - ldmcsia sp!, {r4-r6,pc} -_020B701C: - ldr r0, [r5, #0x0] - and r0, r0, r2 - orr r0, lr, r0 - str r0, [r5, #0x0] - ldr r0, [r5, #0x4] - and r0, r0, r1 - orr r0, r12, r0 - str r0, [r5, #0x4] - add r5, r5, #0x8 - cmp r5, r4 - blo _020B701C - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020B6F18 - - arm_func_start FUN_020B704C -FUN_020B704C: ; 0x020B704C - ldrb r3, [r0, #0x1] - ldr r2, _020B7064 ; =UNK_020FF990 - ldrb r1, [r0, #0x0] - add r0, r2, r3, lsl #0x4 - ldr r0, [r0, r1, lsl #0x2] - bx lr - .balign 4 -_020B7064: .word UNK_020FF990 - arm_func_end FUN_020B704C - - arm_func_start FUN_020B7068 -FUN_020B7068: ; 0x020B7068 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr fp, _020B7164 ; =UNK_020FF970 - mov r9, #0x0 - mov r10, #0x3 - mvn r7, #0x0 -_020B7080: - ldr r4, [sp, #0x2c] - ldr r6, [sp, #0x28] - and r12, r3, r7, lsl r4 - cmp r12, r1 - mov r8, r7, lsl r6 - mov r5, r7, lsl r4 - and lr, r2, r7, lsl r6 - bhi _020B70D0 - mla r9, r2, r12, r9 - cmp lr, r0 - movhi r2, lr - subhi r1, r1, r12 - subhi r3, r3, r12 - bhi _020B7118 - sub r3, r3, r12 - mla r9, lr, r3, r9 - sub r0, r0, lr - sub r1, r1, r12 - sub r2, r2, lr - b _020B7118 -_020B70D0: - cmp lr, r0 - mlals r9, lr, r12, r9 - mvn r3, r5 - movls r3, r12 - subls r0, r0, lr - subls r2, r2, lr - bls _020B7118 - and r2, r1, r5 - mla r5, lr, r2, r9 - and r2, r0, r8 - and r1, r1, r3 - add r2, r5, r2, lsl r4 - mvn r3, r8 - add r1, r2, r1, lsl r6 - and r0, r0, r3 - add sp, sp, #0x4 - add r0, r1, r0 - ldmia sp!, {r4-r11,pc} -_020B7118: - cmp r2, #0x8 - movlt r4, r2 - movge r5, r10 - clzlt r4, r4 - rsblt r5, r4, #0x1f - cmp r3, #0x8 - movge r4, r10 - movlt r4, r3 - clzlt r4, r4 - rsblt r4, r4, #0x1f - add r4, r11, r4, lsl #0x3 - add r6, r4, r5, lsl #0x1 - ldrb r5, [r4, r5, lsl #0x1] - ldrb r4, [r6, #0x1] - str r5, [sp, #0x28] - str r4, [sp, #0x2c] - b _020B7080 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B7164: .word UNK_020FF970 - arm_func_end FUN_020B7068 - - arm_func_start FUN_020B7168 -FUN_020B7168: ; 0x020B7168 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0xc - ldr r12, [sp, #0x28] - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - ands r0, r12, #0x100 - beq _020B71AC - ldr r0, [r7, #0x4] - ldr r1, [r7, #0xc] - ldr r2, [sp, #0x2c] - bl FUN_020B5B54 - ldr r1, [sp, #0x20] - sub r0, r1, r0 - add r5, r5, r0 - b _020B71E4 -_020B71AC: - ands r0, r12, #0x80 - beq _020B71E4 - ldr r0, [r7, #0x4] - ldr r1, [r7, #0xc] - ldr r2, [sp, #0x2c] - bl FUN_020B5B54 - ldr r2, [sp, #0x20] - add r1, r0, #0x1 - add r0, r2, #0x1 - add r0, r0, r0, lsr #0x1f - mov r2, r0, asr #0x1 - add r0, r1, r1, lsr #0x1f - sub r0, r2, r0, asr #0x1 - add r5, r5, r0 -_020B71E4: - ldr r1, [sp, #0x24] - ldr r0, [sp, #0x28] - str r1, [sp, #0x0] - ldr r12, [sp, #0x2c] - str r0, [sp, #0x4] - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - str r12, [sp, #0x8] - bl FUN_020B72C4 - add sp, sp, #0xc - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B7168 - - arm_func_start FUN_020B7218 -FUN_020B7218: ; 0x020B7218 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x18 - ldr r4, [sp, #0x34] - mov r8, r0 - str r4, [sp, #0x0] - mov r7, r1 - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x30] - ldr r1, [r8, #0x4] - ldr r2, [r8, #0x8] - ldr r3, [r8, #0xc] - add r0, sp, #0xc - bl FUN_020B5ABC - ands r0, r4, #0x10 - ldrne r0, [sp, #0xc] - addne r0, r0, #0x1 - addne r0, r0, r0, lsr #0x1f - subne r7, r7, r0, asr #0x1 - bne _020B7274 - ands r0, r4, #0x20 - ldrne r0, [sp, #0xc] - subne r7, r7, r0 -_020B7274: - ands r0, r4, #0x2 - ldrne r0, [sp, #0x10] - addne r0, r0, #0x1 - addne r0, r0, r0, lsr #0x1f - subne r6, r6, r0, asr #0x1 - bne _020B7298 - ands r0, r4, #0x4 - ldrne r0, [sp, #0x10] - subne r6, r6, r0 -_020B7298: - str r5, [sp, #0x0] - ldr r0, [sp, #0x34] - str r4, [sp, #0x4] - str r0, [sp, #0x8] - ldr r3, [sp, #0xc] - mov r0, r8 - mov r1, r7 - mov r2, r6 - bl FUN_020B72C4 - add sp, sp, #0x18 - ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020B7218 - - arm_func_start FUN_020B72C4 -FUN_020B72C4: ; 0x020B72C4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r0 - ldr r4, [r10, #0x4] - ldr r0, [sp, #0x40] - ldr r4, [r4, #0x0] - ldr r5, [r10, #0xc] - ldrsb r4, [r4, #0x1] - cmp r0, #0x0 - mov r9, r1 - str r0, [sp, #0xc] - ldr r0, [sp, #0x38] - mov r8, r2 - str r0, [sp, #0x38] - mov r7, r3 - add r6, r5, r4 - addeq sp, sp, #0x14 - ldmeqia sp!, {r4-r11,pc} - add r0, r7, #0x1 - ldr r1, [sp, #0x3c] - add r0, r0, r0, lsr #0x1f - mov r0, r0, asr #0x1 - and r5, r1, #0x800 - and r11, r1, #0x400 - str r0, [sp, #0x8] - mov r4, #0x0 -_020B732C: - mov r1, r9 - cmp r5, #0x0 - beq _020B7358 - ldr r0, [r10, #0x4] - ldr r1, [r10, #0x8] - ldr r2, [sp, #0xc] - mov r3, r4 - bl FUN_020B5BC8 - sub r0, r7, r0 - add r1, r9, r0 - b _020B7388 -_020B7358: - cmp r11, #0x0 - beq _020B7388 - ldr r0, [r10, #0x4] - ldr r1, [r10, #0x8] - ldr r2, [sp, #0xc] - mov r3, r4 - bl FUN_020B5BC8 - add r0, r0, #0x1 - add r1, r0, r0, lsr #0x1f - ldr r0, [sp, #0x8] - sub r0, r0, r1, asr #0x1 - add r1, r9, r0 -_020B7388: - ldr r2, [sp, #0xc] - add r3, sp, #0xc - str r2, [sp, #0x0] - str r3, [sp, #0x4] - ldr r3, [sp, #0x38] - mov r0, r10 - mov r2, r8 - bl FUN_020B73C0 - ldr r0, [sp, #0xc] - add r8, r8, r6 - cmp r0, #0x0 - bne _020B732C - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B72C4 - - arm_func_start FUN_020B73C0 -FUN_020B73C0: ; 0x020B73C0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r10, r0 - ldr r6, [r10, #0x8] - ldr r5, [r10, #0x4] - ldr r4, [sp, #0x30] - add r0, sp, #0x8 - str r4, [sp, #0x8] - ldr r4, [r5, #0x4] - mov r9, r1 - mov r8, r2 - mov r7, r3 - blx r4 - cmp r0, #0x0 - beq _020B743C - add r11, sp, #0x8 -_020B7400: - cmp r0, #0xa - beq _020B743C - str r7, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [r10, #0x0] - mov r1, r5 - mov r2, r9 - mov r3, r8 - bl FUN_020B63CC - add r1, r9, r0 - mov r0, r11 - add r9, r1, r6 - blx r4 - cmp r0, #0x0 - bne _020B7400 -_020B743C: - ldr r1, [sp, #0x34] - cmp r1, #0x0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4-r11,pc} - cmp r0, #0xa - ldreq r1, [sp, #0x8] - ldr r0, [sp, #0x34] - movne r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B73C0 - - arm_func_start FUN_020B7468 -FUN_020B7468: ; 0x020B7468 - stmdb sp!, {r4-r6,lr} - ldrh r2, [r0, #0xc] - ldrh r3, [r0, #0xe] - mov r1, #0x0 - add r2, r0, r2 - cmp r3, #0x0 - ldmleia sp!, {r4-r6,pc} - ldr r3, _020B7548 ; =0x46494E46 - ldr ip, _020B754C ; =0x43574448 - ldr r4, _020B7550 ; =0x434D4150 - ldr lr, _020B7554 ; =0x43474C50 -_020B7494: - ldr r5, [r2, #0x0] - cmp r5, r4 - bhi _020B74B0 - cmp r5, r4 - bhs _020B7518 - cmp r5, lr - b _020B752C -_020B74B0: - cmp r5, r12 - bhi _020B74C4 - cmp r5, r12 - beq _020B7500 - b _020B752C -_020B74C4: - cmp r5, r3 - bne _020B752C - add r6, r2, #0x8 - ldr r5, [r6, #0x8] - add r5, r5, r0 - str r5, [r6, #0x8] - ldr r5, [r6, #0xc] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0xc] - ldr r5, [r6, #0x10] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0x10] - b _020B752C -_020B7500: - add r6, r2, #0x8 - ldr r5, [r6, #0x4] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0x4] - b _020B752C -_020B7518: - add r6, r2, #0x8 - ldr r5, [r6, #0x8] - cmp r5, #0x0 - addne r5, r5, r0 - strne r5, [r6, #0x8] -_020B752C: - ldrh r5, [r0, #0xe] - ldr r6, [r2, #0x4] - add r1, r1, #0x1 - cmp r1, r5 - add r2, r2, r6 - blt _020B7494 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B7548: .word 0x46494E46 -_020B754C: .word 0x43574448 -_020B7550: .word 0x434D4150 -_020B7554: .word 0x43474C50 - arm_func_end FUN_020B7468 - - arm_func_start FUN_020B7558 -FUN_020B7558: ; 0x020B7558 - stmdb sp!, {r4-r6,lr} - movs r6, r0 - mov r5, r1 - beq _020B75C8 - cmp r6, #0x0 - beq _020B7584 - ldr r1, [r6, #0x0] - ldr r0, _020B76A8 ; =0x4E465452 - cmp r1, r0 - moveq r0, #0x1 - beq _020B7588 -_020B7584: - mov r0, #0x0 -_020B7588: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B75CC - cmp r6, #0x0 - beq _020B75B4 - ldrh r0, [r6, #0x6] - cmp r0, #0x100 - movcs r0, #0x1 - bhs _020B75B8 -_020B75B4: - mov r0, #0x0 -_020B75B8: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - b _020B75CC -_020B75C8: - mov r0, #0x0 -_020B75CC: - cmp r0, #0x0 - movne r4, #0x0 - bne _020B7654 - cmp r6, #0x0 - beq _020B7640 - cmp r6, #0x0 - beq _020B75FC - ldr r1, [r6, #0x0] - ldr r0, _020B76A8 ; =0x4E465452 - cmp r1, r0 - moveq r0, #0x1 - beq _020B7600 -_020B75FC: - mov r0, #0x0 -_020B7600: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - cmp r0, #0x0 - beq _020B7644 - cmp r6, #0x0 - beq _020B762C - ldrh r0, [r6, #0x6] - cmp r0, #0x1 - movcs r0, #0x1 - bhs _020B7630 -_020B762C: - mov r0, #0x0 -_020B7630: - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - b _020B7644 -_020B7640: - mov r0, #0x0 -_020B7644: - cmp r0, #0x0 - movne r4, #0x1 - bne _020B7654 - bl OS_Terminate -_020B7654: - mov r0, r6 - bl FUN_020B7468 - ldr r1, _020B76AC ; =0x46494E46 - mov r0, r6 - bl FUN_020B01F8 - cmp r0, #0x0 - moveq r0, #0x0 - streq r0, [r5, #0x0] - ldmeqia sp!, {r4-r6,pc} - add r0, r0, #0x8 - str r0, [r5, #0x0] - cmp r4, #0x0 - beq _020B76A0 - ldr r2, [r5, #0x0] - mov r1, #0x0 - ldrsb r0, [r2, #0x6] - strb r0, [r2, #0x7] - ldr r0, [r5, #0x0] - strb r1, [r0, #0x6] -_020B76A0: - add r0, r4, #0x1 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B76A8: .word 0x4E465452 -_020B76AC: .word 0x46494E46 - arm_func_end FUN_020B7558 - - arm_func_start FUN_020B76B0 -FUN_020B76B0: ; 0x020B76B0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldrsb r2, [r0, #0x4] - ldrb r12, [r0, #0x5] - mov r4, r1 - cmp r2, r4 - subge r1, r2, r4 - movge r5, r12, lsr r1 - strgeb r1, [r0, #0x4] - bge _020B7704 - ldr r3, [r0, #0x0] - sub r1, r4, r2 - add r2, r3, #0x1 - str r2, [r0, #0x0] - ldrb r2, [r3, #0x0] - mov r5, r12, lsl r1 - strb r2, [r0, #0x5] - mov r2, #0x8 - strb r2, [r0, #0x4] - bl FUN_020B76B0 - orr r5, r0, r5 -_020B7704: - rsb r0, r4, #0x8 - mov r1, #0xff - and r0, r5, r1, asr r0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020B76B0 - - arm_func_start FUN_020B7718 -FUN_020B7718: ; 0x020B7718 - ldr r1, [r0, #0x0] - ldrh r2, [r1], #0x2 - str r1, [r0, #0x0] - mov r0, r2 - bx lr - arm_func_end FUN_020B7718 - - arm_func_start FUN_020B772C -FUN_020B772C: ; 0x020B772C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r0 - ldrb r0, [r6, #0x9] - mov r5, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r7,pc} - add r4, r6, #0x8 -_020B7750: - ldrh r0, [r6, #0xe] - ldrh r1, [r4, r0] - add r0, r4, r0 - mla r0, r1, r5, r0 - ldr r0, [r0, #0x4] - add r7, r6, r0 - mov r0, r7 - bl FUN_020B79A4 - mov r0, r7 - bl FUN_020B780C - ldrb r0, [r6, #0x9] - add r5, r5, #0x1 - cmp r5, r0 - blo _020B7750 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B772C - - arm_func_start FUN_020B7790 -FUN_020B7790: ; 0x020B7790 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r8, r0 - ldrb r0, [r8, #0x9] - mov r7, r1 - mov r5, #0x1 - cmp r0, #0x0 - mov r6, #0x0 - bls _020B7800 - add r4, r8, #0x8 -_020B77B8: - ldrh r0, [r8, #0xe] - mov r1, r7 - ldrh r2, [r4, r0] - add r0, r4, r0 - mla r0, r2, r6, r0 - ldr r0, [r0, #0x4] - add r9, r8, r0 - mov r0, r9 - bl FUN_020B7A04 - and r5, r5, r0 - mov r0, r9 - mov r1, r7 - bl FUN_020B7864 - ldrb r1, [r8, #0x9] - add r6, r6, #0x1 - and r5, r5, r0 - cmp r6, r1 - blo _020B77B8 -_020B7800: - mov r0, r5 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - arm_func_end FUN_020B7790 - - arm_func_start FUN_020B780C -FUN_020B780C: ; 0x020B780C - ldr r2, [r0, #0x8] - mov r1, #0x0 - add r2, r0, r2 - ldrh r0, [r2, #0x2] - add r12, r2, r0 - ldrb r0, [r12, #0x1] - cmp r0, #0x0 - bxls lr -_020B782C: - ldrh r2, [r12, #0x6] - ldrh r0, [r12, r2] - add r2, r12, r2 - add r2, r2, #0x4 - mla r3, r0, r1, r2 - ldrb r0, [r3, #0x3] - add r1, r1, #0x1 - ands r2, r0, #0x1 - bicne r0, r0, #0x1 - strneb r0, [r3, #0x3] - ldrb r0, [r12, #0x1] - cmp r1, r0 - blo _020B782C - bx lr - arm_func_end FUN_020B780C - - arm_func_start FUN_020B7864 -FUN_020B7864: ; 0x020B7864 - stmdb sp!, {r4-r10,lr} - ldr r2, [r0, #0x8] - mov r10, r1 - add r9, r0, r2 - ldrh r0, [r9, #0x2] - mov r6, #0x1 - mov r7, #0x0 - add r8, r9, r0 - ldrb r0, [r8, #0x1] - cmp r0, #0x0 - bls _020B7908 - mov r5, r7 - mov r4, r7 -_020B7898: - ldrh r1, [r8, #0x6] - ldrh r0, [r10, #0x34] - add r2, r8, r1 - ldrh r1, [r2, #0x2] - add r0, r10, r0 - add r1, r2, r1 - add r1, r1, r5 - bl FUN_020BC2A0 - movs r3, r0 - beq _020B78F0 - ldrh r1, [r8, #0x6] - ldrh r0, [r8, r1] - add r1, r8, r1 - add r1, r1, #0x4 - mla r1, r0, r7, r1 - ldrb r0, [r1, #0x3] - ands r0, r0, #0x1 - bne _020B78F4 - mov r0, r9 - mov r2, r10 - bl FUN_020B7910 - b _020B78F4 -_020B78F0: - mov r6, r4 -_020B78F4: - ldrb r0, [r8, #0x1] - add r7, r7, #0x1 - add r5, r5, #0x10 - cmp r7, r0 - blo _020B7898 -_020B7908: - mov r0, r6 - ldmia sp!, {r4-r10,pc} - arm_func_end FUN_020B7864 - - arm_func_start FUN_020B7910 -FUN_020B7910: ; 0x020B7910 - stmdb sp!, {r4-r6,lr} - ldrh r5, [r1, #0x0] - ldr r2, [r2, #0x2c] - ldrh r4, [r3, #0x2] - mov r2, r2, lsl #0x10 - add r12, r0, r5 - mov r5, r2, lsr #0x10 - ands r2, r4, #0x1 - ldrh r4, [r3, #0x0] - moveq r3, r5, lsl #0xf - moveq r5, r3, lsr #0x10 - moveq r2, r4, lsl #0xf - moveq r4, r2, lsr #0x10 - ldrb r3, [r1, #0x2] - mov r2, #0x0 - cmp r3, #0x0 - bls _020B7994 - add r3, r4, r5 - mov r3, r3, lsl #0x10 - add r6, r0, #0x4 - mov r4, r3, lsr #0x10 -_020B7964: - ldrh r5, [r0, #0xa] - ldrb r3, [r12, r2] - add r2, r2, #0x1 - ldrh lr, [r6, r5] - add r5, r6, r5 - mla r3, lr, r3, r5 - ldr r3, [r3, #0x4] - add r3, r0, r3 - strh r4, [r3, #0x1c] - ldrb r3, [r1, #0x2] - cmp r2, r3 - blo _020B7964 -_020B7994: - ldrb r0, [r1, #0x3] - orr r0, r0, #0x1 - strb r0, [r1, #0x3] - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020B7910 - - arm_func_start FUN_020B79A4 -FUN_020B79A4: ; 0x020B79A4 - stmdb sp!, {r4-r6,lr} - ldr r2, [r0, #0x8] - mov r4, #0x0 - ldrh r1, [r0, r2] - add r6, r0, r2 - add r5, r6, r1 - ldrb r0, [r5, #0x1] - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020B79C8: - ldrh r1, [r5, #0x6] - ldrh r0, [r5, r1] - add r1, r5, r1 - add r1, r1, #0x4 - mla r1, r0, r4, r1 - ldrb r0, [r1, #0x3] - ands r0, r0, #0x1 - beq _020B79F0 - mov r0, r6 - bl FUN_020B7AB8 -_020B79F0: - ldrb r0, [r5, #0x1] - add r4, r4, #0x1 - cmp r4, r0 - blo _020B79C8 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020B79A4 - - arm_func_start FUN_020B7A04 -FUN_020B7A04: ; 0x020B7A04 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - ldr r2, [r0, #0x8] - mov r10, r1 - ldrh r1, [r0, r2] - add r9, r0, r2 - mov r11, #0x1 - add r8, r9, r1 - ldrb r0, [r8, #0x1] - mov r7, #0x0 - cmp r0, #0x0 - bls _020B7AAC - mov r6, r7 - mov r4, r7 - add r5, r10, #0x3c -_020B7A40: - ldrh r1, [r8, #0x6] - mov r0, r5 - add r2, r8, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC2A0 - movs r3, r0 - beq _020B7A94 - ldrh r1, [r8, #0x6] - ldrh r0, [r8, r1] - add r1, r8, r1 - add r1, r1, #0x4 - mla r1, r0, r7, r1 - ldrb r0, [r1, #0x3] - ands r0, r0, #0x1 - bne _020B7A98 - mov r0, r9 - mov r2, r10 - bl FUN_020B7B40 - b _020B7A98 -_020B7A94: - mov r11, r4 -_020B7A98: - ldrb r0, [r8, #0x1] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020B7A40 -_020B7AAC: - mov r0, r11 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B7A04 - - arm_func_start FUN_020B7AB8 -FUN_020B7AB8: ; 0x020B7AB8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrh r4, [r1, #0x0] - ldrb r2, [r1, #0x2] - mov r3, #0x0 - add r12, r0, r4 - cmp r2, #0x0 - bls _020B7B28 - add r2, r0, #0x4 - mov r5, #0x1000 - ldr lr, _020B7B3C ; =0xC00F0000 -_020B7AE4: - ldrh r7, [r0, #0xa] - ldrb r4, [r12, r3] - add r3, r3, #0x1 - ldrh r6, [r2, r7] - add r7, r2, r7 - mla r4, r6, r4, r7 - ldr r4, [r4, #0x4] - add r6, r0, r4 - ldr r4, [r6, #0x14] - and r4, r4, lr - str r4, [r6, #0x14] - str r5, [r6, #0x24] - ldr r4, [r6, #0x24] - str r4, [r6, #0x28] - ldrb r4, [r1, #0x2] - cmp r3, r4 - blo _020B7AE4 -_020B7B28: - ldrb r0, [r1, #0x3] - bic r0, r0, #0x1 - strb r0, [r1, #0x3] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B7B3C: .word 0xC00F0000 - arm_func_end FUN_020B7AB8 - - arm_func_start FUN_020B7B40 -FUN_020B7B40: ; 0x020B7B40 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xc - mov r11, r1 - mov r9, r3 - ldr r1, [r9, #0x0] - mov r10, r0 - and r0, r1, #0x1c000000 - cmp r0, #0x14000000 - ldrh r3, [r11, #0x0] - ldrne r1, [r2, #0x8] - mov r8, #0x0 - add r0, r10, r3 - str r0, [sp, #0x4] - ldrne r0, _020B7C50 ; =0x0000FFFF - andne r0, r1, r0 - strne r0, [sp, #0x0] - ldreq r1, [r2, #0x18] - ldreq r0, _020B7C50 ; =0x0000FFFF - andeq r0, r1, r0 - streq r0, [sp, #0x0] - ldrb r0, [r11, #0x2] - cmp r0, #0x0 - bls _020B7C3C - mov r4, #0x1000 - add r5, r10, #0x4 -_020B7BA4: - ldrh r6, [r10, #0xa] - ldr r0, [sp, #0x4] - ldr r1, [r9, #0x0] - ldrb r2, [r0, r8] - ldrh r3, [r5, r6] - ldr r0, [sp, #0x0] - add r6, r5, r6 - add r0, r1, r0 - mla r1, r3, r2, r6 - ldr r1, [r1, #0x4] - add r6, r10, r1 - ldr r1, [r6, #0x14] - orr r0, r1, r0 - str r0, [r6, #0x14] - ldr r3, [r9, #0x4] - ldr r0, _020B7C54 ; =0x000007FF - ldrh r1, [r6, #0x20] - and r2, r3, r0 - and r7, r0, r3, lsr #0xb - cmp r2, r1 - moveq r0, r4 - beq _020B7C08 - mov r0, r2, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020B7C08: - str r0, [r6, #0x24] - ldrh r1, [r6, #0x22] - cmp r7, r1 - moveq r0, r4 - beq _020B7C28 - mov r0, r7, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020B7C28: - str r0, [r6, #0x28] - ldrb r0, [r11, #0x2] - add r8, r8, #0x1 - cmp r8, r0 - blo _020B7BA4 -_020B7C3C: - ldrb r0, [r11, #0x3] - orr r0, r0, #0x1 - strb r0, [r11, #0x3] - add sp, sp, #0xc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B7C50: .word 0x0000FFFF -_020B7C54: .word 0x000007FF - arm_func_end FUN_020B7B40 - - arm_func_start FUN_020B7C58 -FUN_020B7C58: ; 0x020B7C58 - ldrh r2, [r0, #0x32] - mov r1, #0x0 - bic r2, r2, #0x1 - strh r2, [r0, #0x32] - ldr r2, [r0, #0x2c] - str r1, [r0, #0x2c] - mov r0, r2 - bx lr - arm_func_end FUN_020B7C58 - - arm_func_start FUN_020B7C78 -FUN_020B7C78: ; 0x020B7C78 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - movs r4, r1 - mov r5, r0 - beq _020B7C90 - bl GX_BeginLoadTexPltt -_020B7C90: - ldrh r2, [r5, #0x30] - ldr r0, [r5, #0x38] - ldr r3, [r5, #0x2c] - ldr r1, _020B7CD8 ; =0x0000FFFF - add r0, r5, r0 - and r1, r3, r1 - mov r1, r1, lsl #0x3 - mov r2, r2, lsl #0x3 - bl GX_LoadTexPltt - ldrh r0, [r5, #0x32] - cmp r4, #0x0 - addeq sp, sp, #0x4 - orr r0, r0, #0x1 - strh r0, [r5, #0x32] - ldmeqia sp!, {r4-r5,pc} - bl GX_EndLoadTexPltt - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B7CD8: .word 0x0000FFFF - arm_func_end FUN_020B7C78 - - arm_func_start FUN_020B7CDC -FUN_020B7CDC: ; 0x020B7CDC - str r1, [r0, #0x2c] - bx lr - arm_func_end FUN_020B7CDC - - arm_func_start FUN_020B7CE4 -FUN_020B7CE4: ; 0x020B7CE4 - ldrh r0, [r0, #0x30] - mov r0, r0, lsl #0x3 - bx lr - arm_func_end FUN_020B7CE4 - - arm_func_start FUN_020B7CF0 -FUN_020B7CF0: ; 0x020B7CF0 - ldrh r12, [r0, #0x10] - mov r3, #0x0 - bic r12, r12, #0x1 - strh r12, [r0, #0x10] - ldrh r12, [r0, #0x20] - bic r12, r12, #0x1 - strh r12, [r0, #0x20] - ldr r12, [r0, #0x8] - str r12, [r1, #0x0] - str r3, [r0, #0x8] - ldr r1, [r0, #0x18] - str r1, [r2, #0x0] - str r3, [r0, #0x18] - bx lr - arm_func_end FUN_020B7CF0 - - arm_func_start FUN_020B7D28 -FUN_020B7D28: ; 0x020B7D28 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - movs r8, r1 - mov r9, r0 - beq _020B7D40 - bl GX_BeginLoadTex -_020B7D40: - ldrh r0, [r9, #0xc] - movs r2, r0, lsl #0x3 - beq _020B7D74 - ldr r1, [r9, #0x8] - ldr r0, _020B7DF4 ; =0x0000FFFF - ldr r3, [r9, #0x14] - and r1, r1, r0 - add r0, r9, r3 - mov r1, r1, lsl #0x3 - bl GX_LoadTex - ldrh r0, [r9, #0x10] - orr r0, r0, #0x1 - strh r0, [r9, #0x10] -_020B7D74: - ldrh r0, [r9, #0x1c] - movs r7, r0, lsl #0x3 - beq _020B7DDC - ldr r1, [r9, #0x18] - ldr r0, _020B7DF4 ; =0x0000FFFF - ldr r3, [r9, #0x24] - and r4, r1, r0 - mov r5, r4, lsl #0x3 - ldr r6, [r9, #0x28] - mov r1, r5 - mov r2, r7 - add r0, r9, r3 - add r6, r9, r6 - bl GX_LoadTex - ldr r0, _020B7DF8 ; =0x0001FFFF - and r1, r5, #0x40000 - and r0, r0, r4, lsl #0x3 - mov r0, r0, lsr #0x1 - add r2, r0, #0x20000 - mov r0, r6 - add r1, r2, r1, lsr #0x2 - mov r2, r7, lsr #0x1 - bl GX_LoadTex - ldrh r0, [r9, #0x20] - orr r0, r0, #0x1 - strh r0, [r9, #0x20] -_020B7DDC: - cmp r8, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r9,pc} - bl GX_EndLoadTex - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020B7DF4: .word 0x0000FFFF -_020B7DF8: .word 0x0001FFFF - arm_func_end FUN_020B7D28 - - arm_func_start FUN_020B7DFC -FUN_020B7DFC: ; 0x020B7DFC - cmp r1, #0x0 - strne r1, [r0, #0x8] - cmp r2, #0x0 - strne r2, [r0, #0x18] - bx lr - arm_func_end FUN_020B7DFC - - arm_func_start FUN_020B7E10 -FUN_020B7E10: ; 0x020B7E10 - ldrh r0, [r0, #0x1c] - mov r0, r0, lsl #0x3 - bx lr - arm_func_end FUN_020B7E10 - - arm_func_start FUN_020B7E1C -FUN_020B7E1C: ; 0x020B7E1C - ldrh r0, [r0, #0xc] - mov r0, r0, lsl #0x3 - bx lr - arm_func_end FUN_020B7E1C - - arm_func_start FUN_020B7E28 -FUN_020B7E28: ; 0x020B7E28 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - add r0, r5, #0x8 - mov r4, r1 - bl FUN_020B7E88 - cmp r0, #0x0 - bne _020B7E74 - mov r1, r4 - add r0, r5, #0x10 - bl FUN_020B7E88 - cmp r0, #0x0 - bne _020B7E74 - mov r1, r4 - add r0, r5, #0x18 - bl FUN_020B7E88 - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} -_020B7E74: - ldr r0, [r5, #0x0] - orr r0, r0, #0x10 - str r0, [r5, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020B7E28 - - arm_func_start FUN_020B7E88 -FUN_020B7E88: ; 0x020B7E88 - ldr r2, [r0, #0x0] - cmp r2, #0x0 - moveq r0, #0x0 - bxeq lr - cmp r2, r1 - bne _020B7EB8 - ldr r3, [r2, #0x10] - mov r2, #0x0 - str r3, [r0, #0x0] - str r2, [r1, #0x10] - mov r0, #0x1 - bx lr -_020B7EB8: - ldr r3, [r2, #0x10] - cmp r3, #0x0 - beq _020B7EF4 -_020B7EC4: - cmp r3, r1 - bne _020B7EE4 - ldr r1, [r3, #0x10] - mov r0, #0x0 - str r1, [r2, #0x10] - str r0, [r3, #0x10] - mov r0, #0x1 - bx lr -_020B7EE4: - mov r2, r3 - ldr r3, [r3, #0x10] - cmp r3, #0x0 - bne _020B7EC4 -_020B7EF4: - mov r0, #0x0 - bx lr - arm_func_end FUN_020B7E88 - - arm_func_start FUN_020B7EFC -FUN_020B7EFC: ; 0x020B7EFC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - ldr r2, [r4, #0x8] - mov r5, r0 - ldrb r0, [r2, #0x0] - cmp r0, #0x4a - beq _020B7F50 - cmp r0, #0x4d - beq _020B7F34 - cmp r0, #0x56 - beq _020B7F6C - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B7F34: - add r0, r5, #0x3c - bl FUN_020B7F88 - mov r1, r4 - add r0, r5, #0x8 - bl FUN_020B7FF8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B7F50: - add r0, r5, #0x44 - bl FUN_020B7F88 - mov r1, r4 - add r0, r5, #0x10 - bl FUN_020B7FF8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020B7F6C: - add r0, r5, #0x4c - bl FUN_020B7F88 - mov r1, r4 - add r0, r5, #0x18 - bl FUN_020B7FF8 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020B7EFC - - arm_func_start FUN_020B7F88 -FUN_020B7F88: ; 0x020B7F88 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - mov r3, #0x1 - mov r4, #0x0 -_020B7FA4: - ldrb r2, [r1, #0x19] - mov r5, r4 - cmp r2, #0x0 - ble _020B7FE4 -_020B7FB4: - add r2, r1, r5, lsl #0x1 - ldrh r2, [r2, #0x1a] - ands r2, r2, #0x100 - movne lr, r5, asr #0x5 - andne r2, r5, #0x1f - ldrne r12, [r0, lr, lsl #0x2] - add r5, r5, #0x1 - orrne r2, r12, r3, lsl r2 - strne r2, [r0, lr, lsl #0x2] - ldrb r2, [r1, #0x19] - cmp r5, r2 - blt _020B7FB4 -_020B7FE4: - ldr r1, [r1, #0x10] - cmp r1, #0x0 - bne _020B7FA4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020B7F88 - - arm_func_start FUN_020B7FF8 -FUN_020B7FF8: ; 0x020B7FF8 - ldr r12, [r0, #0x0] - cmp r12, #0x0 - streq r1, [r0, #0x0] - bxeq lr - ldr r3, [r12, #0x10] - cmp r3, #0x0 - bne _020B8058 - ldrb r3, [r12, #0x18] - ldrb r2, [r1, #0x18] - cmp r3, r2 - bls _020B8050 - ldr r2, [r1, #0x10] - mov r3, r1 - cmp r2, #0x0 - beq _020B8044 -_020B8034: - ldr r3, [r3, #0x10] - ldr r2, [r3, #0x10] - cmp r2, #0x0 - bne _020B8034 -_020B8044: - str r12, [r3, #0x10] - str r1, [r0, #0x0] - bx lr -_020B8050: - str r1, [r12, #0x10] - bx lr -_020B8058: - cmp r3, #0x0 - beq _020B80AC - ldrb r2, [r1, #0x18] -_020B8064: - ldrb r0, [r3, #0x18] - cmp r0, r2 - blo _020B809C - ldr r0, [r1, #0x10] - mov r2, r1 - cmp r0, #0x0 - beq _020B8090 -_020B8080: - ldr r2, [r2, #0x10] - ldr r0, [r2, #0x10] - cmp r0, #0x0 - bne _020B8080 -_020B8090: - str r1, [r12, #0x10] - str r3, [r2, #0x10] - bx lr -_020B809C: - mov r12, r3 - ldr r3, [r3, #0x10] - cmp r3, #0x0 - bne _020B8064 -_020B80AC: - str r1, [r12, #0x10] - bx lr - arm_func_end FUN_020B7FF8 - - arm_func_start FUN_020B80B4 -FUN_020B80B4: ; 0x020B80B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - mov r1, r5 - mov r0, #0x0 - mov r2, #0x54 - bl MIi_CpuClear32 - ldr r0, _020B8104 ; =UNK_021065B4 - ldr r1, _020B8108 ; =UNK_021065B0 - ldr r2, [r0, #0x0] - ldr r0, _020B810C ; =UNK_021065AC - str r2, [r5, #0xc] - ldr r1, [r1, #0x0] - str r1, [r5, #0x14] - ldr r0, [r0, #0x0] - str r0, [r5, #0x1c] - str r4, [r5, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020B8104: .word UNK_021065B4 -_020B8108: .word UNK_021065B0 -_020B810C: .word UNK_021065AC - arm_func_end FUN_020B80B4 - - arm_func_start FUN_020B8110 -FUN_020B8110: ; 0x020B8110 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r12, #0x0 - str r12, [r0, #0x0] - str r1, [r0, #0x8] - str r12, [r0, #0x10] - mov r4, #0x7f - strb r4, [r0, #0x18] - mov r4, #0x1000 - str r4, [r0, #0x4] - ldr lr, _020B81A4 ; =UNK_02106594 - str r3, [r0, #0x14] - ldr r6, [lr, #0x0] - cmp r6, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r7,pc} - ldrb r7, [r1, #0x0] - ldr r4, _020B81A8 ; =UNK_021065B8 -_020B8158: - ldrb r3, [r4, r12, lsl #0x3] - mov r5, r12, lsl #0x3 - cmp r7, r3 - bne _020B8190 - add r3, r4, r5 - ldrh lr, [r1, #0x2] - ldrh r3, [r3, #0x2] - cmp lr, r3 - bne _020B8190 - ldr r3, _020B81AC ; =UNK_021065BC - ldr r3, [r3, r5] - blx r3 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} -_020B8190: - add r12, r12, #0x1 - cmp r12, r6 - blo _020B8158 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B81A4: .word UNK_02106594 -_020B81A8: .word UNK_021065B8 -_020B81AC: .word UNK_021065BC - arm_func_end FUN_020B8110 - - arm_func_start FUN_020B81B0 -FUN_020B81B0: ; 0x020B81B0 - ldrb r0, [r0, #0x0] - cmp r0, #0x4a - beq _020B81E4 - cmp r0, #0x4d - beq _020B81D0 - cmp r0, #0x56 - beq _020B81E4 - b _020B81F8 -_020B81D0: - ldrb r0, [r1, #0x18] - mov r0, r0, lsl #0x1 - add r0, r0, #0x1c - bic r0, r0, #0x3 - bx lr -_020B81E4: - ldrb r0, [r1, #0x17] - mov r0, r0, lsl #0x1 - add r0, r0, #0x1c - bic r0, r0, #0x3 - bx lr -_020B81F8: - mov r0, #0x0 - bx lr - arm_func_end FUN_020B81B0 - - arm_func_start FUN_020B8200 -FUN_020B8200: ; 0x020B8200 - cmp r0, #0x0 - ldrne ip, _020B8260 ; =UNK_021CED18 - ldrne r12, [r12, #0xa0] - andne r12, r12, #0xff - strne r12, [r0, #0x0] - cmp r1, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 - ldrne r0, [r0, #0xa0] - movne r0, r0, lsr #0x8 - andne r0, r0, #0xff - strne r0, [r1, #0x0] - cmp r2, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 - ldrne r0, [r0, #0xa0] - movne r0, r0, lsr #0x10 - andne r0, r0, #0xff - strne r0, [r2, #0x0] - cmp r3, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 - ldrne r0, [r0, #0xa0] - movne r0, r0, lsr #0x18 - andne r0, r0, #0xff - strne r0, [r3, #0x0] - bx lr - .balign 4 -_020B8260: .word UNK_021CED18 - arm_func_end FUN_020B8200 - - arm_func_start FUN_020B8264 -FUN_020B8264: ; 0x020B8264 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B829C ; =UNK_021CED18 - ldr r0, [r0, #0xfc] - ands r0, r0, #0x80 - bne _020B8290 - bl FUN_020B82E4 - ldr r0, _020B829C ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - orr r1, r1, #0x80 - str r1, [r0, #0xfc] -_020B8290: - ldr r0, _020B82A0 ; =UNK_021CEE78 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B829C: .word UNK_021CED18 -_020B82A0: .word UNK_021CEE78 - arm_func_end FUN_020B8264 - - arm_func_start FUN_020B82A4 -FUN_020B82A4: ; 0x020B82A4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B82DC ; =UNK_021CED18 - ldr r0, [r0, #0xfc] - ands r0, r0, #0x80 - bne _020B82D0 - bl FUN_020B82E4 - ldr r0, _020B82DC ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - orr r1, r1, #0x80 - str r1, [r0, #0xfc] -_020B82D0: - ldr r0, _020B82E0 ; =UNK_021CEE48 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B82DC: .word UNK_021CED18 -_020B82E0: .word UNK_021CEE48 - arm_func_end FUN_020B82A4 - - arm_func_start FUN_020B82E4 -FUN_020B82E4: ; 0x020B82E4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B8330 ; =UNK_021CEDD4 - ldr r1, _020B8334 ; =UNK_021CED64 - ldr r2, _020B8338 ; =UNK_021CEE48 - bl MTX_Concat43 - ldr r3, _020B833C ; =UNK_021CED18 - ldr r0, _020B8338 ; =UNK_021CEE48 - ldr r2, [r3, #0xf4] - mov r1, r0 - str r2, [sp, #0x0] - ldr r2, [r3, #0xec] - ldr r3, [r3, #0xf0] - bl MTX_ScaleApply43 - ldr r0, _020B8338 ; =UNK_021CEE48 - ldr r1, _020B8340 ; =UNK_021CEE78 - bl MTX_Inverse43 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B8330: .word UNK_021CEDD4 -_020B8334: .word UNK_021CED64 -_020B8338: .word UNK_021CEE48 -_020B833C: .word UNK_021CED18 -_020B8340: .word UNK_021CEE78 - arm_func_end FUN_020B82E4 - - arm_func_start FUN_020B8344 -FUN_020B8344: ; 0x020B8344 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020B8384 ; =UNK_021CED18 - ldr r0, [r0, #0xfc] - ands r0, r0, #0x8 - bne _020B8378 - ldr r0, _020B8388 ; =UNK_021CED64 - ldr r1, _020B838C ; =UNK_021CEE18 - bl MTX_Inverse43 - ldr r0, _020B8384 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - orr r1, r1, #0x8 - str r1, [r0, #0xfc] -_020B8378: - ldr r0, _020B838C ; =UNK_021CEE18 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B8384: .word UNK_021CED18 -_020B8388: .word UNK_021CED64 -_020B838C: .word UNK_021CEE18 - arm_func_end FUN_020B8344 - - arm_func_start FUN_020B8390 -FUN_020B8390: ; 0x020B8390 - orr r0, r0, r1, lsl #0x4 - ldr r1, [sp, #0x4] - orr r0, r0, r2, lsl #0x6 - orr r0, r1, r0 - ldr r2, [sp, #0x0] - orr r1, r0, r3, lsl #0x18 - ldr r0, _020B83B8 ; =UNK_021CED18 - orr r1, r1, r2, lsl #0x10 - str r1, [r0, #0x9c] - bx lr - .balign 4 -_020B83B8: .word UNK_021CED18 - arm_func_end FUN_020B8390 - - arm_func_start FUN_020B83BC -FUN_020B83BC: ; 0x020B83BC - cmp r2, #0x0 - movne r2, #0x1 - orr r1, r0, r1, lsl #0x10 - moveq r2, #0x0 - ldr r0, _020B83DC ; =UNK_021CED18 - orr r1, r1, r2, lsl #0xf - str r1, [r0, #0x98] - bx lr - .balign 4 -_020B83DC: .word UNK_021CED18 - arm_func_end FUN_020B83BC - - arm_func_start FUN_020B83E0 -FUN_020B83E0: ; 0x020B83E0 - cmp r2, #0x0 - movne r2, #0x1 - orr r1, r0, r1, lsl #0x10 - moveq r2, #0x0 - ldr r0, _020B8400 ; =UNK_021CED18 - orr r1, r1, r2, lsl #0xf - str r1, [r0, #0x94] - bx lr - .balign 4 -_020B8400: .word UNK_021CED18 - arm_func_end FUN_020B83E0 - - arm_func_start FUN_020B8404 -FUN_020B8404: ; 0x020B8404 - ldr r2, _020B8414 ; =UNK_021CEDC0 - orr r1, r1, r0, lsl #0x1e - str r1, [r2, r0, lsl #0x2] - bx lr - .balign 4 -_020B8414: .word UNK_021CEDC0 - arm_func_end FUN_020B8404 - - arm_func_start FUN_020B8418 -FUN_020B8418: ; 0x020B8418 - stmdb sp!, {r4,lr} - ldr ip, _020B8444 ; =0x000003FF - ldr lr, _020B8448 ; =UNK_021CED98 - and r4, r12, r1, asr #0x3 - and r1, r12, r2, asr #0x3 - and r2, r12, r3, asr #0x3 - orr r1, r4, r1, lsl #0xa - orr r1, r1, r2, lsl #0x14 - orr r1, r1, r0, lsl #0x1e - str r1, [lr, r0, lsl #0x2] - ldmia sp!, {r4,pc} - .balign 4 -_020B8444: .word 0x000003FF -_020B8448: .word UNK_021CED98 - arm_func_end FUN_020B8418 - - arm_func_start FUN_020B844C -FUN_020B844C: ; 0x020B844C - ldr r3, _020B846C ; =UNK_021CEE04 - ldmia r0, {r0-r2} - stmia r3, {r0-r2} - ldr r0, _020B8470 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - bic r1, r1, #0xa4 - str r1, [r0, #0xfc] - bx lr - .balign 4 -_020B846C: .word UNK_021CEE04 -_020B8470: .word UNK_021CED18 - arm_func_end FUN_020B844C - - arm_func_start FUN_020B8474 -FUN_020B8474: ; 0x020B8474 - ldr r3, _020B8494 ; =UNK_021CEDF8 - ldmia r0, {r0-r2} - stmia r3, {r0-r2} - ldr r0, _020B8498 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - bic r1, r1, #0xa4 - str r1, [r0, #0xfc] - bx lr - .balign 4 -_020B8494: .word UNK_021CEDF8 -_020B8498: .word UNK_021CED18 - arm_func_end FUN_020B8474 - - arm_func_start FUN_020B849C -FUN_020B849C: ; 0x020B849C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020B84D4 ; =UNK_021CED18 - mov r2, #0x3e - ldr r0, [r1], #0x4 - bl FUN_020BB1C0 - ldr r0, _020B84D4 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - bic r1, r1, #0x1 - str r1, [r0, #0xfc] - bic r1, r1, #0x2 - str r1, [r0, #0xfc] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020B84D4: .word UNK_021CED18 - arm_func_end FUN_020B849C - - arm_func_start FUN_020B84D8 -FUN_020B84D8: ; 0x020B84D8 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r8, _020B85F4 ; =0x17101610 - ldr r1, _020B85F8 ; =UNK_021CED18 - ldr r5, _020B85FC ; =0x32323232 - ldr r4, _020B8600 ; =0x60293130 - ldr r3, _020B8604 ; =0x33333333 - ldr r2, _020B8608 ; =0x002A1B19 - mov r7, #0x0 - mov r6, #0x2 - ldr r0, _020B860C ; =UNK_021CED64 - str r8, [r1, #0x0] - str r7, [r1, #0x4] - str r6, [r1, #0x48] - str r5, [r1, #0x7c] - str r4, [r1, #0x90] - str r3, [r1, #0xa4] - str r2, [r1, #0xb8] - bl MTX_Identity43_ - ldr r0, _020B8610 ; =UNK_021CED20 - bl MTX_Identity44_ - mov r2, r7 - ldr r1, _020B85F8 ; =UNK_021CED18 - ldr r7, _020B8614 ; =0x4210C210 - ldr r0, _020B8618 ; =0x40000200 - ldr lr, _020B861C ; =0x2D8B62D8 - ldr sb, _020B8620 ; =0x800001FF - ldr r8, _020B8624 ; =0xC0080000 - ldr r6, _020B8628 ; =0x001F008F - ldr r5, _020B862C ; =0xBFFF0000 - ldr r4, _020B8630 ; =0x00007FFF - ldr ip, _020B8634 ; =0x800003E0 - ldr r3, _020B8638 ; =0xC0007C00 - str r0, [r1, #0x84] - str lr, [r1, #0x80] - mov lr, #0x4000001f - ldr r0, _020B863C ; =UNK_021CEDD4 - str r9, [r1, #0x88] - str r8, [r1, #0x8c] - str r7, [r1, #0x94] - str r7, [r1, #0x98] - str r6, [r1, #0x9c] - str r5, [r1, #0xa0] - str r4, [r1, #0xa8] - str lr, [r1, #0xac] - str r12, [r1, #0xb0] - str r3, [r1, #0xb4] - str r2, [r1, #0xe0] - str r2, [r1, #0xe4] - str r2, [r1, #0xe8] - bl MTX_Identity33_ - mov r3, #0x1000 - ldr r0, _020B85F8 ; =UNK_021CED18 - mov r2, #0x0 - rsb r1, r3, #0x0 - str r3, [r0, #0xec] - str r3, [r0, #0xf0] - str r3, [r0, #0xf4] - str r2, [r0, #0xf8] - str r2, [r0, #0xfc] - str r2, [r0, #0x248] - str r2, [r0, #0x244] - str r2, [r0, #0x240] - str r2, [r0, #0x254] - str r2, [r0, #0x24c] - str r3, [r0, #0x250] - str r2, [r0, #0x25c] - str r2, [r0, #0x258] - str r1, [r0, #0x260] - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020B85F4: .word 0x17101610 -_020B85F8: .word UNK_021CED18 -_020B85FC: .word 0x32323232 -_020B8600: .word 0x60293130 -_020B8604: .word 0x33333333 -_020B8608: .word 0x002A1B19 -_020B860C: .word UNK_021CED64 -_020B8610: .word UNK_021CED20 -_020B8614: .word 0x4210C210 -_020B8618: .word 0x40000200 -_020B861C: .word 0x2D8B62D8 -_020B8620: .word 0x800001FF -_020B8624: .word 0xC0080000 -_020B8628: .word 0x001F008F -_020B862C: .word 0xBFFF0000 -_020B8630: .word 0x00007FFF -_020B8634: .word 0x800003E0 -_020B8638: .word 0xC0007C00 -_020B863C: .word UNK_021CEDD4 - arm_func_end FUN_020B84D8 - - arm_func_start FUN_020B8640 -FUN_020B8640: ; 0x020B8640 - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x8 - mov r7, r0 - mov r0, #0x0 - mov r6, r1 - str r0, [r7, #0x0] - add r4, sp, #0x0 - mov r5, r2, lsl #0x1 - mov r8, #0x1 -_020B8664: - add r1, r5, r6 - ldrh r2, [r1, #0x1a] - ands r1, r2, #0x100 - beq _020B869C - ldr r3, [r6, #0xc] - mov r0, r4 - mov r1, r6 - and r2, r2, #0xff - blx r3 - ldr r2, [r7, #0x0] - ldr r1, [sp, #0x0] - mov r0, r8 - orr r1, r2, r1 - str r1, [r7, #0x0] -_020B869C: - ldr r6, [r6, #0x10] - cmp r6, #0x0 - bne _020B8664 - add sp, sp, #0x8 - ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020B8640 - - arm_func_start FUN_020B86B0 -FUN_020B86B0: ; 0x020B86B0 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x5c - mov r9, r1 - ldr r3, [r9, #0x10] - mov r10, r0 - mov r8, r2 - cmp r3, #0x0 - bne _020B8704 - add r2, r9, r8, lsl #0x1 - ldrh r4, [r2, #0x1a] - and r2, r4, #0x300 - cmp r2, #0x100 - addne sp, sp, #0x5c - movne r0, #0x0 - ldmneia sp!, {r4-r11,pc} - ldr r3, [r9, #0xc] - and r2, r4, #0xff - blx r3 - add sp, sp, #0x5c - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020B8704: - mov r7, #0x0 - mov r3, r7 - mov r4, r9 - mov r2, r8, lsl #0x1 -_020B8714: - add r0, r2, r4 - ldrh r0, [r0, #0x1a] - and r0, r0, #0x300 - cmp r0, #0x100 - ldreq r0, [r4, #0x4] - moveq r1, r4 - ldr r4, [r4, #0x10] - addeq r7, r7, r0 - addeq r3, r3, #0x1 - cmp r4, #0x0 - bne _020B8714 - cmp r7, #0x0 - addeq sp, sp, #0x5c - moveq r0, #0x0 - ldmeqia sp!, {r4-r11,pc} - cmp r3, #0x1 - bne _020B877C - add r0, r1, r8, lsl #0x1 - ldrh r2, [r0, #0x1a] - ldr r3, [r1, #0xc] - mov r0, r10 - and r2, r2, #0xff - blx r3 - add sp, sp, #0x5c - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020B877C: - mov r1, r10 - mov r0, #0x0 - mov r2, #0x58 - bl MIi_CpuClearFast - mvn r0, #0x0 - str r0, [r10, #0x0] - add r5, sp, #0x0 - add r4, sp, #0x4 - add r11, sp, #0x10 -_020B87A0: - add r0, r9, r8, lsl #0x1 - ldrh r2, [r0, #0x1a] - and r0, r2, #0x300 - cmp r0, #0x100 - bne _020B8948 - ldr r0, [r9, #0x4] - cmp r0, #0x0 - ble _020B8948 - ldr r3, [r9, #0xc] - mov r0, r5 - mov r1, r9 - and r2, r2, #0xff - blx r3 - cmp r7, #0x1000 - ldreq r6, [r9, #0x4] - beq _020B87F0 - ldr r0, [r9, #0x4] - mov r1, r7 - bl FX_Div - mov r6, r0 -_020B87F0: - ldr r3, [sp, #0x0] - mov r1, r4 - mov r2, r6 - add r0, r10, #0x4 - and r3, r3, #0x1 - bl FUN_020B8998 - ldr r1, [sp, #0x0] - add r0, r10, #0x10 - and r3, r1, #0x8 - mov r1, r11 - mov r2, r6 - bl FUN_020B8998 - ldr r3, [sp, #0x0] - add r0, r10, #0x1c - add r1, sp, #0x1c - mov r2, r6 - and r3, r3, #0x10 - bl FUN_020B8998 - ldr r0, [sp, #0x0] - ands r0, r0, #0x4 - bne _020B8898 - ldr r0, [sp, #0x4c] - ldr r2, [r10, #0x4c] - smull r1, r0, r6, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - add r0, r2, r1 - str r0, [r10, #0x4c] - ldr r0, [sp, #0x50] - ldr r2, [r10, #0x50] - smull r1, r0, r6, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - add r0, r2, r1 - str r0, [r10, #0x50] - ldr r0, [sp, #0x54] - ldr r2, [r10, #0x54] - smull r1, r0, r6, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - add r0, r2, r1 - str r0, [r10, #0x54] -_020B8898: - ldr r0, [sp, #0x0] - ands r0, r0, #0x2 - bne _020B8920 - ldr r0, [sp, #0x28] - ldr r1, [r10, #0x28] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x28] - ldr r0, [sp, #0x2c] - ldr r1, [r10, #0x2c] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x2c] - ldr r0, [sp, #0x30] - ldr r1, [r10, #0x30] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x30] - ldr r0, [sp, #0x34] - ldr r1, [r10, #0x34] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x34] - ldr r0, [sp, #0x38] - ldr r1, [r10, #0x38] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x38] - ldr r0, [sp, #0x3c] - ldr r1, [r10, #0x3c] - mul r0, r6, r0 - add r0, r1, r0, asr #0xc - str r0, [r10, #0x3c] - b _020B8938 -_020B8920: - ldr r0, [r10, #0x28] - add r0, r0, r6 - str r0, [r10, #0x28] - ldr r0, [r10, #0x38] - add r0, r0, r6 - str r0, [r10, #0x38] -_020B8938: - ldr r1, [r10, #0x0] - ldr r0, [sp, #0x0] - and r0, r1, r0 - str r0, [r10, #0x0] -_020B8948: - ldr r9, [r9, #0x10] - cmp r9, #0x0 - bne _020B87A0 - add r0, r10, #0x28 - add r1, r10, #0x34 - add r2, r10, #0x40 - bl VEC_CrossProduct - add r0, r10, #0x28 - mov r1, r0 - bl VEC_Normalize - add r0, r10, #0x40 - mov r1, r0 - bl VEC_Normalize - add r0, r10, #0x40 - add r1, r10, #0x28 - add r2, r10, #0x34 - bl VEC_CrossProduct - mov r0, #0x1 - add sp, sp, #0x5c - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B86B0 - - arm_func_start FUN_020B8998 -FUN_020B8998: ; 0x020B8998 - cmp r3, #0x0 - beq _020B89C8 - ldr r1, [r0, #0x0] - add r1, r1, r2 - str r1, [r0, #0x0] - ldr r1, [r0, #0x4] - add r1, r1, r2 - str r1, [r0, #0x4] - ldr r1, [r0, #0x8] - add r1, r1, r2 - str r1, [r0, #0x8] - bx lr -_020B89C8: - ldr r3, [r1, #0x0] - ldr r12, [r0, #0x0] - mul r3, r2, r3 - add r3, r12, r3, asr #0xc - str r3, [r0, #0x0] - ldr r3, [r1, #0x4] - ldr r12, [r0, #0x4] - mul r3, r2, r3 - add r3, r12, r3, asr #0xc - str r3, [r0, #0x4] - ldr r1, [r1, #0x8] - ldr r3, [r0, #0x8] - mul r1, r2, r1 - add r1, r3, r1, asr #0xc - str r1, [r0, #0x8] - bx lr - arm_func_end FUN_020B8998 - - arm_func_start FUN_020B8A08 -FUN_020B8A08: ; 0x020B8A08 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r0 - mov r5, r1 - mov r0, #0x0 - mov r4, r2, lsl #0x1 - mov r7, #0x1 -_020B8A24: - add r1, r4, r5 - ldrh r2, [r1, #0x1a] - ands r1, r2, #0x100 - beq _020B8A4C - ldr r3, [r5, #0xc] - mov r0, r6 - mov r1, r5 - and r2, r2, #0xff - blx r3 - mov r0, r7 -_020B8A4C: - ldr r5, [r5, #0x10] - cmp r5, #0x0 - bne _020B8A24 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B8A08 - - arm_func_start FUN_020B8A60 -FUN_020B8A60: ; 0x020B8A60 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x80 - mov r5, r0 - ldr r1, [r5, #0x8] - ands r0, r1, #0x200 - bne _020B8DB4 - ands r0, r1, #0x1 - beq _020B8DB4 - add r0, sp, #0x10 - mov r1, #0x0 - bl FUN_020BB824 - mov r0, #0x1e - str r0, [sp, #0x0] - add r1, sp, #0x0 - mov r0, #0x13 - mov r2, #0x1 - bl FUN_020BB1C0 - ldr r2, [r5, #0xb0] - ldr r0, [r2, #0x10] - and r1, r0, #0xc0000000 - cmp r1, #0xc0000000 - beq _020B8AF0 - bic r0, r0, #0xc0000000 - str r0, [r2, #0x10] - ldr r2, [r5, #0xb0] - ldr r3, _020B8DC8 ; =UNK_02106630 - ldr r0, [r2, #0x10] - ldr r1, _020B8DCC ; =UNK_02106634 - orr r0, r0, #0xc0000000 - str r0, [r2, #0x10] - ldr r2, [r5, #0xb0] - ldr r0, [r3, #0x0] - ldr r4, [r2, #0x10] - mov r2, #0x1 - str r4, [r3, #0x4] - bl FUN_020BB1C0 -_020B8AF0: - ldr r0, [r5, #0x40] - cmp r0, #0x0 - ldrneb r4, [r5, #0x99] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020B8B3C - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x40] - blx r1 - ldr r0, [r5, #0x40] - cmp r0, #0x0 - ldrneb r4, [r5, #0x99] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020B8B40 -_020B8B3C: - mov r0, #0x0 -_020B8B40: - cmp r0, #0x0 - bne _020B8B84 - ldr r0, [r5, #0xb0] - ldr r1, _020B8DD0 ; =UNK_02106660 - ldrh r6, [r0, #0x2e] - ldrh r3, [r0, #0x2c] - mov r0, #0x16 - rsb r2, r6, #0x0 - mov lr, r3, lsl #0xf - mov r12, r2, lsl #0xf - mov r3, r6, lsl #0xf - mov r2, #0x10 - str lr, [r1, #0x0] - str r12, [r1, #0x14] - str lr, [r1, #0x30] - str r3, [r1, #0x34] - bl FUN_020BB1C0 -_020B8B84: - cmp r4, #0x2 - bne _020B8BC0 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x40] - blx r1 - ldr r0, [r5, #0x40] - cmp r0, #0x0 - ldrneb r4, [r5, #0x99] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020B8BC4 -_020B8BC0: - mov r0, #0x0 -_020B8BC4: - cmp r0, #0x0 - bne _020B8C28 - ldr r12, [r5, #0xd8] - ldr r0, [r5, #0x0] - ldrh r2, [r12, #0xa] - add r3, r12, #0x4 - ldrb r0, [r0, #0x1] - ldrh r1, [r3, r2] - add r2, r3, r2 - mla r0, r1, r0, r2 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrh r2, [r1, #0x1e] - ands r0, r2, #0x2000 - beq _020B8C28 - add r1, r1, #0x2c - ands r0, r2, #0x2 - addeq r1, r1, #0x8 - ands r0, r2, #0x4 - addeq r1, r1, #0x4 - ands r0, r2, #0x8 - addeq r1, r1, #0x8 - mov r0, #0x18 - mov r2, #0x10 - bl FUN_020BB1C0 -_020B8C28: - cmp r4, #0x3 - movne r0, #0x0 - bne _020B8C54 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x40] - blx r1 - ldr r0, [r5, #0x8] - and r0, r0, #0x40 -_020B8C54: - cmp r0, #0x0 - bne _020B8D84 - ldr r0, _020B8DD4 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B8CA0 - ldr r1, _020B8DD8 ; =UNK_021CEDF8 - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 - ldr r1, _020B8DDC ; =UNK_021CEDD4 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - add r1, sp, #0x10 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020B8CE0 -_020B8CA0: - ands r0, r1, #0x2 - beq _020B8CBC - add r1, sp, #0x10 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020B8CE0 -_020B8CBC: - bl FUN_020B8344 - mov r1, r0 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - add r1, sp, #0x10 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 -_020B8CE0: - bl FUN_020BB394 - ldr r0, _020B8DE0 ; =0x04000440 - mov r2, #0x0 - ldr r1, _020B8DE4 ; =0x04000444 - str r2, [r0, #0x0] - ldr r0, _020B8DE8 ; =0x04000454 - str r2, [r1, #0x0] - str r2, [r0, #0x0] - add r4, sp, #0x40 -_020B8D04: - mov r0, r4 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B8D04 - ldr r1, _020B8DEC ; =0x04000448 - mov r2, #0x1 - str r2, [r1, #0x0] - ldr r0, _020B8DE0 ; =0x04000440 - mov r2, #0x3 - str r2, [r0, #0x0] - add r1, sp, #0x40 - mov r0, #0x16 - mov r2, #0x10 - bl FUN_020BB1C0 - ldr r1, [sp, #0x70] - ldr r0, [sp, #0x74] - mov r2, r1, asr #0x4 - mov r1, r0, asr #0x4 - mov r0, r2, lsl #0x8 - mov r1, r1, lsl #0x8 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r3, r2, r0, lsl #0x10 - add r1, sp, #0x4 - mov r0, #0x22 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B8D84: - mov r3, #0x2 - add r1, sp, #0x8 - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0x8] - bl FUN_020BB1C0 - mov r3, #0x1e - add r1, sp, #0xc - mov r0, #0x14 - mov r2, #0x1 - str r3, [sp, #0xc] - bl FUN_020BB1C0 -_020B8DB4: - ldr r0, [r5, #0x0] - add r0, r0, #0x3 - str r0, [r5, #0x0] - add sp, sp, #0x80 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020B8DC8: .word UNK_02106630 -_020B8DCC: .word UNK_02106634 -_020B8DD0: .word UNK_02106660 -_020B8DD4: .word UNK_021CED18 -_020B8DD8: .word UNK_021CEDF8 -_020B8DDC: .word UNK_021CEDD4 -_020B8DE0: .word 0x04000440 -_020B8DE4: .word 0x04000444 -_020B8DE8: .word 0x04000454 -_020B8DEC: .word 0x04000448 - arm_func_end FUN_020B8A60 - - arm_func_start FUN_020B8DF0 -FUN_020B8DF0: ; 0x020B8DF0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x44 - mov r7, r0 - ldr r1, [r7, #0x8] - ands r0, r1, #0x200 - bne _020B90E8 - ands r0, r1, #0x1 - beq _020B90E8 - ldr r2, [r7, #0xb0] - ldr r0, [r2, #0x10] - and r1, r0, #0xc0000000 - cmp r1, #0x80000000 - beq _020B8E5C - bic r0, r0, #0xc0000000 - str r0, [r2, #0x10] - ldr r2, [r7, #0xb0] - ldr r3, _020B90FC ; =UNK_02106638 - ldr r0, [r2, #0x10] - ldr r1, _020B9100 ; =UNK_0210663C - orr r0, r0, #0x80000000 - str r0, [r2, #0x10] - ldr r2, [r7, #0xb0] - ldr r0, [r3, #0x0] - ldr r4, [r2, #0x10] - mov r2, #0x1 - str r4, [r3, #0x4] - bl FUN_020BB1C0 -_020B8E5C: - mov r0, #0x3 - str r0, [sp, #0x0] - add r1, sp, #0x0 - mov r0, #0x10 - mov r2, #0x1 - bl FUN_020BB1C0 - ldr r0, [r7, #0x3c] - cmp r0, #0x0 - ldrneb r6, [r7, #0x98] - moveq r6, #0x0 - cmp r6, #0x1 - bne _020B8EC0 - ldr r1, [r7, #0x8] - mov r0, r7 - bic r1, r1, #0x40 - str r1, [r7, #0x8] - ldr r1, [r7, #0x3c] - blx r1 - ldr r0, [r7, #0x3c] - cmp r0, #0x0 - ldrneb r6, [r7, #0x98] - ldr r0, [r7, #0x8] - moveq r6, #0x0 - and r0, r0, #0x40 - b _020B8EC4 -_020B8EC0: - mov r0, #0x0 -_020B8EC4: - cmp r0, #0x0 - bne _020B8F3C - ldr r0, [r7, #0xb0] - add r1, sp, #0x38 - ldrh r4, [r0, #0x2e] - ldrh r5, [r0, #0x2c] - mov r3, #0x10000 - rsb r0, r4, #0x0 - mov r12, r0, lsl #0xf - mov lr, r5, lsl #0xf - mov r0, #0x1b - mov r2, #0x3 - str lr, [sp, #0x38] - str r12, [sp, #0x3c] - str r3, [sp, #0x40] - bl FUN_020BB1C0 - mov r0, r5, lsl #0x13 - mov r1, r4, lsl #0x13 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r3, r2, r0, lsl #0x10 - add r1, sp, #0x4 - mov r0, #0x22 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B8F3C: - cmp r6, #0x2 - bne _020B8F78 - ldr r1, [r7, #0x8] - mov r0, r7 - bic r1, r1, #0x40 - str r1, [r7, #0x8] - ldr r1, [r7, #0x3c] - blx r1 - ldr r0, [r7, #0x3c] - cmp r0, #0x0 - ldrneb r6, [r7, #0x98] - ldr r0, [r7, #0x8] - moveq r6, #0x0 - and r0, r0, #0x40 - b _020B8F7C -_020B8F78: - mov r0, #0x0 -_020B8F7C: - cmp r0, #0x0 - bne _020B8FE0 - ldr r4, [r7, #0xd8] - ldr r0, [r7, #0x0] - ldrh r2, [r4, #0xa] - add r3, r4, #0x4 - ldrb r0, [r0, #0x1] - ldrh r1, [r3, r2] - add r2, r3, r2 - mla r0, r1, r0, r2 - ldr r0, [r0, #0x4] - add r1, r4, r0 - ldrh r2, [r1, #0x1e] - ands r0, r2, #0x2000 - beq _020B8FE0 - add r1, r1, #0x2c - ands r0, r2, #0x2 - addeq r1, r1, #0x8 - ands r0, r2, #0x4 - addeq r1, r1, #0x4 - ands r0, r2, #0x8 - addeq r1, r1, #0x8 - mov r0, #0x18 - mov r2, #0x10 - bl FUN_020BB1C0 -_020B8FE0: - cmp r6, #0x3 - movne r0, #0x0 - bne _020B900C - ldr r1, [r7, #0x8] - mov r0, r7 - bic r1, r1, #0x40 - str r1, [r7, #0x8] - ldr r1, [r7, #0x3c] - blx r1 - ldr r0, [r7, #0x8] - and r0, r0, #0x40 -_020B900C: - cmp r0, #0x0 - bne _020B90D0 - mov r3, #0x2 - add r1, sp, #0x8 - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0x8] - bl FUN_020BB1C0 - add r1, sp, #0x14 - mov r0, #0x0 - bl FUN_020BB824 - mov r3, #0x3 - add r1, sp, #0xc - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0xc] - bl FUN_020BB1C0 - ldr r0, _020B9104 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9094 - ldr r1, _020B9108 ; =UNK_021CED64 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - ldr r1, _020B910C ; =UNK_021CEDD4 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - add r1, sp, #0x14 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020B90D0 -_020B9094: - ands r0, r1, #0x2 - beq _020B90C0 - ldr r1, _020B9108 ; =UNK_021CED64 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - add r1, sp, #0x14 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020B90D0 -_020B90C0: - add r1, sp, #0x14 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 -_020B90D0: - mov r3, #0x2 - add r1, sp, #0x10 - mov r0, #0x10 - mov r2, #0x1 - str r3, [sp, #0x10] - bl FUN_020BB1C0 -_020B90E8: - ldr r0, [r7, #0x0] - add r0, r0, #0x3 - str r0, [r7, #0x0] - add sp, sp, #0x44 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020B90FC: .word UNK_02106638 -_020B9100: .word UNK_0210663C -_020B9104: .word UNK_021CED18 -_020B9108: .word UNK_021CED64 -_020B910C: .word UNK_021CEDD4 - arm_func_end FUN_020B8DF0 - - arm_func_start FUN_020B9110 -FUN_020B9110: ; 0x020B9110 - stmdb sp!, {r4,lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r2, [r4, #0x8] - ands r0, r2, #0x100 - bne _020B9164 - ands r0, r2, #0x200 - bne _020B9164 - cmp r1, #0x0 - ldreq r0, [r4, #0xe0] - add r1, sp, #0x0 - streq r0, [sp, #0x8] - streq r0, [sp, #0x4] - streq r0, [sp, #0x0] - ldrne r0, [r4, #0xe4] - mov r2, #0x3 - strne r0, [sp, #0x8] - strne r0, [sp, #0x4] - strne r0, [sp, #0x0] - mov r0, #0x1b - bl FUN_020BB1C0 -_020B9164: - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - add sp, sp, #0x10 - ldmia sp!, {r4,pc} - arm_func_end FUN_020B9110 - - arm_func_start FUN_020B9178 -FUN_020B9178: ; 0x020B9178 - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r0, [r5, #0x34] - cmp r0, #0x0 - ldrneb r4, [r5, #0x96] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020B91CC - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x34] - blx r1 - ldr r0, [r5, #0x34] - cmp r0, #0x0 - ldrneb r4, [r5, #0x96] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r1, r0, #0x40 - b _020B91D0 -_020B91CC: - mov r1, #0x0 -_020B91D0: - ldr r0, [r5, #0x8] - ands r0, r0, #0x100 - bne _020B9228 - cmp r1, #0x0 - bne _020B9228 - ldr r0, [r5, #0x0] - ldrb r12, [r0, #0x1] - ldrb r3, [r0, #0x2] - ldrb lr, [r0, #0x3] - ldrb r2, [r0, #0x5] - ldrb r1, [r0, #0x6] - orr r3, r12, r3, lsl #0x8 - ldrb r6, [r0, #0x4] - orr r12, r3, lr, lsl #0x10 - ldrb r3, [r0, #0x7] - orr r1, r2, r1, lsl #0x8 - orr r6, r12, r6, lsl #0x18 - ldrb r2, [r0, #0x8] - orr r1, r1, r3, lsl #0x10 - add r0, r0, r6 - orr r1, r1, r2, lsl #0x18 - bl FUN_020BB2B0 -_020B9228: - cmp r4, #0x3 - bne _020B9248 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x34] - blx r1 -_020B9248: - ldr r0, [r5, #0x0] - add r0, r0, #0x9 - str r0, [r5, #0x0] - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020B9178 - - arm_func_start FUN_020B9258 -FUN_020B9258: ; 0x020B9258 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x8c - ldr r1, [r0, #0x4] - ldr r4, [r0, #0x0] - ldr r6, [r1, #0x4] - ldrb r2, [r4, #0x2] - ldr r3, [r6, #0x10] - mov r10, #0x0 - str r0, [sp, #0x0] - str r2, [sp, #0x8] - add r3, r6, r3 - add r1, sp, #0x34 - mov r0, r10 - mov r2, #0x54 - mov r9, r10 - str r3, [sp, #0x4] - add r8, r4, #0x3 - bl MIi_CpuClearFast - bl FUN_020BB394 - ldr r0, _020B98AC ; =0x04000440 - mov r7, r10 - str r7, [r0, #0x0] - mov r0, #0x1 - ldr r2, _020B98B0 ; =0x0400044C - ldr r1, _020B98B4 ; =0x04000454 - str r0, [r2, #0x0] - str r0, [sp, #0x10] - str r7, [r1, #0x0] - mov r1, #0x2 - ldr r0, _020B98AC ; =0x04000440 - str r1, [sp, #0x14] - str r1, [r0, #0x0] - ldr r0, [sp, #0x8] - cmp r0, #0x0 - bls _020B96CC -_020B92E4: - ldrb r4, [r8, #0x1] - mov r0, #0x64 - ldr r3, _020B98B8 ; =UNK_021D0380 - mul r0, r4, r0 - str r0, [sp, #0xc] - ldr r0, [sp, #0x0] - mov r1, r4, lsr #0x5 - add r0, r0, r1, lsl #0x2 - ldr r1, [sp, #0x10] - and r2, r4, #0x1f - mov r1, r1, lsl r2 - ldr r11, [r0, #0xcc] - ldr r2, [sp, #0xc] - ands r11, r1, r11 - add r6, r3, r2 - bne _020B9358 - ldr r3, [r0, #0xcc] - mov r2, #0x54 - orr r1, r3, r1 - str r1, [r0, #0xcc] - ldr r0, [sp, #0x4] - ldr r1, _020B98BC ; =0x04000450 - mla r0, r4, r2, r0 - ldrb r2, [r8, #0x0] - str r2, [r1, #0x0] - ldr r2, [sp, #0x10] - ldr r1, _020B98AC ; =0x04000440 - str r2, [r1, #0x0] - bl G3_MultMtx43 -_020B9358: - cmp r7, #0x0 - beq _020B9500 - ldr r2, [sp, #0x6c] - ldr r1, [r5, #0x0] - str r2, [sp, #0x18] - ldr r2, [sp, #0x70] - mov r0, r1, asr #0x1f - str r2, [sp, #0x1c] - ldr r2, [sp, #0x74] - ldr r12, [sp, #0x64] - str r2, [sp, #0x20] - ldr r2, [sp, #0x78] - ldr lr, [sp, #0x68] - str r2, [sp, #0x24] - ldr r2, [sp, #0x7c] - str r2, [sp, #0x28] - ldr r2, [sp, #0x80] - str r2, [sp, #0x2c] - ldr r2, [sp, #0x84] - str r2, [sp, #0x30] - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, r12, r0 - str r0, [sp, #0x64] - ldr r1, [r5, #0x4] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, lr, r0 - str r0, [sp, #0x68] - ldr r1, [r5, #0x8] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x18] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x6c] - ldr r1, [r5, #0xc] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x1c] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x70] - ldr r1, [r5, #0x10] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x20] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x74] - ldr r1, [r5, #0x14] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x24] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x78] - ldr r1, [r5, #0x18] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x28] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x7c] - ldr r1, [r5, #0x1c] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x2c] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x80] - ldr r1, [r5, #0x20] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r1, r3, lsr #0xc - ldr r0, [sp, #0x30] - orr r1, r1, r2, lsl #0x14 - adds r0, r0, r1 - str r0, [sp, #0x84] -_020B9500: - cmp r11, #0x0 - bne _020B9538 -_020B9508: - mov r0, r6 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B9508 - ldr r1, [sp, #0x14] - ldr r0, _020B98AC ; =0x04000440 - str r1, [r0, #0x0] - ldr r0, [sp, #0x4] - mov r1, #0x54 - mla r0, r4, r1, r0 - add r0, r0, #0x30 - bl G3_MultMtx33 -_020B9538: - ldrb r1, [r8, #0x2] - ldr r2, [sp, #0x34] - ldr r0, [r6, #0x0] - mov r10, r1, lsl #0x4 - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x34] - mov r9, r10, asr #0x1f - ldr r2, [sp, #0x38] - ldr r0, [r6, #0x4] - ldr r3, [sp, #0x3c] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x38] - ldr r0, [r6, #0x8] - ldr r2, [sp, #0x40] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x3c] - ldr r0, [r6, #0x10] - ldr r3, [sp, #0x44] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x40] - ldr r0, [r6, #0x14] - ldr r2, [sp, #0x48] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x44] - ldr r0, [r6, #0x18] - ldr r3, [sp, #0x4c] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x48] - ldr r0, [r6, #0x20] - ldr r2, [sp, #0x50] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x4c] - ldr r0, [r6, #0x24] - ldr r3, [sp, #0x54] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x50] - ldr r0, [r6, #0x28] - ldr r2, [sp, #0x58] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x54] - ldr r0, [r6, #0x30] - ldr r3, [sp, #0x5c] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x58] - ldr r0, [r6, #0x34] - ldr r2, [sp, #0x60] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r3, r1 - str r0, [sp, #0x5c] - ldr r0, [r6, #0x38] - smull r1, r0, r10, r0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - adds r0, r2, r1 - str r0, [sp, #0x60] - cmp r11, #0x0 - ldr r1, _020B98C0 ; =UNK_021D03C0 - ldr r0, [sp, #0xc] - add r5, r1, r0 - add r8, r8, #0x3 - bne _020B96BC -_020B96AC: - mov r0, r5 - bl G3X_GetVectorMtx - cmp r0, #0x0 - bne _020B96AC -_020B96BC: - ldr r0, [sp, #0x8] - add r7, r7, #0x1 - cmp r7, r0 - blo _020B92E4 -_020B96CC: - ldr r1, [r5, #0x0] - ldr r4, [sp, #0x64] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, r4, r0 - str r0, [sp, #0x64] - ldr r1, [r5, #0x4] - ldr r4, [sp, #0x68] - mov r0, r1, asr #0x1f - umull r3, r2, r10, r1 - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - mov r0, r3, lsr #0xc - orr r0, r0, r2, lsl #0x14 - adds r0, r4, r0 - str r0, [sp, #0x68] - ldr r1, [r5, #0x8] - ldr r4, [sp, #0x6c] - umull r0, r2, r10, r1 - mov r3, r0, lsr #0xc - mov r0, r1, asr #0x1f - mla r2, r10, r0, r2 - mla r2, r9, r1, r2 - orr r3, r3, r2, lsl #0x14 - adds r0, r4, r3 - str r0, [sp, #0x6c] - ldr r7, [r5, #0xc] - ldr r12, [sp, #0x70] - mov r6, r7, asr #0x1f - umull r11, r8, r10, r7 - mla r8, r10, r6, r8 - mla r8, r9, r7, r8 - mov r6, r11, lsr #0xc - orr r6, r6, r8, lsl #0x14 - adds r6, r12, r6 - str r6, [sp, #0x70] - ldr r7, [r5, #0x10] - ldr r4, [sp, #0x74] - mov r6, r7, asr #0x1f - umull r11, r8, r10, r7 - mla r8, r10, r6, r8 - mla r8, r9, r7, r8 - mov r6, r11, lsr #0xc - orr r6, r6, r8, lsl #0x14 - adds r4, r4, r6 - str r4, [sp, #0x74] - ldr r6, [r5, #0x14] - ldr r3, [sp, #0x78] - mov r4, r6, asr #0x1f - umull r8, r7, r10, r6 - mla r7, r10, r4, r7 - mla r7, r9, r6, r7 - mov r4, r8, lsr #0xc - orr r4, r4, r7, lsl #0x14 - adds r3, r3, r4 - str r3, [sp, #0x78] - ldr r4, [r5, #0x18] - ldr r2, [sp, #0x7c] - mov r3, r4, asr #0x1f - umull r7, r6, r10, r4 - mla r6, r10, r3, r6 - mla r6, r9, r4, r6 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #0x14 - adds r2, r2, r3 - str r2, [sp, #0x7c] - ldr r3, [r5, #0x1c] - ldr r1, [sp, #0x80] - mov r2, r3, asr #0x1f - umull r6, r4, r10, r3 - mla r4, r10, r2, r4 - mla r4, r9, r3, r4 - mov r2, r6, lsr #0xc - orr r2, r2, r4, lsl #0x14 - adds r1, r1, r2 - str r1, [sp, #0x80] - ldr r2, [r5, #0x20] - ldr lr, [sp, #0x84] - mov r1, r2, asr #0x1f - umull r4, r3, r10, r2 - mla r3, r10, r1, r3 - mla r3, r9, r2, r3 - mov r1, r4, lsr #0xc - orr r1, r1, r3, lsl #0x14 - adds r1, lr, r1 - add r0, sp, #0x64 - str r1, [sp, #0x84] - bl G3_LoadMtx43 - ldr r1, _020B98AC ; =0x04000440 - mov r2, #0x1 - add r0, sp, #0x34 - str r2, [r1, #0x0] - bl G3_LoadMtx43 - ldr r3, _020B98AC ; =0x04000440 - mov r0, #0x0 - str r0, [r3, #0x0] - ldr r1, _020B98BC ; =0x04000450 - mov r2, #0x1 - mov r0, #0x2 - str r2, [r1, #0x0] - str r0, [r3, #0x0] - ldr r0, [sp, #0x0] - ldr r1, [r0, #0x0] - ldr r0, _020B98B0 ; =0x0400044C - ldrb r2, [r1, #0x1] - mov r1, #0x3 - str r2, [r0, #0x0] - ldr r0, [sp, #0x0] - ldr r2, [r0, #0x0] - ldrb r0, [r2, #0x2] - add r0, r0, #0x1 - mla r1, r0, r1, r2 - ldr r0, [sp, #0x0] - str r1, [r0, #0x0] - add sp, sp, #0x8c - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B98AC: .word 0x04000440 -_020B98B0: .word 0x0400044C -_020B98B4: .word 0x04000454 -_020B98B8: .word UNK_021D0380 -_020B98BC: .word 0x04000450 -_020B98C0: .word UNK_021D03C0 - arm_func_end FUN_020B9258 - - arm_func_start FUN_020B98C4 -FUN_020B98C4: ; 0x020B98C4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0xcc - mov r10, r0 - ldr r2, [r10, #0x8] - mov r9, r1 - ands r0, r2, #0x200 - mov r7, #0x2 - ldr r6, _020B9C28 ; =UNK_02106718 - ldr fp, _020B9C2C ; =UNK_02106724 - ldr r5, _020B9C30 ; =UNK_021066F4 - beq _020B992C - cmp r9, #0x40 - beq _020B9900 - cmp r9, #0x60 - bne _020B9904 -_020B9900: - add r7, r7, #0x1 -_020B9904: - cmp r9, #0x20 - beq _020B9914 - cmp r9, #0x60 - bne _020B9918 -_020B9914: - add r7, r7, #0x1 -_020B9918: - ldr r0, [r10, #0x0] - add sp, sp, #0xcc - add r0, r0, r7 - str r0, [r10, #0x0] - ldmia sp!, {r4-r11,pc} -_020B992C: - cmp r9, #0x40 - beq _020B993C - cmp r9, #0x60 - bne _020B9974 -_020B993C: - add r7, r7, #0x1 - ands r0, r2, #0x100 - bne _020B9974 - cmp r9, #0x40 - ldreq r0, [r10, #0x0] - add r1, sp, #0x0 - ldreqb r0, [r0, #0x2] - mov r2, #0x1 - streq r0, [sp, #0x0] - ldrne r0, [r10, #0x0] - ldrneb r0, [r0, #0x3] - strne r0, [sp, #0x0] - mov r0, #0x14 - bl FUN_020BB1C0 -_020B9974: - ldr r0, [r10, #0x2c] - cmp r0, #0x0 - ldrneb r8, [r10, #0x94] - moveq r8, #0x0 - cmp r8, #0x1 - bne _020B99C0 - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x2c] - blx r1 - ldr r0, [r10, #0x2c] - cmp r0, #0x0 - ldrneb r8, [r10, #0x94] - ldr r0, [r10, #0x8] - moveq r8, #0x0 - and r1, r0, #0x40 - b _020B99C4 -_020B99C0: - mov r1, #0x0 -_020B99C4: - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020B9BA4 - cmp r1, #0x0 - bne _020B9BA4 - bl FUN_020BB394 - ldr r2, _020B9C34 ; =0x00151110 - ldr r1, _020B9C38 ; =0x04000400 - mov r0, #0x0 - str r2, [r1, #0x0] - str r0, [r1, #0x0] - str r0, [r1, #0x0] - add r4, sp, #0x8 -_020B99F8: - mov r0, r4 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B99F8 - ldr r0, _020B9C3C ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9A38 - bl FUN_020B82A4 - add r1, sp, #0x48 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x48 - mov r2, r0 - bl MTX_Concat44 - b _020B9A5C -_020B9A38: - ands r0, r1, #0x2 - beq _020B9A5C - ldr r0, _020B9C40 ; =UNK_021CED64 - add r1, sp, #0x88 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x88 - mov r2, r0 - bl MTX_Concat44 -_020B9A5C: - ldr r1, [sp, #0x38] - add r0, sp, #0x8 - str r1, [r6, #0x0] - ldr r1, [sp, #0x3c] - str r1, [r6, #0x4] - ldr r1, [sp, #0x40] - str r1, [r6, #0x8] - bl VEC_Mag - str r0, [r11, #0x0] - add r0, sp, #0x18 - bl VEC_Mag - str r0, [r11, #0x4] - add r0, sp, #0x28 - bl VEC_Mag - str r0, [r11, #0x8] - ldr r0, [sp, #0x1c] - cmp r0, #0x0 - bne _020B9AB0 - ldr r0, [sp, #0x20] - cmp r0, #0x0 - beq _020B9AD4 -_020B9AB0: - add r0, sp, #0x18 - add r1, r5, #0xc - bl VEC_Normalize - ldr r0, [r5, #0x14] - rsb r0, r0, #0x0 - str r0, [r5, #0x1c] - ldr r0, [r5, #0x10] - str r0, [r5, #0x20] - b _020B9AF4 -_020B9AD4: - add r0, sp, #0x28 - add r1, r5, #0x18 - bl VEC_Normalize - ldr r0, [r5, #0x1c] - rsb r0, r0, #0x0 - str r0, [r5, #0x14] - ldr r0, [r5, #0x20] - str r0, [r5, #0x10] -_020B9AF4: - ldr r0, _020B9C3C ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9B48 - ldr r3, _020B9C44 ; =0x00171012 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C48 ; =UNK_021066EC - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8264 - ldr r1, _020B9C38 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9C4C ; =0x00001B19 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C30 ; =UNK_021066F4 - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9BA4 -_020B9B48: - ands r0, r1, #0x2 - beq _020B9B94 - ldr r3, _020B9C44 ; =0x00171012 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C48 ; =UNK_021066EC - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8344 - ldr r1, _020B9C38 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9C4C ; =0x00001B19 - ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C30 ; =UNK_021066F4 - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9BA4 -_020B9B94: - ldr r0, _020B9C50 ; =UNK_021066E8 - ldr r1, _020B9C38 ; =0x04000400 - mov r2, #0x48 - bl MIi_CpuSend32 -_020B9BA4: - cmp r8, #0x3 - movne r0, #0x0 - bne _020B9BD0 - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x2c] - blx r1 - ldr r0, [r10, #0x8] - and r0, r0, #0x40 -_020B9BD0: - cmp r9, #0x20 - beq _020B9BE0 - cmp r9, #0x60 - bne _020B9C14 -_020B9BE0: - cmp r0, #0x0 - add r7, r7, #0x1 - bne _020B9C14 - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020B9C14 - ldr r0, [r10, #0x0] - add r1, sp, #0x4 - ldrb r3, [r0, #0x2] - mov r0, #0x13 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B9C14: - ldr r0, [r10, #0x0] - add r0, r0, r7 - str r0, [r10, #0x0] - add sp, sp, #0xcc - ldmia sp!, {r4-r11,pc} - .balign 4 -_020B9C28: .word UNK_02106718 -_020B9C2C: .word UNK_02106724 -_020B9C30: .word UNK_021066F4 -_020B9C34: .word 0x00151110 -_020B9C38: .word 0x04000400 -_020B9C3C: .word UNK_021CED18 -_020B9C40: .word UNK_021CED64 -_020B9C44: .word 0x00171012 -_020B9C48: .word UNK_021066EC -_020B9C4C: .word 0x00001B19 -_020B9C50: .word UNK_021066E8 - arm_func_end FUN_020B98C4 - - arm_func_start FUN_020B9C54 -FUN_020B9C54: ; 0x020B9C54 - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0xc8 - mov r9, r0 - ldr r2, [r9, #0x8] - mov r8, r1 - ands r0, r2, #0x200 - mov r6, #0x2 - ldr r5, _020B9F58 ; =UNK_021066D0 - ldr r4, _020B9F5C ; =UNK_021066DC - beq _020B9CB8 - cmp r8, #0x40 - beq _020B9C8C - cmp r8, #0x60 - bne _020B9C90 -_020B9C8C: - add r6, r6, #0x1 -_020B9C90: - cmp r8, #0x20 - beq _020B9CA0 - cmp r8, #0x60 - bne _020B9CA4 -_020B9CA0: - add r6, r6, #0x1 -_020B9CA4: - ldr r0, [r9, #0x0] - add sp, sp, #0xc8 - add r0, r0, r6 - str r0, [r9, #0x0] - ldmia sp!, {r4-r10,pc} -_020B9CB8: - cmp r8, #0x40 - beq _020B9CC8 - cmp r8, #0x60 - bne _020B9D00 -_020B9CC8: - add r6, r6, #0x1 - ands r0, r2, #0x100 - bne _020B9D00 - cmp r8, #0x40 - ldreq r0, [r9, #0x0] - add r1, sp, #0x0 - ldreqb r0, [r0, #0x2] - mov r2, #0x1 - streq r0, [sp, #0x0] - ldrne r0, [r9, #0x0] - ldrneb r0, [r0, #0x3] - strne r0, [sp, #0x0] - mov r0, #0x14 - bl FUN_020BB1C0 -_020B9D00: - ldr r0, [r9, #0x28] - cmp r0, #0x0 - ldrneb r7, [r9, #0x93] - moveq r7, #0x0 - cmp r7, #0x1 - bne _020B9D4C - ldr r1, [r9, #0x8] - mov r0, r9 - bic r1, r1, #0x40 - str r1, [r9, #0x8] - ldr r1, [r9, #0x28] - blx r1 - ldr r0, [r9, #0x28] - cmp r0, #0x0 - ldrneb r7, [r9, #0x93] - ldr r0, [r9, #0x8] - moveq r7, #0x0 - and r1, r0, #0x40 - b _020B9D50 -_020B9D4C: - mov r1, #0x0 -_020B9D50: - ldr r0, [r9, #0x8] - ands r0, r0, #0x100 - bne _020B9ED4 - cmp r1, #0x0 - bne _020B9ED4 - bl FUN_020BB394 - ldr r2, _020B9F60 ; =0x00151110 - ldr r1, _020B9F64 ; =0x04000400 - mov r0, #0x0 - str r2, [r1, #0x0] - str r0, [r1, #0x0] - str r0, [r1, #0x0] - add r10, sp, #0x8 -_020B9D84: - mov r0, r10 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020B9D84 - ldr r0, _020B9F68 ; =UNK_021CED18 - ldr r1, [r0, #0xfc] - ands r0, r1, #0x1 - beq _020B9DC4 - bl FUN_020B82A4 - add r1, sp, #0x48 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x48 - mov r2, r0 - bl MTX_Concat44 - b _020B9DE8 -_020B9DC4: - ands r0, r1, #0x2 - beq _020B9DE8 - ldr r0, _020B9F6C ; =UNK_021CED64 - add r1, sp, #0x88 - bl MTX_Copy43To44_ - add r0, sp, #0x8 - add r1, sp, #0x88 - mov r2, r0 - bl MTX_Concat44 -_020B9DE8: - ldr r1, [sp, #0x38] - add r0, sp, #0x8 - str r1, [r5, #0x0] - ldr r1, [sp, #0x3c] - str r1, [r5, #0x4] - ldr r1, [sp, #0x40] - str r1, [r5, #0x8] - bl VEC_Mag - str r0, [r4, #0x0] - add r0, sp, #0x18 - bl VEC_Mag - str r0, [r4, #0x4] - add r0, sp, #0x28 - bl VEC_Mag - ldr r1, _020B9F68 ; =UNK_021CED18 - str r0, [r4, #0x8] - ldr r1, [r1, #0xfc] - ands r0, r1, #0x1 - beq _020B9E78 - ldr r3, _020B9F70 ; =0x00171012 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F74 ; =UNK_021066A4 - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8264 - ldr r1, _020B9F64 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9F78 ; =0x00001B19 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F7C ; =UNK_021066AC - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9ED4 -_020B9E78: - ands r0, r1, #0x2 - beq _020B9EC4 - ldr r3, _020B9F70 ; =0x00171012 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F74 ; =UNK_021066A4 - mov r2, #0x8 - str r3, [r1, #0x0] - bl MIi_CpuSend32 - bl FUN_020B8344 - ldr r1, _020B9F64 ; =0x04000400 - mov r2, #0x30 - bl MIi_CpuSend32 - ldr r2, _020B9F78 ; =0x00001B19 - ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F7C ; =UNK_021066AC - str r2, [r1, #0x0] - mov r2, #0x3c - bl MIi_CpuSend32 - b _020B9ED4 -_020B9EC4: - ldr r0, _020B9F80 ; =UNK_021066A0 - ldr r1, _020B9F64 ; =0x04000400 - mov r2, #0x48 - bl MIi_CpuSend32 -_020B9ED4: - cmp r7, #0x3 - movne r0, #0x0 - bne _020B9F00 - ldr r1, [r9, #0x8] - mov r0, r9 - bic r1, r1, #0x40 - str r1, [r9, #0x8] - ldr r1, [r9, #0x28] - blx r1 - ldr r0, [r9, #0x8] - and r0, r0, #0x40 -_020B9F00: - cmp r8, #0x20 - beq _020B9F10 - cmp r8, #0x60 - bne _020B9F44 -_020B9F10: - cmp r0, #0x0 - add r6, r6, #0x1 - bne _020B9F44 - ldr r0, [r9, #0x8] - ands r0, r0, #0x100 - bne _020B9F44 - ldr r0, [r9, #0x0] - add r1, sp, #0x4 - ldrb r3, [r0, #0x2] - mov r0, #0x13 - mov r2, #0x1 - str r3, [sp, #0x4] - bl FUN_020BB1C0 -_020B9F44: - ldr r0, [r9, #0x0] - add r0, r0, r6 - str r0, [r9, #0x0] - add sp, sp, #0xc8 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020B9F58: .word UNK_021066D0 -_020B9F5C: .word UNK_021066DC -_020B9F60: .word 0x00151110 -_020B9F64: .word 0x04000400 -_020B9F68: .word UNK_021CED18 -_020B9F6C: .word UNK_021CED64 -_020B9F70: .word 0x00171012 -_020B9F74: .word UNK_021066A4 -_020B9F78: .word 0x00001B19 -_020B9F7C: .word UNK_021066AC -_020B9F80: .word UNK_021066A0 - arm_func_end FUN_020B9C54 - - arm_func_start FUN_020B9F84 -FUN_020B9F84: ; 0x020B9F84 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x14 - mov r10, r0 - ldr r0, [r10, #0x0] - mov r9, r1 - ldrb r4, [r0, #0x1] - mov r7, #0x4 - strb r4, [r10, #0xae] - ldr r0, [r10, #0x8] - orr r0, r0, #0x10 - str r0, [r10, #0x8] - ldr r1, [r10, #0x8] - ands r0, r1, #0x400 - beq _020BA01C - cmp r9, #0x40 - beq _020B9FCC - cmp r9, #0x60 - bne _020B9FD0 -_020B9FCC: - add r7, r7, #0x1 -_020B9FD0: - cmp r9, #0x20 - beq _020B9FE0 - cmp r9, #0x60 - bne _020BA008 -_020B9FE0: - add r7, r7, #0x1 - ands r0, r1, #0x100 - bne _020BA008 - ldr r0, [r10, #0x0] - add r1, sp, #0x8 - ldrb r3, [r0, #0x4] - mov r0, #0x14 - mov r2, #0x1 - str r3, [sp, #0x8] - bl FUN_020BB1C0 -_020BA008: - ldr r0, [r10, #0x0] - add sp, sp, #0x14 - add r0, r0, r7 - str r0, [r10, #0x0] - ldmia sp!, {r4-r11,pc} -_020BA01C: - cmp r9, #0x40 - beq _020BA02C - cmp r9, #0x60 - bne _020BA068 -_020BA02C: - cmp r9, #0x40 - ldreq r0, [r10, #0x0] - add r7, r7, #0x1 - ldreqb r0, [r0, #0x4] - streq r0, [sp, #0xc] - ldrne r0, [r10, #0x0] - ldrneb r0, [r0, #0x5] - strne r0, [sp, #0xc] - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020BA068 - add r1, sp, #0xc - mov r0, #0x14 - mov r2, #0x1 - bl FUN_020BB1C0 -_020BA068: - add r0, r10, #0x12c - str r0, [r10, #0xb4] - ldr r0, [r10, #0x24] - cmp r0, #0x0 - ldrneb r8, [r10, #0x92] - moveq r8, #0x0 - cmp r8, #0x1 - bne _020BA0BC - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x24] - blx r1 - ldr r0, [r10, #0x24] - cmp r0, #0x0 - ldrneb r8, [r10, #0x92] - ldr r0, [r10, #0x8] - moveq r8, #0x0 - and r0, r0, #0x40 - b _020BA0C0 -_020BA0BC: - mov r0, #0x0 -_020BA0C0: - cmp r0, #0x0 - bne _020BA2CC - ldr r0, [r10, #0x4] - ldr r1, [r0, #0x34] - cmp r1, #0x0 - beq _020BA0F4 - mov r0, #0x58 - mla r6, r4, r0, r1 - ldr r0, [r10, #0x8] - ands r0, r0, #0x80 - moveq r0, #0x1 - movne r0, #0x0 - b _020BA0FC -_020BA0F4: - add r6, r10, #0x12c - mov r0, #0x0 -_020BA0FC: - cmp r0, #0x0 - bne _020BA2C8 - mov r0, #0x0 - str r0, [r6, #0x0] - ldr r0, [r10, #0x4] - ldr r1, [r0, #0x10] - cmp r1, #0x0 - beq _020BA134 - ldr r3, [r0, #0x14] - mov r0, r6 - mov r2, r4 - blx r3 - cmp r0, #0x0 - bne _020BA2C8 -_020BA134: - ldr r2, [r10, #0xd4] - ldrh r0, [r2, #0x6] - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r4, r0 - ldr r1, [r0, #0x4] - ldrh r0, [r2, r1] - add r4, r2, r1 - add r5, r4, #0x4 - ands r0, r0, #0x1 - ldrne r0, [r6, #0x0] - orrne r0, r0, #0x4 - strne r0, [r6, #0x0] - bne _020BA188 - ldr r0, [r5, #0x0] - str r0, [r6, #0x4c] - ldr r0, [r5, #0x4] - str r0, [r6, #0x50] - ldr r0, [r5, #0x8] - add r5, r5, #0xc - str r0, [r6, #0x54] -_020BA188: - ldrh r1, [r4, #0x0] - ands r0, r1, #0x2 - ldrne r0, [r6, #0x0] - orrne r0, r0, #0x2 - strne r0, [r6, #0x0] - bne _020BA2B0 - ands r0, r1, #0x8 - beq _020BA264 - and r1, r1, #0xf0 - mov r11, r1, asr #0x4 - ldrsh r1, [r5, #0x0] - add r0, r6, #0x28 - str r1, [sp, #0x0] - ldrsh r1, [r5, #0x2] - str r1, [sp, #0x4] - bl MI_Zero36B - ldrh r0, [r4, #0x0] - add r1, r6, r11, lsl #0x2 - add r5, r5, #0x4 - ands r0, r0, #0x100 - movne r0, #0x1000 - rsbne r2, r0, #0x0 - moveq r2, #0x1000 - str r2, [r1, #0x28] - ldr r0, _020BA3B4 ; =UNK_020FF9F0 - ldr r1, _020BA3B8 ; =UNK_020FF9F0 + 1 - ldrb r0, [r0, r11, lsl #0x2] - add r2, r6, r0, lsl #0x2 - ldr r0, [sp, #0x0] - str r0, [r2, #0x28] - ldrb r0, [r1, r11, lsl #0x2] - add r1, r6, r0, lsl #0x2 - ldr r0, [sp, #0x4] - str r0, [r1, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x200 - ldrne r0, [sp, #0x4] - rsbne r0, r0, #0x0 - strne r0, [sp, #0x4] - ldr r0, _020BA3BC ; =UNK_020FF9F0 + 2 - ldrb r0, [r0, r11, lsl #0x2] - add r1, r6, r0, lsl #0x2 - ldr r0, [sp, #0x4] - str r0, [r1, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x400 - ldrne r0, [sp, #0x0] - rsbne r0, r0, #0x0 - strne r0, [sp, #0x0] - ldr r0, _020BA3C0 ; =UNK_020FF9F0 + 3 - ldrb r0, [r0, r11, lsl #0x2] - add r1, r6, r0, lsl #0x2 - ldr r0, [sp, #0x0] - str r0, [r1, #0x28] - b _020BA2B0 -_020BA264: - ldrsh r0, [r4, #0x2] - str r0, [r6, #0x28] - ldrsh r0, [r5, #0x0] - str r0, [r6, #0x2c] - ldrsh r0, [r5, #0x2] - str r0, [r6, #0x30] - ldrsh r0, [r5, #0x4] - str r0, [r6, #0x34] - ldrsh r0, [r5, #0x6] - str r0, [r6, #0x38] - ldrsh r0, [r5, #0x8] - str r0, [r6, #0x3c] - ldrsh r0, [r5, #0xa] - str r0, [r6, #0x40] - ldrsh r0, [r5, #0xc] - str r0, [r6, #0x44] - ldrsh r0, [r5, #0xe] - add r5, r5, #0x10 - str r0, [r6, #0x48] -_020BA2B0: - ldrh r3, [r4, #0x0] - ldr r2, [r10, #0x0] - ldr r4, [r10, #0xe8] - mov r0, r6 - mov r1, r5 - blx r4 -_020BA2C8: - str r6, [r10, #0xb4] -_020BA2CC: - cmp r8, #0x2 - bne _020BA308 - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x24] - blx r1 - ldr r0, [r10, #0x24] - cmp r0, #0x0 - ldrneb r8, [r10, #0x92] - ldr r0, [r10, #0x8] - moveq r8, #0x0 - and r0, r0, #0x40 - b _020BA30C -_020BA308: - mov r0, #0x0 -_020BA30C: - cmp r0, #0x0 - bne _020BA32C - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020BA32C - ldr r0, [r10, #0xb4] - ldr r1, [r10, #0xec] - blx r1 -_020BA32C: - mov r0, #0x0 - str r0, [r10, #0xb4] - cmp r8, #0x3 - bne _020BA35C - ldr r1, [r10, #0x8] - mov r0, r10 - bic r1, r1, #0x40 - str r1, [r10, #0x8] - ldr r1, [r10, #0x24] - blx r1 - ldr r0, [r10, #0x8] - and r0, r0, #0x40 -_020BA35C: - cmp r9, #0x20 - beq _020BA36C - cmp r9, #0x60 - bne _020BA3A0 -_020BA36C: - cmp r0, #0x0 - add r7, r7, #0x1 - bne _020BA3A0 - ldr r0, [r10, #0x8] - ands r0, r0, #0x100 - bne _020BA3A0 - ldr r0, [r10, #0x0] - add r1, sp, #0x10 - ldrb r3, [r0, #0x4] - mov r0, #0x13 - mov r2, #0x1 - str r3, [sp, #0x10] - bl FUN_020BB1C0 -_020BA3A0: - ldr r0, [r10, #0x0] - add r0, r0, r7 - str r0, [r10, #0x0] - add sp, sp, #0x14 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020BA3B4: .word UNK_020FF9F0 -_020BA3B8: .word UNK_020FF9F0 + 1 -_020BA3BC: .word UNK_020FF9F0 + 2 -_020BA3C0: .word UNK_020FF9F0 + 3 - arm_func_end FUN_020B9F84 - - arm_func_start FUN_020BA3C4 -FUN_020BA3C4: ; 0x020BA3C4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - ldr r3, [r4, #0x8] - ands r2, r3, #0x200 - bne _020BA420 - ands r2, r3, #0x1 - beq _020BA420 - ands r2, r3, #0x2 - bne _020BA420 - ldr r5, [r4, #0xdc] - ldr r3, [r4, #0x0] - ldrh r2, [r5, #0x6] - ldrb r3, [r3, #0x1] - ldr ip, _020BA434 ; =UNK_02106650 - ldrh lr, [r5, r2] - add r2, r5, r2 - mla r2, lr, r3, r2 - ldr r2, [r2, #0x4] - ldrh lr, [r5, r2] - add r2, r5, r2 - ldr r12, [r12, lr, lsl #0x2] - blx r12 -_020BA420: - ldr r0, [r4, #0x0] - add r0, r0, #0x2 - str r0, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BA434: .word UNK_02106650 - arm_func_end FUN_020BA3C4 - - arm_func_start FUN_020BA438 -FUN_020BA438: ; 0x020BA438 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r0, [r6, #0x20] - mov r5, r2 - cmp r0, #0x0 - ldrneb r4, [r6, #0x91] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020BA490 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x20] - blx r1 - ldr r0, [r6, #0x20] - cmp r0, #0x0 - ldrneb r4, [r6, #0x91] - ldr r0, [r6, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020BA494 -_020BA490: - mov r0, #0x0 -_020BA494: - cmp r0, #0x0 - bne _020BA4B8 - ldr r0, [r6, #0x8] - ands r0, r0, #0x100 - bne _020BA4B8 - ldr r0, [r5, #0x8] - ldr r1, [r5, #0xc] - add r0, r5, r0 - bl FUN_020BB2B0 -_020BA4B8: - cmp r4, #0x2 - bne _020BA4E8 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x20] - blx r1 - ldr r0, [r6, #0x20] - cmp r0, #0x0 - ldrneb r4, [r6, #0x91] - moveq r4, #0x0 -_020BA4E8: - cmp r4, #0x3 - ldmneia sp!, {r4-r6,pc} - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x20] - blx r1 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BA438 - - arm_func_start FUN_020BA50C -FUN_020BA50C: ; 0x020BA50C - stmdb sp!, {r4-r6,lr} - mov r4, r0 - ldr r5, [r4, #0x8] - ands r0, r5, #0x200 - bne _020BA578 - ldr r2, [r4, #0x0] - ands r0, r5, #0x1 - ldrb r3, [r2, #0x1] - bne _020BA544 - ands r0, r5, #0x8 - beq _020BA544 - ldrb r0, [r4, #0xad] - cmp r3, r0 - beq _020BA578 -_020BA544: - ldr r6, [r4, #0xd8] - ldr ip, _020BA588 ; =UNK_02106640 - ldrh r2, [r6, #0xa] - add r5, r6, #0x4 - mov r0, r4 - ldrh lr, [r5, r2] - add r2, r5, r2 - mla r2, lr, r3, r2 - ldr r2, [r2, #0x4] - ldrh lr, [r6, r2] - add r2, r6, r2 - ldr r12, [r12, lr, lsl #0x2] - blx r12 -_020BA578: - ldr r0, [r4, #0x0] - add r0, r0, #0x2 - str r0, [r4, #0x0] - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BA588: .word UNK_02106640 - arm_func_end FUN_020BA50C - - arm_func_start FUN_020BA58C -FUN_020BA58C: ; 0x020BA58C - stmdb sp!, {r4-r8,lr} - sub sp, sp, #0x20 - mov r8, r0 - mov r6, r3 - strb r6, [r8, #0xad] - ldr r3, [r8, #0x8] - add r0, r8, #0xf4 - orr r3, r3, #0x8 - str r3, [r8, #0x8] - str r0, [r8, #0xb0] - ldr r0, [r8, #0x1c] - mov r4, r1 - cmp r0, #0x0 - ldrneb r5, [r8, #0x90] - mov r7, r2 - moveq r5, #0x0 - cmp r5, #0x1 - bne _020BA608 - ldr r1, [r8, #0x8] - mov r0, r8 - bic r1, r1, #0x40 - str r1, [r8, #0x8] - ldr r1, [r8, #0x1c] - blx r1 - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - ldrneb r5, [r8, #0x90] - ldr r0, [r8, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BA60C -_020BA608: - mov r0, #0x0 -_020BA60C: - cmp r0, #0x0 - bne _020BA8C0 - ldr r0, [r8, #0x4] - ldr r0, [r0, #0x38] - cmp r0, #0x0 - beq _020BA638 - ldr r1, [r8, #0x8] - ands r1, r1, #0x80 - moveq r1, #0x38 - mlaeq r4, r6, r1, r0 - beq _020BA8BC -_020BA638: - cmp r4, #0x20 - beq _020BA648 - cmp r4, #0x40 - bne _020BA684 -_020BA648: - mov r1, r6, lsr #0x5 - add r1, r8, r1, lsl #0x2 - and r2, r6, #0x1f - mov r3, #0x1 - mov r2, r3, lsl r2 - ldr r1, [r1, #0xbc] - ands r1, r2, r1 - beq _020BA684 - cmp r0, #0x0 - movne r1, #0x38 - mlane r4, r6, r1, r0 - ldreq r1, _020BA9D8 ; =UNK_021CEF80 - moveq r0, #0x38 - mlaeq r4, r6, r0, r1 - b _020BA8BC -_020BA684: - cmp r0, #0x0 - beq _020BA6BC - add r4, r8, #0xbc - mov r3, r6, lsr #0x5 - ldr r2, [r4, r3, lsl #0x2] - and r0, r6, #0x1f - mov r1, #0x1 - orr r0, r2, r1, lsl r0 - str r0, [r4, r3, lsl #0x2] - ldr r1, [r8, #0x4] - mov r0, #0x38 - ldr r1, [r1, #0x38] - mla r4, r6, r0, r1 - b _020BA6F0 -_020BA6BC: - cmp r4, #0x40 - addne r4, r8, #0xf4 - bne _020BA6F0 - add lr, r8, #0xbc - mov r12, r6, lsr #0x5 - ldr r1, _020BA9D8 ; =UNK_021CEF80 - ldr r4, [lr, r12, lsl #0x2] - mov r0, #0x38 - and r2, r6, #0x1f - mov r3, #0x1 - orr r2, r4, r3, lsl r2 - mla r4, r6, r0, r1 - str r2, [lr, r12, lsl #0x2] -_020BA6F0: - mov r0, #0x0 - str r0, [r4, #0x0] - ldr r3, [r8, #0xd8] - ldrh r0, [r3, #0xa] - add r2, r3, #0x4 - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r6, r0 - ldr r0, [r0, #0x4] - ldr r1, _020BA9DC ; =UNK_021CED18 - add r0, r3, r0 - ldrh r0, [r0, #0x1e] - ands r0, r0, #0x20 - ldrne r0, [r4, #0x0] - orrne r0, r0, #0x20 - strne r0, [r4, #0x0] - ldrh r2, [r7, #0x1e] - ldr r0, _020BA9E0 ; =UNK_020FF9D0 - ldr r12, [r1, #0x94] - mov r2, r2, asr #0x6 - and r2, r2, #0x7 - ldr lr, [r0, r2, lsl #0x2] - ldr r2, [r7, #0x4] - mvn r3, lr - and r3, r12, r3 - and r2, r2, lr - orr r2, r3, r2 - str r2, [r4, #0x4] - ldrh r12, [r7, #0x1e] - ldr r3, [r1, #0x98] - ldr r2, [r7, #0x8] - mov r12, r12, asr #0x9 - and r12, r12, #0x7 - ldr r12, [r0, r12, lsl #0x2] - mvn r0, r12 - and r3, r3, r0 - and r0, r2, r12 - orr r0, r3, r0 - str r0, [r4, #0x8] - ldr r3, [r7, #0x10] - ldr r0, [r7, #0xc] - ldr r2, [r1, #0x9c] - mvn r1, r3 - and r1, r2, r1 - and r0, r0, r3 - orr r0, r1, r0 - str r0, [r4, #0xc] - ldr r0, [r7, #0x14] - str r0, [r4, #0x10] - ldrh r0, [r7, #0x1c] - str r0, [r4, #0x14] - ldrh r1, [r7, #0x1e] - ands r0, r1, #0x1 - beq _020BA850 - ands r1, r1, #0x2 - ldrne r1, [r4, #0x0] - add r0, r7, #0x2c - orrne r1, r1, #0x1 - strne r1, [r4, #0x0] - bne _020BA7F4 - ldr r1, [r0, #0x0] - str r1, [r4, #0x18] - ldr r1, [r0, #0x4] - add r0, r0, #0x8 - str r1, [r4, #0x1c] -_020BA7F4: - ldrh r1, [r7, #0x1e] - ands r1, r1, #0x4 - ldrne r1, [r4, #0x0] - orrne r1, r1, #0x2 - strne r1, [r4, #0x0] - bne _020BA820 - ldrsh r1, [r0, #0x0] - strh r1, [r4, #0x20] - ldrsh r1, [r0, #0x2] - add r0, r0, #0x4 - strh r1, [r4, #0x22] -_020BA820: - ldrh r1, [r7, #0x1e] - ands r1, r1, #0x8 - ldreq r1, [r0, #0x0] - streq r1, [r4, #0x24] - ldreq r0, [r0, #0x4] - streq r0, [r4, #0x28] - ldrne r0, [r4, #0x0] - orrne r0, r0, #0x4 - strne r0, [r4, #0x0] - ldr r0, [r4, #0x0] - orr r0, r0, #0x8 - str r0, [r4, #0x0] -_020BA850: - ldr r0, [r8, #0x4] - ldr r1, [r0, #0x8] - cmp r1, #0x0 - beq _020BA890 - mov r2, r6, lsr #0x5 - add r2, r0, r2, lsl #0x2 - and r3, r6, #0x1f - mov r12, #0x1 - mov r3, r12, lsl r3 - ldr r2, [r2, #0x3c] - ands r2, r3, r2 - beq _020BA890 - ldr r3, [r0, #0xc] - mov r0, r4 - mov r2, r6 - blx r3 -_020BA890: - ldr r0, [r4, #0x0] - ands r0, r0, #0x18 - beq _020BA8BC - ldrh r0, [r7, #0x20] - strh r0, [r4, #0x2c] - ldrh r0, [r7, #0x22] - strh r0, [r4, #0x2e] - ldr r0, [r7, #0x24] - str r0, [r4, #0x30] - ldr r0, [r7, #0x28] - str r0, [r4, #0x34] -_020BA8BC: - str r4, [r8, #0xb0] -_020BA8C0: - cmp r5, #0x2 - bne _020BA8FC - ldr r1, [r8, #0x8] - mov r0, r8 - bic r1, r1, #0x40 - str r1, [r8, #0x8] - ldr r1, [r8, #0x1c] - blx r1 - ldr r0, [r8, #0x1c] - cmp r0, #0x0 - ldrneb r5, [r8, #0x90] - ldr r0, [r8, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BA900 -_020BA8FC: - mov r0, #0x0 -_020BA900: - cmp r0, #0x0 - bne _020BA9AC - ldr r4, [r8, #0xb0] - ldr r1, [r4, #0xc] - ands r0, r1, #0x1f0000 - beq _020BA9A0 - ldr r0, [r4, #0x0] - ands r0, r0, #0x20 - bicne r0, r1, #0x1f0000 - strne r0, [r4, #0xc] - ldr r0, [r8, #0x8] - bic r0, r0, #0x2 - str r0, [r8, #0x8] - ldr r0, [r8, #0x8] - ands r0, r0, #0x100 - bne _020BA9AC - ldr r0, _020BA9E4 ; =0x00293130 - ldr r3, _020BA9E8 ; =0x00002B2A - str r0, [sp, #0x0] - ldr r2, [r4, #0x4] - add r1, sp, #0x4 - str r2, [sp, #0x4] - ldr r6, [r4, #0x8] - mov r2, #0x6 - str r6, [sp, #0x8] - ldr r6, [r4, #0xc] - str r6, [sp, #0xc] - str r3, [sp, #0x10] - ldr r3, [r4, #0x10] - str r3, [sp, #0x14] - ldr r3, [r4, #0x14] - str r3, [sp, #0x18] - bl FUN_020BB1C0 - ldr r0, [r4, #0x0] - ands r0, r0, #0x18 - beq _020BA9AC - ldr r1, [r8, #0xf0] - mov r0, r4 - blx r1 - b _020BA9AC -_020BA9A0: - ldr r0, [r8, #0x8] - orr r0, r0, #0x2 - str r0, [r8, #0x8] -_020BA9AC: - cmp r5, #0x3 - addne sp, sp, #0x20 - ldmneia sp!, {r4-r8,pc} - ldr r1, [r8, #0x8] - mov r0, r8 - bic r1, r1, #0x40 - str r1, [r8, #0x8] - ldr r1, [r8, #0x1c] - blx r1 - add sp, sp, #0x20 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BA9D8: .word UNK_021CEF80 -_020BA9DC: .word UNK_021CED18 -_020BA9E0: .word UNK_020FF9D0 -_020BA9E4: .word 0x00293130 -_020BA9E8: .word 0x00002B2A - arm_func_end FUN_020BA58C - - arm_func_start FUN_020BA9EC -FUN_020BA9EC: ; 0x020BA9EC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x8] - ands r0, r1, #0x200 - bne _020BAAAC - ands r0, r1, #0x1 - beq _020BAAAC - ldr r0, [r5, #0x18] - cmp r0, #0x0 - ldrneb r4, [r5, #0x8f] - moveq r4, #0x0 - cmp r4, #0x1 - bne _020BAA58 - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x18] - blx r1 - ldr r0, [r5, #0x18] - cmp r0, #0x0 - ldrneb r4, [r5, #0x8f] - ldr r0, [r5, #0x8] - moveq r4, #0x0 - and r0, r0, #0x40 - b _020BAA5C -_020BAA58: - mov r0, #0x0 -_020BAA5C: - cmp r0, #0x0 - bne _020BAA8C - ldr r0, [r5, #0x0] - ldrb r0, [r0, #0x1] - str r0, [sp, #0x0] - ldr r0, [r5, #0x8] - ands r0, r0, #0x100 - bne _020BAA8C - add r1, sp, #0x0 - mov r0, #0x14 - mov r2, #0x1 - bl FUN_020BB1C0 -_020BAA8C: - cmp r4, #0x3 - bne _020BAAAC - ldr r1, [r5, #0x8] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r5, #0x8] - ldr r1, [r5, #0x18] - blx r1 -_020BAAAC: - ldr r0, [r5, #0x0] - add r0, r0, #0x2 - str r0, [r5, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020BA9EC - - arm_func_start FUN_020BAAC0 -FUN_020BAAC0: ; 0x020BAAC0 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldr r0, [r6, #0x8] - ands r0, r0, #0x200 - bne _020BAC38 - ldr r1, [r6, #0x0] - add r0, r6, #0x184 - ldrb r1, [r1, #0x1] - strb r1, [r6, #0xac] - ldr r1, [r6, #0x8] - ldrb r4, [r6, #0xac] - orr r1, r1, #0x4 - str r1, [r6, #0x8] - str r0, [r6, #0xb8] - ldr r0, [r6, #0x14] - cmp r0, #0x0 - ldrneb r5, [r6, #0x8e] - moveq r5, #0x0 - cmp r5, #0x1 - bne _020BAB44 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x14] - blx r1 - ldr r0, [r6, #0x14] - cmp r0, #0x0 - ldrneb r5, [r6, #0x8e] - ldr r0, [r6, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BAB48 -_020BAB44: - mov r0, #0x0 -_020BAB48: - cmp r0, #0x0 - bne _020BABAC - ldr r12, [r6, #0x4] - ldr r1, [r12, #0x18] - cmp r1, #0x0 - beq _020BAB98 - mov r0, r4, lsr #0x5 - add r0, r12, r0, lsl #0x2 - and r2, r4, #0x1f - mov r3, #0x1 - mov r2, r3, lsl r2 - ldr r0, [r0, #0x4c] - ands r0, r2, r0 - beq _020BAB98 - ldr r0, [r6, #0xb8] - ldr r3, [r12, #0x1c] - mov r2, r4 - blx r3 - cmp r0, #0x0 - bne _020BABAC -_020BAB98: - ldr r1, [r6, #0x0] - ldr r0, [r6, #0xb8] - ldrb r1, [r1, #0x2] - and r1, r1, #0x1 - str r1, [r0, #0x0] -_020BABAC: - cmp r5, #0x2 - bne _020BABE8 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x14] - blx r1 - ldr r0, [r6, #0x14] - cmp r0, #0x0 - ldrneb r5, [r6, #0x8e] - ldr r0, [r6, #0x8] - moveq r5, #0x0 - and r0, r0, #0x40 - b _020BABEC -_020BABE8: - mov r0, #0x0 -_020BABEC: - cmp r0, #0x0 - bne _020BAC18 - ldr r0, [r6, #0xb8] - ldr r0, [r0, #0x0] - cmp r0, #0x0 - ldrne r0, [r6, #0x8] - orrne r0, r0, #0x1 - strne r0, [r6, #0x8] - ldreq r0, [r6, #0x8] - biceq r0, r0, #0x1 - streq r0, [r6, #0x8] -_020BAC18: - cmp r5, #0x3 - bne _020BAC38 - ldr r1, [r6, #0x8] - mov r0, r6 - bic r1, r1, #0x40 - str r1, [r6, #0x8] - ldr r1, [r6, #0x14] - blx r1 -_020BAC38: - ldr r0, [r6, #0x0] - add r0, r0, #0x3 - str r0, [r6, #0x0] - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BAAC0 - - arm_func_start FUN_020BAC48 -FUN_020BAC48: ; 0x020BAC48 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0x10] - cmp r1, #0x0 - beq _020BAC60 - blx r1 -_020BAC60: - ldr r0, [r4, #0x8] - orr r0, r0, #0x20 - str r0, [r4, #0x8] - ldmia sp!, {r4,pc} - arm_func_end FUN_020BAC48 - - arm_func_start FUN_020BAC70 -FUN_020BAC70: ; 0x020BAC70 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0xc] - cmp r1, #0x0 - beq _020BAC88 - blx r1 -_020BAC88: - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - ldmia sp!, {r4,pc} - arm_func_end FUN_020BAC70 - - arm_func_start FUN_020BAC98 -FUN_020BAC98: ; 0x020BAC98 - stmdb sp!, {r4,lr} - sub sp, sp, #0x188 - mov r4, r0 - ldr r0, [r4, #0x0] - and r0, r0, #0x10 - cmp r0, #0x10 - bne _020BAD2C - add r1, r4, #0x3c - mov r0, #0x0 - mov r2, #0x8 - bl MIi_CpuClear32 - add r1, r4, #0x44 - mov r0, #0x0 - mov r2, #0x8 - bl MIi_CpuClear32 - add r1, r4, #0x4c - mov r0, #0x0 - mov r2, #0x8 - bl MIi_CpuClear32 - ldr r1, [r4, #0x8] - cmp r1, #0x0 - beq _020BACF8 - add r0, r4, #0x3c - bl FUN_020BAD74 -_020BACF8: - ldr r1, [r4, #0x10] - cmp r1, #0x0 - beq _020BAD0C - add r0, r4, #0x44 - bl FUN_020BAD74 -_020BAD0C: - ldr r1, [r4, #0x18] - cmp r1, #0x0 - beq _020BAD20 - add r0, r4, #0x4c - bl FUN_020BAD74 -_020BAD20: - ldr r0, [r4, #0x0] - bic r0, r0, #0x10 - str r0, [r4, #0x0] -_020BAD2C: - ldr r2, _020BAD70 ; =UNK_021CEF7C - ldr r0, [r2, #0x0] - cmp r0, #0x0 - beq _020BAD4C - mov r1, r4 - bl FUN_020BADE4 - add sp, sp, #0x188 - ldmia sp!, {r4,pc} -_020BAD4C: - add r0, sp, #0x0 - mov r1, r4 - str r0, [r2, #0x0] - bl FUN_020BADE4 - ldr r0, _020BAD70 ; =UNK_021CEF7C - mov r1, #0x0 - str r1, [r0, #0x0] - add sp, sp, #0x188 - ldmia sp!, {r4,pc} - .balign 4 -_020BAD70: .word UNK_021CEF7C - arm_func_end FUN_020BAC98 - - arm_func_start FUN_020BAD74 -FUN_020BAD74: ; 0x020BAD74 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - cmp r1, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r5,pc} - mov r3, #0x1 - mov r4, #0x0 -_020BAD90: - ldrb r2, [r1, #0x19] - mov r5, r4 - cmp r2, #0x0 - ble _020BADD0 -_020BADA0: - add r2, r1, r5, lsl #0x1 - ldrh r2, [r2, #0x1a] - ands r2, r2, #0x100 - movne lr, r5, asr #0x5 - andne r2, r5, #0x1f - ldrne r12, [r0, lr, lsl #0x2] - add r5, r5, #0x1 - orrne r2, r12, r3, lsl r2 - strne r2, [r0, lr, lsl #0x2] - ldrb r2, [r1, #0x19] - cmp r5, r2 - blt _020BADA0 -_020BADD0: - ldr r1, [r1, #0x10] - cmp r1, #0x0 - bne _020BAD90 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020BAD74 - - arm_func_start FUN_020BADE4 -FUN_020BADE4: ; 0x020BADE4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - mov r1, r5 - mov r0, #0x0 - mov r2, #0x188 - bl MIi_CpuClearFast - mov r0, #0x1 - str r0, [r5, #0xc4] - str r0, [r5, #0x8] - ldr r0, [r4, #0x30] - ldr r2, _020BAF60 ; =UNK_02106614 - cmp r0, #0x0 - strne r0, [r5, #0x0] - ldreq r1, [r4, #0x4] - ldreq r0, [r1, #0x4] - addeq r0, r1, r0 - streq r0, [r5, #0x0] - str r4, [r5, #0x4] - ldr r0, [r4, #0x4] - ldr r1, _020BAF64 ; =UNK_02106608 - add r0, r0, #0x40 - str r0, [r5, #0xd4] - ldr r12, [r4, #0x4] - ldr r0, _020BAF68 ; =UNK_02106620 - ldr r3, [r12, #0x8] - add r3, r12, r3 - str r3, [r5, #0xd8] - ldr r12, [r4, #0x4] - ldr r3, [r12, #0xc] - add r3, r12, r3 - str r3, [r5, #0xdc] - ldr r3, [r4, #0x4] - ldrb r3, [r3, #0x15] - ldr r2, [r2, r3, lsl #0x2] - str r2, [r5, #0xe8] - ldr r2, [r4, #0x4] - ldrb r2, [r2, #0x15] - ldr r1, [r1, r2, lsl #0x2] - str r1, [r5, #0xec] - ldr r1, [r4, #0x4] - ldrb r1, [r1, #0x16] - ldr r0, [r0, r1, lsl #0x2] - str r0, [r5, #0xf0] - ldr r0, [r4, #0x4] - ldr r0, [r0, #0x1c] - str r0, [r5, #0xe0] - ldr r0, [r4, #0x4] - ldr r0, [r0, #0x20] - str r0, [r5, #0xe4] - ldr r1, [r4, #0x20] - cmp r1, #0x0 - beq _020BAEE0 - ldrb r0, [r4, #0x24] - cmp r0, #0x20 - bhs _020BAEE0 - add r0, r5, r0, lsl #0x2 - str r1, [r0, #0xc] - ldrb r0, [r4, #0x24] - ldrb r1, [r4, #0x25] - add r0, r5, r0 - strb r1, [r0, #0x8c] -_020BAEE0: - ldr r0, [r4, #0x0] - ands r0, r0, #0x1 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x80 - strne r0, [r5, #0x8] - ldr r0, [r4, #0x0] - ands r0, r0, #0x2 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x100 - strne r0, [r5, #0x8] - ldr r0, [r4, #0x0] - ands r0, r0, #0x4 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x200 - strne r0, [r5, #0x8] - ldr r0, [r4, #0x0] - ands r0, r0, #0x8 - ldrne r0, [r5, #0x8] - orrne r0, r0, #0x400 - strne r0, [r5, #0x8] - ldr r1, [r4, #0x28] - cmp r1, #0x0 - beq _020BAF44 - mov r0, r5 - blx r1 -_020BAF44: - mov r0, r5 - bl FUN_020BAF6C - ldr r0, [r4, #0x0] - bic r0, r0, #0x1 - str r0, [r4, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BAF60: .word UNK_02106614 -_020BAF64: .word UNK_02106608 -_020BAF68: .word UNK_02106620 - arm_func_end FUN_020BADE4 - - arm_func_start FUN_020BAF6C -FUN_020BAF6C: ; 0x020BAF6C - stmdb sp!, {r4-r6,lr} - mov r5, r0 - ldr r6, _020BAFB4 ; =UNK_02106730 - add r4, r5, #0x8 -_020BAF7C: - ldr r1, [r4, #0x0] - mov r0, r5 - bic r1, r1, #0x40 - str r1, [r4, #0x0] - ldr r1, [r5, #0x0] - ldrb r3, [r1, #0x0] - and r1, r3, #0x1f - ldr r2, [r6, r1, lsl #0x2] - and r1, r3, #0xe0 - blx r2 - ldr r0, [r5, #0x8] - ands r0, r0, #0x20 - beq _020BAF7C - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BAFB4: .word UNK_02106730 - arm_func_end FUN_020BAF6C - - arm_func_start FUN_020BAFB8 -FUN_020BAFB8: ; 0x020BAFB8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x6c - mov r6, r0 - ldr r12, [r6, #0x1c] - mov r4, r1 - mov r5, r2 - mov r7, r3 - cmp r12, #0x1000 - beq _020BAFF8 - add r1, sp, #0x54 - mov r0, #0x1b - mov r2, #0x3 - str r12, [sp, #0x54] - str r12, [sp, #0x58] - str r12, [sp, #0x5c] - bl FUN_020BB1C0 -_020BAFF8: - cmp r7, #0x0 - beq _020BB150 - ldr r0, [r6, #0x8] - add r3, r6, r0 - ldrh r0, [r3, #0xa] - add r2, r3, #0x4 - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r4, r0 - ldr r0, [r0, #0x4] - add r4, r3, r0 - ldr r0, [r4, #0xc] - ands r0, r0, #0x1f0000 - addeq sp, sp, #0x6c - ldmeqia sp!, {r4-r7,pc} - ldr r0, _020BB1B4 ; =0x00293130 - str r0, [sp, #0x0] - ldr r0, [r4, #0x4] - str r0, [sp, #0x4] - ldr r0, [r4, #0x8] - str r0, [sp, #0x8] - ldr r1, [r4, #0xc] - str r1, [sp, #0xc] - ldrh r0, [r4, #0x1e] - ands r0, r0, #0x20 - bicne r0, r1, #0x1f0000 - ldr r1, _020BB1B8 ; =0x00002B2A - strne r0, [sp, #0xc] - str r1, [sp, #0x10] - ldr r2, [r4, #0x14] - ldr r0, [sp, #0x0] - str r2, [sp, #0x14] - ldrh r3, [r4, #0x1c] - add r1, sp, #0x4 - mov r2, #0x6 - str r3, [sp, #0x18] - bl FUN_020BB1C0 - ldrh r0, [r4, #0x1e] - ands r0, r0, #0x1 - beq _020BB150 - ldrb r12, [r6, #0x16] - mov r3, #0x8 - ldr r1, _020BB1BC ; =UNK_02106620 - str r3, [sp, #0x1c] - ldrh r2, [r4, #0x20] - add r0, r4, #0x2c - ldr r1, [r1, r12, lsl #0x2] - strh r2, [sp, #0x48] - ldrh r2, [r4, #0x22] - strh r2, [sp, #0x4a] - ldr r2, [r4, #0x24] - str r2, [sp, #0x4c] - ldr r2, [r4, #0x28] - str r2, [sp, #0x50] - ldrh r2, [r4, #0x1e] - ands r2, r2, #0x2 - orrne r2, r3, #0x1 - strne r2, [sp, #0x1c] - bne _020BB0F8 - ldr r2, [r0, #0x0] - str r2, [sp, #0x34] - ldr r2, [r0, #0x4] - add r0, r0, #0x8 - str r2, [sp, #0x38] -_020BB0F8: - ldrh r2, [r4, #0x1e] - ands r2, r2, #0x4 - ldrne r2, [sp, #0x1c] - orrne r2, r2, #0x2 - strne r2, [sp, #0x1c] - bne _020BB124 - ldrsh r2, [r0, #0x0] - strh r2, [sp, #0x3c] - ldrsh r2, [r0, #0x2] - add r0, r0, #0x4 - strh r2, [sp, #0x3e] -_020BB124: - ldrh r2, [r4, #0x1e] - ands r2, r2, #0x8 - ldreq r2, [r0, #0x0] - streq r2, [sp, #0x40] - ldreq r0, [r0, #0x4] - streq r0, [sp, #0x44] - ldrne r0, [sp, #0x1c] - orrne r0, r0, #0x4 - strne r0, [sp, #0x1c] - add r0, sp, #0x1c - blx r1 -_020BB150: - ldr r0, [r6, #0xc] - add r2, r6, r0 - ldrh r0, [r2, #0x6] - ldrh r1, [r2, r0] - add r0, r2, r0 - mla r0, r1, r5, r0 - ldr r0, [r0, #0x4] - add r2, r2, r0 - ldr r0, [r2, #0x8] - ldr r1, [r2, #0xc] - add r0, r2, r0 - bl FUN_020BB2B0 - ldr r3, [r6, #0x20] - cmp r3, #0x1000 - addeq sp, sp, #0x6c - ldmeqia sp!, {r4-r7,pc} - add r1, sp, #0x60 - mov r0, #0x1b - mov r2, #0x3 - str r3, [sp, #0x60] - str r3, [sp, #0x64] - str r3, [sp, #0x68] - bl FUN_020BB1C0 - add sp, sp, #0x6c - ldmia sp!, {r4-r7,pc} - .balign 4 -_020BB1B4: .word 0x00293130 -_020BB1B8: .word 0x00002B2A -_020BB1BC: .word UNK_02106620 - arm_func_end FUN_020BAFB8 - - arm_func_start FUN_020BB1C0 -FUN_020BB1C0: ; 0x020BB1C0 - stmdb sp!, {r4-r6,lr} - ldr r3, _020BB2A4 ; =UNK_021D1C80 - mov r6, r0 - ldr r12, [r3, #0x0] - mov r5, r1 - mov r4, r2 - cmp r12, #0x0 - beq _020BB278 - ldr r0, _020BB2A8 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB24C - ldr r2, [r12, #0x0] - add r0, r2, #0x1 - add r1, r0, r4 - cmp r1, #0xc0 - bhi _020BB24C - str r0, [r12, #0x0] - ldr r0, [r3, #0x0] - cmp r4, #0x0 - add r0, r0, r2, lsl #0x2 - str r6, [r0, #0x4] - ldmeqia sp!, {r4-r6,pc} - ldr r2, [r3, #0x0] - mov r0, r5 - ldr r1, [r2], #0x4 - add r1, r2, r1, lsl #0x2 - mov r2, r4, lsl #0x2 - bl MIi_CpuCopyFast - ldr r0, _020BB2A4 ; =UNK_021D1C80 - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x0] - add r0, r0, r4 - str r0, [r1, #0x0] - ldmia sp!, {r4-r6,pc} -_020BB24C: - ldr r0, [r12, #0x0] - cmp r0, #0x0 - beq _020BB260 - bl FUN_020BB394 - b _020BB28C -_020BB260: - ldr r0, _020BB2A8 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB28C - bl FUN_020BB37C - b _020BB28C -_020BB278: - ldr r0, _020BB2A8 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB28C - bl FUN_020BB37C -_020BB28C: - ldr r1, _020BB2AC ; =0x04000400 - mov r0, r5 - mov r2, r4, lsl #0x2 - str r6, [r1, #0x0] - bl MIi_CpuSend32 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BB2A4: .word UNK_021D1C80 -_020BB2A8: .word UNK_021D1C84 -_020BB2AC: .word 0x04000400 - arm_func_end FUN_020BB1C0 - - arm_func_start FUN_020BB2B0 -FUN_020BB2B0: ; 0x020BB2B0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r1 - mov r5, r0 - cmp r4, #0x100 - blo _020BB2DC - ldr r1, _020BB360 ; =GXi_DmaId - mvn r0, #0x0 - ldr r1, [r1, #0x0] - cmp r1, r0 - bne _020BB2F8 -_020BB2DC: - mov r2, r4, lsr #0x2 - ldr r0, [r5, #0x0] - add r1, r5, #0x4 - sub r2, r2, #0x1 - bl FUN_020BB1C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020BB2F8: - bl FUN_020BB394 - ldr r0, _020BB364 ; =UNK_021D1C88 - ldr r1, _020BB368 ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - mov r2, #0x1 - str r2, [r1, #0x0] - cmp r0, #0x0 - beq _020BB33C - ldr r0, _020BB360 ; =GXi_DmaId - str r1, [sp, #0x0] - ldr r0, [r0, #0x0] - ldr r3, _020BB36C ; =FUN_020BB370 - mov r1, r5 - mov r2, r4 - bl MI_SendGXCommandAsyncFast - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020BB33C: - ldr r0, _020BB360 ; =GXi_DmaId - str r1, [sp, #0x0] - ldr r0, [r0, #0x0] - ldr r3, _020BB36C ; =FUN_020BB370 - mov r1, r5 - mov r2, r4 - bl MI_SendGXCommandAsync - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BB360: .word GXi_DmaId -_020BB364: .word UNK_021D1C88 -_020BB368: .word UNK_021D1C84 -_020BB36C: .word FUN_020BB370 - arm_func_end FUN_020BB2B0 - - arm_func_start FUN_020BB370 -FUN_020BB370: ; 0x020BB370 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - arm_func_end FUN_020BB370 - - arm_func_start FUN_020BB37C -FUN_020BB37C: ; 0x020BB37C - ldr r0, _020BB390 ; =UNK_021D1C84 -_020BB380: - ldr r1, [r0, #0x0] - cmp r1, #0x0 - bne _020BB380 - bx lr - .balign 4 -_020BB390: .word UNK_021D1C84 - arm_func_end FUN_020BB37C - - arm_func_start FUN_020BB394 -FUN_020BB394: ; 0x020BB394 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r0, _020BB3FC ; =UNK_021D1C84 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _020BB3B0 - bl FUN_020BB37C -_020BB3B0: - ldr r0, _020BB400 ; =UNK_021D1C80 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r2, [r0, #0x0] - cmp r2, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {pc} - ldr r1, _020BB404 ; =0x04000400 - add r0, r0, #0x4 - mov r2, r2, lsl #0x2 - bl MIi_CpuSend32 - ldr r0, _020BB400 ; =UNK_021D1C80 - mov r1, #0x0 - ldr r0, [r0, #0x0] - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BB3FC: .word UNK_021D1C84 -_020BB400: .word UNK_021D1C80 -_020BB404: .word 0x04000400 - arm_func_end FUN_020BB394 - - arm_func_start FUN_020BB408 -FUN_020BB408: ; 0x020BB408 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x1c - mov r5, r1 - mov r4, r2 - ldr r6, _020BB594 ; =UNK_021CED20 - ldr r1, _020BB598 ; =UNK_021CED64 - add r2, sp, #0x10 - bl MTX_MultVec43 - ldr r1, [sp, #0x14] - ldr r0, [r6, #0x1c] - ldr r2, [sp, #0x10] - smull r8, r7, r1, r0 - ldr r0, [r6, #0xc] - ldr r3, [sp, #0x18] - smlal r8, r7, r2, r0 - ldr r1, [r6, #0x2c] - ldr r0, [r6, #0x3c] - smlal r8, r7, r3, r1 - mov r1, r8, lsr #0xc - orr r1, r1, r7, lsl #0x14 - add r0, r1, r0 - bl FX_InvAsync - ldr r2, [sp, #0x14] - ldr r1, [r6, #0x10] - ldr r0, [r6, #0x14] - smull lr, r8, r2, r1 - smull r12, r9, r2, r0 - ldr r1, [sp, #0x10] - ldr r3, [r6, #0x0] - ldr r0, [sp, #0x18] - smlal lr, r8, r1, r3 - ldr r7, [r6, #0x20] - ldr r2, [r6, #0x30] - smlal lr, r8, r0, r7 - mov r3, lr, lsr #0xc - orr r3, r3, r8, lsl #0x14 - add r7, r3, r2 - ldr r3, [r6, #0x4] - ldr r8, [r6, #0x24] - smlal r12, r9, r1, r3 - smlal r12, r9, r0, r8 - mov r0, r12, lsr #0xc - ldr r2, [r6, #0x34] - orr r0, r0, r9, lsl #0x14 - add r6, r0, r2 - bl FX_GetDivResultFx64c - mov r2, r7, asr #0x1f - umull r9, lr, r0, r7 - mla lr, r0, r2, lr - mov r3, #0x80000000 - mla lr, r1, r7, lr - adds r9, r9, r3 - adc r2, lr, #0x0 - add r2, r2, #0x1000 - add r2, r2, r2, lsr #0x1f - mov r7, r2, asr #0x1 - umull lr, r2, r0, r6 - mov r12, r6, asr #0x1f - mla r2, r0, r12, r2 - mla r2, r1, r6, r2 - adds r3, lr, r3 - adc r0, r2, #0x0 - add r0, r0, #0x1000 - add r0, r0, r0, lsr #0x1f - mov r8, #0x0 - mov r6, r0, asr #0x1 - cmp r7, #0x0 - blt _020BB530 - cmp r6, #0x0 - blt _020BB530 - cmp r7, #0x1000 - bgt _020BB530 - cmp r6, #0x1000 - ble _020BB534 -_020BB530: - mvn r8, #0x0 -_020BB534: - add r0, sp, #0x0 - add r1, sp, #0x4 - add r2, sp, #0x8 - add r3, sp, #0xc - bl FUN_020B8200 - ldr r2, [sp, #0x0] - ldr r0, [sp, #0x8] - ldr r12, [sp, #0xc] - sub r0, r0, r2 - mul r0, r7, r0 - add r1, r0, #0x800 - ldr r3, [sp, #0x4] - add r1, r2, r1, asr #0xc - sub r0, r12, r3 - mul r0, r6, r0 - str r1, [r5, #0x0] - ldr r1, [sp, #0x4] - add r0, r0, #0x800 - rsb r1, r1, #0xbf - sub r1, r1, r0, asr #0xc - mov r0, r8 - str r1, [r4, #0x0] - add sp, sp, #0x1c - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BB594: .word UNK_021CED20 -_020BB598: .word UNK_021CED64 - arm_func_end FUN_020BB408 - - arm_func_start FUN_020BB59C -FUN_020BB59C: ; 0x020BB59C - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x0] - ldr r0, _020BB7C8 ; =0x30415642 - cmp r1, r0 - bhi _020BB5F4 - cmp r1, r0 - bhs _020BB7B0 - ldr r0, _020BB7CC ; =0x30414D42 - cmp r1, r0 - bhi _020BB5E4 - cmp r1, r0 - bhs _020BB7B0 - ldr r0, _020BB7D0 ; =0x30414342 - cmp r1, r0 - beq _020BB7B0 - b _020BB7BC -_020BB5E4: - ldr r0, _020BB7D4 ; =0x30415442 - cmp r1, r0 - beq _020BB7B0 - b _020BB7BC -_020BB5F4: - ldr r0, _020BB7D8 ; =0x30505442 - cmp r1, r0 - bhi _020BB618 - cmp r1, r0 - bhs _020BB7B0 - ldr r0, _020BB7DC ; =0x30444D42 - cmp r1, r0 - beq _020BB624 - b _020BB7BC -_020BB618: - ldr r0, _020BB7E0 ; =0x30585442 - cmp r1, r0 - bne _020BB7BC -_020BB624: - mov r11, #0x1 - mov r0, r5 - mov r9, r11 - mov r8, r11 - bl FUN_020BC0FC - movs r4, r0 - beq _020BB77C - bl FUN_020B7E1C - mov r7, r0 - mov r0, r4 - bl FUN_020B7E10 - mov r6, r0 - mov r0, r4 - bl FUN_020B7CE4 - mov r10, r0 - cmp r7, #0x0 - beq _020BB68C - ldr r0, _020BB7E4 ; =UNK_021064B8 - mov r1, #0x0 - ldr r3, [r0, #0x0] - mov r0, r7 - mov r2, r1 - blx r3 - movs r7, r0 - moveq r11, #0x0 - b _020BB690 -_020BB68C: - mov r7, #0x0 -_020BB690: - cmp r6, #0x0 - beq _020BB6BC - ldr r1, _020BB7E4 ; =UNK_021064B8 - mov r0, r6 - ldr r3, [r1, #0x0] - mov r1, #0x1 - mov r2, #0x0 - blx r3 - movs r6, r0 - moveq r9, #0x0 - b _020BB6C0 -_020BB6BC: - mov r6, #0x0 -_020BB6C0: - cmp r10, #0x0 - beq _020BB6F0 - ldr r1, _020BB7E8 ; =UNK_021064C0 - ldrh r2, [r4, #0x20] - ldr r3, [r1, #0x0] - mov r0, r10 - and r1, r2, #0x8000 - mov r2, #0x0 - blx r3 - movs r10, r0 - moveq r8, #0x0 - b _020BB6F4 -_020BB6F0: - mov r10, #0x0 -_020BB6F4: - cmp r11, #0x0 - beq _020BB70C - cmp r9, #0x0 - beq _020BB70C - cmp r8, #0x0 - bne _020BB748 -_020BB70C: - ldr r1, _020BB7EC ; =UNK_021064C4 - mov r0, r10 - ldr r1, [r1, #0x0] - blx r1 - ldr r1, _020BB7F0 ; =UNK_021064BC - mov r0, r6 - ldr r1, [r1, #0x0] - blx r1 - ldr r1, _020BB7F0 ; =UNK_021064BC - mov r0, r7 - ldr r1, [r1, #0x0] - blx r1 - add sp, sp, #0x4 - mov r0, #0x0 - ldmia sp!, {r4-r11,pc} -_020BB748: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl FUN_020B7DFC - mov r0, r4 - mov r1, r10 - bl FUN_020B7CDC - mov r0, r4 - mov r1, #0x1 - bl FUN_020B7D28 - mov r0, r4 - mov r1, #0x1 - bl FUN_020B7C78 -_020BB77C: - ldr r1, [r5, #0x0] - ldr r0, _020BB7DC ; =0x30444D42 - cmp r1, r0 - bne _020BB7A4 - mov r0, r5 - bl FUN_020BC13C - cmp r4, #0x0 - beq _020BB7A4 - mov r1, r4 - bl FUN_020B7790 -_020BB7A4: - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020BB7B0: - add sp, sp, #0x4 - mov r0, #0x1 - ldmia sp!, {r4-r11,pc} -_020BB7BC: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020BB7C8: .word 0x30415642 -_020BB7CC: .word 0x30414D42 -_020BB7D0: .word 0x30414342 -_020BB7D4: .word 0x30415442 -_020BB7D8: .word 0x30505442 -_020BB7DC: .word 0x30444D42 -_020BB7E0: .word 0x30585442 -_020BB7E4: .word UNK_021064B8 -_020BB7E8: .word UNK_021064C0 -_020BB7EC: .word UNK_021064C4 -_020BB7F0: .word UNK_021064BC - arm_func_end FUN_020BB59C - - arm_func_start FUN_020BB7F4 -FUN_020BB7F4: ; 0x020BB7F4 - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl G3X_Init - bl FUN_020B84D8 - ldr r1, _020BB820 ; =0x04000600 - ldr r0, [r1, #0x0] - bic r0, r0, #0xc0000000 - orr r0, r0, #0x80000000 - str r0, [r1, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BB820: .word 0x04000600 - arm_func_end FUN_020BB7F4 - - arm_func_start FUN_020BB824 -FUN_020BB824: ; 0x020BB824 - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x40 - mov r6, r0 - mov r5, r1 - bl FUN_020BB394 - ldr r0, _020BB8B4 ; =0x04000440 - mov r2, #0x0 - ldr r1, _020BB8B8 ; =0x04000444 - str r2, [r0, #0x0] - ldr r0, _020BB8BC ; =0x04000454 - str r2, [r1, #0x0] - str r2, [r0, #0x0] - cmp r6, #0x0 - beq _020BB87C - add r4, sp, #0x0 -_020BB860: - mov r0, r4 - bl G3X_GetClipMtx - cmp r0, #0x0 - bne _020BB860 - add r0, sp, #0x0 - mov r1, r6 - bl MTX_Copy44To43_ -_020BB87C: - cmp r5, #0x0 - beq _020BB894 -_020BB884: - mov r0, r5 - bl G3X_GetVectorMtx - cmp r0, #0x0 - bne _020BB884 -_020BB894: - ldr r1, _020BB8C0 ; =0x04000448 - mov r2, #0x1 - ldr r0, _020BB8B4 ; =0x04000440 - str r2, [r1, #0x0] - mov r1, #0x2 - str r1, [r0, #0x0] - add sp, sp, #0x40 - ldmia sp!, {r4-r6,pc} - .balign 4 -_020BB8B4: .word 0x04000440 -_020BB8B8: .word 0x04000444 -_020BB8BC: .word 0x04000454 -_020BB8C0: .word 0x04000448 - arm_func_end FUN_020BB824 - - arm_func_start thunk_FUN_020ae84c -thunk_FUN_020ae84c: ; 0x020BB8C4 - ldr ip, _020BB8CC ; =FUN_020AE84C - bx r12 - .balign 4 -_020BB8CC: .word FUN_020AE84C - arm_func_end thunk_FUN_020ae84c - - arm_func_start FUN_020BB8D0 -FUN_020BB8D0: ; 0x020BB8D0 - stmdb sp!, {r4,lr} - mov r4, r0 - mov r0, r1 - mov r1, r2 - bl FUN_020B81B0 - mov r1, r0 - mov r0, r4 - bl FUN_020AE868 - ldmia sp!, {r4,pc} - arm_func_end FUN_020BB8D0 - - arm_func_start FUN_020BB8F4 -FUN_020BB8F4: ; 0x020BB8F4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB910: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBC74 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB910 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BB8F4 - - arm_func_start FUN_020BB934 -FUN_020BB934: ; 0x020BB934 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB950: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBCB8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB950 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BB934 - - arm_func_start FUN_020BB974 -FUN_020BB974: ; 0x020BB974 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB990: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBCFC - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB990 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BB974 - - arm_func_start FUN_020BB9B4 -FUN_020BB9B4: ; 0x020BB9B4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BB9D0: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBD40 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BB9D0 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BB9B4 - - arm_func_start FUN_020BB9F4 -FUN_020BB9F4: ; 0x020BB9F4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBA10: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBD84 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBA10 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BB9F4 - - arm_func_start FUN_020BBA34 -FUN_020BBA34: ; 0x020BBA34 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBA50: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBDC8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBA50 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBA34 - - arm_func_start FUN_020BBA74 -FUN_020BBA74: ; 0x020BBA74 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBA90: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBE0C - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBA90 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBA74 - - arm_func_start FUN_020BBAB4 -FUN_020BBAB4: ; 0x020BBAB4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBAD0: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBE50 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBAD0 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBAB4 - - arm_func_start FUN_020BBAF4 -FUN_020BBAF4: ; 0x020BBAF4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBB10: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBE94 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBB10 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBAF4 - - arm_func_start FUN_020BBB34 -FUN_020BBB34: ; 0x020BBB34 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBB50: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBED8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBB50 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBB34 - - arm_func_start FUN_020BBB74 -FUN_020BBB74: ; 0x020BBB74 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBB90: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBF1C - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBB90 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBB74 - - arm_func_start FUN_020BBBB4 -FUN_020BBBB4: ; 0x020BBBB4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBBD0: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBF60 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBBD0 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBBB4 - - arm_func_start FUN_020BBBF4 -FUN_020BBBF4: ; 0x020BBBF4 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBC10: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBFA4 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBC10 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBBF4 - - arm_func_start FUN_020BBC34 -FUN_020BBC34: ; 0x020BBC34 - stmdb sp!, {r4-r6,lr} - mov r6, r0 - ldrb r0, [r6, #0x18] - mov r5, r1 - mov r4, #0x0 - cmp r0, #0x0 - ldmlsia sp!, {r4-r6,pc} -_020BBC50: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl FUN_020BBFE8 - ldrb r0, [r6, #0x18] - add r4, r4, #0x1 - cmp r4, r0 - blo _020BBC50 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBC34 - - arm_func_start FUN_020BBC74 -FUN_020BBC74: ; 0x020BBC74 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x800 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x800 - streq r0, [r1, #0xc] - bx lr - arm_func_end FUN_020BBC74 - - arm_func_start FUN_020BBCB8 -FUN_020BBCB8: ; 0x020BBCB8 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x1000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x1000 - streq r0, [r1, #0xc] - bx lr - arm_func_end FUN_020BBCB8 - - arm_func_start FUN_020BBCFC -FUN_020BBCFC: ; 0x020BBCFC - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x2000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x2000 - streq r0, [r1, #0xc] - bx lr - arm_func_end FUN_020BBCFC - - arm_func_start FUN_020BBD40 -FUN_020BBD40: ; 0x020BBD40 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x4000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x4000 - streq r0, [r1, #0xc] - bx lr - arm_func_end FUN_020BBD40 - - arm_func_start FUN_020BBD84 -FUN_020BBD84: ; 0x020BBD84 - ldr r3, [r0, #0x8] - cmp r2, #0x0 - add r12, r0, r3 - ldrh r0, [r12, #0xa] - add r3, r12, #0x4 - ldrh r2, [r3, r0] - add r0, r3, r0 - mla r0, r2, r1, r0 - ldr r0, [r0, #0x4] - add r1, r12, r0 - ldrne r0, [r1, #0xc] - orrne r0, r0, #0x8000 - strne r0, [r1, #0xc] - ldreq r0, [r1, #0xc] - biceq r0, r0, #0x8000 - streq r0, [r1, #0xc] - bx lr - arm_func_end FUN_020BBD84 - - arm_func_start FUN_020BBDC8 -FUN_020BBDC8: ; 0x020BBDC8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0x1f0000 - orr r0, r0, r2, lsl #0x10 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end FUN_020BBDC8 - - arm_func_start FUN_020BBE0C -FUN_020BBE0C: ; 0x020BBE0C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0x3f000000 - orr r0, r0, r2, lsl #0x18 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end FUN_020BBE0C - - arm_func_start FUN_020BBE50 -FUN_020BBE50: ; 0x020BBE50 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0xc0 - orr r0, r0, r2, lsl #0x6 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end FUN_020BBE50 - - arm_func_start FUN_020BBE94 -FUN_020BBE94: ; 0x020BBE94 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0x30 - orr r0, r0, r2, lsl #0x4 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end FUN_020BBE94 - - arm_func_start FUN_020BBED8 -FUN_020BBED8: ; 0x020BBED8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [r0, #0x8] - add lr, r0, r3 - ldrh r0, [lr, #0xa] - add r12, lr, #0x4 - ldrh r3, [r12, r0] - add r0, r12, r0 - mla r0, r3, r1, r0 - ldr r0, [r0, #0x4] - add r1, lr, r0 - ldr r0, [r1, #0xc] - bic r0, r0, #0xf - orr r0, r0, r2 - str r0, [r1, #0xc] - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end FUN_020BBED8 - - arm_func_start FUN_020BBF1C -FUN_020BBF1C: ; 0x020BBF1C - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - ldr r3, _020BBF5C ; =0x8000FFFF - add r4, r0, r12 - ldrh r0, [r4, #0xa] - add lr, r4, #0x4 - ldrh r12, [lr, r0] - add r0, lr, r0 - mla r0, r12, r1, r0 - ldr r0, [r0, #0x4] - add r1, r4, r0 - ldr r0, [r1, #0x8] - and r0, r0, r3 - orr r0, r0, r2, lsl #0x10 - str r0, [r1, #0x8] - ldmia sp!, {r4,pc} - .balign 4 -_020BBF5C: .word 0x8000FFFF - arm_func_end FUN_020BBF1C - - arm_func_start FUN_020BBF60 -FUN_020BBF60: ; 0x020BBF60 - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - mov r3, #0x8000 - add r4, r0, r12 - ldrh r12, [r4, #0xa] - add lr, r4, #0x4 - rsb r0, r3, #0x0 - ldrh r3, [lr, r12] - add r12, lr, r12 - mla r1, r3, r1, r12 - ldr r1, [r1, #0x4] - add r3, r4, r1 - ldr r1, [r3, #0x8] - and r0, r1, r0 - orr r0, r0, r2 - str r0, [r3, #0x8] - ldmia sp!, {r4,pc} - arm_func_end FUN_020BBF60 - - arm_func_start FUN_020BBFA4 -FUN_020BBFA4: ; 0x020BBFA4 - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - ldr r3, _020BBFE4 ; =0x8000FFFF - add r4, r0, r12 - ldrh r0, [r4, #0xa] - add lr, r4, #0x4 - ldrh r12, [lr, r0] - add r0, lr, r0 - mla r0, r12, r1, r0 - ldr r0, [r0, #0x4] - add r1, r4, r0 - ldr r0, [r1, #0x4] - and r0, r0, r3 - orr r0, r0, r2, lsl #0x10 - str r0, [r1, #0x4] - ldmia sp!, {r4,pc} - .balign 4 -_020BBFE4: .word 0x8000FFFF - arm_func_end FUN_020BBFA4 - - arm_func_start FUN_020BBFE8 -FUN_020BBFE8: ; 0x020BBFE8 - stmdb sp!, {r4,lr} - ldr r12, [r0, #0x8] - mov r3, #0x8000 - add r4, r0, r12 - ldrh r12, [r4, #0xa] - add lr, r4, #0x4 - rsb r0, r3, #0x0 - ldrh r3, [lr, r12] - add r12, lr, r12 - mla r1, r3, r1, r12 - ldr r1, [r1, #0x4] - add r3, r4, r1 - ldr r1, [r3, #0x4] - and r0, r1, r0 - orr r0, r0, r2 - str r0, [r3, #0x4] - ldmia sp!, {r4,pc} - arm_func_end FUN_020BBFE8 - - arm_func_start FUN_020BC02C -FUN_020BC02C: ; 0x020BC02C - stmdb sp!, {r4-r6,lr} - ldrb r4, [r0, #0x18] - ldr r3, [r0, #0x8] - mov lr, #0x0 - cmp r4, #0x0 - add r12, r0, r3 - ldmlsia sp!, {r4-r6,pc} - mvn r3, r2 - add r0, r12, #0x4 -_020BC050: - ldrh r5, [r12, #0xa] - cmp r1, #0x0 - ldrh r6, [r0, r5] - add r5, r0, r5 - mla r5, r6, lr, r5 - ldr r5, [r5, #0x4] - add lr, lr, #0x1 - add r6, r12, r5 - ldrne r5, [r6, #0x10] - orrne r5, r5, r2 - strne r5, [r6, #0x10] - ldreq r5, [r6, #0x10] - andeq r5, r5, r3 - streq r5, [r6, #0x10] - cmp lr, r4 - blo _020BC050 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BC02C - - arm_func_start FUN_020BC094 -FUN_020BC094: ; 0x020BC094 - stmdb sp!, {r4-r6,lr} - ldrb r4, [r0, #0x18] - ldr r3, [r0, #0x8] - mov lr, #0x0 - cmp r4, #0x0 - add r12, r0, r3 - ldmlsia sp!, {r4-r6,pc} - mvn r3, r2 - add r0, r12, #0x4 -_020BC0B8: - ldrh r5, [r12, #0xa] - cmp r1, #0x0 - ldrh r6, [r0, r5] - add r5, r0, r5 - mla r5, r6, lr, r5 - ldr r5, [r5, #0x4] - add lr, lr, #0x1 - add r6, r12, r5 - ldrneh r5, [r6, #0x1e] - orrne r5, r5, r2 - strneh r5, [r6, #0x1e] - ldreqh r5, [r6, #0x1e] - andeq r5, r5, r3 - streqh r5, [r6, #0x1e] - cmp lr, r4 - blo _020BC0B8 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BC094 - - arm_func_start FUN_020BC0FC -FUN_020BC0FC: ; 0x020BC0FC - ldrh r2, [r0, #0xc] - ldrh r1, [r0, #0xe] - add r3, r0, r2 - cmp r1, #0x1 - bne _020BC12C - ldr r2, [r0, #0x0] - ldr r1, _020BC138 ; =0x30585442 - cmp r2, r1 - ldreq r1, [r3, #0x0] - addeq r0, r0, r1 - movne r0, #0x0 - bx lr -_020BC12C: - ldr r1, [r3, #0x4] - add r0, r0, r1 - bx lr - .balign 4 -_020BC138: .word 0x30585442 - arm_func_end FUN_020BC0FC - - arm_func_start FUN_020BC13C -FUN_020BC13C: ; 0x020BC13C - ldrh r1, [r0, #0xc] - ldr r1, [r0, r1] - add r0, r0, r1 - bx lr - arm_func_end FUN_020BC13C - - arm_func_start FUN_020BC14C -FUN_020BC14C: ; 0x020BC14C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrb r2, [r0, #0x1] - cmp r2, #0x10 - bhs _020BC1E4 - cmp r2, #0x0 - ldr lr, [r1, #0x0] - ldr r12, [r1, #0x4] - ldr r3, [r1, #0x8] - ldr r2, [r1, #0xc] - mov r4, #0x0 - bls _020BC294 - ldrh r5, [r0, #0x6] - mov r1, r4 - add r6, r0, r5 - ldrh r5, [r6, #0x2] - add r6, r6, r5 -_020BC190: - ldr r5, [r6, r1] - add r7, r6, r1 - cmp r5, lr - bne _020BC1CC - ldr r5, [r7, #0x4] - cmp r5, r12 - bne _020BC1CC - ldr r5, [r7, #0x8] - cmp r5, r3 - bne _020BC1CC - ldr r5, [r7, #0xc] - cmp r5, r2 - addeq sp, sp, #0x4 - moveq r0, r4 - ldmeqia sp!, {r4-r7,pc} -_020BC1CC: - ldrb r5, [r0, #0x1] - add r4, r4, #0x1 - add r1, r1, #0x10 - cmp r4, r5 - blo _020BC190 - b _020BC294 -_020BC1E4: - add r3, r0, #0x8 - ldrb r2, [r3, #0x1] - cmp r2, #0x0 - beq _020BC294 - ldrb r5, [r3, r2, lsl #0x2] - ldrb r4, [r3, #0x0] - add r2, r3, r2, lsl #0x2 - cmp r4, r5 - bls _020BC238 -_020BC208: - mov r4, r5, asr #0x5 - ldr r12, [r1, r4, lsl #0x2] - and r4, r5, #0x1f - mov r4, r12, lsr r4 - and r4, r4, #0x1 - add r4, r2, r4 - ldrb r12, [r4, #0x1] - ldrb r4, [r2, #0x0] - ldrb r5, [r3, r12, lsl #0x2] - add r2, r3, r12, lsl #0x2 - cmp r4, r5 - bhi _020BC208 -_020BC238: - ldrh r4, [r0, #0x6] - ldr r3, [r1, #0x0] - add r12, r0, r4 - ldrh r4, [r12, #0x2] - ldrb r0, [r2, #0x3] - add r4, r12, r4 - ldr r2, [r4, r0, lsl #0x4] - add r4, r4, r0, lsl #0x4 - cmp r2, r3 - bne _020BC294 - ldr r3, [r4, #0x4] - ldr r2, [r1, #0x4] - cmp r3, r2 - bne _020BC294 - ldr r3, [r4, #0x8] - ldr r2, [r1, #0x8] - cmp r3, r2 - bne _020BC294 - ldr r2, [r4, #0xc] - ldr r1, [r1, #0xc] - cmp r2, r1 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} -_020BC294: - mvn r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BC14C - - arm_func_start FUN_020BC2A0 -FUN_020BC2A0: ; 0x020BC2A0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrb r2, [r0, #0x1] - cmp r2, #0x10 - bhs _020BC34C - cmp r2, #0x0 - ldr lr, [r1, #0x0] - ldr r12, [r1, #0x4] - ldr r3, [r1, #0x8] - ldr r2, [r1, #0xc] - mov r4, #0x0 - bls _020BC404 - ldrh r5, [r0, #0x6] - mov r1, r4 - add r6, r0, r5 - ldrh r5, [r6, #0x2] - add r6, r6, r5 -_020BC2E4: - ldr r5, [r6, r1] - add r7, r6, r1 - cmp r5, lr - bne _020BC334 - ldr r5, [r7, #0x4] - cmp r5, r12 - bne _020BC334 - ldr r5, [r7, #0x8] - cmp r5, r3 - bne _020BC334 - ldr r5, [r7, #0xc] - cmp r5, r2 - bne _020BC334 - ldrh r2, [r0, #0x6] - add sp, sp, #0x4 - ldrh r1, [r0, r2] - add r0, r0, r2 - add r0, r0, #0x4 - mla r0, r1, r4, r0 - ldmia sp!, {r4-r7,pc} -_020BC334: - ldrb r5, [r0, #0x1] - add r4, r4, #0x1 - add r1, r1, #0x10 - cmp r4, r5 - blo _020BC2E4 - b _020BC404 -_020BC34C: - add r3, r0, #0x8 - ldrb r2, [r3, #0x1] - cmp r2, #0x0 - beq _020BC404 - ldrb r5, [r3, r2, lsl #0x2] - ldrb r4, [r3, #0x0] - add r2, r3, r2, lsl #0x2 - cmp r4, r5 - bls _020BC3A0 -_020BC370: - mov r4, r5, asr #0x5 - ldr r12, [r1, r4, lsl #0x2] - and r4, r5, #0x1f - mov r4, r12, lsr r4 - and r4, r4, #0x1 - add r4, r2, r4 - ldrb r12, [r4, #0x1] - ldrb r4, [r2, #0x0] - ldrb r5, [r3, r12, lsl #0x2] - add r2, r3, r12, lsl #0x2 - cmp r4, r5 - bhi _020BC370 -_020BC3A0: - ldrh r4, [r0, #0x6] - ldrb r2, [r2, #0x3] - ldr r3, [r1, #0x0] - add r0, r0, r4 - ldrh r4, [r0, #0x2] - add r12, r0, r4 - ldr r4, [r12, r2, lsl #0x4] - add r12, r12, r2, lsl #0x4 - cmp r4, r3 - bne _020BC404 - ldr r4, [r12, #0x4] - ldr r3, [r1, #0x4] - cmp r4, r3 - bne _020BC404 - ldr r4, [r12, #0x8] - ldr r3, [r1, #0x8] - cmp r4, r3 - bne _020BC404 - ldr r3, [r12, #0xc] - ldr r1, [r1, #0xc] - cmp r3, r1 - ldreqh r1, [r0], #0x4 - addeq sp, sp, #0x4 - mlaeq r0, r1, r2, r0 - ldmeqia sp!, {r4-r7,pc} -_020BC404: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BC2A0 - - arm_func_start FUN_020BC410 -FUN_020BC410: ; 0x020BC410 - ldrh r3, [r0, #0x12] - add r0, r0, #0xc - ldrh r2, [r0, r3] - add r0, r0, r3 - add r0, r0, #0x4 - mla r0, r2, r1, r0 - bx lr - arm_func_end FUN_020BC410 - - arm_func_start FUN_020BC42C -FUN_020BC42C: ; 0x020BC42C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r2 - bl FUN_020BC410 - ldrsh r1, [r0, #0x4] - ldrh r3, [r0, #0x6] - mul r2, r1, r4 - add r3, r5, r3 - mov r2, r2, lsr #0xc - b _020BC45C -_020BC458: - sub r2, r2, #0x1 -_020BC45C: - cmp r2, #0x0 - beq _020BC474 - mov r1, r2, lsl #0x2 - ldrh r1, [r3, r1] - cmp r1, r4 - bhs _020BC458 -_020BC474: - ldrh r1, [r0, #0x0] - b _020BC480 -_020BC47C: - add r2, r2, #0x1 -_020BC480: - add r0, r2, #0x1 - cmp r0, r1 - bhs _020BC49C - add r0, r3, r2, lsl #0x2 - ldrh r0, [r0, #0x4] - cmp r0, r4 - bls _020BC47C -_020BC49C: - add r0, r3, r2, lsl #0x2 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020BC42C - - arm_func_start FUN_020BC4A8 -FUN_020BC4A8: ; 0x020BC4A8 - ldrh r2, [r0, #0xa] - add r0, r0, r2 - add r0, r0, r1, lsl #0x4 - bx lr - arm_func_end FUN_020BC4A8 - - arm_func_start FUN_020BC4B8 -FUN_020BC4B8: ; 0x020BC4B8 - ldrh r2, [r0, #0x8] - add r0, r0, r2 - add r0, r0, r1, lsl #0x4 - bx lr - arm_func_end FUN_020BC4B8 - - arm_func_start FUN_020BC4C8 -FUN_020BC4C8: ; 0x020BC4C8 - ldrh r2, [r0, #0xc] - ldr r2, [r0, r2] - add r12, r0, r2 - ldrh r2, [r12, #0xe] - add r3, r12, #0x8 - ldrh r0, [r3, r2] - add r2, r3, r2 - add r2, r2, #0x4 - mul r1, r0, r1 - adds r0, r2, r1 - ldrne r0, [r0, #0x0] - addne r0, r12, r0 - moveq r0, #0x0 - bx lr - arm_func_end FUN_020BC4C8 - - arm_func_start FUN_020BC500 -FUN_020BC500: ; 0x020BC500 - stmdb sp!, {r4,lr} - ands r4, r3, #0x8000 - beq _020BC5E0 - mov r2, #0x0 - str r2, [r0, #0x20] - ldr r4, [r0, #0x20] - ldr r2, _020BC684 ; =0x00007FFF - str r4, [r0, #0x1c] - ldr r4, [r0, #0x1c] - and r3, r3, r2 - str r4, [r0, #0x18] - ldr r4, [r0, #0x18] - mov r2, #0x3 - str r4, [r0, #0x14] - ldr r4, [r0, #0x14] - mul r2, r3, r2 - str r4, [r0, #0x10] - ldr r4, [r0, #0x10] - mov r3, r2, lsl #0x1 - str r4, [r0, #0xc] - ldr r4, [r0, #0xc] - add r2, r1, r2, lsl #0x1 - str r4, [r0, #0x8] - ldr r4, [r0, #0x8] - str r4, [r0, #0x4] - ldr r4, [r0, #0x4] - str r4, [r0, #0x0] - ldrsh r4, [r1, r3] - ldrsh r12, [r2, #0x2] - ldrsh r3, [r2, #0x4] - and r1, r4, #0xf - ands r4, r4, #0x10 - movne lr, #0x1000 - rsbne lr, lr, #0x0 - moveq lr, #0x1000 - str lr, [r0, r1, lsl #0x2] - ldr r4, _020BC688 ; =UNK_020FFA14 - ldr lr, _020BC68C ; =UNK_020FFA14 + 1 - ldrb r4, [r4, r1, lsl #0x2] - str r12, [r0, r4, lsl #0x2] - ldrb lr, [lr, r1, lsl #0x2] - str r3, [r0, lr, lsl #0x2] - ldrsh lr, [r2, #0x0] - ands lr, lr, #0x20 - ldr lr, _020BC690 ; =UNK_020FFA14 + 2 - rsbne r3, r3, #0x0 - ldrb lr, [lr, r1, lsl #0x2] - str r3, [r0, lr, lsl #0x2] - ldrsh r2, [r2, #0x0] - ands r2, r2, #0x40 - ldr r2, _020BC694 ; =UNK_020FFA14 + 3 - rsbne r12, r12, #0x0 - ldrb r1, [r2, r1, lsl #0x2] - str r12, [r0, r1, lsl #0x2] - mov r0, #0x0 - ldmia sp!, {r4,pc} -_020BC5E0: - ldr r1, _020BC684 ; =0x00007FFF - mov r12, #0x5 - and r1, r3, r1 - mul r3, r1, r12 - add r1, r2, r3, lsl #0x1 - ldrsh lr, [r1, #0x8] - mov r12, r3, lsl #0x1 - mov r3, lr, asr #0x3 - str r3, [r0, #0x10] - ldrsh r12, [r2, r12] - and r2, lr, #0x7 - mov r2, r2, lsl #0x10 - mov r3, r12, asr #0x3 - str r3, [r0, #0x0] - ldrsh r3, [r1, #0x2] - and r12, r12, #0x7 - orr lr, r12, r2, asr #0xd - mov r2, r3, asr #0x3 - str r2, [r0, #0x4] - ldrsh r12, [r1, #0x4] - mov r2, lr, lsl #0x10 - and lr, r3, #0x7 - mov r3, r12, asr #0x3 - str r3, [r0, #0x8] - ldrsh r3, [r1, #0x6] - orr r1, lr, r2, asr #0xd - mov r1, r1, lsl #0x10 - and r2, r12, #0x7 - orr r1, r2, r1, asr #0xd - mov r1, r1, lsl #0x10 - and r2, r3, #0x7 - orr r1, r2, r1, asr #0xd - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - mov r2, r3, asr #0x3 - mov r1, r1, lsl #0x13 - str r2, [r0, #0xc] - mov r1, r1, asr #0x13 - str r1, [r0, #0x14] - mov r0, #0x1 - ldmia sp!, {r4,pc} - .balign 4 -_020BC684: .word 0x00007FFF -_020BC688: .word UNK_020FFA14 -_020BC68C: .word UNK_020FFA14 + 1 -_020BC690: .word UNK_020FFA14 + 2 -_020BC694: .word UNK_020FFA14 + 3 - arm_func_end FUN_020BC500 - - arm_func_start FUN_020BC698 -FUN_020BC698: ; 0x020BC698 - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x48 - ldrh r4, [r3, #0x4] - ldr r5, [r3, #0xc] - ldr r8, [r3, #0x10] - ldr r7, [r2, #0x4] - mov r12, r1, asr #0xc - sub r4, r4, #0x1 - mov r6, r0 - cmp r12, r4 - add r5, r3, r5 - add r4, r3, r8 - add r8, r3, r7 - ldr r7, [r2, #0x0] - bne _020BC780 - ands r0, r7, #0xc0000000 - beq _020BC6F0 - ands r0, r7, #0x40000000 - andne r0, r12, #0x1 - addne r12, r0, r12, lsr #0x1 - andeq r0, r12, #0x3 - addeq r12, r0, r12, lsr #0x2 -_020BC6F0: - ldr r0, [r3, #0x8] - ands r0, r0, #0x2 - movne r7, #0x0 - bne _020BC7F4 - mov r0, r12, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - cmp r0, #0x0 - addeq sp, sp, #0x48 - ldmeqia sp!, {r4-r10,pc} - ldr r9, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - mul r1, r5, r9 - mul r0, r2, r4 - sub r0, r1, r0 - ldr r7, [r6, #0xc] - ldr r8, [r6, #0x0] - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r9 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - add sp, sp, #0x48 - str r0, [r6, #0x20] - ldmia sp!, {r4-r10,pc} -_020BC780: - ands r0, r7, #0xc0000000 - beq _020BC7F0 - ldr r0, _020BC9C4 ; =0x1FFF0000 - ands r2, r7, #0x40000000 - and r0, r7, r0 - mov r0, r0, lsr #0x10 - beq _020BC7C4 - cmp r12, r0 - movcs r12, r0, lsr #0x1 - addcs r7, r12, #0x1 - bhs _020BC7F4 - ldr r0, _020BC9C8 ; =0x00001FFF - mov r12, r12, lsr #0x1 - add r7, r12, #0x1 - and r10, r1, r0 - mov r9, #0x2 - b _020BC800 -_020BC7C4: - cmp r12, r0 - andcs r0, r12, #0x3 - addcs r12, r0, r12, lsr #0x2 - addcs r7, r12, #0x1 - bhs _020BC7F4 - ldr r0, _020BC9CC ; =0x00003FFF - mov r12, r12, lsr #0x2 - add r7, r12, #0x1 - and r10, r1, r0 - mov r9, #0x4 - b _020BC800 -_020BC7F0: - add r7, r12, #0x1 -_020BC7F4: - ldr r0, _020BC9D0 ; =0x00000FFF - mov r9, #0x1 - and r10, r1, r0 -_020BC800: - mov r0, r12, lsl #0x1 - ldrh r3, [r8, r0] - add r0, sp, #0x0 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - mov r1, r7, lsl #0x1 - ldrh r3, [r8, r1] - orr r7, r0, #0x0 - add r0, sp, #0x24 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - ldr r3, [sp, #0x0] - ldr r1, [sp, #0x24] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x0] - ldr r3, [sp, #0x4] - ldr r1, [sp, #0x28] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x4] - ldr r3, [sp, #0x8] - ldr r1, [sp, #0x2c] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x8] - ldr r3, [sp, #0xc] - ldr r1, [sp, #0x30] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0xc] - ldr r2, [sp, #0x10] - ldr r1, [sp, #0x34] - orr r7, r7, r0 - sub r0, r1, r2 - mul r1, r2, r9 - mul r0, r10, r0 - add r0, r1, r0, asr #0xc - str r0, [r6, #0x10] - ldr r2, [sp, #0x14] - ldr r0, [sp, #0x38] - mul r1, r2, r9 - sub r0, r0, r2 - mul r0, r10, r0 - add r2, r1, r0, asr #0xc - mov r0, r6 - mov r1, r6 - str r2, [r6, #0x14] - bl VEC_Normalize - add r0, r6, #0xc - mov r1, r0 - bl VEC_Normalize - cmp r7, #0x0 - bne _020BC968 - ldr r3, [sp, #0x18] - ldr r1, [sp, #0x3c] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x18] - ldr r3, [sp, #0x1c] - ldr r1, [sp, #0x40] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r1, r2, r1, asr #0xc - str r1, [r6, #0x1c] - ldr r3, [sp, #0x20] - ldr r1, [sp, #0x44] - mul r2, r3, r9 - sub r1, r1, r3 - mul r1, r10, r1 - add r2, r2, r1, asr #0xc - add r0, r6, #0x18 - mov r1, r0 - str r2, [r6, #0x20] - bl VEC_Normalize - add sp, sp, #0x48 - ldmia sp!, {r4-r10,pc} -_020BC968: - ldr r9, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r8, [r6, #0x0] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - ldr r7, [r6, #0xc] - mul r1, r5, r9 - mul r0, r2, r4 - sub r0, r1, r0 - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r9 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - str r0, [r6, #0x20] - add sp, sp, #0x48 - ldmia sp!, {r4-r10,pc} - .balign 4 -_020BC9C4: .word 0x1FFF0000 -_020BC9C8: .word 0x00001FFF -_020BC9CC: .word 0x00003FFF -_020BC9D0: .word 0x00000FFF - arm_func_end FUN_020BC698 - - arm_func_start FUN_020BC9D4 -FUN_020BC9D4: ; 0x020BC9D4 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4c - ldr r5, [r3, #0xc] - ldr r4, [r3, #0x10] - ldr r12, [r2, #0x0] - ldr r2, [r2, #0x4] - mov r6, r0 - mov r0, r1, asr #0xc - add r5, r3, r5 - add r4, r3, r4 - add r8, r3, r2 - ands r1, r12, #0xc0000000 - beq _020BCD40 - ldr r1, _020BCDC0 ; =0x1FFF0000 - ands r2, r12, #0x40000000 - and r1, r12, r1 - mov r2, r1, lsr #0x10 - beq _020BCA44 - ands r1, r0, #0x1 - beq _020BCA3C - cmp r0, r2 - movhi r0, r2, lsr #0x1 - addhi r0, r0, #0x1 - bhi _020BCD40 - mov r7, r0, lsr #0x1 - b _020BCBE8 -_020BCA3C: - mov r0, r0, lsr #0x1 - b _020BCD40 -_020BCA44: - ands r1, r0, #0x3 - beq _020BCBE0 - cmp r0, r2 - addhi r0, r1, r2, lsr #0x2 - bhi _020BCD40 - ands r1, r0, #0x1 - beq _020BCBD8 - ands r1, r0, #0x2 - movne r9, r0, lsr #0x2 - addne r0, r9, #0x1 - moveq r0, r0, lsr #0x2 - addeq r9, r0, #0x1 - mov r0, r0, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r7, #0x0 - bl FUN_020BC500 - mov r1, r9, lsl #0x1 - ldrh r3, [r8, r1] - orr r7, r7, r0 - add r0, sp, #0x0 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - ldr r3, [sp, #0x0] - ldr r1, [r6, #0x0] - mov r2, #0x3 - mla r3, r1, r2, r3 - str r3, [r6, #0x0] - ldr r3, [sp, #0x4] - ldr r1, [r6, #0x4] - orr r7, r7, r0 - mla r0, r1, r2, r3 - str r0, [r6, #0x4] - ldr r3, [sp, #0x8] - ldr r1, [r6, #0x8] - mov r0, r6 - mla r3, r1, r2, r3 - str r3, [r6, #0x8] - ldr r4, [sp, #0xc] - ldr r3, [r6, #0xc] - mov r1, r6 - mla r4, r3, r2, r4 - str r4, [r6, #0xc] - ldr r4, [sp, #0x10] - ldr r3, [r6, #0x10] - mla r4, r3, r2, r4 - str r4, [r6, #0x10] - ldr r4, [sp, #0x14] - ldr r3, [r6, #0x14] - mla r2, r3, r2, r4 - str r2, [r6, #0x14] - bl VEC_Normalize - add r0, r6, #0xc - mov r1, r0 - bl VEC_Normalize - cmp r7, #0x0 - bne _020BCB7C - ldr r1, [sp, #0x18] - ldr r0, [r6, #0x18] - mov r2, #0x3 - mla r1, r0, r2, r1 - str r1, [r6, #0x18] - ldr r3, [sp, #0x1c] - ldr r1, [r6, #0x1c] - add r0, r6, #0x18 - mla r3, r1, r2, r3 - str r3, [r6, #0x1c] - ldr r4, [sp, #0x20] - ldr r3, [r6, #0x20] - mov r1, r0 - mla r2, r3, r2, r4 - str r2, [r6, #0x20] - bl VEC_Normalize - add sp, sp, #0x4c - ldmia sp!, {r4-r9,pc} -_020BCB7C: - ldr r12, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - mul r1, r5, r12 - mul r0, r2, r4 - sub r0, r1, r0 - ldr r7, [r6, #0xc] - ldr r8, [r6, #0x0] - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r12 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - add sp, sp, #0x4c - str r0, [r6, #0x20] - ldmia sp!, {r4-r9,pc} -_020BCBD8: - mov r7, r0, lsr #0x2 - b _020BCBE8 -_020BCBE0: - mov r0, r0, lsr #0x2 - b _020BCD40 -_020BCBE8: - mov r0, r7, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - add r1, r8, r7, lsl #0x1 - ldrh r3, [r1, #0x2] - orr r7, r0, #0x0 - add r0, sp, #0x24 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - ldr r2, [r6, #0x0] - ldr r1, [sp, #0x24] - orr r7, r7, r0 - add r0, r2, r1 - str r0, [r6, #0x0] - ldr r2, [r6, #0x4] - ldr r1, [sp, #0x28] - mov r0, r6 - add r1, r2, r1 - str r1, [r6, #0x4] - ldr r3, [r6, #0x8] - ldr r2, [sp, #0x2c] - mov r1, r6 - add r2, r3, r2 - str r2, [r6, #0x8] - ldr r3, [r6, #0xc] - ldr r2, [sp, #0x30] - add r2, r3, r2 - str r2, [r6, #0xc] - ldr r3, [r6, #0x10] - ldr r2, [sp, #0x34] - add r2, r3, r2 - str r2, [r6, #0x10] - ldr r3, [r6, #0x14] - ldr r2, [sp, #0x38] - add r2, r3, r2 - str r2, [r6, #0x14] - bl VEC_Normalize - add r0, r6, #0xc - mov r1, r0 - bl VEC_Normalize - cmp r7, #0x0 - bne _020BCCE4 - ldr r2, [r6, #0x18] - ldr r1, [sp, #0x3c] - add r0, r6, #0x18 - add r1, r2, r1 - str r1, [r6, #0x18] - ldr r3, [r6, #0x1c] - ldr r2, [sp, #0x40] - mov r1, r0 - add r2, r3, r2 - str r2, [r6, #0x1c] - ldr r3, [r6, #0x20] - ldr r2, [sp, #0x44] - add r2, r3, r2 - str r2, [r6, #0x20] - bl VEC_Normalize - add sp, sp, #0x4c - ldmia sp!, {r4-r9,pc} -_020BCCE4: - ldr r12, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - mul r1, r5, r12 - mul r0, r2, r4 - sub r0, r1, r0 - ldr r7, [r6, #0xc] - ldr r8, [r6, #0x0] - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r12 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - add sp, sp, #0x4c - str r0, [r6, #0x20] - ldmia sp!, {r4-r9,pc} -_020BCD40: - mov r0, r0, lsl #0x1 - ldrh r3, [r8, r0] - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FUN_020BC500 - cmp r0, #0x0 - addeq sp, sp, #0x4c - ldmeqia sp!, {r4-r9,pc} - ldr r12, [r6, #0x14] - ldr r5, [r6, #0x4] - ldr r8, [r6, #0x0] - ldr r4, [r6, #0x10] - ldr r2, [r6, #0x8] - ldr r7, [r6, #0xc] - mul r1, r5, r12 - mul r0, r2, r4 - sub r0, r1, r0 - mov r3, r0, asr #0xc - mul r1, r2, r7 - mul r0, r8, r12 - sub r2, r1, r0 - mul r1, r8, r4 - mul r0, r5, r7 - sub r0, r1, r0 - str r3, [r6, #0x18] - mov r1, r2, asr #0xc - str r1, [r6, #0x1c] - mov r0, r0, asr #0xc - str r0, [r6, #0x20] - add sp, sp, #0x4c - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BCDC0: .word 0x1FFF0000 - arm_func_end FUN_020BC9D4 - - arm_func_start FUN_020BCDC4 -FUN_020BCDC4: ; 0x020BCDC4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - ldrh r4, [r3, #0x4] - ldr r6, [r2, #0x4] - mov r5, r1, asr #0xc - sub r4, r4, #0x1 - cmp r5, r4 - add r6, r3, r6 - ldr r2, [r2, #0x0] - bne _020BCE58 - ands r4, r2, #0xc0000000 - beq _020BCE08 - ands r4, r2, #0x40000000 - andne r4, r5, #0x1 - addne r5, r4, r5, lsr #0x1 - andeq r4, r5, #0x3 - addeq r5, r4, r5, lsr #0x2 -_020BCE08: - ldr r3, [r3, #0x8] - ands r3, r3, #0x2 - movne r4, #0x0 - bne _020BCED4 - ands r1, r2, #0x20000000 - ldreq r2, [r6, r5, lsl #0x3] - addeq r1, r6, r5, lsl #0x3 - streq r2, [r0, #0x0] - ldreq r1, [r1, #0x4] - addeq sp, sp, #0x4 - streq r1, [r0, #0x4] - ldmeqia sp!, {r4-r7,pc} - mov r1, r5, lsl #0x2 - ldrsh r2, [r6, r1] - add r1, r6, r5, lsl #0x2 - add sp, sp, #0x4 - str r2, [r0, #0x0] - ldrsh r1, [r1, #0x2] - str r1, [r0, #0x4] - ldmia sp!, {r4-r7,pc} -_020BCE58: - ands r3, r2, #0xc0000000 - beq _020BCED0 - ldr r3, _020BCF60 ; =0x1FFF0000 - ands r4, r2, #0x40000000 - and r3, r2, r3 - mov r3, r3, lsr #0x10 - beq _020BCEA0 - cmp r5, r3 - movcs r5, r3, lsr #0x1 - addcs r4, r5, #0x1 - bhs _020BCED4 - ldr r3, _020BCF64 ; =0x00001FFF - mov r5, r5, lsr #0x1 - add r4, r5, #0x1 - and lr, r1, r3 - mov r12, #0x2 - mov r3, #0x1 - b _020BCEE4 -_020BCEA0: - cmp r5, r3 - andcs r3, r5, #0x3 - addcs r5, r3, r5, lsr #0x2 - addcs r4, r5, #0x1 - bhs _020BCED4 - ldr r3, _020BCF68 ; =0x00003FFF - mov r5, r5, lsr #0x2 - add r4, r5, #0x1 - and lr, r1, r3 - mov r12, #0x4 - mov r3, #0x2 - b _020BCEE4 -_020BCED0: - add r4, r5, #0x1 -_020BCED4: - ldr r3, _020BCF6C ; =0x00000FFF - mov r12, #0x1 - and lr, r1, r3 - mov r3, #0x0 -_020BCEE4: - ands r1, r2, #0x20000000 - beq _020BCF10 - mov r2, r5, lsl #0x2 - add r1, r6, r5, lsl #0x2 - mov r5, r4, lsl #0x2 - add r4, r6, r4, lsl #0x2 - ldrsh r2, [r6, r2] - ldrsh r1, [r1, #0x2] - ldrsh r5, [r6, r5] - ldrsh r4, [r4, #0x2] - b _020BCF28 -_020BCF10: - add r1, r6, r5, lsl #0x3 - add r7, r6, r4, lsl #0x3 - ldr r2, [r6, r5, lsl #0x3] - ldr r1, [r1, #0x4] - ldr r5, [r6, r4, lsl #0x3] - ldr r4, [r7, #0x4] -_020BCF28: - sub r5, r5, r2 - sub r4, r4, r1 - mul r6, r2, r12 - mul r2, lr, r5 - add r2, r6, r2, asr #0xc - mov r5, r2, asr r3 - mul r2, r1, r12 - mul r1, lr, r4 - add r1, r2, r1, asr #0xc - mov r1, r1, asr r3 - str r5, [r0, #0x0] - str r1, [r0, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - .balign 4 -_020BCF60: .word 0x1FFF0000 -_020BCF64: .word 0x00001FFF -_020BCF68: .word 0x00003FFF -_020BCF6C: .word 0x00000FFF - arm_func_end FUN_020BCDC4 - - arm_func_start FUN_020BCF70 -FUN_020BCF70: ; 0x020BCF70 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r4, [r2, #0x4] - ldr r12, [r2, #0x0] - mov r1, r1, asr #0xc - add r3, r3, r4 - ands r2, r12, #0xc0000000 - beq _020BD0D0 - ldr r2, _020BD184 ; =0x1FFF0000 - ands r4, r12, #0x40000000 - and r2, r12, r2 - mov r4, r2, lsr #0x10 - beq _020BCFCC - ands r2, r1, #0x1 - beq _020BCFC4 - cmp r1, r4 - movhi r1, r4, lsr #0x1 - addhi r1, r1, #0x1 - bhi _020BD0D0 - mov r2, r1, lsr #0x1 - b _020BD110 -_020BCFC4: - mov r1, r1, lsr #0x1 - b _020BD0D0 -_020BCFCC: - ands r2, r1, #0x3 - beq _020BD0CC - cmp r1, r4 - addhi r1, r2, r4, lsr #0x2 - bhi _020BD0D0 - ands r2, r1, #0x1 - beq _020BD0C4 - ands r2, r1, #0x2 - movne r1, r1, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r1, lsr #0x2 - addeq r1, r2, #0x1 - ands r4, r12, #0x20000000 - beq _020BD04C - mov r5, r2, lsl #0x2 - mov r4, r1, lsl #0x2 - ldrsh r12, [r3, r5] - ldrsh r5, [r3, r4] - add r2, r3, r2, lsl #0x2 - add r4, r12, r12, lsl #0x1 - add r4, r5, r4 - mov r4, r4, asr #0x2 - str r4, [r0, #0x0] - add r1, r3, r1, lsl #0x2 - ldrsh r3, [r2, #0x2] - ldrsh r2, [r1, #0x2] - add sp, sp, #0x4 - add r1, r3, r3, lsl #0x1 - add r1, r2, r1 - mov r1, r1, asr #0x2 - str r1, [r0, #0x4] - ldmia sp!, {r4-r5,pc} -_020BD04C: - ldr r5, [r3, r2, lsl #0x3] - ldr r4, [r3, r1, lsl #0x3] - mov r12, r5, asr #0x1f - mov r12, r12, lsl #0x1 - mov lr, r5, lsl #0x1 - orr r12, r12, r5, lsr #0x1f - adds lr, lr, r5 - adc r12, r12, r5, asr #0x1f - adds lr, lr, r4 - adc r12, r12, r4, asr #0x1f - mov lr, lr, lsr #0x2 - orr lr, lr, r12, lsl #0x1e - str lr, [r0, #0x0] - add r2, r3, r2, lsl #0x3 - ldr r12, [r2, #0x4] - add r1, r3, r1, lsl #0x3 - mov r2, r12, asr #0x1f - mov r2, r2, lsl #0x1 - mov r3, r12, lsl #0x1 - ldr r1, [r1, #0x4] - orr r2, r2, r12, lsr #0x1f - adds r3, r3, r12 - adc r2, r2, r12, asr #0x1f - adds r3, r3, r1 - adc r1, r2, r1, asr #0x1f - mov r2, r3, lsr #0x2 - orr r2, r2, r1, lsl #0x1e - str r2, [r0, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} -_020BD0C4: - mov r2, r1, lsr #0x2 - b _020BD110 -_020BD0CC: - mov r1, r1, lsr #0x2 -_020BD0D0: - ands r2, r12, #0x20000000 - ldreq r2, [r3, r1, lsl #0x3] - addeq r1, r3, r1, lsl #0x3 - streq r2, [r0, #0x0] - ldreq r1, [r1, #0x4] - addeq sp, sp, #0x4 - streq r1, [r0, #0x4] - ldmeqia sp!, {r4-r5,pc} - mov r2, r1, lsl #0x2 - ldrsh r2, [r3, r2] - add r1, r3, r1, lsl #0x2 - add sp, sp, #0x4 - str r2, [r0, #0x0] - ldrsh r1, [r1, #0x2] - str r1, [r0, #0x4] - ldmia sp!, {r4-r5,pc} -_020BD110: - ands r1, r12, #0x20000000 - beq _020BD150 - mov r1, r2, lsl #0x2 - add r12, r3, r2, lsl #0x2 - ldrsh r2, [r3, r1] - ldrsh r1, [r12, #0x4] - add sp, sp, #0x4 - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x0] - ldrsh r2, [r12, #0x2] - ldrsh r1, [r12, #0x6] - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x4] - ldmia sp!, {r4-r5,pc} -_020BD150: - add r12, r3, r2, lsl #0x3 - ldr r2, [r3, r2, lsl #0x3] - ldr r1, [r12, #0x8] - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x0] - ldr r2, [r12, #0x4] - ldr r1, [r12, #0xc] - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x4] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BD184: .word 0x1FFF0000 - arm_func_end FUN_020BCF70 - - arm_func_start FUN_020BD188 -FUN_020BD188: ; 0x020BD188 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldrh r4, [r3, #0x4] - ldr lr, [r2, #0x4] - mov r12, r1, asr #0xc - sub r4, r4, #0x1 - cmp r12, r4 - add r4, r3, lr - ldr lr, [r2, #0x0] - bne _020BD230 - ands r2, lr, #0xc0000000 - beq _020BD1CC - ands r2, lr, #0x40000000 - andne r2, r12, #0x1 - addne r12, r2, r12, lsr #0x1 - andeq r2, r12, #0x3 - addeq r12, r2, r12, lsr #0x2 -_020BD1CC: - ldr r2, [r3, #0x8] - ands r2, r2, #0x2 - beq _020BD210 - ldr r2, _020BD2E8 ; =0x00000FFF - ands r3, lr, #0x20000000 - and r3, r1, r2 - movne r1, r12, lsl #0x1 - ldrnesh r2, [r4, r1] - ldrnesh r1, [r4, #0x0] - add sp, sp, #0x4 - ldreq r2, [r4, r12, lsl #0x2] - ldreq r1, [r4, #0x0] - sub r1, r1, r2 - mul r1, r3, r1 - add r1, r2, r1, asr #0xc - str r1, [r0, #0x0] - ldmia sp!, {r4-r5,pc} -_020BD210: - ands r1, lr, #0x20000000 - movne r1, r12, lsl #0x1 - ldrnesh r1, [r4, r1] - add sp, sp, #0x4 - strne r1, [r0, #0x0] - ldreq r1, [r4, r12, lsl #0x2] - streq r1, [r0, #0x0] - ldmia sp!, {r4-r5,pc} -_020BD230: - ands r2, lr, #0xc0000000 - beq _020BD298 - ldr r2, _020BD2EC ; =0x1FFF0000 - ands r3, lr, #0x40000000 - and r2, lr, r2 - mov r2, r2, lsr #0x10 - beq _020BD270 - cmp r12, r2 - movcs r12, r2, lsr #0x1 - bhs _020BD298 - ldr r2, _020BD2F0 ; =0x00001FFF - mov r12, r12, lsr #0x1 - and r5, r1, r2 - mov r2, #0x2 - mov r1, #0x1 - b _020BD2A8 -_020BD270: - cmp r12, r2 - andcs r2, r12, #0x3 - addcs r12, r2, r12, lsr #0x2 - bhs _020BD298 - ldr r2, _020BD2F4 ; =0x00003FFF - mov r12, r12, lsr #0x2 - and r5, r1, r2 - mov r2, #0x4 - mov r1, #0x2 - b _020BD2A8 -_020BD298: - ldr r3, _020BD2E8 ; =0x00000FFF - mov r2, #0x1 - and r5, r1, r3 - mov r1, #0x0 -_020BD2A8: - ands r3, lr, #0x20000000 - addne r3, r4, r12, lsl #0x1 - movne lr, r12, lsl #0x1 - ldrnesh r12, [r4, lr] - ldrnesh r3, [r3, #0x2] - addeq r3, r4, r12, lsl #0x2 - ldreq r12, [r4, r12, lsl #0x2] - ldreq r3, [r3, #0x4] - mul r4, r12, r2 - sub r3, r3, r12 - mul r2, r5, r3 - add r2, r4, r2, asr #0xc - mov r1, r2, asr r1 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BD2E8: .word 0x00000FFF -_020BD2EC: .word 0x1FFF0000 -_020BD2F0: .word 0x00001FFF -_020BD2F4: .word 0x00003FFF - arm_func_end FUN_020BD188 - - arm_func_start FUN_020BD2F8 -FUN_020BD2F8: ; 0x020BD2F8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r12, [r2, #0x4] - ldr r2, [r2, #0x0] - mov r1, r1, asr #0xc - add r3, r3, r12 - ands r12, r2, #0xc0000000 - beq _020BD44C - ldr ip, _020BD46C ; =0x1FFF0000 - ands lr, r2, #0x40000000 - and r12, r2, r12 - mov lr, r12, lsr #0x10 - beq _020BD354 - ands r12, r1, #0x1 - beq _020BD34C - cmp r1, lr - movhi r1, lr, lsr #0x1 - addhi r1, r1, #0x1 - bhi _020BD44C - mov r12, r1, lsr #0x1 - b _020BD400 -_020BD34C: - mov r1, r1, lsr #0x1 - b _020BD44C -_020BD354: - ands r12, r1, #0x3 - beq _020BD3F8 - cmp r1, lr - addhi r1, r12, lr, lsr #0x2 - bhi _020BD44C - ands r12, r1, #0x1 - beq _020BD3F0 - ands r12, r1, #0x2 - movne lr, r1, lsr #0x2 - addne r12, lr, #0x1 - moveq r12, r1, lsr #0x2 - addeq lr, r12, #0x1 - ands r1, r2, #0x20000000 - beq _020BD3B4 - mov r2, r12, lsl #0x1 - mov r1, lr, lsl #0x1 - ldrsh r12, [r3, r2] - ldrsh r2, [r3, r1] - mov r1, #0x3 - add sp, sp, #0x4 - smlabb r1, r12, r1, r2 - mov r1, r1, asr #0x2 - str r1, [r0, #0x0] - ldmia sp!, {pc} -_020BD3B4: - ldr r12, [r3, r12, lsl #0x2] - ldr r1, [r3, lr, lsl #0x2] - mov r2, r12, asr #0x1f - mov r2, r2, lsl #0x1 - mov r3, r12, lsl #0x1 - orr r2, r2, r12, lsr #0x1f - adds r3, r3, r12 - adc r2, r2, r12, asr #0x1f - adds r3, r3, r1 - adc r1, r2, r1, asr #0x1f - mov r2, r3, lsr #0x2 - orr r2, r2, r1, lsl #0x1e - str r2, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} -_020BD3F0: - mov r12, r1, lsr #0x2 - b _020BD400 -_020BD3F8: - mov r1, r1, lsr #0x2 - b _020BD44C -_020BD400: - ands r1, r2, #0x20000000 - beq _020BD42C - mov r2, r12, lsl #0x1 - add r1, r3, r12, lsl #0x1 - ldrsh r2, [r3, r2] - ldrsh r1, [r1, #0x2] - add sp, sp, #0x4 - add r1, r2, r1 - mov r1, r1, asr #0x1 - str r1, [r0, #0x0] - ldmia sp!, {pc} -_020BD42C: - add r1, r3, r12, lsl #0x2 - ldr r2, [r3, r12, lsl #0x2] - ldr r1, [r1, #0x4] - mov r2, r2, asr #0x1 - add r1, r2, r1, asr #0x1 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} -_020BD44C: - ands r2, r2, #0x20000000 - movne r1, r1, lsl #0x1 - ldrnesh r1, [r3, r1] - strne r1, [r0, #0x0] - ldreq r1, [r3, r1, lsl #0x2] - streq r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BD46C: .word 0x1FFF0000 - arm_func_end FUN_020BD2F8 - - arm_func_start FUN_020BD470 -FUN_020BD470: ; 0x020BD470 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x34 - mov r9, r0 - add r0, r9, r1, lsl #0x1 - ldrh r0, [r0, #0x14] - mov r7, r3 - mov r8, r2 - ldr r5, [r9, r0] - add r1, r9, r0 - ands r0, r5, #0x1 - movne r0, #0x7 - strne r0, [r7, #0x0] - bne _020BD814 - ldr r0, _020BD848 ; =0x00000FFF - add r4, r1, #0x4 - ands r0, r8, r0 - beq _020BD4C4 - ldr r0, [r9, #0x8] - ands r0, r0, #0x1 - movne r6, #0x1 - bne _020BD4C8 -_020BD4C4: - mov r6, #0x0 -_020BD4C8: - mov r0, #0x0 - str r0, [r7, #0x0] - ands r0, r5, #0x6 - bne _020BD5C0 - ands r0, r5, #0x8 - bne _020BD51C - cmp r6, #0x0 - beq _020BD500 - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x4c - bl FUN_020BD188 - b _020BD514 -_020BD500: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x4c - bl FUN_020BD2F8 -_020BD514: - add r4, r4, #0x8 - b _020BD524 -_020BD51C: - ldr r0, [r4], #0x4 - str r0, [r7, #0x4c] -_020BD524: - ands r0, r5, #0x10 - bne _020BD568 - cmp r6, #0x0 - beq _020BD54C - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x50 - bl FUN_020BD188 - b _020BD560 -_020BD54C: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x50 - bl FUN_020BD2F8 -_020BD560: - add r4, r4, #0x8 - b _020BD570 -_020BD568: - ldr r0, [r4], #0x4 - str r0, [r7, #0x50] -_020BD570: - ands r0, r5, #0x20 - bne _020BD5B4 - cmp r6, #0x0 - beq _020BD598 - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x54 - bl FUN_020BD188 - b _020BD5AC -_020BD598: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x54 - bl FUN_020BD2F8 -_020BD5AC: - add r4, r4, #0x8 - b _020BD5DC -_020BD5B4: - ldr r0, [r4], #0x4 - str r0, [r7, #0x54] - b _020BD5DC -_020BD5C0: - ands r0, r5, #0x2 - ldrne r0, [r7, #0x0] - orrne r0, r0, #0x4 - strne r0, [r7, #0x0] - bne _020BD5DC - mov r0, r7 - bl FUN_020BDA08 -_020BD5DC: - ands r0, r5, #0xc0 - bne _020BD6A8 - ands r0, r5, #0x100 - bne _020BD628 - cmp r6, #0x0 - beq _020BD60C - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x28 - bl FUN_020BC698 - b _020BD620 -_020BD60C: - mov r1, r8 - mov r2, r4 - mov r3, r9 - add r0, r7, #0x28 - bl FUN_020BC9D4 -_020BD620: - add r4, r4, #0x8 - b _020BD6C4 -_020BD628: - ldr r1, [r9, #0xc] - ldr r2, [r9, #0x10] - ldr r3, [r4, #0x0] - add r0, r7, #0x28 - add r1, r9, r1 - add r2, r9, r2 - bl FUN_020BC500 - cmp r0, #0x0 - beq _020BD6A0 - ldr r12, [r7, #0x3c] - ldr r0, [r7, #0x2c] - ldr r3, [r7, #0x28] - ldr r11, [r7, #0x38] - ldr r1, [r7, #0x30] - ldr r2, [r7, #0x34] - mul r10, r0, r12 - mul lr, r1, r11 - sub r10, r10, lr - mov r10, r10, asr #0xc - mul lr, r1, r2 - mul r1, r3, r12 - sub r1, lr, r1 - mul r11, r3, r11 - mul r2, r0, r2 - sub r0, r11, r2 - str r10, [r7, #0x40] - mov r1, r1, asr #0xc - str r1, [r7, #0x44] - mov r0, r0, asr #0xc - str r0, [r7, #0x48] -_020BD6A0: - add r4, r4, #0x4 - b _020BD6C4 -_020BD6A8: - ands r0, r5, #0x40 - ldrne r0, [r7, #0x0] - orrne r0, r0, #0x2 - strne r0, [r7, #0x0] - bne _020BD6C4 - mov r0, r7 - bl FUN_020BD850 -_020BD6C4: - ands r0, r5, #0x600 - bne _020BD7F0 - ands r0, r5, #0x800 - bne _020BD71C - cmp r6, #0x0 - beq _020BD6F4 - add r0, sp, #0x0 - mov r1, r8 - mov r2, r4 - mov r3, r9 - bl FUN_020BCDC4 - b _020BD708 -_020BD6F4: - add r0, sp, #0x0 - mov r1, r8 - mov r2, r4 - mov r3, r9 - bl FUN_020BCF70 -_020BD708: - ldr r1, [sp, #0x0] - ldr r0, [sp, #0x4] - str r1, [sp, #0x18] - str r0, [sp, #0x24] - b _020BD72C -_020BD71C: - ldr r0, [r4, #0x0] - str r0, [sp, #0x18] - ldr r0, [r4, #0x4] - str r0, [sp, #0x24] -_020BD72C: - ands r0, r5, #0x1000 - bne _020BD77C - cmp r6, #0x0 - beq _020BD754 - add r0, sp, #0x8 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x8 - bl FUN_020BCDC4 - b _020BD768 -_020BD754: - add r0, sp, #0x8 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x8 - bl FUN_020BCF70 -_020BD768: - ldr r1, [sp, #0x8] - ldr r0, [sp, #0xc] - str r1, [sp, #0x1c] - str r0, [sp, #0x28] - b _020BD78C -_020BD77C: - ldr r0, [r4, #0x8] - str r0, [sp, #0x1c] - ldr r0, [r4, #0xc] - str r0, [sp, #0x28] -_020BD78C: - ands r0, r5, #0x2000 - bne _020BD7DC - cmp r6, #0x0 - beq _020BD7B4 - add r0, sp, #0x10 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x10 - bl FUN_020BCDC4 - b _020BD7C8 -_020BD7B4: - add r0, sp, #0x10 - mov r1, r8 - mov r3, r9 - add r2, r4, #0x10 - bl FUN_020BCF70 -_020BD7C8: - ldr r1, [sp, #0x10] - ldr r0, [sp, #0x14] - str r1, [sp, #0x20] - str r0, [sp, #0x2c] - b _020BD814 -_020BD7DC: - ldr r0, [r4, #0x10] - str r0, [sp, #0x20] - ldr r0, [r4, #0x14] - str r0, [sp, #0x2c] - b _020BD814 -_020BD7F0: - ands r0, r5, #0x200 - ldrne r0, [r7, #0x0] - orrne r0, r0, #0x1 - strne r0, [r7, #0x0] - bne _020BD814 - mov r0, r7 - bl FUN_020BD9A4 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} -_020BD814: - ldr r0, [r7, #0x0] - add r1, sp, #0x18 - ands r0, r0, #0x1 - ldr r0, _020BD84C ; =UNK_021CEF7C - movne r3, #0x4 - ldr r4, [r0, #0x0] - moveq r3, #0x0 - ldr r2, [r4, #0x0] - ldr r4, [r4, #0xe8] - mov r0, r7 - blx r4 - add sp, sp, #0x34 - ldmia sp!, {r4-r11,pc} - .balign 4 -_020BD848: .word 0x00000FFF -_020BD84C: .word UNK_021CEF7C - arm_func_end FUN_020BD470 - - arm_func_start FUN_020BD850 -FUN_020BD850: ; 0x020BD850 - stmdb sp!, {r4-r8,lr} - ldr r1, _020BD990 ; =UNK_021CEF7C - mov r8, r0 - ldr r0, [r1, #0x0] - ldr r3, [r0, #0xd4] - ldr r0, [r0, #0x0] - ldrh r2, [r3, #0x6] - ldrb r0, [r0, #0x1] - ldrh r1, [r3, r2] - add r2, r3, r2 - mla r0, r1, r0, r2 - ldr r0, [r0, #0x4] - ldrh r2, [r3, r0] - add r4, r3, r0 - add r1, r4, #0x4 - ands r0, r2, #0x1 - addeq r1, r1, #0xc - ands r0, r2, #0x2 - bne _020BD980 - ands r0, r2, #0x8 - beq _020BD934 - and r2, r2, #0xf0 - add r0, r8, #0x28 - mov r5, r2, asr #0x4 - ldrsh r7, [r1, #0x0] - ldrsh r6, [r1, #0x2] - bl MI_Zero36B - ldrh r0, [r4, #0x0] - add r1, r8, r5, lsl #0x2 - ands r0, r0, #0x100 - movne r0, #0x1000 - rsbne r2, r0, #0x0 - moveq r2, #0x1000 - ldr r0, _020BD994 ; =UNK_020FFA14 - str r2, [r1, #0x28] - ldrb r1, [r0, r5, lsl #0x2] - ldr r0, _020BD998 ; =UNK_020FFA14 + 1 - add r1, r8, r1, lsl #0x2 - str r7, [r1, #0x28] - ldrb r0, [r0, r5, lsl #0x2] - add r0, r8, r0, lsl #0x2 - str r6, [r0, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x200 - ldr r0, _020BD99C ; =UNK_020FFA14 + 2 - rsbne r6, r6, #0x0 - ldrb r0, [r0, r5, lsl #0x2] - add r0, r8, r0, lsl #0x2 - str r6, [r0, #0x28] - ldrh r0, [r4, #0x0] - ands r0, r0, #0x400 - ldr r0, _020BD9A0 ; =UNK_020FFA14 + 3 - rsbne r7, r7, #0x0 - ldrb r0, [r0, r5, lsl #0x2] - add r0, r8, r0, lsl #0x2 - str r7, [r0, #0x28] - ldmia sp!, {r4-r8,pc} -_020BD934: - ldrsh r0, [r4, #0x2] - str r0, [r8, #0x28] - ldrsh r0, [r1, #0x0] - str r0, [r8, #0x2c] - ldrsh r0, [r1, #0x2] - str r0, [r8, #0x30] - ldrsh r0, [r1, #0x4] - str r0, [r8, #0x34] - ldrsh r0, [r1, #0x6] - str r0, [r8, #0x38] - ldrsh r0, [r1, #0x8] - str r0, [r8, #0x3c] - ldrsh r0, [r1, #0xa] - str r0, [r8, #0x40] - ldrsh r0, [r1, #0xc] - str r0, [r8, #0x44] - ldrsh r0, [r1, #0xe] - str r0, [r8, #0x48] - ldmia sp!, {r4-r8,pc} -_020BD980: - ldr r0, [r8, #0x0] - orr r0, r0, #0x2 - str r0, [r8, #0x0] - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BD990: .word UNK_021CEF7C -_020BD994: .word UNK_020FFA14 -_020BD998: .word UNK_020FFA14 + 1 -_020BD99C: .word UNK_020FFA14 + 2 -_020BD9A0: .word UNK_020FFA14 + 3 - arm_func_end FUN_020BD850 - - arm_func_start FUN_020BD9A4 -FUN_020BD9A4: ; 0x020BD9A4 - stmdb sp!, {r4,lr} - ldr r1, _020BDA04 ; =UNK_021CEF7C - ldr r12, [r1, #0x0] - ldr r4, [r12, #0xd4] - ldr r2, [r12, #0x0] - ldrh lr, [r4, #0x6] - ldrb r1, [r2, #0x1] - ldrh r3, [r4, lr] - add lr, r4, lr - mla r1, r3, r1, lr - ldr r1, [r1, #0x4] - ldrh r3, [r4, r1] - add r1, r4, r1 - add r1, r1, #0x4 - ands lr, r3, #0x1 - addeq r1, r1, #0xc - ands lr, r3, #0x2 - bne _020BD9F8 - ands lr, r3, #0x8 - addne r1, r1, #0x4 - addeq r1, r1, #0x10 -_020BD9F8: - ldr r12, [r12, #0xe8] - blx r12 - ldmia sp!, {r4,pc} - .balign 4 -_020BDA04: .word UNK_021CEF7C - arm_func_end FUN_020BD9A4 - - arm_func_start FUN_020BDA08 -FUN_020BDA08: ; 0x020BDA08 - ldr r1, _020BDA6C ; =UNK_021CEF7C - ldr r1, [r1, #0x0] - ldr r12, [r1, #0xd4] - ldr r1, [r1, #0x0] - ldrh r3, [r12, #0x6] - ldrb r1, [r1, #0x1] - ldrh r2, [r12, r3] - add r3, r12, r3 - mla r1, r2, r1, r3 - ldr r2, [r1, #0x4] - ldrh r1, [r12, r2] - add r2, r12, r2 - ands r1, r1, #0x1 - ldrne r1, [r0, #0x0] - orrne r1, r1, #0x4 - strne r1, [r0, #0x0] - bxne lr - ldr r1, [r2, #0x4] - add r2, r2, #0x4 - str r1, [r0, #0x4c] - ldr r1, [r2, #0x4] - str r1, [r0, #0x50] - ldr r1, [r2, #0x8] - str r1, [r0, #0x54] - bx lr - .balign 4 -_020BDA6C: .word UNK_021CEF7C - arm_func_end FUN_020BDA08 - - arm_func_start FUN_020BDA70 -FUN_020BDA70: ; 0x020BDA70 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r3, r0 - ldr r0, [r1, #0x8] - ldr r12, [r1, #0x0] - ldrh r1, [r0, #0x4] - mov r1, r1, lsl #0xc - cmp r12, r1 - subge r12, r1, #0x1 - bge _020BDAA0 - cmp r12, #0x0 - movlt r12, #0x0 -_020BDAA0: - mov r1, r2 - mov r2, r12 - bl FUN_020BD470 - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end FUN_020BDA70 - - arm_func_start FUN_020BDAB4 -FUN_020BDAB4: ; 0x020BDAB4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - mov r4, r1 - ldr r0, _020BDB3C ; =UNK_0210659C - str r4, [r5, #0x8] - ldr r0, [r0, #0x0] - add r1, r5, #0x1a - str r0, [r5, #0xc] - ldrb r2, [r2, #0x17] - mov r0, #0x0 - strb r2, [r5, #0x19] - ldrb r2, [r5, #0x19] - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrh r0, [r4, #0x6] - add r2, r4, #0x14 - mov r3, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r5,pc} -_020BDB08: - mov r0, r3, lsl #0x1 - ldrh r1, [r2, r0] - add r0, r5, r3, lsl #0x1 - add r3, r3, #0x1 - ldr r1, [r4, r1] - mov r1, r1, lsr #0x18 - orr r1, r1, #0x100 - strh r1, [r0, #0x1a] - ldrh r0, [r4, #0x6] - cmp r3, r0 - blo _020BDB08 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BDB3C: .word UNK_0210659C - arm_func_end FUN_020BDAB4 - - arm_func_start FUN_020BDB40 -FUN_020BDB40: ; 0x020BDB40 - stmdb sp!, {r4-r8,lr} - ldr r7, [r1, #0x8] - mov r2, r2, lsl #0x10 - ldrh r4, [r7, #0xe] - add r5, r7, #0x8 - ldr r6, [r1, #0x0] - ldrh r3, [r5, r4] - mov r1, r2, lsr #0x10 - add r2, r5, r4 - mul r4, r3, r1 - add r3, r2, #0x4 - mov r6, r6, asr #0xc - mov r8, r0 - ldr r1, [r3, r4] - mov r0, r7 - mov r2, r6 - add r5, r3, r4 - bl FUN_020BDDAC - mov r4, r0 - ldr r1, [r5, #0x4] - mov r0, r7 - mov r2, r6 - bl FUN_020BDDAC - ldr r1, [r8, #0x4] - mov r2, r6 - and r1, r1, #0x8000 - orr r1, r1, r4 - orr r0, r1, r0, lsl #0x10 - str r0, [r8, #0x4] - mov r0, r7 - ldr r1, [r5, #0xc] - bl FUN_020BDDAC - mov r4, r0 - mov r0, r7 - ldr r1, [r5, #0x8] - mov r2, r6 - bl FUN_020BDDAC - mov r2, r6 - ldr r1, [r8, #0x8] - and r1, r1, #0x8000 - orr r0, r1, r0 - orr r0, r0, r4, lsl #0x10 - str r0, [r8, #0x8] - mov r0, r7 - ldr r1, [r5, #0x10] - bl FUN_020BDCB8 - ldr r1, [r8, #0xc] - bic r1, r1, #0x1f0000 - orr r0, r1, r0, lsl #0x10 - str r0, [r8, #0xc] - ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020BDB40 - - arm_func_start FUN_020BDC0C -FUN_020BDC0C: ; 0x020BDC0C - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r3, _020BDCB4 ; =UNK_021065A8 - ldr r4, [r2, #0x8] - ldr r3, [r3, #0x0] - mov r9, r0 - str r3, [r9, #0xc] - ldrb r0, [r2, #0x18] - mov r8, r1 - add r4, r2, r4 - strb r0, [r9, #0x19] - ldrb r2, [r9, #0x19] - add r1, r9, #0x1a - mov r0, #0x0 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrb r0, [r8, #0x9] - mov r7, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r6, r7 - add r5, r8, #0x8 - add r4, r4, #0x4 -_020BDC6C: - ldrh r1, [r8, #0xe] - mov r0, r4 - add r2, r5, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC14C - cmp r0, #0x0 - orrge r1, r7, #0x100 - addge r0, r9, r0, lsl #0x1 - strgeh r1, [r0, #0x1a] - ldrb r0, [r8, #0x9] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020BDC6C - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BDCB4: .word UNK_021065A8 - arm_func_end FUN_020BDC0C - - arm_func_start FUN_020BDCB8 -FUN_020BDCB8: ; 0x020BDCB8 - ands r3, r1, #0x20000000 - movne r0, r1, lsl #0x10 - movne r0, r0, lsr #0x10 - bxne lr - ldr r3, _020BDDA4 ; =0x0000FFFF - ands r12, r1, #0xc0000000 - and r3, r1, r3 - add r0, r0, r3 - ldreqb r0, [r0, r2] - bxeq lr - ldr r3, _020BDDA8 ; =0x1FFF0000 - ands r12, r1, #0x40000000 - and r1, r1, r3 - mov r3, r1, lsr #0x10 - beq _020BDD30 - ands r1, r2, #0x1 - beq _020BDD28 - cmp r2, r3 - addhi r0, r0, r3, lsr #0x1 - ldrhib r0, [r0, #0x1] - bxhi lr - add r1, r0, r2, lsr #0x1 - ldrb r2, [r0, r2, lsr #0x1] - ldrb r0, [r1, #0x1] - add r0, r2, r0 - mov r0, r0, lsl #0xf - mov r0, r0, lsr #0x10 - bx lr -_020BDD28: - ldrb r0, [r0, r2, lsr #0x1] - bx lr -_020BDD30: - ands r1, r2, #0x3 - beq _020BDD9C - cmp r2, r3 - addhi r0, r0, r3, lsr #0x2 - ldrhib r0, [r1, r0] - bxhi lr - ands r1, r2, #0x1 - beq _020BDD80 - ands r1, r2, #0x2 - movne r1, r2, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r2, lsr #0x2 - addeq r1, r2, #0x1 - ldrb r2, [r0, r2] - ldrb r1, [r0, r1] - mov r0, #0x3 - mla r0, r2, r0, r1 - mov r0, r0, lsl #0xe - mov r0, r0, lsr #0x10 - bx lr -_020BDD80: - add r1, r0, r2, lsr #0x2 - ldrb r2, [r0, r2, lsr #0x2] - ldrb r0, [r1, #0x1] - add r0, r2, r0 - mov r0, r0, lsl #0xf - mov r0, r0, lsr #0x10 - bx lr -_020BDD9C: - ldrb r0, [r0, r2, lsr #0x2] - bx lr - .balign 4 -_020BDDA4: .word 0x0000FFFF -_020BDDA8: .word 0x1FFF0000 - arm_func_end FUN_020BDCB8 - - arm_func_start FUN_020BDDAC -FUN_020BDDAC: ; 0x020BDDAC - stmdb sp!, {lr} - sub sp, sp, #0x4 - ands r3, r1, #0x20000000 - movne r0, r1, lsl #0x10 - addne sp, sp, #0x4 - movne r0, r0, lsr #0x10 - ldmneia sp!, {pc} - ldr r3, _020BDF2C ; =0x0000FFFF - ands r12, r1, #0xc0000000 - and r3, r1, r3 - add r0, r0, r3 - moveq r1, r2, lsl #0x1 - addeq sp, sp, #0x4 - ldreqh r0, [r0, r1] - ldmeqia sp!, {pc} - ldr r3, _020BDF30 ; =0x1FFF0000 - ands r12, r1, #0x40000000 - and r1, r1, r3 - mov r3, r1, lsr #0x10 - beq _020BDE34 - ands r1, r2, #0x1 - beq _020BDE24 - cmp r2, r3 - bichi r1, r3, #0x1 - addhi r0, r0, r1 - addhi sp, sp, #0x4 - ldrhih r0, [r0, #0x2] - ldmhiia sp!, {pc} - mov r1, r2, lsr #0x1 - b _020BDEE0 -_020BDE24: - bic r1, r2, #0x1 - add sp, sp, #0x4 - ldrh r0, [r0, r1] - ldmia sp!, {pc} -_020BDE34: - ands r1, r2, #0x3 - beq _020BDECC - cmp r2, r3 - movhi r2, r3, lsr #0x2 - movhi r1, r1, lsl #0x1 - addhi r0, r0, r2, lsl #0x1 - addhi sp, sp, #0x4 - ldrhih r0, [r1, r0] - ldmhiia sp!, {pc} - ands r1, r2, #0x1 - beq _020BDEC4 - ands r1, r2, #0x2 - movne r1, r2, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r2, lsr #0x2 - addeq r1, r2, #0x1 - mov r2, r2, lsl #0x1 - mov r1, r1, lsl #0x1 - ldrh r12, [r0, r2] - ldrh lr, [r0, r1] - ldr r0, _020BDF34 ; =0x00007C1F - and r3, r12, #0x3e0 - and r2, lr, #0x3e0 - mov r1, #0x3 - mla r2, r3, r1, r2 - and r12, r12, r0 - and r3, lr, r0 - mla r1, r12, r1, r3 - mov r2, r2, lsr #0x2 - and r1, r0, r1, lsr #0x2 - and r0, r2, #0x3e0 - orr r0, r1, r0 - mov r0, r0, lsl #0x10 - add sp, sp, #0x4 - mov r0, r0, lsr #0x10 - ldmia sp!, {pc} -_020BDEC4: - mov r1, r2, lsr #0x2 - b _020BDEE0 -_020BDECC: - mov r1, r2, lsr #0x2 - mov r1, r1, lsl #0x1 - add sp, sp, #0x4 - ldrh r0, [r0, r1] - ldmia sp!, {pc} -_020BDEE0: - mov r2, r1, lsl #0x1 - add r1, r0, r1, lsl #0x1 - ldrh r3, [r0, r2] - ldrh r12, [r1, #0x2] - ldr r0, _020BDF34 ; =0x00007C1F - and r2, r3, #0x3e0 - and r1, r12, #0x3e0 - add r1, r2, r1 - mov r1, r1, lsr #0x1 - and r3, r3, r0 - and r2, r12, r0 - add r2, r3, r2 - and r2, r0, r2, lsr #0x1 - and r0, r1, #0x3e0 - orr r0, r2, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x4 - ldmia sp!, {pc} - .balign 4 -_020BDF2C: .word 0x0000FFFF -_020BDF30: .word 0x1FFF0000 -_020BDF34: .word 0x00007C1F - arm_func_end FUN_020BDDAC - - arm_func_start FUN_020BDF38 -FUN_020BDF38: ; 0x020BDF38 - stmdb sp!, {r4,lr} - ldr r12, [r1, #0x0] - mov r4, r0 - mov r2, r2, lsl #0x10 - ldr r0, [r1, #0x8] - mov r1, r2, lsr #0x10 - mov r3, r4 - mov r2, r12, asr #0xc - bl FUN_020BE030 - ldr r0, [r4, #0x10] - bic r0, r0, #0xc0000000 - str r0, [r4, #0x10] - ldr r0, [r4, #0x10] - orr r0, r0, #0x40000000 - str r0, [r4, #0x10] - ldr r0, [r4, #0x0] - orr r0, r0, #0x8 - str r0, [r4, #0x0] - ldmia sp!, {r4,pc} - arm_func_end FUN_020BDF38 - - arm_func_start FUN_020BDF84 -FUN_020BDF84: ; 0x020BDF84 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r3, _020BE02C ; =UNK_021065A0 - ldr r4, [r2, #0x8] - ldr r3, [r3, #0x0] - mov r9, r0 - str r3, [r9, #0xc] - ldrb r0, [r2, #0x18] - mov r8, r1 - add r4, r2, r4 - strb r0, [r9, #0x19] - ldrb r2, [r9, #0x19] - add r1, r9, #0x1a - mov r0, #0x0 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrb r0, [r8, #0x9] - mov r7, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r6, r7 - add r5, r8, #0x8 - add r4, r4, #0x4 -_020BDFE4: - ldrh r1, [r8, #0xe] - mov r0, r4 - add r2, r5, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC14C - cmp r0, #0x0 - orrge r1, r7, #0x100 - addge r0, r9, r0, lsl #0x1 - strgeh r1, [r0, #0x1a] - ldrb r0, [r8, #0x9] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020BDFE4 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BE02C: .word UNK_021065A0 - arm_func_end FUN_020BDF84 - - arm_func_start FUN_020BE030 -FUN_020BE030: ; 0x020BE030 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - mov r8, r0 - ldrh r4, [r8, #0xe] - add r5, r8, #0x8 - mov r6, r3 - ldrh r3, [r5, r4] - add r4, r5, r4 - add r4, r4, #0x4 - mla r5, r3, r1, r4 - mov r7, r2 - ldr r1, [r5, #0x18] - ldr r2, [r5, #0x1c] - mov r3, r7 - ldr r4, [r6, #0x0] - bl FUN_020BE238 - mov r9, r0 - ldr r1, [r5, #0x20] - mov r0, r8 - ldr r2, [r5, #0x24] - mov r3, r7 - bl FUN_020BE238 - cmp r9, #0x0 - bne _020BE09C - cmp r0, #0x0 - orreq r4, r4, #0x4 - beq _020BE0A8 -_020BE09C: - str r9, [r6, #0x24] - str r0, [r6, #0x28] - bic r4, r4, #0x4 -_020BE0A8: - ldr r1, [r5, #0x10] - ldr r2, [r5, #0x14] - mov r0, r8 - mov r3, r7 - bl FUN_020BE12C - cmp r0, #0x10000000 - strneh r0, [r6, #0x20] - movne r0, r0, lsr #0x10 - strneh r0, [r6, #0x22] - orreq r4, r4, #0x2 - ldr r1, [r5, #0x0] - ldr r2, [r5, #0x4] - mov r0, r8 - mov r3, r7 - bicne r4, r4, #0x2 - bl FUN_020BE238 - mov r9, r0 - ldr r1, [r5, #0x8] - ldr r2, [r5, #0xc] - mov r0, r8 - mov r3, r7 - bl FUN_020BE238 - cmp r9, #0x1000 - bne _020BE114 - cmp r0, #0x1000 - orreq r4, r4, #0x1 - beq _020BE120 -_020BE114: - str r9, [r6, #0x18] - str r0, [r6, #0x1c] - bic r4, r4, #0x1 -_020BE120: - str r4, [r6, #0x0] - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - arm_func_end FUN_020BE030 - - arm_func_start FUN_020BE12C -FUN_020BE12C: ; 0x020BE12C - ands r12, r1, #0x20000000 - movne r0, r2 - bxne lr - add r0, r0, r2 - ands r2, r1, #0xc0000000 - beq _020BE1F8 - ldr r2, _020BE234 ; =0x0000FFFF - ands r12, r1, #0x40000000 - and r2, r1, r2 - beq _020BE17C - ands r1, r3, #0x1 - beq _020BE174 - cmp r3, r2 - movhi r1, r2, lsr #0x1 - addhi r3, r1, #0x1 - bhi _020BE1F8 - mov r2, r3, lsr #0x1 - b _020BE200 -_020BE174: - mov r3, r3, lsr #0x1 - b _020BE1F8 -_020BE17C: - ands r1, r3, #0x3 - beq _020BE1F4 - cmp r3, r2 - addhi r3, r1, r2, lsr #0x2 - bhi _020BE1F8 - ands r1, r3, #0x1 - beq _020BE1EC - ands r1, r3, #0x2 - movne r1, r3, lsr #0x2 - addne r2, r1, #0x1 - moveq r2, r3, lsr #0x2 - addeq r1, r2, #0x1 - mov r12, r2, lsl #0x2 - add r3, r0, r2, lsl #0x2 - mov r2, r1, lsl #0x2 - add r1, r0, r1, lsl #0x2 - ldrsh r12, [r0, r12] - ldrsh r2, [r0, r2] - mov r0, #0x3 - ldrsh r3, [r3, #0x2] - ldrsh r1, [r1, #0x2] - mla r2, r12, r0, r2 - mla r1, r3, r0, r1 - ldr r0, _020BE234 ; =0x0000FFFF - mov r1, r1, asr #0x2 - and r0, r0, r2, asr #0x2 - orr r0, r0, r1, lsl #0x10 - bx lr -_020BE1EC: - mov r2, r3, lsr #0x2 - b _020BE200 -_020BE1F4: - mov r3, r3, lsr #0x2 -_020BE1F8: - ldr r0, [r0, r3, lsl #0x2] - bx lr -_020BE200: - add r1, r0, r2, lsl #0x2 - mov r2, r2, lsl #0x2 - ldrsh r12, [r0, r2] - ldrsh r3, [r1, #0x4] - ldrsh r2, [r1, #0x2] - ldrsh r1, [r1, #0x6] - ldr r0, _020BE234 ; =0x0000FFFF - add r3, r12, r3 - add r1, r2, r1 - and r2, r0, r3, asr #0x1 - mov r0, r1, asr #0x1 - orr r0, r2, r0, lsl #0x10 - bx lr - .balign 4 -_020BE234: .word 0x0000FFFF - arm_func_end FUN_020BE12C - - arm_func_start FUN_020BE238 -FUN_020BE238: ; 0x020BE238 - ands r12, r1, #0x20000000 - movne r0, r2 - bxne lr - add r0, r0, r2 - ands r2, r1, #0xc0000000 - beq _020BE2F0 - ldr r2, _020BE330 ; =0x0000FFFF - ands r12, r1, #0x40000000 - and r12, r1, r2 - beq _020BE288 - ands r2, r3, #0x1 - beq _020BE280 - cmp r3, r12 - movhi r2, r12, lsr #0x1 - addhi r3, r2, #0x1 - bhi _020BE2F0 - mov r3, r3, lsr #0x1 - b _020BE304 -_020BE280: - mov r3, r3, lsr #0x1 - b _020BE2F0 -_020BE288: - ands r2, r3, #0x3 - beq _020BE2EC - cmp r3, r12 - addhi r3, r2, r12, lsr #0x2 - bhi _020BE2F0 - ands r2, r3, #0x1 - beq _020BE2E4 - ands r2, r3, #0x2 - movne r3, r3, lsr #0x2 - addne r2, r3, #0x1 - moveq r2, r3, lsr #0x2 - addeq r3, r2, #0x1 - ands r1, r1, #0x10000000 - movne r2, r2, lsl #0x1 - movne r1, r3, lsl #0x1 - ldrnesh r2, [r0, r2] - ldrnesh r1, [r0, r1] - ldreq r2, [r0, r2, lsl #0x2] - ldreq r1, [r0, r3, lsl #0x2] - mov r0, #0x3 - mla r0, r2, r0, r1 - mov r0, r0, asr #0x2 - bx lr -_020BE2E4: - mov r3, r3, lsr #0x2 - b _020BE304 -_020BE2EC: - mov r3, r3, lsr #0x2 -_020BE2F0: - ands r1, r1, #0x10000000 - movne r1, r3, lsl #0x1 - ldrnesh r0, [r0, r1] - ldreq r0, [r0, r3, lsl #0x2] - bx lr -_020BE304: - ands r1, r1, #0x10000000 - movne r2, r3, lsl #0x1 - addne r1, r0, r3, lsl #0x1 - ldrnesh r2, [r0, r2] - ldrnesh r0, [r1, #0x2] - addeq r1, r0, r3, lsl #0x2 - ldreq r2, [r0, r3, lsl #0x2] - ldreq r0, [r1, #0x4] - add r0, r2, r0 - mov r0, r0, asr #0x1 - bx lr - .balign 4 -_020BE330: .word 0x0000FFFF - arm_func_end FUN_020BE238 - - arm_func_start FUN_020BE334 -FUN_020BE334: ; 0x020BE334 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r6, r1 - ldr r3, [r6, #0x0] - ldr r5, [r6, #0x8] - mov r1, r2, lsl #0x10 - mov r2, r3, lsl #0x4 - mov r7, r0 - mov r0, r5 - mov r1, r1, lsr #0x10 - mov r2, r2, lsr #0x10 - bl FUN_020BC42C - mov r4, r0 - ldrb r1, [r4, #0x2] - mov r0, r5 - bl FUN_020BC4B8 - mov r1, r0 - ldr r0, [r6, #0x14] - mov r2, r7 - bl FUN_020BE408 - ldrb r1, [r4, #0x3] - cmp r1, #0xff - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,pc} - mov r0, r5 - bl FUN_020BC4A8 - mov r1, r0 - ldr r0, [r6, #0x14] - mov r2, r7 - bl FUN_020BE3B4 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BE334 - - arm_func_start FUN_020BE3B4 -FUN_020BE3B4: ; 0x020BE3B4 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldrh r0, [r5, #0x34] - mov r4, r2 - add r0, r5, r0 - bl FUN_020BC2A0 - ldr r1, [r5, #0x2c] - ldrh r2, [r0, #0x2] - mov r1, r1, lsl #0x10 - mov r3, r1, lsr #0x10 - ands r1, r2, #0x1 - ldrh r0, [r0, #0x0] - moveq r1, r3, lsl #0xf - moveq r3, r1, lsr #0x10 - moveq r0, r0, lsl #0xf - moveq r0, r0, lsr #0x10 - add r0, r0, r3 - str r0, [r4, #0x14] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020BE3B4 - - arm_func_start FUN_020BE408 -FUN_020BE408: ; 0x020BE408 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - add r0, r5, #0x3c - mov r4, r2 - bl FUN_020BC2A0 - ldr r1, [r0, #0x0] - ldr r3, [r4, #0x10] - and r1, r1, #0x1c000000 - cmp r1, #0x14000000 - ldrne r2, [r5, #0x8] - ldrne r1, _020BE4E0 ; =0x0000FFFF - andne r5, r2, r1 - ldreq r2, [r5, #0x18] - ldreq r1, _020BE4E0 ; =0x0000FFFF - andeq r5, r2, r1 - ldr r1, _020BE4E4 ; =0xC00F0000 - ldr r2, _020BE4E8 ; =0x000007FF - and r1, r3, r1 - str r1, [r4, #0x10] - ldr r1, [r0, #0x0] - ldr r3, [r4, #0x10] - add r1, r1, r5 - orr r1, r3, r1 - str r1, [r4, #0x10] - ldr r3, [r0, #0x4] - ldr r1, _020BE4EC ; =0x003FF800 - and r3, r3, r2 - strh r3, [r4, #0x2c] - ldr r3, [r0, #0x4] - and r1, r3, r1 - mov r1, r1, lsr #0xb - strh r1, [r4, #0x2e] - ldr r3, [r0, #0x4] - ldrh r1, [r4, #0x2c] - and r0, r3, r2 - and r5, r2, r3, lsr #0xb - cmp r0, r1 - moveq r0, #0x1000 - beq _020BE4B4 - mov r0, r0, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020BE4B4: - str r0, [r4, #0x30] - ldrh r1, [r4, #0x2e] - cmp r5, r1 - moveq r0, #0x1000 - beq _020BE4D4 - mov r0, r5, lsl #0xc - mov r1, r1, lsl #0xc - bl FX_Div -_020BE4D4: - str r0, [r4, #0x34] - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - .balign 4 -_020BE4E0: .word 0x0000FFFF -_020BE4E4: .word 0xC00F0000 -_020BE4E8: .word 0x000007FF -_020BE4EC: .word 0x003FF800 - arm_func_end FUN_020BE408 - - arm_func_start FUN_020BE4F0 -FUN_020BE4F0: ; 0x020BE4F0 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x4 - ldr r3, _020BE59C ; =UNK_021065A4 - ldr r4, [r2, #0x8] - ldr r3, [r3, #0x0] - mov r9, r0 - str r3, [r9, #0xc] - ldrb r0, [r2, #0x18] - mov r8, r1 - add r4, r2, r4 - strb r0, [r9, #0x19] - str r8, [r9, #0x8] - ldrb r2, [r9, #0x19] - add r1, r9, #0x1a - mov r0, #0x0 - mov r2, r2, lsl #0x1 - bl MIi_CpuClear16 - ldrb r0, [r8, #0xd] - mov r7, #0x0 - cmp r0, #0x0 - addls sp, sp, #0x4 - ldmlsia sp!, {r4-r9,pc} - mov r6, r7 - add r5, r8, #0xc - add r4, r4, #0x4 -_020BE554: - ldrh r1, [r8, #0x12] - mov r0, r4 - add r2, r5, r1 - ldrh r1, [r2, #0x2] - add r1, r2, r1 - add r1, r1, r6 - bl FUN_020BC14C - cmp r0, #0x0 - orrge r1, r7, #0x100 - addge r0, r9, r0, lsl #0x1 - strgeh r1, [r0, #0x1a] - ldrb r0, [r8, #0xd] - add r7, r7, #0x1 - add r6, r6, #0x10 - cmp r7, r0 - blo _020BE554 - add sp, sp, #0x4 - ldmia sp!, {r4-r9,pc} - .balign 4 -_020BE59C: .word UNK_021065A4 - arm_func_end FUN_020BE4F0 - - arm_func_start FUN_020BE5A0 -FUN_020BE5A0: ; 0x020BE5A0 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr lr, [r1, #0x8] - ldr r3, [r1, #0x0] - ldrh r1, [lr, #0x6] - mov r12, r3, asr #0xc - mov r3, #0x1 - mla r2, r12, r1, r2 - mov r1, r2, lsr #0x5 - add r1, lr, r1, lsl #0x2 - ldr r1, [r1, #0xc] - and r2, r2, #0x1f - and r1, r1, r3, lsl r2 - str r1, [r0, #0x0] - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end FUN_020BE5A0 - - arm_func_start FUN_020BE5E0 -FUN_020BE5E0: ; 0x020BE5E0 - ldr r3, _020BE628 ; =UNK_02106598 - mov r12, #0x0 - ldr r3, [r3, #0x0] - str r3, [r0, #0xc] - ldrb r2, [r2, #0x17] - strb r2, [r0, #0x19] - str r1, [r0, #0x8] - ldrb r1, [r0, #0x19] - cmp r1, #0x0 - bxls lr -_020BE608: - orr r2, r12, #0x100 - add r1, r0, r12, lsl #0x1 - strh r2, [r1, #0x1a] - ldrb r1, [r0, #0x19] - add r12, r12, #0x1 - cmp r12, r1 - blo _020BE608 - bx lr - .balign 4 -_020BE628: .word UNK_02106598 - arm_func_end FUN_020BE5E0 - - arm_func_start FUN_020BE62C -FUN_020BE62C: ; 0x020BE62C - ands r2, r3, #0x4 - ldrne r1, [r0, #0x0] - orrne r1, r1, #0x1 - strne r1, [r0, #0x0] - bne _020BE658 - ldr r2, [r1, #0x0] - str r2, [r0, #0x4] - ldr r2, [r1, #0x4] - str r2, [r0, #0x8] - ldr r1, [r1, #0x8] - str r1, [r0, #0xc] -_020BE658: - ldr r1, [r0, #0x0] - orr r1, r1, #0x18 - str r1, [r0, #0x0] - bx lr - arm_func_end FUN_020BE62C - - arm_func_start FUN_020BE668 -FUN_020BE668: ; 0x020BE668 - stmdb sp!, {r4,lr} - mov r4, r0 - ldr r1, [r4, #0x0] - ands r0, r1, #0x4 - bne _020BE6AC - ands r0, r1, #0x2 - bne _020BE698 - add r1, r4, #0x28 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020BE6C4 -_020BE698: - add r1, r4, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 - b _020BE6C4 -_020BE6AC: - ands r0, r1, #0x2 - bne _020BE6C4 - add r1, r4, #0x28 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 -_020BE6C4: - ldr r0, [r4, #0x0] - ands r0, r0, #0x1 - ldmneia sp!, {r4,pc} - add r1, r4, #0x4 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 - ldmia sp!, {r4,pc} - arm_func_end FUN_020BE668 - - arm_func_start FUN_020BE6E4 -FUN_020BE6E4: ; 0x020BE6E4 - stmdb sp!, {r4,lr} - sub sp, sp, #0x50 - mov r4, r0 - ldr r0, [r4, #0x0] - mov r1, #0x0 - ands r0, r0, #0x8 - ldrne r0, _020BE820 ; =0x00101610 - mov r3, #0x3 - strne r0, [sp, #0x0] - ldreq r0, _020BE824 ; =0x00101810 - mov r2, #0x2 - streq r0, [sp, #0x0] - mov r0, #0x1000 - str r0, [sp, #0x44] - str r3, [sp, #0x4] - str r2, [sp, #0x48] - str r1, [sp, #0x40] - str r1, [sp, #0x34] - str r1, [sp, #0x30] - str r1, [sp, #0x2c] - str r1, [sp, #0x28] - str r1, [sp, #0x24] - str r1, [sp, #0x20] - str r1, [sp, #0x14] - str r1, [sp, #0x10] - ldr r1, [r4, #0x0] - ldr r0, _020BE828 ; =UNK_021067B0 - and r1, r1, #0x7 - ldr r2, [r0, r1, lsl #0x2] - add r0, sp, #0x8 - mov r1, r4 - blx r2 - ldr r3, [r4, #0x30] - cmp r3, #0x1000 - beq _020BE7B4 - ldr r0, [sp, #0x8] - ldr r1, [sp, #0xc] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x8] - ldr r2, [r4, #0x30] - ldr r0, [sp, #0x38] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0xc] - ldr r1, [r4, #0x30] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x38] -_020BE7B4: - ldr r3, [r4, #0x34] - cmp r3, #0x1000 - beq _020BE804 - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x1c] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x18] - ldr r2, [r4, #0x34] - ldr r0, [sp, #0x3c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x1c] - ldr r1, [r4, #0x34] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x3c] -_020BE804: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0x12 - bl FUN_020BB1C0 - add sp, sp, #0x50 - ldmia sp!, {r4,pc} - .balign 4 -_020BE820: .word 0x00101610 -_020BE824: .word 0x00101810 -_020BE828: .word UNK_021067B0 - arm_func_end FUN_020BE6E4 - - arm_func_start FUN_020BE82C -FUN_020BE82C: ; 0x020BE82C - mov r2, #0x1000 - str r2, [r0, #0x0] - mov r1, #0x0 - str r1, [r0, #0x4] - str r1, [r0, #0x10] - str r2, [r0, #0x14] - str r1, [r0, #0x30] - str r1, [r0, #0x34] - bx lr - arm_func_end FUN_020BE82C - - arm_func_start FUN_020BE850 -FUN_020BE850: ; 0x020BE850 - ldr r2, [r1, #0x18] - mov r12, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r12, [r0, #0x4] - str r12, [r0, #0x30] - ldr r2, [r1, #0x1c] - ldrh r3, [r1, #0x2e] - mov r1, r2, lsl #0x1 - rsb r1, r1, #0x0 - add r1, r1, #0x2000 - mul r1, r3, r1 - mov r1, r1, lsl #0x3 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - arm_func_end FUN_020BE850 - - arm_func_start FUN_020BE894 -FUN_020BE894: ; 0x020BE894 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - rsb r2, r2, #0x0 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrsh r1, [r5, #0x20] - ldrsh r0, [r5, #0x22] - ldrh r2, [r5, #0x2c] - add r0, r1, r0 - rsb r0, r0, #0x0 - add r0, r0, #0x1000 - mul r0, r2, r0 - mov r0, r0, lsl #0x3 - str r0, [r6, #0x30] - ldrsh r1, [r5, #0x20] - ldrsh r0, [r5, #0x22] - ldrh r2, [r5, #0x2e] - sub r0, r1, r0 - add r0, r0, #0x1000 - mul r0, r2, r0 - mov r0, r0, lsl #0x3 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BE894 - - arm_func_start FUN_020BE954 -FUN_020BE954: ; 0x020BE954 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r5, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r0, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r6, [r10, #0x0] - str r4, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - rsb r2, r5, #0x0 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - sub r1, r5, r4 - add r0, r7, r6 - ldrh r3, [r9, #0x2c] - ldr r2, [r9, #0x18] - sub r0, r2, r0 - mul r0, r3, r0 - mov r0, r0, lsl #0x3 - str r0, [r10, #0x30] - ldrh r2, [r9, #0x2e] - ldr r0, [r9, #0x1c] - sub r0, r1, r0 - add r0, r0, #0x2000 - mul r0, r2, r0 - mov r0, r0, lsl #0x3 - str r0, [r10, #0x34] - bl FX_GetDivResult - mul r0, r7, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020BE954 - - arm_func_start FUN_020BEA3C -FUN_020BEA3C: ; 0x020BEA3C - mov r2, #0x1000 - str r2, [r0, #0x0] - str r2, [r0, #0x14] - mov r12, #0x0 - str r12, [r0, #0x4] - ldrh r2, [r1, #0x2c] - ldr r3, [r1, #0x24] - mul r2, r3, r2 - rsb r2, r2, #0x0 - mov r2, r2, lsl #0x4 - str r2, [r0, #0x30] - ldrh r2, [r1, #0x2e] - ldr r1, [r1, #0x28] - mul r2, r1, r2 - mov r1, r2, lsl #0x4 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - arm_func_end FUN_020BEA3C - - arm_func_start FUN_020BEA84 -FUN_020BEA84: ; 0x020BEA84 - stmdb sp!, {r4,lr} - ldr r3, [r1, #0x18] - mov r2, #0x0 - str r3, [r0, #0x0] - ldr r3, [r1, #0x1c] - str r3, [r0, #0x14] - str r2, [r0, #0x4] - ldr r4, [r1, #0x18] - ldr r3, [r1, #0x24] - ldrh lr, [r1, #0x2c] - smull r12, r3, r4, r3 - mov r4, r12, lsr #0x8 - orr r4, r4, r3, lsl #0x18 - rsb r3, r4, #0x0 - mul r3, lr, r3 - str r3, [r0, #0x30] - ldr r4, [r1, #0x1c] - ldr r12, [r1, #0x28] - mov r3, r4, lsl #0x1 - smull lr, r12, r4, r12 - rsb r4, r3, #0x0 - mov r3, lr, lsr #0x8 - ldrh lr, [r1, #0x2e] - add r1, r4, #0x2000 - orr r3, r3, r12, lsl #0x18 - mul r4, lr, r1 - mul r1, lr, r3 - add r1, r1, r4, lsl #0x3 - str r1, [r0, #0x34] - str r2, [r0, #0x10] - ldmia sp!, {r4,pc} - arm_func_end FUN_020BEA84 - - arm_func_start FUN_020BEB00 -FUN_020BEB00: ; 0x020BEB00 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - rsb r2, r2, #0x0 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrsh r2, [r5, #0x20] - ldrsh r1, [r5, #0x22] - ldrh r3, [r5, #0x2c] - ldr r0, [r5, #0x24] - add r1, r2, r1 - rsb r1, r1, #0x0 - add r1, r1, #0x1000 - mul r2, r3, r1 - mul r1, r0, r3 - mov r0, r2, lsl #0x3 - sub r0, r0, r1, lsl #0x4 - str r0, [r6, #0x30] - ldrsh r2, [r5, #0x20] - ldrsh r1, [r5, #0x22] - ldrh r3, [r5, #0x2e] - ldr r0, [r5, #0x28] - sub r1, r2, r1 - add r1, r1, #0x1000 - mul r2, r3, r1 - mul r1, r0, r3 - mov r0, r2, lsl #0x3 - add r0, r0, r1, lsl #0x4 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BEB00 - - arm_func_start FUN_020BEBD8 -FUN_020BEBD8: ; 0x020BEBD8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r5, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r0, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r6, [r10, #0x0] - str r4, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - rsb r2, r5, #0x0 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - sub r1, r5, r4 - add r2, r7, r6 - ldr r5, [r9, #0x18] - ldrh r0, [r9, #0x2c] - sub r3, r5, r2 - ldr r2, [r9, #0x24] - mul r4, r0, r3 - smull r3, r2, r5, r2 - mov r4, r4, lsl #0x3 - mov r3, r3, lsr #0x8 - orr r3, r3, r2, lsl #0x18 - mul r2, r0, r3 - sub r0, r4, r2 - str r0, [r10, #0x30] - ldr r4, [r9, #0x1c] - ldrh r3, [r9, #0x2e] - sub r0, r1, r4 - add r0, r0, #0x2000 - mul r2, r3, r0 - ldr r0, [r9, #0x28] - smull r1, r0, r4, r0 - mov r1, r1, lsr #0x8 - orr r1, r1, r0, lsl #0x18 - mul r0, r3, r1 - add r0, r0, r2, lsl #0x3 - str r0, [r10, #0x34] - bl FX_GetDivResult - mul r0, r7, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020BEBD8 - - arm_func_start FUN_020BECEC -FUN_020BECEC: ; 0x020BECEC - stmdb sp!, {r4-r8,lr} - mov r12, r0 - ands r0, r3, #0x4 - ldrb r3, [r2, #0x3] - beq _020BED40 - ldr r1, [r12, #0x0] - ands r0, r3, #0x2 - orr r0, r1, #0x1 - str r0, [r12, #0x0] - beq _020BEDB8 - ldr r0, _020BEE2C ; =UNK_021CEF7C - ldrb r7, [r2, #0x1] - ldr r0, [r0, #0x0] - mov r1, #0x1 - add r6, r0, #0xc4 - mov r5, r7, lsr #0x5 - ldr r4, [r6, r5, lsl #0x2] - and r0, r7, #0x1f - orr r0, r4, r1, lsl r0 - str r0, [r6, r5, lsl #0x2] - b _020BEDB8 -_020BED40: - ldr r4, [r1, #0x0] - ands r0, r3, #0x2 - str r4, [r12, #0x4] - ldr r0, [r1, #0x4] - str r0, [r12, #0x8] - ldr r0, [r1, #0x8] - str r0, [r12, #0xc] - beq _020BEDB8 - ldr lr, _020BEE2C ; =UNK_021CEF7C - ldrb r0, [r2, #0x1] - ldr r4, [lr, #0x0] - mov lr, #0x18 - add r8, r4, #0xc4 - mov r7, r0, lsr #0x5 - and r4, r0, #0x1f - mov r5, #0x1 - mvn r4, r5, lsl r4 - ldr r6, [r8, r7, lsl #0x2] - mul r5, r0, lr - and r0, r6, r4 - str r0, [r8, r7, lsl #0x2] - ldr r4, [r1, #0xc] - ldr r0, _020BEE30 ; =UNK_021CFD8C - ldr lr, _020BEE34 ; =UNK_021CFD90 - str r4, [r0, r5] - ldr r4, [r1, #0x10] - ldr r0, _020BEE38 ; =UNK_021CFD94 - str r4, [lr, r5] - ldr r1, [r1, #0x14] - str r1, [r0, r5] -_020BEDB8: - ands r0, r3, #0x1 - beq _020BEE1C - ldrb r0, [r2, #0x2] - ldr r2, [r12, #0x0] - ldr r1, _020BEE2C ; =UNK_021CEF7C - orr r2, r2, #0x20 - str r2, [r12, #0x0] - ldr r2, [r1, #0x0] - mov r1, r0, lsr #0x5 - add r1, r2, r1, lsl #0x2 - and r2, r0, #0x1f - mov r3, #0x1 - mov r2, r3, lsl r2 - ldr r1, [r1, #0xc4] - ands r1, r2, r1 - ldrne r0, [r12, #0x0] - orrne r0, r0, #0x8 - strne r0, [r12, #0x0] - bne _020BEE1C - ldr r2, _020BEE30 ; =UNK_021CFD8C - mov r1, #0x18 - mla r1, r0, r1, r2 - add r3, r12, #0x10 - ldmia r1, {r0-r2} - stmia r3, {r0-r2} -_020BEE1C: - ldr r0, [r12, #0x0] - orr r0, r0, #0x10 - str r0, [r12, #0x0] - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BEE2C: .word UNK_021CEF7C -_020BEE30: .word UNK_021CFD8C -_020BEE34: .word UNK_021CFD90 -_020BEE38: .word UNK_021CFD94 - arm_func_end FUN_020BECEC - - arm_func_start FUN_020BEE3C -FUN_020BEE3C: ; 0x020BEE3C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - ldr r1, [r5, #0x0] - mov r4, #0x0 - ands r0, r1, #0x4 - moveq r4, #0x1 - ands r0, r1, #0x20 - beq _020BEE94 - ands r0, r1, #0x8 - bne _020BEE94 - cmp r4, #0x0 - beq _020BEE84 - add r1, r5, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 - mov r4, #0x0 -_020BEE84: - add r1, r5, #0x10 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 -_020BEE94: - ldr r0, [r5, #0x0] - ands r0, r0, #0x2 - bne _020BEED0 - cmp r4, #0x0 - beq _020BEEBC - add r1, r5, #0x28 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020BEEE8 -_020BEEBC: - add r1, r5, #0x28 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020BEEE8 -_020BEED0: - cmp r4, #0x0 - beq _020BEEE8 - add r1, r5, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 -_020BEEE8: - ldr r0, [r5, #0x0] - ands r0, r0, #0x1 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r5,pc} - add r1, r5, #0x4 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020BEE3C - - arm_func_start FUN_020BEF10 -FUN_020BEF10: ; 0x020BEF10 - stmdb sp!, {lr} - sub sp, sp, #0x3c - ldr r1, [r0, #0x0] - mov r3, #0x0 - ands r1, r1, #0x8 - ldrne r1, _020BF0CC ; =0x00101710 - mov r2, #0x3 - strne r1, [sp, #0x0] - ldreq r1, _020BF0D0 ; =0x00101910 - str r3, [sp, #0x34] - streq r1, [sp, #0x0] - mov r1, #0x2 - str r1, [sp, #0x38] - str r3, [sp, #0x28] - str r3, [sp, #0x24] - str r3, [sp, #0x20] - str r3, [sp, #0x1c] - str r3, [sp, #0x14] - str r3, [sp, #0x10] - str r3, [sp, #0xc] - str r2, [sp, #0x4] - ldr r2, [r0, #0x0] - ands r1, r2, #0x4 - beq _020BEFA0 - str r3, [sp, #0x2c] - str r3, [sp, #0x30] - ldr r1, [r0, #0x0] - ands r1, r1, #0x1 - movne r1, #0x1000 - strne r1, [sp, #0x8] - strne r1, [sp, #0x18] - ldreq r1, [r0, #0x18] - streq r1, [sp, #0x8] - ldreq r1, [r0, #0x1c] - streq r1, [sp, #0x18] - b _020BF040 -_020BEFA0: - ands r1, r2, #0x1 - beq _020BEFE8 - ldr r2, [r0, #0x24] - ldrh r1, [r0, #0x2c] - mov r2, r2, lsl #0x4 - rsb r2, r2, #0x0 - mul r1, r2, r1 - str r1, [sp, #0x2c] - ldr r2, [r0, #0x28] - ldrh r1, [r0, #0x2e] - mov r2, r2, lsl #0x4 - rsb r2, r2, #0x0 - mul r3, r2, r1 - mov r1, #0x1000 - str r3, [sp, #0x30] - str r1, [sp, #0x8] - str r1, [sp, #0x18] - b _020BF040 -_020BEFE8: - ldr r2, [r0, #0x18] - ldr r1, [r0, #0x24] - ldrh r12, [r0, #0x2c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0x8 - orr r2, r2, r1, lsl #0x18 - rsb r1, r2, #0x0 - mul r1, r12, r1 - str r1, [sp, #0x2c] - ldr r2, [r0, #0x1c] - ldr r1, [r0, #0x28] - ldrh r12, [r0, #0x2e] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0x8 - orr r2, r2, r1, lsl #0x18 - rsb r1, r2, #0x0 - mul r1, r12, r1 - str r1, [sp, #0x30] - ldr r1, [r0, #0x18] - str r1, [sp, #0x8] - ldr r1, [r0, #0x1c] - str r1, [sp, #0x18] -_020BF040: - ldr r12, [r0, #0x30] - cmp r12, #0x1000 - beq _020BF078 - ldr r2, [sp, #0x8] - ldr r1, [sp, #0x2c] - smull r3, r2, r12, r2 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #0x14 - str r3, [sp, #0x8] - ldr r2, [r0, #0x30] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x2c] -_020BF078: - ldr r12, [r0, #0x34] - cmp r12, #0x1000 - beq _020BF0B0 - ldr r2, [sp, #0x18] - ldr r1, [sp, #0x30] - smull r3, r2, r12, r2 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #0x14 - str r3, [sp, #0x18] - ldr r0, [r0, #0x34] - smull r2, r1, r0, r1 - mov r0, r2, lsr #0xc - orr r0, r0, r1, lsl #0x14 - str r0, [sp, #0x30] -_020BF0B0: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0xe - bl FUN_020BB1C0 - add sp, sp, #0x3c - ldmia sp!, {pc} - .balign 4 -_020BF0CC: .word 0x00101710 -_020BF0D0: .word 0x00101910 - arm_func_end FUN_020BEF10 - - arm_func_start FUN_020BF0D4 -FUN_020BF0D4: ; 0x020BF0D4 - stmdb sp!, {r4-r8,lr} - mov r5, r0 - ands r0, r3, #0x4 - ldrb r4, [r2, #0x1] - ldrb r0, [r2, #0x2] - beq _020BF174 - ldr r2, [r5, #0x0] - ldr r1, _020BF2E0 ; =UNK_021CEF7C - orr r2, r2, #0x1 - str r2, [r5, #0x0] - ldr r3, [r1, #0x0] - mov r1, r0, lsr #0x5 - add r1, r3, r1, lsl #0x2 - and r2, r0, #0x1f - mov r6, #0x1 - mov r2, r6, lsl r2 - ldr r1, [r1, #0xc4] - ands r1, r2, r1 - beq _020BF148 - add r3, r3, #0xc4 - mov r2, r4, lsr #0x5 - ldr r1, [r3, r2, lsl #0x2] - and r0, r4, #0x1f - orr r0, r1, r6, lsl r0 - str r0, [r3, r2, lsl #0x2] - ldr r0, [r5, #0x0] - orr r0, r0, #0x18 - str r0, [r5, #0x0] - ldmia sp!, {r4-r8,pc} -_020BF148: - ldr r1, _020BF2E4 ; =UNK_021CFD80 - mov r2, #0x18 - mla r6, r0, r2, r1 - mla r1, r4, r2, r1 - mov r0, r6 - bl MIi_CpuCopy32 - mov r0, r6 - add r1, r5, #0x10 - mov r2, #0x18 - bl MIi_CpuCopy32 - ldmia sp!, {r4-r8,pc} -_020BF174: - ldr r3, [r1, #0x0] - ldr r2, _020BF2E0 ; =UNK_021CEF7C - str r3, [r5, #0x4] - ldr r3, [r1, #0x4] - mov r7, r0, lsr #0x5 - str r3, [r5, #0x8] - ldr r3, [r1, #0x8] - and r8, r0, #0x1f - str r3, [r5, #0xc] - ldr r6, [r2, #0x0] - mov r3, #0x1 - add r2, r6, r7, lsl #0x2 - mov r7, r3, lsl r8 - ldr r2, [r2, #0xc4] - ands r2, r7, r2 - beq _020BF200 - ldr r3, _020BF2E4 ; =UNK_021CFD80 - mov r2, #0x18 - mov r0, r1 - mla r1, r4, r2, r3 - bl MIi_CpuCopy32 - ldr r0, _020BF2E0 ; =UNK_021CEF7C - mov r2, r4, lsr #0x5 - ldr r1, [r0, #0x0] - and r0, r4, #0x1f - add r3, r1, #0xc4 - mov r1, #0x1 - mvn r0, r1, lsl r0 - ldr r1, [r3, r2, lsl #0x2] - and r0, r1, r0 - str r0, [r3, r2, lsl #0x2] - ldr r0, [r5, #0x0] - orr r0, r0, #0x18 - str r0, [r5, #0x0] - ldmia sp!, {r4-r8,pc} -_020BF200: - mov r2, #0x18 - mul r12, r0, r2 - and r7, r4, #0x1f - ldr r0, _020BF2E4 ; =UNK_021CFD80 - add r6, r6, #0xc4 - mov lr, r4, lsr #0x5 - mvn r7, r3, lsl r7 - ldr r8, [r6, lr, lsl #0x2] - mul r3, r4, r2 - and r4, r8, r7 - str r4, [r6, lr, lsl #0x2] - ldr r7, [r1, #0x0] - ldr r4, [r0, r12] - ldr r6, _020BF2E8 ; =UNK_021CFD84 - smull r8, r4, r7, r4 - mov r7, r8, lsr #0xc - orr r7, r7, r4, lsl #0x14 - str r7, [r0, r3] - ldr r8, [r1, #0x4] - ldr r4, [r6, r12] - ldr r7, _020BF2EC ; =UNK_021CFD88 - smull lr, r4, r8, r4 - mov r8, lr, lsr #0xc - orr r8, r8, r4, lsl #0x14 - str r8, [r6, r3] - ldr r8, [r1, #0x8] - ldr r4, [r7, r12] - ldr r6, _020BF2F0 ; =UNK_021CFD8C - smull lr, r4, r8, r4 - mov r8, lr, lsr #0xc - orr r8, r8, r4, lsl #0x14 - str r8, [r7, r3] - ldr r7, [r1, #0xc] - ldr r4, [r6, r12] - ldr lr, _020BF2F4 ; =UNK_021CFD90 - smull r8, r4, r7, r4 - mov r7, r8, lsr #0xc - orr r7, r7, r4, lsl #0x14 - str r7, [r6, r3] - ldr r7, [r1, #0x10] - ldr r4, [lr, r12] - ldr r6, _020BF2F8 ; =UNK_021CFD94 - smull r8, r4, r7, r4 - add r0, r0, r12 - mov r7, r8, lsr #0xc - orr r7, r7, r4, lsl #0x14 - str r7, [lr, r3] - ldr lr, [r1, #0x14] - ldr r4, [r6, r12] - add r1, r5, #0x10 - smull r5, r4, lr, r4 - mov r5, r5, lsr #0xc - orr r5, r5, r4, lsl #0x14 - str r5, [r6, r3] - bl MIi_CpuCopy32 - ldmia sp!, {r4-r8,pc} - .balign 4 -_020BF2E0: .word UNK_021CEF7C -_020BF2E4: .word UNK_021CFD80 -_020BF2E8: .word UNK_021CFD84 -_020BF2EC: .word UNK_021CFD88 -_020BF2F0: .word UNK_021CFD8C -_020BF2F4: .word UNK_021CFD90 -_020BF2F8: .word UNK_021CFD94 - arm_func_end FUN_020BF0D4 - - arm_func_start FUN_020BF2FC -FUN_020BF2FC: ; 0x020BF2FC - stmdb sp!, {r4-r6,lr} - sub sp, sp, #0x10 - mov r6, r0 - ldr r0, [r6, #0x0] - mov r5, #0x0 - ands r4, r0, #0x18 - bne _020BF328 - add r1, r6, #0x1c - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 -_020BF328: - ldr r0, [r6, #0x0] - ands r0, r0, #0x4 - bne _020BF398 - cmp r4, #0x0 - movne r5, #0x1 - bne _020BF398 - ldr r2, [r6, #0x4c] - ldr r0, [r6, #0x10] - add r1, sp, #0x0 - smull r3, r0, r2, r0 - mov r2, r3, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x0] - ldr r3, [r6, #0x50] - ldr r2, [r6, #0x14] - mov r0, #0x1c - smull r12, r2, r3, r2 - mov r3, r12, lsr #0xc - orr r3, r3, r2, lsl #0x14 - str r3, [sp, #0x4] - ldr r12, [r6, #0x54] - ldr r3, [r6, #0x18] - mov r2, #0x3 - smull lr, r3, r12, r3 - mov r12, lr, lsr #0xc - orr r12, r12, r3, lsl #0x14 - str r12, [sp, #0x8] - bl FUN_020BB1C0 -_020BF398: - ldr r0, [r6, #0x0] - ands r0, r0, #0x2 - bne _020BF3D4 - cmp r5, #0x0 - beq _020BF3C0 - add r1, r6, #0x28 - mov r0, #0x19 - mov r2, #0xc - bl FUN_020BB1C0 - b _020BF3EC -_020BF3C0: - add r1, r6, #0x28 - mov r0, #0x1a - mov r2, #0x9 - bl FUN_020BB1C0 - b _020BF3EC -_020BF3D4: - cmp r5, #0x0 - beq _020BF3EC - add r1, r6, #0x4c - mov r0, #0x1c - mov r2, #0x3 - bl FUN_020BB1C0 -_020BF3EC: - cmp r4, #0x0 - bne _020BF404 - add r1, r6, #0x10 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 -_020BF404: - ldr r0, [r6, #0x0] - ands r0, r0, #0x1 - addne sp, sp, #0x10 - ldmneia sp!, {r4-r6,pc} - add r1, r6, #0x4 - mov r0, #0x1b - mov r2, #0x3 - bl FUN_020BB1C0 - add sp, sp, #0x10 - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BF2FC - - arm_func_start FUN_020BF42C -FUN_020BF42C: ; 0x020BF42C - stmdb sp!, {r4,lr} - sub sp, sp, #0x50 - mov r4, r0 - ldr r0, [r4, #0x0] - mov r1, #0x0 - ands r0, r0, #0x8 - ldrne r0, _020BF568 ; =0x00101610 - mov r3, #0x3 - strne r0, [sp, #0x0] - ldreq r0, _020BF56C ; =0x00101810 - mov r2, #0x2 - streq r0, [sp, #0x0] - mov r0, #0x1000 - str r0, [sp, #0x44] - str r3, [sp, #0x4] - str r2, [sp, #0x48] - str r1, [sp, #0x40] - str r1, [sp, #0x34] - str r1, [sp, #0x30] - str r1, [sp, #0x2c] - str r1, [sp, #0x28] - str r1, [sp, #0x24] - str r1, [sp, #0x20] - str r1, [sp, #0x14] - str r1, [sp, #0x10] - ldr r1, [r4, #0x0] - ldr r0, _020BF570 ; =UNK_021067D0 - and r1, r1, #0x7 - ldr r2, [r0, r1, lsl #0x2] - add r0, sp, #0x8 - mov r1, r4 - blx r2 - ldr r3, [r4, #0x30] - cmp r3, #0x1000 - beq _020BF4FC - ldr r0, [sp, #0x8] - ldr r1, [sp, #0xc] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x8] - ldr r2, [r4, #0x30] - ldr r0, [sp, #0x38] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0xc] - ldr r1, [r4, #0x30] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x38] -_020BF4FC: - ldr r3, [r4, #0x34] - cmp r3, #0x1000 - beq _020BF54C - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x1c] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x18] - ldr r2, [r4, #0x34] - ldr r0, [sp, #0x3c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x1c] - ldr r1, [r4, #0x34] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x3c] -_020BF54C: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0x12 - bl FUN_020BB1C0 - add sp, sp, #0x50 - ldmia sp!, {r4,pc} - .balign 4 -_020BF568: .word 0x00101610 -_020BF56C: .word 0x00101810 -_020BF570: .word UNK_021067D0 - arm_func_end FUN_020BF42C - - arm_func_start FUN_020BF574 -FUN_020BF574: ; 0x020BF574 - mov r2, #0x1000 - str r2, [r0, #0x0] - mov r1, #0x0 - str r1, [r0, #0x4] - str r1, [r0, #0x10] - str r2, [r0, #0x14] - str r1, [r0, #0x30] - str r1, [r0, #0x34] - bx lr - arm_func_end FUN_020BF574 - - arm_func_start FUN_020BF598 -FUN_020BF598: ; 0x020BF598 - ldr r2, [r1, #0x18] - mov r12, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r12, [r0, #0x4] - ldr r3, [r1, #0x18] - ldrh r2, [r1, #0x2c] - rsb r3, r3, #0x1000 - mul r2, r3, r2 - mov r2, r2, lsl #0x3 - str r2, [r0, #0x30] - ldr r2, [r1, #0x1c] - ldrh r1, [r1, #0x2e] - rsb r2, r2, #0x1000 - mul r1, r2, r1 - mov r1, r1, lsl #0x3 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - arm_func_end FUN_020BF598 - - arm_func_start FUN_020BF5E8 -FUN_020BF5E8: ; 0x020BF5E8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - ldrsh r4, [r5, #0x22] - rsb r0, r2, #0x0 - rsb r1, r1, #0x0 - mov r0, r0, lsl #0xb - ldrsh r3, [r5, #0x20] - mov r1, r1, lsl #0xb - smull r7, lr, r4, r0 - smull r12, r4, r3, r1 - subs r7, r7, r12 - sbc r3, lr, r4 - mov r4, r7, lsr #0x8 - orr r4, r4, r3, lsl #0x18 - add r2, r4, r2, lsl #0xf - str r2, [r6, #0x30] - ldrsh r2, [r5, #0x22] - ldrsh r3, [r5, #0x20] - ldrh r12, [r5, #0x2e] - smull r4, r1, r2, r1 - smlal r4, r1, r3, r0 - mov r0, r4, lsr #0x8 - orr r0, r0, r1, lsl #0x18 - add r0, r0, r12, lsl #0xf - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BF5E8 - - arm_func_start FUN_020BF6C8 -FUN_020BF6C8: ; 0x020BF6C8 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r0, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r5, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r7, [r10, #0x0] - str r5, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - mul r0, r4, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - ldrh r3, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - rsb r0, r3, #0x0 - rsb r1, r1, #0x0 - mov r2, r1, lsl #0xb - mov r11, r0, lsl #0xb - smull r1, r0, r7, r11 - smull r8, r7, r5, r2 - smlal r8, r7, r4, r11 - mov r4, r8, lsr #0x8 - orr r4, r4, r7, lsl #0x18 - smull r5, r2, r6, r2 - subs r1, r1, r5 - sbc r0, r0, r2 - mov r1, r1, lsr #0x8 - orr r1, r1, r0, lsl #0x18 - add r0, r1, r3, lsl #0xf - str r0, [r10, #0x30] - ldrh r0, [r9, #0x2e] - add r0, r4, r0, lsl #0xf - str r0, [r10, #0x34] - bl FX_GetDivResult - rsb r1, r6, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020BF6C8 - - arm_func_start FUN_020BF7C8 -FUN_020BF7C8: ; 0x020BF7C8 - mov r2, #0x1000 - str r2, [r0, #0x0] - str r2, [r0, #0x14] - mov r12, #0x0 - str r12, [r0, #0x4] - ldr r3, [r1, #0x24] - ldrh r2, [r1, #0x2c] - rsb r3, r3, #0x0 - mul r2, r3, r2 - mov r2, r2, lsl #0x4 - str r2, [r0, #0x30] - ldrh r2, [r1, #0x2e] - ldr r1, [r1, #0x28] - mul r2, r1, r2 - mov r1, r2, lsl #0x4 - str r1, [r0, #0x34] - str r12, [r0, #0x10] - bx lr - arm_func_end FUN_020BF7C8 - - arm_func_start FUN_020BF810 -FUN_020BF810: ; 0x020BF810 - stmdb sp!, {r4-r6,lr} - ldr r2, [r1, #0x18] - mov r3, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r3, [r0, #0x4] - ldrh r5, [r1, #0x2c] - ldr r12, [r1, #0x24] - ldrh r2, [r1, #0x2e] - mul lr, r12, r5 - rsb r12, r5, #0x0 - mov r12, r12, lsl #0xb - ldr r4, [r1, #0x18] - sub r12, r12, lr - smull lr, r12, r4, r12 - ldr r6, [r1, #0x28] - mov r4, lr, lsr #0x8 - orr r4, r4, r12, lsl #0x18 - add r4, r4, r5, lsl #0xf - str r4, [r0, #0x30] - mul r4, r6, r2 - rsb r5, r2, #0x0 - ldr r2, [r1, #0x1c] - add r4, r4, r5, lsl #0xb - smull lr, r12, r2, r4 - mov r2, lr, lsr #0x8 - ldrh r1, [r1, #0x2e] - orr r2, r2, r12, lsl #0x18 - add r1, r2, r1, lsl #0xf - str r1, [r0, #0x34] - str r3, [r0, #0x10] - ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BF810 - - arm_func_start FUN_020BF894 -FUN_020BF894: ; 0x020BF894 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrh r2, [r5, #0x2c] - ldrh r7, [r5, #0x2e] - ldr r1, [r5, #0x28] - ldr r0, [r5, #0x24] - rsb r4, r2, #0x0 - mul r3, r1, r7 - rsb r1, r7, #0x0 - add r1, r3, r1, lsl #0xb - ldrsh r3, [r5, #0x20] - mov r7, r4, lsl #0xb - mul r4, r0, r2 - sub r0, r7, r4 - ldrsh lr, [r5, #0x22] - smull r12, r4, r3, r1 - smull r7, r3, lr, r0 - subs r7, r7, r12 - sbc r3, r3, r4 - mov r4, r7, lsr #0x8 - orr r4, r4, r3, lsl #0x18 - add r2, r4, r2, lsl #0xf - str r2, [r6, #0x30] - ldrsh r2, [r5, #0x22] - ldrsh r3, [r5, #0x20] - ldrh r12, [r5, #0x2e] - smull r4, r1, r2, r1 - smlal r4, r1, r3, r0 - mov r0, r4, lsr #0x8 - orr r0, r0, r1, lsl #0x18 - add r0, r0, r12, lsl #0xf - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BF894 - - arm_func_start FUN_020BF988 -FUN_020BF988: ; 0x020BF988 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r0, [r9, #0x22] - ldr r3, [r9, #0x18] - ldrsh r5, [r9, #0x20] - ldr r4, [r9, #0x1c] - smull r2, r1, r3, r0 - mov r7, r2, lsr #0xc - orr r7, r7, r1, lsl #0x14 - smull r2, r1, r3, r5 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - smull r3, r2, r4, r0 - smull r1, r0, r4, r5 - mov r5, r3, lsr #0xc - orr r5, r5, r2, lsl #0x14 - mov r4, r1, lsr #0xc - orr r4, r4, r0, lsl #0x14 - str r7, [r10, #0x0] - str r5, [r10, #0x14] - bl FX_GetDivResult - mov r1, r11 - mul r0, r4, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - bl FX_DivAsync - ldrh r1, [r9, #0x2c] - ldrh r8, [r9, #0x2e] - ldr r2, [r9, #0x28] - rsb r0, r1, #0x0 - mul r3, r2, r8 - rsb r2, r8, #0x0 - add r8, r3, r2, lsl #0xb - mov r0, r0, lsl #0xb - smull r3, r2, r5, r8 - smull r8, r5, r6, r8 - ldr r11, [r9, #0x24] - mul r12, r11, r1 - sub r0, r0, r12 - smlal r3, r2, r4, r0 - smull r4, r0, r7, r0 - subs r4, r4, r8 - sbc r0, r0, r5 - mov r4, r4, lsr #0x8 - orr r4, r4, r0, lsl #0x18 - add r0, r4, r1, lsl #0xf - str r0, [r10, #0x30] - ldrh r1, [r9, #0x2e] - mov r0, r3, lsr #0x8 - orr r0, r0, r2, lsl #0x18 - add r0, r0, r1, lsl #0xf - str r0, [r10, #0x34] - bl FX_GetDivResult - rsb r1, r6, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020BF988 - - arm_func_start FUN_020BFA9C -FUN_020BFA9C: ; 0x020BFA9C - stmdb sp!, {r4,lr} - sub sp, sp, #0x50 - mov r4, r0 - ldr r0, [r4, #0x0] - mov r3, #0x3 - ands r0, r0, #0x8 - ldrne r0, _020BFC1C ; =0x00101610 - mov r2, #0x2 - strne r0, [sp, #0x0] - ldreq r0, _020BFC20 ; =0x00101810 - mov r1, #0x1000 - streq r0, [sp, #0x0] - mov r0, #0x0 - str r3, [sp, #0x4] - str r2, [sp, #0x48] - str r1, [sp, #0x44] - str r0, [sp, #0x40] - str r0, [sp, #0x34] - str r0, [sp, #0x30] - str r0, [sp, #0x2c] - str r0, [sp, #0x28] - str r0, [sp, #0x24] - str r0, [sp, #0x20] - str r0, [sp, #0x14] - str r0, [sp, #0x10] - ldr r0, [r4, #0x0] - ands r0, r0, #0x1 - strne r1, [r4, #0x1c] - ldrne r0, [r4, #0x1c] - strne r0, [r4, #0x18] - ldr r0, [r4, #0x0] - ands r0, r0, #0x2 - movne r0, #0x1000 - strneh r0, [r4, #0x22] - movne r0, #0x0 - strneh r0, [r4, #0x20] - ldr r0, [r4, #0x0] - ands r0, r0, #0x4 - movne r0, #0x0 - strne r0, [r4, #0x28] - ldrne r0, [r4, #0x28] - strne r0, [r4, #0x24] - ldr r1, [r4, #0x0] - ldr r0, _020BFC24 ; =UNK_021067F0 - and r1, r1, #0x7 - ldr r2, [r0, r1, lsl #0x2] - add r0, sp, #0x8 - mov r1, r4 - blx r2 - ldr r3, [r4, #0x30] - cmp r3, #0x1000 - beq _020BFBB0 - ldr r0, [sp, #0x8] - ldr r1, [sp, #0xc] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x8] - ldr r2, [r4, #0x30] - ldr r0, [sp, #0x38] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0xc] - ldr r1, [r4, #0x30] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x38] -_020BFBB0: - ldr r3, [r4, #0x34] - cmp r3, #0x1000 - beq _020BFC00 - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x1c] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #0x14 - str r2, [sp, #0x18] - ldr r2, [r4, #0x34] - ldr r0, [sp, #0x3c] - smull r3, r1, r2, r1 - mov r2, r3, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [sp, #0x1c] - ldr r1, [r4, #0x34] - smull r2, r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #0x14 - str r1, [sp, #0x3c] -_020BFC00: - add r1, sp, #0x0 - ldr r0, [sp, #0x0] - add r1, r1, #0x4 - mov r2, #0x12 - bl FUN_020BB1C0 - add sp, sp, #0x50 - ldmia sp!, {r4,pc} - .balign 4 -_020BFC1C: .word 0x00101610 -_020BFC20: .word 0x00101810 -_020BFC24: .word UNK_021067F0 - arm_func_end FUN_020BFA9C - - arm_func_start FUN_020BFC28 -FUN_020BFC28: ; 0x020BFC28 - mov r2, #0x1000 - str r2, [r0, #0x0] - mov r1, #0x0 - str r1, [r0, #0x4] - str r1, [r0, #0x10] - str r2, [r0, #0x14] - str r1, [r0, #0x30] - str r1, [r0, #0x34] - bx lr - arm_func_end FUN_020BFC28 - - arm_func_start FUN_020BFC4C -FUN_020BFC4C: ; 0x020BFC4C - ldr r2, [r1, #0x18] - mov r3, #0x0 - str r2, [r0, #0x0] - ldr r2, [r1, #0x1c] - str r2, [r0, #0x14] - str r3, [r0, #0x4] - str r3, [r0, #0x30] - ldrh r2, [r1, #0x2e] - ldr r1, [r1, #0x1c] - rsb r2, r2, #0x0 - sub r1, r1, #0x1000 - mul r1, r2, r1 - mov r1, r1, lsl #0x4 - str r1, [r0, #0x34] - str r3, [r0, #0x10] - bx lr - arm_func_end FUN_020BFC4C - - arm_func_start FUN_020BFC8C -FUN_020BFC8C: ; 0x020BFC8C - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrh r1, [r5, #0x2c] - ldrsh r0, [r5, #0x20] - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x30] - ldrh r1, [r5, #0x2e] - ldrsh r0, [r5, #0x22] - rsb r1, r1, #0x0 - sub r0, r0, #0x1000 - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BFC8C - - arm_func_start FUN_020BFD38 -FUN_020BFD38: ; 0x020BFD38 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r9, r1 - ldrh r2, [r9, #0x2c] - ldrh r1, [r9, #0x2e] - mov r10, r0 - mov r8, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r8 - bl FX_DivAsync - ldrsh r3, [r9, #0x22] - ldr r0, [r9, #0x18] - ldrsh r7, [r9, #0x20] - ldr r5, [r9, #0x1c] - smull r2, r1, r0, r3 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #0x14 - str r2, [r10, #0x0] - smull r2, r1, r5, r3 - mov r4, r2, lsr #0xc - orr r4, r4, r1, lsl #0x14 - smull r2, r1, r0, r7 - mov r6, r2, lsr #0xc - orr r6, r6, r1, lsl #0x14 - str r4, [r10, #0x14] - bl FX_GetDivResult - smull r2, r1, r5, r7 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #0x14 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x4] - mov r0, r8 - mov r1, r11 - bl FX_DivAsync - sub r0, r4, #0x1000 - ldrh r1, [r9, #0x2c] - mul r2, r1, r6 - mov r1, r2, lsl #0x4 - str r1, [r10, #0x30] - ldrh r1, [r9, #0x2e] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r10, #0x34] - bl FX_GetDivResult - rsb r1, r6, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r10, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020BFD38 - - arm_func_start FUN_020BFE0C -FUN_020BFE0C: ; 0x020BFE0C - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov r2, #0x1000 - str r2, [r0, #0x0] - str r2, [r0, #0x14] - mov lr, #0x0 - str lr, [r0, #0x4] - ldr r2, [r1, #0x24] - ldrh r3, [r1, #0x2c] - rsb r2, r2, #0x0 - ldr r12, [r1, #0x28] - mul r2, r3, r2 - mov r2, r2, lsl #0x4 - str r2, [r0, #0x30] - ldrh r1, [r1, #0x2e] - rsb r2, r12, #0x0 - rsb r1, r1, #0x0 - mul r2, r1, r2 - mov r1, r2, lsl #0x4 - str r1, [r0, #0x34] - str lr, [r0, #0x10] - add sp, sp, #0x4 - ldmia sp!, {pc} - arm_func_end FUN_020BFE0C - - arm_func_start FUN_020BFE68 -FUN_020BFE68: ; 0x020BFE68 - stmdb sp!, {r4,lr} - ldr r3, [r1, #0x18] - mov r2, #0x0 - str r3, [r0, #0x0] - ldr r3, [r1, #0x1c] - str r3, [r0, #0x14] - str r2, [r0, #0x4] - ldr r12, [r1, #0x24] - ldr r3, [r1, #0x18] - ldr r4, [r1, #0x28] - smull lr, r3, r12, r3 - mov r12, lr, lsr #0xc - orr r12, r12, r3, lsl #0x14 - ldrh lr, [r1, #0x2c] - rsb r3, r12, #0x0 - ldr r12, [r1, #0x1c] - rsb r4, r4, #0x0 - mul r3, lr, r3 - smull lr, r12, r4, r12 - mov r3, r3, lsl #0x4 - str r3, [r0, #0x30] - mov r4, lr, lsr #0xc - ldrh r3, [r1, #0x2e] - ldr r1, [r1, #0x1c] - orr r4, r4, r12, lsl #0x14 - add r1, r1, r4 - rsb r3, r3, #0x0 - sub r1, r1, #0x1000 - mul r1, r3, r1 - mov r1, r1, lsl #0x4 - str r1, [r0, #0x34] - str r2, [r0, #0x10] - ldmia sp!, {r4,pc} - arm_func_end FUN_020BFE68 - - arm_func_start FUN_020BFEEC -FUN_020BFEEC: ; 0x020BFEEC - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r5, r1 - ldrh r2, [r5, #0x2c] - ldrh r1, [r5, #0x2e] - mov r6, r0 - mov r4, r2, lsl #0xc - mov r7, r1, lsl #0xc - mov r0, r7 - mov r1, r4 - bl FX_DivAsync - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x0] - ldrsh r0, [r5, #0x22] - str r0, [r6, #0x14] - bl FX_GetDivResult - ldrsh r2, [r5, #0x20] - mov r1, r7 - mul r0, r2, r0 - mov r2, r0, asr #0xc - mov r0, r4 - str r2, [r6, #0x4] - bl FX_DivAsync - ldrsh lr, [r5, #0x20] - ldr r4, [r5, #0x28] - ldrsh r0, [r5, #0x22] - ldr r12, [r5, #0x24] - smull r3, r2, r4, lr - smlal r3, r2, r12, r0 - smull r1, r0, r4, r0 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #0x14 - sub r4, lr, r3 - smull r3, r2, r12, lr - subs r1, r3, r1 - sbc r0, r2, r0 - ldrh r2, [r5, #0x2c] - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #0x14 - mul r0, r2, r4 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x30] - ldrsh r0, [r5, #0x22] - ldrh r2, [r5, #0x2e] - add r0, r0, r1 - rsb r1, r2, #0x0 - sub r0, r0, #0x1000 - mul r0, r1, r0 - mov r0, r0, lsl #0x4 - str r0, [r6, #0x34] - bl FX_GetDivResult - ldrsh r1, [r5, #0x20] - rsb r1, r1, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r6, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BFEEC - - arm_func_start FUN_020BFFD4 -FUN_020BFFD4: ; 0x020BFFD4 - stmdb sp!, {r4-r11,lr} - sub sp, sp, #0x4 - mov r6, r1 - ldrh r2, [r6, #0x2c] - ldrh r1, [r6, #0x2e] - mov r7, r0 - mov r10, r2, lsl #0xc - mov r11, r1, lsl #0xc - mov r0, r11 - mov r1, r10 - bl FX_DivAsync - ldrsh r3, [r6, #0x22] - ldr r0, [r6, #0x18] - ldrsh r9, [r6, #0x20] - smull r2, r1, r0, r3 - mov r2, r2, lsr #0xc - ldr r8, [r6, #0x1c] - orr r2, r2, r1, lsl #0x14 - str r2, [r7, #0x0] - smull r2, r1, r8, r3 - mov r4, r2, lsr #0xc - orr r4, r4, r1, lsl #0x14 - smull r2, r1, r0, r9 - mov r5, r2, lsr #0xc - orr r5, r5, r1, lsl #0x14 - str r4, [r7, #0x14] - bl FX_GetDivResult - smull r2, r1, r8, r9 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #0x14 - mul r0, r2, r0 - mov r0, r0, asr #0xc - str r0, [r7, #0x4] - mov r0, r10 - mov r1, r11 - bl FX_DivAsync - ldr lr, [r6, #0x1c] - ldrsh r2, [r6, #0x20] - ldr r8, [r6, #0x24] - ldr r0, [r6, #0x28] - smull r10, r9, r8, r2 - ldrh r1, [r6, #0x2c] - smull r3, r2, r0, r2 - ldrsh r12, [r6, #0x22] - str r1, [sp, #0x0] - mov r11, lr, asr #0x1f - smlal r3, r2, r8, r12 - smull r8, r12, r0, r12 - subs r8, r10, r8 - sbc r0, r9, r12 - mov r9, r8, lsr #0xc - mov r12, r3, lsr #0xc - orr r9, r9, r0, lsl #0x14 - mov r3, r2, asr #0xc - orr r12, r12, r2, lsl #0x14 - umull r10, r2, r9, lr - mla r2, r9, r11, r2 - mov r8, r0, asr #0xc - mla r2, r8, lr, r2 - ldr r1, [r6, #0x18] - mov r8, r10, lsr #0xc - orr r8, r8, r2, lsl #0x14 - add r2, r4, r8 - mov r0, r1, asr #0x1f - umull r8, r4, r12, r1 - mla r4, r12, r0, r4 - mla r4, r3, r1, r4 - mov r0, r8, lsr #0xc - orr r0, r0, r4, lsl #0x14 - sub r1, r5, r0 - ldr r0, [sp, #0x0] - sub r2, r2, #0x1000 - mul r1, r0, r1 - mov r0, r1, lsl #0x4 - str r0, [r7, #0x30] - ldrh r0, [r6, #0x2e] - rsb r0, r0, #0x0 - mul r1, r0, r2 - mov r0, r1, lsl #0x4 - str r0, [r7, #0x34] - bl FX_GetDivResult - rsb r1, r5, #0x0 - mul r0, r1, r0 - mov r0, r0, asr #0xc - str r0, [r7, #0x10] - add sp, sp, #0x4 - ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020BFFD4 \ No newline at end of file -- cgit v1.2.3 From 57b9d8fd35548901ccd4ffcdfa7bca7140065036 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 23 May 2021 16:43:24 -0400 Subject: Rename libnns symbols --- arm9/asm/NNS_FND_allocator.s | 52 +- arm9/asm/NNS_FND_expheap.s | 160 +++-- arm9/asm/NNS_FND_frameheap.s | 90 ++- arm9/asm/NNS_FND_heapcommon.s | 67 +-- arm9/asm/NNS_FND_list.s | 57 +- arm9/asm/NNS_G2D_g2d_animation.s | 96 ++- arm9/asm/NNS_G2D_g2d_cellanimati.s | 104 ++-- arm9/asm/NNS_G2D_g2d_celltransfe.s | 138 ++--- arm9/asm/NNS_G2D_g2d_charcanvas.s | 210 +++---- arm9/asm/NNS_G2D_g2d_font.s | 64 +- arm9/asm/NNS_G2D_g2d_image.s | 123 ++-- arm9/asm/NNS_G2D_g2d_load.s | 15 +- arm9/asm/NNS_G2D_g2d_multicellan.s | 144 +++-- arm9/asm/NNS_G2D_g2d_nan_load.s | 48 +- arm9/asm/NNS_G2D_g2d_ncg_load.s | 37 +- arm9/asm/NNS_G2D_g2d_ncl_load.s | 37 +- arm9/asm/NNS_G2D_g2d_nft_load.s | 19 +- arm9/asm/NNS_G2D_g2d_nmc_load.s | 39 +- arm9/asm/NNS_G2D_g2d_nob_load.s | 50 +- arm9/asm/NNS_G2D_g2d_node.s | 12 +- arm9/asm/NNS_G2D_g2d_nsc_load.s | 10 +- arm9/asm/NNS_G2D_g2d_oam.s | 231 +++---- arm9/asm/NNS_G2D_g2d_oamsoftware.s | 159 +++-- arm9/asm/NNS_G2D_g2d_palettetabl.s | 8 +- arm9/asm/NNS_G2D_g2d_renderer.s | 1159 +++++++++++++++++------------------- arm9/asm/NNS_G2D_g2d_renderercor.s | 294 +++++---- arm9/asm/NNS_G2D_g2d_softsprite.s | 24 +- arm9/asm/NNS_G2D_g2d_srtcontrol.s | 40 +- arm9/asm/NNS_G2D_g2d_textcanvas.s | 47 +- arm9/asm/NNS_G2D_g2di_bitreader.s | 10 +- arm9/asm/NNS_G2D_g2di_mtx32.s | 8 +- arm9/asm/NNS_G2D_g2di_splitchar.s | 8 +- arm9/asm/NNS_G3D_1mat1shp.s | 20 +- arm9/asm/NNS_G3D_3dsmax.s | 91 ++- arm9/asm/NNS_G3D_anm.s | 115 ++-- arm9/asm/NNS_G3D_basic.s | 23 +- arm9/asm/NNS_G3D_cgtool.s | 36 +- arm9/asm/NNS_G3D_gecom.s | 105 ++-- arm9/asm/NNS_G3D_glbstate.s | 309 ++++------ arm9/asm/NNS_G3D_kernel.s | 243 ++++---- arm9/asm/NNS_G3D_maya.s | 139 ++--- arm9/asm/NNS_G3D_mem.s | 23 +- arm9/asm/NNS_G3D_model.s | 239 ++++---- arm9/asm/NNS_G3D_nsbca.s | 203 +++---- arm9/asm/NNS_G3D_nsbma.s | 45 +- arm9/asm/NNS_G3D_nsbta.s | 54 +- arm9/asm/NNS_G3D_nsbtp.s | 49 +- arm9/asm/NNS_G3D_nsbva.s | 19 +- arm9/asm/NNS_G3D_res_struct_acce.s | 66 +- arm9/asm/NNS_G3D_sbc.s | 631 ++++++++------------ arm9/asm/NNS_G3D_si3d.s | 74 ++- arm9/asm/NNS_G3D_util.s | 83 ++- arm9/asm/NNS_G3D_xsi.s | 90 ++- arm9/asm/NNS_GFD_gfd_frameplttvr.s | 96 ++- arm9/asm/NNS_GFD_gfd_frametexvra.s | 166 +++--- arm9/asm/NNS_GFD_gfd_linkedlistp.s | 119 ++-- arm9/asm/NNS_GFD_gfd_linkedlistt.s | 177 +++--- arm9/asm/NNS_GFD_gfd_plttvramman.s | 29 +- arm9/asm/NNS_GFD_gfd_texvramman.s | 29 +- arm9/asm/NNS_GFD_gfd_vramtransfe.s | 463 +++++++------- arm9/asm/NNS_GFD_gfdi_linkedlist.s | 45 +- arm9/asm/NNS_SND_capture.s | 215 +++---- arm9/asm/NNS_SND_fader.s | 27 +- arm9/asm/NNS_SND_heap.s | 121 ++-- arm9/asm/NNS_SND_main.s | 99 ++- arm9/asm/NNS_SND_player.s | 463 +++++++------- arm9/asm/NNS_SND_resource_mgr.s | 91 ++- arm9/asm/NNS_SND_seqdata.s | 6 +- arm9/asm/NNS_SND_sndarc.s | 173 +++--- arm9/asm/NNS_SND_sndarc_loader.s | 282 ++++----- arm9/asm/NNS_SND_sndarc_player.s | 93 ++- arm9/asm/NNS_SND_sndarc_stream.s | 133 ++--- arm9/asm/NNS_SND_stream.s | 162 +++-- arm9/asm/NNS_SND_waveout.s | 56 +- arm9/asm/macros/function.inc | 5 + arm9/asm/unk_020040F4.s | 90 +-- arm9/asm/unk_020051F4.s | 40 +- arm9/asm/unk_02006864.s | 36 +- arm9/asm/unk_02006D98.s | 28 +- arm9/asm/unk_02008DEC.s | 14 +- arm9/asm/unk_02009EAC.s | 16 +- arm9/asm/unk_0200BB14.s | 2 +- arm9/asm/unk_0200CABC.s | 6 +- arm9/asm/unk_02011744.s | 2 +- arm9/asm/unk_02012004.s | 6 +- arm9/asm/unk_02012CC8.s | 22 +- arm9/asm/unk_02013CD4.s | 42 +- arm9/asm/unk_02016B94.s | 4 +- arm9/asm/unk_0201B1A8.s | 100 ++-- arm9/asm/unk_0201B6D0.s | 44 +- arm9/asm/unk_0201C24C.s | 12 +- arm9/asm/unk_0201C360.s | 4 +- arm9/asm/unk_0201D040.s | 18 +- arm9/asm/unk_0201E00C.s | 10 +- arm9/asm/unk_0201E7D8.s | 44 +- arm9/asm/unk_0201F06C.s | 158 ++--- arm9/asm/unk_02020C44.s | 52 +- arm9/asm/unk_0202134C.s | 6 +- arm9/asm/unk_02022318.s | 14 +- arm9/asm/unk_02033B68.s | 4 +- arm9/asm/unk_020607D4.s | 2 +- arm9/asm/unk_0206DE24.s | 22 +- arm9/asm/unk_0206F3FC.s | 4 +- arm9/asm/unk_020772F0.s | 2 +- arm9/asm/unk_020799E8.s | 8 +- arm9/asm/unk_02079C70.s | 2 +- arm9/asm/unk_0207EF6C.s | 8 +- arm9/asm/unk_02086414.s | 22 +- arm9/asm/unk_0208AC14.s | 12 +- 109 files changed, 4535 insertions(+), 5588 deletions(-) (limited to 'arm9/asm') diff --git a/arm9/asm/NNS_FND_allocator.s b/arm9/asm/NNS_FND_allocator.s index 404b1983..537ce6a0 100644 --- a/arm9/asm/NNS_FND_allocator.s +++ b/arm9/asm/NNS_FND_allocator.s @@ -1,19 +1,17 @@ .include "asm/macros.inc" .include "global.inc" - .rodata - ; static const in function - .global UNK_020FF7CC -UNK_020FF7CC: ; 0x020FF7CC - .word FUN_020AE894 - .word FUN_020AE884 + .global sAllocatorFunc$7864 +sAllocatorFunc$7864: ; 0x020FF7CC + .word AllocatorAllocForExpHeap + .word AllocatorFreeForExpHeap .text - arm_func_start FUN_020AE82C -FUN_020AE82C: ; 0x020AE82C - ldr ip, _020AE848 ; =UNK_020FF7CC + arm_func_start NNS_FndInitAllocatorForExpHeap +NNS_FndInitAllocatorForExpHeap: ; 0x020AE82C + ldr ip, _020AE848 ; =sAllocatorFunc$7864 mov r3, #0x0 str r12, [r0, #0x0] str r1, [r0, #0x4] @@ -21,11 +19,11 @@ FUN_020AE82C: ; 0x020AE82C str r3, [r0, #0xc] bx lr .balign 4 -_020AE848: .word UNK_020FF7CC - arm_func_end FUN_020AE82C +_020AE848: .word sAllocatorFunc$7864 + arm_func_end NNS_FndInitAllocatorForExpHeap - arm_func_start FUN_020AE84C -FUN_020AE84C: ; 0x020AE84C + arm_func_start NNS_FndFreeToAllocator +NNS_FndFreeToAllocator: ; 0x020AE84C stmdb sp!, {lr} sub sp, sp, #0x4 ldr r2, [r0, #0x0] @@ -33,10 +31,10 @@ FUN_020AE84C: ; 0x020AE84C blx r2 add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020AE84C + arm_func_end NNS_FndFreeToAllocator - arm_func_start FUN_020AE868 -FUN_020AE868: ; 0x020AE868 + arm_func_start NNS_FndAllocFromAllocator +NNS_FndAllocFromAllocator: ; 0x020AE868 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r2, [r0, #0x0] @@ -44,24 +42,24 @@ FUN_020AE868: ; 0x020AE868 blx r2 add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020AE868 + arm_func_end NNS_FndAllocFromAllocator - arm_func_start FUN_020AE884 -FUN_020AE884: ; 0x020AE884 - ldr ip, _020AE890 ; =FUN_020ADDF0 + arm_func_start AllocatorFreeForExpHeap +AllocatorFreeForExpHeap: ; 0x020AE884 + ldr ip, _020AE890 ; =NNS_FndFreeToExpHeap ldr r0, [r0, #0x4] bx r12 .balign 4 -_020AE890: .word FUN_020ADDF0 - arm_func_end FUN_020AE884 +_020AE890: .word NNS_FndFreeToExpHeap + arm_func_end AllocatorFreeForExpHeap - arm_func_start FUN_020AE894 -FUN_020AE894: ; 0x020AE894 - ldr ip, _020AE8A8 ; =tempName_NNS_FndAllocFromExpHeapEx + arm_func_start AllocatorAllocForExpHeap +AllocatorAllocForExpHeap: ; 0x020AE894 + ldr ip, _020AE8A8 ; =NNS_FndAllocFromExpHeapEx mov r2, r0 ldr r0, [r2, #0x4] ldr r2, [r2, #0x8] bx r12 .balign 4 -_020AE8A8: .word tempName_NNS_FndAllocFromExpHeapEx - arm_func_end FUN_020AE894 +_020AE8A8: .word NNS_FndAllocFromExpHeapEx + arm_func_end AllocatorAllocForExpHeap diff --git a/arm9/asm/NNS_FND_expheap.s b/arm9/asm/NNS_FND_expheap.s index cb42f116..e94dba38 100644 --- a/arm9/asm/NNS_FND_expheap.s +++ b/arm9/asm/NNS_FND_expheap.s @@ -1,19 +1,17 @@ .include "asm/macros.inc" .include "global.inc" - - .extern FUN_020ADCA4 - .extern FUN_020ADC8C - + .extern NNSi_FndInitHeapHead + .extern NNSi_FndFinalizeHeap .text - arm_func_start FUN_020ADDC0 -FUN_020ADDC0: ; 0x020ADDC0 + arm_func_start NNS_FndGetSizeForMBlockExpHeap +NNS_FndGetSizeForMBlockExpHeap: ; 0x020ADDC0 ldr r0, [r0, #-0xc] bx lr - arm_func_end FUN_020ADDC0 + arm_func_end NNS_FndGetSizeForMBlockExpHeap - arm_func_start FUN_020ADDC8 -FUN_020ADDC8: ; 0x020ADDC8 + arm_func_start NNS_FndGetTotalFreeSizeForExpHeap +NNS_FndGetTotalFreeSizeForExpHeap: ; 0x020ADDC8 ldr r2, [r0, #0x24] mov r0, #0x0 cmp r2, #0x0 @@ -25,29 +23,29 @@ _020ADDD8: cmp r2, #0x0 bne _020ADDD8 bx lr - arm_func_end FUN_020ADDC8 + arm_func_end NNS_FndGetTotalFreeSizeForExpHeap - arm_func_start FUN_020ADDF0 -FUN_020ADDF0: ; 0x020ADDF0 + arm_func_start NNS_FndFreeToExpHeap +NNS_FndFreeToExpHeap: ; 0x020ADDF0 stmdb sp!, {r4-r5,lr} sub sp, sp, #0xc sub r4, r1, #0x10 add r5, r0, #0x24 add r0, sp, #0x0 mov r1, r4 - bl FUN_020AE528 + bl GetRegionOfMBlock mov r1, r4 add r0, r5, #0x8 - bl FUN_020AE500 + bl RemoveMBlock add r1, sp, #0x0 mov r0, r5 - bl FUN_020AE02C + bl RecycleRegion add sp, sp, #0xc ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020ADDF0 + arm_func_end NNS_FndFreeToExpHeap - arm_func_start FUN_020ADE2C -FUN_020ADE2C: ; 0x020ADE2C + arm_func_start NNS_FndResizeForMBlockExpHeap +NNS_FndResizeForMBlockExpHeap: ; 0x020ADE2C stmdb sp!, {r4-r10,lr} sub sp, sp, #0x10 mov r4, r1 @@ -90,10 +88,10 @@ _020ADEB0: _020ADEBC: add r0, sp, #0x0 mov r1, r9 - bl FUN_020AE528 + bl GetRegionOfMBlock mov r0, r7 mov r1, r9 - bl FUN_020AE500 + bl RemoveMBlock ldr r2, [sp, #0x4] add r3, r10, r4 ldr r9, [sp, #0x0] @@ -112,11 +110,11 @@ _020ADEBC: blo _020ADF30 ldr r1, _020ADF9C ; =0x00004652 add r0, sp, #0x0 - bl FUN_020AE4A0 + bl InitMBlock mov r1, r0 mov r0, r7 mov r2, r8 - bl FUN_020AE4D0 + bl InsertMBlock _020ADF30: ldr r0, [r5, #0x20] ldr r1, [sp, #0x0] @@ -140,7 +138,7 @@ _020ADF60: add r1, sp, #0x8 mov r0, r7 str r10, [r6, #0x4] - bl FUN_020AE02C + bl RecycleRegion cmp r0, #0x0 streq r8, [r6, #0x4] _020ADF90: @@ -149,10 +147,10 @@ _020ADF90: ldmia sp!, {r4-r10,pc} .balign 4 _020ADF9C: .word 0x00004652 - arm_func_end FUN_020ADE2C + arm_func_end NNS_FndResizeForMBlockExpHeap - arm_func_start tempName_NNS_FndAllocFromExpHeapEx -tempName_NNS_FndAllocFromExpHeapEx: ; 0x020ADFA0 + arm_func_start NNS_FndAllocFromExpHeapEx +NNS_FndAllocFromExpHeapEx: ; 0x020ADFA0 stmdb sp!, {lr} sub sp, sp, #0x4 cmp r1, #0x0 @@ -161,26 +159,26 @@ tempName_NNS_FndAllocFromExpHeapEx: ; 0x020ADFA0 cmp r2, #0x0 bic r1, r1, #0x3 blt _020ADFCC - bl FUN_020AE1D8 + bl AllocFromHead add sp, sp, #0x4 ldmia sp!, {pc} _020ADFCC: rsb r2, r2, #0x0 - bl FUN_020AE11C + bl AllocFromTail add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end tempName_NNS_FndAllocFromExpHeapEx + arm_func_end NNS_FndAllocFromExpHeapEx - arm_func_start thunk_FUN_020adc8c -thunk_FUN_020adc8c: ; 0x020ADFDC - ldr ip, _020ADFE4 ; =FUN_020ADC8C + arm_func_start NNS_FndDestroyExpHeap +NNS_FndDestroyExpHeap: ; 0x020ADFDC + ldr ip, _020ADFE4 ; =NNSi_FndFinalizeHeap bx r12 .balign 4 -_020ADFE4: .word FUN_020ADC8C - arm_func_end thunk_FUN_020adc8c +_020ADFE4: .word NNSi_FndFinalizeHeap + arm_func_end NNS_FndDestroyExpHeap - arm_func_start tempName_NNS_FndCreateExpHeapEx -tempName_NNS_FndCreateExpHeapEx: ; 0x020ADFE8 + arm_func_start NNS_FndCreateExpHeapEx +NNS_FndCreateExpHeapEx: ; 0x020ADFE8 stmdb sp!, {lr} sub sp, sp, #0x4 add r1, r1, r0 @@ -197,13 +195,13 @@ _020AE014: mov r0, #0x0 ldmia sp!, {pc} _020AE020: - bl FUN_020AE420 + bl InitExpHeap add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end tempName_NNS_FndCreateExpHeapEx + arm_func_end NNS_FndCreateExpHeapEx - arm_func_start FUN_020AE02C -FUN_020AE02C: + arm_func_start RecycleRegion +RecycleRegion: stmdb sp!, {r4-r6,lr} sub sp, sp, #0x8 mov r5, r1 @@ -229,7 +227,7 @@ _020AE060: add r2, r2, r0 mov r0, r6 str r2, [sp, #0x4] - bl FUN_020AE500 + bl RemoveMBlock b _020AE0A0 _020AE094: ldr r1, [r1, #0xc] @@ -247,7 +245,7 @@ _020AE0A0: mov r0, r6 mov r1, r4 str r4, [sp, #0x0] - bl FUN_020AE500 + bl RemoveMBlock mov r4, r0 _020AE0D4: ldr r1, [sp, #0x4] @@ -259,20 +257,20 @@ _020AE0D4: ldmccia sp!, {r4-r6,pc} ldr r1, _020AE118 ; =0x00004652 add r0, sp, #0x0 - bl FUN_020AE4A0 + bl InitMBlock mov r1, r0 mov r0, r6 mov r2, r4 - bl FUN_020AE4D0 + bl InsertMBlock mov r0, #0x1 add sp, sp, #0x8 ldmia sp!, {r4-r6,pc} .balign 4 _020AE118: .word 0x00004652 - arm_func_end FUN_020AE02C + arm_func_end RecycleRegion - arm_func_start FUN_020AE11C -FUN_020AE11C: ; 0x020AE11C + local_arm_func_start AllocFromTail +AllocFromTail: ; 0x020AE11C stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4 add r0, r0, #0x24 @@ -320,13 +318,13 @@ _020AE1B0: mov r4, #0x1 mov r2, r12 str r4, [sp, #0x0] - bl FUN_020AE298 + bl AllocUsedBlockFromFreeBlock add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} - arm_func_end FUN_020AE11C + arm_func_end AllocFromTail - arm_func_start FUN_020AE1D8 -FUN_020AE1D8: ; 0x020AE1D8 + local_arm_func_start AllocFromHead +AllocFromHead: ; 0x020AE1D8 stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4 add r0, r0, #0x24 @@ -375,13 +373,13 @@ _020AE270: mov r4, #0x0 mov r2, lr str r4, [sp, #0x0] - bl FUN_020AE298 + bl AllocUsedBlockFromFreeBlock add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} - arm_func_end FUN_020AE1D8 + arm_func_end AllocFromHead - arm_func_start FUN_020AE298 -FUN_020AE298: ; 0x020AE298 + arm_func_start AllocUsedBlockFromFreeBlock +AllocUsedBlockFromFreeBlock: ; 0x020AE298 stmdb sp!, {r4-r8,lr} sub sp, sp, #0x18 mov r7, r0 @@ -389,7 +387,7 @@ FUN_020AE298: ; 0x020AE298 mov r8, r1 mov r6, r2 mov r5, r3 - bl FUN_020AE528 + bl GetRegionOfMBlock ldr r3, [sp, #0x4] sub r4, r6, #0x10 add r2, r5, r6 @@ -398,7 +396,7 @@ FUN_020AE298: ; 0x020AE298 str r4, [sp, #0x4] str r3, [sp, #0xc] str r2, [sp, #0x8] - bl FUN_020AE500 + bl RemoveMBlock ldr r2, [sp, #0x0] ldr r1, [sp, #0x4] mov r5, r0 @@ -408,11 +406,11 @@ FUN_020AE298: ; 0x020AE298 blo _020AE318 ldr r1, _020AE418 ; =0x00004652 add r0, sp, #0x0 - bl FUN_020AE4A0 + bl InitMBlock mov r1, r0 mov r0, r7 mov r2, r5 - bl FUN_020AE4D0 + bl InsertMBlock mov r5, r0 _020AE318: ldr r1, [sp, #0xc] @@ -423,11 +421,11 @@ _020AE318: blo _020AE34C ldr r1, _020AE418 ; =0x00004652 add r0, sp, #0x8 - bl FUN_020AE4A0 + bl InitMBlock mov r1, r0 mov r0, r7 mov r2, r5 - bl FUN_020AE4D0 + bl InsertMBlock _020AE34C: ldr r0, [r7, #-0x4] ldr r1, [sp, #0x4] @@ -446,7 +444,7 @@ _020AE378: add r0, sp, #0x10 str r4, [sp, #0x10] str r2, [sp, #0x14] - bl FUN_020AE4A0 + bl InitMBlock mov r1, r0 ldrh r3, [r1, #0x2] ldrh r2, [sp, #0x30] @@ -477,17 +475,17 @@ _020AE378: orr r2, r2, r3 strh r2, [r1, #0x2] ldr r2, [r7, #0xc] - bl FUN_020AE4D0 + bl InsertMBlock mov r0, r6 add sp, sp, #0x18 ldmia sp!, {r4-r8,pc} .balign 4 _020AE418: .word 0x00004652 _020AE41C: .word 0x00005544 - arm_func_end FUN_020AE298 + arm_func_end AllocUsedBlockFromFreeBlock - arm_func_start FUN_020AE420 -FUN_020AE420: ; 0x020AE420 + arm_func_start InitExpHeap +InitExpHeap: ; 0x020AE420 stmdb sp!, {r4-r5,lr} sub sp, sp, #0xc mov r5, r0 @@ -496,7 +494,7 @@ FUN_020AE420: ; 0x020AE420 str r2, [sp, #0x0] ldr r1, _020AE498 ; =0x45585048 add r2, r4, #0x14 - bl FUN_020ADCA4 + bl NNSi_FndInitHeapHead mov r0, #0x0 strh r0, [r4, #0x10] strh r0, [r4, #0x12] @@ -509,7 +507,7 @@ FUN_020AE420: ; 0x020AE420 str r2, [sp, #0x4] ldr r2, [r5, #0x1c] str r2, [sp, #0x8] - bl FUN_020AE4A0 + bl InitMBlock str r0, [r5, #0x24] str r0, [r4, #0x4] mov r1, #0x0 @@ -521,10 +519,10 @@ FUN_020AE420: ; 0x020AE420 .balign 4 _020AE498: .word 0x45585048 _020AE49C: .word 0x00004652 - arm_func_end FUN_020AE420 + arm_func_end InitExpHeap - arm_func_start FUN_020AE4A0 -FUN_020AE4A0: ; 0x020AE4A0 + arm_func_start InitMBlock +InitMBlock: ; 0x020AE4A0 ldr r3, [r0, #0x0] mov r2, #0x0 strh r1, [r3, #0x0] @@ -537,10 +535,10 @@ FUN_020AE4A0: ; 0x020AE4A0 mov r0, r3 str r2, [r3, #0xc] bx lr - arm_func_end FUN_020AE4A0 + arm_func_end InitMBlock - arm_func_start FUN_020AE4D0 -FUN_020AE4D0: ; 0x020AE4D0 + arm_func_start InsertMBlock +InsertMBlock: ; 0x020AE4D0 str r2, [r1, #0x8] cmp r2, #0x0 ldrne r3, [r2, #0xc] @@ -553,10 +551,10 @@ FUN_020AE4D0: ; 0x020AE4D0 streq r1, [r0, #0x4] mov r0, r1 bx lr - arm_func_end FUN_020AE4D0 + arm_func_end InsertMBlock - arm_func_start FUN_020AE500 -FUN_020AE500: ; 0x020AE500 + arm_func_start RemoveMBlock +RemoveMBlock: ; 0x020AE500 ldr r2, [r1, #0x8] ldr r1, [r1, #0xc] cmp r2, #0x0 @@ -567,10 +565,10 @@ FUN_020AE500: ; 0x020AE500 streq r2, [r0, #0x4] mov r0, r2 bx lr - arm_func_end FUN_020AE500 + arm_func_end RemoveMBlock - arm_func_start FUN_020AE528 -FUN_020AE528: ; 0x020AE528 + arm_func_start GetRegionOfMBlock +GetRegionOfMBlock: ; 0x020AE528 ldrh r2, [r1, #0x2] add r3, r1, #0x10 mov r2, r2, asr #0x8 @@ -582,4 +580,4 @@ FUN_020AE528: ; 0x020AE528 add r1, r1, r3 str r1, [r0, #0x4] bx lr - arm_func_end FUN_020AE528 + arm_func_end GetRegionOfMBlock diff --git a/arm9/asm/NNS_FND_frameheap.s b/arm9/asm/NNS_FND_frameheap.s index 078180b5..cfa221d4 100644 --- a/arm9/asm/NNS_FND_frameheap.s +++ b/arm9/asm/NNS_FND_frameheap.s @@ -1,13 +1,11 @@ .include "asm/macros.inc" .include "global.inc" - - .extern FUN_020ADCA4 - .extern FUN_020ADC8C - + .extern NNSi_FndInitHeapHead + .extern NNSi_FndFinalizeHeap .text - arm_func_start FUN_020AE554 -FUN_020AE554: ; 0x020AE554 + arm_func_start NNS_FndFreeByStateToFrmHeap +NNS_FndFreeByStateToFrmHeap: ; 0x020AE554 add r2, r0, #0x24 cmp r1, #0x0 ldr r3, [r2, #0x8] @@ -33,10 +31,10 @@ _020AE584: ldr r1, [r3, #0xc] str r1, [r2, #0x8] bx lr - arm_func_end FUN_020AE554 + arm_func_end NNS_FndFreeByStateToFrmHeap - arm_func_start FUN_020AE5B0 -FUN_020AE5B0: ; 0x020AE5B0 + arm_func_start NNS_FndRecordStateForFrmHeap +NNS_FndRecordStateForFrmHeap: ; 0x020AE5B0 stmdb sp!, {r4-r6,lr} add r4, r0, #0x24 ldr r5, [r0, #0x24] @@ -44,7 +42,7 @@ FUN_020AE5B0: ; 0x020AE5B0 mov r0, r4 mov r1, #0x10 mov r2, #0x4 - bl FUN_020AE77C + bl AllocFromHead cmp r0, #0x0 moveq r0, #0x0 ldmeqia sp!, {r4-r6,pc} @@ -57,29 +55,29 @@ FUN_020AE5B0: ; 0x020AE5B0 str r0, [r4, #0x8] mov r0, #0x1 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AE5B0 + arm_func_end NNS_FndRecordStateForFrmHeap - arm_func_start FUN_020AE600 -FUN_020AE600: ; 0x020AE600 + arm_func_start NNS_FndFreeToFrmHeap +NNS_FndFreeToFrmHeap: ; 0x020AE600 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r4, r1 mov r5, r0 ands r1, r4, #0x1 beq _020AE61C - bl FUN_020AE6F8 + bl FreeHead _020AE61C: ands r0, r4, #0x2 addeq sp, sp, #0x4 ldmeqia sp!, {r4-r5,pc} mov r0, r5 - bl FUN_020AE6C8 + bl FreeTail add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020AE600 + arm_func_end NNS_FndFreeToFrmHeap - arm_func_start FUN_020AE638 -FUN_020AE638: ; 0x020AE638 + arm_func_start NNS_FndAllocFromFrmHeapEx +NNS_FndAllocFromFrmHeapEx: ; 0x020AE638 stmdb sp!, {lr} sub sp, sp, #0x4 cmp r1, #0x0 @@ -89,26 +87,26 @@ FUN_020AE638: ; 0x020AE638 cmp r2, #0x0 bic r1, r1, #0x3 blt _020AE668 - bl FUN_020AE77C + bl AllocFromHead add sp, sp, #0x4 ldmia sp!, {pc} _020AE668: rsb r2, r2, #0x0 - bl FUN_020AE710 + bl AllocFromTail add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020AE638 + arm_func_end NNS_FndAllocFromFrmHeapEx - arm_func_start thunk_FUN_020adc8c_2 -thunk_FUN_020adc8c_2: ; 0x020AE678 - ldr ip, _020AE680 ; =FUN_020ADC8C + arm_func_start NNS_FndDestroyFrmHeap +NNS_FndDestroyFrmHeap: ; 0x020AE678 + ldr ip, _020AE680 ; =NNSi_FndFinalizeHeap bx r12 .balign 4 -_020AE680: .word FUN_020ADC8C - arm_func_end thunk_FUN_020adc8c_2 +_020AE680: .word NNSi_FndFinalizeHeap + arm_func_end NNS_FndDestroyFrmHeap - arm_func_start FUN_020AE684 -FUN_020AE684: ; 0x020AE684 + arm_func_start NNS_FndCreateFrmHeapEx +NNS_FndCreateFrmHeapEx: ; 0x020AE684 stmdb sp!, {lr} sub sp, sp, #0x4 add r1, r1, r0 @@ -125,13 +123,13 @@ _020AE6B0: mov r0, #0x0 ldmia sp!, {pc} _020AE6BC: - bl FUN_020AE7E0 + bl InitFrameHeap add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020AE684 + arm_func_end NNS_FndCreateFrmHeapEx - arm_func_start FUN_020AE6C8 -FUN_020AE6C8: ; 0x020AE6C8 + arm_func_start FreeTail +FreeTail: ; 0x020AE6C8 add r2, r0, #0x24 ldr r3, [r2, #0x8] cmp r3, #0x0 @@ -146,20 +144,20 @@ _020AE6EC: ldr r0, [r0, #0x1c] str r0, [r2, #0x4] bx lr - arm_func_end FUN_020AE6C8 + arm_func_end FreeTail - arm_func_start FUN_020AE6F8 -FUN_020AE6F8: ; 0x020AE6F8 + arm_func_start FreeHead +FreeHead: ; 0x020AE6F8 ldr r1, [r0, #0x18] add r2, r0, #0x24 str r1, [r0, #0x24] mov r0, #0x0 str r0, [r2, #0x8] bx lr - arm_func_end FUN_020AE6F8 + arm_func_end FreeHead - arm_func_start FUN_020AE710 -FUN_020AE710: ; 0x020AE710 + local_arm_func_start AllocFromTail +AllocFromTail: ; 0x020AE710 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 @@ -188,10 +186,10 @@ _020AE76C: str r4, [r5, #0x4] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020AE710 + arm_func_end AllocFromTail - arm_func_start FUN_020AE77C -FUN_020AE77C: + local_arm_func_start AllocFromHead +AllocFromHead: stmdb sp!, {r4-r6,lr} mov r6, r0 ldr r0, [r6, #0x0] @@ -218,10 +216,10 @@ _020AE7D4: mov r0, r5 str r4, [r6, #0x0] ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AE77C + arm_func_end AllocFromHead - arm_func_start FUN_020AE7E0 -FUN_020AE7E0: ; 0x020AE7E0 + arm_func_start InitFrameHeap +InitFrameHeap: ; 0x020AE7E0 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 @@ -230,7 +228,7 @@ FUN_020AE7E0: ; 0x020AE7E0 str r2, [sp, #0x0] ldr r1, _020AE828 ; =0x46524D48 add r2, r4, #0xc - bl FUN_020ADCA4 + bl NNSi_FndInitHeapHead ldr r0, [r5, #0x18] mov r1, #0x0 str r0, [r5, #0x24] @@ -242,4 +240,4 @@ FUN_020AE7E0: ; 0x020AE7E0 ldmia sp!, {r4-r5,pc} .balign 4 _020AE828: .word 0x46524D48 - arm_func_end FUN_020AE7E0 + arm_func_end InitFrameHeap diff --git a/arm9/asm/NNS_FND_heapcommon.s b/arm9/asm/NNS_FND_heapcommon.s index 0aa40512..ca3108d2 100644 --- a/arm9/asm/NNS_FND_heapcommon.s +++ b/arm9/asm/NNS_FND_heapcommon.s @@ -3,28 +3,27 @@ .section .bss - .global UNK_021CCD38 -UNK_021CCD38: ; 0x021CCD38 + .global sRootListInitialized +sRootListInitialized: ; 0x021CCD38 .space 0x4 - .global UNK_021CCD3C -UNK_021CCD3C: ; 0x021CCD3C + .global sRootList +sRootList: ; 0x021CCD3C .space 0xc - .text - arm_func_start FUN_020ADC8C -FUN_020ADC8C: ; 0x020ADC8C + arm_func_start NNSi_FndFinalizeHeap +NNSi_FndFinalizeHeap: ; 0x020ADC8C stmdb sp!, {r4,lr} mov r4, r0 - bl FUN_020ADD30 + bl FindListContainHeap mov r1, r4 - bl FUN_020ADAB0 + bl NNS_FndRemoveListObject ldmia sp!, {r4,pc} - arm_func_end FUN_020ADC8C + arm_func_end NNSi_FndFinalizeHeap - arm_func_start FUN_020ADCA4 -FUN_020ADCA4: + arm_func_start NNSi_FndInitHeapHead +NNSi_FndInitHeapHead: stmdb sp!, {r4,lr} mov r4, r0 str r1, [r4, #0x0] @@ -42,50 +41,50 @@ FUN_020ADCA4: add r0, r4, #0xc mov r1, #0x4 str r2, [r4, #0x20] - bl FUN_020ADC74 - ldr r0, _020ADD28 ; =UNK_021CCD38 + bl NNS_FndInitList + ldr r0, _020ADD28 ; =sRootListInitialized ldr r0, [r0, #0x0] cmp r0, #0x0 bne _020ADD14 - ldr r0, _020ADD2C ; =UNK_021CCD3C + ldr r0, _020ADD2C ; =sRootList mov r1, #0x4 - bl FUN_020ADC74 - ldr r0, _020ADD28 ; =UNK_021CCD38 + bl NNS_FndInitList + ldr r0, _020ADD28 ; =sRootListInitialized mov r1, #0x1 str r1, [r0, #0x0] _020ADD14: mov r0, r4 - bl FUN_020ADD30 + bl FindListContainHeap mov r1, r4 - bl FUN_020ADBE8 + bl NNS_FndAppendListObject ldmia sp!, {r4,pc} .balign 4 -_020ADD28: .word UNK_021CCD38 -_020ADD2C: .word UNK_021CCD3C - arm_func_end FUN_020ADCA4 +_020ADD28: .word sRootListInitialized +_020ADD2C: .word sRootList + arm_func_end NNSi_FndInitHeapHead - arm_func_start FUN_020ADD30 -FUN_020ADD30: ; 0x020ADD30 + arm_func_start FindListContainHeap +FindListContainHeap: ; 0x020ADD30 stmdb sp!, {r4,lr} - ldr r4, _020ADD54 ; =UNK_021CCD3C + ldr r4, _020ADD54 ; =sRootList mov r1, r0 mov r0, r4 - bl FUN_020ADD58 + bl FindContainHeap cmp r0, #0x0 addne r4, r0, #0xc mov r0, r4 ldmia sp!, {r4,pc} .balign 4 -_020ADD54: .word UNK_021CCD3C - arm_func_end FUN_020ADD30 +_020ADD54: .word sRootList + arm_func_end FindListContainHeap - arm_func_start FUN_020ADD58 -FUN_020ADD58: + arm_func_start FindContainHeap +FindContainHeap: stmdb sp!, {r4-r6,lr} mov r5, r1 mov r1, #0x0 mov r6, r0 - bl FUN_020ADA98 + bl NNS_FndGetNextListObject movs r4, r0 beq _020ADDB8 _020ADD74: @@ -97,17 +96,17 @@ _020ADD74: bhs _020ADDA4 mov r1, r5 add r0, r4, #0xc - bl FUN_020ADD58 + bl FindContainHeap cmp r0, #0x0 moveq r0, r4 ldmia sp!, {r4-r6,pc} _020ADDA4: mov r0, r6 mov r1, r4 - bl FUN_020ADA98 + bl NNS_FndGetNextListObject movs r4, r0 bne _020ADD74 _020ADDB8: mov r0, #0x0 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020ADD58 + arm_func_end FindContainHeap diff --git a/arm9/asm/NNS_FND_list.s b/arm9/asm/NNS_FND_list.s index b88b2159..21999c11 100644 --- a/arm9/asm/NNS_FND_list.s +++ b/arm9/asm/NNS_FND_list.s @@ -1,29 +1,28 @@ .include "asm/macros.inc" .include "global.inc" - .text - arm_func_start FUN_020ADA84 -FUN_020ADA84: ; 0x020ADA84 + arm_func_start NNS_FndGetPrevListObject +NNS_FndGetPrevListObject: ; 0x020ADA84 cmp r1, #0x0 ldreq r0, [r0, #0x4] ldrneh r0, [r0, #0xa] ldrne r0, [r1, r0] bx lr - arm_func_end FUN_020ADA84 + arm_func_end NNS_FndGetPrevListObject - arm_func_start FUN_020ADA98 -FUN_020ADA98: ; 0x020ADA98 + arm_func_start NNS_FndGetNextListObject +NNS_FndGetNextListObject: ; 0x020ADA98 cmp r1, #0x0 ldreq r0, [r0, #0x0] ldrneh r0, [r0, #0xa] addne r0, r1, r0 ldrne r0, [r0, #0x4] bx lr - arm_func_end FUN_020ADA98 + arm_func_end NNS_FndGetNextListObject - arm_func_start FUN_020ADAB0 -FUN_020ADAB0: ; 0x020ADAB0 + arm_func_start NNS_FndRemoveListObject +NNS_FndRemoveListObject: ; 0x020ADAB0 stmdb sp!, {lr} sub sp, sp, #0x4 ldrh r12, [r0, #0xa] @@ -50,16 +49,16 @@ FUN_020ADAB0: ; 0x020ADAB0 strh r1, [r0, #0x8] add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020ADAB0 + arm_func_end NNS_FndRemoveListObject - arm_func_start FUN_020ADB18 -FUN_020ADB18: ; 0x020ADB18 + arm_func_start NNS_FndInsertListObject +NNS_FndInsertListObject: ; 0x020ADB18 stmdb sp!, {lr} sub sp, sp, #0x4 cmp r1, #0x0 bne _020ADB38 mov r1, r2 - bl FUN_020ADBE8 + bl NNS_FndAppendListObject add sp, sp, #0x4 ldmia sp!, {pc} _020ADB38: @@ -67,7 +66,7 @@ _020ADB38: cmp r1, r3 bne _020ADB54 mov r1, r2 - bl FUN_020ADB8C + bl NNS_FndPrependListObject add sp, sp, #0x4 ldmia sp!, {pc} _020ADB54: @@ -85,16 +84,16 @@ _020ADB54: strh r1, [r0, #0x8] add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020ADB18 + arm_func_end NNS_FndInsertListObject - arm_func_start FUN_020ADB8C -FUN_020ADB8C: ; 0x020ADB8C + arm_func_start NNS_FndPrependListObject +NNS_FndPrependListObject: ; 0x020ADB8C stmdb sp!, {lr} sub sp, sp, #0x4 ldr r2, [r0, #0x0] cmp r2, #0x0 bne _020ADBAC - bl FUN_020ADC48 + bl SetFirstObject add sp, sp, #0x4 ldmia sp!, {pc} _020ADBAC: @@ -113,16 +112,16 @@ _020ADBAC: strh r1, [r0, #0x8] add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020ADB8C + arm_func_end NNS_FndPrependListObject - arm_func_start FUN_020ADBE8 -FUN_020ADBE8: ; 0x020ADBE8 + arm_func_start NNS_FndAppendListObject +NNS_FndAppendListObject: ; 0x020ADBE8 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r2, [r0, #0x0] cmp r2, #0x0 bne _020ADC08 - bl FUN_020ADC48 + bl SetFirstObject add sp, sp, #0x4 ldmia sp!, {pc} _020ADC08: @@ -142,10 +141,10 @@ _020ADC08: strh r1, [r0, #0x8] add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020ADBE8 + arm_func_end NNS_FndAppendListObject - arm_func_start FUN_020ADC48 -FUN_020ADC48: ; 0x020ADC48 + arm_func_start SetFirstObject +SetFirstObject: ; 0x020ADC48 ldrh r3, [r0, #0xa] mov r2, #0x0 add r12, r1, r3 @@ -157,14 +156,14 @@ FUN_020ADC48: ; 0x020ADC48 add r1, r1, #0x1 strh r1, [r0, #0x8] bx lr - arm_func_end FUN_020ADC48 + arm_func_end SetFirstObject - arm_func_start FUN_020ADC74 -FUN_020ADC74: ; 0x020ADC74 + arm_func_start NNS_FndInitList +NNS_FndInitList: ; 0x020ADC74 mov r2, #0x0 str r2, [r0, #0x0] str r2, [r0, #0x4] strh r2, [r0, #0x8] strh r1, [r0, #0xa] bx lr - arm_func_end FUN_020ADC74 + arm_func_end NNS_FndInitList diff --git a/arm9/asm/NNS_G2D_g2d_animation.s b/arm9/asm/NNS_G2D_g2d_animation.s index 60fcde4c..23daa1c6 100644 --- a/arm9/asm/NNS_G2D_g2d_animation.s +++ b/arm9/asm/NNS_G2D_g2d_animation.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020B0408 -FUN_020B0408: ; 0x020B0408 + arm_func_start NNSi_G2dIsAnimCtrlLoopAnim +NNSi_G2dIsAnimCtrlLoopAnim: ; 0x020B0408 ldr r1, [r0, #0x14] cmp r1, #0x0 ldreq r0, [r0, #0x18] @@ -20,21 +19,19 @@ _020B0428: _020B0430: mov r0, #0x0 bx lr - arm_func_end FUN_020B0408 + arm_func_end NNSi_G2dIsAnimCtrlLoopAnim - ; NNS_G2dBindAnimCtrl - arm_func_start FUN_020B0438 -FUN_020B0438: ; 0x020B0438 - ldr ip, _020B0444 ; =FUN_020B0448 + arm_func_start NNS_G2dBindAnimCtrl +NNS_G2dBindAnimCtrl: ; 0x020B0438 + ldr ip, _020B0444 ; =NNS_G2dResetAnimCtrlState str r1, [r0, #0x18] bx r12 .balign 4 -_020B0444: .word FUN_020B0448 - arm_func_end FUN_020B0438 +_020B0444: .word NNS_G2dResetAnimCtrlState + arm_func_end NNS_G2dBindAnimCtrl - ; NNS_G2dResetAnimCtrlState - arm_func_start FUN_020B0448 -FUN_020B0448: ; 0x020B0448 + arm_func_start NNS_G2dResetAnimCtrlState +NNS_G2dResetAnimCtrlState: ; 0x020B0448 ldr r1, [r0, #0x10] cmp r1, #0x0 movgt r2, #0x1 @@ -56,32 +53,30 @@ _020B047C: sub r1, r1, #0x8 str r1, [r0, #0x0] _020B0494: - ldr ip, _020B04A4 ; =FUN_020B0534 + ldr ip, _020B04A4 ; =NNS_G2dTickAnimCtrl mov r1, #0x0 str r1, [r0, #0xc] bx r12 .balign 4 -_020B04A4: .word FUN_020B0534 - arm_func_end FUN_020B0448 +_020B04A4: .word NNS_G2dTickAnimCtrl + arm_func_end NNS_G2dResetAnimCtrlState - ; _end - arm_func_start FUN_020B04A8 -FUN_020B04A8: ; 0x020B04A8 + arm_func_start NNS_G2dInitAnimCallBackFunctor +NNS_G2dInitAnimCallBackFunctor: ; 0x020B04A8 mov r1, #0x0 str r1, [r0, #0x0] str r1, [r0, #0x4] str r1, [r0, #0x8] strh r1, [r0, #0xc] bx lr - arm_func_end FUN_020B04A8 + arm_func_end NNS_G2dInitAnimCallBackFunctor - ; _end - arm_func_start FUN_020B04C0 -FUN_020B04C0: ; 0x020B04C0 + arm_func_start NNS_G2dInitAnimCtrl +NNS_G2dInitAnimCtrl: ; 0x020B04C0 stmdb sp!, {r4,lr} mov r4, r0 add r0, r4, #0x1c - bl FUN_020B04A8 + bl NNS_G2dInitAnimCallBackFunctor mov r1, #0x0 str r1, [r4, #0x0] str r1, [r4, #0x4] @@ -93,11 +88,10 @@ FUN_020B04C0: ; 0x020B04C0 str r1, [r4, #0x14] str r1, [r4, #0x18] ldmia sp!, {r4,pc} - arm_func_end FUN_020B04C0 + arm_func_end NNS_G2dInitAnimCtrl - ; _end - arm_func_start FUN_020B04FC -FUN_020B04FC: ; 0x020B04FC + arm_func_start NNS_G2dGetAnimCtrlCurrentFrame +NNS_G2dGetAnimCtrlCurrentFrame: ; 0x020B04FC ldr r1, [r0, #0x18] ldr r2, [r0, #0x0] ldr r0, [r1, #0xc] @@ -105,23 +99,21 @@ FUN_020B04FC: ; 0x020B04FC mov r0, r0, lsl #0xd mov r0, r0, lsr #0x10 bx lr - arm_func_end FUN_020B04FC + arm_func_end NNS_G2dGetAnimCtrlCurrentFrame - ; _end - arm_func_start FUN_020B0518 -FUN_020B0518: ; 0x020B0518 + arm_func_start NNS_G2dSetAnimCtrlCurrentFrame +NNS_G2dSetAnimCtrlCurrentFrame: ; 0x020B0518 stmdb sp!, {r4,lr} mov r4, r0 - bl FUN_020B06EC + bl SetAnimCtrlCurrentFrameImpl_ cmp r0, #0x0 movne r1, #0x0 strne r1, [r4, #0xc] ldmia sp!, {r4,pc} - arm_func_end FUN_020B0518 + arm_func_end NNS_G2dSetAnimCtrlCurrentFrame - ; _end - arm_func_start FUN_020B0534 -FUN_020B0534: ; 0x020B0534 + arm_func_start NNS_G2dTickAnimCtrl +NNS_G2dTickAnimCtrl: ; 0x020B0534 stmdb sp!, {r4-r8,lr} mov r8, r0 ldr r0, [r8, #0x8] @@ -192,7 +184,7 @@ _020B0634: cmp r0, #0x0 beq _020B0644 mov r0, r8 - bl FUN_020B0710 + bl SequenceEdgeHandle_ _020B0644: ldr r0, [r8, #0x1c] cmp r0, #0x0 @@ -238,19 +230,17 @@ _020B06D0: bne _020B058C mov r0, r7 ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020B0534 + arm_func_end NNS_G2dTickAnimCtrl - ; _end - arm_func_start FUN_020B06E0 -FUN_020B06E0: ; 0x020B06E0 + arm_func_start NNS_G2dGetAnimCtrlCurrentElement +NNS_G2dGetAnimCtrlCurrentElement: ; 0x020B06E0 ldr r0, [r0, #0x0] ldr r0, [r0, #0x0] bx lr - arm_func_end FUN_020B06E0 + arm_func_end NNS_G2dGetAnimCtrlCurrentElement - ; _end - arm_func_start FUN_020B06EC -FUN_020B06EC: ; 0x020B06EC + arm_func_start SetAnimCtrlCurrentFrameImpl_ +SetAnimCtrlCurrentFrameImpl_: ; 0x020B06EC ldr r3, [r0, #0x18] ldrh r2, [r3, #0x0] cmp r1, r2 @@ -260,11 +250,10 @@ FUN_020B06EC: ; 0x020B06EC movcc r0, #0x1 movcs r0, #0x0 bx lr - arm_func_end FUN_020B06EC + arm_func_end SetAnimCtrlCurrentFrameImpl_ - ; _end - arm_func_start FUN_020B0710 -FUN_020B0710: ; 0x020B0710 + arm_func_start SequenceEdgeHandle_ +SequenceEdgeHandle_: ; 0x020B0710 stmdb sp!, {r4,lr} mov r4, r0 ldr r0, [r4, #0x14] @@ -307,7 +296,7 @@ _020B0780: bne _020B0800 _020B07A8: mov r0, r4 - bl FUN_020B0448 + bl NNS_G2dResetAnimCtrlState b _020B0800 _020B07B4: ldr r0, [r4, #0x1c] @@ -330,7 +319,7 @@ _020B07D0: bne _020B0800 _020B07F8: mov r0, r4 - bl FUN_020B0448 + bl NNS_G2dResetAnimCtrlState _020B0800: ldr r1, [r4, #0x18] ldr r2, [r4, #0x0] @@ -344,5 +333,4 @@ _020B0800: cmp r2, r1 strcc r1, [r4, #0x0] ldmia sp!, {r4,pc} - arm_func_end FUN_020B0710 - + arm_func_end SequenceEdgeHandle_ diff --git a/arm9/asm/NNS_G2D_g2d_cellanimati.s b/arm9/asm/NNS_G2D_g2d_cellanimati.s index 91d32786..31720d7a 100644 --- a/arm9/asm/NNS_G2D_g2d_cellanimati.s +++ b/arm9/asm/NNS_G2D_g2d_cellanimati.s @@ -3,9 +3,8 @@ .section .text - ; NNS_G2dMakeCellToOams - arm_func_start FUN_020B1AF8 -FUN_020B1AF8: ; 0x020B1AF8 + arm_func_start NNS_G2dMakeCellToOams +NNS_G2dMakeCellToOams: ; 0x020B1AF8 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x34 ldrh r5, [r2, #0x0] @@ -85,7 +84,7 @@ _020B1C1C: cmp r6, #0x300 bne _020B1C70 ldr r4, _020B1E8C ; =0xC000C000 - ldr r8, _020B1E90 ; =UNK_020FF8AC + ldr r8, _020B1E90 ; =NNSi_objSizeWTbl and r5, r5, r4 and r4, r5, #0xc000 mov r6, r4, asr #0xe @@ -94,7 +93,7 @@ _020B1C1C: mov r4, r4, lsl #0x1 add r8, r8, r6, lsl #0x3 ldrh r9, [r4, r8] - ldr r8, _020B1E94 ; =UNK_020FF894 + ldr r8, _020B1E94 ; =NNSi_objSizeHTbl ldr r5, [sp, #0x20] add r6, r8, r6, lsl #0x3 add r5, r5, r9, lsl #0xb @@ -170,12 +169,12 @@ _020B1D54: and r5, r8, #0xc000 mov r6, r5, asr #0xe and r5, r8, #0xc0000000 - ldr r8, _020B1E90 ; =UNK_020FF8AC + ldr r8, _020B1E90 ; =NNSi_objSizeWTbl mov r5, r5, lsr #0x1e mov r5, r5, lsl #0x1 add r8, r8, r6, lsl #0x3 ldrh r9, [r5, r8] - ldr r8, _020B1E94 ; =UNK_020FF894 + ldr r8, _020B1E94 ; =NNSi_objSizeHTbl ldr r4, [sp, #0x20] add r6, r8, r6, lsl #0x3 mov r11, r9, asr #0x1 @@ -247,53 +246,49 @@ _020B1E7C: .balign 4 _020B1E88: .word 0x01FF0000 _020B1E8C: .word 0xC000C000 -_020B1E90: .word UNK_020FF8AC -_020B1E94: .word UNK_020FF894 +_020B1E90: .word NNSi_objSizeWTbl +_020B1E94: .word NNSi_objSizeHTbl _020B1E98: .word 0xC1FFFCFF _020B1E9C: .word 0x000001FF _020B1EA0: .word 0xFE00FF00 - arm_func_end FUN_020B1AF8 + arm_func_end NNS_G2dMakeCellToOams - ; _end - arm_func_start FUN_020B1EA4 -FUN_020B1EA4: ; 0x020B1EA4 + arm_func_start NNS_G2dSetCellAnimationCurrentFrame +NNS_G2dSetCellAnimationCurrentFrame: ; 0x020B1EA4 stmdb sp!, {r4,lr} mov r4, r0 - bl FUN_020B0518 + bl NNS_G2dSetAnimCtrlCurrentFrame cmp r0, #0x0 ldmeqia sp!, {r4,pc} mov r0, r4 - bl FUN_020B1FC4 + bl ApplyCurrentAnimResult_ ldmia sp!, {r4,pc} - arm_func_end FUN_020B1EA4 + arm_func_end NNS_G2dSetCellAnimationCurrentFrame - ; _end - arm_func_start FUN_020B1EC4 -FUN_020B1EC4: ; 0x020B1EC4 + arm_func_start NNS_G2dTickCellAnimation +NNS_G2dTickCellAnimation: ; 0x020B1EC4 stmdb sp!, {r4,lr} mov r4, r0 - bl FUN_020B0534 + bl NNS_G2dTickAnimCtrl cmp r0, #0x0 ldmeqia sp!, {r4,pc} mov r0, r4 - bl FUN_020B1FC4 + bl ApplyCurrentAnimResult_ ldmia sp!, {r4,pc} - arm_func_end FUN_020B1EC4 + arm_func_end NNS_G2dTickCellAnimation - ; _end - arm_func_start FUN_020B1EE4 -FUN_020B1EE4: ; 0x020B1EE4 + arm_func_start NNS_G2dSetCellAnimationSequence +NNS_G2dSetCellAnimationSequence: ; 0x020B1EE4 stmdb sp!, {r4,lr} mov r4, r0 - bl FUN_020B0438 + bl NNS_G2dBindAnimCtrl mov r0, r4 - bl FUN_020B1FC4 + bl ApplyCurrentAnimResult_ ldmia sp!, {r4,pc} - arm_func_end FUN_020B1EE4 + arm_func_end NNS_G2dSetCellAnimationSequence - ; _end - arm_func_start FUN_020B1EFC -FUN_020B1EFC: ; 0x020B1EFC + arm_func_start NNS_G2dInitCellAnimationVramTransfered +NNS_G2dInitCellAnimationVramTransfered: ; 0x020B1EFC stmdb sp!, {r4-r7,lr} sub sp, sp, #0x14 mov r4, r2 @@ -313,25 +308,24 @@ FUN_020B1EFC: ; 0x020B1EFC ldr r3, [sp, #0x30] mov r0, r6 str r12, [sp, #0xc] - bl FUN_020B45F0 + bl NNSi_G2dInitCellTransferState str r6, [r7, #0x34] str r4, [r7, #0x30] add r0, r7, #0x38 mov r1, #0x1 str r6, [r7, #0x34] - bl FUN_020B1A68 + bl NNSi_G2dSrtcInitControl mov r0, r7 - bl FUN_020B04C0 + bl NNS_G2dInitAnimCtrl mov r0, r7 mov r1, r5 - bl FUN_020B1EE4 + bl NNS_G2dSetCellAnimationSequence add sp, sp, #0x14 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B1EFC + arm_func_end NNS_G2dInitCellAnimationVramTransfered - ; _end - arm_func_start FUN_020B1F80 -FUN_020B1F80: ; 0x020B1F80 + arm_func_start NNS_G2dInitCellAnimation +NNS_G2dInitCellAnimation: ; 0x020B1F80 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 @@ -341,19 +335,18 @@ FUN_020B1F80: ; 0x020B1F80 add r0, r5, #0x38 mov r1, #0x1 str r2, [r5, #0x34] - bl FUN_020B1A68 + bl NNSi_G2dSrtcInitControl mov r0, r5 - bl FUN_020B04C0 + bl NNS_G2dInitAnimCtrl mov r0, r5 mov r1, r4 - bl FUN_020B1EE4 + bl NNS_G2dSetCellAnimationSequence add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020B1F80 + arm_func_end NNS_G2dInitCellAnimation - ; _end - arm_func_start FUN_020B1FC4 -FUN_020B1FC4: ; 0x020B1FC4 + arm_func_start ApplyCurrentAnimResult_ +ApplyCurrentAnimResult_: ; 0x020B1FC4 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r5, r0 @@ -362,19 +355,19 @@ FUN_020B1FC4: ; 0x020B1FC4 cmp r1, #0x0 addeq sp, sp, #0x4 ldmeqia sp!, {r4-r7,pc} - bl FUN_020B06E0 + bl NNS_G2dGetAnimCtrlCurrentElement mov r4, r0 ldr r7, [r5, #0x30] ldrh r1, [r4, #0x0] mov r0, r7 - bl FUN_020AFE8C + bl NNS_G2dGetCellDataByIdx str r0, [r5, #0x2c] ldr r1, [r5, #0x18] add r0, r5, #0x38 ldr r2, [r1, #0x4] mov r1, #0x1 and r6, r2, #0xff - bl FUN_020B1A68 + bl NNSi_G2dSrtcInitControl cmp r6, #0x0 beq _020B2068 cmp r6, #0x2 @@ -382,20 +375,20 @@ FUN_020B1FC4: ; 0x020B1FC4 ldrsh r1, [r4, #0x4] ldrsh r2, [r4, #0x6] add r0, r5, #0x38 - bl FUN_020B1AB4 + bl NNSi_G2dSrtcSetTrans b _020B2068 _020B203C: ldr r1, [r4, #0x4] ldr r2, [r4, #0x8] add r0, r5, #0x38 - bl FUN_020B1A78 + bl NNSi_G2dSrtcSetSRTScale ldrh r1, [r4, #0x2] add r0, r5, #0x38 - bl FUN_020B1A98 + bl NNSi_G2dSrtcSetSRTRotZ ldrsh r1, [r4, #0xc] ldrsh r2, [r4, #0xe] add r0, r5, #0x38 - bl FUN_020B1AB4 + bl NNSi_G2dSrtcSetTrans _020B2068: ldr r2, [r7, #0xc] cmp r2, #0x0 @@ -418,8 +411,7 @@ _020B2068: add r3, r2, r1, lsl #0x3 ldr r1, [r2, r1, lsl #0x3] ldr r2, [r3, #0x4] - bl FUN_020B4400 + bl NNS_G2dSetCellTransferStateRequested add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B1FC4 - + arm_func_end ApplyCurrentAnimResult_ diff --git a/arm9/asm/NNS_G2D_g2d_celltransfe.s b/arm9/asm/NNS_G2D_g2d_celltransfe.s index f7c8cec6..0e41bdba 100644 --- a/arm9/asm/NNS_G2D_g2d_celltransfe.s +++ b/arm9/asm/NNS_G2D_g2d_celltransfe.s @@ -3,41 +3,36 @@ .section .rodata - ; cvtTbl$7926 - .global UNK_020FF8C4 -UNK_020FF8C4: ; 0x020FF8C4 + .global cvtTbl$7926 +cvtTbl$7926: ; 0x020FF8C4 .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00 - ; static const in function + .section .bss - ; s_pTaskRegisterFunc - .global UNK_021CECFC -UNK_021CECFC: ; 0x021CECFC + .global s_pTaskRegisterFunc +s_pTaskRegisterFunc: ; 0x021CECFC .space 0x4 - ; s_numCellState - .global UNK_021CED00 -UNK_021CED00: ; 0x021CED00 + .global s_numCellState +s_numCellState: ; 0x021CED00 .space 0x4 - ; s_pCellStateArray - .global UNK_021CED04 -UNK_021CED04: ; 0x021CED04 + .global s_pCellStateArray +s_pCellStateArray: ; 0x021CED04 .space 0x4 .section .text - ; NNS_G2dFreeCellTransferStateHandle - arm_func_start FUN_020B4358 -FUN_020B4358: ; 0x020B4358 + arm_func_start NNS_G2dFreeCellTransferStateHandle +NNS_G2dFreeCellTransferStateHandle: ; 0x020B4358 stmdb sp!, {r4,lr} - ldr r2, _020B43A0 ; =UNK_021CED04 + ldr r2, _020B43A0 ; =s_pCellStateArray mov r1, #0x30 ldr r2, [r2, #0x0] mla r4, r0, r1, r2 mov r0, r4 - bl FUN_020B10CC + bl NNSi_G2dInitializeVRamLocation mov r0, #0x0 str r0, [r4, #0xc] str r0, [r4, #0x10] @@ -50,18 +45,17 @@ FUN_020B4358: ; 0x020B4358 str r0, [r4, #0x2c] ldmia sp!, {r4,pc} .balign 4 -_020B43A0: .word UNK_021CED04 - arm_func_end FUN_020B4358 +_020B43A0: .word s_pCellStateArray + arm_func_end NNS_G2dFreeCellTransferStateHandle - ; NNS_G2dGetNewCellTransferStateHandle - arm_func_start FUN_020B43A4 -FUN_020B43A4: ; 0x020B43A4 - ldr r1, _020B43F8 ; =UNK_021CED00 + arm_func_start NNS_G2dGetNewCellTransferStateHandle +NNS_G2dGetNewCellTransferStateHandle: ; 0x020B43A4 + ldr r1, _020B43F8 ; =s_numCellState mov r0, #0x0 ldr r3, [r1, #0x0] cmp r3, #0x0 bls _020B43F0 - ldr r1, _020B43FC ; =UNK_021CED04 + ldr r1, _020B43FC ; =s_pCellStateArray ldr r2, [r1, #0x0] mov r12, r2 _020B43C4: @@ -80,34 +74,32 @@ _020B43F0: mvn r0, #0x0 bx lr .balign 4 -_020B43F8: .word UNK_021CED00 -_020B43FC: .word UNK_021CED04 - arm_func_end FUN_020B43A4 +_020B43F8: .word s_numCellState +_020B43FC: .word s_pCellStateArray + arm_func_end NNS_G2dGetNewCellTransferStateHandle - ; _end - arm_func_start FUN_020B4400 -FUN_020B4400: ; 0x020B4400 + arm_func_start NNS_G2dSetCellTransferStateRequested +NNS_G2dSetCellTransferStateRequested: ; 0x020B4400 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r1 mov r4, r2 - bl FUN_020B469C + bl NNSi_G2dGetCellTransferState mvn r1, #0x0 str r1, [r0, #0x24] str r5, [r0, #0x28] str r4, [r0, #0x2c] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020B4400 + arm_func_end NNS_G2dSetCellTransferStateRequested - ; NNS_G2dUpdateCellTransferStateManager - arm_func_start FUN_020B442C -FUN_020B442C: ; 0x020B442C + arm_func_start NNS_G2dUpdateCellTransferStateManager +NNS_G2dUpdateCellTransferStateManager: ; 0x020B442C stmdb sp!, {r4-r11,lr} sub sp, sp, #0x14 mov r0, #0x0 str r0, [sp, #0x0] - ldr r0, _020B4558 ; =UNK_021CED00 + ldr r0, _020B4558 ; =s_numCellState ldr r0, [r0, #0x0] cmp r0, #0x0 addls sp, sp, #0x14 @@ -119,7 +111,7 @@ FUN_020B442C: ; 0x020B442C str r0, [sp, #0x8] str r0, [sp, #0xc] _020B4468: - ldr r0, _020B455C ; =UNK_021CED04 + ldr r0, _020B455C ; =s_pCellStateArray ldr r1, [r0, #0x0] ldr r0, [sp, #0x4] add r8, r1, r0 @@ -143,17 +135,17 @@ _020B4498: _020B44B8: cmp r1, #0x0 beq _020B4514 - ldr r0, _020B4560 ; =UNK_020FF8C4 + ldr r0, _020B4560 ; =cvtTbl$7926 cmp r9, #0x0 ldr r7, [r0, r9, lsl #0x2] ldreq r10, [r8, #0x14] mov r0, r8 mov r1, r9 ldrne r10, [r8, #0x10] - bl FUN_020B10BC + bl NNSi_G2dGetVramLocation mov r1, r0 mov r0, r7 - ldr r7, _020B4564 ; =UNK_021CECFC + ldr r7, _020B4564 ; =s_pTaskRegisterFunc ldr r2, [r8, #0x28] ldr r3, [r8, #0x2c] ldr r7, [r7, #0x0] @@ -172,7 +164,7 @@ _020B4520: ldr r0, [sp, #0xc] str r0, [r8, #0x20] _020B4528: - ldr r0, _020B4558 ; =UNK_021CED00 + ldr r0, _020B4558 ; =s_numCellState ldr r1, [r0, #0x0] ldr r0, [sp, #0x0] add r0, r0, #0x1 @@ -185,21 +177,20 @@ _020B4528: add sp, sp, #0x14 ldmia sp!, {r4-r11,pc} .balign 4 -_020B4558: .word UNK_021CED00 -_020B455C: .word UNK_021CED04 -_020B4560: .word UNK_020FF8C4 -_020B4564: .word UNK_021CECFC - arm_func_end FUN_020B442C +_020B4558: .word s_numCellState +_020B455C: .word s_pCellStateArray +_020B4560: .word cvtTbl$7926 +_020B4564: .word s_pTaskRegisterFunc + arm_func_end NNS_G2dUpdateCellTransferStateManager - ; NNS_G2dInitCellTransferStateManager - arm_func_start FUN_020B4568 -FUN_020B4568: ; 0x020B4568 + arm_func_start NNS_G2dInitCellTransferStateManager +NNS_G2dInitCellTransferStateManager: ; 0x020B4568 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 - ldr ip, _020B45E4 ; =UNK_021CECFC + ldr ip, _020B45E4 ; =s_pTaskRegisterFunc movs r6, r1 - ldr r1, _020B45E8 ; =UNK_021CED00 - ldr r3, _020B45EC ; =UNK_021CED04 + ldr r1, _020B45E8 ; =s_numCellState + ldr r3, _020B45EC ; =s_pCellStateArray mov r7, r0 str r2, [r12, #0x0] mov r5, #0x0 @@ -210,7 +201,7 @@ FUN_020B4568: ; 0x020B4568 mov r4, r5 _020B45A0: mov r0, r7 - bl FUN_020B10CC + bl NNSi_G2dInitializeVRamLocation str r4, [r7, #0xc] str r4, [r7, #0x10] str r4, [r7, #0x14] @@ -227,17 +218,16 @@ _020B45A0: add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020B45E4: .word UNK_021CECFC -_020B45E8: .word UNK_021CED00 -_020B45EC: .word UNK_021CED04 - arm_func_end FUN_020B4568 +_020B45E4: .word s_pTaskRegisterFunc +_020B45E8: .word s_numCellState +_020B45EC: .word s_pCellStateArray + arm_func_end NNS_G2dInitCellTransferStateManager - ; NNSi_G2dInitCellTransferState - arm_func_start FUN_020B45F0 -FUN_020B45F0: ; 0x020B45F0 + arm_func_start NNSi_G2dInitCellTransferState +NNSi_G2dInitCellTransferState: ; 0x020B45F0 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 - ldr ip, _020B4698 ; =UNK_021CED04 + ldr ip, _020B4698 ; =s_pCellStateArray mov r4, #0x30 ldr r12, [r12, #0x0] mov r7, r1 @@ -245,14 +235,14 @@ FUN_020B45F0: ; 0x020B45F0 mov r0, r4 mov r6, r2 mov r5, r3 - bl FUN_020B10CC + bl NNSi_G2dInitializeVRamLocation mvn r0, #0x0 cmp r7, r0 beq _020B4638 mov r0, r4 mov r2, r7 mov r1, #0x0 - bl FUN_020B10C4 + bl NNSi_G2dSetVramLocation _020B4638: mvn r0, #0x0 cmp r6, r0 @@ -260,7 +250,7 @@ _020B4638: mov r0, r4 mov r2, r6 mov r1, #0x1 - bl FUN_020B10C4 + bl NNSi_G2dSetVramLocation _020B4654: mvn r0, #0x0 cmp r5, r0 @@ -268,7 +258,7 @@ _020B4654: mov r0, r4 mov r2, r5 mov r1, #0x2 - bl FUN_020B10C4 + bl NNSi_G2dSetVramLocation _020B4670: ldr r1, [sp, #0x18] ldr r0, [sp, #0x1c] @@ -281,18 +271,16 @@ _020B4670: add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020B4698: .word UNK_021CED04 - arm_func_end FUN_020B45F0 +_020B4698: .word s_pCellStateArray + arm_func_end NNSi_G2dInitCellTransferState - ; NNSi_G2dGetCellTransferState - arm_func_start FUN_020B469C -FUN_020B469C: ; 0x020B469C - ldr r2, _020B46B0 ; =UNK_021CED04 + arm_func_start NNSi_G2dGetCellTransferState +NNSi_G2dGetCellTransferState: ; 0x020B469C + ldr r2, _020B46B0 ; =s_pCellStateArray mov r1, #0x30 ldr r2, [r2, #0x0] mla r0, r1, r0, r2 bx lr .balign 4 -_020B46B0: .word UNK_021CED04 - arm_func_end FUN_020B469C - +_020B46B0: .word s_pCellStateArray + arm_func_end NNSi_G2dGetCellTransferState diff --git a/arm9/asm/NNS_G2D_g2d_charcanvas.s b/arm9/asm/NNS_G2D_g2d_charcanvas.s index b21235e8..6f483596 100644 --- a/arm9/asm/NNS_G2D_g2d_charcanvas.s +++ b/arm9/asm/NNS_G2D_g2d_charcanvas.s @@ -3,27 +3,22 @@ .section .rodata - ; objs$8221 - .global UNK_020FF970 -UNK_020FF970: ; 0x020FF970 + .global objs$8221 +objs$8221: ; 0x020FF970 .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01 .byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x00, 0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03 - ; static const in function - ; shape$8277 - .global UNK_020FF990 -UNK_020FF990: ; 0x020FF990 + .global shape$8277 +shape$8277: ; 0x020FF990 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0xC0 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xC0 - ; static const in function .section .text - ; NNS_G2dArrangeOBJ1D - arm_func_start FUN_020B5E50 -FUN_020B5E50: ; 0x020B5E50 + arm_func_start NNS_G2dArrangeOBJ1D +NNS_G2dArrangeOBJ1D: ; 0x020B5E50 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x3c mov r7, r0 @@ -48,7 +43,7 @@ FUN_020B5E50: ; 0x020B5E50 movge r1, #0x3 clzlt r0, r0 rsblt r1, r0, #0x1f - ldr r0, _020B6170 ; =UNK_020FF970 + ldr r0, _020B6170 ; =objs$8221 mvn r3, #0x0 add r1, r0, r1, lsl #0x3 add r0, r1, r2, lsl #0x1 @@ -69,7 +64,7 @@ FUN_020B5E50: ; 0x020B5E50 strne r1, [sp, #0x24] mov r1, #0x0 str r1, [sp, #0x28] - bl FUN_020B704C + bl OBJSizeToShape ldr r1, [sp, #0x10] ldr r2, [sp, #0x14] mov r10, r1, asr r4 @@ -155,7 +150,7 @@ _020B5FE8: add r3, r11, r1, lsl #0x3 mov r0, r7 mov r1, r4 - bl FUN_020B5E50 + bl NNS_G2dArrangeOBJ1D ldr r1, [sp, #0x24] add r7, r7, r0, lsl #0x3 mul r2, r1, r4 @@ -186,7 +181,7 @@ _020B6078: str r1, [sp, #0xc] ldr r1, [sp, #0x1c] mov r2, r4 - bl FUN_020B5E50 + bl NNS_G2dArrangeOBJ1D ldr r2, [sp, #0x24] ldr r1, [sp, #0x1c] add r7, r7, r0, lsl #0x3 @@ -223,7 +218,7 @@ _020B60F0: mov r0, r7 add r3, r11, r3, lsl #0x3 str r4, [sp, #0xc] - bl FUN_020B5E50 + bl NNS_G2dArrangeOBJ1D ldr r1, [sp, #0x28] add r0, r1, r0 str r0, [sp, #0x28] @@ -232,15 +227,14 @@ _020B6164: add sp, sp, #0x3c ldmia sp!, {r4-r11,pc} .balign 4 -_020B6170: .word UNK_020FF970 +_020B6170: .word objs$8221 _020B6174: .word 0x000001FF _020B6178: .word 0xFE00FF00 _020B617C: .word 0x3FFF3FFF - arm_func_end FUN_020B5E50 + arm_func_end NNS_G2dArrangeOBJ1D - ; _end - arm_func_start FUN_020B6180 -FUN_020B6180: ; 0x020B6180 + arm_func_start NNSi_G2dCalcRequiredOBJ +NNSi_G2dCalcRequiredOBJ: ; 0x020B6180 stmdb sp!, {r4-r6,lr} mov r3, r0, lsr #0x3 mov r6, r1, lsr #0x3 @@ -264,11 +258,10 @@ FUN_020B6180: ; 0x020B6180 add r0, lr, r0, lsr #0x2 mla r0, r1, r0, r12 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020B6180 + arm_func_end NNSi_G2dCalcRequiredOBJ - ; _end - arm_func_start FUN_020B61DC -FUN_020B61DC: ; 0x020B61DC + arm_func_start NNS_G2dMapScrToChar256x16Pltt +NNS_G2dMapScrToChar256x16Pltt: ; 0x020B61DC stmdb sp!, {r4-r8,lr} ldr r12, [sp, #0x1c] ldr r8, [sp, #0x18] @@ -297,11 +290,10 @@ _020B622C: add r0, r0, lr blt _020B6204 ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020B61DC + arm_func_end NNS_G2dMapScrToChar256x16Pltt - ; _end - arm_func_start FUN_020B6240 -FUN_020B6240: ; 0x020B6240 + arm_func_start NNS_G2dMapScrToCharText +NNS_G2dMapScrToCharText: ; 0x020B6240 stmdb sp!, {r4-r8,lr} sub sp, sp, #0x8 ldr r5, [sp, #0x24] @@ -315,7 +307,7 @@ FUN_020B6240: ; 0x020B6240 mov r3, r5 add r0, r0, r4, lsl #0x1 str lr, [sp, #0x4] - bl FUN_020B61DC + bl NNS_G2dMapScrToChar256x16Pltt add sp, sp, #0x8 ldmia sp!, {r4-r8,pc} _020B6280: @@ -352,11 +344,10 @@ _020B62E4: blt _020B62A0 add sp, sp, #0x8 ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020B6240 + arm_func_end NNS_G2dMapScrToCharText - ; NNS_G2dCharCanvasInitForOBJ1D - arm_func_start FUN_020B62F8 -FUN_020B62F8: ; 0x020B62F8 + arm_func_start NNS_G2dCharCanvasInitForOBJ1D +NNS_G2dCharCanvasInitForOBJ1D: ; 0x020B62F8 stmdb sp!, {r4-r6,lr} sub sp, sp, #0x18 cmp r2, #0x8 @@ -369,16 +360,16 @@ FUN_020B62F8: ; 0x020B62F8 movge r6, #0x3 clzlt r4, r4 rsblt r6, r4, #0x1f - ldr r4, _020B6378 ; =UNK_020FF970 + ldr r4, _020B6378 ; =objs$8221 ldr r5, [sp, #0x28] add r4, r4, r6, lsl #0x3 ldrb r6, [r4, r12, lsl #0x1] add r12, r4, r12, lsl #0x1 - ldr r4, _020B637C ; =FUN_020B6908 + ldr r4, _020B637C ; =DrawGlyph1D strb r6, [sp, #0x14] ldrb r6, [r12, #0x1] - ldr lr, _020B6380 ; =FUN_020B68AC - ldr ip, _020B6384 ; =FUN_020B64C0 + ldr lr, _020B6380 ; =ClearContinuous + ldr ip, _020B6384 ; =ClearArea1D strb r6, [sp, #0x15] str r5, [sp, #0x0] str r4, [sp, #0x4] @@ -386,42 +377,40 @@ FUN_020B62F8: ; 0x020B62F8 str r12, [sp, #0xc] ldr r12, [sp, #0x14] str r12, [sp, #0x10] - bl FUN_020B6488 + bl InitCharCanvas add sp, sp, #0x18 ldmia sp!, {r4-r6,pc} .balign 4 -_020B6378: .word UNK_020FF970 -_020B637C: .word FUN_020B6908 -_020B6380: .word FUN_020B68AC -_020B6384: .word FUN_020B64C0 - arm_func_end FUN_020B62F8 +_020B6378: .word objs$8221 +_020B637C: .word DrawGlyph1D +_020B6380: .word ClearContinuous +_020B6384: .word ClearArea1D + arm_func_end NNS_G2dCharCanvasInitForOBJ1D - ; NNS_G2dCharCanvasInitForBG - arm_func_start FUN_020B6388 -FUN_020B6388: ; 0x020B6388 + arm_func_start NNS_G2dCharCanvasInitForBG +NNS_G2dCharCanvasInitForBG: ; 0x020B6388 stmdb sp!, {lr} sub sp, sp, #0x14 ldr lr, [sp, #0x18] - ldr ip, _020B63C0 ; =FUN_020B6B10 + ldr ip, _020B63C0 ; =DrawGlyphLine str lr, [sp, #0x0] - ldr lr, _020B63C4 ; =FUN_020B68AC + ldr lr, _020B63C4 ; =ClearContinuous str r12, [sp, #0x4] - ldr ip, _020B63C8 ; =FUN_020B66D4 + ldr ip, _020B63C8 ; =ClearAreaLine str lr, [sp, #0x8] str r12, [sp, #0xc] str r2, [sp, #0x10] - bl FUN_020B6488 + bl InitCharCanvas add sp, sp, #0x14 ldmia sp!, {pc} .balign 4 -_020B63C0: .word FUN_020B6B10 -_020B63C4: .word FUN_020B68AC -_020B63C8: .word FUN_020B66D4 - arm_func_end FUN_020B6388 +_020B63C0: .word DrawGlyphLine +_020B63C4: .word ClearContinuous +_020B63C8: .word ClearAreaLine + arm_func_end NNS_G2dCharCanvasInitForBG - ; NNS_G2dCharCanvasDrawChar - arm_func_start FUN_020B63CC -FUN_020B63CC: ; 0x020B63CC + arm_func_start NNS_G2dCharCanvasDrawChar +NNS_G2dCharCanvasDrawChar: ; 0x020B63CC stmdb sp!, {r4-r8,lr} sub sp, sp, #0x10 mov r7, r1 @@ -430,7 +419,7 @@ FUN_020B63CC: ; 0x020B63CC mov r0, r7 mov r6, r2 mov r5, r3 - bl FUN_020B5CE4 + bl NNS_G2dFontFindGlyphIndex ldr r1, _020B6484 ; =0x0000FFFF mov r4, r0 cmp r4, r1 @@ -438,7 +427,7 @@ FUN_020B63CC: ; 0x020B63CC ldreqh r4, [r0, #0x2] mov r0, r7 mov r1, r4 - bl FUN_020B5C88 + bl NNS_G2dFontGetCharWidthsFromIndex str r0, [sp, #0x8] ldr r0, [r7, #0x0] ldr r2, [sp, #0x28] @@ -470,11 +459,10 @@ FUN_020B63CC: ; 0x020B63CC ldmia sp!, {r4-r8,pc} .balign 4 _020B6484: .word 0x0000FFFF - arm_func_end FUN_020B63CC + arm_func_end NNS_G2dCharCanvasDrawChar - ; _end - arm_func_start FUN_020B6488 -FUN_020B6488: ; 0x020B6488 + arm_func_start InitCharCanvas +InitCharCanvas: ; 0x020B6488 str r2, [r0, #0x4] ldr r2, [sp, #0x0] str r3, [r0, #0x8] @@ -489,11 +477,10 @@ FUN_020B6488: ; 0x020B6488 str r2, [r0, #0x1c] str r1, [r0, #0x10] bx lr - arm_func_end FUN_020B6488 + arm_func_end InitCharCanvas - ; _end - arm_func_start FUN_020B64C0 -FUN_020B64C0: ; 0x020B64C0 + arm_func_start ClearArea1D +ClearArea1D: ; 0x020B64C0 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x54 ldrb r4, [r0, #0xc] @@ -597,7 +584,7 @@ _020B6630: str r0, [sp, #0x4] mov r0, r7 mov r1, r6 - bl FUN_020B7068 + bl GetCharIndex1D ldr r2, [sp, #0x1c] cmp r8, r10 sublt r1, r10, r8 @@ -616,7 +603,7 @@ _020B6630: ldr r2, [sp, #0x28] mla r0, r12, r0, r2 mov r2, r9 - bl FUN_020B6F18 + bl ClearChar add r8, r8, #0x8 add r7, r7, #0x1 cmp r8, r5 @@ -631,11 +618,10 @@ _020B66B0: blt _020B65E4 add sp, sp, #0x54 ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B64C0 + arm_func_end ClearArea1D - ; _end - arm_func_start FUN_020B66D4 -FUN_020B66D4: ; 0x020B66D4 + arm_func_start ClearAreaLine +ClearAreaLine: ; 0x020B66D4 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x3c ldrb r4, [r0, #0xc] @@ -739,7 +725,7 @@ _020B6828: mov r2, r9 str r0, [sp, #0x8] mov r0, r6 - bl FUN_020B6F18 + bl ClearChar ldr r0, [sp, #0x30] add r8, r8, #0x8 add r6, r6, r0 @@ -758,11 +744,10 @@ _020B687C: blt _020B67E0 add sp, sp, #0x3c ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B66D4 + arm_func_end ClearAreaLine - ; _end - arm_func_start FUN_020B68AC -FUN_020B68AC: ; 0x020B68AC + arm_func_start ClearContinuous +ClearContinuous: ; 0x020B68AC stmdb sp!, {lr} sub sp, sp, #0x4 mov r3, r0 @@ -786,11 +771,10 @@ FUN_020B68AC: ; 0x020B68AC bl MIi_CpuClearFast add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020B68AC + arm_func_end ClearContinuous - ; _end - arm_func_start FUN_020B6908 -FUN_020B6908: ; 0x020B6908 + arm_func_start DrawGlyph1D +DrawGlyph1D: ; 0x020B6908 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4c ldr r7, [sp, #0x74] @@ -904,12 +888,12 @@ _020B6AAC: mov r0, r7 mov r1, r10 str r4, [sp, #0x4] - bl FUN_020B7068 + bl GetCharIndex1D mla r1, r0, r5, r6 add r0, sp, #0x24 str r9, [sp, #0x2c] str r1, [sp, #0x24] - bl FUN_020B6CAC + bl LetterChar sub r9, r9, #0x8 add r7, r7, #0x1 cmp r9, r8 @@ -924,11 +908,10 @@ _020B6AEC: bgt _020B6A90 add sp, sp, #0x4c ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B6908 + arm_func_end DrawGlyph1D - ; _end - arm_func_start FUN_020B6B10 -FUN_020B6B10: ; 0x020B6B10 + arm_func_start DrawGlyphLine +DrawGlyphLine: ; 0x020B6B10 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x2c ldr r4, [sp, #0x54] @@ -1022,7 +1005,7 @@ _020B6C70: mov r0, r4 str r6, [sp, #0x4] str r8, [sp, #0xc] - bl FUN_020B6CAC + bl LetterChar sub r8, r8, #0x8 cmp r8, r7 add r6, r6, r5 @@ -1035,11 +1018,10 @@ _020B6C90: bgt _020B6C60 add sp, sp, #0x2c ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B6B10 + arm_func_end DrawGlyphLine - ; _end - arm_func_start FUN_020B6CAC -FUN_020B6CAC: ; 0x020B6CAC + arm_func_start LetterChar +LetterChar: ; 0x020B6CAC stmdb sp!, {r4-r11,lr} sub sp, sp, #0x34 ldr r5, [r0, #0x8] @@ -1108,7 +1090,7 @@ _020B6D88: strb r0, [sp, #0x28] strb r0, [sp, #0x29] mov r0, r9 - bl FUN_020B76B0 + bl NNSi_G2dBitReaderRead ldr r8, [sp, #0x0] mov r0, r8 cmp r0, r10 @@ -1116,7 +1098,7 @@ _020B6D88: _020B6DCC: mov r0, r9 mov r1, r6 - bl FUN_020B76B0 + bl NNSi_G2dBitReaderRead cmp r0, #0x0 mvnne r1, r4, lsl r8 addne r0, r7, r0 @@ -1165,7 +1147,7 @@ _020B6E58: strb r0, [sp, #0x30] strb r0, [sp, #0x31] add r0, sp, #0x2c - bl FUN_020B76B0 + bl NNSi_G2dBitReaderRead ldr r0, [sp, #0x0] cmp r0, r10 mov r5, r0 @@ -1173,7 +1155,7 @@ _020B6E58: _020B6EA0: add r0, sp, #0x2c mov r1, r6 - bl FUN_020B76B0 + bl NNSi_G2dBitReaderRead cmp r0, #0x0 beq _020B6EDC cmp r5, #0x20 @@ -1203,11 +1185,10 @@ _020B6EE8: blo _020B6E58 add sp, sp, #0x34 ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B6CAC + arm_func_end LetterChar - ; _end - arm_func_start FUN_020B6F18 -FUN_020B6F18: ; 0x020B6F18 + arm_func_start ClearChar +ClearChar: ; 0x020B6F18 stmdb sp!, {r4-r6,lr} mov lr, r0 cmp r3, #0x8 @@ -1289,27 +1270,25 @@ _020B701C: cmp r5, r4 blo _020B701C ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020B6F18 + arm_func_end ClearChar - ; OBJSizeToShape - arm_func_start FUN_020B704C -FUN_020B704C: ; 0x020B704C + arm_func_start OBJSizeToShape +OBJSizeToShape: ; 0x020B704C ldrb r3, [r0, #0x1] - ldr r2, _020B7064 ; =UNK_020FF990 + ldr r2, _020B7064 ; =shape$8277 ldrb r1, [r0, #0x0] add r0, r2, r3, lsl #0x4 ldr r0, [r0, r1, lsl #0x2] bx lr .balign 4 -_020B7064: .word UNK_020FF990 - arm_func_end FUN_020B704C +_020B7064: .word shape$8277 + arm_func_end OBJSizeToShape - ; GetCharIndex1D - arm_func_start FUN_020B7068 -FUN_020B7068: ; 0x020B7068 + arm_func_start GetCharIndex1D +GetCharIndex1D: ; 0x020B7068 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4 - ldr fp, _020B7164 ; =UNK_020FF970 + ldr fp, _020B7164 ; =objs$8221 mov r9, #0x0 mov r10, #0x3 mvn r7, #0x0 @@ -1374,6 +1353,5 @@ _020B7118: add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} .balign 4 -_020B7164: .word UNK_020FF970 - arm_func_end FUN_020B7068 - +_020B7164: .word objs$8221 + arm_func_end GetCharIndex1D diff --git a/arm9/asm/NNS_G2D_g2d_font.s b/arm9/asm/NNS_G2D_g2d_font.s index acb0abe8..162fe423 100644 --- a/arm9/asm/NNS_G2D_g2d_font.s +++ b/arm9/asm/NNS_G2D_g2d_font.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020B5ABC -FUN_020B5ABC: ; 0x020B5ABC + arm_func_start NNSi_G2dFontGetTextRect +NNSi_G2dFontGetTextRect: ; 0x020B5ABC stmdb sp!, {r4-r9,lr} sub sp, sp, #0xc add r5, sp, #0x0 @@ -25,7 +24,7 @@ _020B5AF8: mov r0, r9 mov r1, r8 mov r3, r6 - bl FUN_020B5BC8 + bl NNSi_G2dFontGetStringWidth ldr r1, [sp, #0x0] ldr r2, [sp, #0x28] cmp r0, r1 @@ -46,11 +45,10 @@ _020B5B24: str r1, [r5, #0x4] add sp, sp, #0xc ldmia sp!, {r4-r9,pc} - arm_func_end FUN_020B5ABC + arm_func_end NNSi_G2dFontGetTextRect - ; _end - arm_func_start FUN_020B5B54 -FUN_020B5B54: ; 0x020B5B54 + arm_func_start NNSi_G2dFontGetTextHeight +NNSi_G2dFontGetTextHeight: ; 0x020B5B54 stmdb sp!, {r4-r8,lr} sub sp, sp, #0x10 str r2, [sp, #0x0] @@ -82,11 +80,10 @@ _020B5BAC: sub r0, r0, r5 add sp, sp, #0x10 ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020B5B54 + arm_func_end NNSi_G2dFontGetTextHeight - ; NNSi_G2dFontGetStringWidth - arm_func_start FUN_020B5BC8 -FUN_020B5BC8: ; 0x020B5BC8 + arm_func_start NNSi_G2dFontGetStringWidth +NNSi_G2dFontGetStringWidth: ; 0x020B5BC8 stmdb sp!, {r4-r10,lr} sub sp, sp, #0x8 mov r8, r0 @@ -105,13 +102,13 @@ _020B5C00: cmp r1, #0xa beq _020B5C58 mov r0, r8 - bl FUN_020B5CE4 + bl NNS_G2dFontFindGlyphIndex mov r1, r0 cmp r1, r9 ldreq r0, [r8, #0x0] ldreqh r1, [r0, #0x2] mov r0, r8 - bl FUN_020B5C88 + bl NNS_G2dFontGetCharWidthsFromIndex ldrh r1, [r8, #0x8] cmp r1, #0x0 ldrnesb r1, [r0, #0x0] @@ -139,11 +136,10 @@ _020B5C70: ldmia sp!, {r4-r10,pc} .balign 4 _020B5C84: .word 0x0000FFFF - arm_func_end FUN_020B5BC8 + arm_func_end NNSi_G2dFontGetStringWidth - ; _end - arm_func_start FUN_020B5C88 -FUN_020B5C88: ; 0x020B5C88 + arm_func_start NNS_G2dFontGetCharWidthsFromIndex +NNS_G2dFontGetCharWidthsFromIndex: ; 0x020B5C88 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r3, [r0, #0x0] @@ -170,11 +166,10 @@ _020B5CD8: add r0, r3, #0x4 add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020B5C88 + arm_func_end NNS_G2dFontGetCharWidthsFromIndex - ; NNS_G2dFontFindGlyphIndex - arm_func_start FUN_020B5CE4 -FUN_020B5CE4: ; 0x020B5CE4 + arm_func_start NNS_G2dFontFindGlyphIndex +NNS_G2dFontFindGlyphIndex: ; 0x020B5CE4 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r0, [r0, #0x0] @@ -188,7 +183,7 @@ _020B5CFC: ldrh r2, [r0, #0x2] cmp r1, r2 bhi _020B5D20 - bl FUN_020B5D7C + bl GetGlyphIndex add sp, sp, #0x4 ldmia sp!, {pc} _020B5D20: @@ -201,33 +196,31 @@ _020B5D2C: ldmia sp!, {pc} .balign 4 _020B5D38: .word 0x0000FFFF - arm_func_end FUN_020B5CE4 + arm_func_end NNS_G2dFontFindGlyphIndex - ; NNS_G2dFontInitUTF16 - arm_func_start FUN_020B5D3C -FUN_020B5D3C: ; 0x020B5D3C + arm_func_start NNS_G2dFontInitUTF16 +NNS_G2dFontInitUTF16: ; 0x020B5D3C stmdb sp!, {r4,lr} mov r4, r0 mov r0, r1 mov r1, r4 - bl FUN_020B7558 + bl NNSi_G2dGetUnpackedFont sub r0, r0, #0x1 strh r0, [r4, #0x8] ldrh r0, [r4, #0x8] cmp r0, #0x0 movne r1, #0x2 moveq r1, #0x3 - ldr r0, _020B5D78 ; =FUN_020B7718 + ldr r0, _020B5D78 ; =NNSi_G2dSplitCharUTF16 strh r1, [r4, #0xa] str r0, [r4, #0x4] ldmia sp!, {r4,pc} .balign 4 -_020B5D78: .word FUN_020B7718 - arm_func_end FUN_020B5D3C +_020B5D78: .word NNSi_G2dSplitCharUTF16 + arm_func_end NNS_G2dFontInitUTF16 - ; GetGlyphIndex - arm_func_start FUN_020B5D7C -FUN_020B5D7C: ; 0x020B5D7C + arm_func_start GetGlyphIndex +GetGlyphIndex: ; 0x020B5D7C stmdb sp!, {lr} sub sp, sp, #0x4 ldrh r3, [r0, #0x4] @@ -288,5 +281,4 @@ _020B5E40: ldmia sp!, {pc} .balign 4 _020B5E4C: .word 0x0000FFFF - arm_func_end FUN_020B5D7C - + arm_func_end GetGlyphIndex diff --git a/arm9/asm/NNS_G2D_g2d_image.s b/arm9/asm/NNS_G2D_g2d_image.s index 208994cc..796da6c6 100644 --- a/arm9/asm/NNS_G2D_g2d_image.s +++ b/arm9/asm/NNS_G2D_g2d_image.s @@ -3,23 +3,20 @@ .section .text - ; _end - arm_func_start FUN_020B10BC -FUN_020B10BC: ; 0x020B10BC + arm_func_start NNSi_G2dGetVramLocation +NNSi_G2dGetVramLocation: ; 0x020B10BC ldr r0, [r0, r1, lsl #0x2] bx lr - arm_func_end FUN_020B10BC + arm_func_end NNSi_G2dGetVramLocation - ; _end - arm_func_start FUN_020B10C4 -FUN_020B10C4: ; 0x020B10C4 + arm_func_start NNSi_G2dSetVramLocation +NNSi_G2dSetVramLocation: ; 0x020B10C4 str r2, [r0, r1, lsl #0x2] bx lr - arm_func_end FUN_020B10C4 + arm_func_end NNSi_G2dSetVramLocation - ; _end - arm_func_start FUN_020B10CC -FUN_020B10CC: ; 0x020B10CC + arm_func_start NNSi_G2dInitializeVRamLocation +NNSi_G2dInitializeVRamLocation: ; 0x020B10CC mov r2, #0x0 mvn r1, #0x0 _020B10D4: @@ -28,11 +25,10 @@ _020B10D4: cmp r2, #0x3 blt _020B10D4 bx lr - arm_func_end FUN_020B10CC + arm_func_end NNSi_G2dInitializeVRamLocation - ; _end - arm_func_start FUN_020B10E8 -FUN_020B10E8: ; 0x020B10E8 + arm_func_start NNS_G2dLoadPaletteEx +NNS_G2dLoadPaletteEx: ; 0x020B10E8 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4 mov r10, r0 @@ -124,14 +120,13 @@ _020B1210: mov r1, r8 mov r2, r11 str r4, [r3, #0x4] - bl FUN_020B19D0 + bl NNS_G2dSetImagePaletteLocation add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B10E8 + arm_func_end NNS_G2dLoadPaletteEx - ; _end - arm_func_start FUN_020B1240 -FUN_020B1240: ; 0x020B1240 + arm_func_start NNS_G2dLoadPalette +NNS_G2dLoadPalette: ; 0x020B1240 stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4 mov r9, r0 @@ -199,14 +194,13 @@ _020B1318: mov r1, r7 mov r2, r8 str r3, [r6, #0x4] - bl FUN_020B19D0 + bl NNS_G2dSetImagePaletteLocation add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} - arm_func_end FUN_020B1240 + arm_func_end NNS_G2dLoadPalette - ; NNS_G2dLoadImageVramTransfer - arm_func_start FUN_020B1340 -FUN_020B1340: ; 0x020B1340 + arm_func_start NNS_G2dLoadImageVramTransfer +NNS_G2dLoadImageVramTransfer: ; 0x020B1340 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r7, r0 @@ -349,17 +343,16 @@ _020B14E8: mov r1, r5 mov r2, r6 str r3, [r4, #0x20] - bl FUN_020B1A1C + bl NNS_G2dSetImageLocation add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 _020B1520: .word 0xFFCFFFEF _020B1524: .word 0x04001000 - arm_func_end FUN_020B1340 + arm_func_end NNS_G2dLoadImageVramTransfer - ; NNS_G2dLoadImage2DMapping - arm_func_start FUN_020B1528 -FUN_020B1528: ; 0x020B1528 + arm_func_start NNS_G2dLoadImage2DMapping +NNS_G2dLoadImage2DMapping: ; 0x020B1528 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r7, r0 @@ -528,17 +521,16 @@ _020B1728: mov r1, r5 mov r2, r6 str r3, [r4, #0x20] - bl FUN_020B1A1C + bl NNS_G2dSetImageLocation add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 _020B1760: .word 0xFFCFFFEF _020B1764: .word 0x04001000 - arm_func_end FUN_020B1528 + arm_func_end NNS_G2dLoadImage2DMapping - ; NNS_G2dLoadImage1DMapping - arm_func_start FUN_020B1768 -FUN_020B1768: ; 0x020B1768 + arm_func_start NNS_G2dLoadImage1DMapping +NNS_G2dLoadImage1DMapping: ; 0x020B1768 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r7, r0 @@ -707,17 +699,16 @@ _020B1968: mov r1, r5 mov r2, r6 str r3, [r4, #0x20] - bl FUN_020B1A1C + bl NNS_G2dSetImageLocation add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 _020B19A0: .word 0xFFCFFFEF _020B19A4: .word 0x04001000 - arm_func_end FUN_020B1768 + arm_func_end NNS_G2dLoadImage1DMapping - ; _end - arm_func_start FUN_020B19A8 -FUN_020B19A8: ; 0x020B19A8 + arm_func_start NNS_G2dIsImagePaletteReadyToUse +NNS_G2dIsImagePaletteReadyToUse: ; 0x020B19A8 add r0, r0, r1, lsl #0x2 ldr r1, [r0, #0x8] mvn r0, #0x0 @@ -725,27 +716,24 @@ FUN_020B19A8: ; 0x020B19A8 movne r0, #0x1 moveq r0, #0x0 bx lr - arm_func_end FUN_020B19A8 + arm_func_end NNS_G2dIsImagePaletteReadyToUse - ; _end - arm_func_start FUN_020B19C4 -FUN_020B19C4: ; 0x020B19C4 + arm_func_start NNS_G2dGetImagePaletteLocation +NNS_G2dGetImagePaletteLocation: ; 0x020B19C4 add r0, r0, r1, lsl #0x2 ldr r0, [r0, #0x8] bx lr - arm_func_end FUN_020B19C4 + arm_func_end NNS_G2dGetImagePaletteLocation - ; _end - arm_func_start FUN_020B19D0 -FUN_020B19D0: ; 0x020B19D0 + arm_func_start NNS_G2dSetImagePaletteLocation +NNS_G2dSetImagePaletteLocation: ; 0x020B19D0 add r0, r0, r1, lsl #0x2 str r2, [r0, #0x8] bx lr - arm_func_end FUN_020B19D0 + arm_func_end NNS_G2dSetImagePaletteLocation - ; _end - arm_func_start FUN_020B19DC -FUN_020B19DC: ; 0x020B19DC + arm_func_start NNS_G2dInitImagePaletteProxy +NNS_G2dInitImagePaletteProxy: ; 0x020B19DC mov r3, #0x0 mvn r2, #0x0 _020B19E4: @@ -755,36 +743,32 @@ _020B19E4: cmp r3, #0x3 blt _020B19E4 bx lr - arm_func_end FUN_020B19DC + arm_func_end NNS_G2dInitImagePaletteProxy - ; _end - arm_func_start FUN_020B19FC -FUN_020B19FC: ; 0x020B19FC + arm_func_start NNS_G2dIsImageReadyToUse +NNS_G2dIsImageReadyToUse: ; 0x020B19FC ldr r1, [r0, r1, lsl #0x2] mvn r0, #0x0 cmp r1, r0 movne r0, #0x1 moveq r0, #0x0 bx lr - arm_func_end FUN_020B19FC + arm_func_end NNS_G2dIsImageReadyToUse - ; _end - arm_func_start FUN_020B1A14 -FUN_020B1A14: ; 0x020B1A14 + arm_func_start NNS_G2dGetImageLocation +NNS_G2dGetImageLocation: ; 0x020B1A14 ldr r0, [r0, r1, lsl #0x2] bx lr - arm_func_end FUN_020B1A14 + arm_func_end NNS_G2dGetImageLocation - ; _end - arm_func_start FUN_020B1A1C -FUN_020B1A1C: ; 0x020B1A1C + arm_func_start NNS_G2dSetImageLocation +NNS_G2dSetImageLocation: ; 0x020B1A1C str r2, [r0, r1, lsl #0x2] bx lr - arm_func_end FUN_020B1A1C + arm_func_end NNS_G2dSetImageLocation - ; _end - arm_func_start FUN_020B1A24 -FUN_020B1A24: ; 0x020B1A24 + arm_func_start NNS_G2dInitImageProxy +NNS_G2dInitImageProxy: ; 0x020B1A24 mov r2, #0x0 mvn r1, #0x0 _020B1A2C: @@ -793,5 +777,4 @@ _020B1A2C: cmp r2, #0x3 blt _020B1A2C bx lr - arm_func_end FUN_020B1A24 - + arm_func_end NNS_G2dInitImageProxy diff --git a/arm9/asm/NNS_G2D_g2d_load.s b/arm9/asm/NNS_G2D_g2d_load.s index ea06ed9c..340d8b17 100644 --- a/arm9/asm/NNS_G2D_g2d_load.s +++ b/arm9/asm/NNS_G2D_g2d_load.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020B01B0 -FUN_020B01B0: ; 0x020B01B0 + arm_func_start NNSi_G2dUnpackUserExCellAttrBank +NNSi_G2dUnpackUserExCellAttrBank: ; 0x020B01B0 ldr r1, [r0, #0x4] mov r12, #0x0 add r1, r1, r0 @@ -25,11 +24,10 @@ _020B01CC: cmp r12, r2 blo _020B01CC bx lr - arm_func_end FUN_020B01B0 + arm_func_end NNSi_G2dUnpackUserExCellAttrBank - ; _end - arm_func_start FUN_020B01F8 -FUN_020B01F8: ; 0x020B01F8 + arm_func_start NNS_G2dFindBinaryBlock +NNS_G2dFindBinaryBlock: ; 0x020B01F8 stmdb sp!, {lr} sub sp, sp, #0x4 ldrh r2, [r0, #0xc] @@ -54,5 +52,4 @@ _020B0244: mov r0, #0x0 add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020B01F8 - + arm_func_end NNS_G2dFindBinaryBlock diff --git a/arm9/asm/NNS_G2D_g2d_multicellan.s b/arm9/asm/NNS_G2D_g2d_multicellan.s index c6aaf3e6..8e2206df 100644 --- a/arm9/asm/NNS_G2D_g2d_multicellan.s +++ b/arm9/asm/NNS_G2D_g2d_multicellan.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020B20C8 -FUN_020B20C8: ; 0x020B20C8 + arm_func_start NNS_G2dInitMCAnimation +NNS_G2dInitMCAnimation: ; 0x020B20C8 stmdb sp!, {r4-r11,lr} sub sp, sp, #0xc mov r6, #0x0 @@ -28,17 +27,17 @@ _020B210C: mul r4, r6, r0 ldr r1, [sp, #0x4] add r0, r10, r4 - bl FUN_020B1AD4 + bl NNSi_G2dInitializeNode mov r0, #0x54 mla r5, r6, r0, r9 ldr r1, [sp, #0x8] mov r0, r7 str r5, [r10, r4] - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx mov r1, r0 mov r0, r5 mov r2, r11 - bl FUN_020B1F80 + bl NNS_G2dInitCellAnimation add r0, r6, #0x1 mov r0, r0, lsl #0x10 mov r6, r0, lsr #0x10 @@ -46,44 +45,43 @@ _020B210C: blo _020B210C _020B215C: ldr r0, [sp, #0x0] - bl FUN_020B04C0 + bl NNS_G2dInitAnimCtrl ldr r0, [sp, #0x0] ldr r3, [sp, #0x38] ldr r2, [sp, #0x0] add r0, r0, #0x44 mov r1, #0x1 str r3, [r2, #0x40] - bl FUN_020B1A68 + bl NNSi_G2dSrtcInitControl ldr r0, [sp, #0x0] mov r1, #0x0 strh r1, [r0, #0x2c] add sp, sp, #0xc ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B20C8 + arm_func_end NNS_G2dInitMCAnimation - ; _end - arm_func_start FUN_020B2194 -FUN_020B2194: ; 0x020B2194 + arm_func_start NNS_G2dSetMCAnimationCurrentFrame +NNS_G2dSetMCAnimationCurrentFrame: ; 0x020B2194 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r7, r0 - bl FUN_020B0518 + bl NNS_G2dSetAnimCtrlCurrentFrame cmp r0, #0x0 addeq sp, sp, #0x4 ldmeqia sp!, {r4-r7,pc} mov r0, r7 - bl FUN_020B06E0 + bl NNS_G2dGetAnimCtrlCurrentElement mov r4, r0 ldrh r1, [r4, #0x0] ldr r0, [r7, #0x40] - bl FUN_020AFF34 + bl NNS_G2dGetMultiCellDataByIdx ldr r1, [r7, #0x18] mov r6, r0 ldr r1, [r1, #0x4] add r0, r7, #0x44 and r5, r1, #0xff mov r1, #0x1 - bl FUN_020B1A68 + bl NNSi_G2dSrtcInitControl cmp r5, #0x0 beq _020B2234 cmp r5, #0x2 @@ -91,57 +89,56 @@ FUN_020B2194: ; 0x020B2194 ldrsh r1, [r4, #0x4] ldrsh r2, [r4, #0x6] add r0, r7, #0x44 - bl FUN_020B1AB4 + bl NNSi_G2dSrtcSetTrans b _020B2234 _020B2208: ldr r1, [r4, #0x4] ldr r2, [r4, #0x8] add r0, r7, #0x44 - bl FUN_020B1A78 + bl NNSi_G2dSrtcSetSRTScale ldrh r1, [r4, #0x2] add r0, r7, #0x44 - bl FUN_020B1A98 + bl NNSi_G2dSrtcSetSRTRotZ ldrsh r1, [r4, #0xc] ldrsh r2, [r4, #0xe] add r0, r7, #0x44 - bl FUN_020B1AB4 + bl NNSi_G2dSrtcSetTrans _020B2234: ldrh r2, [r7, #0x2c] mov r1, r6 add r0, r7, #0x30 - bl FUN_020B24E0 + bl SetMCDataToMCInstanceImpl_ add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B2194 + arm_func_end NNS_G2dSetMCAnimationCurrentFrame - ; _end - arm_func_start FUN_020B224C -FUN_020B224C: ; 0x020B224C + arm_func_start NNS_G2dTickMCAnimation +NNS_G2dTickMCAnimation: ; 0x020B224C stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r4, r0 ldr r2, [r4, #0x0] mov r6, r1 ldrh r5, [r2, #0x4] - bl FUN_020B0534 + bl NNS_G2dTickAnimCtrl cmp r0, #0x0 beq _020B2318 ldrh r1, [r4, #0x2c] mov r0, r4 add r1, r1, r5 strh r1, [r4, #0x2c] - bl FUN_020B06E0 + bl NNS_G2dGetAnimCtrlCurrentElement mov r5, r0 ldrh r1, [r5, #0x0] ldr r0, [r4, #0x40] - bl FUN_020AFF34 + bl NNS_G2dGetMultiCellDataByIdx ldr r1, [r4, #0x18] mov r7, r0 ldr r1, [r1, #0x4] add r0, r4, #0x44 and r6, r1, #0xff mov r1, #0x1 - bl FUN_020B1A68 + bl NNSi_G2dSrtcInitControl cmp r6, #0x0 beq _020B2300 cmp r6, #0x2 @@ -149,38 +146,37 @@ FUN_020B224C: ; 0x020B224C ldrsh r1, [r5, #0x4] ldrsh r2, [r5, #0x6] add r0, r4, #0x44 - bl FUN_020B1AB4 + bl NNSi_G2dSrtcSetTrans b _020B2300 _020B22D4: ldr r1, [r5, #0x4] ldr r2, [r5, #0x8] add r0, r4, #0x44 - bl FUN_020B1A78 + bl NNSi_G2dSrtcSetSRTScale ldrh r1, [r5, #0x2] add r0, r4, #0x44 - bl FUN_020B1A98 + bl NNSi_G2dSrtcSetSRTRotZ ldrsh r1, [r5, #0xc] ldrsh r2, [r5, #0xe] add r0, r4, #0x44 - bl FUN_020B1AB4 + bl NNSi_G2dSrtcSetTrans _020B2300: ldrh r2, [r4, #0x2c] mov r1, r7 add r0, r4, #0x30 - bl FUN_020B24E0 + bl SetMCDataToMCInstanceImpl_ add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} _020B2318: mov r1, r6 add r0, r4, #0x30 - bl FUN_020B232C + bl NNS_G2dTickMCInstance add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B224C + arm_func_end NNS_G2dTickMCAnimation - ; _end - arm_func_start FUN_020B232C -FUN_020B232C: ; 0x020B232C + arm_func_start NNS_G2dTickMCInstance +NNS_G2dTickMCInstance: ; 0x020B232C stmdb sp!, {r4-r8,lr} mov r7, r0 ldr r0, [r7, #0x8] @@ -197,7 +193,7 @@ FUN_020B232C: ; 0x020B232C _020B2360: mla r0, r5, r8, r4 mov r1, r6 - bl FUN_020B1EC4 + bl NNS_G2dTickCellAnimation ldr r1, [r7, #0x0] add r0, r5, #0x1 mov r0, r0, lsl #0x10 @@ -218,7 +214,7 @@ _020B23A8: mul r0, r5, r8 ldr r0, [r4, r0] mov r1, r6 - bl FUN_020B1EC4 + bl NNS_G2dTickCellAnimation ldr r1, [r7, #0x0] add r0, r5, #0x1 mov r0, r0, lsl #0x10 @@ -227,11 +223,10 @@ _020B23A8: cmp r5, r1 blo _020B23A8 ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020B232C + arm_func_end NNS_G2dTickMCInstance - ; _end - arm_func_start FUN_020B23D8 -FUN_020B23D8: ; 0x020B23D8 + arm_func_start NNS_G2dGetMCBankNumNodesRequired +NNS_G2dGetMCBankNumNodesRequired: ; 0x020B23D8 stmdb sp!, {r4-r6,lr} mov r5, r0 ldrh r0, [r5, #0x0] @@ -242,7 +237,7 @@ FUN_020B23D8: ; 0x020B23D8 _020B23F4: mov r0, r5 mov r1, r6 - bl FUN_020AFF34 + bl NNS_G2dGetMultiCellDataByIdx ldrh r0, [r0, #0x0] ldrh r1, [r5, #0x0] cmp r0, r4 @@ -255,30 +250,29 @@ _020B23F4: _020B2424: mov r0, r4 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020B23D8 + arm_func_end NNS_G2dGetMCBankNumNodesRequired - ; _end - arm_func_start FUN_020B242C -FUN_020B242C: ; 0x020B242C + arm_func_start NNS_G2dSetAnimSequenceToMCAnimation +NNS_G2dSetAnimSequenceToMCAnimation: ; 0x020B242C stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r7, r0 - bl FUN_020B0438 + bl NNS_G2dBindAnimCtrl mov r1, #0x0 mov r0, r7 strh r1, [r7, #0x2c] - bl FUN_020B06E0 + bl NNS_G2dGetAnimCtrlCurrentElement mov r4, r0 ldrh r1, [r4, #0x0] ldr r0, [r7, #0x40] - bl FUN_020AFF34 + bl NNS_G2dGetMultiCellDataByIdx ldr r1, [r7, #0x18] mov r6, r0 ldr r1, [r1, #0x4] add r0, r7, #0x44 and r5, r1, #0xff mov r1, #0x1 - bl FUN_020B1A68 + bl NNSi_G2dSrtcInitControl cmp r5, #0x0 beq _020B24C8 cmp r5, #0x2 @@ -286,32 +280,31 @@ FUN_020B242C: ; 0x020B242C ldrsh r1, [r4, #0x4] ldrsh r2, [r4, #0x6] add r0, r7, #0x44 - bl FUN_020B1AB4 + bl NNSi_G2dSrtcSetTrans b _020B24C8 _020B249C: ldr r1, [r4, #0x4] ldr r2, [r4, #0x8] add r0, r7, #0x44 - bl FUN_020B1A78 + bl NNSi_G2dSrtcSetSRTScale ldrh r1, [r4, #0x2] add r0, r7, #0x44 - bl FUN_020B1A98 + bl NNSi_G2dSrtcSetSRTRotZ ldrsh r1, [r4, #0xc] ldrsh r2, [r4, #0xe] add r0, r7, #0x44 - bl FUN_020B1AB4 + bl NNSi_G2dSrtcSetTrans _020B24C8: ldrh r2, [r7, #0x2c] mov r1, r6 add r0, r7, #0x30 - bl FUN_020B24E0 + bl SetMCDataToMCInstanceImpl_ add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B242C + arm_func_end NNS_G2dSetAnimSequenceToMCAnimation - ; _end - arm_func_start FUN_020B24E0 -FUN_020B24E0: ; 0x020B24E0 + arm_func_start SetMCDataToMCInstanceImpl_ +SetMCDataToMCInstanceImpl_: ; 0x020B24E0 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x14 mov r10, r1 @@ -361,11 +354,11 @@ _020B2560: ldr r0, [sp, #0x0] ldrh r1, [r7, #0x0] ldr r0, [r0, #0x4] - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx mov r4, r0 mov r0, r6 mov r1, r4 - bl FUN_020B1EE4 + bl NNS_G2dSetCellAnimationSequence str r11, [r6, #0x8] ldrh r0, [r7, #0x6] and r0, r0, #0xf @@ -386,7 +379,7 @@ _020B25D8: blo _020B25D8 _020B25F0: mov r0, r6 - bl FUN_020B0408 + bl NNSi_G2dIsAnimCtrlLoopAnim cmp r0, #0x0 beq _020B261C mov r0, r9 @@ -394,14 +387,14 @@ _020B25F0: bl _u32_div_f mov r0, r6 mov r1, r1, lsl #0xc - bl FUN_020B1EC4 + bl NNS_G2dTickCellAnimation b _020B2630 _020B261C: cmp r9, r7 movcc r7, r9 mov r0, r6 mov r1, r7, lsl #0xc - bl FUN_020B1EC4 + bl NNS_G2dTickCellAnimation _020B2630: str r11, [r6, #0x54] _020B2634: @@ -434,11 +427,11 @@ _020B267C: ldr r6, [r11, r2] ldr r0, [r0, #0x4] add r7, r3, r4, lsl #0x3 - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx mov r5, r0 mov r0, r6 mov r1, r5 - bl FUN_020B1EE4 + bl NNS_G2dSetCellAnimationSequence ldr r0, [sp, #0x8] str r0, [r6, #0x8] ldrh r0, [r7, #0x6] @@ -461,7 +454,7 @@ _020B26E4: blo _020B26E4 _020B2700: mov r0, r6 - bl FUN_020B0408 + bl NNSi_G2dIsAnimCtrlLoopAnim cmp r0, #0x0 beq _020B272C mov r0, r9 @@ -469,14 +462,14 @@ _020B2700: bl _u32_div_f mov r0, r6 mov r1, r1, lsl #0xc - bl FUN_020B1EC4 + bl NNS_G2dTickCellAnimation b _020B2740 _020B272C: cmp r9, r8 movcc r8, r9 mov r0, r6 mov r1, r8, lsl #0xc - bl FUN_020B1EC4 + bl NNS_G2dTickCellAnimation _020B2740: mov r0, #0x28 mla r3, r4, r0, r11 @@ -485,7 +478,7 @@ _020B2740: ldrsh r1, [r7, #0x2] ldrsh r2, [r7, #0x4] add r0, r3, #0xc - bl FUN_020B1AB4 + bl NNSi_G2dSrtcSetTrans add r0, r4, #0x1 mov r0, r0, lsl #0x10 ldrh r1, [r10, #0x0] @@ -494,5 +487,4 @@ _020B2740: blo _020B267C add sp, sp, #0x14 ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B24E0 - + arm_func_end SetMCDataToMCInstanceImpl_ diff --git a/arm9/asm/NNS_G2D_g2d_nan_load.s b/arm9/asm/NNS_G2D_g2d_nan_load.s index 4137e8ae..6e8b6c27 100644 --- a/arm9/asm/NNS_G2D_g2d_nan_load.s +++ b/arm9/asm/NNS_G2D_g2d_nan_load.s @@ -3,20 +3,18 @@ .section .text - ; _end - arm_func_start FUN_020AFC04 -FUN_020AFC04: ; 0x020AFC04 + arm_func_start NNS_G2dGetAnimSequenceByIdx +NNS_G2dGetAnimSequenceByIdx: ; 0x020AFC04 ldrh r2, [r0, #0x0] cmp r2, r1 ldrhi r0, [r0, #0x4] addhi r0, r0, r1, lsl #0x4 movls r0, #0x0 bx lr - arm_func_end FUN_020AFC04 + arm_func_end NNS_G2dGetAnimSequenceByIdx - ; _end - arm_func_start FUN_020AFC1C -FUN_020AFC1C: ; 0x020AFC1C + arm_func_start NNS_G2dUnpackNAN +NNS_G2dUnpackNAN: ; 0x020AFC1C stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4 ldr r1, [r0, #0x4] @@ -115,41 +113,38 @@ _020AFD6C: blo _020AFD14 add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} - arm_func_end FUN_020AFC1C + arm_func_end NNS_G2dUnpackNAN - ; NNS_G2dGetUnpackedMCAnimBank - arm_func_start thunk_FUN_020afda0 -thunk_FUN_020afda0: ; 0x020AFD88 - ldr ip, _020AFD90 ; =FUN_020AFDA0 + arm_func_start NNS_G2dGetUnpackedMCAnimBank +NNS_G2dGetUnpackedMCAnimBank: ; 0x020AFD88 + ldr ip, _020AFD90 ; =GetUnpackedAnimBankImpl_ bx r12 .balign 4 -_020AFD90: .word FUN_020AFDA0 - arm_func_end thunk_FUN_020afda0 +_020AFD90: .word GetUnpackedAnimBankImpl_ + arm_func_end NNS_G2dGetUnpackedMCAnimBank - ; NNS_G2dGetUnpackedAnimBank - arm_func_start thunk_FUN_020afda0_2 -thunk_FUN_020afda0_2: ; 0x020AFD94 - ldr ip, _020AFD9C ; =FUN_020AFDA0 + arm_func_start NNS_G2dGetUnpackedAnimBank +NNS_G2dGetUnpackedAnimBank: ; 0x020AFD94 + ldr ip, _020AFD9C ; =GetUnpackedAnimBankImpl_ bx r12 .balign 4 -_020AFD9C: .word FUN_020AFDA0 - arm_func_end thunk_FUN_020afda0_2 +_020AFD9C: .word GetUnpackedAnimBankImpl_ + arm_func_end NNS_G2dGetUnpackedAnimBank - ; GetUnpackedAnimBankImpl_ - arm_func_start FUN_020AFDA0 -FUN_020AFDA0: ; 0x020AFDA0 + arm_func_start GetUnpackedAnimBankImpl_ +GetUnpackedAnimBankImpl_: ; 0x020AFDA0 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r1 ldr r1, _020AFDE4 ; =0x41424E4B - bl FUN_020B01F8 + bl NNS_G2dFindBinaryBlock movs r4, r0 moveq r0, #0x0 addeq sp, sp, #0x4 streq r0, [r5, #0x0] ldmeqia sp!, {r4-r5,pc} add r0, r4, #0x8 - bl FUN_020AFC1C + bl NNS_G2dUnpackNAN add r0, r4, #0x8 str r0, [r5, #0x0] mov r0, #0x1 @@ -157,5 +152,4 @@ FUN_020AFDA0: ; 0x020AFDA0 ldmia sp!, {r4-r5,pc} .balign 4 _020AFDE4: .word 0x41424E4B - arm_func_end FUN_020AFDA0 - + arm_func_end GetUnpackedAnimBankImpl_ diff --git a/arm9/asm/NNS_G2D_g2d_ncg_load.s b/arm9/asm/NNS_G2D_g2d_ncg_load.s index 78956dde..95535da5 100644 --- a/arm9/asm/NNS_G2D_g2d_ncg_load.s +++ b/arm9/asm/NNS_G2D_g2d_ncg_load.s @@ -3,30 +3,28 @@ .section .text - ; _end - arm_func_start FUN_020B0020 -FUN_020B0020: ; 0x020B0020 + arm_func_start NNS_G2dUnpackBGNCG +NNS_G2dUnpackBGNCG: ; 0x020B0020 ldr r1, [r0, #0x14] add r1, r1, r0 str r1, [r0, #0x14] bx lr - arm_func_end FUN_020B0020 + arm_func_end NNS_G2dUnpackBGNCG - ; NNS_G2dGetUnpackedBGCharacterData - arm_func_start FUN_020B0030 -FUN_020B0030: ; 0x020B0030 + arm_func_start NNS_G2dGetUnpackedBGCharacterData +NNS_G2dGetUnpackedBGCharacterData: ; 0x020B0030 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r1 ldr r1, _020B0074 ; =0x43484152 - bl FUN_020B01F8 + bl NNS_G2dFindBinaryBlock movs r4, r0 moveq r0, #0x0 addeq sp, sp, #0x4 streq r0, [r5, #0x0] ldmeqia sp!, {r4-r5,pc} add r0, r4, #0x8 - bl FUN_020B0020 + bl NNS_G2dUnpackBGNCG add r0, r4, #0x8 str r0, [r5, #0x0] mov r0, #0x1 @@ -34,32 +32,30 @@ FUN_020B0030: ; 0x020B0030 ldmia sp!, {r4-r5,pc} .balign 4 _020B0074: .word 0x43484152 - arm_func_end FUN_020B0030 + arm_func_end NNS_G2dGetUnpackedBGCharacterData - ; _end - arm_func_start FUN_020B0078 -FUN_020B0078: ; 0x020B0078 + arm_func_start NNS_G2dUnpackNCG +NNS_G2dUnpackNCG: ; 0x020B0078 ldr r1, [r0, #0x14] add r1, r1, r0 str r1, [r0, #0x14] bx lr - arm_func_end FUN_020B0078 + arm_func_end NNS_G2dUnpackNCG - ; NNS_G2dGetUnpackedCharacterData - arm_func_start FUN_020B0088 -FUN_020B0088: ; 0x020B0088 + arm_func_start NNS_G2dGetUnpackedCharacterData +NNS_G2dGetUnpackedCharacterData: ; 0x020B0088 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r1 ldr r1, _020B00CC ; =0x43484152 - bl FUN_020B01F8 + bl NNS_G2dFindBinaryBlock movs r4, r0 moveq r0, #0x0 addeq sp, sp, #0x4 streq r0, [r5, #0x0] ldmeqia sp!, {r4-r5,pc} add r0, r4, #0x8 - bl FUN_020B0078 + bl NNS_G2dUnpackNCG add r0, r4, #0x8 str r0, [r5, #0x0] mov r0, #0x1 @@ -67,5 +63,4 @@ FUN_020B0088: ; 0x020B0088 ldmia sp!, {r4-r5,pc} .balign 4 _020B00CC: .word 0x43484152 - arm_func_end FUN_020B0088 - + arm_func_end NNS_G2dGetUnpackedCharacterData diff --git a/arm9/asm/NNS_G2D_g2d_ncl_load.s b/arm9/asm/NNS_G2D_g2d_ncl_load.s index ecaa454b..1fc246b2 100644 --- a/arm9/asm/NNS_G2D_g2d_ncl_load.s +++ b/arm9/asm/NNS_G2D_g2d_ncl_load.s @@ -3,39 +3,36 @@ .section .text - ; _end - arm_func_start FUN_020B00D0 -FUN_020B00D0: ; 0x020B00D0 + arm_func_start NNS_G2dUnpackNCL +NNS_G2dUnpackNCL: ; 0x020B00D0 ldr r1, [r0, #0xc] add r1, r1, r0 str r1, [r0, #0xc] bx lr - arm_func_end FUN_020B00D0 + arm_func_end NNS_G2dUnpackNCL - ; _end - arm_func_start FUN_020B00E0 -FUN_020B00E0: ; 0x020B00E0 + arm_func_start NNSi_G2dUnpackNCLCmpInfo +NNSi_G2dUnpackNCLCmpInfo: ; 0x020B00E0 ldr r1, [r0, #0x4] add r1, r1, r0 str r1, [r0, #0x4] bx lr - arm_func_end FUN_020B00E0 + arm_func_end NNSi_G2dUnpackNCLCmpInfo - ; NNS_G2dGetUnpackedPaletteCompressInfo - arm_func_start FUN_020B00F0 -FUN_020B00F0: ; 0x020B00F0 + arm_func_start NNS_G2dGetUnpackedPaletteCompressInfo +NNS_G2dGetUnpackedPaletteCompressInfo: ; 0x020B00F0 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r1 ldr r1, _020B0134 ; =0x50434D50 - bl FUN_020B01F8 + bl NNS_G2dFindBinaryBlock movs r4, r0 moveq r0, #0x0 addeq sp, sp, #0x4 streq r0, [r5, #0x0] ldmeqia sp!, {r4-r5,pc} add r0, r4, #0x8 - bl FUN_020B00E0 + bl NNSi_G2dUnpackNCLCmpInfo add r0, r4, #0x8 str r0, [r5, #0x0] mov r0, #0x1 @@ -43,23 +40,22 @@ FUN_020B00F0: ; 0x020B00F0 ldmia sp!, {r4-r5,pc} .balign 4 _020B0134: .word 0x50434D50 - arm_func_end FUN_020B00F0 + arm_func_end NNS_G2dGetUnpackedPaletteCompressInfo - ; NNS_G2dGetUnpackedPaletteData - arm_func_start FUN_020B0138 -FUN_020B0138: ; 0x020B0138 + arm_func_start NNS_G2dGetUnpackedPaletteData +NNS_G2dGetUnpackedPaletteData: ; 0x020B0138 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r1 ldr r1, _020B017C ; =0x504C5454 - bl FUN_020B01F8 + bl NNS_G2dFindBinaryBlock movs r4, r0 moveq r0, #0x0 addeq sp, sp, #0x4 streq r0, [r5, #0x0] ldmeqia sp!, {r4-r5,pc} add r0, r4, #0x8 - bl FUN_020B00D0 + bl NNS_G2dUnpackNCL add r0, r4, #0x8 str r0, [r5, #0x0] mov r0, #0x1 @@ -67,5 +63,4 @@ FUN_020B0138: ; 0x020B0138 ldmia sp!, {r4-r5,pc} .balign 4 _020B017C: .word 0x504C5454 - arm_func_end FUN_020B0138 - + arm_func_end NNS_G2dGetUnpackedPaletteData diff --git a/arm9/asm/NNS_G2D_g2d_nft_load.s b/arm9/asm/NNS_G2D_g2d_nft_load.s index 1bd9a1bf..3f9c0e77 100644 --- a/arm9/asm/NNS_G2D_g2d_nft_load.s +++ b/arm9/asm/NNS_G2D_g2d_nft_load.s @@ -3,9 +3,8 @@ .section .text - ; NNSi_G2dUnpackNFT - arm_func_start FUN_020B7468 -FUN_020B7468: ; 0x020B7468 + arm_func_start NNSi_G2dUnpackNFT +NNSi_G2dUnpackNFT: ; 0x020B7468 stmdb sp!, {r4-r6,lr} ldrh r2, [r0, #0xc] ldrh r3, [r0, #0xe] @@ -73,11 +72,10 @@ _020B7548: .word 0x46494E46 _020B754C: .word 0x43574448 _020B7550: .word 0x434D4150 _020B7554: .word 0x43474C50 - arm_func_end FUN_020B7468 + arm_func_end NNSi_G2dUnpackNFT - ; NNSi_G2dGetUnpackedFont - arm_func_start FUN_020B7558 -FUN_020B7558: ; 0x020B7558 + arm_func_start NNSi_G2dGetUnpackedFont +NNSi_G2dGetUnpackedFont: ; 0x020B7558 stmdb sp!, {r4-r6,lr} movs r6, r0 mov r5, r1 @@ -155,10 +153,10 @@ _020B7644: bl OS_Terminate _020B7654: mov r0, r6 - bl FUN_020B7468 + bl NNSi_G2dUnpackNFT ldr r1, _020B76AC ; =0x46494E46 mov r0, r6 - bl FUN_020B01F8 + bl NNS_G2dFindBinaryBlock cmp r0, #0x0 moveq r0, #0x0 streq r0, [r5, #0x0] @@ -179,5 +177,4 @@ _020B76A0: .balign 4 _020B76A8: .word 0x4E465452 _020B76AC: .word 0x46494E46 - arm_func_end FUN_020B7558 - + arm_func_end NNSi_G2dGetUnpackedFont diff --git a/arm9/asm/NNS_G2D_g2d_nmc_load.s b/arm9/asm/NNS_G2D_g2d_nmc_load.s index eb13c705..abe55e8e 100644 --- a/arm9/asm/NNS_G2D_g2d_nmc_load.s +++ b/arm9/asm/NNS_G2D_g2d_nmc_load.s @@ -3,20 +3,18 @@ .section .text - ; _end - arm_func_start FUN_020AFF34 -FUN_020AFF34: ; 0x020AFF34 + arm_func_start NNS_G2dGetMultiCellDataByIdx +NNS_G2dGetMultiCellDataByIdx: ; 0x020AFF34 ldrh r2, [r0, #0x0] cmp r1, r2 ldrcc r0, [r0, #0x4] addcc r0, r0, r1, lsl #0x3 movcs r0, #0x0 bx lr - arm_func_end FUN_020AFF34 + arm_func_end NNS_G2dGetMultiCellDataByIdx - ; _end - arm_func_start FUN_020AFF4C -FUN_020AFF4C: ; 0x020AFF4C + arm_func_start NNS_G2dUnpackNMC +NNS_G2dUnpackNMC: ; 0x020AFF4C stmdb sp!, {r4,lr} ldr r1, [r0, #0x4] mov r4, #0x0 @@ -48,35 +46,33 @@ _020AFFA8: add r1, r1, r0 str r1, [r0, #0x10] ldr r0, [r0, #0x10] - bl FUN_020AFFC8 + bl UnpackExtendedData_ ldmia sp!, {r4,pc} - arm_func_end FUN_020AFF4C + arm_func_end NNS_G2dUnpackNMC - ; UnpackExtendedData_ - arm_func_start FUN_020AFFC8 -FUN_020AFFC8: ; 0x020AFFC8 - ldr ip, _020AFFD4 ; =FUN_020B01B0 + arm_func_start UnpackExtendedData_ +UnpackExtendedData_: ; 0x020AFFC8 + ldr ip, _020AFFD4 ; =NNSi_G2dUnpackUserExCellAttrBank add r0, r0, #0x8 bx r12 .balign 4 -_020AFFD4: .word FUN_020B01B0 - arm_func_end FUN_020AFFC8 +_020AFFD4: .word NNSi_G2dUnpackUserExCellAttrBank + arm_func_end UnpackExtendedData_ - ; NNS_G2dGetUnpackedMultiCellBank - arm_func_start FUN_020AFFD8 -FUN_020AFFD8: ; 0x020AFFD8 + arm_func_start NNS_G2dGetUnpackedMultiCellBank +NNS_G2dGetUnpackedMultiCellBank: ; 0x020AFFD8 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r1 ldr r1, _020B001C ; =0x4D43424B - bl FUN_020B01F8 + bl NNS_G2dFindBinaryBlock movs r4, r0 moveq r0, #0x0 addeq sp, sp, #0x4 streq r0, [r5, #0x0] ldmeqia sp!, {r4-r5,pc} add r0, r4, #0x8 - bl FUN_020AFF4C + bl NNS_G2dUnpackNMC add r0, r4, #0x8 str r0, [r5, #0x0] mov r0, #0x1 @@ -84,5 +80,4 @@ FUN_020AFFD8: ; 0x020AFFD8 ldmia sp!, {r4-r5,pc} .balign 4 _020B001C: .word 0x4D43424B - arm_func_end FUN_020AFFD8 - + arm_func_end NNS_G2dGetUnpackedMultiCellBank diff --git a/arm9/asm/NNS_G2D_g2d_nob_load.s b/arm9/asm/NNS_G2D_g2d_nob_load.s index ddeb473c..319a6a4a 100644 --- a/arm9/asm/NNS_G2D_g2d_nob_load.s +++ b/arm9/asm/NNS_G2D_g2d_nob_load.s @@ -3,15 +3,14 @@ .section .text - ; _end - arm_func_start FUN_020AFDE8 -FUN_020AFDE8: ; 0x020AFDE8 + arm_func_start NNS_G2dUnpackNCE +NNS_G2dUnpackNCE: ; 0x020AFDE8 stmdb sp!, {r4-r6,lr} mov r5, r0 ldr r1, [r5, #0x4] add r1, r1, r5 str r1, [r5, #0x4] - bl FUN_020AFF10 + bl GetPtrOamArrayHead_ ldrh r1, [r5, #0x0] mov r4, r0 mov r6, #0x0 @@ -20,7 +19,7 @@ FUN_020AFDE8: ; 0x020AFDE8 _020AFE14: mov r0, r5 mov r1, r6 - bl FUN_020AFE8C + bl NNS_G2dGetCellDataByIdx ldr r2, [r0, #0x4] add r1, r6, #0x1 add r2, r2, r4 @@ -48,13 +47,12 @@ _020AFE6C: add r0, r0, r5 str r0, [r5, #0x14] ldr r0, [r5, #0x14] - bl FUN_020AFF00 + bl UnPackExtendedData_ ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AFDE8 + arm_func_end NNS_G2dUnpackNCE - ; _end - arm_func_start FUN_020AFE8C -FUN_020AFE8C: ; 0x020AFE8C + arm_func_start NNS_G2dGetCellDataByIdx +NNS_G2dGetCellDataByIdx: ; 0x020AFE8C ldrh r2, [r0, #0x0] cmp r1, r2 movcs r0, #0x0 @@ -66,23 +64,22 @@ FUN_020AFE8C: ; 0x020AFE8C ldreq r0, [r0, #0x4] addeq r0, r0, r1, lsl #0x3 bx lr - arm_func_end FUN_020AFE8C + arm_func_end NNS_G2dGetCellDataByIdx - ; NNS_G2dGetUnpackedCellBank - arm_func_start FUN_020AFEB8 -FUN_020AFEB8: ; 0x020AFEB8 + arm_func_start NNS_G2dGetUnpackedCellBank +NNS_G2dGetUnpackedCellBank: ; 0x020AFEB8 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r1 ldr r1, _020AFEFC ; =0x4345424B - bl FUN_020B01F8 + bl NNS_G2dFindBinaryBlock movs r4, r0 moveq r0, #0x0 addeq sp, sp, #0x4 streq r0, [r5, #0x0] ldmeqia sp!, {r4-r5,pc} add r0, r4, #0x8 - bl FUN_020AFDE8 + bl NNS_G2dUnpackNCE add r0, r4, #0x8 str r0, [r5, #0x0] mov r0, #0x1 @@ -90,21 +87,19 @@ FUN_020AFEB8: ; 0x020AFEB8 ldmia sp!, {r4-r5,pc} .balign 4 _020AFEFC: .word 0x4345424B - arm_func_end FUN_020AFEB8 + arm_func_end NNS_G2dGetUnpackedCellBank - ; UnPackExtendedData_ - arm_func_start FUN_020AFF00 -FUN_020AFF00: ; 0x020AFF00 - ldr ip, _020AFF0C ; =FUN_020B01B0 + arm_func_start UnPackExtendedData_ +UnPackExtendedData_: ; 0x020AFF00 + ldr ip, _020AFF0C ; =NNSi_G2dUnpackUserExCellAttrBank add r0, r0, #0x8 bx r12 .balign 4 -_020AFF0C: .word FUN_020B01B0 - arm_func_end FUN_020AFF00 +_020AFF0C: .word NNSi_G2dUnpackUserExCellAttrBank + arm_func_end UnPackExtendedData_ - ; _end - arm_func_start FUN_020AFF10 -FUN_020AFF10: ; 0x020AFF10 + arm_func_start GetPtrOamArrayHead_ +GetPtrOamArrayHead_: ; 0x020AFF10 ldrh r1, [r0, #0x2] ands r1, r1, #0x1 ldrneh r1, [r0, #0x0] @@ -114,5 +109,4 @@ FUN_020AFF10: ; 0x020AFF10 ldreq r0, [r0, #0x4] addeq r0, r0, r1, lsl #0x3 bx lr - arm_func_end FUN_020AFF10 - + arm_func_end GetPtrOamArrayHead_ diff --git a/arm9/asm/NNS_G2D_g2d_node.s b/arm9/asm/NNS_G2D_g2d_node.s index 8e918dda..eb4e2497 100644 --- a/arm9/asm/NNS_G2D_g2d_node.s +++ b/arm9/asm/NNS_G2D_g2d_node.s @@ -3,18 +3,16 @@ .section .text - ; NNSi_G2dInitializeNode - arm_func_start FUN_020B1AD4 -FUN_020B1AD4: ; 0x020B1AD4 + arm_func_start NNSi_G2dInitializeNode +NNSi_G2dInitializeNode: ; 0x020B1AD4 mov r2, #0x0 str r2, [r0, #0x0] str r1, [r0, #0x4] mov r1, #0x1 str r1, [r0, #0x8] - ldr ip, _020B1AF4 ; =FUN_020B1A68 + ldr ip, _020B1AF4 ; =NNSi_G2dSrtcInitControl add r0, r0, #0xc bx r12 .balign 4 -_020B1AF4: .word FUN_020B1A68 - arm_func_end FUN_020B1AD4 - +_020B1AF4: .word NNSi_G2dSrtcInitControl + arm_func_end NNSi_G2dInitializeNode diff --git a/arm9/asm/NNS_G2D_g2d_nsc_load.s b/arm9/asm/NNS_G2D_g2d_nsc_load.s index 47f76264..4f2bb65c 100644 --- a/arm9/asm/NNS_G2D_g2d_nsc_load.s +++ b/arm9/asm/NNS_G2D_g2d_nsc_load.s @@ -3,13 +3,12 @@ .section .text - ; NNS_G2dGetUnpackedScreenData - arm_func_start FUN_020B0180 -FUN_020B0180: ; 0x020B0180 + arm_func_start NNS_G2dGetUnpackedScreenData +NNS_G2dGetUnpackedScreenData: ; 0x020B0180 stmdb sp!, {r4,lr} mov r4, r1 ldr r1, _020B01AC ; =0x5343524E - bl FUN_020B01F8 + bl NNS_G2dFindBinaryBlock cmp r0, #0x0 addne r0, r0, #0x8 strne r0, [r4, #0x0] @@ -19,5 +18,4 @@ FUN_020B0180: ; 0x020B0180 ldmia sp!, {r4,pc} .balign 4 _020B01AC: .word 0x5343524E - arm_func_end FUN_020B0180 - + arm_func_end NNS_G2dGetUnpackedScreenData diff --git a/arm9/asm/NNS_G2D_g2d_oam.s b/arm9/asm/NNS_G2D_g2d_oam.s index 9ef72ad0..cec3db64 100644 --- a/arm9/asm/NNS_G2D_g2d_oam.s +++ b/arm9/asm/NNS_G2D_g2d_oam.s @@ -3,87 +3,41 @@ .section .rodata - ; NNSi_objSizeHTbl - .global UNK_020FF894 -UNK_020FF894: ; 0x020FF894 + .global NNSi_objSizeHTbl +NNSi_objSizeHTbl: ; 0x020FF894 .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 .byte 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 - ; NNSi_objSizeWTbl - .global UNK_020FF8AC -UNK_020FF8AC: ; 0x020FF8AC + .global NNSi_objSizeWTbl +NNSi_objSizeWTbl: ; 0x020FF8AC .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00 .byte 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00 - ; static const in function + .section .data - ; funcTbl$8497 - .global UNK_0210655C -UNK_0210655C: ; 0x0210655C - .word FUN_020B1088 - .word FUN_020B1098 + .global funcTbl$8497 +funcTbl$8497: ; 0x0210655C + .word CpuLoadOAMMain_ + .word CpuLoadOAMSub_ .word 0 .word 0 .word 0 .section .bss - ; numRegisterdInstance_ - .global UNK_021CCD9C -UNK_021CCD9C: ; 0x021CCD9C + .global numRegisterdInstance_ +numRegisterdInstance_: ; 0x021CCD9C .space 0x4 - ; oamCache_ - .global UNK_021CCDA0 -UNK_021CCDA0: ; 0x021CCDA0 - .space 0x100 - - ; oamCache_ + 0x100 - .global UNK_021CCEA0 -UNK_021CCEA0: ; 0x021CCEA0 - .space 0x400 - - ; oamCache_ + 0x500 - .global UNK_021CD2A0 -UNK_021CD2A0: ; 0x021CD2A0 - .space 0x40 - - ; oamCache_ + 0x540 - .global UNK_021CD2E0 -UNK_021CD2E0: ; 0x021CD2E0 - .space 0x100 - - ; oamCache_ + 0x640 - .global UNK_021CD3E0 -UNK_021CD3E0: ; 0x021CD3E0 - .space 0x400 - - ; oamCache_ + 0xA40 - .global UNK_021CD7E0 -UNK_021CD7E0: ; 0x021CD7E0 - .space 0x40 - - ; oamCache_ + 0xA80 - .global UNK_021CD820 -UNK_021CD820: ; 0x021CD820 - .space 0x100 - - ; oamCache_ + 0xB80 - .global UNK_021CD920 -UNK_021CD920: ; 0x021CD920 - .space 0x400 - - ; oamCache_ + 0xF80 - .global UNK_021CDD20 -UNK_021CDD20: ; 0x021CDD20 - .space 0x40 + .global oamCache_ +oamCache_: ; 0x021CCDA0 + .space 0xFC0 .section .text - ; _end - arm_func_start FUN_020B0830 -FUN_020B0830: ; 0x020B0830 + arm_func_start NNS_G2dGetOamManagerOamCapacity +NNS_G2dGetOamManagerOamCapacity: ; 0x020B0830 ldrh r3, [r0, #0x6] ldrh r2, [r0, #0x8] mov r12, #0x0 @@ -101,22 +55,20 @@ _020B0854: movne r0, r0, lsr #0x10 moveq r0, #0x0 bx lr - arm_func_end FUN_020B0830 + arm_func_end NNS_G2dGetOamManagerOamCapacity - ; _end - arm_func_start FUN_020B0870 -FUN_020B0870: ; 0x020B0870 + arm_func_start NNS_G2dApplyAndResetOamManagerBuffer +NNS_G2dApplyAndResetOamManagerBuffer: ; 0x020B0870 stmdb sp!, {r4,lr} mov r4, r0 - bl FUN_020B09B4 + bl NNS_G2dApplyOamManagerToHW mov r0, r4 - bl FUN_020B0888 + bl NNS_G2dResetOamManagerBuffer ldmia sp!, {r4,pc} - arm_func_end FUN_020B0870 + arm_func_end NNS_G2dApplyAndResetOamManagerBuffer - ; NNS_G2dResetOamManagerBuffer - arm_func_start FUN_020B0888 -FUN_020B0888: ; 0x020B0888 + arm_func_start NNS_G2dResetOamManagerBuffer +NNS_G2dResetOamManagerBuffer: ; 0x020B0888 stmdb sp!, {r4-r6,lr} mov r5, r0 ldr r0, [r5, #0x14] @@ -142,7 +94,7 @@ _020B08C0: mov r4, r0, lsr #0xd _020B08E0: ldr r2, [r5, #0x0] - ldr r1, _020B09AC ; =UNK_021CCDA0 + ldr r1, _020B09AC ; =oamCache_ mov r0, #0x540 mla r1, r2, r0, r1 ldrh r0, [r5, #0x4] @@ -169,7 +121,7 @@ _020B0930: b _020B0998 _020B0944: ldr r2, [r5, #0x0] - ldr r1, _020B09AC ; =UNK_021CCDA0 + ldr r1, _020B09AC ; =oamCache_ mov r0, #0x540 mla r1, r2, r0, r1 ldrh r2, [r5, #0x4] @@ -197,20 +149,19 @@ _020B0998: strh r0, [r5, #0xe] ldmia sp!, {r4-r6,pc} .balign 4 -_020B09AC: .word UNK_021CCDA0 +_020B09AC: .word oamCache_ _020B09B0: .word GXi_DmaId - arm_func_end FUN_020B0888 + arm_func_end NNS_G2dResetOamManagerBuffer - ; NNS_G2dApplyOamManagerToHW - arm_func_start FUN_020B09B4 -FUN_020B09B4: ; 0x020B09B4 + arm_func_start NNS_G2dApplyOamManagerToHW +NNS_G2dApplyOamManagerToHW: ; 0x020B09B4 stmdb sp!, {r4-r10,lr} mov r7, r0 ldr r0, [r7, #0x14] cmp r0, #0x0 beq _020B0A48 ldr r5, [r7, #0x0] - ldr r1, _020B0BA8 ; =UNK_021CCDA0 + ldr r1, _020B0BA8 ; =oamCache_ mov r0, #0x540 mla r1, r5, r0, r1 ldrh r2, [r7, #0x4] @@ -245,12 +196,12 @@ _020B0A34: ldmia sp!, {r4-r10,pc} _020B0A48: ldr r0, [r7, #0x0] - ldr r2, _020B0BA8 ; =UNK_021CCDA0 + ldr r2, _020B0BA8 ; =oamCache_ mov r1, #0x540 mla r2, r0, r1, r2 ldrh r5, [r7, #0x4] ldrh r1, [r7, #0x6] - ldr r3, _020B0BAC ; =UNK_0210655C + ldr r3, _020B0BAC ; =funcTbl$8497 add r4, r2, #0x100 sub r1, r1, r5 add r1, r1, #0x1 @@ -291,14 +242,14 @@ _020B0AEC: cmp r3, #0x0 ldmeqia sp!, {r4-r10,pc} ldr r0, [r7, #0x0] - ldr r2, _020B0BA8 ; =UNK_021CCDA0 + ldr r2, _020B0BA8 ; =oamCache_ mov r1, #0x540 mla r2, r0, r1, r2 ldrh r5, [r7, #0xa] add r4, r2, #0x100 ldrh r1, [r7, #0xc] mov r2, r5, lsl #0x15 - ldr r3, _020B0BAC ; =UNK_0210655C + ldr r3, _020B0BAC ; =funcTbl$8497 sub r1, r1, r5 add r1, r1, #0x1 mov r1, r1, lsl #0x10 @@ -337,13 +288,12 @@ _020B0B40: blo _020B0B40 ldmia sp!, {r4-r10,pc} .balign 4 -_020B0BA8: .word UNK_021CCDA0 -_020B0BAC: .word UNK_0210655C - arm_func_end FUN_020B09B4 +_020B0BA8: .word oamCache_ +_020B0BAC: .word funcTbl$8497 + arm_func_end NNS_G2dApplyOamManagerToHW - ; NNS_G2dEntryOamManagerAffine - arm_func_start FUN_020B0BB0 -FUN_020B0BB0: ; 0x020B0BB0 + arm_func_start NNS_G2dEntryOamManagerAffine +NNS_G2dEntryOamManagerAffine: ; 0x020B0BB0 stmdb sp!, {lr} sub sp, sp, #0x4 ldrh r12, [r0, #0xc] @@ -370,7 +320,7 @@ _020B0BDC: ldreq r0, _020B0C74 ; =0x0000FFFE ldmeqia sp!, {pc} ldr lr, [r0, #0x0] - ldr r3, _020B0C78 ; =UNK_021CCDA0 + ldr r3, _020B0C78 ; =oamCache_ mov r2, #0x540 mla r12, lr, r2, r3 ldr r3, [r1, #0x0] @@ -396,12 +346,11 @@ _020B0BDC: ldmia sp!, {pc} .balign 4 _020B0C74: .word 0x0000FFFE -_020B0C78: .word UNK_021CCDA0 - arm_func_end FUN_020B0BB0 +_020B0C78: .word oamCache_ + arm_func_end NNS_G2dEntryOamManagerAffine - ; NNS_G2dEntryOamManagerOamWithAffineIdx - arm_func_start FUN_020B0C7C -FUN_020B0C7C: ; 0x020B0C7C + arm_func_start NNS_G2dEntryOamManagerOamWithAffineIdx +NNS_G2dEntryOamManagerOamWithAffineIdx: ; 0x020B0C7C stmdb sp!, {r4,lr} ldrh r12, [r0, #0x6] ldrh r4, [r0, #0x8] @@ -425,7 +374,7 @@ _020B0CA4: cmp r3, #0x0 beq _020B0D48 ldr r4, [r0, #0x0] - ldr ip, _020B0D50 ; =UNK_021CCDA0 + ldr ip, _020B0D50 ; =oamCache_ mov r3, #0x540 mla r12, r4, r3, r12 ldrh r3, [r0, #0x8] @@ -459,13 +408,12 @@ _020B0D48: mov r0, #0x0 ldmia sp!, {r4,pc} .balign 4 -_020B0D50: .word UNK_021CCDA0 +_020B0D50: .word oamCache_ _020B0D54: .word 0x0000FFFE - arm_func_end FUN_020B0C7C + arm_func_end NNS_G2dEntryOamManagerOamWithAffineIdx - ; NNS_G2dEntryOamManagerOam - arm_func_start FUN_020B0D58 -FUN_020B0D58: ; 0x020B0D58 + arm_func_start NNS_G2dEntryOamManagerOam +NNS_G2dEntryOamManagerOam: ; 0x020B0D58 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 ldrh lr, [r0, #0x6] @@ -490,7 +438,7 @@ _020B0D84: cmp r3, #0x0 beq _020B0E24 ldr lr, [r0, #0x0] - ldr ip, _020B0E30 ; =UNK_021CCDA0 + ldr ip, _020B0E30 ; =oamCache_ mov r3, #0x540 mla r12, lr, r3, r12 ldrh r3, [r0, #0x8] @@ -525,16 +473,15 @@ _020B0E24: add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020B0E30: .word UNK_021CCDA0 - arm_func_end FUN_020B0D58 +_020B0E30: .word oamCache_ + arm_func_end NNS_G2dEntryOamManagerOam - ; NNS_G2dGetNewOamManagerInstance - arm_func_start FUN_020B0E34 -FUN_020B0E34: ; 0x020B0E34 + arm_func_start NNS_G2dGetNewOamManagerInstance +NNS_G2dGetNewOamManagerInstance: ; 0x020B0E34 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 ldr r5, [sp, #0x1c] - ldr r6, _020B0FB4 ; =UNK_021CCDA0 + ldr r6, _020B0FB4 ; =oamCache_ mov r4, #0x540 mla r4, r5, r4, r6 mov lr, r1 @@ -563,7 +510,7 @@ _020B0E9C: _020B0EA0: cmp r0, #0x0 beq _020B0EE0 - ldr r0, _020B0FBC ; =UNK_021CCD9C + ldr r0, _020B0FBC ; =numRegisterdInstance_ sub r2, r12, lr ldrh r7, [r0, #0x0] add r1, r4, r3 @@ -639,80 +586,77 @@ _020B0F98: add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020B0FB4: .word UNK_021CCDA0 +_020B0FB4: .word oamCache_ _020B0FB8: .word 0x0000FFFF -_020B0FBC: .word UNK_021CCD9C - arm_func_end FUN_020B0E34 +_020B0FBC: .word numRegisterdInstance_ + arm_func_end NNS_G2dGetNewOamManagerInstance - ; NNS_G2dInitOamManagerModule - arm_func_start FUN_020B0FC0 -FUN_020B0FC0: ; 0x020B0FC0 + arm_func_start NNS_G2dInitOamManagerModule +NNS_G2dInitOamManagerModule: ; 0x020B0FC0 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r1, _020B1060 ; =UNK_021CCEA0 + ldr r1, _020B1060 ; =oamCache_ + 0x100 mov r0, #0xc0 mov r2, #0x400 bl MIi_CpuClear16 - ldr r1, _020B1064 ; =UNK_021CD3E0 + ldr r1, _020B1064 ; =oamCache_ + 0x640 mov r0, #0xc0 mov r2, #0x400 bl MIi_CpuClear16 - ldr r1, _020B1068 ; =UNK_021CD920 + ldr r1, _020B1068 ; =oamCache_ + 0xB80 mov r0, #0xc0 mov r2, #0x400 bl MIi_CpuClear16 ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1070 ; =UNK_021CCDA0 + ldr r1, _020B1070 ; =oamCache_ mov r2, #0x100 bl MIi_CpuClear16 ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1074 ; =UNK_021CD2E0 + ldr r1, _020B1074 ; =oamCache_ + 0x540 mov r2, #0x100 bl MIi_CpuClear16 ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1078 ; =UNK_021CD820 + ldr r1, _020B1078 ; =oamCache_ + 0xA80 mov r2, #0x100 bl MIi_CpuClear16 ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B107C ; =UNK_021CD2A0 + ldr r1, _020B107C ; =oamCache_ + 0x500 mov r2, #0x40 bl MIi_CpuClear16 ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1080 ; =UNK_021CD7E0 + ldr r1, _020B1080 ; =oamCache_ + 0xA40 mov r2, #0x40 bl MIi_CpuClear16 ldr r0, _020B106C ; =0x0000FFFF - ldr r1, _020B1084 ; =UNK_021CDD20 + ldr r1, _020B1084 ; =oamCache_ + 0xF80 mov r2, #0x40 bl MIi_CpuClear16 add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020B1060: .word UNK_021CCEA0 -_020B1064: .word UNK_021CD3E0 -_020B1068: .word UNK_021CD920 +_020B1060: .word oamCache_ + 0x100 +_020B1064: .word oamCache_ + 0x640 +_020B1068: .word oamCache_ + 0xB80 _020B106C: .word 0x0000FFFF -_020B1070: .word UNK_021CCDA0 -_020B1074: .word UNK_021CD2E0 -_020B1078: .word UNK_021CD820 -_020B107C: .word UNK_021CD2A0 -_020B1080: .word UNK_021CD7E0 -_020B1084: .word UNK_021CDD20 - arm_func_end FUN_020B0FC0 +_020B1070: .word oamCache_ +_020B1074: .word oamCache_ + 0x540 +_020B1078: .word oamCache_ + 0xA80 +_020B107C: .word oamCache_ + 0x500 +_020B1080: .word oamCache_ + 0xA40 +_020B1084: .word oamCache_ + 0xF80 + arm_func_end NNS_G2dInitOamManagerModule - ; CpuLoadOAMMain_ - arm_func_start FUN_020B1088 -FUN_020B1088: ; 0x020B1088 + arm_func_start CpuLoadOAMMain_ +CpuLoadOAMMain_: ; 0x020B1088 ldr ip, _020B1094 ; =MIi_CpuCopy16 add r1, r1, #0x7000000 bx r12 .balign 4 _020B1094: .word MIi_CpuCopy16 - arm_func_end FUN_020B1088 + arm_func_end CpuLoadOAMMain_ - ; CpuLoadOAMSub_ - arm_func_start FUN_020B1098 -FUN_020B1098: ; 0x020B1098 + arm_func_start CpuLoadOAMSub_ +CpuLoadOAMSub_: ; 0x020B1098 ldr r3, _020B10A8 ; =0x07000400 ldr ip, _020B10AC ; =MIi_CpuCopy16 add r1, r1, r3 @@ -720,5 +664,4 @@ FUN_020B1098: ; 0x020B1098 .balign 4 _020B10A8: .word 0x07000400 _020B10AC: .word MIi_CpuCopy16 - arm_func_end FUN_020B1098 - + arm_func_end CpuLoadOAMSub_ diff --git a/arm9/asm/NNS_G2D_g2d_oamsoftware.s b/arm9/asm/NNS_G2D_g2d_oamsoftware.s index 0929557b..c89c4787 100644 --- a/arm9/asm/NNS_G2D_g2d_oamsoftware.s +++ b/arm9/asm/NNS_G2D_g2d_oamsoftware.s @@ -3,61 +3,52 @@ .section .rodata - ; pltFmtTbl$8430 - .global UNK_020FF8D0 -UNK_020FF8D0: ; 0x020FF8D0 + .global pltFmtTbl$8430 +pltFmtTbl$8430: ; 0x020FF8D0 .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - ; static const in function - ; texSize_$8337 - .global UNK_020FF8D8 -UNK_020FF8D8: ; 0x020FF8D8 + + .global texSize_$8337 +texSize_$8337: ; 0x020FF8D8 .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 .byte 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 - ; gxTexSizeSTbl - .global UNK_020FF8F8 -UNK_020FF8F8: ; 0x020FF8F8 + .global gxTexSizeSTbl +gxTexSizeSTbl: ; 0x020FF8F8 .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - ; gxTexSizeTTbl - .global UNK_020FF928 -UNK_020FF928: ; 0x020FF928 + .global gxTexSizeTTbl +gxTexSizeTTbl: ; 0x020FF928 .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 .section .data - ; zOffsetStep_ - .global UNK_02106590 -UNK_02106590: ; 0x02106590 + .global zOffsetStep_ +zOffsetStep_: ; 0x02106590 .byte 0x00, 0xF0, 0xFF, 0xFF .section .bss - ; bAutoZOffsetAdd_ - .global UNK_021CED08 -UNK_021CED08: ; 0x021CED08 + .global bAutoZOffsetAdd_ +bAutoZOffsetAdd_: ; 0x021CED08 .space 0x4 - ; s_pUVFlipCorrectFunc - .global UNK_021CED0C -UNK_021CED0C: ; 0x021CED0C + .global s_pUVFlipCorrectFunc +s_pUVFlipCorrectFunc: ; 0x021CED0C .space 0x4 - ; zOffset_ - .global UNK_021CED10 -UNK_021CED10: ; 0x021CED10 + .global zOffset_ +zOffset_: ; 0x021CED10 .space 0x4 .section .text - ; NNS_G2dDrawOneOam3DDirectWithPosFast - arm_func_start FUN_020B46B4 -FUN_020B46B4: ; 0x020B46B4 + arm_func_start NNS_G2dDrawOneOam3DDirectWithPosFast +NNS_G2dDrawOneOam3DDirectWithPosFast: ; 0x020B46B4 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x1c add r12, sp, #0x4 @@ -70,7 +61,7 @@ FUN_020B46B4: ; 0x020B46B4 ldr r3, [sp, #0x38] mov r0, r7 str r12, [sp, #0x0] - bl FUN_020B498C + bl CalcSpriteParams_ ldr r2, [r7, #0x0] and r1, r2, #0x300 cmp r1, #0x100 @@ -83,17 +74,17 @@ _020B4708: cmp r1, #0x300 bne _020B478C ldr r0, _020B4914 ; =0xC000C000 - ldr r1, _020B4918 ; =UNK_021CED08 + ldr r1, _020B4918 ; =bAutoZOffsetAdd_ and r0, r2, r0 and r2, r0, #0xc0000000 mov r12, r2, lsr #0x1e and r0, r0, #0xc000 mov lr, r0, asr #0xe - ldr r3, _020B491C ; =UNK_020FF8AC + ldr r3, _020B491C ; =NNSi_objSizeWTbl ldr r0, [r1, #0x0] - ldr r2, _020B4920 ; =UNK_020FF894 + ldr r2, _020B4920 ; =NNSi_objSizeHTbl cmp r0, #0x0 - ldrne r0, _020B4924 ; =UNK_021CED10 + ldrne r0, _020B4924 ; =zOffset_ mov r12, r12, lsl #0x1 add r1, r2, lr, lsl #0x3 add r3, r3, lr, lsl #0x3 @@ -114,11 +105,11 @@ _020B4708: str r3, [r1, #0x0] b _020B47C0 _020B478C: - ldr r0, _020B4918 ; =UNK_021CED08 + ldr r0, _020B4918 ; =bAutoZOffsetAdd_ ldr r1, _020B4928 ; =0x04000470 ldr r0, [r0, #0x0] cmp r0, #0x0 - ldrne r0, _020B4924 ; =UNK_021CED10 + ldrne r0, _020B4924 ; =zOffset_ ldrne r0, [r0, #0x0] addne r2, r0, r4, lsl #0xc mov r0, r6, lsl #0xc @@ -199,14 +190,14 @@ _020B47C0: mov r2, #0x0 str r2, [r0, #0x0] ldr r1, _020B4940 ; =0x04000504 - ldr r0, _020B4918 ; =UNK_021CED08 + ldr r0, _020B4918 ; =bAutoZOffsetAdd_ str r2, [r1, #0x0] ldr r0, [r0, #0x0] cmp r0, #0x0 addeq sp, sp, #0x1c ldmeqia sp!, {r4-r7,pc} - ldr r1, _020B4924 ; =UNK_021CED10 - ldr r0, _020B4944 ; =UNK_02106590 + ldr r1, _020B4924 ; =zOffset_ + ldr r0, _020B4944 ; =zOffsetStep_ ldr r2, [r1, #0x0] ldr r0, [r0, #0x0] add r0, r2, r0 @@ -215,10 +206,10 @@ _020B47C0: ldmia sp!, {r4-r7,pc} .balign 4 _020B4914: .word 0xC000C000 -_020B4918: .word UNK_021CED08 -_020B491C: .word UNK_020FF8AC -_020B4920: .word UNK_020FF894 -_020B4924: .word UNK_021CED10 +_020B4918: .word bAutoZOffsetAdd_ +_020B491C: .word NNSi_objSizeWTbl +_020B4920: .word NNSi_objSizeHTbl +_020B4924: .word zOffset_ _020B4928: .word 0x04000470 _020B492C: .word 0x0400046C _020B4930: .word 0x04000500 @@ -226,53 +217,48 @@ _020B4934: .word 0x04000488 _020B4938: .word 0x04000490 _020B493C: .word 0x00010040 _020B4940: .word 0x04000504 -_020B4944: .word UNK_02106590 - arm_func_end FUN_020B46B4 +_020B4944: .word zOffsetStep_ + arm_func_end NNS_G2dDrawOneOam3DDirectWithPosFast - ; NNSi_G2dGetOamSoftEmuAutoZOffsetStep - arm_func_start FUN_020B4948 -FUN_020B4948: ; 0x020B4948 - ldr r0, _020B4954 ; =UNK_02106590 + arm_func_start NNSi_G2dGetOamSoftEmuAutoZOffsetStep +NNSi_G2dGetOamSoftEmuAutoZOffsetStep: ; 0x020B4948 + ldr r0, _020B4954 ; =zOffsetStep_ ldr r0, [r0, #0x0] bx lr .balign 4 -_020B4954: .word UNK_02106590 - arm_func_end FUN_020B4948 +_020B4954: .word zOffsetStep_ + arm_func_end NNSi_G2dGetOamSoftEmuAutoZOffsetStep - ; NNSi_G2dSetOamSoftEmuAutoZOffsetStep - arm_func_start FUN_020B4958 -FUN_020B4958: ; 0x020B4958 - ldr r1, _020B4964 ; =UNK_02106590 + arm_func_start NNSi_G2dSetOamSoftEmuAutoZOffsetStep +NNSi_G2dSetOamSoftEmuAutoZOffsetStep: ; 0x020B4958 + ldr r1, _020B4964 ; =zOffsetStep_ str r0, [r1, #0x0] bx lr .balign 4 -_020B4964: .word UNK_02106590 - arm_func_end FUN_020B4958 +_020B4964: .word zOffsetStep_ + arm_func_end NNSi_G2dSetOamSoftEmuAutoZOffsetStep - ; NNSi_G2dResetOamSoftEmuAutoZOffset - arm_func_start FUN_020B4968 -FUN_020B4968: ; 0x020B4968 - ldr r0, _020B4978 ; =UNK_021CED10 + arm_func_start NNSi_G2dResetOamSoftEmuAutoZOffset +NNSi_G2dResetOamSoftEmuAutoZOffset: ; 0x020B4968 + ldr r0, _020B4978 ; =zOffset_ mov r1, #0x0 str r1, [r0, #0x0] bx lr .balign 4 -_020B4978: .word UNK_021CED10 - arm_func_end FUN_020B4968 +_020B4978: .word zOffset_ + arm_func_end NNSi_G2dResetOamSoftEmuAutoZOffset - ; NNSi_G2dSetOamSoftEmuAutoZOffsetFlag - arm_func_start FUN_020B497C -FUN_020B497C: ; 0x020B497C - ldr r1, _020B4988 ; =UNK_021CED08 + arm_func_start NNSi_G2dSetOamSoftEmuAutoZOffsetFlag +NNSi_G2dSetOamSoftEmuAutoZOffsetFlag: ; 0x020B497C + ldr r1, _020B4988 ; =bAutoZOffsetAdd_ str r0, [r1, #0x0] bx lr .balign 4 -_020B4988: .word UNK_021CED08 - arm_func_end FUN_020B497C +_020B4988: .word bAutoZOffsetAdd_ + arm_func_end NNSi_G2dSetOamSoftEmuAutoZOffsetFlag - ; CalcSpriteParams_ - arm_func_start FUN_020B498C -FUN_020B498C: ; 0x020B498C + arm_func_start CalcSpriteParams_ +CalcSpriteParams_: ; 0x020B498C stmdb sp!, {r4-r9,lr} sub sp, sp, #0xc mov r6, r0 @@ -283,9 +269,9 @@ FUN_020B498C: ; 0x020B498C and r0, r4, #0xc0000000 and r4, r4, #0xc000 mov lr, r0, lsr #0x1e - ldr r0, _020B4BD0 ; =UNK_020FF8AC + ldr r0, _020B4BD0 ; =NNSi_objSizeWTbl mov r12, r4, asr #0xe - ldr r8, _020B4BD4 ; =UNK_020FF894 + ldr r8, _020B4BD4 ; =NNSi_objSizeHTbl mov r4, lr, lsl #0x1 add r0, r0, r12, lsl #0x3 ldrh r9, [r4, r0] @@ -320,7 +306,7 @@ FUN_020B498C: ; 0x020B498C cmp r1, #0x4 moveq r1, r7, lsl #0xf moveq r7, r1, lsr #0x10 - ldr r1, _020B4BDC ; =UNK_020FF8D8 + ldr r1, _020B4BDC ; =texSize_$8337 ldr r1, [r1, r2, lsl #0x2] sub r1, r1, #0x1 and r1, r7, r1 @@ -338,9 +324,9 @@ _020B4A74: add r1, r1, #0x5 ldr r3, [r5, #0x8] mov lr, lr, lsl #0x10 - ldr sb, _020B4BE0 ; =UNK_020FF8F8 + ldr sb, _020B4BE0 ; =gxTexSizeSTbl mov r12, r12, lsr #0x10 - ldr r8, _020B4BE4 ; =UNK_020FF928 + ldr r8, _020B4BE4 ; =gxTexSizeTTbl add r1, r2, r7, lsl r1 mov r2, r3, lsl #0x1a orr r3, r2, r1, lsr #0x3 @@ -381,7 +367,7 @@ _020B4AE0: ldrne r2, [r0, #0x4] ldrne r1, [r0, #0xc] strne r1, [r0, #0x4] - ldr r1, _020B4BE8 ; =UNK_021CED0C + ldr r1, _020B4BE8 ; =s_pUVFlipCorrectFunc strne r2, [r0, #0xc] ldr r7, [r1, #0x0] cmp r7, #0x0 @@ -400,7 +386,7 @@ _020B4B60: mov r3, r1, lsl #0x12 ldr r1, [r5, #0xc] mov r0, r0, lsl #0x10 - ldr r2, _020B4BEC ; =UNK_020FF8D0 + ldr r2, _020B4BEC ; =pltFmtTbl$8430 mov r3, r3, lsr #0x1f cmp r1, #0x0 mov r0, r0, lsr #0x10 @@ -423,14 +409,13 @@ _020B4BA4: ldmia sp!, {r4-r9,pc} .balign 4 _020B4BCC: .word 0xC000C000 -_020B4BD0: .word UNK_020FF8AC -_020B4BD4: .word UNK_020FF894 +_020B4BD0: .word NNSi_objSizeWTbl +_020B4BD4: .word NNSi_objSizeHTbl _020B4BD8: .word 0x040004A8 -_020B4BDC: .word UNK_020FF8D8 -_020B4BE0: .word UNK_020FF8F8 -_020B4BE4: .word UNK_020FF928 -_020B4BE8: .word UNK_021CED0C -_020B4BEC: .word UNK_020FF8D0 +_020B4BDC: .word texSize_$8337 +_020B4BE0: .word gxTexSizeSTbl +_020B4BE4: .word gxTexSizeTTbl +_020B4BE8: .word s_pUVFlipCorrectFunc +_020B4BEC: .word pltFmtTbl$8430 _020B4BF0: .word 0x040004AC - arm_func_end FUN_020B498C - + arm_func_end CalcSpriteParams_ diff --git a/arm9/asm/NNS_G2D_g2d_palettetabl.s b/arm9/asm/NNS_G2D_g2d_palettetabl.s index bfa00006..a8d342cf 100644 --- a/arm9/asm/NNS_G2D_g2d_palettetabl.s +++ b/arm9/asm/NNS_G2D_g2d_palettetabl.s @@ -3,11 +3,9 @@ .section .text - ; _end - arm_func_start FUN_020B10B0 -FUN_020B10B0: ; 0x020B10B0 + arm_func_start NNS_G2dGetPaletteTableValue +NNS_G2dGetPaletteTableValue: ; 0x020B10B0 mov r1, r1, lsl #0x1 ldrh r0, [r0, r1] bx lr - arm_func_end FUN_020B10B0 - + arm_func_end NNS_G2dGetPaletteTableValue diff --git a/arm9/asm/NNS_G2D_g2d_renderer.s b/arm9/asm/NNS_G2D_g2d_renderer.s index d6213a1b..5cd5eaac 100644 --- a/arm9/asm/NNS_G2D_g2d_renderer.s +++ b/arm9/asm/NNS_G2D_g2d_renderer.s @@ -3,127 +3,90 @@ .section .data - ; firstSRTransformedMtxIdx_ - .global UNK_02106570 -UNK_02106570: ; 0x02106570 + .global firstSRTransformedMtxIdx_ +firstSRTransformedMtxIdx_: ; 0x02106570 .short -2 - .balign 4, 0 - ; currenVramTransferHandle_ - .global UNK_02106574 -UNK_02106574: ; 0x02106574 + + .global currenVramTransferHandle_ +currenVramTransferHandle_: ; 0x02106574 .word -1 - ; mtxI_ - .global UNK_02106578 -UNK_02106578: ; 0x02106578 + .global mtxI_ +mtxI_: ; 0x02106578 .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .section .bss - ; currentMtxCachePos_ - .global UNK_021CDD60 -UNK_021CDD60: ; 0x021CDD60 + .global currentMtxCachePos_ +currentMtxCachePos_: ; 0x021CDD60 .space 0x4 - ; groupID_ - .global UNK_021CDD64 -UNK_021CDD64: ; 0x021CDD64 + .global groupID_ +groupID_: ; 0x021CDD64 .space 0x4 - ; bDonotUseSRTransform - .global UNK_021CDD68 -UNK_021CDD68: ; 0x021CDD68 + .global bDonotUseSRTransform +bDonotUseSRTransform: ; 0x021CDD68 .space 0x4 - ; pCurrentInstance_ - .global UNK_021CDD6C -UNK_021CDD6C: ; 0x021CDD6C + .global pCurrentInstance_ +pCurrentInstance_: ; 0x021CDD6C .space 0x4 - ; stackPos_ - .global UNK_021CDD70 -UNK_021CDD70: ; 0x021CDD70 + .global stackPos_ +stackPos_: ; 0x021CDD70 .space 0x4 - ; fxZStack_ - .global UNK_021CDD74 -UNK_021CDD74: ; 0x021CDD74 + .global fxZStack_ +fxZStack_: ; 0x021CDD74 .space 0x80 - ; mtxStateStack_ - .global UNK_021CDDF4 -UNK_021CDDF4: ; 0x021CDDF4 - .space 0x4 - - ; mtxStateStack_ + 0x4 - .global UNK_021CDDF8 -UNK_021CDDF8: ; 0x021CDDF8 - .space 0xfc - - ; mtxStack_ - .global UNK_021CDEF4 -UNK_021CDEF4: ; 0x021CDEF4 - .space 0x10 + .global mtxStateStack_ +mtxStateStack_: ; 0x021CDDF4 + .space 0x100 - ; mtxStack_ + 0x10 - .global UNK_021CDF04 -UNK_021CDF04: ; 0x021CDF04 - .space 0x4 - - ; mtxStack_ + 0x14 - .global UNK_021CDF08 -UNK_021CDF08: ; 0x021CDF08 - .space 0x2ec + .global mtxStack_ +mtxStack_: ; 0x021CDEF4 + .space 0x300 - ; mtxStackFor2DHW_ - .global UNK_021CE1F4 -UNK_021CE1F4: ; 0x021CE1F4 + .global mtxStackFor2DHW_ +mtxStackFor2DHW_: ; 0x021CE1F4 .space 0x300 - ; mtxCacheBuffer_ - .global UNK_021CE4F4 -UNK_021CE4F4: ; 0x021CE4F4 + .global mtxCacheBuffer_ +mtxCacheBuffer_: ; 0x021CE4F4 .space 0x400 - ; mcRenderState_ - .global UNK_021CE8F4 -UNK_021CE8F4: ; 0x021CE8F4 - .space 0x4 - - ; mcRenderState_ + 0x4 - .global UNK_021CE8F8 -UNK_021CE8F8: ; 0x021CE8F8 - .space 0x404 + .global mcRenderState_ +mcRenderState_: ; 0x021CE8F4 + .space 0x408 .section .text - ; NNS_G2dSetRendererImageProxy - arm_func_start thunk_FUN_020b5040 -thunk_FUN_020b5040: ; 0x020B2780 - ldr ip, _020B2788 ; =FUN_020B5040 + arm_func_start NNS_G2dSetRendererImageProxy +NNS_G2dSetRendererImageProxy: ; 0x020B2780 + ldr ip, _020B2788 ; =NNS_G2dSetRndCoreImageProxy bx r12 .balign 4 -_020B2788: .word FUN_020B5040 - arm_func_end thunk_FUN_020b5040 +_020B2788: .word NNS_G2dSetRndCoreImageProxy + arm_func_end NNS_G2dSetRendererImageProxy - ; _end - arm_func_start FUN_020B278C -FUN_020B278C: ; 0x020B278C + arm_func_start NNS_G2dGetRendererPaletteTbl +NNS_G2dGetRendererPaletteTbl: ; 0x020B278C ldr r0, [r0, #0x78] bx lr - arm_func_end FUN_020B278C + arm_func_end NNS_G2dGetRendererPaletteTbl - ; NNS_G2dRotZ - arm_func_start FUN_020B2794 -FUN_020B2794: ; 0x020B2794 + arm_func_start NNS_G2dRotZ +NNS_G2dRotZ: ; 0x020B2794 stmdb sp!, {lr} sub sp, sp, #0x1c - ldr r2, _020B2894 ; =UNK_021CDD70 + ldr r2, _020B2894 ; =stackPos_ mov lr, #0x0 ldr r12, [r2, #0x0] - ldr r3, _020B2898 ; =UNK_021CDEF4 + ldr r3, _020B2898 ; =mtxStack_ mov r2, #0x18 str r1, [sp, #0x0] str r1, [sp, #0xc] @@ -135,20 +98,20 @@ FUN_020B2794: ; 0x020B2794 str r3, [sp, #0x8] str lr, [sp, #0x10] str lr, [sp, #0x14] - bl FUN_020B423C - ldr r0, _020B2894 ; =UNK_021CDD70 - ldr r1, _020B289C ; =UNK_021CE1F4 + bl NNSi_G2dMtxConcat32 + ldr r0, _020B2894 ; =stackPos_ + ldr r1, _020B289C ; =mtxStackFor2DHW_ ldr r2, [r0, #0x0] mov r0, #0x18 mla r1, r2, r0, r1 add r0, sp, #0x0 mov r2, r1 - bl FUN_020B423C - ldr r0, _020B28A0 ; =UNK_021CDD68 + bl NNSi_G2dMtxConcat32 + ldr r0, _020B28A0 ; =bDonotUseSRTransform ldr r0, [r0, #0x0] cmp r0, #0x0 bne _020B2824 - ldr r1, _020B28A4 ; =UNK_02106570 + ldr r1, _020B28A4 ; =firstSRTransformedMtxIdx_ ldr r0, _020B28A8 ; =0x0000FFFE ldrh r1, [r1, #0x0] cmp r1, r0 @@ -158,12 +121,12 @@ _020B2824: mov r0, #0x0 _020B2828: cmp r0, #0x0 - ldreq r1, _020B2894 ; =UNK_021CDD70 - ldreq r0, _020B28A4 ; =UNK_02106570 + ldreq r1, _020B2894 ; =stackPos_ + ldreq r0, _020B28A4 ; =firstSRTransformedMtxIdx_ ldreq r1, [r1, #0x0] streqh r1, [r0, #0x0] - ldr r0, _020B2894 ; =UNK_021CDD70 - ldr r1, _020B28AC ; =UNK_021CDDF4 + ldr r0, _020B2894 ; =stackPos_ + ldr r1, _020B28AC ; =mtxStateStack_ ldr r0, [r0, #0x0] mov r0, r0, lsl #0x10 add r12, r1, r0, lsr #0xd @@ -177,7 +140,7 @@ _020B2828: b _020B2870 ; case 2 b _020B2870 ; case 3 _020B2870: - ldr r0, _020B28B0 ; =UNK_021CDD64 + ldr r0, _020B28B0 ; =groupID_ mov r1, #0x1 ldrh r3, [r0, #0x0] add r2, r3, #0x1 @@ -188,26 +151,25 @@ _020B288C: add sp, sp, #0x1c ldmia sp!, {pc} .balign 4 -_020B2894: .word UNK_021CDD70 -_020B2898: .word UNK_021CDEF4 -_020B289C: .word UNK_021CE1F4 -_020B28A0: .word UNK_021CDD68 -_020B28A4: .word UNK_02106570 +_020B2894: .word stackPos_ +_020B2898: .word mtxStack_ +_020B289C: .word mtxStackFor2DHW_ +_020B28A0: .word bDonotUseSRTransform +_020B28A4: .word firstSRTransformedMtxIdx_ _020B28A8: .word 0x0000FFFE -_020B28AC: .word UNK_021CDDF4 -_020B28B0: .word UNK_021CDD64 - arm_func_end FUN_020B2794 +_020B28AC: .word mtxStateStack_ +_020B28B0: .word groupID_ + arm_func_end NNS_G2dRotZ - ; NNS_G2dScale - arm_func_start FUN_020B28B4 -FUN_020B28B4: ; 0x020B28B4 + arm_func_start NNS_G2dScale +NNS_G2dScale: ; 0x020B28B4 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x1c - ldr r2, _020B29E8 ; =UNK_021CDD70 + ldr r2, _020B29E8 ; =stackPos_ mov r12, #0x0 ldr r3, [r2, #0x0] mov r4, r1 - ldr r2, _020B29EC ; =UNK_021CDEF4 + ldr r2, _020B29EC ; =mtxStack_ mov r1, #0x18 mla r1, r3, r1, r2 mov r5, r0 @@ -219,7 +181,7 @@ FUN_020B28B4: ; 0x020B28B4 str r4, [sp, #0xc] str r12, [sp, #0x10] str r12, [sp, #0x14] - bl FUN_020B423C + bl NNSi_G2dMtxConcat32 mov r0, r5 bl FX_Inv mov r1, #0x0 @@ -229,22 +191,22 @@ FUN_020B28B4: ; 0x020B28B4 str r1, [sp, #0x8] bl FX_Inv mov r3, #0x0 - ldr r1, _020B29E8 ; =UNK_021CDD70 + ldr r1, _020B29E8 ; =stackPos_ str r0, [sp, #0xc] ldr r2, [r1, #0x0] - ldr r1, _020B29F0 ; =UNK_021CE1F4 + ldr r1, _020B29F0 ; =mtxStackFor2DHW_ mov r0, #0x18 mla r1, r2, r0, r1 add r0, sp, #0x0 mov r2, r1 str r3, [sp, #0x10] str r3, [sp, #0x14] - bl FUN_020B423C - ldr r0, _020B29F4 ; =UNK_021CDD68 + bl NNSi_G2dMtxConcat32 + ldr r0, _020B29F4 ; =bDonotUseSRTransform ldr r0, [r0, #0x0] cmp r0, #0x0 bne _020B2978 - ldr r1, _020B29F8 ; =UNK_02106570 + ldr r1, _020B29F8 ; =firstSRTransformedMtxIdx_ ldr r0, _020B29FC ; =0x0000FFFE ldrh r1, [r1, #0x0] cmp r1, r0 @@ -254,12 +216,12 @@ _020B2978: mov r0, #0x0 _020B297C: cmp r0, #0x0 - ldreq r1, _020B29E8 ; =UNK_021CDD70 - ldreq r0, _020B29F8 ; =UNK_02106570 + ldreq r1, _020B29E8 ; =stackPos_ + ldreq r0, _020B29F8 ; =firstSRTransformedMtxIdx_ ldreq r1, [r1, #0x0] streqh r1, [r0, #0x0] - ldr r0, _020B29E8 ; =UNK_021CDD70 - ldr r1, _020B2A00 ; =UNK_021CDDF4 + ldr r0, _020B29E8 ; =stackPos_ + ldr r1, _020B2A00 ; =mtxStateStack_ ldr r0, [r0, #0x0] mov r0, r0, lsl #0x10 add r12, r1, r0, lsr #0xd @@ -273,7 +235,7 @@ _020B297C: b _020B29C4 ; case 2 b _020B29C4 ; case 3 _020B29C4: - ldr r0, _020B2A04 ; =UNK_021CDD64 + ldr r0, _020B2A04 ; =groupID_ mov r1, #0x1 ldrh r3, [r0, #0x0] add r2, r3, #0x1 @@ -284,37 +246,36 @@ _020B29E0: add sp, sp, #0x1c ldmia sp!, {r4-r5,pc} .balign 4 -_020B29E8: .word UNK_021CDD70 -_020B29EC: .word UNK_021CDEF4 -_020B29F0: .word UNK_021CE1F4 -_020B29F4: .word UNK_021CDD68 -_020B29F8: .word UNK_02106570 +_020B29E8: .word stackPos_ +_020B29EC: .word mtxStack_ +_020B29F0: .word mtxStackFor2DHW_ +_020B29F4: .word bDonotUseSRTransform +_020B29F8: .word firstSRTransformedMtxIdx_ _020B29FC: .word 0x0000FFFE -_020B2A00: .word UNK_021CDDF4 -_020B2A04: .word UNK_021CDD64 - arm_func_end FUN_020B28B4 +_020B2A00: .word mtxStateStack_ +_020B2A04: .word groupID_ + arm_func_end NNS_G2dScale - ; NNS_G2dTranslate - arm_func_start FUN_020B2A08 -FUN_020B2A08: ; 0x020B2A08 + arm_func_start NNS_G2dTranslate +NNS_G2dTranslate: ; 0x020B2A08 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x1c - ldr r3, _020B2AEC ; =UNK_021CDD68 + ldr r3, _020B2AEC ; =bDonotUseSRTransform mov r4, r2 ldr r2, [r3, #0x0] cmp r2, #0x0 beq _020B2A6C - ldr r2, _020B2AF0 ; =UNK_021CDD70 + ldr r2, _020B2AF0 ; =stackPos_ mov r3, #0x18 ldr r2, [r2, #0x0] - ldr lr, _020B2AF4 ; =UNK_021CDF04 + ldr lr, _020B2AF4 ; =mtxStack_ + 0x10 mul r5, r2, r3 ldr r3, [lr, r5] - ldr ip, _020B2AF8 ; =UNK_021CDF08 + ldr ip, _020B2AF8 ; =mtxStack_ + 0x14 add r0, r3, r0 str r0, [lr, r5] ldr r0, [r12, r5] - ldr r3, _020B2AFC ; =UNK_021CDD74 + ldr r3, _020B2AFC ; =fxZStack_ add r0, r0, r1 str r0, [r12, r5] ldr r0, [r3, r2, lsl #0x2] @@ -323,10 +284,10 @@ FUN_020B2A08: ; 0x020B2A08 str r0, [r3, r2, lsl #0x2] ldmia sp!, {r4-r5,pc} _020B2A6C: - ldr r2, _020B2AF0 ; =UNK_021CDD70 + ldr r2, _020B2AF0 ; =stackPos_ mov lr, #0x1000 ldr r12, [r2, #0x0] - ldr r3, _020B2B00 ; =UNK_021CDEF4 + ldr r3, _020B2B00 ; =mtxStack_ mov r2, #0x18 str r1, [sp, #0x14] mla r1, r12, r2, r3 @@ -338,17 +299,17 @@ _020B2A6C: str r3, [sp, #0x4] str r3, [sp, #0x8] str lr, [sp, #0xc] - bl FUN_020B423C - ldr r0, _020B2AF0 ; =UNK_021CDD70 - ldr r1, _020B2B04 ; =UNK_021CE1F4 + bl NNSi_G2dMtxConcat32 + ldr r0, _020B2AF0 ; =stackPos_ + ldr r1, _020B2B04 ; =mtxStackFor2DHW_ ldr r2, [r0, #0x0] mov r0, #0x18 mla r1, r2, r0, r1 add r0, sp, #0x0 mov r2, r1 - bl FUN_020B423C - ldr r0, _020B2AF0 ; =UNK_021CDD70 - ldr r2, _020B2AFC ; =UNK_021CDD74 + bl NNSi_G2dMtxConcat32 + ldr r0, _020B2AF0 ; =stackPos_ + ldr r2, _020B2AFC ; =fxZStack_ ldr r1, [r0, #0x0] ldr r0, [r2, r1, lsl #0x2] add r0, r0, r4 @@ -356,27 +317,26 @@ _020B2A6C: add sp, sp, #0x1c ldmia sp!, {r4-r5,pc} .balign 4 -_020B2AEC: .word UNK_021CDD68 -_020B2AF0: .word UNK_021CDD70 -_020B2AF4: .word UNK_021CDF04 -_020B2AF8: .word UNK_021CDF08 -_020B2AFC: .word UNK_021CDD74 -_020B2B00: .word UNK_021CDEF4 -_020B2B04: .word UNK_021CE1F4 - arm_func_end FUN_020B2A08 +_020B2AEC: .word bDonotUseSRTransform +_020B2AF0: .word stackPos_ +_020B2AF4: .word mtxStack_ + 0x10 +_020B2AF8: .word mtxStack_ + 0x14 +_020B2AFC: .word fxZStack_ +_020B2B00: .word mtxStack_ +_020B2B04: .word mtxStackFor2DHW_ + arm_func_end NNS_G2dTranslate - ; NNS_G2dPopMtx - arm_func_start FUN_020B2B08 -FUN_020B2B08: ; 0x020B2B08 - ldr r0, _020B2B4C ; =UNK_021CDD70 + arm_func_start NNS_G2dPopMtx +NNS_G2dPopMtx: ; 0x020B2B08 + ldr r0, _020B2B4C ; =stackPos_ ldr r0, [r0, #0x0] cmp r0, #0x0 movle r0, #0x1 movgt r0, #0x0 cmp r0, #0x0 bxne lr - ldr r1, _020B2B4C ; =UNK_021CDD70 - ldr r0, _020B2B50 ; =UNK_02106570 + ldr r1, _020B2B4C ; =stackPos_ + ldr r0, _020B2B50 ; =firstSRTransformedMtxIdx_ ldr r3, [r1, #0x0] ldrh r2, [r0, #0x0] sub r3, r3, #0x1 @@ -386,21 +346,20 @@ FUN_020B2B08: ; 0x020B2B08 strgth r1, [r0, #0x0] bx lr .balign 4 -_020B2B4C: .word UNK_021CDD70 -_020B2B50: .word UNK_02106570 +_020B2B4C: .word stackPos_ +_020B2B50: .word firstSRTransformedMtxIdx_ _020B2B54: .word 0x0000FFFE - arm_func_end FUN_020B2B08 + arm_func_end NNS_G2dPopMtx - ; NNS_G2dPushMtx - arm_func_start FUN_020B2B58 -FUN_020B2B58: ; 0x020B2B58 + arm_func_start NNS_G2dPushMtx +NNS_G2dPushMtx: ; 0x020B2B58 stmdb sp!, {r4-r10,lr} - ldr r0, _020B2D74 ; =UNK_021CDD6C + ldr r0, _020B2D74 ; =pCurrentInstance_ ldr r0, [r0, #0x0] ldr r0, [r0, #0x7c] ands r0, r0, #0x1 bne _020B2CA4 - ldr r0, _020B2D78 ; =UNK_021CDD70 + ldr r0, _020B2D78 ; =stackPos_ ldr r1, [r0, #0x0] mov r0, r1, lsl #0x10 add r5, r1, #0x1 @@ -410,34 +369,34 @@ FUN_020B2B58: ; 0x020B2B58 movge r0, #0x0 cmp r0, #0x0 beq _020B2C44 - ldr r0, _020B2D7C ; =UNK_021CDD68 + ldr r0, _020B2D7C ; =bDonotUseSRTransform ldr r0, [r0, #0x0] cmp r0, #0x0 beq _020B2BE4 - ldr r1, _020B2D78 ; =UNK_021CDD70 + ldr r1, _020B2D78 ; =stackPos_ mov r0, #0x18 ldr r3, [r1, #0x0] - ldr r1, _020B2D80 ; =UNK_021CDD74 + ldr r1, _020B2D80 ; =fxZStack_ mul r8, r3, r0 - ldr r6, _020B2D84 ; =UNK_021CDF04 + ldr r6, _020B2D84 ; =mtxStack_ + 0x10 mul r7, r5, r0 ldr r2, [r6, r8] ldr r0, [r1, r3, lsl #0x2] - ldr r3, _020B2D88 ; =UNK_021CDF08 + ldr r3, _020B2D88 ; =mtxStack_ + 0x14 str r2, [r6, r7] ldr r2, [r3, r8] str r0, [r1, r5, lsl #0x2] str r2, [r3, r7] b _020B2C3C _020B2BE4: - ldr r1, _020B2D78 ; =UNK_021CDD70 + ldr r1, _020B2D78 ; =stackPos_ mov r0, #0x18 ldr r2, [r1, #0x0] - ldr r7, _020B2D80 ; =UNK_021CDD74 + ldr r7, _020B2D80 ; =fxZStack_ mul lr, r2, r0 - ldr r1, _020B2D8C ; =UNK_021CDEF4 + ldr r1, _020B2D8C ; =mtxStack_ mul r12, r5, r0 - ldr r8, _020B2D90 ; =UNK_021CE1F4 + ldr r8, _020B2D90 ; =mtxStackFor2DHW_ add r10, r1, lr ldr r6, [r7, r2, lsl #0x2] add r9, r1, r12 @@ -453,11 +412,11 @@ _020B2BE4: ldmia r7, {r0-r1} stmia r6, {r0-r1} _020B2C3C: - ldr r0, _020B2D78 ; =UNK_021CDD70 + ldr r0, _020B2D78 ; =stackPos_ str r5, [r0, #0x0] _020B2C44: - ldr r0, _020B2D78 ; =UNK_021CDD70 - ldr r2, _020B2D94 ; =UNK_021CDDF4 + ldr r0, _020B2D78 ; =stackPos_ + ldr r2, _020B2D94 ; =mtxStateStack_ ldr r0, [r0, #0x0] mov r5, r4, lsl #0x3 mov r0, r0, lsl #0x10 @@ -471,7 +430,7 @@ _020B2C44: strh r0, [r3, #0x2] ldrh r2, [r4, #0x4] ldrh r0, [r4, #0x6] - ldr r1, _020B2D98 ; =UNK_021CDDF8 + ldr r1, _020B2D98 ; =mtxStateStack_ + 0x4 strh r2, [r3, #0x4] strh r0, [r3, #0x6] ldrh r0, [r1, r5] @@ -481,7 +440,7 @@ _020B2C44: strneh r0, [r1, r6] ldmia sp!, {r4-r10,pc} _020B2CA4: - ldr r0, _020B2D78 ; =UNK_021CDD70 + ldr r0, _020B2D78 ; =stackPos_ ldr r0, [r0, #0x0] add r4, r0, #0x1 cmp r4, #0x20 @@ -489,34 +448,34 @@ _020B2CA4: movge r0, #0x0 cmp r0, #0x0 ldmeqia sp!, {r4-r10,pc} - ldr r0, _020B2D7C ; =UNK_021CDD68 + ldr r0, _020B2D7C ; =bDonotUseSRTransform ldr r0, [r0, #0x0] cmp r0, #0x0 beq _020B2D10 - ldr r1, _020B2D78 ; =UNK_021CDD70 + ldr r1, _020B2D78 ; =stackPos_ mov r0, #0x18 ldr r3, [r1, #0x0] - ldr r1, _020B2D80 ; =UNK_021CDD74 + ldr r1, _020B2D80 ; =fxZStack_ mul r7, r3, r0 - ldr r5, _020B2D84 ; =UNK_021CDF04 + ldr r5, _020B2D84 ; =mtxStack_ + 0x10 mul r6, r4, r0 ldr r2, [r5, r7] ldr r0, [r1, r3, lsl #0x2] - ldr r3, _020B2D88 ; =UNK_021CDF08 + ldr r3, _020B2D88 ; =mtxStack_ + 0x14 str r2, [r5, r6] ldr r2, [r3, r7] str r0, [r1, r4, lsl #0x2] str r2, [r3, r6] b _020B2D68 _020B2D10: - ldr r1, _020B2D78 ; =UNK_021CDD70 + ldr r1, _020B2D78 ; =stackPos_ mov r0, #0x18 ldr r2, [r1, #0x0] - ldr ip, _020B2D80 ; =UNK_021CDD74 + ldr ip, _020B2D80 ; =fxZStack_ mul r9, r2, r0 - ldr r1, _020B2D8C ; =UNK_021CDEF4 + ldr r1, _020B2D8C ; =mtxStack_ mul r8, r4, r0 - ldr lr, _020B2D90 ; =UNK_021CE1F4 + ldr lr, _020B2D90 ; =mtxStackFor2DHW_ add r6, r1, r9 ldr r5, [r12, r2, lsl #0x2] add r7, r1, r8 @@ -532,54 +491,53 @@ _020B2D10: stmia lr, {r0-r1} str r5, [r12, r4, lsl #0x2] _020B2D68: - ldr r0, _020B2D78 ; =UNK_021CDD70 + ldr r0, _020B2D78 ; =stackPos_ str r4, [r0, #0x0] ldmia sp!, {r4-r10,pc} .balign 4 -_020B2D74: .word UNK_021CDD6C -_020B2D78: .word UNK_021CDD70 -_020B2D7C: .word UNK_021CDD68 -_020B2D80: .word UNK_021CDD74 -_020B2D84: .word UNK_021CDF04 -_020B2D88: .word UNK_021CDF08 -_020B2D8C: .word UNK_021CDEF4 -_020B2D90: .word UNK_021CE1F4 -_020B2D94: .word UNK_021CDDF4 -_020B2D98: .word UNK_021CDDF8 - arm_func_end FUN_020B2B58 +_020B2D74: .word pCurrentInstance_ +_020B2D78: .word stackPos_ +_020B2D7C: .word bDonotUseSRTransform +_020B2D80: .word fxZStack_ +_020B2D84: .word mtxStack_ + 0x10 +_020B2D88: .word mtxStack_ + 0x14 +_020B2D8C: .word mtxStack_ +_020B2D90: .word mtxStackFor2DHW_ +_020B2D94: .word mtxStateStack_ +_020B2D98: .word mtxStateStack_ + 0x4 + arm_func_end NNS_G2dPushMtx - ; NNS_G2dDrawMultiCellAnimation - arm_func_start FUN_020B2D9C -FUN_020B2D9C: ; 0x020B2D9C + arm_func_start NNS_G2dDrawMultiCellAnimation +NNS_G2dDrawMultiCellAnimation: ; 0x020B2D9C stmdb sp!, {r4-r6,lr} mov r4, r0 ldrh r0, [r4, #0x56] cmp r0, #0x0 bne _020B2DBC add r0, r4, #0x30 - bl FUN_020B2E78 + bl NNS_G2dDrawMultiCell ldmia sp!, {r4-r6,pc} _020B2DBC: - bl FUN_020B2B58 + bl NNS_G2dPushMtx ldrh r0, [r4, #0x56] ands r0, r0, #0x8 beq _020B2E0C - ldr r0, _020B2E70 ; =UNK_021CDD6C + ldr r0, _020B2E70 ; =pCurrentInstance_ ldrsh r6, [r4, #0x52] ldr r0, [r0, #0x0] ldrsh r5, [r4, #0x50] - bl FUN_020B4F88 + bl NNS_G2dIsRndCoreFlipH cmp r0, #0x0 - ldr r0, _020B2E70 ; =UNK_021CDD6C + ldr r0, _020B2E70 ; =pCurrentInstance_ rsbne r5, r5, #0x0 ldr r0, [r0, #0x0] - bl FUN_020B4F74 + bl NNS_G2dIsRndCoreFlipV cmp r0, #0x0 rsbne r6, r6, #0x0 mov r0, r5, lsl #0xc mov r1, r6, lsl #0xc mov r2, #0x0 - bl FUN_020B2A08 + bl NNS_G2dTranslate _020B2E0C: ldrh r0, [r4, #0x56] ands r0, r0, #0x4 @@ -593,7 +551,7 @@ _020B2E0C: mov r1, r0, lsl #0x1 ldrsh r0, [r2, r3] ldrsh r1, [r2, r1] - bl FUN_020B2794 + bl NNS_G2dRotZ _020B2E40: ldrh r0, [r4, #0x56] ands r0, r0, #0x2 @@ -601,21 +559,20 @@ _020B2E40: ldr r0, [r4, #0x48] ldr r1, [r4, #0x4c] mov r2, #0x1000 - bl FUN_020B28B4 + bl NNS_G2dScale _020B2E5C: add r0, r4, #0x30 - bl FUN_020B2E78 + bl NNS_G2dDrawMultiCell mov r0, #0x1 - bl FUN_020B2B08 + bl NNS_G2dPopMtx ldmia sp!, {r4-r6,pc} .balign 4 -_020B2E70: .word UNK_021CDD6C +_020B2E70: .word pCurrentInstance_ _020B2E74: .word FX_SinCosTable_ - arm_func_end FUN_020B2D9C + arm_func_end NNS_G2dDrawMultiCellAnimation - ; NNS_G2dDrawMultiCell - arm_func_start FUN_020B2E78 -FUN_020B2E78: ; 0x020B2E78 + arm_func_start NNS_G2dDrawMultiCell +NNS_G2dDrawMultiCell: ; 0x020B2E78 stmdb sp!, {r4-r11,lr} sub sp, sp, #0xc mov r5, r0 @@ -627,7 +584,7 @@ FUN_020B2E78: ; 0x020B2E78 ldrh r0, [r0, #0x2] cmp r0, #0x0 bls _020B2ED0 - ldr r3, _020B3174 ; =UNK_021CE8F4 + ldr r3, _020B3174 ; =mcRenderState_ mov r4, r2 _020B2EAC: add r0, r3, r2, lsl #0x2 @@ -640,22 +597,22 @@ _020B2EAC: cmp r2, r1 blo _020B2EAC _020B2ED0: - ldr r0, _020B3178 ; =UNK_021CDD6C + ldr r0, _020B3178 ; =pCurrentInstance_ mov r6, #0x1 ldr r1, [r0, #0x0] - ldr r0, _020B3174 ; =UNK_021CE8F4 + ldr r0, _020B3174 ; =mcRenderState_ str r6, [r0, #0x404] ldr r0, [r1, #0x80] cmp r0, #0x0 beq _020B2FD8 - bl FUN_020B4948 + bl NNSi_G2dGetOamSoftEmuAutoZOffsetStep str r0, [sp, #0x0] mov r0, r6 - bl FUN_020B497C - ldr r0, _020B3178 ; =UNK_021CDD6C + bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag + ldr r0, _020B3178 ; =pCurrentInstance_ ldr r0, [r0, #0x0] ldr r0, [r0, #0x80] - bl FUN_020B4958 + bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep ldr r2, [r5, #0x0] mov r7, #0x0 ldrh r0, [r2, #0x0] @@ -670,30 +627,30 @@ _020B2F28: and r0, r0, #0xff00 mov r0, r0, lsl #0x8 mov r8, r0, lsr #0x10 - ldr r0, _020B3174 ; =UNK_021CE8F4 + ldr r0, _020B3174 ; =mcRenderState_ strh r8, [r0, #0x0] - bl FUN_020B2B58 - ldr r0, _020B3178 ; =UNK_021CDD6C + bl NNS_G2dPushMtx + ldr r0, _020B3178 ; =pCurrentInstance_ ldrsh r4, [r10, #0x4] ldr r0, [r0, #0x0] ldrsh r10, [r10, #0x2] - bl FUN_020B4F88 + bl NNS_G2dIsRndCoreFlipH cmp r0, #0x0 - ldr r0, _020B3178 ; =UNK_021CDD6C + ldr r0, _020B3178 ; =pCurrentInstance_ rsbne r10, r10, #0x0 ldr r0, [r0, #0x0] - bl FUN_020B4F74 + bl NNS_G2dIsRndCoreFlipV cmp r0, #0x0 rsbne r4, r4, #0x0 mov r2, r11 mov r0, r10, lsl #0xc mov r1, r4, lsl #0xc - bl FUN_020B2A08 + bl NNS_G2dTranslate mov r0, #0x58 mla r0, r8, r0, r9 - bl FUN_020B3554 + bl DrawCellAnimationImpl_ mov r0, r6 - bl FUN_020B2B08 + bl NNS_G2dPopMtx ldr r2, [r5, #0x0] add r0, r7, #0x1 mov r0, r0, lsl #0x10 @@ -703,10 +660,10 @@ _020B2F28: blo _020B2F28 _020B2FC0: mov r0, #0x0 - bl FUN_020B497C + bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag ldr r0, [sp, #0x0] - bl FUN_020B4958 - bl FUN_020B4968 + bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep + bl NNSi_G2dResetOamSoftEmuAutoZOffset b _020B3088 _020B2FD8: ldr r2, [r5, #0x0] @@ -724,29 +681,29 @@ _020B2FF4: and r0, r0, #0xff00 mov r0, r0, lsl #0x8 mov r8, r0, lsr #0x10 - ldr r0, _020B3174 ; =UNK_021CE8F4 + ldr r0, _020B3174 ; =mcRenderState_ strh r8, [r0, #0x0] - bl FUN_020B2B58 - ldr r0, _020B3178 ; =UNK_021CDD6C + bl NNS_G2dPushMtx + ldr r0, _020B3178 ; =pCurrentInstance_ ldrsh r4, [r10, #0x4] ldr r0, [r0, #0x0] ldrsh r10, [r10, #0x2] - bl FUN_020B4F88 + bl NNS_G2dIsRndCoreFlipH cmp r0, #0x0 - ldr r0, _020B3178 ; =UNK_021CDD6C + ldr r0, _020B3178 ; =pCurrentInstance_ rsbne r10, r10, #0x0 ldr r0, [r0, #0x0] - bl FUN_020B4F74 + bl NNS_G2dIsRndCoreFlipV cmp r0, #0x0 rsbne r4, r4, #0x0 ldr r2, [sp, #0x4] mov r0, r10, lsl #0xc mov r1, r4, lsl #0xc - bl FUN_020B2A08 + bl NNS_G2dTranslate mla r0, r8, r11, r9 - bl FUN_020B3554 + bl DrawCellAnimationImpl_ mov r0, r6 - bl FUN_020B2B08 + bl NNS_G2dPopMtx ldr r2, [r5, #0x0] add r0, r7, #0x1 mov r0, r0, lsl #0x10 @@ -755,26 +712,26 @@ _020B2FF4: cmp r7, r1 blo _020B2FF4 _020B3088: - ldr r0, _020B3174 ; =UNK_021CE8F4 + ldr r0, _020B3174 ; =mcRenderState_ mov r1, #0x0 str r1, [r0, #0x404] add sp, sp, #0xc ldmia sp!, {r4-r11,pc} _020B309C: - ldr r0, _020B3178 ; =UNK_021CDD6C + ldr r0, _020B3178 ; =pCurrentInstance_ ldr r7, [r5, #0xc] ldr r0, [r0, #0x0] ldr r0, [r0, #0x80] cmp r0, #0x0 beq _020B312C - bl FUN_020B4948 + bl NNSi_G2dGetOamSoftEmuAutoZOffsetStep mov r6, r0 mov r0, #0x1 - bl FUN_020B497C - ldr r0, _020B3178 ; =UNK_021CDD6C + bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag + ldr r0, _020B3178 ; =pCurrentInstance_ ldr r0, [r0, #0x0] ldr r0, [r0, #0x80] - bl FUN_020B4958 + bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep ldr r0, [r5, #0x0] mov r4, #0x0 ldrh r0, [r0, #0x0] @@ -783,7 +740,7 @@ _020B309C: mov r8, #0x28 _020B30EC: mla r0, r4, r8, r7 - bl FUN_020B3474 + bl DrawNode_ ldr r1, [r5, #0x0] add r0, r4, #0x1 mov r0, r0, lsl #0x10 @@ -793,10 +750,10 @@ _020B30EC: blo _020B30EC _020B3110: mov r0, #0x0 - bl FUN_020B497C + bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag mov r0, r6 - bl FUN_020B4958 - bl FUN_020B4968 + bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep + bl NNSi_G2dResetOamSoftEmuAutoZOffset add sp, sp, #0xc ldmia sp!, {r4-r11,pc} _020B312C: @@ -809,7 +766,7 @@ _020B312C: mov r6, #0x28 _020B3148: mla r0, r4, r6, r7 - bl FUN_020B3474 + bl DrawNode_ ldr r1, [r5, #0x0] add r0, r4, #0x1 mov r0, r0, lsl #0x10 @@ -820,102 +777,99 @@ _020B3148: add sp, sp, #0xc ldmia sp!, {r4-r11,pc} .balign 4 -_020B3174: .word UNK_021CE8F4 -_020B3178: .word UNK_021CDD6C - arm_func_end FUN_020B2E78 +_020B3174: .word mcRenderState_ +_020B3178: .word pCurrentInstance_ + arm_func_end NNS_G2dDrawMultiCell - ; NNS_G2dDrawCellAnimation - arm_func_start FUN_020B317C -FUN_020B317C: ; 0x020B317C + arm_func_start NNS_G2dDrawCellAnimation +NNS_G2dDrawCellAnimation: ; 0x020B317C stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 - ldr r1, _020B31EC ; =UNK_021CDD6C + ldr r1, _020B31EC ; =pCurrentInstance_ mov r5, r0 ldr r1, [r1, #0x0] ldr r1, [r1, #0x80] cmp r1, #0x0 beq _020B31E0 - bl FUN_020B4948 + bl NNSi_G2dGetOamSoftEmuAutoZOffsetStep mov r4, r0 mov r0, #0x1 - bl FUN_020B497C - ldr r0, _020B31EC ; =UNK_021CDD6C + bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag + ldr r0, _020B31EC ; =pCurrentInstance_ ldr r0, [r0, #0x0] ldr r0, [r0, #0x80] - bl FUN_020B4958 + bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep mov r0, r5 - bl FUN_020B3554 + bl DrawCellAnimationImpl_ mov r0, #0x0 - bl FUN_020B497C + bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag mov r0, r4 - bl FUN_020B4958 - bl FUN_020B4968 + bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep + bl NNSi_G2dResetOamSoftEmuAutoZOffset add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} _020B31E0: - bl FUN_020B3554 + bl DrawCellAnimationImpl_ add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020B31EC: .word UNK_021CDD6C - arm_func_end FUN_020B317C +_020B31EC: .word pCurrentInstance_ + arm_func_end NNS_G2dDrawCellAnimation - ; NNS_G2dEndRendering - arm_func_start FUN_020B31F0 -FUN_020B31F0: ; 0x020B31F0 + arm_func_start NNS_G2dEndRendering +NNS_G2dEndRendering: ; 0x020B31F0 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r1, _020B3260 ; =0x04000448 mov r2, #0x1 - ldr r0, _020B3264 ; =UNK_021CDD6C + ldr r0, _020B3264 ; =pCurrentInstance_ str r2, [r1, #0x0] ldr r2, [r0, #0x0] ldr r3, [r2, #0x7c] cmp r3, #0x0 beq _020B324C ands r0, r3, #0x1 - ldrne r0, _020B3268 ; =UNK_021CDD68 + ldrne r0, _020B3268 ; =bDonotUseSRTransform movne r1, #0x0 strne r1, [r0, #0x0] ands r0, r3, #0x2 beq _020B323C mov r0, #0x0 str r0, [r2, #0x74] - bl FUN_020B4DA0 + bl NNS_G2dRndCoreEndRendering _020B323C: - ldr r0, _020B3264 ; =UNK_021CDD6C + ldr r0, _020B3264 ; =pCurrentInstance_ mov r1, #0x0 ldr r0, [r0, #0x0] str r1, [r0, #0x7c] _020B324C: - ldr r0, _020B3264 ; =UNK_021CDD6C + ldr r0, _020B3264 ; =pCurrentInstance_ mov r1, #0x0 str r1, [r0, #0x0] add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 _020B3260: .word 0x04000448 -_020B3264: .word UNK_021CDD6C -_020B3268: .word UNK_021CDD68 - arm_func_end FUN_020B31F0 +_020B3264: .word pCurrentInstance_ +_020B3268: .word bDonotUseSRTransform + arm_func_end NNS_G2dEndRendering - ; NNS_G2dBeginRendering - arm_func_start FUN_020B326C -FUN_020B326C: ; 0x020B326C + arm_func_start NNS_G2dBeginRendering +NNS_G2dBeginRendering: ; 0x020B326C stmdb sp!, {r4-r8,lr} - ldr r5, _020B330C ; =UNK_021CDD60 - ldr r3, _020B3310 ; =UNK_021CDD6C + ldr r5, _020B330C ; =currentMtxCachePos_ + ldr r3, _020B3310 ; =pCurrentInstance_ ldrh r6, [r5, #0x0] - ldr r2, _020B3314 ; =UNK_021CDD70 + ldr r2, _020B3314 ; =stackPos_ mov r4, #0x0 ldr r7, _020B3318 ; =0x0000FFFE - ldr r1, _020B331C ; =UNK_02106570 + ldr r1, _020B331C ; =firstSRTransformedMtxIdx_ str r0, [r3, #0x0] str r4, [r2, #0x0] strh r7, [r1, #0x0] cmp r6, #0x0 ble _020B32D0 - ldr r8, _020B3320 ; =UNK_021CE4F4 + ldr r8, _020B3320 ; =mtxCacheBuffer_ mvn r7, #0x0 mov r6, #0x10 _020B32AC: @@ -929,10 +883,10 @@ _020B32AC: cmp r4, r0 blt _020B32AC _020B32D0: - ldr r4, _020B330C ; =UNK_021CDD60 + ldr r4, _020B330C ; =currentMtxCachePos_ mov r0, #0x0 - ldr r3, _020B3324 ; =UNK_021CDD64 - ldr r1, _020B3328 ; =UNK_021CDDF4 + ldr r3, _020B3324 ; =groupID_ + ldr r1, _020B3328 ; =mtxStateStack_ mov r2, #0x100 strh r0, [r4, #0x0] strh r0, [r3, #0x0] @@ -942,24 +896,23 @@ _020B32D0: ldr r0, _020B3330 ; =0x04000454 str r2, [r1, #0x0] str r2, [r0, #0x0] - bl FUN_020B4178 + bl NNSi_G2dIdentity ldmia sp!, {r4-r8,pc} .balign 4 -_020B330C: .word UNK_021CDD60 -_020B3310: .word UNK_021CDD6C -_020B3314: .word UNK_021CDD70 +_020B330C: .word currentMtxCachePos_ +_020B3310: .word pCurrentInstance_ +_020B3314: .word stackPos_ _020B3318: .word 0x0000FFFE -_020B331C: .word UNK_02106570 -_020B3320: .word UNK_021CE4F4 -_020B3324: .word UNK_021CDD64 -_020B3328: .word UNK_021CDDF4 +_020B331C: .word firstSRTransformedMtxIdx_ +_020B3320: .word mtxCacheBuffer_ +_020B3324: .word groupID_ +_020B3328: .word mtxStateStack_ _020B332C: .word 0x04000444 _020B3330: .word 0x04000454 - arm_func_end FUN_020B326C + arm_func_end NNS_G2dBeginRendering - ; NNS_G2dInitRenderSurface - arm_func_start FUN_020B3334 -FUN_020B3334: ; 0x020B3334 + arm_func_start NNS_G2dInitRenderSurface +NNS_G2dInitRenderSurface: ; 0x020B3334 stmdb sp!, {r4,lr} mov r4, r0 mov r1, r4 @@ -969,39 +922,37 @@ FUN_020B3334: ; 0x020B3334 mov r0, #0x1 str r0, [r4, #0x10] mov r0, #0x3 - ldr r1, _020B3380 ; =FUN_020B3EE0 + ldr r1, _020B3380 ; =RndCoreCBFuncBeforeCell_ str r0, [r4, #0x14] - ldr r0, _020B3384 ; =FUN_020B3E48 + ldr r0, _020B3384 ; =RndCoreCBFuncAfterCell_ str r1, [r4, #0x18] - ldr r1, _020B3388 ; =FUN_020B3C40 + ldr r1, _020B3388 ; =RndCoreCBFuncBeforeOBJ_ str r0, [r4, #0x1c] - ldr r0, _020B338C ; =FUN_020B3B90 + ldr r0, _020B338C ; =RndCoreCBFuncAfterOBJ_ str r1, [r4, #0x20] str r0, [r4, #0x24] ldmia sp!, {r4,pc} .balign 4 -_020B3380: .word FUN_020B3EE0 -_020B3384: .word FUN_020B3E48 -_020B3388: .word FUN_020B3C40 -_020B338C: .word FUN_020B3B90 - arm_func_end FUN_020B3334 +_020B3380: .word RndCoreCBFuncBeforeCell_ +_020B3384: .word RndCoreCBFuncAfterCell_ +_020B3388: .word RndCoreCBFuncBeforeOBJ_ +_020B338C: .word RndCoreCBFuncAfterOBJ_ + arm_func_end NNS_G2dInitRenderSurface - ; _end - arm_func_start FUN_020B3390 -FUN_020B3390: ; 0x020B3390 + arm_func_start NNS_G2dAddRendererTargetSurface +NNS_G2dAddRendererTargetSurface: ; 0x020B3390 ldr r2, [r0, #0x70] str r2, [r1, #0x30] str r1, [r0, #0x70] bx lr - arm_func_end FUN_020B3390 + arm_func_end NNS_G2dAddRendererTargetSurface - ; NNS_G2dInitRenderer - arm_func_start FUN_020B33A0 -FUN_020B33A0: ; 0x020B33A0 + arm_func_start NNS_G2dInitRenderer +NNS_G2dInitRenderer: ; 0x020B33A0 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r4, r0 - bl FUN_020B504C + bl NNS_G2dInitRndCore mov r7, #0x0 str r7, [r4, #0x70] str r7, [r4, #0x74] @@ -1013,11 +964,11 @@ FUN_020B33A0: ; 0x020B33A0 strh r7, [r4, #0x8a] str r7, [r4, #0x8c] str r7, [r4, #0x90] - ldr r1, _020B3454 ; =UNK_021CDD70 + ldr r1, _020B3454 ; =stackPos_ strh r7, [r4, #0x94] ldr r2, _020B3458 ; =0x0000FFFE - ldr r0, _020B345C ; =UNK_02106570 - ldr r6, _020B3460 ; =UNK_021CE4F4 + ldr r0, _020B345C ; =firstSRTransformedMtxIdx_ + ldr r6, _020B3460 ; =mtxCacheBuffer_ str r7, [r1, #0x0] strh r2, [r0, #0x0] mvn r5, #0x0 @@ -1031,33 +982,32 @@ _020B3400: cmp r7, #0x20 add r6, r6, #0x20 blt _020B3400 - ldr ip, _020B3464 ; =UNK_021CDD60 + ldr ip, _020B3464 ; =currentMtxCachePos_ mov r0, #0x0 - ldr r3, _020B3468 ; =UNK_021CDD64 - ldr r1, _020B346C ; =UNK_021CDDF4 + ldr r3, _020B3468 ; =groupID_ + ldr r1, _020B346C ; =mtxStateStack_ mov r2, #0x100 strh r0, [r12, #0x0] strh r0, [r3, #0x0] bl MIi_CpuClearFast - ldr r0, _020B3470 ; =UNK_021CDD68 + ldr r0, _020B3470 ; =bDonotUseSRTransform mov r1, #0x0 str r1, [r0, #0x0] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020B3454: .word UNK_021CDD70 +_020B3454: .word stackPos_ _020B3458: .word 0x0000FFFE -_020B345C: .word UNK_02106570 -_020B3460: .word UNK_021CE4F4 -_020B3464: .word UNK_021CDD60 -_020B3468: .word UNK_021CDD64 -_020B346C: .word UNK_021CDDF4 -_020B3470: .word UNK_021CDD68 - arm_func_end FUN_020B33A0 +_020B345C: .word firstSRTransformedMtxIdx_ +_020B3460: .word mtxCacheBuffer_ +_020B3464: .word currentMtxCachePos_ +_020B3468: .word groupID_ +_020B346C: .word mtxStateStack_ +_020B3470: .word bDonotUseSRTransform + arm_func_end NNS_G2dInitRenderer - ; DrawNode_ - arm_func_start FUN_020B3474 -FUN_020B3474: ; 0x020B3474 + arm_func_start DrawNode_ +DrawNode_: ; 0x020B3474 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r5, r0 @@ -1066,26 +1016,26 @@ FUN_020B3474: ; 0x020B3474 addeq sp, sp, #0x4 ldmeqia sp!, {r4-r7,pc} ldr r4, [r5, #0x0] - bl FUN_020B2B58 + bl NNS_G2dPushMtx ldrh r0, [r5, #0x1e] ands r0, r0, #0x8 beq _020B34E4 - ldr r0, _020B354C ; =UNK_021CDD6C + ldr r0, _020B354C ; =pCurrentInstance_ ldrsh r7, [r5, #0x1a] ldr r0, [r0, #0x0] ldrsh r6, [r5, #0x18] - bl FUN_020B4F88 + bl NNS_G2dIsRndCoreFlipH cmp r0, #0x0 - ldr r0, _020B354C ; =UNK_021CDD6C + ldr r0, _020B354C ; =pCurrentInstance_ rsbne r6, r6, #0x0 ldr r0, [r0, #0x0] - bl FUN_020B4F74 + bl NNS_G2dIsRndCoreFlipV cmp r0, #0x0 rsbne r7, r7, #0x0 mov r0, r6, lsl #0xc mov r1, r7, lsl #0xc mov r2, #0x0 - bl FUN_020B2A08 + bl NNS_G2dTranslate _020B34E4: ldrh r0, [r5, #0x1e] ands r0, r0, #0x4 @@ -1099,7 +1049,7 @@ _020B34E4: mov r1, r0, lsl #0x1 ldrsh r0, [r2, r3] ldrsh r1, [r2, r1] - bl FUN_020B2794 + bl NNS_G2dRotZ _020B3518: ldrh r0, [r5, #0x1e] ands r0, r0, #0x2 @@ -1107,22 +1057,21 @@ _020B3518: ldr r0, [r5, #0x10] ldr r1, [r5, #0x14] mov r2, #0x1000 - bl FUN_020B28B4 + bl NNS_G2dScale _020B3534: mov r0, r4 - bl FUN_020B3554 + bl DrawCellAnimationImpl_ mov r0, #0x1 - bl FUN_020B2B08 + bl NNS_G2dPopMtx add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020B354C: .word UNK_021CDD6C +_020B354C: .word pCurrentInstance_ _020B3550: .word FX_SinCosTable_ - arm_func_end FUN_020B3474 + arm_func_end DrawNode_ - ; DrawCellAnimationImpl_ - arm_func_start FUN_020B3554 -FUN_020B3554: ; 0x020B3554 + arm_func_start DrawCellAnimationImpl_ +DrawCellAnimationImpl_: ; 0x020B3554 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r5, r0 @@ -1137,41 +1086,41 @@ FUN_020B3554: ; 0x020B3554 moveq r0, #0x0 cmp r0, #0x0 beq _020B35B0 - ldr r1, _020B36B4 ; =UNK_02106574 + ldr r1, _020B36B4 ; =currenVramTransferHandle_ mov r0, r4 str r2, [r1, #0x0] - bl FUN_020B36C0 - ldr r0, _020B36B4 ; =UNK_02106574 + bl DrawCellImpl_ + ldr r0, _020B36B4 ; =currenVramTransferHandle_ mvn r1, #0x0 str r1, [r0, #0x0] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} _020B35B0: mov r0, r4 - bl FUN_020B36C0 + bl DrawCellImpl_ add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} _020B35C0: - bl FUN_020B2B58 + bl NNS_G2dPushMtx ldrh r0, [r5, #0x4a] ands r0, r0, #0x8 beq _020B3610 - ldr r0, _020B36B8 ; =UNK_021CDD6C + ldr r0, _020B36B8 ; =pCurrentInstance_ ldrsh r7, [r5, #0x46] ldr r0, [r0, #0x0] ldrsh r6, [r5, #0x44] - bl FUN_020B4F88 + bl NNS_G2dIsRndCoreFlipH cmp r0, #0x0 - ldr r0, _020B36B8 ; =UNK_021CDD6C + ldr r0, _020B36B8 ; =pCurrentInstance_ rsbne r6, r6, #0x0 ldr r0, [r0, #0x0] - bl FUN_020B4F74 + bl NNS_G2dIsRndCoreFlipV cmp r0, #0x0 rsbne r7, r7, #0x0 mov r0, r6, lsl #0xc mov r1, r7, lsl #0xc mov r2, #0x0 - bl FUN_020B2A08 + bl NNS_G2dTranslate _020B3610: ldrh r0, [r5, #0x4a] ands r0, r0, #0x4 @@ -1185,7 +1134,7 @@ _020B3610: mov r1, r0, lsl #0x1 ldrsh r0, [r2, r3] ldrsh r1, [r2, r1] - bl FUN_020B2794 + bl NNS_G2dRotZ _020B3644: ldrh r0, [r5, #0x4a] ands r0, r0, #0x2 @@ -1193,7 +1142,7 @@ _020B3644: ldr r0, [r5, #0x3c] ldr r1, [r5, #0x40] mov r2, #0x1000 - bl FUN_020B28B4 + bl NNS_G2dScale _020B3660: ldr r2, [r5, #0x34] mvn r0, #0x0 @@ -1202,34 +1151,33 @@ _020B3660: moveq r0, #0x0 cmp r0, #0x0 beq _020B369C - ldr r1, _020B36B4 ; =UNK_02106574 + ldr r1, _020B36B4 ; =currenVramTransferHandle_ mov r0, r4 str r2, [r1, #0x0] - bl FUN_020B36C0 - ldr r0, _020B36B4 ; =UNK_02106574 + bl DrawCellImpl_ + ldr r0, _020B36B4 ; =currenVramTransferHandle_ mvn r1, #0x0 str r1, [r0, #0x0] b _020B36A4 _020B369C: mov r0, r4 - bl FUN_020B36C0 + bl DrawCellImpl_ _020B36A4: mov r0, #0x1 - bl FUN_020B2B08 + bl NNS_G2dPopMtx add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020B36B4: .word UNK_02106574 -_020B36B8: .word UNK_021CDD6C +_020B36B4: .word currenVramTransferHandle_ +_020B36B8: .word pCurrentInstance_ _020B36BC: .word FX_SinCosTable_ - arm_func_end FUN_020B3554 + arm_func_end DrawCellAnimationImpl_ - ; DrawCellImpl_ - arm_func_start FUN_020B36C0 -FUN_020B36C0: ; 0x020B36C0 + arm_func_start DrawCellImpl_ +DrawCellImpl_: ; 0x020B36C0 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4 - ldr r5, _020B3B54 ; =UNK_021CDD6C + ldr r5, _020B3B54 ; =pCurrentInstance_ mov r10, r0 ldr r0, [r5, #0x0] ldr r1, [r0, #0x7c] @@ -1240,12 +1188,12 @@ FUN_020B36C0: ; 0x020B36C0 ldr r0, [r9, #0x14] cmp r0, #0x0 beq _020B3840 - ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, _020B3B58 ; =bDonotUseSRTransform mov r1, #0x0 ldr r0, [r0, #0x0] cmp r0, #0x0 bne _020B3720 - ldr r2, _020B3B5C ; =UNK_02106570 + ldr r2, _020B3B5C ; =firstSRTransformedMtxIdx_ ldr r0, _020B3B60 ; =0x0000FFFE ldrh r2, [r2, #0x0] cmp r2, r0 @@ -1256,63 +1204,63 @@ _020B3720: _020B3724: cmp r0, #0x0 beq _020B37AC - ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldr r0, _020B3B64 ; =mcRenderState_ ldr r1, [r0, #0x404] cmp r1, #0x0 beq _020B3788 ldrh r1, [r0, #0x0] - ldr r0, _020B3B68 ; =UNK_021CE8F8 + ldr r0, _020B3B68 ; =mcRenderState_ + 0x4 ldr r1, [r0, r1, lsl #0x2] cmp r1, #0x0 bne _020B37AC - bl FUN_020B4010 - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r2, _020B3B70 ; =UNK_021CDDF4 + bl NNSi_G2dMCMStoreCurrentMtxToMtxCache + ldr r0, _020B3B6C ; =stackPos_ + ldr r2, _020B3B70 ; =mtxStateStack_ ldr r0, [r0, #0x0] - ldr r1, _020B3B64 ; =UNK_021CE8F4 + ldr r1, _020B3B64 ; =mcRenderState_ mov r0, r0, lsl #0x10 mov r0, r0, lsr #0xd ldrh r3, [r2, r0] - ldr r4, _020B3B74 ; =UNK_021CE4F4 + ldr r4, _020B3B74 ; =mtxCacheBuffer_ ldrh r2, [r1, #0x0] - ldr r0, _020B3B68 ; =UNK_021CE8F8 + ldr r0, _020B3B68 ; =mcRenderState_ + 0x4 add r1, r4, r3, lsl #0x5 str r1, [r0, r2, lsl #0x2] b _020B37AC _020B3788: - bl FUN_020B4010 - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r1, _020B3B70 ; =UNK_021CDDF4 + bl NNSi_G2dMCMStoreCurrentMtxToMtxCache + ldr r0, _020B3B6C ; =stackPos_ + ldr r1, _020B3B70 ; =mtxStateStack_ ldr r0, [r0, #0x0] - ldr r2, _020B3B74 ; =UNK_021CE4F4 + ldr r2, _020B3B74 ; =mtxCacheBuffer_ mov r0, r0, lsl #0x10 mov r0, r0, lsr #0xd ldrh r0, [r1, r0] add r1, r2, r0, lsl #0x5 _020B37AC: - ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, _020B3B58 ; =bDonotUseSRTransform ldr r0, [r0, #0x0] cmp r0, #0x0 - ldreq r0, _020B3B6C ; =UNK_021CDD70 - ldreq r3, _020B3B78 ; =UNK_021CDEF4 + ldreq r0, _020B3B6C ; =stackPos_ + ldreq r3, _020B3B78 ; =mtxStack_ ldreq r2, [r0, #0x0] moveq r0, #0x18 mlaeq r0, r2, r0, r3 beq _020B37FC - ldr r2, _020B3B6C ; =UNK_021CDD70 + ldr r2, _020B3B6C ; =stackPos_ mov r0, #0x18 ldr r2, [r2, #0x0] - ldr r3, _020B3B7C ; =UNK_021CDF04 + ldr r3, _020B3B7C ; =mtxStack_ + 0x10 mul r4, r2, r0 - ldr r2, _020B3B80 ; =UNK_021CDF08 + ldr r2, _020B3B80 ; =mtxStack_ + 0x14 ldr r3, [r3, r4] - ldr r0, _020B3B84 ; =UNK_02106578 + ldr r0, _020B3B84 ; =mtxI_ ldr r2, [r2, r4] str r3, [r0, #0x10] str r2, [r0, #0x14] _020B37FC: - bl FUN_020B4FAC - ldr r1, _020B3B88 ; =UNK_02106574 + bl NNS_G2dSetRndCoreCurrentMtx2D + ldr r1, _020B3B88 ; =currenVramTransferHandle_ mvn r0, #0x0 ldr r1, [r1, #0x0] cmp r1, r0 @@ -1321,44 +1269,44 @@ _020B37FC: cmp r0, #0x0 beq _020B3830 mov r0, r10 - bl FUN_020B4BF4 + bl NNS_G2dRndCoreDrawCellVramTransfer add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} _020B3830: mov r0, r10 - bl FUN_020B4CDC + bl NNS_G2dRndCoreDrawCell add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} _020B3840: - ldr r0, _020B3B6C ; =UNK_021CDD70 - ldr r1, _020B3B8C ; =UNK_021CDD74 + ldr r0, _020B3B6C ; =stackPos_ + ldr r1, _020B3B8C ; =fxZStack_ ldr r2, [r0, #0x0] ldr r0, [sp, #0x0] ldr r1, [r1, r2, lsl #0x2] - bl FUN_020B4FA4 - ldr r0, _020B3B58 ; =UNK_021CDD68 + bl NNS_G2dSetRndCore3DSoftSpriteZvalue + ldr r0, _020B3B58 ; =bDonotUseSRTransform ldr r0, [r0, #0x0] cmp r0, #0x0 - ldreq r0, _020B3B6C ; =UNK_021CDD70 - ldreq r2, _020B3B78 ; =UNK_021CDEF4 + ldreq r0, _020B3B6C ; =stackPos_ + ldreq r2, _020B3B78 ; =mtxStack_ ldreq r1, [r0, #0x0] moveq r0, #0x18 mlaeq r0, r1, r0, r2 beq _020B38A8 - ldr r1, _020B3B6C ; =UNK_021CDD70 + ldr r1, _020B3B6C ; =stackPos_ mov r0, #0x18 ldr r1, [r1, #0x0] - ldr r2, _020B3B7C ; =UNK_021CDF04 + ldr r2, _020B3B7C ; =mtxStack_ + 0x10 mul r3, r1, r0 - ldr r1, _020B3B80 ; =UNK_021CDF08 + ldr r1, _020B3B80 ; =mtxStack_ + 0x14 ldr r2, [r2, r3] - ldr r0, _020B3B84 ; =UNK_02106578 + ldr r0, _020B3B84 ; =mtxI_ ldr r1, [r1, r3] str r2, [r0, #0x10] str r1, [r0, #0x14] _020B38A8: - bl FUN_020B4FC4 - ldr r1, _020B3B88 ; =UNK_02106574 + bl NNS_G2dSetRndCoreCurrentMtx3D + ldr r1, _020B3B88 ; =currenVramTransferHandle_ mvn r0, #0x0 ldr r1, [r1, #0x0] cmp r1, r0 @@ -1367,20 +1315,20 @@ _020B38A8: cmp r0, #0x0 beq _020B38DC mov r0, r10 - bl FUN_020B4BF4 + bl NNS_G2dRndCoreDrawCellVramTransfer add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} _020B38DC: mov r0, r10 - bl FUN_020B4CDC + bl NNS_G2dRndCoreDrawCell add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} _020B38EC: cmp r9, #0x0 addeq sp, sp, #0x4 ldmeqia sp!, {r4-r11,pc} - ldr r4, _020B3B6C ; =UNK_021CDD70 - ldr fp, _020B3B78 ; =UNK_021CDEF4 + ldr r4, _020B3B6C ; =stackPos_ + ldr fp, _020B3B78 ; =mtxStack_ mov r7, #0x0 mov r6, #0x1 _020B3908: @@ -1394,19 +1342,19 @@ _020B3908: mov r1, r9 str r9, [r8, #0x74] mov r0, r8 - bl FUN_020B4F9C + bl NNS_G2dSetRndCoreSurface ldr r1, [r9, #0x28] ldr r2, [r9, #0x2c] mov r0, r8 - bl FUN_020B5034 + bl NNS_G2dSetRndCoreOamRegisterFunc mov r0, r8 - bl FUN_020B4E0C - ldr r0, _020B3B58 ; =UNK_021CDD68 + bl NNS_G2dRndCoreBeginRendering + ldr r0, _020B3B58 ; =bDonotUseSRTransform mov r1, r7 ldr r0, [r0, #0x0] cmp r0, #0x0 bne _020B3978 - ldr r0, _020B3B5C ; =UNK_02106570 + ldr r0, _020B3B5C ; =firstSRTransformedMtxIdx_ ldrh r2, [r0, #0x0] ldr r0, _020B3B60 ; =0x0000FFFE cmp r2, r0 @@ -1417,41 +1365,41 @@ _020B3978: _020B397C: cmp r0, #0x0 beq _020B3A04 - ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldr r0, _020B3B64 ; =mcRenderState_ ldr r0, [r0, #0x404] cmp r0, #0x0 beq _020B39E4 - ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldr r0, _020B3B64 ; =mcRenderState_ ldrh r1, [r0, #0x0] add r0, r0, r1, lsl #0x2 ldr r1, [r0, #0x4] cmp r1, #0x0 bne _020B3A04 - bl FUN_020B4010 - ldr r0, _020B3B64 ; =UNK_021CE8F4 + bl NNSi_G2dMCMStoreCurrentMtxToMtxCache + ldr r0, _020B3B64 ; =mcRenderState_ ldr r2, [r4, #0x0] ldrh r1, [r0, #0x0] mov r0, r2, lsl #0x10 mov r2, r0, lsr #0xd - ldr r0, _020B3B70 ; =UNK_021CDDF4 + ldr r0, _020B3B70 ; =mtxStateStack_ ldrh r3, [r0, r2] - ldr r0, _020B3B64 ; =UNK_021CE8F4 + ldr r0, _020B3B64 ; =mcRenderState_ add r2, r0, r1, lsl #0x2 - ldr r0, _020B3B74 ; =UNK_021CE4F4 + ldr r0, _020B3B74 ; =mtxCacheBuffer_ add r1, r0, r3, lsl #0x5 str r1, [r2, #0x4] b _020B3A04 _020B39E4: - bl FUN_020B4010 + bl NNSi_G2dMCMStoreCurrentMtxToMtxCache ldr r0, [r4, #0x0] mov r0, r0, lsl #0x10 mov r1, r0, lsr #0xd - ldr r0, _020B3B70 ; =UNK_021CDDF4 + ldr r0, _020B3B70 ; =mtxStateStack_ ldrh r1, [r0, r1] - ldr r0, _020B3B74 ; =UNK_021CE4F4 + ldr r0, _020B3B74 ; =mtxCacheBuffer_ add r1, r0, r1, lsl #0x5 _020B3A04: - ldr r0, _020B3B58 ; =UNK_021CDD68 + ldr r0, _020B3B58 ; =bDonotUseSRTransform ldr r0, [r0, #0x0] cmp r0, #0x0 ldreq r2, [r4, #0x0] @@ -1461,15 +1409,15 @@ _020B3A04: ldr r2, [r4, #0x0] mov r0, #0x18 mla r8, r2, r0, r11 - ldr r0, _020B3B84 ; =UNK_02106578 + ldr r0, _020B3B84 ; =mtxI_ ldr r3, [r8, #0x10] mov r2, r0 str r3, [r2, #0x10] ldr r3, [r8, #0x14] str r3, [r2, #0x14] _020B3A44: - bl FUN_020B4FAC - ldr r0, _020B3B88 ; =UNK_02106574 + bl NNS_G2dSetRndCoreCurrentMtx2D + ldr r0, _020B3B88 ; =currenVramTransferHandle_ ldr r1, [r0, #0x0] mvn r0, #0x0 cmp r1, r0 @@ -1478,30 +1426,30 @@ _020B3A44: cmp r0, #0x0 beq _020B3A74 mov r0, r10 - bl FUN_020B4BF4 + bl NNS_G2dRndCoreDrawCellVramTransfer b _020B3A7C _020B3A74: mov r0, r10 - bl FUN_020B4CDC + bl NNS_G2dRndCoreDrawCell _020B3A7C: ldr r0, [r5, #0x0] str r7, [r0, #0x74] - bl FUN_020B4DA0 + bl NNS_G2dRndCoreEndRendering b _020B3B40 _020B3A8C: ldr r8, [r5, #0x0] mov r1, r9 mov r0, r8 str r9, [r8, #0x74] - bl FUN_020B4F9C + bl NNS_G2dSetRndCoreSurface mov r0, r8 - bl FUN_020B4E0C + bl NNS_G2dRndCoreBeginRendering ldr r2, [r4, #0x0] - ldr r1, _020B3B8C ; =UNK_021CDD74 + ldr r1, _020B3B8C ; =fxZStack_ ldr r0, [sp, #0x0] ldr r1, [r1, r2, lsl #0x2] - bl FUN_020B4FA4 - ldr r0, _020B3B58 ; =UNK_021CDD68 + bl NNS_G2dSetRndCore3DSoftSpriteZvalue + ldr r0, _020B3B58 ; =bDonotUseSRTransform ldr r0, [r0, #0x0] cmp r0, #0x0 ldreq r1, [r4, #0x0] @@ -1511,15 +1459,15 @@ _020B3A8C: ldr r1, [r4, #0x0] mov r0, #0x18 mla r3, r1, r0, r11 - ldr r0, _020B3B84 ; =UNK_02106578 + ldr r0, _020B3B84 ; =mtxI_ ldr r2, [r3, #0x10] mov r1, r0 str r2, [r1, #0x10] ldr r2, [r3, #0x14] str r2, [r1, #0x14] _020B3AFC: - bl FUN_020B4FC4 - ldr r0, _020B3B88 ; =UNK_02106574 + bl NNS_G2dSetRndCoreCurrentMtx3D + ldr r0, _020B3B88 ; =currenVramTransferHandle_ ldr r1, [r0, #0x0] mvn r0, #0x0 cmp r1, r0 @@ -1528,15 +1476,15 @@ _020B3AFC: cmp r0, #0x0 beq _020B3B2C mov r0, r10 - bl FUN_020B4BF4 + bl NNS_G2dRndCoreDrawCellVramTransfer b _020B3B34 _020B3B2C: mov r0, r10 - bl FUN_020B4CDC + bl NNS_G2dRndCoreDrawCell _020B3B34: ldr r0, [r5, #0x0] str r7, [r0, #0x74] - bl FUN_020B4DA0 + bl NNS_G2dRndCoreEndRendering _020B3B40: ldr r9, [r9, #0x30] cmp r9, #0x0 @@ -1544,29 +1492,28 @@ _020B3B40: add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} .balign 4 -_020B3B54: .word UNK_021CDD6C -_020B3B58: .word UNK_021CDD68 -_020B3B5C: .word UNK_02106570 +_020B3B54: .word pCurrentInstance_ +_020B3B58: .word bDonotUseSRTransform +_020B3B5C: .word firstSRTransformedMtxIdx_ _020B3B60: .word 0x0000FFFE -_020B3B64: .word UNK_021CE8F4 -_020B3B68: .word UNK_021CE8F8 -_020B3B6C: .word UNK_021CDD70 -_020B3B70: .word UNK_021CDDF4 -_020B3B74: .word UNK_021CE4F4 -_020B3B78: .word UNK_021CDEF4 -_020B3B7C: .word UNK_021CDF04 -_020B3B80: .word UNK_021CDF08 -_020B3B84: .word UNK_02106578 -_020B3B88: .word UNK_02106574 -_020B3B8C: .word UNK_021CDD74 - arm_func_end FUN_020B36C0 +_020B3B64: .word mcRenderState_ +_020B3B68: .word mcRenderState_ + 0x4 +_020B3B6C: .word stackPos_ +_020B3B70: .word mtxStateStack_ +_020B3B74: .word mtxCacheBuffer_ +_020B3B78: .word mtxStack_ +_020B3B7C: .word mtxStack_ + 0x10 +_020B3B80: .word mtxStack_ + 0x14 +_020B3B84: .word mtxI_ +_020B3B88: .word currenVramTransferHandle_ +_020B3B8C: .word fxZStack_ + arm_func_end DrawCellImpl_ - ; RndCoreCBFuncAfterOBJ_ - arm_func_start FUN_020B3B90 -FUN_020B3B90: ; 0x020B3B90 + arm_func_start RndCoreCBFuncAfterOBJ_ +RndCoreCBFuncAfterOBJ_: ; 0x020B3B90 stmdb sp!, {r4-r6,lr} sub sp, sp, #0x8 - ldr r0, _020B3C24 ; =UNK_021CDD6C + ldr r0, _020B3C24 ; =pCurrentInstance_ mov r12, r1 ldr r0, [r0, #0x0] mov r3, r2 @@ -1575,23 +1522,23 @@ FUN_020B3B90: ; 0x020B3B90 cmp r2, #0x0 addeq sp, sp, #0x8 ldmeqia sp!, {r4-r6,pc} - ldr r2, _020B3C28 ; =UNK_021CDD68 + ldr r2, _020B3C28 ; =bDonotUseSRTransform ldr r2, [r2, #0x0] cmp r2, #0x0 - ldreq r2, _020B3C2C ; =UNK_021CDD70 - ldreq r4, _020B3C30 ; =UNK_021CDEF4 + ldreq r2, _020B3C2C ; =stackPos_ + ldreq r4, _020B3C30 ; =mtxStack_ ldreq lr, [r2, #0x0] moveq r2, #0x18 mlaeq r6, lr, r2, r4 beq _020B3C0C - ldr lr, _020B3C2C ; =UNK_021CDD70 + ldr lr, _020B3C2C ; =stackPos_ mov r2, #0x18 ldr lr, [lr, #0x0] - ldr r4, _020B3C34 ; =UNK_021CDF04 + ldr r4, _020B3C34 ; =mtxStack_ + 0x10 mul r5, lr, r2 - ldr r2, _020B3C38 ; =UNK_021CDF08 + ldr r2, _020B3C38 ; =mtxStack_ + 0x14 ldr r4, [r4, r5] - ldr r6, _020B3C3C ; =UNK_02106578 + ldr r6, _020B3C3C ; =mtxI_ ldr r2, [r2, r5] str r4, [r6, #0x10] str r2, [r6, #0x14] @@ -1603,40 +1550,39 @@ _020B3C0C: add sp, sp, #0x8 ldmia sp!, {r4-r6,pc} .balign 4 -_020B3C24: .word UNK_021CDD6C -_020B3C28: .word UNK_021CDD68 -_020B3C2C: .word UNK_021CDD70 -_020B3C30: .word UNK_021CDEF4 -_020B3C34: .word UNK_021CDF04 -_020B3C38: .word UNK_021CDF08 -_020B3C3C: .word UNK_02106578 - arm_func_end FUN_020B3B90 +_020B3C24: .word pCurrentInstance_ +_020B3C28: .word bDonotUseSRTransform +_020B3C2C: .word stackPos_ +_020B3C30: .word mtxStack_ +_020B3C34: .word mtxStack_ + 0x10 +_020B3C38: .word mtxStack_ + 0x14 +_020B3C3C: .word mtxI_ + arm_func_end RndCoreCBFuncAfterOBJ_ - ; RndCoreCBFuncBeforeOBJ_ - arm_func_start FUN_020B3C40 -FUN_020B3C40: ; 0x020B3C40 + arm_func_start RndCoreCBFuncBeforeOBJ_ +RndCoreCBFuncBeforeOBJ_: ; 0x020B3C40 stmdb sp!, {r4-r6,lr} sub sp, sp, #0x8 - ldr r3, _020B3E2C ; =UNK_021CDD6C + ldr r3, _020B3E2C ; =pCurrentInstance_ add r4, r0, #0x38 ldr r0, [r3, #0x0] mov r6, r1 mov r5, r2 - bl FUN_020B278C + bl NNS_G2dGetRendererPaletteTbl cmp r0, #0x0 beq _020B3C90 ldrh r1, [r4, #0x4] and r1, r1, #0xf000 mov r1, r1, lsl #0x4 mov r1, r1, lsr #0x10 - bl FUN_020B10B0 + bl NNS_G2dGetPaletteTableValue ldr r1, [r4, #0x4] and r0, r0, #0xf bic r1, r1, #0xf000 orr r0, r1, r0, lsl #0xc str r0, [r4, #0x4] _020B3C90: - ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r0, _020B3E2C ; =pCurrentInstance_ ldr r1, [r0, #0x0] ldr r0, [r1, #0x84] cmp r0, #0x0 @@ -1651,7 +1597,7 @@ _020B3C90: orr r0, r1, r0, lsl #0xa str r0, [r4, #0x4] _020B3CC8: - ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r0, _020B3E2C ; =pCurrentInstance_ ldr r1, [r0, #0x0] ldr r0, [r1, #0x84] ands r0, r0, #0x2 @@ -1663,7 +1609,7 @@ _020B3CC8: orr r0, r1, r0, lsl #0xc str r0, [r4, #0x4] _020B3CF4: - ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r0, _020B3E2C ; =pCurrentInstance_ ldr r1, [r0, #0x0] ldr r0, [r1, #0x84] ands r0, r0, #0x10 @@ -1678,7 +1624,7 @@ _020B3CF4: orr r0, r2, r0, lsl #0xc str r0, [r4, #0x4] _020B3D2C: - ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r0, _020B3E2C ; =pCurrentInstance_ ldr r1, [r0, #0x0] ldr r0, [r1, #0x84] ands r0, r0, #0x4 @@ -1692,7 +1638,7 @@ _020B3D2C: biceq r0, r0, #0x1000 streq r0, [r4, #0x0] _020B3D60: - ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r0, _020B3E2C ; =pCurrentInstance_ ldr r1, [r0, #0x0] ldr r0, [r1, #0x84] ands r0, r0, #0x8 @@ -1710,30 +1656,30 @@ _020B3D60: orr r0, r0, r1, lsl #0xc strh r0, [r4, #0x4] _020B3DA4: - ldr r0, _020B3E2C ; =UNK_021CDD6C + ldr r0, _020B3E2C ; =pCurrentInstance_ ldr r0, [r0, #0x0] ldr r1, [r0, #0x74] ldr r2, [r1, #0x40] cmp r2, #0x0 addeq sp, sp, #0x8 ldmeqia sp!, {r4-r6,pc} - ldr r2, _020B3E30 ; =UNK_021CDD68 + ldr r2, _020B3E30 ; =bDonotUseSRTransform ldr r2, [r2, #0x0] cmp r2, #0x0 - ldreq r2, _020B3E34 ; =UNK_021CDD70 - ldreq r4, _020B3E38 ; =UNK_021CDEF4 + ldreq r2, _020B3E34 ; =stackPos_ + ldreq r4, _020B3E38 ; =mtxStack_ ldreq r3, [r2, #0x0] moveq r2, #0x18 mlaeq r4, r3, r2, r4 beq _020B3E10 - ldr r3, _020B3E34 ; =UNK_021CDD70 + ldr r3, _020B3E34 ; =stackPos_ mov r2, #0x18 ldr r4, [r3, #0x0] - ldr r3, _020B3E3C ; =UNK_021CDF04 + ldr r3, _020B3E3C ; =mtxStack_ + 0x10 mul r12, r4, r2 - ldr r2, _020B3E40 ; =UNK_021CDF08 + ldr r2, _020B3E40 ; =mtxStack_ + 0x14 ldr r3, [r3, r12] - ldr r4, _020B3E44 ; =UNK_02106578 + ldr r4, _020B3E44 ; =mtxI_ ldr r2, [r2, r12] str r3, [r4, #0x10] str r2, [r4, #0x14] @@ -1746,43 +1692,42 @@ _020B3E10: add sp, sp, #0x8 ldmia sp!, {r4-r6,pc} .balign 4 -_020B3E2C: .word UNK_021CDD6C -_020B3E30: .word UNK_021CDD68 -_020B3E34: .word UNK_021CDD70 -_020B3E38: .word UNK_021CDEF4 -_020B3E3C: .word UNK_021CDF04 -_020B3E40: .word UNK_021CDF08 -_020B3E44: .word UNK_02106578 - arm_func_end FUN_020B3C40 +_020B3E2C: .word pCurrentInstance_ +_020B3E30: .word bDonotUseSRTransform +_020B3E34: .word stackPos_ +_020B3E38: .word mtxStack_ +_020B3E3C: .word mtxStack_ + 0x10 +_020B3E40: .word mtxStack_ + 0x14 +_020B3E44: .word mtxI_ + arm_func_end RndCoreCBFuncBeforeOBJ_ - ; RndCoreCBFuncAfterCell_ - arm_func_start FUN_020B3E48 -FUN_020B3E48: ; 0x020B3E48 + arm_func_start RndCoreCBFuncAfterCell_ +RndCoreCBFuncAfterCell_: ; 0x020B3E48 stmdb sp!, {r4,lr} - ldr r0, _020B3EC4 ; =UNK_021CDD6C + ldr r0, _020B3EC4 ; =pCurrentInstance_ mov r2, r1 ldr r0, [r0, #0x0] ldr r1, [r0, #0x74] ldr r3, [r1, #0x3c] cmp r3, #0x0 ldmeqia sp!, {r4,pc} - ldr r3, _020B3EC8 ; =UNK_021CDD68 + ldr r3, _020B3EC8 ; =bDonotUseSRTransform ldr r3, [r3, #0x0] cmp r3, #0x0 - ldreq r3, _020B3ECC ; =UNK_021CDD70 - ldreq lr, _020B3ED0 ; =UNK_021CDEF4 + ldreq r3, _020B3ECC ; =stackPos_ + ldreq lr, _020B3ED0 ; =mtxStack_ ldreq r12, [r3, #0x0] moveq r3, #0x18 mlaeq r3, r12, r3, lr beq _020B3EB8 - ldr ip, _020B3ECC ; =UNK_021CDD70 + ldr ip, _020B3ECC ; =stackPos_ mov r3, #0x18 ldr r12, [r12, #0x0] - ldr lr, _020B3ED4 ; =UNK_021CDF04 + ldr lr, _020B3ED4 ; =mtxStack_ + 0x10 mul r4, r12, r3 - ldr ip, _020B3ED8 ; =UNK_021CDF08 + ldr ip, _020B3ED8 ; =mtxStack_ + 0x14 ldr lr, [lr, r4] - ldr r3, _020B3EDC ; =UNK_02106578 + ldr r3, _020B3EDC ; =mtxI_ ldr r12, [r12, r4] str lr, [r3, #0x10] str r12, [r3, #0x14] @@ -1791,20 +1736,19 @@ _020B3EB8: blx r12 ldmia sp!, {r4,pc} .balign 4 -_020B3EC4: .word UNK_021CDD6C -_020B3EC8: .word UNK_021CDD68 -_020B3ECC: .word UNK_021CDD70 -_020B3ED0: .word UNK_021CDEF4 -_020B3ED4: .word UNK_021CDF04 -_020B3ED8: .word UNK_021CDF08 -_020B3EDC: .word UNK_02106578 - arm_func_end FUN_020B3E48 +_020B3EC4: .word pCurrentInstance_ +_020B3EC8: .word bDonotUseSRTransform +_020B3ECC: .word stackPos_ +_020B3ED0: .word mtxStack_ +_020B3ED4: .word mtxStack_ + 0x10 +_020B3ED8: .word mtxStack_ + 0x14 +_020B3EDC: .word mtxI_ + arm_func_end RndCoreCBFuncAfterCell_ - ; RndCoreCBFuncBeforeCell_ - arm_func_start FUN_020B3EE0 -FUN_020B3EE0: ; 0x020B3EE0 + arm_func_start RndCoreCBFuncBeforeCell_ +RndCoreCBFuncBeforeCell_: ; 0x020B3EE0 stmdb sp!, {r4-r6,lr} - ldr r2, _020B3FF4 ; =UNK_021CDD6C + ldr r2, _020B3FF4 ; =pCurrentInstance_ mov r6, r0 ldr r0, [r2, #0x0] mov r5, r1 @@ -1812,23 +1756,23 @@ FUN_020B3EE0: ; 0x020B3EE0 ldr r0, [r4, #0x34] cmp r0, #0x0 beq _020B3F7C - ldr r0, _020B3FF8 ; =UNK_021CDD68 + ldr r0, _020B3FF8 ; =bDonotUseSRTransform ldr r0, [r0, #0x0] cmp r0, #0x0 - ldreq r0, _020B3FFC ; =UNK_021CDD70 - ldreq r1, _020B4000 ; =UNK_021CDEF4 + ldreq r0, _020B3FFC ; =stackPos_ + ldreq r1, _020B4000 ; =mtxStack_ ldreq r2, [r0, #0x0] moveq r0, #0x18 mlaeq r1, r2, r0, r1 beq _020B3F54 - ldr r1, _020B3FFC ; =UNK_021CDD70 + ldr r1, _020B3FFC ; =stackPos_ mov r0, #0x18 ldr r2, [r1, #0x0] - ldr r1, _020B4004 ; =UNK_021CDF04 + ldr r1, _020B4004 ; =mtxStack_ + 0x10 mul r3, r2, r0 - ldr r0, _020B4008 ; =UNK_021CDF08 + ldr r0, _020B4008 ; =mtxStack_ + 0x14 ldr r2, [r1, r3] - ldr r1, _020B400C ; =UNK_02106578 + ldr r1, _020B400C ; =mtxI_ ldr r0, [r0, r3] str r2, [r1, #0x10] str r0, [r1, #0x14] @@ -1847,28 +1791,28 @@ _020B3F7C: ldr r0, [r4, #0x38] cmp r0, #0x0 ldmeqia sp!, {r4-r6,pc} - ldr r0, _020B3FF8 ; =UNK_021CDD68 + ldr r0, _020B3FF8 ; =bDonotUseSRTransform ldr r0, [r0, #0x0] cmp r0, #0x0 - ldreq r0, _020B3FFC ; =UNK_021CDD70 - ldreq r2, _020B4000 ; =UNK_021CDEF4 + ldreq r0, _020B3FFC ; =stackPos_ + ldreq r2, _020B4000 ; =mtxStack_ ldreq r1, [r0, #0x0] moveq r0, #0x18 mlaeq r3, r1, r0, r2 beq _020B3FD8 - ldr r1, _020B3FFC ; =UNK_021CDD70 + ldr r1, _020B3FFC ; =stackPos_ mov r0, #0x18 ldr r2, [r1, #0x0] - ldr r1, _020B4004 ; =UNK_021CDF04 + ldr r1, _020B4004 ; =mtxStack_ + 0x10 mul r6, r2, r0 - ldr r0, _020B4008 ; =UNK_021CDF08 + ldr r0, _020B4008 ; =mtxStack_ + 0x14 ldr r1, [r1, r6] - ldr r3, _020B400C ; =UNK_02106578 + ldr r3, _020B400C ; =mtxI_ ldr r0, [r0, r6] str r1, [r3, #0x10] str r0, [r3, #0x14] _020B3FD8: - ldr r0, _020B3FF4 ; =UNK_021CDD6C + ldr r0, _020B3FF4 ; =pCurrentInstance_ ldr r6, [r4, #0x38] ldr r0, [r0, #0x0] mov r1, r4 @@ -1876,22 +1820,21 @@ _020B3FD8: blx r6 ldmia sp!, {r4-r6,pc} .balign 4 -_020B3FF4: .word UNK_021CDD6C -_020B3FF8: .word UNK_021CDD68 -_020B3FFC: .word UNK_021CDD70 -_020B4000: .word UNK_021CDEF4 -_020B4004: .word UNK_021CDF04 -_020B4008: .word UNK_021CDF08 -_020B400C: .word UNK_02106578 - arm_func_end FUN_020B3EE0 +_020B3FF4: .word pCurrentInstance_ +_020B3FF8: .word bDonotUseSRTransform +_020B3FFC: .word stackPos_ +_020B4000: .word mtxStack_ +_020B4004: .word mtxStack_ + 0x10 +_020B4008: .word mtxStack_ + 0x14 +_020B400C: .word mtxI_ + arm_func_end RndCoreCBFuncBeforeCell_ - ; NNSi_G2dMCMStoreCurrentMtxToMtxCache - arm_func_start FUN_020B4010 -FUN_020B4010: ; 0x020B4010 + arm_func_start NNSi_G2dMCMStoreCurrentMtxToMtxCache +NNSi_G2dMCMStoreCurrentMtxToMtxCache: ; 0x020B4010 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 - ldr r0, _020B4154 ; =UNK_021CDD70 - ldr r1, _020B4158 ; =UNK_021CDDF4 + ldr r0, _020B4154 ; =stackPos_ + ldr r1, _020B4158 ; =mtxStateStack_ ldr r0, [r0, #0x0] mov r2, #0x1 mov r0, r0, lsl #0x10 @@ -1905,46 +1848,46 @@ _020B4044: cmp r2, #0x0 addeq sp, sp, #0x4 ldmeqia sp!, {r4-r5,pc} - ldr r0, _020B415C ; =UNK_021CDD60 + ldr r0, _020B415C ; =currentMtxCachePos_ mov r2, #0x10 ldrh r4, [r0, #0x0] cmp r4, #0x1f addcc r1, r4, #0x1 strcch r1, [r0, #0x0] - ldr r0, _020B4160 ; =UNK_021CE4F4 + ldr r0, _020B4160 ; =mtxCacheBuffer_ ldrh r5, [r3, #0x2] add r0, r0, r4, lsl #0x5 add r1, r0, #0x10 mvn r0, #0x0 strh r4, [r3, #0x0] bl MIi_CpuClearFast - ldr r0, _020B4154 ; =UNK_021CDD70 - ldr r1, _020B4164 ; =UNK_021CDD68 + ldr r0, _020B4154 ; =stackPos_ + ldr r1, _020B4164 ; =bDonotUseSRTransform ldr r0, [r0, #0x0] ldr r2, [r1, #0x0] mov r1, r0, lsl #0x10 cmp r2, #0x0 - ldr r3, _020B4158 ; =UNK_021CDDF4 + ldr r3, _020B4158 ; =mtxStateStack_ mov r1, r1, lsr #0xd ldrh r1, [r3, r1] - ldr r3, _020B4160 ; =UNK_021CE4F4 + ldr r3, _020B4160 ; =mtxCacheBuffer_ moveq r2, #0x18 add r1, r3, r1, lsl #0x5 - ldreq r3, _020B4168 ; =UNK_021CE1F4 + ldreq r3, _020B4168 ; =mtxStackFor2DHW_ mlaeq r12, r0, r2, r3 beq _020B40E4 mov r2, #0x18 mul r3, r0, r2 - ldr r2, _020B416C ; =UNK_021CDF04 - ldr r0, _020B4170 ; =UNK_021CDF08 + ldr r2, _020B416C ; =mtxStack_ + 0x10 + ldr r0, _020B4170 ; =mtxStack_ + 0x14 ldr r2, [r2, r3] - ldr ip, _020B4174 ; =UNK_02106578 + ldr ip, _020B4174 ; =mtxI_ ldr r0, [r0, r3] str r2, [r12, #0x10] str r0, [r12, #0x14] _020B40E4: ldr r2, [r12, #0x0] - ldr r0, _020B4154 ; =UNK_021CDD70 + ldr r0, _020B4154 ; =stackPos_ str r2, [r1, #0x0] ldr r2, [r12, #0x4] str r2, [r1, #0x4] @@ -1957,7 +1900,7 @@ _020B40E4: movs lr, r0, lsr #0x10 addmi sp, sp, #0x4 ldmmiia sp!, {r4-r5,pc} - ldr r3, _020B4158 ; =UNK_021CDDF4 + ldr r3, _020B4158 ; =mtxStateStack_ mov r0, #0x3 _020B4124: add r2, r3, lr, lsl #0x3 @@ -1973,41 +1916,40 @@ _020B4124: add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020B4154: .word UNK_021CDD70 -_020B4158: .word UNK_021CDDF4 -_020B415C: .word UNK_021CDD60 -_020B4160: .word UNK_021CE4F4 -_020B4164: .word UNK_021CDD68 -_020B4168: .word UNK_021CE1F4 -_020B416C: .word UNK_021CDF04 -_020B4170: .word UNK_021CDF08 -_020B4174: .word UNK_02106578 - arm_func_end FUN_020B4010 +_020B4154: .word stackPos_ +_020B4158: .word mtxStateStack_ +_020B415C: .word currentMtxCachePos_ +_020B4160: .word mtxCacheBuffer_ +_020B4164: .word bDonotUseSRTransform +_020B4168: .word mtxStackFor2DHW_ +_020B416C: .word mtxStack_ + 0x10 +_020B4170: .word mtxStack_ + 0x14 +_020B4174: .word mtxI_ + arm_func_end NNSi_G2dMCMStoreCurrentMtxToMtxCache - ; NNSi_G2dIdentity - arm_func_start FUN_020B4178 -FUN_020B4178: ; 0x020B4178 + arm_func_start NNSi_G2dIdentity +NNSi_G2dIdentity: ; 0x020B4178 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 - ldr r0, _020B4220 ; =UNK_021CDD68 + ldr r0, _020B4220 ; =bDonotUseSRTransform ldr r0, [r0, #0x0] cmp r0, #0x0 beq _020B41B8 - ldr r1, _020B4224 ; =UNK_021CDD70 + ldr r1, _020B4224 ; =stackPos_ mov r0, #0x18 ldr r12, [r1, #0x0] - ldr r1, _020B4228 ; =UNK_021CDF04 + ldr r1, _020B4228 ; =mtxStack_ + 0x10 mul r3, r12, r0 mov r2, #0x0 - ldr r0, _020B422C ; =UNK_021CDF08 + ldr r0, _020B422C ; =mtxStack_ + 0x14 str r2, [r1, r3] str r2, [r0, r3] b _020B420C _020B41B8: - ldr r0, _020B4224 ; =UNK_021CDD70 + ldr r0, _020B4224 ; =stackPos_ mov lr, #0x18 ldr r1, [r0, #0x0] - ldr r4, _020B4230 ; =UNK_021CDEF4 + ldr r4, _020B4230 ; =mtxStack_ mul r3, r1, lr mov r2, #0x1000 str r2, [r4, r3] @@ -2019,25 +1961,24 @@ _020B41B8: str r1, [r5, #0x10] str r1, [r5, #0x14] ldr r12, [r0, #0x0] - ldr r4, _020B4234 ; =UNK_021CE1F4 + ldr r4, _020B4234 ; =mtxStackFor2DHW_ ldmia r5!, {r0-r3} mla lr, r12, lr, r4 stmia lr!, {r0-r3} ldmia r5, {r0-r1} stmia lr, {r0-r1} _020B420C: - ldr r0, _020B4238 ; =UNK_021CDD74 + ldr r0, _020B4238 ; =fxZStack_ mov r1, #0x0 str r1, [r0, r12, lsl #0x2] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020B4220: .word UNK_021CDD68 -_020B4224: .word UNK_021CDD70 -_020B4228: .word UNK_021CDF04 -_020B422C: .word UNK_021CDF08 -_020B4230: .word UNK_021CDEF4 -_020B4234: .word UNK_021CE1F4 -_020B4238: .word UNK_021CDD74 - arm_func_end FUN_020B4178 - +_020B4220: .word bDonotUseSRTransform +_020B4224: .word stackPos_ +_020B4228: .word mtxStack_ + 0x10 +_020B422C: .word mtxStack_ + 0x14 +_020B4230: .word mtxStack_ +_020B4234: .word mtxStackFor2DHW_ +_020B4238: .word fxZStack_ + arm_func_end NNSi_G2dIdentity diff --git a/arm9/asm/NNS_G2D_g2d_renderercor.s b/arm9/asm/NNS_G2D_g2d_renderercor.s index e1c3be6e..bf415c1c 100644 --- a/arm9/asm/NNS_G2D_g2d_renderercor.s +++ b/arm9/asm/NNS_G2D_g2d_renderercor.s @@ -3,27 +3,24 @@ .section .rodata - ; mtxIdentity_ - .global UNK_020FF958 -UNK_020FF958: ; 0x020FF958 + .global mtxIdentity_ +mtxIdentity_: ; 0x020FF958 .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ; static const in function + .section .bss - ; pTheInstance_ - .global UNK_021CED14 -UNK_021CED14: ; 0x021CED14 + .global pTheInstance_ +pTheInstance_: ; 0x021CED14 .space 0x4 .section .text - ; NNS_G2dRndCoreDrawCellVramTransfer - arm_func_start FUN_020B4BF4 -FUN_020B4BF4: ; 0x020B4BF4 + arm_func_start NNS_G2dRndCoreDrawCellVramTransfer +NNS_G2dRndCoreDrawCellVramTransfer: ; 0x020B4BF4 stmdb sp!, {r4-r6,lr} - ldr r2, _020B4CD8 ; =UNK_021CED14 + ldr r2, _020B4CD8 ; =pTheInstance_ mov r6, r0 ldr r3, [r2, #0x0] mov r4, r1 @@ -40,7 +37,7 @@ FUN_020B4BF4: ; 0x020B4BF4 mov r1, r6 blx r3 _020B4C38: - ldr r0, _020B4CD8 ; =UNK_021CED14 + ldr r0, _020B4CD8 ; =pTheInstance_ ldr r0, [r0, #0x0] ldr r0, [r0, #0x30] cmp r0, #0x0 @@ -50,7 +47,7 @@ _020B4C38: beq _020B4C7C mov r0, r4 ldr r4, [r5, #0x14] - bl FUN_020B469C + bl NNSi_G2dGetCellTransferState mov r3, #0x1 mvn r1, r3, lsl r4 ldr r2, [r0, #0x20] @@ -70,31 +67,30 @@ _020B4C7C: _020B4C9C: mov r0, r5 mov r1, r6 - bl FUN_020B5090 + bl DrawCellToSurface3D_ b _020B4CB8 _020B4CAC: mov r0, r5 mov r1, r6 - bl FUN_020B53B4 + bl DrawCellToSurface2D_ _020B4CB8: ldr r2, [r5, #0x1c] cmp r2, #0x0 ldmeqia sp!, {r4-r6,pc} - ldr r0, _020B4CD8 ; =UNK_021CED14 + ldr r0, _020B4CD8 ; =pTheInstance_ mov r1, r6 ldr r0, [r0, #0x0] blx r2 ldmia sp!, {r4-r6,pc} .balign 4 -_020B4CD8: .word UNK_021CED14 - arm_func_end FUN_020B4BF4 +_020B4CD8: .word pTheInstance_ + arm_func_end NNS_G2dRndCoreDrawCellVramTransfer - ; NNS_G2dRndCoreDrawCell - arm_func_start FUN_020B4CDC -FUN_020B4CDC: ; 0x020B4CDC + arm_func_start NNS_G2dRndCoreDrawCell +NNS_G2dRndCoreDrawCell: ; 0x020B4CDC stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 - ldr r1, _020B4D9C ; =UNK_021CED14 + ldr r1, _020B4D9C ; =pTheInstance_ mov r5, r0 ldr r2, [r1, #0x0] ldr r4, [r2, #0x0] @@ -111,7 +107,7 @@ FUN_020B4CDC: ; 0x020B4CDC mov r1, r5 blx r2 _020B4D24: - ldr r0, _020B4D9C ; =UNK_021CED14 + ldr r0, _020B4D9C ; =pTheInstance_ ldr r0, [r0, #0x0] ldr r0, [r0, #0x30] cmp r0, #0x0 @@ -128,31 +124,30 @@ _020B4D24: _020B4D58: mov r0, r4 mov r1, r5 - bl FUN_020B5090 + bl DrawCellToSurface3D_ b _020B4D74 _020B4D68: mov r0, r4 mov r1, r5 - bl FUN_020B53B4 + bl DrawCellToSurface2D_ _020B4D74: ldr r2, [r4, #0x1c] cmp r2, #0x0 addeq sp, sp, #0x4 ldmeqia sp!, {r4-r5,pc} - ldr r0, _020B4D9C ; =UNK_021CED14 + ldr r0, _020B4D9C ; =pTheInstance_ mov r1, r5 ldr r0, [r0, #0x0] blx r2 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020B4D9C: .word UNK_021CED14 - arm_func_end FUN_020B4CDC +_020B4D9C: .word pTheInstance_ + arm_func_end NNS_G2dRndCoreDrawCell - ; NNS_G2dRndCoreEndRendering - arm_func_start FUN_020B4DA0 -FUN_020B4DA0: ; 0x020B4DA0 - ldr r0, _020B4E00 ; =UNK_021CED14 + arm_func_start NNS_G2dRndCoreEndRendering +NNS_G2dRndCoreEndRendering: ; 0x020B4DA0 + ldr r0, _020B4E00 ; =pTheInstance_ ldr r3, [r0, #0x0] ldr r1, [r3, #0x0] ldr r1, [r1, #0x14] @@ -174,22 +169,21 @@ _020B4DD8: ldr r0, [r0, #0x0] str r2, [r0, #0x28] _020B4DF0: - ldr r0, _020B4E00 ; =UNK_021CED14 + ldr r0, _020B4E00 ; =pTheInstance_ mov r1, #0x0 str r1, [r0, #0x0] bx lr .balign 4 -_020B4E00: .word UNK_021CED14 +_020B4E00: .word pTheInstance_ _020B4E04: .word 0x04000440 _020B4E08: .word 0x04000448 - arm_func_end FUN_020B4DA0 + arm_func_end NNS_G2dRndCoreEndRendering - ; NNS_G2dRndCoreBeginRendering - arm_func_start FUN_020B4E0C -FUN_020B4E0C: ; 0x020B4E0C + arm_func_start NNS_G2dRndCoreBeginRendering +NNS_G2dRndCoreBeginRendering: ; 0x020B4E0C stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 - ldr r2, _020B4F28 ; =UNK_021CED14 + ldr r2, _020B4F28 ; =pTheInstance_ mov r4, r0 str r4, [r2, #0x0] ldr r0, [r4, #0x0] @@ -215,27 +209,27 @@ FUN_020B4E0C: ; 0x020B4E0C ldr r0, [r2, #0x0] ldr r5, [r0, #0x8] mov r0, r5 - bl FUN_020B19FC + bl NNS_G2dIsImageReadyToUse cmp r0, #0x0 moveq r0, #0x0 beq _020B4E98 mov r0, r5 mov r1, #0x0 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation _020B4E98: - ldr r1, _020B4F28 ; =UNK_021CED14 + ldr r1, _020B4F28 ; =pTheInstance_ str r0, [r4, #0x14] ldr r0, [r1, #0x0] mov r1, #0x0 ldr r5, [r0, #0xc] mov r0, r5 - bl FUN_020B19A8 + bl NNS_G2dIsImagePaletteReadyToUse cmp r0, #0x0 moveq r0, #0x0 beq _020B4ECC mov r0, r5 mov r1, #0x0 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation _020B4ECC: add sp, sp, #0x4 str r0, [r4, #0x18] @@ -244,34 +238,33 @@ _020B4ED8: ldr r4, [r4, #0x8] mov r1, r5 mov r0, r4 - bl FUN_020B19FC + bl NNS_G2dIsImageReadyToUse cmp r0, #0x0 moveq r1, #0x0 beq _020B4F14 mov r0, r4 mov r1, r5 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation ldr r1, [r4, #0x20] and r1, r1, #0x700000 mov r1, r1, asr #0x14 add r1, r1, #0x5 mov r1, r0, lsr r1 _020B4F14: - ldr r0, _020B4F28 ; =UNK_021CED14 + ldr r0, _020B4F28 ; =pTheInstance_ ldr r0, [r0, #0x0] str r1, [r0, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020B4F28: .word UNK_021CED14 +_020B4F28: .word pTheInstance_ _020B4F2C: .word 0x04000440 _020B4F30: .word 0x04000444 _020B4F34: .word 0x04000470 - arm_func_end FUN_020B4E0C + arm_func_end NNS_G2dRndCoreBeginRendering - ; _end - arm_func_start FUN_020B4F38 -FUN_020B4F38: ; 0x020B4F38 + arm_func_start NNS_G2dSetRndCoreFlipMode +NNS_G2dSetRndCoreFlipMode: ; 0x020B4F38 cmp r1, #0x0 ldrne r1, [r0, #0x24] orrne r1, r1, #0x1 @@ -287,58 +280,52 @@ FUN_020B4F38: ; 0x020B4F38 biceq r1, r1, #0x2 streq r1, [r0, #0x24] bx lr - arm_func_end FUN_020B4F38 + arm_func_end NNS_G2dSetRndCoreFlipMode - ; _end - arm_func_start FUN_020B4F74 -FUN_020B4F74: ; 0x020B4F74 + arm_func_start NNS_G2dIsRndCoreFlipV +NNS_G2dIsRndCoreFlipV: ; 0x020B4F74 ldr r0, [r0, #0x24] ands r0, r0, #0x2 movne r0, #0x1 moveq r0, #0x0 bx lr - arm_func_end FUN_020B4F74 + arm_func_end NNS_G2dIsRndCoreFlipV - ; _end - arm_func_start FUN_020B4F88 -FUN_020B4F88: ; 0x020B4F88 + arm_func_start NNS_G2dIsRndCoreFlipH +NNS_G2dIsRndCoreFlipH: ; 0x020B4F88 ldr r0, [r0, #0x24] ands r0, r0, #0x1 movne r0, #0x1 moveq r0, #0x0 bx lr - arm_func_end FUN_020B4F88 + arm_func_end NNS_G2dIsRndCoreFlipH - ; _end - arm_func_start FUN_020B4F9C -FUN_020B4F9C: ; 0x020B4F9C + arm_func_start NNS_G2dSetRndCoreSurface +NNS_G2dSetRndCoreSurface: ; 0x020B4F9C str r1, [r0, #0x0] bx lr - arm_func_end FUN_020B4F9C + arm_func_end NNS_G2dSetRndCoreSurface - ; _end - arm_func_start FUN_020B4FA4 -FUN_020B4FA4: ; 0x020B4FA4 + arm_func_start NNS_G2dSetRndCore3DSoftSpriteZvalue +NNS_G2dSetRndCore3DSoftSpriteZvalue: ; 0x020B4FA4 str r1, [r0, #0x34] bx lr - arm_func_end FUN_020B4FA4 + arm_func_end NNS_G2dSetRndCore3DSoftSpriteZvalue - ; NNS_G2dSetRndCoreCurrentMtx2D - arm_func_start FUN_020B4FAC -FUN_020B4FAC: ; 0x020B4FAC - ldr r2, _020B4FC0 ; =UNK_021CED14 + arm_func_start NNS_G2dSetRndCoreCurrentMtx2D +NNS_G2dSetRndCoreCurrentMtx2D: ; 0x020B4FAC + ldr r2, _020B4FC0 ; =pTheInstance_ ldr r2, [r2, #0x0] str r0, [r2, #0x2c] str r1, [r2, #0x28] bx lr .balign 4 -_020B4FC0: .word UNK_021CED14 - arm_func_end FUN_020B4FAC +_020B4FC0: .word pTheInstance_ + arm_func_end NNS_G2dSetRndCoreCurrentMtx2D - ; NNS_G2dSetRndCoreCurrentMtx3D - arm_func_start FUN_020B4FC4 -FUN_020B4FC4: ; 0x020B4FC4 - ldr r1, _020B5028 ; =UNK_021CED14 + arm_func_start NNS_G2dSetRndCoreCurrentMtx3D +NNS_G2dSetRndCoreCurrentMtx3D: ; 0x020B4FC4 + ldr r1, _020B5028 ; =pTheInstance_ mov r3, #0x0 ldr r12, [r1, #0x0] mov r1, #0x1000 @@ -364,35 +351,31 @@ FUN_020B4FC4: ; 0x020B4FC4 str r0, [r12, #0x6c] bx lr .balign 4 -_020B5028: .word UNK_021CED14 - arm_func_end FUN_020B4FC4 +_020B5028: .word pTheInstance_ + arm_func_end NNS_G2dSetRndCoreCurrentMtx3D - ; _end - arm_func_start FUN_020B502C -FUN_020B502C: ; 0x020B502C + arm_func_start NNS_G2dSetRndCoreAffineOverwriteMode +NNS_G2dSetRndCoreAffineOverwriteMode: ; 0x020B502C str r1, [r0, #0x4] bx lr - arm_func_end FUN_020B502C + arm_func_end NNS_G2dSetRndCoreAffineOverwriteMode - ; _end - arm_func_start FUN_020B5034 -FUN_020B5034: ; 0x020B5034 + arm_func_start NNS_G2dSetRndCoreOamRegisterFunc +NNS_G2dSetRndCoreOamRegisterFunc: ; 0x020B5034 str r1, [r0, #0x1c] str r2, [r0, #0x20] bx lr - arm_func_end FUN_020B5034 + arm_func_end NNS_G2dSetRndCoreOamRegisterFunc - ; _end - arm_func_start FUN_020B5040 -FUN_020B5040: ; 0x020B5040 + arm_func_start NNS_G2dSetRndCoreImageProxy +NNS_G2dSetRndCoreImageProxy: ; 0x020B5040 str r1, [r0, #0x8] str r2, [r0, #0xc] bx lr - arm_func_end FUN_020B5040 + arm_func_end NNS_G2dSetRndCoreImageProxy - ; _end - arm_func_start FUN_020B504C -FUN_020B504C: ; 0x020B504C + arm_func_start NNS_G2dInitRndCore +NNS_G2dInitRndCore: ; 0x020B504C stmdb sp!, {r4,lr} mov r4, r0 mov r1, r4 @@ -410,13 +393,12 @@ FUN_020B504C: ; 0x020B504C str r0, [r4, #0x30] str r1, [r4, #0x28] ldmia sp!, {r4,pc} - arm_func_end FUN_020B504C + arm_func_end NNS_G2dInitRndCore - ; DrawCellToSurface3D_ - arm_func_start FUN_020B5090 -FUN_020B5090: ; 0x020B5090 + arm_func_start DrawCellToSurface3D_ +DrawCellToSurface3D_: ; 0x020B5090 stmdb sp!, {r4-r10,lr} - ldr r5, _020B5158 ; =UNK_021CED14 + ldr r5, _020B5158 ; =pTheInstance_ mov r9, r1 ldrh r1, [r9, #0x0] ldr r2, [r5, #0x0] @@ -452,7 +434,7 @@ _020B5108: cmp r0, #0x0 beq _020B5120 mov r0, r7 - bl FUN_020B515C + bl DrawOamToSurface3D_ _020B5120: ldr r3, [r10, #0x24] cmp r3, #0x0 @@ -470,20 +452,19 @@ _020B513C: blo _020B50C0 ldmia sp!, {r4-r10,pc} .balign 4 -_020B5158: .word UNK_021CED14 - arm_func_end FUN_020B5090 +_020B5158: .word pTheInstance_ + arm_func_end DrawCellToSurface3D_ - ; DrawOamToSurface3D_ - arm_func_start FUN_020B515C -FUN_020B515C: ; 0x020B515C + arm_func_start DrawOamToSurface3D_ +DrawOamToSurface3D_: ; 0x020B515C stmdb sp!, {r4-r8,lr} sub sp, sp, #0x10 - ldr r1, _020B53A4 ; =UNK_021CED14 + ldr r1, _020B53A4 ; =pTheInstance_ mov r7, r0 ldr r0, [r1, #0x0] add r0, r0, #0x40 bl G3_LoadMtx43 - ldr r0, _020B53A4 ; =UNK_021CED14 + ldr r0, _020B53A4 ; =pTheInstance_ ldr r0, [r0, #0x0] ldr r1, [r0, #0x24] cmp r1, #0x0 @@ -491,7 +472,7 @@ FUN_020B515C: ; 0x020B515C ldr r2, [r7, #0x0] ldr r1, _020B53A8 ; =0xC000C000 and r4, r2, r1 - bl FUN_020B4F88 + bl NNS_G2dIsRndCoreFlipH cmp r0, #0x0 beq _020B51F4 ldr r0, [r7, #0x0] @@ -500,7 +481,7 @@ FUN_020B515C: ; 0x020B515C mov r3, r0, lsr #0x17 and r1, r4, #0xc0000000 mov r1, r1, lsr #0x1e - ldr r0, _020B53AC ; =UNK_020FF8AC + ldr r0, _020B53AC ; =NNSi_objSizeWTbl mov r2, r2, asr #0xe mov r1, r1, lsl #0x1 add r0, r0, r2, lsl #0x3 @@ -525,17 +506,17 @@ _020B51F4: mov r0, r0, lsl #0x10 mov r1, r0, lsr #0x10 _020B5218: - ldr r0, _020B53A4 ; =UNK_021CED14 + ldr r0, _020B53A4 ; =pTheInstance_ mov r1, r1, lsl #0x10 ldr r0, [r0, #0x0] mov r6, r1, asr #0x10 - bl FUN_020B4F74 + bl NNS_G2dIsRndCoreFlipV cmp r0, #0x0 beq _020B527C and r1, r4, #0xc000 and r0, r4, #0xc0000000 ldrb r4, [r7, #0x0] - ldr r2, _020B53B0 ; =UNK_020FF894 + ldr r2, _020B53B0 ; =NNSi_objSizeHTbl mov r0, r0, lsr #0x1e mov r3, r1, asr #0xe mov r1, r0, lsl #0x1 @@ -559,23 +540,23 @@ _020B527C: mov r0, r0, lsl #0x10 mov r4, r0, lsr #0x10 _020B5298: - ldr r0, _020B53A4 ; =UNK_021CED14 + ldr r0, _020B53A4 ; =pTheInstance_ ldr r1, [r7, #0x0] ldr r0, [r0, #0x0] mov r5, r1, lsl #0x3 - bl FUN_020B4F88 + bl NNS_G2dIsRndCoreFlipH ldr r2, [r7, #0x0] - ldr r1, _020B53A4 ; =UNK_021CED14 + ldr r1, _020B53A4 ; =pTheInstance_ eor r5, r0, r5, lsr #0x1f ldr r0, [r1, #0x0] mov r8, r2, lsl #0x2 - bl FUN_020B4F74 + bl NNS_G2dIsRndCoreFlipV ldr r2, [r7, #0x0] eor r1, r0, r8, lsr #0x1f bic r0, r2, #0x10000000 str r0, [r7, #0x0] ldr r2, [r7, #0x0] - ldr r3, _020B53A4 ; =UNK_021CED14 + ldr r3, _020B53A4 ; =pTheInstance_ orr r2, r2, r5, lsl #0x1c str r2, [r7, #0x0] ldr r2, [r7, #0x0] @@ -597,11 +578,11 @@ _020B5298: str r4, [sp, #0x4] ldr r4, [r5, #0x18] str r4, [sp, #0x8] - bl FUN_020B46B4 + bl NNS_G2dDrawOneOam3DDirectWithPosFast add sp, sp, #0x10 ldmia sp!, {r4-r8,pc} _020B533C: - ldr r2, _020B53A4 ; =UNK_021CED14 + ldr r2, _020B53A4 ; =pTheInstance_ ldr r0, [r7, #0x0] ldr r5, [r2, #0x0] mov r0, r0, lsl #0x7 @@ -624,29 +605,28 @@ _020B533C: mov r3, r7 mvn r2, #0x0 str r4, [sp, #0x8] - bl FUN_020B46B4 + bl NNS_G2dDrawOneOam3DDirectWithPosFast add sp, sp, #0x10 ldmia sp!, {r4-r8,pc} .balign 4 -_020B53A4: .word UNK_021CED14 +_020B53A4: .word pTheInstance_ _020B53A8: .word 0xC000C000 -_020B53AC: .word UNK_020FF8AC -_020B53B0: .word UNK_020FF894 - arm_func_end FUN_020B515C +_020B53AC: .word NNSi_objSizeWTbl +_020B53B0: .word NNSi_objSizeHTbl + arm_func_end DrawOamToSurface3D_ - ; DrawCellToSurface2D_ - arm_func_start FUN_020B53B4 -FUN_020B53B4: ; 0x020B53B4 + arm_func_start DrawCellToSurface2D_ +DrawCellToSurface2D_: ; 0x020B53B4 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x44 - ldr r2, _020B57B0 ; =UNK_021CED14 + ldr r2, _020B57B0 ; =pTheInstance_ mov r10, r0 ldr r0, [r2, #0x0] mov r11, r1 ldr r9, [r0, #0x2c] - ldr r1, _020B57B0 ; =UNK_021CED14 + ldr r1, _020B57B0 ; =pTheInstance_ cmp r9, #0x0 - ldreq sb, _020B57B4 ; =UNK_020FF958 + ldreq sb, _020B57B4 ; =mtxIdentity_ ldr r3, [r1, #0x0] ldr r4, [r9, #0x10] str r4, [sp, #0x18] @@ -679,7 +659,7 @@ _020B5438: addls sp, sp, #0x44 ldmlsia sp!, {r4-r11,pc} mov r0, #0x1 - ldr r4, _020B57B0 ; =UNK_021CED14 + ldr r4, _020B57B0 ; =pTheInstance_ str r8, [sp, #0x14] str r0, [sp, #0xc] _020B5460: @@ -791,7 +771,7 @@ _020B55CC: str r3, [sp, #0x28] ldr r3, [r9, #0xc] str r3, [sp, #0x2c] - bl FUN_020B57D8 + bl DoAffineTransforme_ b _020B5750 _020B5600: ldr r0, _020B57C0 ; =0x0000FFFE @@ -804,13 +784,13 @@ _020B5600: ldr r1, _020B57C4 ; =0xC000C000 mov r6, r2, lsl #0x3 and r5, r2, r1 - bl FUN_020B4F88 + bl NNS_G2dIsRndCoreFlipH ldr r1, [r7, #0x0] eor r6, r0, r6, lsr #0x1f mov r1, r1, lsl #0x2 ldr r0, [r4, #0x0] str r1, [sp, #0x10] - bl FUN_020B4F74 + bl NNS_G2dIsRndCoreFlipV ldr r1, [sp, #0x10] eor r0, r0, r1, lsr #0x1f ldr r1, [r7, #0x0] @@ -826,12 +806,12 @@ _020B5600: orr r0, r1, r0, lsl #0x1d str r0, [r7, #0x0] ldr r0, [r4, #0x0] - bl FUN_020B4F88 + bl NNS_G2dIsRndCoreFlipH cmp r0, #0x0 beq _020B56D4 and r1, r5, #0xc000 mov r2, r1, asr #0xe - ldr r1, _020B57C8 ; =UNK_020FF8AC + ldr r1, _020B57C8 ; =NNSi_objSizeWTbl and r3, r5, #0xc0000000 mov r3, r3, lsr #0x1e add r2, r1, r2, lsl #0x3 @@ -849,7 +829,7 @@ _020B5600: str r0, [r7, #0x0] _020B56D4: ldr r0, [r4, #0x0] - bl FUN_020B4F74 + bl NNS_G2dIsRndCoreFlipV cmp r0, #0x0 beq _020B5714 and r1, r5, #0xc000 @@ -857,7 +837,7 @@ _020B56D4: and r1, r5, #0xc0000000 mov r1, r1, lsr #0x1e mov r2, r1, lsl #0x1 - ldr r1, _020B57D4 ; =UNK_020FF894 + ldr r1, _020B57D4 ; =NNSi_objSizeHTbl ldrb r0, [r7, #0x0] add r1, r1, r3, lsl #0x3 ldrh r1, [r2, r1] @@ -907,21 +887,20 @@ _020B5790: add sp, sp, #0x44 ldmia sp!, {r4-r11,pc} .balign 4 -_020B57B0: .word UNK_021CED14 -_020B57B4: .word UNK_020FF958 +_020B57B0: .word pTheInstance_ +_020B57B4: .word mtxIdentity_ _020B57B8: .word 0x000003FF _020B57BC: .word 0x0000FFFF _020B57C0: .word 0x0000FFFE _020B57C4: .word 0xC000C000 -_020B57C8: .word UNK_020FF8AC +_020B57C8: .word NNSi_objSizeWTbl _020B57CC: .word 0xFE00FFFF _020B57D0: .word 0x000001FF -_020B57D4: .word UNK_020FF894 - arm_func_end FUN_020B53B4 +_020B57D4: .word NNSi_objSizeHTbl + arm_func_end DrawCellToSurface2D_ - ; DoAffineTransforme_ - arm_func_start FUN_020B57D8 -FUN_020B57D8: ; 0x020B57D8 + arm_func_start DoAffineTransforme_ +DoAffineTransforme_: ; 0x020B57D8 stmdb sp!, {r4-r8,lr} sub sp, sp, #0x10 ldr r4, [r1, #0x0] @@ -958,13 +937,13 @@ _020B5858: cmp r4, #0x300 bne _020B58AC ldr r3, _020B5AA0 ; =0xC000C000 - ldr r4, _020B5AA4 ; =UNK_020FF8AC + ldr r4, _020B5AA4 ; =NNSi_objSizeWTbl and r3, r5, r3 and r5, r3, #0xc0000000 and r3, r3, #0xc000 mov r6, r5, lsr #0x1e mov r5, r3, asr #0xe - ldr r3, _020B5AA8 ; =UNK_020FF894 + ldr r3, _020B5AA8 ; =NNSi_objSizeHTbl mov r6, r6, lsl #0x1 add r4, r4, r5, lsl #0x3 add r3, r3, r5, lsl #0x3 @@ -1008,7 +987,7 @@ _020B58AC: ldreq r3, [sp, #0xc] ldreq r4, [sp, #0x8] streq r3, [sp, #0x4] - ldr r3, _020B5AAC ; =UNK_021CED14 + ldr r3, _020B5AAC ; =pTheInstance_ streq r4, [sp, #0x0] ldr r3, [r3, #0x0] ldr r3, [r3, #0x4] @@ -1040,7 +1019,7 @@ _020B597C: orr r5, r5, r3 _020B599C: ldr r3, _020B5AA0 ; =0xC000C000 - ldr r4, _020B5AA4 ; =UNK_020FF8AC + ldr r4, _020B5AA4 ; =NNSi_objSizeWTbl and r3, r6, r3 and r6, r3, #0xc0000000 and r3, r3, #0xc000 @@ -1050,7 +1029,7 @@ _020B599C: add r4, r4, lr, lsl #0x3 ldrh r4, [r3, r4] ldr r6, [r0, #0x0] - ldr r8, _020B5AA8 ; =UNK_020FF894 + ldr r8, _020B5AA8 ; =NNSi_objSizeHTbl mov r12, r4, asr #0x1 mov r4, r12, lsl #0xc rsb r7, r4, #0x0 @@ -1107,11 +1086,10 @@ _020B5A4C: .balign 4 _020B5A9C: .word 0x01FF0000 _020B5AA0: .word 0xC000C000 -_020B5AA4: .word UNK_020FF8AC -_020B5AA8: .word UNK_020FF894 -_020B5AAC: .word UNK_021CED14 +_020B5AA4: .word NNSi_objSizeWTbl +_020B5AA8: .word NNSi_objSizeHTbl +_020B5AAC: .word pTheInstance_ _020B5AB0: .word 0xC1FFFCFF _020B5AB4: .word 0x000001FF _020B5AB8: .word 0xFE00FF00 - arm_func_end FUN_020B57D8 - + arm_func_end DoAffineTransforme_ diff --git a/arm9/asm/NNS_G2D_g2d_softsprite.s b/arm9/asm/NNS_G2D_g2d_softsprite.s index 9a22950f..49cddc88 100644 --- a/arm9/asm/NNS_G2D_g2d_softsprite.s +++ b/arm9/asm/NNS_G2D_g2d_softsprite.s @@ -3,9 +3,8 @@ .section .text - ; NNS_G2dDrawSpriteFast - arm_func_start FUN_020B0250 -FUN_020B0250: ; 0x020B0250 + arm_func_start NNS_G2dDrawSpriteFast +NNS_G2dDrawSpriteFast: ; 0x020B0250 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 ldr r5, _020B02C0 ; =0x04000470 @@ -31,17 +30,16 @@ FUN_020B0250: ; 0x020B0250 mov r2, r2, lsl #0xc mov r3, r3, lsl #0xc str r12, [lr, #0x0] - bl FUN_020B0340 + bl DrawOneQuad_ add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 _020B02C0: .word 0x04000470 _020B02C4: .word 0x0400046C - arm_func_end FUN_020B0250 + arm_func_end NNS_G2dDrawSpriteFast - ; NNS_G2dSetupSoftwareSpriteCamera - arm_func_start FUN_020B02C8 -FUN_020B02C8: ; 0x020B02C8 + arm_func_start NNS_G2dSetupSoftwareSpriteCamera +NNS_G2dSetupSoftwareSpriteCamera: ; 0x020B02C8 stmdb sp!, {lr} sub sp, sp, #0x14 ldr r2, _020B0330 ; =0xBFFF0000 @@ -73,11 +71,10 @@ _020B0330: .word 0xBFFF0000 _020B0334: .word 0x04000580 _020B0338: .word 0x0400044C _020B033C: .word 0x04000440 - arm_func_end FUN_020B02C8 + arm_func_end NNS_G2dSetupSoftwareSpriteCamera - ; DrawOneQuad_ - arm_func_start FUN_020B0340 -FUN_020B0340: ; 0x020B0340 + arm_func_start DrawOneQuad_ +DrawOneQuad_: ; 0x020B0340 stmdb sp!, {r4-r6,lr} mov r3, r3, lsl #0x8 mov r0, r0, lsl #0x8 @@ -129,5 +126,4 @@ _020B03F8: .word 0x04000488 _020B03FC: .word 0x0400048C _020B0400: .word 0x10001000 _020B0404: .word 0x04000504 - arm_func_end FUN_020B0340 - + arm_func_end DrawOneQuad_ diff --git a/arm9/asm/NNS_G2D_g2d_srtcontrol.s b/arm9/asm/NNS_G2D_g2d_srtcontrol.s index 01f30a6d..7c9139ef 100644 --- a/arm9/asm/NNS_G2D_g2d_srtcontrol.s +++ b/arm9/asm/NNS_G2D_g2d_srtcontrol.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020B1A40 -FUN_020B1A40: ; 0x020B1A40 + arm_func_start NNSi_G2dSrtcSetInitialValue +NNSi_G2dSrtcSetInitialValue: ; 0x020B1A40 stmdb sp!, {r4,lr} mov r4, r0 add r1, r4, #0x4 @@ -16,21 +15,19 @@ FUN_020B1A40: ; 0x020B1A40 str r0, [r4, #0x4] str r0, [r4, #0x8] ldmia sp!, {r4,pc} - arm_func_end FUN_020B1A40 + arm_func_end NNSi_G2dSrtcSetInitialValue - ; NNSi_G2dSrtcInitControl - arm_func_start FUN_020B1A68 -FUN_020B1A68: ; 0x020B1A68 - ldr ip, _020B1A74 ; =FUN_020B1A40 + arm_func_start NNSi_G2dSrtcInitControl +NNSi_G2dSrtcInitControl: ; 0x020B1A68 + ldr ip, _020B1A74 ; =NNSi_G2dSrtcSetInitialValue str r1, [r0, #0x0] bx r12 .balign 4 -_020B1A74: .word FUN_020B1A40 - arm_func_end FUN_020B1A68 +_020B1A74: .word NNSi_G2dSrtcSetInitialValue + arm_func_end NNSi_G2dSrtcInitControl - ; _end - arm_func_start FUN_020B1A78 -FUN_020B1A78: ; 0x020B1A78 + arm_func_start NNSi_G2dSrtcSetSRTScale +NNSi_G2dSrtcSetSRTScale: ; 0x020B1A78 ldr r3, [r0, #0x0] cmp r3, #0x1 ldreqh r3, [r0, #0x12] @@ -39,11 +36,10 @@ FUN_020B1A78: ; 0x020B1A78 streq r1, [r0, #0x4] streq r2, [r0, #0x8] bx lr - arm_func_end FUN_020B1A78 + arm_func_end NNSi_G2dSrtcSetSRTScale - ; _end - arm_func_start FUN_020B1A98 -FUN_020B1A98: ; 0x020B1A98 + arm_func_start NNSi_G2dSrtcSetSRTRotZ +NNSi_G2dSrtcSetSRTRotZ: ; 0x020B1A98 ldr r2, [r0, #0x0] cmp r2, #0x1 ldreqh r2, [r0, #0x12] @@ -51,11 +47,10 @@ FUN_020B1A98: ; 0x020B1A98 streqh r2, [r0, #0x12] streqh r1, [r0, #0x10] bx lr - arm_func_end FUN_020B1A98 + arm_func_end NNSi_G2dSrtcSetSRTRotZ - ; _end - arm_func_start FUN_020B1AB4 -FUN_020B1AB4: ; 0x020B1AB4 + arm_func_start NNSi_G2dSrtcSetTrans +NNSi_G2dSrtcSetTrans: ; 0x020B1AB4 ldr r3, [r0, #0x0] cmp r3, #0x1 ldreqh r3, [r0, #0x12] @@ -64,5 +59,4 @@ FUN_020B1AB4: ; 0x020B1AB4 streqh r1, [r0, #0xc] streqh r2, [r0, #0xe] bx lr - arm_func_end FUN_020B1AB4 - + arm_func_end NNSi_G2dSrtcSetTrans diff --git a/arm9/asm/NNS_G2D_g2d_textcanvas.s b/arm9/asm/NNS_G2D_g2d_textcanvas.s index 7ac3477a..95ebf85a 100644 --- a/arm9/asm/NNS_G2D_g2d_textcanvas.s +++ b/arm9/asm/NNS_G2D_g2d_textcanvas.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020B7168 -FUN_020B7168: ; 0x020B7168 + arm_func_start NNSi_G2dTextCanvasDrawTextRect +NNSi_G2dTextCanvasDrawTextRect: ; 0x020B7168 stmdb sp!, {r4-r7,lr} sub sp, sp, #0xc ldr r12, [sp, #0x28] @@ -18,7 +17,7 @@ FUN_020B7168: ; 0x020B7168 ldr r0, [r7, #0x4] ldr r1, [r7, #0xc] ldr r2, [sp, #0x2c] - bl FUN_020B5B54 + bl NNSi_G2dFontGetTextHeight ldr r1, [sp, #0x20] sub r0, r1, r0 add r5, r5, r0 @@ -29,7 +28,7 @@ _020B71AC: ldr r0, [r7, #0x4] ldr r1, [r7, #0xc] ldr r2, [sp, #0x2c] - bl FUN_020B5B54 + bl NNSi_G2dFontGetTextHeight ldr r2, [sp, #0x20] add r1, r0, #0x1 add r0, r2, #0x1 @@ -49,14 +48,13 @@ _020B71E4: mov r2, r5 mov r3, r4 str r12, [sp, #0x8] - bl FUN_020B72C4 + bl NNSi_G2dTextCanvasDrawTextAlign add sp, sp, #0xc ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B7168 + arm_func_end NNSi_G2dTextCanvasDrawTextRect - ; _end - arm_func_start FUN_020B7218 -FUN_020B7218: ; 0x020B7218 + arm_func_start NNSi_G2dTextCanvasDrawText +NNSi_G2dTextCanvasDrawText: ; 0x020B7218 stmdb sp!, {r4-r8,lr} sub sp, sp, #0x18 ldr r4, [sp, #0x34] @@ -70,7 +68,7 @@ FUN_020B7218: ; 0x020B7218 ldr r2, [r8, #0x8] ldr r3, [r8, #0xc] add r0, sp, #0xc - bl FUN_020B5ABC + bl NNSi_G2dFontGetTextRect ands r0, r4, #0x10 ldrne r0, [sp, #0xc] addne r0, r0, #0x1 @@ -99,14 +97,13 @@ _020B7298: mov r0, r8 mov r1, r7 mov r2, r6 - bl FUN_020B72C4 + bl NNSi_G2dTextCanvasDrawTextAlign add sp, sp, #0x18 ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020B7218 + arm_func_end NNSi_G2dTextCanvasDrawText - ; _end - arm_func_start FUN_020B72C4 -FUN_020B72C4: ; 0x020B72C4 + arm_func_start NNSi_G2dTextCanvasDrawTextAlign +NNSi_G2dTextCanvasDrawTextAlign: ; 0x020B72C4 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x14 mov r10, r0 @@ -141,7 +138,7 @@ _020B732C: ldr r1, [r10, #0x8] ldr r2, [sp, #0xc] mov r3, r4 - bl FUN_020B5BC8 + bl NNSi_G2dFontGetStringWidth sub r0, r7, r0 add r1, r9, r0 b _020B7388 @@ -152,7 +149,7 @@ _020B7358: ldr r1, [r10, #0x8] ldr r2, [sp, #0xc] mov r3, r4 - bl FUN_020B5BC8 + bl NNSi_G2dFontGetStringWidth add r0, r0, #0x1 add r1, r0, r0, lsr #0x1f ldr r0, [sp, #0x8] @@ -166,18 +163,17 @@ _020B7388: ldr r3, [sp, #0x38] mov r0, r10 mov r2, r8 - bl FUN_020B73C0 + bl NNSi_G2dTextCanvasDrawString ldr r0, [sp, #0xc] add r8, r8, r6 cmp r0, #0x0 bne _020B732C add sp, sp, #0x14 ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B72C4 + arm_func_end NNSi_G2dTextCanvasDrawTextAlign - ; _end - arm_func_start FUN_020B73C0 -FUN_020B73C0: ; 0x020B73C0 + arm_func_start NNSi_G2dTextCanvasDrawString +NNSi_G2dTextCanvasDrawString: ; 0x020B73C0 stmdb sp!, {r4-r11,lr} sub sp, sp, #0xc mov r10, r0 @@ -203,7 +199,7 @@ _020B7400: mov r1, r5 mov r2, r9 mov r3, r8 - bl FUN_020B63CC + bl NNS_G2dCharCanvasDrawChar add r1, r9, r0 mov r0, r11 add r9, r1, r6 @@ -222,5 +218,4 @@ _020B743C: str r1, [r0, #0x0] add sp, sp, #0xc ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B73C0 - + arm_func_end NNSi_G2dTextCanvasDrawString diff --git a/arm9/asm/NNS_G2D_g2di_bitreader.s b/arm9/asm/NNS_G2D_g2di_bitreader.s index da823629..d36c774f 100644 --- a/arm9/asm/NNS_G2D_g2di_bitreader.s +++ b/arm9/asm/NNS_G2D_g2di_bitreader.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020B76B0 -FUN_020B76B0: ; 0x020B76B0 + arm_func_start NNSi_G2dBitReaderRead +NNSi_G2dBitReaderRead: ; 0x020B76B0 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 ldrsb r2, [r0, #0x4] @@ -25,7 +24,7 @@ FUN_020B76B0: ; 0x020B76B0 strb r2, [r0, #0x5] mov r2, #0x8 strb r2, [r0, #0x4] - bl FUN_020B76B0 + bl NNSi_G2dBitReaderRead orr r5, r0, r5 _020B7704: rsb r0, r4, #0x8 @@ -33,5 +32,4 @@ _020B7704: and r0, r5, r1, asr r0 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020B76B0 - + arm_func_end NNSi_G2dBitReaderRead diff --git a/arm9/asm/NNS_G2D_g2di_mtx32.s b/arm9/asm/NNS_G2D_g2di_mtx32.s index 777ed944..68fa5831 100644 --- a/arm9/asm/NNS_G2D_g2di_mtx32.s +++ b/arm9/asm/NNS_G2D_g2di_mtx32.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020B423C -FUN_020B423C: ; 0x020B423C + arm_func_start NNSi_G2dMtxConcat32 +NNSi_G2dMtxConcat32: ; 0x020B423C stmdb sp!, {r4-r7,lr} sub sp, sp, #0x1c ldr r4, [r0, #0x4] @@ -77,5 +76,4 @@ FUN_020B423C: ; 0x020B423C stmeqia r12, {r0-r1} add sp, sp, #0x1c ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B423C - + arm_func_end NNSi_G2dMtxConcat32 diff --git a/arm9/asm/NNS_G2D_g2di_splitchar.s b/arm9/asm/NNS_G2D_g2di_splitchar.s index e96ae08d..4df7621d 100644 --- a/arm9/asm/NNS_G2D_g2di_splitchar.s +++ b/arm9/asm/NNS_G2D_g2di_splitchar.s @@ -3,13 +3,11 @@ .section .text - ; _end - arm_func_start FUN_020B7718 -FUN_020B7718: ; 0x020B7718 + arm_func_start NNSi_G2dSplitCharUTF16 +NNSi_G2dSplitCharUTF16: ; 0x020B7718 ldr r1, [r0, #0x0] ldrh r2, [r1], #0x2 str r1, [r0, #0x0] mov r0, r2 bx lr - arm_func_end FUN_020B7718 - + arm_func_end NNSi_G2dSplitCharUTF16 diff --git a/arm9/asm/NNS_G3D_1mat1shp.s b/arm9/asm/NNS_G3D_1mat1shp.s index 34f2e482..01cb5a35 100644 --- a/arm9/asm/NNS_G3D_1mat1shp.s +++ b/arm9/asm/NNS_G3D_1mat1shp.s @@ -3,9 +3,8 @@ .section .text - ; NNS_G3dDraw1Mat1Shp - arm_func_start FUN_020BAFB8 -FUN_020BAFB8: ; 0x020BAFB8 + arm_func_start NNS_G3dDraw1Mat1Shp +NNS_G3dDraw1Mat1Shp: ; 0x020BAFB8 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x6c mov r6, r0 @@ -21,7 +20,7 @@ FUN_020BAFB8: ; 0x020BAFB8 str r12, [sp, #0x54] str r12, [sp, #0x58] str r12, [sp, #0x5c] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020BAFF8: cmp r7, #0x0 beq _020BB150 @@ -59,13 +58,13 @@ _020BAFF8: add r1, sp, #0x4 mov r2, #0x6 str r3, [sp, #0x18] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldrh r0, [r4, #0x1e] ands r0, r0, #0x1 beq _020BB150 ldrb r12, [r6, #0x16] mov r3, #0x8 - ldr r1, _020BB1BC ; =UNK_02106620 + ldr r1, _020BB1BC ; =NNS_G3dSendTexSRT_FuncArray str r3, [sp, #0x1c] ldrh r2, [r4, #0x20] add r0, r4, #0x2c @@ -123,7 +122,7 @@ _020BB150: ldr r0, [r2, #0x8] ldr r1, [r2, #0xc] add r0, r2, r0 - bl FUN_020BB2B0 + bl NNS_G3dGeSendDL ldr r3, [r6, #0x20] cmp r3, #0x1000 addeq sp, sp, #0x6c @@ -134,12 +133,11 @@ _020BB150: str r3, [sp, #0x60] str r3, [sp, #0x64] str r3, [sp, #0x68] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add sp, sp, #0x6c ldmia sp!, {r4-r7,pc} .balign 4 _020BB1B4: .word 0x00293130 _020BB1B8: .word 0x00002B2A -_020BB1BC: .word UNK_02106620 - arm_func_end FUN_020BAFB8 - +_020BB1BC: .word NNS_G3dSendTexSRT_FuncArray + arm_func_end NNS_G3dDraw1Mat1Shp diff --git a/arm9/asm/NNS_G3D_3dsmax.s b/arm9/asm/NNS_G3D_3dsmax.s index 8037126d..e54e2315 100644 --- a/arm9/asm/NNS_G3D_3dsmax.s +++ b/arm9/asm/NNS_G3D_3dsmax.s @@ -2,24 +2,20 @@ .include "global.inc" .section .data - - ; calcTexMtx_ - .global UNK_021067D0 -UNK_021067D0: ; 0x021067D0 - .word FUN_020BF988 - .word FUN_020BF894 - .word FUN_020BF810 - .word FUN_020BF7C8 - .word FUN_020BF6C8 - .word FUN_020BF5E8 - .word FUN_020BF598 - .word FUN_020BF574 +calcTexMtx_: ; 0x021067D0 + .word texmtxCalc_flag_ + .word texmtxCalc_flagS_ + .word texmtxCalc_flagR_ + .word texmtxCalc_flagRS_ + .word texmtxCalc_flagT_ + .word texmtxCalc_flagTS_ + .word texmtxCalc_flagTR_ + .word texmtxCalc_flagTRS_ .section .text - ; NNSi_G3dSendTexSRT3dsMax - arm_func_start FUN_020BF42C -FUN_020BF42C: ; 0x020BF42C + arm_func_start NNSi_G3dSendTexSRT3dsMax +NNSi_G3dSendTexSRT3dsMax: ; 0x020BF42C stmdb sp!, {r4,lr} sub sp, sp, #0x50 mov r4, r0 @@ -46,7 +42,7 @@ FUN_020BF42C: ; 0x020BF42C str r1, [sp, #0x14] str r1, [sp, #0x10] ldr r1, [r4, #0x0] - ldr r0, _020BF570 ; =UNK_021067D0 + ldr r0, _020BF570 ; =calcTexMtx_ and r1, r1, #0x7 ldr r2, [r0, r1, lsl #0x2] add r0, sp, #0x8 @@ -98,18 +94,17 @@ _020BF54C: ldr r0, [sp, #0x0] add r1, r1, #0x4 mov r2, #0x12 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add sp, sp, #0x50 ldmia sp!, {r4,pc} .balign 4 _020BF568: .word 0x00101610 _020BF56C: .word 0x00101810 -_020BF570: .word UNK_021067D0 - arm_func_end FUN_020BF42C +_020BF570: .word calcTexMtx_ + arm_func_end NNSi_G3dSendTexSRT3dsMax - ; _end - arm_func_start FUN_020BF574 -FUN_020BF574: ; 0x020BF574 + local_arm_func_start texmtxCalc_flagTRS_ +texmtxCalc_flagTRS_: ; 0x020BF574 mov r2, #0x1000 str r2, [r0, #0x0] mov r1, #0x0 @@ -119,11 +114,10 @@ FUN_020BF574: ; 0x020BF574 str r1, [r0, #0x30] str r1, [r0, #0x34] bx lr - arm_func_end FUN_020BF574 + arm_func_end texmtxCalc_flagTRS_ - ; _end - arm_func_start FUN_020BF598 -FUN_020BF598: ; 0x020BF598 + local_arm_func_start texmtxCalc_flagTR_ +texmtxCalc_flagTR_: ; 0x020BF598 ldr r2, [r1, #0x18] mov r12, #0x0 str r2, [r0, #0x0] @@ -144,11 +138,10 @@ FUN_020BF598: ; 0x020BF598 str r1, [r0, #0x34] str r12, [r0, #0x10] bx lr - arm_func_end FUN_020BF598 + arm_func_end texmtxCalc_flagTR_ - ; _end - arm_func_start FUN_020BF5E8 -FUN_020BF5E8: ; 0x020BF5E8 + local_arm_func_start texmtxCalc_flagTS_ +texmtxCalc_flagTS_: ; 0x020BF5E8 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r5, r1 @@ -205,11 +198,10 @@ FUN_020BF5E8: ; 0x020BF5E8 str r0, [r6, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BF5E8 + arm_func_end texmtxCalc_flagTS_ - ; _end - arm_func_start FUN_020BF6C8 -FUN_020BF6C8: ; 0x020BF6C8 + local_arm_func_start texmtxCalc_flagT_ +texmtxCalc_flagT_: ; 0x020BF6C8 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4 mov r9, r1 @@ -274,11 +266,10 @@ FUN_020BF6C8: ; 0x020BF6C8 str r0, [r10, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020BF6C8 + arm_func_end texmtxCalc_flagT_ - ; _end - arm_func_start FUN_020BF7C8 -FUN_020BF7C8: ; 0x020BF7C8 + local_arm_func_start texmtxCalc_flagRS_ +texmtxCalc_flagRS_: ; 0x020BF7C8 mov r2, #0x1000 str r2, [r0, #0x0] str r2, [r0, #0x14] @@ -297,11 +288,10 @@ FUN_020BF7C8: ; 0x020BF7C8 str r1, [r0, #0x34] str r12, [r0, #0x10] bx lr - arm_func_end FUN_020BF7C8 + arm_func_end texmtxCalc_flagRS_ - ; _end - arm_func_start FUN_020BF810 -FUN_020BF810: ; 0x020BF810 + local_arm_func_start texmtxCalc_flagR_ +texmtxCalc_flagR_: ; 0x020BF810 stmdb sp!, {r4-r6,lr} ldr r2, [r1, #0x18] mov r3, #0x0 @@ -335,11 +325,10 @@ FUN_020BF810: ; 0x020BF810 str r1, [r0, #0x34] str r3, [r0, #0x10] ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BF810 + arm_func_end texmtxCalc_flagR_ - ; _end - arm_func_start FUN_020BF894 -FUN_020BF894: ; 0x020BF894 + local_arm_func_start texmtxCalc_flagS_ +texmtxCalc_flagS_: ; 0x020BF894 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r5, r1 @@ -401,11 +390,10 @@ FUN_020BF894: ; 0x020BF894 str r0, [r6, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BF894 + arm_func_end texmtxCalc_flagS_ - ; _end - arm_func_start FUN_020BF988 -FUN_020BF988: ; 0x020BF988 + local_arm_func_start texmtxCalc_flag_ +texmtxCalc_flag_: ; 0x020BF988 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4 mov r9, r1 @@ -475,5 +463,4 @@ FUN_020BF988: ; 0x020BF988 str r0, [r10, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020BF988 - + arm_func_end texmtxCalc_flag_ diff --git a/arm9/asm/NNS_G3D_anm.s b/arm9/asm/NNS_G3D_anm.s index ddd94ecd..512ef7c0 100644 --- a/arm9/asm/NNS_G3D_anm.s +++ b/arm9/asm/NNS_G3D_anm.s @@ -3,77 +3,62 @@ .section .data - ; NNS_G3dAnmFmtNum - .global UNK_02106594 -UNK_02106594: ; 0x02106594 + .global NNS_G3dAnmFmtNum +NNS_G3dAnmFmtNum: ; 0x02106594 .byte 0x05, 0x00, 0x00, 0x00 - ; NNS_G3dFuncAnmVisNsBvaDefault - .global UNK_02106598 -UNK_02106598: ; 0x02106598 - .word FUN_020BE5A0 + .global NNS_G3dFuncAnmVisNsBvaDefault +NNS_G3dFuncAnmVisNsBvaDefault: ; 0x02106598 + .word NNSi_G3dAnmCalcNsBva - ; NNS_G3dFuncAnmJntNsBcaDefault - .global UNK_0210659C -UNK_0210659C: ; 0x0210659C - .word FUN_020BDA70 + .global NNS_G3dFuncAnmJntNsBcaDefault +NNS_G3dFuncAnmJntNsBcaDefault: ; 0x0210659C + .word NNSi_G3dAnmCalcNsBca - ; NNS_G3dFuncAnmMatNsBtaDefault - .global UNK_021065A0 -UNK_021065A0: ; 0x021065A0 - .word FUN_020BDF38 + .global NNS_G3dFuncAnmMatNsBtaDefault +NNS_G3dFuncAnmMatNsBtaDefault: ; 0x021065A0 + .word NNSi_G3dAnmCalcNsBta - ; NNS_G3dFuncAnmMatNsBtpDefault - .global UNK_021065A4 -UNK_021065A4: ; 0x021065A4 - .word FUN_020BE334 + .global NNS_G3dFuncAnmMatNsBtpDefault +NNS_G3dFuncAnmMatNsBtpDefault: ; 0x021065A4 + .word NNSi_G3dAnmCalcNsBtp - ; NNS_G3dFuncAnmMatNsBmaDefault - .global UNK_021065A8 -UNK_021065A8: ; 0x021065A8 - .word FUN_020BDB40 + .global NNS_G3dFuncAnmMatNsBmaDefault +NNS_G3dFuncAnmMatNsBmaDefault: ; 0x021065A8 + .word NNSi_G3dAnmCalcNsBma - ; NNS_G3dFuncBlendVisDefault - .global UNK_021065AC -UNK_021065AC: ; 0x021065AC - .word FUN_020B8640 + .global NNS_G3dFuncBlendVisDefault +NNS_G3dFuncBlendVisDefault: ; 0x021065AC + .word NNSi_G3dAnmBlendVis - ; NNS_G3dFuncBlendJntDefault - .global UNK_021065B0 -UNK_021065B0: ; 0x021065B0 - .word FUN_020B86B0 + .global NNS_G3dFuncBlendJntDefault +NNS_G3dFuncBlendJntDefault: ; 0x021065B0 + .word NNSi_G3dAnmBlendJnt - ; NNS_G3dFuncBlendMatDefault - .global UNK_021065B4 -UNK_021065B4: ; 0x021065B4 - .word FUN_020B8A08 + .global NNS_G3dFuncBlendMatDefault +NNS_G3dFuncBlendMatDefault: ; 0x021065B4 + .word NNSi_G3dAnmBlendMat - ; NNS_G3dAnmObjInitFuncArray - .global UNK_021065B8 -UNK_021065B8: ; 0x021065B8 + .global NNS_G3dAnmObjInitFuncArray +NNS_G3dAnmObjInitFuncArray: ; 0x021065B8 .byte 0x4D, 0x00, 0x41, 0x4D - - ; NNS_G3dAnmObjInitFuncArray + 0x4 - .global UNK_021065BC -UNK_021065BC: ; 0x021065BC - .word FUN_020BDC0C + .word NNSi_G3dAnmObjInitNsBma .byte 0x4D, 0x00, 0x50, 0x54 - .word FUN_020BE4F0 + .word NNSi_G3dAnmObjInitNsBtp .byte 0x4D, 0x00, 0x41, 0x54 - .word FUN_020BDF84 + .word NNSi_G3dAnmObjInitNsBta .byte 0x56, 0x00, 0x41, 0x56 - .word FUN_020BE5E0 + .word NNSi_G3dAnmObjInitNsBva .byte 0x4A, 0x00, 0x41, 0x43 - .word FUN_020BDAB4 + .word NNSi_G3dAnmObjInitNsBca .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .section .text - ; _end - arm_func_start FUN_020B8640 -FUN_020B8640: ; 0x020B8640 + arm_func_start NNSi_G3dAnmBlendVis +NNSi_G3dAnmBlendVis: ; 0x020B8640 stmdb sp!, {r4-r8,lr} sub sp, sp, #0x8 mov r7, r0 @@ -104,11 +89,10 @@ _020B869C: bne _020B8664 add sp, sp, #0x8 ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020B8640 + arm_func_end NNSi_G3dAnmBlendVis - ; _end - arm_func_start FUN_020B86B0 -FUN_020B86B0: ; 0x020B86B0 + arm_func_start NNSi_G3dAnmBlendJnt +NNSi_G3dAnmBlendJnt: ; 0x020B86B0 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x5c mov r9, r1 @@ -199,19 +183,19 @@ _020B87F0: mov r2, r6 add r0, r10, #0x4 and r3, r3, #0x1 - bl FUN_020B8998 + bl blendScaleVec_ ldr r1, [sp, #0x0] add r0, r10, #0x10 and r3, r1, #0x8 mov r1, r11 mov r2, r6 - bl FUN_020B8998 + bl blendScaleVec_ ldr r3, [sp, #0x0] add r0, r10, #0x1c add r1, sp, #0x1c mov r2, r6 and r3, r3, #0x10 - bl FUN_020B8998 + bl blendScaleVec_ ldr r0, [sp, #0x0] ands r0, r0, #0x4 bne _020B8898 @@ -304,11 +288,10 @@ _020B8948: mov r0, #0x1 add sp, sp, #0x5c ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B86B0 + arm_func_end NNSi_G3dAnmBlendJnt - ; _end - arm_func_start FUN_020B8998 -FUN_020B8998: ; 0x020B8998 + arm_func_start blendScaleVec_ +blendScaleVec_: ; 0x020B8998 cmp r3, #0x0 beq _020B89C8 ldr r1, [r0, #0x0] @@ -338,11 +321,10 @@ _020B89C8: add r1, r3, r1, asr #0xc str r1, [r0, #0x8] bx lr - arm_func_end FUN_020B8998 + arm_func_end blendScaleVec_ - ; _end - arm_func_start FUN_020B8A08 -FUN_020B8A08: ; 0x020B8A08 + arm_func_start NNSi_G3dAnmBlendMat +NNSi_G3dAnmBlendMat: ; 0x020B8A08 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r6, r0 @@ -367,5 +349,4 @@ _020B8A4C: bne _020B8A24 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B8A08 - + arm_func_end NNSi_G3dAnmBlendMat diff --git a/arm9/asm/NNS_G3D_basic.s b/arm9/asm/NNS_G3D_basic.s index 03950bfc..a9849429 100644 --- a/arm9/asm/NNS_G3D_basic.s +++ b/arm9/asm/NNS_G3D_basic.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020BE62C -FUN_020BE62C: ; 0x020BE62C + arm_func_start NNSi_G3dGetJointScaleBasic +NNSi_G3dGetJointScaleBasic: ; 0x020BE62C ands r2, r3, #0x4 ldrne r1, [r0, #0x0] orrne r1, r1, #0x1 @@ -22,11 +21,10 @@ _020BE658: orr r1, r1, #0x18 str r1, [r0, #0x0] bx lr - arm_func_end FUN_020BE62C + arm_func_end NNSi_G3dGetJointScaleBasic - ; _end - arm_func_start FUN_020BE668 -FUN_020BE668: ; 0x020BE668 + arm_func_start NNSi_G3dSendJointSRTBasic +NNSi_G3dSendJointSRTBasic: ; 0x020BE668 stmdb sp!, {r4,lr} mov r4, r0 ldr r1, [r4, #0x0] @@ -37,13 +35,13 @@ FUN_020BE668: ; 0x020BE668 add r1, r4, #0x28 mov r0, #0x19 mov r2, #0xc - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N b _020BE6C4 _020BE698: add r1, r4, #0x4c mov r0, #0x1c mov r2, #0x3 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N b _020BE6C4 _020BE6AC: ands r0, r1, #0x2 @@ -51,7 +49,7 @@ _020BE6AC: add r1, r4, #0x28 mov r0, #0x1a mov r2, #0x9 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020BE6C4: ldr r0, [r4, #0x0] ands r0, r0, #0x1 @@ -59,7 +57,6 @@ _020BE6C4: add r1, r4, #0x4 mov r0, #0x1b mov r2, #0x3 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldmia sp!, {r4,pc} - arm_func_end FUN_020BE668 - + arm_func_end NNSi_G3dSendJointSRTBasic diff --git a/arm9/asm/NNS_G3D_cgtool.s b/arm9/asm/NNS_G3D_cgtool.s index 9abb2031..e17cfaf5 100644 --- a/arm9/asm/NNS_G3D_cgtool.s +++ b/arm9/asm/NNS_G3D_cgtool.s @@ -3,25 +3,21 @@ .section .data - ; NNS_G3dSendJointSRT_FuncArray - .global UNK_02106608 -UNK_02106608: ; 0x02106608 - .word FUN_020BE668 - .word FUN_020BEE3C - .word FUN_020BF2FC + .global NNS_G3dSendJointSRT_FuncArray +NNS_G3dSendJointSRT_FuncArray: ; 0x02106608 + .word NNSi_G3dSendJointSRTBasic + .word NNSi_G3dSendJointSRTMaya + .word NNSi_G3dSendJointSRTSi3d - ; NNS_G3dGetJointScale_FuncArray - .global UNK_02106614 -UNK_02106614: ; 0x02106614 - .word FUN_020BE62C - .word FUN_020BECEC - .word FUN_020BF0D4 - - ; NNS_G3dSendTexSRT_FuncArray - .global UNK_02106620 -UNK_02106620: ; 0x02106620 - .word FUN_020BE6E4 - .word FUN_020BEF10 - .word FUN_020BF42C - .word FUN_020BFA9C + .global NNS_G3dGetJointScale_FuncArray +NNS_G3dGetJointScale_FuncArray: ; 0x02106614 + .word NNSi_G3dGetJointScaleBasic + .word NNSi_G3dGetJointScaleMaya + .word NNSi_G3dGetJointScaleSi3d + .global NNS_G3dSendTexSRT_FuncArray +NNS_G3dSendTexSRT_FuncArray: ; 0x02106620 + .word NNSi_G3dSendTexSRTMaya + .word NNSi_G3dSendTexSRTSi3d + .word NNSi_G3dSendTexSRT3dsMax + .word NNSi_G3dSendTexSRTXsi diff --git a/arm9/asm/NNS_G3D_gecom.s b/arm9/asm/NNS_G3D_gecom.s index 56c81114..2caeb535 100644 --- a/arm9/asm/NNS_G3D_gecom.s +++ b/arm9/asm/NNS_G3D_gecom.s @@ -3,35 +3,31 @@ .section .bss - ; NNS_G3dGeBuffer - .global UNK_021D1C80 -UNK_021D1C80: ; 0x021D1C80 + .global NNS_G3dGeBuffer +NNS_G3dGeBuffer: ; 0x021D1C80 .space 0x4 - ; NNS_G3dFlagGXDmaAsync - .global UNK_021D1C84 -UNK_021D1C84: ; 0x021D1C84 + .global NNS_G3dFlagGXDmaAsync +NNS_G3dFlagGXDmaAsync: ; 0x021D1C84 .space 0x4 - ; NNS_G3dFlagUseFastDma - .global UNK_021D1C88 -UNK_021D1C88: ; 0x021D1C88 + .global NNS_G3dFlagUseFastDma +NNS_G3dFlagUseFastDma: ; 0x021D1C88 .space 0x4 .section .text - ; NNS_G3dGeBufferOP_N - arm_func_start FUN_020BB1C0 -FUN_020BB1C0: ; 0x020BB1C0 + arm_func_start NNS_G3dGeBufferOP_N +NNS_G3dGeBufferOP_N: ; 0x020BB1C0 stmdb sp!, {r4-r6,lr} - ldr r3, _020BB2A4 ; =UNK_021D1C80 + ldr r3, _020BB2A4 ; =NNS_G3dGeBuffer mov r6, r0 ldr r12, [r3, #0x0] mov r5, r1 mov r4, r2 cmp r12, #0x0 beq _020BB278 - ldr r0, _020BB2A8 ; =UNK_021D1C84 + ldr r0, _020BB2A8 ; =NNS_G3dFlagGXDmaAsync ldr r0, [r0, #0x0] cmp r0, #0x0 beq _020BB24C @@ -52,7 +48,7 @@ FUN_020BB1C0: ; 0x020BB1C0 add r1, r2, r1, lsl #0x2 mov r2, r4, lsl #0x2 bl MIi_CpuCopyFast - ldr r0, _020BB2A4 ; =UNK_021D1C80 + ldr r0, _020BB2A4 ; =NNS_G3dGeBuffer ldr r1, [r0, #0x0] ldr r0, [r1, #0x0] add r0, r0, r4 @@ -62,21 +58,21 @@ _020BB24C: ldr r0, [r12, #0x0] cmp r0, #0x0 beq _020BB260 - bl FUN_020BB394 + bl NNS_G3dGeFlushBuffer b _020BB28C _020BB260: - ldr r0, _020BB2A8 ; =UNK_021D1C84 + ldr r0, _020BB2A8 ; =NNS_G3dFlagGXDmaAsync ldr r0, [r0, #0x0] cmp r0, #0x0 beq _020BB28C - bl FUN_020BB37C + bl NNS_G3dGeWaitSendDL b _020BB28C _020BB278: - ldr r0, _020BB2A8 ; =UNK_021D1C84 + ldr r0, _020BB2A8 ; =NNS_G3dFlagGXDmaAsync ldr r0, [r0, #0x0] cmp r0, #0x0 beq _020BB28C - bl FUN_020BB37C + bl NNS_G3dGeWaitSendDL _020BB28C: ldr r1, _020BB2AC ; =0x04000400 mov r0, r5 @@ -85,14 +81,13 @@ _020BB28C: bl MIi_CpuSend32 ldmia sp!, {r4-r6,pc} .balign 4 -_020BB2A4: .word UNK_021D1C80 -_020BB2A8: .word UNK_021D1C84 +_020BB2A4: .word NNS_G3dGeBuffer +_020BB2A8: .word NNS_G3dFlagGXDmaAsync _020BB2AC: .word 0x04000400 - arm_func_end FUN_020BB1C0 + arm_func_end NNS_G3dGeBufferOP_N - ; NNS_G3dGeSendDL - arm_func_start FUN_020BB2B0 -FUN_020BB2B0: ; 0x020BB2B0 + arm_func_start NNS_G3dGeSendDL +NNS_G3dGeSendDL: ; 0x020BB2B0 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r4, r1 @@ -109,13 +104,13 @@ _020BB2DC: ldr r0, [r5, #0x0] add r1, r5, #0x4 sub r2, r2, #0x1 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} _020BB2F8: - bl FUN_020BB394 - ldr r0, _020BB364 ; =UNK_021D1C88 - ldr r1, _020BB368 ; =UNK_021D1C84 + bl NNS_G3dGeFlushBuffer + ldr r0, _020BB364 ; =NNS_G3dFlagUseFastDma + ldr r1, _020BB368 ; =NNS_G3dFlagGXDmaAsync ldr r0, [r0, #0x0] mov r2, #0x1 str r2, [r1, #0x0] @@ -124,7 +119,7 @@ _020BB2F8: ldr r0, _020BB360 ; =GXi_DmaId str r1, [sp, #0x0] ldr r0, [r0, #0x0] - ldr r3, _020BB36C ; =FUN_020BB370 + ldr r3, _020BB36C ; =simpleUnlock_ mov r1, r5 mov r2, r4 bl MI_SendGXCommandAsyncFast @@ -134,7 +129,7 @@ _020BB33C: ldr r0, _020BB360 ; =GXi_DmaId str r1, [sp, #0x0] ldr r0, [r0, #0x0] - ldr r3, _020BB36C ; =FUN_020BB370 + ldr r3, _020BB36C ; =simpleUnlock_ mov r1, r5 mov r2, r4 bl MI_SendGXCommandAsync @@ -142,44 +137,41 @@ _020BB33C: ldmia sp!, {r4-r5,pc} .balign 4 _020BB360: .word GXi_DmaId -_020BB364: .word UNK_021D1C88 -_020BB368: .word UNK_021D1C84 -_020BB36C: .word FUN_020BB370 - arm_func_end FUN_020BB2B0 +_020BB364: .word NNS_G3dFlagUseFastDma +_020BB368: .word NNS_G3dFlagGXDmaAsync +_020BB36C: .word simpleUnlock_ + arm_func_end NNS_G3dGeSendDL - ; _end - arm_func_start FUN_020BB370 -FUN_020BB370: ; 0x020BB370 + arm_func_start simpleUnlock_ +simpleUnlock_: ; 0x020BB370 mov r1, #0x0 str r1, [r0, #0x0] bx lr - arm_func_end FUN_020BB370 + arm_func_end simpleUnlock_ - ; NNS_G3dGeWaitSendDL - arm_func_start FUN_020BB37C -FUN_020BB37C: ; 0x020BB37C - ldr r0, _020BB390 ; =UNK_021D1C84 + arm_func_start NNS_G3dGeWaitSendDL +NNS_G3dGeWaitSendDL: ; 0x020BB37C + ldr r0, _020BB390 ; =NNS_G3dFlagGXDmaAsync _020BB380: ldr r1, [r0, #0x0] cmp r1, #0x0 bne _020BB380 bx lr .balign 4 -_020BB390: .word UNK_021D1C84 - arm_func_end FUN_020BB37C +_020BB390: .word NNS_G3dFlagGXDmaAsync + arm_func_end NNS_G3dGeWaitSendDL - ; NNS_G3dGeFlushBuffer - arm_func_start FUN_020BB394 -FUN_020BB394: ; 0x020BB394 + arm_func_start NNS_G3dGeFlushBuffer +NNS_G3dGeFlushBuffer: ; 0x020BB394 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r0, _020BB3FC ; =UNK_021D1C84 + ldr r0, _020BB3FC ; =NNS_G3dFlagGXDmaAsync ldr r0, [r0, #0x0] cmp r0, #0x0 beq _020BB3B0 - bl FUN_020BB37C + bl NNS_G3dGeWaitSendDL _020BB3B0: - ldr r0, _020BB400 ; =UNK_021D1C80 + ldr r0, _020BB400 ; =NNS_G3dGeBuffer ldr r0, [r0, #0x0] cmp r0, #0x0 addeq sp, sp, #0x4 @@ -192,15 +184,14 @@ _020BB3B0: add r0, r0, #0x4 mov r2, r2, lsl #0x2 bl MIi_CpuSend32 - ldr r0, _020BB400 ; =UNK_021D1C80 + ldr r0, _020BB400 ; =NNS_G3dGeBuffer mov r1, #0x0 ldr r0, [r0, #0x0] str r1, [r0, #0x0] add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020BB3FC: .word UNK_021D1C84 -_020BB400: .word UNK_021D1C80 +_020BB3FC: .word NNS_G3dFlagGXDmaAsync +_020BB400: .word NNS_G3dGeBuffer _020BB404: .word 0x04000400 - arm_func_end FUN_020BB394 - + arm_func_end NNS_G3dGeFlushBuffer diff --git a/arm9/asm/NNS_G3D_glbstate.s b/arm9/asm/NNS_G3D_glbstate.s index 73b6609d..3dbb215f 100644 --- a/arm9/asm/NNS_G3D_glbstate.s +++ b/arm9/asm/NNS_G3D_glbstate.s @@ -3,275 +3,199 @@ .section .bss - ; NNS_G3dGlb - .global UNK_021CED18 -UNK_021CED18: ; 0x021CED18 - .space 0x8 - - ; NNS_G3dGlb + 0x8 - .global UNK_021CED20 -UNK_021CED20: ; 0x021CED20 - .space 0x44 - - ; NNS_G3dGlb + 0x4C - .global UNK_021CED64 -UNK_021CED64: ; 0x021CED64 - .space 0x34 - - ; NNS_G3dGlb + 0x80 - .global UNK_021CED98 -UNK_021CED98: ; 0x021CED98 - .space 0x28 - - ; NNS_G3dGlb + 0xA8 - .global UNK_021CEDC0 -UNK_021CEDC0: ; 0x021CEDC0 - .space 0x14 - - ; NNS_G3dGlb + 0xBC - .global UNK_021CEDD4 -UNK_021CEDD4: ; 0x021CEDD4 - .space 0x24 - - ; NNS_G3dGlb + 0xE0 - .global UNK_021CEDF8 -UNK_021CEDF8: ; 0x021CEDF8 - .space 0xc - - ; NNS_G3dGlb + 0xEC - .global UNK_021CEE04 -UNK_021CEE04: ; 0x021CEE04 - .space 0x14 - - ; NNS_G3dGlb + 0x100 - .global UNK_021CEE18 -UNK_021CEE18: ; 0x021CEE18 - .space 0x30 - - ; NNS_G3dGlb + 0x130 - .global UNK_021CEE48 -UNK_021CEE48: ; 0x021CEE48 - .space 0x30 - - ; NNS_G3dGlb + 0x160 - .global UNK_021CEE78 -UNK_021CEE78: ; 0x021CEE78 - .space 0xe0 - - ; NNS_G3dGlb + 0x240 - .global UNK_021CEF58 -UNK_021CEF58: ; 0x021CEF58 - .space 0xc - - ; NNS_G3dGlb + 0x24C - .global UNK_021CEF64 -UNK_021CEF64: ; 0x021CEF64 - .space 0xc - - ; NNS_G3dGlb + 0x258 - .global UNK_021CEF70 -UNK_021CEF70: ; 0x021CEF70 - .space 0xc + .global NNS_G3dGlb +NNS_G3dGlb: ; 0x021CED18 + .space 0x264 .section .text - ; NNS_G3dGlbGetViewPort - arm_func_start FUN_020B8200 -FUN_020B8200: ; 0x020B8200 + arm_func_start NNS_G3dGlbGetViewPort +NNS_G3dGlbGetViewPort: ; 0x020B8200 cmp r0, #0x0 - ldrne ip, _020B8260 ; =UNK_021CED18 + ldrne ip, _020B8260 ; =NNS_G3dGlb ldrne r12, [r12, #0xa0] andne r12, r12, #0xff strne r12, [r0, #0x0] cmp r1, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 + ldrne r0, _020B8260 ; =NNS_G3dGlb ldrne r0, [r0, #0xa0] movne r0, r0, lsr #0x8 andne r0, r0, #0xff strne r0, [r1, #0x0] cmp r2, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 + ldrne r0, _020B8260 ; =NNS_G3dGlb ldrne r0, [r0, #0xa0] movne r0, r0, lsr #0x10 andne r0, r0, #0xff strne r0, [r2, #0x0] cmp r3, #0x0 - ldrne r0, _020B8260 ; =UNK_021CED18 + ldrne r0, _020B8260 ; =NNS_G3dGlb ldrne r0, [r0, #0xa0] movne r0, r0, lsr #0x18 andne r0, r0, #0xff strne r0, [r3, #0x0] bx lr .balign 4 -_020B8260: .word UNK_021CED18 - arm_func_end FUN_020B8200 +_020B8260: .word NNS_G3dGlb + arm_func_end NNS_G3dGlbGetViewPort - ; NNS_G3dGlbGetInvWV - arm_func_start FUN_020B8264 -FUN_020B8264: ; 0x020B8264 + arm_func_start NNS_G3dGlbGetInvWV +NNS_G3dGlbGetInvWV: ; 0x020B8264 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r0, _020B829C ; =UNK_021CED18 + ldr r0, _020B829C ; =NNS_G3dGlb ldr r0, [r0, #0xfc] ands r0, r0, #0x80 bne _020B8290 - bl FUN_020B82E4 - ldr r0, _020B829C ; =UNK_021CED18 + bl calcSrtCameraMtx_ + ldr r0, _020B829C ; =NNS_G3dGlb ldr r1, [r0, #0xfc] orr r1, r1, #0x80 str r1, [r0, #0xfc] _020B8290: - ldr r0, _020B82A0 ; =UNK_021CEE78 + ldr r0, _020B82A0 ; =NNS_G3dGlb + 0x160 add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020B829C: .word UNK_021CED18 -_020B82A0: .word UNK_021CEE78 - arm_func_end FUN_020B8264 +_020B829C: .word NNS_G3dGlb +_020B82A0: .word NNS_G3dGlb + 0x160 + arm_func_end NNS_G3dGlbGetInvWV - ; NNS_G3dGlbGetWV - arm_func_start FUN_020B82A4 -FUN_020B82A4: ; 0x020B82A4 + arm_func_start NNS_G3dGlbGetWV +NNS_G3dGlbGetWV: ; 0x020B82A4 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r0, _020B82DC ; =UNK_021CED18 + ldr r0, _020B82DC ; =NNS_G3dGlb ldr r0, [r0, #0xfc] ands r0, r0, #0x80 bne _020B82D0 - bl FUN_020B82E4 - ldr r0, _020B82DC ; =UNK_021CED18 + bl calcSrtCameraMtx_ + ldr r0, _020B82DC ; =NNS_G3dGlb ldr r1, [r0, #0xfc] orr r1, r1, #0x80 str r1, [r0, #0xfc] _020B82D0: - ldr r0, _020B82E0 ; =UNK_021CEE48 + ldr r0, _020B82E0 ; =NNS_G3dGlb + 0x130 add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020B82DC: .word UNK_021CED18 -_020B82E0: .word UNK_021CEE48 - arm_func_end FUN_020B82A4 +_020B82DC: .word NNS_G3dGlb +_020B82E0: .word NNS_G3dGlb + 0x130 + arm_func_end NNS_G3dGlbGetWV - ; calcSrtCameraMtx_ - arm_func_start FUN_020B82E4 -FUN_020B82E4: ; 0x020B82E4 + arm_func_start calcSrtCameraMtx_ +calcSrtCameraMtx_: ; 0x020B82E4 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r0, _020B8330 ; =UNK_021CEDD4 - ldr r1, _020B8334 ; =UNK_021CED64 - ldr r2, _020B8338 ; =UNK_021CEE48 + ldr r0, _020B8330 ; =NNS_G3dGlb + 0xBC + ldr r1, _020B8334 ; =NNS_G3dGlb + 0x4C + ldr r2, _020B8338 ; =NNS_G3dGlb + 0x130 bl MTX_Concat43 - ldr r3, _020B833C ; =UNK_021CED18 - ldr r0, _020B8338 ; =UNK_021CEE48 + ldr r3, _020B833C ; =NNS_G3dGlb + ldr r0, _020B8338 ; =NNS_G3dGlb + 0x130 ldr r2, [r3, #0xf4] mov r1, r0 str r2, [sp, #0x0] ldr r2, [r3, #0xec] ldr r3, [r3, #0xf0] bl MTX_ScaleApply43 - ldr r0, _020B8338 ; =UNK_021CEE48 - ldr r1, _020B8340 ; =UNK_021CEE78 + ldr r0, _020B8338 ; =NNS_G3dGlb + 0x130 + ldr r1, _020B8340 ; =NNS_G3dGlb + 0x160 bl MTX_Inverse43 add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020B8330: .word UNK_021CEDD4 -_020B8334: .word UNK_021CED64 -_020B8338: .word UNK_021CEE48 -_020B833C: .word UNK_021CED18 -_020B8340: .word UNK_021CEE78 - arm_func_end FUN_020B82E4 +_020B8330: .word NNS_G3dGlb + 0xBC +_020B8334: .word NNS_G3dGlb + 0x4C +_020B8338: .word NNS_G3dGlb + 0x130 +_020B833C: .word NNS_G3dGlb +_020B8340: .word NNS_G3dGlb + 0x160 + arm_func_end calcSrtCameraMtx_ - ; NNS_G3dGlbGetInvV - arm_func_start FUN_020B8344 -FUN_020B8344: ; 0x020B8344 + arm_func_start NNS_G3dGlbGetInvV +NNS_G3dGlbGetInvV: ; 0x020B8344 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r0, _020B8384 ; =UNK_021CED18 + ldr r0, _020B8384 ; =NNS_G3dGlb ldr r0, [r0, #0xfc] ands r0, r0, #0x8 bne _020B8378 - ldr r0, _020B8388 ; =UNK_021CED64 - ldr r1, _020B838C ; =UNK_021CEE18 + ldr r0, _020B8388 ; =NNS_G3dGlb + 0x4C + ldr r1, _020B838C ; =NNS_G3dGlb + 0x100 bl MTX_Inverse43 - ldr r0, _020B8384 ; =UNK_021CED18 + ldr r0, _020B8384 ; =NNS_G3dGlb ldr r1, [r0, #0xfc] orr r1, r1, #0x8 str r1, [r0, #0xfc] _020B8378: - ldr r0, _020B838C ; =UNK_021CEE18 + ldr r0, _020B838C ; =NNS_G3dGlb + 0x100 add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020B8384: .word UNK_021CED18 -_020B8388: .word UNK_021CED64 -_020B838C: .word UNK_021CEE18 - arm_func_end FUN_020B8344 +_020B8384: .word NNS_G3dGlb +_020B8388: .word NNS_G3dGlb + 0x4C +_020B838C: .word NNS_G3dGlb + 0x100 + arm_func_end NNS_G3dGlbGetInvV - ; NNS_G3dGlbPolygonAttr - arm_func_start FUN_020B8390 -FUN_020B8390: ; 0x020B8390 + arm_func_start NNS_G3dGlbPolygonAttr +NNS_G3dGlbPolygonAttr: ; 0x020B8390 orr r0, r0, r1, lsl #0x4 ldr r1, [sp, #0x4] orr r0, r0, r2, lsl #0x6 orr r0, r1, r0 ldr r2, [sp, #0x0] orr r1, r0, r3, lsl #0x18 - ldr r0, _020B83B8 ; =UNK_021CED18 + ldr r0, _020B83B8 ; =NNS_G3dGlb orr r1, r1, r2, lsl #0x10 str r1, [r0, #0x9c] bx lr .balign 4 -_020B83B8: .word UNK_021CED18 - arm_func_end FUN_020B8390 +_020B83B8: .word NNS_G3dGlb + arm_func_end NNS_G3dGlbPolygonAttr - ; NNS_G3dGlbMaterialColorSpecEmi - arm_func_start FUN_020B83BC -FUN_020B83BC: ; 0x020B83BC + arm_func_start NNS_G3dGlbMaterialColorSpecEmi +NNS_G3dGlbMaterialColorSpecEmi: ; 0x020B83BC cmp r2, #0x0 movne r2, #0x1 orr r1, r0, r1, lsl #0x10 moveq r2, #0x0 - ldr r0, _020B83DC ; =UNK_021CED18 + ldr r0, _020B83DC ; =NNS_G3dGlb orr r1, r1, r2, lsl #0xf str r1, [r0, #0x98] bx lr .balign 4 -_020B83DC: .word UNK_021CED18 - arm_func_end FUN_020B83BC +_020B83DC: .word NNS_G3dGlb + arm_func_end NNS_G3dGlbMaterialColorSpecEmi - ; NNS_G3dGlbMaterialColorDiffAmb - arm_func_start FUN_020B83E0 -FUN_020B83E0: ; 0x020B83E0 + arm_func_start NNS_G3dGlbMaterialColorDiffAmb +NNS_G3dGlbMaterialColorDiffAmb: ; 0x020B83E0 cmp r2, #0x0 movne r2, #0x1 orr r1, r0, r1, lsl #0x10 moveq r2, #0x0 - ldr r0, _020B8400 ; =UNK_021CED18 + ldr r0, _020B8400 ; =NNS_G3dGlb orr r1, r1, r2, lsl #0xf str r1, [r0, #0x94] bx lr .balign 4 -_020B8400: .word UNK_021CED18 - arm_func_end FUN_020B83E0 +_020B8400: .word NNS_G3dGlb + arm_func_end NNS_G3dGlbMaterialColorDiffAmb - ; NNS_G3dGlbLightColor - arm_func_start FUN_020B8404 -FUN_020B8404: ; 0x020B8404 - ldr r2, _020B8414 ; =UNK_021CEDC0 + arm_func_start NNS_G3dGlbLightColor +NNS_G3dGlbLightColor: ; 0x020B8404 + ldr r2, _020B8414 ; =NNS_G3dGlb + 0xA8 orr r1, r1, r0, lsl #0x1e str r1, [r2, r0, lsl #0x2] bx lr .balign 4 -_020B8414: .word UNK_021CEDC0 - arm_func_end FUN_020B8404 +_020B8414: .word NNS_G3dGlb + 0xA8 + arm_func_end NNS_G3dGlbLightColor - ; NNS_G3dGlbLightVector - arm_func_start FUN_020B8418 -FUN_020B8418: ; 0x020B8418 + arm_func_start NNS_G3dGlbLightVector +NNS_G3dGlbLightVector: ; 0x020B8418 stmdb sp!, {r4,lr} ldr ip, _020B8444 ; =0x000003FF - ldr lr, _020B8448 ; =UNK_021CED98 + ldr lr, _020B8448 ; =NNS_G3dGlb + 0x80 and r4, r12, r1, asr #0x3 and r1, r12, r2, asr #0x3 and r2, r12, r3, asr #0x3 @@ -282,51 +206,48 @@ FUN_020B8418: ; 0x020B8418 ldmia sp!, {r4,pc} .balign 4 _020B8444: .word 0x000003FF -_020B8448: .word UNK_021CED98 - arm_func_end FUN_020B8418 +_020B8448: .word NNS_G3dGlb + 0x80 + arm_func_end NNS_G3dGlbLightVector - ; NNS_G3dGlbSetBaseScale - arm_func_start FUN_020B844C -FUN_020B844C: ; 0x020B844C - ldr r3, _020B846C ; =UNK_021CEE04 + arm_func_start NNS_G3dGlbSetBaseScale +NNS_G3dGlbSetBaseScale: ; 0x020B844C + ldr r3, _020B846C ; =NNS_G3dGlb + 0xEC ldmia r0, {r0-r2} stmia r3, {r0-r2} - ldr r0, _020B8470 ; =UNK_021CED18 + ldr r0, _020B8470 ; =NNS_G3dGlb ldr r1, [r0, #0xfc] bic r1, r1, #0xa4 str r1, [r0, #0xfc] bx lr .balign 4 -_020B846C: .word UNK_021CEE04 -_020B8470: .word UNK_021CED18 - arm_func_end FUN_020B844C +_020B846C: .word NNS_G3dGlb + 0xEC +_020B8470: .word NNS_G3dGlb + arm_func_end NNS_G3dGlbSetBaseScale - ; NNS_G3dGlbSetBaseTrans - arm_func_start FUN_020B8474 -FUN_020B8474: ; 0x020B8474 - ldr r3, _020B8494 ; =UNK_021CEDF8 + arm_func_start NNS_G3dGlbSetBaseTrans +NNS_G3dGlbSetBaseTrans: ; 0x020B8474 + ldr r3, _020B8494 ; =NNS_G3dGlb + 0xE0 ldmia r0, {r0-r2} stmia r3, {r0-r2} - ldr r0, _020B8498 ; =UNK_021CED18 + ldr r0, _020B8498 ; =NNS_G3dGlb ldr r1, [r0, #0xfc] bic r1, r1, #0xa4 str r1, [r0, #0xfc] bx lr .balign 4 -_020B8494: .word UNK_021CEDF8 -_020B8498: .word UNK_021CED18 - arm_func_end FUN_020B8474 +_020B8494: .word NNS_G3dGlb + 0xE0 +_020B8498: .word NNS_G3dGlb + arm_func_end NNS_G3dGlbSetBaseTrans - ; NNS_G3dGlbFlushP - arm_func_start FUN_020B849C -FUN_020B849C: ; 0x020B849C + arm_func_start NNS_G3dGlbFlushP +NNS_G3dGlbFlushP: ; 0x020B849C stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r1, _020B84D4 ; =UNK_021CED18 + ldr r1, _020B84D4 ; =NNS_G3dGlb mov r2, #0x3e ldr r0, [r1], #0x4 - bl FUN_020BB1C0 - ldr r0, _020B84D4 ; =UNK_021CED18 + bl NNS_G3dGeBufferOP_N + ldr r0, _020B84D4 ; =NNS_G3dGlb ldr r1, [r0, #0xfc] bic r1, r1, #0x1 str r1, [r0, #0xfc] @@ -335,23 +256,22 @@ FUN_020B849C: ; 0x020B849C add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020B84D4: .word UNK_021CED18 - arm_func_end FUN_020B849C +_020B84D4: .word NNS_G3dGlb + arm_func_end NNS_G3dGlbFlushP - ; NNS_G3dGlbInit - arm_func_start FUN_020B84D8 -FUN_020B84D8: ; 0x020B84D8 + arm_func_start NNS_G3dGlbInit +NNS_G3dGlbInit: ; 0x020B84D8 stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4 ldr r8, _020B85F4 ; =0x17101610 - ldr r1, _020B85F8 ; =UNK_021CED18 + ldr r1, _020B85F8 ; =NNS_G3dGlb ldr r5, _020B85FC ; =0x32323232 ldr r4, _020B8600 ; =0x60293130 ldr r3, _020B8604 ; =0x33333333 ldr r2, _020B8608 ; =0x002A1B19 mov r7, #0x0 mov r6, #0x2 - ldr r0, _020B860C ; =UNK_021CED64 + ldr r0, _020B860C ; =NNS_G3dGlb + 0x4C str r8, [r1, #0x0] str r7, [r1, #0x4] str r6, [r1, #0x48] @@ -360,10 +280,10 @@ FUN_020B84D8: ; 0x020B84D8 str r3, [r1, #0xa4] str r2, [r1, #0xb8] bl MTX_Identity43_ - ldr r0, _020B8610 ; =UNK_021CED20 + ldr r0, _020B8610 ; =NNS_G3dGlb + 0x8 bl MTX_Identity44_ mov r2, r7 - ldr r1, _020B85F8 ; =UNK_021CED18 + ldr r1, _020B85F8 ; =NNS_G3dGlb ldr r7, _020B8614 ; =0x4210C210 ldr r0, _020B8618 ; =0x40000200 ldr lr, _020B861C ; =0x2D8B62D8 @@ -377,7 +297,7 @@ FUN_020B84D8: ; 0x020B84D8 str r0, [r1, #0x84] str lr, [r1, #0x80] mov lr, #0x4000001f - ldr r0, _020B863C ; =UNK_021CEDD4 + ldr r0, _020B863C ; =NNS_G3dGlb + 0xBC str r9, [r1, #0x88] str r8, [r1, #0x8c] str r7, [r1, #0x94] @@ -393,7 +313,7 @@ FUN_020B84D8: ; 0x020B84D8 str r2, [r1, #0xe8] bl MTX_Identity33_ mov r3, #0x1000 - ldr r0, _020B85F8 ; =UNK_021CED18 + ldr r0, _020B85F8 ; =NNS_G3dGlb mov r2, #0x0 rsb r1, r3, #0x0 str r3, [r0, #0xec] @@ -414,13 +334,13 @@ FUN_020B84D8: ; 0x020B84D8 ldmia sp!, {r4-r9,pc} .balign 4 _020B85F4: .word 0x17101610 -_020B85F8: .word UNK_021CED18 +_020B85F8: .word NNS_G3dGlb _020B85FC: .word 0x32323232 _020B8600: .word 0x60293130 _020B8604: .word 0x33333333 _020B8608: .word 0x002A1B19 -_020B860C: .word UNK_021CED64 -_020B8610: .word UNK_021CED20 +_020B860C: .word NNS_G3dGlb + 0x4C +_020B8610: .word NNS_G3dGlb + 0x8 _020B8614: .word 0x4210C210 _020B8618: .word 0x40000200 _020B861C: .word 0x2D8B62D8 @@ -431,6 +351,5 @@ _020B862C: .word 0xBFFF0000 _020B8630: .word 0x00007FFF _020B8634: .word 0x800003E0 _020B8638: .word 0xC0007C00 -_020B863C: .word UNK_021CEDD4 - arm_func_end FUN_020B84D8 - +_020B863C: .word NNS_G3dGlb + 0xBC + arm_func_end NNS_G3dGlbInit diff --git a/arm9/asm/NNS_G3D_kernel.s b/arm9/asm/NNS_G3D_kernel.s index 71052927..ebf3d210 100644 --- a/arm9/asm/NNS_G3D_kernel.s +++ b/arm9/asm/NNS_G3D_kernel.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020B772C -FUN_020B772C: ; 0x020B772C + arm_func_start NNS_G3dReleaseMdlSet +NNS_G3dReleaseMdlSet: ; 0x020B772C stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r6, r0 @@ -23,20 +22,19 @@ _020B7750: ldr r0, [r0, #0x4] add r7, r6, r0 mov r0, r7 - bl FUN_020B79A4 + bl NNS_G3dReleaseMdlTex mov r0, r7 - bl FUN_020B780C + bl NNS_G3dReleaseMdlPltt ldrb r0, [r6, #0x9] add r5, r5, #0x1 cmp r5, r0 blo _020B7750 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020B772C + arm_func_end NNS_G3dReleaseMdlSet - ; _end - arm_func_start FUN_020B7790 -FUN_020B7790: ; 0x020B7790 + arm_func_start NNS_G3dBindMdlSet +NNS_G3dBindMdlSet: ; 0x020B7790 stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4 mov r8, r0 @@ -56,11 +54,11 @@ _020B77B8: ldr r0, [r0, #0x4] add r9, r8, r0 mov r0, r9 - bl FUN_020B7A04 + bl NNS_G3dBindMdlTex and r5, r5, r0 mov r0, r9 mov r1, r7 - bl FUN_020B7864 + bl NNS_G3dBindMdlPltt ldrb r1, [r8, #0x9] add r6, r6, #0x1 and r5, r5, r0 @@ -70,11 +68,10 @@ _020B7800: mov r0, r5 add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} - arm_func_end FUN_020B7790 + arm_func_end NNS_G3dBindMdlSet - ; _end - arm_func_start FUN_020B780C -FUN_020B780C: ; 0x020B780C + arm_func_start NNS_G3dReleaseMdlPltt +NNS_G3dReleaseMdlPltt: ; 0x020B780C ldr r2, [r0, #0x8] mov r1, #0x0 add r2, r0, r2 @@ -98,11 +95,10 @@ _020B782C: cmp r1, r0 blo _020B782C bx lr - arm_func_end FUN_020B780C + arm_func_end NNS_G3dReleaseMdlPltt - ; _end - arm_func_start FUN_020B7864 -FUN_020B7864: ; 0x020B7864 + arm_func_start NNS_G3dBindMdlPltt +NNS_G3dBindMdlPltt: ; 0x020B7864 stmdb sp!, {r4-r10,lr} ldr r2, [r0, #0x8] mov r10, r1 @@ -124,7 +120,7 @@ _020B7898: add r0, r10, r0 add r1, r2, r1 add r1, r1, r5 - bl FUN_020BC2A0 + bl NNS_G3dGetResDataByName movs r3, r0 beq _020B78F0 ldrh r1, [r8, #0x6] @@ -137,7 +133,7 @@ _020B7898: bne _020B78F4 mov r0, r9 mov r2, r10 - bl FUN_020B7910 + bl bindMdlPltt_Internal_ b _020B78F4 _020B78F0: mov r6, r4 @@ -150,11 +146,10 @@ _020B78F4: _020B7908: mov r0, r6 ldmia sp!, {r4-r10,pc} - arm_func_end FUN_020B7864 + arm_func_end NNS_G3dBindMdlPltt - ; _end - arm_func_start FUN_020B7910 -FUN_020B7910: ; 0x020B7910 + arm_func_start bindMdlPltt_Internal_ +bindMdlPltt_Internal_: ; 0x020B7910 stmdb sp!, {r4-r6,lr} ldrh r5, [r1, #0x0] ldr r2, [r2, #0x2c] @@ -194,11 +189,10 @@ _020B7994: orr r0, r0, #0x1 strb r0, [r1, #0x3] ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020B7910 + arm_func_end bindMdlPltt_Internal_ - ; _end - arm_func_start FUN_020B79A4 -FUN_020B79A4: ; 0x020B79A4 + arm_func_start NNS_G3dReleaseMdlTex +NNS_G3dReleaseMdlTex: ; 0x020B79A4 stmdb sp!, {r4-r6,lr} ldr r2, [r0, #0x8] mov r4, #0x0 @@ -218,18 +212,17 @@ _020B79C8: ands r0, r0, #0x1 beq _020B79F0 mov r0, r6 - bl FUN_020B7AB8 + bl releaseMdlTex_Internal_ _020B79F0: ldrb r0, [r5, #0x1] add r4, r4, #0x1 cmp r4, r0 blo _020B79C8 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020B79A4 + arm_func_end NNS_G3dReleaseMdlTex - ; _end - arm_func_start FUN_020B7A04 -FUN_020B7A04: ; 0x020B7A04 + arm_func_start NNS_G3dBindMdlTex +NNS_G3dBindMdlTex: ; 0x020B7A04 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4 ldr r2, [r0, #0x8] @@ -252,7 +245,7 @@ _020B7A40: ldrh r1, [r2, #0x2] add r1, r2, r1 add r1, r1, r6 - bl FUN_020BC2A0 + bl NNS_G3dGetResDataByName movs r3, r0 beq _020B7A94 ldrh r1, [r8, #0x6] @@ -265,7 +258,7 @@ _020B7A40: bne _020B7A98 mov r0, r9 mov r2, r10 - bl FUN_020B7B40 + bl bindMdlTex_Internal_ b _020B7A98 _020B7A94: mov r11, r4 @@ -279,11 +272,10 @@ _020B7AAC: mov r0, r11 add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020B7A04 + arm_func_end NNS_G3dBindMdlTex - ; releaseMdlTex_Internal_ - arm_func_start FUN_020B7AB8 -FUN_020B7AB8: ; 0x020B7AB8 + arm_func_start releaseMdlTex_Internal_ +releaseMdlTex_Internal_: ; 0x020B7AB8 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 ldrh r4, [r1, #0x0] @@ -321,11 +313,10 @@ _020B7B28: ldmia sp!, {r4-r7,pc} .balign 4 _020B7B3C: .word 0xC00F0000 - arm_func_end FUN_020B7AB8 + arm_func_end releaseMdlTex_Internal_ - ; bindMdlTex_Internal_ - arm_func_start FUN_020B7B40 -FUN_020B7B40: ; 0x020B7B40 + arm_func_start bindMdlTex_Internal_ +bindMdlTex_Internal_: ; 0x020B7B40 stmdb sp!, {r4-r11,lr} sub sp, sp, #0xc mov r11, r1 @@ -401,11 +392,10 @@ _020B7C3C: .balign 4 _020B7C50: .word 0x0000FFFF _020B7C54: .word 0x000007FF - arm_func_end FUN_020B7B40 + arm_func_end bindMdlTex_Internal_ - ; _end - arm_func_start FUN_020B7C58 -FUN_020B7C58: ; 0x020B7C58 + arm_func_start NNS_G3dPlttReleasePlttKey +NNS_G3dPlttReleasePlttKey: ; 0x020B7C58 ldrh r2, [r0, #0x32] mov r1, #0x0 bic r2, r2, #0x1 @@ -414,11 +404,10 @@ FUN_020B7C58: ; 0x020B7C58 str r1, [r0, #0x2c] mov r0, r2 bx lr - arm_func_end FUN_020B7C58 + arm_func_end NNS_G3dPlttReleasePlttKey - ; NNS_G3dPlttLoad - arm_func_start FUN_020B7C78 -FUN_020B7C78: ; 0x020B7C78 + arm_func_start NNS_G3dPlttLoad +NNS_G3dPlttLoad: ; 0x020B7C78 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 movs r4, r1 @@ -446,26 +435,23 @@ _020B7C90: ldmia sp!, {r4-r5,pc} .balign 4 _020B7CD8: .word 0x0000FFFF - arm_func_end FUN_020B7C78 + arm_func_end NNS_G3dPlttLoad - ; _end - arm_func_start FUN_020B7CDC -FUN_020B7CDC: ; 0x020B7CDC + arm_func_start NNS_G3dPlttSetPlttKey +NNS_G3dPlttSetPlttKey: ; 0x020B7CDC str r1, [r0, #0x2c] bx lr - arm_func_end FUN_020B7CDC + arm_func_end NNS_G3dPlttSetPlttKey - ; _end - arm_func_start FUN_020B7CE4 -FUN_020B7CE4: ; 0x020B7CE4 + arm_func_start NNS_G3dPlttGetRequiredSize +NNS_G3dPlttGetRequiredSize: ; 0x020B7CE4 ldrh r0, [r0, #0x30] mov r0, r0, lsl #0x3 bx lr - arm_func_end FUN_020B7CE4 + arm_func_end NNS_G3dPlttGetRequiredSize - ; _end - arm_func_start FUN_020B7CF0 -FUN_020B7CF0: ; 0x020B7CF0 + arm_func_start NNS_G3dTexReleaseTexKey +NNS_G3dTexReleaseTexKey: ; 0x020B7CF0 ldrh r12, [r0, #0x10] mov r3, #0x0 bic r12, r12, #0x1 @@ -480,11 +466,10 @@ FUN_020B7CF0: ; 0x020B7CF0 str r1, [r2, #0x0] str r3, [r0, #0x18] bx lr - arm_func_end FUN_020B7CF0 + arm_func_end NNS_G3dTexReleaseTexKey - ; NNS_G3dTexLoad - arm_func_start FUN_020B7D28 -FUN_020B7D28: ; 0x020B7D28 + arm_func_start NNS_G3dTexLoad +NNS_G3dTexLoad: ; 0x020B7D28 stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4 movs r8, r1 @@ -542,53 +527,49 @@ _020B7DDC: .balign 4 _020B7DF4: .word 0x0000FFFF _020B7DF8: .word 0x0001FFFF - arm_func_end FUN_020B7D28 + arm_func_end NNS_G3dTexLoad - ; _end - arm_func_start FUN_020B7DFC -FUN_020B7DFC: ; 0x020B7DFC + arm_func_start NNS_G3dTexSetTexKey +NNS_G3dTexSetTexKey: ; 0x020B7DFC cmp r1, #0x0 strne r1, [r0, #0x8] cmp r2, #0x0 strne r2, [r0, #0x18] bx lr - arm_func_end FUN_020B7DFC + arm_func_end NNS_G3dTexSetTexKey - ; _end - arm_func_start FUN_020B7E10 -FUN_020B7E10: ; 0x020B7E10 + arm_func_start NNS_G3dTex4x4GetRequiredSize +NNS_G3dTex4x4GetRequiredSize: ; 0x020B7E10 ldrh r0, [r0, #0x1c] mov r0, r0, lsl #0x3 bx lr - arm_func_end FUN_020B7E10 + arm_func_end NNS_G3dTex4x4GetRequiredSize - ; _end - arm_func_start FUN_020B7E1C -FUN_020B7E1C: ; 0x020B7E1C + arm_func_start NNS_G3dTexGetRequiredSize +NNS_G3dTexGetRequiredSize: ; 0x020B7E1C ldrh r0, [r0, #0xc] mov r0, r0, lsl #0x3 bx lr - arm_func_end FUN_020B7E1C + arm_func_end NNS_G3dTexGetRequiredSize - ; _end - arm_func_start FUN_020B7E28 -FUN_020B7E28: ; 0x020B7E28 + arm_func_start NNS_G3dRenderObjRemoveAnmObj +NNS_G3dRenderObjRemoveAnmObj: ; 0x020B7E28 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 add r0, r5, #0x8 mov r4, r1 - bl FUN_020B7E88 + bl removeLink_ cmp r0, #0x0 bne _020B7E74 mov r1, r4 add r0, r5, #0x10 - bl FUN_020B7E88 + bl removeLink_ cmp r0, #0x0 bne _020B7E74 mov r1, r4 add r0, r5, #0x18 - bl FUN_020B7E88 + bl removeLink_ cmp r0, #0x0 addeq sp, sp, #0x4 ldmeqia sp!, {r4-r5,pc} @@ -598,11 +579,10 @@ _020B7E74: str r0, [r5, #0x0] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020B7E28 + arm_func_end NNS_G3dRenderObjRemoveAnmObj - ; _end - arm_func_start FUN_020B7E88 -FUN_020B7E88: ; 0x020B7E88 + arm_func_start removeLink_ +removeLink_: ; 0x020B7E88 ldr r2, [r0, #0x0] cmp r2, #0x0 moveq r0, #0x0 @@ -636,11 +616,10 @@ _020B7EE4: _020B7EF4: mov r0, #0x0 bx lr - arm_func_end FUN_020B7E88 + arm_func_end removeLink_ - ; _end - arm_func_start FUN_020B7EFC -FUN_020B7EFC: ; 0x020B7EFC + arm_func_start NNS_G3dRenderObjAddAnmObj +NNS_G3dRenderObjAddAnmObj: ; 0x020B7EFC stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r4, r1 @@ -657,33 +636,32 @@ FUN_020B7EFC: ; 0x020B7EFC ldmia sp!, {r4-r5,pc} _020B7F34: add r0, r5, #0x3c - bl FUN_020B7F88 + bl updateHintVec_ mov r1, r4 add r0, r5, #0x8 - bl FUN_020B7FF8 + bl addLink_ add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} _020B7F50: add r0, r5, #0x44 - bl FUN_020B7F88 + bl updateHintVec_ mov r1, r4 add r0, r5, #0x10 - bl FUN_020B7FF8 + bl addLink_ add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} _020B7F6C: add r0, r5, #0x4c - bl FUN_020B7F88 + bl updateHintVec_ mov r1, r4 add r0, r5, #0x18 - bl FUN_020B7FF8 + bl addLink_ add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020B7EFC + arm_func_end NNS_G3dRenderObjAddAnmObj - ; _end - arm_func_start FUN_020B7F88 -FUN_020B7F88: ; 0x020B7F88 + local_arm_func_start updateHintVec_ +updateHintVec_: ; 0x020B7F88 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 cmp r1, #0x0 @@ -715,11 +693,10 @@ _020B7FE4: bne _020B7FA4 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020B7F88 + arm_func_end updateHintVec_ - ; _end - arm_func_start FUN_020B7FF8 -FUN_020B7FF8: ; 0x020B7FF8 + arm_func_start addLink_ +addLink_: ; 0x020B7FF8 ldr r12, [r0, #0x0] cmp r12, #0x0 streq r1, [r0, #0x0] @@ -776,11 +753,10 @@ _020B809C: _020B80AC: str r1, [r12, #0x10] bx lr - arm_func_end FUN_020B7FF8 + arm_func_end addLink_ - ; NNS_G3dRenderObjInit - arm_func_start FUN_020B80B4 -FUN_020B80B4: ; 0x020B80B4 + arm_func_start NNS_G3dRenderObjInit +NNS_G3dRenderObjInit: ; 0x020B80B4 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 @@ -789,10 +765,10 @@ FUN_020B80B4: ; 0x020B80B4 mov r0, #0x0 mov r2, #0x54 bl MIi_CpuClear32 - ldr r0, _020B8104 ; =UNK_021065B4 - ldr r1, _020B8108 ; =UNK_021065B0 + ldr r0, _020B8104 ; =NNS_G3dFuncBlendMatDefault + ldr r1, _020B8108 ; =NNS_G3dFuncBlendJntDefault ldr r2, [r0, #0x0] - ldr r0, _020B810C ; =UNK_021065AC + ldr r0, _020B810C ; =NNS_G3dFuncBlendVisDefault str r2, [r5, #0xc] ldr r1, [r1, #0x0] str r1, [r5, #0x14] @@ -802,14 +778,13 @@ FUN_020B80B4: ; 0x020B80B4 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020B8104: .word UNK_021065B4 -_020B8108: .word UNK_021065B0 -_020B810C: .word UNK_021065AC - arm_func_end FUN_020B80B4 +_020B8104: .word NNS_G3dFuncBlendMatDefault +_020B8108: .word NNS_G3dFuncBlendJntDefault +_020B810C: .word NNS_G3dFuncBlendVisDefault + arm_func_end NNS_G3dRenderObjInit - ; NNS_G3dAnmObjInit - arm_func_start FUN_020B8110 -FUN_020B8110: ; 0x020B8110 + arm_func_start NNS_G3dAnmObjInit +NNS_G3dAnmObjInit: ; 0x020B8110 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r12, #0x0 @@ -820,14 +795,14 @@ FUN_020B8110: ; 0x020B8110 strb r4, [r0, #0x18] mov r4, #0x1000 str r4, [r0, #0x4] - ldr lr, _020B81A4 ; =UNK_02106594 + ldr lr, _020B81A4 ; =NNS_G3dAnmFmtNum str r3, [r0, #0x14] ldr r6, [lr, #0x0] cmp r6, #0x0 addls sp, sp, #0x4 ldmlsia sp!, {r4-r7,pc} ldrb r7, [r1, #0x0] - ldr r4, _020B81A8 ; =UNK_021065B8 + ldr r4, _020B81A8 ; =NNS_G3dAnmObjInitFuncArray _020B8158: ldrb r3, [r4, r12, lsl #0x3] mov r5, r12, lsl #0x3 @@ -838,7 +813,7 @@ _020B8158: ldrh r3, [r3, #0x2] cmp lr, r3 bne _020B8190 - ldr r3, _020B81AC ; =UNK_021065BC + ldr r3, _020B81AC ; =NNS_G3dAnmObjInitFuncArray + 0x4 ldr r3, [r3, r5] blx r3 add sp, sp, #0x4 @@ -850,14 +825,13 @@ _020B8190: add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020B81A4: .word UNK_02106594 -_020B81A8: .word UNK_021065B8 -_020B81AC: .word UNK_021065BC - arm_func_end FUN_020B8110 +_020B81A4: .word NNS_G3dAnmFmtNum +_020B81A8: .word NNS_G3dAnmObjInitFuncArray +_020B81AC: .word NNS_G3dAnmObjInitFuncArray + 0x4 + arm_func_end NNS_G3dAnmObjInit - ; _end - arm_func_start FUN_020B81B0 -FUN_020B81B0: ; 0x020B81B0 + arm_func_start NNS_G3dAnmObjCalcSizeRequired +NNS_G3dAnmObjCalcSizeRequired: ; 0x020B81B0 ldrb r0, [r0, #0x0] cmp r0, #0x4a beq _020B81E4 @@ -881,5 +855,4 @@ _020B81E4: _020B81F8: mov r0, #0x0 bx lr - arm_func_end FUN_020B81B0 - + arm_func_end NNS_G3dAnmObjCalcSizeRequired diff --git a/arm9/asm/NNS_G3D_maya.s b/arm9/asm/NNS_G3D_maya.s index d7d26b5c..7a675533 100644 --- a/arm9/asm/NNS_G3D_maya.s +++ b/arm9/asm/NNS_G3D_maya.s @@ -2,24 +2,20 @@ .include "global.inc" .section .data - - ; calcTexMtx_ - .global UNK_021067B0 -UNK_021067B0: ; 0x021067B0 - .word FUN_020BEBD8 - .word FUN_020BEB00 - .word FUN_020BEA84 - .word FUN_020BEA3C - .word FUN_020BE954 - .word FUN_020BE894 - .word FUN_020BE850 - .word FUN_020BE82C +calcTexMtx_: ; 0x021067B0 + .word texmtxCalc_flag_ + .word texmtxCalc_flagS_ + .word texmtxCalc_flagR_ + .word texmtxCalc_flagRS_ + .word texmtxCalc_flagT_ + .word texmtxCalc_flagTS_ + .word texmtxCalc_flagTR_ + .word texmtxCalc_flagTRS_ .section .text - ; NNSi_G3dSendTexSRTMaya - arm_func_start FUN_020BE6E4 -FUN_020BE6E4: ; 0x020BE6E4 + arm_func_start NNSi_G3dSendTexSRTMaya +NNSi_G3dSendTexSRTMaya: ; 0x020BE6E4 stmdb sp!, {r4,lr} sub sp, sp, #0x50 mov r4, r0 @@ -46,7 +42,7 @@ FUN_020BE6E4: ; 0x020BE6E4 str r1, [sp, #0x14] str r1, [sp, #0x10] ldr r1, [r4, #0x0] - ldr r0, _020BE828 ; =UNK_021067B0 + ldr r0, _020BE828 ; =calcTexMtx_ and r1, r1, #0x7 ldr r2, [r0, r1, lsl #0x2] add r0, sp, #0x8 @@ -98,18 +94,17 @@ _020BE804: ldr r0, [sp, #0x0] add r1, r1, #0x4 mov r2, #0x12 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add sp, sp, #0x50 ldmia sp!, {r4,pc} .balign 4 _020BE820: .word 0x00101610 _020BE824: .word 0x00101810 -_020BE828: .word UNK_021067B0 - arm_func_end FUN_020BE6E4 +_020BE828: .word calcTexMtx_ + arm_func_end NNSi_G3dSendTexSRTMaya - ; _end - arm_func_start FUN_020BE82C -FUN_020BE82C: ; 0x020BE82C + local_arm_func_start texmtxCalc_flagTRS_ +texmtxCalc_flagTRS_: ; 0x020BE82C mov r2, #0x1000 str r2, [r0, #0x0] mov r1, #0x0 @@ -119,11 +114,10 @@ FUN_020BE82C: ; 0x020BE82C str r1, [r0, #0x30] str r1, [r0, #0x34] bx lr - arm_func_end FUN_020BE82C + arm_func_end texmtxCalc_flagTRS_ - ; _end - arm_func_start FUN_020BE850 -FUN_020BE850: ; 0x020BE850 + local_arm_func_start texmtxCalc_flagTR_ +texmtxCalc_flagTR_: ; 0x020BE850 ldr r2, [r1, #0x18] mov r12, #0x0 str r2, [r0, #0x0] @@ -141,11 +135,10 @@ FUN_020BE850: ; 0x020BE850 str r1, [r0, #0x34] str r12, [r0, #0x10] bx lr - arm_func_end FUN_020BE850 + arm_func_end texmtxCalc_flagTR_ - ; _end - arm_func_start FUN_020BE894 -FUN_020BE894: ; 0x020BE894 + local_arm_func_start texmtxCalc_flagTS_ +texmtxCalc_flagTS_: ; 0x020BE894 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r5, r1 @@ -194,11 +187,10 @@ FUN_020BE894: ; 0x020BE894 str r0, [r6, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BE894 + arm_func_end texmtxCalc_flagTS_ - ; _end - arm_func_start FUN_020BE954 -FUN_020BE954: ; 0x020BE954 + local_arm_func_start texmtxCalc_flagT_ +texmtxCalc_flagT_: ; 0x020BE954 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4 mov r9, r1 @@ -257,11 +249,10 @@ FUN_020BE954: ; 0x020BE954 str r0, [r10, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020BE954 + arm_func_end texmtxCalc_flagT_ - ; _end - arm_func_start FUN_020BEA3C -FUN_020BEA3C: ; 0x020BEA3C + local_arm_func_start texmtxCalc_flagRS_ +texmtxCalc_flagRS_: ; 0x020BEA3C mov r2, #0x1000 str r2, [r0, #0x0] str r2, [r0, #0x14] @@ -280,11 +271,10 @@ FUN_020BEA3C: ; 0x020BEA3C str r1, [r0, #0x34] str r12, [r0, #0x10] bx lr - arm_func_end FUN_020BEA3C + arm_func_end texmtxCalc_flagRS_ - ; _end - arm_func_start FUN_020BEA84 -FUN_020BEA84: ; 0x020BEA84 + local_arm_func_start texmtxCalc_flagR_ +texmtxCalc_flagR_: ; 0x020BEA84 stmdb sp!, {r4,lr} ldr r3, [r1, #0x18] mov r2, #0x0 @@ -316,11 +306,10 @@ FUN_020BEA84: ; 0x020BEA84 str r1, [r0, #0x34] str r2, [r0, #0x10] ldmia sp!, {r4,pc} - arm_func_end FUN_020BEA84 + arm_func_end texmtxCalc_flagR_ - ; _end - arm_func_start FUN_020BEB00 -FUN_020BEB00: ; 0x020BEB00 + local_arm_func_start texmtxCalc_flagS_ +texmtxCalc_flagS_: ; 0x020BEB00 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r5, r1 @@ -375,11 +364,10 @@ FUN_020BEB00: ; 0x020BEB00 str r0, [r6, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BEB00 + arm_func_end texmtxCalc_flagS_ - ; _end - arm_func_start FUN_020BEBD8 -FUN_020BEBD8: ; 0x020BEBD8 + local_arm_func_start texmtxCalc_flag_ +texmtxCalc_flag_: ; 0x020BEBD8 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4 mov r9, r1 @@ -449,11 +437,10 @@ FUN_020BEBD8: ; 0x020BEBD8 str r0, [r10, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020BEBD8 + arm_func_end texmtxCalc_flag_ - ; NNSi_G3dGetJointScaleMaya - arm_func_start FUN_020BECEC -FUN_020BECEC: ; 0x020BECEC + arm_func_start NNSi_G3dGetJointScaleMaya +NNSi_G3dGetJointScaleMaya: ; 0x020BECEC stmdb sp!, {r4-r8,lr} mov r12, r0 ands r0, r3, #0x4 @@ -464,7 +451,7 @@ FUN_020BECEC: ; 0x020BECEC orr r0, r1, #0x1 str r0, [r12, #0x0] beq _020BEDB8 - ldr r0, _020BEE2C ; =UNK_021CEF7C + ldr r0, _020BEE2C ; =NNS_G3dRS ldrb r7, [r2, #0x1] ldr r0, [r0, #0x0] mov r1, #0x1 @@ -484,7 +471,7 @@ _020BED40: ldr r0, [r1, #0x8] str r0, [r12, #0xc] beq _020BEDB8 - ldr lr, _020BEE2C ; =UNK_021CEF7C + ldr lr, _020BEE2C ; =NNS_G3dRS ldrb r0, [r2, #0x1] ldr r4, [lr, #0x0] mov lr, #0x18 @@ -498,11 +485,11 @@ _020BED40: and r0, r6, r4 str r0, [r8, r7, lsl #0x2] ldr r4, [r1, #0xc] - ldr r0, _020BEE30 ; =UNK_021CFD8C - ldr lr, _020BEE34 ; =UNK_021CFD90 + ldr r0, _020BEE30 ; =NNS_G3dRSOnGlb + 0xE0C + ldr lr, _020BEE34 ; =NNS_G3dRSOnGlb + 0xE10 str r4, [r0, r5] ldr r4, [r1, #0x10] - ldr r0, _020BEE38 ; =UNK_021CFD94 + ldr r0, _020BEE38 ; =NNS_G3dRSOnGlb + 0xE14 str r4, [lr, r5] ldr r1, [r1, #0x14] str r1, [r0, r5] @@ -511,7 +498,7 @@ _020BEDB8: beq _020BEE1C ldrb r0, [r2, #0x2] ldr r2, [r12, #0x0] - ldr r1, _020BEE2C ; =UNK_021CEF7C + ldr r1, _020BEE2C ; =NNS_G3dRS orr r2, r2, #0x20 str r2, [r12, #0x0] ldr r2, [r1, #0x0] @@ -526,7 +513,7 @@ _020BEDB8: orrne r0, r0, #0x8 strne r0, [r12, #0x0] bne _020BEE1C - ldr r2, _020BEE30 ; =UNK_021CFD8C + ldr r2, _020BEE30 ; =NNS_G3dRSOnGlb + 0xE0C mov r1, #0x18 mla r1, r0, r1, r2 add r3, r12, #0x10 @@ -538,15 +525,14 @@ _020BEE1C: str r0, [r12, #0x0] ldmia sp!, {r4-r8,pc} .balign 4 -_020BEE2C: .word UNK_021CEF7C -_020BEE30: .word UNK_021CFD8C -_020BEE34: .word UNK_021CFD90 -_020BEE38: .word UNK_021CFD94 - arm_func_end FUN_020BECEC +_020BEE2C: .word NNS_G3dRS +_020BEE30: .word NNS_G3dRSOnGlb + 0xE0C +_020BEE34: .word NNS_G3dRSOnGlb + 0xE10 +_020BEE38: .word NNS_G3dRSOnGlb + 0xE14 + arm_func_end NNSi_G3dGetJointScaleMaya - ; _end - arm_func_start FUN_020BEE3C -FUN_020BEE3C: ; 0x020BEE3C + arm_func_start NNSi_G3dSendJointSRTMaya +NNSi_G3dSendJointSRTMaya: ; 0x020BEE3C stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 @@ -563,13 +549,13 @@ FUN_020BEE3C: ; 0x020BEE3C add r1, r5, #0x4c mov r0, #0x1c mov r2, #0x3 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N mov r4, #0x0 _020BEE84: add r1, r5, #0x10 mov r0, #0x1b mov r2, #0x3 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020BEE94: ldr r0, [r5, #0x0] ands r0, r0, #0x2 @@ -579,13 +565,13 @@ _020BEE94: add r1, r5, #0x28 mov r0, #0x19 mov r2, #0xc - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N b _020BEEE8 _020BEEBC: add r1, r5, #0x28 mov r0, #0x1a mov r2, #0x9 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N b _020BEEE8 _020BEED0: cmp r4, #0x0 @@ -593,7 +579,7 @@ _020BEED0: add r1, r5, #0x4c mov r0, #0x1c mov r2, #0x3 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020BEEE8: ldr r0, [r5, #0x0] ands r0, r0, #0x1 @@ -602,8 +588,7 @@ _020BEEE8: add r1, r5, #0x4 mov r0, #0x1b mov r2, #0x3 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020BEE3C - + arm_func_end NNSi_G3dSendJointSRTMaya diff --git a/arm9/asm/NNS_G3D_mem.s b/arm9/asm/NNS_G3D_mem.s index 97d2c224..e01336e5 100644 --- a/arm9/asm/NNS_G3D_mem.s +++ b/arm9/asm/NNS_G3D_mem.s @@ -3,26 +3,23 @@ .section .text - ; NNS_G3dFreeAnmObj - arm_func_start thunk_FUN_020ae84c -thunk_FUN_020ae84c: ; 0x020BB8C4 - ldr ip, _020BB8CC ; =FUN_020AE84C + arm_func_start NNS_G3dFreeAnmObj +NNS_G3dFreeAnmObj: ; 0x020BB8C4 + ldr ip, _020BB8CC ; =NNS_FndFreeToAllocator bx r12 .balign 4 -_020BB8CC: .word FUN_020AE84C - arm_func_end thunk_FUN_020ae84c +_020BB8CC: .word NNS_FndFreeToAllocator + arm_func_end NNS_G3dFreeAnmObj - ; _end - arm_func_start FUN_020BB8D0 -FUN_020BB8D0: ; 0x020BB8D0 + arm_func_start NNS_G3dAllocAnmObj +NNS_G3dAllocAnmObj: ; 0x020BB8D0 stmdb sp!, {r4,lr} mov r4, r0 mov r0, r1 mov r1, r2 - bl FUN_020B81B0 + bl NNS_G3dAnmObjCalcSizeRequired mov r1, r0 mov r0, r4 - bl FUN_020AE868 + bl NNS_FndAllocFromAllocator ldmia sp!, {r4,pc} - arm_func_end FUN_020BB8D0 - + arm_func_end NNS_G3dAllocAnmObj diff --git a/arm9/asm/NNS_G3D_model.s b/arm9/asm/NNS_G3D_model.s index 437290e8..958a9b8a 100644 --- a/arm9/asm/NNS_G3D_model.s +++ b/arm9/asm/NNS_G3D_model.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020BB8F4 -FUN_020BB8F4: ; 0x020BB8F4 + arm_func_start NNS_G3dMdlSetMdlXLDepthUpdateAll +NNS_G3dMdlSetMdlXLDepthUpdateAll: ; 0x020BB8F4 stmdb sp!, {r4-r6,lr} mov r6, r0 ldrb r0, [r6, #0x18] @@ -17,17 +16,16 @@ _020BB910: mov r0, r6 mov r1, r4 mov r2, r5 - bl FUN_020BBC74 + bl NNS_G3dMdlSetMdlXLDepthUpdate ldrb r0, [r6, #0x18] add r4, r4, #0x1 cmp r4, r0 blo _020BB910 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BB8F4 + arm_func_end NNS_G3dMdlSetMdlXLDepthUpdateAll - ; _end - arm_func_start FUN_020BB934 -FUN_020BB934: ; 0x020BB934 + arm_func_start NNS_G3dMdlSetMdlFarClipAll +NNS_G3dMdlSetMdlFarClipAll: ; 0x020BB934 stmdb sp!, {r4-r6,lr} mov r6, r0 ldrb r0, [r6, #0x18] @@ -39,17 +37,16 @@ _020BB950: mov r0, r6 mov r1, r4 mov r2, r5 - bl FUN_020BBCB8 + bl NNS_G3dMdlSetMdlFarClip ldrb r0, [r6, #0x18] add r4, r4, #0x1 cmp r4, r0 blo _020BB950 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BB934 + arm_func_end NNS_G3dMdlSetMdlFarClipAll - ; _end - arm_func_start FUN_020BB974 -FUN_020BB974: ; 0x020BB974 + arm_func_start NNS_G3dMdlSetMdl1DotAll +NNS_G3dMdlSetMdl1DotAll: ; 0x020BB974 stmdb sp!, {r4-r6,lr} mov r6, r0 ldrb r0, [r6, #0x18] @@ -61,17 +58,16 @@ _020BB990: mov r0, r6 mov r1, r4 mov r2, r5 - bl FUN_020BBCFC + bl NNS_G3dMdlSetMdl1Dot ldrb r0, [r6, #0x18] add r4, r4, #0x1 cmp r4, r0 blo _020BB990 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BB974 + arm_func_end NNS_G3dMdlSetMdl1DotAll - ; _end - arm_func_start FUN_020BB9B4 -FUN_020BB9B4: ; 0x020BB9B4 + arm_func_start NNS_G3dMdlSetMdlDepthTestCondAll +NNS_G3dMdlSetMdlDepthTestCondAll: ; 0x020BB9B4 stmdb sp!, {r4-r6,lr} mov r6, r0 ldrb r0, [r6, #0x18] @@ -83,17 +79,16 @@ _020BB9D0: mov r0, r6 mov r1, r4 mov r2, r5 - bl FUN_020BBD40 + bl NNS_G3dMdlSetMdlDepthTestCond ldrb r0, [r6, #0x18] add r4, r4, #0x1 cmp r4, r0 blo _020BB9D0 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BB9B4 + arm_func_end NNS_G3dMdlSetMdlDepthTestCondAll - ; _end - arm_func_start FUN_020BB9F4 -FUN_020BB9F4: ; 0x020BB9F4 + arm_func_start NNS_G3dMdlSetMdlFogEnableFlagAll +NNS_G3dMdlSetMdlFogEnableFlagAll: ; 0x020BB9F4 stmdb sp!, {r4-r6,lr} mov r6, r0 ldrb r0, [r6, #0x18] @@ -105,17 +100,16 @@ _020BBA10: mov r0, r6 mov r1, r4 mov r2, r5 - bl FUN_020BBD84 + bl NNS_G3dMdlSetMdlFogEnableFlag ldrb r0, [r6, #0x18] add r4, r4, #0x1 cmp r4, r0 blo _020BBA10 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BB9F4 + arm_func_end NNS_G3dMdlSetMdlFogEnableFlagAll - ; _end - arm_func_start FUN_020BBA34 -FUN_020BBA34: ; 0x020BBA34 + arm_func_start NNS_G3dMdlSetMdlAlphaAll +NNS_G3dMdlSetMdlAlphaAll: ; 0x020BBA34 stmdb sp!, {r4-r6,lr} mov r6, r0 ldrb r0, [r6, #0x18] @@ -127,17 +121,16 @@ _020BBA50: mov r0, r6 mov r1, r4 mov r2, r5 - bl FUN_020BBDC8 + bl NNS_G3dMdlSetMdlAlpha ldrb r0, [r6, #0x18] add r4, r4, #0x1 cmp r4, r0 blo _020BBA50 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBA34 + arm_func_end NNS_G3dMdlSetMdlAlphaAll - ; _end - arm_func_start FUN_020BBA74 -FUN_020BBA74: ; 0x020BBA74 + arm_func_start NNS_G3dMdlSetMdlPolygonIDAll +NNS_G3dMdlSetMdlPolygonIDAll: ; 0x020BBA74 stmdb sp!, {r4-r6,lr} mov r6, r0 ldrb r0, [r6, #0x18] @@ -149,17 +142,16 @@ _020BBA90: mov r0, r6 mov r1, r4 mov r2, r5 - bl FUN_020BBE0C + bl NNS_G3dMdlSetMdlPolygonID ldrb r0, [r6, #0x18] add r4, r4, #0x1 cmp r4, r0 blo _020BBA90 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBA74 + arm_func_end NNS_G3dMdlSetMdlPolygonIDAll - ; _end - arm_func_start FUN_020BBAB4 -FUN_020BBAB4: ; 0x020BBAB4 + arm_func_start NNS_G3dMdlSetMdlCullModeAll +NNS_G3dMdlSetMdlCullModeAll: ; 0x020BBAB4 stmdb sp!, {r4-r6,lr} mov r6, r0 ldrb r0, [r6, #0x18] @@ -171,17 +163,16 @@ _020BBAD0: mov r0, r6 mov r1, r4 mov r2, r5 - bl FUN_020BBE50 + bl NNS_G3dMdlSetMdlCullMode ldrb r0, [r6, #0x18] add r4, r4, #0x1 cmp r4, r0 blo _020BBAD0 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBAB4 + arm_func_end NNS_G3dMdlSetMdlCullModeAll - ; _end - arm_func_start FUN_020BBAF4 -FUN_020BBAF4: ; 0x020BBAF4 + arm_func_start NNS_G3dMdlSetMdlPolygonModeAll +NNS_G3dMdlSetMdlPolygonModeAll: ; 0x020BBAF4 stmdb sp!, {r4-r6,lr} mov r6, r0 ldrb r0, [r6, #0x18] @@ -193,17 +184,16 @@ _020BBB10: mov r0, r6 mov r1, r4 mov r2, r5 - bl FUN_020BBE94 + bl NNS_G3dMdlSetMdlPolygonMode ldrb r0, [r6, #0x18] add r4, r4, #0x1 cmp r4, r0 blo _020BBB10 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBAF4 + arm_func_end NNS_G3dMdlSetMdlPolygonModeAll - ; _end - arm_func_start FUN_020BBB34 -FUN_020BBB34: ; 0x020BBB34 + arm_func_start NNS_G3dMdlSetMdlLightEnableFlagAll +NNS_G3dMdlSetMdlLightEnableFlagAll: ; 0x020BBB34 stmdb sp!, {r4-r6,lr} mov r6, r0 ldrb r0, [r6, #0x18] @@ -215,17 +205,16 @@ _020BBB50: mov r0, r6 mov r1, r4 mov r2, r5 - bl FUN_020BBED8 + bl NNS_G3dMdlSetMdlLightEnableFlag ldrb r0, [r6, #0x18] add r4, r4, #0x1 cmp r4, r0 blo _020BBB50 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBB34 + arm_func_end NNS_G3dMdlSetMdlLightEnableFlagAll - ; _end - arm_func_start FUN_020BBB74 -FUN_020BBB74: ; 0x020BBB74 + arm_func_start NNS_G3dMdlSetMdlEmiAll +NNS_G3dMdlSetMdlEmiAll: ; 0x020BBB74 stmdb sp!, {r4-r6,lr} mov r6, r0 ldrb r0, [r6, #0x18] @@ -237,17 +226,16 @@ _020BBB90: mov r0, r6 mov r1, r4 mov r2, r5 - bl FUN_020BBF1C + bl NNS_G3dMdlSetMdlEmi ldrb r0, [r6, #0x18] add r4, r4, #0x1 cmp r4, r0 blo _020BBB90 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBB74 + arm_func_end NNS_G3dMdlSetMdlEmiAll - ; _end - arm_func_start FUN_020BBBB4 -FUN_020BBBB4: ; 0x020BBBB4 + arm_func_start NNS_G3dMdlSetMdlSpecAll +NNS_G3dMdlSetMdlSpecAll: ; 0x020BBBB4 stmdb sp!, {r4-r6,lr} mov r6, r0 ldrb r0, [r6, #0x18] @@ -259,17 +247,16 @@ _020BBBD0: mov r0, r6 mov r1, r4 mov r2, r5 - bl FUN_020BBF60 + bl NNS_G3dMdlSetMdlSpec ldrb r0, [r6, #0x18] add r4, r4, #0x1 cmp r4, r0 blo _020BBBD0 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBBB4 + arm_func_end NNS_G3dMdlSetMdlSpecAll - ; _end - arm_func_start FUN_020BBBF4 -FUN_020BBBF4: ; 0x020BBBF4 + arm_func_start NNS_G3dMdlSetMdlAmbAll +NNS_G3dMdlSetMdlAmbAll: ; 0x020BBBF4 stmdb sp!, {r4-r6,lr} mov r6, r0 ldrb r0, [r6, #0x18] @@ -281,17 +268,16 @@ _020BBC10: mov r0, r6 mov r1, r4 mov r2, r5 - bl FUN_020BBFA4 + bl NNS_G3dMdlSetMdlAmb ldrb r0, [r6, #0x18] add r4, r4, #0x1 cmp r4, r0 blo _020BBC10 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBBF4 + arm_func_end NNS_G3dMdlSetMdlAmbAll - ; _end - arm_func_start FUN_020BBC34 -FUN_020BBC34: ; 0x020BBC34 + arm_func_start NNS_G3dMdlSetMdlDiffAll +NNS_G3dMdlSetMdlDiffAll: ; 0x020BBC34 stmdb sp!, {r4-r6,lr} mov r6, r0 ldrb r0, [r6, #0x18] @@ -303,17 +289,16 @@ _020BBC50: mov r0, r6 mov r1, r4 mov r2, r5 - bl FUN_020BBFE8 + bl NNS_G3dMdlSetMdlDiff ldrb r0, [r6, #0x18] add r4, r4, #0x1 cmp r4, r0 blo _020BBC50 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BBC34 + arm_func_end NNS_G3dMdlSetMdlDiffAll - ; _end - arm_func_start FUN_020BBC74 -FUN_020BBC74: ; 0x020BBC74 + arm_func_start NNS_G3dMdlSetMdlXLDepthUpdate +NNS_G3dMdlSetMdlXLDepthUpdate: ; 0x020BBC74 ldr r3, [r0, #0x8] cmp r2, #0x0 add r12, r0, r3 @@ -331,11 +316,10 @@ FUN_020BBC74: ; 0x020BBC74 biceq r0, r0, #0x800 streq r0, [r1, #0xc] bx lr - arm_func_end FUN_020BBC74 + arm_func_end NNS_G3dMdlSetMdlXLDepthUpdate - ; _end - arm_func_start FUN_020BBCB8 -FUN_020BBCB8: ; 0x020BBCB8 + arm_func_start NNS_G3dMdlSetMdlFarClip +NNS_G3dMdlSetMdlFarClip: ; 0x020BBCB8 ldr r3, [r0, #0x8] cmp r2, #0x0 add r12, r0, r3 @@ -353,11 +337,10 @@ FUN_020BBCB8: ; 0x020BBCB8 biceq r0, r0, #0x1000 streq r0, [r1, #0xc] bx lr - arm_func_end FUN_020BBCB8 + arm_func_end NNS_G3dMdlSetMdlFarClip - ; _end - arm_func_start FUN_020BBCFC -FUN_020BBCFC: ; 0x020BBCFC + arm_func_start NNS_G3dMdlSetMdl1Dot +NNS_G3dMdlSetMdl1Dot: ; 0x020BBCFC ldr r3, [r0, #0x8] cmp r2, #0x0 add r12, r0, r3 @@ -375,11 +358,10 @@ FUN_020BBCFC: ; 0x020BBCFC biceq r0, r0, #0x2000 streq r0, [r1, #0xc] bx lr - arm_func_end FUN_020BBCFC + arm_func_end NNS_G3dMdlSetMdl1Dot - ; _end - arm_func_start FUN_020BBD40 -FUN_020BBD40: ; 0x020BBD40 + arm_func_start NNS_G3dMdlSetMdlDepthTestCond +NNS_G3dMdlSetMdlDepthTestCond: ; 0x020BBD40 ldr r3, [r0, #0x8] cmp r2, #0x0 add r12, r0, r3 @@ -397,11 +379,10 @@ FUN_020BBD40: ; 0x020BBD40 biceq r0, r0, #0x4000 streq r0, [r1, #0xc] bx lr - arm_func_end FUN_020BBD40 + arm_func_end NNS_G3dMdlSetMdlDepthTestCond - ; _end - arm_func_start FUN_020BBD84 -FUN_020BBD84: ; 0x020BBD84 + arm_func_start NNS_G3dMdlSetMdlFogEnableFlag +NNS_G3dMdlSetMdlFogEnableFlag: ; 0x020BBD84 ldr r3, [r0, #0x8] cmp r2, #0x0 add r12, r0, r3 @@ -419,11 +400,10 @@ FUN_020BBD84: ; 0x020BBD84 biceq r0, r0, #0x8000 streq r0, [r1, #0xc] bx lr - arm_func_end FUN_020BBD84 + arm_func_end NNS_G3dMdlSetMdlFogEnableFlag - ; _end - arm_func_start FUN_020BBDC8 -FUN_020BBDC8: ; 0x020BBDC8 + arm_func_start NNS_G3dMdlSetMdlAlpha +NNS_G3dMdlSetMdlAlpha: ; 0x020BBDC8 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r3, [r0, #0x8] @@ -441,11 +421,10 @@ FUN_020BBDC8: ; 0x020BBDC8 str r0, [r1, #0xc] add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020BBDC8 + arm_func_end NNS_G3dMdlSetMdlAlpha - ; _end - arm_func_start FUN_020BBE0C -FUN_020BBE0C: ; 0x020BBE0C + arm_func_start NNS_G3dMdlSetMdlPolygonID +NNS_G3dMdlSetMdlPolygonID: ; 0x020BBE0C stmdb sp!, {lr} sub sp, sp, #0x4 ldr r3, [r0, #0x8] @@ -463,11 +442,10 @@ FUN_020BBE0C: ; 0x020BBE0C str r0, [r1, #0xc] add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020BBE0C + arm_func_end NNS_G3dMdlSetMdlPolygonID - ; _end - arm_func_start FUN_020BBE50 -FUN_020BBE50: ; 0x020BBE50 + arm_func_start NNS_G3dMdlSetMdlCullMode +NNS_G3dMdlSetMdlCullMode: ; 0x020BBE50 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r3, [r0, #0x8] @@ -485,11 +463,10 @@ FUN_020BBE50: ; 0x020BBE50 str r0, [r1, #0xc] add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020BBE50 + arm_func_end NNS_G3dMdlSetMdlCullMode - ; _end - arm_func_start FUN_020BBE94 -FUN_020BBE94: ; 0x020BBE94 + arm_func_start NNS_G3dMdlSetMdlPolygonMode +NNS_G3dMdlSetMdlPolygonMode: ; 0x020BBE94 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r3, [r0, #0x8] @@ -507,11 +484,10 @@ FUN_020BBE94: ; 0x020BBE94 str r0, [r1, #0xc] add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020BBE94 + arm_func_end NNS_G3dMdlSetMdlPolygonMode - ; _end - arm_func_start FUN_020BBED8 -FUN_020BBED8: ; 0x020BBED8 + arm_func_start NNS_G3dMdlSetMdlLightEnableFlag +NNS_G3dMdlSetMdlLightEnableFlag: ; 0x020BBED8 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r3, [r0, #0x8] @@ -529,11 +505,10 @@ FUN_020BBED8: ; 0x020BBED8 str r0, [r1, #0xc] add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020BBED8 + arm_func_end NNS_G3dMdlSetMdlLightEnableFlag - ; NNS_G3dMdlSetMdlEmi - arm_func_start FUN_020BBF1C -FUN_020BBF1C: ; 0x020BBF1C + arm_func_start NNS_G3dMdlSetMdlEmi +NNS_G3dMdlSetMdlEmi: ; 0x020BBF1C stmdb sp!, {r4,lr} ldr r12, [r0, #0x8] ldr r3, _020BBF5C ; =0x8000FFFF @@ -552,11 +527,10 @@ FUN_020BBF1C: ; 0x020BBF1C ldmia sp!, {r4,pc} .balign 4 _020BBF5C: .word 0x8000FFFF - arm_func_end FUN_020BBF1C + arm_func_end NNS_G3dMdlSetMdlEmi - ; _end - arm_func_start FUN_020BBF60 -FUN_020BBF60: ; 0x020BBF60 + arm_func_start NNS_G3dMdlSetMdlSpec +NNS_G3dMdlSetMdlSpec: ; 0x020BBF60 stmdb sp!, {r4,lr} ldr r12, [r0, #0x8] mov r3, #0x8000 @@ -574,11 +548,10 @@ FUN_020BBF60: ; 0x020BBF60 orr r0, r0, r2 str r0, [r3, #0x8] ldmia sp!, {r4,pc} - arm_func_end FUN_020BBF60 + arm_func_end NNS_G3dMdlSetMdlSpec - ; NNS_G3dMdlSetMdlAmb - arm_func_start FUN_020BBFA4 -FUN_020BBFA4: ; 0x020BBFA4 + arm_func_start NNS_G3dMdlSetMdlAmb +NNS_G3dMdlSetMdlAmb: ; 0x020BBFA4 stmdb sp!, {r4,lr} ldr r12, [r0, #0x8] ldr r3, _020BBFE4 ; =0x8000FFFF @@ -597,11 +570,10 @@ FUN_020BBFA4: ; 0x020BBFA4 ldmia sp!, {r4,pc} .balign 4 _020BBFE4: .word 0x8000FFFF - arm_func_end FUN_020BBFA4 + arm_func_end NNS_G3dMdlSetMdlAmb - ; _end - arm_func_start FUN_020BBFE8 -FUN_020BBFE8: ; 0x020BBFE8 + arm_func_start NNS_G3dMdlSetMdlDiff +NNS_G3dMdlSetMdlDiff: ; 0x020BBFE8 stmdb sp!, {r4,lr} ldr r12, [r0, #0x8] mov r3, #0x8000 @@ -619,11 +591,10 @@ FUN_020BBFE8: ; 0x020BBFE8 orr r0, r0, r2 str r0, [r3, #0x4] ldmia sp!, {r4,pc} - arm_func_end FUN_020BBFE8 + arm_func_end NNS_G3dMdlSetMdlDiff - ; _end - arm_func_start FUN_020BC02C -FUN_020BC02C: ; 0x020BC02C + arm_func_start NNSi_G3dModifyPolygonAttrMask +NNSi_G3dModifyPolygonAttrMask: ; 0x020BC02C stmdb sp!, {r4-r6,lr} ldrb r4, [r0, #0x18] ldr r3, [r0, #0x8] @@ -651,11 +622,10 @@ _020BC050: cmp lr, r4 blo _020BC050 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BC02C + arm_func_end NNSi_G3dModifyPolygonAttrMask - ; _end - arm_func_start FUN_020BC094 -FUN_020BC094: ; 0x020BC094 + arm_func_start NNSi_G3dModifyMatFlag +NNSi_G3dModifyMatFlag: ; 0x020BC094 stmdb sp!, {r4-r6,lr} ldrb r4, [r0, #0x18] ldr r3, [r0, #0x8] @@ -683,5 +653,4 @@ _020BC0B8: cmp lr, r4 blo _020BC0B8 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BC094 - + arm_func_end NNSi_G3dModifyMatFlag diff --git a/arm9/asm/NNS_G3D_nsbca.s b/arm9/asm/NNS_G3D_nsbca.s index b8835362..a29deb70 100644 --- a/arm9/asm/NNS_G3D_nsbca.s +++ b/arm9/asm/NNS_G3D_nsbca.s @@ -3,9 +3,8 @@ .section .rodata - ; pivotUtil_ - .global UNK_020FFA14 -UNK_020FFA14: ; 0x020FFA14 + .global pivotUtil_ +pivotUtil_: ; 0x020FFA14 .byte 0x04, 0x05, 0x07, 0x08 .byte 0x03, 0x05, 0x06, 0x08 .byte 0x03, 0x04, 0x06, 0x07 @@ -18,9 +17,8 @@ UNK_020FFA14: ; 0x020FFA14 .section .text - ; getRotDataByIdx_ - arm_func_start FUN_020BC500 -FUN_020BC500: ; 0x020BC500 + arm_func_start getRotDataByIdx_ +getRotDataByIdx_: ; 0x020BC500 stmdb sp!, {r4,lr} ands r4, r3, #0x8000 beq _020BC5E0 @@ -57,21 +55,21 @@ FUN_020BC500: ; 0x020BC500 rsbne lr, lr, #0x0 moveq lr, #0x1000 str lr, [r0, r1, lsl #0x2] - ldr r4, _020BC688 ; =UNK_020FFA14 - ldr lr, _020BC68C ; =UNK_020FFA14 + 1 + ldr r4, _020BC688 ; =pivotUtil_ + ldr lr, _020BC68C ; =pivotUtil_ + 1 ldrb r4, [r4, r1, lsl #0x2] str r12, [r0, r4, lsl #0x2] ldrb lr, [lr, r1, lsl #0x2] str r3, [r0, lr, lsl #0x2] ldrsh lr, [r2, #0x0] ands lr, lr, #0x20 - ldr lr, _020BC690 ; =UNK_020FFA14 + 2 + ldr lr, _020BC690 ; =pivotUtil_ + 2 rsbne r3, r3, #0x0 ldrb lr, [lr, r1, lsl #0x2] str r3, [r0, lr, lsl #0x2] ldrsh r2, [r2, #0x0] ands r2, r2, #0x40 - ldr r2, _020BC694 ; =UNK_020FFA14 + 3 + ldr r2, _020BC694 ; =pivotUtil_ + 3 rsbne r12, r12, #0x0 ldrb r1, [r2, r1, lsl #0x2] str r12, [r0, r1, lsl #0x2] @@ -121,15 +119,14 @@ _020BC5E0: ldmia sp!, {r4,pc} .balign 4 _020BC684: .word 0x00007FFF -_020BC688: .word UNK_020FFA14 -_020BC68C: .word UNK_020FFA14 + 1 -_020BC690: .word UNK_020FFA14 + 2 -_020BC694: .word UNK_020FFA14 + 3 - arm_func_end FUN_020BC500 +_020BC688: .word pivotUtil_ +_020BC68C: .word pivotUtil_ + 1 +_020BC690: .word pivotUtil_ + 2 +_020BC694: .word pivotUtil_ + 3 + arm_func_end getRotDataByIdx_ - ; getRotDataEx_ - arm_func_start FUN_020BC698 -FUN_020BC698: ; 0x020BC698 + arm_func_start getRotDataEx_ +getRotDataEx_: ; 0x020BC698 stmdb sp!, {r4-r10,lr} sub sp, sp, #0x48 ldrh r4, [r3, #0x4] @@ -162,7 +159,7 @@ _020BC6F0: mov r0, r6 mov r1, r5 mov r2, r4 - bl FUN_020BC500 + bl getRotDataByIdx_ cmp r0, #0x0 addeq sp, sp, #0x48 ldmeqia sp!, {r4-r10,pc} @@ -231,14 +228,14 @@ _020BC800: add r0, sp, #0x0 mov r1, r5 mov r2, r4 - bl FUN_020BC500 + bl getRotDataByIdx_ mov r1, r7, lsl #0x1 ldrh r3, [r8, r1] orr r7, r0, #0x0 add r0, sp, #0x24 mov r1, r5 mov r2, r4 - bl FUN_020BC500 + bl getRotDataByIdx_ ldr r3, [sp, #0x0] ldr r1, [sp, #0x24] mul r2, r3, r9 @@ -345,11 +342,10 @@ _020BC9C4: .word 0x1FFF0000 _020BC9C8: .word 0x00001FFF _020BC9CC: .word 0x00003FFF _020BC9D0: .word 0x00000FFF - arm_func_end FUN_020BC698 + arm_func_end getRotDataEx_ - ; getRotData_ - arm_func_start FUN_020BC9D4 -FUN_020BC9D4: ; 0x020BC9D4 + arm_func_start getRotData_ +getRotData_: ; 0x020BC9D4 stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4c ldr r5, [r3, #0xc] @@ -398,14 +394,14 @@ _020BCA44: mov r1, r5 mov r2, r4 mov r7, #0x0 - bl FUN_020BC500 + bl getRotDataByIdx_ mov r1, r9, lsl #0x1 ldrh r3, [r8, r1] orr r7, r7, r0 add r0, sp, #0x0 mov r1, r5 mov r2, r4 - bl FUN_020BC500 + bl getRotDataByIdx_ ldr r3, [sp, #0x0] ldr r1, [r6, #0x0] mov r2, #0x3 @@ -494,14 +490,14 @@ _020BCBE8: mov r0, r6 mov r1, r5 mov r2, r4 - bl FUN_020BC500 + bl getRotDataByIdx_ add r1, r8, r7, lsl #0x1 ldrh r3, [r1, #0x2] orr r7, r0, #0x0 add r0, sp, #0x24 mov r1, r5 mov r2, r4 - bl FUN_020BC500 + bl getRotDataByIdx_ ldr r2, [r6, #0x0] ldr r1, [sp, #0x24] orr r7, r7, r0 @@ -582,7 +578,7 @@ _020BCD40: mov r0, r6 mov r1, r5 mov r2, r4 - bl FUN_020BC500 + bl getRotDataByIdx_ cmp r0, #0x0 addeq sp, sp, #0x4c ldmeqia sp!, {r4-r9,pc} @@ -611,11 +607,10 @@ _020BCD40: ldmia sp!, {r4-r9,pc} .balign 4 _020BCDC0: .word 0x1FFF0000 - arm_func_end FUN_020BC9D4 + arm_func_end getRotData_ - ; getScaleDataEx_ - arm_func_start FUN_020BCDC4 -FUN_020BCDC4: ; 0x020BCDC4 + arm_func_start getScaleDataEx_ +getScaleDataEx_: ; 0x020BCDC4 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 ldrh r4, [r3, #0x4] @@ -732,11 +727,10 @@ _020BCF60: .word 0x1FFF0000 _020BCF64: .word 0x00001FFF _020BCF68: .word 0x00003FFF _020BCF6C: .word 0x00000FFF - arm_func_end FUN_020BCDC4 + arm_func_end getScaleDataEx_ - ; getScaleData_ - arm_func_start FUN_020BCF70 -FUN_020BCF70: ; 0x020BCF70 + arm_func_start getScaleData_ +getScaleData_: ; 0x020BCF70 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 ldr r4, [r2, #0x4] @@ -880,11 +874,10 @@ _020BD150: ldmia sp!, {r4-r5,pc} .balign 4 _020BD184: .word 0x1FFF0000 - arm_func_end FUN_020BCF70 + arm_func_end getScaleData_ - ; getTransDataEx_ - arm_func_start FUN_020BD188 -FUN_020BD188: ; 0x020BD188 + arm_func_start getTransDataEx_ +getTransDataEx_: ; 0x020BD188 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 ldrh r4, [r3, #0x4] @@ -984,11 +977,10 @@ _020BD2E8: .word 0x00000FFF _020BD2EC: .word 0x1FFF0000 _020BD2F0: .word 0x00001FFF _020BD2F4: .word 0x00003FFF - arm_func_end FUN_020BD188 + arm_func_end getTransDataEx_ - ; getTransData_ - arm_func_start FUN_020BD2F8 -FUN_020BD2F8: ; 0x020BD2F8 + arm_func_start getTransData_ +getTransData_: ; 0x020BD2F8 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r12, [r2, #0x4] @@ -1092,11 +1084,10 @@ _020BD44C: ldmia sp!, {pc} .balign 4 _020BD46C: .word 0x1FFF0000 - arm_func_end FUN_020BD2F8 + arm_func_end getTransData_ - ; getJntSRTAnmResult_ - arm_func_start FUN_020BD470 -FUN_020BD470: ; 0x020BD470 + arm_func_start getJntSRTAnmResult_ +getJntSRTAnmResult_: ; 0x020BD470 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x34 mov r9, r0 @@ -1133,14 +1124,14 @@ _020BD4C8: mov r2, r4 mov r3, r9 add r0, r7, #0x4c - bl FUN_020BD188 + bl getTransDataEx_ b _020BD514 _020BD500: mov r1, r8 mov r2, r4 mov r3, r9 add r0, r7, #0x4c - bl FUN_020BD2F8 + bl getTransData_ _020BD514: add r4, r4, #0x8 b _020BD524 @@ -1156,14 +1147,14 @@ _020BD524: mov r2, r4 mov r3, r9 add r0, r7, #0x50 - bl FUN_020BD188 + bl getTransDataEx_ b _020BD560 _020BD54C: mov r1, r8 mov r2, r4 mov r3, r9 add r0, r7, #0x50 - bl FUN_020BD2F8 + bl getTransData_ _020BD560: add r4, r4, #0x8 b _020BD570 @@ -1179,14 +1170,14 @@ _020BD570: mov r2, r4 mov r3, r9 add r0, r7, #0x54 - bl FUN_020BD188 + bl getTransDataEx_ b _020BD5AC _020BD598: mov r1, r8 mov r2, r4 mov r3, r9 add r0, r7, #0x54 - bl FUN_020BD2F8 + bl getTransData_ _020BD5AC: add r4, r4, #0x8 b _020BD5DC @@ -1201,7 +1192,7 @@ _020BD5C0: strne r0, [r7, #0x0] bne _020BD5DC mov r0, r7 - bl FUN_020BDA08 + bl getMdlTrans_ _020BD5DC: ands r0, r5, #0xc0 bne _020BD6A8 @@ -1213,14 +1204,14 @@ _020BD5DC: mov r2, r4 mov r3, r9 add r0, r7, #0x28 - bl FUN_020BC698 + bl getRotDataEx_ b _020BD620 _020BD60C: mov r1, r8 mov r2, r4 mov r3, r9 add r0, r7, #0x28 - bl FUN_020BC9D4 + bl getRotData_ _020BD620: add r4, r4, #0x8 b _020BD6C4 @@ -1231,7 +1222,7 @@ _020BD628: add r0, r7, #0x28 add r1, r9, r1 add r2, r9, r2 - bl FUN_020BC500 + bl getRotDataByIdx_ cmp r0, #0x0 beq _020BD6A0 ldr r12, [r7, #0x3c] @@ -1265,7 +1256,7 @@ _020BD6A8: strne r0, [r7, #0x0] bne _020BD6C4 mov r0, r7 - bl FUN_020BD850 + bl getMdlRot_ _020BD6C4: ands r0, r5, #0x600 bne _020BD7F0 @@ -1277,14 +1268,14 @@ _020BD6C4: mov r1, r8 mov r2, r4 mov r3, r9 - bl FUN_020BCDC4 + bl getScaleDataEx_ b _020BD708 _020BD6F4: add r0, sp, #0x0 mov r1, r8 mov r2, r4 mov r3, r9 - bl FUN_020BCF70 + bl getScaleData_ _020BD708: ldr r1, [sp, #0x0] ldr r0, [sp, #0x4] @@ -1305,14 +1296,14 @@ _020BD72C: mov r1, r8 mov r3, r9 add r2, r4, #0x8 - bl FUN_020BCDC4 + bl getScaleDataEx_ b _020BD768 _020BD754: add r0, sp, #0x8 mov r1, r8 mov r3, r9 add r2, r4, #0x8 - bl FUN_020BCF70 + bl getScaleData_ _020BD768: ldr r1, [sp, #0x8] ldr r0, [sp, #0xc] @@ -1333,14 +1324,14 @@ _020BD78C: mov r1, r8 mov r3, r9 add r2, r4, #0x10 - bl FUN_020BCDC4 + bl getScaleDataEx_ b _020BD7C8 _020BD7B4: add r0, sp, #0x10 mov r1, r8 mov r3, r9 add r2, r4, #0x10 - bl FUN_020BCF70 + bl getScaleData_ _020BD7C8: ldr r1, [sp, #0x10] ldr r0, [sp, #0x14] @@ -1360,14 +1351,14 @@ _020BD7F0: strne r0, [r7, #0x0] bne _020BD814 mov r0, r7 - bl FUN_020BD9A4 + bl getMdlScale_ add sp, sp, #0x34 ldmia sp!, {r4-r11,pc} _020BD814: ldr r0, [r7, #0x0] add r1, sp, #0x18 ands r0, r0, #0x1 - ldr r0, _020BD84C ; =UNK_021CEF7C + ldr r0, _020BD84C ; =NNS_G3dRS movne r3, #0x4 ldr r4, [r0, #0x0] moveq r3, #0x0 @@ -1379,14 +1370,13 @@ _020BD814: ldmia sp!, {r4-r11,pc} .balign 4 _020BD848: .word 0x00000FFF -_020BD84C: .word UNK_021CEF7C - arm_func_end FUN_020BD470 +_020BD84C: .word NNS_G3dRS + arm_func_end getJntSRTAnmResult_ - ; getMdlRot_ - arm_func_start FUN_020BD850 -FUN_020BD850: ; 0x020BD850 + arm_func_start getMdlRot_ +getMdlRot_: ; 0x020BD850 stmdb sp!, {r4-r8,lr} - ldr r1, _020BD990 ; =UNK_021CEF7C + ldr r1, _020BD990 ; =NNS_G3dRS mov r8, r0 ldr r0, [r1, #0x0] ldr r3, [r0, #0xd4] @@ -1418,10 +1408,10 @@ FUN_020BD850: ; 0x020BD850 movne r0, #0x1000 rsbne r2, r0, #0x0 moveq r2, #0x1000 - ldr r0, _020BD994 ; =UNK_020FFA14 + ldr r0, _020BD994 ; =pivotUtil_ str r2, [r1, #0x28] ldrb r1, [r0, r5, lsl #0x2] - ldr r0, _020BD998 ; =UNK_020FFA14 + 1 + ldr r0, _020BD998 ; =pivotUtil_ + 1 add r1, r8, r1, lsl #0x2 str r7, [r1, #0x28] ldrb r0, [r0, r5, lsl #0x2] @@ -1429,14 +1419,14 @@ FUN_020BD850: ; 0x020BD850 str r6, [r0, #0x28] ldrh r0, [r4, #0x0] ands r0, r0, #0x200 - ldr r0, _020BD99C ; =UNK_020FFA14 + 2 + ldr r0, _020BD99C ; =pivotUtil_ + 2 rsbne r6, r6, #0x0 ldrb r0, [r0, r5, lsl #0x2] add r0, r8, r0, lsl #0x2 str r6, [r0, #0x28] ldrh r0, [r4, #0x0] ands r0, r0, #0x400 - ldr r0, _020BD9A0 ; =UNK_020FFA14 + 3 + ldr r0, _020BD9A0 ; =pivotUtil_ + 3 rsbne r7, r7, #0x0 ldrb r0, [r0, r5, lsl #0x2] add r0, r8, r0, lsl #0x2 @@ -1468,18 +1458,17 @@ _020BD980: str r0, [r8, #0x0] ldmia sp!, {r4-r8,pc} .balign 4 -_020BD990: .word UNK_021CEF7C -_020BD994: .word UNK_020FFA14 -_020BD998: .word UNK_020FFA14 + 1 -_020BD99C: .word UNK_020FFA14 + 2 -_020BD9A0: .word UNK_020FFA14 + 3 - arm_func_end FUN_020BD850 +_020BD990: .word NNS_G3dRS +_020BD994: .word pivotUtil_ +_020BD998: .word pivotUtil_ + 1 +_020BD99C: .word pivotUtil_ + 2 +_020BD9A0: .word pivotUtil_ + 3 + arm_func_end getMdlRot_ - ; getMdlScale_ - arm_func_start FUN_020BD9A4 -FUN_020BD9A4: ; 0x020BD9A4 + arm_func_start getMdlScale_ +getMdlScale_: ; 0x020BD9A4 stmdb sp!, {r4,lr} - ldr r1, _020BDA04 ; =UNK_021CEF7C + ldr r1, _020BDA04 ; =NNS_G3dRS ldr r12, [r1, #0x0] ldr r4, [r12, #0xd4] ldr r2, [r12, #0x0] @@ -1504,13 +1493,12 @@ _020BD9F8: blx r12 ldmia sp!, {r4,pc} .balign 4 -_020BDA04: .word UNK_021CEF7C - arm_func_end FUN_020BD9A4 +_020BDA04: .word NNS_G3dRS + arm_func_end getMdlScale_ - ; getMdlTrans_ - arm_func_start FUN_020BDA08 -FUN_020BDA08: ; 0x020BDA08 - ldr r1, _020BDA6C ; =UNK_021CEF7C + arm_func_start getMdlTrans_ +getMdlTrans_: ; 0x020BDA08 + ldr r1, _020BDA6C ; =NNS_G3dRS ldr r1, [r1, #0x0] ldr r12, [r1, #0xd4] ldr r1, [r1, #0x0] @@ -1536,12 +1524,11 @@ FUN_020BDA08: ; 0x020BDA08 str r1, [r0, #0x54] bx lr .balign 4 -_020BDA6C: .word UNK_021CEF7C - arm_func_end FUN_020BDA08 +_020BDA6C: .word NNS_G3dRS + arm_func_end getMdlTrans_ - ; _end - arm_func_start FUN_020BDA70 -FUN_020BDA70: ; 0x020BDA70 + arm_func_start NNSi_G3dAnmCalcNsBca +NNSi_G3dAnmCalcNsBca: ; 0x020BDA70 stmdb sp!, {lr} sub sp, sp, #0x4 mov r3, r0 @@ -1557,19 +1544,18 @@ FUN_020BDA70: ; 0x020BDA70 _020BDAA0: mov r1, r2 mov r2, r12 - bl FUN_020BD470 + bl getJntSRTAnmResult_ add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020BDA70 + arm_func_end NNSi_G3dAnmCalcNsBca - ; NNSi_G3dAnmObjInitNsBca - arm_func_start FUN_020BDAB4 -FUN_020BDAB4: ; 0x020BDAB4 + arm_func_start NNSi_G3dAnmObjInitNsBca +NNSi_G3dAnmObjInitNsBca: ; 0x020BDAB4 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 mov r4, r1 - ldr r0, _020BDB3C ; =UNK_0210659C + ldr r0, _020BDB3C ; =NNS_G3dFuncAnmJntNsBcaDefault str r4, [r5, #0x8] ldr r0, [r0, #0x0] add r1, r5, #0x1a @@ -1601,6 +1587,5 @@ _020BDB08: add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020BDB3C: .word UNK_0210659C - arm_func_end FUN_020BDAB4 - +_020BDB3C: .word NNS_G3dFuncAnmJntNsBcaDefault + arm_func_end NNSi_G3dAnmObjInitNsBca diff --git a/arm9/asm/NNS_G3D_nsbma.s b/arm9/asm/NNS_G3D_nsbma.s index 67c92e46..acadbe75 100644 --- a/arm9/asm/NNS_G3D_nsbma.s +++ b/arm9/asm/NNS_G3D_nsbma.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020BDB40 -FUN_020BDB40: ; 0x020BDB40 + arm_func_start NNSi_G3dAnmCalcNsBma +NNSi_G3dAnmCalcNsBma: ; 0x020BDB40 stmdb sp!, {r4-r8,lr} ldr r7, [r1, #0x8] mov r2, r2, lsl #0x10 @@ -23,12 +22,12 @@ FUN_020BDB40: ; 0x020BDB40 mov r0, r7 mov r2, r6 add r5, r3, r4 - bl FUN_020BDDAC + bl GetMatColAnmValue_ mov r4, r0 ldr r1, [r5, #0x4] mov r0, r7 mov r2, r6 - bl FUN_020BDDAC + bl GetMatColAnmValue_ ldr r1, [r8, #0x4] mov r2, r6 and r1, r1, #0x8000 @@ -37,12 +36,12 @@ FUN_020BDB40: ; 0x020BDB40 str r0, [r8, #0x4] mov r0, r7 ldr r1, [r5, #0xc] - bl FUN_020BDDAC + bl GetMatColAnmValue_ mov r4, r0 mov r0, r7 ldr r1, [r5, #0x8] mov r2, r6 - bl FUN_020BDDAC + bl GetMatColAnmValue_ mov r2, r6 ldr r1, [r8, #0x8] and r1, r1, #0x8000 @@ -51,20 +50,19 @@ FUN_020BDB40: ; 0x020BDB40 str r0, [r8, #0x8] mov r0, r7 ldr r1, [r5, #0x10] - bl FUN_020BDCB8 + bl GetMatColAnmuAlphaValue_ ldr r1, [r8, #0xc] bic r1, r1, #0x1f0000 orr r0, r1, r0, lsl #0x10 str r0, [r8, #0xc] ldmia sp!, {r4-r8,pc} - arm_func_end FUN_020BDB40 + arm_func_end NNSi_G3dAnmCalcNsBma - ; NNSi_G3dAnmObjInitNsBma - arm_func_start FUN_020BDC0C -FUN_020BDC0C: ; 0x020BDC0C + arm_func_start NNSi_G3dAnmObjInitNsBma +NNSi_G3dAnmObjInitNsBma: ; 0x020BDC0C stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4 - ldr r3, _020BDCB4 ; =UNK_021065A8 + ldr r3, _020BDCB4 ; =NNS_G3dFuncAnmMatNsBmaDefault ldr r4, [r2, #0x8] ldr r3, [r3, #0x0] mov r9, r0 @@ -93,7 +91,7 @@ _020BDC6C: ldrh r1, [r2, #0x2] add r1, r2, r1 add r1, r1, r6 - bl FUN_020BC14C + bl NNS_G3dGetResDictIdxByName cmp r0, #0x0 orrge r1, r7, #0x100 addge r0, r9, r0, lsl #0x1 @@ -106,12 +104,11 @@ _020BDC6C: add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} .balign 4 -_020BDCB4: .word UNK_021065A8 - arm_func_end FUN_020BDC0C +_020BDCB4: .word NNS_G3dFuncAnmMatNsBmaDefault + arm_func_end NNSi_G3dAnmObjInitNsBma - ; GetMatColAnmuAlphaValue_ - arm_func_start FUN_020BDCB8 -FUN_020BDCB8: ; 0x020BDCB8 + arm_func_start GetMatColAnmuAlphaValue_ +GetMatColAnmuAlphaValue_: ; 0x020BDCB8 ands r3, r1, #0x20000000 movne r0, r1, lsl #0x10 movne r0, r0, lsr #0x10 @@ -178,11 +175,10 @@ _020BDD9C: .balign 4 _020BDDA4: .word 0x0000FFFF _020BDDA8: .word 0x1FFF0000 - arm_func_end FUN_020BDCB8 + arm_func_end GetMatColAnmuAlphaValue_ - ; GetMatColAnmValue_ - arm_func_start FUN_020BDDAC -FUN_020BDDAC: ; 0x020BDDAC + arm_func_start GetMatColAnmValue_ +GetMatColAnmValue_: ; 0x020BDDAC stmdb sp!, {lr} sub sp, sp, #0x4 ands r3, r1, #0x20000000 @@ -288,5 +284,4 @@ _020BDEE0: _020BDF2C: .word 0x0000FFFF _020BDF30: .word 0x1FFF0000 _020BDF34: .word 0x00007C1F - arm_func_end FUN_020BDDAC - + arm_func_end GetMatColAnmValue_ diff --git a/arm9/asm/NNS_G3D_nsbta.s b/arm9/asm/NNS_G3D_nsbta.s index 85d25dca..a9fde7cb 100644 --- a/arm9/asm/NNS_G3D_nsbta.s +++ b/arm9/asm/NNS_G3D_nsbta.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020BDF38 -FUN_020BDF38: ; 0x020BDF38 + arm_func_start NNSi_G3dAnmCalcNsBta +NNSi_G3dAnmCalcNsBta: ; 0x020BDF38 stmdb sp!, {r4,lr} ldr r12, [r1, #0x0] mov r4, r0 @@ -14,7 +13,7 @@ FUN_020BDF38: ; 0x020BDF38 mov r1, r2, lsr #0x10 mov r3, r4 mov r2, r12, asr #0xc - bl FUN_020BE030 + bl GetTexSRTAnm_ ldr r0, [r4, #0x10] bic r0, r0, #0xc0000000 str r0, [r4, #0x10] @@ -25,14 +24,13 @@ FUN_020BDF38: ; 0x020BDF38 orr r0, r0, #0x8 str r0, [r4, #0x0] ldmia sp!, {r4,pc} - arm_func_end FUN_020BDF38 + arm_func_end NNSi_G3dAnmCalcNsBta - ; NNSi_G3dAnmObjInitNsBta - arm_func_start FUN_020BDF84 -FUN_020BDF84: ; 0x020BDF84 + arm_func_start NNSi_G3dAnmObjInitNsBta +NNSi_G3dAnmObjInitNsBta: ; 0x020BDF84 stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4 - ldr r3, _020BE02C ; =UNK_021065A0 + ldr r3, _020BE02C ; =NNS_G3dFuncAnmMatNsBtaDefault ldr r4, [r2, #0x8] ldr r3, [r3, #0x0] mov r9, r0 @@ -61,7 +59,7 @@ _020BDFE4: ldrh r1, [r2, #0x2] add r1, r2, r1 add r1, r1, r6 - bl FUN_020BC14C + bl NNS_G3dGetResDictIdxByName cmp r0, #0x0 orrge r1, r7, #0x100 addge r0, r9, r0, lsl #0x1 @@ -74,12 +72,11 @@ _020BDFE4: add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} .balign 4 -_020BE02C: .word UNK_021065A0 - arm_func_end FUN_020BDF84 +_020BE02C: .word NNS_G3dFuncAnmMatNsBtaDefault + arm_func_end NNSi_G3dAnmObjInitNsBta - ; _end - arm_func_start FUN_020BE030 -FUN_020BE030: ; 0x020BE030 + arm_func_start GetTexSRTAnm_ +GetTexSRTAnm_: ; 0x020BE030 stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4 mov r8, r0 @@ -95,13 +92,13 @@ FUN_020BE030: ; 0x020BE030 ldr r2, [r5, #0x1c] mov r3, r7 ldr r4, [r6, #0x0] - bl FUN_020BE238 + bl GetTexSRTAnmVectorVal_ mov r9, r0 ldr r1, [r5, #0x20] mov r0, r8 ldr r2, [r5, #0x24] mov r3, r7 - bl FUN_020BE238 + bl GetTexSRTAnmVectorVal_ cmp r9, #0x0 bne _020BE09C cmp r0, #0x0 @@ -116,7 +113,7 @@ _020BE0A8: ldr r2, [r5, #0x14] mov r0, r8 mov r3, r7 - bl FUN_020BE12C + bl GetTexSRTAnmSinCosVal_ cmp r0, #0x10000000 strneh r0, [r6, #0x20] movne r0, r0, lsr #0x10 @@ -127,13 +124,13 @@ _020BE0A8: mov r0, r8 mov r3, r7 bicne r4, r4, #0x2 - bl FUN_020BE238 + bl GetTexSRTAnmVectorVal_ mov r9, r0 ldr r1, [r5, #0x8] ldr r2, [r5, #0xc] mov r0, r8 mov r3, r7 - bl FUN_020BE238 + bl GetTexSRTAnmVectorVal_ cmp r9, #0x1000 bne _020BE114 cmp r0, #0x1000 @@ -147,11 +144,10 @@ _020BE120: str r4, [r6, #0x0] add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} - arm_func_end FUN_020BE030 + arm_func_end GetTexSRTAnm_ - ; GetTexSRTAnmSinCosVal_ - arm_func_start FUN_020BE12C -FUN_020BE12C: ; 0x020BE12C + arm_func_start GetTexSRTAnmSinCosVal_ +GetTexSRTAnmSinCosVal_: ; 0x020BE12C ands r12, r1, #0x20000000 movne r0, r2 bxne lr @@ -226,11 +222,10 @@ _020BE200: bx lr .balign 4 _020BE234: .word 0x0000FFFF - arm_func_end FUN_020BE12C + arm_func_end GetTexSRTAnmSinCosVal_ - ; GetTexSRTAnmVectorVal_ - arm_func_start FUN_020BE238 -FUN_020BE238: ; 0x020BE238 + arm_func_start GetTexSRTAnmVectorVal_ +GetTexSRTAnmVectorVal_: ; 0x020BE238 ands r12, r1, #0x20000000 movne r0, r2 bxne lr @@ -301,5 +296,4 @@ _020BE304: bx lr .balign 4 _020BE330: .word 0x0000FFFF - arm_func_end FUN_020BE238 - + arm_func_end GetTexSRTAnmVectorVal_ diff --git a/arm9/asm/NNS_G3D_nsbtp.s b/arm9/asm/NNS_G3D_nsbtp.s index 3701b92e..0ae2aa13 100644 --- a/arm9/asm/NNS_G3D_nsbtp.s +++ b/arm9/asm/NNS_G3D_nsbtp.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020BE334 -FUN_020BE334: ; 0x020BE334 + arm_func_start NNSi_G3dAnmCalcNsBtp +NNSi_G3dAnmCalcNsBtp: ; 0x020BE334 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r6, r1 @@ -17,39 +16,38 @@ FUN_020BE334: ; 0x020BE334 mov r0, r5 mov r1, r1, lsr #0x10 mov r2, r2, lsr #0x10 - bl FUN_020BC42C + bl NNSi_G3dGetTexPatAnmFV mov r4, r0 ldrb r1, [r4, #0x2] mov r0, r5 - bl FUN_020BC4B8 + bl NNSi_G3dGetTexPatAnmTexNameByIdx mov r1, r0 ldr r0, [r6, #0x14] mov r2, r7 - bl FUN_020BE408 + bl SetTexParamaters_ ldrb r1, [r4, #0x3] cmp r1, #0xff addeq sp, sp, #0x4 ldmeqia sp!, {r4-r7,pc} mov r0, r5 - bl FUN_020BC4A8 + bl NNSi_G3dGetTexPatAnmPlttNameByIdx mov r1, r0 ldr r0, [r6, #0x14] mov r2, r7 - bl FUN_020BE3B4 + bl SetPlttParamaters_ add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BE334 + arm_func_end NNSi_G3dAnmCalcNsBtp - ; _end - arm_func_start FUN_020BE3B4 -FUN_020BE3B4: ; 0x020BE3B4 + arm_func_start SetPlttParamaters_ +SetPlttParamaters_: ; 0x020BE3B4 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 ldrh r0, [r5, #0x34] mov r4, r2 add r0, r5, r0 - bl FUN_020BC2A0 + bl NNS_G3dGetResDataByName ldr r1, [r5, #0x2c] ldrh r2, [r0, #0x2] mov r1, r1, lsl #0x10 @@ -64,17 +62,16 @@ FUN_020BE3B4: ; 0x020BE3B4 str r0, [r4, #0x14] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020BE3B4 + arm_func_end SetPlttParamaters_ - ; SetTexParamaters_ - arm_func_start FUN_020BE408 -FUN_020BE408: ; 0x020BE408 + arm_func_start SetTexParamaters_ +SetTexParamaters_: ; 0x020BE408 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 add r0, r5, #0x3c mov r4, r2 - bl FUN_020BC2A0 + bl NNS_G3dGetResDataByName ldr r1, [r0, #0x0] ldr r3, [r4, #0x10] and r1, r1, #0x1c000000 @@ -130,14 +127,13 @@ _020BE4E0: .word 0x0000FFFF _020BE4E4: .word 0xC00F0000 _020BE4E8: .word 0x000007FF _020BE4EC: .word 0x003FF800 - arm_func_end FUN_020BE408 + arm_func_end SetTexParamaters_ - ; NNSi_G3dAnmObjInitNsBtp - arm_func_start FUN_020BE4F0 -FUN_020BE4F0: ; 0x020BE4F0 + arm_func_start NNSi_G3dAnmObjInitNsBtp +NNSi_G3dAnmObjInitNsBtp: ; 0x020BE4F0 stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4 - ldr r3, _020BE59C ; =UNK_021065A4 + ldr r3, _020BE59C ; =NNS_G3dFuncAnmMatNsBtpDefault ldr r4, [r2, #0x8] ldr r3, [r3, #0x0] mov r9, r0 @@ -167,7 +163,7 @@ _020BE554: ldrh r1, [r2, #0x2] add r1, r2, r1 add r1, r1, r6 - bl FUN_020BC14C + bl NNS_G3dGetResDictIdxByName cmp r0, #0x0 orrge r1, r7, #0x100 addge r0, r9, r0, lsl #0x1 @@ -180,6 +176,5 @@ _020BE554: add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} .balign 4 -_020BE59C: .word UNK_021065A4 - arm_func_end FUN_020BE4F0 - +_020BE59C: .word NNS_G3dFuncAnmMatNsBtpDefault + arm_func_end NNSi_G3dAnmObjInitNsBtp diff --git a/arm9/asm/NNS_G3D_nsbva.s b/arm9/asm/NNS_G3D_nsbva.s index 8b675545..e8dc75e4 100644 --- a/arm9/asm/NNS_G3D_nsbva.s +++ b/arm9/asm/NNS_G3D_nsbva.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020BE5A0 -FUN_020BE5A0: ; 0x020BE5A0 + arm_func_start NNSi_G3dAnmCalcNsBva +NNSi_G3dAnmCalcNsBva: ; 0x020BE5A0 stmdb sp!, {lr} sub sp, sp, #0x4 ldr lr, [r1, #0x8] @@ -22,12 +21,11 @@ FUN_020BE5A0: ; 0x020BE5A0 str r1, [r0, #0x0] add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020BE5A0 + arm_func_end NNSi_G3dAnmCalcNsBva - ; NNSi_G3dAnmObjInitNsBva - arm_func_start FUN_020BE5E0 -FUN_020BE5E0: ; 0x020BE5E0 - ldr r3, _020BE628 ; =UNK_02106598 + arm_func_start NNSi_G3dAnmObjInitNsBva +NNSi_G3dAnmObjInitNsBva: ; 0x020BE5E0 + ldr r3, _020BE628 ; =NNS_G3dFuncAnmVisNsBvaDefault mov r12, #0x0 ldr r3, [r3, #0x0] str r3, [r0, #0xc] @@ -47,6 +45,5 @@ _020BE608: blo _020BE608 bx lr .balign 4 -_020BE628: .word UNK_02106598 - arm_func_end FUN_020BE5E0 - +_020BE628: .word NNS_G3dFuncAnmVisNsBvaDefault + arm_func_end NNSi_G3dAnmObjInitNsBva diff --git a/arm9/asm/NNS_G3D_res_struct_acce.s b/arm9/asm/NNS_G3D_res_struct_acce.s index 1455f0dc..e0420f9b 100644 --- a/arm9/asm/NNS_G3D_res_struct_acce.s +++ b/arm9/asm/NNS_G3D_res_struct_acce.s @@ -3,9 +3,8 @@ .section .text - ; NNS_G3dGetTex - arm_func_start FUN_020BC0FC -FUN_020BC0FC: ; 0x020BC0FC + arm_func_start NNS_G3dGetTex +NNS_G3dGetTex: ; 0x020BC0FC ldrh r2, [r0, #0xc] ldrh r1, [r0, #0xe] add r3, r0, r2 @@ -24,20 +23,18 @@ _020BC12C: bx lr .balign 4 _020BC138: .word 0x30585442 - arm_func_end FUN_020BC0FC + arm_func_end NNS_G3dGetTex - ; _end - arm_func_start FUN_020BC13C -FUN_020BC13C: ; 0x020BC13C + arm_func_start NNS_G3dGetMdlSet +NNS_G3dGetMdlSet: ; 0x020BC13C ldrh r1, [r0, #0xc] ldr r1, [r0, r1] add r0, r0, r1 bx lr - arm_func_end FUN_020BC13C + arm_func_end NNS_G3dGetMdlSet - ; _end - arm_func_start FUN_020BC14C -FUN_020BC14C: ; 0x020BC14C + arm_func_start NNS_G3dGetResDictIdxByName +NNS_G3dGetResDictIdxByName: ; 0x020BC14C stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 ldrb r2, [r0, #0x1] @@ -129,11 +126,10 @@ _020BC294: mvn r0, #0x0 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BC14C + arm_func_end NNS_G3dGetResDictIdxByName - ; _end - arm_func_start FUN_020BC2A0 -FUN_020BC2A0: ; 0x020BC2A0 + arm_func_start NNS_G3dGetResDataByName +NNS_G3dGetResDataByName: ; 0x020BC2A0 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 ldrb r2, [r0, #0x1] @@ -232,11 +228,10 @@ _020BC404: mov r0, #0x0 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BC2A0 + arm_func_end NNS_G3dGetResDataByName - ; _end - arm_func_start FUN_020BC410 -FUN_020BC410: ; 0x020BC410 + arm_func_start NNSi_G3dGetTexPatAnmDataByIdx +NNSi_G3dGetTexPatAnmDataByIdx: ; 0x020BC410 ldrh r3, [r0, #0x12] add r0, r0, #0xc ldrh r2, [r0, r3] @@ -244,16 +239,15 @@ FUN_020BC410: ; 0x020BC410 add r0, r0, #0x4 mla r0, r2, r1, r0 bx lr - arm_func_end FUN_020BC410 + arm_func_end NNSi_G3dGetTexPatAnmDataByIdx - ; _end - arm_func_start FUN_020BC42C -FUN_020BC42C: ; 0x020BC42C + arm_func_start NNSi_G3dGetTexPatAnmFV +NNSi_G3dGetTexPatAnmFV: ; 0x020BC42C stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 mov r4, r2 - bl FUN_020BC410 + bl NNSi_G3dGetTexPatAnmDataByIdx ldrsh r1, [r0, #0x4] ldrh r3, [r0, #0x6] mul r2, r1, r4 @@ -286,29 +280,26 @@ _020BC49C: add r0, r3, r2, lsl #0x2 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020BC42C + arm_func_end NNSi_G3dGetTexPatAnmFV - ; _end - arm_func_start FUN_020BC4A8 -FUN_020BC4A8: ; 0x020BC4A8 + arm_func_start NNSi_G3dGetTexPatAnmPlttNameByIdx +NNSi_G3dGetTexPatAnmPlttNameByIdx: ; 0x020BC4A8 ldrh r2, [r0, #0xa] add r0, r0, r2 add r0, r0, r1, lsl #0x4 bx lr - arm_func_end FUN_020BC4A8 + arm_func_end NNSi_G3dGetTexPatAnmPlttNameByIdx - ; _end - arm_func_start FUN_020BC4B8 -FUN_020BC4B8: ; 0x020BC4B8 + arm_func_start NNSi_G3dGetTexPatAnmTexNameByIdx +NNSi_G3dGetTexPatAnmTexNameByIdx: ; 0x020BC4B8 ldrh r2, [r0, #0x8] add r0, r0, r2 add r0, r0, r1, lsl #0x4 bx lr - arm_func_end FUN_020BC4B8 + arm_func_end NNSi_G3dGetTexPatAnmTexNameByIdx - ; _end - arm_func_start FUN_020BC4C8 -FUN_020BC4C8: ; 0x020BC4C8 + arm_func_start NNS_G3dGetAnmByIdx +NNS_G3dGetAnmByIdx: ; 0x020BC4C8 ldrh r2, [r0, #0xc] ldr r2, [r0, r2] add r12, r0, r2 @@ -323,5 +314,4 @@ FUN_020BC4C8: ; 0x020BC4C8 addne r0, r12, r0 moveq r0, #0x0 bx lr - arm_func_end FUN_020BC4C8 - + arm_func_end NNS_G3dGetAnmByIdx diff --git a/arm9/asm/NNS_G3D_sbc.s b/arm9/asm/NNS_G3D_sbc.s index 48ad7470..86ee394f 100644 --- a/arm9/asm/NNS_G3D_sbc.s +++ b/arm9/asm/NNS_G3D_sbc.s @@ -3,16 +3,14 @@ .section .rodata - ; matColorMask_$8998 - .global UNK_020FF9D0 -UNK_020FF9D0: ; 0x020FF9D0 + .global matColorMask_$8998 +matColorMask_$8998: ; 0x020FF9D0 .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F .byte 0x00, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F - ; static const in function - ; pivotUtil_$9100 - .global UNK_020FF9F0 -UNK_020FF9F0: ; 0x020FF9F0 + + .global pivotUtil_$9100 +pivotUtil_$9100: ; 0x020FF9F0 .byte 0x04, 0x05, 0x07, 0x08 .byte 0x03, 0x05, 0x06, 0x08 .byte 0x03, 0x04, 0x06, 0x07 @@ -22,121 +20,73 @@ UNK_020FF9F0: ; 0x020FF9F0 .byte 0x01, 0x02, 0x04, 0x05 .byte 0x00, 0x02, 0x03, 0x05 .byte 0x00, 0x01, 0x03, 0x04 - ; static const in function + .section .data - ; cmd$9407 - .global UNK_02106630 -UNK_02106630: ; 0x02106630 + .global cmd$9407 +cmd$9407: ; 0x02106630 .byte 0x2A, 0x00, 0x00, 0x00 - - ; cmd$9407 + 0x4 - .global UNK_02106634 -UNK_02106634: ; 0x02106634 .byte 0x00, 0x00, 0x00, 0x00 - ; cmd$9366 - .global UNK_02106638 -UNK_02106638: ; 0x02106638 + .global cmd$9366 +cmd$9366: ; 0x02106638 .byte 0x2A, 0x00, 0x00, 0x00 - - ; cmd$9366 + 0x4 - .global UNK_0210663C -UNK_0210663C: ; 0x0210663C .byte 0x00, 0x00, 0x00, 0x00 - ; NNS_G3dFuncSbcMatTable - .global UNK_02106640 -UNK_02106640: ; 0x02106640 - .word FUN_020BA58C + .global NNS_G3dFuncSbcMatTable +NNS_G3dFuncSbcMatTable: ; 0x02106640 + .word NNSi_G3dFuncSbc_MAT_InternalDefault .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ; NNS_G3dFuncSbcShpTable - .global UNK_02106650 -UNK_02106650: ; 0x02106650 - .word FUN_020BA438 + .global NNS_G3dFuncSbcShpTable +NNS_G3dFuncSbcShpTable: ; 0x02106650 + .word NNSi_G3dFuncSbc_SHP_InternalDefault .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ; mtx$9412 - .global UNK_02106660 -UNK_02106660: ; 0x02106660 + .global mtx$9412 +mtx$9412: ; 0x02106660 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 - ; bbcmd1$9173 - .global UNK_021066A0 -UNK_021066A0: ; 0x021066A0 + .global bbcmd1$9173 +bbcmd1$9173: ; 0x021066A0 .byte 0x12, 0x10, 0x17, 0x1B - - ; bbcmd1$9173 + 0x4 - .global UNK_021066A4 -UNK_021066A4: ; 0x021066A4 .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - ; bbcmd1$9173 + 0xC - .global UNK_021066AC -UNK_021066AC: ; 0x021066AC .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x10, 0x00, 0x00 - - ; bbcmd1$9173 + 0x30 - .global UNK_021066D0 -UNK_021066D0: ; 0x021066D0 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - ; bbcmd1$9173 + 0x3C - .global UNK_021066DC -UNK_021066DC: ; 0x021066DC .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ; bbcmd1$9234 - .global UNK_021066E8 -UNK_021066E8: ; 0x021066E8 + .global bbcmd1$9234 +bbcmd1$9234: ; 0x021066E8 .byte 0x12, 0x10, 0x17, 0x1B - - ; bbcmd1$9234 + 0x4 - .global UNK_021066EC -UNK_021066EC: ; 0x021066EC .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - ; bbcmd1$9234 + 0xC - .global UNK_021066F4 -UNK_021066F4: ; 0x021066F4 .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x10, 0x00, 0x00 - - ; bbcmd1$9234 + 0x30 - .global UNK_02106718 -UNK_02106718: ; 0x02106718 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - ; bbcmd1$9234 + 0x3C - .global UNK_02106724 -UNK_02106724: ; 0x02106724 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ; NNS_G3dFuncSbcTable - .global UNK_02106730 -UNK_02106730: ; 0x02106730 - .word FUN_020BAC70 - .word FUN_020BAC48 - .word FUN_020BAAC0 - .word FUN_020BA9EC - .word FUN_020BA50C - .word FUN_020BA3C4 - .word FUN_020B9F84 - .word FUN_020B9C54 - .word FUN_020B98C4 - .word FUN_020B9258 - .word FUN_020B9178 - .word FUN_020B9110 - .word FUN_020B8DF0 - .word FUN_020B8A60 + .global NNS_G3dFuncSbcTable +NNS_G3dFuncSbcTable: ; 0x02106730 + .word NNSi_G3dFuncSbc_NOP + .word NNSi_G3dFuncSbc_RET + .word NNSi_G3dFuncSbc_NODE + .word NNSi_G3dFuncSbc_MTX + .word NNSi_G3dFuncSbc_MAT + .word NNSi_G3dFuncSbc_SHP + .word NNSi_G3dFuncSbc_NODEDESC + .word NNSi_G3dFuncSbc_BB + .word NNSi_G3dFuncSbc_BBY + .word NNSi_G3dFuncSbc_NODEMIX + .word NNSi_G3dFuncSbc_CALLDL + .word NNSi_G3dFuncSbc_POSSCALE + .word NNSi_G3dFuncSbc_ENVMAP + .word NNSi_G3dFuncSbc_PRJMAP .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 @@ -145,71 +95,18 @@ UNK_02106730: ; 0x02106730 .section .bss - ; NNS_G3dRS - .global UNK_021CEF7C -UNK_021CEF7C: ; 0x021CEF7C - .space 0x4 - - ; NNS_G3dRSOnGlb - .global UNK_021CEF80 -UNK_021CEF80: ; 0x021CEF80 - .space 0xe00 - - ; NNS_G3dRSOnGlb + 0xE00 - .global UNK_021CFD80 -UNK_021CFD80: ; 0x021CFD80 - .space 0x4 - - ; NNS_G3dRSOnGlb + 0xE04 - .global UNK_021CFD84 -UNK_021CFD84: ; 0x021CFD84 + .global NNS_G3dRS +NNS_G3dRS: ; 0x021CEF7C .space 0x4 - ; NNS_G3dRSOnGlb + 0xE08 - .global UNK_021CFD88 -UNK_021CFD88: ; 0x021CFD88 - .space 0x4 - - ; NNS_G3dRSOnGlb + 0xE0C - .global UNK_021CFD8C -UNK_021CFD8C: ; 0x021CFD8C - .space 0x4 - - ; NNS_G3dRSOnGlb + 0xE10 - .global UNK_021CFD90 -UNK_021CFD90: ; 0x021CFD90 - .space 0x4 - - ; NNS_G3dRSOnGlb + 0xE14 - .global UNK_021CFD94 -UNK_021CFD94: ; 0x021CFD94 - .space 0x2ba - - ; NNS_G3dRSOnGlb + 0x10CE - .global UNK_021D004E -UNK_021D004E: ; 0x021D004E - .space 0x332 - - ; NNS_G3dRSOnGlb + 0x1400 - .global UNK_021D0380 -UNK_021D0380: ; 0x021D0380 - .space 0x40 - - ; NNS_G3dRSOnGlb + 0x1440 - .global UNK_021D03C0 -UNK_021D03C0: ; 0x021D03C0 - .space 0xb42 - - ; NNS_G3dRSOnGlb + 0x1F82 - .global UNK_021D0F02 -UNK_021D0F02: ; 0x021D0F02 - .space 0xd7e + .global NNS_G3dRSOnGlb +NNS_G3dRSOnGlb: ; 0x021CEF80 + .space 0x2d00 .section .text - ; NNSi_G3dFuncSbc_PRJMAP - arm_func_start FUN_020B8A60 -FUN_020B8A60: ; 0x020B8A60 + arm_func_start NNSi_G3dFuncSbc_PRJMAP +NNSi_G3dFuncSbc_PRJMAP: ; 0x020B8A60 stmdb sp!, {r4-r6,lr} sub sp, sp, #0x80 mov r5, r0 @@ -220,13 +117,13 @@ FUN_020B8A60: ; 0x020B8A60 beq _020B8DB4 add r0, sp, #0x10 mov r1, #0x0 - bl FUN_020BB824 + bl NNS_G3dGetCurrentMtx mov r0, #0x1e str r0, [sp, #0x0] add r1, sp, #0x0 mov r0, #0x13 mov r2, #0x1 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldr r2, [r5, #0xb0] ldr r0, [r2, #0x10] and r1, r0, #0xc0000000 @@ -235,9 +132,9 @@ FUN_020B8A60: ; 0x020B8A60 bic r0, r0, #0xc0000000 str r0, [r2, #0x10] ldr r2, [r5, #0xb0] - ldr r3, _020B8DC8 ; =UNK_02106630 + ldr r3, _020B8DC8 ; =cmd$9407 ldr r0, [r2, #0x10] - ldr r1, _020B8DCC ; =UNK_02106634 + ldr r1, _020B8DCC ; =cmd$9407 + 0x4 orr r0, r0, #0xc0000000 str r0, [r2, #0x10] ldr r2, [r5, #0xb0] @@ -245,7 +142,7 @@ FUN_020B8A60: ; 0x020B8A60 ldr r4, [r2, #0x10] mov r2, #0x1 str r4, [r3, #0x4] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B8AF0: ldr r0, [r5, #0x40] cmp r0, #0x0 @@ -272,7 +169,7 @@ _020B8B40: cmp r0, #0x0 bne _020B8B84 ldr r0, [r5, #0xb0] - ldr r1, _020B8DD0 ; =UNK_02106660 + ldr r1, _020B8DD0 ; =mtx$9412 ldrh r6, [r0, #0x2e] ldrh r3, [r0, #0x2c] mov r0, #0x16 @@ -285,7 +182,7 @@ _020B8B40: str r12, [r1, #0x14] str lr, [r1, #0x30] str r3, [r1, #0x34] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B8B84: cmp r4, #0x2 bne _020B8BC0 @@ -329,7 +226,7 @@ _020B8BC4: addeq r1, r1, #0x8 mov r0, #0x18 mov r2, #0x10 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B8C28: cmp r4, #0x3 movne r0, #0x0 @@ -345,22 +242,22 @@ _020B8C28: _020B8C54: cmp r0, #0x0 bne _020B8D84 - ldr r0, _020B8DD4 ; =UNK_021CED18 + ldr r0, _020B8DD4 ; =NNS_G3dGlb ldr r1, [r0, #0xfc] ands r0, r1, #0x1 beq _020B8CA0 - ldr r1, _020B8DD8 ; =UNK_021CEDF8 + ldr r1, _020B8DD8 ; =NNS_G3dGlb + 0xE0 mov r0, #0x1c mov r2, #0x3 - bl FUN_020BB1C0 - ldr r1, _020B8DDC ; =UNK_021CEDD4 + bl NNS_G3dGeBufferOP_N + ldr r1, _020B8DDC ; =NNS_G3dGlb + 0xBC mov r0, #0x1a mov r2, #0x9 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r1, sp, #0x10 mov r0, #0x19 mov r2, #0xc - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N b _020B8CE0 _020B8CA0: ands r0, r1, #0x2 @@ -368,20 +265,20 @@ _020B8CA0: add r1, sp, #0x10 mov r0, #0x19 mov r2, #0xc - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N b _020B8CE0 _020B8CBC: - bl FUN_020B8344 + bl NNS_G3dGlbGetInvV mov r1, r0 mov r0, #0x19 mov r2, #0xc - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r1, sp, #0x10 mov r0, #0x19 mov r2, #0xc - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B8CE0: - bl FUN_020BB394 + bl NNS_G3dGeFlushBuffer ldr r0, _020B8DE0 ; =0x04000440 mov r2, #0x0 ldr r1, _020B8DE4 ; =0x04000444 @@ -404,7 +301,7 @@ _020B8D04: add r1, sp, #0x40 mov r0, #0x16 mov r2, #0x10 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldr r1, [sp, #0x70] ldr r0, [sp, #0x74] mov r2, r1, asr #0x4 @@ -422,20 +319,20 @@ _020B8D04: mov r0, #0x22 mov r2, #0x1 str r3, [sp, #0x4] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B8D84: mov r3, #0x2 add r1, sp, #0x8 mov r0, #0x10 mov r2, #0x1 str r3, [sp, #0x8] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N mov r3, #0x1e add r1, sp, #0xc mov r0, #0x14 mov r2, #0x1 str r3, [sp, #0xc] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B8DB4: ldr r0, [r5, #0x0] add r0, r0, #0x3 @@ -443,21 +340,20 @@ _020B8DB4: add sp, sp, #0x80 ldmia sp!, {r4-r6,pc} .balign 4 -_020B8DC8: .word UNK_02106630 -_020B8DCC: .word UNK_02106634 -_020B8DD0: .word UNK_02106660 -_020B8DD4: .word UNK_021CED18 -_020B8DD8: .word UNK_021CEDF8 -_020B8DDC: .word UNK_021CEDD4 +_020B8DC8: .word cmd$9407 +_020B8DCC: .word cmd$9407 + 0x4 +_020B8DD0: .word mtx$9412 +_020B8DD4: .word NNS_G3dGlb +_020B8DD8: .word NNS_G3dGlb + 0xE0 +_020B8DDC: .word NNS_G3dGlb + 0xBC _020B8DE0: .word 0x04000440 _020B8DE4: .word 0x04000444 _020B8DE8: .word 0x04000454 _020B8DEC: .word 0x04000448 - arm_func_end FUN_020B8A60 + arm_func_end NNSi_G3dFuncSbc_PRJMAP - ; NNSi_G3dFuncSbc_ENVMAP - arm_func_start FUN_020B8DF0 -FUN_020B8DF0: ; 0x020B8DF0 + arm_func_start NNSi_G3dFuncSbc_ENVMAP +NNSi_G3dFuncSbc_ENVMAP: ; 0x020B8DF0 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x44 mov r7, r0 @@ -474,9 +370,9 @@ FUN_020B8DF0: ; 0x020B8DF0 bic r0, r0, #0xc0000000 str r0, [r2, #0x10] ldr r2, [r7, #0xb0] - ldr r3, _020B90FC ; =UNK_02106638 + ldr r3, _020B90FC ; =cmd$9366 ldr r0, [r2, #0x10] - ldr r1, _020B9100 ; =UNK_0210663C + ldr r1, _020B9100 ; =cmd$9366 + 0x4 orr r0, r0, #0x80000000 str r0, [r2, #0x10] ldr r2, [r7, #0xb0] @@ -484,14 +380,14 @@ FUN_020B8DF0: ; 0x020B8DF0 ldr r4, [r2, #0x10] mov r2, #0x1 str r4, [r3, #0x4] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B8E5C: mov r0, #0x3 str r0, [sp, #0x0] add r1, sp, #0x0 mov r0, #0x10 mov r2, #0x1 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldr r0, [r7, #0x3c] cmp r0, #0x0 ldrneb r6, [r7, #0x98] @@ -529,7 +425,7 @@ _020B8EC4: str lr, [sp, #0x38] str r12, [sp, #0x3c] str r3, [sp, #0x40] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N mov r0, r5, lsl #0x13 mov r1, r4, lsl #0x13 mov r0, r0, asr #0x10 @@ -543,7 +439,7 @@ _020B8EC4: mov r0, #0x22 mov r2, #0x1 str r3, [sp, #0x4] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B8F3C: cmp r6, #0x2 bne _020B8F78 @@ -587,7 +483,7 @@ _020B8F7C: addeq r1, r1, #0x8 mov r0, #0x18 mov r2, #0x10 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B8FE0: cmp r6, #0x3 movne r0, #0x0 @@ -608,57 +504,57 @@ _020B900C: mov r0, #0x10 mov r2, #0x1 str r3, [sp, #0x8] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r1, sp, #0x14 mov r0, #0x0 - bl FUN_020BB824 + bl NNS_G3dGetCurrentMtx mov r3, #0x3 add r1, sp, #0xc mov r0, #0x10 mov r2, #0x1 str r3, [sp, #0xc] - bl FUN_020BB1C0 - ldr r0, _020B9104 ; =UNK_021CED18 + bl NNS_G3dGeBufferOP_N + ldr r0, _020B9104 ; =NNS_G3dGlb ldr r1, [r0, #0xfc] ands r0, r1, #0x1 beq _020B9094 - ldr r1, _020B9108 ; =UNK_021CED64 + ldr r1, _020B9108 ; =NNS_G3dGlb + 0x4C mov r0, #0x1a mov r2, #0x9 - bl FUN_020BB1C0 - ldr r1, _020B910C ; =UNK_021CEDD4 + bl NNS_G3dGeBufferOP_N + ldr r1, _020B910C ; =NNS_G3dGlb + 0xBC mov r0, #0x1a mov r2, #0x9 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r1, sp, #0x14 mov r0, #0x1a mov r2, #0x9 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N b _020B90D0 _020B9094: ands r0, r1, #0x2 beq _020B90C0 - ldr r1, _020B9108 ; =UNK_021CED64 + ldr r1, _020B9108 ; =NNS_G3dGlb + 0x4C mov r0, #0x1a mov r2, #0x9 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r1, sp, #0x14 mov r0, #0x1a mov r2, #0x9 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N b _020B90D0 _020B90C0: add r1, sp, #0x14 mov r0, #0x1a mov r2, #0x9 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B90D0: mov r3, #0x2 add r1, sp, #0x10 mov r0, #0x10 mov r2, #0x1 str r3, [sp, #0x10] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B90E8: ldr r0, [r7, #0x0] add r0, r0, #0x3 @@ -666,16 +562,15 @@ _020B90E8: add sp, sp, #0x44 ldmia sp!, {r4-r7,pc} .balign 4 -_020B90FC: .word UNK_02106638 -_020B9100: .word UNK_0210663C -_020B9104: .word UNK_021CED18 -_020B9108: .word UNK_021CED64 -_020B910C: .word UNK_021CEDD4 - arm_func_end FUN_020B8DF0 +_020B90FC: .word cmd$9366 +_020B9100: .word cmd$9366 + 0x4 +_020B9104: .word NNS_G3dGlb +_020B9108: .word NNS_G3dGlb + 0x4C +_020B910C: .word NNS_G3dGlb + 0xBC + arm_func_end NNSi_G3dFuncSbc_ENVMAP - ; _end - arm_func_start FUN_020B9110 -FUN_020B9110: ; 0x020B9110 + arm_func_start NNSi_G3dFuncSbc_POSSCALE +NNSi_G3dFuncSbc_POSSCALE: ; 0x020B9110 stmdb sp!, {r4,lr} sub sp, sp, #0x10 mov r4, r0 @@ -696,18 +591,17 @@ FUN_020B9110: ; 0x020B9110 strne r0, [sp, #0x4] strne r0, [sp, #0x0] mov r0, #0x1b - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B9164: ldr r0, [r4, #0x0] add r0, r0, #0x1 str r0, [r4, #0x0] add sp, sp, #0x10 ldmia sp!, {r4,pc} - arm_func_end FUN_020B9110 + arm_func_end NNSi_G3dFuncSbc_POSSCALE - ; _end - arm_func_start FUN_020B9178 -FUN_020B9178: ; 0x020B9178 + arm_func_start NNSi_G3dFuncSbc_CALLDL +NNSi_G3dFuncSbc_CALLDL: ; 0x020B9178 stmdb sp!, {r4-r6,lr} mov r5, r0 ldr r0, [r5, #0x34] @@ -753,7 +647,7 @@ _020B91D0: orr r1, r1, r3, lsl #0x10 add r0, r0, r6 orr r1, r1, r2, lsl #0x18 - bl FUN_020BB2B0 + bl NNS_G3dGeSendDL _020B9228: cmp r4, #0x3 bne _020B9248 @@ -768,11 +662,10 @@ _020B9248: add r0, r0, #0x9 str r0, [r5, #0x0] ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020B9178 + arm_func_end NNSi_G3dFuncSbc_CALLDL - ; NNSi_G3dFuncSbc_NODEMIX - arm_func_start FUN_020B9258 -FUN_020B9258: ; 0x020B9258 + arm_func_start NNSi_G3dFuncSbc_NODEMIX +NNSi_G3dFuncSbc_NODEMIX: ; 0x020B9258 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x8c ldr r1, [r0, #0x4] @@ -791,7 +684,7 @@ FUN_020B9258: ; 0x020B9258 str r3, [sp, #0x4] add r8, r4, #0x3 bl MIi_CpuClearFast - bl FUN_020BB394 + bl NNS_G3dGeFlushBuffer ldr r0, _020B98AC ; =0x04000440 mov r7, r10 str r7, [r0, #0x0] @@ -811,7 +704,7 @@ FUN_020B9258: ; 0x020B9258 _020B92E4: ldrb r4, [r8, #0x1] mov r0, #0x64 - ldr r3, _020B98B8 ; =UNK_021D0380 + ldr r3, _020B98B8 ; =NNS_G3dRSOnGlb + 0x1400 mul r0, r4, r0 str r0, [sp, #0xc] ldr r0, [sp, #0x0] @@ -1050,7 +943,7 @@ _020B9538: adds r0, r2, r1 str r0, [sp, #0x60] cmp r11, #0x0 - ldr r1, _020B98C0 ; =UNK_021D03C0 + ldr r1, _020B98C0 ; =NNS_G3dRSOnGlb + 0x1440 ldr r0, [sp, #0xc] add r5, r1, r0 add r8, r8, #0x3 @@ -1190,14 +1083,13 @@ _020B96CC: _020B98AC: .word 0x04000440 _020B98B0: .word 0x0400044C _020B98B4: .word 0x04000454 -_020B98B8: .word UNK_021D0380 +_020B98B8: .word NNS_G3dRSOnGlb + 0x1400 _020B98BC: .word 0x04000450 -_020B98C0: .word UNK_021D03C0 - arm_func_end FUN_020B9258 +_020B98C0: .word NNS_G3dRSOnGlb + 0x1440 + arm_func_end NNSi_G3dFuncSbc_NODEMIX - ; NNSi_G3dFuncSbc_BBY - arm_func_start FUN_020B98C4 -FUN_020B98C4: ; 0x020B98C4 + arm_func_start NNSi_G3dFuncSbc_BBY +NNSi_G3dFuncSbc_BBY: ; 0x020B98C4 stmdb sp!, {r4-r11,lr} sub sp, sp, #0xcc mov r10, r0 @@ -1205,9 +1097,9 @@ FUN_020B98C4: ; 0x020B98C4 mov r9, r1 ands r0, r2, #0x200 mov r7, #0x2 - ldr r6, _020B9C28 ; =UNK_02106718 - ldr fp, _020B9C2C ; =UNK_02106724 - ldr r5, _020B9C30 ; =UNK_021066F4 + ldr r6, _020B9C28 ; =bbcmd1$9234 + 0x30 + ldr fp, _020B9C2C ; =bbcmd1$9234 + 0x3C + ldr r5, _020B9C30 ; =bbcmd1$9234 + 0xC beq _020B992C cmp r9, #0x40 beq _020B9900 @@ -1247,7 +1139,7 @@ _020B993C: ldrneb r0, [r0, #0x3] strne r0, [sp, #0x0] mov r0, #0x14 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B9974: ldr r0, [r10, #0x2c] cmp r0, #0x0 @@ -1276,7 +1168,7 @@ _020B99C4: bne _020B9BA4 cmp r1, #0x0 bne _020B9BA4 - bl FUN_020BB394 + bl NNS_G3dGeFlushBuffer ldr r2, _020B9C34 ; =0x00151110 ldr r1, _020B9C38 ; =0x04000400 mov r0, #0x0 @@ -1289,11 +1181,11 @@ _020B99F8: bl G3X_GetClipMtx cmp r0, #0x0 bne _020B99F8 - ldr r0, _020B9C3C ; =UNK_021CED18 + ldr r0, _020B9C3C ; =NNS_G3dGlb ldr r1, [r0, #0xfc] ands r0, r1, #0x1 beq _020B9A38 - bl FUN_020B82A4 + bl NNS_G3dGlbGetWV add r1, sp, #0x48 bl MTX_Copy43To44_ add r0, sp, #0x8 @@ -1304,7 +1196,7 @@ _020B99F8: _020B9A38: ands r0, r1, #0x2 beq _020B9A5C - ldr r0, _020B9C40 ; =UNK_021CED64 + ldr r0, _020B9C40 ; =NNS_G3dGlb + 0x4C add r1, sp, #0x88 bl MTX_Copy43To44_ add r0, sp, #0x8 @@ -1353,23 +1245,23 @@ _020B9AD4: ldr r0, [r5, #0x20] str r0, [r5, #0x10] _020B9AF4: - ldr r0, _020B9C3C ; =UNK_021CED18 + ldr r0, _020B9C3C ; =NNS_G3dGlb ldr r1, [r0, #0xfc] ands r0, r1, #0x1 beq _020B9B48 ldr r3, _020B9C44 ; =0x00171012 ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C48 ; =UNK_021066EC + ldr r0, _020B9C48 ; =bbcmd1$9234 + 0x4 mov r2, #0x8 str r3, [r1, #0x0] bl MIi_CpuSend32 - bl FUN_020B8264 + bl NNS_G3dGlbGetInvWV ldr r1, _020B9C38 ; =0x04000400 mov r2, #0x30 bl MIi_CpuSend32 ldr r2, _020B9C4C ; =0x00001B19 ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C30 ; =UNK_021066F4 + ldr r0, _020B9C30 ; =bbcmd1$9234 + 0xC str r2, [r1, #0x0] mov r2, #0x3c bl MIi_CpuSend32 @@ -1379,23 +1271,23 @@ _020B9B48: beq _020B9B94 ldr r3, _020B9C44 ; =0x00171012 ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C48 ; =UNK_021066EC + ldr r0, _020B9C48 ; =bbcmd1$9234 + 0x4 mov r2, #0x8 str r3, [r1, #0x0] bl MIi_CpuSend32 - bl FUN_020B8344 + bl NNS_G3dGlbGetInvV ldr r1, _020B9C38 ; =0x04000400 mov r2, #0x30 bl MIi_CpuSend32 ldr r2, _020B9C4C ; =0x00001B19 ldr r1, _020B9C38 ; =0x04000400 - ldr r0, _020B9C30 ; =UNK_021066F4 + ldr r0, _020B9C30 ; =bbcmd1$9234 + 0xC str r2, [r1, #0x0] mov r2, #0x3c bl MIi_CpuSend32 b _020B9BA4 _020B9B94: - ldr r0, _020B9C50 ; =UNK_021066E8 + ldr r0, _020B9C50 ; =bbcmd1$9234 ldr r1, _020B9C38 ; =0x04000400 mov r2, #0x48 bl MIi_CpuSend32 @@ -1429,7 +1321,7 @@ _020B9BE0: mov r0, #0x13 mov r2, #0x1 str r3, [sp, #0x4] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B9C14: ldr r0, [r10, #0x0] add r0, r0, r7 @@ -1437,22 +1329,21 @@ _020B9C14: add sp, sp, #0xcc ldmia sp!, {r4-r11,pc} .balign 4 -_020B9C28: .word UNK_02106718 -_020B9C2C: .word UNK_02106724 -_020B9C30: .word UNK_021066F4 +_020B9C28: .word bbcmd1$9234 + 0x30 +_020B9C2C: .word bbcmd1$9234 + 0x3C +_020B9C30: .word bbcmd1$9234 + 0xC _020B9C34: .word 0x00151110 _020B9C38: .word 0x04000400 -_020B9C3C: .word UNK_021CED18 -_020B9C40: .word UNK_021CED64 +_020B9C3C: .word NNS_G3dGlb +_020B9C40: .word NNS_G3dGlb + 0x4C _020B9C44: .word 0x00171012 -_020B9C48: .word UNK_021066EC +_020B9C48: .word bbcmd1$9234 + 0x4 _020B9C4C: .word 0x00001B19 -_020B9C50: .word UNK_021066E8 - arm_func_end FUN_020B98C4 +_020B9C50: .word bbcmd1$9234 + arm_func_end NNSi_G3dFuncSbc_BBY - ; NNSi_G3dFuncSbc_BB - arm_func_start FUN_020B9C54 -FUN_020B9C54: ; 0x020B9C54 + arm_func_start NNSi_G3dFuncSbc_BB +NNSi_G3dFuncSbc_BB: ; 0x020B9C54 stmdb sp!, {r4-r10,lr} sub sp, sp, #0xc8 mov r9, r0 @@ -1460,8 +1351,8 @@ FUN_020B9C54: ; 0x020B9C54 mov r8, r1 ands r0, r2, #0x200 mov r6, #0x2 - ldr r5, _020B9F58 ; =UNK_021066D0 - ldr r4, _020B9F5C ; =UNK_021066DC + ldr r5, _020B9F58 ; =bbcmd1$9173 + 0x30 + ldr r4, _020B9F5C ; =bbcmd1$9173 + 0x3C beq _020B9CB8 cmp r8, #0x40 beq _020B9C8C @@ -1501,7 +1392,7 @@ _020B9CC8: ldrneb r0, [r0, #0x3] strne r0, [sp, #0x0] mov r0, #0x14 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B9D00: ldr r0, [r9, #0x28] cmp r0, #0x0 @@ -1530,7 +1421,7 @@ _020B9D50: bne _020B9ED4 cmp r1, #0x0 bne _020B9ED4 - bl FUN_020BB394 + bl NNS_G3dGeFlushBuffer ldr r2, _020B9F60 ; =0x00151110 ldr r1, _020B9F64 ; =0x04000400 mov r0, #0x0 @@ -1543,11 +1434,11 @@ _020B9D84: bl G3X_GetClipMtx cmp r0, #0x0 bne _020B9D84 - ldr r0, _020B9F68 ; =UNK_021CED18 + ldr r0, _020B9F68 ; =NNS_G3dGlb ldr r1, [r0, #0xfc] ands r0, r1, #0x1 beq _020B9DC4 - bl FUN_020B82A4 + bl NNS_G3dGlbGetWV add r1, sp, #0x48 bl MTX_Copy43To44_ add r0, sp, #0x8 @@ -1558,7 +1449,7 @@ _020B9D84: _020B9DC4: ands r0, r1, #0x2 beq _020B9DE8 - ldr r0, _020B9F6C ; =UNK_021CED64 + ldr r0, _020B9F6C ; =NNS_G3dGlb + 0x4C add r1, sp, #0x88 bl MTX_Copy43To44_ add r0, sp, #0x8 @@ -1580,24 +1471,24 @@ _020B9DE8: str r0, [r4, #0x4] add r0, sp, #0x28 bl VEC_Mag - ldr r1, _020B9F68 ; =UNK_021CED18 + ldr r1, _020B9F68 ; =NNS_G3dGlb str r0, [r4, #0x8] ldr r1, [r1, #0xfc] ands r0, r1, #0x1 beq _020B9E78 ldr r3, _020B9F70 ; =0x00171012 ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F74 ; =UNK_021066A4 + ldr r0, _020B9F74 ; =bbcmd1$9173 + 0x4 mov r2, #0x8 str r3, [r1, #0x0] bl MIi_CpuSend32 - bl FUN_020B8264 + bl NNS_G3dGlbGetInvWV ldr r1, _020B9F64 ; =0x04000400 mov r2, #0x30 bl MIi_CpuSend32 ldr r2, _020B9F78 ; =0x00001B19 ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F7C ; =UNK_021066AC + ldr r0, _020B9F7C ; =bbcmd1$9173 + 0xC str r2, [r1, #0x0] mov r2, #0x3c bl MIi_CpuSend32 @@ -1607,23 +1498,23 @@ _020B9E78: beq _020B9EC4 ldr r3, _020B9F70 ; =0x00171012 ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F74 ; =UNK_021066A4 + ldr r0, _020B9F74 ; =bbcmd1$9173 + 0x4 mov r2, #0x8 str r3, [r1, #0x0] bl MIi_CpuSend32 - bl FUN_020B8344 + bl NNS_G3dGlbGetInvV ldr r1, _020B9F64 ; =0x04000400 mov r2, #0x30 bl MIi_CpuSend32 ldr r2, _020B9F78 ; =0x00001B19 ldr r1, _020B9F64 ; =0x04000400 - ldr r0, _020B9F7C ; =UNK_021066AC + ldr r0, _020B9F7C ; =bbcmd1$9173 + 0xC str r2, [r1, #0x0] mov r2, #0x3c bl MIi_CpuSend32 b _020B9ED4 _020B9EC4: - ldr r0, _020B9F80 ; =UNK_021066A0 + ldr r0, _020B9F80 ; =bbcmd1$9173 ldr r1, _020B9F64 ; =0x04000400 mov r2, #0x48 bl MIi_CpuSend32 @@ -1657,7 +1548,7 @@ _020B9F10: mov r0, #0x13 mov r2, #0x1 str r3, [sp, #0x4] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020B9F44: ldr r0, [r9, #0x0] add r0, r0, r6 @@ -1665,22 +1556,21 @@ _020B9F44: add sp, sp, #0xc8 ldmia sp!, {r4-r10,pc} .balign 4 -_020B9F58: .word UNK_021066D0 -_020B9F5C: .word UNK_021066DC +_020B9F58: .word bbcmd1$9173 + 0x30 +_020B9F5C: .word bbcmd1$9173 + 0x3C _020B9F60: .word 0x00151110 _020B9F64: .word 0x04000400 -_020B9F68: .word UNK_021CED18 -_020B9F6C: .word UNK_021CED64 +_020B9F68: .word NNS_G3dGlb +_020B9F6C: .word NNS_G3dGlb + 0x4C _020B9F70: .word 0x00171012 -_020B9F74: .word UNK_021066A4 +_020B9F74: .word bbcmd1$9173 + 0x4 _020B9F78: .word 0x00001B19 -_020B9F7C: .word UNK_021066AC -_020B9F80: .word UNK_021066A0 - arm_func_end FUN_020B9C54 +_020B9F7C: .word bbcmd1$9173 + 0xC +_020B9F80: .word bbcmd1$9173 + arm_func_end NNSi_G3dFuncSbc_BB - ; NNSi_G3dFuncSbc_NODEDESC - arm_func_start FUN_020B9F84 -FUN_020B9F84: ; 0x020B9F84 + arm_func_start NNSi_G3dFuncSbc_NODEDESC +NNSi_G3dFuncSbc_NODEDESC: ; 0x020B9F84 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x14 mov r10, r0 @@ -1716,7 +1606,7 @@ _020B9FE0: mov r0, #0x14 mov r2, #0x1 str r3, [sp, #0x8] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020BA008: ldr r0, [r10, #0x0] add sp, sp, #0x14 @@ -1743,7 +1633,7 @@ _020BA02C: add r1, sp, #0xc mov r0, #0x14 mov r2, #0x1 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020BA068: add r0, r10, #0x12c str r0, [r10, #0xb4] @@ -1847,8 +1737,8 @@ _020BA188: rsbne r2, r0, #0x0 moveq r2, #0x1000 str r2, [r1, #0x28] - ldr r0, _020BA3B4 ; =UNK_020FF9F0 - ldr r1, _020BA3B8 ; =UNK_020FF9F0 + 1 + ldr r0, _020BA3B4 ; =pivotUtil_$9100 + ldr r1, _020BA3B8 ; =pivotUtil_$9100 + 1 ldrb r0, [r0, r11, lsl #0x2] add r2, r6, r0, lsl #0x2 ldr r0, [sp, #0x0] @@ -1862,7 +1752,7 @@ _020BA188: ldrne r0, [sp, #0x4] rsbne r0, r0, #0x0 strne r0, [sp, #0x4] - ldr r0, _020BA3BC ; =UNK_020FF9F0 + 2 + ldr r0, _020BA3BC ; =pivotUtil_$9100 + 2 ldrb r0, [r0, r11, lsl #0x2] add r1, r6, r0, lsl #0x2 ldr r0, [sp, #0x4] @@ -1872,7 +1762,7 @@ _020BA188: ldrne r0, [sp, #0x0] rsbne r0, r0, #0x0 strne r0, [sp, #0x0] - ldr r0, _020BA3C0 ; =UNK_020FF9F0 + 3 + ldr r0, _020BA3C0 ; =pivotUtil_$9100 + 3 ldrb r0, [r0, r11, lsl #0x2] add r1, r6, r0, lsl #0x2 ldr r0, [sp, #0x0] @@ -1965,7 +1855,7 @@ _020BA36C: mov r0, #0x13 mov r2, #0x1 str r3, [sp, #0x10] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020BA3A0: ldr r0, [r10, #0x0] add r0, r0, r7 @@ -1973,15 +1863,14 @@ _020BA3A0: add sp, sp, #0x14 ldmia sp!, {r4-r11,pc} .balign 4 -_020BA3B4: .word UNK_020FF9F0 -_020BA3B8: .word UNK_020FF9F0 + 1 -_020BA3BC: .word UNK_020FF9F0 + 2 -_020BA3C0: .word UNK_020FF9F0 + 3 - arm_func_end FUN_020B9F84 +_020BA3B4: .word pivotUtil_$9100 +_020BA3B8: .word pivotUtil_$9100 + 1 +_020BA3BC: .word pivotUtil_$9100 + 2 +_020BA3C0: .word pivotUtil_$9100 + 3 + arm_func_end NNSi_G3dFuncSbc_NODEDESC - ; NNSi_G3dFuncSbc_SHP - arm_func_start FUN_020BA3C4 -FUN_020BA3C4: ; 0x020BA3C4 + arm_func_start NNSi_G3dFuncSbc_SHP +NNSi_G3dFuncSbc_SHP: ; 0x020BA3C4 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r4, r0 @@ -1996,7 +1885,7 @@ FUN_020BA3C4: ; 0x020BA3C4 ldr r3, [r4, #0x0] ldrh r2, [r5, #0x6] ldrb r3, [r3, #0x1] - ldr ip, _020BA434 ; =UNK_02106650 + ldr ip, _020BA434 ; =NNS_G3dFuncSbcShpTable ldrh lr, [r5, r2] add r2, r5, r2 mla r2, lr, r3, r2 @@ -2012,12 +1901,11 @@ _020BA420: add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020BA434: .word UNK_02106650 - arm_func_end FUN_020BA3C4 +_020BA434: .word NNS_G3dFuncSbcShpTable + arm_func_end NNSi_G3dFuncSbc_SHP - ; _end - arm_func_start FUN_020BA438 -FUN_020BA438: ; 0x020BA438 + arm_func_start NNSi_G3dFuncSbc_SHP_InternalDefault +NNSi_G3dFuncSbc_SHP_InternalDefault: ; 0x020BA438 stmdb sp!, {r4-r6,lr} mov r6, r0 ldr r0, [r6, #0x20] @@ -2051,7 +1939,7 @@ _020BA494: ldr r0, [r5, #0x8] ldr r1, [r5, #0xc] add r0, r5, r0 - bl FUN_020BB2B0 + bl NNS_G3dGeSendDL _020BA4B8: cmp r4, #0x2 bne _020BA4E8 @@ -2075,11 +1963,10 @@ _020BA4E8: ldr r1, [r6, #0x20] blx r1 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BA438 + arm_func_end NNSi_G3dFuncSbc_SHP_InternalDefault - ; NNSi_G3dFuncSbc_MAT - arm_func_start FUN_020BA50C -FUN_020BA50C: ; 0x020BA50C + arm_func_start NNSi_G3dFuncSbc_MAT +NNSi_G3dFuncSbc_MAT: ; 0x020BA50C stmdb sp!, {r4-r6,lr} mov r4, r0 ldr r5, [r4, #0x8] @@ -2096,7 +1983,7 @@ FUN_020BA50C: ; 0x020BA50C beq _020BA578 _020BA544: ldr r6, [r4, #0xd8] - ldr ip, _020BA588 ; =UNK_02106640 + ldr ip, _020BA588 ; =NNS_G3dFuncSbcMatTable ldrh r2, [r6, #0xa] add r5, r6, #0x4 mov r0, r4 @@ -2114,12 +2001,11 @@ _020BA578: str r0, [r4, #0x0] ldmia sp!, {r4-r6,pc} .balign 4 -_020BA588: .word UNK_02106640 - arm_func_end FUN_020BA50C +_020BA588: .word NNS_G3dFuncSbcMatTable + arm_func_end NNSi_G3dFuncSbc_MAT - ; NNSi_G3dFuncSbc_MAT_InternalDefault - arm_func_start FUN_020BA58C -FUN_020BA58C: ; 0x020BA58C + arm_func_start NNSi_G3dFuncSbc_MAT_InternalDefault +NNSi_G3dFuncSbc_MAT_InternalDefault: ; 0x020BA58C stmdb sp!, {r4-r8,lr} sub sp, sp, #0x20 mov r8, r0 @@ -2182,7 +2068,7 @@ _020BA648: cmp r0, #0x0 movne r1, #0x38 mlane r4, r6, r1, r0 - ldreq r1, _020BA9D8 ; =UNK_021CEF80 + ldreq r1, _020BA9D8 ; =NNS_G3dRSOnGlb moveq r0, #0x38 mlaeq r4, r6, r0, r1 b _020BA8BC @@ -2207,7 +2093,7 @@ _020BA6BC: bne _020BA6F0 add lr, r8, #0xbc mov r12, r6, lsr #0x5 - ldr r1, _020BA9D8 ; =UNK_021CEF80 + ldr r1, _020BA9D8 ; =NNS_G3dRSOnGlb ldr r4, [lr, r12, lsl #0x2] mov r0, #0x38 and r2, r6, #0x1f @@ -2225,7 +2111,7 @@ _020BA6F0: add r0, r2, r0 mla r0, r1, r6, r0 ldr r0, [r0, #0x4] - ldr r1, _020BA9DC ; =UNK_021CED18 + ldr r1, _020BA9DC ; =NNS_G3dGlb add r0, r3, r0 ldrh r0, [r0, #0x1e] ands r0, r0, #0x20 @@ -2233,7 +2119,7 @@ _020BA6F0: orrne r0, r0, #0x20 strne r0, [r4, #0x0] ldrh r2, [r7, #0x1e] - ldr r0, _020BA9E0 ; =UNK_020FF9D0 + ldr r0, _020BA9E0 ; =matColorMask_$8998 ldr r12, [r1, #0x94] mov r2, r2, asr #0x6 and r2, r2, #0x7 @@ -2388,7 +2274,7 @@ _020BA900: str r3, [sp, #0x14] ldr r3, [r4, #0x14] str r3, [sp, #0x18] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldr r0, [r4, #0x0] ands r0, r0, #0x18 beq _020BA9AC @@ -2413,16 +2299,15 @@ _020BA9AC: add sp, sp, #0x20 ldmia sp!, {r4-r8,pc} .balign 4 -_020BA9D8: .word UNK_021CEF80 -_020BA9DC: .word UNK_021CED18 -_020BA9E0: .word UNK_020FF9D0 +_020BA9D8: .word NNS_G3dRSOnGlb +_020BA9DC: .word NNS_G3dGlb +_020BA9E0: .word matColorMask_$8998 _020BA9E4: .word 0x00293130 _020BA9E8: .word 0x00002B2A - arm_func_end FUN_020BA58C + arm_func_end NNSi_G3dFuncSbc_MAT_InternalDefault - ; _end - arm_func_start FUN_020BA9EC -FUN_020BA9EC: ; 0x020BA9EC + arm_func_start NNSi_G3dFuncSbc_MTX +NNSi_G3dFuncSbc_MTX: ; 0x020BA9EC stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 @@ -2464,7 +2349,7 @@ _020BAA5C: add r1, sp, #0x0 mov r0, #0x14 mov r2, #0x1 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020BAA8C: cmp r4, #0x3 bne _020BAAAC @@ -2480,11 +2365,10 @@ _020BAAAC: str r0, [r5, #0x0] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020BA9EC + arm_func_end NNSi_G3dFuncSbc_MTX - ; _end - arm_func_start FUN_020BAAC0 -FUN_020BAAC0: ; 0x020BAAC0 + arm_func_start NNSi_G3dFuncSbc_NODE +NNSi_G3dFuncSbc_NODE: ; 0x020BAAC0 stmdb sp!, {r4-r6,lr} mov r6, r0 ldr r0, [r6, #0x8] @@ -2591,11 +2475,10 @@ _020BAC38: add r0, r0, #0x3 str r0, [r6, #0x0] ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BAAC0 + arm_func_end NNSi_G3dFuncSbc_NODE - ; _end - arm_func_start FUN_020BAC48 -FUN_020BAC48: ; 0x020BAC48 + arm_func_start NNSi_G3dFuncSbc_RET +NNSi_G3dFuncSbc_RET: ; 0x020BAC48 stmdb sp!, {r4,lr} mov r4, r0 ldr r1, [r4, #0x10] @@ -2607,11 +2490,10 @@ _020BAC60: orr r0, r0, #0x20 str r0, [r4, #0x8] ldmia sp!, {r4,pc} - arm_func_end FUN_020BAC48 + arm_func_end NNSi_G3dFuncSbc_RET - ; _end - arm_func_start FUN_020BAC70 -FUN_020BAC70: ; 0x020BAC70 + arm_func_start NNSi_G3dFuncSbc_NOP +NNSi_G3dFuncSbc_NOP: ; 0x020BAC70 stmdb sp!, {r4,lr} mov r4, r0 ldr r1, [r4, #0xc] @@ -2623,11 +2505,10 @@ _020BAC88: add r0, r0, #0x1 str r0, [r4, #0x0] ldmia sp!, {r4,pc} - arm_func_end FUN_020BAC70 + arm_func_end NNSi_G3dFuncSbc_NOP - ; NNS_G3dDraw - arm_func_start FUN_020BAC98 -FUN_020BAC98: ; 0x020BAC98 + arm_func_start NNS_G3dDraw +NNS_G3dDraw: ; 0x020BAC98 stmdb sp!, {r4,lr} sub sp, sp, #0x188 mov r4, r0 @@ -2651,49 +2532,48 @@ FUN_020BAC98: ; 0x020BAC98 cmp r1, #0x0 beq _020BACF8 add r0, r4, #0x3c - bl FUN_020BAD74 + bl updateHintVec_ _020BACF8: ldr r1, [r4, #0x10] cmp r1, #0x0 beq _020BAD0C add r0, r4, #0x44 - bl FUN_020BAD74 + bl updateHintVec_ _020BAD0C: ldr r1, [r4, #0x18] cmp r1, #0x0 beq _020BAD20 add r0, r4, #0x4c - bl FUN_020BAD74 + bl updateHintVec_ _020BAD20: ldr r0, [r4, #0x0] bic r0, r0, #0x10 str r0, [r4, #0x0] _020BAD2C: - ldr r2, _020BAD70 ; =UNK_021CEF7C + ldr r2, _020BAD70 ; =NNS_G3dRS ldr r0, [r2, #0x0] cmp r0, #0x0 beq _020BAD4C mov r1, r4 - bl FUN_020BADE4 + bl G3dDrawInternal_ add sp, sp, #0x188 ldmia sp!, {r4,pc} _020BAD4C: add r0, sp, #0x0 mov r1, r4 str r0, [r2, #0x0] - bl FUN_020BADE4 - ldr r0, _020BAD70 ; =UNK_021CEF7C + bl G3dDrawInternal_ + ldr r0, _020BAD70 ; =NNS_G3dRS mov r1, #0x0 str r1, [r0, #0x0] add sp, sp, #0x188 ldmia sp!, {r4,pc} .balign 4 -_020BAD70: .word UNK_021CEF7C - arm_func_end FUN_020BAC98 +_020BAD70: .word NNS_G3dRS + arm_func_end NNS_G3dDraw - ; _end - arm_func_start FUN_020BAD74 -FUN_020BAD74: ; 0x020BAD74 + local_arm_func_start updateHintVec_ +updateHintVec_: ; 0x020BAD74 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 cmp r1, #0x0 @@ -2725,11 +2605,10 @@ _020BADD0: bne _020BAD90 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020BAD74 + arm_func_end updateHintVec_ - ; G3dDrawInternal_ - arm_func_start FUN_020BADE4 -FUN_020BADE4: ; 0x020BADE4 + arm_func_start G3dDrawInternal_ +G3dDrawInternal_: ; 0x020BADE4 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 @@ -2742,7 +2621,7 @@ FUN_020BADE4: ; 0x020BADE4 str r0, [r5, #0xc4] str r0, [r5, #0x8] ldr r0, [r4, #0x30] - ldr r2, _020BAF60 ; =UNK_02106614 + ldr r2, _020BAF60 ; =NNS_G3dGetJointScale_FuncArray cmp r0, #0x0 strne r0, [r5, #0x0] ldreq r1, [r4, #0x4] @@ -2751,11 +2630,11 @@ FUN_020BADE4: ; 0x020BADE4 streq r0, [r5, #0x0] str r4, [r5, #0x4] ldr r0, [r4, #0x4] - ldr r1, _020BAF64 ; =UNK_02106608 + ldr r1, _020BAF64 ; =NNS_G3dSendJointSRT_FuncArray add r0, r0, #0x40 str r0, [r5, #0xd4] ldr r12, [r4, #0x4] - ldr r0, _020BAF68 ; =UNK_02106620 + ldr r0, _020BAF68 ; =NNS_G3dSendTexSRT_FuncArray ldr r3, [r12, #0x8] add r3, r12, r3 str r3, [r5, #0xd8] @@ -2821,24 +2700,23 @@ _020BAEE0: blx r1 _020BAF44: mov r0, r5 - bl FUN_020BAF6C + bl G3dDrawInternal_Loop_ ldr r0, [r4, #0x0] bic r0, r0, #0x1 str r0, [r4, #0x0] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020BAF60: .word UNK_02106614 -_020BAF64: .word UNK_02106608 -_020BAF68: .word UNK_02106620 - arm_func_end FUN_020BADE4 +_020BAF60: .word NNS_G3dGetJointScale_FuncArray +_020BAF64: .word NNS_G3dSendJointSRT_FuncArray +_020BAF68: .word NNS_G3dSendTexSRT_FuncArray + arm_func_end G3dDrawInternal_ - ; G3dDrawInternal_Loop_ - arm_func_start FUN_020BAF6C -FUN_020BAF6C: ; 0x020BAF6C + arm_func_start G3dDrawInternal_Loop_ +G3dDrawInternal_Loop_: ; 0x020BAF6C stmdb sp!, {r4-r6,lr} mov r5, r0 - ldr r6, _020BAFB4 ; =UNK_02106730 + ldr r6, _020BAFB4 ; =NNS_G3dFuncSbcTable add r4, r5, #0x8 _020BAF7C: ldr r1, [r4, #0x0] @@ -2856,6 +2734,5 @@ _020BAF7C: beq _020BAF7C ldmia sp!, {r4-r6,pc} .balign 4 -_020BAFB4: .word UNK_02106730 - arm_func_end FUN_020BAF6C - +_020BAFB4: .word NNS_G3dFuncSbcTable + arm_func_end G3dDrawInternal_Loop_ diff --git a/arm9/asm/NNS_G3D_si3d.s b/arm9/asm/NNS_G3D_si3d.s index d6986712..66bfe460 100644 --- a/arm9/asm/NNS_G3D_si3d.s +++ b/arm9/asm/NNS_G3D_si3d.s @@ -3,9 +3,8 @@ .section .text - ; NNSi_G3dSendTexSRTSi3d - arm_func_start FUN_020BEF10 -FUN_020BEF10: ; 0x020BEF10 + arm_func_start NNSi_G3dSendTexSRTSi3d +NNSi_G3dSendTexSRTSi3d: ; 0x020BEF10 stmdb sp!, {lr} sub sp, sp, #0x3c ldr r1, [r0, #0x0] @@ -119,17 +118,16 @@ _020BF0B0: ldr r0, [sp, #0x0] add r1, r1, #0x4 mov r2, #0xe - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add sp, sp, #0x3c ldmia sp!, {pc} .balign 4 _020BF0CC: .word 0x00101710 _020BF0D0: .word 0x00101910 - arm_func_end FUN_020BEF10 + arm_func_end NNSi_G3dSendTexSRTSi3d - ; NNSi_G3dGetJointScaleSi3d - arm_func_start FUN_020BF0D4 -FUN_020BF0D4: ; 0x020BF0D4 + arm_func_start NNSi_G3dGetJointScaleSi3d +NNSi_G3dGetJointScaleSi3d: ; 0x020BF0D4 stmdb sp!, {r4-r8,lr} mov r5, r0 ands r0, r3, #0x4 @@ -137,7 +135,7 @@ FUN_020BF0D4: ; 0x020BF0D4 ldrb r0, [r2, #0x2] beq _020BF174 ldr r2, [r5, #0x0] - ldr r1, _020BF2E0 ; =UNK_021CEF7C + ldr r1, _020BF2E0 ; =NNS_G3dRS orr r2, r2, #0x1 str r2, [r5, #0x0] ldr r3, [r1, #0x0] @@ -160,7 +158,7 @@ FUN_020BF0D4: ; 0x020BF0D4 str r0, [r5, #0x0] ldmia sp!, {r4-r8,pc} _020BF148: - ldr r1, _020BF2E4 ; =UNK_021CFD80 + ldr r1, _020BF2E4 ; =NNS_G3dRSOnGlb + 0xE00 mov r2, #0x18 mla r6, r0, r2, r1 mla r1, r4, r2, r1 @@ -173,7 +171,7 @@ _020BF148: ldmia sp!, {r4-r8,pc} _020BF174: ldr r3, [r1, #0x0] - ldr r2, _020BF2E0 ; =UNK_021CEF7C + ldr r2, _020BF2E0 ; =NNS_G3dRS str r3, [r5, #0x4] ldr r3, [r1, #0x4] mov r7, r0, lsr #0x5 @@ -188,12 +186,12 @@ _020BF174: ldr r2, [r2, #0xc4] ands r2, r7, r2 beq _020BF200 - ldr r3, _020BF2E4 ; =UNK_021CFD80 + ldr r3, _020BF2E4 ; =NNS_G3dRSOnGlb + 0xE00 mov r2, #0x18 mov r0, r1 mla r1, r4, r2, r3 bl MIi_CpuCopy32 - ldr r0, _020BF2E0 ; =UNK_021CEF7C + ldr r0, _020BF2E0 ; =NNS_G3dRS mov r2, r4, lsr #0x5 ldr r1, [r0, #0x0] and r0, r4, #0x1f @@ -211,7 +209,7 @@ _020BF200: mov r2, #0x18 mul r12, r0, r2 and r7, r4, #0x1f - ldr r0, _020BF2E4 ; =UNK_021CFD80 + ldr r0, _020BF2E4 ; =NNS_G3dRSOnGlb + 0xE00 add r6, r6, #0xc4 mov lr, r4, lsr #0x5 mvn r7, r3, lsl r7 @@ -221,35 +219,35 @@ _020BF200: str r4, [r6, lr, lsl #0x2] ldr r7, [r1, #0x0] ldr r4, [r0, r12] - ldr r6, _020BF2E8 ; =UNK_021CFD84 + ldr r6, _020BF2E8 ; =NNS_G3dRSOnGlb + 0xE04 smull r8, r4, r7, r4 mov r7, r8, lsr #0xc orr r7, r7, r4, lsl #0x14 str r7, [r0, r3] ldr r8, [r1, #0x4] ldr r4, [r6, r12] - ldr r7, _020BF2EC ; =UNK_021CFD88 + ldr r7, _020BF2EC ; =NNS_G3dRSOnGlb + 0xE08 smull lr, r4, r8, r4 mov r8, lr, lsr #0xc orr r8, r8, r4, lsl #0x14 str r8, [r6, r3] ldr r8, [r1, #0x8] ldr r4, [r7, r12] - ldr r6, _020BF2F0 ; =UNK_021CFD8C + ldr r6, _020BF2F0 ; =NNS_G3dRSOnGlb + 0xE0C smull lr, r4, r8, r4 mov r8, lr, lsr #0xc orr r8, r8, r4, lsl #0x14 str r8, [r7, r3] ldr r7, [r1, #0xc] ldr r4, [r6, r12] - ldr lr, _020BF2F4 ; =UNK_021CFD90 + ldr lr, _020BF2F4 ; =NNS_G3dRSOnGlb + 0xE10 smull r8, r4, r7, r4 mov r7, r8, lsr #0xc orr r7, r7, r4, lsl #0x14 str r7, [r6, r3] ldr r7, [r1, #0x10] ldr r4, [lr, r12] - ldr r6, _020BF2F8 ; =UNK_021CFD94 + ldr r6, _020BF2F8 ; =NNS_G3dRSOnGlb + 0xE14 smull r8, r4, r7, r4 add r0, r0, r12 mov r7, r8, lsr #0xc @@ -265,18 +263,17 @@ _020BF200: bl MIi_CpuCopy32 ldmia sp!, {r4-r8,pc} .balign 4 -_020BF2E0: .word UNK_021CEF7C -_020BF2E4: .word UNK_021CFD80 -_020BF2E8: .word UNK_021CFD84 -_020BF2EC: .word UNK_021CFD88 -_020BF2F0: .word UNK_021CFD8C -_020BF2F4: .word UNK_021CFD90 -_020BF2F8: .word UNK_021CFD94 - arm_func_end FUN_020BF0D4 +_020BF2E0: .word NNS_G3dRS +_020BF2E4: .word NNS_G3dRSOnGlb + 0xE00 +_020BF2E8: .word NNS_G3dRSOnGlb + 0xE04 +_020BF2EC: .word NNS_G3dRSOnGlb + 0xE08 +_020BF2F0: .word NNS_G3dRSOnGlb + 0xE0C +_020BF2F4: .word NNS_G3dRSOnGlb + 0xE10 +_020BF2F8: .word NNS_G3dRSOnGlb + 0xE14 + arm_func_end NNSi_G3dGetJointScaleSi3d - ; _end - arm_func_start FUN_020BF2FC -FUN_020BF2FC: ; 0x020BF2FC + arm_func_start NNSi_G3dSendJointSRTSi3d +NNSi_G3dSendJointSRTSi3d: ; 0x020BF2FC stmdb sp!, {r4-r6,lr} sub sp, sp, #0x10 mov r6, r0 @@ -287,7 +284,7 @@ FUN_020BF2FC: ; 0x020BF2FC add r1, r6, #0x1c mov r0, #0x1b mov r2, #0x3 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020BF328: ldr r0, [r6, #0x0] ands r0, r0, #0x4 @@ -316,7 +313,7 @@ _020BF328: mov r12, lr, lsr #0xc orr r12, r12, r3, lsl #0x14 str r12, [sp, #0x8] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020BF398: ldr r0, [r6, #0x0] ands r0, r0, #0x2 @@ -326,13 +323,13 @@ _020BF398: add r1, r6, #0x28 mov r0, #0x19 mov r2, #0xc - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N b _020BF3EC _020BF3C0: add r1, r6, #0x28 mov r0, #0x1a mov r2, #0x9 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N b _020BF3EC _020BF3D4: cmp r5, #0x0 @@ -340,14 +337,14 @@ _020BF3D4: add r1, r6, #0x4c mov r0, #0x1c mov r2, #0x3 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020BF3EC: cmp r4, #0x0 bne _020BF404 add r1, r6, #0x10 mov r0, #0x1b mov r2, #0x3 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N _020BF404: ldr r0, [r6, #0x0] ands r0, r0, #0x1 @@ -356,8 +353,7 @@ _020BF404: add r1, r6, #0x4 mov r0, #0x1b mov r2, #0x3 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add sp, sp, #0x10 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020BF2FC - + arm_func_end NNSi_G3dSendJointSRTSi3d diff --git a/arm9/asm/NNS_G3D_util.s b/arm9/asm/NNS_G3D_util.s index f6f204d4..932cf871 100644 --- a/arm9/asm/NNS_G3D_util.s +++ b/arm9/asm/NNS_G3D_util.s @@ -3,15 +3,14 @@ .section .text - ; NNS_G3dWorldPosToScrPos - arm_func_start FUN_020BB408 -FUN_020BB408: ; 0x020BB408 + arm_func_start NNS_G3dWorldPosToScrPos +NNS_G3dWorldPosToScrPos: ; 0x020BB408 stmdb sp!, {r4-r9,lr} sub sp, sp, #0x1c mov r5, r1 mov r4, r2 - ldr r6, _020BB594 ; =UNK_021CED20 - ldr r1, _020BB598 ; =UNK_021CED64 + ldr r6, _020BB594 ; =NNS_G3dGlb + 0x8 + ldr r1, _020BB598 ; =NNS_G3dGlb + 0x4C add r2, sp, #0x10 bl MTX_MultVec43 ldr r1, [sp, #0x14] @@ -87,7 +86,7 @@ _020BB534: add r1, sp, #0x4 add r2, sp, #0x8 add r3, sp, #0xc - bl FUN_020B8200 + bl NNS_G3dGlbGetViewPort ldr r2, [sp, #0x0] ldr r0, [sp, #0x8] ldr r12, [sp, #0xc] @@ -108,13 +107,12 @@ _020BB534: add sp, sp, #0x1c ldmia sp!, {r4-r9,pc} .balign 4 -_020BB594: .word UNK_021CED20 -_020BB598: .word UNK_021CED64 - arm_func_end FUN_020BB408 +_020BB594: .word NNS_G3dGlb + 0x8 +_020BB598: .word NNS_G3dGlb + 0x4C + arm_func_end NNS_G3dWorldPosToScrPos - ; NNS_G3dResDefaultSetup - arm_func_start FUN_020BB59C -FUN_020BB59C: ; 0x020BB59C + arm_func_start NNS_G3dResDefaultSetup +NNS_G3dResDefaultSetup: ; 0x020BB59C stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4 mov r5, r0 @@ -157,20 +155,20 @@ _020BB624: mov r0, r5 mov r9, r11 mov r8, r11 - bl FUN_020BC0FC + bl NNS_G3dGetTex movs r4, r0 beq _020BB77C - bl FUN_020B7E1C + bl NNS_G3dTexGetRequiredSize mov r7, r0 mov r0, r4 - bl FUN_020B7E10 + bl NNS_G3dTex4x4GetRequiredSize mov r6, r0 mov r0, r4 - bl FUN_020B7CE4 + bl NNS_G3dPlttGetRequiredSize mov r10, r0 cmp r7, #0x0 beq _020BB68C - ldr r0, _020BB7E4 ; =UNK_021064B8 + ldr r0, _020BB7E4 ; =NNS_GfdDefaultFuncAllocTexVram mov r1, #0x0 ldr r3, [r0, #0x0] mov r0, r7 @@ -184,7 +182,7 @@ _020BB68C: _020BB690: cmp r6, #0x0 beq _020BB6BC - ldr r1, _020BB7E4 ; =UNK_021064B8 + ldr r1, _020BB7E4 ; =NNS_GfdDefaultFuncAllocTexVram mov r0, r6 ldr r3, [r1, #0x0] mov r1, #0x1 @@ -198,7 +196,7 @@ _020BB6BC: _020BB6C0: cmp r10, #0x0 beq _020BB6F0 - ldr r1, _020BB7E8 ; =UNK_021064C0 + ldr r1, _020BB7E8 ; =NNS_GfdDefaultFuncAllocPlttVram ldrh r2, [r4, #0x20] ldr r3, [r1, #0x0] mov r0, r10 @@ -218,15 +216,15 @@ _020BB6F4: cmp r8, #0x0 bne _020BB748 _020BB70C: - ldr r1, _020BB7EC ; =UNK_021064C4 + ldr r1, _020BB7EC ; =NNS_GfdDefaultFuncFreePlttVram mov r0, r10 ldr r1, [r1, #0x0] blx r1 - ldr r1, _020BB7F0 ; =UNK_021064BC + ldr r1, _020BB7F0 ; =NNS_GfdDefaultFuncFreeTexVram mov r0, r6 ldr r1, [r1, #0x0] blx r1 - ldr r1, _020BB7F0 ; =UNK_021064BC + ldr r1, _020BB7F0 ; =NNS_GfdDefaultFuncFreeTexVram mov r0, r7 ldr r1, [r1, #0x0] blx r1 @@ -237,27 +235,27 @@ _020BB748: mov r0, r4 mov r1, r7 mov r2, r6 - bl FUN_020B7DFC + bl NNS_G3dTexSetTexKey mov r0, r4 mov r1, r10 - bl FUN_020B7CDC + bl NNS_G3dPlttSetPlttKey mov r0, r4 mov r1, #0x1 - bl FUN_020B7D28 + bl NNS_G3dTexLoad mov r0, r4 mov r1, #0x1 - bl FUN_020B7C78 + bl NNS_G3dPlttLoad _020BB77C: ldr r1, [r5, #0x0] ldr r0, _020BB7DC ; =0x30444D42 cmp r1, r0 bne _020BB7A4 mov r0, r5 - bl FUN_020BC13C + bl NNS_G3dGetMdlSet cmp r4, #0x0 beq _020BB7A4 mov r1, r4 - bl FUN_020B7790 + bl NNS_G3dBindMdlSet _020BB7A4: add sp, sp, #0x4 mov r0, #0x1 @@ -278,19 +276,18 @@ _020BB7D4: .word 0x30415442 _020BB7D8: .word 0x30505442 _020BB7DC: .word 0x30444D42 _020BB7E0: .word 0x30585442 -_020BB7E4: .word UNK_021064B8 -_020BB7E8: .word UNK_021064C0 -_020BB7EC: .word UNK_021064C4 -_020BB7F0: .word UNK_021064BC - arm_func_end FUN_020BB59C +_020BB7E4: .word NNS_GfdDefaultFuncAllocTexVram +_020BB7E8: .word NNS_GfdDefaultFuncAllocPlttVram +_020BB7EC: .word NNS_GfdDefaultFuncFreePlttVram +_020BB7F0: .word NNS_GfdDefaultFuncFreeTexVram + arm_func_end NNS_G3dResDefaultSetup - ; NNS_G3dInit - arm_func_start FUN_020BB7F4 -FUN_020BB7F4: ; 0x020BB7F4 + arm_func_start NNS_G3dInit +NNS_G3dInit: ; 0x020BB7F4 stmdb sp!, {lr} sub sp, sp, #0x4 bl G3X_Init - bl FUN_020B84D8 + bl NNS_G3dGlbInit ldr r1, _020BB820 ; =0x04000600 ldr r0, [r1, #0x0] bic r0, r0, #0xc0000000 @@ -300,16 +297,15 @@ FUN_020BB7F4: ; 0x020BB7F4 ldmia sp!, {pc} .balign 4 _020BB820: .word 0x04000600 - arm_func_end FUN_020BB7F4 + arm_func_end NNS_G3dInit - ; NNS_G3dGetCurrentMtx - arm_func_start FUN_020BB824 -FUN_020BB824: ; 0x020BB824 + arm_func_start NNS_G3dGetCurrentMtx +NNS_G3dGetCurrentMtx: ; 0x020BB824 stmdb sp!, {r4-r6,lr} sub sp, sp, #0x40 mov r6, r0 mov r5, r1 - bl FUN_020BB394 + bl NNS_G3dGeFlushBuffer ldr r0, _020BB8B4 ; =0x04000440 mov r2, #0x0 ldr r1, _020BB8B8 ; =0x04000444 @@ -350,5 +346,4 @@ _020BB8B4: .word 0x04000440 _020BB8B8: .word 0x04000444 _020BB8BC: .word 0x04000454 _020BB8C0: .word 0x04000448 - arm_func_end FUN_020BB824 - + arm_func_end NNS_G3dGetCurrentMtx diff --git a/arm9/asm/NNS_G3D_xsi.s b/arm9/asm/NNS_G3D_xsi.s index bc0315c1..63787926 100644 --- a/arm9/asm/NNS_G3D_xsi.s +++ b/arm9/asm/NNS_G3D_xsi.s @@ -3,23 +3,21 @@ .section .data - ; calcTexMtx_ - .global UNK_021067F0 -UNK_021067F0: ; 0x021067F0 - .word FUN_020BFFD4 - .word FUN_020BFEEC - .word FUN_020BFE68 - .word FUN_020BFE0C - .word FUN_020BFD38 - .word FUN_020BFC8C - .word FUN_020BFC4C - .word FUN_020BFC28 + .global calcTexMtx_ +calcTexMtx_: ; 0x021067F0 + .word texmtxCalc_flag_ + .word texmtxCalc_flagS_ + .word texmtxCalc_flagR_ + .word texmtxCalc_flagRS_ + .word texmtxCalc_flagT_ + .word texmtxCalc_flagTS_ + .word texmtxCalc_flagTR_ + .word texmtxCalc_flagTRS_ .section .text - ; NNSi_G3dSendTexSRTXsi - arm_func_start FUN_020BFA9C -FUN_020BFA9C: ; 0x020BFA9C + arm_func_start NNSi_G3dSendTexSRTXsi +NNSi_G3dSendTexSRTXsi: ; 0x020BFA9C stmdb sp!, {r4,lr} sub sp, sp, #0x50 mov r4, r0 @@ -63,7 +61,7 @@ FUN_020BFA9C: ; 0x020BFA9C ldrne r0, [r4, #0x28] strne r0, [r4, #0x24] ldr r1, [r4, #0x0] - ldr r0, _020BFC24 ; =UNK_021067F0 + ldr r0, _020BFC24 ; =calcTexMtx_ and r1, r1, #0x7 ldr r2, [r0, r1, lsl #0x2] add r0, sp, #0x8 @@ -115,18 +113,17 @@ _020BFC00: ldr r0, [sp, #0x0] add r1, r1, #0x4 mov r2, #0x12 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add sp, sp, #0x50 ldmia sp!, {r4,pc} .balign 4 _020BFC1C: .word 0x00101610 _020BFC20: .word 0x00101810 -_020BFC24: .word UNK_021067F0 - arm_func_end FUN_020BFA9C +_020BFC24: .word calcTexMtx_ + arm_func_end NNSi_G3dSendTexSRTXsi - ; _end - arm_func_start FUN_020BFC28 -FUN_020BFC28: ; 0x020BFC28 + arm_func_start texmtxCalc_flagTRS_ +texmtxCalc_flagTRS_: ; 0x020BFC28 mov r2, #0x1000 str r2, [r0, #0x0] mov r1, #0x0 @@ -136,11 +133,10 @@ FUN_020BFC28: ; 0x020BFC28 str r1, [r0, #0x30] str r1, [r0, #0x34] bx lr - arm_func_end FUN_020BFC28 + arm_func_end texmtxCalc_flagTRS_ - ; _end - arm_func_start FUN_020BFC4C -FUN_020BFC4C: ; 0x020BFC4C + arm_func_start texmtxCalc_flagTR_ +texmtxCalc_flagTR_: ; 0x020BFC4C ldr r2, [r1, #0x18] mov r3, #0x0 str r2, [r0, #0x0] @@ -157,11 +153,10 @@ FUN_020BFC4C: ; 0x020BFC4C str r1, [r0, #0x34] str r3, [r0, #0x10] bx lr - arm_func_end FUN_020BFC4C + arm_func_end texmtxCalc_flagTR_ - ; _end - arm_func_start FUN_020BFC8C -FUN_020BFC8C: ; 0x020BFC8C + arm_func_start texmtxCalc_flagTS_ +texmtxCalc_flagTS_: ; 0x020BFC8C stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r5, r1 @@ -205,11 +200,10 @@ FUN_020BFC8C: ; 0x020BFC8C str r0, [r6, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BFC8C + arm_func_end texmtxCalc_flagTS_ - ; _end - arm_func_start FUN_020BFD38 -FUN_020BFD38: ; 0x020BFD38 + arm_func_start texmtxCalc_flagT_ +texmtxCalc_flagT_: ; 0x020BFD38 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4 mov r9, r1 @@ -263,11 +257,10 @@ FUN_020BFD38: ; 0x020BFD38 str r0, [r10, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020BFD38 + arm_func_end texmtxCalc_flagT_ - ; _end - arm_func_start FUN_020BFE0C -FUN_020BFE0C: ; 0x020BFE0C + arm_func_start texmtxCalc_flagRS_ +texmtxCalc_flagRS_: ; 0x020BFE0C stmdb sp!, {lr} sub sp, sp, #0x4 mov r2, #0x1000 @@ -291,11 +284,10 @@ FUN_020BFE0C: ; 0x020BFE0C str lr, [r0, #0x10] add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020BFE0C + arm_func_end texmtxCalc_flagRS_ - ; _end - arm_func_start FUN_020BFE68 -FUN_020BFE68: ; 0x020BFE68 + arm_func_start texmtxCalc_flagR_ +texmtxCalc_flagR_: ; 0x020BFE68 stmdb sp!, {r4,lr} ldr r3, [r1, #0x18] mov r2, #0x0 @@ -329,11 +321,10 @@ FUN_020BFE68: ; 0x020BFE68 str r1, [r0, #0x34] str r2, [r0, #0x10] ldmia sp!, {r4,pc} - arm_func_end FUN_020BFE68 + arm_func_end texmtxCalc_flagR_ - ; _end - arm_func_start FUN_020BFEEC -FUN_020BFEEC: ; 0x020BFEEC + arm_func_start texmtxCalc_flagS_ +texmtxCalc_flagS_: ; 0x020BFEEC stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r5, r1 @@ -392,11 +383,10 @@ FUN_020BFEEC: ; 0x020BFEEC str r0, [r6, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - arm_func_end FUN_020BFEEC + arm_func_end texmtxCalc_flagS_ - ; _end - arm_func_start FUN_020BFFD4 -FUN_020BFFD4: ; 0x020BFFD4 + arm_func_start texmtxCalc_flag_ +texmtxCalc_flag_: ; 0x020BFFD4 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4 mov r6, r1 @@ -484,4 +474,4 @@ FUN_020BFFD4: ; 0x020BFFD4 str r0, [r7, #0x10] add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} - arm_func_end FUN_020BFFD4 + arm_func_end texmtxCalc_flag_ diff --git a/arm9/asm/NNS_GFD_gfd_frameplttvr.s b/arm9/asm/NNS_GFD_gfd_frameplttvr.s index de838ccd..63d32aec 100644 --- a/arm9/asm/NNS_GFD_gfd_frameplttvr.s +++ b/arm9/asm/NNS_GFD_gfd_frameplttvr.s @@ -3,62 +3,56 @@ .section .bss - ; s_managerState_ - .global UNK_021CCD4C -UNK_021CCD4C: ; 0x021CCD4C + .global s_managerState_ +s_managerState_: ; 0x021CCD4C .space 0xc .section .text - ; NNS_GfdResetFrmPlttVramState - arm_func_start FUN_020AEC60 -FUN_020AEC60: ; 0x020AEC60 - ldr r0, _020AEC78 ; =UNK_021CCD4C + arm_func_start NNS_GfdResetFrmPlttVramState +NNS_GfdResetFrmPlttVramState: ; 0x020AEC60 + ldr r0, _020AEC78 ; =s_managerState_ mov r2, #0x0 ldr r1, [r0, #0x8] str r2, [r0, #0x0] str r1, [r0, #0x4] bx lr .balign 4 -_020AEC78: .word UNK_021CCD4C - arm_func_end FUN_020AEC60 +_020AEC78: .word s_managerState_ + arm_func_end NNS_GfdResetFrmPlttVramState - ; NNS_GfdSetFrmPlttVramState - arm_func_start FUN_020AEC7C -FUN_020AEC7C: ; 0x020AEC7C + arm_func_start NNS_GfdSetFrmPlttVramState +NNS_GfdSetFrmPlttVramState: ; 0x020AEC7C ldr r2, [r0, #0x0] - ldr r1, _020AEC94 ; =UNK_021CCD4C + ldr r1, _020AEC94 ; =s_managerState_ str r2, [r1, #0x0] ldr r0, [r0, #0x4] str r0, [r1, #0x4] bx lr .balign 4 -_020AEC94: .word UNK_021CCD4C - arm_func_end FUN_020AEC7C +_020AEC94: .word s_managerState_ + arm_func_end NNS_GfdSetFrmPlttVramState - ; NNS_GfdGetFrmPlttVramState - arm_func_start FUN_020AEC98 -FUN_020AEC98: ; 0x020AEC98 - ldr r1, _020AECB0 ; =UNK_021CCD4C + arm_func_start NNS_GfdGetFrmPlttVramState +NNS_GfdGetFrmPlttVramState: ; 0x020AEC98 + ldr r1, _020AECB0 ; =s_managerState_ ldr r2, [r1, #0x0] str r2, [r0, #0x0] ldr r1, [r1, #0x4] str r1, [r0, #0x4] bx lr .balign 4 -_020AECB0: .word UNK_021CCD4C - arm_func_end FUN_020AEC98 +_020AECB0: .word s_managerState_ + arm_func_end NNS_GfdGetFrmPlttVramState - ; _end - arm_func_start FUN_020AECB4 -FUN_020AECB4: ; 0x020AECB4 + arm_func_start NNS_GfdFreeFrmPlttVram +NNS_GfdFreeFrmPlttVram: ; 0x020AECB4 mov r0, #0x0 bx lr - arm_func_end FUN_020AECB4 + arm_func_end NNS_GfdFreeFrmPlttVram - ; NNS_GfdAllocFrmPlttVram - arm_func_start FUN_020AECBC -FUN_020AECBC: ; 0x020AECBC + arm_func_start NNS_GfdAllocFrmPlttVram +NNS_GfdAllocFrmPlttVram: ; 0x020AECBC stmdb sp!, {r4,lr} cmp r0, #0x0 moveq r0, #0x8 @@ -71,7 +65,7 @@ FUN_020AECBC: ; 0x020AECBC ldmcsia sp!, {r4,pc} cmp r2, #0x1 bne _020AED64 - ldr r2, _020AEDEC ; =UNK_021CCD4C + ldr r2, _020AEDEC ; =s_managerState_ cmp r1, #0x0 ldr r12, [r2, #0x0] andne r2, r12, #0x7 @@ -80,7 +74,7 @@ FUN_020AECBC: ; 0x020AECBC andeq r2, r12, #0xf rsbeq r2, r2, #0x10 andeq r4, r2, #0xf - ldr r2, _020AEDEC ; =UNK_021CCD4C + ldr r2, _020AEDEC ; =s_managerState_ add lr, r0, r4 ldr r2, [r2, #0x4] sub r2, r2, r12 @@ -93,7 +87,7 @@ FUN_020AECBC: ; 0x020AECBC movhi r12, #0x0 bhi _020AEDCC _020AED40: - ldr r1, _020AEDEC ; =UNK_021CCD4C + ldr r1, _020AEDEC ; =s_managerState_ add r3, r12, r4 ldr r2, [r1, #0x0] mov r12, #0x1 @@ -104,7 +98,7 @@ _020AED5C: mov r12, #0x0 b _020AEDCC _020AED64: - ldr r2, _020AEDEC ; =UNK_021CCD4C + ldr r2, _020AEDEC ; =s_managerState_ ldr r12, [r2, #0x4] cmp r12, r0 blo _020AEDC8 @@ -112,7 +106,7 @@ _020AED64: cmp r1, #0x0 andne r4, r2, #0x7 andeq r4, r2, #0xf - ldr r2, _020AEDEC ; =UNK_021CCD4C + ldr r2, _020AEDEC ; =s_managerState_ add lr, r0, r4 ldr r2, [r2, #0x0] sub r2, r12, r2 @@ -124,7 +118,7 @@ _020AED64: movhi r12, #0x0 bhi _020AEDCC _020AEDB0: - ldr r1, _020AEDEC ; =UNK_021CCD4C + ldr r1, _020AEDEC ; =s_managerState_ mov r12, #0x1 ldr r2, [r1, #0x4] sub r3, r2, lr @@ -142,32 +136,30 @@ _020AEDCC: ldmia sp!, {r4,pc} .balign 4 _020AEDE8: .word 0x0007FFF8 -_020AEDEC: .word UNK_021CCD4C +_020AEDEC: .word s_managerState_ _020AEDF0: .word 0x0000FFFF - arm_func_end FUN_020AECBC + arm_func_end NNS_GfdAllocFrmPlttVram - ; NNS_GfdInitFrmPlttVramManager - arm_func_start FUN_020AEDF4 -FUN_020AEDF4: ; 0x020AEDF4 + arm_func_start NNS_GfdInitFrmPlttVramManager +NNS_GfdInitFrmPlttVramManager: ; 0x020AEDF4 stmdb sp!, {r4,lr} - ldr r2, _020AEE2C ; =UNK_021CCD4C + ldr r2, _020AEE2C ; =s_managerState_ mov r4, r1 str r0, [r2, #0x8] - bl FUN_020AEC60 + bl NNS_GfdResetFrmPlttVramState cmp r4, #0x0 ldmeqia sp!, {r4,pc} - ldr r3, _020AEE30 ; =FUN_020AECBC - ldr r1, _020AEE34 ; =UNK_021064C0 - ldr r2, _020AEE38 ; =FUN_020AECB4 - ldr r0, _020AEE3C ; =UNK_021064C4 + ldr r3, _020AEE30 ; =NNS_GfdAllocFrmPlttVram + ldr r1, _020AEE34 ; =NNS_GfdDefaultFuncAllocPlttVram + ldr r2, _020AEE38 ; =NNS_GfdFreeFrmPlttVram + ldr r0, _020AEE3C ; =NNS_GfdDefaultFuncFreePlttVram str r3, [r1, #0x0] str r2, [r0, #0x0] ldmia sp!, {r4,pc} .balign 4 -_020AEE2C: .word UNK_021CCD4C -_020AEE30: .word FUN_020AECBC -_020AEE34: .word UNK_021064C0 -_020AEE38: .word FUN_020AECB4 -_020AEE3C: .word UNK_021064C4 - arm_func_end FUN_020AEDF4 - +_020AEE2C: .word s_managerState_ +_020AEE30: .word NNS_GfdAllocFrmPlttVram +_020AEE34: .word NNS_GfdDefaultFuncAllocPlttVram +_020AEE38: .word NNS_GfdFreeFrmPlttVram +_020AEE3C: .word NNS_GfdDefaultFuncFreePlttVram + arm_func_end NNS_GfdInitFrmPlttVramManager diff --git a/arm9/asm/NNS_GFD_gfd_frametexvra.s b/arm9/asm/NNS_GFD_gfd_frametexvra.s index 7d9f5874..6cc4da87 100644 --- a/arm9/asm/NNS_GFD_gfd_frametexvra.s +++ b/arm9/asm/NNS_GFD_gfd_frametexvra.s @@ -3,67 +3,46 @@ .section .data - ; tex4x4SearchArray_ - .global UNK_021064C8 -UNK_021064C8: ; 0x021064C8 - .word UNK_021064E4 - .word UNK_0210652C + .global tex4x4SearchArray_ +tex4x4SearchArray_: ; 0x021064C8 + .word vramRegions_ + .word vramRegions_ + 0x48 - ; texNrmSearchArray_ - .global UNK_021064D0 -UNK_021064D0: ; 0x021064D0 - .word UNK_02106544 - .word UNK_0210652C - .word UNK_021064E4 - .word UNK_02106514 - .word UNK_021064FC + .global texNrmSearchArray_ +texNrmSearchArray_: ; 0x021064D0 + .word vramRegions_ + 0x60 + .word vramRegions_ + 0x48 + .word vramRegions_ + .word vramRegions_ + 0x30 + .word vramRegions_ + 0x18 - ; vramRegions_ - .global UNK_021064E4 -UNK_021064E4: ; 0x021064E4 + .global vramRegions_ +vramRegions_: ; 0x021064E4 .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 - - ; vramRegions_ + 0x18 - .global UNK_021064FC -UNK_021064FC: ; 0x021064FC .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 .byte 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x00 - - ; vramRegions_ + 0x30 - .global UNK_02106514 -UNK_02106514: ; 0x02106514 .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 .byte 0x02, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x00 - - ; vramRegions_ + 0x48 - .global UNK_0210652C -UNK_0210652C: ; 0x0210652C .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x03, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00 - - ; vramRegions_ + 0x60 - .global UNK_02106544 -UNK_02106544: ; 0x02106544 .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x04, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0x00 .section .bss - ; frmExVramMan_ - .global UNK_021CCD48 -UNK_021CCD48: ; 0x021CCD48 + .global frmExVramMan_ +frmExVramMan_: ; 0x021CCD48 .space 0x4 .section .text - ; NNS_GfdSetFrmTexVramState - arm_func_start FUN_020AE8CC -FUN_020AE8CC: ; 0x020AE8CC + arm_func_start NNS_GfdSetFrmTexVramState +NNS_GfdSetFrmTexVramState: ; 0x020AE8CC stmdb sp!, {lr} sub sp, sp, #0x4 mov lr, #0x0 - ldr r3, _020AE914 ; =UNK_021064E4 + ldr r3, _020AE914 ; =vramRegions_ mov r12, lr mov r2, #0x1 _020AE8E4: @@ -80,16 +59,15 @@ _020AE8E4: add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020AE914: .word UNK_021064E4 - arm_func_end FUN_020AE8CC +_020AE914: .word vramRegions_ + arm_func_end NNS_GfdSetFrmTexVramState - ; NNS_GfdGetFrmTexVramState - arm_func_start FUN_020AE918 -FUN_020AE918: ; 0x020AE918 + arm_func_start NNS_GfdGetFrmTexVramState +NNS_GfdGetFrmTexVramState: ; 0x020AE918 stmdb sp!, {lr} sub sp, sp, #0x4 mov lr, #0x0 - ldr ip, _020AE960 ; =UNK_021064E4 + ldr ip, _020AE960 ; =vramRegions_ mov r3, lr mov r2, #0x1 _020AE930: @@ -106,19 +84,17 @@ _020AE930: add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020AE960: .word UNK_021064E4 - arm_func_end FUN_020AE918 +_020AE960: .word vramRegions_ + arm_func_end NNS_GfdGetFrmTexVramState - ; _end - arm_func_start FUN_020AE964 -FUN_020AE964: ; 0x020AE964 + arm_func_start NNS_GfdFreeFrmTexVram +NNS_GfdFreeFrmTexVram: ; 0x020AE964 mov r0, #0x0 bx lr - arm_func_end FUN_020AE964 + arm_func_end NNS_GfdFreeFrmTexVram - ; NNS_GfdAllocFrmTexVram - arm_func_start FUN_020AE96C -FUN_020AE96C: ; 0x020AE96C + arm_func_start NNS_GfdAllocFrmTexVram +NNS_GfdAllocFrmTexVram: ; 0x020AE96C stmdb sp!, {r4-r10,lr} cmp r0, #0x0 moveq r7, #0x10 @@ -132,9 +108,9 @@ FUN_020AE96C: ; 0x020AE96C beq _020AEA5C mov lr, r7, lsr #0x1 mov r6, #0x0 - ldr r2, _020AEAE0 ; =UNK_02106514 - ldr r3, _020AEAE4 ; =UNK_021064FC - ldr ip, _020AEAE8 ; =UNK_021064C8 + ldr r2, _020AEAE0 ; =vramRegions_ + 0x30 + ldr r3, _020AEAE4 ; =vramRegions_ + 0x18 + ldr ip, _020AEAE8 ; =tex4x4SearchArray_ mov r0, r6 _020AE9B0: ldr r5, [r12, r6, lsl #0x2] @@ -186,7 +162,7 @@ _020AEA48: mov r0, #0x0 b _020AEAB8 _020AEA5C: - ldr r3, _020AEAEC ; =UNK_021064D0 + ldr r3, _020AEAEC ; =texNrmSearchArray_ mov r5, #0x0 _020AEA64: ldr r4, [r3, r5, lsl #0x2] @@ -223,22 +199,21 @@ _020AEAB8: ldmia sp!, {r4-r10,pc} .balign 4 _020AEADC: .word 0x0007FFF0 -_020AEAE0: .word UNK_02106514 -_020AEAE4: .word UNK_021064FC -_020AEAE8: .word UNK_021064C8 -_020AEAEC: .word UNK_021064D0 +_020AEAE0: .word vramRegions_ + 0x30 +_020AEAE4: .word vramRegions_ + 0x18 +_020AEAE8: .word tex4x4SearchArray_ +_020AEAEC: .word texNrmSearchArray_ _020AEAF0: .word 0x0000FFFF - arm_func_end FUN_020AE96C + arm_func_end NNS_GfdAllocFrmTexVram - ; NNS_GfdResetFrmTexVramState - arm_func_start FUN_020AEAF4 -FUN_020AEAF4: ; 0x020AEAF4 + arm_func_start NNS_GfdResetFrmTexVramState +NNS_GfdResetFrmTexVramState: ; 0x020AEAF4 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 - ldr r0, _020AEB68 ; =UNK_021CCD48 + ldr r0, _020AEB68 ; =frmExVramMan_ mov r6, #0x0 ldrh r7, [r0, #0x0] - ldr r5, _020AEB6C ; =UNK_021064E4 + ldr r5, _020AEB6C ; =vramRegions_ mov lr, r6 cmp r7, #0x1 addhi r7, r7, #0x1 @@ -264,13 +239,12 @@ _020AEB2C: add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020AEB68: .word UNK_021CCD48 -_020AEB6C: .word UNK_021064E4 - arm_func_end FUN_020AEAF4 +_020AEB68: .word frmExVramMan_ +_020AEB6C: .word vramRegions_ + arm_func_end NNS_GfdResetFrmTexVramState - ; NNS_GfdInitFrmTexVramManager - arm_func_start FUN_020AEB70 -FUN_020AEB70: ; 0x020AEB70 + arm_func_start NNS_GfdInitFrmTexVramManager +NNS_GfdInitFrmTexVramManager: ; 0x020AEB70 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 @@ -283,7 +257,7 @@ FUN_020AEB70: ; 0x020AEB70 mov r2, #0x2 mov r3, #0x0 str r12, [sp, #0x0] - bl FUN_020AEC10 + bl NNSi_GfdSetTexNrmSearchArray b _020AEBC4 _020AEBA8: mov r12, #0x1 @@ -292,40 +266,39 @@ _020AEBA8: mov r2, #0x0 mov r3, #0x2 str r12, [sp, #0x0] - bl FUN_020AEC10 + bl NNSi_GfdSetTexNrmSearchArray _020AEBC4: - ldr r0, _020AEBFC ; =UNK_021CCD48 + ldr r0, _020AEBFC ; =frmExVramMan_ strh r5, [r0, #0x0] - bl FUN_020AEAF4 + bl NNS_GfdResetFrmTexVramState cmp r4, #0x0 addeq sp, sp, #0x4 ldmeqia sp!, {r4-r5,pc} - ldr r3, _020AEC00 ; =FUN_020AE96C - ldr r1, _020AEC04 ; =UNK_021064B8 - ldr r2, _020AEC08 ; =FUN_020AE964 - ldr r0, _020AEC0C ; =UNK_021064BC + ldr r3, _020AEC00 ; =NNS_GfdAllocFrmTexVram + ldr r1, _020AEC04 ; =NNS_GfdDefaultFuncAllocTexVram + ldr r2, _020AEC08 ; =NNS_GfdFreeFrmTexVram + ldr r0, _020AEC0C ; =NNS_GfdDefaultFuncFreeTexVram str r3, [r1, #0x0] str r2, [r0, #0x0] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020AEBFC: .word UNK_021CCD48 -_020AEC00: .word FUN_020AE96C -_020AEC04: .word UNK_021064B8 -_020AEC08: .word FUN_020AE964 -_020AEC0C: .word UNK_021064BC - arm_func_end FUN_020AEB70 +_020AEBFC: .word frmExVramMan_ +_020AEC00: .word NNS_GfdAllocFrmTexVram +_020AEC04: .word NNS_GfdDefaultFuncAllocTexVram +_020AEC08: .word NNS_GfdFreeFrmTexVram +_020AEC0C: .word NNS_GfdDefaultFuncFreeTexVram + arm_func_end NNS_GfdInitFrmTexVramManager - ; NNSi_GfdSetTexNrmSearchArray - arm_func_start FUN_020AEC10 -FUN_020AEC10: ; 0x020AEC10 + arm_func_start NNSi_GfdSetTexNrmSearchArray +NNSi_GfdSetTexNrmSearchArray: ; 0x020AEC10 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 ldr lr, [sp, #0x18] - ldr r6, _020AEC58 ; =UNK_021064E4 + ldr r6, _020AEC58 ; =vramRegions_ mov r12, #0x18 mla r7, r0, r12, r6 - ldr r0, _020AEC5C ; =UNK_021064D0 + ldr r0, _020AEC5C ; =texNrmSearchArray_ mla r5, r1, r12, r6 mla r4, r2, r12, r6 mla r2, r3, r12, r6 @@ -338,7 +311,6 @@ FUN_020AEC10: ; 0x020AEC10 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020AEC58: .word UNK_021064E4 -_020AEC5C: .word UNK_021064D0 - arm_func_end FUN_020AEC10 - +_020AEC58: .word vramRegions_ +_020AEC5C: .word texNrmSearchArray_ + arm_func_end NNSi_GfdSetTexNrmSearchArray diff --git a/arm9/asm/NNS_GFD_gfd_linkedlistp.s b/arm9/asm/NNS_GFD_gfd_linkedlistp.s index 4ef85974..dd1af2f9 100644 --- a/arm9/asm/NNS_GFD_gfd_linkedlistp.s +++ b/arm9/asm/NNS_GFD_gfd_linkedlistp.s @@ -3,47 +3,38 @@ .section .bss - ; mgr_ - .global UNK_021CCD88 -UNK_021CCD88: ; 0x021CCD88 - .space 0x4 - - ; mgr_ + 0x4 - .global UNK_021CCD8C -UNK_021CCD8C: ; 0x021CCD8C - .space 0x10 +mgr_: ; 0x021CCD88 + .space 0x14 .section .text - ; NNS_GfdResetLnkPlttVramState - arm_func_start FUN_020AFA30 -FUN_020AFA30: ; 0x020AFA30 + arm_func_start NNS_GfdResetLnkPlttVramState +NNS_GfdResetLnkPlttVramState: ; 0x020AFA30 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r0, _020AFA78 ; =UNK_021CCD88 + ldr r0, _020AFA78 ; =mgr_ ldr r1, [r0, #0x10] ldr r0, [r0, #0xc] mov r1, r1, lsr #0x4 - bl FUN_020AF64C - ldr r1, _020AFA78 ; =UNK_021CCD88 + bl NNSi_GfdInitLnkVramBlockPool + ldr r1, _020AFA78 ; =mgr_ str r0, [r1, #0x4] mov r0, r1 - bl FUN_020AF698 - ldr r0, _020AFA78 ; =UNK_021CCD88 - ldr r1, _020AFA7C ; =UNK_021CCD8C + bl NNSi_GfdInitLnkVramMan + ldr r0, _020AFA78 ; =mgr_ + ldr r1, _020AFA7C ; =mgr_ + 0x4 ldr r3, [r0, #0x8] mov r2, #0x0 - bl FUN_020AF5E0 + bl NNSi_GfdAddNewFreeBlock add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020AFA78: .word UNK_021CCD88 -_020AFA7C: .word UNK_021CCD8C - arm_func_end FUN_020AFA30 +_020AFA78: .word mgr_ +_020AFA7C: .word mgr_ + 0x4 + arm_func_end NNS_GfdResetLnkPlttVramState - ; NNS_GfdFreeLnkPlttVram - arm_func_start FUN_020AFA80 -FUN_020AFA80: ; 0x020AFA80 + arm_func_start NNS_GfdFreeLnkPlttVram +NNS_GfdFreeLnkPlttVram: ; 0x020AFA80 stmdb sp!, {lr} sub sp, sp, #0x4 mov r1, #0x10000 @@ -52,11 +43,11 @@ FUN_020AFA80: ; 0x020AFA80 and r2, r0, r2 and r12, r0, r1 mov r3, r2, lsr #0x10 - ldr r0, _020AFACC ; =UNK_021CCD88 - ldr r1, _020AFAD0 ; =UNK_021CCD8C + ldr r0, _020AFACC ; =mgr_ + ldr r1, _020AFAD0 ; =mgr_ + 0x4 mov r2, r12, lsl #0x3 mov r3, r3, lsl #0x3 - bl FUN_020AF334 + bl NNSi_GfdFreeLnkVram cmp r0, #0x0 moveq r0, #0x1 movne r0, #0x0 @@ -64,13 +55,12 @@ FUN_020AFA80: ; 0x020AFA80 ldmia sp!, {pc} .balign 4 _020AFAC8: .word 0x0000FFFF -_020AFACC: .word UNK_021CCD88 -_020AFAD0: .word UNK_021CCD8C - arm_func_end FUN_020AFA80 +_020AFACC: .word mgr_ +_020AFAD0: .word mgr_ + 0x4 + arm_func_end NNS_GfdFreeLnkPlttVram - ; NNS_GfdAllocLnkPlttVram - arm_func_start FUN_020AFAD4 -FUN_020AFAD4: ; 0x020AFAD4 + arm_func_start NNS_GfdAllocLnkPlttVram +NNS_GfdAllocLnkPlttVram: ; 0x020AFAD4 stmdb sp!, {r4,lr} sub sp, sp, #0x8 cmp r0, #0x0 @@ -85,31 +75,31 @@ FUN_020AFAD4: ; 0x020AFAD4 cmp r1, #0x0 beq _020AFB50 mov r12, #0x8 - ldr r0, _020AFB9C ; =UNK_021CCD88 - ldr r1, _020AFBA0 ; =UNK_021CCD8C + ldr r0, _020AFB9C ; =mgr_ + ldr r1, _020AFBA0 ; =mgr_ + 0x4 add r2, sp, #0x4 mov r3, r4 str r12, [sp, #0x0] - bl FUN_020AF488 + bl NNSi_GfdAllocLnkVramAligned ldr r2, [sp, #0x4] add r1, r2, r4 cmp r1, #0x10000 bls _020AFB6C - ldr r0, _020AFB9C ; =UNK_021CCD88 - ldr r1, _020AFBA0 ; =UNK_021CCD8C + ldr r0, _020AFB9C ; =mgr_ + ldr r1, _020AFBA0 ; =mgr_ + 0x4 mov r3, r4 - bl FUN_020AF334 + bl NNSi_GfdFreeLnkVram add sp, sp, #0x8 mov r0, #0x0 ldmia sp!, {r4,pc} _020AFB50: - ldr r0, _020AFB9C ; =UNK_021CCD88 + ldr r0, _020AFB9C ; =mgr_ mov r12, #0x10 - ldr r1, _020AFBA0 ; =UNK_021CCD8C + ldr r1, _020AFBA0 ; =mgr_ + 0x4 add r2, sp, #0x4 mov r3, r4 str r12, [sp, #0x0] - bl FUN_020AF488 + bl NNSi_GfdAllocLnkVramAligned _020AFB6C: cmp r0, #0x0 addeq sp, sp, #0x8 @@ -124,42 +114,39 @@ _020AFB6C: ldmia sp!, {r4,pc} .balign 4 _020AFB98: .word 0x0007FFF8 -_020AFB9C: .word UNK_021CCD88 -_020AFBA0: .word UNK_021CCD8C +_020AFB9C: .word mgr_ +_020AFBA0: .word mgr_ + 0x4 _020AFBA4: .word 0x0000FFFF - arm_func_end FUN_020AFAD4 + arm_func_end NNS_GfdAllocLnkPlttVram - ; NNS_GfdInitLnkPlttVramManager - arm_func_start FUN_020AFBA8 -FUN_020AFBA8: ; 0x020AFBA8 + arm_func_start NNS_GfdInitLnkPlttVramManager +NNS_GfdInitLnkPlttVramManager: ; 0x020AFBA8 stmdb sp!, {r4,lr} - ldr ip, _020AFBE8 ; =UNK_021CCD88 + ldr ip, _020AFBE8 ; =mgr_ mov r4, r3 str r0, [r12, #0x8] str r1, [r12, #0xc] str r2, [r12, #0x10] - bl FUN_020AFA30 + bl NNS_GfdResetLnkPlttVramState cmp r4, #0x0 ldmeqia sp!, {r4,pc} - ldr r3, _020AFBEC ; =FUN_020AFAD4 - ldr r1, _020AFBF0 ; =UNK_021064C0 - ldr r2, _020AFBF4 ; =FUN_020AFA80 - ldr r0, _020AFBF8 ; =UNK_021064C4 + ldr r3, _020AFBEC ; =NNS_GfdAllocLnkPlttVram + ldr r1, _020AFBF0 ; =NNS_GfdDefaultFuncAllocPlttVram + ldr r2, _020AFBF4 ; =NNS_GfdFreeLnkPlttVram + ldr r0, _020AFBF8 ; =NNS_GfdDefaultFuncFreePlttVram str r3, [r1, #0x0] str r2, [r0, #0x0] ldmia sp!, {r4,pc} .balign 4 -_020AFBE8: .word UNK_021CCD88 -_020AFBEC: .word FUN_020AFAD4 -_020AFBF0: .word UNK_021064C0 -_020AFBF4: .word FUN_020AFA80 -_020AFBF8: .word UNK_021064C4 - arm_func_end FUN_020AFBA8 +_020AFBE8: .word mgr_ +_020AFBEC: .word NNS_GfdAllocLnkPlttVram +_020AFBF0: .word NNS_GfdDefaultFuncAllocPlttVram +_020AFBF4: .word NNS_GfdFreeLnkPlttVram +_020AFBF8: .word NNS_GfdDefaultFuncFreePlttVram + arm_func_end NNS_GfdInitLnkPlttVramManager - ; _end - arm_func_start FUN_020AFBFC -FUN_020AFBFC: ; 0x020AFBFC + arm_func_start NNS_GfdGetLnkPlttVramManagerWorkSize +NNS_GfdGetLnkPlttVramManagerWorkSize: ; 0x020AFBFC mov r0, r0, lsl #0x4 bx lr - arm_func_end FUN_020AFBFC - + arm_func_end NNS_GfdGetLnkPlttVramManagerWorkSize diff --git a/arm9/asm/NNS_GFD_gfd_linkedlistt.s b/arm9/asm/NNS_GFD_gfd_linkedlistt.s index 1c611a0e..6522bf3b 100644 --- a/arm9/asm/NNS_GFD_gfd_linkedlistt.s +++ b/arm9/asm/NNS_GFD_gfd_linkedlistt.s @@ -3,45 +3,31 @@ .section .rodata - ; @7929 - .global UNK_020FF864 -UNK_020FF864: ; 0x020FF864 + .global __LOCAL_LABEL__$7929 +__LOCAL_LABEL__$7929: ; 0x020FF864 .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .section .bss - ; mgr_ - .global UNK_021CCD6C -UNK_021CCD6C: ; 0x021CCD6C - .space 0x4 - - ; mgr_ + 0x4 - .global UNK_021CCD70 -UNK_021CCD70: ; 0x021CCD70 - .space 0x4 - - ; mgr_ + 0x8 - .global UNK_021CCD74 -UNK_021CCD74: ; 0x021CCD74 - .space 0x14 +mgr_: ; 0x021CCD6C + .space 0x1C .section .text - ; NNS_GfdResetLnkTexVramState - arm_func_start FUN_020AF6A4 -FUN_020AF6A4: ; 0x020AF6A4 + arm_func_start NNS_GfdResetLnkTexVramState +NNS_GfdResetLnkTexVramState: ; 0x020AF6A4 stmdb sp!, {r4-r6,lr} sub sp, sp, #0x30 - ldr r6, _020AF884 ; =UNK_020FF864 + ldr r6, _020AF884 ; =__LOCAL_LABEL__$7929 add r5, sp, #0x0 ldmia r6!, {r0-r3} mov r12, r5 stmia r5!, {r0-r3} ldmia r6!, {r0-r3} stmia r5!, {r0-r3} - ldr r4, _020AF888 ; =UNK_021CCD6C + ldr r4, _020AF888 ; =mgr_ ldmia r6, {r0-r3} stmia r5, {r0-r3} ldr lr, [r4, #0x10] @@ -100,78 +86,77 @@ _020AF790: cmp r3, #0x4 add r5, r5, #0xc blo _020AF758 - ldr r0, _020AF888 ; =UNK_021CCD6C - bl FUN_020AF698 - ldr r0, _020AF88C ; =UNK_021CCD70 - bl FUN_020AF698 - ldr r0, _020AF888 ; =UNK_021CCD6C + ldr r0, _020AF888 ; =mgr_ + bl NNSi_GfdInitLnkVramMan + ldr r0, _020AF88C ; =mgr_ + 0x4 + bl NNSi_GfdInitLnkVramMan + ldr r0, _020AF888 ; =mgr_ ldr r1, [r0, #0x18] ldr r0, [r0, #0x14] mov r1, r1, lsr #0x4 - bl FUN_020AF64C + bl NNSi_GfdInitLnkVramBlockPool ldr r3, [sp, #0x8] - ldr r1, _020AF888 ; =UNK_021CCD6C + ldr r1, _020AF888 ; =mgr_ cmp r3, #0x0 str r0, [r1, #0x8] beq _020AF7E8 - ldr r0, _020AF88C ; =UNK_021CCD70 - ldr r1, _020AF890 ; =UNK_021CCD74 + ldr r0, _020AF88C ; =mgr_ + 0x4 + ldr r1, _020AF890 ; =mgr_ + 0x8 mov r2, #0x0 - bl FUN_020AF5E0 + bl NNSi_GfdAddNewFreeBlock _020AF7E8: ldr r3, [sp, #0x4] ldr r2, [sp, #0x8] cmp r3, #0x0 beq _020AF804 - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - bl FUN_020AF5E0 + ldr r0, _020AF888 ; =mgr_ + ldr r1, _020AF890 ; =mgr_ + 0x8 + bl NNSi_GfdAddNewFreeBlock _020AF804: ldr r3, [sp, #0x20] cmp r3, #0x0 beq _020AF820 - ldr r0, _020AF88C ; =UNK_021CCD70 - ldr r1, _020AF890 ; =UNK_021CCD74 + ldr r0, _020AF88C ; =mgr_ + 0x4 + ldr r1, _020AF890 ; =mgr_ + 0x8 mov r2, #0x40000 - bl FUN_020AF5E0 + bl NNSi_GfdAddNewFreeBlock _020AF820: ldr r3, [sp, #0x1c] ldr r0, [sp, #0x20] cmp r3, #0x0 add r2, r0, #0x40000 beq _020AF840 - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 - bl FUN_020AF5E0 + ldr r0, _020AF888 ; =mgr_ + ldr r1, _020AF890 ; =mgr_ + 0x8 + bl NNSi_GfdAddNewFreeBlock _020AF840: ldr r3, [sp, #0x28] cmp r3, #0x0 beq _020AF85C - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 + ldr r0, _020AF888 ; =mgr_ + ldr r1, _020AF890 ; =mgr_ + 0x8 mov r2, #0x60000 - bl FUN_020AF5E0 + bl NNSi_GfdAddNewFreeBlock _020AF85C: ldr r3, [sp, #0x10] cmp r3, #0x0 addeq sp, sp, #0x30 ldmeqia sp!, {r4-r6,pc} - ldr r0, _020AF888 ; =UNK_021CCD6C - ldr r1, _020AF890 ; =UNK_021CCD74 + ldr r0, _020AF888 ; =mgr_ + ldr r1, _020AF890 ; =mgr_ + 0x8 add r2, r4, #0x20000 - bl FUN_020AF5E0 + bl NNSi_GfdAddNewFreeBlock add sp, sp, #0x30 ldmia sp!, {r4-r6,pc} .balign 4 -_020AF884: .word UNK_020FF864 -_020AF888: .word UNK_021CCD6C -_020AF88C: .word UNK_021CCD70 -_020AF890: .word UNK_021CCD74 - arm_func_end FUN_020AF6A4 +_020AF884: .word __LOCAL_LABEL__$7929 +_020AF888: .word mgr_ +_020AF88C: .word mgr_ + 0x4 +_020AF890: .word mgr_ + 0x8 + arm_func_end NNS_GfdResetLnkTexVramState - ; NNS_GfdFreeLnkTexVram - arm_func_start FUN_020AF894 -FUN_020AF894: ; 0x020AF894 + arm_func_start NNS_GfdFreeLnkTexVram +NNS_GfdFreeLnkTexVram: ; 0x020AF894 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r2, _020AF908 ; =0x7FFF0000 @@ -186,14 +171,14 @@ FUN_020AF894: ; 0x020AF894 beq _020AF8FC cmp r0, #0x0 beq _020AF8DC - ldr r0, _020AF910 ; =UNK_021CCD70 - ldr r1, _020AF914 ; =UNK_021CCD74 - bl FUN_020AF334 + ldr r0, _020AF910 ; =mgr_ + 0x4 + ldr r1, _020AF914 ; =mgr_ + 0x8 + bl NNSi_GfdFreeLnkVram b _020AF8E8 _020AF8DC: - ldr r0, _020AF918 ; =UNK_021CCD6C - ldr r1, _020AF914 ; =UNK_021CCD74 - bl FUN_020AF334 + ldr r0, _020AF918 ; =mgr_ + ldr r1, _020AF914 ; =mgr_ + 0x8 + bl NNSi_GfdFreeLnkVram _020AF8E8: cmp r0, #0x0 movne r0, #0x0 @@ -207,14 +192,13 @@ _020AF8FC: .balign 4 _020AF908: .word 0x7FFF0000 _020AF90C: .word 0x0000FFFF -_020AF910: .word UNK_021CCD70 -_020AF914: .word UNK_021CCD74 -_020AF918: .word UNK_021CCD6C - arm_func_end FUN_020AF894 +_020AF910: .word mgr_ + 0x4 +_020AF914: .word mgr_ + 0x8 +_020AF918: .word mgr_ + arm_func_end NNS_GfdFreeLnkTexVram - ; NNS_GfdAllocLnkTexVram - arm_func_start FUN_020AF91C -FUN_020AF91C: ; 0x020AF91C + arm_func_start NNS_GfdAllocLnkTexVram +NNS_GfdAllocLnkTexVram: ; 0x020AF91C stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 cmp r0, #0x0 @@ -229,18 +213,18 @@ FUN_020AF91C: ; 0x020AF91C ldmcsia sp!, {r4-r5,pc} cmp r4, #0x0 beq _020AF96C - ldr r0, _020AF9B4 ; =UNK_021CCD70 - ldr r1, _020AF9B8 ; =UNK_021CCD74 + ldr r0, _020AF9B4 ; =mgr_ + 0x4 + ldr r1, _020AF9B8 ; =mgr_ + 0x8 add r2, sp, #0x0 mov r3, r5 - bl FUN_020AF5C4 + bl NNSi_GfdAllocLnkVram b _020AF980 _020AF96C: - ldr r0, _020AF9BC ; =UNK_021CCD6C - ldr r1, _020AF9B8 ; =UNK_021CCD74 + ldr r0, _020AF9BC ; =mgr_ + ldr r1, _020AF9B8 ; =mgr_ + 0x8 add r2, sp, #0x0 mov r3, r5 - bl FUN_020AF5C4 + bl NNSi_GfdAllocLnkVram _020AF980: cmp r0, #0x0 addeq sp, sp, #0x4 @@ -256,47 +240,44 @@ _020AF980: ldmia sp!, {r4-r5,pc} .balign 4 _020AF9B0: .word 0x0007FFF0 -_020AF9B4: .word UNK_021CCD70 -_020AF9B8: .word UNK_021CCD74 -_020AF9BC: .word UNK_021CCD6C +_020AF9B4: .word mgr_ + 0x4 +_020AF9B8: .word mgr_ + 0x8 +_020AF9BC: .word mgr_ _020AF9C0: .word 0x0000FFFF - arm_func_end FUN_020AF91C + arm_func_end NNS_GfdAllocLnkTexVram - ; NNS_GfdInitLnkTexVramManager - arm_func_start FUN_020AF9C4 -FUN_020AF9C4: ; 0x020AF9C4 + arm_func_start NNS_GfdInitLnkTexVramManager +NNS_GfdInitLnkTexVramManager: ; 0x020AF9C4 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr ip, _020AFA14 ; =UNK_021CCD6C + ldr ip, _020AFA14 ; =mgr_ str r0, [r12, #0xc] str r1, [r12, #0x10] str r2, [r12, #0x14] str r3, [r12, #0x18] - bl FUN_020AF6A4 + bl NNS_GfdResetLnkTexVramState ldr r0, [sp, #0x8] cmp r0, #0x0 addeq sp, sp, #0x4 ldmeqia sp!, {pc} - ldr r3, _020AFA18 ; =FUN_020AF91C - ldr r1, _020AFA1C ; =UNK_021064B8 - ldr r2, _020AFA20 ; =FUN_020AF894 - ldr r0, _020AFA24 ; =UNK_021064BC + ldr r3, _020AFA18 ; =NNS_GfdAllocLnkTexVram + ldr r1, _020AFA1C ; =NNS_GfdDefaultFuncAllocTexVram + ldr r2, _020AFA20 ; =NNS_GfdFreeLnkTexVram + ldr r0, _020AFA24 ; =NNS_GfdDefaultFuncFreeTexVram str r3, [r1, #0x0] str r2, [r0, #0x0] add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020AFA14: .word UNK_021CCD6C -_020AFA18: .word FUN_020AF91C -_020AFA1C: .word UNK_021064B8 -_020AFA20: .word FUN_020AF894 -_020AFA24: .word UNK_021064BC - arm_func_end FUN_020AF9C4 +_020AFA14: .word mgr_ +_020AFA18: .word NNS_GfdAllocLnkTexVram +_020AFA1C: .word NNS_GfdDefaultFuncAllocTexVram +_020AFA20: .word NNS_GfdFreeLnkTexVram +_020AFA24: .word NNS_GfdDefaultFuncFreeTexVram + arm_func_end NNS_GfdInitLnkTexVramManager - ; _end - arm_func_start FUN_020AFA28 -FUN_020AFA28: ; 0x020AFA28 + arm_func_start NNS_GfdGetLnkTexVramManagerWorkSize +NNS_GfdGetLnkTexVramManagerWorkSize: ; 0x020AFA28 mov r0, r0, lsl #0x4 bx lr - arm_func_end FUN_020AFA28 - + arm_func_end NNS_GfdGetLnkTexVramManagerWorkSize diff --git a/arm9/asm/NNS_GFD_gfd_plttvramman.s b/arm9/asm/NNS_GFD_gfd_plttvramman.s index d1a9c3cc..c869a9a1 100644 --- a/arm9/asm/NNS_GFD_gfd_plttvramman.s +++ b/arm9/asm/NNS_GFD_gfd_plttvramman.s @@ -3,29 +3,24 @@ .section .data - ; NNS_GfdDefaultFuncAllocPlttVram - .global UNK_021064C0 -UNK_021064C0: ; 0x021064C0 - .word FUN_020AE8C4 + .global NNS_GfdDefaultFuncAllocPlttVram +NNS_GfdDefaultFuncAllocPlttVram: ; 0x021064C0 + .word AllocPlttVram_ - ; NNS_GfdDefaultFuncFreePlttVram - .global UNK_021064C4 -UNK_021064C4: ; 0x021064C4 - .word FUN_020AE8BC + .global NNS_GfdDefaultFuncFreePlttVram +NNS_GfdDefaultFuncFreePlttVram: ; 0x021064C4 + .word FreePlttVram_ .section .text - ; _end - arm_func_start FUN_020AE8BC -FUN_020AE8BC: ; 0x020AE8BC + arm_func_start FreePlttVram_ +FreePlttVram_: ; 0x020AE8BC mvn r0, #0x0 bx lr - arm_func_end FUN_020AE8BC + arm_func_end FreePlttVram_ - ; _end - arm_func_start FUN_020AE8C4 -FUN_020AE8C4: ; 0x020AE8C4 + arm_func_start AllocPlttVram_ +AllocPlttVram_: ; 0x020AE8C4 mov r0, #0x0 bx lr - arm_func_end FUN_020AE8C4 - + arm_func_end AllocPlttVram_ diff --git a/arm9/asm/NNS_GFD_gfd_texvramman.s b/arm9/asm/NNS_GFD_gfd_texvramman.s index e647619d..d2f6c88f 100644 --- a/arm9/asm/NNS_GFD_gfd_texvramman.s +++ b/arm9/asm/NNS_GFD_gfd_texvramman.s @@ -3,29 +3,24 @@ .section .data - ; NNS_GfdDefaultFuncAllocTexVram - .global UNK_021064B8 -UNK_021064B8: ; 0x021064B8 - .word FUN_020AE8B4 + .global NNS_GfdDefaultFuncAllocTexVram +NNS_GfdDefaultFuncAllocTexVram: ; 0x021064B8 + .word AllocTexVram_ - ; NNS_GfdDefaultFuncFreeTexVram - .global UNK_021064BC -UNK_021064BC: ; 0x021064BC - .word FUN_020AE8AC + .global NNS_GfdDefaultFuncFreeTexVram +NNS_GfdDefaultFuncFreeTexVram: ; 0x021064BC + .word FreeTexVram_ .section .text - ; _end - arm_func_start FUN_020AE8AC -FUN_020AE8AC: ; 0x020AE8AC + arm_func_start FreeTexVram_ +FreeTexVram_: ; 0x020AE8AC mvn r0, #0x0 bx lr - arm_func_end FUN_020AE8AC + arm_func_end FreeTexVram_ - ; _end - arm_func_start FUN_020AE8B4 -FUN_020AE8B4: ; 0x020AE8B4 + arm_func_start AllocTexVram_ +AllocTexVram_: ; 0x020AE8B4 mov r0, #0x0 bx lr - arm_func_end FUN_020AE8B4 - + arm_func_end AllocTexVram_ diff --git a/arm9/asm/NNS_GFD_gfd_vramtransfe.s b/arm9/asm/NNS_GFD_gfd_vramtransfe.s index 86c62841..9e3a8863 100644 --- a/arm9/asm/NNS_GFD_gfd_vramtransfe.s +++ b/arm9/asm/NNS_GFD_gfd_vramtransfe.s @@ -3,81 +3,78 @@ .section .rodata - ; transFunc$7934 - .global UNK_020FF7D4 -UNK_020FF7D4: ; 0x020FF7D4 - .word FUN_020AF2B4 - .word FUN_020AF288 - .word FUN_020AF25C - .word FUN_020AF230 - .word GX_LoadBG0Char_2 - .word GX_LoadBG1Char_2 - .word GX_LoadBG2Char_2 - .word GX_LoadBG3Char_2 - .word GX_LoadBG0Scr_2 - .word GX_LoadBG1Scr_2 - .word GX_LoadBG2Scr_2 - .word GX_LoadBG3Scr_2 - .word GX_LoadBG2Scr_3 - .word GX_LoadBG3Scr_3 - .word GX_LoadOBJPltt_2 - .word GX_LoadBGPltt_2 - .word FUN_020AF174 - .word FUN_020AF148 - .word GX_LoadOAM_2 - .word GX_LoadOBJ_2 - .word GXS_LoadBG0Char_2 - .word GXS_LoadBG1Char_2 - .word GXS_LoadBG2Char_2 - .word GXS_LoadBG3Char_2 - .word GXS_LoadBG0Scr_2 - .word GXS_LoadBG1Scr_2 - .word GXS_LoadBG2Scr_2 - .word GXS_LoadBG3Scr_2 - .word GXS_LoadBG2Scr_3 - .word GXS_LoadBG3Scr_3 - .word GXS_LoadOBJPltt_2 - .word GXS_LoadBGPltt_2 - .word FUN_020AF074 - .word FUN_020AF048 - .word GXS_LoadOAM_2 - .word GXS_LoadOBJ_2 - + .global transFunc$7934 +transFunc$7934: ; 0x020FF7D4 + .word DoTransfer3dTex + .word DoTransfer3dTexPltt + .word DoTransfer3dClearImageColor + .word DoTransfer3dClearImageDepth + .word DoTransfer2dBG0CharMain + .word DoTransfer2dBG1CharMain + .word DoTransfer2dBG2CharMain + .word DoTransfer2dBG3CharMain + .word DoTransfer2dBG0ScrMain + .word DoTransfer2dBG1ScrMain + .word DoTransfer2dBG2ScrMain + .word DoTransfer2dBG3ScrMain + .word DoTransfer2dBG2BmpMain + .word DoTransfer2dBG3BmpMain + .word DoTransfer2dObjPlttMain + .word DoTransfer2dBGPlttMain + .word DoTransfer2dObjExtPlttMain + .word DoTransfer2dBGExtPlttMain + .word DoTransfer2dObjOamMain + .word DoTransfer2dObjCharMain + .word DoTransfer2dBG0CharSub + .word DoTransfer2dBG1CharSub + .word DoTransfer2dBG2CharSub + .word DoTransfer2dBG3CharSub + .word DoTransfer2dBG0ScrSub + .word DoTransfer2dBG1ScrSub + .word DoTransfer2dBG2ScrSub + .word DoTransfer2dBG3ScrSub + .word DoTransfer2dBG2BmpSub + .word DoTransfer2dBG3BmpSub + .word DoTransfer2dObjPlttSub + .word DoTransfer2dBGPlttSub + .word DoTransfer2dObjExtPlttSub + .word DoTransfer2dBGExtPlttSub + .word DoTransfer2dObjOamSub + .word DoTransfer2dObjCharSub ; const initializer + .section .bss - ; s_VramTransferManager - .global UNK_021CCD58 -UNK_021CCD58: ; 0x021CCD58 + .global s_VramTransferManager +s_VramTransferManager: ; 0x021CCD58 .space 0x14 .section .text - ; NNS_GfdRegisterNewVramTransferTask - arm_func_start FUN_020AEE40 -FUN_020AEE40: ; 0x020AEE40 + arm_func_start NNS_GfdRegisterNewVramTransferTask +NNS_GfdRegisterNewVramTransferTask: ; 0x020AEE40 stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4 - ldr r5, _020AEEB4 ; =UNK_021CCD58 + ldr r5, _020AEEB4 ; =s_VramTransferManager mov r9, r0 mov r0, r5 mov r8, r1 mov r7, r2 mov r6, r3 - bl FUN_020AF2F4 + bl IsVramTransferTaskQueueFull_ cmp r0, #0x0 addne sp, sp, #0x4 movne r0, #0x0 ldmneia sp!, {r4-r9,pc} mov r0, r5 - bl FUN_020AEF78 + bl NNSi_GfdGetEndVramTransferTaskQueue mov r4, r0 str r9, [r4, #0x0] str r7, [r4, #0x4] str r8, [r4, #0x8] mov r0, r5 str r6, [r4, #0xc] - bl FUN_020AEF98 + bl NNSi_GfdPushVramTransferTaskQueue ldr r2, [r5, #0x10] ldr r1, [r4, #0xc] mov r0, #0x1 @@ -86,116 +83,109 @@ FUN_020AEE40: ; 0x020AEE40 add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} .balign 4 -_020AEEB4: .word UNK_021CCD58 - arm_func_end FUN_020AEE40 +_020AEEB4: .word s_VramTransferManager + arm_func_end NNS_GfdRegisterNewVramTransferTask - ; NNS_GfdDoVramTransfer - arm_func_start FUN_020AEEB8 -FUN_020AEEB8: ; 0x020AEEB8 + arm_func_start NNS_GfdDoVramTransfer +NNS_GfdDoVramTransfer: ; 0x020AEEB8 stmdb sp!, {r4-r6,lr} - ldr r6, _020AEF18 ; =UNK_021CCD58 + ldr r6, _020AEF18 ; =s_VramTransferManager mov r0, r6 - bl FUN_020AEF88 + bl NNSi_GfdGetFrontVramTransferTaskQueue mov r5, r0 mov r0, r6 - bl FUN_020AEF3C + bl NNSi_GfdPopVramTransferTaskQueue cmp r0, #0x0 ldmeqia sp!, {r4-r6,pc} add r4, r6, #0x10 _020AEEE0: mov r0, r5 - bl FUN_020AEFF0 + bl DoTransfer_ ldr r2, [r4, #0x0] ldr r1, [r5, #0xc] mov r0, r6 sub r1, r2, r1 str r1, [r4, #0x0] - bl FUN_020AEF88 + bl NNSi_GfdGetFrontVramTransferTaskQueue mov r5, r0 mov r0, r6 - bl FUN_020AEF3C + bl NNSi_GfdPopVramTransferTaskQueue cmp r0, #0x0 bne _020AEEE0 ldmia sp!, {r4-r6,pc} .balign 4 -_020AEF18: .word UNK_021CCD58 - arm_func_end FUN_020AEEB8 +_020AEF18: .word s_VramTransferManager + arm_func_end NNS_GfdDoVramTransfer - ; NNS_GfdInitVramTransferManager - arm_func_start FUN_020AEF1C -FUN_020AEF1C: ; 0x020AEF1C - ldr r2, _020AEF34 ; =UNK_021CCD58 - ldr ip, _020AEF38 ; =FUN_020AEFD4 + arm_func_start NNS_GfdInitVramTransferManager +NNS_GfdInitVramTransferManager: ; 0x020AEF1C + ldr r2, _020AEF34 ; =s_VramTransferManager + ldr ip, _020AEF38 ; =ResetTaskQueue_ str r0, [r2, #0x0] mov r0, r2 str r1, [r2, #0x4] bx r12 .balign 4 -_020AEF34: .word UNK_021CCD58 -_020AEF38: .word FUN_020AEFD4 - arm_func_end FUN_020AEF1C +_020AEF34: .word s_VramTransferManager +_020AEF38: .word ResetTaskQueue_ + arm_func_end NNS_GfdInitVramTransferManager - ; _end - arm_func_start FUN_020AEF3C -FUN_020AEF3C: ; 0x020AEF3C + arm_func_start NNSi_GfdPopVramTransferTaskQueue +NNSi_GfdPopVramTransferTaskQueue: ; 0x020AEF3C stmdb sp!, {r4,lr} mov r4, r0 - bl FUN_020AF2E0 + bl IsVramTransferTaskQueueEmpty_ cmp r0, #0x0 movne r0, #0x0 ldmneia sp!, {r4,pc} ldrh r1, [r4, #0x8] mov r0, r4 - bl FUN_020AF30C + bl GetNextIndex_ strh r0, [r4, #0x8] ldrh r1, [r4, #0xc] mov r0, #0x1 sub r1, r1, #0x1 strh r1, [r4, #0xc] ldmia sp!, {r4,pc} - arm_func_end FUN_020AEF3C + arm_func_end NNSi_GfdPopVramTransferTaskQueue - ; _end - arm_func_start FUN_020AEF78 -FUN_020AEF78: ; 0x020AEF78 + arm_func_start NNSi_GfdGetEndVramTransferTaskQueue +NNSi_GfdGetEndVramTransferTaskQueue: ; 0x020AEF78 ldrh r1, [r0, #0xa] ldr r0, [r0, #0x0] add r0, r0, r1, lsl #0x4 bx lr - arm_func_end FUN_020AEF78 + arm_func_end NNSi_GfdGetEndVramTransferTaskQueue - ; _end - arm_func_start FUN_020AEF88 -FUN_020AEF88: ; 0x020AEF88 + arm_func_start NNSi_GfdGetFrontVramTransferTaskQueue +NNSi_GfdGetFrontVramTransferTaskQueue: ; 0x020AEF88 ldrh r1, [r0, #0x8] ldr r0, [r0, #0x0] add r0, r0, r1, lsl #0x4 bx lr - arm_func_end FUN_020AEF88 + arm_func_end NNSi_GfdGetFrontVramTransferTaskQueue - ; _end - arm_func_start FUN_020AEF98 -FUN_020AEF98: ; 0x020AEF98 + arm_func_start NNSi_GfdPushVramTransferTaskQueue +NNSi_GfdPushVramTransferTaskQueue: ; 0x020AEF98 stmdb sp!, {r4,lr} mov r4, r0 - bl FUN_020AF2F4 + bl IsVramTransferTaskQueueFull_ cmp r0, #0x0 movne r0, #0x0 ldmneia sp!, {r4,pc} ldrh r1, [r4, #0xa] mov r0, r4 - bl FUN_020AF30C + bl GetNextIndex_ strh r0, [r4, #0xa] ldrh r1, [r4, #0xc] mov r0, #0x1 add r1, r1, #0x1 strh r1, [r4, #0xc] ldmia sp!, {r4,pc} - arm_func_end FUN_020AEF98 + arm_func_end NNSi_GfdPushVramTransferTaskQueue - ; _end - arm_func_start FUN_020AEFD4 -FUN_020AEFD4: ; 0x020AEFD4 + arm_func_start ResetTaskQueue_ +ResetTaskQueue_: ; 0x020AEFD4 mov r2, #0x0 strh r2, [r0, #0xa] ldrh r1, [r0, #0xa] @@ -203,16 +193,15 @@ FUN_020AEFD4: ; 0x020AEFD4 strh r2, [r0, #0xc] str r2, [r0, #0x10] bx lr - arm_func_end FUN_020AEFD4 + arm_func_end ResetTaskQueue_ - ; DoTransfer_ - arm_func_start FUN_020AEFF0 -FUN_020AEFF0: ; 0x020AEFF0 + arm_func_start DoTransfer_ +DoTransfer_: ; 0x020AEFF0 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 ldr r3, [r5, #0x0] - ldr r2, _020AF02C ; =UNK_020FF7D4 + ldr r2, _020AF02C ; =transFunc$7934 ldr r0, [r5, #0x4] ldr r1, [r5, #0xc] ldr r4, [r2, r3, lsl #0x2] @@ -224,28 +213,25 @@ FUN_020AEFF0: ; 0x020AEFF0 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020AF02C: .word UNK_020FF7D4 - arm_func_end FUN_020AEFF0 - -GXS_LoadOBJ_2: +_020AF02C: .word transFunc$7934 + arm_func_end DoTransfer_ +DoTransfer2dObjCharSub: ldr ip, _020AF038 ; =GXS_LoadOBJ bx r12 .balign 4 _020AF038: .word GXS_LoadOBJ - arm_func_end GXS_LoadOBJ_2 + arm_func_end DoTransfer2dObjCharSub - ; DoTransfer2dObjOamSub - arm_func_start GXS_LoadOAM_2 -GXS_LoadOAM_2: ; 0x020AF03C + arm_func_start DoTransfer2dObjOamSub +DoTransfer2dObjOamSub: ; 0x020AF03C ldr ip, _020AF044 ; =GXS_LoadOAM bx r12 .balign 4 _020AF044: .word GXS_LoadOAM - arm_func_end GXS_LoadOAM_2 + arm_func_end DoTransfer2dObjOamSub - ; _end - arm_func_start FUN_020AF048 -FUN_020AF048: ; 0x020AF048 + arm_func_start DoTransfer2dBGExtPlttSub +DoTransfer2dBGExtPlttSub: ; 0x020AF048 stmdb sp!, {r4-r6,lr} mov r6, r0 mov r5, r1 @@ -257,11 +243,10 @@ FUN_020AF048: ; 0x020AF048 bl GXS_LoadBGExtPltt bl GXS_EndLoadBGExtPltt ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AF048 + arm_func_end DoTransfer2dBGExtPlttSub - ; _end - arm_func_start FUN_020AF074 -FUN_020AF074: ; 0x020AF074 + arm_func_start DoTransfer2dObjExtPlttSub +DoTransfer2dObjExtPlttSub: ; 0x020AF074 stmdb sp!, {r4-r6,lr} mov r6, r0 mov r5, r1 @@ -273,137 +258,122 @@ FUN_020AF074: ; 0x020AF074 bl GXS_LoadOBJExtPltt bl GXS_EndLoadOBJExtPltt ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AF074 + arm_func_end DoTransfer2dObjExtPlttSub - ; DoTransfer2dBGPlttSub - arm_func_start GXS_LoadBGPltt_2 -GXS_LoadBGPltt_2: ; 0x020AF0A0 + arm_func_start DoTransfer2dBGPlttSub +DoTransfer2dBGPlttSub: ; 0x020AF0A0 ldr ip, _020AF0A8 ; =GXS_LoadBGPltt bx r12 .balign 4 _020AF0A8: .word GXS_LoadBGPltt - arm_func_end GXS_LoadBGPltt_2 + arm_func_end DoTransfer2dBGPlttSub - ; DoTransfer2dObjPlttSub - arm_func_start GXS_LoadOBJPltt_2 -GXS_LoadOBJPltt_2: ; 0x020AF0AC + arm_func_start DoTransfer2dObjPlttSub +DoTransfer2dObjPlttSub: ; 0x020AF0AC ldr ip, _020AF0B4 ; =GXS_LoadOBJPltt bx r12 .balign 4 _020AF0B4: .word GXS_LoadOBJPltt - arm_func_end GXS_LoadOBJPltt_2 + arm_func_end DoTransfer2dObjPlttSub - ; DoTransfer2dBG3BmpSub - arm_func_start GXS_LoadBG3Scr_3 -GXS_LoadBG3Scr_3: ; 0x020AF0B8 + arm_func_start DoTransfer2dBG3BmpSub +DoTransfer2dBG3BmpSub: ; 0x020AF0B8 ldr ip, _020AF0C0 ; =GXS_LoadBG3Scr bx r12 .balign 4 _020AF0C0: .word GXS_LoadBG3Scr - arm_func_end GXS_LoadBG3Scr_3 + arm_func_end DoTransfer2dBG3BmpSub - ; DoTransfer2dBG2BmpSub - arm_func_start GXS_LoadBG2Scr_3 -GXS_LoadBG2Scr_3: ; 0x020AF0C4 + arm_func_start DoTransfer2dBG2BmpSub +DoTransfer2dBG2BmpSub: ; 0x020AF0C4 ldr ip, _020AF0CC ; =GXS_LoadBG2Scr bx r12 .balign 4 _020AF0CC: .word GXS_LoadBG2Scr - arm_func_end GXS_LoadBG2Scr_3 + arm_func_end DoTransfer2dBG2BmpSub - ; DoTransfer2dBG3ScrSub - arm_func_start GXS_LoadBG3Scr_2 -GXS_LoadBG3Scr_2: ; 0x020AF0D0 + arm_func_start DoTransfer2dBG3ScrSub +DoTransfer2dBG3ScrSub: ; 0x020AF0D0 ldr ip, _020AF0D8 ; =GXS_LoadBG3Scr bx r12 .balign 4 _020AF0D8: .word GXS_LoadBG3Scr - arm_func_end GXS_LoadBG3Scr_2 + arm_func_end DoTransfer2dBG3ScrSub - ; DoTransfer2dBG2ScrSub - arm_func_start GXS_LoadBG2Scr_2 -GXS_LoadBG2Scr_2: ; 0x020AF0DC + arm_func_start DoTransfer2dBG2ScrSub +DoTransfer2dBG2ScrSub: ; 0x020AF0DC ldr ip, _020AF0E4 ; =GXS_LoadBG2Scr bx r12 .balign 4 _020AF0E4: .word GXS_LoadBG2Scr - arm_func_end GXS_LoadBG2Scr_2 + arm_func_end DoTransfer2dBG2ScrSub - ; DoTransfer2dBG1ScrSub - arm_func_start GXS_LoadBG1Scr_2 -GXS_LoadBG1Scr_2: ; 0x020AF0E8 + arm_func_start DoTransfer2dBG1ScrSub +DoTransfer2dBG1ScrSub: ; 0x020AF0E8 ldr ip, _020AF0F0 ; =GXS_LoadBG1Scr bx r12 .balign 4 _020AF0F0: .word GXS_LoadBG1Scr - arm_func_end GXS_LoadBG1Scr_2 + arm_func_end DoTransfer2dBG1ScrSub - ; DoTransfer2dBG0ScrSub - arm_func_start GXS_LoadBG0Scr_2 -GXS_LoadBG0Scr_2: ; 0x020AF0F4 + arm_func_start DoTransfer2dBG0ScrSub +DoTransfer2dBG0ScrSub: ; 0x020AF0F4 ldr ip, _020AF0FC ; =GXS_LoadBG0Scr bx r12 .balign 4 _020AF0FC: .word GXS_LoadBG0Scr - arm_func_end GXS_LoadBG0Scr_2 + arm_func_end DoTransfer2dBG0ScrSub - ; DoTransfer2dBG3CharSub - arm_func_start GXS_LoadBG3Char_2 -GXS_LoadBG3Char_2: ; 0x020AF100 + arm_func_start DoTransfer2dBG3CharSub +DoTransfer2dBG3CharSub: ; 0x020AF100 ldr ip, _020AF108 ; =GXS_LoadBG3Char bx r12 .balign 4 _020AF108: .word GXS_LoadBG3Char - arm_func_end GXS_LoadBG3Char_2 + arm_func_end DoTransfer2dBG3CharSub - ; DoTransfer2dBG2CharSub - arm_func_start GXS_LoadBG2Char_2 -GXS_LoadBG2Char_2: ; 0x020AF10C + arm_func_start DoTransfer2dBG2CharSub +DoTransfer2dBG2CharSub: ; 0x020AF10C ldr ip, _020AF114 ; =GXS_LoadBG2Char bx r12 .balign 4 _020AF114: .word GXS_LoadBG2Char - arm_func_end GXS_LoadBG2Char_2 + arm_func_end DoTransfer2dBG2CharSub - ; DoTransfer2dBG1CharSub - arm_func_start GXS_LoadBG1Char_2 -GXS_LoadBG1Char_2: ; 0x020AF118 + arm_func_start DoTransfer2dBG1CharSub +DoTransfer2dBG1CharSub: ; 0x020AF118 ldr ip, _020AF120 ; =GXS_LoadBG1Char bx r12 .balign 4 _020AF120: .word GXS_LoadBG1Char - arm_func_end GXS_LoadBG1Char_2 + arm_func_end DoTransfer2dBG1CharSub - ; DoTransfer2dBG0CharSub - arm_func_start GXS_LoadBG0Char_2 -GXS_LoadBG0Char_2: ; 0x020AF124 + arm_func_start DoTransfer2dBG0CharSub +DoTransfer2dBG0CharSub: ; 0x020AF124 ldr ip, _020AF12C ; =GXS_LoadBG0Char bx r12 .balign 4 _020AF12C: .word GXS_LoadBG0Char - arm_func_end GXS_LoadBG0Char_2 + arm_func_end DoTransfer2dBG0CharSub - ; DoTransfer2dObjCharMain - arm_func_start GX_LoadOBJ_2 -GX_LoadOBJ_2: ; 0x020AF130 + arm_func_start DoTransfer2dObjCharMain +DoTransfer2dObjCharMain: ; 0x020AF130 ldr ip, _020AF138 ; =GX_LoadOBJ bx r12 .balign 4 _020AF138: .word GX_LoadOBJ - arm_func_end GX_LoadOBJ_2 + arm_func_end DoTransfer2dObjCharMain - ; DoTransfer2dObjOamMain - arm_func_start GX_LoadOAM_2 -GX_LoadOAM_2: ; 0x020AF13C + arm_func_start DoTransfer2dObjOamMain +DoTransfer2dObjOamMain: ; 0x020AF13C ldr ip, _020AF144 ; =GX_LoadOAM bx r12 .balign 4 _020AF144: .word GX_LoadOAM - arm_func_end GX_LoadOAM_2 + arm_func_end DoTransfer2dObjOamMain - ; _end - arm_func_start FUN_020AF148 -FUN_020AF148: ; 0x020AF148 + arm_func_start DoTransfer2dBGExtPlttMain +DoTransfer2dBGExtPlttMain: ; 0x020AF148 stmdb sp!, {r4-r6,lr} mov r6, r0 mov r5, r1 @@ -415,11 +385,10 @@ FUN_020AF148: ; 0x020AF148 bl GX_LoadBGExtPltt bl GX_EndLoadBGExtPltt ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AF148 + arm_func_end DoTransfer2dBGExtPlttMain - ; _end - arm_func_start FUN_020AF174 -FUN_020AF174: ; 0x020AF174 + arm_func_start DoTransfer2dObjExtPlttMain +DoTransfer2dObjExtPlttMain: ; 0x020AF174 stmdb sp!, {r4-r6,lr} mov r6, r0 mov r5, r1 @@ -431,119 +400,106 @@ FUN_020AF174: ; 0x020AF174 bl GX_LoadOBJExtPltt bl GX_EndLoadOBJExtPltt ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AF174 + arm_func_end DoTransfer2dObjExtPlttMain - ; DoTransfer2dBGPlttMain - arm_func_start GX_LoadBGPltt_2 -GX_LoadBGPltt_2: ; 0x020AF1A0 + arm_func_start DoTransfer2dBGPlttMain +DoTransfer2dBGPlttMain: ; 0x020AF1A0 ldr ip, _020AF1A8 ; =GX_LoadBGPltt bx r12 .balign 4 _020AF1A8: .word GX_LoadBGPltt - arm_func_end GX_LoadBGPltt_2 + arm_func_end DoTransfer2dBGPlttMain - ; DoTransfer2dObjPlttMain - arm_func_start GX_LoadOBJPltt_2 -GX_LoadOBJPltt_2: ; 0x020AF1AC + arm_func_start DoTransfer2dObjPlttMain +DoTransfer2dObjPlttMain: ; 0x020AF1AC ldr ip, _020AF1B4 ; =GX_LoadOBJPltt bx r12 .balign 4 _020AF1B4: .word GX_LoadOBJPltt - arm_func_end GX_LoadOBJPltt_2 + arm_func_end DoTransfer2dObjPlttMain - ; DoTransfer2dBG3BmpMain - arm_func_start GX_LoadBG3Scr_3 -GX_LoadBG3Scr_3: ; 0x020AF1B8 + arm_func_start DoTransfer2dBG3BmpMain +DoTransfer2dBG3BmpMain: ; 0x020AF1B8 ldr ip, _020AF1C0 ; =GX_LoadBG3Scr bx r12 .balign 4 _020AF1C0: .word GX_LoadBG3Scr - arm_func_end GX_LoadBG3Scr_3 + arm_func_end DoTransfer2dBG3BmpMain - ; DoTransfer2dBG2BmpMain - arm_func_start GX_LoadBG2Scr_3 -GX_LoadBG2Scr_3: ; 0x020AF1C4 + arm_func_start DoTransfer2dBG2BmpMain +DoTransfer2dBG2BmpMain: ; 0x020AF1C4 ldr ip, _020AF1CC ; =GX_LoadBG2Scr bx r12 .balign 4 _020AF1CC: .word GX_LoadBG2Scr - arm_func_end GX_LoadBG2Scr_3 + arm_func_end DoTransfer2dBG2BmpMain - ; DoTransfer2dBG3ScrMain - arm_func_start GX_LoadBG3Scr_2 -GX_LoadBG3Scr_2: ; 0x020AF1D0 + arm_func_start DoTransfer2dBG3ScrMain +DoTransfer2dBG3ScrMain: ; 0x020AF1D0 ldr ip, _020AF1D8 ; =GX_LoadBG3Scr bx r12 .balign 4 _020AF1D8: .word GX_LoadBG3Scr - arm_func_end GX_LoadBG3Scr_2 + arm_func_end DoTransfer2dBG3ScrMain - ; DoTransfer2dBG2ScrMain - arm_func_start GX_LoadBG2Scr_2 -GX_LoadBG2Scr_2: ; 0x020AF1DC + arm_func_start DoTransfer2dBG2ScrMain +DoTransfer2dBG2ScrMain: ; 0x020AF1DC ldr ip, _020AF1E4 ; =GX_LoadBG2Scr bx r12 .balign 4 _020AF1E4: .word GX_LoadBG2Scr - arm_func_end GX_LoadBG2Scr_2 + arm_func_end DoTransfer2dBG2ScrMain - ; DoTransfer2dBG1ScrMain - arm_func_start GX_LoadBG1Scr_2 -GX_LoadBG1Scr_2: ; 0x020AF1E8 + arm_func_start DoTransfer2dBG1ScrMain +DoTransfer2dBG1ScrMain: ; 0x020AF1E8 ldr ip, _020AF1F0 ; =GX_LoadBG1Scr bx r12 .balign 4 _020AF1F0: .word GX_LoadBG1Scr - arm_func_end GX_LoadBG1Scr_2 + arm_func_end DoTransfer2dBG1ScrMain - ; DoTransfer2dBG0ScrMain - arm_func_start GX_LoadBG0Scr_2 -GX_LoadBG0Scr_2: ; 0x020AF1F4 + arm_func_start DoTransfer2dBG0ScrMain +DoTransfer2dBG0ScrMain: ; 0x020AF1F4 ldr ip, _020AF1FC ; =GX_LoadBG0Scr bx r12 .balign 4 _020AF1FC: .word GX_LoadBG0Scr - arm_func_end GX_LoadBG0Scr_2 + arm_func_end DoTransfer2dBG0ScrMain - ; DoTransfer2dBG3CharMain - arm_func_start GX_LoadBG3Char_2 -GX_LoadBG3Char_2: ; 0x020AF200 + arm_func_start DoTransfer2dBG3CharMain +DoTransfer2dBG3CharMain: ; 0x020AF200 ldr ip, _020AF208 ; =GX_LoadBG3Char bx r12 .balign 4 _020AF208: .word GX_LoadBG3Char - arm_func_end GX_LoadBG3Char_2 + arm_func_end DoTransfer2dBG3CharMain - ; DoTransfer2dBG2CharMain - arm_func_start GX_LoadBG2Char_2 -GX_LoadBG2Char_2: ; 0x020AF20C + arm_func_start DoTransfer2dBG2CharMain +DoTransfer2dBG2CharMain: ; 0x020AF20C ldr ip, _020AF214 ; =GX_LoadBG2Char bx r12 .balign 4 _020AF214: .word GX_LoadBG2Char - arm_func_end GX_LoadBG2Char_2 + arm_func_end DoTransfer2dBG2CharMain - ; DoTransfer2dBG1CharMain - arm_func_start GX_LoadBG1Char_2 -GX_LoadBG1Char_2: ; 0x020AF218 + arm_func_start DoTransfer2dBG1CharMain +DoTransfer2dBG1CharMain: ; 0x020AF218 ldr ip, _020AF220 ; =GX_LoadBG1Char bx r12 .balign 4 _020AF220: .word GX_LoadBG1Char - arm_func_end GX_LoadBG1Char_2 + arm_func_end DoTransfer2dBG1CharMain - ; DoTransfer2dBG0CharMain - arm_func_start GX_LoadBG0Char_2 -GX_LoadBG0Char_2: ; 0x020AF224 + arm_func_start DoTransfer2dBG0CharMain +DoTransfer2dBG0CharMain: ; 0x020AF224 ldr ip, _020AF22C ; =GX_LoadBG0Char bx r12 .balign 4 _020AF22C: .word GX_LoadBG0Char - arm_func_end GX_LoadBG0Char_2 + arm_func_end DoTransfer2dBG0CharMain - ; _end - arm_func_start FUN_020AF230 -FUN_020AF230: ; 0x020AF230 + arm_func_start DoTransfer3dClearImageDepth +DoTransfer3dClearImageDepth: ; 0x020AF230 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 @@ -555,11 +511,10 @@ FUN_020AF230: ; 0x020AF230 bl GX_EndLoadClearImage add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020AF230 + arm_func_end DoTransfer3dClearImageDepth - ; _end - arm_func_start FUN_020AF25C -FUN_020AF25C: ; 0x020AF25C + arm_func_start DoTransfer3dClearImageColor +DoTransfer3dClearImageColor: ; 0x020AF25C stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 @@ -571,11 +526,10 @@ FUN_020AF25C: ; 0x020AF25C bl GX_EndLoadClearImage add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - arm_func_end FUN_020AF25C + arm_func_end DoTransfer3dClearImageColor - ; _end - arm_func_start FUN_020AF288 -FUN_020AF288: ; 0x020AF288 + arm_func_start DoTransfer3dTexPltt +DoTransfer3dTexPltt: ; 0x020AF288 stmdb sp!, {r4-r6,lr} mov r6, r0 mov r5, r1 @@ -587,11 +541,10 @@ FUN_020AF288: ; 0x020AF288 bl GX_LoadTexPltt bl GX_EndLoadTexPltt ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AF288 + arm_func_end DoTransfer3dTexPltt - ; _end - arm_func_start FUN_020AF2B4 -FUN_020AF2B4: ; 0x020AF2B4 + arm_func_start DoTransfer3dTex +DoTransfer3dTex: ; 0x020AF2B4 stmdb sp!, {r4-r6,lr} mov r6, r0 mov r5, r1 @@ -603,32 +556,29 @@ FUN_020AF2B4: ; 0x020AF2B4 bl GX_LoadTex bl GX_EndLoadTex ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AF2B4 + arm_func_end DoTransfer3dTex - ; _end - arm_func_start FUN_020AF2E0 -FUN_020AF2E0: ; 0x020AF2E0 + arm_func_start IsVramTransferTaskQueueEmpty_ +IsVramTransferTaskQueueEmpty_: ; 0x020AF2E0 ldrh r0, [r0, #0xc] cmp r0, #0x0 moveq r0, #0x1 movne r0, #0x0 bx lr - arm_func_end FUN_020AF2E0 + arm_func_end IsVramTransferTaskQueueEmpty_ - ; _end - arm_func_start FUN_020AF2F4 -FUN_020AF2F4: ; 0x020AF2F4 + arm_func_start IsVramTransferTaskQueueFull_ +IsVramTransferTaskQueueFull_: ; 0x020AF2F4 ldrh r1, [r0, #0xc] ldr r0, [r0, #0x4] cmp r1, r0 moveq r0, #0x1 movne r0, #0x0 bx lr - arm_func_end FUN_020AF2F4 + arm_func_end IsVramTransferTaskQueueFull_ - ; _end - arm_func_start FUN_020AF30C -FUN_020AF30C: ; 0x020AF30C + arm_func_start GetNextIndex_ +GetNextIndex_: ; 0x020AF30C stmdb sp!, {lr} sub sp, sp, #0x4 mov r2, r0 @@ -639,5 +589,4 @@ FUN_020AF30C: ; 0x020AF30C mov r0, r0, lsr #0x10 add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020AF30C - + arm_func_end GetNextIndex_ diff --git a/arm9/asm/NNS_GFD_gfdi_linkedlist.s b/arm9/asm/NNS_GFD_gfdi_linkedlist.s index 793cbf04..125a146e 100644 --- a/arm9/asm/NNS_GFD_gfdi_linkedlist.s +++ b/arm9/asm/NNS_GFD_gfdi_linkedlist.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020AF334 -FUN_020AF334: ; 0x020AF334 + arm_func_start NNSi_GfdFreeLnkVram +NNSi_GfdFreeLnkVram: ; 0x020AF334 stmdb sp!, {r4-r6,lr} sub sp, sp, #0x10 add r3, r2, r3 @@ -95,11 +94,10 @@ _020AF418: mov r0, #0x1 add sp, sp, #0x10 ldmia sp!, {r4-r6,pc} - arm_func_end FUN_020AF334 + arm_func_end NNSi_GfdFreeLnkVram - ; _end - arm_func_start FUN_020AF488 -FUN_020AF488: ; 0x020AF488 + arm_func_start NNSi_GfdAllocLnkVramAligned +NNSi_GfdAllocLnkVramAligned: ; 0x020AF488 stmdb sp!, {r4-r10,lr} ldr r4, [r0, #0x0] ldr r9, [sp, #0x20] @@ -185,23 +183,21 @@ _020AF5B8: mov r0, #0x0 str r0, [r2, #0x0] ldmia sp!, {r4-r10,pc} - arm_func_end FUN_020AF488 + arm_func_end NNSi_GfdAllocLnkVramAligned - ; _end - arm_func_start FUN_020AF5C4 -FUN_020AF5C4: ; 0x020AF5C4 + arm_func_start NNSi_GfdAllocLnkVram +NNSi_GfdAllocLnkVram: ; 0x020AF5C4 stmdb sp!, {lr} sub sp, sp, #0x4 mov r12, #0x0 str r12, [sp, #0x0] - bl FUN_020AF488 + bl NNSi_GfdAllocLnkVramAligned add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020AF5C4 + arm_func_end NNSi_GfdAllocLnkVram - ; _end - arm_func_start FUN_020AF5E0 -FUN_020AF5E0: ; 0x020AF5E0 + arm_func_start NNSi_GfdAddNewFreeBlock +NNSi_GfdAddNewFreeBlock: ; 0x020AF5E0 stmdb sp!, {lr} sub sp, sp, #0x4 ldr lr, [r1, #0x0] @@ -230,11 +226,10 @@ _020AF640: mov r0, #0x0 add sp, sp, #0x4 ldmia sp!, {pc} - arm_func_end FUN_020AF5E0 + arm_func_end NNSi_GfdAddNewFreeBlock - ; _end - arm_func_start FUN_020AF64C -FUN_020AF64C: ; 0x020AF64C + arm_func_start NNSi_GfdInitLnkVramBlockPool +NNSi_GfdInitLnkVramBlockPool: ; 0x020AF64C stmdb sp!, {r4,lr} subs lr, r1, #0x1 mov r2, #0x0 @@ -256,13 +251,11 @@ _020AF684: add r1, r0, r1, lsl #0x4 str r2, [r1, #-0x4] ldmia sp!, {r4,pc} - arm_func_end FUN_020AF64C + arm_func_end NNSi_GfdInitLnkVramBlockPool - ; _end - arm_func_start FUN_020AF698 -FUN_020AF698: ; 0x020AF698 + arm_func_start NNSi_GfdInitLnkVramMan +NNSi_GfdInitLnkVramMan: ; 0x020AF698 mov r1, #0x0 str r1, [r0, #0x0] bx lr - arm_func_end FUN_020AF698 - + arm_func_end NNSi_GfdInitLnkVramMan diff --git a/arm9/asm/NNS_SND_capture.s b/arm9/asm/NNS_SND_capture.s index a30a85f1..a4e04212 100644 --- a/arm9/asm/NNS_SND_capture.s +++ b/arm9/asm/NNS_SND_capture.s @@ -3,42 +3,36 @@ .section .bss - ; sIsThreadCreated - .global UNK_021D27A4 -UNK_021D27A4: ; 0x021D27A4 + .global sIsThreadCreated +sIsThreadCreated: ; 0x021D27A4 .space 0x4 - ; sCurEffectInfo - .global UNK_021D27A8 -UNK_021D27A8: ; 0x021D27A8 + .global sCurEffectInfo +sCurEffectInfo: ; 0x021D27A8 .space 0x4 - ; sMesgQ - .global UNK_021D27AC -UNK_021D27AC: ; 0x021D27AC + .global sMesgQ +sMesgQ: ; 0x021D27AC .space 0x20 - ; sCapParam - .global UNK_021D27CC -UNK_021D27CC: ; 0x021D27CC + .global sCapParam +sCapParam: ; 0x021D27CC .space 0x54 - ; sEffectInfoBuffer - .global UNK_021D2820 -UNK_021D2820: ; 0x021D2820 + .global sEffectInfoBuffer +sEffectInfoBuffer: ; 0x021D2820 .space 0xa0 .section .text - ; AlarmCallback - arm_func_start FUN_020C177C -FUN_020C177C: ; 0x020C177C + local_arm_func_start AlarmCallback +AlarmCallback: ; 0x020C177C stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r7, r0 ldr r4, [r7, #0x18] ldr r0, [r7, #0x1c] - ldr r1, _020C186C ; =UNK_021D27A4 + ldr r1, _020C186C ; =sIsThreadCreated mul r0, r4, r0 ldr r3, [r7, #0xc] ldr r2, [r7, #0x10] @@ -47,21 +41,21 @@ FUN_020C177C: ; 0x020C177C cmp r1, #0x0 add r5, r2, r0 beq _020C180C - ldr r2, _020C1870 ; =UNK_021D27A8 + ldr r2, _020C1870 ; =sCurEffectInfo mov r1, #0x14 ldr r2, [r2, #0x0] - ldr r3, _020C1874 ; =UNK_021D2820 + ldr r3, _020C1874 ; =sEffectInfoBuffer mul r1, r2, r1 str r7, [r3, r1] add r1, r3, r1 str r4, [r1, #0x4] str r0, [r1, #0x8] str r6, [r1, #0xc] - ldr r0, _020C1878 ; =UNK_021D27AC + ldr r0, _020C1878 ; =sMesgQ mov r2, #0x0 str r5, [r1, #0x10] bl OS_SendMessage - ldr r0, _020C1870 ; =UNK_021D27A8 + ldr r0, _020C1870 ; =sCurEffectInfo ldr r1, [r0, #0x0] add r1, r1, #0x1 str r1, [r0, #0x0] @@ -96,16 +90,15 @@ _020C1844: add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020C186C: .word UNK_021D27A4 -_020C1870: .word UNK_021D27A8 -_020C1874: .word UNK_021D2820 -_020C1878: .word UNK_021D27AC +_020C186C: .word sIsThreadCreated +_020C1870: .word sCurEffectInfo +_020C1874: .word sEffectInfoBuffer +_020C1878: .word sMesgQ - ; NNSi_SndCaptureEndSleep - arm_func_start FUN_020C187C -FUN_020C187C: ; 0x020C187C + arm_func_start NNSi_SndCaptureEndSleep +NNSi_SndCaptureEndSleep: ; 0x020C187C stmdb sp!, {r4,lr} - ldr r4, _020C18F4 ; =UNK_021D27CC + ldr r4, _020C18F4 ; =sCapParam ldr r0, [r4, #0x0] cmp r0, #0x0 ldmeqia sp!, {r4,pc} @@ -135,13 +128,12 @@ FUN_020C187C: ; 0x020C187C bl SND_StartTimer ldmia sp!, {r4,pc} .balign 4 -_020C18F4: .word UNK_021D27CC +_020C18F4: .word sCapParam - ; NNSi_SndCaptureBeginSleep - arm_func_start FUN_020C18F8 -FUN_020C18F8: ; 0x020C18F8 + arm_func_start NNSi_SndCaptureBeginSleep +NNSi_SndCaptureBeginSleep: ; 0x020C18F8 stmdb sp!, {r4,lr} - ldr r3, _020C194C ; =UNK_021D27CC + ldr r3, _020C194C ; =sCapParam ldr r0, [r3, #0x0] cmp r0, #0x0 ldmeqia sp!, {r4,pc} @@ -162,14 +154,13 @@ FUN_020C18F8: ; 0x020C18F8 bl SND_WaitForCommandProc ldmia sp!, {r4,pc} .balign 4 -_020C194C: .word UNK_021D27CC +_020C194C: .word sCapParam - ; NNSi_SndCaptureStop - arm_func_start FUN_020C1950 -FUN_020C1950: ; 0x020C1950 + arm_func_start NNSi_SndCaptureStop +NNSi_SndCaptureStop: ; 0x020C1950 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 - ldr r4, _020C1A3C ; =UNK_021D27CC + ldr r4, _020C1A3C ; =sCapParam ldr r0, [r4, #0x0] cmp r0, #0x0 addeq sp, sp, #0x4 @@ -194,7 +185,7 @@ FUN_020C1950: ; 0x020C1950 bl SND_FlushCommand mov r0, r5 bl SND_WaitForCommandProc - ldr r6, _020C1A40 ; =UNK_021D27AC + ldr r6, _020C1A40 ; =sMesgQ mov r5, #0x0 _020C19C4: mov r0, r6 @@ -207,17 +198,17 @@ _020C19DC: ldr r0, [r4, #0x28] cmp r0, #0x0 beq _020C19EC - bl FUN_020C0300 + bl NNS_SndUnlockCapture _020C19EC: ldr r0, [r4, #0x20] cmp r0, #0x0 beq _020C19FC - bl FUN_020C0340 + bl NNS_SndUnlockChannel _020C19FC: cmp r7, #0x0 beq _020C1A0C ldr r0, [r4, #0x2c] - bl FUN_020C029C + bl NNS_SndFreeAlarm _020C1A0C: ldr r0, [r4, #0x4] cmp r0, #0x1 @@ -233,12 +224,11 @@ _020C1A2C: add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020C1A3C: .word UNK_021D27CC -_020C1A40: .word UNK_021D27AC +_020C1A3C: .word sCapParam +_020C1A40: .word sMesgQ - ; NNSi_SndCaptureStart - arm_func_start FUN_020C1A44 -FUN_020C1A44: ; 0x020C1A44 + arm_func_start NNSi_SndCaptureStart +NNSi_SndCaptureStart: ; 0x020C1A44 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x3c mov r10, r3 @@ -252,7 +242,7 @@ FUN_020C1A44: ; 0x020C1A44 ldr r8, [sp, #0x74] str r2, [sp, #0x2c] mvn r6, #0x0 - ldr r4, _020C1D90 ; =UNK_021D27CC + ldr r4, _020C1D90 ; =sCapParam bl DC_FlushRange ldr r0, [sp, #0x20] mov r1, r10 @@ -304,36 +294,36 @@ _020C1B00: ldr r0, [sp, #0x84] cmp r0, #0x0 beq _020C1B58 - bl FUN_020C02BC + bl NNS_SndAllocAlarm movs r6, r0 addmi sp, sp, #0x3c movmi r0, #0x0 ldmmiia sp!, {r4-r11,pc} _020C1B58: mov r0, #0x3 - bl FUN_020C031C + bl NNS_SndLockCapture cmp r0, #0x0 bne _020C1B84 cmp r6, #0x0 blt _020C1B78 mov r0, r6 - bl FUN_020C029C + bl NNS_SndFreeAlarm _020C1B78: add sp, sp, #0x3c mov r0, #0x0 ldmia sp!, {r4-r11,pc} _020C1B84: mov r0, #0xa - bl FUN_020C0370 + bl NNS_SndLockChannel cmp r0, #0x0 bne _020C1BB8 cmp r6, #0x0 blt _020C1BA4 mov r0, r6 - bl FUN_020C029C + bl NNS_SndFreeAlarm _020C1BA4: mov r0, #0x3 - bl FUN_020C0300 + bl NNS_SndUnlockCapture add sp, sp, #0x3c mov r0, #0x0 ldmia sp!, {r4-r11,pc} @@ -392,7 +382,7 @@ _020C1BB8: cmp r6, #0x0 blt _020C1CA8 ldr r2, [sp, #0x30] - ldr r3, _020C1D98 ; =FUN_020C177C + ldr r3, _020C1D98 ; =AlarmCallback mov r1, r2 mov r0, r6 add r1, r1, r5 @@ -448,27 +438,26 @@ _020C1CC8: str r0, [r4, #0x38] add r0, r4, #0x3c str r8, [r4, #0x50] - bl FUN_020C3E6C + bl NNSi_SndFaderInit add r0, r4, #0x3c mov r1, r8, lsl #0x8 mov r2, #0x1 - bl FUN_020C3E40 + bl NNSi_SndFaderSet mov r0, #0x0 str r0, [r4, #0x4c] mov r0, #0x1 add sp, sp, #0x3c ldmia sp!, {r4-r11,pc} .balign 4 -_020C1D90: .word UNK_021D27CC +_020C1D90: .word sCapParam _020C1D94: .word 0x00FFB0FF -_020C1D98: .word FUN_020C177C +_020C1D98: .word AlarmCallback - ; NNSi_SndCaptureMain - arm_func_start FUN_020C1D9C -FUN_020C1D9C: ; 0x020C1D9C + arm_func_start NNSi_SndCaptureMain +NNSi_SndCaptureMain: ; 0x020C1D9C stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 - ldr r5, _020C1E34 ; =UNK_021D27CC + ldr r5, _020C1E34 ; =sCapParam ldr r0, [r5, #0x0] cmp r0, #0x0 addeq sp, sp, #0x4 @@ -479,20 +468,20 @@ FUN_020C1D9C: ; 0x020C1D9C ldmneia sp!, {r4-r5,pc} add r4, r5, #0x3c mov r0, r4 - bl FUN_020C3DF4 + bl NNSi_SndFaderUpdate ldr r0, [r5, #0x4c] cmp r0, #0x0 beq _020C1DFC mov r0, r4 - bl FUN_020C3DDC + bl NNSi_SndFaderIsFinished cmp r0, #0x0 beq _020C1DFC - bl FUN_020C1950 + bl NNSi_SndCaptureStop add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} _020C1DFC: mov r0, r4 - bl FUN_020C3E0C + bl NNSi_SndFaderGet ldr r1, [r5, #0x50] mov r4, r0, asr #0x8 cmp r4, r1 @@ -506,36 +495,33 @@ _020C1DFC: add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020C1E34: .word UNK_021D27CC +_020C1E34: .word sCapParam - ; NNSi_SndCaptureInit - arm_func_start FUN_020C1E38 -FUN_020C1E38: ; 0x020C1E38 - ldr r1, _020C1E50 ; =UNK_021D27A4 + arm_func_start NNSi_SndCaptureInit +NNSi_SndCaptureInit: ; 0x020C1E38 + ldr r1, _020C1E50 ; =sIsThreadCreated mov r2, #0x0 - ldr r0, _020C1E54 ; =UNK_021D27CC + ldr r0, _020C1E54 ; =sCapParam str r2, [r1, #0x0] str r2, [r0, #0x0] bx lr .balign 4 -_020C1E50: .word UNK_021D27A4 -_020C1E54: .word UNK_021D27CC +_020C1E50: .word sIsThreadCreated +_020C1E54: .word sCapParam - ; NNS_SndCaptureIsActive - arm_func_start FUN_020C1E58 -FUN_020C1E58: ; 0x020C1E58 - ldr r0, _020C1E64 ; =UNK_021D27CC + arm_func_start NNS_SndCaptureIsActive +NNS_SndCaptureIsActive: ; 0x020C1E58 + ldr r0, _020C1E64 ; =sCapParam ldr r0, [r0, #0x0] bx lr .balign 4 -_020C1E64: .word UNK_021D27CC +_020C1E64: .word sCapParam - ; NNS_SndCaptureStopEffect - arm_func_start FUN_020C1E68 -FUN_020C1E68: ; 0x020C1E68 + arm_func_start NNS_SndCaptureStopEffect +NNS_SndCaptureStopEffect: ; 0x020C1E68 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r0, _020C1EA0 ; =UNK_021D27CC + ldr r0, _020C1EA0 ; =sCapParam ldr r1, [r0, #0x0] cmp r1, #0x0 addeq sp, sp, #0x4 @@ -544,23 +530,22 @@ FUN_020C1E68: ; 0x020C1E68 cmp r0, #0x1 addne sp, sp, #0x4 ldmneia sp!, {pc} - bl FUN_020C1950 + bl NNSi_SndCaptureStop add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020C1EA0: .word UNK_021D27CC +_020C1EA0: .word sCapParam - ; NNS_SndCaptureStartEffect - arm_func_start FUN_020C1EA4 -FUN_020C1EA4: ; 0x020C1EA4 + arm_func_start NNS_SndCaptureStartEffect +NNS_SndCaptureStartEffect: ; 0x020C1EA4 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x2c mov r5, r0 mov r4, r1 mov r7, r2 mov r6, r3 - bl FUN_020C1E68 - ldr r0, _020C1F50 ; =UNK_021D27CC + bl NNS_SndCaptureStopEffect + ldr r0, _020C1F50 ; =sCapParam ldr r0, [r0, #0x0] cmp r0, #0x0 addne sp, sp, #0x2c @@ -593,17 +578,16 @@ FUN_020C1EA4: ; 0x020C1EA4 mov r3, r4, lsr #0x1 add r2, r5, r4, lsr #0x1 str r12, [sp, #0x28] - bl FUN_020C1A44 + bl NNSi_SndCaptureStart add sp, sp, #0x2c ldmia sp!, {r4-r7,pc} .balign 4 -_020C1F50: .word UNK_021D27CC +_020C1F50: .word sCapParam - ; NNS_SndCaptureStopReverb - arm_func_start FUN_020C1F54 -FUN_020C1F54: ; 0x020C1F54 + arm_func_start NNS_SndCaptureStopReverb +NNS_SndCaptureStopReverb: ; 0x020C1F54 stmdb sp!, {r4,lr} - ldr r4, _020C1FA0 ; =UNK_021D27CC + ldr r4, _020C1FA0 ; =sCapParam mov r2, r0 ldr r0, [r4, #0x0] cmp r0, #0x0 @@ -613,24 +597,23 @@ FUN_020C1F54: ; 0x020C1F54 ldmneia sp!, {r4,pc} cmp r2, #0x0 bne _020C1F88 - bl FUN_020C1950 + bl NNSi_SndCaptureStop ldmia sp!, {r4,pc} _020C1F88: add r0, r4, #0x3c mov r1, #0x0 - bl FUN_020C3E40 + bl NNSi_SndFaderSet mov r0, #0x1 str r0, [r4, #0x4c] ldmia sp!, {r4,pc} .balign 4 -_020C1FA0: .word UNK_021D27CC +_020C1FA0: .word sCapParam - ; NNS_SndCaptureSetReverbVolume - arm_func_start FUN_020C1FA4 -FUN_020C1FA4: ; 0x020C1FA4 + arm_func_start NNS_SndCaptureSetReverbVolume +NNS_SndCaptureSetReverbVolume: ; 0x020C1FA4 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r3, _020C1FEC ; =UNK_021D27CC + ldr r3, _020C1FEC ; =sCapParam mov r12, r0 ldr r0, [r3, #0x0] mov r2, r1 @@ -643,15 +626,14 @@ FUN_020C1FA4: ; 0x020C1FA4 ldmneia sp!, {pc} add r0, r3, #0x3c mov r1, r12, lsl #0x8 - bl FUN_020C3E40 + bl NNSi_SndFaderSet add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020C1FEC: .word UNK_021D27CC +_020C1FEC: .word sCapParam - ; NNS_SndCaptureStartReverb - arm_func_start FUN_020C1FF0 -FUN_020C1FF0: ; 0x020C1FF0 + arm_func_start NNS_SndCaptureStartReverb +NNS_SndCaptureStartReverb: ; 0x020C1FF0 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x2c mov r5, r0 @@ -659,8 +641,8 @@ FUN_020C1FF0: ; 0x020C1FF0 mov r4, r1 mov r7, r2 mov r6, r3 - bl FUN_020C1F54 - ldr r0, _020C2098 ; =UNK_021D27CC + bl NNS_SndCaptureStopReverb + ldr r0, _020C2098 ; =sCapParam ldr r0, [r0, #0x0] cmp r0, #0x0 addne sp, sp, #0x2c @@ -691,9 +673,8 @@ FUN_020C1FF0: ; 0x020C1FF0 mov r3, r4, lsr #0x1 add r2, r5, r4, lsr #0x1 str r0, [sp, #0x28] - bl FUN_020C1A44 + bl NNSi_SndCaptureStart add sp, sp, #0x2c ldmia sp!, {r4-r7,pc} .balign 4 -_020C2098: .word UNK_021D27CC - +_020C2098: .word sCapParam diff --git a/arm9/asm/NNS_SND_fader.s b/arm9/asm/NNS_SND_fader.s index b36093a2..938456a9 100644 --- a/arm9/asm/NNS_SND_fader.s +++ b/arm9/asm/NNS_SND_fader.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020C3DDC -FUN_020C3DDC: ; 0x020C3DDC + arm_func_start NNSi_SndFaderIsFinished +NNSi_SndFaderIsFinished: ; 0x020C3DDC ldr r1, [r0, #0x8] ldr r0, [r0, #0xc] cmp r1, r0 @@ -13,9 +12,8 @@ FUN_020C3DDC: ; 0x020C3DDC movlt r0, #0x0 bx lr - ; _end - arm_func_start FUN_020C3DF4 -FUN_020C3DF4: ; 0x020C3DF4 + arm_func_start NNSi_SndFaderUpdate +NNSi_SndFaderUpdate: ; 0x020C3DF4 ldr r2, [r0, #0x8] ldr r1, [r0, #0xc] cmp r2, r1 @@ -23,9 +21,8 @@ FUN_020C3DF4: ; 0x020C3DF4 strlt r1, [r0, #0x8] bx lr - ; _end - arm_func_start FUN_020C3E0C -FUN_020C3E0C: ; 0x020C3E0C + arm_func_start NNSi_SndFaderGet +NNSi_SndFaderGet: ; 0x020C3E0C stmdb sp!, {r4,lr} ldr r1, [r0, #0xc] ldr r2, [r0, #0x8] @@ -40,14 +37,13 @@ FUN_020C3E0C: ; 0x020C3E0C add r0, r4, r0 ldmia sp!, {r4,pc} - ; _end - arm_func_start FUN_020C3E40 -FUN_020C3E40: ; 0x020C3E40 + arm_func_start NNSi_SndFaderSet +NNSi_SndFaderSet: ; 0x020C3E40 stmdb sp!, {r4-r6,lr} mov r6, r0 mov r5, r1 mov r4, r2 - bl FUN_020C3E0C + bl NNSi_SndFaderGet str r0, [r6, #0x0] str r5, [r6, #0x4] str r4, [r6, #0xc] @@ -55,9 +51,8 @@ FUN_020C3E40: ; 0x020C3E40 str r0, [r6, #0x8] ldmia sp!, {r4-r6,pc} - ; _end - arm_func_start FUN_020C3E6C -FUN_020C3E6C: ; 0x020C3E6C + arm_func_start NNSi_SndFaderInit +NNSi_SndFaderInit: ; 0x020C3E6C mov r2, #0x0 str r2, [r0, #0x4] ldr r1, [r0, #0x4] diff --git a/arm9/asm/NNS_SND_heap.s b/arm9/asm/NNS_SND_heap.s index 5d2efe32..554c6bab 100644 --- a/arm9/asm/NNS_SND_heap.s +++ b/arm9/asm/NNS_SND_heap.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020C2774 -FUN_020C2774: ; 0x020C2774 + arm_func_start EraseSync +EraseSync: ; 0x020C2774 stmdb sp!, {r4,lr} bl SND_GetCurrentCommandTag mov r4, r0 @@ -15,59 +14,55 @@ FUN_020C2774: ; 0x020C2774 bl SND_WaitForCommandProc ldmia sp!, {r4,pc} - ; _end - arm_func_start FUN_020C2794 -FUN_020C2794: ; 0x020C2794 + arm_func_start NewSection +NewSection: ; 0x020C2794 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 ldr r0, [r5, #0x0] mov r1, #0x14 mov r2, #0x4 - bl FUN_020AE638 + bl NNS_FndAllocFromFrmHeapEx movs r4, r0 addeq sp, sp, #0x4 moveq r0, #0x0 ldmeqia sp!, {r4-r5,pc} - bl FUN_020C2818 + bl InitHeapSection mov r1, r4 add r0, r5, #0x4 - bl FUN_020ADBE8 + bl NNS_FndAppendListObject mov r0, #0x1 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - ; _end - arm_func_start FUN_020C27DC -FUN_020C27DC: ; 0x020C27DC + arm_func_start InitHeap +InitHeap: ; 0x020C27DC stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 mov r4, r1 add r0, r5, #0x4 mov r1, #0xc - bl FUN_020ADC74 + bl NNS_FndInitList mov r0, r5 str r4, [r5, #0x0] - bl FUN_020C2794 + bl NewSection cmp r0, #0x0 movne r0, #0x1 moveq r0, #0x0 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - ; InitHeapSection - arm_func_start FUN_020C2818 -FUN_020C2818: ; 0x020C2818 - ldr ip, _020C2824 ; =FUN_020ADC74 + arm_func_start InitHeapSection +InitHeapSection: ; 0x020C2818 + ldr ip, _020C2824 ; =NNS_FndInitList mov r1, #0x0 bx r12 .balign 4 -_020C2824: .word FUN_020ADC74 +_020C2824: .word NNS_FndInitList - ; _end - arm_func_start FUN_020C2828 -FUN_020C2828: ; 0x020C2828 + arm_func_start NNS_SndHeapLoadState +NNS_SndHeapLoadState: ; 0x020C2828 stmdb sp!, {r4-r11,lr} sub sp, sp, #0x4 mov r7, #0x0 @@ -75,7 +70,7 @@ FUN_020C2828: ; 0x020C2828 mov r10, r0 mov r6, r7 bne _020C2850 - bl FUN_020C29C0 + bl NNS_SndHeapClear add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} _020C2850: @@ -88,10 +83,10 @@ _020C2850: _020C2868: mov r0, r5 mov r1, r11 - bl FUN_020ADA84 + bl NNS_FndGetPrevListObject mov r1, r7 mov r8, r0 - bl FUN_020ADA84 + bl NNS_FndGetPrevListObject movs r7, r0 beq _020C28C0 _020C2888: @@ -107,58 +102,56 @@ _020C2888: _020C28AC: mov r0, r8 mov r1, r7 - bl FUN_020ADA84 + bl NNS_FndGetPrevListObject movs r7, r0 bne _020C2888 _020C28C0: mov r0, r5 mov r1, r8 - bl FUN_020ADAB0 + bl NNS_FndRemoveListObject ldrh r0, [r10, #0xc] cmp r9, r0 blt _020C2868 _020C28D8: ldr r0, [r10, #0x0] mov r1, r9 - bl FUN_020AE554 + bl NNS_FndFreeByStateToFrmHeap cmp r6, #0x0 beq _020C28F0 - bl FUN_020C2774 + bl EraseSync _020C28F0: ldrh r1, [r10, #0xc] ldr r0, [r10, #0x0] - bl FUN_020AE5B0 + bl NNS_FndRecordStateForFrmHeap mov r0, r10 - bl FUN_020C2794 + bl NewSection add sp, sp, #0x4 ldmia sp!, {r4-r11,pc} - ; _end - arm_func_start FUN_020C290C -FUN_020C290C: ; 0x020C290C + arm_func_start NNS_SndHeapSaveState +NNS_SndHeapSaveState: ; 0x020C290C stmdb sp!, {r4,lr} mov r4, r0 ldrh r1, [r4, #0xc] ldr r0, [r4, #0x0] - bl FUN_020AE5B0 + bl NNS_FndRecordStateForFrmHeap cmp r0, #0x0 mvneq r0, #0x0 ldmeqia sp!, {r4,pc} mov r0, r4 - bl FUN_020C2794 + bl NewSection cmp r0, #0x0 ldrneh r0, [r4, #0xc] subne r0, r0, #0x1 ldmneia sp!, {r4,pc} ldr r0, [r4, #0x0] mov r1, #0x0 - bl FUN_020AE554 + bl NNS_FndFreeByStateToFrmHeap mvn r0, #0x0 ldmia sp!, {r4,pc} - ; _end - arm_func_start SDATi_AllocAndInitChunk -SDATi_AllocAndInitChunk: ; 0x020C2958 + arm_func_start NNS_SndHeapAlloc +NNS_SndHeapAlloc: ; 0x020C2958 stmdb sp!, {r4-r8,lr} mov r7, r1 mov r8, r0 @@ -169,32 +162,31 @@ SDATi_AllocAndInitChunk: ; 0x020C2958 add r1, r1, #0x20 mov r2, #0x20 mov r5, r3 - bl FUN_020AE638 // some allocator? + bl NNS_FndAllocFromFrmHeapEx // some allocator? movs r4, r0 moveq r0, #0x0 ldmeqia sp!, {r4-r8,pc} add r0, r8, #0x4 mov r1, #0x0 - bl FUN_020ADA84 + bl NNS_FndGetPrevListObject str r7, [r4, #0x8] str r6, [r4, #0xc] ldr r2, [sp, #0x18] str r5, [r4, #0x10] mov r1, r4 str r2, [r4, #0x14] - bl FUN_020ADBE8 + bl NNS_FndAppendListObject add r0, r4, #0x20 ldmia sp!, {r4-r8,pc} - ; _end - arm_func_start FUN_020C29C0 -FUN_020C29C0: ; 0x020C29C0 + arm_func_start NNS_SndHeapClear +NNS_SndHeapClear: ; 0x020C29C0 stmdb sp!, {r4-r10,lr} mov r8, r0 mov r5, #0x0 mov r1, r5 add r0, r8, #0x4 - bl FUN_020ADA84 + bl NNS_FndGetPrevListObject movs r7, r0 beq _020C2A58 add r9, r8, #0x4 @@ -203,7 +195,7 @@ FUN_020C29C0: ; 0x020C29C0 _020C29EC: mov r0, r7 mov r1, r4 - bl FUN_020ADA84 + bl NNS_FndGetPrevListObject movs r6, r0 beq _020C2A38 _020C2A00: @@ -219,43 +211,41 @@ _020C2A00: _020C2A24: mov r0, r7 mov r1, r6 - bl FUN_020ADA84 + bl NNS_FndGetPrevListObject movs r6, r0 bne _020C2A00 _020C2A38: mov r0, r9 mov r1, r7 - bl FUN_020ADAB0 + bl NNS_FndRemoveListObject mov r0, r9 mov r1, r4 - bl FUN_020ADA84 + bl NNS_FndGetPrevListObject movs r7, r0 bne _020C29EC _020C2A58: ldr r0, [r8, #0x0] mov r1, #0x3 - bl FUN_020AE600 + bl NNS_FndFreeToFrmHeap cmp r5, #0x0 beq _020C2A70 - bl FUN_020C2774 + bl EraseSync _020C2A70: mov r0, r8 - bl FUN_020C2794 + bl NewSection ldmia sp!, {r4-r10,pc} - ; _end - arm_func_start FUN_020C2A7C -FUN_020C2A7C: ; 0x020C2A7C + arm_func_start NNS_SndHeapDestroy +NNS_SndHeapDestroy: ; 0x020C2A7C stmdb sp!, {r4,lr} mov r4, r0 - bl FUN_020C29C0 + bl NNS_SndHeapClear ldr r0, [r4, #0x0] - bl thunk_FUN_020adc8c_2 + bl NNS_FndDestroyFrmHeap ldmia sp!, {r4,pc} - ; _end - arm_func_start FUN_020C2A94 -FUN_020C2A94: ; 0x020C2A94 + arm_func_start NNS_SndHeapCreate +NNS_SndHeapCreate: ; 0x020C2A94 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 add r2, r0, #0x3 @@ -273,21 +263,20 @@ FUN_020C2A94: ; 0x020C2A94 add r0, r5, #0x10 sub r1, r1, #0x10 mov r2, #0x0 - bl FUN_020AE684 + bl NNS_FndCreateFrmHeapEx movs r4, r0 addeq sp, sp, #0x4 moveq r0, #0x0 ldmeqia sp!, {r4-r5,pc} mov r0, r5 mov r1, r4 - bl FUN_020C27DC + bl InitHeap cmp r0, #0x0 addne sp, sp, #0x4 movne r0, r5 ldmneia sp!, {r4-r5,pc} mov r0, r4 - bl thunk_FUN_020adc8c_2 + bl NNS_FndDestroyFrmHeap mov r0, #0x0 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - diff --git a/arm9/asm/NNS_SND_main.s b/arm9/asm/NNS_SND_main.s index 94817a22..4cbe3d65 100644 --- a/arm9/asm/NNS_SND_main.s +++ b/arm9/asm/NNS_SND_main.s @@ -3,46 +3,39 @@ .section .bss - ; sCurDriverInfo - .global UNK_021D1C8C -UNK_021D1C8C: ; 0x021D1C8C + .global sCurDriverInfo +sCurDriverInfo: ; 0x021D1C8C .space 0x4 - ; sDriverInfoFirstFlag - .global UNK_021D1C90 -UNK_021D1C90: ; 0x021D1C90 + .global sDriverInfoFirstFlag +sDriverInfoFirstFlag: ; 0x021D1C90 .space 0x4 - ; initialized$8127 - .global UNK_021D1C94 -UNK_021D1C94: ; 0x021D1C94 + .global initialized$8127 +initialized$8127: ; 0x021D1C94 .space 0x4 - ; sPreSleepCallback - .global UNK_021D1C98 -UNK_021D1C98: ; 0x021D1C98 + .global sPreSleepCallback +sPreSleepCallback: ; 0x021D1C98 .space 0xc - ; sPostSleepCallback - .global UNK_021D1CA4 -UNK_021D1CA4: ; 0x021D1CA4 + .global sPostSleepCallback +sPostSleepCallback: ; 0x021D1CA4 .space 0xc .section .text - ; EndSleep - arm_func_start FUN_020C0130 -FUN_020C0130: ; 0x020C0130 - ldr ip, _020C0138 ; =FUN_020C187C + local_arm_func_start EndSleep +EndSleep: ; 0x020C0130 + ldr ip, _020C0138 ; =NNSi_SndCaptureEndSleep bx r12 .balign 4 -_020C0138: .word FUN_020C187C +_020C0138: .word NNSi_SndCaptureEndSleep - ; _end - arm_func_start FUN_020C013C -FUN_020C013C: ; 0x020C013C + local_arm_func_start BeginSleep +BeginSleep: ; 0x020C013C stmdb sp!, {r4,lr} - bl FUN_020C18F8 + bl NNSi_SndCaptureBeginSleep mov r0, #0x0 mov r1, r0 mov r2, r0 @@ -56,9 +49,8 @@ FUN_020C013C: ; 0x020C013C bl SND_WaitForCommandProc ldmia sp!, {r4,pc} - ; _end - arm_func_start FUN_020C0174 -FUN_020C0174: ; 0x020C0174 + arm_func_start NNS_SndSetMonoFlag +NNS_SndSetMonoFlag: ; 0x020C0174 stmdb sp!, {lr} sub sp, sp, #0x4 cmp r0, #0x0 @@ -72,9 +64,8 @@ _020C0194: add sp, sp, #0x4 ldmia sp!, {pc} - ; _end - arm_func_start FUN_020C01A0 -FUN_020C01A0: ; 0x020C01A0 + arm_func_start NNS_SndMain +NNS_SndMain: ; 0x020C01A0 stmdb sp!, {r4,lr} mov r4, #0x0 _020C01A8: @@ -82,19 +73,18 @@ _020C01A8: bl SND_RecvCommandReply cmp r0, #0x0 bne _020C01A8 - bl FUN_020C0BA0 - bl FUN_020C1D9C - bl FUN_020C3C88 + bl NNSi_SndPlayerMain + bl NNSi_SndCaptureMain + bl NNSi_SndArcStrmMain mov r0, #0x0 bl SND_FlushCommand ldmia sp!, {r4,pc} - ; NNS_SndInit - arm_func_start SDAT_Init -SDAT_Init: ; 0x020C01D0 + arm_func_start NNS_SndInit +NNS_SndInit: ; 0x020C01D0 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r0, _020C0254 ; =UNK_021D1C94 + ldr r0, _020C0254 ; =initialized$8127 ldr r1, [r0, #0x0] cmp r1, #0x0 addne sp, sp, #0x4 @@ -102,35 +92,34 @@ SDAT_Init: ; 0x020C01D0 mov r1, #0x1 str r1, [r0, #0x0] bl SND_Init - ldr ip, _020C0258 ; =FUN_020C013C - ldr r0, _020C025C ; =UNK_021D1C98 + ldr ip, _020C0258 ; =BeginSleep + ldr r0, _020C025C ; =sPreSleepCallback mov r3, #0x0 - ldr r1, _020C0260 ; =UNK_021D1CA4 - ldr r2, _020C0264 ; =FUN_020C0130 + ldr r1, _020C0260 ; =sPostSleepCallback + ldr r2, _020C0264 ; =EndSleep str r12, [r0, #0x0] str r3, [r0, #0x4] str r2, [r1, #0x0] str r3, [r1, #0x4] bl PM_PrependPreSleepCallback - ldr r0, _020C0260 ; =UNK_021D1CA4 + ldr r0, _020C0260 ; =sPostSleepCallback bl PM_AppendPostSleepCallback - bl FUN_020C0270 - bl FUN_020C1E38 - bl FUN_020C0D20 - ldr r1, _020C0268 ; =UNK_021D1C8C + bl NNSi_SndInitResourceMgr + bl NNSi_SndCaptureInit + bl NNSi_SndPlayerInit + ldr r1, _020C0268 ; =sCurDriverInfo mvn r3, #0x0 - ldr r0, _020C026C ; =UNK_021D1C90 + ldr r0, _020C026C ; =sDriverInfoFirstFlag mov r2, #0x1 strb r3, [r1, #0x0] str r2, [r0, #0x0] add sp, sp, #0x4 ldmia sp!, {pc} .balign 4 -_020C0254: .word UNK_021D1C94 -_020C0258: .word FUN_020C013C -_020C025C: .word UNK_021D1C98 -_020C0260: .word UNK_021D1CA4 -_020C0264: .word FUN_020C0130 -_020C0268: .word UNK_021D1C8C -_020C026C: .word UNK_021D1C90 - +_020C0254: .word initialized$8127 +_020C0258: .word BeginSleep +_020C025C: .word sPreSleepCallback +_020C0260: .word sPostSleepCallback +_020C0264: .word EndSleep +_020C0268: .word sCurDriverInfo +_020C026C: .word sDriverInfoFirstFlag diff --git a/arm9/asm/NNS_SND_player.s b/arm9/asm/NNS_SND_player.s index 557afb1b..caaf345e 100644 --- a/arm9/asm/NNS_SND_player.s +++ b/arm9/asm/NNS_SND_player.s @@ -3,51 +3,26 @@ .section .bss - ; sFreeList - .global UNK_021D1DFC -UNK_021D1DFC: ; 0x021D1DFC + .global sFreeList +sFreeList: ; 0x021D1DFC .space 0xc - ; sPrioList - .global UNK_021D1E08 -UNK_021D1E08: ; 0x021D1E08 + .global sPrioList +sPrioList: ; 0x021D1E08 .space 0xc - ; sSeqPlayer - .global UNK_021D1E14 -UNK_021D1E14: ; 0x021D1E14 + .global sSeqPlayer +sSeqPlayer: ; 0x021D1E14 .space 0x440 - ; sPlayer - .global UNK_021D2254 -UNK_021D2254: ; 0x021D2254 - .space 0x8 - - ; sPlayer + 0x8 - .global UNK_021D225C -UNK_021D225C: ; 0x021D225C - .space 0x10 - - ; sPlayer + 0x18 - .global UNK_021D226C -UNK_021D226C: ; 0x021D226C - .space 0x4 - - ; sPlayer + 0x1C - .global UNK_021D2270 -UNK_021D2270: ; 0x021D2270 - .space 0x4 - - ; sPlayer + 0x20 - .global UNK_021D2274 -UNK_021D2274: ; 0x021D2274 - .space 0x460 + .global sPlayer +sPlayer: ; 0x021D2254 + .space 0x480 .section .text - ; SetPlayerPriority - arm_func_start FUN_020C06CC -FUN_020C06CC: ; 0x020C06CC + arm_func_start SetPlayerPriority +SetPlayerPriority: ; 0x020C06CC stmdb sp!, {r4-r6,lr} mov r6, r0 ldr r4, [r6, #0x4] @@ -56,54 +31,52 @@ FUN_020C06CC: ; 0x020C06CC beq _020C06F8 mov r0, r4 mov r1, r6 - bl FUN_020ADAB0 + bl NNS_FndRemoveListObject mov r0, #0x0 str r0, [r6, #0x4] _020C06F8: - ldr r0, _020C0728 ; =UNK_021D1E08 + ldr r0, _020C0728 ; =sPrioList mov r1, r6 - bl FUN_020ADAB0 + bl NNS_FndRemoveListObject strb r5, [r6, #0x3d] cmp r4, #0x0 beq _020C071C mov r0, r4 mov r1, r6 - bl FUN_020C0910 + bl InsertPlayerList _020C071C: mov r0, r6 - bl FUN_020C08B4 + bl InsertPrioList ldmia sp!, {r4-r6,pc} .balign 4 -_020C0728: .word UNK_021D1E08 +_020C0728: .word sPrioList - ; PlayerHeapDisposeCallback - arm_func_start FUN_020C072C -FUN_020C072C: ; 0x020C072C + arm_func_start PlayerHeapDisposeCallback +PlayerHeapDisposeCallback: ; 0x020C072C stmdb sp!, {r4,lr} mov r4, r0 ldr r0, [r4, #0x8] cmp r0, #0x0 ldmeqia sp!, {r4,pc} - bl FUN_020C2A7C + bl NNS_SndHeapDestroy ldr r1, [r4, #0xc] cmp r1, #0x0 movne r0, #0x0 strne r0, [r1, #0x8] ldmneia sp!, {r4,pc} ldr r1, [r4, #0x10] - ldr r2, _020C0778 ; =UNK_021D2254 + ldr r2, _020C0778 ; =sPlayer mov r0, #0x24 mla r0, r1, r0, r2 mov r1, r4 add r0, r0, #0xc - bl FUN_020ADAB0 + bl NNS_FndRemoveListObject ldmia sp!, {r4,pc} .balign 4 -_020C0778: .word UNK_021D2254 +_020C0778: .word sPlayer - ; ShutdownPlayer - arm_func_start FUN_020C077C -FUN_020C077C: ; 0x020C077C + local_arm_func_start ShutdownPlayer +ShutdownPlayer: ; 0x020C077C stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r4, r0 @@ -115,71 +88,69 @@ FUN_020C077C: ; 0x020C077C ldr r5, [r4, #0x4] mov r1, r4 mov r0, r5 - bl FUN_020ADAB0 + bl NNS_FndRemoveListObject mov r0, #0x0 str r0, [r4, #0x4] ldr r1, [r4, #0x8] cmp r1, #0x0 beq _020C07D8 add r0, r5, #0xc - bl FUN_020ADBE8 + bl NNS_FndAppendListObject ldr r0, [r4, #0x8] mov r1, #0x0 str r1, [r0, #0xc] str r1, [r4, #0x8] _020C07D8: - ldr r0, _020C0800 ; =UNK_021D1E08 + ldr r0, _020C0800 ; =sPrioList mov r1, r4 - bl FUN_020ADAB0 - ldr r0, _020C0804 ; =UNK_021D1DFC + bl NNS_FndRemoveListObject + ldr r0, _020C0804 ; =sFreeList mov r1, r4 - bl FUN_020ADBE8 + bl NNS_FndAppendListObject mov r0, #0x0 strb r0, [r4, #0x2c] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020C0800: .word UNK_021D1E08 -_020C0804: .word UNK_021D1DFC +_020C0800: .word sPrioList +_020C0804: .word sFreeList - ; AllocSeqPlayer - arm_func_start FUN_020C0808 -FUN_020C0808: ; 0x020C0808 + arm_func_start AllocSeqPlayer +AllocSeqPlayer: ; 0x020C0808 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 - ldr r0, _020C0874 ; =UNK_021D1DFC + ldr r0, _020C0874 ; =sFreeList mov r1, #0x0 - bl FUN_020ADA98 + bl NNS_FndGetNextListObject movs r4, r0 bne _020C0850 - ldr r0, _020C0878 ; =UNK_021D1E08 + ldr r0, _020C0878 ; =sPrioList mov r1, #0x0 - bl FUN_020ADA98 + bl NNS_FndGetNextListObject mov r4, r0 ldrb r1, [r4, #0x3d] cmp r5, r1 addlt sp, sp, #0x4 movlt r0, #0x0 ldmltia sp!, {r4-r5,pc} - bl FUN_020C087C + bl ForceStopSeq _020C0850: - ldr r0, _020C0874 ; =UNK_021D1DFC + ldr r0, _020C0874 ; =sFreeList mov r1, r4 - bl FUN_020ADAB0 + bl NNS_FndRemoveListObject mov r0, r4 strb r5, [r4, #0x3d] - bl FUN_020C08B4 + bl InsertPrioList mov r0, r4 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020C0874: .word UNK_021D1DFC -_020C0878: .word UNK_021D1E08 +_020C0874: .word sFreeList +_020C0878: .word sPrioList - ; ForceStopSeq - arm_func_start FUN_020C087C -FUN_020C087C: ; 0x020C087C + arm_func_start ForceStopSeq +ForceStopSeq: ; 0x020C087C stmdb sp!, {r4,lr} mov r4, r0 ldrb r0, [r4, #0x2c] @@ -192,50 +163,48 @@ _020C089C: ldrb r0, [r4, #0x3c] bl SND_StopSeq mov r0, r4 - bl FUN_020C077C + bl ShutdownPlayer ldmia sp!, {r4,pc} .balign 4 _020C08B0: .word 0xFFFFFD2D - ; InsertPrioList - arm_func_start FUN_020C08B4 -FUN_020C08B4: ; 0x020C08B4 + arm_func_start InsertPrioList +InsertPrioList: ; 0x020C08B4 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 - ldr r0, _020C090C ; =UNK_021D1E08 + ldr r0, _020C090C ; =sPrioList mov r1, #0x0 - bl FUN_020ADA98 + bl NNS_FndGetNextListObject movs r1, r0 beq _020C08F8 - ldr r4, _020C090C ; =UNK_021D1E08 + ldr r4, _020C090C ; =sPrioList _020C08D8: ldrb r2, [r5, #0x3d] ldrb r0, [r1, #0x3d] cmp r2, r0 blo _020C08F8 mov r0, r4 - bl FUN_020ADA98 + bl NNS_FndGetNextListObject movs r1, r0 bne _020C08D8 _020C08F8: - ldr r0, _020C090C ; =UNK_021D1E08 + ldr r0, _020C090C ; =sPrioList mov r2, r5 - bl FUN_020ADB18 + bl NNS_FndInsertListObject add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020C090C: .word UNK_021D1E08 +_020C090C: .word sPrioList - ; _end - arm_func_start FUN_020C0910 -FUN_020C0910: ; 0x020C0910 + arm_func_start InsertPlayerList +InsertPlayerList: ; 0x020C0910 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r4, r1 mov r1, #0x0 mov r5, r0 - bl FUN_020ADA98 + bl NNS_FndGetNextListObject movs r1, r0 beq _020C0950 _020C0930: @@ -244,20 +213,19 @@ _020C0930: cmp r2, r0 blo _020C0950 mov r0, r5 - bl FUN_020ADA98 + bl NNS_FndGetNextListObject movs r1, r0 bne _020C0930 _020C0950: mov r0, r5 mov r2, r4 - bl FUN_020ADB18 + bl NNS_FndInsertListObject str r5, [r4, #0x4] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - ; _end - arm_func_start FUN_020C0968 -FUN_020C0968: ; 0x020C0968 + arm_func_start InitPlayer +InitPlayer: ; 0x020C0968 stmdb sp!, {r4,lr} mov r4, r0 mov r0, #0x0 @@ -270,42 +238,40 @@ FUN_020C0968: ; 0x020C0968 strb r1, [r4, #0x40] add r0, r4, #0x1c strb r1, [r4, #0x41] - bl FUN_020C3E6C + bl NNSi_SndFaderInit add r0, r4, #0x1c mov r1, #0x7f00 mov r2, #0x1 - bl FUN_020C3E40 + bl NNSi_SndFaderSet ldmia sp!, {r4,pc} - ; NNSi_SndPlayerAllocHeap - arm_func_start FUN_020C09B0 -FUN_020C09B0: ; 0x020C09B0 + arm_func_start NNSi_SndPlayerAllocHeap +NNSi_SndPlayerAllocHeap: ; 0x020C09B0 stmdb sp!, {r4-r6,lr} - ldr r3, _020C0A00 ; =UNK_021D2254 + ldr r3, _020C0A00 ; =sPlayer mov r2, #0x24 mla r5, r0, r2, r3 mov r6, r1 add r0, r5, #0xc mov r1, #0x0 - bl FUN_020ADA98 + bl NNS_FndGetNextListObject movs r4, r0 moveq r0, #0x0 ldmeqia sp!, {r4-r6,pc} mov r1, r4 add r0, r5, #0xc - bl FUN_020ADAB0 + bl NNS_FndRemoveListObject str r6, [r4, #0xc] str r4, [r6, #0x8] ldr r0, [r4, #0x8] - bl FUN_020C29C0 + bl NNS_SndHeapClear ldr r0, [r4, #0x8] ldmia sp!, {r4-r6,pc} .balign 4 -_020C0A00: .word UNK_021D2254 +_020C0A00: .word sPlayer - ; _end - arm_func_start FUN_020C0A04 -FUN_020C0A04: ; 0x020C0A04 + arm_func_start NNSi_SndPlayerPause +NNSi_SndPlayerPause: ; 0x020C0A04 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 movs r5, r0 @@ -322,9 +288,8 @@ FUN_020C0A04: ; 0x020C0A04 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - ; _end - arm_func_start FUN_020C0A40 -FUN_020C0A40: ; 0x020C0A40 + arm_func_start NNSi_SndPlayerStopSeq +NNSi_SndPlayerStopSeq: ; 0x020C0A40 stmdb sp!, {r4,lr} movs r4, r0 mov r2, r1 @@ -334,22 +299,21 @@ FUN_020C0A40: ; 0x020C0A40 ldmeqia sp!, {r4,pc} cmp r2, #0x0 bne _020C0A6C - bl FUN_020C087C + bl ForceStopSeq ldmia sp!, {r4,pc} _020C0A6C: add r0, r4, #0x1c mov r1, #0x0 - bl FUN_020C3E40 + bl NNSi_SndFaderSet mov r0, r4 mov r1, #0x0 - bl FUN_020C06CC + bl SetPlayerPriority mov r0, #0x2 strb r0, [r4, #0x2c] ldmia sp!, {r4,pc} - ; NNSi_SndPlayerStartSeq - arm_func_start FUN_020C0A90 -FUN_020C0A90: ; 0x020C0A90 + arm_func_start NNSi_SndPlayerStartSeq +NNSi_SndPlayerStartSeq: ; 0x020C0A90 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 @@ -364,7 +328,7 @@ FUN_020C0A90: ; 0x020C0A90 bl SND_SetTrackAllocatableChannel _020C0AC0: mov r0, r5 - bl FUN_020C0968 + bl InitPlayer bl SND_GetCurrentCommandTag str r0, [r5, #0x30] mov r0, #0x1 @@ -375,20 +339,18 @@ _020C0AC0: .balign 4 _020C0AE4: .word 0x0000FFFF - ; NNSi_SndPlayerFreeSeqPlayer - arm_func_start thunk_FUN_020c077c -thunk_FUN_020c077c: ; 0x020C0AE8 - ldr ip, _020C0AF0 ; =FUN_020C077C + arm_func_start NNSi_SndPlayerFreeSeqPlayer +NNSi_SndPlayerFreeSeqPlayer: ; 0x020C0AE8 + ldr ip, _020C0AF0 ; =ShutdownPlayer bx r12 .balign 4 -_020C0AF0: .word FUN_020C077C +_020C0AF0: .word ShutdownPlayer - ; NNSi_SndPlayerAllocSeqPlayer - arm_func_start FUN_020C0AF4 -FUN_020C0AF4: ; 0x020C0AF4 + arm_func_start NNSi_SndPlayerAllocSeqPlayer +NNSi_SndPlayerAllocSeqPlayer: ; 0x020C0AF4 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 - ldr ip, _020C0B9C ; =UNK_021D2254 + ldr ip, _020C0B9C ; =sPlayer mov r3, #0x24 mov r4, r0 ldr r5, [r4, #0x0] @@ -396,7 +358,7 @@ FUN_020C0AF4: ; 0x020C0AF4 mov r7, r2 cmp r5, #0x0 beq _020C0B20 - bl FUN_020C0F68 + bl NNS_SndHandleReleaseSeq _020C0B20: ldrh r1, [r6, #0x8] ldr r0, [r6, #0x18] @@ -404,7 +366,7 @@ _020C0B20: blo _020C0B64 mov r0, r6 mov r1, #0x0 - bl FUN_020ADA98 + bl NNS_FndGetNextListObject cmp r0, #0x0 addeq sp, sp, #0x4 moveq r0, #0x0 @@ -414,35 +376,34 @@ _020C0B20: addlt sp, sp, #0x4 movlt r0, #0x0 ldmltia sp!, {r4-r7,pc} - bl FUN_020C087C + bl ForceStopSeq _020C0B64: mov r0, r7 - bl FUN_020C0808 + bl AllocSeqPlayer movs r5, r0 addeq sp, sp, #0x4 moveq r0, #0x0 ldmeqia sp!, {r4-r7,pc} mov r0, r6 mov r1, r5 - bl FUN_020C0910 + bl InsertPlayerList str r4, [r5, #0x0] mov r0, r5 str r5, [r4, #0x0] add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020C0B9C: .word UNK_021D2254 +_020C0B9C: .word sPlayer - ; NNSi_SndPlayerMain - arm_func_start FUN_020C0BA0 -FUN_020C0BA0: ; 0x020C0BA0 + arm_func_start NNSi_SndPlayerMain +NNSi_SndPlayerMain: ; 0x020C0BA0 stmdb sp!, {r4-r11,lr} sub sp, sp, #0xc bl SND_GetPlayerStatus str r0, [sp, #0x0] - ldr r0, _020C0D14 ; =UNK_021D1E08 + ldr r0, _020C0D14 ; =sPrioList mov r1, #0x0 - bl FUN_020ADA98 + bl NNS_FndGetNextListObject movs r10, r0 addeq sp, sp, #0xc ldmeqia sp!, {r4-r11,pc} @@ -453,9 +414,9 @@ FUN_020C0BA0: ; 0x020C0BA0 mov r5, #0x1 mov r11, #0x0 _020C0BE0: - ldr r0, _020C0D14 ; =UNK_021D1E08 + ldr r0, _020C0D14 ; =sPrioList mov r1, r10 - bl FUN_020ADA98 + bl NNS_FndGetNextListObject ldrb r1, [r10, #0x2d] mov r9, r0 cmp r1, #0x0 @@ -474,11 +435,11 @@ _020C0C0C: ands r0, r0, r1 bne _020C0C38 mov r0, r10 - bl FUN_020C077C + bl ShutdownPlayer b _020C0D00 _020C0C38: add r0, r10, #0x1c - bl FUN_020C3DF4 + bl NNSi_SndFaderUpdate ldr r0, [r10, #0x4] ldrb r2, [r10, #0x41] ldrb r1, [r10, #0x40] @@ -490,7 +451,7 @@ _020C0C38: ldrsh r8, [r4, r3] ldrsh r7, [r4, r2] ldrsh r6, [r4, r1] - bl FUN_020C3E0C + bl NNSi_SndFaderGet mov r0, r0, asr #0x8 mov r2, r0, lsl #0x1 add r1, r7, r8 @@ -518,11 +479,11 @@ _020C0CC4: cmp r0, #0x2 bne _020C0CE8 add r0, r10, #0x1c - bl FUN_020C3DDC + bl NNSi_SndFaderIsFinished cmp r0, #0x0 beq _020C0CE8 mov r0, r10 - bl FUN_020C087C + bl ForceStopSeq _020C0CE8: ldrb r0, [r10, #0x2f] cmp r0, #0x0 @@ -537,35 +498,34 @@ _020C0D00: add sp, sp, #0xc ldmia sp!, {r4-r11,pc} .balign 4 -_020C0D14: .word UNK_021D1E08 +_020C0D14: .word sPrioList _020C0D18: .word SNDi_DecibelTable _020C0D1C: .word 0x00007FFF - ; NNSi_SndPlayerInit - arm_func_start FUN_020C0D20 -FUN_020C0D20: ; 0x020C0D20 + arm_func_start NNSi_SndPlayerInit +NNSi_SndPlayerInit: ; 0x020C0D20 stmdb sp!, {r4-r10,lr} - ldr r0, _020C0DC4 ; =UNK_021D1E08 + ldr r0, _020C0DC4 ; =sPrioList mov r1, #0x14 - bl FUN_020ADC74 - ldr r0, _020C0DC8 ; =UNK_021D1DFC + bl NNS_FndInitList + ldr r0, _020C0DC8 ; =sFreeList mov r1, #0x14 - bl FUN_020ADC74 - ldr r6, _020C0DCC ; =UNK_021D1E14 + bl NNS_FndInitList + ldr r6, _020C0DCC ; =sSeqPlayer mov r7, #0x0 - ldr r4, _020C0DC8 ; =UNK_021D1DFC + ldr r4, _020C0DC8 ; =sFreeList mov r5, r7 _020C0D4C: strb r5, [r6, #0x2c] mov r0, r4 mov r1, r6 strb r7, [r6, #0x3c] - bl FUN_020ADBE8 + bl NNS_FndAppendListObject add r7, r7, #0x1 cmp r7, #0x10 add r6, r6, #0x44 blt _020C0D4C - ldr sl, _020C0DD0 ; =UNK_021D2254 + ldr sl, _020C0DD0 ; =sPlayer mov r9, #0x0 mov r7, r9 mov r4, r9 @@ -575,10 +535,10 @@ _020C0D4C: _020C0D8C: mov r0, r10 mov r1, r8 - bl FUN_020ADC74 + bl NNS_FndInitList mov r1, r7 add r0, r10, #0xc - bl FUN_020ADC74 + bl NNS_FndInitList strb r6, [r10, #0x20] str r5, [r10, #0x18] add r9, r9, #0x1 @@ -588,14 +548,13 @@ _020C0D8C: blt _020C0D8C ldmia sp!, {r4-r10,pc} .balign 4 -_020C0DC4: .word UNK_021D1E08 -_020C0DC8: .word UNK_021D1DFC -_020C0DCC: .word UNK_021D1E14 -_020C0DD0: .word UNK_021D2254 - - ; _end - arm_func_start FUN_020C0DD4 -FUN_020C0DD4: ; 0x020C0DD4 +_020C0DC4: .word sPrioList +_020C0DC8: .word sFreeList +_020C0DCC: .word sSeqPlayer +_020C0DD0: .word sPlayer + + arm_func_start NNS_SndPlayerGetTick +NNS_SndPlayerGetTick: ; 0x020C0DD4 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r1, [r0, #0x0] @@ -613,9 +572,8 @@ FUN_020C0DD4: ; 0x020C0DD4 add sp, sp, #0x4 ldmia sp!, {pc} - ; _end - arm_func_start FUN_020C0E14 -FUN_020C0E14: ; 0x020C0E14 + arm_func_start NNS_SndPlayerGetSeqNo +NNS_SndPlayerGetSeqNo: ; 0x020C0E14 ldr r1, [r0, #0x0] cmp r1, #0x0 mvneq r0, #0x0 @@ -626,9 +584,8 @@ FUN_020C0E14: ; 0x020C0E14 ldreqh r0, [r1, #0x38] bx lr - ; _end - arm_func_start FUN_020C0E38 -FUN_020C0E38: ; 0x020C0E38 + arm_func_start NNS_SndPlayerSetSeqArcNo +NNS_SndPlayerSetSeqArcNo: ; 0x020C0E38 ldr r12, [r0, #0x0] cmp r12, #0x0 bxeq lr @@ -640,9 +597,8 @@ FUN_020C0E38: ; 0x020C0E38 strh r2, [r0, #0x3a] bx lr - ; _end - arm_func_start FUN_020C0E60 -FUN_020C0E60: ; 0x020C0E60 + arm_func_start NNS_SndPlayerSetSeqNo +NNS_SndPlayerSetSeqNo: ; 0x020C0E60 ldr r3, [r0, #0x0] cmp r3, #0x0 movne r2, #0x1 @@ -651,9 +607,8 @@ FUN_020C0E60: ; 0x020C0E60 strneh r1, [r0, #0x38] bx lr - ; _end - arm_func_start FUN_020C0E7C -FUN_020C0E7C: ; 0x020C0E7C + arm_func_start NNS_SndPlayerSetTrackPan +NNS_SndPlayerSetTrackPan: ; 0x020C0E7C stmdb sp!, {lr} sub sp, sp, #0x4 ldr r0, [r0, #0x0] @@ -665,9 +620,8 @@ FUN_020C0E7C: ; 0x020C0E7C add sp, sp, #0x4 ldmia sp!, {pc} - ; _end - arm_func_start FUN_020C0EA4 -FUN_020C0EA4: ; 0x020C0EA4 + arm_func_start NNS_SndPlayerSetTrackPitch +NNS_SndPlayerSetTrackPitch: ; 0x020C0EA4 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r0, [r0, #0x0] @@ -679,9 +633,8 @@ FUN_020C0EA4: ; 0x020C0EA4 add sp, sp, #0x4 ldmia sp!, {pc} - ; _end - arm_func_start FUN_020C0ECC -FUN_020C0ECC: ; 0x020C0ECC + arm_func_start NNS_SndPlayerSetChannelPriority +NNS_SndPlayerSetChannelPriority: ; 0x020C0ECC stmdb sp!, {lr} sub sp, sp, #0x4 ldr r0, [r0, #0x0] @@ -693,9 +646,8 @@ FUN_020C0ECC: ; 0x020C0ECC add sp, sp, #0x4 ldmia sp!, {pc} - ; _end - arm_func_start FUN_020C0EF4 -FUN_020C0EF4: ; 0x020C0EF4 + arm_func_start NNS_SndPlayerMoveVolume +NNS_SndPlayerMoveVolume: ; 0x020C0EF4 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r3, [r0, #0x0] @@ -708,40 +660,36 @@ FUN_020C0EF4: ; 0x020C0EF4 ldmeqia sp!, {pc} add r0, r3, #0x1c mov r1, r1, lsl #0x8 - bl FUN_020C3E40 + bl NNSi_SndFaderSet add sp, sp, #0x4 ldmia sp!, {pc} - ; _end - arm_func_start FUN_020C0F30 -FUN_020C0F30: ; 0x020C0F30 + arm_func_start NNS_SndPlayerSetInitialVolume +NNS_SndPlayerSetInitialVolume: ; 0x020C0F30 ldr r0, [r0, #0x0] cmp r0, #0x0 strneb r1, [r0, #0x40] bx lr - ; _end - arm_func_start FUN_020C0F40 -FUN_020C0F40: ; 0x020C0F40 + arm_func_start NNS_SndPlayerSetVolume +NNS_SndPlayerSetVolume: ; 0x020C0F40 ldr r0, [r0, #0x0] cmp r0, #0x0 strneb r1, [r0, #0x41] bx lr - ; NNS_SndPlayerCountPlayingSeqByPlayerNo - arm_func_start FUN_020C0F50 -FUN_020C0F50: ; 0x020C0F50 + arm_func_start NNS_SndPlayerCountPlayingSeqByPlayerNo +NNS_SndPlayerCountPlayingSeqByPlayerNo: ; 0x020C0F50 mov r1, #0x24 mul r1, r0, r1 - ldr r0, _020C0F64 ; =UNK_021D225C + ldr r0, _020C0F64 ; =sPlayer + 0x8 ldrh r0, [r0, r1] bx lr .balign 4 -_020C0F64: .word UNK_021D225C +_020C0F64: .word sPlayer + 0x8 - ; _end - arm_func_start FUN_020C0F68 -FUN_020C0F68: ; 0x020C0F68 + arm_func_start NNS_SndHandleReleaseSeq +NNS_SndHandleReleaseSeq: ; 0x020C0F68 ldr r2, [r0, #0x0] cmp r2, #0x0 movne r1, #0x0 @@ -749,27 +697,24 @@ FUN_020C0F68: ; 0x020C0F68 strne r1, [r0, #0x0] bx lr - ; _end - arm_func_start FUN_020C0F80 -FUN_020C0F80: ; 0x020C0F80 + arm_func_start NNS_SndHandleInit +NNS_SndHandleInit: ; 0x020C0F80 mov r1, #0x0 str r1, [r0, #0x0] bx lr - ; NNS_SndPlayerPause - arm_func_start FUN_020C0F8C -FUN_020C0F8C: ; 0x020C0F8C - ldr ip, _020C0F98 ; =FUN_020C0A04 + arm_func_start NNS_SndPlayerPause +NNS_SndPlayerPause: ; 0x020C0F8C + ldr ip, _020C0F98 ; =NNSi_SndPlayerPause ldr r0, [r0, #0x0] bx r12 .balign 4 -_020C0F98: .word FUN_020C0A04 +_020C0F98: .word NNSi_SndPlayerPause - ; NNS_SndPlayerStopSeqAll - arm_func_start FUN_020C0F9C -FUN_020C0F9C: ; 0x020C0F9C + arm_func_start NNS_SndPlayerStopSeqAll +NNS_SndPlayerStopSeqAll: ; 0x020C0F9C stmdb sp!, {r4-r6,lr} - ldr r4, _020C0FD8 ; =UNK_021D1E14 + ldr r4, _020C0FD8 ; =sSeqPlayer mov r6, r0 mov r5, #0x0 _020C0FAC: @@ -778,7 +723,7 @@ _020C0FAC: beq _020C0FC4 mov r0, r4 mov r1, r6 - bl FUN_020C0A40 + bl NNSi_SndPlayerStopSeq _020C0FC4: add r5, r5, #0x1 cmp r5, #0x10 @@ -786,14 +731,13 @@ _020C0FC4: blt _020C0FAC ldmia sp!, {r4-r6,pc} .balign 4 -_020C0FD8: .word UNK_021D1E14 +_020C0FD8: .word sSeqPlayer - ; NNS_SndPlayerStopSeqBySeqNo - arm_func_start FUN_020C0FDC -FUN_020C0FDC: ; 0x020C0FDC + arm_func_start NNS_SndPlayerStopSeqBySeqNo +NNS_SndPlayerStopSeqBySeqNo: ; 0x020C0FDC stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 - ldr r4, _020C103C ; =UNK_021D1E14 + ldr r4, _020C103C ; =sSeqPlayer mov r7, r0 mov r6, r1 mov r5, #0x0 @@ -809,7 +753,7 @@ _020C0FF4: bne _020C1024 mov r0, r4 mov r1, r6 - bl FUN_020C0A40 + bl NNSi_SndPlayerStopSeq _020C1024: add r5, r5, #0x1 cmp r5, #0x10 @@ -818,17 +762,16 @@ _020C1024: add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020C103C: .word UNK_021D1E14 +_020C103C: .word sSeqPlayer - ; NNS_SndPlayerStopSeqByPlayerNo - arm_func_start FUN_020C1040 -FUN_020C1040: ; 0x020C1040 + arm_func_start NNS_SndPlayerStopSeqByPlayerNo +NNS_SndPlayerStopSeqByPlayerNo: ; 0x020C1040 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 - ldr r3, _020C109C ; =UNK_021D2254 + ldr r3, _020C109C ; =sPlayer mov r2, #0x24 mla r4, r0, r2, r3 - ldr r5, _020C10A0 ; =UNK_021D1E14 + ldr r5, _020C10A0 ; =sSeqPlayer mov r7, r1 mov r6, #0x0 _020C1060: @@ -840,7 +783,7 @@ _020C1060: bne _020C1084 mov r0, r5 mov r1, r7 - bl FUN_020C0A40 + bl NNSi_SndPlayerStopSeq _020C1084: add r6, r6, #0x1 cmp r6, #0x10 @@ -849,31 +792,29 @@ _020C1084: add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020C109C: .word UNK_021D2254 -_020C10A0: .word UNK_021D1E14 +_020C109C: .word sPlayer +_020C10A0: .word sSeqPlayer - ; NNS_SndPlayerStopSeq - arm_func_start FUN_020C10A4 -FUN_020C10A4: ; 0x020C10A4 - ldr ip, _020C10B0 ; =FUN_020C0A40 + arm_func_start NNS_SndPlayerStopSeq +NNS_SndPlayerStopSeq: ; 0x020C10A4 + ldr ip, _020C10B0 ; =NNSi_SndPlayerStopSeq ldr r0, [r0, #0x0] bx r12 .balign 4 -_020C10B0: .word FUN_020C0A40 +_020C10B0: .word NNSi_SndPlayerStopSeq - ; NNS_SndPlayerCreateHeap - arm_func_start FUN_020C10B4 -FUN_020C10B4: ; 0x020C10B4 + arm_func_start NNS_SndPlayerCreateHeap +NNS_SndPlayerCreateHeap: ; 0x020C10B4 stmdb sp!, {r4-r6,lr} sub sp, sp, #0x8 mov r5, r2 mov r6, r0 mov r0, r1 mov r3, #0x0 - ldr r2, _020C1140 ; =FUN_020C072C + ldr r2, _020C1140 ; =PlayerHeapDisposeCallback add r1, r5, #0x14 str r3, [sp, #0x0] - bl SDATi_AllocAndInitChunk + bl NNS_SndHeapAlloc movs r4, r0 addeq sp, sp, #0x8 moveq r0, #0x0 @@ -884,57 +825,53 @@ FUN_020C10B4: ; 0x020C10B4 mov r1, r5 add r0, r4, #0x14 str r2, [r4, #0x8] - bl FUN_020C2A94 + bl NNS_SndHeapCreate cmp r0, #0x0 addeq sp, sp, #0x8 moveq r0, #0x0 ldmeqia sp!, {r4-r6,pc} - ldr r2, _020C1144 ; =UNK_021D2254 + ldr r2, _020C1144 ; =sPlayer mov r1, #0x24 mla r2, r6, r1, r2 str r0, [r4, #0x8] mov r1, r4 add r0, r2, #0xc - bl FUN_020ADBE8 + bl NNS_FndAppendListObject mov r0, #0x1 add sp, sp, #0x8 ldmia sp!, {r4-r6,pc} .balign 4 -_020C1140: .word FUN_020C072C -_020C1144: .word UNK_021D2254 +_020C1140: .word PlayerHeapDisposeCallback +_020C1144: .word sPlayer - ; NNS_SndPlayerSetAllocatableChannel - arm_func_start FUN_020C1148 -FUN_020C1148: ; 0x020C1148 + arm_func_start NNS_SndPlayerSetAllocatableChannel +NNS_SndPlayerSetAllocatableChannel: ; 0x020C1148 mov r2, #0x24 mul r2, r0, r2 - ldr r0, _020C115C ; =UNK_021D2270 + ldr r0, _020C115C ; =sPlayer + 0x1C str r1, [r0, r2] bx lr .balign 4 -_020C115C: .word UNK_021D2270 +_020C115C: .word sPlayer + 0x1C - ; NNS_SndPlayerSetPlayableSeqCount - arm_func_start FUN_020C1160 -FUN_020C1160: ; 0x020C1160 + arm_func_start NNS_SndPlayerSetPlayableSeqCount +NNS_SndPlayerSetPlayableSeqCount: ; 0x020C1160 mov r2, #0x24 mul r2, r0, r2 mov r0, r1, lsl #0x10 - ldr r1, _020C117C ; =UNK_021D226C + ldr r1, _020C117C ; =sPlayer + 0x18 mov r0, r0, lsr #0x10 str r0, [r1, r2] bx lr .balign 4 -_020C117C: .word UNK_021D226C +_020C117C: .word sPlayer + 0x18 - ; NNS_SndPlayerSetPlayerVolume - arm_func_start FUN_020C1180 -FUN_020C1180: ; 0x020C1180 + arm_func_start NNS_SndPlayerSetPlayerVolume +NNS_SndPlayerSetPlayerVolume: ; 0x020C1180 mov r2, #0x24 mul r2, r0, r2 - ldr r0, _020C1194 ; =UNK_021D2274 + ldr r0, _020C1194 ; =sPlayer + 0x20 strb r1, [r0, r2] bx lr .balign 4 -_020C1194: .word UNK_021D2274 - +_020C1194: .word sPlayer + 0x20 diff --git a/arm9/asm/NNS_SND_resource_mgr.s b/arm9/asm/NNS_SND_resource_mgr.s index 482b8e81..944754cc 100644 --- a/arm9/asm/NNS_SND_resource_mgr.s +++ b/arm9/asm/NNS_SND_resource_mgr.s @@ -3,43 +3,38 @@ .section .bss - ; sCaptureLock - .global UNK_021D1CB0 -UNK_021D1CB0: ; 0x021D1CB0 + .global sCaptureLock +sCaptureLock: ; 0x021D1CB0 .space 0x4 - ; sAlarmLock - .global UNK_021D1CB4 -UNK_021D1CB4: ; 0x021D1CB4 + .global sAlarmLock +sAlarmLock: ; 0x021D1CB4 .space 0x4 - ; sChannelLock - .global UNK_021D1CB8 -UNK_021D1CB8: ; 0x021D1CB8 + .global sChannelLock +sChannelLock: ; 0x021D1CB8 .space 0x4 .section .text - ; NNSi_SndInitResourceMgr - arm_func_start FUN_020C0270 -FUN_020C0270: ; 0x020C0270 - ldr r2, _020C0290 ; =UNK_021D1CB8 + arm_func_start NNSi_SndInitResourceMgr +NNSi_SndInitResourceMgr: ; 0x020C0270 + ldr r2, _020C0290 ; =sChannelLock mov r3, #0x0 - ldr r1, _020C0294 ; =UNK_021D1CB0 - ldr r0, _020C0298 ; =UNK_021D1CB4 + ldr r1, _020C0294 ; =sCaptureLock + ldr r0, _020C0298 ; =sAlarmLock str r3, [r2, #0x0] str r3, [r1, #0x0] str r3, [r0, #0x0] bx lr .balign 4 -_020C0290: .word UNK_021D1CB8 -_020C0294: .word UNK_021D1CB0 -_020C0298: .word UNK_021D1CB4 +_020C0290: .word sChannelLock +_020C0294: .word sCaptureLock +_020C0298: .word sAlarmLock - ; NNS_SndFreeAlarm - arm_func_start FUN_020C029C -FUN_020C029C: ; 0x020C029C - ldr r1, _020C02B8 ; =UNK_021D1CB4 + arm_func_start NNS_SndFreeAlarm +NNS_SndFreeAlarm: ; 0x020C029C + ldr r1, _020C02B8 ; =sAlarmLock mov r2, #0x1 mvn r0, r2, lsl r0 ldr r2, [r1, #0x0] @@ -47,18 +42,17 @@ FUN_020C029C: ; 0x020C029C str r0, [r1, #0x0] bx lr .balign 4 -_020C02B8: .word UNK_021D1CB4 +_020C02B8: .word sAlarmLock - ; NNS_SndAllocAlarm - arm_func_start FUN_020C02BC -FUN_020C02BC: ; 0x020C02BC - ldr r0, _020C02FC ; =UNK_021D1CB4 + arm_func_start NNS_SndAllocAlarm +NNS_SndAllocAlarm: ; 0x020C02BC + ldr r0, _020C02FC ; =sAlarmLock mov r3, #0x1 ldr r2, [r0, #0x0] mov r0, #0x0 _020C02CC: ands r1, r2, r3 - ldreq r1, _020C02FC ; =UNK_021D1CB4 + ldreq r1, _020C02FC ; =sAlarmLock ldreq r2, [r1, #0x0] orreq r2, r2, r3 streq r2, [r1, #0x0] @@ -70,24 +64,22 @@ _020C02CC: mvn r0, #0x0 bx lr .balign 4 -_020C02FC: .word UNK_021D1CB4 +_020C02FC: .word sAlarmLock - ; NNS_SndUnlockCapture - arm_func_start FUN_020C0300 -FUN_020C0300: ; 0x020C0300 - ldr r1, _020C0318 ; =UNK_021D1CB0 + arm_func_start NNS_SndUnlockCapture +NNS_SndUnlockCapture: ; 0x020C0300 + ldr r1, _020C0318 ; =sCaptureLock mvn r0, r0 ldr r2, [r1, #0x0] and r0, r2, r0 str r0, [r1, #0x0] bx lr .balign 4 -_020C0318: .word UNK_021D1CB0 +_020C0318: .word sCaptureLock - ; NNS_SndLockCapture - arm_func_start FUN_020C031C -FUN_020C031C: ; 0x020C031C - ldr r1, _020C033C ; =UNK_021D1CB0 + arm_func_start NNS_SndLockCapture +NNS_SndLockCapture: ; 0x020C031C + ldr r1, _020C033C ; =sCaptureLock ldr r2, [r1, #0x0] ands r3, r0, r2 movne r0, #0x0 @@ -96,45 +88,42 @@ FUN_020C031C: ; 0x020C031C moveq r0, #0x1 bx lr .balign 4 -_020C033C: .word UNK_021D1CB0 +_020C033C: .word sCaptureLock - ; NNS_SndUnlockChannel - arm_func_start FUN_020C0340 -FUN_020C0340: ; 0x020C0340 + arm_func_start NNS_SndUnlockChannel +NNS_SndUnlockChannel: ; 0x020C0340 stmdb sp!, {r4,lr} movs r4, r0 ldmeqia sp!, {r4,pc} mov r1, #0x0 bl SND_UnlockChannel - ldr r0, _020C036C ; =UNK_021D1CB8 + ldr r0, _020C036C ; =sChannelLock mvn r1, r4 ldr r2, [r0, #0x0] and r1, r2, r1 str r1, [r0, #0x0] ldmia sp!, {r4,pc} .balign 4 -_020C036C: .word UNK_021D1CB8 +_020C036C: .word sChannelLock - ; NNS_SndLockChannel - arm_func_start FUN_020C0370 -FUN_020C0370: ; 0x020C0370 + arm_func_start NNS_SndLockChannel +NNS_SndLockChannel: ; 0x020C0370 stmdb sp!, {r4,lr} movs r4, r0 moveq r0, #0x1 ldmeqia sp!, {r4,pc} - ldr r1, _020C03B4 ; =UNK_021D1CB8 + ldr r1, _020C03B4 ; =sChannelLock ldr r1, [r1, #0x0] ands r1, r4, r1 movne r0, #0x0 ldmneia sp!, {r4,pc} mov r1, #0x0 bl SND_LockChannel - ldr r1, _020C03B4 ; =UNK_021D1CB8 + ldr r1, _020C03B4 ; =sChannelLock mov r0, #0x1 ldr r2, [r1, #0x0] orr r2, r2, r4 str r2, [r1, #0x0] ldmia sp!, {r4,pc} .balign 4 -_020C03B4: .word UNK_021D1CB8 - +_020C03B4: .word sChannelLock diff --git a/arm9/asm/NNS_SND_seqdata.s b/arm9/asm/NNS_SND_seqdata.s index 86a4217c..60cf2420 100644 --- a/arm9/asm/NNS_SND_seqdata.s +++ b/arm9/asm/NNS_SND_seqdata.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020C3D9C -FUN_020C3D9C: ; 0x020C3D9C + arm_func_start NNSi_SndSeqArcGetSeqInfo +NNSi_SndSeqArcGetSeqInfo: ; 0x020C3D9C cmp r1, #0x0 movlt r0, #0x0 bxlt lr @@ -22,4 +21,3 @@ FUN_020C3D9C: ; 0x020C3D9C add r0, r3, r2 moveq r0, #0x0 bx lr - diff --git a/arm9/asm/NNS_SND_sndarc.s b/arm9/asm/NNS_SND_sndarc.s index 1f781631..aa46de46 100644 --- a/arm9/asm/NNS_SND_sndarc.s +++ b/arm9/asm/NNS_SND_sndarc.s @@ -3,50 +3,44 @@ .section .bss - ; sCurrent - .global UNK_021D28C0 -UNK_021D28C0: ; 0x021D28C0 + .global sCurrent +sCurrent: ; 0x021D28C0 .space 0x4 .section .text - ; _end - arm_func_start SDATi_SymbDtor -SDATi_SymbDtor: ; 0x020C209C + arm_func_start SymbolDisposeCallback +SymbolDisposeCallback: ; 0x020C209C mov r0, #0x0 str r0, [r2, #0x88] bx lr - ; _end - arm_func_start SDATi_FatDtor -SDATi_FatDtor: ; 0x020C20A8 + arm_func_start FatDisposeCallback +FatDisposeCallback: ; 0x020C20A8 mov r0, #0x0 str r0, [r2, #0x84] bx lr - ; _end - arm_func_start SDATi_InfoDtor -SDATi_InfoDtor: ; 0x020C20B4 + arm_func_start InfoDisposeCallback +InfoDisposeCallback: ; 0x020C20B4 mov r0, #0x0 str r0, [r2, #0x8c] bx lr - ; NNS_SndArcSetFileAddress - arm_func_start FUN_020C20C0 -FUN_020C20C0: ; 0x020C20C0 - ldr r2, _020C20D8 ; =UNK_021D28C0 + arm_func_start NNS_SndArcSetFileAddress +NNS_SndArcSetFileAddress: ; 0x020C20C0 + ldr r2, _020C20D8 ; =sCurrent ldr r2, [r2, #0x0] ldr r2, [r2, #0x84] add r0, r2, r0, lsl #0x4 str r1, [r0, #0x14] bx lr .balign 4 -_020C20D8: .word UNK_021D28C0 +_020C20D8: .word sCurrent - ; NNS_SndArcGetFileAddress - arm_func_start FUN_020C20DC -FUN_020C20DC: ; 0x020C20DC - ldr r1, _020C2100 ; =UNK_021D28C0 + arm_func_start NNS_SndArcGetFileAddress +NNS_SndArcGetFileAddress: ; 0x020C20DC + ldr r1, _020C2100 ; =sCurrent ldr r1, [r1, #0x0] ldr r2, [r1, #0x84] ldr r1, [r2, #0x8] @@ -56,13 +50,12 @@ FUN_020C20DC: ; 0x020C20DC ldrcc r0, [r0, #0x14] bx lr .balign 4 -_020C2100: .word UNK_021D28C0 +_020C2100: .word sCurrent - ; NNS_SndArcReadFile - arm_func_start FUN_020C2104 -FUN_020C2104: ; 0x020C2104 + arm_func_start NNS_SndArcReadFile +NNS_SndArcReadFile: ; 0x020C2104 stmdb sp!, {r4-r6,lr} - ldr r4, _020C2178 ; =UNK_021D28C0 + ldr r4, _020C2178 ; =sCurrent mov r5, r2 ldr r4, [r4, #0x0] mov r6, r1 @@ -91,12 +84,11 @@ FUN_020C2104: ; 0x020C2104 bl FS_ReadFile ldmia sp!, {r4-r6,pc} .balign 4 -_020C2178: .word UNK_021D28C0 +_020C2178: .word sCurrent - ; NNS_SndArcGetFileSize - arm_func_start FUN_020C217C -FUN_020C217C: ; 0x020C217C - ldr r1, _020C21A0 ; =UNK_021D28C0 + arm_func_start NNS_SndArcGetFileSize +NNS_SndArcGetFileSize: ; 0x020C217C + ldr r1, _020C21A0 ; =sCurrent ldr r1, [r1, #0x0] ldr r2, [r1, #0x84] ldr r1, [r2, #0x8] @@ -106,12 +98,11 @@ FUN_020C217C: ; 0x020C217C ldrcc r0, [r0, #0x10] bx lr .balign 4 -_020C21A0: .word UNK_021D28C0 +_020C21A0: .word sCurrent - ; NNS_SndArcGetGroupInfo - arm_func_start FUN_020C21A4 -FUN_020C21A4: ; 0x020C21A4 - ldr r1, _020C2204 ; =UNK_021D28C0 + arm_func_start NNS_SndArcGetGroupInfo +NNS_SndArcGetGroupInfo: ; 0x020C21A4 + ldr r1, _020C2204 ; =sCurrent ldr r3, [r1, #0x0] ldr r2, [r3, #0x8c] ldr r1, [r2, #0x1c] @@ -136,12 +127,11 @@ FUN_020C21A4: ; 0x020C21A4 addne r0, r0, r1 bx lr .balign 4 -_020C2204: .word UNK_021D28C0 +_020C2204: .word sCurrent - ; NNS_SndArcGetPlayerInfo - arm_func_start FUN_020C2208 -FUN_020C2208: ; 0x020C2208 - ldr r1, _020C2268 ; =UNK_021D28C0 + arm_func_start NNS_SndArcGetPlayerInfo +NNS_SndArcGetPlayerInfo: ; 0x020C2208 + ldr r1, _020C2268 ; =sCurrent ldr r3, [r1, #0x0] ldr r2, [r3, #0x8c] ldr r1, [r2, #0x18] @@ -166,12 +156,11 @@ FUN_020C2208: ; 0x020C2208 addne r0, r0, r1 bx lr .balign 4 -_020C2268: .word UNK_021D28C0 +_020C2268: .word sCurrent - ; NNS_SndArcGetWaveArcInfo - arm_func_start FUN_020C226C -FUN_020C226C: ; 0x020C226C - ldr r1, _020C22CC ; =UNK_021D28C0 + arm_func_start NNS_SndArcGetWaveArcInfo +NNS_SndArcGetWaveArcInfo: ; 0x020C226C + ldr r1, _020C22CC ; =sCurrent ldr r3, [r1, #0x0] ldr r2, [r3, #0x8c] ldr r1, [r2, #0x14] @@ -196,12 +185,11 @@ FUN_020C226C: ; 0x020C226C addne r0, r0, r1 bx lr .balign 4 -_020C22CC: .word UNK_021D28C0 +_020C22CC: .word sCurrent - ; NNS_SndArcGetBankInfo - arm_func_start FUN_020C22D0 -FUN_020C22D0: ; 0x020C22D0 - ldr r1, _020C2330 ; =UNK_021D28C0 + arm_func_start NNS_SndArcGetBankInfo +NNS_SndArcGetBankInfo: ; 0x020C22D0 + ldr r1, _020C2330 ; =sCurrent ldr r3, [r1, #0x0] ldr r2, [r3, #0x8c] ldr r1, [r2, #0x10] @@ -226,12 +214,11 @@ FUN_020C22D0: ; 0x020C22D0 addne r0, r0, r1 bx lr .balign 4 -_020C2330: .word UNK_021D28C0 +_020C2330: .word sCurrent - ; NNS_SndArcGetSeqArcInfo - arm_func_start FUN_020C2334 -FUN_020C2334: ; 0x020C2334 - ldr r1, _020C2394 ; =UNK_021D28C0 + arm_func_start NNS_SndArcGetSeqArcInfo +NNS_SndArcGetSeqArcInfo: ; 0x020C2334 + ldr r1, _020C2394 ; =sCurrent ldr r3, [r1, #0x0] ldr r2, [r3, #0x8c] ldr r1, [r2, #0xc] @@ -256,12 +243,11 @@ FUN_020C2334: ; 0x020C2334 addne r0, r0, r1 bx lr .balign 4 -_020C2394: .word UNK_021D28C0 +_020C2394: .word sCurrent - ; NNS_SndArcGetSeqInfo - arm_func_start FUN_020C2398 -FUN_020C2398: ; 0x020C2398 - ldr r1, _020C23F8 ; =UNK_021D28C0 + arm_func_start NNS_SndArcGetSeqInfo +NNS_SndArcGetSeqInfo: ; 0x020C2398 + ldr r1, _020C23F8 ; =sCurrent ldr r3, [r1, #0x0] ldr r2, [r3, #0x8c] ldr r1, [r2, #0x8] @@ -286,43 +272,39 @@ FUN_020C2398: ; 0x020C2398 addne r0, r0, r1 bx lr .balign 4 -_020C23F8: .word UNK_021D28C0 +_020C23F8: .word sCurrent - ; _end - arm_func_start FUN_020C23FC -FUN_020C23FC: ; 0x020C23FC + arm_func_start NNS_SndArcGetSeqParam +NNS_SndArcGetSeqParam: ; 0x020C23FC stmdb sp!, {lr} sub sp, sp, #0x4 - bl FUN_020C2398 + bl NNS_SndArcGetSeqInfo cmp r0, #0x0 moveq r0, #0x0 addne r0, r0, #0x4 add sp, sp, #0x4 ldmia sp!, {pc} - ; NNS_SndArcGetCurrent - arm_func_start FUN_020C241C -FUN_020C241C: ; 0x020C241C - ldr r0, _020C2428 ; =UNK_021D28C0 + arm_func_start NNS_SndArcGetCurrent +NNS_SndArcGetCurrent: ; 0x020C241C + ldr r0, _020C2428 ; =sCurrent ldr r0, [r0, #0x0] bx lr .balign 4 -_020C2428: .word UNK_021D28C0 +_020C2428: .word sCurrent - ; NNS_SndArcSetCurrent - arm_func_start FUN_020C242C -FUN_020C242C: ; 0x020C242C - ldr r1, _020C2440 ; =UNK_021D28C0 + arm_func_start NNS_SndArcSetCurrent +NNS_SndArcSetCurrent: ; 0x020C242C + ldr r1, _020C2440 ; =sCurrent ldr r2, [r1, #0x0] str r0, [r1, #0x0] mov r0, r2 bx lr .balign 4 -_020C2440: .word UNK_021D28C0 +_020C2440: .word sCurrent - ; NNS_SndArcInitOnMemory - arm_func_start FUN_020C2444 -FUN_020C2444: ; 0x020C2444 + arm_func_start NNS_SndArcInitOnMemory +NNS_SndArcInitOnMemory: ; 0x020C2444 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 @@ -369,14 +351,13 @@ _020C24BC: blo _020C24BC _020C24F0: mov r1, #0x0 - ldr r0, _020C2508 ; =UNK_021D28C0 + ldr r0, _020C2508 ; =sCurrent str r1, [r5, #0x30] str r5, [r0, #0x0] add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020C2508: .word UNK_021D28C0 - +_020C2508: .word sCurrent SDATi_ReadHeaders: stmdb sp!, {r4-r6,lr} sub sp, sp, #0x8 @@ -404,10 +385,10 @@ SDATi_ReadHeaders: mov r0, #0x0 str r0, [sp, #0x0] ldr r1, [r6, #0x1c] - ldr r2, _020C26EC ; =SDATi_InfoDtor + ldr r2, _020C26EC ; =InfoDisposeCallback mov r0, r5 mov r3, r6 - bl SDATi_AllocAndInitChunk + bl NNS_SndHeapAlloc str r0, [r6, #0x8c] ldr r0, [r6, #0x8c] cmp r0, #0x0 @@ -434,10 +415,10 @@ SDATi_ReadHeaders: mov r0, #0x0 str r0, [sp, #0x0] ldr r1, [r6, #0x24] - ldr r2, _020C26F0 ; =SDATi_FatDtor + ldr r2, _020C26F0 ; =FatDisposeCallback mov r0, r5 mov r3, r6 - bl SDATi_AllocAndInitChunk + bl NNS_SndHeapAlloc str r0, [r6, #0x84] ldr r0, [r6, #0x84] cmp r0, #0x0 @@ -467,11 +448,11 @@ SDATi_ReadHeaders: cmp r1, #0x0 beq _020C26E0 mov r4, #0x0 - ldr r2, _020C26F4 ; =SDATi_SymbDtor + ldr r2, _020C26F4 ; =SymbolDisposeCallback mov r0, r5 mov r3, r6 str r4, [sp, #0x0] - bl SDATi_AllocAndInitChunk + bl NNS_SndHeapAlloc str r0, [r6, #0x88] ldr r0, [r6, #0x88] cmp r0, #0x0 @@ -500,13 +481,12 @@ _020C26E0: add sp, sp, #0x8 ldmia sp!, {r4-r6,pc} .balign 4 -_020C26EC: .word SDATi_InfoDtor -_020C26F0: .word SDATi_FatDtor -_020C26F4: .word SDATi_SymbDtor +_020C26EC: .word InfoDisposeCallback +_020C26F0: .word FatDisposeCallback +_020C26F4: .word SymbolDisposeCallback - ; NNS_SndArcInit - arm_func_start SDAT_Open -SDAT_Open: ; 0x020C26F8 + arm_func_start NNS_SndArcInit +NNS_SndArcInit: ; 0x020C26F8 ; r0: &sSoundDataBuffer ; r1: char* filename ; r2: (&sSoundDataBuffer)->unk_0090 @@ -538,9 +518,8 @@ SDAT_Open: ; 0x020C26F8 str r3, [r6, #0x30] bl SDATi_ReadHeaders cmp r0, #0x0 - ldrne r0, _020C2770 ; =UNK_021D28C0 + ldrne r0, _020C2770 ; =sCurrent strne r6, [r0, #0x0] ldmia sp!, {r4-r6,pc} .balign 4 -_020C2770: .word UNK_021D28C0 - +_020C2770: .word sCurrent diff --git a/arm9/asm/NNS_SND_sndarc_loader.s b/arm9/asm/NNS_SND_sndarc_loader.s index 918a296b..26636305 100644 --- a/arm9/asm/NNS_SND_sndarc_loader.s +++ b/arm9/asm/NNS_SND_sndarc_loader.s @@ -3,16 +3,14 @@ .section .bss - ; waveArcHeader$8213 - .global UNK_021D28C4 -UNK_021D28C4: ; 0x021D28C4 + .global waveArcHeader$8213 +waveArcHeader$8213: ; 0x021D28C4 .space 0x3c .section .text - ; _end - arm_func_start FUN_020C2B1C -FUN_020C2B1C: ; 0x020C2B1C + arm_func_start LoadSingleWaves +LoadSingleWaves: ; 0x020C2B1C stmdb sp!, {r4-r10,lr} sub sp, sp, #0x20 mov r8, r0 @@ -49,7 +47,7 @@ _020C2B80: mov r0, r8 mov r2, r5 mov r3, r4 - bl FUN_020C2BE0 + bl LoadSingleWave cmp r0, #0x0 addeq sp, sp, #0x20 moveq r0, #0x0 @@ -66,9 +64,8 @@ _020C2BD4: add sp, sp, #0x20 ldmia sp!, {r4-r10,pc} - ; LoadSingleWave - arm_func_start FUN_020C2BE0 -FUN_020C2BE0: ; 0x020C2BE0 + arm_func_start LoadSingleWave +LoadSingleWave: ; 0x020C2BE0 stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4 mov r7, r0 @@ -95,12 +92,12 @@ FUN_020C2BE0: ; 0x020C2BE0 addeq sp, sp, #0x4 moveq r0, #0x0 ldmeqia sp!, {r4-r9,pc} - ldr r2, _020C2CBC ; =FUN_020C2CC0 + ldr r2, _020C2CBC ; =SingleWaveDisposeCallback mov r0, r4 mov r3, r7 add r1, r9, #0x20 str r6, [sp, #0x0] - bl SDATi_AllocAndInitChunk + bl NNS_SndHeapAlloc movs r4, r0 addeq sp, sp, #0x4 moveq r0, #0x0 @@ -109,7 +106,7 @@ FUN_020C2BE0: ; 0x020C2BE0 mov r1, r4 mov r2, r9 mov r3, r8 - bl FUN_020C2104 + bl NNS_SndArcReadFile cmp r9, r0 addne sp, sp, #0x4 movne r0, #0x0 @@ -125,11 +122,10 @@ FUN_020C2BE0: ; 0x020C2BE0 add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} .balign 4 -_020C2CBC: .word FUN_020C2CC0 +_020C2CBC: .word SingleWaveDisposeCallback - ; _end - arm_func_start FUN_020C2CC0 -FUN_020C2CC0: ; 0x020C2CC0 + arm_func_start SingleWaveDisposeCallback +SingleWaveDisposeCallback: ; 0x020C2CC0 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r5, r2 @@ -152,28 +148,26 @@ _020C2CFC: add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - ; _end - arm_func_start FUN_020C2D10 -FUN_020C2D10: ; 0x020C2D10 + arm_func_start WaveArcTableDisposeCallback +WaveArcTableDisposeCallback: ; 0x020C2D10 stmdb sp!, {r4,lr} mov r1, r2 mov r4, r0 mov r2, r3 - bl FUN_020C2DD0 + bl DisposeCallback mov r0, r4 bl SND_DestroyWaveArc ldmia sp!, {r4,pc} - ; _end - arm_func_start FUN_020C2D30 -FUN_020C2D30: ; 0x020C2D30 + arm_func_start WaveArcDisposeCallback +WaveArcDisposeCallback: ; 0x020C2D30 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r4, r1 mov r1, r2 mov r5, r0 mov r2, r3 - bl FUN_020C2DD0 + bl DisposeCallback mov r0, r5 add r1, r5, r4 bl SND_InvalidateWaveData @@ -182,16 +176,15 @@ FUN_020C2D30: ; 0x020C2D30 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - ; _end - arm_func_start FUN_020C2D68 -FUN_020C2D68: ; 0x020C2D68 + arm_func_start BankDisposeCallback +BankDisposeCallback: ; 0x020C2D68 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r4, r1 mov r1, r2 mov r5, r0 mov r2, r3 - bl FUN_020C2DD0 + bl DisposeCallback mov r0, r5 add r1, r5, r4 bl SND_InvalidateBankData @@ -200,25 +193,23 @@ FUN_020C2D68: ; 0x020C2D68 add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - ; _end - arm_func_start FUN_020C2DA0 -FUN_020C2DA0: ; 0x020C2DA0 + arm_func_start SeqDisposeCallback +SeqDisposeCallback: ; 0x020C2DA0 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r4, r1 mov r1, r2 mov r5, r0 mov r2, r3 - bl FUN_020C2DD0 + bl DisposeCallback mov r0, r5 add r1, r5, r4 bl SND_InvalidateSeqData add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - ; _end - arm_func_start FUN_020C2DD0 -FUN_020C2DD0: ; 0x020C2DD0 + arm_func_start DisposeCallback +DisposeCallback: ; 0x020C2DD0 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 movs r5, r1 @@ -229,44 +220,43 @@ FUN_020C2DD0: ; 0x020C2DD0 bl OS_DisableInterrupts mov r4, r0 mov r0, r5 - bl FUN_020C242C + bl NNS_SndArcSetCurrent mov r5, r0 mov r0, r6 - bl FUN_020C20DC + bl NNS_SndArcGetFileAddress cmp r7, r0 bne _020C2E1C mov r0, r6 mov r1, #0x0 - bl FUN_020C20C0 + bl NNS_SndArcSetFileAddress _020C2E1C: mov r0, r5 - bl FUN_020C242C + bl NNS_SndArcSetCurrent mov r0, r4 bl OS_RestoreInterrupts add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - ; LoadWaveArcTable - arm_func_start FUN_020C2E34 -FUN_020C2E34: ; 0x020C2E34 + arm_func_start LoadWaveArcTable +LoadWaveArcTable: ; 0x020C2E34 stmdb sp!, {r4-r9,lr} sub sp, sp, #0x4 mov r9, r0 mov r8, r1 mov r7, r2 - bl FUN_020C20DC + bl NNS_SndArcGetFileAddress movs r6, r0 bne _020C2F40 - ldr r1, _020C2F4C ; =UNK_021D28C4 + ldr r1, _020C2F4C ; =waveArcHeader$8213 mov r0, r9 mov r2, #0x3c mov r3, #0x0 - bl FUN_020C2104 + bl NNS_SndArcReadFile cmp r0, #0x3c addne sp, sp, #0x4 movne r0, #0x0 ldmneia sp!, {r4-r9,pc} - ldr r0, _020C2F4C ; =UNK_021D28C4 + ldr r0, _020C2F4C ; =waveArcHeader$8213 cmp r8, #0x0 ldr r0, [r0, #0x38] addeq sp, sp, #0x4 @@ -278,14 +268,14 @@ FUN_020C2E34: ; 0x020C2E34 cmp r7, #0x0 moveq r3, #0x0 beq _020C2EB0 - bl FUN_020C241C + bl NNS_SndArcGetCurrent mov r3, r0 _020C2EB0: - ldr r2, _020C2F50 ; =FUN_020C2D10 + ldr r2, _020C2F50 ; =WaveArcTableDisposeCallback mov r0, r8 add r1, r5, #0x20 str r9, [sp, #0x0] - bl SDATi_AllocAndInitChunk + bl NNS_SndHeapAlloc movs r6, r0 addeq sp, sp, #0x4 moveq r0, #0x0 @@ -294,7 +284,7 @@ _020C2EB0: mov r1, r6 add r2, r4, #0x3c mov r3, #0x0 - bl FUN_020C2104 + bl NNS_SndArcReadFile add r1, r4, #0x3c cmp r0, r1 addne sp, sp, #0x4 @@ -316,37 +306,36 @@ _020C2EB0: beq _020C2F40 mov r0, r9 mov r1, r6 - bl FUN_020C20C0 + bl NNS_SndArcSetFileAddress _020C2F40: mov r0, r6 add sp, sp, #0x4 ldmia sp!, {r4-r9,pc} .balign 4 -_020C2F4C: .word UNK_021D28C4 -_020C2F50: .word FUN_020C2D10 +_020C2F4C: .word waveArcHeader$8213 +_020C2F50: .word WaveArcTableDisposeCallback - ; LoadWaveArc - arm_func_start FUN_020C2F54 -FUN_020C2F54: ; 0x020C2F54 + arm_func_start LoadWaveArc +LoadWaveArc: ; 0x020C2F54 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r7, r0 mov r6, r1 mov r5, r2 - bl FUN_020C20DC + bl NNS_SndArcGetFileAddress movs r4, r0 bne _020C2FBC cmp r5, #0x0 moveq r2, #0x0 beq _020C2F88 - bl FUN_020C241C + bl NNS_SndArcGetCurrent mov r2, r0 _020C2F88: - ldr r1, _020C2FC8 ; =FUN_020C2D30 + ldr r1, _020C2FC8 ; =WaveArcDisposeCallback mov r0, r7 mov r3, r7 str r6, [sp, #0x0] - bl FUN_020C3134 + bl NNSi_SndArcLoadFile mov r4, r0 cmp r5, #0x0 beq _020C2FBC @@ -354,36 +343,35 @@ _020C2F88: beq _020C2FBC mov r0, r7 mov r1, r4 - bl FUN_020C20C0 + bl NNS_SndArcSetFileAddress _020C2FBC: mov r0, r4 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020C2FC8: .word FUN_020C2D30 +_020C2FC8: .word WaveArcDisposeCallback - ; LoadBank - arm_func_start FUN_020C2FCC -FUN_020C2FCC: ; 0x020C2FCC + arm_func_start LoadBank +LoadBank: ; 0x020C2FCC stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r7, r0 mov r6, r1 mov r5, r2 - bl FUN_020C20DC + bl NNS_SndArcGetFileAddress movs r4, r0 bne _020C3034 cmp r5, #0x0 moveq r2, #0x0 beq _020C3000 - bl FUN_020C241C + bl NNS_SndArcGetCurrent mov r2, r0 _020C3000: - ldr r1, _020C3040 ; =FUN_020C2D68 + ldr r1, _020C3040 ; =BankDisposeCallback mov r0, r7 mov r3, r7 str r6, [sp, #0x0] - bl FUN_020C3134 + bl NNSi_SndArcLoadFile mov r4, r0 cmp r5, #0x0 beq _020C3034 @@ -391,36 +379,35 @@ _020C3000: beq _020C3034 mov r0, r7 mov r1, r4 - bl FUN_020C20C0 + bl NNS_SndArcSetFileAddress _020C3034: mov r0, r4 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020C3040: .word FUN_020C2D68 +_020C3040: .word BankDisposeCallback - ; LoadSeqArc - arm_func_start FUN_020C3044 -FUN_020C3044: ; 0x020C3044 + arm_func_start LoadSeqArc +LoadSeqArc: ; 0x020C3044 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r7, r0 mov r6, r1 mov r5, r2 - bl FUN_020C20DC + bl NNS_SndArcGetFileAddress movs r4, r0 bne _020C30AC cmp r5, #0x0 moveq r2, #0x0 beq _020C3078 - bl FUN_020C241C + bl NNS_SndArcGetCurrent mov r2, r0 _020C3078: - ldr r1, _020C30B8 ; =FUN_020C2DA0 + ldr r1, _020C30B8 ; =SeqDisposeCallback mov r0, r7 mov r3, r7 str r6, [sp, #0x0] - bl FUN_020C3134 + bl NNSi_SndArcLoadFile mov r4, r0 cmp r5, #0x0 beq _020C30AC @@ -428,36 +415,35 @@ _020C3078: beq _020C30AC mov r0, r7 mov r1, r4 - bl FUN_020C20C0 + bl NNS_SndArcSetFileAddress _020C30AC: mov r0, r4 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020C30B8: .word FUN_020C2DA0 +_020C30B8: .word SeqDisposeCallback - ; LoadSeq - arm_func_start FUN_020C30BC -FUN_020C30BC: ; 0x020C30BC + arm_func_start LoadSeq +LoadSeq: ; 0x020C30BC stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r7, r0 mov r6, r1 mov r5, r2 - bl FUN_020C20DC + bl NNS_SndArcGetFileAddress movs r4, r0 bne _020C3124 cmp r5, #0x0 moveq r2, #0x0 beq _020C30F0 - bl FUN_020C241C + bl NNS_SndArcGetCurrent mov r2, r0 _020C30F0: - ldr r1, _020C3130 ; =FUN_020C2DA0 + ldr r1, _020C3130 ; =SeqDisposeCallback mov r0, r7 mov r3, r7 str r6, [sp, #0x0] - bl FUN_020C3134 + bl NNSi_SndArcLoadFile mov r4, r0 cmp r5, #0x0 beq _020C3124 @@ -465,24 +451,23 @@ _020C30F0: beq _020C3124 mov r0, r7 mov r1, r4 - bl FUN_020C20C0 + bl NNS_SndArcSetFileAddress _020C3124: mov r0, r4 add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020C3130: .word FUN_020C2DA0 +_020C3130: .word SeqDisposeCallback - ; _end - arm_func_start FUN_020C3134 -FUN_020C3134: ; 0x020C3134 + arm_func_start NNSi_SndArcLoadFile +NNSi_SndArcLoadFile: ; 0x020C3134 stmdb sp!, {r4-r8,lr} sub sp, sp, #0x8 mov r8, r0 mov r7, r1 mov r6, r2 mov r4, r3 - bl FUN_020C217C + bl NNS_SndArcGetFileSize movs r5, r0 addeq sp, sp, #0x8 moveq r0, #0x0 @@ -496,7 +481,7 @@ FUN_020C3134: ; 0x020C3134 mov r3, r6 add r1, r5, #0x20 str r4, [sp, #0x0] - bl SDATi_AllocAndInitChunk + bl NNS_SndHeapAlloc movs r4, r0 addeq sp, sp, #0x8 moveq r0, #0x0 @@ -505,7 +490,7 @@ FUN_020C3134: ; 0x020C3134 mov r1, r4 mov r2, r5 mov r3, #0x0 - bl FUN_020C2104 + bl NNS_SndArcReadFile cmp r5, r0 addne sp, sp, #0x8 movne r0, #0x0 @@ -517,14 +502,13 @@ FUN_020C3134: ; 0x020C3134 add sp, sp, #0x8 ldmia sp!, {r4-r8,pc} - ; _end - arm_func_start FUN_020C31D4 -FUN_020C31D4: ; 0x020C31D4 + arm_func_start NNSi_SndArcLoadWaveArc +NNSi_SndArcLoadWaveArc: ; 0x020C31D4 stmdb sp!, {r4-r6,lr} mov r6, r1 mov r5, r2 mov r4, r3 - bl FUN_020C226C + bl NNS_SndArcGetWaveArcInfo cmp r0, #0x0 moveq r0, #0x5 ldmeqia sp!, {r4-r6,pc} @@ -538,7 +522,7 @@ FUN_020C31D4: ; 0x020C31D4 mov r0, r0, lsl #0x8 mov r2, r4 mov r0, r0, lsr #0x8 - bl FUN_020C2E34 + bl LoadWaveArcTable b _020C323C _020C3224: ldr r0, [r0, #0x0] @@ -546,7 +530,7 @@ _020C3224: mov r0, r0, lsl #0x8 mov r2, r4 mov r0, r0, lsr #0x8 - bl FUN_020C2F54 + bl LoadWaveArc _020C323C: cmp r0, #0x0 bne _020C325C @@ -556,7 +540,7 @@ _020C324C: ldr r0, [r0, #0x0] mov r0, r0, lsl #0x8 mov r0, r0, lsr #0x8 - bl FUN_020C20DC + bl NNS_SndArcGetFileAddress _020C325C: ldr r1, [sp, #0x10] cmp r1, #0x0 @@ -564,15 +548,14 @@ _020C325C: mov r0, #0x0 ldmia sp!, {r4-r6,pc} - ; NNSi_SndArcLoadBank - arm_func_start FUN_020C3270 -FUN_020C3270: ; 0x020C3270 + arm_func_start NNSi_SndArcLoadBank +NNSi_SndArcLoadBank: ; 0x020C3270 stmdb sp!, {r4-r11,lr} sub sp, sp, #0xc mov r10, r1 mov r9, r2 mov r11, r3 - bl FUN_020C22D0 + bl NNS_SndArcGetBankInfo movs r8, r0 addeq sp, sp, #0xc moveq r0, #0x4 @@ -582,7 +565,7 @@ FUN_020C3270: ; 0x020C3270 ldr r0, [r8, #0x0] mov r1, r9 mov r2, r11 - bl FUN_020C2FCC + bl LoadBank movs r7, r0 bne _020C32D0 add sp, sp, #0xc @@ -590,7 +573,7 @@ FUN_020C3270: ; 0x020C3270 ldmia sp!, {r4-r11,pc} _020C32C4: ldr r0, [r8, #0x0] - bl FUN_020C20DC + bl NNS_SndArcGetFileAddress mov r7, r0 _020C32D0: and r5, r10, #0x4 @@ -601,7 +584,7 @@ _020C32D8: ldr r1, _020C33B4 ; =0x0000FFFF cmp r0, r1 beq _020C3390 - bl FUN_020C226C + bl NNS_SndArcGetWaveArcInfo movs r4, r0 addeq sp, sp, #0xc moveq r0, #0x5 @@ -613,7 +596,7 @@ _020C32D8: mov r1, r10 mov r2, r9 mov r3, r11 - bl FUN_020C31D4 + bl NNSi_SndArcLoadWaveArc cmp r0, #0x0 addne sp, sp, #0xc ldmneia sp!, {r4-r11,pc} @@ -629,7 +612,7 @@ _020C32D8: mov r1, r7 mov r2, r6 mov r3, r3, lsr #0x8 - bl FUN_020C2B1C + bl LoadSingleWaves cmp r0, #0x0 addeq sp, sp, #0xc moveq r0, #0x9 @@ -656,14 +639,13 @@ _020C3390: .balign 4 _020C33B4: .word 0x0000FFFF - ; _end - arm_func_start FUN_020C33B8 -FUN_020C33B8: ; 0x020C33B8 + arm_func_start NNSi_SndArcLoadSeqArc +NNSi_SndArcLoadSeqArc: ; 0x020C33B8 stmdb sp!, {r4-r6,lr} mov r6, r1 mov r5, r2 mov r4, r3 - bl FUN_020C2334 + bl NNS_SndArcGetSeqArcInfo cmp r0, #0x0 moveq r0, #0x3 ldmeqia sp!, {r4-r6,pc} @@ -672,14 +654,14 @@ FUN_020C33B8: ; 0x020C33B8 ldr r0, [r0, #0x0] mov r1, r5 mov r2, r4 - bl FUN_020C3044 + bl LoadSeqArc cmp r0, #0x0 bne _020C3408 mov r0, #0x7 ldmia sp!, {r4-r6,pc} _020C3400: ldr r0, [r0, #0x0] - bl FUN_020C20DC + bl NNS_SndArcGetFileAddress _020C3408: ldr r1, [sp, #0x10] cmp r1, #0x0 @@ -687,15 +669,14 @@ _020C3408: mov r0, #0x0 ldmia sp!, {r4-r6,pc} - ; _end - arm_func_start FUN_020C341C -FUN_020C341C: ; 0x020C341C + arm_func_start NNSi_SndArcLoadSeq +NNSi_SndArcLoadSeq: ; 0x020C341C stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 mov r7, r1 mov r6, r2 mov r5, r3 - bl FUN_020C2398 + bl NNS_SndArcGetSeqInfo movs r4, r0 addeq sp, sp, #0x4 moveq r0, #0x2 @@ -706,7 +687,7 @@ FUN_020C341C: ; 0x020C341C mov r1, r7 mov r2, r6 mov r3, r5 - bl FUN_020C3270 + bl NNSi_SndArcLoadBank cmp r0, #0x0 addne sp, sp, #0x4 ldmneia sp!, {r4-r7,pc} @@ -715,7 +696,7 @@ FUN_020C341C: ; 0x020C341C ldr r0, [r4, #0x0] mov r1, r6 mov r2, r5 - bl FUN_020C30BC + bl LoadSeq cmp r0, #0x0 bne _020C34A0 add sp, sp, #0x4 @@ -723,7 +704,7 @@ FUN_020C341C: ; 0x020C341C ldmia sp!, {r4-r7,pc} _020C3498: ldr r0, [r4, #0x0] - bl FUN_020C20DC + bl NNS_SndArcGetFileAddress _020C34A0: ldr r1, [sp, #0x18] cmp r1, #0x0 @@ -732,13 +713,12 @@ _020C34A0: add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} - ; _end - arm_func_start FUN_020C34B8 -FUN_020C34B8: ; 0x020C34B8 + arm_func_start NNSi_SndArcLoadGroup +NNSi_SndArcLoadGroup: ; 0x020C34B8 stmdb sp!, {r4-r11,lr} sub sp, sp, #0xc mov r9, r1 - bl FUN_020C21A4 + bl NNS_SndArcGetGroupInfo movs r8, r0 addeq sp, sp, #0xc moveq r0, #0x1 @@ -769,7 +749,7 @@ _020C3520: ldr r0, [r6, #0x4] mov r2, r9 mov r3, r4 - bl FUN_020C341C + bl NNSi_SndArcLoadSeq cmp r0, #0x0 beq _020C35C0 add sp, sp, #0xc @@ -780,7 +760,7 @@ _020C3548: ldr r0, [r6, #0x4] mov r2, r9 mov r3, r4 - bl FUN_020C33B8 + bl NNSi_SndArcLoadSeqArc cmp r0, #0x0 beq _020C35C0 add sp, sp, #0xc @@ -791,7 +771,7 @@ _020C3570: ldr r0, [r6, #0x4] mov r2, r9 mov r3, r4 - bl FUN_020C3270 + bl NNSi_SndArcLoadBank cmp r0, #0x0 beq _020C35C0 add sp, sp, #0xc @@ -803,7 +783,7 @@ _020C3598: ldrb r1, [r6, #0x1] ldr r0, [r6, #0x4] mov r3, r4 - bl FUN_020C31D4 + bl NNSi_SndArcLoadWaveArc cmp r0, #0x0 addne sp, sp, #0xc ldmneia sp!, {r4-r11,pc} @@ -818,24 +798,22 @@ _020C35D4: add sp, sp, #0xc ldmia sp!, {r4-r11,pc} - ; _end - arm_func_start FUN_020C35E0 -FUN_020C35E0: ; 0x020C35E0 + arm_func_start NNS_SndArcLoadSeqEx +NNS_SndArcLoadSeqEx: ; 0x020C35E0 stmdb sp!, {lr} sub sp, sp, #0x4 mov r12, #0x0 mov r3, #0x1 str r12, [sp, #0x0] - bl FUN_020C341C + bl NNSi_SndArcLoadSeq cmp r0, #0x0 moveq r0, #0x1 movne r0, #0x0 add sp, sp, #0x4 ldmia sp!, {pc} - ; _end - arm_func_start FUN_020C360C -FUN_020C360C: ; 0x020C360C + arm_func_start NNS_SndArcLoadWaveArc +NNS_SndArcLoadWaveArc: ; 0x020C360C stmdb sp!, {lr} sub sp, sp, #0x4 mov r2, r1 @@ -843,16 +821,15 @@ FUN_020C360C: ; 0x020C360C mov r1, #0xff mov r3, #0x1 str r12, [sp, #0x0] - bl FUN_020C31D4 + bl NNSi_SndArcLoadWaveArc cmp r0, #0x0 moveq r0, #0x1 movne r0, #0x0 add sp, sp, #0x4 ldmia sp!, {pc} - ; _end - arm_func_start FUN_020C3640 -FUN_020C3640: ; 0x020C3640 + arm_func_start NNS_SndArcLoadBank +NNS_SndArcLoadBank: ; 0x020C3640 stmdb sp!, {lr} sub sp, sp, #0x4 mov r2, r1 @@ -860,16 +837,15 @@ FUN_020C3640: ; 0x020C3640 mov r1, #0xff mov r3, #0x1 str r12, [sp, #0x0] - bl FUN_020C3270 + bl NNSi_SndArcLoadBank cmp r0, #0x0 moveq r0, #0x1 movne r0, #0x0 add sp, sp, #0x4 ldmia sp!, {pc} - ; _end - arm_func_start FUN_020C3674 -FUN_020C3674: ; 0x020C3674 + arm_func_start NNS_SndArcLoadSeq +NNS_SndArcLoadSeq: ; 0x020C3674 stmdb sp!, {lr} sub sp, sp, #0x4 mov r2, r1 @@ -877,22 +853,20 @@ FUN_020C3674: ; 0x020C3674 mov r1, #0xff mov r3, #0x1 str r12, [sp, #0x0] - bl FUN_020C341C + bl NNSi_SndArcLoadSeq cmp r0, #0x0 moveq r0, #0x1 movne r0, #0x0 add sp, sp, #0x4 ldmia sp!, {pc} - ; _end - arm_func_start FUN_020C36A8 -FUN_020C36A8: ; 0x020C36A8 + arm_func_start NNS_SndArcLoadGroup +NNS_SndArcLoadGroup: ; 0x020C36A8 stmdb sp!, {lr} sub sp, sp, #0x4 - bl FUN_020C34B8 + bl NNSi_SndArcLoadGroup cmp r0, #0x0 moveq r0, #0x1 movne r0, #0x0 add sp, sp, #0x4 ldmia sp!, {pc} - diff --git a/arm9/asm/NNS_SND_sndarc_player.s b/arm9/asm/NNS_SND_sndarc_player.s index 8657cdfc..c043967b 100644 --- a/arm9/asm/NNS_SND_sndarc_player.s +++ b/arm9/asm/NNS_SND_sndarc_player.s @@ -3,9 +3,8 @@ .section .text - ; _end - arm_func_start FUN_020C36C8 -FUN_020C36C8: ; 0x020C36C8 + arm_func_start StartSeqArc +StartSeqArc: ; 0x020C36C8 stmdb sp!, {r4-r8,lr} sub sp, sp, #0x8 mov r7, r2 @@ -13,25 +12,25 @@ FUN_020C36C8: ; 0x020C36C8 ldr r6, [sp, #0x20] mov r4, r0 mov r8, r1 - bl FUN_020C0AF4 + bl NNSi_SndPlayerAllocSeqPlayer movs r5, r0 addeq sp, sp, #0x8 moveq r0, #0x0 ldmeqia sp!, {r4-r8,pc} mov r0, r8 mov r1, r5 - bl FUN_020C09B0 + bl NNSi_SndPlayerAllocHeap add r12, sp, #0x4 mov r2, r0 mov r0, r7 mov r1, #0x6 mov r3, #0x0 str r12, [sp, #0x0] - bl FUN_020C3270 + bl NNSi_SndArcLoadBank cmp r0, #0x0 beq _020C373C mov r0, r5 - bl thunk_FUN_020c077c + bl NNSi_SndPlayerFreeSeqPlayer add sp, sp, #0x8 mov r0, #0x0 ldmia sp!, {r4-r8,pc} @@ -42,24 +41,23 @@ _020C373C: ldr r3, [sp, #0x4] mov r0, r5 add r1, r12, r1 - bl FUN_020C0A90 + bl NNSi_SndPlayerStartSeq ldrb r1, [r6, #0x6] mov r0, r4 - bl FUN_020C0F30 + bl NNS_SndPlayerSetInitialVolume ldrb r1, [r6, #0x7] mov r0, r4 - bl FUN_020C0ECC + bl NNS_SndPlayerSetChannelPriority ldr r1, [sp, #0x28] ldr r2, [sp, #0x2c] mov r0, r4 - bl FUN_020C0E38 + bl NNS_SndPlayerSetSeqArcNo mov r0, #0x1 add sp, sp, #0x8 ldmia sp!, {r4-r8,pc} - ; _end - arm_func_start FUN_020C378C -FUN_020C378C: ; 0x020C378C + arm_func_start StartSeq +StartSeq: ; 0x020C378C stmdb sp!, {r4-r8,lr} sub sp, sp, #0x10 mov r8, r2 @@ -67,14 +65,14 @@ FUN_020C378C: ; 0x020C378C ldr r5, [sp, #0x28] mov r6, r0 mov r7, r1 - bl FUN_020C0AF4 + bl NNSi_SndPlayerAllocSeqPlayer movs r4, r0 addeq sp, sp, #0x10 moveq r0, #0x0 ldmeqia sp!, {r4-r8,pc} mov r0, r7 mov r1, r4 - bl FUN_020C09B0 + bl NNSi_SndPlayerAllocHeap mov r7, r0 add r12, sp, #0x8 mov r0, r8 @@ -82,11 +80,11 @@ FUN_020C378C: ; 0x020C378C mov r1, #0x6 mov r3, #0x0 str r12, [sp, #0x0] - bl FUN_020C3270 + bl NNSi_SndArcLoadBank cmp r0, #0x0 beq _020C3804 mov r0, r4 - bl thunk_FUN_020c077c + bl NNSi_SndPlayerFreeSeqPlayer add sp, sp, #0x10 mov r0, #0x0 ldmia sp!, {r4-r8,pc} @@ -97,11 +95,11 @@ _020C3804: mov r1, #0x1 mov r3, #0x0 str r12, [sp, #0x0] - bl FUN_020C341C + bl NNSi_SndArcLoadSeq cmp r0, #0x0 beq _020C383C mov r0, r4 - bl thunk_FUN_020c077c + bl NNSi_SndPlayerFreeSeqPlayer add sp, sp, #0x10 mov r0, #0x0 ldmia sp!, {r4-r8,pc} @@ -112,42 +110,41 @@ _020C383C: mov r0, r4 add r1, r2, r1 mov r2, #0x0 - bl FUN_020C0A90 + bl NNSi_SndPlayerStartSeq ldrb r1, [r5, #0x6] mov r0, r6 - bl FUN_020C0F30 + bl NNS_SndPlayerSetInitialVolume ldrb r1, [r5, #0x7] mov r0, r6 - bl FUN_020C0ECC + bl NNS_SndPlayerSetChannelPriority ldr r1, [sp, #0x2c] mov r0, r6 - bl FUN_020C0E60 + bl NNS_SndPlayerSetSeqNo mov r0, #0x1 add sp, sp, #0x10 ldmia sp!, {r4-r8,pc} - ; _end - arm_func_start FUN_020C3888 -FUN_020C3888: ; 0x020C3888 + arm_func_start NNS_SndArcPlayerStartSeqArc +NNS_SndArcPlayerStartSeqArc: ; 0x020C3888 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x14 mov r6, r1 mov r7, r0 mov r0, r6 mov r5, r2 - bl FUN_020C2334 + bl NNS_SndArcGetSeqArcInfo cmp r0, #0x0 addeq sp, sp, #0x14 moveq r0, #0x0 ldmeqia sp!, {r4-r7,pc} ldr r0, [r0, #0x0] - bl FUN_020C20DC + bl NNS_SndArcGetFileAddress movs r4, r0 addeq sp, sp, #0x14 moveq r0, #0x0 ldmeqia sp!, {r4-r7,pc} mov r1, r5 - bl FUN_020C3D9C + bl NNSi_SndSeqArcGetSeqInfo cmp r0, #0x0 addeq sp, sp, #0x14 moveq r0, #0x0 @@ -160,13 +157,12 @@ FUN_020C3888: ; 0x020C3888 ldrh r2, [r0, #0x4] ldrb r3, [r0, #0x8] mov r0, r7 - bl FUN_020C36C8 + bl StartSeqArc add sp, sp, #0x14 ldmia sp!, {r4-r7,pc} - ; _end - arm_func_start FUN_020C3910 -FUN_020C3910: ; 0x020C3910 + arm_func_start NNS_SndArcPlayerStartSeqEx +NNS_SndArcPlayerStartSeqEx: ; 0x020C3910 stmdb sp!, {r4-r7,lr} sub sp, sp, #0xc mov r7, r0 @@ -174,7 +170,7 @@ FUN_020C3910: ; 0x020C3910 mov r6, r1 mov r5, r2 mov r4, r3 - bl FUN_020C2398 + bl NNS_SndArcGetSeqInfo cmp r0, #0x0 addeq sp, sp, #0xc moveq r0, #0x0 @@ -192,19 +188,18 @@ FUN_020C3910: ; 0x020C3910 mov r1, r6 mov r3, r4 str r12, [sp, #0x4] - bl FUN_020C378C + bl StartSeq add sp, sp, #0xc ldmia sp!, {r4-r7,pc} - ; _end - arm_func_start FUN_020C3980 -FUN_020C3980: ; 0x020C3980 + arm_func_start NNS_SndArcPlayerStartSeq +NNS_SndArcPlayerStartSeq: ; 0x020C3980 stmdb sp!, {r4-r5,lr} sub sp, sp, #0xc mov r4, r1 mov r5, r0 mov r0, r4 - bl FUN_020C2398 + bl NNS_SndArcGetSeqInfo cmp r0, #0x0 addeq sp, sp, #0xc moveq r0, #0x0 @@ -215,29 +210,28 @@ FUN_020C3980: ; 0x020C3980 ldrh r2, [r0, #0x4] ldrb r3, [r0, #0x8] mov r0, r5 - bl FUN_020C378C + bl StartSeq add sp, sp, #0xc ldmia sp!, {r4-r5,pc} - ; _end - arm_func_start FUN_020C39CC -FUN_020C39CC: ; 0x020C39CC + arm_func_start NNS_SndArcPlayerSetup +NNS_SndArcPlayerSetup: ; 0x020C39CC stmdb sp!, {r4-r8,lr} mov r6, r0 - bl FUN_020C241C + bl NNS_SndArcGetCurrent mov r5, #0x0 mov r7, r5 _020C39E0: mov r0, r5 - bl FUN_020C2208 + bl NNS_SndArcGetPlayerInfo movs r4, r0 beq _020C3A58 ldrb r1, [r4, #0x0] mov r0, r5 - bl FUN_020C1160 + bl NNS_SndPlayerSetPlayableSeqCount ldrh r1, [r4, #0x2] mov r0, r5 - bl FUN_020C1148 + bl NNS_SndPlayerSetAllocatableChannel ldr r0, [r4, #0x4] cmp r0, #0x0 beq _020C3A58 @@ -251,7 +245,7 @@ _020C3A2C: ldr r2, [r4, #0x4] mov r0, r5 mov r1, r6 - bl FUN_020C10B4 + bl NNS_SndPlayerCreateHeap cmp r0, #0x0 moveq r0, #0x0 ldmeqia sp!, {r4-r8,pc} @@ -265,4 +259,3 @@ _020C3A58: blt _020C39E0 mov r0, #0x1 ldmia sp!, {r4-r8,pc} - diff --git a/arm9/asm/NNS_SND_sndarc_stream.s b/arm9/asm/NNS_SND_sndarc_stream.s index 8b6ad0b9..1962bdcc 100644 --- a/arm9/asm/NNS_SND_sndarc_stream.s +++ b/arm9/asm/NNS_SND_sndarc_stream.s @@ -3,54 +3,43 @@ .section .bss - ; sPrepareThread - .global UNK_021D2900 -UNK_021D2900: ; 0x021D2900 + .global sPrepareThread +sPrepareThread: ; 0x021D2900 .space 0x4 - ; sFreeCommandList - .global UNK_021D2904 -UNK_021D2904: ; 0x021D2904 - .space 0x4d4 + .global sFreeCommandList +sFreeCommandList: ; 0x021D2904 + .space 0xC + ; sStrmThread + .global sStrmThread +sStrmThread: ; 0x021D2910 + .space 0x4EC - ; sFreeCommandList + 0x4D4 - .global UNK_021D2DD8 -UNK_021D2DD8: ; 0x021D2DD8 - .space 0x18 - - ; sFreeCommandList + 0x4EC - .global UNK_021D2DF0 -UNK_021D2DF0: ; 0x021D2DF0 - .space 0xc - - ; sStrmPlayer - .global UNK_021D2DFC -UNK_021D2DFC: ; 0x021D2DFC + .global sStrmPlayer +sStrmPlayer: ; 0x021D2DFC .space 0x5c0 .section .text - ; FreeCommandBuffer - arm_func_start FUN_020C3A6C -FUN_020C3A6C: ; 0x020C3A6C + arm_func_start FreeCommandBuffer +FreeCommandBuffer: ; 0x020C3A6C stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 bl OS_DisableInterrupts mov r4, r0 - ldr r0, _020C3A9C ; =UNK_021D2904 + ldr r0, _020C3A9C ; =sFreeCommandList mov r1, r5 - bl FUN_020ADBE8 + bl NNS_FndAppendListObject mov r0, r4 bl OS_RestoreInterrupts add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} .balign 4 -_020C3A9C: .word UNK_021D2904 +_020C3A9C: .word sFreeCommandList - ; _end - arm_func_start FUN_020C3AA0 -FUN_020C3AA0: ; 0x020C3AA0 + arm_func_start RemoveCommandByPlayer +RemoveCommandByPlayer: ; 0x020C3AA0 stmdb sp!, {r4-r8,lr} mov r8, r0 mov r7, r1 @@ -58,22 +47,22 @@ FUN_020C3AA0: ; 0x020C3AA0 mov r6, r0 mov r0, r8 mov r1, #0x0 - bl FUN_020ADA98 + bl NNS_FndGetNextListObject movs r5, r0 beq _020C3B04 _020C3AC8: mov r0, r8 mov r1, r5 - bl FUN_020ADA98 + bl NNS_FndGetNextListObject ldr r1, [r5, #0x8] mov r4, r0 cmp r1, r7 bne _020C3AF8 mov r0, r8 mov r1, r5 - bl FUN_020ADAB0 + bl NNS_FndRemoveListObject mov r0, r5 - bl FUN_020C3A6C + bl FreeCommandBuffer _020C3AF8: mov r5, r4 cmp r4, #0x0 @@ -83,9 +72,8 @@ _020C3B04: bl OS_RestoreInterrupts ldmia sp!, {r4-r8,pc} - ; _end - arm_func_start FUN_020C3B10 -FUN_020C3B10: ; 0x020C3B10 + arm_func_start FreeChannel +FreeChannel: ; 0x020C3B10 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r1, [r0, #0x120] @@ -98,49 +86,47 @@ FUN_020C3B10: ; 0x020C3B10 cmp r1, #0x0 addne sp, sp, #0x4 ldmneia sp!, {pc} - bl FUN_020C1674 + bl NNS_SndStrmFreeChannel add sp, sp, #0x4 ldmia sp!, {pc} - ; ShutdownPlayer - arm_func_start FUN_020C3B4C -FUN_020C3B4C: ; 0x020C3B4C + local_arm_func_start ShutdownPlayer +ShutdownPlayer: ; 0x020C3B4C stmdb sp!, {r4,lr} mov r4, r0 ldr r1, [r4, #0x110] mov r1, r1, lsl #0x1f movs r1, r1, asr #0x1f ldmeqia sp!, {r4,pc} - bl FUN_020C3B10 + bl FreeChannel ldr r1, [r4, #0x164] mov r0, r4 blx r1 - ldr r0, _020C3BA8 ; =UNK_021D2DF0 + ldr r0, _020C3BA8 ; =sStrmThread + 0x4E0 mov r1, r4 - bl FUN_020C3AA0 - ldr r0, _020C3BAC ; =UNK_021D2900 + bl RemoveCommandByPlayer + ldr r0, _020C3BAC ; =sPrepareThread ldr r0, [r0, #0x0] cmp r0, #0x0 beq _020C3B9C mov r1, r4 add r0, r0, #0x4e0 - bl FUN_020C3AA0 + bl RemoveCommandByPlayer _020C3B9C: mov r0, r4 - bl FUN_020C3C4C + bl FreePlayer ldmia sp!, {r4,pc} .balign 4 -_020C3BA8: .word UNK_021D2DF0 -_020C3BAC: .word UNK_021D2900 +_020C3BA8: .word sStrmThread + 0x4E0 +_020C3BAC: .word sPrepareThread - ; ForceStopStrm - arm_func_start FUN_020C3BB0 -FUN_020C3BB0: ; 0x020C3BB0 + local_arm_func_start ForceStopStrm +ForceStopStrm: ; 0x020C3BB0 stmdb sp!, {r4,lr} mov r4, r0 - ldr r0, _020C3C40 ; =UNK_021D2DD8 + ldr r0, _020C3C40 ; =sStrmThread + 0x4C8 bl OS_LockMutex - ldr r0, _020C3C44 ; =UNK_021D2900 + ldr r0, _020C3C44 ; =sPrepareThread ldr r1, [r0, #0x0] cmp r1, #0x0 beq _020C3BDC @@ -153,7 +139,7 @@ _020C3BDC: movs r0, r0, asr #0x1f beq _020C3BF4 mov r0, r4 - bl FUN_020C1430 + bl NNS_SndStrmStop _020C3BF4: ldr r0, [r4, #0x110] mov r0, r0, lsl #0x1f @@ -164,10 +150,10 @@ _020C3BF4: blx r1 _020C3C10: mov r0, r4 - bl FUN_020C3B4C - ldr r0, _020C3C40 ; =UNK_021D2DD8 + bl ShutdownPlayer + ldr r0, _020C3C40 ; =sStrmThread + 0x4C8 bl OS_UnlockMutex - ldr r0, _020C3C44 ; =UNK_021D2900 + ldr r0, _020C3C44 ; =sPrepareThread ldr r1, [r0, #0x0] cmp r1, #0x0 ldmeqia sp!, {r4,pc} @@ -176,13 +162,12 @@ _020C3C10: bl OS_UnlockMutex ldmia sp!, {r4,pc} .balign 4 -_020C3C40: .word UNK_021D2DD8 -_020C3C44: .word UNK_021D2900 +_020C3C40: .word sStrmThread + 0x4C8 +_020C3C44: .word sPrepareThread _020C3C48: .word 0x000004C8 - ; _end - arm_func_start FUN_020C3C4C -FUN_020C3C4C: ; 0x020C3C4C + arm_func_start FreePlayer +FreePlayer: ; 0x020C3C4C ldr r2, [r0, #0x14c] cmp r2, #0x0 movne r1, #0x0 @@ -199,12 +184,11 @@ FUN_020C3C4C: ; 0x020C3C4C str r1, [r0, #0x110] bx lr - ; NNSi_SndArcStrmMain - arm_func_start FUN_020C3C88 -FUN_020C3C88: ; 0x020C3C88 + arm_func_start NNSi_SndArcStrmMain +NNSi_SndArcStrmMain: ; 0x020C3C88 stmdb sp!, {r4-r7,lr} sub sp, sp, #0x4 - ldr r5, _020C3D94 ; =UNK_021D2DFC + ldr r5, _020C3D94 ; =sStrmPlayer mov r7, #0x0 ldr r4, _020C3D98 ; =SNDi_DecibelTable _020C3C9C: @@ -216,7 +200,7 @@ _020C3C9C: cmp r0, #0x0 bne _020C3CC4 mov r0, r5 - bl FUN_020C3BB0 + bl ForceStopStrm b _020C3D7C _020C3CC4: mov r0, r1, lsl #0x1d @@ -226,7 +210,7 @@ _020C3CC4: cmp r0, #0x0 beq _020C3CFC mov r0, r5 - bl FUN_020C1458 + bl NNS_SndStrmStart ldr r0, [r5, #0x110] orr r0, r0, #0x2 str r0, [r5, #0x110] @@ -239,12 +223,12 @@ _020C3CFC: movs r0, r0, asr #0x1f beq _020C3D7C add r0, r5, #0xe8 - bl FUN_020C3DF4 + bl NNSi_SndFaderUpdate ldr r1, [r5, #0x154] add r0, r5, #0xe8 mov r1, r1, lsl #0x1 ldrsh r6, [r4, r1] - bl FUN_020C3E0C + bl NNSi_SndFaderGet mov r0, r0, asr #0x8 mov r0, r0, lsl #0x1 ldrsh r1, [r4, r0] @@ -254,7 +238,7 @@ _020C3CFC: beq _020C3D54 mov r0, r5 mov r1, r6 - bl FUN_020C13C4 + bl NNS_SndStrmSetVolume str r6, [r5, #0x158] _020C3D54: ldr r0, [r5, #0x110] @@ -262,11 +246,11 @@ _020C3D54: movs r0, r0, asr #0x1f beq _020C3D7C add r0, r5, #0xe8 - bl FUN_020C3DDC + bl NNSi_SndFaderIsFinished cmp r0, #0x0 beq _020C3D7C mov r0, r5 - bl FUN_020C3BB0 + bl ForceStopStrm _020C3D7C: add r7, r7, #0x1 cmp r7, #0x4 @@ -275,6 +259,5 @@ _020C3D7C: add sp, sp, #0x4 ldmia sp!, {r4-r7,pc} .balign 4 -_020C3D94: .word UNK_021D2DFC +_020C3D94: .word sStrmPlayer _020C3D98: .word SNDi_DecibelTable - diff --git a/arm9/asm/NNS_SND_stream.s b/arm9/asm/NNS_SND_stream.s index 752fcab0..53432742 100644 --- a/arm9/asm/NNS_SND_stream.s +++ b/arm9/asm/NNS_SND_stream.s @@ -3,31 +3,26 @@ .section .bss - ; bInitialized$7761 - .global UNK_021D26D4 -UNK_021D26D4: ; 0x021D26D4 + .global bInitialized$7761 +bInitialized$7761: ; 0x021D26D4 .space 0x4 - ; sStrmList - .global UNK_021D26D8 -UNK_021D26D8: ; 0x021D26D8 + .global sStrmList +sStrmList: ; 0x021D26D8 .space 0xc - ; buffer$7877 - .global UNK_021D26E4 -UNK_021D26E4: ; 0x021D26E4 + .global buffer$7877 +buffer$7877: ; 0x021D26E4 .space 0x40 - ; sStrmChannel - .global UNK_021D2724 -UNK_021D2724: ; 0x021D2724 + .global sStrmChannel +sStrmChannel: ; 0x021D2724 .space 0x80 .section .text - ; _end - arm_func_start FUN_020C1198 -FUN_020C1198: ; 0x020C1198 + local_arm_func_start EndSleep +EndSleep: ; 0x020C1198 stmdb sp!, {r4-r6,lr} mov r4, r0 ldr r0, [r4, #0x24] @@ -43,7 +38,7 @@ _020C11C0: mov r6, r0 mov r0, r4 mov r1, r5 - bl FUN_020C1254 + bl StrmCallback mov r0, r6 bl OS_RestoreInterrupts ldr r0, [r4, #0x38] @@ -59,9 +54,8 @@ _020C11E8: bl SND_StartTimer ldmia sp!, {r4-r6,pc} - ; _end - arm_func_start FUN_020C1208 -FUN_020C1208: ; 0x020C1208 + local_arm_func_start BeginSleep +BeginSleep: ; 0x020C1208 stmdb sp!, {r4,lr} ldr r1, [r0, #0x24] mov r1, r1, lsl #0x1e @@ -82,9 +76,8 @@ FUN_020C1208: ; 0x020C1208 bl SND_WaitForCommandProc ldmia sp!, {r4,pc} - ; StrmCallback - arm_func_start FUN_020C1254 -FUN_020C1254: ; 0x020C1254 + arm_func_start StrmCallback +StrmCallback: ; 0x020C1254 stmdb sp!, {r4-r5,lr} sub sp, sp, #0xc mov r5, r0 @@ -99,8 +92,8 @@ FUN_020C1254: ; 0x020C1254 cmp r1, #0x0 mov r12, #0x0 ble _020C12B8 - ldr r2, _020C1300 ; =UNK_021D2724 - ldr r0, _020C1304 ; =UNK_021D26E4 + ldr r2, _020C1300 ; =sStrmChannel + ldr r0, _020C1304 ; =buffer$7877 _020C1294: add r1, r5, r12 ldrb r1, [r1, #0x4c] @@ -113,7 +106,7 @@ _020C1294: blt _020C1294 _020C12B8: ldr r0, [r5, #0x20] - ldr r2, _020C1304 ; =UNK_021D26E4 + ldr r2, _020C1304 ; =buffer$7877 str r0, [sp, #0x0] ldr r12, [r5, #0x34] mov r0, r4 @@ -131,38 +124,35 @@ _020C12B8: add sp, sp, #0xc ldmia sp!, {r4-r5,pc} .balign 4 -_020C1300: .word UNK_021D2724 -_020C1304: .word UNK_021D26E4 +_020C1300: .word sStrmChannel +_020C1304: .word buffer$7877 - ; AlarmCallback - arm_func_start FUN_020C1308 -FUN_020C1308: ; 0x020C1308 - ldr ip, _020C1314 ; =FUN_020C1254 + local_arm_func_start AlarmCallback +AlarmCallback: ; 0x020C1308 + ldr ip, _020C1314 ; =StrmCallback mov r1, #0x1 bx r12 .balign 4 -_020C1314: .word FUN_020C1254 +_020C1314: .word StrmCallback - ; ShutdownStrm - arm_func_start FUN_020C1318 -FUN_020C1318: ; 0x020C1318 + arm_func_start ShutdownStrm +ShutdownStrm: ; 0x020C1318 stmdb sp!, {r4,lr} mov r4, r0 ldr r0, [r4, #0x40] - bl FUN_020C029C - ldr r0, _020C1344 ; =UNK_021D26D8 + bl NNS_SndFreeAlarm + ldr r0, _020C1344 ; =sStrmList mov r1, r4 - bl FUN_020ADAB0 + bl NNS_FndRemoveListObject ldr r0, [r4, #0x24] bic r0, r0, #0x1 str r0, [r4, #0x24] ldmia sp!, {r4,pc} .balign 4 -_020C1344: .word UNK_021D26D8 +_020C1344: .word sStrmList - ; _end - arm_func_start FUN_020C1348 -FUN_020C1348: ; 0x020C1348 + local_arm_func_start ForceStopStrm +ForceStopStrm: ; 0x020C1348 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r4, r0 @@ -192,13 +182,12 @@ FUN_020C1348: ; 0x020C1348 bl SND_WaitForCommandProc _020C13B4: mov r0, r4 - bl FUN_020C1318 + bl ShutdownStrm add sp, sp, #0x4 ldmia sp!, {r4-r5,pc} - ; NNS_SndStrmSetVolume - arm_func_start FUN_020C13C4 -FUN_020C13C4: ; 0x020C13C4 + arm_func_start NNS_SndStrmSetVolume +NNS_SndStrmSetVolume: ; 0x020C13C4 stmdb sp!, {r4-r8,lr} mov r7, r0 str r1, [r7, #0x3c] @@ -206,7 +195,7 @@ FUN_020C13C4: ; 0x020C13C4 mov r5, #0x0 cmp r0, #0x0 ldmleia sp!, {r4-r8,pc} - ldr r4, _020C142C ; =UNK_021D2724 + ldr r4, _020C142C ; =sStrmChannel mov r8, #0x1 _020C13E8: add r0, r7, r5 @@ -227,11 +216,10 @@ _020C13E8: blt _020C13E8 ldmia sp!, {r4-r8,pc} .balign 4 -_020C142C: .word UNK_021D2724 +_020C142C: .word sStrmChannel - ; _end - arm_func_start FUN_020C1430 -FUN_020C1430: ; 0x020C1430 + arm_func_start NNS_SndStrmStop +NNS_SndStrmStop: ; 0x020C1430 stmdb sp!, {lr} sub sp, sp, #0x4 ldr r1, [r0, #0x24] @@ -239,13 +227,12 @@ FUN_020C1430: ; 0x020C1430 movs r1, r1, asr #0x1f addeq sp, sp, #0x4 ldmeqia sp!, {pc} - bl FUN_020C1348 + bl ForceStopStrm add sp, sp, #0x4 ldmia sp!, {pc} - ; _end - arm_func_start FUN_020C1458 -FUN_020C1458: ; 0x020C1458 + arm_func_start NNS_SndStrmStart +NNS_SndStrmStart: ; 0x020C1458 stmdb sp!, {r4,lr} mov r4, r0 ldr r0, [r4, #0x40] @@ -268,9 +255,8 @@ FUN_020C1458: ; 0x020C1458 str r0, [r4, #0x24] ldmia sp!, {r4,pc} - ; NNS_SndStrmSetup - arm_func_start FUN_020C14AC -FUN_020C14AC: ; 0x020C14AC + arm_func_start NNS_SndStrmSetup +NNS_SndStrmSetup: ; 0x020C14AC stmdb sp!, {r4-r11,lr} sub sp, sp, #0x24 mov r10, r0 @@ -283,7 +269,7 @@ FUN_020C14AC: ; 0x020C14AC mov r4, r3 str r1, [sp, #0x4c] beq _020C14E0 - bl FUN_020C1430 + bl NNS_SndStrmStop _020C14E0: ldr r0, [sp, #0x4c] ldr r2, [r10, #0x48] @@ -303,7 +289,7 @@ _020C14E0: ldr r1, [sp, #0x4c] bl _u32_div_f str r0, [sp, #0x1c] - bl FUN_020C02BC + bl NNS_SndAllocAlarm str r0, [r10, #0x40] ldr r0, [r10, #0x40] cmp r0, #0x0 @@ -316,7 +302,7 @@ _020C14E0: ble _020C15D4 ldr r0, [sp, #0x48] mov r7, r0, lsl #0x5 - ldr r6, _020C1668 ; =UNK_021D2724 + ldr r6, _020C1668 ; =sStrmChannel mov r5, r8 mov r4, #0x7f mov r11, #0x40 @@ -351,12 +337,12 @@ _020C15D4: str r10, [sp, #0x0] ldr r1, [sp, #0x1c] ldr r0, [r10, #0x40] - ldr r3, _020C166C ; =FUN_020C1308 + ldr r3, _020C166C ; =AlarmCallback mov r2, r1 bl SND_SetupAlarm - ldr r0, _020C1670 ; =UNK_021D26D8 + ldr r0, _020C1670 ; =sStrmList mov r1, r10 - bl FUN_020ADBE8 + bl NNS_FndAppendListObject ldr r0, [sp, #0x4c] str r9, [r10, #0x20] str r0, [r10, #0x2c] @@ -377,7 +363,7 @@ _020C15D4: mov r0, r10 mov r1, #0x0 str r2, [r10, #0x2c] - bl FUN_020C1254 + bl StrmCallback ldr r1, [sp, #0x4c] mov r0, r4 str r1, [r10, #0x2c] @@ -386,27 +372,25 @@ _020C15D4: add sp, sp, #0x24 ldmia sp!, {r4-r11,pc} .balign 4 -_020C1668: .word UNK_021D2724 -_020C166C: .word FUN_020C1308 -_020C1670: .word UNK_021D26D8 +_020C1668: .word sStrmChannel +_020C166C: .word AlarmCallback +_020C1670: .word sStrmList - ; _end - arm_func_start FUN_020C1674 -FUN_020C1674: ; 0x020C1674 + arm_func_start NNS_SndStrmFreeChannel +NNS_SndStrmFreeChannel: ; 0x020C1674 stmdb sp!, {r4,lr} mov r4, r0 ldr r0, [r4, #0x44] cmp r0, #0x0 ldmeqia sp!, {r4,pc} - bl FUN_020C0340 + bl NNS_SndUnlockChannel mov r0, #0x0 str r0, [r4, #0x44] str r0, [r4, #0x48] ldmia sp!, {r4,pc} - ; _end - arm_func_start FUN_020C169C -FUN_020C169C: ; 0x020C169C + arm_func_start NNS_SndStrmAllocChannel +NNS_SndStrmAllocChannel: ; 0x020C169C stmdb sp!, {r4-r6,lr} mov r5, r1 mov r4, #0x0 @@ -426,7 +410,7 @@ _020C16BC: blt _020C16BC _020C16DC: mov r0, r4 - bl FUN_020C0370 + bl NNS_SndLockChannel cmp r0, #0x0 moveq r0, #0x0 strne r5, [r6, #0x48] @@ -434,24 +418,23 @@ _020C16DC: movne r0, #0x1 ldmia sp!, {r4-r6,pc} - ; NNS_SndStrmInit - arm_func_start FUN_020C16FC -FUN_020C16FC: ; 0x020C16FC + arm_func_start NNS_SndStrmInit +NNS_SndStrmInit: ; 0x020C16FC stmdb sp!, {r4,lr} - ldr r1, _020C176C ; =UNK_021D26D4 + ldr r1, _020C176C ; =bInitialized$7761 mov r4, r0 ldr r0, [r1, #0x0] cmp r0, #0x0 bne _020C172C - ldr r0, _020C1770 ; =UNK_021D26D8 + ldr r0, _020C1770 ; =sStrmList mov r1, #0x0 - bl FUN_020ADC74 - ldr r0, _020C176C ; =UNK_021D26D4 + bl NNS_FndInitList + ldr r0, _020C176C ; =bInitialized$7761 mov r1, #0x1 str r1, [r0, #0x0] _020C172C: - ldr r1, _020C1774 ; =FUN_020C1208 - ldr r0, _020C1778 ; =FUN_020C1198 + ldr r1, _020C1774 ; =BeginSleep + ldr r0, _020C1778 ; =EndSleep str r1, [r4, #0x8] str r4, [r4, #0xc] str r0, [r4, #0x14] @@ -467,8 +450,7 @@ _020C172C: str r0, [r4, #0x24] ldmia sp!, {r4,pc} .balign 4 -_020C176C: .word UNK_021D26D4 -_020C1770: .word UNK_021D26D8 -_020C1774: .word FUN_020C1208 -_020C1778: .word FUN_020C1198 - +_020C176C: .word bInitialized$7761 +_020C1770: .word sStrmList +_020C1774: .word BeginSleep +_020C1778: .word EndSleep diff --git a/arm9/asm/NNS_SND_waveout.s b/arm9/asm/NNS_SND_waveout.s index 4d5a536d..b3c6591f 100644 --- a/arm9/asm/NNS_SND_waveout.s +++ b/arm9/asm/NNS_SND_waveout.s @@ -3,16 +3,14 @@ .section .bss - ; sWaveOut - .global UNK_021D1CBC -UNK_021D1CBC: ; 0x021D1CBC + .global sWaveOut +sWaveOut: ; 0x021D1CBC .space 0x140 .section .text - ; _end - arm_func_start FUN_020C03B8 -FUN_020C03B8: ; 0x020C03B8 + arm_func_start NNS_SndWaveOutIsPlaying +NNS_SndWaveOutIsPlaying: ; 0x020C03B8 stmdb sp!, {r4,lr} mov r4, r0 ldr r0, [r4, #0x8] @@ -40,9 +38,8 @@ _020C03F8: streq r0, [r4, #0x8] ldmia sp!, {r4,pc} - ; _end - arm_func_start FUN_020C041C -FUN_020C041C: ; 0x020C041C + arm_func_start NNS_SndWaveOutSetPan +NNS_SndWaveOutSetPan: ; 0x020C041C stmdb sp!, {lr} sub sp, sp, #0x4 ldr r2, [r0, #0x8] @@ -56,9 +53,8 @@ FUN_020C041C: ; 0x020C041C add sp, sp, #0x4 ldmia sp!, {pc} - ; NNS_SndWaveOutSetSpeed - arm_func_start FUN_020C044C -FUN_020C044C: ; 0x020C044C + arm_func_start NNS_SndWaveOutSetSpeed +NNS_SndWaveOutSetSpeed: ; 0x020C044C stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 mov r5, r0 @@ -98,9 +94,8 @@ _020C04B8: _020C04D4: .word 0xD87F8000 _020C04D8: .word 0x0000FFFF - ; _end - arm_func_start FUN_020C04DC -FUN_020C04DC: ; 0x020C04DC + arm_func_start NNS_SndWaveOutSetVolume +NNS_SndWaveOutSetVolume: ; 0x020C04DC stmdb sp!, {lr} sub sp, sp, #0x4 ldr r2, [r0, #0x8] @@ -115,9 +110,8 @@ FUN_020C04DC: ; 0x020C04DC add sp, sp, #0x4 ldmia sp!, {pc} - ; _end - arm_func_start FUN_020C0510 -FUN_020C0510: ; 0x020C0510 + arm_func_start NNS_SndWaveOutStop +NNS_SndWaveOutStop: ; 0x020C0510 stmdb sp!, {r4,lr} mov r4, r0 ldr r0, [r4, #0x8] @@ -134,9 +128,8 @@ FUN_020C0510: ; 0x020C0510 str r0, [r4, #0x8] ldmia sp!, {r4,pc} - ; NNS_SndWaveOutStart - arm_func_start FUN_020C054C -FUN_020C054C: ; 0x020C054C + arm_func_start NNS_SndWaveOutStart +NNS_SndWaveOutStart: ; 0x020C054C stmdb sp!, {r4-r9,lr} sub sp, sp, #0x1c movs r8, r1 @@ -215,36 +208,33 @@ _020C05E0: _020C0668: .word 0xD87F8000 _020C066C: .word 0x0000FFFF - ; NNS_SndWaveOutFreeChannel - arm_func_start FUN_020C0670 -FUN_020C0670: ; 0x020C0670 + arm_func_start NNS_SndWaveOutFreeChannel +NNS_SndWaveOutFreeChannel: ; 0x020C0670 ldr r0, [r0, #0x0] mov r1, #0x1 - ldr ip, _020C0684 ; =FUN_020C0340 + ldr ip, _020C0684 ; =NNS_SndUnlockChannel mov r0, r1, lsl r0 bx r12 .balign 4 -_020C0684: .word FUN_020C0340 +_020C0684: .word NNS_SndUnlockChannel - ; NNS_SndWaveOutAllocChannel - arm_func_start FUN_020C0688 -FUN_020C0688: ; 0x020C0688 + arm_func_start NNS_SndWaveOutAllocChannel +NNS_SndWaveOutAllocChannel: ; 0x020C0688 stmdb sp!, {r4,lr} mov r4, r0 mov r0, #0x1 mov r0, r0, lsl r4 - bl FUN_020C0370 + bl NNS_SndLockChannel cmp r0, #0x0 moveq r0, #0x0 ldmeqia sp!, {r4,pc} mov r0, #0x14 mul r0, r4, r0 - ldr r2, _020C06C8 ; =UNK_021D1CBC + ldr r2, _020C06C8 ; =sWaveOut mov r1, #0x0 str r4, [r2, r0] add r0, r2, r0 str r1, [r0, #0x8] ldmia sp!, {r4,pc} .balign 4 -_020C06C8: .word UNK_021D1CBC - +_020C06C8: .word sWaveOut diff --git a/arm9/asm/macros/function.inc b/arm9/asm/macros/function.inc index 6b9e5f40..3323f53e 100644 --- a/arm9/asm/macros/function.inc +++ b/arm9/asm/macros/function.inc @@ -4,6 +4,11 @@ .arm .endm + .macro local_arm_func_start name + .balign 4, 0 + .arm + .endm + .macro arm_func_end name .size \name, .-\name .endm diff --git a/arm9/asm/unk_020040F4.s b/arm9/asm/unk_020040F4.s index e2418c14..5e62cb80 100644 --- a/arm9/asm/unk_020040F4.s +++ b/arm9/asm/unk_020040F4.s @@ -922,7 +922,7 @@ _02004800: add r0, r4, #0x0 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C0F8C + bl NNS_SndPlayerPause strb r5, [r6, #0x0] _0200480E: pop {r4-r6, pc} @@ -948,7 +948,7 @@ FUN_02004828: ; 0x02004828 bl FUN_02003FF4 add r1, r5, #0x0 add r2, r4, #0x0 - bl FUN_020C0EF4 + bl NNS_SndPlayerMoveVolume pop {r3-r5, pc} thumb_func_start FUN_0200483C @@ -964,7 +964,7 @@ _02004844: _0200484A: bl FUN_02003FF4 add r1, r4, #0x0 - bl FUN_020C0F30 + bl NNS_SndPlayerSetInitialVolume pop {r4, pc} .balign 4 @@ -972,7 +972,7 @@ _0200484A: FUN_02004858: ; 0x02004858 push {r3-r5, lr} add r5, r1, #0x0 - bl FUN_020C23FC + bl NNS_SndArcGetSeqParam cmp r5, #0x1 beq _02004868 cmp r5, #0x8 @@ -1018,7 +1018,7 @@ FUN_020048A0: ; 0x020048A0 add r1, r5, #0x0 add r3, r2, #0x0 str r4, [sp, #0x0] - bl FUN_020C3910 + bl NNS_SndArcPlayerStartSeqEx pop {r3-r5, pc} .balign 4 @@ -1030,7 +1030,7 @@ FUN_020048BC: ; 0x020048BC bl ErrorHandling _020048C6: add r0, r4, #0x0 - bl FUN_020C0F50 + bl NNS_SndPlayerCountPlayingSeqByPlayerNo pop {r4, pc} .balign 4 @@ -1042,7 +1042,7 @@ FUN_020048D0: ; 0x020048D0 mov r0, #0xff pop {r3, pc} _020048DA: - bl FUN_020C23FC + bl NNS_SndArcGetSeqParam cmp r0, #0x0 bne _020048E6 mov r0, #0xff @@ -1054,22 +1054,22 @@ _020048E6: thumb_func_start FUN_020048EC FUN_020048EC: ; 0x020048EC - ldr r3, _020048F0 ; =FUN_020C0E14 + ldr r3, _020048F0 ; =NNS_SndPlayerGetSeqNo bx r3 .balign 4 -_020048F0: .word FUN_020C0E14 +_020048F0: .word NNS_SndPlayerGetSeqNo thumb_func_start FUN_020048F4 FUN_020048F4: ; 0x020048F4 push {r3, lr} bl FUN_02004900 - bl FUN_020C22D0 + bl NNS_SndArcGetBankInfo pop {r3, pc} thumb_func_start FUN_02004900 FUN_02004900: ; 0x02004900 push {r3, lr} - bl FUN_020C23FC + bl NNS_SndArcGetSeqParam cmp r0, #0x0 bne _0200490E mov r0, #0x0 @@ -1166,7 +1166,7 @@ _020049A8: bl FUN_02003D38 add r4, r0, #0x0 add r0, r5, #0x0 - bl FUN_020C0688 + bl NNS_SndWaveOutAllocChannel str r0, [r4, #0x0] cmp r0, #0x0 bne _020049CA @@ -1187,7 +1187,7 @@ _020049D6: bl FUN_02003D38 add r6, r0, #0x0 add r0, r5, #0x0 - bl FUN_020C0688 + bl NNS_SndWaveOutAllocChannel str r0, [r6, #0x0] cmp r0, #0x0 bne _020049F4 @@ -1230,7 +1230,7 @@ _02004A2A: add r0, r5, #0x0 bl FUN_02004930 ldr r0, [r0, #0x0] - bl FUN_020C0670 + bl NNS_SndWaveOutFreeChannel mov r0, #0x0 strb r0, [r6, #0x0] pop {r4-r6, pc} @@ -1244,7 +1244,7 @@ _02004A4C: add r0, r5, #0x0 bl FUN_02004930 ldr r0, [r0, #0x0] - bl FUN_020C0670 + bl NNS_SndWaveOutFreeChannel mov r0, #0x0 strb r0, [r4, #0x0] pop {r4-r6, pc} @@ -1276,7 +1276,7 @@ FUN_02004A6C: ; 0x02004A6C ldr r2, [r3, #0x8] ldr r0, [r0, #0x0] ldr r3, [r3, #0xc] - bl FUN_020C054C + bl NNS_SndWaveOutStart add r5, r0, #0x0 bne _02004AA4 add r0, r4, #0x0 @@ -1292,7 +1292,7 @@ FUN_02004AAC: ; 0x02004AAC push {r3, lr} bl FUN_02004930 ldr r0, [r0, #0x0] - bl FUN_020C0510 + bl NNS_SndWaveOutStop pop {r3, pc} .balign 4 @@ -1301,7 +1301,7 @@ FUN_02004ABC: ; 0x02004ABC push {r3, lr} bl FUN_02004930 ldr r0, [r0, #0x0] - bl FUN_020C03B8 + bl NNS_SndWaveOutIsPlaying pop {r3, pc} .balign 4 @@ -1316,7 +1316,7 @@ _02004AD6: bl FUN_02004930 ldr r0, [r0, #0x0] add r1, r4, #0x0 - bl FUN_020C041C + bl NNS_SndWaveOutSetPan pop {r4, pc} thumb_func_start FUN_02004AE4 @@ -1326,7 +1326,7 @@ FUN_02004AE4: ; 0x02004AE4 bl FUN_02004930 ldr r0, [r0, #0x0] add r1, r4, #0x0 - bl FUN_020C044C + bl NNS_SndWaveOutSetSpeed pop {r4, pc} .balign 4 @@ -1346,14 +1346,14 @@ FUN_02004AF8: ; 0x02004AF8 bl _s32_div_f add r1, r0, #0x0 ldr r0, [r4, #0x0] - bl FUN_020C04DC + bl NNS_SndWaveOutSetVolume pop {r3-r5, pc} _02004B20: add r0, r4, #0x0 bl FUN_02004930 ldr r0, [r0, #0x0] add r1, r5, #0x0 - bl FUN_020C04DC + bl NNS_SndWaveOutSetVolume pop {r3-r5, pc} thumb_func_start FUN_02004B30 @@ -1375,7 +1375,7 @@ FUN_02004B30: ; 0x02004B30 bl ErrorHandling _02004B54: add r0, r6, #0x0 - bl FUN_020C226C + bl NNS_SndArcGetWaveArcInfo add r7, r0, #0x0 bne _02004B68 bl ErrorHandling @@ -1386,7 +1386,7 @@ _02004B68: ldr r0, [r7, #0x0] lsl r0, r0, #0x8 lsr r0, r0, #0x8 - bl FUN_020C217C + bl NNS_SndArcGetFileSize add r6, r0, #0x0 bne _02004B80 bl ErrorHandling @@ -1416,7 +1416,7 @@ _02004B9C: lsr r0, r0, #0x8 add r2, r6, #0x0 mov r3, #0x0 - bl FUN_020C2104 + bl NNS_SndArcReadFile mov r1, #0x0 mvn r1, r1 cmp r0, r1 @@ -1518,10 +1518,10 @@ _02004C76: thumb_func_start FUN_02004C78 FUN_02004C78: ; 0x02004C78 - ldr r3, _02004C7C ; =FUN_020C1E58 + ldr r3, _02004C7C ; =NNS_SndCaptureIsActive bx r3 .balign 4 -_02004C7C: .word FUN_020C1E58 +_02004C7C: .word NNS_SndCaptureIsActive thumb_func_start FUN_02004C80 FUN_02004C80: ; 0x02004C80 @@ -1537,23 +1537,23 @@ FUN_02004C80: ; 0x02004C80 mov r2, #0x0 lsl r3, r3, #0x6 str r4, [sp, #0x0] - bl FUN_020C1FF0 + bl NNS_SndCaptureStartReverb add sp, #0x4 pop {r3-r4, pc} thumb_func_start FUN_02004CA4 FUN_02004CA4: ; 0x02004CA4 - ldr r3, _02004CA8 ; =FUN_020C1F54 + ldr r3, _02004CA8 ; =NNS_SndCaptureStopReverb bx r3 .balign 4 -_02004CA8: .word FUN_020C1F54 +_02004CA8: .word NNS_SndCaptureStopReverb thumb_func_start FUN_02004CAC FUN_02004CAC: ; 0x02004CAC - ldr r3, _02004CB0 ; =FUN_020C1FA4 + ldr r3, _02004CB0 ; =NNS_SndCaptureSetReverbVolume bx r3 .balign 4 -_02004CB0: .word FUN_020C1FA4 +_02004CB0: .word NNS_SndCaptureSetReverbVolume thumb_func_start FUN_02004CB4 FUN_02004CB4: ; 0x02004CB4 @@ -1579,7 +1579,7 @@ FUN_02004CB4: ; 0x02004CB4 ldr r3, _02004CF8 ; =0x000055F0 add r0, r4, #0x0 mov r2, #0x0 - bl FUN_020C1EA4 + bl NNS_SndCaptureStartEffect add sp, #0xc pop {r3-r4, pc} nop @@ -1588,10 +1588,10 @@ _02004CF8: .word 0x000055F0 thumb_func_start FUN_02004CFC FUN_02004CFC: ; 0x02004CFC - ldr r3, _02004D00 ; =FUN_020C1E68 + ldr r3, _02004D00 ; =NNS_SndCaptureStopEffect bx r3 .balign 4 -_02004D00: .word FUN_020C1E68 +_02004D00: .word NNS_SndCaptureStopEffect thumb_func_start FUN_02004D04 FUN_02004D04: ; 0x02004D04 @@ -1619,7 +1619,7 @@ FUN_02004D20: ; 0x02004D20 bl FUN_02003FF4 add r1, r5, #0x0 add r2, r4, #0x0 - bl FUN_020C0EA4 + bl NNS_SndPlayerSetTrackPitch pop {r3-r5, pc} thumb_func_start FUN_02004D34 @@ -1642,14 +1642,14 @@ FUN_02004D4C: ; 0x02004D4C bl FUN_02003FF4 add r1, r5, #0x0 add r2, r4, #0x0 - bl FUN_020C0E7C + bl NNS_SndPlayerSetTrackPan pop {r3-r5, pc} thumb_func_start FUN_02004D60 FUN_02004D60: ; 0x02004D60 push {r4, lr} add r4, r0, #0x0 - bl FUN_020C0174 + bl NNS_SndSetMonoFlag ldr r0, _02004D70 ; =UNK_021C3DD8 str r4, [r0, #0x0] pop {r4, pc} @@ -1866,7 +1866,7 @@ FUN_02004ED0: ; 0x02004ED0 _02004EF0: mov r0, #0x1 _02004EF2: - bl FUN_020C226C + bl NNS_SndArcGetWaveArcInfo cmp r0, #0x0 bne _02004F02 bl ErrorHandling @@ -1876,7 +1876,7 @@ _02004F02: ldr r0, [r0, #0x0] lsl r0, r0, #0x8 lsr r0, r0, #0x8 - bl FUN_020C20DC + bl NNS_SndArcGetFileAddress cmp r0, #0x0 bne _02004F18 bl ErrorHandling @@ -1928,7 +1928,7 @@ _02004F62: FUN_02004F64: ; 0x02004F64 push {r3, lr} bl FUN_02003FF4 - bl FUN_020C0DD4 + bl NNS_SndPlayerGetTick pop {r3, pc} thumb_func_start FUN_02004F70 @@ -2216,12 +2216,12 @@ _0200515A: thumb_func_start FUN_02005160 FUN_02005160: ; 0x02005160 - ldr r3, _02005168 ; =FUN_020C1148 + ldr r3, _02005168 ; =NNS_SndPlayerSetAllocatableChannel add r1, r0, #0x0 mov r0, #0x7 bx r3 .balign 4 -_02005168: .word FUN_020C1148 +_02005168: .word NNS_SndPlayerSetAllocatableChannel thumb_func_start FUN_0200516C FUN_0200516C: ; 0x0200516C @@ -2282,7 +2282,7 @@ _020051E8: .word 0x0000047E thumb_func_start FUN_020051EC FUN_020051EC: ; 0x020051EC - ldr r3, _020051F0 ; =FUN_020C1180 + ldr r3, _020051F0 ; =NNS_SndPlayerSetPlayerVolume bx r3 .balign 4 -_020051F0: .word FUN_020C1180 +_020051F0: .word NNS_SndPlayerSetPlayerVolume diff --git a/arm9/asm/unk_020051F4.s b/arm9/asm/unk_020051F4.s index ccb8d272..12b0c8cb 100644 --- a/arm9/asm/unk_020051F4.s +++ b/arm9/asm/unk_020051F4.s @@ -12,7 +12,7 @@ FUN_020051F4: ; 0x020051F4 add r4, r0, #0x0 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C3980 + bl NNS_SndArcPlayerStartSeq add r6, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -90,7 +90,7 @@ FUN_02005288: ; 0x02005288 add r0, r4, #0x0 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C3980 + bl NNS_SndArcPlayerStartSeq pop {r3-r5, pc} .balign 4 @@ -123,7 +123,7 @@ FUN_020052B8: ; 0x020052B8 add r0, r6, #0x0 add r3, r1, #0x0 str r5, [sp, #0x0] - bl FUN_020C3910 + bl NNS_SndArcPlayerStartSeqEx add sp, #0x4 pop {r3-r6, pc} .balign 4 @@ -152,7 +152,7 @@ _0200532A: mov r0, #0x7 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C3980 + bl NNS_SndArcPlayerStartSeq add r4, r0, #0x0 add r0, r5, #0x0 bl FUN_02004110 @@ -165,14 +165,14 @@ _0200532A: FUN_02005350: ; 0x02005350 push {r4, lr} add r4, r0, #0x0 - bl FUN_020C0FDC + bl NNS_SndPlayerStopSeqBySeqNo add r0, r4, #0x0 bl FUN_020048D0 cmp r0, #0xff beq _0200536E bl FUN_02004018 bl FUN_02003FF4 - bl FUN_020C0F68 + bl NNS_SndHandleReleaseSeq _0200536E: bl FUN_02005374 pop {r4, pc} @@ -270,7 +270,7 @@ FUN_0200541C: ; 0x0200541C bl FUN_02003D38 add r4, r0, #0x0 mov r0, #0x0 - bl FUN_020C0F9C + bl NNS_SndPlayerStopSeqAll ldrb r0, [r5, #0x0] cmp r0, #0x1 bne _02005440 @@ -299,7 +299,7 @@ FUN_02005454: ; 0x02005454 mov r0, #0x7 bl FUN_02003FF4 mov r1, #0x0 - bl FUN_020C10A4 + bl NNS_SndPlayerStopSeq bl FUN_02005374 mov r5, #0x0 add r4, r5, #0x0 @@ -351,7 +351,7 @@ FUN_020054C8: ; 0x020054C8 add r4, r0, #0x0 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C3980 + bl NNS_SndArcPlayerStartSeq add r6, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -362,10 +362,10 @@ FUN_020054C8: ; 0x020054C8 thumb_func_start FUN_020054F0 FUN_020054F0: ; 0x020054F0 - ldr r3, _020054F4 ; =FUN_020C0FDC + ldr r3, _020054F4 ; =NNS_SndPlayerStopSeqBySeqNo bx r3 .balign 4 -_020054F4: .word FUN_020C0FDC +_020054F4: .word NNS_SndPlayerStopSeqBySeqNo thumb_func_start FUN_020054F8 FUN_020054F8: ; 0x020054F8 @@ -373,7 +373,7 @@ FUN_020054F8: ; 0x020054F8 add r4, r1, #0x0 bl FUN_02003FF4 add r1, r4, #0x0 - bl FUN_020C10A4 + bl NNS_SndPlayerStopSeq pop {r4, pc} thumb_func_start FUN_02005508 @@ -411,7 +411,7 @@ FUN_02005530: ; 0x02005530 bl FUN_02003FF4 add r1, r5, #0x0 add r2, r4, #0x0 - bl FUN_020C0E7C + bl NNS_SndPlayerSetTrackPan pop {r3-r5, pc} thumb_func_start FUN_0200554C @@ -428,7 +428,7 @@ _0200555C: bl FUN_02003FF4 add r1, r7, #0x0 add r2, r6, #0x0 - bl FUN_020C0E7C + bl NNS_SndPlayerSetTrackPan add r5, r5, #0x1 cmp r5, #0x4 blt _0200555C @@ -483,7 +483,7 @@ _020055BC: sub r1, r1, #0x3 add r2, r5, #0x0 add r3, r1, #0x0 - bl FUN_020C3910 + bl NNS_SndArcPlayerStartSeqEx add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x1 @@ -497,7 +497,7 @@ _020055E8: sub r1, r1, #0x3 add r2, r5, #0x0 add r3, r1, #0x0 - bl FUN_020C3910 + bl NNS_SndArcPlayerStartSeqEx add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x8 @@ -525,11 +525,11 @@ FUN_02005614: ; 0x02005614 mov r0, #0x1 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C10A4 + bl NNS_SndPlayerStopSeq mov r0, #0x8 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C10A4 + bl NNS_SndPlayerStopSeq ldrb r0, [r6, #0x0] cmp r0, #0x1 bne _02005658 @@ -1239,7 +1239,7 @@ _02005C48: mov r0, #0x2 bl FUN_02003FF4 add r1, r5, #0x0 - bl FUN_020C3980 + bl NNS_SndArcPlayerStartSeq add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x2 @@ -1279,7 +1279,7 @@ FUN_02005CA0: ; 0x02005CA0 mov r0, #0x2 bl FUN_02003FF4 add r1, r4, #0x0 - bl FUN_020C10A4 + bl NNS_SndPlayerStopSeq mov r0, #0x6 bl FUN_02004748 bl FUN_02003F64 diff --git a/arm9/asm/unk_02006864.s b/arm9/asm/unk_02006864.s index 5bd62750..75adbe92 100644 --- a/arm9/asm/unk_02006864.s +++ b/arm9/asm/unk_02006864.s @@ -5,8 +5,8 @@ .global UNK_020ECB98 UNK_020ECB98: ; 0x020ECB98 - .word FUN_020B1768 - .word FUN_020B1528 + .word NNS_G2dLoadImage1DMapping + .word NNS_G2dLoadImage2DMapping .global UNK_020ECBA0 UNK_020ECBA0: ; 0x020ECBA0 @@ -14,7 +14,7 @@ UNK_020ECBA0: ; 0x020ECBA0 .global UNK_020ECBA8 UNK_020ECBA8: ; 0x020ECBA8 - .word FUN_020B1768, FUN_020B1528 + .word NNS_G2dLoadImage1DMapping, NNS_G2dLoadImage2DMapping .global UNK_020ECBB0 UNK_020ECBB0: ; 0x020ECBB0 @@ -38,7 +38,7 @@ FUN_0200687C: ; 0x0200687C add r7, r0, #0x0 beq _020068C2 add r1, sp, #0x4 - bl FUN_020B0030 + bl NNS_G2dGetUnpackedBGCharacterData cmp r0, #0x0 beq _020068BC cmp r4, #0x0 @@ -78,7 +78,7 @@ FUN_020068C8: ; 0x020068C8 add r7, r0, #0x0 beq _0200692C add r1, sp, #0x4 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData cmp r0, #0x0 beq _02006926 cmp r4, #0x0 @@ -147,7 +147,7 @@ FUN_02006948: ; 0x02006948 cmp r0, #0x0 beq _02006A2A add r1, sp, #0x8 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData cmp r0, #0x0 beq _02006A24 ldr r0, [sp, #0x8] @@ -262,7 +262,7 @@ FUN_02006A34: ; 0x02006A34 add r7, r0, #0x0 beq _02006A80 add r1, sp, #0x4 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData cmp r0, #0x0 beq _02006A7A cmp r4, #0x0 @@ -306,11 +306,11 @@ FUN_02006A8C: ; 0x02006A8C add r6, r0, #0x0 beq _02006AE0 add r1, sp, #0x4 - bl FUN_020B00F0 + bl NNS_G2dGetUnpackedPaletteCompressInfo add r7, r0, #0x0 add r0, r6, #0x0 add r1, sp, #0x8 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData cmp r0, #0x0 beq _02006ADA cmp r7, #0x0 @@ -321,14 +321,14 @@ FUN_02006A8C: ; 0x02006A8C ldr r0, [sp, #0x8] ldr r1, [sp, #0x4] add r3, r5, #0x0 - bl FUN_020B10E8 + bl NNS_G2dLoadPaletteEx b _02006ADA _02006ACE: ldr r0, [sp, #0x8] ldr r3, [sp, #0x24] add r1, r4, #0x0 add r2, r5, #0x0 - bl FUN_020B1240 + bl NNS_G2dLoadPalette _02006ADA: add r0, r6, #0x0 bl FreeToHeap @@ -349,7 +349,7 @@ FUN_02006AE4: ; 0x02006AE4 ldr r4, _02006B30 ; =0x00000000 beq _02006B28 add r1, sp, #0x4 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData cmp r0, #0x0 beq _02006B22 ldr r1, [sp, #0x18] @@ -391,7 +391,7 @@ FUN_02006B38: ; 0x02006B38 add r4, r0, #0x0 beq _02006B9E add r1, sp, #0x4 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData cmp r0, #0x0 beq _02006B98 ldr r1, [sp, #0x18] @@ -453,7 +453,7 @@ FUN_02006BB0: ; 0x02006BB0 add r5, r0, #0x0 beq _02006BD6 add r1, r4, #0x0 - bl FUN_020B0030 + bl NNS_G2dGetUnpackedBGCharacterData cmp r0, #0x0 bne _02006BD6 add r0, r5, #0x0 @@ -476,7 +476,7 @@ FUN_02006BDC: ; 0x02006BDC add r5, r0, #0x0 beq _02006C02 add r1, r4, #0x0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData cmp r0, #0x0 bne _02006C02 add r0, r5, #0x0 @@ -498,7 +498,7 @@ FUN_02006C08: ; 0x02006C08 add r4, r0, #0x0 beq _02006C2C add r1, r5, #0x0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData cmp r0, #0x0 bne _02006C2C add r0, r4, #0x0 @@ -520,7 +520,7 @@ FUN_02006C30: ; 0x02006C30 add r5, r0, #0x0 beq _02006C56 add r1, r4, #0x0 - bl FUN_020AFEB8 + bl NNS_G2dGetUnpackedCellBank cmp r0, #0x0 bne _02006C56 add r0, r5, #0x0 @@ -543,7 +543,7 @@ FUN_02006C5C: ; 0x02006C5C add r5, r0, #0x0 beq _02006C82 add r1, r4, #0x0 - bl thunk_FUN_020afda0_2 + bl NNS_G2dGetUnpackedAnimBank cmp r0, #0x0 bne _02006C82 add r0, r5, #0x0 diff --git a/arm9/asm/unk_02006D98.s b/arm9/asm/unk_02006D98.s index c1e95596..4b0a737d 100644 --- a/arm9/asm/unk_02006D98.s +++ b/arm9/asm/unk_02006D98.s @@ -144,7 +144,7 @@ _02006E12: add r5, #0x98 cmp r6, #0x4 blt _02006E12 - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera ldr r2, _02006EC8 ; =0x000002E3 mov r0, #0x0 strb r0, [r4, r2] @@ -155,7 +155,7 @@ _02006E12: bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0xc str r0, [sp, #0x4] - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r0, [sp, #0xc] mov r1, #0xaf ldr r0, [r0, #0x4] @@ -235,7 +235,7 @@ FUN_02006ED4: ; 0x02006ED4 bl FUN_020082A8 add r0, r5, #0x0 bl FUN_020086F4 - bl FUN_020BB394 + bl NNS_G3dGeFlushBuffer mov r6, #0x9f mov r0, #0x0 ldr r4, _02007250 ; =0x04000444 @@ -295,7 +295,7 @@ _02006F48: add r1, #0x24 blx r2 _02006F56: - bl FUN_020BB394 + bl NNS_G3dGeFlushBuffer ldr r0, _02007258 ; =0x000002E3 ldrb r0, [r5, r0] cmp r0, #0x1 @@ -505,7 +505,7 @@ _02006F7E: add r2, r3, r2 asr r1, r1, #0x10 mov r3, r12 - bl FUN_020B0250 + bl NNS_G2dDrawSpriteFast b _02007174 _02007104: mov r0, #0x34 @@ -562,7 +562,7 @@ _02007104: lsl r1, r1, #0x10 asr r1, r1, #0x10 add r2, r6, r2 - bl FUN_020B0250 + bl NNS_G2dDrawSpriteFast _02007174: add r0, r4, #0x0 add r0, #0x6c @@ -725,7 +725,7 @@ _0200727C: lsl r1, r1, #0x10 ldr r2, _020072E0 ; =0xFFFFFC18 asr r1, r1, #0x10 - bl FUN_020B0250 + bl NNS_G2dDrawSpriteFast _020072BC: ldr r0, [sp, #0x14] add r4, #0x98 @@ -2884,7 +2884,7 @@ FUN_020081C4: ; 0x020081C4 strb r1, [r4, r0] sub r0, #0x81 add r0, r4, r0 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy mov r3, #0xae lsl r3, r3, #0x2 mov r1, #0x20 @@ -2910,7 +2910,7 @@ FUN_020081C4: ; 0x020081C4 ldr r1, [r4, r1] mov r2, #0x0 add r3, r4, r3 - bl FUN_020B1528 + bl NNS_G2dLoadImage2DMapping _02008212: ldr r0, _02008258 ; =0x000002E2 ldrb r1, [r4, r0] @@ -2920,7 +2920,7 @@ _02008212: strb r1, [r4, r0] sub r0, #0x5e add r0, r4, r0 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy mov r3, #0xaa lsl r3, r3, #0x2 add r0, r3, #0x0 @@ -2941,7 +2941,7 @@ _02008212: add r0, r4, r0 mov r2, #0x0 add r3, r4, r3 - bl FUN_020B1240 + bl NNS_G2dLoadPalette _02008252: pop {r4, pc} .balign 4 @@ -3037,7 +3037,7 @@ _020082CC: bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x58 str r0, [sp, #0x4c] - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData ldr r0, [sp, #0x58] mov r1, #0xaf ldr r0, [r0, #0x4] @@ -3600,7 +3600,7 @@ _02008706: bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x18 str r0, [sp, #0x10] - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r0, [sp, #0x18] mov r7, #0x0 ldr r1, [r0, #0x0] @@ -3646,7 +3646,7 @@ _0200874A: bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x18 str r0, [sp, #0x4] - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r0, [sp, #0x18] mov r7, #0xad ldr r0, [r0, #0xc] diff --git a/arm9/asm/unk_02008DEC.s b/arm9/asm/unk_02008DEC.s index 1b0161ae..b05df5ca 100644 --- a/arm9/asm/unk_02008DEC.s +++ b/arm9/asm/unk_02008DEC.s @@ -1457,7 +1457,7 @@ FUN_0200986C: ; 0x0200986C add r4, r0, #0x0 add r0, r6, #0x0 add r1, r4, #0x0 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData str r5, [r4, #0x4] add r0, r4, #0x0 pop {r4-r6, pc} @@ -1475,7 +1475,7 @@ FUN_0200988C: ; 0x0200988C add r4, r0, #0x0 add r0, r7, #0x0 add r1, r4, #0x0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData str r5, [r4, #0x4] str r6, [r4, #0x8] add r0, r4, #0x0 @@ -1492,7 +1492,7 @@ FUN_020098B0: ; 0x020098B0 add r4, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 - bl FUN_020AFEB8 + bl NNS_G2dGetUnpackedCellBank add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 @@ -1507,7 +1507,7 @@ FUN_020098CC: ; 0x020098CC add r4, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 - bl thunk_FUN_020afda0_2 + bl NNS_G2dGetUnpackedAnimBank add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 @@ -1522,7 +1522,7 @@ FUN_020098E8: ; 0x020098E8 add r4, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 - bl FUN_020AFFD8 + bl NNS_G2dGetUnpackedMultiCellBank add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 @@ -1537,7 +1537,7 @@ FUN_02009904: ; 0x02009904 add r4, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 - bl thunk_FUN_020afda0 + bl NNS_G2dGetUnpackedMCAnimBank add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 @@ -2266,7 +2266,7 @@ FUN_02009E88: ; 0x02009E88 mov r1, #0x0 bl FUN_02009E54 add r1, r4, #0x0 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation mov r1, #0x0 mvn r1, r1 cmp r0, r1 diff --git a/arm9/asm/unk_02009EAC.s b/arm9/asm/unk_02009EAC.s index a6a7e7d7..2c51446b 100644 --- a/arm9/asm/unk_02009EAC.s +++ b/arm9/asm/unk_02009EAC.s @@ -95,7 +95,7 @@ _02009F1C: lsl r2, r4, #0x10 lsr r1, r1, #0x10 lsr r2, r2, #0x10 - bl FUN_020B0E34 + bl NNS_G2dGetNewOamManagerInstance cmp r0, #0x0 bne _02009F48 bl ErrorHandling @@ -118,7 +118,7 @@ _02009F48: lsr r1, r1, #0x10 lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020B0E34 + bl NNS_G2dGetNewOamManagerInstance cmp r0, #0x0 bne _02009F78 bl ErrorHandling @@ -135,11 +135,11 @@ FUN_02009F80: ; 0x02009F80 ldr r0, [r0, #0x0] cmp r0, #0x0 beq _02009F98 - bl FUN_020B0870 + bl NNS_G2dApplyAndResetOamManagerBuffer ldr r0, _02009F9C ; =UNK_021C4670 ldr r0, [r0, #0x0] add r0, #0x1c - bl FUN_020B0870 + bl NNS_G2dApplyAndResetOamManagerBuffer _02009F98: pop {r3, pc} nop @@ -264,7 +264,7 @@ FUN_0200A074: ; 0x0200A074 add r2, r1, #0x0 ldr r0, [r0, #0x0] add r1, r3, #0x0 - bl FUN_020B0C7C + bl NNS_G2dEntryOamManagerOamWithAffineIdx add r4, r0, #0x0 bne _0200A08C bl ErrorHandling @@ -283,7 +283,7 @@ FUN_0200A094: ; 0x0200A094 ldr r0, [r0, #0x0] add r1, r3, #0x0 add r0, #0x1c - bl FUN_020B0C7C + bl NNS_G2dEntryOamManagerOamWithAffineIdx add r4, r0, #0x0 bne _0200A0AE bl ErrorHandling @@ -299,7 +299,7 @@ FUN_0200A0B8: ; 0x0200A0B8 add r1, r0, #0x0 ldr r0, _0200A0D4 ; =UNK_021C4670 ldr r0, [r0, #0x0] - bl FUN_020B0BB0 + bl NNS_G2dEntryOamManagerAffine add r4, r0, #0x0 ldr r0, _0200A0D8 ; =0x0000FFFE cmp r4, r0 @@ -319,7 +319,7 @@ FUN_0200A0DC: ; 0x0200A0DC ldr r0, _0200A0FC ; =UNK_021C4670 ldr r0, [r0, #0x0] add r0, #0x1c - bl FUN_020B0BB0 + bl NNS_G2dEntryOamManagerAffine add r4, r0, #0x0 ldr r0, _0200A100 ; =0x0000FFFE cmp r4, r0 diff --git a/arm9/asm/unk_0200BB14.s b/arm9/asm/unk_0200BB14.s index 04f67c6e..7a041be2 100644 --- a/arm9/asm/unk_0200BB14.s +++ b/arm9/asm/unk_0200BB14.s @@ -90,7 +90,7 @@ _0200BB8A: ldr r1, [r5, #0x0] add r0, r7, #0x0 bl FUN_0201E00C - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule ldr r0, [r5, #0x8] cmp r0, #0x1 bne _0200BBD6 diff --git a/arm9/asm/unk_0200CABC.s b/arm9/asm/unk_0200CABC.s index 27b27a76..bf4889d8 100644 --- a/arm9/asm/unk_0200CABC.s +++ b/arm9/asm/unk_0200CABC.s @@ -1084,7 +1084,7 @@ FUN_0200D300: ; 0x0200D300 bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x18 str r0, [sp, #0x14] - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData add r2, sp, #0x20 ldr r1, [sp, #0x18] ldrb r2, [r2, #0x10] @@ -2574,7 +2574,7 @@ FUN_0200DEF4: ; 0x0200DEF4 bl FUN_02009C5C mov r1, #0x1 str r0, [sp, #0x4] - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation mov r1, #0x19 add r7, r0, #0x0 add r0, r4, #0x0 @@ -2601,7 +2601,7 @@ FUN_0200DEF4: ; 0x0200DEF4 ldr r1, [sp, #0x4] bl FUN_02009E54 mov r1, #0x1 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation add r5, r0, #0x0 add r0, r4, #0x0 mov r1, #0x20 diff --git a/arm9/asm/unk_02011744.s b/arm9/asm/unk_02011744.s index fc5c7b32..ff9364c9 100644 --- a/arm9/asm/unk_02011744.s +++ b/arm9/asm/unk_02011744.s @@ -870,7 +870,7 @@ _02011D52: beq _02011D92 _02011D68: add r0, r5, #0x0 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy str r7, [sp, #0x0] ldr r0, [sp, #0x30] str r6, [sp, #0x4] diff --git a/arm9/asm/unk_02012004.s b/arm9/asm/unk_02012004.s index 042302c6..e43e4bb2 100644 --- a/arm9/asm/unk_02012004.s +++ b/arm9/asm/unk_02012004.s @@ -82,7 +82,7 @@ FUN_02012044: ; 0x02012044 _02012054: add r0, r4, #0x0 add r1, r5, #0x0 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData add r6, r0, #0x0 cmp r5, #0x0 bne _02012066 @@ -309,7 +309,7 @@ FUN_020121E8: ; 0x020121E8 _02012204: ldr r0, [sp, #0x20] add r1, sp, #0x2c - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData cmp r0, #0x0 bne _02012214 bl ErrorHandling @@ -649,7 +649,7 @@ FUN_02012470: ; 0x02012470 bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x0 add r5, r0, #0x0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData cmp r0, #0x1 beq _0201249C bl ErrorHandling diff --git a/arm9/asm/unk_02012CC8.s b/arm9/asm/unk_02012CC8.s index 781d1d6d..2961eba7 100644 --- a/arm9/asm/unk_02012CC8.s +++ b/arm9/asm/unk_02012CC8.s @@ -1,7 +1,7 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021CED64 + .extern NNS_G3dGlb .section .rodata @@ -205,7 +205,7 @@ FUN_02012DE4: ; 0x02012DE4 beq _02012E02 add r0, r5, #0x0 add r0, #0x58 - bl FUN_020AE8CC + bl NNS_GfdSetFrmTexVramState b _02012E22 _02012E02: mov r0, #0x2 @@ -218,7 +218,7 @@ _02012E0E: ldr r0, [r4, #0x58] cmp r0, #0x0 beq _02012E1A - bl FUN_020AF894 + bl NNS_GfdFreeLnkTexVram str r7, [r4, #0x58] _02012E1A: add r6, r6, #0x1 @@ -234,7 +234,7 @@ _02012E22: beq _02012E38 add r0, r5, #0x0 add r0, #0x98 - bl FUN_020AEC7C + bl NNS_GfdSetFrmPlttVramState b _02012E60 _02012E38: mov r0, #0x8 @@ -249,7 +249,7 @@ _02012E44: ldr r0, [r0, #0x0] cmp r0, #0x0 beq _02012E58 - bl FUN_020AFA80 + bl NNS_GfdFreeLnkPlttVram add r0, r4, #0x0 add r0, #0x98 str r7, [r0, #0x0] @@ -766,7 +766,7 @@ _020131B2: beq _020131C8 add r0, r5, #0x0 add r0, #0x58 - bl FUN_020AE918 + bl NNS_GfdGetFrmTexVramState b _020131DE _020131C8: mov r0, #0x2 @@ -787,7 +787,7 @@ _020131DE: beq _020131EE add r0, r5, #0x0 add r0, #0x98 - bl FUN_020AEC98 + bl NNS_GfdGetFrmPlttVramState b _02013208 _020131EE: mov r0, #0x8 @@ -952,19 +952,19 @@ FUN_02013300: ; 0x02013300 bl FUN_0201EB8C bl FUN_0201EBA4 _0201331C: - bl FUN_020B849C + bl NNS_G3dGlbFlushP ldr r0, [r4, #0x0] - ldr r1, _02013338 ; =UNK_021CED64 + ldr r1, _02013338 ; =NNS_G3dGlb + 0x4C bl FUN_0208AD80 ldr r0, [r4, #0x20] cmp r0, #0x0 beq _02013332 bl FUN_0201EB98 _02013332: - bl FUN_020B849C + bl NNS_G3dGlbFlushP pop {r4, pc} .balign 4 -_02013338: .word UNK_021CED64 +_02013338: .word NNS_G3dGlb + 0x4C thumb_func_start FUN_0201333C FUN_0201333C: ; 0x0201333C diff --git a/arm9/asm/unk_02013CD4.s b/arm9/asm/unk_02013CD4.s index f4fc4db4..330a8c95 100644 --- a/arm9/asm/unk_02013CD4.s +++ b/arm9/asm/unk_02013CD4.s @@ -1,11 +1,11 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021064C0 + .extern NNS_GfdDefaultFuncAllocPlttVram .extern FX_SinCosTable_ - .extern UNK_021064B8 - .extern UNK_021064C4 - .extern UNK_021064BC + .extern NNS_GfdDefaultFuncAllocTexVram + .extern NNS_GfdDefaultFuncFreePlttVram + .extern NNS_GfdDefaultFuncFreeTexVram .text @@ -141,7 +141,7 @@ _02013DC6: thumb_func_start FUN_02013DD4 FUN_02013DD4: ; 0x02013DD4 push {r4, lr} - ldr r1, _02013DE8 ; =UNK_021064BC + ldr r1, _02013DE8 ; =NNS_GfdDefaultFuncFreeTexVram add r4, r0, #0x0 ldr r0, [r4, #0x0] ldr r1, [r1, #0x0] @@ -150,7 +150,7 @@ FUN_02013DD4: ; 0x02013DD4 bl FUN_02013F50 pop {r4, pc} .balign 4 -_02013DE8: .word UNK_021064BC +_02013DE8: .word NNS_GfdDefaultFuncFreeTexVram thumb_func_start FUN_02013DEC FUN_02013DEC: ; 0x02013DEC @@ -204,7 +204,7 @@ _02013E36: thumb_func_start FUN_02013E44 FUN_02013E44: ; 0x02013E44 push {r4, lr} - ldr r1, _02013E58 ; =UNK_021064C4 + ldr r1, _02013E58 ; =NNS_GfdDefaultFuncFreePlttVram add r4, r0, #0x0 ldr r0, [r4, #0x0] ldr r1, [r1, #0x0] @@ -213,7 +213,7 @@ FUN_02013E44: ; 0x02013E44 bl FUN_02013F5C pop {r4, pc} .balign 4 -_02013E58: .word UNK_021064C4 +_02013E58: .word NNS_GfdDefaultFuncFreePlttVram thumb_func_start FUN_02013E5C FUN_02013E5C: ; 0x02013E5C @@ -401,21 +401,21 @@ _02013F4C: .word 0x00007FFF thumb_func_start FUN_02013F50 FUN_02013F50: ; 0x02013F50 - ldr r3, _02013F58 ; =FUN_020B1A24 + ldr r3, _02013F58 ; =NNS_G2dInitImageProxy mov r1, #0x0 stmia r0!, {r1} bx r3 .balign 4 -_02013F58: .word FUN_020B1A24 +_02013F58: .word NNS_G2dInitImageProxy thumb_func_start FUN_02013F5C FUN_02013F5C: ; 0x02013F5C - ldr r3, _02013F64 ; =FUN_020B19DC + ldr r3, _02013F64 ; =NNS_G2dInitImagePaletteProxy mov r1, #0x0 stmia r0!, {r1} bx r3 .balign 4 -_02013F64: .word FUN_020B19DC +_02013F64: .word NNS_G2dInitImagePaletteProxy thumb_func_start FUN_02013F68 FUN_02013F68: ; 0x02013F68 @@ -585,7 +585,7 @@ _02014076: thumb_func_start FUN_0201407C FUN_0201407C: ; 0x0201407C push {r3, lr} - ldr r3, _0201408C ; =UNK_021064B8 + ldr r3, _0201408C ; =NNS_GfdDefaultFuncAllocTexVram mov r1, #0x0 ldr r0, [r0, #0x10] ldr r3, [r3, #0x0] @@ -593,12 +593,12 @@ FUN_0201407C: ; 0x0201407C blx r3 pop {r3, pc} .balign 4 -_0201408C: .word UNK_021064B8 +_0201408C: .word NNS_GfdDefaultFuncAllocTexVram thumb_func_start FUN_02014090 FUN_02014090: ; 0x02014090 push {r3, lr} - ldr r3, _020140A0 ; =UNK_021064C0 + ldr r3, _020140A0 ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0x0 ldr r3, [r3, #0x0] lsl r0, r0, #0x5 @@ -606,7 +606,7 @@ FUN_02014090: ; 0x02014090 blx r3 pop {r3, pc} .balign 4 -_020140A0: .word UNK_021064C0 +_020140A0: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start FUN_020140A4 FUN_020140A4: ; 0x020140A4 @@ -615,7 +615,7 @@ FUN_020140A4: ; 0x020140A4 add r3, r2, #0x0 lsr r1, r1, #0xd mov r2, #0x0 - bl FUN_020B1528 + bl NNS_G2dLoadImage2DMapping pop {r3, pc} thumb_func_start FUN_020140B4 @@ -632,7 +632,7 @@ FUN_020140B4: ; 0x020140B4 str r2, [r5, #0x8] lsr r1, r1, #0xd mov r2, #0x0 - bl FUN_020B1240 + bl NNS_G2dLoadPalette str r4, [r5, #0x8] pop {r3-r5, pc} .balign 4 @@ -781,7 +781,7 @@ _02014172: str r4, [sp, #0x10] ldrsh r3, [r5, r3] add r1, r0, #0x0 - bl FUN_020B0250 + bl NNS_G2dDrawSpriteFast ldr r0, _02014214 ; =0x04000448 mov r1, #0x1 str r1, [r0, #0x0] @@ -868,14 +868,14 @@ _0201424C: ldr r0, [r5, #0x4] mov r1, #0x0 add r0, r0, #0x4 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation add r1, r0, #0x0 add r0, r7, #0x0 bl FUN_02013F14 ldr r0, [r5, #0x8] mov r1, #0x0 add r0, r0, #0x4 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation add r1, r0, #0x0 add r0, r7, #0x0 bl FUN_02013F18 diff --git a/arm9/asm/unk_02016B94.s b/arm9/asm/unk_02016B94.s index 0a68dea2..5d6f0073 100644 --- a/arm9/asm/unk_02016B94.s +++ b/arm9/asm/unk_02016B94.s @@ -8797,7 +8797,7 @@ FUN_0201AB28: ; 0x0201AB28 bl FUN_020161A4 add r1, sp, #0x0 str r0, [r4, #0x0] - bl FUN_020B0030 + bl NNS_G2dGetUnpackedBGCharacterData ldr r0, [sp, #0x0] add sp, #0x4 pop {r3-r4, pc} @@ -8812,7 +8812,7 @@ FUN_0201AB44: ; 0x0201AB44 bl FUN_020161A4 add r1, sp, #0x0 str r0, [r4, #0x0] - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r0, [sp, #0x0] add sp, #0x4 pop {r3-r4, pc} diff --git a/arm9/asm/unk_0201B1A8.s b/arm9/asm/unk_0201B1A8.s index 05245bc6..28308d53 100644 --- a/arm9/asm/unk_0201B1A8.s +++ b/arm9/asm/unk_0201B1A8.s @@ -1,12 +1,12 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021CED98 - .extern UNK_021CEDD4 - .extern UNK_021064C0 - .extern UNK_021064B8 - .extern UNK_021064C4 - .extern UNK_021064BC + .extern NNS_G3dGlb + .extern NNS_G3dGlb + .extern NNS_GfdDefaultFuncAllocPlttVram + .extern NNS_GfdDefaultFuncAllocTexVram + .extern NNS_GfdDefaultFuncFreePlttVram + .extern NNS_GfdDefaultFuncFreeTexVram .section .bss @@ -23,7 +23,7 @@ FUN_0201B1A8: ; 0x0201B1A8 add r4, r2, #0x0 bl FUN_020161A4 str r0, [r5, #0x0] - bl FUN_020BC0FC + bl NNS_G3dGetTex cmp r0, #0x0 beq _0201B1D2 bl FUN_0201B254 @@ -33,10 +33,10 @@ FUN_0201B1A8: ; 0x0201B1A8 ldr r1, [r0, #0x8] bl DC_FlushRange ldr r0, [r5, #0x0] - bl FUN_020BB59C + bl NNS_G3dResDefaultSetup _0201B1D2: ldr r0, [r5, #0x0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r1, r0, r1 ldr r1, [r1, #0xc] @@ -50,7 +50,7 @@ FUN_0201B1E4: ; 0x0201B1E4 add r5, r1, #0x0 add r4, r0, #0x0 ldr r0, [r5, #0x0] - bl FUN_020BC0FC + bl NNS_G3dGetTex cmp r0, #0x0 beq _0201B20A bl FUN_0201B254 @@ -60,10 +60,10 @@ FUN_0201B1E4: ; 0x0201B1E4 ldr r1, [r0, #0x8] bl DC_FlushRange ldr r0, [r5, #0x0] - bl FUN_020BB59C + bl NNS_G3dResDefaultSetup _0201B20A: ldr r0, [r5, #0x0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r1, r0, r1 ldr r1, [r1, #0xc] @@ -81,7 +81,7 @@ FUN_0201B21C: ; 0x0201B21C bl FUN_0201B1A8 ldr r1, [r4, #0x0] add r0, r5, #0x0 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit pop {r3-r5, pc} thumb_func_start FUN_0201B234 @@ -98,7 +98,7 @@ FUN_0201B234: ; 0x0201B234 _0201B24A: ldr r1, [r4, #0x0] add r0, r5, #0x0 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit pop {r3-r5, pc} thumb_func_start FUN_0201B254 @@ -125,24 +125,24 @@ FUN_0201B26C: ; 0x0201B26C add r0, r1, #0x0 add r4, r2, #0x0 add r6, r3, #0x0 - bl FUN_020B8474 - ldr r1, _0201B2A0 ; =UNK_021CEDD4 + bl NNS_G3dGlbSetBaseTrans + ldr r1, _0201B2A0 ; =NNS_G3dGlb + 0xBC add r0, r4, #0x0 bl MI_Copy36B - ldr r1, _0201B2A4 ; =UNK_021CED98 + ldr r1, _0201B2A4 ; =NNS_G3dGlb + 0x80 mov r0, #0xa4 ldr r2, [r1, #0x7c] bic r2, r0 add r0, r6, #0x0 str r2, [r1, #0x7c] - bl FUN_020B844C - bl FUN_020B849C + bl NNS_G3dGlbSetBaseScale + bl NNS_G3dGlbFlushP add r0, r5, #0x0 - bl FUN_020BAC98 + bl NNS_G3dDraw pop {r4-r6, pc} nop -_0201B2A0: .word UNK_021CEDD4 -_0201B2A4: .word UNK_021CED98 +_0201B2A0: .word NNS_G3dGlb + 0xBC +_0201B2A4: .word NNS_G3dGlb + 0x80 thumb_func_start FUN_0201B2A8 FUN_0201B2A8: ; 0x0201B2A8 @@ -151,28 +151,28 @@ FUN_0201B2A8: ; 0x0201B2A8 add r0, r1, #0x0 add r4, r2, #0x0 add r6, r3, #0x0 - bl FUN_020B8474 - ldr r1, _0201B2E4 ; =UNK_021CEDD4 + bl NNS_G3dGlbSetBaseTrans + ldr r1, _0201B2E4 ; =NNS_G3dGlb + 0xBC add r0, r4, #0x0 bl MI_Copy36B - ldr r1, _0201B2E8 ; =UNK_021CED98 + ldr r1, _0201B2E8 ; =NNS_G3dGlb + 0x80 mov r0, #0xa4 ldr r2, [r1, #0x7c] bic r2, r0 str r2, [r1, #0x7c] add r0, r6, #0x0 - bl FUN_020B844C - bl FUN_020B849C + bl NNS_G3dGlbSetBaseScale + bl NNS_G3dGlbFlushP mov r1, #0x0 ldr r0, [r5, #0x4] add r2, r1, #0x0 mov r3, #0x1 - bl FUN_020BAFB8 - bl FUN_020BB394 + bl NNS_G3dDraw1Mat1Shp + bl NNS_G3dGeFlushBuffer pop {r4-r6, pc} .balign 4 -_0201B2E4: .word UNK_021CEDD4 -_0201B2E8: .word UNK_021CED98 +_0201B2E4: .word NNS_G3dGlb + 0xBC +_0201B2E8: .word NNS_G3dGlb + 0x80 thumb_func_start FUN_0201B2EC FUN_0201B2EC: ; 0x0201B2EC @@ -269,11 +269,11 @@ _0201B3A4: .word FUN_020223BC FUN_0201B3A8: ; 0x0201B3A8 push {r4, lr} add r4, r1, #0x0 - bl FUN_020BC13C + bl NNS_G3dGetMdlSet cmp r4, #0x0 beq _0201B3BE add r1, r4, #0x0 - bl FUN_020B7790 + bl NNS_G3dBindMdlSet mov r0, #0x1 pop {r4, pc} _0201B3BE: @@ -299,17 +299,17 @@ _0201B3D2: str r1, [sp, #0x0] cmp r5, #0x0 beq _0201B4D0 - bl FUN_020B7E1C + bl NNS_G3dTexGetRequiredSize add r6, r0, #0x0 add r0, r5, #0x0 - bl FUN_020B7E10 + bl NNS_G3dTex4x4GetRequiredSize add r4, r0, #0x0 add r0, r5, #0x0 - bl FUN_020B7CE4 + bl NNS_G3dPlttGetRequiredSize str r0, [sp, #0xc] cmp r6, #0x0 beq _0201B412 - ldr r3, _0201B4D8 ; =UNK_021064B8 + ldr r3, _0201B4D8 ; =NNS_GfdDefaultFuncAllocTexVram mov r1, #0x0 ldr r3, [r3, #0x0] add r0, r6, #0x0 @@ -325,7 +325,7 @@ _0201B412: _0201B414: cmp r4, #0x0 beq _0201B42E - ldr r3, _0201B4D8 ; =UNK_021064B8 + ldr r3, _0201B4D8 ; =NNS_GfdDefaultFuncAllocTexVram add r0, r4, #0x0 ldr r3, [r3, #0x0] mov r1, #0x1 @@ -342,7 +342,7 @@ _0201B430: ldr r0, [sp, #0xc] cmp r0, #0x0 beq _0201B450 - ldr r3, _0201B4DC ; =UNK_021064C0 + ldr r3, _0201B4DC ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0x2 ldrh r2, [r5, #0x20] lsl r1, r1, #0xe @@ -361,7 +361,7 @@ _0201B452: ldr r0, [sp, #0x8] cmp r0, #0x0 bne _0201B46E - ldr r1, _0201B4E0 ; =UNK_021064BC + ldr r1, _0201B4E0 ; =NNS_GfdDefaultFuncFreeTexVram add r0, r7, #0x0 ldr r1, [r1, #0x0] blx r1 @@ -376,7 +376,7 @@ _0201B46E: ldr r0, [sp, #0x4] cmp r0, #0x0 bne _0201B48A - ldr r1, _0201B4E0 ; =UNK_021064BC + ldr r1, _0201B4E0 ; =NNS_GfdDefaultFuncFreeTexVram add r0, r6, #0x0 ldr r1, [r1, #0x0] blx r1 @@ -391,7 +391,7 @@ _0201B48A: ldr r0, [sp, #0x0] cmp r0, #0x0 bne _0201B4A6 - ldr r1, _0201B4E4 ; =UNK_021064C4 + ldr r1, _0201B4E4 ; =NNS_GfdDefaultFuncFreePlttVram add r0, r4, #0x0 ldr r1, [r1, #0x0] blx r1 @@ -406,25 +406,25 @@ _0201B4A6: add r0, r5, #0x0 add r1, r7, #0x0 add r2, r6, #0x0 - bl FUN_020B7DFC + bl NNS_G3dTexSetTexKey add r0, r5, #0x0 add r1, r4, #0x0 - bl FUN_020B7CDC + bl NNS_G3dPlttSetPlttKey ldr r1, [r5, #0x4] add r0, r5, #0x0 bl DC_FlushRange add r0, r5, #0x0 mov r1, #0x1 - bl FUN_020B7D28 + bl NNS_G3dTexLoad add r0, r5, #0x0 mov r1, #0x1 - bl FUN_020B7C78 + bl NNS_G3dPlttLoad _0201B4D0: mov r0, #0x1 add sp, #0x10 pop {r3-r7, pc} nop -_0201B4D8: .word UNK_021064B8 -_0201B4DC: .word UNK_021064C0 -_0201B4E0: .word UNK_021064BC -_0201B4E4: .word UNK_021064C4 +_0201B4D8: .word NNS_GfdDefaultFuncAllocTexVram +_0201B4DC: .word NNS_GfdDefaultFuncAllocPlttVram +_0201B4E0: .word NNS_GfdDefaultFuncFreeTexVram +_0201B4E4: .word NNS_GfdDefaultFuncFreePlttVram diff --git a/arm9/asm/unk_0201B6D0.s b/arm9/asm/unk_0201B6D0.s index b65b3870..1d795e17 100644 --- a/arm9/asm/unk_0201B6D0.s +++ b/arm9/asm/unk_0201B6D0.s @@ -1,8 +1,8 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021CEDD4 - .extern UNK_021CED98 + .extern NNS_G3dGlb + .extern NNS_G3dGlb .text @@ -38,22 +38,22 @@ FUN_0201B6D0: ; 0x0201B6D0 ldrsh r3, [r4, r3] bl FUN_0201B808 add r0, sp, #0x1c - bl FUN_020B8474 - ldr r1, _0201B764 ; =UNK_021CEDD4 + bl NNS_G3dGlbSetBaseTrans + ldr r1, _0201B764 ; =NNS_G3dGlb + 0xBC add r0, r5, #0x0 bl MI_Copy36B - ldr r1, _0201B768 ; =UNK_021CED98 + ldr r1, _0201B768 ; =NNS_G3dGlb + 0x80 mov r0, #0xa4 ldr r2, [r1, #0x7c] bic r2, r0 add r0, r7, #0x0 str r2, [r1, #0x7c] - bl FUN_020B844C - bl FUN_020B849C + bl NNS_G3dGlbSetBaseScale + bl NNS_G3dGlbFlushP mov r1, #0x0 mov r0, #0x11 add r2, r1, #0x0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldr r0, [r4, #0x24] add r1, sp, #0x10 str r0, [sp, #0x10] @@ -61,7 +61,7 @@ FUN_0201B6D0: ; 0x0201B6D0 str r0, [sp, #0x18] mov r0, #0x1b mov r2, #0x3 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r0, sp, #0x28 bl FUN_0201B82C add r4, r0, #0x0 @@ -69,13 +69,13 @@ FUN_0201B6D0: ; 0x0201B6D0 mov r0, #0x12 add r1, sp, #0xc str r2, [sp, #0xc] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r0, r4, #0x0 add sp, #0x34 pop {r4-r7, pc} .balign 4 -_0201B764: .word UNK_021CEDD4 -_0201B768: .word UNK_021CED98 +_0201B764: .word NNS_G3dGlb + 0xBC +_0201B768: .word NNS_G3dGlb + 0x80 thumb_func_start FUN_0201B76C FUN_0201B76C: ; 0x0201B76C @@ -97,12 +97,12 @@ FUN_0201B76C: ; 0x0201B76C add r2, r0, #0x0 bl FUN_0201B808 add r0, r5, #0x0 - bl FUN_020B8474 - bl FUN_020B849C + bl NNS_G3dGlbSetBaseTrans + bl NNS_G3dGlbFlushP mov r1, #0x0 mov r0, #0x11 add r2, r1, #0x0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N ldr r0, [r4, #0x10] lsl r2, r0, #0xc ldr r0, [r4, #0xc] @@ -115,7 +115,7 @@ FUN_0201B76C: ; 0x0201B76C mov r0, #0x1b add r1, sp, #0x10 mov r2, #0x3 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r0, sp, #0x1c bl FUN_0201B82C add r4, r0, #0x0 @@ -123,7 +123,7 @@ FUN_0201B76C: ; 0x0201B76C mov r0, #0x12 add r1, sp, #0xc str r2, [sp, #0xc] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N add r0, r4, #0x0 add sp, #0x28 pop {r3-r5, pc} @@ -183,22 +183,22 @@ FUN_0201B82C: ; 0x0201B82C mov r0, #0x29 add r1, sp, #0x4 str r2, [sp, #0x8] - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N mov r0, #0x0 str r0, [sp, #0x0] mov r0, #0x40 add r1, sp, #0x0 mov r2, #0x1 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N mov r1, #0x0 mov r0, #0x41 add r2, r1, #0x0 - bl FUN_020BB1C0 + bl NNS_G3dGeBufferOP_N mov r0, #0x70 add r1, r4, #0x0 mov r2, #0x3 - bl FUN_020BB1C0 - bl FUN_020BB394 + bl NNS_G3dGeBufferOP_N + bl NNS_G3dGeFlushBuffer add r4, sp, #0x8 _0201B86A: add r0, r4, #0x0 diff --git a/arm9/asm/unk_0201C24C.s b/arm9/asm/unk_0201C24C.s index 36817113..9e5cd227 100644 --- a/arm9/asm/unk_0201C24C.s +++ b/arm9/asm/unk_0201C24C.s @@ -43,7 +43,7 @@ _0201C272: ldr r1, [r1, #0x0] ldr r0, [r1, #0x8] ldr r1, [r1, #0x0] - bl FUN_020AEF1C + bl NNS_GfdInitVramTransferManager pop {r3-r5, pc} nop _0201C298: .word UNK_021C5934 @@ -102,7 +102,7 @@ _0201C2FA: add r1, r4, #0x0 add r2, r6, #0x0 add r3, r7, #0x0 - bl FUN_020AEE40 + bl NNS_GfdRegisterNewVramTransferTask pop {r3-r7, pc} .balign 4 _0201C308: .word UNK_021C5934 @@ -114,7 +114,7 @@ FUN_0201C30C: ; 0x0201C30C ldr r0, [r0, #0x0] cmp r0, #0x0 beq _0201C322 - bl FUN_020AEEB8 + bl NNS_GfdDoVramTransfer ldr r0, _0201C324 ; =UNK_021C5934 mov r1, #0x0 ldr r0, [r0, #0x0] @@ -135,7 +135,7 @@ FUN_0201C328: ; 0x0201C328 ldr r2, _0201C344 ; =FUN_0201C358 add r1, r4, #0x0 add r5, r0, #0x0 - bl FUN_020B4568 + bl NNS_G2dInitCellTransferStateManager add r0, r5, #0x0 pop {r3-r5, pc} .balign 4 @@ -143,10 +143,10 @@ _0201C344: .word FUN_0201C358 thumb_func_start FUN_0201C348 FUN_0201C348: ; 0x0201C348 - ldr r3, _0201C34C ; =FUN_020B442C + ldr r3, _0201C34C ; =NNS_G2dUpdateCellTransferStateManager bx r3 .balign 4 -_0201C34C: .word FUN_020B442C +_0201C34C: .word NNS_G2dUpdateCellTransferStateManager thumb_func_start FUN_0201C350 FUN_0201C350: ; 0x0201C350 diff --git a/arm9/asm/unk_0201C360.s b/arm9/asm/unk_0201C360.s index 5f8ccb52..078b3ee3 100644 --- a/arm9/asm/unk_0201C360.s +++ b/arm9/asm/unk_0201C360.s @@ -321,7 +321,7 @@ FUN_0201C578: ; 0x0201C578 add r0, r4, #0x0 add r0, #0x3c add r1, sp, #0x0 - bl FUN_020BC2A0 + bl NNS_G3dGetResDataByName add r1, r0, #0x0 bne _0201C598 add sp, #0x10 @@ -397,7 +397,7 @@ FUN_0201C5FC: ; 0x0201C5FC add r0, r4, #0x0 add r0, #0x3c add r1, sp, #0x0 - bl FUN_020BC2A0 + bl NNS_G3dGetResDataByName add r1, r0, #0x0 add r0, r4, #0x0 bl FUN_0201C5A4 diff --git a/arm9/asm/unk_0201D040.s b/arm9/asm/unk_0201D040.s index ba8c7b75..ab0c07c9 100644 --- a/arm9/asm/unk_0201D040.s +++ b/arm9/asm/unk_0201D040.s @@ -858,11 +858,11 @@ FUN_0201D690: ; 0x0201D690 add r1, #0x3c strb r2, [r1, #0x0] str r2, [r0, #0x40] - ldr r3, _0201D6B0 ; =FUN_020B1A24 + ldr r3, _0201D6B0 ; =NNS_G2dInitImageProxy add r0, #0x10 bx r3 nop -_0201D6B0: .word FUN_020B1A24 +_0201D6B0: .word NNS_G2dInitImageProxy thumb_func_start FUN_0201D6B4 FUN_0201D6B4: ; 0x0201D6B4 @@ -1277,7 +1277,7 @@ FUN_0201D9B0: ; 0x0201D9B0 push {r4, lr} add r4, r0, #0x0 add r0, #0x10 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy ldr r1, [r4, #0x4] cmp r1, #0x3 beq _0201D9C8 @@ -1325,13 +1325,13 @@ _0201DA04: add r5, #0x10 add r2, r4, #0x0 add r3, r5, #0x0 - bl FUN_020B1528 + bl NNS_G2dLoadImage2DMapping b _0201DA20 _0201DA16: add r5, #0x10 add r2, r4, #0x0 add r3, r5, #0x0 - bl FUN_020B1768 + bl NNS_G2dLoadImage1DMapping _0201DA20: cmp r4, #0x1 bne _0201DA2C @@ -1351,7 +1351,7 @@ FUN_0201DA38: ; 0x0201DA38 push {r4, lr} add r4, r0, #0x0 add r0, #0x10 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy ldr r1, [r4, #0x4] cmp r1, #0x3 beq _0201DA50 @@ -1394,7 +1394,7 @@ _0201DA88: add r5, #0x10 add r2, r4, #0x0 add r3, r5, #0x0 - bl FUN_020B1340 + bl NNS_G2dLoadImageVramTransfer cmp r4, #0x1 bne _0201DAA0 mov r0, #0x1 @@ -1932,7 +1932,7 @@ FUN_0201DE4C: ; 0x0201DE4C beq _0201DE8A add r0, r4, #0x0 add r0, #0x10 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation ldr r1, _0201DECC ; =UNK_021C5994 ldr r2, [r1, #0x0] ldr r1, [r2, #0x1c] @@ -1958,7 +1958,7 @@ _0201DE8A: beq _0201DEC4 add r0, r4, #0x0 add r0, #0x10 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation ldr r1, _0201DECC ; =UNK_021C5994 ldr r2, [r1, #0x0] ldr r1, [r2, #0x20] diff --git a/arm9/asm/unk_0201E00C.s b/arm9/asm/unk_0201E00C.s index 744cbe95..ae49b439 100644 --- a/arm9/asm/unk_0201E00C.s +++ b/arm9/asm/unk_0201E00C.s @@ -378,7 +378,7 @@ _0201E2A4: _0201E2A6: cmp r4, #0x0 beq _0201E2B6 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation add r1, r4, #0x0 bl _u32_div_f pop {r4, pc} @@ -434,7 +434,7 @@ FUN_0201E2F8: ; 0x0201E2F8 str r0, [r4, #0xc] add r4, #0x10 add r0, r4, #0x0 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy pop {r4, pc} thumb_func_start FUN_0201E314 @@ -675,7 +675,7 @@ FUN_0201E4BC: ; 0x0201E4BC push {r4, lr} add r4, r0, #0x0 add r0, #0x10 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy ldr r0, [r4, #0x4] mov r2, #0x1 tst r0, r2 @@ -684,7 +684,7 @@ FUN_0201E4BC: ; 0x0201E4BC ldr r0, [r4, #0x0] ldr r1, [r4, #0x24] add r3, #0x10 - bl FUN_020B1240 + bl NNS_G2dLoadPalette _0201E4DA: ldr r0, [r4, #0x4] mov r2, #0x2 @@ -694,7 +694,7 @@ _0201E4DA: ldr r1, [r4, #0x28] add r4, #0x10 add r3, r4, #0x0 - bl FUN_020B1240 + bl NNS_G2dLoadPalette _0201E4EE: pop {r4, pc} diff --git a/arm9/asm/unk_0201E7D8.s b/arm9/asm/unk_0201E7D8.s index 4f183c7e..32f01a13 100644 --- a/arm9/asm/unk_0201E7D8.s +++ b/arm9/asm/unk_0201E7D8.s @@ -1,13 +1,13 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021CED98 - .extern UNK_021CEF64 - .extern UNK_021CED20 + .extern NNS_G3dGlb + .extern NNS_G3dGlb + .extern NNS_G3dGlb .extern FX_SinCosTable_ - .extern UNK_021CEF58 - .extern UNK_021CEF70 - .extern UNK_021CED64 + .extern NNS_G3dGlb + .extern NNS_G3dGlb + .extern NNS_G3dGlb .section .data @@ -576,7 +576,7 @@ FUN_0201EBA4: ; 0x0201EBA4 str r0, [r3, #0x0] _0201EBEE: ldr r0, _0201EC40 ; =UNK_021C59A4 - ldr r5, _0201EC44 ; =UNK_021CEF58 + ldr r5, _0201EC44 ; =NNS_G3dGlb + 0x240 ldr r4, [r0, #0x0] add r3, r4, #0x0 add r2, r4, #0x0 @@ -588,26 +588,26 @@ _0201EBEE: add r2, #0x2c str r0, [r5, #0x0] add r6, r2, #0x0 - ldr r5, _0201EC48 ; =UNK_021CEF64 + ldr r5, _0201EC48 ; =NNS_G3dGlb + 0x24C ldmia r6!, {r0-r1} stmia r5!, {r0-r1} ldr r0, [r6, #0x0] add r3, #0x20 str r0, [r5, #0x0] add r6, r3, #0x0 - ldr r5, _0201EC4C ; =UNK_021CEF70 + ldr r5, _0201EC4C ; =NNS_G3dGlb + 0x258 ldmia r6!, {r0-r1} stmia r5!, {r0-r1} ldr r0, [r6, #0x0] add r1, r2, #0x0 str r0, [r5, #0x0] - ldr r0, _0201EC50 ; =UNK_021CED64 + ldr r0, _0201EC50 ; =NNS_G3dGlb + 0x4C add r2, r3, #0x0 str r0, [sp, #0x0] add r0, r4, #0x0 mov r3, #0x0 bl G3i_LookAt_ - ldr r1, _0201EC54 ; =UNK_021CED98 + ldr r1, _0201EC54 ; =NNS_G3dGlb + 0x80 mov r0, #0xe8 ldr r2, [r1, #0x7c] bic r2, r0 @@ -617,11 +617,11 @@ _0201EC3A: pop {r3-r6, pc} nop _0201EC40: .word UNK_021C59A4 -_0201EC44: .word UNK_021CEF58 -_0201EC48: .word UNK_021CEF64 -_0201EC4C: .word UNK_021CEF70 -_0201EC50: .word UNK_021CED64 -_0201EC54: .word UNK_021CED98 +_0201EC44: .word NNS_G3dGlb + 0x240 +_0201EC48: .word NNS_G3dGlb + 0x24C +_0201EC4C: .word NNS_G3dGlb + 0x258 +_0201EC50: .word NNS_G3dGlb + 0x4C +_0201EC54: .word NNS_G3dGlb + 0x80 thumb_func_start FUN_0201EC58 FUN_0201EC58: ; 0x0201EC58 @@ -882,14 +882,14 @@ FUN_0201EE2C: ; 0x0201EE2C str r0, [sp, #0x4] mov r0, #0x0 str r0, [sp, #0x8] - ldr r0, _0201EEE4 ; =UNK_021CED20 + ldr r0, _0201EEE4 ; =NNS_G3dGlb + 0x8 str r0, [sp, #0xc] ldr r0, [r5, #0x0] ldr r1, [r5, #0x4] ldr r2, [r5, #0x8] ldr r3, [r5, #0xc] bl G3i_PerspectiveW_ - ldr r1, _0201EEE8 ; =UNK_021CED98 + ldr r1, _0201EEE8 ; =NNS_G3dGlb + 0x80 mov r0, #0x50 ldr r2, [r1, #0x7c] add r5, #0x44 @@ -939,12 +939,12 @@ _0201EE6C: lsl r0, r6, #0x1 str r0, [sp, #0x8] str r2, [sp, #0xc] - ldr r0, _0201EEE4 ; =UNK_021CED20 + ldr r0, _0201EEE4 ; =NNS_G3dGlb + 0x8 neg r2, r3 str r0, [sp, #0x10] add r0, r4, #0x0 bl G3i_OrthoW_ - ldr r1, _0201EEE8 ; =UNK_021CED98 + ldr r1, _0201EEE8 ; =NNS_G3dGlb + 0x80 mov r0, #0x50 ldr r2, [r1, #0x7c] add r5, #0x44 @@ -958,8 +958,8 @@ _0201EE6C: add sp, #0x14 pop {r3-r6, pc} nop -_0201EEE4: .word UNK_021CED20 -_0201EEE8: .word UNK_021CED98 +_0201EEE4: .word NNS_G3dGlb + 0x8 +_0201EEE8: .word NNS_G3dGlb + 0x80 _0201EEEC: .word UNK_02105BB8 thumb_func_start FUN_0201EEF0 diff --git a/arm9/asm/unk_0201F06C.s b/arm9/asm/unk_0201F06C.s index c032ba64..84b32634 100644 --- a/arm9/asm/unk_0201F06C.s +++ b/arm9/asm/unk_0201F06C.s @@ -2,10 +2,10 @@ .include "global.inc" .extern FX_SinCosTable_ - .extern UNK_021064C0 - .extern UNK_021064B8 - .extern UNK_021064BC - .extern UNK_021064C4 + .extern NNS_GfdDefaultFuncAllocPlttVram + .extern NNS_GfdDefaultFuncAllocTexVram + .extern NNS_GfdDefaultFuncFreeTexVram + .extern NNS_GfdDefaultFuncFreePlttVram .section .rodata @@ -569,18 +569,18 @@ FUN_0201F454: ; 0x0201F454 add r4, r1, #0x0 add r6, r2, #0x0 add r7, r3, #0x0 - bl FUN_020B7E1C + bl NNS_G3dTexGetRequiredSize str r0, [sp, #0x8] add r0, r5, #0x0 - bl FUN_020B7E10 + bl NNS_G3dTex4x4GetRequiredSize str r0, [sp, #0x4] add r0, r5, #0x0 - bl FUN_020B7CE4 + bl NNS_G3dPlttGetRequiredSize str r0, [sp, #0x0] ldr r0, [sp, #0x8] cmp r0, #0x0 beq _0201F492 - ldr r3, _0201F4E4 ; =UNK_021064B8 + ldr r3, _0201F4E4 ; =NNS_GfdDefaultFuncAllocTexVram mov r1, #0x0 ldr r3, [r3, #0x0] add r2, r1, #0x0 @@ -597,7 +597,7 @@ _0201F496: ldr r0, [sp, #0x4] cmp r0, #0x0 beq _0201F4B2 - ldr r3, _0201F4E4 ; =UNK_021064B8 + ldr r3, _0201F4E4 ; =NNS_GfdDefaultFuncAllocTexVram mov r1, #0x1 ldr r3, [r3, #0x0] mov r2, #0x0 @@ -614,7 +614,7 @@ _0201F4B6: ldr r0, [sp, #0x0] cmp r0, #0x0 beq _0201F4DA - ldr r3, _0201F4E8 ; =UNK_021064C0 + ldr r3, _0201F4E8 ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0x2 ldrh r2, [r5, #0x20] lsl r1, r1, #0xe @@ -635,17 +635,17 @@ _0201F4DE: add sp, #0xc pop {r4-r7, pc} nop -_0201F4E4: .word UNK_021064B8 -_0201F4E8: .word UNK_021064C0 +_0201F4E4: .word NNS_GfdDefaultFuncAllocTexVram +_0201F4E8: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start FUN_0201F4EC FUN_0201F4EC: ; 0x0201F4EC push {r3-r5, lr} add r5, r0, #0x0 add r4, r3, #0x0 - bl FUN_020B7CF0 + bl NNS_G3dTexReleaseTexKey add r0, r5, #0x0 - bl FUN_020B7C58 + bl NNS_G3dPlttReleasePlttKey str r0, [r4, #0x0] pop {r3-r5, pc} @@ -656,14 +656,14 @@ FUN_0201F500: ; 0x0201F500 ldr r1, [r2, #0x0] ldr r2, [r3, #0x0] add r5, r0, #0x0 - bl FUN_020B7DFC + bl NNS_G3dTexSetTexKey ldr r1, [sp, #0x10] add r0, r5, #0x0 ldr r1, [r1, #0x0] - bl FUN_020B7CDC + bl NNS_G3dPlttSetPlttKey add r0, r4, #0x0 add r1, r5, #0x0 - bl FUN_020B7790 + bl NNS_G3dBindMdlSet pop {r3-r5, pc} .balign 4 @@ -675,28 +675,28 @@ FUN_0201F524: ; 0x0201F524 add r4, r2, #0x0 cmp r0, #0x0 beq _0201F536 - ldr r1, _0201F550 ; =UNK_021064BC + ldr r1, _0201F550 ; =NNS_GfdDefaultFuncFreeTexVram ldr r1, [r1, #0x0] blx r1 _0201F536: ldr r0, [r5, #0x0] cmp r0, #0x0 beq _0201F542 - ldr r1, _0201F550 ; =UNK_021064BC + ldr r1, _0201F550 ; =NNS_GfdDefaultFuncFreeTexVram ldr r1, [r1, #0x0] blx r1 _0201F542: ldr r0, [r4, #0x0] cmp r0, #0x0 beq _0201F54E - ldr r1, _0201F554 ; =UNK_021064C4 + ldr r1, _0201F554 ; =NNS_GfdDefaultFuncFreePlttVram ldr r1, [r1, #0x0] blx r1 _0201F54E: pop {r3-r5, pc} .balign 4 -_0201F550: .word UNK_021064BC -_0201F554: .word UNK_021064C4 +_0201F550: .word NNS_GfdDefaultFuncFreeTexVram +_0201F554: .word NNS_GfdDefaultFuncFreePlttVram thumb_func_start FUN_0201F558 FUN_0201F558: ; 0x0201F558 @@ -713,22 +713,22 @@ _0201F568: mov r0, #0x0 pop {r3-r7, pc} _0201F56E: - bl FUN_020B7E1C + bl NNS_G3dTexGetRequiredSize str r0, [sp, #0x0] add r0, r4, #0x0 - bl FUN_020B7E10 + bl NNS_G3dTex4x4GetRequiredSize str r0, [sp, #0x4] add r0, r4, #0x0 - bl FUN_020B7CE4 + bl NNS_G3dPlttGetRequiredSize add r4, r0, #0x0 add r0, r5, #0x0 - bl FUN_020B7E1C + bl NNS_G3dTexGetRequiredSize add r6, r0, #0x0 add r0, r5, #0x0 - bl FUN_020B7E10 + bl NNS_G3dTex4x4GetRequiredSize add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_020B7CE4 + bl NNS_G3dPlttGetRequiredSize ldr r1, [sp, #0x0] cmp r1, r6 bne _0201F5AA @@ -780,7 +780,7 @@ FUN_0201F5D4: ; 0x0201F5D4 add r0, r5, #0x0 ldr r1, [r5, #0x7c] add r0, #0x24 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit add r0, r5, #0x0 add r0, #0xa8 ldrb r0, [r0, #0x0] @@ -882,7 +882,7 @@ FUN_0201F69C: ; 0x0201F69C add r0, r5, #0x0 ldr r1, [r5, #0x7c] add r0, #0x24 - bl FUN_020B80B4 + bl NNS_G3dRenderObjInit add r0, r4, #0x0 bl FUN_0201FBCC add r5, #0x84 @@ -1602,7 +1602,7 @@ FUN_0201FB9C: ; 0x0201FB9C add r5, r2, #0x0 bl FUN_0201FC90 add r7, r0, #0x0 - bl FUN_020BC13C + bl NNS_G3dGetMdlSet add r4, r0, #0x0 ldrh r0, [r4, #0xe] add r0, r4, r0 @@ -1612,7 +1612,7 @@ FUN_0201FB9C: ; 0x0201FB9C cmp r5, #0x0 beq _0201FBC6 add r0, r7, #0x0 - bl FUN_020BC0FC + bl NNS_G3dGetTex str r0, [r5, #0x0] _0201FBC6: add r0, r4, #0x0 @@ -1724,7 +1724,7 @@ FUN_0201FC70: ; 0x0201FC70 sub sp, #0xc add r4, r0, #0x0 ldr r0, [r4, #0x78] - bl FUN_020B772C + bl NNS_G3dReleaseMdlSet add r4, #0x80 ldr r0, [r4, #0x0] add r1, sp, #0x4 @@ -1828,7 +1828,7 @@ _0201FD0C: ldr r0, [r4, r1] add r1, r1, #0x4 add r1, r4, r1 - bl thunk_FUN_020afda0_2 + bl NNS_G2dGetUnpackedAnimBank mov r0, #0x12 mov r1, #0x1 lsl r0, r0, #0x4 @@ -2002,10 +2002,10 @@ FUN_0201FE6C: ; 0x0201FE6C bl memset add r0, r4, #0x0 add r0, #0xb4 - bl FUN_020B1A24 + bl NNS_G2dInitImageProxy add r0, r4, #0x0 add r0, #0xd8 - bl FUN_020B19DC + bl NNS_G2dInitImagePaletteProxy mov r0, #0x0 str r0, [r4, #0x30] pop {r4, pc} @@ -2072,7 +2072,7 @@ _0201FEA6: add r1, r4, #0x0 add r1, #0x26 ldrb r1, [r1, #0x0] - bl FUN_020B502C + bl NNS_G2dSetRndCoreAffineOverwriteMode add r0, r4, #0x0 add r0, #0x27 ldrb r2, [r0, #0x0] @@ -2084,7 +2084,7 @@ _0201FEA6: mov r3, #0x2 and r1, r2 and r2, r3 - bl FUN_020B4F38 + bl NNS_G2dSetRndCoreFlipMode add r0, r4, #0x0 mov r2, #0x1 add r0, #0x34 @@ -2193,13 +2193,13 @@ _0201FFE4: ldr r1, [r1, #0x0] add r0, #0xb4 add r4, #0x40 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation mov r1, #0x0 mvn r1, r1 cmp r0, r1 beq _0202000E ldr r0, [r4, #0x5c] - bl FUN_020B4358 + bl NNS_G2dFreeCellTransferStateHandle _0202000E: add r0, r5, #0x0 add r0, #0xec @@ -2409,11 +2409,11 @@ _0202014A: lsl r1, r1, #0x10 ldr r0, [r4, #0x4] lsr r1, r1, #0x10 - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx add r1, r0, #0x0 add r0, r4, #0x0 add r0, #0x8 - bl FUN_020B1EE4 + bl NNS_G2dSetCellAnimationSequence mov r0, #0x1 str r0, [r4, #0x10] pop {r4, pc} @@ -2422,11 +2422,11 @@ _02020168: add r4, #0x40 ldr r0, [r4, #0x6c] add r1, r3, #0x0 - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx add r1, r0, #0x0 add r0, r4, #0x0 add r0, #0x8 - bl FUN_020B242C + bl NNS_G2dSetAnimSequenceToMCAnimation mov r0, #0x1 str r0, [r4, #0x10] pop {r4, pc} @@ -2459,7 +2459,7 @@ _020201A8: add r5, #0x40 add r0, r5, #0x0 add r0, #0x8 - bl FUN_020B0448 + bl NNS_G2dResetAnimCtrlState mov r0, #0x1 str r0, [r5, #0x10] add r0, r4, #0x0 @@ -2471,7 +2471,7 @@ _020201C2: add r5, #0x40 add r0, r5, #0x0 add r0, #0x8 - bl FUN_020B0448 + bl NNS_G2dResetAnimCtrlState mov r0, #0x1 str r0, [r5, #0x10] add r0, r4, #0x0 @@ -2499,12 +2499,12 @@ FUN_020201E4: ; 0x020201E4 _020201F4: add r0, #0x40 add r0, #0x8 - bl FUN_020B1EC4 + bl NNS_G2dTickCellAnimation pop {r3, pc} _020201FE: add r0, #0x40 add r0, #0x8 - bl FUN_020B224C + bl NNS_G2dTickMCAnimation pop {r3, pc} thumb_func_start FUN_02020208 @@ -2520,22 +2520,22 @@ FUN_02020208: ; 0x02020208 _02020218: add r0, #0x40 add r0, #0x8 - bl FUN_020B1EA4 + bl NNS_G2dSetCellAnimationCurrentFrame pop {r3, pc} _02020222: add r0, #0x40 add r0, #0x8 - bl FUN_020B2194 + bl NNS_G2dSetMCAnimationCurrentFrame pop {r3, pc} thumb_func_start FUN_0202022C FUN_0202022C: ; 0x0202022C - ldr r3, _02020234 ; =FUN_020B04FC + ldr r3, _02020234 ; =NNS_G2dGetAnimCtrlCurrentFrame add r0, #0x40 add r0, #0x8 bx r3 .balign 4 -_02020234: .word FUN_020B04FC +_02020234: .word NNS_G2dGetAnimCtrlCurrentFrame thumb_func_start FUN_02020238 FUN_02020238: ; 0x02020238 @@ -2969,12 +2969,12 @@ FUN_0202050C: ; 0x0202050C add r4, #0x40 ldr r0, [r4, #0x4] mov r1, #0x0 - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx add r4, #0x8 add r1, r0, #0x0 ldr r2, [r5, #0x40] add r0, r4, #0x0 - bl FUN_020B1F80 + bl NNS_G2dInitCellAnimation pop {r3-r5, pc} .balign 4 @@ -2986,22 +2986,22 @@ FUN_0202052C: ; 0x0202052C add r4, r6, #0x0 add r4, #0x40 add r5, r0, #0x0 - bl FUN_020B43A4 + bl NNS_G2dGetNewCellTransferStateHandle str r0, [r4, #0x5c] ldr r0, [r4, #0x4] mov r1, #0x0 ldr r5, [r5, #0x4] - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx str r0, [sp, #0x18] add r0, r6, #0x0 add r0, #0xb4 mov r1, #0x1 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation add r7, r0, #0x0 add r0, r6, #0x0 add r0, #0xb4 mov r1, #0x2 - bl FUN_020B1A14 + bl NNS_G2dGetImageLocation mov r1, #0x0 mvn r1, r1 str r1, [sp, #0x0] @@ -3018,7 +3018,7 @@ FUN_0202052C: ; 0x0202052C ldr r2, [r6, #0x40] ldr r3, [r4, #0x5c] add r0, #0x8 - bl FUN_020B1EFC + bl NNS_G2dInitCellAnimationVramTransfered add sp, #0x1c pop {r4-r7, pc} @@ -3032,10 +3032,10 @@ FUN_02020588: ; 0x02020588 ldr r0, [r4, #0x6c] add r7, r1, #0x0 mov r1, #0x0 - bl FUN_020AFC04 + bl NNS_G2dGetAnimSequenceByIdx str r0, [sp, #0xc] ldr r0, [r4, #0x68] - bl FUN_020B23D8 + bl NNS_G2dGetMCBankNumNodesRequired add r6, r0, #0x0 mov r1, #0x28 add r0, r7, #0x0 @@ -3058,11 +3058,11 @@ FUN_02020588: ; 0x02020588 ldr r1, [r4, #0x70] ldr r2, [r4, #0x74] add r0, #0x8 - bl FUN_020B20C8 + bl NNS_G2dInitMCAnimation add r4, #0x8 ldr r1, [sp, #0xc] add r0, r4, #0x0 - bl FUN_020B242C + bl NNS_G2dSetAnimSequenceToMCAnimation add sp, #0x10 pop {r3-r7, pc} .balign 4 @@ -3087,7 +3087,7 @@ _02020600: _02020602: cmp r4, #0x0 beq _02020612 - bl FUN_020B19C4 + bl NNS_G2dGetImagePaletteLocation add r1, r4, #0x0 bl _u32_div_f pop {r4, pc} @@ -3115,19 +3115,19 @@ FUN_02020618: ; 0x02020618 ldr r0, [r5, r0] add r1, #0xb4 add r2, #0xd8 - bl thunk_FUN_020b5040 + bl NNS_G2dSetRendererImageProxy mov r0, #0x45 lsl r0, r0, #0x2 ldr r0, [r5, r0] - bl FUN_020B326C - bl FUN_020B2B58 + bl NNS_G2dBeginRendering + bl NNS_G2dPushMtx add r1, r4, #0x0 mov r0, #0x45 add r1, #0x26 lsl r0, r0, #0x2 ldrb r1, [r1, #0x0] ldr r0, [r5, r0] - bl FUN_020B502C + bl NNS_G2dSetRndCoreAffineOverwriteMode add r0, r4, #0x0 add r0, #0x26 ldrb r0, [r0, #0x0] @@ -3143,7 +3143,7 @@ FUN_02020618: ; 0x02020618 mov r3, #0x2 and r1, r2 and r2, r3 - bl FUN_020B4F38 + bl NNS_G2dSetRndCoreFlipMode b _0202068E _02020680: mov r0, #0x45 @@ -3151,12 +3151,12 @@ _02020680: mov r1, #0x0 ldr r0, [r5, r0] add r2, r1, #0x0 - bl FUN_020B4F38 + bl NNS_G2dSetRndCoreFlipMode _0202068E: ldr r0, [sp, #0x0] ldr r1, [sp, #0x4] ldr r2, [sp, #0x8] - bl FUN_020B2A08 + bl NNS_G2dTranslate add r0, r4, #0x0 add r0, #0x26 ldrb r0, [r0, #0x0] @@ -3165,11 +3165,11 @@ _0202068E: ldr r0, [r4, #0xc] ldr r1, [r4, #0x10] ldr r2, [r4, #0x14] - bl FUN_020B2A08 + bl NNS_G2dTranslate ldr r0, [r4, #0x18] ldr r1, [r4, #0x1c] ldr r2, [r4, #0x20] - bl FUN_020B28B4 + bl NNS_G2dScale ldrh r0, [r4, #0x24] ldr r2, _02020770 ; =FX_SinCosTable_ asr r0, r0, #0x4 @@ -3179,14 +3179,14 @@ _0202068E: lsl r1, r1, #0x1 ldrsh r0, [r2, r0] ldrsh r1, [r2, r1] - bl FUN_020B2794 + bl NNS_G2dRotZ ldr r0, [r4, #0xc] ldr r1, [r4, #0x10] ldr r2, [r4, #0x14] neg r0, r0 neg r1, r1 neg r2, r2 - bl FUN_020B2A08 + bl NNS_G2dTranslate _020206DC: add r0, r4, #0x0 add r0, #0x28 @@ -3249,16 +3249,16 @@ _0202074E: add r4, #0x40 add r4, #0x8 add r0, r4, #0x0 - bl FUN_020B317C + bl NNS_G2dDrawCellAnimation b _02020764 _0202075A: add r4, #0x40 add r4, #0x8 add r0, r4, #0x0 - bl FUN_020B2D9C + bl NNS_G2dDrawMultiCellAnimation _02020764: - bl FUN_020B2B08 - bl FUN_020B31F0 + bl NNS_G2dPopMtx + bl NNS_G2dEndRendering add sp, #0xc pop {r3-r6, pc} .balign 4 diff --git a/arm9/asm/unk_02020C44.s b/arm9/asm/unk_02020C44.s index c1870c5a..4c6cb725 100644 --- a/arm9/asm/unk_02020C44.s +++ b/arm9/asm/unk_02020C44.s @@ -1,10 +1,10 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021064B8 - .extern UNK_021064C0 - .extern UNK_021064C4 - .extern UNK_021064BC + .extern NNS_GfdDefaultFuncAllocTexVram + .extern NNS_GfdDefaultFuncAllocPlttVram + .extern NNS_GfdDefaultFuncFreePlttVram + .extern NNS_GfdDefaultFuncFreeTexVram .text @@ -488,7 +488,7 @@ _02020FA4: ldr r0, [r4, #0x4] cmp r0, #0x0 beq _02020FB8 - ldr r1, _02020FE8 ; =UNK_021064BC + ldr r1, _02020FE8 ; =NNS_GfdDefaultFuncFreeTexVram ldr r1, [r1, #0x0] blx r1 cmp r0, #0x0 @@ -498,7 +498,7 @@ _02020FB8: ldr r0, [r4, #0x8] cmp r0, #0x0 beq _02020FCC - ldr r1, _02020FE8 ; =UNK_021064BC + ldr r1, _02020FE8 ; =NNS_GfdDefaultFuncFreeTexVram ldr r1, [r1, #0x0] blx r1 cmp r0, #0x0 @@ -508,7 +508,7 @@ _02020FCC: ldr r0, [r4, #0xc] cmp r0, #0x0 beq _02020FE0 - ldr r1, _02020FEC ; =UNK_021064C4 + ldr r1, _02020FEC ; =NNS_GfdDefaultFuncFreePlttVram ldr r1, [r1, #0x0] blx r1 cmp r0, #0x0 @@ -519,8 +519,8 @@ _02020FE0: bl FUN_0202120C pop {r3-r5, pc} .balign 4 -_02020FE8: .word UNK_021064BC -_02020FEC: .word UNK_021064C4 +_02020FE8: .word NNS_GfdDefaultFuncFreeTexVram +_02020FEC: .word NNS_GfdDefaultFuncFreePlttVram thumb_func_start FUN_02020FF0 FUN_02020FF0: ; 0x02020FF0 @@ -842,7 +842,7 @@ FUN_02021220: ; 0x02021220 push {r3, lr} ldr r0, [r0, #0x0] bl FUN_02020E0C - bl FUN_020BC0FC + bl NNS_G3dGetTex pop {r3, pc} .balign 4 @@ -858,7 +858,7 @@ FUN_02021230: ; 0x02021230 _02021240: ldr r0, [r0, #0x10] _02021242: - bl FUN_020BC0FC + bl NNS_G3dGetTex pop {r3, pc} thumb_func_start FUN_02021248 @@ -869,17 +869,17 @@ FUN_02021248: ; 0x02021248 str r1, [sp, #0x0] str r2, [sp, #0x4] str r3, [sp, #0x8] - bl FUN_020B7E1C + bl NNS_G3dTexGetRequiredSize add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_020B7E10 + bl NNS_G3dTex4x4GetRequiredSize add r6, r0, #0x0 add r0, r5, #0x0 - bl FUN_020B7CE4 + bl NNS_G3dPlttGetRequiredSize add r4, r0, #0x0 cmp r7, #0x0 beq _0202127E - ldr r3, _020212B0 ; =UNK_021064B8 + ldr r3, _020212B0 ; =NNS_GfdDefaultFuncAllocTexVram mov r1, #0x0 ldr r3, [r3, #0x0] add r0, r7, #0x0 @@ -890,7 +890,7 @@ FUN_02021248: ; 0x02021248 _0202127E: cmp r6, #0x0 beq _02021292 - ldr r3, _020212B0 ; =UNK_021064B8 + ldr r3, _020212B0 ; =NNS_GfdDefaultFuncAllocTexVram add r0, r6, #0x0 ldr r3, [r3, #0x0] mov r1, #0x1 @@ -901,7 +901,7 @@ _0202127E: _02021292: cmp r4, #0x0 beq _020212AC - ldr r3, _020212B4 ; =UNK_021064C0 + ldr r3, _020212B4 ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0x2 ldrh r2, [r5, #0x20] lsl r1, r1, #0xe @@ -916,8 +916,8 @@ _020212AC: add sp, #0xc pop {r4-r7, pc} .balign 4 -_020212B0: .word UNK_021064B8 -_020212B4: .word UNK_021064C0 +_020212B0: .word NNS_GfdDefaultFuncAllocTexVram +_020212B4: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start FUN_020212B8 FUN_020212B8: ; 0x020212B8 @@ -933,10 +933,10 @@ FUN_020212B8: ; 0x020212B8 bl DC_FlushRange add r0, r4, #0x0 mov r1, #0x1 - bl FUN_020B7D28 + bl NNS_G3dTexLoad add r0, r4, #0x0 mov r1, #0x1 - bl FUN_020B7C78 + bl NNS_G3dPlttLoad pop {r4, pc} .balign 4 @@ -945,10 +945,10 @@ FUN_020212E4: ; 0x020212E4 push {r3-r5, lr} add r5, r0, #0x0 add r4, r3, #0x0 - bl FUN_020B7DFC + bl NNS_G3dTexSetTexKey add r0, r5, #0x0 add r1, r4, #0x0 - bl FUN_020B7CDC + bl NNS_G3dPlttSetPlttKey pop {r3-r5, pc} thumb_func_start FUN_020212F8 @@ -958,9 +958,9 @@ FUN_020212F8: ; 0x020212F8 add r4, r0, #0x0 add r1, sp, #0x4 add r2, sp, #0x0 - bl FUN_020B7CF0 + bl NNS_G3dTexReleaseTexKey add r0, r4, #0x0 - bl FUN_020B7C58 + bl NNS_G3dPlttReleasePlttKey add sp, #0x8 pop {r4, pc} @@ -986,7 +986,7 @@ FUN_02021310: ; 0x02021310 FUN_02021334: ; 0x02021334 push {r3-r5, lr} add r5, r0, #0x0 - bl FUN_020BC0FC + bl NNS_G3dGetTex add r4, r0, #0x0 bne _02021344 bl ErrorHandling diff --git a/arm9/asm/unk_0202134C.s b/arm9/asm/unk_0202134C.s index 30aa1d51..b45f4e91 100644 --- a/arm9/asm/unk_0202134C.s +++ b/arm9/asm/unk_0202134C.s @@ -8,7 +8,7 @@ FUN_0202134C: ; 0x0202134C push {r3-r5, lr} add r5, r0, #0x0 add r4, r1, #0x0 - bl FUN_020B33A0 + bl NNS_G2dInitRenderer add r5, #0x80 str r4, [r5, #0x0] pop {r3-r5, pc} @@ -20,7 +20,7 @@ FUN_0202135C: ; 0x0202135C add r4, r1, #0x0 add r6, r2, #0x0 add r7, r3, #0x0 - bl FUN_020B3334 + bl NNS_G2dInitRenderSurface add r2, r5, #0x0 ldmia r4!, {r0-r1} stmia r2!, {r0-r1} @@ -36,7 +36,7 @@ FUN_0202135C: ; 0x0202135C cmp r0, #0x0 beq _0202138C add r1, r5, #0x0 - bl FUN_020B3390 + bl NNS_G2dAddRendererTargetSurface _0202138C: pop {r3-r7, pc} .balign 4 diff --git a/arm9/asm/unk_02022318.s b/arm9/asm/unk_02022318.s index cf87cdb9..9564742c 100644 --- a/arm9/asm/unk_02022318.s +++ b/arm9/asm/unk_02022318.s @@ -15,7 +15,7 @@ FUN_02022318: ; 0x02022318 bl AllocFromHeap add r4, r0, #0x0 str r6, [r4, #0x0] - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_InitMtxStack mov r1, #0x2 ldr r0, _020223B8 ; =0x04000540 @@ -23,7 +23,7 @@ FUN_02022318: ; 0x02022318 str r1, [r0, #0x0] bne _02022364 lsl r0, r5, #0x7 - bl FUN_020AFA28 + bl NNS_GfdGetLnkTexVramManagerWorkSize add r6, r0, #0x0 ldr r0, [r4, #0x0] add r1, r6, #0x0 @@ -35,20 +35,20 @@ FUN_02022318: ; 0x02022318 lsl r0, r5, #0x11 mov r1, #0x0 add r3, r6, #0x0 - bl FUN_020AF9C4 + bl NNS_GfdInitLnkTexVramManager b _0202236E _02022364: lsl r0, r5, #0x10 lsr r0, r0, #0x10 mov r1, #0x1 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager _0202236E: ldr r0, [sp, #0x4] cmp r0, #0x0 bne _02022398 ldr r0, [sp, #0x20] lsl r0, r0, #0x8 - bl FUN_020AFBFC + bl NNS_GfdGetLnkPlttVramManagerWorkSize add r5, r0, #0x0 ldr r0, [r4, #0x0] add r1, r5, #0x0 @@ -59,14 +59,14 @@ _0202236E: lsl r0, r0, #0xd add r2, r5, #0x0 mov r3, #0x1 - bl FUN_020AFBA8 + bl NNS_GfdInitLnkPlttVramManager b _020223A4 _02022398: ldr r0, [sp, #0x20] mov r1, #0x1 lsl r0, r0, #0x1d lsr r0, r0, #0x10 - bl FUN_020AEB70 + bl NNS_GfdInitFrmTexVramManager _020223A4: ldr r0, [sp, #0x24] cmp r0, #0x0 diff --git a/arm9/asm/unk_02033B68.s b/arm9/asm/unk_02033B68.s index 39125d06..9e204377 100644 --- a/arm9/asm/unk_02033B68.s +++ b/arm9/asm/unk_02033B68.s @@ -333,7 +333,7 @@ FUN_02033D3C: ; 0x02033D3C bl DC_FlushRange ldr r0, [sp, #0x4] add r1, sp, #0x0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData cmp r5, #0x1 bne _02033D80 ldr r0, [sp, #0x0] @@ -386,7 +386,7 @@ _02033DC8: bl DC_FlushRange ldr r0, [sp, #0x4] add r1, sp, #0x0 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData cmp r5, #0x1 bne _02033DF0 mov r0, #0x1 diff --git a/arm9/asm/unk_020607D4.s b/arm9/asm/unk_020607D4.s index 45fc311a..c017c561 100644 --- a/arm9/asm/unk_020607D4.s +++ b/arm9/asm/unk_020607D4.s @@ -556,7 +556,7 @@ _02060BF6: add r0, r4, #0x0 bl MOD05_021F4BD0 ldr r0, [r0, #0x0] - bl FUN_020BC13C + bl NNS_G3dGetMdlSet ldrh r1, [r0, #0xe] add r2, sp, #0x20 mov r3, #0x0 diff --git a/arm9/asm/unk_0206DE24.s b/arm9/asm/unk_0206DE24.s index 0bc45eb2..32d784c4 100644 --- a/arm9/asm/unk_0206DE24.s +++ b/arm9/asm/unk_0206DE24.s @@ -1,8 +1,8 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021064C0 - .extern UNK_021064B8 + .extern NNS_GfdDefaultFuncAllocPlttVram + .extern NNS_GfdDefaultFuncAllocTexVram .text @@ -128,14 +128,14 @@ _0206DF14: .word 0x04000580 thumb_func_start FUN_0206DF18 FUN_0206DF18: ; 0x0206DF18 push {r3-r5, lr} - ldr r3, _0206DF50 ; =UNK_021064B8 + ldr r3, _0206DF50 ; =NNS_GfdDefaultFuncAllocTexVram mov r0, #0x2 mov r1, #0x0 ldr r3, [r3, #0x0] lsl r0, r0, #0xe add r2, r1, #0x0 blx r3 - ldr r3, _0206DF54 ; =UNK_021064C0 + ldr r3, _0206DF54 ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0x0 add r4, r0, #0x0 ldr r3, [r3, #0x0] @@ -154,8 +154,8 @@ _0206DF48: bl FUN_02012CC8 pop {r3-r5, pc} nop -_0206DF50: .word UNK_021064B8 -_0206DF54: .word UNK_021064C0 +_0206DF50: .word NNS_GfdDefaultFuncAllocTexVram +_0206DF54: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start FUN_0206DF58 FUN_0206DF58: ; 0x0206DF58 @@ -165,7 +165,7 @@ FUN_0206DF58: ; 0x0206DF58 cmp r0, #0x0 ble _0206DF6E bl FUN_020222AC - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera _0206DF6E: bl FUN_02013388 mov r0, #0x1 @@ -176,7 +176,7 @@ _0206DF6E: thumb_func_start FUN_0206DF7C FUN_0206DF7C: ; 0x0206DF7C push {r4, lr} - ldr r3, _0206DF94 ; =UNK_021064B8 + ldr r3, _0206DF94 ; =NNS_GfdDefaultFuncAllocTexVram mov r2, #0x0 ldr r3, [r3, #0x0] blx r3 @@ -186,12 +186,12 @@ FUN_0206DF7C: ; 0x0206DF7C lsr r0, r0, #0xd pop {r4, pc} nop -_0206DF94: .word UNK_021064B8 +_0206DF94: .word NNS_GfdDefaultFuncAllocTexVram thumb_func_start FUN_0206DF98 FUN_0206DF98: ; 0x0206DF98 push {r4, lr} - ldr r3, _0206DFB0 ; =UNK_021064C0 + ldr r3, _0206DFB0 ; =NNS_GfdDefaultFuncAllocPlttVram mov r2, #0x0 ldr r3, [r3, #0x0] blx r3 @@ -201,7 +201,7 @@ FUN_0206DF98: ; 0x0206DF98 lsr r0, r0, #0xd pop {r4, pc} nop -_0206DFB0: .word UNK_021064C0 +_0206DFB0: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start FUN_0206DFB4 FUN_0206DFB4: ; 0x0206DFB4 diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index 1a62b92b..a50d92bf 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -1274,7 +1274,7 @@ FUN_0206FD24: ; 0x0206FD24 bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x10 add r4, r0, #0x0 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData ldr r2, [sp, #0x10] mov r0, #0x3 ldr r1, [r2, #0xc] @@ -6204,7 +6204,7 @@ FUN_020724D4: ; 0x020724D4 bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0xc str r0, [sp, #0x8] - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData ldr r0, [sp, #0xc] mov r4, #0x0 str r0, [sp, #0x4] diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s index 16a7190f..703233b3 100644 --- a/arm9/asm/unk_020772F0.s +++ b/arm9/asm/unk_020772F0.s @@ -2418,7 +2418,7 @@ FUN_02078140: ; 0x02078140 push {r4-r7, lr} sub sp, #0x14 add r5, r0, #0x0 - bl FUN_020B0FC0 + bl NNS_G2dInitOamManagerModule mov r0, #0x0 str r0, [sp, #0x0] mov r1, #0x80 diff --git a/arm9/asm/unk_020799E8.s b/arm9/asm/unk_020799E8.s index 7f35d1a7..9227ca82 100644 --- a/arm9/asm/unk_020799E8.s +++ b/arm9/asm/unk_020799E8.s @@ -264,7 +264,7 @@ FUN_02079B60: ; 0x02079B60 _02079B9A: add r0, r7, #0x0 add r1, sp, #0x10 - bl FUN_020B0088 + bl NNS_G2dGetUnpackedCharacterData cmp r4, #0x0 bne _02079BAE ldr r0, [sp, #0x10] @@ -286,7 +286,7 @@ _02079BAE: _02079BC6: add r0, r7, #0x0 add r1, sp, #0xc - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData cmp r4, #0x0 bne _02079BDA ldr r0, [sp, #0xc] @@ -322,7 +322,7 @@ _02079BF8: _02079C10: add r0, r7, #0x0 add r1, sp, #0x8 - bl FUN_020B0138 + bl NNS_G2dGetUnpackedPaletteData cmp r4, #0x0 bne _02079C24 ldr r0, [sp, #0x8] @@ -363,6 +363,6 @@ FUN_02079C40: ; 0x02079C40 bl NARC_ReadWholeMember add r0, r4, #0x0 add r1, r7, #0x0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData add r0, r4, #0x0 pop {r3-r7, pc} diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index 617a122a..625807ae 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -2750,7 +2750,7 @@ _0207B256: bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0xc add r4, r0, #0x0 - bl FUN_020B0180 + bl NNS_G2dGetUnpackedScreenData mov r3, #0x0 str r3, [sp, #0x0] mov r0, #0x20 diff --git a/arm9/asm/unk_0207EF6C.s b/arm9/asm/unk_0207EF6C.s index 8fcaed0c..e4e29259 100644 --- a/arm9/asm/unk_0207EF6C.s +++ b/arm9/asm/unk_0207EF6C.s @@ -99,7 +99,7 @@ UNK_020FB6E6: ; 0x020FB6E6 FUN_0207EF6C: ; 0x0207EF6C push {r3-r4, lr} sub sp, #0x4 - bl FUN_020BB7F4 + bl NNS_G3dInit bl G3X_Init bl G3X_InitMtxStack ldr r0, _0207EFEC ; =0x04000060 @@ -183,16 +183,16 @@ FUN_0207F008: ; 0x0207F008 mov r0, #0x2 str r0, [r2, #0x0] str r3, [r1, #0x0] - bl FUN_020B849C + bl NNS_G3dGlbFlushP mov r0, #0xb7 lsl r0, r0, #0x2 add r0, r4, r0 bl FUN_0207F108 - bl FUN_020B849C + bl NNS_G3dGlbFlushP add r0, r4, #0x0 bl FUN_0207F1A4 _0207F046: - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera mov r0, #0xae lsl r0, r0, #0x2 ldr r0, [r4, r0] diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s index 94945259..7ae62351 100644 --- a/arm9/asm/unk_02086414.s +++ b/arm9/asm/unk_02086414.s @@ -1,8 +1,8 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021064B8 - .extern UNK_021064C0 + .extern NNS_GfdDefaultFuncAllocTexVram + .extern NNS_GfdDefaultFuncAllocPlttVram .section .rodata @@ -217,14 +217,14 @@ _02086508: .word 0x04000580 thumb_func_start FUN_0208650C FUN_0208650C: ; 0x0208650C push {r3-r5, lr} - ldr r3, _02086544 ; =UNK_021064B8 + ldr r3, _02086544 ; =NNS_GfdDefaultFuncAllocTexVram mov r0, #0x2 mov r1, #0x0 ldr r3, [r3, #0x0] lsl r0, r0, #0xe add r2, r1, #0x0 blx r3 - ldr r3, _02086548 ; =UNK_021064C0 + ldr r3, _02086548 ; =NNS_GfdDefaultFuncAllocPlttVram mov r1, #0x0 add r4, r0, #0x0 ldr r3, [r3, #0x0] @@ -243,8 +243,8 @@ _0208653C: bl FUN_02012CC8 pop {r3-r5, pc} nop -_02086544: .word UNK_021064B8 -_02086548: .word UNK_021064C0 +_02086544: .word NNS_GfdDefaultFuncAllocTexVram +_02086548: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start FUN_0208654C FUN_0208654C: ; 0x0208654C @@ -400,7 +400,7 @@ FUN_02086698: ; 0x02086698 cmp r0, #0x0 ble _020866AE bl FUN_020222AC - bl FUN_020B02C8 + bl NNS_G2dSetupSoftwareSpriteCamera _020866AE: bl FUN_02013388 mov r0, #0x1 @@ -845,7 +845,7 @@ FUN_020869F0: ; 0x020869F0 thumb_func_start FUN_02086A48 FUN_02086A48: ; 0x02086A48 push {r4, lr} - ldr r3, _02086A60 ; =UNK_021064B8 + ldr r3, _02086A60 ; =NNS_GfdDefaultFuncAllocTexVram mov r2, #0x0 ldr r3, [r3, #0x0] blx r3 @@ -855,12 +855,12 @@ FUN_02086A48: ; 0x02086A48 lsr r0, r0, #0xd pop {r4, pc} nop -_02086A60: .word UNK_021064B8 +_02086A60: .word NNS_GfdDefaultFuncAllocTexVram thumb_func_start FUN_02086A64 FUN_02086A64: ; 0x02086A64 push {r4, lr} - ldr r3, _02086A7C ; =UNK_021064C0 + ldr r3, _02086A7C ; =NNS_GfdDefaultFuncAllocPlttVram mov r2, #0x0 ldr r3, [r3, #0x0] blx r3 @@ -870,7 +870,7 @@ FUN_02086A64: ; 0x02086A64 lsr r0, r0, #0xd pop {r4, pc} nop -_02086A7C: .word UNK_021064C0 +_02086A7C: .word NNS_GfdDefaultFuncAllocPlttVram thumb_func_start FUN_02086A80 FUN_02086A80: ; 0x02086A80 diff --git a/arm9/asm/unk_0208AC14.s b/arm9/asm/unk_0208AC14.s index 058f8c32..2f1ab9a6 100644 --- a/arm9/asm/unk_0208AC14.s +++ b/arm9/asm/unk_0208AC14.s @@ -2,8 +2,8 @@ .include "global.inc" .extern FX_SinCosTable_ - .extern UNK_021064B8 - .extern UNK_021064C0 + .extern NNS_GfdDefaultFuncAllocTexVram + .extern NNS_GfdDefaultFuncAllocPlttVram .section .data .global UNK_02106158 @@ -773,7 +773,7 @@ _0208B60C: FUN_0208B630: ; 0x0208B630 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r3, _0208B660 ; =UNK_021064C0 + ldr r3, _0208B660 ; =NNS_GfdDefaultFuncAllocPlttVram mov r2, #0x0 ldr r3, [r3, #0x0] blx r3 @@ -784,14 +784,14 @@ FUN_0208B630: ; 0x0208B630 ldmia sp!, {lr} bx lr .balign 4 -_0208B660: .word UNK_021064C0 +_0208B660: .word NNS_GfdDefaultFuncAllocPlttVram _0208B664: .word 0x0000FFFF arm_func_start FUN_0208B668 FUN_0208B668: ; 0x0208B668 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r3, _0208B698 ; =UNK_021064B8 + ldr r3, _0208B698 ; =NNS_GfdDefaultFuncAllocTexVram mov r2, #0x0 ldr r3, [r3, #0x0] blx r3 @@ -802,7 +802,7 @@ FUN_0208B668: ; 0x0208B668 ldmia sp!, {lr} bx lr .balign 4 -_0208B698: .word UNK_021064B8 +_0208B698: .word NNS_GfdDefaultFuncAllocTexVram _0208B69C: .word 0x0000FFFF arm_func_start FUN_0208B6A0 -- cgit v1.2.3