More player documentation from decomp (#3819)

* FallImpactInfo & AnimSfx stuff

* IA function naming & Player_UseItem

* ActionChange

* Speed modes

* Fix build

* Misc cleanup

* Name Player_Action funcs

* PlayerAgeProperties

* Most of the Player struct

* Update z_player.c

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
This commit is contained in:
Pepe20129 2024-02-16 03:44:46 +01:00 committed by GitHub
parent 4797c9ad35
commit 7319e4db57
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 1814 additions and 1658 deletions

View File

@ -345,7 +345,7 @@ typedef enum {
#define PLAYER_LIMB_BUF_COUNT LIMB_BUF_COUNT(PLAYER_LIMB_MAX)
typedef struct {
/* 0x00 */ f32 unk_00;
/* 0x00 */ f32 ceilingCheckHeight;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
/* 0x0C */ f32 unk_0C;
@ -359,7 +359,7 @@ typedef struct {
/* 0x2C */ f32 unk_2C;
/* 0x30 */ f32 unk_30;
/* 0x34 */ f32 unk_34;
/* 0x38 */ f32 unk_38;
/* 0x38 */ f32 wallCheckRadius;
/* 0x3C */ f32 unk_3C;
/* 0x40 */ f32 unk_40;
/* 0x44 */ Vec3s unk_44;
@ -489,180 +489,187 @@ typedef s32 (*UpperActionFunc)(struct Player*, struct PlayState*);
typedef void (*PlayerFuncA74)(struct PlayState*, struct Player*);
typedef struct Player {
/* 0x0000 */ Actor actor;
/* 0x014C */ s8 currentTunic; // current tunic from `PlayerTunic`
/* 0x014D */ s8 currentSwordItemId;
/* 0x014E */ s8 currentShield; // current shield from `PlayerShield`
/* 0x014F */ s8 currentBoots; // current boots from `PlayerBoots`
/* 0x0150 */ s8 heldItemButton; // Button index for the item currently used
/* 0x0151 */ s8 heldItemAction; // Item action for the item currently used
/* 0x0152 */ u8 heldItemId; // Item id for the item currently used
/* 0x0153 */ s8 prevBoots; // previous boots from `PlayerBoots`
/* 0x0154 */ s8 itemAction; // the difference between this and heldItemAction is unclear
/* 0x0155 */ char unk_155[0x003];
/* 0x0158 */ u8 modelGroup;
/* 0x0159 */ u8 nextModelGroup;
/* 0x015A */ s8 itemChangeType;
/* 0x015B */ u8 modelAnimType;
/* 0x015C */ u8 leftHandType;
/* 0x015D */ u8 rightHandType;
/* 0x015E */ u8 sheathType;
/* 0x015F */ u8 currentMask; // current mask equipped from `PlayerMask`
/* 0x0160 */ Gfx** rightHandDLists;
/* 0x0164 */ Gfx** leftHandDLists;
/* 0x0168 */ Gfx** sheathDLists;
/* 0x016C */ Gfx** waistDLists;
/* 0x0170 */ u8 giObjectLoading;
/* 0x0000 */ Actor actor;
/* 0x014C */ s8 currentTunic; // current tunic from `PlayerTunic`
/* 0x014D */ s8 currentSwordItemId;
/* 0x014E */ s8 currentShield; // current shield from `PlayerShield`
/* 0x014F */ s8 currentBoots; // current boots from `PlayerBoots`
/* 0x0150 */ s8 heldItemButton; // Button index for the item currently used
/* 0x0151 */ s8 heldItemAction; // Item action for the item currently used
/* 0x0152 */ u8 heldItemId; // Item id for the item currently used
/* 0x0153 */ s8 prevBoots; // previous boots from `PlayerBoots`
/* 0x0154 */ s8 itemAction; // the difference between this and heldItemAction is unclear
/* 0x0155 */ char unk_155[0x003];
/* 0x0158 */ u8 modelGroup;
/* 0x0159 */ u8 nextModelGroup;
/* 0x015A */ s8 itemChangeType;
/* 0x015B */ u8 modelAnimType;
/* 0x015C */ u8 leftHandType;
/* 0x015D */ u8 rightHandType;
/* 0x015E */ u8 sheathType;
/* 0x015F */ u8 currentMask; // current mask equipped from `PlayerMask`
/* 0x0160 */ Gfx** rightHandDLists;
/* 0x0164 */ Gfx** leftHandDLists;
/* 0x0168 */ Gfx** sheathDLists;
/* 0x016C */ Gfx** waistDLists;
/* 0x0170 */ u8 giObjectLoading;
/* 0x0174 */ DmaRequest giObjectDmaRequest;
/* 0x0194 */ OSMesgQueue giObjectLoadQueue;
/* 0x01AC */ OSMesg giObjectLoadMsg;
/* 0x01B0 */ void* giObjectSegment; // also used for title card textures
/* 0x01B4 */ SkelAnime skelAnime;
/* 0x01F8 */ Vec3s jointTable[PLAYER_LIMB_BUF_COUNT];
/* 0x0288 */ Vec3s morphTable[PLAYER_LIMB_BUF_COUNT];
/* 0x0318 */ Vec3s blendTable[PLAYER_LIMB_BUF_COUNT];
/* 0x03A8 */ s16 unk_3A8[2];
/* 0x03AC */ Actor* heldActor;
/* 0x03B0 */ Vec3f leftHandPos;
/* 0x03BC */ Vec3s unk_3BC;
/* 0x03C4 */ Actor* unk_3C4;
/* 0x03C8 */ Vec3f unk_3C8;
/* 0x03D4 */ char unk_3D4[0x058];
/* 0x042C */ s8 doorType;
/* 0x042D */ s8 doorDirection;
/* 0x042E */ s16 doorTimer;
/* 0x0430 */ Actor* doorActor;
/* 0x0434 */ s16 getItemId; // Upstream TODO: Document why this is s16 while it's s8 upstream
/* 0x0436 */ u16 getItemDirection;
/* 0x0438 */ Actor* interactRangeActor;
/* 0x043C */ s8 mountSide;
/* 0x043D */ char unk_43D[0x003];
/* 0x0440 */ Actor* rideActor;
/* 0x0444 */ u8 csAction;
/* 0x0445 */ u8 prevCsAction;
/* 0x0446 */ u8 cueId;
/* 0x0447 */ u8 unk_447;
/* 0x0448 */ Actor* csActor;
/* 0x044C */ char unk_44C[0x004];
/* 0x0450 */ Vec3f unk_450;
/* 0x045C */ Vec3f unk_45C;
/* 0x0468 */ char unk_468[0x002];
/* 0x046A */ s16 doorBgCamIndex;
/* 0x046C */ s16 subCamId;
/* 0x046E */ char unk_46E[0x02A];
/* 0x01AC */ OSMesg giObjectLoadMsg;
/* 0x01B0 */ void* giObjectSegment; // also used for title card textures
/* 0x01B4 */ SkelAnime skelAnime;
/* 0x01F8 */ Vec3s jointTable[PLAYER_LIMB_BUF_COUNT];
/* 0x0288 */ Vec3s morphTable[PLAYER_LIMB_BUF_COUNT];
/* 0x0318 */ Vec3s blendTable[PLAYER_LIMB_BUF_COUNT];
/* 0x03A8 */ s16 unk_3A8[2];
/* 0x03AC */ Actor* heldActor;
/* 0x03B0 */ Vec3f leftHandPos;
/* 0x03BC */ Vec3s unk_3BC;
/* 0x03C4 */ Actor* unk_3C4;
/* 0x03C8 */ Vec3f unk_3C8;
/* 0x03D4 */ char unk_3D4[0x058];
/* 0x042C */ s8 doorType;
/* 0x042D */ s8 doorDirection;
/* 0x042E */ s16 doorTimer;
/* 0x0430 */ Actor* doorActor;
/* 0x0434 */ s16 getItemId; // Upstream TODO: Document why this is s16 while it's s8 upstream
/* 0x0436 */ u16 getItemDirection;
/* 0x0438 */ Actor* interactRangeActor;
/* 0x043C */ s8 mountSide;
/* 0x043D */ char unk_43D[0x003];
/* 0x0440 */ Actor* rideActor;
/* 0x0444 */ u8 csAction;
/* 0x0445 */ u8 prevCsAction;
/* 0x0446 */ u8 cueId;
/* 0x0447 */ u8 unk_447;
/* 0x0448 */ Actor* csActor; // Actor involved in a `csAction`. Typically the actor that invoked the cutscene.
/* 0x044C */ char unk_44C[0x004];
/* 0x0450 */ Vec3f unk_450;
/* 0x045C */ Vec3f unk_45C;
/* 0x0468 */ char unk_468[0x002];
/* 0x046A */ s16 doorBgCamIndex;
/* 0x046C */ s16 subCamId;
/* 0x046E */ char unk_46E[0x02A];
/* 0x0498 */ ColliderCylinder cylinder;
/* 0x04E4 */ ColliderQuad meleeWeaponQuads[2];
/* 0x05E4 */ ColliderQuad shieldQuad;
/* 0x0664 */ Actor* unk_664;
/* 0x0668 */ char unk_668[0x004];
/* 0x066C */ s32 unk_66C;
/* 0x0670 */ s32 meleeWeaponEffectIndex;
/* 0x0664 */ Actor* unk_664;
/* 0x0668 */ char unk_668[0x004];
/* 0x066C */ s32 unk_66C;
/* 0x0670 */ s32 meleeWeaponEffectIndex;
/* 0x0674 */ PlayerActionFunc actionFunc;
/* 0x0678 */ PlayerAgeProperties* ageProperties;
/* 0x067C */ u32 stateFlags1;
/* 0x0680 */ u32 stateFlags2;
/* 0x0684 */ Actor* unk_684;
/* 0x0688 */ Actor* boomerangActor;
/* 0x068C */ Actor* naviActor;
/* 0x0690 */ s16 naviTextId;
/* 0x0692 */ u8 stateFlags3;
/* 0x0693 */ s8 exchangeItemId;
/* 0x0694 */ Actor* targetActor;
/* 0x0698 */ f32 targetActorDistance;
/* 0x069C */ char unk_69C[0x004];
/* 0x06A0 */ f32 unk_6A0;
/* 0x06A4 */ f32 closestSecretDistSq;
/* 0x06A8 */ Actor* unk_6A8;
/* 0x06AC */ s8 unk_6AC;
/* 0x06AD */ u8 unk_6AD;
/* 0x06AE */ u16 unk_6AE;
/* 0x06B0 */ s16 unk_6B0;
/* 0x06B2 */ char unk_6B4[0x004];
/* 0x06B6 */ s16 unk_6B6;
/* 0x06B8 */ s16 unk_6B8;
/* 0x06BA */ s16 unk_6BA;
/* 0x06BC */ s16 unk_6BC;
/* 0x06BE */ s16 unk_6BE;
/* 0x06C0 */ s16 unk_6C0;
/* 0x06C2 */ s16 unk_6C2;
/* 0x06C4 */ f32 unk_6C4;
/* 0x06C8 */ SkelAnime upperSkelAnime;
/* 0x070C */ Vec3s upperJointTable[PLAYER_LIMB_BUF_COUNT];
/* 0x079C */ Vec3s upperMorphTable[PLAYER_LIMB_BUF_COUNT];
/* 0x067C */ u32 stateFlags1;
/* 0x0680 */ u32 stateFlags2;
/* 0x0684 */ Actor* unk_684;
/* 0x0688 */ Actor* boomerangActor;
/* 0x068C */ Actor* naviActor;
/* 0x0690 */ s16 naviTextId;
/* 0x0692 */ u8 stateFlags3;
/* 0x0693 */ s8 exchangeItemId;
/* 0x0694 */ Actor* targetActor;
/* 0x0698 */ f32 targetActorDistance;
/* 0x069C */ char unk_69C[0x004];
/* 0x06A0 */ f32 unk_6A0;
/* 0x06A4 */ f32 closestSecretDistSq;
/* 0x06A8 */ Actor* unk_6A8;
/* 0x06AC */ s8 unk_6AC;
/* 0x06AD */ u8 unk_6AD;
/* 0x06AE */ u16 unk_6AE;
/* 0x06B0 */ s16 unk_6B0;
/* 0x06B2 */ char unk_6B4[0x004];
/* 0x06B6 */ s16 unk_6B6;
/* 0x06B8 */ s16 unk_6B8;
/* 0x06BA */ s16 unk_6BA;
/* 0x06BC */ s16 unk_6BC;
/* 0x06BE */ s16 unk_6BE;
/* 0x06C0 */ s16 unk_6C0;
/* 0x06C2 */ s16 unk_6C2;
/* 0x06C4 */ f32 unk_6C4;
/* 0x06C8 */ SkelAnime upperSkelAnime;
/* 0x070C */ Vec3s upperJointTable[PLAYER_LIMB_BUF_COUNT];
/* 0x079C */ Vec3s upperMorphTable[PLAYER_LIMB_BUF_COUNT];
/* 0x082C */ UpperActionFunc upperActionFunc;
/* 0x0830 */ f32 upperAnimBlendWeight;
/* 0x0834 */ s16 unk_834;
/* 0x0836 */ s8 unk_836;
/* 0x0837 */ u8 unk_837;
/* 0x0838 */ f32 linearVelocity;
/* 0x083C */ s16 currentYaw;
/* 0x083E */ s16 targetYaw;
/* 0x0840 */ u16 underwaterTimer;
/* 0x0842 */ s8 meleeWeaponAnimation;
/* 0x0843 */ s8 meleeWeaponState;
/* 0x0844 */ s8 unk_844;
/* 0x0845 */ u8 unk_845;
/* 0x0846 */ u8 unk_846;
/* 0x0847 */ s8 unk_847[4];
/* 0x084B */ s8 unk_84B[4];
/* 0x084F */ s8 unk_84F;
/* 0x0850 */ s16 unk_850; // multipurpose timer
/* 0x0854 */ f32 unk_854;
/* 0x0858 */ f32 unk_858;
/* 0x085C */ f32 unk_85C; // stick length among other things
/* 0x0860 */ s16 unk_860; // stick flame timer among other things
/* 0x0862 */ s16 unk_862; // get item draw ID + 1
/* 0x0864 */ f32 unk_864;
/* 0x0868 */ f32 unk_868;
/* 0x086C */ f32 unk_86C;
/* 0x0870 */ f32 unk_870;
/* 0x0874 */ f32 unk_874;
/* 0x0878 */ f32 unk_878;
/* 0x087C */ s16 unk_87C;
/* 0x087E */ s16 unk_87E;
/* 0x0880 */ f32 unk_880;
/* 0x0884 */ f32 yDistToLedge; // y distance to ground above an interact wall. LEDGE_DIST_MAX if no ground is found
/* 0x0888 */ f32 distToInteractWall; // distance to the colliding wall plane
/* 0x088C */ u8 unk_88C;
/* 0x088D */ u8 unk_88D;
/* 0x088E */ u8 unk_88E;
/* 0x088F */ u8 unk_88F;
/* 0x0890 */ u8 unk_890;
/* 0x0891 */ u8 shockTimer;
/* 0x0892 */ u8 unk_892;
/* 0x0893 */ u8 hoverBootsTimer;
/* 0x0894 */ s16 fallStartHeight; // last truncated Y position before falling
/* 0x0896 */ s16 fallDistance; // truncated Y distance the player has fallen so far (positive is down)
/* 0x0898 */ s16 floorPitch; // angle of the floor slope in the direction of current world yaw (positive for ascending slope)
/* 0x089A */ s16 floorPitchAlt; // the calculation for this value is bugged and doesn't represent anything meaningful
/* 0x089C */ s16 unk_89C;
/* 0x089E */ u16 floorSfxOffset;
/* 0x08A0 */ u8 unk_8A0;
/* 0x08A1 */ u8 unk_8A1;
/* 0x08A2 */ s16 unk_8A2;
/* 0x08A4 */ f32 unk_8A4;
/* 0x08A8 */ f32 unk_8A8;
/* 0x08AC */ f32 pushedSpeed; // Pushing player, examples include water currents, floor conveyors, climbing sloped surfaces
/* 0x08B0 */ s16 pushedYaw; // Yaw direction of player being pushed
/* 0x0830 */ f32 upperAnimBlendWeight;
/* 0x0834 */ s16 unk_834;
/* 0x0836 */ s8 unk_836;
/* 0x0837 */ u8 unk_837;
/* 0x0838 */ f32 linearVelocity;
/* 0x083C */ s16 yaw; // General yaw value, used both for world and shape rotation. Current or target value depending on context.
/* 0x083E */ s16 zTargetYaw; // yaw relating to Z targeting/"parallel" mode
/* 0x0840 */ u16 underwaterTimer;
/* 0x0842 */ s8 meleeWeaponAnimation;
/* 0x0843 */ s8 meleeWeaponState;
/* 0x0844 */ s8 unk_844;
/* 0x0845 */ u8 unk_845;
/* 0x0846 */ u8 unk_846;
/* 0x0847 */ s8 unk_847[4];
/* 0x084B */ s8 unk_84B[4];
/* 0x084F */ union {
s8 actionVar1;
} av1; // "Action Variable 1": context dependent variable that has different meanings depending on what action is currently running
/* 0x0850 */ union {
s16 actionVar2;
} av2; // "Action Variable 2": context dependent variable that has different meanings depending on what action is currently running
/* 0x0854 */ f32 unk_854;
/* 0x0858 */ f32 unk_858;
/* 0x085C */ f32 unk_85C; // stick length among other things
/* 0x0860 */ s16 unk_860; // stick flame timer among other things
/* 0x0862 */ s16 unk_862; // get item draw ID + 1
/* 0x0864 */ f32 unk_864;
/* 0x0868 */ f32 unk_868;
/* 0x086C */ f32 unk_86C;
/* 0x0870 */ f32 unk_870;
/* 0x0874 */ f32 unk_874;
/* 0x0878 */ f32 unk_878;
/* 0x087C */ s16 unk_87C;
/* 0x087E */ s16 unk_87E;
/* 0x0880 */ f32 unk_880;
/* 0x0884 */ f32 yDistToLedge; // y distance to ground above an interact wall. LEDGE_DIST_MAX if no ground is found
/* 0x0888 */ f32 distToInteractWall; // xyz distance to the interact wall
/* 0x088C */ u8 ledgeClimbType;
/* 0x088D */ u8 ledgeClimbDelayTimer;
/* 0x088E */ u8 unk_88E;
/* 0x088F */ u8 unk_88F;
/* 0x0890 */ u8 unk_890;
/* 0x0891 */ u8 bodyShockTimer;
/* 0x0892 */ u8 unk_892;
/* 0x0893 */ u8 hoverBootsTimer;
/* 0x0894 */ s16 fallStartHeight; // last truncated Y position before falling
/* 0x0896 */ s16 fallDistance; // truncated Y distance the player has fallen so far (positive is down)
/* 0x0898 */ s16 floorPitch; // angle of the floor slope in the direction of current world yaw (positive for ascending slope)
/* 0x089A */ s16 floorPitchAlt; // the calculation for this value is bugged and doesn't represent anything meaningful
/* 0x089C */ s16 unk_89C;
/* 0x089E */ u16 floorSfxOffset;
/* 0x08A0 */ u8 unk_8A0;
/* 0x08A1 */ u8 unk_8A1;
/* 0x08A2 */ s16 unk_8A2;
/* 0x08A4 */ f32 unk_8A4;
/* 0x08A8 */ f32 unk_8A8;
/* 0x08AC */ f32 pushedSpeed; // Pushing player, examples include water currents, floor conveyors, climbing sloped surfaces
/* 0x08B0 */ s16 pushedYaw; // Yaw direction of player being pushed
/* 0x08B4 */ WeaponInfo meleeWeaponInfo[3];
/* 0x0908 */ Vec3f bodyPartsPos[PLAYER_BODYPART_MAX];
/* 0x09E0 */ MtxF mf_9E0;
/* 0x0A20 */ MtxF shieldMf;
/* 0x0A60 */ u8 isBurning;
/* 0x0A61 */ u8 flameTimers[PLAYER_BODYPART_MAX]; // one flame per body part
/* 0x0A73 */ u8 unk_A73;
/* 0x0908 */ Vec3f bodyPartsPos[PLAYER_BODYPART_MAX];
/* 0x09E0 */ MtxF mf_9E0;
/* 0x0A20 */ MtxF shieldMf;
/* 0x0A60 */ u8 bodyIsBurning;
/* 0x0A61 */ u8 bodyFlameTimers[PLAYER_BODYPART_MAX]; // one flame per body part
/* 0x0A73 */ u8 unk_A73;
/* 0x0A74 */ PlayerFuncA74 func_A74;
/* 0x0A78 */ s8 invincibilityTimer; // prevents damage when nonzero (positive = visible, counts towards zero each frame)
/* 0x0A79 */ u8 unk_A79;
/* 0x0A7A */ u8 unk_A7A;
/* 0x0A7B */ u8 unk_A7B;
/* 0x0A7C */ f32 unk_A7C;
/* 0x0A80 */ s16 unk_A80;
/* 0x0A82 */ u16 unk_A82;
/* 0x0A84 */ s16 unk_A84;
/* 0x0A86 */ s8 unk_A86;
/* 0x0A87 */ u8 unk_A87;
/* 0x0A88 */ Vec3f unk_A88; // previous body part 0 position
/* 0x0A78 */ s8 invincibilityTimer; // prevents damage when nonzero (positive = visible, counts towards zero each frame)
/* 0x0A79 */ u8 floorTypeTimer; // counts up every frame the current floor type is the same as the last frame
/* 0x0A7A */ u8 floorProperty;
/* 0x0A7B */ u8 prevFloorType;
/* 0x0A7C */ f32 prevControlStickMagnitude;
/* 0x0A80 */ s16 prevControlStickAngle;
/* 0x0A82 */ u16 prevFloorSfxOffset;
/* 0x0A84 */ s16 unk_A84;
/* 0x0A86 */ s8 unk_A86;
/* 0x0A87 */ u8 unk_A87;
/* 0x0A88 */ Vec3f unk_A88; // previous body part 0 position
// #region SOH [General]
// Upstream TODO: Rename these to be more obviously SoH specific
/* */ PendingFlag pendingFlag;
@ -670,7 +677,7 @@ typedef struct Player {
// #endregion
// #region SOH [Enhancements]
// Upstream TODO: Rename this to make it more obvious it is apart of an enhancement
/* */ u8 boomerangQuickRecall; // Has the player pressed the boomerang button while it's in the air still?
/* */ u8 boomerangQuickRecall; // Has the player pressed the boomerang button while it's in the air still?
// #endregion
u8 ivanFloating;
u8 ivanDamageMultiplier;

View File

@ -111,9 +111,9 @@ void GameInteractor::RawAction::FreezePlayer() {
void GameInteractor::RawAction::BurnPlayer() {
Player* player = GET_PLAYER(gPlayState);
for (int i = 0; i < 18; i++) {
player->flameTimers[i] = Rand_S16Offset(0, 200);
player->bodyFlameTimers[i] = Rand_S16Offset(0, 200);
}
player->isBurning = true;
player->bodyIsBurning = true;
func_80837C0C(gPlayState, player, 0, 0, 0, 0, 0);
}

View File

@ -48,7 +48,7 @@ void func_800432A0(CollisionContext* colCtx, s32 bgId, Actor* actor) {
s16 rot = colCtx->dyna.bgActors[bgId].curTransform.rot.y - colCtx->dyna.bgActors[bgId].prevTransform.rot.y;
if (actor->id == ACTOR_PLAYER) {
((Player*)actor)->currentYaw += rot;
((Player*)actor)->yaw += rot;
}
actor->shape.rot.y += rot;

View File

@ -634,7 +634,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 camIdx, s16 csId, Actor* actor
Play_CameraSetAtEye(play, camIdx, &spC0, &spB4);
csCam->roll = 0;
csCam->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, 8);
break;
case 3240:
@ -674,7 +674,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 camIdx, s16 csId, Actor* actor
Quake_SetCountdown(i, D_80120698 - 20);
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->keyFrameCnt = 9;
@ -697,7 +697,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 camIdx, s16 csId, Actor* actor
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->keyFrameCnt = 4;
@ -817,7 +817,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 camIdx, s16 csId, Actor* actor
csInfo->keyFrameCnt = 2;
}
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;
func_800C0808(play, camIdx, player, CAM_SET_CS_C);
func_8002DF54(play, NULL, 8);
break;

View File

@ -1480,11 +1480,11 @@ void BossFd_UpdateEffects(BossFd* this, PlayState* play) {
if ((this->timers[3] == 0) && (sqrtf(SQ(diff.x) + SQ(diff.y) + SQ(diff.z)) < 20.0f)) {
this->timers[3] = 50;
func_8002F6D4(play, NULL, 5.0f, effect->kbAngle, 0.0f, 0x30);
if (player->isBurning == false) {
for (i2 = 0; i2 < ARRAY_COUNT(player->flameTimers); i2++) {
player->flameTimers[i2] = Rand_S16Offset(0, 200);
if (player->bodyIsBurning == false) {
for (i2 = 0; i2 < ARRAY_COUNT(player->bodyFlameTimers); i2++) {
player->bodyFlameTimers[i2] = Rand_S16Offset(0, 200);
}
player->isBurning = true;
player->bodyIsBurning = true;
}
}
if (effect->timer2 == 0) {

View File

@ -1918,11 +1918,11 @@ void func_80902348(BossGanon2* this, PlayState* play) {
temp_f12 = -200.0f - player->actor.world.pos.z;
if (sqrtf(SQ(temp_f2) + SQ(temp_f12)) > 784.0f) {
for (j = 0; j < ARRAY_COUNT(player->flameTimers); j++) {
player->flameTimers[j] = Rand_S16Offset(0, 200);
for (j = 0; j < ARRAY_COUNT(player->bodyFlameTimers); j++) {
player->bodyFlameTimers[j] = Rand_S16Offset(0, 200);
}
player->isBurning = true;
player->bodyIsBurning = true;
func_8002F6D4(play, &this->actor, 10.0f, Math_Atan2S(temp_f12, temp_f2), 0.0f, 0x10);
sBossGanon2Zelda->unk_3C8 = 8;
}

View File

@ -775,7 +775,7 @@ void BossMo_Tentacle(BossMo* this, PlayState* play) {
}
}
if (this->work[MO_TENT_ACTION_STATE] == MO_TENT_GRAB) {
player->unk_850 = 0xA;
player->av2.actionVar2 = 0xA;
player->actor.speedXZ = player->actor.velocity.y = 0;
Math_ApproachF(&player->actor.world.pos.x, this->grabPosRot.pos.x, 0.5f, 20.0f);
Math_ApproachF(&player->actor.world.pos.y, this->grabPosRot.pos.y, 0.5f, 20.0f);
@ -833,7 +833,7 @@ void BossMo_Tentacle(BossMo* this, PlayState* play) {
Math_ApproachS(&this->tentRot[indS1].z, tempf2, 1.0f / this->tentMaxAngle, this->tentSpeed);
}
}
player->unk_850 = 0xA;
player->av2.actionVar2 = 0xA;
player->actor.world.pos.x = this->grabPosRot.pos.x;
player->actor.world.pos.y = this->grabPosRot.pos.y;
player->actor.world.pos.z = this->grabPosRot.pos.z;
@ -852,7 +852,7 @@ void BossMo_Tentacle(BossMo* this, PlayState* play) {
this->work[MO_TENT_ACTION_STATE] = MO_TENT_RETREAT;
this->work[MO_TENT_INVINC_TIMER] = 50;
if (&this->actor == player->actor.parent) {
player->unk_850 = 0x65;
player->av2.actionVar2 = 0x65;
player->actor.parent = NULL;
player->csAction = 0;
if (this->timers[0] == 0) {
@ -882,7 +882,7 @@ void BossMo_Tentacle(BossMo* this, PlayState* play) {
case MO_TENT_CUT:
func_80078914(&this->tentTipPos, NA_SE_EV_WATER_WALL - SFX_FLAG);
if (&this->actor == player->actor.parent) {
player->unk_850 = 0x65;
player->av2.actionVar2 = 0x65;
player->actor.parent = NULL;
player->csAction = 0;
}
@ -1804,7 +1804,7 @@ void BossMo_CoreCollisionCheck(BossMo* this, PlayState* play) {
sMorphaTent2->tent2KillTimer = 1;
}
if (player->actor.parent != NULL) {
player->unk_850 = 0x65;
player->av2.actionVar2 = 0x65;
player->actor.parent = NULL;
player->csAction = 0;
}
@ -1823,7 +1823,7 @@ void BossMo_CoreCollisionCheck(BossMo* this, PlayState* play) {
sMorphaTent1->timers[0] = 40;
sMorphaTent1->actor.flags &= ~ACTOR_FLAG_TARGETABLE;
if (player->actor.parent == &sMorphaTent1->actor) {
player->unk_850 = 0x65;
player->av2.actionVar2 = 0x65;
player->actor.parent = NULL;
player->csAction = 0;
}

View File

@ -384,8 +384,8 @@ void BossSst_HeadSetupIntro(BossSst* this, PlayState* play) {
player->actor.world.pos.z = sRoomCenter.z;
player->linearVelocity = player->actor.velocity.y = 0.0f;
player->actor.shape.rot.y = -0x8000;
player->targetYaw = -0x8000;
player->currentYaw = -0x8000;
player->zTargetYaw = -0x8000;
player->yaw = -0x8000;
player->fallStartHeight = 0;
player->stateFlags1 |= PLAYER_STATE1_INPUT_DISABLED;
@ -443,8 +443,8 @@ void BossSst_HeadIntro(BossSst* this, PlayState* play) {
player->actor.world.pos.z = sRoomCenter.z;
player->linearVelocity = 0;
player->actor.shape.rot.y = -0x8000;
player->targetYaw = -0x8000;
player->currentYaw = -0x8000;
player->zTargetYaw = -0x8000;
player->yaw = -0x8000;
}
Math_Vec3f_Copy(&sCameraAt, &player->actor.world.pos);
@ -1757,7 +1757,7 @@ void BossSst_HandClap(BossSst* this, PlayState* play) {
}
if (player->actor.parent == &this->actor) {
player->unk_850 = 0;
player->av2.actionVar2 = 0;
player->actor.world.pos = this->actor.world.pos;
}
}
@ -1852,7 +1852,7 @@ void BossSst_HandGrab(BossSst* this, PlayState* play) {
this->actor.world.pos.x += this->actor.speedXZ * Math_SinS(this->actor.world.rot.y);
this->actor.world.pos.z += this->actor.speedXZ * Math_CosS(this->actor.world.rot.y);
if (player->stateFlags2 & PLAYER_STATE2_GRABBED_BY_ENEMY) {
player->unk_850 = 0;
player->av2.actionVar2 = 0;
player->actor.world.pos = this->actor.world.pos;
player->actor.shape.rot.y = this->actor.shape.rot.y;
}
@ -1946,7 +1946,7 @@ void BossSst_HandSwing(BossSst* this, PlayState* play) {
}
if (player->stateFlags2 & PLAYER_STATE2_GRABBED_BY_ENEMY) {
player->unk_850 = 0;
player->av2.actionVar2 = 0;
Math_Vec3f_Copy(&player->actor.world.pos, &this->actor.world.pos);
player->actor.shape.rot.x = this->actor.shape.rot.x;
player->actor.shape.rot.z = (this->vParity * -0x4000) + this->actor.shape.rot.z;
@ -2429,7 +2429,7 @@ void BossSst_HandReleasePlayer(BossSst* this, PlayState* play, s32 dropPlayer) {
if (player->actor.parent == &this->actor) {
player->actor.parent = NULL;
player->unk_850 = 100;
player->av2.actionVar2 = 100;
this->colliderJntSph.base.ocFlags1 |= OC1_ON;
OTHER_HAND(this)->colliderJntSph.base.ocFlags1 |= OC1_ON;
if (dropPlayer) {

View File

@ -777,12 +777,12 @@ s32 BossTw_BeamHitPlayerCheck(BossTw* this, PlayState* play) {
if (sFreezeState == 0) {
sFreezeState = 1;
}
} else if (!player->isBurning) {
for (i = 0; i < ARRAY_COUNT(player->flameTimers); i++) {
player->flameTimers[i] = Rand_S16Offset(0, 200);
} else if (!player->bodyIsBurning) {
for (i = 0; i < ARRAY_COUNT(player->bodyFlameTimers); i++) {
player->bodyFlameTimers[i] = Rand_S16Offset(0, 200);
}
player->isBurning = true;
player->bodyIsBurning = true;
Player_PlaySfx(&player->actor, player->ageProperties->unk_92 + NA_SE_VO_LI_DEMO_DAMAGE);
}
}
@ -3154,7 +3154,7 @@ void BossTw_TwinrovaUpdate(Actor* thisx, PlayState* play2) {
}
}
if (player->isBurning && sShieldIceCharge != 0) {
if (player->bodyIsBurning && sShieldIceCharge != 0) {
sShieldIceCharge = 4;
}
}
@ -4039,15 +4039,15 @@ void BossTw_BlastFire(BossTw* this, PlayState* play) {
yDiff = sKoumePtr->groundBlastPos2.y - player->actor.world.pos.y;
zDiff = sKoumePtr->groundBlastPos2.z - player->actor.world.pos.z;
if (!player->isBurning && (player->actor.bgCheckFlags & 1) && (fabsf(yDiff) < 10.0f) &&
if (!player->bodyIsBurning && (player->actor.bgCheckFlags & 1) && (fabsf(yDiff) < 10.0f) &&
(sqrtf(SQ(xDiff) + SQ(zDiff)) < (sKoumePtr->workf[UNK_F13] * 4550.0f))) {
s16 j;
for (j = 0; j < 18; j++) {
player->flameTimers[j] = Rand_S16Offset(0, 200);
player->bodyFlameTimers[j] = Rand_S16Offset(0, 200);
}
player->isBurning = 1;
player->bodyIsBurning = 1;
if (this->work[BURN_TMR] == 0) {
Player_PlaySfx(&player->actor, player->ageProperties->unk_92 + NA_SE_VO_LI_DEMO_DAMAGE);

View File

@ -135,7 +135,7 @@ void DoorAna_WaitOpen(DoorAna* this, PlayState* play) {
player = GET_PLAYER(play);
if (Math_StepToF(&this->actor.scale.x, 0.01f, 0.001f)) {
if ((this->actor.targetMode != 0) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (player->stateFlags1 & PLAYER_STATE1_FLOOR_DISABLED) &&
(player->unk_84F == 0)) {
(player->av1.actionVar1 == 0)) {
destinationIdx = ((this->actor.params >> 0xC) & 7) - 1;
Play_SetupRespawnPoint(play, RESPAWN_MODE_RETURN, 0x4FF);
gSaveContext.respawn[RESPAWN_MODE_RETURN].pos.y = this->actor.world.pos.y;

View File

@ -174,13 +174,13 @@ void func_809BC598(EnBdfire* this, PlayState* play) {
Actor_Kill(&this->actor);
return;
}
} else if (!player->isBurning) {
} else if (!player->bodyIsBurning) {
distToBurn = (this->actor.scale.x * 130.0f) / 4.2000003f;
if (this->actor.xyzDistToPlayerSq < SQ(distToBurn)) {
for (i = 0; i < 18; i++) {
player->flameTimers[i] = Rand_S16Offset(0, 200);
player->bodyFlameTimers[i] = Rand_S16Offset(0, 200);
}
player->isBurning = true;
player->bodyIsBurning = true;
func_8002F6D4(play, &this->actor, 20.0f, this->actor.world.rot.y, 0.0f, 8);
osSyncPrintf("POWER\n");
}

View File

@ -248,7 +248,7 @@ void EnDha_Wait(EnDha* this, PlayState* play) {
if ((player->stateFlags2 & PLAYER_STATE2_GRABBED_BY_ENEMY) && (&this->actor == player->actor.parent)) {
player->stateFlags2 &= ~PLAYER_STATE2_GRABBED_BY_ENEMY;
player->actor.parent = NULL;
player->unk_850 = 200;
player->av2.actionVar2 = 200;
}
if (this->actor.home.rot.z != 0) {
@ -288,7 +288,7 @@ void EnDha_Wait(EnDha* this, PlayState* play) {
if ((player->stateFlags2 & PLAYER_STATE2_GRABBED_BY_ENEMY) && (&this->actor == player->actor.parent)) {
player->stateFlags2 &= ~PLAYER_STATE2_GRABBED_BY_ENEMY;
player->actor.parent = NULL;
player->unk_850 = 200;
player->av2.actionVar2 = 200;
}
this->actor.home.rot.z = 1;
@ -309,7 +309,7 @@ void EnDha_TakeDamage(EnDha* this, PlayState* play) {
if ((player->stateFlags2 & PLAYER_STATE2_GRABBED_BY_ENEMY) && (&this->actor == player->actor.parent)) {
player->stateFlags2 &= ~PLAYER_STATE2_GRABBED_BY_ENEMY;
player->actor.parent = NULL;
player->unk_850 = 200;
player->av2.actionVar2 = 200;
}
Math_SmoothStepToS(&this->limbAngleX[1], 0, 1, 2000, 0);
@ -347,7 +347,7 @@ void EnDha_Die(EnDha* this, PlayState* play) {
if ((player->stateFlags2 & PLAYER_STATE2_GRABBED_BY_ENEMY) && (&this->actor == player->actor.parent)) {
player->stateFlags2 &= ~PLAYER_STATE2_GRABBED_BY_ENEMY;
player->actor.parent = NULL;
player->unk_850 = 200;
player->av2.actionVar2 = 200;
}
Math_SmoothStepToS(&this->limbAngleX[1], 0, 1, 0x7D0, 0);

View File

@ -616,7 +616,7 @@ void EnFr_Idle(EnFr* this, PlayState* play) {
player->actor.world.pos.x = this->actor.world.pos.x; // x = 990.0f
player->actor.world.pos.y = this->actor.world.pos.y; // y = 205.0f
player->actor.world.pos.z = this->actor.world.pos.z; // z = -1220.0f
player->currentYaw = player->actor.world.rot.y = player->actor.shape.rot.y = this->actor.world.rot.y;
player->yaw = player->actor.world.rot.y = player->actor.shape.rot.y = this->actor.world.rot.y;
this->reward = GI_NONE;
this->getItemEntry = (GetItemEntry)GET_ITEM_NONE;
this->actionFunc = EnFr_Activate;

View File

@ -615,7 +615,7 @@ void EnMb_Stunned(EnMb* this, PlayState* play) {
if ((player->stateFlags2 & PLAYER_STATE2_GRABBED_BY_ENEMY) && player->actor.parent == &this->actor) {
player->stateFlags2 &= ~PLAYER_STATE2_GRABBED_BY_ENEMY;
player->actor.parent = NULL;
player->unk_850 = 200;
player->av2.actionVar2 = 200;
func_8002F71C(play, &this->actor, 4.0f, this->actor.world.rot.y, 4.0f);
this->attack = ENMB_ATTACK_NONE;
}
@ -740,7 +740,7 @@ void EnMb_SpearPatrolEndCharge(EnMb* this, PlayState* play) {
if ((player->stateFlags2 & PLAYER_STATE2_GRABBED_BY_ENEMY) && player->actor.parent == &this->actor) {
player->stateFlags2 &= ~PLAYER_STATE2_GRABBED_BY_ENEMY;
player->actor.parent = NULL;
player->unk_850 = 200;
player->av2.actionVar2 = 200;
func_8002F71C(play, &this->actor, 4.0f, this->actor.world.rot.y, 4.0f);
}
@ -967,7 +967,7 @@ void EnMb_SpearPatrolPrepareAndCharge(EnMb* this, PlayState* play) {
hasHitPlayer = true;
player->actor.world.pos.z = this->actor.world.pos.z + Math_SinS(this->actor.shape.rot.y) * 10.0f +
Math_CosS(this->actor.shape.rot.y) * 89.0f;
player->unk_850 = 0;
player->av2.actionVar2 = 0;
player->actor.speedXZ = 0.0f;
player->actor.velocity.y = 0.0f;
}
@ -978,7 +978,7 @@ void EnMb_SpearPatrolPrepareAndCharge(EnMb* this, PlayState* play) {
if (player->stateFlags2 & PLAYER_STATE2_GRABBED_BY_ENEMY) {
player->stateFlags2 &= ~PLAYER_STATE2_GRABBED_BY_ENEMY;
player->actor.parent = NULL;
player->unk_850 = 200;
player->av2.actionVar2 = 200;
func_8002F71C(play, &this->actor, 4.0f, this->actor.world.rot.y, 4.0f);
}
}
@ -1036,7 +1036,7 @@ void EnMb_SpearPatrolImmediateCharge(EnMb* this, PlayState* play) {
hasHitPlayer = true;
player->actor.world.pos.z = this->actor.world.pos.z + Math_SinS(this->actor.shape.rot.y) * 10.0f +
Math_CosS(this->actor.shape.rot.y) * 89.0f;
player->unk_850 = 0;
player->av2.actionVar2 = 0;
player->actor.speedXZ = 0.0f;
player->actor.velocity.y = 0.0f;
}
@ -1047,7 +1047,7 @@ void EnMb_SpearPatrolImmediateCharge(EnMb* this, PlayState* play) {
if (player->stateFlags2 & PLAYER_STATE2_GRABBED_BY_ENEMY) {
player->stateFlags2 &= ~PLAYER_STATE2_GRABBED_BY_ENEMY;
player->actor.parent = NULL;
player->unk_850 = 200;
player->av2.actionVar2 = 200;
func_8002F71C(play, &this->actor, 4.0f, this->actor.world.rot.y, 4.0f);
}
this->attack = ENMB_ATTACK_NONE;
@ -1342,7 +1342,7 @@ void EnMb_SpearDead(EnMb* this, PlayState* play) {
if ((player->stateFlags2 & PLAYER_STATE2_GRABBED_BY_ENEMY) && player->actor.parent == &this->actor) {
player->stateFlags2 &= ~PLAYER_STATE2_GRABBED_BY_ENEMY;
player->actor.parent = NULL;
player->unk_850 = 200;
player->av2.actionVar2 = 200;
func_8002F71C(play, &this->actor, 4.0f, this->actor.world.rot.y, 4.0f);
this->attack = ENMB_ATTACK_NONE;
}
@ -1425,7 +1425,7 @@ void EnMb_CheckColliding(EnMb* this, PlayState* play) {
if ((player->stateFlags2 & PLAYER_STATE2_GRABBED_BY_ENEMY) && player->actor.parent == &this->actor) {
player->stateFlags2 &= ~PLAYER_STATE2_GRABBED_BY_ENEMY;
player->actor.parent = NULL;
player->unk_850 = 200;
player->av2.actionVar2 = 200;
func_8002F71C(play, &this->actor, 6.0f, this->actor.world.rot.y, 6.0f);
}
this->damageEffect = this->actor.colChkInfo.damageEffect;

View File

@ -190,7 +190,7 @@ void func_80AFB950(EnSi* this, PlayState* play) {
player->actor.freezeTimer = 0;
func_8083C148(GET_PLAYER(play), play);
func_80078884(NA_SE_SY_CAMERA_ZOOM_UP);
player->currentYaw = player->actor.shape.rot.y;
player->yaw = player->actor.shape.rot.y;
}
}
}

View File

@ -170,7 +170,7 @@ void func_80AFBE8C(EnSiofuki* this, PlayState* play) {
} else {
if (this->applySpeed) {
player->linearVelocity = this->appliedSpeed + player->linearVelocity;
player->currentYaw = this->appliedYaw;
player->yaw = this->appliedYaw;
}
this->targetAppliedSpeed = 0.0f;

View File

@ -1367,7 +1367,7 @@ void EnSkj_SariasSongShortStumpUpdate(Actor* thisx, PlayState* play) {
void EnSkj_TurnPlayer(EnSkj* this, Player* player) {
Math_SmoothStepToS(&player->actor.shape.rot.y, this->actor.world.rot.y, 5, 2000, 0);
player->actor.world.rot.y = player->actor.shape.rot.y;
player->currentYaw = player->actor.shape.rot.y;
player->yaw = player->actor.shape.rot.y;
}
void EnSkj_SetupWaitForOcarina(EnSkj* this, PlayState* play) {

View File

@ -107,7 +107,7 @@ void EnSyatekiItm_Idle(EnSyatekiItm* this, PlayState* play) {
player->actor.world.pos.x = -12.0f;
player->actor.world.pos.y = 20.0f;
player->actor.world.pos.z = 182.0f;
player->currentYaw = player->actor.world.rot.y = player->actor.shape.rot.y = 0x7F03;
player->yaw = player->actor.world.rot.y = player->actor.shape.rot.y = 0x7F03;
player->actor.world.rot.x = player->actor.shape.rot.x = player->actor.world.rot.z = player->actor.shape.rot.z =
0;
s32 ammunition = 15;

File diff suppressed because it is too large Load Diff