1
0
Fork 0
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:
engineer124 2022-05-13 04:35:31 +10:00 committed by GitHub
parent 92aef346f2
commit bf56c94f0f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
143 changed files with 2778 additions and 2768 deletions

View file

@ -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);
}
}

View file

@ -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;
}

View file

@ -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) {

View file

@ -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,

View file

@ -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

View file

@ -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);
}
}

View file

@ -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) {

View file

@ -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);

View file

@ -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,