Cleanup SubCameras (#936)

* Cleanup SubCameras

* Add small bit of docs, remove comments

* Fix merge from master, missed test7
This commit is contained in:
engineer124
2022-07-22 15:24:37 +01:00
committed by GitHub
parent 5f6c3df4ce
commit f2b628241d
47 changed files with 732 additions and 730 deletions
+2 -2
View File
@@ -1449,7 +1449,7 @@ s16 ActorCutscene_GetAdditionalCutscene(s16 index);
s16 ActorCutscene_GetLength(s16 index);
s32 func_800F2138(s8 arg0);
s32 func_800F2178(s16 arg0);
s16 ActorCutscene_GetCurrentCamera(s16 index);
s16 ActorCutscene_GetCurrentSubCamId(s16 index);
s16 func_800F21CC(void);
s32 func_800F22C4(s16 param_1, Actor* actor);
void ActorCutscene_SetReturnCamera(s16 index);
@@ -2623,7 +2623,7 @@ s32 Play_CreateSubCamera(PlayState* play);
s32 Play_GetActiveCamId(PlayState* play);
void Play_CameraChangeStatus(PlayState* play, s16 camId, s16 status);
void Play_ClearCamera(PlayState* play, s16 camId);
Camera* Play_GetCamera(PlayState* play, s16 index);
Camera* Play_GetCamera(PlayState* play, s16 camId);
s32 Play_CameraSetAtEye(PlayState* play, s16 camId, Vec3f* at, Vec3f* eye);
void Play_CameraSetAtEyeUp(PlayState* play, s16 camId, Vec3f* at, Vec3f* eye, Vec3f* up);
void Play_CameraSetFov(PlayState* play, s16 camId, f32 fov);
+1 -1
View File
@@ -178,7 +178,7 @@ typedef struct {
/* 0x0C */ f32 unk_0C;
/* 0x10 */ u16 frames;
/* 0x12 */ u16 currentCsIndex;
/* 0x14 */ s32 csCamId;
/* 0x14 */ s32 subCamId;
/* 0x18 */ u16 unk_18;
/* 0x1A */ u8 unk_1A;
/* 0x1B */ u8 unk_1B;
+2 -2
View File
@@ -1475,8 +1475,8 @@ void func_800EDA84(PlayState* play, CutsceneContext* csCtx) {
Audio_SetCutsceneFlag(true);
csCtx->frames = 0xFFFF;
csCtx->csCamId = ActorCutscene_GetCurrentCamera(0x7F);
func_8016119C(Play_GetCamera(play, csCtx->csCamId), &sCutsceneCameraInfo);
csCtx->subCamId = ActorCutscene_GetCurrentSubCamId(0x7F);
func_8016119C(Play_GetCamera(play, csCtx->subCamId), &sCutsceneCameraInfo);
csCtx->unk_18 = 0xFFFF;
if (gSaveContext.cutsceneTrigger == 0) {
+1 -1
View File
@@ -42,7 +42,7 @@
#pragma GLOBAL_ASM("asm/non_matchings/code/z_eventmgr/func_800F2178.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_eventmgr/ActorCutscene_GetCurrentCamera.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_eventmgr/ActorCutscene_GetCurrentSubCamId.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_eventmgr/func_800F21CC.s")
@@ -123,14 +123,14 @@ s32 func_80953BEC(BgIngate* this) {
}
s32 func_80953DA8(BgIngate* this, PlayState* play) {
Camera* camera = Play_GetCamera(play, CAM_ID_MAIN);
Camera* mainCam = Play_GetCamera(play, CAM_ID_MAIN);
if (gSaveContext.eventInf[3] & 0x20) {
func_800B7298(play, &this->dyna.actor, 7);
} else {
gSaveContext.eventInf[4] |= 2;
}
Camera_ChangeSetting(camera, CAM_SET_BOAT_CRUISE);
Camera_ChangeSetting(mainCam, CAM_SET_BOAT_CRUISE);
play->unk_1887C = 0x63;
return false;
@@ -178,7 +178,7 @@ void func_80953F8C(BgIngate* this, PlayState* play) {
void func_80953F9C(BgIngate* this, PlayState* play) {
Player* player = GET_PLAYER(play);
Camera* camera = Play_GetCamera(play, CAM_ID_MAIN);
Camera* mainCam = Play_GetCamera(play, CAM_ID_MAIN);
if (!(gSaveContext.eventInf[4] & 1)) {
@@ -214,11 +214,11 @@ void func_80953F9C(BgIngate* this, PlayState* play) {
}
if (ActorCutscene_GetCurrentIndex() != this->unk16E) {
if (ActorCutscene_GetCurrentIndex() != -1) {
Camera_ChangeSetting(camera, CAM_SET_NORMAL0);
Camera_ChangeSetting(mainCam, CAM_SET_NORMAL0);
player->stateFlags1 |= 0x20;
play->actorCtx.unk5 &= ~0x4;
} else {
Camera_ChangeSetting(camera, CAM_SET_BOAT_CRUISE);
Camera_ChangeSetting(mainCam, CAM_SET_BOAT_CRUISE);
player->stateFlags1 &= ~0x20;
}
}
+74 -74
View File
@@ -556,8 +556,8 @@ void Boss02_Init(Actor* thisx, PlayState* play) {
}
this->actor.targetMode = 10;
this->unk_1D3C.z = this->unk_1D3C.x = 0.0f;
this->unk_1D3C.y = 1.0f;
this->subCamUp.z = this->subCamUp.x = 0.0f;
this->subCamUp.y = 1.0f;
if (this->actor.params == TWINMOLD_STATIC) {
sTwinmoldStatic = this;
play->specialEffects = (void*)sEffects;
@@ -936,7 +936,7 @@ void func_809DAB78(Boss02* this, PlayState* play) {
this->unk_0146[0] = 20;
this->unk_0152 = 0;
sTwinmoldStatic->unk_1D20 = 102;
sTwinmoldStatic->unk_1D5C = 0.0f;
sTwinmoldStatic->subCamAtVel = 0.0f;
play_sound(NA_SE_EN_INBOSS_DEAD_PRE2_OLD);
} else if (!(this->unk_0146[1] & 0xF) && (Rand_ZeroOne() < 0.5f)) {
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_INBOSS_DAMAGE_OLD);
@@ -1633,12 +1633,12 @@ void func_809DD934(Boss02* this, PlayState* play) {
case 0:
if (player->stateFlags1 & 0x100) {
Cutscene_Start(play, &play->csCtx);
this->unk_1D22 = Play_CreateSubCamera(play);
this->subCamId = Play_CreateSubCamera(play);
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
Play_CameraChangeStatus(play, this->unk_1D22, CAM_STATUS_ACTIVE);
Play_CameraChangeStatus(play, this->subCamId, CAM_STATUS_ACTIVE);
func_8016566C(150);
this->unk_1D14 = 0;
this->unk_1D5C = 0.0f;
this->subCamAtVel = 0.0f;
this->unk_1D58 = 0.0f;
if (!sIsInGiantMode) {
this->unk_1D18 = 1;
@@ -1674,11 +1674,11 @@ void func_809DD934(Boss02* this, PlayState* play) {
if (this->unk_1D14 == (u32)(BREG(43) + 60)) {
play_sound(NA_SE_PL_TRANSFORM_GIANT);
}
Math_ApproachF(&this->unk_1D64, 200.0f, 0.1f, this->unk_1D5C * 640.0f);
Math_ApproachF(&this->unk_1D6C, 273.0f, 0.1f, this->unk_1D5C * 150.0f);
Math_ApproachF(&this->unk_1D70, 0.1f, 0.2f, this->unk_1D5C * 0.1f);
Math_ApproachF(&this->unk_1D74, -100.0f, 1.0f, this->unk_1D5C * 100.0f);
Math_ApproachF(&this->unk_1D5C, 1.0f, 1.0f, 0.001f);
Math_ApproachF(&this->unk_1D64, 200.0f, 0.1f, this->subCamAtVel * 640.0f);
Math_ApproachF(&this->unk_1D6C, 273.0f, 0.1f, this->subCamAtVel * 150.0f);
Math_ApproachF(&this->unk_1D70, 0.1f, 0.2f, this->subCamAtVel * 0.1f);
Math_ApproachF(&this->unk_1D74, -100.0f, 1.0f, this->subCamAtVel * 100.0f);
Math_ApproachF(&this->subCamAtVel, 1.0f, 1.0f, 0.001f);
} else {
Math_ApproachF(&this->unk_1D64, 30.0f, 0.1f, 1.0f);
}
@@ -1725,11 +1725,11 @@ void func_809DD934(Boss02* this, PlayState* play) {
if (this->unk_1D14 == (u32)(BREG(44) + 10)) {
play_sound(NA_SE_PL_TRANSFORM_NORAML);
}
Math_ApproachF(&this->unk_1D64, 60.0f, 0.1f, this->unk_1D5C * 640.0f);
Math_ApproachF(&this->unk_1D6C, 23.0f, 0.1f, this->unk_1D5C * 150.0f);
Math_ApproachF(&this->unk_1D64, 60.0f, 0.1f, this->subCamAtVel * 640.0f);
Math_ApproachF(&this->unk_1D6C, 23.0f, 0.1f, this->subCamAtVel * 150.0f);
Math_ApproachF(&this->unk_1D70, 0.01f, 0.1f, 0.003f);
Math_ApproachF(&this->unk_1D74, 0.0f, 1.0f, this->unk_1D5C * 100.0f);
Math_ApproachF(&this->unk_1D5C, 2.0f, 1.0f, 0.01f);
Math_ApproachF(&this->unk_1D74, 0.0f, 1.0f, this->subCamAtVel * 100.0f);
Math_ApproachF(&this->subCamAtVel, 2.0f, 1.0f, 0.01f);
}
if (this->unk_1D14 == 42) {
@@ -1750,8 +1750,8 @@ void func_809DD934(Boss02* this, PlayState* play) {
block_38:
case 20:
this->unk_1D18 = 0;
func_80169AFC(play, this->unk_1D22, 0);
this->unk_1D22 = 0;
func_80169AFC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
Cutscene_End(play, &play->csCtx);
this->actor.flags |= ACTOR_FLAG_1;
player->stateFlags1 &= ~0x100;
@@ -2017,22 +2017,22 @@ void func_809DD934(Boss02* this, PlayState* play) {
break;
}
if ((this->unk_1D18 != 0) && (this->unk_1D22 != 0)) {
if ((this->unk_1D18 != 0) && (this->subCamId != SUB_CAM_ID_DONE)) {
Matrix_RotateYS(player->actor.shape.rot.y, MTXMODE_NEW);
Matrix_MultVecZ(this->unk_1D64, &sp58);
this->unk_1D24.x = player->actor.world.pos.x + sp58.x;
this->unk_1D24.y = player->actor.world.pos.y + sp58.y + this->unk_1D68;
this->unk_1D24.z = player->actor.world.pos.z + sp58.z;
this->subCamEye.x = player->actor.world.pos.x + sp58.x;
this->subCamEye.y = player->actor.world.pos.y + sp58.y + this->unk_1D68;
this->subCamEye.z = player->actor.world.pos.z + sp58.z;
this->unk_1D30.x = player->actor.world.pos.x;
this->unk_1D30.y = player->actor.world.pos.y + this->unk_1D6C;
this->unk_1D30.z = player->actor.world.pos.z;
this->subCamAt.x = player->actor.world.pos.x;
this->subCamAt.y = player->actor.world.pos.y + this->unk_1D6C;
this->subCamAt.z = player->actor.world.pos.z;
this->unk_1D54 = Math_SinS(this->unk_1D14 * 1512) * this->unk_1D58;
Matrix_RotateZF(this->unk_1D54, MTXMODE_APPLY);
Matrix_MultVecY(1.0f, &this->unk_1D3C);
Play_CameraSetAtEyeUp(play, this->unk_1D22, &this->unk_1D30, &this->unk_1D24, &this->unk_1D3C);
Matrix_MultVecY(1.0f, &this->subCamUp);
Play_CameraSetAtEyeUp(play, this->subCamId, &this->subCamAt, &this->subCamEye, &this->subCamUp);
ShrinkWindow_SetLetterboxTarget(27);
}
}
@@ -2040,7 +2040,7 @@ void func_809DD934(Boss02* this, PlayState* play) {
void func_809DEAC4(Boss02* this, PlayState* play) {
Player* player = GET_PLAYER(play);
Boss02* sp68;
Vec3f sp5C;
Vec3f subCamEye;
f32 sp58 = 0.0f;
this->unk_1D1C++;
@@ -2059,22 +2059,22 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
break;
}
Cutscene_Start(play, &play->csCtx);
this->unk_1D22 = Play_CreateSubCamera(play);
this->subCamId = Play_CreateSubCamera(play);
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
Play_CameraChangeStatus(play, this->unk_1D22, CAM_STATUS_ACTIVE);
Play_CameraChangeStatus(play, this->subCamId, CAM_STATUS_ACTIVE);
this->unk_1D20 = 2;
this->unk_1D1C = 0;
case 2:
player->actor.shape.rot.y = -0x8000;
player->actor.world.rot.y = player->actor.shape.rot.y;
this->unk_1D24.x = player->actor.world.pos.x - 20.0f;
this->unk_1D24.y = (Player_GetHeight(player) + player->actor.world.pos.y) - 29.0f;
this->unk_1D24.z = player->actor.world.pos.z - 50;
this->subCamEye.x = player->actor.world.pos.x - 20.0f;
this->subCamEye.y = (Player_GetHeight(player) + player->actor.world.pos.y) - 29.0f;
this->subCamEye.z = player->actor.world.pos.z - 50;
this->unk_1D30.x = player->actor.world.pos.x;
this->unk_1D30.y = (Player_GetHeight(player) + player->actor.world.pos.y) - 17.0f;
this->unk_1D30.z = player->actor.world.pos.z;
this->subCamAt.x = player->actor.world.pos.x;
this->subCamAt.y = (Player_GetHeight(player) + player->actor.world.pos.y) - 17.0f;
this->subCamAt.z = player->actor.world.pos.z;
if (this->unk_1D1C >= 30) {
if (this->unk_1D1C == 30) {
Rumble_Override(0.0f, 50, 200, 1);
@@ -2082,7 +2082,7 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
this->unk_0150 += 0x4000;
sp58 = (Math_SinS(this->unk_0150) * (BREG(19) + 5)) * 0.1f;
Matrix_RotateZF(Math_SinS(this->unk_1D1C * 0x3000) * ((KREG(28) * 0.001f) + 0.017f), MTXMODE_NEW);
Matrix_MultVecY(1.0f, &this->unk_1D3C);
Matrix_MultVecY(1.0f, &this->subCamUp);
func_8019F128(NA_SE_EV_EARTHQUAKE_LAST - SFX_FLAG);
}
@@ -2116,18 +2116,18 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
case 10:
if (this->unk_1D1C < 310) {
this->unk_1D48 = sp68->actor.world.pos;
this->unk_1D24.x = (sp68->actor.world.pos.x * 50.0f) * 0.001f;
this->unk_1D24.y = (sp68->actor.world.pos.y * 50.0f) * 0.001f;
if (this->unk_1D24.y < 100.0f) {
this->unk_1D24.y = 100.0f;
this->subCamAtNext = sp68->actor.world.pos;
this->subCamEye.x = (sp68->actor.world.pos.x * 50.0f) * 0.001f;
this->subCamEye.y = (sp68->actor.world.pos.y * 50.0f) * 0.001f;
if (this->subCamEye.y < 100.0f) {
this->subCamEye.y = 100.0f;
}
this->unk_1D24.z = (sp68->actor.world.pos.z * 100) * 0.001f;
this->subCamEye.z = (sp68->actor.world.pos.z * 100) * 0.001f;
}
Math_ApproachF(&this->unk_1D30.x, this->unk_1D48.x, 0.1f, 3000.0f);
Math_ApproachF(&this->unk_1D30.y, this->unk_1D48.y, 0.1f, 3000.0f);
Math_ApproachF(&this->unk_1D30.z, this->unk_1D48.z, 0.1f, 3000.0f);
Math_ApproachF(&this->subCamAt.x, this->subCamAtNext.x, 0.1f, 3000.0f);
Math_ApproachF(&this->subCamAt.y, this->subCamAtNext.y, 0.1f, 3000.0f);
Math_ApproachF(&this->subCamAt.z, this->subCamAtNext.z, 0.1f, 3000.0f);
if (this->unk_1D1C == 100) {
sBlueTwinmold->unk_0144 = 11;
@@ -2141,8 +2141,8 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
}
if (this->unk_1D1C == (u32)(BREG(27) + 335)) {
func_80169AFC(play, this->unk_1D22, 0);
this->unk_1D22 = 0;
func_80169AFC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
Cutscene_End(play, &play->csCtx);
func_800B7298(play, &this->actor, 6);
this->actor.flags |= ACTOR_FLAG_1;
@@ -2156,13 +2156,13 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
case 100:
if (ActorCutscene_GetCurrentIndex() == -1) {
Cutscene_Start(play, &play->csCtx);
this->unk_1D22 = Play_CreateSubCamera(play);
this->subCamId = Play_CreateSubCamera(play);
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
Play_CameraChangeStatus(play, this->unk_1D22, CAM_STATUS_ACTIVE);
Play_CameraChangeStatus(play, this->subCamId, CAM_STATUS_ACTIVE);
this->unk_1D20 = 101;
this->unk_1D1C = 0;
this->unk_1D5C = 1.0f;
this->unk_1D30 = sp68->actor.world.pos;
this->subCamAtVel = 1.0f;
this->subCamAt = sp68->actor.world.pos;
} else {
break;
}
@@ -2171,30 +2171,30 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
case 102:
case_10x:
if ((this->unk_1D20 == 101) || (this->unk_1D20 == 103)) {
this->unk_1D48 = sp68->actor.world.pos;
this->subCamAtNext = sp68->actor.world.pos;
} else {
this->unk_1D48 = sp68->unk_147C[sp68->unk_1678];
this->subCamAtNext = sp68->unk_147C[sp68->unk_1678];
}
this->unk_1D24.x = player->actor.world.pos.x;
this->unk_1D24.y = player->actor.world.pos.y + 100.0f;
this->subCamEye.x = player->actor.world.pos.x;
this->subCamEye.y = player->actor.world.pos.y + 100.0f;
if (!sIsInGiantMode) {
if (this->unk_1D24.y < 100.0f) {
this->unk_1D24.y = 100.0f;
if (this->subCamEye.y < 100.0f) {
this->subCamEye.y = 100.0f;
}
} else if (this->unk_1D24.y < 3160.0f) {
this->unk_1D24.y = 3160.0f;
} else if (this->subCamEye.y < 3160.0f) {
this->subCamEye.y = 3160.0f;
}
if (this->unk_1D48.y < (100.0f * D_809DF5B0)) {
this->unk_1D48.y = (100.0f * D_809DF5B0);
if (this->subCamAtNext.y < (100.0f * D_809DF5B0)) {
this->subCamAtNext.y = (100.0f * D_809DF5B0);
}
this->unk_1D24.z = player->actor.world.pos.z;
Math_ApproachF(&this->unk_1D30.x, this->unk_1D48.x, 0.3f, this->unk_1D5C * 500.0f);
Math_ApproachF(&this->unk_1D30.y, this->unk_1D48.y, 0.3f, this->unk_1D5C * 500.0f);
Math_ApproachF(&this->unk_1D30.z, this->unk_1D48.z, 0.3f, this->unk_1D5C * 500.0f);
Math_ApproachF(&this->unk_1D5C, 1.0f, 1.0f, 0.02f);
this->subCamEye.z = player->actor.world.pos.z;
Math_ApproachF(&this->subCamAt.x, this->subCamAtNext.x, 0.3f, this->subCamAtVel * 500.0f);
Math_ApproachF(&this->subCamAt.y, this->subCamAtNext.y, 0.3f, this->subCamAtVel * 500.0f);
Math_ApproachF(&this->subCamAt.z, this->subCamAtNext.z, 0.3f, this->subCamAtVel * 500.0f);
Math_ApproachF(&this->subCamAtVel, 1.0f, 1.0f, 0.02f);
break;
case 103:
@@ -2202,8 +2202,8 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
sp58 = Math_SinS(this->unk_0150);
sp58 = (sp58 * this->unk_0146[0]) * 1.5f;
if (this->unk_1D1C == 30) {
func_80169AFC(play, this->unk_1D22, 0);
this->unk_1D22 = 0;
func_80169AFC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
Cutscene_End(play, &play->csCtx);
func_800B7298(play, &this->actor, 6);
this->unk_1D20 = 0;
@@ -2235,12 +2235,12 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
goto case_10x;
}
if ((this->unk_1D20 != 0) && (this->unk_1D22 != 0)) {
sp5C = this->unk_1D24;
sp5C.y += sp58 * D_809DF5B0;
Play_CameraSetAtEyeUp(play, this->unk_1D22, &this->unk_1D30, &sp5C, &this->unk_1D3C);
this->unk_1D3C.z = this->unk_1D3C.x = 0.0f;
this->unk_1D3C.y = 1.0f;
if ((this->unk_1D20 != 0) && (this->subCamId != SUB_CAM_ID_DONE)) {
subCamEye = this->subCamEye;
subCamEye.y += sp58 * D_809DF5B0;
Play_CameraSetAtEyeUp(play, this->subCamId, &this->subCamAt, &subCamEye, &this->subCamUp);
this->subCamUp.z = this->subCamUp.x = 0.0f;
this->subCamUp.y = 1.0f;
ShrinkWindow_SetLetterboxTarget(27);
}
}
+6 -6
View File
@@ -88,14 +88,14 @@ typedef struct Boss02 {
/* 0x1D1A */ s16 unk_1D1A;
/* 0x1D1C */ u32 unk_1D1C;
/* 0x1D20 */ s16 unk_1D20;
/* 0x1D22 */ s16 unk_1D22;
/* 0x1D24 */ Vec3f unk_1D24;
/* 0x1D30 */ Vec3f unk_1D30;
/* 0x1D3C */ Vec3f unk_1D3C;
/* 0x1D48 */ Vec3f unk_1D48;
/* 0x1D22 */ s16 subCamId;
/* 0x1D24 */ Vec3f subCamEye;
/* 0x1D30 */ Vec3f subCamAt;
/* 0x1D3C */ Vec3f subCamUp;
/* 0x1D48 */ Vec3f subCamAtNext;
/* 0x1D54 */ f32 unk_1D54;
/* 0x1D58 */ f32 unk_1D58;
/* 0x1D5C */ f32 unk_1D5C;
/* 0x1D5C */ f32 subCamAtVel;
/* 0x1D60 */ UNK_TYPE1 unk1D60[0x4];
/* 0x1D64 */ f32 unk_1D64;
/* 0x1D68 */ f32 unk_1D68;
+95 -96
View File
@@ -1150,9 +1150,9 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) {
if (player->actor.world.pos.y < 1350.0f) {
Cutscene_Start(play, &play->csCtx);
func_800B7298(play, &this->actor, 7);
this->csCamId = Play_CreateSubCamera(play);
this->subCamId = Play_CreateSubCamera(play);
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
Play_CameraChangeStatus(play, this->csCamId, CAM_STATUS_ACTIVE);
Play_CameraChangeStatus(play, this->subCamId, CAM_STATUS_ACTIVE);
this->actor.world.rot.y = -0x7B30;
this->prevPlayerPos.y = 1850.0f;
@@ -1165,34 +1165,34 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) {
player->actor.world.pos.y = 1850.0f;
player->actor.world.rot.y = player->actor.shape.rot.y;
this->csCamAt.y = player->actor.world.pos.y + 30.0f;
this->subCamAt.y = player->actor.world.pos.y + 30.0f;
this->csState = 1;
this->csTimer = 0;
this->actor.flags &= ~ACTOR_FLAG_1;
this->unk_2D5 = true;
this->cameraFov = KREG(14) + 60.0f;
this->subCamFov = KREG(14) + 60.0f;
case 1:
player->actor.world.pos.z = 0.0f;
player->actor.world.pos.x = 0.0f;
player->actor.speedXZ = 0.0f;
this->csCamEye.x = 100.0f;
this->csCamEye.y = 540.0f;
this->subCamEye.x = 100.0f;
this->subCamEye.y = 540.0f;
this->csCamEye.z = player->actor.world.pos.z + 100.0f;
this->csCamAt.x = player->actor.world.pos.x;
this->subCamEye.z = player->actor.world.pos.z + 100.0f;
this->subCamAt.x = player->actor.world.pos.x;
Math_ApproachF(&this->csCamAt.y, player->actor.world.pos.y + 30.0f, 0.5f, 100.0f);
this->csCamAt.z = player->actor.world.pos.z;
Math_ApproachF(&this->subCamAt.y, player->actor.world.pos.y + 30.0f, 0.5f, 100.0f);
this->subCamAt.z = player->actor.world.pos.z;
if (this->csTimer > 105) {
this->csState = 2;
this->csTimer = 0;
this->unk_240 = 0;
func_8016566C(0x96);
this->cameraFov = 80.0f;
this->subCamFov = 80.0f;
case 2:
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_KONB_DEMO_MOVE_OLD - SFX_FLAG);
@@ -1263,20 +1263,20 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) {
func_800B7298(play, &this->actor, 8);
}
this->csCamEye.x = player->actor.world.pos.x + 30.0f;
this->csCamEye.y = player->actor.world.pos.y + Player_GetHeight(player) - 4.0f + BREG(17);
this->csCamEye.z = player->actor.world.pos.z - 30.0f;
this->subCamEye.x = player->actor.world.pos.x + 30.0f;
this->subCamEye.y = player->actor.world.pos.y + Player_GetHeight(player) - 4.0f + BREG(17);
this->subCamEye.z = player->actor.world.pos.z - 30.0f;
this->csCamAt.x = player->actor.world.pos.x;
this->csCamAt.y = player->actor.world.pos.y + Player_GetHeight(player) - 18.0f + 6.0f + BREG(18);
this->csCamAt.z = player->actor.world.pos.z;
this->subCamAt.x = player->actor.world.pos.x;
this->subCamAt.y = player->actor.world.pos.y + Player_GetHeight(player) - 18.0f + 6.0f + BREG(18);
this->subCamAt.z = player->actor.world.pos.z;
if (player->transformation == PLAYER_FORM_FIERCE_DEITY) {
this->csCamEye.y -= 60.0f;
this->csCamAt.y -= 35.0f;
this->subCamEye.y -= 60.0f;
this->subCamAt.y -= 35.0f;
}
this->cameraFov = 60.0f;
this->subCamFov = 60.0f;
if (this->csTimer == 16) {
this->csState = 5;
this->csTimer = 0;
@@ -1293,13 +1293,13 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) {
player->actor.shape.rot.y = -0x1470;
player->actor.world.rot.y = player->actor.shape.rot.y;
this->csCamEye.x = player->actor.world.pos.x + 30.0f - 90.0f + 300.0f;
this->csCamEye.y = player->actor.world.pos.y + 40.0f + 10.0f;
this->csCamEye.z = player->actor.world.pos.z - 30.0f + 160.0f + 300.0f;
this->subCamEye.x = player->actor.world.pos.x + 30.0f - 90.0f + 300.0f;
this->subCamEye.y = player->actor.world.pos.y + 40.0f + 10.0f;
this->subCamEye.z = player->actor.world.pos.z - 30.0f + 160.0f + 300.0f;
this->csCamAt.x = this->actor.world.pos.x;
this->csCamAt.y = this->actor.world.pos.y - 100.0f;
this->csCamAt.z = this->actor.world.pos.z;
this->subCamAt.x = this->actor.world.pos.x;
this->subCamAt.y = this->actor.world.pos.y - 100.0f;
this->subCamAt.z = this->actor.world.pos.z;
if (this->csTimer == 10) {
this->actor.velocity.y = 30.0f;
@@ -1345,34 +1345,34 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) {
Boss03_SpawnEffectDroplet(play, &effectPos);
}
this->csCamTargetAt.x = this->actor.world.pos.x;
this->csCamTargetAt.y = this->actor.world.pos.y - 100.0f;
this->csCamTargetAt.z = this->actor.world.pos.z;
this->subCamAtNext.x = this->actor.world.pos.x;
this->subCamAtNext.y = this->actor.world.pos.y - 100.0f;
this->subCamAtNext.z = this->actor.world.pos.z;
}
} else {
Math_ApproachF(&this->csCamEye.x, player->actor.world.pos.x + 30.0f - 90.0f + 300.0f - 90.0f, 0.05f,
Math_ApproachF(&this->subCamEye.x, player->actor.world.pos.x + 30.0f - 90.0f + 300.0f - 90.0f, 0.05f,
3.0f);
Math_ApproachF(&this->csCamEye.y, player->actor.world.pos.y + 40.0f + 10.0f + 90.0f, 0.05f, 3.0f);
Math_ApproachF(&this->csCamEye.z, player->actor.world.pos.z - 30.0f + 160.0f + 300.0f - 90.0f, 0.05f,
Math_ApproachF(&this->subCamEye.y, player->actor.world.pos.y + 40.0f + 10.0f + 90.0f, 0.05f, 3.0f);
Math_ApproachF(&this->subCamEye.z, player->actor.world.pos.z - 30.0f + 160.0f + 300.0f - 90.0f, 0.05f,
3.0f);
Math_ApproachF(&this->unk_568, 90.0f, 0.05f, 3.0f);
}
Math_ApproachF(&this->csCamAt.x, this->csCamTargetAt.x, 0.5f, 100.0f);
Math_ApproachF(&this->csCamAt.y, this->csCamTargetAt.y + this->unk_568, 0.5f, 100.0f);
Math_ApproachF(&this->csCamAt.z, this->csCamTargetAt.z, 0.5f, 100.0f);
Math_ApproachF(&this->subCamAt.x, this->subCamAtNext.x, 0.5f, 100.0f);
Math_ApproachF(&this->subCamAt.y, this->subCamAtNext.y + this->unk_568, 0.5f, 100.0f);
Math_ApproachF(&this->subCamAt.z, this->subCamAtNext.z, 0.5f, 100.0f);
if (this->csTimer == 145) {
Camera* camera = Play_GetCamera(play, CAM_ID_MAIN);
Camera* mainCam = Play_GetCamera(play, CAM_ID_MAIN);
camera->eye = this->csCamEye;
camera->eyeNext = this->csCamEye;
camera->at = this->csCamAt;
mainCam->eye = this->subCamEye;
mainCam->eyeNext = this->subCamEye;
mainCam->at = this->subCamAt;
func_80169AFC(play, this->csCamId, 0);
func_80169AFC(play, this->subCamId, 0);
Cutscene_End(play, &play->csCtx);
func_800B7298(play, &this->actor, 6);
this->csCamId = 0;
this->subCamId = SUB_CAM_ID_DONE;
func_809E344C(this, play);
this->workTimer[WORK_TIMER_UNK1_A] = 50;
@@ -1395,22 +1395,22 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) {
Matrix_RotateYS(this->actor.world.rot.y, MTXMODE_APPLY);
Matrix_RotateYF(sp5C, MTXMODE_APPLY);
Matrix_RotateXS(this->actor.world.rot.x, MTXMODE_APPLY);
Matrix_MultVecZ(100.0f, &this->csCamAt);
Matrix_MultVecZ(100.0f, &this->subCamAt);
this->csCamEye = this->actor.world.pos;
this->subCamEye = this->actor.world.pos;
for (i = 0; i < bubblesToSpawnNum; i++) {
effectPos.x = randPlusMinusPoint5Scaled(100.0f) + this->csCamAt.x;
effectPos.y = (randPlusMinusPoint5Scaled(100.0f) + this->csCamAt.y) - 150.0f;
effectPos.z = randPlusMinusPoint5Scaled(100.0f) + this->csCamAt.z;
effectPos.x = randPlusMinusPoint5Scaled(100.0f) + this->subCamAt.x;
effectPos.y = (randPlusMinusPoint5Scaled(100.0f) + this->subCamAt.y) - 150.0f;
effectPos.z = randPlusMinusPoint5Scaled(100.0f) + this->subCamAt.z;
Boss03_SpawnEffectBubble(play, &effectPos);
}
}
if (this->csCamId != 0) {
Play_CameraSetAtEye(play, this->csCamId, &this->csCamAt, &this->csCamEye);
Play_CameraSetFov(play, this->csCamId, this->cameraFov);
if (this->subCamId != SUB_CAM_ID_DONE) {
Play_CameraSetAtEye(play, this->subCamId, &this->subCamAt, &this->subCamEye);
Play_CameraSetFov(play, this->subCamId, this->subCamFov);
}
}
@@ -1435,7 +1435,7 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) {
s32 pad;
f32 pad2;
f32 sp64;
Camera* camera = Play_GetCamera(play, CAM_ID_MAIN);
Camera* mainCam = Play_GetCamera(play, CAM_ID_MAIN);
Player* player;
f32 sp4C;
@@ -1450,9 +1450,9 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) {
if (ActorCutscene_GetCurrentIndex() == -1) {
Cutscene_Start(play, &play->csCtx);
func_800B7298(play, &this->actor, 1);
this->csCamId = Play_CreateSubCamera(play);
this->subCamId = Play_CreateSubCamera(play);
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
Play_CameraChangeStatus(play, this->csCamId, CAM_STATUS_ACTIVE);
Play_CameraChangeStatus(play, this->subCamId, CAM_STATUS_ACTIVE);
this->unk_2BE = Math_FAtan2F(this->actor.world.pos.z, this->actor.world.pos.x);
// Player is above water && Player is standing on ground
@@ -1464,15 +1464,15 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) {
case 1:
this->csTimer = 0;
this->csState = 2;
this->csCamEye.x = camera->eye.x;
this->csCamEye.y = camera->eye.y;
this->csCamEye.z = camera->eye.z;
this->csCamAt.x = camera->at.x;
this->csCamAt.y = camera->at.y;
this->csCamAt.z = camera->at.z;
this->subCamEye.x = mainCam->eye.x;
this->subCamEye.y = mainCam->eye.y;
this->subCamEye.z = mainCam->eye.z;
this->subCamAt.x = mainCam->at.x;
this->subCamAt.y = mainCam->at.y;
this->subCamAt.z = mainCam->at.z;
aux = this->csCamEye.x - this->actor.world.pos.x;
this->unk_568 = Math_Acot2F(this->csCamEye.z - this->actor.world.pos.z, aux);
aux = this->subCamEye.x - this->actor.world.pos.x;
this->unk_568 = Math_Acot2F(this->subCamEye.z - this->actor.world.pos.z, aux);
this->unk_570 = 0.0f;
this->unk_56C = 0.0f;
@@ -1482,26 +1482,26 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) {
sp90.y = (50.0f * sp64) + 150.0f;
sp90.z = (400.0f * sp64) + 300.0f;
this->csCamTargetAt.x = this->actor.world.pos.x;
this->csCamTargetAt.y = this->actor.world.pos.y;
this->csCamTargetAt.z = this->actor.world.pos.z;
this->subCamAtNext.x = this->actor.world.pos.x;
this->subCamAtNext.y = this->actor.world.pos.y;
this->subCamAtNext.z = this->actor.world.pos.z;
this->unk_568 += this->unk_56C;
Matrix_RotateYF(this->unk_568, MTXMODE_NEW);
Matrix_MultVec3f(&sp90, &this->csCamTargetEye);
Matrix_MultVec3f(&sp90, &this->subCamEyeNext);
this->csCamTargetEye.x += this->actor.world.pos.x;
this->csCamTargetEye.y += this->waterHeight;
this->csCamTargetEye.z += this->actor.world.pos.z;
this->subCamEyeNext.x += this->actor.world.pos.x;
this->subCamEyeNext.y += this->waterHeight;
this->subCamEyeNext.z += this->actor.world.pos.z;
sp4C = 40.0f + aux2;
Math_ApproachF(&this->csCamEye.x, this->csCamTargetEye.x, 0.1f, sp4C);
Math_ApproachF(&this->csCamEye.y, this->csCamTargetEye.y, 0.1f, sp4C);
Math_ApproachF(&this->csCamEye.z, this->csCamTargetEye.z, 0.1f, sp4C);
Math_ApproachF(&this->subCamEye.x, this->subCamEyeNext.x, 0.1f, sp4C);
Math_ApproachF(&this->subCamEye.y, this->subCamEyeNext.y, 0.1f, sp4C);
Math_ApproachF(&this->subCamEye.z, this->subCamEyeNext.z, 0.1f, sp4C);
sp4C = 70.0f + aux2;
Math_ApproachF(&this->csCamAt.x, this->csCamTargetAt.x, 0.1f, sp4C);
Math_ApproachF(&this->csCamAt.y, this->csCamTargetAt.y, 0.1f, sp4C);
Math_ApproachF(&this->csCamAt.z, this->csCamTargetAt.z, 0.1f, sp4C);
Math_ApproachF(&this->subCamAt.x, this->subCamAtNext.x, 0.1f, sp4C);
Math_ApproachF(&this->subCamAt.y, this->subCamAtNext.y, 0.1f, sp4C);
Math_ApproachF(&this->subCamAt.z, this->subCamAtNext.z, 0.1f, sp4C);
}
break;
}
@@ -1622,12 +1622,12 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) {
case 2:
Math_ApproachZeroF(&this->unk_56C, 1.0f, 0.0005f);
if (this->csTimer == 60) {
camera = Play_GetCamera(play, CAM_ID_MAIN);
camera->eye = this->csCamEye;
camera->eyeNext = this->csCamEye;
camera->at = this->csCamAt;
func_80169AFC(play, this->csCamId, 0);
this->csCamId = 0;
mainCam = Play_GetCamera(play, CAM_ID_MAIN);
mainCam->eye = this->subCamEye;
mainCam->eyeNext = this->subCamEye;
mainCam->at = this->subCamAt;
func_80169AFC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
Cutscene_End(play, &play->csCtx);
func_800B7298(play, &this->actor, 6);
this->csState = 3;
@@ -1642,8 +1642,8 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) {
break;
}
if (this->csCamId != 0) {
Play_CameraSetAtEye(play, this->csCamId, &this->csCamAt, &this->csCamEye);
if (this->subCamId != SUB_CAM_ID_DONE) {
Play_CameraSetAtEye(play, this->subCamId, &this->subCamAt, &this->subCamEye);
}
}
@@ -1664,9 +1664,9 @@ void Boss03_SpawnSmallFishesCutscene(Boss03* this, PlayState* play) {
if (ActorCutscene_GetCurrentIndex() == -1) {
Cutscene_Start(play, &play->csCtx);
func_800B7298(play, &this->actor, 1);
this->csCamId = Play_CreateSubCamera(play);
this->subCamId = Play_CreateSubCamera(play);
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
Play_CameraChangeStatus(play, this->csCamId, CAM_STATUS_ACTIVE);
Play_CameraChangeStatus(play, this->subCamId, CAM_STATUS_ACTIVE);
this->csState = 1;
this->unk_2BE = 0xBB8;
@@ -1691,11 +1691,11 @@ void Boss03_SpawnSmallFishesCutscene(Boss03* this, PlayState* play) {
Matrix_Translate(this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z,
MTXMODE_NEW);
Matrix_RotateYS(this->actor.shape.rot.y + this->unk_2BE, MTXMODE_APPLY);
Matrix_MultVecZ(340.0f, &this->csCamEye);
Matrix_MultVecZ(340.0f, &this->subCamEye);
this->csCamAt.x = this->actor.world.pos.x;
this->csCamAt.y = this->actor.world.pos.y;
this->csCamAt.z = this->actor.world.pos.z;
this->subCamAt.x = this->actor.world.pos.x;
this->subCamAt.y = this->actor.world.pos.y;
this->subCamAt.z = this->actor.world.pos.z;
Math_ApproachS(&this->unk_2BE, -4000, 10, 70);
@@ -1715,15 +1715,14 @@ void Boss03_SpawnSmallFishesCutscene(Boss03* this, PlayState* play) {
}
if (this->csTimer >= 150) {
Camera* camera;
Camera* mainCam = Play_GetCamera(play, CAM_ID_MAIN);
camera = Play_GetCamera(play, CAM_ID_MAIN);
camera->eye = this->csCamEye;
camera->eyeNext = this->csCamEye;
camera->at = this->csCamAt;
mainCam->eye = this->subCamEye;
mainCam->eyeNext = this->subCamEye;
mainCam->at = this->subCamAt;
func_80169AFC(play, this->csCamId, 0);
this->csCamId = 0;
func_80169AFC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
Cutscene_End(play, &play->csCtx);
func_800B7298(play, &this->actor, 6);
@@ -1734,8 +1733,8 @@ void Boss03_SpawnSmallFishesCutscene(Boss03* this, PlayState* play) {
break;
}
if (this->csCamId != 0) {
Play_CameraSetAtEye(play, this->csCamId, &this->csCamAt, &this->csCamEye);
if (this->subCamId != SUB_CAM_ID_DONE) {
Play_CameraSetAtEye(play, this->subCamId, &this->subCamAt, &this->subCamEye);
}
}
+6 -6
View File
@@ -92,16 +92,16 @@ typedef struct Boss03 {
/* 0x52C */ f32 floppingAnimLastFrame;
/* 0x530 */ u32 csTimer;
/* 0x534 */ s16 csState;
/* 0x536 */ s16 csCamId;
/* 0x538 */ Vec3f csCamEye;
/* 0x544 */ Vec3f csCamAt;
/* 0x550 */ Vec3f csCamTargetEye;
/* 0x55C */ Vec3f csCamTargetAt;
/* 0x536 */ s16 subCamId;
/* 0x538 */ Vec3f subCamEye;
/* 0x544 */ Vec3f subCamAt;
/* 0x550 */ Vec3f subCamEyeNext;
/* 0x55C */ Vec3f subCamAtNext;
/* 0x568 */ f32 unk_568;
/* 0x56C */ f32 unk_56C;
/* 0x570 */ f32 unk_570; // set but not used
/* 0x574 */ UNK_TYPE1 unk_574[0x04];
/* 0x578 */ f32 cameraFov;
/* 0x578 */ f32 subCamFov;
} Boss03; // size = 0x57C
#define GYORG_PARAM_DEFAULT (0)
+40 -40
View File
@@ -259,19 +259,19 @@ void func_809EC568(Boss04* this, PlayState* play) {
this->unk_708 = 10;
this->unk_704 = 0;
Cutscene_Start(play, &play->csCtx);
this->unk_70A = Play_CreateSubCamera(play);
this->subCamId = Play_CreateSubCamera(play);
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
Play_CameraChangeStatus(play, this->unk_70A, CAM_STATUS_ACTIVE);
Play_CameraChangeStatus(play, this->subCamId, CAM_STATUS_ACTIVE);
func_800B7298(play, &this->actor, 7);
player->actor.world.pos.x = this->unk_6E8;
player->actor.world.pos.z = this->unk_6F0 + 410.0f;
player->actor.shape.rot.y = 0x7FFF;
player->actor.world.rot.y = player->actor.shape.rot.y;
Math_Vec3f_Copy(&this->unk_70C, &player->actor.world.pos);
this->unk_70C.y += 100.0f;
Math_Vec3f_Copy(&this->unk_718, &this->actor.world.pos);
Math_Vec3f_Copy(&this->subCamEye, &player->actor.world.pos);
this->subCamEye.y += 100.0f;
Math_Vec3f_Copy(&this->subCamAt, &this->actor.world.pos);
func_8016566C(150);
this->unk_744 = 60.0f;
this->subCamFov = 60.0f;
boss = play->actorCtx.actorLists[ACTORCAT_BOSS].first;
while (boss != NULL) {
@@ -293,7 +293,7 @@ void func_809EC568(Boss04* this, PlayState* play) {
}
this->unk_2D0 = 10000.0f;
this->unk_2C8 = 300;
Math_ApproachF(&this->unk_744, 20.0f, 0.3f, 11.0f);
Math_ApproachF(&this->subCamFov, 20.0f, 0.3f, 11.0f);
if (this->unk_704 == 40) {
this->unk_708 = 11;
this->unk_704 = 0;
@@ -319,9 +319,9 @@ void func_809EC568(Boss04* this, PlayState* play) {
case 12:
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_ME_ATTACK - SFX_FLAG);
Math_ApproachF(&this->unk_718.x, this->actor.world.pos.x, 0.5f, 1000.0f);
Math_ApproachF(&this->unk_718.y, this->actor.world.pos.y, 0.5f, 1000.0f);
Math_ApproachF(&this->unk_718.z, this->actor.world.pos.z, 0.5f, 1000.0f);
Math_ApproachF(&this->subCamAt.x, this->actor.world.pos.x, 0.5f, 1000.0f);
Math_ApproachF(&this->subCamAt.y, this->actor.world.pos.y, 0.5f, 1000.0f);
Math_ApproachF(&this->subCamAt.z, this->actor.world.pos.z, 0.5f, 1000.0f);
if (this->actor.bgCheckFlags & 2) {
play_sound(NA_SE_IT_BIG_BOMB_EXPLOSION);
this->unk_6F4 = 15;
@@ -331,22 +331,22 @@ void func_809EC568(Boss04* this, PlayState* play) {
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->actor.world.pos.x, this->actor.world.pos.y,
this->actor.world.pos.z, 0, 0, 0, CLEAR_TAG_SPLASH);
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_KONB_JUMP_LEV_OLD - SFX_FLAG);
this->unk_748 = 20;
this->subCamAtOscillator = 20;
}
break;
case 1:
player->actor.shape.rot.y = 0x7FFF;
player->actor.world.rot.y = player->actor.shape.rot.y;
Matrix_MultVecZ(-100.0f, &this->unk_70C);
Matrix_MultVecZ(-100.0f, &this->subCamEye);
this->unk_70C.x += player->actor.world.pos.x;
this->unk_70C.y = Player_GetHeight(player) + player->actor.world.pos.y + 36.0f;
this->unk_70C.z += player->actor.world.pos.z;
this->subCamEye.x += player->actor.world.pos.x;
this->subCamEye.y = Player_GetHeight(player) + player->actor.world.pos.y + 36.0f;
this->subCamEye.z += player->actor.world.pos.z;
this->unk_718.x = player->actor.world.pos.x;
this->unk_718.y = (Player_GetHeight(player) + player->actor.world.pos.y) - 4.0f;
this->unk_718.z = player->actor.world.pos.z;
this->subCamAt.x = player->actor.world.pos.x;
this->subCamAt.y = (Player_GetHeight(player) + player->actor.world.pos.y) - 4.0f;
this->subCamAt.z = player->actor.world.pos.z;
if (this->unk_704 >= 35) {
this->unk_704 = 0;
@@ -357,13 +357,13 @@ void func_809EC568(Boss04* this, PlayState* play) {
case 2:
case 3:
Matrix_MultVecZ(500.0f, &this->unk_70C);
this->unk_70C.x += this->actor.world.pos.x;
this->unk_70C.y += this->actor.world.pos.y - 50.0f;
this->unk_70C.z += this->actor.world.pos.z;
this->unk_718.x = this->actor.world.pos.x;
this->unk_718.z = this->actor.world.pos.z;
this->unk_718.y = (this->actor.world.pos.y - 70.0f) + this->unk_728;
Matrix_MultVecZ(500.0f, &this->subCamEye);
this->subCamEye.x += this->actor.world.pos.x;
this->subCamEye.y += this->actor.world.pos.y - 50.0f;
this->subCamEye.z += this->actor.world.pos.z;
this->subCamAt.x = this->actor.world.pos.x;
this->subCamAt.z = this->actor.world.pos.z;
this->subCamAt.y = (this->actor.world.pos.y - 70.0f) + this->unk_728;
Math_ApproachZeroF(&this->unk_728, 0.05f, this->unk_73C);
Math_ApproachF(&this->unk_73C, 3.0f, 1.0f, 0.05f);
if (this->unk_704 == 20) {
@@ -379,15 +379,15 @@ void func_809EC568(Boss04* this, PlayState* play) {
}
if (this->unk_704 > 140) {
Camera* sp5C = Play_GetCamera(play, CAM_ID_MAIN);
Camera* mainCam = Play_GetCamera(play, CAM_ID_MAIN);
this->unk_708 = 0;
func_809ECD00(this, play);
sp5C->eye = this->unk_70C;
sp5C->eyeNext = this->unk_70C;
sp5C->at = this->unk_718;
func_80169AFC(play, this->unk_70A, 0);
this->unk_70A = 0;
mainCam->eye = this->subCamEye;
mainCam->eyeNext = this->subCamEye;
mainCam->at = this->subCamAt;
func_80169AFC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
Cutscene_End(play, &play->csCtx);
func_800B7298(play, &this->actor, 6);
func_80165690();
@@ -396,18 +396,18 @@ void func_809EC568(Boss04* this, PlayState* play) {
break;
}
if (this->unk_70A != 0) {
Vec3f sp50;
if (this->subCamId != SUB_CAM_ID_DONE) {
Vec3f subCamAt;
ShrinkWindow_SetLetterboxTarget(27);
if (this->unk_748 != 0) {
this->unk_748--;
if (this->subCamAtOscillator != 0) {
this->subCamAtOscillator--;
}
Math_Vec3f_Copy(&sp50, &this->unk_718);
sp50.y += Math_SinS(this->unk_748 * 0x4000) * this->unk_748 * 1.5f;
Play_CameraSetAtEye(play, this->unk_70A, &sp50, &this->unk_70C);
Play_CameraSetFov(play, this->unk_70A, this->unk_744);
Math_ApproachF(&this->unk_744, 60.0f, 0.1f, 1.0f);
Math_Vec3f_Copy(&subCamAt, &this->subCamAt);
subCamAt.y += Math_SinS(this->subCamAtOscillator * 0x4000) * this->subCamAtOscillator * 1.5f;
Play_CameraSetAtEye(play, this->subCamId, &subCamAt, &this->subCamEye);
Play_CameraSetFov(play, this->subCamId, this->subCamFov);
Math_ApproachF(&this->subCamFov, 60.0f, 0.1f, 1.0f);
}
this->actor.shape.rot.y = this->actor.yawTowardsPlayer;
x = player->actor.world.pos.x - this->actor.world.pos.x;
+5 -5
View File
@@ -63,16 +63,16 @@ typedef struct Boss04 {
/* 0x700 */ f32 unk_700;
/* 0x704 */ u32 unk_704;
/* 0x708 */ s16 unk_708;
/* 0x70A */ s16 unk_70A;
/* 0x70C */ Vec3f unk_70C;
/* 0x718 */ Vec3f unk_718;
/* 0x70A */ s16 subCamId;
/* 0x70C */ Vec3f subCamEye;
/* 0x718 */ Vec3f subCamAt;
/* 0x724 */ UNK_TYPE1 unk_724[4];
/* 0x728 */ f32 unk_728;
/* 0x72C */ UNK_TYPE1 unk_72C[0x10];
/* 0x73C */ f32 unk_73C;
/* 0x740 */ UNK_TYPE1 unk_740[4];
/* 0x744 */ f32 unk_744;
/* 0x748 */ s16 unk_748;
/* 0x744 */ f32 subCamFov;
/* 0x748 */ s16 subCamAtOscillator;
/* 0x74A */ u8 unk_74A;
} Boss04; // size = 0x74C
+37 -37
View File
@@ -200,9 +200,9 @@ void func_809F24C8(Boss06* this, PlayState* play) {
Cutscene_Start(play, &play->csCtx);
func_800B7298(play, &this->actor, 7);
this->unk_A00 = Play_CreateSubCamera(play);
this->subCamId = Play_CreateSubCamera(play);
Play_CameraChangeStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
Play_CameraChangeStatus(play, this->unk_A00, CAM_STATUS_ACTIVE);
Play_CameraChangeStatus(play, this->subCamId, CAM_STATUS_ACTIVE);
D_809F4970->unk_151 = 1;
this->unk_1C9 = 1;
this->unk_1C8 = 1;
@@ -244,26 +244,26 @@ void func_809F24C8(Boss06* this, PlayState* play) {
player->actor.world.rot.y = player->actor.shape.rot.y;
}
this->unk_A04.x = player->actor.world.pos.x + 20.0f;
this->unk_A04.y = player->actor.world.pos.y + 20.0f;
this->unk_A04.z = player->actor.world.pos.z + 30.0f;
this->subCamEye.x = player->actor.world.pos.x + 20.0f;
this->subCamEye.y = player->actor.world.pos.y + 20.0f;
this->subCamEye.z = player->actor.world.pos.z + 30.0f;
this->unk_A10.x = player->actor.world.pos.x;
this->unk_A10.y = player->actor.world.pos.y + 26.0f;
this->unk_A10.z = player->actor.world.pos.z;
this->subCamAt.x = player->actor.world.pos.x;
this->subCamAt.y = player->actor.world.pos.y + 26.0f;
this->subCamAt.z = player->actor.world.pos.z;
if (this->unk_1CA >= 75) {
temp_v0_2 = play->actorCtx.actorLists[ACTORCAT_BOSS].first;
while (temp_v0_2 != NULL) {
if ((temp_v0_2->id == ACTOR_EN_KNIGHT) && (&D_809F4970->actor == temp_v0_2) &&
(D_809F4970->unk_680 != 0)) {
this->unk_A04.x = 1307.0f;
this->unk_A04.y = 142.0f;
this->unk_A04.z = 2897.0f;
this->subCamEye.x = 1307.0f;
this->subCamEye.y = 142.0f;
this->subCamEye.z = 2897.0f;
this->unk_A10.x = 1376.0f;
this->unk_A10.y = 132.0f;
this->unk_A10.z = 2860.0f;
this->subCamAt.x = 1376.0f;
this->subCamAt.y = 132.0f;
this->subCamAt.z = 2860.0f;
if (this->unk_1CA == 75) {
D_809F4970->unk_148 = 1;
@@ -291,25 +291,25 @@ void func_809F24C8(Boss06* this, PlayState* play) {
this->actor.world.pos.y - 200.0f, this->actor.world.pos.z - 170.0f, 15, 0, 0, 1);
if (ENBOSS06_GET_PARAMS(&this->actor) == 0) {
this->unk_A04.x = this->actor.world.pos.x - 200.0f;
this->subCamEye.x = this->actor.world.pos.x - 200.0f;
} else {
this->unk_A04.x = this->actor.world.pos.x + 200.0f;
this->subCamEye.x = this->actor.world.pos.x + 200.0f;
}
this->unk_A04.y = (this->actor.world.pos.y - 200.0f) + 100.0f;
this->unk_A04.z = this->actor.world.pos.z - 200.0f;
this->subCamEye.y = (this->actor.world.pos.y - 200.0f) + 100.0f;
this->subCamEye.z = this->actor.world.pos.z - 200.0f;
this->unk_A10.x = this->actor.world.pos.x;
this->unk_A10.y = this->actor.world.pos.y + 80.0f;
this->unk_A10.z = this->actor.world.pos.z;
this->subCamAt.x = this->actor.world.pos.x;
this->subCamAt.y = this->actor.world.pos.y + 80.0f;
this->subCamAt.z = this->actor.world.pos.z;
}
} else {
this->unk_A10.z = this->actor.world.pos.z;
this->unk_A04.y = this->actor.world.pos.y + 60.0f;
this->unk_A04.x = this->actor.world.pos.x;
this->subCamEye.x = this->actor.world.pos.x;
this->subCamEye.y = this->actor.world.pos.y + 60.0f;
this->subCamEye.z = this->actor.world.pos.z - 210.0f;
this->unk_A04.z = this->actor.world.pos.z - 210.0f;
this->unk_A10.y = this->actor.world.pos.y + 80.0f;
this->unk_A10.x = this->actor.world.pos.x;
this->subCamAt.x = this->actor.world.pos.x;
this->subCamAt.y = this->actor.world.pos.y + 80.0f;
this->subCamAt.z = this->actor.world.pos.z;
}
break;
@@ -317,20 +317,20 @@ void func_809F24C8(Boss06* this, PlayState* play) {
child = this->actor.child;
if (this->unk_1CA == 1) {
this->unk_A1C.x = fabsf(this->unk_A10.x - child->world.pos.x);
this->unk_A1C.y = fabsf(this->unk_A10.y - child->world.pos.y);
this->unk_A1C.z = fabsf(this->unk_A10.z - child->world.pos.z);
this->unk_A1C.x = fabsf(this->subCamAt.x - child->world.pos.x);
this->unk_A1C.y = fabsf(this->subCamAt.y - child->world.pos.y);
this->unk_A1C.z = fabsf(this->subCamAt.z - child->world.pos.z);
}
Math_ApproachF(&this->unk_A10.x, child->world.pos.x, 0.15f, this->unk_A1C.x * this->unk_A28);
Math_ApproachF(&this->unk_A10.y, child->world.pos.y, 0.15f, this->unk_A1C.y * this->unk_A28);
Math_ApproachF(&this->unk_A10.z, child->world.pos.z, 0.15f, this->unk_A1C.z * this->unk_A28);
Math_ApproachF(&this->subCamAt.x, child->world.pos.x, 0.15f, this->unk_A1C.x * this->unk_A28);
Math_ApproachF(&this->subCamAt.y, child->world.pos.y, 0.15f, this->unk_A1C.y * this->unk_A28);
Math_ApproachF(&this->subCamAt.z, child->world.pos.z, 0.15f, this->unk_A1C.z * this->unk_A28);
Math_ApproachF(&this->unk_A28, 1.0f, 1.0f, 0.001f);
if (this->unk_1CA > 80) {
func_809F2ED0(this, play);
func_80169AFC(play, this->unk_A00, 0);
this->unk_A00 = 0;
func_80169AFC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
Cutscene_End(play, &play->csCtx);
func_800B7298(play, &this->actor, 6);
D_809F4970->unk_151 = 0;
@@ -338,9 +338,9 @@ void func_809F24C8(Boss06* this, PlayState* play) {
break;
}
if (this->unk_A00 != 0) {
if (this->subCamId != SUB_CAM_ID_DONE) {
ShrinkWindow_SetLetterboxTarget(27);
Play_CameraSetAtEye(play, this->unk_A00, &this->unk_A10, &this->unk_A04);
Play_CameraSetAtEye(play, this->subCamId, &this->subCamAt, &this->subCamEye);
}
}
#else
+3 -3
View File
@@ -42,9 +42,9 @@ typedef struct Boss06 {
/* 0x1FE */ u8 unk_1FE;
/* 0x1FF */ u8 unk_1FF;
/* 0x200 */ u8 unk_200[0x800];
/* 0xA00 */ s16 unk_A00;
/* 0xA04 */ Vec3f unk_A04;
/* 0xA10 */ Vec3f unk_A10;
/* 0xA00 */ s16 subCamId;
/* 0xA04 */ Vec3f subCamEye;
/* 0xA10 */ Vec3f subCamAt;
/* 0xA1C */ Vec3f unk_A1C;
/* 0xA28 */ f32 unk_A28;
/* 0xA2C */ f32 unk_A2C;
@@ -608,7 +608,7 @@ void func_808A1B48(DoorShutter* this, PlayState* play) {
Actor_SpawnFloorDustRing(play, &this->actor, &this->actor.world.pos, 45.0f, 10, 8.0f, 500, 10, 0);
}
Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_BIGWALL_BOUND);
quake = Quake_Add(Play_GetCamera(play, 0), 3);
quake = Quake_Add(Play_GetCamera(play, CAM_ID_MAIN), 3);
Quake_SetSpeed(quake, -32536);
Quake_SetQuakeValues(quake, 2, 0, 0, 0);
Quake_SetCountdown(quake, 10);
+2 -2
View File
@@ -332,7 +332,7 @@ s32 func_80BDE7FC(EnAl* this, PlayState* play) {
case 6:
case 8:
if ((this->actor.child != NULL) && (this->actor.child->update != NULL)) {
Camera_SetTargetActor(Play_GetCamera(play, ActorCutscene_GetCurrentCamera(sp2A)), this->actor.child);
Camera_SetTargetActor(Play_GetCamera(play, ActorCutscene_GetCurrentSubCamId(sp2A)), this->actor.child);
}
this->unk_4E6++;
sp20 = true;
@@ -342,7 +342,7 @@ s32 func_80BDE7FC(EnAl* this, PlayState* play) {
case 3:
case 5:
case 7:
Camera_SetTargetActor(Play_GetCamera(play, ActorCutscene_GetCurrentCamera(sp2A)), &this->actor);
Camera_SetTargetActor(Play_GetCamera(play, ActorCutscene_GetCurrentSubCamId(sp2A)), &this->actor);
this->unk_4E6++;
sp20 = true;
break;
+1 -1
View File
@@ -308,7 +308,7 @@ void EnAni_Update(Actor* thisx, PlayState* play) {
} else if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) {
ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, &this->actor);
this->actor.cutscene = ActorCutscene_GetAdditionalCutscene(this->actor.cutscene);
Camera_SetToTrackActor(Play_GetCamera(play, ActorCutscene_GetCurrentCamera(this->actor.cutscene)),
Camera_SetToTrackActor(Play_GetCamera(play, ActorCutscene_GetCurrentSubCamId(this->actor.cutscene)),
&this->actor);
} else {
ActorCutscene_SetIntentToPlay(this->actor.cutscene);
@@ -113,9 +113,9 @@ void EnBigokuta_Init(Actor* thisx, PlayState* play) {
EnBigokuta_SetupIdle(this);
}
this->camAt.x = (Math_SinS(this->actor.home.rot.y) * 66.0f) + this->actor.world.pos.x;
this->camAt.y = (this->actor.home.pos.y - 49.5f) + 42.899998f;
this->camAt.z = (Math_CosS(this->actor.home.rot.y) * 66.0f) + this->actor.world.pos.z;
this->subCamAt.x = (Math_SinS(this->actor.home.rot.y) * 66.0f) + this->actor.world.pos.x;
this->subCamAt.y = (this->actor.home.pos.y - 49.5f) + 42.899998f;
this->subCamAt.z = (Math_CosS(this->actor.home.rot.y) * 66.0f) + this->actor.world.pos.z;
this->unkFunc = func_80AC2B4C; // set but never called
}
@@ -127,40 +127,40 @@ void EnBigokuta_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyCylinder(play, &this->bodyCollider);
}
void EnBigokuta_SetupCutsceneCamera(EnBigokuta* this, PlayState* play, Vec3f* at, Vec3f* eye) {
void EnBigokuta_SetupCutsceneCamera(EnBigokuta* this, PlayState* play, Vec3f* subCamAt, Vec3f* subCamEye) {
s16 angle;
ActorCutscene_Start(this->actor.cutscene, &this->actor);
this->camId = ActorCutscene_GetCurrentCamera(this->actor.cutscene);
Play_CameraSetAtEye(play, this->camId, at, eye);
this->subCamId = ActorCutscene_GetCurrentSubCamId(this->actor.cutscene);
Play_CameraSetAtEye(play, this->subCamId, subCamAt, subCamEye);
angle = BINANG_SUB(Actor_YawToPoint(&this->actor, eye), this->actor.home.rot.y);
angle = BINANG_SUB(Actor_YawToPoint(&this->actor, subCamEye), this->actor.home.rot.y);
if (angle > 0) {
angle = BINANG_ADD(this->actor.home.rot.y, 0x1800);
} else {
angle = BINANG_SUB(this->actor.home.rot.y, 0x1800);
}
this->camEye.x = (Math_SinS(angle) * 250.0f) + this->camAt.x;
this->camEye.y = this->camAt.y + 100.0f;
this->camEye.z = (Math_CosS(angle) * 250.0f) + this->camAt.z;
this->subCamEye.x = (Math_SinS(angle) * 250.0f) + this->subCamAt.x;
this->subCamEye.y = this->subCamAt.y + 100.0f;
this->subCamEye.z = (Math_CosS(angle) * 250.0f) + this->subCamAt.z;
}
void EnBigokuta_MoveCamera(EnBigokuta* this, PlayState* play) {
Camera* camera = Play_GetCamera(play, this->camId);
Camera* subCam = Play_GetCamera(play, this->subCamId);
Math_Vec3f_StepTo(&camera->eye, &this->camEye, 20.0f);
Math_Vec3f_StepTo(&camera->at, &this->camAt, 20.0f);
Play_CameraSetAtEye(play, this->camId, &camera->at, &camera->eye);
Math_Vec3f_StepTo(&subCam->eye, &this->subCamEye, 20.0f);
Math_Vec3f_StepTo(&subCam->at, &this->subCamAt, 20.0f);
Play_CameraSetAtEye(play, this->subCamId, &subCam->at, &subCam->eye);
}
void EnBigokuta_ResetCamera(EnBigokuta* this, PlayState* play) {
Camera* camera;
Camera* subCam;
if (this->camId != 0) {
camera = Play_GetCamera(play, this->camId);
Play_CameraSetAtEye(play, 0, &camera->at, &camera->eye);
this->camId = 0;
if (this->subCamId != SUB_CAM_ID_DONE) {
subCam = Play_GetCamera(play, this->subCamId);
Play_CameraSetAtEye(play, CAM_ID_MAIN, &subCam->at, &subCam->eye);
this->subCamId = SUB_CAM_ID_DONE;
ActorCutscene_Stop(this->actor.cutscene);
}
}
@@ -267,12 +267,12 @@ void EnBigokuta_IdleAboveWater(EnBigokuta* this, PlayState* play) {
void EnBigokuta_UpdateOrSetupCam(EnBigokuta* this, PlayState* play) {
if (this->actor.cutscene != -1) {
if (this->camId != 0) {
if (this->subCamId != SUB_CAM_ID_DONE) {
EnBigokuta_MoveCamera(this, play);
} else if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) {
Camera* camera = Play_GetCamera(play, 0);
Camera* mainCam = Play_GetCamera(play, CAM_ID_MAIN);
EnBigokuta_SetupCutsceneCamera(this, play, &camera->at, &camera->eye);
EnBigokuta_SetupCutsceneCamera(this, play, &mainCam->at, &mainCam->eye);
} else {
ActorCutscene_SetIntentToPlay(this->actor.cutscene);
}
@@ -39,7 +39,7 @@ typedef struct EnBigokuta {
/* 0x18C */ EnBigokutaActionFunc actionFunc;
/* 0x190 */ u8 drawDmgEffType;
/* 0x192 */ s16 timer;
/* 0x194 */ s16 camId;
/* 0x194 */ s16 subCamId;
/* 0x196 */ s16 cutscene;
/* 0x198 */ Vec3s jointTable[BIGOKUTA_LIMB_MAX];
/* 0x210 */ Vec3s morphTable[BIGOKUTA_LIMB_MAX];
@@ -48,8 +48,8 @@ typedef struct EnBigokuta {
/* 0x290 */ f32 drawDmgEffFrozenSteamScale; // only affects DRAWEFFECT_ICE
/* 0x294 */ Vec3f playerPos;
/* 0x2A0 */ Vec3f playerHoldPos;
/* 0x2AC */ Vec3f camAt;
/* 0x2B8 */ Vec3f camEye;
/* 0x2AC */ Vec3f subCamAt;
/* 0x2B8 */ Vec3f subCamEye;
/* 0x2C4 */ Vec3f limbPos[13];
/* 0x360 */ ColliderCylinder shellCollider;
/* 0x3AC */ ColliderCylinder bodyCollider;
+10 -11
View File
@@ -271,14 +271,14 @@ void EnBigpo_UpdateSpin(EnBigpo* this) {
void EnBigpo_LowerCutsceneSubCamera(EnBigpo* this, PlayState* play) {
Camera* subCam;
if (this->cutsceneSubCamId != CAM_ID_MAIN) {
subCam = Play_GetCamera(play, this->cutsceneSubCamId);
if (this->subCamId != SUB_CAM_ID_DONE) {
subCam = Play_GetCamera(play, this->subCamId);
subCam->eye.y -= this->actor.velocity.y;
if (this->actor.velocity.y > 0.0f) {
subCam->eye.x -= 1.5f * Math_SinS(this->actor.yawTowardsPlayer);
subCam->eye.z -= 1.5f * Math_CosS(this->actor.yawTowardsPlayer);
}
Play_CameraSetAtEye(play, this->cutsceneSubCamId, &this->actor.focus.pos, &subCam->eye);
Play_CameraSetAtEye(play, this->subCamId, &this->actor.focus.pos, &subCam->eye);
}
}
@@ -303,7 +303,7 @@ void EnBigpo_WaitCutsceneQueue(EnBigpo* this, PlayState* play) {
if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) {
ActorCutscene_Start(this->actor.cutscene, &this->actor);
func_800B724C(play, &this->actor, 7);
this->cutsceneSubCamId = ActorCutscene_GetCurrentCamera(this->actor.cutscene);
this->subCamId = ActorCutscene_GetCurrentSubCamId(this->actor.cutscene);
if (this->actor.params == ENBIGPO_REGULAR) { // and SUMMONED, got switched earlier
EnBigpo_SpawnCutsceneStage1(this, play);
} else { // ENBIGPO_REVEALEDFIRE
@@ -332,13 +332,13 @@ void EnBigpo_SpawnCutsceneStage1(EnBigpo* this, PlayState* play) {
this->actor.scale.y = 0.015f;
this->actor.scale.z = 0.0f;
if (this->cutsceneSubCamId != CAM_ID_MAIN) {
if (this->subCamId != SUB_CAM_ID_DONE) {
Vec3f subCamEye;
subCamEye.x = ((this->actor.world.pos.x - this->fires[0].pos.x) * 1.8f) + this->actor.world.pos.x;
subCamEye.y = this->actor.world.pos.y + 150.0f;
subCamEye.z = ((this->actor.world.pos.z - this->fires[0].pos.z) * 1.8f) + this->actor.world.pos.z;
Play_CameraSetAtEye(play, this->cutsceneSubCamId, &this->actor.focus.pos, &subCamEye);
Play_CameraSetAtEye(play, this->subCamId, &this->actor.focus.pos, &subCamEye);
}
this->actionFunc = EnBigpo_SpawnCutsceneStage2;
}
@@ -459,9 +459,9 @@ void EnBigpo_SpawnCutsceneStage8(EnBigpo* this, PlayState* play) {
SkelAnime_Update(&this->skelAnime);
this->idleTimer--;
if (this->idleTimer == 0) {
subCam = Play_GetCamera(play, this->cutsceneSubCamId);
subCam = Play_GetCamera(play, this->subCamId);
Play_CameraSetAtEye(play, CAM_ID_MAIN, &subCam->at, &subCam->eye);
this->cutsceneSubCamId = CAM_ID_MAIN;
this->subCamId = SUB_CAM_ID_DONE;
if (this->actor.params == ENBIGPO_SUMMONED) {
dampe = SubS_FindActor(play, NULL, ACTORCAT_NPC, ACTOR_EN_TK);
if (dampe != NULL) {
@@ -953,12 +953,11 @@ void EnBigpo_SetupFlameCirclePositions(EnBigpo* this, PlayState* play) {
EnBigpo_SetupFlameCircleCutscene(firePo);
}
// Setup sub camera
if (this->cutsceneSubCamId != CAM_ID_MAIN) {
if (this->subCamId != SUB_CAM_ID_DONE) {
subCamEye.x = (Math_SinS(this->actor.yawTowardsPlayer) * 360.0f) + this->actor.world.pos.x;
subCamEye.y = this->actor.world.pos.y + 150.0f;
subCamEye.z = (Math_CosS(this->actor.yawTowardsPlayer) * 360.0f) + this->actor.world.pos.z;
Play_CameraSetAtEye(play, this->cutsceneSubCamId, &this->actor.focus.pos, &subCamEye);
Play_CameraSetAtEye(play, this->subCamId, &this->actor.focus.pos, &subCamEye);
}
this->actionFunc = EnBigpo_DoNothing;
@@ -35,7 +35,7 @@ typedef struct EnBigpo {
/* 0x208 */ s16 unk208; // facing rotY?
/* 0x20A */ s16 rotVelocity;
/* 0x20C */ s16 unk20C; // is this counting the number of frames the player is ztargeting them?
/* 0x20E */ s16 cutsceneSubCamId;
/* 0x20E */ s16 subCamId;
/* 0x210 */ s16 switchFlags;
/* 0x212 */ s16 hoverHeightCycleTimer; // sin wave up and down bobbing
/* 0x214 */ f32 fireRadius; // distance from center during conjunction cutscene

Some files were not shown because too many files have changed in this diff Show More