mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
Cleanup SubCameras (#936)
* Cleanup SubCameras * Add small bit of docs, remove comments * Fix merge from master, missed test7
This commit is contained in:
+2
-2
@@ -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);
|
||||
|
||||
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user