diff --git a/soh/include/functions.h b/soh/include/functions.h index 7caab2bb85..71ab860065 100644 --- a/soh/include/functions.h +++ b/soh/include/functions.h @@ -674,10 +674,10 @@ void CollisionHeader_GetVirtual(void* colHeader, CollisionHeader** dest); void func_800418D0(CollisionContext* colCtx, PlayState* play); void BgCheck_ResetPolyCheckTbl(SSNodeList* nodeList, s32 numPolys); u32 SurfaceType_GetCamDataIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId); -u16 func_80041A4C(CollisionContext* colCtx, u32 camId, s32 bgId); +u16 BgCheck_GetBgCamSettingImpl(CollisionContext* colCtx, u32 bgCamIndex, s32 bgId); u16 SurfaceType_GetCameraSType(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId); u16 SurfaceType_GetNumCameras(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId); -Vec3s* func_80041C10(CollisionContext* colCtx, s32 camId, s32 bgId); +Vec3s* BgCheck_GetBgCamFuncDataImpl(CollisionContext* colCtx, s32 bgCamIndex, s32 bgId); Vec3s* SurfaceType_GetCamPosData(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId); u32 SurfaceType_GetSceneExitIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId); u32 SurfaceType_GetFloorType(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId); @@ -734,7 +734,7 @@ void Camera_InitPlayerSettings(Camera* camera, Player* player); s16 Camera_ChangeStatus(Camera* camera, s16 status); Vec3s Camera_Update(Camera* camera); void Camera_Finish(Camera* camera); -s32 Camera_ChangeMode(Camera* camera, s16 mode); +s32 Camera_RequestMode(Camera* camera, s16 mode); s32 Camera_CheckValidMode(Camera* camera, s16 mode); s32 Camera_RequestSetting(Camera* camera, s16 setting); s32 Camera_ChangeDataIdx(Camera* camera, s32 camDataIdx); diff --git a/soh/soh/Enhancements/Graphics/DisableFixedCamera.cpp b/soh/soh/Enhancements/Graphics/DisableFixedCamera.cpp index 55e1674b6b..ad4a6e6d38 100644 --- a/soh/soh/Enhancements/Graphics/DisableFixedCamera.cpp +++ b/soh/soh/Enhancements/Graphics/DisableFixedCamera.cpp @@ -143,7 +143,7 @@ extern "C" void DisableFixedCamera_SetNormalCamera(PlayState* play) { play->mainCamera.prevSetting = CAM_SET_NORMAL0; } Camera_RequestSetting(&play->mainCamera, CAM_SET_NORMAL0); - Camera_ChangeMode(&play->mainCamera, CAM_MODE_NORMAL); + Camera_RequestMode(&play->mainCamera, CAM_MODE_NORMAL); } extern "C" void DisableFixedCamera_CheckCameraState(PlayState* play) { @@ -225,7 +225,7 @@ extern "C" void DisableFixedCamera_CheckCameraState(PlayState* play) { sStoreLastCamType = play->mainCamera.camDataIdx; } Camera_RequestSetting(&play->mainCamera, CAM_SET_TURN_AROUND); - Camera_ChangeMode(&play->mainCamera, CAM_MODE_NORMAL); + Camera_RequestMode(&play->mainCamera, CAM_MODE_NORMAL); if (sStoreLastCamType >= 0) { play->mainCamera.camDataIdx = sStoreLastCamType; } diff --git a/soh/soh/Enhancements/randomizer/entrance.cpp b/soh/soh/Enhancements/randomizer/entrance.cpp index 6340d96828..ff08e00157 100644 --- a/soh/soh/Enhancements/randomizer/entrance.cpp +++ b/soh/soh/Enhancements/randomizer/entrance.cpp @@ -1749,7 +1749,7 @@ void RegisterEntranceShuffleHooks() { return; } memcpy(camera, &backupCamera, sizeof(Camera)); - Camera_ChangeMode(camera, CAM_MODE_TALK); + Camera_RequestMode(camera, CAM_MODE_TALK); *should = false; } else if (backedUpScene != gPlayState->sceneNum) { memcpy(&backupCamera, camera, sizeof(Camera)); diff --git a/soh/src/code/z_actor.c b/soh/src/code/z_actor.c index 067b1bee88..ec24a7af1d 100644 --- a/soh/src/code/z_actor.c +++ b/soh/src/code/z_actor.c @@ -3497,7 +3497,7 @@ Actor* Actor_Delete(ActorContext* actorCtx, Actor* actor, PlayState* play) { if ((player != NULL) && (actor == player->focusActor)) { Player_ReleaseLockOn(player); - Camera_ChangeMode(Play_GetCamera(play, Play_GetActiveCamId(play)), 0); + Camera_RequestMode(Play_GetCamera(play, Play_GetActiveCamId(play)), CAM_MODE_NORMAL); } if (actor == actorCtx->targetCtx.arrowPointedActor) { diff --git a/soh/src/code/z_bgcheck.c b/soh/src/code/z_bgcheck.c index 536947a05e..d3c1835710 100644 --- a/soh/src/code/z_bgcheck.c +++ b/soh/src/code/z_bgcheck.c @@ -3865,25 +3865,26 @@ u32 SurfaceType_GetData(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId, * SurfaceType return CamData Index */ u32 SurfaceType_GetCamDataIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) { - return SurfaceType_GetData(colCtx, poly, bgId, 0) & 0xFF; } /** - * CamData return cameraSType + * BgCam get setting of bgCam */ -u16 func_80041A4C(CollisionContext* colCtx, u32 camId, s32 bgId) { - u16 result; +u16 BgCheck_GetBgCamSettingImpl(CollisionContext* colCtx, u32 bgCamIndex, s32 bgId) { + u16 camSetting; CollisionHeader* colHeader; - CamData* camData; + CamData* bgCamList; colHeader = BgCheck_GetCollisionHeader(colCtx, bgId); if (colHeader == NULL) { - return 0; + return CAM_SET_NONE; } - camData = colHeader->cameraDataList; - result = camData[camId].cameraSType; - return result; + + bgCamList = colHeader->cameraDataList; + camSetting = bgCamList[bgCamIndex].cameraSType; + + return camSetting; } /** @@ -3905,7 +3906,7 @@ u16 SurfaceType_GetCameraSType(CollisionContext* colCtx, CollisionPoly* poly, s3 if (surfaceTypes == PHYSICAL_TO_VIRTUAL(gSegments[0])) { return 0; } - return func_80041A4C(colCtx, SurfaceType_GetCamDataIndex(colCtx, poly, bgId), bgId); + return BgCheck_GetBgCamSettingImpl(colCtx, SurfaceType_GetCamDataIndex(colCtx, poly, bgId), bgId); } /** @@ -3951,18 +3952,20 @@ u16 SurfaceType_GetNumCameras(CollisionContext* colCtx, CollisionPoly* poly, s32 /** * CamData Get camPosData */ -Vec3s* func_80041C10(CollisionContext* colCtx, s32 camId, s32 bgId) { +Vec3s* BgCheck_GetBgCamFuncDataImpl(CollisionContext* colCtx, s32 bgCamIndex, s32 bgId) { CollisionHeader* colHeader = BgCheck_GetCollisionHeader(colCtx, bgId); - CamData* cameraDataList; + CamData* bgCamList; if (colHeader == NULL) { return NULL; } - cameraDataList = colHeader->cameraDataList; - if (cameraDataList == PHYSICAL_TO_VIRTUAL(gSegments[0])) { + + bgCamList = colHeader->cameraDataList; + if (bgCamList == PHYSICAL_TO_VIRTUAL(gSegments[0])) { return NULL; } - return (Vec3s*)SEGMENTED_TO_VIRTUAL(cameraDataList[camId].camPosData); + + return (Vec3s*)SEGMENTED_TO_VIRTUAL(bgCamList[bgCamIndex].camPosData); } /** @@ -3984,7 +3987,7 @@ Vec3s* SurfaceType_GetCamPosData(CollisionContext* colCtx, CollisionPoly* poly, if (surfaceTypes == PHYSICAL_TO_VIRTUAL(gSegments[0])) { return NULL; } - return func_80041C10(colCtx, SurfaceType_GetCamDataIndex(colCtx, poly, bgId), bgId); + return BgCheck_GetBgCamFuncDataImpl(colCtx, SurfaceType_GetCamDataIndex(colCtx, poly, bgId), bgId); } /** diff --git a/soh/src/code/z_camera.c b/soh/src/code/z_camera.c index 663b4602d1..f23665c22c 100644 --- a/soh/src/code/z_camera.c +++ b/soh/src/code/z_camera.c @@ -12,7 +12,7 @@ #include "soh/Enhancements/savestate_serialize.h" s16 Camera_ChangeSettingFlags(Camera* camera, s16 setting, s16 flags); -s32 Camera_ChangeModeFlags(Camera* camera, s16 mode, u8 flags); +s32 Camera_RequestModeImpl(Camera* camera, s16 requestedMode, u8 forceModeChange); s32 Camera_QRegInit(void); s32 Camera_UpdateWater(Camera* camera); @@ -449,17 +449,17 @@ f32 Camera_GetFloorYLayer(Camera* camera, Vec3f* norm, Vec3f* pos, s32* bgId) { } /** - * Returns the CameraSettingType of the camera at index `camDataIdx` + * Returns the CameraSettingType of the camera at index `bgCamIndex` */ -s16 Camera_GetCamDataSetting(Camera* camera, s32 camDataIdx) { - return func_80041A4C(&camera->play->colCtx, camDataIdx, BGCHECK_SCENE); +s16 Camera_GetBgCamSetting(Camera* camera, s32 bgCamIndex) { + return BgCheck_GetBgCamSettingImpl(&camera->play->colCtx, bgCamIndex, BGCHECK_SCENE); } /** - * Returns the scene camera info for the current camera data index + * Returns the bgCamFuncData using the current bgCam index */ Vec3s* Camera_GetCamBGData(Camera* camera) { - return func_80041C10(&camera->play->colCtx, camera->camDataIdx, BGCHECK_SCENE); + return BgCheck_GetBgCamFuncDataImpl(&camera->play->colCtx, camera->camDataIdx, BGCHECK_SCENE); } /** @@ -474,7 +474,7 @@ s32 Camera_GetDataIdxForPoly(Camera* camera, s32* bgId, CollisionPoly* poly) { Actor_GetWorldPosShapeRot(&playerPosRot, &camera->player->actor); // unused. camDataIdx = SurfaceType_GetCamDataIndex(&camera->play->colCtx, poly, *bgId); - if (func_80041A4C(&camera->play->colCtx, camDataIdx, *bgId) == CAM_SET_NONE) { + if (BgCheck_GetBgCamSettingImpl(&camera->play->colCtx, camDataIdx, *bgId) == CAM_SET_NONE) { ret = -1; } else { ret = camDataIdx; @@ -2980,7 +2980,7 @@ s32 Camera_Battle1(Camera* camera) { VT_COL(YELLOW, BLACK) "camera: warning: battle: target is not valid, change parallel\n" VT_RST); } camera->target = NULL; - Camera_ChangeMode(camera, CAM_MODE_TARGET); + Camera_RequestMode(camera, CAM_MODE_TARGET); return true; } @@ -2996,7 +2996,7 @@ s32 Camera_Battle1(Camera* camera) { } else { osSyncPrintf("camera: battle: target actor name " VT_COL(RED, WHITE) "%d" VT_RST "\n", anim->target->id); camera->target = NULL; - Camera_ChangeMode(camera, CAM_MODE_TARGET); + Camera_RequestMode(camera, CAM_MODE_TARGET); return true; } anim->animTimer = OREG(23) + OREG(24); @@ -3260,7 +3260,7 @@ s32 Camera_KeepOn1(Camera* camera) { VT_COL(YELLOW, BLACK) "camera: warning: keepon: target is not valid, change parallel\n" VT_RST); } camera->target = NULL; - Camera_ChangeMode(camera, CAM_MODE_TARGET); + Camera_RequestMode(camera, CAM_MODE_TARGET); return 1; } @@ -3493,7 +3493,7 @@ s32 Camera_KeepOn3(Camera* camera) { osSyncPrintf(VT_COL(YELLOW, BLACK) "camera: warning: talk: target is not valid, change parallel\n" VT_RST); } camera->target = NULL; - Camera_ChangeMode(camera, CAM_MODE_TARGET); + Camera_RequestMode(camera, CAM_MODE_TARGET); return 1; } if (camera->animState == 0 || camera->animState == 0xA || camera->animState == 0x14) { @@ -3987,7 +3987,7 @@ s32 Camera_KeepOn0(Camera* camera) { VT_COL(YELLOW, BLACK) "camera: warning: talk: target is not valid, change normal camera\n" VT_RST); } camera->target = NULL; - Camera_ChangeMode(camera, CAM_MODE_NORMAL); + Camera_RequestMode(camera, CAM_MODE_NORMAL); return true; } @@ -5622,7 +5622,7 @@ s32 Camera_Unique9(Camera* camera) { // Change the parent camera (or default)'s mode to normal s32 camIdx = camera->parentCamIdx <= SUBCAM_NONE ? CAM_ID_MAIN : camera->parentCamIdx; - Camera_ChangeModeFlags(camera->play->cameraPtrs[camIdx], CAM_MODE_NORMAL, 1); + Camera_RequestModeImpl(camera->play->cameraPtrs[camIdx], CAM_MODE_NORMAL, true); } case 18: { // copy the current camera to the parent (or default)'s camera. @@ -7810,56 +7810,56 @@ s32 func_8005A02C(Camera* camera) { return true; } -s32 Camera_ChangeModeFlags(Camera* camera, s16 mode, u8 flags) { - static s32 modeChangeFlags = 0; +s32 Camera_RequestModeImpl(Camera* camera, s16 requestedMode, u8 forceModeChange) { + static s32 sModeRequestFlags = 0; if (QREG(89)) { - osSyncPrintf("+=+(%d)+=+ recive request -> %s\n", camera->play->state.frames, sCameraModeNames[mode]); + osSyncPrintf("+=+(%d)+=+ recive request -> %s\n", camera->play->state.frames, sCameraModeNames[requestedMode]); } - if (camera->unk_14C & 0x20 && flags == 0) { + if (camera->unk_14C & 0x20 && !forceModeChange) { camera->unk_14A |= 0x20; return -1; } - if (!((sCameraSettings[camera->setting].unk_00 & 0x3FFFFFFF) & (1 << mode))) { - if (mode == CAM_MODE_FIRST_PERSON) { + if (!((sCameraSettings[camera->setting].unk_00 & 0x3FFFFFFF) & (1 << requestedMode))) { + if (requestedMode == CAM_MODE_FIRST_PERSON) { osSyncPrintf("camera: error sound\n"); Sfx_PlaySfxCentered(NA_SE_SY_ERROR); } if (camera->mode != CAM_MODE_NORMAL) { osSyncPrintf(VT_COL(YELLOW, BLACK) "camera: change camera mode: force NORMAL: %s %s refused\n" VT_RST, - sCameraSettingNames[camera->setting], sCameraModeNames[mode]); + sCameraSettingNames[camera->setting], sCameraModeNames[requestedMode]); camera->mode = CAM_MODE_NORMAL; Camera_CopyDataToRegs(camera, camera->mode); func_8005A02C(camera); - return 0xC0000000 | mode; + return 0xC0000000 | requestedMode; } else { camera->unk_14A |= 0x20; camera->unk_14A |= 2; return 0; } } else { - if (mode == camera->mode && flags == 0) { + if (requestedMode == camera->mode && !forceModeChange) { camera->unk_14A |= 0x20; camera->unk_14A |= 2; return -1; } camera->unk_14A |= 0x20; camera->unk_14A |= 2; - Camera_CopyDataToRegs(camera, mode); - modeChangeFlags = 0; - switch (mode) { + Camera_CopyDataToRegs(camera, requestedMode); + sModeRequestFlags = 0; + switch (requestedMode) { case CAM_MODE_FIRST_PERSON: - modeChangeFlags = 0x20; + sModeRequestFlags = 0x20; break; case CAM_MODE_BATTLE: - modeChangeFlags = 4; + sModeRequestFlags = 4; break; case CAM_MODE_FOLLOWTARGET: if (camera->target != NULL && camera->target->id != ACTOR_EN_BOOM) { - modeChangeFlags = 8; + sModeRequestFlags = 8; } break; case CAM_MODE_TARGET: @@ -7867,51 +7867,51 @@ s32 Camera_ChangeModeFlags(Camera* camera, s16 mode, u8 flags) { case CAM_MODE_Z_AIM: case CAM_MODE_HANGZ: case CAM_MODE_PUSHPULL: - modeChangeFlags = 2; + sModeRequestFlags = 2; break; } switch (camera->mode) { case CAM_MODE_FIRST_PERSON: - if (modeChangeFlags & 0x20) { + if (sModeRequestFlags & 0x20) { camera->animState = 0xA; } break; case CAM_MODE_TARGET: - if (modeChangeFlags & 0x10) { + if (sModeRequestFlags & 0x10) { camera->animState = 0xA; } - modeChangeFlags |= 1; + sModeRequestFlags |= 1; break; case CAM_MODE_CHARGE: - modeChangeFlags |= 1; + sModeRequestFlags |= 1; break; case CAM_MODE_FOLLOWTARGET: - if (modeChangeFlags & 8) { + if (sModeRequestFlags & 8) { camera->animState = 0xA; } - modeChangeFlags |= 1; + sModeRequestFlags |= 1; break; case CAM_MODE_BATTLE: - if (modeChangeFlags & 4) { + if (sModeRequestFlags & 4) { camera->animState = 0xA; } - modeChangeFlags |= 1; + sModeRequestFlags |= 1; break; case CAM_MODE_Z_AIM: case CAM_MODE_HANGZ: case CAM_MODE_PUSHPULL: - modeChangeFlags |= 1; + sModeRequestFlags |= 1; break; case CAM_MODE_NORMAL: - if (modeChangeFlags & 0x10) { + if (sModeRequestFlags & 0x10) { camera->animState = 0xA; } break; } - modeChangeFlags &= ~0x10; + sModeRequestFlags &= ~0x10; if (camera->status == CAM_STAT_ACTIVE) { - switch (modeChangeFlags) { + switch (sModeRequestFlags) { case 1: Sfx_PlaySfxCentered(0); break; @@ -7933,20 +7933,20 @@ s32 Camera_ChangeModeFlags(Camera* camera, s16 mode, u8 flags) { // Clear free look if an action is performed that would move the camera (targeting, first person, talking) if (CVarGetInteger(CVAR_SETTING("FreeLook.Enabled"), 0) && SetCameraManual(camera) == 1 && - ((mode >= CAM_MODE_TARGET && mode <= CAM_MODE_BATTLE) || - (mode >= CAM_MODE_FIRST_PERSON && mode <= CAM_MODE_CLIMBZ) || mode == CAM_MODE_HANGZ || - mode == CAM_MODE_FOLLOWBOOMERANG)) { + ((requestedMode >= CAM_MODE_TARGET && requestedMode <= CAM_MODE_BATTLE) || + (requestedMode >= CAM_MODE_FIRST_PERSON && requestedMode <= CAM_MODE_CLIMBZ) || + requestedMode == CAM_MODE_HANGZ || requestedMode == CAM_MODE_FOLLOWBOOMERANG)) { camera->play->manualCamera = false; } func_8005A02C(camera); - camera->mode = mode; - return 0x80000000 | mode; + camera->mode = requestedMode; + return 0x80000000 | requestedMode; } } -s32 Camera_ChangeMode(Camera* camera, s16 mode) { - return Camera_ChangeModeFlags(camera, mode, 0); +s32 Camera_RequestMode(Camera* camera, s16 mode) { + return Camera_RequestModeImpl(camera, mode, false); } s32 Camera_CheckValidMode(Camera* camera, s16 mode) { @@ -8015,7 +8015,7 @@ s16 Camera_ChangeSettingFlags(Camera* camera, s16 setting, s16 flags) { camera->setting = setting; - if (Camera_ChangeModeFlags(camera, camera->mode, 1) >= 0) { + if (Camera_RequestModeImpl(camera, camera->mode, true) >= 0) { Camera_CopyDataToRegs(camera, camera->mode); } @@ -8039,7 +8039,7 @@ s32 Camera_ChangeDataIdx(Camera* camera, s32 camDataIdx) { } if (!(camera->unk_14A & 0x40)) { - newCameraSetting = Camera_GetCamDataSetting(camera, camDataIdx); + newCameraSetting = Camera_GetBgCamSetting(camera, camDataIdx); camera->unk_14A |= 0x40; settingChangeSuccessful = Camera_ChangeSettingFlags(camera, newCameraSetting, 5) >= 0; if (settingChangeSuccessful || sCameraSettings[camera->setting].unk_00 & 0x80000000) { @@ -8230,7 +8230,7 @@ s32 Camera_ChangeDoorCam(Camera* camera, Actor* doorActor, s16 camDataIdx, f32 a Camera_RequestSetting(camera, CAM_SET_DOORC); osSyncPrintf(".... change default door camera (set %d)\n", CAM_SET_DOORC); } else { - s32 setting = Camera_GetCamDataSetting(camera, camDataIdx); + s32 setting = Camera_GetBgCamSetting(camera, camDataIdx); camera->unk_14A |= 0x40; diff --git a/soh/src/code/z_onepointdemo.c b/soh/src/code/z_onepointdemo.c index c036f76527..62194a758c 100644 --- a/soh/src/code/z_onepointdemo.c +++ b/soh/src/code/z_onepointdemo.c @@ -603,7 +603,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 camIdx, s16 csId, Actor* actor break; case 3190: Play_CameraChangeSetting(play, camIdx, CAM_SET_FOREST_DEFEAT_POE); - Camera_ChangeMode(mainCam, CAM_MODE_NORMAL); + Camera_RequestMode(mainCam, CAM_MODE_NORMAL); Player_SetCsAction(play, actor, 0xC); break; case 3230: @@ -863,14 +863,14 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 camIdx, s16 csId, Actor* actor csInfo->keyFrameCnt = 6; func_800C0808(play, camIdx, player, CAM_SET_CS_C); - Camera_ChangeMode(mainCam, CAM_MODE_NORMAL); + Camera_RequestMode(mainCam, CAM_MODE_NORMAL); break; case 4150: csInfo->keyFrames = D_801228A4; csInfo->keyFrameCnt = 5; Player_SetCsActionWithHaltedActors(play, NULL, 8); - Camera_ChangeMode(mainCam, CAM_MODE_NORMAL); + Camera_RequestMode(mainCam, CAM_MODE_NORMAL); func_800C0808(play, camIdx, player, CAM_SET_CS_C); break; case 4160: @@ -878,7 +878,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 camIdx, s16 csId, Actor* actor csInfo->keyFrameCnt = 4; Player_SetCsActionWithHaltedActors(play, NULL, 8); - Camera_ChangeMode(mainCam, CAM_MODE_NORMAL); + Camera_RequestMode(mainCam, CAM_MODE_NORMAL); func_800C0808(play, camIdx, player, CAM_SET_CS_C); break; case 4170: @@ -886,7 +886,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 camIdx, s16 csId, Actor* actor csInfo->keyFrameCnt = 2; Player_SetCsActionWithHaltedActors(play, NULL, 8); - Camera_ChangeMode(mainCam, CAM_MODE_NORMAL); + Camera_RequestMode(mainCam, CAM_MODE_NORMAL); func_800C0808(play, camIdx, player, CAM_SET_CS_C); break; case 4190: @@ -894,7 +894,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 camIdx, s16 csId, Actor* actor csInfo->keyFrameCnt = 8; Player_SetCsAction(play, &player->actor, 8); - Camera_ChangeMode(mainCam, CAM_MODE_NORMAL); + Camera_RequestMode(mainCam, CAM_MODE_NORMAL); func_800C0808(play, camIdx, player, CAM_SET_CS_C); break; case 4200: @@ -902,7 +902,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 camIdx, s16 csId, Actor* actor csInfo->keyFrameCnt = 3; Player_SetCsAction(play, &player->actor, 8); - Camera_ChangeMode(mainCam, CAM_MODE_NORMAL); + Camera_RequestMode(mainCam, CAM_MODE_NORMAL); func_800C0808(play, camIdx, player, CAM_SET_CS_C); break; case 4210: @@ -1319,7 +1319,7 @@ s32 OnePointCutscene_Attention(PlayState* play, Actor* actor) { parentCam = play->cameraPtrs[CAM_ID_MAIN]; if (parentCam->mode == CAM_MODE_FOLLOWBOOMERANG) { osSyncPrintf(VT_COL(YELLOW, BLACK) "actor attention demo camera: change mode BOOKEEPON -> NORMAL\n" VT_RST); - Camera_ChangeMode(parentCam, CAM_MODE_NORMAL); + Camera_RequestMode(parentCam, CAM_MODE_NORMAL); } // Finds the camera of the first actor attention demo with a lower category actor, or the first non-attention demo diff --git a/soh/src/code/z_play.c b/soh/src/code/z_play.c index 843fa301ee..fd08223236 100644 --- a/soh/src/code/z_play.c +++ b/soh/src/code/z_play.c @@ -586,7 +586,7 @@ void Play_Init(GameState* thisx) { player = GET_PLAYER(play); Camera_InitPlayerSettings(&play->mainCamera, player); - Camera_ChangeMode(&play->mainCamera, CAM_MODE_NORMAL); + Camera_RequestMode(&play->mainCamera, CAM_MODE_NORMAL); // OTRTODO: Bounds check cameraDataList to guard against scenes spawning the player with // an out of bounds background camera index. This requires adding an extra field to the diff --git a/soh/src/code/z_player_lib.c b/soh/src/code/z_player_lib.c index bf93c117c1..c9d5ba5d8c 100644 --- a/soh/src/code/z_player_lib.c +++ b/soh/src/code/z_player_lib.c @@ -746,8 +746,8 @@ void Player_SetAutoLockOnActor(PlayState* play, Actor* actor) { this->focusActor = actor; this->autoLockOnActor = actor; this->stateFlags1 |= PLAYER_STATE1_FRIENDLY_ACTOR_FOCUS; - Camera_SetParam(Play_GetCamera(play, 0), 8, actor); - Camera_ChangeMode(Play_GetCamera(play, 0), 2); + Camera_SetParam(Play_GetCamera(play, CAM_ID_MAIN), 8, actor); + Camera_RequestMode(Play_GetCamera(play, CAM_ID_MAIN), 2); } s32 func_8008EF30(PlayState* play) { diff --git a/soh/src/code/z_room.c b/soh/src/code/z_room.c index 68bb0e5b14..cfdedcdaa2 100644 --- a/soh/src/code/z_room.c +++ b/soh/src/code/z_room.c @@ -416,7 +416,7 @@ BgImage* func_80096A74(PolygonType1* polygon1, PlayState* play) { camId = camera->camDataIdx; if (GameInteractor_Should(VB_SHOULD_LOAD_BG_IMAGE, true, &camId)) { // jfifid - camId2 = func_80041C10(&play->colCtx, camId, BGCHECK_SCENE)[2].y; + camId2 = BgCheck_GetBgCamFuncDataImpl(&play->colCtx, camId, BGCHECK_SCENE)[2].y; if (camId2 >= 0) { camId = camId2; } diff --git a/soh/src/overlays/actors/ovl_player_actor/z_player.c b/soh/src/overlays/actors/ovl_player_actor/z_player.c index d23c625814..8120c58314 100644 --- a/soh/src/overlays/actors/ovl_player_actor/z_player.c +++ b/soh/src/overlays/actors/ovl_player_actor/z_player.c @@ -5870,7 +5870,7 @@ s32 func_8083AD4C(PlayState* play, Player* this) { // Check if aiming camera mode should be overridden due to player settings GameInteractor_Should(VB_CHANGE_AIMING_CAMERA, true, &this->heldItemAction, &camMode); - return Camera_ChangeMode(Play_GetCamera(play, CAM_ID_MAIN), camMode); + return Camera_RequestMode(Play_GetCamera(play, CAM_ID_MAIN), camMode); } /** @@ -11469,11 +11469,11 @@ void Player_UpdateCamAndSeqModes(PlayState* play, Player* this) { seqMode = SEQ_MODE_DEFAULT; if (this->csAction != 0) { - Camera_ChangeMode(Play_GetCamera(play, 0), CAM_MODE_NORMAL); + Camera_RequestMode(Play_GetCamera(play, CAM_ID_MAIN), CAM_MODE_NORMAL); } else if (!(this->stateFlags1 & PLAYER_STATE1_FIRST_PERSON)) { if ((this->actor.parent != NULL) && (this->stateFlags3 & PLAYER_STATE3_FLYING_WITH_HOOKSHOT)) { camMode = CAM_MODE_HOOKSHOT; - Camera_SetParam(Play_GetCamera(play, 0), 8, this->actor.parent); + Camera_SetParam(Play_GetCamera(play, CAM_ID_MAIN), 8, this->actor.parent); } else if (Player_Action_8084377C == this->actionFunc) { camMode = CAM_MODE_STILL; } else if (this->stateFlags2 & PLAYER_STATE2_GRABBING_DYNAPOLY) { @@ -11490,7 +11490,7 @@ void Player_UpdateCamAndSeqModes(PlayState* play, Player* this) { } else { camMode = CAM_MODE_BATTLE; } - Camera_SetParam(Play_GetCamera(play, 0), 8, focusActor); + Camera_SetParam(Play_GetCamera(play, CAM_ID_MAIN), 8, focusActor); } else if (this->stateFlags1 & PLAYER_STATE1_CHARGING_SPIN_ATTACK) { camMode = CAM_MODE_CHARGE; } else if (this->stateFlags1 & PLAYER_STATE1_BOOMERANG_THROWN) { @@ -11498,7 +11498,7 @@ void Player_UpdateCamAndSeqModes(PlayState* play, Player* this) { if (CVarGetInteger(CVAR_ENHANCEMENT("BoomerangFirstPerson"), 0)) { // Avoid camera jumps by switching to normal cam to exit the first person camera, // before following the boomerang - if (Play_GetCamera(play, 0)->mode == CAM_MODE_FIRST_PERSON) { + if (Play_GetCamera(play, CAM_ID_MAIN)->mode == CAM_MODE_FIRST_PERSON) { camMode = CAM_MODE_NORMAL; } else { camMode = CAM_MODE_FOLLOWBOOMERANG; @@ -11507,7 +11507,7 @@ void Player_UpdateCamAndSeqModes(PlayState* play, Player* this) { } else { camMode = CAM_MODE_FOLLOWBOOMERANG; } - Camera_SetParam(Play_GetCamera(play, 0), 8, this->boomerangActor); + Camera_SetParam(Play_GetCamera(play, CAM_ID_MAIN), 8, this->boomerangActor); } else if (this->stateFlags1 & (PLAYER_STATE1_HANGING_OFF_LEDGE | PLAYER_STATE1_CLIMBING_LEDGE)) { if (Player_FriendlyLockOnOrParallel(this)) { camMode = CAM_MODE_HANGZ; @@ -11543,7 +11543,7 @@ void Player_UpdateCamAndSeqModes(PlayState* play, Player* this) { } } - Camera_ChangeMode(Play_GetCamera(play, 0), camMode); + Camera_RequestMode(Play_GetCamera(play, CAM_ID_MAIN), camMode); } else { // First person mode seqMode = SEQ_MODE_STILL; @@ -14939,7 +14939,7 @@ s32 Player_UpdateNoclip(Player* this, PlayState* play) { sNoclipEnabled ^= 1; if (sNoclipEnabled) { - Camera_ChangeMode(Play_GetCamera(play, CAM_ID_MAIN), CAM_MODE_Z_AIM); + Camera_RequestMode(Play_GetCamera(play, CAM_ID_MAIN), CAM_MODE_Z_AIM); } }