mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-12 19:04:38 +00:00
Merge branch 'master' into doc_pause_menu
This commit is contained in:
commit
6be902cd24
232 changed files with 2748 additions and 2576 deletions
|
@ -59,7 +59,7 @@ void DynaPolyActor_UpdateCarriedActorRotY(CollisionContext* colCtx, s32 bgId, Ac
|
|||
s16 rotY = colCtx->dyna.bgActors[bgId].curTransform.rot.y - colCtx->dyna.bgActors[bgId].prevTransform.rot.y;
|
||||
|
||||
if (carriedActor->id == ACTOR_PLAYER) {
|
||||
((Player*)carriedActor)->currentYaw += rotY;
|
||||
((Player*)carriedActor)->yaw += rotY;
|
||||
}
|
||||
|
||||
carriedActor->shape.rot.y += rotY;
|
||||
|
|
|
@ -61,7 +61,7 @@ s32 func_800BB2B4(Vec3f* pos, f32* roll, f32* fov, CutsceneCameraPoint* point, s
|
|||
}
|
||||
*curFrame += advance;
|
||||
if (*curFrame >= 1) {
|
||||
if (point[++*keyFrame + 3].continueFlag == -1) {
|
||||
if (point[++*keyFrame + 3].continueFlag == CS_CMD_STOP) {
|
||||
*keyFrame = 0;
|
||||
ret = true;
|
||||
}
|
||||
|
|
1899
src/code/db_camera.c
1899
src/code/db_camera.c
File diff suppressed because it is too large
Load diff
|
@ -76,12 +76,21 @@ const char* sFpExceptionNames[] = {
|
|||
"Unimplemented operation", "Invalid operation", "Division by zero", "Overflow", "Underflow", "Inexact operation",
|
||||
};
|
||||
|
||||
// TODO: import .bss (has reordering issues)
|
||||
#ifndef NON_MATCHING
|
||||
// TODO: match .bss (has reordering issues)
|
||||
extern FaultMgr* sFaultInstance;
|
||||
extern u8 sFaultAwaitingInput;
|
||||
extern STACK(sFaultStack, 0x600);
|
||||
extern StackEntry sFaultThreadInfo;
|
||||
extern FaultMgr gFaultMgr;
|
||||
#else
|
||||
// Non-matching version for struct shiftability
|
||||
FaultMgr* sFaultInstance;
|
||||
u8 sFaultAwaitingInput;
|
||||
STACK(sFaultStack, 0x600);
|
||||
StackEntry sFaultThreadInfo;
|
||||
FaultMgr gFaultMgr;
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 (*callback)(void*, void*);
|
||||
|
|
|
@ -99,7 +99,15 @@ FaultDrawer sFaultDrawerDefault = {
|
|||
NULL,
|
||||
};
|
||||
|
||||
#ifndef NON_MATCHING
|
||||
// TODO: match .bss (has reordering issues)
|
||||
extern FaultDrawer sFaultDrawer;
|
||||
extern char D_8016B6BC[0x24];
|
||||
#else
|
||||
// Non-matching version for struct shiftability
|
||||
FaultDrawer sFaultDrawer;
|
||||
char D_8016B6BC[0x24];
|
||||
#endif
|
||||
|
||||
void FaultDrawer_SetOsSyncPrintfEnabled(u32 enabled) {
|
||||
sFaultDrawer.osSyncPrintfEnabled = enabled;
|
||||
|
|
|
@ -841,7 +841,10 @@ void Actor_Destroy(Actor* actor, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
void func_8002D7EC(Actor* actor) {
|
||||
/**
|
||||
* Update actor's position factoring in velocity and collider displacement
|
||||
*/
|
||||
void Actor_UpdatePos(Actor* actor) {
|
||||
f32 speedRate = R_UPDATE_RATE * 0.5f;
|
||||
|
||||
actor->world.pos.x += (actor->velocity.x * speedRate) + actor->colChkInfo.displacement.x;
|
||||
|
@ -849,22 +852,34 @@ void func_8002D7EC(Actor* actor) {
|
|||
actor->world.pos.z += (actor->velocity.z * speedRate) + actor->colChkInfo.displacement.z;
|
||||
}
|
||||
|
||||
void func_8002D868(Actor* actor) {
|
||||
/**
|
||||
* Update actor's velocity accounting for gravity (without dropping below minimum y velocity)
|
||||
*/
|
||||
void Actor_UpdateVelocityXZGravity(Actor* actor) {
|
||||
actor->velocity.x = Math_SinS(actor->world.rot.y) * actor->speed;
|
||||
actor->velocity.z = Math_CosS(actor->world.rot.y) * actor->speed;
|
||||
|
||||
actor->velocity.y += actor->gravity;
|
||||
|
||||
if (actor->velocity.y < actor->minVelocityY) {
|
||||
actor->velocity.y = actor->minVelocityY;
|
||||
}
|
||||
}
|
||||
|
||||
void Actor_MoveForward(Actor* actor) {
|
||||
func_8002D868(actor);
|
||||
func_8002D7EC(actor);
|
||||
/**
|
||||
* Move actor while accounting for its current velocity and gravity.
|
||||
* `actor.speed` is used as the XZ velocity.
|
||||
* The actor will move in the direction of its world yaw.
|
||||
*/
|
||||
void Actor_MoveXZGravity(Actor* actor) {
|
||||
Actor_UpdateVelocityXZGravity(actor);
|
||||
Actor_UpdatePos(actor);
|
||||
}
|
||||
|
||||
void func_8002D908(Actor* actor) {
|
||||
/**
|
||||
* Update actor's velocity without gravity.
|
||||
*/
|
||||
void Actor_UpdateVelocityXYZ(Actor* actor) {
|
||||
f32 speedXZ = Math_CosS(actor->world.rot.x) * actor->speed;
|
||||
|
||||
actor->velocity.x = Math_SinS(actor->world.rot.y) * speedXZ;
|
||||
|
@ -872,23 +887,33 @@ void func_8002D908(Actor* actor) {
|
|||
actor->velocity.z = Math_CosS(actor->world.rot.y) * speedXZ;
|
||||
}
|
||||
|
||||
void func_8002D97C(Actor* actor) {
|
||||
func_8002D908(actor);
|
||||
func_8002D7EC(actor);
|
||||
/**
|
||||
* Move actor while accounting for its current velocity.
|
||||
* `actor.speed` is used as the XYZ velocity.
|
||||
* The actor will move in the direction of its world yaw and pitch, with positive pitch moving upwards.
|
||||
*/
|
||||
void Actor_MoveXYZ(Actor* actor) {
|
||||
Actor_UpdateVelocityXYZ(actor);
|
||||
Actor_UpdatePos(actor);
|
||||
}
|
||||
|
||||
void func_8002D9A4(Actor* actor, f32 arg1) {
|
||||
actor->speed = Math_CosS(actor->world.rot.x) * arg1;
|
||||
actor->velocity.y = -Math_SinS(actor->world.rot.x) * arg1;
|
||||
/**
|
||||
* From a given XYZ speed value, set the corresponding XZ speed as `actor.speed`, and Y speed as Y velocity.
|
||||
* Only the actor's world pitch is factored in, with positive pitch moving downwards.
|
||||
*/
|
||||
void Actor_SetProjectileSpeed(Actor* actor, f32 speedXYZ) {
|
||||
actor->speed = Math_CosS(actor->world.rot.x) * speedXYZ;
|
||||
actor->velocity.y = -Math_SinS(actor->world.rot.x) * speedXYZ;
|
||||
}
|
||||
|
||||
void func_8002D9F8(Actor* actor, SkelAnime* skelAnime) {
|
||||
Vec3f sp1C;
|
||||
void Actor_UpdatePosByAnimation(Actor* actor, SkelAnime* skelAnime) {
|
||||
Vec3f posDiff;
|
||||
|
||||
SkelAnime_UpdateTranslation(skelAnime, &sp1C, actor->shape.rot.y);
|
||||
actor->world.pos.x += sp1C.x * actor->scale.x;
|
||||
actor->world.pos.y += sp1C.y * actor->scale.y;
|
||||
actor->world.pos.z += sp1C.z * actor->scale.z;
|
||||
SkelAnime_UpdateTranslation(skelAnime, &posDiff, actor->shape.rot.y);
|
||||
|
||||
actor->world.pos.x += posDiff.x * actor->scale.x;
|
||||
actor->world.pos.y += posDiff.y * actor->scale.y;
|
||||
actor->world.pos.z += posDiff.z * actor->scale.z;
|
||||
}
|
||||
|
||||
s16 Actor_WorldYawTowardActor(Actor* actorA, Actor* actorB) {
|
||||
|
@ -4037,7 +4062,7 @@ s16 func_80034DD4(Actor* actor, PlayState* play, s16 arg2, f32 arg3) {
|
|||
Player* player = GET_PLAYER(play);
|
||||
f32 var;
|
||||
|
||||
if ((play->csCtx.state != CS_STATE_IDLE) || gDbgCamEnabled) {
|
||||
if ((play->csCtx.state != CS_STATE_IDLE) || gDebugCamEnabled) {
|
||||
var = Math_Vec3f_DistXYZ(&actor->world.pos, &play->view.eye) * 0.25f;
|
||||
} else {
|
||||
var = Math_Vec3f_DistXYZ(&actor->world.pos, &player->actor.world.pos);
|
||||
|
@ -4090,7 +4115,7 @@ s32 func_80035124(Actor* actor, PlayState* play) {
|
|||
if (Actor_HasParent(actor, play)) {
|
||||
actor->params = 1;
|
||||
} else if (!(actor->bgCheckFlags & BGCHECKFLAG_GROUND)) {
|
||||
Actor_MoveForward(actor);
|
||||
Actor_MoveXZGravity(actor);
|
||||
Math_SmoothStepToF(&actor->speed, 0.0f, 1.0f, 0.1f, 0.0f);
|
||||
} else if ((actor->bgCheckFlags & BGCHECKFLAG_GROUND_TOUCH) && (actor->velocity.y < -4.0f)) {
|
||||
ret = 1;
|
||||
|
@ -5711,7 +5736,7 @@ s32 Actor_TrackPlayerSetFocusHeight(PlayState* play, Actor* actor, Vec3s* headRo
|
|||
actor->focus.pos = actor->world.pos;
|
||||
actor->focus.pos.y += focusHeight;
|
||||
|
||||
if (!(((play->csCtx.state != CS_STATE_IDLE) || gDbgCamEnabled) &&
|
||||
if (!(((play->csCtx.state != CS_STATE_IDLE) || gDebugCamEnabled) &&
|
||||
(gSaveContext.entranceIndex == ENTR_KOKIRI_FOREST_0))) {
|
||||
yaw = ABS((s16)(actor->yawTowardsPlayer - actor->shape.rot.y));
|
||||
if (yaw >= 0x4300) {
|
||||
|
@ -5720,7 +5745,7 @@ s32 Actor_TrackPlayerSetFocusHeight(PlayState* play, Actor* actor, Vec3s* headRo
|
|||
}
|
||||
}
|
||||
|
||||
if (((play->csCtx.state != CS_STATE_IDLE) || gDbgCamEnabled) &&
|
||||
if (((play->csCtx.state != CS_STATE_IDLE) || gDebugCamEnabled) &&
|
||||
(gSaveContext.entranceIndex == ENTR_KOKIRI_FOREST_0)) {
|
||||
target = play->view.eye;
|
||||
} else {
|
||||
|
@ -5755,7 +5780,7 @@ s32 Actor_TrackPlayer(PlayState* play, Actor* actor, Vec3s* headRot, Vec3s* tors
|
|||
|
||||
actor->focus.pos = focusPos;
|
||||
|
||||
if (!(((play->csCtx.state != CS_STATE_IDLE) || gDbgCamEnabled) &&
|
||||
if (!(((play->csCtx.state != CS_STATE_IDLE) || gDebugCamEnabled) &&
|
||||
(gSaveContext.entranceIndex == ENTR_KOKIRI_FOREST_0))) {
|
||||
yaw = ABS((s16)(actor->yawTowardsPlayer - actor->shape.rot.y));
|
||||
if (yaw >= 0x4300) {
|
||||
|
@ -5764,7 +5789,7 @@ s32 Actor_TrackPlayer(PlayState* play, Actor* actor, Vec3s* headRot, Vec3s* tors
|
|||
}
|
||||
}
|
||||
|
||||
if (((play->csCtx.state != CS_STATE_IDLE) || gDbgCamEnabled) &&
|
||||
if (((play->csCtx.state != CS_STATE_IDLE) || gDebugCamEnabled) &&
|
||||
(gSaveContext.entranceIndex == ENTR_KOKIRI_FOREST_0)) {
|
||||
target = play->view.eye;
|
||||
} else {
|
||||
|
|
|
@ -487,12 +487,12 @@ Vec3s* Camera_GetBgCamFuncDataUnderPlayer(Camera* camera, u16* bgCamCount) {
|
|||
CollisionPoly* floorPoly;
|
||||
s32 pad;
|
||||
s32 bgId;
|
||||
PosRot playerPosShape;
|
||||
PosRot playerPosRot;
|
||||
|
||||
Actor_GetWorldPosShapeRot(&playerPosShape, &camera->player->actor);
|
||||
playerPosShape.pos.y += Player_GetHeight(camera->player);
|
||||
Actor_GetWorldPosShapeRot(&playerPosRot, &camera->player->actor);
|
||||
playerPosRot.pos.y += Player_GetHeight(camera->player);
|
||||
|
||||
if (BgCheck_EntityRaycastDown3(&camera->play->colCtx, &floorPoly, &bgId, &playerPosShape.pos) == BGCHECK_Y_MIN) {
|
||||
if (BgCheck_EntityRaycastDown3(&camera->play->colCtx, &floorPoly, &bgId, &playerPosRot.pos) == BGCHECK_Y_MIN) {
|
||||
// no floor
|
||||
return NULL;
|
||||
}
|
||||
|
@ -508,14 +508,14 @@ Vec3s* Camera_GetBgCamFuncDataUnderPlayer(Camera* camera, u16* bgCamCount) {
|
|||
* Returns the camera data index otherwise.
|
||||
*/
|
||||
s32 Camera_GetWaterBoxBgCamIndex(Camera* camera, f32* waterY) {
|
||||
PosRot playerPosShape;
|
||||
PosRot playerPosRot;
|
||||
WaterBox* waterBox;
|
||||
s32 bgCamIndex;
|
||||
|
||||
Actor_GetWorldPosShapeRot(&playerPosShape, &camera->player->actor);
|
||||
*waterY = playerPosShape.pos.y;
|
||||
Actor_GetWorldPosShapeRot(&playerPosRot, &camera->player->actor);
|
||||
*waterY = playerPosRot.pos.y;
|
||||
|
||||
if (!WaterBox_GetSurface1(camera->play, &camera->play->colCtx, playerPosShape.pos.x, playerPosShape.pos.z, waterY,
|
||||
if (!WaterBox_GetSurface1(camera->play, &camera->play->colCtx, playerPosRot.pos.x, playerPosRot.pos.z, waterY,
|
||||
&waterBox)) {
|
||||
// player's position is not in a water box.
|
||||
*waterY = BGCHECK_Y_MIN;
|
||||
|
@ -783,9 +783,9 @@ void Camera_UpdateInterface(s16 interfaceField) {
|
|||
}
|
||||
}
|
||||
|
||||
if ((interfaceField & CAM_HUD_VISIBILITY_MASK) != CAM_HUD_VISIBILITY_IGNORE) {
|
||||
if ((interfaceField & CAM_HUD_VISIBILITY_MASK) != CAM_HUD_VISIBILITY(CAM_HUD_VISIBILITY_IGNORE)) {
|
||||
hudVisibilityMode = (interfaceField & CAM_HUD_VISIBILITY_MASK) >> CAM_HUD_VISIBILITY_SHIFT;
|
||||
if (hudVisibilityMode == (CAM_HUD_VISIBILITY_ALL >> CAM_HUD_VISIBILITY_SHIFT)) {
|
||||
if (hudVisibilityMode == CAM_HUD_VISIBILITY_ALL) {
|
||||
hudVisibilityMode = HUD_VISIBILITY_ALL;
|
||||
}
|
||||
if (sCameraHudVisibilityMode != hudVisibilityMode) {
|
||||
|
@ -5204,8 +5204,8 @@ s32 Camera_Unique9(Camera* camera) {
|
|||
VecGeo scratchGeo;
|
||||
VecGeo playerTargetOffset;
|
||||
s16 action;
|
||||
s16 atInitFlags;
|
||||
s16 eyeInitFlags;
|
||||
s16 atFlags;
|
||||
s16 eyeFlags;
|
||||
s16 pad2;
|
||||
PosRot targethead;
|
||||
PosRot playerhead;
|
||||
|
@ -5257,19 +5257,21 @@ s32 Camera_Unique9(Camera* camera) {
|
|||
rwData->curKeyFrame = &ONEPOINT_CS_INFO(camera)->keyFrames[rwData->curKeyFrameIdx];
|
||||
rwData->keyFrameTimer = rwData->curKeyFrame->timerInit;
|
||||
|
||||
if (rwData->curKeyFrame->unk_01 != 0xFF) {
|
||||
if ((rwData->curKeyFrame->unk_01 & 0xF0) == 0x80) {
|
||||
D_8011D3AC = rwData->curKeyFrame->unk_01 & 0xF;
|
||||
} else if ((rwData->curKeyFrame->unk_01 & 0xF0) == 0xC0) {
|
||||
if (rwData->curKeyFrame->initField != ONEPOINT_CS_INIT_FIELD_NONE) {
|
||||
if (ONEPOINT_CS_INIT_FIELD_IS_TYPE_ACTORCAT(rwData->curKeyFrame->initField)) {
|
||||
D_8011D3AC = rwData->curKeyFrame->initField & 0xF;
|
||||
} else if (ONEPOINT_CS_INIT_FIELD_IS_TYPE_HUD_VISIBILITY(rwData->curKeyFrame->initField)) {
|
||||
Camera_UpdateInterface(
|
||||
CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY(rwData->curKeyFrame->unk_01), 0));
|
||||
} else if (camera->player->stateFlags1 & PLAYER_STATE1_27 &&
|
||||
player->currentBoots != PLAYER_BOOTS_IRON) {
|
||||
func_8002DF38(camera->play, camera->target, PLAYER_CSMODE_8);
|
||||
osSyncPrintf("camera: demo: player demo set WAIT\n");
|
||||
} else {
|
||||
osSyncPrintf("camera: demo: player demo set %d\n", rwData->curKeyFrame->unk_01);
|
||||
func_8002DF38(camera->play, camera->target, rwData->curKeyFrame->unk_01);
|
||||
CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, rwData->curKeyFrame->initField, 0));
|
||||
} else { // initField is of type PlayerCsMode
|
||||
if ((camera->player->stateFlags1 & PLAYER_STATE1_27) &&
|
||||
(player->currentBoots != PLAYER_BOOTS_IRON)) {
|
||||
func_8002DF38(camera->play, camera->target, PLAYER_CSMODE_8);
|
||||
osSyncPrintf("camera: demo: player demo set WAIT\n");
|
||||
} else {
|
||||
osSyncPrintf("camera: demo: player demo set %d\n", rwData->curKeyFrame->initField);
|
||||
func_8002DF38(camera->play, camera->target, rwData->curKeyFrame->initField);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -5283,29 +5285,29 @@ s32 Camera_Unique9(Camera* camera) {
|
|||
rwData->isNewKeyFrame = false;
|
||||
}
|
||||
|
||||
atInitFlags = rwData->curKeyFrame->initFlags & 0xFF;
|
||||
if (atInitFlags == 1) {
|
||||
atFlags = rwData->curKeyFrame->viewFlags & 0xFF;
|
||||
if (atFlags == 1) {
|
||||
rwData->atTarget = rwData->curKeyFrame->atTargetInit;
|
||||
} else if (atInitFlags == 2) {
|
||||
} else if (atFlags == 2) {
|
||||
if (rwData->isNewKeyFrame) {
|
||||
rwData->atTarget.x = camera->play->view.at.x + rwData->curKeyFrame->atTargetInit.x;
|
||||
rwData->atTarget.y = camera->play->view.at.y + rwData->curKeyFrame->atTargetInit.y;
|
||||
rwData->atTarget.z = camera->play->view.at.z + rwData->curKeyFrame->atTargetInit.z;
|
||||
}
|
||||
} else if (atInitFlags == 3) {
|
||||
} else if (atFlags == 3) {
|
||||
if (rwData->isNewKeyFrame) {
|
||||
rwData->atTarget.x = camera->at.x + rwData->curKeyFrame->atTargetInit.x;
|
||||
rwData->atTarget.y = camera->at.y + rwData->curKeyFrame->atTargetInit.y;
|
||||
rwData->atTarget.z = camera->at.z + rwData->curKeyFrame->atTargetInit.z;
|
||||
}
|
||||
} else if (atInitFlags == 4 || atInitFlags == 0x84) {
|
||||
} else if (atFlags == 4 || atFlags == 0x84) {
|
||||
if (camera->target != NULL && camera->target->update != NULL) {
|
||||
Actor_GetFocus(&targethead, camera->target);
|
||||
Actor_GetFocus(&playerhead, &camera->player->actor);
|
||||
playerhead.pos.x = playerPosRot.pos.x;
|
||||
playerhead.pos.z = playerPosRot.pos.z;
|
||||
OLib_Vec3fDiffToVecGeo(&playerTargetOffset, &targethead.pos, &playerhead.pos);
|
||||
if (atInitFlags & (s16)0x8080) {
|
||||
if (atFlags & (s16)0x8080) {
|
||||
scratchGeo.pitch = CAM_DEG_TO_BINANG(rwData->curKeyFrame->atTargetInit.x);
|
||||
scratchGeo.yaw = CAM_DEG_TO_BINANG(rwData->curKeyFrame->atTargetInit.y);
|
||||
scratchGeo.r = rwData->curKeyFrame->atTargetInit.z;
|
||||
|
@ -5323,9 +5325,9 @@ s32 Camera_Unique9(Camera* camera) {
|
|||
camera->target = NULL;
|
||||
rwData->atTarget = camera->at;
|
||||
}
|
||||
} else if (atInitFlags & 0x6060) {
|
||||
if (!(atInitFlags & 4) || rwData->isNewKeyFrame) {
|
||||
if (atInitFlags & 0x2020) {
|
||||
} else if (atFlags & 0x6060) {
|
||||
if (!(atFlags & 4) || rwData->isNewKeyFrame) {
|
||||
if (atFlags & 0x2020) {
|
||||
focusActor = &camera->player->actor;
|
||||
} else if (camera->target != NULL && camera->target->update != NULL) {
|
||||
focusActor = camera->target;
|
||||
|
@ -5335,15 +5337,15 @@ s32 Camera_Unique9(Camera* camera) {
|
|||
}
|
||||
|
||||
if (focusActor != NULL) {
|
||||
if ((atInitFlags & 0xF) == 1) {
|
||||
if ((atFlags & 0xF) == 1) {
|
||||
Actor_GetFocus(&atFocusPosRot, focusActor);
|
||||
} else if ((atInitFlags & 0xF) == 2) {
|
||||
} else if ((atFlags & 0xF) == 2) {
|
||||
Actor_GetWorld(&atFocusPosRot, focusActor);
|
||||
} else {
|
||||
Actor_GetWorldPosShapeRot(&atFocusPosRot, focusActor);
|
||||
}
|
||||
|
||||
if (atInitFlags & (s16)0x8080) {
|
||||
if (atFlags & (s16)0x8080) {
|
||||
scratchGeo.pitch = CAM_DEG_TO_BINANG(rwData->curKeyFrame->atTargetInit.x);
|
||||
scratchGeo.yaw = CAM_DEG_TO_BINANG(rwData->curKeyFrame->atTargetInit.y);
|
||||
scratchGeo.r = rwData->curKeyFrame->atTargetInit.z;
|
||||
|
@ -5365,36 +5367,35 @@ s32 Camera_Unique9(Camera* camera) {
|
|||
rwData->atTarget = *at;
|
||||
}
|
||||
|
||||
eyeInitFlags = rwData->curKeyFrame->initFlags & 0xFF00;
|
||||
if (eyeInitFlags == 0x100) {
|
||||
eyeFlags = rwData->curKeyFrame->viewFlags & 0xFF00;
|
||||
if (eyeFlags == 0x100) {
|
||||
rwData->eyeTarget = rwData->curKeyFrame->eyeTargetInit;
|
||||
} else if (eyeInitFlags == 0x200) {
|
||||
} else if (eyeFlags == 0x200) {
|
||||
if (rwData->isNewKeyFrame) {
|
||||
rwData->eyeTarget.x = camera->play->view.eye.x + rwData->curKeyFrame->eyeTargetInit.x;
|
||||
rwData->eyeTarget.y = camera->play->view.eye.y + rwData->curKeyFrame->eyeTargetInit.y;
|
||||
rwData->eyeTarget.z = camera->play->view.eye.z + rwData->curKeyFrame->eyeTargetInit.z;
|
||||
}
|
||||
} else if (eyeInitFlags == 0x300) {
|
||||
} else if (eyeFlags == 0x300) {
|
||||
if (rwData->isNewKeyFrame) {
|
||||
rwData->eyeTarget.x = camera->eyeNext.x + rwData->curKeyFrame->eyeTargetInit.x;
|
||||
rwData->eyeTarget.y = camera->eyeNext.y + rwData->curKeyFrame->eyeTargetInit.y;
|
||||
rwData->eyeTarget.z = camera->eyeNext.z + rwData->curKeyFrame->eyeTargetInit.z;
|
||||
}
|
||||
} else if (eyeInitFlags == 0x400 || eyeInitFlags == (s16)0x8400 || eyeInitFlags == 0x500 ||
|
||||
eyeInitFlags == (s16)0x8500) {
|
||||
} else if (eyeFlags == 0x400 || eyeFlags == (s16)0x8400 || eyeFlags == 0x500 || eyeFlags == (s16)0x8500) {
|
||||
if (camera->target != NULL && camera->target->update != NULL) {
|
||||
Actor_GetFocus(&targethead, camera->target);
|
||||
Actor_GetFocus(&playerhead, &camera->player->actor);
|
||||
playerhead.pos.x = playerPosRot.pos.x;
|
||||
playerhead.pos.z = playerPosRot.pos.z;
|
||||
OLib_Vec3fDiffToVecGeo(&playerTargetOffset, &targethead.pos, &playerhead.pos);
|
||||
if (eyeInitFlags == 0x400 || eyeInitFlags == (s16)0x8400) {
|
||||
if (eyeFlags == 0x400 || eyeFlags == (s16)0x8400) {
|
||||
eyeLookAtPos = targethead.pos;
|
||||
} else {
|
||||
eyeLookAtPos = rwData->atTarget;
|
||||
}
|
||||
|
||||
if (eyeInitFlags & (s16)0x8080) {
|
||||
if (eyeFlags & (s16)0x8080) {
|
||||
scratchGeo.pitch = CAM_DEG_TO_BINANG(rwData->curKeyFrame->eyeTargetInit.x);
|
||||
scratchGeo.yaw = CAM_DEG_TO_BINANG(rwData->curKeyFrame->eyeTargetInit.y);
|
||||
scratchGeo.r = rwData->curKeyFrame->eyeTargetInit.z;
|
||||
|
@ -5412,9 +5413,9 @@ s32 Camera_Unique9(Camera* camera) {
|
|||
camera->target = NULL;
|
||||
rwData->eyeTarget = *eyeNext;
|
||||
}
|
||||
} else if (eyeInitFlags & 0x6060) {
|
||||
if (!(eyeInitFlags & 0x400) || rwData->isNewKeyFrame) {
|
||||
if (eyeInitFlags & 0x2020) {
|
||||
} else if (eyeFlags & 0x6060) {
|
||||
if (!(eyeFlags & 0x400) || rwData->isNewKeyFrame) {
|
||||
if (eyeFlags & 0x2020) {
|
||||
focusActor = &camera->player->actor;
|
||||
} else if (camera->target != NULL && camera->target->update != NULL) {
|
||||
focusActor = camera->target;
|
||||
|
@ -5424,10 +5425,10 @@ s32 Camera_Unique9(Camera* camera) {
|
|||
}
|
||||
|
||||
if (focusActor != NULL) {
|
||||
if ((eyeInitFlags & 0xF00) == 0x100) {
|
||||
if ((eyeFlags & 0xF00) == 0x100) {
|
||||
// head
|
||||
Actor_GetFocus(&eyeFocusPosRot, focusActor);
|
||||
} else if ((eyeInitFlags & 0xF00) == 0x200) {
|
||||
} else if ((eyeFlags & 0xF00) == 0x200) {
|
||||
// world
|
||||
Actor_GetWorld(&eyeFocusPosRot, focusActor);
|
||||
} else {
|
||||
|
@ -5435,7 +5436,7 @@ s32 Camera_Unique9(Camera* camera) {
|
|||
Actor_GetWorldPosShapeRot(&eyeFocusPosRot, focusActor);
|
||||
}
|
||||
|
||||
if (eyeInitFlags & (s16)0x8080) {
|
||||
if (eyeFlags & (s16)0x8080) {
|
||||
scratchGeo.pitch = CAM_DEG_TO_BINANG(rwData->curKeyFrame->eyeTargetInit.x);
|
||||
scratchGeo.yaw = CAM_DEG_TO_BINANG(rwData->curKeyFrame->eyeTargetInit.y);
|
||||
scratchGeo.r = rwData->curKeyFrame->eyeTargetInit.z;
|
||||
|
@ -5458,10 +5459,10 @@ s32 Camera_Unique9(Camera* camera) {
|
|||
rwData->eyeTarget = *eyeNext;
|
||||
}
|
||||
|
||||
if (rwData->curKeyFrame->initFlags == 2) {
|
||||
if (rwData->curKeyFrame->viewFlags == 2) {
|
||||
rwData->fovTarget = camera->play->view.fovy;
|
||||
rwData->rollTarget = 0;
|
||||
} else if (rwData->curKeyFrame->initFlags == 0) {
|
||||
} else if (rwData->curKeyFrame->viewFlags == 0) {
|
||||
rwData->fovTarget = camera->fov;
|
||||
rwData->rollTarget = camera->roll;
|
||||
} else {
|
||||
|
@ -6805,8 +6806,8 @@ s32 Camera_Special6(Camera* camera) {
|
|||
// Change "screens"
|
||||
camera->player->actor.freezeTimer = 12;
|
||||
// Overwrite hud visibility to CAM_HUD_VISIBILITY_HEARTS_FORCE
|
||||
sCameraInterfaceField =
|
||||
(sCameraInterfaceField & (u16)~CAM_HUD_VISIBILITY_MASK) | CAM_HUD_VISIBILITY_HEARTS_FORCE;
|
||||
sCameraInterfaceField = (sCameraInterfaceField & (u16)~CAM_HUD_VISIBILITY_MASK) |
|
||||
CAM_HUD_VISIBILITY(CAM_HUD_VISIBILITY_HEARTS_FORCE);
|
||||
rwData->initalPlayerY = playerPosRot->pos.y;
|
||||
rwData->animTimer = 12;
|
||||
*eyeNext = bgCamPos;
|
||||
|
@ -6842,7 +6843,8 @@ s32 Camera_Special6(Camera* camera) {
|
|||
} else {
|
||||
// Camera following player on the x axis.
|
||||
// Overwrite hud visibility to CAM_HUD_VISIBILITY_ALL
|
||||
sCameraInterfaceField = (sCameraInterfaceField & (u16)~CAM_HUD_VISIBILITY_MASK) | CAM_HUD_VISIBILITY_ALL;
|
||||
sCameraInterfaceField =
|
||||
(sCameraInterfaceField & (u16)~CAM_HUD_VISIBILITY_MASK) | CAM_HUD_VISIBILITY(CAM_HUD_VISIBILITY_ALL);
|
||||
eyePosCalc = *eyeNext;
|
||||
eyePosCalc.x += (playerPosRot->pos.x - eyePosCalc.x) * 0.5f;
|
||||
eyePosCalc.y += (playerPosRot->pos.y - rwData->initalPlayerY) * 0.2f;
|
||||
|
@ -7049,12 +7051,12 @@ void Camera_Init(Camera* camera, View* view, CollisionContext* colCtx, PlayState
|
|||
R_CAM_DATA(i) = sCamDataRegsInit[i];
|
||||
}
|
||||
|
||||
DbCamera_Reset(camera, &D_8015BD80);
|
||||
DebugCamera_Reset(camera, &D_8015BD80);
|
||||
sInitRegs = false;
|
||||
PREG(88) = -1;
|
||||
}
|
||||
camera->play = D_8015BD7C = play;
|
||||
DbCamera_Init(&D_8015BD80, camera);
|
||||
DebugCamera_Init(&D_8015BD80, camera);
|
||||
curUID = sNextUID;
|
||||
sNextUID++;
|
||||
while (curUID != 0) {
|
||||
|
@ -7144,29 +7146,29 @@ void Camera_Stub80058140(Camera* camera) {
|
|||
}
|
||||
|
||||
void Camera_InitDataUsingPlayer(Camera* camera, Player* player) {
|
||||
PosRot playerPosShape;
|
||||
PosRot playerPosRot;
|
||||
VecGeo eyeNextAtOffset;
|
||||
s32 bgId;
|
||||
Vec3f floorPos;
|
||||
Vec3f floorNorm;
|
||||
s32 upXZ;
|
||||
f32 playerToAtOffsetY;
|
||||
Vec3f* eye = &camera->eye;
|
||||
Vec3f* at = &camera->at;
|
||||
Vec3f* eyeNext = &camera->eyeNext;
|
||||
|
||||
Actor_GetWorldPosShapeRot(&playerPosShape, &player->actor);
|
||||
Actor_GetWorldPosShapeRot(&playerPosRot, &player->actor);
|
||||
playerToAtOffsetY = Player_GetHeight(player);
|
||||
camera->player = player;
|
||||
camera->playerPosRot = playerPosShape;
|
||||
camera->playerPosRot = playerPosRot;
|
||||
camera->dist = eyeNextAtOffset.r = 180.0f;
|
||||
camera->inputDir.y = playerPosShape.rot.y;
|
||||
camera->inputDir.y = playerPosRot.rot.y;
|
||||
eyeNextAtOffset.yaw = camera->inputDir.y - 0x7FFF;
|
||||
camera->inputDir.x = eyeNextAtOffset.pitch = 0x71C;
|
||||
camera->inputDir.z = 0;
|
||||
camera->camDir = camera->inputDir;
|
||||
camera->xzSpeed = 0.0f;
|
||||
camera->playerPosDelta.y = 0.0f;
|
||||
camera->at = playerPosShape.pos;
|
||||
camera->at = playerPosRot.pos;
|
||||
camera->at.y += playerToAtOffsetY;
|
||||
|
||||
camera->playerToAtOffset.x = 0;
|
||||
|
@ -7182,7 +7184,7 @@ void Camera_InitDataUsingPlayer(Camera* camera, Player* player) {
|
|||
camera->up.y = 1.0f;
|
||||
camera->up.x = upXZ;
|
||||
|
||||
if (Camera_GetFloorYNorm(camera, &floorPos, at, &bgId) != BGCHECK_Y_MIN) {
|
||||
if (Camera_GetFloorYNorm(camera, &floorNorm, at, &bgId) != BGCHECK_Y_MIN) {
|
||||
camera->bgId = bgId;
|
||||
}
|
||||
|
||||
|
@ -7245,7 +7247,7 @@ void Camera_PrintSettings(Camera* camera) {
|
|||
char sp48[8];
|
||||
s32 i;
|
||||
|
||||
if ((OREG(0) & 1) && (camera->play->activeCamId == camera->camId) && !gDbgCamEnabled) {
|
||||
if ((OREG(0) & 1) && (camera->play->activeCamId == camera->camId) && !gDebugCamEnabled) {
|
||||
for (i = 0; i < NUM_CAMS; i++) {
|
||||
if (camera->play->cameraPtrs[i] == NULL) {
|
||||
sp58[i] = '-';
|
||||
|
@ -7278,15 +7280,15 @@ void Camera_PrintSettings(Camera* camera) {
|
|||
sp48[i] = '\0';
|
||||
|
||||
sp48[camera->play->activeCamId] = 'a';
|
||||
DbCamera_ScreenTextColored(3, 22, DBCAMERA_TEXT_WHITE, sp58);
|
||||
DbCamera_ScreenTextColored(3, 22, DBCAMERA_TEXT_PEACH, sp48);
|
||||
DbCamera_ScreenTextColored(3, 23, DBCAMERA_TEXT_WHITE, "S:");
|
||||
DbCamera_ScreenTextColored(5, 23, DBCAMERA_TEXT_GOLD, sCameraSettingNames[camera->setting]);
|
||||
DbCamera_ScreenTextColored(3, 24, DBCAMERA_TEXT_WHITE, "M:");
|
||||
DbCamera_ScreenTextColored(5, 24, DBCAMERA_TEXT_GOLD, sCameraModeNames[camera->mode]);
|
||||
DbCamera_ScreenTextColored(3, 25, DBCAMERA_TEXT_WHITE, "F:");
|
||||
DbCamera_ScreenTextColored(
|
||||
5, 25, DBCAMERA_TEXT_GOLD,
|
||||
DebugCamera_ScreenTextColored(3, 22, DEBUG_CAM_TEXT_WHITE, sp58);
|
||||
DebugCamera_ScreenTextColored(3, 22, DEBUG_CAM_TEXT_PEACH, sp48);
|
||||
DebugCamera_ScreenTextColored(3, 23, DEBUG_CAM_TEXT_WHITE, "S:");
|
||||
DebugCamera_ScreenTextColored(5, 23, DEBUG_CAM_TEXT_GOLD, sCameraSettingNames[camera->setting]);
|
||||
DebugCamera_ScreenTextColored(3, 24, DEBUG_CAM_TEXT_WHITE, "M:");
|
||||
DebugCamera_ScreenTextColored(5, 24, DEBUG_CAM_TEXT_GOLD, sCameraModeNames[camera->mode]);
|
||||
DebugCamera_ScreenTextColored(3, 25, DEBUG_CAM_TEXT_WHITE, "F:");
|
||||
DebugCamera_ScreenTextColored(
|
||||
5, 25, DEBUG_CAM_TEXT_GOLD,
|
||||
sCameraFunctionNames[sCameraSettings[camera->setting].cameraModes[camera->mode].funcIdx]);
|
||||
|
||||
i = 0;
|
||||
|
@ -7311,8 +7313,8 @@ void Camera_PrintSettings(Camera* camera) {
|
|||
sp50[i++] = ' ';
|
||||
sp50[i++] = ' ';
|
||||
sp50[i] = '\0';
|
||||
DbCamera_ScreenTextColored(3, 26, DBCAMERA_TEXT_WHITE, "I:");
|
||||
DbCamera_ScreenTextColored(5, 26, DBCAMERA_TEXT_GOLD, sp50);
|
||||
DebugCamera_ScreenTextColored(3, 26, DEBUG_CAM_TEXT_WHITE, "I:");
|
||||
DebugCamera_ScreenTextColored(5, 26, DEBUG_CAM_TEXT_GOLD, sp50);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7451,7 +7453,7 @@ s32 Camera_UpdateHotRoom(Camera* camera) {
|
|||
s32 Camera_DbgChangeMode(Camera* camera) {
|
||||
s32 changeDir = 0;
|
||||
|
||||
if (!gDbgCamEnabled && camera->play->activeCamId == CAM_ID_MAIN) {
|
||||
if (!gDebugCamEnabled && camera->play->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);
|
||||
|
@ -7581,12 +7583,12 @@ Vec3s Camera_Update(Camera* camera) {
|
|||
|
||||
player = camera->play->cameraPtrs[CAM_ID_MAIN]->player;
|
||||
|
||||
if (R_DBG_CAM_UPDATE) {
|
||||
if (R_DEBUG_CAM_UPDATE) {
|
||||
osSyncPrintf("camera: in %x\n", camera);
|
||||
}
|
||||
|
||||
if (camera->status == CAM_STAT_CUT) {
|
||||
if (R_DBG_CAM_UPDATE) {
|
||||
if (R_DEBUG_CAM_UPDATE) {
|
||||
osSyncPrintf("camera: cut out %x\n", camera);
|
||||
}
|
||||
return camera->inputDir;
|
||||
|
@ -7661,7 +7663,7 @@ Vec3s Camera_Update(Camera* camera) {
|
|||
Camera_DbgChangeMode(camera);
|
||||
|
||||
if (camera->status == CAM_STAT_WAIT) {
|
||||
if (R_DBG_CAM_UPDATE) {
|
||||
if (R_DEBUG_CAM_UPDATE) {
|
||||
osSyncPrintf("camera: wait out %x\n", camera);
|
||||
}
|
||||
return camera->inputDir;
|
||||
|
@ -7671,7 +7673,7 @@ Vec3s Camera_Update(Camera* camera) {
|
|||
camera->stateFlags &= ~(CAM_STATE_10 | CAM_STATE_5);
|
||||
camera->stateFlags |= CAM_STATE_4;
|
||||
|
||||
if (R_DBG_CAM_UPDATE) {
|
||||
if (R_DEBUG_CAM_UPDATE) {
|
||||
osSyncPrintf("camera: engine (%d %d %d) %04x \n", camera->setting, camera->mode,
|
||||
sCameraSettings[camera->setting].cameraModes[camera->mode].funcIdx, camera->stateFlags);
|
||||
}
|
||||
|
@ -7702,11 +7704,11 @@ Vec3s Camera_Update(Camera* camera) {
|
|||
}
|
||||
}
|
||||
|
||||
if (R_DBG_CAM_UPDATE) {
|
||||
if (R_DEBUG_CAM_UPDATE) {
|
||||
osSyncPrintf("camera: shrink_and_bitem %x(%d)\n", sCameraInterfaceField, camera->play->transitionMode);
|
||||
}
|
||||
|
||||
if (R_DBG_CAM_UPDATE) {
|
||||
if (R_DEBUG_CAM_UPDATE) {
|
||||
osSyncPrintf("camera: engine (%s(%d) %s(%d) %s(%d)) ok!\n", &sCameraSettingNames[camera->setting],
|
||||
camera->setting, &sCameraModeNames[camera->mode], camera->mode,
|
||||
&sCameraFunctionNames[sCameraSettings[camera->setting].cameraModes[camera->mode].funcIdx],
|
||||
|
@ -7715,20 +7717,20 @@ Vec3s Camera_Update(Camera* camera) {
|
|||
|
||||
// enable/disable debug cam
|
||||
if (CHECK_BTN_ALL(D_8015BD7C->state.input[2].press.button, BTN_START)) {
|
||||
gDbgCamEnabled ^= 1;
|
||||
if (gDbgCamEnabled) {
|
||||
DbgCamera_Enable(&D_8015BD80, camera);
|
||||
gDebugCamEnabled ^= 1;
|
||||
if (gDebugCamEnabled) {
|
||||
DebugCamera_Enable(&D_8015BD80, camera);
|
||||
} else if (camera->play->csCtx.state != CS_STATE_IDLE) {
|
||||
Cutscene_StopManual(camera->play, &camera->play->csCtx);
|
||||
}
|
||||
}
|
||||
|
||||
// Debug cam update
|
||||
if (gDbgCamEnabled) {
|
||||
if (gDebugCamEnabled) {
|
||||
camera->play->view.fovy = D_8015BD80.fov;
|
||||
DbCamera_Update(&D_8015BD80, camera);
|
||||
DebugCamera_Update(&D_8015BD80, camera);
|
||||
View_LookAt(&camera->play->view, &D_8015BD80.eye, &D_8015BD80.at, &D_8015BD80.unk_1C);
|
||||
if (R_DBG_CAM_UPDATE) {
|
||||
if (R_DEBUG_CAM_UPDATE) {
|
||||
osSyncPrintf("camera: debug out\n");
|
||||
}
|
||||
return D_8015BD80.sub.unk_104A;
|
||||
|
@ -7804,7 +7806,7 @@ Vec3s Camera_Update(Camera* camera) {
|
|||
camera->timer = 0;
|
||||
}
|
||||
|
||||
if (R_DBG_CAM_UPDATE) {
|
||||
if (R_DEBUG_CAM_UPDATE) {
|
||||
osSyncPrintf("camera: out (%f %f %f) (%f %f %f)\n", camera->at.x, camera->at.y, camera->at.z, camera->eye.x,
|
||||
camera->eye.y, camera->eye.z);
|
||||
osSyncPrintf("camera: dir (%f %d(%f) %d(%f)) (%f)\n", eyeAtAngle.r, eyeAtAngle.pitch,
|
||||
|
@ -8105,7 +8107,7 @@ s32 Camera_ChangeBgCamIndex(Camera* camera, s32 bgCamIndex) {
|
|||
}
|
||||
|
||||
Vec3s* Camera_GetInputDir(Vec3s* dst, Camera* camera) {
|
||||
if (gDbgCamEnabled) {
|
||||
if (gDebugCamEnabled) {
|
||||
*dst = D_8015BD80.sub.unk_104A;
|
||||
return dst;
|
||||
} else {
|
||||
|
@ -8129,7 +8131,7 @@ s16 Camera_GetInputDirYaw(Camera* camera) {
|
|||
}
|
||||
|
||||
Vec3s* Camera_GetCamDir(Vec3s* dst, Camera* camera) {
|
||||
if (gDbgCamEnabled) {
|
||||
if (gDebugCamEnabled) {
|
||||
*dst = D_8015BD80.sub.unk_104A;
|
||||
return dst;
|
||||
} else {
|
||||
|
@ -8331,8 +8333,8 @@ s32 Camera_Copy(Camera* dstCamera, Camera* srcCamera) {
|
|||
return true;
|
||||
}
|
||||
|
||||
s32 Camera_GetDbgCamEnabled(void) {
|
||||
return gDbgCamEnabled;
|
||||
s32 Camera_IsDebugCamEnabled(void) {
|
||||
return gDebugCamEnabled;
|
||||
}
|
||||
|
||||
Vec3f* Camera_GetQuakeOffset(Vec3f* quakeOffset, Camera* camera) {
|
||||
|
|
|
@ -874,7 +874,7 @@ CameraModeValue sDataOnlyNullFlags[] = {
|
|||
*=====================================================================
|
||||
*/
|
||||
|
||||
CameraModeValue sSetPrerendFixedModeZTargetFriendlyData[] = {
|
||||
CameraModeValue sSetPreRendFixedModeZTargetFriendlyData[] = {
|
||||
CAM_FUNCDATA_INTERFACE_FIELD(CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)),
|
||||
};
|
||||
|
||||
|
@ -884,15 +884,15 @@ CameraModeValue sSetPrerendFixedModeZTargetFriendlyData[] = {
|
|||
*=====================================================================
|
||||
*/
|
||||
|
||||
CameraModeValue sSetPrerendPivotModeNormalData[] = {
|
||||
CameraModeValue sSetPreRendPivotModeNormalData[] = {
|
||||
CAM_FUNCDATA_UNIQ7(60, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)),
|
||||
};
|
||||
|
||||
CameraModeValue sSetPrerendPivotModeZTargetFriendlyData[] = {
|
||||
CameraModeValue sSetPreRendPivotModeZTargetFriendlyData[] = {
|
||||
CAM_FUNCDATA_UNIQ7(60, CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)),
|
||||
};
|
||||
|
||||
CameraModeValue sSetPrerendPivotModeTalkData[] = {
|
||||
CameraModeValue sSetPreRendPivotModeTalkData[] = {
|
||||
CAM_FUNCDATA_KEEP0(30, 0, 4, CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE, 0)),
|
||||
};
|
||||
|
||||
|
@ -957,11 +957,11 @@ CameraModeValue sSetFree0ModeNormalData[] = {
|
|||
|
||||
/**
|
||||
*=====================================================================
|
||||
* Custom Data: FREE1 Setting
|
||||
* Custom Data: FREE2 Setting
|
||||
*=====================================================================
|
||||
*/
|
||||
|
||||
CameraModeValue sSetFree1ModeNormalData[] = {
|
||||
CameraModeValue sSetFree2ModeNormalData[] = {
|
||||
CAM_FUNCDATA_INTERFACE_FIELD(CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_IGNORE, UNIQUE6_FLAG_0)),
|
||||
};
|
||||
|
||||
|
@ -1459,7 +1459,7 @@ CameraModeValue sSetDirectedYawModeTalkData[] = {
|
|||
*=====================================================================
|
||||
*/
|
||||
|
||||
CameraModeValue sNormal4ModeTalkData[] = {
|
||||
CameraModeValue sSetNormal4ModeTalkData[] = {
|
||||
CAM_FUNCDATA_KEEP3(-30, 70, 200, 40, 10, 0, 5, 70, 45, 50, 10,
|
||||
CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE,
|
||||
KEEPON3_FLAG_7 | KEEPON3_FLAG_5)),
|
||||
|
@ -1965,15 +1965,15 @@ CameraMode sCamSetPivotInFrontModes[] = {
|
|||
CameraMode sCamSetPreRendFixedModes[] = {
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD3, sDataOnlyNullFlags), // CAM_MODE_NORMAL
|
||||
{ CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_Z_PARALLEL
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD3, sSetPrerendFixedModeZTargetFriendlyData), // CAM_MODE_Z_TARGET_FRIENDLY
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD3, sSetPrerendFixedModeZTargetFriendlyData), // CAM_MODE_TALK
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD3, sSetPreRendFixedModeZTargetFriendlyData), // CAM_MODE_Z_TARGET_FRIENDLY
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD3, sSetPreRendFixedModeZTargetFriendlyData), // CAM_MODE_TALK
|
||||
};
|
||||
|
||||
CameraMode sCamSetPreRendPivotModes[] = {
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ7, sSetPrerendPivotModeNormalData), // CAM_MODE_NORMAL
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ7, sSetPreRendPivotModeNormalData), // CAM_MODE_NORMAL
|
||||
{ CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_Z_PARALLEL
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ7, sSetPrerendPivotModeZTargetFriendlyData), // CAM_MODE_Z_TARGET_FRIENDLY
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP0, sSetPrerendPivotModeTalkData), // CAM_MODE_TALK
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ7, sSetPreRendPivotModeZTargetFriendlyData), // CAM_MODE_Z_TARGET_FRIENDLY
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP0, sSetPreRendPivotModeTalkData), // CAM_MODE_TALK
|
||||
};
|
||||
|
||||
CameraMode sCamSetPreRendSideScrollModes[] = {
|
||||
|
@ -2005,15 +2005,15 @@ CameraMode sCamSetFree0Modes[] = {
|
|||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ6, sSetFree0ModeNormalData), // CAM_MODE_NORMAL
|
||||
};
|
||||
|
||||
CameraMode sCamSetFree1Modes[] = {
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ6, sSetFree1ModeNormalData), // CAM_MODE_NORMAL
|
||||
CameraMode sCamSetFree2Modes[] = {
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ6, sSetFree2ModeNormalData), // CAM_MODE_NORMAL
|
||||
};
|
||||
|
||||
CameraMode sCamSetPivotCornerModes[] = {
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD2, sSetPivotCornerModeNormalData), // CAM_MODE_NORMAL
|
||||
};
|
||||
|
||||
CameraMode sCamSetPivotDivingModes[] = {
|
||||
CameraMode sCamSetPivotWaterSurfaceModes[] = {
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ2, sSetPivotWaterSurfaceModeNormalData), // CAM_MODE_NORMAL
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ2, sSetPivotWaterSurfaceModeZParallelData), // CAM_MODE_Z_PARALLEL
|
||||
};
|
||||
|
@ -2319,7 +2319,7 @@ CameraMode sCamSetNormal4Modes[] = {
|
|||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal2and4ModeNormalData), // CAM_MODE_NORMAL
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeZParallelData), // CAM_MODE_Z_PARALLEL
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeZTargetFriendlyData), // CAM_MODE_Z_TARGET_FRIENDLY
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sNormal4ModeTalkData), // CAM_MODE_TALK
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal4ModeTalkData), // CAM_MODE_TALK
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetNormal1ModeZTargetUnfriendlyData), // CAM_MODE_Z_TARGET_UNFRIENDLY
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeWallClimbData), // CAM_MODE_WALL_CLIMB
|
||||
CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), // CAM_MODE_FIRST_PERSON
|
||||
|
@ -2374,9 +2374,9 @@ CameraSetting sCameraSettings[] = {
|
|||
{ { 0xC5000001 }, sCamSetStart0Modes }, // CAM_SET_START0
|
||||
{ { 0xC5000001 }, sCamSetStart1Modes }, // CAM_SET_START1
|
||||
{ { 0x05000001 }, sCamSetFree0Modes }, // CAM_SET_FREE0
|
||||
{ { 0x05000001 }, sCamSetFree1Modes }, // CAM_SET_FREE2
|
||||
{ { 0x05000001 }, sCamSetFree2Modes }, // CAM_SET_FREE2
|
||||
{ { 0x85000001 }, sCamSetPivotCornerModes }, // CAM_SET_PIVOT_CORNER
|
||||
{ { 0x05000003 }, sCamSetPivotDivingModes }, // CAM_SET_PIVOT_WATER_SURFACE
|
||||
{ { 0x05000003 }, sCamSetPivotWaterSurfaceModes }, // CAM_SET_PIVOT_WATER_SURFACE
|
||||
{ { 0xCE000001 }, sCamSetCs0Modes }, // CAM_SET_CS_0
|
||||
{ { 0x4E000001 }, sCamSetCsTwistedHallwayModes }, // CAM_SET_CS_TWISTED_HALLWAY
|
||||
{ { 0x05000009 }, sCamSetForestBirdsEyeModes }, // CAM_SET_FOREST_BIRDS_EYE
|
||||
|
@ -2555,7 +2555,7 @@ s32 (*sCameraFunctions[])(Camera*) = {
|
|||
|
||||
s32 sInitRegs = 1;
|
||||
|
||||
s32 gDbgCamEnabled = 0;
|
||||
s32 gDebugCamEnabled = false;
|
||||
s32 sDbgModeIdx = -1;
|
||||
s16 sNextUID = 0;
|
||||
|
||||
|
@ -2676,12 +2676,12 @@ s32 sDemo5PrevSfxFrame = -200;
|
|||
// target is player, far from eye
|
||||
OnePointCsFull D_8011D6AC[] = {
|
||||
{
|
||||
// initflags & 0x00FF (at): 2, atTarget is view lookAt + atInit
|
||||
// initFlags & 0xFF00 (eye): none
|
||||
// viewFlags & 0x00FF (at): 2, atTarget is view lookAt + atInit
|
||||
// viewFlags & 0xFF00 (eye): none
|
||||
// action: 15, copy at, eye, roll, fov to camera
|
||||
// result: eye remains in the same location, at is View's lookAt
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0002,
|
||||
1,
|
||||
0,
|
||||
|
@ -2691,12 +2691,12 @@ OnePointCsFull D_8011D6AC[] = {
|
|||
{ 0.0f, 0.0f, 0.0f },
|
||||
},
|
||||
{
|
||||
// initFlags & 0x00FF (at): 3, atTarget is camera's current at + atInit
|
||||
// initFlags & 0xFF00 (eye): 3, eyeTarget is the camera's current eye + eyeInit
|
||||
// viewFlags & 0x00FF (at): 3, atTarget is camera's current at + atInit
|
||||
// viewFlags & 0xFF00 (eye): 3, eyeTarget is the camera's current eye + eyeInit
|
||||
// action: interpolate eye and at.
|
||||
// result: eye and at's y interpolate to become +20 from their current location.
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0303,
|
||||
19,
|
||||
0,
|
||||
|
@ -2706,11 +2706,11 @@ OnePointCsFull D_8011D6AC[] = {
|
|||
{ 0.0f, 20.0f, 0.0f },
|
||||
},
|
||||
{
|
||||
// initFlags & 0x00FF (at): 0 none
|
||||
// initFlags & 0xFF00 (eye): 0 none
|
||||
// viewFlags & 0x00FF (at): 0 none
|
||||
// viewFlags & 0xFF00 (eye): 0 none
|
||||
// action: 18, copy this camera to default camera.
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0000,
|
||||
1,
|
||||
0,
|
||||
|
@ -2725,7 +2725,7 @@ OnePointCsFull D_8011D6AC[] = {
|
|||
OnePointCsFull D_8011D724[] = {
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x2424,
|
||||
1,
|
||||
0,
|
||||
|
@ -2736,7 +2736,7 @@ OnePointCsFull D_8011D724[] = {
|
|||
},
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x2121,
|
||||
19,
|
||||
0,
|
||||
|
@ -2747,7 +2747,7 @@ OnePointCsFull D_8011D724[] = {
|
|||
},
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0000,
|
||||
1,
|
||||
0,
|
||||
|
@ -2762,7 +2762,7 @@ OnePointCsFull D_8011D724[] = {
|
|||
OnePointCsFull D_8011D79C[] = {
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, true, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0002,
|
||||
1,
|
||||
0,
|
||||
|
@ -2773,7 +2773,7 @@ OnePointCsFull D_8011D79C[] = {
|
|||
},
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, true, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0303,
|
||||
19,
|
||||
0,
|
||||
|
@ -2784,7 +2784,7 @@ OnePointCsFull D_8011D79C[] = {
|
|||
},
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, true, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0303,
|
||||
9,
|
||||
0,
|
||||
|
@ -2795,7 +2795,7 @@ OnePointCsFull D_8011D79C[] = {
|
|||
},
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0000,
|
||||
1,
|
||||
0,
|
||||
|
@ -2810,7 +2810,7 @@ OnePointCsFull D_8011D79C[] = {
|
|||
OnePointCsFull D_8011D83C[] = {
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x2141,
|
||||
20,
|
||||
0,
|
||||
|
@ -2821,7 +2821,7 @@ OnePointCsFull D_8011D83C[] = {
|
|||
},
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0000,
|
||||
1,
|
||||
0,
|
||||
|
@ -2838,7 +2838,7 @@ OnePointCsFull D_8011D83C[] = {
|
|||
OnePointCsFull D_8011D88C[] = {
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0303,
|
||||
20,
|
||||
0,
|
||||
|
@ -2849,7 +2849,7 @@ OnePointCsFull D_8011D88C[] = {
|
|||
},
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0000,
|
||||
1,
|
||||
0,
|
||||
|
@ -2864,7 +2864,7 @@ OnePointCsFull D_8011D88C[] = {
|
|||
OnePointCsFull D_8011D8DC[] = {
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0404,
|
||||
20,
|
||||
1,
|
||||
|
@ -2875,7 +2875,7 @@ OnePointCsFull D_8011D8DC[] = {
|
|||
},
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x2121,
|
||||
5,
|
||||
0,
|
||||
|
@ -2886,7 +2886,7 @@ OnePointCsFull D_8011D8DC[] = {
|
|||
},
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0000,
|
||||
1,
|
||||
0,
|
||||
|
@ -2901,7 +2901,7 @@ OnePointCsFull D_8011D8DC[] = {
|
|||
OnePointCsFull D_8011D954[] = {
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0xC1C1,
|
||||
20,
|
||||
0,
|
||||
|
@ -2912,7 +2912,7 @@ OnePointCsFull D_8011D954[] = {
|
|||
},
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x05B1,
|
||||
5,
|
||||
0,
|
||||
|
@ -2923,7 +2923,7 @@ OnePointCsFull D_8011D954[] = {
|
|||
},
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x2121,
|
||||
5,
|
||||
2,
|
||||
|
@ -2934,7 +2934,7 @@ OnePointCsFull D_8011D954[] = {
|
|||
},
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0000,
|
||||
1,
|
||||
0,
|
||||
|
@ -2949,7 +2949,7 @@ OnePointCsFull D_8011D954[] = {
|
|||
OnePointCsFull D_8011D9F4[] = {
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0504,
|
||||
20,
|
||||
2,
|
||||
|
@ -2960,7 +2960,7 @@ OnePointCsFull D_8011D9F4[] = {
|
|||
},
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, true),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x2121,
|
||||
5,
|
||||
2,
|
||||
|
@ -2971,7 +2971,7 @@ OnePointCsFull D_8011D9F4[] = {
|
|||
},
|
||||
{
|
||||
ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false),
|
||||
0xFF,
|
||||
ONEPOINT_CS_INIT_FIELD_NONE,
|
||||
0x0000,
|
||||
1,
|
||||
0,
|
||||
|
@ -3034,5 +3034,5 @@ s16 D_8011DAFC[] = {
|
|||
};
|
||||
|
||||
PlayState* D_8015BD7C;
|
||||
DbCamera D_8015BD80;
|
||||
DebugCam D_8015BD80;
|
||||
CollisionPoly* playerFloorPoly;
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
#include "global.h"
|
||||
|
||||
typedef struct {
|
||||
u8 x;
|
||||
u8 y;
|
||||
u8 colorIndex;
|
||||
char text[21];
|
||||
} DbCameraTextBufferEntry; // size = 0x18
|
||||
/* 0x0 */ u8 x;
|
||||
/* 0x1 */ u8 y;
|
||||
/* 0x2 */ u8 colorIndex;
|
||||
/* 0x3 */ char text[21];
|
||||
} DebugCamTextBufferEntry; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
u16 hold;
|
||||
u16 press;
|
||||
/* 0x0 */ u16 hold;
|
||||
/* 0x2 */ u16 press;
|
||||
} InputCombo; // size = 0x4
|
||||
|
||||
RegEditor* gRegEditor;
|
||||
|
||||
DbCameraTextBufferEntry sDbCameraTextBuffer[22];
|
||||
DebugCamTextBufferEntry sDebugCamTextBuffer[22];
|
||||
|
||||
s16 sDbCameraTextEntryCount = 0;
|
||||
s16 sDebugCamTextEntryCount = 0;
|
||||
|
||||
Color_RGBA8 sDbCameraTextColors[] = {
|
||||
{ 255, 255, 32, 192 }, // DBCAMERA_TEXT_YELLOW
|
||||
{ 255, 150, 128, 192 }, // DBCAMERA_TEXT_PEACH
|
||||
{ 128, 96, 0, 64 }, // DBCAMERA_TEXT_BROWN
|
||||
{ 192, 128, 16, 128 }, // DBCAMERA_TEXT_ORANGE
|
||||
{ 255, 192, 32, 128 }, // DBCAMERA_TEXT_GOLD
|
||||
{ 230, 230, 220, 64 }, // DBCAMERA_TEXT_WHITE
|
||||
{ 128, 150, 255, 128 }, // DBCAMERA_TEXT_BLUE
|
||||
{ 128, 255, 32, 128 }, // DBCAMERA_TEXT_GREEN
|
||||
Color_RGBA8 sDebugCamTextColors[] = {
|
||||
{ 255, 255, 32, 192 }, // DEBUG_CAM_TEXT_YELLOW
|
||||
{ 255, 150, 128, 192 }, // DEBUG_CAM_TEXT_PEACH
|
||||
{ 128, 96, 0, 64 }, // DEBUG_CAM_TEXT_BROWN
|
||||
{ 192, 128, 16, 128 }, // DEBUG_CAM_TEXT_ORANGE
|
||||
{ 255, 192, 32, 128 }, // DEBUG_CAM_TEXT_GOLD
|
||||
{ 230, 230, 220, 64 }, // DEBUG_CAM_TEXT_WHITE
|
||||
{ 128, 150, 255, 128 }, // DEBUG_CAM_TEXT_BLUE
|
||||
{ 128, 255, 32, 128 }, // DEBUG_CAM_TEXT_GREEN
|
||||
};
|
||||
|
||||
InputCombo sRegGroupInputCombos[REG_GROUPS] = {
|
||||
|
@ -108,16 +108,16 @@ void Regs_Init(void) {
|
|||
}
|
||||
}
|
||||
|
||||
// Function is stubbed. Name is assumed by similarities in signature to `DbCamera_ScreenTextColored` and usage.
|
||||
void DbCamera_ScreenText(u8 x, u8 y, const char* text) {
|
||||
// Function is stubbed. Name is assumed by similarities in signature to `DebugCamera_ScreenTextColored` and usage.
|
||||
void DebugCamera_ScreenText(u8 x, u8 y, const char* text) {
|
||||
}
|
||||
|
||||
void DbCamera_ScreenTextColored(u8 x, u8 y, u8 colorIndex, const char* text) {
|
||||
DbCameraTextBufferEntry* entry = &sDbCameraTextBuffer[sDbCameraTextEntryCount];
|
||||
void DebugCamera_ScreenTextColored(u8 x, u8 y, u8 colorIndex, const char* text) {
|
||||
DebugCamTextBufferEntry* entry = &sDebugCamTextBuffer[sDebugCamTextEntryCount];
|
||||
char* textDest;
|
||||
s16 charCount;
|
||||
|
||||
if (sDbCameraTextEntryCount < ARRAY_COUNT(sDbCameraTextBuffer)) {
|
||||
if (sDebugCamTextEntryCount < ARRAY_COUNT(sDebugCamTextBuffer)) {
|
||||
entry->x = x;
|
||||
entry->y = y;
|
||||
entry->colorIndex = colorIndex;
|
||||
|
@ -134,18 +134,18 @@ void DbCamera_ScreenTextColored(u8 x, u8 y, u8 colorIndex, const char* text) {
|
|||
|
||||
*textDest = '\0';
|
||||
|
||||
sDbCameraTextEntryCount++;
|
||||
sDebugCamTextEntryCount++;
|
||||
}
|
||||
}
|
||||
|
||||
void DbCamera_DrawScreenText(GfxPrint* printer) {
|
||||
void DebugCamera_DrawScreenText(GfxPrint* printer) {
|
||||
s32 i;
|
||||
Color_RGBA8* color;
|
||||
DbCameraTextBufferEntry* entry;
|
||||
DebugCamTextBufferEntry* entry;
|
||||
|
||||
for (i = 0; i < sDbCameraTextEntryCount; i++) {
|
||||
entry = &sDbCameraTextBuffer[i];
|
||||
color = &sDbCameraTextColors[entry->colorIndex];
|
||||
for (i = 0; i < sDebugCamTextEntryCount; i++) {
|
||||
entry = &sDebugCamTextBuffer[i];
|
||||
color = &sDebugCamTextColors[entry->colorIndex];
|
||||
|
||||
GfxPrint_SetColor(printer, color->r, color->g, color->b, color->a);
|
||||
GfxPrint_SetPos(printer, entry->x, entry->y);
|
||||
|
@ -156,7 +156,7 @@ void DbCamera_DrawScreenText(GfxPrint* printer) {
|
|||
/**
|
||||
* Updates the state of the Reg Editor according to user input.
|
||||
* Also contains a controller rumble test that can be interfaced with via related REGs.
|
||||
*/
|
||||
*/
|
||||
void Regs_UpdateEditor(Input* input) {
|
||||
s32 dPadInputCur;
|
||||
s32 pageDataStart = ((gRegEditor->regGroup * REG_PAGES) + gRegEditor->regPage - 1) * REGS_PER_PAGE;
|
||||
|
@ -288,14 +288,14 @@ void Debug_DrawText(GraphicsContext* gfxCtx) {
|
|||
GfxPrint_Open(&printer, gfx);
|
||||
|
||||
if ((OREG(0) == 1) || (OREG(0) == 8)) {
|
||||
DbCamera_DrawScreenText(&printer);
|
||||
DebugCamera_DrawScreenText(&printer);
|
||||
}
|
||||
|
||||
if (gRegEditor->regPage != 0) {
|
||||
Regs_DrawEditor(&printer);
|
||||
}
|
||||
|
||||
sDbCameraTextEntryCount = 0;
|
||||
sDebugCamTextEntryCount = 0;
|
||||
|
||||
gfx = GfxPrint_Close(&printer);
|
||||
gSPEndDisplayList(gfx++);
|
||||
|
|
|
@ -182,7 +182,7 @@ void Cutscene_UpdateScripted(PlayState* play, CutsceneContext* csCtx) {
|
|||
}
|
||||
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_DUP) && (csCtx->state == CS_STATE_IDLE) && IS_CUTSCENE_LAYER &&
|
||||
!gDbgCamEnabled) {
|
||||
!gDebugCamEnabled) {
|
||||
gUseCutsceneCam = true;
|
||||
gSaveContext.cutsceneIndex = 0xFFFD;
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
|
|
|
@ -312,7 +312,7 @@ void EnAObj_Update(Actor* thisx, PlayState* play) {
|
|||
EnAObj* this = (EnAObj*)thisx;
|
||||
|
||||
this->actionFunc(this, play);
|
||||
Actor_MoveForward(&this->dyna.actor);
|
||||
Actor_MoveXZGravity(&this->dyna.actor);
|
||||
|
||||
if (this->dyna.actor.gravity != 0.0f) {
|
||||
if (this->dyna.actor.params != A_OBJ_BOULDER_FRAGMENT) {
|
||||
|
|
|
@ -576,7 +576,7 @@ void EnItem00_Update(Actor* thisx, PlayState* play) {
|
|||
|
||||
} else {
|
||||
sp3A = 1;
|
||||
Actor_MoveForward(&this->actor);
|
||||
Actor_MoveXZGravity(&this->actor);
|
||||
}
|
||||
|
||||
if (sp3A || D_80157D94[0]) {
|
||||
|
|
|
@ -1609,7 +1609,7 @@ void Message_OpenText(PlayState* play, u16 textId) {
|
|||
// Increments text id based on piece of heart count, assumes the piece of heart text is all
|
||||
// in order and that you don't have more than the intended amount of heart pieces.
|
||||
textId += (gSaveContext.inventory.questItems & 0xF0000000 & 0xF0000000) >> QUEST_HEART_PIECE_COUNT;
|
||||
} else if (msgCtx->textId == 0xC && CHECK_OWNED_EQUIP(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BGS)) {
|
||||
} else if (msgCtx->textId == 0xC && CHECK_OWNED_EQUIP(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BIGGORON)) {
|
||||
textId = 0xB; // Traded Giant's Knife for Biggoron Sword
|
||||
} else if (msgCtx->textId == 0xB4 && GET_EVENTCHKINF(EVENTCHKINF_96)) {
|
||||
textId = 0xB5; // Destroyed Gold Skulltula
|
||||
|
|
|
@ -664,7 +664,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
|
|||
Play_SetCameraAtEye(play, subCamId, &spC0, &spB4);
|
||||
subCam->roll = 0;
|
||||
subCam->fov = 75.0f;
|
||||
player->actor.shape.rot.y = player->actor.world.rot.y = player->currentYaw = spD0.yaw + 0x7FFF;
|
||||
player->actor.shape.rot.y = player->actor.world.rot.y = player->yaw = spD0.yaw + 0x7FFF;
|
||||
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
|
||||
break;
|
||||
|
||||
|
@ -708,7 +708,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
|
|||
break;
|
||||
|
||||
case 3390:
|
||||
player->actor.shape.rot.y = player->actor.world.rot.y = player->currentYaw = -0x3FD9;
|
||||
player->actor.shape.rot.y = player->actor.world.rot.y = player->yaw = -0x3FD9;
|
||||
|
||||
csInfo->keyFrames = D_80121DB4;
|
||||
csInfo->keyFrameCount = ARRAY_COUNT(D_80121DB4);
|
||||
|
@ -733,7 +733,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
|
|||
D_80121F1C[0].eyeTargetInit = play->view.eye;
|
||||
D_80121F1C[0].fovTargetInit = play->view.fovy;
|
||||
Actor_GetFocus(&spA0, actor);
|
||||
player->actor.shape.rot.y = player->actor.world.rot.y = player->currentYaw = spA0.rot.y;
|
||||
player->actor.shape.rot.y = player->actor.world.rot.y = player->yaw = spA0.rot.y;
|
||||
|
||||
csInfo->keyFrames = D_80121F1C;
|
||||
csInfo->keyFrameCount = ARRAY_COUNT(D_80121F1C);
|
||||
|
@ -857,7 +857,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
|
|||
csInfo->keyFrames = D_801225D4;
|
||||
csInfo->keyFrameCount = ARRAY_COUNT(D_801225D4);
|
||||
|
||||
player->actor.shape.rot.y = player->actor.world.rot.y = player->currentYaw = 0x3FFC;
|
||||
player->actor.shape.rot.y = player->actor.world.rot.y = player->yaw = 0x3FFC;
|
||||
Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C);
|
||||
func_8002DF54(play, NULL, PLAYER_CSMODE_8);
|
||||
break;
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1282,7 +1282,7 @@ void Interface_InitHorsebackArchery(PlayState* play) {
|
|||
}
|
||||
|
||||
void func_800849EC(PlayState* play) {
|
||||
gSaveContext.inventory.equipment |= OWNED_EQUIP_FLAG(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BGS);
|
||||
gSaveContext.inventory.equipment |= OWNED_EQUIP_FLAG(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BIGGORON);
|
||||
gSaveContext.inventory.equipment ^= OWNED_EQUIP_FLAG_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE);
|
||||
|
||||
if (CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE)) {
|
||||
|
@ -1419,7 +1419,7 @@ u8 Item_Give(PlayState* play, u8 item) {
|
|||
gSaveContext.swordHealth = 8;
|
||||
|
||||
if (ALL_EQUIP_VALUE(EQUIP_TYPE_SWORD) ==
|
||||
((1 << EQUIP_INV_SWORD_KOKIRI) | (1 << EQUIP_INV_SWORD_MASTER) | (1 << EQUIP_INV_SWORD_BGS) |
|
||||
((1 << EQUIP_INV_SWORD_KOKIRI) | (1 << EQUIP_INV_SWORD_MASTER) | (1 << EQUIP_INV_SWORD_BIGGORON) |
|
||||
(1 << EQUIP_INV_SWORD_BROKENGIANTKNIFE))) {
|
||||
gSaveContext.inventory.equipment ^=
|
||||
OWNED_EQUIP_FLAG_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE);
|
||||
|
|
|
@ -370,7 +370,7 @@ void Play_Init(GameState* thisx) {
|
|||
this->state.destroy = Play_Destroy;
|
||||
this->transitionTrigger = TRANS_TRIGGER_END;
|
||||
this->unk_11E16 = 0xFF;
|
||||
this->unk_11E18 = 0;
|
||||
this->bgCoverAlpha = 0;
|
||||
this->haltAllActors = false;
|
||||
|
||||
if (gSaveContext.gameMode != GAMEMODE_TITLE_SCREEN) {
|
||||
|
@ -988,7 +988,7 @@ void Play_Update(PlayState* this) {
|
|||
skip:
|
||||
PLAY_LOG(3801);
|
||||
|
||||
if (!isPaused || gDbgCamEnabled) {
|
||||
if (!isPaused || gDebugCamEnabled) {
|
||||
s32 pad3[5];
|
||||
s32 i;
|
||||
|
||||
|
@ -1207,7 +1207,7 @@ void Play_Draw(PlayState* this) {
|
|||
}
|
||||
|
||||
if ((R_HREG_MODE != HREG_MODE_PLAY) || (R_PLAY_DRAW_ROOM_FLAGS != 0)) {
|
||||
Environment_FillScreen(gfxCtx, 0, 0, 0, this->unk_11E18, FILL_SCREEN_OPA);
|
||||
Environment_FillScreen(gfxCtx, 0, 0, 0, this->bgCoverAlpha, FILL_SCREEN_OPA);
|
||||
}
|
||||
|
||||
if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_ACTORS) {
|
||||
|
|
|
@ -26,7 +26,7 @@ u8 sActionModelGroups[PLAYER_IA_MAX] = {
|
|||
PLAYER_MODELGROUP_10, // PLAYER_IA_FISHING_POLE
|
||||
PLAYER_MODELGROUP_SWORD, // PLAYER_IA_SWORD_MASTER
|
||||
PLAYER_MODELGROUP_SWORD, // PLAYER_IA_SWORD_KOKIRI
|
||||
PLAYER_MODELGROUP_BGS, // PLAYER_IA_SWORD_BGS
|
||||
PLAYER_MODELGROUP_BGS, // PLAYER_IA_SWORD_BIGGORON
|
||||
PLAYER_MODELGROUP_10, // PLAYER_IA_DEKU_STICK
|
||||
PLAYER_MODELGROUP_HAMMER, // PLAYER_IA_HAMMER
|
||||
PLAYER_MODELGROUP_BOW_SLINGSHOT, // PLAYER_IA_BOW
|
||||
|
@ -723,7 +723,7 @@ s32 Player_GetMeleeWeaponHeld(Player* this) {
|
|||
}
|
||||
|
||||
s32 Player_HoldsTwoHandedWeapon(Player* this) {
|
||||
if ((this->heldItemAction >= PLAYER_IA_SWORD_BGS) && (this->heldItemAction <= PLAYER_IA_HAMMER)) {
|
||||
if ((this->heldItemAction >= PLAYER_IA_SWORD_BIGGORON) && (this->heldItemAction <= PLAYER_IA_HAMMER)) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
|
@ -731,7 +731,7 @@ s32 Player_HoldsTwoHandedWeapon(Player* this) {
|
|||
}
|
||||
|
||||
s32 Player_HoldsBrokenKnife(Player* this) {
|
||||
return (this->heldItemAction == PLAYER_IA_SWORD_BGS) && (gSaveContext.swordHealth <= 0.0f);
|
||||
return (this->heldItemAction == PLAYER_IA_SWORD_BIGGORON) && (gSaveContext.swordHealth <= 0.0f);
|
||||
}
|
||||
|
||||
s32 Player_ActionToBottle(Player* this, s32 itemAction) {
|
||||
|
@ -1666,7 +1666,7 @@ u32 Player_InitDrawPause(PlayState* play, u8* segment, SkelAnime* skelAnime) {
|
|||
u8 sPauseModelGroupBySword[] = {
|
||||
PLAYER_MODELGROUP_SWORD, // PLAYER_SWORD_KOKIRI
|
||||
PLAYER_MODELGROUP_SWORD, // PLAYER_SWORD_MASTER
|
||||
PLAYER_MODELGROUP_BGS, // PLAYER_SWORD_BGS
|
||||
PLAYER_MODELGROUP_BGS, // PLAYER_SWORD_BIGGORON
|
||||
};
|
||||
|
||||
s32 Player_OverrideLimbDrawPause(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* arg) {
|
||||
|
@ -1836,7 +1836,7 @@ void Player_DrawPause(PlayState* play, u8* segment, SkelAnime* skelAnime, Vec3f*
|
|||
srcTable = gLinkPauseChildJointTable;
|
||||
}
|
||||
} else {
|
||||
if (sword == PLAYER_SWORD_BGS) {
|
||||
if (sword == PLAYER_SWORD_BIGGORON) {
|
||||
srcTable = gLinkPauseAdultBgsJointTable;
|
||||
} else if (shield != PLAYER_SHIELD_NONE) {
|
||||
srcTable = gLinkPauseAdultShieldJointTable;
|
||||
|
|
|
@ -607,10 +607,10 @@ s32 func_8009728C(PlayState* play, RoomContext* roomCtx, s32 roomNum) {
|
|||
&roomCtx->loadQueue, NULL, "../z_room.c", 1036);
|
||||
roomCtx->unk_30 ^= 1;
|
||||
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
s32 func_800973FC(PlayState* play, RoomContext* roomCtx) {
|
||||
|
|
|
@ -315,7 +315,7 @@ static Inventory sDebugSaveInventory = {
|
|||
// equipment
|
||||
((((1 << EQUIP_INV_SWORD_KOKIRI) << (EQUIP_TYPE_SWORD * 4)) |
|
||||
((1 << EQUIP_INV_SWORD_MASTER) << (EQUIP_TYPE_SWORD * 4)) |
|
||||
((1 << EQUIP_INV_SWORD_BGS) << (EQUIP_TYPE_SWORD * 4))) |
|
||||
((1 << EQUIP_INV_SWORD_BIGGORON) << (EQUIP_TYPE_SWORD * 4))) |
|
||||
(((1 << EQUIP_INV_SHIELD_DEKU) << (EQUIP_TYPE_SHIELD * 4)) |
|
||||
((1 << EQUIP_INV_SHIELD_HYLIAN) << (EQUIP_TYPE_SHIELD * 4)) |
|
||||
((1 << EQUIP_INV_SHIELD_MIRROR) << (EQUIP_TYPE_SHIELD * 4))) |
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue