summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-06-13 19:06:41 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-06-13 19:06:41 -0400
commit3de127d797a8183d4e2d68f9e8da0ba5d336cfd1 (patch)
treeb6f08558ed2952a0c3e6f31605416bfabd531242
parent53ac2be5cf4064c9e5df4a97f4233b7014acb004 (diff)
Finish decomping unk_0201E7D8
-rw-r--r--arm9/arm9.lsf1
-rw-r--r--arm9/asm/scrcmd_asm.s6
-rw-r--r--arm9/asm/unk_02012CC8.s18
-rw-r--r--arm9/asm/unk_0201C7A0.s4
-rw-r--r--arm9/asm/unk_0201E7D8_s.s539
-rw-r--r--arm9/asm/unk_02046030.s10
-rw-r--r--arm9/asm/unk_0204C1B4.s8
-rw-r--r--arm9/asm/unk_020607D4.s4
-rw-r--r--arm9/asm/unk_0206DE24.s2
-rw-r--r--arm9/asm/unk_0207EF6C.s14
-rw-r--r--arm9/asm/unk_02086414.s2
-rw-r--r--arm9/global.inc64
-rw-r--r--arm9/lib/include/NNS_g3d.h12
-rw-r--r--arm9/lib/include/fx.h16
-rw-r--r--arm9/lib/src/FX_vec.c6
-rw-r--r--arm9/modules/05/asm/mod05_021D74E0.s10
-rw-r--r--arm9/modules/05/asm/mod05_021DA5B8.s28
-rw-r--r--arm9/modules/05/asm/mod05_021DBD84.s16
-rw-r--r--arm9/modules/05/asm/mod05_021DC0B8.s4
-rw-r--r--arm9/modules/05/asm/module_05.s84
-rw-r--r--arm9/modules/06/asm/module_06.s70
-rw-r--r--arm9/modules/07/asm/module_07.s2
-rw-r--r--arm9/modules/08/asm/module_08.s28
-rw-r--r--arm9/modules/12/asm/module_12.s2
-rw-r--r--arm9/modules/18/asm/module_18.s2
-rw-r--r--arm9/modules/63/asm/mod63_021D74E0.s22
-rw-r--r--arm9/modules/63/asm/mod63_021D8890.s44
-rw-r--r--arm9/modules/63/src/mod63_021DB450.c4
-rw-r--r--arm9/modules/64/asm/module_64.s16
-rw-r--r--arm9/modules/65/asm/module_65.s14
-rw-r--r--arm9/modules/68/asm/module_68.s14
-rw-r--r--arm9/modules/69/asm/module_69.s12
-rw-r--r--arm9/modules/77/asm/module_77.s18
-rw-r--r--arm9/modules/78/asm/module_78.s10
-rw-r--r--arm9/modules/81/asm/module_81.s26
-rw-r--r--arm9/modules/84/asm/module_84_thumb1.s14
-rw-r--r--arm9/src/unk_0201E7D8.c495
-rw-r--r--include/unk_0201E7D8.h61
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