diff --git a/assets/objects/object_ganon_anime3/gGanonRoarAnim.c b/assets/objects/object_ganon_anime3/gGanonRoarAnim.c
new file mode 100644
index 0000000000..cbc274b118
--- /dev/null
+++ b/assets/objects/object_ganon_anime3/gGanonRoarAnim.c
@@ -0,0 +1,15 @@
+#include "object_ganon_anime3.h"
+
+#include "ultra64.h"
+
+s16 gGanonRoarFrameData[] = {
+#include "assets/objects/object_ganon_anime3/gGanonRoarFrameData.inc.c"
+};
+
+JointIndex gGanonRoarJointIndices[] = {
+#include "assets/objects/object_ganon_anime3/gGanonRoarJointIndices.inc.c"
+};
+
+AnimationHeader gGanonRoarAnim = {
+#include "assets/objects/object_ganon_anime3/gGanonRoarAnim.inc.c"
+};
diff --git a/assets/objects/object_ganon_anime3/gGanonUncurlAndFlailAnim.c b/assets/objects/object_ganon_anime3/gGanonUncurlAndFlailAnim.c
new file mode 100644
index 0000000000..a19de40d93
--- /dev/null
+++ b/assets/objects/object_ganon_anime3/gGanonUncurlAndFlailAnim.c
@@ -0,0 +1,15 @@
+#include "object_ganon_anime3.h"
+
+#include "ultra64.h"
+
+s16 gGanonUncurlAndFlailFrameData[] = {
+#include "assets/objects/object_ganon_anime3/gGanonUncurlAndFlailFrameData.inc.c"
+};
+
+JointIndex gGanonUncurlAndFlailJointIndices[] = {
+#include "assets/objects/object_ganon_anime3/gGanonUncurlAndFlailJointIndices.inc.c"
+};
+
+AnimationHeader gGanonUncurlAndFlailAnim = {
+#include "assets/objects/object_ganon_anime3/gGanonUncurlAndFlailAnim.inc.c"
+};
diff --git a/assets/objects/object_ganon_anime3/gGanondorfBurstOutAnim.c b/assets/objects/object_ganon_anime3/gGanondorfBurstOutAnim.c
new file mode 100644
index 0000000000..a3a6625c0a
--- /dev/null
+++ b/assets/objects/object_ganon_anime3/gGanondorfBurstOutAnim.c
@@ -0,0 +1,15 @@
+#include "object_ganon_anime3.h"
+
+#include "ultra64.h"
+
+s16 gGanondorfBurstOutFrameData[] = {
+#include "assets/objects/object_ganon_anime3/gGanondorfBurstOutFrameData.inc.c"
+};
+
+JointIndex gGanondorfBurstOutJointIndices[] = {
+#include "assets/objects/object_ganon_anime3/gGanondorfBurstOutJointIndices.inc.c"
+};
+
+AnimationHeader gGanondorfBurstOutAnim = {
+#include "assets/objects/object_ganon_anime3/gGanondorfBurstOutAnim.inc.c"
+};
diff --git a/assets/objects/object_ganon_anime3/gGanondorfFloatingHeavyBreathingAnim.c b/assets/objects/object_ganon_anime3/gGanondorfFloatingHeavyBreathingAnim.c
new file mode 100644
index 0000000000..bbfa588465
--- /dev/null
+++ b/assets/objects/object_ganon_anime3/gGanondorfFloatingHeavyBreathingAnim.c
@@ -0,0 +1,15 @@
+#include "object_ganon_anime3.h"
+
+#include "ultra64.h"
+
+s16 gGanondorfFloatingHeavyBreathingFrameData[] = {
+#include "assets/objects/object_ganon_anime3/gGanondorfFloatingHeavyBreathingFrameData.inc.c"
+};
+
+JointIndex gGanondorfFloatingHeavyBreathingJointIndices[] = {
+#include "assets/objects/object_ganon_anime3/gGanondorfFloatingHeavyBreathingJointIndices.inc.c"
+};
+
+AnimationHeader gGanondorfFloatingHeavyBreathingAnim = {
+#include "assets/objects/object_ganon_anime3/gGanondorfFloatingHeavyBreathingAnim.inc.c"
+};
diff --git a/assets/objects/object_ganon_anime3/gGanondorfShowTriforceLoopAnim.c b/assets/objects/object_ganon_anime3/gGanondorfShowTriforceLoopAnim.c
new file mode 100644
index 0000000000..5505f1aa08
--- /dev/null
+++ b/assets/objects/object_ganon_anime3/gGanondorfShowTriforceLoopAnim.c
@@ -0,0 +1,15 @@
+#include "object_ganon_anime3.h"
+
+#include "ultra64.h"
+
+s16 gGanondorfShowTriforceLoopFrameData[] = {
+#include "assets/objects/object_ganon_anime3/gGanondorfShowTriforceLoopFrameData.inc.c"
+};
+
+JointIndex gGanondorfShowTriforceLoopJointIndices[] = {
+#include "assets/objects/object_ganon_anime3/gGanondorfShowTriforceLoopJointIndices.inc.c"
+};
+
+AnimationHeader gGanondorfShowTriforceLoopAnim = {
+#include "assets/objects/object_ganon_anime3/gGanondorfShowTriforceLoopAnim.inc.c"
+};
diff --git a/assets/objects/object_ganon_anime3/gGanondorfShowTriforceStartAnim.c b/assets/objects/object_ganon_anime3/gGanondorfShowTriforceStartAnim.c
new file mode 100644
index 0000000000..3092cccff4
--- /dev/null
+++ b/assets/objects/object_ganon_anime3/gGanondorfShowTriforceStartAnim.c
@@ -0,0 +1,15 @@
+#include "object_ganon_anime3.h"
+
+#include "ultra64.h"
+
+s16 gGanondorfShowTriforceStartFrameData[] = {
+#include "assets/objects/object_ganon_anime3/gGanondorfShowTriforceStartFrameData.inc.c"
+};
+
+JointIndex gGanondorfShowTriforceStartJointIndices[] = {
+#include "assets/objects/object_ganon_anime3/gGanondorfShowTriforceStartJointIndices.inc.c"
+};
+
+AnimationHeader gGanondorfShowTriforceStartAnim = {
+#include "assets/objects/object_ganon_anime3/gGanondorfShowTriforceStartAnim.inc.c"
+};
diff --git a/assets/objects/object_ganon_anime3/gGanondorfTransformEndAnim.c b/assets/objects/object_ganon_anime3/gGanondorfTransformEndAnim.c
new file mode 100644
index 0000000000..21a0913e97
--- /dev/null
+++ b/assets/objects/object_ganon_anime3/gGanondorfTransformEndAnim.c
@@ -0,0 +1,15 @@
+#include "object_ganon_anime3.h"
+
+#include "ultra64.h"
+
+s16 gGanondorfTransformEndFrameData[] = {
+#include "assets/objects/object_ganon_anime3/gGanondorfTransformEndFrameData.inc.c"
+};
+
+JointIndex gGanondorfTransformEndJointIndices[] = {
+#include "assets/objects/object_ganon_anime3/gGanondorfTransformEndJointIndices.inc.c"
+};
+
+AnimationHeader gGanondorfTransformEndAnim = {
+#include "assets/objects/object_ganon_anime3/gGanondorfTransformEndAnim.inc.c"
+};
diff --git a/assets/objects/object_ganon_anime3/gGanondorfTransformLoopAnim.c b/assets/objects/object_ganon_anime3/gGanondorfTransformLoopAnim.c
new file mode 100644
index 0000000000..464178153d
--- /dev/null
+++ b/assets/objects/object_ganon_anime3/gGanondorfTransformLoopAnim.c
@@ -0,0 +1,15 @@
+#include "object_ganon_anime3.h"
+
+#include "ultra64.h"
+
+s16 gGanondorfTransformLoopFrameData[] = {
+#include "assets/objects/object_ganon_anime3/gGanondorfTransformLoopFrameData.inc.c"
+};
+
+JointIndex gGanondorfTransformLoopJointIndices[] = {
+#include "assets/objects/object_ganon_anime3/gGanondorfTransformLoopJointIndices.inc.c"
+};
+
+AnimationHeader gGanondorfTransformLoopAnim = {
+#include "assets/objects/object_ganon_anime3/gGanondorfTransformLoopAnim.inc.c"
+};
diff --git a/assets/objects/object_ganon_anime3/gGanondorfTransformStartAnim.c b/assets/objects/object_ganon_anime3/gGanondorfTransformStartAnim.c
new file mode 100644
index 0000000000..dc5b31a367
--- /dev/null
+++ b/assets/objects/object_ganon_anime3/gGanondorfTransformStartAnim.c
@@ -0,0 +1,15 @@
+#include "object_ganon_anime3.h"
+
+#include "ultra64.h"
+
+s16 gGanondorfTransformStartFrameData[] = {
+#include "assets/objects/object_ganon_anime3/gGanondorfTransformStartFrameData.inc.c"
+};
+
+JointIndex gGanondorfTransformStartJointIndices[] = {
+#include "assets/objects/object_ganon_anime3/gGanondorfTransformStartJointIndices.inc.c"
+};
+
+AnimationHeader gGanondorfTransformStartAnim = {
+#include "assets/objects/object_ganon_anime3/gGanondorfTransformStartAnim.inc.c"
+};
diff --git a/assets/objects/object_ganon_anime3/object_ganon_anime3.h b/assets/objects/object_ganon_anime3/object_ganon_anime3.h
new file mode 100644
index 0000000000..80fcc0bc56
--- /dev/null
+++ b/assets/objects/object_ganon_anime3/object_ganon_anime3.h
@@ -0,0 +1,16 @@
+#ifndef OBJECT_GANON_ANIME3_H
+#define OBJECT_GANON_ANIME3_H
+
+#include "animation.h"
+
+extern AnimationHeader gGanondorfShowTriforceStartAnim;
+extern AnimationHeader gGanondorfBurstOutAnim;
+extern AnimationHeader gGanondorfTransformEndAnim;
+extern AnimationHeader gGanondorfFloatingHeavyBreathingAnim;
+extern AnimationHeader gGanondorfTransformStartAnim;
+extern AnimationHeader gGanondorfTransformLoopAnim;
+extern AnimationHeader gGanondorfShowTriforceLoopAnim;
+extern AnimationHeader gGanonUncurlAndFlailAnim;
+extern AnimationHeader gGanonRoarAnim;
+
+#endif
diff --git a/assets/objects/object_zo/effect_bubbles.c b/assets/objects/object_zo/effect_bubbles.c
new file mode 100644
index 0000000000..9f88bfce82
--- /dev/null
+++ b/assets/objects/object_zo/effect_bubbles.c
@@ -0,0 +1,20 @@
+#include "object_zo.h"
+#include "gfx.h"
+
+#define gZoraBubblesTex_WIDTH 16
+#define gZoraBubblesTex_HEIGHT 16
+u64 gZoraBubblesTex[TEX_LEN(u64, gZoraBubblesTex_WIDTH, gZoraBubblesTex_HEIGHT, 8)] = {
+#include "assets/objects/object_zo/gZoraBubblesTex.ia8.inc.c"
+};
+
+Vtx gZoraBubblesModelVtx[] = {
+#include "assets/objects/object_zo/gZoraBubblesModelVtx.inc.c"
+};
+
+Gfx gZoraBubblesMaterialDL[12] = {
+#include "assets/objects/object_zo/gZoraBubblesMaterialDL.inc.c"
+};
+
+Gfx gZoraBubblesModelDL[3] = {
+#include "assets/objects/object_zo/gZoraBubblesModelDL.inc.c"
+};
diff --git a/assets/objects/object_zo/effect_ripples.c b/assets/objects/object_zo/effect_ripples.c
new file mode 100644
index 0000000000..7fb878f2b0
--- /dev/null
+++ b/assets/objects/object_zo/effect_ripples.c
@@ -0,0 +1,10 @@
+#include "object_zo.h"
+#include "assets/objects/gameplay_keep/gameplay_keep.h"
+
+Gfx gZoraRipplesMaterialDL[13] = {
+#include "assets/objects/object_zo/gZoraRipplesMaterialDL.inc.c"
+};
+
+Gfx gZoraRipplesModelDL[3] = {
+#include "assets/objects/object_zo/gZoraRipplesModelDL.inc.c"
+};
diff --git a/assets/objects/object_zo/effect_splashes.c b/assets/objects/object_zo/effect_splashes.c
new file mode 100644
index 0000000000..557830eba1
--- /dev/null
+++ b/assets/objects/object_zo/effect_splashes.c
@@ -0,0 +1,20 @@
+#include "object_zo.h"
+#include "gfx.h"
+
+#define gZoraSplashesTex_WIDTH 16
+#define gZoraSplashesTex_HEIGHT 16
+u64 gZoraSplashesTex[TEX_LEN(u64, gZoraSplashesTex_WIDTH, gZoraSplashesTex_HEIGHT, 8)] = {
+#include "assets/objects/object_zo/gZoraSplashesTex.i8.inc.c"
+};
+
+Vtx gZoraSplashesModelVtx[] = {
+#include "assets/objects/object_zo/gZoraSplashesModelVtx.inc.c"
+};
+
+Gfx gZoraSplashesMaterialDL[14] = {
+#include "assets/objects/object_zo/gZoraSplashesMaterialDL.inc.c"
+};
+
+Gfx gZoraSplashesModelDL[3] = {
+#include "assets/objects/object_zo/gZoraSplashesModelDL.inc.c"
+};
diff --git a/assets/objects/object_zo/gZoraHandsOnHipsTappingFootAnim.c b/assets/objects/object_zo/gZoraHandsOnHipsTappingFootAnim.c
new file mode 100644
index 0000000000..de19ceac14
--- /dev/null
+++ b/assets/objects/object_zo/gZoraHandsOnHipsTappingFootAnim.c
@@ -0,0 +1,14 @@
+#include "object_zo.h"
+#include "array_count.h"
+
+s16 gZoraHandsOnHipsTappingFootFrameData[] = {
+#include "assets/objects/object_zo/gZoraHandsOnHipsTappingFootFrameData.inc.c"
+};
+
+JointIndex gZoraHandsOnHipsTappingFootJointIndices[] = {
+#include "assets/objects/object_zo/gZoraHandsOnHipsTappingFootJointIndices.inc.c"
+};
+
+AnimationHeader gZoraHandsOnHipsTappingFootAnim = {
+#include "assets/objects/object_zo/gZoraHandsOnHipsTappingFootAnim.inc.c"
+};
diff --git a/assets/objects/object_zo/gZoraIdleAnim.c b/assets/objects/object_zo/gZoraIdleAnim.c
new file mode 100644
index 0000000000..0be4d26b2c
--- /dev/null
+++ b/assets/objects/object_zo/gZoraIdleAnim.c
@@ -0,0 +1,14 @@
+#include "object_zo.h"
+#include "array_count.h"
+
+s16 gZoraIdleFrameData[] = {
+#include "assets/objects/object_zo/gZoraIdleFrameData.inc.c"
+};
+
+JointIndex gZoraIdleJointIndices[] = {
+#include "assets/objects/object_zo/gZoraIdleJointIndices.inc.c"
+};
+
+AnimationHeader gZoraIdleAnim = {
+#include "assets/objects/object_zo/gZoraIdleAnim.inc.c"
+};
diff --git a/assets/objects/object_zo/gZoraOpenArmsAnim.c b/assets/objects/object_zo/gZoraOpenArmsAnim.c
new file mode 100644
index 0000000000..5be007b12b
--- /dev/null
+++ b/assets/objects/object_zo/gZoraOpenArmsAnim.c
@@ -0,0 +1,14 @@
+#include "object_zo.h"
+#include "array_count.h"
+
+s16 gZoraOpenArmsFrameData[] = {
+#include "assets/objects/object_zo/gZoraOpenArmsFrameData.inc.c"
+};
+
+JointIndex gZoraOpenArmsJointIndices[] = {
+#include "assets/objects/object_zo/gZoraOpenArmsJointIndices.inc.c"
+};
+
+AnimationHeader gZoraOpenArmsAnim = {
+#include "assets/objects/object_zo/gZoraOpenArmsAnim.inc.c"
+};
diff --git a/assets/objects/object_zo/gZoraSkel.c b/assets/objects/object_zo/gZoraSkel.c
new file mode 100644
index 0000000000..8ea991044a
--- /dev/null
+++ b/assets/objects/object_zo/gZoraSkel.c
@@ -0,0 +1,291 @@
+#include "object_zo.h"
+#include "array_count.h"
+#include "gfx.h"
+
+u64 gZoraTLUT[] = {
+#include "assets/objects/object_zo/gZoraTLUT.tlut.rgba16.inc.c"
+};
+
+#define gZoraFinTex_WIDTH 32
+#define gZoraFinTex_HEIGHT 32
+u64 gZoraFinTex[TEX_LEN(u64, gZoraFinTex_WIDTH, gZoraFinTex_HEIGHT, 8)] = {
+#include "assets/objects/object_zo/gZoraFinTex.ci8.tlut_gZoraTLUT.inc.c"
+};
+
+#define gZoraHeadTailTex_WIDTH 32
+#define gZoraHeadTailTex_HEIGHT 64
+u64 gZoraHeadTailTex[TEX_LEN(u64, gZoraHeadTailTex_WIDTH, gZoraHeadTailTex_HEIGHT, 8)] = {
+#include "assets/objects/object_zo/gZoraHeadTailTex.ci8.tlut_gZoraTLUT.inc.c"
+};
+
+#define gZoraHeadTex_WIDTH 8
+#define gZoraHeadTex_HEIGHT 8
+u64 gZoraHeadTex[TEX_LEN(u64, gZoraHeadTex_WIDTH, gZoraHeadTex_HEIGHT, 8)] = {
+#include "assets/objects/object_zo/gZoraHeadTex.ci8.tlut_gZoraTLUT.inc.c"
+};
+
+u64 gZoraEyeOpenTex[TEX_LEN(u64, ZORA_EYE_TEX_WIDTH, ZORA_EYE_TEX_HEIGHT, 16)] = {
+#include "assets/objects/object_zo/gZoraEyeOpenTex.rgba16.inc.c"
+};
+
+u64 gZoraEyeHalfTex[TEX_LEN(u64, ZORA_EYE_TEX_WIDTH, ZORA_EYE_TEX_HEIGHT, 16)] = {
+#include "assets/objects/object_zo/gZoraEyeHalfTex.rgba16.inc.c"
+};
+
+u64 gZoraEyeClosedTex[TEX_LEN(u64, ZORA_EYE_TEX_WIDTH, ZORA_EYE_TEX_HEIGHT, 16)] = {
+#include "assets/objects/object_zo/gZoraEyeClosedTex.rgba16.inc.c"
+};
+
+#define gZoraMouthTex_WIDTH 32
+#define gZoraMouthTex_HEIGHT 32
+u64 gZoraMouthTex[TEX_LEN(u64, gZoraMouthTex_WIDTH, gZoraMouthTex_HEIGHT, 16)] = {
+#include "assets/objects/object_zo/gZoraMouthTex.rgba16.inc.c"
+};
+
+#define gZoraHandTex_WIDTH 16
+#define gZoraHandTex_HEIGHT 16
+u64 gZoraHandTex[TEX_LEN(u64, gZoraHandTex_WIDTH, gZoraHandTex_HEIGHT, 8)] = {
+#include "assets/objects/object_zo/gZoraHandTex.ci8.tlut_gZoraTLUT.inc.c"
+};
+
+#define gZoraKneeTex_WIDTH 8
+#define gZoraKneeTex_HEIGHT 8
+u64 gZoraKneeTex[TEX_LEN(u64, gZoraKneeTex_WIDTH, gZoraKneeTex_HEIGHT, 8)] = {
+#include "assets/objects/object_zo/gZoraKneeTex.ci8.tlut_gZoraTLUT.inc.c"
+};
+
+Vtx gZoraHeadTailFinVtx[] = {
+#include "assets/objects/object_zo/gZoraHeadTailFinVtx.inc.c"
+};
+
+Vtx gZoraHeadTail3Vtx[] = {
+#include "assets/objects/object_zo/gZoraHeadTail3Vtx.inc.c"
+};
+
+Vtx gZoraHeadTail2Vtx[] = {
+#include "assets/objects/object_zo/gZoraHeadTail2Vtx.inc.c"
+};
+
+Vtx gZoraHeadTail1Vtx[] = {
+#include "assets/objects/object_zo/gZoraHeadTail1Vtx.inc.c"
+};
+
+Vtx gZoraHeadVtx[] = {
+#include "assets/objects/object_zo/gZoraHeadVtx.inc.c"
+};
+
+Vtx gZoraLeftHandVtx[] = {
+#include "assets/objects/object_zo/gZoraLeftHandVtx.inc.c"
+};
+
+Vtx gZoraLeftForearmVtx[] = {
+#include "assets/objects/object_zo/gZoraLeftForearmVtx.inc.c"
+};
+
+Vtx gZoraLeftArmVtx[] = {
+#include "assets/objects/object_zo/gZoraLeftArmVtx.inc.c"
+};
+
+Vtx gZoraRightHandVtx[] = {
+#include "assets/objects/object_zo/gZoraRightHandVtx.inc.c"
+};
+
+Vtx gZoraRightForearmVtx[] = {
+#include "assets/objects/object_zo/gZoraRightForearmVtx.inc.c"
+};
+
+Vtx gZoraRightArmVtx[] = {
+#include "assets/objects/object_zo/gZoraRightArmVtx.inc.c"
+};
+
+Vtx gZoraTorsoVtx[] = {
+#include "assets/objects/object_zo/gZoraTorsoVtx.inc.c"
+};
+
+Vtx gZoraLeftFootVtx[] = {
+#include "assets/objects/object_zo/gZoraLeftFootVtx.inc.c"
+};
+
+Vtx gZoraLeftShinVtx[] = {
+#include "assets/objects/object_zo/gZoraLeftShinVtx.inc.c"
+};
+
+Vtx gZoraLeftThighsVtx[] = {
+#include "assets/objects/object_zo/gZoraLeftThighsVtx.inc.c"
+};
+
+Vtx gZoraRightFootVtx[] = {
+#include "assets/objects/object_zo/gZoraRightFootVtx.inc.c"
+};
+
+Vtx gZoraRightShinVtx[] = {
+#include "assets/objects/object_zo/gZoraRightShinVtx.inc.c"
+};
+
+Vtx gZoraRightThighsVtx[] = {
+#include "assets/objects/object_zo/gZoraRightThighsVtx.inc.c"
+};
+
+Vtx gZoraPelvisVtx[] = {
+#include "assets/objects/object_zo/gZoraPelvisVtx.inc.c"
+};
+
+Gfx gZoraPelvisDL[53] = {
+#include "assets/objects/object_zo/gZoraPelvisDL.inc.c"
+};
+
+Gfx gZoraTorsoDL[111] = {
+#include "assets/objects/object_zo/gZoraTorsoDL.inc.c"
+};
+
+Gfx gZoraHeadDL[79] = {
+#include "assets/objects/object_zo/gZoraHeadDL.inc.c"
+};
+
+Gfx gZoraHeadTail1DL[52] = {
+#include "assets/objects/object_zo/gZoraHeadTail1DL.inc.c"
+};
+
+Gfx gZoraHeadTail2DL[51] = {
+#include "assets/objects/object_zo/gZoraHeadTail2DL.inc.c"
+};
+
+Gfx gZoraHeadTail3DL[51] = {
+#include "assets/objects/object_zo/gZoraHeadTail3DL.inc.c"
+};
+
+Gfx gZoraHeadTailFinDL[72] = {
+#include "assets/objects/object_zo/gZoraHeadTailFinDL.inc.c"
+};
+
+Gfx gZoraRightArmDL[76] = {
+#include "assets/objects/object_zo/gZoraRightArmDL.inc.c"
+};
+
+Gfx gZoraRightForearmDL[92] = {
+#include "assets/objects/object_zo/gZoraRightForearmDL.inc.c"
+};
+
+Gfx gZoraRightHandDL[65] = {
+#include "assets/objects/object_zo/gZoraRightHandDL.inc.c"
+};
+
+Gfx gZoraLeftArmDL[76] = {
+#include "assets/objects/object_zo/gZoraLeftArmDL.inc.c"
+};
+
+Gfx gZoraLeftForearmDL[92] = {
+#include "assets/objects/object_zo/gZoraLeftForearmDL.inc.c"
+};
+
+Gfx gZoraLeftHandDL[65] = {
+#include "assets/objects/object_zo/gZoraLeftHandDL.inc.c"
+};
+
+Gfx gZoraRightThighsDL[92] = {
+#include "assets/objects/object_zo/gZoraRightThighsDL.inc.c"
+};
+
+Gfx gZoraRightShinDL[91] = {
+#include "assets/objects/object_zo/gZoraRightShinDL.inc.c"
+};
+
+Gfx gZoraRightFootDL[89] = {
+#include "assets/objects/object_zo/gZoraRightFootDL.inc.c"
+};
+
+Gfx gZoraLeftThighsDL[92] = {
+#include "assets/objects/object_zo/gZoraLeftThighsDL.inc.c"
+};
+
+Gfx gZoraLeftShinDL[91] = {
+#include "assets/objects/object_zo/gZoraLeftShinDL.inc.c"
+};
+
+Gfx gZoraLeftFootDL[89] = {
+#include "assets/objects/object_zo/gZoraLeftFootDL.inc.c"
+};
+
+StandardLimb gZoraPelvisLimb = {
+#include "assets/objects/object_zo/gZoraPelvisLimb.inc.c"
+};
+
+StandardLimb gZoraLeftThighsLimb = {
+#include "assets/objects/object_zo/gZoraLeftThighsLimb.inc.c"
+};
+
+StandardLimb gZoraLeftShinLimb = {
+#include "assets/objects/object_zo/gZoraLeftShinLimb.inc.c"
+};
+
+StandardLimb gZoraLeftFootLimb = {
+#include "assets/objects/object_zo/gZoraLeftFootLimb.inc.c"
+};
+
+StandardLimb gZoraRightThighsLimb = {
+#include "assets/objects/object_zo/gZoraRightThighsLimb.inc.c"
+};
+
+StandardLimb gZoraRightShinLimb = {
+#include "assets/objects/object_zo/gZoraRightShinLimb.inc.c"
+};
+
+StandardLimb gZoraRightFootLimb = {
+#include "assets/objects/object_zo/gZoraRightFootLimb.inc.c"
+};
+
+StandardLimb gZoraTorsoLimb = {
+#include "assets/objects/object_zo/gZoraTorsoLimb.inc.c"
+};
+
+StandardLimb gZoraLeftArmLimb = {
+#include "assets/objects/object_zo/gZoraLeftArmLimb.inc.c"
+};
+
+StandardLimb gZoraLeftForearmLimb = {
+#include "assets/objects/object_zo/gZoraLeftForearmLimb.inc.c"
+};
+
+StandardLimb gZoraLeftHandLimb = {
+#include "assets/objects/object_zo/gZoraLeftHandLimb.inc.c"
+};
+
+StandardLimb gZoraRightArmLimb = {
+#include "assets/objects/object_zo/gZoraRightArmLimb.inc.c"
+};
+
+StandardLimb gZoraRightForearmLimb = {
+#include "assets/objects/object_zo/gZoraRightForearmLimb.inc.c"
+};
+
+StandardLimb gZoraRightHandLimb = {
+#include "assets/objects/object_zo/gZoraRightHandLimb.inc.c"
+};
+
+StandardLimb gZoraHeadLimb = {
+#include "assets/objects/object_zo/gZoraHeadLimb.inc.c"
+};
+
+StandardLimb gZoraHeadTail1Limb = {
+#include "assets/objects/object_zo/gZoraHeadTail1Limb.inc.c"
+};
+
+StandardLimb gZoraHeadTail2Limb = {
+#include "assets/objects/object_zo/gZoraHeadTail2Limb.inc.c"
+};
+
+StandardLimb gZoraHeadTail3Limb = {
+#include "assets/objects/object_zo/gZoraHeadTail3Limb.inc.c"
+};
+
+StandardLimb gZoraHeadTailFinLimb = {
+#include "assets/objects/object_zo/gZoraHeadTailFinLimb.inc.c"
+};
+
+void* gZoraLimbs[] = {
+#include "assets/objects/object_zo/gZoraLimbs.inc.c"
+};
+
+FlexSkeletonHeader gZoraSkel = {
+#include "assets/objects/object_zo/gZoraSkel.inc.c"
+};
diff --git a/assets/objects/object_zo/gZoraSurfaceAnim.c b/assets/objects/object_zo/gZoraSurfaceAnim.c
new file mode 100644
index 0000000000..f0fd1eefdb
--- /dev/null
+++ b/assets/objects/object_zo/gZoraSurfaceAnim.c
@@ -0,0 +1,14 @@
+#include "object_zo.h"
+#include "array_count.h"
+
+s16 gZoraSurfaceFrameData[] = {
+#include "assets/objects/object_zo/gZoraSurfaceFrameData.inc.c"
+};
+
+JointIndex gZoraSurfaceJointIndices[] = {
+#include "assets/objects/object_zo/gZoraSurfaceJointIndices.inc.c"
+};
+
+AnimationHeader gZoraSurfaceAnim = {
+#include "assets/objects/object_zo/gZoraSurfaceAnim.inc.c"
+};
diff --git a/assets/objects/object_zo/gZoraThrowRupeesAnim.c b/assets/objects/object_zo/gZoraThrowRupeesAnim.c
new file mode 100644
index 0000000000..8c1ac64a86
--- /dev/null
+++ b/assets/objects/object_zo/gZoraThrowRupeesAnim.c
@@ -0,0 +1,14 @@
+#include "object_zo.h"
+#include "array_count.h"
+
+s16 gZoraThrowRupeesFrameData[] = {
+#include "assets/objects/object_zo/gZoraThrowRupeesFrameData.inc.c"
+};
+
+JointIndex gZoraThrowRupeesJointIndices[] = {
+#include "assets/objects/object_zo/gZoraThrowRupeesJointIndices.inc.c"
+};
+
+AnimationHeader gZoraThrowRupeesAnim = {
+#include "assets/objects/object_zo/gZoraThrowRupeesAnim.inc.c"
+};
diff --git a/assets/objects/object_zo/object_zo.h b/assets/objects/object_zo/object_zo.h
new file mode 100644
index 0000000000..b68a1223d0
--- /dev/null
+++ b/assets/objects/object_zo/object_zo.h
@@ -0,0 +1,55 @@
+#ifndef OBJECT_ZO_H
+#define OBJECT_ZO_H
+
+#include "ultra64.h"
+#include "animation.h"
+#include "tex_len.h"
+
+extern Gfx gZoraBubblesMaterialDL[12];
+extern Gfx gZoraBubblesModelDL[3];
+
+extern Gfx gZoraSplashesMaterialDL[14];
+extern Gfx gZoraSplashesModelDL[3];
+
+extern Gfx gZoraRipplesMaterialDL[13];
+extern Gfx gZoraRipplesModelDL[3];
+
+extern AnimationHeader gZoraHandsOnHipsTappingFootAnim;
+extern AnimationHeader gZoraOpenArmsAnim;
+extern AnimationHeader gZoraThrowRupeesAnim;
+extern AnimationHeader gZoraSurfaceAnim;
+extern AnimationHeader gZoraIdleAnim;
+
+#define ZORA_EYE_TEX_WIDTH 32
+#define ZORA_EYE_TEX_HEIGHT 32
+extern u64 gZoraEyeOpenTex[TEX_LEN(u64, ZORA_EYE_TEX_WIDTH, ZORA_EYE_TEX_HEIGHT, 16)];
+extern u64 gZoraEyeHalfTex[TEX_LEN(u64, ZORA_EYE_TEX_WIDTH, ZORA_EYE_TEX_HEIGHT, 16)];
+extern u64 gZoraEyeClosedTex[TEX_LEN(u64, ZORA_EYE_TEX_WIDTH, ZORA_EYE_TEX_HEIGHT, 16)];
+
+typedef enum ZoraLimb {
+ /* 0 */ ZORA_LIMB_NONE,
+ /* 1 */ ZORA_LIMB_PELVIS,
+ /* 2 */ ZORA_LIMB_LEFT_THIGHS,
+ /* 3 */ ZORA_LIMB_LEFT_SHIN,
+ /* 4 */ ZORA_LIMB_LEFT_FOOT,
+ /* 5 */ ZORA_LIMB_RIGHT_THIGHS,
+ /* 6 */ ZORA_LIMB_RIGHT_SHIN,
+ /* 7 */ ZORA_LIMB_RIGHT_FOOT,
+ /* 8 */ ZORA_LIMB_TORSO,
+ /* 9 */ ZORA_LIMB_LEFT_ARM,
+ /* 10 */ ZORA_LIMB_LEFT_FOREARM,
+ /* 11 */ ZORA_LIMB_LEFT_HAND,
+ /* 12 */ ZORA_LIMB_RIGHT_ARM,
+ /* 13 */ ZORA_LIMB_RIGHT_FOREARM,
+ /* 14 */ ZORA_LIMB_RIGHT_HAND,
+ /* 15 */ ZORA_LIMB_HEAD,
+ /* 16 */ ZORA_LIMB_HEAD_TAIL_1,
+ /* 17 */ ZORA_LIMB_HEAD_TAIL_2,
+ /* 18 */ ZORA_LIMB_HEAD_TAIL_3,
+ /* 19 */ ZORA_LIMB_HEAD_TAIL_FIN,
+ /* 20 */ ZORA_LIMB_MAX
+} ZoraLimb;
+
+extern FlexSkeletonHeader gZoraSkel;
+
+#endif
diff --git a/assets/xml/objects/object_anubice.xml b/assets/xml/objects/object_anubice.xml
index 492a8e4235..903804f74a 100644
--- a/assets/xml/objects/object_anubice.xml
+++ b/assets/xml/objects/object_anubice.xml
@@ -1,6 +1,6 @@
-
+
@@ -69,20 +69,20 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_bl.xml b/assets/xml/objects/object_bl.xml
index a987840a31..3ae9c89dc0 100644
--- a/assets/xml/objects/object_bl.xml
+++ b/assets/xml/objects/object_bl.xml
@@ -34,10 +34,10 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/assets/xml/objects/object_bw.xml b/assets/xml/objects/object_bw.xml
index 27a84f18f2..e7693b47aa 100644
--- a/assets/xml/objects/object_bw.xml
+++ b/assets/xml/objects/object_bw.xml
@@ -33,20 +33,20 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/assets/xml/objects/object_fu.xml b/assets/xml/objects/object_fu.xml
index 1bc18759a5..4a5bb6c74d 100644
--- a/assets/xml/objects/object_fu.xml
+++ b/assets/xml/objects/object_fu.xml
@@ -35,22 +35,22 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_ge1.xml b/assets/xml/objects/object_ge1.xml
index bbb5d82a0d..0aaaf59b7b 100644
--- a/assets/xml/objects/object_ge1.xml
+++ b/assets/xml/objects/object_ge1.xml
@@ -2,24 +2,24 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_geldb.xml b/assets/xml/objects/object_geldb.xml
index f80ad410a6..1488db00b0 100644
--- a/assets/xml/objects/object_geldb.xml
+++ b/assets/xml/objects/object_geldb.xml
@@ -1,7 +1,7 @@
-
+
@@ -120,28 +120,28 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gndd.xml b/assets/xml/objects/object_gndd.xml
index d284893579..8f119f05ef 100644
--- a/assets/xml/objects/object_gndd.xml
+++ b/assets/xml/objects/object_gndd.xml
@@ -145,31 +145,31 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/assets/xml/objects/object_hata.xml b/assets/xml/objects/object_hata.xml
index 98887b030d..7a8beff3a4 100644
--- a/assets/xml/objects/object_hata.xml
+++ b/assets/xml/objects/object_hata.xml
@@ -7,29 +7,29 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_im.xml b/assets/xml/objects/object_im.xml
index c6ce6b6890..546f38a9a3 100644
--- a/assets/xml/objects/object_im.xml
+++ b/assets/xml/objects/object_im.xml
@@ -107,23 +107,23 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_link_boy.xml b/assets/xml/objects/object_link_boy.xml
index a0052722f3..21a1d407c2 100644
--- a/assets/xml/objects/object_link_boy.xml
+++ b/assets/xml/objects/object_link_boy.xml
@@ -556,17 +556,17 @@
-
+
-
+
-
+
-
+
diff --git a/assets/xml/objects/object_link_child.xml b/assets/xml/objects/object_link_child.xml
index 476c5f568d..25ad178c3c 100644
--- a/assets/xml/objects/object_link_child.xml
+++ b/assets/xml/objects/object_link_child.xml
@@ -450,27 +450,27 @@
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/assets/xml/objects/object_zo.xml b/assets/xml/objects/object_zo.xml
index 45c9601284..92aefa8949 100644
--- a/assets/xml/objects/object_zo.xml
+++ b/assets/xml/objects/object_zo.xml
@@ -1,110 +1,110 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/assets/xml/overlays/ovl_Arrow_Fire.xml b/assets/xml/overlays/ovl_Arrow_Fire.xml
index 58e8853f7f..8f7eba2573 100644
--- a/assets/xml/overlays/ovl_Arrow_Fire.xml
+++ b/assets/xml/overlays/ovl_Arrow_Fire.xml
@@ -1,11 +1,11 @@
-
-
-
+
+
+
-
-
+
+
diff --git a/assets/xml/overlays/ovl_Arrow_Ice.xml b/assets/xml/overlays/ovl_Arrow_Ice.xml
index d7657506b1..e2f239c15d 100644
--- a/assets/xml/overlays/ovl_Arrow_Ice.xml
+++ b/assets/xml/overlays/ovl_Arrow_Ice.xml
@@ -1,11 +1,11 @@
-
-
-
+
+
+
-
-
+
+
diff --git a/assets/xml/overlays/ovl_Arrow_Light.xml b/assets/xml/overlays/ovl_Arrow_Light.xml
index 101e37f227..93371024a7 100644
--- a/assets/xml/overlays/ovl_Arrow_Light.xml
+++ b/assets/xml/overlays/ovl_Arrow_Light.xml
@@ -1,11 +1,11 @@
-
-
-
+
+
+
-
-
+
+
diff --git a/assets/xml/overlays/ovl_Boss_Ganon.xml b/assets/xml/overlays/ovl_Boss_Ganon.xml
index 9afa6d1251..f028b92050 100644
--- a/assets/xml/overlays/ovl_Boss_Ganon.xml
+++ b/assets/xml/overlays/ovl_Boss_Ganon.xml
@@ -1,20 +1,20 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -52,50 +52,50 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
@@ -105,33 +105,33 @@
-
-
-
+
+
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
diff --git a/assets/xml/overlays/ovl_Boss_Ganon2.xml b/assets/xml/overlays/ovl_Boss_Ganon2.xml
index 75e7ee9fee..4a1ddd43c2 100644
--- a/assets/xml/overlays/ovl_Boss_Ganon2.xml
+++ b/assets/xml/overlays/ovl_Boss_Ganon2.xml
@@ -1,53 +1,53 @@
-
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
+
diff --git a/assets/xml/overlays/ovl_file_choose.xml b/assets/xml/overlays/ovl_file_choose.xml
index 8808ab4281..f47e1f46ee 100644
--- a/assets/xml/overlays/ovl_file_choose.xml
+++ b/assets/xml/overlays/ovl_file_choose.xml
@@ -1,33 +1,33 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/assets/xml/overlays/ovl_file_choose_pal_gc.xml b/assets/xml/overlays/ovl_file_choose_pal_gc.xml
index 3c4c24cdab..58b22b8608 100644
--- a/assets/xml/overlays/ovl_file_choose_pal_gc.xml
+++ b/assets/xml/overlays/ovl_file_choose_pal_gc.xml
@@ -1,30 +1,30 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/assets/xml/overlays/ovl_file_choose_pal_n64.xml b/assets/xml/overlays/ovl_file_choose_pal_n64.xml
index 282fad0c37..2c61750279 100644
--- a/assets/xml/overlays/ovl_file_choose_pal_n64.xml
+++ b/assets/xml/overlays/ovl_file_choose_pal_n64.xml
@@ -1,33 +1,33 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/include/camera.h b/include/camera.h
index 9d4783de06..ec33d47807 100644
--- a/include/camera.h
+++ b/include/camera.h
@@ -119,6 +119,12 @@ struct View;
#define CAM_VIEW_FOV (1 << 5) // camera->fov
#define CAM_VIEW_ROLL (1 << 6) // camera->roll
+#define CAM_DATA_SET_0 (1 << 0)
+#define CAM_DATA_SET_1 (1 << 1)
+#define CAM_DATA_SET_2 (1 << 2)
+#define CAM_DATA_SET_3 (1 << 3)
+#define CAM_DATA_SET_4 (1 << 4)
+
// All scenes using `SCENE_CAM_TYPE_FIXED_SHOP_VIEWPOINT` or `SCENE_CAM_TYPE_FIXED_TOGGLE_VIEWPOINT` are expected
// to have their first two bgCamInfo entries be the following:
#define BGCAM_INDEX_TOGGLE_LOCKED 0
@@ -851,6 +857,22 @@ typedef struct KeepOn4ReadOnlyData {
/* 0x1E */ s16 unk_1E;
} KeepOn4ReadOnlyData; // size = 0x20
+typedef enum CameraItemType {
+ /* 1 */ CAM_ITEM_TYPE_1 = 1,
+ /* 2 */ CAM_ITEM_TYPE_2,
+ /* 3 */ CAM_ITEM_TYPE_3,
+ /* 4 */ CAM_ITEM_TYPE_4,
+ /* 5 */ CAM_ITEM_TYPE_5,
+ /* 8 */ CAM_ITEM_TYPE_8 = 8,
+ /* 9 */ CAM_ITEM_TYPE_9,
+ /* 10 */ CAM_ITEM_TYPE_10,
+ /* 11 */ CAM_ITEM_TYPE_11,
+ /* 12 */ CAM_ITEM_TYPE_12,
+ /* 81 */ CAM_ITEM_TYPE_81 = 81,
+ /* 90 */ CAM_ITEM_TYPE_90 = 90,
+ /* 91 */ CAM_ITEM_TYPE_91
+} CameraItemType;
+
typedef struct KeepOn4ReadWriteData {
/* 0x00 */ f32 unk_00;
/* 0x04 */ f32 unk_04;
@@ -1648,8 +1670,7 @@ s32 Camera_ChangeDoorCam(Camera* camera, struct Actor* doorActor, s16 bgCamIndex
s16 timer3);
s32 Camera_Copy(Camera* dstCamera, Camera* srcCamera);
Vec3f Camera_GetQuakeOffset(Camera* camera);
-void Camera_SetCameraData(Camera* camera, s16 setDataFlags, void* data0, void* data1, s16 data2, s16 data3,
- UNK_TYPE arg6);
+void Camera_SetCameraData(Camera* camera, s16 setDataFlags, void* data0, void* data1, s16 data2, s16 data3, s32 data4);
s32 func_8005B198(void);
s16 Camera_SetFinishedFlag(Camera* camera);
diff --git a/spec/spec b/spec/spec
index 1ae6def863..2e66f39651 100644
--- a/spec/spec
+++ b/spec/spec
@@ -3000,7 +3000,15 @@ beginseg
name "object_zo"
compress
romalign 0x1000
- include "$(BUILD_DIR)/assets/objects/object_zo/object_zo.o"
+ include "$(BUILD_DIR)/assets/objects/object_zo/gZoraHandsOnHipsTappingFootAnim.o"
+ include "$(BUILD_DIR)/assets/objects/object_zo/gZoraOpenArmsAnim.o"
+ include "$(BUILD_DIR)/assets/objects/object_zo/gZoraThrowRupeesAnim.o"
+ include "$(BUILD_DIR)/assets/objects/object_zo/effect_bubbles.o"
+ include "$(BUILD_DIR)/assets/objects/object_zo/effect_splashes.o"
+ include "$(BUILD_DIR)/assets/objects/object_zo/gZoraSurfaceAnim.o"
+ include "$(BUILD_DIR)/assets/objects/object_zo/gZoraIdleAnim.o"
+ include "$(BUILD_DIR)/assets/objects/object_zo/gZoraSkel.o"
+ include "$(BUILD_DIR)/assets/objects/object_zo/effect_ripples.o"
number 6
endseg
@@ -4016,7 +4024,15 @@ beginseg
name "object_ganon_anime3"
compress
romalign 0x1000
- include "$(BUILD_DIR)/assets/objects/object_ganon_anime3/object_ganon_anime3.o"
+ include "$(BUILD_DIR)/assets/objects/object_ganon_anime3/gGanondorfShowTriforceStartAnim.o"
+ include "$(BUILD_DIR)/assets/objects/object_ganon_anime3/gGanondorfBurstOutAnim.o"
+ include "$(BUILD_DIR)/assets/objects/object_ganon_anime3/gGanondorfTransformEndAnim.o"
+ include "$(BUILD_DIR)/assets/objects/object_ganon_anime3/gGanondorfFloatingHeavyBreathingAnim.o"
+ include "$(BUILD_DIR)/assets/objects/object_ganon_anime3/gGanondorfTransformStartAnim.o"
+ include "$(BUILD_DIR)/assets/objects/object_ganon_anime3/gGanondorfTransformLoopAnim.o"
+ include "$(BUILD_DIR)/assets/objects/object_ganon_anime3/gGanondorfShowTriforceLoopAnim.o"
+ include "$(BUILD_DIR)/assets/objects/object_ganon_anime3/gGanonUncurlAndFlailAnim.o"
+ include "$(BUILD_DIR)/assets/objects/object_ganon_anime3/gGanonRoarAnim.o"
number 6
endseg
diff --git a/src/code/game.c b/src/code/game.c
index 1f4ff8cdbf..1636633f97 100644
--- a/src/code/game.c
+++ b/src/code/game.c
@@ -32,7 +32,7 @@
#include "play_state.h"
#include "vis.h"
-#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128"
+#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0"
SpeedMeter D_801664D0;
VisCvg sVisCvg;
diff --git a/src/code/z_camera.c b/src/code/z_camera.c
index ce1fa53c00..71f6a0b82e 100644
--- a/src/code/z_camera.c
+++ b/src/code/z_camera.c
@@ -27,7 +27,7 @@
#include "overlays/actors/ovl_En_Horse/z_en_horse.h"
#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
- "ique-cn:128 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128"
+ "ique-cn:64 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128"
s16 Camera_RequestSettingImpl(Camera* camera, s16 requestedSetting, s16 flags);
s32 Camera_RequestModeImpl(Camera* camera, s16 requestedMode, u8 forceModeChange);
@@ -3661,7 +3661,7 @@ s32 Camera_KeepOn3(Camera* camera) {
}
#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
- "ique-cn:128 ntsc-1.0:82 ntsc-1.1:82 ntsc-1.2:82 pal-1.0:82 pal-1.1:82"
+ "ique-cn:128 ntsc-1.0:79 ntsc-1.1:79 ntsc-1.2:79 pal-1.0:79 pal-1.1:79"
s32 Camera_KeepOn4(Camera* camera) {
static Vec3f D_8015BD50;
@@ -3677,7 +3677,7 @@ s32 Camera_KeepOn4(Camera* camera) {
VecGeo spB8;
UNUSED VecGeo spB0;
VecGeo spA8;
- s16* temp_s0 = &camera->data2;
+ s16* itemType = &camera->data2;
s16 spA2;
s16 spA0;
s16 sp9E;
@@ -3698,12 +3698,12 @@ s32 Camera_KeepOn4(Camera* camera) {
camera->play->view.unk_124 = camera->camId | 0x50;
return 1;
}
- rwData->unk_14 = *temp_s0;
+ rwData->unk_14 = *itemType;
camera->stateFlags &= ~CAM_STATE_LOCK_MODE;
}
- if (rwData->unk_14 != *temp_s0) {
- PRINTF(VT_COL(YELLOW, BLACK) "camera: item: item type changed %d -> %d\n" VT_RST, rwData->unk_14, *temp_s0);
+ if (rwData->unk_14 != *itemType) {
+ PRINTF(VT_COL(YELLOW, BLACK) "camera: item: item type changed %d -> %d\n" VT_RST, rwData->unk_14, *itemType);
camera->animState = 20;
camera->stateFlags |= CAM_STATE_LOCK_MODE;
camera->stateFlags &= ~(CAM_STATE_CHECK_WATER | CAM_STATE_CHECK_BG);
@@ -3726,33 +3726,33 @@ s32 Camera_KeepOn4(Camera* camera) {
roData->interfaceField = GET_NEXT_RO_DATA(values);
roData->unk_14 = GET_NEXT_SCALED_RO_DATA(values);
roData->unk_1E = GET_NEXT_RO_DATA(values);
- PRINTF("camera: item: type %d\n", *temp_s0);
- switch (*temp_s0) {
- case 1:
+ PRINTF("camera: item: type %d\n", *itemType);
+ switch (*itemType) {
+ case CAM_ITEM_TYPE_1:
roData->unk_00 = playerHeight * -0.6f * yNormal;
roData->unk_04 = playerHeight * 2.0f * yNormal;
roData->unk_08 = 10.0f;
break;
- case 2:
- case 3:
+ case CAM_ITEM_TYPE_2:
+ case CAM_ITEM_TYPE_3:
roData->unk_08 = -20.0f;
roData->unk_18 = 80.0f;
break;
- case 4:
+ case CAM_ITEM_TYPE_4:
roData->unk_00 = playerHeight * -0.2f * yNormal;
roData->unk_08 = 25.0f;
break;
- case 8:
+ case CAM_ITEM_TYPE_8:
roData->unk_00 = playerHeight * -0.2f * yNormal;
roData->unk_04 = playerHeight * 0.8f * yNormal;
roData->unk_08 = 50.0f;
roData->unk_18 = 70.0f;
break;
- case 9:
+ case CAM_ITEM_TYPE_9:
roData->unk_00 = playerHeight * 0.1f * yNormal;
roData->unk_04 = playerHeight * 0.5f * yNormal;
roData->unk_08 = -20.0f;
@@ -3761,7 +3761,7 @@ s32 Camera_KeepOn4(Camera* camera) {
CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE, KEEPON4_FLAG_6);
break;
- case 5:
+ case CAM_ITEM_TYPE_5:
roData->unk_00 = playerHeight * -0.4f * yNormal;
roData->unk_08 = -10.0f;
roData->unk_0C = 45.0f;
@@ -3769,7 +3769,7 @@ s32 Camera_KeepOn4(Camera* camera) {
CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, KEEPON4_FLAG_1);
break;
- case 10:
+ case CAM_ITEM_TYPE_10:
roData->unk_00 = playerHeight * -0.5f * yNormal;
roData->unk_04 = playerHeight * 1.5f * yNormal;
roData->unk_08 = -15.0f;
@@ -3780,7 +3780,7 @@ s32 Camera_KeepOn4(Camera* camera) {
roData->unk_1E = 0x3C;
break;
- case 12:
+ case CAM_ITEM_TYPE_12:
roData->unk_00 = playerHeight * -0.6f * yNormal;
roData->unk_04 = playerHeight * 1.6f * yNormal;
roData->unk_08 = -2.0f;
@@ -3792,14 +3792,14 @@ s32 Camera_KeepOn4(Camera* camera) {
roData->unk_18 = 50.0f;
break;
- case 0x5A:
+ case CAM_ITEM_TYPE_90:
roData->unk_00 = playerHeight * -0.3f * yNormal;
roData->unk_18 = 45.0f;
roData->interfaceField =
CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_IGNORE, KEEPON4_FLAG_1);
break;
- case 0x5B:
+ case CAM_ITEM_TYPE_91:
roData->unk_00 = playerHeight * -0.1f * yNormal;
roData->unk_04 = playerHeight * 1.5f * yNormal;
roData->unk_08 = -3.0f;
@@ -3809,7 +3809,7 @@ s32 Camera_KeepOn4(Camera* camera) {
CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_IGNORE, KEEPON4_FLAG_3);
break;
- case 0x51:
+ case CAM_ITEM_TYPE_81:
roData->unk_00 = playerHeight * -0.3f * yNormal;
roData->unk_04 = playerHeight * 1.5f * yNormal;
roData->unk_08 = 2.0f;
@@ -3821,7 +3821,7 @@ s32 Camera_KeepOn4(Camera* camera) {
roData->unk_1E = 0x1E;
break;
- case 11:
+ case CAM_ITEM_TYPE_11:
roData->unk_00 = playerHeight * -0.19f * yNormal;
roData->unk_04 = playerHeight * 0.7f * yNormal;
roData->unk_0C = 130.0f;
@@ -8874,25 +8874,24 @@ Vec3f Camera_GetQuakeOffset(Camera* camera) {
return camera->quakeOffset;
}
-void Camera_SetCameraData(Camera* camera, s16 setDataFlags, void* data0, void* data1, s16 data2, s16 data3,
- UNK_TYPE arg6) {
- if (setDataFlags & 0x1) {
+void Camera_SetCameraData(Camera* camera, s16 setDataFlags, void* data0, void* data1, s16 data2, s16 data3, s32 data4) {
+ if (setDataFlags & CAM_DATA_SET_0) {
camera->data0 = data0;
}
- if (setDataFlags & 0x2) {
+ if (setDataFlags & CAM_DATA_SET_1) {
camera->data1 = data1;
}
- if (setDataFlags & 0x4) {
+ if (setDataFlags & CAM_DATA_SET_2) {
camera->data2 = data2;
}
- if (setDataFlags & 0x8) {
+ if (setDataFlags & CAM_DATA_SET_3) {
camera->data3 = data3;
}
- if (setDataFlags & 0x10) {
+ if (setDataFlags & CAM_DATA_SET_4) {
PRINTF(VT_COL(RED, WHITE) "camera: setCameraData: last argument not alive!\n" VT_RST);
}
}
diff --git a/src/code/z_collision_check.c b/src/code/z_collision_check.c
index 158948a2eb..75e6ebef7d 100644
--- a/src/code/z_collision_check.c
+++ b/src/code/z_collision_check.c
@@ -17,7 +17,7 @@
#include "z_lib.h"
#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \
- "ique-cn:192 ntsc-1.0:168 ntsc-1.1:168 ntsc-1.2:168 pal-1.0:168 pal-1.1:168"
+ "ique-cn:192 ntsc-1.0:160 ntsc-1.1:160 ntsc-1.2:160 pal-1.0:160 pal-1.1:160"
typedef s32 (*ColChkResetFunc)(PlayState*, Collider*);
typedef void (*ColChkApplyFunc)(PlayState*, CollisionCheckContext*, Collider*);
diff --git a/src/code/z_onepointdemo.c b/src/code/z_onepointdemo.c
index 12dc2d2568..12915e9a80 100644
--- a/src/code/z_onepointdemo.c
+++ b/src/code/z_onepointdemo.c
@@ -4293,7 +4293,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
subCam->timer = -99;
if (Play_CamIsNotFixed(play)) {
Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_TURN_AROUND);
- subCam->data2 = 0xC;
+ subCam->data2 = CAM_ITEM_TYPE_12;
} else {
Play_CopyCamera(play, subCamId, CAM_ID_MAIN);
Play_RequestCameraSetting(play, subCamId, CAM_SET_FREE2);
diff --git a/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.c b/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.c
index 8693802846..3d68864291 100644
--- a/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.c
+++ b/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.c
@@ -228,7 +228,7 @@ void BgMoriRakkatenjo_Update(Actor* thisx, PlayState* play2) {
if (sCamSetting == CAM_SET_NONE) {
PRINTF("camera changed (mori rakka tenjyo) ... \n");
sCamSetting = play->cameraPtrs[CAM_ID_MAIN]->setting;
- Camera_SetCameraData(play->cameraPtrs[CAM_ID_MAIN], 1, &this->dyna.actor, NULL, 0, 0, 0);
+ Camera_SetCameraData(play->cameraPtrs[CAM_ID_MAIN], CAM_DATA_SET_0, &this->dyna.actor, NULL, 0, 0, 0);
Camera_RequestSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_FOREST_BIRDS_EYE);
}
} else if (sCamSetting != CAM_SET_NONE) {
diff --git a/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c b/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c
index f071b34fd0..bf0ec281c3 100644
--- a/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c
+++ b/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c
@@ -33,7 +33,7 @@
#include "assets/objects/gameplay_keep/gameplay_keep_0x173D0.h"
#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
- "ique-cn:128 pal-1.0:128 pal-1.1:128"
+ "ique-cn:128 pal-1.0:0 pal-1.1:0"
#define FLAGS \
(ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \
diff --git a/src/overlays/actors/ovl_Demo_Im/z_demo_im.h b/src/overlays/actors/ovl_Demo_Im/z_demo_im.h
index ac3e06250c..ddbec02833 100644
--- a/src/overlays/actors/ovl_Demo_Im/z_demo_im.h
+++ b/src/overlays/actors/ovl_Demo_Im/z_demo_im.h
@@ -4,32 +4,13 @@
#include "ultra64.h"
#include "actor.h"
+#include "assets/objects/object_im/object_im.h"
+
struct DemoIm;
typedef void (*DemoImActionFunc)(struct DemoIm*, struct PlayState*);
typedef void (*DemoImDrawFunc)(struct DemoIm*, struct PlayState*);
-typedef enum ImpaLimb {
- /* 0x00 */ IMPA_LIMB_NONE,
- /* 0x01 */ IMPA_LIMB_ROOT,
- /* 0x02 */ IMPA_LIMB_TORSO,
- /* 0x03 */ IMPA_LIMB_LEFT_THIGH,
- /* 0x04 */ IMPA_LIMB_LEFT_LEG,
- /* 0x05 */ IMPA_LIMB_LEFT_FOOT,
- /* 0x06 */ IMPA_LIMB_RIGHT_THIGH,
- /* 0x07 */ IMPA_LIMB_RIGHT_LEG,
- /* 0x08 */ IMPA_LIMB_RIGHT_FOOT,
- /* 0x09 */ IMPA_LIMB_CHEST,
- /* 0x0A */ IMPA_LIMB_LEFT_SHOULDER,
- /* 0x0B */ IMPA_LIMB_LEFT_ARM,
- /* 0x0C */ IMPA_LIMB_LEFT_HAND,
- /* 0x0D */ IMPA_LIMB_RIGHT_SHOULDER,
- /* 0x0E */ IMPA_LIMB_RIGHT_ARM,
- /* 0x0F */ IMPA_LIMB_RIGHT_HAND,
- /* 0x10 */ IMPA_LIMB_HEAD,
- /* 0x11 */ IMPA_LIMB_MAX
-} ImpaLimb;
-
typedef struct DemoIm {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime;
diff --git a/src/overlays/actors/ovl_En_Anubice/z_en_anubice.h b/src/overlays/actors/ovl_En_Anubice/z_en_anubice.h
index 51b143fa1e..fd54405a29 100644
--- a/src/overlays/actors/ovl_En_Anubice/z_en_anubice.h
+++ b/src/overlays/actors/ovl_En_Anubice/z_en_anubice.h
@@ -4,30 +4,12 @@
#include "ultra64.h"
#include "actor.h"
+#include "assets/objects/object_anubice/object_anubice.h"
+
struct EnAnubice;
typedef void (*EnAnubiceActionFunc)(struct EnAnubice*, struct PlayState*);
-typedef enum AnubiceLimbs {
- /* 0 */ ANUBICE_LIMB_NONE,
- /* 1 */ ANUBICE_LIMB_ROOT,
- /* 2 */ ANUBICE_LIMB_BODY_ROOT,
- /* 3 */ ANUBICE_LIMB_CHEST,
- /* 4 */ ANUBICE_LIMB_ABDOMEN_ROOT,
- /* 5 */ ANUBICE_LIMB_UPPER_ABDOMEN,
- /* 6 */ ANUBICE_LIMB_LOWER_ABDOMEN,
- /* 7 */ ANUBICE_LIMB_TAIL_ROOT,
- /* 8 */ ANUBICE_LIMB_TAIL_BASE,
- /* 9 */ ANUBICE_LIMB_TAIL_TIP,
- /* 10 */ ANUBICE_LIMB_JEWEL_ROOT,
- /* 11 */ ANUBICE_LIMB_JEWEL,
- /* 12 */ ANUBICE_LIMB_HEAD_ROOT,
- /* 13 */ ANUBICE_LIMB_HEAD,
- /* 14 */ ANUBICE_LIMB_JAW_ROOT,
- /* 15 */ ANUBICE_LIMB_JAW,
- /* 16 */ ANUBICE_LIMB_MAX
-} AnubiceLimbs;
-
typedef struct EnAnubice {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime;
diff --git a/src/overlays/actors/ovl_En_Bili/z_en_bili.c b/src/overlays/actors/ovl_En_Bili/z_en_bili.c
index 0e7c532efb..4f7ef8cde7 100644
--- a/src/overlays/actors/ovl_En_Bili/z_en_bili.c
+++ b/src/overlays/actors/ovl_En_Bili/z_en_bili.c
@@ -134,7 +134,7 @@ void EnBili_Init(Actor* thisx, PlayState* play) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 17.0f);
this->actor.shape.shadowAlpha = 155;
SkelAnime_Init(play, &this->skelAnime, &gBiriSkel, &gBiriDefaultAnim, this->jointTable, this->morphTable,
- EN_BILI_LIMB_MAX);
+ BIRI_LIMB_MAX);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit);
@@ -749,11 +749,11 @@ s32 EnBili_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
Vec3f limbScale = { 1.0f, 1.0f, 1.0f };
f32 curFrame = this->skelAnime.curFrame;
- if (limbIndex == EN_BILI_LIMB_OUTER_HOOD) {
+ if (limbIndex == BIRI_LIMB_OUTER_HOOD) {
EnBili_PulseLimb3(this, curFrame, &limbScale);
- } else if (limbIndex == EN_BILI_LIMB_INNER_HOOD) {
+ } else if (limbIndex == BIRI_LIMB_INNER_HOOD) {
EnBili_PulseLimb2(this, curFrame, &limbScale);
- } else if (limbIndex == EN_BILI_LIMB_TENTACLES) {
+ } else if (limbIndex == BIRI_LIMB_TENTACLES) {
EnBili_PulseLimb4(this, curFrame, &limbScale);
rot->y = (Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) - this->actor.shape.rot.y) + 0x8000;
}
diff --git a/src/overlays/actors/ovl_En_Bili/z_en_bili.h b/src/overlays/actors/ovl_En_Bili/z_en_bili.h
index b0e58c4679..0675847ee2 100644
--- a/src/overlays/actors/ovl_En_Bili/z_en_bili.h
+++ b/src/overlays/actors/ovl_En_Bili/z_en_bili.h
@@ -4,19 +4,12 @@
#include "ultra64.h"
#include "actor.h"
+#include "assets/objects/object_bl/object_bl.h"
+
struct EnBili;
typedef void (*EnBiliActionFunc)(struct EnBili*, struct PlayState*);
-typedef enum EnBiliLimb {
- /* 0 */ EN_BILI_LIMB_NONE,
- /* 1 */ EN_BILI_LIMB_ROOT,
- /* 2 */ EN_BILI_LIMB_INNER_HOOD,
- /* 3 */ EN_BILI_LIMB_OUTER_HOOD,
- /* 4 */ EN_BILI_LIMB_TENTACLES,
- /* 5 */ EN_BILI_LIMB_MAX
-} EnBiliLimb;
-
typedef struct EnBili {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime;
@@ -24,8 +17,8 @@ typedef struct EnBili {
/* 0x0194 */ u8 tentaclesTexIndex;
/* 0x0195 */ u8 playFlySfx;
/* 0x0196 */ s16 timer;
- /* 0x0198 */ Vec3s jointTable[EN_BILI_LIMB_MAX];
- /* 0x01B6 */ Vec3s morphTable[EN_BILI_LIMB_MAX];
+ /* 0x0198 */ Vec3s jointTable[BIRI_LIMB_MAX];
+ /* 0x01B6 */ Vec3s morphTable[BIRI_LIMB_MAX];
/* 0x01D4 */ ColliderCylinder collider;
} EnBili; // size = 0x0220
diff --git a/src/overlays/actors/ovl_En_Bw/z_en_bw.h b/src/overlays/actors/ovl_En_Bw/z_en_bw.h
index fe9f8ef90a..e3ae7da245 100644
--- a/src/overlays/actors/ovl_En_Bw/z_en_bw.h
+++ b/src/overlays/actors/ovl_En_Bw/z_en_bw.h
@@ -4,25 +4,11 @@
#include "ultra64.h"
#include "actor.h"
+#include "assets/objects/object_bw/object_bw.h"
+
struct EnBw;
typedef void (*EnBwActionFunc)(struct EnBw*, struct PlayState*);
-typedef enum TorchSlugLimb {
- /* 0 */ TORCH_SLUG_LIMB_NONE,
- /* 1 */ TORCH_SLUG_LIMB_BODY,
- /* 2 */ TORCH_SLUG_LIMB_LEFT_EYESTALK_ROOT_ROOT,
- /* 3 */ TORCH_SLUG_LIMB_LEFT_EYESTALK_ROOT,
- /* 4 */ TORCH_SLUG_LIMB_LEFT_UPPER_EYESTALK_ROOT,
- /* 5 */ TORCH_SLUG_LIMB_LEFT_UPPER_EYESTALK,
- /* 6 */ TORCH_SLUG_LIMB_LEFT_LOWER_EYESTALK,
- /* 7 */ TORCH_SLUG_LIMB_RIGHT_EYESTALK_ROOT_ROOT,
- /* 8 */ TORCH_SLUG_LIMB_RIGHT_EYESTALK_ROOT,
- /* 9 */ TORCH_SLUG_LIMB_RIGHT_UPPER_EYESTALK_ROOT,
- /* 10 */ TORCH_SLUG_LIMB_RIGHT_UPPER_EYESTALK,
- /* 11 */ TORCH_SLUG_LIMB_RIGHT_LOWER_EYESTALK,
- /* 12 */ TORCH_SLUG_LIMB_MAX
-} TorchSlugLimb;
-
typedef struct EnBw {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime;
diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c
index e8cfb6342f..9495395aa3 100644
--- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c
+++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c
@@ -92,7 +92,7 @@ void EnFu_Init(Actor* thisx, PlayState* play) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 36.0f);
SkelAnime_InitFlex(play, &this->skelanime, &gWindmillManSkel, &gWindmillManPlayStillAnim, this->jointTable,
- this->morphTable, FU_LIMB_MAX);
+ this->morphTable, WINDMILL_MAN_LIMB_MAX);
Animation_PlayLoop(&this->skelanime, &gWindmillManPlayStillAnim);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
@@ -276,15 +276,15 @@ s32 EnFu_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
EnFu* this = (EnFu*)thisx;
s32 pad;
- if (limbIndex == FU_LIMB_UNK) {
+ if (limbIndex == WINDMILL_MAN_LIMB_UNK) {
return false;
}
switch (limbIndex) {
- case FU_LIMB_HEAD:
+ case WINDMILL_MAN_LIMB_HEAD:
rot->x += this->lookAngleOffset.y;
rot->z += this->lookAngleOffset.x;
break;
- case FU_LIMB_CHEST_MUSIC_BOX:
+ case WINDMILL_MAN_LIMB_CHEST_MUSIC_BOX:
break;
}
@@ -292,7 +292,7 @@ s32 EnFu_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
return false;
}
- if (limbIndex == FU_LIMB_CHEST_MUSIC_BOX) {
+ if (limbIndex == WINDMILL_MAN_LIMB_CHEST_MUSIC_BOX) {
rot->y += Math_SinS((play->state.frames * (limbIndex * FIDGET_FREQ_LIMB + FIDGET_FREQ_Y))) * FIDGET_AMPLITUDE;
rot->z += Math_CosS((play->state.frames * (limbIndex * FIDGET_FREQ_LIMB + FIDGET_FREQ_Z))) * FIDGET_AMPLITUDE;
}
@@ -302,7 +302,7 @@ s32 EnFu_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
void EnFu_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) {
EnFu* this = (EnFu*)thisx;
- if (limbIndex == FU_LIMB_HEAD) {
+ if (limbIndex == WINDMILL_MAN_LIMB_HEAD) {
Matrix_MultVec3f(&sMtxSrc, &this->actor.focus.pos);
}
}
diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.h b/src/overlays/actors/ovl_En_Fu/z_en_fu.h
index d2138f7613..bfd2842e14 100644
--- a/src/overlays/actors/ovl_En_Fu/z_en_fu.h
+++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.h
@@ -4,36 +4,18 @@
#include "ultra64.h"
#include "actor.h"
+#include "assets/objects/object_fu/object_fu.h"
+
struct EnFu;
typedef void (*EnFuActionFunc)(struct EnFu*, struct PlayState*);
-typedef enum EnFuLimb {
- /* 0x00 */ FU_LIMB_ROOT,
- /* 0x01 */ FU_LIMB_TORSO,
- /* 0x02 */ FU_LIMB_LEFT_THIGH,
- /* 0x03 */ FU_LIMB_LEFT_LEG,
- /* 0x04 */ FU_LIMB_LEFT_FOOT,
- /* 0x05 */ FU_LIMB_RIGHT_THIGH,
- /* 0x06 */ FU_LIMB_RIGHT_LEG,
- /* 0x07 */ FU_LIMB_RIGHT_FOOT,
- /* 0x08 */ FU_LIMB_CHEST_MUSIC_BOX,
- /* 0x09 */ FU_LIMB_LEFT_ARM_MUSIC_BOX,
- /* 0x0A */ FU_LIMB_UNK,
- /* 0x0B */ FU_LIMB_RIGHT_SHOULDER,
- /* 0x0C */ FU_LIMB_RIGHT_ARM,
- /* 0x0D */ FU_LIMB_RIGHT_HAND_AND_CRANK,
- /* 0x0E */ FU_LIMB_HEAD,
- /* 0x0F */ FU_LIMB_HORN,
- /* 0x10 */ FU_LIMB_MAX
-} EnFuLimb;
-
typedef struct EnFu {
/* 0x0000 */ Actor actor;
/* 0x014C */ ColliderCylinder collider;
/* 0x0198 */ SkelAnime skelanime;
- /* 0x01DC */ Vec3s jointTable[FU_LIMB_MAX];
- /* 0x023C */ Vec3s morphTable[FU_LIMB_MAX];
+ /* 0x01DC */ Vec3s jointTable[WINDMILL_MAN_LIMB_MAX];
+ /* 0x023C */ Vec3s morphTable[WINDMILL_MAN_LIMB_MAX];
/* 0x029C */ Vec3s lookAngleOffset; // offset applied to neck rotation to look at link when he is close
/* 0x02A2 */ Vec3s unk_2A2;
/* 0x02A8 */ u16 behaviorFlags;
diff --git a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c
index 6d08efd921..01ebeccfc3 100644
--- a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c
+++ b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c
@@ -107,7 +107,7 @@ void EnGe1_Init(Actor* thisx, PlayState* play) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 30.0f);
SkelAnime_InitFlex(play, &this->skelAnime, &gGerudoWhiteSkel, &gGerudoWhiteIdleAnim, this->jointTable,
- this->morphTable, GE1_LIMB_MAX);
+ this->morphTable, GERUDO_WHITE_LIMB_MAX);
Animation_PlayOnce(&this->skelAnime, &gGerudoWhiteIdleAnim);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
@@ -780,7 +780,7 @@ s32 EnGe1_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
s32 pad;
EnGe1* this = (EnGe1*)thisx;
- if (limbIndex == GE1_LIMB_HEAD) {
+ if (limbIndex == GERUDO_WHITE_LIMB_HEAD) {
rot->x += this->headRot.y;
rot->z += this->headRot.x;
}
@@ -792,7 +792,8 @@ s32 EnGe1_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
// The purpose of the state flag GE1_STATE_STOP_FIDGET is to skip this code, which this actor has in lieu of an idle
// animation.
- if ((limbIndex == GE1_LIMB_TORSO) || (limbIndex == GE1_LIMB_L_FOREARM) || (limbIndex == GE1_LIMB_R_FOREARM)) {
+ if ((limbIndex == GERUDO_WHITE_LIMB_TORSO) || (limbIndex == GERUDO_WHITE_LIMB_L_FOREARM) ||
+ (limbIndex == GERUDO_WHITE_LIMB_R_FOREARM)) {
rot->y += Math_SinS(play->state.frames * (limbIndex * FIDGET_FREQ_LIMB + FIDGET_FREQ_Y)) * FIDGET_AMPLITUDE;
rot->z += Math_CosS(play->state.frames * (limbIndex * FIDGET_FREQ_LIMB + FIDGET_FREQ_Z)) * FIDGET_AMPLITUDE;
}
@@ -804,7 +805,7 @@ void EnGe1_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
OPEN_DISPS(play->state.gfxCtx, "../z_en_ge1.c", 1419);
- if (limbIndex == GE1_LIMB_HEAD) {
+ if (limbIndex == GERUDO_WHITE_LIMB_HEAD) {
gSPDisplayList(POLY_OPA_DISP++, sHairstyleDLists[this->hairstyle]);
Matrix_MultVec3f(&D_80A327A8, &this->actor.focus.pos);
}
diff --git a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.h b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.h
index 077f0f9cc0..4566dacbbd 100644
--- a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.h
+++ b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.h
@@ -4,6 +4,8 @@
#include "ultra64.h"
#include "actor.h"
+#include "assets/objects/object_ge1/object_ge1.h"
+
struct EnGe1;
typedef void (*EnGe1AnimFunc)(struct EnGe1*);
@@ -18,32 +20,12 @@ typedef enum EnGe1Type {
/* 0x46 */ GE1_TYPE_TRAINING_GROUNDS_GUARD
} EnGe1Type;
-typedef enum EnGe1Limb {
- /* 00 */ GE1_LIMB_NONE,
- /* 01 */ GE1_LIMB_WAIST,
- /* 02 */ GE1_LIMB_L_THIGH,
- /* 03 */ GE1_LIMB_L_LOWER_LEG,
- /* 04 */ GE1_LIMB_L_FOOT,
- /* 05 */ GE1_LIMB_R_THIGH,
- /* 06 */ GE1_LIMB_R_LOWER_LEG,
- /* 07 */ GE1_LIMB_R_FOOT,
- /* 08 */ GE1_LIMB_TORSO,
- /* 09 */ GE1_LIMB_L_UPPER_ARM,
- /* 10 */ GE1_LIMB_L_FOREARM,
- /* 11 */ GE1_LIMB_L_HAND,
- /* 12 */ GE1_LIMB_R_UPPER_ARM,
- /* 13 */ GE1_LIMB_R_FOREARM,
- /* 14 */ GE1_LIMB_R_HAND,
- /* 15 */ GE1_LIMB_HEAD,
- /* 16 */ GE1_LIMB_MAX
-} EnGe1Limb;
-
typedef struct EnGe1 {
/* 0x0000 */ Actor actor;
/* 0x014C */ ColliderCylinder collider;
/* 0x0198 */ SkelAnime skelAnime;
- /* 0x01DC */ Vec3s jointTable[GE1_LIMB_MAX];
- /* 0x023C */ Vec3s morphTable[GE1_LIMB_MAX];
+ /* 0x01DC */ Vec3s jointTable[GERUDO_WHITE_LIMB_MAX];
+ /* 0x023C */ Vec3s morphTable[GERUDO_WHITE_LIMB_MAX];
/* 0x029C */ Vec3s headRot;
/* 0x02A2 */ Vec3s unk_2A2;
/* 0x02A8 */ s16 eyeIndex;
diff --git a/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c b/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c
index ad77c01118..8ac3cdcd54 100644
--- a/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c
+++ b/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c
@@ -81,7 +81,7 @@ void EnGe3_Init(Actor* thisx, PlayState* play2) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 36.0f);
SkelAnime_InitFlex(play, &this->skelAnime, &gGerudoRedSkel, NULL, this->jointTable, this->morphTable,
- GELDB_LIMB_MAX);
+ GERUDO_RED_LIMB_MAX);
Animation_PlayLoop(&this->skelAnime, &gGerudoRedStandAnim);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
@@ -241,13 +241,13 @@ s32 EnGe3_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
switch (limbIndex) {
// Hide swords and veil from object_geldb
- case GELDB_LIMB_VEIL:
- case GELDB_LIMB_R_SWORD:
- case GELDB_LIMB_L_SWORD:
+ case GERUDO_RED_LIMB_VEIL:
+ case GERUDO_RED_LIMB_R_SWORD:
+ case GERUDO_RED_LIMB_L_SWORD:
*dList = NULL;
return false;
// Turn head
- case GELDB_LIMB_HEAD:
+ case GERUDO_RED_LIMB_HEAD:
rot->x += this->headRot.y;
#if OOT_VERSION >= PAL_1_1
FALLTHROUGH;
@@ -256,14 +256,14 @@ s32 EnGe3_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
// depending on what was drawn earlier in the frame.
OPEN_DISPS(play->state.gfxCtx, "../z_en_ge3.c", 547);
switch (limbIndex) {
- case GELDB_LIMB_NECK:
+ case GERUDO_RED_LIMB_NECK:
break;
- case GELDB_LIMB_HEAD:
+ case GERUDO_RED_LIMB_HEAD:
gDPPipeSync(POLY_OPA_DISP++);
gDPSetEnvColor(POLY_OPA_DISP++, 80, 60, 10, 255);
break;
- case GELDB_LIMB_R_SWORD:
- case GELDB_LIMB_L_SWORD:
+ case GERUDO_RED_LIMB_R_SWORD:
+ case GERUDO_RED_LIMB_L_SWORD:
gDPPipeSync(POLY_OPA_DISP++);
gDPSetEnvColor(POLY_OPA_DISP++, 140, 170, 230, 255);
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255);
@@ -284,7 +284,7 @@ void EnGe3_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
EnGe3* this = (EnGe3*)thisx;
Vec3f D_80A351C8 = { 600.0f, 700.0f, 0.0f };
- if (limbIndex == GELDB_LIMB_HEAD) {
+ if (limbIndex == GERUDO_RED_LIMB_HEAD) {
Matrix_MultVec3f(&D_80A351C8, &this->actor.focus.pos);
}
}
diff --git a/src/overlays/actors/ovl_En_Ge3/z_en_ge3.h b/src/overlays/actors/ovl_En_Ge3/z_en_ge3.h
index 62b9882055..297129e439 100644
--- a/src/overlays/actors/ovl_En_Ge3/z_en_ge3.h
+++ b/src/overlays/actors/ovl_En_Ge3/z_en_ge3.h
@@ -3,7 +3,8 @@
#include "ultra64.h"
#include "actor.h"
-#include "overlays/actors/ovl_En_GeldB/z_en_geldb.h"
+
+#include "assets/objects/object_geldb/object_geldb.h"
struct EnGe3;
@@ -13,8 +14,8 @@ typedef struct EnGe3 {
/* 0x0000 */ Actor actor;
/* 0x014C */ ColliderCylinder collider;
/* 0x0198 */ SkelAnime skelAnime;
- /* 0x01DC */ Vec3s jointTable[GELDB_LIMB_MAX];
- /* 0x026C */ Vec3s morphTable[GELDB_LIMB_MAX];
+ /* 0x01DC */ Vec3s jointTable[GERUDO_RED_LIMB_MAX];
+ /* 0x026C */ Vec3s morphTable[GERUDO_RED_LIMB_MAX];
/* 0x02FC */ s16 eyeIndex;
/* 0x02FE */ s16 blinkTimer;
/* 0x0300 */ Vec3s headRot;
diff --git a/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c b/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c
index 11850ccdf5..598cc7f616 100644
--- a/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c
+++ b/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c
@@ -251,7 +251,7 @@ void EnGeldB_Init(Actor* thisx, PlayState* play) {
this->blinkState = 0;
this->unkFloat = 10.0f;
SkelAnime_InitFlex(play, &this->skelAnime, &gGerudoRedSkel, &gGerudoRedNeutralAnim, this->jointTable,
- this->morphTable, GELDB_LIMB_MAX);
+ this->morphTable, GERUDO_RED_LIMB_MAX);
Collider_InitCylinder(play, &this->bodyCollider);
Collider_SetCylinder(play, &this->bodyCollider, thisx, &sBodyCylinderInit);
Collider_InitTris(play, &this->blockCollider);
@@ -1464,14 +1464,14 @@ s32 EnGeldB_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
EnGeldB* this = (EnGeldB*)thisx;
OPEN_DISPS(play->state.gfxCtx, "../z_en_geldB.c", 2507);
- if (limbIndex == GELDB_LIMB_NECK) {
+ if (limbIndex == GERUDO_RED_LIMB_NECK) {
rot->z += this->headRot.x;
rot->x += this->headRot.y;
rot->y += this->headRot.z;
- } else if (limbIndex == GELDB_LIMB_HEAD) {
+ } else if (limbIndex == GERUDO_RED_LIMB_HEAD) {
gDPPipeSync(POLY_OPA_DISP++);
gDPSetEnvColor(POLY_OPA_DISP++, 80, 60, 10, 255);
- } else if ((limbIndex == GELDB_LIMB_R_SWORD) || (limbIndex == GELDB_LIMB_L_SWORD)) {
+ } else if ((limbIndex == GERUDO_RED_LIMB_R_SWORD) || (limbIndex == GERUDO_RED_LIMB_L_SWORD)) {
gDPPipeSync(POLY_OPA_DISP++);
gDPSetEnvColor(POLY_OPA_DISP++, 140, 170, 230, 255);
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255);
@@ -1497,7 +1497,7 @@ void EnGeldB_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro
EnGeldB* this = (EnGeldB*)thisx;
s32 bodyPart = -1;
- if (limbIndex == GELDB_LIMB_R_SWORD) {
+ if (limbIndex == GERUDO_RED_LIMB_R_SWORD) {
Matrix_MultVec3f(&swordQuadOffset1, &this->swordCollider.dim.quad[1]);
Matrix_MultVec3f(&swordQuadOffset0, &this->swordCollider.dim.quad[0]);
Matrix_MultVec3f(&swordQuadOffset3, &this->swordCollider.dim.quad[3]);
@@ -1515,42 +1515,43 @@ void EnGeldB_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro
EffectBlure_AddVertex(Effect_GetByIndex(this->blureIndex), &swordTip, &swordHilt);
}
} else {
- Actor_SetFeetPos(&this->actor, limbIndex, GELDB_LIMB_L_FOOT, &footOffset, GELDB_LIMB_R_FOOT, &footOffset);
+ Actor_SetFeetPos(&this->actor, limbIndex, GERUDO_RED_LIMB_L_FOOT, &footOffset, GERUDO_RED_LIMB_R_FOOT,
+ &footOffset);
}
- if (limbIndex == GELDB_LIMB_L_FOOT) {
+ if (limbIndex == GERUDO_RED_LIMB_L_FOOT) {
Matrix_MultVec3f(&footOffset, &this->leftFootPos);
- } else if (limbIndex == GELDB_LIMB_R_FOOT) {
+ } else if (limbIndex == GERUDO_RED_LIMB_R_FOOT) {
Matrix_MultVec3f(&footOffset, &this->rightFootPos);
}
if (this->iceTimer != 0) {
switch (limbIndex) {
- case GELDB_LIMB_NECK:
+ case GERUDO_RED_LIMB_NECK:
bodyPart = 0;
break;
- case GELDB_LIMB_L_SWORD:
+ case GERUDO_RED_LIMB_L_SWORD:
bodyPart = 1;
break;
- case GELDB_LIMB_R_SWORD:
+ case GERUDO_RED_LIMB_R_SWORD:
bodyPart = 2;
break;
- case GELDB_LIMB_L_UPPER_ARM:
+ case GERUDO_RED_LIMB_L_UPPER_ARM:
bodyPart = 3;
break;
- case GELDB_LIMB_R_UPPER_ARM:
+ case GERUDO_RED_LIMB_R_UPPER_ARM:
bodyPart = 4;
break;
- case GELDB_LIMB_TORSO:
+ case GERUDO_RED_LIMB_TORSO:
bodyPart = 5;
break;
- case GELDB_LIMB_WAIST:
+ case GERUDO_RED_LIMB_WAIST:
bodyPart = 6;
break;
- case GELDB_LIMB_L_FOOT:
+ case GERUDO_RED_LIMB_L_FOOT:
bodyPart = 7;
break;
- case GELDB_LIMB_R_FOOT:
+ case GERUDO_RED_LIMB_R_FOOT:
bodyPart = 8;
break;
default:
diff --git a/src/overlays/actors/ovl_En_GeldB/z_en_geldb.h b/src/overlays/actors/ovl_En_GeldB/z_en_geldb.h
index a5ce4286b5..003a6dc5a5 100644
--- a/src/overlays/actors/ovl_En_GeldB/z_en_geldb.h
+++ b/src/overlays/actors/ovl_En_GeldB/z_en_geldb.h
@@ -4,35 +4,9 @@
#include "ultra64.h"
#include "actor.h"
-struct EnGeldB;
+#include "assets/objects/object_geldb/object_geldb.h"
-typedef enum EnGeldBLimb {
- /* 0x00 */ GELDB_LIMB_NONE,
- /* 0x01 */ GELDB_LIMB_ROOT,
- /* 0x02 */ GELDB_LIMB_TORSO,
- /* 0x03 */ GELDB_LIMB_NECK,
- /* 0x04 */ GELDB_LIMB_PONYTAIL,
- /* 0x05 */ GELDB_LIMB_VEIL,
- /* 0x06 */ GELDB_LIMB_HEAD,
- /* 0x07 */ GELDB_LIMB_R_UPPER_ARM,
- /* 0x08 */ GELDB_LIMB_R_FOREARM,
- /* 0x09 */ GELDB_LIMB_R_WRIST,
- /* 0x0A */ GELDB_LIMB_R_HAND,
- /* 0x0B */ GELDB_LIMB_R_SWORD,
- /* 0x0C */ GELDB_LIMB_L_UPPER_ARM,
- /* 0x0D */ GELDB_LIMB_L_FOREARM,
- /* 0x0E */ GELDB_LIMB_L_WRIST,
- /* 0x0F */ GELDB_LIMB_L_HAND,
- /* 0x10 */ GELDB_LIMB_L_SWORD,
- /* 0x11 */ GELDB_LIMB_L_THIGH,
- /* 0x12 */ GELDB_LIMB_L_SHIN,
- /* 0x13 */ GELDB_LIMB_L_FOOT,
- /* 0x14 */ GELDB_LIMB_R_THIGH,
- /* 0x15 */ GELDB_LIMB_R_SHIN,
- /* 0x16 */ GELDB_LIMB_R_FOOT,
- /* 0x17 */ GELDB_LIMB_WAIST,
- /* 0x18 */ GELDB_LIMB_MAX
-} EnGeldBLimb;
+struct EnGeldB;
typedef void (*EnGeldBActionFunc)(struct EnGeldB*, struct PlayState*);
@@ -40,8 +14,8 @@ typedef struct EnGeldB {
/* 0x0000 */ Actor actor;
/* 0x014C */ Vec3s bodyPartsPos[10];
/* 0x0188 */ SkelAnime skelAnime;
- /* 0x01CC */ Vec3s jointTable[GELDB_LIMB_MAX];
- /* 0x025C */ Vec3s morphTable[GELDB_LIMB_MAX];
+ /* 0x01CC */ Vec3s jointTable[GERUDO_RED_LIMB_MAX];
+ /* 0x025C */ Vec3s morphTable[GERUDO_RED_LIMB_MAX];
/* 0x02EC */ s32 action;
/* 0x02F0 */ char unk_2F0[4];
/* 0x02F4 */ EnGeldBActionFunc actionFunc;
diff --git a/src/overlays/actors/ovl_En_Hata/z_en_hata.h b/src/overlays/actors/ovl_En_Hata/z_en_hata.h
index 53d31bab58..38c85e6349 100644
--- a/src/overlays/actors/ovl_En_Hata/z_en_hata.h
+++ b/src/overlays/actors/ovl_En_Hata/z_en_hata.h
@@ -4,31 +4,7 @@
#include "ultra64.h"
#include "actor.h"
-
-typedef enum EnHataLimb {
- /* 0x00 */ FLAGPOLE_LIMB_NONE,
- /* 0x01 */ FLAGPOLE_LIMB_POLE_BASE,
- /* 0x02 */ FLAGPOLE_LIMB_POLE,
- /* 0x03 */ FLAGPOLE_LIMB_FLAG_1_BASE,
- /* 0x04 */ FLAGPOLE_LIMB_FLAG_1_HOIST_END_BASE,
- /* 0x05 */ FLAGPOLE_LIMB_FLAG_1_HOIST_MID_BASE,
- /* 0x06 */ FLAGPOLE_LIMB_FLAG_1_FLY_MID_BASE,
- /* 0x07 */ FLAGPOLE_LIMB_FLAG_1_FLY_END_BASE,
- /* 0x08 */ FLAGPOLE_LIMB_FLAG_1_FLY_END,
- /* 0x09 */ FLAGPOLE_LIMB_FLAG_1_FLY_MID,
- /* 0x0A */ FLAGPOLE_LIMB_FLAG_1_HOIST_MID,
- /* 0x0B */ FLAGPOLE_LIMB_FLAG_1_HOIST_END,
- /* 0x0C */ FLAGPOLE_LIMB_FLAG_2_BASE,
- /* 0x0D */ FLAGPOLE_LIMB_FLAG_2_HOIST_END_BASE,
- /* 0x0E */ FLAGPOLE_LIMB_FLAG_2_HOIST_MID_BASE,
- /* 0x0F */ FLAGPOLE_LIMB_FLAG_2_FLY_MID_BASE,
- /* 0x10 */ FLAGPOLE_LIMB_FLAG_2_FLY_END_BASE,
- /* 0x11 */ FLAGPOLE_LIMB_FLAG_2_FLY_END,
- /* 0x12 */ FLAGPOLE_LIMB_FLAG_2_FLY_MID,
- /* 0x13 */ FLAGPOLE_LIMB_FLAG_2_HOIST_MID,
- /* 0x14 */ FLAGPOLE_LIMB_FLAG_2_HOIST_END,
- /* 0x15 */ FLAGPOLE_LIMB_MAX
-} EnHataLimb;
+#include "assets/objects/object_hata/object_hata.h"
typedef struct EnHata {
/* 0x0000 */ DynaPolyActor dyna;
diff --git a/src/overlays/actors/ovl_En_Horse/z_en_horse.c b/src/overlays/actors/ovl_En_Horse/z_en_horse.c
index e3359b4181..68be05297e 100644
--- a/src/overlays/actors/ovl_En_Horse/z_en_horse.c
+++ b/src/overlays/actors/ovl_En_Horse/z_en_horse.c
@@ -1777,7 +1777,7 @@ void EnHorse_Inactive(EnHorse* this, PlayState* play2) {
// Focus the camera on Epona
Camera_SetViewParam(play->cameraPtrs[CAM_ID_MAIN], CAM_VIEW_TARGET, &this->actor);
Camera_RequestSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_TURN_AROUND);
- Camera_SetCameraData(play->cameraPtrs[CAM_ID_MAIN], 4, NULL, NULL, 0x51, 0, 0);
+ Camera_SetCameraData(play->cameraPtrs[CAM_ID_MAIN], CAM_DATA_SET_2, NULL, NULL, CAM_ITEM_TYPE_81, 0, 0);
}
}
if (!(this->stateFlags & ENHORSE_INACTIVE)) {
@@ -1853,7 +1853,7 @@ void EnHorse_Idle(EnHorse* this, PlayState* play) {
EnHorse_SetFollowAnimation(this, play);
Camera_SetViewParam(play->cameraPtrs[CAM_ID_MAIN], CAM_VIEW_TARGET, &this->actor);
Camera_RequestSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_TURN_AROUND);
- Camera_SetCameraData(play->cameraPtrs[CAM_ID_MAIN], 4, NULL, NULL, 0x51, 0, 0);
+ Camera_SetCameraData(play->cameraPtrs[CAM_ID_MAIN], CAM_DATA_SET_2, NULL, NULL, CAM_ITEM_TYPE_81, 0, 0);
}
} else {
Audio_PlaySfxGeneral(NA_SE_EV_HORSE_NEIGH, &this->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale,
diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c
index 0a42d8ae71..480baebeea 100644
--- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c
+++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c
@@ -569,7 +569,7 @@ void EnOssan_TalkHappyMaskShopkeeper(PlayState* play) {
void EnOssan_UpdateCameraDirection(EnOssan* this, PlayState* play, f32 cameraFaceAngle) {
this->cameraFaceAngle = cameraFaceAngle;
- Camera_SetCameraData(GET_ACTIVE_CAM(play), 0xC, NULL, NULL, cameraFaceAngle, 0, 0);
+ Camera_SetCameraData(GET_ACTIVE_CAM(play), CAM_DATA_SET_2 | CAM_DATA_SET_3, NULL, NULL, cameraFaceAngle, 0, 0);
}
s32 EnOssan_TryGetObjBankIndices(EnOssan* this, PlayState* play, s16* objectIds) {
diff --git a/src/overlays/actors/ovl_En_Viewer/z_en_viewer.h b/src/overlays/actors/ovl_En_Viewer/z_en_viewer.h
index 1bb5780203..c23a2edba4 100644
--- a/src/overlays/actors/ovl_En_Viewer/z_en_viewer.h
+++ b/src/overlays/actors/ovl_En_Viewer/z_en_viewer.h
@@ -59,34 +59,6 @@ typedef struct EnViewerFireEffect {
/* 0x30 */ u8 state;
} EnViewerFireEffect; // size = 0x34
-typedef enum YoungGanondorfLimb {
- /* 0 */ YOUNG_GANONDORF_LIMB_NONE,
- /* 1 */ YOUNG_GANONDORF_LIMB_ROOT,
- /* 2 */ YOUNG_GANONDORF_LIMB_TORSO,
- /* 3 */ YOUNG_GANONDORF_LIMB_LEFT_UPPER_ARM,
- /* 4 */ YOUNG_GANONDORF_LIMB_LEFT_FOREARM,
- /* 5 */ YOUNG_GANONDORF_LIMB_LEFT_HAND,
- /* 6 */ YOUNG_GANONDORF_LIMB_RIGHT_UPPER_ARM,
- /* 7 */ YOUNG_GANONDORF_LIMB_RIGHT_FOREARM,
- /* 8 */ YOUNG_GANONDORF_LIMB_RIGHT_HAND,
- /* 9 */ YOUNG_GANONDORF_LIMB_JEWEL,
- /* 10 */ YOUNG_GANONDORF_LIMB_LEFT_UPPER_LIP,
- /* 11 */ YOUNG_GANONDORF_LIMB_JAW,
- /* 12 */ YOUNG_GANONDORF_LIMB_CHIN,
- /* 13 */ YOUNG_GANONDORF_LIMB_RIGHT_UPPER_LIP,
- /* 14 */ YOUNG_GANONDORF_LIMB_TEETH,
- /* 15 */ YOUNG_GANONDORF_LIMB_HEAD,
- /* 16 */ YOUNG_GANONDORF_LIMB_PELVIS,
- /* 17 */ YOUNG_GANONDORF_LIMB_LEFT_THIGH,
- /* 18 */ YOUNG_GANONDORF_LIMB_LEFT_SHIN,
- /* 19 */ YOUNG_GANONDORF_LIMB_LEFT_FOOT,
- /* 20 */ YOUNG_GANONDORF_LIMB_KNIFE,
- /* 21 */ YOUNG_GANONDORF_LIMB_RIGHT_THIGH,
- /* 22 */ YOUNG_GANONDORF_LIMB_RIGHT_SHIN,
- /* 23 */ YOUNG_GANONDORF_LIMB_RIGHT_FOOT,
- /* 24 */ YOUNG_GANONDORF_LIMB_MAX
-} YoungGanondorfLimb;
-
typedef struct EnViewer {
/* 0x0000 */ Actor actor;
/* 0x014C */ Skin skin;
diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c
index fc8cf05b76..7b276a661d 100644
--- a/src/overlays/actors/ovl_player_actor/z_player.c
+++ b/src/overlays/actors/ovl_player_actor/z_player.c
@@ -379,7 +379,7 @@ static Vec3f sInteractWallCheckResult;
static Input* sControlInput;
#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \
- "ique-cn:192 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128"
+ "ique-cn:160 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128"
// .data
@@ -3500,7 +3500,7 @@ void Player_SetupActionPreserveItemAction(PlayState* play, Player* this, PlayerA
}
}
-void func_80835E44(PlayState* play, s16 camSetting) {
+void Player_RequestCameraSetting(PlayState* play, s16 camSetting) {
if (!Play_CamIsNotFixed(play)) {
if (camSetting == CAM_SET_SCENE_TRANSITION) {
Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_NOTHING_ALT);
@@ -3510,9 +3510,9 @@ void func_80835E44(PlayState* play, s16 camSetting) {
}
}
-void func_80835EA4(PlayState* play, s32 arg1) {
- func_80835E44(play, CAM_SET_TURN_AROUND);
- Camera_SetCameraData(Play_GetCamera(play, CAM_ID_MAIN), 4, NULL, NULL, arg1, 0, 0);
+void Player_SetTurnAroundCamera(PlayState* play, s32 camItemType) {
+ Player_RequestCameraSetting(play, CAM_SET_TURN_AROUND);
+ Camera_SetCameraData(Play_GetCamera(play, CAM_ID_MAIN), CAM_DATA_SET_2, NULL, NULL, camItemType, 0, 0);
}
void Player_DestroyHookshot(Player* this) {
@@ -5272,7 +5272,7 @@ s32 Player_HandleExitsAndVoids(PlayState* play, Player* this, CollisionPoly* pol
this->stateFlags1 |= PLAYER_STATE1_0 | PLAYER_STATE1_29;
- func_80835E44(play, CAM_SET_SCENE_TRANSITION);
+ Player_RequestCameraSetting(play, CAM_SET_SCENE_TRANSITION);
return 1;
} else {
@@ -5975,7 +5975,7 @@ void func_8083AF44(PlayState* play, Player* this, s32 magicSpell) {
if (magicSpell == 5) {
this->subCamId = OnePointCutscene_Init(play, 1100, -101, NULL, CAM_ID_MAIN);
} else {
- func_80835EA4(play, 10);
+ Player_SetTurnAroundCamera(play, CAM_ITEM_TYPE_10);
}
}
@@ -6043,7 +6043,7 @@ s32 Player_ActionHandler_13(Player* this, PlayState* play) {
Player_SetupAction(play, this, Player_Action_8085063C, 1);
this->stateFlags1 |= PLAYER_STATE1_28 | PLAYER_STATE1_29;
Player_AnimPlayOnce(play, this, Player_GetIdleAnim(this));
- func_80835EA4(play, 4);
+ Player_SetTurnAroundCamera(play, CAM_ITEM_TYPE_4);
}
func_80832224(this);
@@ -6097,11 +6097,11 @@ s32 Player_ActionHandler_13(Player* this, PlayState* play) {
} else if (sp2C == EXCH_ITEM_BOTTLE_RUTOS_LETTER) {
this->av1.actionVar1 = 1;
this->actor.textId = 0x4005;
- func_80835EA4(play, 1);
+ Player_SetTurnAroundCamera(play, CAM_ITEM_TYPE_1);
} else {
this->av1.actionVar1 = 2;
this->actor.textId = 0xCF;
- func_80835EA4(play, 4);
+ Player_SetTurnAroundCamera(play, CAM_ITEM_TYPE_4);
}
this->actor.flags |= ACTOR_FLAG_TALK;
@@ -6124,21 +6124,21 @@ s32 Player_ActionHandler_13(Player* this, PlayState* play) {
if (sp2C == 0xC) {
Player_SetupActionPreserveItemAction(play, this, Player_Action_8084EED8, 0);
Player_AnimPlayOnceAdjusted(play, this, &gPlayerAnim_link_bottle_bug_out);
- func_80835EA4(play, 3);
+ Player_SetTurnAroundCamera(play, CAM_ITEM_TYPE_3);
} else if ((sp2C > 0) && (sp2C < 4)) {
Player_SetupActionPreserveItemAction(play, this, Player_Action_8084EFC0, 0);
Player_AnimPlayOnceAdjusted(play, this, &gPlayerAnim_link_bottle_fish_out);
- func_80835EA4(play, (sp2C == 1) ? 1 : 5);
+ Player_SetTurnAroundCamera(play, (sp2C == 1) ? CAM_ITEM_TYPE_1 : CAM_ITEM_TYPE_5);
} else {
Player_SetupActionPreserveItemAction(play, this, Player_Action_8084EAC0, 0);
Player_AnimChangeOnceMorphAdjusted(play, this, &gPlayerAnim_link_bottle_drink_demo_start);
- func_80835EA4(play, 2);
+ Player_SetTurnAroundCamera(play, CAM_ITEM_TYPE_2);
}
} else {
Player_SetupActionPreserveItemAction(play, this, Player_Action_8084E3C4, 0);
Player_AnimPlayOnceAdjusted(play, this, &gPlayerAnim_link_normal_okarina_start);
this->stateFlags2 |= PLAYER_STATE2_USING_OCARINA;
- func_80835EA4(play, (this->unk_6A8 != NULL) ? 0x5B : 0x5A);
+ Player_SetTurnAroundCamera(play, (this->unk_6A8 != NULL) ? CAM_ITEM_TYPE_91 : CAM_ITEM_TYPE_90);
if (this->unk_6A8 != NULL) {
this->stateFlags2 |= PLAYER_STATE2_25;
Camera_SetViewParam(Play_GetCamera(play, CAM_ID_MAIN), CAM_VIEW_TARGET, this->unk_6A8);
@@ -7355,7 +7355,7 @@ s32 Player_ActionHandler_2(Player* this, PlayState* play) {
if (!(this->stateFlags2 & PLAYER_STATE2_10) || (this->currentBoots == PLAYER_BOOTS_IRON)) {
Player_SetupWaitForPutAway(play, this, func_8083A434);
Player_AnimPlayOnceAdjusted(play, this, &gPlayerAnim_link_demo_get_itemB);
- func_80835EA4(play, 9);
+ Player_SetTurnAroundCamera(play, CAM_ITEM_TYPE_9);
}
this->stateFlags1 |= PLAYER_STATE1_10 | PLAYER_STATE1_CARRYING_ACTOR | PLAYER_STATE1_29;
@@ -13750,7 +13750,7 @@ void Player_Action_8084E1EC(Player* this, PlayState* play) {
if ((this->stateFlags1 & PLAYER_STATE1_10) && LinkAnimation_OnFrame(&this->skelAnime, 10.0f)) {
func_808332F4(this, play);
func_80832340(play, this);
- func_80835EA4(play, 8);
+ Player_SetTurnAroundCamera(play, CAM_ITEM_TYPE_8);
} else if (LinkAnimation_OnFrame(&this->skelAnime, 5.0f)) {
Player_PlayVoiceSfx(this, NA_SE_VO_LI_BREATH_DRINK);
}
@@ -13920,7 +13920,7 @@ void Player_Action_8084E6D4(Player* this, PlayState* play) {
}
this->av2.actionVar2 = 2;
- func_80835EA4(play, 9);
+ Player_SetTurnAroundCamera(play, CAM_ITEM_TYPE_9);
}
} else {
if (this->av2.actionVar2 == 0) {
@@ -14122,7 +14122,7 @@ void Player_Action_SwingBottle(Player* this, PlayState* play) {
Player_UpdateBottleHeld(play, this, catchInfo->itemId, ABS(catchInfo->itemAction));
Player_AnimPlayOnceAdjusted(play, this, swingEntry->catchAnimation);
- func_80835EA4(play, 4);
+ Player_SetTurnAroundCamera(play, CAM_ITEM_TYPE_4);
}
}
}
@@ -16221,6 +16221,6 @@ void Player_StartTalking(PlayState* play, Actor* actor) {
if ((this->naviActor == this->talkActor) && ((this->talkActor->textId & 0xFF00) != 0x200)) {
this->naviActor->flags |= ACTOR_FLAG_TALK;
- func_80835EA4(play, 0xB);
+ Player_SetTurnAroundCamera(play, CAM_ITEM_TYPE_11);
}
}
diff --git a/tools/assets/extract/write_source.txt b/tools/assets/extract/write_source.txt
index 1164bd20de..daad7dc512 100644
--- a/tools/assets/extract/write_source.txt
+++ b/tools/assets/extract/write_source.txt
@@ -86,7 +86,6 @@ assets/objects/object_fz/object_fz.c
assets/objects/object_ganon2/object_ganon2.c
assets/objects/object_ganon_anime1/object_ganon_anime1.c
assets/objects/object_ganon_anime2/object_ganon_anime2.c
-assets/objects/object_ganon_anime3/object_ganon_anime3.c
assets/objects/object_ganon/object_ganon.c
assets/objects/object_ganon_objects/object_ganon_objects.c
assets/objects/object_ge1/object_ge1.c
@@ -380,7 +379,6 @@ assets/objects/object_zl2_anime1/object_zl2_anime1.c
assets/objects/object_zl2_anime2/object_zl2_anime2.c
assets/objects/object_zl2/object_zl2.c
assets/objects/object_zl4/object_zl4.c
-assets/objects/object_zo/object_zo.c
assets/overlays/ovl_Boss_Ganon/ovl_Boss_Ganon.c
assets/overlays/ovl_Boss_Sst/ovl_Boss_Sst.c
assets/overlays/ovl_Demo_Shd/ovl_Demo_Shd.c