mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-03 22:44:30 +00:00
Document Sub-Cameras (#989)
* Copying SubCam Changes from PR 908, made it to the end of bosses * Finish copying over PR * format * More cleanup * clean-up * PR Suggestions, Clean-Up, Improvement in CS * Remove substructs from fd/fd2 * format * Improve fishing * minor fix * Make CutsceneCameraDir more general * `sActiveCamMove` -> `sCamMove` * Fix conflict with object kankyo * Add CAM_ID_MAIN to object_kankyo * Improve cam cutscenes further * Revert cutscene cmd names (better for a separate PR) * At -> LookAt in the context of Cutscenes * Missed naming in diving game * Format * Fill in Ganon2 Names (now that it's matching) * format * `sActiveCamId` -> `sReturnToCamId` * activeCamId -> returnToCamId * Discord Discussions * FIRST * Move macro to bottom, comments * More suggestions * PR suggestion, cleanup comment * Oops * add comments * Adjust comment * Change edge-case * whoops Co-authored-by: fig02 <fig02srl@gmail.com>
This commit is contained in:
parent
92aef346f2
commit
bf56c94f0f
143 changed files with 2778 additions and 2768 deletions
|
@ -1010,7 +1010,7 @@ void func_8002DE04(GlobalContext* globalCtx, Actor* actorA, Actor* actorB) {
|
|||
|
||||
void func_8002DE74(GlobalContext* globalCtx, Player* player) {
|
||||
if ((globalCtx->roomCtx.curRoom.unk_03 != 4) && func_800C0CB8(globalCtx)) {
|
||||
Camera_ChangeSetting(Gameplay_GetCamera(globalCtx, MAIN_CAM), CAM_SET_HORSE);
|
||||
Camera_ChangeSetting(Gameplay_GetCamera(globalCtx, CAM_ID_MAIN), CAM_SET_HORSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -722,7 +722,7 @@ void Camera_CopyDataToRegs(Camera* camera, s16 mode) {
|
|||
s32 i;
|
||||
|
||||
if (PREG(82)) {
|
||||
osSyncPrintf("camera: res: stat (%d/%d/%d)\n", camera->thisIdx, camera->setting, mode);
|
||||
osSyncPrintf("camera: res: stat (%d/%d/%d)\n", camera->camId, camera->setting, mode);
|
||||
}
|
||||
|
||||
values = sCameraSettings[camera->setting].cameraModes[mode].values;
|
||||
|
@ -3345,7 +3345,7 @@ s32 Camera_KeepOn3(Camera* camera) {
|
|||
if (RELOAD_PARAMS(camera)) {
|
||||
if (camera->globalCtx->view.unk_124 == 0) {
|
||||
camera->unk_14C |= 0x20;
|
||||
camera->globalCtx->view.unk_124 = camera->thisIdx | 0x50;
|
||||
camera->globalCtx->view.unk_124 = camera->camId | 0x50;
|
||||
return 1;
|
||||
}
|
||||
camera->unk_14C &= ~0x20;
|
||||
|
@ -3525,7 +3525,7 @@ s32 Camera_KeepOn4(Camera* camera) {
|
|||
if (camera->globalCtx->view.unk_124 == 0) {
|
||||
camera->unk_14C |= 0x20;
|
||||
camera->unk_14C &= ~(0x4 | 0x2);
|
||||
camera->globalCtx->view.unk_124 = camera->thisIdx | 0x50;
|
||||
camera->globalCtx->view.unk_124 = camera->camId | 0x50;
|
||||
return 1;
|
||||
}
|
||||
rwData->unk_14 = *temp_s0;
|
||||
|
@ -3538,7 +3538,7 @@ s32 Camera_KeepOn4(Camera* camera) {
|
|||
camera->animState = 20;
|
||||
camera->unk_14C |= 0x20;
|
||||
camera->unk_14C &= ~(0x4 | 0x2);
|
||||
camera->globalCtx->view.unk_124 = camera->thisIdx | 0x50;
|
||||
camera->globalCtx->view.unk_124 = camera->camId | 0x50;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -4205,7 +4205,7 @@ s32 Camera_Subj3(Camera* camera) {
|
|||
playerHeight = Player_GetHeight(camera->player);
|
||||
|
||||
if (camera->globalCtx->view.unk_124 == 0) {
|
||||
camera->globalCtx->view.unk_124 = camera->thisIdx | 0x50;
|
||||
camera->globalCtx->view.unk_124 = camera->camId | 0x50;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -4334,7 +4334,7 @@ s32 Camera_Subj4(Camera* camera) {
|
|||
}
|
||||
|
||||
if (camera->globalCtx->view.unk_124 == 0) {
|
||||
camera->globalCtx->view.unk_124 = (camera->thisIdx | 0x50);
|
||||
camera->globalCtx->view.unk_124 = (camera->camId | 0x50);
|
||||
rwData->unk_24 = camera->xzSpeed;
|
||||
return true;
|
||||
}
|
||||
|
@ -5137,7 +5137,7 @@ s32 Camera_Unique9(Camera* camera) {
|
|||
}
|
||||
} else {
|
||||
// We've gone through all the keyframes.
|
||||
if (camera->thisIdx != MAIN_CAM) {
|
||||
if (camera->camId != CAM_ID_MAIN) {
|
||||
camera->timer = 0;
|
||||
}
|
||||
return true;
|
||||
|
@ -5475,20 +5475,20 @@ s32 Camera_Unique9(Camera* camera) {
|
|||
break;
|
||||
case 19: {
|
||||
// Change the parent camera (or default)'s mode to normal
|
||||
s32 camIdx = camera->parentCamIdx <= SUBCAM_NONE ? MAIN_CAM : camera->parentCamIdx;
|
||||
s32 camIdx = camera->parentCamId <= CAM_ID_NONE ? CAM_ID_MAIN : camera->parentCamId;
|
||||
|
||||
Camera_ChangeModeFlags(camera->globalCtx->cameraPtrs[camIdx], CAM_MODE_NORMAL, 1);
|
||||
}
|
||||
case 18: {
|
||||
// copy the current camera to the parent (or default)'s camera.
|
||||
s32 camIdx = camera->parentCamIdx <= SUBCAM_NONE ? MAIN_CAM : camera->parentCamIdx;
|
||||
s32 camIdx = camera->parentCamId <= CAM_ID_NONE ? CAM_ID_MAIN : camera->parentCamId;
|
||||
Camera* cam = camera->globalCtx->cameraPtrs[camIdx];
|
||||
|
||||
*eye = *eyeNext;
|
||||
Camera_Copy(cam, camera);
|
||||
}
|
||||
default:
|
||||
if (camera->thisIdx != MAIN_CAM) {
|
||||
if (camera->camId != CAM_ID_MAIN) {
|
||||
camera->timer = 0;
|
||||
}
|
||||
}
|
||||
|
@ -5911,7 +5911,7 @@ s32 Camera_Demo5(Camera* camera) {
|
|||
D_8011D6AC[1].eyeTargetInit.x = Rand_ZeroOne() * 10.0f;
|
||||
ONEPOINT_CS_INFO(camera)->keyFrames = D_8011D6AC;
|
||||
ONEPOINT_CS_INFO(camera)->keyFrameCnt = ARRAY_COUNT(D_8011D6AC);
|
||||
if (camera->parentCamIdx != MAIN_CAM) {
|
||||
if (camera->parentCamId != CAM_ID_MAIN) {
|
||||
ONEPOINT_CS_INFO(camera)->keyFrameCnt--;
|
||||
} else {
|
||||
camera->timer += D_8011D6AC[2].timerInit;
|
||||
|
@ -5921,7 +5921,7 @@ s32 Camera_Demo5(Camera* camera) {
|
|||
D_8011D724[1].timerInit = camera->timer - 1;
|
||||
ONEPOINT_CS_INFO(camera)->keyFrames = D_8011D724;
|
||||
ONEPOINT_CS_INFO(camera)->keyFrameCnt = ARRAY_COUNT(D_8011D724);
|
||||
if (camera->parentCamIdx != MAIN_CAM) {
|
||||
if (camera->parentCamId != CAM_ID_MAIN) {
|
||||
ONEPOINT_CS_INFO(camera)->keyFrameCnt--;
|
||||
} else {
|
||||
camera->timer += D_8011D724[2].timerInit;
|
||||
|
@ -5944,7 +5944,7 @@ s32 Camera_Demo5(Camera* camera) {
|
|||
|
||||
D_8011D79C[1].timerInit = camera->timer - 1;
|
||||
|
||||
if (camera->parentCamIdx != MAIN_CAM) {
|
||||
if (camera->parentCamId != CAM_ID_MAIN) {
|
||||
ONEPOINT_CS_INFO(camera)->keyFrameCnt -= 2;
|
||||
} else {
|
||||
camera->timer += D_8011D79C[2].timerInit + D_8011D79C[3].timerInit;
|
||||
|
@ -5955,7 +5955,7 @@ s32 Camera_Demo5(Camera* camera) {
|
|||
D_8011D83C[0].timerInit = camera->timer;
|
||||
ONEPOINT_CS_INFO(camera)->keyFrames = D_8011D83C;
|
||||
ONEPOINT_CS_INFO(camera)->keyFrameCnt = ARRAY_COUNT(D_8011D83C);
|
||||
if (camera->parentCamIdx != MAIN_CAM) {
|
||||
if (camera->parentCamId != CAM_ID_MAIN) {
|
||||
ONEPOINT_CS_INFO(camera)->keyFrameCnt--;
|
||||
} else {
|
||||
camera->timer += D_8011D83C[1].timerInit;
|
||||
|
@ -5969,7 +5969,7 @@ s32 Camera_Demo5(Camera* camera) {
|
|||
D_8011D88C[0].timerInit = camera->timer;
|
||||
ONEPOINT_CS_INFO(camera)->keyFrames = D_8011D88C;
|
||||
ONEPOINT_CS_INFO(camera)->keyFrameCnt = ARRAY_COUNT(D_8011D88C);
|
||||
if (camera->parentCamIdx != MAIN_CAM) {
|
||||
if (camera->parentCamId != CAM_ID_MAIN) {
|
||||
ONEPOINT_CS_INFO(camera)->keyFrameCnt--;
|
||||
} else {
|
||||
camera->timer += D_8011D88C[1].timerInit;
|
||||
|
@ -5987,7 +5987,7 @@ s32 Camera_Demo5(Camera* camera) {
|
|||
D_8011D8DC[1].timerInit = (s16)(eyeTargetDist * 0.005f) + 8;
|
||||
ONEPOINT_CS_INFO(camera)->keyFrames = D_8011D8DC;
|
||||
ONEPOINT_CS_INFO(camera)->keyFrameCnt = ARRAY_COUNT(D_8011D8DC);
|
||||
if (camera->parentCamIdx != MAIN_CAM) {
|
||||
if (camera->parentCamId != CAM_ID_MAIN) {
|
||||
ONEPOINT_CS_INFO(camera)->keyFrameCnt -= 2;
|
||||
} else {
|
||||
camera->timer += D_8011D8DC[1].timerInit + D_8011D8DC[2].timerInit;
|
||||
|
@ -6024,7 +6024,7 @@ s32 Camera_Demo5(Camera* camera) {
|
|||
}
|
||||
ONEPOINT_CS_INFO(camera)->keyFrames = D_8011D954;
|
||||
ONEPOINT_CS_INFO(camera)->keyFrameCnt = ARRAY_COUNT(D_8011D954);
|
||||
if (camera->parentCamIdx != MAIN_CAM) {
|
||||
if (camera->parentCamId != CAM_ID_MAIN) {
|
||||
ONEPOINT_CS_INFO(camera)->keyFrameCnt -= 2;
|
||||
} else {
|
||||
camera->timer += D_8011D954[2].timerInit + D_8011D954[3].timerInit;
|
||||
|
@ -6049,7 +6049,7 @@ s32 Camera_Demo5(Camera* camera) {
|
|||
}
|
||||
ONEPOINT_CS_INFO(camera)->keyFrames = D_8011D9F4;
|
||||
ONEPOINT_CS_INFO(camera)->keyFrameCnt = ARRAY_COUNT(D_8011D9F4);
|
||||
if (camera->parentCamIdx != MAIN_CAM) {
|
||||
if (camera->parentCamId != CAM_ID_MAIN) {
|
||||
if (camera->globalCtx->state.frames & 1) {
|
||||
D_8011D9F4[0].rollTargetInit = -D_8011D9F4[0].rollTargetInit;
|
||||
D_8011D9F4[1].rollTargetInit = -D_8011D9F4[1].rollTargetInit;
|
||||
|
@ -6111,7 +6111,7 @@ s32 Camera_Demo6(Camera* camera) {
|
|||
s16 stateTimers[4];
|
||||
Demo6ReadWriteData* rwData = &camera->paramData.demo6.rwData;
|
||||
|
||||
mainCam = Gameplay_GetCamera(camera->globalCtx, MAIN_CAM);
|
||||
mainCam = Gameplay_GetCamera(camera->globalCtx, CAM_ID_MAIN);
|
||||
camFocus = camera->target;
|
||||
stateTimers[1] = 0x37;
|
||||
stateTimers[2] = 0x46;
|
||||
|
@ -6216,7 +6216,7 @@ s32 Camera_Demo9(Camera* camera) {
|
|||
f32* camFOV = &camera->fov;
|
||||
Demo9ReadWriteData* rwData = &camera->paramData.demo9.rwData;
|
||||
|
||||
mainCam = Gameplay_GetCamera(camera->globalCtx, MAIN_CAM);
|
||||
mainCam = Gameplay_GetCamera(camera->globalCtx, CAM_ID_MAIN);
|
||||
mainCamPlayerPosRot = &mainCam->playerPosRot;
|
||||
if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) {
|
||||
values = sCameraSettings[camera->setting].cameraModes[camera->mode].values;
|
||||
|
@ -6306,7 +6306,7 @@ s32 Camera_Demo9(Camera* camera) {
|
|||
if (rwData->finishAction == 0x2000) {
|
||||
// finish action = 0x2000, run OnePointCs 0x3FC (Dramatic Return to Link)
|
||||
onePointTimer = onePointCamData->initTimer < 50 ? 5 : onePointCamData->initTimer / 5;
|
||||
OnePointCutscene_Init(camera->globalCtx, 1020, onePointTimer, NULL, camera->parentCamIdx);
|
||||
OnePointCutscene_Init(camera->globalCtx, 1020, onePointTimer, NULL, camera->parentCamId);
|
||||
}
|
||||
} else {
|
||||
// finish action = 0x1000, copy the current camera's values to the
|
||||
|
@ -7019,7 +7019,7 @@ void Camera_InitPlayerSettings(Camera* camera, Player* player) {
|
|||
Camera_QRegInit();
|
||||
osSyncPrintf(VT_FGCOL(BLUE) "camera: personalize ---" VT_RST "\n");
|
||||
|
||||
if (camera->thisIdx == MAIN_CAM) {
|
||||
if (camera->camId == CAM_ID_MAIN) {
|
||||
Camera_UpdateWater(camera);
|
||||
}
|
||||
}
|
||||
|
@ -7035,7 +7035,7 @@ s16 Camera_ChangeStatus(Camera* camera, s16 status) {
|
|||
}
|
||||
|
||||
if (PREG(82)) {
|
||||
osSyncPrintf("camera: res: stat (%d/%d/%d)\n", camera->thisIdx, camera->setting, camera->mode);
|
||||
osSyncPrintf("camera: res: stat (%d/%d/%d)\n", camera->camId, camera->setting, camera->mode);
|
||||
}
|
||||
|
||||
if (status == CAM_STAT_ACTIVE && camera->status != CAM_STAT_ACTIVE) {
|
||||
|
@ -7058,7 +7058,7 @@ void Camera_PrintSettings(Camera* camera) {
|
|||
char sp48[8];
|
||||
s32 i;
|
||||
|
||||
if ((OREG(0) & 1) && (camera->globalCtx->activeCamera == camera->thisIdx) && !gDbgCamEnabled) {
|
||||
if ((OREG(0) & 1) && (camera->globalCtx->activeCamId == camera->camId) && !gDbgCamEnabled) {
|
||||
for (i = 0; i < NUM_CAMS; i++) {
|
||||
if (camera->globalCtx->cameraPtrs[i] == NULL) {
|
||||
sp58[i] = '-';
|
||||
|
@ -7090,7 +7090,7 @@ void Camera_PrintSettings(Camera* camera) {
|
|||
sp58[i] = '\0';
|
||||
sp48[i] = '\0';
|
||||
|
||||
sp48[camera->globalCtx->activeCamera] = 'a';
|
||||
sp48[camera->globalCtx->activeCamId] = 'a';
|
||||
func_8006376C(3, 0x16, 5, sp58);
|
||||
func_8006376C(3, 0x16, 1, sp48);
|
||||
func_8006376C(3, 0x17, 5, "S:");
|
||||
|
@ -7260,7 +7260,7 @@ s32 Camera_UpdateHotRoom(Camera* camera) {
|
|||
s32 Camera_DbgChangeMode(Camera* camera) {
|
||||
s32 changeDir = 0;
|
||||
|
||||
if (!gDbgCamEnabled && camera->globalCtx->activeCamera == MAIN_CAM) {
|
||||
if (!gDbgCamEnabled && camera->globalCtx->activeCamId == CAM_ID_MAIN) {
|
||||
if (CHECK_BTN_ALL(D_8015BD7C->state.input[2].press.button, BTN_CUP)) {
|
||||
osSyncPrintf("attention sound URGENCY\n");
|
||||
func_80078884(NA_SE_SY_ATTENTION_URGENCY);
|
||||
|
@ -7387,7 +7387,7 @@ Vec3s Camera_Update(Camera* camera) {
|
|||
QuakeCamCalc quake;
|
||||
Player* player;
|
||||
|
||||
player = camera->globalCtx->cameraPtrs[MAIN_CAM]->player;
|
||||
player = camera->globalCtx->cameraPtrs[CAM_ID_MAIN]->player;
|
||||
|
||||
if (R_DBG_CAM_UPDATE) {
|
||||
osSyncPrintf("camera: in %x\n", camera);
|
||||
|
@ -7494,7 +7494,7 @@ Vec3s Camera_Update(Camera* camera) {
|
|||
if ((gSaveContext.gameMode != 0) && (gSaveContext.gameMode != 3)) {
|
||||
sCameraInterfaceFlags = 0;
|
||||
Camera_UpdateInterface(sCameraInterfaceFlags);
|
||||
} else if ((D_8011D3F0 != 0) && (camera->thisIdx == MAIN_CAM)) {
|
||||
} else if ((D_8011D3F0 != 0) && (camera->camId == CAM_ID_MAIN)) {
|
||||
D_8011D3F0--;
|
||||
sCameraInterfaceFlags = 0x3200;
|
||||
Camera_UpdateInterface(sCameraInterfaceFlags);
|
||||
|
@ -7626,13 +7626,13 @@ Vec3s Camera_Update(Camera* camera) {
|
|||
* When the camera's timer is 0, change the camera to its parent
|
||||
*/
|
||||
void Camera_Finish(Camera* camera) {
|
||||
Camera* mainCam = camera->globalCtx->cameraPtrs[MAIN_CAM];
|
||||
Camera* mainCam = camera->globalCtx->cameraPtrs[CAM_ID_MAIN];
|
||||
Player* player = GET_PLAYER(camera->globalCtx);
|
||||
|
||||
if (camera->timer == 0) {
|
||||
Gameplay_ChangeCameraStatus(camera->globalCtx, camera->parentCamIdx, CAM_STAT_ACTIVE);
|
||||
Gameplay_ChangeCameraStatus(camera->globalCtx, camera->parentCamId, CAM_STAT_ACTIVE);
|
||||
|
||||
if ((camera->parentCamIdx == MAIN_CAM) && (camera->csId != 0)) {
|
||||
if ((camera->parentCamId == CAM_ID_MAIN) && (camera->csId != 0)) {
|
||||
player->actor.freezeTimer = 0;
|
||||
player->stateFlags1 &= ~PLAYER_STATE1_29;
|
||||
|
||||
|
@ -7644,23 +7644,23 @@ void Camera_Finish(Camera* camera) {
|
|||
mainCam->unk_14C |= 8;
|
||||
}
|
||||
|
||||
if (CHILD_CAM(camera)->parentCamIdx == camera->thisIdx) {
|
||||
CHILD_CAM(camera)->parentCamIdx = camera->parentCamIdx;
|
||||
if (CHILD_CAM(camera)->parentCamId == camera->camId) {
|
||||
CHILD_CAM(camera)->parentCamId = camera->parentCamId;
|
||||
}
|
||||
|
||||
if (PARENT_CAM(camera)->childCamIdx == camera->thisIdx) {
|
||||
PARENT_CAM(camera)->childCamIdx = camera->childCamIdx;
|
||||
if (PARENT_CAM(camera)->childCamId == camera->camId) {
|
||||
PARENT_CAM(camera)->childCamId = camera->childCamId;
|
||||
}
|
||||
|
||||
if (PARENT_CAM(camera)->thisIdx == MAIN_CAM) {
|
||||
if (PARENT_CAM(camera)->camId == CAM_ID_MAIN) {
|
||||
PARENT_CAM(camera)->animState = 0;
|
||||
}
|
||||
|
||||
camera->childCamIdx = camera->parentCamIdx = SUBCAM_FREE;
|
||||
camera->childCamId = camera->parentCamId = CAM_ID_MAIN;
|
||||
camera->timer = -1;
|
||||
camera->globalCtx->envCtx.fillScreen = false;
|
||||
|
||||
Gameplay_ClearCamera(camera->globalCtx, camera->thisIdx);
|
||||
Gameplay_ClearCamera(camera->globalCtx, camera->camId);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7871,7 +7871,7 @@ s16 Camera_ChangeSettingFlags(Camera* camera, s16 setting, s16 flags) {
|
|||
}
|
||||
|
||||
osSyncPrintf(VT_SGR("1") "%06u:" VT_RST " camera: change camera[%d] set %s\n", camera->globalCtx->state.frames,
|
||||
camera->thisIdx, sCameraSettingNames[camera->setting]);
|
||||
camera->camId, sCameraSettingNames[camera->setting]);
|
||||
|
||||
return setting;
|
||||
}
|
||||
|
@ -7901,7 +7901,7 @@ s32 Camera_ChangeDataIdx(Camera* camera, s32 camDataIdx) {
|
|||
//! @bug: This is likely checking the wrong value. The actual return of Camera_ChangeSettingFlags or
|
||||
// camDataIdx would make more sense.
|
||||
osSyncPrintf(VT_COL(RED, WHITE) "camera: error: illegal camera ID (%d) !! (%d|%d|%d)\n" VT_RST, camDataIdx,
|
||||
camera->thisIdx, 0x32, newCameraSetting);
|
||||
camera->camId, 0x32, newCameraSetting);
|
||||
}
|
||||
return 0x80000000 | camDataIdx;
|
||||
}
|
||||
|
@ -8197,10 +8197,10 @@ s32 func_8005B198(void) {
|
|||
s16 func_8005B1A4(Camera* camera) {
|
||||
camera->unk_14C |= 0x8;
|
||||
|
||||
if ((camera->thisIdx == MAIN_CAM) && (camera->globalCtx->activeCamera != MAIN_CAM)) {
|
||||
if ((camera->camId == CAM_ID_MAIN) && (camera->globalCtx->activeCamId != CAM_ID_MAIN)) {
|
||||
GET_ACTIVE_CAM(camera->globalCtx)->unk_14C |= 0x8;
|
||||
return camera->globalCtx->activeCamera;
|
||||
return camera->globalCtx->activeCamId;
|
||||
}
|
||||
|
||||
return camera->thisIdx;
|
||||
return camera->camId;
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ void* D_8011E304[] = {
|
|||
u16 D_8015FCC0;
|
||||
u16 D_8015FCC2;
|
||||
u16 D_8015FCC4;
|
||||
s16 D_8015FCC6;
|
||||
s16 sReturnToCamId;
|
||||
u8 D_8015FCC8;
|
||||
s16 sQuakeIndex;
|
||||
u16 D_8015FCCC; // only written to, never read
|
||||
|
@ -1330,8 +1330,8 @@ void Cutscene_Command_TransitionFX(GlobalContext* globalCtx, CutsceneContext* cs
|
|||
}
|
||||
}
|
||||
|
||||
// Command 0x1 & 0x5: Camera Positions
|
||||
s32 Cutscene_Command_CameraPositions(GlobalContext* globalCtx, CutsceneContext* csCtx, u8* cmd, u8 relativeToLink) {
|
||||
// Command 0x1 & 0x5: Camera Eye Points
|
||||
s32 Cutscene_Command_CameraEyePoints(GlobalContext* globalCtx, CutsceneContext* csCtx, u8* cmd, u8 relativeToLink) {
|
||||
s32 shouldContinue = 1;
|
||||
CsCmdBase* cmdBase = (CsCmdBase*)cmd;
|
||||
s32 size;
|
||||
|
@ -1342,16 +1342,16 @@ s32 Cutscene_Command_CameraPositions(GlobalContext* globalCtx, CutsceneContext*
|
|||
if ((cmdBase->startFrame < csCtx->frames) && (csCtx->frames < cmdBase->endFrame) &&
|
||||
((csCtx->unk_18 < cmdBase->startFrame) || (csCtx->unk_18 >= 0xF000))) {
|
||||
csCtx->unk_1B = 1;
|
||||
csCtx->cameraPosition = (CutsceneCameraPoint*)cmd;
|
||||
csCtx->subCamEyePoints = (CutsceneCameraPoint*)cmd;
|
||||
if (csCtx->unk_1A != 0) {
|
||||
csCtx->unk_18 = cmdBase->startFrame;
|
||||
if (D_8015FCC8 != 0) {
|
||||
Gameplay_CameraChangeSetting(globalCtx, csCtx->unk_14, CAM_SET_CS_0);
|
||||
Gameplay_ChangeCameraStatus(globalCtx, D_8015FCC6, CAM_STAT_WAIT);
|
||||
Gameplay_ChangeCameraStatus(globalCtx, csCtx->unk_14, CAM_STAT_ACTIVE);
|
||||
Camera_ResetAnim(Gameplay_GetCamera(globalCtx, csCtx->unk_14));
|
||||
Camera_SetCSParams(Gameplay_GetCamera(globalCtx, csCtx->unk_14), csCtx->cameraFocus,
|
||||
csCtx->cameraPosition, GET_PLAYER(globalCtx), relativeToLink);
|
||||
Gameplay_CameraChangeSetting(globalCtx, csCtx->subCamId, CAM_SET_CS_0);
|
||||
Gameplay_ChangeCameraStatus(globalCtx, sReturnToCamId, CAM_STAT_WAIT);
|
||||
Gameplay_ChangeCameraStatus(globalCtx, csCtx->subCamId, CAM_STAT_ACTIVE);
|
||||
Camera_ResetAnim(Gameplay_GetCamera(globalCtx, csCtx->subCamId));
|
||||
Camera_SetCSParams(Gameplay_GetCamera(globalCtx, csCtx->subCamId), csCtx->subCamLookAtPoints,
|
||||
csCtx->subCamEyePoints, GET_PLAYER(globalCtx), relativeToLink);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1367,8 +1367,8 @@ s32 Cutscene_Command_CameraPositions(GlobalContext* globalCtx, CutsceneContext*
|
|||
return size;
|
||||
}
|
||||
|
||||
// Command 0x2 & 0x6: Camera Focus Points
|
||||
s32 Cutscene_Command_CameraFocus(GlobalContext* globalCtx, CutsceneContext* csCtx, u8* cmd, u8 relativeToLink) {
|
||||
// Command 0x2 & 0x6: Camera At Points
|
||||
s32 Cutscene_Command_CameraLookAtPoints(GlobalContext* globalCtx, CutsceneContext* csCtx, u8* cmd, u8 relativeToLink) {
|
||||
s32 shouldContinue = 1;
|
||||
CsCmdBase* cmdBase = (CsCmdBase*)cmd;
|
||||
s32 size;
|
||||
|
@ -1379,16 +1379,16 @@ s32 Cutscene_Command_CameraFocus(GlobalContext* globalCtx, CutsceneContext* csCt
|
|||
if ((cmdBase->startFrame < csCtx->frames) && (csCtx->frames < cmdBase->endFrame) &&
|
||||
((D_8015FCC0 < cmdBase->startFrame) || (D_8015FCC0 >= 0xF000))) {
|
||||
csCtx->unk_1A = 1;
|
||||
csCtx->cameraFocus = (CutsceneCameraPoint*)cmd;
|
||||
csCtx->subCamLookAtPoints = (CutsceneCameraPoint*)cmd;
|
||||
if (csCtx->unk_1B != 0) {
|
||||
D_8015FCC0 = cmdBase->startFrame;
|
||||
if (D_8015FCC8 != 0) {
|
||||
Gameplay_CameraChangeSetting(globalCtx, csCtx->unk_14, CAM_SET_CS_0);
|
||||
Gameplay_ChangeCameraStatus(globalCtx, D_8015FCC6, CAM_STAT_WAIT);
|
||||
Gameplay_ChangeCameraStatus(globalCtx, csCtx->unk_14, CAM_STAT_ACTIVE);
|
||||
Camera_ResetAnim(Gameplay_GetCamera(globalCtx, csCtx->unk_14));
|
||||
Camera_SetCSParams(Gameplay_GetCamera(globalCtx, csCtx->unk_14), csCtx->cameraFocus,
|
||||
csCtx->cameraPosition, GET_PLAYER(globalCtx), relativeToLink);
|
||||
Gameplay_CameraChangeSetting(globalCtx, csCtx->subCamId, CAM_SET_CS_0);
|
||||
Gameplay_ChangeCameraStatus(globalCtx, sReturnToCamId, CAM_STAT_WAIT);
|
||||
Gameplay_ChangeCameraStatus(globalCtx, csCtx->subCamId, CAM_STAT_ACTIVE);
|
||||
Camera_ResetAnim(Gameplay_GetCamera(globalCtx, csCtx->subCamId));
|
||||
Camera_SetCSParams(Gameplay_GetCamera(globalCtx, csCtx->subCamId), csCtx->subCamLookAtPoints,
|
||||
csCtx->subCamEyePoints, GET_PLAYER(globalCtx), relativeToLink);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1410,7 +1410,7 @@ s32 Cutscene_Command_07(GlobalContext* globalCtx, CutsceneContext* csCtx, u8* cm
|
|||
s32 size;
|
||||
Vec3f sp3C;
|
||||
Vec3f sp30;
|
||||
Camera* sp2C;
|
||||
Camera* subCam;
|
||||
f32 sp28;
|
||||
|
||||
cmd += 8;
|
||||
|
@ -1419,25 +1419,25 @@ s32 Cutscene_Command_07(GlobalContext* globalCtx, CutsceneContext* csCtx, u8* cm
|
|||
if ((cmdBase->startFrame < csCtx->frames) && (csCtx->frames < cmdBase->endFrame) &&
|
||||
((D_8015FCC2 < cmdBase->startFrame) || (D_8015FCC2 >= 0xF000))) {
|
||||
csCtx->unk_1B = 1;
|
||||
csCtx->cameraPosition = (CutsceneCameraPoint*)cmd;
|
||||
csCtx->subCamEyePoints = (CutsceneCameraPoint*)cmd;
|
||||
if (csCtx->unk_1A != 0) {
|
||||
D_8015FCC2 = cmdBase->startFrame;
|
||||
if (D_8015FCC8 != 0) {
|
||||
sp2C = Gameplay_GetCamera(globalCtx, csCtx->unk_14);
|
||||
sp2C->player = NULL;
|
||||
Gameplay_ChangeCameraStatus(globalCtx, MAIN_CAM, CAM_STAT_WAIT);
|
||||
Gameplay_ChangeCameraStatus(globalCtx, csCtx->unk_14, CAM_STAT_ACTIVE);
|
||||
Gameplay_CameraChangeSetting(globalCtx, csCtx->unk_14, CAM_SET_FREE0);
|
||||
sp28 = csCtx->cameraFocus->cameraRoll * 1.40625f;
|
||||
Camera_SetParam(sp2C, 64, &sp28);
|
||||
sp3C.x = csCtx->cameraFocus->pos.x;
|
||||
sp3C.y = csCtx->cameraFocus->pos.y;
|
||||
sp3C.z = csCtx->cameraFocus->pos.z;
|
||||
sp30.x = csCtx->cameraPosition->pos.x;
|
||||
sp30.y = csCtx->cameraPosition->pos.y;
|
||||
sp30.z = csCtx->cameraPosition->pos.z;
|
||||
Gameplay_CameraSetAtEye(globalCtx, csCtx->unk_14, &sp3C, &sp30);
|
||||
Gameplay_CameraSetFov(globalCtx, csCtx->unk_14, csCtx->cameraPosition->viewAngle);
|
||||
subCam = Gameplay_GetCamera(globalCtx, csCtx->subCamId);
|
||||
subCam->player = NULL;
|
||||
Gameplay_ChangeCameraStatus(globalCtx, CAM_ID_MAIN, CAM_STAT_WAIT);
|
||||
Gameplay_ChangeCameraStatus(globalCtx, csCtx->subCamId, CAM_STAT_ACTIVE);
|
||||
Gameplay_CameraChangeSetting(globalCtx, csCtx->subCamId, CAM_SET_FREE0);
|
||||
sp28 = csCtx->subCamLookAtPoints->cameraRoll * 1.40625f;
|
||||
Camera_SetParam(subCam, 64, &sp28);
|
||||
sp3C.x = csCtx->subCamLookAtPoints->pos.x;
|
||||
sp3C.y = csCtx->subCamLookAtPoints->pos.y;
|
||||
sp3C.z = csCtx->subCamLookAtPoints->pos.z;
|
||||
sp30.x = csCtx->subCamEyePoints->pos.x;
|
||||
sp30.y = csCtx->subCamEyePoints->pos.y;
|
||||
sp30.z = csCtx->subCamEyePoints->pos.z;
|
||||
Gameplay_CameraSetAtEye(globalCtx, csCtx->subCamId, &sp3C, &sp30);
|
||||
Gameplay_CameraSetFov(globalCtx, csCtx->subCamId, csCtx->subCamEyePoints->viewAngle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1453,7 +1453,7 @@ s32 Cutscene_Command_08(GlobalContext* globalCtx, CutsceneContext* csCtx, u8* cm
|
|||
s32 size;
|
||||
Vec3f sp3C;
|
||||
Vec3f sp30;
|
||||
Camera* sp2C;
|
||||
Camera* subCam;
|
||||
f32 sp28;
|
||||
|
||||
cmd += 8;
|
||||
|
@ -1462,23 +1462,23 @@ s32 Cutscene_Command_08(GlobalContext* globalCtx, CutsceneContext* csCtx, u8* cm
|
|||
if ((cmdBase->startFrame < csCtx->frames) && (csCtx->frames < cmdBase->endFrame) &&
|
||||
((D_8015FCC4 < cmdBase->startFrame) || (D_8015FCC4 >= 0xF000))) {
|
||||
csCtx->unk_1A = 1;
|
||||
csCtx->cameraFocus = (CutsceneCameraPoint*)cmd;
|
||||
csCtx->subCamLookAtPoints = (CutsceneCameraPoint*)cmd;
|
||||
if (csCtx->unk_1B != 0) {
|
||||
D_8015FCC4 = cmdBase->startFrame;
|
||||
if (D_8015FCC8 != 0) {
|
||||
sp2C = Gameplay_GetCamera(globalCtx, csCtx->unk_14);
|
||||
sp2C->player = NULL;
|
||||
Gameplay_ChangeCameraStatus(globalCtx, MAIN_CAM, CAM_STAT_WAIT);
|
||||
Gameplay_ChangeCameraStatus(globalCtx, csCtx->unk_14, CAM_STAT_ACTIVE);
|
||||
Gameplay_CameraChangeSetting(globalCtx, csCtx->unk_14, CAM_SET_FREE0);
|
||||
sp3C.x = csCtx->cameraFocus->pos.x;
|
||||
sp3C.y = csCtx->cameraFocus->pos.y;
|
||||
sp3C.z = csCtx->cameraFocus->pos.z;
|
||||
sp30.x = csCtx->cameraPosition->pos.x;
|
||||
sp30.y = csCtx->cameraPosition->pos.y;
|
||||
sp30.z = csCtx->cameraPosition->pos.z;
|
||||
Gameplay_CameraSetAtEye(globalCtx, csCtx->unk_14, &sp3C, &sp30);
|
||||
Gameplay_CameraSetFov(globalCtx, csCtx->unk_14, csCtx->cameraPosition->viewAngle);
|
||||
subCam = Gameplay_GetCamera(globalCtx, csCtx->subCamId);
|
||||
subCam->player = NULL;
|
||||
Gameplay_ChangeCameraStatus(globalCtx, CAM_ID_MAIN, CAM_STAT_WAIT);
|
||||
Gameplay_ChangeCameraStatus(globalCtx, csCtx->subCamId, CAM_STAT_ACTIVE);
|
||||
Gameplay_CameraChangeSetting(globalCtx, csCtx->subCamId, CAM_SET_FREE0);
|
||||
sp3C.x = csCtx->subCamLookAtPoints->pos.x;
|
||||
sp3C.y = csCtx->subCamLookAtPoints->pos.y;
|
||||
sp3C.z = csCtx->subCamLookAtPoints->pos.z;
|
||||
sp30.x = csCtx->subCamEyePoints->pos.x;
|
||||
sp30.y = csCtx->subCamEyePoints->pos.y;
|
||||
sp30.z = csCtx->subCamEyePoints->pos.z;
|
||||
Gameplay_CameraSetAtEye(globalCtx, csCtx->subCamId, &sp3C, &sp30);
|
||||
Gameplay_CameraSetFov(globalCtx, csCtx->subCamId, csCtx->subCamEyePoints->viewAngle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1859,16 +1859,16 @@ void Cutscene_ProcessCommands(GlobalContext* globalCtx, CutsceneContext* csCtx,
|
|||
}
|
||||
break;
|
||||
case CS_CMD_CAM_EYE:
|
||||
cutscenePtr += Cutscene_Command_CameraPositions(globalCtx, csCtx, (void*)cutscenePtr, 0);
|
||||
cutscenePtr += Cutscene_Command_CameraEyePoints(globalCtx, csCtx, (void*)cutscenePtr, 0);
|
||||
break;
|
||||
case CS_CMD_CAM_EYE_REL_TO_PLAYER:
|
||||
cutscenePtr += Cutscene_Command_CameraPositions(globalCtx, csCtx, (void*)cutscenePtr, 1);
|
||||
cutscenePtr += Cutscene_Command_CameraEyePoints(globalCtx, csCtx, (void*)cutscenePtr, 1);
|
||||
break;
|
||||
case CS_CMD_CAM_AT:
|
||||
cutscenePtr += Cutscene_Command_CameraFocus(globalCtx, csCtx, (void*)cutscenePtr, 0);
|
||||
cutscenePtr += Cutscene_Command_CameraLookAtPoints(globalCtx, csCtx, (void*)cutscenePtr, 0);
|
||||
break;
|
||||
case CS_CMD_CAM_AT_REL_TO_PLAYER:
|
||||
cutscenePtr += Cutscene_Command_CameraFocus(globalCtx, csCtx, (void*)cutscenePtr, 1);
|
||||
cutscenePtr += Cutscene_Command_CameraLookAtPoints(globalCtx, csCtx, (void*)cutscenePtr, 1);
|
||||
break;
|
||||
case CS_CMD_07:
|
||||
cutscenePtr += Cutscene_Command_07(globalCtx, csCtx, (void*)cutscenePtr, 0);
|
||||
|
@ -1967,12 +1967,12 @@ void func_80068DC0(GlobalContext* globalCtx, CutsceneContext* csCtx) {
|
|||
case 0x028E:
|
||||
case 0x0292:
|
||||
case 0x0476:
|
||||
Gameplay_CopyCamera(globalCtx, D_8015FCC6, csCtx->unk_14);
|
||||
Gameplay_CopyCamera(globalCtx, sReturnToCamId, csCtx->subCamId);
|
||||
}
|
||||
|
||||
Gameplay_ChangeCameraStatus(globalCtx, D_8015FCC6, CAM_STAT_ACTIVE);
|
||||
Gameplay_ClearCamera(globalCtx, csCtx->unk_14);
|
||||
func_8005B1A4(globalCtx->cameraPtrs[D_8015FCC6]);
|
||||
Gameplay_ChangeCameraStatus(globalCtx, sReturnToCamId, CAM_STAT_ACTIVE);
|
||||
Gameplay_ClearCamera(globalCtx, csCtx->subCamId);
|
||||
func_8005B1A4(globalCtx->cameraPtrs[sReturnToCamId]);
|
||||
}
|
||||
|
||||
Audio_SetCutsceneFlag(0);
|
||||
|
@ -2011,10 +2011,10 @@ void func_80068ECC(GlobalContext* globalCtx, CutsceneContext* csCtx) {
|
|||
D_8015FCC4 = 0xFFFF;
|
||||
csCtx->unk_1A = 0;
|
||||
csCtx->unk_1B = 0;
|
||||
D_8015FCC6 = globalCtx->activeCamera;
|
||||
sReturnToCamId = globalCtx->activeCamId;
|
||||
|
||||
if (D_8015FCC8 != 0) {
|
||||
csCtx->unk_14 = Gameplay_CreateSubCamera(globalCtx);
|
||||
csCtx->subCamId = Gameplay_CreateSubCamera(globalCtx);
|
||||
}
|
||||
|
||||
if (gSaveContext.cutsceneTrigger == 0) {
|
||||
|
|
|
@ -223,7 +223,7 @@ void func_8006D684(GlobalContext* globalCtx, Player* player) {
|
|||
sp54.y = player->actor.world.pos.y + 100.0f;
|
||||
sp54.z = player->actor.world.pos.z;
|
||||
|
||||
Gameplay_CameraSetAtEye(globalCtx, globalCtx->activeCamera, &player->actor.world.pos, &sp54);
|
||||
Gameplay_CameraSetAtEye(globalCtx, globalCtx->activeCamId, &player->actor.world.pos, &sp54);
|
||||
} else {
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_HORSE, D_8011F9B8[i].pos.x,
|
||||
D_8011F9B8[i].pos.y, D_8011F9B8[i].pos.z, 0, D_8011F9B8[i].angle, 0,
|
||||
|
|
|
@ -3275,13 +3275,13 @@ void Message_Update(GlobalContext* globalCtx) {
|
|||
}
|
||||
if (globalCtx->csCtx.state == 0) {
|
||||
osSyncPrintf(VT_FGCOL(GREEN));
|
||||
osSyncPrintf("day_time=%x active_camera=%d ", gSaveContext.cutsceneIndex, globalCtx->activeCamera);
|
||||
osSyncPrintf("day_time=%x active_camera=%d ", gSaveContext.cutsceneIndex, globalCtx->activeCamId);
|
||||
|
||||
if (msgCtx->textId != 0x2061 && msgCtx->textId != 0x2025 && msgCtx->textId != 0x208C &&
|
||||
((msgCtx->textId < 0x88D || msgCtx->textId >= 0x893) || msgCtx->choiceIndex != 0) &&
|
||||
(msgCtx->textId != 0x3055 && gSaveContext.cutsceneIndex < 0xFFF0)) {
|
||||
osSyncPrintf("=== day_time=%x ", ((void)0, gSaveContext.cutsceneIndex));
|
||||
if (globalCtx->activeCamera == MAIN_CAM) {
|
||||
if (globalCtx->activeCamId == CAM_ID_MAIN) {
|
||||
if (gSaveContext.unk_13EE == 0 || gSaveContext.unk_13EE == 1 || gSaveContext.unk_13EE == 2) {
|
||||
gSaveContext.unk_13EE = 0x32;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -230,9 +230,9 @@ void Gameplay_Init(GameState* thisx) {
|
|||
Camera_ChangeStatus(&globalCtx->subCameras[i], CAM_STAT_UNK100);
|
||||
}
|
||||
|
||||
globalCtx->cameraPtrs[MAIN_CAM] = &globalCtx->mainCamera;
|
||||
globalCtx->cameraPtrs[MAIN_CAM]->uid = 0;
|
||||
globalCtx->activeCamera = MAIN_CAM;
|
||||
globalCtx->cameraPtrs[CAM_ID_MAIN] = &globalCtx->mainCamera;
|
||||
globalCtx->cameraPtrs[CAM_ID_MAIN]->uid = 0;
|
||||
globalCtx->activeCamId = CAM_ID_MAIN;
|
||||
func_8005AC48(&globalCtx->mainCamera, 0xFF);
|
||||
Sram_Init(globalCtx, &globalCtx->sramCtx);
|
||||
func_80112098(globalCtx);
|
||||
|
@ -1047,14 +1047,14 @@ skip:
|
|||
s32 pad3[5];
|
||||
s32 i;
|
||||
|
||||
globalCtx->nextCamera = globalCtx->activeCamera;
|
||||
globalCtx->nextCamId = globalCtx->activeCamId;
|
||||
|
||||
if (1 && HREG(63)) {
|
||||
LOG_NUM("1", 1, "../z_play.c", 3806);
|
||||
}
|
||||
|
||||
for (i = 0; i < NUM_CAMS; i++) {
|
||||
if ((i != globalCtx->nextCamera) && (globalCtx->cameraPtrs[i] != NULL)) {
|
||||
if ((i != globalCtx->nextCamId) && (globalCtx->cameraPtrs[i] != NULL)) {
|
||||
if (1 && HREG(63)) {
|
||||
LOG_NUM("1", 1, "../z_play.c", 3809);
|
||||
}
|
||||
|
@ -1063,7 +1063,7 @@ skip:
|
|||
}
|
||||
}
|
||||
|
||||
Camera_Update(globalCtx->cameraPtrs[globalCtx->nextCamera]);
|
||||
Camera_Update(globalCtx->cameraPtrs[globalCtx->nextCamId]);
|
||||
|
||||
if (1 && HREG(63)) {
|
||||
LOG_NUM("1", 1, "../z_play.c", 3814);
|
||||
|
@ -1547,7 +1547,7 @@ void func_800C016C(GlobalContext* globalCtx, Vec3f* src, Vec3f* dest) {
|
|||
s16 Gameplay_CreateSubCamera(GlobalContext* globalCtx) {
|
||||
s16 i;
|
||||
|
||||
for (i = SUBCAM_FIRST; i < NUM_CAMS; i++) {
|
||||
for (i = CAM_ID_SUB_FIRST; i < NUM_CAMS; i++) {
|
||||
if (globalCtx->cameraPtrs[i] == NULL) {
|
||||
break;
|
||||
}
|
||||
|
@ -1555,38 +1555,38 @@ s16 Gameplay_CreateSubCamera(GlobalContext* globalCtx) {
|
|||
|
||||
if (i == NUM_CAMS) {
|
||||
osSyncPrintf(VT_COL(RED, WHITE) "camera control: error: fulled sub camera system area\n" VT_RST);
|
||||
return SUBCAM_NONE;
|
||||
return CAM_ID_NONE;
|
||||
}
|
||||
|
||||
osSyncPrintf("camera control: " VT_BGCOL(CYAN) " " VT_COL(WHITE, BLUE) " create new sub camera [%d] " VT_BGCOL(
|
||||
CYAN) " " VT_RST "\n",
|
||||
i);
|
||||
|
||||
globalCtx->cameraPtrs[i] = &globalCtx->subCameras[i - SUBCAM_FIRST];
|
||||
globalCtx->cameraPtrs[i] = &globalCtx->subCameras[i - CAM_ID_SUB_FIRST];
|
||||
Camera_Init(globalCtx->cameraPtrs[i], &globalCtx->view, &globalCtx->colCtx, globalCtx);
|
||||
globalCtx->cameraPtrs[i]->thisIdx = i;
|
||||
globalCtx->cameraPtrs[i]->camId = i;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
s16 Gameplay_GetActiveCamId(GlobalContext* globalCtx) {
|
||||
return globalCtx->activeCamera;
|
||||
return globalCtx->activeCamId;
|
||||
}
|
||||
|
||||
s16 Gameplay_ChangeCameraStatus(GlobalContext* globalCtx, s16 camId, s16 status) {
|
||||
s16 camIdx = (camId == SUBCAM_ACTIVE) ? globalCtx->activeCamera : camId;
|
||||
s16 camIdx = (camId == CAM_ID_NONE) ? globalCtx->activeCamId : camId;
|
||||
|
||||
if (status == CAM_STAT_ACTIVE) {
|
||||
globalCtx->activeCamera = camIdx;
|
||||
globalCtx->activeCamId = camIdx;
|
||||
}
|
||||
|
||||
return Camera_ChangeStatus(globalCtx->cameraPtrs[camIdx], status);
|
||||
}
|
||||
|
||||
void Gameplay_ClearCamera(GlobalContext* globalCtx, s16 camId) {
|
||||
s16 camIdx = (camId == SUBCAM_ACTIVE) ? globalCtx->activeCamera : camId;
|
||||
s16 camIdx = (camId == CAM_ID_NONE) ? globalCtx->activeCamId : camId;
|
||||
|
||||
if (camIdx == MAIN_CAM) {
|
||||
if (camIdx == CAM_ID_MAIN) {
|
||||
osSyncPrintf(VT_COL(RED, WHITE) "camera control: error: never clear camera !!\n" VT_RST);
|
||||
}
|
||||
|
||||
|
@ -1602,26 +1602,26 @@ void Gameplay_ClearCamera(GlobalContext* globalCtx, s16 camId) {
|
|||
}
|
||||
|
||||
void Gameplay_ClearAllSubCameras(GlobalContext* globalCtx) {
|
||||
s16 i;
|
||||
s16 subCamId;
|
||||
|
||||
for (i = SUBCAM_FIRST; i < NUM_CAMS; i++) {
|
||||
if (globalCtx->cameraPtrs[i] != NULL) {
|
||||
Gameplay_ClearCamera(globalCtx, i);
|
||||
for (subCamId = CAM_ID_SUB_FIRST; subCamId < NUM_CAMS; subCamId++) {
|
||||
if (globalCtx->cameraPtrs[subCamId] != NULL) {
|
||||
Gameplay_ClearCamera(globalCtx, subCamId);
|
||||
}
|
||||
}
|
||||
|
||||
globalCtx->activeCamera = MAIN_CAM;
|
||||
globalCtx->activeCamId = CAM_ID_MAIN;
|
||||
}
|
||||
|
||||
Camera* Gameplay_GetCamera(GlobalContext* globalCtx, s16 camId) {
|
||||
s16 camIdx = (camId == SUBCAM_ACTIVE) ? globalCtx->activeCamera : camId;
|
||||
s16 camIdx = (camId == CAM_ID_NONE) ? globalCtx->activeCamId : camId;
|
||||
|
||||
return globalCtx->cameraPtrs[camIdx];
|
||||
}
|
||||
|
||||
s32 Gameplay_CameraSetAtEye(GlobalContext* globalCtx, s16 camId, Vec3f* at, Vec3f* eye) {
|
||||
s32 ret = 0;
|
||||
s16 camIdx = (camId == SUBCAM_ACTIVE) ? globalCtx->activeCamera : camId;
|
||||
s16 camIdx = (camId == CAM_ID_NONE) ? globalCtx->activeCamId : camId;
|
||||
Camera* camera = globalCtx->cameraPtrs[camIdx];
|
||||
Player* player;
|
||||
|
||||
|
@ -1647,7 +1647,7 @@ s32 Gameplay_CameraSetAtEye(GlobalContext* globalCtx, s16 camId, Vec3f* at, Vec3
|
|||
|
||||
s32 Gameplay_CameraSetAtEyeUp(GlobalContext* globalCtx, s16 camId, Vec3f* at, Vec3f* eye, Vec3f* up) {
|
||||
s32 ret = 0;
|
||||
s16 camIdx = (camId == SUBCAM_ACTIVE) ? globalCtx->activeCamera : camId;
|
||||
s16 camIdx = (camId == CAM_ID_NONE) ? globalCtx->activeCamId : camId;
|
||||
Camera* camera = globalCtx->cameraPtrs[camIdx];
|
||||
Player* player;
|
||||
|
||||
|
@ -1681,7 +1681,7 @@ s32 Gameplay_CameraSetFov(GlobalContext* globalCtx, s16 camId, f32 fov) {
|
|||
}
|
||||
|
||||
s32 Gameplay_SetCameraRoll(GlobalContext* globalCtx, s16 camId, s16 roll) {
|
||||
s16 camIdx = (camId == SUBCAM_ACTIVE) ? globalCtx->activeCamera : camId;
|
||||
s16 camIdx = (camId == CAM_ID_NONE) ? globalCtx->activeCamId : camId;
|
||||
Camera* camera = globalCtx->cameraPtrs[camIdx];
|
||||
|
||||
camera->roll = roll;
|
||||
|
@ -1689,16 +1689,16 @@ s32 Gameplay_SetCameraRoll(GlobalContext* globalCtx, s16 camId, s16 roll) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
void Gameplay_CopyCamera(GlobalContext* globalCtx, s16 camId1, s16 camId2) {
|
||||
s16 camIdx2 = (camId2 == SUBCAM_ACTIVE) ? globalCtx->activeCamera : camId2;
|
||||
s16 camIdx1 = (camId1 == SUBCAM_ACTIVE) ? globalCtx->activeCamera : camId1;
|
||||
void Gameplay_CopyCamera(GlobalContext* globalCtx, s16 destCamId, s16 srcCamId) {
|
||||
s16 srcCamId2 = (srcCamId == CAM_ID_NONE) ? globalCtx->activeCamId : srcCamId;
|
||||
s16 destCamId1 = (destCamId == CAM_ID_NONE) ? globalCtx->activeCamId : destCamId;
|
||||
|
||||
Camera_Copy(globalCtx->cameraPtrs[camIdx1], globalCtx->cameraPtrs[camIdx2]);
|
||||
Camera_Copy(globalCtx->cameraPtrs[destCamId1], globalCtx->cameraPtrs[srcCamId2]);
|
||||
}
|
||||
|
||||
s32 func_800C0808(GlobalContext* globalCtx, s16 camId, Player* player, s16 setting) {
|
||||
Camera* camera;
|
||||
s16 camIdx = (camId == SUBCAM_ACTIVE) ? globalCtx->activeCamera : camId;
|
||||
s16 camIdx = (camId == CAM_ID_NONE) ? globalCtx->activeCamId : camId;
|
||||
|
||||
camera = globalCtx->cameraPtrs[camIdx];
|
||||
Camera_InitPlayerSettings(camera, player);
|
||||
|
@ -1710,12 +1710,12 @@ s32 Gameplay_CameraChangeSetting(GlobalContext* globalCtx, s16 camId, s16 settin
|
|||
}
|
||||
|
||||
void func_800C08AC(GlobalContext* globalCtx, s16 camId, s16 arg2) {
|
||||
s16 camIdx = (camId == SUBCAM_ACTIVE) ? globalCtx->activeCamera : camId;
|
||||
s16 camIdx = (camId == CAM_ID_NONE) ? globalCtx->activeCamId : camId;
|
||||
s16 i;
|
||||
|
||||
Gameplay_ClearCamera(globalCtx, camIdx);
|
||||
|
||||
for (i = SUBCAM_FIRST; i < NUM_CAMS; i++) {
|
||||
for (i = CAM_ID_SUB_FIRST; i < NUM_CAMS; i++) {
|
||||
if (globalCtx->cameraPtrs[i] != NULL) {
|
||||
osSyncPrintf(
|
||||
VT_COL(RED, WHITE) "camera control: error: return to main, other camera left. %d cleared!!\n" VT_RST,
|
||||
|
@ -1725,10 +1725,10 @@ void func_800C08AC(GlobalContext* globalCtx, s16 camId, s16 arg2) {
|
|||
}
|
||||
|
||||
if (arg2 <= 0) {
|
||||
Gameplay_ChangeCameraStatus(globalCtx, MAIN_CAM, CAM_STAT_ACTIVE);
|
||||
globalCtx->cameraPtrs[MAIN_CAM]->childCamIdx = globalCtx->cameraPtrs[MAIN_CAM]->parentCamIdx = SUBCAM_FREE;
|
||||
Gameplay_ChangeCameraStatus(globalCtx, CAM_ID_MAIN, CAM_STAT_ACTIVE);
|
||||
globalCtx->cameraPtrs[CAM_ID_MAIN]->childCamId = globalCtx->cameraPtrs[CAM_ID_MAIN]->parentCamId = CAM_ID_MAIN;
|
||||
} else {
|
||||
OnePointCutscene_Init(globalCtx, 1020, arg2, NULL, MAIN_CAM);
|
||||
OnePointCutscene_Init(globalCtx, 1020, arg2, NULL, CAM_ID_MAIN);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -616,8 +616,8 @@ void func_8008EEAC(GlobalContext* globalCtx, Actor* actor) {
|
|||
this->unk_664 = actor;
|
||||
this->unk_684 = actor;
|
||||
this->stateFlags1 |= PLAYER_STATE1_16;
|
||||
Camera_SetParam(Gameplay_GetCamera(globalCtx, 0), 8, actor);
|
||||
Camera_ChangeMode(Gameplay_GetCamera(globalCtx, 0), 2);
|
||||
Camera_SetParam(Gameplay_GetCamera(globalCtx, CAM_ID_MAIN), 8, actor);
|
||||
Camera_ChangeMode(Gameplay_GetCamera(globalCtx, CAM_ID_MAIN), CAM_MODE_FOLLOWTARGET);
|
||||
}
|
||||
|
||||
s32 func_8008EF30(GlobalContext* globalCtx) {
|
||||
|
|
|
@ -148,13 +148,13 @@ s16 Quake_GetFreeIndex(void) {
|
|||
return ret;
|
||||
}
|
||||
|
||||
QuakeRequest* Quake_AddImpl(Camera* cam, u32 callbackIdx) {
|
||||
QuakeRequest* Quake_AddImpl(Camera* camera, u32 callbackIdx) {
|
||||
s16 idx = Quake_GetFreeIndex();
|
||||
QuakeRequest* req = &sQuakeRequest[idx];
|
||||
|
||||
__osMemset(req, 0, sizeof(QuakeRequest));
|
||||
req->cam = cam;
|
||||
req->camPtrIdx = cam->thisIdx;
|
||||
req->cam = camera;
|
||||
req->camPtrIdx = camera->camId;
|
||||
req->callbackIdx = callbackIdx;
|
||||
req->unk_1C = 1;
|
||||
req->randIdx = ((s16)(Rand_ZeroOne() * (f32)0x10000) & ~3) + idx;
|
||||
|
@ -291,8 +291,8 @@ void Quake_Init(void) {
|
|||
sQuakeRequestCount = 0;
|
||||
}
|
||||
|
||||
s16 Quake_Add(Camera* cam, u32 callbackIdx) {
|
||||
return Quake_AddImpl(cam, callbackIdx)->randIdx;
|
||||
s16 Quake_Add(Camera* camera, u32 callbackIdx) {
|
||||
return Quake_AddImpl(camera, callbackIdx)->randIdx;
|
||||
}
|
||||
|
||||
u32 Quake_RemoveFromIdx(s16 idx) {
|
||||
|
@ -347,8 +347,8 @@ s16 Quake_Calc(Camera* camera, QuakeCamCalc* camData) {
|
|||
req->camPtrIdx);
|
||||
Quake_Remove(req);
|
||||
} else {
|
||||
temp = &camera->thisIdx;
|
||||
eq = req->cam->thisIdx != *temp;
|
||||
temp = &camera->camId;
|
||||
eq = req->cam->camId != *temp;
|
||||
absSpeedDiv = ABS(req->speed) / (f32)0x8000;
|
||||
if (sQuakeCallbacks[req->callbackIdx](req, &shake) == 0) {
|
||||
Quake_Remove(req);
|
||||
|
|
|
@ -307,7 +307,7 @@ void func_8009638C(Gfx** displayList, void* source, void* tlut, u16 width, u16 h
|
|||
|
||||
// Room Draw Polygon Type 1 - Single Format
|
||||
void func_80096680(GlobalContext* globalCtx, Room* room, u32 flags) {
|
||||
Camera* camera;
|
||||
Camera* activeCam;
|
||||
Gfx* spA8;
|
||||
PolygonType1* polygon1;
|
||||
PolygonDlist* polygonDlist;
|
||||
|
@ -318,8 +318,8 @@ void func_80096680(GlobalContext* globalCtx, Room* room, u32 flags) {
|
|||
|
||||
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_room.c", 628);
|
||||
|
||||
camera = GET_ACTIVE_CAM(globalCtx);
|
||||
isFixedCamera = camera->setting == CAM_SET_PREREND_FIXED;
|
||||
activeCam = GET_ACTIVE_CAM(globalCtx);
|
||||
isFixedCamera = (activeCam->setting == CAM_SET_PREREND_FIXED);
|
||||
polygon1 = &room->mesh->polygon1;
|
||||
polygonDlist = SEGMENTED_TO_VIRTUAL(polygon1->dlist);
|
||||
drawBg = (flags & 1) && isFixedCamera && polygon1->single.source && !(SREG(25) & 1);
|
||||
|
@ -341,7 +341,7 @@ void func_80096680(GlobalContext* globalCtx, Room* room, u32 flags) {
|
|||
{
|
||||
Vec3f sp60;
|
||||
spA8 = POLY_OPA_DISP;
|
||||
Camera_GetSkyboxOffset(&sp60, camera);
|
||||
Camera_GetSkyboxOffset(&sp60, activeCam);
|
||||
func_8009638C(&spA8, polygon1->single.source, polygon1->single.tlut, polygon1->single.width,
|
||||
polygon1->single.height, polygon1->single.fmt, polygon1->single.siz,
|
||||
polygon1->single.mode0, polygon1->single.tlutCount,
|
||||
|
@ -364,34 +364,33 @@ void func_80096680(GlobalContext* globalCtx, Room* room, u32 flags) {
|
|||
}
|
||||
|
||||
BgImage* func_80096A74(PolygonType1* polygon1, GlobalContext* globalCtx) {
|
||||
Camera* camera;
|
||||
s32 camId;
|
||||
s16 camId2;
|
||||
Camera* activeCam = GET_ACTIVE_CAM(globalCtx);
|
||||
s32 camDataIdx;
|
||||
s16 camDataIdx2;
|
||||
Player* player;
|
||||
BgImage* bgImage;
|
||||
s32 i;
|
||||
|
||||
camera = GET_ACTIVE_CAM(globalCtx);
|
||||
camId = camera->camDataIdx;
|
||||
camDataIdx = activeCam->camDataIdx;
|
||||
// jfifid
|
||||
camId2 = func_80041C10(&globalCtx->colCtx, camId, BGCHECK_SCENE)[2].y;
|
||||
if (camId2 >= 0) {
|
||||
camId = camId2;
|
||||
camDataIdx2 = func_80041C10(&globalCtx->colCtx, camDataIdx, BGCHECK_SCENE)[2].y;
|
||||
if (camDataIdx2 >= 0) {
|
||||
camDataIdx = camDataIdx2;
|
||||
}
|
||||
|
||||
player = GET_PLAYER(globalCtx);
|
||||
player->actor.params = (player->actor.params & 0xFF00) | camId;
|
||||
player->actor.params = (player->actor.params & 0xFF00) | camDataIdx;
|
||||
|
||||
bgImage = SEGMENTED_TO_VIRTUAL(polygon1->multi.list);
|
||||
for (i = 0; i < polygon1->multi.count; i++) {
|
||||
if (bgImage->id == camId) {
|
||||
if (bgImage->id == camDataIdx) {
|
||||
return bgImage;
|
||||
}
|
||||
bgImage++;
|
||||
}
|
||||
|
||||
// "z_room.c: Data consistent with camera id does not exist camid=%d"
|
||||
osSyncPrintf(VT_COL(RED, WHITE) "z_room.c:カメラIDに一致するデータが存在しません camid=%d\n" VT_RST, camId);
|
||||
osSyncPrintf(VT_COL(RED, WHITE) "z_room.c:カメラIDに一致するデータが存在しません camid=%d\n" VT_RST, camDataIdx);
|
||||
LogUtils_HungupThread("../z_room.c", 726);
|
||||
|
||||
return NULL;
|
||||
|
@ -399,7 +398,7 @@ BgImage* func_80096A74(PolygonType1* polygon1, GlobalContext* globalCtx) {
|
|||
|
||||
// Room Draw Polygon Type 1 - Multi Format
|
||||
void func_80096B6C(GlobalContext* globalCtx, Room* room, u32 flags) {
|
||||
Camera* camera;
|
||||
Camera* activeCam;
|
||||
Gfx* gfx;
|
||||
PolygonType1* polygon1;
|
||||
BgImage* bgImage;
|
||||
|
@ -411,8 +410,8 @@ void func_80096B6C(GlobalContext* globalCtx, Room* room, u32 flags) {
|
|||
|
||||
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_room.c", 752);
|
||||
|
||||
camera = GET_ACTIVE_CAM(globalCtx);
|
||||
isFixedCamera = camera->setting == CAM_SET_PREREND_FIXED;
|
||||
activeCam = GET_ACTIVE_CAM(globalCtx);
|
||||
isFixedCamera = (activeCam->setting == CAM_SET_PREREND_FIXED);
|
||||
polygon1 = &room->mesh->polygon1;
|
||||
polygonDlist = SEGMENTED_TO_VIRTUAL(polygon1->dlist);
|
||||
bgImage = func_80096A74(polygon1, globalCtx);
|
||||
|
@ -436,7 +435,7 @@ void func_80096B6C(GlobalContext* globalCtx, Room* room, u32 flags) {
|
|||
Vec3f skyboxOffset;
|
||||
|
||||
gfx = POLY_OPA_DISP;
|
||||
Camera_GetSkyboxOffset(&skyboxOffset, camera);
|
||||
Camera_GetSkyboxOffset(&skyboxOffset, activeCam);
|
||||
func_8009638C(&gfx, bgImage->source, bgImage->tlut, bgImage->width, bgImage->height, bgImage->fmt,
|
||||
bgImage->siz, bgImage->mode0, bgImage->tlutCount,
|
||||
(skyboxOffset.x + skyboxOffset.z) * 1.2f + skyboxOffset.y * 0.6f,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue