diff options
38 files changed, 697 insertions, 1005 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 88cf83b5..6b0a49a7 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -71,7 +71,6 @@ Static arm9 Object unk_0201E00C.o Object GX_layers.o Object unk_0201E7D8.o - Object unk_0201E7D8_s.o Object unk_0201F06C.o Object unk_020208B8.o Object timer3.o diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index ef0c42fa..26b3a3ef 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -607,7 +607,7 @@ ScrCmd_Unk0066: ; 0x0203B468 ldr r1, [r5, #0x0] add r0, r4, #0x0 ldr r1, [r1, #0x20] - bl FUN_0201EC68 + bl Camera_SetFixedTarget mov r0, #0x0 add sp, #0xc pop {r4-r7, pc} @@ -640,7 +640,7 @@ ScrCmd_Unk0067: ; 0x0203B500 ldr r1, [r5, #0x0] add r0, r4, #0x0 ldr r1, [r1, #0x20] - bl FUN_0201EC68 + bl Camera_SetFixedTarget mov r0, #0x0 pop {r3-r5, pc} @@ -854,7 +854,7 @@ _0203B6F8: ldr r1, [r5, #0x0] add r0, sp, #0x0 ldr r1, [r1, #0x20] - bl FUN_0201EF70 + bl Camera_OffsetLookAtPosAndTarget mov r0, #0x0 add sp, #0xc pop {r4-r7, pc} diff --git a/arm9/asm/unk_02012CC8.s b/arm9/asm/unk_02012CC8.s index e54565f1..b9d7da8e 100644 --- a/arm9/asm/unk_02012CC8.s +++ b/arm9/asm/unk_02012CC8.s @@ -145,7 +145,7 @@ _02012D14: cmp r0, #0x1 bne _02012DA8 ldr r0, [sp, #0x2c] - bl FUN_0201EB64 + bl Camera_Alloc str r0, [r4, #0x20] mov r3, #0x0 str r3, [r4, #0x24] @@ -160,13 +160,13 @@ _02012D14: str r0, [sp, #0x4] ldrh r2, [r4, #0x30] ldr r0, _02012DDC ; =UNK_020ED4F0 - bl FUN_0201ED5C + bl Camera_InitWithPosAndTarget add r0, r4, #0x0 mov r1, #0x0 add r0, #0xdb strb r1, [r0, #0x0] ldr r0, [r4, #0x20] - bl FUN_0201EB8C + bl Camera_SetWorkPtr _02012DA8: mov r0, #0x6 str r0, [sp, #0x0] @@ -291,7 +291,7 @@ _02012E94: ldr r0, [r5, #0x20] cmp r0, #0x0 beq _02012E9E - bl FUN_0201EB70 + bl Camera_Free _02012E9E: add r0, r5, #0x0 bl FreeToHeap @@ -947,10 +947,10 @@ FUN_02013300: ; 0x02013300 beq _0201331C add r0, #0xdb ldrb r0, [r0, #0x0] - bl FUN_0201EE2C + bl ApplyPerspectiveType ldr r0, [r4, #0x20] - bl FUN_0201EB8C - bl FUN_0201EBA4 + bl Camera_SetWorkPtr + bl Camera_PushLookAtToNNSGlb _0201331C: bl NNS_G3dGlbFlushP ldr r0, [r4, #0x0] @@ -959,7 +959,7 @@ _0201331C: ldr r0, [r4, #0x20] cmp r0, #0x0 beq _02013332 - bl FUN_0201EB98 + bl Camera_UnsetWorkPtr _02013332: bl NNS_G3dGlbFlushP pop {r4, pc} @@ -1106,7 +1106,7 @@ FUN_020133FC: ; 0x020133FC str r0, [r2, #0x0] ldr r1, [r5, #0x20] add r0, r4, #0x0 - bl FUN_0201EC58 + bl Camera_SetLookAtCamUp pop {r3-r5, pc} .balign 4 diff --git a/arm9/asm/unk_0201C7A0.s b/arm9/asm/unk_0201C7A0.s index cbc055af..0602b2cb 100644 --- a/arm9/asm/unk_0201C7A0.s +++ b/arm9/asm/unk_0201C7A0.s @@ -22,8 +22,8 @@ FUN_0201C7A8: ; 0x0201C7A8 _0201C7AE: bx lr - thumb_func_start FUN_0201C7B0 -FUN_0201C7B0: ; 0x0201C7B0 + thumb_func_start CalcAngleBetweenVecs +CalcAngleBetweenVecs: ; 0x0201C7B0 push {r3-r7, lr} sub sp, #0x30 add r4, r1, #0x0 diff --git a/arm9/asm/unk_0201E7D8_s.s b/arm9/asm/unk_0201E7D8_s.s deleted file mode 100644 index 70a62da3..00000000 --- a/arm9/asm/unk_0201E7D8_s.s +++ /dev/null @@ -1,539 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern NNS_G3dGlb - .extern FX_SinCosTable_ - .extern UNK_02105BB8 - .extern UNK_021C59A4 - - .text - - .extern FUN_0201E7D8 - .extern FUN_0201E8B8 - .extern FUN_0201E99C - .extern FUN_0201E9E8 - .extern FUN_0201EA08 - .extern FUN_0201EABC - - thumb_func_start FUN_0201EC94 -FUN_0201EC94: ; 0x0201EC94 - str r0, [r2, #0xc] - add r0, r2, #0x0 - str r1, [r2, #0x10] - add r0, #0x44 - ldr r3, _0201ECA4 ; =FUN_0201EE2C - ldrb r0, [r0, #0x0] - add r1, r2, #0x0 - bx r3 - .balign 4 -_0201ECA4: .word FUN_0201EE2C - - thumb_func_start FUN_0201ECA8 -FUN_0201ECA8: ; 0x0201ECA8 - push {r3-r7, lr} - ldr r4, [sp, #0x20] - add r5, r0, #0x0 - add r7, r1, #0x0 - add r0, r3, #0x0 - add r1, r4, #0x0 - add r6, r2, #0x0 - bl FUN_0201E99C - add r3, r5, #0x0 - add r2, r4, #0x0 - ldmia r3!, {r0-r1} - add r2, #0x20 - stmia r2!, {r0-r1} - ldr r0, [r3, #0x0] - str r0, [r2, #0x0] - str r7, [r4, #0x38] - ldrh r0, [r6, #0x0] - strh r0, [r4, #0x3c] - ldrh r0, [r6, #0x2] - strh r0, [r4, #0x3e] - add r0, r4, #0x0 - ldrh r1, [r6, #0x4] - add r0, #0x40 - strh r1, [r0, #0x0] - add r0, r4, #0x0 - ldrh r1, [r6, #0x6] - add r0, #0x42 - strh r1, [r0, #0x0] - add r0, r4, #0x0 - bl FUN_0201E7D8 - add r0, sp, #0x8 - ldrb r0, [r0, #0x10] - add r1, r4, #0x0 - bl FUN_0201EE2C - ldr r0, [sp, #0x1c] - cmp r0, #0x0 - beq _0201ED0E - str r5, [r4, #0x54] - add r2, r4, #0x0 - ldmia r5!, {r0-r1} - add r2, #0x48 - stmia r2!, {r0-r1} - ldr r0, [r5, #0x0] - str r0, [r2, #0x0] - mov r0, #0x1 - str r0, [r4, #0x58] - str r0, [r4, #0x5c] - str r0, [r4, #0x60] -_0201ED0E: - pop {r3-r7, pc} - - thumb_func_start FUN_0201ED10 -FUN_0201ED10: ; 0x0201ED10 - push {r3-r7, lr} - ldr r4, [sp, #0x1c] - add r6, r0, #0x0 - add r7, r1, #0x0 - add r0, r3, #0x0 - add r1, r4, #0x0 - add r5, r2, #0x0 - bl FUN_0201E99C - add r2, r4, #0x0 - ldmia r6!, {r0-r1} - add r2, #0x14 - stmia r2!, {r0-r1} - ldr r0, [r6, #0x0] - str r0, [r2, #0x0] - str r7, [r4, #0x38] - ldrh r0, [r5, #0x0] - strh r0, [r4, #0x3c] - ldrh r0, [r5, #0x2] - strh r0, [r4, #0x3e] - add r0, r4, #0x0 - ldrh r1, [r5, #0x4] - add r0, #0x40 - strh r1, [r0, #0x0] - add r0, r4, #0x0 - ldrh r1, [r5, #0x6] - add r0, #0x42 - strh r1, [r0, #0x0] - add r0, r4, #0x0 - bl FUN_0201E8B8 - add r0, sp, #0x8 - ldrb r0, [r0, #0x10] - add r1, r4, #0x0 - bl FUN_0201EE2C - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0201ED5C -FUN_0201ED5C: ; 0x0201ED5C - push {r4-r7, lr} - sub sp, #0x3c - ldr r4, [sp, #0x54] - add r5, r0, #0x0 - add r6, r1, #0x0 - add r0, r2, #0x0 - add r1, r4, #0x0 - add r7, r3, #0x0 - bl FUN_0201E99C - add r3, r5, #0x0 - add r2, r4, #0x0 - ldmia r3!, {r0-r1} - add r2, #0x20 - stmia r2!, {r0-r1} - ldr r0, [r3, #0x0] - add r3, r6, #0x0 - str r0, [r2, #0x0] - add r2, r4, #0x0 - ldmia r3!, {r0-r1} - add r2, #0x14 - stmia r2!, {r0-r1} - ldr r0, [r3, #0x0] - add r1, r5, #0x0 - str r0, [r2, #0x0] - add r0, r6, #0x0 - add r2, sp, #0x30 - bl VEC_Subtract - add r0, sp, #0x30 - bl VEC_Mag - str r0, [r4, #0x38] - mov r6, #0x0 - add r0, sp, #0x24 - str r6, [r0, #0x0] - str r6, [r0, #0x4] - str r6, [r0, #0x8] - add r0, sp, #0x18 - str r6, [r0, #0x0] - str r6, [r0, #0x4] - str r6, [r0, #0x8] - add r0, sp, #0xc - str r6, [r0, #0x0] - str r6, [r0, #0x4] - str r6, [r0, #0x8] - mov r0, #0x1 - lsl r0, r0, #0xc - add r3, sp, #0x30 - str r0, [sp, #0x8] - ldmia r3!, {r0-r1} - add r2, sp, #0xc - stmia r2!, {r0-r1} - ldr r0, [r3, #0x0] - str r6, [sp, #0x0] - str r0, [r2, #0x0] - str r6, [sp, #0x4] - str r6, [sp, #0x10] - add r0, sp, #0x0 - add r1, sp, #0xc - bl FUN_0201C7B0 - strh r0, [r4, #0x3e] - add r1, r6, #0x0 - mov r0, #0x1 - lsl r0, r0, #0xc - str r0, [sp, #0x0] - ldr r0, [sp, #0x38] - str r1, [sp, #0x4] - str r0, [sp, #0xc] - ldr r0, [sp, #0x34] - str r1, [sp, #0x8] - str r0, [sp, #0x14] - str r1, [sp, #0x10] - add r0, sp, #0x0 - add r1, sp, #0xc - bl FUN_0201C7B0 - strh r0, [r4, #0x3c] - add r0, r4, #0x0 - add r1, r6, #0x0 - add r0, #0x40 - strh r1, [r0, #0x0] - add r0, r7, #0x0 - add r1, r4, #0x0 - bl FUN_0201EE2C - ldr r0, [sp, #0x50] - cmp r0, #0x0 - beq _0201EE26 - str r5, [r4, #0x54] - add r2, r4, #0x0 - ldmia r5!, {r0-r1} - add r2, #0x48 - stmia r2!, {r0-r1} - ldr r0, [r5, #0x0] - str r0, [r2, #0x0] - mov r0, #0x1 - str r0, [r4, #0x58] - str r0, [r4, #0x5c] - str r0, [r4, #0x60] -_0201EE26: - add sp, #0x3c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0201EE2C -FUN_0201EE2C: ; 0x0201EE2C - push {r3-r6, lr} - sub sp, #0x14 - add r5, r1, #0x0 - cmp r0, #0x0 - bne _0201EE6C - ldr r0, [r5, #0x10] - str r0, [sp, #0x0] - mov r0, #0x1 - lsl r0, r0, #0xc - str r0, [sp, #0x4] - mov r0, #0x0 - str r0, [sp, #0x8] - 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 ; =NNS_G3dGlb + 0x80 - mov r0, #0x50 - ldr r2, [r1, #0x7c] - add r5, #0x44 - bic r2, r0 - str r2, [r1, #0x7c] - mov r1, #0x0 - ldr r0, _0201EEEC ; =UNK_02105BB8 - strb r1, [r5, #0x0] - str r1, [r0, #0x0] - add sp, #0x14 - pop {r3-r6, pc} -_0201EE6C: - ldr r4, [r5, #0x38] - ldr r0, [r5, #0x0] - ldr r1, [r5, #0x4] - bl FX_Div - asr r1, r0, #0x1f - asr r3, r4, #0x1f - add r2, r4, #0x0 - bl _ll_mul - mov r2, #0x2 - mov r3, #0x0 - lsl r2, r2, #0xa - add r2, r0, r2 - adc r1, r3 - lsr r4, r2, #0xc - lsl r0, r1, #0x14 - orr r4, r0 - ldr r2, [r5, #0x8] - asr r1, r4, #0x1f - add r0, r4, #0x0 - asr r3, r2, #0x1f - bl _ll_mul - mov r6, #0x2 - mov r2, #0x0 - lsl r6, r6, #0xa - add r3, r0, r6 - adc r1, r2 - lsl r0, r1, #0x14 - lsr r3, r3, #0xc - orr r3, r0 - ldr r0, [r5, #0xc] - neg r1, r4 - str r0, [sp, #0x0] - ldr r0, [r5, #0x10] - str r0, [sp, #0x4] - lsl r0, r6, #0x1 - str r0, [sp, #0x8] - str r2, [sp, #0xc] - ldr r0, _0201EEE4 ; =NNS_G3dGlb + 0x8 - neg r2, r3 - str r0, [sp, #0x10] - add r0, r4, #0x0 - bl G3i_OrthoW_ - ldr r1, _0201EEE8 ; =NNS_G3dGlb + 0x80 - mov r0, #0x50 - ldr r2, [r1, #0x7c] - add r5, #0x44 - bic r2, r0 - str r2, [r1, #0x7c] - mov r0, #0x1 - strb r0, [r5, #0x0] - ldr r0, _0201EEEC ; =UNK_02105BB8 - mov r1, #0x0 - str r1, [r0, #0x0] - add sp, #0x14 - pop {r3-r6, pc} - nop -_0201EEE4: .word NNS_G3dGlb + 0x8 -_0201EEE8: .word NNS_G3dGlb + 0x80 -_0201EEEC: .word UNK_02105BB8 - - thumb_func_start FUN_0201EEF0 -FUN_0201EEF0: ; 0x0201EEF0 - add r2, r1, #0x0 - add r2, #0x46 - strh r0, [r2, #0x0] - add r0, r1, #0x0 - add r0, #0x46 - ldrh r0, [r0, #0x0] - ldr r3, _0201EF24 ; =FUN_0201EE2C - asr r0, r0, #0x4 - lsl r2, r0, #0x2 - ldr r0, _0201EF28 ; =FX_SinCosTable_ - ldrsh r2, [r0, r2] - str r2, [r1, #0x0] - add r2, r1, #0x0 - add r2, #0x46 - ldrh r2, [r2, #0x0] - asr r2, r2, #0x4 - lsl r2, r2, #0x1 - add r2, r2, #0x1 - lsl r2, r2, #0x1 - ldrsh r0, [r0, r2] - str r0, [r1, #0x4] - add r0, r1, #0x0 - add r0, #0x44 - ldrb r0, [r0, #0x0] - bx r3 - nop -_0201EF24: .word FUN_0201EE2C -_0201EF28: .word FX_SinCosTable_ - - thumb_func_start FUN_0201EF2C -FUN_0201EF2C: ; 0x0201EF2C - add r2, r1, #0x0 - add r2, #0x46 - ldrh r2, [r2, #0x0] - ldr r3, _0201EF68 ; =FUN_0201EE2C - add r2, r2, r0 - add r0, r1, #0x0 - add r0, #0x46 - strh r2, [r0, #0x0] - add r0, r1, #0x0 - add r0, #0x46 - ldrh r0, [r0, #0x0] - asr r0, r0, #0x4 - lsl r2, r0, #0x2 - ldr r0, _0201EF6C ; =FX_SinCosTable_ - ldrsh r2, [r0, r2] - str r2, [r1, #0x0] - add r2, r1, #0x0 - add r2, #0x46 - ldrh r2, [r2, #0x0] - asr r2, r2, #0x4 - lsl r2, r2, #0x1 - add r2, r2, #0x1 - lsl r2, r2, #0x1 - ldrsh r0, [r0, r2] - str r0, [r1, #0x4] - add r0, r1, #0x0 - add r0, #0x44 - ldrb r0, [r0, #0x0] - bx r3 - nop -_0201EF68: .word FUN_0201EE2C -_0201EF6C: .word FX_SinCosTable_ - - thumb_func_start FUN_0201EF70 -FUN_0201EF70: ; 0x0201EF70 - push {r3-r5, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x14 - add r1, r5, #0x0 - add r2, r0, #0x0 - bl VEC_Add - add r4, #0x20 - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r4, #0x0 - bl VEC_Add - pop {r3-r5, pc} - - thumb_func_start FUN_0201EF90 -FUN_0201EF90: ; 0x0201EF90 - ldrh r2, [r0, #0x0] - strh r2, [r1, #0x3c] - ldrh r2, [r0, #0x2] - strh r2, [r1, #0x3e] - add r2, r1, #0x0 - ldrh r3, [r0, #0x4] - add r2, #0x40 - strh r3, [r2, #0x0] - ldrh r2, [r0, #0x6] - add r0, r1, #0x0 - add r0, #0x42 - strh r2, [r0, #0x0] - ldr r3, _0201EFB0 ; =FUN_0201E7D8 - add r0, r1, #0x0 - bx r3 - nop -_0201EFB0: .word FUN_0201E7D8 - - thumb_func_start FUN_0201EFB4 -FUN_0201EFB4: ; 0x0201EFB4 - ldrh r3, [r1, #0x3c] - ldrh r2, [r0, #0x0] - add r2, r3, r2 - strh r2, [r1, #0x3c] - ldrh r3, [r1, #0x3e] - ldrh r2, [r0, #0x2] - add r2, r3, r2 - strh r2, [r1, #0x3e] - add r2, r1, #0x0 - add r2, #0x40 - ldrh r2, [r2, #0x0] - ldrh r0, [r0, #0x4] - ldr r3, _0201EFDC ; =FUN_0201E8B8 - add r2, r2, r0 - add r0, r1, #0x0 - add r0, #0x40 - strh r2, [r0, #0x0] - add r0, r1, #0x0 - bx r3 - nop -_0201EFDC: .word FUN_0201E8B8 - - thumb_func_start FUN_0201EFE0 -FUN_0201EFE0: ; 0x0201EFE0 - ldr r3, _0201EFE8 ; =FUN_0201E7D8 - str r0, [r1, #0x38] - add r0, r1, #0x0 - bx r3 - .balign 4 -_0201EFE8: .word FUN_0201E7D8 - - thumb_func_start FUN_0201EFEC -FUN_0201EFEC: ; 0x0201EFEC - push {r4, lr} - add r3, r1, #0x0 - add r4, r0, #0x0 - add r2, r3, #0x0 - ldmia r4!, {r0-r1} - add r2, #0x20 - stmia r2!, {r0-r1} - ldr r0, [r4, #0x0] - str r0, [r2, #0x0] - add r0, r3, #0x0 - bl FUN_0201E7D8 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0201F008 -FUN_0201F008: ; 0x0201F008 - add r0, #0x46 - ldrh r0, [r0, #0x0] - bx lr - .balign 4 - - thumb_func_start FUN_0201F010 -FUN_0201F010: ; 0x0201F010 - ldr r0, [r0, #0x38] - bx lr - - thumb_func_start FUN_0201F014 -FUN_0201F014: ; 0x0201F014 - ldrh r2, [r1, #0x3c] - strh r2, [r0, #0x0] - ldrh r2, [r1, #0x3e] - strh r2, [r0, #0x2] - add r2, r1, #0x0 - add r2, #0x40 - ldrh r2, [r2, #0x0] - add r1, #0x42 - strh r2, [r0, #0x4] - ldrh r1, [r1, #0x0] - strh r1, [r0, #0x6] - bx lr - - thumb_func_start FUN_0201F02C -FUN_0201F02C: ; 0x0201F02C - add r2, r1, #0x0 - add r2, #0x20 - add r3, r0, #0x0 - ldmia r2!, {r0-r1} - stmia r3!, {r0-r1} - ldr r0, [r2, #0x0] - str r0, [r3, #0x0] - bx lr - - thumb_func_start FUN_0201F03C -FUN_0201F03C: ; 0x0201F03C - add r2, r1, #0x0 - add r2, #0x14 - add r3, r0, #0x0 - ldmia r2!, {r0-r1} - stmia r3!, {r0-r1} - ldr r0, [r2, #0x0] - str r0, [r3, #0x0] - bx lr - - thumb_func_start FUN_0201F04C -FUN_0201F04C: ; 0x0201F04C - add r3, r0, #0x0 - add r2, r1, #0x0 - ldmia r3!, {r0-r1} - add r2, #0x20 - stmia r2!, {r0-r1} - ldr r0, [r3, #0x0] - str r0, [r2, #0x0] - bx lr - - thumb_func_start FUN_0201F05C -FUN_0201F05C: ; 0x0201F05C - add r3, r0, #0x0 - add r2, r1, #0x0 - ldmia r3!, {r0-r1} - add r2, #0x14 - stmia r2!, {r0-r1} - ldr r0, [r3, #0x0] - str r0, [r2, #0x0] - bx lr diff --git a/arm9/asm/unk_02046030.s b/arm9/asm/unk_02046030.s index 43942b2f..573fba7e 100644 --- a/arm9/asm/unk_02046030.s +++ b/arm9/asm/unk_02046030.s @@ -251,10 +251,10 @@ FUN_02046224: ; 0x02046224 add r4, r0, #0x0 ldr r0, _02046278 ; =0x000008C1 ldr r1, [r4, #0x20] - bl FUN_0201EEF0 + bl Camera_SetPerspectiveAngle ldr r0, _0204627C ; =0x000F81B8 ldr r1, [r4, #0x20] - bl FUN_0201EFE0 + bl Camera_SetDistance ldr r0, _02046280 ; =0x0350523D str r0, [sp, #0x8] ldr r0, _02046284 ; =0x0015EDB7 @@ -263,7 +263,7 @@ FUN_02046224: ; 0x02046224 str r0, [sp, #0x10] ldr r1, [r4, #0x20] add r0, sp, #0x8 - bl FUN_0201F04C + bl Camera_SetLookAtCamTarget ldr r1, _0204628C ; =0x00000823 add r0, sp, #0x0 strh r1, [r0, #0x0] @@ -274,12 +274,12 @@ FUN_02046224: ; 0x02046224 strh r1, [r0, #0x4] ldr r1, [r4, #0x20] add r0, sp, #0x0 - bl FUN_0201EF90 + bl Camera_SetAngle mov r0, #0x3 ldr r1, _02046290 ; =0x0061C000 ldr r2, [r4, #0x20] lsl r0, r0, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane add sp, #0x14 pop {r3-r4, pc} nop diff --git a/arm9/asm/unk_0204C1B4.s b/arm9/asm/unk_0204C1B4.s index c7a18f3f..4970ada1 100644 --- a/arm9/asm/unk_0204C1B4.s +++ b/arm9/asm/unk_0204C1B4.s @@ -1038,11 +1038,11 @@ _0204C9B4: ldr r0, [r5, #0x38] bl FUN_02055360 ldr r1, [r5, #0x20] - bl FUN_0201EFEC + bl Camera_SetLookAtTargetAndRecalcPos ldr r0, [r5, #0x38] bl FUN_02055360 ldr r1, [r5, #0x20] - bl FUN_0201EC68 + bl Camera_SetFixedTarget add sp, #0x10 pop {r3-r5, pc} @@ -1104,10 +1104,10 @@ _0204CA48: ldr r0, [r5, #0x38] bl FUN_02055360 ldr r1, [r5, #0x20] - bl FUN_0201EFEC + bl Camera_SetLookAtTargetAndRecalcPos ldr r0, [r5, #0x38] bl FUN_02055360 ldr r1, [r5, #0x20] - bl FUN_0201EC68 + bl Camera_SetFixedTarget add sp, #0x10 pop {r4-r6, pc} diff --git a/arm9/asm/unk_020607D4.s b/arm9/asm/unk_020607D4.s index 92be6430..84ef467a 100644 --- a/arm9/asm/unk_020607D4.s +++ b/arm9/asm/unk_020607D4.s @@ -124,11 +124,11 @@ _02060892: add r1, #0x24 bl FUN_02055350 ldr r0, [r5, #0x20] - bl FUN_0201EC88 + bl Camera_ClearFixedTarget add r0, r4, #0x0 ldr r1, [r5, #0x20] add r0, #0x24 - bl FUN_0201EC68 + bl Camera_SetFixedTarget mov r0, #0x0 ldr r1, [r4, #0x10] mvn r0, r0 diff --git a/arm9/asm/unk_0206DE24.s b/arm9/asm/unk_0206DE24.s index 46895ddb..d11acd85 100644 --- a/arm9/asm/unk_0206DE24.s +++ b/arm9/asm/unk_0206DE24.s @@ -228,7 +228,7 @@ FUN_0206DFB4: ; 0x0206DFB4 mov r1, #0xe1 lsl r0, r0, #0xc lsl r1, r1, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane _0206DFEC: add r0, r4, #0x0 add sp, #0x8 diff --git a/arm9/asm/unk_0207EF6C.s b/arm9/asm/unk_0207EF6C.s index 2d585edb..77550e14 100644 --- a/arm9/asm/unk_0207EF6C.s +++ b/arm9/asm/unk_0207EF6C.s @@ -173,7 +173,7 @@ FUN_0207F008: ; 0x0207F008 cmp r0, #0x4 bne _0207F046 bl FUN_020222AC - bl FUN_0201EBA4 + bl Camera_PushLookAtToNNSGlb ldr r2, _0207F060 ; =0x04000440 mov r3, #0x0 add r1, r2, #0x0 @@ -213,7 +213,7 @@ FUN_0207F068: ; 0x0207F068 mov r0, #0xad lsl r0, r0, #0x2 ldr r0, [r4, r0] - bl FUN_0201EB70 + bl Camera_Free mov r0, #0x2d lsl r0, r0, #0x4 ldr r0, [r4, r0] @@ -247,7 +247,7 @@ FUN_0207F098: ; 0x0207F098 strh r0, [r1, #0x4] strh r0, [r1, #0x6] mov r0, #0x13 - bl FUN_0201EB64 + bl Camera_Alloc mov r1, #0xad lsl r1, r1, #0x2 str r0, [r4, r1] @@ -259,22 +259,22 @@ FUN_0207F098: ; 0x0207F098 ldr r3, _0207F104 ; =0x000005C1 add r0, sp, #0x10 add r2, sp, #0x8 - bl FUN_0201ED10 + bl Camera_InitWithPosAndAngle mov r2, #0xad lsl r2, r2, #0x2 mov r1, #0x19 ldr r2, [r4, r2] mov r0, #0x0 lsl r1, r1, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane mov r0, #0xad lsl r0, r0, #0x2 ldr r0, [r4, r0] - bl FUN_0201EC88 + bl Camera_ClearFixedTarget mov r0, #0xad lsl r0, r0, #0x2 ldr r0, [r4, r0] - bl FUN_0201EB8C + bl Camera_SetWorkPtr add sp, #0x1c pop {r3-r4, pc} nop diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s index f01e84e2..00825639 100644 --- a/arm9/asm/unk_02086414.s +++ b/arm9/asm/unk_02086414.s @@ -897,7 +897,7 @@ FUN_02086A80: ; 0x02086A80 mov r1, #0xe1 lsl r0, r0, #0xc lsl r1, r1, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane _02086AB8: add r0, r4, #0x0 add sp, #0x8 diff --git a/arm9/global.inc b/arm9/global.inc index 325ba1ec..269e9b7b 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1187,7 +1187,7 @@ .extern FUN_0201C78C .extern FUN_0201C7A0 .extern FUN_0201C7A8 -.extern FUN_0201C7B0 +.extern CalcAngleBetweenVecs .extern FUN_0201C878 .extern FUN_0201CAA8 .extern FUN_0201CB20 @@ -1239,36 +1239,36 @@ .extern GX_BothDispOn .extern GX_SwapDisplay .extern GX_GetEngineALayers -.extern FUN_0201EABC -.extern FUN_0201EB48 -.extern FUN_0201EB64 -.extern FUN_0201EB70 -.extern FUN_0201EB78 -.extern FUN_0201EB8C -.extern FUN_0201EB98 -.extern FUN_0201EBA4 -.extern FUN_0201EC58 -.extern FUN_0201EC68 -.extern FUN_0201EC88 -.extern FUN_0201EC94 -.extern FUN_0201ECA8 -.extern FUN_0201ED10 -.extern FUN_0201ED5C -.extern FUN_0201EE2C -.extern FUN_0201EEF0 -.extern FUN_0201EF2C -.extern FUN_0201EF70 -.extern FUN_0201EF90 -.extern FUN_0201EFB4 -.extern FUN_0201EFE0 -.extern FUN_0201EFEC -.extern FUN_0201F008 -.extern FUN_0201F010 -.extern FUN_0201F014 -.extern FUN_0201F02C -.extern FUN_0201F03C -.extern FUN_0201F04C -.extern FUN_0201F05C +.extern Camera_AllocHistory +.extern Camera_FreeHistory +.extern Camera_Alloc +.extern Camera_Free +.extern Camera_Copy +.extern Camera_SetWorkPtr +.extern Camera_UnsetWorkPtr +.extern Camera_PushLookAtToNNSGlb +.extern Camera_SetLookAtCamUp +.extern Camera_SetFixedTarget +.extern Camera_ClearFixedTarget +.extern Camera_SetPerspectiveClippingPlane +.extern Camera_InitWithTargetAndAngle +.extern Camera_InitWithPosAndAngle +.extern Camera_InitWithPosAndTarget +.extern ApplyPerspectiveType +.extern Camera_SetPerspectiveAngle +.extern Camera_AdjustPerspectiveAngle +.extern Camera_OffsetLookAtPosAndTarget +.extern Camera_SetAngle +.extern Camera_AdjustAngle +.extern Camera_SetDistance +.extern Camera_SetLookAtTargetAndRecalcPos +.extern Camera_GetPerspectiveAngle +.extern Camera_GetDistance +.extern Camera_GetAngle +.extern Camera_GetLookAtCamTarget +.extern Camera_GetLookAtCamPos +.extern Camera_SetLookAtCamTarget +.extern Camera_SetLookAtCamPos .extern FUN_0201F100 .extern FUN_0201F140 .extern FUN_0201F178 @@ -8237,7 +8237,7 @@ .extern UNK_020FF368 .extern UNK_020FF3D4 .extern FX_SinCosTable_ -.extern UNK_02105BB8 +.extern g3dDepthBufferingMode .extern NNS_GfdDefaultFuncFreeTexVram .extern NNS_GfdDefaultFuncFreePlttVram .extern UnloadOverlayByID diff --git a/arm9/lib/include/NNS_g3d.h b/arm9/lib/include/NNS_g3d.h index b927ecfb..f9a3a1b8 100644 --- a/arm9/lib/include/NNS_g3d.h +++ b/arm9/lib/include/NNS_g3d.h @@ -74,4 +74,16 @@ static inline void NNS_G3dGlbLookAt(const VecFx32 * camPos, const VecFx32 * camU NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_INVCAMERA_UPTODATE | NNS_G3D_GLB_FLAG_INVBASECAMERA_UPTODATE | NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE | NNS_G3D_GLB_FLAG_BASECAMERA_UPTODATE);
}
+static inline void NNS_G3dGlbPerspective(fx32 fovySin, fx32 fovyCos, fx32 aspect, fx32 n, fx32 f)
+{
+ MTX_Perspective(fovySin, fovyCos, aspect, n, f, &NNS_G3dGlb.projMtx);
+ NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_INVPROJ_UPTODATE | NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE);
+}
+
+static inline void NNS_G3dGlbOrtho(fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f)
+{
+ MTX_Ortho(t, b, l, r, n, f, &NNS_G3dGlb.projMtx);
+ NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_INVPROJ_UPTODATE | NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE);
+}
+
#endif //GUARD_NNS_G3D_H
diff --git a/arm9/lib/include/fx.h b/arm9/lib/include/fx.h index 5e8b5dca..de851f62 100644 --- a/arm9/lib/include/fx.h +++ b/arm9/lib/include/fx.h @@ -13,15 +13,15 @@ u16 FX_Atan(fx32 x); u16 FX_Atan2(fx32 x, fx32 y); //Vec -void VEC_Add(struct Vecx32 *x, struct Vecx32 *y, struct Vecx32 *dst); -void VEC_Subtract(struct Vecx32 *x, struct Vecx32 *y, struct Vecx32 *dst); +void VEC_Add(const struct Vecx32 *a, const struct Vecx32 *b, struct Vecx32 *dst); +void VEC_Subtract(const struct Vecx32 *a, const struct Vecx32 *b, struct Vecx32 *dst); void VEC_Fx16Add(struct Vecx16 *x, struct Vecx16 *y, struct Vecx16 *dst); fx32 VEC_DotProduct(const struct Vecx32 *a, const struct Vecx32 *b); fx32 VEC_Fx16DotProduct(struct Vecx16 *a, struct Vecx16 *b); void VEC_CrossProduct(const struct Vecx32 *a, const struct Vecx32 *b, struct Vecx32 *dst); void VEC_Fx16CrossProduct(struct Vecx16 *a, struct Vecx16 *b, struct Vecx16 *dst); fx32 VEC_Mag(struct Vecx32 *a); -void VEC_Normalize(struct Vecx32 *a, struct Vecx32 *dst); +void VEC_Normalize(const struct Vecx32 *a, struct Vecx32 *dst); void VEC_Fx16Normalize(struct Vecx16 *a, struct Vecx16 *dst); void VEC_MultAdd(fx32 factor, struct Vecx32 *a, struct Vecx32 *b, struct Vecx32 *dst); @@ -110,4 +110,14 @@ static inline void MTX_LookAt(const VecFx32 * camPos, const VecFx32 * camUp, con G3i_LookAt_(camPos, camUp, target, FALSE, mtx); } +static inline void MTX_Perspective(fx32 fovySin, fx32 fovyCos, fx32 aspect, fx32 n, fx32 f, MtxFx44 * mtx) +{ + G3i_PerspectiveW_(fovySin, fovyCos, aspect, n, f, FX32_ONE, FALSE, mtx); +} + +static inline void MTX_Ortho(fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, MtxFx44 * mtx) +{ + G3i_OrthoW_(t, b, l, r, n, f, FX32_ONE, FALSE, mtx); +} + #endif //GUARD_FX_H diff --git a/arm9/lib/src/FX_vec.c b/arm9/lib/src/FX_vec.c index 4ea65e96..8550b54a 100644 --- a/arm9/lib/src/FX_vec.c +++ b/arm9/lib/src/FX_vec.c @@ -1,13 +1,13 @@ #include "global.h" #include "fx.h" -ARM_FUNC void VEC_Add(struct Vecx32 *a, struct Vecx32 *b, struct Vecx32 *dst){ +ARM_FUNC void VEC_Add(const struct Vecx32 *a, const struct Vecx32 *b, struct Vecx32 *dst){ dst->x = a->x + b->x; dst->y = a->y + b->y; dst->z = a->z + b->z; } -ARM_FUNC void VEC_Subtract(struct Vecx32 *a, struct Vecx32 *b, struct Vecx32 *dst){ +ARM_FUNC void VEC_Subtract(const struct Vecx32 *a, const struct Vecx32 *b, struct Vecx32 *dst){ dst->x = a->x - b->x; dst->y = a->y - b->y; dst->z = a->z - b->z; @@ -60,7 +60,7 @@ ARM_FUNC fx32 VEC_Mag(struct Vecx32 *a){ return ((fx32)reg_CP_SQRT_RESULT + 1) >> 1; } -ARM_FUNC void VEC_Normalize(struct Vecx32 *a, struct Vecx32 *dst){ +ARM_FUNC void VEC_Normalize(const struct Vecx32 *a, struct Vecx32 *dst){ fx64 l2 = (fx64)a->x * a->x; l2 += (fx64)a->y * a->y; l2 += (fx64)a->z * a->z; diff --git a/arm9/modules/05/asm/mod05_021D74E0.s b/arm9/modules/05/asm/mod05_021D74E0.s index 9cea7a32..8bebb5b3 100644 --- a/arm9/modules/05/asm/mod05_021D74E0.s +++ b/arm9/modules/05/asm/mod05_021D74E0.s @@ -815,7 +815,7 @@ MOD05_021D7BE0: ; 0x021D7BE0 sub sp, #0x80 add r4, r0, #0 bl FUN_020222AC - bl FUN_0201EBA4 + bl Camera_PushLookAtToNNSGlb add r0, r4, #0 bl FUN_0205E0A8 ldr r0, [r4, #0x24] @@ -885,7 +885,7 @@ _021D7C1C: ldr r0, [r4, #4] ldr r0, [r0, #4] bl MOD05_021D7FD0 - ldr r1, _021D7CA0 ; =UNK_02105BB8 + ldr r1, _021D7CA0 ; =g3dDepthBufferingMode mov r0, #0 ldr r1, [r1] bl FUN_020222B4 @@ -894,7 +894,7 @@ _021D7C1C: nop _021D7C98: .word NNS_G3dGlb + 0x8 _021D7C9C: .word NNS_G3dGlb + 0x80 -_021D7CA0: .word UNK_02105BB8 +_021D7CA0: .word g3dDepthBufferingMode thumb_func_start MOD05_021D7CA4 MOD05_021D7CA4: ; 0x021D7CA4 @@ -943,7 +943,7 @@ MOD05_021D7CF0: ; 0x021D7CF0 mov r0, #1 mov r1, #0 bl GX_EngineAToggleLayers - ldr r0, _021D7D44 ; =UNK_02105BB8 + ldr r0, _021D7D44 ; =g3dDepthBufferingMode ldr r0, [r0] lsl r1, r0, #1 ldr r0, _021D7D48 ; =0x04000540 @@ -973,7 +973,7 @@ _021D7D36: str r0, [r5, #0x30] pop {r3, r4, r5, pc} nop -_021D7D44: .word UNK_02105BB8 +_021D7D44: .word g3dDepthBufferingMode _021D7D48: .word 0x04000540 thumb_func_start MOD05_021D7D4C diff --git a/arm9/modules/05/asm/mod05_021DA5B8.s b/arm9/modules/05/asm/mod05_021DA5B8.s index b4648ab3..10de9f9c 100644 --- a/arm9/modules/05/asm/mod05_021DA5B8.s +++ b/arm9/modules/05/asm/mod05_021DA5B8.s @@ -132,7 +132,7 @@ _021DA69A: cmp r6, #0x4b beq _021DA6B2 ldr r0, [r5, #0x20] - bl FUN_0201EC88 + bl Camera_ClearFixedTarget mov r0, #1 str r0, [r4, #0x20] _021DA6B2: @@ -360,14 +360,14 @@ _021DA864: pop {r4, r5, r6, r7, pc} _021DA878: ldr r0, [r5, #0x20] - bl FUN_0201F008 + bl Camera_GetPerspectiveAngle strh r0, [r4, #0x24] ldr r0, [sp, #0x1c] cmp r0, #0x4b beq _021DA88E ldr r0, _021DA9D8 ; =0x0000FFA0 ldr r1, [r5, #0x20] - bl FUN_0201EF2C + bl Camera_AdjustPerspectiveAngle _021DA88E: ldr r0, [r4] add r0, r0, #1 @@ -498,7 +498,7 @@ _021DA980: cmp r0, #0 beq _021DA9BE ldr r0, [r5, #0x20] - bl FUN_0201F008 + bl Camera_GetPerspectiveAngle ldrh r1, [r4, #0x24] cmp r1, r0 bne _021DA9BE @@ -555,7 +555,7 @@ MOD05_021DA9E8: ; 0x021DA9E8 lsr r4, r0, #0x18 _021DAA08: add r0, r6, #0 - bl FUN_0201F008 + bl Camera_GetPerspectiveAngle sub r0, r0, r4 lsl r0, r0, #0x10 lsr r0, r0, #0x10 @@ -564,7 +564,7 @@ _021DAA08: lsl r0, r0, #0x10 lsr r0, r0, #0x10 add r1, r6, #0 - bl FUN_0201EF2C + bl Camera_AdjustPerspectiveAngle _021DAA22: ldrb r0, [r5] add r0, r0, #1 @@ -594,14 +594,14 @@ _021DAA4A: mov r4, #0x10 _021DAA4C: add r0, r6, #0 - bl FUN_0201F008 + bl Camera_GetPerspectiveAngle add r0, r0, r4 lsl r0, r0, #0x10 lsr r0, r0, #0x10 beq _021DAA62 add r0, r4, #0 add r1, r6, #0 - bl FUN_0201EF2C + bl Camera_AdjustPerspectiveAngle _021DAA62: ldrb r0, [r5] add r0, r0, #1 @@ -1391,11 +1391,11 @@ _021DB096: str r0, [r4, #8] strb r0, [r4, #4] ldr r0, [r5, #0x20] - bl FUN_0201F008 + bl Camera_GetPerspectiveAngle strh r0, [r4, #0xc] ldr r0, _021DB13C ; =0x0000FFA0 ldr r1, [r5, #0x20] - bl FUN_0201EF2C + bl Camera_AdjustPerspectiveAngle mov r0, #6 str r0, [sp] mov r1, #1 @@ -1440,7 +1440,7 @@ _021DB106: cmp r0, #0 beq _021DB126 ldr r0, [r5, #0x20] - bl FUN_0201F008 + bl Camera_GetPerspectiveAngle ldrh r1, [r4, #0xc] cmp r1, r0 bne _021DB126 @@ -1644,11 +1644,11 @@ _021DB2AA: str r0, [r4, #8] strb r0, [r4, #4] ldr r0, [r5, #0x20] - bl FUN_0201F008 + bl Camera_GetPerspectiveAngle strh r0, [r4, #0xc] ldr r0, _021DB37C ; =0x0000FFA0 ldr r1, [r5, #0x20] - bl FUN_0201EF2C + bl Camera_AdjustPerspectiveAngle cmp r7, #3 bhi _021DB2EA add r0, r7, r7 @@ -1722,7 +1722,7 @@ _021DB348: cmp r0, #0 beq _021DB368 ldr r0, [r5, #0x20] - bl FUN_0201F008 + bl Camera_GetPerspectiveAngle ldrh r1, [r4, #0xc] cmp r1, r0 bne _021DB368 diff --git a/arm9/modules/05/asm/mod05_021DBD84.s b/arm9/modules/05/asm/mod05_021DBD84.s index 9a6cb847..8919e775 100644 --- a/arm9/modules/05/asm/mod05_021DBD84.s +++ b/arm9/modules/05/asm/mod05_021DBD84.s @@ -19,7 +19,7 @@ MOD05_021DBD84: ; 0x021DBD84 bl GF_AssertFail _021DBD9E: mov r0, #4 - bl FUN_0201EB64 + bl Camera_Alloc str r0, [r5, #0x20] ldrb r0, [r4, #0xc] add r2, r4, #4 @@ -31,13 +31,13 @@ _021DBD9E: ldrh r3, [r4, #0xe] ldr r1, [r4] add r0, r7, #0 - bl FUN_0201ECA8 + bl Camera_InitWithTargetAndAngle ldr r0, [r5, #0x20] - bl FUN_0201EB8C + bl Camera_SetWorkPtr ldr r0, [r4, #0x10] ldr r1, [r4, #0x14] ldr r2, [r5, #0x20] - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane cmp r6, #0 beq _021DBDE2 ldr r0, [r5, #0x20] @@ -46,7 +46,7 @@ _021DBD9E: mov r0, #7 mov r2, #2 mov r3, #4 - bl FUN_0201EABC + bl Camera_AllocHistory _021DBDE2: add sp, #0xc pop {r4, r5, r6, r7, pc} @@ -57,11 +57,11 @@ _021DBDE8: .word UNK05_021F6608 MOD05_021DBDEC: ; 0x021DBDEC push {r4, lr} add r4, r0, #0 - bl FUN_0201EB98 + bl Camera_UnsetWorkPtr ldr r0, [r4, #0x20] - bl FUN_0201EB48 + bl Camera_FreeHistory ldr r0, [r4, #0x20] - bl FUN_0201EB70 + bl Camera_Free pop {r4, pc} .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021DC0B8.s b/arm9/modules/05/asm/mod05_021DC0B8.s index 7e1d3287..c3305ed2 100644 --- a/arm9/modules/05/asm/mod05_021DC0B8.s +++ b/arm9/modules/05/asm/mod05_021DC0B8.s @@ -2261,14 +2261,14 @@ MOD05_021DD180: ; 0x021DD180 lsl r0, r0, #2 ldr r0, [r1, r0] ldr r0, [r0, #0x20] - bl FUN_0201F008 + bl Camera_GetPerspectiveAngle add r6, r0, #0 mov r0, #0x41 ldr r1, [r5] lsl r0, r0, #2 ldr r0, [r1, r0] ldr r0, [r0, #0x20] - bl FUN_0201F010 + bl Camera_GetDistance add r1, r0, #0 add r0, sp, #0xc str r0, [sp] diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 95a0e6ca..801b8997 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -419,7 +419,7 @@ _021E8952: ldr r0, [r4, #0x10] ldr r0, [r0, #0x20] str r0, [r5] - bl FUN_0201F010 + bl Camera_GetDistance mov r2, #0x32 add r1, r0, #0 mov r0, #6 @@ -438,7 +438,7 @@ _021E899C: add r6, r0, #0 ldr r0, [r5, #4] ldr r1, [r5] - bl FUN_0201EFE0 + bl Camera_SetDistance cmp r6, #1 bne _021E8A56 ldr r0, [r4] @@ -460,7 +460,7 @@ _021E899C: ldr r0, [r4, #0x10] ldr r0, [r0, #0x20] str r0, [r5] - bl FUN_0201F010 + bl Camera_GetDistance mov r2, #0x32 add r1, r0, #0 mov r0, #6 @@ -478,7 +478,7 @@ _021E89F4: add r6, r0, #0 ldr r0, [r5, #4] ldr r1, [r5] - bl FUN_0201EFE0 + bl Camera_SetDistance cmp r6, #1 bne _021E8A56 add r0, r4, #0 @@ -601,7 +601,7 @@ _021E8AD2: ldr r0, [r4, #0x10] ldr r0, [r0, #0x20] str r0, [r5] - bl FUN_0201F010 + bl Camera_GetDistance mov r2, #0x32 add r1, r0, #0 mov r0, #6 @@ -620,7 +620,7 @@ _021E8B1C: add r6, r0, #0 ldr r0, [r5, #4] ldr r1, [r5] - bl FUN_0201EFE0 + bl Camera_SetDistance cmp r6, #1 bne _021E8BD6 ldr r0, [r4] @@ -642,7 +642,7 @@ _021E8B1C: ldr r0, [r4, #0x10] ldr r0, [r0, #0x20] str r0, [r5] - bl FUN_0201F010 + bl Camera_GetDistance mov r2, #0x1e add r1, r0, #0 mov r0, #6 @@ -660,7 +660,7 @@ _021E8B74: add r6, r0, #0 ldr r0, [r5, #4] ldr r1, [r5] - bl FUN_0201EFE0 + bl Camera_SetDistance cmp r6, #1 bne _021E8BD6 add r0, r4, #0 @@ -1214,7 +1214,7 @@ _021E8F92: ldr r0, [r4, #0x10] ldr r0, [r0, #0x20] str r0, [r5] - bl FUN_0201F010 + bl Camera_GetDistance mov r2, #0x19 add r1, r0, #0 mov r0, #0xc @@ -1234,7 +1234,7 @@ _021E8FDC: bl MOD05_021E36A4 ldr r0, [r5, #4] ldr r1, [r5] - bl FUN_0201EFE0 + bl Camera_SetDistance bl FUN_0200E308 cmp r0, #0 beq _021E9026 @@ -1349,7 +1349,7 @@ _021E90A2: ldr r0, [r4, #0x10] ldr r0, [r0, #0x20] str r0, [r5] - bl FUN_0201F010 + bl Camera_GetDistance mov r2, #0x32 add r1, r0, #0 mov r0, #0xc @@ -1369,7 +1369,7 @@ _021E90EC: bl MOD05_021E36A4 ldr r0, [r5, #4] ldr r1, [r5] - bl FUN_0201EFE0 + bl Camera_SetDistance bl FUN_0200E308 cmp r0, #0 beq _021E9136 @@ -1669,7 +1669,7 @@ _021E931A: mov r0, #7 lsl r0, r0, #6 ldr r0, [r4, r0] - bl FUN_0201F010 + bl Camera_GetDistance add r1, r0, #0 mov r0, #6 str r0, [sp] @@ -1748,7 +1748,7 @@ _021E93A6: ldr r0, [r4, r1] sub r1, r1, #4 ldr r1, [r4, r1] - bl FUN_0201EFE0 + bl Camera_SetDistance add r0, r7, #0 bl MOD05_021E35AC cmp r0, #0 @@ -2079,7 +2079,7 @@ _021E96C8: mov r0, #0x69 lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_0201F010 + bl Camera_GetDistance add r1, r0, #0 mov r0, #8 str r0, [sp] @@ -2105,7 +2105,7 @@ _021E9702: ldr r0, [r4, r1] sub r1, r1, #4 ldr r1, [r4, r1] - bl FUN_0201EFE0 + bl Camera_SetDistance add r0, r6, #0 bl MOD05_021E35AC cmp r0, #1 @@ -2483,7 +2483,7 @@ _021E9A12: mov r0, #0x72 lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_0201F010 + bl Camera_GetDistance add r1, r0, #0 mov r0, #8 str r0, [sp] @@ -2547,7 +2547,7 @@ _021E9A8E: ldr r0, [r4, r1] sub r1, r1, #4 ldr r1, [r4, r1] - bl FUN_0201EFE0 + bl Camera_SetDistance ldr r0, [sp, #0x18] cmp r0, #1 bne _021E9B2A @@ -2853,7 +2853,7 @@ _021E9D34: _021E9D36: sub r0, #0x1c ldr r0, [r4, r0] - bl FUN_0201F010 + bl Camera_GetDistance add r1, r0, #0 mov r0, #0x10 str r0, [sp] @@ -3088,7 +3088,7 @@ _021E9F1C: ldr r0, [r4, r1] sub r1, r1, #4 ldr r1, [r4, r1] - bl FUN_0201EFE0 + bl Camera_SetDistance mov r1, #2 lsl r1, r1, #8 ldr r0, [r4, r1] @@ -3519,7 +3519,7 @@ _021EA2C2: mov r0, #0x1d lsl r0, r0, #4 ldr r0, [r4, r0] - bl FUN_0201F010 + bl Camera_GetDistance add r1, r0, #0 mov r0, #8 str r0, [sp] @@ -3557,7 +3557,7 @@ _021EA310: ldr r0, [r4, r1] sub r1, r1, #4 ldr r1, [r4, r1] - bl FUN_0201EFE0 + bl Camera_SetDistance bl FUN_0200E308 cmp r0, #0 beq _021EA382 @@ -4002,7 +4002,7 @@ _021EA6B4: mov r0, #0x82 lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_0201F010 + bl Camera_GetDistance add r1, r0, #0 mov r0, #0x40 str r0, [sp] @@ -4040,7 +4040,7 @@ _021EA6FA: ldr r0, [r4, r1] sub r1, r1, #4 ldr r1, [r4, r1] - bl FUN_0201EFE0 + bl Camera_SetDistance cmp r5, #1 bne _021EA7DE ldr r0, [sp, #0x18] @@ -5612,10 +5612,10 @@ MOD05_021EB414: ; 0x021EB414 add r5, r0, #0 ldrh r0, [r4, #8] ldr r1, [r5, #0x20] - bl FUN_0201EEF0 + bl Camera_SetPerspectiveAngle ldr r0, [r4] ldr r1, [r5, #0x20] - bl FUN_0201EFE0 + bl Camera_SetDistance ldrh r1, [r4, #4] add r0, sp, #0 strh r1, [r0] @@ -5625,7 +5625,7 @@ MOD05_021EB414: ; 0x021EB414 strh r1, [r0, #4] ldr r1, [r5, #0x20] add r0, sp, #0 - bl FUN_0201EF90 + bl Camera_SetAngle add sp, #8 pop {r3, r4, r5, pc} .balign 4, 0 @@ -5891,7 +5891,7 @@ _021EB640: str r0, [r5] ldr r0, [r4, #0x10] ldr r0, [r0, #0x20] - bl FUN_0201F008 + bl Camera_GetPerspectiveAngle mov r2, #1 add r1, r0, #0 add r5, #8 @@ -5915,7 +5915,7 @@ _021EB66E: lsl r0, r0, #0x10 ldr r1, [r1, #0x20] lsr r0, r0, #0x10 - bl FUN_0201EEF0 + bl Camera_SetPerspectiveAngle cmp r6, #1 bne _021EB754 ldr r0, [r4] @@ -5932,7 +5932,7 @@ _021EB698: bpl _021EB754 ldr r0, [r4, #0x10] ldr r0, [r0, #0x20] - bl FUN_0201F010 + bl Camera_GetDistance mov r3, #8 str r3, [sp] ldr r2, _021EB758 ; =0x0092E000 @@ -5955,7 +5955,7 @@ _021EB6C6: add r6, r0, #0 ldr r0, [r5, #0x1c] ldr r1, [r1, #0x20] - bl FUN_0201EFE0 + bl Camera_SetDistance cmp r6, #1 bne _021EB754 ldr r0, [r4] @@ -7284,7 +7284,7 @@ _021EC19E: str r0, [r4, r1] ldr r1, [r4, r1] add r0, sp, #0x2c - bl FUN_0201F014 + bl Camera_GetAngle add r1, sp, #0x2c mov r2, #0x92 ldrh r0, [r1] @@ -7329,7 +7329,7 @@ _021EC1E8: sub r0, #8 ldr r1, [r4, r1] add r0, r4, r0 - bl FUN_0201EF90 + bl Camera_SetAngle cmp r6, #1 beq _021EC214 _021EC212: @@ -7343,7 +7343,7 @@ _021EC21C: mov r0, #0x8b lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_0201F010 + bl Camera_GetDistance add r1, r0, #0 mov r0, #0x1e str r0, [sp] @@ -7402,7 +7402,7 @@ _021EC284: ldr r0, [r4, r1] sub r1, r1, #4 ldr r1, [r4, r1] - bl FUN_0201EFE0 + bl Camera_SetDistance mov r1, #0x2e ldr r2, [r4] lsl r1, r1, #0xc @@ -15713,7 +15713,7 @@ MOD05_021F0318: ; 0x021F0318 ldr r1, [r4, #0x50] add r0, sp, #0x60 add r6, r2, #0 - bl FUN_0201F02C + bl Camera_GetLookAtCamTarget ldr r3, _021F0434 ; =UNK05_021F8B6C add r2, sp, #0xc ldmia r3!, {r0, r1} @@ -15861,9 +15861,9 @@ MOD05_021F0454: ; 0x021F0454 add r5, r0, #0 add r4, r1, #0 add r0, sp, #0 - bl FUN_0201F014 + bl Camera_GetAngle add r0, r4, #0 - bl FUN_0201F008 + bl Camera_GetPerspectiveAngle strh r0, [r5] ldrh r0, [r5] ldr r2, _021F04F0 ; =FX_SinCosTable_ @@ -15888,10 +15888,10 @@ MOD05_021F0454: ; 0x021F0454 add r1, r4, #0 str r0, [r2] add r0, sp, #0x14 - bl FUN_0201F03C + bl Camera_GetLookAtCamPos add r0, sp, #8 add r1, r4, #0 - bl FUN_0201F02C + bl Camera_GetLookAtCamTarget add r0, sp, #0x14 add r1, sp, #8 add r2, r5, #4 @@ -28249,7 +28249,7 @@ MOD05_021F61F4: ; 0x021F61F4 str r5, [r4, #0x2c] ldr r0, [r5, #0x20] str r0, [r4, #0x30] - bl FUN_0201F010 + bl Camera_GetDistance str r0, [r4, #0x10] str r0, [r4, #0x20] ldr r0, _021F622C ; =MOD05_021F6270 @@ -28385,7 +28385,7 @@ MOD05_021F62FC: ; 0x021F62FC ldr r1, [r1, #0x30] bx r3 nop -_021F6308: .word FUN_0201EFE0 +_021F6308: .word Camera_SetDistance thumb_func_start MOD05_021F630C MOD05_021F630C: ; 0x021F630C diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index 6f2604e6..97e7cc8b 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -1193,10 +1193,10 @@ MOD06_02239F80: ; 0x02239F80 ldr r0, _0223A008 ; =0x00001701 ldr r1, [r5, #0x20] add r4, r2, #0 - bl FUN_0201EEF0 + bl Camera_SetPerspectiveAngle ldr r0, _0223A00C ; =0x000C8A55 ldr r1, [r5, #0x20] - bl FUN_0201EFE0 + bl Camera_SetDistance ldr r0, _0223A010 ; =0x002280EF str r0, [sp, #8] ldr r0, _0223A014 ; =0x000CA424 @@ -1205,7 +1205,7 @@ MOD06_02239F80: ; 0x02239F80 str r0, [sp, #0x10] ldr r1, [r5, #0x20] add r0, sp, #8 - bl FUN_0201F04C + bl Camera_SetLookAtCamTarget ldr r1, _0223A01C ; =0x000022A2 add r0, sp, #0 strh r1, [r0] @@ -1220,7 +1220,7 @@ MOD06_02239F80: ; 0x02239F80 strh r1, [r0, #4] ldr r1, [r5, #0x20] add r0, sp, #0 - bl FUN_0201EF90 + bl Camera_SetAngle .ifdef DIAMOND mov r0, #2 mov r1, #0x7d @@ -1233,7 +1233,7 @@ MOD06_02239F80: ; 0x02239F80 .ifdef DIAMOND lsl r1, r1, #0x10 .endif - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane mov r0, #4 bl MOD06_0223B574 str r0, [r4, #4] @@ -1242,7 +1242,7 @@ MOD06_02239F80: ; 0x02239F80 str r0, [r4, #8] ldr r1, [r5, #0x20] add r0, sp, #8 - bl FUN_0201F02C + bl Camera_GetLookAtCamTarget ldr r0, [r4, #4] ldr r1, [sp, #8] ldr r2, [sp, #0xc] @@ -1282,10 +1282,10 @@ MOD06_0223A020: ; 0x0223A020 ldr r0, _0223A0B8 ; =0x00000F81 ldr r1, [r5, #0x20] add r4, r2, #0 - bl FUN_0201EEF0 + bl Camera_SetPerspectiveAngle ldr r0, _0223A0BC ; =0x0017E532 ldr r1, [r5, #0x20] - bl FUN_0201EFE0 + bl Camera_SetDistance ldr r0, _0223A0C0 ; =0x00F99D58 str r0, [sp, #8] ldr r0, _0223A0C4 ; =0x000C5502 @@ -1294,7 +1294,7 @@ MOD06_0223A020: ; 0x0223A020 str r0, [sp, #0x10] ldr r1, [r5, #0x20] add r0, sp, #8 - bl FUN_0201F04C + bl Camera_SetLookAtCamTarget ldr r1, _0223A0CC ; =0x00000642 add r0, sp, #0 strh r1, [r0] @@ -1304,13 +1304,13 @@ MOD06_0223A020: ; 0x0223A020 strh r1, [r0, #4] ldr r1, [r5, #0x20] add r0, sp, #0 - bl FUN_0201EF90 + bl Camera_SetAngle mov r0, #0x16 mov r1, #0x7d ldr r2, [r5, #0x20] lsl r0, r0, #0xe lsl r1, r1, #0x10 - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane add r0, r5, #0 add r0, #0x48 bl MOD05_021DB4B0 @@ -1326,7 +1326,7 @@ MOD06_0223A020: ; 0x0223A020 str r0, [r4, #8] ldr r1, [r5, #0x20] add r0, sp, #8 - bl FUN_0201F02C + bl Camera_GetLookAtCamTarget ldr r0, [r4, #4] ldr r1, [sp, #8] ldr r2, [sp, #0xc] @@ -1356,10 +1356,10 @@ MOD06_0223A0D4: ; 0x0223A0D4 ldr r0, _0223A16C ; =0x000004C1 ldr r1, [r5, #0x20] add r4, r2, #0 - bl FUN_0201EEF0 + bl Camera_SetPerspectiveAngle ldr r0, _0223A170 ; =0x0026BEC1 ldr r1, [r5, #0x20] - bl FUN_0201EFE0 + bl Camera_SetDistance ldr r0, _0223A174 ; =0x01DF5DFD str r0, [sp, #8] ldr r0, _0223A178 ; =0x00073A0C @@ -1368,7 +1368,7 @@ MOD06_0223A0D4: ; 0x0223A0D4 str r0, [sp, #0x10] ldr r1, [r5, #0x20] add r0, sp, #8 - bl FUN_0201F04C + bl Camera_SetLookAtCamTarget ldr r1, _0223A180 ; =0x000004C2 add r0, sp, #0 strh r1, [r0] @@ -1379,12 +1379,12 @@ MOD06_0223A0D4: ; 0x0223A0D4 strh r1, [r0, #4] ldr r1, [r5, #0x20] add r0, sp, #0 - bl FUN_0201EF90 + bl Camera_SetAngle mov r0, #0xb ldr r1, _0223A184 ; =0x005C8000 ldr r2, [r5, #0x20] lsl r0, r0, #0x10 - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane add r0, r5, #0 add r0, #0x48 bl MOD05_021DB4B0 @@ -1400,7 +1400,7 @@ MOD06_0223A0D4: ; 0x0223A0D4 str r0, [r4, #8] ldr r1, [r5, #0x20] add r0, sp, #8 - bl FUN_0201F02C + bl Camera_GetLookAtCamTarget ldr r0, [r4, #4] ldr r1, [sp, #8] ldr r2, [sp, #0xc] @@ -1526,7 +1526,7 @@ _0223A234: ; jump table _0223A242: ldr r1, [r1, #0x20] add r0, sp, #0 - bl FUN_0201F02C + bl Camera_GetLookAtCamTarget mov r2, #2 ldr r3, [sp, #4] lsl r2, r2, #0xc @@ -1837,7 +1837,7 @@ MOD06_0223A428: ; 0x0223A428 add r4, r0, #0 bl memset add r0, r5, #0 - bl FUN_0201EB64 + bl Camera_Alloc str r0, [r4] mov r0, #5 str r0, [r4, #0x40] @@ -1849,7 +1849,7 @@ MOD06_0223A44C: ; 0x0223A44C push {r4, lr} add r4, r0, #0 ldr r0, [r4] - bl FUN_0201EB70 + bl Camera_Free add r0, r4, #0 bl FreeToHeap pop {r4, pc} @@ -1866,10 +1866,10 @@ MOD06_0223A460: ; 0x0223A460 bl MOD06_0223A5C0 ldr r0, [sp, #0x2c] ldr r1, [r5] - bl FUN_0201EB78 + bl Camera_Copy ldr r1, [sp, #0x2c] add r0, sp, #4 - bl FUN_0201F02C + bl Camera_GetLookAtCamTarget add r3, sp, #4 add r2, r5, #0 add r2, #0x28 @@ -1887,9 +1887,9 @@ MOD06_0223A460: ; 0x0223A460 str r0, [r2] ldr r1, [r5] add r0, r6, #0 - bl FUN_0201EC68 + bl Camera_SetFixedTarget ldr r0, [r5] - bl FUN_0201EB8C + bl Camera_SetWorkPtr ldr r0, [sp, #0x2c] mov r1, #0 str r0, [r5, #4] @@ -2011,7 +2011,7 @@ _0223A598: pop {r3, r4, r5, pc} _0223A5A0: ldr r0, [r4, #4] - bl FUN_0201EB8C + bl Camera_SetWorkPtr ldr r0, [r4, #0x40] add r0, r0, #1 str r0, [r4, #0x40] @@ -8786,7 +8786,7 @@ MOD06_0223D918: ; 0x0223D918 add r0, r4, #0 bl MOD06_0223D978 mov r0, #0xb - bl FUN_0201EB64 + bl Camera_Alloc add r1, r4, #0 add r1, #0x90 str r0, [r1] @@ -8794,11 +8794,11 @@ MOD06_0223D918: ; 0x0223D918 add r1, #0x90 ldr r0, [r5, #0x20] ldr r1, [r1] - bl FUN_0201EB78 + bl Camera_Copy add r0, r4, #0 add r0, #0x90 ldr r0, [r0] - bl FUN_0201EB8C + bl Camera_SetWorkPtr ldr r0, _0223D974 ; =0x0000023D mov r1, #0 strb r1, [r4, r0] @@ -9057,7 +9057,7 @@ MOD06_0223DB64: ; 0x0223DB64 add r1, #0x90 ldr r1, [r1] add r0, r2, #0 - bl FUN_0201EF70 + bl Camera_OffsetLookAtPosAndTarget ldr r0, _0223DBC8 ; =0x0000023D add sp, #0xc ldrb r1, [r4, r0] @@ -10832,7 +10832,7 @@ MOD06_0223EA38: ; 0x0223EA38 add r1, #0x90 ldr r1, [r1] add r0, r2, #0 - bl FUN_0201EF70 + bl Camera_OffsetLookAtPosAndTarget ldr r0, _0223EAFC ; =0x0000023D add sp, #0xc ldrb r1, [r5, r0] @@ -10847,13 +10847,13 @@ _0223EA74: add r0, #0x90 ldr r0, [r0] ldr r1, [r4, #0x20] - bl FUN_0201EB78 + bl Camera_Copy add r0, r5, #0 add r0, #0x90 ldr r0, [r0] - bl FUN_0201EB70 + bl Camera_Free ldr r0, [r4, #0x20] - bl FUN_0201EB8C + bl Camera_SetWorkPtr add r0, r5, #0 bl MOD06_0223EBD4 add r1, r5, #0 @@ -17787,7 +17787,7 @@ _02242342: ldr r1, _022423FC ; =0x006A4000 ldr r2, [r6, #0x20] lsl r0, r0, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane mov r1, #6 str r1, [sp] ldr r0, _02242400 ; =0x000076A0 diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s index efb8e257..db31306c 100644 --- a/arm9/modules/07/asm/module_07.s +++ b/arm9/modules/07/asm/module_07.s @@ -3047,7 +3047,7 @@ MOD07_022136B4: ; 0x022136B4 mov r1, #0xe1 lsl r0, r0, #0xc lsl r1, r1, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane ldr r2, [r4] mov r0, #0x3d ldr r2, [r2, #0x24] diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s index ed457683..d5c3e93f 100644 --- a/arm9/modules/08/asm/module_08.s +++ b/arm9/modules/08/asm/module_08.s @@ -7997,7 +7997,7 @@ MOD08_0221599C: ; 0x0221599C mov r1, #0xe1 lsl r0, r0, #0xc lsl r1, r1, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane _022159D4: add r0, r4, #0 add sp, #8 @@ -8031,7 +8031,7 @@ MOD08_022159E4: ; 0x022159E4 mov r1, #0xe1 lsl r0, r0, #0xc lsl r1, r1, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane _02215A1C: add r0, r4, #0 add sp, #8 @@ -8309,10 +8309,10 @@ _02215BFA: add r4, r0, #0 add r0, sp, #8 add r1, r4, #0 - bl FUN_0201F014 + bl Camera_GetAngle add r0, sp, #8 add r1, r4, #0 - bl FUN_0201EF90 + bl Camera_SetAngle add sp, #0x34 pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -12154,7 +12154,7 @@ MOD08_02217904: ; 0x02217904 bl FUN_0201343C add r1, r0, #0 add r0, sp, #0 - bl FUN_0201EF90 + bl Camera_SetAngle mov r0, #1 add sp, #8 pop {r3, pc} @@ -12182,7 +12182,7 @@ MOD08_02217928: ; 0x02217928 bl FUN_02013440 add r0, sp, #0 add r1, r5, #0 - bl FUN_0201EF90 + bl Camera_SetAngle mov r0, #1 add sp, #8 pop {r3, r4, r5, pc} @@ -12214,7 +12214,7 @@ MOD08_02217964: ; 0x02217964 bl FUN_0201343C add r1, r0, #0 add r0, sp, #0 - bl FUN_0201EF90 + bl Camera_SetAngle mov r0, #1 add sp, #0x18 pop {r4, pc} @@ -12242,7 +12242,7 @@ MOD08_022179A0: ; 0x022179A0 bl FUN_02013440 add r0, sp, #0 add r1, r5, #0 - bl FUN_0201EF90 + bl Camera_SetAngle mov r0, #1 add sp, #8 pop {r3, r4, r5, pc} @@ -12284,12 +12284,12 @@ MOD08_022179DC: ; 0x022179DC bne _02217A2A add r0, sp, #8 add r1, r5, #0 - bl FUN_0201EF90 + bl Camera_SetAngle b _02217A32 _02217A2A: add r0, sp, #0 add r1, r5, #0 - bl FUN_0201EF90 + bl Camera_SetAngle _02217A32: mov r0, #1 add sp, #0x10 @@ -12320,7 +12320,7 @@ MOD08_02217A3C: ; 0x02217A3C bl FUN_02013440 add r0, sp, #0 add r1, r5, #0 - bl FUN_0201EF90 + bl Camera_SetAngle mov r0, #1 add sp, #8 pop {r3, r4, r5, pc} @@ -12350,7 +12350,7 @@ MOD08_02217A78: ; 0x02217A78 bl FUN_02013440 add r0, sp, #0 add r1, r5, #0 - bl FUN_0201EF90 + bl Camera_SetAngle mov r0, #1 add sp, #8 pop {r3, r4, r5, pc} @@ -12371,7 +12371,7 @@ MOD08_02217AB4: ; 0x02217AB4 bl MOD08_022278FC add r0, sp, #0 add r1, r4, #0 - bl FUN_0201F04C + bl Camera_SetLookAtCamTarget mov r0, #1 add sp, #0xc pop {r4, r5, pc} @@ -12391,7 +12391,7 @@ MOD08_02217ADC: ; 0x02217ADC bl MOD08_022278FC add r0, sp, #0 add r1, r4, #0 - bl FUN_0201F04C + bl Camera_SetLookAtCamTarget mov r0, #1 add sp, #0xc pop {r4, r5, pc} diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s index 68371f50..1417c3b5 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -6315,7 +6315,7 @@ _022309E8: mov r1, #0xe1 lsl r0, r0, #0xc lsl r1, r1, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane mov r0, #0x3d mov r1, #3 mov r2, #0x17 diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index 59f678ec..d8c94cee 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -37211,7 +37211,7 @@ MOD18_0224B804: ; 0x0224B804 _0224B83E: ldr r1, [r4, #0x20] add r0, sp, #0 - bl FUN_0201EF70 + bl Camera_OffsetLookAtPosAndTarget add sp, #0xc pop {r4, r5, pc} .align 2, 0 diff --git a/arm9/modules/63/asm/mod63_021D74E0.s b/arm9/modules/63/asm/mod63_021D74E0.s index d5ce1348..bbd567d0 100644 --- a/arm9/modules/63/asm/mod63_021D74E0.s +++ b/arm9/modules/63/asm/mod63_021D74E0.s @@ -623,7 +623,7 @@ _021D79B6: pop {r4, r5, pc} _021D79CA: bl FUN_020222AC - bl FUN_0201EBA4 + bl Camera_PushLookAtToNNSGlb add r1, r4, #0 add r0, sp, #0 add r1, #0x90 @@ -965,7 +965,7 @@ _021D7C52: add r0, #0xd0 str r1, [r0] add r0, r4, #0 - bl FUN_0201EB64 + bl Camera_Alloc add r1, r5, #0 add r1, #0xa0 str r0, [r1] @@ -981,23 +981,23 @@ _021D7C52: add r0, r5, #0 add r0, #0xbc lsl r2, r2, #4 - bl FUN_0201ED5C + bl Camera_InitWithPosAndTarget add r2, r5, #0 add r2, #0xa0 mov r1, #0x19 ldr r2, [r2] mov r0, #0 lsl r1, r1, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane add r1, r5, #0 add r1, #0xa0 ldr r1, [r1] mov r0, #0 - bl FUN_0201EE2C + bl ApplyPerspectiveType add r0, r5, #0 add r0, #0xa0 ldr r0, [r0] - bl FUN_0201EB8C + bl Camera_SetWorkPtr mov r3, #0x42 lsl r3, r3, #2 add r2, r3, #2 @@ -1652,13 +1652,13 @@ _021D81DC: add r0, r4, #0 ldr r1, [r1] add r0, #0xbc - bl FUN_0201F04C + bl Camera_SetLookAtCamTarget add r1, r4, #0 add r1, #0xa0 add r0, r4, #0 ldr r1, [r1] add r0, #0xc8 - bl FUN_0201F05C + bl Camera_SetLookAtCamPos cmp r5, #1 bne _021D824E mov r0, #4 @@ -1727,13 +1727,13 @@ _021D8272: add r0, r5, #0 ldr r1, [r1] add r0, #0xfc - bl FUN_0201F04C + bl Camera_SetLookAtCamTarget add r1, r5, #0 add r1, #0xa0 add r0, r5, #0 ldr r1, [r1] add r0, #0xe4 - bl FUN_0201F05C + bl Camera_SetLookAtCamPos mov r0, #1 add r1, r0, #0 bl GX_EngineAToggleLayers @@ -1838,7 +1838,7 @@ MOD63_021D8360: ; 0x021D8360 ldr r0, [r0] add r4, r1, #0 add r6, r2, #0 - bl FUN_0201EB70 + bl Camera_Free add r0, r5, #4 bl MOD63_021D7970 add r0, r4, #0 diff --git a/arm9/modules/63/asm/mod63_021D8890.s b/arm9/modules/63/asm/mod63_021D8890.s index 34d50a11..0fd84316 100644 --- a/arm9/modules/63/asm/mod63_021D8890.s +++ b/arm9/modules/63/asm/mod63_021D8890.s @@ -1631,9 +1631,9 @@ MOD63_021D95A8: ; 0x021D95A8 ldrb r0, [r0] cmp r0, #0 beq _021D95F6 - bl FUN_0201EB98 + bl Camera_UnsetWorkPtr ldr r0, [r5, #0x78] - bl FUN_0201EB70 + bl Camera_Free mov r4, #0 mov r6, #0x58 _021D95D0: @@ -2016,7 +2016,7 @@ _021D98BC: ldr r0, [sp, #0xc] bl NARC_dtor mov r0, #0x4c - bl FUN_0201EB64 + bl Camera_Alloc add r3, sp, #0x20 ldr r4, _021D9968 ; =MOD63_021DBAE4 str r0, [r5, #0x44] @@ -2034,10 +2034,10 @@ _021D98BC: str r0, [sp, #8] add r0, r2, #0 ldr r2, _021D9974 ; =MOD63_021DBB80 - bl FUN_0201ECA8 + bl Camera_InitWithTargetAndAngle ldr r0, _021D9978 ; =0x00000981 ldr r1, [r5, #0x44] - bl FUN_0201EEF0 + bl Camera_SetPerspectiveAngle ldr r4, _021D997C ; =MOD63_021DBB08 add r3, sp, #0x14 ldmia r4!, {r0, r1} @@ -2047,9 +2047,9 @@ _021D98BC: str r0, [r3] ldr r1, [r5, #0x44] add r0, r2, #0 - bl FUN_0201EF70 + bl Camera_OffsetLookAtPosAndTarget ldr r0, [r5, #0x44] - bl FUN_0201EB8C + bl Camera_SetWorkPtr mov r0, #1 strb r0, [r5, #4] add sp, #0x2c @@ -2091,7 +2091,7 @@ _021D998C: str r0, [r1, #4] str r0, [r1, #8] bl FUN_020222AC - bl FUN_0201EBA4 + bl Camera_PushLookAtToNNSGlb mov r4, #0 add r5, #0x48 add r7, sp, #0 @@ -2773,19 +2773,19 @@ MOD63_021D9F38: ; 0x021D9F38 cmp r5, r1 bgt _021D9FE2 ldr r0, [r4, #0x44] - bl FUN_0201F008 + bl Camera_GetPerspectiveAngle ldr r1, _021DA07C ; =0x000005C1 sub r0, #0x20 cmp r0, r1 ble _021D9F68 ldr r0, _021DA080 ; =0x0000FFE0 ldr r1, [r4, #0x44] - bl FUN_0201EF2C + bl Camera_AdjustPerspectiveAngle b _021D9F70 _021D9F68: add r0, r1, #0 ldr r1, [r4, #0x44] - bl FUN_0201EEF0 + bl Camera_SetPerspectiveAngle _021D9F70: mov r0, #2 ldr r1, [sp, #0x4c] @@ -2794,7 +2794,7 @@ _021D9F70: str r0, [sp, #0x4c] ldr r1, [r4, #0x44] add r0, sp, #0x44 - bl FUN_0201EF70 + bl Camera_OffsetLookAtPosAndTarget ldr r0, _021DA078 ; =0x000004AB cmp r5, r0 bne _021DA074 @@ -2814,7 +2814,7 @@ _021D9F70: str r0, [sp, #8] add r0, r2, #0 ldr r2, _021DA08C ; =MOD63_021DBB80 - bl FUN_0201ECA8 + bl Camera_InitWithTargetAndAngle ldr r5, _021DA090 ; =MOD63_021DBB20 add r3, sp, #0x2c ldmia r5!, {r0, r1} @@ -2824,7 +2824,7 @@ _021D9F70: str r0, [r3] ldr r1, [r4, #0x44] add r0, r2, #0 - bl FUN_0201EF70 + bl Camera_OffsetLookAtPosAndTarget ldr r2, _021DA094 ; =MOD63_021DBAC8 add r1, sp, #0xc ldrh r3, [r2] @@ -2837,7 +2837,7 @@ _021D9F70: strh r3, [r1, #4] strh r2, [r1, #6] ldr r1, [r4, #0x44] - bl FUN_0201EFB4 + bl Camera_AdjustAngle add sp, #0x50 pop {r4, r5, r6, pc} _021D9FE2: @@ -2850,7 +2850,7 @@ _021D9FE2: add r1, r2, r1 str r1, [sp, #0x44] ldr r1, [r4, #0x44] - bl FUN_0201EF70 + bl Camera_OffsetLookAtPosAndTarget ldr r3, _021DA098 ; =0x0000057D cmp r5, r3 bne _021DA074 @@ -2870,10 +2870,10 @@ _021D9FE2: str r0, [sp, #8] add r0, r2, #0 ldr r2, _021DA08C ; =MOD63_021DBB80 - bl FUN_0201ECA8 + bl Camera_InitWithTargetAndAngle ldr r0, _021DA07C ; =0x000005C1 ldr r1, [r4, #0x44] - bl FUN_0201EEF0 + bl Camera_SetPerspectiveAngle ldr r5, _021DA0A0 ; =MOD63_021DBAF0 add r3, sp, #0x14 ldmia r5!, {r0, r1} @@ -2883,7 +2883,7 @@ _021D9FE2: str r0, [r3] ldr r1, [r4, #0x44] add r0, r2, #0 - bl FUN_0201EF70 + bl Camera_OffsetLookAtPosAndTarget add sp, #0x50 pop {r4, r5, r6, pc} _021DA044: @@ -2891,7 +2891,7 @@ _021DA044: cmp r5, r0 blt _021DA062 ldr r0, [r4, #0x44] - bl FUN_0201F008 + bl Camera_GetPerspectiveAngle mov r1, #1 add r0, #0x20 lsl r1, r1, #0xe @@ -2899,7 +2899,7 @@ _021DA044: bge _021DA062 ldr r1, [r4, #0x44] mov r0, #0x20 - bl FUN_0201EF2C + bl Camera_AdjustPerspectiveAngle _021DA062: mov r0, #1 ldr r1, [sp, #0x4c] @@ -2908,7 +2908,7 @@ _021DA062: str r0, [sp, #0x4c] ldr r1, [r4, #0x44] add r0, sp, #0x44 - bl FUN_0201EF70 + bl Camera_OffsetLookAtPosAndTarget _021DA074: add sp, #0x50 pop {r4, r5, r6, pc} diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index 84461fe1..4164ac76 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -18,7 +18,7 @@ extern struct UnkStruct63_021DB450 * FUN_02006D98(u32); extern void FUN_02068C00(struct UnkStruct63_021DB49C*, u16, u32, u32, u32, u32, u32); extern void FUN_02012CC8(void); extern void FUN_02007558(u32, u32, u32); -extern void FUN_0201EC94(u32, u32, u32); +extern void Camera_SetPerspectiveClippingPlane(u32, u32, u32); extern u32 FUN_0201343C(void); extern void FUN_02013194(void *, u32, u32, u32); extern u32 FUN_0201318C(u32, u32, u32); @@ -87,7 +87,7 @@ THUMB_FUNC void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB450 * arg FUN_02012CC8(); arg0->field_14 = AllocFromHeap(0x4C, 0x4800); arg0->field_18 = FUN_02012CDC(MOD63_021DB450, MOD63_021DB474, arg0->field_14, 0x4800, 1, 0x4C); - FUN_0201EC94(0x1000, 0x384000, FUN_0201343C()); + Camera_SetPerspectiveClippingPlane(0x1000, 0x384000, FUN_0201343C()); FUN_02013194(arg0->field_18, FUN_0201318C(0x3D, 4, 0x4C), 10, 1); } diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s index aecc5268..f66135e9 100644 --- a/arm9/modules/64/asm/module_64.s +++ b/arm9/modules/64/asm/module_64.s @@ -1653,7 +1653,7 @@ MOD64_021D81D8: ; 0x021D81D8 mov r0, #0x11 add r2, r1, #0 bl NNS_G3dGeBufferOP_N - bl FUN_0201EBA4 + bl Camera_PushLookAtToNNSGlb add r0, r4, #0 bl MOD64_021D8058 mov r2, #1 @@ -1679,7 +1679,7 @@ MOD64_021D824C: ; 0x021D824C push {r4, lr} add r4, r0, #0 add r0, r1, #0 - bl FUN_0201EB64 + bl Camera_Alloc mov r1, #0x5f lsl r1, r1, #4 str r0, [r4, r1] @@ -1713,7 +1713,7 @@ MOD64_021D8268: ; 0x021D8268 lsl r1, r1, #0xe add r2, sp, #0xc str r4, [sp, #8] - bl FUN_0201ECA8 + bl Camera_InitWithTargetAndAngle mov r1, #0 mov r0, #1 lsl r0, r0, #0xc @@ -1722,9 +1722,9 @@ MOD64_021D8268: ; 0x021D8268 str r1, [sp, #0x1c] add r0, sp, #0x14 add r1, r4, #0 - bl FUN_0201EC58 + bl Camera_SetLookAtCamUp add r0, r4, #0 - bl FUN_0201EB8C + bl Camera_SetWorkPtr add sp, #0x20 pop {r4, pc} .align 2, 0 @@ -1740,7 +1740,7 @@ MOD64_021D82BC: ; 0x021D82BC ldr r0, [r0, r1] bx r3 nop -_021D82C8: .word FUN_0201EB70 +_021D82C8: .word Camera_Free thumb_func_end MOD64_021D82BC thumb_func_start MOD64_021D82CC @@ -2573,10 +2573,10 @@ MOD64_021D88C4: ; 0x021D88C4 strh r1, [r0, #4] ldr r1, [r5, #0x30] add r0, sp, #0 - bl FUN_0201EF90 + bl Camera_SetAngle ldr r0, [r5, #0x10] ldr r1, [r5, #0x30] - bl FUN_0201EFE0 + bl Camera_SetDistance ldr r1, [r5, #0x20] ldr r0, [r5, #0x34] str r1, [r0, #8] diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s index 13d12cb8..dfc306ac 100644 --- a/arm9/modules/65/asm/module_65.s +++ b/arm9/modules/65/asm/module_65.s @@ -5378,7 +5378,7 @@ MOD65_021D9F50: ; 0x021D9F50 push {r4, lr} add r4, r0, #0 bl FUN_020222AC - bl FUN_0201EBA4 + bl Camera_PushLookAtToNNSGlb ldr r2, _021D9F84 ; =0x04000440 mov r3, #0 add r1, r2, #0 @@ -5406,7 +5406,7 @@ MOD65_021D9F8C: ; 0x021D9F8C push {r4, lr} add r4, r0, #0 ldr r0, [r4] - bl FUN_0201EB70 + bl Camera_Free ldr r0, [r4, #4] bl FUN_020072E8 pop {r4, pc} @@ -5432,7 +5432,7 @@ MOD65_021D9FA0: ; 0x021D9FA0 strh r0, [r1, #4] strh r0, [r1, #6] add r0, r2, #0 - bl FUN_0201EB64 + bl Camera_Alloc str r0, [r4] mov r1, #1 str r1, [sp] @@ -5442,16 +5442,16 @@ MOD65_021D9FA0: ; 0x021D9FA0 add r0, sp, #0x10 lsl r1, r1, #0x10 add r2, sp, #8 - bl FUN_0201ED10 + bl Camera_InitWithPosAndAngle mov r1, #0x19 ldr r2, [r4] mov r0, #0 lsl r1, r1, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane ldr r0, [r4] - bl FUN_0201EC88 + bl Camera_ClearFixedTarget ldr r0, [r4] - bl FUN_0201EB8C + bl Camera_SetWorkPtr add sp, #0x1c pop {r4, r5, pc} .align 2, 0 diff --git a/arm9/modules/68/asm/module_68.s b/arm9/modules/68/asm/module_68.s index e30ad283..633d7b77 100644 --- a/arm9/modules/68/asm/module_68.s +++ b/arm9/modules/68/asm/module_68.s @@ -1470,7 +1470,7 @@ MOD68_021D806C: ; 0x021D806C push {r4, lr} add r4, r0, #0 bl FUN_020222AC - bl FUN_0201EBA4 + bl Camera_PushLookAtToNNSGlb ldr r2, _021D80A0 ; =0x04000440 mov r3, #0 add r1, r2, #0 @@ -1501,7 +1501,7 @@ MOD68_021D80A8: ; 0x021D80A8 ldr r0, [r0] bx r3 .align 2, 0 -_021D80B0: .word FUN_0201EB70 +_021D80B0: .word Camera_Free thumb_func_end MOD68_021D80A8 thumb_func_start MOD68_021D80B4 @@ -1522,7 +1522,7 @@ MOD68_021D80B4: ; 0x021D80B4 strh r0, [r1, #4] strh r0, [r1, #6] mov r0, #0x24 - bl FUN_0201EB64 + bl Camera_Alloc add r1, r4, #0 add r1, #0xd0 str r0, [r1] @@ -1536,21 +1536,21 @@ MOD68_021D80B4: ; 0x021D80B4 add r0, sp, #0x10 lsl r1, r1, #0x10 add r2, sp, #8 - bl FUN_0201ED10 + bl Camera_InitWithPosAndAngle add r2, r4, #0 add r2, #0xd0 mov r1, #0x19 ldr r2, [r2] mov r0, #0 lsl r1, r1, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] - bl FUN_0201EC88 + bl Camera_ClearFixedTarget add r4, #0xd0 ldr r0, [r4] - bl FUN_0201EB8C + bl Camera_SetWorkPtr add sp, #0x1c pop {r3, r4, pc} .align 2, 0 diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s index b29554ea..1667a6f0 100644 --- a/arm9/modules/69/asm/module_69.s +++ b/arm9/modules/69/asm/module_69.s @@ -996,7 +996,7 @@ MOD69_0222DDFC: ; 0x0222DDFC sub sp, #0x18 add r4, r0, #0 mov r0, #0x3f - bl FUN_0201EB64 + bl Camera_Alloc ldr r2, _0222DE80 ; =0x00001B1C ldr r3, _0222DE84 ; =0x00000FA4 str r0, [r4, r2] @@ -1029,7 +1029,7 @@ MOD69_0222DDFC: ; 0x0222DDFC add r0, r4, r0 lsl r1, r1, #0xc add r2, r4, r2 - bl FUN_0201ECA8 + bl Camera_InitWithTargetAndAngle mov r1, #0 mov r0, #1 lsl r0, r0, #0xc @@ -1039,17 +1039,17 @@ MOD69_0222DDFC: ; 0x0222DDFC ldr r1, _0222DE80 ; =0x00001B1C add r0, sp, #0xc ldr r1, [r4, r1] - bl FUN_0201EC58 + bl Camera_SetLookAtCamUp ldr r0, _0222DE80 ; =0x00001B1C ldr r0, [r4, r0] - bl FUN_0201EB8C + bl Camera_SetWorkPtr ldr r2, _0222DE80 ; =0x00001B1C mov r0, #1 mov r1, #0x7d ldr r2, [r4, r2] lsl r0, r0, #0xc lsl r1, r1, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane add sp, #0x18 pop {r4, pc} nop @@ -1064,7 +1064,7 @@ MOD69_0222DE88: ; 0x0222DE88 bx r3 .align 2, 0 _0222DE90: .word 0x00001B1C -_0222DE94: .word FUN_0201EB70 +_0222DE94: .word Camera_Free thumb_func_start MOD69_0222DE98 MOD69_0222DE98: ; 0x0222DE98 diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s index 697ffe65..e324562b 100644 --- a/arm9/modules/77/asm/module_77.s +++ b/arm9/modules/77/asm/module_77.s @@ -88,7 +88,7 @@ _021D7540: ldr r1, _021D75F8 ; =0x0000C070 str r0, [r5, r1] ldr r0, [r5] - bl FUN_0201EB64 + bl Camera_Alloc ldr r1, _021D75FC ; =0x0000C2CC str r0, [r5, r1] mov r0, #0 @@ -817,7 +817,7 @@ MOD77_021D7BAC: ; 0x021D7BAC bl GX_EngineBToggleLayers ldr r0, _021D7C14 ; =0x0000C2CC ldr r0, [r4, r0] - bl FUN_0201EB70 + bl Camera_Free ldr r0, _021D7C18 ; =0x0000C070 ldr r0, [r4, r0] bl ScrStrBufs_delete @@ -2490,20 +2490,20 @@ MOD77_021D8970: ; 0x021D8970 ldr r2, _021D89EC ; =0x000005C1 str r0, [sp, #4] add r0, r7, #0 - bl FUN_0201ED5C + bl Camera_InitWithPosAndTarget ldr r2, _021D89E8 ; =0x0000C2CC mov r1, #0x19 ldr r2, [r4, r2] mov r0, #0 lsl r1, r1, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane ldr r1, _021D89E8 ; =0x0000C2CC mov r0, #0 ldr r1, [r4, r1] - bl FUN_0201EE2C + bl ApplyPerspectiveType ldr r0, _021D89E8 ; =0x0000C2CC ldr r0, [r4, r0] - bl FUN_0201EB8C + bl Camera_SetWorkPtr ldr r0, _021D89F0 ; =0x0000C2F4 ldrh r1, [r4, r0] cmp r1, #0 @@ -2944,7 +2944,7 @@ MOD77_021D8CF8: ; 0x021D8CF8 add r5, r0, #0 ldr r0, _021D8D7C ; =0x0000C2CC ldr r0, [r5, r0] - bl FUN_0201F010 + bl Camera_GetDistance ldr r1, _021D8D80 ; =0x0000C2D8 mov r4, #0 ldrh r2, [r5, r1] @@ -3005,7 +3005,7 @@ _021D8D6A: _021D8D70: ldr r1, _021D8D7C ; =0x0000C2CC ldr r1, [r5, r1] - bl FUN_0201EFE0 + bl Camera_SetDistance add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 @@ -3047,7 +3047,7 @@ _021D8D90: pop {r3, r4, r5, r6, r7, pc} _021D8DC2: bl FUN_020222AC - bl FUN_0201EBA4 + bl Camera_PushLookAtToNNSGlb ldr r1, _021D8E7C ; =0x0000C2B4 add r0, sp, #0x4c add r1, r5, r1 diff --git a/arm9/modules/78/asm/module_78.s b/arm9/modules/78/asm/module_78.s index 85167a84..ad90fb3a 100644 --- a/arm9/modules/78/asm/module_78.s +++ b/arm9/modules/78/asm/module_78.s @@ -33,7 +33,7 @@ MOD78_021D74E0: ; 0x021D74E0 add r0, #0x9d strb r1, [r0] mov r0, #0x48 - bl FUN_0201EB64 + bl Camera_Alloc str r0, [r4] bl MOD78_021D7708 add r0, r4, #0 @@ -50,9 +50,9 @@ MOD78_021D74E0: ; 0x021D74E0 str r1, [sp, #8] ldr r1, _021D75C8 ; =0x0029AEC1 ldr r3, _021D75CC ; =0x000005C1 - bl FUN_0201ECA8 + bl Camera_InitWithTargetAndAngle ldr r0, [r4] - bl FUN_0201EB8C + bl Camera_SetWorkPtr mov r4, #0 mov r7, #2 mov r6, #4 @@ -209,7 +209,7 @@ _021D7680: cmp r2, #4 blo _021D7668 bl FUN_020222AC - bl FUN_0201EBA4 + bl Camera_PushLookAtToNNSGlb add r0, r4, #4 add r1, sp, #0 add r2, sp, #0x18 @@ -254,7 +254,7 @@ _021D76C8: ldr r0, [r6, #0x5c] bl FreeToHeap ldr r0, [r6] - bl FUN_0201EB70 + bl Camera_Free ldr r0, [sp] bl OverlayManager_FreeData bl FUN_0201B398 diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s index 07e7ce6f..b3f57bd5 100644 --- a/arm9/modules/81/asm/module_81.s +++ b/arm9/modules/81/asm/module_81.s @@ -1480,7 +1480,7 @@ MOD81_02238940: ; 0x02238940 mov r0, #0x11 add r2, r1, #0 bl NNS_G3dGeBufferOP_N - bl FUN_0201EBA4 + bl Camera_PushLookAtToNNSGlb ldr r0, [r5, #0x1c] mov r6, #0 cmp r0, #0 @@ -1858,7 +1858,7 @@ MOD81_02238B8C: ; 0x02238B8C mov r0, #0x11 add r2, r1, #0 bl NNS_G3dGeBufferOP_N - bl FUN_0201EBA4 + bl Camera_PushLookAtToNNSGlb add r1, r4, #0 ldr r0, [r4, #0x5c] add r4, #0x74 @@ -1887,7 +1887,7 @@ MOD81_02238C40: ; 0x02238C40 add r4, r1, #0 ldr r1, [r2] add r0, sp, #0 - bl FUN_0201F03C + bl Camera_GetLookAtCamPos add r2, sp, #0 ldmia r2!, {r0, r1} stmia r4!, {r0, r1} @@ -1906,7 +1906,7 @@ MOD81_02238C60: ; 0x02238C60 ldr r1, [r2] bx r3 nop -_02238C6C: .word FUN_0201EF90 +_02238C6C: .word Camera_SetAngle thumb_func_end MOD81_02238C60 thumb_func_start MOD81_02238C70 @@ -1917,7 +1917,7 @@ MOD81_02238C70: ; 0x02238C70 ldr r1, [r2] bx r3 nop -_02238C7C: .word FUN_0201EFB4 +_02238C7C: .word Camera_AdjustAngle thumb_func_end MOD81_02238C70 thumb_func_start MOD81_02238C80 @@ -1928,7 +1928,7 @@ MOD81_02238C80: ; 0x02238C80 ldr r1, [r2] bx r3 nop -_02238C8C: .word FUN_0201EE2C +_02238C8C: .word ApplyPerspectiveType thumb_func_end MOD81_02238C80 thumb_func_start MOD81_02238C90 @@ -1939,7 +1939,7 @@ MOD81_02238C90: ; 0x02238C90 ldr r1, [r2] bx r3 nop -_02238C9C: .word FUN_0201EEF0 +_02238C9C: .word Camera_SetPerspectiveAngle thumb_func_end MOD81_02238C90 thumb_func_start MOD81_02238CA0 @@ -1951,7 +1951,7 @@ MOD81_02238CA0: ; 0x02238CA0 add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 - bl FUN_0201EB64 + bl Camera_Alloc str r0, [r5] str r4, [r5, #4] str r6, [r5, #8] @@ -1971,7 +1971,7 @@ MOD81_02238CA0: ; 0x02238CA0 add r0, r5, #4 lsl r1, r1, #0xe add r2, #0x10 - bl FUN_0201ECA8 + bl Camera_InitWithTargetAndAngle mov r1, #0 mov r0, #1 lsl r0, r0, #0xc @@ -1980,14 +1980,14 @@ MOD81_02238CA0: ; 0x02238CA0 str r1, [sp, #0x14] ldr r1, [r5] add r0, sp, #0xc - bl FUN_0201EC58 + bl Camera_SetLookAtCamUp ldr r0, [r5] - bl FUN_0201EB8C + bl Camera_SetWorkPtr mov r1, #0xfa ldr r2, [r5] mov r0, #0 lsl r1, r1, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} nop @@ -2000,7 +2000,7 @@ MOD81_02238D0C: ; 0x02238D0C ldr r0, [r0] bx r3 nop -_02238D14: .word FUN_0201EB70 +_02238D14: .word Camera_Free thumb_func_end MOD81_02238D0C thumb_func_start MOD81_02238D18 diff --git a/arm9/modules/84/asm/module_84_thumb1.s b/arm9/modules/84/asm/module_84_thumb1.s index ea18857a..c9bff482 100644 --- a/arm9/modules/84/asm/module_84_thumb1.s +++ b/arm9/modules/84/asm/module_84_thumb1.s @@ -792,7 +792,7 @@ MOD84_021D7B54: ; 0x021D7B54 sub sp, #0x18 add r4, r0, #0 mov r0, #0x4b - bl FUN_0201EB64 + bl Camera_Alloc str r0, [r4, #0x20] mov r0, #0 str r0, [r4, #0x24] @@ -813,7 +813,7 @@ MOD84_021D7B54: ; 0x021D7B54 add r0, #0x24 lsl r1, r1, #0xe add r2, #0x30 - bl FUN_0201ECA8 + bl Camera_InitWithTargetAndAngle mov r1, #0 mov r0, #1 lsl r0, r0, #0xc @@ -822,14 +822,14 @@ MOD84_021D7B54: ; 0x021D7B54 str r1, [sp, #0x14] ldr r1, [r4, #0x20] add r0, sp, #0xc - bl FUN_0201EC58 + bl Camera_SetLookAtCamUp ldr r0, [r4, #0x20] - bl FUN_0201EB8C + bl Camera_SetWorkPtr mov r1, #0xfa ldr r2, [r4, #0x20] mov r0, #0 lsl r1, r1, #0xe - bl FUN_0201EC94 + bl Camera_SetPerspectiveClippingPlane add sp, #0x18 pop {r4, pc} nop @@ -842,7 +842,7 @@ MOD84_021D7BBC: ; 0x021D7BBC ldr r0, [r0, #0x20] bx r3 nop -_021D7BC4: .word FUN_0201EB70 +_021D7BC4: .word Camera_Free thumb_func_end MOD84_021D7BBC thumb_func_start MOD84_021D7BC8 @@ -1003,7 +1003,7 @@ MOD84_021D7CFC: ; 0x021D7CFC mov r0, #0x11 add r2, r1, #0 bl NNS_G3dGeBufferOP_N - bl FUN_0201EBA4 + bl Camera_PushLookAtToNNSGlb add r4, #0x38 add r0, sp, #0x28 bl MTX_Identity33_ diff --git a/arm9/src/unk_0201E7D8.c b/arm9/src/unk_0201E7D8.c index 3860e89d..9a4d8cab 100644 --- a/arm9/src/unk_0201E7D8.c +++ b/arm9/src/unk_0201E7D8.c @@ -2,233 +2,382 @@ #include "fx.h"
#include "heap.h"
#include "NNS_g3d.h"
+#include "unk_0201E7D8.h"
+#include "GX_g3.h"
-struct UnkStruct_0201E7D8_64
-{
- s32 unk_00;
- s32 unk_04;
- s32 unk_08;
- s32 unk_0C;
- s32 unk_10;
- s32 unk_14;
- s32 unk_18;
- s32 unk_1C;
- VecFx32 * unk_20;
-};
-
-struct UnkStruct_0201E7D8
-{
- fx32 unk_00;
- fx32 unk_04;
- fx32 unk_08;
- fx32 unk_0C;
- fx32 unk_10;
- VecFx32 unk_14;
- VecFx32 unk_20;
- VecFx32 unk_2C;
- fx32 unk_38;
- u16 unk_3C;
- u16 unk_3E;
- u8 filler_40[6];
- u16 unk_46;
- VecFx32 unk_48;
- VecFx32 * unk_54;
- u32 unk_58;
- u32 unk_5C;
- u32 unk_60;
- struct UnkStruct_0201E7D8_64 * unk_64;
-};
-
-BOOL UNK_02105BB8 = TRUE;
-struct UnkStruct_0201E7D8 * UNK_021C59A4;
-
-void FUN_0201EF70(VecFx32 * a0, struct UnkStruct_0201E7D8 * a1);
-
-THUMB_FUNC void FUN_0201E7D8(struct UnkStruct_0201E7D8 * a0)
-{
- u16 r4 = -a0->unk_3C;
- a0->unk_14.x = FX_Mul(FX_Mul(FX_SinIdx(a0->unk_3E), a0->unk_38), FX_CosIdx(a0->unk_3C));
- a0->unk_14.z = FX_Mul(FX_Mul(FX_CosIdx(a0->unk_3E), a0->unk_38), FX_CosIdx(a0->unk_3C));
- a0->unk_14.y = FX_Mul(FX_SinIdx(r4), a0->unk_38);
- VEC_Add(&a0->unk_14, &a0->unk_20, &a0->unk_14);
-}
-
-THUMB_FUNC void FUN_0201E8B8(struct UnkStruct_0201E7D8 * a0)
-{
- u16 r4 = -a0->unk_3C;
- a0->unk_20.x = -FX_Mul(FX_Mul(FX_SinIdx(a0->unk_3E), a0->unk_38), FX_CosIdx(a0->unk_3C));
- a0->unk_20.z = -FX_Mul(FX_Mul(FX_CosIdx(a0->unk_3E), a0->unk_38), FX_CosIdx(a0->unk_3C));
- a0->unk_20.y = -FX_Mul(FX_SinIdx(r4), a0->unk_38);
- VEC_Add(&a0->unk_20, &a0->unk_14, &a0->unk_20);
-}
-
-THUMB_FUNC void FUN_0201E99C(u16 a0, struct UnkStruct_0201E7D8 * a1)
-{
- a1->unk_46 = a0;
- a1->unk_00 = FX_SinIdx(a0);
- a1->unk_04 = FX_CosIdx(a0);
- a1->unk_08 = FX32_CONST(1.33333333);
- a1->unk_0C = FX32_CONST(150);
- a1->unk_10 = FX32_CONST(900);
- a1->unk_2C.x = 0;
- a1->unk_2C.y = FX32_ONE;
- a1->unk_2C.z = 0;
- a1->unk_54 = 0;
- a1->unk_58 = 0;
- a1->unk_5C = 0;
- a1->unk_60 = 0;
- a1->unk_64 = NULL;
-}
-
-THUMB_FUNC void FUN_0201E9E8(struct UnkStruct_0201E7D8 * a0, VecFx32 * a1)
-{
- if (a0->unk_58 == 0)
- a1->x = 0;
- if (a0->unk_5C == 0)
- a1->y = 0;
- if (a0->unk_60 == 0)
- a1->z = 0;
-}
-
-THUMB_FUNC void FUN_0201EA08(struct UnkStruct_0201E7D8 * a0, VecFx32 * a1, VecFx32 * a2)
-{
- s32 * r7;
- s32 * sp0;
- if (a0->unk_64 == NULL)
+extern fx16 CalcAngleBetweenVecs(VecFx32 * a, VecFx32 * b);
+
+GXBufferMode g3dDepthBufferingMode = GX_BUFFERMODE_W;
+static struct CameraWork * sCameraWorkPtr;
+
+void Camera_OffsetLookAtPosAndTarget(const VecFx32 *delta, struct CameraWork * camera);
+void ApplyPerspectiveType(u8 perspectiveType, struct CameraWork * camera);
+
+THUMB_FUNC void Camera_CalcLookAtPosFromTargetAndAngle(struct CameraWork * camera)
+{
+ u16 negx = -camera->angle.x;
+ camera->lookAt.camPos.x = FX_Mul(FX_Mul(FX_SinIdx(camera->angle.y), camera->distance), FX_CosIdx(camera->angle.x));
+ camera->lookAt.camPos.z = FX_Mul(FX_Mul(FX_CosIdx(camera->angle.y), camera->distance), FX_CosIdx(camera->angle.x));
+ camera->lookAt.camPos.y = FX_Mul(FX_SinIdx(negx), camera->distance);
+ VEC_Add(&camera->lookAt.camPos, &camera->lookAt.camTarget, &camera->lookAt.camPos);
+}
+
+THUMB_FUNC void Camera_CalcLookAtTargetFromPosAndAngle(struct CameraWork * camera)
+{
+ u16 negx = -camera->angle.x;
+ camera->lookAt.camTarget.x = -FX_Mul(FX_Mul(FX_SinIdx(camera->angle.y), camera->distance), FX_CosIdx(camera->angle.x));
+ camera->lookAt.camTarget.z = -FX_Mul(FX_Mul(FX_CosIdx(camera->angle.y), camera->distance), FX_CosIdx(camera->angle.x));
+ camera->lookAt.camTarget.y = -FX_Mul(FX_SinIdx(negx), camera->distance);
+ VEC_Add(&camera->lookAt.camTarget, &camera->lookAt.camPos, &camera->lookAt.camTarget);
+}
+
+THUMB_FUNC void Camera_InitInternal(u16 perspectiveAngle, struct CameraWork * camera)
+{
+ camera->perspectiveAngle = perspectiveAngle;
+ camera->perspective.fovySin = FX_SinIdx(perspectiveAngle);
+ camera->perspective.fovyCos = FX_CosIdx(perspectiveAngle);
+ camera->perspective.aspect = FX32_CONST(1.33333333); // 4x3
+ camera->perspective.n = FX32_CONST(150);
+ camera->perspective.f = FX32_CONST(900);
+ camera->lookAt.camUp.x = 0;
+ camera->lookAt.camUp.y = FX32_ONE;
+ camera->lookAt.camUp.z = 0;
+ camera->currTarget_p = NULL;
+ camera->enableOffsetX = FALSE;
+ camera->enableOffsetY = FALSE;
+ camera->enableOffsetZ = FALSE;
+ camera->history = NULL;
+}
+
+THUMB_FUNC void Camera_VecResetCoordsIfOffsetComponentNotEnabled(struct CameraWork * camera, VecFx32 * vec)
+{
+ if (!camera->enableOffsetX)
+ vec->x = 0;
+ if (!camera->enableOffsetY)
+ vec->y = 0;
+ if (!camera->enableOffsetZ)
+ vec->z = 0;
+}
+
+THUMB_FUNC void Camera_GetVecFromSomeRingBufferMaybe(struct CameraWork * camera, const VecFx32 * vecDefault, VecFx32 * vecDst)
+{
+ s32 * idx_p;
+ s32 * idx2_p;
+ if (camera->history == NULL)
{
- *a2 = *a1;
+ *vecDst = *vecDefault;
}
else
{
- r7 = &a0->unk_64->unk_04;
- sp0 = &a0->unk_64->unk_08;
- if (a0->unk_64->unk_10 == 0)
+ idx_p = &camera->history->readIdx;
+ idx2_p = &camera->history->writeIdx;
+ if (camera->history->overrideEnabled == 0)
{
- *a2 = *a1;
- if (*r7 == a0->unk_64->unk_0C)
- a0->unk_64->unk_10 = 1;
+ *vecDst = *vecDefault;
+ if (*idx_p == camera->history->writeIdxInit)
+ camera->history->overrideEnabled = 1;
}
else
{
- *a2 = a0->unk_64->unk_20[a0->unk_64->unk_04];
+ *vecDst = camera->history->vecs[camera->history->readIdx];
}
- *r7 = (*r7 + 1) % a0->unk_64->unk_00;
- a0->unk_64->unk_20[*sp0] = *a1;
- *sp0 = (*sp0 + 1) % a0->unk_64->unk_00;
- if (a0->unk_64->unk_14 == 0)
- a2->x = a1->x;
- if (a0->unk_64->unk_18 == 0)
- a2->y = a1->y;
- if (a0->unk_64->unk_1C == 0)
- a2->z = a1->z;
+ *idx_p = (*idx_p + 1) % camera->history->count;
+ camera->history->vecs[*idx2_p] = *vecDefault;
+ *idx2_p = (*idx2_p + 1) % camera->history->count;
+ if (!camera->history->enableUpdateX)
+ vecDst->x = vecDefault->x;
+ if (!camera->history->enableUpdateY)
+ vecDst->y = vecDefault->y;
+ if (!camera->history->enableUpdateZ)
+ vecDst->z = vecDefault->z;
}
}
-THUMB_FUNC void FUN_0201EABC(s32 r5, s32 r7, s32 r6, s32 sp0, struct UnkStruct_0201E7D8 * sp18)
+THUMB_FUNC void Camera_AllocHistory(s32 count, s32 initialWriteIdx, s32 updateEnableFlags, s32 heap_id, struct CameraWork * camera)
{
s32 i;
- struct UnkStruct_0201E7D8_64 * r4;
+ struct CameraHistory * history;
- if (sp18->unk_54 != 0)
+ if (camera->currTarget_p != NULL)
{
- GF_ASSERT(r7 + 1 <= r5);
- r4 = AllocFromHeap(sp0, sizeof(struct UnkStruct_0201E7D8_64));
- r4->unk_20 = AllocFromHeap(sp0, sizeof(VecFx32) * r5);
- for (i = 0; i < r5; i++)
+ GF_ASSERT(initialWriteIdx + 1 <= count);
+ history = AllocFromHeap(heap_id, sizeof(struct CameraHistory));
+ history->vecs = AllocFromHeap(heap_id, sizeof(VecFx32) * count);
+ for (i = 0; i < count; i++)
{
- r4->unk_20[i].x = 0;
- r4->unk_20[i].y = 0;
- r4->unk_20[i].z = 0;
+ history->vecs[i].x = 0;
+ history->vecs[i].y = 0;
+ history->vecs[i].z = 0;
}
- r4->unk_00 = r5;
- r4->unk_04 = 0;
- r4->unk_08 = r7;
- r4->unk_0C = r7;
- r4->unk_10 = 0;
- r4->unk_14 = 0;
- r4->unk_18 = 0;
- r4->unk_1C = 0;
- if (r6 & 1)
- r4->unk_14 = 1;
- if (r6 & 2)
- r4->unk_18 = 1;
- if (r6 & 4)
- r4->unk_1C = 1;
- sp18->unk_64 = r4;
+ history->count = count;
+ history->readIdx = 0;
+ history->writeIdx = initialWriteIdx;
+ history->writeIdxInit = initialWriteIdx;
+ history->overrideEnabled = FALSE;
+ history->enableUpdateX = FALSE;
+ history->enableUpdateY = FALSE;
+ history->enableUpdateZ = FALSE;
+ if (updateEnableFlags & 1)
+ history->enableUpdateX = TRUE;
+ if (updateEnableFlags & 2)
+ history->enableUpdateY = TRUE;
+ if (updateEnableFlags & 4)
+ history->enableUpdateZ = TRUE;
+ camera->history = history;
}
}
-THUMB_FUNC void FUN_0201EB48(struct UnkStruct_0201E7D8 * a0)
+THUMB_FUNC void Camera_FreeHistory(struct CameraWork * camera)
{
- if (a0->unk_64 != NULL)
+ if (camera->history != NULL)
{
- FreeToHeap(a0->unk_64->unk_20);
- FreeToHeap(a0->unk_64);
- a0->unk_64 = NULL;
+ FreeToHeap(camera->history->vecs);
+ FreeToHeap(camera->history);
+ camera->history = NULL;
}
}
-THUMB_FUNC struct UnkStruct_0201E7D8 * FUN_0201EB64(u32 heap_id)
+THUMB_FUNC struct CameraWork * Camera_Alloc(u32 heap_id)
{
- return AllocFromHeap(heap_id, sizeof(struct UnkStruct_0201E7D8));
+ return AllocFromHeap(heap_id, sizeof(struct CameraWork));
}
-THUMB_FUNC void FUN_0201EB70(struct UnkStruct_0201E7D8 * a0)
+THUMB_FUNC void Camera_Free(struct CameraWork * camera)
{
- FreeToHeap(a0);
+ FreeToHeap(camera);
}
-THUMB_FUNC void FUN_0201EB78(struct UnkStruct_0201E7D8 * a0, struct UnkStruct_0201E7D8 * a1)
+THUMB_FUNC void Camera_Copy(struct CameraWork * src, struct CameraWork * dest)
{
- *a1 = *a0;
+ *dest = *src;
}
-THUMB_FUNC void FUN_0201EB8C(struct UnkStruct_0201E7D8 * a0)
+THUMB_FUNC void Camera_SetWorkPtr(struct CameraWork * camera)
{
- UNK_021C59A4 = a0;
+ sCameraWorkPtr = camera;
}
-THUMB_FUNC void FUN_0201EB98(void)
+THUMB_FUNC void Camera_UnsetWorkPtr(void)
{
- UNK_021C59A4 = NULL;
+ sCameraWorkPtr = NULL;
}
-THUMB_FUNC void FUN_0201EBA4(void)
+THUMB_FUNC void Camera_PushLookAtToNNSGlb(void)
{
- VecFx32 sp10;
- VecFx32 sp4;
- if (UNK_021C59A4 != NULL)
+ VecFx32 diff;
+ VecFx32 offset;
+ if (sCameraWorkPtr != NULL)
{
- if (UNK_021C59A4->unk_54 != NULL)
+ if (sCameraWorkPtr->currTarget_p != NULL)
{
- VEC_Subtract(UNK_021C59A4->unk_54, &UNK_021C59A4->unk_48, &sp10);
- FUN_0201E9E8(UNK_021C59A4, &sp10);
- FUN_0201EA08(UNK_021C59A4, &sp10, &sp4);
- FUN_0201EF70(&sp4, UNK_021C59A4);
- UNK_021C59A4->unk_48 = *UNK_021C59A4->unk_54;
+ VEC_Subtract(sCameraWorkPtr->currTarget_p, &sCameraWorkPtr->lastTarget, &diff);
+ Camera_VecResetCoordsIfOffsetComponentNotEnabled(sCameraWorkPtr, &diff);
+ Camera_GetVecFromSomeRingBufferMaybe(sCameraWorkPtr, &diff, &offset);
+ Camera_OffsetLookAtPosAndTarget(&offset, sCameraWorkPtr);
+ sCameraWorkPtr->lastTarget = *sCameraWorkPtr->currTarget_p;
}
- NNS_G3dGlbLookAt(&UNK_021C59A4->unk_14, &UNK_021C59A4->unk_2C, &UNK_021C59A4->unk_20);
+ NNS_G3dGlbLookAt(&sCameraWorkPtr->lookAt.camPos, &sCameraWorkPtr->lookAt.camUp, &sCameraWorkPtr->lookAt.camTarget);
}
}
-THUMB_FUNC void FUN_0201EC58(VecFx32 * a, struct UnkStruct_0201E7D8 * b)
+THUMB_FUNC void Camera_SetLookAtCamUp(VecFx32 * camUp, struct CameraWork * camera)
+{
+ camera->lookAt.camUp = *camUp;
+}
+
+THUMB_FUNC void Camera_SetFixedTarget(VecFx32 * target, struct CameraWork * camera)
+{
+ camera->currTarget_p = target;
+ camera->lastTarget = *target;
+ camera->enableOffsetX = TRUE;
+ camera->enableOffsetY = TRUE;
+ camera->enableOffsetZ = TRUE;
+}
+
+THUMB_FUNC void Camera_ClearFixedTarget(struct CameraWork * camera)
+{
+ camera->currTarget_p = NULL;
+ camera->enableOffsetX = FALSE;
+ camera->enableOffsetY = FALSE;
+ camera->enableOffsetZ = FALSE;
+}
+
+THUMB_FUNC void Camera_SetPerspectiveClippingPlane(s32 n, s32 f, struct CameraWork * camera)
+{
+ camera->perspective.n = n;
+ camera->perspective.f = f,
+ ApplyPerspectiveType(camera->perspectiveType, camera);
+}
+
+THUMB_FUNC void Camera_InitWithTargetAndAngle(VecFx32 * target, fx32 distance, struct CameraAngle * angle, u16 perspectiveAngle, u8 perspectiveType, BOOL fixReference, struct CameraWork * camera)
+{
+ Camera_InitInternal(perspectiveAngle, camera);
+ camera->lookAt.camTarget = *target;
+ camera->distance = distance;
+ camera->angle = *angle;
+ Camera_CalcLookAtPosFromTargetAndAngle(camera);
+ ApplyPerspectiveType(perspectiveType, camera);
+ if (fixReference)
+ {
+ camera->currTarget_p = target;
+ camera->lastTarget = *target;
+ camera->enableOffsetX = TRUE;
+ camera->enableOffsetY = TRUE;
+ camera->enableOffsetZ = TRUE;
+ }
+}
+
+THUMB_FUNC void Camera_InitWithPosAndAngle(VecFx32 * pos, fx32 distance, struct CameraAngle * angle, u16 perspectiveAngle, u8 sp18, struct CameraWork * camera)
+{
+ Camera_InitInternal(perspectiveAngle, camera);
+ camera->lookAt.camPos = *pos;
+ camera->distance = distance;
+ camera->angle = *angle;
+ Camera_CalcLookAtTargetFromPosAndAngle(camera);
+ ApplyPerspectiveType(sp18, camera);
+}
+
+THUMB_FUNC void Camera_InitWithPosAndTarget(const VecFx32 *target, const VecFx32 *pos, u16 perspectiveAngle, u8 perspectiveType, BOOL setReference, struct CameraWork * camera)
+{
+ VecFx32 vec_from_pos_to_target;
+ Camera_InitInternal(perspectiveAngle, camera);
+
+ camera->lookAt.camTarget = *target;
+ camera->lookAt.camPos = *pos;
+
+ VEC_Subtract(pos, target, &vec_from_pos_to_target);
+ camera->distance = VEC_Mag(&vec_from_pos_to_target);
+ {
+ VecFx32 sp24 = {0, 0, 0}; // unused
+ VecFx32 sp18 = {0, 0, 0}; // unused
+ VecFx32 sp0C = {0, 0, 0};
+ VecFx32 sp00;
+
+ sp00.x = 0;
+ sp00.y = 0;
+ sp00.z = FX32_ONE;
+ sp0C = vec_from_pos_to_target;
+ sp0C.y = 0;
+ camera->angle.y = CalcAngleBetweenVecs(&sp00, &sp0C);
+
+ sp00.x = FX32_ONE;
+ sp00.y = 0;
+ sp00.z = 0;
+ sp0C.x = vec_from_pos_to_target.z;
+ sp0C.z = vec_from_pos_to_target.y;
+ sp0C.y = 0;
+ camera->angle.x = CalcAngleBetweenVecs(&sp00, &sp0C);
+
+ camera->angle.z = 0;
+ }
+ ApplyPerspectiveType(perspectiveType, camera);
+
+ if (setReference)
+ {
+ camera->currTarget_p = target;
+ camera->lastTarget = *target;
+ camera->enableOffsetX = TRUE;
+ camera->enableOffsetY = TRUE;
+ camera->enableOffsetZ = TRUE;
+ }
+}
+
+THUMB_FUNC void ApplyPerspectiveType(u8 perspectiveType, struct CameraWork * camera)
+{
+ if (perspectiveType == 0)
+ {
+ NNS_G3dGlbPerspective(camera->perspective.fovySin, camera->perspective.fovyCos, camera->perspective.aspect, camera->perspective.n, camera->perspective.f);
+ camera->perspectiveType = 0;
+ g3dDepthBufferingMode = GX_BUFFERMODE_Z;
+ }
+ else
+ {
+ fx32 y = FX_Mul(FX_Div(camera->perspective.fovySin, camera->perspective.fovyCos), camera->distance);
+ fx32 x = FX_Mul(y, camera->perspective.aspect);
+ NNS_G3dGlbOrtho(y, -y, -x, x, camera->perspective.n, camera->perspective.f);
+ camera->perspectiveType = 1;
+ g3dDepthBufferingMode = GX_BUFFERMODE_Z;
+ }
+}
+
+THUMB_FUNC void Camera_SetPerspectiveAngle(u16 perspectiveAngle, struct CameraWork * camera)
+{
+ camera->perspectiveAngle = perspectiveAngle;
+ camera->perspective.fovySin = FX_SinIdx(camera->perspectiveAngle);
+ camera->perspective.fovyCos = FX_CosIdx(camera->perspectiveAngle);
+ ApplyPerspectiveType(camera->perspectiveType, camera);
+}
+
+THUMB_FUNC void Camera_AdjustPerspectiveAngle(u16 rotation, struct CameraWork * camera)
+{
+ camera->perspectiveAngle += rotation;
+ camera->perspective.fovySin = FX_SinIdx(camera->perspectiveAngle);
+ camera->perspective.fovyCos = FX_CosIdx(camera->perspectiveAngle);
+ ApplyPerspectiveType(camera->perspectiveType, camera);
+}
+
+THUMB_FUNC void Camera_OffsetLookAtPosAndTarget(const VecFx32 *delta, struct CameraWork * camera)
+{
+ VEC_Add(&camera->lookAt.camPos, delta, &camera->lookAt.camPos);
+ VEC_Add(&camera->lookAt.camTarget, delta, &camera->lookAt.camTarget);
+}
+
+THUMB_FUNC void Camera_SetAngle(const struct CameraAngle * angle, struct CameraWork * camera)
+{
+ camera->angle = *angle;
+ Camera_CalcLookAtPosFromTargetAndAngle(camera);
+}
+
+THUMB_FUNC void Camera_AdjustAngle(const struct CameraAngle * delta, struct CameraWork * camera)
+{
+ camera->angle.x += delta->x;
+ camera->angle.y += delta->y;
+ camera->angle.z += delta->z;
+ Camera_CalcLookAtTargetFromPosAndAngle(camera);
+}
+
+THUMB_FUNC void Camera_SetDistance(fx32 distance, struct CameraWork * camera)
+{
+ camera->distance = distance;
+ Camera_CalcLookAtPosFromTargetAndAngle(camera);
+}
+
+THUMB_FUNC void Camera_SetLookAtTargetAndRecalcPos(const VecFx32 * target, struct CameraWork * camera)
+{
+ camera->lookAt.camTarget = *target;
+ Camera_CalcLookAtPosFromTargetAndAngle(camera);
+}
+
+THUMB_FUNC u16 Camera_GetPerspectiveAngle(struct CameraWork * camera)
+{
+ return camera->perspectiveAngle;
+}
+
+THUMB_FUNC fx32 Camera_GetDistance(struct CameraWork * camera)
+{
+ return camera->distance;
+}
+
+THUMB_FUNC void Camera_GetAngle(struct CameraAngle * dest, struct CameraWork * camera)
+{
+ *dest = camera->angle;
+}
+
+THUMB_FUNC void Camera_GetLookAtCamTarget(VecFx32 * dest, const struct CameraWork * camera)
+{
+ *dest = camera->lookAt.camTarget;
+}
+THUMB_FUNC void Camera_GetLookAtCamPos(VecFx32 * dest, const struct CameraWork * camera)
{
- b->unk_2C = *a;
+ *dest = camera->lookAt.camPos;
}
-THUMB_FUNC void FUN_0201EC68(VecFx32 * a, struct UnkStruct_0201E7D8 * b)
+THUMB_FUNC void Camera_SetLookAtCamTarget(const VecFx32 * target, struct CameraWork * camera)
{
- b->unk_54 = a;
- b->unk_48 = *a;
- b->unk_58 = 1;
- b->unk_5C = 1;
- b->unk_60 = 1;
+ camera->lookAt.camTarget = *target;
}
-THUMB_FUNC void FUN_0201EC88(struct UnkStruct_0201E7D8 * a0)
+THUMB_FUNC void Camera_SetLookAtCamPos(const VecFx32 * pos, struct CameraWork * camera)
{
- a0->unk_54 = NULL;
- a0->unk_58 = 0;
- a0->unk_5C = 0;
- a0->unk_60 = 0;
+ camera->lookAt.camPos = *pos;
}
diff --git a/include/unk_0201E7D8.h b/include/unk_0201E7D8.h new file mode 100644 index 00000000..78b2c723 --- /dev/null +++ b/include/unk_0201E7D8.h @@ -0,0 +1,61 @@ +#ifndef POKEDIAMOND_UNK_0201E7D8_H
+#define POKEDIAMOND_UNK_0201E7D8_H
+
+#include "fx.h"
+
+
+struct CameraHistory
+{
+ s32 count;
+ s32 readIdx;
+ s32 writeIdx;
+ s32 writeIdxInit;
+ BOOL overrideEnabled;
+ BOOL enableUpdateX;
+ BOOL enableUpdateY;
+ BOOL enableUpdateZ;
+ VecFx32 * vecs;
+};
+
+struct CameraAngle
+{
+ u16 x;
+ u16 y;
+ u16 z;
+ u16 unk_06;
+};
+
+struct CameraPerspective
+{
+ fx32 fovySin;
+ fx32 fovyCos;
+ fx32 aspect;
+ fx32 n;
+ fx32 f;
+};
+
+struct CameraLookAt
+{
+ VecFx32 camPos;
+ VecFx32 camTarget;
+ VecFx32 camUp;
+};
+
+struct CameraWork
+{
+ struct CameraPerspective perspective;
+ struct CameraLookAt lookAt;
+ fx32 distance;
+ struct CameraAngle angle;
+ u8 perspectiveType;
+ u16 perspectiveAngle;
+ VecFx32 lastTarget;
+ const VecFx32 * currTarget_p;
+ BOOL enableOffsetX;
+ BOOL enableOffsetY;
+ BOOL enableOffsetZ;
+ struct CameraHistory * history;
+};
+
+
+#endif //POKEDIAMOND_UNK_0201E7D8_H
|