diff --git a/assets/xml/objects/gameplay_dangeon_keep.xml b/assets/xml/objects/gameplay_dangeon_keep.xml index e9acb308b..493290604 100644 --- a/assets/xml/objects/gameplay_dangeon_keep.xml +++ b/assets/xml/objects/gameplay_dangeon_keep.xml @@ -88,6 +88,6 @@ - + diff --git a/assets/xml/objects/gameplay_field_keep.xml b/assets/xml/objects/gameplay_field_keep.xml index 596101814..eac855669 100644 --- a/assets/xml/objects/gameplay_field_keep.xml +++ b/assets/xml/objects/gameplay_field_keep.xml @@ -40,8 +40,8 @@ - - + + diff --git a/assets/xml/objects/gameplay_keep.xml b/assets/xml/objects/gameplay_keep.xml index 2e65fb73d..16cbf0b85 100644 --- a/assets/xml/objects/gameplay_keep.xml +++ b/assets/xml/objects/gameplay_keep.xml @@ -932,16 +932,16 @@ - - - - - - - - + + + + + + + + - + @@ -1039,14 +1039,14 @@ - - - - - - - - + + + + + + + + @@ -1154,8 +1154,8 @@ - - + + diff --git a/assets/xml/objects/object_bigslime.xml b/assets/xml/objects/object_bigslime.xml index 84a6eec61..c7d571b3b 100644 --- a/assets/xml/objects/object_bigslime.xml +++ b/assets/xml/objects/object_bigslime.xml @@ -101,12 +101,12 @@ - + - + - + diff --git a/assets/xml/objects/object_eg.xml b/assets/xml/objects/object_eg.xml index 9cda7f0a3..6aba85e62 100644 --- a/assets/xml/objects/object_eg.xml +++ b/assets/xml/objects/object_eg.xml @@ -1,106 +1,154 @@  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/xml/objects/object_fish.xml b/assets/xml/objects/object_fish.xml index f01639fbf..4d9a86e51 100644 --- a/assets/xml/objects/object_fish.xml +++ b/assets/xml/objects/object_fish.xml @@ -43,17 +43,17 @@ - - + + - - + + - - + + - - + + @@ -74,11 +74,11 @@ - - + + - - + + @@ -95,11 +95,11 @@ - - + + - - + + @@ -144,15 +144,15 @@ - - - - + + + + - - - - + + + + diff --git a/assets/xml/objects/object_ge1.xml b/assets/xml/objects/object_ge1.xml index ead4263dc..a9c930215 100644 --- a/assets/xml/objects/object_ge1.xml +++ b/assets/xml/objects/object_ge1.xml @@ -38,7 +38,7 @@ - + diff --git a/assets/xml/objects/object_ice_block.xml b/assets/xml/objects/object_ice_block.xml index ba755d100..dd25c06d5 100644 --- a/assets/xml/objects/object_ice_block.xml +++ b/assets/xml/objects/object_ice_block.xml @@ -5,7 +5,7 @@ - + @@ -21,8 +21,8 @@ - + - + diff --git a/assets/xml/objects/object_kz.xml b/assets/xml/objects/object_kz.xml index 55f980ad2..f500ba141 100644 --- a/assets/xml/objects/object_kz.xml +++ b/assets/xml/objects/object_kz.xml @@ -12,6 +12,7 @@ + @@ -20,6 +21,7 @@ + @@ -30,19 +32,21 @@ + - + - + - + + @@ -52,30 +56,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/xml/objects/object_test3.xml b/assets/xml/objects/object_test3.xml index efd018995..678e11693 100644 --- a/assets/xml/objects/object_test3.xml +++ b/assets/xml/objects/object_test3.xml @@ -7,7 +7,8 @@ - + + @@ -17,7 +18,16 @@ - + + + + + + + + + + diff --git a/include/PR/gbi.h b/include/PR/gbi.h index 5cfe31785..07fa0ac2c 100644 --- a/include/PR/gbi.h +++ b/include/PR/gbi.h @@ -4132,7 +4132,7 @@ _DW({ \ #define gDPLoadMultiTile(pkt, timg, tmem, rtile, fmt, siz, width, height,\ uls, ult, lrs, lrt, pal, \ cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ +_DW({ \ gDPSetTextureImage(pkt, fmt, siz, width, timg); \ gDPSetTile(pkt, fmt, siz, \ (((((lrs)-(uls)+1) * siz##_TILE_BYTES)+7)>>3), tmem, \ @@ -4154,7 +4154,7 @@ _DW({ \ (ult)<= 201112L) /* C11 */ +#define ALIGNOF(x) _Alignof(x) +#else /* __GNUC__ */ +#define ALIGNOF(x) __alignof__(x) +#endif + +#define ALIGN_MASK(n) (~((n) - 1)) + +#define ALIGNOF_MASK(x) ALIGN_MASK(ALIGNOF(x)) + +#endif diff --git a/include/functions.h b/include/functions.h index e6bc63f8c..888303d2d 100644 --- a/include/functions.h +++ b/include/functions.h @@ -473,7 +473,7 @@ void func_800AE5A0(PlayState* play); void func_800AE5E4(PlayState* play, Color_RGBA8* color, s16 arg2, s16 arg3); void func_800AE778(PlayState* play, Color_RGBA8* color, s16 arg2, s16 arg3); void func_800AE8EC(PlayState* play); -void func_800AE930(CollisionContext* colCtx, EffectTireMark* this, Vec3f* pos, f32 arg3, s16 arg4, CollisionPoly* colPoly, s32 arg6); +void func_800AE930(CollisionContext* colCtx, EffectTireMark* this, Vec3f* pos, f32 arg3, s16 angle, CollisionPoly* colPoly, s32 bgId); void func_800AEF44(EffectTireMark* this); void EffectTireMark_Init(void* thisx, void* initParamsx); void EffectTireMark_Destroy(void* thisx); @@ -549,24 +549,24 @@ void EffectSsDtBubble_SpawnCustomColor(PlayState* play, Vec3f* pos, Vec3f* veloc void EffectSsHahen_Spawn(PlayState* play, Vec3f* pos, Vec3f* velocity, Vec3f* accel, s16 flags, s16 scale, s16 objId, s16 life, Gfx* dList); void EffectSsHahen_SpawnBurst(PlayState* play, Vec3f* pos, f32 burstScale, s16 flags, s16 scale, s16 randScaleRange, s16 count, s16 objId, s16 life, Gfx* dList); // void func_800B2364(void); -// void EffectSsStick_Spawn(UNK_TYPE4 uParm1, UNK_PTR puParm2, UNK_TYPE2 uParm3); +void EffectSsStick_Spawn(PlayState* play, Vec3f* pos, s16 yaw); // void EffectSsSibuki_Spawn(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7); void EffectSsSibuki_SpawnBurst(PlayState* play, Vec3f* pos); void EffectSsStone1_Spawn(PlayState* play, Vec3f* pos, s32 reg0); void EffectSsHitmark_SpawnFixedScale(PlayState* play, s32 type, Vec3f* pos); void EffectSsHitmark_SpawnCustomScale(PlayState* play, s32 type, s16 scale, Vec3f* pos); void EffectSsFhgFlash_SpawnShock(PlayState* play, Actor* actor, Vec3f* pos, s16 scale, u8 params); -// void EffectSsKFire_Spawn(UNK_TYPE4 uParm1, Vec3f* pzParm2, Vec3f* pzParm3, Vec3f* pzParm4, UNK_TYPE2 param_5, UNK_TYPE1 param_6); +void EffectSsKFire_Spawn(PlayState* play, Vec3f* pos, Vec3f* velocity, Vec3f* accel, s16 scaleMax, u8 type); void EffectSsSolderSrchBall_Spawn(PlayState* play, Vec3f* pos, Vec3f* velocity, Vec3f* accel, s16 scale, s16* playerDetected, s16 flags); void EffectSsKakera_Spawn(PlayState* play, Vec3f* pos, Vec3f* velocity, Vec3f* arg3, s16 gravity, s16 arg5, s16 arg6, s16 arg7, s16 arg8, s16 scale, s16 arg10, s16 arg11, s32 life, s16 colorIdx, s16 objId, Gfx* dList); // void EffectSsIcePiece_Spawn(UNK_TYPE4 uParm1, Vec3f* pzParm2, UNK_TYPE4 uParm3, Vec3f* pzParm4, Vec3f* param_5, UNK_TYPE4 param_6); -// void EffectSsIcePiece_SpawnBurst(void); +void EffectSsIcePiece_SpawnBurst(PlayState* play, Vec3f* refPos, f32 scale); void func_800B2B44(PlayState* play, Actor* actor, Vec3f* pos, f32 scale); // void func_800B2B7C(void); void EffectSsEnIce_Spawn(PlayState* play, Vec3f* pos, f32 scale, Vec3f* velocity, Vec3f* accel, Color_RGBA8* primColor, Color_RGBA8* envColor, s32 life); // void EffectSsFireTail_Spawn(UNK_TYPE4 uParm1, UNK_TYPE4 uParm2, Vec3f* pzParm3, UNK_TYPE4 uParm4, Vec3f* param_5, UNK_TYPE2 param_6, Color_RGBA8* param_7, Color_RGBA8* param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE4 param_11); // void EffectSsFireTail_SpawnFlame(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE4 param_6); -// void EffectSsFireTail_SpawnFlameOnPlayer(void); +void EffectSsFireTail_SpawnFlameOnPlayer(PlayState* play, f32 scale, s16 bodyPart, f32 colorIntensity); void EffectSsEnFire_SpawnVec3f(PlayState* play, Actor* actor, Vec3f* pos, s16 scale, s16 params, s16 flags, s16 bodyPart); // void EffectSsEnFire_SpawnVec3s(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7); void EffectSsExtra_Spawn(PlayState* play, Vec3f* pos, Vec3f* velocity, Vec3f* accel, s16 scale, s16 scoreIdx); @@ -656,7 +656,7 @@ s32 func_800B715C(PlayState* play); void Actor_SetCameraHorseSetting(PlayState* play, Player* player); void Actor_MountHorse(PlayState* play, Player* player, Actor* horse); s32 func_800B724C(PlayState* play, Actor* actor, u8 csMode); -u32 func_800B7298(PlayState* play, Actor* actor, u8 csMode); +s32 func_800B7298(PlayState* play, Actor* actor, u8 csMode); void func_800B72F8(DynaPolyActor* dyna, f32 extraPushForce, s16 yRotation); s32 Player_IsFacingActor(Actor* actor, s16 maxAngleDiff, PlayState* play); @@ -666,7 +666,7 @@ s32 Actor_ActorAIsFacingActorB(Actor* actorA, Actor* actorB, s16 maxAngleDiff); s32 Actor_IsFacingAndNearPlayer(Actor* actor, f32 range, s16 maxAngleDiff); s32 Actor_ActorAIsFacingAndNearActorB(Actor* actorA, Actor* actorB, f32 range, s16 maxAngleDiff); -void func_800B75A0(CollisionPoly* poly, Vec3f* normal, s16* azimuth); +void Actor_GetSlopeDirection(CollisionPoly* floorPoly, Vec3f* slopeNormal, s16* downwardSlopeYaw); void Actor_UpdateBgCheckInfo(PlayState* play, Actor* actor, f32 wallCheckHeight, f32 wallCheckRadius, f32 ceilingCheckHeight, u32 flags); Hilite* Hilite_DrawOpa(Vec3f* object, Vec3f* eye, Vec3f* lightDir, GraphicsContext* gfxCtx); void func_800B8050(Actor* actor, PlayState* play, s32 flag); @@ -677,13 +677,13 @@ PosRot* Actor_GetWorldPosShapeRot(PosRot* dest, Actor* actor); s32 func_800B83F8(Actor* actor, Player* player, s32 flag); s32 Actor_ProcessTalkRequest(Actor* actor, GameState* gameState); -s32 func_800B8500(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, PlayerActionParam exchangeItemId); -s32 func_800B85E0(Actor* actor, PlayState* play, f32 radius, PlayerActionParam exchangeItemId); +s32 func_800B8500(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, PlayerItemAction exchangeItemId); +s32 func_800B85E0(Actor* actor, PlayState* play, f32 radius, PlayerItemAction exchangeItemId); s32 func_800B8614(Actor* actor, PlayState* play, f32 radius); s32 func_800B863C(Actor* actor, PlayState* play); s32 Actor_TextboxIsClosing(Actor* actor, PlayState* play); s32 Actor_ChangeFocus(Actor* actor1, PlayState* play, Actor* actor2); -s32 Player_GetExchangeItemId(PlayState* play); +PlayerItemAction Player_GetExchangeItemId(PlayState* play); s32 func_800B8718(Actor* actor, GameState* gameState); s32 func_800B874C(Actor* actor, PlayState* play, f32 xzRange, f32 yRange); s32 func_800B8804(Actor* actor, PlayState* play, f32 xzRange); @@ -691,10 +691,10 @@ s32 func_800B886C(Actor* actor, PlayState* play); void Actor_GetScreenPos(PlayState* play, Actor* actor, s16* x, s16* y); s32 Actor_OnScreen(PlayState* play, Actor* actor); s32 Actor_HasParent(Actor* actor, PlayState* play); -s32 Actor_PickUp(Actor* actor, PlayState* play, s32 getItemId, f32 xzRange, f32 yRange); -s32 Actor_PickUpNearby(Actor* actor, PlayState* play, s32 getItemId); +s32 Actor_PickUp(Actor* actor, PlayState* play, GetItemId getItemId, f32 xzRange, f32 yRange); +s32 Actor_PickUpNearby(Actor* actor, PlayState* play, GetItemId getItemId); s32 Actor_LiftActor(Actor* actor, PlayState* play); -s32 Actor_PickUpFar(Actor* actor, PlayState* play, s32 getItemId); +s32 Actor_PickUpFar(Actor* actor, PlayState* play, GetItemId getItemId); s32 Actor_HasNoParent(Actor* actor, PlayState* play); void func_800B8C20(Actor* actorA, Actor* actorB, PlayState* play); void func_800B8C50(Actor* actor, PlayState* play); @@ -716,7 +716,7 @@ void func_800B9010(Actor* actor, u16 sfxId); void func_800B9038(Actor* actor, s32 timer); void func_800B9084(Actor* actor); void func_800B9098(Actor* actor); -s32 func_800B90AC(PlayState* play, Actor* actor, CollisionPoly* polygon, s32 bgId, s32 arg4); +s32 func_800B90AC(PlayState* play, Actor* actor, CollisionPoly* polygon, s32 bgId, Vec3f* arg4); void Actor_DeactivateLens(PlayState* play); void func_800B9120(ActorContext* actorCtx); void Actor_InitContext(PlayState* play, ActorContext* actorCtx, ActorEntry* actorEntry); @@ -975,7 +975,7 @@ Vec3s* Camera_Update(Vec3s* param_1, Camera* camera); // void func_800DF498(void); u32 Camera_SetMode(Camera* camera, s16 mode, s8 param_3); s32 Camera_ChangeMode(Camera* camera, s16 mode); -// void func_800DF86C(void); +s32 func_800DF86C(Camera* camera, s16 arg1); // void func_800DF8EC(void); s32 Camera_ChangeSetting(Camera* camera, s16 setting); u32 Camera_ChangeDataIdx(Camera* camera, u32 camDataIdx); @@ -999,7 +999,7 @@ s32 Camera_Copy(Camera* dstCamera, Camera* srcCamera); Vec3f* Camera_GetQuakeOffset(Vec3f* dst, Camera* camera); // void func_800E01DC(s32 param_1, u32 param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6); // UNK_TYPE4 func_800E0228(void); -// void func_800E0238(void); +void func_800E0238(Camera* camera); void Camera_SetToTrackActor(Camera* camera, Actor* actor); void Camera_SetTargetActor(Camera* camera, Actor* actor); f32 Camera_GetWaterYPos(Camera* camera); @@ -1556,7 +1556,7 @@ void func_80106644(PlayState* play, s16 arg1, s16 arg2, s16 arg3); // void func_8010683C(void); // void func_801068B4(void); // void func_801068D8(void); -// void func_801068FC(void); +void* func_801068FC(PlayState* play, void* arg1, size_t size); // void func_80106BEC(void); // void func_80106D08(void); // void func_80106D5C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7); @@ -1569,7 +1569,7 @@ void func_80108AF8(PlayState* play); s32 func_801090B0(s32 arg0); s32 func_80109124(s16 arg0); // void func_801091F0(void); -// void func_80109428(void); +void func_80109428(PlayState* play); // void func_801094A0(void); // void func_801094C8(void); // void func_801094F8(void); @@ -1756,7 +1756,7 @@ s32 func_80122744(PlayState* play, struct_80122744_arg1* arg1, u32 arg2, Vec3s* s32 func_80122760(PlayState* play, struct_80122744_arg1* arg1, f32 arg2); void func_80122868(PlayState* play, Player* player); void func_801229A0(PlayState* play, Player* player); -void func_801229EC(UNK_TYPE arg0, UNK_TYPE arg1); +void func_801229EC(Actor* thisx, PlayState* play); void func_801229FC(Player* player); void func_80122BA4(PlayState* play, struct_80122D44_arg1* arg1, s32 arg2, s32 alpha); void func_80122C20(PlayState* play, struct_80122D44_arg1* arg1); @@ -1767,7 +1767,7 @@ void func_80122F28(Player* player); s32 func_80122F9C(PlayState* play); s32 func_80122FCC(PlayState* play); void func_8012300C(PlayState* play, s32 arg1); -void func_8012301C(Player* player, PlayState* play2); +void func_8012301C(Actor* thisx, PlayState* play2); void func_80123140(PlayState* play, Player* player); s32 Player_InBlockingCsMode(PlayState* play, Player* player); s32 Player_InCsMode(PlayState* play); @@ -1778,14 +1778,14 @@ s32 Player_IsGoronOrDeku(Player* player); s32 func_801234D4(PlayState* play); s32 func_80123590(PlayState* play, Actor* actor); ItemId func_8012364C(PlayState* play, Player* player, s32 arg2); -s32 func_80123810(PlayState* play); -PlayerModelGroup Player_ActionToModelGroup(Player* player, PlayerActionParam actionParam); +PlayerItemAction func_80123810(PlayState* play); +PlayerModelGroup Player_ActionToModelGroup(Player* player, PlayerItemAction itemAction); void Player_SetModelsForHoldingShield(Player* player); void Player_SetModels(Player* player, PlayerModelGroup modelGroup); void Player_SetModelGroup(Player* player, PlayerModelGroup modelGroup); void func_80123C58(Player* player); void Player_SetEquipmentData(PlayState* play, Player* player); -void func_80123D50(PlayState* play, Player* player, ItemId itemId, PlayerActionParam actionParam); +void Player_UpdateBottleHeld(PlayState* play, Player* player, ItemId itemId, PlayerItemAction itemAction); void func_80123DA4(Player* player); void func_80123DC0(Player* player); void func_80123E90(PlayState* play, Actor* actor); @@ -1798,16 +1798,16 @@ s32 Player_HasMirrorShieldEquipped(PlayState* play); s32 Player_IsHoldingMirrorShield(PlayState* play); s32 Player_IsHoldingHookshot(Player* player); s32 func_801240DC(Player* player); -s32 func_80124110(Player* player, PlayerActionParam actionParam); +s32 func_80124110(Player* player, PlayerItemAction itemAction); s32 func_80124148(Player* player); -s32 Player_ActionToMeleeWeapon(PlayerActionParam actionParam); +s32 Player_ActionToMeleeWeapon(PlayerItemAction itemAction); s32 Player_GetMeleeWeaponHeld(Player* player); s32 Player_IsHoldingTwoHandedWeapon(Player* player); -s32 Player_ActionToBottle(Player* player, PlayerActionParam actionParam); +s32 Player_ActionToBottle(Player* player, PlayerItemAction itemAction); s32 Player_GetBottleHeld(Player* Player); -s32 Player_ActionToExplosive(Player* player, PlayerActionParam actionParam); +s32 Player_ActionToExplosive(Player* player, PlayerItemAction itemAction); s32 Player_GetExplosiveHeld(Player* player); -s32 Player_ActionToSword(Actor* actor, PlayerActionParam actionParam); +s32 Player_ActionToSword(Actor* actor, PlayerItemAction itemAction); s32 func_801242B4(Player* player); s32 Player_GetEnvTimerType(PlayState* play); void func_80124420(Player* player); @@ -2055,7 +2055,7 @@ void AnimationContext_CopyTrue(PlayState* play, AnimationEntryData* data); void AnimationContext_CopyFalse(PlayState* play, AnimationEntryData* data); void AnimationContext_MoveActor(PlayState* play, AnimationEntryData* data); void AnimationContext_Update(PlayState* play, AnimationContext* animationCtx); -void SkelAnime_InitLink(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, LinkAnimationHeader* animation, s32 flags, Vec3s* jointTable, Vec3s* morphTable, s32 limbBufCount); +void SkelAnime_InitLink(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, LinkAnimationHeader* animation, s32 flags, void* jointTableBuffer, void* morphTableBuffer, s32 limbBufCount); void LinkAnimation_SetUpdateFunction(SkelAnime* skelAnime); s32 LinkAnimation_Update(PlayState* play, SkelAnime* skelAnime); s32 LinkAnimation_Morph(PlayState* play, SkelAnime* skelAnime); @@ -2073,8 +2073,8 @@ void LinkAnimation_CopyMorphToJoint(PlayState* play, SkelAnime* skelAnime); void LinkAnimation_LoadToMorph(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 frame); void LinkAnimation_LoadToJoint(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 frame); void LinkAnimation_InterpJointMorph(PlayState* play, SkelAnime* skelAnime, f32 weight); -void LinkAnimation_BlendToJoint(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation1, f32 frame1, LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, Vec3s* blendTable); -void LinkAnimation_BlendToMorph(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation1, f32 frame1, LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, Vec3s* blendTable); +void LinkAnimation_BlendToJoint(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation1, f32 frame1, LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, void* blendTableBuffer); +void LinkAnimation_BlendToMorph(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation1, f32 frame1, LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, void* blendTableBuffer); void LinkAnimation_EndLoop(SkelAnime* skelAnime); s32 Animation_OnFrameImpl(SkelAnime* skelAnime, f32 frame, f32 updateRate); s32 LinkAnimation_OnFrame(SkelAnime* skelAnime, f32 frame); @@ -2160,11 +2160,12 @@ void VisMono_Draw(VisMono* this, Gfx** gfxp); void func_801420C0(void* arg0); void func_801420F4(void* arg0); void func_80142100(void* arg0, Gfx** gfx, u32 arg2); -s32 func_80142440(SkyboxContext* skyboxCtx, Vtx* vtx, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8); + +s32 func_80142440(SkyboxContext* skyboxCtx, Vtx* roomVtx, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8); void func_80143148(SkyboxContext* skyboxCtx, s32 arg1); -void func_801431E8(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyType); -void func_80143324(PlayState* play, SkyboxContext* skyboxCtx, s16 skyType); -void func_801434E4(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyType); +void Skybox_Setup(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyboxId); +void func_80143324(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId); +void Skybox_Init(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyboxId); Mtx* SkyboxDraw_UpdateMatrix(SkyboxContext* skyboxCtx, f32 x, f32 y, f32 z); void SkyboxDraw_SetColors(SkyboxContext* skyboxCtx, u8 primR, u8 primG, u8 primB, u8 envR, u8 envG, u8 envB); void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyboxId, s16 blend, f32 x, f32 y, f32 z); @@ -2315,8 +2316,8 @@ void func_80165658(u32 arg0); void func_8016566C(u32 arg0); void func_80165690(void); // void func_801656A4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8); -// void func_80165DCC(void); -// void func_80165DF0(void); +void func_80165DCC(s32 arg0); +void func_80165DF0(void); // void func_80165E1C(void); // void func_80165E7C(void); // void func_80165EC0(void); @@ -2567,7 +2568,7 @@ s32 func_80178A94(s32 param_1, s32 param_2); // void func_80178D7C(void); // void func_80178DAC(void); void func_80178E3C(u32 romSegment, u32 arg1, void* dst, u32 size); -// void func_80178E7C(void); +void func_80178E7C(uintptr_t arg0, void* arg1, size_t size); // void Check_WriteRGBA16Pixel(u16* buffer, u32 x, u32 y, u32 value); // void Check_WriteI4Pixel(u16* buffer, u32 x, u32 y, u32 value); // void Check_DrawI4Texture(u16* buffer, u32 x, u32 y, u32 width, u32 height, u8* texture); @@ -2678,11 +2679,10 @@ s32 Math3D_YZInSphere(Sphere16* sphere, f32 y, f32 z); // void func_8017FB1C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11); // void func_8017FD44(void); -u16 Math_GetAtan2Tbl(f32 y, f32 x); s16 Math_Atan2S(f32 y, f32 x); f32 Math_Atan2F(f32 y, f32 x); -s16 Math_FAtan2F(f32 adjacent, f32 opposite); -f32 Math_Acot2F(f32 adjacent, f32 opposite); +s16 Math_Atan2S_XY(f32 x, f32 y); +f32 Math_Atan2F_XY(f32 x, f32 y); u64* SysUcode_GetUCodeBoot(void); size_t SysUcode_GetUCodeBootSize(void); @@ -2928,19 +2928,19 @@ void func_8019F420(Vec3f* pos, u16 sfxId); void func_8019F4AC(Vec3f* pos, u16 sfxId); void func_8019F540(s8 arg0); void AudioSfx_LowerSfxSettingsReverb(Vec3f* pos, s8 isReverbLowered); -// void func_8019F5AC(void); -// void func_8019F638(void); -// void func_8019F780(void); +f32 func_8019F5AC(f32 arg0); +void func_8019F638(Vec3f* arg0, u16 sfxId, f32 arg2); +void func_8019F780(Vec3f* arg0, u16 sfxId, f32 arg2); // void func_8019F7D8(void); -// void func_8019F830(void); +void func_8019F830(Vec3f* arg0, u16 arg1); void func_8019F88C(Vec3f* arg0, u16 sfxId, UNK_TYPE arg2); void func_8019F900(Vec3f* pos, u8 chargeLevel); // void func_8019FA18(void); void func_8019FAD8(Vec3f* param_1, u16 sfxId, f32 param_3); void func_8019FB0C(Vec3f* arg0, u16 sfxId, f32 arg2, s32 arg3); void func_8019FC20(Vec3f* pos, u16 sfxId); -// void func_8019FCB8(void); -// void func_8019FD90(void); +void func_8019FCB8(Vec3f* arg0, u16 arg1, f32 arg2); +void func_8019FD90(s8 arg0, s8 arg1); void func_8019FDC8(UNK_PTR arg0, u16 sfxId, UNK_TYPE arg2); // void func_8019FE1C(void); void func_8019FE74(f32* arg0, f32 arg1, s32 arg2); @@ -2950,8 +2950,8 @@ void Audio_PlaySfxForRiver(Vec3f* pos, f32 freqScale); // void Audio_PlaySfxForWaterfall(void); // void Audio_StepFreqLerp(void); void func_801A0124(Vec3f* pos, u8 arg1); -// void func_801A0184(void); -// void func_801A01C4(void); +void func_801A0184(void); +void func_801A01C4(void); void func_801A0204(s8 seqId); void func_801A0238(s32 arg0, s32 arg1); // void Audio_SetGanonsTowerBgmVolumeLevel(void); @@ -3010,9 +3010,9 @@ void func_801A3AEC(s32 arg0); void func_801A3B48(UNK_TYPE arg0); // void func_801A3B90(void); void func_801A3CD8(s8 param_1); -// void func_801A3CF4(void); +void func_801A3CF4(s8 arg0); void func_801A3D98(s8 audioSetting); -// void func_801A3E38(void); +void func_801A3E38(u8 arg0); // void func_801A3EC0(void); void Audio_SetCutsceneFlag(s8 flag); // void func_801A3F6C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); @@ -3021,7 +3021,7 @@ void Audio_SetCutsceneFlag(s8 flag); void Audio_SetSpec(u32 specId); void func_801A4058(UNK_TYPE arg0); // void func_801A41C8(void); -// void func_801A41F8(void); +void func_801A41F8(UNK_TYPE arg0); // void func_801A429C(void); // void func_801A42C8(void); // void func_801A4324(void); diff --git a/include/macros.h b/include/macros.h index ad963153f..f5638199e 100644 --- a/include/macros.h +++ b/include/macros.h @@ -69,6 +69,11 @@ #define CHECK_FLAG_ALL(flags, mask) (((flags) & (mask)) == (mask)) +#define ALIGN8(val) (((val) + 7) & ~7) +#define ALIGN16(val) (((val) + 0xF) & ~0xF) +#define ALIGN64(val) (((val) + 0x3F) & ~0x3F) +#define ALIGN256(val) (((val) + 0xFF) & ~0xFF) + extern GraphicsContext* __gfxCtx; #define WORK_DISP __gfxCtx->work.p @@ -106,7 +111,7 @@ extern GraphicsContext* __gfxCtx; #define VTX_T(x, y, z, s, t, cr, cg, cb, a) \ { { x, y, z }, 0, { s, t }, { cr, cg, cb, a }, } -#define GRAPH_ALLOC(gfxCtx, size) ((void*)((gfxCtx)->polyOpa.d = (Gfx*)((u8*)(gfxCtx)->polyOpa.d - (size)))) +#define GRAPH_ALLOC(gfxCtx, size) ((void*)((gfxCtx)->polyOpa.d = (Gfx*)((u8*)(gfxCtx)->polyOpa.d - ALIGN16(size)))) // Custom gbi macro #define gDPSetTileCustom(pkt, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \ @@ -123,11 +128,6 @@ extern GraphicsContext* __gfxCtx; } \ (void)0 -#define ALIGN8(val) (((val) + 7) & ~7) -#define ALIGN16(val) (((val) + 0xF) & ~0xF) -#define ALIGN64(val) (((val) + 0x3F) & ~0x3F) -#define ALIGN256(val) (((val) + 0xFF) & ~0xFF) - #define SQ(x) ((x) * (x)) #define ABS(x) ((x) >= 0 ? (x) : -(x)) #define ABS_ALT(x) ((x) < 0 ? -(x) : (x)) @@ -149,10 +149,4 @@ extern GraphicsContext* __gfxCtx; #define OVERLAY_RELOCATION_OFFSET(overlayEntry) ((uintptr_t)((overlayEntry)->vramStart) - (uintptr_t)((overlayEntry)->loadedRamAddr)) #define VRAM_PTR_SIZE(entry) ((uintptr_t)((entry)->vramEnd) - (uintptr_t)((entry)->vramStart)) -#ifdef __GNUC__ -#define ALIGNED8 __attribute__ ((aligned (8))) -#else -#define ALIGNED8 -#endif - #endif // MACROS_H diff --git a/include/regs.h b/include/regs.h index 95328d1f9..8ad793f34 100644 --- a/include/regs.h +++ b/include/regs.h @@ -48,8 +48,7 @@ #define R_ENABLE_ARENA_DBG SREG(0) // Same as OoT #define R_UPDATE_RATE SREG(30) -#define R_PAUSE_MENU_MODE SREG(94) - +#define R_PAUSE_BG_PRERENDER_STATE SREG(94) #define R_PLAY_FILL_SCREEN_ON MREG(64) #define R_PLAY_FILL_SCREEN_R MREG(65) #define R_PLAY_FILL_SCREEN_G MREG(66) diff --git a/include/segment_symbols.h b/include/segment_symbols.h index b69439ce7..ccb5488d1 100644 --- a/include/segment_symbols.h +++ b/include/segment_symbols.h @@ -53,7 +53,9 @@ DECLARE_ROM_SEGMENT(map_grand_static) DECLARE_ROM_SEGMENT(item_name_static) DECLARE_ROM_SEGMENT(map_name_static) DECLARE_ROM_SEGMENT(icon_item_static_test) +DECLARE_ROM_SEGMENT(icon_item_static_old) DECLARE_ROM_SEGMENT(icon_item_24_static_test) +DECLARE_ROM_SEGMENT(icon_item_24_static_old) DECLARE_ROM_SEGMENT(schedule_dma_static_test) DECLARE_ROM_SEGMENT(schedule_static) DECLARE_ROM_SEGMENT(story_static) diff --git a/include/variables.h b/include/variables.h index 3bb6d27f9..2d80ceabf 100644 --- a/include/variables.h +++ b/include/variables.h @@ -427,7 +427,7 @@ extern Gfx D_801AEFA0[]; // extern UNK_TYPE1 D_801AEFBC; // extern UNK_TYPE1 D_801AEFC0; extern ActorOverlay gActorOverlayTable[ACTOR_ID_MAX]; -extern s32 gMaxActorId; +extern ActorId gMaxActorId; extern BgCheckSceneSubdivisionEntry sSceneSubdivisionList[]; extern BgSpecialSceneMaxObjects sCustomDynapolyMem[]; // extern UNK_TYPE1 D_801B4708; @@ -797,7 +797,7 @@ extern TexturePtr gItemIcons[]; extern u8 gItemSlots[]; extern s16 gItemPrices[]; extern u16 gSceneIdsPerRegion[11][27]; -extern u8 gPlayerFormItemRestrictions[5][114]; +extern u8 gPlayerFormItemRestrictions[PLAYER_FORM_MAX][114]; extern s16 gPlayerFormObjectIndices[8]; extern RomFile gObjectTable[643]; extern SceneTableEntry gSceneTable[]; @@ -808,13 +808,6 @@ extern UNK_PTR D_801C5CB0; // extern UNK_TYPE1 D_801C5DE0; // extern UNK_TYPE1 D_801C5DF0; // extern UNK_TYPE1 D_801C5E00; -extern s32 D_801C5E30[]; // D_801C5E30 -extern u16 D_801C5E48[]; // D_801C5E48 -extern s32 D_801C5E88[]; // D_801C5E88 -extern s32 D_801C5E9C[]; // D_801C5E9C -extern s32 D_801C5EB0[]; // D_801C5EB0 -extern s16 D_801C5EC4[]; // D_801C5EC4 -extern struct_801C5F44 D_801C5F44[]; // D_801C5F44 // extern UNK_TYPE1 D_801C6A70; // extern UNK_TYPE2 D_801C6A74; @@ -826,7 +819,7 @@ extern struct_801C5F44 D_801C5F44[]; // D_801C5F44 // extern UNK_TYPE2 D_801C6A8C; // extern UNK_TYPE2 D_801C6A90; // extern UNK_TYPE2 D_801C6A94; -// extern UNK_TYPE1 D_801C6A98; +extern u8 D_801C6A98[5][5]; // extern UNK_TYPE1 D_801C6AB8; // extern UNK_TYPE1 D_801C6B28; // extern UNK_TYPE1 D_801CED40; diff --git a/include/z64.h b/include/z64.h index 1fb600e5e..8514b307a 100644 --- a/include/z64.h +++ b/include/z64.h @@ -387,10 +387,10 @@ typedef struct { /* 0x000 */ View view; /* 0x168 */ u8* iconItemSegment; /* 0x16C */ u8* iconItem24Segment; - /* 0x170 */ u8* unk_170; - /* 0x174 */ u8* unk_174; - /* 0x178 */ u8* unk_178; - /* 0x17C */ u8* unk_17C; + /* 0x170 */ u8* iconItemAltSegment; + /* 0x174 */ u8* iconItemLangSegment; + /* 0x178 */ u8* nameSegment; + /* 0x17C */ u8* iconItemVtxSegment; /* 0x180 */ Vtx* itemPageVtx; /* 0x184 */ Vtx* mapPageVtx; /* 0x188 */ Vtx* questPageVtx; @@ -403,24 +403,24 @@ typedef struct { /* 0x1A4 */ Vtx* unk_1A4; /* 0x1A8 */ Vtx* cursorVtx; /* 0x1AC */ OcarinaStaff* ocarinaStaff; - /* 0x1B0 */ DmaRequest unk_1B0; + /* 0x1B0 */ UNK_TYPE1 unk_1B0[0x20]; /* 0x1D0 */ OSMesgQueue loadQueue; /* 0x1E8 */ OSMesg loadMsg; /* 0x1EC */ u16 state; /* 0x1EE */ u16 debugEditor; /* 0x1F0 */ u8 bombersNotebookOpen; /* 0x1F4 */ Vec3f eye; - /* 0x200 */ u16 unk_200; - /* 0x202 */ u16 mode; + /* 0x200 */ u16 mainState; + /* 0x202 */ u16 nextPageMode; // (2 * prev pageIndex) + (scroll left ? 1 : 0) /* 0x204 */ u16 pageIndex; - /* 0x206 */ u16 unk_206; - /* 0x208 */ u16 unk_208; + /* 0x206 */ u16 switchPageTimer; + /* 0x208 */ u16 savePromptState; /* 0x20C */ f32 unk_20C; - /* 0x210 */ f32 unk_210; - /* 0x214 */ f32 unk_214; - /* 0x218 */ f32 unk_218; - /* 0x21C */ f32 unk_21C; - /* 0x220 */ f32 unk_220; + /* 0x210 */ f32 itemPageRoll; // rotation (-z) of the item page into the screen + /* 0x214 */ f32 mapPageRoll; // rotation (+x) of the map page into the screen + /* 0x218 */ f32 questPageRoll; // rotation (+z) of the quest page into the screen + /* 0x21C */ f32 maskPageRoll; // rotation (-z) of the mask page into the screen + /* 0x220 */ f32 roll; /* 0x224 */ u16 alpha; /* 0x226 */ s16 offsetY; /* 0x228 */ UNK_TYPE1 unk_228[0x8]; @@ -432,7 +432,7 @@ typedef struct { /* 0x256 */ s16 unk_256; // Uses DungeonItem enum /* 0x258 */ s16 cursorSpecialPos; /* 0x25A */ s16 pageSwitchTimer; - /* 0x25C */ u16 unk_25C; + /* 0x25C */ u16 namedItem; /* 0x25E */ u16 cursorItem[5]; /* 0x268 */ u16 cursorSlot[5]; /* 0x272 */ u16 equipTargetItem; @@ -441,7 +441,7 @@ typedef struct { /* 0x278 */ s16 equipAnimX; /* 0x27A */ s16 equipAnimY; /* 0x27C */ s16 equipAnimAlpha; - /* 0x27E */ s16 unk_27E; + /* 0x27E */ s16 infoPanelOffsetY; /* 0x280 */ u16 unk_280; /* 0x282 */ u16 nameColorSet; /* 0x284 */ s16 cursorColorSet; @@ -455,9 +455,9 @@ typedef struct { /* 0x29E */ s16 promptAlpha; /* 0x2A0 */ s16 ocarinaSongIndex; /* 0x2A2 */ u8 worldMapPoints[20]; - /* 0x2B6 */ u8 unk_2B6; - /* 0x2B7 */ u8 unk_2B7; - /* 0x2B8 */ u8 unk_2B8; + /* 0x2B6 */ u8 unk_2B6; // unused red? + /* 0x2B7 */ u8 unk_2B7; // unused green? + /* 0x2B8 */ u8 unk_2B8; // unused blue? /* 0x2B9 */ u8 itemDescriptionOn; // helpful description of item given through a message box /* 0x2BA */ s16 equipAnimScale; // scale of item icon while moving being equipped to c-button /* 0x2BC */ s16 equipAnimShrinkRate; // rate the scale is shrinking for the item icon while moving being equipped to c-button @@ -546,9 +546,9 @@ typedef struct { typedef struct { /* 0x000 */ View view; - /* 0x168 */ void* skyboxStaticSegment[4]; - /* 0x178 */ void* skyboxPaletteStaticSegment; - /* 0x17C */ Gfx* dListBuf; + /* 0x168 */ void* staticSegments[4]; + /* 0x178 */ void* paletteStaticSegment; + /* 0x17C */ Gfx (*dListBuf)[150]; /* 0x180 */ Gfx* roomDL; /* 0x184 */ Vtx* roomVtx; /* 0x188 */ DmaRequest unk188; @@ -948,9 +948,9 @@ struct PlayState { /* 0x18784 */ s32 (*damagePlayer)(struct PlayState* play, s32 damage); /* 0x18788 */ void (*talkWithPlayer)(struct PlayState* play, Actor* actor); /* 0x1878C */ void (*unk_1878C)(struct PlayState* play); - /* 0x18790 */ void (*unk_18790)(struct PlayState* play, s16 arg1, Actor* actor); - /* 0x18794 */ s32 (*unk_18794)(struct PlayState* play, Player* player, s32 itemId, s32 arg3); - /* 0x18798 */ s32 (*setPlayerTalkAnim)(struct PlayState* play, void* talkAnim, s32 arg2); + /* 0x18790 */ void (*unk_18790)(struct PlayState* play, s16 arg1); + /* 0x18794 */ PlayerItemAction (*unk_18794)(struct PlayState* play, Player* player, ItemId itemId); + /* 0x18798 */ s32 (*setPlayerTalkAnim)(struct PlayState* play, LinkAnimationHeader* talkAnim, s32 animMode); /* 0x1879C */ s16 playerActorCsIds[10]; /* 0x187B0 */ MtxF viewProjectionMtxF; /* 0x187F0 */ Vec3f unk_187F0; diff --git a/include/z64actor.h b/include/z64actor.h index c0a2cd739..16ac88d7d 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -19,6 +19,7 @@ struct Lights; struct CollisionPoly; struct EnBox; +struct EnTorch2; typedef void(*ActorFunc)(struct Actor* this, struct PlayState* play); @@ -208,7 +209,7 @@ typedef enum { * 0x040 : Has touched water (actor is responsible for unsetting this the frame it touches the water) * 0x080 : Similar to & 0x1 but with no velocity check and is cleared every frame * 0x100 : Crushed between a floor and ceiling (triggers a void for player) - * 0x200 : Unknown (only set/used by player so far) + * 0x200 : Only set/used by player, related to interacting with walls */ typedef struct { @@ -224,7 +225,7 @@ typedef struct { } DynaPolyActor; // size = 0x15C -typedef enum { +typedef enum Item00Type { /* 0x00 */ ITEM00_RUPEE_GREEN, /* 0x01 */ ITEM00_RUPEE_BLUE, /* 0x02 */ ITEM00_RUPEE_RED, @@ -404,7 +405,7 @@ typedef struct ActorContext { /* 0x20C */ ActorContext_unk_20C unk_20C[8]; /* 0x24C */ UNK_TYPE1 unk_24C[0x4]; /* 0x250 */ void* absoluteSpace; // Space used to allocate actor overlays of alloc type ALLOCTYPE_ABSOLUTE - /* 0x254 */ u32 unk254[5]; + /* 0x254 */ struct EnTorch2* elegyShells[5]; // PLAYER_FORM_MAX /* 0x268 */ u8 unk268; /* 0x269 */ UNK_TYPE1 pad269[0x3]; /* 0x26C */ Input unk_26C; diff --git a/include/z64animation.h b/include/z64animation.h index b697dbfdf..272a4fb84 100644 --- a/include/z64animation.h +++ b/include/z64animation.h @@ -9,23 +9,26 @@ struct PlayState; struct Actor; struct SkelAnime; +struct PlayerAnimationFrame; #define LINK_ANIMETION_OFFSET(addr, offset) \ - (SEGMENT_ROM_START(link_animetion) + ((u32)addr & 0xFFFFFF) + ((u32)offset)) + (SEGMENT_ROM_START(link_animetion) + ((uintptr_t)addr & 0xFFFFFF) + ((u32)offset)) #define LIMB_DONE 0xFF #define ANIMATION_ENTRY_MAX 50 +#define ANIM_FLAG_1 (1 << 0) #define ANIM_FLAG_UPDATEY (1 << 1) +#define ANIM_FLAG_4 (1 << 2) #define ANIM_FLAG_NOMOVE (1 << 4) -typedef enum { +typedef enum AnimationMode { /* 0 */ ANIMMODE_LOOP, /* 1 */ ANIMMODE_LOOP_INTERP, /* 2 */ ANIMMODE_ONCE, /* 3 */ ANIMMODE_ONCE_INTERP, /* 4 */ ANIMMODE_LOOP_PARTIAL, /* 5 */ ANIMMODE_LOOP_PARTIAL_INTERP -} AnimationModes; +} AnimationMode; typedef enum { /* -1 */ ANIMTAPER_DECEL = -1, @@ -168,7 +171,10 @@ typedef struct AnimationContext { typedef struct { /* 0x0 */ AnimationHeaderCommon common; - /* 0x4 */ u32 segment; + /* 0x4 */ union { + void* segmentVoid; + struct PlayerAnimationFrame* segment; + }; } LinkAnimationHeader; // size = 0x8 typedef struct SkelAnime { diff --git a/include/z64collision_check.h b/include/z64collision_check.h index 434b74a3a..836fd3555 100644 --- a/include/z64collision_check.h +++ b/include/z64collision_check.h @@ -283,16 +283,16 @@ typedef enum { } ColChkMassType; typedef enum { - /* 0 */ COLTYPE_HIT0, // Blue blood, white hitmark - /* 1 */ COLTYPE_HIT1, // No blood, dust hitmark - /* 2 */ COLTYPE_HIT2, // Green blood, dust hitmark - /* 3 */ COLTYPE_HIT3, // No blood, white hitmark - /* 4 */ COLTYPE_HIT4, // Water burst, no hitmark - /* 5 */ COLTYPE_HIT5, // No blood, red hitmark - /* 6 */ COLTYPE_HIT6, // Green blood, white hitmark - /* 7 */ COLTYPE_HIT7, // Red blood, white hitmark - /* 8 */ COLTYPE_HIT8, // Blue blood, red hitmark - /* 9 */ COLTYPE_METAL, + /* 0 */ COLTYPE_HIT0, // Blue blood, white hitmark + /* 1 */ COLTYPE_HIT1, // No blood, dust hitmark + /* 2 */ COLTYPE_HIT2, // Green blood, dust hitmark + /* 3 */ COLTYPE_HIT3, // No blood, white hitmark + /* 4 */ COLTYPE_HIT4, // Water burst, no hitmark + /* 5 */ COLTYPE_HIT5, // No blood, red hitmark + /* 6 */ COLTYPE_HIT6, // Green blood, white hitmark + /* 7 */ COLTYPE_HIT7, // Red blood, white hitmark + /* 8 */ COLTYPE_HIT8, // Blue blood, red hitmark + /* 9 */ COLTYPE_METAL, /* 10 */ COLTYPE_NONE, /* 11 */ COLTYPE_WOOD, /* 12 */ COLTYPE_HARD, diff --git a/include/z64item.h b/include/z64item.h index e3b994712..d1d36ebba 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -1,5 +1,5 @@ -#ifndef _Z64ITEM_H_ -#define _Z64ITEM_H_ +#ifndef Z64ITEM_H +#define Z64ITEM_H #define DROP_TABLE_SIZE 16 #define DROP_TABLE_NUMBER 17 @@ -143,7 +143,7 @@ typedef enum { /* 0xFF */ SLOT_NONE = 0xFF } InventorySlot; -typedef enum { +typedef enum ItemId { /* 0x00 */ ITEM_OCARINA, /* 0x01 */ ITEM_BOW, /* 0x02 */ ITEM_ARROW_FIRE, @@ -257,7 +257,9 @@ typedef enum { /* 0x6E */ ITEM_SKULL_TOKEN, /* 0x6F */ ITEM_HEART_CONTAINER, /* 0x70 */ ITEM_HEART_PIECE, - /* 0x73 */ ITEM_SONG_LULLABY_INTRO = 0x73, + /* 0x71 */ ITEM_71, + /* 0x72 */ ITEM_72, + /* 0x73 */ ITEM_SONG_LULLABY_INTRO, /* 0x74 */ ITEM_KEY_BOSS, /* 0x75 */ ITEM_COMPASS, /* 0x76 */ ITEM_DUNGEON_MAP, @@ -306,17 +308,19 @@ typedef enum { /* 0xA1 */ ITEM_GOLD_DUST_2, /* 0xA2 */ ITEM_HYLIAN_LOACH_2, /* 0xA3 */ ITEM_SEAHORSE_CAUGHT, - /* 0xF0 */ ITEM_F0 = 0xF0, - /* 0xF1 */ ITEM_F1, - /* 0xF2 */ ITEM_F2, - /* 0xFD */ ITEM_FD = 0xFD, + /* 0xF0 */ ITEM_F0 = 0xF0, // PLAYER_MASK_BLAST + /* 0xF1 */ ITEM_F1, // PLAYER_MASK_BREMEN + /* 0xF2 */ ITEM_F2, // PLAYER_MASK_KAMARO + /* 0xFC */ ITEM_FC = 0xFC, + /* 0xFD */ ITEM_FD, + /* 0xFE */ ITEM_FE, /* 0xFF */ ITEM_NONE = 0xFF } ItemId; #define BOTTLE_FIRST 0 #define BOTTLE_MAX 6 -typedef enum { +typedef enum GetItemId { /* 0x00 */ GI_NONE, /* 0x01 */ GI_RUPEE_GREEN, /* 0x02 */ GI_RUPEE_BLUE, @@ -371,7 +375,8 @@ typedef enum { /* 0x3D */ GI_KEY_BOSS, /* 0x3E */ GI_MAP, /* 0x3F */ GI_COMPASS, - /* 0x41 */ GI_HOOKSHOT = 0x41, + /* 0x40 */ GI_40, + /* 0x41 */ GI_HOOKSHOT, /* 0x42 */ GI_LENS, /* 0x43 */ GI_PICTO_BOX, /* 0x4C */ GI_OCARINA = 0x4C, @@ -400,9 +405,13 @@ typedef enum { /* 0x69 */ GI_ZORA_EGG, /* 0x6A */ GI_GOLD_DUST, /* 0x6B */ GI_MUSHROOM, - /* 0x6E */ GI_SEAHORSE = 0x6E, + /* 0x6C */ GI_6C, + /* 0x6D */ GI_6D, + /* 0x6E */ GI_SEAHORSE, /* 0x6F */ GI_CHATEAU_BOTTLE, - /* 0x76 */ GI_ICE_TRAP = 0x76, + /* 0x70 */ GI_HYLIAN_LOACH, + /* 0x75 */ GI_75 = 0x75, + /* 0x76 */ GI_ICE_TRAP, /* 0x78 */ GI_MASK_DEKU = 0x78, /* 0x79 */ GI_MASK_GORON, /* 0x7A */ GI_MASK_ZORA, @@ -430,7 +439,7 @@ typedef enum { /* 0x91 */ GI_CHATEAU = 0x91, /* 0x92 */ GI_MILK, /* 0x93 */ GI_GOLD_DUST_2, - /* 0x94 */ GI_HYLIAN_LOACH, // Unused bottled eel + /* 0x94 */ GI_HYLIAN_LOACH_2, // Unused bottled eel /* 0x95 */ GI_SEAHORSE_CAUGHT, /* 0x96 */ GI_MOON_TEAR, /* 0x97 */ GI_DEED_LAND, @@ -444,7 +453,14 @@ typedef enum { /* 0x9F */ GI_SHIELD_HERO_STOLEN, // Code that treats this as hero's shield is unused, implied as intended to be stolen /* 0xA0 */ GI_ROOM_KEY, /* 0xA1 */ GI_LETTER_TO_MAMA, - /* 0xA9 */ GI_BOTTLE_STOLEN = 0xA9, // buy back stolen bottle + /* 0xA2 */ GI_A2, + /* 0xA3 */ GI_A3, + /* 0xA4 */ GI_A4, + /* 0xA5 */ GI_A5, + /* 0xA6 */ GI_A6, + /* 0xA7 */ GI_A7, + /* 0xA8 */ GI_A8, + /* 0xA9 */ GI_BOTTLE_STOLEN, // buy back stolen bottle /* 0xAA */ GI_LETTER_TO_KAFEI, /* 0xAB */ GI_PENDANT_OF_MEMORIES, /* 0xB4 */ GI_TINGLE_MAP_CLOCK_TOWN = 0xB4, @@ -456,7 +472,8 @@ typedef enum { /* 0xBA */ GI_MAX } GetItemId; -typedef enum { +typedef enum GetItemDrawId { + /* -1 */ GID_NONE = -1, /* 0x00 */ GID_BOTTLE, /* 0x01 */ GID_KEY_SMALL, /* 0x02 */ GID_MASK_KAMARO, diff --git a/include/z64light.h b/include/z64light.h index df7c1b4fa..d9404ab4c 100644 --- a/include/z64light.h +++ b/include/z64light.h @@ -1,5 +1,5 @@ -#ifndef _Z64LIGHT_H_ -#define _Z64LIGHT_H_ +#ifndef Z64LIGHT_H +#define Z64LIGHT_H #include "ultra64.h" #include "PR/gbi.h" @@ -12,8 +12,8 @@ typedef struct { /* 0x09 */ s8 diffusePos2[3]; /* 0x0C */ u8 diffuseColor[3]; /* 0x0F */ u8 fogColor[3]; - /* 0x12 */ u16 fogNear; - /* 0x14 */ u16 fogFar; + /* 0x12 */ s16 fogNear; + /* 0x14 */ s16 fogFar; } LightSettings; // size = 0x16 typedef struct { diff --git a/include/z64ocarina.h b/include/z64ocarina.h index 597580388..3bb99cd62 100644 --- a/include/z64ocarina.h +++ b/include/z64ocarina.h @@ -82,7 +82,7 @@ typedef enum { /* 13 */ OCARINA_INSTRUMENT_PIANO, /* 14 */ OCARINA_INSTRUMENT_BASS_GUITAR, /* 15 */ OCARINA_INSTRUMENT_BABY_SINGING, - /* 16 */ OCARINA_INSTRUMENT_AMPLIFIED_GUITAR // Related to (gSaveContext.weekEventReg[41] & 0x20) + /* 16 */ OCARINA_INSTRUMENT_AMPLIFIED_GUITAR // Related to WEEKEVENTREG_41_20 } OcarinaInstrumentId; typedef enum { diff --git a/include/z64player.h b/include/z64player.h index 69772954c..bca925fec 100644 --- a/include/z64player.h +++ b/include/z64player.h @@ -1,19 +1,20 @@ #ifndef Z64PLAYER_H #define Z64PLAYER_H -#include "z64actor.h" +#include "alignment.h" #include "os.h" +#include "z64actor.h" struct Player; -typedef enum { +typedef enum PlayerShield { /* 0 */ PLAYER_SHIELD_NONE, /* 1 */ PLAYER_SHIELD_HEROS_SHIELD, /* 2 */ PLAYER_SHIELD_MIRROR_SHIELD, /* 3 */ PLAYER_SHIELD_MAX } PlayerShield; -typedef enum { +typedef enum PlayerBoots { /* 0 */ PLAYER_BOOTS_FIERCE_DEITY, /* 1 */ PLAYER_BOOTS_HYLIAN, /* 2 */ PLAYER_BOOTS_GIANT, @@ -24,7 +25,7 @@ typedef enum { /* 7 */ PLAYER_BOOTS_MAX } PlayerBoots; -typedef enum { +typedef enum PlayerStrength { /* 0 */ PLAYER_STRENGTH_DEKU, /* 1 */ PLAYER_STRENGTH_HUMAN, /* 2 */ PLAYER_STRENGTH_ZORA, @@ -32,7 +33,7 @@ typedef enum { /* 4 */ PLAYER_STRENGTH_MAX } PlayerStrength; -typedef enum { +typedef enum PlayerTransformation { /* 0 */ PLAYER_FORM_FIERCE_DEITY, /* 1 */ PLAYER_FORM_GORON, /* 2 */ PLAYER_FORM_ZORA, @@ -41,7 +42,7 @@ typedef enum { /* 5 */ PLAYER_FORM_MAX } PlayerTransformation; -typedef enum { +typedef enum PlayerMask { /* 0x00 */ PLAYER_MASK_NONE, /* 0x01 */ PLAYER_MASK_TRUTH, /* 0x02 */ PLAYER_MASK_KAFEIS_MASK, @@ -78,95 +79,95 @@ typedef enum { /* 4 */ PLAYER_ENV_TIMER_UNDERWATER_FREE } PlayerEnvTimerType; -typedef enum PlayerActionParam { - /* -1 */ PLAYER_AP_MINUS1 = -1, - /* 0x00 */ PLAYER_AP_NONE, - /* 0x01 */ PLAYER_AP_LAST_USED, - /* 0x02 */ PLAYER_AP_FISHING_ROD, - /* 0x03 */ PLAYER_AP_SWORD_KOKIRI, - /* 0x04 */ PLAYER_AP_SWORD_RAZOR, - /* 0x05 */ PLAYER_AP_SWORD_GILDED, - /* 0x06 */ PLAYER_AP_SWORD_GREAT_FAIRY, - /* 0x07 */ PLAYER_AP_STICK, - /* 0x08 */ PLAYER_AP_ZORA_FINS, - /* 0x09 */ PLAYER_AP_BOW, - /* 0x0A */ PLAYER_AP_BOW_FIRE, - /* 0x0B */ PLAYER_AP_BOW_ICE, - /* 0x0C */ PLAYER_AP_BOW_LIGHT, - /* 0x0D */ PLAYER_AP_HOOKSHOT, - /* 0x0E */ PLAYER_AP_BOMB, - /* 0x0F */ PLAYER_AP_POWDER_KEG, - /* 0x10 */ PLAYER_AP_BOMBCHU, - /* 0x11 */ PLAYER_AP_11, - /* 0x12 */ PLAYER_AP_NUT, - /* 0x13 */ PLAYER_AP_PICTO_BOX, - /* 0x14 */ PLAYER_AP_OCARINA, - /* 0x15 */ PLAYER_AP_BOTTLE, - /* 0x16 */ PLAYER_AP_BOTTLE_FISH, - /* 0x17 */ PLAYER_AP_BOTTLE_SPRING_WATER, - /* 0x18 */ PLAYER_AP_BOTTLE_HOT_SPRING_WATER, - /* 0x19 */ PLAYER_AP_BOTTLE_ZORA_EGG, - /* 0x1A */ PLAYER_AP_BOTTLE_DEKU_PRINCESS, - /* 0x1B */ PLAYER_AP_BOTTLE_GOLD_DUST, - /* 0x1C */ PLAYER_AP_BOTTLE_1C, - /* 0x1D */ PLAYER_AP_BOTTLE_SEAHORSE, - /* 0x1E */ PLAYER_AP_BOTTLE_MUSHROOM, - /* 0x1F */ PLAYER_AP_BOTTLE_HYLIAN_LOACH, - /* 0x20 */ PLAYER_AP_BOTTLE_BUG, - /* 0x21 */ PLAYER_AP_BOTTLE_POE, - /* 0x22 */ PLAYER_AP_BOTTLE_BIG_POE, - /* 0x23 */ PLAYER_AP_BOTTLE_POTION_RED, - /* 0x24 */ PLAYER_AP_BOTTLE_POTION_BLUE, - /* 0x25 */ PLAYER_AP_BOTTLE_POTION_GREEN, - /* 0x26 */ PLAYER_AP_BOTTLE_MILK, - /* 0x27 */ PLAYER_AP_BOTTLE_MILK_HALF, - /* 0x28 */ PLAYER_AP_BOTTLE_CHATEAU, - /* 0x29 */ PLAYER_AP_BOTTLE_FAIRY, - /* 0x2A */ PLAYER_AP_MOON_TEAR, - /* 0x2B */ PLAYER_AP_DEED_LAND, - /* 0x2C */ PLAYER_AP_ROOM_KEY, - /* 0x2D */ PLAYER_AP_LETTER_TO_KAFEI, - /* 0x2E */ PLAYER_AP_MAGIC_BEANS, - /* 0x2F */ PLAYER_AP_DEED_SWAMP, - /* 0x30 */ PLAYER_AP_DEED_MOUNTAIN, - /* 0x31 */ PLAYER_AP_DEED_OCEAN, - /* 0x32 */ PLAYER_AP_32, - /* 0x33 */ PLAYER_AP_LETTER_MAMA, - /* 0x34 */ PLAYER_AP_34, - /* 0x35 */ PLAYER_AP_35, - /* 0x36 */ PLAYER_AP_PENDANT_OF_MEMORIES, - /* 0x37 */ PLAYER_AP_37, - /* 0x38 */ PLAYER_AP_38, - /* 0x39 */ PLAYER_AP_39, - /* 0x3A */ PLAYER_AP_MASK_TRUTH, - /* 0x3B */ PLAYER_AP_MASK_KAFEIS_MASK, - /* 0x3C */ PLAYER_AP_MASK_ALL_NIGHT, - /* 0x3D */ PLAYER_AP_MASK_BUNNY, - /* 0x3E */ PLAYER_AP_MASK_KEATON, - /* 0x3F */ PLAYER_AP_MASK_GARO, - /* 0x40 */ PLAYER_AP_MASK_ROMANI, - /* 0x41 */ PLAYER_AP_MASK_CIRCUS_LEADER, - /* 0x42 */ PLAYER_AP_MASK_POSTMAN, - /* 0x43 */ PLAYER_AP_MASK_COUPLE, - /* 0x44 */ PLAYER_AP_MASK_GREAT_FAIRY, - /* 0x45 */ PLAYER_AP_MASK_GIBDO, - /* 0x46 */ PLAYER_AP_MASK_DON_GERO, - /* 0x47 */ PLAYER_AP_MASK_KAMARO, - /* 0x48 */ PLAYER_AP_MASK_CAPTAIN, - /* 0x49 */ PLAYER_AP_MASK_STONE, - /* 0x4A */ PLAYER_AP_MASK_BREMEN, - /* 0x4B */ PLAYER_AP_MASK_BLAST, - /* 0x4C */ PLAYER_AP_MASK_SCENTS, - /* 0x4D */ PLAYER_AP_MASK_GIANT, - /* 0x4E */ PLAYER_AP_MASK_FIERCE_DEITY, - /* 0x4F */ PLAYER_AP_MASK_GORON, - /* 0x50 */ PLAYER_AP_MASK_ZORA, - /* 0x51 */ PLAYER_AP_MASK_DEKU, - /* 0x52 */ PLAYER_AP_LENS, - /* 0x53 */ PLAYER_AP_MAX -} PlayerActionParam; +typedef enum PlayerItemAction { + /* -1 */ PLAYER_IA_MINUS1 = -1, + /* 0x00 */ PLAYER_IA_NONE, + /* 0x01 */ PLAYER_IA_LAST_USED, + /* 0x02 */ PLAYER_IA_FISHING_ROD, + /* 0x03 */ PLAYER_IA_SWORD_KOKIRI, + /* 0x04 */ PLAYER_IA_SWORD_RAZOR, + /* 0x05 */ PLAYER_IA_SWORD_GILDED, + /* 0x06 */ PLAYER_IA_SWORD_GREAT_FAIRY, + /* 0x07 */ PLAYER_IA_STICK, + /* 0x08 */ PLAYER_IA_ZORA_FINS, + /* 0x09 */ PLAYER_IA_BOW, + /* 0x0A */ PLAYER_IA_BOW_FIRE, + /* 0x0B */ PLAYER_IA_BOW_ICE, + /* 0x0C */ PLAYER_IA_BOW_LIGHT, + /* 0x0D */ PLAYER_IA_HOOKSHOT, + /* 0x0E */ PLAYER_IA_BOMB, + /* 0x0F */ PLAYER_IA_POWDER_KEG, + /* 0x10 */ PLAYER_IA_BOMBCHU, + /* 0x11 */ PLAYER_IA_11, + /* 0x12 */ PLAYER_IA_NUT, + /* 0x13 */ PLAYER_IA_PICTO_BOX, + /* 0x14 */ PLAYER_IA_OCARINA, + /* 0x15 */ PLAYER_IA_BOTTLE, + /* 0x16 */ PLAYER_IA_BOTTLE_FISH, + /* 0x17 */ PLAYER_IA_BOTTLE_SPRING_WATER, + /* 0x18 */ PLAYER_IA_BOTTLE_HOT_SPRING_WATER, + /* 0x19 */ PLAYER_IA_BOTTLE_ZORA_EGG, + /* 0x1A */ PLAYER_IA_BOTTLE_DEKU_PRINCESS, + /* 0x1B */ PLAYER_IA_BOTTLE_GOLD_DUST, + /* 0x1C */ PLAYER_IA_BOTTLE_1C, + /* 0x1D */ PLAYER_IA_BOTTLE_SEAHORSE, + /* 0x1E */ PLAYER_IA_BOTTLE_MUSHROOM, + /* 0x1F */ PLAYER_IA_BOTTLE_HYLIAN_LOACH, + /* 0x20 */ PLAYER_IA_BOTTLE_BUG, + /* 0x21 */ PLAYER_IA_BOTTLE_POE, + /* 0x22 */ PLAYER_IA_BOTTLE_BIG_POE, + /* 0x23 */ PLAYER_IA_BOTTLE_POTION_RED, + /* 0x24 */ PLAYER_IA_BOTTLE_POTION_BLUE, + /* 0x25 */ PLAYER_IA_BOTTLE_POTION_GREEN, + /* 0x26 */ PLAYER_IA_BOTTLE_MILK, + /* 0x27 */ PLAYER_IA_BOTTLE_MILK_HALF, + /* 0x28 */ PLAYER_IA_BOTTLE_CHATEAU, + /* 0x29 */ PLAYER_IA_BOTTLE_FAIRY, + /* 0x2A */ PLAYER_IA_MOON_TEAR, + /* 0x2B */ PLAYER_IA_DEED_LAND, + /* 0x2C */ PLAYER_IA_ROOM_KEY, + /* 0x2D */ PLAYER_IA_LETTER_TO_KAFEI, + /* 0x2E */ PLAYER_IA_MAGIC_BEANS, + /* 0x2F */ PLAYER_IA_DEED_SWAMP, + /* 0x30 */ PLAYER_IA_DEED_MOUNTAIN, + /* 0x31 */ PLAYER_IA_DEED_OCEAN, + /* 0x32 */ PLAYER_IA_32, + /* 0x33 */ PLAYER_IA_LETTER_MAMA, + /* 0x34 */ PLAYER_IA_34, + /* 0x35 */ PLAYER_IA_35, + /* 0x36 */ PLAYER_IA_PENDANT_OF_MEMORIES, + /* 0x37 */ PLAYER_IA_37, + /* 0x38 */ PLAYER_IA_38, + /* 0x39 */ PLAYER_IA_39, + /* 0x3A */ PLAYER_IA_MASK_TRUTH, + /* 0x3B */ PLAYER_IA_MASK_KAFEIS_MASK, + /* 0x3C */ PLAYER_IA_MASK_ALL_NIGHT, + /* 0x3D */ PLAYER_IA_MASK_BUNNY, + /* 0x3E */ PLAYER_IA_MASK_KEATON, + /* 0x3F */ PLAYER_IA_MASK_GARO, + /* 0x40 */ PLAYER_IA_MASK_ROMANI, + /* 0x41 */ PLAYER_IA_MASK_CIRCUS_LEADER, + /* 0x42 */ PLAYER_IA_MASK_POSTMAN, + /* 0x43 */ PLAYER_IA_MASK_COUPLE, + /* 0x44 */ PLAYER_IA_MASK_GREAT_FAIRY, + /* 0x45 */ PLAYER_IA_MASK_GIBDO, + /* 0x46 */ PLAYER_IA_MASK_DON_GERO, + /* 0x47 */ PLAYER_IA_MASK_KAMARO, + /* 0x48 */ PLAYER_IA_MASK_CAPTAIN, + /* 0x49 */ PLAYER_IA_MASK_STONE, + /* 0x4A */ PLAYER_IA_MASK_BREMEN, + /* 0x4B */ PLAYER_IA_MASK_BLAST, + /* 0x4C */ PLAYER_IA_MASK_SCENTS, + /* 0x4D */ PLAYER_IA_MASK_GIANT, + /* 0x4E */ PLAYER_IA_MASK_FIERCE_DEITY, + /* 0x4F */ PLAYER_IA_MASK_GORON, + /* 0x50 */ PLAYER_IA_MASK_ZORA, + /* 0x51 */ PLAYER_IA_MASK_DEKU, + /* 0x52 */ PLAYER_IA_LENS, + /* 0x53 */ PLAYER_IA_MAX +} PlayerItemAction; -typedef enum { +typedef enum PlayerMeleeWeaponAnimation { /* 0 */ PLAYER_MWA_FORWARD_SLASH_1H, // Vertical one-handed slash /* 1 */ PLAYER_MWA_FORWARD_SLASH_2H, // Vertical two-handed slash /* 2 */ PLAYER_MWA_FORWARD_COMBO_1H, // Third vertical one-handed slash @@ -183,6 +184,7 @@ typedef enum { /* 13 */ PLAYER_MWA_STAB_2H, // Targeted two-handed stab /* 14 */ PLAYER_MWA_STAB_COMBO_1H, // Third targeted one-handed stab /* 15 */ PLAYER_MWA_STAB_COMBO_2H, // Third targeted two-handed stab + // These animations result in double damage /* 16 */ PLAYER_MWA_FLIPSLASH_START, // unused /* 17 */ PLAYER_MWA_JUMPSLASH_START, // Start of jumpslash /* 18 */ PLAYER_MWA_ZORA_JUMPKICK_START, // Start of Zora jump attack @@ -204,6 +206,16 @@ typedef enum { /* 34 */ PLAYER_MWA_MAX } PlayerMeleeWeaponAnimation; +typedef enum PlayerDoorType { + /* -1 */ PLAYER_DOORTYPE_TALKING = -1, // Displays a message instead of opening + /* 0 */ PLAYER_DOORTYPE_NONE, + /* 1 */ PLAYER_DOORTYPE_HANDLE, + /* 2 */ PLAYER_DOORTYPE_SLIDING, + /* 3 */ PLAYER_DOORTYPE_FAKE, // Unused? OoT leftover (?) + /* 4 */ PLAYER_DOORTYPE_STAIRCASE, + /* 5 */ PLAYER_DOORTYPE_PROXIMITY +} PlayerDoorType; + typedef enum PlayerAnimType { /* 0 */ PLAYER_ANIMTYPE_0, /* 1 */ PLAYER_ANIMTYPE_1, @@ -267,7 +279,7 @@ typedef enum PlayerModelGroup { /* 15 */ PLAYER_MODELGROUP_MAX } PlayerModelGroup; -typedef enum { +typedef enum PlayerEyeIndex { /* 0 */ PLAYER_EYES_OPEN, /* 1 */ PLAYER_EYES_HALF, /* 2 */ PLAYER_EYES_CLOSED, @@ -279,7 +291,7 @@ typedef enum { /* 8 */ PLAYER_EYES_MAX } PlayerEyeIndex; -typedef enum { +typedef enum PlayerMouthIndex { /* 0 */ PLAYER_MOUTH_CLOSED, /* 1 */ PLAYER_MOUTH_TEETH, /* 2 */ PLAYER_MOUTH_ANGRY, @@ -287,7 +299,7 @@ typedef enum { /* 4 */ PLAYER_MOUTH_MAX } PlayerMouthIndex; -typedef enum { +typedef enum PlayerFacialExpression { /* 0 */ PLAYER_FACE_0, /* 1 */ PLAYER_FACE_1, /* 2 */ PLAYER_FACE_2, @@ -306,7 +318,7 @@ typedef enum { /* 15 */ PLAYER_FACE_15 } PlayerFacialExpression; -typedef enum { +typedef enum PlayerLimb { /* 0x00 */ PLAYER_LIMB_NONE, /* 0x01 */ PLAYER_LIMB_ROOT, /* 0x02 */ PLAYER_LIMB_WAIST, @@ -332,9 +344,38 @@ typedef enum { /* 0x16 */ PLAYER_LIMB_MAX } PlayerLimb; -typedef struct { - /* 0x00 */ f32 unk_00; - /* 0x04 */ f32 unk_04; +typedef enum PlayerBodyPart { + /* 0x00 */ PLAYER_BODYPART_WAIST, // PLAYER_LIMB_WAIST + /* 0x01 */ PLAYER_BODYPART_RIGHT_THIGH, // PLAYER_LIMB_RIGHT_THIGH + /* 0x02 */ PLAYER_BODYPART_RIGHT_SHIN, // PLAYER_LIMB_RIGHT_SHIN + /* 0x03 */ PLAYER_BODYPART_RIGHT_FOOT, // PLAYER_LIMB_RIGHT_FOOT + /* 0x04 */ PLAYER_BODYPART_LEFT_THIGH, // PLAYER_LIMB_LEFT_THIGH + /* 0x05 */ PLAYER_BODYPART_LEFT_SHIN, // PLAYER_LIMB_LEFT_SHIN + /* 0x06 */ PLAYER_BODYPART_LEFT_FOOT, // PLAYER_LIMB_LEFT_FOOT + /* 0x07 */ PLAYER_BODYPART_HEAD, // PLAYER_LIMB_HEAD + /* 0x08 */ PLAYER_BODYPART_HAT, // PLAYER_LIMB_HAT + /* 0x09 */ PLAYER_BODYPART_COLLAR, // PLAYER_LIMB_COLLAR + /* 0x0A */ PLAYER_BODYPART_LEFT_SHOULDER, // PLAYER_LIMB_LEFT_SHOULDER + /* 0x0B */ PLAYER_BODYPART_LEFT_FOREARM, // PLAYER_LIMB_LEFT_FOREARM + /* 0x0C */ PLAYER_BODYPART_LEFT_HAND, // PLAYER_LIMB_LEFT_HAND + /* 0x0D */ PLAYER_BODYPART_RIGHT_SHOULDER, // PLAYER_LIMB_R_SHOULDER + /* 0x0E */ PLAYER_BODYPART_RIGHT_FOREARM, // PLAYER_LIMB_R_FOREARM + /* 0x0F */ PLAYER_BODYPART_RIGHT_HAND, // PLAYER_LIMB_R_HAND + /* 0x10 */ PLAYER_BODYPART_SHEATH, // PLAYER_LIMB_SHEATH + /* 0x11 */ PLAYER_BODYPART_TORSO, // PLAYER_LIMB_TORSO + /* 0x12 */ PLAYER_BODYPART_MAX +} PlayerBodyPart; + +typedef struct PlayerAnimationFrame { + /* 0x000 */ Vec3s frameTable[PLAYER_LIMB_MAX]; + /* 0x108 */ s16 faceInfo; +} PlayerAnimationFrame; // size = 0x10A + +#define PLAYER_LIMB_BUF_SIZE (ALIGN16(sizeof(PlayerAnimationFrame)) + 0xF) + +typedef struct PlayerAgeProperties { + /* 0x00 */ f32 unk_00; // ceilingCheckHeight? + /* 0x04 */ f32 shadowScale; /* 0x08 */ f32 unk_08; /* 0x0C */ f32 unk_0C; /* 0x10 */ f32 unk_10; @@ -347,15 +388,15 @@ typedef struct { /* 0x2C */ f32 unk_2C; /* 0x30 */ f32 unk_30; /* 0x34 */ f32 unk_34; - /* 0x38 */ f32 unk_38; + /* 0x38 */ f32 unk_38; // wallCheckHeight? /* 0x3C */ f32 unk_3C; /* 0x40 */ f32 unk_40; /* 0x44 */ Vec3s unk_44; /* 0x4A */ Vec3s unk_4A[4]; /* 0x62 */ Vec3s unk_62[4]; /* 0x7A */ Vec3s unk_7A[4]; - /* 0x92 */ u16 unk_92; - /* 0x94 */ u16 unk_94; + /* 0x92 */ u16 voiceSfxIdOffset; + /* 0x94 */ u16 surfaceSfxIdOffset; /* 0x98 */ f32 unk_98; /* 0x9C */ f32 unk_9C; /* 0xA0 */ LinkAnimationHeader* unk_A0; @@ -376,8 +417,6 @@ typedef struct { } WeaponInfo; // size = 0x1C -typedef void (*PlayerFuncD58)(struct PlayState*, struct Player*); - typedef struct { /* 0x00 */ u8 unk_00; /* 0x01 */ u8 alpha; @@ -399,6 +438,151 @@ typedef struct struct_80122744_arg1 { /* 0x4 */ Vec3s* unk_04; } struct_80122744_arg1; // size = 0x8 +typedef enum PlayerCsMode { + /* 0x00 */ PLAYER_CSMODE_0, + /* 0x01 */ PLAYER_CSMODE_1, + /* 0x02 */ PLAYER_CSMODE_2, + /* 0x03 */ PLAYER_CSMODE_3, + /* 0x04 */ PLAYER_CSMODE_4, + /* 0x05 */ PLAYER_CSMODE_5, + /* 0x06 */ PLAYER_CSMODE_6, + /* 0x07 */ PLAYER_CSMODE_7, + /* 0x08 */ PLAYER_CSMODE_8, + /* 0x09 */ PLAYER_CSMODE_9, + /* 0x0A */ PLAYER_CSMODE_10, + /* 0x0B */ PLAYER_CSMODE_11, + /* 0x0C */ PLAYER_CSMODE_12, + /* 0x0D */ PLAYER_CSMODE_13, + /* 0x0E */ PLAYER_CSMODE_14, + /* 0x0F */ PLAYER_CSMODE_15, + /* 0x10 */ PLAYER_CSMODE_16, + /* 0x11 */ PLAYER_CSMODE_17, + /* 0x12 */ PLAYER_CSMODE_18, + /* 0x13 */ PLAYER_CSMODE_19, + /* 0x14 */ PLAYER_CSMODE_20, + /* 0x15 */ PLAYER_CSMODE_21, + /* 0x16 */ PLAYER_CSMODE_22, + /* 0x17 */ PLAYER_CSMODE_23, + /* 0x18 */ PLAYER_CSMODE_24, + /* 0x19 */ PLAYER_CSMODE_25, + /* 0x1A */ PLAYER_CSMODE_26, + /* 0x1B */ PLAYER_CSMODE_27, + /* 0x1C */ PLAYER_CSMODE_28, + /* 0x1D */ PLAYER_CSMODE_29, + /* 0x1E */ PLAYER_CSMODE_30, + /* 0x1F */ PLAYER_CSMODE_31, + /* 0x20 */ PLAYER_CSMODE_32, + /* 0x21 */ PLAYER_CSMODE_33, + /* 0x22 */ PLAYER_CSMODE_34, + /* 0x23 */ PLAYER_CSMODE_35, + /* 0x24 */ PLAYER_CSMODE_36, + /* 0x25 */ PLAYER_CSMODE_37, + /* 0x26 */ PLAYER_CSMODE_38, + /* 0x27 */ PLAYER_CSMODE_39, + /* 0x28 */ PLAYER_CSMODE_40, + /* 0x29 */ PLAYER_CSMODE_41, + /* 0x2A */ PLAYER_CSMODE_42, + /* 0x2B */ PLAYER_CSMODE_43, + /* 0x2C */ PLAYER_CSMODE_44, + /* 0x2D */ PLAYER_CSMODE_45, + /* 0x2E */ PLAYER_CSMODE_46, + /* 0x2F */ PLAYER_CSMODE_47, + /* 0x30 */ PLAYER_CSMODE_48, + /* 0x31 */ PLAYER_CSMODE_49, + /* 0x32 */ PLAYER_CSMODE_50, + /* 0x33 */ PLAYER_CSMODE_51, + /* 0x34 */ PLAYER_CSMODE_52, + /* 0x35 */ PLAYER_CSMODE_53, + /* 0x36 */ PLAYER_CSMODE_54, + /* 0x37 */ PLAYER_CSMODE_55, + /* 0x38 */ PLAYER_CSMODE_56, + /* 0x39 */ PLAYER_CSMODE_57, + /* 0x3A */ PLAYER_CSMODE_58, + /* 0x3B */ PLAYER_CSMODE_59, + /* 0x3C */ PLAYER_CSMODE_60, + /* 0x3D */ PLAYER_CSMODE_61, + /* 0x3E */ PLAYER_CSMODE_62, + /* 0x3F */ PLAYER_CSMODE_63, + /* 0x40 */ PLAYER_CSMODE_64, + /* 0x41 */ PLAYER_CSMODE_65, + /* 0x42 */ PLAYER_CSMODE_66, + /* 0x43 */ PLAYER_CSMODE_67, + /* 0x44 */ PLAYER_CSMODE_68, + /* 0x45 */ PLAYER_CSMODE_69, + /* 0x46 */ PLAYER_CSMODE_70, + /* 0x47 */ PLAYER_CSMODE_71, + /* 0x48 */ PLAYER_CSMODE_72, + /* 0x49 */ PLAYER_CSMODE_73, + /* 0x4A */ PLAYER_CSMODE_74, + /* 0x4B */ PLAYER_CSMODE_75, + /* 0x4C */ PLAYER_CSMODE_76, + /* 0x4D */ PLAYER_CSMODE_77, + /* 0x4E */ PLAYER_CSMODE_78, + /* 0x4F */ PLAYER_CSMODE_79, + /* 0x50 */ PLAYER_CSMODE_80, + /* 0x51 */ PLAYER_CSMODE_81, + /* 0x52 */ PLAYER_CSMODE_82, + /* 0x53 */ PLAYER_CSMODE_83, + /* 0x54 */ PLAYER_CSMODE_84, + /* 0x55 */ PLAYER_CSMODE_85, + /* 0x56 */ PLAYER_CSMODE_86, + /* 0x57 */ PLAYER_CSMODE_87, + /* 0x58 */ PLAYER_CSMODE_88, + /* 0x59 */ PLAYER_CSMODE_89, + /* 0x5A */ PLAYER_CSMODE_90, + /* 0x5B */ PLAYER_CSMODE_91, + /* 0x5C */ PLAYER_CSMODE_92, + /* 0x5D */ PLAYER_CSMODE_93, + /* 0x5E */ PLAYER_CSMODE_94, + /* 0x5F */ PLAYER_CSMODE_95, + /* 0x60 */ PLAYER_CSMODE_96, + /* 0x61 */ PLAYER_CSMODE_97, + /* 0x62 */ PLAYER_CSMODE_98, + /* 0x63 */ PLAYER_CSMODE_99, + /* 0x64 */ PLAYER_CSMODE_100, + /* 0x65 */ PLAYER_CSMODE_101, + /* 0x66 */ PLAYER_CSMODE_102, + /* 0x67 */ PLAYER_CSMODE_103, + /* 0x68 */ PLAYER_CSMODE_104, + /* 0x69 */ PLAYER_CSMODE_105, + /* 0x6A */ PLAYER_CSMODE_106, + /* 0x6B */ PLAYER_CSMODE_107, + /* 0x6C */ PLAYER_CSMODE_108, + /* 0x6D */ PLAYER_CSMODE_109, + /* 0x6E */ PLAYER_CSMODE_110, + /* 0x6F */ PLAYER_CSMODE_111, + /* 0x70 */ PLAYER_CSMODE_112, + /* 0x71 */ PLAYER_CSMODE_113, + /* 0x72 */ PLAYER_CSMODE_114, + /* 0x73 */ PLAYER_CSMODE_115, + /* 0x74 */ PLAYER_CSMODE_116, + /* 0x75 */ PLAYER_CSMODE_117, + /* 0x76 */ PLAYER_CSMODE_118, + /* 0x77 */ PLAYER_CSMODE_119, + /* 0x78 */ PLAYER_CSMODE_120, + /* 0x79 */ PLAYER_CSMODE_121, + /* 0x7A */ PLAYER_CSMODE_122, + /* 0x7B */ PLAYER_CSMODE_123, + /* 0x7C */ PLAYER_CSMODE_124, + /* 0x7D */ PLAYER_CSMODE_125, + /* 0x7E */ PLAYER_CSMODE_126, + /* 0x7F */ PLAYER_CSMODE_127, + /* 0x80 */ PLAYER_CSMODE_128, + /* 0x81 */ PLAYER_CSMODE_129, + /* 0x82 */ PLAYER_CSMODE_130, + /* 0x83 */ PLAYER_CSMODE_131, + /* 0x84 */ PLAYER_CSMODE_132, + /* 0x85 */ PLAYER_CSMODE_133, + /* 0x86 */ PLAYER_CSMODE_134, + /* 0x87 */ PLAYER_CSMODE_135, + /* 0x88 */ PLAYER_CSMODE_136, + /* 0x89 */ PLAYER_CSMODE_137, + /* 0x8A */ PLAYER_CSMODE_138, + /* 0x8B */ PLAYER_CSMODE_139, + /* 0x8C */ PLAYER_CSMODE_MAX +} PlayerCsMode; + + // #define PLAYER_STATE1_1 (1 << 0) // @@ -407,7 +591,7 @@ typedef struct struct_80122744_arg1 { #define PLAYER_STATE1_4 (1 << 2) // #define PLAYER_STATE1_8 (1 << 3) -// +// Zora electric shield #define PLAYER_STATE1_10 (1 << 4) // #define PLAYER_STATE1_20 (1 << 5) @@ -461,7 +645,7 @@ typedef struct struct_80122744_arg1 { #define PLAYER_STATE1_20000000 (1 << 29) // #define PLAYER_STATE1_40000000 (1 << 30) -// +// Related to exit a grotto #define PLAYER_STATE1_80000000 (1 << 31) @@ -523,15 +707,15 @@ typedef struct struct_80122744_arg1 { #define PLAYER_STATE2_8000000 (1 << 27) // #define PLAYER_STATE2_10000000 (1 << 28) -// +// Disable drawing player #define PLAYER_STATE2_20000000 (1 << 29) -// +// Lunge: small forward boost at the end of certain attack animations #define PLAYER_STATE2_40000000 (1 << 30) -// +// Void-out #define PLAYER_STATE2_80000000 (1 << 31) -// +// Ignores collision with floor? #define PLAYER_STATE3_1 (1 << 0) // #define PLAYER_STATE3_2 (1 << 1) @@ -547,7 +731,7 @@ typedef struct struct_80122744_arg1 { #define PLAYER_STATE3_40 (1 << 6) // #define PLAYER_STATE3_80 (1 << 7) -// +// Related to form Deku #define PLAYER_STATE3_100 (1 << 8) // #define PLAYER_STATE3_200 (1 << 9) @@ -555,7 +739,7 @@ typedef struct struct_80122744_arg1 { #define PLAYER_STATE3_400 (1 << 10) // #define PLAYER_STATE3_800 (1 << 11) -// being curled? +// goron curled #define PLAYER_STATE3_1000 (1 << 12) // #define PLAYER_STATE3_2000 (1 << 13) @@ -567,13 +751,13 @@ typedef struct struct_80122744_arg1 { #define PLAYER_STATE3_10000 (1 << 16) // #define PLAYER_STATE3_20000 (1 << 17) -// +// Related to form Deku #define PLAYER_STATE3_40000 (1 << 18) // #define PLAYER_STATE3_80000 (1 << 19) // #define PLAYER_STATE3_100000 (1 << 20) -// +// Deku hopping? #define PLAYER_STATE3_200000 (1 << 21) // #define PLAYER_STATE3_400000 (1 << 22) @@ -597,16 +781,44 @@ typedef struct struct_80122744_arg1 { #define PLAYER_STATE3_80000000 (1 << 31) +#define PLAYER_GET_INITMODE(thisx) (((thisx)->params & 0xF00) >> 8) + +typedef enum PlayerInitMode { + /* 0x0 */ PLAYER_INITMODE_0, + /* 0x1 */ PLAYER_INITMODE_1, // Spawning after pulling/putting-back Master sword // OoT leftover + /* 0x2 */ PLAYER_INITMODE_2, + /* 0x3 */ PLAYER_INITMODE_3, + /* 0x4 */ PLAYER_INITMODE_4, + /* 0x5 */ PLAYER_INITMODE_5, + /* 0x6 */ PLAYER_INITMODE_6, + /* 0x7 */ PLAYER_INITMODE_7, + /* 0x8 */ PLAYER_INITMODE_8, + /* 0x9 */ PLAYER_INITMODE_9, + /* 0xA */ PLAYER_INITMODE_A, + /* 0xB */ PLAYER_INITMODE_B, + /* 0xC */ PLAYER_INITMODE_TELESCOPE, + /* 0xD */ PLAYER_INITMODE_D, + /* 0xE */ PLAYER_INITMODE_E, + /* 0xF */ PLAYER_INITMODE_F +} PlayerInitMode; + +#define PLAYER_PARAMS(startBgCamIndex, initMode) ((startBgCamIndex & 0xFF) | ((initMode & 0xF) << 8)) + +typedef void (*PlayerActionFunc)(struct Player* this, struct PlayState* play); +typedef s32 (*PlayerFuncAC4)(struct Player* this, struct PlayState* play); +typedef void (*PlayerFuncD58)(struct PlayState* play, struct Player* this); + + typedef struct Player { /* 0x000 */ Actor actor; /* 0x144 */ s8 currentShield; /* 0x145 */ s8 currentBoots; /* 0x146 */ s8 heldItemButton; - /* 0x147 */ s8 itemActionParam; // PlayerActionParam enum + /* 0x147 */ s8 heldItemAction; // PlayerItemAction enum /* 0x148 */ u8 heldItemId; // ItemId enum /* 0x149 */ s8 prevBoots; - /* 0x14A */ s8 heldItemActionParam; - /* 0x14B */ u8 transformation; + /* 0x14A */ s8 itemAction; // PlayerItemAction enum + /* 0x14B */ u8 transformation; // PlayerTransformation enum /* 0x14C */ u8 modelGroup; // PlayerModelGroup enum /* 0x14D */ u8 nextModelGroup; /* 0x14E */ s8 unk_14E; @@ -614,7 +826,7 @@ typedef struct Player { /* 0x150 */ u8 leftHandType; /* 0x151 */ u8 rightHandType; /* 0x152 */ u8 sheathType; - /* 0x153 */ u8 currentMask; + /* 0x153 */ u8 currentMask; // PlayerMask enum /* 0x154 */ s8 unk_154; /* 0x155 */ u8 prevMask; /* 0x158 */ Gfx** rightHandDLists; @@ -664,44 +876,50 @@ typedef struct Player { /* 0x350 */ PosRot leftHandWorld; /* 0x364 */ Actor* rightHandActor; /* 0x368 */ PosRot rightHandWorld; - /* 0x37C */ s8 doorType; + /* 0x37C */ s8 doorType; // PlayerDoorType enum /* 0x37D */ s8 doorDirection; /* 0x37E */ s8 doorTimer; /* 0x37F */ s8 doorNext; // used with spiral staircase /* 0x380 */ Actor* doorActor; - /* 0x384 */ s16 getItemId; + /* 0x384 */ s16 getItemId; // GetItemId enum /* 0x386 */ u16 getItemDirection; /* 0x388 */ Actor* interactRangeActor; /* 0x38C */ s8 mountSide; /* 0x390 */ Actor* rideActor; - /* 0x394 */ u8 csMode; - /* 0x395 */ u8 unk_395; // prevCsMode? - /* 0x396 */ u8 unk_396; - /* 0x397 */ u8 unk_397; + /* 0x394 */ u8 csMode; // PlayerCsMode enum + /* 0x395 */ u8 prevCsMode; // PlayerCsMode enum + /* 0x396 */ u8 unk_396; // currentActorActionId? + /* 0x397 */ u8 unk_397; // PlayerDoorType enum /* 0x398 */ Actor* unk_398; - /* 0x39C */ s16 unk_39C; - /* 0x39E */ s16 unk_39E; + /* 0x39C */ UNK_TYPE1 unk_39C[0x4]; /* 0x3A0 */ Vec3f unk_3A0; /* 0x3AC */ Vec3f unk_3AC; /* 0x3B8 */ u16 unk_3B8; /* 0x3BA */ s16 unk_3BA; - /* 0x3BC */ s16 unk_3BC; + /* 0x3BC */ s16 subCamId; /* 0x3BE */ char unk_3BE[2]; /* 0x3C0 */ Vec3f unk_3C0; /* 0x3CC */ s16 unk_3CC; /* 0x3CE */ s8 unk_3CE; /* 0x3CF */ u8 unk_3CF; /* 0x3D0 */ struct_80122D44_arg1 unk_3D0; - /* 0x404 */ UNK_TYPE1 unk_404[0x34]; + /* 0x4E4 */ UNK_TYPE1 unk_4E4[0x20]; + /* 0x504 */ LightNode* lightNode; + /* 0x508 */ LightInfo lightInfo; /* 0x518 */ ColliderCylinder cylinder; /* 0x564 */ ColliderQuad meleeWeaponQuads[2]; /* 0x664 */ ColliderQuad shieldQuad; /* 0x6E4 */ ColliderCylinder shieldCylinder; - /* 0x730 */ Actor* unk_730; + /* 0x730 */ Actor* targetedActor; // Z/L-Targeted actor /* 0x734 */ char unk_734[4]; /* 0x738 */ s32 unk_738; /* 0x73C */ s32 meleeWeaponEffectIndex[3]; - /* 0x748 */ char unk_748[0x320]; + /* 0x748 */ PlayerActionFunc actionFunc; + /* 0x74C */ u8 jointTableBuffer[PLAYER_LIMB_BUF_SIZE]; + /* 0x7EB */ u8 morphTableBuffer[PLAYER_LIMB_BUF_SIZE]; + /* 0x88A */ u8 blendTableBuffer[PLAYER_LIMB_BUF_SIZE]; + /* 0x929 */ u8 unk_929[PLAYER_LIMB_BUF_SIZE]; + /* 0x9C8 */ u8 unk_9C8[PLAYER_LIMB_BUF_SIZE]; /* 0xA68 */ PlayerAgeProperties* ageProperties; // repurposed as "transformation properties"? /* 0xA6C */ u32 stateFlags1; /* 0xA70 */ u32 stateFlags2; @@ -710,18 +928,18 @@ typedef struct Player { /* 0xA7C */ Actor* boomerangActor; /* 0xA80 */ Actor* tatlActor; /* 0xA84 */ s16 tatlTextId; - /* 0xA86 */ s8 unk_A86; - /* 0xA87 */ s8 exchangeItemId; - /* 0xA88 */ Actor* targetActor; - /* 0xA8C */ f32 targetActorDistance; + /* 0xA86 */ s8 unk_A86; // actorCutsceneIndex? + /* 0xA87 */ s8 exchangeItemId; // PlayerItemAction enum + /* 0xA88 */ Actor* talkActor; + /* 0xA8C */ f32 talkActorDistance; /* 0xA90 */ Actor* unk_A90; /* 0xA94 */ f32 unk_A94; /* 0xA98 */ Actor* unk_A98; - /* 0xA9C */ f32 unk_A9C; - /* 0xAA0 */ f32 unk_AA0; + /* 0xA9C */ f32 secretRumbleCharge; // builds per frame until discharges with a rumble request + /* 0xAA0 */ f32 closestSecretDistSq; // Used to augment `secretRumbleCharge`. Cleared every frame /* 0xAA4 */ s8 unk_AA4; /* 0xAA5 */ u8 unk_AA5; - /* 0xAA6 */ u16 unk_AA6; + /* 0xAA6 */ u16 unk_AA6; // flags of some kind /* 0xAA8 */ s16 unk_AA8; /* 0xAAA */ s16 unk_AAA; /* 0xAAC */ Vec3s unk_AAC; @@ -729,11 +947,11 @@ typedef struct Player { /* 0xAB8 */ f32 unk_AB8; /* 0xABC */ f32 unk_ABC; /* 0xAC0 */ f32 unk_AC0; - /* 0xAC4 */ void* unk_AC4; + /* 0xAC4 */ PlayerFuncAC4 unk_AC4; /* 0xAC8 */ f32 unk_AC8; /* 0xACC */ s16 unk_ACC; /* 0xACE */ s8 unk_ACE; - /* 0xACF */ u8 unk_ACF; + /* 0xACF */ u8 putAwayCountdown; // Frames to wait before showing "Put Away" on A /* 0xAD0 */ f32 linearVelocity; /* 0xAD4 */ s16 currentYaw; /* 0xAD6 */ s16 targetYaw; @@ -743,15 +961,16 @@ typedef struct Player { /* 0xADC */ s8 unk_ADC; /* 0xADD */ s8 unk_ADD; /* 0xADE */ u8 unk_ADE; - /* 0xADF */ s8 unk_ADF[4]; - /* 0xAE3 */ s8 unk_AE3[4]; + /* 0xADF */ s8 unk_ADF[4]; // Circular buffer used for testing for triggering a quickspin + /* 0xAE3 */ s8 unk_AE3[4]; // Circular buffer used for ? /* 0xAE7 */ s8 unk_AE7; // a timer /* 0xAE8 */ s16 unk_AE8; // multipurpose timer /* 0xAEC */ f32 unk_AEC; /* 0xAF0 */ Vec3f unk_AF0[2]; - /* 0xB08 */ f32 unk_B08[8]; + /* 0xB08 */ f32 unk_B08[2]; // TODO: Investigate if this member actually is an array + /* 0xB10 */ f32 unk_B10[6]; /* 0xB28 */ s16 unk_B28; //Burning stick timer? - /* 0xB2A */ s8 unk_B2A; + /* 0xB2A */ s8 getItemDrawId; /* 0xB2B */ s8 unk_B2B; /* 0xB2C */ f32 windSpeed; /* 0xB30 */ s16 windAngleX; @@ -765,8 +984,8 @@ typedef struct Player { /* 0xB4C */ s16 unk_B4C; /* 0xB4E */ s16 unk_B4E; /* 0xB50 */ f32 unk_B50; - /* 0xB54 */ f32 unk_B54; - /* 0xB58 */ f32 unk_B58; + /* 0xB54 */ f32 wallHeight; // height used to determine whether link can climb or grab a ledge at the top + /* 0xB58 */ f32 wallDistance; // distance to the colliding wall plane /* 0xB5C */ u8 unk_B5C; /* 0xB5D */ u8 unk_B5D; /* 0xB5E */ u8 unk_B5E; @@ -774,15 +993,15 @@ typedef struct Player { /* 0xB60 */ u16 blastMaskTimer; /* 0xB62 */ s16 unk_B62; /* 0xB64 */ u8 unk_B64; - /* 0xB65 */ u8 unk_B65; + /* 0xB65 */ u8 shockTimer; /* 0xB66 */ u8 unk_B66; - /* 0xB67 */ u8 unk_B67; // deku hop timer? - /* 0xB68 */ s16 unk_B68; - /* 0xB6A */ s16 unk_B6A; + /* 0xB67 */ u8 unk_B67; // deku remaining hops counter + /* 0xB68 */ s16 fallStartHeight; // last truncated Y position before falling + /* 0xB6A */ s16 fallDistance; // truncated Y distance the player has fallen so far (positive is down) /* 0xB6C */ s16 unk_B6C; /* 0xB6E */ s16 unk_B6E; /* 0xB70 */ s16 unk_B70; - /* 0xB72 */ u16 unk_B72; // floor type? + /* 0xB72 */ u16 floorSfxOffset; /* 0xB74 */ u8 unk_B74; /* 0xB75 */ u8 unk_B75; /* 0xB76 */ s16 unk_B76; @@ -790,8 +1009,7 @@ typedef struct Player { /* 0xB7C */ f32 unk_B7C; /* 0xB80 */ f32 unk_B80; /* 0xB84 */ s16 unk_B84; - /* 0xB86 */ s16 unk_B86; - /* 0xB88 */ s16 unk_B88; + /* 0xB86 */ s16 unk_B86[2]; // unknown length /* 0xB8A */ s16 unk_B8A; /* 0xB8C */ s16 unk_B8C; /* 0xB8E */ s16 unk_B8E; @@ -800,11 +1018,11 @@ typedef struct Player { /* 0xB94 */ s16 unk_B94; /* 0xB96 */ s16 unk_B96; /* 0xB98 */ WeaponInfo meleeWeaponInfo[3]; - /* 0xBEC */ Vec3f bodyPartsPos[18]; + /* 0xBEC */ Vec3f bodyPartsPos[PLAYER_BODYPART_MAX]; /* 0xCC4 */ MtxF mf_CC4; /* 0xD04 */ MtxF shieldMf; /* 0xD44 */ u8 isBurning; - /* 0xD45 */ u8 flameTimers[18]; // one flame per body part + /* 0xD45 */ u8 flameTimers[PLAYER_BODYPART_MAX]; /* 0xD57 */ u8 unk_D57; /* 0xD58 */ PlayerFuncD58 unk_D58; /* 0xD5C */ s8 invincibilityTimer; // prevents damage when nonzero (positive = visible, counts towards zero each frame) @@ -813,7 +1031,7 @@ typedef struct Player { /* 0xD5F */ u8 unk_D5F; /* 0xD60 */ f32 unk_D60; /* 0xD64 */ s16 unk_D64; - /* 0xD66 */ u16 unk_D66; + /* 0xD66 */ u16 unk_D66; // sfx /* 0xD68 */ s16 unk_D68; /* 0xD6A */ s8 unk_D6A; /* 0xD6B */ u8 unk_D6B; diff --git a/include/z64save.h b/include/z64save.h index 0a4c6d448..85ad8d88f 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -330,7 +330,7 @@ typedef struct SaveContext { /* 0x3DB8 */ u16 entranceSound; // "player_wipe_door_SE" /* 0x3DBA */ u8 unk_3DBA; // "player_wipe_item" /* 0x3DBB */ u8 unk_3DBB; // "next_walk" - /* 0x3DBC */ u16 dogParams; // "dog_flag" + /* 0x3DBC */ s16 dogParams; // "dog_flag" /* 0x3DBE */ u8 textTriggerFlags; // "guide_status" /* 0x3DBF */ u8 showTitleCard; // "name_display" /* 0x3DC0 */ s16 unk_3DC0; // "shield_magic_timer" @@ -356,7 +356,7 @@ typedef struct SaveContext { /* 0x3F26 */ u16 prevHudVisibility; // used to store and recover hud visibility for pause menu and text boxes "last_time_type" /* 0x3F28 */ s16 magicState; // determines magic meter behavior on each frame "magic_flag" /* 0x3F2A */ s16 isMagicRequested; // a request to add magic has been given "recovery_magic_flag" - /* 0x3F2C */ s16 magicUnusedFlag; // Set to 0 in func_80812D94(), otherwise unused "keep_magic_flag" + /* 0x3F2C */ s16 magicFlag; // Set to 0 in func_80812D94(), otherwise unused "keep_magic_flag" /* 0x3F2E */ s16 magicCapacity; // maximum magic available "magic_now_max" /* 0x3F30 */ s16 magicFillTarget; // target used to fill magic "magic_now_now" /* 0x3F32 */ s16 magicToConsume; // accumulated magic that is requested to be consumed "magic_used" @@ -409,6 +409,8 @@ typedef enum SunsSongState { #define CURRENT_DAY (((void)0, gSaveContext.save.day) % 5) +#define GET_PLAYER_FORM ((void)0, gSaveContext.save.playerForm) + #define SLOT(item) gItemSlots[item] #define AMMO(item) gSaveContext.save.inventory.ammo[SLOT(item)] #define INV_CONTENT(item) gSaveContext.save.inventory.items[SLOT(item)] @@ -449,6 +451,10 @@ typedef enum SunsSongState { #define GET_CUR_FORM_BTN_ITEM(btn) ((u8)((btn) == EQUIP_SLOT_B ? BUTTON_ITEM_EQUIP(CUR_FORM, btn) : BUTTON_ITEM_EQUIP(0, btn))) #define GET_CUR_FORM_BTN_SLOT(btn) ((u8)((btn) == EQUIP_SLOT_B ? C_SLOT_EQUIP(CUR_FORM, btn) : C_SLOT_EQUIP(0, btn))) +#define C_BTN_ITEM(btn) \ + ((gSaveContext.buttonStatus[(btn)] != BTN_DISABLED) \ + ? BUTTON_ITEM_EQUIP(0, (btn)) \ + : ((gSaveContext.hudVisibility == HUD_VISIBILITY_A_B_C) ? BUTTON_ITEM_EQUIP(0, (btn)) : ITEM_NONE)) #define SET_CUR_FORM_BTN_ITEM(btn, item) \ if ((btn) == EQUIP_SLOT_B) { \ @@ -481,6 +487,1013 @@ typedef enum SunsSongState { #define SET_TOWN_SHOOTING_GALLERY_HIGH_SCORE(score) (gSaveContext.save.shootingGalleryHighScores = (gSaveContext.save.shootingGalleryHighScores & 0xFFFF0000) | ((u16)(score))) #define SET_SWAMP_SHOOTING_GALLERY_HIGH_SCORE(score) (gSaveContext.save.shootingGalleryHighScores = ((gSaveContext.save.shootingGalleryHighScores) & 0xFFFF) | ((u16)(score) << 0x10)) +/** + * gSaveContext.save.weekEventReg + */ + +#define PACK_WEEKEVENTREG_FLAG(index, mask) (((index) << 8) | (mask)) + +#define WEEKEVENTREG_00_01 PACK_WEEKEVENTREG_FLAG(0, 0x01) +#define WEEKEVENTREG_00_02 PACK_WEEKEVENTREG_FLAG(0, 0x02) +#define WEEKEVENTREG_00_04 PACK_WEEKEVENTREG_FLAG(0, 0x04) +#define WEEKEVENTREG_00_08 PACK_WEEKEVENTREG_FLAG(0, 0x08) +#define WEEKEVENTREG_00_10 PACK_WEEKEVENTREG_FLAG(0, 0x10) +#define WEEKEVENTREG_00_20 PACK_WEEKEVENTREG_FLAG(0, 0x20) +#define WEEKEVENTREG_00_40 PACK_WEEKEVENTREG_FLAG(0, 0x40) +#define WEEKEVENTREG_00_80 PACK_WEEKEVENTREG_FLAG(0, 0x80) +#define WEEKEVENTREG_01_01 PACK_WEEKEVENTREG_FLAG(1, 0x01) +#define WEEKEVENTREG_01_02 PACK_WEEKEVENTREG_FLAG(1, 0x02) +#define WEEKEVENTREG_01_04 PACK_WEEKEVENTREG_FLAG(1, 0x04) +#define WEEKEVENTREG_01_08 PACK_WEEKEVENTREG_FLAG(1, 0x08) +#define WEEKEVENTREG_01_10 PACK_WEEKEVENTREG_FLAG(1, 0x10) +#define WEEKEVENTREG_01_20 PACK_WEEKEVENTREG_FLAG(1, 0x20) +#define WEEKEVENTREG_01_40 PACK_WEEKEVENTREG_FLAG(1, 0x40) +#define WEEKEVENTREG_01_80 PACK_WEEKEVENTREG_FLAG(1, 0x80) +#define WEEKEVENTREG_02_01 PACK_WEEKEVENTREG_FLAG(2, 0x01) +#define WEEKEVENTREG_02_02 PACK_WEEKEVENTREG_FLAG(2, 0x02) +#define WEEKEVENTREG_02_04 PACK_WEEKEVENTREG_FLAG(2, 0x04) +#define WEEKEVENTREG_02_08 PACK_WEEKEVENTREG_FLAG(2, 0x08) +#define WEEKEVENTREG_02_10 PACK_WEEKEVENTREG_FLAG(2, 0x10) +#define WEEKEVENTREG_02_20 PACK_WEEKEVENTREG_FLAG(2, 0x20) +#define WEEKEVENTREG_02_40 PACK_WEEKEVENTREG_FLAG(2, 0x40) +#define WEEKEVENTREG_02_80 PACK_WEEKEVENTREG_FLAG(2, 0x80) +#define WEEKEVENTREG_03_01 PACK_WEEKEVENTREG_FLAG(3, 0x01) +#define WEEKEVENTREG_03_02 PACK_WEEKEVENTREG_FLAG(3, 0x02) +#define WEEKEVENTREG_03_04 PACK_WEEKEVENTREG_FLAG(3, 0x04) +#define WEEKEVENTREG_03_08 PACK_WEEKEVENTREG_FLAG(3, 0x08) +#define WEEKEVENTREG_03_10 PACK_WEEKEVENTREG_FLAG(3, 0x10) +#define WEEKEVENTREG_03_20 PACK_WEEKEVENTREG_FLAG(3, 0x20) +#define WEEKEVENTREG_03_40 PACK_WEEKEVENTREG_FLAG(3, 0x40) +#define WEEKEVENTREG_03_80 PACK_WEEKEVENTREG_FLAG(3, 0x80) +#define WEEKEVENTREG_04_01 PACK_WEEKEVENTREG_FLAG(4, 0x01) +#define WEEKEVENTREG_04_02 PACK_WEEKEVENTREG_FLAG(4, 0x02) +#define WEEKEVENTREG_04_04 PACK_WEEKEVENTREG_FLAG(4, 0x04) +#define WEEKEVENTREG_04_08 PACK_WEEKEVENTREG_FLAG(4, 0x08) +#define WEEKEVENTREG_04_10 PACK_WEEKEVENTREG_FLAG(4, 0x10) +#define WEEKEVENTREG_04_20 PACK_WEEKEVENTREG_FLAG(4, 0x20) +#define WEEKEVENTREG_04_40 PACK_WEEKEVENTREG_FLAG(4, 0x40) +#define WEEKEVENTREG_04_80 PACK_WEEKEVENTREG_FLAG(4, 0x80) +#define WEEKEVENTREG_05_01 PACK_WEEKEVENTREG_FLAG(5, 0x01) +#define WEEKEVENTREG_05_02 PACK_WEEKEVENTREG_FLAG(5, 0x02) +#define WEEKEVENTREG_05_04 PACK_WEEKEVENTREG_FLAG(5, 0x04) +#define WEEKEVENTREG_05_08 PACK_WEEKEVENTREG_FLAG(5, 0x08) +#define WEEKEVENTREG_05_10 PACK_WEEKEVENTREG_FLAG(5, 0x10) +#define WEEKEVENTREG_05_20 PACK_WEEKEVENTREG_FLAG(5, 0x20) +#define WEEKEVENTREG_05_40 PACK_WEEKEVENTREG_FLAG(5, 0x40) +#define WEEKEVENTREG_05_80 PACK_WEEKEVENTREG_FLAG(5, 0x80) +#define WEEKEVENTREG_06_01 PACK_WEEKEVENTREG_FLAG(6, 0x01) +#define WEEKEVENTREG_06_02 PACK_WEEKEVENTREG_FLAG(6, 0x02) +#define WEEKEVENTREG_06_04 PACK_WEEKEVENTREG_FLAG(6, 0x04) +#define WEEKEVENTREG_06_08 PACK_WEEKEVENTREG_FLAG(6, 0x08) +#define WEEKEVENTREG_06_10 PACK_WEEKEVENTREG_FLAG(6, 0x10) +#define WEEKEVENTREG_06_20 PACK_WEEKEVENTREG_FLAG(6, 0x20) +#define WEEKEVENTREG_06_40 PACK_WEEKEVENTREG_FLAG(6, 0x40) +#define WEEKEVENTREG_06_80 PACK_WEEKEVENTREG_FLAG(6, 0x80) +#define WEEKEVENTREG_07_01 PACK_WEEKEVENTREG_FLAG(7, 0x01) +#define WEEKEVENTREG_07_02 PACK_WEEKEVENTREG_FLAG(7, 0x02) +#define WEEKEVENTREG_07_04 PACK_WEEKEVENTREG_FLAG(7, 0x04) +#define WEEKEVENTREG_07_08 PACK_WEEKEVENTREG_FLAG(7, 0x08) +#define WEEKEVENTREG_07_10 PACK_WEEKEVENTREG_FLAG(7, 0x10) +#define WEEKEVENTREG_07_20 PACK_WEEKEVENTREG_FLAG(7, 0x20) +#define WEEKEVENTREG_07_40 PACK_WEEKEVENTREG_FLAG(7, 0x40) +#define WEEKEVENTREG_07_80 PACK_WEEKEVENTREG_FLAG(7, 0x80) +#define WEEKEVENTREG_08_01 PACK_WEEKEVENTREG_FLAG(8, 0x01) +#define WEEKEVENTREG_08_02 PACK_WEEKEVENTREG_FLAG(8, 0x02) +#define WEEKEVENTREG_08_04 PACK_WEEKEVENTREG_FLAG(8, 0x04) +#define WEEKEVENTREG_08_08 PACK_WEEKEVENTREG_FLAG(8, 0x08) +#define WEEKEVENTREG_08_10 PACK_WEEKEVENTREG_FLAG(8, 0x10) +#define WEEKEVENTREG_08_20 PACK_WEEKEVENTREG_FLAG(8, 0x20) +#define WEEKEVENTREG_08_40 PACK_WEEKEVENTREG_FLAG(8, 0x40) +#define WEEKEVENTREG_08_80 PACK_WEEKEVENTREG_FLAG(8, 0x80) +#define WEEKEVENTREG_09_01 PACK_WEEKEVENTREG_FLAG(9, 0x01) +#define WEEKEVENTREG_09_02 PACK_WEEKEVENTREG_FLAG(9, 0x02) +#define WEEKEVENTREG_09_04 PACK_WEEKEVENTREG_FLAG(9, 0x04) +#define WEEKEVENTREG_09_08 PACK_WEEKEVENTREG_FLAG(9, 0x08) +#define WEEKEVENTREG_09_10 PACK_WEEKEVENTREG_FLAG(9, 0x10) +#define WEEKEVENTREG_09_20 PACK_WEEKEVENTREG_FLAG(9, 0x20) +#define WEEKEVENTREG_09_40 PACK_WEEKEVENTREG_FLAG(9, 0x40) +#define WEEKEVENTREG_09_80 PACK_WEEKEVENTREG_FLAG(9, 0x80) +#define WEEKEVENTREG_10_01 PACK_WEEKEVENTREG_FLAG(10, 0x01) +#define WEEKEVENTREG_10_02 PACK_WEEKEVENTREG_FLAG(10, 0x02) +#define WEEKEVENTREG_10_04 PACK_WEEKEVENTREG_FLAG(10, 0x04) +#define WEEKEVENTREG_10_08 PACK_WEEKEVENTREG_FLAG(10, 0x08) +#define WEEKEVENTREG_10_10 PACK_WEEKEVENTREG_FLAG(10, 0x10) +#define WEEKEVENTREG_10_20 PACK_WEEKEVENTREG_FLAG(10, 0x20) +#define WEEKEVENTREG_10_40 PACK_WEEKEVENTREG_FLAG(10, 0x40) +#define WEEKEVENTREG_10_80 PACK_WEEKEVENTREG_FLAG(10, 0x80) +#define WEEKEVENTREG_11_01 PACK_WEEKEVENTREG_FLAG(11, 0x01) +#define WEEKEVENTREG_11_02 PACK_WEEKEVENTREG_FLAG(11, 0x02) +#define WEEKEVENTREG_11_04 PACK_WEEKEVENTREG_FLAG(11, 0x04) +#define WEEKEVENTREG_11_08 PACK_WEEKEVENTREG_FLAG(11, 0x08) +#define WEEKEVENTREG_11_10 PACK_WEEKEVENTREG_FLAG(11, 0x10) +#define WEEKEVENTREG_11_20 PACK_WEEKEVENTREG_FLAG(11, 0x20) +#define WEEKEVENTREG_11_40 PACK_WEEKEVENTREG_FLAG(11, 0x40) +#define WEEKEVENTREG_11_80 PACK_WEEKEVENTREG_FLAG(11, 0x80) + +// woodfall temple wood flower opened +#define WEEKEVENTREG_12_01 PACK_WEEKEVENTREG_FLAG(12, 0x01) + +#define WEEKEVENTREG_12_02 PACK_WEEKEVENTREG_FLAG(12, 0x02) +#define WEEKEVENTREG_12_04 PACK_WEEKEVENTREG_FLAG(12, 0x04) +#define WEEKEVENTREG_12_08 PACK_WEEKEVENTREG_FLAG(12, 0x08) +#define WEEKEVENTREG_12_10 PACK_WEEKEVENTREG_FLAG(12, 0x10) +#define WEEKEVENTREG_12_20 PACK_WEEKEVENTREG_FLAG(12, 0x20) +#define WEEKEVENTREG_12_40 PACK_WEEKEVENTREG_FLAG(12, 0x40) +#define WEEKEVENTREG_12_80 PACK_WEEKEVENTREG_FLAG(12, 0x80) +#define WEEKEVENTREG_13_01 PACK_WEEKEVENTREG_FLAG(13, 0x01) +#define WEEKEVENTREG_13_02 PACK_WEEKEVENTREG_FLAG(13, 0x02) +#define WEEKEVENTREG_13_04 PACK_WEEKEVENTREG_FLAG(13, 0x04) +#define WEEKEVENTREG_13_08 PACK_WEEKEVENTREG_FLAG(13, 0x08) +#define WEEKEVENTREG_13_10 PACK_WEEKEVENTREG_FLAG(13, 0x10) +#define WEEKEVENTREG_13_20 PACK_WEEKEVENTREG_FLAG(13, 0x20) +#define WEEKEVENTREG_13_40 PACK_WEEKEVENTREG_FLAG(13, 0x40) +#define WEEKEVENTREG_13_80 PACK_WEEKEVENTREG_FLAG(13, 0x80) + +// PlayedMilkMinigame +// Attempted Cremia Cart Ride +#define WEEKEVENTREG_14_01 PACK_WEEKEVENTREG_FLAG(14, 0x01) + +#define WEEKEVENTREG_14_02 PACK_WEEKEVENTREG_FLAG(14, 0x02) +#define WEEKEVENTREG_14_04 PACK_WEEKEVENTREG_FLAG(14, 0x04) +#define WEEKEVENTREG_14_08 PACK_WEEKEVENTREG_FLAG(14, 0x08) +#define WEEKEVENTREG_14_10 PACK_WEEKEVENTREG_FLAG(14, 0x10) +#define WEEKEVENTREG_14_20 PACK_WEEKEVENTREG_FLAG(14, 0x20) +#define WEEKEVENTREG_14_40 PACK_WEEKEVENTREG_FLAG(14, 0x40) +#define WEEKEVENTREG_14_80 PACK_WEEKEVENTREG_FLAG(14, 0x80) +#define WEEKEVENTREG_15_01 PACK_WEEKEVENTREG_FLAG(15, 0x01) +#define WEEKEVENTREG_15_02 PACK_WEEKEVENTREG_FLAG(15, 0x02) +#define WEEKEVENTREG_15_04 PACK_WEEKEVENTREG_FLAG(15, 0x04) +#define WEEKEVENTREG_15_08 PACK_WEEKEVENTREG_FLAG(15, 0x08) +#define WEEKEVENTREG_15_10 PACK_WEEKEVENTREG_FLAG(15, 0x10) +#define WEEKEVENTREG_15_20 PACK_WEEKEVENTREG_FLAG(15, 0x20) +#define WEEKEVENTREG_15_40 PACK_WEEKEVENTREG_FLAG(15, 0x40) +#define WEEKEVENTREG_15_80 PACK_WEEKEVENTREG_FLAG(15, 0x80) +#define WEEKEVENTREG_16_01 PACK_WEEKEVENTREG_FLAG(16, 0x01) +#define WEEKEVENTREG_16_02 PACK_WEEKEVENTREG_FLAG(16, 0x02) +#define WEEKEVENTREG_16_04 PACK_WEEKEVENTREG_FLAG(16, 0x04) +#define WEEKEVENTREG_16_08 PACK_WEEKEVENTREG_FLAG(16, 0x08) +#define WEEKEVENTREG_16_10 PACK_WEEKEVENTREG_FLAG(16, 0x10) +#define WEEKEVENTREG_16_20 PACK_WEEKEVENTREG_FLAG(16, 0x20) +#define WEEKEVENTREG_16_40 PACK_WEEKEVENTREG_FLAG(16, 0x40) +#define WEEKEVENTREG_16_80 PACK_WEEKEVENTREG_FLAG(16, 0x80) +#define WEEKEVENTREG_17_01 PACK_WEEKEVENTREG_FLAG(17, 0x01) +#define WEEKEVENTREG_17_02 PACK_WEEKEVENTREG_FLAG(17, 0x02) +#define WEEKEVENTREG_17_04 PACK_WEEKEVENTREG_FLAG(17, 0x04) +#define WEEKEVENTREG_17_08 PACK_WEEKEVENTREG_FLAG(17, 0x08) +#define WEEKEVENTREG_17_10 PACK_WEEKEVENTREG_FLAG(17, 0x10) +#define WEEKEVENTREG_17_20 PACK_WEEKEVENTREG_FLAG(17, 0x20) +#define WEEKEVENTREG_17_40 PACK_WEEKEVENTREG_FLAG(17, 0x40) +#define WEEKEVENTREG_17_80 PACK_WEEKEVENTREG_FLAG(17, 0x80) +#define WEEKEVENTREG_18_01 PACK_WEEKEVENTREG_FLAG(18, 0x01) +#define WEEKEVENTREG_18_02 PACK_WEEKEVENTREG_FLAG(18, 0x02) +#define WEEKEVENTREG_18_04 PACK_WEEKEVENTREG_FLAG(18, 0x04) +#define WEEKEVENTREG_18_08 PACK_WEEKEVENTREG_FLAG(18, 0x08) +#define WEEKEVENTREG_18_10 PACK_WEEKEVENTREG_FLAG(18, 0x10) +#define WEEKEVENTREG_18_20 PACK_WEEKEVENTREG_FLAG(18, 0x20) +#define WEEKEVENTREG_18_40 PACK_WEEKEVENTREG_FLAG(18, 0x40) +#define WEEKEVENTREG_18_80 PACK_WEEKEVENTREG_FLAG(18, 0x80) +#define WEEKEVENTREG_19_01 PACK_WEEKEVENTREG_FLAG(19, 0x01) +#define WEEKEVENTREG_19_02 PACK_WEEKEVENTREG_FLAG(19, 0x02) +#define WEEKEVENTREG_19_04 PACK_WEEKEVENTREG_FLAG(19, 0x04) +#define WEEKEVENTREG_19_08 PACK_WEEKEVENTREG_FLAG(19, 0x08) +#define WEEKEVENTREG_19_10 PACK_WEEKEVENTREG_FLAG(19, 0x10) +#define WEEKEVENTREG_19_20 PACK_WEEKEVENTREG_FLAG(19, 0x20) +#define WEEKEVENTREG_19_40 PACK_WEEKEVENTREG_FLAG(19, 0x40) +#define WEEKEVENTREG_19_80 PACK_WEEKEVENTREG_FLAG(19, 0x80) +#define WEEKEVENTREG_20_01 PACK_WEEKEVENTREG_FLAG(20, 0x01) + +// woodfall temple purification cutscene watched +#define WEEKEVENTREG_20_02 PACK_WEEKEVENTREG_FLAG(20, 0x02) + +#define WEEKEVENTREG_20_04 PACK_WEEKEVENTREG_FLAG(20, 0x04) +#define WEEKEVENTREG_20_08 PACK_WEEKEVENTREG_FLAG(20, 0x08) +#define WEEKEVENTREG_20_10 PACK_WEEKEVENTREG_FLAG(20, 0x10) +#define WEEKEVENTREG_20_20 PACK_WEEKEVENTREG_FLAG(20, 0x20) +#define WEEKEVENTREG_20_40 PACK_WEEKEVENTREG_FLAG(20, 0x40) +#define WEEKEVENTREG_20_80 PACK_WEEKEVENTREG_FLAG(20, 0x80) +#define WEEKEVENTREG_21_01 PACK_WEEKEVENTREG_FLAG(21, 0x01) +#define WEEKEVENTREG_21_02 PACK_WEEKEVENTREG_FLAG(21, 0x02) +#define WEEKEVENTREG_21_04 PACK_WEEKEVENTREG_FLAG(21, 0x04) +#define WEEKEVENTREG_21_08 PACK_WEEKEVENTREG_FLAG(21, 0x08) +#define WEEKEVENTREG_21_10 PACK_WEEKEVENTREG_FLAG(21, 0x10) +#define WEEKEVENTREG_21_20 PACK_WEEKEVENTREG_FLAG(21, 0x20) +#define WEEKEVENTREG_21_40 PACK_WEEKEVENTREG_FLAG(21, 0x40) +#define WEEKEVENTREG_21_80 PACK_WEEKEVENTREG_FLAG(21, 0x80) + +// Aliens defeated +// "Winning" the alien invasion +#define WEEKEVENTREG_22_01 PACK_WEEKEVENTREG_FLAG(22, 0x01) + +#define WEEKEVENTREG_22_02 PACK_WEEKEVENTREG_FLAG(22, 0x02) +#define WEEKEVENTREG_22_04 PACK_WEEKEVENTREG_FLAG(22, 0x04) +#define WEEKEVENTREG_22_08 PACK_WEEKEVENTREG_FLAG(22, 0x08) +#define WEEKEVENTREG_22_10 PACK_WEEKEVENTREG_FLAG(22, 0x10) +#define WEEKEVENTREG_22_20 PACK_WEEKEVENTREG_FLAG(22, 0x20) +#define WEEKEVENTREG_22_40 PACK_WEEKEVENTREG_FLAG(22, 0x40) +#define WEEKEVENTREG_22_80 PACK_WEEKEVENTREG_FLAG(22, 0x80) +#define WEEKEVENTREG_23_01 PACK_WEEKEVENTREG_FLAG(23, 0x01) +#define WEEKEVENTREG_23_02 PACK_WEEKEVENTREG_FLAG(23, 0x02) +#define WEEKEVENTREG_23_04 PACK_WEEKEVENTREG_FLAG(23, 0x04) +#define WEEKEVENTREG_23_08 PACK_WEEKEVENTREG_FLAG(23, 0x08) +#define WEEKEVENTREG_23_10 PACK_WEEKEVENTREG_FLAG(23, 0x10) +#define WEEKEVENTREG_23_20 PACK_WEEKEVENTREG_FLAG(23, 0x20) +#define WEEKEVENTREG_23_40 PACK_WEEKEVENTREG_FLAG(23, 0x40) +#define WEEKEVENTREG_23_80 PACK_WEEKEVENTREG_FLAG(23, 0x80) +#define WEEKEVENTREG_24_01 PACK_WEEKEVENTREG_FLAG(24, 0x01) +#define WEEKEVENTREG_24_02 PACK_WEEKEVENTREG_FLAG(24, 0x02) +#define WEEKEVENTREG_24_04 PACK_WEEKEVENTREG_FLAG(24, 0x04) +#define WEEKEVENTREG_24_08 PACK_WEEKEVENTREG_FLAG(24, 0x08) + +// The player has already talked as a Goron at least once to Goron elder +#define WEEKEVENTREG_24_10 PACK_WEEKEVENTREG_FLAG(24, 0x10) + +// The player has already talked as a non-Goron at least once +#define WEEKEVENTREG_24_20 PACK_WEEKEVENTREG_FLAG(24, 0x20) + +#define WEEKEVENTREG_24_40 PACK_WEEKEVENTREG_FLAG(24, 0x40) + +// The player has talked to the Goron Child at least once +#define WEEKEVENTREG_24_80 PACK_WEEKEVENTREG_FLAG(24, 0x80) + +#define WEEKEVENTREG_25_01 PACK_WEEKEVENTREG_FLAG(25, 0x01) +#define WEEKEVENTREG_25_02 PACK_WEEKEVENTREG_FLAG(25, 0x02) +#define WEEKEVENTREG_25_04 PACK_WEEKEVENTREG_FLAG(25, 0x04) + +// breman mask was already used +#define WEEKEVENTREG_25_08 PACK_WEEKEVENTREG_FLAG(25, 0x08) + +#define WEEKEVENTREG_25_10 PACK_WEEKEVENTREG_FLAG(25, 0x10) +#define WEEKEVENTREG_25_20 PACK_WEEKEVENTREG_FLAG(25, 0x20) +#define WEEKEVENTREG_25_40 PACK_WEEKEVENTREG_FLAG(25, 0x40) +#define WEEKEVENTREG_25_80 PACK_WEEKEVENTREG_FLAG(25, 0x80) +#define WEEKEVENTREG_26_01 PACK_WEEKEVENTREG_FLAG(26, 0x01) +#define WEEKEVENTREG_26_02 PACK_WEEKEVENTREG_FLAG(26, 0x02) +#define WEEKEVENTREG_26_04 PACK_WEEKEVENTREG_FLAG(26, 0x04) +#define WEEKEVENTREG_26_08 PACK_WEEKEVENTREG_FLAG(26, 0x08) +#define WEEKEVENTREG_26_10 PACK_WEEKEVENTREG_FLAG(26, 0x10) +#define WEEKEVENTREG_26_20 PACK_WEEKEVENTREG_FLAG(26, 0x20) +#define WEEKEVENTREG_26_40 PACK_WEEKEVENTREG_FLAG(26, 0x40) +#define WEEKEVENTREG_26_80 PACK_WEEKEVENTREG_FLAG(26, 0x80) +#define WEEKEVENTREG_27_01 PACK_WEEKEVENTREG_FLAG(27, 0x01) +#define WEEKEVENTREG_27_02 PACK_WEEKEVENTREG_FLAG(27, 0x02) +#define WEEKEVENTREG_27_04 PACK_WEEKEVENTREG_FLAG(27, 0x04) +#define WEEKEVENTREG_27_08 PACK_WEEKEVENTREG_FLAG(27, 0x08) +#define WEEKEVENTREG_27_10 PACK_WEEKEVENTREG_FLAG(27, 0x10) +#define WEEKEVENTREG_27_20 PACK_WEEKEVENTREG_FLAG(27, 0x20) +#define WEEKEVENTREG_27_40 PACK_WEEKEVENTREG_FLAG(27, 0x40) +#define WEEKEVENTREG_27_80 PACK_WEEKEVENTREG_FLAG(27, 0x80) +#define WEEKEVENTREG_28_01 PACK_WEEKEVENTREG_FLAG(28, 0x01) +#define WEEKEVENTREG_28_02 PACK_WEEKEVENTREG_FLAG(28, 0x02) +#define WEEKEVENTREG_28_04 PACK_WEEKEVENTREG_FLAG(28, 0x04) +#define WEEKEVENTREG_28_08 PACK_WEEKEVENTREG_FLAG(28, 0x08) +#define WEEKEVENTREG_28_10 PACK_WEEKEVENTREG_FLAG(28, 0x10) +#define WEEKEVENTREG_28_20 PACK_WEEKEVENTREG_FLAG(28, 0x20) +#define WEEKEVENTREG_28_40 PACK_WEEKEVENTREG_FLAG(28, 0x40) +#define WEEKEVENTREG_28_80 PACK_WEEKEVENTREG_FLAG(28, 0x80) +#define WEEKEVENTREG_29_01 PACK_WEEKEVENTREG_FLAG(29, 0x01) +#define WEEKEVENTREG_29_02 PACK_WEEKEVENTREG_FLAG(29, 0x02) +#define WEEKEVENTREG_29_04 PACK_WEEKEVENTREG_FLAG(29, 0x04) +#define WEEKEVENTREG_29_08 PACK_WEEKEVENTREG_FLAG(29, 0x08) +#define WEEKEVENTREG_29_10 PACK_WEEKEVENTREG_FLAG(29, 0x10) +#define WEEKEVENTREG_29_20 PACK_WEEKEVENTREG_FLAG(29, 0x20) +#define WEEKEVENTREG_29_40 PACK_WEEKEVENTREG_FLAG(29, 0x40) +#define WEEKEVENTREG_29_80 PACK_WEEKEVENTREG_FLAG(29, 0x80) +#define WEEKEVENTREG_30_01 PACK_WEEKEVENTREG_FLAG(30, 0x01) +#define WEEKEVENTREG_30_02 PACK_WEEKEVENTREG_FLAG(30, 0x02) +#define WEEKEVENTREG_30_04 PACK_WEEKEVENTREG_FLAG(30, 0x04) +#define WEEKEVENTREG_30_08 PACK_WEEKEVENTREG_FLAG(30, 0x08) +#define WEEKEVENTREG_30_10 PACK_WEEKEVENTREG_FLAG(30, 0x10) +#define WEEKEVENTREG_30_20 PACK_WEEKEVENTREG_FLAG(30, 0x20) +#define WEEKEVENTREG_30_40 PACK_WEEKEVENTREG_FLAG(30, 0x40) +#define WEEKEVENTREG_30_80 PACK_WEEKEVENTREG_FLAG(30, 0x80) +#define WEEKEVENTREG_31_01 PACK_WEEKEVENTREG_FLAG(31, 0x01) +#define WEEKEVENTREG_31_02 PACK_WEEKEVENTREG_FLAG(31, 0x02) + +// Unconfirmed: "Tatl's Second Cycle Text?" +#define WEEKEVENTREG_31_04 PACK_WEEKEVENTREG_FLAG(31, 0x04) + +#define WEEKEVENTREG_31_08 PACK_WEEKEVENTREG_FLAG(31, 0x08) +#define WEEKEVENTREG_31_10 PACK_WEEKEVENTREG_FLAG(31, 0x10) +#define WEEKEVENTREG_31_20 PACK_WEEKEVENTREG_FLAG(31, 0x20) + +// Cremia asked the player to accompany her to town +#define WEEKEVENTREG_31_40 PACK_WEEKEVENTREG_FLAG(31, 0x40) +// Player is playing the Milk Run +#define WEEKEVENTREG_31_80 PACK_WEEKEVENTREG_FLAG(31, 0x80) + +#define WEEKEVENTREG_32_01 PACK_WEEKEVENTREG_FLAG(32, 0x01) +#define WEEKEVENTREG_32_02 PACK_WEEKEVENTREG_FLAG(32, 0x02) +#define WEEKEVENTREG_32_04 PACK_WEEKEVENTREG_FLAG(32, 0x04) +#define WEEKEVENTREG_32_08 PACK_WEEKEVENTREG_FLAG(32, 0x08) +#define WEEKEVENTREG_32_10 PACK_WEEKEVENTREG_FLAG(32, 0x10) +#define WEEKEVENTREG_32_20 PACK_WEEKEVENTREG_FLAG(32, 0x20) + +// Woodfall Temple Frog Returned +#define WEEKEVENTREG_32_40 PACK_WEEKEVENTREG_FLAG(32, 0x40) +// Great Bay Temple Frog Returned +#define WEEKEVENTREG_32_80 PACK_WEEKEVENTREG_FLAG(32, 0x80) +// Southern Swamp Frog Returned +#define WEEKEVENTREG_33_01 PACK_WEEKEVENTREG_FLAG(33, 0x01) +// Laundry Pool Frog Returned +#define WEEKEVENTREG_33_02 PACK_WEEKEVENTREG_FLAG(33, 0x02) + +#define WEEKEVENTREG_33_04 PACK_WEEKEVENTREG_FLAG(33, 0x04) +#define WEEKEVENTREG_33_08 PACK_WEEKEVENTREG_FLAG(33, 0x08) +#define WEEKEVENTREG_33_10 PACK_WEEKEVENTREG_FLAG(33, 0x10) +#define WEEKEVENTREG_33_20 PACK_WEEKEVENTREG_FLAG(33, 0x20) +#define WEEKEVENTREG_33_40 PACK_WEEKEVENTREG_FLAG(33, 0x40) + +// Mountain village is unfrozen +#define WEEKEVENTREG_33_80 PACK_WEEKEVENTREG_FLAG(33, 0x80) +// Spoken to MINIFROG_YELLOW +#define WEEKEVENTREG_34_01 PACK_WEEKEVENTREG_FLAG(34, 0x01) + +#define WEEKEVENTREG_34_02 PACK_WEEKEVENTREG_FLAG(34, 0x02) +#define WEEKEVENTREG_34_04 PACK_WEEKEVENTREG_FLAG(34, 0x04) +#define WEEKEVENTREG_34_08 PACK_WEEKEVENTREG_FLAG(34, 0x08) +#define WEEKEVENTREG_34_10 PACK_WEEKEVENTREG_FLAG(34, 0x10) +#define WEEKEVENTREG_34_20 PACK_WEEKEVENTREG_FLAG(34, 0x20) +#define WEEKEVENTREG_34_40 PACK_WEEKEVENTREG_FLAG(34, 0x40) + +// Cremia did Milk Run alone. Player didn't interact or didn't accept the ride +#define WEEKEVENTREG_34_80 PACK_WEEKEVENTREG_FLAG(34, 0x80) + +#define WEEKEVENTREG_35_01 PACK_WEEKEVENTREG_FLAG(35, 0x01) +#define WEEKEVENTREG_35_02 PACK_WEEKEVENTREG_FLAG(35, 0x02) +#define WEEKEVENTREG_35_04 PACK_WEEKEVENTREG_FLAG(35, 0x04) +#define WEEKEVENTREG_35_08 PACK_WEEKEVENTREG_FLAG(35, 0x08) +#define WEEKEVENTREG_35_10 PACK_WEEKEVENTREG_FLAG(35, 0x10) +#define WEEKEVENTREG_35_20 PACK_WEEKEVENTREG_FLAG(35, 0x20) +#define WEEKEVENTREG_35_40 PACK_WEEKEVENTREG_FLAG(35, 0x40) + +// Obtained Heart Piece from Five Frogs of the Frog Choir +#define WEEKEVENTREG_35_80 PACK_WEEKEVENTREG_FLAG(35, 0x80) + +#define WEEKEVENTREG_36_01 PACK_WEEKEVENTREG_FLAG(36, 0x01) +#define WEEKEVENTREG_36_02 PACK_WEEKEVENTREG_FLAG(36, 0x02) +#define WEEKEVENTREG_36_04 PACK_WEEKEVENTREG_FLAG(36, 0x04) +#define WEEKEVENTREG_36_08 PACK_WEEKEVENTREG_FLAG(36, 0x08) +#define WEEKEVENTREG_36_10 PACK_WEEKEVENTREG_FLAG(36, 0x10) +#define WEEKEVENTREG_36_20 PACK_WEEKEVENTREG_FLAG(36, 0x20) +#define WEEKEVENTREG_36_40 PACK_WEEKEVENTREG_FLAG(36, 0x40) +#define WEEKEVENTREG_36_80 PACK_WEEKEVENTREG_FLAG(36, 0x80) +#define WEEKEVENTREG_37_01 PACK_WEEKEVENTREG_FLAG(37, 0x01) +#define WEEKEVENTREG_37_02 PACK_WEEKEVENTREG_FLAG(37, 0x02) +#define WEEKEVENTREG_37_04 PACK_WEEKEVENTREG_FLAG(37, 0x04) +#define WEEKEVENTREG_37_08 PACK_WEEKEVENTREG_FLAG(37, 0x08) +#define WEEKEVENTREG_37_10 PACK_WEEKEVENTREG_FLAG(37, 0x10) +#define WEEKEVENTREG_37_20 PACK_WEEKEVENTREG_FLAG(37, 0x20) +#define WEEKEVENTREG_37_40 PACK_WEEKEVENTREG_FLAG(37, 0x40) +#define WEEKEVENTREG_37_80 PACK_WEEKEVENTREG_FLAG(37, 0x80) +#define WEEKEVENTREG_38_01 PACK_WEEKEVENTREG_FLAG(38, 0x01) +#define WEEKEVENTREG_38_02 PACK_WEEKEVENTREG_FLAG(38, 0x02) +#define WEEKEVENTREG_38_04 PACK_WEEKEVENTREG_FLAG(38, 0x04) +#define WEEKEVENTREG_38_08 PACK_WEEKEVENTREG_FLAG(38, 0x08) +#define WEEKEVENTREG_38_10 PACK_WEEKEVENTREG_FLAG(38, 0x10) +#define WEEKEVENTREG_38_20 PACK_WEEKEVENTREG_FLAG(38, 0x20) +#define WEEKEVENTREG_38_40 PACK_WEEKEVENTREG_FLAG(38, 0x40) +#define WEEKEVENTREG_38_80 PACK_WEEKEVENTREG_FLAG(38, 0x80) +#define WEEKEVENTREG_39_01 PACK_WEEKEVENTREG_FLAG(39, 0x01) +#define WEEKEVENTREG_39_02 PACK_WEEKEVENTREG_FLAG(39, 0x02) +#define WEEKEVENTREG_39_04 PACK_WEEKEVENTREG_FLAG(39, 0x04) +#define WEEKEVENTREG_39_08 PACK_WEEKEVENTREG_FLAG(39, 0x08) +#define WEEKEVENTREG_39_10 PACK_WEEKEVENTREG_FLAG(39, 0x10) +#define WEEKEVENTREG_39_20 PACK_WEEKEVENTREG_FLAG(39, 0x20) +#define WEEKEVENTREG_39_40 PACK_WEEKEVENTREG_FLAG(39, 0x40) +#define WEEKEVENTREG_39_80 PACK_WEEKEVENTREG_FLAG(39, 0x80) +#define WEEKEVENTREG_40_01 PACK_WEEKEVENTREG_FLAG(40, 0x01) +#define WEEKEVENTREG_40_02 PACK_WEEKEVENTREG_FLAG(40, 0x02) +#define WEEKEVENTREG_40_04 PACK_WEEKEVENTREG_FLAG(40, 0x04) +#define WEEKEVENTREG_40_08 PACK_WEEKEVENTREG_FLAG(40, 0x08) +#define WEEKEVENTREG_40_10 PACK_WEEKEVENTREG_FLAG(40, 0x10) +#define WEEKEVENTREG_40_20 PACK_WEEKEVENTREG_FLAG(40, 0x20) +#define WEEKEVENTREG_40_40 PACK_WEEKEVENTREG_FLAG(40, 0x40) +#define WEEKEVENTREG_40_80 PACK_WEEKEVENTREG_FLAG(40, 0x80) +#define WEEKEVENTREG_41_01 PACK_WEEKEVENTREG_FLAG(41, 0x01) +#define WEEKEVENTREG_41_02 PACK_WEEKEVENTREG_FLAG(41, 0x02) +#define WEEKEVENTREG_41_04 PACK_WEEKEVENTREG_FLAG(41, 0x04) +#define WEEKEVENTREG_41_08 PACK_WEEKEVENTREG_FLAG(41, 0x08) +#define WEEKEVENTREG_41_10 PACK_WEEKEVENTREG_FLAG(41, 0x10) +#define WEEKEVENTREG_41_20 PACK_WEEKEVENTREG_FLAG(41, 0x20) +#define WEEKEVENTREG_41_40 PACK_WEEKEVENTREG_FLAG(41, 0x40) +#define WEEKEVENTREG_41_80 PACK_WEEKEVENTREG_FLAG(41, 0x80) +#define WEEKEVENTREG_42_01 PACK_WEEKEVENTREG_FLAG(42, 0x01) +#define WEEKEVENTREG_42_02 PACK_WEEKEVENTREG_FLAG(42, 0x02) +#define WEEKEVENTREG_42_04 PACK_WEEKEVENTREG_FLAG(42, 0x04) +#define WEEKEVENTREG_42_08 PACK_WEEKEVENTREG_FLAG(42, 0x08) +#define WEEKEVENTREG_42_10 PACK_WEEKEVENTREG_FLAG(42, 0x10) +#define WEEKEVENTREG_42_20 PACK_WEEKEVENTREG_FLAG(42, 0x20) +#define WEEKEVENTREG_42_40 PACK_WEEKEVENTREG_FLAG(42, 0x40) +#define WEEKEVENTREG_42_80 PACK_WEEKEVENTREG_FLAG(42, 0x80) +#define WEEKEVENTREG_43_01 PACK_WEEKEVENTREG_FLAG(43, 0x01) +#define WEEKEVENTREG_43_02 PACK_WEEKEVENTREG_FLAG(43, 0x02) +#define WEEKEVENTREG_43_04 PACK_WEEKEVENTREG_FLAG(43, 0x04) +#define WEEKEVENTREG_43_08 PACK_WEEKEVENTREG_FLAG(43, 0x08) +#define WEEKEVENTREG_43_10 PACK_WEEKEVENTREG_FLAG(43, 0x10) +#define WEEKEVENTREG_43_20 PACK_WEEKEVENTREG_FLAG(43, 0x20) +#define WEEKEVENTREG_43_40 PACK_WEEKEVENTREG_FLAG(43, 0x40) +#define WEEKEVENTREG_43_80 PACK_WEEKEVENTREG_FLAG(43, 0x80) +#define WEEKEVENTREG_44_01 PACK_WEEKEVENTREG_FLAG(44, 0x01) +#define WEEKEVENTREG_44_02 PACK_WEEKEVENTREG_FLAG(44, 0x02) +#define WEEKEVENTREG_44_04 PACK_WEEKEVENTREG_FLAG(44, 0x04) +#define WEEKEVENTREG_44_08 PACK_WEEKEVENTREG_FLAG(44, 0x08) +#define WEEKEVENTREG_44_10 PACK_WEEKEVENTREG_FLAG(44, 0x10) +#define WEEKEVENTREG_44_20 PACK_WEEKEVENTREG_FLAG(44, 0x20) +#define WEEKEVENTREG_44_40 PACK_WEEKEVENTREG_FLAG(44, 0x40) +#define WEEKEVENTREG_44_80 PACK_WEEKEVENTREG_FLAG(44, 0x80) +#define WEEKEVENTREG_45_01 PACK_WEEKEVENTREG_FLAG(45, 0x01) +#define WEEKEVENTREG_45_02 PACK_WEEKEVENTREG_FLAG(45, 0x02) +#define WEEKEVENTREG_45_04 PACK_WEEKEVENTREG_FLAG(45, 0x04) +#define WEEKEVENTREG_45_08 PACK_WEEKEVENTREG_FLAG(45, 0x08) +#define WEEKEVENTREG_45_10 PACK_WEEKEVENTREG_FLAG(45, 0x10) +#define WEEKEVENTREG_45_20 PACK_WEEKEVENTREG_FLAG(45, 0x20) +#define WEEKEVENTREG_45_40 PACK_WEEKEVENTREG_FLAG(45, 0x40) +#define WEEKEVENTREG_45_80 PACK_WEEKEVENTREG_FLAG(45, 0x80) +#define WEEKEVENTREG_46_01 PACK_WEEKEVENTREG_FLAG(46, 0x01) +#define WEEKEVENTREG_46_02 PACK_WEEKEVENTREG_FLAG(46, 0x02) +#define WEEKEVENTREG_46_04 PACK_WEEKEVENTREG_FLAG(46, 0x04) +#define WEEKEVENTREG_46_08 PACK_WEEKEVENTREG_FLAG(46, 0x08) +#define WEEKEVENTREG_46_10 PACK_WEEKEVENTREG_FLAG(46, 0x10) +#define WEEKEVENTREG_46_20 PACK_WEEKEVENTREG_FLAG(46, 0x20) +#define WEEKEVENTREG_46_40 PACK_WEEKEVENTREG_FLAG(46, 0x40) +#define WEEKEVENTREG_46_80 PACK_WEEKEVENTREG_FLAG(46, 0x80) +#define WEEKEVENTREG_47_01 PACK_WEEKEVENTREG_FLAG(47, 0x01) +#define WEEKEVENTREG_47_02 PACK_WEEKEVENTREG_FLAG(47, 0x02) +#define WEEKEVENTREG_47_04 PACK_WEEKEVENTREG_FLAG(47, 0x04) +#define WEEKEVENTREG_47_08 PACK_WEEKEVENTREG_FLAG(47, 0x08) +#define WEEKEVENTREG_47_10 PACK_WEEKEVENTREG_FLAG(47, 0x10) +#define WEEKEVENTREG_47_20 PACK_WEEKEVENTREG_FLAG(47, 0x20) +#define WEEKEVENTREG_47_40 PACK_WEEKEVENTREG_FLAG(47, 0x40) +#define WEEKEVENTREG_47_80 PACK_WEEKEVENTREG_FLAG(47, 0x80) +#define WEEKEVENTREG_48_01 PACK_WEEKEVENTREG_FLAG(48, 0x01) +#define WEEKEVENTREG_48_02 PACK_WEEKEVENTREG_FLAG(48, 0x02) +#define WEEKEVENTREG_48_04 PACK_WEEKEVENTREG_FLAG(48, 0x04) +#define WEEKEVENTREG_48_08 PACK_WEEKEVENTREG_FLAG(48, 0x08) +#define WEEKEVENTREG_48_10 PACK_WEEKEVENTREG_FLAG(48, 0x10) +#define WEEKEVENTREG_48_20 PACK_WEEKEVENTREG_FLAG(48, 0x20) +#define WEEKEVENTREG_48_40 PACK_WEEKEVENTREG_FLAG(48, 0x40) +#define WEEKEVENTREG_48_80 PACK_WEEKEVENTREG_FLAG(48, 0x80) +#define WEEKEVENTREG_49_01 PACK_WEEKEVENTREG_FLAG(49, 0x01) +#define WEEKEVENTREG_49_02 PACK_WEEKEVENTREG_FLAG(49, 0x02) +#define WEEKEVENTREG_49_04 PACK_WEEKEVENTREG_FLAG(49, 0x04) +#define WEEKEVENTREG_49_08 PACK_WEEKEVENTREG_FLAG(49, 0x08) +#define WEEKEVENTREG_49_10 PACK_WEEKEVENTREG_FLAG(49, 0x10) +#define WEEKEVENTREG_49_20 PACK_WEEKEVENTREG_FLAG(49, 0x20) +#define WEEKEVENTREG_49_40 PACK_WEEKEVENTREG_FLAG(49, 0x40) +#define WEEKEVENTREG_49_80 PACK_WEEKEVENTREG_FLAG(49, 0x80) +#define WEEKEVENTREG_50_01 PACK_WEEKEVENTREG_FLAG(50, 0x01) +#define WEEKEVENTREG_50_02 PACK_WEEKEVENTREG_FLAG(50, 0x02) +#define WEEKEVENTREG_50_04 PACK_WEEKEVENTREG_FLAG(50, 0x04) +#define WEEKEVENTREG_50_08 PACK_WEEKEVENTREG_FLAG(50, 0x08) +#define WEEKEVENTREG_50_10 PACK_WEEKEVENTREG_FLAG(50, 0x10) +#define WEEKEVENTREG_50_20 PACK_WEEKEVENTREG_FLAG(50, 0x20) +#define WEEKEVENTREG_50_40 PACK_WEEKEVENTREG_FLAG(50, 0x40) +#define WEEKEVENTREG_50_80 PACK_WEEKEVENTREG_FLAG(50, 0x80) +#define WEEKEVENTREG_51_01 PACK_WEEKEVENTREG_FLAG(51, 0x01) +#define WEEKEVENTREG_51_02 PACK_WEEKEVENTREG_FLAG(51, 0x02) +#define WEEKEVENTREG_51_04 PACK_WEEKEVENTREG_FLAG(51, 0x04) +#define WEEKEVENTREG_51_08 PACK_WEEKEVENTREG_FLAG(51, 0x08) +#define WEEKEVENTREG_51_10 PACK_WEEKEVENTREG_FLAG(51, 0x10) +#define WEEKEVENTREG_51_20 PACK_WEEKEVENTREG_FLAG(51, 0x20) +#define WEEKEVENTREG_51_40 PACK_WEEKEVENTREG_FLAG(51, 0x40) +#define WEEKEVENTREG_51_80 PACK_WEEKEVENTREG_FLAG(51, 0x80) + +// ProtectedCremia +#define WEEKEVENTREG_52_01 PACK_WEEKEVENTREG_FLAG(52, 0x01) +// Lose Milk Run minigame +#define WEEKEVENTREG_52_02 PACK_WEEKEVENTREG_FLAG(52, 0x02) + +#define WEEKEVENTREG_52_04 PACK_WEEKEVENTREG_FLAG(52, 0x04) +#define WEEKEVENTREG_52_08 PACK_WEEKEVENTREG_FLAG(52, 0x08) +#define WEEKEVENTREG_52_10 PACK_WEEKEVENTREG_FLAG(52, 0x10) + +// cleared Stone Tower Temple +#define WEEKEVENTREG_52_20 PACK_WEEKEVENTREG_FLAG(52, 0x20) + +#define WEEKEVENTREG_52_40 PACK_WEEKEVENTREG_FLAG(52, 0x40) +#define WEEKEVENTREG_52_80 PACK_WEEKEVENTREG_FLAG(52, 0x80) +#define WEEKEVENTREG_53_01 PACK_WEEKEVENTREG_FLAG(53, 0x01) +#define WEEKEVENTREG_53_02 PACK_WEEKEVENTREG_FLAG(53, 0x02) +#define WEEKEVENTREG_53_04 PACK_WEEKEVENTREG_FLAG(53, 0x04) +#define WEEKEVENTREG_53_08 PACK_WEEKEVENTREG_FLAG(53, 0x08) +#define WEEKEVENTREG_53_10 PACK_WEEKEVENTREG_FLAG(53, 0x10) +#define WEEKEVENTREG_53_20 PACK_WEEKEVENTREG_FLAG(53, 0x20) +#define WEEKEVENTREG_53_40 PACK_WEEKEVENTREG_FLAG(53, 0x40) +#define WEEKEVENTREG_53_80 PACK_WEEKEVENTREG_FLAG(53, 0x80) +#define WEEKEVENTREG_54_01 PACK_WEEKEVENTREG_FLAG(54, 0x01) +#define WEEKEVENTREG_54_02 PACK_WEEKEVENTREG_FLAG(54, 0x02) +#define WEEKEVENTREG_54_04 PACK_WEEKEVENTREG_FLAG(54, 0x04) +#define WEEKEVENTREG_54_08 PACK_WEEKEVENTREG_FLAG(54, 0x08) +#define WEEKEVENTREG_54_10 PACK_WEEKEVENTREG_FLAG(54, 0x10) +#define WEEKEVENTREG_54_20 PACK_WEEKEVENTREG_FLAG(54, 0x20) +#define WEEKEVENTREG_54_40 PACK_WEEKEVENTREG_FLAG(54, 0x40) +#define WEEKEVENTREG_54_80 PACK_WEEKEVENTREG_FLAG(54, 0x80) +#define WEEKEVENTREG_55_01 PACK_WEEKEVENTREG_FLAG(55, 0x01) + +// Unconfirmed: "Link the Goron Claims His Reservation: 4:30 PM" +#define WEEKEVENTREG_55_02 PACK_WEEKEVENTREG_FLAG(55, 0x02) + +#define WEEKEVENTREG_55_04 PACK_WEEKEVENTREG_FLAG(55, 0x04) +#define WEEKEVENTREG_55_08 PACK_WEEKEVENTREG_FLAG(55, 0x08) +#define WEEKEVENTREG_55_10 PACK_WEEKEVENTREG_FLAG(55, 0x10) +#define WEEKEVENTREG_55_20 PACK_WEEKEVENTREG_FLAG(55, 0x20) +#define WEEKEVENTREG_55_40 PACK_WEEKEVENTREG_FLAG(55, 0x40) + +// Gyorg has been defeated +#define WEEKEVENTREG_55_80 PACK_WEEKEVENTREG_FLAG(55, 0x80) + +#define WEEKEVENTREG_56_01 PACK_WEEKEVENTREG_FLAG(56, 0x01) +#define WEEKEVENTREG_56_02 PACK_WEEKEVENTREG_FLAG(56, 0x02) +#define WEEKEVENTREG_56_04 PACK_WEEKEVENTREG_FLAG(56, 0x04) +#define WEEKEVENTREG_56_08 PACK_WEEKEVENTREG_FLAG(56, 0x08) +#define WEEKEVENTREG_56_10 PACK_WEEKEVENTREG_FLAG(56, 0x10) +#define WEEKEVENTREG_56_20 PACK_WEEKEVENTREG_FLAG(56, 0x20) +#define WEEKEVENTREG_56_40 PACK_WEEKEVENTREG_FLAG(56, 0x40) +#define WEEKEVENTREG_56_80 PACK_WEEKEVENTREG_FLAG(56, 0x80) +#define WEEKEVENTREG_57_01 PACK_WEEKEVENTREG_FLAG(57, 0x01) +#define WEEKEVENTREG_57_02 PACK_WEEKEVENTREG_FLAG(57, 0x02) +#define WEEKEVENTREG_57_04 PACK_WEEKEVENTREG_FLAG(57, 0x04) +#define WEEKEVENTREG_57_08 PACK_WEEKEVENTREG_FLAG(57, 0x08) +#define WEEKEVENTREG_57_10 PACK_WEEKEVENTREG_FLAG(57, 0x10) +#define WEEKEVENTREG_57_20 PACK_WEEKEVENTREG_FLAG(57, 0x20) +#define WEEKEVENTREG_57_40 PACK_WEEKEVENTREG_FLAG(57, 0x40) +#define WEEKEVENTREG_57_80 PACK_WEEKEVENTREG_FLAG(57, 0x80) +#define WEEKEVENTREG_58_01 PACK_WEEKEVENTREG_FLAG(58, 0x01) +#define WEEKEVENTREG_58_02 PACK_WEEKEVENTREG_FLAG(58, 0x02) +#define WEEKEVENTREG_58_04 PACK_WEEKEVENTREG_FLAG(58, 0x04) +#define WEEKEVENTREG_58_08 PACK_WEEKEVENTREG_FLAG(58, 0x08) +#define WEEKEVENTREG_58_10 PACK_WEEKEVENTREG_FLAG(58, 0x10) +#define WEEKEVENTREG_58_20 PACK_WEEKEVENTREG_FLAG(58, 0x20) +#define WEEKEVENTREG_58_40 PACK_WEEKEVENTREG_FLAG(58, 0x40) +#define WEEKEVENTREG_58_80 PACK_WEEKEVENTREG_FLAG(58, 0x80) +#define WEEKEVENTREG_59_01 PACK_WEEKEVENTREG_FLAG(59, 0x01) +#define WEEKEVENTREG_59_02 PACK_WEEKEVENTREG_FLAG(59, 0x02) + +// Unconfirmed: "Entered South Clock Town" +#define WEEKEVENTREG_59_04 PACK_WEEKEVENTREG_FLAG(59, 0x04) + +#define WEEKEVENTREG_59_08 PACK_WEEKEVENTREG_FLAG(59, 0x08) +#define WEEKEVENTREG_59_10 PACK_WEEKEVENTREG_FLAG(59, 0x10) +#define WEEKEVENTREG_59_20 PACK_WEEKEVENTREG_FLAG(59, 0x20) +#define WEEKEVENTREG_59_40 PACK_WEEKEVENTREG_FLAG(59, 0x40) +#define WEEKEVENTREG_59_80 PACK_WEEKEVENTREG_FLAG(59, 0x80) +#define WEEKEVENTREG_60_01 PACK_WEEKEVENTREG_FLAG(60, 0x01) +#define WEEKEVENTREG_60_02 PACK_WEEKEVENTREG_FLAG(60, 0x02) +#define WEEKEVENTREG_60_04 PACK_WEEKEVENTREG_FLAG(60, 0x04) +#define WEEKEVENTREG_60_08 PACK_WEEKEVENTREG_FLAG(60, 0x08) +#define WEEKEVENTREG_60_10 PACK_WEEKEVENTREG_FLAG(60, 0x10) +#define WEEKEVENTREG_60_20 PACK_WEEKEVENTREG_FLAG(60, 0x20) +#define WEEKEVENTREG_60_40 PACK_WEEKEVENTREG_FLAG(60, 0x40) +#define WEEKEVENTREG_60_80 PACK_WEEKEVENTREG_FLAG(60, 0x80) +#define WEEKEVENTREG_61_01 PACK_WEEKEVENTREG_FLAG(61, 0x01) +#define WEEKEVENTREG_61_02 PACK_WEEKEVENTREG_FLAG(61, 0x02) +#define WEEKEVENTREG_61_04 PACK_WEEKEVENTREG_FLAG(61, 0x04) +#define WEEKEVENTREG_61_08 PACK_WEEKEVENTREG_FLAG(61, 0x08) +#define WEEKEVENTREG_61_10 PACK_WEEKEVENTREG_FLAG(61, 0x10) +#define WEEKEVENTREG_61_20 PACK_WEEKEVENTREG_FLAG(61, 0x20) +#define WEEKEVENTREG_61_40 PACK_WEEKEVENTREG_FLAG(61, 0x40) +#define WEEKEVENTREG_61_80 PACK_WEEKEVENTREG_FLAG(61, 0x80) +#define WEEKEVENTREG_62_01 PACK_WEEKEVENTREG_FLAG(62, 0x01) +#define WEEKEVENTREG_62_02 PACK_WEEKEVENTREG_FLAG(62, 0x02) +#define WEEKEVENTREG_62_04 PACK_WEEKEVENTREG_FLAG(62, 0x04) +#define WEEKEVENTREG_62_08 PACK_WEEKEVENTREG_FLAG(62, 0x08) +#define WEEKEVENTREG_62_10 PACK_WEEKEVENTREG_FLAG(62, 0x10) +#define WEEKEVENTREG_62_20 PACK_WEEKEVENTREG_FLAG(62, 0x20) +#define WEEKEVENTREG_62_40 PACK_WEEKEVENTREG_FLAG(62, 0x40) +#define WEEKEVENTREG_62_80 PACK_WEEKEVENTREG_FLAG(62, 0x80) +#define WEEKEVENTREG_63_01 PACK_WEEKEVENTREG_FLAG(63, 0x01) +#define WEEKEVENTREG_63_02 PACK_WEEKEVENTREG_FLAG(63, 0x02) +#define WEEKEVENTREG_63_04 PACK_WEEKEVENTREG_FLAG(63, 0x04) +#define WEEKEVENTREG_63_08 PACK_WEEKEVENTREG_FLAG(63, 0x08) +#define WEEKEVENTREG_63_10 PACK_WEEKEVENTREG_FLAG(63, 0x10) +#define WEEKEVENTREG_63_20 PACK_WEEKEVENTREG_FLAG(63, 0x20) +#define WEEKEVENTREG_63_40 PACK_WEEKEVENTREG_FLAG(63, 0x40) + +// showed Couple's Mask to meeting +#define WEEKEVENTREG_63_80 PACK_WEEKEVENTREG_FLAG(63, 0x80) + +#define WEEKEVENTREG_64_01 PACK_WEEKEVENTREG_FLAG(64, 0x01) +#define WEEKEVENTREG_64_02 PACK_WEEKEVENTREG_FLAG(64, 0x02) +#define WEEKEVENTREG_64_04 PACK_WEEKEVENTREG_FLAG(64, 0x04) +#define WEEKEVENTREG_64_08 PACK_WEEKEVENTREG_FLAG(64, 0x08) +#define WEEKEVENTREG_64_10 PACK_WEEKEVENTREG_FLAG(64, 0x10) +#define WEEKEVENTREG_64_20 PACK_WEEKEVENTREG_FLAG(64, 0x20) +#define WEEKEVENTREG_64_40 PACK_WEEKEVENTREG_FLAG(64, 0x40) +#define WEEKEVENTREG_64_80 PACK_WEEKEVENTREG_FLAG(64, 0x80) +#define WEEKEVENTREG_65_01 PACK_WEEKEVENTREG_FLAG(65, 0x01) +#define WEEKEVENTREG_65_02 PACK_WEEKEVENTREG_FLAG(65, 0x02) +#define WEEKEVENTREG_65_04 PACK_WEEKEVENTREG_FLAG(65, 0x04) +#define WEEKEVENTREG_65_08 PACK_WEEKEVENTREG_FLAG(65, 0x08) +#define WEEKEVENTREG_65_10 PACK_WEEKEVENTREG_FLAG(65, 0x10) +#define WEEKEVENTREG_65_20 PACK_WEEKEVENTREG_FLAG(65, 0x20) +#define WEEKEVENTREG_65_40 PACK_WEEKEVENTREG_FLAG(65, 0x40) +#define WEEKEVENTREG_65_80 PACK_WEEKEVENTREG_FLAG(65, 0x80) +#define WEEKEVENTREG_66_01 PACK_WEEKEVENTREG_FLAG(66, 0x01) +#define WEEKEVENTREG_66_02 PACK_WEEKEVENTREG_FLAG(66, 0x02) +#define WEEKEVENTREG_66_04 PACK_WEEKEVENTREG_FLAG(66, 0x04) +#define WEEKEVENTREG_66_08 PACK_WEEKEVENTREG_FLAG(66, 0x08) +#define WEEKEVENTREG_66_10 PACK_WEEKEVENTREG_FLAG(66, 0x10) +#define WEEKEVENTREG_66_20 PACK_WEEKEVENTREG_FLAG(66, 0x20) +#define WEEKEVENTREG_66_40 PACK_WEEKEVENTREG_FLAG(66, 0x40) +#define WEEKEVENTREG_66_80 PACK_WEEKEVENTREG_FLAG(66, 0x80) +#define WEEKEVENTREG_67_01 PACK_WEEKEVENTREG_FLAG(67, 0x01) +#define WEEKEVENTREG_67_02 PACK_WEEKEVENTREG_FLAG(67, 0x02) +#define WEEKEVENTREG_67_04 PACK_WEEKEVENTREG_FLAG(67, 0x04) +#define WEEKEVENTREG_67_08 PACK_WEEKEVENTREG_FLAG(67, 0x08) +#define WEEKEVENTREG_67_10 PACK_WEEKEVENTREG_FLAG(67, 0x10) +#define WEEKEVENTREG_67_20 PACK_WEEKEVENTREG_FLAG(67, 0x20) +#define WEEKEVENTREG_67_40 PACK_WEEKEVENTREG_FLAG(67, 0x40) +#define WEEKEVENTREG_67_80 PACK_WEEKEVENTREG_FLAG(67, 0x80) +#define WEEKEVENTREG_68_01 PACK_WEEKEVENTREG_FLAG(68, 0x01) +#define WEEKEVENTREG_68_02 PACK_WEEKEVENTREG_FLAG(68, 0x02) +#define WEEKEVENTREG_68_04 PACK_WEEKEVENTREG_FLAG(68, 0x04) +#define WEEKEVENTREG_68_08 PACK_WEEKEVENTREG_FLAG(68, 0x08) +#define WEEKEVENTREG_68_10 PACK_WEEKEVENTREG_FLAG(68, 0x10) +#define WEEKEVENTREG_68_20 PACK_WEEKEVENTREG_FLAG(68, 0x20) +#define WEEKEVENTREG_68_40 PACK_WEEKEVENTREG_FLAG(68, 0x40) +#define WEEKEVENTREG_68_80 PACK_WEEKEVENTREG_FLAG(68, 0x80) +#define WEEKEVENTREG_69_01 PACK_WEEKEVENTREG_FLAG(69, 0x01) +#define WEEKEVENTREG_69_02 PACK_WEEKEVENTREG_FLAG(69, 0x02) +#define WEEKEVENTREG_69_04 PACK_WEEKEVENTREG_FLAG(69, 0x04) +#define WEEKEVENTREG_69_08 PACK_WEEKEVENTREG_FLAG(69, 0x08) +#define WEEKEVENTREG_69_10 PACK_WEEKEVENTREG_FLAG(69, 0x10) +#define WEEKEVENTREG_69_20 PACK_WEEKEVENTREG_FLAG(69, 0x20) +#define WEEKEVENTREG_69_40 PACK_WEEKEVENTREG_FLAG(69, 0x40) +#define WEEKEVENTREG_69_80 PACK_WEEKEVENTREG_FLAG(69, 0x80) +#define WEEKEVENTREG_70_01 PACK_WEEKEVENTREG_FLAG(70, 0x01) +#define WEEKEVENTREG_70_02 PACK_WEEKEVENTREG_FLAG(70, 0x02) +#define WEEKEVENTREG_70_04 PACK_WEEKEVENTREG_FLAG(70, 0x04) +#define WEEKEVENTREG_70_08 PACK_WEEKEVENTREG_FLAG(70, 0x08) +#define WEEKEVENTREG_70_10 PACK_WEEKEVENTREG_FLAG(70, 0x10) +#define WEEKEVENTREG_70_20 PACK_WEEKEVENTREG_FLAG(70, 0x20) +#define WEEKEVENTREG_70_40 PACK_WEEKEVENTREG_FLAG(70, 0x40) +#define WEEKEVENTREG_70_80 PACK_WEEKEVENTREG_FLAG(70, 0x80) +#define WEEKEVENTREG_71_01 PACK_WEEKEVENTREG_FLAG(71, 0x01) +#define WEEKEVENTREG_71_02 PACK_WEEKEVENTREG_FLAG(71, 0x02) +#define WEEKEVENTREG_71_04 PACK_WEEKEVENTREG_FLAG(71, 0x04) +#define WEEKEVENTREG_71_08 PACK_WEEKEVENTREG_FLAG(71, 0x08) +#define WEEKEVENTREG_71_10 PACK_WEEKEVENTREG_FLAG(71, 0x10) +#define WEEKEVENTREG_71_20 PACK_WEEKEVENTREG_FLAG(71, 0x20) +#define WEEKEVENTREG_71_40 PACK_WEEKEVENTREG_FLAG(71, 0x40) +#define WEEKEVENTREG_71_80 PACK_WEEKEVENTREG_FLAG(71, 0x80) +#define WEEKEVENTREG_72_01 PACK_WEEKEVENTREG_FLAG(72, 0x01) +#define WEEKEVENTREG_72_02 PACK_WEEKEVENTREG_FLAG(72, 0x02) +#define WEEKEVENTREG_72_04 PACK_WEEKEVENTREG_FLAG(72, 0x04) +#define WEEKEVENTREG_72_08 PACK_WEEKEVENTREG_FLAG(72, 0x08) +#define WEEKEVENTREG_72_10 PACK_WEEKEVENTREG_FLAG(72, 0x10) +#define WEEKEVENTREG_72_20 PACK_WEEKEVENTREG_FLAG(72, 0x20) +#define WEEKEVENTREG_72_40 PACK_WEEKEVENTREG_FLAG(72, 0x40) +#define WEEKEVENTREG_72_80 PACK_WEEKEVENTREG_FLAG(72, 0x80) +#define WEEKEVENTREG_73_01 PACK_WEEKEVENTREG_FLAG(73, 0x01) +#define WEEKEVENTREG_73_02 PACK_WEEKEVENTREG_FLAG(73, 0x02) +#define WEEKEVENTREG_73_04 PACK_WEEKEVENTREG_FLAG(73, 0x04) +#define WEEKEVENTREG_73_08 PACK_WEEKEVENTREG_FLAG(73, 0x08) + +// Unconfirmed: "Bombers Hide & Seek started on Day 1?" +#define WEEKEVENTREG_73_10 PACK_WEEKEVENTREG_FLAG(73, 0x10) + +#define WEEKEVENTREG_73_20 PACK_WEEKEVENTREG_FLAG(73, 0x20) +#define WEEKEVENTREG_73_40 PACK_WEEKEVENTREG_FLAG(73, 0x40) +#define WEEKEVENTREG_73_80 PACK_WEEKEVENTREG_FLAG(73, 0x80) +#define WEEKEVENTREG_74_01 PACK_WEEKEVENTREG_FLAG(74, 0x01) +#define WEEKEVENTREG_74_02 PACK_WEEKEVENTREG_FLAG(74, 0x02) +#define WEEKEVENTREG_74_04 PACK_WEEKEVENTREG_FLAG(74, 0x04) +#define WEEKEVENTREG_74_08 PACK_WEEKEVENTREG_FLAG(74, 0x08) +#define WEEKEVENTREG_74_10 PACK_WEEKEVENTREG_FLAG(74, 0x10) +#define WEEKEVENTREG_74_20 PACK_WEEKEVENTREG_FLAG(74, 0x20) +#define WEEKEVENTREG_74_40 PACK_WEEKEVENTREG_FLAG(74, 0x40) +#define WEEKEVENTREG_74_80 PACK_WEEKEVENTREG_FLAG(74, 0x80) +#define WEEKEVENTREG_75_01 PACK_WEEKEVENTREG_FLAG(75, 0x01) +#define WEEKEVENTREG_75_02 PACK_WEEKEVENTREG_FLAG(75, 0x02) +#define WEEKEVENTREG_75_04 PACK_WEEKEVENTREG_FLAG(75, 0x04) +#define WEEKEVENTREG_75_08 PACK_WEEKEVENTREG_FLAG(75, 0x08) +#define WEEKEVENTREG_75_10 PACK_WEEKEVENTREG_FLAG(75, 0x10) +#define WEEKEVENTREG_75_20 PACK_WEEKEVENTREG_FLAG(75, 0x20) +#define WEEKEVENTREG_75_40 PACK_WEEKEVENTREG_FLAG(75, 0x40) +#define WEEKEVENTREG_75_80 PACK_WEEKEVENTREG_FLAG(75, 0x80) +#define WEEKEVENTREG_76_01 PACK_WEEKEVENTREG_FLAG(76, 0x01) +#define WEEKEVENTREG_76_02 PACK_WEEKEVENTREG_FLAG(76, 0x02) +#define WEEKEVENTREG_76_04 PACK_WEEKEVENTREG_FLAG(76, 0x04) +#define WEEKEVENTREG_76_08 PACK_WEEKEVENTREG_FLAG(76, 0x08) +#define WEEKEVENTREG_76_10 PACK_WEEKEVENTREG_FLAG(76, 0x10) +#define WEEKEVENTREG_76_20 PACK_WEEKEVENTREG_FLAG(76, 0x20) +#define WEEKEVENTREG_76_40 PACK_WEEKEVENTREG_FLAG(76, 0x40) +#define WEEKEVENTREG_76_80 PACK_WEEKEVENTREG_FLAG(76, 0x80) +#define WEEKEVENTREG_77_01 PACK_WEEKEVENTREG_FLAG(77, 0x01) +#define WEEKEVENTREG_77_02 PACK_WEEKEVENTREG_FLAG(77, 0x02) +#define WEEKEVENTREG_77_04 PACK_WEEKEVENTREG_FLAG(77, 0x04) +#define WEEKEVENTREG_77_08 PACK_WEEKEVENTREG_FLAG(77, 0x08) +#define WEEKEVENTREG_77_10 PACK_WEEKEVENTREG_FLAG(77, 0x10) +#define WEEKEVENTREG_77_20 PACK_WEEKEVENTREG_FLAG(77, 0x20) +#define WEEKEVENTREG_77_40 PACK_WEEKEVENTREG_FLAG(77, 0x40) + +// The player has heard the Goron Shrine cheer as a Goron at least once. +#define WEEKEVENTREG_77_80 PACK_WEEKEVENTREG_FLAG(77, 0x80) + +#define WEEKEVENTREG_78_01 PACK_WEEKEVENTREG_FLAG(78, 0x01) +#define WEEKEVENTREG_78_02 PACK_WEEKEVENTREG_FLAG(78, 0x02) +#define WEEKEVENTREG_78_04 PACK_WEEKEVENTREG_FLAG(78, 0x04) +#define WEEKEVENTREG_78_08 PACK_WEEKEVENTREG_FLAG(78, 0x08) +#define WEEKEVENTREG_78_10 PACK_WEEKEVENTREG_FLAG(78, 0x10) +#define WEEKEVENTREG_78_20 PACK_WEEKEVENTREG_FLAG(78, 0x20) +#define WEEKEVENTREG_78_40 PACK_WEEKEVENTREG_FLAG(78, 0x40) +#define WEEKEVENTREG_78_80 PACK_WEEKEVENTREG_FLAG(78, 0x80) +#define WEEKEVENTREG_79_01 PACK_WEEKEVENTREG_FLAG(79, 0x01) +#define WEEKEVENTREG_79_02 PACK_WEEKEVENTREG_FLAG(79, 0x02) +#define WEEKEVENTREG_79_04 PACK_WEEKEVENTREG_FLAG(79, 0x04) +#define WEEKEVENTREG_79_08 PACK_WEEKEVENTREG_FLAG(79, 0x08) +#define WEEKEVENTREG_79_10 PACK_WEEKEVENTREG_FLAG(79, 0x10) +#define WEEKEVENTREG_79_20 PACK_WEEKEVENTREG_FLAG(79, 0x20) +#define WEEKEVENTREG_79_40 PACK_WEEKEVENTREG_FLAG(79, 0x40) +#define WEEKEVENTREG_79_80 PACK_WEEKEVENTREG_FLAG(79, 0x80) +#define WEEKEVENTREG_80_01 PACK_WEEKEVENTREG_FLAG(80, 0x01) +#define WEEKEVENTREG_80_02 PACK_WEEKEVENTREG_FLAG(80, 0x02) +#define WEEKEVENTREG_80_04 PACK_WEEKEVENTREG_FLAG(80, 0x04) +#define WEEKEVENTREG_80_08 PACK_WEEKEVENTREG_FLAG(80, 0x08) +#define WEEKEVENTREG_80_10 PACK_WEEKEVENTREG_FLAG(80, 0x10) +#define WEEKEVENTREG_80_20 PACK_WEEKEVENTREG_FLAG(80, 0x20) +#define WEEKEVENTREG_80_40 PACK_WEEKEVENTREG_FLAG(80, 0x40) +#define WEEKEVENTREG_80_80 PACK_WEEKEVENTREG_FLAG(80, 0x80) +#define WEEKEVENTREG_81_01 PACK_WEEKEVENTREG_FLAG(81, 0x01) +#define WEEKEVENTREG_81_02 PACK_WEEKEVENTREG_FLAG(81, 0x02) +#define WEEKEVENTREG_81_04 PACK_WEEKEVENTREG_FLAG(81, 0x04) +#define WEEKEVENTREG_81_08 PACK_WEEKEVENTREG_FLAG(81, 0x08) +#define WEEKEVENTREG_81_10 PACK_WEEKEVENTREG_FLAG(81, 0x10) +#define WEEKEVENTREG_81_20 PACK_WEEKEVENTREG_FLAG(81, 0x20) +#define WEEKEVENTREG_81_40 PACK_WEEKEVENTREG_FLAG(81, 0x40) +#define WEEKEVENTREG_81_80 PACK_WEEKEVENTREG_FLAG(81, 0x80) +#define WEEKEVENTREG_82_01 PACK_WEEKEVENTREG_FLAG(82, 0x01) +#define WEEKEVENTREG_82_02 PACK_WEEKEVENTREG_FLAG(82, 0x02) + +// check if already healed Kamaro the Dancing Ghost +#define WEEKEVENTREG_82_04 PACK_WEEKEVENTREG_FLAG(82, 0x04) + +#define WEEKEVENTREG_82_08 PACK_WEEKEVENTREG_FLAG(82, 0x08) +#define WEEKEVENTREG_82_10 PACK_WEEKEVENTREG_FLAG(82, 0x10) +#define WEEKEVENTREG_82_20 PACK_WEEKEVENTREG_FLAG(82, 0x20) +#define WEEKEVENTREG_82_40 PACK_WEEKEVENTREG_FLAG(82, 0x40) +#define WEEKEVENTREG_82_80 PACK_WEEKEVENTREG_FLAG(82, 0x80) +#define WEEKEVENTREG_83_01 PACK_WEEKEVENTREG_FLAG(83, 0x01) +#define WEEKEVENTREG_83_02 PACK_WEEKEVENTREG_FLAG(83, 0x02) +#define WEEKEVENTREG_83_04 PACK_WEEKEVENTREG_FLAG(83, 0x04) +#define WEEKEVENTREG_83_08 PACK_WEEKEVENTREG_FLAG(83, 0x08) +#define WEEKEVENTREG_83_10 PACK_WEEKEVENTREG_FLAG(83, 0x10) +#define WEEKEVENTREG_83_20 PACK_WEEKEVENTREG_FLAG(83, 0x20) +#define WEEKEVENTREG_83_40 PACK_WEEKEVENTREG_FLAG(83, 0x40) +#define WEEKEVENTREG_83_80 PACK_WEEKEVENTREG_FLAG(83, 0x80) +#define WEEKEVENTREG_84_01 PACK_WEEKEVENTREG_FLAG(84, 0x01) +#define WEEKEVENTREG_84_02 PACK_WEEKEVENTREG_FLAG(84, 0x02) +#define WEEKEVENTREG_84_04 PACK_WEEKEVENTREG_FLAG(84, 0x04) +#define WEEKEVENTREG_84_08 PACK_WEEKEVENTREG_FLAG(84, 0x08) +#define WEEKEVENTREG_84_10 PACK_WEEKEVENTREG_FLAG(84, 0x10) + +// Unconfirmed: "Obtained Fierce Deity's Mask?" +#define WEEKEVENTREG_84_20 PACK_WEEKEVENTREG_FLAG(84, 0x20) + +#define WEEKEVENTREG_84_40 PACK_WEEKEVENTREG_FLAG(84, 0x40) +#define WEEKEVENTREG_84_80 PACK_WEEKEVENTREG_FLAG(84, 0x80) +#define WEEKEVENTREG_85_01 PACK_WEEKEVENTREG_FLAG(85, 0x01) + +// Unconfirmed: "Bombers Hide & Seek in Progress" +#define WEEKEVENTREG_85_02 PACK_WEEKEVENTREG_FLAG(85, 0x02) + +#define WEEKEVENTREG_85_04 PACK_WEEKEVENTREG_FLAG(85, 0x04) +#define WEEKEVENTREG_85_08 PACK_WEEKEVENTREG_FLAG(85, 0x08) +#define WEEKEVENTREG_85_10 PACK_WEEKEVENTREG_FLAG(85, 0x10) +#define WEEKEVENTREG_85_20 PACK_WEEKEVENTREG_FLAG(85, 0x20) +#define WEEKEVENTREG_85_40 PACK_WEEKEVENTREG_FLAG(85, 0x40) + +// Unconfirmed: "Postman showing priority mail to Madame" +#define WEEKEVENTREG_85_80 PACK_WEEKEVENTREG_FLAG(85, 0x80) + +#define WEEKEVENTREG_86_01 PACK_WEEKEVENTREG_FLAG(86, 0x01) +#define WEEKEVENTREG_86_02 PACK_WEEKEVENTREG_FLAG(86, 0x02) +#define WEEKEVENTREG_86_04 PACK_WEEKEVENTREG_FLAG(86, 0x04) +#define WEEKEVENTREG_86_08 PACK_WEEKEVENTREG_FLAG(86, 0x08) +#define WEEKEVENTREG_86_10 PACK_WEEKEVENTREG_FLAG(86, 0x10) +#define WEEKEVENTREG_86_20 PACK_WEEKEVENTREG_FLAG(86, 0x20) +#define WEEKEVENTREG_86_40 PACK_WEEKEVENTREG_FLAG(86, 0x40) +#define WEEKEVENTREG_86_80 PACK_WEEKEVENTREG_FLAG(86, 0x80) +#define WEEKEVENTREG_87_01 PACK_WEEKEVENTREG_FLAG(87, 0x01) +#define WEEKEVENTREG_87_02 PACK_WEEKEVENTREG_FLAG(87, 0x02) +#define WEEKEVENTREG_87_04 PACK_WEEKEVENTREG_FLAG(87, 0x04) +#define WEEKEVENTREG_87_08 PACK_WEEKEVENTREG_FLAG(87, 0x08) +#define WEEKEVENTREG_87_10 PACK_WEEKEVENTREG_FLAG(87, 0x10) +#define WEEKEVENTREG_87_20 PACK_WEEKEVENTREG_FLAG(87, 0x20) +#define WEEKEVENTREG_87_40 PACK_WEEKEVENTREG_FLAG(87, 0x40) +#define WEEKEVENTREG_87_80 PACK_WEEKEVENTREG_FLAG(87, 0x80) +#define WEEKEVENTREG_88_01 PACK_WEEKEVENTREG_FLAG(88, 0x01) +#define WEEKEVENTREG_88_02 PACK_WEEKEVENTREG_FLAG(88, 0x02) +#define WEEKEVENTREG_88_04 PACK_WEEKEVENTREG_FLAG(88, 0x04) +#define WEEKEVENTREG_88_08 PACK_WEEKEVENTREG_FLAG(88, 0x08) +#define WEEKEVENTREG_88_10 PACK_WEEKEVENTREG_FLAG(88, 0x10) +#define WEEKEVENTREG_88_20 PACK_WEEKEVENTREG_FLAG(88, 0x20) +#define WEEKEVENTREG_88_40 PACK_WEEKEVENTREG_FLAG(88, 0x40) +#define WEEKEVENTREG_88_80 PACK_WEEKEVENTREG_FLAG(88, 0x80) +#define WEEKEVENTREG_89_01 PACK_WEEKEVENTREG_FLAG(89, 0x01) +#define WEEKEVENTREG_89_02 PACK_WEEKEVENTREG_FLAG(89, 0x02) +#define WEEKEVENTREG_89_04 PACK_WEEKEVENTREG_FLAG(89, 0x04) + +// Unconfirmed: "Postman has delivered priority mail" +#define WEEKEVENTREG_89_08 PACK_WEEKEVENTREG_FLAG(89, 0x08) + +#define WEEKEVENTREG_89_10 PACK_WEEKEVENTREG_FLAG(89, 0x10) +#define WEEKEVENTREG_89_20 PACK_WEEKEVENTREG_FLAG(89, 0x20) + +// Unconfirmed: "Postman is about to flee" +#define WEEKEVENTREG_89_40 PACK_WEEKEVENTREG_FLAG(89, 0x40) + +#define WEEKEVENTREG_89_80 PACK_WEEKEVENTREG_FLAG(89, 0x80) + +// Unconfirmed: "Postman fleeing town" +#define WEEKEVENTREG_90_01 PACK_WEEKEVENTREG_FLAG(90, 0x01) + +#define WEEKEVENTREG_90_02 PACK_WEEKEVENTREG_FLAG(90, 0x02) +#define WEEKEVENTREG_90_04 PACK_WEEKEVENTREG_FLAG(90, 0x04) +#define WEEKEVENTREG_90_08 PACK_WEEKEVENTREG_FLAG(90, 0x08) +#define WEEKEVENTREG_90_10 PACK_WEEKEVENTREG_FLAG(90, 0x10) +#define WEEKEVENTREG_90_20 PACK_WEEKEVENTREG_FLAG(90, 0x20) +#define WEEKEVENTREG_90_40 PACK_WEEKEVENTREG_FLAG(90, 0x40) +#define WEEKEVENTREG_90_80 PACK_WEEKEVENTREG_FLAG(90, 0x80) +#define WEEKEVENTREG_91_01 PACK_WEEKEVENTREG_FLAG(91, 0x01) +#define WEEKEVENTREG_91_02 PACK_WEEKEVENTREG_FLAG(91, 0x02) +#define WEEKEVENTREG_91_04 PACK_WEEKEVENTREG_FLAG(91, 0x04) +#define WEEKEVENTREG_91_08 PACK_WEEKEVENTREG_FLAG(91, 0x08) +#define WEEKEVENTREG_91_10 PACK_WEEKEVENTREG_FLAG(91, 0x10) +#define WEEKEVENTREG_91_20 PACK_WEEKEVENTREG_FLAG(91, 0x20) +#define WEEKEVENTREG_91_40 PACK_WEEKEVENTREG_FLAG(91, 0x40) +#define WEEKEVENTREG_91_80 PACK_WEEKEVENTREG_FLAG(91, 0x80) + +// RACE_FLAGS +//#define WEEKEVENTREG_92_01 PACK_WEEKEVENTREG_FLAG(92, 0x01) +//#define WEEKEVENTREG_92_02 PACK_WEEKEVENTREG_FLAG(92, 0x02) +//#define WEEKEVENTREG_92_04 PACK_WEEKEVENTREG_FLAG(92, 0x04) + +#define WEEKEVENTREG_92_08 PACK_WEEKEVENTREG_FLAG(92, 0x08) +#define WEEKEVENTREG_92_10 PACK_WEEKEVENTREG_FLAG(92, 0x10) +#define WEEKEVENTREG_92_20 PACK_WEEKEVENTREG_FLAG(92, 0x20) +#define WEEKEVENTREG_92_40 PACK_WEEKEVENTREG_FLAG(92, 0x40) +#define WEEKEVENTREG_92_80 PACK_WEEKEVENTREG_FLAG(92, 0x80) +#define WEEKEVENTREG_93_01 PACK_WEEKEVENTREG_FLAG(93, 0x01) +#define WEEKEVENTREG_93_02 PACK_WEEKEVENTREG_FLAG(93, 0x02) +#define WEEKEVENTREG_93_04 PACK_WEEKEVENTREG_FLAG(93, 0x04) +#define WEEKEVENTREG_93_08 PACK_WEEKEVENTREG_FLAG(93, 0x08) +#define WEEKEVENTREG_93_10 PACK_WEEKEVENTREG_FLAG(93, 0x10) +#define WEEKEVENTREG_93_20 PACK_WEEKEVENTREG_FLAG(93, 0x20) +#define WEEKEVENTREG_93_40 PACK_WEEKEVENTREG_FLAG(93, 0x40) +#define WEEKEVENTREG_93_80 PACK_WEEKEVENTREG_FLAG(93, 0x80) +#define WEEKEVENTREG_94_01 PACK_WEEKEVENTREG_FLAG(94, 0x01) +#define WEEKEVENTREG_94_02 PACK_WEEKEVENTREG_FLAG(94, 0x02) +#define WEEKEVENTREG_94_04 PACK_WEEKEVENTREG_FLAG(94, 0x04) +#define WEEKEVENTREG_94_08 PACK_WEEKEVENTREG_FLAG(94, 0x08) +#define WEEKEVENTREG_94_10 PACK_WEEKEVENTREG_FLAG(94, 0x10) +#define WEEKEVENTREG_94_20 PACK_WEEKEVENTREG_FLAG(94, 0x20) +#define WEEKEVENTREG_94_40 PACK_WEEKEVENTREG_FLAG(94, 0x40) +#define WEEKEVENTREG_94_80 PACK_WEEKEVENTREG_FLAG(94, 0x80) +#define WEEKEVENTREG_95_01 PACK_WEEKEVENTREG_FLAG(95, 0x01) +#define WEEKEVENTREG_95_02 PACK_WEEKEVENTREG_FLAG(95, 0x02) +#define WEEKEVENTREG_95_04 PACK_WEEKEVENTREG_FLAG(95, 0x04) +#define WEEKEVENTREG_95_08 PACK_WEEKEVENTREG_FLAG(95, 0x08) +#define WEEKEVENTREG_95_10 PACK_WEEKEVENTREG_FLAG(95, 0x10) +#define WEEKEVENTREG_95_20 PACK_WEEKEVENTREG_FLAG(95, 0x20) +#define WEEKEVENTREG_95_40 PACK_WEEKEVENTREG_FLAG(95, 0x40) +#define WEEKEVENTREG_95_80 PACK_WEEKEVENTREG_FLAG(95, 0x80) +#define WEEKEVENTREG_96_01 PACK_WEEKEVENTREG_FLAG(96, 0x01) +#define WEEKEVENTREG_96_02 PACK_WEEKEVENTREG_FLAG(96, 0x02) +#define WEEKEVENTREG_96_04 PACK_WEEKEVENTREG_FLAG(96, 0x04) +#define WEEKEVENTREG_96_08 PACK_WEEKEVENTREG_FLAG(96, 0x08) +#define WEEKEVENTREG_96_10 PACK_WEEKEVENTREG_FLAG(96, 0x10) +#define WEEKEVENTREG_96_20 PACK_WEEKEVENTREG_FLAG(96, 0x20) +#define WEEKEVENTREG_96_40 PACK_WEEKEVENTREG_FLAG(96, 0x40) +#define WEEKEVENTREG_96_80 PACK_WEEKEVENTREG_FLAG(96, 0x80) +#define WEEKEVENTREG_97_01 PACK_WEEKEVENTREG_FLAG(97, 0x01) +#define WEEKEVENTREG_97_02 PACK_WEEKEVENTREG_FLAG(97, 0x02) +#define WEEKEVENTREG_97_04 PACK_WEEKEVENTREG_FLAG(97, 0x04) +#define WEEKEVENTREG_97_08 PACK_WEEKEVENTREG_FLAG(97, 0x08) +#define WEEKEVENTREG_97_10 PACK_WEEKEVENTREG_FLAG(97, 0x10) +#define WEEKEVENTREG_97_20 PACK_WEEKEVENTREG_FLAG(97, 0x20) +#define WEEKEVENTREG_97_40 PACK_WEEKEVENTREG_FLAG(97, 0x40) +#define WEEKEVENTREG_97_80 PACK_WEEKEVENTREG_FLAG(97, 0x80) +#define WEEKEVENTREG_98_01 PACK_WEEKEVENTREG_FLAG(98, 0x01) +#define WEEKEVENTREG_98_02 PACK_WEEKEVENTREG_FLAG(98, 0x02) +#define WEEKEVENTREG_98_04 PACK_WEEKEVENTREG_FLAG(98, 0x04) +#define WEEKEVENTREG_98_08 PACK_WEEKEVENTREG_FLAG(98, 0x08) +#define WEEKEVENTREG_98_10 PACK_WEEKEVENTREG_FLAG(98, 0x10) +#define WEEKEVENTREG_98_20 PACK_WEEKEVENTREG_FLAG(98, 0x20) +#define WEEKEVENTREG_98_40 PACK_WEEKEVENTREG_FLAG(98, 0x40) +#define WEEKEVENTREG_98_80 PACK_WEEKEVENTREG_FLAG(98, 0x80) +#define WEEKEVENTREG_99_01 PACK_WEEKEVENTREG_FLAG(99, 0x01) +#define WEEKEVENTREG_99_02 PACK_WEEKEVENTREG_FLAG(99, 0x02) +#define WEEKEVENTREG_99_04 PACK_WEEKEVENTREG_FLAG(99, 0x04) +#define WEEKEVENTREG_99_08 PACK_WEEKEVENTREG_FLAG(99, 0x08) +#define WEEKEVENTREG_99_10 PACK_WEEKEVENTREG_FLAG(99, 0x10) +#define WEEKEVENTREG_99_20 PACK_WEEKEVENTREG_FLAG(99, 0x20) +#define WEEKEVENTREG_99_40 PACK_WEEKEVENTREG_FLAG(99, 0x40) +#define WEEKEVENTREG_99_80 PACK_WEEKEVENTREG_FLAG(99, 0x80) + +#define WEEKEVENTREG(index) (gSaveContext.save.weekEventReg[(index)]) +#define GET_WEEKEVENTREG(index) ((void)0, WEEKEVENTREG(index)) + +#define CHECK_WEEKEVENTREG(flag) (WEEKEVENTREG((flag) >> 8) & ((flag) & 0xFF)) +#define CHECK_WEEKEVENTREG_ALT(flag) (GET_WEEKEVENTREG((flag) >> 8) & ((flag) & 0xFF)) +#define SET_WEEKEVENTREG(flag) (WEEKEVENTREG((flag) >> 8) = GET_WEEKEVENTREG((flag) >> 8) | ((flag) & 0xFF)) +#define CLEAR_WEEKEVENTREG(flag) (WEEKEVENTREG((flag) >> 8) = GET_WEEKEVENTREG((flag) >> 8) & (u8)~((flag) & 0xFF)) + +#define WEEKEVENTREG_RACE_FLAG_END 0 +#define WEEKEVENTREG_RACE_FLAG_START 1 +#define WEEKEVENTREG_RACE_FLAG_2 2 +#define WEEKEVENTREG_RACE_FLAG_3 3 +#define WEEKEVENTREG_RACE_FLAG_4 4 +#define WEEKEVENTREG_RACE_FLAGS 7 + +#define GET_WEEKEVENTREG_RACE_FLAGS (WEEKEVENTREG(92) & WEEKEVENTREG_RACE_FLAGS) + +#define SET_WEEKEVENTREG_RACE_FLAGS(flag) \ + WEEKEVENTREG(92) &= (u8)~WEEKEVENTREG_RACE_FLAGS; \ + WEEKEVENTREG(92) = WEEKEVENTREG(92) | (u8)((WEEKEVENTREG(92) & ~WEEKEVENTREG_RACE_FLAGS) | (flag)) + +/** + * gSaveContext.eventInf + */ + +#define EVENTINF_00 0x00 +#define EVENTINF_01 0x01 +#define EVENTINF_02 0x02 +#define EVENTINF_03 0x03 +#define EVENTINF_04 0x04 +#define EVENTINF_05 0x05 +#define EVENTINF_06 0x06 +#define EVENTINF_07 0x07 +#define EVENTINF_10 0x10 +#define EVENTINF_11 0x11 +#define EVENTINF_12 0x12 +#define EVENTINF_13 0x13 +#define EVENTINF_14 0x14 +#define EVENTINF_15 0x15 +#define EVENTINF_16 0x16 +#define EVENTINF_17 0x17 +#define EVENTINF_20 0x20 +#define EVENTINF_21 0x21 +#define EVENTINF_22 0x22 +#define EVENTINF_23 0x23 +#define EVENTINF_24 0x24 +#define EVENTINF_25 0x25 +#define EVENTINF_26 0x26 +#define EVENTINF_27 0x27 +#define EVENTINF_30 0x30 + +// EVENTINF_31 is used to track if Player is within range of EnGakufu (2D Song Buttons Appearing on Wall) +#define EVENTINF_31 0x31 +// EVENTINF_32 is used to track if Player has played the notes of EnGakufu (2D Song Buttons Appearing on Wall) +#define EVENTINF_32 0x32 + +#define EVENTINF_33 0x33 +#define EVENTINF_34 0x34 +#define EVENTINF_35 0x35 +#define EVENTINF_36 0x36 +#define EVENTINF_37 0x37 +#define EVENTINF_40 0x40 +#define EVENTINF_41 0x41 +#define EVENTINF_42 0x42 +#define EVENTINF_43 0x43 +#define EVENTINF_44 0x44 +#define EVENTINF_45 0x45 +#define EVENTINF_46 0x46 +#define EVENTINF_47 0x47 +#define EVENTINF_50 0x50 +#define EVENTINF_51 0x51 +#define EVENTINF_52 0x52 +#define EVENTINF_53 0x53 +#define EVENTINF_54 0x54 +#define EVENTINF_55 0x55 + +// Enabled when Gyorg's intro cutscene has been watched +#define EVENTINF_56 0x56 + +#define EVENTINF_57 0x57 +#define EVENTINF_60 0x60 +#define EVENTINF_61 0x61 +#define EVENTINF_62 0x62 +#define EVENTINF_63 0x63 +#define EVENTINF_64 0x64 +#define EVENTINF_65 0x65 +#define EVENTINF_66 0x66 +#define EVENTINF_67 0x67 +#define EVENTINF_70 0x70 +#define EVENTINF_71 0x71 +#define EVENTINF_72 0x72 +#define EVENTINF_73 0x73 +#define EVENTINF_74 0x74 +#define EVENTINF_75 0x75 +#define EVENTINF_76 0x76 +#define EVENTINF_77 0x77 + +#define CHECK_EVENTINF(flag) (gSaveContext.eventInf[(flag) >> 4] & (1 << ((flag) & 0xF))) +#define SET_EVENTINF(flag) (gSaveContext.eventInf[(flag) >> 4] |= (1 << ((flag) & 0xF))) +#define CLEAR_EVENTINF(flag) (gSaveContext.eventInf[(flag) >> 4] &= (u8)~(1 << ((flag) & 0xF))) +#define CLEAR_EVENTINF_ALT(flag) (gSaveContext.eventInf[(flag) >> 4] &= ~(1 << ((flag) & 0xF))) + + typedef enum { /* 0 */ DUNGEON_INDEX_WOODFALL_TEMPLE, /* 1 */ DUNGEON_INDEX_SNOWHEAD_TEMPLE, diff --git a/include/z64schedule.h b/include/z64schedule.h index 69906e584..f3a703f3c 100644 --- a/include/z64schedule.h +++ b/include/z64schedule.h @@ -28,7 +28,7 @@ */ // Macro to convert the time format used in the save struct into the format used in Schedule -#define SCHEDULE_CONVERT_TIME(time) ((time) - 0x10000 / 360 * 90) +#define SCHEDULE_CONVERT_TIME(time) ((u16)((time) - 0x10000 / 360 * 90)) #define SCHEDULE_TIME_NOW SCHEDULE_CONVERT_TIME(gSaveContext.save.time) typedef enum { @@ -196,11 +196,11 @@ typedef struct { #define SCHEDULE_PACK_S16(val) \ ((val) >> 8) & 0xFF, (val) & 0xFF -#define SCHEDULE_CMD_CHECK_FLAG_S(index, mask, offset) \ - SCHEDULE_CMD_ID_CHECK_FLAG_S, (index), (mask), (offset) +#define SCHEDULE_CMD_CHECK_FLAG_S(flag, offset) \ + SCHEDULE_CMD_ID_CHECK_FLAG_S, SCHEDULE_PACK_S16(flag), (offset) -#define SCHEDULE_CMD_CHECK_FLAG_L(index, mask, offset) \ - SCHEDULE_CMD_ID_CHECK_FLAG_L, (index), (mask), SCHEDULE_PACK_S16(offset) +#define SCHEDULE_CMD_CHECK_FLAG_L(flag, offset) \ + SCHEDULE_CMD_ID_CHECK_FLAG_L, SCHEDULE_PACK_S16(flag), SCHEDULE_PACK_S16(offset) #define SCHEDULE_CMD_CHECK_TIME_RANGE_S(startHr, startMin, endHr, endMin, offset) \ SCHEDULE_CMD_ID_CHECK_TIME_RANGE_S, (startHr), (startMin), (endHr), (endMin), (offset) diff --git a/requirements.txt b/requirements.txt index d410bc853..6b391b170 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,6 +5,9 @@ colorama>=0.4.3 # disasm rabbitizer>=1.0.0,<2.0.0 +# Compression +pyelftools>=0.26 + # diff watchdog>=0.10.2 argcomplete diff --git a/spec b/spec index f11ef25a0..d92392235 100644 --- a/spec +++ b/spec @@ -2672,9 +2672,7 @@ beginseg name "ovl_En_Test3" compress include "build/src/overlays/actors/ovl_En_Test3/z_en_test3.o" - include "build/data/ovl_En_Test3/ovl_En_Test3.data.o" - include "build/data/ovl_En_Test3/ovl_En_Test3.bss.o" - include "build/data/ovl_En_Test3/ovl_En_Test3.reloc.o" + include "build/src/overlays/actors/ovl_En_Test3/ovl_En_Test3_reloc.o" endseg beginseg @@ -2950,8 +2948,7 @@ beginseg name "ovl_En_Egol" compress include "build/src/overlays/actors/ovl_En_Egol/z_en_egol.o" - include "build/data/ovl_En_Egol/ovl_En_Egol.data.o" - include "build/data/ovl_En_Egol/ovl_En_Egol.reloc.o" + include "build/src/overlays/actors/ovl_En_Egol/ovl_En_Egol_reloc.o" endseg beginseg @@ -3013,8 +3010,7 @@ beginseg name "ovl_En_Estone" compress include "build/src/overlays/actors/ovl_En_Estone/z_en_estone.o" - include "build/data/ovl_En_Estone/ovl_En_Estone.data.o" - include "build/data/ovl_En_Estone/ovl_En_Estone.reloc.o" + include "build/src/overlays/actors/ovl_En_Estone/ovl_En_Estone_reloc.o" endseg beginseg @@ -3127,8 +3123,7 @@ beginseg name "ovl_En_Egblock" compress include "build/src/overlays/actors/ovl_En_Egblock/z_en_egblock.o" - include "build/data/ovl_En_Egblock/ovl_En_Egblock.data.o" - include "build/data/ovl_En_Egblock/ovl_En_Egblock.reloc.o" + include "build/src/overlays/actors/ovl_En_Egblock/ovl_En_Egblock_reloc.o" endseg beginseg @@ -4024,8 +4019,7 @@ beginseg name "ovl_En_Kaizoku" compress include "build/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.o" - include "build/data/ovl_En_Kaizoku/ovl_En_Kaizoku.data.o" - include "build/data/ovl_En_Kaizoku/ovl_En_Kaizoku.reloc.o" + include "build/src/overlays/actors/ovl_En_Kaizoku/ovl_En_Kaizoku_reloc.o" endseg beginseg @@ -4421,11 +4415,7 @@ beginseg name "ovl_Bg_Ikana_Bombwall" compress include "build/src/overlays/actors/ovl_Bg_Ikana_Bombwall/z_bg_ikana_bombwall.o" -#ifdef NON_MATCHING include "build/src/overlays/actors/ovl_Bg_Ikana_Bombwall/ovl_Bg_Ikana_Bombwall_reloc.o" -#else - include "build/data/ovl_Bg_Ikana_Bombwall/ovl_Bg_Ikana_Bombwall.reloc.o" -#endif endseg beginseg @@ -4446,11 +4436,7 @@ beginseg name "ovl_Bg_Haka_Bombwall" compress include "build/src/overlays/actors/ovl_Bg_Haka_Bombwall/z_bg_haka_bombwall.o" - #ifdef NON_MATCHING - include "build/src/overlays/actors/ovl_Bg_Haka_Bombwall/ovl_Bg_Haka_Bombwall_reloc.o" - #else - include "build/data/ovl_Bg_Haka_Bombwall/ovl_Bg_Haka_Bombwall.reloc.o" - #endif + include "build/src/overlays/actors/ovl_Bg_Haka_Bombwall/ovl_Bg_Haka_Bombwall_reloc.o" endseg beginseg diff --git a/src/code/PreRender.c b/src/code/PreRender.c index ea8c8dd24..34f22af61 100644 --- a/src/code/PreRender.c +++ b/src/code/PreRender.c @@ -229,14 +229,11 @@ void func_80170798(PreRender* this, Gfx** gfxp) { gDPLoadMultiTile(gfx++, this->fbufSave, 0x0000, G_TX_RENDERTILE, G_IM_FMT_RGBA, G_IM_SIZ_16b, this->width, this->height, uls, ult, lrs, lrt, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - if (1) {} gDPLoadMultiTile(gfx++, this->cvgSave, 0x0160, rtile, G_IM_FMT_I, G_IM_SIZ_8b, this->width, this->height, uls, ult, lrs, lrt, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); //! FAKE if (1) {} - // The two if (1) {}'s above can be removed with do {} while(0) around macros - if (1) {} if (1) {} gSPTextureRectangle(gfx++, uls << 2, ult << 2, (lrs + 1) << 2, (lrt + 1) << 2, G_TX_RENDERTILE, uls << 5, ult << 5, 1 << 10, 1 << 10); diff --git a/src/code/game.c b/src/code/game.c index 73352379f..b7069d312 100644 --- a/src/code/game.c +++ b/src/code/game.c @@ -1,6 +1,7 @@ #include "global.h" #include "system_malloc.h" #include "z64rumble.h" +#include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" s32 gFramerateDivisor = 1; f32 gFramerateDivisorF = 1.0f; @@ -140,7 +141,7 @@ void Game_Update(GameState* gameState) { gameState->main(gameState); - if (R_PAUSE_MENU_MODE != 2) { + if (R_PAUSE_BG_PRERENDER_STATE != PAUSE_BG_PRERENDER_PROCESS) { GameState_Draw(gameState, gfxCtx); func_801736DC(gfxCtx); } diff --git a/src/code/sys_math_atan.c b/src/code/sys_math_atan.c index d68e1e293..72383b6b9 100644 --- a/src/code/sys_math_atan.c +++ b/src/code/sys_math_atan.c @@ -130,10 +130,12 @@ f32 Math_Atan2F(f32 y, f32 x) { return Math_Atan2S(y, x) * (M_PI / 0x8000); } -s16 Math_FAtan2F(f32 adjacent, f32 opposite) { - return Math_Atan2S(opposite, adjacent); +// Match the OoT implementation of Math_Atan2S +s16 Math_Atan2S_XY(f32 x, f32 y) { + return Math_Atan2S(y, x); } -f32 Math_Acot2F(f32 adjacent, f32 opposite) { - return Math_Atan2F(opposite, adjacent); +// Match the OoT implementation of Math_Atan2F +f32 Math_Atan2F_XY(f32 x, f32 y) { + return Math_Atan2F(y, x); } diff --git a/src/code/sys_matrix.c b/src/code/sys_matrix.c index 4e517c810..f2ed19c38 100644 --- a/src/code/sys_matrix.c +++ b/src/code/sys_matrix.c @@ -38,7 +38,7 @@ * Throughout this file, `mode` indicates whether to multiply the matrix on top of the stack by the new construction * (APPLY), or to just overwrite it (NEW). */ -#include "prevent_bss_reordering.h" + #include "global.h" /* data */ diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 1a2404c1a..0483d097e 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -151,7 +151,7 @@ void ActorShadow_DrawFoot(PlayState* play, Light* light, MtxF* arg2, s32 lightNu dir0 = light->l.dir[0]; dir2 = light->l.dir[2]; - sp58 = Math_FAtan2F(dir2, dir0); + sp58 = Math_Atan2S_XY(dir2, dir0); shadowScaleZ *= (4.5f - (light->l.dir[1] * 0.035f)); shadowScaleZ = CLAMP_MIN(shadowScaleZ, 1.0f); Matrix_Put(arg2); @@ -520,7 +520,7 @@ void Actor_DrawZTarget(TargetContext* targetCtx, PlayState* play) { Target_SetPos(targetCtx, targetCtx->unk4C, projectedPos.x, projectedPos.y, projectedPos.z); - if ((!(player->stateFlags1 & PLAYER_STATE1_40)) || (actor != player->unk_730)) { + if ((!(player->stateFlags1 & PLAYER_STATE1_40)) || (actor != player->targetedActor)) { OVERLAY_DISP = Gfx_CallSetupDL(OVERLAY_DISP, 0x39); for (spB0 = 0, spAC = targetCtx->unk4C; spB0 < spB8; spB0++, spAC = (spAC + 1) % 3) { @@ -589,7 +589,7 @@ void func_800B5814(TargetContext* targetCtx, Player* player, Actor* actor, GameS Vec3f projectedPos; f32 invW; - if ((player->unk_730 != 0) && (player->unk_AE3[player->unk_ADE] == 2)) { + if ((player->targetedActor != NULL) && (player->unk_AE3[player->unk_ADE] == 2)) { targetCtx->unk_94 = NULL; } else { func_800BB8EC(gameState, &play->actorCtx, &sp68, &D_801ED920, player); @@ -1328,7 +1328,7 @@ s32 func_800B7118(Player* player) { } s32 func_800B7128(Player* player) { - return func_800B7118(player) && player->unk_ACC; + return func_800B7118(player) && (player->unk_ACC != 0); } s32 func_800B715C(PlayState* play) { @@ -1354,7 +1354,7 @@ void Actor_MountHorse(PlayState* play, Player* player, Actor* horse) { } s32 func_800B7200(Player* player) { - return (player->stateFlags1 & (PLAYER_STATE1_20000000 | PLAYER_STATE1_80)) || (player->csMode != 0); + return (player->stateFlags1 & (PLAYER_STATE1_80 | PLAYER_STATE1_20000000)) || (player->csMode != PLAYER_CSMODE_0); } void func_800B722C(GameState* gameState, Player* player) { @@ -1364,7 +1364,7 @@ void func_800B722C(GameState* gameState, Player* player) { s32 func_800B724C(PlayState* play, Actor* actor, u8 csMode) { Player* player = GET_PLAYER(play); - if ((player->csMode == 5) || ((csMode == 6) && (player->csMode == 0))) { + if ((player->csMode == PLAYER_CSMODE_5) || ((csMode == PLAYER_CSMODE_6) && (player->csMode == PLAYER_CSMODE_0))) { return false; } @@ -1374,7 +1374,7 @@ s32 func_800B724C(PlayState* play, Actor* actor, u8 csMode) { return true; } -u32 func_800B7298(PlayState* play, Actor* actor, u8 csMode) { +s32 func_800B7298(PlayState* play, Actor* actor, u8 csMode) { Player* player = GET_PLAYER(play); if (func_800B724C(play, actor, csMode)) { @@ -1489,11 +1489,11 @@ s32 Actor_ActorAIsFacingAndNearActorB(Actor* actorA, Actor* actorB, f32 range, s /* Start of BgCheck related section */ -void func_800B75A0(CollisionPoly* poly, Vec3f* normal, s16* azimuth) { - normal->x = COLPOLY_GET_NORMAL(poly->normal.x); - normal->y = COLPOLY_GET_NORMAL(poly->normal.y); - normal->z = COLPOLY_GET_NORMAL(poly->normal.z); - *azimuth = Math_FAtan2F(normal->z, normal->x); +void Actor_GetSlopeDirection(CollisionPoly* floorPoly, Vec3f* slopeNormal, s16* downwardSlopeYaw) { + slopeNormal->x = COLPOLY_GET_NORMAL(floorPoly->normal.x); + slopeNormal->y = COLPOLY_GET_NORMAL(floorPoly->normal.y); + slopeNormal->z = COLPOLY_GET_NORMAL(floorPoly->normal.z); + *downwardSlopeYaw = Math_Atan2S_XY(slopeNormal->z, slopeNormal->x); } s32 func_800B761C(Actor* actor, f32 arg1, s32 arg2) { @@ -1590,7 +1590,7 @@ void Actor_UpdateBgCheckInfo(PlayState* play, Actor* actor, f32 wallCheckHeight, Math_Vec3f_Copy(&actor->world.pos, &pos); } - actor->wallYaw = Math_FAtan2F(sp7C->normal.z, sp7C->normal.x); + actor->wallYaw = Math_Atan2S_XY(sp7C->normal.z, sp7C->normal.x); actor->wallBgId = bgId; } else { actor->bgCheckFlags &= ~8; @@ -1721,16 +1721,14 @@ void func_800B8050(Actor* actor, PlayState* play, s32 flag) { Hilite* hilite = func_800BCBF4(&actor->world.pos, play); if (flag != 0) { - Gfx* displayListHead; - Gfx* displayList = GRAPH_ALLOC(play->state.gfxCtx, 2 * sizeof(Gfx)); - - displayListHead = displayList; + Gfx* gfxHead = GRAPH_ALLOC(play->state.gfxCtx, 2 * sizeof(Gfx)); + Gfx* gfx = gfxHead; OPEN_DISPS(play->state.gfxCtx); - gDPSetHilite1Tile(displayListHead++, 1, hilite, 0x10, 0x10); - gSPEndDisplayList(displayListHead); - gSPSegment(POLY_OPA_DISP++, 0x07, displayList); + gDPSetHilite1Tile(gfx++, 1, hilite, 0x10, 0x10); + gSPEndDisplayList(gfx++); + gSPSegment(POLY_OPA_DISP++, 0x07, gfxHead); CLOSE_DISPS(play->state.gfxCtx); } @@ -1740,16 +1738,14 @@ void func_800B8118(Actor* actor, PlayState* play, s32 flag) { Hilite* hilite = func_800BCC68(&actor->world.pos, play); if (flag != 0) { - Gfx* displayListHead; - Gfx* displayList = GRAPH_ALLOC(play->state.gfxCtx, 2 * sizeof(Gfx)); - - displayListHead = displayList; + Gfx* gfxHead = GRAPH_ALLOC(play->state.gfxCtx, 2 * sizeof(Gfx)); + Gfx* gfx = gfxHead; OPEN_DISPS(play->state.gfxCtx); - gDPSetHilite1Tile(displayListHead++, 1, hilite, 0x10, 0x10); - gSPEndDisplayList(displayListHead); - gSPSegment(POLY_XLU_DISP++, 0x07, displayList); + gDPSetHilite1Tile(gfx++, 1, hilite, 0x10, 0x10); + gSPEndDisplayList(gfx++); + gSPSegment(POLY_XLU_DISP++, 0x07, gfxHead); CLOSE_DISPS(play->state.gfxCtx); } @@ -1787,7 +1783,7 @@ f32 func_800B82EC(Actor* actor, Player* player, s16 angle) { s16 temp_v0 = BINANG_SUB(BINANG_SUB(actor->yawTowardsPlayer, 0x8000), angle); s16 yaw = ABS_ALT(temp_v0); - if (player->unk_730 != NULL) { + if (player->targetedActor != NULL) { if ((yaw > 0x4000) || ((actor->flags & ACTOR_FLAG_8000000))) { return FLT_MAX; } @@ -1825,7 +1821,7 @@ s32 func_800B83F8(Actor* actor, Player* player, s32 flag) { s16 phi_v1 = ABS_ALT(yaw); f32 dist; - if ((player->unk_730 == NULL) && (phi_v1 >= 0x2AAB)) { + if ((player->targetedActor == NULL) && (phi_v1 >= 0x2AAB)) { dist = FLT_MAX; } else { dist = actor->xyzDistToPlayerSq; @@ -1852,30 +1848,30 @@ s32 Actor_ProcessTalkRequest(Actor* actor, GameState* gameState) { // Actor_PickUpExchange? Seems to be called with exchangeItemId -1 if the same actor used Actor_PickUp // This function is also used to toggle the "Speak" action on the A button -s32 func_800B8500(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, PlayerActionParam exchangeItemId) { +s32 func_800B8500(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, PlayerItemAction exchangeItemId) { Player* player = GET_PLAYER(play); - if ((player->actor.flags & ACTOR_FLAG_100) || ((exchangeItemId > PLAYER_AP_NONE) && Player_InCsMode(play)) || + if ((player->actor.flags & ACTOR_FLAG_100) || ((exchangeItemId > PLAYER_IA_NONE) && Player_InCsMode(play)) || (!actor->isTargeted && - ((fabsf(actor->playerHeightRel) > fabsf(yRange)) || ((actor->xzDistToPlayer > player->targetActorDistance)) || + ((fabsf(actor->playerHeightRel) > fabsf(yRange)) || (actor->xzDistToPlayer > player->talkActorDistance) || (xzRange < actor->xzDistToPlayer)))) { return false; } - player->targetActor = actor; - player->targetActorDistance = actor->xzDistToPlayer; + player->talkActor = actor; + player->talkActorDistance = actor->xzDistToPlayer; player->exchangeItemId = exchangeItemId; ActorCutscene_SetIntentToPlay(0x7C); return true; } -s32 func_800B85E0(Actor* actor, PlayState* play, f32 radius, PlayerActionParam exchangeItemId) { +s32 func_800B85E0(Actor* actor, PlayState* play, f32 radius, PlayerItemAction exchangeItemId) { return func_800B8500(actor, play, radius, radius, exchangeItemId); } s32 func_800B8614(Actor* actor, PlayState* play, f32 radius) { - return func_800B85E0(actor, play, radius, PLAYER_AP_NONE); + return func_800B85E0(actor, play, radius, PLAYER_IA_NONE); } s32 func_800B863C(Actor* actor, PlayState* play) { @@ -1898,21 +1894,21 @@ s32 Actor_TextboxIsClosing(Actor* actor, PlayState* play) { * Fails if Player is not already focussing on an actor or in a talking state */ s32 Actor_ChangeFocus(Actor* actor1, PlayState* play, Actor* actor2) { - Actor* targetActor; + Actor* talkActor; Player* player = GET_PLAYER(play); - targetActor = player->targetActor; + talkActor = player->talkActor; - if ((player->actor.flags & ACTOR_FLAG_100) && (targetActor != NULL)) { - player->targetActor = actor2; - player->unk_730 = actor2; + if ((player->actor.flags & ACTOR_FLAG_100) && (talkActor != NULL)) { + player->talkActor = actor2; + player->targetedActor = actor2; return true; } return false; } -s32 Player_GetExchangeItemId(PlayState* play) { +PlayerItemAction Player_GetExchangeItemId(PlayState* play) { Player* player = GET_PLAYER(play); return player->exchangeItemId; @@ -1996,7 +1992,7 @@ s32 Actor_HasParent(Actor* actor, PlayState* play) { * GI_NONE is usually used as a special case to lift an actor * GI_MAX is usually used to catch an actor in a bottle */ -s32 Actor_PickUp(Actor* actor, PlayState* play, s32 getItemId, f32 xzRange, f32 yRange) { +s32 Actor_PickUp(Actor* actor, PlayState* play, GetItemId getItemId, f32 xzRange, f32 yRange) { Player* player = GET_PLAYER(play); if (!(player->stateFlags1 & @@ -2006,7 +2002,7 @@ s32 Actor_PickUp(Actor* actor, PlayState* play, s32 getItemId, f32 xzRange, f32 if ((actor->xzDistToPlayer <= xzRange) && (fabsf(actor->playerHeightRel) <= fabsf(yRange))) { if ((getItemId == GI_MASK_CIRCUS_LEADER || getItemId == GI_PENDANT_OF_MEMORIES || getItemId == GI_DEED_LAND || - ((player->heldActor != NULL || actor == player->targetActor) && + ((player->heldActor != NULL || actor == player->talkActor) && (getItemId > GI_NONE && getItemId < GI_MAX))) || !(player->stateFlags1 & (PLAYER_STATE1_800 | PLAYER_STATE1_20000000))) { s16 yawDiff = actor->yawTowardsPlayer - player->actor.shape.rot.y; @@ -2030,7 +2026,7 @@ s32 Actor_PickUp(Actor* actor, PlayState* play, s32 getItemId, f32 xzRange, f32 return false; } -s32 Actor_PickUpNearby(Actor* actor, PlayState* play, s32 getItemId) { +s32 Actor_PickUpNearby(Actor* actor, PlayState* play, GetItemId getItemId) { return Actor_PickUp(actor, play, getItemId, 50.0f, 10.0f); } @@ -2038,7 +2034,7 @@ s32 Actor_LiftActor(Actor* actor, PlayState* play) { return Actor_PickUpNearby(actor, play, GI_NONE); } -s32 Actor_PickUpFar(Actor* actor, PlayState* play, s32 getItemId) { +s32 Actor_PickUpFar(Actor* actor, PlayState* play, GetItemId getItemId) { return Actor_PickUp(actor, play, getItemId, 9999.9f, 9999.9f); } @@ -2065,11 +2061,15 @@ void func_800B8C20(Actor* actorA, Actor* actorB, PlayState* play) { actorA->parent = NULL; } +/** + * Sets closest secret distance to the distance to the actor. Calling this function on `actor` is the way to make it a + * 'secret' for that update cycle, i.e. something that the controller will rumble for. + */ void func_800B8C50(Actor* actor, PlayState* play) { Player* player = GET_PLAYER(play); - if (actor->xyzDistToPlayerSq < player->unk_AA0) { - player->unk_AA0 = actor->xyzDistToPlayerSq; + if (actor->xyzDistToPlayerSq < player->closestSecretDistSq) { + player->closestSecretDistSq = actor->xyzDistToPlayerSq; } } @@ -2211,7 +2211,7 @@ void func_800B9098(Actor* actor) { actor->audioFlags |= 0x40; } -s32 func_800B90AC(PlayState* play, Actor* actor, CollisionPoly* polygon, s32 bgId, s32 arg4) { +s32 func_800B90AC(PlayState* play, Actor* actor, CollisionPoly* polygon, s32 bgId, Vec3f* arg4) { if (func_800C99D4(&play->colCtx, polygon, bgId) == 8) { return true; } @@ -2241,7 +2241,7 @@ void Actor_InitContext(PlayState* play, ActorContext* actorCtx, ActorEntry* acto CycleSceneFlags* cycleFlags; s32 i; - gSaveContext.save.weekEventReg[92] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_92_80); cycleFlags = &gSaveContext.cycleSceneFlags[Play_GetOriginalSceneId(play->sceneId)]; bzero(actorCtx, sizeof(ActorContext)); @@ -2301,7 +2301,7 @@ void Actor_SpawnSetupActors(PlayState* play, ActorContext* actorCtx) { } if (!(phi_v0 & temp_fp) && (phi_v0 & actorCtx->unkC) && - (!(gSaveContext.eventInf[1] & 0x80) || !(phi_v0 & temp_s1) || !(actorEntry->id & 0x800))) { + (!CHECK_EVENTINF(EVENTINF_17) || !(phi_v0 & temp_s1) || !(actorEntry->id & 0x800))) { Actor_SpawnEntry(&play->actorCtx, actorEntry, play); } actorEntry++; @@ -2372,13 +2372,13 @@ Actor* Actor_UpdateActor(UpdateActor_Params* params) { actor->flags &= ~ACTOR_FLAG_1000000; if ((DECR(actor->freezeTimer) == 0) && (actor->flags & params->unk_18)) { - if (actor == params->player->unk_730) { + if (actor == params->player->targetedActor) { actor->isTargeted = true; } else { actor->isTargeted = false; } - if ((actor->targetPriority != 0) && (params->player->unk_730 == 0)) { + if ((actor->targetPriority != 0) && (params->player->targetedActor == NULL)) { actor->targetPriority = 0; } @@ -2465,7 +2465,7 @@ void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) { } if ((player->stateFlags1 & PLAYER_STATE1_40) && ((player->actor.textId & 0xFF00) != 0x1900)) { - params.unk10 = player->targetActor; + params.unk10 = player->talkActor; } else { params.unk10 = NULL; } @@ -2503,7 +2503,7 @@ void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) { } } - actor = player->unk_730; + actor = player->targetedActor; if ((actor != NULL) && (actor->update == NULL)) { actor = NULL; func_80123DA4(player); @@ -3284,9 +3284,9 @@ Actor* Actor_Delete(ActorContext* actorCtx, Actor* actor, PlayState* play) { Actor* newHead; ActorOverlay* overlayEntry = actor->overlayEntry; - if ((player != NULL) && (actor == player->unk_730)) { + if ((player != NULL) && (actor == player->targetedActor)) { func_80123DA4(player); - Camera_ChangeMode(Play_GetCamera(play, Play_GetActiveCamId(play)), 0); + Camera_ChangeMode(Play_GetCamera(play, Play_GetActiveCamId(play)), CAM_MODE_NORMAL); } if (actor == actorCtx->targetContext.arrowPointedActor) { @@ -3327,7 +3327,7 @@ s32 func_800BB59C(PlayState* play, Actor* actor) { void func_800BB604(GameState* gameState, ActorContext* actorCtx, Player* player, s32 actorCategory) { PlayState* play = (PlayState*)gameState; f32 temp_f0_2; - Actor* sp8C; + Actor* targetedActor; Actor* actor; s32 phi_s2; CollisionPoly* sp80; @@ -3336,7 +3336,7 @@ void func_800BB604(GameState* gameState, ActorContext* actorCtx, Player* player, s32 phi_s2_2; actor = actorCtx->actorLists[actorCategory].first; - sp8C = player->unk_730; + targetedActor = player->targetedActor; while (actor != NULL) { if ((actor->update != NULL) && ((Player*)actor != player)) { if (actor->flags & (ACTOR_FLAG_40000000 | ACTOR_FLAG_1)) { @@ -3347,7 +3347,7 @@ void func_800BB604(GameState* gameState, ActorContext* actorCtx, Player* player, } } - if ((actor != sp8C) || (actor->flags & ACTOR_FLAG_80000)) { + if ((actor != targetedActor) || (actor->flags & ACTOR_FLAG_80000)) { temp_f0_2 = func_800B82EC(actor, player, D_801ED8DC); phi_s2_2 = (actor->flags & 1) != 0; if (phi_s2_2) { @@ -4190,19 +4190,16 @@ Gfx D_801AEFA0[] = { }; Gfx* func_800BD9A0(GraphicsContext* gfxCtx) { - Gfx* displayListHead; - Gfx* displayList; + Gfx* gfxHead = GRAPH_ALLOC(gfxCtx, 2 * sizeof(Gfx)); + Gfx* gfx = gfxHead; - displayListHead = displayList = GRAPH_ALLOC(gfxCtx, sizeof(Gfx) * 2); + gDPSetRenderMode( + gfx++, AA_EN | Z_CMP | Z_UPD | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | ZMODE_XLU | FORCE_BL | G_RM_FOG_SHADE_A, + AA_EN | Z_CMP | Z_UPD | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | ZMODE_XLU | FORCE_BL | + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); + gSPEndDisplayList(gfx++); - gDPSetRenderMode(displayListHead++, - AA_EN | Z_CMP | Z_UPD | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | ZMODE_XLU | FORCE_BL | - G_RM_FOG_SHADE_A, - AA_EN | Z_CMP | Z_UPD | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | ZMODE_XLU | FORCE_BL | - GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); - gSPEndDisplayList(displayListHead++); - - return displayList; + return gfxHead; } // unused @@ -4237,7 +4234,7 @@ s16 func_800BDB6C(Actor* actor, PlayState* play, s16 arg2, f32 arg3) { Player* player = GET_PLAYER(play); f32 phi_f2; - if ((play->csCtx.state != 0) || gDbgCamEnabled) { + if ((play->csCtx.state != CS_STATE_0) || gDbgCamEnabled) { phi_f2 = Math_Vec3f_DistXYZ(&actor->world.pos, &play->view.eye) * 0.25f; } else { phi_f2 = Math_Vec3f_DistXYZ(&actor->world.pos, &player->actor.world.pos); @@ -4382,8 +4379,8 @@ void func_800BE33C(Vec3f* arg0, Vec3f* arg1, Vec3s* arg2, s32 arg3) { f32 zDiff = arg1->z - arg0->z; f32 yDiff = arg3 ? (arg1->y - arg0->y) : (arg0->y - arg1->y); - arg2->y = Math_FAtan2F(zDiff, xDiff); - arg2->x = Math_FAtan2F(sqrtf(SQ(xDiff) + SQ(zDiff)), yDiff); + arg2->y = Math_Atan2S_XY(zDiff, xDiff); + arg2->x = Math_Atan2S_XY(sqrtf(SQ(xDiff) + SQ(zDiff)), yDiff); } void func_800BE3D0(Actor* actor, s16 angle, Vec3s* arg2) { @@ -4545,7 +4542,7 @@ void Actor_DrawDamageEffects(PlayState* play, Actor* actor, Vec3f limbPos[], s16 gDPSetColorDither(POLY_XLU_DISP++, G_CD_BAYER); gDPSetAlphaDither(POLY_XLU_DISP++, G_AD_PATTERN); - gSPDisplayList(POLY_XLU_DISP++, gFrozenSteamDL); + gSPDisplayList(POLY_XLU_DISP++, gFrozenSteamMaterialDL); alpha = effectAlpha * 100.0f; if (alpha > 100.0f) { @@ -4568,7 +4565,7 @@ void Actor_DrawDamageEffects(PlayState* play, Actor* actor, Vec3f limbPos[], s16 gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gFrozenSteamVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gFrozenSteamModelDL); } break; @@ -4627,7 +4624,7 @@ void Actor_DrawDamageEffects(PlayState* play, Actor* actor, Vec3f limbPos[], s16 lightOrbsScale = ((KREG(19) * 0.01f) + 4.0f) * effectScale; - gSPDisplayList(POLY_XLU_DISP++, gLightOrb1DL); + gSPDisplayList(POLY_XLU_DISP++, gLightOrbMaterial1DL); alpha = effectAlpha * 255.0f; if (alpha > 255.0f) { @@ -4658,7 +4655,7 @@ void Actor_DrawDamageEffects(PlayState* play, Actor* actor, Vec3f limbPos[], s16 gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gLightOrbVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gLightOrbModelDL); } break; @@ -4676,7 +4673,7 @@ void Actor_DrawDamageEffects(PlayState* play, Actor* actor, Vec3f limbPos[], s16 gSPSegment(POLY_XLU_DISP++, 0x08, Lib_SegmentedToVirtual(sElectricSparkTextures[play->gameplayFrames % 4])); - gSPDisplayList(POLY_XLU_DISP++, gElectricSparkDL); + gSPDisplayList(POLY_XLU_DISP++, gElectricSparkMaterialDL); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, (u8)(sREG(16) + 255), (u8)(sREG(17) + 255), (u8)(sREG(18) + 150), (u8)(sREG(19) + 255)); @@ -4698,7 +4695,7 @@ void Actor_DrawDamageEffects(PlayState* play, Actor* actor, Vec3f limbPos[], s16 gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gElectricSparkVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gElectricSparkModelDL); // second electric spark Matrix_RotateXFApply(Rand_ZeroFloat(2 * M_PI)); @@ -4710,7 +4707,7 @@ void Actor_DrawDamageEffects(PlayState* play, Actor* actor, Vec3f limbPos[], s16 gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gElectricSparkVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gElectricSparkModelDL); } break; diff --git a/src/code/z_actor_dlftbls.c b/src/code/z_actor_dlftbls.c index 02b7a8b5d..5d7f30ea8 100644 --- a/src/code/z_actor_dlftbls.c +++ b/src/code/z_actor_dlftbls.c @@ -36,7 +36,7 @@ ActorOverlay gActorOverlayTable[] = { #undef DEFINE_ACTOR_INTERNAL #undef DEFINE_ACTOR_UNSET -s32 gMaxActorId = 0; +ActorId gMaxActorId = 0; FaultClient D_801ED930; FaultAddrConvClient D_801ED940; @@ -44,7 +44,7 @@ FaultAddrConvClient D_801ED940; void ActorOverlayTable_FaultPrint(void* arg0, void* arg1) { ActorOverlay* overlayEntry; u32 overlaySize; - s32 i; + ActorId i; FaultDrawer_SetCharPad(-2, 0); @@ -63,7 +63,7 @@ void ActorOverlayTable_FaultPrint(void* arg0, void* arg1) { void* ActorOverlayTable_FaultAddrConv(void* arg0, void* arg1) { u8* ptr = arg0; ActorOverlay* overlayEntry = &gActorOverlayTable[0]; - s32 i; + ActorId i; u8* ramStart; u8* ramEnd; size_t size; diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c index 2052449f7..eda6437af 100644 --- a/src/code/z_bgcheck.c +++ b/src/code/z_bgcheck.c @@ -3318,7 +3318,7 @@ f32 BgCheck_RaycastFloorDyna(DynaRaycast* dynaRaycast) { dynaActor = DynaPoly_GetActor(dynaRaycast->colCtx, *dynaRaycast->bgId); if ((result != BGCHECK_Y_MIN) && (dynaActor != NULL) && (dynaRaycast->play != NULL)) { - pauseState = dynaRaycast->play->pauseCtx.state != 0; + pauseState = (dynaRaycast->play->pauseCtx.state != PAUSE_STATE_OFF); if (!pauseState) { pauseState = dynaRaycast->play->pauseCtx.debugEditor != DEBUG_EDITOR_NONE; } diff --git a/src/code/z_debug_display.c b/src/code/z_debug_display.c index e7c9dd0be..f98b8636e 100644 --- a/src/code/z_debug_display.c +++ b/src/code/z_debug_display.c @@ -148,9 +148,9 @@ Gfx* DebugDisplay_PathDisplayList(GraphicsContext* gfxCtx, Path* path) { s32 segment; // of path ending at the current point, 1-indexed if (path != NULL) { - // count - 1 segments, 1 gSPVertex and 3 gSP2Triangles for each, plus a gSPEndDisplayList - gfx = GRAPH_ALLOC(gfxCtx, ALIGN16(((path->count - 1) * 4 + 1) * sizeof(Gfx))); - curVtx = GRAPH_ALLOC(gfxCtx, ALIGN16(path->count * 6 * sizeof(Vtx))); + // (count - 1) segments, 1 gSPVertex and 3 gSP2Triangles for each, plus a gSPEndDisplayList + gfx = GRAPH_ALLOC(gfxCtx, ((path->count - 1) * 4 + 1) * sizeof(Gfx)); + curVtx = GRAPH_ALLOC(gfxCtx, path->count * 6 * sizeof(Vtx)); gfxHead = gfx; curBaseVtx = curVtx; @@ -202,7 +202,7 @@ Gfx* DebugDisplay_PathDisplayList(GraphicsContext* gfxCtx, Path* path) { gSPEndDisplayList(gfx++); } else { // No path, trivial displaylist - gfxHead = gfx = GRAPH_ALLOC(gfxCtx, ALIGN16(sizeof(Gfx))); + gfx = gfxHead = GRAPH_ALLOC(gfxCtx, sizeof(Gfx)); gSPEndDisplayList(gfx++); } return gfxHead; diff --git a/src/code/z_demo.c b/src/code/z_demo.c index ce548c313..5f6ebc7e1 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -598,7 +598,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB switch (D_801F4DE2) { case 0x1F: - if (gSaveContext.save.weekEventReg[20] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02)) { play->nextEntrance = ENTRANCE(WOODFALL_TEMPLE, 1); play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_03; @@ -611,7 +611,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB break; case 0x44: - if (gSaveContext.save.weekEventReg[33] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80)) { play->nextEntrance = ENTRANCE(MOUNTAIN_VILLAGE_SPRING, 7); play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_03; @@ -624,7 +624,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB break; case 0x5F: - gSaveContext.save.weekEventReg[55] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_55_80); play->nextEntrance = ENTRANCE(ZORA_CAPE, 8); gSaveContext.nextCutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; @@ -632,7 +632,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB break; case 0x36: - gSaveContext.save.weekEventReg[52] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_52_20); play->nextEntrance = ENTRANCE(IKANA_CANYON, 0); gSaveContext.nextCutsceneIndex = 0xFFF1; play->transitionTrigger = TRANS_TRIGGER_START; @@ -1482,6 +1482,7 @@ void func_800EDBE0(PlayState* play) { } else if (!(((void)0, gSaveContext.save.weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)]) & (1 << (play->csCtx.sceneCsList[temp_v0_3].unk7 % 8)))) { + // TODO: macros for this kind of weekEventReg access gSaveContext.save.weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)] = ((void)0, gSaveContext.save.weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)]) | (1 << (play->csCtx.sceneCsList[temp_v0_3].unk7 % 8)); diff --git a/src/code/z_eff_blure.c b/src/code/z_eff_blure.c index 6ab70f1ef..5f0221969 100644 --- a/src/code/z_eff_blure.c +++ b/src/code/z_eff_blure.c @@ -408,7 +408,7 @@ void EffectBlure_DrawElemNoInterpolation(EffectBlure* this, EffectBlureElement* Math_Vec3s_ToVec3f(&sp6C, &this->elements[0].p2); - vtx = GRAPH_ALLOC(gfxCtx, sizeof(Vtx[4])); + vtx = GRAPH_ALLOC(gfxCtx, 4 * sizeof(Vtx)); if (vtx == NULL) { } else { vtx[0].v = baseVtx; @@ -559,7 +559,7 @@ void EffectBlure_DrawElemHermiteInterpolation(EffectBlure* this, EffectBlureElem Math_Vec3f_Scale(&sp174, 0.5f); Math_Vec3f_Scale(&sp168, 0.5f); - vtx = GRAPH_ALLOC(gfxCtx, sizeof(Vtx[16])); + vtx = GRAPH_ALLOC(gfxCtx, 16 * sizeof(Vtx)); if (vtx == NULL) { } else { Math_Vec3f_Diff(&sp1CC, &sp138, &sp158); @@ -849,7 +849,7 @@ void EffectBlure_DrawSimple(EffectBlure* this2, GraphicsContext* gfxCtx) { if (this->numElements >= 2) { vtxCount = this->numElements * 4; - vtx = GRAPH_ALLOC(gfxCtx, ALIGN16(vtxCount * sizeof(Vtx))); + vtx = GRAPH_ALLOC(gfxCtx, vtxCount * sizeof(Vtx)); if (vtx == NULL) { return; } @@ -941,7 +941,7 @@ void EffectBlure_Draw(void* thisx, GraphicsContext* gfxCtx) { func_8012C560(gfxCtx); gDPPipeSync(POLY_XLU_DISP++); - vtx = GRAPH_ALLOC(gfxCtx, sizeof(Vtx[32])); + vtx = GRAPH_ALLOC(gfxCtx, 32 * sizeof(Vtx)); if (vtx == NULL) { } else { j = 0; diff --git a/src/code/z_eff_spark.c b/src/code/z_eff_spark.c index fd92516df..fdd25a6b4 100644 --- a/src/code/z_eff_spark.c +++ b/src/code/z_eff_spark.c @@ -120,7 +120,7 @@ s32 EffectSpark_Update(void* thisx) { } void EffectSpark_Draw(void* thisx, GraphicsContext* gfxCtx) { - Vtx* vertices; + Vtx* vtx; EffectSpark* this = (EffectSpark*)thisx; PlayState* play = Effect_GetPlayState(); s32 i; @@ -162,8 +162,8 @@ void EffectSpark_Draw(void* thisx, GraphicsContext* gfxCtx) { gSPSetGeometryMode(POLY_XLU_DISP++, G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH); gDPPipeSync(POLY_XLU_DISP++); - vertices = GRAPH_ALLOC(gfxCtx, ALIGN16(this->numElements * sizeof(Vtx[4]))); - if (vertices == NULL) { + vtx = GRAPH_ALLOC(gfxCtx, this->numElements * (4 * sizeof(Vtx))); + if (vtx == NULL) { goto end; } @@ -202,49 +202,49 @@ void EffectSpark_Draw(void* thisx, GraphicsContext* gfxCtx) { SkinMatrix_MtxFMtxFMult(&spEC, &play->billboardMtxF, &sp6C); SkinMatrix_MtxFMtxFMult(&sp6C, &spAC, &sp12C); - vertices[j].v.ob[0] = -32; - vertices[j].v.ob[1] = -32; - vertices[j].v.ob[2] = 0; - vertices[j].v.cn[0] = sp1D3; - vertices[j].v.cn[1] = sp1D2; - vertices[j].v.cn[2] = sp1D1; - vertices[j].v.cn[3] = sp1D0; - vertices[j].v.tc[0] = 0; - vertices[j].v.tc[1] = 1024; - vertices[j].v.flag = 0; + vtx[j].v.ob[0] = -32; + vtx[j].v.ob[1] = -32; + vtx[j].v.ob[2] = 0; + vtx[j].v.cn[0] = sp1D3; + vtx[j].v.cn[1] = sp1D2; + vtx[j].v.cn[2] = sp1D1; + vtx[j].v.cn[3] = sp1D0; + vtx[j].v.tc[0] = 0; + vtx[j].v.tc[1] = 1024; + vtx[j].v.flag = 0; - vertices[j + 1].v.ob[0] = 32; - vertices[j + 1].v.ob[1] = 32; - vertices[j + 1].v.ob[2] = 0; - vertices[j + 1].v.cn[0] = sp1CF; - vertices[j + 1].v.cn[1] = sp1CE; - vertices[j + 1].v.cn[2] = sp1CD; - vertices[j + 1].v.cn[3] = sp1CC; - vertices[j + 1].v.tc[0] = 1024; - vertices[j + 1].v.tc[1] = 0; - vertices[j + 1].v.flag = 0; + vtx[j + 1].v.ob[0] = 32; + vtx[j + 1].v.ob[1] = 32; + vtx[j + 1].v.ob[2] = 0; + vtx[j + 1].v.cn[0] = sp1CF; + vtx[j + 1].v.cn[1] = sp1CE; + vtx[j + 1].v.cn[2] = sp1CD; + vtx[j + 1].v.cn[3] = sp1CC; + vtx[j + 1].v.tc[0] = 1024; + vtx[j + 1].v.tc[1] = 0; + vtx[j + 1].v.flag = 0; - vertices[j + 2].v.ob[0] = -32; - vertices[j + 2].v.ob[1] = 32; - vertices[j + 2].v.ob[2] = 0; - vertices[j + 2].v.cn[0] = sp1CB; - vertices[j + 2].v.cn[1] = sp1CA; - vertices[j + 2].v.cn[2] = sp1C9; - vertices[j + 2].v.cn[3] = sp1C8; - vertices[j + 2].v.tc[0] = 0; - vertices[j + 2].v.tc[1] = 0; - vertices[j + 2].v.flag = 0; + vtx[j + 2].v.ob[0] = -32; + vtx[j + 2].v.ob[1] = 32; + vtx[j + 2].v.ob[2] = 0; + vtx[j + 2].v.cn[0] = sp1CB; + vtx[j + 2].v.cn[1] = sp1CA; + vtx[j + 2].v.cn[2] = sp1C9; + vtx[j + 2].v.cn[3] = sp1C8; + vtx[j + 2].v.tc[0] = 0; + vtx[j + 2].v.tc[1] = 0; + vtx[j + 2].v.flag = 0; - vertices[j + 3].v.ob[0] = 32; - vertices[j + 3].v.ob[1] = -32; - vertices[j + 3].v.ob[2] = 0; - vertices[j + 3].v.cn[0] = sp1C7; - vertices[j + 3].v.cn[1] = sp1C6; - vertices[j + 3].v.cn[2] = sp1C5; - vertices[j + 3].v.cn[3] = sp1C4; - vertices[j + 3].v.tc[0] = 1024; - vertices[j + 3].v.tc[1] = 1024; - vertices[j + 3].v.flag = 0; + vtx[j + 3].v.ob[0] = 32; + vtx[j + 3].v.ob[1] = -32; + vtx[j + 3].v.ob[2] = 0; + vtx[j + 3].v.cn[0] = sp1C7; + vtx[j + 3].v.cn[1] = sp1C6; + vtx[j + 3].v.cn[2] = sp1C5; + vtx[j + 3].v.cn[3] = sp1C4; + vtx[j + 3].v.tc[0] = 1024; + vtx[j + 3].v.tc[1] = 1024; + vtx[j + 3].v.flag = 0; j += 4; @@ -254,7 +254,7 @@ void EffectSpark_Draw(void* thisx, GraphicsContext* gfxCtx) { } gSPMatrix(POLY_XLU_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(POLY_XLU_DISP++, &vertices[4 * i], 4, 0); + gSPVertex(POLY_XLU_DISP++, &vtx[4 * i], 4, 0); gSP2Triangles(POLY_XLU_DISP++, 2, 0, 3, 0, 2, 3, 1, 0); } diff --git a/src/code/z_eff_tire_mark.c b/src/code/z_eff_tire_mark.c index 532e8e2fb..f19eb1289 100644 --- a/src/code/z_eff_tire_mark.c +++ b/src/code/z_eff_tire_mark.c @@ -1,8 +1,8 @@ #include "global.h" #include "objects/gameplay_keep/gameplay_keep.h" -void func_800AE930(CollisionContext* colCtx, EffectTireMark* this, Vec3f* pos, f32 arg3, s16 arg4, - CollisionPoly* colPoly, s32 arg6) { +void func_800AE930(CollisionContext* colCtx, EffectTireMark* this, Vec3f* pos, f32 arg3, s16 angle, + CollisionPoly* colPoly, s32 bgId) { Vec3s spB8; Vec3s spB0; EffectTireMarkElement* spAC; @@ -11,17 +11,17 @@ void func_800AE930(CollisionContext* colCtx, EffectTireMark* this, Vec3f* pos, f u32 spA0; Vec3s* vtxList = colCtx->colHeader->vtxList; - if ((arg6 != 50) || (this->numElements >= (ARRAY_COUNT(this->elements) - 1)) || (colPoly == NULL)) { + if ((bgId != 50) || (this->numElements >= (ARRAY_COUNT(this->elements) - 1)) || (colPoly == NULL)) { func_800AEF44(this); return; } - spB8.x = (Math_SinS(arg4 - 0x4000) * arg3) + pos->x; - spB8.z = (Math_CosS(arg4 - 0x4000) * arg3) + pos->z; + spB8.x = (Math_SinS(angle - 0x4000) * arg3) + pos->x; + spB8.z = (Math_CosS(angle - 0x4000) * arg3) + pos->z; spB8.y = func_800BFD84(colPoly, spB8.x, spB8.z) + 2.0f; - spB0.x = (Math_SinS(arg4 + 0x4000) * arg3) + pos->x; - spB0.z = (Math_CosS(arg4 + 0x4000) * arg3) + pos->z; + spB0.x = (Math_SinS(angle + 0x4000) * arg3) + pos->x; + spB0.z = (Math_CosS(angle + 0x4000) * arg3) + pos->z; spB0.y = func_800BFD84(colPoly, spB0.x, spB0.z) + 2.0f; spAC = &this->elements[this->numElements - 1]; @@ -226,7 +226,7 @@ void EffectTireMark_Draw(void* thisx, GraphicsContext* gfxCtx) { OPEN_DISPS(gfxCtx); if (this->numElements >= 2) { - vtx = GRAPH_ALLOC(gfxCtx, ALIGN16(this->numElements * sizeof(Vtx[2]))); + vtx = GRAPH_ALLOC(gfxCtx, this->numElements * (2 * sizeof(Vtx))); if (vtx != NULL) { gSPMatrix(POLY_OPA_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); diff --git a/src/code/z_elf_message.c b/src/code/z_elf_message.c index a5a4890a7..830824024 100644 --- a/src/code/z_elf_message.c +++ b/src/code/z_elf_message.c @@ -21,20 +21,20 @@ u16 QuestHint_GetTatlTextId(PlayState* play) { return 0; } - if (gSaveContext.save.weekEventReg[88] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_88_20)) { return 0; } - if (gSaveContext.save.weekEventReg[79] & 0x10) { - if (gSaveContext.save.weekEventReg[8] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_10)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_08_40)) { return 0; } return 0x224; } - if (!(gSaveContext.save.weekEventReg[8] & 0x80)) { - if (gSaveContext.save.weekEventReg[9] & 1) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_08_80)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_09_01)) { return 0x21E; } @@ -58,34 +58,34 @@ u16 QuestHint_GetTatlTextId(PlayState* play) { } if (INV_CONTENT(ITEM_MOON_TEAR) == ITEM_MOON_TEAR) { - if (gSaveContext.save.weekEventReg[86] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_86_04)) { return 0x242; } return 0x243; } - if (gSaveContext.save.weekEventReg[74] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_74_20)) { return 0x223; } - if (gSaveContext.save.weekEventReg[73] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_80)) { return 0x222; } - if (gSaveContext.save.weekEventReg[73] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_20)) { return 0x221; } - if (gSaveContext.save.weekEventReg[77] & 2) { - if (gSaveContext.save.weekEventReg[73] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_77_02)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_10)) { return 0x240; } return 0x241; } - if ((gSaveContext.save.weekEventReg[86] & 2) || (gSaveContext.save.weekEventReg[73] & 0x40)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_86_02) || CHECK_WEEKEVENTREG(WEEKEVENTREG_73_40)) { return 0x23F; } diff --git a/src/code/z_en_hy_code.c b/src/code/z_en_hy_code.c index 19a52c1b4..01ec9eca3 100644 --- a/src/code/z_en_hy_code.c +++ b/src/code/z_en_hy_code.c @@ -140,7 +140,7 @@ void func_800F0BB4(EnHy* enHy, PlayState* play, EnDoor* door, s16 arg3, s16 arg4 EnHy_ChangeObjectAndAnim(enHy, play, (animIndex == 0) ? arg3 : arg4); enHy->skelAnime.baseTransl = *enHy->skelAnime.jointTable; enHy->skelAnime.prevTransl = *enHy->skelAnime.jointTable; - enHy->skelAnime.moveFlags |= 3; + enHy->skelAnime.moveFlags |= (ANIM_FLAG_UPDATEY | ANIM_FLAG_1); AnimationContext_SetMoveActor(play, &enHy->actor, &enHy->skelAnime, 1.0f); door->unk_1A1 = 1; door->animIndex = animIndex; diff --git a/src/code/z_fireobj.c b/src/code/z_fireobj.c index d0b88b3db..e4f014ffa 100644 --- a/src/code/z_fireobj.c +++ b/src/code/z_fireobj.c @@ -118,7 +118,7 @@ void FireObj_UpdateStateTransitions(PlayState* play, FireObj* fire) { (waterY - fire->position.y > 6500.0f * fire->yScale)) { FireObj_SetState(fire, fire->dynamicSizeStep, FIRE_STATE_3); } - if ((fire->flags & 2) && (player->itemActionParam == PLAYER_AP_STICK)) { + if ((fire->flags & 2) && (player->heldItemAction == PLAYER_IA_STICK)) { Math_Vec3f_Diff(&player->meleeWeaponInfo[0].tip, &fire->position, &dist); if (Math3D_LengthSquared(&dist) < 400.0f) { sp40 = true; diff --git a/src/code/z_game_over.c b/src/code/z_game_over.c index 857250eec..5609a4727 100644 --- a/src/code/z_game_over.c +++ b/src/code/z_game_over.c @@ -29,7 +29,7 @@ void GameOver_Update(PlayState* play) { gSaveContext.timerStates[timerId] = TIMER_STATE_OFF; } - gSaveContext.eventInf[1] &= ~1; + CLEAR_EVENTINF_ALT(EVENTINF_10); if (CUR_FORM == 0) { if (CUR_FORM_EQUIP(EQUIP_SLOT_B) != ITEM_SWORD_KOKIRI && diff --git a/src/code/z_kaleido_scope_call.c b/src/code/z_kaleido_scope_call.c index 9cea42691..5ab466ddc 100644 --- a/src/code/z_kaleido_scope_call.c +++ b/src/code/z_kaleido_scope_call.c @@ -35,24 +35,25 @@ void KaleidoScopeCall_Update(PlayState* play) { PauseContext* pauseCtx = &play->pauseCtx; KaleidoMgrOverlay* kaleidoScopeOvl = &gKaleidoMgrOverlayTable[KALEIDO_OVL_KALEIDO_SCOPE]; - if ((play->pauseCtx.state != 0) || (play->pauseCtx.debugEditor != DEBUG_EDITOR_NONE)) { - if (pauseCtx->state == 1 || pauseCtx->state == 19) { + if ((play->pauseCtx.state != PAUSE_STATE_OFF) || (play->pauseCtx.debugEditor != DEBUG_EDITOR_NONE)) { + if ((pauseCtx->state == PAUSE_STATE_OPENING_0) || (pauseCtx->state == PAUSE_STATE_OWLWARP_0)) { if (ShrinkWindow_Letterbox_GetSize() == 0) { - R_PAUSE_MENU_MODE = 1; - pauseCtx->unk_200 = 0; - pauseCtx->unk_208 = 0; + R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_SETUP; + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; + pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_0; pauseCtx->state = (pauseCtx->state & 0xFFFF) + 1; } - } else if (pauseCtx->state == 8) { - R_PAUSE_MENU_MODE = 1; - pauseCtx->unk_200 = 0; - pauseCtx->unk_208 = 0; + } else if (pauseCtx->state == PAUSE_STATE_GAMEOVER_0) { + R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_SETUP; + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; + pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_0; pauseCtx->state = (pauseCtx->state & 0xFFFF) + 1; - } else if ((pauseCtx->state == 2) || (pauseCtx->state == 9) || (pauseCtx->state == 20)) { - if (R_PAUSE_MENU_MODE == 3) { + } else if ((pauseCtx->state == PAUSE_STATE_OPENING_1) || (pauseCtx->state == PAUSE_STATE_GAMEOVER_1) || + (pauseCtx->state == PAUSE_STATE_OWLWARP_1)) { + if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_DONE) { pauseCtx->state++; } - } else if (pauseCtx->state != 0) { + } else if (pauseCtx->state != PAUSE_STATE_OFF) { if (gKaleidoMgrCurOvl != kaleidoScopeOvl) { if (gKaleidoMgrCurOvl != NULL) { KaleidoManager_ClearOvl(gKaleidoMgrCurOvl); @@ -64,7 +65,7 @@ void KaleidoScopeCall_Update(PlayState* play) { if (gKaleidoMgrCurOvl == kaleidoScopeOvl) { sKaleidoScopeUpdateFunc(play); - if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { KaleidoManager_ClearOvl(kaleidoScopeOvl); KaleidoScopeCall_LoadPlayer(); } @@ -76,9 +77,9 @@ void KaleidoScopeCall_Update(PlayState* play) { void KaleidoScopeCall_Draw(PlayState* play) { KaleidoMgrOverlay* kaleidoScopeOvl = &gKaleidoMgrOverlayTable[KALEIDO_OVL_KALEIDO_SCOPE]; - if (R_PAUSE_MENU_MODE == 3) { - if (((play->pauseCtx.state >= 4) && (play->pauseCtx.state <= 7)) || - ((play->pauseCtx.state >= 11) && (play->pauseCtx.state <= 26))) { + if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_DONE) { + if (((play->pauseCtx.state >= PAUSE_STATE_OPENING_3) && (play->pauseCtx.state <= PAUSE_STATE_SAVEPROMPT)) || + ((play->pauseCtx.state >= PAUSE_STATE_GAMEOVER_3) && (play->pauseCtx.state <= PAUSE_STATE_UNPAUSE_SETUP))) { if (gKaleidoMgrCurOvl == kaleidoScopeOvl) { sKaleidoScopeDrawFunc(play); } diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index bdd27251d..69badaaed 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -4,9 +4,24 @@ #include "z64view.h" #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" -s16 D_801BDB00[] = { PAUSE_MAP, PAUSE_QUEST, PAUSE_MASK, PAUSE_ITEM }; -f32 sKaleidoSetupEyeX[] = { -64.0f, 0.0f, 64.0f, 0.0f }; -f32 sKaleidoSetupEyeZ[] = { 0.0f, -64.0f, 0.0f, 64.0f }; +s16 sKaleidoSetupRightPageIndex[] = { + PAUSE_MAP, // PAUSE_ITEM + PAUSE_QUEST, // PAUSE_MAP + PAUSE_MASK, // PAUSE_QUEST + PAUSE_ITEM, // PAUSE_MASK +}; +f32 sKaleidoSetupRightPageEyeX[] = { + PAUSE_EYE_DIST * -PAUSE_MAP_X, // PAUSE_ITEM + PAUSE_EYE_DIST * -PAUSE_QUEST_X, // PAUSE_MAP + PAUSE_EYE_DIST * -PAUSE_MASK_X, // PAUSE_QUEST + PAUSE_EYE_DIST * -PAUSE_ITEM_X, // PAUSE_MASK +}; +f32 sKaleidoSetupRightPageEyeZ[] = { + PAUSE_EYE_DIST * -PAUSE_MAP_Z, // PAUSE_ITEM + PAUSE_EYE_DIST * -PAUSE_QUEST_Z, // PAUSE_MAP + PAUSE_EYE_DIST * -PAUSE_MASK_Z, // PAUSE_QUEST + PAUSE_EYE_DIST * -PAUSE_ITEM_Z, // PAUSE_MASK +}; void func_800F4A10(PlayState* play) { PauseContext* pauseCtx = &play->pauseCtx; @@ -14,18 +29,20 @@ void func_800F4A10(PlayState* play) { Rumble_StateReset(); - pauseCtx->unk_206 = 0; - pauseCtx->unk_200 = 1; - pauseCtx->eye.x = sKaleidoSetupEyeX[pauseCtx->pageIndex]; - pauseCtx->eye.z = sKaleidoSetupEyeZ[pauseCtx->pageIndex]; - pauseCtx->pageIndex = D_801BDB00[pauseCtx->pageIndex]; - pauseCtx->unk_27E = -40; + pauseCtx->switchPageTimer = 0; + pauseCtx->mainState = PAUSE_MAIN_STATE_SWITCHING_PAGE; + + // Set eye position and pageIndex such that scrolling left brings to the desired page + pauseCtx->eye.x = sKaleidoSetupRightPageEyeX[pauseCtx->pageIndex]; + pauseCtx->eye.z = sKaleidoSetupRightPageEyeZ[pauseCtx->pageIndex]; + pauseCtx->pageIndex = sKaleidoSetupRightPageIndex[pauseCtx->pageIndex]; + pauseCtx->infoPanelOffsetY = -40; for (i = 0; i < ARRAY_COUNT(pauseCtx->worldMapPoints); i++) { pauseCtx->worldMapPoints[i] = false; } - if (pauseCtx->state == 1) { + if (pauseCtx->state == PAUSE_STATE_OPENING_0) { for (i = 0; i < REGION_MAX; i++) { if ((gSaveContext.save.regionsVisited >> i) & 1) { pauseCtx->worldMapPoints[i] = true; @@ -72,26 +89,27 @@ void KaleidoSetup_Update(PlayState* play) { if (msgCtx && msgCtx) {} } - if ((pauseCtx->state == 0) && (pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && + if ((pauseCtx->state == PAUSE_STATE_OFF) && (pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && (play->gameOverCtx.state == GAMEOVER_INACTIVE)) { if ((play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { if ((gSaveContext.save.cutscene < 0xFFF0) && (gSaveContext.nextCutsceneIndex < 0xFFF0)) { if (!Play_InCsMode(play) || ((msgCtx->msgMode != 0) && (msgCtx->currentTextId == 0xFF))) { if ((play->bButtonAmmoPlusOne < 2) && (gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY) && (gSaveContext.magicState != MAGIC_STATE_FILL)) { - if (!(gSaveContext.eventInf[1] & 0x80) && !(player->stateFlags1 & PLAYER_STATE1_20)) { + if (!CHECK_EVENTINF(EVENTINF_17) && !(player->stateFlags1 & PLAYER_STATE1_20)) { if (!(play->actorCtx.flags & ACTORCTX_FLAG_1) && !(play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON)) { if ((play->actorCtx.unk268 == 0) && CHECK_BTN_ALL(input->press.button, BTN_START)) { gSaveContext.prevHudVisibility = gSaveContext.hudVisibility; pauseCtx->itemDescriptionOn = false; - pauseCtx->state = 1; + pauseCtx->state = PAUSE_STATE_OPENING_0; func_800F4A10(play); - pauseCtx->mode = pauseCtx->pageIndex * 2 + 1; + // Set next page mode to scroll left + pauseCtx->nextPageMode = pauseCtx->pageIndex * 2 + 1; func_801A3A7C(1); } - if (pauseCtx->state == 1) { + if (pauseCtx->state == PAUSE_STATE_OPENING_0) { Game_SetFramerateDivisor(&play->state, 2); if (ShrinkWindow_Letterbox_GetSizeTarget() != 0) { ShrinkWindow_Letterbox_SetSizeTarget(0); @@ -115,14 +133,14 @@ void KaleidoSetup_Init(PlayState* play) { pauseCtx->pageIndex = PAUSE_ITEM; - pauseCtx->unk_21C = 160.0f; - pauseCtx->unk_218 = 160.0f; - pauseCtx->unk_214 = 160.0f; - pauseCtx->unk_210 = 160.0f; + pauseCtx->maskPageRoll = 160.0f; + pauseCtx->questPageRoll = 160.0f; + pauseCtx->mapPageRoll = 160.0f; + pauseCtx->itemPageRoll = 160.0f; pauseCtx->eye.x = -64.0f; pauseCtx->unk_20C = 936.0f; - pauseCtx->unk_220 = -314.0f; + pauseCtx->roll = -314.0f; pauseCtx->cursorPoint[PAUSE_MAP] = R_REVERSE_FLOOR_INDEX + (DUNGEON_FLOOR_INDEX_4 - 1); diff --git a/src/code/z_lib.c b/src/code/z_lib.c index 6466b337c..136918765 100644 --- a/src/code/z_lib.c +++ b/src/code/z_lib.c @@ -251,7 +251,7 @@ void func_800FF3A0(f32* distOut, s16* angleOut, Input* input) { if (dist > 0.0f) { x = input->cur.stick_x; y = input->cur.stick_y; - *angleOut = Math_FAtan2F(y, -x); + *angleOut = Math_Atan2S_XY(y, -x); } else { *angleOut = 0; } @@ -420,11 +420,11 @@ f32 Math_Vec3f_DiffY(Vec3f* a, Vec3f* b) { s16 Math_Vec3f_Yaw(Vec3f* a, Vec3f* b) { f32 f14 = b->x - a->x; f32 f12 = b->z - a->z; - return Math_FAtan2F(f12, f14); + return Math_Atan2S_XY(f12, f14); } s16 Math_Vec3f_Pitch(Vec3f* a, Vec3f* b) { - return Math_FAtan2F(Math_Vec3f_DistXZ(a, b), a->y - b->y); + return Math_Atan2S_XY(Math_Vec3f_DistXZ(a, b), a->y - b->y); } void IChain_Apply_u8(u8* ptr, InitChainEntry* ichain); diff --git a/src/code/z_lifemeter.c b/src/code/z_lifemeter.c index a6989f23e..669aa338a 100644 --- a/src/code/z_lifemeter.c +++ b/src/code/z_lifemeter.c @@ -404,7 +404,7 @@ void LifeMeter_UpdateSizeAndBeep(PlayState* play) { if (interfaceCtx->lifeSizeChange <= 0) { interfaceCtx->lifeSizeChange = 0; interfaceCtx->lifeSizeChangeDirection = 0; - if (!Player_InCsMode(play) && (play->pauseCtx.state == 0) && + if (!Player_InCsMode(play) && (play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && LifeMeter_IsCritical() && !Play_InCsMode(play)) { play_sound(NA_SE_SY_HITPOINT_ALARM); } diff --git a/src/code/z_map_exp.c b/src/code/z_map_exp.c index 57f51a20a..ac78d1229 100644 --- a/src/code/z_map_exp.c +++ b/src/code/z_map_exp.c @@ -226,8 +226,8 @@ void Map_Update(PlayState* play) { s16 floor; s32 pad2; - if ((play->pauseCtx.state < 4) && (CHECK_BTN_ALL(controller->press.button, BTN_L)) && (!Play_InCsMode(play)) && - (!func_80106530(play))) { + if ((play->pauseCtx.state <= PAUSE_STATE_OPENING_2) && (CHECK_BTN_ALL(controller->press.button, BTN_L)) && + !Play_InCsMode(play) && !func_80106530(play)) { if (!R_MINIMAP_DISABLED) { play_sound(NA_SE_SY_CAMERA_ZOOM_UP); } else { @@ -239,7 +239,7 @@ void Map_Update(PlayState* play) { func_80105B34(play); - if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { if (Map_IsInDungeonArea(play)) { floor = func_80109124(player->actor.world.pos.y); if (floor != -1) { diff --git a/src/code/z_message.c b/src/code/z_message.c index 0b52aa942..26515208f 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -370,12 +370,12 @@ void func_80151BB4(PlayState* play, u8 arg1) { u8 temp = arg1; if (CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { - if ((gSaveContext.save.weekEventReg[D_801C6B28[arg1] >> 8] & (u8)D_801C6B28[arg1]) == 0) { + if (!CHECK_WEEKEVENTREG(D_801C6B28[arg1])) { msgCtx->unk120B2[msgCtx->unk120B1] = temp; msgCtx->unk120B1++; } } else if (arg1 >= 20) { - if ((gSaveContext.save.weekEventReg[D_801C6B28[arg1] >> 8] & (u8)D_801C6B28[arg1]) == 0) { + if (!CHECK_WEEKEVENTREG(D_801C6B28[arg1])) { msgCtx->unk120B2[msgCtx->unk120B1] = temp; msgCtx->unk120B1++; } @@ -391,11 +391,9 @@ u32 func_80151C9C(PlayState* play) { } msgCtx->unk120B1--; - if ((gSaveContext.save.weekEventReg[D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]] >> 8] & - (u8)D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]]) == 0) { - gSaveContext.save.weekEventReg[D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]] >> 8] = - ((void)0, gSaveContext.save.weekEventReg[D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]] >> 8]) | - (u8)D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]]; + if (!CHECK_WEEKEVENTREG(D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]])) { + SET_WEEKEVENTREG(D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]]); + if ((D_801C6AB8[msgCtx->unk120B2[msgCtx->unk120B1]] != 0) && CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { func_80151938(play, D_801C6AB8[msgCtx->unk120B2[msgCtx->unk120B1]]); play_sound(NA_SE_SY_SCHEDULE_WRITE); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 646523203..b3310c01b 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -245,30 +245,79 @@ s16 sFinalHoursClockFrameEnvBlue = 0; s16 sFinalHoursClockColorTimer = 15; s16 sFinalHoursClockColorTargetIndex = 0; +/** + * Draw a RGBA16 texture on a rectangle + * + * @param gfx the display list pointer + * @param texture + * @param textureWidth texture image width in texels + * @param textureHeight texture image height in texels + * @param rectLeft the x-coordinate of upper-left corner of rectangle + * @param rectTop the y-coordinate of upper-left corner of rectangle + * @param rectWidth rectangle width in texels + * @param rectHeight rectangle height in texels + * @param dsdx the change in s for each change in x (s5.10) + * @param dtdy the change in t for each change in y (s5.10) + * @return Gfx* the display list pointer + */ Gfx* Gfx_DrawTexRectRGBA16(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(gfx++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, (rectTop + rectHeight) * 4, + gSPTextureRectangle(gfx++, rectLeft << 2, rectTop << 2, (rectLeft + rectWidth) << 2, (rectTop + rectHeight) << 2, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); return gfx; } +/** + * Draw an IA8 texture on a rectangle + * + * @param gfx the display list pointer + * @param texture + * @param textureWidth texture image width in texels + * @param textureHeight texture image height in texels + * @param rectLeft the x-coordinate of upper-left corner of rectangle + * @param rectTop the y-coordinate of upper-left corner of rectangle + * @param rectWidth rectangle width in texels + * @param rectHeight rectangle height in texels + * @param dsdx the change in s for each change in x (s5.10) + * @param dtdy the change in t for each change in y (s5.10) + * @return Gfx* the display list pointer + */ Gfx* Gfx_DrawTexRectIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(gfx++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, (rectTop + rectHeight) * 4, + gSPTextureRectangle(gfx++, rectLeft << 2, rectTop << 2, (rectLeft + rectWidth) << 2, (rectTop + rectHeight) << 2, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); return gfx; } +/** + * Draw an IA8 texture on a rectangle with a shadow slightly offset to the bottom-right + * + * @param gfx the display list pointer + * @param texture + * @param textureWidth texture image width in texels + * @param textureHeight texture image height in texels + * @param rectLeft the x-coordinate of upper-left corner of rectangle + * @param rectTop the y-coordinate of upper-left corner of rectangle + * @param rectWidth rectangle width in texels + * @param rectHeight rectangle height in texels + * @param dsdx the change in s for each change in x (s5.10) + * @param dtdy the change in t for each change in y (s5.10) + * @param r texture red + * @param g texture green + * @param b texture blue + * @param a texture alpha + * @return Gfx* the display list pointer + */ Gfx* Gfx_DrawTexRectIA8_DropShadow(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, s16 b, s16 a) { @@ -297,6 +346,22 @@ Gfx* Gfx_DrawTexRectIA8_DropShadow(Gfx* gfx, TexturePtr texture, s16 textureWidt return gfx; } +/** + * Draw a colored rectangle with a shadow slightly offset to the bottom-right + * + * @param gfx the display list pointer + * @param rectLeft the x-coordinate of upper-left corner of rectangle + * @param rectTop the y-coordinate of upper-left corner of rectangle + * @param rectWidth rectangle width in texels + * @param rectHeight rectangle height in texels + * @param dsdx the change in s for each change in x (s5.10) + * @param dtdy the change in t for each change in y (s5.10) + * @param r // rectangle red + * @param g // rectangle green + * @param b // rectangle blue + * @param a // rectangle alpha + * @return Gfx* the display list pointer + */ Gfx* Gfx_DrawRect_DropShadow(Gfx* gfx, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, s16 b, s16 a) { s16 dropShadowAlpha = a; @@ -319,9 +384,30 @@ Gfx* Gfx_DrawRect_DropShadow(Gfx* gfx, s16 rectLeft, s16 rectTop, s16 rectWidth, return gfx; } +/** + * Draw an IA8 texture on a rectangle with a shadow slightly offset to the bottom-right with additional texture offsets + * + * @param gfx the display list pointer + * @param texture + * @param textureWidth texture image width in texels + * @param textureHeight texture image height in texels + * @param rectLeft the x-coordinate of upper-left corner of rectangle + * @param rectTop the y-coordinate of upper-left corner of rectangle + * @param rectWidth rectangle width in texels + * @param rectHeight rectangle height in texels + * @param dsdx the change in s for each change in x (s5.10) + * @param dtdy the change in t for each change in y (s5.10) + * @param r // texture red + * @param g // texture green + * @param b // texture blue + * @param a // texture alpha + * @param masks specify the mask for the s axis + * @param rects the texture coordinate s of upper-left corner of rectangle (s10.5) + * @return Gfx* the display list pointer + */ Gfx* Gfx_DrawTexRectIA8_DropShadowOffset(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, - s16 r, s16 g, s16 b, s16 a, s32 masks, s32 rectS) { + s16 r, s16 g, s16 b, s16 a, s32 masks, s32 rects) { s16 dropShadowAlpha = a; if (a > 100) { @@ -335,40 +421,84 @@ Gfx* Gfx_DrawTexRectIA8_DropShadowOffset(Gfx* gfx, TexturePtr texture, s16 textu G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, masks, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(gfx++, (rectLeft + 2) * 4, (rectTop + 2) * 4, (rectLeft + rectWidth + 2) * 4, - (rectTop + rectHeight + 2) * 4, G_TX_RENDERTILE, rectS, 0, dsdx, dtdy); + (rectTop + rectHeight + 2) * 4, G_TX_RENDERTILE, rects, 0, dsdx, dtdy); gDPPipeSync(gfx++); gDPSetPrimColor(gfx++, 0, 0, r, g, b, a); gSPTextureRectangle(gfx++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, (rectTop + rectHeight) * 4, - G_TX_RENDERTILE, rectS, 0, dsdx, dtdy); + G_TX_RENDERTILE, rects, 0, dsdx, dtdy); return gfx; } +/** + * Draw an I8 texture on a rectangle + * + * @param gfx the display list pointer + * @param texture + * @param textureWidth texture image width in texels + * @param textureHeight texture image height in texels + * @param rectLeft the x-coordinate of upper-left corner of rectangle + * @param rectTop the y-coordinate of upper-left corner of rectangle + * @param rectWidth rectangle width in texels + * @param rectHeight rectangle height in texels + * @param dsdx the change in s for each change in x (s5.10) + * @param dtdy the change in t for each change in y (s5.10) + * @return Gfx* the display list pointer + */ Gfx* Gfx_DrawTexRectI8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_I, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(gfx++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, (rectTop + rectHeight) * 4, + gSPTextureRectangle(gfx++, rectLeft << 2, rectTop << 2, (rectLeft + rectWidth) << 2, (rectTop + rectHeight) << 2, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); return gfx; } +/** + * Draw a 4b texture on a rectangle + * + * @param gfx the display list pointer + * @param texture + * @param fmt texture image format + * @param textureWidth texture image width in texels + * @param textureHeight texture image height in texels + * @param rectLeft the x-coordinate of upper-left corner of rectangle + * @param rectTop the y-coordinate of upper-left corner of rectangle + * @param rectWidth rectangle width in texels + * @param rectHeight rectangle height in texels + * @param cms gives the clamp, wrap, and mirror flag for the s axis + * @param masks specify the mask for the s axis + * @param rects the texture coordinate s of upper-left corner of rectangle (s10.5) + * @param dsdx the change in s for each change in x (s5.10) + * @param dtdy the change in t for each change in y (s5.10) + * @return Gfx* the display list pointer + */ Gfx* Gfx_DrawTexRect4b(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, s16 rectLeft, - s16 rectTop, s16 rectWidth, s16 rectHeight, s32 cms, s32 masks, s32 s, u16 dsdx, u16 dtdy) { + s16 rectTop, s16 rectWidth, s16 rectHeight, s32 cms, s32 masks, s32 rects, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock_4b(gfx++, texture, fmt, textureWidth, textureHeight, 0, cms, G_TX_NOMIRROR | G_TX_WRAP, masks, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(gfx++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, (rectTop + rectHeight) * 4, - G_TX_RENDERTILE, s, 0, dsdx, dtdy); + gSPTextureRectangle(gfx++, rectLeft << 2, rectTop << 2, (rectLeft + rectWidth) << 2, (rectTop + rectHeight) << 2, + G_TX_RENDERTILE, rects, 0, dsdx, dtdy); return gfx; } +/** + * Draw an I8 texture on a Quadrangle + * + * @param gfx the display list pointer + * @param texture + * @param textureWidth texture image width in texels + * @param textureHeight texture image height in texels + * @param point index of the first point to draw the Quadrangle + * @return Gfx* the display list pointer + */ Gfx* Gfx_DrawTexQuadIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point) { gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, @@ -379,6 +509,17 @@ Gfx* Gfx_DrawTexQuadIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 text return gfx; } +/** + * Draw a 4b texture on a Quadrangle + * + * @param gfx the display list pointer + * @param texture + * @param fmt texture image format + * @param textureWidth texture image width in texels + * @param textureHeight texture image height in texels + * @param point index of the first point to draw the Quadrangle + * @return Gfx* the display list pointer + */ Gfx* Gfx_DrawTexQuad4b(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point) { gDPLoadTextureBlock_4b(gfx++, texture, fmt, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -759,7 +900,7 @@ void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState) { void Interface_StartGoronRaceTimer(s32 arg0) { if (gSaveContext.timerStates[TIMER_ID_GORON_RACE_UNUSED] != TIMER_STATE_OFF) { // Goron race started - if (gSaveContext.eventInf[1] & 1) { + if (CHECK_EVENTINF(EVENTINF_10)) { gSaveContext.timerCurTimes[TIMER_ID_GORON_RACE_UNUSED] = SECONDS_TO_TIMER_PRECISE(2, 39); } else { gSaveContext.timerCurTimes[TIMER_ID_GORON_RACE_UNUSED] = SECONDS_TO_TIMER_PRECISE(0, 1); @@ -2719,16 +2860,16 @@ u8 Item_Give(PlayState* play, u8 item) { } else if (item == ITEM_MAGIC_SMALL) { Magic_Add(play, MAGIC_NORMAL_METER / 2); - if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { - gSaveContext.save.weekEventReg[12] |= 0x80; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_12_80)) { + SET_WEEKEVENTREG(WEEKEVENTREG_12_80); return ITEM_NONE; } return item; } else if (item == ITEM_MAGIC_LARGE) { Magic_Add(play, MAGIC_NORMAL_METER); - if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { - gSaveContext.save.weekEventReg[12] |= 0x80; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_12_80)) { + SET_WEEKEVENTREG(WEEKEVENTREG_12_80); return ITEM_NONE; } return item; @@ -2938,7 +3079,7 @@ u8 Item_CheckObtainabilityImpl(u8 item) { return ITEM_RECOVERY_HEART; } else if ((item == ITEM_MAGIC_SMALL) || (item == ITEM_MAGIC_LARGE)) { - if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_12_80)) { return ITEM_NONE; } return item; @@ -3195,7 +3336,7 @@ void Interface_SetAButtonDoAction(PlayState* play, u16 aButtonDoAction) { interfaceCtx->aButtonState = A_BTN_STATE_1; interfaceCtx->aButtonRoll = 0.0f; Interface_LoadAButtonDoActionLabel(interfaceCtx, aButtonDoAction, 1); - if (pauseCtx->state != 0) { + if (pauseCtx->state != PAUSE_STATE_OFF) { interfaceCtx->aButtonState = A_BTN_STATE_3; } } @@ -3400,7 +3541,8 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { play->actorCtx.lensActive = false; } - if (gSaveContext.save.weekEventReg[14] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + // Drank Chateau Romani magicToConsume = 0; } gSaveContext.magicToConsume = magicToConsume; @@ -3419,7 +3561,8 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { play->actorCtx.lensActive = false; } - if (gSaveContext.save.weekEventReg[14] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + // Drank Chateau Romani magicToConsume = 0; } gSaveContext.magicToConsume = magicToConsume; @@ -3497,7 +3640,8 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { play->actorCtx.lensActive = false; } - if (gSaveContext.save.weekEventReg[14] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + // Drank Chateau Romani magicToConsume = 0; } gSaveContext.save.playerData.magic -= magicToConsume; @@ -3585,7 +3729,8 @@ void Magic_Update(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 magicCapacityTarget; - if (gSaveContext.save.weekEventReg[14] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + // Drank Chateau Romani Magic_FlashMeterBorder(); } @@ -3635,7 +3780,7 @@ void Magic_Update(PlayState* play) { case MAGIC_STATE_CONSUME: // Consume magic until target is reached or no more magic is available - if (!(gSaveContext.save.weekEventReg[14] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { gSaveContext.save.playerData.magic = ((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.magicToConsume); if (gSaveContext.save.playerData.magic <= 0) { @@ -3648,7 +3793,7 @@ void Magic_Update(PlayState* play) { case MAGIC_STATE_METER_FLASH_1: case MAGIC_STATE_METER_FLASH_2: case MAGIC_STATE_METER_FLASH_3: - if (!(gSaveContext.save.weekEventReg[14] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { Magic_FlashMeterBorder(); } break; @@ -3659,8 +3804,8 @@ void Magic_Update(PlayState* play) { break; case MAGIC_STATE_CONSUME_LENS: - // Slowly consume magic while lens is on - if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && + // Slowly consume magic while Lens of Truth is active + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && (msgCtx->msgMode == 0) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play)) { @@ -3682,19 +3827,19 @@ void Magic_Update(PlayState* play) { interfaceCtx->magicConsumptionTimer--; if (interfaceCtx->magicConsumptionTimer == 0) { - if (!(gSaveContext.save.weekEventReg[14] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { gSaveContext.save.playerData.magic--; } interfaceCtx->magicConsumptionTimer = 80; } } - if (!(gSaveContext.save.weekEventReg[14] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { Magic_FlashMeterBorder(); } break; case MAGIC_STATE_CONSUME_GORON_ZORA_SETUP: - if (!(gSaveContext.save.weekEventReg[14] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { gSaveContext.save.playerData.magic -= 2; } if (gSaveContext.save.playerData.magic <= 0) { @@ -3703,13 +3848,13 @@ void Magic_Update(PlayState* play) { gSaveContext.magicState = MAGIC_STATE_CONSUME_GORON_ZORA; // fallthrough case MAGIC_STATE_CONSUME_GORON_ZORA: - if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && (msgCtx->msgMode == 0) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { if (!Play_InCsMode(play)) { interfaceCtx->magicConsumptionTimer--; if (interfaceCtx->magicConsumptionTimer == 0) { - if (!(gSaveContext.save.weekEventReg[14] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { gSaveContext.save.playerData.magic--; } if (gSaveContext.save.playerData.magic <= 0) { @@ -3719,19 +3864,19 @@ void Magic_Update(PlayState* play) { } } } - if (!(gSaveContext.save.weekEventReg[14] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { Magic_FlashMeterBorder(); } break; case MAGIC_STATE_CONSUME_GIANTS_MASK: - if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && (msgCtx->msgMode == 0) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { if (!Play_InCsMode(play)) { interfaceCtx->magicConsumptionTimer--; if (interfaceCtx->magicConsumptionTimer == 0) { - if (!(gSaveContext.save.weekEventReg[14] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { gSaveContext.save.playerData.magic--; } if (gSaveContext.save.playerData.magic <= 0) { @@ -3741,7 +3886,7 @@ void Magic_Update(PlayState* play) { } } } - if (!(gSaveContext.save.weekEventReg[14] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { Magic_FlashMeterBorder(); } break; @@ -3797,7 +3942,8 @@ void Magic_DrawMeter(PlayState* play) { // Fill the rest of the meter with the normal magic color gDPPipeSync(OVERLAY_DISP++); - if (gSaveContext.save.weekEventReg[14] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + // Blue magic (drank Chateau Romani) gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha); @@ -3809,7 +3955,8 @@ void Magic_DrawMeter(PlayState* play) { (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } else { // Fill the whole meter with the normal magic color - if (gSaveContext.save.weekEventReg[14] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + // Blue magic (drank Chateau Romani) gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha); @@ -3895,8 +4042,8 @@ void Interface_DrawItemButtons(PlayState* play) { Gfx_DrawRect_DropShadow(OVERLAY_DISP, D_801BF9D8[1], D_801BF9E0[1], D_801BFAF8[1], D_801BFAF8[1], D_801BF9E4[3] * 2, D_801BF9E4[3] * 2, 255, 240, 0, interfaceCtx->cRightAlpha); - if ((pauseCtx->state < 8) || (pauseCtx->state >= 19)) { - if ((play->pauseCtx.state != 0) || (play->pauseCtx.debugEditor != DEBUG_EDITOR_NONE)) { + if (!IS_PAUSE_STATE_GAMEOVER) { + if ((play->pauseCtx.state != PAUSE_STATE_OFF) || (play->pauseCtx.debugEditor != DEBUG_EDITOR_NONE)) { OVERLAY_DISP = Gfx_DrawRect_DropShadow(OVERLAY_DISP, 0x88, 0x11, 0x16, 0x16, 0x5B6, 0x5B6, 0xFF, 0x82, 0x3C, interfaceCtx->startAlpha); // Start Button Texture, Color & Label @@ -3912,8 +4059,9 @@ void Interface_DrawItemButtons(PlayState* play) { } } - if (interfaceCtx->tatlCalling && (play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && - (play->csCtx.state == 0) && (sPictographState == PICTOGRAPH_STATE_OFF)) { + if (interfaceCtx->tatlCalling && (play->pauseCtx.state == PAUSE_STATE_OFF) && + (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && (play->csCtx.state == 0) && + (sPictographState == PICTOGRAPH_STATE_OFF)) { if (sCUpInvisible == 0) { // C-Up Button Texture, Color & Label (Tatl Text) gDPPipeSync(OVERLAY_DISP++); @@ -4268,7 +4416,8 @@ void Interface_DrawPauseMenuEquippingIcons(PlayState* play) { // after `Interface_DrawAButton`, which sets the view to perspective mode Interface_SetOrthoView(interfaceCtx); - if ((pauseCtx->state == 6) && ((pauseCtx->unk_200 == 3) || (pauseCtx->unk_200 == 0xF))) { + if ((pauseCtx->state == PAUSE_STATE_MAIN) && ((pauseCtx->mainState == PAUSE_MAIN_STATE_EQUIP_ITEM) || + (pauseCtx->mainState == PAUSE_MAIN_STATE_EQUIP_MASK))) { // Inventory Equip Effects gSPSegment(OVERLAY_DISP++, 0x08, pauseCtx->iconItemSegment); func_8012C8D4(play->state.gfxCtx); @@ -4434,7 +4583,8 @@ void Interface_DrawClock(PlayState* play) { D_801BFB30 = 0; } - if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && + (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { func_8012C654(play->state.gfxCtx); @@ -5549,7 +5699,7 @@ void Interface_DrawTimers(PlayState* play) { OPEN_DISPS(play->state.gfxCtx); // Not satisfying any of these conditions will pause the timer - if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && ((msgCtx->msgMode == 0) || ((msgCtx->msgMode != 0) && (msgCtx->currentTextId >= 0x1BB2) && (msgCtx->currentTextId <= 0x1BB6))) && @@ -5761,7 +5911,7 @@ void Interface_DrawTimers(PlayState* play) { gSaveContext.timerStopTimes[sTimerId] = SECONDS_TO_TIMER(120); gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(120); } - } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneId == SCENE_DEKUTES) && + } else if (CHECK_EVENTINF(EVENTINF_34) && (play->sceneId == SCENE_DEKUTES) && (gSaveContext.timerStopTimes[sTimerId] >= SECONDS_TO_TIMER(120))) { gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(120); } @@ -5861,7 +6011,7 @@ void Interface_DrawTimers(PlayState* play) { if (osTime >= SECONDS_TO_TIMER(120)) { osTime = SECONDS_TO_TIMER(120); } - } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneId == SCENE_DEKUTES) && + } else if (CHECK_EVENTINF(EVENTINF_34) && (play->sceneId == SCENE_DEKUTES) && (osTime >= SECONDS_TO_TIMER(120))) { osTime = SECONDS_TO_TIMER(120); } @@ -5878,7 +6028,7 @@ void Interface_DrawTimers(PlayState* play) { play_sound(NA_SE_SY_WARNING_COUNT_E); sTimerBeepSfxSeconds = sTimerDigits[4]; } - } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneId == SCENE_DEKUTES)) { + } else if (CHECK_EVENTINF(EVENTINF_34) && (play->sceneId == SCENE_DEKUTES)) { if ((((void)0, gSaveContext.timerCurTimes[sTimerId]) > (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - SECONDS_TO_TIMER(9))) && (sTimerBeepSfxSeconds != sTimerDigits[4])) { @@ -5915,7 +6065,7 @@ void Interface_DrawTimers(PlayState* play) { } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } - } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneId == SCENE_DEKUTES)) { + } else if (CHECK_EVENTINF(EVENTINF_34) && (play->sceneId == SCENE_DEKUTES)) { if (((void)0, gSaveContext.timerCurTimes[sTimerId]) >= gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1]) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); @@ -5982,7 +6132,7 @@ void Interface_UpdateBottleTimers(PlayState* play) { s32 pad[2]; // Not satisfying any of these conditions will pause the bottle timer - if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && ((msgCtx->msgMode == 0) || ((msgCtx->currentTextId >= 0x100) && (msgCtx->currentTextId <= 0x200)) || ((msgCtx->currentTextId >= 0x1BB2) && (msgCtx->currentTextId <= 0x1BB6))) && @@ -6047,7 +6197,7 @@ void Interface_DrawMinigameIcons(PlayState* play) { func_8012C654(play->state.gfxCtx); - if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { // Carrots rendering if the action corresponds to riding a horse if (interfaceCtx->aButtonHorseDoAction == DO_ACTION_FASTER) { // Load Carrot Icon @@ -6420,7 +6570,7 @@ void Interface_Draw(PlayState* play) { Magic_DrawMeter(play); Minimap_Draw(play); - if ((R_PAUSE_MENU_MODE != 2) && (R_PAUSE_MENU_MODE != 3)) { + if ((R_PAUSE_BG_PRERENDER_STATE != 2) && (R_PAUSE_BG_PRERENDER_STATE != 3)) { Actor_DrawZTarget(&play->actorCtx.targetContext, play); } @@ -6438,7 +6588,7 @@ void Interface_Draw(PlayState* play) { Interface_DrawPauseMenuEquippingIcons(play); // Draw either the minigame countdown or the three-day clock - if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { if ((interfaceCtx->minigameState != MINIGAME_STATE_NONE) && (interfaceCtx->minigameState < MINIGAME_STATE_NO_COUNTDOWN_SETUP)) { // Minigame Countdown @@ -6639,7 +6789,7 @@ void Interface_Update(PlayState* play) { u16 aButtonDoAction; // Update buttons - if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { if (play->gameOverCtx.state == GAMEOVER_INACTIVE) { Interface_UpdateButtonsPart1(play); } @@ -6817,7 +6967,7 @@ void Interface_Update(PlayState* play) { } // Update minigame perfect - if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { if (interfaceCtx->isMinigamePerfect) { if (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_1) { Interface_UpdateMinigamePerfectType1(play); @@ -6830,7 +6980,7 @@ void Interface_Update(PlayState* play) { } // Update minigame State - if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { if (interfaceCtx->minigameState) { // != MINIGAME_STATE_NONE switch (interfaceCtx->minigameState) { case MINIGAME_STATE_COUNTDOWN_SETUP_3: // minigame countdown 3 diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index c6a61dd31..655c3a0f7 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" #include "objects/gameplay_keep/gameplay_keep.h" @@ -77,7 +76,7 @@ void func_80127B64(struct_801F58B0 arg0[], s32 count, Vec3f* arg2); s32 func_801226E0(PlayState* play, s32 arg1) { if (arg1 == 0) { - Play_SetupRespawnPoint(&play->state, RESPAWN_MODE_DOWN, 0xBFF); + Play_SetupRespawnPoint(&play->state, RESPAWN_MODE_DOWN, PLAYER_PARAMS(0xFF, PLAYER_INITMODE_B)); if (play->sceneId == SCENE_KAKUSIANA) { return 1; } @@ -148,7 +147,7 @@ void func_801229A0(PlayState* play, Player* player) { CLOSE_DISPS(play->state.gfxCtx); } -void func_801229EC(UNK_TYPE arg0, UNK_TYPE arg1) { +void func_801229EC(Actor* thisx, PlayState* play) { } s16 sMaskObjectIds[PLAYER_MASK_MAX - 1] = { @@ -185,7 +184,8 @@ void func_801229FC(Player* player) { s32 i; for (i = 0; i < ARRAY_COUNT(D_801F58B0); i++) { - func_80127B64(D_801F58B0[i], ARRAY_COUNT(D_801F58B0[i]), &player->bodyPartsPos[7]); + func_80127B64(D_801F58B0[i], ARRAY_COUNT(D_801F58B0[i]), + &player->bodyPartsPos[PLAYER_BODYPART_HEAD]); } } } @@ -328,7 +328,7 @@ void func_80122F28(Player* player) { (!(player->stateFlags1 & (PLAYER_STATE1_400 | PLAYER_STATE1_800 | PLAYER_STATE1_200000 | PLAYER_STATE1_800000 | PLAYER_STATE1_20000000))) && (!(player->stateFlags2 & PLAYER_STATE2_1))) { - if (player->doorType < 0) { + if (player->doorType <= PLAYER_DOORTYPE_TALKING) { ActorCutscene_SetIntentToPlay(0x7C); } else { ActorCutscene_SetIntentToPlay(0x7D); @@ -354,27 +354,27 @@ void func_8012300C(PlayState* play, s32 arg1) { player->unk_B2B = arg1; } -void func_8012301C(Player* player, PlayState* play2) { +void func_8012301C(Actor* thisx, PlayState* play2) { PlayState* play = play2; - s32 pad; + Player* this = (Player*)thisx; - player->unk_AE7++; + this->unk_AE7++; - if (player->unk_AE7 == 2) { - s16 objectId = gPlayerFormObjectIndices[((void)0, gSaveContext.save.playerForm)]; + if (this->unk_AE7 == 2) { + s16 objectId = gPlayerFormObjectIndices[GET_PLAYER_FORM]; gActorOverlayTable[ACTOR_PLAYER].initInfo->objectId = objectId; - func_8012F73C(&play->objectCtx, player->actor.objBankIndex, objectId); - player->actor.objBankIndex = Object_GetIndex(&play->objectCtx, GAMEPLAY_KEEP); - } else if (player->unk_AE7 >= 3) { + func_8012F73C(&play->objectCtx, this->actor.objBankIndex, objectId); + this->actor.objBankIndex = Object_GetIndex(&play->objectCtx, GAMEPLAY_KEEP); + } else if (this->unk_AE7 >= 3) { s32 objBankIndex = Object_GetIndex(&play->objectCtx, gActorOverlayTable[ACTOR_PLAYER].initInfo->objectId); if (Object_IsLoaded(&play->objectCtx, objBankIndex)) { - player->actor.objBankIndex = objBankIndex; - player->actor.shape.rot.z = gSaveContext.save.playerForm + 1; - player->actor.init = PlayerCall_Init; - player->actor.update = PlayerCall_Update; - player->actor.draw = PlayerCall_Draw; + this->actor.objBankIndex = objBankIndex; + this->actor.shape.rot.z = GET_PLAYER_FORM + 1; + this->actor.init = PlayerCall_Init; + this->actor.update = PlayerCall_Update; + this->actor.draw = PlayerCall_Draw; gSaveContext.save.equippedMask = PLAYER_MASK_NONE; } } @@ -456,7 +456,7 @@ void func_80123140(PlayState* play, Player* player) { s32 Player_InBlockingCsMode(PlayState* play, Player* player) { return (player->stateFlags1 & (PLAYER_STATE1_80 | PLAYER_STATE1_200 | PLAYER_STATE1_20000000)) || - (player->csMode != 0) || (play->transitionTrigger == TRANS_TRIGGER_START) || + (player->csMode != PLAYER_CSMODE_0) || (play->transitionTrigger == TRANS_TRIGGER_START) || (play->transitionMode != TRANS_MODE_OFF) || (player->stateFlags1 & PLAYER_STATE1_1) || (player->stateFlags3 & PLAYER_STATE3_80) || (play->actorCtx.unk268 != 0); } @@ -480,7 +480,7 @@ s32 func_80123448(PlayState* play) { Player* player = GET_PLAYER(play); return (player->stateFlags1 & PLAYER_STATE1_400000) && - (player->transformation != PLAYER_FORM_HUMAN || (!func_80123434(player) && player->unk_730 == NULL)); + (player->transformation != PLAYER_FORM_HUMAN || (!func_80123434(player) && player->targetedActor == NULL)); } // TODO: Player_IsGoronOrDeku is a temporary name until we have more info on this function. @@ -536,7 +536,7 @@ ItemId func_8012364C(PlayState* play, Player* player, s32 arg2) { } if (arg2 == 0) { - s32 item = Inventory_GetBtnBItem(play); + ItemId item = Inventory_GetBtnBItem(play); if (item >= ITEM_FD) { return item; @@ -558,27 +558,21 @@ ItemId func_8012364C(PlayState* play, Player* player, s32 arg2) { } if (arg2 == 1) { - return (gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] != BTN_DISABLED) ? BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) - : (gSaveContext.hudVisibility == HUD_VISIBILITY_A_B_C) ? BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) - : ITEM_NONE; + return C_BTN_ITEM(EQUIP_SLOT_C_LEFT); } if (arg2 == 2) { - return (gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] != BTN_DISABLED) ? BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) - : (gSaveContext.hudVisibility == HUD_VISIBILITY_A_B_C) ? BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) - : ITEM_NONE; + return C_BTN_ITEM(EQUIP_SLOT_C_DOWN); } - return (gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] != BTN_DISABLED) ? BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) - : (gSaveContext.hudVisibility == HUD_VISIBILITY_A_B_C) ? BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) - : ITEM_NONE; + return C_BTN_ITEM(EQUIP_SLOT_C_RIGHT); } u16 sCItemButtons[] = { BTN_CLEFT, BTN_CDOWN, BTN_CRIGHT }; -s32 func_80123810(PlayState* play) { +PlayerItemAction func_80123810(PlayState* play) { Player* player = GET_PLAYER(play); - s32 temp_v0; + PlayerItemAction itemAction; ItemId itemId; s32 i; @@ -587,7 +581,7 @@ s32 func_80123810(PlayState* play) { play->interfaceCtx.unk_222 = 0; play->interfaceCtx.unk_224 = 0; Interface_SetHudVisibility(play->msgCtx.unk_120BC); - return -1; + return PLAYER_IA_MINUS1; } } else { gSaveContext.save.unk_06--; @@ -602,110 +596,110 @@ s32 func_80123810(PlayState* play) { play->interfaceCtx.unk_224 = 0; Interface_SetHudVisibility(play->msgCtx.unk_120BC); - if ((itemId >= ITEM_FD) || (temp_v0 = play->unk_18794(play, player, itemId, i), (temp_v0 < 0))) { + if ((itemId >= ITEM_FD) || ((itemAction = play->unk_18794(play, player, itemId)) <= PLAYER_IA_MINUS1)) { play_sound(NA_SE_SY_ERROR); - return -1; + return PLAYER_IA_MINUS1; } else { s32 pad; player->heldItemButton = i; - return temp_v0; + return itemAction; } } } - return 0; + return PLAYER_IA_NONE; } -// Used to map action params to model groups -u8 sActionModelGroups[PLAYER_AP_MAX] = { - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_NONE - PLAYER_MODELGROUP_13, // PLAYER_AP_LAST_USED - PLAYER_MODELGROUP_STICK, // PLAYER_AP_FISHING_ROD - PLAYER_MODELGROUP_ONE_HAND_SWORD, // PLAYER_AP_SWORD_KOKIRI - PLAYER_MODELGROUP_ONE_HAND_SWORD, // PLAYER_AP_SWORD_RAZOR - PLAYER_MODELGROUP_ONE_HAND_SWORD, // PLAYER_AP_SWORD_GILDED - PLAYER_MODELGROUP_TWO_HAND_SWORD, // PLAYER_AP_SWORD_GREAT_FAIRY - PLAYER_MODELGROUP_STICK, // PLAYER_AP_STICK - PLAYER_MODELGROUP_ZORA_FINS, // PLAYER_AP_ZORA_FINS - PLAYER_MODELGROUP_BOW, // PLAYER_AP_BOW - PLAYER_MODELGROUP_BOW, // PLAYER_AP_BOW_FIRE - PLAYER_MODELGROUP_BOW, // PLAYER_AP_BOW_ICE - PLAYER_MODELGROUP_BOW, // PLAYER_AP_BOW_LIGHT - PLAYER_MODELGROUP_HOOKSHOT, // PLAYER_AP_HOOKSHOT - PLAYER_MODELGROUP_EXPLOSIVES, // PLAYER_AP_BOMB - PLAYER_MODELGROUP_EXPLOSIVES, // PLAYER_AP_POWDER_KEG - PLAYER_MODELGROUP_EXPLOSIVES, // PLAYER_AP_BOMBCHU - PLAYER_MODELGROUP_8, // PLAYER_AP_11 - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_NUT - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_PICTO_BOX - PLAYER_MODELGROUP_INSTRUMENT, // PLAYER_AP_OCARINA - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_FISH - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_SPRING_WATER - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_HOT_SPRING_WATER - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_ZORA_EGG - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_DEKU_PRINCESS - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_GOLD_DUST - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_1C - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_SEAHORSE - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_MUSHROOM - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_HYLIAN_LOACH - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_BUG - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_POE - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_BIG_POE - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_POTION_RED - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_POTION_BLUE - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_POTION_GREEN - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_MILK - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_MILK_HALF - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_CHATEAU - PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_FAIRY - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MOON_TEAR - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_DEED_LAND - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_ROOM_KEY - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_LETTER_TO_KAFEI - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MAGIC_BEANS - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_DEED_SWAMP - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_DEED_MOUNTAIN - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_DEED_OCEAN - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_32 - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_LETTER_MAMA - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_34 - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_35 - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_PENDANT_OF_MEMORIES - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_37 - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_38 - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_39 - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_TRUTH - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_KAFEIS_MASK - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_ALL_NIGHT - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_BUNNY - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_KEATON - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_GARO - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_ROMANI - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_CIRCUS_LEADER - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_POSTMAN - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_COUPLE - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_GREAT_FAIRY - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_GIBDO - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_DON_GERO - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_KAMARO - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_CAPTAIN - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_STONE - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_BREMEN - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_BLAST - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_SCENTS - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_GIANT - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_FIERCE_DEITY - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_GORON - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_ZORA - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_DEKU - PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_LENS +// Used to map item actions to model groups +u8 sActionModelGroups[PLAYER_IA_MAX] = { + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_NONE + PLAYER_MODELGROUP_13, // PLAYER_IA_LAST_USED + PLAYER_MODELGROUP_STICK, // PLAYER_IA_FISHING_ROD + PLAYER_MODELGROUP_ONE_HAND_SWORD, // PLAYER_IA_SWORD_KOKIRI + PLAYER_MODELGROUP_ONE_HAND_SWORD, // PLAYER_IA_SWORD_RAZOR + PLAYER_MODELGROUP_ONE_HAND_SWORD, // PLAYER_IA_SWORD_GILDED + PLAYER_MODELGROUP_TWO_HAND_SWORD, // PLAYER_IA_SWORD_GREAT_FAIRY + PLAYER_MODELGROUP_STICK, // PLAYER_IA_STICK + PLAYER_MODELGROUP_ZORA_FINS, // PLAYER_IA_ZORA_FINS + PLAYER_MODELGROUP_BOW, // PLAYER_IA_BOW + PLAYER_MODELGROUP_BOW, // PLAYER_IA_BOW_FIRE + PLAYER_MODELGROUP_BOW, // PLAYER_IA_BOW_ICE + PLAYER_MODELGROUP_BOW, // PLAYER_IA_BOW_LIGHT + PLAYER_MODELGROUP_HOOKSHOT, // PLAYER_IA_HOOKSHOT + PLAYER_MODELGROUP_EXPLOSIVES, // PLAYER_IA_BOMB + PLAYER_MODELGROUP_EXPLOSIVES, // PLAYER_IA_POWDER_KEG + PLAYER_MODELGROUP_EXPLOSIVES, // PLAYER_IA_BOMBCHU + PLAYER_MODELGROUP_8, // PLAYER_IA_11 + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_NUT + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_PICTO_BOX + PLAYER_MODELGROUP_INSTRUMENT, // PLAYER_IA_OCARINA + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_FISH + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_SPRING_WATER + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_HOT_SPRING_WATER + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_ZORA_EGG + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_DEKU_PRINCESS + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_GOLD_DUST + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_1C + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_SEAHORSE + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_MUSHROOM + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_HYLIAN_LOACH + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_BUG + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_POE + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_BIG_POE + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_POTION_RED + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_POTION_BLUE + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_POTION_GREEN + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_MILK + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_MILK_HALF + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_CHATEAU + PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_FAIRY + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MOON_TEAR + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_DEED_LAND + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_ROOM_KEY + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_LETTER_TO_KAFEI + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MAGIC_BEANS + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_DEED_SWAMP + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_DEED_MOUNTAIN + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_DEED_OCEAN + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_32 + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_LETTER_MAMA + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_34 + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_35 + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_PENDANT_OF_MEMORIES + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_37 + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_38 + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_39 + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_TRUTH + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_KAFEIS_MASK + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_ALL_NIGHT + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_BUNNY + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_KEATON + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_GARO + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_ROMANI + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_CIRCUS_LEADER + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_POSTMAN + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_COUPLE + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_GREAT_FAIRY + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_GIBDO + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_DON_GERO + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_KAMARO + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_CAPTAIN + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_STONE + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_BREMEN + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_BLAST + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_SCENTS + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_GIANT + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_FIERCE_DEITY + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_GORON + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_ZORA + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_DEKU + PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_LENS }; -PlayerModelGroup Player_ActionToModelGroup(Player* player, PlayerActionParam actionParam) { - PlayerModelGroup modelGroup = sActionModelGroups[actionParam]; +PlayerModelGroup Player_ActionToModelGroup(Player* player, PlayerItemAction itemAction) { + PlayerModelGroup modelGroup = sActionModelGroups[itemAction]; if ((modelGroup == PLAYER_MODELGROUP_ONE_HAND_SWORD) && Player_IsGoronOrDeku(player)) { return PLAYER_MODELGROUP_1; @@ -1177,7 +1171,7 @@ u8 D_801C07AC[] = { void Player_SetModelsForHoldingShield(Player* player) { if (player->stateFlags1 & PLAYER_STATE1_400000) { - if ((player->heldItemActionParam < 0) || (player->heldItemActionParam == player->itemActionParam)) { + if ((player->itemAction <= PLAYER_IA_MINUS1) || (player->itemAction == player->heldItemAction)) { if (!Player_IsHoldingTwoHandedWeapon(player)) { if (!Player_IsGoronOrDeku(player)) { D_801F59E0 = player->transformation * 2; @@ -1192,7 +1186,7 @@ void Player_SetModelsForHoldingShield(Player* player) { player->sheathDLists = &sPlayerDListGroups[player->sheathType][D_801F59E0]; player->modelAnimType = PLAYER_ANIMTYPE_2; - player->heldItemActionParam = -1; + player->itemAction = PLAYER_IA_MINUS1; } } } @@ -1243,19 +1237,19 @@ void Player_SetModelGroup(Player* player, PlayerModelGroup modelGroup) { } void func_80123C58(Player* player) { - player->heldItemActionParam = player->itemActionParam; - Player_SetModelGroup(player, Player_ActionToModelGroup(player, player->itemActionParam)); + player->itemAction = player->heldItemAction; + Player_SetModelGroup(player, Player_ActionToModelGroup(player, player->heldItemAction)); player->unk_AA5 = 0; } void Player_SetEquipmentData(PlayState* play, Player* player) { - if (player->csMode != 0x86) { + if (player->csMode != PLAYER_CSMODE_134) { player->currentShield = GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD); if ((player->transformation != PLAYER_FORM_ZORA) || (((player->currentBoots != PLAYER_BOOTS_ZORA_LAND)) && (player->currentBoots != PLAYER_BOOTS_ZORA_UNDERWATER))) { player->currentBoots = D_801BFF90[player->transformation]; } - Player_SetModelGroup(player, Player_ActionToModelGroup(player, player->itemActionParam)); + Player_SetModelGroup(player, Player_ActionToModelGroup(player, player->heldItemAction)); func_80123140(play, player); if (player->unk_B62 != 0) { player->unk_B62 = 1; @@ -1263,19 +1257,19 @@ void Player_SetEquipmentData(PlayState* play, Player* player) { } } -void func_80123D50(PlayState* play, Player* player, ItemId itemId, PlayerActionParam actionParam) { +void Player_UpdateBottleHeld(PlayState* play, Player* player, ItemId itemId, PlayerItemAction itemAction) { Inventory_UpdateBottleItem(play, itemId, player->heldItemButton); if (itemId != ITEM_BOTTLE) { player->heldItemId = itemId; - player->itemActionParam = actionParam; + player->heldItemAction = itemAction; } - player->heldItemActionParam = actionParam; + player->itemAction = itemAction; } void func_80123DA4(Player* player) { - player->unk_730 = NULL; + player->targetedActor = NULL; player->stateFlags2 &= ~PLAYER_STATE2_2000; } @@ -1300,7 +1294,7 @@ void func_80123E90(PlayState* play, Actor* actor) { Player* player = GET_PLAYER(play); func_80123DC0(player); - player->unk_730 = actor; + player->targetedActor = actor; player->unk_A78 = actor; player->stateFlags1 |= PLAYER_STATE1_10000; Camera_SetViewParam(Play_GetCamera(play, CAM_ID_MAIN), CAM_VIEW_TARGET, actor); @@ -1324,7 +1318,7 @@ s32 Player_IsBurningStickInRange(PlayState* play, Vec3f* pos, f32 xzRange, f32 y Vec3f diff; s32 pad; - if ((this->itemActionParam == PLAYER_AP_STICK) && (this->unk_B28 != 0)) { + if ((this->heldItemAction == PLAYER_IA_STICK) && (this->unk_B28 != 0)) { Math_Vec3f_Diff(&this->meleeWeaponInfo[0].tip, pos, &diff); return (SQXZ(diff) <= SQ(xzRange)) && (0.0f <= diff.y) && (diff.y <= yRange); } @@ -1333,7 +1327,7 @@ s32 Player_IsBurningStickInRange(PlayState* play, Vec3f* pos, f32 xzRange, f32 y } u8 Player_GetStrength(void) { - return sPlayerStrengths[(void)0, gSaveContext.save.playerForm]; + return sPlayerStrengths[GET_PLAYER_FORM]; } u8 Player_GetMask(PlayState* play) { @@ -1363,19 +1357,19 @@ s32 Player_IsHoldingMirrorShield(PlayState* play) { } s32 Player_IsHoldingHookshot(Player* player) { - return player->itemActionParam == PLAYER_AP_HOOKSHOT; + return player->heldItemAction == PLAYER_IA_HOOKSHOT; } s32 func_801240DC(Player* player) { return Player_IsHoldingHookshot(player) && (player->heldActor == NULL); } -s32 func_80124110(Player* player, PlayerActionParam actionParam) { - s32 temp_v0 = actionParam - PLAYER_AP_FISHING_ROD; +s32 func_80124110(Player* player, PlayerItemAction itemAction) { + s32 temp_v0 = itemAction - PLAYER_IA_FISHING_ROD; if (player->transformation != PLAYER_FORM_GORON) { - if (((actionParam - PLAYER_AP_FISHING_ROD) > (PLAYER_AP_FISHING_ROD - PLAYER_AP_FISHING_ROD)) && - ((actionParam - PLAYER_AP_FISHING_ROD) < (PLAYER_AP_SWORD_GREAT_FAIRY - PLAYER_AP_FISHING_ROD))) { + if (((itemAction - PLAYER_IA_FISHING_ROD) > (PLAYER_IA_FISHING_ROD - PLAYER_IA_FISHING_ROD)) && + ((itemAction - PLAYER_IA_FISHING_ROD) < (PLAYER_IA_SWORD_GREAT_FAIRY - PLAYER_IA_FISHING_ROD))) { return temp_v0; } } @@ -1384,36 +1378,36 @@ s32 func_80124110(Player* player, PlayerActionParam actionParam) { } s32 func_80124148(Player* player) { - return func_80124110(player, player->itemActionParam); + return func_80124110(player, player->heldItemAction); } -s32 Player_ActionToMeleeWeapon(PlayerActionParam actionParam) { - s32 weapon = actionParam - (PLAYER_AP_SWORD_KOKIRI - 1); +s32 Player_ActionToMeleeWeapon(PlayerItemAction itemAction) { + s32 weapon = itemAction - (PLAYER_IA_SWORD_KOKIRI - 1); - if ((weapon > 0) && (weapon <= (PLAYER_AP_ZORA_FINS - (PLAYER_AP_SWORD_KOKIRI - 1)))) { + if ((weapon > 0) && (weapon <= (PLAYER_IA_ZORA_FINS - (PLAYER_IA_SWORD_KOKIRI - 1)))) { return weapon; } return 0; } s32 Player_GetMeleeWeaponHeld(Player* player) { - return Player_ActionToMeleeWeapon(player->itemActionParam); + return Player_ActionToMeleeWeapon(player->heldItemAction); } s32 Player_IsHoldingTwoHandedWeapon(Player* player) { - // Relies on the actionParams for two-handed weapons being contiguous. - if ((player->itemActionParam >= PLAYER_AP_SWORD_GREAT_FAIRY) && (player->itemActionParam <= PLAYER_AP_STICK)) { + // Relies on the itemActions for two-handed weapons being contiguous. + if ((player->heldItemAction >= PLAYER_IA_SWORD_GREAT_FAIRY) && (player->heldItemAction <= PLAYER_IA_STICK)) { return true; } return false; } -s32 Player_ActionToBottle(Player* player, PlayerActionParam actionParam) { - s32 bottle = actionParam - PLAYER_AP_BOTTLE; +s32 Player_ActionToBottle(Player* player, PlayerItemAction itemAction) { + s32 bottle = itemAction - PLAYER_IA_BOTTLE; - // Relies on bottle-related action params to be contiguous - if ((bottle >= (PLAYER_AP_BOTTLE - PLAYER_AP_BOTTLE)) && (bottle <= (PLAYER_AP_BOTTLE_FAIRY - PLAYER_AP_BOTTLE))) { + // Relies on bottle-related item actions to be contiguous + if ((bottle >= (PLAYER_IA_BOTTLE - PLAYER_IA_BOTTLE)) && (bottle <= (PLAYER_IA_BOTTLE_FAIRY - PLAYER_IA_BOTTLE))) { return bottle; } @@ -1421,14 +1415,14 @@ s32 Player_ActionToBottle(Player* player, PlayerActionParam actionParam) { } s32 Player_GetBottleHeld(Player* Player) { - return Player_ActionToBottle(Player, Player->itemActionParam); + return Player_ActionToBottle(Player, Player->heldItemAction); } -s32 Player_ActionToExplosive(Player* player, PlayerActionParam actionParam) { - s32 explosive = actionParam - PLAYER_AP_BOMB; +s32 Player_ActionToExplosive(Player* player, PlayerItemAction itemAction) { + s32 explosive = itemAction - PLAYER_IA_BOMB; - // Relies on explosive-related action params to be contiguous - if ((explosive >= (PLAYER_AP_BOMB - PLAYER_AP_BOMB)) && (explosive <= (PLAYER_AP_BOMBCHU - PLAYER_AP_BOMB))) { + // Relies on explosive-related item actions to be contiguous + if ((explosive >= (PLAYER_IA_BOMB - PLAYER_IA_BOMB)) && (explosive <= (PLAYER_IA_BOMBCHU - PLAYER_IA_BOMB))) { return explosive; } @@ -1436,16 +1430,16 @@ s32 Player_ActionToExplosive(Player* player, PlayerActionParam actionParam) { } s32 Player_GetExplosiveHeld(Player* player) { - return Player_ActionToExplosive(player, player->itemActionParam); + return Player_ActionToExplosive(player, player->heldItemAction); } -s32 Player_ActionToSword(Actor* actor, PlayerActionParam actionParam) { +s32 Player_ActionToSword(Actor* actor, PlayerItemAction itemAction) { s32 sword = 0; //! FAKE: - if ((actionParam == PLAYER_AP_LAST_USED) || - ((sword = actionParam - PLAYER_AP_SWORD_KOKIRI, (sword >= PLAYER_AP_SWORD_KOKIRI - PLAYER_AP_SWORD_KOKIRI)) && - (sword <= PLAYER_AP_SWORD_GREAT_FAIRY - PLAYER_AP_SWORD_KOKIRI))) { + if ((itemAction == PLAYER_IA_LAST_USED) || + ((sword = itemAction - PLAYER_IA_SWORD_KOKIRI, (sword >= PLAYER_IA_SWORD_KOKIRI - PLAYER_IA_SWORD_KOKIRI)) && + (sword <= PLAYER_IA_SWORD_GREAT_FAIRY - PLAYER_IA_SWORD_KOKIRI))) { return sword; } @@ -1730,7 +1724,7 @@ void func_80124FF0(f32 arg0, s16 arg1, Vec3f* arg2, s16 arg3, Vec3f* arg4, Vec3f Math_Vec3f_Diff(arg5, arg4, &sp44); sp40 = sqrtf(SQXZ(sp44)); - sp3C = (sp40 <= 1.0f) ? arg3 : Math_FAtan2F(sp44.z, sp44.x); + sp3C = (sp40 <= 1.0f) ? arg3 : Math_Atan2S_XY(sp44.z, sp44.x); sp40 = (Math_CosS(sp3C - arg3) * sp40) + arg8; if (ABS_ALT(BINANG_SUB(sp3C, arg3)) > 0x4000) { @@ -1738,7 +1732,7 @@ void func_80124FF0(f32 arg0, s16 arg1, Vec3f* arg2, s16 arg3, Vec3f* arg4, Vec3f } sp3C -= arg3; - temp_v0 = Math_FAtan2F(sp44.y, sp40); + temp_v0 = Math_Atan2S_XY(sp44.y, sp40); temp_v0 = CLAMP(temp_v0, (s16)-arg9, arg9); //! FAKE: if (sp3C) {} @@ -2034,9 +2028,9 @@ void Player_DrawGetItem(PlayState* play, Player* player) { if (player->stateFlags1 & PLAYER_STATE1_400) { refPos.y = player->actor.world.pos.y + 30.0f; } else { - refPos.x = player->bodyPartsPos[0xC].x; - refPos.y = player->bodyPartsPos[0xC].y - 6.0f; - refPos.z = player->bodyPartsPos[0xC].z; + refPos.x = player->bodyPartsPos[PLAYER_BODYPART_LEFT_HAND].x; + refPos.y = player->bodyPartsPos[PLAYER_BODYPART_LEFT_HAND].y - 6.0f; + refPos.z = player->bodyPartsPos[PLAYER_BODYPART_LEFT_HAND].z; } } else { refPos.y = player->actor.world.pos.y + 28.0f; @@ -2045,7 +2039,7 @@ void Player_DrawGetItem(PlayState* play, Player* player) { Math_Vec3f_Copy(&refPos, &D_801F59E8); } - drawIdPlusOne = ABS_ALT(player->unk_B2A); + drawIdPlusOne = ABS_ALT(player->getItemDrawId); Player_DrawGetItemImpl(play, player, &refPos, drawIdPlusOne); } } @@ -2254,12 +2248,12 @@ Vec3f D_801C0D6C = { 420.0f, 1210.0f, 380.0f }; f32 D_801C0D78[] = { 0.0f, // Player is not holding a melee weapon - 3000.0f, // PLAYER_AP_SWORD_KOKIRI - 3000.0f, // PLAYER_AP_SWORD_RAZOR - 4000.0f, // PLAYER_AP_SWORD_GILDED - 5500.0f, // PLAYER_AP_SWORD_GREAT_FAIRY - -1.0f, // PLAYER_AP_STICK - 2500.0f, // PLAYER_AP_ZORA_FINS + 3000.0f, // PLAYER_IA_SWORD_KOKIRI + 3000.0f, // PLAYER_IA_SWORD_RAZOR + 4000.0f, // PLAYER_IA_SWORD_GILDED + 5500.0f, // PLAYER_IA_SWORD_GREAT_FAIRY + -1.0f, // PLAYER_IA_STICK + 2500.0f, // PLAYER_IA_ZORA_FINS }; Gfx* D_801C0D94 = object_link_child_DL_017818; @@ -2322,7 +2316,7 @@ void func_80128388(struct_801F58B0 arg0[], struct_80128388_arg1 arg1[], s32 arg2 void Player_DrawGreatFairysMask(PlayState* play, Player* player) { s32 pad; - Mtx* sp90 = GRAPH_ALLOC(play->state.gfxCtx, 6 * sizeof(Mtx)); + Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, 6 * sizeof(Mtx)); Vec3f sp84; Vec3f sp78; Vec3f* iter = D_801C0C0C; @@ -2332,7 +2326,7 @@ void Player_DrawGreatFairysMask(PlayState* play, Player* player) { OPEN_DISPS(play->state.gfxCtx); - gSPSegment(POLY_OPA_DISP++, 0x0B, sp90); + gSPSegment(POLY_OPA_DISP++, 0x0B, mtx); Matrix_MultVec3f(&D_801C0C00, &D_801C0C54[1].unk_08); Math_Vec3f_Lerp(&player->bodyPartsPos[7], &player->bodyPartsPos[0], 0.2f, &D_801C0C54[2].unk_08); @@ -2346,7 +2340,7 @@ void Player_DrawGreatFairysMask(PlayState* play, Player* player) { Matrix_Push(); Matrix_Translate(iter->x, iter->y, iter->z, MTXMODE_APPLY); - func_80128388(D_801F58B0[i], D_801C0C54, 3, &sp90); + func_80128388(D_801F58B0[i], D_801C0C54, 3, &mtx); Matrix_Pop(); iter++; iter2++; diff --git a/src/code/z_quake.c b/src/code/z_quake.c index 964935ea1..b57012ce1 100644 --- a/src/code/z_quake.c +++ b/src/code/z_quake.c @@ -738,10 +738,10 @@ void Distortion_Update(void) { break; } - if (player->unk_B88 < 0) { - xyScaleFactor = (player->unk_B88 - (f32)0x4000) / (f32)0xC000; + if (player->unk_B86[1] < 0) { + xyScaleFactor = (player->unk_B86[1] - (f32)0x4000) / (f32)0xC000; } else { - xyScaleFactor = (player->unk_B88 + (f32)0x4000) / (f32)0xC000; + xyScaleFactor = (player->unk_B86[1] + (f32)0x4000) / (f32)0xC000; } zScaleFactor = -xyScaleFactor; speedScaleFactor = 1.0f; diff --git a/src/code/z_rcp.c b/src/code/z_rcp.c index ace1cc4cd..39f09f1d4 100644 --- a/src/code/z_rcp.c +++ b/src/code/z_rcp.c @@ -1,4 +1,5 @@ #include "global.h" +#include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" Gfx sSetupDL[438] = { /* 0x00 */ @@ -1107,13 +1108,13 @@ void func_8012CA38(GraphicsContext* gfxCtx) { } Gfx* Gfx_BranchTexScroll(Gfx** gfxp, u32 x, u32 y, s32 width, s32 height) { - Gfx* displayList = Graph_DlistAlloc(gfxp, 3 * sizeof(Gfx)); + Gfx* gfx = Graph_DlistAlloc(gfxp, 3 * sizeof(Gfx)); - gDPTileSync(displayList); - gDPSetTileSize(displayList + 1, 0, x, y, (x + ((width - 1) << 2)), (y + ((height - 1) << 2))); - gSPEndDisplayList(displayList + 2); + gDPTileSync(&gfx[0]); + gDPSetTileSize(&gfx[1], 0, x, y, (x + ((width - 1) << 2)), (y + ((height - 1) << 2))); + gSPEndDisplayList(&gfx[2]); - return displayList; + return gfx; } void func_8012CB04(Gfx** gfxp, u32 x, u32 y) { @@ -1125,101 +1126,71 @@ Gfx* func_8012CB28(GraphicsContext* gfxCtx, u32 x, u32 y) { } Gfx* Gfx_TexScroll(GraphicsContext* gfxCtx, u32 x, u32 y, s32 width, s32 height) { - Gfx* displayList; - - { - Gfx* _g = (Gfx*)gfxCtx->polyOpa.d - 4; - displayList = _g; - gfxCtx->polyOpa.d = _g; - } + Gfx* gfx = GRAPH_ALLOC(gfxCtx, 3 * sizeof(Gfx)); x %= 2048; y %= 2048; - gDPTileSync(displayList); - gDPSetTileSize(displayList + 1, 0, x, y, (x + ((width - 1) << 2)), (y + ((height - 1) << 2))); - gSPEndDisplayList(displayList + 2); + gDPTileSync(&gfx[0]); + gDPSetTileSize(&gfx[1], 0, x, y, (x + ((width - 1) << 2)), (y + ((height - 1) << 2))); + gSPEndDisplayList(&gfx[2]); - return displayList; + return gfx; } Gfx* Gfx_TwoTexScroll(GraphicsContext* gfxCtx, s32 tile1, u32 x1, u32 y1, s32 width1, s32 height1, s32 tile2, u32 x2, u32 y2, s32 width2, s32 height2) { - Gfx* displayList; - - { - Gfx* _g = (Gfx*)gfxCtx->polyOpa.d - 6; - displayList = _g; - gfxCtx->polyOpa.d = _g; - } + Gfx* gfx = GRAPH_ALLOC(gfxCtx, 5 * sizeof(Gfx)); x1 %= 2048; y1 %= 2048; x2 %= 2048; y2 %= 2048; - gDPTileSync(displayList); - gDPSetTileSize(displayList + 1, tile1, x1, y1, (x1 + ((width1 - 1) << 2)), (y1 + ((height1 - 1) << 2))); - gDPTileSync(displayList + 2); - gDPSetTileSize(displayList + 3, tile2, x2, y2, (x2 + ((width2 - 1) << 2)), (y2 + ((height2 - 1) << 2))); - gSPEndDisplayList(displayList + 4); + gDPTileSync(&gfx[0]); + gDPSetTileSize(&gfx[1], tile1, x1, y1, (x1 + ((width1 - 1) << 2)), (y1 + ((height1 - 1) << 2))); + gDPTileSync(&gfx[2]); + gDPSetTileSize(&gfx[3], tile2, x2, y2, (x2 + ((width2 - 1) << 2)), (y2 + ((height2 - 1) << 2))); + gSPEndDisplayList(&gfx[4]); - return displayList; + return gfx; } Gfx* Gfx_TwoTexScrollEnvColor(GraphicsContext* gfxCtx, s32 tile1, u32 x1, u32 y1, s32 width1, s32 height1, s32 tile2, u32 x2, u32 y2, s32 width2, s32 height2, s32 r, s32 g, s32 b, s32 a) { - Gfx* displayList; - - { - Gfx* _g = (Gfx*)gfxCtx->polyOpa.d - 6; - displayList = _g; - gfxCtx->polyOpa.d = _g; - } + Gfx* gfx = GRAPH_ALLOC(gfxCtx, 6 * sizeof(Gfx)); x1 %= 2048; y1 %= 2048; x2 %= 2048; y2 %= 2048; - gDPTileSync(displayList); - gDPSetTileSize(displayList + 1, tile1, x1, y1, (x1 + ((width1 - 1) << 2)), (y1 + ((height1 - 1) << 2))); - gDPTileSync(displayList + 2); - gDPSetTileSize(displayList + 3, tile2, x2, y2, (x2 + ((width2 - 1) << 2)), (y2 + ((height2 - 1) << 2))); - gDPSetEnvColor(displayList + 4, r, g, b, a); - gSPEndDisplayList(displayList + 5); + gDPTileSync(&gfx[0]); + gDPSetTileSize(&gfx[1], tile1, x1, y1, (x1 + ((width1 - 1) << 2)), (y1 + ((height1 - 1) << 2))); + gDPTileSync(&gfx[2]); + gDPSetTileSize(&gfx[3], tile2, x2, y2, (x2 + ((width2 - 1) << 2)), (y2 + ((height2 - 1) << 2))); + gDPSetEnvColor(&gfx[4], r, g, b, a); + gSPEndDisplayList(&gfx[5]); - return displayList; + return gfx; } Gfx* Gfx_EnvColor(GraphicsContext* gfxCtx, s32 r, s32 g, s32 b, s32 a) { - Gfx* displayList; + Gfx* gfx = GRAPH_ALLOC(gfxCtx, 2 * sizeof(Gfx)); - { - Gfx* _g = (Gfx*)gfxCtx->polyOpa.d - 2; - displayList = _g; - gfxCtx->polyOpa.d = _g; - } + gDPSetEnvColor(&gfx[0], r, g, b, a); + gSPEndDisplayList(&gfx[1]); - gDPSetEnvColor(displayList, r, g, b, a); - gSPEndDisplayList(displayList + 1); - - return displayList; + return gfx; } Gfx* Gfx_PrimColor(GraphicsContext* gfxCtx, s32 lodfrac, s32 r, s32 g, s32 b, s32 a) { - Gfx* displayList; + Gfx* gfx = GRAPH_ALLOC(gfxCtx, 2 * sizeof(Gfx)); - { - Gfx* _g = (Gfx*)gfxCtx->polyOpa.d - 2; - displayList = _g; - gfxCtx->polyOpa.d = _g; - } + gDPSetPrimColor(&gfx[0], 0, lodfrac, r, g, b, a); + gSPEndDisplayList(&gfx[1]); - gDPSetPrimColor(displayList, 0, lodfrac, r, g, b, a); - gSPEndDisplayList(displayList + 1); - - return displayList; + return gfx; } void func_8012CF0C(GraphicsContext* gfxCtx, s32 clearFb, s32 clearZb, u8 r, u8 g, u8 b) { @@ -1328,7 +1299,7 @@ void func_8012CF0C(GraphicsContext* gfxCtx, s32 clearFb, s32 clearZb, u8 r, u8 g } void func_8012D374(GraphicsContext* gfxCtx, u8 r, u8 g, u8 b) { - if ((R_PAUSE_MENU_MODE < 2) && (D_801F6D10 < 2)) { + if ((R_PAUSE_BG_PRERENDER_STATE <= PAUSE_BG_PRERENDER_SETUP) && (D_801F6D10 < 2)) { func_8012CF0C(gfxCtx, true, true, r, g, b); } else { func_8012CF0C(gfxCtx, false, false, r, g, b); diff --git a/src/code/z_scene.c b/src/code/z_scene.c index 98f87fb44..26c799b16 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -148,8 +148,9 @@ void Scene_HeaderCmdSpawnList(PlayState* play, SceneCmd* cmd) { play->linkActorEntry = (ActorEntry*)Lib_SegmentedToVirtual(cmd->spawnList.segment) + play->setupEntranceList[play->curSpawn].spawn; - if ((play->linkActorEntry->params & 0x0F00) >> 8 == 0x0C || - (gSaveContext.respawnFlag == 0x02 && gSaveContext.respawn[RESPAWN_MODE_RETURN].playerParams == 0x0CFF)) { + if ((PLAYER_GET_INITMODE(play->linkActorEntry) == PLAYER_INITMODE_TELESCOPE) || + ((gSaveContext.respawnFlag == 0x02) && + (gSaveContext.respawn[RESPAWN_MODE_RETURN].playerParams == PLAYER_PARAMS(0xFF, PLAYER_INITMODE_TELESCOPE)))) { // Skull Kid Object Object_Spawn(&play->objectCtx, OBJECT_STK); return; @@ -159,7 +160,7 @@ void Scene_HeaderCmdSpawnList(PlayState* play, SceneCmd* cmd) { nextObject = play->objectCtx.status[play->objectCtx.num].segment; play->objectCtx.num = loadedCount; play->objectCtx.spawnedObjectCount = loadedCount; - playerObjectId = gPlayerFormObjectIndices[(void)0, gSaveContext.save.playerForm]; + playerObjectId = gPlayerFormObjectIndices[GET_PLAYER_FORM]; gActorOverlayTable[0].initInfo->objectId = playerObjectId; Object_Spawn(&play->objectCtx, playerObjectId); @@ -591,7 +592,7 @@ s32 Scene_ProcessHeader(PlayState* play, SceneCmd* header) { } /** - * Creates an entrance from the scene, spawn, and lyaer. + * Creates an entrance from the scene, spawn, and layer. */ u16 Entrance_Create(s32 scene, s32 spawn, s32 layer) { return (scene << 9) | (spawn << 4) | layer; diff --git a/src/code/z_scene_proc.c b/src/code/z_scene_proc.c index 4de83bcaa..67f503e58 100644 --- a/src/code/z_scene_proc.c +++ b/src/code/z_scene_proc.c @@ -113,23 +113,23 @@ void AnimatedMat_DrawTwoTexScroll(PlayState* play, s32 segment, void* params) { * Generates a displaylist that sets the prim and env color, and stores it in the provided segment ID. */ void AnimatedMat_SetColor(PlayState* play, s32 segment, F3DPrimColor* primColorResult, F3DEnvColor* envColor) { - Gfx* colorDList = GRAPH_ALLOC(play->state.gfxCtx, sizeof(Gfx) * 4); + Gfx* gfx = GRAPH_ALLOC(play->state.gfxCtx, 3 * sizeof(Gfx)); OPEN_DISPS(play->state.gfxCtx); // clang-format off - if (sMatAnimFlags & 1) { gSPSegment(POLY_OPA_DISP++, segment, colorDList); } - if (sMatAnimFlags & 2) { gSPSegment(POLY_XLU_DISP++, segment, colorDList); } + if (sMatAnimFlags & 1) { gSPSegment(POLY_OPA_DISP++, segment, gfx); } + if (sMatAnimFlags & 2) { gSPSegment(POLY_XLU_DISP++, segment, gfx); } // clang-format on - gDPSetPrimColor(colorDList++, 0, primColorResult->lodFrac, primColorResult->r, primColorResult->g, - primColorResult->b, (u8)(primColorResult->a * sMatAnimAlphaRatio)); + gDPSetPrimColor(gfx++, 0, primColorResult->lodFrac, primColorResult->r, primColorResult->g, primColorResult->b, + (u8)(primColorResult->a * sMatAnimAlphaRatio)); if (envColor != NULL) { - gDPSetEnvColor(colorDList++, envColor->r, envColor->g, envColor->b, envColor->a); + gDPSetEnvColor(gfx++, envColor->r, envColor->g, envColor->b, envColor->a); } - gSPEndDisplayList(colorDList++); + gSPEndDisplayList(gfx++); CLOSE_DISPS(play->state.gfxCtx); } @@ -709,8 +709,8 @@ void Scene_DrawConfigGreatBayTemple(PlayState* play) { }; s32 lodFrac; s32 i; - Gfx* dListHead; - Gfx* dList; + Gfx* gfx; + Gfx* gfxHead; if (Flags_GetSwitch(play, 0x33) && Flags_GetSwitch(play, 0x34) && Flags_GetSwitch(play, 0x35) && Flags_GetSwitch(play, 0x36)) { @@ -719,16 +719,16 @@ void Scene_DrawConfigGreatBayTemple(PlayState* play) { BgCheck_UnsetContextFlags(&play->colCtx, BGCHECK_FLAG_REVERSE_CONVEYOR_FLOW); } - dList = GRAPH_ALLOC(play->state.gfxCtx, sizeof(Gfx) * 18); + gfxHead = GRAPH_ALLOC(play->state.gfxCtx, 18 * sizeof(Gfx)); AnimatedMat_Draw(play, play->sceneMaterialAnims); OPEN_DISPS(play->state.gfxCtx); - for (dListHead = dList, i = 0; i < 9; i++, dListHead += 2) { + for (gfx = gfxHead, i = 0; i < 9; i++, gfx += 2) { lodFrac = 0; - bcopy(greatBayTempleColorSetDL, dListHead, sizeof(greatBayTempleColorSetDL)); + bcopy(greatBayTempleColorSetDL, gfx, sizeof(greatBayTempleColorSetDL)); switch (i) { case 0: @@ -779,11 +779,11 @@ void Scene_DrawConfigGreatBayTemple(PlayState* play) { break; } - gDPSetPrimColor(dListHead, 0, lodFrac, 255, 255, 255, 255); + gDPSetPrimColor(gfx, 0, lodFrac, 255, 255, 255, 255); } - gSPSegment(POLY_OPA_DISP++, 0x06, dList); - gSPSegment(POLY_XLU_DISP++, 0x06, dList); + gSPSegment(POLY_OPA_DISP++, 0x06, gfxHead); + gSPSegment(POLY_XLU_DISP++, 0x06, gfxHead); CLOSE_DISPS(play->state.gfxCtx); } diff --git a/src/code/z_schedule.c b/src/code/z_schedule.c index 6a2492631..fdefb0f42 100644 --- a/src/code/z_schedule.c +++ b/src/code/z_schedule.c @@ -8,9 +8,9 @@ s32 Schedule_CheckFlagS(PlayState* play, u8** script, ScheduleOutput* output) { ScheduleCmdCheckFlagS* cmd = (ScheduleCmdCheckFlagS*)*script; - u16 flag = (cmd->flagByte << 8) | cmd->flagMask; + u16 flag = PACK_WEEKEVENTREG_FLAG(cmd->flagByte, cmd->flagMask); - if (gSaveContext.save.weekEventReg[flag >> 8] & (flag & 0xFF)) { + if (CHECK_WEEKEVENTREG(flag)) { *script += cmd->offset; } @@ -19,9 +19,9 @@ s32 Schedule_CheckFlagS(PlayState* play, u8** script, ScheduleOutput* output) { s32 Schedule_CheckFlagL(PlayState* play, u8** script, ScheduleOutput* output) { ScheduleCmdCheckFlagL* cmd = (ScheduleCmdCheckFlagL*)*script; - u16 flag = (cmd->flagByte << 8) | cmd->flagMask; + u16 flag = PACK_WEEKEVENTREG_FLAG(cmd->flagByte, cmd->flagMask); - if (gSaveContext.save.weekEventReg[flag >> 8] & (flag & 0xFF)) { + if (CHECK_WEEKEVENTREG(flag)) { *script += (s16)((cmd->offsetH << 8) | cmd->offsetL); } diff --git a/src/code/z_skelanime.c b/src/code/z_skelanime.c index 088f1469f..318f49809 100644 --- a/src/code/z_skelanime.c +++ b/src/code/z_skelanime.c @@ -200,7 +200,7 @@ void SkelAnime_DrawFlexLod(PlayState* play, void** skeleton, Vec3s* jointTable, Gfx* limbDList; Vec3f pos; Vec3s rot; - Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount)); + Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, dListCount * sizeof(Mtx)); if (skeleton == NULL) { return; @@ -418,7 +418,7 @@ void SkelAnime_DrawFlexOpa(PlayState* play, void** skeleton, Vec3s* jointTable, Gfx* limbDList; Vec3f pos; Vec3s rot; - Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount)); + Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, dListCount * sizeof(Mtx)); if (skeleton == NULL) { return; @@ -560,7 +560,7 @@ void SkelAnime_DrawTransformFlexOpa(PlayState* play, void** skeleton, Vec3s* joi OPEN_DISPS(play->state.gfxCtx); - mtx = GRAPH_ALLOC(play->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount)); + mtx = GRAPH_ALLOC(play->state.gfxCtx, dListCount * sizeof(Mtx)); gSPSegment(POLY_OPA_DISP++, 0x0D, mtx); @@ -822,7 +822,7 @@ Gfx* SkelAnime_DrawFlex(PlayState* play, void** skeleton, Vec3s* jointTable, s32 return NULL; } - mtx = GRAPH_ALLOC(play->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount)); + mtx = GRAPH_ALLOC(play->state.gfxCtx, dListCount * sizeof(Mtx)); gSPSegment(gfx++, 0x0D, mtx); @@ -996,7 +996,7 @@ void AnimationContext_SetLoadFrame(PlayState* play, LinkAnimationHeader* animati if (entry != NULL) { LinkAnimationHeader* linkAnimHeader = Lib_SegmentedToVirtual(animation); - u32 ram = frameTable; + uintptr_t ram = frameTable; osCreateMesgQueue(&entry->data.load.msgQueue, &entry->data.load.msg, 1); DmaMgr_SendRequestImpl(&entry->data.load.req, ram, @@ -1187,7 +1187,7 @@ void AnimationContext_Update(PlayState* play, AnimationContext* animationCtx) { * tables if not given. */ void SkelAnime_InitLink(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, - LinkAnimationHeader* animation, s32 flags, Vec3s* jointTable, Vec3s* morphTable, + LinkAnimationHeader* animation, s32 flags, void* jointTableBuffer, void* morphTableBuffer, s32 limbBufCount) { FlexSkeletonHeader* skeletonHeader; s32 headerJointCount; @@ -1216,12 +1216,12 @@ void SkelAnime_InitLink(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeade allocSize += 2; } - if (jointTable == NULL) { + if (jointTableBuffer == NULL) { skelAnime->jointTable = ZeldaArena_Malloc(allocSize); skelAnime->morphTable = ZeldaArena_Malloc(allocSize); } else { - skelAnime->jointTable = (Vec3s*)ALIGN16((u32)jointTable); - skelAnime->morphTable = (Vec3s*)ALIGN16((u32)morphTable); + skelAnime->jointTable = (void*)ALIGN16((uintptr_t)jointTableBuffer); + skelAnime->morphTable = (void*)ALIGN16((uintptr_t)morphTableBuffer); } LinkAnimation_Change(play, skelAnime, animation, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f); @@ -1443,12 +1443,12 @@ void LinkAnimation_InterpJointMorph(PlayState* play, SkelAnime* skelAnime, f32 w * Requests loading frame data from the Link animations and blending them, placing the result in jointTable */ void LinkAnimation_BlendToJoint(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation1, f32 frame1, - LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, Vec3s* blendTable) { - Vec3s* alignedBlendTable; + LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, void* blendTableBuffer) { + void* alignedBlendTable; AnimationContext_SetLoadFrame(play, animation1, (s32)frame1, skelAnime->limbCount, skelAnime->jointTable); - alignedBlendTable = (Vec3s*)ALIGN16((u32)blendTable); + alignedBlendTable = (void*)ALIGN16((uintptr_t)blendTableBuffer); AnimationContext_SetLoadFrame(play, animation2, (s32)frame2, skelAnime->limbCount, alignedBlendTable); AnimationContext_SetInterp(play, skelAnime->limbCount, skelAnime->jointTable, alignedBlendTable, blendWeight); @@ -1458,12 +1458,12 @@ void LinkAnimation_BlendToJoint(PlayState* play, SkelAnime* skelAnime, LinkAnima * Requests loading frame data from the Link animations and blending them, placing the result in morphTable */ void LinkAnimation_BlendToMorph(PlayState* play, SkelAnime* skelAnime, LinkAnimationHeader* animation1, f32 frame1, - LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, Vec3s* blendTable) { - Vec3s* alignedBlendTable; + LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, void* blendTableBuffer) { + void* alignedBlendTable; AnimationContext_SetLoadFrame(play, animation1, (s32)frame1, skelAnime->limbCount, skelAnime->morphTable); - alignedBlendTable = (Vec3s*)ALIGN16((u32)blendTable); + alignedBlendTable = (void*)ALIGN16((uintptr_t)blendTableBuffer); AnimationContext_SetLoadFrame(play, animation2, (s32)frame2, skelAnime->limbCount, alignedBlendTable); AnimationContext_SetInterp(play, skelAnime->limbCount, skelAnime->morphTable, alignedBlendTable, blendWeight); diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 6f9006146..b3d335afb 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -131,16 +131,109 @@ u32 D_801C5FC0[SCENE_MAX][4] = { { 0, 0, 1, 0 }, // SCENE_ALLEY }; -// Related to weekEventReg +// TODO: figure out a way to use the WEEKEVENTREG defines here +// weekEventReg flags which will be not be cleared on a cycle reset u16 D_801C66D0[ARRAY_COUNT(gSaveContext.save.weekEventReg)] = { - 0xFFFC, 0xFFFF, 0xFFFF, 0xFFFF, 0, 0, 0, 0xC000, 0xC00, 0, 0xC0, 0, 0x300, - 0x3000, 0xC000, 0xC00, 0, 0, 0, 0, 0, 0, 0xC00C, 0xC00C, 0xC008, 3, - 0x3000, 0, 0, 0, 0xFF00, 0xC3F, 0x3F, 0, 0, 0xCFFF, 0, 0, 0xC00, - 0xC00, 0, 0xC0, 0, 0, 0, 0, 0, 0, 0, 0, 0x3C, 0x20, - 0, 0x300C, 0x3000, 0, 0xC, 0xC0, 0, 0xFF0, 0x300, 0, 0, 0xC00, 0, - 0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC0, 0, 0xC000, 0, 3, - 0, 0xC000, 0, 0xC0, 0x300, 0, 0, 0, 0xC000, 0xFFF0, 0, 0, 0x300, - 0, 0xC000, 0xF0, 0, 0, 0, 0, 0, 0, + /* 0 */ 0xFFFC, + /* 1 */ 0xFFFF, + /* 2 */ 0xFFFF, + /* 3 */ 0xFFFF, + /* 4 */ 0, + /* 5 */ 0, + /* 6 */ 0, + /* 7 */ 0xC000, + /* 8 */ 0xC00, + /* 9 */ 0, + /* 10 */ 0xC0, + /* 11 */ 0, + /* 12 */ 0x300, + /* 13 */ 0x3000, + /* 14 */ 0xC000, + /* 15 */ 0xC00, + /* 16 */ 0, + /* 17 */ 0, + /* 18 */ 0, + /* 19 */ 0, + /* 20 */ 0, + /* 21 */ 0, + /* 22 */ 0xC00C, + /* 23 */ 0xC00C, + /* 24 */ 0xC008, + /* 25 */ 3, + /* 26 */ 0x3000, + /* 27 */ 0, + /* 28 */ 0, + /* 29 */ 0, + /* 30 */ 0xFF00, + /* 31 */ 0xC3F, + /* 32 */ 0x3F, + /* 33 */ 0, + /* 34 */ 0, + /* 35 */ 0xCFFF, + /* 36 */ 0, + /* 37 */ 0, + /* 38 */ 0xC00, + /* 39 */ 0xC00, + /* 40 */ 0, + /* 41 */ 0xC0, + /* 42 */ 0, + /* 43 */ 0, + /* 44 */ 0, + /* 45 */ 0, + /* 46 */ 0, + /* 47 */ 0, + /* 48 */ 0, + /* 49 */ 0, + /* 50 */ 0x3C, + /* 51 */ 0x20, + /* 52 */ 0, + /* 53 */ 0x300C, + /* 54 */ 0x3000, + /* 55 */ 0, + /* 56 */ 0xC, + /* 57 */ 0xC0, + /* 58 */ 0, + /* 59 */ 0xFF0, + /* 60 */ 0x300, + /* 61 */ 0, + /* 62 */ 0, + /* 63 */ 0xC00, + /* 64 */ 0, + /* 65 */ 0, + /* 66 */ 0xFFFF, + /* 67 */ 0xFFFF, + /* 68 */ 0xFFFF, + /* 69 */ 0xFFFF, + /* 70 */ 0xFFFF, + /* 71 */ 0xFFFF, + /* 72 */ 0xFFFF, + /* 73 */ 0xC0, + /* 74 */ 0, + /* 75 */ 0xC000, + /* 76 */ 0, + /* 77 */ 3, + /* 78 */ 0, + /* 79 */ 0xC000, + /* 80 */ 0, + /* 81 */ 0xC0, + /* 82 */ 0x300, + /* 83 */ 0, + /* 84 */ 0, + /* 85 */ 0, + /* 86 */ 0xC000, + /* 87 */ 0xFFF0, + /* 88 */ 0, + /* 89 */ 0, + /* 90 */ 0x300, + /* 91 */ 0, + /* 92 */ 0xC000, + /* 93 */ 0xF0, + /* 94 */ 0, + /* 95 */ 0, + /* 96 */ 0, + /* 97 */ 0, + /* 98 */ 0, + /* 99 */ 0, }; // used in other files @@ -232,16 +325,11 @@ void Sram_ClearHighscores(void) { * Clears specific weekEventReg flags. Used by the "Dawn of the First Day" message */ void Sram_ClearFlagsAtDawnOfTheFirstDay(void) { - // Unconfirmed: "Link the Goron Claims His Reservation: 4:30 PM" - gSaveContext.save.weekEventReg[55] &= (u8)~2; - // Unconfirmed: "Postman fleeing town" - gSaveContext.save.weekEventReg[90] &= (u8)~1; - // Unconfirmed: "Postman is about to flee" - gSaveContext.save.weekEventReg[89] &= (u8)~0x40; - // Unconfirmed: "Postman has delivered priority mail" - gSaveContext.save.weekEventReg[89] &= (u8)~8; - // Unconfirmed: "Postman showing priority mail to Madame" - gSaveContext.save.weekEventReg[85] &= (u8)~0x80; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_55_02); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_89_40); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_89_08); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_85_80); } /** @@ -296,7 +384,7 @@ void Sram_SaveEndOfCycle(PlayState* play) { gSaveContext.masksGivenOnMoon[i] = 0; } - if (gSaveContext.save.weekEventReg[84] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_84_20)) { Inventory_DeleteItem(ITEM_MASK_FIERCE_DEITY, SLOT(ITEM_MASK_FIERCE_DEITY)); } @@ -316,38 +404,38 @@ void Sram_SaveEndOfCycle(PlayState* play) { gSaveContext.eventInf[i] = 0; } - gSaveContext.eventInf[7] &= (u8)~1; - gSaveContext.eventInf[7] &= (u8)~2; - gSaveContext.eventInf[7] &= (u8)~4; - gSaveContext.eventInf[7] &= (u8)~8; - gSaveContext.eventInf[7] &= (u8)~0x10; + CLEAR_EVENTINF(EVENTINF_70); + CLEAR_EVENTINF(EVENTINF_71); + CLEAR_EVENTINF(EVENTINF_72); + CLEAR_EVENTINF(EVENTINF_73); + CLEAR_EVENTINF(EVENTINF_74); if (gSaveContext.save.playerData.rupees != 0) { - gSaveContext.eventInf[7] |= 1; + SET_EVENTINF(EVENTINF_70); } if (INV_CONTENT(ITEM_BOMB) == ITEM_BOMB) { item = INV_CONTENT(ITEM_BOMB); if (AMMO(item) != 0) { - gSaveContext.eventInf[7] |= 2; + SET_EVENTINF(EVENTINF_71); } } if (INV_CONTENT(ITEM_NUT) == ITEM_NUT) { item = INV_CONTENT(ITEM_NUT); if (AMMO(item) != 0) { - gSaveContext.eventInf[7] |= 4; + SET_EVENTINF(EVENTINF_72); } } if (INV_CONTENT(ITEM_STICK) == ITEM_STICK) { item = INV_CONTENT(ITEM_STICK); if (AMMO(item) != 0) { - gSaveContext.eventInf[7] |= 8; + SET_EVENTINF(EVENTINF_73); } } if (INV_CONTENT(ITEM_BOW) == ITEM_BOW) { item = INV_CONTENT(ITEM_BOW); if (AMMO(item) != 0) { - gSaveContext.eventInf[7] |= 0x10; + SET_EVENTINF(EVENTINF_74); } } @@ -482,10 +570,8 @@ void Sram_IncrementDay(void) { gSaveContext.save.bombersCaughtOrder[3] = 0; gSaveContext.save.bombersCaughtOrder[4] = 0; - // Unconfirmed: "Bombers Hide & Seek started on Day 1???" - gSaveContext.save.weekEventReg[73] &= (u8)~0x10; - // Unconfirmed: "Bombers Hide & Seek in Progress" - gSaveContext.save.weekEventReg[85] &= (u8)~2; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_73_10); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_85_02); } u16 Sram_CalcChecksum(void* data, size_t count) { @@ -832,9 +918,9 @@ void Sram_InitDebugSave(void) { Lib_MemCpy(&gSaveContext.save.inventory, &sSaveDebugInventory, sizeof(Inventory)); Lib_MemCpy(&gSaveContext.save.checksum, &sSaveDebugChecksum, sizeof(gSaveContext.save.checksum)); - if (gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) { - BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = D_801C6A48[((void)0, gSaveContext.save.playerForm)]; - C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN) = D_801C6A50[((void)0, gSaveContext.save.playerForm)]; + if (GET_PLAYER_FORM != PLAYER_FORM_HUMAN) { + BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = D_801C6A48[GET_PLAYER_FORM]; + C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN) = D_801C6A50[GET_PLAYER_FORM]; } gSaveContext.save.hasTatl = true; @@ -848,12 +934,9 @@ void Sram_InitDebugSave(void) { gSaveContext.save.entrance = ENTRANCE(CUTSCENE, 0); gSaveContext.save.isFirstCycle = true; - // - gSaveContext.save.weekEventReg[0x0F] |= 0x20; - // Unconfirmed: "Entered South Clock Town" - gSaveContext.save.weekEventReg[0x3B] |= 0x04; - // Unconfirmed: "Tatl's Second Cycle Text?" - gSaveContext.save.weekEventReg[0x1F] |= 0x04; + SET_WEEKEVENTREG(WEEKEVENTREG_15_20); + SET_WEEKEVENTREG(WEEKEVENTREG_59_04); + SET_WEEKEVENTREG(WEEKEVENTREG_31_04); gSaveContext.cycleSceneFlags[SCENE_INSIDETOWER].switch0 = 1; gSaveContext.save.permanentSceneFlags[SCENE_INSIDETOWER].switch0 = 1; @@ -990,12 +1073,10 @@ void Sram_OpenSave(FileSelectState* fileSelect, SramContext* sramCtx) { } else { gSaveContext.save.entrance = D_801C6A58[(void)0, gSaveContext.save.owlSaveLocation]; if ((gSaveContext.save.entrance == ENTRANCE(SOUTHERN_SWAMP_POISONED, 10)) && - (gSaveContext.save.weekEventReg[20] & 2)) { - // Unconfirmed weekEventReg: "Woodfall Temple Prison Entrance raised / Water cleansed" + CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02)) { gSaveContext.save.entrance = ENTRANCE(SOUTHERN_SWAMP_CLEARED, 10); } else if ((gSaveContext.save.entrance == ENTRANCE(MOUNTAIN_VILLAGE_WINTER, 8)) && - (gSaveContext.save.weekEventReg[33] & 0x80)) { - // Unconfirmed weekEventReg: "Mountain Village Unfrozen" + CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80)) { gSaveContext.save.entrance = ENTRANCE(MOUNTAIN_VILLAGE_SPRING, 8); } @@ -1561,8 +1642,7 @@ void Sram_SaveSpecialNewDay(PlayState* play) { day = gSaveContext.save.day; - // Unconfirmed: "Obtained Fierce Deity Mask?" - gSaveContext.save.weekEventReg[84] &= (u8)~0x20; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_84_20); Sram_SaveEndOfCycle(play); func_8014546C(&play->sramCtx); diff --git a/src/code/z_sub_s.c b/src/code/z_sub_s.c index efc6774a7..8f412364d 100644 --- a/src/code/z_sub_s.c +++ b/src/code/z_sub_s.c @@ -112,7 +112,7 @@ Gfx* SubS_DrawTransformFlex(PlayState* play, void** skeleton, Vec3s* jointTable, Gfx* limbDList; Vec3f pos; Vec3s rot; - Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, ALIGN16(dListCount * sizeof(Mtx))); + Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, dListCount * sizeof(Mtx)); if (skeleton == NULL) { return NULL; @@ -1072,8 +1072,8 @@ s32 SubS_TrackPoint(Vec3f* target, Vec3f* focusPos, Vec3s* shapeRot, Vec3s* trac s16 targetX; f32 diffZ = target->z - focusPos->z; - yaw = Math_FAtan2F(diffZ, diffX); - pitch = Math_FAtan2F(sqrtf(SQ(diffX) + SQ(diffZ)), target->y - focusPos->y); + yaw = Math_Atan2S_XY(diffZ, diffX); + pitch = Math_Atan2S_XY(sqrtf(SQ(diffX) + SQ(diffZ)), target->y - focusPos->y); Math_SmoothStepToS(&trackTarget->x, pitch, 4, 0x2710, 0); Math_SmoothStepToS(&trackTarget->y, yaw, 4, 0x2710, 0); @@ -1306,8 +1306,8 @@ void SubS_ActorPathing_ComputePointInfo(PlayState* play, ActorPathing* actorPath diff.z = actorPath->curPoint.z - actorPath->worldPos->z; actorPath->distSqToCurPointXZ = Math3D_XZLengthSquared(diff.x, diff.z); actorPath->distSqToCurPoint = Math3D_LengthSquared(&diff); - actorPath->rotToCurPoint.y = Math_FAtan2F(diff.z, diff.x); - actorPath->rotToCurPoint.x = Math_FAtan2F(sqrtf(actorPath->distSqToCurPointXZ), -diff.y); + actorPath->rotToCurPoint.y = Math_Atan2S_XY(diff.z, diff.x); + actorPath->rotToCurPoint.x = Math_Atan2S_XY(sqrtf(actorPath->distSqToCurPointXZ), -diff.y); actorPath->rotToCurPoint.z = 0; } diff --git a/src/code/z_vr_box.c b/src/code/z_vr_box.c index 6dd46633c..907004a7a 100644 --- a/src/code/z_vr_box.c +++ b/src/code/z_vr_box.c @@ -1,15 +1,15 @@ #include "global.h" -s32 D_801C5E30[] = { 0, 0x2000, 0x4000, 0x6000, 0x8000, 0xC000 }; +u32 D_801C5E30[] = { 0, 0x2000, 0x4000, 0x6000, 0x8000, 0xC000 }; u16 D_801C5E48[] = { 0, 2, 10, 12, 2, 4, 12, 14, 10, 12, 20, 22, 12, 14, 22, 24, 1, 3, 5, 6, 7, 8, 9, 11, 13, 15, 16, 17, 18, 19, 21, 23, }; -s32 D_801C5E88[] = { 0, 0x7C0, 0xF80, 0x1740, 0x1F00 }; +s32 D_801C5E88[] = { 0, 62 << 5, 124 << 5, 186 << 5, 248 << 5 }; -s32 D_801C5E9C[] = { 0, 0x7C0, 0xF80, 0x1740, 0x1F00 }; +s32 D_801C5E9C[] = { 0, 62 << 5, 124 << 5, 186 << 5, 248 << 5 }; -s32 D_801C5EB0[] = { 0, 0x7C0, 0xF80, 0x7C0, 0 }; +s32 D_801C5EB0[] = { 0, 62 << 5, 124 << 5, 62 << 5, 0 }; s16 D_801C5EC4[] = { 0, 16, 19, 18, 16, 1, 20, 19, 1, 17, 21, 20, 17, 5, 22, 21, 18, 19, 23, 2, 19, 20, @@ -17,7 +17,155 @@ s16 D_801C5EC4[] = { 24, 7, 29, 28, 25, 26, 30, 10, 26, 27, 11, 30, 27, 28, 31, 11, 28, 29, 15, 31, }; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_vr_box/func_80142440.s") +s32 func_80142440(SkyboxContext* skyboxCtx, Vtx* roomVtx, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, + s32 arg8) { + s32 i; + s32 j; + s32 k; + s16 phi_a0_4; + s16 phi_t1; + s32 temp1; + u16 index; + s16 phi_a2_4; + s16 phi_ra; + s16 phi_t2_4; + s32 temp2; + s32 roomVtxPosX[5 * 5]; + s32 roomVtxPosY[5 * 5]; + s32 roomVtxPosZ[5 * 5]; + s32 roomVtxTexU[5 * 5]; + s32 roomVtxTexV[5 * 5]; + s32 pad; + + switch (arg8) { + case 0: + case 1: + temp1 = arg4; + + for (i = 0, k = 0; k < 25; i++) { + temp2 = arg3; + for (j = 0; j < 5; j++, k++) { + roomVtxPosZ[k] = arg5; + roomVtxPosX[k] = temp2; + roomVtxPosY[k] = temp1; + roomVtxTexU[k] = D_801C5E88[j]; + roomVtxTexV[k] = D_801C5EB0[i]; + temp2 += arg6; + } + temp1 += arg7; + } + break; + + case 2: + case 3: + temp1 = arg4; + + for (i = 0, k = 0; k < 25; i++) { + temp2 = arg5; + for (j = 0; j < 5; j++, k++) { + roomVtxPosX[k] = arg3; + roomVtxPosY[k] = temp1; + roomVtxPosZ[k] = temp2; + roomVtxTexU[k] = D_801C5E88[j]; + roomVtxTexV[k] = D_801C5EB0[i]; + temp2 += arg6; + } + temp1 += arg7; + } + break; + + case 4: + case 5: + temp1 = arg5; + + for (i = 0, k = 0; k < 25; i++) { + temp2 = arg3; + for (j = 0; j < 5; j++, k++) { + roomVtxPosY[k] = arg4; + roomVtxPosX[k] = temp2; + roomVtxPosZ[k] = temp1; + roomVtxTexU[k] = D_801C5E88[j]; + roomVtxTexV[k] = D_801C5E9C[i]; + temp2 += arg6; + } + temp1 += arg7; + } + break; + + default: + break; + } + + skyboxCtx->roomDL = &skyboxCtx->dListBuf[2 * arg8][0]; + + for (i = 0; i < 0x20; i++) { + index = D_801C5E48[i]; + + roomVtx[arg2 + i].v.ob[0] = roomVtxPosX[index]; + roomVtx[arg2 + i].v.ob[1] = roomVtxPosY[index]; + roomVtx[arg2 + i].v.ob[2] = roomVtxPosZ[index]; + roomVtx[arg2 + i].v.flag = 0; + roomVtx[arg2 + i].v.tc[0] = roomVtxTexU[index]; + roomVtx[arg2 + i].v.tc[1] = roomVtxTexV[index]; + roomVtx[arg2 + i].v.cn[1] = 0; + roomVtx[arg2 + i].v.cn[2] = 0; + roomVtx[arg2 + i].v.cn[0] = 255; + } + gSPVertex(skyboxCtx->roomDL++, &roomVtx[arg2], 32, 0); + arg2 += i; + gSPCullDisplayList(skyboxCtx->roomDL++, 0, 15); + + if ((arg8 == 4) || (arg8 == 5)) { + phi_a2_4 = 0; + for (phi_t2_4 = 0, phi_ra = 0; phi_ra < 4; phi_ra++, phi_a2_4 += 0x1F) { + for (phi_a0_4 = 0, phi_t1 = 0; phi_t1 < 4; phi_t1++, phi_a0_4 += 0x1F, phi_t2_4 += 4) { + gDPLoadMultiTile(skyboxCtx->roomDL++, (uintptr_t)skyboxCtx->staticSegments[0] + D_801C5E30[arg8], 0, + G_TX_RENDERTILE, G_IM_FMT_CI, G_IM_SIZ_8b, 128, 0, phi_a0_4, phi_a2_4, phi_a0_4 + 0x1F, + phi_a2_4 + 0x1F, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadMultiTile(skyboxCtx->roomDL++, (uintptr_t)skyboxCtx->staticSegments[1] + D_801C5E30[arg8], 0x80, + 1, G_IM_FMT_CI, G_IM_SIZ_8b, 128, 0, phi_a0_4, phi_a2_4, phi_a0_4 + 0x1F, + phi_a2_4 + 0x1F, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gSP1Quadrangle(skyboxCtx->roomDL++, D_801C5EC4[phi_t2_4 + 1], D_801C5EC4[phi_t2_4 + 2], + D_801C5EC4[phi_t2_4 + 3], D_801C5EC4[phi_t2_4 + 0], 3); + } + } + } else { + phi_a2_4 = 0; + for (phi_t2_4 = 0, phi_ra = 0; phi_ra < 2; phi_ra++, phi_a2_4 += 0x1F) { + for (phi_a0_4 = 0, phi_t1 = 0; phi_t1 < 4; phi_t1++, phi_a0_4 += 0x1F, phi_t2_4 += 4) { + gDPLoadMultiTile(skyboxCtx->roomDL++, (uintptr_t)skyboxCtx->staticSegments[0] + D_801C5E30[arg8], 0, + G_TX_RENDERTILE, G_IM_FMT_CI, G_IM_SIZ_8b, 128, 0, phi_a0_4, phi_a2_4, phi_a0_4 + 0x1F, + phi_a2_4 + 0x1F, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadMultiTile(skyboxCtx->roomDL++, (uintptr_t)skyboxCtx->staticSegments[1] + D_801C5E30[arg8], 0x80, + 1, G_IM_FMT_CI, G_IM_SIZ_8b, 128, 0, phi_a0_4, phi_a2_4, phi_a0_4 + 0x1F, + phi_a2_4 + 0x1F, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gSP1Quadrangle(skyboxCtx->roomDL++, D_801C5EC4[phi_t2_4 + 1], D_801C5EC4[phi_t2_4 + 2], + D_801C5EC4[phi_t2_4 + 3], D_801C5EC4[phi_t2_4 + 0], 3); + } + } + phi_a2_4 -= 0x1F; + for (phi_ra = 0; phi_ra < 2; phi_ra++, phi_a2_4 -= 0x1F) { + for (phi_a0_4 = 0, phi_t1 = 0; phi_t1 < 4; phi_t1++, phi_a0_4 += 0x1F, phi_t2_4 += 4) { + gDPLoadMultiTile(skyboxCtx->roomDL++, (uintptr_t)skyboxCtx->staticSegments[0] + D_801C5E30[arg8], 0, + G_TX_RENDERTILE, G_IM_FMT_CI, G_IM_SIZ_8b, 128, 0, phi_a0_4, phi_a2_4, phi_a0_4 + 0x1F, + phi_a2_4 + 0x1F, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadMultiTile(skyboxCtx->roomDL++, (uintptr_t)skyboxCtx->staticSegments[1] + D_801C5E30[arg8], 0x80, + 1, G_IM_FMT_CI, G_IM_SIZ_8b, 128, 0, phi_a0_4, phi_a2_4, phi_a0_4 + 0x1F, + phi_a2_4 + 0x1F, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); + gSP1Quadrangle(skyboxCtx->roomDL++, D_801C5EC4[phi_t2_4 + 1], D_801C5EC4[phi_t2_4 + 2], + D_801C5EC4[phi_t2_4 + 3], D_801C5EC4[phi_t2_4 + 0], 3); + } + } + } + gSPEndDisplayList(skyboxCtx->roomDL++); + return arg2; +} void func_80143148(SkyboxContext* skyboxCtx, s32 arg1) { static struct_801C5F44 D_801C5F44[] = { @@ -35,114 +183,120 @@ void func_80143148(SkyboxContext* skyboxCtx, s32 arg1) { } } -void func_801431E8(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyType) { +void Skybox_Setup(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyboxId) { PlayState* play = (PlayState*)gameState; size_t size; - void* offset; - s32 pad; + void* segment; skyboxCtx->rotZ = 0.0f; - if (skyType != 1) { - if (skyType != 2) { - return; - } - } else { - // Send a DMA request for the cloudy sky texture - skyboxCtx->skyboxStaticSegment[0] = &D_80025D00; - size = SEGMENT_ROM_SIZE(d2_cloud_static); - offset = (void*)ALIGN8((u32)skyboxCtx->skyboxStaticSegment[0] + size); - DmaMgr_SendRequest0(skyboxCtx->skyboxStaticSegment[0], SEGMENT_ROM_START(d2_cloud_static), size); + switch (skyboxId) { + case 1: + // Send a DMA request for the cloudy sky texture + skyboxCtx->staticSegments[0] = &D_80025D00; + size = SEGMENT_ROM_SIZE(d2_cloud_static); + segment = (void*)ALIGN8((uintptr_t)skyboxCtx->staticSegments[0] + size); + DmaMgr_SendRequest0(skyboxCtx->staticSegments[0], SEGMENT_ROM_START(d2_cloud_static), size); - // Send a DMA request for the clear sky texture - skyboxCtx->skyboxStaticSegment[1] = offset; - size = SEGMENT_ROM_SIZE(d2_fine_static); - offset = (void*)ALIGN8((u32)offset + size); - DmaMgr_SendRequest0(skyboxCtx->skyboxStaticSegment[1], SEGMENT_ROM_START(d2_fine_static), size); + // Send a DMA request for the clear sky texture + skyboxCtx->staticSegments[1] = segment; + size = SEGMENT_ROM_SIZE(d2_fine_static); + segment = (void*)ALIGN8((uintptr_t)segment + size); + DmaMgr_SendRequest0(skyboxCtx->staticSegments[1], SEGMENT_ROM_START(d2_fine_static), size); - // Send a DMA request for the skybox palette - skyboxCtx->skyboxPaletteStaticSegment = offset; - size = SEGMENT_ROM_SIZE(d2_fine_pal_static); - offset = (void*)ALIGN8((u32)offset + size); - DmaMgr_SendRequest0(skyboxCtx->skyboxPaletteStaticSegment, SEGMENT_ROM_START(d2_fine_pal_static), size); + // Send a DMA request for the skybox palette + skyboxCtx->paletteStaticSegment = segment; + size = SEGMENT_ROM_SIZE(d2_fine_pal_static); + segment = (void*)ALIGN8((uintptr_t)segment + size); + DmaMgr_SendRequest0(skyboxCtx->paletteStaticSegment, SEGMENT_ROM_START(d2_fine_pal_static), size); - skyboxCtx->primR = 145; - skyboxCtx->primG = 120; - skyboxCtx->primB = 155; + skyboxCtx->primR = 145; + skyboxCtx->primG = 120; + skyboxCtx->primB = 155; - skyboxCtx->envR = 40; - skyboxCtx->envG = 0; - skyboxCtx->envB = 40; + skyboxCtx->envR = 40; + skyboxCtx->envG = 0; + skyboxCtx->envB = 40; - // Inverted Stone Tower Temple and Inverted Stone Tower - if ((play->sceneId == SCENE_F41) || (play->sceneId == SCENE_INISIE_R)) { - skyboxCtx->rotZ = 3.15000009537f; - } + // Inverted Stone Tower Temple and Inverted Stone Tower + if ((play->sceneId == SCENE_F41) || (play->sceneId == SCENE_INISIE_R)) { + skyboxCtx->rotZ = 3.15000009537f; + } + break; + + case 2: + break; + + default: + break; } } -void func_80143324(PlayState* play, SkyboxContext* skyboxCtx, s16 skyType) { +void func_80143324(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) { size_t size; - if (1) {} + switch (skyboxId) { + case 1: + osCreateMesgQueue(&skyboxCtx->loadQueue, &skyboxCtx->loadMsg, 1); - if (skyType == 1) { - osCreateMesgQueue(&skyboxCtx->loadQueue, &skyboxCtx->loadMsg, 1); + if (play->envCtx.unk_10 == 0) { + // Send a DMA request for the clear sky texture + size = SEGMENT_ROM_SIZE(d2_fine_static); - if (play->envCtx.unk_10 == 0) { - // Send a DMA request for the clear sky texture - size = SEGMENT_ROM_SIZE(d2_fine_static); + DmaMgr_SendRequestImpl(&skyboxCtx->unk188, skyboxCtx->staticSegments[0], + SEGMENT_ROM_START(d2_fine_static), size, 0, &skyboxCtx->loadQueue, NULL); + } else { + // Send a DMA request for the cloudy sky texture + size = SEGMENT_ROM_SIZE(d2_cloud_static); - DmaMgr_SendRequestImpl(&skyboxCtx->unk188, skyboxCtx->skyboxStaticSegment[0], - SEGMENT_ROM_START(d2_fine_static), size, 0, &skyboxCtx->loadQueue, NULL); - } else { - // Send a DMA request for the cloudy sky texture - size = SEGMENT_ROM_SIZE(d2_cloud_static); + DmaMgr_SendRequestImpl(&skyboxCtx->unk188, skyboxCtx->staticSegments[0], + SEGMENT_ROM_START(d2_cloud_static), size, 0, &skyboxCtx->loadQueue, NULL); + } - DmaMgr_SendRequestImpl(&skyboxCtx->unk188, skyboxCtx->skyboxStaticSegment[0], - SEGMENT_ROM_START(d2_cloud_static), size, 0, &skyboxCtx->loadQueue, NULL); - } + osRecvMesg(&skyboxCtx->loadQueue, NULL, OS_MESG_BLOCK); + osCreateMesgQueue(&skyboxCtx->loadQueue, &skyboxCtx->loadMsg, 1); - osRecvMesg(&skyboxCtx->loadQueue, NULL, OS_MESG_BLOCK); - osCreateMesgQueue(&skyboxCtx->loadQueue, &skyboxCtx->loadMsg, 1); + if (play->envCtx.unk_11 == 0) { + // Send a DMA request for the clear sky texture + size = SEGMENT_ROM_SIZE(d2_fine_static); - if (play->envCtx.unk_11 == 0) { - // Send a DMA request for the clear sky texture - size = SEGMENT_ROM_SIZE(d2_fine_static); + DmaMgr_SendRequestImpl(&skyboxCtx->unk1A8, skyboxCtx->staticSegments[1], + SEGMENT_ROM_START(d2_fine_static), size, 0, &skyboxCtx->loadQueue, NULL); + } else { + // Send a DMA request for the cloudy sky texture + size = SEGMENT_ROM_SIZE(d2_cloud_static); - DmaMgr_SendRequestImpl(&skyboxCtx->unk1A8, skyboxCtx->skyboxStaticSegment[1], - SEGMENT_ROM_START(d2_fine_static), size, 0, &skyboxCtx->loadQueue, NULL); - } else { - // Send a DMA request for the cloudy sky texture - size = SEGMENT_ROM_SIZE(d2_cloud_static); + DmaMgr_SendRequestImpl(&skyboxCtx->unk1A8, skyboxCtx->staticSegments[1], + SEGMENT_ROM_START(d2_cloud_static), size, 0, &skyboxCtx->loadQueue, NULL); + } - DmaMgr_SendRequestImpl(&skyboxCtx->unk1A8, skyboxCtx->skyboxStaticSegment[1], - SEGMENT_ROM_START(d2_cloud_static), size, 0, &skyboxCtx->loadQueue, NULL); - } + osRecvMesg(&skyboxCtx->loadQueue, NULL, OS_MESG_BLOCK); + osCreateMesgQueue(&skyboxCtx->loadQueue, &skyboxCtx->loadMsg, 1); - osRecvMesg(&skyboxCtx->loadQueue, NULL, OS_MESG_BLOCK); - osCreateMesgQueue(&skyboxCtx->loadQueue, &skyboxCtx->loadMsg, 1); + size = SEGMENT_ROM_SIZE(d2_fine_pal_static); - size = SEGMENT_ROM_SIZE(d2_fine_pal_static); + // Send a DMA request for the skybox palette + DmaMgr_SendRequestImpl(&skyboxCtx->unk1C8, skyboxCtx->paletteStaticSegment, + SEGMENT_ROM_START(d2_fine_pal_static), size, 0, &skyboxCtx->loadQueue, NULL); - // Send a DMA request for the skybox palette - DmaMgr_SendRequestImpl(&skyboxCtx->unk1C8, skyboxCtx->skyboxPaletteStaticSegment, - SEGMENT_ROM_START(d2_fine_pal_static), size, 0, &skyboxCtx->loadQueue, NULL); + osRecvMesg(&skyboxCtx->loadQueue, NULL, OS_MESG_BLOCK); + break; - osRecvMesg(&skyboxCtx->loadQueue, NULL, OS_MESG_BLOCK); + default: + break; } } -void func_801434E4(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyType) { +void Skybox_Init(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyboxId) { skyboxCtx->skyboxShouldDraw = 0; skyboxCtx->rotX = skyboxCtx->rotY = skyboxCtx->rotZ = 0.0f; - func_801431E8(gameState, skyboxCtx, skyType); + Skybox_Setup(gameState, skyboxCtx, skyboxId); - if (skyType != 0) { + if (skyboxId != 0) { skyboxCtx->dListBuf = THA_AllocEndAlign16(&gameState->heap, 0x3840); - if (skyType == 5) { + if (skyboxId == 5) { // Allocate enough space for the vertices for a 6 sided skybox (cube) skyboxCtx->roomVtx = THA_AllocEndAlign16(&gameState->heap, sizeof(Vtx) * 32 * 6); func_80143148(skyboxCtx, 6); diff --git a/src/code/z_vr_box_draw.c b/src/code/z_vr_box_draw.c index 326fcb3e2..88da288f0 100644 --- a/src/code/z_vr_box_draw.c +++ b/src/code/z_vr_box_draw.c @@ -25,7 +25,7 @@ void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyb func_8012C6AC(gfxCtx); - gSPSegment(POLY_OPA_DISP++, 0x0B, skyboxCtx->skyboxPaletteStaticSegment); + gSPSegment(POLY_OPA_DISP++, 0x0B, skyboxCtx->paletteStaticSegment); gSPTexture(POLY_OPA_DISP++, 0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON); sSkyboxDrawMatrix = GRAPH_ALLOC(gfxCtx, sizeof(Mtx)); @@ -40,7 +40,7 @@ void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyb gSPMatrix(POLY_OPA_DISP++, sSkyboxDrawMatrix, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetColorDither(POLY_OPA_DISP++, G_CD_MAGICSQ); gDPSetTextureFilter(POLY_OPA_DISP++, G_TF_BILERP); - gDPLoadTLUT_pal256(POLY_OPA_DISP++, skyboxCtx->skyboxPaletteStaticSegment); + gDPLoadTLUT_pal256(POLY_OPA_DISP++, skyboxCtx->paletteStaticSegment); gDPSetTextureLUT(POLY_OPA_DISP++, G_TT_RGBA16); gDPSetTextureConvert(POLY_OPA_DISP++, G_TC_FILT); gDPSetCombineLERP(POLY_OPA_DISP++, TEXEL1, TEXEL0, PRIMITIVE_ALPHA, TEXEL0, TEXEL1, TEXEL0, PRIMITIVE, TEXEL0, @@ -49,13 +49,13 @@ void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyb gDPSetEnvColor(POLY_OPA_DISP++, skyboxCtx->envR, skyboxCtx->envG, skyboxCtx->envB, 0); gSPDisplayList(POLY_OPA_DISP++, &skyboxCtx->dListBuf[0]); - gSPDisplayList(POLY_OPA_DISP++, &skyboxCtx->dListBuf[300]); - gSPDisplayList(POLY_OPA_DISP++, &skyboxCtx->dListBuf[600]); - gSPDisplayList(POLY_OPA_DISP++, &skyboxCtx->dListBuf[900]); - gSPDisplayList(POLY_OPA_DISP++, &skyboxCtx->dListBuf[1200]); + gSPDisplayList(POLY_OPA_DISP++, &skyboxCtx->dListBuf[2]); + gSPDisplayList(POLY_OPA_DISP++, &skyboxCtx->dListBuf[4]); + gSPDisplayList(POLY_OPA_DISP++, &skyboxCtx->dListBuf[6]); + gSPDisplayList(POLY_OPA_DISP++, &skyboxCtx->dListBuf[8]); if (skyboxId == SKYBOX_CUTSCENE_MAP) { - gSPDisplayList(POLY_OPA_DISP++, &skyboxCtx->dListBuf[1500]); + gSPDisplayList(POLY_OPA_DISP++, &skyboxCtx->dListBuf[10]); } gDPPipeSync(POLY_OPA_DISP++); diff --git a/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c b/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c index 5cdc8d181..e3ac3e753 100644 --- a/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c +++ b/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c @@ -109,7 +109,7 @@ s32 ArmsHook_CheckForCancel(ArmsHook* this) { Player* player = (Player*)this->actor.parent; if (Player_IsHoldingHookshot(player)) { - if ((player->heldItemActionParam != player->itemActionParam) || (player->actor.flags & ACTOR_FLAG_100) || + if ((player->itemAction != player->heldItemAction) || (player->actor.flags & ACTOR_FLAG_100) || (player->stateFlags1 & (PLAYER_STATE1_80 | PLAYER_STATE1_4000000))) { this->timer = 0; ArmsHook_DetachHookFromActor(this); @@ -216,7 +216,7 @@ void ArmsHook_Shoot(ArmsHook* this, PlayState* play) { } } else { Math_Vec3f_Diff(&bodyDistDiffVec, &newPos, &player->actor.velocity); - player->actor.world.rot.x = Math_FAtan2F(sqrtf(SQXZ(bodyDistDiffVec)), -bodyDistDiffVec.y); + player->actor.world.rot.x = Math_Atan2S_XY(sqrtf(SQXZ(bodyDistDiffVec)), -bodyDistDiffVec.y); } if (phi_f16 < 50.0f) { ArmsHook_DetachHookFromActor(this); @@ -238,7 +238,7 @@ void ArmsHook_Shoot(ArmsHook* this, PlayState* play) { Actor_MoveWithGravity(&this->actor); Math_Vec3f_Diff(&this->actor.world.pos, &this->actor.prevPos, &prevFrameDiff); Math_Vec3f_Sum(&this->unk1E0, &prevFrameDiff, &this->unk1E0); - this->actor.shape.rot.x = Math_FAtan2F(this->actor.speedXZ, -this->actor.velocity.y); + this->actor.shape.rot.x = Math_Atan2S_XY(this->actor.speedXZ, -this->actor.velocity.y); sp60.x = this->unk1EC.x - (this->unk1E0.x - this->unk1EC.x); sp60.y = this->unk1EC.y - (this->unk1E0.y - this->unk1EC.y); sp60.z = this->unk1EC.z - (this->unk1E0.z - this->unk1EC.z); diff --git a/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c b/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c index 25f6d0a88..4c73987ec 100644 --- a/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c +++ b/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c @@ -146,14 +146,14 @@ s32 func_808B736C(BgBreakwall* this, PlayState* play) { } s32 func_808B7380(BgBreakwall* this, PlayState* play) { - if ((gSaveContext.save.day >= 2) && !(gSaveContext.save.weekEventReg[22] & 1)) { + if ((gSaveContext.save.day >= 2) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { return false; } return true; } s32 func_808B73C4(BgBreakwall* this, PlayState* play) { - return (gSaveContext.save.weekEventReg[33] & 0x80) || (gSaveContext.save.weekEventReg[21] & 1); + return CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80) || CHECK_WEEKEVENTREG(WEEKEVENTREG_21_01); } s32 func_808B73FC(BgBreakwall* this, PlayState* play) { @@ -176,14 +176,14 @@ s32 func_808B7460(BgBreakwall* this, PlayState* play) { } s32 func_808B74A8(BgBreakwall* this, PlayState* play) { - if (gSaveContext.save.weekEventReg[55] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { return false; } return true; } s32 func_808B74D8(BgBreakwall* this, PlayState* play) { - if (!(gSaveContext.save.weekEventReg[9] & 0x80) || (gSaveContext.save.weekEventReg[23] & 0x20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_09_80) || CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { return false; } return true; @@ -285,7 +285,7 @@ void func_808B782C(BgBreakwall* this, PlayState* play) { } void func_808B78A4(BgBreakwall* this, PlayState* play) { - if (gSaveContext.save.weekEventReg[55] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { Actor_Kill(&this->dyna.actor); } } diff --git a/src/overlays/actors/ovl_Bg_Crace_Movebg/z_bg_crace_movebg.c b/src/overlays/actors/ovl_Bg_Crace_Movebg/z_bg_crace_movebg.c index 9db6853be..032091293 100644 --- a/src/overlays/actors/ovl_Bg_Crace_Movebg/z_bg_crace_movebg.c +++ b/src/overlays/actors/ovl_Bg_Crace_Movebg/z_bg_crace_movebg.c @@ -243,9 +243,9 @@ void BgCraceMovebg_ClosingDoor_CheckIfPlayerIsBeyondDoor(BgCraceMovebg* this, Pl if ((BG_CRACE_MOVEBG_GET_TYPE(&this->dyna.actor) != BG_CRACE_MOVEBG_TYPE_UNUSED_CLOSING) && SubS_LineSegVsPlane(&this->dyna.actor.home.pos, &this->dyna.actor.home.rot, &sUnitVecZ, &this->prevPlayerPos, - &player->bodyPartsPos[0], &intersect)) { + &player->bodyPartsPos[PLAYER_BODYPART_WAIST], &intersect)) { Matrix_RotateYS(-this->dyna.actor.home.rot.y, MTXMODE_NEW); - Math_Vec3f_Diff(&player->bodyPartsPos[0], &this->dyna.actor.home.pos, &posDiff); + Math_Vec3f_Diff(&player->bodyPartsPos[PLAYER_BODYPART_WAIST], &this->dyna.actor.home.pos, &posDiff); Matrix_MultVec3f(&posDiff, &this->intersectionOffsetFromHome); if (fabsf(this->intersectionOffsetFromHome.x) < 100.0f && this->intersectionOffsetFromHome.y >= -10.0f && diff --git a/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c b/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c index 31c0c387d..45b42942b 100644 --- a/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c +++ b/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c @@ -4,7 +4,6 @@ * Description: Great Bay Temple - Waterwheels, push switches, gear shafts, and whirlpools */ -#include "prevent_bss_reordering.h" #include "z_bg_dblue_movebg.h" #include "objects/object_dblue_object/object_dblue_object.h" #include "overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.h" @@ -812,7 +811,7 @@ void BgDblueMovebg_Draw(Actor* thisx, PlayState* play2) { CLOSE_DISPS(play->state.gfxCtx); if ((this->unk_160 == 8) && (this->unk_172 & 0x20)) { - AnimatedMat_Draw(play, Lib_SegmentedToVirtual(&gGreatBayTempleObjectWaterwheelSplashTexAnim)); + AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gGreatBayTempleObjectWaterwheelSplashTexAnim)); OPEN_DISPS(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_Bg_Haka_Bombwall/z_bg_haka_bombwall.c b/src/overlays/actors/ovl_Bg_Haka_Bombwall/z_bg_haka_bombwall.c index 10cea7035..331a6dfe5 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Bombwall/z_bg_haka_bombwall.c +++ b/src/overlays/actors/ovl_Bg_Haka_Bombwall/z_bg_haka_bombwall.c @@ -56,7 +56,7 @@ static ColliderCylinderInit sCylinderInit = { { 80, 80, 0, { 0, 0, 0 } }, }; -static s16 D_80BD64CC[4] = { 24, 15, 10, 5 }; +static s16 sRockScales[4] = { 24, 15, 10, 5 }; static InitChainEntry sInitChain[] = { ICHAIN_F32(uncullZoneForward, 4000, ICHAIN_CONTINUE), @@ -75,76 +75,83 @@ s32 func_80BD5E00(BgHakaBombwall* this) { return false; } -#ifdef NON_MATCHING void func_80BD5E6C(BgHakaBombwall* this, PlayState* play) { - s32 i; - Vec3f spE0; - Vec3f spD4; - Vec3f spC8; - Vec3f spBC; - f32 temp_fs0; - f32 phi_fs1; + u32 i; + Vec3f pos; + Vec3f vel; + Vec3f posOffset; + Vec3f velOffset; + f32 offsetPosX; + f32 offsetPosY; + s16 scale; s16 phi_s0; - s16 gravity; s16 phi_t0; + s16 gravity; Matrix_Push(); Matrix_RotateYS(this->dyna.actor.shape.rot.y, MTXMODE_NEW); - temp_fs0 = 0.0f; - phi_fs1 = 0.0f; + + offsetPosX = 0.0f; + offsetPosY = 0.0f; for (i = 0; i < 30; i++) { - temp_fs0 += 60.0f + (Rand_ZeroOne() * 20.0f); - if (temp_fs0 > 75.0f) { - temp_fs0 -= 150.0f; + offsetPosX += 60.0f + (Rand_ZeroOne() * 20.0f); + + if (offsetPosX > 75.0f) { + offsetPosX -= 150.0f; } - spC8.x = temp_fs0; - phi_fs1 += 5; - spC8.y = phi_fs1; + offsetPosY += 5; - spC8.z = (Rand_ZeroOne() * 20.0f) - 10.0f; + posOffset.x = offsetPosX; + posOffset.y = offsetPosY; + posOffset.z = (Rand_ZeroOne() * 20.0f) - 10.0f; - spBC.x = ((Rand_ZeroOne() - 0.5f) * 5.0f) + (temp_fs0 * (4.0f / 75.0f)); - spBC.y = (Rand_ZeroOne() * 7.0f) - 2.0f; - spBC.z = (Rand_ZeroOne() * 4.0f) - 2.0f; + velOffset.x = ((Rand_ZeroOne() - 0.5f) * 5.0f) + (offsetPosX * (4.0f / 75.0f)); + velOffset.y = (Rand_ZeroOne() * 7.0f) - 2.0f; + velOffset.z = (Rand_ZeroOne() * 4.0f) - 2.0f; - Matrix_MultVec3f(&spC8, &spE0); - Matrix_MultVec3f(&spBC, &spD4); + Matrix_MultVec3f(&posOffset, &pos); + Matrix_MultVec3f(&velOffset, &vel); - spE0.x += this->dyna.actor.world.pos.x; - spE0.y += this->dyna.actor.world.pos.y; - spE0.z += this->dyna.actor.world.pos.z; + pos.x += this->dyna.actor.world.pos.x; + pos.y += this->dyna.actor.world.pos.y; + pos.z += this->dyna.actor.world.pos.z; + + //! FAKE + if (1) {} if ((i & 3) == 0) { phi_s0 = 32; - func_800BBFB0(play, &spE0, 60.0f, 2, 100, 120, 1); + func_800BBFB0(play, &pos, 60.0f, 2, 100, 120, 1); } else { phi_s0 = 64; } - if (i % 2 != 0) { + if ((i % 2) != 0) { phi_s0 |= 1; phi_t0 = 1; } else { phi_t0 = 0; } - if (D_80BD64CC[i & 3] >= 16) { + scale = sRockScales[i & (ARRAY_COUNT(sRockScales) - 1)]; + + //! FAKE + fake_label:; + + if (scale >= 16) { gravity = -550; } else { gravity = -450; } - EffectSsKakera_Spawn(play, &spE0, &spD4, &spE0, gravity, phi_s0, 30, 0, 0, D_80BD64CC[i & 3], phi_t0, 0, 50, -1, + EffectSsKakera_Spawn(play, &pos, &vel, &pos, gravity, phi_s0, 30, 0, 0, scale, phi_t0, 0, 50, -1, OBJECT_HAKA_OBJ, object_haka_obj_DL_001680); } Matrix_Pop(); } -#else -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Bg_Haka_Bombwall/func_80BD5E6C.s") -#endif void BgHakaBombwall_Init(Actor* thisx, PlayState* play) { s32 pad; diff --git a/src/overlays/actors/ovl_Bg_Ikana_Bombwall/z_bg_ikana_bombwall.c b/src/overlays/actors/ovl_Bg_Ikana_Bombwall/z_bg_ikana_bombwall.c index 7dbe579a0..a97ed6b28 100644 --- a/src/overlays/actors/ovl_Bg_Ikana_Bombwall/z_bg_ikana_bombwall.c +++ b/src/overlays/actors/ovl_Bg_Ikana_Bombwall/z_bg_ikana_bombwall.c @@ -96,50 +96,53 @@ Gfx* D_80BD52E0[] = { object_ikana_obj_DL_000048, }; -#ifdef NON_MATCHING void func_80BD4720(BgIkanaBombwall* this, PlayState* play) { s32 i; - Vec3f spE0; - Vec3f spD4; - Vec3f spC8; - Vec3f spBC; - f32 temp_fs0; - f32 phi_fs1; + Vec3f pos; + Vec3f vel; + Vec3f posOffset; + Vec3f velOffset; + f32 offsetPosX; + f32 offsetPosY; + s16 scale; s16 phi_s0; - s16 temp; s16 phi_t0; + s16 gravity; Matrix_Push(); Matrix_RotateYS(this->dyna.actor.shape.rot.y, MTXMODE_NEW); - temp_fs0 = 0.0f; - phi_fs1 = 0.0f; + offsetPosX = 0.0f; + offsetPosY = 0.0f; for (i = 0; i < 30; i++) { - temp_fs0 += 60.0f + (Rand_ZeroOne() * 20.0f); - if (temp_fs0 > 75.0f) { - temp_fs0 -= 150.0f; + offsetPosX += 60.0f + (Rand_ZeroOne() * 20.0f); + if (offsetPosX > 75.0f) { + offsetPosX -= 150.0f; } - spC8.x = temp_fs0; - phi_fs1 += 5; - spC8.y = phi_fs1; + offsetPosY += 5; - spC8.z = (Rand_ZeroOne() * 20.0f) - 10.0f; + posOffset.x = offsetPosX; + posOffset.y = offsetPosY; + posOffset.z = (Rand_ZeroOne() * 20.0f) - 10.0f; - spBC.x = ((Rand_ZeroOne() - 0.5f) * 5.0f) + (temp_fs0 * 0.053333335f); - spBC.y = (Rand_ZeroOne() * 7.0f) - 2.0f; - spBC.z = (Rand_ZeroOne() * 4.0f) - 2.0f; + velOffset.x = ((Rand_ZeroOne() - 0.5f) * 5.0f) + (offsetPosX * (4.0f / 75.0f)); + velOffset.y = (Rand_ZeroOne() * 7.0f) - 2.0f; + velOffset.z = (Rand_ZeroOne() * 4.0f) - 2.0f; - Matrix_MultVec3f(&spC8, &spE0); - Matrix_MultVec3f(&spBC, &spD4); + Matrix_MultVec3f(&posOffset, &pos); + Matrix_MultVec3f(&velOffset, &vel); - spE0.x += this->dyna.actor.world.pos.x; - spE0.y += this->dyna.actor.world.pos.y; - spE0.z += this->dyna.actor.world.pos.z; + pos.x += this->dyna.actor.world.pos.x; + pos.y += this->dyna.actor.world.pos.y; + pos.z += this->dyna.actor.world.pos.z; + + //! FAKE + if (1) {} if ((i & 3) == 0) { phi_s0 = 32; - func_800BBFB0(play, &spE0, 50.0f, 2, 100, 120, 1); + func_800BBFB0(play, &pos, 50.0f, 2, 100, 120, 1); } else { phi_s0 = 64; } @@ -151,56 +154,57 @@ void func_80BD4720(BgIkanaBombwall* this, PlayState* play) { phi_t0 = 0; } - if (D_80BD52C8[i & 3] >= 16) { - temp = -550; + scale = D_80BD52C8[i & (ARRAY_COUNT(D_80BD52C8) - 1)]; + + //! FAKE + fake_label:; + + if (scale >= 16) { + gravity = -550; } else { - temp = -450; + gravity = -450; } - EffectSsKakera_Spawn(play, &spE0, &spD4, &spE0, temp, phi_s0, 30, 0, 0, D_80BD52C8[i & 3], phi_t0, 0, 50, -1, + EffectSsKakera_Spawn(play, &pos, &vel, &pos, gravity, phi_s0, 30, 0, 0, scale, phi_t0, 0, 50, -1, OBJECT_IKANA_OBJ, object_ikana_obj_DL_000288); } Matrix_Pop(); } -#else -void func_80BD4720(BgIkanaBombwall* this, PlayState* play); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Bg_Ikana_Bombwall/func_80BD4720.s") -#endif void func_80BD4A14(BgIkanaBombwall* this, PlayState* play) { s32 i; - Vec3f spD8; - Vec3f spCC; + Vec3f pos; + Vec3f vel; f32 temp_fs0; f32 temp_fs1; f32 temp_fs3; - s16 temp_v1; - s16 phi_s2; - s32 phi_t0; + s16 scale; + s16 angle; + s32 gravity; s16 phi_v0; s32 phi_v1; temp_fs3 = 0.0f; - for (i = 0, phi_s2 = 0; i < 28; i++, phi_s2 += 0x924) { + for (i = 0, angle = 0; i < 28; i++, angle += 0x924) { temp_fs3 += 20.0f + (Rand_ZeroOne() * 10.0f); if (temp_fs3 > 60.0f) { temp_fs3 -= 60.0f; } - temp_fs0 = Math_SinS(phi_s2); - temp_fs1 = Math_CosS(phi_s2); + temp_fs0 = Math_SinS(angle); + temp_fs1 = Math_CosS(angle); - spD8.x = (temp_fs0 * temp_fs3) + this->dyna.actor.world.pos.x; - spD8.y = this->dyna.actor.world.pos.y; - spD8.z = (temp_fs1 * temp_fs3) + this->dyna.actor.world.pos.z; + pos.x = (temp_fs0 * temp_fs3) + this->dyna.actor.world.pos.x; + pos.y = this->dyna.actor.world.pos.y; + pos.z = (temp_fs1 * temp_fs3) + this->dyna.actor.world.pos.z; - spCC.x = ((Rand_ZeroOne() - 0.5f) * 3.0f * temp_fs0) + ((temp_fs0 * temp_fs3) * 0.033333335f); - spCC.y = (Rand_ZeroOne() * 18.0f) + 4.0f; - spCC.z = ((Rand_ZeroOne() - 0.5f) * 3.0f * temp_fs1) + ((temp_fs1 * temp_fs3) * 0.033333335f); + vel.x = ((Rand_ZeroOne() - 0.5f) * 3.0f * temp_fs0) + ((temp_fs0 * temp_fs3) * (1.0f / 30.0f)); + vel.y = (Rand_ZeroOne() * 18.0f) + 4.0f; + vel.z = ((Rand_ZeroOne() - 0.5f) * 3.0f * temp_fs1) + ((temp_fs1 * temp_fs3) * (1.0f / 30.0f)); - temp_v1 = (Rand_Next() & 3) + (i >> 1) + 6; + scale = (Rand_Next() & 3) + (i >> 1) + 6; if ((i & 3) == 0) { phi_v0 = 32; @@ -208,21 +212,21 @@ void func_80BD4A14(BgIkanaBombwall* this, PlayState* play) { phi_v0 = 64; } - if (temp_v1 >= 15) { + if (scale >= 15) { phi_v0 |= 1; phi_v1 = 1; - phi_t0 = -550; + gravity = -550; } else { phi_v1 = 0; - phi_t0 = -400; + gravity = -400; } - EffectSsKakera_Spawn(play, &spD8, &spCC, &spD8, phi_t0, phi_v0, 30, 0, 0, temp_v1, phi_v1, 0, 50, -1, + EffectSsKakera_Spawn(play, &pos, &vel, &pos, gravity, phi_v0, 30, 0, 0, scale, phi_v1, 0, 50, -1, OBJECT_IKANA_OBJ, object_ikana_obj_DL_000288); if ((i & 3) == 0) { - spD8.y += 30.0f; - func_800BBFB0(play, &spD8, 50.0f, 2, 70, 110, 1); + pos.y += 30.0f; + func_800BBFB0(play, &pos, 50.0f, 2, 70, 110, 1); } } } diff --git a/src/overlays/actors/ovl_Bg_Ikana_Mirror/z_bg_ikana_mirror.c b/src/overlays/actors/ovl_Bg_Ikana_Mirror/z_bg_ikana_mirror.c index c7e61cad7..5fc28c5a5 100644 --- a/src/overlays/actors/ovl_Bg_Ikana_Mirror/z_bg_ikana_mirror.c +++ b/src/overlays/actors/ovl_Bg_Ikana_Mirror/z_bg_ikana_mirror.c @@ -257,8 +257,8 @@ void BgIkanaMirror_Init(Actor* thisx, PlayState* play2) { } BgIkanaMirror_SetQuadVertices(this); - this->lightAbsorptionTexScroll = Lib_SegmentedToVirtual(&gStoneTowerTempleMirrorLightAbsorptionTexAnim); - this->lightEmissionTexScroll = Lib_SegmentedToVirtual(&gStoneTowerTempleMirrorLightEmissionTexAnim); + this->lightAbsorptionTexScroll = Lib_SegmentedToVirtual(gStoneTowerTempleMirrorLightAbsorptionTexAnim); + this->lightEmissionTexScroll = Lib_SegmentedToVirtual(gStoneTowerTempleMirrorLightEmissionTexAnim); BgIkanaMirror_SetupWait(this); } diff --git a/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c b/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c index ae93cf6a9..4561d4049 100644 --- a/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c +++ b/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c @@ -648,9 +648,9 @@ void func_80B814B8(BgIkanaRotaryroom* this, PlayState* play) { if (ActorCutscene_GetCurrentIndex() == this->dyna.actor.cutscene) { if (player->actor.bgCheckFlags & 0x100) { - func_800B8E58(player, NA_SE_VO_LI_DAMAGE_S + player->ageProperties->unk_92); + func_800B8E58(player, NA_SE_VO_LI_DAMAGE_S + player->ageProperties->voiceSfxIdOffset); func_80169EFC(&play->state); - func_800B8E58(player, NA_SE_VO_LI_TAKEN_AWAY + player->ageProperties->unk_92); + func_800B8E58(player, NA_SE_VO_LI_TAKEN_AWAY + player->ageProperties->voiceSfxIdOffset); play->haltAllActors = true; play_sound(NA_SE_OC_ABYSS); this->actionFunc = NULL; @@ -794,7 +794,7 @@ void func_80B819F0(Actor* thisx, PlayState* play) { if (ActorCutscene_GetCanPlayNext(this->dyna.actor.cutscene)) { ActorCutscene_StartAndSetUnkLinkFields(this->dyna.actor.cutscene, &this->dyna.actor); if (this->dyna.actor.cutscene >= 0) { - func_800B7298(play, &this->dyna.actor, 7); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_7); } func_80B81A64(this); } else { diff --git a/src/overlays/actors/ovl_Bg_Iknv_Doukutu/z_bg_iknv_doukutu.c b/src/overlays/actors/ovl_Bg_Iknv_Doukutu/z_bg_iknv_doukutu.c index 9d11c6a6f..9cbfaec61 100644 --- a/src/overlays/actors/ovl_Bg_Iknv_Doukutu/z_bg_iknv_doukutu.c +++ b/src/overlays/actors/ovl_Bg_Iknv_Doukutu/z_bg_iknv_doukutu.c @@ -53,7 +53,7 @@ void BgIknvDoukutu_Init(Actor* thisx, PlayState* play) { this->actionFunc = func_80BD71BC; this->csAction = 0x204; this->unk_160 = 1.0f; - if ((gSaveContext.save.weekEventReg[14] & 4) || (gSaveContext.save.weekEventReg[52] & 0x20)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_04) || CHECK_WEEKEVENTREG(WEEKEVENTREG_52_20)) { this->dyna.actor.draw = func_80BD7768; this->actionFunc = func_80BD73D0; play->envCtx.lightSettingOverride = 25; @@ -69,7 +69,7 @@ void BgIknvDoukutu_Init(Actor* thisx, PlayState* play) { DynaPolyActor_Init(&this->dyna, 0); CollisionHeader_GetVirtual(&object_iknv_obj_Colheader_012788, &colHeader); this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader); - if (!(gSaveContext.save.weekEventReg[14] & 4)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_04)) { Actor_Kill(&this->dyna.actor); } break; @@ -80,7 +80,7 @@ void BgIknvDoukutu_Init(Actor* thisx, PlayState* play) { DynaPolyActor_Init(&this->dyna, 0); CollisionHeader_GetVirtual(&object_iknv_obj_Colheader_0117C8, &colHeader); this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader); - if (gSaveContext.save.weekEventReg[14] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_04)) { this->unk_160 = 1.0f; this->dyna.actor.world.pos.y += 68.0f; } else { diff --git a/src/overlays/actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.c b/src/overlays/actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.c index 4add85012..ba65baca4 100644 --- a/src/overlays/actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.c +++ b/src/overlays/actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.c @@ -84,7 +84,7 @@ void BgIknvObj_Init(Actor* thisx, PlayState* play) { Collider_InitAndSetCylinder(play, &this->collider, &this->dyna.actor, &sCylinderInit); Collider_UpdateCylinder(&this->dyna.actor, &this->collider); this->dyna.actor.colChkInfo.mass = MASS_IMMOVABLE; - gSaveContext.save.weekEventReg[51] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_51_10); Actor_SetFocus(&this->dyna.actor, IREG(88)); break; default: @@ -98,7 +98,7 @@ void BgIknvObj_Destroy(Actor* thisx, PlayState* play) { if (IKNV_OBJ_TYPE(this) != IKNV_OBJ_RAISED_DOOR) { if (IKNV_OBJ_TYPE(this) == IKNV_OBJ_SAKON_DOOR) { Collider_DestroyCylinder(play, &this->collider); - gSaveContext.save.weekEventReg[51] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_51_10); } else { return; } @@ -125,7 +125,7 @@ s32 func_80BD7CEC(BgIknvObj* this) { } void BgIknvObj_UpdateWaterwheel(BgIknvObj* this, PlayState* play) { - if (gSaveContext.save.weekEventReg[14] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_04)) { this->dyna.actor.shape.rot.z -= 0x64; func_800B9098(&this->dyna.actor); func_800B9010(&this->dyna.actor, NA_SE_EV_WOOD_WATER_WHEEL - SFX_FLAG); @@ -156,7 +156,7 @@ s32 func_80BD7E0C(BgIknvObj* this, s16 targetRotation, PlayState* play) { void func_80BD7ED8(BgIknvObj* this, PlayState* play) { if (func_80BD7E0C(this, this->dyna.actor.home.rot.y, play)) { this->actionFunc = BgIknvObj_UpdateSakonDoor; - gSaveContext.save.weekEventReg[51] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_51_10); } CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base); } @@ -165,7 +165,7 @@ void func_80BD7F4C(BgIknvObj* this, PlayState* play) { if (gSaveContext.save.time > CLOCK_TIME(19, 30)) { this->actionFunc = func_80BD7ED8; } - if ((this->dyna.actor.home.rot.x == 1) && !(gSaveContext.save.weekEventReg[58] & 0x80)) { + if ((this->dyna.actor.home.rot.x == 1) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_58_80)) { ActorCutscene_Stop(this->dyna.actor.cutscene); this->dyna.actor.home.rot.x = 0; } @@ -175,7 +175,7 @@ void func_80BD7F4C(BgIknvObj* this, PlayState* play) { void func_80BD7FDC(BgIknvObj* this, PlayState* play) { if (func_80BD7E0C(this, this->dyna.actor.home.rot.y + 0x4000, play)) { this->actionFunc = func_80BD7F4C; - gSaveContext.save.weekEventReg[51] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_51_10); this->dyna.actor.home.rot.x = 1; } } @@ -188,9 +188,9 @@ void func_80BD8040(BgIknvObj* this, PlayState* play) { } void BgIknvObj_UpdateSakonDoor(BgIknvObj* this, PlayState* play) { - if (gSaveContext.save.weekEventReg[58] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_58_80)) { this->actionFunc = func_80BD8040; - gSaveContext.save.weekEventReg[89] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_89_80); } CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base); } diff --git a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c index 7aebbeadd..1edf1ccf0 100644 --- a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c +++ b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c @@ -72,7 +72,7 @@ Actor* BgIngate_FindActor(BgIngate* this, PlayState* play, u8 actorCat, s16 acto void func_80953B40(BgIngate* this) { s32 temp; - if (!(gSaveContext.eventInf[3] & 0x20)) { + if (!CHECK_EVENTINF(EVENTINF_35)) { this->timePathTotalTime = 4 * 1000; this->timePathTimeSpeed = 4; } else { @@ -125,10 +125,10 @@ s32 func_80953BEC(BgIngate* this) { s32 func_80953DA8(BgIngate* this, PlayState* play) { Camera* mainCam = Play_GetCamera(play, CAM_ID_MAIN); - if (gSaveContext.eventInf[3] & 0x20) { - func_800B7298(play, &this->dyna.actor, 7); + if (CHECK_EVENTINF(EVENTINF_35)) { + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_7); } else { - gSaveContext.eventInf[4] |= 2; + SET_EVENTINF(EVENTINF_41); } Camera_ChangeSetting(mainCam, CAM_SET_BOAT_CRUISE); play->bButtonAmmoPlusOne = 99; @@ -139,8 +139,8 @@ s32 func_80953DA8(BgIngate* this, PlayState* play) { void func_80953E38(PlayState* play) { Camera_ChangeSetting(Play_GetCamera(play, CAM_ID_MAIN), CAM_SET_NORMAL0); - if (!(gSaveContext.eventInf[3] & 0x20)) { - gSaveContext.eventInf[4] &= (u8)~2; + if (!CHECK_EVENTINF(EVENTINF_35)) { + CLEAR_EVENTINF(EVENTINF_41); } play->bButtonAmmoPlusOne = -1; @@ -149,7 +149,7 @@ void func_80953E38(PlayState* play) { void func_80953EA4(BgIngate* this, PlayState* play) { Player* player = GET_PLAYER(play); - func_800B7298(play, &this->dyna.actor, 0x3A); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_58); player->unk_3A0.x = this->dyna.actor.world.pos.x; player->unk_3A0.z = this->dyna.actor.world.pos.z; this->unk160 &= ~0x4; @@ -180,9 +180,9 @@ void func_80953F9C(BgIngate* this, PlayState* play) { Player* player = GET_PLAYER(play); Camera* mainCam = Play_GetCamera(play, CAM_ID_MAIN); - if (!(gSaveContext.eventInf[4] & 1)) { + if (!CHECK_EVENTINF(EVENTINF_40)) { - if (!(gSaveContext.eventInf[3] & 0x20) && (this->unk160 & 0x10) && (this->unk16C == 0)) { + if (!CHECK_EVENTINF(EVENTINF_35) && (this->unk160 & 0x10) && (this->unk16C == 0)) { this->dyna.actor.textId = 0x9E3; Message_StartTextbox(play, this->dyna.actor.textId, NULL); this->unk160 &= ~0x10; @@ -192,18 +192,17 @@ void func_80953F9C(BgIngate* this, PlayState* play) { if (this->timePath->unk1 != 0xFF) { func_80953E38(play); - func_800B7298(play, &this->dyna.actor, 7); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_7); this->dyna.actor.textId = 0x9E4; Message_StartTextbox(play, this->dyna.actor.textId, NULL); this->unk16C += 1; - gSaveContext.save.weekEventReg[90] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_90_40); this->actionFunc = func_809543D4; } else { - - if (!(gSaveContext.eventInf[3] & 0x20)) { - gSaveContext.eventInf[4] &= (u8)~2; + if (!CHECK_EVENTINF(EVENTINF_35)) { + CLEAR_EVENTINF(EVENTINF_41); } else { - gSaveContext.eventInf[4] |= 1; + SET_EVENTINF(EVENTINF_40); } this->actionFunc = func_809542A0; } @@ -232,7 +231,7 @@ void func_809541B8(BgIngate* this, PlayState* play) { if ((player->transformation == PLAYER_FORM_HUMAN) && (player->actor.bgCheckFlags & 1) && (this->dyna.actor.xzDistToPlayer < 40.0f)) { if (this->dyna.actor.playerHeightRel > 15.0f) { - func_800B7298(play, &this->dyna.actor, 7); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_7); this->dyna.actor.textId = 0x9E6; Message_StartTextbox(play, this->dyna.actor.textId, NULL); this->actionFunc = func_809543D4; @@ -244,9 +243,9 @@ void func_809541B8(BgIngate* this, PlayState* play) { } void func_809542A0(BgIngate* this, PlayState* play) { - if (gSaveContext.eventInf[5] & 1) { + if (CHECK_EVENTINF(EVENTINF_50)) { play->nextEntrance = ENTRANCE(TOURIST_INFORMATION, 2); - gSaveContext.eventInf[5] &= (u8)~1; + CLEAR_EVENTINF(EVENTINF_50); } else { play->nextEntrance = ENTRANCE(TOURIST_INFORMATION, 1); } @@ -255,14 +254,14 @@ void func_809542A0(BgIngate* this, PlayState* play) { play->transitionType = TRANS_TYPE_03; gSaveContext.nextTransitionType = TRANS_TYPE_03; this->actionFunc = func_80953F8C; - gSaveContext.save.weekEventReg[90] &= (u8)~0x40; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_40); func_800FE498(); } void func_80954340(BgIngate* this, PlayState* play) { if (!DECR(this->unk16A)) { if (this->timePath != NULL) { - func_800B7298(play, &this->dyna.actor, 6); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_6); this->timePath = &play->setupPathList[this->timePath->unk1]; func_80953F14(this, play); func_800FE484(); @@ -281,7 +280,7 @@ void func_809543D4(BgIngate* this, PlayState* play) { break; case 0x9E5: if (play->msgCtx.choiceIndex == 0) { - func_800B7298(play, &this->dyna.actor, 6); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_6); this->unk160 &= ~0x4; this->actionFunc = func_809541B8; func_800FE498(); @@ -291,7 +290,7 @@ void func_809543D4(BgIngate* this, PlayState* play) { this->timePath = &play->setupPathList[this->timePath->unk1]; } func_80953F14(this, play); - gSaveContext.save.weekEventReg[90] &= (u8)~0x40; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_40); func_8019F230(); } func_801477B4(play); @@ -299,10 +298,10 @@ void func_809543D4(BgIngate* this, PlayState* play) { case 0x9E6: if (play->msgCtx.choiceIndex == 0) { func_80953EA4(this, play); - gSaveContext.save.weekEventReg[90] &= (u8)~0x40; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_40); func_8019F208(); } else { - func_800B7298(play, &this->dyna.actor, 6); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_6); this->unk160 &= ~0x4; this->actionFunc = func_809541B8; func_800FE498(); @@ -331,10 +330,10 @@ void BgIngate_Init(Actor* thisx, PlayState* play2) { Actor_SetScale(&this->dyna.actor, 1.0f); this->timePath = SubS_GetAdditionalPath(play, BGINGATE_GET_FF(&this->dyna.actor), 0); this->dyna.actor.room = -1; - if (gSaveContext.save.weekEventReg[20] & 2) { - gSaveContext.save.weekEventReg[90] &= (u8)~0x40; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_40); } - if (!(gSaveContext.eventInf[3] & 0x20) && (gSaveContext.save.weekEventReg[90] & 0x40)) { + if (!CHECK_EVENTINF(EVENTINF_35) && CHECK_WEEKEVENTREG(WEEKEVENTREG_90_40)) { phi_a2 = 1; this->unk16C = 1; this->actionFunc = func_809541B8; @@ -342,10 +341,10 @@ void BgIngate_Init(Actor* thisx, PlayState* play2) { phi_a2 = 0; if (play->curSpawn == 6) { func_80953F14(this, play); - if (gSaveContext.eventInf[3] & 0x20) { + if (CHECK_EVENTINF(EVENTINF_35)) { Interface_InitMinigame(play); } else { - gSaveContext.eventInf[4] |= 2; + SET_EVENTINF(EVENTINF_41); } } else { this->actionFunc = func_80953F8C; diff --git a/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.c b/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.c index 2a5d44929..497ed10ab 100644 --- a/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.c +++ b/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.c @@ -161,7 +161,7 @@ void BgNumaHana_Init(Actor* thisx, PlayState* play) { return; } - if (gSaveContext.save.weekEventReg[12] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_12_01)) { func_800C62BC(play, &play->colCtx.dyna, this->dyna.bgId); this->petalZRotation = 0x2000; @@ -219,7 +219,7 @@ void BgNumaHana_ClosedIdle(BgNumaHana* this, PlayState* play) { Actor_PlaySfxAtPos(&this->dyna.actor, NA_SE_EV_FLAME_IGNITION); if (ActorCutscene_GetCanPlayNext(this->dyna.actor.cutscene)) { ActorCutscene_StartAndSetUnkLinkFields(this->dyna.actor.cutscene, &this->dyna.actor); - gSaveContext.save.weekEventReg[12] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_12_01); Flags_SetSwitch(play, BG_NUMA_HANA_SWITCH_FLAG(&this->dyna.actor)); BgNumaHana_SetupUnfoldInnerPetals(this); } else { diff --git a/src/overlays/actors/ovl_Bg_Open_Shutter/z_bg_open_shutter.c b/src/overlays/actors/ovl_Bg_Open_Shutter/z_bg_open_shutter.c index 1b45578c1..c264b9775 100644 --- a/src/overlays/actors/ovl_Bg_Open_Shutter/z_bg_open_shutter.c +++ b/src/overlays/actors/ovl_Bg_Open_Shutter/z_bg_open_shutter.c @@ -121,7 +121,7 @@ void func_80ACAD88(BgOpenShutter* this, PlayState* play) { doorDirection = func_80ACABA8(this, play); if (doorDirection > 0) { - player->doorType = 2; + player->doorType = PLAYER_DOORTYPE_SLIDING; player->doorDirection = doorDirection; player->doorActor = &this->dyna.actor; func_80122F28(player); diff --git a/src/overlays/actors/ovl_Bg_Sinkai_Kabe/z_bg_sinkai_kabe.c b/src/overlays/actors/ovl_Bg_Sinkai_Kabe/z_bg_sinkai_kabe.c index 8edd322ba..2ec37cb7e 100644 --- a/src/overlays/actors/ovl_Bg_Sinkai_Kabe/z_bg_sinkai_kabe.c +++ b/src/overlays/actors/ovl_Bg_Sinkai_Kabe/z_bg_sinkai_kabe.c @@ -67,7 +67,7 @@ void BgSinkaiKabe_Init(Actor* thisx, PlayState* play) { this->pythonIndex = sCurrentPythonIndex; sCurrentPythonIndex++; - if (!(gSaveContext.save.weekEventReg[13] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_13_01)) { this->deepPython = Actor_SpawnAsChild(&play->actorCtx, &this->dyna.actor, play, ACTOR_EN_DRAGON, pos.x, pos.y, pos.z, 0, this->dyna.actor.world.rot.y, 1, this->dyna.actor.params); @@ -82,14 +82,14 @@ void BgSinkaiKabe_Init(Actor* thisx, PlayState* play) { } } else { shouldSpawnSeahorse = false; - if (((this->dyna.actor.params == 0) && (gSaveContext.save.weekEventReg[83] & 0x10)) || - ((this->dyna.actor.params == 1) && (gSaveContext.save.weekEventReg[83] & 0x20)) || - ((this->dyna.actor.params == 2) && (gSaveContext.save.weekEventReg[83] & 0x40)) || - ((this->dyna.actor.params == 3) && (gSaveContext.save.weekEventReg[83] & 0x80)) || - ((this->dyna.actor.params == 4) && (gSaveContext.save.weekEventReg[84] & 1)) || - ((this->dyna.actor.params == 5) && (gSaveContext.save.weekEventReg[84] & 2)) || - ((this->dyna.actor.params == 6) && (gSaveContext.save.weekEventReg[84] & 4)) || - ((this->dyna.actor.params == 7) && (gSaveContext.save.weekEventReg[84] & 8))) { + if (((this->dyna.actor.params == 0) && CHECK_WEEKEVENTREG(WEEKEVENTREG_83_10)) || + ((this->dyna.actor.params == 1) && CHECK_WEEKEVENTREG(WEEKEVENTREG_83_20)) || + ((this->dyna.actor.params == 2) && CHECK_WEEKEVENTREG(WEEKEVENTREG_83_40)) || + ((this->dyna.actor.params == 3) && CHECK_WEEKEVENTREG(WEEKEVENTREG_83_80)) || + ((this->dyna.actor.params == 4) && CHECK_WEEKEVENTREG(WEEKEVENTREG_84_01)) || + ((this->dyna.actor.params == 5) && CHECK_WEEKEVENTREG(WEEKEVENTREG_84_02)) || + ((this->dyna.actor.params == 6) && CHECK_WEEKEVENTREG(WEEKEVENTREG_84_04)) || + ((this->dyna.actor.params == 7) && CHECK_WEEKEVENTREG(WEEKEVENTREG_84_08))) { shouldSpawnSeahorse = true; } diff --git a/src/overlays/actors/ovl_Bg_Spdweb/z_bg_spdweb.c b/src/overlays/actors/ovl_Bg_Spdweb/z_bg_spdweb.c index d8885a829..fb8d464c8 100644 --- a/src/overlays/actors/ovl_Bg_Spdweb/z_bg_spdweb.c +++ b/src/overlays/actors/ovl_Bg_Spdweb/z_bg_spdweb.c @@ -278,7 +278,7 @@ void func_809CE4C8(BgSpdweb* this, PlayState* play) { sp40.x = this->dyna.actor.world.pos.x; sp40.y = this->dyna.actor.world.pos.y - 50.0f; sp40.z = this->dyna.actor.world.pos.z; - sp3A = player->unk_B6A; + sp3A = player->fallDistance; if (Player_IsBurningStickInRange(play, &sp40, 70.0f, 50.0f)) { this->dyna.actor.home.pos.x = player->meleeWeaponInfo[0].tip.x; @@ -330,7 +330,7 @@ void func_809CE4C8(BgSpdweb* this, PlayState* play) { if ((this->unk_161 != 0) || ((DynaPolyActor_IsInRidingMovingState(&this->dyna) != 0) && (this->unk_164 > 2.0f))) { player->actor.velocity.y = this->unk_164 * 0.7f; - player->unk_B68 = (SQ(this->unk_164) * 0.15f) + this->dyna.actor.world.pos.y; + player->fallStartHeight = (SQ(this->unk_164) * 0.15f) + this->dyna.actor.world.pos.y; this->unk_161 = 0; player->stateFlags1 &= ~PLAYER_STATE1_20; } @@ -450,7 +450,7 @@ void func_809CEBC0(BgSpdweb* this, PlayState* play) { this->dyna.actor.world.pos.z; } func_809CEE74(this); - } else if ((player->itemActionParam == 7) && (player->unk_B28 != 0)) { + } else if ((player->heldItemAction == PLAYER_IA_STICK) && (player->unk_B28 != 0)) { Math_Vec3f_Diff(&player->meleeWeaponInfo[0].tip, &this->dyna.actor.world.pos, &sp3C); sp38 = Math_SinS(-this->dyna.actor.shape.rot.x); sp34 = Math_CosS(-this->dyna.actor.shape.rot.x); diff --git a/src/overlays/actors/ovl_Bg_Tobira01/z_bg_tobira01.c b/src/overlays/actors/ovl_Bg_Tobira01/z_bg_tobira01.c index a4256de8f..d6617ef1c 100644 --- a/src/overlays/actors/ovl_Bg_Tobira01/z_bg_tobira01.c +++ b/src/overlays/actors/ovl_Bg_Tobira01/z_bg_tobira01.c @@ -38,12 +38,12 @@ void BgTobira01_Open(BgTobira01* this, PlayState* play) { ActorCutscene_Stop(0x7C); } else if (ActorCutscene_GetCanPlayNext(cutsceneId)) { ActorCutscene_StartAndSetUnkLinkFields(cutsceneId, &this->dyna.actor); - gSaveContext.save.weekEventReg[88] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_88_40); this->playCutscene = false; } else { ActorCutscene_SetIntentToPlay(cutsceneId); } - } else if (!(gSaveContext.save.weekEventReg[88] & 0x40) && (this->timer == 0) && (play->actorCtx.unk1F5 != 0) && + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_88_40) && (this->timer == 0) && (play->actorCtx.unk1F5 != 0) && (play->actorCtx.unk1F4 == 0) && (SurfaceType_GetSceneExitIndex(&play->colCtx, player->actor.floorPoly, player->actor.floorBgId) == 6)) { this->playCutscene = true; @@ -52,7 +52,7 @@ void BgTobira01_Open(BgTobira01* this, PlayState* play) { prevTimer = this->timer; - if (gSaveContext.save.weekEventReg[88] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_88_40)) { this->timer++; } else { this->timer--; @@ -67,9 +67,9 @@ void BgTobira01_Open(BgTobira01* this, PlayState* play) { this->timer2 = 180; } - if (!(player->stateFlags1 & PLAYER_STATE1_40) && (gSaveContext.save.weekEventReg[88] & 0x40) && + if (!(player->stateFlags1 & PLAYER_STATE1_40) && CHECK_WEEKEVENTREG(WEEKEVENTREG_88_40) && (DECR(this->timer2) == 0)) { - gSaveContext.save.weekEventReg[88] &= (u8)~0x40; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_88_40); } } @@ -79,7 +79,7 @@ void BgTobira01_Init(Actor* thisx, PlayState* play) { DynaPolyActor_Init(&this->dyna, 1); DynaPolyActor_LoadMesh(play, &this->dyna, &object_spot11_obj_Colheader_0011C0); - gSaveContext.save.weekEventReg[88] &= (u8)~0x40; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_88_40); Actor_SetScale(&this->dyna.actor, 1.0f); this->timer2 = gSaveContext.save.isNight; this->timer = 0; diff --git a/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.c b/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.c index 479239f05..bef32aedd 100644 --- a/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.c +++ b/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.c @@ -61,7 +61,7 @@ void BgUmajump_StopCutscene(BgUmajump* this, PlayState* play) { void BgUmajump_PlayCutscene(BgUmajump* this, PlayState* play) { if (ActorCutscene_GetCanPlayNext(this->dyna.actor.cutscene)) { ActorCutscene_StartAndSetUnkLinkFields(this->dyna.actor.cutscene, &this->dyna.actor); - gSaveContext.save.weekEventReg[89] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_89_20); this->actionFunc = BgUmajump_StopCutscene; } else { ActorCutscene_SetIntentToPlay(this->dyna.actor.cutscene); @@ -93,7 +93,7 @@ void BgUmajump_Init(Actor* thisx, PlayState* play) { thisx->params = BG_UMAJUMP_GET_FF(thisx); if ((thisx->params == BG_UMAJUMP_TYPE_2)) { - if ((((play->sceneId == SCENE_F01) && !(gSaveContext.save.weekEventReg[89] & 0x20)) && + if ((((play->sceneId == SCENE_F01) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_89_20)) && !CHECK_QUEST_ITEM(QUEST_SONG_EPONA)) && (thisx->cutscene != -1)) { this->actionFunc = BgUmajump_CheckDistance; @@ -134,11 +134,11 @@ void BgUmajump_Update(Actor* thisx, PlayState* play) { Actor_SetObjectDependency(play, &this->dyna.actor); if (this->dyna.actor.params == BG_UMAJUMP_TYPE_5) { - if (gSaveContext.save.weekEventReg[22] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { DynaPolyActor_LoadMesh(play, &this->dyna, &object_umajump_Colheader_001558); } } else if (this->dyna.actor.params == BG_UMAJUMP_TYPE_6) { - if (!(gSaveContext.save.weekEventReg[22] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { DynaPolyActor_LoadMesh(play, &this->dyna, &object_umajump_Colheader_001558); } } else if ((this->dyna.actor.params == BG_UMAJUMP_TYPE_4) || (this->dyna.actor.params == BG_UMAJUMP_TYPE_3)) { @@ -155,11 +155,11 @@ void BgUmajump_Update(Actor* thisx, PlayState* play) { this->dyna.actor.update = func_8091A5A0; } else if ((this->dyna.actor.params == BG_UMAJUMP_TYPE_5) || (this->dyna.actor.params == BG_UMAJUMP_TYPE_6)) { if (this->dyna.actor.params == BG_UMAJUMP_TYPE_5) { - if ((this->dyna.bgId == BGACTOR_NEG_ONE) && (gSaveContext.save.weekEventReg[22] & 1)) { + if ((this->dyna.bgId == BGACTOR_NEG_ONE) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { DynaPolyActor_LoadMesh(play, &this->dyna, &object_umajump_Colheader_001558); } } else if ((this->dyna.actor.params == BG_UMAJUMP_TYPE_6) && (this->dyna.bgId == BGACTOR_NEG_ONE) && - (!(gSaveContext.save.weekEventReg[22] & 1) || + (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01) || ((gSaveContext.save.day == 2) && (gSaveContext.save.isNight == true) && ((gSaveContext.save.time >= CLOCK_TIME(5, 30)) && (gSaveContext.save.time <= CLOCK_TIME(6, 0)))))) { @@ -191,18 +191,18 @@ void func_8091A5A0(Actor* thisx, PlayState* play) { } if (this->dyna.actor.params == BG_UMAJUMP_TYPE_5) { - if ((this->dyna.bgId == BGACTOR_NEG_ONE) && (gSaveContext.save.weekEventReg[22] & 1)) { + if ((this->dyna.bgId == BGACTOR_NEG_ONE) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { DynaPolyActor_LoadMesh(play, &this->dyna, &object_umajump_Colheader_001558); - } else if ((this->dyna.bgId != BGACTOR_NEG_ONE) && !(gSaveContext.save.weekEventReg[22] & 1)) { + } else if ((this->dyna.bgId != BGACTOR_NEG_ONE) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId); } } else if (this->dyna.actor.params == BG_UMAJUMP_TYPE_6) { if ((this->dyna.bgId == BGACTOR_NEG_ONE) && - (!(gSaveContext.save.weekEventReg[22] & 1) || + (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01) || ((gSaveContext.save.day == 2) && (gSaveContext.save.isNight == true) && (gSaveContext.save.time >= CLOCK_TIME(5, 30)) && (gSaveContext.save.time <= CLOCK_TIME(6, 0))))) { DynaPolyActor_LoadMesh(play, &this->dyna, &object_umajump_Colheader_001558); - } else if ((this->dyna.bgId != BGACTOR_NEG_ONE) && (gSaveContext.save.weekEventReg[22] & 1) && + } else if ((this->dyna.bgId != BGACTOR_NEG_ONE) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01) && ((gSaveContext.save.day != 2) || (gSaveContext.save.isNight != true) || (gSaveContext.save.time < CLOCK_TIME(5, 30)) || (gSaveContext.save.time > CLOCK_TIME(6, 0)))) { DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId); diff --git a/src/overlays/actors/ovl_Boss_02/z_boss_02.c b/src/overlays/actors/ovl_Boss_02/z_boss_02.c index 8ab8b2651..f28c3cd34 100644 --- a/src/overlays/actors/ovl_Boss_02/z_boss_02.c +++ b/src/overlays/actors/ovl_Boss_02/z_boss_02.c @@ -4,6 +4,7 @@ * Description: Twinmold */ +#include "prevent_bss_reordering.h" #include "z_boss_02.h" #include "z64rumble.h" #include "z64shrink_window.h" @@ -550,7 +551,7 @@ void Boss02_Init(Actor* thisx, PlayState* play) { s32 i; s32 pad[2]; - if ((gSaveContext.save.weekEventReg[52] & 0x20) && (this->actor.params == TWINMOLD_RED)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_20) && (this->actor.params == TWINMOLD_RED)) { sBlueWarp = (DoorWarp1*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1, 0.0f, 60.0f, 0.0f, 0, 0, 0, 1); Actor_Spawn(&play->actorCtx, play, ACTOR_ITEM_B_HEART, 0.0f, 30.0f, -150.0f, 0, 1, 0, 0); @@ -566,7 +567,7 @@ void Boss02_Init(Actor* thisx, PlayState* play) { this->actor.draw = Boss02_Static_Draw; this->actor.flags &= ~ACTOR_FLAG_1; this->unk_1D70 = 0.00999999977648f; - if ((KREG(64) != 0) || (gSaveContext.eventInf[5] & 0x20) || (sBlueWarp != NULL)) { + if ((KREG(64) != 0) || CHECK_EVENTINF(EVENTINF_55) || (sBlueWarp != NULL)) { this->unk_1D20 = 0; sMusicStartTimer = KREG(15) + 20; } else { @@ -1336,8 +1337,8 @@ void Boss02_Twinmold_Draw(Actor* thisx, PlayState* play2) { Boss02* this = THIS; s32 i; s32 idx; - Mtx* mtx; - Mtx* mtxIter; + Mtx* mtxHead = GRAPH_ALLOC(play->state.gfxCtx, 23 * sizeof(Mtx)); + Mtx* mtx = mtxHead; s32 phi_v0; f32 phi_f12; f32 spAC; @@ -1347,8 +1348,6 @@ void Boss02_Twinmold_Draw(Actor* thisx, PlayState* play2) { f32 sp9C; f32 sp98; - mtxIter = mtx = GRAPH_ALLOC(play->state.gfxCtx, sizeof(Mtx) * 23); - OPEN_DISPS(play->state.gfxCtx); func_8012C28C(play->state.gfxCtx); @@ -1359,7 +1358,7 @@ void Boss02_Twinmold_Draw(Actor* thisx, PlayState* play2) { gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(gTwinmoldBlueSkinTex)); } - gSPSegment(POLY_OPA_DISP++, 0x0D, mtx); + gSPSegment(POLY_OPA_DISP++, 0x0D, mtxHead); if (!sIsInGiantMode) { sp98 = -500.0f; @@ -1396,7 +1395,7 @@ void Boss02_Twinmold_Draw(Actor* thisx, PlayState* play2) { spA4 = 0.0f; spA0 = 0.0f; - for (i = 0; i < ARRAY_COUNT(D_809DFA9C); i++, mtxIter++) { + for (i = 0; i < ARRAY_COUNT(D_809DFA9C); i++, mtx++) { if (this->unk_0195 != 0) { phi_v0 = (D_809DF5E4[i + 1] + this->unk_014E) % ARRAY_COUNT(this->unk_01BC); } else { @@ -1415,9 +1414,9 @@ void Boss02_Twinmold_Draw(Actor* thisx, PlayState* play2) { Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); Matrix_RotateYF(M_PI / 2, MTXMODE_APPLY); Matrix_RotateXFApply(-(M_PI / 2)); - Matrix_ToMtx(mtxIter); + Matrix_ToMtx(mtx); - gSPMatrix(POLY_OPA_DISP++, mtxIter, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_OPA_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); if ((this->unk_0156 & 1) && (i >= this->unk_0158) && (this->unk_015A >= i)) { POLY_OPA_DISP = Gfx_SetFog(POLY_OPA_DISP, 255, 0, 0, 255, 0x384, 0x44B); @@ -1578,7 +1577,7 @@ void Boss02_DrawEffects(PlayState* play) { for (i = 0, flag = false; i < ARRAY_COUNT(sEffects); i++, effect++) { if (effect->type == TWINMOLD_EFFECT_FLASH) { if (!flag) { //! @bug - dev forgot to set flag to 1, should only apply to first entry? - gSPDisplayList(POLY_XLU_DISP++, gLightOrb1DL); + gSPDisplayList(POLY_XLU_DISP++, gLightOrbMaterial1DL); gDPSetEnvColor(POLY_XLU_DISP++, 255, 0, 0, 128); } @@ -1589,7 +1588,7 @@ void Boss02_DrawEffects(PlayState* play) { Matrix_Scale(effect->scale * D_809DF5B0, effect->scale * D_809DF5B0, 1.0f, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gLightOrbVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gLightOrbModelDL); } } @@ -1788,7 +1787,7 @@ void func_809DD934(Boss02* this, PlayState* play) { player->actor.world.pos.x *= 10.0f; player->actor.world.pos.y -= 3150.0f; player->actor.world.pos.y *= 10.0f; - player->unk_B68 = player->actor.world.pos.y; + player->fallStartHeight = player->actor.world.pos.y; player->actor.world.pos.z *= 10.0f; if ((sBlueWarp != NULL) && ((SQ(player->actor.world.pos.z) + SQ(player->actor.world.pos.x)) < SQ(60.0f))) { @@ -1860,7 +1859,7 @@ void func_809DD934(Boss02* this, PlayState* play) { player->actor.world.pos.x *= 0.1f; player->actor.world.pos.y *= 0.1f; player->actor.world.pos.y += 3150.0f; - player->unk_B68 = player->actor.world.pos.y; + player->fallStartHeight = player->actor.world.pos.y; player->actor.world.pos.z *= 0.1f; sRedTwinmold->actor.world.pos.x *= 0.1f; @@ -2052,7 +2051,7 @@ void func_809DEAC4(Boss02* this, PlayState* play) { break; case 1: - if ((gSaveContext.save.weekEventReg[52] & 0x20) || ((u32)(KREG(13) + 15) >= this->unk_1D1C)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_20) || ((u32)(KREG(13) + 15) >= this->unk_1D1C)) { break; } Cutscene_Start(play, &play->csCtx); @@ -2088,7 +2087,7 @@ void func_809DEAC4(Boss02* this, PlayState* play) { } if (this->unk_1D1C == 45) { - func_800B7298(play, &this->actor, 21); + func_800B7298(play, &this->actor, PLAYER_CSMODE_21); sMusicStartTimer = KREG(91) + 43; } @@ -2102,7 +2101,7 @@ void func_809DEAC4(Boss02* this, PlayState* play) { } if (this->unk_1D1C == 100) { - func_800B7298(play, &this->actor, 0x73); + func_800B7298(play, &this->actor, PLAYER_CSMODE_115); } if (this->unk_1D1C == 112) { @@ -2141,12 +2140,12 @@ void func_809DEAC4(Boss02* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_End(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + func_800B7298(play, &this->actor, PLAYER_CSMODE_6); this->actor.flags |= ACTOR_FLAG_1; this->unk_1D20 = 0; sRedTwinmold->unk_0144 = sBlueTwinmold->unk_0144 = 3; sRedTwinmold->unk_0146[0] = sBlueTwinmold->unk_0146[0] = 60; - gSaveContext.eventInf[5] |= 0x20; + SET_EVENTINF(EVENTINF_55); } break; @@ -2202,7 +2201,7 @@ void func_809DEAC4(Boss02* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_End(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + func_800B7298(play, &this->actor, PLAYER_CSMODE_6); this->unk_1D20 = 0; this->actor.flags |= ACTOR_FLAG_1; sp68->unk_0144 = 10; diff --git a/src/overlays/actors/ovl_Boss_03/z_boss_03.c b/src/overlays/actors/ovl_Boss_03/z_boss_03.c index a4c58e71d..4c3b34fbb 100644 --- a/src/overlays/actors/ovl_Boss_03/z_boss_03.c +++ b/src/overlays/actors/ovl_Boss_03/z_boss_03.c @@ -7,10 +7,6 @@ /** * Some notes: * - * Global flags: - * - gSaveContext.eventInf[5] & 0x40: Enabled when Gyorg's intro cutscene has been watched - * - gSaveContext.save.weekEventReg[55] & 0x80: Checked to know if Gyorg has been defeated - * * Seaweed: * - Refers to the seaweed at the bottom of the stage where Player fights Gyorg * - The default Gyorg actor will spawn 5 other Gyorg instances using the parameter GYORG_PARAM_SEAWEED to spawn them @@ -453,7 +449,7 @@ void Boss03_Init(Actor* thisx, PlayState* play2) { PlayState* play = play2; Vec3f sp70; - if (gSaveContext.save.weekEventReg[55] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1, 0.0f, PLATFORM_HEIGHT, 200.0f, 0, 0, 0, ENDOORWARP1_FF_1); Actor_Spawn(&play->actorCtx, play, ACTOR_ITEM_B_HEART, 0.0f, PLATFORM_HEIGHT, 0.0f, 0, 0, 0, 0); @@ -519,8 +515,8 @@ void Boss03_Init(Actor* thisx, PlayState* play2) { GYORG_LIMB_MAX); Actor_SetScale(&this->actor, 0.2f); - // gSaveContext.eventInf[5] & 0x40: intro cutscene already watched - if ((KREG(64) != 0) || (gSaveContext.eventInf[5] & 0x40)) { + // CHECK_EVENTINF(EVENTINF_56): intro cutscene already watched + if ((KREG(64) != 0) || CHECK_EVENTINF(EVENTINF_56)) { this->actionFunc = func_809E344C; D_809E9842 = false; Audio_QueueSeqCmd(NA_BGM_STOP | 0x10000); @@ -579,10 +575,10 @@ void func_809E34B8(Boss03* this, PlayState* play) { yDiff = this->unk_268.y - this->actor.world.pos.y; zDiff = this->unk_268.z - this->actor.world.pos.z; - Math_ApproachS(&this->actor.world.rot.x, Math_FAtan2F(sqrtf(SQ(xDiff) + SQ(zDiff)), -yDiff), 0xA, this->unk_274); + Math_ApproachS(&this->actor.world.rot.x, Math_Atan2S_XY(sqrtf(SQ(xDiff) + SQ(zDiff)), -yDiff), 0xA, this->unk_274); bodyYRotTarget = - Math_SmoothStepToS(&this->actor.world.rot.y, Math_FAtan2F(zDiff, xDiff), 0xA, this->unk_274, 0) * -0.5f; + Math_SmoothStepToS(&this->actor.world.rot.y, Math_Atan2S_XY(zDiff, xDiff), 0xA, this->unk_274, 0) * -0.5f; Math_ApproachS(&this->bodyYRot, bodyYRotTarget, 5, 0x100); Math_ApproachS(&this->unk_274, this->unk_276, 1, 0x100); @@ -668,9 +664,9 @@ void Boss03_ChasePlayer(Boss03* this, PlayState* play) { yDiff = (player->actor.world.pos.y - this->actor.world.pos.y) + 50.0f; zDiff = player->actor.world.pos.z - this->actor.world.pos.z; - Math_ApproachS(&this->actor.world.rot.x, Math_FAtan2F(sqrtf(SQ(xDiff) + SQ(zDiff)), -yDiff), 0xA, this->unk_274); + Math_ApproachS(&this->actor.world.rot.x, Math_Atan2S_XY(sqrtf(SQ(xDiff) + SQ(zDiff)), -yDiff), 0xA, this->unk_274); bodyYRotTarget = - Math_SmoothStepToS(&this->actor.world.rot.y, Math_FAtan2F(zDiff, xDiff), 0xA, this->unk_274, 0) * -0.5f; + Math_SmoothStepToS(&this->actor.world.rot.y, Math_Atan2S_XY(zDiff, xDiff), 0xA, this->unk_274, 0) * -0.5f; Math_ApproachS(&this->bodyYRot, bodyYRotTarget, 5, 0x100); Math_ApproachS(&this->unk_274, this->unk_276, 1, 0x100); @@ -688,7 +684,7 @@ void Boss03_ChasePlayer(Boss03* this, PlayState* play) { if (&this->actor == player->actor.parent) { player->unk_AE8 = 101; player->actor.parent = NULL; - player->csMode = 0; + player->csMode = PLAYER_CSMODE_0; } func_809E344C(this, play); @@ -764,9 +760,9 @@ void Boss03_CatchPlayer(Boss03* this, PlayState* play) { yDiff = player->actor.world.pos.y - this->actor.world.pos.y; zDiff = player->actor.world.pos.z - this->actor.world.pos.z; - Math_ApproachS(&this->actor.world.rot.x, Math_FAtan2F(sqrtf(SQ(xDiff) + SQ(zDiff)), -yDiff), 0xA, this->unk_274); + Math_ApproachS(&this->actor.world.rot.x, Math_Atan2S_XY(sqrtf(SQ(xDiff) + SQ(zDiff)), -yDiff), 0xA, this->unk_274); Math_ApproachS(&this->bodyYRot, - Math_SmoothStepToS(&this->actor.world.rot.y, Math_FAtan2F(zDiff, xDiff), 0xA, this->unk_274, 0) * + Math_SmoothStepToS(&this->actor.world.rot.y, Math_Atan2S_XY(zDiff, xDiff), 0xA, this->unk_274, 0) * -0.5f, 5, 0x100); Math_ApproachS(&this->unk_274, this->unk_276, 1, 0x100); @@ -783,7 +779,7 @@ void Boss03_CatchPlayer(Boss03* this, PlayState* play) { if (&this->actor == player->actor.parent) { player->unk_AE8 = 101; player->actor.parent = NULL; - player->csMode = 0; + player->csMode = PLAYER_CSMODE_0; func_80165690(); } @@ -830,7 +826,7 @@ void Boss03_SetupChewPlayer(Boss03* this, PlayState* play) { this->actionFunc = Boss03_ChewPlayer; - pitchAngle = Math_FAtan2F(this->actor.world.pos.z, this->actor.world.pos.x); + pitchAngle = Math_Atan2S_XY(this->actor.world.pos.z, this->actor.world.pos.x); Matrix_RotateYS(pitchAngle, MTXMODE_NEW); out.x = 0.0f; @@ -868,9 +864,9 @@ void Boss03_ChewPlayer(Boss03* this, PlayState* play) { yDiff = this->unk_268.y - this->actor.world.pos.y; zDiff = this->unk_268.z - this->actor.world.pos.z; - Math_ApproachS(&this->actor.world.rot.x, Math_FAtan2F(sqrtf(SQ(xDiff) + SQ(zDiff)), -yDiff), 0xA, this->unk_274); + Math_ApproachS(&this->actor.world.rot.x, Math_Atan2S_XY(sqrtf(SQ(xDiff) + SQ(zDiff)), -yDiff), 0xA, this->unk_274); Math_ApproachS(&this->bodyYRot, - Math_SmoothStepToS(&this->actor.world.rot.y, Math_FAtan2F(zDiff, xDiff), 0xA, this->unk_274, 0) * + Math_SmoothStepToS(&this->actor.world.rot.y, Math_Atan2S_XY(zDiff, xDiff), 0xA, this->unk_274, 0) * -0.5f, 5, 0x100); Math_ApproachS(&this->unk_274, this->unk_276, 1, 0x100); @@ -911,7 +907,7 @@ void Boss03_ChewPlayer(Boss03* this, PlayState* play) { if (&this->actor == player->actor.parent) { player->unk_AE8 = 101; player->actor.parent = NULL; - player->csMode = 0; + player->csMode = PLAYER_CSMODE_0; func_80165690(); func_800B8D50(play, NULL, 10.0f, this->actor.shape.rot.y, 0.0f, 0x20); } @@ -1030,9 +1026,9 @@ void Boss03_Charge(Boss03* this, PlayState* play) { yDiff = (this->unk_268.y - this->actor.world.pos.y) - 50.0f; zDiff = this->unk_268.z - this->actor.world.pos.z; - Math_ApproachS(&this->actor.world.rot.y, Math_FAtan2F(zDiff, xDiff), 0xA, 0x1000); + Math_ApproachS(&this->actor.world.rot.y, Math_Atan2S_XY(zDiff, xDiff), 0xA, 0x1000); - rotXTarget = Math_FAtan2F(sqrtf(SQ(xDiff) + SQ(zDiff)), -yDiff); + rotXTarget = Math_Atan2S_XY(sqrtf(SQ(xDiff) + SQ(zDiff)), -yDiff); Math_ApproachS(&this->actor.world.rot.x, rotXTarget, 0xA, 0x1000); this->actor.shape.rot = this->actor.world.rot; @@ -1059,7 +1055,7 @@ void Boss03_Charge(Boss03* this, PlayState* play) { // Player is above water && Player is standing on ground if ((this->waterHeight < player->actor.world.pos.y) && (player->actor.bgCheckFlags & 1)) { - func_800B8D50(play, NULL, 7.0f, Math_FAtan2F(player->actor.world.pos.z, player->actor.world.pos.x), + func_800B8D50(play, NULL, 7.0f, Math_Atan2S_XY(player->actor.world.pos.z, player->actor.world.pos.x), 7.0f, 0); } @@ -1149,7 +1145,7 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) { case 0: if (player->actor.world.pos.y < 1350.0f) { Cutscene_Start(play, &play->csCtx); - func_800B7298(play, &this->actor, 7); + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); @@ -1201,9 +1197,9 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) { yDiff = D_809E9104[this->unk_242].y - this->actor.world.pos.y; zDiff = D_809E9104[this->unk_242].z - this->actor.world.pos.z; - Math_ApproachS(&this->actor.world.rot.x, Math_FAtan2F(sqrtf(SQ(xDiff) + SQ(zDiff)), -yDiff), - 0xA, this->unk_274); - Math_ApproachS(&this->actor.world.rot.y, Math_FAtan2F(zDiff, xDiff), 0xA, this->unk_274); + Math_ApproachS(&this->actor.world.rot.x, + Math_Atan2S_XY(sqrtf(SQ(xDiff) + SQ(zDiff)), -yDiff), 0xA, this->unk_274); + Math_ApproachS(&this->actor.world.rot.y, Math_Atan2S_XY(zDiff, xDiff), 0xA, this->unk_274); Math_ApproachS(&this->unk_274, 0x200, 1, 0x10); if ((this->csTimer > 30) && (this->csTimer < 50)) { @@ -1260,7 +1256,7 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) { if (this->csTimer == 5) { // Rotates Player towards Gyorg - func_800B7298(play, &this->actor, 8); + func_800B7298(play, &this->actor, PLAYER_CSMODE_8); } this->subCamEye.x = player->actor.world.pos.x + 30.0f; @@ -1371,13 +1367,13 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); Cutscene_End(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + func_800B7298(play, &this->actor, PLAYER_CSMODE_6); this->subCamId = SUB_CAM_ID_DONE; func_809E344C(this, play); this->workTimer[WORK_TIMER_UNK1_A] = 50; - gSaveContext.eventInf[5] |= 0x40; + SET_EVENTINF(EVENTINF_56); } break; } @@ -1449,11 +1445,11 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) { case 0: if (ActorCutscene_GetCurrentIndex() == -1) { Cutscene_Start(play, &play->csCtx); - func_800B7298(play, &this->actor, 1); + func_800B7298(play, &this->actor, PLAYER_CSMODE_1); this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); - this->unk_2BE = Math_FAtan2F(this->actor.world.pos.z, this->actor.world.pos.x); + this->unk_2BE = Math_Atan2S_XY(this->actor.world.pos.z, this->actor.world.pos.x); // Player is above water && Player is standing on ground if ((this->waterHeight < player->actor.world.pos.y) && (player->actor.bgCheckFlags & 1)) { @@ -1472,7 +1468,7 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) { this->subCamAt.z = mainCam->at.z; aux = this->subCamEye.x - this->actor.world.pos.x; - this->unk_568 = Math_Acot2F(this->subCamEye.z - this->actor.world.pos.z, aux); + this->unk_568 = Math_Atan2F_XY(this->subCamEye.z - this->actor.world.pos.z, aux); this->unk_570 = 0.0f; this->unk_56C = 0.0f; @@ -1586,7 +1582,7 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) { this->shapeRotTargetY = Rand_ZeroFloat(65536.0f); } - this->actor.world.rot.y = Math_FAtan2F(-this->actor.world.pos.z, -this->actor.world.pos.x); + this->actor.world.rot.y = Math_Atan2S_XY(-this->actor.world.pos.z, -this->actor.world.pos.x); Boss03_PlayUnderwaterSfx(&this->actor.projectedPos, NA_SE_EN_KONB_BOUND_OLD); Boss03_PlayUnderwaterSfx(&this->actor.projectedPos, NA_SE_EN_KONB_BOUND2_OLD); @@ -1629,7 +1625,7 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_End(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + func_800B7298(play, &this->actor, PLAYER_CSMODE_6); this->csState = 3; func_80165690(); Boss03_PlayUnderwaterSfx(&this->actor.projectedPos, NA_SE_EN_KONB_INIT_OLD); @@ -1663,7 +1659,7 @@ void Boss03_SpawnSmallFishesCutscene(Boss03* this, PlayState* play) { case 0: if (ActorCutscene_GetCurrentIndex() == -1) { Cutscene_Start(play, &play->csCtx); - func_800B7298(play, &this->actor, 1); + func_800B7298(play, &this->actor, PLAYER_CSMODE_1); this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); @@ -1683,7 +1679,7 @@ void Boss03_SpawnSmallFishesCutscene(Boss03* this, PlayState* play) { this->actor.shape.rot.x = this->actor.shape.rot.z; this->actor.shape.rot.y = this->actor.world.rot.y = - Math_FAtan2F(-this->actor.world.pos.x, -this->actor.world.pos.x); + Math_Atan2S_XY(-this->actor.world.pos.x, -this->actor.world.pos.x); this->unk_260 = 0.0f; player->actor.shape.rot.y = player->actor.world.rot.y = this->actor.world.rot.y + 0x8000; @@ -1724,7 +1720,7 @@ void Boss03_SpawnSmallFishesCutscene(Boss03* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_End(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + func_800B7298(play, &this->actor, PLAYER_CSMODE_6); func_809E344C(this, play); this->workTimer[WORK_TIMER_UNK1_A] = 50; @@ -1754,7 +1750,7 @@ void Boss03_SetupStunned(Boss03* this, PlayState* play) { if (&this->actor == player->actor.parent) { player->unk_AE8 = 101; player->actor.parent = NULL; - player->csMode = 0; + player->csMode = PLAYER_CSMODE_0; func_80165690(); } @@ -1906,7 +1902,7 @@ void Boss03_UpdateCollision(Boss03* this, PlayState* play) { if (&this->actor == player->actor.parent) { player->unk_AE8 = 101; player->actor.parent = NULL; - player->csMode = 0; + player->csMode = PLAYER_CSMODE_0; func_80165690(); } @@ -2540,7 +2536,7 @@ void Boss03_SeaweedUpdate(Actor* thisx, PlayState* play) { } if (flag & SEAWEED_FLAG_INTERACT_PLAYER) { - Math_ApproachS(&this->actor.shape.rot.y, Math_FAtan2F(zDiff, xDiff), 0x14, 0x800); + Math_ApproachS(&this->actor.shape.rot.y, Math_Atan2S_XY(zDiff, xDiff), 0x14, 0x800); } if (sGyorgBossInstance->actor.world.pos.y - 40.0f < sGyorgBossInstance->waterHeight) { @@ -2573,7 +2569,7 @@ void Boss03_SeaweedUpdate(Actor* thisx, PlayState* play) { } if (flag & SEAWEED_FLAG_INTERACT_GYORG) { - Math_ApproachS(&this->actor.shape.rot.y, Math_FAtan2F(zDiff, xDiff), 0x14, 0x800); + Math_ApproachS(&this->actor.shape.rot.y, Math_Atan2S_XY(zDiff, xDiff), 0x14, 0x800); } } @@ -2593,7 +2589,7 @@ void Boss03_SeaweedDraw(Actor* thisx, PlayState* play) { Boss03* this = THIS; s16 i; // Why 10 Mtxs? This seems to only use the first 6 elements - Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, sizeof(Mtx) * 10); + Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, 10 * sizeof(Mtx)); OPEN_DISPS(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_Boss_04/z_boss_04.c b/src/overlays/actors/ovl_Boss_04/z_boss_04.c index 26965b257..0b59ff9ed 100644 --- a/src/overlays/actors/ovl_Boss_04/z_boss_04.c +++ b/src/overlays/actors/ovl_Boss_04/z_boss_04.c @@ -199,7 +199,7 @@ void Boss04_Init(Actor* thisx, PlayState* play2) { this->actor.world.pos.z = this->unk_6F0; Actor_UpdateBgCheckInfo(play, &this->actor, 35.0f, 60.0f, 60.0f, 4); - if ((KREG(64) != 0) || (gSaveContext.eventInf[6] & 1)) { + if ((KREG(64) != 0) || CHECK_EVENTINF(EVENTINF_60)) { func_809ECD00(this, play); this->actor.world.pos.y = this->actor.floorHeight + 160.0f; phi_f24 = this->actor.floorHeight; @@ -263,7 +263,7 @@ void func_809EC568(Boss04* this, PlayState* play) { this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); - func_800B7298(play, &this->actor, 7); + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); player->actor.world.pos.x = this->unk_6E8; player->actor.world.pos.z = this->unk_6F0 + 410.0f; player->actor.shape.rot.y = 0x7FFF; @@ -313,7 +313,7 @@ void func_809EC568(Boss04* this, PlayState* play) { if (this->unk_704 == 45) { this->unk_708 = 1; this->unk_704 = 0; - func_800B7298(play, &this->actor, 0x15); + func_800B7298(play, &this->actor, PLAYER_CSMODE_21); this->actor.gravity = 0.0f; break; } @@ -390,9 +390,9 @@ void func_809EC568(Boss04* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_End(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + func_800B7298(play, &this->actor, PLAYER_CSMODE_6); func_80165690(); - gSaveContext.eventInf[6] |= 1; + SET_EVENTINF(EVENTINF_60); } break; } diff --git a/src/overlays/actors/ovl_Boss_06/z_boss_06.c b/src/overlays/actors/ovl_Boss_06/z_boss_06.c index a72dcf8b3..5dce58c4e 100644 --- a/src/overlays/actors/ovl_Boss_06/z_boss_06.c +++ b/src/overlays/actors/ovl_Boss_06/z_boss_06.c @@ -135,7 +135,7 @@ void Boss06_Init(Actor* thisx, PlayState* play) { D_809F4970 = (EnKnight*)this->actor.parent; this->actor.colChkInfo.damageTable = &sDamageTable; - if ((KREG(64) != 0) || (gSaveContext.eventInf[5] & 0x80)) { + if ((KREG(64) != 0) || CHECK_EVENTINF(EVENTINF_57)) { this->actionFunc = func_809F2E14; } else { this->actionFunc = func_809F2B64; @@ -199,7 +199,7 @@ void func_809F24C8(Boss06* this, PlayState* play) { } Cutscene_Start(play, &play->csCtx); - func_800B7298(play, &this->actor, 7); + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); @@ -239,7 +239,7 @@ void func_809F24C8(Boss06* this, PlayState* play) { this->unk_1D8 = 0.0f; if (this->unk_1CA == 60) { D_809F4970->unk_154++; - func_800B7298(play, &this->actor, 0x84); + func_800B7298(play, &this->actor, PLAYER_CSMODE_132); player->actor.shape.rot.y = 0; player->actor.world.rot.y = player->actor.shape.rot.y; } @@ -332,7 +332,7 @@ void func_809F24C8(Boss06* this, PlayState* play) { func_80169AFC(play, this->subCamId, 0); this->subCamId = SUB_CAM_ID_DONE; Cutscene_End(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + func_800B7298(play, &this->actor, PLAYER_CSMODE_6); D_809F4970->unk_151 = 0; } break; @@ -641,7 +641,7 @@ void Boss06_Draw(Actor* thisx, PlayState* play2) { Matrix_Translate(this->actor.world.pos.x + this->unk_1B0, this->actor.world.pos.y + 84.0f + this->unk_1B4, (this->actor.world.pos.z - 2.0f) + spE0, MTXMODE_NEW); - gSPDisplayList(POLY_XLU_DISP++, gLightOrb1DL); + gSPDisplayList(POLY_XLU_DISP++, gLightOrbMaterial1DL); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, (u8)((140.0f * sp68) + 115.0f), temp_s2); gDPSetEnvColor(POLY_XLU_DISP++, 255, 205, (u8)((100.0f * sp68) + 65.0f), 128); @@ -649,7 +649,7 @@ void Boss06_Draw(Actor* thisx, PlayState* play2) { Matrix_RotateZS(play->gameplayFrames * 64, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gLightOrbVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gLightOrbModelDL); } CLOSE_DISPS(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c index 279a4f0d0..cb34f8ff8 100644 --- a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c +++ b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c @@ -309,13 +309,13 @@ void func_808CE078(Actor* thisx, PlayState* play2) { Matrix_RotateZS(zRot, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gameplay_keep_DL_023288); + gSPDisplayList(POLY_XLU_DISP++, gEffFlash2DL); Matrix_Pop(); Matrix_RotateZS(-zRot, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gameplay_keep_DL_023288); + gSPDisplayList(POLY_XLU_DISP++, gEffFlash2DL); CLOSE_DISPS(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c index 8b396cad9..c1303efab 100644 --- a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c +++ b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c @@ -639,7 +639,7 @@ void DemoKankyo_DrawMoonAndGiant(Actor* thisx, PlayState* play2) { break; } - gSPDisplayList(POLY_XLU_DISP++, &gLightOrb1DL); + gSPDisplayList(POLY_XLU_DISP++, gLightOrbMaterial1DL); Matrix_Mult(&play->billboardMtxF, MTXMODE_APPLY); @@ -651,7 +651,7 @@ void DemoKankyo_DrawMoonAndGiant(Actor* thisx, PlayState* play2) { if (this->actor.params == DEMO_KANKYO_TYPE_GIANTS) { gSPDisplayList(POLY_XLU_DISP++, gBubbleDL); } else { - gSPDisplayList(POLY_XLU_DISP++, gLightOrbVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gLightOrbModelDL); } } } diff --git a/src/overlays/actors/ovl_Demo_Syoten/z_demo_syoten.c b/src/overlays/actors/ovl_Demo_Syoten/z_demo_syoten.c index 853d91cb9..60f9e898b 100644 --- a/src/overlays/actors/ovl_Demo_Syoten/z_demo_syoten.c +++ b/src/overlays/actors/ovl_Demo_Syoten/z_demo_syoten.c @@ -480,16 +480,16 @@ s32 func_80C170F8(PlayState* play, UNK_TYPE arg1, s32 arg2, UNK_TYPE arg3, UNK_T void func_80C173B4(Actor* thisx, PlayState* play) { s32 pad; DemoSyoten* this = THIS; - Mtx* matrix; + Mtx* mtx; AnimatedMat_DrawXlu(play, Lib_SegmentedToVirtual(&object_syoten_Matanimheader_001298)); - matrix = GRAPH_ALLOC(play->state.gfxCtx, ALIGN16(sizeof(Mtx) * this->unk_144.unk_18->unk_1)); + mtx = GRAPH_ALLOC(play->state.gfxCtx, this->unk_144.unk_18->unk_1 * sizeof(Mtx)); - if (matrix != NULL) { + if (mtx != NULL) { func_8012C2DC(play->state.gfxCtx); Matrix_Mult(&play->billboardMtxF, MTXMODE_APPLY); - func_8018450C(play, &this->unk_144, matrix, (void*)func_80C170F8, 0, &this->actor); + func_8018450C(play, &this->unk_144, mtx, (void*)func_80C170F8, 0, &this->actor); } } diff --git a/src/overlays/actors/ovl_Dm_Char00/z_dm_char00.c b/src/overlays/actors/ovl_Dm_Char00/z_dm_char00.c index 95aef1835..43cc62603 100644 --- a/src/overlays/actors/ovl_Dm_Char00/z_dm_char00.c +++ b/src/overlays/actors/ovl_Dm_Char00/z_dm_char00.c @@ -912,7 +912,7 @@ void DmChar00_Draw(Actor* thisx, PlayState* play2) { DmChar00* this = THIS; s32 phi_a0; s32 pad; - Gfx* gfx = GRAPH_ALLOC(play->state.gfxCtx, sizeof(Gfx) * 4); + Gfx* gfx = GRAPH_ALLOC(play->state.gfxCtx, 4 * sizeof(Gfx)); if ((play->csCtx.state == 0) && ((play->sceneId != SCENE_OPENINGDAN) || (gSaveContext.sceneLayer != 0) || (play->roomCtx.curRoom.num != 0) || diff --git a/src/overlays/actors/ovl_Dm_Char01/z_dm_char01.c b/src/overlays/actors/ovl_Dm_Char01/z_dm_char01.c index fb68b17c6..069d829c1 100644 --- a/src/overlays/actors/ovl_Dm_Char01/z_dm_char01.c +++ b/src/overlays/actors/ovl_Dm_Char01/z_dm_char01.c @@ -67,7 +67,7 @@ void DmChar01_Init(Actor* thisx, PlayState* play) { switch (DMCHAR01_GET(&this->dyna.actor)) { case DMCHAR01_0: - if (gSaveContext.save.weekEventReg[20] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02)) { this->unk_34C = 2; this->actionFunc = func_80AA8F1C; break; @@ -97,7 +97,7 @@ void DmChar01_Init(Actor* thisx, PlayState* play) { break; case DMCHAR01_1: - if ((gSaveContext.save.weekEventReg[20] & 2) || (gSaveContext.sceneLayer == 1)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02) || (gSaveContext.sceneLayer == 1)) { this->unk_34C = 1; this->actionFunc = func_80AA8F1C; } else { @@ -107,7 +107,7 @@ void DmChar01_Init(Actor* thisx, PlayState* play) { case DMCHAR01_2: this->unk_34C = 0; - if (!(gSaveContext.save.weekEventReg[20] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_20_01)) { this->unk_34C = 1; this->dyna.actor.world.pos.y -= 400.0f; } @@ -123,7 +123,7 @@ void DmChar01_Init(Actor* thisx, PlayState* play) { case DMCHAR01_3: this->dyna.actor.world.rot.y += 0x8000; this->dyna.actor.shape.rot.y += 0x8000; - if (!(gSaveContext.save.weekEventReg[20] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_20_01)) { Actor_Kill(&this->dyna.actor); return; } @@ -134,7 +134,7 @@ void DmChar01_Init(Actor* thisx, PlayState* play) { DynaPolyActor_LoadMesh(play, &this->dyna, &gWoodfallSceneryTempleRampAndPlatformCol); this->unk_34D = true; - if (!(gSaveContext.save.weekEventReg[20] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02)) { this->actionFunc = func_80AA9020; this->dyna.actor.world.pos.y -= 120.0f; } else { @@ -160,7 +160,7 @@ void func_80AA8698(DmChar01* this, PlayState* play) { Player* player = GET_PLAYER(play); Player* player2 = GET_PLAYER(play); - if (gSaveContext.save.weekEventReg[20] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_01)) { return; } @@ -180,7 +180,7 @@ void func_80AA8698(DmChar01* this, PlayState* play) { if ((player2->actor.world.pos.x > -40.0f) && (player2->actor.world.pos.x < 40.0f) && (player2->actor.world.pos.z > 1000.0f) && (player2->actor.world.pos.z < 1078.0f)) { - gSaveContext.save.weekEventReg[20] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_20_01); this->actionFunc = func_80AA884C; } } @@ -348,7 +348,7 @@ void func_80AA9020(DmChar01* this, PlayState* play) { CsCmdActorAction* temp_v1 = play->csCtx.actorActions[Cutscene_GetActorActionIndex(play, 135)]; if ((temp_v1->startFrame == play->csCtx.frames) && (temp_v1->action == 2)) { - gSaveContext.save.weekEventReg[20] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_20_02); this->actionFunc = func_80AA90AC; } } @@ -406,18 +406,18 @@ void DmChar01_Draw(Actor* thisx, PlayState* play) { case DMCHAR01_0: switch (this->unk_34C) { case 0: - AnimatedMat_Draw(play, Lib_SegmentedToVirtual(&gWoodfallSceneryPoisonWaterTexAnim)); + AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gWoodfallSceneryPoisonWaterTexAnim)); Gfx_DrawDListOpa(play, gWoodfallSceneryPoisonWaterDL); break; case 1: if (gSaveContext.sceneLayer == 1) { - AnimatedMat_Draw(play, Lib_SegmentedToVirtual(&gWoodfallSceneryPurifiedWaterTexAnim)); + AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gWoodfallSceneryPurifiedWaterTexAnim)); Gfx_DrawDListOpa(play, gWoodfallSceneryFloorDL); Gfx_DrawDListXlu(play, gWoodfallSceneryPurifiedWaterDL); Matrix_Translate(0.0f, 10.0f, 0.0f, MTXMODE_APPLY); } - AnimatedMat_Draw(play, Lib_SegmentedToVirtual(&gWoodfallSceneryDynamicPoisonWaterTexAnim)); + AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gWoodfallSceneryDynamicPoisonWaterTexAnim)); OPEN_DISPS(play->state.gfxCtx); @@ -451,7 +451,7 @@ void DmChar01_Draw(Actor* thisx, PlayState* play) { break; case 2: - AnimatedMat_Draw(play, Lib_SegmentedToVirtual(&gWoodfallSceneryPurifiedWaterTexAnim)); + AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gWoodfallSceneryPurifiedWaterTexAnim)); Gfx_DrawDListOpa(play, gWoodfallSceneryFloorDL); Gfx_DrawDListXlu(play, gWoodfallSceneryPurifiedWaterDL); break; @@ -461,23 +461,23 @@ void DmChar01_Draw(Actor* thisx, PlayState* play) { case DMCHAR01_1: switch (this->unk_34C) { case 0: - AnimatedMat_Draw(play, Lib_SegmentedToVirtual(&gWoodfallSceneryPoisonWallsTexAnim)); + AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gWoodfallSceneryPoisonWallsTexAnim)); Gfx_DrawDListOpa(play, gWoodfallSceneryPoisonWallsDL); break; case 1: - AnimatedMat_Draw(play, Lib_SegmentedToVirtual(&gWoodfallSceneryPurifiedWallsTexAnim)); + AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gWoodfallSceneryPurifiedWallsTexAnim)); Gfx_DrawDListOpa(play, gWoodfallSceneryPurifiedWallsDL); break; } break; case DMCHAR01_2: - AnimatedMat_Draw(play, Lib_SegmentedToVirtual(&gWoodfallSceneryTempleTexAnim)); + AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gWoodfallSceneryTempleTexAnim)); Gfx_DrawDListOpa(play, gWoodfallSceneryTempleDL); if ((this->unk_34C != 0) && ((u8)this->unk_348 != 0)) { - AnimatedMat_Draw(play, Lib_SegmentedToVirtual(&gWoodfallSceneryWaterFlowingOverTempleTexAnim)); + AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gWoodfallSceneryWaterFlowingOverTempleTexAnim)); OPEN_DISPS(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_Dm_Char04/z_dm_char04.c b/src/overlays/actors/ovl_Dm_Char04/z_dm_char04.c index 12165ed89..5c835152d 100644 --- a/src/overlays/actors/ovl_Dm_Char04/z_dm_char04.c +++ b/src/overlays/actors/ovl_Dm_Char04/z_dm_char04.c @@ -129,7 +129,7 @@ s32 DmChar04_OverrideLimbDraw(PlayState* play2, s32 limbIndex, Gfx** dList, Vec3 } void DmChar04_Draw(Actor* thisx, PlayState* play) { - Gfx* gfx = GRAPH_ALLOC(play->state.gfxCtx, sizeof(Gfx) * 4); + Gfx* gfx = GRAPH_ALLOC(play->state.gfxCtx, 4 * sizeof(Gfx)); s32 alpha; s32 pad; DmChar04* this = THIS; diff --git a/src/overlays/actors/ovl_Dm_Char06/z_dm_char06.c b/src/overlays/actors/ovl_Dm_Char06/z_dm_char06.c index 4013293fb..0385a82d4 100644 --- a/src/overlays/actors/ovl_Dm_Char06/z_dm_char06.c +++ b/src/overlays/actors/ovl_Dm_Char06/z_dm_char06.c @@ -37,7 +37,7 @@ void DmChar06_SetupAction(DmChar06* this, DmChar06ActionFunc actionFunc) { void DmChar06_Init(Actor* thisx, PlayState* play) { DmChar06* this = THIS; - gSaveContext.save.weekEventReg[33] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_33_80); Actor_SetScale(&this->actor, 1.0f); this->alpha = 255; DmChar06_SetupAction(this, func_80AAE6F0); diff --git a/src/overlays/actors/ovl_Dm_Char08/z_dm_char08.c b/src/overlays/actors/ovl_Dm_Char08/z_dm_char08.c index 46bee748c..4129adfbe 100644 --- a/src/overlays/actors/ovl_Dm_Char08/z_dm_char08.c +++ b/src/overlays/actors/ovl_Dm_Char08/z_dm_char08.c @@ -164,7 +164,7 @@ void DmChar08_Init(Actor* thisx, PlayState* play2) { this->targetYPos = thisx->world.pos.y; this->unk_1F0 = 0.0f; if (play->sceneId == SCENE_31MISAKI) { - if (gSaveContext.save.weekEventReg[53] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_53_20)) { DynaPolyActor_Init(&this->dyna, 3); DynaPolyActor_LoadMesh(play, &this->dyna, &gTurtleZoraCapeAwakeCol); } else { @@ -185,7 +185,7 @@ void DmChar08_Init(Actor* thisx, PlayState* play2) { switch (play->sceneId) { case SCENE_31MISAKI: - if (gSaveContext.save.weekEventReg[53] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_53_20)) { thisx->world.pos.x = -6480.0f; this->targetYPos = -120.0f; thisx->world.pos.z = 1750.0f; @@ -279,14 +279,14 @@ void DmChar08_SetupAppearCs(DmChar08* this, PlayState* play) { s16 cs = ActorCutscene_GetAdditionalCutscene( ActorCutscene_GetAdditionalCutscene(ActorCutscene_GetAdditionalCutscene(cs1))); - if (gSaveContext.save.weekEventReg[93] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_93_08)) { cs1 = cs; } if (ActorCutscene_GetCanPlayNext(cs1)) { ActorCutscene_Start(cs1, &this->dyna.actor); - gSaveContext.save.weekEventReg[53] |= 0x20; - gSaveContext.save.weekEventReg[93] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_53_20); + SET_WEEKEVENTREG(WEEKEVENTREG_93_08); DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId); this->actionFunc = func_80AAF884; } else { @@ -329,10 +329,10 @@ void func_80AAFA18(DmChar08* this, PlayState* play) { nextCs2 = nextCs1; nextCs1 = ActorCutscene_GetAdditionalCutscene(nextCs1); - nextCs = ((void)0, gSaveContext.save.weekEventReg[53] & 0x40) ? nextCs1 : nextCs2; + nextCs = CHECK_WEEKEVENTREG(WEEKEVENTREG_53_40) ? nextCs1 : nextCs2; if (ActorCutscene_GetCanPlayNext(nextCs) != 0) { - gSaveContext.save.weekEventReg[53] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_53_40); ActorCutscene_Start(nextCs, &this->dyna.actor); this->actionFunc = DmChar08_DoNothing; } else { @@ -390,7 +390,7 @@ void DmChar08_SpawnBubbles(DmChar08* this, PlayState* play) { void func_80AAFCCC(DmChar08* this, PlayState* play) { switch (play->sceneId) { case SCENE_31MISAKI: - if (!(gSaveContext.save.weekEventReg[55] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { switch (this->unk_206) { case 0: break; diff --git a/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.c b/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.c index ba4c3bb00..25fee11db 100644 --- a/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.c +++ b/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.c @@ -32,7 +32,7 @@ void DmRavine_Init(Actor* thisx, PlayState* play) { s32 pad; DmRavine* this = THIS; - if (((((void)0, gSaveContext.save.weekEventReg[0]) & 0x10) | cREG(0)) != 0) { + if (CHECK_WEEKEVENTREG_ALT(WEEKEVENTREG_00_10) | cREG(0)) { Actor_Kill(&this->actor); return; } diff --git a/src/overlays/actors/ovl_Dm_Sa/z_dm_sa.c b/src/overlays/actors/ovl_Dm_Sa/z_dm_sa.c index 00abe6e05..dc6d8bcef 100644 --- a/src/overlays/actors/ovl_Dm_Sa/z_dm_sa.c +++ b/src/overlays/actors/ovl_Dm_Sa/z_dm_sa.c @@ -83,26 +83,24 @@ void DmSa_TransformLimbDraw(PlayState* play, s32 limbIndex, Actor* thisx) { } Gfx* func_80A2EB58(GraphicsContext* gfxCtx, u32 alpha) { - Gfx* dList; - Gfx* dListHead; + Gfx* gfxHead = GRAPH_ALLOC(gfxCtx, 2 * sizeof(Gfx)); //! @bug this does not allocate enough for 3 Gfx commands; + Gfx* gfx = gfxHead; - dList = dListHead = GRAPH_ALLOC(gfxCtx, sizeof(Gfx) * 2); //! @bug this does not allocate enough for 3 Gfx commands - gDPSetRenderMode(dListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2); - gDPSetEnvColor(dListHead++, 0, 0, 0, alpha); - gSPEndDisplayList(dListHead++); + gDPSetRenderMode(gfx++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2); + gDPSetEnvColor(gfx++, 0, 0, 0, alpha); + gSPEndDisplayList(gfx++); - return dList; + return gfxHead; } Gfx* func_80A2EBB0(GraphicsContext* gfxCtx, u32 alpha) { - Gfx* dList; - Gfx* dListHead; + Gfx* gfxHead = GRAPH_ALLOC(gfxCtx, 2 * sizeof(Gfx)); + Gfx* gfx = gfxHead; - dList = dListHead = GRAPH_ALLOC(gfxCtx, sizeof(Gfx) * 2); - gDPSetEnvColor(dListHead++, 0, 0, 0, alpha); - gSPEndDisplayList(dListHead++); + gDPSetEnvColor(gfx++, 0, 0, 0, alpha); + gSPEndDisplayList(gfx++); - return dList; + return gfxHead; } void DmSa_Draw(Actor* thisx, PlayState* play) { diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c index 366f6af95..cd494f6fa 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -1149,7 +1149,7 @@ void DmStk_DoNothing(DmStk* this, PlayState* play) { void DmStk_WaitForTelescope(DmStk* this, PlayState* play) { Vec3f screenPos; - if (!(gSaveContext.save.weekEventReg[74] & 0x20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_74_20)) { Play_GetScreenPos(play, &this->actor.world.pos, &screenPos); if (play->view.fovy < 25.0f) { if ((screenPos.x >= 70.0f) && (screenPos.x < (SCREEN_WIDTH - 70.0f)) && (screenPos.y >= 30.0f) && @@ -1172,7 +1172,7 @@ void DmStk_StartTelescopeCutscene(DmStk* this, PlayState* play) { if (gSaveContext.save.day < 3) { cutscene = dayOneAndTwoCutscene; - } else if ((gSaveContext.save.weekEventReg[8] & 0x40) || + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_08_40) || ((CURRENT_DAY == 3) && (gSaveContext.save.time < CLOCK_TIME(6, 0)))) { cutscene = finalHoursCutscene; } else { @@ -1630,7 +1630,7 @@ void DmStk_UpdateCutscenes(DmStk* this, PlayState* play) { if (this->alpha < 0) { this->alpha = 0; this->fadeOutState = SK_FADE_OUT_STATE_NONE; - gSaveContext.save.weekEventReg[12] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_12_04); if (!(play->actorCtx.flags & ACTORCTX_FLAG_1)) { Actor_Kill(&this->actor); } else { diff --git a/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c b/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c index d91be440a..ce1cc98f3 100644 --- a/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c +++ b/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c @@ -230,7 +230,7 @@ void DmTag_Init(Actor* thisx, PlayState* play) { DmTag* this = (DmTag*)thisx; Player* player = GET_PLAYER(play); - if (gSaveContext.save.weekEventReg[85] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_85_04)) { Actor_Kill(&this->actor); return; } diff --git a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c index 8ae44b909..9086a052d 100644 --- a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c +++ b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c @@ -141,7 +141,7 @@ void DoorAna_WaitOpen(DoorAna* this, PlayState* play) { } else { s32 destinationIdx = DOORANA_GET_ENTRANCE(&this->actor); - Play_SetupRespawnPoint(&play->state, RESPAWN_MODE_UNK_3, 0x4FF); + Play_SetupRespawnPoint(&play->state, RESPAWN_MODE_UNK_3, PLAYER_PARAMS(0xFF, PLAYER_INITMODE_4)); gSaveContext.respawn[RESPAWN_MODE_UNK_3].pos.y = this->actor.world.pos.y; gSaveContext.respawn[RESPAWN_MODE_UNK_3].yaw = this->actor.home.rot.y; diff --git a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c index 573ea58e8..15cb7c187 100644 --- a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c +++ b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c @@ -328,7 +328,7 @@ void func_808A0F88(DoorShutter* this, PlayState* play) { } else if (func_808A0E28(this, play)) { Player* player = GET_PLAYER(play); - player->doorType = -1; + player->doorType = PLAYER_DOORTYPE_TALKING; player->doorActor = &this->actor; this->actor.textId = 0x1801; func_80122F28(player); @@ -357,7 +357,7 @@ void func_808A1090(DoorShutter* this, PlayState* play) { if (doorDirection != 0) { Player* player = GET_PLAYER(play); - player->doorType = 2; + player->doorType = PLAYER_DOORTYPE_SLIDING; player->doorDirection = doorDirection; player->doorActor = &this->actor; @@ -369,18 +369,18 @@ void func_808A1090(DoorShutter* this, PlayState* play) { if (this->doorType == 6) { if (gSaveContext.save.playerData.healthCapacity < (DOORSHUTTER_GET_1F(&this->actor) * 0x10)) { - player->doorType = -1; + player->doorType = PLAYER_DOORTYPE_TALKING; this->actor.textId = 0x14FC; } } else if (this->unk_166 != 0) { if (this->doorType == 5) { if (!CHECK_DUNGEON_ITEM(DUNGEON_BOSS_KEY, gSaveContext.mapIndex)) { - player->doorType = -1; + player->doorType = PLAYER_DOORTYPE_TALKING; this->actor.textId = 0x1803; } player->doorTimer += 10; } else if (DUNGEON_KEY_COUNT(gSaveContext.mapIndex) <= 0) { - player->doorType = -1; + player->doorType = PLAYER_DOORTYPE_TALKING; this->actor.textId = 0x1802; } else { player->doorTimer += 10; @@ -455,7 +455,7 @@ s32 func_808A1478(DoorShutter* this, PlayState* play, f32 arg2) { } if ((this->unk_160 != -1) && (ActorCutscene_GetCurrentIndex() == this->unk_160)) { - func_800B724C(play, &this->actor, 1); + func_800B724C(play, &this->actor, PLAYER_CSMODE_1); } } @@ -479,7 +479,7 @@ void func_808A1548(DoorShutter* this, PlayState* play) { } else if (func_808A0E28(this, play)) { Player* player = GET_PLAYER(play); - player->doorType = -1; + player->doorType = PLAYER_DOORTYPE_TALKING; player->doorActor = &this->actor; this->actor.textId = 0x1800; func_80122F28(player); @@ -572,7 +572,7 @@ void func_808A1884(DoorShutter* this, PlayState* play) { if (ActorCutscene_GetCurrentIndex() == 0x7D) { func_801226E0(play, ((void)0, gSaveContext.respawn[RESPAWN_MODE_DOWN].data)); player->unk_A86 = -1; - func_800B7298(play, NULL, 0x73); + func_800B7298(play, NULL, PLAYER_CSMODE_115); } } } @@ -623,8 +623,8 @@ void func_808A1B48(DoorShutter* this, PlayState* play) { void func_808A1C50(DoorShutter* this, PlayState* play) { if (this->unk_167++ > 30) { - if (GET_PLAYER(play)->csMode == 0x73) { - func_800B7298(play, NULL, 6); + if (GET_PLAYER(play)->csMode == PLAYER_CSMODE_115) { + func_800B7298(play, NULL, PLAYER_CSMODE_6); } DoorShutter_SetupDoor(this, play); } diff --git a/src/overlays/actors/ovl_Door_Spiral/z_door_spiral.c b/src/overlays/actors/ovl_Door_Spiral/z_door_spiral.c index 5f0031487..541e3de23 100644 --- a/src/overlays/actors/ovl_Door_Spiral/z_door_spiral.c +++ b/src/overlays/actors/ovl_Door_Spiral/z_door_spiral.c @@ -274,7 +274,7 @@ void DoorSpiral_Wait(DoorSpiral* this, PlayState* play) { } else if (DoorSpiral_PlayerShouldClimb(this, play)) { player = GET_PLAYER(play); - player->doorType = 4; + player->doorType = PLAYER_DOORTYPE_STAIRCASE; player->doorDirection = this->orientation; player->doorActor = &this->actor; transition = DOORSPIRAL_GET_TRANSITION_ID(&this->actor); diff --git a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c index 707150e33..bf31f039c 100644 --- a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c +++ b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c @@ -270,7 +270,7 @@ void func_808B8E78(DoorWarp1* this, PlayState* play) { this->unk_1A4 = 700.0f; if (play->sceneId == SCENE_INISIE_N) { DoorWarp1_SetupAction(this, func_808B96A0); - } else if (gSaveContext.save.weekEventReg[86] & 0x80) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_86_80)) { this->unk_1D4 = 0; DoorWarp1_SetupAction(this, func_808B921C); } else { @@ -344,7 +344,7 @@ void func_808B921C(DoorWarp1* this, PlayState* play) { } if (func_808B866C(this, play) && !Play_InCsMode(play)) { - func_800B7298(play, &this->dyna.actor, 7); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_7); Message_StartTextbox(play, 0xF2, &this->dyna.actor); DoorWarp1_SetupAction(this, func_808B93A0); } @@ -360,14 +360,14 @@ void func_808B93A0(DoorWarp1* this, PlayState* play) { func_801477B4(play); if (play->msgCtx.choiceIndex == 0) { func_8019F208(); - func_800B7298(play, &this->dyna.actor, 9); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_9); player->unk_3A0.x = this->dyna.actor.world.pos.x; player->unk_3A0.z = this->dyna.actor.world.pos.z; this->unk_1CA = 1; DoorWarp1_SetupAction(this, func_808B9524); } else { func_8019F230(); - func_800B7298(play, &this->dyna.actor, 6); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_6); DoorWarp1_SetupAction(this, func_808B94A4); } } @@ -448,7 +448,7 @@ void func_808B977C(DoorWarp1* this, PlayState* play) { AudioSfx_PlaySfx(NA_SE_EV_LINK_WARP, &player->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - func_800B7298(play, &this->dyna.actor, 9); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_9); player->unk_3A0.x = this->dyna.actor.world.pos.x; player->unk_3A0.z = this->dyna.actor.world.pos.z; this->unk_1CA = 1; @@ -599,7 +599,7 @@ void func_808B9F10(DoorWarp1* this, PlayState* play) { Player* player = GET_PLAYER(play); Interface_SetHudVisibility(HUD_VISIBILITY_NONE); - func_800B7298(play, &this->dyna.actor, 9); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_9); player->unk_3A0.x = this->dyna.actor.world.pos.x; player->unk_3A0.z = this->dyna.actor.world.pos.z; this->unk_1CA = 20; @@ -652,7 +652,7 @@ void func_808BA10C(DoorWarp1* this, PlayState* play) { if (this->unk_202 != 0) { if (phi_v0_2 > 0) { - gSaveContext.save.weekEventReg[7] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_07_80); } switch (phi_v0_2) { @@ -710,8 +710,8 @@ void func_808BA10C(DoorWarp1* this, PlayState* play) { } else { switch (phi_v0_2) { case 0: - if (gSaveContext.save.weekEventReg[20] & 2) { - gSaveContext.save.weekEventReg[7] |= 0x80; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02)) { + SET_WEEKEVENTREG(WEEKEVENTREG_07_80); play->nextEntrance = ENTRANCE(WOODFALL_TEMPLE, 1); play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_03; @@ -726,7 +726,7 @@ void func_808BA10C(DoorWarp1* this, PlayState* play) { break; case 1: - gSaveContext.save.weekEventReg[33] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_33_80); play->nextEntrance = ENTRANCE(MOUNTAIN_VILLAGE_SPRING, 7); play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_03; @@ -734,14 +734,14 @@ void func_808BA10C(DoorWarp1* this, PlayState* play) { break; case 3: - if (gSaveContext.save.weekEventReg[55] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { play->nextEntrance = ENTRANCE(ZORA_CAPE, 9); gSaveContext.nextCutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_03; gSaveContext.nextTransitionType = TRANS_TYPE_03; } else { - gSaveContext.save.weekEventReg[55] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_55_80); play->nextEntrance = ENTRANCE(ZORA_CAPE, 8); gSaveContext.nextCutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; @@ -751,7 +751,7 @@ void func_808BA10C(DoorWarp1* this, PlayState* play) { break; case 2: - gSaveContext.save.weekEventReg[52] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_52_20); play->nextEntrance = ENTRANCE(IKANA_CANYON, 15); gSaveContext.nextCutsceneIndex = 0xFFF2; play->transitionTrigger = TRANS_TRIGGER_START; @@ -886,14 +886,14 @@ void func_808BAAF4(DoorWarp1* this, PlayState* play) { phi_f2 = 85.0f; } - if (!(gSaveContext.save.weekEventReg[86] & 0x80) && (fabsf(this->dyna.actor.xzDistToPlayer) < phi_f2) && + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_86_80) && (fabsf(this->dyna.actor.xzDistToPlayer) < phi_f2) && ((player->actor.world.pos.y - 20.0f) < this->dyna.actor.world.pos.y) && (this->dyna.actor.world.pos.y < (player->actor.world.pos.y + 20.0f))) { cutscene = this->dyna.actor.cutscene; if (ActorCutscene_GetCanPlayNext(cutscene)) { ActorCutscene_Start(cutscene, &this->dyna.actor); - gSaveContext.save.weekEventReg[86] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_86_80); DoorWarp1_SetupAction(this, func_808BABF4); } else { ActorCutscene_SetIntentToPlay(cutscene); diff --git a/src/overlays/actors/ovl_Eff_Change/z_eff_change.c b/src/overlays/actors/ovl_Eff_Change/z_eff_change.c index cad0ec095..9174fafc0 100644 --- a/src/overlays/actors/ovl_Eff_Change/z_eff_change.c +++ b/src/overlays/actors/ovl_Eff_Change/z_eff_change.c @@ -130,7 +130,7 @@ void EffChange_Draw(Actor* thisx, PlayState* play) { EffChange* this = THIS; AnimatedMat_DrawStepXlu(play, Lib_SegmentedToVirtual(&gameplay_keep_Matanimheader_028FEC), this->step); - mtx = GRAPH_ALLOC(play->state.gfxCtx, ALIGN16(this->skeletonInfo.unk_18->unk_1 * sizeof(Mtx))); + mtx = GRAPH_ALLOC(play->state.gfxCtx, this->skeletonInfo.unk_18->unk_1 * sizeof(Mtx)); if (mtx != NULL) { func_8012C2DC(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_Elf_Msg6/z_elf_msg6.c b/src/overlays/actors/ovl_Elf_Msg6/z_elf_msg6.c index e69806ac7..0ffb5c758 100644 --- a/src/overlays/actors/ovl_Elf_Msg6/z_elf_msg6.c +++ b/src/overlays/actors/ovl_Elf_Msg6/z_elf_msg6.c @@ -41,19 +41,19 @@ static InitChainEntry sInitChain[] = { }; s32 func_80BA15A0(void) { - if (CHECK_QUEST_ITEM(QUEST_REMAINS_ODOLWA) && !(gSaveContext.save.weekEventReg[87] & 0x10)) { + if (CHECK_QUEST_ITEM(QUEST_REMAINS_ODOLWA) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_87_10)) { return true; } - if (CHECK_QUEST_ITEM(QUEST_REMAINS_GOHT) && !(gSaveContext.save.weekEventReg[87] & 0x20)) { + if (CHECK_QUEST_ITEM(QUEST_REMAINS_GOHT) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_87_20)) { return true; } - if (CHECK_QUEST_ITEM(QUEST_REMAINS_GYORG) && !(gSaveContext.save.weekEventReg[87] & 0x40)) { + if (CHECK_QUEST_ITEM(QUEST_REMAINS_GYORG) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_87_40)) { return true; } - if (CHECK_QUEST_ITEM(QUEST_REMAINS_TWINMOLD) && !(gSaveContext.save.weekEventReg[87] & 0x80)) { + if (CHECK_QUEST_ITEM(QUEST_REMAINS_TWINMOLD) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_87_80)) { return true; } @@ -62,24 +62,24 @@ s32 func_80BA15A0(void) { void func_80BA165C(void) { if (CHECK_QUEST_ITEM(QUEST_REMAINS_ODOLWA)) { - gSaveContext.save.weekEventReg[87] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_87_10); } if (CHECK_QUEST_ITEM(QUEST_REMAINS_GOHT)) { - gSaveContext.save.weekEventReg[87] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_87_20); } if (CHECK_QUEST_ITEM(QUEST_REMAINS_GYORG)) { - gSaveContext.save.weekEventReg[87] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_87_40); } if (CHECK_QUEST_ITEM(QUEST_REMAINS_TWINMOLD)) { - gSaveContext.save.weekEventReg[87] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_87_80); } } s32 func_80BA16F4(ElfMsg6* this, PlayState* play) { - if (!(gSaveContext.save.weekEventReg[31] & 4) && (INV_CONTENT(ITEM_MASK_DEKU) == ITEM_MASK_DEKU)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_31_04) && (INV_CONTENT(ITEM_MASK_DEKU) == ITEM_MASK_DEKU)) { this->actor.textId = 0x216; return false; } @@ -94,7 +94,7 @@ s32 func_80BA16F4(ElfMsg6* this, PlayState* play) { } if (!CHECK_QUEST_ITEM(QUEST_REMAINS_GOHT)) { - if (gSaveContext.save.weekEventReg[31] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_31_01)) { this->actor.textId = 0x257; } else { this->actor.textId = 0x231; @@ -103,7 +103,7 @@ s32 func_80BA16F4(ElfMsg6* this, PlayState* play) { } if (!CHECK_QUEST_ITEM(QUEST_REMAINS_GYORG)) { - if (gSaveContext.save.weekEventReg[31] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_31_02)) { this->actor.textId = 0x258; } else { this->actor.textId = 0x232; @@ -112,7 +112,7 @@ s32 func_80BA16F4(ElfMsg6* this, PlayState* play) { } if (!CHECK_QUEST_ITEM(QUEST_REMAINS_TWINMOLD)) { - if (gSaveContext.save.weekEventReg[80] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_80_04)) { this->actor.textId = 0x259; } else { this->actor.textId = 0x233; @@ -169,7 +169,7 @@ void ElfMsg6_Init(Actor* thisx, PlayState* play) { break; case 1: - if (gSaveContext.save.weekEventReg[83] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_83_02)) { Actor_Kill(&this->actor); return; } @@ -183,14 +183,14 @@ void ElfMsg6_Init(Actor* thisx, PlayState* play) { return; } - if (gSaveContext.save.weekEventReg[8] & 0x40) { - if (gSaveContext.save.weekEventReg[88] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_08_40)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_88_20)) { Actor_Kill(&this->actor); return; } this->actor.textId = 0x25B; } else { - if (!(gSaveContext.save.weekEventReg[74] & 0x20) || (gSaveContext.save.weekEventReg[79] & 0x10)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_74_20) || CHECK_WEEKEVENTREG(WEEKEVENTREG_79_10)) { Actor_Kill(&this->actor); return; } @@ -202,7 +202,7 @@ void ElfMsg6_Init(Actor* thisx, PlayState* play) { case 3: if (((ELFMSG6_SWITCHFLAG(&this->actor) != 0x7F) && Flags_GetSwitch(play, ELFMSG6_SWITCHFLAG(&this->actor))) || - (gSaveContext.save.weekEventReg[88] & 0x10) || (gSaveContext.save.weekEventReg[91] & 1) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_88_10) || CHECK_WEEKEVENTREG(WEEKEVENTREG_91_01) || (INV_CONTENT(ITEM_MASK_ZORA) == ITEM_MASK_ZORA)) { Actor_Kill(&this->actor); return; @@ -265,18 +265,18 @@ void func_80BA1CF8(ElfMsg6* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { switch (this->actor.textId) { case 0x224: - gSaveContext.save.weekEventReg[79] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_79_10); break; case 0x25B: - gSaveContext.save.weekEventReg[88] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_88_20); break; } Actor_Kill(&this->actor); return; } - if ((this->actor.textId == 0x224) && (gSaveContext.save.weekEventReg[8] & 0x40)) { + if ((this->actor.textId == 0x224) && CHECK_WEEKEVENTREG(WEEKEVENTREG_08_40)) { this->actor.textId = 0x25B; } else if (func_80BA1C00(this) && (player->actor.speedXZ > 1.0f)) { player->tatlTextId = -this->actor.textId; @@ -299,19 +299,19 @@ void func_80BA1E30(ElfMsg6* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { switch (this->actor.textId) { case 0x216: - gSaveContext.save.weekEventReg[31] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_31_04); break; case 0x231: - gSaveContext.save.weekEventReg[31] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_31_01); break; case 0x232: - gSaveContext.save.weekEventReg[31] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_31_02); break; case 0x233: - gSaveContext.save.weekEventReg[80] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_80_04); break; } func_80BA165C(); @@ -330,7 +330,7 @@ void func_80BA1E30(ElfMsg6* this, PlayState* play) { } void func_80BA1F80(ElfMsg6* this, PlayState* play) { - if (((ELFMSG6_GET_F0(&this->actor)) == 1) && (gSaveContext.save.weekEventReg[83] & 2)) { + if ((ELFMSG6_GET_F0(&this->actor) == 1) && CHECK_WEEKEVENTREG(WEEKEVENTREG_83_02)) { Actor_Kill(&this->actor); return; } @@ -363,7 +363,7 @@ void func_80BA2048(ElfMsg6* this, PlayState* play) { } if (((ELFMSG6_SWITCHFLAG(&this->actor) != 0x7F) && Flags_GetSwitch(play, ELFMSG6_SWITCHFLAG(&this->actor))) || - (gSaveContext.save.weekEventReg[88] & 0x10) || (gSaveContext.save.weekEventReg[91] & 1) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_88_10) || CHECK_WEEKEVENTREG(WEEKEVENTREG_91_01) || (INV_CONTENT(ITEM_MASK_ZORA) == ITEM_MASK_ZORA)) { Actor_Kill(&this->actor); return; diff --git a/src/overlays/actors/ovl_En_Ah/z_en_ah.c b/src/overlays/actors/ovl_En_Ah/z_en_ah.c index 2c0cb4ce3..2f4e4ed03 100644 --- a/src/overlays/actors/ovl_En_Ah/z_en_ah.c +++ b/src/overlays/actors/ovl_En_Ah/z_en_ah.c @@ -25,7 +25,7 @@ static u8 D_80BD3DB0[] = { /* 0x08 */ SCHEDULE_CMD_RET_VAL_L(1), /* 0x0B */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x20 - 0x0F), /* 0x0F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 0, 23, 0, 0x1D - 0x15), - /* 0x15 */ SCHEDULE_CMD_CHECK_FLAG_S(0x32, 0x20, 0x1C - 0x19), + /* 0x15 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_50_20, 0x1C - 0x19), /* 0x19 */ SCHEDULE_CMD_RET_VAL_L(1), /* 0x1C */ SCHEDULE_CMD_RET_NONE(), /* 0x1D */ SCHEDULE_CMD_RET_VAL_L(3), @@ -554,7 +554,7 @@ void EnAh_Update(Actor* thisx, PlayState* play) { radius = this->collider.dim.radius + 60; height = this->collider.dim.height + 10; - func_8013C964(&this->actor, play, radius, height, PLAYER_AP_NONE, this->unk_2D8 & 7); + func_8013C964(&this->actor, play, radius, height, PLAYER_IA_NONE, this->unk_2D8 & 7); if (!(this->unk_2D8 & 0x10)) { Actor_MoveWithGravity(&this->actor); Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 12.0f, 0.0f, 4); diff --git a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c index e0c19903d..d2bdf0cee 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c @@ -257,17 +257,17 @@ void func_80BED090(PlayState* play) { Player* player = GET_PLAYER(play); if (player->transformation == PLAYER_FORM_DEKU) { - gSaveContext.save.weekEventReg[63] |= 8; - gSaveContext.save.weekEventReg[63] &= (u8)~0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_63_08); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_10); } else if (player->transformation == PLAYER_FORM_ZORA) { - gSaveContext.save.weekEventReg[63] &= (u8)~8; - gSaveContext.save.weekEventReg[63] |= 0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_08); + SET_WEEKEVENTREG(WEEKEVENTREG_63_10); } else if (player->transformation == PLAYER_FORM_GORON) { - gSaveContext.save.weekEventReg[63] |= 8; - gSaveContext.save.weekEventReg[63] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_63_08); + SET_WEEKEVENTREG(WEEKEVENTREG_63_10); } else if (player->transformation == PLAYER_FORM_HUMAN) { - gSaveContext.save.weekEventReg[63] &= (u8)~8; - gSaveContext.save.weekEventReg[63] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_08); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_10); } } @@ -275,19 +275,19 @@ s32 func_80BED140(PlayState* play) { Player* player = GET_PLAYER(play); if (player->transformation == PLAYER_FORM_DEKU) { - if ((gSaveContext.save.weekEventReg[63] & 8) && !(gSaveContext.save.weekEventReg[63] & 0x10)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_08) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_63_10)) { return true; } } else if (player->transformation == PLAYER_FORM_ZORA) { - if (!(gSaveContext.save.weekEventReg[63] & 8) && (gSaveContext.save.weekEventReg[63] & 0x10)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_63_08) && CHECK_WEEKEVENTREG(WEEKEVENTREG_63_10)) { return true; } } else if (player->transformation == PLAYER_FORM_GORON) { - if ((gSaveContext.save.weekEventReg[63] & 8) && (gSaveContext.save.weekEventReg[63] & 0x10)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_08) && CHECK_WEEKEVENTREG(WEEKEVENTREG_63_10)) { return true; } } else if (player->transformation == PLAYER_FORM_HUMAN) { - if (!(gSaveContext.save.weekEventReg[63] & 8) && !(gSaveContext.save.weekEventReg[63] & 0x10)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_63_08) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_63_10)) { return true; } } @@ -384,8 +384,8 @@ void func_80BED3BC(EnAkindonuts* this, PlayState* play) { break; case 0x15E7: - if (!(gSaveContext.save.weekEventReg[61] & 0x20)) { - gSaveContext.save.weekEventReg[61] |= 0x20; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_61_20)) { + SET_WEEKEVENTREG(WEEKEVENTREG_61_20); this->unk_33C = 0x15E8; break; } @@ -446,7 +446,7 @@ void func_80BED3BC(EnAkindonuts* this, PlayState* play) { case 0x15E5: this->unk_33C = 0x15E6; func_80BED090(play); - gSaveContext.save.weekEventReg[61] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_61_10); this->unk_32C |= 0x20; break; @@ -461,8 +461,8 @@ void func_80BED3BC(EnAkindonuts* this, PlayState* play) { void func_80BED680(EnAkindonuts* this, PlayState* play) { switch (this->unk_33C) { case 0: - if (func_80BED140(play) && !(gSaveContext.save.weekEventReg[61] & 0x40)) { - gSaveContext.save.weekEventReg[61] |= 0x40; + if (func_80BED140(play) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_61_40)) { + SET_WEEKEVENTREG(WEEKEVENTREG_61_40); this->unk_33C = 0x15F0; break; } @@ -562,8 +562,8 @@ void func_80BED8A4(EnAkindonuts* this, PlayState* play) { break; case 0x15FE: - if (!(gSaveContext.save.weekEventReg[62] & 1)) { - gSaveContext.save.weekEventReg[62] |= 1; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_62_01)) { + SET_WEEKEVENTREG(WEEKEVENTREG_62_01); this->unk_33C = 0x15FF; break; } @@ -623,7 +623,7 @@ void func_80BED8A4(EnAkindonuts* this, PlayState* play) { case 0x15FA: this->unk_33C = 0x15FB; - gSaveContext.save.weekEventReg[61] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_61_80); this->unk_32C |= 0x20; break; @@ -640,8 +640,8 @@ void func_80BEDB88(EnAkindonuts* this, PlayState* play) { switch (this->unk_33C) { case 0: - if ((player->transformation == PLAYER_FORM_DEKU) && !(gSaveContext.save.weekEventReg[62] & 2)) { - gSaveContext.save.weekEventReg[62] |= 2; + if ((player->transformation == PLAYER_FORM_DEKU) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_62_02)) { + SET_WEEKEVENTREG(WEEKEVENTREG_62_02); this->unk_33C = 0x15F0; break; } @@ -740,8 +740,8 @@ void func_80BEDDAC(EnAkindonuts* this, PlayState* play) { break; case 0x1610: - if (!(gSaveContext.save.weekEventReg[62] & 8)) { - gSaveContext.save.weekEventReg[62] |= 8; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_62_08)) { + SET_WEEKEVENTREG(WEEKEVENTREG_62_08); this->unk_33C = 0x1611; break; } @@ -796,7 +796,7 @@ void func_80BEDDAC(EnAkindonuts* this, PlayState* play) { case 0x15FA: this->unk_33C = 0x160D; - gSaveContext.save.weekEventReg[62] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_62_04); this->unk_32C |= 0x20; break; @@ -813,8 +813,8 @@ void func_80BEE070(EnAkindonuts* this, PlayState* play) { switch (this->unk_33C) { case 0: - if ((player->transformation == PLAYER_FORM_GORON) && !(gSaveContext.save.weekEventReg[62] & 0x10)) { - gSaveContext.save.weekEventReg[62] |= 0x10; + if ((player->transformation == PLAYER_FORM_GORON) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_62_10)) { + SET_WEEKEVENTREG(WEEKEVENTREG_62_10); this->unk_33C = 0x1614; break; } @@ -900,8 +900,8 @@ void func_80BEE274(EnAkindonuts* this, PlayState* play) { break; case 0x1624: - if (!(gSaveContext.save.weekEventReg[62] & 0x40)) { - gSaveContext.save.weekEventReg[62] |= 0x40; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_62_40)) { + SET_WEEKEVENTREG(WEEKEVENTREG_62_40); this->unk_33C = 0x1625; break; } @@ -957,7 +957,7 @@ void func_80BEE274(EnAkindonuts* this, PlayState* play) { case 0x1622: this->unk_33C = 0x1623; - gSaveContext.save.weekEventReg[62] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_62_20); this->unk_32C |= 0x20; break; @@ -974,8 +974,8 @@ void func_80BEE530(EnAkindonuts* this, PlayState* play) { switch (this->unk_33C) { case 0: - if ((player->transformation == PLAYER_FORM_ZORA) && !(gSaveContext.save.weekEventReg[62] & 0x80)) { - gSaveContext.save.weekEventReg[62] |= 0x80; + if ((player->transformation == PLAYER_FORM_ZORA) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_62_80)) { + SET_WEEKEVENTREG(WEEKEVENTREG_62_80); this->unk_33C = 0x162A; break; } @@ -1040,41 +1040,41 @@ void func_80BEE73C(EnAkindonuts* this, PlayState* play) { Player* player = GET_PLAYER(play); s32 pad; s32 params = ENAKINDONUTS_GET_3(&this->actor); - s32 itemActionParam = func_80123810(play); + PlayerItemAction itemAction = func_80123810(play); - if (itemActionParam > PLAYER_AP_NONE) { - if (itemActionParam == PLAYER_AP_DEED_LAND) { + if (itemAction > PLAYER_IA_NONE) { + if (itemAction == PLAYER_IA_DEED_LAND) { player->actor.textId = D_80BF048C[params]; this->unk_33C = player->actor.textId; if (this->unk_33C == 0x15E4) { - player->exchangeItemId = itemActionParam; + player->exchangeItemId = itemAction; this->actionFunc = func_80BEF20C; } else { this->actionFunc = func_80BEF18C; } - } else if (itemActionParam == PLAYER_AP_DEED_SWAMP) { + } else if (itemAction == PLAYER_IA_DEED_SWAMP) { player->actor.textId = D_80BF0494[params]; this->unk_33C = player->actor.textId; if (this->unk_33C == 0x15F9) { - player->exchangeItemId = itemActionParam; + player->exchangeItemId = itemAction; this->actionFunc = func_80BEF20C; } else { this->actionFunc = func_80BEF18C; } - } else if (itemActionParam == PLAYER_AP_DEED_MOUNTAIN) { + } else if (itemAction == PLAYER_IA_DEED_MOUNTAIN) { player->actor.textId = D_80BF049C[params]; this->unk_33C = player->actor.textId; if (this->unk_33C == 0x160C) { - player->exchangeItemId = itemActionParam; + player->exchangeItemId = itemAction; this->actionFunc = func_80BEF20C; } else { this->actionFunc = func_80BEF18C; } - } else if (itemActionParam == PLAYER_AP_DEED_OCEAN) { + } else if (itemAction == PLAYER_IA_DEED_OCEAN) { player->actor.textId = D_80BF04A4[params]; this->unk_33C = player->actor.textId; if (this->unk_33C == 0x1621) { - player->exchangeItemId = itemActionParam; + player->exchangeItemId = itemAction; this->actionFunc = func_80BEF20C; } else { this->actionFunc = func_80BEF18C; @@ -1085,7 +1085,7 @@ void func_80BEE73C(EnAkindonuts* this, PlayState* play) { this->actionFunc = func_80BEF18C; } func_801477B4(play); - } else if (itemActionParam < PLAYER_AP_NONE) { + } else if (itemAction <= PLAYER_IA_MINUS1) { this->unk_33C = D_80BF04AC[params]; func_80151938(play, this->unk_33C); this->actionFunc = func_80BEF18C; @@ -1095,7 +1095,7 @@ void func_80BEE73C(EnAkindonuts* this, PlayState* play) { void func_80BEE938(EnAkindonuts* this, PlayState* play) { switch (ENAKINDONUTS_GET_3(&this->actor)) { case 0: - if (gSaveContext.save.weekEventReg[61] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_61_10)) { if (ENAKINDONUTS_GET_4(&this->actor)) { this->unk_2DC = func_80BED680; } else { @@ -1109,7 +1109,7 @@ void func_80BEE938(EnAkindonuts* this, PlayState* play) { break; case 1: - if (gSaveContext.save.weekEventReg[61] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_61_80)) { if (ENAKINDONUTS_GET_4(&this->actor)) { this->unk_2DC = func_80BEDB88; } else { @@ -1123,7 +1123,7 @@ void func_80BEE938(EnAkindonuts* this, PlayState* play) { break; case 2: - if (gSaveContext.save.weekEventReg[62] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_62_04)) { if (ENAKINDONUTS_GET_4(&this->actor)) { this->unk_2DC = func_80BEE070; } else { @@ -1137,7 +1137,7 @@ void func_80BEE938(EnAkindonuts* this, PlayState* play) { break; case 3: - if (gSaveContext.save.weekEventReg[62] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_62_20)) { if (ENAKINDONUTS_GET_4(&this->actor)) { this->unk_2DC = func_80BEE530; } else { diff --git a/src/overlays/actors/ovl_En_Al/z_en_al.c b/src/overlays/actors/ovl_En_Al/z_en_al.c index 4bac66251..4dae6d577 100644 --- a/src/overlays/actors/ovl_En_Al/z_en_al.c +++ b/src/overlays/actors/ovl_En_Al/z_en_al.c @@ -200,7 +200,7 @@ Actor* func_80BDE384(EnAl* this, PlayState* play) { switch (this->unk_35C) { case 2: - if (!(gSaveContext.save.weekEventReg[89] & 8) && (gSaveContext.save.weekEventReg[85] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_89_08) && CHECK_WEEKEVENTREG(WEEKEVENTREG_85_80)) { actor = func_80BDE1A0(this, play, ACTORCAT_NPC, ACTOR_EN_PM); } else { actor = &GET_PLAYER(play)->actor; @@ -410,7 +410,7 @@ s32 func_80BDEA14(EnAl* this, PlayState* play) { switch (this->unk_4E6) { case 0: case 1: - if ((gSaveContext.save.weekEventReg[75] & 2)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_75_02)) { sp18 = true; } else if (func_80BDE4E0(this, &this->unk_4E6, 0)) { sp18 = true; @@ -451,7 +451,7 @@ s32* func_80BDEABC(EnAl* this, PlayState* play) { return D_80BDFE84; case 2: - if (!(gSaveContext.save.weekEventReg[89] & 8) && (gSaveContext.save.weekEventReg[85] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_89_08) && CHECK_WEEKEVENTREG(WEEKEVENTREG_85_80)) { this->unk_4EC = func_80BDE7FC; return D_80BDFCBC; } @@ -659,7 +659,7 @@ s32 func_80BDF308(EnAl* this, PlayState* play, ScheduleOutput* scheduleOutput) { break; case 2: - this->unk_4F0 = PLAYER_AP_NONE; + this->unk_4F0 = PLAYER_IA_NONE; this->unk_4EA = 0; func_80BDE27C(this, 2); break; @@ -672,7 +672,7 @@ s32 func_80BDF390(EnAl* this, PlayState* play, ScheduleOutput* scheduleOutput) { this->actor.flags |= ACTOR_FLAG_1; this->actor.targetMode = 0; - this->unk_4F0 = PLAYER_AP_NONE; + this->unk_4F0 = PLAYER_IA_NONE; this->unk_4C2 = 0; this->unk_4D4 = 40.0f; @@ -699,15 +699,15 @@ void func_80BDF414(EnAl* this, PlayState* play) { switch (this->unk_4EA) { case 0: case 1: - if (!(gSaveContext.save.weekEventReg[89] & 8)) { - if (gSaveContext.save.weekEventReg[85] & 0x80) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_89_08)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_85_80)) { func_80BDE4E0(this, &this->unk_4EA, 0); } } break; case 2: - if (gSaveContext.save.weekEventReg[89] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_89_08)) { this->unk_4EA++; } break; diff --git a/src/overlays/actors/ovl_En_Ani/z_en_ani.c b/src/overlays/actors/ovl_En_Ani/z_en_ani.c index ec98213bb..8e98ae8a3 100644 --- a/src/overlays/actors/ovl_En_Ani/z_en_ani.c +++ b/src/overlays/actors/ovl_En_Ani/z_en_ani.c @@ -138,8 +138,7 @@ void EnAni_Init(Actor* thisx, PlayState* play) { this->actor.gravity = 0.0f; this->actor.flags |= ACTOR_FLAG_10; this->stateFlags |= ANI_STATE_CLIMBING; - gSaveContext.eventInf[1] &= (u8)~0x10; - + CLEAR_EVENTINF(EVENTINF_14); } else { // ANI_TYPE_STANDING // ( unused code ) // for some reason standing he has a large collider @@ -244,7 +243,7 @@ void EnAni_LoseBalance(EnAni* this, PlayState* play) { // frame count : 0.0f, only first frame, rest is handled in next action func Animation_Change(&this->skelAnime, &gAniLandingThenStandingUpAnim, 0.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 5.0f); this->actionFunc = EnAni_FallToGround; - gSaveContext.eventInf[1] |= 0x10; + SET_EVENTINF(EVENTINF_14); } } diff --git a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c index 08befd5a8..b07a11520 100644 --- a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c +++ b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c @@ -12,6 +12,8 @@ #define THIS ((EnAob01*)thisx) +//! TODO: this file require macros for its uses of weekEventReg + void EnAob01_Init(Actor* thisx, PlayState* play); void EnAob01_Destroy(Actor* thisx, PlayState* play); void EnAob01_Update(Actor* thisx, PlayState* play); @@ -218,15 +220,15 @@ void func_809C16DC(EnAob01* this, PlayState* play) { switch (gSaveContext.save.day) { case 1: if (!gSaveContext.save.isNight) { - if (!(gSaveContext.save.weekEventReg[64] & 0x80)) { - gSaveContext.save.weekEventReg[64] |= 0x80; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_64_80)) { + SET_WEEKEVENTREG(WEEKEVENTREG_64_80); this->unk_210 = 0x3520; } else { this->unk_210 = 0x352F; } } else { - if (!(gSaveContext.save.weekEventReg[65] & 1)) { - gSaveContext.save.weekEventReg[65] |= 1; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_65_01)) { + SET_WEEKEVENTREG(WEEKEVENTREG_65_01); this->unk_210 = 0x3530; } else { this->unk_210 = 0x352F; @@ -236,15 +238,15 @@ void func_809C16DC(EnAob01* this, PlayState* play) { case 2: if (!gSaveContext.save.isNight) { - if (!(gSaveContext.save.weekEventReg[65] & 2)) { - gSaveContext.save.weekEventReg[65] |= 2; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_65_02)) { + SET_WEEKEVENTREG(WEEKEVENTREG_65_02); this->unk_210 = 0x3531; } else { this->unk_210 = 0x352F; } } else { - if (!(gSaveContext.save.weekEventReg[65] & 4)) { - gSaveContext.save.weekEventReg[65] |= 4; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_65_04)) { + SET_WEEKEVENTREG(WEEKEVENTREG_65_04); this->unk_210 = 0x3532; } else { this->unk_210 = 0x352F; @@ -254,15 +256,15 @@ void func_809C16DC(EnAob01* this, PlayState* play) { case 3: if (!gSaveContext.save.isNight) { - if (!(gSaveContext.save.weekEventReg[65] & 8)) { - gSaveContext.save.weekEventReg[65] |= 8; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_65_08)) { + SET_WEEKEVENTREG(WEEKEVENTREG_65_08); this->unk_210 = 0x3533; } else { this->unk_210 = 0x352F; } } else { - if (!(gSaveContext.save.weekEventReg[65] & 0x10)) { - gSaveContext.save.weekEventReg[65] |= 0x10; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_65_10)) { + SET_WEEKEVENTREG(WEEKEVENTREG_65_10); this->unk_210 = 0x3534; } else { this->unk_210 = 0x352F; @@ -392,7 +394,7 @@ void func_809C16DC(EnAob01* this, PlayState* play) { if (this->unk_2D2 & 2) { this->unk_2D2 &= ~2; Rupees_ChangeBy(-this->unk_434); - func_800B7298(play, NULL, 7); + func_800B7298(play, NULL, PLAYER_CSMODE_7); play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; this->actionFunc = func_809C1C9C; @@ -412,8 +414,8 @@ void func_809C16DC(EnAob01* this, PlayState* play) { void func_809C1C9C(EnAob01* this, PlayState* play) { if (gSaveContext.rupeeAccumulator == 0) { - gSaveContext.save.weekEventReg[63] |= 1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + SET_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); this->unk_2D2 |= 0x20; func_800FD750(0x40); play->nextEntrance = ENTRANCE(DOGGY_RACETRACK, 1); @@ -474,7 +476,7 @@ void func_809C1EC8(EnAob01* this, PlayState* play) { SkelAnime_Update(&this->skelAnime); if (SubS_AngleDiffLessEqual(this->actor.shape.rot.y, 0x36B0, this->actor.yawTowardsPlayer)) { point.x = player->actor.world.pos.x; - point.y = player->bodyPartsPos[7].y + 3.0f; + point.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; point.z = player->actor.world.pos.z; SubS_TrackPoint(&point, &this->actor.focus.pos, &this->actor.shape.rot, &this->trackTarget, &this->headRot, &this->torsoRot, &sTrackOptions); @@ -761,13 +763,13 @@ void func_809C2A64(EnAob01* this, PlayState* play) { this->torsoRot = this->unk_2F2; this->actor.parent = NULL; this->actor.shape.rot.y = this->actor.world.rot.y; - if (gSaveContext.save.weekEventReg[8] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_08_20)) { this->actionFunc = func_809C2BE4; } else { - gSaveContext.save.weekEventReg[8] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_08_20); this->actionFunc = func_809C2BE4; } - } else if (gSaveContext.save.weekEventReg[8] & 0x20) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_08_20)) { Actor_PickUp(&this->actor, play, GI_RUPEE_RED, 300.0f, 300.0f); } else { Actor_PickUp(&this->actor, play, GI_HEART_PIECE, 300.0f, 300.0f); @@ -779,12 +781,12 @@ void func_809C2BE4(EnAob01* this, PlayState* play) { u8 talkState = Message_GetState(&play->msgCtx); if (((talkState == TEXT_STATE_5) || (talkState == TEXT_STATE_DONE)) && Message_ShouldAdvance(play)) { - if (gSaveContext.save.weekEventReg[63] & 2) { - gSaveContext.save.weekEventReg[63] &= (u8)~2; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_02)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); } - if (gSaveContext.save.weekEventReg[63] & 1) { - gSaveContext.save.weekEventReg[63] &= (u8)~1; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_01)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); } this->unk_210 = 0; @@ -833,12 +835,12 @@ void func_809C2D0C(EnAob01* this, PlayState* play) { this->unk_434 = 0; this->actor.shape.rot.y = this->actor.world.rot.y; - if (gSaveContext.save.weekEventReg[63] & 2) { - gSaveContext.save.weekEventReg[63] &= (u8)~2; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_02)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); } - if (gSaveContext.save.weekEventReg[63] & 1) { - gSaveContext.save.weekEventReg[63] &= (u8)~1; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_01)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); } this->unk_210 = 0x354C; @@ -967,7 +969,7 @@ void EnAob01_Destroy(Actor* thisx, PlayState* play) { EnAob01* this = THIS; if (!(this->unk_2D2 & 0x20)) { - gSaveContext.save.weekEventReg[63] &= (u8)~1; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); } Collider_DestroyCylinder(play, &this->collider); } diff --git a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c index dd6f503ef..b07e65de3 100644 --- a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c +++ b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c @@ -474,7 +474,7 @@ void func_8088ACE0(EnArrow* this, PlayState* play) { } if (this->actor.params < ENARROW_6) { - this->actor.shape.rot.x = Math_FAtan2F(this->actor.speedXZ, -this->actor.velocity.y); + this->actor.shape.rot.x = Math_Atan2S_XY(this->actor.speedXZ, -this->actor.velocity.y); } } diff --git a/src/overlays/actors/ovl_En_Az/z_en_az.c b/src/overlays/actors/ovl_En_Az/z_en_az.c index 0aa5063de..bfefb5a85 100644 --- a/src/overlays/actors/ovl_En_Az/z_en_az.c +++ b/src/overlays/actors/ovl_En_Az/z_en_az.c @@ -207,32 +207,32 @@ void EnAz_Init(Actor* thisx, PlayState* play2) { this->actor.targetMode = 1; switch (BEAVER_GET_PARAM_F00(thisx)) { case 0: - phi_v1 = (gSaveContext.save.entrance == ENTRANCE(WATERFALL_RAPIDS, 0)) && - (gSaveContext.save.weekEventReg[93] & 1); + phi_v1 = + (gSaveContext.save.entrance == ENTRANCE(WATERFALL_RAPIDS, 0)) && CHECK_WEEKEVENTREG(WEEKEVENTREG_93_01); phi_v1 = !phi_v1; break; case 2: phi_v1 = (gSaveContext.save.entrance != ENTRANCE(WATERFALL_RAPIDS, 1)) || - !(gSaveContext.save.weekEventReg[24] & 4); + !CHECK_WEEKEVENTREG(WEEKEVENTREG_24_04); break; case 4: phi_v1 = gSaveContext.save.entrance != ENTRANCE(WATERFALL_RAPIDS, 2); break; case 1: - phi_v1 = (gSaveContext.save.entrance == ENTRANCE(WATERFALL_RAPIDS, 0)) && - (gSaveContext.save.weekEventReg[93] & 1); + phi_v1 = + (gSaveContext.save.entrance == ENTRANCE(WATERFALL_RAPIDS, 0)) && CHECK_WEEKEVENTREG(WEEKEVENTREG_93_01); phi_v1 = !phi_v1; break; case 3: - phi_v1 = (gSaveContext.save.entrance != ENTRANCE(WATERFALL_RAPIDS, 1)) || - (gSaveContext.save.weekEventReg[24] & 4); + phi_v1 = + (gSaveContext.save.entrance != ENTRANCE(WATERFALL_RAPIDS, 1)) || CHECK_WEEKEVENTREG(WEEKEVENTREG_24_04); break; case 5: phi_v1 = gSaveContext.save.entrance != ENTRANCE(WATERFALL_RAPIDS, 2); break; case 6: phi_v1 = (gSaveContext.save.entrance == ENTRANCE(WATERFALL_RAPIDS, 0)) && - !(gSaveContext.save.weekEventReg[93] & 1); + !CHECK_WEEKEVENTREG(WEEKEVENTREG_93_01); phi_v1 = !phi_v1; break; default: @@ -292,7 +292,7 @@ void EnAz_Init(Actor* thisx, PlayState* play2) { switch (gSaveContext.save.entrance) { case ENTRANCE(WATERFALL_RAPIDS, 0): - if (gSaveContext.save.weekEventReg[93] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_93_01)) { this->unk_2FA = 5; if (this->unk_374 & 2) { this->actor.flags |= (ACTOR_FLAG_1 | ACTOR_FLAG_8); @@ -321,14 +321,14 @@ void EnAz_Init(Actor* thisx, PlayState* play2) { func_80A97C0C(this, play); break; case ENTRANCE(WATERFALL_RAPIDS, 1): - if (gSaveContext.save.weekEventReg[93] & 1) { - if (gSaveContext.save.weekEventReg[24] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_93_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_24_04)) { this->unk_2FA = 8; } else { this->unk_2FA = 6; } } else { - if (gSaveContext.save.weekEventReg[24] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_24_04)) { this->unk_2FA = 3; } else { this->unk_2FA = 1; @@ -338,7 +338,7 @@ void EnAz_Init(Actor* thisx, PlayState* play2) { SubS_CopyPointFromPathList(play->setupPathList, BEAVER_GET_PARAM_FF(thisx), play->setupPathList[BEAVER_GET_PARAM_FF(thisx)].count - 1, &D_80A99E80); } - if (gSaveContext.save.weekEventReg[24] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_24_04)) { if (this->unk_374 & 2) { func_80A97D5C(this, play); } else { @@ -351,14 +351,14 @@ void EnAz_Init(Actor* thisx, PlayState* play2) { } break; case ENTRANCE(WATERFALL_RAPIDS, 2): - if (gSaveContext.save.weekEventReg[93] & 1) { - if (gSaveContext.save.weekEventReg[24] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_93_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_24_04)) { this->unk_2FA = 9; } else { this->unk_2FA = 7; } } else { - if (gSaveContext.save.weekEventReg[24] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_24_04)) { this->unk_2FA = 4; } else { this->unk_2FA = 2; @@ -698,7 +698,7 @@ s32 func_80A9617C(EnAz* this, PlayState* play) { switch (play->msgCtx.currentTextId) { case 0x70: case 0xCD: - gSaveContext.save.weekEventReg[24] &= (u8)~1; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_24_01); this->actor.textId = 0x10F2; SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationInfo, BEAVER_ANIM_BOW, &this->animIndex); @@ -707,7 +707,7 @@ s32 func_80A9617C(EnAz* this, PlayState* play) { break; case 0x10CE: this->actor.textId = 0x10CF; - gSaveContext.save.weekEventReg[16] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_16_40); break; case 0x10CF: this->actor.textId = 0x10D0; @@ -782,7 +782,7 @@ s32 func_80A9617C(EnAz* this, PlayState* play) { break; case 0x10D9: if ((this->unk_2FA == 3) || (this->unk_2FA == 8)) { - gSaveContext.save.weekEventReg[24] &= (u8)~4; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_24_04); } func_80A94AB8(this, play, 0); func_80A979DC(this, play); @@ -866,7 +866,7 @@ s32 func_80A9617C(EnAz* this, PlayState* play) { ret = 0; break; case 0x10E7: - gSaveContext.save.weekEventReg[24] &= (u8)~4; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_24_04); func_80A94AB8(this, play, 0); SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationInfo, BEAVER_ANIM_IDLE, &this->animIndex); @@ -924,7 +924,7 @@ s32 func_80A9617C(EnAz* this, PlayState* play) { break; case 0x10ED: if ((this->unk_2FA == 4) || (this->unk_2FA == 9)) { - gSaveContext.save.weekEventReg[24] &= (u8)~4; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_24_04); } func_80A94AB8(this, play, 0); func_80A979DC(this, play); @@ -943,12 +943,12 @@ s32 func_80A9617C(EnAz* this, PlayState* play) { ret = 0; break; case 0x10F1: - gSaveContext.save.weekEventReg[93] |= 1; - if (gSaveContext.save.weekEventReg[23] & 0x80) { + SET_WEEKEVENTREG(WEEKEVENTREG_93_01); + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_23_80)) { this->getItemId = GI_RUPEE_RED; } else { this->getItemId = GI_BOTTLE; - gSaveContext.save.weekEventReg[23] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_23_80); } SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationInfo, BEAVER_ANIM_IDLE, &this->animIndex); @@ -958,7 +958,7 @@ s32 func_80A9617C(EnAz* this, PlayState* play) { break; case 0x10F2: case 0x1109: - gSaveContext.save.weekEventReg[24] &= (u8)~4; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_24_04); SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationInfo, BEAVER_ANIM_IDLE, &this->animIndex); SubS_ChangeAnimationBySpeedInfo(&brother->skelAnime, sAnimationInfo, BEAVER_ANIM_IDLE, @@ -992,7 +992,7 @@ s32 func_80A9617C(EnAz* this, PlayState* play) { case 0x10F8: if (play->msgCtx.choiceIndex == 0) { func_8019F208(); - if (gSaveContext.save.weekEventReg[25] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_25_01)) { this->actor.textId = 0x1107; } else { this->actor.textId = 0x10FA; @@ -1044,7 +1044,7 @@ s32 func_80A9617C(EnAz* this, PlayState* play) { case 0x10FE: if (play->msgCtx.choiceIndex == 0) { func_8019F208(); - if (gSaveContext.save.weekEventReg[25] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_25_01)) { this->actor.textId = 0x1108; } else { this->actor.textId = 0x1101; @@ -1065,7 +1065,7 @@ s32 func_80A9617C(EnAz* this, PlayState* play) { ret = 0; break; case 0x1100: - gSaveContext.save.weekEventReg[24] &= (u8)~4; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_24_04); SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationInfo, BEAVER_ANIM_IDLE, &this->animIndex); SubS_ChangeAnimationBySpeedInfo(&brother->skelAnime, sAnimationInfo, BEAVER_ANIM_IDLE, @@ -1096,11 +1096,11 @@ s32 func_80A9617C(EnAz* this, PlayState* play) { ret = 0; break; case 0x1105: - if (gSaveContext.save.weekEventReg[25] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_25_01)) { this->getItemId = GI_RUPEE_PURPLE; } else { this->getItemId = GI_HEART_PIECE; - gSaveContext.save.weekEventReg[25] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_25_01); } SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationInfo, BEAVER_ANIM_IDLE, &this->animIndex); @@ -1109,7 +1109,7 @@ s32 func_80A9617C(EnAz* this, PlayState* play) { ret = 7; break; case 0x1106: - gSaveContext.save.weekEventReg[24] &= (u8)~4; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_24_04); SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationInfo, BEAVER_ANIM_IDLE, &this->animIndex); SubS_ChangeAnimationBySpeedInfo(&brother->skelAnime, sAnimationInfo, BEAVER_ANIM_IDLE, @@ -1188,16 +1188,16 @@ s32 func_80A97274(EnAz* this, PlayState* play) { switch (this->unk_2FA) { case 0: default: - gSaveContext.save.weekEventReg[24] &= (u8)~4; - if (!(gSaveContext.save.weekEventReg[16] & 0x40)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_24_04); + if (!(CHECK_WEEKEVENTREG(WEEKEVENTREG_16_40))) { textId = 0x10CE; } else { textId = 0x10D4; } break; case 2: - if (gSaveContext.save.weekEventReg[24] & 1) { - gSaveContext.save.weekEventReg[24] |= 4; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_24_01)) { + SET_WEEKEVENTREG(WEEKEVENTREG_24_04); this->unk_3C0 = 0; textId = 0x10DD; } else { @@ -1205,26 +1205,26 @@ s32 func_80A97274(EnAz* this, PlayState* play) { } break; case 4: - if (gSaveContext.save.weekEventReg[24] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_24_01)) { textId = 0x10EE; } else { textId = 0x10E9; } break; case 5: - gSaveContext.save.weekEventReg[24] &= (u8)~4; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_24_04); textId = 0x10F3; break; case 7: - if (gSaveContext.save.weekEventReg[24] & 1) { - gSaveContext.save.weekEventReg[24] |= 4; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_24_01)) { + SET_WEEKEVENTREG(WEEKEVENTREG_24_04); textId = 0x10FB; } else { textId = 0x10E9; } break; case 9: - if (gSaveContext.save.weekEventReg[24] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_24_01)) { textId = 0x1102; } else { textId = 0x10E9; @@ -1337,7 +1337,7 @@ void func_80A97410(EnAz* this, PlayState* play) { func_80A97114(this, play); this->unk_378 = 2; } else if (func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, - PLAYER_AP_MINUS1)) { + PLAYER_IA_MINUS1)) { this->actor.textId = func_80A973B4(this, play); } } else { @@ -1431,8 +1431,8 @@ void func_80A97AB4(EnAz* this, PlayState* play) { func_80A979DC(this, play); } else { func_8019F230(); - if (gSaveContext.save.weekEventReg[24] & 4) { - gSaveContext.save.weekEventReg[24] &= (u8)~4; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_24_04)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_24_04); } func_80151938(play, 0x10D9); } @@ -1465,7 +1465,7 @@ void func_80A97C4C(EnAz* this, PlayState* play) { } func_80A97410(this, play); if ((this->unk_2FA == 1) || (this->unk_2FA == 3) || (this->unk_2FA == 6) || (this->unk_2FA == 8)) { - gSaveContext.save.weekEventReg[24] &= (u8)~1; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_24_01); func_800FD750(NA_BGM_TIMED_MINI_GAME); play->nextEntrance = Entrance_CreateFromSpawn(1); gSaveContext.nextCutsceneIndex = 0; @@ -1487,7 +1487,7 @@ void func_80A97D5C(EnAz* this, PlayState* play) { play->interfaceCtx.minigameState = MINIGAME_STATE_COUNTDOWN_SETUP_3; if ((this->unk_2FA == 1) || (this->unk_2FA == 3)) { Interface_StartTimer(TIMER_ID_MINIGAME_2, 120); - } else if (gSaveContext.save.weekEventReg[25] & 1) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_25_01)) { Interface_StartTimer(TIMER_ID_MINIGAME_2, 100); } else { Interface_StartTimer(TIMER_ID_MINIGAME_2, 110); @@ -1543,9 +1543,9 @@ void func_80A97F9C(EnAz* this, PlayState* play) { } if (SurfaceType_IsHorseBlocked(&play->colCtx, player->actor.floorPoly, player->actor.floorBgId)) { if (func_80A94B98(this, play)) { - gSaveContext.save.weekEventReg[24] &= (u8)~1; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_24_01); } else { - gSaveContext.save.weekEventReg[24] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_24_01); } gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; this->unk_374 &= ~0x10; @@ -1600,8 +1600,8 @@ void func_80A982E0(PlayState* play, ActorPathing* actorPathing) { sp28.z = actorPathing->curPoint.z - actorPathing->worldPos->z; actorPathing->distSqToCurPointXZ = Math3D_XZLengthSquared(sp28.x, sp28.z); actorPathing->distSqToCurPoint = Math3D_LengthSquared(&sp28); - actorPathing->rotToCurPoint.y = Math_FAtan2F(sp28.z, sp28.x); - actorPathing->rotToCurPoint.x = Math_FAtan2F(sqrtf(actorPathing->distSqToCurPointXZ), -sp28.y); + actorPathing->rotToCurPoint.y = Math_Atan2S_XY(sp28.z, sp28.x); + actorPathing->rotToCurPoint.x = Math_Atan2S_XY(sqrtf(actorPathing->distSqToCurPointXZ), -sp28.y); actorPathing->rotToCurPoint.z = 0; } diff --git a/src/overlays/actors/ovl_En_Baba/z_en_baba.c b/src/overlays/actors/ovl_En_Baba/z_en_baba.c index 7dcb4b37d..584c51f4e 100644 --- a/src/overlays/actors/ovl_En_Baba/z_en_baba.c +++ b/src/overlays/actors/ovl_En_Baba/z_en_baba.c @@ -167,13 +167,13 @@ void EnBaba_HandleConversation(EnBaba* this, PlayState* play) { switch (this->textId) { case 0: if (this->stateFlags & BOMB_SHOP_LADY_STATE_AUTOTALK) { - if (gSaveContext.save.weekEventReg[33] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08)) { // Thanks. Can stock Bomb Bags tomorrow this->textId = 0x2A34; break; } - if (gSaveContext.save.weekEventReg[79] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_40)) { this->stateFlags |= BOMB_SHOP_LADY_STATE_END_CONVERSATION; // Oh my, learned my lesson. Can't stock Bomb Bags tomorrow this->textId = 0x2A33; @@ -185,8 +185,8 @@ void EnBaba_HandleConversation(EnBaba* this, PlayState* play) { this->textId = 0x2A32; break; } else if (player->transformation == PLAYER_FORM_DEKU) { - if (!(gSaveContext.save.weekEventReg[79] & 0x20)) { - gSaveContext.save.weekEventReg[79] |= 0x20; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_79_20)) { + SET_WEEKEVENTREG(WEEKEVENTREG_79_20); this->stateFlags |= BOMB_SHOP_LADY_STATE_END_CONVERSATION; // Small customer, use bombs as adult this->textId = 0x2A37; @@ -197,8 +197,8 @@ void EnBaba_HandleConversation(EnBaba* this, PlayState* play) { this->textId = 0x2A38; } break; - } else if (!(gSaveContext.save.weekEventReg[33] & 8)) { - if (!(gSaveContext.save.weekEventReg[73] & 1)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_73_01)) { // Thought could sell Big Bomb Bags this->textId = 0x660; break; @@ -207,7 +207,7 @@ void EnBaba_HandleConversation(EnBaba* this, PlayState* play) { this->textId = 0x662; break; } else { - if (!(gSaveContext.save.weekEventReg[73] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_73_02)) { // Someone helped me out this->textId = 0x65A; break; @@ -234,7 +234,7 @@ void EnBaba_HandleConversation(EnBaba* this, PlayState* play) { Actor_ChangeFocus(&this->actor, play, &this->bombShopkeeper->actor); // I'll go next time this->textId = 0x663; - gSaveContext.save.weekEventReg[73] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_73_01); this->stateFlags |= BOMB_SHOP_LADY_STATE_END_CONVERSATION; break; @@ -254,7 +254,7 @@ void EnBaba_HandleConversation(EnBaba* this, PlayState* play) { Actor_ChangeFocus(&this->actor, play, &this->bombShopkeeper->actor); // I worry about you this->textId = 0x65D; - gSaveContext.save.weekEventReg[73] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_73_02); this->stateFlags |= BOMB_SHOP_LADY_STATE_END_CONVERSATION; break; @@ -341,7 +341,7 @@ void EnBaba_UpdateModel(EnBaba* this, PlayState* play) { if (SubS_AngleDiffLessEqual(this->actor.shape.rot.y, 0x36B0, this->actor.yawTowardsPlayer) && !(this->stateFlags & BOMB_SHOP_LADY_STATE_KNOCKED_OVER)) { point.x = player->actor.world.pos.x; - point.y = player->bodyPartsPos[7].y + 3.0f; + point.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; point.z = player->actor.world.pos.z; SubS_TrackPoint(&point, &this->actor.focus.pos, &this->actor.shape.rot, &this->trackTarget, &this->headRot, @@ -476,7 +476,7 @@ s32 EnBaba_FollowTimePath(EnBaba* this, PlayState* play) { void EnBaba_HandleSchedule(EnBaba* this, PlayState* play) { switch (this->scheduleResult) { case BOMB_SHOP_LADY_SCH_FOLLOW_TIME_PATH: - gSaveContext.save.weekEventReg[58] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_58_40); this->stateFlags |= BOMB_SHOP_LADY_STATE_VISIBLE; EnBaba_FollowTimePath(this, play); break; @@ -512,7 +512,7 @@ void EnBaba_FinishInit(EnBaba* this, PlayState* play) { if ((BOMB_SHOP_LADY_GET_TYPE(&this->actor) == BOMB_SHOP_LADY_TYPE_FOLLOW_SCHEDULE) && (gSaveContext.save.entrance != ENTRANCE(NORTH_CLOCK_TOWN, 7)) && (BOMB_SHOP_LADY_GET_PATH_INDEX(&this->actor) != 0x3F)) { - if ((gSaveContext.save.weekEventReg[58] & 0x40) || + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_58_40) || (gSaveContext.save.time >= CLOCK_TIME(0, 20) && (gSaveContext.save.time < CLOCK_TIME(6, 0)))) { Actor_Kill(&this->actor); return; @@ -524,13 +524,13 @@ void EnBaba_FinishInit(EnBaba* this, PlayState* play) { this->actionFunc = EnBaba_FollowSchedule; } else if ((BOMB_SHOP_LADY_GET_TYPE(&this->actor) == BOMB_SHOP_LADY_TYPE_IDLE) && (gSaveContext.save.entrance == ENTRANCE(NORTH_CLOCK_TOWN, 7))) { - if (gSaveContext.save.weekEventReg[81] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_81_02)) { Actor_Kill(&this->actor); return; } this->stateFlags |= BOMB_SHOP_LADY_STATE_VISIBLE; - if (gSaveContext.save.weekEventReg[33] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08)) { this->animIndex = BOMB_SHOP_LADY_ANIM_IDLE_HOLDING_BAG; } else { this->animIndex = BOMB_SHOP_LADY_ANIM_IDLE; @@ -603,12 +603,12 @@ void EnBaba_Talk(EnBaba* this, PlayState* play) { if (this->stateFlags & BOMB_SHOP_LADY_STATE_AUTOTALK) { if (CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { if (play->msgCtx.unk120B1 == 0) { - gSaveContext.save.weekEventReg[81] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_81_02); EnBaba_TriggerTransition(play, ENTRANCE(NORTH_CLOCK_TOWN, 7)); return; } } else { - gSaveContext.save.weekEventReg[81] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_81_02); EnBaba_TriggerTransition(play, ENTRANCE(NORTH_CLOCK_TOWN, 7)); } } else { @@ -626,7 +626,7 @@ void EnBaba_Talk(EnBaba* this, PlayState* play) { } } else if (talkState == TEXT_STATE_DONE) { if (Message_ShouldAdvance(play) && (play->msgCtx.unk120B1 == 0)) { - gSaveContext.save.weekEventReg[81] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_81_02); EnBaba_TriggerTransition(play, ENTRANCE(NORTH_CLOCK_TOWN, 7)); } } @@ -647,7 +647,7 @@ void EnBaba_GaveBlastMask(EnBaba* this, PlayState* play) { EnBaba_HandleConversation(this, play); this->actionFunc = EnBaba_Talk; } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -698,7 +698,7 @@ void EnBaba_KnockedOver(EnBaba* this, PlayState* play) { Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, this->animIndex); } } else { - if ((gSaveContext.save.weekEventReg[79] & 0x40) && (DECR(this->sakonDeadTimer) == 0)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_40) && (DECR(this->sakonDeadTimer) == 0)) { Audio_QueueSeqCmd(0x101400FF); EnBaba_TriggerTransition(play, ENTRANCE(NORTH_CLOCK_TOWN, 7)); } else { diff --git a/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c b/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c index 5716c27d5..8812ae6d3 100644 --- a/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c +++ b/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c @@ -71,16 +71,14 @@ void EnBaisen_Init(Actor* thisx, PlayState* play) { this->paramCopy = this->actor.params; if (this->actor.params == 0) { this->unk290 = true; - if (!(gSaveContext.save.weekEventReg[63] & 0x80) && - ((gSaveContext.save.day != 3) || !gSaveContext.save.isNight)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80) && ((gSaveContext.save.day != 3) || !gSaveContext.save.isNight)) { Actor_Kill(&this->actor); } } else { this->collider.dim.radius = 30; this->collider.dim.height = 60; this->collider.dim.yShift = 0; - if ((gSaveContext.save.weekEventReg[63] & 0x80) || - ((gSaveContext.save.day == 3) && (gSaveContext.save.isNight))) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80) || ((gSaveContext.save.day == 3) && gSaveContext.save.isNight)) { Actor_Kill(&this->actor); } } @@ -155,7 +153,7 @@ void func_80BE887C(EnBaisen* this, PlayState* play) { } else { if (this->paramCopy != 0) { this->textIdIndex = 0; - if (gSaveContext.save.weekEventReg[60] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_60_08)) { this->textIdIndex = 1; } if (Player_GetMask(play) == PLAYER_MASK_COUPLE) { diff --git a/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.c b/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.c index 067a4da8b..1b9538146 100644 --- a/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.c +++ b/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.c @@ -111,7 +111,7 @@ void EnBba01_UpdateModel(EnBba01* this, PlayState* play) { EnHy_UpdateSkelAnime(&this->enHy, play); if (SubS_AngleDiffLessEqual(this->enHy.actor.shape.rot.y, 0x36B0, this->enHy.actor.yawTowardsPlayer)) { point.x = player->actor.world.pos.x; - point.y = player->bodyPartsPos[7].y + 3.0f; + point.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; point.z = player->actor.world.pos.z; SubS_TrackPoint(&point, &this->enHy.actor.focus.pos, &this->enHy.actor.shape.rot, &this->enHy.trackTarget, &this->enHy.headRot, &this->enHy.torsoRot, &sTrackOptions); @@ -150,7 +150,7 @@ s32 func_809CC270(EnBba01* this, PlayState* play) { Actor_GetScreenPos(play, &this->enHy.actor, &x, &y); //! @bug: Both x and y conditionals are always true, || should be an && if (!this->enHy.waitingOnInit && ((x >= 0) || (x < SCREEN_WIDTH)) && ((y >= 0) || (y < SCREEN_HEIGHT))) { - func_800B85E0(&this->enHy.actor, play, 30.0f, PLAYER_AP_MAGIC_BEANS); + func_800B85E0(&this->enHy.actor, play, 30.0f, PLAYER_IA_MAGIC_BEANS); } return true; } diff --git a/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c b/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c index 3792c09c7..b995d77ea 100644 --- a/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c +++ b/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c @@ -104,7 +104,7 @@ void EnBigokuta_Init(Actor* thisx, PlayState* play) { CollisionCheck_SetInfo(&this->picto.actor.colChkInfo, NULL, &sColChkInfoInit); this->cutscene = ActorCutscene_GetAdditionalCutscene(this->picto.actor.cutscene); - if (gSaveContext.save.weekEventReg[20] & 2 || + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02) || ((this->picto.actor.params != 0xFF) && Flags_GetSwitch(play, this->picto.actor.params))) { Actor_Kill(&this->picto.actor); } else { @@ -377,8 +377,8 @@ void EnBigokuta_PlayDeathCutscene(EnBigokuta* this, PlayState* play) { } else if (ActorCutscene_GetCanPlayNext(this->cutscene)) { ActorCutscene_Start(this->cutscene, &this->picto.actor); - if (!(gSaveContext.eventInf[4] & 2) && !(gSaveContext.eventInf[3] & 0x20)) { - func_800B724C(play, &this->picto.actor, 7); + if (!CHECK_EVENTINF(EVENTINF_41) && !CHECK_EVENTINF(EVENTINF_35)) { + func_800B724C(play, &this->picto.actor, PLAYER_CSMODE_7); } else { player = GET_PLAYER(play); player->stateFlags1 |= PLAYER_STATE1_20; @@ -453,8 +453,8 @@ void EnBigokuta_PlayDeathEffects(EnBigokuta* this, PlayState* play) { ActorCutscene_Stop(this->cutscene); Actor_Kill(&this->picto.actor); - if (!(gSaveContext.eventInf[4] & 2) && !(gSaveContext.eventInf[3] & 0x20)) { - func_800B724C(play, &this->picto.actor, 6); + if (!CHECK_EVENTINF(EVENTINF_41) && !CHECK_EVENTINF(EVENTINF_35)) { + func_800B724C(play, &this->picto.actor, PLAYER_CSMODE_6); } else { Player* player = GET_PLAYER(play); diff --git a/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c b/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c index 63c77b625..5398418f2 100644 --- a/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c +++ b/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c @@ -300,7 +300,7 @@ void EnBigpo_SetupSpawnCutscene(EnBigpo* this) { void EnBigpo_WaitCutsceneQueue(EnBigpo* this, PlayState* play) { if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) { ActorCutscene_Start(this->actor.cutscene, &this->actor); - func_800B724C(play, &this->actor, 7); + func_800B724C(play, &this->actor, PLAYER_CSMODE_7); this->subCamId = ActorCutscene_GetCurrentSubCamId(this->actor.cutscene); if (this->actor.params == ENBIGPO_REGULAR) { // and SUMMONED, got switched earlier EnBigpo_SpawnCutsceneStage1(this, play); @@ -471,7 +471,7 @@ void EnBigpo_SpawnCutsceneStage8(EnBigpo* this, PlayState* play) { } else { // ENBIGPO_REGULAR ActorCutscene_Stop(this->actor.cutscene); } - func_800B724C(play, &this->actor, 6); + func_800B724C(play, &this->actor, PLAYER_CSMODE_6); EnBigpo_SetupIdleFlying(this); // setup idle flying } } diff --git a/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c b/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c index 5dc33095a..9cf4b425b 100644 --- a/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c +++ b/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c @@ -311,13 +311,11 @@ static InitChainEntry sInitChain[] = { }; void EnBigslime_Init(Actor* thisx, PlayState* play2) { - // gSaveContext.save.weekEventReg[KEY] = VALUE - // KEY | VALUE static s32 isFrogReturnedFlags[] = { - (32 << 8) | 0x40, // Woodfall Temple Frog Returned - (32 << 8) | 0x80, // Great Bay Temple Frog Returned - (33 << 8) | 0x01, // Southern Swamp Frog Returned - (33 << 8) | 0x02, // Laundry Pool Frog Returned + WEEKEVENTREG_32_40, + WEEKEVENTREG_32_80, + WEEKEVENTREG_33_01, + WEEKEVENTREG_33_02, }; PlayState* play = play2; EnBigslime* this = THIS; @@ -342,43 +340,43 @@ void EnBigslime_Init(Actor* thisx, PlayState* play2) { if (Flags_GetClear(play, play->roomCtx.curRoom.num)) { Actor_Kill(&this->actor); - if (!(gSaveContext.save.weekEventReg[isFrogReturnedFlags[this->actor.params - 1] >> 8] & - (u8)isFrogReturnedFlags[this->actor.params - 1])) { + if (!CHECK_WEEKEVENTREG(isFrogReturnedFlags[this->actor.params - 1])) { Actor_Spawn(&play->actorCtx, play, ACTOR_EN_MINIFROG, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, this->actor.shape.rot.y, 0, this->actor.params); } - } else { - this->cutscene = this->actor.cutscene; - this->actor.scale.x = this->actor.scale.z = 0.15f; - this->actor.scale.y = 0.075f; - this->vtxScaleX = this->vtxScaleZ = 0.015000001f; - this->actor.home.pos.x = GBT_ROOM_5_CENTER_X; - this->actor.home.pos.y = GBT_ROOM_5_MAX_Y - 75.0f; - this->actor.home.pos.z = GBT_ROOM_5_CENTER_Z; - for (i = 0; i < MINISLIME_NUM_SPAWN; i++) { - this->minislime[i] = (EnMinislime*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, - ACTOR_EN_MINISLIME, 0.0f, 0.0f, 0.0f, 0, 0, 0, i); - if (this->minislime[i] == NULL) { - for (i = i - 1; i >= 0; i--) { - Actor_Kill(&this->minislime[i]->actor); - } - - Actor_Kill(&this->actor); - return; - } - } - - this->minislimeFrozenTexAnim = Lib_SegmentedToVirtual(&gMinislimeFrozenTexAnim); - this->bigslimeFrozenTexAnim = Lib_SegmentedToVirtual(&gBigslimeFrozenTexAnim); - this->iceShardTexAnim = Lib_SegmentedToVirtual(&gBigslimeIceShardTexAnim); - this->actor.world.pos.y = GBT_ROOM_5_MIN_Y; - this->actor.flags &= ~ACTOR_FLAG_1; - this->actor.shape.shadowAlpha = 255; - this->gekkoScale = 0.007f; - this->actor.shape.rot.y = 0; - this->minislimeToThrow = this->minislime[0]; - EnBigslime_SetupInitEntrance(this); + return; } + + this->cutscene = this->actor.cutscene; + this->actor.scale.x = this->actor.scale.z = 0.15f; + this->actor.scale.y = 0.075f; + this->vtxScaleX = this->vtxScaleZ = 0.015000001f; + this->actor.home.pos.x = GBT_ROOM_5_CENTER_X; + this->actor.home.pos.y = GBT_ROOM_5_MAX_Y - 75.0f; + this->actor.home.pos.z = GBT_ROOM_5_CENTER_Z; + for (i = 0; i < MINISLIME_NUM_SPAWN; i++) { + this->minislime[i] = (EnMinislime*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_MINISLIME, + 0.0f, 0.0f, 0.0f, 0, 0, 0, i); + if (this->minislime[i] == NULL) { + for (i = i - 1; i >= 0; i--) { + Actor_Kill(&this->minislime[i]->actor); + } + + Actor_Kill(&this->actor); + return; + } + } + + this->minislimeFrozenTexAnim = Lib_SegmentedToVirtual(gMinislimeFrozenTexAnim); + this->bigslimeFrozenTexAnim = Lib_SegmentedToVirtual(gBigslimeFrozenTexAnim); + this->iceShardTexAnim = Lib_SegmentedToVirtual(gBigslimeIceShardTexAnim); + this->actor.world.pos.y = GBT_ROOM_5_MIN_Y; + this->actor.flags &= ~ACTOR_FLAG_1; + this->actor.shape.shadowAlpha = 255; + this->gekkoScale = 0.007f; + this->actor.shape.rot.y = 0; + this->minislimeToThrow = this->minislime[0]; + EnBigslime_SetupInitEntrance(this); } void EnBigslime_Destroy(Actor* thisx, PlayState* play) { @@ -851,7 +849,7 @@ void EnBigslime_EndCutscene(EnBigslime* this, PlayState* play) { this->subCamId = SUB_CAM_ID_DONE; ActorCutscene_Stop(this->cutscene); this->cutscene = ActorCutscene_GetAdditionalCutscene(this->actor.cutscene); - func_800B724C(play, &this->actor, 6); + func_800B724C(play, &this->actor, PLAYER_CSMODE_6); } } @@ -940,7 +938,7 @@ void EnBigslime_SetupCutsceneStartBattle(EnBigslime* this, PlayState* play) { this->bigslimeCollider[0].base.acFlags &= ~AC_ON; Math_Vec3f_Copy(&subCam->at, &this->actor.focus.pos); - func_800B7298(play, &this->actor, 4); + func_800B7298(play, &this->actor, PLAYER_CSMODE_4); player->actor.shape.rot.y = this->actor.yawTowardsPlayer + 0x8000; player->actor.world.pos.x = Math_SinS(this->actor.yawTowardsPlayer) * 347.0f + this->actor.world.pos.x; @@ -988,7 +986,7 @@ void EnBigslime_SetupCallMinislime(EnBigslime* this, PlayState* play) { Animation_MorphToPlayOnce(&this->skelAnime, &gGekkoCallAnim, 5.0f); EnBigslime_GekkoSfxOutsideBigslime(this, NA_SE_EN_FROG_GREET); this->callTimer = 0; - func_800B7298(play, &this->actor, 7); + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); this->actionFunc = EnBigslime_CallMinislime; } @@ -1012,7 +1010,7 @@ void EnBigslime_CallMinislime(EnBigslime* this, PlayState* play) { EnBigslime_InitFallMinislime(this); play->envCtx.lightSettingOverride = 0xFF; this->callTimer = 35; - func_800B7298(play, &this->actor, 4); + func_800B7298(play, &this->actor, PLAYER_CSMODE_4); } } @@ -1626,7 +1624,7 @@ void EnBigslime_AttackPlayerInBigslime(EnBigslime* this, PlayState* play) { } play->damagePlayer(play, -4); - func_800B8E58(player, player->ageProperties->unk_92 + NA_SE_VO_LI_DAMAGE_S); + func_800B8E58(player, player->ageProperties->voiceSfxIdOffset + NA_SE_VO_LI_DAMAGE_S); this->gekkoRot.y += (s16)(Rand_S16Offset(0x4000, 0x4000) * (Rand_ZeroOne() < 0.5f ? -1 : 1)); this->gekkoPosOffset.x = Math_SinS(this->gekkoRot.y) * -50.0f; this->gekkoPosOffset.z = Math_CosS(this->gekkoRot.y) * -50.0f; @@ -2545,7 +2543,7 @@ void EnBigslime_PlayCutscene(EnBigslime* this, PlayState* play) { } else if (ActorCutscene_GetCanPlayNext(this->cutscene)) { ActorCutscene_Start(this->cutscene, &this->actor); if (this->actionFuncStored != EnBigslime_SquishFlat) { - func_800B724C(play, &this->actor, 7); + func_800B724C(play, &this->actor, PLAYER_CSMODE_7); } this->subCamId = ActorCutscene_GetCurrentSubCamId(this->cutscene); @@ -2986,16 +2984,16 @@ void EnBigslime_DrawBigslime(Actor* thisx, PlayState* play) { // Draw Bigslime gSPSegment(POLY_XLU_DISP++, 0x09, sBigslimeDynamicVtx[this->dynamicVtxState]); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, &gBigslimeNormalDL); - gSPDisplayList(POLY_XLU_DISP++, &gBigslimeVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gBigslimeNormalMaterialDL); + gSPDisplayList(POLY_XLU_DISP++, gBigslimeModelDL); // Draw frozen Bigslime if ((this->actionFunc == EnBigslime_Freeze) || (this->actionFunc == EnBigslime_FrozenGround) || (this->actionFunc == EnBigslime_FrozenFall) || (this->actionFunc == EnBigslime_Melt)) { AnimatedMat_Draw(play, this->bigslimeFrozenTexAnim); gSPSegment(POLY_XLU_DISP++, 0x09, sBigslimeTargetVtx); - gSPDisplayList(POLY_XLU_DISP++, &gBigslimeFrozenVtxDL); - gSPDisplayList(POLY_XLU_DISP++, &gBigslimeVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gBigslimeFrozenMaterialDL); + gSPDisplayList(POLY_XLU_DISP++, gBigslimeModelDL); } // Draw bubbles inside Bigslime @@ -3014,7 +3012,7 @@ void EnBigslime_DrawBigslime(Actor* thisx, PlayState* play) { billboardMtxF->zw = dynamicVtx->n.ob[2] * this->actor.scale.z * bubblesInfoPtr->scaleVtx + this->actor.world.pos.z; gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, &gBigslimeBubbleDL); + gSPDisplayList(POLY_XLU_DISP++, gBigslimeBubbleDL); } } CLOSE_DISPS(play->state.gfxCtx); @@ -3133,12 +3131,12 @@ void EnBigslime_DrawShatteringEffects(EnBigslime* this, PlayState* play) { Matrix_Translate(this->frozenPos.x, this->frozenPos.y, this->frozenPos.z, MTXMODE_NEW); Matrix_Scale(this->shockwaveScale, this->shockwaveScale, this->shockwaveScale, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, &gBigslimeShockwaveDL); + gSPDisplayList(POLY_XLU_DISP++, gBigslimeShockwaveDL); } // Draw Ice Shards AnimatedMat_Draw(play, this->iceShardTexAnim); - gSPDisplayList(POLY_XLU_DISP++, &gBigslimeIceShardDL); + gSPDisplayList(POLY_XLU_DISP++, gBigslimeIceShardDL); for (i = 0; i < BIGSLIME_NUM_ICE_SHARD; i++) { iceShardEffect = &this->iceShardEffect[i]; @@ -3147,7 +3145,7 @@ void EnBigslime_DrawShatteringEffects(EnBigslime* this, PlayState* play) { &iceShardEffect->rot); Matrix_Scale(iceShardEffect->scale, iceShardEffect->scale, iceShardEffect->scale, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, &gBigslimeIceShardVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gBigslimeIceShardVtxDL); } } diff --git a/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c b/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c index 41bd94894..25b59b59b 100644 --- a/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c +++ b/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c @@ -75,7 +75,7 @@ void func_809CCDE0(EnBji01* this, PlayState* play) { s32 pad[2]; Math_Vec3f_Copy(&pitchTarget, &player->actor.world.pos); - pitchTarget.y = player->bodyPartsPos[7].y + 3.0f; + pitchTarget.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; SubS_TrackPointStep(&this->actor.world.pos, &this->actor.focus.pos, this->actor.shape.rot.y, &player->actor.world.pos, &pitchTarget, &this->headZRotStep, &this->headXRotStep, &this->torsoZRotStep, &this->torsoXRotStep, 0x1554, 0x1FFE, 0xE38, 0x1C70); @@ -109,7 +109,7 @@ void func_809CCEE8(EnBji01* this, PlayState* play) { } else { this->moonsTear = (ObjMoonStone*)SubS_FindActor(play, NULL, ACTORCAT_PROP, ACTOR_OBJ_MOON_STONE); } - func_800B8500(&this->actor, play, 60.0f, 10.0f, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, 60.0f, 10.0f, PLAYER_IA_NONE); } } @@ -121,34 +121,34 @@ void func_809CD028(EnBji01* this, PlayState* play) { case SHIKASHI_TYPE_FINISHED_CONVERSATION: switch (gSaveContext.save.playerForm) { case PLAYER_FORM_DEKU: - if (gSaveContext.save.weekEventReg[17] & 0x10) { - if (gSaveContext.save.weekEventReg[74] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_17_10)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_74_80)) { this->textId = 0x5F4; } else { this->textId = 0x5E2; } } else { this->textId = 0x5EC; - gSaveContext.save.weekEventReg[17] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_17_10); } break; case PLAYER_FORM_HUMAN: if (Player_GetMask(play) == PLAYER_MASK_KAFEIS_MASK) { this->textId = 0x236A; - } else if (gSaveContext.save.weekEventReg[74] & 0x10) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_74_10)) { this->textId = 0x5F6; } else { this->textId = 0x5F5; - gSaveContext.save.weekEventReg[74] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_74_10); } break; case PLAYER_FORM_GORON: case PLAYER_FORM_ZORA: - if (gSaveContext.save.weekEventReg[75] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_75_08)) { this->textId = 0x5E4; } else { this->textId = 0x5DC; - gSaveContext.save.weekEventReg[75] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_75_08); } break; } @@ -156,13 +156,13 @@ void func_809CD028(EnBji01* this, PlayState* play) { case SHIKASHI_TYPE_LOOKED_THROUGH_TELESCOPE: switch (gSaveContext.save.playerForm) { case PLAYER_FORM_DEKU: - if (gSaveContext.save.weekEventReg[74] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_74_80)) { this->textId = 0x5F2; } else { this->textId = 0x5F1; } func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, - PLAYER_AP_NONE); + PLAYER_IA_NONE); break; case PLAYER_FORM_HUMAN: this->textId = 0x5F7; diff --git a/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c b/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c index a8bcfdc88..08070b61d 100644 --- a/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c +++ b/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c @@ -143,27 +143,27 @@ void EnBjt_UpdateCollision(EnBjt* this, PlayState* play) { s32 EnBjt_TakeItem(s32 exchangeItem) { switch (exchangeItem) { - case PLAYER_AP_LETTER_TO_KAFEI: + case PLAYER_IA_LETTER_TO_KAFEI: Inventory_DeleteItem(ITEM_LETTER_TO_KAFEI, SLOT(ITEM_LETTER_TO_KAFEI)); break; - case PLAYER_AP_DEED_SWAMP: + case PLAYER_IA_DEED_SWAMP: Inventory_DeleteItem(ITEM_DEED_SWAMP, SLOT(ITEM_DEED_SWAMP)); break; - case PLAYER_AP_DEED_MOUNTAIN: + case PLAYER_IA_DEED_MOUNTAIN: Inventory_DeleteItem(ITEM_DEED_MOUNTAIN, SLOT(ITEM_DEED_MOUNTAIN)); break; - case PLAYER_AP_DEED_OCEAN: + case PLAYER_IA_DEED_OCEAN: Inventory_DeleteItem(ITEM_DEED_OCEAN, SLOT(ITEM_DEED_OCEAN)); break; - case PLAYER_AP_DEED_LAND: + case PLAYER_IA_DEED_LAND: Inventory_DeleteItem(ITEM_DEED_LAND, SLOT(ITEM_DEED_LAND)); break; - case PLAYER_AP_LETTER_MAMA: + case PLAYER_IA_LETTER_MAMA: Inventory_DeleteItem(ITEM_LETTER_MAMA, SLOT(ITEM_LETTER_MAMA)); break; @@ -236,7 +236,7 @@ typedef enum { s32 EnBjt_ChooseBehaviour(Actor* thisx, PlayState* play) { Player* player = GET_PLAYER(play); EnBjt* this = THIS; - s32 itemAP; + PlayerItemAction itemAction; s32 scriptBranch = 0; switch (this->behaviour) { @@ -249,19 +249,20 @@ s32 EnBjt_ChooseBehaviour(Actor* thisx, PlayState* play) { } // Fallthrough case TEXT_STATE_16: - itemAP = func_80123810(play); - if ((itemAP == PLAYER_AP_DEED_LAND) || (itemAP == PLAYER_AP_LETTER_TO_KAFEI) || - (itemAP == PLAYER_AP_DEED_SWAMP) || (itemAP == PLAYER_AP_DEED_MOUNTAIN) || - (itemAP == PLAYER_AP_DEED_OCEAN) || (itemAP == PLAYER_AP_LETTER_MAMA)) { + itemAction = func_80123810(play); + + if ((itemAction == PLAYER_IA_DEED_LAND) || (itemAction == PLAYER_IA_LETTER_TO_KAFEI) || + (itemAction == PLAYER_IA_DEED_SWAMP) || (itemAction == PLAYER_IA_DEED_MOUNTAIN) || + (itemAction == PLAYER_IA_DEED_OCEAN) || (itemAction == PLAYER_IA_LETTER_MAMA)) { EnBjt_ChangeAnim(this, TOILET_HAND_ANIM_WAITING_MORPH); this->playedSfx = false; this->behaviour++; scriptBranch = 1; // Right item - } else if (itemAP < 0) { + } else if (itemAction <= PLAYER_IA_MINUS1) { this->playedSfx = false; this->behaviour++; scriptBranch = 3; // Not showing item - } else if (itemAP != 0) { + } else if (itemAction != PLAYER_IA_NONE) { this->playedSfx = false; this->behaviour++; scriptBranch = 2; // Wrong item @@ -274,9 +275,9 @@ s32 EnBjt_ChooseBehaviour(Actor* thisx, PlayState* play) { break; case TOILET_HAND_BEHAVIOUR_TAKE_ITEM: - if (player->exchangeItemId != PLAYER_AP_NONE) { + if (player->exchangeItemId != PLAYER_IA_NONE) { EnBjt_TakeItem(player->exchangeItemId); - player->exchangeItemId = PLAYER_AP_NONE; + player->exchangeItemId = PLAYER_IA_NONE; } if (EnBjt_Vanish(this)) { this->timer = 60; @@ -389,7 +390,7 @@ void EnBjt_FollowSchedule(EnBjt* this, PlayState* play) { } else if (this->stateFlags & TOILET_HAND_STATE_VISIBLE) { // Vanish if player goes too far away or heart piece given if ((fabsf(this->actor.playerHeightRel) > 70.0f) || (this->actor.xzDistToPlayer > 140.0f) || - (gSaveContext.save.weekEventReg[90] & 0x80)) { + CHECK_WEEKEVENTREG(WEEKEVENTREG_90_80)) { SubS_UpdateFlags(&this->stateFlags, 0, 7); this->playedSfx = false; this->stateFlags &= ~TOILET_HAND_STATE_VISIBLE; @@ -398,7 +399,7 @@ void EnBjt_FollowSchedule(EnBjt* this, PlayState* play) { } else { // Appear if player approaches and heart piece not given if ((fabsf(this->actor.playerHeightRel) < 20.0f) && (this->actor.xzDistToPlayer < 70.0f) && - !(gSaveContext.save.weekEventReg[90] & 0x80)) { + !CHECK_WEEKEVENTREG(WEEKEVENTREG_90_80)) { this->stateFlags |= TOILET_HAND_STATE_APPEARING; this->playedSfx = false; } @@ -445,7 +446,7 @@ void EnBjt_Update(Actor* thisx, PlayState* play) { if (this->scheduleResult != TOILET_HAND_SCH_NONE) { EnBjt_UpdateSkelAnime(this); - func_8013C964(&this->actor, play, 60.0f, 10.0f, PLAYER_AP_NONE, this->stateFlags & 7); + func_8013C964(&this->actor, play, 60.0f, 10.0f, PLAYER_IA_NONE, this->stateFlags & 7); Actor_SetFocus(&this->actor, 26.0f); EnBjt_UpdateCollision(this, play); } diff --git a/src/overlays/actors/ovl_En_Bom/z_en_bom.c b/src/overlays/actors/ovl_En_Bom/z_en_bom.c index 42baf77bf..a25a33904 100644 --- a/src/overlays/actors/ovl_En_Bom/z_en_bom.c +++ b/src/overlays/actors/ovl_En_Bom/z_en_bom.c @@ -228,8 +228,8 @@ void func_80871058(EnBom* this, PlayState* play) { } else { Vec3f* sp58; u32 sp54 = func_800C99D4(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId); - Vec3f sp48; - s16 sp46; + Vec3f slopeNormal; + s16 downwardSlopeYaw; f32 sp40; f32 sp3C; f32 sp38; @@ -253,10 +253,10 @@ void func_80871058(EnBom* this, PlayState* play) { sp40 = Math_SinS(this->actor.world.rot.y) * this->actor.speedXZ; sp3C = Math_CosS(this->actor.world.rot.y) * this->actor.speedXZ; - func_800B75A0(this->actor.floorPoly, &sp48, &sp46); + Actor_GetSlopeDirection(this->actor.floorPoly, &slopeNormal, &downwardSlopeYaw); - sp40 += 3.0f * sp48.x; - sp3C += 3.0f * sp48.z; + sp40 += 3.0f * slopeNormal.x; + sp3C += 3.0f * slopeNormal.z; sp38 = sqrtf(SQ(sp40) + SQ(sp3C)); if ((sp38 < this->actor.speedXZ) || @@ -266,7 +266,7 @@ void func_80871058(EnBom* this, PlayState* play) { } else { this->actor.speedXZ = sp38; } - this->actor.world.rot.y = Math_FAtan2F(sp3C, sp40); + this->actor.world.rot.y = Math_Atan2S_XY(sp3C, sp40); } if (!Math_StepToF(&this->actor.speedXZ, 0.0f, sp58->x)) { @@ -678,9 +678,9 @@ void func_808726DC(PlayState* play, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3, s32 a Math_Vec3f_Copy(&fuseSegmentPtr->pos, arg1); Math_Vec3f_Diff(arg2, arg1, &spCC); - fuseSegmentPtr->rotY = Math_FAtan2F(spCC.z, spCC.x); + fuseSegmentPtr->rotY = Math_Atan2S_XY(spCC.z, spCC.x); distXZ = sqrtf(SQXZ(spCC)); - fuseSegmentPtr->rotX = Math_FAtan2F(distXZ, spCC.y); + fuseSegmentPtr->rotX = Math_Atan2S_XY(distXZ, spCC.y); spB0 = (arg4 / 240) + 1; @@ -718,9 +718,9 @@ void func_808726DC(PlayState* play, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3, s32 a spCC.z = 0.0f; } - fuseSegmentPtr2->rotY = Math_FAtan2F(spCC.z, spCC.x); + fuseSegmentPtr2->rotY = Math_Atan2S_XY(spCC.z, spCC.x); distXZ = sqrtf(SQXZ(spCC)); - fuseSegmentPtr2->rotX = Math_FAtan2F(distXZ, spCC.y); + fuseSegmentPtr2->rotX = Math_Atan2S_XY(distXZ, spCC.y); fuseSegmentPtr2->rotY = (s16)CLAMP(BINANG_SUB(fuseSegmentPtr2->rotY, fuseSegmentPtr->rotY), -8000, 8000) + fuseSegmentPtr->rotY; diff --git a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c index 9dc36ff6c..9b1f45a20 100644 --- a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c +++ b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c @@ -97,7 +97,7 @@ void EnBomBowlMan_Init(Actor* thisx, PlayState* play) { this->path = SubS_GetPathByIndex(play, this->unk_29A, 0x3F); this->unk_2C8 = 80.0f; - if ((gSaveContext.save.entrance == ENTRANCE(EAST_CLOCK_TOWN, 2)) && (gSaveContext.save.weekEventReg[73] & 0x80) && + if ((gSaveContext.save.entrance == ENTRANCE(EAST_CLOCK_TOWN, 2)) && CHECK_WEEKEVENTREG(WEEKEVENTREG_73_80) && !CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { this->unk_2D6 = this->actor.cutscene; if (this->unk_2D6 == 0) { @@ -202,8 +202,8 @@ void func_809C4BC4(EnBomBowlMan* this, PlayState* play) { func_809C493C(this, 3, 1.0f); this->unk_2D4 = this->actor.yawTowardsPlayer; this->unk_290 = this->actor.yawTowardsPlayer; - gSaveContext.save.weekEventReg[73] &= (u8)~0x10; - gSaveContext.save.weekEventReg[85] &= (u8)~2; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_73_10); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_85_02); this->unk_29C = 0; this->actionFunc = func_809C4DA4; } @@ -337,13 +337,13 @@ void func_809C51B4(EnBomBowlMan* this, PlayState* play) { play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_86; gSaveContext.nextTransitionType = TRANS_TYPE_03; - gSaveContext.save.weekEventReg[75] &= (u8)~0x40; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_75_40); if (player->transformation == PLAYER_FORM_HUMAN) { - gSaveContext.save.weekEventReg[84] |= 0x80; - gSaveContext.save.weekEventReg[77] &= (u8)~2; + SET_WEEKEVENTREG(WEEKEVENTREG_84_80); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_77_02); } else { - gSaveContext.save.weekEventReg[73] |= 0x20; - gSaveContext.save.weekEventReg[85] &= (u8)~1; + SET_WEEKEVENTREG(WEEKEVENTREG_73_20); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_85_01); } } } @@ -365,7 +365,7 @@ void func_809C5310(EnBomBowlMan* this, PlayState* play) { if (player->actor.world.pos.x < 1510.0f) { if (player->transformation != PLAYER_FORM_DEKU) { if (this->actor.xzDistToPlayer < this->unk_2C8) { - func_800B7298(play, &this->actor, 7); + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); func_809C53A4(this); } } else { @@ -401,7 +401,7 @@ void func_809C5408(EnBomBowlMan* this, PlayState* play) { void func_809C5524(EnBomBowlMan* this, PlayState* play) { this->actor.textId = 0x730; - if (!(gSaveContext.save.weekEventReg[85] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_85_02)) { this->actor.textId = 0x72F; } func_809C493C(this, 3, 1.0f); @@ -423,7 +423,7 @@ void func_809C5598(EnBomBowlMan* this, PlayState* play) { } else if (this->actor.textId == 0x734) { this->actor.textId = 0x715; } else if (this->actor.textId == 0x715) { - func_800B7298(play, &this->actor, 6); + func_800B7298(play, &this->actor, PLAYER_CSMODE_6); func_809C493C(this, 17, 1.0f); func_809C59A4(this, play); return; @@ -435,7 +435,7 @@ void func_809C5598(EnBomBowlMan* this, PlayState* play) { func_80151BB4(play, 0x24); func_80151BB4(play, 0x25); func_80151BB4(play, 0); - func_800B7298(play, &this->actor, 7); + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); this->actionFunc = func_809C5738; return; } @@ -483,8 +483,8 @@ void func_809C5738(EnBomBowlMan* this, PlayState* play) { (this->path != NULL)) { this->unk_298++; if (this->unk_298 >= this->path->count) { - gSaveContext.save.weekEventReg[84] |= 0x80; - gSaveContext.save.weekEventReg[83] &= (u8)~4; + SET_WEEKEVENTREG(WEEKEVENTREG_84_80); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_83_04); ActorCutscene_Stop(this->unk_2D6); Actor_Kill(&this->actor); return; @@ -510,7 +510,7 @@ void func_809C59F0(EnBomBowlMan* this, PlayState* play) { } else { this->actor.textId = 0x716; } - func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); this->actionFunc = func_809C5AA4; } else { Actor_PickUp(&this->actor, play, GI_BOMBERS_NOTEBOOK, 300.0f, 300.0f); @@ -525,7 +525,7 @@ void func_809C5AA4(EnBomBowlMan* this, PlayState* play) { this->actionFunc = func_809C5598; } } else { - func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Bombal/z_en_bombal.c b/src/overlays/actors/ovl_En_Bombal/z_en_bombal.c index 91e7fbd4c..bcb7cb534 100644 --- a/src/overlays/actors/ovl_En_Bombal/z_en_bombal.c +++ b/src/overlays/actors/ovl_En_Bombal/z_en_bombal.c @@ -92,8 +92,8 @@ void func_80C05B3C(EnBombal* this, PlayState* play) { if (this->collider.base.acFlags & AC_HIT) { player = GET_PLAYER(play); this->collider.base.acFlags &= ~AC_HIT; - if (!(gSaveContext.save.weekEventReg[75] & 0x40) && !(gSaveContext.save.weekEventReg[73] & 0x10) && - !(gSaveContext.save.weekEventReg[85] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_75_40) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_73_10) && + !CHECK_WEEKEVENTREG(WEEKEVENTREG_85_02)) { player->stateFlags1 |= ACTOR_FLAG_20; this->actor.flags |= ACTOR_FLAG_100000; } @@ -107,8 +107,8 @@ void func_80C05C44(EnBombal* this, PlayState* play) { s32 i; Vec3f pos; - if (!(gSaveContext.save.weekEventReg[75] & 0x40) && !(gSaveContext.save.weekEventReg[73] & 0x10) && - !(gSaveContext.save.weekEventReg[85] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_75_40) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_73_10) && + !CHECK_WEEKEVENTREG(WEEKEVENTREG_85_02)) { if (ActorCutscene_GetCurrentIndex() == 0x7C) { ActorCutscene_Stop(0x7C); ActorCutscene_SetIntentToPlay(this->cutscene); @@ -135,7 +135,7 @@ void func_80C05C44(EnBombal* this, PlayState* play) { EnBombal_InitEffects(this, &pos, 10); } - gSaveContext.save.weekEventReg[83] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_83_04); Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_MUJURA_BALLOON_BROKEN); this->timer = 30; this->isPopped = true; @@ -145,8 +145,8 @@ void func_80C05C44(EnBombal* this, PlayState* play) { void func_80C05DE8(EnBombal* this, PlayState* play) { if (this->timer == 0) { - if (!(gSaveContext.save.weekEventReg[75] & 0x40) && !(gSaveContext.save.weekEventReg[73] & 0x10) && - !(gSaveContext.save.weekEventReg[85] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_75_40) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_73_10) && + !CHECK_WEEKEVENTREG(WEEKEVENTREG_85_02)) { ActorCutscene_Stop(this->cutscene); } Actor_Kill(&this->actor); diff --git a/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c b/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c index 1d4d646f8..2ca62ef0a 100644 --- a/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c +++ b/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c @@ -104,20 +104,20 @@ void EnBombers_Init(Actor* thisx, PlayState* play) { this->unk_2BE = ENBOMBERS_GET_F(&this->actor); if (this->unk_2BC == ENBOMBERS_F0_0) { - if ((gSaveContext.save.weekEventReg[73] & 0x10) || (gSaveContext.save.weekEventReg[85] & 2)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_10) || CHECK_WEEKEVENTREG(WEEKEVENTREG_85_02)) { Actor_Kill(&this->actor); return; } this->unk_2BE++; func_80C03ACC(this); - } else if (((gSaveContext.save.weekEventReg[73] & 0x10) || (gSaveContext.save.weekEventReg[85] & 2)) && - (((this->unk_2BE == ENBOMBERS_F_0) && (gSaveContext.save.weekEventReg[76] & 1)) || - ((this->unk_2BE == ENBOMBERS_F_1) && (gSaveContext.save.weekEventReg[76] & 2)) || - ((this->unk_2BE == ENBOMBERS_F_2) && (gSaveContext.save.weekEventReg[76] & 4)) || - ((this->unk_2BE == ENBOMBERS_F_3) && (gSaveContext.save.weekEventReg[76] & 8)) || - ((this->unk_2BE == ENBOMBERS_F_4) && (gSaveContext.save.weekEventReg[76] & 0x10)))) { - if (gSaveContext.save.weekEventReg[75] & 0x40) { + } else if ((CHECK_WEEKEVENTREG(WEEKEVENTREG_73_10) || CHECK_WEEKEVENTREG(WEEKEVENTREG_85_02)) && + (((this->unk_2BE == ENBOMBERS_F_0) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_01)) || + ((this->unk_2BE == ENBOMBERS_F_1) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_02)) || + ((this->unk_2BE == ENBOMBERS_F_2) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_04)) || + ((this->unk_2BE == ENBOMBERS_F_3) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_08)) || + ((this->unk_2BE == ENBOMBERS_F_4) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_10)))) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_75_40)) { if (this->unk_2BE == ENBOMBERS_F_0) { EnBomBowlMan* bomBowlMan = (EnBomBowlMan*)Actor_Spawn( &play->actorCtx, play, ACTOR_EN_BOM_BOWL_MAN, this->actor.world.pos.x, this->actor.world.pos.y, @@ -131,11 +131,11 @@ void EnBombers_Init(Actor* thisx, PlayState* play) { while (cs != -1) { bomBowlMan->unk_2CC[i] = cs; cs = ActorCutscene_GetAdditionalCutscene(cs); i++; } // clang-format on - gSaveContext.save.weekEventReg[76] &= (u8)~1; - gSaveContext.save.weekEventReg[76] &= (u8)~2; - gSaveContext.save.weekEventReg[76] &= (u8)~4; - gSaveContext.save.weekEventReg[76] &= (u8)~8; - gSaveContext.save.weekEventReg[76] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_76_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_76_02); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_76_04); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_76_08); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_76_10); } } Actor_Kill(&this->actor); @@ -182,7 +182,7 @@ void func_80C039A8(EnBombers* this, PlayState* play) { switch (player->transformation) { case PLAYER_FORM_HUMAN: this->actor.textId = 0x73D; - if (gSaveContext.save.weekEventReg[84] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_84_80)) { this->actor.textId = 0x74B; } break; @@ -196,14 +196,14 @@ void func_80C039A8(EnBombers* this, PlayState* play) { break; case PLAYER_FORM_DEKU: - if (gSaveContext.save.weekEventReg[73] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_20)) { this->actor.textId = 0x75A; - } else if (gSaveContext.save.weekEventReg[73] & 0x40) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_40)) { this->actor.textId = 0x749; - if (((this->unk_2BE == ENBOMBERS_F_1) && (gSaveContext.save.weekEventReg[74] & 1)) || - ((this->unk_2BE == ENBOMBERS_F_2) && (gSaveContext.save.weekEventReg[74] & 2)) || - ((this->unk_2BE == ENBOMBERS_F_3) && (gSaveContext.save.weekEventReg[74] & 4)) || - ((this->unk_2BE == ENBOMBERS_F_4) && (gSaveContext.save.weekEventReg[74] & 8))) { + if (((this->unk_2BE == ENBOMBERS_F_1) && CHECK_WEEKEVENTREG(WEEKEVENTREG_74_01)) || + ((this->unk_2BE == ENBOMBERS_F_2) && CHECK_WEEKEVENTREG(WEEKEVENTREG_74_02)) || + ((this->unk_2BE == ENBOMBERS_F_3) && CHECK_WEEKEVENTREG(WEEKEVENTREG_74_04)) || + ((this->unk_2BE == ENBOMBERS_F_4) && CHECK_WEEKEVENTREG(WEEKEVENTREG_74_08))) { this->actor.textId = 0x74A; } } else { @@ -395,22 +395,22 @@ void func_80C03FAC(EnBombers* this, PlayState* play) { } else if (this->actor.textId == 0x748) { switch (this->unk_2BE) { case ENBOMBERS_F_1: - gSaveContext.save.weekEventReg[74] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_74_01); break; case ENBOMBERS_F_2: - gSaveContext.save.weekEventReg[74] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_74_02); break; case ENBOMBERS_F_3: - gSaveContext.save.weekEventReg[74] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_74_04); break; case ENBOMBERS_F_4: - gSaveContext.save.weekEventReg[74] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_74_08); break; } - gSaveContext.save.weekEventReg[73] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_73_40); } switch (sp2A) { diff --git a/src/overlays/actors/ovl_En_Bombers2/z_en_bombers2.c b/src/overlays/actors/ovl_En_Bombers2/z_en_bombers2.c index 632ff3b67..74575628f 100644 --- a/src/overlays/actors/ovl_En_Bombers2/z_en_bombers2.c +++ b/src/overlays/actors/ovl_En_Bombers2/z_en_bombers2.c @@ -94,7 +94,8 @@ void EnBombers2_Init(Actor* thisx, PlayState* play) { this->jointTable, OBJECT_CS_LIMB_MAX); this->actor.targetMode = 6; Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit); - if ((gSaveContext.save.weekEventReg[73] & 0x80) || (gSaveContext.save.entrance == ENTRANCE(EAST_CLOCK_TOWN, 2))) { + + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_80) || (gSaveContext.save.entrance == ENTRANCE(EAST_CLOCK_TOWN, 2))) { this->actor.world.pos.x += Math_SinS(this->actor.home.rot.y + 0xC100) * 50.0f; cos = Math_CosS(this->actor.home.rot.y + 0xC100) * 50.0f; this->unk_2AC = 1; @@ -165,7 +166,7 @@ void func_80C04BA0(EnBombers2* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->unk_2B6 = this->actor.world.rot.y; - gSaveContext.save.weekEventReg[86] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_86_02); func_80C04D00(this); return; } @@ -329,7 +330,7 @@ void func_80C0520C(EnBombers2* this, PlayState* play) { EnBombers2_ChangeAnim(this, 6, 1.0f); this->unk_2A8 = 0; this->unk_2C0 = 1; - gSaveContext.save.weekEventReg[73] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_73_80); ActorCutscene_Stop(this->cutscene); this->unk_2AC = 1; this->actor.textId = sTextIds[this->textIdIndex]; diff --git a/src/overlays/actors/ovl_En_Bombf/z_en_bombf.c b/src/overlays/actors/ovl_En_Bombf/z_en_bombf.c index fd5ce0bf6..0b5ffff54 100644 --- a/src/overlays/actors/ovl_En_Bombf/z_en_bombf.c +++ b/src/overlays/actors/ovl_En_Bombf/z_en_bombf.c @@ -451,15 +451,15 @@ void EnBombf_Update(Actor* thisx, PlayState* play) { } Gfx* func_808AF86C(GraphicsContext* gfxCtx, PlayState* play) { - Gfx* head = GRAPH_ALLOC(gfxCtx, sizeof(Gfx) * 6); - Gfx* gfx = head; + Gfx* gfxHead = GRAPH_ALLOC(gfxCtx, 5 * sizeof(Gfx)); + Gfx* gfx = gfxHead; Matrix_ReplaceRotation(&play->billboardMtxF); gSPMatrix(gfx++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPEndDisplayList(gfx++); - return head; + return gfxHead; } void EnBombf_Draw(Actor* thisx, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c b/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c index a9d81c10b..126c293c3 100644 --- a/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c +++ b/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c @@ -128,7 +128,7 @@ void EnBomjima_Init(Actor* thisx, PlayState* play) { SkelAnime_InitFlex(play, &this->skelAnime, &object_cs_Skel_00F82C, &gBomberIdleAnim, this->jointTable, this->morphTable, OBJECT_CS_LIMB_MAX); Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit); - gSaveContext.save.weekEventReg[83] &= (u8)~4; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_83_04); this->actor.targetMode = 0; this->unk_2E6 = ENBOMJIMA_GET_F0(&this->actor); this->unk_2E4 = ENBOMJIMA_GET_F(&this->actor); @@ -150,8 +150,8 @@ void EnBomjima_Init(Actor* thisx, PlayState* play) { func_80BFFCFC(this); } - if ((gSaveContext.save.weekEventReg[75] & 0x40) || (gSaveContext.save.weekEventReg[73] & 0x10) || - (gSaveContext.save.weekEventReg[85] & 2)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_75_40) || CHECK_WEEKEVENTREG(WEEKEVENTREG_73_10) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_85_02)) { Actor_Kill(&this->actor); } } @@ -177,12 +177,12 @@ void func_80BFE32C(EnBomjima* this, PlayState* play, s32 arg2) { case 0: if (player->transformation == PLAYER_FORM_DEKU) { this->actor.textId = 0x759; - if (!(gSaveContext.save.weekEventReg[73] & 0x20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_73_20)) { this->actor.textId = 0x708; } } else if (player->transformation == PLAYER_FORM_HUMAN) { this->actor.textId = 0x75A; - if (!(gSaveContext.save.weekEventReg[84] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_84_80)) { this->actor.textId = 0x719; } } else if ((this->unk_2C8 == 1) || (this->unk_2C8 == 2)) { @@ -362,18 +362,18 @@ void func_80BFEB64(EnBomjima* this, PlayState* play) { func_80BFE32C(this, play, 0); if (player->transformation == PLAYER_FORM_DEKU) { - if (gSaveContext.save.weekEventReg[73] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_20)) { this->unk_2C8 = 3; func_80BFE32C(this, play, 3); - } else if (gSaveContext.save.weekEventReg[77] & 2) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_77_02)) { this->unk_2C8 = 11; func_80BFE32C(this, play, 2); } } else if (player->transformation == PLAYER_FORM_HUMAN) { - if (gSaveContext.save.weekEventReg[84] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_84_80)) { this->unk_2C8 = 0; func_80BFE32C(this, play, 3); - } else if (gSaveContext.save.weekEventReg[85] & 1) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_85_01)) { this->unk_2C8 = 11; func_80BFE32C(this, play, 2); } @@ -472,7 +472,7 @@ void func_80BFF03C(EnBomjima* this, PlayState* play) { ActorCutscene_SetIntentToPlay(this->cutscenes[0]); } else { player->stateFlags1 &= ~PLAYER_STATE1_20; - gSaveContext.save.weekEventReg[83] &= (u8)~4; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_83_04); this->actor.world.rot.y = Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)); this->unk_2DC = Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)); ActorCutscene_StartAndSetUnkLinkFields(this->cutscenes[0], &this->actor); @@ -518,11 +518,11 @@ void func_80BFF174(EnBomjima* this, PlayState* play) { } if (player->transformation == PLAYER_FORM_DEKU) { - if (gSaveContext.save.weekEventReg[73] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_20)) { this->unk_2C8 = 3; func_80BFE32C(this, play, 3); } else { - if (!(gSaveContext.save.weekEventReg[77] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_77_02)) { if (this->unk_2E8 == 0) { this->unk_2C8 = 4; } else { @@ -534,11 +534,11 @@ void func_80BFF174(EnBomjima* this, PlayState* play) { func_80BFE32C(this, play, 2); } } else if (player->transformation == PLAYER_FORM_HUMAN) { - if (gSaveContext.save.weekEventReg[84] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_84_80)) { this->unk_2C8 = 0; func_80BFE32C(this, play, 3); } else { - if (!(gSaveContext.save.weekEventReg[85] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_85_01)) { if (this->unk_2EA == 0) { this->unk_2C8 = 4; } else { @@ -578,7 +578,7 @@ void func_80BFF430(EnBomjima* this, PlayState* play) { bombal->scale = 0.0f; bombal->cutscene = this->bombalCutscene; Actor_ChangeFocus(&this->actor, play, &bombal->actor); - gSaveContext.save.weekEventReg[83] &= (u8)~4; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_83_04); func_80BFE65C(this); func_801477B4(play); this->actionFunc = func_80BFEA94; @@ -701,24 +701,24 @@ void func_80BFF9B0(EnBomjima* this, PlayState* play) { D_80C009F0 = 0; this->unk_2C8 = 9; if (player->transformation == PLAYER_FORM_DEKU) { - gSaveContext.save.weekEventReg[73] |= 0x10; - gSaveContext.save.weekEventReg[77] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_73_10); + SET_WEEKEVENTREG(WEEKEVENTREG_77_02); } else { - gSaveContext.save.weekEventReg[85] |= 2; - gSaveContext.save.weekEventReg[85] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_85_02); + SET_WEEKEVENTREG(WEEKEVENTREG_85_01); } - gSaveContext.save.weekEventReg[11] &= (u8)~1; - gSaveContext.save.weekEventReg[11] &= (u8)~2; - gSaveContext.save.weekEventReg[11] &= (u8)~4; - gSaveContext.save.weekEventReg[11] &= (u8)~8; - gSaveContext.save.weekEventReg[11] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_11_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_11_02); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_11_04); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_11_08); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_11_10); - gSaveContext.save.weekEventReg[76] &= (u8)~1; - gSaveContext.save.weekEventReg[76] &= (u8)~2; - gSaveContext.save.weekEventReg[76] &= (u8)~4; - gSaveContext.save.weekEventReg[76] &= (u8)~8; - gSaveContext.save.weekEventReg[76] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_76_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_76_02); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_76_04); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_76_08); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_76_10); gSaveContext.save.bombersCaughtNum = 0; gSaveContext.save.bombersCaughtOrder[0] = 0; diff --git a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c index ddf73f812..c5b7c4929 100644 --- a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c +++ b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c @@ -115,38 +115,38 @@ void EnBomjimb_Init(Actor* thisx, PlayState* play) { this->unk_2C6 = ENBOMJIMB_F0_0; } - if ((gSaveContext.save.weekEventReg[73] & 0x10) || (gSaveContext.save.weekEventReg[85] & 2)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_10) || CHECK_WEEKEVENTREG(WEEKEVENTREG_85_02)) { switch (this->unk_2C8) { case ENBOMJIMB_F_0: - if (gSaveContext.save.weekEventReg[11] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_11_01)) { Actor_Kill(&this->actor); return; } break; case ENBOMJIMB_F_1: - if (gSaveContext.save.weekEventReg[11] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_11_02)) { Actor_Kill(&this->actor); return; } break; case ENBOMJIMB_F_2: - if (gSaveContext.save.weekEventReg[11] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_11_04)) { Actor_Kill(&this->actor); return; } break; case ENBOMJIMB_F_3: - if (gSaveContext.save.weekEventReg[11] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_11_08)) { Actor_Kill(&this->actor); return; } break; case ENBOMJIMB_F_4: - if (gSaveContext.save.weekEventReg[11] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_11_10)) { Actor_Kill(&this->actor); return; } @@ -154,8 +154,8 @@ void EnBomjimb_Init(Actor* thisx, PlayState* play) { } } - if ((!(gSaveContext.save.weekEventReg[73] & 0x10) && !(gSaveContext.save.weekEventReg[85] & 2)) || - (gSaveContext.save.weekEventReg[75] & 0x40)) { + if ((!CHECK_WEEKEVENTREG(WEEKEVENTREG_73_10) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_85_02)) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_75_40)) { Actor_Kill(&this->actor); return; } @@ -674,8 +674,8 @@ void func_80C02740(EnBomjimb* this, PlayState* play) { return; } - if (((player->transformation == PLAYER_FORM_DEKU) && !(gSaveContext.save.weekEventReg[73] & 0x10)) || - ((player->transformation == PLAYER_FORM_HUMAN) && !(gSaveContext.save.weekEventReg[85] & 2))) { + if (((player->transformation == PLAYER_FORM_DEKU) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_73_10)) || + ((player->transformation == PLAYER_FORM_HUMAN) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_85_02))) { func_80C0113C(this, 17, 1.0f); Message_StartTextbox(play, 0x72E, &this->actor); player->stateFlags1 |= PLAYER_STATE1_10000000; @@ -698,28 +698,28 @@ void func_80C02740(EnBomjimb* this, PlayState* play) { switch (this->unk_2C8) { case ENBOMJIMB_F_0: - gSaveContext.save.weekEventReg[76] |= 1; - gSaveContext.save.weekEventReg[11] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_76_01); + SET_WEEKEVENTREG(WEEKEVENTREG_11_01); break; case ENBOMJIMB_F_1: - gSaveContext.save.weekEventReg[76] |= 2; - gSaveContext.save.weekEventReg[11] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_76_02); + SET_WEEKEVENTREG(WEEKEVENTREG_11_02); break; case ENBOMJIMB_F_2: - gSaveContext.save.weekEventReg[76] |= 4; - gSaveContext.save.weekEventReg[11] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_76_04); + SET_WEEKEVENTREG(WEEKEVENTREG_11_04); break; case ENBOMJIMB_F_3: - gSaveContext.save.weekEventReg[76] |= 8; - gSaveContext.save.weekEventReg[11] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_76_08); + SET_WEEKEVENTREG(WEEKEVENTREG_11_08); break; case ENBOMJIMB_F_4: - gSaveContext.save.weekEventReg[76] |= 0x10; - gSaveContext.save.weekEventReg[11] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_76_10); + SET_WEEKEVENTREG(WEEKEVENTREG_11_10); break; } @@ -801,8 +801,8 @@ void func_80C02CA4(EnBomjimb* this, PlayState* play) { play->transitionType = TRANS_TYPE_86; gSaveContext.nextTransitionType = TRANS_TYPE_03; } - gSaveContext.save.weekEventReg[75] |= 0x40; - gSaveContext.save.weekEventReg[83] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_75_40); + SET_WEEKEVENTREG(WEEKEVENTREG_83_04); this->actionFunc = func_80C02DAC; } diff --git a/src/overlays/actors/ovl_En_Box/z_en_box.c b/src/overlays/actors/ovl_En_Box/z_en_box.c index 0c345aa50..33dd4f69f 100644 --- a/src/overlays/actors/ovl_En_Box/z_en_box.c +++ b/src/overlays/actors/ovl_En_Box/z_en_box.c @@ -53,8 +53,8 @@ void func_80868B74(EnBox* this, PlayState* play); void EnBox_WaitOpen(EnBox* this, PlayState* play); void EnBox_Open(EnBox* this, PlayState* play); -void func_80867FBC(func_80867BDC_a0* arg0, PlayState* play, s32 arg2); -void func_80867FE4(func_80867BDC_a0* arg0, PlayState* play); +void func_80867FBC(struct_80867BDC_a0* arg0, PlayState* play, s32 arg2); +void func_80867FE4(struct_80867BDC_a0* arg0, PlayState* play); ActorInit En_Box_InitVars = { ACTOR_EN_BOX, @@ -87,7 +87,7 @@ void EnBox_SetupAction(EnBox* this, EnBoxActionFunc func) { this->actionFunc = func; } -void func_80867BDC(func_80867BDC_a0* arg0, PlayState* play, Vec3f* pos) { +void func_80867BDC(struct_80867BDC_a0* arg0, PlayState* play, Vec3f* pos) { arg0->pos = *pos; arg0->unk_0C = NULL; arg0->unk_10 = NULL; @@ -96,7 +96,7 @@ void func_80867BDC(func_80867BDC_a0* arg0, PlayState* play, Vec3f* pos) { arg0->unk_1C = 0; } -void func_80867C14(func_80867BDC_a0* arg0, PlayState* play) { +void func_80867C14(struct_80867BDC_a0* arg0, PlayState* play) { arg0->unk_18++; if (arg0->unk_18 > 85) { arg0->unk_18 = 85; @@ -115,7 +115,7 @@ void func_80867C14(func_80867BDC_a0* arg0, PlayState* play) { arg0->unk_14++; } -void func_80867C8C(func_80867BDC_a0* arg0, PlayState* play) { +void func_80867C8C(struct_80867BDC_a0* arg0, PlayState* play) { s32 temp_s6 = arg0->unk_18 - arg0->unk_1C; s32 i; f32 pad; @@ -146,7 +146,7 @@ void func_80867C8C(func_80867BDC_a0* arg0, PlayState* play) { func_8012C2DC(play->state.gfxCtx); Matrix_Mult(&play->billboardMtxF, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gOwlStatueWhiteFlashDL); + gSPDisplayList(POLY_XLU_DISP++, gEffFlash1DL); } Matrix_Pop(); gSPMatrix(POLY_XLU_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -154,13 +154,13 @@ void func_80867C8C(func_80867BDC_a0* arg0, PlayState* play) { } } -void func_80867FBC(func_80867BDC_a0* arg0, PlayState* play, s32 arg2) { +void func_80867FBC(struct_80867BDC_a0* arg0, PlayState* play, s32 arg2) { arg0->unk_0C = func_80867C14; arg0->unk_10 = func_80867C8C; arg0->unk_20 = arg2; } -void func_80867FE4(func_80867BDC_a0* arg0, PlayState* play) { +void func_80867FE4(struct_80867BDC_a0* arg0, PlayState* play) { arg0->unk_0C = NULL; arg0->unk_10 = NULL; func_80867BDC(arg0, play, &arg0->pos); @@ -434,9 +434,9 @@ void func_80868B74(EnBox* this, PlayState* play) { this->unk_1A0++; if ((this->cutsceneIdxA != -1) && ActorCutscene_GetCurrentIndex() == this->cutsceneIdxA) { if (this->unk_1A0 == 2) { - func_800B724C(play, &this->dyna.actor, 4); + func_800B724C(play, &this->dyna.actor, PLAYER_CSMODE_4); } else if (this->unk_1A0 == 22) { - func_800B724C(play, &this->dyna.actor, 1); + func_800B724C(play, &this->dyna.actor, PLAYER_CSMODE_1); } } } else if (this->unk_1A0 < 60) { @@ -658,32 +658,34 @@ void EnBox_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, } Gfx* EnBox_SetRenderMode1(GraphicsContext* gfxCtx) { - Gfx* dl = GRAPH_ALLOC(gfxCtx, sizeof(Gfx) * 2); + Gfx* gfxHead = GRAPH_ALLOC(gfxCtx, sizeof(Gfx)); + Gfx* gfx = gfxHead; - gSPEndDisplayList(dl); - return dl; + gSPEndDisplayList(gfx++); + + return gfxHead; } Gfx* EnBox_SetRenderMode2(GraphicsContext* gfxCtx) { - Gfx* dl = GRAPH_ALLOC(gfxCtx, sizeof(Gfx) * 2); - Gfx* cur = dl; + Gfx* gfxHead = GRAPH_ALLOC(gfxCtx, 2 * sizeof(Gfx)); + Gfx* gfx = gfxHead; gDPSetRenderMode( - cur++, AA_EN | Z_CMP | Z_UPD | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | ZMODE_XLU | FORCE_BL | G_RM_FOG_SHADE_A, + gfx++, AA_EN | Z_CMP | Z_UPD | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | ZMODE_XLU | FORCE_BL | G_RM_FOG_SHADE_A, AA_EN | Z_CMP | Z_UPD | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | ZMODE_XLU | FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); - gSPEndDisplayList(cur++); - return dl; + gSPEndDisplayList(gfx++); + return gfxHead; } Gfx* EnBox_SetRenderMode3(GraphicsContext* gfxCtx) { - Gfx* dl = GRAPH_ALLOC(gfxCtx, sizeof(Gfx) * 2); - Gfx* cur = dl; + Gfx* gfxHead = GRAPH_ALLOC(gfxCtx, 2 * sizeof(Gfx)); + Gfx* gfx = gfxHead; - gDPSetRenderMode(cur++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2); - gSPEndDisplayList(cur++); - return dl; + gDPSetRenderMode(gfx++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2); + gSPEndDisplayList(gfx++); + return gfxHead; } void EnBox_Draw(Actor* thisx, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Box/z_en_box.h b/src/overlays/actors/ovl_En_Box/z_en_box.h index 432025f14..9cb5af18d 100644 --- a/src/overlays/actors/ovl_En_Box/z_en_box.h +++ b/src/overlays/actors/ovl_En_Box/z_en_box.h @@ -5,12 +5,12 @@ #include "objects/object_box/object_box.h" struct EnBox; -struct func_80867BDC_a0; +struct struct_80867BDC_a0; typedef void (*EnBoxActionFunc)(struct EnBox*, PlayState*); -typedef void (*EnBoxUnkFunc)(struct func_80867BDC_a0* arg0, PlayState* play); +typedef void (*EnBoxUnkFunc)(struct struct_80867BDC_a0* arg0, PlayState* play); -typedef struct func_80867BDC_a0 { +typedef struct struct_80867BDC_a0 { /* 0x00 */ Vec3f pos; /* 0x0C */ EnBoxUnkFunc unk_0C; /* 0x10 */ EnBoxUnkFunc unk_10; @@ -18,7 +18,7 @@ typedef struct func_80867BDC_a0 { /* 0x18 */ s32 unk_18; /* 0x1C */ s32 unk_1C; /* 0x20 */ s32 unk_20; -} func_80867BDC_a0; //size 0x24 +} struct_80867BDC_a0; // size 0x24 typedef enum { /* 0 */ ENBOX_TYPE_BIG, // big @@ -59,7 +59,7 @@ typedef struct EnBox { /* 0x1F1 */ u8 type; /* 0x1F2 */ u8 iceSmokeTimer; /* 0x1F3 */ s8 unk_1F3; - /* 0x1F4 */ func_80867BDC_a0 unk_1F4; + /* 0x1F4 */ struct_80867BDC_a0 unk_1F4; /* 0x218 */ s16 cutsceneIdxA; /* 0x21A */ s16 cutsceneIdxB; /* 0x21C */ s32 getItemId; diff --git a/src/overlays/actors/ovl_En_Butte/z_en_butte.c b/src/overlays/actors/ovl_En_Butte/z_en_butte.c index 17c7e5802..eb3365b83 100644 --- a/src/overlays/actors/ovl_En_Butte/z_en_butte.c +++ b/src/overlays/actors/ovl_En_Butte/z_en_butte.c @@ -155,7 +155,7 @@ void func_8091C178(EnButte* this, PlayState* play) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, 200, 200, 180, sp48); gDPSetEnvColor(POLY_XLU_DISP++, 200, 200, 210, 255); - gSPDisplayList(POLY_XLU_DISP++, gOwlStatueWhiteFlashDL); + gSPDisplayList(POLY_XLU_DISP++, gEffFlash1DL); CLOSE_DISPS(play->state.gfxCtx); } @@ -287,7 +287,8 @@ void func_8091C794(EnButte* this, PlayState* play) { func_8091C0A0(this, &D_8091D324[this->unk_24E]); } - if ((ENBUTTE_GET_1(&this->actor) == ENBUTTE_1) && (player->itemActionParam == 7) && (this->unk_252 <= 0) && + if ((ENBUTTE_GET_1(&this->actor) == ENBUTTE_1) && (player->heldItemAction == PLAYER_IA_STICK) && + (this->unk_252 <= 0) && ((Math3D_XZDistanceSquared(player->actor.world.pos.x, player->actor.world.pos.z, this->actor.home.pos.x, this->actor.home.pos.z) < SQ(120.0f)) || (this->actor.xzDistToPlayer < 60.0f))) { @@ -355,7 +356,7 @@ void func_8091CBB4(EnButte* this, PlayState* play) { distSq = Math3D_XZDistanceSquared(this->actor.world.pos.x, this->actor.world.pos.z, this->actor.home.pos.x, this->actor.home.pos.z); - if ((player->itemActionParam != 7) || !(fabsf(player->actor.speedXZ) < 1.8f) || (this->unk_252 > 0) || + if ((player->heldItemAction != PLAYER_IA_STICK) || !(fabsf(player->actor.speedXZ) < 1.8f) || (this->unk_252 > 0) || !(distSq < SQ(320.0f))) { func_8091C748(this); } else if ((distSq > SQ(240.0f)) && diff --git a/src/overlays/actors/ovl_En_Cha/z_en_cha.c b/src/overlays/actors/ovl_En_Cha/z_en_cha.c index edf68582f..d32fe32ac 100644 --- a/src/overlays/actors/ovl_En_Cha/z_en_cha.c +++ b/src/overlays/actors/ovl_En_Cha/z_en_cha.c @@ -61,7 +61,7 @@ void EnCha_Init(Actor* thisx, PlayState* play) { this->actor.home.rot.z = 0; this->actionFunc = EnCha_Idle; this->actor.home.rot.x = this->actor.home.rot.z; - gSaveContext.save.weekEventReg[60] &= (u8)~4; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_60_04); } void EnCha_Destroy(Actor* thisx, PlayState* play) { @@ -83,16 +83,16 @@ void EnCha_Ring(EnCha* this, PlayState* play) { } void EnCha_Idle(EnCha* this, PlayState* play) { - if (gSaveContext.save.weekEventReg[60] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_60_04)) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_DOOR_BELL); - gSaveContext.save.weekEventReg[60] &= (u8)~4; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_60_04); this->actor.home.rot.z = 0x7D0; } if (this->collider.base.acFlags & AC_HIT) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_DOOR_BELL); this->actor.home.rot.z = 0x7D0; - if (!(gSaveContext.save.weekEventReg[51] & 4)) { - gSaveContext.save.weekEventReg[51] |= 4; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_51_04)) { + SET_WEEKEVENTREG(WEEKEVENTREG_51_04); this->actionFunc = EnCha_Ring; } } diff --git a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c index 40bc4aeb6..bfc828194 100644 --- a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c +++ b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c @@ -284,8 +284,8 @@ void EnClearTag_CreateLightRayEffect(EnClearTag* this, Vec3f* pos, Vec3f* veloci effect->actionTimer = Rand_ZeroFloat(10.0f); - effect->rotationY = Math_Acot2F(effect->velocity.z, effect->velocity.x); - effect->rotationX = -Math_Acot2F(sqrtf(SQXZ(effect->velocity)), effect->velocity.y); + effect->rotationY = Math_Atan2F_XY(effect->velocity.z, effect->velocity.x); + effect->rotationX = -Math_Atan2F_XY(sqrtf(SQXZ(effect->velocity)), effect->velocity.y); effect->envColor.r = 255.0f; effect->envColor.g = 255.0f; @@ -326,8 +326,8 @@ void EnClearTag_CreateIsolatedLightRayEffect(EnClearTag* this, Vec3f* pos, Vec3f effect->actionTimer = Rand_ZeroFloat(10.0f); - effect->rotationY = Math_Acot2F(effect->velocity.z, effect->velocity.x); - effect->rotationX = -Math_Acot2F(sqrtf(SQXZ(effect->velocity)), effect->velocity.y); + effect->rotationY = Math_Atan2F_XY(effect->velocity.z, effect->velocity.x); + effect->rotationX = -Math_Atan2F_XY(sqrtf(SQXZ(effect->velocity)), effect->velocity.y); effect->envColor.r = sLightRayEnvColor[colorIndex].x; effect->envColor.g = sLightRayEnvColor[colorIndex].y; @@ -560,7 +560,7 @@ void EnClearTag_UpdateCamera(EnClearTag* this, PlayState* play) { this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); - func_800B7298(play, &this->actor, 4); + func_800B7298(play, &this->actor, PLAYER_CSMODE_4); mainCam = Play_GetCamera(play, CAM_ID_MAIN); this->subCamEye.x = mainCam->eye.x; this->subCamEye.y = mainCam->eye.y; @@ -586,7 +586,7 @@ void EnClearTag_UpdateCamera(EnClearTag* this, PlayState* play) { mainCam->at = this->subCamAt; func_80169AFC(play, this->subCamId, 0); Cutscene_End(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + func_800B7298(play, &this->actor, PLAYER_CSMODE_6); this->cameraState = 0; this->subCamId = SUB_CAM_ID_DONE; this->activeTimer = 20; diff --git a/src/overlays/actors/ovl_En_Cne_01/z_en_cne_01.c b/src/overlays/actors/ovl_En_Cne_01/z_en_cne_01.c index ed3483150..876914a2a 100644 --- a/src/overlays/actors/ovl_En_Cne_01/z_en_cne_01.c +++ b/src/overlays/actors/ovl_En_Cne_01/z_en_cne_01.c @@ -103,7 +103,7 @@ void EnCne01_UpdateModel(EnCne01* this, PlayState* play) { EnHy_UpdateSkelAnime(&this->enHy, play); if (SubS_AngleDiffLessEqual(this->enHy.actor.shape.rot.y, 0x36B0, this->enHy.actor.yawTowardsPlayer)) { point.x = player->actor.world.pos.x; - point.y = player->bodyPartsPos[7].y + 3.0f; + point.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; point.z = player->actor.world.pos.z; SubS_TrackPoint(&point, &this->enHy.actor.focus.pos, &this->enHy.actor.shape.rot, &this->enHy.trackTarget, &this->enHy.headRot, &this->enHy.torsoRot, &sTrackOptions); @@ -142,7 +142,7 @@ s32 func_809CB4A0(EnCne01* this, PlayState* play) { Actor_GetScreenPos(play, &this->enHy.actor, &x, &y); //! @bug: Both x and y conditionals are always true, || should be an && if (!this->enHy.waitingOnInit && ((x >= 0) || (x < SCREEN_WIDTH)) && ((y >= 0) || (y < SCREEN_HEIGHT))) { - func_800B85E0(&this->enHy.actor, play, 30.0f, PLAYER_AP_MAGIC_BEANS); + func_800B85E0(&this->enHy.actor, play, 30.0f, PLAYER_IA_MAGIC_BEANS); } return true; } diff --git a/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.c b/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.c index 7170ebdc8..63c83f0ea 100644 --- a/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.c +++ b/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.c @@ -94,7 +94,7 @@ void EnColMan_Destroy(Actor* thisx, PlayState* play) { } void func_80AFDD60(EnColMan* this) { - if (!(gSaveContext.save.weekEventReg[56] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_56_02)) { this->actor.draw = func_80AFE414; this->actor.shape.yOffset = 700.0f; if (this->actor.params == EN_COL_MAN_HEART_PIECE) { @@ -123,14 +123,14 @@ void func_80AFDE00(EnColMan* this, PlayState* play) { this->actor.speedXZ = 0.0f; } } - if (!(gSaveContext.save.weekEventReg[56] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_56_02)) { this->actor.shape.rot.y += 0x3E8; } if (Actor_HasParent(&this->actor, play)) { this->actor.parent = NULL; this->actor.draw = NULL; this->actionFunc = EnColMan_SetHeartPieceCollectedAndKill; - } else if (!(gSaveContext.save.weekEventReg[56] & 2)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_56_02)) { Actor_PickUp(&this->actor, play, GI_HEART_PIECE, 40.0f, 40.0f); } else { Actor_PickUp(&this->actor, play, GI_RECOVERY_HEART, 40.0f, 40.0f); @@ -139,7 +139,7 @@ void func_80AFDE00(EnColMan* this, PlayState* play) { void EnColMan_SetHeartPieceCollectedAndKill(EnColMan* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { - gSaveContext.save.weekEventReg[56] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_56_02); Actor_Kill(&this->actor); } } diff --git a/src/overlays/actors/ovl_En_Cow/z_en_cow.c b/src/overlays/actors/ovl_En_Cow/z_en_cow.c index 778a358a8..4e9040d83 100644 --- a/src/overlays/actors/ovl_En_Cow/z_en_cow.c +++ b/src/overlays/actors/ovl_En_Cow/z_en_cow.c @@ -116,7 +116,7 @@ void EnCow_Init(Actor* thisx, PlayState* play) { this->actionFunc = EnCow_Idle; - if (!(gSaveContext.save.weekEventReg[22] & 1) && (CURRENT_DAY != 1) && + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01) && (CURRENT_DAY != 1) && (EN_COW_TYPE(thisx) == EN_COW_TYPE_ABDUCTED)) { Actor_Kill(&this->actor); return; @@ -153,7 +153,7 @@ void EnCow_Init(Actor* thisx, PlayState* play) { Actor_SetScale(&this->actor, 0.01f); this->flags = 0; - gSaveContext.save.weekEventReg[87] &= (u8)~1; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_87_01); } void EnCow_Destroy(Actor* thisx, PlayState* play) { @@ -289,8 +289,8 @@ void EnCow_Idle(EnCow* this, PlayState* play) { if (this->actor.xzDistToPlayer < 150.0f && ABS_ALT((s16)(this->actor.yawTowardsPlayer - this->actor.shape.rot.y)) < 25000) { if (func_801A5100() == 4) { - if (!(gSaveContext.save.weekEventReg[87] & 1)) { - gSaveContext.save.weekEventReg[87] |= 1; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_87_01)) { + SET_WEEKEVENTREG(WEEKEVENTREG_87_01); if (Inventory_HasEmptyBottle()) { this->actor.textId = 0x32C9; // Text to give milk. } else { @@ -301,7 +301,7 @@ void EnCow_Idle(EnCow* this, PlayState* play) { this->actionFunc = EnCow_Talk; } } else { - gSaveContext.save.weekEventReg[87] &= (u8)~1; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_87_01); } } diff --git a/src/overlays/actors/ovl_En_Dai/z_en_dai.c b/src/overlays/actors/ovl_En_Dai/z_en_dai.c index 7b758ca74..2f2496f57 100644 --- a/src/overlays/actors/ovl_En_Dai/z_en_dai.c +++ b/src/overlays/actors/ovl_En_Dai/z_en_dai.c @@ -176,8 +176,8 @@ s32 func_80B3E5DC(EnDai* this, s32 arg1) { s32 func_80B3E69C(EnDai* this, PlayState* play) { s32 ret = false; - if ((play->csCtx.state != 0) && (play->sceneId == SCENE_12HAKUGINMAE) && (play->csCtx.currentCsIndex == 0) && - !(gSaveContext.save.weekEventReg[30] & 1)) { + if ((play->csCtx.state != CS_STATE_0) && (play->sceneId == SCENE_12HAKUGINMAE) && + (play->csCtx.currentCsIndex == 0) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_30_01)) { if (!(this->unk_1CE & 0x10)) { Flags_SetSwitch(play, 20); this->unk_1CE |= (0x80 | 0x10); @@ -192,7 +192,7 @@ s32 func_80B3E69C(EnDai* this, PlayState* play) { } else if (this->unk_1CE & 0x10) { this->unk_1CE &= ~0x10; this->unk_1CE |= 0x200; - gSaveContext.save.weekEventReg[30] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_30_01); this->actionFunc = func_80B3F00C; } @@ -522,7 +522,7 @@ void EnDai_Init(Actor* thisx, PlayState* play) { this->unk_1CE = 0; this->unk_1D6 = 0; - if (gSaveContext.save.weekEventReg[33] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80)) { SubS_UpdateFlags(&this->unk_1CE, 3, 7); this->unk_1CE |= 0x80; this->unk_1CD = 0xFF; @@ -530,7 +530,7 @@ void EnDai_Init(Actor* thisx, PlayState* play) { return; } - if (gSaveContext.save.weekEventReg[30] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_30_01)) { Actor_Kill(&this->actor); return; } @@ -561,7 +561,7 @@ void EnDai_Update(Actor* thisx, PlayState* play) { SkelAnime_Update(&this->skelAnime); func_80B3E834(this); if (!(this->unk_1CE & 0x200)) { - func_8013C964(&this->actor, play, 0.0f, 0.0f, PLAYER_AP_NONE, this->unk_1CE & 7); + func_8013C964(&this->actor, play, 0.0f, 0.0f, PLAYER_IA_NONE, this->unk_1CE & 7); } func_80B3E460(this); } diff --git a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c index d9039ad59..263b22ada 100644 --- a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c +++ b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c @@ -88,8 +88,7 @@ void EnDaiku_Init(Actor* thisx, PlayState* play) { this->collider.dim.height = 60; this->collider.dim.yShift = 0; this->actor.flags |= ACTOR_FLAG_8000000; - if ((gSaveContext.save.weekEventReg[63] & 0x80) || - ((gSaveContext.save.day == 3) && gSaveContext.save.isNight)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80) || ((gSaveContext.save.day == 3) && gSaveContext.save.isNight)) { Actor_Kill(&this->actor); } } else if ((gSaveContext.save.day == 3) && gSaveContext.save.isNight) { diff --git a/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c b/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c index 711943659..0e5e7a3ea 100644 --- a/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c +++ b/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c @@ -167,7 +167,7 @@ void func_80BE65B4(EnDaiku2* this, PlayState* play) { switch (gSaveContext.save.day - 1) { case 0: this->unk_28A = 0; - if (gSaveContext.save.weekEventReg[64] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_64_02)) { this->unk_28A = 6; } func_80BE6408(this, 8); @@ -175,7 +175,7 @@ void func_80BE65B4(EnDaiku2* this, PlayState* play) { case 1: this->unk_28A = 2; - if (gSaveContext.save.weekEventReg[64] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_64_04)) { this->unk_28A = 7; } func_80BE6408(this, 8); @@ -309,11 +309,11 @@ void func_80BE6BC0(EnDaiku2* this, PlayState* play) { } else { switch (day) { case 0: - gSaveContext.save.weekEventReg[64] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_64_02); break; case 1: - gSaveContext.save.weekEventReg[64] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_64_04); break; } func_80BE65B4(this, play); diff --git a/src/overlays/actors/ovl_En_Demo_heishi/z_en_demo_heishi.h b/src/overlays/actors/ovl_En_Demo_heishi/z_en_demo_heishi.h index 181198e0f..9d9714b95 100644 --- a/src/overlays/actors/ovl_En_Demo_heishi/z_en_demo_heishi.h +++ b/src/overlays/actors/ovl_En_Demo_heishi/z_en_demo_heishi.h @@ -26,6 +26,6 @@ typedef struct EnDemoheishi { /* 0x270 */ s16 isTalking; /* 0x272 */ s16 textIdIndex; /* 0x274 */ ColliderCylinder colliderCylinder; -} EnDemoheishi; //size = 0x2C0 +} EnDemoheishi; // size = 0x2C0 #endif // Z_EN_DEMO_HEISHI_H diff --git a/src/overlays/actors/ovl_En_Dg/z_en_dg.c b/src/overlays/actors/ovl_En_Dg/z_en_dg.c index bd2c1e603..d9bebb404 100644 --- a/src/overlays/actors/ovl_En_Dg/z_en_dg.c +++ b/src/overlays/actors/ovl_En_Dg/z_en_dg.c @@ -10,6 +10,8 @@ #define THIS ((EnDg*)thisx) +//! TODO: this file require macros for its uses of weekEventReg + void EnDg_Init(Actor* thisx, PlayState* play); void EnDg_Destroy(Actor* thisx, PlayState* play); void EnDg_Update(Actor* thisx, PlayState* play); @@ -250,8 +252,8 @@ void EnDg_GetFloorRot(EnDg* this, Vec3f* floorRot) { sinf(0.0f); cosf(0.0f); - floorRot->x = -Math_Acot2F(1.0f, -nz * ny); - floorRot->z = Math_Acot2F(1.0f, -nx * ny); + floorRot->x = -Math_Atan2F_XY(1.0f, -nz * ny); + floorRot->z = Math_Atan2F_XY(1.0f, -nx * ny); } } @@ -308,7 +310,7 @@ s16 EnDg_GetYRotation(Path* path, s32 index, Vec3f* pos, f32* distSq) { *distSq = SQ(diffX) + SQ(diffZ); - return RADF_TO_BINANG(Math_Acot2F(diffZ, diffX)); + return RADF_TO_BINANG(Math_Atan2F_XY(diffZ, diffX)); } /** diff --git a/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c b/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c index e2ad9433c..643c167f0 100644 --- a/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c +++ b/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c @@ -369,7 +369,7 @@ void func_8089ABF4(EnDinofos* this, PlayState* play) { this->subCamId = SUB_CAM_ID_DONE; ActorCutscene_Stop(this->actor.cutscene); if (this->actor.colChkInfo.health == 0) { - func_800B724C(play, &this->actor, 6); + func_800B724C(play, &this->actor, PLAYER_CSMODE_6); } } } @@ -1206,7 +1206,7 @@ void func_8089D318(EnDinofos* this, PlayState* play) { if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) { if (this->actor.colChkInfo.health == 0) { ActorCutscene_Start(this->actor.cutscene, &this->actor); - func_800B724C(play, &this->actor, 7); + func_800B724C(play, &this->actor, PLAYER_CSMODE_7); } else { ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, &this->actor); } diff --git a/src/overlays/actors/ovl_En_Dno/z_en_dno.c b/src/overlays/actors/ovl_En_Dno/z_en_dno.c index 3c97b8377..12e048955 100644 --- a/src/overlays/actors/ovl_En_Dno/z_en_dno.c +++ b/src/overlays/actors/ovl_En_Dno/z_en_dno.c @@ -249,7 +249,7 @@ void EnDno_Init(Actor* thisx, PlayState* play) { switch (EN_DNO_GET_C000(thisx)) { case EN_DNO_GET_C000_0: func_80A71788(this, play); - if (!(gSaveContext.save.weekEventReg[23] & 0x20) || (gSaveContext.save.weekEventReg[93] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20) || CHECK_WEEKEVENTREG(WEEKEVENTREG_93_02)) { Actor_Kill(thisx); } else { SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IDLE_WITH_CANDLE, @@ -264,7 +264,7 @@ void EnDno_Init(Actor* thisx, PlayState* play) { break; case EN_DNO_GET_C000_1: - if (gSaveContext.save.weekEventReg[23] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { Actor_Kill(thisx); } else { SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IDLE, @@ -307,7 +307,7 @@ void func_80A71B68(EnDno* this, PlayState* play) { this->unk_452 = 0; this->actor.textId = 0; if (CHECK_QUEST_ITEM(QUEST_SONG_SONATA)) { - if (gSaveContext.save.weekEventReg[27] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_27_01)) { if (!(this->unk_3B0 & 0x20)) { SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_PRAYER_LOOP, &this->animIndex); @@ -374,17 +374,17 @@ void func_80A71C3C(EnDno* this, PlayState* play) { void func_80A71E54(EnDno* this, PlayState* play) { if (CHECK_QUEST_ITEM(QUEST_SONG_SONATA)) { - if (gSaveContext.save.weekEventReg[27] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_27_01)) { this->textId = 0x811; } else { this->textId = 0x80F; - gSaveContext.save.weekEventReg[27] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_27_01); } - } else if (gSaveContext.save.weekEventReg[26] & 0x80) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_26_80)) { this->textId = 0x80B; } else { this->textId = 0x80C; - gSaveContext.save.weekEventReg[26] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_26_80); } if (this->textId != 0x811) { @@ -573,7 +573,7 @@ void func_80A724B8(EnDno* this, PlayState* play) { } void func_80A7256C(EnDno* this, PlayState* play) { - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_IA_MINUS1); } void func_80A72598(EnDno* this, PlayState* play) { @@ -617,7 +617,7 @@ void func_80A725F8(EnDno* this, PlayState* play) { case 2: if (Math_ScaledStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0x2D8)) { - gSaveContext.save.weekEventReg[93] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_93_02); Message_StartTextbox(play, 0x802, &this->actor); } break; diff --git a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c index 594ddd3d7..b504e9a11 100644 --- a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c +++ b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c @@ -211,10 +211,12 @@ s32 func_80B3CDA4(EnDnp* this, PlayState* play) { Math_SmoothStepToS(&this->unk_332, temp_s0, 3, 0x2AA8, 0x1); sp30 = player->actor.world.pos; - sp30.y = player->bodyPartsPos[7].y + 3.0f; + sp30.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; sp3C = this->actor.world.pos; sp3C.y += 10.0f; pitch = Math_Vec3f_Pitch(&sp3C, &sp30); + + //! FAKE if (1) {}; Math_SmoothStepToS(&this->unk_330, pitch, 3, 0x2AA8, 0x1); @@ -246,7 +248,7 @@ s32 func_80B3CF60(EnDnp* this, PlayState* play) { this->unk_322 |= 8; this->actionFunc = func_80B3D3F8; ret = true; - } else if (!(gSaveContext.save.weekEventReg[23] & 0x20) && Actor_HasParent(&this->actor, play)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20) && Actor_HasParent(&this->actor, play)) { SubS_UpdateFlags(&this->unk_322, 0, 7); this->unk_322 &= ~0x500; this->actor.parent = NULL; @@ -291,10 +293,10 @@ void func_80B3D11C(EnDnp* this, PlayState* play) { s32 temp_v0; s32 val; - if (!(gSaveContext.save.weekEventReg[29] & 0x40) && (play->sceneId == SCENE_MITURIN) && + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_29_40) && (play->sceneId == SCENE_MITURIN) && (play->csCtx.currentCsIndex == 0)) { this->unk_322 |= 0x20; - gSaveContext.save.weekEventReg[29] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_29_40); } if (Cutscene_CheckActorAction(play, 101)) { @@ -352,7 +354,7 @@ void func_80B3D338(EnDnp* this, PlayState* play) { } else { this->actor.textId = 0x971; player->actor.textId = this->actor.textId; - func_800B8500(&this->actor, play, 9999.9f, 9999.9f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 9999.9f, 9999.9f, PLAYER_IA_MINUS1); } } } @@ -385,7 +387,7 @@ void func_80B3D47C(EnDnp* this, PlayState* play) { void func_80B3D558(EnDnp* this, PlayState* play) { if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) { ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, &this->actor); - gSaveContext.save.weekEventReg[23] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_23_20); } else { ActorCutscene_SetIntentToPlay(this->actor.cutscene); } @@ -414,13 +416,13 @@ void EnDnp_Init(Actor* thisx, PlayState* play) { this->actor.cutscene = 0x10; this->actionFunc = func_80B3D47C; } else if (((EN_DNP_GET_TYPE(&this->actor) == EN_DNP_TYPE_WOODFALL_TEMPLE) && - !Inventory_HasItemInBottle(ITEM_DEKU_PRINCESS) && !(gSaveContext.save.weekEventReg[23] & 0x20)) || + !Inventory_HasItemInBottle(ITEM_DEKU_PRINCESS) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) || ((EN_DNP_GET_TYPE(&this->actor) == EN_DNP_TYPE_DEKU_KINGS_CHAMBER) && - (gSaveContext.save.weekEventReg[23] & 0x20))) { + CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20))) { Actor_SetScale(&this->actor, 0.0085f); SubS_UpdateFlags(&this->unk_322, 3, 7); this->unk_322 |= 0x400; - if ((play->sceneId == SCENE_MITURIN) && (gSaveContext.save.weekEventReg[29] & 0x40)) { + if ((play->sceneId == SCENE_MITURIN) && CHECK_WEEKEVENTREG(WEEKEVENTREG_29_40)) { this->unk_322 |= 0x20; EnDnp_ChangeAnim(this, EN_DNP_ANIM_HURRY); } @@ -456,10 +458,10 @@ void EnDnp_Update(Actor* thisx, PlayState* play) { Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 12.0f, 0.0f, 4); sp2C = this->collider.dim.radius + 50; sp28 = this->collider.dim.height + 30; - if ((this->unk_322 & 0x400) && !(gSaveContext.save.weekEventReg[23] & 0x20)) { + if ((this->unk_322 & 0x400) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { Actor_PickUp(&this->actor, play, GI_MAX, sp2C, sp28); } - func_8013C964(&this->actor, play, sp2C, sp28, PLAYER_AP_NONE, this->unk_322 & 7); + func_8013C964(&this->actor, play, sp2C, sp28, PLAYER_IA_NONE, this->unk_322 & 7); Actor_SetFocus(&this->actor, 30.0f); func_80B3CC80(this, play); } diff --git a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c index 6ae6c665c..021b94476 100644 --- a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c +++ b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c @@ -259,7 +259,7 @@ s32 func_80A52B68(EnDnq* this, PlayState* play) { Player* player = GET_PLAYER(play); u16 temp = play->msgCtx.currentTextId; - if ((player->stateFlags1 & PLAYER_STATE1_40) && (player->targetActor == &this->picto.actor)) { + if ((player->stateFlags1 & PLAYER_STATE1_40) && (player->talkActor == &this->picto.actor)) { switch (temp) { case 0x89B: func_80A5257C(this, 18); @@ -309,7 +309,7 @@ void func_80A52C6C(EnDnq* this, PlayState* play) { } s32* func_80A52CF8(EnDnq* this, PlayState* play) { - if (gSaveContext.save.weekEventReg[23] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { return &D_80A53400[14]; } @@ -343,11 +343,11 @@ void func_80A52DC8(EnDnq* this, PlayState* play) { SubS_UpdateFlags(&this->unk_37C, 0, 7); } - if (!(gSaveContext.save.weekEventReg[23] & 0x20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { this->unk_390 = 70.0f; if (Inventory_HasItemInBottle(ITEM_DEKU_PRINCESS) && !Play_InCsMode(play) && (Message_GetState(&play->msgCtx) == TEXT_STATE_NONE) && (ActorCutscene_GetCurrentIndex() == -1)) { - if ((DECR(this->unk_384) == 0) && (gSaveContext.save.weekEventReg[29] & 0x40)) { + if ((DECR(this->unk_384) == 0) && CHECK_WEEKEVENTREG(WEEKEVENTREG_29_40)) { Message_StartTextbox(play, 0x969, NULL); this->unk_384 = 200; } @@ -361,7 +361,7 @@ void func_80A52DC8(EnDnq* this, PlayState* play) { this->picto.actor.xzDistToPlayer = this->unk_394; - if (gSaveContext.save.weekEventReg[83] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_83_08)) { func_80A52A78(this, play); } else if (this->unk_3A4 == 0) { Math_ApproachS(&this->picto.actor.shape.rot.y, this->picto.actor.world.rot.y, 3, 0x2AA8); @@ -430,7 +430,7 @@ void EnDnq_Init(Actor* thisx, PlayState* play) { this->unk_386 = 0; this->unk_37C = 0; SubS_UpdateFlags(&this->unk_37C, 3, 7); - if (gSaveContext.save.weekEventReg[9] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_09_80)) { this->unk_3A4 = 1; } else { this->unk_3A4 = 0; @@ -459,7 +459,7 @@ void EnDnq_Update(Actor* thisx, PlayState* play) { this->unk_394 = this->picto.actor.xzDistToPlayer; func_80A52C6C(this, play); func_8013C964(&this->picto.actor, play, this->unk_390, fabsf(this->picto.actor.playerHeightRel) + 1.0f, - PLAYER_AP_NONE, this->unk_37C & 7); + PLAYER_IA_NONE, this->unk_37C & 7); this->picto.actor.xzDistToPlayer = this->unk_394; Actor_SetFocus(&this->picto.actor, 46.0f); func_80A52604(this, play); diff --git a/src/overlays/actors/ovl_En_Dns/z_en_dns.c b/src/overlays/actors/ovl_En_Dns/z_en_dns.c index 05189cadf..714235b17 100644 --- a/src/overlays/actors/ovl_En_Dns/z_en_dns.c +++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.c @@ -144,7 +144,7 @@ void func_8092C740(EnDns* this, PlayState* play) { this->unk_2CE = CLAMP(this->unk_2CE, -0x3FFC, 0x3FFC); Math_Vec3f_Copy(&sp28, &player->actor.world.pos); - sp28.y = player->bodyPartsPos[7].y + 3.0f; + sp28.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; Math_Vec3f_Copy(&sp34, &this->actor.world.pos); sp34.y += 10.0f; temp = Math_Vec3f_Pitch(&sp34, &sp28); @@ -180,7 +180,7 @@ void func_8092C934(EnDns* this) { s32* func_8092C9BC(EnDns* this, PlayState* play) { Player* player = GET_PLAYER(play); - if (!(gSaveContext.save.weekEventReg[23] & 0x20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { if (player->transformation != PLAYER_FORM_DEKU) { return &D_8092DCB0[16]; } else if (this->unk_2FC != 0) { @@ -359,14 +359,14 @@ s32 func_8092D068(EnDns* this) { s32 ret = false; if (ENDNS_GET_8000(&this->actor)) { - if (gSaveContext.save.weekEventReg[23] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { ret = true; } } else if (ENDNS_GET_4000(&this->actor)) { - if ((gSaveContext.save.weekEventReg[9] & 0x80) && !(gSaveContext.save.weekEventReg[23] & 0x20)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_09_80) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { ret = true; } - } else if (!(gSaveContext.save.weekEventReg[9] & 0x80) && !(gSaveContext.save.weekEventReg[23] & 0x20)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_09_80) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { ret = true; } @@ -397,16 +397,16 @@ void func_8092D1B8(EnDns* this, PlayState* play) { } if (!ENDNS_GET_4000(&this->actor) || (this->unk_2D2 != 0)) { - if (!(gSaveContext.save.weekEventReg[23] & 0x20) && !(gSaveContext.eventInf[1] & 0x20) && func_8092CC68(play)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20) && !CHECK_EVENTINF(EVENTINF_15) && func_8092CC68(play)) { player->stateFlags1 |= PLAYER_STATE1_20; this->unk_2C6 |= 0x100; SubS_UpdateFlags(&this->unk_2C6, 4, 7); play_sound(NA_SE_SY_FOUND); - gSaveContext.eventInf[1] |= 0x20; + SET_EVENTINF(EVENTINF_15); this->unk_2F4 = func_8092CCEC; func_8092C63C(this, EN_DNS_ANIM_WALK_1); this->actionFunc = EnDns_DoNothing; - } else if (gSaveContext.eventInf[1] & 0x40) { + } else if (CHECK_EVENTINF(EVENTINF_16)) { func_8092CCEC(this, play); func_8092C63C(this, EN_DNS_ANIM_WALK_1); this->actionFunc = func_8092D330; @@ -456,7 +456,7 @@ void func_8092D4D8(EnDns* this, PlayState* play) { SubS_UpdateFlags(&this->unk_2C6, 3, 7); this->unk_2F4 = NULL; if (ENDNS_GET_4000(&this->actor)) { - if (!(gSaveContext.eventInf[1] & 0x20)) { + if (!CHECK_EVENTINF(EVENTINF_15)) { this->skelAnime.curFrame = this->unk_2F0; this->actor.world.rot.y = this->unk_2DA; func_8092C63C(this, EN_DNS_ANIM_DANCE); @@ -521,14 +521,14 @@ void EnDns_Init(Actor* thisx, PlayState* play) { SubS_UpdateFlags(&this->unk_2C6, 3, 7); this->unk_2C6 |= (0x40 | 0x10); this->unk_2C6 |= 0x200; - if (gSaveContext.save.weekEventReg[9] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_09_80)) { this->unk_2FC = 1; } else { this->unk_2FC = 0; } this->actionFunc = func_8092D1B8; - gSaveContext.eventInf[1] &= (u8)~0x20; - gSaveContext.eventInf[1] &= (u8)~0x40; + CLEAR_EVENTINF(EVENTINF_15); + CLEAR_EVENTINF(EVENTINF_16); } void EnDns_Destroy(Actor* thisx, PlayState* play) { @@ -550,7 +550,7 @@ void EnDns_Update(Actor* thisx, PlayState* play) { func_8092C934(this); func_8092C86C(this, play); Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 12.0f, 0.0f, 4); - func_8013C964(&this->actor, play, 80.0f, 40.0f, PLAYER_AP_NONE, this->unk_2C6 & 7); + func_8013C964(&this->actor, play, 80.0f, 40.0f, PLAYER_IA_NONE, this->unk_2C6 & 7); Actor_SetFocus(&this->actor, 34.0f); func_8092C6FC(this, play); func_8092C5C0(this); diff --git a/src/overlays/actors/ovl_En_Door/z_en_door.c b/src/overlays/actors/ovl_En_Door/z_en_door.c index 4f580291c..7a0455619 100644 --- a/src/overlays/actors/ovl_En_Door/z_en_door.c +++ b/src/overlays/actors/ovl_En_Door/z_en_door.c @@ -57,7 +57,7 @@ u8 D_808675E4[] = { /* 0x1C */ SCHEDULE_CMD_RET_NONE(), /* 0x1D */ SCHEDULE_CMD_RET_VAL_S(8), /* 0x1F */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x3C - 0x23), - /* 0x23 */ SCHEDULE_CMD_CHECK_FLAG_S(0x1C, 0x08, 0x2E - 0x27), + /* 0x23 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_28_08, 0x2E - 0x27), /* 0x27 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x2D - 0x2B), /* 0x2B */ SCHEDULE_CMD_RET_VAL_S(9), /* 0x2D */ SCHEDULE_CMD_RET_NONE(), @@ -93,14 +93,14 @@ u8 D_8086764C[] = { u8 D_80867658[] = { /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x13 - 0x04), - /* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(0x1C, 0x08, 0x0A - 0x08), + /* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_28_08, 0x0A - 0x08), /* 0x08 */ SCHEDULE_CMD_RET_VAL_S(12), /* 0x0A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 10, 22, 0, 0x12 - 0x10), /* 0x10 */ SCHEDULE_CMD_RET_VAL_S(12), /* 0x12 */ SCHEDULE_CMD_RET_NONE(), /* 0x13 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x28 - 0x17), /* 0x17 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x28 - 0x1B), - /* 0x1B */ SCHEDULE_CMD_CHECK_FLAG_S(0x33, 0x08, 0x21 - 0x1F), + /* 0x1B */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_08, 0x21 - 0x1F), /* 0x1F */ SCHEDULE_CMD_RET_VAL_S(12), /* 0x21 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(22, 0, 0x27 - 0x25), /* 0x25 */ SCHEDULE_CMD_RET_VAL_S(12), @@ -231,7 +231,7 @@ u8 D_8086773C[] = { u8 D_80867744[] = { /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x08 - 0x04), - /* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(0x63, 0x80, 0x0E - 0x08), + /* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_99_80, 0x0E - 0x08), /* 0x08 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(20, 0, 0x14 - 0x0C), /* 0x0C */ SCHEDULE_CMD_RET_VAL_S(27), /* 0x0E */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(18, 0, 0x14 - 0x12), @@ -240,12 +240,12 @@ u8 D_80867744[] = { }; u8 D_8086775C[] = { - /* 0x00 */ SCHEDULE_CMD_CHECK_FLAG_S(0x34, 0x20, 0x1B - 0x04), - /* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(0x4B, 0x20, 0x1B - 0x08), - /* 0x08 */ SCHEDULE_CMD_CHECK_FLAG_S(0x0E, 0x04, 0x0E - 0x0C), + /* 0x00 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_52_20, 0x1B - 0x04), + /* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_75_20, 0x1B - 0x08), + /* 0x08 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_14_04, 0x0E - 0x0C), /* 0x0C */ SCHEDULE_CMD_RET_VAL_S(29), - /* 0x0E */ SCHEDULE_CMD_CHECK_FLAG_S(0x3B, 0x01, 0x1A - 0x12), - /* 0x12 */ SCHEDULE_CMD_CHECK_FLAG_S(0x3D, 0x02, 0x18 - 0x16), + /* 0x0E */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_59_01, 0x1A - 0x12), + /* 0x12 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_61_02, 0x18 - 0x16), /* 0x16 */ SCHEDULE_CMD_RET_VAL_S(30), /* 0x18 */ SCHEDULE_CMD_RET_VAL_S(31), /* 0x1A */ SCHEDULE_CMD_RET_NONE(), @@ -465,7 +465,7 @@ void func_80866A5C(EnDoor* this, PlayState* play) { } void func_80866B20(EnDoor* this, PlayState* play) { - static s32 D_80867BC0[4]; + static s32 D_80867BC0; Player* player = GET_PLAYER(play); Vec3f playerPosRelToDoor; s16 temp_a2; @@ -475,7 +475,7 @@ void func_80866B20(EnDoor* this, PlayState* play) { u8 temp_a1; if (Actor_ProcessTalkRequest(&this->dyna.actor, &play->state) && (this->dyna.actor.textId == 0x1821)) { - D_80867BC0[0] = 1; + D_80867BC0 = true; } if (this->unk_1A1 != 0) { this->actionFunc = func_80867144; @@ -491,25 +491,25 @@ void func_80866B20(EnDoor* this, PlayState* play) { Actor_PlaySfxAtPos(&this->dyna.actor, NA_SE_EV_DOOR_OPEN); } else if (!Player_InCsMode(play)) { Actor_OffsetOfPointInActorCoords(&this->dyna.actor, &playerPosRelToDoor, &player->actor.world.pos); - if ((D_80867BC0[0] != 0) || ((fabsf(playerPosRelToDoor.y) < 20.0f) && (fabsf(playerPosRelToDoor.x) < 20.0f) && - (fabsf(playerPosRelToDoor.z) < 50.0f))) { + if (D_80867BC0 || ((fabsf(playerPosRelToDoor.y) < 20.0f) && (fabsf(playerPosRelToDoor.x) < 20.0f) && + (fabsf(playerPosRelToDoor.z) < 50.0f))) { yawDiff = player->actor.shape.rot.y - this->dyna.actor.shape.rot.y; if (playerPosRelToDoor.z > 0.0f) { yawDiff = (0x8000 - yawDiff); } if (ABS_ALT(yawDiff) < 0x3000) { - player->doorType = 1; + player->doorType = PLAYER_DOORTYPE_HANDLE; player->doorDirection = playerPosRelToDoor.z >= 0.0f ? 1.0f : -1.0f; player->doorActor = &this->dyna.actor; if (this->unk_1A6 != 0) { if (DUNGEON_KEY_COUNT(gSaveContext.mapIndex) <= 0) { - player->doorType = -1; + player->doorType = PLAYER_DOORTYPE_TALKING; this->dyna.actor.textId = 0x1802; } else { player->doorTimer = 10; } } else if (this->unk_1A4 == 4) { - player->doorType = -1; + player->doorType = PLAYER_DOORTYPE_TALKING; this->dyna.actor.textId = 0x1800; } else if ((this->unk_1A4 == 0) || (this->unk_1A4 == 2) || (this->unk_1A4 == 3)) { s32 textIdOffset; @@ -528,16 +528,18 @@ void func_80866B20(EnDoor* this, PlayState* play) { } else if (this->unk_1A4 == 2) { baseTextId = 0x181D; } - player->doorType = -1; + player->doorType = PLAYER_DOORTYPE_TALKING; this->dyna.actor.textId = baseTextId + textIdOffset; } } else if ((this->unk_1A4 == 5) && (playerPosRelToDoor.z > 0.0f)) { ScheduleOutput sp30; - if (Schedule_RunScript(play, D_8086778C[this->switchFlag], &sp30) != 0) { + if (Schedule_RunScript(play, D_8086778C[this->switchFlag], &sp30)) { this->dyna.actor.textId = sp30.result + 0x1800; - player->doorType = ((this->dyna.actor.textId == 0x1821) && (D_80867BC0[0] != 0)) ? 5 : -1; + player->doorType = ((this->dyna.actor.textId == 0x1821) && D_80867BC0) + ? PLAYER_DOORTYPE_PROXIMITY + : PLAYER_DOORTYPE_TALKING; } } func_80122F28(player); diff --git a/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c b/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c index ea54d8fdb..83b93cf52 100644 --- a/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c +++ b/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c @@ -535,7 +535,7 @@ void EnDragon_Grab(EnDragon* this, PlayState* play) { if (this->grabTimer > sMaxGrabTimerPerPython[this->pythonIndex]) { if (this->state == DEEP_PYTHON_GRAB_STATE_START) { - func_800B7298(play, &this->actor, 6); + func_800B7298(play, &this->actor, PLAYER_CSMODE_6); this->state = DEEP_PYTHON_GRAB_STATE_GRABBED; } @@ -572,7 +572,7 @@ void EnDragon_Attack(EnDragon* this, PlayState* play) { //! @bug: This function should only pass Player*: it uses *(this + 0x153), which is meant to be //! player->currentMask, but in this case is garbage in the skelAnime - func_800B8E58((Player*)this, player->ageProperties->unk_92 + NA_SE_VO_LI_DAMAGE_S); + func_800B8E58((Player*)this, player->ageProperties->voiceSfxIdOffset + NA_SE_VO_LI_DAMAGE_S); Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_UTSUBO_BITE); CollisionCheck_GreenBlood(play, NULL, &player->actor.world.pos); } @@ -684,37 +684,37 @@ void EnDragon_Dead(EnDragon* this, PlayState* play) { if (Actor_SpawnAsChildAndCutscene(&play->actorCtx, play, ACTOR_EN_OT, seahorsePos.x, seahorsePos.y, seahorsePos.z, 0, this->actor.shape.rot.y, 0, 0x4000, this->actor.cutscene, this->actor.unk20, NULL)) { - gSaveContext.save.weekEventReg[13] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_13_01); switch (this->pythonIndex) { case 0: - gSaveContext.save.weekEventReg[83] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_83_10); break; case 1: - gSaveContext.save.weekEventReg[83] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_83_20); break; case 2: - gSaveContext.save.weekEventReg[83] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_83_40); break; case 3: - gSaveContext.save.weekEventReg[83] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_83_80); break; case 4: - gSaveContext.save.weekEventReg[84] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_84_01); break; case 5: - gSaveContext.save.weekEventReg[84] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_84_02); break; case 6: - gSaveContext.save.weekEventReg[84] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_84_04); break; case 7: - gSaveContext.save.weekEventReg[84] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_84_08); break; } } diff --git a/src/overlays/actors/ovl_En_Drs/z_en_drs.c b/src/overlays/actors/ovl_En_Drs/z_en_drs.c index 75d493b41..7e232d5bd 100644 --- a/src/overlays/actors/ovl_En_Drs/z_en_drs.c +++ b/src/overlays/actors/ovl_En_Drs/z_en_drs.c @@ -108,7 +108,7 @@ void EnDrs_PostLimbDraw(PlayState* play2, s32 limbIndex, Gfx** dList, Vec3s* rot // Anju removes the Moon Mask at the start of the Couple's Mask cutscene // after that it will no longer be rendered. - if (!(gSaveContext.save.weekEventReg[87] & 2) && (limbIndex == WEDDING_DRESS_MANNEQUIN_LIMB_MASK)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_87_02) && (limbIndex == WEDDING_DRESS_MANNEQUIN_LIMB_MASK)) { OPEN_DISPS(play->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.status[temp].segment); gSPDisplayList(POLY_OPA_DISP++, &gMoonMaskDL); diff --git a/src/overlays/actors/ovl_En_Egblock/z_en_egblock.c b/src/overlays/actors/ovl_En_Egblock/z_en_egblock.c index 2a1a976f5..de26515fa 100644 --- a/src/overlays/actors/ovl_En_Egblock/z_en_egblock.c +++ b/src/overlays/actors/ovl_En_Egblock/z_en_egblock.c @@ -1,21 +1,34 @@ /* * File: z_en_egblock.c * Overlay: ovl_En_Egblock - * Description: Eyegore Block + * Description: Unused pillar. Eyegore can destroy it. */ #include "z_en_egblock.h" +#include "objects/object_eg/object_eg.h" #define FLAGS (ACTOR_FLAG_8000000) #define THIS ((EnEgblock*)thisx) +typedef enum { + /* 0 */ EGBLOCK_EFFECT_DEBRIS_SOLID, + /* 1 */ EGBLOCK_EFFECT_DEBRIS_FLAT, +} EnEgblockEffectType; + void EnEgblock_Init(Actor* thisx, PlayState* play); void EnEgblock_Destroy(Actor* thisx, PlayState* play); void EnEgblock_Update(Actor* thisx, PlayState* play); -void EnEgblock_Draw(Actor* thisx, PlayState* play); +void EnEgblock_Draw(Actor* thisx, PlayState* play2); + +void EnEgblock_Active(EnEgblock* this, PlayState* play); +void EnEgblock_DoNothing(EnEgblock* this, PlayState* play); +void EnEgblock_Inactive(EnEgblock* this, PlayState* play); + +void EnEgblock_SpawnEffect(EnEgblock* this, Vec3f* pos, s16 lifetime, s16 arg3); +void EnEgblock_UpdateEffects(EnEgblock* this, PlayState* play); +void EnEgblock_DrawEffects(EnEgblock* this, PlayState* play); -#if 0 ActorInit En_Egblock_InitVars = { ACTOR_EN_EGBLOCK, ACTORCAT_PROP, @@ -28,28 +41,191 @@ ActorInit En_Egblock_InitVars = { (ActorFunc)EnEgblock_Draw, }; -#endif +void EnEgblock_Init(Actor* thisx, PlayState* play) { + EnEgblock* this = THIS; + CollisionHeader* colHeader = NULL; + s32 pad; -extern UNK_TYPE D_06001698; -extern UNK_TYPE D_06001820; -extern UNK_TYPE D_06001BF8; + DynaPolyActor_Init(&this->dyna, 0); + CollisionHeader_GetVirtual(&gEyegoreBlockCol, &colHeader); + this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader); + this->dyna.actor.colChkInfo.mass = MASS_IMMOVABLE; + this->inactive = false; + Actor_SetScale(&this->dyna.actor, 0.5f); + this->type = EGBLOCK_GET_TYPE(&this->dyna.actor); + this->paramF80 = EGBLOCK_GET_PARAM_F80(&this->dyna.actor); + this->param7F = EGBLOCK_GET_PARAM_7F(&this->dyna.actor); + if (this->type == EGBLOCK_TYPE_ACTIVE) { + this->dyna.actor.colChkInfo.health = 1; + this->actionFunc = EnEgblock_Active; + } else { + this->actionFunc = EnEgblock_DoNothing; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egblock/EnEgblock_Init.s") +void EnEgblock_Destroy(Actor* thisx, PlayState* play) { + EnEgblock* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egblock/EnEgblock_Destroy.s") + if (this->dyna.actor.colChkInfo.health == 1) { + DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egblock/func_80ABA8A4.s") +void EnEgblock_Active(EnEgblock* this, PlayState* play) { + if (this->dyna.actor.colChkInfo.health <= 0) { + s32 i; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egblock/func_80ABA988.s") + //! @bug Egblock doesn't have an effect with index 2, so half of these spawns do nothing. + for (i = 0; i < ARRAY_COUNT(this->effects); i++) { + EnEgblock_SpawnEffect(this, &this->dyna.actor.world.pos, 30, (i & 1) + EGBLOCK_EFFECT_DEBRIS_FLAT); + } + DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId); + Actor_SpawnFloorDustRing(play, &this->dyna.actor, &this->dyna.actor.world.pos, 30.0f, 30, 10.0f, 100, 30, true); + this->inactive = true; + this->timer = 50; + this->actionFunc = EnEgblock_Inactive; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egblock/func_80ABA9B8.s") +void EnEgblock_Inactive(EnEgblock* this, PlayState* play) { + if (this->timer == 0) { + Actor_Kill(&this->dyna.actor); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egblock/EnEgblock_Update.s") +void EnEgblock_DoNothing(EnEgblock* this, PlayState* play) { +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egblock/EnEgblock_Draw.s") +void EnEgblock_Update(Actor* thisx, PlayState* play) { + EnEgblock* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egblock/func_80ABAAF4.s") + this->actionFunc(this, play); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egblock/func_80ABACB4.s") + DECR(this->timer); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egblock/func_80ABAE64.s") + EnEgblock_UpdateEffects(this, play); +} + +void EnEgblock_Draw(Actor* thisx, PlayState* play2) { + PlayState* play = play2; + EnEgblock* this = THIS; + + func_8012C28C(play->state.gfxCtx); + + if (this->inactive != true) { + OPEN_DISPS(play->state.gfxCtx); + + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x80, 255, 255, 255, 255); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 255, 255, 255); + gSPDisplayList(POLY_OPA_DISP++, gEyegoreBlockDL); + + CLOSE_DISPS(play->state.gfxCtx); + } + + EnEgblock_DrawEffects(this, play); +} + +void EnEgblock_SpawnEffect(EnEgblock* this, Vec3f* pos, s16 lifetime, s16 arg3) { + EnEgblockEffect* effect = this->effects; + s16 i; + + for (i = 0; i < ARRAY_COUNT(this->effects); i++, effect++) { + if (!effect->isActive) { + effect->isActive = true; + effect->pos = *pos; + effect->pos.x += randPlusMinusPoint5Scaled(50.0f); + effect->pos.z += randPlusMinusPoint5Scaled(50.0f); + effect->timer = lifetime; + effect->alpha = 255; + effect->type = arg3; + effect->accel.x = Rand_ZeroOne() - 0.5f; + effect->accel.y = -1.0f; + effect->accel.z = Rand_ZeroOne() - 0.5f; + effect->velocity.x = 2.0f * (Rand_ZeroOne() - 0.5f); + effect->velocity.y = 5.0f + (10.0f * Rand_ZeroOne()); + effect->velocity.z = 2.0f * (Rand_ZeroOne() - 0.5f); + effect->scale = 0.5f + (0.2f * Rand_ZeroFloat(1.0f)); + effect->rot.x = randPlusMinusPoint5Scaled(0x7530); + effect->rot.y = randPlusMinusPoint5Scaled(0x7530); + effect->rot.z = randPlusMinusPoint5Scaled(0x7530); + break; + } + } +} + +void EnEgblock_UpdateEffects(EnEgblock* this, PlayState* play) { + EnEgblockEffect* effect = this->effects; + s32 i; + + for (i = 0; i < ARRAY_COUNT(this->effects); i++, effect++) { + if (effect->isActive) { + if (effect->type != EGBLOCK_EFFECT_DEBRIS_SOLID) { + effect->rot.x -= 0x64; + effect->rot.y -= 0x64; + effect->rot.z -= 0x64; + } + + effect->pos.x += effect->velocity.x; + effect->pos.y += effect->velocity.y; + effect->pos.z += effect->velocity.z; + + effect->velocity.x += effect->accel.x; + effect->velocity.y += effect->accel.y; + effect->velocity.z += effect->accel.z; + + if (effect->timer) { + effect->timer--; + } else { + effect->alpha -= 10; + if (effect->alpha < 10) { + effect->isActive = false; + } + } + } + } +} + +void EnEgblock_DrawEffects(EnEgblock* this, PlayState* play) { + GraphicsContext* gfxCtx = play->state.gfxCtx; + EnEgblockEffect* effect = this->effects; + s16 i; + + OPEN_DISPS(gfxCtx); + + func_8012C28C(play->state.gfxCtx); + + for (i = 0; i < ARRAY_COUNT(this->effects); i++, effect++) { + if (effect->isActive) { + switch (effect->type) { + case EGBLOCK_EFFECT_DEBRIS_SOLID: + case EGBLOCK_EFFECT_DEBRIS_FLAT: + Matrix_Push(); + + Matrix_Translate(effect->pos.x, effect->pos.y, effect->pos.z, MTXMODE_NEW); + Matrix_Scale(effect->scale, effect->scale, effect->scale, MTXMODE_APPLY); + Matrix_RotateYS(effect->rot.y, MTXMODE_APPLY); + Matrix_RotateXS(effect->rot.x, MTXMODE_APPLY); + Matrix_RotateZS(effect->rot.z, MTXMODE_APPLY); + + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x80, 255, 255, 255, 255); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 255, 255, effect->alpha); + + if (effect->type == EGBLOCK_EFFECT_DEBRIS_SOLID) { + gSPDisplayList(POLY_OPA_DISP++, gEyegoreEffectSolidDebrisDL); + } else { + gSPDisplayList(POLY_OPA_DISP++, gEyegoreEffectFlatDebrisDL); + } + + Matrix_Pop(); + break; + + default: + break; + } + } + } + + CLOSE_DISPS(gfxCtx); +} diff --git a/src/overlays/actors/ovl_En_Egblock/z_en_egblock.h b/src/overlays/actors/ovl_En_Egblock/z_en_egblock.h index 88abf1efe..2d875c4d2 100644 --- a/src/overlays/actors/ovl_En_Egblock/z_en_egblock.h +++ b/src/overlays/actors/ovl_En_Egblock/z_en_egblock.h @@ -7,11 +7,40 @@ struct EnEgblock; typedef void (*EnEgblockActionFunc)(struct EnEgblock*, PlayState*); +#define EGBLOCK_GET_PARAM_7F(thisx) ((thisx)->params & 0x7F) +#define EGBLOCK_GET_PARAM_F80(thisx) (((thisx)->params >> 7) & 0x1F) +#define EGBLOCK_GET_TYPE(thisx) (((thisx)->params >> 12) & 0xF) + +#define EGBLOCK_PARAMS(type, param1, param2) ((((type) & 0xF) << 12) | (((param1) & 0x1F) << 7) | ((param2) & 0x7F)) + +#define EGBLOCK_TYPE_ACTIVE 0 + +#define EGBLOCK_EFFECT_COUNT 50 + +typedef struct { + /* 0x00 */ u8 isActive; + /* 0x04 */ Vec3f pos; + /* 0x10 */ s16 alpha; + /* 0x12 */ s16 timer; + /* 0x14 */ s16 type; + /* 0x18 */ Vec3f velocity; + /* 0x24 */ Vec3f accel; + /* 0x30 */ Vec3s rot; + /* 0x38 */ f32 scale; +} EnEgblockEffect; // size = 0x3C + typedef struct EnEgblock { - /* 0x000 */ Actor actor; - /* 0x144 */ char unk_144[0x5C]; + /* 0x000 */ DynaPolyActor dyna; + /* 0x15C */ UNK_TYPE1 unk_15C[0x44]; // SkelAnime? /* 0x1A0 */ EnEgblockActionFunc actionFunc; - /* 0x1A4 */ char unk_1A4[0xC10]; + /* 0x1A4 */ s16 type; + /* 0x1A6 */ s16 paramF80; + /* 0x1A8 */ s16 param7F; + /* 0x1AA */ s16 timer; + /* 0x1AC */ s16 inactive; + /* 0x1AE */ UNK_TYPE1 unk_1AE[2]; + /* 0x1B0 */ UNK_TYPE1 unk_1B0[0x4C]; // ColliderCylinder? + /* 0x1FC */ EnEgblockEffect effects[EGBLOCK_EFFECT_COUNT]; } EnEgblock; // size = 0xDB4 #endif // Z_EN_EGBLOCK_H diff --git a/src/overlays/actors/ovl_En_Egol/z_en_egol.c b/src/overlays/actors/ovl_En_Egol/z_en_egol.c index 6b8185249..731497436 100644 --- a/src/overlays/actors/ovl_En_Egol/z_en_egol.c +++ b/src/overlays/actors/ovl_En_Egol/z_en_egol.c @@ -5,106 +5,292 @@ */ #include "z_en_egol.h" +#include "objects/object_eg/object_eg.h" +#include "objects/gameplay_keep/gameplay_keep.h" +#include "overlays/actors/ovl_En_Estone/z_en_estone.h" +#include "overlays/actors/ovl_En_Arrow/z_en_arrow.h" +#include "overlays/effects/ovl_Effect_Ss_Hitmark/z_eff_ss_hitmark.h" #define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_10 | ACTOR_FLAG_20 | ACTOR_FLAG_80000000) #define THIS ((EnEgol*)thisx) +typedef enum { + /* 0 */ EYEGORE_ACTION_WAIT, + /* 1 */ EYEGORE_ACTION_STAND, + /* 2 */ EYEGORE_ACTION_WALK, + /* 3 */ EYEGORE_ACTION_RETREAT, + /* 4 */ EYEGORE_ACTION_LASER, + /* 5 */ EYEGORE_ACTION_SLAM, + /* 6 */ EYEGORE_ACTION_PUNCH, + /* 7 */ EYEGORE_ACTION_SLAM_WAIT, + /* 8 */ EYEGORE_ACTION_STUNNED, + /* 9 */ EYEGORE_ACTION_STUN_END, + /* 10 */ EYEGORE_ACTION_SLAM_END, + /* 11 */ EYEGORE_ACTION_DAMAGED, + /* 12 */ EYEGORE_ACTION_STOP, + /* 13 */ EYEGORE_ACTION_DYING, + /* 14 */ EYEGORE_ACTION_DEAD +} EnEgolAction; + +typedef enum { + /* 0 */ EYEGORE_EFFECT_IMPACT, + /* 1 */ EYEGORE_EFFECT_PIECE_LARGE, + /* 2 */ EYEGORE_EFFECT_PIECE_SMALL, + /* 3 */ EYEGORE_EFFECT_DEBRIS, +} EnEgolEffectType; + +typedef enum { + /* 0 */ EYEGORE_ANIM_STAND, + /* 1 */ EYEGORE_ANIM_WALK, + /* 2 */ EYEGORE_ANIM_SLAM, + /* 3 */ EYEGORE_ANIM_SLAM_WAIT, + /* 4 */ EYEGORE_ANIM_SLAM_END, + /* 5 */ EYEGORE_ANIM_DAMAGED, + /* 6 */ EYEGORE_ANIM_DEATH, + /* 7 */ EYEGORE_ANIM_LASER, + /* 8 */ EYEGORE_ANIM_LASER_END, // unused + /* 9 */ EYEGORE_ANIM_STUNNED, + /* 10 */ EYEGORE_ANIM_STUN_END, + /* 11 */ EYEGORE_ANIM_RETREAT, + /* 12 */ EYEGORE_ANIM_SIT, + /* 13 */ EYEGORE_ANIM_LEFT_PUNCH, + /* 14 */ EYEGORE_ANIM_RIGHT_PUNCH, + /* 15 */ EYEGORE_ANIM_MAX, +} EnEgolAnimation; + +typedef enum { + /* 0 */ EYEGORE_LASER_OFF, + /* 1 */ EYEGORE_LASER_START, + /* 2 */ EYEGORE_LASER_CHARGING, + /* 3 */ EYEGORE_LASER_FIRE, + /* 7 */ EYEGORE_LASER_ON = 7, +} EnEgolLaserState; + void EnEgol_Init(Actor* thisx, PlayState* play); void EnEgol_Destroy(Actor* thisx, PlayState* play); void EnEgol_Update(Actor* thisx, PlayState* play); -void EnEgol_Draw(Actor* thisx, PlayState* play); +void EnEgol_Draw(Actor* thisx, PlayState* play2); -#if 0 -// static ColliderJntSphElementInit sJntSphElementsInit[6] = { -static ColliderJntSphElementInit D_80A80C64[6] = { +void EnEgol_SetupWait(EnEgol* this); +void EnEgol_Wait(EnEgol* this, PlayState* play); +void EnEgol_SetupStand(EnEgol* this); +void EnEgol_Stand(EnEgol* this, PlayState* play); +void EnEgol_SetupWalk(EnEgol* this); +void EnEgol_Walk(EnEgol* this, PlayState* play); +void EnEgol_SetupRetreat(EnEgol* this); +void EnEgol_Retreat(EnEgol* this, PlayState* play); +void EnEgol_SetupLaser(EnEgol* this); +void EnEgol_Laser(EnEgol* this, PlayState* play); +void EnEgol_SetupStop(EnEgol* this); +void EnEgol_Stop(EnEgol* this, PlayState* play); +void EnEgol_SetupSlam(EnEgol* this); +void EnEgol_Slam(EnEgol* this, PlayState* play); +void EnEgol_SetupPunch(EnEgol* this); +void EnEgol_Punch(EnEgol* this, PlayState* play); +void EnEgol_SetupSlamWait(EnEgol* this); +void EnEgol_SlamWait(EnEgol* this, PlayState* play); +void EnEgol_SetupStunned(EnEgol* this); +void EnEgol_Stunned(EnEgol* this, PlayState* play); +void EnEgol_SetupStunEnd(EnEgol* this); +void EnEgol_StunEnd(EnEgol* this, PlayState* play); +void EnEgol_SetupSlamEnd(EnEgol* this); +void EnEgol_SlamEnd(EnEgol* this, PlayState* play); +void EnEgol_SetupDamaged(EnEgol* this); +void EnEgol_Damaged(EnEgol* this, PlayState* play); +void EnEgol_StartDeathCutscene(EnEgol* this, PlayState* play); +void EnEgol_Death(EnEgol* this, PlayState* play); + +void EnEgol_SpawnEffect(EnEgol* this, Vec3f* pos, Vec3s* rot, s16 lifetime, f32 scale, s16 type); +void EnEgol_UpdateEffects(EnEgol* this, PlayState* play); +void EnEgol_DrawEffects(EnEgol* this, PlayState* play); + +static ColliderJntSphElementInit sEyeJntSphElementsInit[1] = { { - { ELEMTYPE_UNK2, { 0xF7CFFFFF, 0x04, 0x10 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, }, - { 6, { { 0, 0, 0 }, 0 }, 1 }, - }, - { - { ELEMTYPE_UNK2, { 0xF7CFFFFF, 0x04, 0x10 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, }, - { 9, { { 0, 0, 0 }, 0 }, 1 }, - }, - { - { ELEMTYPE_UNK2, { 0xF7CFFFFF, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, }, - { 3, { { 0, 0, 0 }, 0 }, 1 }, - }, - { - { ELEMTYPE_UNK2, { 0xF7CFFFFF, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_NONE, }, - { 4, { { 0, 0, 0 }, 0 }, 1 }, - }, - { - { ELEMTYPE_UNK2, { 0xF7CFFFFF, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_NONE, }, - { 7, { { 0, 0, 0 }, 0 }, 1 }, - }, - { - { ELEMTYPE_UNK2, { 0xF7CFFFFF, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, }, - { 23, { { 0, 0, 0 }, 0 }, 1 }, + { + ELEMTYPE_UNK2, + { 0xF7CFFFFF, 0x00, 0x00 }, + { 0xF7CFFFFF, 0x00, 0x00 }, + TOUCH_NONE | TOUCH_SFX_NORMAL, + BUMP_ON, + OCELEM_NONE, + }, + { EYEGORE_LIMB_EYE_COLLIDER, { { 0, 0, 0 }, 0 }, 1 }, }, }; -// static ColliderJntSphInit sJntSphInit = { -static ColliderJntSphInit D_80A80D3C = { - { COLTYPE_METAL, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_JNTSPH, }, - ARRAY_COUNT(sJntSphElementsInit), D_80A80C64, // sJntSphElementsInit, -}; - -// static ColliderJntSphElementInit sJntSphElementsInit[1] = { -static ColliderJntSphElementInit D_80A80C40[1] = { +static ColliderJntSphElementInit sBodySphElementsInit[6] = { { - { ELEMTYPE_UNK2, { 0xF7CFFFFF, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_NONE, }, - { 14, { { 0, 0, 0 }, 0 }, 1 }, + { + ELEMTYPE_UNK2, + { 0xF7CFFFFF, 0x04, 0x10 }, + { 0xF7CFFFFF, 0x00, 0x00 }, + TOUCH_ON | TOUCH_SFX_NORMAL, + BUMP_ON, + OCELEM_ON, + }, + { EYEGORE_LIMB_LEFT_HAND, { { 0, 0, 0 }, 0 }, 1 }, + }, + { + { + ELEMTYPE_UNK2, + { 0xF7CFFFFF, 0x04, 0x10 }, + { 0xF7CFFFFF, 0x00, 0x00 }, + TOUCH_ON | TOUCH_SFX_NORMAL, + BUMP_ON, + OCELEM_ON, + }, + { EYEGORE_LIMB_RIGHT_HAND, { { 0, 0, 0 }, 0 }, 1 }, + }, + { + { + ELEMTYPE_UNK2, + { 0xF7CFFFFF, 0x00, 0x00 }, + { 0xF7CFFFFF, 0x00, 0x00 }, + TOUCH_NONE | TOUCH_SFX_NORMAL, + BUMP_ON, + OCELEM_ON, + }, + { EYEGORE_LIMB_HEAD, { { 0, 0, 0 }, 0 }, 1 }, + }, + { + { + ELEMTYPE_UNK2, + { 0xF7CFFFFF, 0x00, 0x00 }, + { 0xF7CFFFFF, 0x00, 0x00 }, + TOUCH_NONE | TOUCH_SFX_NORMAL, + BUMP_ON, + OCELEM_NONE, + }, + { EYEGORE_LIMB_LEFT_SHOULDER, { { 0, 0, 0 }, 0 }, 1 }, + }, + { + { + ELEMTYPE_UNK2, + { 0xF7CFFFFF, 0x00, 0x00 }, + { 0xF7CFFFFF, 0x00, 0x00 }, + TOUCH_NONE | TOUCH_SFX_NORMAL, + BUMP_ON, + OCELEM_NONE, + }, + { EYEGORE_LIMB_RIGHT_SHOULDER, { { 0, 0, 0 }, 0 }, 1 }, + }, + { + { + ELEMTYPE_UNK2, + { 0xF7CFFFFF, 0x00, 0x00 }, + { 0xF7CFFFFF, 0x00, 0x00 }, + TOUCH_NONE | TOUCH_SFX_NORMAL, + BUMP_ON, + OCELEM_ON, + }, + { EYEGORE_LIMB_FAULDS, { { 0, 0, 0 }, 0 }, 1 }, }, }; -// static ColliderJntSphInit sJntSphInit = { -static ColliderJntSphInit D_80A80D4C = { - { COLTYPE_NONE, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_JNTSPH, }, - ARRAY_COUNT(sJntSphElementsInit), D_80A80C40, // sJntSphElementsInit, +static ColliderJntSphInit sBodyJntSphInit = { + { + COLTYPE_METAL, + AT_ON | AT_TYPE_ENEMY, + AC_ON | AC_TYPE_PLAYER, + OC1_ON | OC1_TYPE_ALL, + OC2_TYPE_1, + COLSHAPE_JNTSPH, + }, + ARRAY_COUNT(sBodySphElementsInit), + sBodySphElementsInit, }; -// static ColliderQuadInit sQuadInit = { -static ColliderQuadInit D_80A80D5C = { - { COLTYPE_NONE, AT_ON | AT_TYPE_ENEMY, AC_NONE, OC1_NONE, OC2_NONE, COLSHAPE_QUAD, }, - { ELEMTYPE_UNK0, { 0xF7CFFFFF, 0x07, 0x10 }, { 0x00000000, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL | TOUCH_UNK7, BUMP_NONE, OCELEM_NONE, }, +static ColliderJntSphInit sEyeJntSphInit = { + { + COLTYPE_NONE, + AT_ON | AT_TYPE_ENEMY, + AC_ON | AC_TYPE_PLAYER, + OC1_ON | OC1_TYPE_ALL, + OC2_TYPE_1, + COLSHAPE_JNTSPH, + }, + ARRAY_COUNT(sEyeJntSphElementsInit), + sEyeJntSphElementsInit, +}; + +static ColliderQuadInit sLaserQuadInit = { + { + COLTYPE_NONE, + AT_ON | AT_TYPE_ENEMY, + AC_NONE, + OC1_NONE, + OC2_NONE, + COLSHAPE_QUAD, + }, + { + ELEMTYPE_UNK0, + { 0xF7CFFFFF, 0x07, 0x10 }, + { 0x00000000, 0x00, 0x00 }, + TOUCH_ON | TOUCH_SFX_NORMAL | TOUCH_UNK7, + BUMP_NONE, + OCELEM_NONE, + }, { { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } }, }; -// static DamageTable sDamageTable = { -static DamageTable D_80A80DAC = { - /* Deku Nut */ DMG_ENTRY(0, 0xF), - /* Deku Stick */ DMG_ENTRY(0, 0xF), - /* Horse trample */ DMG_ENTRY(0, 0x0), - /* Explosives */ DMG_ENTRY(2, 0xE), - /* Zora boomerang */ DMG_ENTRY(1, 0xE), - /* Normal arrow */ DMG_ENTRY(1, 0xE), - /* UNK_DMG_0x06 */ DMG_ENTRY(0, 0x0), - /* Hookshot */ DMG_ENTRY(1, 0xE), - /* Goron punch */ DMG_ENTRY(1, 0xE), - /* Sword */ DMG_ENTRY(0, 0xF), - /* Goron pound */ DMG_ENTRY(0, 0xF), - /* Fire arrow */ DMG_ENTRY(2, 0xE), - /* Ice arrow */ DMG_ENTRY(2, 0xE), - /* Light arrow */ DMG_ENTRY(2, 0x4), - /* Goron spikes */ DMG_ENTRY(1, 0xE), - /* Deku spin */ DMG_ENTRY(1, 0xE), - /* Deku bubble */ DMG_ENTRY(1, 0xE), - /* Deku launch */ DMG_ENTRY(2, 0xE), - /* UNK_DMG_0x12 */ DMG_ENTRY(0, 0xF), - /* Zora barrier */ DMG_ENTRY(0, 0x0), - /* Normal shield */ DMG_ENTRY(0, 0x0), - /* Light ray */ DMG_ENTRY(0, 0xF), - /* Thrown object */ DMG_ENTRY(1, 0xE), - /* Zora punch */ DMG_ENTRY(1, 0xE), - /* Spin attack */ DMG_ENTRY(0, 0xF), - /* Sword beam */ DMG_ENTRY(0, 0x0), - /* Normal Roll */ DMG_ENTRY(0, 0x0), - /* UNK_DMG_0x1B */ DMG_ENTRY(0, 0x0), - /* UNK_DMG_0x1C */ DMG_ENTRY(0, 0x0), - /* Unblockable */ DMG_ENTRY(0, 0x0), - /* UNK_DMG_0x1E */ DMG_ENTRY(0, 0x0), - /* Powder Keg */ DMG_ENTRY(1, 0xF), +typedef enum { + /* 0x0 */ EYEGORE_DMGEFF_IMMUNE_0, + /* 0x4 */ EYEGORE_DMGEFF_LIGHT_ARROW = 4, + /* 0xE */ EYEGORE_DMGEFF_NONE = 0xE, + /* 0xF */ EYEGORE_DMGEFF_IMMUNE_F, +} EnEgolDamageEffect; + +static DamageTable sDamageTable = { + /* Deku Nut */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_F), + /* Deku Stick */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_F), + /* Horse trample */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_0), + /* Explosives */ DMG_ENTRY(2, EYEGORE_DMGEFF_NONE), + /* Zora boomerang */ DMG_ENTRY(1, EYEGORE_DMGEFF_NONE), + /* Normal arrow */ DMG_ENTRY(1, EYEGORE_DMGEFF_NONE), + /* UNK_DMG_0x06 */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_0), + /* Hookshot */ DMG_ENTRY(1, EYEGORE_DMGEFF_NONE), + /* Goron punch */ DMG_ENTRY(1, EYEGORE_DMGEFF_NONE), + /* Sword */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_F), + /* Goron pound */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_F), + /* Fire arrow */ DMG_ENTRY(2, EYEGORE_DMGEFF_NONE), + /* Ice arrow */ DMG_ENTRY(2, EYEGORE_DMGEFF_NONE), + /* Light arrow */ DMG_ENTRY(2, EYEGORE_DMGEFF_LIGHT_ARROW), + /* Goron spikes */ DMG_ENTRY(1, EYEGORE_DMGEFF_NONE), + /* Deku spin */ DMG_ENTRY(1, EYEGORE_DMGEFF_NONE), + /* Deku bubble */ DMG_ENTRY(1, EYEGORE_DMGEFF_NONE), + /* Deku launch */ DMG_ENTRY(2, EYEGORE_DMGEFF_NONE), + /* UNK_DMG_0x12 */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_F), + /* Zora barrier */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_0), + /* Normal shield */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_0), + /* Light ray */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_F), + /* Thrown object */ DMG_ENTRY(1, EYEGORE_DMGEFF_NONE), + /* Zora punch */ DMG_ENTRY(1, EYEGORE_DMGEFF_NONE), + /* Spin attack */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_F), + /* Sword beam */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_0), + /* Normal Roll */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_0), + /* UNK_DMG_0x1B */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_0), + /* UNK_DMG_0x1C */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_0), + /* Unblockable */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_0), + /* UNK_DMG_0x1E */ DMG_ENTRY(0, EYEGORE_DMGEFF_IMMUNE_0), + /* Powder Keg */ DMG_ENTRY(1, EYEGORE_DMGEFF_IMMUNE_F), +}; + +static Color_RGB8 sEyePrimColors[] = { + { 175, 255, 255 }, // light cyan + { 195, 245, 10 }, // lime green + { 255, 55, 205 }, // magenta +}; + +static Color_RGB8 sEyeEnvColors[] = { + { 255, 115, 155 }, // pink + { 40, 155, 155 }, // dark cyan + { 215, 255, 255 }, // light cyan +}; + +static Color_RGB8 sLightOrbColors[] = { + { 255, 255, 255 }, // white + { 255, 255, 255 }, // white }; ActorInit En_Egol_InitVars = { @@ -119,99 +305,1344 @@ ActorInit En_Egol_InitVars = { (ActorFunc)EnEgol_Draw, }; -#endif +void EnEgol_ChangeAnim(EnEgol* this, s32 animation) { + static AnimationHeader* sAnimations[EYEGORE_ANIM_MAX] = { + &gEyegoreStandAnim, &gEyegoreWalkAnim, &gEyegoreSlamAnim, + &gEyegoreSlamWaitAnim, &gEyegoreSlamEndAnim, &gEyegoreDamagedAnim, + &gEyegoreDeathAnim, &gEyegoreLaserAnim, &gEyegoreUnusedLaserEndAnim, + &gEyegoreStunnedAnim, &gEyegoreStunEndAnim, &gEyegoreRetreatAnim, + &gEyegoreSitAnim, &gEyegoreLeftPunchAnim, &gEyegoreRightPunchAnim, + }; + static u8 sAnimModes[EYEGORE_ANIM_MAX] = { + ANIMMODE_ONCE, ANIMMODE_LOOP, ANIMMODE_ONCE, ANIMMODE_ONCE, ANIMMODE_ONCE, + ANIMMODE_ONCE, ANIMMODE_ONCE, ANIMMODE_ONCE, ANIMMODE_ONCE, ANIMMODE_ONCE, + ANIMMODE_ONCE, ANIMMODE_LOOP, ANIMMODE_ONCE, ANIMMODE_ONCE, ANIMMODE_ONCE, + }; + this->animation = animation; + this->animEndFrame = Animation_GetLastFrame(sAnimations[this->animation]); + Animation_Change(&this->skelAnime, sAnimations[this->animation], 1.0f, 0.0f, this->animEndFrame, + sAnimModes[this->animation], 0.0f); +} -extern ColliderJntSphElementInit D_80A80C64[6]; -extern ColliderJntSphInit D_80A80D3C; -extern ColliderJntSphElementInit D_80A80C40[1]; -extern ColliderJntSphInit D_80A80D4C; -extern ColliderQuadInit D_80A80D5C; -extern DamageTable D_80A80DAC; +void EnEgol_FootstepEffects(EnEgol* this, PlayState* play, f32 leftFootFrame, f32 rightFootFrame) { + if (Animation_OnFrame(&this->skelAnime, leftFootFrame) || Animation_OnFrame(&this->skelAnime, rightFootFrame)) { + Vec3f spawnPos; + Player* player = GET_PLAYER(play); + s32 quakeSize; + s32 pad; -extern UNK_TYPE D_06000040; -extern UNK_TYPE D_060094E4; -extern UNK_TYPE D_0600EE4C; + Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_EYEGOLE_WALK); + quakeSize = 4 - (s32)(fabsf(player->actor.world.pos.y - this->actor.world.pos.y) * 0.02f); + if (quakeSize > 4) { + quakeSize = 4; + } else if (quakeSize < 1) { + quakeSize = 1; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7C990.s") + if (player->stateFlags3 != PLAYER_STATE3_1000000) { + func_800BC848(&this->actor, play, quakeSize, 2); + } + if (Animation_OnFrame(&this->skelAnime, leftFootFrame)) { + Math_Vec3f_Copy(&spawnPos, &this->leftFootPos); + spawnPos.y = this->actor.floorHeight; + Actor_SpawnFloorDustRing(play, &this->actor, &spawnPos, 0.0f, 10, 6.0f, 50, 30, true); + } else { + Math_Vec3f_Copy(&spawnPos, &this->rightFootPos); + spawnPos.y = this->actor.floorHeight; + Actor_SpawnFloorDustRing(play, &this->actor, &spawnPos, 0.0f, 10, 6.0f, 50, 30, true); + } + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7CA18.s") +void EnEgol_DestroyBlocks(EnEgol* this, PlayState* play, Vec3f pos1, Vec3f pos2) { + Actor* prop = play->actorCtx.actorLists[ACTORCAT_PROP].first; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7CBC4.s") + while (prop != NULL) { + if (prop->id != ACTOR_EN_EGBLOCK) { + prop = prop->next; + continue; + } + if (prop->colChkInfo.health > 0) { + Vec3f blockTo1; + Vec3f blockTo2; + f32 dist1; + f32 dist2; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7CD08.s") + blockTo1.x = pos1.x - prop->world.pos.x; + blockTo1.y = pos1.y - prop->world.pos.y; + blockTo1.z = pos1.z - prop->world.pos.z; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/EnEgol_Init.s") + blockTo2.x = pos2.x - prop->world.pos.x; + blockTo2.y = pos2.y - prop->world.pos.y; + blockTo2.z = pos2.z - prop->world.pos.z; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/EnEgol_Destroy.s") + dist1 = sqrtf(SQXZ(blockTo1)); + dist2 = sqrtf(SQXZ(blockTo2)); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7D140.s") + if ((dist1 < 40.0f) || (dist2 < 40.0f)) { + dist1 = sqrtf(SQ(blockTo1.y)); + dist2 = sqrtf(SQ(blockTo2.y)); + if ((dist1 < 40.0f) || (dist2 < 40.0f)) { + prop->colChkInfo.health = 0; + Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_WALL_BROKEN); + break; + } + } + } + prop = prop->next; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7D168.s") +void EnEgol_GetWaypoint(EnEgol* this) { + if ((this->pathIndex != -1) && (this->path != NULL) && + !SubS_CopyPointFromPath(this->path, this->waypoint, &this->waypointPos)) { + Actor_Kill(&this->actor); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7D1E4.s") +#define EYEGORE_SET_SPH_DIM(element, centerX, centerY, centerZ, radiusV, scaleV) \ + element.dim.modelSphere.radius = radiusV; \ + element.dim.scale = scaleV; \ + element.dim.modelSphere.center.x = centerX; \ + element.dim.modelSphere.center.y = centerY; \ + element.dim.modelSphere.center.z = centerZ -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7D240.s") +void EnEgol_Init(Actor* thisx, PlayState* play) { + EnEgol* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7D27C.s") + this->actor.gravity = -2.0f; + Actor_SetScale(&this->actor, 0.015f); + this->actor.colChkInfo.damageTable = &sDamageTable; + ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 60.0f); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7D2C4.s") + this->actor.colChkInfo.mass = MASS_IMMOVABLE; + this->actor.hintId = TATL_HINT_ID_EYEGORE; + this->actor.colChkInfo.health = 8; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7D710.s") + SkelAnime_InitFlex(play, &this->skelAnime, &gEyegoreSkel, &gEyegoreStandAnim, this->jointTable, this->morphTable, + EYEGORE_LIMB_MAX); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7D780.s") + Collider_InitAndSetJntSph(play, &this->bodyCollider, &this->actor, &sBodyJntSphInit, this->bodyElements); + Collider_InitAndSetJntSph(play, &this->eyeCollider, &this->actor, &sEyeJntSphInit, this->eyeElements); + Collider_InitAndSetQuad(play, &this->laserCollider, &this->actor, &sLaserQuadInit); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7DAAC.s") + this->pathIndex = EYEGORE_GET_PATH(&this->actor); + if (this->pathIndex == 0x3F) { + this->pathIndex = -1; + Actor_Kill(&this->actor); + return; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7DAF0.s") + this->wakeupRange = this->actor.world.rot.x * 20.0f; + this->actor.world.rot.x = 0; + if (this->wakeupRange < 0.0f) { + this->wakeupRange = 200.0f; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7E2E8.s") + this->minLaserRange = this->actor.world.rot.z * 20.0f; + this->actor.world.rot.z = 0; + if (this->minLaserRange < 0.0f) { + this->minLaserRange = 200.0f; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7E344.s") + this->path = SubS_GetPathByIndex(play, this->pathIndex, 0x3F); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7E478.s") + EYEGORE_SET_SPH_DIM(this->eyeCollider.elements[0], 500, 0, 0, 26, 1.0f); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7E4B4.s") + EYEGORE_SET_SPH_DIM(this->bodyCollider.elements[0], 1800, 100, 0, 20, 1.0f); + EYEGORE_SET_SPH_DIM(this->bodyCollider.elements[1], 1800, 100, 0, 20, 1.0f); + EYEGORE_SET_SPH_DIM(this->bodyCollider.elements[2], 1000, -500, 0, 35, 1.0f); + EYEGORE_SET_SPH_DIM(this->bodyCollider.elements[3], 200, 200, 0, 25, 1.0f); + EYEGORE_SET_SPH_DIM(this->bodyCollider.elements[4], 300, 200, 0, 25, 1.0f); + EYEGORE_SET_SPH_DIM(this->bodyCollider.elements[5], 2100, -300, 0, 37, 1.0f); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7E7EC.s") + this->switchFlag = EYEGORE_GET_SWITCH(&this->actor); + if (this->switchFlag == 0x7F) { + this->switchFlag = -1; + } + if ((this->switchFlag > -1) && Flags_GetSwitch(play, this->switchFlag)) { + Actor_Kill(&this->actor); + return; + } + EnEgol_SetupWait(this); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7E820.s") +void EnEgol_Destroy(Actor* thisx, PlayState* play) { + EnEgol* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7E924.s") + Collider_DestroyJntSph(play, &this->bodyCollider); + Collider_DestroyJntSph(play, &this->eyeCollider); + Collider_DestroyQuad(play, &this->laserCollider); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7E970.s") +void EnEgol_SetupWait(EnEgol* this) { + this->actor.flags |= ACTOR_FLAG_8000000; + this->action = EYEGORE_ACTION_WAIT; + this->actionFunc = EnEgol_Wait; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7E9D0.s") +void EnEgol_Wait(EnEgol* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + s16 angleToFacing = this->actor.shape.rot.y - this->actor.yawTowardsPlayer; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7EA28.s") + if ((curFrame >= this->animEndFrame) && (ABS_ALT(angleToFacing) < 0x3000) && + (this->actor.xzDistToPlayer < this->wakeupRange)) { + EnEgol_SetupStand(this); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7EA88.s") +void EnEgol_SetupStand(EnEgol* this) { + EnEgol_ChangeAnim(this, EYEGORE_ANIM_STAND); + this->actor.flags &= ~ACTOR_FLAG_8000000; + this->action = EYEGORE_ACTION_STAND; + Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_EYEGOLE_STAND); + this->actionFunc = EnEgol_Stand; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7EAD8.s") +void EnEgol_Stand(EnEgol* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7EB14.s") + if (curFrame >= this->animEndFrame) { + EnEgol_SetupWalk(this); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7EB54.s") +void EnEgol_SetupWalk(EnEgol* this) { + EnEgol_ChangeAnim(this, EYEGORE_ANIM_WALK); + this->laserCount = 0; + EnEgol_GetWaypoint(this); + this->action = EYEGORE_ACTION_WALK; + this->actionFunc = EnEgol_Walk; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7EB90.s") +void EnEgol_Walk(EnEgol* this, PlayState* play) { + s16 angleToFacing = this->actor.world.rot.y - this->actor.yawTowardsPlayer; + f32 curFrame = this->skelAnime.curFrame; + Player* player = GET_PLAYER(play); + Vec3f spawnPos; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7EBDC.s") + Math_SmoothStepToS(&this->headRot, 0, 1, 0x3E8, 0); + Math_Vec3f_Copy(&spawnPos, &gZeroVec3f); + if (curFrame >= this->animEndFrame) { + this->laserCount++; + if (this->laserCount > 0) { + this->laserCount = 0; + if (this->actor.xzDistToPlayer > this->minLaserRange) { + EnEgol_SetupLaser(this); + return; + } + } + } + if ((this->actor.world.pos.y - 50.0f) <= player->actor.world.pos.y) { + if (Animation_OnFrame(&this->skelAnime, 24.0f)) { + Math_Vec3f_Copy(&spawnPos, &this->rightFootPos); + spawnPos.y = this->actor.floorHeight + 2.0f; + EnEgol_SpawnEffect(this, &spawnPos, &gZeroVec3s, 100, 0.005f, EYEGORE_EFFECT_IMPACT); + } + if (Animation_OnFrame(&this->skelAnime, 9.0f)) { + Math_Vec3f_Copy(&spawnPos, &this->leftFootPos); + spawnPos.y = this->actor.floorHeight + 2.0f; + EnEgol_SpawnEffect(this, &spawnPos, &gZeroVec3s, 100, 0.005f, EYEGORE_EFFECT_IMPACT); + } + } + if ((ABS_ALT(angleToFacing) < 0x3000) && (this->actor.xzDistToPlayer < 100.0f)) { + EnEgol_SetupSlam(this); + } else { + s16 angleBehind; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7EC84.s") + if (!((this->skelAnime.curFrame == 0.0f) || + ((9.0f <= this->skelAnime.curFrame) && (this->skelAnime.curFrame <= 15.0f)) || + ((24.0f <= this->skelAnime.curFrame) && (this->skelAnime.curFrame <= 29.0f)))) { + Math_ApproachF(&this->actor.world.pos.x, this->waypointPos.x, 0.5f, + fabsf(Math_SinS(this->actor.world.rot.y) * 4.0f)); + Math_ApproachF(&this->actor.world.pos.z, this->waypointPos.z, 0.5f, + fabsf(Math_CosS(this->actor.world.rot.y) * 4.0f)); + } + Math_SmoothStepToS(&this->actor.world.rot.y, Math_Vec3f_Yaw(&this->actor.world.pos, &this->waypointPos), 1, + 0x7D0, 0); + EnEgol_FootstepEffects(this, play, 9.0f, 24.0f); + angleBehind = this->actor.world.rot.y - this->actor.yawTowardsPlayer + 0x8000; + if (ABS_ALT(angleBehind) < 0x2000) { + this->waypoint--; + if (this->waypoint < 0) { + this->waypoint = 0; + } + EnEgol_SetupStop(this); + } else { + f32 dx = this->actor.world.pos.x - this->waypointPos.x; + f32 dz = this->actor.world.pos.z - this->waypointPos.z; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7ED14.s") + if (sqrtf(SQ(dx) + SQ(dz)) < 4.0f) { + if (this->path != NULL) { + this->waypoint++; + if (this->waypoint >= this->path->count) { + this->waypoint -= 2; + if (this->waypoint < 0) { + this->waypoint = 0; + } + EnEgol_SetupStop(this); + } + EnEgol_GetWaypoint(this); + } + } + if (this->actor.wallBgId != BGCHECK_SCENE) { + EnEgol_DestroyBlocks(this, play, this->rightFootPos, this->leftFootPos); + } + } + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7EFB8.s") +void EnEgol_SetupRetreat(EnEgol* this) { + EnEgol_ChangeAnim(this, EYEGORE_ANIM_RETREAT); + this->laserCount = 0; + EnEgol_GetWaypoint(this); + this->actor.world.rot.y = Math_Vec3f_Yaw(&this->actor.world.pos, &this->waypointPos); + this->actor.shape.rot.y = this->actor.world.rot.y + 0x8000; + this->action = EYEGORE_ACTION_RETREAT; + this->actionFunc = EnEgol_Retreat; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/EnEgol_Update.s") +void EnEgol_Retreat(EnEgol* this, PlayState* play) { + s16 angleToFacing = this->actor.world.rot.y - this->actor.yawTowardsPlayer; + Vec3f toWaypoint; + Vec3f spawnPos; + Player* player = GET_PLAYER(play); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7F8E8.s") + if ((ABS_ALT(angleToFacing) < 0x3000) && (fabsf(this->actor.world.pos.y - player->actor.world.pos.y) < 50.0f) && + (this->actor.xzDistToPlayer < 100.0f) && (player->invincibilityTimer == 0)) { + func_800B8D50(play, &this->actor, 2.0f, (s32)randPlusMinusPoint5Scaled(0x2000) + this->actor.world.rot.y, 5.0f, + 0x10); + } + Math_Vec3f_Copy(&spawnPos, &gZeroVec3f); + if ((this->actor.world.pos.y - 50.0f) <= player->actor.world.pos.y) { + if (Animation_OnFrame(&this->skelAnime, 5.0f)) { + Math_Vec3f_Copy(&spawnPos, &this->rightFootPos); + spawnPos.y = this->actor.floorHeight + 2.0f; + EnEgol_SpawnEffect(this, &spawnPos, &gZeroVec3s, 100, 0.005f, EYEGORE_EFFECT_IMPACT); + } + if (Animation_OnFrame(&this->skelAnime, 0.0f)) { + Math_Vec3f_Copy(&spawnPos, &this->leftFootPos); + spawnPos.y = this->actor.floorHeight + 2.0f; + EnEgol_SpawnEffect(this, &spawnPos, &gZeroVec3s, 100, 0.005f, EYEGORE_EFFECT_IMPACT); + } + } + Math_ApproachF(&this->actor.world.pos.x, this->waypointPos.x, 0.5f, + fabsf(Math_SinS(this->actor.world.rot.y) * 10.0f)); + Math_ApproachF(&this->actor.world.pos.z, this->waypointPos.z, 0.5f, + fabsf(Math_CosS(this->actor.world.rot.y) * 10.0f)); + Math_SmoothStepToS(&this->actor.world.rot.y, Math_Vec3f_Yaw(&this->actor.world.pos, &this->waypointPos), 1, 0x7D0, + 0); + Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.world.rot.y + 0x8000, 1, 0x7D0, 0); + EnEgol_FootstepEffects(this, play, 5.0f, 0.0f); + toWaypoint.x = this->actor.world.pos.x - this->waypointPos.x; + toWaypoint.z = this->actor.world.pos.z - this->waypointPos.z; + if (sqrtf(SQXZ(toWaypoint)) < 4.0f) { + this->waypoint--; + if (this->waypoint < 0) { + this->waypoint = 0; + EnEgol_SetupStop(this); + } + EnEgol_GetWaypoint(this); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A7FAFC.s") +void EnEgol_SetupLaser(EnEgol* this) { + EnEgol_ChangeAnim(this, EYEGORE_ANIM_LASER); + this->actionTimer = 0; + this->laserCount = 0; + this->action = EYEGORE_ACTION_LASER; + this->actionFunc = EnEgol_Laser; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/EnEgol_Draw.s") +void EnEgol_Laser(EnEgol* this, PlayState* play) { + static s16 sLaserAngles[3] = { 0x1F40, 0xBB8, 0x7D0 }; + s32 pad1; + Vec3f stonePos; + s32 pad2; + CollisionPoly* colPoly; + Vec3f hitPos; + s32 bgId; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A80508.s") + if ((ABS_ALT((s16)(this->actor.world.rot.y - this->actor.yawTowardsPlayer)) < 0x3000) && + (this->actor.xzDistToPlayer < 100.0f)) { + this->chargingLaser = false; + this->chargeLevel = 0; + this->actionTimer = 0; + this->laserState = EYEGORE_LASER_OFF; + Math_Vec3f_Copy(&this->laserScale, &gZeroVec3f); + Math_Vec3f_Copy(&this->laserScaleTarget, &gZeroVec3f); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[1], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[3], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[0], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[2], &this->laserBase); + EnEgol_SetupSlam(this); + } else if (this->actor.xzDistToPlayer < this->minLaserRange) { + this->chargingLaser = false; + this->chargeLevel = 0; + this->actionTimer = 0; + this->laserState = EYEGORE_LASER_OFF; + Math_Vec3f_Copy(&this->laserScale, &gZeroVec3f); + Math_Vec3f_Copy(&this->laserScaleTarget, &gZeroVec3f); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[1], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[3], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[0], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[2], &this->laserBase); + EnEgol_SetupWalk(this); + } else { + if (this->chargingLaser) { + switch (this->chargeLevel) { + case 0: + this->waitTimer = 10; + this->chargeLevel++; + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A80750.s") + case 1: + Math_ApproachF(&this->chargeLightScale, 8.0f, 0.5f, 2.5f); + if (this->waitTimer == 0) { + this->waitTimer = 10; + this->chargeLevel++; + } + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Egol/func_80A80904.s") + case 2: + Math_ApproachF(&this->chargeLightScale, 1.0f, 0.5f, 1.0f); + if (this->waitTimer == 0) { + this->chargeLevel = 0; + this->laserState = EYEGORE_LASER_FIRE; + this->chargingLaser = false; + this->chargeLightScale = 0.0f; + } + break; + + default: + break; + } + this->chargeLightRot += 0x7D0; + } + if ((this->laserState != EYEGORE_LASER_OFF) || (this->laserCount != 0)) { + Math_SmoothStepToS(&this->headRot, -0x2710, 5, 0x1F4, 5); + } else { + Math_SmoothStepToS(&this->headRot, 0, 5, 0x1F4, 5); + } + if (this->laserState == EYEGORE_LASER_OFF) { + if (this->laserCount >= 3) { + EnEgol_SetupWalk(this); + } else { + this->laserRot.x = sLaserAngles[this->laserCount]; + this->laserScaleTarget.z = 0.0f; + this->laserScale.z = 0.0f; + if (this->laserCount == 0) { + this->laserState = EYEGORE_LASER_START; + } else { + this->laserState = EYEGORE_LASER_FIRE; + this->laserScaleTarget.x = 0.03f; + this->laserScaleTarget.y = 0.03f; + } + this->laserCount++; + } + } else if (this->laserState >= EYEGORE_LASER_FIRE) { + Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_EYEGOLE_BEAM - SFX_FLAG); + if (this->laserState != EYEGORE_LASER_OFF) { + EnEgol_DestroyBlocks(this, play, this->laserCollider.dim.quad[0], this->laserCollider.dim.quad[1]); + } + //! @bug this should check walls, too + if ((this->actionTimer == 0) && BgCheck_EntityLineTest1(&play->colCtx, &this->laserCollider.dim.quad[3], + &this->laserCollider.dim.quad[1], &hitPos, &colPoly, + false, true, false, true, &bgId)) { + Vec3s rotToNorm; + f32 nx; + f32 ny; + f32 nz; + s32 pad3; + s32 i; + s32 quakeSize; + Player* player = GET_PLAYER(play); + + nx = COLPOLY_GET_NORMAL(colPoly->normal.x); + ny = COLPOLY_GET_NORMAL(colPoly->normal.y); + nz = COLPOLY_GET_NORMAL(colPoly->normal.z); + + /*! @bug The following is supposed to calculate the rotation from vertical to the collision poly normal. + * However, the calculation is performed incorrectly. The correct calculation is + * rotToNorm.x = func_80086B30(nz, ny) * 0x8000 / M_PI; + * rotToNorm.z = func_80086B30(-nx, sqrtf(1.0f - SQ(nx))) * 0x8000 / M_PI; + */ + rotToNorm.x = -func_80086B30(-nz * ny, 1.0f) * 0x8000 / M_PI; + rotToNorm.z = func_80086B30(-nx * ny, 1.0f) * 0x8000 / M_PI; + + if ((this->actor.world.pos.y - 50.0f) <= player->actor.world.pos.y) { + EnEgol_SpawnEffect(this, &hitPos, &rotToNorm, 100, 0.02f, EYEGORE_EFFECT_IMPACT); + } + quakeSize = 4 - (s32)(fabsf(player->actor.world.pos.y - this->actor.world.pos.y) * 0.02f); + if (quakeSize > 4) { + quakeSize = 4; + } else if (quakeSize < 1) { + quakeSize = 1; + } + if (player->stateFlags3 != PLAYER_STATE3_1000000) { + func_800BC848(&this->actor, play, quakeSize, 2); + } + Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_EXPLOSION); + func_800B31BC(play, &hitPos, 40, -2, 255, 20); + func_800BBFB0(play, &hitPos, 6.0f, 2, 120, 20, true); + + if ((this->actor.world.pos.y - 50.0f <= player->actor.world.pos.y) && + (this->actor.floorBgId == BGCHECK_SCENE)) { + Math_Vec3f_Copy(&stonePos, &hitPos); + stonePos.x += Math_SinS(this->actor.world.rot.y) * 60.0f; + stonePos.z += Math_CosS(this->actor.world.rot.y) * 60.0f; + for (i = 0; i < 3; i++) { + Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ESTONE, stonePos.x, stonePos.y, stonePos.z, 0, + this->actor.world.rot.y, 0, ENESTONE_TYPE_SMALL); + } + } + if (this->actor.world.pos.y - 50.0f <= player->actor.world.pos.y) { + for (i = 0; i < 10; i++) { + EnEgol_SpawnEffect(this, &hitPos, &gZeroVec3s, 30, (Rand_ZeroFloat(1.0f) * 0.1f) + 0.2f, + EYEGORE_EFFECT_DEBRIS); + } + } + this->actionTimer = 1; + } + if (this->actionTimer != 0) { + this->actionTimer++; + if (this->actionTimer >= 5) { + this->laserState = EYEGORE_LASER_OFF; + Math_Vec3f_Copy(&this->laserScale, &gZeroVec3f); + Math_Vec3f_Copy(&this->laserScaleTarget, &gZeroVec3f); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[1], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[3], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[0], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[2], &this->laserBase); + this->actionTimer = 0; + } + } + Math_ApproachF(&this->laserScale.x, this->laserScaleTarget.x, 0.5f, 0.5f); + Math_ApproachF(&this->laserScale.y, this->laserScaleTarget.y, 0.5f, 0.5f); + Math_ApproachF(&this->laserScale.z, this->laserScaleTarget.z, 0.5f, 0.5f); + } + } +} + +void EnEgol_SetupStop(EnEgol* this) { + if (!this->isRetreating) { + EnEgol_ChangeAnim(this, EYEGORE_ANIM_LASER); + } else { + EnEgol_ChangeAnim(this, EYEGORE_ANIM_STUN_END); + } + this->action = EYEGORE_ACTION_STOP; + this->actionFunc = EnEgol_Stop; +} + +void EnEgol_Stop(EnEgol* this, PlayState* play) { + s32 isHome = false; + f32 curFrame = this->skelAnime.curFrame; + s16 angleToHome; + + EnEgol_FootstepEffects(this, play, 28.0f, 13.0f); + if (this->isRetreating) { + Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.home.rot.y, 5, 0xBB8, 5); + this->actor.world.rot.y = this->actor.shape.rot.y; + angleToHome = this->actor.world.rot.y - this->actor.home.rot.y; + } + if (!this->isRetreating) { + isHome = true; + } else if (ABS_ALT(angleToHome) < 0x64) { + this->actor.world.rot.y = this->actor.shape.rot.y = this->actor.home.rot.y; + isHome = true; + } + if (isHome && (curFrame >= this->animEndFrame)) { + this->isRetreating ^= true; + if (!this->isRetreating) { + EnEgol_ChangeAnim(this, EYEGORE_ANIM_SIT); + Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_EYEGOLE_SIT); + this->laserCount = 0; + this->actionFunc = EnEgol_Wait; + } else { + EnEgol_SetupRetreat(this); + } + } +} + +void EnEgol_SetupSlam(EnEgol* this) { + EnEgol_ChangeAnim(this, EYEGORE_ANIM_SLAM); + this->action = EYEGORE_ACTION_SLAM; + this->actionFunc = EnEgol_Slam; +} + +void EnEgol_Slam(EnEgol* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + + Math_SmoothStepToS(&this->headRot, 0, 1, 0x3E8, 0); + if (Animation_OnFrame(&this->skelAnime, 17.0f)) { + s32 i; + s32 spawnCount; + Player* player = GET_PLAYER(play); + Vec3f spawnPos; + f32 dyToPlayer = fabsf(player->actor.world.pos.y - this->actor.world.pos.y); + s32 quakeSize; + + Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_EXPLOSION); + quakeSize = 4 - (s32)(dyToPlayer * 0.02f); + if (quakeSize > 4) { + quakeSize = 4; + } else if (quakeSize < 1) { + quakeSize = 1; + } + func_800BC848(&this->actor, play, quakeSize, 2); + if (this->actor.floorBgId == BGCHECK_SCENE) { + Math_Vec3f_Copy(&spawnPos, &this->actor.world.pos); + spawnPos.x += Math_SinS(this->actor.world.rot.y) * 60.0f; + spawnPos.y = this->actor.floorHeight; + spawnPos.z += Math_CosS(this->actor.world.rot.y) * 60.0f; + spawnCount = Rand_S16Offset(1, 3); + for (i = 0; i < spawnCount; i++) { + Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ESTONE, spawnPos.x, spawnPos.y, spawnPos.z, 0, + this->actor.world.rot.y, 0, ENESTONE_TYPE_LARGE); + } + Actor_SpawnFloorDustRing(play, &this->actor, &spawnPos, 30.0f, 30, 10.0f, 100, 30, true); + Math_Vec3f_Copy(&spawnPos, &this->actor.world.pos); + spawnPos.x += Math_SinS(this->actor.world.rot.y) * 55.0f; + spawnPos.y = this->actor.floorHeight + 2.0f; + spawnPos.z += Math_CosS(this->actor.world.rot.y) * 55.0f; + EnEgol_SpawnEffect(this, &spawnPos, &gZeroVec3s, 100, 0.03f, EYEGORE_EFFECT_IMPACT); + } + EnEgol_DestroyBlocks(this, play, this->rightHandPos, this->leftHandPos); + } + if (this->animEndFrame <= curFrame) { + EnEgol_SetupSlamWait(this); + } else if ((this->skelAnime.curFrame <= 17.0f) && (this->skelAnime.curFrame >= 10.0f)) { + CollisionCheck_SetAT(play, &play->colChkCtx, &this->bodyCollider.base); + } +} + +void EnEgol_SetupPunch(EnEgol* this) { + this->bodyCollider.elements[0].dim.modelSphere.radius = 40; + this->bodyCollider.elements[1].dim.modelSphere.radius = 40; + this->hitPlayer = false; + this->action = EYEGORE_ACTION_PUNCH; + this->actionFunc = EnEgol_Punch; +} + +void EnEgol_Punch(EnEgol* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + + Math_SmoothStepToS(&this->headRot, 0, 1, 0x3E8, 0); + if (curFrame >= this->animEndFrame) { + this->bodyCollider.elements[0].dim.modelSphere.radius = 20; + this->bodyCollider.elements[1].dim.modelSphere.radius = 20; + EnEgol_SetupWalk(this); + } else if (!this->hitPlayer) { + if ((this->bodyCollider.elements[0].info.toucherFlags & TOUCH_HIT) || + (this->bodyCollider.elements[1].info.toucherFlags & TOUCH_HIT)) { + this->hitPlayer = true; + func_800B8D50(play, &this->actor, 10.0f, this->actor.home.rot.y, 10.0f, 0); + } + if (!(this->bodyCollider.base.atFlags & AT_BOUNCED)) { + CollisionCheck_SetAT(play, &play->colChkCtx, &this->bodyCollider.base); + } + } +} + +void EnEgol_SetupSlamWait(EnEgol* this) { + EnEgol_ChangeAnim(this, EYEGORE_ANIM_SLAM_WAIT); + this->actionTimer = 0; + this->eyeCollider.elements[0].info.elemType = ELEMTYPE_UNK1; + this->action = EYEGORE_ACTION_SLAM_WAIT; + this->actionFunc = EnEgol_SlamWait; +} + +void EnEgol_SlamWait(EnEgol* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + + if (curFrame >= this->animEndFrame) { + this->actionTimer++; + if (this->actionTimer > 20) { + this->eyeCollider.elements[0].info.elemType = ELEMTYPE_UNK2; + EnEgol_SetupSlamEnd(this); + } + } +} + +void EnEgol_SetupStunned(EnEgol* this) { + EnEgol_ChangeAnim(this, EYEGORE_ANIM_STUNNED); + this->actionTimer = 0; + this->eyeCollider.elements[0].info.elemType = ELEMTYPE_UNK1; + this->bodyCollider.elements[0].dim.modelSphere.radius = 0; + this->bodyCollider.elements[1].dim.modelSphere.radius = 0; + this->action = EYEGORE_ACTION_STUNNED; + this->actionFunc = EnEgol_Stunned; +} + +void EnEgol_Stunned(EnEgol* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + + if (curFrame >= this->animEndFrame) { + this->actionTimer++; + if (this->actionTimer > 80) { + this->eyeCollider.elements->info.elemType = ELEMTYPE_UNK2; + EnEgol_SetupStunEnd(this); + } + } +} + +void EnEgol_SetupStunEnd(EnEgol* this) { + this->bodyCollider.elements[0].dim.modelSphere.radius = 20; + this->bodyCollider.elements[1].dim.modelSphere.radius = 20; + EnEgol_ChangeAnim(this, EYEGORE_ANIM_STUN_END); + this->action = EYEGORE_ACTION_STUN_END; + this->actionFunc = EnEgol_StunEnd; +} + +void EnEgol_StunEnd(EnEgol* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + + if (curFrame >= this->animEndFrame) { + EnEgol_SetupWalk(this); + } +} + +void EnEgol_SetupSlamEnd(EnEgol* this) { + EnEgol_ChangeAnim(this, EYEGORE_ANIM_SLAM_END); + this->actionTimer = 0; + this->action = EYEGORE_ACTION_SLAM_END; + this->actionFunc = EnEgol_SlamEnd; +} + +void EnEgol_SlamEnd(EnEgol* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + + if (curFrame >= this->animEndFrame) { + EnEgol_SetupWalk(this); + } +} + +void EnEgol_SetupDamaged(EnEgol* this) { + EnEgol_ChangeAnim(this, EYEGORE_ANIM_DAMAGED); + this->bodyCollider.elements[0].dim.modelSphere.radius = 20; + this->bodyCollider.elements[1].dim.modelSphere.radius = 20; + this->action = EYEGORE_ACTION_DAMAGED; + this->actionFunc = EnEgol_Damaged; +} + +void EnEgol_Damaged(EnEgol* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + + if (curFrame >= this->animEndFrame) { + if (this->actor.colChkInfo.health > 0) { + EnEgol_SetupWalk(this); + } else { + Enemy_StartFinishingBlow(play, &this->actor); + Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_EYEGOLE_DEAD); + this->actor.flags |= ACTOR_FLAG_8000000; + this->actor.flags &= ~ACTOR_FLAG_1; + this->actor.flags |= ACTOR_FLAG_100000; + this->actionFunc = EnEgol_StartDeathCutscene; + } + } +} + +void EnEgol_StartDeathCutscene(EnEgol* this, PlayState* play) { + if (!ActorCutscene_GetCanPlayNext(this->actor.cutscene)) { + ActorCutscene_SetIntentToPlay(this->actor.cutscene); + } else { + ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, &this->actor); + this->subCamId = ActorCutscene_GetCurrentSubCamId(this->actor.cutscene); + this->subCamFovTarget = 60.0f; + EnEgol_ChangeAnim(this, EYEGORE_ANIM_DEATH); + this->action = EYEGORE_ACTION_DYING; + this->actionFunc = EnEgol_Death; + this->actor.shape.shadowScale = 0.0f; + } +} + +void EnEgol_Death(EnEgol* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + Vec3f atOffset; + + this->subCamAt.x = 0.0f; + this->subCamAt.y = 60.0f; + this->subCamAt.z = 260.0f; + Math_Vec3f_Copy(&atOffset, &this->subCamAt); + OLib_DbCameraVec3fSum(&this->actor.world, &atOffset, &this->subCamAt, 1); + this->subCamEye.x = this->actor.world.pos.x; + this->subCamEye.y = this->actor.world.pos.y + 70.0f; + this->subCamEye.z = this->actor.world.pos.z; + Math_ApproachF(&this->subCamFov, this->subCamFovTarget, 0.3f, 10.0f); + Play_SetCameraAtEye(play, this->subCamId, &this->subCamEye, &this->subCamAt); + Play_SetCameraFov(play, this->subCamId, this->subCamFov); + if ((this->action == EYEGORE_ACTION_DEAD) && (this->waitTimer == 1)) { + if (this->switchFlag > -1) { + Flags_SetSwitch(play, this->switchFlag); + } + ActorCutscene_Stop(this->actor.cutscene); + Actor_Kill(&this->actor); + } else { + if (Animation_OnFrame(&this->skelAnime, 46.0f)) { + Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_EXPLOSION); + func_800BC848(&this->actor, play, 10, 5); + } + if ((curFrame >= this->animEndFrame) && (this->action != EYEGORE_ACTION_DEAD)) { + s32 i; + + Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->actor.world.pos.x, this->actor.world.pos.y, + this->actor.world.pos.z, 0, 0, 0, CLEAR_TAG_SMALL_EXPLOSION); + this->waitTimer = 30; + Actor_PlaySfxAtPos(&this->actor, NA_SE_IT_BOMB_EXPLOSION); + this->action = EYEGORE_ACTION_DEAD; + for (i = 0; i < 20; i++) { + EnEgol_SpawnEffect(this, &this->actor.world.pos, &gZeroVec3s, 10.0f + Rand_ZeroFloat(20.0f), + 0.01f + (0.02f * Rand_ZeroFloat(1.0f)), (i & 1) + EYEGORE_EFFECT_PIECE_LARGE); + } + } + } +} + +typedef enum { + /* 0 */ EYEGORE_HIT_NONE, + /* 1 */ EYEGORE_HIT_DAMAGE, + /* 2 */ EYEGORE_HIT_IMMUNE, // Makes hitmarks, but no reaction +} EyegoreHitReaction; + +void EnEgol_CollisionCheck(EnEgol* this, PlayState* play) { + s16 angleToFacing = this->actor.world.rot.y - this->actor.yawTowardsPlayer; + s32 reaction = EYEGORE_HIT_NONE; + + if ((this->action == EYEGORE_ACTION_LASER) && (this->laserCollider.base.atFlags & AT_BOUNCED)) { + this->laserCollider.base.atFlags &= ~AT_HIT; + this->laserCollider.base.atFlags &= ~AT_BOUNCED; + this->actionTimer = 0; + this->laserState = EYEGORE_LASER_OFF; + Math_Vec3f_Copy(&this->laserScale, &gZeroVec3f); + Math_Vec3f_Copy(&this->laserScaleTarget, &gZeroVec3f); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[1], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[3], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[0], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[2], &this->laserBase); + EnEgol_SetupWalk(this); + } + if (this->eyeCollider.elements[0].info.bumperFlags & BUMP_HIT) { + reaction = EYEGORE_HIT_IMMUNE; + switch (this->actor.colChkInfo.damageEffect) { + case EYEGORE_DMGEFF_LIGHT_ARROW: + if (ABS_ALT(angleToFacing) < 0x3000) { + if ((this->action == EYEGORE_ACTION_STUNNED) || (this->action == EYEGORE_ACTION_SLAM_WAIT)) { + Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->actor.focus.pos.x, + this->actor.focus.pos.y, this->actor.focus.pos.z, 0, 0, 0, + CLEAR_TAG_LARGE_LIGHT_RAYS); + this->dmgEffectTimer = 20; + reaction = EYEGORE_HIT_DAMAGE; + } else if ((this->action >= EYEGORE_ACTION_WALK) && (this->action <= EYEGORE_ACTION_STUN_END) && + !this->isRetreating) { + reaction = EYEGORE_HIT_NONE; + this->chargingLaser = false; + this->chargeLevel = 0; + this->actionTimer = 0; + this->laserState = EYEGORE_LASER_OFF; + Math_Vec3f_Copy(&this->laserScale, &gZeroVec3f); + Math_Vec3f_Copy(&this->laserScaleTarget, &gZeroVec3f); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[1], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[3], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[0], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[2], &this->laserBase); + Actor_SetColorFilter(&this->actor, 0, 120, false, 40); + Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_COMMON_FREEZE); + EnEgol_SetupStunned(this); + } + } + break; + + case EYEGORE_DMGEFF_NONE: + if ((this->action == EYEGORE_ACTION_SLAM_WAIT) || (this->action == EYEGORE_ACTION_STUNNED)) { + reaction = EYEGORE_HIT_DAMAGE; + } + break; + + default: + break; + } + } + if (reaction == EYEGORE_HIT_DAMAGE) { + Actor_ApplyDamage(&this->actor); + CollisionCheck_BlueBlood(play, NULL, &this->eyePos); + CollisionCheck_BlueBlood(play, NULL, &this->eyePos); + CollisionCheck_BlueBlood(play, NULL, &this->eyePos); + Actor_SetColorFilter(&this->actor, 0x4000, 255, false, 25); + Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_EYEGOLE_DAMAGE); + EnEgol_SetupDamaged(this); + } else if (reaction == EYEGORE_HIT_IMMUNE) { + Vec3f hitPos; + + hitPos.x = this->eyeCollider.elements[0].info.bumper.hitPos.x; + hitPos.y = this->eyeCollider.elements[0].info.bumper.hitPos.y; + hitPos.z = this->eyeCollider.elements[0].info.bumper.hitPos.z; + Actor_PlaySfxAtPos(&this->actor, NA_SE_IT_SHIELD_BOUND); + EffectSsHitmark_SpawnFixedScale(play, EFFECT_HITMARK_METAL, &hitPos); + CollisionCheck_SpawnShieldParticlesMetal(play, &hitPos); + } +} + +void EnEgol_Update(Actor* thisx, PlayState* play) { + EnEgol* this = THIS; + Player* player = GET_PLAYER(play); + s32 pad; + + if (!((this->action == EYEGORE_ACTION_PUNCH) || (this->action == EYEGORE_ACTION_RETREAT) || + (this->action >= EYEGORE_ACTION_DYING))) { + s16 angleToFacing = this->actor.shape.rot.y - this->actor.yawTowardsPlayer; + s16 angleBehind = this->actor.world.rot.y - this->actor.yawTowardsPlayer + 0x8000; + + if ((ABS_ALT(angleToFacing) > 0x1888) && (ABS_ALT(angleBehind) > 0x2000) && + (this->actor.xzDistToPlayer < 100.0f)) { + if (angleToFacing < 0) { + if (this->animation != EYEGORE_ANIM_LEFT_PUNCH) { + EnEgol_ChangeAnim(this, EYEGORE_ANIM_LEFT_PUNCH); + } + } else if (this->animation != EYEGORE_ANIM_RIGHT_PUNCH) { + EnEgol_ChangeAnim(this, EYEGORE_ANIM_RIGHT_PUNCH); + } + this->chargingLaser = false; + this->chargeLevel = 0; + this->actionTimer = 0; + this->laserState = EYEGORE_LASER_OFF; + Math_Vec3f_Copy(&this->laserScale, &gZeroVec3f); + Math_Vec3f_Copy(&this->laserScaleTarget, &gZeroVec3f); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[1], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[3], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[0], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[2], &this->laserBase); + EnEgol_SetupPunch(this); + } + } + if (this->action != EYEGORE_ACTION_WAIT) { + SkelAnime_Update(&this->skelAnime); + } + if (this->laserState == EYEGORE_LASER_OFF) { + Math_ApproachZeroF(&this->laserLightScale, 0.5f, 0.5f); + } else if (this->laserState >= EYEGORE_LASER_FIRE) { + Math_ApproachF(&this->laserLightScale, 1.0f, 0.5f, 0.5f); + } + Actor_SetScale(&this->actor, 0.015f); + + if (!((this->action == EYEGORE_ACTION_STOP) || (this->action == EYEGORE_ACTION_RETREAT))) { + this->actor.shape.rot.y = this->actor.world.rot.y; + } + this->texScroll += 12; + DECR(this->waitTimer); + DECR(this->eyeShutTimer); + DECR(this->dmgEffectTimer); + + EnEgol_UpdateEffects(this, play); + this->actionFunc(this, play); + Math_Vec3f_Copy(&this->actor.focus.pos, &this->eyePos); + this->actor.focus.rot.x = this->actor.world.rot.x; + this->actor.focus.rot.y = this->actor.world.rot.y; + this->actor.focus.rot.z = this->actor.world.rot.z; + if (!((this->action == EYEGORE_ACTION_SLAM_WAIT) || (this->action == EYEGORE_ACTION_WAIT) || + (this->action == EYEGORE_ACTION_RETREAT) || (this->action == EYEGORE_ACTION_STAND) || + (this->action == EYEGORE_ACTION_LASER) || (this->action == EYEGORE_ACTION_STUNNED) || + (this->action == EYEGORE_ACTION_DAMAGED) || (this->action == EYEGORE_ACTION_DYING))) { + + this->pupilRot.x = Math_Vec3f_Pitch(&this->eyePos, &player->actor.world.pos); + this->pupilRot.y = -Math_Vec3f_Yaw(&this->eyePos, &player->actor.world.pos); + + this->pupilRot.y += this->actor.world.rot.y; + + if (this->pupilRot.x > 0x7D0) { + this->pupilRot.x = 0x7D0; + } else if (this->pupilRot.x < -0x7D0) { + this->pupilRot.x = -0x7D0; + } + if (this->pupilRot.y > 0x1770) { + this->pupilRot.y = 0x1770; + } else if (this->pupilRot.y < -0x1770) { + this->pupilRot.y = -0x1770; + } + } else { + this->pupilRot.x = this->pupilRot.y = 0; + } + if (this->eyeShutTimer == 0) { + if (((this->action == EYEGORE_ACTION_WALK) || (this->action == EYEGORE_ACTION_LASER)) && !this->isRetreating) { + Actor* projectile = func_800BC270(play, &this->actor, 80.0f, 0x138B0); + // last argument is DMG_ZORA_BOOMERANG | DMG_HOOKSHOT | DMG_NORMAL_ARROW | DMG_FIRE_ARROW | DMG_ICE_ARROW | + // DMG_LIGHT_ARROW | DMG_DEKU_BUBBLE + + if ((projectile != NULL) && !((projectile->id == ACTOR_EN_ARROW) && (projectile->params == ENARROW_5))) { + this->eyelidRotTarget = 0xFA0; + this->eyeShutTimer = 20; + if (this->action == EYEGORE_ACTION_LASER) { + this->chargingLaser = false; + this->chargeLevel = 0; + this->actionTimer = 0; + this->laserState = EYEGORE_LASER_OFF; + Math_Vec3f_Copy(&this->laserScale, &gZeroVec3f); + Math_Vec3f_Copy(&this->laserScaleTarget, &gZeroVec3f); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[1], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[3], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[0], &this->laserBase); + Math_Vec3f_Copy(&this->laserCollider.dim.quad[2], &this->laserBase); + EnEgol_SetupWalk(this); + } + } + } else { + this->eyelidRotTarget = 0; + } + } else if (this->eyeShutTimer == 1) { + this->eyelidRotTarget = 0; + } + Math_SmoothStepToS(&this->eyelidRot, this->eyelidRotTarget, 1, 0x7D0, 0); + EnEgol_CollisionCheck(this, play); + Actor_MoveWithGravity(&this->actor); + Actor_UpdateBgCheckInfo(play, &this->actor, 20.0f, 50.0f, 50.0f, 0x1D); + if (this->action != EYEGORE_ACTION_DEAD) { + //! @bug This should be ||, not &&. As is, the check always succeeds. + if (!((this->action == EYEGORE_ACTION_DAMAGED) && (this->action == EYEGORE_ACTION_DYING))) { + CollisionCheck_SetAC(play, &play->colChkCtx, &this->eyeCollider.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyCollider.base); + } + CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyCollider.base); + } + if (this->laserState >= EYEGORE_LASER_ON) { + CollisionCheck_SetAT(play, &play->colChkCtx, &this->laserCollider.base); + } +} + +s32 EnEgol_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { + EnEgol* this = THIS; + + if (limbIndex == EYEGORE_LIMB_HEAD) { + rot->z += this->headRot; + } + if (limbIndex == EYEGORE_LIMB_UPPER_EYELID) { + rot->z += this->eyelidRot; + } + if (limbIndex == EYEGORE_LIMB_LOWER_EYELID) { + rot->z += -1 * this->eyelidRot; + } + if (limbIndex == EYEGORE_LIMB_PUPIL) { + rot->y += this->pupilRot.y; + rot->z += this->pupilRot.x; + } + if (limbIndex == EYEGORE_LIMB_EYEBALL) { + s32 eyeColorIndex = 0; + + OPEN_DISPS(play->state.gfxCtx); + + if ((this->action == EYEGORE_ACTION_DAMAGED) || (this->action == EYEGORE_ACTION_DYING)) { + eyeColorIndex = 2; + } else if ((this->action == EYEGORE_ACTION_STUNNED) || (this->action == EYEGORE_ACTION_SLAM_WAIT)) { + eyeColorIndex = 1; + } + this->eyePrimColor.r = sEyePrimColors[eyeColorIndex].r; + this->eyePrimColor.g = sEyePrimColors[eyeColorIndex].g; + this->eyePrimColor.b = sEyePrimColors[eyeColorIndex].b; + this->eyeEnvColor.r = sEyeEnvColors[eyeColorIndex].r; + this->eyeEnvColor.g = sEyeEnvColors[eyeColorIndex].g; + this->eyeEnvColor.b = sEyeEnvColors[eyeColorIndex].b; + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0xFF, (u8)this->eyePrimColor.r, (u8)this->eyePrimColor.g, + (u8)this->eyePrimColor.b, 255); + gDPSetEnvColor(POLY_OPA_DISP++, (u8)this->eyeEnvColor.r, (u8)this->eyeEnvColor.g, (u8)this->eyeEnvColor.b, 255); + gSPSegment(POLY_OPA_DISP++, 0x09, func_8012CB28(play->state.gfxCtx, 0, this->texScroll)); + + CLOSE_DISPS(play->state.gfxCtx); + } + return false; +} + +void EnEgol_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { + EnEgol* this = THIS; + Vec3f footOffset = { 1000.0f, 0.0f, 0.0f }; + Vec3f zeroVec = { 0.0f, 0.0f, 0.0f }; + + if (limbIndex == EYEGORE_LIMB_LEFT_HAND) { + Matrix_MultVec3f(&gZeroVec3f, &this->leftHandPos); + } + if (limbIndex == EYEGORE_LIMB_RIGHT_HAND) { + Matrix_MultVec3f(&gZeroVec3f, &this->rightHandPos); + } + if (limbIndex == EYEGORE_LIMB_LASER_ATTACH) { + Matrix_MultVec3f(&gZeroVec3f, &this->eyePos); + } + if ((limbIndex == EYEGORE_LIMB_LASER_ATTACH) && (this->laserState >= EYEGORE_LASER_FIRE)) { + Vec3f laserLengthZ = { 0.0f, 0.0f, 0.0f }; + Vec3f laserVec; + f32 targetScale; + f32 targetHeight; + + Matrix_MultVec3f(&zeroVec, &this->laserBase); + this->laserCollider.dim.quad[3].x = + this->laserBase.x + Math_SinS(this->actor.world.rot.y + 0x4000) * this->laserScale.x * 77.0f; + this->laserCollider.dim.quad[3].y = this->laserBase.y; + this->laserCollider.dim.quad[3].z = + this->laserBase.z + Math_CosS(this->actor.world.rot.y + 0x4000) * this->laserScale.x * 77.0f; + this->laserCollider.dim.quad[2].x = + this->laserBase.x + Math_SinS(this->actor.world.rot.y + 0xC000) * this->laserScale.x * 77.0f; + this->laserCollider.dim.quad[2].y = this->laserBase.y; + this->laserCollider.dim.quad[2].z = + this->laserBase.z + Math_CosS(this->actor.world.rot.y + 0xC000) * this->laserScale.x * 77.0f; + + targetScale = this->laserScale.z; + targetHeight = this->laserCollider.dim.quad[3].y; + + while ((targetHeight + 20.0f > this->actor.floorHeight) && (targetScale < 10.0f)) { + Matrix_Push(); + Matrix_RotateYS(this->actor.world.rot.y, MTXMODE_NEW); + Matrix_RotateXS(this->laserRot.x, MTXMODE_APPLY); + laserLengthZ.z = targetScale * 700.0f; + Matrix_MultVec3f(&laserLengthZ, &laserVec); + Matrix_Pop(); + targetHeight = this->laserCollider.dim.quad[3].y + laserVec.y; + targetScale += 0.01f; + } + this->laserScaleTarget.z = targetScale; + Matrix_Push(); + Matrix_RotateYS(this->actor.world.rot.y, MTXMODE_NEW); + Matrix_RotateXS(this->laserRot.x, MTXMODE_APPLY); + laserLengthZ.z = this->laserScale.z * 700.0f; + Matrix_MultVec3f(&laserLengthZ, &laserVec); + Matrix_Pop(); + this->laserCollider.dim.quad[1].x = this->laserCollider.dim.quad[3].x + laserVec.x; + this->laserCollider.dim.quad[1].y = this->laserCollider.dim.quad[3].y + laserVec.y; + this->laserCollider.dim.quad[1].z = this->laserCollider.dim.quad[3].z + laserVec.z; + this->laserCollider.dim.quad[0].x = this->laserCollider.dim.quad[2].x + laserVec.x; + this->laserCollider.dim.quad[0].y = this->laserCollider.dim.quad[2].y + laserVec.y; + this->laserCollider.dim.quad[0].z = this->laserCollider.dim.quad[2].z + laserVec.z; + Collider_SetQuadVertices(&this->laserCollider, &this->laserCollider.dim.quad[0], + &this->laserCollider.dim.quad[1], &this->laserCollider.dim.quad[2], + &this->laserCollider.dim.quad[3]); + this->laserState = EYEGORE_LASER_ON; + } + if ((limbIndex == EYEGORE_LIMB_LASER_ATTACH) && (this->laserState == EYEGORE_LASER_START)) { + this->chargingLaser = true; + this->laserState = EYEGORE_LASER_CHARGING; + this->laserScaleTarget.x = 0.03f; + this->laserScaleTarget.y = 0.03f; + } + if (limbIndex == EYEGORE_LIMB_LEFT_FOOT) { + Matrix_MultVec3f(&footOffset, &this->leftFootPos); + } + if (limbIndex == EYEGORE_LIMB_RIGHT_FOOT) { + Matrix_MultVec3f(&footOffset, &this->rightFootPos); + } + if ((limbIndex == EYEGORE_LIMB_HEAD) || (limbIndex == EYEGORE_LIMB_LEFT_SHOULDER) || + (limbIndex == EYEGORE_LIMB_LEFT_ARM) || (limbIndex == EYEGORE_LIMB_LEFT_HAND) || + (limbIndex == EYEGORE_LIMB_RIGHT_SHOULDER) || (limbIndex == EYEGORE_LIMB_RIGHT_ARM) || + (limbIndex == EYEGORE_LIMB_RIGHT_HAND) || (limbIndex == EYEGORE_LIMB_UPPER_EYELID) || + (limbIndex == EYEGORE_LIMB_LOWER_EYELID) || (limbIndex == EYEGORE_LIMB_HIPS) || + (limbIndex == EYEGORE_LIMB_LEFT_SHIN) || (limbIndex == EYEGORE_LIMB_RIGHT_SHIN)) { + Matrix_MultZero(&this->limbPos[this->limbPosIndex]); + this->limbPosIndex++; + if (this->limbPosIndex >= ARRAY_COUNT(this->limbPos)) { + this->limbPosIndex = 0; + } + } + Collider_UpdateSpheres(limbIndex, &this->bodyCollider); + Collider_UpdateSpheres(limbIndex, &this->eyeCollider); +} + +void EnEgol_Draw(Actor* thisx, PlayState* play2) { + PlayState* play = play2; + EnEgol* this = THIS; + + OPEN_DISPS(play->state.gfxCtx); + + func_8012C28C(play->state.gfxCtx); + if (this->action != EYEGORE_ACTION_DEAD) { + AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gEyegoreEyeLaserTexAnim)); + SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnEgol_OverrideLimbDraw, EnEgol_PostLimbDraw, &this->actor); + POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + } + if (this->dmgEffectTimer != 0) { + f32 drawDmgEffAlpha = 0.05f * this->dmgEffectTimer; + + Actor_DrawDamageEffects(play, &this->actor, this->limbPos, ARRAY_COUNT(this->limbPos), 0.8f, 0.8f, + drawDmgEffAlpha, ACTOR_DRAW_DMGEFF_LIGHT_ORBS); + } + if (this->laserState >= EYEGORE_LASER_FIRE) { + this->laserRot.y = this->actor.world.rot.y; + gSPSegment(POLY_OPA_DISP++, 0x08, func_8012CB28(play->state.gfxCtx, 0, this->texScroll)); + gDPPipeSync(POLY_OPA_DISP++); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255); + Matrix_Translate(this->laserBase.x, this->laserBase.y, this->laserBase.z, MTXMODE_NEW); + Matrix_RotateZYX(this->laserRot.x, this->laserRot.y, 0, MTXMODE_APPLY); + Matrix_Scale(this->laserScale.x, this->laserScale.y, this->laserScale.z, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gEyegoreLaserDL); + } + if (((this->action == EYEGORE_ACTION_LASER) && (this->laserState >= EYEGORE_LASER_FIRE)) || this->chargingLaser) { + func_8012C2DC(play->state.gfxCtx); + gSPDisplayList(POLY_XLU_DISP++, gLightOrbMaterial1DL); + if (!this->chargingLaser) { + s32 i; + f32 laserLightScaleMod; + f32 laserLightAlpha; + + gDPSetEnvColor(POLY_XLU_DISP++, 155, 255, 255, 128); + Matrix_Translate(this->eyePos.x, this->eyePos.y, this->eyePos.z, MTXMODE_NEW); + Matrix_Scale(this->laserLightScale, this->laserLightScale, this->laserLightScale, MTXMODE_APPLY); + + laserLightScaleMod = 10.0f; + laserLightAlpha = 80.0f; + for (i = 0; i < ARRAY_COUNT(sLightOrbColors); i++) { + Matrix_Push(); + Matrix_Scale(laserLightScaleMod, laserLightScaleMod, laserLightScaleMod, MTXMODE_APPLY); + Matrix_ReplaceRotation(&play->billboardMtxF); + gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, sLightOrbColors[i].r, sLightOrbColors[i].g, sLightOrbColors[i].b, + laserLightAlpha); + gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_XLU_DISP++, gLightOrbModelDL); + Matrix_Pop(); + laserLightScaleMod = 3.0f; + laserLightAlpha = 200.0f; + } + } else { + gDPSetEnvColor(POLY_XLU_DISP++, 155, 255, 255, 128); + Matrix_Translate(this->eyePos.x, this->eyePos.y, this->eyePos.z, MTXMODE_NEW); + Matrix_Scale(this->chargeLightScale, this->chargeLightScale, this->chargeLightScale, MTXMODE_APPLY); + Matrix_Push(); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + Matrix_ReplaceRotation(&play->billboardMtxF); + Matrix_RotateZS(this->chargeLightRot, MTXMODE_APPLY); + gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, 255); + gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_XLU_DISP++, gLightOrbModelDL); + Matrix_Pop(); + } + } + EnEgol_DrawEffects(this, play); + + CLOSE_DISPS(play->state.gfxCtx); +} + +void EnEgol_SpawnEffect(EnEgol* this, Vec3f* pos, Vec3s* rot, s16 lifetime, f32 scale, s16 type) { + EnEgolEffect* effect = this->effects; + s16 i; + + for (i = 0; i < ARRAY_COUNT(this->effects); i++, effect++) { + if (!effect->isActive) { + effect->isActive = true; + effect->scale = scale; + effect->pos = *pos; + effect->timer = lifetime; + effect->alpha = 255; + effect->type = type; + effect->rot.x = randPlusMinusPoint5Scaled(0x7530); + effect->rot.y = randPlusMinusPoint5Scaled(0x7530); + effect->rot.z = randPlusMinusPoint5Scaled(0x7530); + if ((effect->type == EYEGORE_EFFECT_PIECE_LARGE) || (effect->type == EYEGORE_EFFECT_PIECE_SMALL)) { + effect->accel.y = -1.0f; + effect->velocity.x = 4.0f * (Rand_ZeroOne() - 0.5f); + effect->velocity.y = 10.0f + (10.0f * Rand_ZeroOne()); + effect->velocity.z = 4.0f * (Rand_ZeroOne() - 0.5f); + break; + } else if (effect->type == EYEGORE_EFFECT_DEBRIS) { + effect->accel.y = -1.0f; + effect->velocity.x = 0.5f * (Rand_ZeroOne() - 0.5f); + effect->velocity.y = 5.0f + (5.0f * Rand_ZeroOne()); + effect->velocity.z = 0.5f * (Rand_ZeroOne() - 0.5f); + effect->timer = 20.0f + Rand_ZeroFloat(10.0f); + break; + } else if (effect->type == EYEGORE_EFFECT_IMPACT) { + effect->rot.x = rot->x; + effect->rot.y = 0; + effect->rot.z = rot->z; + break; + } + } + } +} + +void EnEgol_UpdateEffects(EnEgol* this, PlayState* play) { + EnEgolEffect* effect = this->effects; + s32 i; + + for (i = 0; i < ARRAY_COUNT(this->effects); i++, effect++) { + if (effect->isActive) { + if (this->action == EYEGORE_ACTION_DYING) { + effect->timer = 0; + } + if (effect->type != EYEGORE_EFFECT_IMPACT) { + effect->rot.x += 0x100; + effect->rot.z += 0x130; + + effect->pos.x += effect->velocity.x; + effect->pos.y += effect->velocity.y; + effect->pos.z += effect->velocity.z; + + effect->velocity.y += effect->accel.y; + } + if (effect->timer != 0) { + effect->timer--; + } else if (effect->type == EYEGORE_EFFECT_IMPACT) { + effect->alpha -= 10; + if (effect->alpha < 10) { + effect->isActive = false; + } + } else { + effect->isActive = false; + } + } + } +} + +void EnEgol_DrawEffects(EnEgol* this, PlayState* play) { + GraphicsContext* gfxCtx = play->state.gfxCtx; + EnEgolEffect* effect = this->effects; + s16 i; + + OPEN_DISPS(gfxCtx); + + func_8012C28C(play->state.gfxCtx); + for (i = 0; i < ARRAY_COUNT(this->effects); i++, effect++) { + if (effect->isActive) { + Matrix_Push(); + + Matrix_Translate(effect->pos.x, effect->pos.y, effect->pos.z, MTXMODE_NEW); + Matrix_RotateXS(effect->rot.x, MTXMODE_APPLY); + Matrix_RotateYS(effect->rot.y, MTXMODE_APPLY); + Matrix_RotateZS(effect->rot.z, MTXMODE_APPLY); + Matrix_Scale(effect->scale, effect->scale, effect->scale, MTXMODE_APPLY); + + switch (effect->type) { + case EYEGORE_EFFECT_IMPACT: + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0x80, 155, 155, 155, 255); + Matrix_Translate(0.0f, 50.0f, 0.0f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 255, 255, effect->alpha); + gSPDisplayList(POLY_OPA_DISP++, gEyegoreEffectImpactDL); + break; + + case EYEGORE_EFFECT_PIECE_LARGE: + case EYEGORE_EFFECT_PIECE_SMALL: + gDPPipeSync(POLY_OPA_DISP++); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0x80, 255, 255, 255, 255); + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 255, 255, effect->alpha); + if (effect->type == EYEGORE_EFFECT_PIECE_LARGE) { + gSPDisplayList(POLY_OPA_DISP++, gEyegoreEffectLargeBodyPieceDL); + } else { + gSPDisplayList(POLY_OPA_DISP++, gEyegoreEffectSmallBodyPieceDL); + } + break; + + case EYEGORE_EFFECT_DEBRIS: + gDPPipeSync(POLY_OPA_DISP++); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0x80, 255, 255, 255, 255); + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 255, 255, 255); + gSPDisplayList(POLY_OPA_DISP++, gEyegoreEffectSolidDebrisDL); + break; + + default: + break; + } + Matrix_Pop(); + } + } + + CLOSE_DISPS(gfxCtx); +} diff --git a/src/overlays/actors/ovl_En_Egol/z_en_egol.h b/src/overlays/actors/ovl_En_Egol/z_en_egol.h index bfcc53231..cec69e5a1 100644 --- a/src/overlays/actors/ovl_En_Egol/z_en_egol.h +++ b/src/overlays/actors/ovl_En_Egol/z_en_egol.h @@ -2,16 +2,94 @@ #define Z_EN_EGOL_H #include "global.h" +#include "objects/object_eg/object_eg.h" struct EnEgol; typedef void (*EnEgolActionFunc)(struct EnEgol*, PlayState*); +#define EYEGORE_GET_PATH(thisx) ((thisx)->params & 0x3F) +#define EYEGORE_GET_SWITCH(thisx) (((thisx)->params >> 6) & 0x7F) + +#define EYEGORE_PARAMS(switch, path) ((((switch) & 0x7F) << 6) | ((path) & 0x3F)) + +#define EYEGORE_EFFECT_COUNT 100 + +typedef struct { + /* 0x00 */ u8 isActive; + /* 0x04 */ Vec3f pos; + /* 0x10 */ s16 alpha; + /* 0x12 */ s16 timer; + /* 0x14 */ s16 type; + /* 0x18 */ Vec3f velocity; + /* 0x24 */ Vec3f accel; + /* 0x30 */ Vec3s rot; + /* 0x38 */ f32 scale; +} EnEgolEffect; // size = 0x3C + typedef struct EnEgol { /* 0x0000 */ Actor actor; - /* 0x0144 */ char unk_144[0x164]; + /* 0x0144 */ SkelAnime skelAnime; + /* 0x0188 */ Vec3s jointTable[EYEGORE_LIMB_MAX]; + /* 0x0218 */ Vec3s morphTable[EYEGORE_LIMB_MAX]; /* 0x02A8 */ EnEgolActionFunc actionFunc; - /* 0x02AC */ char unk_2AC[0x1BC4]; + /* 0x02AC */ Path* path; + /* 0x02B0 */ s16 waypoint; + /* 0x02B2 */ s16 action; + /* 0x02B4 */ s16 waitTimer; + /* 0x02B6 */ s16 eyeShutTimer; + /* 0x02B4 */ s16 headRot; + /* 0x02BA */ s16 switchFlag; + /* 0x02BC */ s16 dmgEffectTimer; + /* 0x02C0 */ Vec3f limbPos[12]; + /* 0x0350 */ s16 limbPosIndex; + /* 0x0352 */ s16 pathIndex; + /* 0x0354 */ s32 animation; + /* 0x0358 */ u8 isRetreating; + /* 0x035C */ f32 animEndFrame; + /* 0x0360 */ f32 wakeupRange; + /* 0x0364 */ f32 minLaserRange; + /* 0x0368 */ UNK_TYPE1 unk_368[4]; // f32? + /* 0x036C */ f32 laserLightScale; + /* 0x0370 */ f32 chargeLightScale; + /* 0x0374 */ s16 eyelidRot; + /* 0x0376 */ s16 eyelidRotTarget; + /* 0x0378 */ s16 actionTimer; + /* 0x037C */ s32 laserCount; + /* 0x0380 */ s32 chargingLaser; + /* 0x0384 */ s16 chargeLightRot; + /* 0x0388 */ s32 chargeLevel; + /* 0x038C */ s32 hitPlayer; + /* 0x0390 */ UNK_TYPE1 unk_390[0xC]; // Vec3f? + /* 0x039C */ Vec3f eyePos; + /* 0x03A8 */ Vec3f laserBase; + /* 0x03B4 */ Vec3f laserScale; + /* 0x03C0 */ Vec3f laserScaleTarget; + /* 0x03CC */ UNK_TYPE1 unk_3CC[0xC]; // Vec3f? + /* 0x03D8 */ Vec3f leftFootPos; + /* 0x03E4 */ Vec3f rightFootPos; + /* 0x03F0 */ Vec3f leftHandPos; + /* 0x03FC */ Vec3f rightHandPos; + /* 0x0408 */ Vec3f waypointPos; + /* 0x0414 */ Vec3s pupilRot; + /* 0x041A */ Vec3s laserRot; + /* 0x0420 */ Color_RGB16 eyePrimColor; + /* 0x0426 */ Color_RGB16 eyeEnvColor; + /* 0x042C */ s16 laserState; + /* 0x0430 */ s32 texScroll; + /* 0x0434 */ EnEgolEffect effects[EYEGORE_EFFECT_COUNT]; + /* 0x1BA4 */ ColliderJntSph bodyCollider; + /* 0x1BC4 */ ColliderJntSphElement bodyElements[6]; + /* 0x1D44 */ ColliderJntSph eyeCollider; + /* 0x1D64 */ ColliderJntSphElement eyeElements[1]; + /* 0x1DA4 */ ColliderQuad laserCollider; + /* 0x1E24 */ UNK_TYPE1 unk_1E24[4]; + /* 0x1E28 */ s16 subCamId; + /* 0x1E2C */ f32 subCamFov; + /* 0x1E30 */ f32 subCamFovTarget; + /* 0x1E34 */ Vec3f subCamAt; + /* 0x1E40 */ Vec3f subCamEye; + /* 0x1E4C */ UNK_TYPE1 unk_1E4C[0x24]; // Vec3f[3]? } EnEgol; // size = 0x1E70 #endif // Z_EN_EGOL_H diff --git a/src/overlays/actors/ovl_En_Elf/z_en_elf.c b/src/overlays/actors/ovl_En_Elf/z_en_elf.c index 6d21e23e5..54d5c3210 100644 --- a/src/overlays/actors/ovl_En_Elf/z_en_elf.c +++ b/src/overlays/actors/ovl_En_Elf/z_en_elf.c @@ -565,17 +565,17 @@ void func_8088D9BC(EnElf* this, PlayState* play) { switch (this->unk_244) { case 0: - targetYaw = Math_FAtan2F(-(this->actor.world.pos.z - vec->z), -(this->actor.world.pos.x - vec->x)); + targetYaw = Math_Atan2S_XY(-(this->actor.world.pos.z - vec->z), -(this->actor.world.pos.x - vec->x)); break; case 3: - targetYaw = Math_FAtan2F(-(this->actor.world.pos.z - player->actor.world.pos.z), - -(this->actor.world.pos.x - player->actor.world.pos.x)); + targetYaw = Math_Atan2S_XY(-(this->actor.world.pos.z - player->actor.world.pos.z), + -(this->actor.world.pos.x - player->actor.world.pos.x)); break; case 2: - targetYaw = Math_FAtan2F(this->actor.world.pos.z - player->actor.world.pos.z, - this->actor.world.pos.x - player->actor.world.pos.x); + targetYaw = Math_Atan2S_XY(this->actor.world.pos.z - player->actor.world.pos.z, + this->actor.world.pos.x - player->actor.world.pos.x); break; default: @@ -719,7 +719,7 @@ void func_8088E018(EnElf* this, PlayState* play) { } else { Actor_Kill(&this->actor); } - this->unk_258 = Math_FAtan2F(this->actor.velocity.z, this->actor.velocity.x); + this->unk_258 = Math_Atan2S_XY(this->actor.velocity.z, this->actor.velocity.x); } void func_8088E0E0(EnElf* this, PlayState* play) { @@ -766,7 +766,7 @@ void func_8088E0F0(EnElf* this, PlayState* play) { return; } - this->unk_258 = Math_FAtan2F(this->actor.velocity.z, this->actor.velocity.x); + this->unk_258 = Math_Atan2S_XY(this->actor.velocity.z, this->actor.velocity.x); func_8088F5F4(this, play, 32); Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_FIATY_HEAL - SFX_FLAG); } @@ -799,8 +799,8 @@ void func_8088E304(EnElf* this, PlayState* play) { this->unk_224.z = Math_SinS(this->unk_248) * -this->unk_254; this->unk_248 += this->unk_24C; - func_8088D7F8(this, &player->bodyPartsPos[0]); - this->unk_258 = Math_FAtan2F(this->actor.velocity.z, this->actor.velocity.x); + func_8088D7F8(this, &player->bodyPartsPos[PLAYER_BODYPART_WAIST]); + this->unk_258 = Math_Atan2S_XY(this->actor.velocity.z, this->actor.velocity.x); func_8088F5F4(this, play, 0x20); Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_FIATY_HEAL - SFX_FLAG); } @@ -823,9 +823,9 @@ void func_8088E484(EnElf* this, PlayState* play) { this->unk_254 = 1.0f; } - func_8088D7F8(this, &player->bodyPartsPos[0]); + func_8088D7F8(this, &player->bodyPartsPos[PLAYER_BODYPART_WAIST]); Actor_SetScale(&this->actor, (1.0f - (SQ(this->unk_250) * SQ(1.0f / 9.0f))) * 0.008f); - this->unk_258 = Math_FAtan2F(this->actor.velocity.z, this->actor.velocity.x); + this->unk_258 = Math_Atan2S_XY(this->actor.velocity.z, this->actor.velocity.x); func_8088F5F4(this, play, 32); Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_FIATY_HEAL - SFX_FLAG); } @@ -872,7 +872,7 @@ void func_8088E60C(EnElf* this, PlayState* play) { Lights_PointGlowSetInfo(&this->lightInfoGlow, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 255, 255, 255, glowLightRadius); - this->unk_258 = Math_FAtan2F(this->actor.velocity.z, this->actor.velocity.x); + this->unk_258 = Math_Atan2S_XY(this->actor.velocity.z, this->actor.velocity.x); Actor_SetScale(&this->actor, this->actor.scale.x); } @@ -915,11 +915,11 @@ void func_8088E850(EnElf* this, PlayState* play) { } } else { this->actor.shape.rot.x = 0; - distFromLinksHead = Math_Vec3f_DistXYZ(&player->bodyPartsPos[8], &this->actor.world.pos); + distFromLinksHead = Math_Vec3f_DistXYZ(&player->bodyPartsPos[PLAYER_BODYPART_HAT], &this->actor.world.pos); switch (this->unk_244) { case 5: - func_8088D660(this, &player->bodyPartsPos[8], 1.0f - (this->unk_24A * 0.033333335f)); - xScale = Math_Vec3f_DistXYZ(&player->bodyPartsPos[8], &this->actor.world.pos); + func_8088D660(this, &player->bodyPartsPos[PLAYER_BODYPART_HAT], 1.0f - (this->unk_24A * 0.033333335f)); + xScale = Math_Vec3f_DistXYZ(&player->bodyPartsPos[PLAYER_BODYPART_HAT], &this->actor.world.pos); if (distFromLinksHead < 7.0f) { this->unk_25C = 0; @@ -935,12 +935,12 @@ void func_8088E850(EnElf* this, PlayState* play) { break; case 6: - func_8088D660(this, &player->bodyPartsPos[8], 0.2f); - this->actor.world.pos = player->bodyPartsPos[8]; + func_8088D660(this, &player->bodyPartsPos[PLAYER_BODYPART_HAT], 0.2f); + this->actor.world.pos = player->bodyPartsPos[PLAYER_BODYPART_HAT]; break; case 9: - nextPos = player->bodyPartsPos[8]; + nextPos = player->bodyPartsPos[PLAYER_BODYPART_HAT]; nextPos.y += 1500.0f * this->actor.scale.y; func_8088D7F8(this, &nextPos); @@ -967,8 +967,8 @@ void func_8088E850(EnElf* this, PlayState* play) { default: arrowPointedActor = play->actorCtx.targetContext.arrowPointedActor; - if ((player->stateFlags1 & PLAYER_STATE1_40) && (player->targetActor != NULL)) { - Math_Vec3f_Copy(&nextPos, &player->targetActor->focus.pos); + if ((player->stateFlags1 & PLAYER_STATE1_40) && (player->talkActor != NULL)) { + Math_Vec3f_Copy(&nextPos, &player->talkActor->focus.pos); } else { Math_Vec3f_Copy(&nextPos, &play->actorCtx.targetContext.unk0); } @@ -1085,10 +1085,10 @@ void func_8088EFA4(EnElf* this, PlayState* play) { } if (this->fairyFlags & 1) { - if ((arrayPointerActor == NULL) || (player->unk_730 == NULL)) { + if ((arrayPointerActor == NULL) || (player->targetedActor == NULL)) { this->fairyFlags ^= 1; } - } else if ((arrayPointerActor != NULL) && (player->unk_730 != NULL)) { + } else if ((arrayPointerActor != NULL) && (player->targetedActor != NULL)) { u8 temp = this->unk_269; u16 targetSfxId = this->unk_269 == 0 ? NA_SE_PL_WALK_GROUND - SFX_FLAG : NA_SE_PL_WALK_GROUND - SFX_FLAG; @@ -1230,8 +1230,8 @@ void func_8088F214(EnElf* this, PlayState* play) { if (sp34 != this->unk_244) { func_8088C51C(this, sp34); if (sp34 == 9) { - this->unk_254 = Math_Vec3f_DistXZ(&player->bodyPartsPos[8], &this->actor.world.pos); - this->unk_248 = Math_Vec3f_Yaw(&this->actor.world.pos, &player->bodyPartsPos[8]); + this->unk_254 = Math_Vec3f_DistXZ(&player->bodyPartsPos[PLAYER_BODYPART_HAT], &this->actor.world.pos); + this->unk_248 = Math_Vec3f_Yaw(&this->actor.world.pos, &player->bodyPartsPos[PLAYER_BODYPART_HAT]); } } } @@ -1281,11 +1281,13 @@ void func_8088FA38(EnElf* this, PlayState* play) { if (this->unk_234 != NULL) { refPos = this->unk_234->world.pos; } else { - if ((player->unk_730 == NULL) || (&player->actor == player->unk_730) || (&this->actor == player->unk_730) || - (this->unk_264 & 4)) { - refPos.x = player->bodyPartsPos[7].x + (Math_SinS(player->actor.shape.rot.y) * 20.0f); - refPos.y = player->bodyPartsPos[7].y + 5.0f; - refPos.z = player->bodyPartsPos[7].z + (Math_CosS(player->actor.shape.rot.y) * 20.0f); + if ((player->targetedActor == NULL) || (&player->actor == player->targetedActor) || + (&this->actor == player->targetedActor) || (this->unk_264 & 4)) { + refPos.x = + player->bodyPartsPos[PLAYER_BODYPART_HEAD].x + (Math_SinS(player->actor.shape.rot.y) * 20.0f); + refPos.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 5.0f; + refPos.z = + player->bodyPartsPos[PLAYER_BODYPART_HEAD].z + (Math_CosS(player->actor.shape.rot.y) * 20.0f); this->unk_264 &= ~4; } } @@ -1416,7 +1418,7 @@ void func_8088FE64(Actor* thisx, PlayState* play2) { if (!gSaveContext.save.isNight) { func_80151938(play, 0x248); } else if ((gSaveContext.save.time < CLOCK_TIME(6, 0)) && - (gSaveContext.save.weekEventReg[74] & 0x20)) { + CHECK_WEEKEVENTREG(WEEKEVENTREG_74_20)) { func_80151938(play, 0x225); } else { func_80151938(play, 0x249); @@ -1456,7 +1458,7 @@ void func_8089010C(Actor* thisx, PlayState* play) { gSaveContext.save.playerData.tatlTimer = 0; } - if ((player->tatlTextId == 0) && (player->unk_730 == NULL)) { + if ((player->tatlTextId == 0) && (player->targetedActor == NULL)) { if ((gSaveContext.save.playerData.tatlTimer >= 600) && (gSaveContext.save.playerData.tatlTimer <= 3000)) { player->tatlTextId = QuestHint_GetTatlTextId(play); } @@ -1579,7 +1581,7 @@ void EnElf_Draw(Actor* thisx, PlayState* play) { (!Cutscene_CheckActorAction(play, 201) || (play->csCtx.actorActions[Cutscene_GetActorActionIndex(play, 201)]->action != 6)) && (!(player->stateFlags1 & PLAYER_STATE1_100000) || (kREG(90) < this->actor.projectedPos.z))) { - Gfx* dListHead = GRAPH_ALLOC(play->state.gfxCtx, sizeof(Gfx) * 4); + Gfx* gfx = GRAPH_ALLOC(play->state.gfxCtx, 4 * sizeof(Gfx)); f32 alphaScale; s32 envAlpha; @@ -1592,19 +1594,19 @@ void EnElf_Draw(Actor* thisx, PlayState* play) { alphaScale = (this->disappearTimer < 0) ? (this->disappearTimer * 0.0011666666f) + 1.0f : 1.0f; - gSPSegment(POLY_XLU_DISP++, 0x08, dListHead); + gSPSegment(POLY_XLU_DISP++, 0x08, gfx); - gDPPipeSync(dListHead++); - gDPSetPrimColor(dListHead++, 0, 0x01, (u8)(s8)this->innerColor.r, (u8)(s8)this->innerColor.g, + gDPPipeSync(gfx++); + gDPSetPrimColor(gfx++, 0, 0x01, (u8)(s8)this->innerColor.r, (u8)(s8)this->innerColor.g, (u8)(s8)this->innerColor.b, (u8)(s8)(this->innerColor.a * alphaScale)); if (this->fairyFlags & 4) { - gDPSetRenderMode(dListHead++, G_RM_PASS, G_RM_CLD_SURF2); + gDPSetRenderMode(gfx++, G_RM_PASS, G_RM_CLD_SURF2); } else { - gDPSetRenderMode(dListHead++, G_RM_PASS, G_RM_ZB_CLD_SURF2); + gDPSetRenderMode(gfx++, G_RM_PASS, G_RM_ZB_CLD_SURF2); } - gSPEndDisplayList(dListHead); + gSPEndDisplayList(gfx); gDPSetEnvColor(POLY_XLU_DISP++, (u8)(s8)this->outerColor.r, (u8)(s8)this->outerColor.g, (u8)(s8)this->outerColor.b, (u8)(s8)(envAlpha * alphaScale)); diff --git a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c index b90d3978f..169d56fdd 100644 --- a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c +++ b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c @@ -11,6 +11,8 @@ #define THIS ((EnElfgrp*)thisx) +//! TODO: this file require macros for its uses of weekEventReg + void EnElfgrp_Init(Actor* thisx, PlayState* play); void EnElfgrp_Destroy(Actor* thisx, PlayState* play); void EnElfgrp_Update(Actor* thisx, PlayState* play); @@ -91,7 +93,7 @@ void EnElfgrp_Init(Actor* thisx, PlayState* play) { switch (this->unk_147) { case ENELFGRP_1: - if (gSaveContext.save.weekEventReg[23] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_23_02)) { func_80A396B0(this, 1); } else { this->unk_14A |= 4; @@ -146,7 +148,7 @@ void EnElfgrp_Init(Actor* thisx, PlayState* play) { this->unk_14A |= 2; func_80A396B0(this, 6); } - } else if ((gSaveContext.save.weekEventReg[8] & 0x80)) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_08_80)) { func_80A39DC8(this, play, 24, 0); this->actionFunc = func_80A3A398; if (INV_CONTENT(ITEM_MASK_DEKU) == ITEM_MASK_DEKU) { @@ -421,7 +423,7 @@ void func_80A3A398(EnElfgrp* this, PlayState* play) { } if ((this->unk_14A & 4) != 0) { - gSaveContext.save.weekEventReg[23] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_23_02); } if (this->unk_14A & 0x10) { diff --git a/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c b/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c index 60c5b3364..803a66ac4 100644 --- a/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c +++ b/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c @@ -80,7 +80,7 @@ void EnElforg_Init(Actor* thisx, PlayState* play) { switch (STRAY_FAIRY_TYPE(thisx)) { case STRAY_FAIRY_TYPE_CLOCK_TOWN: - if (gSaveContext.save.weekEventReg[8] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_08_80)) { Actor_Kill(thisx); return; } @@ -220,7 +220,7 @@ void EnElforg_MoveToTargetFairyFountain(EnElforg* this, Vec3f* homePos) { EnElforg_ApproachTargetYPosition(this, homePos); xDifference = this->actor.world.pos.x - homePos->x; zDifference = this->actor.world.pos.z - homePos->z; - targetAngle = Math_FAtan2F(-zDifference, -xDifference); + targetAngle = Math_Atan2S_XY(-zDifference, -xDifference); xzDistance = sqrtf(SQ(xDifference) + SQ(zDifference)); if ((this->targetDistanceFromHome + 10.0f) < xzDistance) { @@ -247,7 +247,7 @@ void EnElforg_MoveToTarget(EnElforg* this, Vec3f* targetPos) { this->actor.shape.yOffset += 100.0f * Math_SinS(this->timer << 9); EnElforg_ApproachTargetYPosition(this, targetPos); - targetAngle = Math_FAtan2F(-(this->actor.world.pos.z - targetPos->z), -(this->actor.world.pos.x - targetPos->x)); + targetAngle = Math_Atan2S_XY(-(this->actor.world.pos.z - targetPos->z), -(this->actor.world.pos.x - targetPos->x)); if (this->targetSpeedXZ > 2.0f) { Math_SmoothStepToS(&this->actor.world.rot.y, targetAngle, 2, 0x400, 0x100); @@ -293,7 +293,7 @@ void EnElforg_TurnInFairy(EnElforg* this, PlayState* play) { SkelAnime_Update(&this->skelAnime); this->actor.shape.yOffset *= 0.9f; this->actor.speedXZ = 5.0f; - EnElforg_ApproachTargetYPosition(this, &player->bodyPartsPos[0]); + EnElforg_ApproachTargetYPosition(this, &player->bodyPartsPos[PLAYER_BODYPART_WAIST]); xzDistToPlayer = this->actor.xzDistToPlayer; if (xzDistToPlayer < 0.0f) { @@ -393,7 +393,7 @@ void EnElforg_CirclePlayer(EnElforg* this, PlayState* play) { this->actor.world.pos.x = (Math_SinS(this->timer << 12) * distanceFromPlayer) + playerActor->world.pos.x; this->actor.world.pos.z = (Math_CosS(this->timer << 12) * distanceFromPlayer) + playerActor->world.pos.z; - this->actor.world.pos.y = player->bodyPartsPos[0].y; + this->actor.world.pos.y = player->bodyPartsPos[PLAYER_BODYPART_WAIST].y; EnElforg_SpawnSparkles(this, play, 16); } @@ -412,7 +412,7 @@ void EnElforg_SetupFairyCollected(EnElforg* this, PlayState* play) { Player* player = GET_PLAYER(play); this->actor.world.pos.x = playerActor->world.pos.x; - this->actor.world.pos.y = player->bodyPartsPos[0].y; + this->actor.world.pos.y = player->bodyPartsPos[PLAYER_BODYPART_WAIST].y; this->actor.world.pos.z = playerActor->world.pos.z; this->actionFunc = EnElforg_FairyCollected; this->timer = 0; @@ -430,7 +430,7 @@ void EnElforg_ClockTownFairyCollected(EnElforg* this, PlayState* play) { player->actor.freezeTimer = 0; player->stateFlags1 &= ~PLAYER_STATE1_20000000; Actor_Kill(&this->actor); - gSaveContext.save.weekEventReg[8] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_08_80); ActorCutscene_Stop(0x7C); return; } @@ -452,7 +452,7 @@ void EnElforg_FreeFloating(EnElforg* this, PlayState* play) { SkelAnime_Update(&this->skelAnime); if (Player_GetMask(play) == PLAYER_MASK_GREAT_FAIRY) { - pos = player->bodyPartsPos[0]; + pos = player->bodyPartsPos[PLAYER_BODYPART_WAIST]; this->targetSpeedXZ = 5.0f; EnElforg_MoveToTarget(this, &pos); } else { diff --git a/src/overlays/actors/ovl_En_Encount4/z_en_encount4.c b/src/overlays/actors/ovl_En_Encount4/z_en_encount4.c index ccb9d16b5..311668bfe 100644 --- a/src/overlays/actors/ovl_En_Encount4/z_en_encount4.c +++ b/src/overlays/actors/ovl_En_Encount4/z_en_encount4.c @@ -152,7 +152,7 @@ void func_809C42A8(EnEncount4* this, PlayState* play) { this->actionFunc = func_809C464C; return; - } else if ((gSaveContext.save.weekEventReg[85] & 0x40) || (this->unk_14C >= 2) || + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_85_40) || (this->unk_14C >= 2) || (this->actor.xzDistToPlayer > 240.0f)) { return; } diff --git a/src/overlays/actors/ovl_En_Estone/z_en_estone.c b/src/overlays/actors/ovl_En_Estone/z_en_estone.c index 67a3042ee..c55ab5272 100644 --- a/src/overlays/actors/ovl_En_Estone/z_en_estone.c +++ b/src/overlays/actors/ovl_En_Estone/z_en_estone.c @@ -1,10 +1,12 @@ /* * File: z_en_estone.c * Overlay: ovl_En_Estone - * Description: Eyegore Rubble + * Description: Rubble from Eyegore's attacks */ #include "z_en_estone.h" +#include "objects/object_eg/object_eg.h" +#include "objects/gameplay_keep/gameplay_keep.h" #define FLAGS (ACTOR_FLAG_10 | ACTOR_FLAG_20) @@ -12,13 +14,15 @@ void EnEstone_Init(Actor* thisx, PlayState* play); void EnEstone_Destroy(Actor* thisx, PlayState* play); -void EnEstone_Update(Actor* thisx, PlayState* play); -void EnEstone_Draw(Actor* thisx, PlayState* play); +void EnEstone_Update(Actor* thisx, PlayState* play2); +void EnEstone_Draw(Actor* thisx, PlayState* play2); -void func_80A9A1DC(EnEstone* this, PlayState* play); -void func_80A9A4B0(EnEstone* this, PlayState* play); +void EnEstone_Active(EnEstone* this, PlayState* play); +void EnEstone_Inactive(EnEstone* this, PlayState* play); +void EnEstone_SpawnEffect(EnEstone* this, Vec3f* pos, Vec3f* velocity, Vec3f* accel, f32 scale, s16 lifetime); +void EnEstone_UpdateEffects(EnEstone* this, PlayState* play); +void EnEstone_DrawEffects(EnEstone* this, PlayState* play); -#if 0 ActorInit En_Estone_InitVars = { ACTOR_EN_ESTONE, ACTORCAT_PROP, @@ -31,33 +35,250 @@ ActorInit En_Estone_InitVars = { (ActorFunc)EnEstone_Draw, }; -// static ColliderCylinderInit sCylinderInit = { -static ColliderCylinderInit D_80A9AB70 = { - { COLTYPE_HARD, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_NONE, OC2_TYPE_2, COLSHAPE_CYLINDER, }, - { ELEMTYPE_UNK0, { 0xF7CFFFFF, 0x00, 0x04 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_NONE, }, +static ColliderCylinderInit sCylinderInit = { + { + COLTYPE_HARD, + AT_ON | AT_TYPE_ENEMY, + AC_ON | AC_TYPE_PLAYER, + OC1_NONE, + OC2_TYPE_2, + COLSHAPE_CYLINDER, + }, + { + ELEMTYPE_UNK0, + { 0xF7CFFFFF, 0x00, 0x04 }, + { 0xF7CFFFFF, 0x00, 0x00 }, + TOUCH_ON | TOUCH_SFX_NORMAL, + BUMP_ON, + OCELEM_NONE, + }, { 30, 30, -10, { 0, 0, 0 } }, }; -#endif +void EnEstone_Init(Actor* thisx, PlayState* play) { + EnEstone* this = THIS; + Vec3f accel; + Vec3f velocity; + f32 scale; + s32 i; + s32 pad; -extern ColliderCylinderInit D_80A9AB70; + ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 15.0f); + this->rotVel.x = this->rotVel.y = this->rotVel.z = randPlusMinusPoint5Scaled(1.0f) * 20.0f; + Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit); + this->actor.colChkInfo.mass = MASS_IMMOVABLE; + this->actor.world.rot.y += (s16)randPlusMinusPoint5Scaled(0x2710); + this->actor.shape.rot.y = this->actor.world.rot.y; -extern UNK_TYPE D_06010240; + if (this->actor.params == ENESTONE_TYPE_LARGE) { + this->actor.speedXZ = Rand_ZeroFloat(5.0f) + 2.0f; + this->scale = (Rand_ZeroFloat(1.0f) * 0.005f) + 0.005f; + this->actor.velocity.y = Rand_ZeroFloat(10.0f) + 15.0f; + this->actor.gravity = -2.0f; + } else { + this->actor.speedXZ = Rand_ZeroFloat(3.0f) + 1.0f; + this->scale = (Rand_ZeroFloat(1.0f) * 0.003f) + 0.003f; + this->actor.velocity.y = Rand_ZeroFloat(5.0f) + 7.0f; + this->actor.gravity = -1.0f; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Estone/EnEstone_Init.s") + this->collider.dim.radius = this->scale * 3000.0f; + this->collider.dim.height = this->scale * 3000.0f; + this->collider.dim.yShift = this->scale * -1300.0f; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Estone/EnEstone_Destroy.s") + for (i = 0; i < 7; i++) { + accel.x = 0.5f * (Rand_ZeroOne() - 0.5f); + accel.y = -1.0f; + accel.z = 0.5f * (Rand_ZeroOne() - 0.5f); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Estone/func_80A9A1DC.s") + velocity.x = 2.0f * (Rand_ZeroOne() - 0.5f); + velocity.y = 8.0f + (Rand_ZeroOne() * 10.0f); + velocity.z = 2.0f * (Rand_ZeroOne() - 0.5f); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Estone/func_80A9A4B0.s") + scale = (Rand_ZeroFloat(1.0f) * 0.001f) + 0.001f; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Estone/EnEstone_Update.s") + EnEstone_SpawnEffect(this, &this->actor.world.pos, &velocity, &accel, scale, 70); + } + this->timer = 5; + this->inactive = false; + Actor_SetScale(&this->actor, 1.0f); + this->actionFunc = EnEstone_Active; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Estone/EnEstone_Draw.s") +void EnEstone_Destroy(Actor* thisx, PlayState* play) { + EnEstone* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Estone/func_80A9A774.s") + Collider_DestroyCylinder(play, &this->collider); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Estone/func_80A9A870.s") +void EnEstone_Active(EnEstone* this, PlayState* play) { + Player* player = GET_PLAYER(play); + Vec3f accel; + Vec3f velocity; + s32 i; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Estone/func_80A9A9C0.s") + if ((this->actor.floorHeight == -10000.0f) || ((player->actor.world.pos.y - 200.0f) > this->actor.world.pos.y)) { + Actor_Kill(&this->actor); + return; + } + if (((this->actor.bgCheckFlags & 1) && (this->actor.velocity.y < 0.0f)) || (this->collider.base.atFlags & 4)) { + this->collider.base.atFlags &= ~4; + if (this->actor.params == ENESTONE_TYPE_LARGE) { + for (i = 0; i < 2; i++) { + accel.x = 2.0f * (Rand_ZeroOne() - 0.5f); + accel.y = -1.0f; + accel.z = 2.0f * (Rand_ZeroOne() - 0.5f); + velocity.x = 3.0f * (Rand_ZeroOne() - 0.5f); + velocity.y = 5.0f + (Rand_ZeroOne() * 10.0f); + velocity.z = 3.0f * (Rand_ZeroOne() - 0.5f); + EnEstone_SpawnEffect(this, &this->actor.world.pos, &velocity, &accel, + 0.003f + (0.002f * Rand_ZeroFloat(1.0f)), 20); + } + } + Math_Vec3f_Copy(&velocity, &this->actor.world.pos); + velocity.y = this->actor.floorHeight; + Actor_SpawnFloorDustRing(play, &this->actor, &velocity, 0.0f, 10, 6.0f, 50, 30, true); + this->actor.velocity.y = this->actor.gravity = 0.0f; + this->actor.speedXZ *= 0.3f; + this->actor.shape.shadowScale = 0.0f; + this->inactive = true; + this->timer = 50; + Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_WALL_BROKEN); + this->actionFunc = EnEstone_Inactive; + } else { + //! FAKE: https://decomp.me/scratch/YiPVN + label: + this->actor.shape.shadowScale = 4500.0f * this->scale; + Actor_SetScale(&this->actor, this->scale); + } +} + +void EnEstone_Inactive(EnEstone* this, PlayState* play) { + if (this->timer == 0) { + Actor_Kill(&this->actor); + } +} + +void EnEstone_Update(Actor* thisx, PlayState* play2) { + PlayState* play = play2; + EnEstone* this = THIS; + + DECR(this->timer); + + this->actionFunc(this, play); + + this->rot.x -= this->rotVel.x; + this->rot.y -= this->rotVel.y; + this->rot.z -= this->rotVel.z; + + Actor_MoveWithGravity(&this->actor); + if ((this->timer == 0) && !this->inactive) { + Actor_UpdateBgCheckInfo(play, &this->actor, 50.0f, 50.0f, 100.0f, 0x1C); + } + if (!this->inactive) { + Collider_UpdateCylinder(&this->actor, &this->collider); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->collider.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base); + } + EnEstone_UpdateEffects(this, play); +} + +void EnEstone_Draw(Actor* thisx, PlayState* play2) { + PlayState* play = play2; + EnEstone* this = THIS; + + if (this->inactive != true) { + Matrix_Push(); + + OPEN_DISPS(play->state.gfxCtx); + + Matrix_Translate(this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, MTXMODE_NEW); + Matrix_RotateXFApply(this->rot.x * (M_PI / 180.0f)); + Matrix_RotateYF(this->rot.y * (M_PI / 180.0f), MTXMODE_APPLY); + Matrix_RotateZF(this->rot.z * (M_PI / 180.0f), MTXMODE_APPLY); + Matrix_Scale(this->scale, this->scale, this->scale, MTXMODE_APPLY); + Matrix_Translate(0.0f, 0.0f, 0.0f, MTXMODE_APPLY); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0x80, 255, 255, 255, 255); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 255, 255, 255); + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, gEyegoreStoneDL); + + CLOSE_DISPS(play->state.gfxCtx); + + Matrix_Pop(); + } + EnEstone_DrawEffects(this, play); +} + +void EnEstone_SpawnEffect(EnEstone* this, Vec3f* pos, Vec3f* velocity, Vec3f* accel, f32 scale, s16 lifetime) { + EnEstoneEffect* effect = this->effects; + s16 i; + + for (i = 0; i < ARRAY_COUNT(this->effects); i++, effect++) { + if (!effect->isActive) { + effect->isActive = true; + effect->pos = *pos; + effect->velocity = *velocity; + effect->accel = *accel; + effect->scale = scale; + effect->timer = lifetime; + effect->rot.x = randPlusMinusPoint5Scaled(0x7530); + effect->rot.y = randPlusMinusPoint5Scaled(0x7530); + effect->rot.z = randPlusMinusPoint5Scaled(0x7530); + break; + } + } +} + +void EnEstone_UpdateEffects(EnEstone* this, PlayState* play) { + EnEstoneEffect* effect = this->effects; + s32 i; + + for (i = 0; i < ARRAY_COUNT(this->effects); i++, effect++) { + if (effect->isActive) { + effect->rot.x += 0x100; + effect->rot.z += 0x130; + + effect->pos.x += effect->velocity.x; + effect->pos.y += effect->velocity.y; + effect->pos.z += effect->velocity.z; + + effect->velocity.y += effect->accel.y; + if ((effect->pos.y < this->actor.floorHeight) && (effect->velocity.y < 0.0f)) { + effect->timer = 0; + Actor_SpawnFloorDustRing(play, &this->actor, &effect->pos, 0.0f, 5, 3.0f, 30, 15, true); + } + if (effect->timer != 0) { + effect->timer--; + } else { + effect->isActive = false; + } + } + } +} + +void EnEstone_DrawEffects(EnEstone* this, PlayState* play) { + EnEstoneEffect* effect = this->effects; + GraphicsContext* gfxCtx = play->state.gfxCtx; + s16 i; + + OPEN_DISPS(gfxCtx); + + func_8012C28C(play->state.gfxCtx); + for (i = 0; i < ARRAY_COUNT(this->effects); i++, effect++) { + if (effect->isActive) { + Matrix_Translate(effect->pos.x, effect->pos.y, effect->pos.z, MTXMODE_NEW); + Matrix_RotateXS(effect->rot.x, MTXMODE_APPLY); + Matrix_RotateYS(effect->rot.y, MTXMODE_APPLY); + Matrix_RotateZS(effect->rot.z, MTXMODE_APPLY); + Matrix_Scale(effect->scale, effect->scale, effect->scale, MTXMODE_APPLY); + Matrix_Translate(0.0f, 0.0f, 0.0f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x80, 255, 255, 255, 255); + gDPSetEnvColor(POLY_OPA_DISP++, 255, 255, 255, 255); + gSPDisplayList(POLY_OPA_DISP++, gameplay_keep_DL_06AB30); + } + } + + CLOSE_DISPS(gfxCtx); +} diff --git a/src/overlays/actors/ovl_En_Estone/z_en_estone.h b/src/overlays/actors/ovl_En_Estone/z_en_estone.h index 8e4fa075d..ceb26c9c6 100644 --- a/src/overlays/actors/ovl_En_Estone/z_en_estone.h +++ b/src/overlays/actors/ovl_En_Estone/z_en_estone.h @@ -7,10 +7,33 @@ struct EnEstone; typedef void (*EnEstoneActionFunc)(struct EnEstone*, PlayState*); +#define ENESTONE_EFFECT_COUNT 200 + +typedef enum { + /* 0 */ ENESTONE_TYPE_LARGE, + /* 1 */ ENESTONE_TYPE_SMALL, +} EnEstoneType; + +typedef struct { + /* 0x00 */ u8 isActive; + /* 0x04 */ Vec3f pos; + /* 0x10 */ Vec3f velocity; + /* 0x1C */ Vec3f accel; + /* 0x28 */ Vec3s rot; + /* 0x30 */ f32 scale; + /* 0x34 */ s16 timer; +} EnEstoneEffect; // size = 0x38 + typedef struct EnEstone { /* 0x0000 */ Actor actor; /* 0x0144 */ EnEstoneActionFunc actionFunc; - /* 0x0148 */ char unk_148[0x2C2C]; + /* 0x0148 */ f32 scale; + /* 0x014C */ Vec3f rot; + /* 0x0158 */ Vec3f rotVel; + /* 0x0164 */ s16 timer; + /* 0x0166 */ s16 inactive; + /* 0x0168 */ ColliderCylinder collider; + /* 0x01B4 */ EnEstoneEffect effects[ENESTONE_EFFECT_COUNT]; } EnEstone; // size = 0x2D74 #endif // Z_EN_ESTONE_H diff --git a/src/overlays/actors/ovl_En_Fall/z_en_fall.c b/src/overlays/actors/ovl_En_Fall/z_en_fall.c index aaf3958cb..32a4b7c82 100644 --- a/src/overlays/actors/ovl_En_Fall/z_en_fall.c +++ b/src/overlays/actors/ovl_En_Fall/z_en_fall.c @@ -220,7 +220,7 @@ void EnFall_Setup(EnFall* this, PlayState* play) { this->actor.draw = EnFall_Moon_Draw; this->actionFunc = EnFall_StoppedClosedMouthMoon_PerformCutsceneActions; Actor_SetScale(&this->actor, this->scale * 3.0f); - if (!(gSaveContext.save.weekEventReg[25] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_25_02)) { Actor_Kill(&this->actor); } break; @@ -229,7 +229,7 @@ void EnFall_Setup(EnFall* this, PlayState* play) { this->actionFunc = EnFall_ClockTowerOrTitleScreenMoon_PerformCutsceneActions; Actor_SetScale(&this->actor, this->scale * 3.0f); this->actor.draw = EnFall_Moon_Draw; - if (gSaveContext.save.weekEventReg[25] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_25_02)) { Actor_Kill(&this->actor); } break; @@ -326,7 +326,7 @@ void EnFall_CrashingMoon_HandleGiantsCutscene(EnFall* this, PlayState* play) { case 2: if (CHECK_QUEST_ITEM(QUEST_REMAINS_ODOLWA) && CHECK_QUEST_ITEM(QUEST_REMAINS_GOHT) && CHECK_QUEST_ITEM(QUEST_REMAINS_GYORG) && CHECK_QUEST_ITEM(QUEST_REMAINS_TWINMOLD)) { - if (gSaveContext.save.weekEventReg[93] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_93_04)) { if (ActorCutscene_GetCanPlayNext(0xC)) { ActorCutscene_Start(0xC, &this->actor); sGiantsCutsceneState++; @@ -335,7 +335,7 @@ void EnFall_CrashingMoon_HandleGiantsCutscene(EnFall* this, PlayState* play) { } } else if (ActorCutscene_GetCanPlayNext(0xB)) { ActorCutscene_Start(0xB, &this->actor); - gSaveContext.save.weekEventReg[93] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_93_04); sGiantsCutsceneState++; } else { ActorCutscene_SetIntentToPlay(0xB); @@ -518,8 +518,8 @@ void EnFall_MoonsTear_Fall(EnFall* this, PlayState* play) { if (this->actor.draw != NULL) { if (Math_Vec3f_StepTo(&this->actor.world.pos, &this->actor.home.pos, this->actor.speedXZ) <= 0.0f) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_GORON_BOUND_1); - gSaveContext.save.weekEventReg[74] |= 0x80; - gSaveContext.save.weekEventReg[74] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_74_80); + SET_WEEKEVENTREG(WEEKEVENTREG_74_20); Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_TEST, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0, -2); Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->actor.world.pos.x, this->actor.world.pos.y, diff --git a/src/overlays/actors/ovl_En_Fall2/z_en_fall2.c b/src/overlays/actors/ovl_En_Fall2/z_en_fall2.c index e2eaefe26..33cf9a64d 100644 --- a/src/overlays/actors/ovl_En_Fall2/z_en_fall2.c +++ b/src/overlays/actors/ovl_En_Fall2/z_en_fall2.c @@ -158,7 +158,7 @@ void EnFall2_Draw(Actor* thisx, PlayState* play) { func_8012C2DC(play->state.gfxCtx); AnimatedMat_DrawXlu(play, Lib_SegmentedToVirtual(object_fall2_Matanimheader_008840)); - mtx = GRAPH_ALLOC(play->state.gfxCtx, ALIGN16(this->skeletonInfo.unk_18->unk_1 * sizeof(Mtx))); + mtx = GRAPH_ALLOC(play->state.gfxCtx, this->skeletonInfo.unk_18->unk_1 * sizeof(Mtx)); if (mtx != NULL) { func_8012C2DC(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c b/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c index fc469da81..c7dd18369 100644 --- a/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c +++ b/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c @@ -163,27 +163,27 @@ void EnFish2_Init(Actor* thisx, PlayState* play) { this->morphTable, 24); this->actor.colChkInfo.mass = MASS_IMMOVABLE; if (this->unk_344 == 0) { - if (gSaveContext.save.weekEventReg[81] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_81_10)) { this->unk_2C0 = 1; } - if (gSaveContext.save.weekEventReg[81] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_81_20)) { this->unk_2C0 = 2; } - if (gSaveContext.save.weekEventReg[81] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_81_40)) { this->unk_2C0 = 3; } } else { - if (gSaveContext.save.weekEventReg[81] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_81_80)) { this->unk_2C0 = 1; } - if (gSaveContext.save.weekEventReg[82] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_82_01)) { this->unk_2C0 = 2; } - if (gSaveContext.save.weekEventReg[82] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_82_02)) { this->unk_2C0 = 3; } } @@ -619,18 +619,18 @@ void func_80B297FC(EnFish2* this, PlayState* play) { this->unk_2C0++; if (this->unk_344 == 0) { if (this->unk_2C0 == 1) { - gSaveContext.save.weekEventReg[81] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_81_10); } else if (this->unk_2C0 == 2) { - gSaveContext.save.weekEventReg[81] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_81_20); } else if (this->unk_2C0 == 3) { - gSaveContext.save.weekEventReg[81] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_81_40); } } else if (this->unk_2C0 == 1) { - gSaveContext.save.weekEventReg[81] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_81_80); } else if (this->unk_2C0 == 2) { - gSaveContext.save.weekEventReg[82] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_82_01); } else if (this->unk_2C0 == 3) { - gSaveContext.save.weekEventReg[82] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_82_02); } if (this->unk_2B0 != 0) { @@ -890,12 +890,12 @@ void func_80B2A498(EnFish2* this, PlayState* play) { temp_v0->speedXZ = 4.0f; temp_v0->velocity.y = 15.0f; Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_PIECE_OF_HEART); - gSaveContext.save.weekEventReg[81] &= (u8)~0x10; - gSaveContext.save.weekEventReg[81] &= (u8)~0x20; - gSaveContext.save.weekEventReg[81] &= (u8)~0x40; - gSaveContext.save.weekEventReg[81] &= (u8)~0x80; - gSaveContext.save.weekEventReg[82] &= (u8)~1; - gSaveContext.save.weekEventReg[82] &= (u8)~2; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_81_10); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_81_20); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_81_40); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_81_80); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_82_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_82_02); } } diff --git a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c index 1a8866875..6d75abddb 100644 --- a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c +++ b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c @@ -4,6 +4,7 @@ * Description: Fishing Pond Elements (Owner, Fish, Props, Effects...) */ +#include "prevent_bss_reordering.h" #include "z_en_fishing.h" #include "z64rumble.h" #include "z64shrink_window.h" @@ -1158,7 +1159,7 @@ void EnFishing_DrawEffects(FishingEffect* effect, PlayState* play) { for (i = 0; i < 100; i++) { if (effect->type == FS_EFF_RIPPLE) { if (flag == 0) { - gSPDisplayList(POLY_XLU_DISP++, gFishingRippleSetupDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingRippleMaterialDL); gDPSetEnvColor(POLY_XLU_DISP++, 155, 155, 155, 0); flag++; } @@ -1170,7 +1171,7 @@ void EnFishing_DrawEffects(FishingEffect* effect, PlayState* play) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gFishingRippleVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingRippleModelDL); } effect++; } @@ -1180,7 +1181,7 @@ void EnFishing_DrawEffects(FishingEffect* effect, PlayState* play) { for (i = 0; i < 100; i++) { if (effect->type == FS_EFF_DUST_SPLASH) { if (flag == 0) { - gSPDisplayList(POLY_XLU_DISP++, gFishingDustSplashSetupDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingDustSplashMaterialDL); gDPSetEnvColor(POLY_XLU_DISP++, 200, 200, 200, 0); flag++; } @@ -1193,7 +1194,7 @@ void EnFishing_DrawEffects(FishingEffect* effect, PlayState* play) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gFishingDustSplashVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingDustSplashModelDL); } effect++; } @@ -1203,7 +1204,7 @@ void EnFishing_DrawEffects(FishingEffect* effect, PlayState* play) { for (i = 0; i < 100; i++) { if (effect->type == FS_EFF_WATER_DUST) { if (flag == 0) { - gSPDisplayList(POLY_OPA_DISP++, gFishingWaterDustSetupDL); + gSPDisplayList(POLY_OPA_DISP++, gFishingWaterDustMaterialDL); gDPSetEnvColor(POLY_OPA_DISP++, 40, 90, 80, 128); flag++; } @@ -1220,7 +1221,7 @@ void EnFishing_DrawEffects(FishingEffect* effect, PlayState* play) { gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_OPA_DISP++, gFishingWaterDustVtxDL); + gSPDisplayList(POLY_OPA_DISP++, gFishingWaterDustModelDL); } effect++; } @@ -1230,7 +1231,7 @@ void EnFishing_DrawEffects(FishingEffect* effect, PlayState* play) { for (i = 0; i < 100; i++) { if (effect->type == FS_EFF_BUBBLE) { if (flag == 0) { - gSPDisplayList(POLY_XLU_DISP++, gFishingBubbleSetupDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingBubbleMaterialDL); gDPSetEnvColor(POLY_XLU_DISP++, 150, 150, 150, 0); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, 255); flag++; @@ -1242,7 +1243,7 @@ void EnFishing_DrawEffects(FishingEffect* effect, PlayState* play) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gFishingBubbleVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingBubbleModelDL); } effect++; } @@ -1266,7 +1267,7 @@ void EnFishing_DrawEffects(FishingEffect* effect, PlayState* play) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gFishingRainDropVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingRainDropModelDL); } effect++; } @@ -1278,7 +1279,7 @@ void EnFishing_DrawEffects(FishingEffect* effect, PlayState* play) { for (i = 30; i < EFFECT_COUNT; i++) { if (effect->type == FS_EFF_RAIN_RIPPLE) { if (flag == 0) { - gSPDisplayList(POLY_XLU_DISP++, gFishingRippleSetupDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingRippleMaterialDL); gDPSetEnvColor(POLY_XLU_DISP++, 155, 155, 155, 0); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, 130); flag++; @@ -1289,7 +1290,7 @@ void EnFishing_DrawEffects(FishingEffect* effect, PlayState* play) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gFishingRippleVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingRippleModelDL); } effect++; } @@ -1299,7 +1300,7 @@ void EnFishing_DrawEffects(FishingEffect* effect, PlayState* play) { for (i = 30; i < EFFECT_COUNT; i++) { if (effect->type == FS_EFF_RAIN_SPLASH) { if (flag == 0) { - gSPDisplayList(POLY_XLU_DISP++, gFishingRainSplashSetupDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingRainSplashMaterialDL); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, KREG(19) + 80); flag++; } @@ -1317,7 +1318,7 @@ void EnFishing_DrawEffects(FishingEffect* effect, PlayState* play) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gFishingRainSplashVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingRainSplashModelDL); } effect++; } @@ -1481,9 +1482,9 @@ void EnFishing_UpdateLine(PlayState* play, Vec3f* basePos, Vec3f* pos, Vec3f* ro dy = spD8 - (pos + i - 1)->y; dz = (pos + i)->z - (pos + i - 1)->z; - ry = Math_Acot2F(dz, dx); + ry = Math_Atan2F_XY(dz, dx); dist = sqrtf(SQ(dx) + SQ(dz)); - rx = -Math_Acot2F(dist, dy); + rx = -Math_Atan2F_XY(dist, dy); (rot + i - 1)->y = ry; (rot + i - 1)->x = rx; @@ -1517,9 +1518,9 @@ void EnFishing_UpdateLinePos(Vec3f* pos) { dy = (pos + i)->y - (pos + i + 1)->y; dz = (pos + i)->z - (pos + i + 1)->z; - ry = Math_Acot2F(dz, dx); + ry = Math_Atan2F_XY(dz, dx); dist = sqrtf(SQ(dx) + SQ(dz)); - rx = -Math_Acot2F(dist, dy); + rx = -Math_Atan2F_XY(dist, dy); Matrix_RotateYF(ry, MTXMODE_NEW); Matrix_RotateXFApply(rx); @@ -1559,9 +1560,9 @@ void EnFishing_DrawLureHook(PlayState* play, Vec3f* pos, Vec3f* refPos, u8 hookI dy = refPos->y - pos->y + offsetY; dz = refPos->z - pos->z; - ry = Math_Acot2F(dz, dx); + ry = Math_Atan2F_XY(dz, dx); dist = sqrtf(SQ(dx) + SQ(dz)); - rx = -Math_Acot2F(dist, dy); + rx = -Math_Atan2F_XY(dist, dy); Matrix_RotateYF(ry, MTXMODE_NEW); Matrix_RotateXFApply(rx); @@ -1680,9 +1681,9 @@ void EnFishing_UpdateSinkingLure(PlayState* play) { dy = (pos + i)->y - (pos + i - 1)->y + offsetY; dz = (pos + i)->z - (pos + i - 1)->z + offsetZ; - ry = Math_Acot2F(dz, dx); + ry = Math_Atan2F_XY(dz, dx); dist = sqrtf(SQ(dx) + SQ(dz)); - rx = -Math_Acot2F(dist, dy); + rx = -Math_Atan2F_XY(dist, dy); Matrix_RotateYF(ry, MTXMODE_NEW); Matrix_RotateXFApply(rx); @@ -1710,7 +1711,7 @@ void EnFishing_DrawSinkingLure(PlayState* play) { if (sLurePos.y < WATER_SURFACE_Y(play)) { func_8012C28C(play->state.gfxCtx); - gSPDisplayList(POLY_OPA_DISP++, gFishingSinkingLureSegmentSetupDL); + gSPDisplayList(POLY_OPA_DISP++, gFishingSinkingLureSegmentMaterialDL); for (i = SINKING_LURE_SEG_COUNT - 1; i >= 0; i--) { if ((i + D_80911F20) < SINKING_LURE_SEG_COUNT) { @@ -1721,13 +1722,13 @@ void EnFishing_DrawSinkingLure(PlayState* play) { gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_OPA_DISP++, gFishingSinkingLureSegmentVtxDL); + gSPDisplayList(POLY_OPA_DISP++, gFishingSinkingLureSegmentModelDL); } } } else { func_8012C2DC(play->state.gfxCtx); - gSPDisplayList(POLY_XLU_DISP++, gFishingSinkingLureSegmentSetupDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingSinkingLureSegmentMaterialDL); for (i = SINKING_LURE_SEG_COUNT - 1; i >= 0; i--) { if ((i + D_80911F20) < SINKING_LURE_SEG_COUNT) { @@ -1738,7 +1739,7 @@ void EnFishing_DrawSinkingLure(PlayState* play) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gFishingSinkingLureSegmentVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingSinkingLureSegmentModelDL); } } } @@ -1850,7 +1851,7 @@ void EnFishing_DrawLureAndLine(PlayState* play, Vec3f* linePos, Vec3f* lineRot) Matrix_Scale(D_809101C8, 1.0f, dist, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gFishingLineVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingLineModelDL); } else { for (i = spB4; i < LINE_SEG_COUNT - 1; i++) { if ((i == LINE_SEG_COUNT - 3) && (D_80917206 == 0) && (D_8090CD14 == 3)) { @@ -1878,7 +1879,7 @@ void EnFishing_DrawLureAndLine(PlayState* play, Vec3f* linePos, Vec3f* lineRot) gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gFishingLineVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingLineModelDL); break; } @@ -1888,7 +1889,7 @@ void EnFishing_DrawLureAndLine(PlayState* play, Vec3f* linePos, Vec3f* lineRot) Matrix_Scale(D_809101C8, 1.0f, 0.005f, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gFishingLineVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingLineModelDL); } } @@ -2214,7 +2215,7 @@ void EnFishing_UpdateLure(EnFishing* this, PlayState* play) { sLureRot.y = sReelLineRot[LINE_SEG_COUNT - 2].y; } else { sLureRot.x = 0.0f; - sLureRot.y = Math_Acot2F(spD0, spD8) + M_PI; + sLureRot.y = Math_Atan2F_XY(spD0, spD8) + M_PI; } phi_f16 = sqrtf(SQ(spD8) + SQ(spD4) + SQ(spD0)); @@ -2399,7 +2400,7 @@ void EnFishing_UpdateLure(EnFishing* this, PlayState* play) { sp90.x = player->actor.world.pos.x - sLurePos.x; sp90.z = player->actor.world.pos.z - sLurePos.z; - sp90.y = Math_Acot2F(sp90.z, sp90.x); + sp90.y = Math_Atan2F_XY(sp90.z, sp90.x); D_809101B0 = (sp70 * D_809101BC) + sp90.y; D_809101BC *= -1.0f; @@ -2963,10 +2964,10 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) { sp12C = this->unk_1AC.y - this->actor.world.pos.y; sp128 = this->unk_1AC.z - this->actor.world.pos.z; - spFC = Math_FAtan2F(sp128, sp130); + spFC = Math_Atan2S_XY(sp128, sp130); sp124 = sqrtf(SQ(sp130) + SQ(sp128)); - spFE = Math_FAtan2F(sp124, sp12C); + spFE = Math_Atan2S_XY(sp124, sp12C); sp124 = sqrtf(SQ(sp130) + SQ(sp128) + SQ(sp12C)); if ((this->unk_198 != 0) && (this->unk_150 != 2) && (this->unk_150 != 3) && (this->unk_150 != 4)) { @@ -3847,9 +3848,12 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) { sp10C.y = -10.0f; sp10C.z = 5.0f; Matrix_MultVec3f(&sp10C, &sp100); - Math_ApproachF(&this->actor.world.pos.x, player->bodyPartsPos[15].x + sp100.x, 1.0f, 6.0f); - Math_ApproachF(&this->actor.world.pos.y, player->bodyPartsPos[15].y + sp100.y, 1.0f, 6.0f); - Math_ApproachF(&this->actor.world.pos.z, player->bodyPartsPos[15].z + sp100.z, 1.0f, 6.0f); + Math_ApproachF(&this->actor.world.pos.x, player->bodyPartsPos[PLAYER_BODYPART_RIGHT_HAND].x + sp100.x, 1.0f, + 6.0f); + Math_ApproachF(&this->actor.world.pos.y, player->bodyPartsPos[PLAYER_BODYPART_RIGHT_HAND].y + sp100.y, 1.0f, + 6.0f); + Math_ApproachF(&this->actor.world.pos.z, player->bodyPartsPos[PLAYER_BODYPART_RIGHT_HAND].z + sp100.z, 1.0f, + 6.0f); D_809101C0 = 188.0f; @@ -4250,7 +4254,7 @@ void EnFishing_HandleReedContact(FishingProp* prop, Vec3f* entityPos) { f32 distXZ = sqrtf(SQ(dx) + SQ(dz)); if (distXZ <= 20.0f) { - prop->rotY = Math_Acot2F(dz, dx); + prop->rotY = Math_Atan2F_XY(dz, dx); Math_ApproachF(&prop->rotX, (20.0f - distXZ) * 0.03f, 0.2f, 0.2f); } @@ -4262,7 +4266,7 @@ void EnFishing_HandleLilyPadContact(FishingProp* prop, Vec3f* entityPos, u8 fish f32 distXZ = sqrtf(SQ(dx) + SQ(dz)); if (distXZ <= 40.0f) { - Math_ApproachS(&prop->lilyPadAngle, Math_FAtan2F(dz, dx), 10, 0x300); + Math_ApproachS(&prop->lilyPadAngle, Math_Atan2S_XY(dz, dx), 10, 0x300); } if (fishTimer && (distXZ <= 60.0f)) { @@ -4351,7 +4355,7 @@ void EnFishing_DrawPondProps(PlayState* play) { for (i = 0; i < POND_PROP_COUNT; i++) { if (prop->type == FS_PROP_REED) { if (flag == 0) { - gSPDisplayList(POLY_XLU_DISP++, gFishingReedSetupDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingReedMaterialDL); flag++; } @@ -4364,7 +4368,7 @@ void EnFishing_DrawPondProps(PlayState* play) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gFishingReedVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingReedModelDL); } } @@ -4376,7 +4380,7 @@ void EnFishing_DrawPondProps(PlayState* play) { for (i = 0; i < POND_PROP_COUNT; i++) { if (prop->type == FS_PROP_WOOD_POST) { if (flag == 0) { - gSPDisplayList(POLY_OPA_DISP++, gFishingWoodPostSetupDL); + gSPDisplayList(POLY_OPA_DISP++, gFishingWoodPostMaterialDL); flag++; } @@ -4386,7 +4390,7 @@ void EnFishing_DrawPondProps(PlayState* play) { gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_OPA_DISP++, gFishingWoodPostVtxDL); + gSPDisplayList(POLY_OPA_DISP++, gFishingWoodPostModelDL); } } @@ -4398,7 +4402,7 @@ void EnFishing_DrawPondProps(PlayState* play) { for (i = 0; i < POND_PROP_COUNT; i++) { if (prop->type == FS_PROP_LILY_PAD) { if (flag == 0) { - gSPDisplayList(POLY_XLU_DISP++, gFishingLilyPadSetupDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingLilyPadMaterialDL); flag++; } @@ -4411,7 +4415,7 @@ void EnFishing_DrawPondProps(PlayState* play) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gFishingLilyPadVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gFishingLilyPadModelDL); } } @@ -4423,7 +4427,7 @@ void EnFishing_DrawPondProps(PlayState* play) { for (i = 0; i < POND_PROP_COUNT; i++) { if (prop->type == FS_PROP_ROCK) { if (flag == 0) { - gSPDisplayList(POLY_OPA_DISP++, gFishingRockSetupDL); + gSPDisplayList(POLY_OPA_DISP++, gFishingRockMaterialDL); flag++; } @@ -4434,7 +4438,7 @@ void EnFishing_DrawPondProps(PlayState* play) { gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_OPA_DISP++, gFishingRockVtxDL); + gSPDisplayList(POLY_OPA_DISP++, gFishingRockModelDL); } } @@ -4557,9 +4561,9 @@ void EnFishing_UpdateGroupFishes(PlayState* play) { dx = fish->unk_10.x - fish->pos.x; dy = fish->unk_10.y - fish->pos.y; dz = fish->unk_10.z - fish->pos.z; - spD4 = Math_FAtan2F(dz, dx); + spD4 = Math_Atan2S_XY(dz, dx); dist = sqrtf(SQ(dx) + SQ(dz)); - spD6 = Math_FAtan2F(dist, dy); + spD6 = Math_Atan2S_XY(dist, dy); if ((dist < 10.0f) || (((fish->timer % 32) == 0) && (Rand_ZeroOne() > 0.5f))) { fish->unk_10.y = basePos[groupIndex].y + randPlusMinusPoint5Scaled(10.0f); @@ -4650,7 +4654,7 @@ void EnFishing_DrawGroupFishes(PlayState* play) { for (i = 0; i < GROUP_FISH_COUNT; i++) { if (fish->type != FS_GROUP_FISH_NONE) { if (flag == 0) { - gSPDisplayList(POLY_OPA_DISP++, gFishingGroupFishSetupDL); + gSPDisplayList(POLY_OPA_DISP++, gFishingGroupFishMaterialDL); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 155, 155, 155, 255); flag++; } @@ -4663,7 +4667,7 @@ void EnFishing_DrawGroupFishes(PlayState* play) { gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_OPA_DISP++, gFishingGroupFishVtxDL); + gSPDisplayList(POLY_OPA_DISP++, gFishingGroupFishModelDL); } } fish++; @@ -5176,7 +5180,7 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { spFC.x = sLurePos.x - player->actor.world.pos.x; spFC.z = sLurePos.z - player->actor.world.pos.z; lureDistXZ = sqrtf(SQXZ(spFC)); - Matrix_RotateYF(Math_Acot2F(spFC.z, spFC.x), MTXMODE_NEW); + Matrix_RotateYF(Math_Atan2F_XY(spFC.z, spFC.x), MTXMODE_NEW); sp114.x = 0.0f; sp114.y = 0.0f; @@ -5286,7 +5290,7 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { sSubCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, sSubCamId, CAM_STATUS_ACTIVE); - func_800B7298(play, &this->actor, 4); + func_800B7298(play, &this->actor, PLAYER_CSMODE_4); mainCam = Play_GetCamera(play, CAM_ID_MAIN); sSubCamEye.x = mainCam->eye.x; @@ -5313,7 +5317,7 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { func_80169AFC(play, sSubCamId, 0); Cutscene_End(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); + func_800B7298(play, &this->actor, PLAYER_CSMODE_6); D_8090CD4C = 0; sSubCamId = SUB_CAM_ID_DONE; D_8090CD50 = 30; @@ -5327,7 +5331,7 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { sSubCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, sSubCamId, CAM_STATUS_ACTIVE); - func_800B7298(play, &this->actor, 4); + func_800B7298(play, &this->actor, PLAYER_CSMODE_4); mainCam = Play_GetCamera(play, CAM_ID_MAIN); sSubCamEye.x = mainCam->eye.x; @@ -5414,7 +5418,8 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { mainCam->at = sSubCamAt; func_80169AFC(play, sSubCamId, 0); Cutscene_End(play, &play->csCtx); - func_800B7298(play, &this->actor, 6); // arg2 changed from 7 to 6 in MM + func_800B7298(play, &this->actor, + PLAYER_CSMODE_6); // arg2 changed from PLAYER_CSMODE_7 to PLAYER_CSMODE_6 in MM D_8090CD4C = 0; sSubCamId = SUB_CAM_ID_DONE; player->unk_B28 = -5; diff --git a/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c b/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c index 4fd3c46d8..3ad6809dc 100644 --- a/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c +++ b/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c @@ -719,7 +719,7 @@ void func_808D217C(EnFloormas* this, Player* player) { this->actor.speedXZ = 0.0f; this->actor.velocity.y = 0.0f; func_808D08D0(this); - ptr = &D_808D3900[(void)0, gSaveContext.save.playerForm]; + ptr = &D_808D3900[GET_PLAYER_FORM]; this->actor.home.pos.x = ptr->z * Math_SinS(this->actor.shape.rot.y); this->actor.home.pos.y = CLAMP(-this->actor.playerHeightRel, ptr->x, ptr->y); this->actor.home.pos.z = ptr->z * Math_CosS(this->actor.shape.rot.y); @@ -762,7 +762,7 @@ void func_808D22C8(EnFloormas* this, PlayState* play) { this->actor.speedXZ = -3.0f; func_808D1740(this); } else if ((this->unk_190 % 20) == 0) { - func_800B8E58(player, NA_SE_VO_LI_DAMAGE_S + player->ageProperties->unk_92); + func_800B8E58(player, NA_SE_VO_LI_DAMAGE_S + player->ageProperties->voiceSfxIdOffset); play->damagePlayer(play, -4); } Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_FLOORMASTER_SM_STICK - SFX_FLAG); diff --git a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c index 5cb05af83..793167420 100644 --- a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c +++ b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c @@ -153,7 +153,7 @@ u16 EnFsn_GetWelcome(PlayState* play) { void EnFsn_HandleConversationBackroom(EnFsn* this, PlayState* play) { switch (this->textId) { case 0: - if (!(gSaveContext.save.weekEventReg[80] & 0x10)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_80_10)) { this->textId = 0x29E0; break; } else { @@ -166,7 +166,7 @@ void EnFsn_HandleConversationBackroom(EnFsn* this, PlayState* play) { this->flags |= ENFSN_GIVE_ITEM; this->flags |= ENFSN_GAVE_LETTER_TO_MAMA; this->getItemId = GI_LETTER_TO_MAMA; - gSaveContext.save.weekEventReg[80] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_80_10); this->textId = 0x29F1; break; } else { @@ -186,7 +186,7 @@ void EnFsn_HandleConversationBackroom(EnFsn* this, PlayState* play) { this->flags |= ENFSN_GIVE_ITEM; this->flags |= ENFSN_GAVE_LETTER_TO_MAMA; this->getItemId = GI_LETTER_TO_MAMA; - gSaveContext.save.weekEventReg[80] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_80_10); this->textId = 0x29F1; break; case 0x29F1: @@ -212,7 +212,7 @@ void EnFsn_HandleSetupResumeInteraction(EnFsn* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play) && this->cutsceneState == ENFSN_CUTSCENESTATE_STOPPED) { Actor_ProcessTalkRequest(&this->actor, &play->state); - func_800B85E0(&this->actor, play, 400.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); if (ENFSN_IS_SHOP(&this->actor)) { this->actor.textId = 0; } @@ -301,8 +301,8 @@ void EnFsn_CursorLeftRight(EnFsn* this) { } s16 EnFsn_GetThirdDayItemId(void) { - if (!(gSaveContext.save.weekEventReg[33] & 4) && CURRENT_DAY == 3) { - if (!(gSaveContext.save.weekEventReg[33] & 8) && !(gSaveContext.save.weekEventReg[79] & 0x40)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_33_04) && CURRENT_DAY == 3) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_79_40)) { return SI_BOMB_BAG_30_1; } return SI_MASK_ALL_NIGHT; @@ -335,7 +335,7 @@ s32 EnFsn_HasItemsToSell(void) { } if ((STOLEN_ITEM_1 != STOLEN_ITEM_NONE) || (STOLEN_ITEM_2 != STOLEN_ITEM_NONE) || - !(gSaveContext.save.weekEventReg[33] & 4)) { + !CHECK_WEEKEVENTREG(WEEKEVENTREG_33_04)) { return true; } @@ -441,9 +441,9 @@ s32 EnFsn_FacingShopkeeperDialogResult(EnFsn* this, PlayState* play) { func_8019F208(); if (CURRENT_DAY != 3) { this->actor.textId = 0x29FB; - } else if (gSaveContext.save.weekEventReg[33] & 4) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_04)) { this->actor.textId = 0x29FF; - } else if (!(gSaveContext.save.weekEventReg[33] & 8) && !(gSaveContext.save.weekEventReg[79] & 0x40)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_79_40)) { this->actor.textId = 0x29D7; } else { this->actor.textId = 0x29D8; @@ -839,7 +839,7 @@ void EnFsn_StartBuying(EnFsn* this, PlayState* play) { this->actionFunc = EnFsn_DeterminePrice; break; case 0x29CF: - player->exchangeItemId = PLAYER_AP_NONE; + player->exchangeItemId = PLAYER_IA_NONE; this->actionFunc = EnFsn_SetupDeterminePrice; break; } @@ -861,10 +861,9 @@ void EnFsn_AskBuyOrSell(EnFsn* this, PlayState* play) { Message_StartTextbox(play, this->actor.textId, &this->actor); break; case 0x29D2: - if (gSaveContext.save.weekEventReg[33] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_04)) { this->actor.textId = 0x2A01; - } else if (!(gSaveContext.save.weekEventReg[33] & 8) && - !(gSaveContext.save.weekEventReg[79] & 0x40)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_79_40)) { this->actor.textId = 0x29D3; } else { this->actor.textId = 0x29D4; @@ -916,12 +915,13 @@ void EnFsn_SetupDeterminePrice(EnFsn* this, PlayState* play) { void EnFsn_DeterminePrice(EnFsn* this, PlayState* play) { Player* player = GET_PLAYER(play); - s32 itemActionParam; + PlayerItemAction itemAction; u8 buttonItem; if (Message_GetState(&play->msgCtx) == TEXT_STATE_16) { - itemActionParam = func_80123810(play); - if (itemActionParam > PLAYER_AP_NONE) { + itemAction = func_80123810(play); + + if (itemAction > PLAYER_IA_NONE) { buttonItem = GET_CUR_FORM_BTN_ITEM(player->heldItemButton); this->price = (buttonItem < ITEM_MOON_TEAR) ? gItemPrices[buttonItem] : 0; if (this->price > 0) { @@ -934,7 +934,7 @@ void EnFsn_DeterminePrice(EnFsn* this, PlayState* play) { } this->actor.textId = player->actor.textId; func_801477B4(play); - } else if (itemActionParam < PLAYER_AP_NONE) { + } else if (itemAction <= PLAYER_IA_MINUS1) { if (CURRENT_DAY == 3) { this->actor.textId = 0x29DF; } else { @@ -982,7 +982,7 @@ void EnFsn_MakeOffer(EnFsn* this, PlayState* play) { break; case 1: func_8019F230(); - player->exchangeItemId = PLAYER_AP_NONE; + player->exchangeItemId = PLAYER_IA_NONE; this->actionFunc = EnFsn_SetupDeterminePrice; break; } @@ -997,7 +997,7 @@ void EnFsn_GiveItem(EnFsn* this, PlayState* play) { } this->actor.parent = NULL; if (ENFSN_IS_SHOP(&this->actor) && !this->isSelling) { - func_80123D50(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_AP_BOTTLE); + Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_IA_BOTTLE); } this->actionFunc = EnFsn_SetupResumeInteraction; } else if (this->isSelling == true) { @@ -1038,7 +1038,7 @@ void EnFsn_ResumeInteraction(EnFsn* this, PlayState* play) { this->actionFunc = EnFsn_ConverseBackroom; } } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -1145,7 +1145,7 @@ void EnFsn_HandleCanPlayerBuyItem(EnFsn* this, PlayState* play) { switch (item->canBuyFunc(play, item)) { case CANBUY_RESULT_SUCCESS_2: func_8019F208(); - gSaveContext.save.weekEventReg[33] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_33_04); case CANBUY_RESULT_SUCCESS_1: if (this->cutsceneState == ENFSN_CUTSCENESTATE_PLAYING) { ActorCutscene_Stop(this->cutscene); @@ -1416,7 +1416,7 @@ void EnFsn_Init(Actor* thisx, PlayState* play) { EnFsn_GetCutscenes(this); EnFsn_InitShop(this, play); } else { - if ((gSaveContext.save.weekEventReg[33] & 8) || (gSaveContext.save.weekEventReg[79] & 0x40)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08) || CHECK_WEEKEVENTREG(WEEKEVENTREG_79_40)) { Actor_Kill(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 622c2138b..159bd7981 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -119,7 +119,7 @@ void func_809616E0(EnFu* this, PlayState* play) { for (i = 0; i < this->unk_520; i++) { temp_f20 = this->actor.world.pos.x - this->unk_538[i].x; temp_f22 = this->actor.world.pos.z - this->unk_538[i].z; - atan = Math_FAtan2F(temp_f22, temp_f20); + atan = Math_Atan2S_XY(temp_f22, temp_f20); if (!spA0 || ((i % 2) != 0)) { Actor_Spawn(&play->actorCtx, play, this->unk_544, this->unk_538[i].x, this->unk_538[i].y, @@ -229,8 +229,8 @@ void EnFu_Init(Actor* thisx, PlayState* play) { void EnFu_Destroy(Actor* thisx, PlayState* play) { EnFu* this = THIS; - gSaveContext.save.weekEventReg[63] &= (u8)~1; - gSaveContext.save.weekEventReg[8] &= (u8)~1; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_08_01); Collider_DestroyCylinder(play, &this->collider); } @@ -388,9 +388,9 @@ void func_80962340(EnFu* this, PlayState* play) { if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { Message_StartTextbox(play, 0x287E, &this->actor); this->unk_552 = 0x287E; - } else if ((CURRENT_DAY == 3) && (gSaveContext.save.weekEventReg[22] & 0x10) && - (gSaveContext.save.weekEventReg[22] & 0x20)) { - if ((gSaveContext.save.weekEventReg[22] & 0x40)) { + } else if ((CURRENT_DAY == 3) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_10) && + CHECK_WEEKEVENTREG(WEEKEVENTREG_22_20)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_40)) { Message_StartTextbox(play, 0x2883, &this->actor); this->unk_552 = 0x2883; } else { @@ -532,8 +532,8 @@ void func_80962660(EnFu* this, PlayState* play) { break; case 0x287D: - gSaveContext.save.weekEventReg[63] |= 1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + SET_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); func_801477B4(play); player->stateFlags1 |= PLAYER_STATE1_20; this->unk_53C = 0; @@ -605,8 +605,8 @@ void func_809628D0(EnFu* this, PlayState* play) { case 0x2884: case 0x2887: case 0x288A: - gSaveContext.save.weekEventReg[63] &= (u8)~1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); func_809622FC(this); break; @@ -737,7 +737,7 @@ void func_80962EBC(EnFu* this, PlayState* play) { void func_80962F10(EnFu* this) { this->unk_548 = 0; this->actor.flags &= ~ACTOR_FLAG_1; - gSaveContext.save.weekEventReg[8] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_08_01); this->actionFunc = func_80962F4C; } @@ -824,7 +824,7 @@ void func_809632D0(EnFu* this) { Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } - gSaveContext.save.weekEventReg[8] &= (u8)~1; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_08_01); if (this->unk_2D4 != NULL) { BgFuMizu* mizu = this->unk_2D4; @@ -878,7 +878,7 @@ void func_80963560(EnFu* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actor.parent = NULL; func_80963610(this); - } else if ((this->unk_552 == 0x2880) && !(gSaveContext.save.weekEventReg[22] & 0x80)) { + } else if ((this->unk_552 == 0x2880) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_22_80)) { Actor_PickUp(&this->actor, play, GI_HEART_PIECE, 500.0f, 100.0f); } else { Actor_PickUp(&this->actor, play, GI_RUPEE_PURPLE, 500.0f, 100.0f); @@ -895,13 +895,13 @@ void func_80963630(EnFu* this, PlayState* play) { Player* player = GET_PLAYER(play); if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - if ((gSaveContext.save.weekEventReg[22] & 0x10) && (gSaveContext.save.weekEventReg[22] & 0x20) && - (CURRENT_DAY == 3) && (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN)) { - if (gSaveContext.save.weekEventReg[22] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_10) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_20) && (CURRENT_DAY == 3) && + (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_40)) { Message_StartTextbox(play, 0x2884, &this->actor); this->unk_552 = 0x2884; - } else if (!(gSaveContext.save.weekEventReg[22] & 0x80)) { - gSaveContext.save.weekEventReg[22] |= 0x80; + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_80)) { + SET_WEEKEVENTREG(WEEKEVENTREG_22_80); Message_StartTextbox(play, 0x2882, &this->actor); this->unk_552 = 0x2882; } else { @@ -920,22 +920,22 @@ void func_80963630(EnFu* this, PlayState* play) { if (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { switch (CURRENT_DAY) { case 1: - gSaveContext.save.weekEventReg[22] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_22_10); break; case 2: - gSaveContext.save.weekEventReg[22] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_22_20); break; case 3: - gSaveContext.save.weekEventReg[22] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_22_40); break; } } player->stateFlags1 &= ~PLAYER_STATE1_20; } else { this->actor.child->freezeTimer = 10; - func_800B85E0(&this->actor, play, 500.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 500.0f, PLAYER_IA_MINUS1); } } @@ -1019,7 +1019,7 @@ void func_809639D0(EnFu* this, PlayState* play) { if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { Message_StartTextbox(play, 0x2853, &this->actor); this->unk_552 = 0x2853; - } else if (gSaveContext.save.weekEventReg[22] & 0x10) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_10)) { Message_StartTextbox(play, 0x284D, &this->actor); this->unk_552 = 0x284D; } else if (this->unk_53E == 1) { @@ -1043,7 +1043,7 @@ void func_809639D0(EnFu* this, PlayState* play) { } else if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { Message_StartTextbox(play, 0x2853, &this->actor); this->unk_552 = 0x2853; - } else if (!(gSaveContext.save.weekEventReg[22] & 0x10)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_10)) { if (this->unk_53E == 1) { Message_StartTextbox(play, 0x285B, &this->actor); this->unk_552 = 0x285B; @@ -1052,7 +1052,7 @@ void func_809639D0(EnFu* this, PlayState* play) { Message_StartTextbox(play, 0x285D, &this->actor); this->unk_552 = 0x285D; } - } else if (gSaveContext.save.weekEventReg[22] & 0x20) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_20)) { Message_StartTextbox(play, 0x2855, &this->actor); this->unk_552 = 0x2855; } else if (this->unk_53E == 1) { @@ -1076,15 +1076,15 @@ void func_809639D0(EnFu* this, PlayState* play) { } else if (CUR_UPG_VALUE(UPG_QUIVER) == 0) { Message_StartTextbox(play, 0x284B, &this->actor); this->unk_552 = 0x284B; - } else if (gSaveContext.save.weekEventReg[22] & 0x40) { - if ((gSaveContext.save.weekEventReg[22] & 0x10) && (gSaveContext.save.weekEventReg[22] & 0x20)) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_40)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_10) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_20)) { Message_StartTextbox(play, 0x285F, &this->actor); this->unk_552 = 0x285F; } else { Message_StartTextbox(play, 0x2861, &this->actor); this->unk_552 = 0x2861; } - } else if ((gSaveContext.save.weekEventReg[22] & 0x10) && (gSaveContext.save.weekEventReg[22] & 0x20)) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_10) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_20)) { if (this->unk_53E == 1) { Message_StartTextbox(play, 0x2863, &this->actor); this->unk_552 = 0x2863; @@ -1093,7 +1093,7 @@ void func_809639D0(EnFu* this, PlayState* play) { Message_StartTextbox(play, 0x2865, &this->actor); this->unk_552 = 0x2865; } - } else if ((gSaveContext.save.weekEventReg[22] & 0x10) || (gSaveContext.save.weekEventReg[22] & 0x20)) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_10) || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_20)) { if (this->unk_53E == 1) { Message_StartTextbox(play, 0x2867, &this->actor); this->unk_552 = 0x2867; diff --git a/src/overlays/actors/ovl_En_Fz/z_en_fz.c b/src/overlays/actors/ovl_En_Fz/z_en_fz.c index 04ae61b72..f7d1d7cd1 100644 --- a/src/overlays/actors/ovl_En_Fz/z_en_fz.c +++ b/src/overlays/actors/ovl_En_Fz/z_en_fz.c @@ -1003,7 +1003,7 @@ void func_80934464(EnFz* this, PlayState* play) { gDPPipeSync(POLY_XLU_DISP++); if (flag == 0) { - gSPDisplayList(POLY_XLU_DISP++, gFrozenSteamDL); + gSPDisplayList(POLY_XLU_DISP++, gFrozenSteamMaterialDL); flag++; } @@ -1017,7 +1017,7 @@ void func_80934464(EnFz* this, PlayState* play) { Matrix_Scale(ptr->unk_30, ptr->unk_30, 1.0f, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gFrozenSteamVtxDL); + gSPDisplayList(POLY_XLU_DISP++, gFrozenSteamModelDL); } } diff --git a/src/overlays/actors/ovl_En_Gakufu/z_en_gakufu.c b/src/overlays/actors/ovl_En_Gakufu/z_en_gakufu.c index f6a227015..55dc23737 100644 --- a/src/overlays/actors/ovl_En_Gakufu/z_en_gakufu.c +++ b/src/overlays/actors/ovl_En_Gakufu/z_en_gakufu.c @@ -145,20 +145,20 @@ void EnGakufu_Init(Actor* thisx, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_2000000; if (EnGakufu_IsPlayerInRange(this, play)) { - gSaveContext.eventInf[3] |= 2; + SET_EVENTINF(EVENTINF_31); } else { - gSaveContext.eventInf[3] &= (u8)~2; + CLEAR_EVENTINF(EVENTINF_31); } this->actionFunc = EnGakufu_WaitForSong; - gSaveContext.eventInf[3] &= (u8)~4; + CLEAR_EVENTINF(EVENTINF_32); } void EnGakufu_Destroy(Actor* thisx, PlayState* play) { EnGakufu* this = THIS; if (GAKUFU_GET_TYPE(&this->actor) != GAKUFU_MILK_BAR) { - gSaveContext.eventInf[3] &= (u8)~2; + CLEAR_EVENTINF(EVENTINF_31); } } @@ -231,23 +231,23 @@ void EnGakufu_PlayRewardCutscene(EnGakufu* this, PlayState* play) { /** * Waits for the notes on the wall to be played and updates the corresponding flags - * (gSaveContext.eventInf[3] & 2) is checking if Player is within range of the wall - * (gSaveContext.eventInf[3] & 4) is checking if Player has played the notes of the wall + * EVENTINF_31 is used to track if Player is within range of the wall + * EVENTINF_32 is used to track if Player has played the notes of the wall */ void EnGakufu_WaitForSong(EnGakufu* this, PlayState* play) { - if (gSaveContext.eventInf[3] & 2) { - if (gSaveContext.eventInf[3] & 4) { - gSaveContext.eventInf[3] &= (u8)~2; - gSaveContext.eventInf[3] &= (u8)~4; + if (CHECK_EVENTINF(EVENTINF_31)) { + if (CHECK_EVENTINF(EVENTINF_32)) { + CLEAR_EVENTINF(EVENTINF_31); + CLEAR_EVENTINF(EVENTINF_32); this->actionFunc = EnGakufu_PlayRewardCutscene; EnGakufu_PlayRewardCutscene(this, play); this->actor.draw = NULL; } else if (!EnGakufu_IsPlayerInRange(this, play)) { - gSaveContext.eventInf[3] &= (u8)~2; + CLEAR_EVENTINF(EVENTINF_31); } } else if (EnGakufu_IsPlayerInRange(this, play)) { - gSaveContext.eventInf[3] |= 2; + SET_EVENTINF(EVENTINF_31); } } diff --git a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c index 0652ff4fb..38c484cc6 100644 --- a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c +++ b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c @@ -120,8 +120,8 @@ s32 func_80B0F660(EnGb2* this, PlayState* play) { } void func_80B0F6DC(EnGb2* this) { - if (!(gSaveContext.save.weekEventReg[54] & 0x20)) { - gSaveContext.save.weekEventReg[54] |= 0x20; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_54_20)) { + SET_WEEKEVENTREG(WEEKEVENTREG_54_20); this->unk_26E = 0x14D0; } else { this->unk_26E = 0x14D1; @@ -131,15 +131,15 @@ void func_80B0F6DC(EnGb2* this) { } void func_80B0F728(EnGb2* this, PlayState* play) { - if (gSaveContext.eventInf[4] & 0x10) { + if (CHECK_EVENTINF(EVENTINF_44)) { func_80B0FBF0(this, play); this->unk_26E = 0x14E1; - if (gSaveContext.eventInf[4] & 0x80) { + if (CHECK_EVENTINF(EVENTINF_47)) { this->unk_288 = 10; } else { this->unk_288 = 30; } - } else if (gSaveContext.eventInf[4] & 0x20) { + } else if (CHECK_EVENTINF(EVENTINF_45)) { func_80B0FBF0(this, play); this->unk_26E = 0x14E0; this->unk_26C |= 2; @@ -147,9 +147,9 @@ void func_80B0F728(EnGb2* this, PlayState* play) { this->unk_26E = 0x14DC; } - gSaveContext.eventInf[4] &= (u8)~0x10; - gSaveContext.eventInf[4] &= (u8)~0x20; - gSaveContext.eventInf[4] &= (u8)~0x40; + CLEAR_EVENTINF(EVENTINF_44); + CLEAR_EVENTINF(EVENTINF_45); + CLEAR_EVENTINF(EVENTINF_46); this->actionFunc = func_80B10584; } @@ -159,7 +159,7 @@ u16 func_80B0F7FC(EnGb2* this) { return 0x14D1; case 0x14D1: - if (gSaveContext.eventInf[4] & 0x80) { + if (CHECK_EVENTINF(EVENTINF_47)) { return 0x14E4; } @@ -179,7 +179,7 @@ u16 func_80B0F7FC(EnGb2* this) { return 0x14D3; case 0x14D2: - if (gSaveContext.eventInf[4] & 0x80) { + if (CHECK_EVENTINF(EVENTINF_47)) { return 0x14E5; } return 0x14D4; @@ -208,7 +208,7 @@ u16 func_80B0F8F8(EnGb2* this) { case 0x14DE: this->unk_26C |= 2; - gSaveContext.save.weekEventReg[54] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_54_80); return 0x14DF; case 0x14E1: @@ -226,7 +226,7 @@ u16 func_80B0F97C(EnGb2* this) { return 0x14F7; case 0x14F7: - gSaveContext.save.weekEventReg[76] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_76_80); this->unk_26C |= 2; return 0x14F8; @@ -259,7 +259,7 @@ s32 func_80B0FA48(EnGb2* this, PlayState* play) { return false; case PLAYER_MASK_CAPTAIN: - if (!(gSaveContext.save.weekEventReg[80] & 0x40)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_80_40)) { this->unk_26E = 0x14EB; return false; } @@ -267,7 +267,7 @@ s32 func_80B0FA48(EnGb2* this, PlayState* play) { return true; } - if (!(gSaveContext.save.weekEventReg[80] & 0x20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_80_20)) { this->unk_26E = 0x14EF; return false; } else { @@ -370,9 +370,9 @@ void func_80B0FE7C(PlayState* play) { } void func_80B0FEBC(EnGb2* this, PlayState* play) { - if ((play->msgCtx.ocarinaMode == OCARINA_SONG_ELEGY) && (play->msgCtx.lastPlayedSong == OCARINA_SONG_HEALING)) { + if ((play->msgCtx.ocarinaMode == 3) && (play->msgCtx.lastPlayedSong == OCARINA_SONG_HEALING)) { play->msgCtx.ocarinaMode = 4; - gSaveContext.eventInf[4] |= 0x80; + SET_EVENTINF(EVENTINF_47); this->unk_26E = 0x14D1; this->unk_288 = 10; } @@ -395,7 +395,7 @@ void func_80B0FFA8(EnGb2* this, PlayState* play) { play->msgCtx.stateTimer = 4; this->unk_26E = 0x14D1; this->unk_288 = 30; - gSaveContext.eventInf[4] &= (u8)~0x80; + CLEAR_EVENTINF(EVENTINF_47); this->unk_26C &= ~2; this->actionFunc = func_80B0FEBC; } else { @@ -433,7 +433,7 @@ void func_80B0FFA8(EnGb2* this, PlayState* play) { Rupees_ChangeBy(-this->unk_288); play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; - func_800B7298(play, NULL, 7); + func_800B7298(play, NULL, PLAYER_CSMODE_7); this->actionFunc = func_80B11344; break; @@ -489,7 +489,7 @@ void func_80B10344(EnGb2* this, PlayState* play) { this->unk_26C &= ~0x200; gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; func_800FE498(); - gSaveContext.eventInf[4] |= 0x40; + SET_EVENTINF(EVENTINF_46); func_80B0FE7C(play); } else if (this->unk_280 == 2) { if (this->unk_26C & 0x400) { @@ -507,8 +507,8 @@ void func_80B10344(EnGb2* this, PlayState* play) { if (gSaveContext.save.playerData.health < 49) { gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; - gSaveContext.eventInf[4] |= 0x40; - gSaveContext.eventInf[4] |= 0x20; + SET_EVENTINF(EVENTINF_46); + SET_EVENTINF(EVENTINF_45); if ((this->unk_268 != NULL) && (this->unk_268->update == NULL)) { this->unk_268 = NULL; @@ -521,8 +521,8 @@ void func_80B10344(EnGb2* this, PlayState* play) { func_80B0FE7C(play); } else if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1] == SECONDS_TO_TIMER(0)) { gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; - gSaveContext.eventInf[4] |= 0x40; - gSaveContext.eventInf[4] |= 0x10; + SET_EVENTINF(EVENTINF_46); + SET_EVENTINF(EVENTINF_44); if ((this->unk_268 != NULL) && (this->unk_268->update == NULL)) { this->unk_268 = NULL; @@ -564,7 +564,7 @@ void func_80B10634(EnGb2* this, PlayState* play) { } else { this->unk_26E = 0x14D1; this->unk_288 = 30; - gSaveContext.eventInf[4] &= (u8)~0x80; + CLEAR_EVENTINF(EVENTINF_47); this->actionFunc = func_80B0FEBC; } } else { @@ -585,7 +585,7 @@ void func_80B10634(EnGb2* this, PlayState* play) { Rupees_ChangeBy(-this->unk_288); play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; - func_800B7298(play, NULL, 7); + func_800B7298(play, NULL, PLAYER_CSMODE_7); this->actionFunc = func_80B11344; } break; @@ -617,7 +617,7 @@ void func_80B10868(EnGb2* this, PlayState* play) { void func_80B10924(EnGb2* this, PlayState* play) { s32 getItemId; - if (gSaveContext.save.weekEventReg[54] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_54_40)) { getItemId = GI_RUPEE_PURPLE; } else { getItemId = GI_HEART_PIECE; @@ -626,7 +626,7 @@ void func_80B10924(EnGb2* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actor.parent = NULL; if (getItemId == GI_HEART_PIECE) { - gSaveContext.save.weekEventReg[54] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_54_40); } else { Rupees_ChangeBy(50); } @@ -707,9 +707,9 @@ void func_80B10B5C(EnGb2* this, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_10000; Message_StartTextbox(play, this->unk_26E, &this->actor); if (this->unk_26E == 0x14EB) { - gSaveContext.save.weekEventReg[80] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_80_40); } else if (this->unk_26E == 0x14EF) { - gSaveContext.save.weekEventReg[80] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_80_20); } this->unk_26C &= ~0x20; this->unk_290 = 0; @@ -885,9 +885,9 @@ void EnGb2_Init(Actor* thisx, PlayState* play) { switch (ENGB2_GET_7(&this->actor)) { case ENGB2_7_0: - if (gSaveContext.save.weekEventReg[54] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_54_80)) { Actor_Kill(&this->actor); - } else if (gSaveContext.save.weekEventReg[52] & 0x20) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_20)) { Actor_Kill(&this->actor); } @@ -901,7 +901,7 @@ void EnGb2_Init(Actor* thisx, PlayState* play) { this->actor.flags |= ACTOR_FLAG_10; this->actor.flags |= ACTOR_FLAG_2000000; - if (gSaveContext.eventInf[4] & 0x40) { + if (CHECK_EVENTINF(EVENTINF_46)) { func_80B0F728(this, play); } else { func_80B0FBF0(this, play); @@ -910,7 +910,7 @@ void EnGb2_Init(Actor* thisx, PlayState* play) { break; case ENGB2_7_1: - if ((play->curSpawn == 1) || (gSaveContext.save.weekEventReg[80] & 0x80)) { + if ((play->curSpawn == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_80_80)) { Actor_Kill(&this->actor); return; } @@ -940,7 +940,7 @@ void EnGb2_Init(Actor* thisx, PlayState* play) { return; } - if (gSaveContext.save.weekEventReg[76] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_76_80)) { this->actor.draw = NULL; this->unk_26C |= 0x100; this->actor.flags &= ~ACTOR_FLAG_1; diff --git a/src/overlays/actors/ovl_En_Geg/z_en_geg.c b/src/overlays/actors/ovl_En_Geg/z_en_geg.c index f88aab950..1da6c1a61 100644 --- a/src/overlays/actors/ovl_En_Geg/z_en_geg.c +++ b/src/overlays/actors/ovl_En_Geg/z_en_geg.c @@ -355,7 +355,7 @@ s32 func_80BB1D64(EnGeg* this, PlayState* play) { sp40 = player->actor.world.pos; } else { sp40 = player->actor.world.pos; - sp40.y = player->bodyPartsPos[7].y + 3.0f; + sp40.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; } sp34 = this->actor.world.pos; @@ -453,7 +453,7 @@ void func_80BB221C(EnGeg* this, PlayState* play) { } } else { this->unk_230 &= ~4; - if (gSaveContext.save.weekEventReg[35] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_35_40)) { if (Actor_ProcessTalkRequest(&this->actor, &play->state) && (this->unk_230 & 8)) { this->unk_496 = 0xD62; Message_StartTextbox(play, this->unk_496, &this->actor); @@ -464,7 +464,7 @@ void func_80BB221C(EnGeg* this, PlayState* play) { this->unk_230 |= 8; } } else if (Actor_ProcessTalkRequest(&this->actor, &play->state) && (this->unk_230 & 8)) { - gSaveContext.save.weekEventReg[35] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_35_40); this->unk_496 = 0xD5E; this->unk_49A = this->unk_49C[0]; Message_StartTextbox(play, this->unk_496, &this->actor); @@ -656,7 +656,7 @@ void func_80BB2B1C(EnGeg* this, PlayState* play) { if (ActorCutscene_GetCurrentIndex() != this->unk_49C[4]) { if (ActorCutscene_GetCanPlayNext(this->unk_498)) { - gSaveContext.save.weekEventReg[37] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_37_08); if (this->actor.child != NULL) { Actor_Kill(this->actor.child); } @@ -798,7 +798,7 @@ void func_80BB31B8(EnGeg* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actor.parent = NULL; - gSaveContext.save.weekEventReg[61] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_61_01); if (getItemId == GI_MASK_DON_GERO) { this->unk_230 |= 0x40; } @@ -861,7 +861,7 @@ void EnGeg_Init(Actor* thisx, PlayState* play) { s32 pad2; s32 sp34[] = { 0x3E, 0xF64 }; - if (gSaveContext.save.weekEventReg[61] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_61_01)) { Actor_Kill(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Gg/z_en_gg.c b/src/overlays/actors/ovl_En_Gg/z_en_gg.c index 8b2f8d091..a6c2a31ec 100644 --- a/src/overlays/actors/ovl_En_Gg/z_en_gg.c +++ b/src/overlays/actors/ovl_En_Gg/z_en_gg.c @@ -123,13 +123,13 @@ s32 func_80B34FB4(EnGg* this, PlayState* play) { s16 pitch; sp40 = player->actor.world.pos; - sp40.y = player->bodyPartsPos[7].y + 3.0f; + sp40.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; sp34 = this->actor.world.pos; sp34.y += 70.0f; pitch = Math_Vec3f_Pitch(&sp34, &sp40); if ((this->actor.xzDistToPlayer < 250.0f) && (this->actor.xzDistToPlayer > 50.0f) && - (CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_80) || (gSaveContext.save.weekEventReg[19] & 0x80))) { + (CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_80) || CHECK_WEEKEVENTREG(WEEKEVENTREG_19_80))) { Math_SmoothStepToS(&this->unk_2E8, pitch, 4, 0x2AA8, 1); } else { Math_SmoothStepToS(&this->unk_2E8, 0, 4, 0x2AA8, 1); @@ -212,7 +212,7 @@ void func_80B352A4(EnGg* this, PlayState* play) { Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 0); break; } - gSaveContext.save.weekEventReg[19] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_19_80); this->actionFunc = func_80B3556C; } else if ((this->unk_2E6 == 0) && ((this->actor.textId == 0xCED) || (this->actor.textId == 0xCEE))) { if (sp26 < (lastFrame - 1)) { @@ -225,7 +225,7 @@ void func_80B352A4(EnGg* this, PlayState* play) { } void func_80B35450(EnGg* this, PlayState* play) { - if ((gSaveContext.save.weekEventReg[91] & 0x10) && (play->csCtx.state == 0)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_91_10) && (play->csCtx.state == 0)) { func_80B359DC(this, play); } @@ -236,7 +236,7 @@ void func_80B35450(EnGg* this, PlayState* play) { this->unk_308 = 1; this->actionFunc = func_80B352A4; } else if ((this->actor.xzDistToPlayer < 200.0f) && (this->actor.xzDistToPlayer > 50.0f)) { - if (gSaveContext.save.weekEventReg[19] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_19_80)) { func_800B863C(&this->actor, play); this->actor.textId = 0xCEE; } else if (CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_80)) { @@ -400,8 +400,8 @@ void func_80B359DC(EnGg* this, PlayState* play) { if ((player->transformation == PLAYER_FORM_HUMAN) && (play->msgCtx.ocarinaMode == 3) && (play->msgCtx.lastPlayedSong == OCARINA_SONG_HEALING)) { - if (!(gSaveContext.save.weekEventReg[19] & 0x80)) { - gSaveContext.save.weekEventReg[19] |= 0x80; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_19_80)) { + SET_WEEKEVENTREG(WEEKEVENTREG_19_80); } this->unk_307 = true; } @@ -530,7 +530,7 @@ void func_80B35C84(EnGgStruct* ptr, PlayState* play) { Matrix_Mult(&play->billboardMtxF, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gOwlStatueWhiteFlashDL); + gSPDisplayList(POLY_XLU_DISP++, gEffFlash1DL); } Matrix_Pop(); @@ -554,7 +554,7 @@ void func_80B35C84(EnGgStruct* ptr, PlayState* play) { Matrix_Mult(&play->billboardMtxF, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gOwlStatueWhiteFlashDL); + gSPDisplayList(POLY_XLU_DISP++, gEffFlash1DL); } Matrix_Pop(); @@ -607,7 +607,7 @@ void func_80B3610C(EnGgStruct* ptr, PlayState* play) { Matrix_Mult(&play->billboardMtxF, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gOwlStatueWhiteFlashDL); + gSPDisplayList(POLY_XLU_DISP++, gEffFlash1DL); } Matrix_Pop(); @@ -660,9 +660,9 @@ void EnGg_Init(Actor* thisx, PlayState* play) { Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit); - gSaveContext.save.weekEventReg[20] &= (u8)~4; - gSaveContext.save.weekEventReg[20] &= (u8)~8; - gSaveContext.save.weekEventReg[20] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_04); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_08); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_10); this->actor.flags &= ~ACTOR_FLAG_80; this->unk_310 = this->actor.home.pos.y; this->unk_2DC = this->actor.cutscene; @@ -690,7 +690,7 @@ void EnGg_Update(Actor* thisx, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_1; } - if (gSaveContext.save.weekEventReg[19] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_19_80)) { if (play->csCtx.state == 0) { this->actor.flags |= ACTOR_FLAG_1; } else { @@ -708,10 +708,10 @@ void EnGg_Update(Actor* thisx, PlayState* play) { func_80B35968(this, play); } - if (!(gSaveContext.save.weekEventReg[91] & 0x10) && - ((gSaveContext.save.weekEventReg[19] & 0x80) || CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_80) || + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_91_10) && + (CHECK_WEEKEVENTREG(WEEKEVENTREG_19_80) || CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_80) || (this->unk_308 == 1))) { - gSaveContext.save.weekEventReg[91] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_91_10); } this->actionFunc(this, play); @@ -789,7 +789,7 @@ void EnGg_Draw(Actor* thisx, PlayState* play) { this->unk_344.unk_38(&this->unk_344, play); } - if (gSaveContext.save.weekEventReg[19] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_19_80)) { func_8012C28C(play->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80B36DFC[this->unk_2E2])); diff --git a/src/overlays/actors/ovl_En_Gg2/z_en_gg2.c b/src/overlays/actors/ovl_En_Gg2/z_en_gg2.c index acec19c76..6da3b1378 100644 --- a/src/overlays/actors/ovl_En_Gg2/z_en_gg2.c +++ b/src/overlays/actors/ovl_En_Gg2/z_en_gg2.c @@ -81,7 +81,7 @@ s32 func_80B3AC94(EnGg2* this, PlayState* play) { s16 pitch; sp40 = player->actor.world.pos; - sp40.y = player->bodyPartsPos[7].y + 3.0f; + sp40.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; sp34 = this->actor.world.pos; sp34.y += 70.0f; @@ -214,17 +214,17 @@ void func_80B3B294(EnGg2* this, PlayState* play) { if (this->unk_2F1 == 0) { if (play->sceneId == SCENE_11GORONNOSATO) { - gSaveContext.save.weekEventReg[20] |= 4; - gSaveContext.save.weekEventReg[20] &= (u8)~8; - gSaveContext.save.weekEventReg[20] &= (u8)~0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_20_04); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_08); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_10); } else if (play->sceneId == SCENE_17SETUGEN) { - gSaveContext.save.weekEventReg[20] &= (u8)~4; - gSaveContext.save.weekEventReg[20] |= 8; - gSaveContext.save.weekEventReg[20] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_04); + SET_WEEKEVENTREG(WEEKEVENTREG_20_08); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_10); } else if (play->sceneId == SCENE_10YUKIYAMANOMURA) { - gSaveContext.save.weekEventReg[20] &= (u8)~4; - gSaveContext.save.weekEventReg[20] &= (u8)~8; - gSaveContext.save.weekEventReg[20] |= 0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_04); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_08); + SET_WEEKEVENTREG(WEEKEVENTREG_20_10); } if (this->unk_1D8 != NULL) { @@ -240,17 +240,17 @@ void func_80B3B294(EnGg2* this, PlayState* play) { } else { this->unk_2F1 = 1; if (play->sceneId == SCENE_11GORONNOSATO) { - gSaveContext.save.weekEventReg[20] |= 4; - gSaveContext.save.weekEventReg[20] &= (u8)~8; - gSaveContext.save.weekEventReg[20] &= (u8)~0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_20_04); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_08); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_10); } else if (play->sceneId == SCENE_17SETUGEN) { - gSaveContext.save.weekEventReg[20] &= (u8)~4; - gSaveContext.save.weekEventReg[20] |= 8; - gSaveContext.save.weekEventReg[20] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_04); + SET_WEEKEVENTREG(WEEKEVENTREG_20_08); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_10); } else if (play->sceneId == SCENE_10YUKIYAMANOMURA) { - gSaveContext.save.weekEventReg[20] &= (u8)~4; - gSaveContext.save.weekEventReg[20] &= (u8)~8; - gSaveContext.save.weekEventReg[20] |= 0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_04); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_08); + SET_WEEKEVENTREG(WEEKEVENTREG_20_10); } } } @@ -360,7 +360,7 @@ void EnGg2_Init(Actor* thisx, PlayState* play2) { return; } - if (gSaveContext.save.weekEventReg[91] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_91_10)) { Actor_Kill(&this->actor); return; } @@ -381,16 +381,16 @@ void EnGg2_Init(Actor* thisx, PlayState* play2) { this->unk_2EA = 0; if (play->sceneId == SCENE_11GORONNOSATO) { - gSaveContext.save.weekEventReg[20] &= (u8)~4; - gSaveContext.save.weekEventReg[20] &= (u8)~8; - gSaveContext.save.weekEventReg[20] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_04); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_08); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_10); this->unk_2EE = 0; Actor_ChangeAnimationByInfo(&this->skelAnime, D_80B3BF00, 0); this->actionFunc = func_80B3AFB0; } else if (play->sceneId == SCENE_17SETUGEN) { - if ((gSaveContext.save.weekEventReg[20] & 4) && !(gSaveContext.save.weekEventReg[20] & 8) && - !(gSaveContext.save.weekEventReg[20] & 0x10)) { - gSaveContext.save.weekEventReg[20] &= (u8)~4; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_04) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_20_08) && + !CHECK_WEEKEVENTREG(WEEKEVENTREG_20_10)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_04); this->unk_2EE = 8; Actor_ChangeAnimationByInfo(&this->skelAnime, D_80B3BF00, 0); this->actionFunc = func_80B3B05C; @@ -398,9 +398,9 @@ void EnGg2_Init(Actor* thisx, PlayState* play2) { Actor_Kill(&this->actor); } } else if (play->sceneId == SCENE_10YUKIYAMANOMURA) { - if (!(gSaveContext.save.weekEventReg[20] & 4) && (gSaveContext.save.weekEventReg[20] & 8) && - !(gSaveContext.save.weekEventReg[20] & 0x10)) { - gSaveContext.save.weekEventReg[20] &= (u8)~8; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_20_04) && CHECK_WEEKEVENTREG(WEEKEVENTREG_20_08) && + !CHECK_WEEKEVENTREG(WEEKEVENTREG_20_10)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_08); this->unk_2EE = 8; Actor_ChangeAnimationByInfo(&this->skelAnime, D_80B3BF00, 0); this->actionFunc = func_80B3B05C; @@ -408,9 +408,9 @@ void EnGg2_Init(Actor* thisx, PlayState* play2) { Actor_Kill(&this->actor); } } else { - gSaveContext.save.weekEventReg[20] &= (u8)~4; - gSaveContext.save.weekEventReg[20] &= (u8)~8; - gSaveContext.save.weekEventReg[20] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_04); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_08); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_20_10); Actor_Kill(&this->actor); } } diff --git a/src/overlays/actors/ovl_En_Giant/z_en_giant.c b/src/overlays/actors/ovl_En_Giant/z_en_giant.c index d44306b09..dbd180359 100644 --- a/src/overlays/actors/ovl_En_Giant/z_en_giant.c +++ b/src/overlays/actors/ovl_En_Giant/z_en_giant.c @@ -183,7 +183,7 @@ void EnGiant_Init(Actor* thisx, PlayState* play) { } if (GIANT_TYPE_IS_CLOCK_TOWER_SUCCESS(type)) { - if (!(gSaveContext.save.weekEventReg[25] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_25_02)) { Actor_Kill(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c index fa555bc3a..88d55dc14 100644 --- a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c +++ b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c @@ -118,7 +118,7 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, PlayState* play) { switch (this->curTextId) { case 0x44C: // "Hey there, little guy! Won't you deposit some Rupees? (first dialogue) Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_SITTING); - if (gSaveContext.save.weekEventReg[10] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_10_08)) { Message_StartTextbox(play, 0x44E, &this->actor); this->curTextId = 0x44E; //" ...So, what'll it be? Deposit Rupees Don't deposit Rupees" } else { @@ -165,18 +165,18 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, PlayState* play) { break; case 0x45A: // "All right, little guy, now I've got a total of [rupees] from you!" if (((gSaveContext.save.bankRupees & 0xFFFF) >= 200) && (this->previousBankValue < 200) && - !(gSaveContext.save.weekEventReg[59] & 0x40)) { - gSaveContext.save.weekEventReg[59] |= 0x40; + !CHECK_WEEKEVENTREG(WEEKEVENTREG_59_40)) { + SET_WEEKEVENTREG(WEEKEVENTREG_59_40); Message_StartTextbox(play, 0x45B, &this->actor); this->curTextId = 0x45B; // "What's this? You've already saved up 200 Rupees!?! } else if (((gSaveContext.save.bankRupees & 0xFFFF) >= 1000) && ((this->previousBankValue) < 1000) && - !(gSaveContext.save.weekEventReg[59] & 0x80)) { - gSaveContext.save.weekEventReg[59] |= 0x80; + !CHECK_WEEKEVENTREG(WEEKEVENTREG_59_80)) { + SET_WEEKEVENTREG(WEEKEVENTREG_59_80); Message_StartTextbox(play, 0x45C, &this->actor); this->curTextId = 0x45C; // "What's this? You've already saved up 1000 Rupees!?! } else if ((gSaveContext.save.bankRupees & 0xFFFF) >= 5000) { - if ((this->previousBankValue < 5000) && !(gSaveContext.save.weekEventReg[60] & 1)) { - gSaveContext.save.weekEventReg[60] |= 1; + if ((this->previousBankValue < 5000) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_60_01)) { + SET_WEEKEVENTREG(WEEKEVENTREG_60_01); Message_StartTextbox(play, 0x45D, &this->actor); this->curTextId = 0x45D; // "What's this? You've already saved up 5000 Rupees?! } else if (this->previousBankValue < (s16)(gSaveContext.save.bankRupees & 0xFFFF)) { @@ -524,14 +524,14 @@ void EnGinkoMan_BankAward(EnGinkoMan* this, PlayState* play) { this->actor.parent = NULL; EnGinkoMan_SetupBankAward2(this); } else if (this->curTextId == 0x45B) { // "Whats this, you already saved up 200?" - if (!(gSaveContext.save.weekEventReg[10] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_10_08)) { Actor_PickUp(&this->actor, play, GI_WALLET_ADULT + CUR_UPG_VALUE(UPG_WALLET), 500.0f, 100.0f); } else { Actor_PickUp(&this->actor, play, GI_RUPEE_BLUE, 500.0f, 100.0f); } } else if (this->curTextId == 0x45C) { // "Whats this, you already saved up 5000?" Actor_PickUp(&this->actor, play, GI_RUPEE_BLUE, 500.0f, 100.0f); - } else if (!(gSaveContext.save.weekEventReg[59] & 8)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_59_08)) { Actor_PickUp(&this->actor, play, GI_HEART_PIECE, 500.0f, 100.0f); } else { Actor_PickUp(&this->actor, play, GI_RUPEE_BLUE, 500.0f, 100.0f); @@ -546,10 +546,10 @@ void EnGinkoMan_SetupBankAward2(EnGinkoMan* this) { // separate function to handle bank rewards... called while the player is receiving the award void EnGinkoMan_BankAward2(EnGinkoMan* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - if (!(gSaveContext.save.weekEventReg[10] & 8) && (this->curTextId == 0x45B)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_10_08) && (this->curTextId == 0x45B)) { // "What's this? You've already saved up 200 Rupees!?! Well, little guy, here's your special gift. Take // it!" - gSaveContext.save.weekEventReg[10] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_10_08); Message_StartTextbox(play, 0x47A, &this->actor); this->curTextId = 0x47A; // Message after receiving reward for depositing 200 rupees. } else { @@ -561,13 +561,13 @@ void EnGinkoMan_BankAward2(EnGinkoMan* this, PlayState* play) { EnGinkoMan_SetupDialogue(this); } else if (this->curTextId == 0x45D) { // saved up 5000 rupees for HP if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { - if (!(gSaveContext.save.weekEventReg[59] & 8)) { - gSaveContext.save.weekEventReg[59] |= 8; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_59_08)) { + SET_WEEKEVENTREG(WEEKEVENTREG_59_08); } EnGinkoMan_SetupIdle(this); } } else { - func_800B85E0(&this->actor, play, 500.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 500.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c index 0c6ad8a41..65df46284 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -205,13 +205,13 @@ s32 EnGirlA_CanBuyPotionGreen(PlayState* play, EnGirlA* this) { } s32 EnGirlA_CanBuyPotionBlue(PlayState* play, EnGirlA* this) { - if (!(gSaveContext.save.weekEventReg[53] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_53_08)) { return CANBUY_RESULT_CANNOT_GET_NOW; } if (!Inventory_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } - if (!(gSaveContext.save.weekEventReg[53] & 0x10)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_53_10)) { return CANBUY_RESULT_SUCCESS_2; } if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { diff --git a/src/overlays/actors/ovl_En_Gk/z_en_gk.c b/src/overlays/actors/ovl_En_Gk/z_en_gk.c index 627c8d369..6f2f3c09c 100644 --- a/src/overlays/actors/ovl_En_Gk/z_en_gk.c +++ b/src/overlays/actors/ovl_En_Gk/z_en_gk.c @@ -120,7 +120,7 @@ u16 func_80B50410(EnGk* this, PlayState* play) { if (play->sceneId == SCENE_17SETUGEN2) { if (player->transformation == PLAYER_FORM_GORON) { - if (!(gSaveContext.save.weekEventReg[40] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_40_80)) { switch (this->unk_31C) { case 0xE7A: return 0xE7B; @@ -133,7 +133,7 @@ u16 func_80B50410(EnGk* this, PlayState* play) { case 0xE7E: return 0xE7F; case 0xE7F: - gSaveContext.save.weekEventReg[40] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_40_80); this->unk_1E4 |= 1; return 0xE80; default: @@ -143,7 +143,7 @@ u16 func_80B50410(EnGk* this, PlayState* play) { this->unk_1E4 |= 1; return 0xE81; } - } else if (!(gSaveContext.save.weekEventReg[41] & 1)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_41_01)) { switch (this->unk_31C) { case 0xE82: return 0xE83; @@ -154,7 +154,7 @@ u16 func_80B50410(EnGk* this, PlayState* play) { case 0xE7E: return 0xE7F; case 0xE7F: - gSaveContext.save.weekEventReg[41] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_41_01); this->unk_1E4 |= 1; return 0xE80; default: @@ -166,12 +166,12 @@ u16 func_80B50410(EnGk* this, PlayState* play) { } } else if (play->sceneId == SCENE_GORONRACE) { if (player->transformation == PLAYER_FORM_GORON) { - if (!(gSaveContext.save.weekEventReg[41] & 4)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_41_04)) { if (this->unk_31C == 0xE88) { - if (!(gSaveContext.save.weekEventReg[41] & 8) || Inventory_HasEmptyBottle()) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_41_08) || Inventory_HasEmptyBottle()) { return 0xE89; } - gSaveContext.save.weekEventReg[41] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_41_04); this->unk_1E4 |= 1; return 0xE94; } @@ -179,10 +179,10 @@ u16 func_80B50410(EnGk* this, PlayState* play) { } if ((this->unk_31C == 0xE8D) || (this->unk_31C == 0xE98)) { - if (!(gSaveContext.save.weekEventReg[41] & 8) || Inventory_HasEmptyBottle()) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_41_08) || Inventory_HasEmptyBottle()) { return 0xE89; } - gSaveContext.save.weekEventReg[41] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_41_04); this->unk_1E4 |= 1; return 0xE94; } @@ -193,12 +193,12 @@ u16 func_80B50410(EnGk* this, PlayState* play) { return 0xE98; } - if (!(gSaveContext.save.weekEventReg[41] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_41_02)) { switch (this->unk_31C) { case 0xE85: return 0xE86; case 0xE86: - gSaveContext.save.weekEventReg[41] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_41_02); this->unk_1E4 |= 1; return 0xE87; default: @@ -216,7 +216,7 @@ u16 func_80B50410(EnGk* this, PlayState* play) { u16 func_80B50710(EnGk* this) { switch (this->unk_31C) { case 0xE8E: - gSaveContext.save.weekEventReg[41] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_41_04); this->unk_1E4 &= ~0x10; this->unk_1E4 |= 1; return 0xE8F; @@ -225,7 +225,7 @@ u16 func_80B50710(EnGk* this) { return 0xE8B; case 0xE8B: - gSaveContext.save.weekEventReg[41] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_41_04); this->unk_1E4 |= 0x10; this->unk_1E4 |= 1; return 0xE8C; @@ -442,7 +442,7 @@ s32 func_80B5100C(EnGk* this, PlayState* play) { this->unk_324 = CLAMP(this->unk_324, -0x1C70, 0x1C70); sp40 = player->actor.world.pos; - sp40.y = player->bodyPartsPos[7].y + 3.0f; + sp40.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; sp34 = this->actor.world.pos; sp34.y += 70.0f; @@ -630,7 +630,7 @@ void func_80B51760(EnGk* this, PlayState* play) { } } else { if (Flags_GetSwitch(play, ENGK_GET_3F00(&this->actor))) { - gSaveContext.save.weekEventReg[40] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_40_40); this->actionFunc = func_80B51D9C; return; } @@ -829,7 +829,7 @@ void func_80B51EA4(EnGk* this, PlayState* play) { } void func_80B51FD0(EnGk* this, PlayState* play) { - if (!(gSaveContext.save.weekEventReg[22] & 4)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) { if (this->unk_1E4 & 2) { func_801A4748(&this->actor.projectedPos, NA_SE_EN_GOLON_KID_CRY - SFX_FLAG); } else { @@ -847,7 +847,7 @@ void func_80B5202C(EnGk* this, PlayState* play) { if (!func_80B50854(this, play)) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - gSaveContext.save.weekEventReg[24] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_24_80); this->actionFunc = func_80B51698; } else if ((this->actor.xzDistToPlayer < 100.0f) || this->actor.isTargeted) { func_800B863C(&this->actor, play); @@ -895,7 +895,7 @@ void func_80B5227C(EnGk* this, PlayState* play) { func_800B14D4(play, 20.0f, &this->actor.home.pos); this->unk_350 = 60; if (!(this->unk_1E4 & 0x80)) { - gSaveContext.save.weekEventReg[22] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_22_04); } Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_GOLON_SIT_IMT); this->unk_350 = 0x4000; @@ -906,7 +906,7 @@ void func_80B5227C(EnGk* this, PlayState* play) { void func_80B52340(EnGk* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->unk_1E4 |= 4; - if (gSaveContext.eventInf[1] & 2) { + if (CHECK_EVENTINF(EVENTINF_11)) { this->unk_31C = 0xE90; this->actionFunc = func_80B52430; } else { @@ -955,7 +955,7 @@ void func_80B52430(EnGk* this, PlayState* play) { void func_80B5253C(EnGk* this, PlayState* play) { s32 sp24; - if (gSaveContext.save.weekEventReg[41] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_41_08)) { sp24 = 0x93; } else { sp24 = 0x6A; @@ -964,7 +964,7 @@ void func_80B5253C(EnGk* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actor.parent = NULL; if (sp24 == 0x6A) { - gSaveContext.save.weekEventReg[41] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_41_08); } this->actionFunc = func_80B525E0; } else { @@ -985,7 +985,7 @@ void func_80B525E0(EnGk* this, PlayState* play) { void func_80B52654(EnGk* this, PlayState* play) { this->unk_350 += 0x400; if ((this->unk_1E4 & 0x80) && (play->csCtx.frames == 250)) { - gSaveContext.save.weekEventReg[22] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_22_04); } this->unk_354 = Math_SinS(this->unk_350) * 0.006f * 0.06f; @@ -1027,7 +1027,7 @@ void EnGk_Init(Actor* thisx, PlayState* play) { this->actionFunc = func_80B51760; } } else if (play->sceneId == SCENE_GORONRACE) { - if (gSaveContext.save.weekEventReg[33] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80)) { if (gSaveContext.save.entrance == ENTRANCE(GORON_RACETRACK, 1)) { this->actionFunc = func_80B51760; } else if (gSaveContext.save.entrance == ENTRANCE(GORON_RACETRACK, 2)) { @@ -1042,7 +1042,7 @@ void EnGk_Init(Actor* thisx, PlayState* play) { Actor_Kill(&this->actor); } } else if (ENGK_GET_F(&this->actor) == ENGK_F_2) { - if (!(gSaveContext.save.weekEventReg[22] & 4)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) { this->actionFunc = func_80B51FD0; this->actor.draw = NULL; this->actor.flags |= ACTOR_FLAG_10; @@ -1050,7 +1050,7 @@ void EnGk_Init(Actor* thisx, PlayState* play) { } else { Actor_Kill(&this->actor); } - } else if (!(gSaveContext.save.weekEventReg[22] & 4)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) { this->unk_2E4 = 0; this->unk_318 = this->actor.cutscene; this->actor.flags |= ACTOR_FLAG_10; @@ -1074,7 +1074,7 @@ void EnGk_Update(Actor* thisx, PlayState* play) { this->actionFunc(this, play); if ((ENGK_GET_F(&this->actor) == ENGK_F_1) || - ((ENGK_GET_F(&this->actor) == ENGK_F_0) && !(gSaveContext.save.weekEventReg[22] & 4))) { + ((ENGK_GET_F(&this->actor) == ENGK_F_0) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04))) { func_80B507A0(this, play); SkelAnime_Update(&this->skelAnime); Actor_TrackPlayer(play, &this->actor, &this->unk_1D8, &this->unk_1DE, this->actor.focus.pos); @@ -1233,7 +1233,7 @@ void EnGk_Draw(Actor* thisx, PlayState* play) { func_8012C28C(play->state.gfxCtx); - if ((ENGK_GET_F(&this->actor) == ENGK_F_0) && (gSaveContext.save.weekEventReg[22] & 4)) { + if ((ENGK_GET_F(&this->actor) == ENGK_F_0) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) { Matrix_RotateXS(-0x4000, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); diff --git a/src/overlays/actors/ovl_En_Gm/z_en_gm.c b/src/overlays/actors/ovl_En_Gm/z_en_gm.c index 711e163b3..232e3ae79 100644 --- a/src/overlays/actors/ovl_En_Gm/z_en_gm.c +++ b/src/overlays/actors/ovl_En_Gm/z_en_gm.c @@ -80,7 +80,7 @@ static u8 D_80951820[] = { /* 0x134 */ SCHEDULE_CMD_RET_TIME(12, 55, 13, 0, 20), /* 0x13A */ SCHEDULE_CMD_RET_NONE(), /* 0x13B */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(2, 0x1EB - 0x140), - /* 0x140 */ SCHEDULE_CMD_CHECK_FLAG_L(0x32, 0x01, 0x1CD - 0x145), + /* 0x140 */ SCHEDULE_CMD_CHECK_FLAG_L(WEEKEVENTREG_50_01, 0x1CD - 0x145), /* 0x145 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x17A - 0x149), /* 0x149 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 18, 0, 0x174 - 0x14F), /* 0x14F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 21, 0, 0x16E - 0x155), @@ -463,7 +463,7 @@ s32 func_8094E52C(EnGm* this, PlayState* play) { } case 2: - if (!(gSaveContext.save.weekEventReg[86] & 0x40) && (this->unk_3E0 == 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_86_40) && (this->unk_3E0 == 2)) { ActorCutscene_Stop(sp2A); } else { Camera_SetTargetActor(Play_GetCamera(play, ActorCutscene_GetCurrentSubCamId(sp2A)), &this->actor); @@ -632,8 +632,8 @@ s32 func_8094EB1C(EnGm* this, PlayState* play) { switch (this->unk_3E0) { case 0: - if ((gSaveContext.save.weekEventReg[50] & 1) || (gSaveContext.save.weekEventReg[51] & 0x80) || - (gSaveContext.save.weekEventReg[75] & 2)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_50_01) || CHECK_WEEKEVENTREG(WEEKEVENTREG_51_80) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_75_02)) { ret = true; break; } @@ -739,14 +739,14 @@ s32 func_8094EE84(EnGm* this, PlayState* play) { this->actor.child = this->unk_268; this->unk_264 = func_8094EDBC(this, play); - if ((this->unk_258 == 5) && !(gSaveContext.save.weekEventReg[50] & 1) && - !(gSaveContext.save.weekEventReg[51] & 0x80) && !(gSaveContext.save.weekEventReg[75] & 2)) { + if ((this->unk_258 == 5) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_50_01) && + !CHECK_WEEKEVENTREG(WEEKEVENTREG_51_80) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_75_02)) { this->unk_3A4 |= 0x20; } else if ((this->unk_258 != 1) && (this->unk_258 != 5) && (this->unk_258 != 7)) { this->unk_3A4 |= 0x20; } - if ((this->unk_258 == 3) && (gSaveContext.save.weekEventReg[75] & 1)) { + if ((this->unk_258 == 3) && CHECK_WEEKEVENTREG(WEEKEVENTREG_75_01)) { this->unk_3A4 &= ~0x20; } @@ -860,7 +860,7 @@ void func_8094F3D0(EnGm* this, PlayState* play) { s32 talkState = Message_GetState(&play->msgCtx); s32 textId = play->msgCtx.currentTextId; - if ((&this->actor == player->targetActor) && ((textId < 0xFF) || (textId > 0x200)) && (talkState == TEXT_STATE_3) && + if ((&this->actor == player->talkActor) && ((textId < 0xFF) || (textId > 0x200)) && (talkState == TEXT_STATE_3) && (this->prevTalkState == TEXT_STATE_3)) { if ((play->state.frames % 3) == 0) { if (this->unk_3AC == 120.0f) { @@ -1105,7 +1105,7 @@ s32 func_8094FCC4(EnGm* this, PlayState* play, ScheduleOutput* scheduleOutput) { func_8094E054(this, play, 0); } else { func_8094E054(this, play, 9); - this->skelAnime.moveFlags = 0x10; + this->skelAnime.moveFlags = ANIM_FLAG_NOMOVE; } this->unk_3A4 |= 0x100; this->unk_3A4 |= 0x200; @@ -1137,7 +1137,7 @@ s32 func_8094FE10(EnGm* this, PlayState* play, ScheduleOutput* scheduleOutput) { func_8094E054(this, play, 11); SubS_UpdateFlags(&this->unk_3A4, 3, 7); this->unk_268 = al; - if (!(gSaveContext.save.weekEventReg[86] & 0x20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_86_20)) { this->unk_3C8 = 2; this->unk_3CA = 2; this->unk_3CC = 8; @@ -1181,7 +1181,7 @@ s32 func_8094FF04(EnGm* this, PlayState* play, ScheduleOutput* scheduleOutput) { } else { Math_Vec3f_Copy(&this->actor.world.pos, &sp30); func_8094E054(this, play, 9); - this->skelAnime.moveFlags = 0x10; + this->skelAnime.moveFlags = ANIM_FLAG_NOMOVE; } this->unk_400 = 0; this->unk_3A4 |= 0x100; @@ -1352,7 +1352,7 @@ s32 func_80950490(EnGm* this, PlayState* play) { }; s32 pad; - if ((gSaveContext.save.weekEventReg[50] & 1) || (gSaveContext.save.weekEventReg[51] & 0x80)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_50_01) || CHECK_WEEKEVENTREG(WEEKEVENTREG_51_80)) { if (this->unk_400 == 0) { this->unk_3C8 = 1; this->unk_3CA = 1; @@ -1711,7 +1711,7 @@ void EnGm_Update(Actor* thisx, PlayState* play) { func_8094DFF8(this, play); func_8094E2D0(this); func_8094F2E8(this); - func_8013C964(&this->actor, play, this->unk_3B4, 30.0f, PLAYER_AP_NONE, this->unk_3A4 & 7); + func_8013C964(&this->actor, play, this->unk_3B4, 30.0f, PLAYER_IA_NONE, this->unk_3A4 & 7); if ((this->unk_258 != 3) && (this->unk_258 != 5) && (this->unk_258 != 8)) { Actor_MoveWithGravity(&this->actor); Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 12.0f, 0.0f, 4); diff --git a/src/overlays/actors/ovl_En_Go/z_en_go.c b/src/overlays/actors/ovl_En_Go/z_en_go.c index 86b0b1b41..9d772cc28 100644 --- a/src/overlays/actors/ovl_En_Go/z_en_go.c +++ b/src/overlays/actors/ovl_En_Go/z_en_go.c @@ -538,7 +538,7 @@ s32 func_80A1222C(EnGo* this, PlayState* play) { if (((player->transformation == PLAYER_FORM_GORON) && (play->msgCtx.ocarinaMode == 3) && (play->msgCtx.lastPlayedSong == OCARINA_SONG_GORON_LULLABY) && (this->unk_3EC == 0) && (this->actor.xzDistToPlayer < 400.0f)) || - (!(gSaveContext.save.weekEventReg[22] & 4) && (play->sceneId == SCENE_16GORON_HOUSE) && + (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04) && (play->sceneId == SCENE_16GORON_HOUSE) && (gSaveContext.sceneLayer == 0) && (this->unk_3EC == 0) && (play->csCtx.currentCsIndex == 1))) { ret = true; } @@ -945,7 +945,7 @@ void func_80A132C8(EnGo* this, PlayState* play) { if ((fabsf(this->actor.playerHeightRel) > 20.0f) || (this->actor.xzDistToPlayer > 300.0f)) { SubS_UpdateFlags(&this->unk_390, 3, 7); } else if ((player->transformation != PLAYER_FORM_GORON) || (ABS_ALT(temp_v1) >= 0x1C70) || - (gSaveContext.save.weekEventReg[21] & 4) || (gSaveContext.save.weekEventReg[21] & 8)) { + CHECK_WEEKEVENTREG(WEEKEVENTREG_21_04) || CHECK_WEEKEVENTREG(WEEKEVENTREG_21_08)) { SubS_UpdateFlags(&this->unk_390, 3, 7); } else { SubS_UpdateFlags(&this->unk_390, 4, 7); @@ -953,7 +953,7 @@ void func_80A132C8(EnGo* this, PlayState* play) { } void func_80A133A8(EnGo* this, PlayState* play) { - if (gSaveContext.save.weekEventReg[21] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_21_08)) { SubS_UpdateFlags(&this->unk_390, 3, 7); } else { SubS_UpdateFlags(&this->unk_390, 4, 7); @@ -988,7 +988,7 @@ Actor* func_80A13400(EnGo* this, PlayState* play) { } void func_80A134B0(EnGo* this, PlayState* play, s32 arg2) { - if ((gSaveContext.save.weekEventReg[18] & 0x80) || (play->actorCtx.flags & ACTORCTX_FLAG_0) || arg2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_18_80) || (play->actorCtx.flags & ACTORCTX_FLAG_0) || arg2) { this->colliderSphere.dim.modelSphere.radius = 300; } else { this->colliderSphere.dim.modelSphere.radius = 380; @@ -1178,7 +1178,7 @@ s32 func_80A13B1C(EnGo* this, PlayState* play) { func_80A13728(this, play); this->unk_3C4++; this->unk_3C2 = 0; - gSaveContext.save.weekEventReg[88] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_88_40); } break; @@ -1198,19 +1198,19 @@ s32 func_80A13B1C(EnGo* this, PlayState* play) { if (this->unk_3C0 >= 65) { switch (player->transformation) { case PLAYER_FORM_HUMAN: - gSaveContext.save.weekEventReg[88] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_88_80); break; case PLAYER_FORM_GORON: - gSaveContext.save.weekEventReg[89] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_89_04); break; case PLAYER_FORM_ZORA: - gSaveContext.save.weekEventReg[89] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_89_02); break; case PLAYER_FORM_DEKU: - gSaveContext.save.weekEventReg[89] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_89_01); break; } ret = true; @@ -1376,7 +1376,7 @@ void func_80A143A8(EnGo* this, PlayState* play) { void func_80A14430(EnGo* this, PlayState* play) { if (((gSaveContext.save.entrance == ENTRANCE(GORON_RACETRACK, 0)) || (gSaveContext.save.entrance == ENTRANCE(GORON_RACETRACK, 2))) && - (gSaveContext.save.weekEventReg[33] & 0x80)) { + (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80))) { func_80A14018(this, play); this->actionFunc = func_80A149B0; } else { @@ -1414,7 +1414,7 @@ void func_80A145AC(EnGo* this, PlayState* play) { if ((ENGO_GET_70(&this->actor) == ENGO_70_1) && (((play->sceneId == SCENE_10YUKIYAMANOMURA2) && (gSaveContext.sceneLayer == 1) && (play->csCtx.currentCsIndex == 0)) || - !(gSaveContext.save.weekEventReg[21] & 8))) { + !CHECK_WEEKEVENTREG(WEEKEVENTREG_21_08))) { this->actor.child = func_80A13400(this, play); this->actor.child->child = &this->actor; func_80A141D4(this, play); @@ -1426,7 +1426,7 @@ void func_80A145AC(EnGo* this, PlayState* play) { } void func_80A14668(EnGo* this, PlayState* play) { - if (!(gSaveContext.save.weekEventReg[22] & 4)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) { func_80A14324(this, play); this->actionFunc = func_80A149B0; } else { @@ -1571,7 +1571,7 @@ void func_80A14B30(EnGo* this, PlayState* play) { this->unk_390 &= ~0x200; this->unk_390 |= 0x8000; this->actor.shape.yOffset = 0.0f; - } else if ((this->unk_3EC != 0) && (gSaveContext.save.weekEventReg[22] & 4)) { + } else if ((this->unk_3EC != 0) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) { this->actor.scale.x = this->unk_3A4 - (Math_SinS(this->unk_3AE) * 0.001f); this->actor.scale.y = (Math_SinS(this->unk_3AE) * 0.001f) + this->unk_3A4; this->actor.scale.z = (Math_SinS(this->unk_3AE) * 0.001f) + this->unk_3A4; @@ -1929,10 +1929,10 @@ void EnGo_Update(Actor* thisx, PlayState* play) { } else { phi_f0 = this->colliderCylinder.dim.radius + 40; } - func_8013C964(&this->actor, play, phi_f0, 20.0f, PLAYER_AP_NONE, this->unk_390 & 7); + func_8013C964(&this->actor, play, phi_f0, 20.0f, PLAYER_IA_NONE, this->unk_390 & 7); } else if ((this->unk_390 & 0x200) && (this->unk_3EC != 0)) { phi_f0 = this->colliderCylinder.dim.radius + 40; - func_8013C964(&this->actor, play, phi_f0, 20.0f, PLAYER_AP_NONE, this->unk_390 & 7); + func_8013C964(&this->actor, play, phi_f0, 20.0f, PLAYER_IA_NONE, this->unk_390 & 7); } if ((ENGO_GET_F(&this->actor) != ENGO_F_8) && (ENGO_GET_F(&this->actor) != ENGO_F_2) && diff --git a/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.c b/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.c index cedd5c894..eb7948ffb 100644 --- a/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.c +++ b/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.c @@ -390,7 +390,7 @@ void EnGrasshopper_Fly(EnGrasshopper* this, PlayState* play) { } } - if ((Player_GetMask(play) != PLAYER_MASK_STONE) && !(gSaveContext.eventInf[4] & 2) && !this->shouldTurn && + if ((Player_GetMask(play) != PLAYER_MASK_STONE) && !CHECK_EVENTINF(EVENTINF_41) && !this->shouldTurn && (this->actor.xzDistToPlayer < 200.0f)) { EnGrasshopper_SetupApproachPlayer(this, play); } else { diff --git a/src/overlays/actors/ovl_En_Gs/z_en_gs.c b/src/overlays/actors/ovl_En_Gs/z_en_gs.c index 5bd3826c7..93d7e3f88 100644 --- a/src/overlays/actors/ovl_En_Gs/z_en_gs.c +++ b/src/overlays/actors/ovl_En_Gs/z_en_gs.c @@ -184,7 +184,7 @@ void func_80997D38(EnGs* this, PlayState* play) { if (Message_GetState(&play->msgCtx) == TEXT_STATE_NONE) { if (this->actor.xzDistToPlayer <= D_8099A408[this->actor.params]) { func_8013E8F8(&this->actor, play, D_8099A408[this->actor.params], D_8099A408[this->actor.params], - PLAYER_AP_NONE, 0x2000, 0x2000); + PLAYER_IA_NONE, 0x2000, 0x2000); } } @@ -372,7 +372,7 @@ void func_809984F4(EnGs* this, PlayState* play) { } } while (gossipStone != NULL); - func_800B7298(play, &this->actor, 7); + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); this->actionFunc = func_809985B8; } @@ -459,29 +459,29 @@ void func_8099874C(EnGs* this, PlayState* play) { this->unk_20C = -1; switch (this->unk_194) { case 1: - if (!(gSaveContext.save.weekEventReg[77] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_77_08)) { this->unk_20C = 6; - gSaveContext.save.weekEventReg[77] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_77_08); } break; case 3: - if (!(gSaveContext.save.weekEventReg[77] & 0x10)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_77_10)) { this->unk_20C = 6; - gSaveContext.save.weekEventReg[77] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_77_10); } break; case 2: - if (!(gSaveContext.save.weekEventReg[77] & 0x20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_77_20)) { this->unk_20C = 6; - gSaveContext.save.weekEventReg[77] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_77_20); } break; } - if (!(gSaveContext.save.weekEventReg[90] & 0x10)) { - gSaveContext.save.weekEventReg[90] |= 0x10; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_90_10)) { + SET_WEEKEVENTREG(WEEKEVENTREG_90_10); this->unk_20C = 12; } diff --git a/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c b/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c index b1d7ed422..b13bca1dd 100644 --- a/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c +++ b/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c @@ -109,7 +109,7 @@ void EnGuardNuts_Init(Actor* thisx, PlayState* play) { sGuardCount++; // If you have returned deku princess guards will init burrowed. - if (!(gSaveContext.save.weekEventReg[23] & 0x20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { EnGuardNuts_SetupWait(this); } else { EnGuardNuts_Burrow(this, play); @@ -158,10 +158,10 @@ void EnGuardNuts_Wait(EnGuardNuts* this, PlayState* play) { if (player->transformation == PLAYER_FORM_DEKU) { // this is the palace of... this->guardTextIndex = 0; - if ((gSaveContext.save.weekEventReg[17] & 4) && (!this->hasCompletedConversation)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_17_04) && (!this->hasCompletedConversation)) { // I told you not to enter!! this->guardTextIndex = 7; - } else if (gSaveContext.save.weekEventReg[12] & 0x40) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_12_40)) { // come to see the monkey again? this->guardTextIndex = 4; } @@ -234,7 +234,7 @@ void func_80ABB590(EnGuardNuts* this, PlayState* play) { if (D_80ABBE38[this->guardTextIndex] == 2) { func_801477B4(play); D_80ABBE20 = 2; - gSaveContext.save.weekEventReg[12] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_12_40); EnGuardNuts_Burrow(this, play); } else { this->guardTextIndex++; @@ -300,7 +300,7 @@ void EnGuardNuts_Unburrow(EnGuardNuts* this, PlayState* play) { Vec3f digPos; // If you have returned Deku Princess, guards will not unburrow - if (!(gSaveContext.save.weekEventReg[23] & 0x20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { yawDiff = ABS_ALT(BINANG_SUB(this->actor.yawTowardsPlayer, this->actor.home.rot.y)); if ((yawDiff < 0x4000) && ((D_80ABBE20 == 0) || (this->actor.xzDistToPlayer > 150.0f))) { Math_Vec3f_Copy(&digPos, &this->actor.world.pos); diff --git a/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c b/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c index 342415fec..f7eddbe6f 100644 --- a/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c +++ b/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c @@ -119,10 +119,10 @@ void func_80BC6E10(EnGuruguru* this) { this->textIdIndex = 0; this->unk270 = 0; if (this->actor.params == 0) { - if (gSaveContext.save.weekEventReg[38] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_38_10)) { this->textIdIndex = 1; } - } else if (gSaveContext.save.weekEventReg[38] & 0x40) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_38_40)) { this->textIdIndex = 2; } else { this->textIdIndex = 3; @@ -131,8 +131,8 @@ void func_80BC6E10(EnGuruguru* this) { this->headZRotTarget = 0; this->unk268 = 1; this->actor.textId = textIDs[this->textIdIndex]; - if ((this->textIdIndex == 0 || this->textIdIndex == 1) && (gSaveContext.save.weekEventReg[77] & 4)) { - if (!(gSaveContext.save.weekEventReg[88] & 4)) { + if ((this->textIdIndex == 0 || this->textIdIndex == 1) && CHECK_WEEKEVENTREG(WEEKEVENTREG_77_04)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_88_04)) { this->actor.textId = 0x295F; } else { this->actor.textId = 0x2960; @@ -153,7 +153,7 @@ void func_80BC6F14(EnGuruguru* this, PlayState* play) { this->textIdIndex = 3; if (player->transformation == PLAYER_FORM_DEKU) { this->textIdIndex = 13; - if (gSaveContext.save.weekEventReg[79] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_04)) { this->textIdIndex = 14; } } @@ -212,16 +212,16 @@ void func_80BC7068(EnGuruguru* this, PlayState* play) { this->headZRotTarget = 0; if ((this->textIdIndex == 13) || (this->textIdIndex == 14)) { func_80151BB4(play, 0x13); - gSaveContext.save.weekEventReg[79] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_79_04); func_80BC6E10(this); return; } if (this->actor.params == 0) { if (this->actor.textId == 0x295F) { - gSaveContext.save.weekEventReg[88] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_88_04); } if (this->actor.textId == 0x292A) { - gSaveContext.save.weekEventReg[38] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_38_10); } func_80151BB4(play, 0x13); func_80BC6E10(this); @@ -232,7 +232,7 @@ void func_80BC7068(EnGuruguru* this, PlayState* play) { return; } if (this->textIdIndex == 12) { - gSaveContext.save.weekEventReg[38] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_38_40); func_801A3B48(0); func_80151BB4(play, 0x36); func_80151BB4(play, 0x13); @@ -295,9 +295,9 @@ void func_80BC7440(EnGuruguru* this, PlayState* play) { this->textIdIndex++; this->actor.textId = textIDs[this->textIdIndex]; func_801A3B48(1); - func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); this->unk268 = 0; - gSaveContext.save.weekEventReg[38] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_38_40); this->actionFunc = func_80BC7520; } else { Actor_PickUp(&this->actor, play, GI_MASK_BREMEN, 300.0f, 300.0f); @@ -309,7 +309,7 @@ void func_80BC7520(EnGuruguru* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actionFunc = func_80BC7068; } else { - func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Heishi/z_en_heishi.c b/src/overlays/actors/ovl_En_Heishi/z_en_heishi.c index c7fc4eea8..756f37eb8 100644 --- a/src/overlays/actors/ovl_En_Heishi/z_en_heishi.c +++ b/src/overlays/actors/ovl_En_Heishi/z_en_heishi.c @@ -72,16 +72,14 @@ void EnHeishi_Init(Actor* thisx, PlayState* play) { if (this->paramsCopy == 0) { this->shouldSetHeadRotation = 1; - if (!(gSaveContext.save.weekEventReg[63] & 0x80) && - !((gSaveContext.save.day == 3) && gSaveContext.save.isNight)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80) && !((gSaveContext.save.day == 3) && gSaveContext.save.isNight)) { Actor_Kill(&this->actor); } } else { this->colliderCylinder.dim.radius = 30; this->colliderCylinder.dim.height = 60; this->colliderCylinder.dim.yShift = 0; - if ((gSaveContext.save.weekEventReg[63] & 0x80) || - ((gSaveContext.save.day == 3) && gSaveContext.save.isNight)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80) || ((gSaveContext.save.day == 3) && gSaveContext.save.isNight)) { Actor_Kill(&this->actor); } } diff --git a/src/overlays/actors/ovl_En_Hg/z_en_hg.c b/src/overlays/actors/ovl_En_Hg/z_en_hg.c index 38062e995..e100a2de3 100644 --- a/src/overlays/actors/ovl_En_Hg/z_en_hg.c +++ b/src/overlays/actors/ovl_En_Hg/z_en_hg.c @@ -47,7 +47,7 @@ typedef enum { /* 3 */ HG_CS_SONG_OF_HEALING, } HgCsIndex; -const ActorInit En_Hg_InitVars = { +ActorInit En_Hg_InitVars = { ACTOR_EN_HG, ACTORCAT_PROP, FLAGS, @@ -142,7 +142,7 @@ void EnHg_Init(Actor* thisx, PlayState* play) { Collider_InitCylinder(play, &this->collider); Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit2); - if ((gSaveContext.save.weekEventReg[75] & 0x20) || (gSaveContext.save.weekEventReg[52] & 0x20)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_75_20) || CHECK_WEEKEVENTREG(WEEKEVENTREG_52_20)) { Actor_Kill(&this->actor); } this->actor.targetMode = 1; @@ -326,7 +326,7 @@ void EnHg_HandleCsAction(EnHg* this, PlayState* play) { break; case 6: - gSaveContext.save.weekEventReg[75] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_75_20); Actor_Kill(&this->actor); break; } @@ -405,9 +405,8 @@ void EnHg_WaitForPlayerAction(EnHg* this, PlayState* play) { } else { if ((this->actor.xzDistToPlayer < 60.0f) && (fabsf(this->actor.playerHeightRel) < 40.0f)) { if ((this->actionFunc != EnHg_PlayCutscene) && (this->actionFunc != EnHg_HandleCsAction)) { - - if (!(gSaveContext.save.weekEventReg[61] & 2)) { - gSaveContext.save.weekEventReg[61] |= 2; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_61_02)) { + SET_WEEKEVENTREG(WEEKEVENTREG_61_02); this->cutsceneIndex = HG_CS_FIRST_ENCOUNTER; } else { this->cutsceneIndex = HG_CS_SUBSEQUENT_ENCOUNTER; diff --git a/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c b/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c index 56a88e45b..f7a9df82a 100644 --- a/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c +++ b/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c @@ -48,7 +48,7 @@ typedef enum { /* 6 */ HGO_ANIM_TOSS, } HgoAnimation; -const ActorInit En_Hgo_InitVars = { +ActorInit En_Hgo_InitVars = { ACTOR_EN_HGO, ACTORCAT_NPC, FLAGS, @@ -103,12 +103,13 @@ void EnHgo_Init(Actor* thisx, PlayState* play) { Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&thisx->colChkInfo, NULL, &sColChkInfoInit); thisx->targetMode = 6; + this->eyeIndex = 0; this->blinkTimer = 0; this->textId = 0; this->talkFlags = TALK_FLAG_NONE; this->isInCutscene = false; - if ((gSaveContext.save.weekEventReg[75] & 0x20) || (gSaveContext.save.weekEventReg[52] & 0x20)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_75_20) || CHECK_WEEKEVENTREG(WEEKEVENTREG_52_20)) { EnHgo_SetupTalk(this); } else { thisx->draw = NULL; @@ -221,7 +222,7 @@ void EnHgo_HandlePlayerChoice(EnHgo* this, PlayState* play) { break; case 0x1590: - if (gSaveContext.save.weekEventReg[14] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_04)) { Message_StartTextbox(play, 0x1591, &this->actor); this->textId = 0x1591; break; @@ -341,7 +342,7 @@ s32 EnHgo_HandleCsAction(EnHgo* this, PlayState* play) { return true; } - if ((play->csCtx.state == 0) && (((gSaveContext.save.weekEventReg[75]) & 0x20)) && + if ((play->csCtx.state == CS_STATE_0) && CHECK_WEEKEVENTREG(WEEKEVENTREG_75_20) && (this->actionFunc == EnHgo_DoNothing)) { this->actor.shape.rot.y = this->actor.world.rot.y; Actor_Spawn(&play->actorCtx, play, ACTOR_ELF_MSG2, this->actor.focus.pos.x, this->actor.focus.pos.y, diff --git a/src/overlays/actors/ovl_En_Horse/z_en_horse.c b/src/overlays/actors/ovl_En_Horse/z_en_horse.c index c148e0e08..6451354a2 100644 --- a/src/overlays/actors/ovl_En_Horse/z_en_horse.c +++ b/src/overlays/actors/ovl_En_Horse/z_en_horse.c @@ -674,7 +674,7 @@ s32 EnHorse_PlayerCanMove(EnHorse* this, PlayState* play) { (((this->stateFlags & ENHORSE_FLAG_19) || (this->stateFlags & ENHORSE_FLAG_29)) && !this->inRace) || (this->action == ENHORSE_ACTION_HBA) || (player->actor.flags & ACTOR_FLAG_100) || (play->csCtx.state != CS_STATE_0) || (ActorCutscene_GetCurrentIndex() != -1) || - (player->stateFlags1 & PLAYER_STATE1_20) || (player->csMode != 0)) { + (player->stateFlags1 & PLAYER_STATE1_20) || (player->csMode != PLAYER_CSMODE_0)) { return false; } return true; @@ -792,8 +792,8 @@ void EnHorse_Init(Actor* thisx, PlayState* play2) { this->stateFlags = 0; } - if (((play->sceneId == SCENE_KOEPONARACE) && (GET_RACE_FLAGS == 1)) || - ((gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0)) && Cutscene_GetSceneLayer(play))) { + if (((play->sceneId == SCENE_KOEPONARACE) && (GET_WEEKEVENTREG_RACE_FLAGS == WEEKEVENTREG_RACE_FLAG_START)) || + ((gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0)) && (Cutscene_GetSceneLayer(play) != 0))) { this->stateFlags |= ENHORSE_FLAG_25; } @@ -1131,6 +1131,7 @@ void EnHorse_StartMountedIdle(EnHorse* this) { } } } + curFrame = this->skin.skelAnime.curFrame; Animation_Change(&this->skin.skelAnime, sAnimationHeaders[this->type][this->animIndex], 1.0f, curFrame, Animation_GetLastFrame(sAnimationHeaders[this->type][this->animIndex]), ANIMMODE_ONCE, -3.0f); @@ -1569,7 +1570,7 @@ void EnHorse_Stopping(EnHorse* this, PlayState* play) { if ((this->stateFlags & ENHORSE_STOPPING_NEIGH_SOUND) && (this->skin.skelAnime.curFrame > 29.0f)) { this->actor.speedXZ = 0.0f; if ((Rand_ZeroOne() > 0.5f) && - ((gSaveContext.save.entrance != ENTRANCE(ROMANI_RANCH, 0)) || !Cutscene_GetSceneLayer(play))) { + ((gSaveContext.save.entrance != ENTRANCE(ROMANI_RANCH, 0)) || (Cutscene_GetSceneLayer(play) == 0))) { if (this->stateFlags & ENHORSE_DRAW) { if (this->type == HORSE_TYPE_2) { Audio_PlaySfxAtPos(&this->unk_218, NA_SE_EV_KID_HORSE_NEIGH); @@ -2471,7 +2472,7 @@ void func_808819D8(EnHorse* this, PlayState* play) { func_8088168C(this); } - if (GET_RACE_FLAGS == 3) { + if (GET_WEEKEVENTREG_RACE_FLAGS == WEEKEVENTREG_RACE_FLAG_3) { this->rider->unk488 = 7; } else { EnHorse_SetIngoAnimation(this->animIndex, this->skin.skelAnime.curFrame, this->unk_394 & 1, @@ -2920,7 +2921,7 @@ void EnHorse_UpdateHorsebackArchery(EnHorse* this, PlayState* play) { this->hbaTimer++; } - sp28 = Audio_IsSequencePlaying(0x41); + sp28 = Audio_IsSequencePlaying(NA_BGM_HORSE_GOAL); EnHorse_UpdateHbaRaceInfo(this, play, &sHbaInfo); if (((this->hbaFlags & 1) || (this->hbaTimer > 45)) && (sp28 != 1) && diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c index 39059f3b7..5299dbaa1 100644 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c +++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c @@ -59,7 +59,7 @@ s32 func_808F8AA0(EnHorseGameCheck* this, PlayState* play) { DynaPolyActor_Init(&this->dyna, 0); - if (GET_RACE_FLAGS != RACE_FLAG_START) { + if (GET_WEEKEVENTREG_RACE_FLAGS != WEEKEVENTREG_RACE_FLAG_START) { Actor_Kill(&this->dyna.actor); return false; } @@ -116,7 +116,7 @@ s32 func_808F8CCC(EnHorseGameCheck* this, PlayState* play2) { this->unk_168 = 0; this->unk_174 = 0; - if (GET_RACE_FLAGS != RACE_FLAG_START) { + if (GET_WEEKEVENTREG_RACE_FLAGS != WEEKEVENTREG_RACE_FLAG_START) { Actor_Kill(&this->dyna.actor); return false; } @@ -156,14 +156,14 @@ s32 func_808F8EB0(EnHorseGameCheck* this, PlayState* play) { return false; } - if (GET_RACE_FLAGS == RACE_FLAG_3) { + if (GET_WEEKEVENTREG_RACE_FLAGS == WEEKEVENTREG_RACE_FLAG_3) { play->transitionType = TRANS_TYPE_64; gSaveContext.nextTransitionType = TRANS_TYPE_02; - } else if (GET_RACE_FLAGS == RACE_FLAG_2) { + } else if (GET_WEEKEVENTREG_RACE_FLAGS == WEEKEVENTREG_RACE_FLAG_2) { play->transitionType = TRANS_TYPE_80; gSaveContext.nextTransitionType = TRANS_TYPE_03; - } else if (GET_RACE_FLAGS == RACE_FLAG_4) { - SET_RACE_FLAGS(RACE_FLAG_3); + } else if (GET_WEEKEVENTREG_RACE_FLAGS == WEEKEVENTREG_RACE_FLAG_4) { + SET_WEEKEVENTREG_RACE_FLAGS(WEEKEVENTREG_RACE_FLAG_3); play->transitionType = TRANS_TYPE_02; gSaveContext.nextTransitionType = TRANS_TYPE_02; } @@ -252,7 +252,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x40000; gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; - SET_RACE_FLAGS(RACE_FLAG_4); + SET_WEEKEVENTREG_RACE_FLAGS(WEEKEVENTREG_RACE_FLAG_4); this->unk_174 = 60; } @@ -285,7 +285,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x40000; gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; - SET_RACE_FLAGS(RACE_FLAG_3); + SET_WEEKEVENTREG_RACE_FLAGS(WEEKEVENTREG_RACE_FLAG_3); this->unk_174 = 60; } @@ -318,7 +318,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x02000000; gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; - SET_RACE_FLAGS(RACE_FLAG_3); + SET_WEEKEVENTREG_RACE_FLAGS(WEEKEVENTREG_RACE_FLAG_3); this->unk_174 = 60; } @@ -347,7 +347,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x800; gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; - SET_RACE_FLAGS(RACE_FLAG_2); + SET_WEEKEVENTREG_RACE_FLAGS(WEEKEVENTREG_RACE_FLAG_2); this->unk_174 = 60; } return true; diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.h b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.h index 52cdc2b64..d43f1f90c 100644 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.h +++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.h @@ -25,22 +25,6 @@ enum { /* 10 */ ENHORSEGAMECHECK_FF_MAX, }; -#define RACE_FLAG_END 0 -#define RACE_FLAG_START 1 -#define RACE_FLAG_2 2 -#define RACE_FLAG_3 3 -#define RACE_FLAG_4 4 -#define RACE_FLAGS 7 - -#define GET_RACE_FLAGS (gSaveContext.save.weekEventReg[92] & RACE_FLAGS) - -#define SET_RACE_FLAGS(flag) \ - { \ - gSaveContext.save.weekEventReg[92] &= (u8)~RACE_FLAGS; \ - gSaveContext.save.weekEventReg[92] = \ - gSaveContext.save.weekEventReg[92] | (u8)((gSaveContext.save.weekEventReg[92] & ~RACE_FLAGS) | (flag)); \ - } (void)0 - typedef struct EnHorseGameCheck { /* 0x000 */ DynaPolyActor dyna; /* 0x15C */ s32 unk_15C; diff --git a/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.c b/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.c index c02558a84..a10504720 100644 --- a/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.c +++ b/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.c @@ -345,7 +345,7 @@ void func_808DF194(EnHorseLinkChild* this, PlayState* play) { sp4C = SkelAnime_Update(&this->skin.skelAnime); if ((sp4C != 0) || (this->unk_148 == 1) || (this->unk_148 == 0)) { - if ((gSaveContext.save.weekEventReg[1] & 0x20)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_01_20)) { f32 sp44 = Math3D_Distance(&this->actor.world.pos, &this->actor.home.pos); s32 pad; diff --git a/src/overlays/actors/ovl_En_Hs/z_en_hs.c b/src/overlays/actors/ovl_En_Hs/z_en_hs.c index cb6e58759..2eb1c71a6 100644 --- a/src/overlays/actors/ovl_En_Hs/z_en_hs.c +++ b/src/overlays/actors/ovl_En_Hs/z_en_hs.c @@ -162,7 +162,7 @@ void func_80953098(EnHs* this, PlayState* play) { this->actionFunc = func_8095345C; this->actor.flags |= ACTOR_FLAG_10000; this->stateFlags |= 0x10; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { this->stateFlags |= 8; if (INV_CONTENT(ITEM_MASK_BUNNY) == ITEM_MASK_BUNNY) { @@ -218,14 +218,14 @@ void EnHs_SceneTransitToBunnyHoodDialogue(EnHs* this, PlayState* play) { if (DECR(this->stateTimer) == 0) { play->nextEntrance = play->setupExitList[HS_GET_EXIT_INDEX(&this->actor)]; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.weekEventReg[25] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_25_08); this->actionFunc = EnHs_DoNothing; } } void func_80953354(EnHs* this, PlayState* play) { if (!Play_InCsMode(play)) { - func_800B7298(play, &this->actor, 7); + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); this->actionFunc = EnHs_SceneTransitToBunnyHoodDialogue; } } @@ -239,7 +239,7 @@ void func_809533A0(EnHs* this, PlayState* play) { } else if (this->stateFlags & 0x10) { sp1E = 0x33F9; this->stateFlags &= ~0x10; - } else if (gSaveContext.save.weekEventReg[25] & 8) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_25_08)) { sp1E = 0x33F4; } else { sp1E = 0x33F5; @@ -264,7 +264,7 @@ void func_8095345C(EnHs* this, PlayState* play) { this->actionFunc = func_80953354; this->stateTimer = 40; } else if (CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_10000)) { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); this->stateFlags |= 1; } else if ((this->actor.xzDistToPlayer < 120.0f) && Player_IsFacingActor(&this->actor, 0x2000, play)) { func_800B8614(&this->actor, play, 130.0f); diff --git a/src/overlays/actors/ovl_En_Ig/z_en_ig.c b/src/overlays/actors/ovl_En_Ig/z_en_ig.c index 7cd582b2e..4244c705d 100644 --- a/src/overlays/actors/ovl_En_Ig/z_en_ig.c +++ b/src/overlays/actors/ovl_En_Ig/z_en_ig.c @@ -25,7 +25,7 @@ static u8 D_80BF3260[] = { /* 0x05 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x57 - 0x09), /* 0x09 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 25, 15, 45, 0x51 - 0x0F), /* 0x0F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 45, 15, 50, 0x4B - 0x15), - /* 0x15 */ SCHEDULE_CMD_CHECK_FLAG_S(0x4B, 0x10, 0x1A - 0x19), + /* 0x15 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_75_10, 0x1A - 0x19), /* 0x19 */ SCHEDULE_CMD_RET_NONE(), /* 0x1A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 50, 16, 55, 0x45 - 0x20), /* 0x20 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 55, 17, 15, 0x3F - 0x26), @@ -42,7 +42,7 @@ static u8 D_80BF3260[] = { /* 0x5B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 45, 15, 50, 0xAF - 0x61), /* 0x61 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 50, 16, 10, 0xA9 - 0x67), /* 0x67 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 10, 16, 30, 0xA3 - 0x6D), - /* 0x6D */ SCHEDULE_CMD_CHECK_FLAG_S(0x4B, 0x10, 0x8A - 0x71), + /* 0x6D */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_75_10, 0x8A - 0x71), /* 0x71 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 30, 16, 50, 0x84 - 0x77), /* 0x77 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 50, 16, 55, 0x7E - 0x7D), /* 0x7D */ SCHEDULE_CMD_RET_NONE(), @@ -372,7 +372,7 @@ s32 func_80BF17BC(EnIg* this, PlayState* play) { case 1: case 3: - if (!(gSaveContext.save.weekEventReg[75] & 0x10) && (this->unk_3F6 == 3)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_75_10) && (this->unk_3F6 == 3)) { ActorCutscene_Stop(sp2A); this->unk_3F6 = 5; } else { @@ -950,7 +950,7 @@ void EnIg_Update(Actor* thisx, PlayState* play) { func_80BF1258(this); func_80BF13E4(this); func_80BF15EC(this); - func_8013C964(&this->actor, play, 60.0f, 30.0f, PLAYER_AP_NONE, this->unk_3D0 & 7); + func_8013C964(&this->actor, play, 60.0f, 30.0f, PLAYER_IA_NONE, this->unk_3D0 & 7); Actor_MoveWithGravity(&this->actor); Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 12.0f, 0.0f, 4); func_80BF1354(this, play); diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index ba51fb858..a51cae556 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -224,7 +224,7 @@ s32 func_808F33B8(void) { s32 ret = (((gSaveContext.save.day == 1) && ((gSaveContext.save.time >= CLOCK_TIME(5, 30)) && (gSaveContext.save.time <= CLOCK_TIME(6, 0)))) || (gSaveContext.save.day >= 2)) && - !(gSaveContext.save.weekEventReg[22] & 1); + !CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01); return ret; } @@ -238,7 +238,7 @@ void func_808F3414(EnIn* this, PlayState* play) { } if (SubS_AngleDiffLessEqual(this->actor.shape.rot.y, 0x2710, this->actor.yawTowardsPlayer)) { point.x = player->actor.world.pos.x; - point.y = player->bodyPartsPos[7].y + 3.0f; + point.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; point.z = player->actor.world.pos.z; SubS_TrackPoint(&point, &this->actor.focus.pos, &this->actor.shape.rot, &this->trackTarget, &this->headRot, &this->torsoRot, &sTrackOptions); @@ -336,7 +336,7 @@ void func_808F38F8(EnIn* this, PlayState* play) { } void func_808F395C(EnIn* this, PlayState* play) { - if (this->unk4B0 == RACE_FLAG_END) { + if (this->unk4B0 == WEEKEVENTREG_RACE_FLAG_END) { this->actionFunc = func_808F5A94; } if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { @@ -352,30 +352,30 @@ void func_808F39DC(EnIn* this, PlayState* play) { u16 textId = 0; if (gSaveContext.save.day != 3) { - switch (GET_RACE_FLAGS) { - case RACE_FLAG_2: + switch (GET_WEEKEVENTREG_RACE_FLAGS) { + case WEEKEVENTREG_RACE_FLAG_2: textId = 0x347A; break; - case RACE_FLAG_3: + case WEEKEVENTREG_RACE_FLAG_3: textId = 0x3476; break; } - SET_RACE_FLAGS(RACE_FLAG_END); + SET_WEEKEVENTREG_RACE_FLAGS(WEEKEVENTREG_RACE_FLAG_END); } else { - switch (GET_RACE_FLAGS) { - case RACE_FLAG_2: + switch (GET_WEEKEVENTREG_RACE_FLAGS) { + case WEEKEVENTREG_RACE_FLAG_2: textId = 0x349D; break; - case RACE_FLAG_3: + case WEEKEVENTREG_RACE_FLAG_3: textId = 0x3499; break; } - SET_RACE_FLAGS(RACE_FLAG_END); + SET_WEEKEVENTREG_RACE_FLAGS(WEEKEVENTREG_RACE_FLAG_END); } this->actor.flags |= ACTOR_FLAG_10000; this->actor.textId = textId; this->actionFunc = func_808F395C; - if (this->unk4B0 == RACE_FLAG_2) { + if (this->unk4B0 == WEEKEVENTREG_RACE_FLAG_2) { Actor_PlaySfxAtPos(&this->actor, NA_SE_VO_IN_LOST); } else { Actor_PlaySfxAtPos(&this->actor, NA_SE_VO_IN_JOY0); @@ -388,7 +388,7 @@ void func_808F3AD4(EnIn* this, PlayState* play) { this->unk48C = 1; this->actionFunc = func_808F5A94; } else { - func_800B85E0(&this->actor, play, 200.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } @@ -412,7 +412,7 @@ void func_808F3BD4(EnIn* this, PlayState* play) { this->unk48C = 1; this->actionFunc = func_808F5A94; } else { - func_800B85E0(&this->actor, play, 200.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } @@ -436,7 +436,7 @@ void func_808F3CD4(EnIn* this, PlayState* play) { this->unk48C = 1; this->actionFunc = func_808F5A94; } else { - func_800B85E0(&this->actor, play, 200.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } @@ -458,7 +458,7 @@ u16 func_808F3DD4(PlayState* play, EnIn* this, u32 arg2) { u16 textId = 0; if (Player_GetMask(play) == PLAYER_MASK_CIRCUS_LEADER) { - if (!(gSaveContext.save.weekEventReg[63] & 0x40)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_63_40)) { textId = 0x34A9; } else if (this->unk4AC & 8) { textId = 0x34B1; @@ -475,14 +475,14 @@ u16 func_808F3DD4(PlayState* play, EnIn* this, u32 arg2) { textId = 0x345C; } else if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { textId = 0x3460; - } else if (!(gSaveContext.save.weekEventReg[15] & 8)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_15_08)) { textId = 0x3458; } else { textId = 0x345B; } break; case 1: - if (!(gSaveContext.save.weekEventReg[15] & 0x10)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_15_10)) { textId = 0x3463; } else { textId = 0x346B; @@ -494,7 +494,7 @@ u16 func_808F3DD4(PlayState* play, EnIn* this, u32 arg2) { } else if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA || gSaveContext.save.playerForm == PLAYER_FORM_GORON) { textId = 0x3484; - } else if (!(gSaveContext.save.weekEventReg[56] & 4)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_56_04)) { textId = 0x346D; } else { textId = 0x3482; @@ -505,7 +505,7 @@ u16 func_808F3DD4(PlayState* play, EnIn* this, u32 arg2) { textId = 0x348A; } else if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { textId = 0x348B; - } else if (!(gSaveContext.save.weekEventReg[16] & 1)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_16_01)) { textId = 0x3486; } else { textId = 0x3489; @@ -514,7 +514,7 @@ u16 func_808F3DD4(PlayState* play, EnIn* this, u32 arg2) { case 5: if (func_808F33B8()) { textId = 0x34B3; - } else if (!(gSaveContext.save.weekEventReg[16] & 2)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_16_02)) { textId = 0x348E; } else { textId = 0x3493; @@ -526,7 +526,7 @@ u16 func_808F3DD4(PlayState* play, EnIn* this, u32 arg2) { } else if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA || gSaveContext.save.playerForm == PLAYER_FORM_GORON) { textId = 0x34A7; - } else if (!(gSaveContext.save.weekEventReg[16] & 4)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_16_04)) { textId = 0x3495; } else { textId = 0x34A5; @@ -578,7 +578,7 @@ s32 func_808F4150(PlayState* play, EnIn* this, s32 arg2, MessageContext* msgCtx) func_8019F208(); if (gSaveContext.save.playerData.rupees >= play->msgCtx.unk1206C) { Rupees_ChangeBy(-play->msgCtx.unk1206C); - if (!(gSaveContext.save.weekEventReg[57] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_57_01)) { func_808F4108(this, play, 0x3474); } else if (this->unk4AC & 8) { func_808F4108(this, play, 0x3475); @@ -604,7 +604,7 @@ s32 func_808F4270(PlayState* play, EnIn* this, s32 arg2, MessageContext* msgCtx, func_8019F208(); if (gSaveContext.save.playerData.rupees >= fee) { Rupees_ChangeBy(-fee); - if (!(gSaveContext.save.weekEventReg[57] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_57_01)) { if (arg4 != 0) { Actor_ContinueText(play, &this->actor, 0x3474); } else { @@ -635,7 +635,7 @@ s32 func_808F4270(PlayState* play, EnIn* this, s32 arg2, MessageContext* msgCtx, s32 func_808F43E0(EnIn* this) { this->unk48C = 0; this->actor.textId = 0; - SET_RACE_FLAGS(RACE_FLAG_END); + SET_WEEKEVENTREG_RACE_FLAGS(WEEKEVENTREG_RACE_FLAG_END); return 0; } @@ -652,7 +652,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { break; case 0x34A9: func_808F4108(this, play, 0x34AA); - gSaveContext.save.weekEventReg[63] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_63_40); ret = false; break; case 0x34AA: @@ -683,7 +683,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0: switch (textId) { case 0x3458: - gSaveContext.save.weekEventReg[15] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_15_08); Actor_ContinueText(play, &this->actor, 0x3459); ret = false; break; @@ -732,7 +732,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 1: switch (textId) { case 0x3463: - gSaveContext.save.weekEventReg[15] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_15_10); Actor_ContinueText(play, &this->actor, 0x3464); ret = false; break; @@ -808,21 +808,21 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { break; case 0x3472: func_808F43E0(this); - gSaveContext.save.weekEventReg[56] &= (u8)~8; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_56_08); func_80151BB4(play, 0x11); ret = true; break; case 0x3473: - gSaveContext.save.weekEventReg[56] &= (u8)~8; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_56_08); func_80151BB4(play, 0x11); break; case 0x3475: - SET_RACE_FLAGS(RACE_FLAG_START); + SET_WEEKEVENTREG_RACE_FLAGS(WEEKEVENTREG_RACE_FLAG_START); func_800FD750(NA_BGM_HORSE); play->nextEntrance = ENTRANCE(GORMAN_TRACK, 5); play->transitionType = TRANS_TYPE_05; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.weekEventReg[57] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_57_01); break; case 0x3478: if (msgCtx->choiceIndex == 0) { @@ -830,14 +830,14 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { ret = false; } else { func_8019F230(); - gSaveContext.save.weekEventReg[56] &= (u8)~8; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_56_08); func_808F4108(this, play, 0x3479); ret = false; } break; case 0x347B: func_808F4108(this, play, 0x347C); - gSaveContext.save.weekEventReg[56] &= (u8)~8; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_56_08); ret = false; break; } @@ -846,8 +846,8 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { switch (textId) { case 0x346D: func_808F4108(this, play, 0x346E); - gSaveContext.save.weekEventReg[56] |= 4; - gSaveContext.save.weekEventReg[56] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_56_04); + SET_WEEKEVENTREG(WEEKEVENTREG_56_08); ret = false; break; case 0x346F: @@ -856,7 +856,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { break; case 0x3482: func_808F4108(this, play, 0x3483); - gSaveContext.save.weekEventReg[56] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_56_08); ret = false; break; case 0x3484: @@ -876,7 +876,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { ret = false; break; case 0x3477: - gSaveContext.save.weekEventReg[56] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_56_08); func_808F4108(this, play, 0x3478); ret = false; break; @@ -887,7 +887,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { Actor_ContinueText(play, &this->actor, 0x347E); ret = false; } else { - gSaveContext.save.weekEventReg[56] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_56_08); func_808F4108(this, play, 0x347B); ret = false; } @@ -943,7 +943,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { switch (textId) { case 0x3486: Actor_ContinueText(play, &this->actor, 0x3487); - gSaveContext.save.weekEventReg[16] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_16_01); ret = false; break; case 0x3487: @@ -984,7 +984,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x348E: case 0x34B3: Actor_ContinueText(play, &this->actor, 0x348F); - gSaveContext.save.weekEventReg[16] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_16_02); ret = false; break; case 0x3493: @@ -1036,8 +1036,8 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { break; case 0x3495: func_808F4108(this, play, 0x3496); - gSaveContext.save.weekEventReg[16] |= 4; - gSaveContext.save.weekEventReg[56] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_16_04); + SET_WEEKEVENTREG(WEEKEVENTREG_56_08); ret = false; break; case 0x3497: @@ -1052,11 +1052,11 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { break; case 0x34A5: func_808F4108(this, play, 0x34A6); - gSaveContext.save.weekEventReg[56] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_56_08); ret = false; break; case 0x3473: - gSaveContext.save.weekEventReg[56] &= (u8)~8; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_56_08); func_80151BB4(play, 0x11); break; case 0x3474: @@ -1064,12 +1064,12 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { ret = false; break; case 0x3475: - SET_RACE_FLAGS(RACE_FLAG_START); + SET_WEEKEVENTREG_RACE_FLAGS(WEEKEVENTREG_RACE_FLAG_START); func_800FD750(NA_BGM_HORSE); play->nextEntrance = ENTRANCE(GORMAN_TRACK, 5); play->transitionType = TRANS_TYPE_05; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.weekEventReg[57] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_57_01); break; case 0x349D: EnIn_ChangeAnim(&this->skelAnime, ENIN_ANIM_1); @@ -1078,7 +1078,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { Actor_ContinueText(play, &this->actor, 0x34A1); ret = false; } else { - gSaveContext.save.weekEventReg[56] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_56_08); func_808F4108(this, play, 0x349E); ret = false; } @@ -1161,13 +1161,13 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { break; case 0x3472: func_808F43E0(this); - gSaveContext.save.weekEventReg[56] &= (u8)~8; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_56_08); func_80151BB4(play, 0x11); ret = true; break; case 0x349E: func_808F4108(this, play, 0x349F); - gSaveContext.save.weekEventReg[56] &= (u8)~8; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_56_08); ret = false; break; } @@ -1303,8 +1303,8 @@ void func_808F5A94(EnIn* this, PlayState* play) { void func_808F5B58(EnIn* this, PlayState* play) { if (func_800F41E4(play, &play->actorCtx)) { - if ((Player_GetMask(play) == PLAYER_MASK_CIRCUS_LEADER && gSaveContext.save.weekEventReg[63] & 0x40) || - gSaveContext.save.weekEventReg[56] & 8) { + if ((Player_GetMask(play) == PLAYER_MASK_CIRCUS_LEADER && CHECK_WEEKEVENTREG(WEEKEVENTREG_63_40)) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_56_08)) { if (gSaveContext.save.day == 3) { func_808F5728(play, this, 6, &this->unk48C); } else { @@ -1312,7 +1312,7 @@ void func_808F5B58(EnIn* this, PlayState* play) { } } } else if (Player_GetMask(play) != PLAYER_MASK_CIRCUS_LEADER || - (Player_GetMask(play) == PLAYER_MASK_CIRCUS_LEADER && gSaveContext.save.weekEventReg[63] & 0x40)) { + (Player_GetMask(play) == PLAYER_MASK_CIRCUS_LEADER && CHECK_WEEKEVENTREG(WEEKEVENTREG_63_40))) { if (gSaveContext.save.day == 3) { func_808F5728(play, this, 4, &this->unk48C); } else { @@ -1322,11 +1322,11 @@ void func_808F5B58(EnIn* this, PlayState* play) { } void func_808F5C98(EnIn* this, PlayState* play) { - if (this->unk4B0 == RACE_FLAG_END) { + if (this->unk4B0 == WEEKEVENTREG_RACE_FLAG_END) { this->actionFunc = func_808F5B58; } - if ((Player_GetMask(play) == PLAYER_MASK_CIRCUS_LEADER && gSaveContext.save.weekEventReg[63] & 0x40) || - gSaveContext.save.weekEventReg[56] & 8) { + if ((Player_GetMask(play) == PLAYER_MASK_CIRCUS_LEADER && CHECK_WEEKEVENTREG(WEEKEVENTREG_63_40)) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_56_08)) { if (gSaveContext.save.day != 3) { func_808F5728(play, this, 2, &this->unk48C); } else { @@ -1334,7 +1334,7 @@ void func_808F5C98(EnIn* this, PlayState* play) { } } if (this->unk4A8 == 2) { - if (this->unk4B0 == RACE_FLAG_2) { + if (this->unk4B0 == WEEKEVENTREG_RACE_FLAG_2) { Actor_PlaySfxAtPos(&this->actor, NA_SE_VO_IN_LOST); } else { Actor_PlaySfxAtPos(&this->actor, NA_SE_VO_IN_JOY0); @@ -1366,7 +1366,7 @@ void EnIn_Init(Actor* thisx, PlayState* play) { this->unk48C = 0; this->unk4AC = 0; type = ENIN_GET_TYPE(thisx); - this->unk4B0 = GET_RACE_FLAGS; + this->unk4B0 = GET_WEEKEVENTREG_RACE_FLAGS; if (type == ENIN_HORSE_RIDER_BLUE_SHIRT || type == ENIN_BLUE_SHIRT) { this->unk4AC |= 8; } @@ -1387,19 +1387,21 @@ void EnIn_Init(Actor* thisx, PlayState* play) { this->path = SubS_GetPathByIndex(play, ENIN_GET_PATH(&this->actor), 0x3F); this->unk23D = 0; if (type == ENIN_YELLOW_SHIRT || type == ENIN_BLUE_SHIRT) { - if (GET_RACE_FLAGS == RACE_FLAG_2 || GET_RACE_FLAGS == RACE_FLAG_3) { - gSaveContext.save.weekEventReg[56] &= (u8)~8; + if ((GET_WEEKEVENTREG_RACE_FLAGS == WEEKEVENTREG_RACE_FLAG_2) || + (GET_WEEKEVENTREG_RACE_FLAGS == WEEKEVENTREG_RACE_FLAG_3)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_56_08); this->unk4A8 = 0; this->unk4AC |= 2; func_808F35AC(this, play); this->unk23C = 0; D_801BDAA0 = 0; - if (GET_RACE_FLAGS == RACE_FLAG_2) { + + if (GET_WEEKEVENTREG_RACE_FLAGS == WEEKEVENTREG_RACE_FLAG_2) { EnIn_ChangeAnim(&this->skelAnime, ENIN_ANIM_6); } else { EnIn_ChangeAnim(&this->skelAnime, ENIN_ANIM_4); } - if (GET_RACE_FLAGS == RACE_FLAG_2) { + if (GET_WEEKEVENTREG_RACE_FLAGS == WEEKEVENTREG_RACE_FLAG_2) { this->skelAnime.curFrame = ((Rand_ZeroOne() * 0.6f) + 0.2f) * this->skelAnime.endFrame; } if (this->unk4AC & 8) { @@ -1408,8 +1410,8 @@ void EnIn_Init(Actor* thisx, PlayState* play) { this->actionFunc = func_808F5C98; } } else { - if (GET_RACE_FLAGS != RACE_FLAG_START) { - gSaveContext.save.weekEventReg[56] &= (u8)~8; + if (GET_WEEKEVENTREG_RACE_FLAGS != WEEKEVENTREG_RACE_FLAG_START) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_56_08); this->unk23C = 0; this->unk4AC |= 2; if (type == ENIN_BLUE_SHIRT) { @@ -1417,7 +1419,7 @@ void EnIn_Init(Actor* thisx, PlayState* play) { EnIn_ChangeAnim(&this->skelAnime, ENIN_ANIM_0); this->actionFunc = func_808F5A94; } else { - if (gSaveContext.save.weekEventReg[52] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01)) { Actor_Spawn(&play->actorCtx, play, ACTOR_EN_KANBAN, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, this->actor.shape.rot.x, this->actor.shape.rot.y, this->actor.shape.rot.z, 0xF); @@ -1428,7 +1430,7 @@ void EnIn_Init(Actor* thisx, PlayState* play) { } } } else { - if (gSaveContext.save.weekEventReg[52] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01)) { Actor_Kill(&this->actor); } else { EnIn_ChangeAnim(&this->skelAnime, ENIN_ANIM_7); @@ -1479,7 +1481,7 @@ void func_808F6334(EnIn* this, PlayState* play) { this->unk4C4 = CLAMP(this->unk4C4, 0.0f, 80.0f); Matrix_Translate(this->unk4C4, 0.0f, 0.0f, MTXMODE_APPLY); - if ((&this->actor == player->targetActor) && + if ((&this->actor == player->talkActor) && !((play->msgCtx.currentTextId >= 0xFF) && (play->msgCtx.currentTextId <= 0x200)) && (talkState == TEXT_STATE_3) && (this->prevTalkState == TEXT_STATE_3)) { if (!(play->state.frames & 1)) { diff --git a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c index ebb00dcb3..2c6a15737 100644 --- a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c +++ b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c @@ -830,7 +830,7 @@ s32 func_80B440B8(EnInvadepoh* this, f32 arg1, f32 arg2) { sp40 = temp_a3->x - sp48->x; sp3C = temp_a3->z - sp48->z; - sp1E = Math_FAtan2F(sp3C, sp40); + sp1E = Math_Atan2S_XY(sp3C, sp40); sp38 = Math_CosS(sp1E); sp34 = Math_SinS(sp1E); sp30 = this->actor.world.pos.x - sp48->x; @@ -1160,8 +1160,8 @@ s32 func_80B44C80(EnInvadepoh* this, PlayState* play) { } Math_SmoothStepToS(&this->actor.world.rot.y, - Math_FAtan2F(((sp60.z + temp_f0_2) * 0.9f) + sp6C.z, ((sp60.x + temp_f0_3) * 0.9f) + sp6C.x), 4, - 0xFA0, 0x64); + Math_Atan2S_XY(((sp60.z + temp_f0_2) * 0.9f) + sp6C.z, ((sp60.x + temp_f0_3) * 0.9f) + sp6C.x), + 4, 0xFA0, 0x64); Actor_MoveWithGravity(&this->actor); if (func_80B440B8(this, 50.0f, 15.0f)) { phi_v0 = 4; @@ -1283,7 +1283,7 @@ void func_80B451A0(EnInvadepoh* this, PlayState* play) { } if (D_80B4E940 == 0) { - if (gSaveContext.save.weekEventReg[22] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { D_80B4E940 = 3; } else { D_80B4E940 = 4; @@ -1745,8 +1745,9 @@ void EnInvadepoh_InitRomani(EnInvadepoh* this, PlayState* play) { if (this->bankIndex < 0) { Actor_Kill(&this->actor); } + if (temp == 5) { - if (gSaveContext.save.weekEventReg[22] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { Actor_Kill(&this->actor); return; } @@ -1762,7 +1763,7 @@ void EnInvadepoh_InitRomani(EnInvadepoh* this, PlayState* play) { return; } } else if (temp == 0xC) { - if (!(gSaveContext.save.weekEventReg[22] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { Actor_Kill(&this->actor); } D_80B503F4 = this; @@ -1817,7 +1818,7 @@ void EnInvadepoh_InitCremia(EnInvadepoh* this, PlayState* play) { if (this->bankIndex < 0) { Actor_Kill(&this->actor); } - if (!(gSaveContext.save.weekEventReg[22] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { Actor_Kill(&this->actor); } D_80B503F8 = this; @@ -1954,7 +1955,7 @@ void func_80B46FA8(EnInvadepoh* this, PlayState* play) { s32 i; if ((gSaveContext.save.time < CLOCK_TIME(6, 0)) && (gSaveContext.save.time >= CLOCK_TIME(5, 15))) { - gSaveContext.save.weekEventReg[22] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_22_01); func_80B47064(this); } else { func_80B457A0(this); @@ -2039,7 +2040,7 @@ void func_80B47298(EnInvadepoh* this, PlayState* play) { play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_72; gSaveContext.nextTransitionType = TRANS_TYPE_72; - gSaveContext.save.weekEventReg[89] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_89_10); func_80B47304(this); } @@ -3059,7 +3060,7 @@ void func_80B49DFC(EnInvadepoh* this, PlayState* play) { substruct->unk26.y = CLAMP(temp_v1, -0x1F40, 0x1F40); if (Actor_TextboxIsClosing(&this->actor, play)) { if (this->actor.textId == 0x332D) { - gSaveContext.save.weekEventReg[54] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_54_10); this->actor.textId = 0x332E; } func_80B49BD0(this); @@ -3084,8 +3085,8 @@ void func_80B49F88(Actor* thisx, PlayState* play) { func_80B44C24(this, play); func_80B43F0C(this); func_80B4516C(this); - if (0x20 & gSaveContext.save.weekEventReg[21]) { - if (gSaveContext.save.weekEventReg[54] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_21_20)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_54_10)) { this->actor.textId = 0x332E; } else { this->actor.textId = 0x332D; @@ -3286,7 +3287,7 @@ void func_80B4A81C(EnInvadepoh* this, PlayState* play) { if (Actor_TextboxIsClosing(&this->actor, play)) { if (this->actor.textId == 0x332D) { - gSaveContext.save.weekEventReg[54] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_54_10); this->actor.textId = 0x332E; } if (this->pathIndex == this->endPoint) { @@ -3325,8 +3326,8 @@ void func_80B4A9C8(Actor* thisx, PlayState* play) { func_80B43F0C(this); func_800B4AEC(play, &this->actor, 50.0f); func_80B4516C(this); - if (gSaveContext.save.weekEventReg[21] & 0x20) { - if (gSaveContext.save.weekEventReg[54] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_21_20)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_54_10)) { this->actor.textId = 0x332E; } else { this->actor.textId = 0x332D; @@ -3374,7 +3375,7 @@ void func_80B4ACDC(EnInvadepoh* this) { } void func_80B4ACF0(EnInvadepoh* this, PlayState* play) { - if (gSaveContext.save.weekEventReg[22] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { this->actor.draw = func_80B4E324; this->actor.flags |= (ACTOR_FLAG_1 | ACTOR_FLAG_8); func_80B4AD3C(this); @@ -3402,7 +3403,7 @@ void func_80B4ADB8(EnInvadepoh* this) { void func_80B4ADCC(EnInvadepoh* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { if (this->textId == 0x3331) { - if (gSaveContext.save.weekEventReg[22] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_02)) { EnInvadepoh_SetTextID(this, play, 0x3334); func_80151BB4(play, 0x1D); func_80151BB4(play, 5); @@ -3434,7 +3435,7 @@ void func_80B4AEDC(EnInvadepoh* this, PlayState* play) { } if (Actor_HasParent(&this->actor, play)) { this->actor.parent = NULL; - gSaveContext.save.weekEventReg[22] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_22_02); func_80B4AF80(this); } else { Actor_PickUp(&this->actor, play, GI_MILK_BOTTLE, 2000.0f, 2000.0f); @@ -3453,7 +3454,7 @@ void func_80B4AF94(EnInvadepoh* this, PlayState* play) { func_80151BB4(play, 5); func_80B4ADB8(this); } else { - func_800B85E0(&this->actor, play, 2000.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 2000.0f, PLAYER_IA_MINUS1); } } @@ -4525,7 +4526,7 @@ void func_80B4E3F0(Actor* thisx, PlayState* play) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetPrimColor(POLY_XLU_DISP++, 0xFF, 0x80, 255, 255, 0, 180); gDPSetEnvColor(POLY_XLU_DISP++, 255, 50, 0, 0); - gSPDisplayList(POLY_XLU_DISP++, gOwlStatueWhiteFlashDL); + gSPDisplayList(POLY_XLU_DISP++, gEffFlash1DL); if (func_80B456A8(play, &sp5C)) { func_800F9824(play, &play->envCtx, &play->view, play->state.gfxCtx, sp5C, 20.0f, 9.0f, 0, 0); } diff --git a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c index f0d7f380a..f911bc4f4 100644 --- a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c +++ b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c @@ -318,7 +318,7 @@ void func_8095DFF0(EnIshi* this, PlayState* play) { Matrix_MultVecY(1.0f, &sp30); sp2C = Math3D_Parallel(&sp30, &D_8095F778); if (sp2C < 0.707f) { - temp_v1_2 = Math_FAtan2F(sp30.z, sp30.x) - sp3C->world.rot.y; + temp_v1_2 = Math_Atan2S_XY(sp30.z, sp30.x) - sp3C->world.rot.y; if (ABS_ALT(temp_v1_2) > 0x4000) { sp3C->world.rot.y = BINANG_ROT180(sp3C->world.rot.y); } diff --git a/src/overlays/actors/ovl_En_Ja/z_en_ja.c b/src/overlays/actors/ovl_En_Ja/z_en_ja.c index a4b81ab5a..84857fdfe 100644 --- a/src/overlays/actors/ovl_En_Ja/z_en_ja.c +++ b/src/overlays/actors/ovl_En_Ja/z_en_ja.c @@ -177,7 +177,7 @@ s32 func_80BC1B60(EnJa* this, PlayState* play) { this->unk_35A = CLAMP(this->unk_35A, -0x1C70, 0x1C70); if (this->unk_1D8.player->actor.id == ACTOR_PLAYER) { - sp40.y = this->unk_1D8.player->bodyPartsPos[7].y + 3.0f; + sp40.y = this->unk_1D8.player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; } else { Math_Vec3f_Copy(&sp40, &this->unk_1D8.player->actor.focus.pos); } @@ -220,7 +220,7 @@ void func_80BC1E40(EnJa* this, PlayState* play) { f32 phi_f0; if (((play->msgCtx.currentTextId < 0xFF) || (play->msgCtx.currentTextId > 0x200)) && (talkState == TEXT_STATE_3) && - (this->prevTalkState == TEXT_STATE_3) && (&this->actor == player->targetActor)) { + (this->prevTalkState == TEXT_STATE_3) && (&this->actor == player->talkActor)) { if ((play->state.frames % 2) == 0) { if (this->unk_348 != 0.0f) { this->unk_348 = 0.0f; @@ -385,7 +385,7 @@ void EnJa_Update(Actor* thisx, PlayState* play) { radius = this->collider.dim.radius + 30; height = this->collider.dim.height + 10; - func_8013C964(&this->actor, play, radius, height, PLAYER_AP_NONE, this->unk_340 & 7); + func_8013C964(&this->actor, play, radius, height, PLAYER_IA_NONE, this->unk_340 & 7); if (this->unk_1D8.unk_00 != 2) { Actor_MoveWithGravity(&this->actor); diff --git a/src/overlays/actors/ovl_En_Jc_Mato/z_en_jc_mato.c b/src/overlays/actors/ovl_En_Jc_Mato/z_en_jc_mato.c index bd9a45e11..03cc41f20 100644 --- a/src/overlays/actors/ovl_En_Jc_Mato/z_en_jc_mato.c +++ b/src/overlays/actors/ovl_En_Jc_Mato/z_en_jc_mato.c @@ -140,7 +140,7 @@ void EnJcMato_Update(Actor* thisx, PlayState* play) { EnJcMato* this = THIS; this->actionFunc(this, play); - if (!(gSaveContext.eventInf[4] & 1)) { + if (!CHECK_EVENTINF(EVENTINF_40)) { EnJcMato_CheckForHit(this, play); } } diff --git a/src/overlays/actors/ovl_En_Jg/z_en_jg.c b/src/overlays/actors/ovl_En_Jg/z_en_jg.c index 259d58b18..e7c2ad78d 100644 --- a/src/overlays/actors/ovl_En_Jg/z_en_jg.c +++ b/src/overlays/actors/ovl_En_Jg/z_en_jg.c @@ -214,7 +214,7 @@ s16 EnJg_GetWalkingYRotation(Path* path, s32 pointIndex, Vec3f* pos, f32* distSQ *distSQ = SQ(diffX) + SQ(diffZ); - return RADF_TO_BINANG(Math_Acot2F(diffZ, diffX)); + return RADF_TO_BINANG(Math_Atan2F_XY(diffZ, diffX)); } s32 EnJg_ReachedPoint(EnJg* this, Path* path, s32 pointIndex) { @@ -493,14 +493,14 @@ void EnJg_Talk(EnJg* this, PlayState* play) { temp = this->textId; if ((temp == 0xDBB) || (temp == 0xDBC)) { - if (!(gSaveContext.save.weekEventReg[24] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_24_80)) { // The player hasn't talked to the Goron Child at least once, so they can't learn // the Lullaby Intro. End the current conversation with the player. play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; this->flags &= ~FLAG_LOOKING_AT_PLAYER; this->actionFunc = EnJg_SetupWalk; - } else if (((gSaveContext.save.weekEventReg[24] & 0x40)) || + } else if ((CHECK_WEEKEVENTREG(WEEKEVENTREG_24_40)) || (CHECK_QUEST_ITEM(QUEST_SONG_LULLABY) || CHECK_QUEST_ITEM(QUEST_SONG_LULLABY_INTRO))) { // The player already has the Lullaby or Lullaby Intro, so say "I'm counting on you" this->textId = EnJg_GetNextTextId(this); @@ -700,7 +700,7 @@ void EnJg_LullabyIntroCutsceneAction(EnJg* this, PlayState* play) { } else { this->csAction = 99; this->freezeTimer = 1000; - gSaveContext.save.weekEventReg[24] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_24_40); this->actionFunc = EnJg_Idle; } } @@ -830,7 +830,7 @@ s32 EnJg_GetNextTextId(EnJg* this) { return 0xDDC; // Everyone would accept you case 0xDDC: // Everyone would accept you - gSaveContext.save.weekEventReg[77] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_77_80); return 0xDDD; // Think it over slowly default: @@ -848,7 +848,7 @@ s32 EnJg_GetStartingConversationTextId(EnJg* this, PlayState* play) { if (!EN_JG_IS_IN_GORON_SHRINE(&this->actor)) { if (player->transformation == PLAYER_FORM_GORON) { - if ((gSaveContext.save.weekEventReg[24] & 0x10) || CHECK_QUEST_ITEM(QUEST_SONG_LULLABY) || + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_24_10) || CHECK_QUEST_ITEM(QUEST_SONG_LULLABY) || CHECK_QUEST_ITEM(QUEST_SONG_LULLABY_INTRO)) { // The player has already talked as a Goron at least once. return 0xDBC; // Following me won't do you any good @@ -858,7 +858,7 @@ s32 EnJg_GetStartingConversationTextId(EnJg* this, PlayState* play) { return 0xDB6; // "Hunh???" } - if (gSaveContext.save.weekEventReg[24] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_24_20)) { // The player has already talked as a non-Goron at least once. return 0xDB5; // This is our problem (repeat) } @@ -868,7 +868,7 @@ s32 EnJg_GetStartingConversationTextId(EnJg* this, PlayState* play) { } if (player->transformation == PLAYER_FORM_GORON) { - if (gSaveContext.save.weekEventReg[77] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_77_80)) { // The player has heard the Goron Shrine cheer as a Goron at least once. return 0xDDE; // Come back after entering the race } @@ -908,9 +908,9 @@ void EnJg_CheckIfTalkingToPlayerAndHandleFreezeTimer(EnJg* this, PlayState* play if (this->textId == 0xDAC) { this->action = EN_JG_ACTION_FIRST_THAW; } else if (this->textId == 0xDAE) { - gSaveContext.save.weekEventReg[24] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_24_20); } else if (this->textId == 0xDB6) { - gSaveContext.save.weekEventReg[24] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_24_10); } Message_StartTextbox(play, this->textId, &this->actor); diff --git a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c index 084c6edc2..ed745bf96 100644 --- a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c +++ b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c @@ -141,7 +141,7 @@ void EnJgameTsn_Destroy(Actor* thisx, PlayState* play) { EnJgameTsn* this = THIS; Collider_DestroyCylinder(play, &this->collider); - gSaveContext.save.weekEventReg[90] &= (u8)~0x20; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_20); } void func_80C13B74(EnJgameTsn* this) { @@ -286,7 +286,7 @@ void func_80C1410C(EnJgameTsn* this, PlayState* play) { func_801A2BB8(0x25); play->interfaceCtx.minigameState = MINIGAME_STATE_COUNTDOWN_SETUP_3; Interface_InitMinigame(play); - gSaveContext.save.weekEventReg[90] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_90_20); Interface_StartTimer(TIMER_ID_MINIGAME_2, 120); this->actionFunc = func_80C1418C; } @@ -379,11 +379,11 @@ void func_80C14540(EnJgameTsn* this) { void func_80C14554(EnJgameTsn* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { - if (!(gSaveContext.save.weekEventReg[82] & 0x10)) { - gSaveContext.save.weekEventReg[82] |= 0x10; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_82_10)) { + SET_WEEKEVENTREG(WEEKEVENTREG_82_10); } func_80C145FC(this); - } else if (gSaveContext.save.weekEventReg[82] & 0x10) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_82_10)) { Actor_PickUp(&this->actor, play, GI_RUPEE_PURPLE, 500.0f, 100.0f); } else { Actor_PickUp(&this->actor, play, GI_HEART_PIECE, 500.0f, 100.0f); @@ -480,7 +480,7 @@ void func_80C147B4(EnJgameTsn* this, PlayState* play) { func_801477B4(play); gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; - gSaveContext.save.weekEventReg[90] &= (u8)~0x20; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_20); func_80C144E4(this); break; diff --git a/src/overlays/actors/ovl_En_Js/z_en_js.c b/src/overlays/actors/ovl_En_Js/z_en_js.c index 51296413e..d36bbb6c3 100644 --- a/src/overlays/actors/ovl_En_Js/z_en_js.c +++ b/src/overlays/actors/ovl_En_Js/z_en_js.c @@ -112,9 +112,9 @@ void EnJs_Init(Actor* thisx, PlayState* play) { Animation_PlayLoop(&this->skelAnime, &gMoonChildSittingAnim); func_8016566C(0x3C); - if (gSaveContext.save.weekEventReg[84] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_84_20)) { Inventory_DeleteItem(ITEM_MASK_FIERCE_DEITY, SLOT(ITEM_MASK_FIERCE_DEITY)); - gSaveContext.save.weekEventReg[84] &= (u8)~0x20; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_84_20); } break; case 1: @@ -372,34 +372,34 @@ s32 EnJs_GetRemainingMasks(void) { return count; } -void EnJs_TakeMask(s32 actionParams, s32 childType) { +void EnJs_TakeMask(s32 itemActions, s32 childType) { u8* masksGivenOnMoon = gSaveContext.masksGivenOnMoon; s32 temp = 0; if ((childType >= 0) && (childType < 9)) { - actionParams -= PLAYER_AP_MASK_TRUTH; + itemActions -= PLAYER_IA_MASK_TRUTH; childType *= 3; - if (actionParams < 8) { - masksGivenOnMoon[childType] |= 1 << actionParams; - masksGivenOnMoon[temp] |= 1 << actionParams; + if (itemActions < 8) { + masksGivenOnMoon[childType] |= 1 << itemActions; + masksGivenOnMoon[temp] |= 1 << itemActions; return; } - actionParams -= 8; + itemActions -= 8; childType++; temp++; - if (actionParams < 8) { - masksGivenOnMoon[childType] |= 1 << actionParams; - masksGivenOnMoon[temp] |= 1 << actionParams; + if (itemActions < 8) { + masksGivenOnMoon[childType] |= 1 << itemActions; + masksGivenOnMoon[temp] |= 1 << itemActions; return; } - actionParams -= 8; + itemActions -= 8; childType++; temp++; - if (actionParams < 6) { - masksGivenOnMoon[childType] |= 1 << actionParams; - masksGivenOnMoon[temp] |= 1 << actionParams; + if (itemActions < 6) { + masksGivenOnMoon[childType] |= 1 << itemActions; + masksGivenOnMoon[temp] |= 1 << itemActions; } } } @@ -529,34 +529,36 @@ void func_8096971C(EnJs* this, PlayState* play) { } void func_80969748(EnJs* this, PlayState* play) { - s32 itemActionParam; + PlayerItemAction itemAction; Player* player = GET_PLAYER(play); SkelAnime_Update(&this->skelAnime); Math_SmoothStepToS(&this->actor.world.rot.y, this->actor.yawTowardsPlayer, 6, 0x1838, 0x64); this->actor.shape.rot.y = this->actor.world.rot.y; if (Message_GetState(&play->msgCtx) == TEXT_STATE_16) { - itemActionParam = func_80123810(play); - if (itemActionParam != PLAYER_AP_NONE) { + itemAction = func_80123810(play); + + if (itemAction != PLAYER_IA_NONE) { this->actionFunc = func_80969898; } - if (itemActionParam > PLAYER_AP_NONE) { + if (itemAction > PLAYER_IA_NONE) { func_801477B4(play); - if ((itemActionParam >= PLAYER_AP_MASK_TRUTH) && (itemActionParam <= PLAYER_AP_MASK_GIANT)) { - EnJs_TakeMask(itemActionParam, ENJS_GET_TYPE(&this->actor)); - Inventory_UnequipItem(itemActionParam - 4); + if ((itemAction >= PLAYER_IA_MASK_TRUTH) && (itemAction <= PLAYER_IA_MASK_GIANT)) { + EnJs_TakeMask(itemAction, ENJS_GET_TYPE(&this->actor)); + Inventory_UnequipItem(itemAction - 4); if (!func_809692A8(ENJS_GET_TYPE(&this->actor))) { player->actor.textId = 0x2212; } else { player->actor.textId = 0x2213; } - } else if ((itemActionParam >= PLAYER_AP_MASK_FIERCE_DEITY) && (itemActionParam <= PLAYER_AP_MASK_DEKU)) { + } else if ((itemAction >= PLAYER_IA_MASK_FIERCE_DEITY) && (itemAction <= PLAYER_IA_MASK_DEKU)) { player->actor.textId = 0x2211; } else { player->actor.textId = 0x2210; } } - if (itemActionParam <= PLAYER_AP_MINUS1) { + + if (itemAction <= PLAYER_IA_MINUS1) { func_80151938(play, 0x2216); } } @@ -606,7 +608,7 @@ void func_80969898(EnJs* this, PlayState* play) { case 0x2210: case 0x2211: case 0x2212: - player->exchangeItemId = PLAYER_AP_NONE; + player->exchangeItemId = PLAYER_IA_NONE; func_80151938(play, 0xFF); this->actionFunc = func_80969748; break; @@ -675,34 +677,37 @@ void func_80969B5C(EnJs* this, PlayState* play) { } void func_80969C54(EnJs* this, PlayState* play) { - s32 itemActionParam; + PlayerItemAction itemAction; Player* player = GET_PLAYER(play); SkelAnime_Update(&this->skelAnime); Math_SmoothStepToS(&this->actor.world.rot.y, this->actor.yawTowardsPlayer, 6, 0x1838, 0x64); this->actor.shape.rot.y = this->actor.world.rot.y; if (Message_GetState(&play->msgCtx) == TEXT_STATE_16) { - itemActionParam = func_80123810(play); - if (itemActionParam != PLAYER_AP_NONE) { + itemAction = func_80123810(play); + + if (itemAction != PLAYER_IA_NONE) { this->actionFunc = func_80969DA4; } - if (itemActionParam > PLAYER_AP_NONE) { + + if (itemAction > PLAYER_IA_NONE) { func_801477B4(play); - if ((itemActionParam >= PLAYER_AP_MASK_TRUTH) && (itemActionParam <= PLAYER_AP_MASK_GIANT)) { - EnJs_TakeMask(itemActionParam, ENJS_GET_TYPE(&this->actor)); - Inventory_UnequipItem(itemActionParam - 4); + if ((itemAction >= PLAYER_IA_MASK_TRUTH) && (itemAction <= PLAYER_IA_MASK_GIANT)) { + EnJs_TakeMask(itemAction, ENJS_GET_TYPE(&this->actor)); + Inventory_UnequipItem(itemAction - 4); if (!func_809692A8(ENJS_GET_TYPE(&this->actor))) { player->actor.textId = 0x2221; } else { player->actor.textId = 0x2222; } - } else if ((itemActionParam >= PLAYER_AP_MASK_FIERCE_DEITY) && (itemActionParam <= PLAYER_AP_MASK_DEKU)) { + } else if ((itemAction >= PLAYER_IA_MASK_FIERCE_DEITY) && (itemAction <= PLAYER_IA_MASK_DEKU)) { player->actor.textId = 0x2220; } else { player->actor.textId = 0x221D; } } - if (itemActionParam <= PLAYER_AP_MINUS1) { + + if (itemAction <= PLAYER_IA_MINUS1) { func_80151938(play, 0x221E); } } @@ -760,7 +765,7 @@ void func_80969DA4(EnJs* this, PlayState* play) { } break; case 0x2222: - player->exchangeItemId = PLAYER_AP_NONE; + player->exchangeItemId = PLAYER_IA_NONE; func_80151938(play, play->msgCtx.currentTextId + 1); break; case 0x2223: @@ -786,7 +791,7 @@ void func_80969DA4(EnJs* this, PlayState* play) { case 0x221D: case 0x2220: case 0x2221: - player->exchangeItemId = PLAYER_AP_NONE; + player->exchangeItemId = PLAYER_IA_NONE; func_80151938(play, 0xFF); this->actionFunc = func_80969C54; break; @@ -850,10 +855,10 @@ void func_8096A1E8(EnJs* this, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_10000; this->actionFunc = func_8096A38C; Message_StartTextbox(play, 0x2208, &this->actor); - gSaveContext.save.weekEventReg[84] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_84_20); func_809696EC(this, 0); } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -865,7 +870,7 @@ void func_8096A2C0(EnJs* this, PlayState* play) { this->actor.parent = NULL; this->actor.flags |= ACTOR_FLAG_10000; this->actionFunc = func_8096A1E8; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { Actor_PickUp(&this->actor, play, GI_MASK_FIERCE_DEITY, 10000.0f, 1000.0f); } diff --git a/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c b/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c index 3057328ce..da327642b 100644 --- a/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c +++ b/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c @@ -12,43 +12,141 @@ void EnKaizoku_Init(Actor* thisx, PlayState* play); void EnKaizoku_Destroy(Actor* thisx, PlayState* play); -void EnKaizoku_Update(Actor* thisx, PlayState* play); +void EnKaizoku_Update(Actor* thisx, PlayState* play2); +void EnKaizoku_Draw(Actor* thisx, PlayState* play); -#if 0 -// static DamageTable sDamageTable = { -static DamageTable D_80B8AB3C = { - /* Deku Nut */ DMG_ENTRY(0, 0x1), - /* Deku Stick */ DMG_ENTRY(1, 0xF), - /* Horse trample */ DMG_ENTRY(0, 0x0), - /* Explosives */ DMG_ENTRY(1, 0xF), - /* Zora boomerang */ DMG_ENTRY(0, 0x1), - /* Normal arrow */ DMG_ENTRY(1, 0xF), - /* UNK_DMG_0x06 */ DMG_ENTRY(0, 0x0), - /* Hookshot */ DMG_ENTRY(0, 0x1), - /* Goron punch */ DMG_ENTRY(1, 0xE), - /* Sword */ DMG_ENTRY(1, 0xE), - /* Goron pound */ DMG_ENTRY(0, 0xD), - /* Fire arrow */ DMG_ENTRY(2, 0x2), - /* Ice arrow */ DMG_ENTRY(2, 0x3), - /* Light arrow */ DMG_ENTRY(2, 0x4), - /* Goron spikes */ DMG_ENTRY(1, 0xE), - /* Deku spin */ DMG_ENTRY(0, 0x1), - /* Deku bubble */ DMG_ENTRY(1, 0xE), - /* Deku launch */ DMG_ENTRY(2, 0xE), - /* UNK_DMG_0x12 */ DMG_ENTRY(0, 0x1), - /* Zora barrier */ DMG_ENTRY(0, 0x5), - /* Normal shield */ DMG_ENTRY(0, 0x0), - /* Light ray */ DMG_ENTRY(0, 0x0), - /* Thrown object */ DMG_ENTRY(1, 0xE), - /* Zora punch */ DMG_ENTRY(1, 0xE), - /* Spin attack */ DMG_ENTRY(1, 0xD), - /* Sword beam */ DMG_ENTRY(0, 0x0), - /* Normal Roll */ DMG_ENTRY(0, 0x0), - /* UNK_DMG_0x1B */ DMG_ENTRY(0, 0x0), - /* UNK_DMG_0x1C */ DMG_ENTRY(0, 0x0), - /* Unblockable */ DMG_ENTRY(0, 0x0), - /* UNK_DMG_0x1E */ DMG_ENTRY(0, 0x0), - /* Powder Keg */ DMG_ENTRY(1, 0xE), +s32 EnKaizoku_ValidatePictograph(PlayState* play, Actor* actor); +void func_80B85F48(EnKaizoku* this); +void func_80B85FA8(EnKaizoku* this, PlayState* play); +void func_80B868B8(EnKaizoku* this, PlayState* play); +void func_80B86B58(EnKaizoku* this); +void func_80B86B74(EnKaizoku* this, PlayState* play); +void func_80B872A4(EnKaizoku* this); +void func_80B872F4(EnKaizoku* this, PlayState* play); +void func_80B874D8(EnKaizoku* this, PlayState* play); +void func_80B8760C(EnKaizoku* this, PlayState* play); +void func_80B87900(EnKaizoku* this); +void func_80B8798C(EnKaizoku* this, PlayState* play); +void func_80B87C7C(EnKaizoku* this); +void func_80B87CF8(PlayState* play, Vec3f* pos); +void func_80B87D3C(EnKaizoku* this, PlayState* play); +void func_80B87E28(EnKaizoku* this); +void func_80B87E9C(EnKaizoku* this, PlayState* play); +void func_80B87F70(EnKaizoku* this); +void func_80B87FDC(EnKaizoku* this, PlayState* play2); +void func_80B88214(EnKaizoku* this); +void func_80B88278(EnKaizoku* this, PlayState* play); +void func_80B8833C(EnKaizoku* this); +void func_80B88378(EnKaizoku* this, PlayState* play); +void func_80B88770(EnKaizoku* this); +void func_80B887AC(EnKaizoku* this, PlayState* play); +void func_80B88910(EnKaizoku* this); +void func_80B88964(EnKaizoku* this, PlayState* play); +void func_80B88CD8(EnKaizoku* this); +void func_80B88D6C(EnKaizoku* this, PlayState* play); +void func_80B89280(EnKaizoku* this, PlayState* play); +void func_80B894C0(EnKaizoku* this, PlayState* play); +void func_80B8971C(EnKaizoku* this, PlayState* play); + +typedef enum EnKaizokuAction { + /* 0 */ KAIZOKU_ACTION_0, + /* 1 */ KAIZOKU_ACTION_1, + /* 2 */ KAIZOKU_ACTION_2, + /* 3 */ KAIZOKU_ACTION_3, + /* 4 */ KAIZOKU_ACTION_4, + /* 5 */ KAIZOKU_ACTION_5, + /* 6 */ KAIZOKU_ACTION_6, + /* 7 */ KAIZOKU_ACTION_7, + /* 8 */ KAIZOKU_ACTION_8, + /* 9 */ KAIZOKU_ACTION_9, + /* 10 */ KAIZOKU_ACTION_10, + /* 11 */ KAIZOKU_ACTION_11, + /* 12 */ KAIZOKU_ACTION_12, + /* 13 */ KAIZOKU_ACTION_13, + /* 14 */ KAIZOKU_ACTION_14, + /* 15 */ KAIZOKU_ACTION_15, + /* 16 */ KAIZOKU_ACTION_16 +} EnKaizokuAction; + +u16 D_80B8A8D0[] = { + 0x11A4, 0x11A5, 0x11A6, 0x11A7, 0x11A8, 0x11A9, 0x11AA, 0x11AB, 0x11AC, 0x11AD, +}; + +Vec3f D_80B8A8E4[] = { + { -70.0f, 9.0f, 30.0f }, { -70.0f, 9.0f, 30.0f }, { -70.0f, 9.0f, 30.0f }, { 41.0f, 55.0f, 11.0f }, + { 41.0f, 55.0f, 11.0f }, { 70.0f, 45.0f, 35.0f }, { 80.0f, 45.0f, 25.0f }, { 0.0f, 0.0f, 0.0f }, + { -70.0f, 9.0f, 30.0f }, { -70.0f, 9.0f, 30.0f }, { -70.0f, 9.0f, 30.0f }, { 41.0f, 55.0f, 11.0f }, + { 41.0f, 55.0f, 11.0f }, { 70.0f, 45.0f, 25.0f }, { 80.0f, 45.0f, 25.0f }, { 0.0f, 0.0f, 0.0f }, + { 90.0f, 9.0f, -30.0f }, { 90.0f, 9.0f, -30.0f }, { 90.0f, 9.0f, -30.0f }, { -41.0f, 55.0f, -11.0f }, + { -41.0f, 55.0f, -11.0f }, { -70.0f, 45.0f, -25.0f }, { -80.0f, 45.0f, -25.0f }, { 0.0f, 0.0f, 0.0f }, +}; + +Vec3f D_80B8AA04[] = { + { 120.0f, 60.0f, -20.0f }, { 120.0f, 60.0f, -20.0f }, { 120.0f, 60.0f, -20.0f }, { -470.0f, 30.0f, -140.0f }, + { -470.0f, 30.0f, -140.0f }, { -410.0f, 80.0f, -130.0f }, { -410.0f, 80.0f, -130.0f }, { 0.0f, 0.0f, 0.0f }, + { 120.0f, 60.0f, -20.0f }, { 120.0f, 60.0f, -20.0f }, { 120.0f, 60.0f, -20.0f }, { -470.0f, 30.0f, -140.0f }, + { -470.0f, 30.0f, -140.0f }, { -410.0f, 80.0f, -130.0f }, { -410.0f, 80.0f, -130.0f }, { 0.0f, 0.0f, 0.0f }, + { -120.0f, 60.0f, 20.0f }, { -120.0f, 60.0f, 20.0f }, { -120.0f, 60.0f, 20.0f }, { 470.0f, 30.0f, 140.0f }, + { 470.0f, 30.0f, 140.0f }, { 410.0f, 80.0f, 130.0f }, { 410.0f, 80.0f, 130.0f }, { 0.0f, 0.0f, 0.0f }, +}; + +Color_RGBA8 D_80B8AB24[] = { + { 255, 255, 90, 255 }, + { 55, 25, 80, 255 }, + { 5, 195, 110, 255 }, +}; + +Color_RGBA8 D_80B8AB30[] = { + { 255, 130, 10, 255 }, + { 185, 130, 210, 255 }, + { 135, 195, 80, 255 }, +}; + +typedef enum EnKaizokuDamageEffect { + /* 0x0 */ KAIZOKU_DMGEFF_NONE, + /* 0x1 */ KAIZOKU_DMGEFF_1, + /* 0x2 */ KAIZOKU_DMGEFF_2, + /* 0x3 */ KAIZOKU_DMGEFF_FREEZE, + /* 0x4 */ KAIZOKU_DMGEFF_4, + /* 0x5 */ KAIZOKU_DMGEFF_5, + /* 0xD */ KAIZOKU_DMGEFF_D = 0xD, + /* 0xE */ KAIZOKU_DMGEFF_E, + /* 0xF */ KAIZOKU_DMGEFF_F +} EnKaizokuDamageEffect; + +static DamageTable sDamageTable = { + /* Deku Nut */ DMG_ENTRY(0, KAIZOKU_DMGEFF_1), + /* Deku Stick */ DMG_ENTRY(1, KAIZOKU_DMGEFF_F), + /* Horse trample */ DMG_ENTRY(0, KAIZOKU_DMGEFF_NONE), + /* Explosives */ DMG_ENTRY(1, KAIZOKU_DMGEFF_F), + /* Zora boomerang */ DMG_ENTRY(0, KAIZOKU_DMGEFF_1), + /* Normal arrow */ DMG_ENTRY(1, KAIZOKU_DMGEFF_F), + /* UNK_DMG_0x06 */ DMG_ENTRY(0, KAIZOKU_DMGEFF_NONE), + /* Hookshot */ DMG_ENTRY(0, KAIZOKU_DMGEFF_1), + /* Goron punch */ DMG_ENTRY(1, KAIZOKU_DMGEFF_E), + /* Sword */ DMG_ENTRY(1, KAIZOKU_DMGEFF_E), + /* Goron pound */ DMG_ENTRY(0, KAIZOKU_DMGEFF_D), + /* Fire arrow */ DMG_ENTRY(2, KAIZOKU_DMGEFF_2), + /* Ice arrow */ DMG_ENTRY(2, KAIZOKU_DMGEFF_FREEZE), + /* Light arrow */ DMG_ENTRY(2, KAIZOKU_DMGEFF_4), + /* Goron spikes */ DMG_ENTRY(1, KAIZOKU_DMGEFF_E), + /* Deku spin */ DMG_ENTRY(0, KAIZOKU_DMGEFF_1), + /* Deku bubble */ DMG_ENTRY(1, KAIZOKU_DMGEFF_E), + /* Deku launch */ DMG_ENTRY(2, KAIZOKU_DMGEFF_E), + /* UNK_DMG_0x12 */ DMG_ENTRY(0, KAIZOKU_DMGEFF_1), + /* Zora barrier */ DMG_ENTRY(0, KAIZOKU_DMGEFF_5), + /* Normal shield */ DMG_ENTRY(0, KAIZOKU_DMGEFF_NONE), + /* Light ray */ DMG_ENTRY(0, KAIZOKU_DMGEFF_NONE), + /* Thrown object */ DMG_ENTRY(1, KAIZOKU_DMGEFF_E), + /* Zora punch */ DMG_ENTRY(1, KAIZOKU_DMGEFF_E), + /* Spin attack */ DMG_ENTRY(1, KAIZOKU_DMGEFF_D), + /* Sword beam */ DMG_ENTRY(0, KAIZOKU_DMGEFF_NONE), + /* Normal Roll */ DMG_ENTRY(0, KAIZOKU_DMGEFF_NONE), + /* UNK_DMG_0x1B */ DMG_ENTRY(0, KAIZOKU_DMGEFF_NONE), + /* UNK_DMG_0x1C */ DMG_ENTRY(0, KAIZOKU_DMGEFF_NONE), + /* Unblockable */ DMG_ENTRY(0, KAIZOKU_DMGEFF_NONE), + /* UNK_DMG_0x1E */ DMG_ENTRY(0, KAIZOKU_DMGEFF_NONE), + /* Powder Keg */ DMG_ENTRY(1, KAIZOKU_DMGEFF_E), }; ActorInit En_Kaizoku_InitVars = { @@ -63,120 +161,2001 @@ ActorInit En_Kaizoku_InitVars = { (ActorFunc)NULL, }; -// static ColliderCylinderInit sCylinderInit = { -static ColliderCylinderInit D_80B8AB7C = { - { COLTYPE_NONE, AT_NONE, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, }, - { ELEMTYPE_UNK4, { 0x00000000, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON | BUMP_HOOKABLE, OCELEM_ON, }, +static ColliderCylinderInit sCylinderInit = { + { + COLTYPE_NONE, + AT_NONE, + AC_ON | AC_TYPE_PLAYER, + OC1_ON | OC1_TYPE_ALL, + OC2_TYPE_1, + COLSHAPE_CYLINDER, + }, + { + ELEMTYPE_UNK4, + { 0x00000000, 0x00, 0x00 }, + { 0xF7CFFFFF, 0x00, 0x00 }, + TOUCH_NONE | TOUCH_SFX_NORMAL, + BUMP_ON | BUMP_HOOKABLE, + OCELEM_ON, + }, { 20, 50, 0, { 0, 0, 0 } }, }; -// static ColliderQuadInit sQuadInit = { -static ColliderQuadInit D_80B8ABA8 = { - { COLTYPE_NONE, AT_ON | AT_TYPE_PLAYER | AT_TYPE_ENEMY, AC_NONE, OC1_NONE, OC2_NONE, COLSHAPE_QUAD, }, - { ELEMTYPE_UNK4, { 0xF7CFFFFF, 0x00, 0x00 }, { 0x00000000, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL | TOUCH_UNK7, BUMP_NONE, OCELEM_NONE, }, +static ColliderQuadInit sQuadInit = { + { + COLTYPE_NONE, + AT_ON | AT_TYPE_PLAYER | AT_TYPE_ENEMY, + AC_NONE, + OC1_NONE, + OC2_NONE, + COLSHAPE_QUAD, + }, + { + ELEMTYPE_UNK4, + { 0xF7CFFFFF, 0x00, 0x00 }, + { 0x00000000, 0x00, 0x00 }, + TOUCH_ON | TOUCH_SFX_NORMAL | TOUCH_UNK7, + BUMP_NONE, + OCELEM_NONE, + }, { { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } }, }; -#endif +static AnimationHeader* sAnimations[EN_KAIZOKU_ANIM_MAX] = { + &object_kz_Anim_00F8E4, // EN_KAIZOKU_ANIM_0 + &object_kz_Anim_00EF9C, // EN_KAIZOKU_ANIM_1 + &object_kz_Anim_00E1C8, // EN_KAIZOKU_ANIM_2 + &object_kz_Anim_00DBE4, // EN_KAIZOKU_ANIM_3 + &object_kz_Anim_0058B8, // EN_KAIZOKU_ANIM_4 + &object_kz_Anim_004860, // EN_KAIZOKU_ANIM_5 + &object_kz_Anim_002730, // EN_KAIZOKU_ANIM_6 + &object_kz_Anim_001578, // EN_KAIZOKU_ANIM_7 + &object_kz_Anim_001390, // EN_KAIZOKU_ANIM_8 + &object_kz_Anim_0003CC, // EN_KAIZOKU_ANIM_9 + &object_kz_Anim_000F5C, // EN_KAIZOKU_ANIM_10 + &object_kz_Anim_00E8BC, // EN_KAIZOKU_ANIM_11 + &object_kz_Anim_00ED1C, // EN_KAIZOKU_ANIM_12 + &object_kz_Anim_005644, // EN_KAIZOKU_ANIM_13 + &object_kz_Anim_00F288, // EN_KAIZOKU_ANIM_14 + &object_kz_Anim_0043E4, // EN_KAIZOKU_ANIM_15 + &object_kz_Anim_003A3C, // EN_KAIZOKU_ANIM_16 + &object_kz_Anim_002BA0, // EN_KAIZOKU_ANIM_17 + &object_kz_Anim_001E9C, // EN_KAIZOKU_ANIM_18 +}; -extern DamageTable D_80B8AB3C; -extern ColliderCylinderInit D_80B8AB7C; -extern ColliderQuadInit D_80B8ABA8; +static u8 sAnimationModes[EN_KAIZOKU_ANIM_MAX] = { + ANIMMODE_LOOP, // EN_KAIZOKU_ANIM_0 + ANIMMODE_LOOP, // EN_KAIZOKU_ANIM_1 + ANIMMODE_ONCE, // EN_KAIZOKU_ANIM_2 + ANIMMODE_LOOP, // EN_KAIZOKU_ANIM_3 + ANIMMODE_LOOP, // EN_KAIZOKU_ANIM_4 + ANIMMODE_ONCE, // EN_KAIZOKU_ANIM_5 + ANIMMODE_ONCE, // EN_KAIZOKU_ANIM_6 + ANIMMODE_ONCE, // EN_KAIZOKU_ANIM_7 + ANIMMODE_ONCE, // EN_KAIZOKU_ANIM_8 + ANIMMODE_ONCE, // EN_KAIZOKU_ANIM_9 + ANIMMODE_ONCE, // EN_KAIZOKU_ANIM_10 + ANIMMODE_ONCE, // EN_KAIZOKU_ANIM_11 + ANIMMODE_LOOP, // EN_KAIZOKU_ANIM_12 + ANIMMODE_ONCE, // EN_KAIZOKU_ANIM_13 + ANIMMODE_ONCE, // EN_KAIZOKU_ANIM_14 + ANIMMODE_ONCE, // EN_KAIZOKU_ANIM_15 + ANIMMODE_ONCE, // EN_KAIZOKU_ANIM_16 + ANIMMODE_LOOP, // EN_KAIZOKU_ANIM_17 + ANIMMODE_ONCE, // EN_KAIZOKU_ANIM_18 +}; -extern UNK_TYPE D_060058B8; +void EnKaizoku_Init(Actor* thisx, PlayState* play) { + s32 pad; + EnKaizoku* this = THIS; + Player* player = GET_PLAYER(play); + EffectBlureInit1 blureInit; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/EnKaizoku_Init.s") + this->picto.actor.hintId = TATL_HINT_ID_PIRATE; + this->picto.actor.targetMode = 3; + this->picto.actor.colChkInfo.mass = 80; + ActorShape_Init(&this->picto.actor.shape, 0.0f, ActorShadow_DrawFeet, 0.0f); + this->unk_2CA = this->picto.actor.world.rot.z; + this->picto.actor.colChkInfo.health = 8; + this->exitIndex = KAIZOKU_GET_EXIT_INDEX(&this->picto.actor); + this->switchFlag = KAIZOKU_GET_SWITCHFLAG(&this->picto.actor); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/EnKaizoku_Destroy.s") + if (this->unk_2CA >= 2) { + this->unk_2CA = 0; + } else if (this->unk_2CA == 2) { + this->unk_2CA = 0; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B85858.s") + this->unk_2EC = this->picto.actor.world.rot.z; + this->picto.actor.world.rot.z = 0; + this->picto.actor.colChkInfo.damageTable = &sDamageTable; + SkelAnime_InitFlex(play, &this->skelAnime, &gKaizokuSkel, &object_kz_Anim_0058B8, this->jointTable, + this->morphTable, KAIZOKU_LIMB_MAX); + Collider_InitAndSetCylinder(play, &this->bodyCollider, &this->picto.actor, &sCylinderInit); + Collider_InitAndSetQuad(play, &this->swordCollider, &this->picto.actor, &sQuadInit); + blureInit.p1StartColor[0] = blureInit.p1StartColor[1] = blureInit.p1StartColor[2] = blureInit.p1StartColor[3] = + blureInit.p2StartColor[0] = blureInit.p2StartColor[1] = blureInit.p2StartColor[2] = blureInit.p1EndColor[0] = + blureInit.p1EndColor[1] = blureInit.p1EndColor[2] = blureInit.p2EndColor[0] = blureInit.p2EndColor[1] = + blureInit.p2EndColor[2] = 255; + blureInit.p2StartColor[3] = 64; + blureInit.p1EndColor[3] = blureInit.p2EndColor[3] = 0; + blureInit.elemDuration = 8; + blureInit.unkFlag = 0; + blureInit.calcMode = 2; + Effect_Add(play, &this->blureIndex, EFFECT_BLURE1, 0, 0, &blureInit); + Actor_SetScale(&this->picto.actor, 0.0125f); + this->picto.actor.flags |= ACTOR_FLAG_8000000; + this->picto.actor.flags &= ~ACTOR_FLAG_1; + if (this->switchFlag == 127) { + this->switchFlag = -1; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B85900.s") + if ((this->switchFlag >= 0) && Flags_GetSwitch(play, this->switchFlag)) { + Actor_Kill(&this->picto.actor); + return; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B85A00.s") + this->bodyCollider.dim.radius = 20; + this->bodyCollider.dim.height = 65; + this->bodyCollider.dim.yShift = 0; + this->unk_2D6 = this->picto.actor.cutscene; + this->picto.actor.world.pos.y = player->actor.world.pos.y + 160.0f; + this->picto.validationFunc = EnKaizoku_ValidatePictograph; + this->picto.actor.flags |= ACTOR_FLAG_400; + func_80B85F48(this); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B85E18.s") +void EnKaizoku_Destroy(Actor* thisx, PlayState* play) { + EnKaizoku* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B85EA0.s") + Effect_Destroy(play, this->blureIndex); + Collider_DestroyCylinder(play, &this->bodyCollider); + Collider_DestroyQuad(play, &this->swordCollider); + Audio_RestorePrevBgm(); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B85F48.s") +s32 func_80B85858(EnKaizoku* this, PlayState* play) { + Actor* itemAction; + Player* player = GET_PLAYER(play); + s16 prevAction = this->action; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B85FA8.s") + for (itemAction = play->actorCtx.actorLists[ACTORCAT_ITEMACTION].first; itemAction != NULL; + itemAction = itemAction->next) { + //! FAKE: + if (1) {} + if (((itemAction->id == ACTOR_ARMS_HOOK) || (itemAction->id == ACTOR_EN_ARROW)) && (player->unk_D57)) { + if (((itemAction->id != ACTOR_ARMS_HOOK) || (this->action != KAIZOKU_ACTION_13)) && + (this->action != KAIZOKU_ACTION_6)) { + func_80B87C7C(this); + } + break; + } + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B86804.s") + if (prevAction != this->action) { + return true; + } else { + return false; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B868B8.s") +void func_80B85900(EnKaizoku* this) { + if (this->action == KAIZOKU_ACTION_1) { + this->headRot.y = Math_SinS(this->lookTimer * 0x1068) * 0x22D8; + } else if (this->action != KAIZOKU_ACTION_13) { + if ((this->action == KAIZOKU_ACTION_9) || (this->action == KAIZOKU_ACTION_11)) { + Math_SmoothStepToS(&this->headRot.y, this->picto.actor.yawTowardsPlayer - this->picto.actor.shape.rot.y, 1, + 500, 0); + this->headRot.y = CLAMP(this->headRot.y, -0x256F, 0x256F); + } else { + this->headRot.y = 0; + } + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B86B58.s") +s32 func_80B85A00(EnKaizoku* this, PlayState* play, s16 arg2) { + Player* player = GET_PLAYER(play); + s16 sp32 = ABS_ALT(this->picto.actor.wallYaw - this->picto.actor.shape.rot.y); + s16 sp30 = ABS_ALT(this->picto.actor.yawTowardsPlayer - this->picto.actor.shape.rot.y); + Actor* explosiveActor; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B86B74.s") + if (func_800BE184(play, &this->picto.actor, 100.0f, 0x2710, 0x4000, this->picto.actor.shape.rot.y)) { + if (player->meleeWeaponAnimation == PLAYER_MWA_JUMPSLASH_START) { + if (this->action != KAIZOKU_ACTION_2) { + func_80B874D8(this, play); + } + return true; + } else { + func_80B87900(this); + return true; + } + } else if (func_800BE184(play, &this->picto.actor, 100.0f, 0x5DC0, 0x2AA8, this->picto.actor.shape.rot.y)) { + this->picto.actor.shape.rot.y = this->picto.actor.world.rot.y = this->picto.actor.yawTowardsPlayer; + if ((this->picto.actor.bgCheckFlags & 8) && (ABS_ALT(sp32) < 0x2EE0) && + (this->picto.actor.xzDistToPlayer < 90.0f)) { + if (this->action != KAIZOKU_ACTION_6) { + func_80B87C7C(this); + } + return true; + } else if (player->meleeWeaponAnimation == PLAYER_MWA_JUMPSLASH_START) { + if (this->action != KAIZOKU_ACTION_2) { + func_80B874D8(this, play); + } + } else if (this->picto.actor.xzDistToPlayer < BREG(11) + 180.0f) { + func_80B87900(this); + } else if (this->action != KAIZOKU_ACTION_7) { + func_80B87E28(this); + } + return true; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B872A4.s") + explosiveActor = Actor_FindNearby(play, &this->picto.actor, -1, ACTORCAT_EXPLOSIVES, 80.0f); + if (explosiveActor != NULL) { + this->picto.actor.shape.rot.y = this->picto.actor.world.rot.y = this->picto.actor.yawTowardsPlayer; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B872F4.s") + if (((this->picto.actor.bgCheckFlags & 8) && (sp32 < 0x2EE0)) || (explosiveActor->id == ACTOR_EN_BOM_CHU)) { + if ((explosiveActor->id == ACTOR_EN_BOM_CHU) && + (Actor_DistanceBetweenActors(&this->picto.actor, explosiveActor) < 80.0f) && + (BINANG_ADD(this->picto.actor.shape.rot.y - explosiveActor->world.rot.y, 0x8000) < 0x4000)) { + if (this->action != KAIZOKU_ACTION_6) { + func_80B87C7C(this); + } + } else { + func_80B87900(this); + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B874D8.s") + return true; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B8760C.s") + if (this->action != KAIZOKU_ACTION_7) { + func_80B87E28(this); + } + return true; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B87900.s") + if (arg2) { + s16 sp2A; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B8798C.s") + //! FAKE: + label:; + if (sp30 >= 10000) { + func_80B87900(this); + } else { + sp2A = player->actor.shape.rot.y - this->picto.actor.shape.rot.y; + if (this->picto.actor.xzDistToPlayer <= 65.0f && !Actor_OtherIsTargeted(play, &this->picto.actor) && + ABS_ALT(sp2A) < 0x5000) { + if (this->action != KAIZOKU_ACTION_9) { + func_80B87F70(this); + return 1; + } + } else if (this->action != KAIZOKU_ACTION_3) { + func_80B88CD8(this); + } + } + return true; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B87C7C.s") + return false; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B87CF8.s") +void EnKaizoku_ChangeAnim(EnKaizoku* this, EnKaizokuAnimation animIndex) { + this->animIndex = animIndex; + this->frameCount = Animation_GetLastFrame(sAnimations[this->animIndex]); + Animation_Change(&this->skelAnime, sAnimations[this->animIndex], 1.0f, 0.0f, this->frameCount, + sAnimationModes[this->animIndex], 0.0f); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B87D3C.s") +s32 EnKaizoku_ValidatePictograph(PlayState* play, Actor* actor) { + s32 ret = Snap_ValidatePictograph(play, actor, PICTOGRAPH_PIRATE_GOOD, &actor->focus.pos, &actor->shape.rot, 10.0f, + 400.0f, -1); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B87E28.s") + ret |= Snap_ValidatePictograph(play, actor, PICTOGRAPH_PIRATE_TOO_FAR, &actor->focus.pos, &actor->shape.rot, 10.0f, + 1200.0f, -1); + return ret; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B87E9C.s") +void func_80B85F48(EnKaizoku* this) { + Math_Vec3f_Copy(&this->unk_2F8, &gZeroVec3f); + Math_Vec3f_Copy(&this->unk_304, &gZeroVec3f); + this->unk_2D8 = 1; + this->action = KAIZOKU_ACTION_0; + this->actionFunc = func_80B85FA8; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B87F70.s") +void func_80B85FA8(EnKaizoku* this, PlayState* play) { + Player* player = GET_PLAYER(play); + f32 curFrame = this->skelAnime.curFrame; + s32 sp54; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B87FDC.s") + switch (this->unk_59C) { + case 0: + if (!(this->picto.actor.xzDistToPlayer < 200.0f)) { + break; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B88214.s") + if (!ActorCutscene_GetCanPlayNext(this->unk_2D6)) { + ActorCutscene_SetIntentToPlay(this->unk_2D6); + return; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B88278.s") + ActorCutscene_StartAndSetUnkLinkFields(this->unk_2D6, &this->picto.actor); + func_800B7298(play, &this->picto.actor, 0x15); + this->subCamId = ActorCutscene_GetCurrentSubCamId(this->picto.actor.cutscene); + this->picto.actor.shape.rot.y = this->picto.actor.world.rot.y = this->picto.actor.yawTowardsPlayer; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B8833C.s") + sp54 = (this->unk_2CA * 4) + this->unk_2C8; + if (this->unk_2EC != 2) { + player->actor.world.pos.x = this->picto.actor.home.pos.x + 90.0f; + player->actor.world.pos.z = this->picto.actor.home.pos.z + 30.0f; + } else { + player->actor.world.pos.x = this->picto.actor.home.pos.x - 90.0f; + player->actor.world.pos.z = this->picto.actor.home.pos.z - 30.0f; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B88378.s") + player->actor.speedXZ = 0.0f; + this->picto.actor.world.pos.x = this->picto.actor.home.pos.x; + this->picto.actor.world.pos.z = this->picto.actor.home.pos.z; + Message_StartTextbox(play, D_80B8A8D0[sp54], &this->picto.actor); + this->unk_2C8++; + this->picto.actor.flags &= ~ACTOR_FLAG_1; + player->actor.shape.rot.y = player->actor.world.rot.y = + Math_Vec3f_Yaw(&player->actor.world.pos, &this->picto.actor.world.pos); + Math_Vec3f_Copy(&this->subCamEye, &this->unk_5C8); + Math_Vec3f_Copy(&this->subCamAt, &this->unk_5D4); + this->subCamUp.x = -0.11f; + this->picto.actor.draw = EnKaizoku_Draw; + this->unk_598 = 0; + func_801A0238(0, 0xA); + this->unk_59C++; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B88770.s") + case 1: + player->actor.shape.rot.y = player->actor.world.rot.y = + Math_Vec3f_Yaw(&player->actor.world.pos, &this->picto.actor.world.pos); + this->picto.actor.shape.rot.y = this->picto.actor.world.rot.y = this->picto.actor.yawTowardsPlayer; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B887AC.s") + if (this->unk_2EC != 2) { + player->actor.world.pos.x = this->picto.actor.home.pos.x + 90.0f; + player->actor.world.pos.z = this->picto.actor.home.pos.z + 30.0f; + } else { + player->actor.world.pos.x = this->picto.actor.home.pos.x - 90.0f; + player->actor.world.pos.z = this->picto.actor.home.pos.z - 30.0f; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B88910.s") + if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { + func_801477B4(play); + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_11); + this->unk_598 = 0; + this->unk_59C++; + this->picto.actor.gravity = -2.0f; + } + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B88964.s") + case 2: + if (this->picto.actor.bgCheckFlags & 1) { + if (this->unk_2D8 != 0) { + this->unk_2D8 = 0; + this->picto.actor.world.pos.y = this->picto.actor.floorHeight; + this->picto.actor.velocity.y = 0.0f; + func_800B7298(play, &this->picto.actor, 4); + Actor_SpawnFloorDustRing(play, &this->picto.actor, &this->leftFootPos, 3.0f, 2, 2.0f, 0, 0, 0); + Actor_SpawnFloorDustRing(play, &this->picto.actor, &this->rightFootPos, 3.0f, 2, 2.0f, 0, 0, 0); + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_PIRATE_ONGND); + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B88CD8.s") + if (curFrame >= 11.0f) { + this->unk_59C++; + this->unk_598 = 0; + this->subCamUp.x = 0.0f; + } + } + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B88D6C.s") + case 3: + if (this->frameCount <= curFrame) { + sp54 = this->unk_2CA * 4 + this->unk_2C8; + if (Player_GetMask(play) == PLAYER_MASK_STONE) { + if (D_80B8A8D0[sp54] == 0x11A5) { + sp54 = 8; + } else if (D_80B8A8D0[sp54] == 0x11A9) { + sp54 = 9; + } + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B891B8.s") + Message_StartTextbox(play, D_80B8A8D0[sp54], &this->picto.actor); + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_12); + this->unk_2C8++; + this->unk_598 = 0; + this->unk_59C++; + } + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B89280.s") + case 4: + if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { + func_801477B4(play); + this->unk_598 = 0; + this->unk_59C++; + func_801A0238(0x7F, 0); + Audio_PlayBgm_StorePrevBgm(NA_BGM_MINI_BOSS); + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_13); + } + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B893CC.s") + case 5: + Math_ApproachF(&this->unk_5E0, 2.0f, 0.2f, 1.0f); + if (Animation_OnFrame(&this->skelAnime, 20.0f)) { + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_BOSU_SWORD); + } + if (curFrame >= 30.0f) { + this->unk_598 = 0; + this->unk_59C++; + } + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B894C0.s") + case 6: + Math_ApproachF(&this->unk_5E0, 5.0f, 0.3f, 1.0f); + if (this->frameCount <= curFrame) { + this->unk_598 = 7; + this->unk_2F8.x = 1.0f; + this->unk_59C++; + this->unk_2F8.y = 1.0f; + this->unk_2F8.z = 1.0f; + this->unk_304.x = 1.0f; + this->unk_304.y = 1.0f; + this->unk_304.z = 1.0f; + } + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B8960C.s") + case 7: + if (this->unk_598 == 0) { + func_800B7298(play, &this->picto.actor, 6); + ActorCutscene_Stop(this->unk_2D6); + this->unk_59C = 0; + this->subCamId = 0; + this->picto.actor.flags &= ~ACTOR_FLAG_100000; + this->picto.actor.flags &= ~ACTOR_FLAG_8000000; + this->picto.actor.flags |= ACTOR_FLAG_1; + func_80B872A4(this); + } + break; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B8971C.s") + if (this->unk_59C < 7) { + s32 temp_v0_3 = this->unk_2EC * 8; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B89A08.s") + temp_v0_3 += this->unk_59C; + this->unk_5C8.x = D_80B8A8E4[temp_v0_3].x + this->picto.actor.home.pos.x; + this->unk_5C8.y = D_80B8A8E4[temp_v0_3].y + player->actor.world.pos.y; + this->unk_5C8.z = D_80B8A8E4[temp_v0_3].z + this->picto.actor.home.pos.z; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/EnKaizoku_Update.s") + this->unk_5D4.x = D_80B8AA04[temp_v0_3].x + this->picto.actor.home.pos.x; + this->unk_5D4.y = D_80B8AA04[temp_v0_3].y + player->actor.world.pos.y; + this->unk_5D4.z = D_80B8AA04[temp_v0_3].z + this->picto.actor.home.pos.z; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B8A318.s") + if (this->unk_59C >= 5) { + if (curFrame >= 6.0f) { + Math_ApproachF(&this->unk_2F8.x, 1.0f, 0.3f, 0.3f); + this->unk_2F8.z = this->unk_2F8.y = this->unk_2F8.x; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B8A468.s") + if (curFrame >= 22.0f) { + Math_ApproachF(&this->unk_304.x, 1.0f, 0.3f, 0.3f); + this->unk_304.z = this->unk_304.y = this->unk_304.x; + } + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B8A6B0.s") + if (this->unk_59C >= 5) { + Math_ApproachF(&this->subCamEye.x, this->unk_5C8.x, 0.5f, this->unk_5E0); + Math_ApproachF(&this->subCamEye.y, this->unk_5C8.y, 0.5f, this->unk_5E0); + Math_ApproachF(&this->subCamEye.z, this->unk_5C8.z, 0.5f, this->unk_5E0); + Math_ApproachF(&this->subCamAt.x, this->unk_5D4.x, 0.5f, this->unk_5E0); + Math_ApproachF(&this->subCamAt.y, this->unk_5D4.y, 0.5f, this->unk_5E0); + Math_ApproachF(&this->subCamAt.z, this->unk_5D4.z, 0.5f, this->unk_5E0); + } else { + Math_Vec3f_Copy(&this->subCamEye, &this->unk_5C8); + Math_Vec3f_Copy(&this->subCamAt, &this->unk_5D4); + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kaizoku/func_80B8A718.s") + if (this->subCamId != 0) { + this->subCamUp.y = 1.0f; + this->subCamUp.z = 0.0f; + Play_SetCameraAtEyeUp(play, this->subCamId, &this->subCamAt, &this->subCamEye, &this->subCamUp); + } +} + +void func_80B86804(EnKaizoku* this, PlayState* play) { + if (this->subCamId == 0) { + if (!ActorCutscene_GetCanPlayNext(this->unk_2D6)) { + ActorCutscene_SetIntentToPlay(this->unk_2D6); + return; + } + ActorCutscene_StartAndSetUnkLinkFields(this->unk_2D6, &this->picto.actor); + } + + func_800B7298(play, &this->picto.actor, 0x60); + this->subCamId = ActorCutscene_GetCurrentSubCamId(this->picto.actor.cutscene); + this->unk_2B2 = 30; + this->picto.actor.flags &= ~ACTOR_FLAG_1; + this->unk_598 = 0; + this->unk_59C = 0; + this->unk_2D8 = 0; + this->action = KAIZOKU_ACTION_0; + this->actionFunc = func_80B868B8; + this->picto.actor.speedXZ = 0.0f; +} + +void func_80B868B8(EnKaizoku* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + + Math_SmoothStepToS(&this->picto.actor.shape.rot.y, this->picto.actor.yawTowardsPlayer, 1, 4000, 1); + this->subCamEye.x = Math_SinS(this->picto.actor.yawTowardsPlayer) * 155.0f + this->picto.actor.world.pos.x; + this->subCamEye.y = this->picto.actor.world.pos.y + 10.0f; + this->subCamEye.z = Math_CosS(this->picto.actor.yawTowardsPlayer) * 115.0f + this->picto.actor.world.pos.z; + + this->subCamAt.x = Math_SinS(this->picto.actor.yawTowardsPlayer) + this->picto.actor.world.pos.x; + this->subCamAt.y = this->picto.actor.world.pos.y + 30.0f; + this->subCamAt.z = Math_CosS(this->picto.actor.yawTowardsPlayer) * 11.0f + this->picto.actor.world.pos.z; + + switch (this->unk_59C) { + case 0: + if (this->frameCount <= curFrame) { + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_14); + this->unk_2C8 = 3; + this->unk_598 = 0; + this->unk_59C++; + } + break; + + case 1: + if (this->frameCount <= curFrame) { + s32 textId; + + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_15); + textId = this->unk_2CA * 4 + this->unk_2C8; + Message_StartTextbox(play, D_80B8A8D0[textId], &this->picto.actor); + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_LAST2_SHOUT); + this->unk_598 = 0; + this->unk_59C++; + } + break; + + case 2: + if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { + func_801477B4(play); + func_800B7298(play, &this->picto.actor, 6); + ActorCutscene_Stop(this->unk_2D6); + this->subCamId = 0; + play->nextEntrance = play->setupExitList[this->exitIndex]; + gSaveContext.nextCutsceneIndex = 0; + Scene_SetExitFade(play); + play->transitionTrigger = TRANS_TRIGGER_START; + this->unk_59C++; + this->action = KAIZOKU_ACTION_16; + } + + break; + } + + if (this->subCamId != 0) { + this->subCamUp.x = 0.0f; + this->subCamUp.y = 1.0f; + this->subCamUp.z = 0.0f; + Play_SetCameraAtEyeUp(play, this->subCamId, &this->subCamAt, &this->subCamEye, &this->subCamUp); + } +} + +void func_80B86B58(EnKaizoku* this) { + this->unk_2D8 = 0; + this->action = KAIZOKU_ACTION_0; + this->actionFunc = func_80B86B74; +} + +void func_80B86B74(EnKaizoku* this, PlayState* play) { + Player* player = GET_PLAYER(play); + s32 textId; + f32 curFrame = this->skelAnime.curFrame; + + if (this->unk_59C < 2) { + Math_SmoothStepToS(&this->picto.actor.shape.rot.y, this->picto.actor.yawTowardsPlayer, 1, 0xFA0, 1); + player->actor.world.pos.x = this->picto.actor.home.pos.x + 90.0f; + player->actor.world.pos.z = this->picto.actor.home.pos.z + 30.0f; + this->picto.actor.world.pos.x = this->picto.actor.home.pos.x; + this->picto.actor.world.pos.z = this->picto.actor.home.pos.z; + this->unk_5C8.x = player->actor.world.pos.x + 39.0f; + this->unk_5C8.y = player->actor.world.pos.y + 4.0f; + this->unk_5C8.z = player->actor.world.pos.z - 41.0f; + this->unk_5D4.x = player->actor.world.pos.x - 150.0f; + this->unk_5D4.y = player->actor.world.pos.y + 60.0f; + this->unk_5D4.z = player->actor.world.pos.z + 50.0f; + } + + player->actor.shape.rot.y = player->actor.world.rot.y = + Math_Vec3f_Yaw(&player->actor.world.pos, &this->picto.actor.world.pos); + switch (this->unk_59C) { + case 0: + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_17); + this->unk_2C8 = 2; + textId = this->unk_2CA * 4 + this->unk_2C8; + Message_StartTextbox(play, D_80B8A8D0[textId], &this->picto.actor); + this->unk_2D9 = 0; + this->unk_598 = 0; + this->unk_59C++; + break; + + case 1: + if (this->frameCount <= curFrame) { + if (this->unk_2D9 == 0) { + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_PIRATE_DAMM_BREATH); + this->unk_2D9 = 1; + } else { + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_PIRATE_BREATH); + } + } + + if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { + func_801477B4(play); + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_18); + func_800B7298(play, &this->picto.actor, 0x85); + this->unk_5A0 = 0; + this->unk_598 = 0; + this->unk_59C++; + } + break; + + case 2: + this->unk_5C8.x = player->actor.world.pos.x + 77.0f; + this->unk_5C8.y = player->actor.world.pos.y + 84.0f; + this->unk_5C8.z = player->actor.world.pos.z - 71.0f; + + this->unk_5D4.x = player->actor.world.pos.x - 110.0f; + this->unk_5D4.y = player->actor.world.pos.y; + this->unk_5D4.z = player->actor.world.pos.z + 30.0f; + this->unk_5A0++; + if (curFrame >= 1.0f) { + Math_ApproachZeroF(&this->unk_2F8.x, 0.3f, 0.3f); + Math_ApproachZeroF(&this->unk_304.x, 0.3f, 0.3f); + this->unk_2F8.z = this->unk_2F8.y = this->unk_2F8.x; + this->unk_304.z = this->unk_304.y = this->unk_304.x; + } + if (this->unk_5A0 == 0x12) { + Actor* temp_v0_2; + + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_PIRATE_SHOUT); + temp_v0_2 = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ARROW, this->picto.actor.world.pos.x, + this->picto.actor.world.pos.y + 10.0f, this->picto.actor.world.pos.z, + this->picto.actor.shape.rot.x, this->picto.actor.shape.rot.y, + this->picto.actor.shape.rot.z, -8); + if (temp_v0_2 != NULL) { + temp_v0_2->gravity = -10.0f; + play->envCtx.fillScreen = true; + } + } + + if (this->unk_5A0 >= 0x12) { + Math_ApproachF(&this->unk_5EC, 60.0f, 1.0f, 20.0f); + this->unk_5E8 = this->unk_5EC / 60.0f; + play->envCtx.screenFillColor[3] = this->unk_5E8 * 255.0f; + play->envCtx.screenFillColor[0] = play->envCtx.screenFillColor[1] = play->envCtx.screenFillColor[2] = + 255; + } + + if ((this->frameCount <= curFrame) && (this->unk_5A0 >= 0x28)) { + this->picto.actor.draw = NULL; + this->unk_598 = 10; + Math_Vec3f_Copy(&this->unk_2F8, &gZeroVec3f); + Math_Vec3f_Copy(&this->unk_304, &gZeroVec3f); + this->unk_59C++; + } + break; + + case 3: + if (this->unk_598 == 0) { + Math_ApproachZeroF(&this->unk_5EC, 0.5f, 10.0f); + this->unk_5E8 = this->unk_5EC / 60.0f; + play->envCtx.screenFillColor[3] = this->unk_5E8 * 255.0f; + if (play->envCtx.screenFillColor[3] < 10) { + play->envCtx.screenFillColor[0] = 0; + play->envCtx.screenFillColor[1] = 0; + play->envCtx.screenFillColor[2] = 0; + play->envCtx.screenFillColor[3] = 0; + play->envCtx.fillScreen = false; + this->unk_59C = 0; + this->subCamId = 0; + func_800B7298(play, &this->picto.actor, 6); + ActorCutscene_Stop(this->unk_2D6); + if (this->switchFlag >= 0) { + Flags_SetSwitch(play, this->switchFlag); + } + Actor_Kill(&this->picto.actor); + } + } + break; + } + Math_ApproachF(&this->subCamEye.x, this->unk_5C8.x, 0.5f, this->unk_5E0); + Math_ApproachF(&this->subCamEye.y, this->unk_5C8.y, 0.5f, this->unk_5E0); + Math_ApproachF(&this->subCamEye.z, this->unk_5C8.z, 0.5f, this->unk_5E0); + Math_ApproachF(&this->subCamAt.x, this->unk_5D4.x, 0.5f, this->unk_5E0); + Math_ApproachF(&this->subCamAt.y, this->unk_5D4.y, 0.5f, this->unk_5E0); + Math_ApproachF(&this->subCamAt.z, this->unk_5D4.z, 0.5f, this->unk_5E0); + Math_ApproachF(&this->unk_5E0, 10.0f, 0.5f, 100.0f); + + if (this->subCamId != 0) { + this->subCamUp.x = 0.0f; + this->subCamUp.z = 0.0f; + this->subCamUp.y = 1.0f; + Play_SetCameraAtEyeUp(play, this->subCamId, &this->subCamAt, &this->subCamEye, &this->subCamUp); + } +} + +void func_80B872A4(EnKaizoku* this) { + this->picto.actor.speedXZ = 0.0f; + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_0); + this->action = KAIZOKU_ACTION_1; + this->actionFunc = func_80B872F4; + this->picto.actor.shape.shadowScale = 90.0f; +} + +void func_80B872F4(EnKaizoku* this, PlayState* play) { + Player* player = GET_PLAYER(play); + + if ((this->lookTimer == 0) && !func_80B85858(this, play) && !func_80B85A00(this, play, false)) { + s16 yawDiff = this->picto.actor.yawTowardsPlayer - this->picto.actor.shape.rot.y; + + if ((this->picto.actor.xzDistToPlayer < 100.0f) && (player->meleeWeaponState != 0) && (yawDiff >= 0x1F40)) { + this->picto.actor.shape.rot.y = this->picto.actor.world.rot.y = this->picto.actor.yawTowardsPlayer; + func_80B88CD8(this); + } else if (Actor_IsFacingPlayer(&this->picto.actor, 0xBB8)) { + if ((this->picto.actor.xzDistToPlayer < 400.0f && this->picto.actor.xzDistToPlayer > 150.0f) && + (Rand_ZeroOne() < 0.7f)) { + if ((Rand_ZeroOne() > 0.5f) || (ABS_ALT(yawDiff) < 0x3000)) { + func_80B88214(this); + } else { + func_80B88910(this); + } + } else if (Rand_ZeroOne() > 0.1f) { + func_80B8833C(this); + } else { + func_80B88CD8(this); + } + } else { + func_80B88770(this); + } + } +} + +void func_80B874D8(EnKaizoku* this, PlayState* play) { + Player* player = GET_PLAYER(play); + + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_3); + if (Math_SinS(player->actor.shape.rot.y - this->picto.actor.shape.rot.y) > 0.0f) { + this->picto.actor.speedXZ = -10.0f; + } else if (Math_SinS(player->actor.shape.rot.y - this->picto.actor.shape.rot.y) < 0.0f) { + this->picto.actor.speedXZ = 10.0f; + } else if (Rand_ZeroOne() > 0.5f) { + this->picto.actor.speedXZ = 10.0f; + } else { + this->picto.actor.speedXZ = -10.0f; + } + + this->skelAnime.playSpeed = 1.0f; + this->picto.actor.world.rot.y = this->picto.actor.shape.rot.y; + this->unk_2B2 = 6; + this->action = KAIZOKU_ACTION_2; + this->unk_2E0 = 0.0f; + this->actionFunc = func_80B8760C; +} + +void func_80B8760C(EnKaizoku* this, PlayState* play) { + s16 var_v0; + s32 temp_ft0; + s32 temp_ft1; + + this->picto.actor.world.rot.y = this->picto.actor.yawTowardsPlayer + 0x3A98; + if ((this->picto.actor.bgCheckFlags & 8) || + !Actor_TestFloorInDirection(&this->picto.actor, play, this->picto.actor.speedXZ, + this->picto.actor.shape.rot.y + 0x4000)) { + if (this->picto.actor.bgCheckFlags & 8) { + if (this->picto.actor.speedXZ >= 0.0f) { + var_v0 = this->picto.actor.shape.rot.y + 0x4000; + } else { + var_v0 = this->picto.actor.shape.rot.y - 0x4000; + } + var_v0 = this->picto.actor.wallYaw - var_v0; + } else { + this->picto.actor.speedXZ *= -0.8f; + var_v0 = 0; + } + + if (ABS_ALT(var_v0) > 0x4000) { + func_80B87C7C(this); + return; + } + } + + if (this->picto.actor.xzDistToPlayer <= 65.0f) { + Math_ApproachF(&this->unk_2E0, -4.0f, 1.0f, 1.5f); + } else if (this->picto.actor.xzDistToPlayer > 40.0f) { + Math_ApproachF(&this->unk_2E0, 4.0f, 1.0f, 1.5f); + } else { + Math_ApproachZeroF(&this->unk_2E0, 1.0f, 6.65f); + } + + if (this->unk_2E0 != 0.0f) { + this->picto.actor.world.pos.x += Math_SinS(this->picto.actor.yawTowardsPlayer) * this->unk_2E0; + this->picto.actor.world.pos.z += Math_CosS(this->picto.actor.yawTowardsPlayer) * this->unk_2E0; + } + + this->skelAnime.playSpeed = 1.0f; + temp_ft0 = this->skelAnime.curFrame - this->skelAnime.playSpeed; + temp_ft1 = this->skelAnime.curFrame + this->skelAnime.playSpeed; + if (this->skelAnime.curFrame != 0.0f && ((temp_ft0 < 0 && temp_ft1 > 0) || (temp_ft0 < 5 && temp_ft1 >= 6))) { + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_GERUDOFT_WALK); + } + + if (!(play->gameplayFrames & 0x5F)) { + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_PIRATE_BREATH); + } + + if (this->unk_2B2 == 0) { + this->picto.actor.shape.rot.y = this->picto.actor.yawTowardsPlayer; + if (!func_80B85858(this, play)) { + if (this->picto.actor.xzDistToPlayer <= 70.0f) { + func_80B87F70(this); + } else { + func_80B87E28(this); + } + } + } else { + if (this->picto.actor.speedXZ >= 0.0f) { + this->picto.actor.shape.rot.y += 0x4000; + } else { + this->picto.actor.shape.rot.y -= 0x4000; + } + } +} + +void func_80B87900(EnKaizoku* this) { + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_7); + + if (this->swordState != 0) { + this->swordState = -1; + } + this->unk_2D8 = 0; + this->picto.actor.speedXZ = 0.0f; + this->unk_2B2 = Rand_S16Offset(10, 10); + this->bodyCollider.base.acFlags |= AC_HARD; + this->lookTimer = 12; + this->action = KAIZOKU_ACTION_12; + this->actionFunc = func_80B8798C; +} + +void func_80B8798C(EnKaizoku* this, PlayState* play) { + Player* player = GET_PLAYER(play); + s16 temp_v0; + + this->unk_2D8 = 1; + if (this->unk_2B2 == 0) { + this->skelAnime.playSpeed = 1.0f; + } + if (this->lookTimer == 0) { + this->unk_2D8 = 0; + temp_v0 = this->picto.actor.yawTowardsPlayer - this->picto.actor.shape.rot.y; + if (ABS_ALT(temp_v0) <= 0x4000 && this->picto.actor.xzDistToPlayer < 40.0f && + fabsf(this->picto.actor.playerHeightRel) < 50.0f) { + if (func_800BE184(play, &this->picto.actor, 100.0f, 10000, 0x4000, this->picto.actor.shape.rot.y)) { + if (player->meleeWeaponAnimation == PLAYER_MWA_JUMPSLASH_START) { + this->bodyCollider.base.acFlags &= ~AC_HARD; + func_80B874D8(this, play); + } else if (!(play->gameplayFrames & 1)) { + func_80B87900(this); + } else { + this->bodyCollider.base.acFlags &= ~AC_HARD; + func_80B87E28(this); + } + } else { + temp_v0 = player->actor.shape.rot.y - this->picto.actor.shape.rot.y; + if (ABS_ALT(temp_v0) < 0x4000) { + this->bodyCollider.base.acFlags &= ~AC_HARD; + func_80B87F70(this); + } else { + this->bodyCollider.base.acFlags &= ~AC_HARD; + func_80B88CD8(this); + } + } + } else { + this->bodyCollider.base.acFlags &= ~AC_HARD; + func_80B88CD8(this); + } + } else if (this->unk_2B2 == 0 && + func_800BE184(play, &this->picto.actor, 100.0f, 10000, 0x4000, this->picto.actor.shape.rot.y)) { + if (player->meleeWeaponAnimation == PLAYER_MWA_JUMPSLASH_START) { + this->bodyCollider.base.acFlags &= ~AC_HARD; + func_80B874D8(this, play); + } else if (!func_80B85858(this, play)) { + if (!(play->gameplayFrames & 1)) { + if (this->picto.actor.xzDistToPlayer < 100.0f && Rand_ZeroOne() > 0.7f) { + this->bodyCollider.base.acFlags &= ~AC_HARD; + func_80B87C7C(this); + } else { + this->bodyCollider.base.acFlags &= ~AC_HARD; + func_80B87E28(this); + } + } else { + func_80B87900(this); + } + } + } +} + +void func_80B87C7C(EnKaizoku* this) { + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_8); + this->picto.actor.speedXZ = 6.5f; + this->picto.actor.velocity.y = 15.0f; + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_TEKU_JUMP); + this->picto.actor.world.rot.y = this->picto.actor.shape.rot.y; + this->bodyCollider.info.elemType = ELEMTYPE_UNK4; + this->bodyCollider.base.colType = COLTYPE_NONE; + this->swordCollider.info.elemType = ELEMTYPE_UNK4; + this->action = KAIZOKU_ACTION_6; + this->actionFunc = func_80B87D3C; +} + +Color_RGBA8 D_80B8AC58 = { 200, 160, 120, 255 }; +Color_RGBA8 D_80B8AC5C = { 130, 90, 50, 255 }; + +Vec3f D_80B8AC60 = { 0.0f, -1.5f, 0.0f }; +Vec3f D_80B8AC6C = { 0.0f, -0.2f, 0.0f }; + +void func_80B87CF8(PlayState* play, Vec3f* pos) { + EffectSsKirakira_SpawnSmall(play, pos, &D_80B8AC60, &D_80B8AC6C, &D_80B8AC58, &D_80B8AC5C); +} + +void func_80B87D3C(EnKaizoku* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + + Math_SmoothStepToS(&this->picto.actor.shape.rot.y, this->picto.actor.yawTowardsPlayer, 1, 0xFA0, 1); + if (this->picto.actor.velocity.y >= 5.0f) { + func_80B87CF8(play, &this->leftFootPos); + func_80B87CF8(play, &this->rightFootPos); + } + + this->unk_2D8 = 0; + if ((this->frameCount <= curFrame) && (this->picto.actor.bgCheckFlags & 3)) { + this->bodyCollider.info.elemType = ELEMTYPE_UNK1; + this->bodyCollider.base.colType = COLTYPE_HIT3; + this->swordCollider.info.elemType = ELEMTYPE_UNK2; + this->picto.actor.shape.rot.x = 0; + this->picto.actor.world.rot.y = this->picto.actor.shape.rot.y = this->picto.actor.yawTowardsPlayer; + this->picto.actor.speedXZ = 0.0f; + this->picto.actor.velocity.y = 0.0f; + this->picto.actor.world.pos.y = this->picto.actor.floorHeight; + func_80B87F70(this); + } +} + +void func_80B87E28(EnKaizoku* this) { + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_8); + this->picto.actor.speedXZ = -8.0f; + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_TEKU_JUMP); + this->bodyCollider.info.elemType = ELEMTYPE_UNK4; + this->bodyCollider.base.colType = COLTYPE_NONE; + this->swordCollider.info.elemType = ELEMTYPE_UNK4; + this->action = KAIZOKU_ACTION_7; + this->actionFunc = func_80B87E9C; + this->picto.actor.shape.rot.y = this->picto.actor.world.rot.y = this->picto.actor.yawTowardsPlayer; +} + +void func_80B87E9C(EnKaizoku* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + + this->unk_2D8 = 0; + if (this->frameCount <= curFrame) { + if ((this->picto.actor.xzDistToPlayer < 170.0f) && (this->picto.actor.xzDistToPlayer > 140.0f) && + (Rand_ZeroOne() < 0.2f)) { + func_80B88910(this); + } else { + func_80B87900(this); + } + } + if (!(play->state.frames & 0x5F)) { + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_PIRATE_BREATH); + } +} + +void func_80B87F70(EnKaizoku* this) { + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_9); + this->unk_2D0 = 0; + this->swordCollider.base.atFlags &= ~AT_BOUNCED; + this->picto.actor.speedXZ = 0.0f; + AudioSfx_StopByPosAndId(&this->picto.actor.projectedPos, NA_SE_EN_PIRATE_BREATH); + this->action = KAIZOKU_ACTION_9; + this->actionFunc = func_80B87FDC; +} + +void func_80B87FDC(EnKaizoku* this, PlayState* play2) { + PlayState* play = play2; + f32 curFrame; + s16 sp2E; + s16 sp2C; + Player* player = GET_PLAYER(play2); + + curFrame = this->skelAnime.curFrame; + sp2E = ABS_ALT(player->actor.shape.rot.y - this->picto.actor.shape.rot.y); + sp2C = ABS_ALT(this->picto.actor.yawTowardsPlayer - this->picto.actor.shape.rot.y); + this->picto.actor.speedXZ = 0.0f; + + if (Animation_OnFrame(&this->skelAnime, 1.0f)) { + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_PIRATE_ATTACK); + this->swordState = 1; + } else if (Animation_OnFrame(&this->skelAnime, 6.0f)) { + this->swordState = -1; + } + + if (this->swordCollider.base.atFlags & AT_BOUNCED) { + this->swordState = -1; + this->swordCollider.base.atFlags &= ~(AT_BOUNCED | AT_HIT); + func_80B87E28(this); + return; + } + + this->unk_2D8 = 0; + if (this->frameCount <= curFrame) { + if (!Actor_IsFacingPlayer(&this->picto.actor, 0x1554)) { + func_80B872A4(this); + + if (sp2C > 0x4000) { + this->lookTimer = 20; + } + } else { + if (Rand_ZeroOne() > 0.7f || this->picto.actor.xzDistToPlayer >= 120.0f) { + func_80B872A4(this); + return; + } + + this->picto.actor.world.rot.y = this->picto.actor.yawTowardsPlayer; + + if (BREG(12) * 0.1f + 0.01f * 40.0f < Rand_ZeroOne()) { + func_80B87900(this); + } else if (sp2E <= 0x2710) { + if (sp2C > 0x4000) { + this->picto.actor.world.rot.y = this->picto.actor.yawTowardsPlayer; + func_80B88CD8(this); + } else { + func_80B85A00(this, play, true); + } + } else { + func_80B88CD8(this); + } + } + } +} + +void func_80B88214(EnKaizoku* this) { + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_8); + this->unk_2B2 = 0; + this->picto.actor.speedXZ = 10.0f; + this->picto.actor.world.rot.y = this->picto.actor.shape.rot.y = this->picto.actor.yawTowardsPlayer; + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_TEKU_JUMP); + this->action = KAIZOKU_ACTION_5; + this->actionFunc = func_80B88278; +} + +void func_80B88278(EnKaizoku* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + + this->unk_2D8 = 0; + if (this->frameCount <= curFrame) { + this->picto.actor.speedXZ = 0.0f; + if (!Actor_IsFacingPlayer(&this->picto.actor, 0x1554)) { + func_80B872A4(this); + this->unk_2B2 = Rand_ZeroOne() * 5.0f + 5.0f; + } else { + func_80B87F70(this); + } + } + if (!(play->gameplayFrames & 0x5F)) { + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_PIRATE_BREATH); + } +} + +void func_80B8833C(EnKaizoku* this) { + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_4); + this->action = KAIZOKU_ACTION_4; + this->actionFunc = func_80B88378; +} + +void func_80B88378(EnKaizoku* this, PlayState* play) { + Player* player = GET_PLAYER(play); + s32 sp30; + s32 sp2C; + s16 sp2A; + + if (!func_80B85858(this, play)) { + Math_SmoothStepToS(&this->picto.actor.shape.rot.y, this->picto.actor.yawTowardsPlayer, 1, 0x2EE, 0); + this->picto.actor.world.rot.y = this->picto.actor.shape.rot.y; + if (this->picto.actor.xzDistToPlayer <= 40.0f) { + Math_ApproachF(&this->picto.actor.speedXZ, -8.0f, 1.0f, 1.5f); + } else if (this->picto.actor.xzDistToPlayer > 55.0f) { + Math_ApproachF(&this->picto.actor.speedXZ, 8.0f, 1.0f, 1.5f); + } else { + Math_ApproachZeroF(&this->picto.actor.speedXZ, 2.0f, 6.65f); + } + + this->skelAnime.playSpeed = 1.0f; + sp2A = ABS_ALT(player->actor.shape.rot.y - this->picto.actor.shape.rot.y); + if (this->picto.actor.xzDistToPlayer < 150.0f && player->meleeWeaponState != 0 && sp2A >= 0x2000) { + this->picto.actor.shape.rot.y = this->picto.actor.world.rot.y = this->picto.actor.yawTowardsPlayer; + if (Rand_ZeroOne() > 0.7f) { + func_80B88CD8(this); + return; + } + } + + sp30 = this->skelAnime.curFrame - this->skelAnime.playSpeed; + sp2C = this->skelAnime.curFrame + this->skelAnime.playSpeed; + if (!Actor_IsFacingPlayer(&this->picto.actor, 0x11C7)) { + if (Rand_ZeroOne() > 0.5f) { + func_80B88CD8(this); + } else { + func_80B872A4(this); + } + } else if (this->picto.actor.xzDistToPlayer < 90.0f) { + if ((Rand_ZeroOne() > 0.03f) || ((this->picto.actor.xzDistToPlayer <= 65.0f) && (sp2A < 0x4000))) { + func_80B87F70(this); + } else if (Actor_OtherIsTargeted(play, &this->picto.actor) && (Rand_ZeroOne() > 0.5f)) { + func_80B87E28(this); + } else { + func_80B88CD8(this); + } + } + + if (!func_80B85A00(this, play, false)) { + if (this->picto.actor.xzDistToPlayer < 210.0f && this->picto.actor.xzDistToPlayer > 150.0f && + Actor_IsFacingPlayer(&this->picto.actor, 0x1388)) { + if (Actor_IsTargeted(play, &this->picto.actor)) { + if (Rand_ZeroOne() > 0.5f) { + func_80B88214(this); + } else { + func_80B88910(this); + } + } else { + func_80B88CD8(this); + return; + } + } + + if (!(play->gameplayFrames & 0x5F)) { + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_PIRATE_BREATH); + } + + if ((this->skelAnime.curFrame != 0.0f) && ((sp30 < 0 && sp2C > 0) || (sp30 < 4 && sp2C >= 5))) { + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_GERUDOFT_WALK); + } + } + } +} + +void func_80B88770(EnKaizoku* this) { + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_3); + this->action = KAIZOKU_ACTION_10; + this->actionFunc = func_80B887AC; +} + +void func_80B887AC(EnKaizoku* this, PlayState* play) { + s16 temp_v0; + s16 var_a2; + + if (!func_80B85858(this, play) && !func_80B85A00(this, play, false)) { + temp_v0 = this->picto.actor.yawTowardsPlayer - this->picto.actor.shape.rot.y; + if (temp_v0 > 0) { + var_a2 = (s16)(temp_v0 * 0.25f) + 0x7D0; + } else { + var_a2 = (s16)(temp_v0 * 0.25f) - 0x7D0; + } + this->picto.actor.shape.rot.y += var_a2; + this->picto.actor.world.rot.y = this->picto.actor.shape.rot.y; + this->skelAnime.playSpeed = 1.0f; + + if (Actor_IsFacingPlayer(&this->picto.actor, 0x1388)) { + if (Rand_ZeroOne() > 0.8f) { + func_80B88CD8(this); + } else { + func_80B8833C(this); + } + } + if (!(play->gameplayFrames & 0x5F)) { + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_PIRATE_BREATH); + } + } +} + +void func_80B88910(EnKaizoku* this) { + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_10); + this->swordCollider.base.atFlags &= ~(AT_BOUNCED | AT_HIT); + this->unk_2D0 = 0; + this->action = KAIZOKU_ACTION_11; + this->actionFunc = func_80B88964; + this->picto.actor.speedXZ = 0.0f; +} + +void func_80B88964(EnKaizoku* this, PlayState* play) { + Player* player = GET_PLAYER(play); + f32 curFrame = this->skelAnime.curFrame; + s16 v1; + s16 a0; + s32 pad; + + if (this->unk_2D0 < 2) { + if (this->swordCollider.base.atFlags & AT_BOUNCED) { + this->swordCollider.base.atFlags &= ~(AT_BOUNCED | AT_HIT); + this->unk_2D0 = 1; + this->skelAnime.playSpeed = 1.0f; + } + } + + if (this->skelAnime.curFrame <= 8.0f) { + this->picto.actor.shape.rot.y = this->picto.actor.world.rot.y = this->picto.actor.yawTowardsPlayer; + } else { + if (Animation_OnFrame(&this->skelAnime, 13.0f)) { + Actor_SpawnFloorDustRing(play, &this->picto.actor, &this->leftFootPos, 3.0f, 2, 2.0f, 0, 0, 0); + Actor_SpawnFloorDustRing(play, &this->picto.actor, &this->rightFootPos, 3.0f, 2, 2.0f, 0, 0, 0); + this->swordState = 1; + this->picto.actor.speedXZ = 10.0f; + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_PIRATE_ATTACK); + } else if (Animation_OnFrame(&this->skelAnime, 21.0f)) { + this->picto.actor.speedXZ = 0.0f; + } else if (Animation_OnFrame(&this->skelAnime, 24.0f)) { + this->swordState = -1; + } + } + + this->unk_2D8 = 0; + if (this->frameCount <= curFrame && this->unk_2D0 < 2) { + if (!Actor_IsFacingPlayer(&this->picto.actor, 0x1554)) { + func_80B872A4(this); + this->unk_2B2 = Rand_ZeroOne() * 5.0f + 5.0f; + this->lookTimer = 46; + return; + } + + if (this->unk_2D0 != 0) { + func_80B87E28(this); + return; + } + + if ((Rand_ZeroOne() > 0.7f) || (this->picto.actor.xzDistToPlayer >= 120.0f)) { + func_80B872A4(this); + this->unk_2B2 = Rand_ZeroOne() * 5.0f + 5.0f; + return; + } + + this->picto.actor.world.rot.y = this->picto.actor.yawTowardsPlayer; + if (BREG(12) * 0.1f + 0.01f * 40.0f < Rand_ZeroOne()) { + func_80B87900(this); + return; + } + + v1 = ABS_ALT(player->actor.shape.rot.y - this->picto.actor.shape.rot.y); + if (v1 <= 0x2710) { + + a0 = ABS_ALT(this->picto.actor.yawTowardsPlayer - this->picto.actor.shape.rot.y); + if (a0 > 0x4000) { + this->picto.actor.world.rot.y = this->picto.actor.yawTowardsPlayer; + func_80B88CD8(this); + } else { + func_80B85A00(this, play, true); + } + } else { + func_80B88CD8(this); + } + } +} + +void func_80B88CD8(EnKaizoku* this) { + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_3); + this->picto.actor.speedXZ = randPlusMinusPoint5Scaled(12.0f); + this->skelAnime.playSpeed = 1.0f; + this->picto.actor.world.rot.y = this->picto.actor.shape.rot.y; + this->unk_2B2 = Rand_ZeroOne() * 30.0f + 30.0f; + this->action = KAIZOKU_ACTION_3; + this->actionFunc = func_80B88D6C; + this->unk_2E0 = 0.0f; +} + +void func_80B88D6C(EnKaizoku* this, PlayState* play) { + Player* player = GET_PLAYER(play); + s16 sp2A; + s32 temp_ft4; + s32 temp_ft5; + s16 yaw; + + Math_SmoothStepToS(&this->picto.actor.shape.rot.y, this->picto.actor.yawTowardsPlayer, 1, 0xFA0, 1); + if (!func_80B85858(this, play) && !func_80B85A00(this, play, false)) { + this->picto.actor.world.rot.y = this->picto.actor.shape.rot.y + 0x4000; + sp2A = player->actor.shape.rot.y + 0x8000; + if (Math_SinS(sp2A - this->picto.actor.shape.rot.y) >= 0.0f) { + this->picto.actor.speedXZ -= 0.25f; + if (this->picto.actor.speedXZ < -8.0f) { + this->picto.actor.speedXZ = -8.0f; + } + } else if (Math_SinS((sp2A - this->picto.actor.shape.rot.y)) < 0.0f) { + this->picto.actor.speedXZ += 0.25f; + if (this->picto.actor.speedXZ > 8.0f) { + this->picto.actor.speedXZ = 8.0f; + } + } + + if ((this->picto.actor.bgCheckFlags & 8) || + !Actor_TestFloorInDirection(&this->picto.actor, play, this->picto.actor.speedXZ, + this->picto.actor.shape.rot.y + 0x4000)) { + + if (this->picto.actor.bgCheckFlags & 8) { + if (this->picto.actor.speedXZ >= 0.0f) { + yaw = this->picto.actor.shape.rot.y + 0x4000; + } else { + yaw = this->picto.actor.shape.rot.y - 0x4000; + } + yaw = this->picto.actor.wallYaw - yaw; + } else { + this->picto.actor.speedXZ *= -0.8f; + yaw = 0; + } + + if (ABS_ALT(yaw) > 0x4000) { + this->picto.actor.speedXZ *= -0.8f; + if (this->picto.actor.speedXZ < 0.0f) { + this->picto.actor.speedXZ -= 0.5f; + } else { + this->picto.actor.speedXZ += 0.5f; + } + } + } + + if (this->picto.actor.xzDistToPlayer <= 65.0f) { + Math_ApproachF(&this->unk_2E0, -4.0f, 1.0f, 1.5f); + } else if (this->picto.actor.xzDistToPlayer > 40.0f) { + Math_ApproachF(&this->unk_2E0, 4.0f, 1.0f, 1.5f); + } else { + Math_ApproachZeroF(&this->unk_2E0, 1.0f, 6.65f); + } + + if (this->unk_2E0 != 0.0f) { + this->picto.actor.world.pos.x += Math_SinS(this->picto.actor.shape.rot.y) * this->unk_2E0; + this->picto.actor.world.pos.z += Math_CosS(this->picto.actor.shape.rot.y) * this->unk_2E0; + } + + temp_ft4 = this->skelAnime.curFrame - this->skelAnime.playSpeed; + temp_ft5 = this->skelAnime.curFrame + this->skelAnime.playSpeed; + if (this->skelAnime.curFrame != 0.0f) { + if (((temp_ft4 < 0 && temp_ft5 > 0) || (temp_ft4 < 5 && temp_ft5 > 5))) { + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_GERUDOFT_WALK); + } + } + + if (!(play->gameplayFrames & 0x5F)) { + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_PIRATE_BREATH); + } + + if (this->picto.actor.xzDistToPlayer <= 65.0f) { + func_80B87F70(this); + } else if (this->unk_2B2 == 0) { + if (Actor_OtherIsTargeted(play, &this->picto.actor) && (Rand_ZeroOne() > 0.5f)) { + func_80B87E28(this); + } else { + func_80B872A4(this); + } + } + } +} + +// EnKaizoku_SetupStunned +void func_80B891B8(EnKaizoku* this) { + if (this->picto.actor.bgCheckFlags & 1) { + this->picto.actor.speedXZ = 0.0f; + } + + if (this->action == KAIZOKU_ACTION_11) { + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_5); + } + + if (((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) || + (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) && + (this->unk_2B8 == 0)) { + this->unk_2B8 = 0; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE; + } + + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_COMMON_FREEZE); + this->unk_2D8 = 1; + + if ((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_SFX) && + (this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) { + this->unk_2B6 = 40; + } + + this->action = KAIZOKU_ACTION_13; + this->actionFunc = func_80B89280; +} + +// EnKaizoku_Stunned +void func_80B89280(EnKaizoku* this, PlayState* play) { + if (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) { + if (this->unk_2B8 != 0 && this->unk_2B8 < 60) { + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX; + } + } + + if (this->picto.actor.bgCheckFlags & 2) { + this->picto.actor.speedXZ = 0.0f; + } + + if (this->picto.actor.bgCheckFlags & 1) { + if (this->picto.actor.speedXZ < 0.0f) { + this->picto.actor.speedXZ += 0.05f; + } + } + + if ((this->unk_2B6 == 0) && (this->unk_2B8 == 0) && !CHECK_FLAG_ALL(this->picto.actor.flags, ACTOR_FLAG_2000) && + (this->picto.actor.bgCheckFlags & 1)) { + this->unk_2D8 = 0; + func_80B85A00(this, play, true); + + if (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX || + this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) { + Actor_SpawnIceEffects(play, &this->picto.actor, this->bodyPartsPos, ARRAY_COUNT(this->bodyPartsPos), 2, + 0.7f, 0.4f); + this->unk_2B8 = 0; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE; + this->picto.actor.flags |= ACTOR_FLAG_400; + } + } +} + +void func_80B893CC(EnKaizoku* this, PlayState* play) { + Vec3f sp34; + + Matrix_RotateYS(this->picto.actor.yawTowardsPlayer, MTXMODE_NEW); + Matrix_MultVecZ(-10.0f, &sp34); + Math_Vec3f_Copy(&this->unk_3C4, &sp34); + this->lookTimer = 0; + this->unk_2D8 = 0; + this->picto.actor.speedXZ = 0.0f; + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_5); + + if (((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) || + (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) && + (this->unk_2B8 != 0)) { + Actor_SpawnIceEffects(play, &this->picto.actor, this->bodyPartsPos, ARRAY_COUNT(this->bodyPartsPos), 2, 0.7f, + 0.4f); + this->unk_2B8 = 0; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE; + this->picto.actor.flags |= ACTOR_FLAG_400; + } + + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_PIRATE_DAMAGE); + this->action = KAIZOKU_ACTION_14; + this->actionFunc = func_80B894C0; +} + +void func_80B894C0(EnKaizoku* this, PlayState* play) { + s16 temp_v0; + + Math_SmoothStepToS(&this->picto.actor.shape.rot.y, this->picto.actor.yawTowardsPlayer, 1, 4500, 0); + if (!func_80B85858(this, play) && !func_80B85A00(this, play, false) && (this->unk_3C4.x < 1.0f) && + (this->unk_3C4.z < 1.0f)) { + temp_v0 = this->picto.actor.wallYaw - this->picto.actor.shape.rot.y; + if (this->picto.actor.bgCheckFlags & 8) { + if (ABS_ALT(temp_v0) < 0x3000 && (this->picto.actor.xzDistToPlayer < 90.0f)) { + func_80B87C7C(this); + return; + } + } + + if (this->picto.actor.xzDistToPlayer <= 65.0f && ((play->gameplayFrames % 8) != 0)) { + this->swordCollider.info.elemType = ELEMTYPE_UNK2; + func_80B87F70(this); + } else { + func_80B87E28(this); + } + } +} + +void func_80B8960C(EnKaizoku* this, PlayState* play) { + Vec3f sp24; + + this->picto.actor.flags |= ACTOR_FLAG_100000; + Matrix_RotateYS(this->picto.actor.yawTowardsPlayer, MTXMODE_NEW); + Matrix_MultVecZ(-10.0f, &sp24); + Math_Vec3f_Copy(&this->unk_3C4, &sp24); + EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_16); + + if (((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) || + (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) && + (this->unk_2B8 == 0)) { + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE; + } + this->picto.actor.speedXZ = 0.0f; + this->unk_2D8 = 1; + func_800B7298(play, &this->picto.actor, 0x7B); + Enemy_StartFinishingBlow(play, &this->picto.actor); + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_PIRATE_DEAD); + this->picto.actor.flags |= ACTOR_FLAG_8000000; + this->picto.actor.flags &= ~ACTOR_FLAG_1; + this->picto.actor.flags &= ~ACTOR_FLAG_400; + this->unk_598 = 0; + this->unk_59C = 0; + this->action = KAIZOKU_ACTION_15; + this->actionFunc = func_80B8971C; +} + +void func_80B8971C(EnKaizoku* this, PlayState* play) { + f32 curFrame = this->skelAnime.curFrame; + Player* player; + + if (this->picto.actor.bgCheckFlags & 2) { + this->picto.actor.speedXZ = 0.0f; + } + + if (this->picto.actor.bgCheckFlags & 1) { + Math_SmoothStepToF(&this->picto.actor.speedXZ, 0.0f, 1.0f, 0.5f, 0.0f); + } + + if ((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) || + (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) { + if (this->unk_2B8 == 0) { + return; + } + Actor_SpawnIceEffects(play, &this->picto.actor, this->bodyPartsPos, ARRAY_COUNT(this->bodyPartsPos), 2, 0.7f, + 0.4f); + this->unk_2B8 = 0; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE; + } + + if (curFrame >= 25.0f) { + player = GET_PLAYER(play); + if (this->subCamId == 0) { + if (!ActorCutscene_GetCanPlayNext(this->unk_2D6)) { + ActorCutscene_SetIntentToPlay(this->unk_2D6); + return; + } + ActorCutscene_StartAndSetUnkLinkFields(this->unk_2D6, &this->picto.actor); + this->subCamId = ActorCutscene_GetCurrentSubCamId(this->picto.actor.cutscene); + } + + Math_Vec3f_Copy(&this->unk_3C4, &gZeroVec3f); + player->actor.world.pos.x = this->picto.actor.home.pos.x + 90.0f; + player->actor.world.pos.z = this->picto.actor.home.pos.z + 30.0f; + this->picto.actor.world.pos.x = this->picto.actor.home.pos.x; + this->picto.actor.world.pos.z = this->picto.actor.home.pos.z; + + this->subCamEye.x = this->unk_5C8.x = player->actor.world.pos.x + 39.0f; + this->subCamEye.y = this->unk_5C8.y = player->actor.world.pos.y + 4.0f; + this->subCamEye.z = this->unk_5C8.z = player->actor.world.pos.z - 41.0f; + + this->subCamAt.x = this->unk_5D4.x = player->actor.world.pos.x - 150.0f; + this->subCamAt.y = this->unk_5D4.y = player->actor.world.pos.y + 60.0f; + this->subCamAt.z = this->unk_5D4.z = player->actor.world.pos.z + 50.0f; + + player->actor.shape.rot.y = player->actor.world.rot.y = + Math_Vec3f_Yaw(&player->actor.world.pos, &this->picto.actor.world.pos); + + if (this->subCamId != 0) { + this->subCamUp.x = 0.0f; + this->subCamUp.y = 1.0f; + this->subCamUp.z = 0.0f; + Play_SetCameraAtEyeUp(play, this->subCamId, &this->subCamAt, &this->subCamEye, &this->subCamUp); + } + } + + Math_SmoothStepToS(&this->picto.actor.shape.rot.y, this->picto.actor.yawTowardsPlayer, 1, 0xFA0, 1); + SkelAnime_Update(&this->skelAnime); + if (this->frameCount <= curFrame) { + this->unk_2D8 = 0; + func_80B86B58(this); + } else if (Animation_OnFrame(&this->skelAnime, 10.0f)) { + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_EN_GERUDOFT_DOWN); + } +} + +void func_80B89A08(EnKaizoku* this, PlayState* play) { + s32 sp64 = 0; + Vec3f sp58; + s32 i; + + if (gSaveContext.save.playerData.health <= 0x10) { + this->swordCollider.info.toucher.damage = 0; + } else { + this->swordCollider.info.toucher.damage = 4; + } + + if (!(this->swordCollider.base.atFlags & AT_BOUNCED) && (this->swordCollider.base.atFlags & AT_HIT)) { + if ((gSaveContext.save.playerData.health <= 0x10) && (this->action != KAIZOKU_ACTION_16)) { + this->unk_2D0 = 2; + this->subCamId = 0; + this->picto.actor.flags |= ACTOR_FLAG_100000; + + if (!ActorCutscene_GetCanPlayNext(this->unk_2D6)) { + ActorCutscene_SetIntentToPlay(this->unk_2D6); + this->actionFunc = func_80B86804; + } else { + ActorCutscene_StartAndSetUnkLinkFields(this->unk_2D6, &this->picto.actor); + this->subCamId = ActorCutscene_GetCurrentSubCamId(this->picto.actor.cutscene); + this->actionFunc = func_80B86804; + } + return; + } else if ((this->action == KAIZOKU_ACTION_11) && (this->swordCollider.base.at == &GET_PLAYER(play)->actor)) { + func_800B8D98(play, &this->picto.actor, 3.0f, this->picto.actor.yawTowardsPlayer, 1.0f); + Health_ChangeBy(play, -0xC); + if ((gSaveContext.save.playerData.health <= 0x10) && (this->action != KAIZOKU_ACTION_16)) { + Health_ChangeBy(play, 0x10); + this->unk_2D0 = 2; + this->subCamId = 0; + this->picto.actor.flags |= ACTOR_FLAG_100000; + + if (!ActorCutscene_GetCanPlayNext(this->unk_2D6)) { + ActorCutscene_SetIntentToPlay(this->unk_2D6); + this->actionFunc = func_80B86804; + } else { + ActorCutscene_StartAndSetUnkLinkFields(this->unk_2D6, &this->picto.actor); + this->subCamId = ActorCutscene_GetCurrentSubCamId(this->picto.actor.cutscene); + this->actionFunc = func_80B86804; + } + return; + } + } + + if (this->swordCollider.base.at->id == ACTOR_OBJ_TARU) { + this->swordCollider.base.at->home.rot.z = 1; + } + } + + if ((this->picto.actor.bgCheckFlags & 8) && (this->picto.actor.wallBgId != BG_ACTOR_MAX) && + ((this->action == KAIZOKU_ACTION_2) || (this->action == KAIZOKU_ACTION_3) || + (this->action == KAIZOKU_ACTION_4) || (this->action == KAIZOKU_ACTION_1))) { + func_80B87F70(this); + } + + if ((this->bodyCollider.base.acFlags & AC_HIT) && (this->action > KAIZOKU_ACTION_0) && (this->unk_2D0 < 2) && + (this->action != KAIZOKU_ACTION_6) && (this->action != KAIZOKU_ACTION_12) && + (this->action != KAIZOKU_ACTION_14) && (this->action != KAIZOKU_ACTION_15)) { + Actor_SetDropFlag(&this->picto.actor, &this->bodyCollider.info); + AudioSfx_StopByPosAndId(&this->picto.actor.projectedPos, NA_SE_EN_PIRATE_BREATH); + + switch (this->picto.actor.colChkInfo.damageEffect) { + case KAIZOKU_DMGEFF_5: + if (((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_SFX) && + (this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) || + (this->unk_2B8 == 0)) { + this->unk_2B8 = 40; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_ELECTRIC_SPARKS_MEDIUM; + } + /* fallthrough */ + case KAIZOKU_DMGEFF_1: + if (((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_SFX) && + (this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) || + this->unk_2B8 == 0) { + Actor_SetColorFilter(&this->picto.actor, 0, 120, 0, 40); + this->bodyCollider.info.elemType = ELEMTYPE_UNK1; + this->bodyCollider.base.colType = COLTYPE_HIT3; + this->swordCollider.info.elemType = ELEMTYPE_UNK2; + func_80B891B8(this); + } + break; + + case KAIZOKU_DMGEFF_F: + if ((this->action != KAIZOKU_ACTION_5) && (this->action != KAIZOKU_ACTION_7) && + (this->action < KAIZOKU_ACTION_14)) { + sp64 = 1; + } + break; + + case KAIZOKU_DMGEFF_E: + sp64 = 1; + break; + + case KAIZOKU_DMGEFF_D: + if (this->action == KAIZOKU_ACTION_13) { + sp64 = 1; + } else if (this->action != KAIZOKU_ACTION_6) { + func_80B87C7C(this); + } + break; + + case KAIZOKU_DMGEFF_2: + if ((this->action != KAIZOKU_ACTION_5) && (this->action != KAIZOKU_ACTION_7) && + (this->action < KAIZOKU_ACTION_14)) { + this->unk_2B8 = 40; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE; + sp64 = 1; + } + break; + + case KAIZOKU_DMGEFF_FREEZE: + if (((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_SFX) && + (this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) || + (this->unk_2B8 == 0)) { + Actor_ApplyDamage(&this->picto.actor); + this->bodyCollider.info.elemType = ELEMTYPE_UNK1; + this->bodyCollider.base.colType = COLTYPE_HIT3; + this->swordCollider.info.elemType = ELEMTYPE_UNK4; + this->unk_2B8 = 80; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FROZEN_SFX; + this->drawDmgEffScale = 0.0f; + this->drawDmgEffFrozenSteamScale = 1.5f; + this->picto.actor.flags &= ~ACTOR_FLAG_400; + if (this->picto.actor.colChkInfo.health <= 0) { + func_80B8960C(this, play); + } else { + func_80B891B8(this); + } + } + break; + + case KAIZOKU_DMGEFF_4: + if (((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_SFX) && + (this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) || + (this->unk_2B8 == 0)) { + this->unk_2B8 = 20; + this->drawDmgEffType = ACTOR_DRAW_DMGEFF_LIGHT_ORBS; + Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->picto.actor.focus.pos.x, + this->picto.actor.focus.pos.y, this->picto.actor.focus.pos.z, 0, 0, 0, + CLEAR_TAG_LARGE_LIGHT_RAYS); + sp64 = 1; + } + break; + } + + if (sp64) { + Actor_SetColorFilter(&this->picto.actor, 0x4000, 255, 0, 8); + Actor_ApplyDamage(&this->picto.actor); + if (this->picto.actor.colChkInfo.health <= 0) { + func_80B8960C(this, play); + return; + } + + this->bodyCollider.info.elemType = ELEMTYPE_UNK1; + this->bodyCollider.base.colType = COLTYPE_HIT3; + this->swordCollider.info.elemType = ELEMTYPE_UNK4; + Math_Vec3f_Copy(&sp58, &this->picto.actor.focus.pos); + for (i = 0; i < 3; i++) { + sp58.y += Rand_ZeroFloat(20.0f); + CollisionCheck_BlueBlood(play, NULL, &sp58); + } + + func_80B893CC(this, play); + } + } else if (this->bodyCollider.base.acFlags & AC_HIT) { + if ((this->action != KAIZOKU_ACTION_6) && (this->action != KAIZOKU_ACTION_14) && + (this->action != KAIZOKU_ACTION_15)) { + Vec3f pos; + Player* player = GET_PLAYER(play); + + pos.x = this->bodyCollider.info.bumper.hitPos.x; + pos.y = this->bodyCollider.info.bumper.hitPos.y; + pos.z = this->bodyCollider.info.bumper.hitPos.z; + + if (player->transformation != PLAYER_FORM_HUMAN) { + player->unk_B84 = this->picto.actor.yawTowardsPlayer; + player->unk_B80 = 15.0f; + } + + this->bodyCollider.base.acFlags &= ~AC_HIT; + Actor_PlaySfxAtPos(&this->picto.actor, NA_SE_IT_SHIELD_BOUND); + EffectSsHitmark_SpawnFixedScale(play, 3, &pos); + CollisionCheck_SpawnShieldParticlesMetal(play, &pos); + } + } +} + +static Vec3f sFootOffset = { 300.0f, 0.0f, 0.0f }; + +static Vec3f sSwordTipOffset = { 0.0f, -3000.0f, 0.0f }; +static Vec3f sSwordHiltOffset = { 400.0f, 0.0f, 0.0f }; + +static Vec3f sSwordQuadOffset1 = { 1600.0f, -4000.0f, 0.0f }; +static Vec3f sSwordQuadOffset0 = { -3000.0f, -2000.0f, 1300.0f }; +static Vec3f sSwordQuadOffset3 = { -3000.0f, -2000.0f, -1300.0f }; +static Vec3f sSwordQuadOffset2 = { 1000.0f, 1000.0f, 0.0f }; + +static TexturePtr sEyeTextures[] = { + gKaizokuEyeOpenTex, + gKaizokuEyeHalfTex, + gKaizokuEyeClosedTex, + gKaizokuEyeHalfTex, +}; + +void EnKaizoku_Update(Actor* thisx, PlayState* play2) { + EnKaizoku* this = THIS; + PlayState* play = play2; + Vec3f sp34; + s32 pad; + + if (this->unk_2D8 == 0) { + SkelAnime_Update(&this->skelAnime); + } + + if (this->action != KAIZOKU_ACTION_0) { + func_80B85900(this); + } + + if (this->blinkTimer != 0) { + this->blinkTimer--; + } + if (this->unk_2B2 != 0) { + this->unk_2B2--; + } + if (this->lookTimer != 0) { + this->lookTimer--; + } + if (this->unk_2B6 != 0) { + this->unk_2B6--; + } + if (this->unk_598 != 0) { + this->unk_598--; + } + if (this->unk_2B8 != 0) { + this->unk_2B8--; + } + + this->actionFunc(this, play); + Actor_MoveWithGravity(&this->picto.actor); + if (this->action != KAIZOKU_ACTION_0) { + func_80B89A08(this, play); + } + if (this->action != KAIZOKU_ACTION_0) { + Actor_SetFocus(&this->picto.actor, 60.0f); + } + + Actor_SetScale(&this->picto.actor, 0.0125f); + if (this->blinkTimer == 0) { + this->eyeIndex++; + if (this->eyeIndex >= ARRAY_COUNT(sEyeTextures)) { + this->eyeIndex = 0; + this->blinkTimer = Rand_S16Offset(20, 60); + } + } + + if (this->picto.actor.bgCheckFlags & 1) { + Matrix_RotateYS(this->picto.actor.shape.rot.y + this->unk_2F4, 0); + Matrix_MultVecZ(this->unk_2F0, &sp34); + this->picto.actor.world.pos.x += this->unk_3C4.x + sp34.x; + this->picto.actor.world.pos.z += this->unk_3C4.z + sp34.z; + Math_ApproachZeroF(&this->unk_3C4.x, 1.0f, 2.0f); + Math_ApproachZeroF(&this->unk_3C4.z, 1.0f, 2.0f); + Math_ApproachZeroF(&this->unk_2F0, 1.0f, 5.0f); + } + + Actor_UpdateBgCheckInfo(play, &this->picto.actor, 35.0f, 40.0f, 35.0f, 0x1F); + Collider_UpdateCylinder(&this->picto.actor, &this->bodyCollider); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyCollider.base); + if ((this->unk_2D0 < 2) && (this->action != KAIZOKU_ACTION_0)) { + CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyCollider.base); + } + if (this->swordState > 0) { + CollisionCheck_SetAT(play, &play->colChkCtx, &this->swordCollider.base); + } +} + +s32 EnKaizoku_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { + EnKaizoku* this = THIS; + + OPEN_DISPS(play->state.gfxCtx); + + if (limbIndex == KAIZOKU_LIMB_05) { + *dList = NULL; + } + + if (limbIndex == KAIZOKU_LIMB_03) { + rot->z += this->headRot.x; + rot->x += this->headRot.y; + rot->y += this->headRot.z; + } else if (limbIndex == KAIZOKU_LIMB_06) { + gDPPipeSync(POLY_OPA_DISP++); + gDPSetEnvColor(POLY_OPA_DISP++, D_80B8AB24[this->unk_2EC].r, D_80B8AB24[this->unk_2EC].g, + D_80B8AB24[this->unk_2EC].b, 255); + } else { + gDPPipeSync(POLY_OPA_DISP++); + gDPSetEnvColor(POLY_OPA_DISP++, D_80B8AB30[this->unk_2EC].r, D_80B8AB30[this->unk_2EC].g, + D_80B8AB30[this->unk_2EC].b, 255); + } + + CLOSE_DISPS(play->state.gfxCtx); + + return false; +} + +void EnKaizoku_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { + Vec3f swordTip; + Vec3f swordHilt; + EnKaizoku* this = THIS; + + if (limbIndex == KAIZOKU_LIMB_R_SWORD) { + Matrix_MultVec3f(&sSwordQuadOffset1, &this->swordCollider.dim.quad[1]); + Matrix_MultVec3f(&sSwordQuadOffset0, &this->swordCollider.dim.quad[0]); + Matrix_MultVec3f(&sSwordQuadOffset3, &this->swordCollider.dim.quad[3]); + Matrix_MultVec3f(&sSwordQuadOffset2, &this->swordCollider.dim.quad[2]); + Collider_SetQuadVertices(&this->swordCollider, &this->swordCollider.dim.quad[0], + &this->swordCollider.dim.quad[1], &this->swordCollider.dim.quad[2], + &this->swordCollider.dim.quad[3]); + Matrix_MultVec3f(&sSwordTipOffset, &swordTip); + Matrix_MultVec3f(&sSwordHiltOffset, &swordHilt); + + if ((this->swordState == 1) && ((this->action == KAIZOKU_ACTION_9) || (this->action == KAIZOKU_ACTION_11))) { + EffectBlure_AddVertex(Effect_GetByIndex(this->blureIndex), &swordTip, &swordHilt); + } else if (this->swordState != 0) { + EffectBlure_AddSpace(Effect_GetByIndex(this->blureIndex)); + this->swordState = 0; + } + } else { + Actor_SetFeetPos(&this->picto.actor, limbIndex, KAIZOKU_LIMB_L_FOOT, &sFootOffset, KAIZOKU_LIMB_R_FOOT, + &sFootOffset); + } + + if (limbIndex == KAIZOKU_LIMB_L_FOOT) { + Matrix_MultVec3f(&sFootOffset, &this->leftFootPos); + } else if (limbIndex == KAIZOKU_LIMB_R_FOOT) { + Matrix_MultVec3f(&sFootOffset, &this->rightFootPos); + } + + if (limbIndex == KAIZOKU_LIMB_02 || limbIndex == KAIZOKU_LIMB_06 || limbIndex == KAIZOKU_LIMB_07 || + limbIndex == KAIZOKU_LIMB_08 || limbIndex == KAIZOKU_LIMB_0A || limbIndex == KAIZOKU_LIMB_0C || + limbIndex == KAIZOKU_LIMB_0D || limbIndex == KAIZOKU_LIMB_0F || limbIndex == KAIZOKU_LIMB_11 || + limbIndex == KAIZOKU_LIMB_12 || limbIndex == KAIZOKU_LIMB_L_FOOT || limbIndex == KAIZOKU_LIMB_14 || + limbIndex == KAIZOKU_LIMB_15 || limbIndex == KAIZOKU_LIMB_R_FOOT || limbIndex == KAIZOKU_LIMB_17) { + Matrix_MultZero(&this->bodyPartsPos[this->bodyPartsPosIndex]); + + this->bodyPartsPosIndex++; + if (this->bodyPartsPosIndex >= ARRAY_COUNT(this->bodyPartsPos)) { + this->bodyPartsPosIndex = 0; + } + } +} + +void EnKaizoku_TransformLimbDraw(PlayState* play, s32 limbIndex, Actor* thisx) { + EnKaizoku* this = THIS; + + if (limbIndex == KAIZOKU_LIMB_R_SWORD) { + Matrix_Scale(this->unk_2F8.x, this->unk_2F8.y, this->unk_2F8.z, MTXMODE_APPLY); + } + if (limbIndex == KAIZOKU_LIMB_10) { + Matrix_Scale(this->unk_304.x, this->unk_304.y, this->unk_304.z, MTXMODE_APPLY); + } +} + +void EnKaizoku_Draw(Actor* thisx, PlayState* play) { + f32 pad[4]; + f32 drawDmgEffAlpha; + EnKaizoku* this = THIS; + + func_8012C2DC(play->state.gfxCtx); + func_8012C28C(play->state.gfxCtx); + + OPEN_DISPS(play->state.gfxCtx); + + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sEyeTextures[this->eyeIndex])); + SkelAnime_DrawTransformFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, + this->skelAnime.dListCount, EnKaizoku_OverrideLimbDraw, EnKaizoku_PostLimbDraw, + EnKaizoku_TransformLimbDraw, &this->picto.actor); + + if (this->unk_2B8 != 0) { + drawDmgEffAlpha = this->unk_2B8 * 0.05f; + + if ((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_SFX) || + (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX)) { + this->drawDmgEffScale += 0.3f; + if (this->drawDmgEffScale > 0.5f) { + this->drawDmgEffScale = 0.5f; + } + Math_ApproachF(&this->drawDmgEffFrozenSteamScale, this->drawDmgEffScale, 0.1f, 0.04f); + } else { + this->drawDmgEffScale = 0.8f; + this->drawDmgEffFrozenSteamScale = 0.8f; + } + + Actor_DrawDamageEffects(play, &this->picto.actor, this->bodyPartsPos, ARRAY_COUNT(this->bodyPartsPos), + this->drawDmgEffScale, this->drawDmgEffFrozenSteamScale, drawDmgEffAlpha, + this->drawDmgEffType); + } + + CLOSE_DISPS(play->state.gfxCtx); +} diff --git a/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.h b/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.h index cc282f19f..ad161088e 100644 --- a/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.h +++ b/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.h @@ -2,19 +2,98 @@ #define Z_EN_KAIZOKU_H #include "global.h" +#include "z64snap.h" +#include "objects/object_kz/object_kz.h" + +#define KAIZOKU_GET_EXIT_INDEX(thisx) ((thisx)->params & 0x3F) +#define KAIZOKU_GET_SWITCHFLAG(thisx) (((thisx)->params >> 6) & 0x7F) struct EnKaizoku; typedef void (*EnKaizokuActionFunc)(struct EnKaizoku*, PlayState*); +typedef enum EnKaizokuAnimation { + /* 0 */ EN_KAIZOKU_ANIM_0, + /* 1 */ EN_KAIZOKU_ANIM_1, + /* 2 */ EN_KAIZOKU_ANIM_2, + /* 3 */ EN_KAIZOKU_ANIM_3, + /* 4 */ EN_KAIZOKU_ANIM_4, + /* 5 */ EN_KAIZOKU_ANIM_5, + /* 6 */ EN_KAIZOKU_ANIM_6, + /* 7 */ EN_KAIZOKU_ANIM_7, + /* 8 */ EN_KAIZOKU_ANIM_8, + /* 9 */ EN_KAIZOKU_ANIM_9, + /* 10 */ EN_KAIZOKU_ANIM_10, + /* 11 */ EN_KAIZOKU_ANIM_11, + /* 12 */ EN_KAIZOKU_ANIM_12, + /* 13 */ EN_KAIZOKU_ANIM_13, + /* 14 */ EN_KAIZOKU_ANIM_14, + /* 15 */ EN_KAIZOKU_ANIM_15, + /* 16 */ EN_KAIZOKU_ANIM_16, + /* 17 */ EN_KAIZOKU_ANIM_17, + /* 18 */ EN_KAIZOKU_ANIM_18, + /* 19 */ EN_KAIZOKU_ANIM_MAX +} EnKaizokuAnimation; + typedef struct EnKaizoku { - /* 0x000 */ Actor actor; - /* 0x144 */ char unk_144[0x168]; + /* 0x000 */ PictoActor picto; + /* 0x148 */ SkelAnime skelAnime; + /* 0x18C */ Vec3s jointTable[KAIZOKU_LIMB_MAX]; + /* 0x21C */ Vec3s morphTable[KAIZOKU_LIMB_MAX]; /* 0x2AC */ EnKaizokuActionFunc actionFunc; - /* 0x2B0 */ char unk_2B0[0x40]; + /* 0x2B0 */ s16 action; + /* 0x2B2 */ s16 unk_2B2; + /* 0x2B4 */ s16 lookTimer; + /* 0x2B6 */ s16 unk_2B6; + /* 0x2B8 */ s16 unk_2B8; + /* 0x2BA */ s16 drawDmgEffType; + /* 0x2BC */ s16 switchFlag; + /* 0x2BE */ s16 unk_2BE; + /* 0x2C0 */ f32 drawDmgEffScale; + /* 0x2C4 */ f32 drawDmgEffFrozenSteamScale; + /* 0x2C8 */ s16 unk_2C8; + /* 0x2CA */ s16 unk_2CA; + /* 0x2CC */ s16 eyeIndex; + /* 0x2CE */ s16 blinkTimer; + /* 0x2D0 */ s16 unk_2D0; + /* 0x2D2 */ s16 swordState; + /* 0x2D4 */ s16 exitIndex; + /* 0x2D6 */ s16 unk_2D6; + /* 0x2D8 */ u8 unk_2D8; + /* 0x2D9 */ u8 unk_2D9; + /* 0x2DC */ f32 frameCount; + /* 0x2E0 */ f32 unk_2E0; + /* 0x2E4 */ EnKaizokuAnimation animIndex; + /* 0x2E8 */ s32 bodyPartsPosIndex; + /* 0x2EC */ s32 unk_2EC; /* 0x2F0 */ f32 unk_2F0; /* 0x2F4 */ s16 unk_2F4; - /* 0x2F6 */ char unk_2F6[0x2FA]; + /* 0x2F8 */ Vec3f unk_2F8; + /* 0x304 */ Vec3f unk_304; + /* 0x310 */ Vec3f bodyPartsPos[15]; + /* 0x3C4 */ Vec3f unk_3C4; + /* 0x3D0 */ s32 blureIndex; + /* 0x3D4 */ ColliderCylinder bodyCollider; + /* 0x420 */ ColliderQuad swordCollider; + /* 0x4A0 */ ColliderTris blockCollider; // Unused. Inferred from OoT + /* 0x4C0 */ ColliderTrisElement blockElements[2]; // Unused. Inferred from OoT + /* 0x578 */ Vec3s headRot; + /* 0x580 */ Vec3f rightFootPos; + /* 0x58C */ Vec3f leftFootPos; + /* 0x598 */ s32 unk_598; + /* 0x59C */ s16 unk_59C; + /* 0x59E */ s16 subCamId; + /* 0x5A0 */ s16 unk_5A0; + /* 0x5A2 */ s16 unk_5A2; + /* 0x5A4 */ Vec3f subCamEye; + /* 0x5B0 */ Vec3f subCamAt; + /* 0x5BC */ Vec3f subCamUp; + /* 0x5C8 */ Vec3f unk_5C8; + /* 0x5D4 */ Vec3f unk_5D4; + /* 0x5E0 */ f32 unk_5E0; + /* 0x5E4 */ f32 unk_5E4; + /* 0x5E8 */ f32 unk_5E8; + /* 0x5EC */ f32 unk_5EC; } EnKaizoku; // size = 0x5F0 #endif // Z_EN_KAIZOKU_H diff --git a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c index 18faf86c1..756023f01 100644 --- a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c +++ b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c @@ -177,14 +177,14 @@ void EnKakasi_Init(Actor* thisx, PlayState* play) { } if (this->aboveGroundStatus != 0) { - if (gSaveContext.save.weekEventReg[79] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_08)) { this->aboveGroundStatus = ENKAKASI_ABOVE_GROUND_TYPE; this->songSummonDist = 80.0f; EnKakasi_SetupIdleUnderground(this); } else { Actor_SetFocus(&this->picto.actor, 60.0f); this->picto.validationFunc = EnKakasi_ValidatePictograph; - if (gSaveContext.save.weekEventReg[83] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_83_01)) { EnKakasi_InitTimeSkipDialogue(this); } else { EnKakasi_SetupIdleStanding(this); @@ -301,12 +301,12 @@ void EnKakasi_TimeSkipDialogue(EnKakasi* this, PlayState* play) { if (gSaveContext.respawnFlag != -4 && gSaveContext.respawnFlag != -8) { if (gSaveContext.save.time != CLOCK_TIME(6, 0) && gSaveContext.save.time != CLOCK_TIME(18, 0) && - !(gSaveContext.eventInf[1] & 0x80)) { + !CHECK_EVENTINF(EVENTINF_17)) { if (this->picto.actor.textId == 0) { // dialogue after skipped time 'did you feel that? went by in an instant' this->picto.actor.textId = 0x1653; - gSaveContext.save.weekEventReg[83] &= (u8)~1; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_83_01); this->talkState = TEXT_STATE_5; player->stateFlags1 |= PLAYER_STATE1_20; this->picto.actor.flags |= ACTOR_FLAG_10000; @@ -318,7 +318,7 @@ void EnKakasi_TimeSkipDialogue(EnKakasi* this, PlayState* play) { this->picto.actor.flags &= ~ACTOR_FLAG_10000; this->actionFunc = EnKakasi_RegularDialogue; } else { - func_800B8500(&this->picto.actor, play, 9999.9f, 9999.9f, PLAYER_AP_MINUS1); + func_800B8500(&this->picto.actor, play, 9999.9f, 9999.9f, PLAYER_IA_MINUS1); } } } @@ -409,7 +409,7 @@ void EnKakasi_RegularDialogue(EnKakasi* this, PlayState* play) { } if (this->unkState1A8 == 2 && this->unkState196 == 2) { - func_800B7298(play, &this->picto.actor, 0x49); + func_800B7298(play, &this->picto.actor, PLAYER_CSMODE_73); this->unkState1A8 = 0; } @@ -418,7 +418,7 @@ void EnKakasi_RegularDialogue(EnKakasi* this, PlayState* play) { if (this->talkState == TEXT_STATE_5) { // bad song input if (this->unkState196 == 2 && this->picto.actor.textId == 0x1647) { - func_800B7298(play, &this->picto.actor, 6); + func_800B7298(play, &this->picto.actor, PLAYER_CSMODE_6); } // after timeskip @@ -445,7 +445,7 @@ void EnKakasi_RegularDialogue(EnKakasi* this, PlayState* play) { } else if (this->picto.actor.textId == 0x165D || this->picto.actor.textId == 0x165F || this->picto.actor.textId == 0x1660 || this->picto.actor.textId == 0x1652) { - func_800B7298(play, &this->picto.actor, 4); + func_800B7298(play, &this->picto.actor, PLAYER_CSMODE_4); if (ActorCutscene_GetCurrentIndex() == 0x7C) { ActorCutscene_Stop(0x7C); ActorCutscene_SetIntentToPlay(this->actorCutscenes[0]); @@ -675,7 +675,7 @@ void EnKakasi_PostSongLearnDialogue(EnKakasi* this, PlayState* play) { if (this->unk190 == 0) { func_801477B4(play); - func_800B7298(play, &this->picto.actor, 0x56); + func_800B7298(play, &this->picto.actor, PLAYER_CSMODE_86); this->picto.actor.textId = 0x1648; Message_StartTextbox(play, (this->picto.actor.textId), &this->picto.actor); this->unkState1A8 = 0; @@ -711,7 +711,7 @@ void EnKakasi_PostSongLearnDialogue(EnKakasi* this, PlayState* play) { Math_Vec3f_Copy(&this->unk22C, &this->picto.actor.home.pos); ActorCutscene_StartAndSetUnkLinkFields(this->actorCutscenes[0], &this->picto.actor); this->subCamId = ActorCutscene_GetCurrentSubCamId(this->picto.actor.cutscene); - func_800B7298(play, &this->picto.actor, 0x56); + func_800B7298(play, &this->picto.actor, PLAYER_CSMODE_86); this->unkState1A8 = 1; } @@ -744,7 +744,7 @@ void EnKakasi_PostSongLearnDialogue(EnKakasi* this, PlayState* play) { } if (this->picto.actor.textId == 0x1648) { - func_800B7298(play, &this->picto.actor, 7); + func_800B7298(play, &this->picto.actor, PLAYER_CSMODE_7); this->picto.actor.textId = 0x1649; if (this->animIndex != ENKAKASI_ANIM_ARMS_CROSSED_ROCKING) { EnKakasi_ChangeAnim(this, ENKAKASI_ANIM_ARMS_CROSSED_ROCKING); @@ -916,7 +916,7 @@ void EnKakasi_DancingNightAway(EnKakasi* this, PlayState* play) { this->unk190++; this->unk204 = 0xA; if (this->unk190 == 0xE) { - func_800B7298(play, &this->picto.actor, 0x49); + func_800B7298(play, &this->picto.actor, PLAYER_CSMODE_73); func_80165690(); this->unk204 = 0x14; } @@ -930,19 +930,21 @@ void EnKakasi_DancingNightAway(EnKakasi* this, PlayState* play) { player = GET_PLAYER(play); Play_SetRespawnData(&play->state, RESPAWN_MODE_DOWN, Entrance_CreateFromSpawn(0), player->unk_3CE, - 0xBFF, &player->unk_3C0, player->unk_3CC); + PLAYER_PARAMS(0xFF, PLAYER_INITMODE_B), &player->unk_3C0, player->unk_3CC); func_80169EFC(&play->state); + //! FAKE if (0) {} + if (gSaveContext.save.time > CLOCK_TIME(18, 0) || gSaveContext.save.time < CLOCK_TIME(6, 0)) { gSaveContext.save.time = CLOCK_TIME(6, 0); gSaveContext.respawnFlag = -4; - gSaveContext.eventInf[2] |= 0x80; + SET_EVENTINF(EVENTINF_27); } else { gSaveContext.save.time = CLOCK_TIME(18, 0); gSaveContext.respawnFlag = -8; } - gSaveContext.save.weekEventReg[83] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_83_01); this->unk190 = 0; this->actionFunc = EnKakasi_DoNothing; } @@ -1011,8 +1013,8 @@ void EnKakasi_DiggingAway(EnKakasi* this, PlayState* play) { Math_ApproachF(&this->picto.actor.shape.yOffset, -6000.0f, 0.5f, 200.0f); if (fabsf(this->picto.actor.shape.yOffset + 6000.0f) < 10.0f) { - gSaveContext.save.weekEventReg[79] |= 8; - func_800B7298(play, &this->picto.actor, 6); + SET_WEEKEVENTREG(WEEKEVENTREG_79_08); + func_800B7298(play, &this->picto.actor, PLAYER_CSMODE_6); ActorCutscene_Stop(this->actorCutscenes[0]); this->aboveGroundStatus = ENKAKASI_ABOVE_GROUND_TYPE; this->songSummonDist = 80.0f; @@ -1029,7 +1031,7 @@ void EnKakasi_SetupIdleUnderground(EnKakasi* this) { } void EnKakasi_IdleUnderground(EnKakasi* this, PlayState* play) { - if ((gSaveContext.save.weekEventReg[79] & 8) && this->picto.actor.xzDistToPlayer < this->songSummonDist && + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_08) && this->picto.actor.xzDistToPlayer < this->songSummonDist && (BREG(1) != 0 || play->msgCtx.ocarinaMode == 0xD)) { this->picto.actor.flags &= ~ACTOR_FLAG_8000000; play->msgCtx.ocarinaMode = 4; diff --git a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c index ff160fbf1..2260c7e27 100644 --- a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c +++ b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c @@ -148,7 +148,7 @@ void EnKendoJs_Destroy(Actor* thisx, PlayState* play) { EnKendoJs* this = THIS; Collider_DestroyCylinder(play, &this->collider); - gSaveContext.save.weekEventReg[82] &= (u8)~8; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_82_08); } void func_80B26538(EnKendoJs* this) { @@ -504,7 +504,7 @@ void func_80B27030(EnKendoJs* this, PlayState* play) { } void func_80B2714C(EnKendoJs* this) { - gSaveContext.save.weekEventReg[82] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_82_08); this->unk_28C = 1; this->unk_290 = 0; this->unk_284 = 0; @@ -565,14 +565,14 @@ void func_80B27188(EnKendoJs* this, PlayState* play) { } if (this->unk_284 == 7) { - gSaveContext.save.weekEventReg[82] &= (u8)~8; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_82_08); func_80B26AE8(this); } } } void func_80B273D0(EnKendoJs* this) { - gSaveContext.save.weekEventReg[82] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_82_08); this->unk_290 = 120; this->unk_284 = 0; this->unk_286 = 1; @@ -605,7 +605,7 @@ void func_80B274BC(EnKendoJs* this, PlayState* play) { this->unk_288 = 0x272E; } player->stateFlags1 |= PLAYER_STATE1_20; - gSaveContext.save.weekEventReg[82] &= (u8)~8; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_82_08); func_80B26AE8(this); return; } @@ -648,7 +648,7 @@ void func_80B276D8(EnKendoJs* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actor.parent = NULL; func_80B27760(this); - } else if (!(gSaveContext.save.weekEventReg[63] & 0x20)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_63_20)) { Actor_PickUp(&this->actor, play, GI_HEART_PIECE, 800.0f, 100.0f); } else { Actor_PickUp(&this->actor, play, GI_RUPEE_RED, 800.0f, 100.0f); @@ -663,8 +663,8 @@ void func_80B27774(EnKendoJs* this, PlayState* play) { Player* player = GET_PLAYER(play); if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - if (!(gSaveContext.save.weekEventReg[63] & 0x20)) { - gSaveContext.save.weekEventReg[63] |= 0x20; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_63_20)) { + SET_WEEKEVENTREG(WEEKEVENTREG_63_20); Message_StartTextbox(play, 0x272F, &this->actor); this->unk_288 = 0x272F; } else { diff --git a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c index 62b529b3d..f188e1df0 100644 --- a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c +++ b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c @@ -58,10 +58,10 @@ void EnKgy_Init(Actor* thisx, PlayState* play) { this->zubora = EnKgy_FindZubora(play); this->iceBlock = EnKgy_FindIceBlock(play); Flags_UnsetSwitch(play, ENKGY_GET_FE00(&this->actor) + 1); - if (Flags_GetSwitch(play, ENKGY_GET_FE00(&this->actor)) || (gSaveContext.save.weekEventReg[33] & 0x80)) { + if (Flags_GetSwitch(play, ENKGY_GET_FE00(&this->actor)) || CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80)) { Flags_SetSwitch(play, ENKGY_GET_FE00(&this->actor) + 1); play->envCtx.lightSettingOverride = 1; - gSaveContext.save.weekEventReg[21] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_21_01); if (!func_80B40D64(play)) { EnKgy_ChangeAnim(this, 4, ANIMMODE_LOOP, 0); this->actionFunc = func_80B425A0; @@ -78,7 +78,7 @@ void EnKgy_Init(Actor* thisx, PlayState* play) { this->actor.textId = 0xC50; } } else { - if (gSaveContext.save.weekEventReg[20] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_80)) { EnKgy_ChangeAnim(this, 4, ANIMMODE_LOOP, 0); } else { EnKgy_ChangeAnim(this, 0, ANIMMODE_LOOP, 0); @@ -496,7 +496,7 @@ void func_80B419B0(EnKgy* this, PlayState* play) { Player* player = GET_PLAYER(play); func_80B4163C(this, play); - if (Actor_ProcessTalkRequest(&this->actor, &play->state) || (&this->actor == player->targetActor)) { + if (Actor_ProcessTalkRequest(&this->actor, &play->state) || (&this->actor == player->talkActor)) { func_80B411DC(this, play, 4); func_80B40E18(this, this->actor.textId); if (this->actor.textId == 0xC37) { @@ -518,19 +518,19 @@ void func_80B41A48(EnKgy* this, PlayState* play) { } void func_80B41ACC(EnKgy* this, PlayState* play) { - s32 itemActionParam; + PlayerItemAction itemAction; Player* player = GET_PLAYER(play); SkelAnime_Update(&this->skelAnime); if (Message_GetState(&play->msgCtx) == TEXT_STATE_16) { - itemActionParam = func_80123810(play); - if (itemActionParam != PLAYER_AP_NONE) { + itemAction = func_80123810(play); + if (itemAction != PLAYER_IA_NONE) { this->actionFunc = func_80B41E18; } - if (itemActionParam > PLAYER_AP_NONE) { + if (itemAction > PLAYER_IA_NONE) { func_801477B4(play); - if (itemActionParam == PLAYER_AP_BOTTLE_GOLD_DUST) { + if (itemAction == PLAYER_IA_BOTTLE_GOLD_DUST) { if (this->unk_29C & 0x10) { this->actor.textId = 0xC55; player->actor.textId = 0xC55; @@ -547,7 +547,7 @@ void func_80B41ACC(EnKgy* this, PlayState* play) { player->actor.textId = 0xC47; } this->unk_29C |= 8; - } else if (itemActionParam < PLAYER_AP_NONE) { + } else if (itemAction <= PLAYER_IA_MINUS1) { if (this->unk_29C & 0x10) { this->actor.textId = 0xC57; } else { @@ -564,7 +564,7 @@ void func_80B41ACC(EnKgy* this, PlayState* play) { void func_80B41C30(EnKgy* this, PlayState* play) { Player* player = GET_PLAYER(play); - if (&this->actor != player->targetActor) { + if (&this->actor != player->talkActor) { this->actionFunc = func_80B42508; } } @@ -586,7 +586,7 @@ void func_80B41CBC(EnKgy* this, PlayState* play) { this->actionFunc = func_80B41E18; func_80B411DC(this, play, 4); } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -595,7 +595,7 @@ void func_80B41D64(EnKgy* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actionFunc = func_80B41CBC; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { Actor_PickUp(&this->actor, play, this->unk_2EA, 2000.0f, 1000.0f); } @@ -743,8 +743,8 @@ void func_80B41E18(EnKgy* this, PlayState* play) { case 0xC46: case 0xC55: - func_80123D50(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_AP_BOTTLE); - player->exchangeItemId = PLAYER_AP_NONE; + Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_IA_BOTTLE); + player->exchangeItemId = PLAYER_IA_NONE; this->unk_29C &= ~0x8; play->msgCtx.msgLength = 0; func_80B41368(this, play, 4); @@ -759,7 +759,7 @@ void func_80B41E18(EnKgy* this, PlayState* play) { case 0xC47: func_80B40BC0(this, 1); if (this->unk_29C & 8) { - player->exchangeItemId = PLAYER_AP_NONE; + player->exchangeItemId = PLAYER_IA_NONE; this->unk_29C &= ~8; } func_80B40EBC(this, play, textId); @@ -831,7 +831,7 @@ void func_80B42508(EnKgy* this, PlayState* play) { SkelAnime_Update(&this->skelAnime); this->actor.focus.pos = this->unk_2A8; - if (Actor_ProcessTalkRequest(&this->actor, &play->state) || (&this->actor == player->targetActor)) { + if (Actor_ProcessTalkRequest(&this->actor, &play->state) || (&this->actor == player->talkActor)) { this->actionFunc = func_80B41E18; func_80B411DC(this, play, 4); func_80B40E18(this, this->actor.textId); @@ -870,7 +870,7 @@ void func_80B42714(EnKgy* this, PlayState* play) { SkelAnime_Update(&this->skelAnime); this->actor.focus.pos = this->unk_2A8; - if (Actor_ProcessTalkRequest(&this->actor, &play->state) || (&this->actor == player->targetActor)) { + if (Actor_ProcessTalkRequest(&this->actor, &play->state) || (&this->actor == player->talkActor)) { func_80B411DC(this, play, 4); func_80B40E18(this, this->actor.textId); if (this->actor.textId == 0xC37) { @@ -948,7 +948,7 @@ void func_80B4296C(EnKgy* this, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_10000; } else { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_NONE); } } @@ -1054,7 +1054,7 @@ void func_80B42D28(EnKgy* this, PlayState* play) { func_80B40BC0(this, 1); } else { EnKgy_ChangeAnim(this, 5, ANIMMODE_ONCE, -5.0f); - gSaveContext.save.weekEventReg[20] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_20_80); } func_80B411DC(this, play, 0); func_80B40E18(this, this->actor.textId); @@ -1062,7 +1062,7 @@ void func_80B42D28(EnKgy* this, PlayState* play) { if (Flags_GetSwitch(play, ENKGY_GET_FE00(&this->actor))) { this->actor.textId = 0xC30; this->actionFunc = func_80B4296C; - gSaveContext.save.weekEventReg[21] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_21_01); } else if (this->actor.xzDistToPlayer < 200.0f) { if (this->unk_2D2 == 4) { this->actor.textId = 0xC2D; diff --git a/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c b/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c index e15d20fc8..511a5dc46 100644 --- a/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c +++ b/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c @@ -235,19 +235,19 @@ void EnKujiya_FinishGivePrize(EnKujiya* this, PlayState* play) { s32 EnKujiya_CheckBoughtTicket(void) { switch (CURRENT_DAY) { case 1: - if (gSaveContext.save.weekEventReg[33] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_10)) { return true; } break; case 2: - if (gSaveContext.save.weekEventReg[33] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_20)) { return true; } break; case 3: - if (gSaveContext.save.weekEventReg[33] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_40)) { return true; } break; @@ -258,15 +258,15 @@ s32 EnKujiya_CheckBoughtTicket(void) { void EnKujiya_SetBoughtTicket(void) { switch (CURRENT_DAY) { case 1: - gSaveContext.save.weekEventReg[33] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_33_10); break; case 2: - gSaveContext.save.weekEventReg[33] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_33_20); break; case 3: - gSaveContext.save.weekEventReg[33] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_33_40); break; } } @@ -277,15 +277,15 @@ void EnKujiya_SetBoughtTicket(void) { void EnKujiya_UnsetBoughtTicket(void) { switch (CURRENT_DAY) { case 1: - gSaveContext.save.weekEventReg[33] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_33_10); break; case 2: - gSaveContext.save.weekEventReg[33] &= (u8)~0x20; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_33_20); break; case 3: - gSaveContext.save.weekEventReg[33] &= (u8)~0x40; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_33_40); break; } } diff --git a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c index 5b0e813ab..eaf5ea96a 100644 --- a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c +++ b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c @@ -699,7 +699,7 @@ void EnKusa_DrawBush(Actor* thisx, PlayState* play2) { EnKusa_ApplySway(&D_80936AD8[this->kusaMtxIdx]); } - Gfx_DrawDListOpa(play, gKusaBushType1); + Gfx_DrawDListOpa(play, gKusaBushType1DL); } else if (this->actor.projectedPos.z < 1300.0f) { s32 alpha; @@ -711,7 +711,7 @@ void EnKusa_DrawBush(Actor* thisx, PlayState* play2) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, alpha); - gSPDisplayList(POLY_XLU_DISP++, gKusaBushType2); + gSPDisplayList(POLY_XLU_DISP++, gKusaBushType2DL); CLOSE_DISPS(play->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c b/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c index 4b8c36c2c..626ab3f3b 100644 --- a/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c +++ b/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c @@ -1343,7 +1343,7 @@ void func_80A5E80C(PlayState* play, s32 arg1) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, arg1); - gSPDisplayList(POLY_XLU_DISP++, gKusaBushType2); + gSPDisplayList(POLY_XLU_DISP++, gKusaBushType2DL); CLOSE_DISPS(play->state.gfxCtx); } @@ -1356,7 +1356,7 @@ void EnKusa2_Draw(Actor* thisx, PlayState* play) { (this->actor.projectedPos.z < 400.0f)) { func_80A5B954(&D_80A60908[this->unk_1CE], 0.0015f); } - Gfx_DrawDListOpa(play, gKusaBushType1); + Gfx_DrawDListOpa(play, gKusaBushType1DL); } else if (this->actor.projectedPos.z < 1300.0f) { func_80A5E80C(play, (1300.0f - this->actor.projectedPos.z) * 2.55f); } @@ -1370,14 +1370,14 @@ void func_80A5E9B4(Actor* thisx, PlayState* play) { sp18.z = thisx->shape.rot.z + D_80A5EAFC.z; Matrix_SetTranslateRotateYXZ(thisx->world.pos.x, thisx->world.pos.y, thisx->world.pos.z, &sp18); Matrix_Scale(thisx->scale.x, thisx->scale.y, thisx->scale.z, MTXMODE_APPLY); - Gfx_DrawDListOpa(play, gKusaBushType1); + Gfx_DrawDListOpa(play, gKusaBushType1DL); } void func_80A5EA48(Actor* thisx, PlayState* play) { EnKusa2* this = THIS; if (this->unk_1CF == 0xFF) { - Gfx_DrawDListOpa(play, gKusaBushType1); + Gfx_DrawDListOpa(play, gKusaBushType1DL); } else { func_80A5E80C(play, this->unk_1CF); } diff --git a/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c b/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c index 6eac82838..f6647cc0b 100644 --- a/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c +++ b/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c @@ -181,15 +181,15 @@ s32 func_80AE9B4C(s32 arg0, s32 arg1) { s32 func_80AE9B8C() { s32 ret = 0; - if (gSaveContext.save.weekEventReg[14] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_10)) { ret = 1; } - if (gSaveContext.save.weekEventReg[14] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_20)) { ret++; } - if (gSaveContext.save.weekEventReg[14] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_40)) { ret++; } @@ -329,7 +329,7 @@ void func_80AEA1A0(EnLiftNuts* this, PlayState* play) { if (gSaveContext.save.time > CLOCK_TIME(23, 30) || gSaveContext.save.time <= CLOCK_TIME(6, 0)) { Message_StartTextbox(play, 0x27F7, &this->actor); this->textId = 0x27F7; - } else if (gSaveContext.save.weekEventReg[14] & 0x10) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_10)) { Message_StartTextbox(play, 0x27D9, &this->actor); this->textId = 0x27D9; } else { @@ -343,13 +343,13 @@ void func_80AEA1A0(EnLiftNuts* this, PlayState* play) { Message_StartTextbox(play, 0x27F7, &this->actor); this->textId = 0x27F7; } else { - if (gSaveContext.save.weekEventReg[14] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_20)) { Message_StartTextbox(play, 0x27DB, &this->actor); this->textId = 0x27DB; break; } - if (gSaveContext.save.weekEventReg[14] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_10)) { Message_StartTextbox(play, 0x27DC, &this->actor); this->textId = 0x27DC; } else { @@ -363,7 +363,7 @@ void func_80AEA1A0(EnLiftNuts* this, PlayState* play) { if (gSaveContext.save.time > CLOCK_TIME(23, 30) || gSaveContext.save.time <= CLOCK_TIME(6, 0)) { Message_StartTextbox(play, 0x27F7, &this->actor); this->textId = 0x27F7; - } else if (gSaveContext.save.weekEventReg[14] & 0x40) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_40)) { Message_StartTextbox(play, 0x27DE, &this->actor); this->textId = 0x27DE; } else if (func_80AE9B8C() == 2) { @@ -382,7 +382,7 @@ void func_80AEA1A0(EnLiftNuts* this, PlayState* play) { if (Flags_GetSwitch(play, 0x40)) { Flags_UnsetSwitch(play, 0x40); Inventory_SaveDekuPlaygroundHighScore(4); - if ((gSaveContext.save.weekEventReg[14] & 0x10) && (gSaveContext.save.weekEventReg[14] & 0x20) && + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_10) && CHECK_WEEKEVENTREG(WEEKEVENTREG_14_20) && CURRENT_DAY == 3) { this->unk_354 = 0; Message_StartTextbox(play, 0x27F4, &this->actor); @@ -833,12 +833,12 @@ void func_80AEB584(EnLiftNuts* this) { void func_80AEB598(EnLiftNuts* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actor.parent = NULL; - if ((gSaveContext.save.weekEventReg[14] & 0x10) && (gSaveContext.save.weekEventReg[14] & 0x20) && - (CURRENT_DAY == 3) && !(gSaveContext.save.weekEventReg[14] & 0x80)) { - gSaveContext.save.weekEventReg[14] |= 0x80; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_10) && CHECK_WEEKEVENTREG(WEEKEVENTREG_14_20) && (CURRENT_DAY == 3) && + !CHECK_WEEKEVENTREG(WEEKEVENTREG_14_80)) { + SET_WEEKEVENTREG(WEEKEVENTREG_14_80); } func_80AEB684(this); - } else if ((this->textId == 0x27F4) && !(gSaveContext.save.weekEventReg[14] & 0x80)) { + } else if ((this->textId == 0x27F4) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_14_80)) { Actor_PickUp(&this->actor, play, GI_HEART_PIECE, 500.0f, 100.0f); } else { Actor_PickUp(&this->actor, play, GI_RUPEE_PURPLE, 500.0f, 100.0f); @@ -851,8 +851,7 @@ void func_80AEB684(EnLiftNuts* this) { void func_80AEB698(EnLiftNuts* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - if ((gSaveContext.save.weekEventReg[14] & 0x10) && (gSaveContext.save.weekEventReg[14] & 0x20) && - CURRENT_DAY == 3) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_10) && CHECK_WEEKEVENTREG(WEEKEVENTREG_14_20) && (CURRENT_DAY == 3)) { Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, 13); Message_StartTextbox(play, 0x27F5, &this->actor); this->textId = 0x27F5; @@ -868,15 +867,15 @@ void func_80AEB698(EnLiftNuts* this, PlayState* play) { func_80AEABF0(this); switch (CURRENT_DAY) { case 1: - gSaveContext.save.weekEventReg[14] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_14_10); break; case 2: - gSaveContext.save.weekEventReg[14] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_14_20); break; case 3: - gSaveContext.save.weekEventReg[14] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_14_40); break; default: diff --git a/src/overlays/actors/ovl_En_Look_Nuts/z_en_look_nuts.c b/src/overlays/actors/ovl_En_Look_Nuts/z_en_look_nuts.c index 2a667d3ad..ac376bb16 100644 --- a/src/overlays/actors/ovl_En_Look_Nuts/z_en_look_nuts.c +++ b/src/overlays/actors/ovl_En_Look_Nuts/z_en_look_nuts.c @@ -300,7 +300,7 @@ void EnLookNuts_SendPlayerToSpawn(EnLookNuts* this, PlayState* play) { gSaveContext.nextCutsceneIndex = 0; Scene_SetExitFade(play); play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.weekEventReg[17] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_17_04); } } @@ -359,7 +359,7 @@ void EnLookNuts_Update(Actor* thisx, PlayState* play) { Math_Vec3f_Copy(&this->headRotTarget, &gZeroVec3f); this->state = PALACE_GUARD_RUNNING_TO_PLAYER; play_sound(NA_SE_SY_FOUND); - func_800B7298(play, &this->actor, 0x1A); + func_800B7298(play, &this->actor, PLAYER_CSMODE_26); D_80A6862C = 1; this->actor.flags |= (ACTOR_FLAG_1 | ACTOR_FLAG_10); this->actor.gravity = 0.0f; diff --git a/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c b/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c index a244c3ca8..3d97839a0 100644 --- a/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c +++ b/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c @@ -143,7 +143,7 @@ void EnMThunder_Init(Actor* thisx, PlayState* play) { player->stateFlags2 &= ~PLAYER_STATE2_20000; this->isCharging = false; - if (gSaveContext.save.weekEventReg[23] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_23_02)) { player->unk_B08[0] = 1.0f; this->collider.info.toucher.damage = sDamages[this->type + ENMTHUNDER_TYPE_MAX]; this->subtype = ENMTHUNDER_SUBTYPE_SPIN_GREAT; diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index 77af0291e..93f33cfed 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -200,7 +200,7 @@ void EnMa4_Init(Actor* thisx, PlayState* play) { if (CURRENT_DAY == 1) { this->type = MA4_TYPE_DAY1; - } else if (gSaveContext.save.weekEventReg[22] & 1) { // Aliens defeated + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { this->type = MA4_TYPE_ALIENS_DEFEATED; } else { this->type = MA4_TYPE_ALIENS_WON; @@ -238,7 +238,7 @@ void EnMa4_Destroy(Actor* thisx, PlayState* play) { EnMa4* this = THIS; Collider_DestroyCylinder(play, &this->collider); - gSaveContext.save.weekEventReg[8] &= (u8)~1; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_08_01); } // Running in circles in the ranch @@ -372,7 +372,7 @@ void EnMa4_HandlePlayerChoice(EnMa4* this, PlayState* play) { case 0x3341: if (play->msgCtx.choiceIndex == 0) { func_8019F208(); - gSaveContext.save.weekEventReg[21] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_21_20); Message_StartTextbox(play, 0x3343, &this->actor); this->textId = 0x3343; } else { @@ -388,7 +388,7 @@ void EnMa4_HandlePlayerChoice(EnMa4* this, PlayState* play) { case 0x3346: if (play->msgCtx.choiceIndex == 0) { func_8019F208(); - gSaveContext.save.weekEventReg[21] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_21_20); Message_StartTextbox(play, 0x3343, &this->actor); this->textId = 0x3343; } else { @@ -603,7 +603,7 @@ void EnMa4_ChooseNextDialogue(EnMa4* this, PlayState* play) { break; case 0x3358: - if ((gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) || !(CHECK_QUEST_ITEM(QUEST_SONG_EPONA))) { + if ((gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) || !CHECK_QUEST_ITEM(QUEST_SONG_EPONA)) { Message_StartTextbox(play, 0x335C, &this->actor); this->textId = 0x335C; func_80151BB4(play, 5); @@ -690,7 +690,7 @@ void EnMa4_InitHorsebackGame(EnMa4* this, PlayState* play) { play->interfaceCtx.minigameState = MINIGAME_STATE_COUNTDOWN_SETUP_3; Interface_StartTimer(TIMER_ID_MINIGAME_2, 0); - gSaveContext.save.weekEventReg[8] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_08_01); Interface_InitMinigame(play); player->stateFlags1 |= PLAYER_STATE1_20; this->actionFunc = EnMa4_SetupHorsebackGameWait; @@ -726,7 +726,7 @@ void EnMa4_HorsebackGameWait(EnMa4* this, PlayState* play) { } void EnMa4_SetupHorsebackGameEnd(EnMa4* this, PlayState* play) { - gSaveContext.save.weekEventReg[8] &= (u8)~1; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_08_01); this->actionFunc = EnMa4_HorsebackGameEnd; Audio_QueueSeqCmd(NA_BGM_STOP); Audio_QueueSeqCmd(NA_BGM_HORSE_GOAL | 0x8000); @@ -828,7 +828,7 @@ void EnMa4_EponasSongCs(EnMa4* this, PlayState* play) { Player* player = GET_PLAYER(play); player->stateFlags1 |= PLAYER_STATE1_20; - func_800B85E0(&this->actor, play, 200.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); D_80AC0260 = 99; this->hasBow = true; EnMa4_SetupEndEponasSongCs(this); @@ -850,7 +850,7 @@ void EnMa4_EndEponasSongCs(EnMa4* this, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_10000; EnMa4_SetupDialogueHandler(this); } else { - func_800B85E0(&this->actor, play, 200.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } @@ -873,7 +873,7 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { switch (this->type) { case MA4_TYPE_DAY1: if (gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) { - if ((gSaveContext.save.weekEventReg[21] & 0x80)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_21_80)) { EnMa4_SetFaceExpression(this, 3, 3); Message_StartTextbox(play, 0x3337, &this->actor); this->textId = 0x3337; @@ -881,11 +881,11 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { } else { Message_StartTextbox(play, 0x3335, &this->actor); this->textId = 0x3335; - gSaveContext.save.weekEventReg[21] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_21_80); } } else if (this->state == MA4_STATE_DEFAULT) { - if ((gSaveContext.save.weekEventReg[21] & 0x40)) { - if (!(gSaveContext.save.weekEventReg[21] & 0x20)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_21_40)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_21_20)) { Message_StartTextbox(play, 0x3346, &this->actor); this->textId = 0x3346; } else { @@ -895,7 +895,7 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { } else { Message_StartTextbox(play, 0x3338, &this->actor); this->textId = 0x3338; - gSaveContext.save.weekEventReg[21] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_21_40); } } else if (this->state == MA4_STATE_AFTERHORSEBACKGAME) { if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(120)) { @@ -929,7 +929,7 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { case MA4_TYPE_ALIENS_DEFEATED: if (gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) { - if ((gSaveContext.save.weekEventReg[21] & 0x80)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_21_80)) { EnMa4_SetFaceExpression(this, 3, 3); Message_StartTextbox(play, 0x3337, &this->actor); this->textId = 0x3337; @@ -937,7 +937,7 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { } else { Message_StartTextbox(play, 0x3335, &this->actor); this->textId = 0x3335; - gSaveContext.save.weekEventReg[21] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_21_80); } } else if (this->state == MA4_STATE_DEFAULT) { Message_StartTextbox(play, 0x3354, &this->actor); diff --git a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c index bd9c39e7d..c9ba0f34d 100644 --- a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c +++ b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c @@ -153,7 +153,7 @@ void EnMaYto_Init(Actor* thisx, PlayState* play) { this->unk320 = 0; this->eyeTexIndex = 0; - if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[22] & 1)) { + if (CURRENT_DAY == 1 || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { EnMaYto_SetFaceExpression(this, 0, 1); } else { EnMaYto_SetFaceExpression(this, 5, 2); @@ -186,19 +186,19 @@ void EnMaYto_Init(Actor* thisx, PlayState* play) { s32 EnMaYto_CheckValidSpawn(EnMaYto* this, PlayState* play) { switch (this->type) { case MA_YTO_TYPE_DEFAULT: - if (CURRENT_DAY == 3 && !(gSaveContext.save.weekEventReg[22] & 1)) { + if (CURRENT_DAY == 3 && !CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { return false; } break; case MA_YTO_TYPE_DINNER: - if (CURRENT_DAY != 1 && (gSaveContext.save.weekEventReg[22] & 1)) { + if (CURRENT_DAY != 1 && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { return false; } break; case MA_YTO_TYPE_BARN: - if (gSaveContext.save.weekEventReg[22] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { if (((this->actor.params & 0x0F00) >> 8) != 0) { return false; } @@ -211,9 +211,8 @@ s32 EnMaYto_CheckValidSpawn(EnMaYto* this, PlayState* play) { break; case MA_YTO_TYPE_AFTERMILKRUN: - // if (!(ProtectedCremia) && !(gSaveContext.save.weekEventReg[52] & 2)) || (PlayedMilkMinigame)) - if ((!(gSaveContext.save.weekEventReg[52] & 1) && !(gSaveContext.save.weekEventReg[52] & 2)) || - (gSaveContext.save.weekEventReg[14] & 1)) { + if ((!CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_52_02)) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_14_01)) { return false; } break; @@ -240,8 +239,7 @@ void EnMaYto_InitAnimation(EnMaYto* this, PlayState* play) { break; case MA_YTO_TYPE_BARN: - // if (AliensDefeated) - if (gSaveContext.save.weekEventReg[22] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { EnMaYto_ChangeAnim(this, 12); } else { EnMaYto_ChangeAnim(this, 8); @@ -279,7 +277,7 @@ void EnMaYto_ChooseAction(EnMaYto* this, PlayState* play) { case MA_YTO_TYPE_AFTERMILKRUN: this->unk310 = 0; - if (INV_CONTENT(ITEM_MASK_ROMANI) == ITEM_MASK_ROMANI && (gSaveContext.save.weekEventReg[52] & 1) && + if ((INV_CONTENT(ITEM_MASK_ROMANI) == ITEM_MASK_ROMANI) && CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01) && (Rand_Next() & 0x80)) { EnMaYto_SetupBeginWarmFuzzyFeelingCs(this); } else { @@ -334,7 +332,7 @@ s32 EnMaYto_TryFindRomani(EnMaYto* this, PlayState* play) { return 0; case MA_YTO_TYPE_DINNER: - if (!(gSaveContext.save.weekEventReg[22] & 1) && CURRENT_DAY == 2) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01) && (CURRENT_DAY == 2)) { return 0; } if (EnMaYto_SearchRomani(this, play)) { @@ -343,8 +341,7 @@ s32 EnMaYto_TryFindRomani(EnMaYto* this, PlayState* play) { return 1; case MA_YTO_TYPE_BARN: - // if (AliensDefeated) - if (gSaveContext.save.weekEventReg[22] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { if (EnMaYto_SearchRomani(this, play)) { return 2; } @@ -498,7 +495,7 @@ void EnMaYto_DefaultChooseNextDialogue(EnMaYto* this, PlayState* play) { } void EnMaYto_SetupDinnerWait(EnMaYto* this) { - if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[22] & 1)) { + if (CURRENT_DAY == 1 || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { func_80B90E50(this, 0); this->unk31E = 0; } else { @@ -539,7 +536,7 @@ void EnMaYto_DinnerWait(EnMaYto* this, PlayState* play) { } void EnMaYto_SetupDinnerDialogueHandler(EnMaYto* this) { - if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[22] & 1)) { + if (CURRENT_DAY == 1 || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { func_80B90E50(this, 1); } else { func_80B90E50(this, 2); @@ -690,7 +687,7 @@ void EnMaYto_DinnerChooseNextDialogue(EnMaYto* this, PlayState* play) { } void EnMaYto_SetupBarnWait(EnMaYto* this) { - if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[22] & 1)) { + if (CURRENT_DAY == 1 || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { EnMaYto_ChangeAnim(this, 13); func_80B90E50(this, 0); this->unk31E = 0; @@ -718,7 +715,7 @@ void EnMaYto_BarnWait(EnMaYto* this, PlayState* play) { Actor_ChangeFocus(&this->actor, play, &this->actor); EnMaYto_BarnStartDialogue(this, play); EnMaYto_SetupBarnDialogueHandler(this); - } else if (!(gSaveContext.save.weekEventReg[22] & 1) || ABS_ALT(direction) < 0x2000) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01) || ABS_ALT(direction) < 0x2000) { func_800B8614(&this->actor, play, 100.0f); child = this->actor.child; @@ -730,7 +727,7 @@ void EnMaYto_BarnWait(EnMaYto* this, PlayState* play) { } void EnMaYto_SetupBarnDialogueHandler(EnMaYto* this) { - if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[22] & 1)) { + if (CURRENT_DAY == 1 || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { func_80B90E50(this, 1); } else { func_80B90E50(this, 2); @@ -878,7 +875,7 @@ void EnMaYto_BarnChooseNextDialogue(EnMaYto* this, PlayState* play) { } void EnMaYto_SetupAfterMilkRunInit(EnMaYto* this) { - if (gSaveContext.save.weekEventReg[52] & 1) { // if (ProtectedCremia) + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01)) { EnMaYto_SetFaceExpression(this, 3, 1); } else { Audio_PlayFanfare(NA_BGM_FAILURE_1); @@ -893,16 +890,15 @@ void EnMaYto_AfterMilkRunInit(EnMaYto* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actor.flags &= ~ACTOR_FLAG_10000; - if (gSaveContext.save.weekEventReg[52] & 1) { // if (ProtectedCremia) + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01)) { Message_StartTextbox(play, 0x33C1, &this->actor); this->textId = 0x33C1; } else { - // Fails milk minigame + // Failed milk minigame EnMaYto_SetFaceExpression(this, 5, 2); Message_StartTextbox(play, 0x33C0, &this->actor); this->textId = 0x33C0; - // Attempted Cremia Cart Ride - gSaveContext.save.weekEventReg[14] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_14_01); this->unk310 = 4; EnMaYto_SetupPostMilkRunWaitDialogueEnd(this); func_80151BB4(play, 6); @@ -983,8 +979,7 @@ void EnMaYto_PostMilkRunExplainReward(EnMaYto* this, PlayState* play) { EnMaYto_SetFaceExpression(this, 0, 1); Message_StartTextbox(play, 0x33C3, &this->actor); this->textId = 0x33C3; - // Attempted Cremia Cart Ride - gSaveContext.save.weekEventReg[14] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_14_01); this->unk310 = 3; func_80151BB4(play, 0x20); func_80151BB4(play, 0x1F); @@ -995,14 +990,13 @@ void EnMaYto_PostMilkRunExplainReward(EnMaYto* this, PlayState* play) { EnMaYto_SetFaceExpression(this, 0, 1); Message_StartTextbox(play, 0x33D0, &this->actor); this->textId = 0x33D0; - // Attempted Cremia Cart Ride - gSaveContext.save.weekEventReg[14] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_14_01); this->unk310 = 3; func_80151BB4(play, 6); EnMaYto_SetupPostMilkRunWaitDialogueEnd(this); } } else { - func_800B85E0(&this->actor, play, 200.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } @@ -1046,8 +1040,7 @@ void EnMaYto_WarmFuzzyFeelingCs(EnMaYto* this, PlayState* play) { break; case 2: - // Attempted Cremia Cart Ride - gSaveContext.save.weekEventReg[14] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_14_01); EnMaYto_ChangeAnim(this, 18); break; @@ -1075,7 +1068,7 @@ void EnMaYto_SetupPostMilkRunWaitDialogueEnd(EnMaYto* this) { void EnMaYto_PostMilkRunWaitDialogueEnd(EnMaYto* this, PlayState* play) { if (Message_GetState(&play->msgCtx) == TEXT_STATE_DONE || Message_GetState(&play->msgCtx) == TEXT_STATE_5) { if (Message_ShouldAdvance(play) && Message_GetState(&play->msgCtx) == TEXT_STATE_5) { - func_800B7298(play, &this->actor, 7); + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); func_801477B4(play); } } @@ -1228,8 +1221,7 @@ void EnMaYto_DinnerStartDialogue(EnMaYto* this, PlayState* play) { } void EnMaYto_BarnStartDialogue(EnMaYto* this, PlayState* play) { - // if (AliensDefeated) - if (gSaveContext.save.weekEventReg[22] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { if (CURRENT_DAY == 2) { if (this->unk310 == 1) { Message_StartTextbox(play, 0x33AE, &this->actor); @@ -1352,7 +1344,7 @@ void EnMaYto_SetFaceExpression(EnMaYto* this, s16 overrideEyeTexIndex, s16 mouth } void EnMaYto_InitFaceExpression(EnMaYto* this) { - if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[22] & 1)) { + if (CURRENT_DAY == 1 || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { EnMaYto_SetFaceExpression(this, 0, 1); EnMaYto_SetRomaniFaceExpression(this, 0, 0); } else { @@ -1364,19 +1356,19 @@ void EnMaYto_InitFaceExpression(EnMaYto* this) { s32 EnMaYto_HasSpokenToPlayerToday(void) { switch (CURRENT_DAY) { case 1: - if (gSaveContext.save.weekEventReg[13] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_13_04)) { return true; } break; case 2: - if (gSaveContext.save.weekEventReg[13] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_13_08)) { return true; } break; case 3: - if (gSaveContext.save.weekEventReg[13] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_13_10)) { return true; } break; @@ -1385,20 +1377,20 @@ s32 EnMaYto_HasSpokenToPlayerToday(void) { } s32 EnMaYto_HasSpokenToPlayer(void) { - // Please note each case doesn't have their respective `break`s. + // Please note no case here has a `break`. switch (CURRENT_DAY) { case 3: - if (gSaveContext.save.weekEventReg[13] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_13_10)) { return true; } case 2: - if (gSaveContext.save.weekEventReg[13] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_13_08)) { return true; } case 1: - if (gSaveContext.save.weekEventReg[13] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_13_04)) { return true; } } @@ -1408,15 +1400,15 @@ s32 EnMaYto_HasSpokenToPlayer(void) { void EnMaYto_SetTalkedFlag(void) { switch (CURRENT_DAY) { case 1: - gSaveContext.save.weekEventReg[13] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_13_04); break; case 2: - gSaveContext.save.weekEventReg[13] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_13_08); break; case 3: - gSaveContext.save.weekEventReg[13] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_13_10); break; } } @@ -1466,7 +1458,7 @@ void EnMaYto_Draw(Actor* thisx, PlayState* play) { s32 pad; OPEN_DISPS(play->state.gfxCtx); - if (this->type == MA_YTO_TYPE_BARN && (gSaveContext.save.weekEventReg[22] & 1)) { // Aliens defeated + if (this->type == MA_YTO_TYPE_BARN && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, gCremiaWoodenBoxDL); } diff --git a/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c b/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c index ae7232406..64a6d138c 100644 --- a/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c +++ b/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c @@ -144,7 +144,7 @@ void EnMaYts_InitAnimation(EnMaYts* this, PlayState* play) { case MA_YTS_TYPE_SITTING: this->actor.targetMode = 6; // Day 1 or "Winning" the alien invasion - if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[22] & 1)) { + if (CURRENT_DAY == 1 || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { EnMaYts_ChangeAnim(this, 14); } else { EnMaYts_ChangeAnim(this, 18); @@ -177,14 +177,14 @@ s32 EnMaYts_CheckValidSpawn(EnMaYts* this, PlayState* play) { case 2: // Failing the alien invasion - if (!(gSaveContext.save.weekEventReg[22] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { return false; } break; case 3: // "Winning" the alien invasion - if (gSaveContext.save.weekEventReg[22] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { return false; } break; @@ -193,7 +193,7 @@ s32 EnMaYts_CheckValidSpawn(EnMaYts* this, PlayState* play) { case MA_YTS_TYPE_BARN: // Failing the alien invasion - if (!(gSaveContext.save.weekEventReg[22] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { return false; } else if (gSaveContext.save.time >= CLOCK_TIME(20, 0) && CURRENT_DAY == 3) { return false; @@ -202,7 +202,7 @@ s32 EnMaYts_CheckValidSpawn(EnMaYts* this, PlayState* play) { case MA_YTS_TYPE_SLEEPING: // "Winning" the alien invasion - if (gSaveContext.save.weekEventReg[22] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { return false; } break; @@ -248,7 +248,7 @@ void EnMaYts_Init(Actor* thisx, PlayState* play) { this->hasBow = false; } - if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[22] & 1)) { + if (CURRENT_DAY == 1 || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { this->overrideEyeTexIndex = 0; this->eyeTexIndex = 0; this->mouthTexIndex = 0; @@ -266,7 +266,7 @@ void EnMaYts_Init(Actor* thisx, PlayState* play) { this->mouthTexIndex = 0; this->unk_32C = 2; EnMaYts_SetupEndCreditsHandler(this); - } else if (CURRENT_DAY == 2 && gSaveContext.save.isNight == 1 && (gSaveContext.save.weekEventReg[22] & 1)) { + } else if (CURRENT_DAY == 2 && gSaveContext.save.isNight == 1 && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { EnMaYts_SetupStartDialogue(this); } else { EnMaYts_SetupDoNothing(this); @@ -296,9 +296,9 @@ void EnMaYts_StartDialogue(EnMaYts* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { if (!(gSaveContext.save.playerForm == PLAYER_FORM_HUMAN)) { - if (!(gSaveContext.save.weekEventReg[65] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_65_80)) { // Saying to non-human Link: "Cremia went to town." - gSaveContext.save.weekEventReg[65] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_65_80); EnMaYts_SetFaceExpression(this, 0, 0); Message_StartTextbox(play, 0x335F, &this->actor); this->textId = 0x335F; @@ -310,8 +310,8 @@ void EnMaYts_StartDialogue(EnMaYts* this, PlayState* play) { func_80151BB4(play, 5); } } else if (Player_GetMask(play) != PLAYER_MASK_NONE) { - if (!(gSaveContext.save.weekEventReg[65] & 0x40)) { - gSaveContext.save.weekEventReg[65] |= 0x40; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_65_40)) { + SET_WEEKEVENTREG(WEEKEVENTREG_65_40); EnMaYts_SetFaceExpression(this, 0, 0); Message_StartTextbox(play, 0x3363, &this->actor); this->textId = 0x3363; @@ -321,14 +321,14 @@ void EnMaYts_StartDialogue(EnMaYts* this, PlayState* play) { this->textId = 0x3366; func_80151BB4(play, 5); } - } else if (!(gSaveContext.save.weekEventReg[21] & 0x20)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_21_20)) { EnMaYts_SetFaceExpression(this, 0, 0); Message_StartTextbox(play, 0x3367, &this->actor); this->textId = 0x3367; } else { - if (!(gSaveContext.save.weekEventReg[65] & 0x20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_65_20)) { // Saying to Grasshopper: "Cremia went to town." - gSaveContext.save.weekEventReg[65] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_65_20); EnMaYts_SetFaceExpression(this, 4, 2); Message_StartTextbox(play, 0x3369, &this->actor); this->textId = 0x3369; diff --git a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c index 07c147690..f459a6a41 100644 --- a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c +++ b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c @@ -66,14 +66,8 @@ static TexturePtr D_808A4D74[] = { object_fr_Tex_005BA0, }; -// gSaveContext.save.weekEventReg[KEY] = VALUE -// KEY | VALUE static u16 isFrogReturnedFlags[] = { - (0 << 8) | 0x00, // NULL - (32 << 8) | 0x40, // Woodfall Temple Frog Returned - (32 << 8) | 0x80, // Great Bay Temple Frog Returned - (33 << 8) | 0x01, // Southern Swamp Frog Returned - (33 << 8) | 0x02, // Laundry Pool Frog Returned + 0, WEEKEVENTREG_32_40, WEEKEVENTREG_32_80, WEEKEVENTREG_33_01, WEEKEVENTREG_33_02, }; static s32 isInitialized = false; @@ -94,7 +88,7 @@ void EnMinifrog_Init(Actor* thisx, PlayState* play) { Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit); if (!isInitialized) { - for (i = 0; i < 2; i++) { + for (i = 0; i < ARRAY_COUNT(D_808A4D74); i++) { D_808A4D74[i] = Lib_SegmentedToVirtual(D_808A4D74[i]); } isInitialized = true; @@ -112,10 +106,9 @@ void EnMinifrog_Init(Actor* thisx, PlayState* play) { this->timer = 0; if (1) {} + if (!EN_MINIFROG_IS_RETURNED(&this->actor)) { - if ((this->frogIndex == MINIFROG_YELLOW) || - ((gSaveContext.save.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8] & - (u8)isFrogReturnedFlags[this->frogIndex]))) { + if ((this->frogIndex == MINIFROG_YELLOW) || CHECK_WEEKEVENTREG(isFrogReturnedFlags[this->frogIndex])) { Actor_Kill(&this->actor); return; } @@ -129,8 +122,7 @@ void EnMinifrog_Init(Actor* thisx, PlayState* play) { this->actor.textId = 0; this->actionFunc = EnMinifrog_SetupYellowFrogDialog; - // Not spoken to MINIFROG_YELLOW - if (!(gSaveContext.save.weekEventReg[34] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_34_01)) { this->actor.flags |= ACTOR_FLAG_10000; } @@ -141,8 +133,7 @@ void EnMinifrog_Init(Actor* thisx, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_1; // Frog has been returned - if ((gSaveContext.save.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8] & - (u8)isFrogReturnedFlags[this->frogIndex])) { + if (CHECK_WEEKEVENTREG(isFrogReturnedFlags[this->frogIndex])) { this->actionFunc = EnMinifrog_SetupNextFrogInit; } else { this->actor.draw = NULL; @@ -271,16 +262,14 @@ void EnMinifrog_ReturnFrogCutscene(EnMinifrog* this, PlayState* play) { func_80151938(play, play->msgCtx.currentTextId + 1); break; - case 0xD82: // "What has brought you all this way?" - if (gSaveContext.save.weekEventReg[33] & 0x80) { // Mountain village is unfrozen + case 0xD82: // "What has brought you all this way?" + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80)) { func_80151938(play, 0xD83); // "Could it be... Has spring finally come to the mountains?" } else { func_80151938(play, 0xD86); // "Could it be... You came all this way looking for me?" } - gSaveContext.save.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8] = - ((void)0, gSaveContext.save.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8]) | - (u8)isFrogReturnedFlags[this->frogIndex]; + SET_WEEKEVENTREG(isFrogReturnedFlags[this->frogIndex]); break; case 0xD85: // "I understand. I shall head for the mountains immediately." @@ -476,7 +465,7 @@ void EnMinifrog_EndChoir(EnMinifrog* this, PlayState* play) { Message_StartTextbox(play, 0xD7E, &this->actor); // "Let us do it again sometime." this->actionFunc = EnMinifrog_YellowFrogDialog; } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -487,7 +476,7 @@ void EnMinifrog_GetFrogHP(EnMinifrog* this, PlayState* play) { this->actor.parent = NULL; this->actionFunc = EnMinifrog_EndChoir; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_NONE); } else { Actor_PickUp(&this->actor, play, GI_HEART_PIECE, 10000.0f, 50.0f); } @@ -521,7 +510,7 @@ void EnMinifrog_YellowFrogDialog(EnMinifrog* this, PlayState* play) { // you've lost a little weight..." func_80151938(play, play->msgCtx.currentTextId + 1); this->actor.flags &= ~ACTOR_FLAG_10000; - gSaveContext.save.weekEventReg[34] |= 1; // Spoken to MINIFROG_YELLOW + SET_WEEKEVENTREG(WEEKEVENTREG_34_01); break; case 0xD78: // "Unfortunately, it seems not all of our members have gathered." case 0xD79: // "Perhaps it is because winter was too long? They must not have realized that spring @@ -535,11 +524,11 @@ void EnMinifrog_YellowFrogDialog(EnMinifrog* this, PlayState* play) { play->msgCtx.msgLength = 0; break; case 0xD7C: // "The conducting was spectacular. And all of our members rose to the occasion!" - if (gSaveContext.save.weekEventReg[35] & 0x80) { // Obtained Heart Piece + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_35_80)) { // Obtained Heart Piece func_80151938(play, 0xD7E); } else { func_80151938(play, 0xD7D); // Get Heart Piece - gSaveContext.save.weekEventReg[35] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_35_80); } break; case 0xD7D: // "This is how deeply we were moved by your spectacular conducting..." @@ -568,7 +557,7 @@ void EnMinifrog_SetupYellowFrogDialog(EnMinifrog* this, PlayState* play) { EnMinifrog_JumpTimer(this); if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actionFunc = EnMinifrog_YellowFrogDialog; - if (!(gSaveContext.save.weekEventReg[34] & 1)) { // Not spoken with MINIFROG_YELLOW + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_34_01)) { Message_StartTextbox(play, 0xD76, &this->actor); // "I have been waiting for you, Don Gero. Forgive me if I'm mistaken, // but it looks like you've lost a little weight..." diff --git a/src/overlays/actors/ovl_En_Mk/z_en_mk.c b/src/overlays/actors/ovl_En_Mk/z_en_mk.c index c267fb110..894d73a6f 100644 --- a/src/overlays/actors/ovl_En_Mk/z_en_mk.c +++ b/src/overlays/actors/ovl_En_Mk/z_en_mk.c @@ -147,7 +147,7 @@ void func_80959624(EnMk* this, PlayState* play) { if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { if (this->unk_27A & 4) { textId = 0xFB9; - } else if (gSaveContext.save.weekEventReg[55] & 0x80) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { textId = 0xFBC; } else { textId = 0xFBB; @@ -202,17 +202,17 @@ void func_80959844(EnMk* this, PlayState* play) { if ((this->unk_27A & 2) && (func_80959524(play) >= 7)) { textId = 0xFB3; - } else if (gSaveContext.save.weekEventReg[20] & 0x40) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_40)) { textId = 0xFB9; - } else if (gSaveContext.save.weekEventReg[19] & 0x40) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_19_40)) { textId = 0xFB5; } else if (func_80959524(play) >= 7) { textId = 0xFB3; } else { switch (gSaveContext.save.playerForm) { case PLAYER_FORM_DEKU: - if (gSaveContext.save.weekEventReg[19] & 0x10) { - if (gSaveContext.save.weekEventReg[55] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_19_10)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { textId = 0xFAF; } else { textId = 0xFAE; @@ -223,8 +223,8 @@ void func_80959844(EnMk* this, PlayState* play) { break; case PLAYER_FORM_GORON: - if (gSaveContext.save.weekEventReg[19] & 8) { - if (gSaveContext.save.weekEventReg[55] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_19_08)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { textId = 0xFAB; } else { textId = 0xFAA; @@ -238,8 +238,8 @@ void func_80959844(EnMk* this, PlayState* play) { case PLAYER_FORM_HUMAN: if (func_80959524(play) > 0) { textId = 0xFA7; - } else if (gSaveContext.save.weekEventReg[19] & 4) { - if (gSaveContext.save.weekEventReg[55] & 0x80) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_19_04)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { textId = 0xFBF; } else { textId = 0xFA6; @@ -252,7 +252,7 @@ void func_80959844(EnMk* this, PlayState* play) { default: if (func_80959524(play) > 0) { textId = 0xFB0; - } else if (gSaveContext.save.weekEventReg[19] & 0x20) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_19_20)) { textId = 0xFB2; } else { textId = 0xFB1; @@ -283,12 +283,12 @@ void func_80959A24(EnMk* this, PlayState* play) { break; case 0xFA2: - if (gSaveContext.save.weekEventReg[55] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { func_801477B4(play); this->actionFunc = func_80959E18; - break; + } else { + func_80151938(play, play->msgCtx.currentTextId + 1); } - func_80151938(play, play->msgCtx.currentTextId + 1); break; case 0xFA5: @@ -308,30 +308,30 @@ void func_80959A24(EnMk* this, PlayState* play) { break; case 0xFA0: - gSaveContext.save.weekEventReg[19] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_19_04); func_80151938(play, 0xFA1); break; case 0xFA8: - gSaveContext.save.weekEventReg[19] |= 8; - if (gSaveContext.save.weekEventReg[55] & 0x80) { + SET_WEEKEVENTREG(WEEKEVENTREG_19_08); + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { func_80151938(play, 0xFBD); - break; + } else { + func_80151938(play, 0xFA9); } - func_80151938(play, 0xFA9); break; case 0xFAC: - gSaveContext.save.weekEventReg[19] |= 0x10; - if (gSaveContext.save.weekEventReg[55] & 0x80) { + SET_WEEKEVENTREG(WEEKEVENTREG_19_10); + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { func_80151938(play, 0xFBE); - break; + } else { + func_80151938(play, 0xFAD); } - func_80151938(play, 0xFAD); break; case 0xFB1: - gSaveContext.save.weekEventReg[19] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_19_20); func_801477B4(play); this->actionFunc = func_80959E18; break; @@ -365,7 +365,7 @@ void func_80959C94(EnMk* this, PlayState* play) { Message_StartTextbox(play, 0xFB3, &this->actor); } else { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 350.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 350.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -373,7 +373,7 @@ void func_80959D28(EnMk* this, PlayState* play) { SkelAnime_Update(&this->skelAnime); if ((play->csCtx.state == 0) && (this->actor.cutscene == -1)) { - if (gSaveContext.save.weekEventReg[20] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_40)) { this->unk_27A &= ~1; this->actionFunc = func_80959774; this->actor.home.rot.y += 0x4E20; @@ -401,7 +401,7 @@ void func_80959E18(EnMk* this, PlayState* play) { SkelAnime_Update(&this->skelAnime); - if (gSaveContext.save.weekEventReg[20] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_40)) { this->unk_27A &= ~1; this->actionFunc = func_80959774; this->actor.home.rot.y += 0x4E20; @@ -413,7 +413,7 @@ void func_80959E18(EnMk* this, PlayState* play) { this->actionFunc = func_80959D28; if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { this->actor.cutscene = this->unk_276[0]; - gSaveContext.save.weekEventReg[20] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_20_40); Item_Give(play, ITEM_SONG_NOVA); } else { this->actor.cutscene = this->unk_276[1]; @@ -428,7 +428,7 @@ void func_80959E18(EnMk* this, PlayState* play) { } else if ((this->actor.xzDistToPlayer < 120.0f) && (ABS_ALT(sp22) <= 0x4300)) { this->unk_27A |= 1; func_800B8614(&this->actor, play, 200.0f); - if (!(gSaveContext.save.weekEventReg[20] & 0x40) && (gSaveContext.save.weekEventReg[19] & 0x40)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_20_40) && CHECK_WEEKEVENTREG(WEEKEVENTREG_19_40)) { func_800B874C(&this->actor, play, 200.0f, 100.0f); } } else { diff --git a/src/overlays/actors/ovl_En_Mm/z_en_mm.c b/src/overlays/actors/ovl_En_Mm/z_en_mm.c index 0cd8f1276..d9b0bf507 100644 --- a/src/overlays/actors/ovl_En_Mm/z_en_mm.c +++ b/src/overlays/actors/ovl_En_Mm/z_en_mm.c @@ -74,8 +74,8 @@ void EnMm_Init(Actor* thisx, PlayState* play) { EnMm* this = THIS; EnMmActionFunc action; - if ((this->actor.params >= 0) && ((!(gSaveContext.save.weekEventReg[37] & 0x10)) || - (gSaveContext.save.weekEventReg[37] & 8) || (gSaveContext.unk_1014 != 0))) { + if ((this->actor.params >= 0) && (!CHECK_WEEKEVENTREG(WEEKEVENTREG_37_10) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_37_08) || (gSaveContext.unk_1014 != 0))) { Actor_Kill(&this->actor); return; } @@ -114,8 +114,8 @@ void func_80965D3C(EnMm* this, PlayState* play) { void func_80965DB4(EnMm* this, PlayState* play) { s16 direction; - Vec3f sp50; - s16 unused; + Vec3f slopeNormal; + s16 downwardSlopeYaw; f32 temp_f14; f32 temp_f12; f32 temp_f2; @@ -143,15 +143,15 @@ void func_80965DB4(EnMm* this, PlayState* play) { } else { temp_f14 = Math_SinS(this->actor.world.rot.y) * this->actor.speedXZ; temp_f12 = Math_CosS(this->actor.world.rot.y) * this->actor.speedXZ; - func_800B75A0(this->actor.floorPoly, &sp50, &unused); - temp_f14 += 3.0f * sp50.x; - temp_f12 += 3.0f * sp50.z; + Actor_GetSlopeDirection(this->actor.floorPoly, &slopeNormal, &downwardSlopeYaw); + temp_f14 += 3.0f * slopeNormal.x; + temp_f12 += 3.0f * slopeNormal.z; temp_f2 = sqrtf(SQ(temp_f14) + SQ(temp_f12)); if ((temp_f2 < this->actor.speedXZ) || (SurfaceType_GetSlope(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId) == 1)) { this->actor.speedXZ = CLAMP_MAX(temp_f2, 16.0f); - this->actor.world.rot.y = Math_FAtan2F(temp_f12, temp_f14); + this->actor.world.rot.y = Math_Atan2S_XY(temp_f12, temp_f14); } if (!Math_StepToF(&this->actor.speedXZ, 0.0f, 1.0f)) { diff --git a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c index a611a309e..3e58691cc 100644 --- a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c +++ b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c @@ -106,7 +106,7 @@ void EnMm3_Init(Actor* thisx, PlayState* play) { void EnMm3_Destroy(Actor* thisx, PlayState* play) { EnMm3* this = THIS; - gSaveContext.save.weekEventReg[63] &= (u8)~1; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); Collider_DestroyCylinder(play, &this->collider); } @@ -279,7 +279,7 @@ void func_80A6F5E4(EnMm3* this, PlayState* play) { case 0x2795: case 0x2796: case 0x2797: - if (gSaveContext.save.weekEventReg[63] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_02)) { Message_StartTextbox(play, 0x279B, &this->actor); this->unk_2B4 = 0x279B; func_80151BB4(play, 0xB); @@ -351,8 +351,8 @@ void func_80A6F9DC(EnMm3* this, PlayState* play) { play_sound(NA_SE_SY_START_SHOT); func_80A6FBA0(this); } else { - gSaveContext.save.weekEventReg[63] &= (u8)~1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); func_80A6F270(this); } } @@ -374,8 +374,8 @@ void func_80A6FBA0(EnMm3* this) { AudioSfx_MuteBanks((1 << BANK_PLAYER) | (1 << BANK_ITEM) | (1 << BANK_ENV) | (1 << BANK_ENEMY) | (1 << BANK_OCARINA) | (1 << BANK_VOICE)); func_801A0238(0, 5); - gSaveContext.save.weekEventReg[63] |= 1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + SET_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); this->actionFunc = func_80A6FBFC; } @@ -425,12 +425,12 @@ void func_80A6FE1C(EnMm3* this) { void func_80A6FE30(EnMm3* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { - if (!(gSaveContext.save.weekEventReg[77] & 1)) { - gSaveContext.save.weekEventReg[77] |= 1; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_77_01)) { + SET_WEEKEVENTREG(WEEKEVENTREG_77_01); } this->actor.parent = NULL; func_80A6FED8(this); - } else if (gSaveContext.save.weekEventReg[77] & 1) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_77_01)) { Actor_PickUp(&this->actor, play, GI_RUPEE_PURPLE, 500.0f, 100.0f); } else { Actor_PickUp(&this->actor, play, GI_HEART_PIECE, 500.0f, 100.0f); diff --git a/src/overlays/actors/ovl_En_Ms/z_en_ms.c b/src/overlays/actors/ovl_En_Ms/z_en_ms.c index c3b7ac727..6aac1355d 100644 --- a/src/overlays/actors/ovl_En_Ms/z_en_ms.c +++ b/src/overlays/actors/ovl_En_Ms/z_en_ms.c @@ -149,7 +149,7 @@ void EnMs_Talk(EnMs* this, PlayState* play) { void EnMs_Sell(EnMs* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actor.textId = 0; - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_IA_NONE); this->actionFunc = EnMs_TalkAfterPurchase; } else { Actor_PickUp(&this->actor, play, GI_MAGIC_BEANS, this->actor.xzDistToPlayer, this->actor.playerHeightRel); @@ -161,7 +161,7 @@ void EnMs_TalkAfterPurchase(EnMs* this, PlayState* play) { func_80151938(play, 0x936); // "You can plant 'em whenever you want [...]" this->actionFunc = EnMs_Talk; } else { - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index feaf65aba..a077ee1bf 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -77,7 +77,7 @@ s32 EnMttag_IsInFinishLine(Vec3f* pos) { * and, if so, what kind of cheating the player is performing. */ s32 EnMttag_CheckPlayerCheatStatus(Vec3f* pos) { - if (!(gSaveContext.eventInf[1] & 1)) { + if (!CHECK_EVENTINF(EVENTINF_10)) { if (Math3D_XZBoundCheck(-466.0f, -386.0f, -687.0f, 193.0f, pos->x, pos->z)) { // The race hasn't started yet, but the player is beyond the starting line. return GORON_RACE_CHEAT_FALSE_START; @@ -234,7 +234,7 @@ s32 EnMttag_UpdateCheckpoints(EnMttag* this, PlayState* play) { s32 EnMttag_ExitRace(PlayState* play, s32 transitionType, s32 nextTransitionType) { CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_SWORD_KOKIRI; play->nextEntrance = ENTRANCE(GORON_RACETRACK, 2); - if (gSaveContext.save.weekEventReg[33] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80)) { // Spring gSaveContext.nextCutsceneIndex = 0xFFF0; } else { @@ -255,7 +255,7 @@ s32 EnMttag_ExitRace(PlayState* play, s32 transitionType, s32 nextTransitionType void EnMttag_ShowFalseStartMessage(EnMttag* this, PlayState* play) { gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; Message_StartTextbox(play, 0xE95, NULL); // An entrant made a false start - func_800B7298(play, &this->actor, 7); + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); Audio_QueueSeqCmd(0x101400FF); this->actionFunc = EnMttag_PotentiallyRestartRace; } @@ -266,7 +266,7 @@ void EnMttag_ShowFalseStartMessage(EnMttag* this, PlayState* play) { */ void EnMttag_ShowCantWinMessage(EnMttag* this, PlayState* play) { Message_StartTextbox(play, 0xE97, NULL); // You can't win now... - func_800B7298(play, &this->actor, 7); + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); this->actionFunc = EnMttag_HandleCantWinChoice; } @@ -288,7 +288,7 @@ void EnMttag_ShowIntroCutscene(EnMttag* this, PlayState* play) { */ void EnMttag_WaitForIntroCutsceneToEnd(EnMttag* this, PlayState* play) { if (ActorCutscene_GetCurrentIndex() != this->actor.cutscene) { - gSaveContext.save.weekEventReg[12] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_12_02); this->actionFunc = EnMttag_RaceStart; } } @@ -311,7 +311,7 @@ void EnMttag_RaceStart(EnMttag* this, PlayState* play) { } EnMttag_ShowFalseStartMessage(this, play); - gSaveContext.eventInf[1] |= 8; + SET_EVENTINF(EVENTINF_13); } else { if (DECR(this->timer) == 60) { Interface_StartTimer(TIMER_ID_MINIGAME_2, 0); @@ -321,7 +321,7 @@ void EnMttag_RaceStart(EnMttag* this, PlayState* play) { player->stateFlags1 &= ~PLAYER_STATE1_20; } else if ((this->timer < 60) && (play->interfaceCtx.minigameState == MINIGAME_STATE_COUNTDOWN_GO)) { this->timer = 0; - gSaveContext.eventInf[1] |= 1; + SET_EVENTINF(EVENTINF_10); this->actionFunc = EnMttag_Race; } } @@ -363,14 +363,14 @@ void EnMttag_Race(EnMttag* this, PlayState* play) { play_sound(NA_SE_SY_START_SHOT); Audio_QueueSeqCmd(NA_BGM_GORON_GOAL | 0x8000); this->timer = 55; - gSaveContext.eventInf[1] |= 2; + SET_EVENTINF(EVENTINF_11); this->actionFunc = EnMttag_RaceFinish; } else if (EnMttag_IsAnyRaceGoronOverFinishLine(this)) { gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; play_sound(NA_SE_SY_START_SHOT); Audio_QueueSeqCmd(NA_BGM_GORON_GOAL | 0x8000); this->timer = 55; - gSaveContext.eventInf[1] |= 4; + SET_EVENTINF(EVENTINF_12); this->actionFunc = EnMttag_RaceFinish; } else { playerCheatStatus = EnMttag_CheckPlayerCheatStatus(playerPos); @@ -382,10 +382,10 @@ void EnMttag_Race(EnMttag* this, PlayState* play) { } EnMttag_ShowFalseStartMessage(this, play); - gSaveContext.eventInf[1] |= 8; + SET_EVENTINF(EVENTINF_13); } else if ((EnMttag_UpdateCheckpoints(this, play)) && (this->timer == 0)) { EnMttag_ShowCantWinMessage(this, play); - gSaveContext.eventInf[1] |= 8; + SET_EVENTINF(EVENTINF_13); } } } @@ -396,7 +396,7 @@ void EnMttag_Race(EnMttag* this, PlayState* play) { */ void EnMttag_RaceFinish(EnMttag* this, PlayState* play) { if (DECR(this->timer) == 0) { - if ((gSaveContext.eventInf[1] & 2)) { + if (CHECK_EVENTINF(EVENTINF_11)) { // Player won EnMttag_ExitRace(play, TRANS_TYPE_03, TRANS_TYPE_03); } else { @@ -420,7 +420,7 @@ void EnMttag_PotentiallyRestartRace(EnMttag* this, PlayState* play) { if (this->shouldRestartRace) { play->nextEntrance = ENTRANCE(GORON_RACETRACK, 1); - if (gSaveContext.save.weekEventReg[33] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80)) { // Spring gSaveContext.nextCutsceneIndex = 0xFFF0; } else { @@ -432,13 +432,13 @@ void EnMttag_PotentiallyRestartRace(EnMttag* this, PlayState* play) { play->transitionType = TRANS_TYPE_02; gSaveContext.nextTransitionType = TRANS_TYPE_02; func_801477B4(play); - func_800B7298(play, &this->actor, 7); + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); Magic_Add(play, MAGIC_FILL_TO_CAPACITY); - gSaveContext.eventInf[1] &= (u8)~1; - gSaveContext.eventInf[1] &= (u8)~2; - gSaveContext.eventInf[1] &= (u8)~4; - gSaveContext.eventInf[1] &= (u8)~8; + CLEAR_EVENTINF(EVENTINF_10); + CLEAR_EVENTINF(EVENTINF_11); + CLEAR_EVENTINF(EVENTINF_12); + CLEAR_EVENTINF(EVENTINF_13); gSaveContext.eventInf[2] = ((gSaveContext.eventInf[2] & 0xF) + 1) | (gSaveContext.eventInf[2] & 0xF0); } else { EnMttag_ExitRace(play, TRANS_TYPE_02, TRANS_TYPE_02); @@ -458,8 +458,8 @@ void EnMttag_HandleCantWinChoice(EnMttag* this, PlayState* play) { func_8019F230(); gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; EnMttag_ExitRace(play, TRANS_TYPE_02, TRANS_TYPE_02); - gSaveContext.eventInf[1] &= (u8)~8; - gSaveContext.eventInf[1] |= 4; + CLEAR_EVENTINF(EVENTINF_13); + SET_EVENTINF(EVENTINF_12); Actor_Kill(&this->actor); return; } @@ -467,8 +467,8 @@ void EnMttag_HandleCantWinChoice(EnMttag* this, PlayState* play) { // Keep racing func_8019F208(); func_801477B4(play); - func_800B7298(play, &this->actor, 6); - gSaveContext.eventInf[1] &= (u8)~8; + func_800B7298(play, &this->actor, PLAYER_CSMODE_6); + CLEAR_EVENTINF(EVENTINF_13); this->timer = 100; this->actionFunc = EnMttag_Race; } @@ -484,12 +484,12 @@ void EnMttag_Init(Actor* thisx, PlayState* play) { this->raceInitialized = false; this->timer = 100; - gSaveContext.eventInf[1] &= (u8)~1; - gSaveContext.eventInf[1] &= (u8)~2; - gSaveContext.eventInf[1] &= (u8)~4; - gSaveContext.eventInf[1] &= (u8)~8; + CLEAR_EVENTINF(EVENTINF_10); + CLEAR_EVENTINF(EVENTINF_11); + CLEAR_EVENTINF(EVENTINF_12); + CLEAR_EVENTINF(EVENTINF_13); - if (!(gSaveContext.save.weekEventReg[12] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_12_02)) { this->actionFunc = EnMttag_ShowIntroCutscene; } else { s32 requiredScopeTemp; diff --git a/src/overlays/actors/ovl_En_Mushi2/z_en_mushi2.c b/src/overlays/actors/ovl_En_Mushi2/z_en_mushi2.c index d8e9d68f8..c10244e55 100644 --- a/src/overlays/actors/ovl_En_Mushi2/z_en_mushi2.c +++ b/src/overlays/actors/ovl_En_Mushi2/z_en_mushi2.c @@ -658,7 +658,7 @@ void func_80A69D3C(EnMushi2* this) { sp38 = Math3D_XZLengthSquared(sp40, sp3C); if (fabsf(sp38) > 0.010000001f) { - s16 temp_v0 = Math_FAtan2F(sp3C, sp40); + s16 temp_v0 = Math_Atan2S_XY(sp3C, sp40); temp_v0 = CLAMP(temp_v0, -3000, 3000); func_80A68F9C(this, temp_v0); } diff --git a/src/overlays/actors/ovl_En_Muto/z_en_muto.c b/src/overlays/actors/ovl_En_Muto/z_en_muto.c index 69a0d7102..35040c606 100644 --- a/src/overlays/actors/ovl_En_Muto/z_en_muto.c +++ b/src/overlays/actors/ovl_En_Muto/z_en_muto.c @@ -70,7 +70,7 @@ void EnMuto_Init(Actor* thisx, PlayState* play) { if (!this->isInMayorsRoom) { this->shouldSetHeadRotation = true; this->textIdIndex = 2; - if (gSaveContext.save.weekEventReg[60] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_60_80)) { this->textIdIndex = 3; } @@ -82,7 +82,7 @@ void EnMuto_Init(Actor* thisx, PlayState* play) { this->collider.dim.height = 60; this->collider.dim.yShift = 0; - if (gSaveContext.save.weekEventReg[63] & 0x80 || (gSaveContext.save.day == 3 && gSaveContext.save.isNight)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80) || ((gSaveContext.save.day == 3) && gSaveContext.save.isNight)) { Actor_Kill(&this->actor); } } @@ -136,7 +136,7 @@ void EnMuto_Idle(EnMuto* this, PlayState* play) { if (!this->isInMayorsRoom) { player = GET_PLAYER(play); if (player->transformation == PLAYER_FORM_DEKU) { - if (!(gSaveContext.save.weekEventReg[88] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_88_08)) { this->actor.textId = 0x62C; } else { this->actor.textId = 0x62B; @@ -164,7 +164,7 @@ void EnMuto_Idle(EnMuto* this, PlayState* play) { } } else { this->textIdIndex = 0; - if (gSaveContext.save.weekEventReg[60] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_60_08)) { this->textIdIndex = 1; } if (Player_GetMask(play) == PLAYER_MASK_COUPLE) { @@ -202,10 +202,10 @@ void EnMuto_InDialogue(EnMuto* this, PlayState* play) { func_801477B4(play); if (this->actor.textId == 0x62C) { - gSaveContext.save.weekEventReg[88] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_88_08); } if (this->actor.textId == 0x624) { - gSaveContext.save.weekEventReg[60] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_60_80); } this->textIdIndex = 3; diff --git a/src/overlays/actors/ovl_En_Nb/z_en_nb.c b/src/overlays/actors/ovl_En_Nb/z_en_nb.c index 3d653a644..572364bbd 100644 --- a/src/overlays/actors/ovl_En_Nb/z_en_nb.c +++ b/src/overlays/actors/ovl_En_Nb/z_en_nb.c @@ -66,7 +66,7 @@ static u8 sScheduleScript[] = { /* 0x3E */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_1), /* 0x41 */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_2), /* 0x44 */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_1), - /* 0x47 */ SCHEDULE_CMD_CHECK_FLAG_S(0x32, 0x20, 0x57 - 0x4B), + /* 0x47 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_50_20, 0x57 - 0x4B), /* 0x4B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(8, 0, 18, 0, 0x54 - 0x51), /* 0x51 */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_3), /* 0x54 */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_1), @@ -424,7 +424,7 @@ void func_80BC05A8(EnNb* this, PlayState* play) { TextState talkState = Message_GetState(&play->msgCtx); u16 textId = play->msgCtx.currentTextId; - if ((&this->actor == player->targetActor) && ((textId < 0xFF) || (textId > 0x200)) && (talkState == TEXT_STATE_3) && + if ((&this->actor == player->talkActor) && ((textId < 0xFF) || (textId > 0x200)) && (talkState == TEXT_STATE_3) && (this->prevTalkState == TEXT_STATE_3)) { if ((play->state.frames % 3) == 0) { if (this->unk_26C == 120.0f) { diff --git a/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c b/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c index d1d57e741..ad872cd21 100644 --- a/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c +++ b/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c @@ -104,7 +104,7 @@ void EnNutsball_Update(Actor* thisx, PlayState* play2) { this->actor.velocity.y += this->actor.gravity; spdXZ = sqrtf((this->actor.velocity.x * this->actor.velocity.x) + (this->actor.velocity.z * this->actor.velocity.z)); - this->actor.world.rot.x = Math_FAtan2F(spdXZ, this->actor.velocity.y); + this->actor.world.rot.x = Math_Atan2S_XY(spdXZ, this->actor.velocity.y); } this->actor.home.rot.z += 0x2AA8; if ((this->actor.bgCheckFlags & 8) || (this->actor.bgCheckFlags & 1) || (this->actor.bgCheckFlags & 16) || diff --git a/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c b/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c index 5fcd69fc8..74ac78b5f 100644 --- a/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c +++ b/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c @@ -68,8 +68,7 @@ void EnNwc_Init(Actor* thisx, PlayState* play) { return; } - if (gSaveContext.save.weekEventReg[25] & 8) { - // if breman mask was already used, replace with adult EnNiw + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_25_08)) { Actor_Spawn(&play->actorCtx, play, ACTOR_EN_NIW, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, this->actor.world.rot.y, 0, NIW_TYPE_REGULAR); Actor_Kill(&this->actor); diff --git a/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c b/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c index 299893982..df778f1a7 100644 --- a/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c +++ b/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c @@ -58,7 +58,7 @@ void func_8096B104(EnOkarinaEffect* this, PlayState* play) { void func_8096B174(EnOkarinaEffect* this, PlayState* play) { DECR(this->unk144); - if ((play->pauseCtx.state == 0) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && (play->msgCtx.msgLength == 0) && !FrameAdvance_IsEnabled(&play->state) && (this->unk144 == 0)) { EnOkarinaEffect_SetupAction(this, func_8096B1FC); } diff --git a/src/overlays/actors/ovl_En_Osn/z_en_osn.c b/src/overlays/actors/ovl_En_Osn/z_en_osn.c index a61c0dc22..7df9d843d 100644 --- a/src/overlays/actors/ovl_En_Osn/z_en_osn.c +++ b/src/overlays/actors/ovl_En_Osn/z_en_osn.c @@ -476,16 +476,17 @@ s32 EnOsn_GetInitialText(EnOsn* this, PlayState* play) { if ((gSaveContext.save.day == 3) && (gSaveContext.save.time >= CLOCK_TIME(5, 0)) && (gSaveContext.save.time < CLOCK_TIME(6, 0))) { return 0x2006; + } else { + return 0x1FCD; } - return 0x1FCD; } this->stateFlags |= OSN_STATE_MET_GORON; - if (gSaveContext.save.weekEventReg[76] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_76_20)) { return 0x1FC8; + } else { + SET_WEEKEVENTREG(WEEKEVENTREG_76_20); + return 0x1FCE; } - - gSaveContext.save.weekEventReg[76] |= 0x20; - return 0x1FCE; } if (player->transformation == PLAYER_FORM_ZORA) { @@ -497,11 +498,12 @@ s32 EnOsn_GetInitialText(EnOsn* this, PlayState* play) { } return 0x1FCD; } + this->stateFlags |= OSN_STATE_MET_ZORA; - if (gSaveContext.save.weekEventReg[76] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_76_40)) { return 0x1FC8; } - gSaveContext.save.weekEventReg[76] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_76_40); return 0x1FD0; } diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c index c245b3774..4db6bf7a8 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -1109,7 +1109,7 @@ void EnOssan_SetupItemPurchased(EnOssan* this, PlayState* play) { this->cutscene = this->lookToShopkeeperCutscene; ActorCutscene_SetIntentToPlay(this->cutscene); } - func_800B85E0(&this->actor, play, 400.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -1132,7 +1132,7 @@ void EnOssan_ContinueShopping(EnOssan* this, PlayState* play) { player->stateFlags2 |= PLAYER_STATE2_20000000; Message_StartTextbox(play, this->textId, &this->actor); EnOssan_SetupStartShopping(play, this, true); - func_800B85E0(&this->actor, play, 100.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 100.0f, PLAYER_IA_MINUS1); break; case 1: default: @@ -1150,7 +1150,7 @@ void EnOssan_ContinueShopping(EnOssan* this, PlayState* play) { player->stateFlags2 |= PLAYER_STATE2_20000000; Message_StartTextbox(play, this->textId, &this->actor); EnOssan_SetupStartShopping(play, this, true); - func_800B85E0(&this->actor, play, 100.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 100.0f, PLAYER_IA_MINUS1); } } @@ -1174,7 +1174,7 @@ void EnOssan_ItemPurchased(EnOssan* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { func_80151938(play, 0x642); } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -1386,19 +1386,19 @@ u16 EnOssan_CuriosityShopMan_GetWelcome(EnOssan* this, PlayState* play) { switch (player->transformation) { case PLAYER_FORM_DEKU: this->animIndex = FSN_ANIM_SLAM_COUNTER_START; - if (gSaveContext.save.weekEventReg[18] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_18_10)) { return sWelcomeDekuTextIds[ENOSSAN_CURIOSITY_SHOP_MAN]; } return sWelcomeDekuFirstTimeTextIds[ENOSSAN_CURIOSITY_SHOP_MAN]; case PLAYER_FORM_ZORA: this->animIndex = FSN_ANIM_LEAN_FORWARD_START; - if (gSaveContext.save.weekEventReg[18] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_18_08)) { return sWelcomeZoraTextIds[ENOSSAN_CURIOSITY_SHOP_MAN]; } return sWelcomeZoraFirstTimeTextIds[ENOSSAN_CURIOSITY_SHOP_MAN]; case PLAYER_FORM_GORON: this->animIndex = FSN_ANIM_HAND_ON_FACE_START; - if (gSaveContext.save.weekEventReg[18] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_18_04)) { return sWelcomeGoronTextIds[ENOSSAN_CURIOSITY_SHOP_MAN]; } return sWelcomeGoronFirstTimeTextIds[ENOSSAN_CURIOSITY_SHOP_MAN]; @@ -1417,17 +1417,17 @@ u16 EnOssan_PartTimer_GetWelcome(EnOssan* this, PlayState* play) { } switch (player->transformation) { case PLAYER_FORM_DEKU: - if (gSaveContext.save.weekEventReg[55] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_10)) { return sWelcomeDekuTextIds[ENOSSAN_PART_TIME_WORKER]; } return sWelcomeDekuFirstTimeTextIds[ENOSSAN_PART_TIME_WORKER]; case PLAYER_FORM_ZORA: - if (gSaveContext.save.weekEventReg[55] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_08)) { return sWelcomeZoraTextIds[ENOSSAN_PART_TIME_WORKER]; } return sWelcomeZoraFirstTimeTextIds[ENOSSAN_PART_TIME_WORKER]; case PLAYER_FORM_GORON: - if (gSaveContext.save.weekEventReg[55] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_04)) { return sWelcomeGoronTextIds[ENOSSAN_PART_TIME_WORKER]; } return sWelcomeGoronFirstTimeTextIds[ENOSSAN_PART_TIME_WORKER]; @@ -1438,22 +1438,22 @@ u16 EnOssan_PartTimer_GetWelcome(EnOssan* this, PlayState* play) { void EnOssan_SetHaveMet(EnOssan* this) { switch (this->textId) { case 0x06A9: - gSaveContext.save.weekEventReg[18] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_18_10); break; case 0x06C6: - gSaveContext.save.weekEventReg[55] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_55_10); break; case 0x06A7: - gSaveContext.save.weekEventReg[18] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_18_08); break; case 0x06C4: - gSaveContext.save.weekEventReg[55] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_55_08); break; case 0x06A5: - gSaveContext.save.weekEventReg[18] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_18_04); break; case 0x06C2: - gSaveContext.save.weekEventReg[55] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_55_04); break; } } diff --git a/src/overlays/actors/ovl_En_Ot/z_en_ot.c b/src/overlays/actors/ovl_En_Ot/z_en_ot.c index ffd308601..2ef7e53c2 100644 --- a/src/overlays/actors/ovl_En_Ot/z_en_ot.c +++ b/src/overlays/actors/ovl_En_Ot/z_en_ot.c @@ -179,7 +179,7 @@ void EnOt_Init(Actor* thisx, PlayState* play) { this->actor.world.pos.y = BgCheck_EntityRaycastFloor3(&play->colCtx, &this->actor.floorPoly, &bgId, &this->actor.world.pos) + 50.0f; - if (gSaveContext.save.weekEventReg[84] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_84_10)) { Matrix_RotateYS(this->actor.shape.rot.y, MTXMODE_NEW); Matrix_MultVecZ(52.519997f, &sp64); Math_Vec3f_Sum(&this->actor.world.pos, &sp64, &sp64); @@ -194,7 +194,7 @@ void EnOt_Init(Actor* thisx, PlayState* play) { this->unk_394.y = this->actor.world.pos.y; this->unk_394.z = (this->actor.world.pos.z + this->unk_360->actor.world.pos.z) * 0.5f; Math_Vec3f_Copy(&this->unk_360->unk_394, &this->unk_394); - if (gSaveContext.save.weekEventReg[32] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_32_01)) { func_80B5C244(this, play); } else { func_80B5C684(this, play); @@ -229,7 +229,7 @@ void EnOt_Init(Actor* thisx, PlayState* play) { switch (this->unk_344) { case 0: Actor_SetScale(&this->actor, 0.0f); - if (!(gSaveContext.save.weekEventReg[13] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_13_01)) { Actor_SetScale(&this->actor, 0.0f); func_80B5C910(this, play); } else { @@ -249,8 +249,8 @@ void EnOt_Init(Actor* thisx, PlayState* play) { case 1: Actor_SetScale(&this->actor, 0.012999999f); - if (gSaveContext.save.weekEventReg[84] & 0x10) { - if (gSaveContext.save.weekEventReg[32] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_84_10)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_32_01)) { func_80B5C244(this, play); } else { func_80B5C684(this, play); @@ -263,7 +263,7 @@ void EnOt_Init(Actor* thisx, PlayState* play) { break; case 3: - if (!(gSaveContext.save.weekEventReg[26] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_26_08)) { this->actor.flags |= ACTOR_FLAG_8000000; this->actor.flags &= ~(ACTOR_FLAG_1 | ACTOR_FLAG_8); Actor_SetScale(&this->actor, 0.0064999997f); @@ -375,11 +375,11 @@ void func_80B5BFB8(EnOt* this, PlayState* play) { } void func_80B5C154(EnOt* this, PlayState* play) { - if (gSaveContext.save.weekEventReg[32] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_32_01)) { this->getItemId = GI_RUPEE_RED; } else { this->getItemId = GI_HEART_PIECE; - gSaveContext.save.weekEventReg[32] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_32_01); } Actor_PickUp(&this->actor, play, this->getItemId, this->actor.xzDistToPlayer, this->actor.playerHeightRel); this->actionFunc = func_80B5C1CC; @@ -481,7 +481,7 @@ void func_80B5C634(EnOt* this, PlayState* play) { } void func_80B5C64C(EnOt* this, PlayState* play) { - if (gSaveContext.save.weekEventReg[26] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_26_08)) { Actor_Kill(&this->actor); } } @@ -504,7 +504,7 @@ void func_80B5C6DC(EnOt* this, PlayState* play) { Matrix_MultVecZ(26.259998f, &sp30); } else { if (this->unk_73C == 0) { - gSaveContext.save.weekEventReg[84] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_84_10); switch (this->unk_388) { case 0: ActorCutscene_Stop(this->cutscenes[2]); @@ -526,7 +526,7 @@ void func_80B5C6DC(EnOt* this, PlayState* play) { Math_SmoothStepToF(&this->actor.world.pos.x, this->unk_348.x, 1.0f, 2.0f, 0.01f); Math_SmoothStepToF(&this->actor.world.pos.z, this->unk_348.z, 1.0f, 2.0f, 0.01f); Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 3, 0xE38, 0x38E); - if ((gSaveContext.save.weekEventReg[84] & 0x10) && (this->unk_33C == 1)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_84_10) && (this->unk_33C == 1)) { this->actor.textId = 0; this->unk_384 = 1; if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { @@ -555,7 +555,7 @@ void func_80B5C910(EnOt* this, PlayState* play) { void func_80B5C950(EnOt* this, PlayState* play) { if (this->unk_32C & 8) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_SEAHORSE_OUT_BOTTLE); - gSaveContext.save.weekEventReg[25] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_25_04); func_80B5CAD0(this, play); } } @@ -605,7 +605,7 @@ void func_80B5CB0C(EnOt* this, PlayState* play) { void func_80B5CBA0(EnOt* this, PlayState* play) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_IA_NONE); this->actionFunc = func_80B5CBEC; } @@ -616,7 +616,7 @@ void func_80B5CBEC(EnOt* this, PlayState* play) { } else { Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 3, 0xE38, 0x38E); this->actor.world.rot.y = this->actor.shape.rot.y; - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_IA_NONE); } } @@ -649,7 +649,7 @@ void func_80B5CD40(EnOt* this, PlayState* play) { this->actor.world.rot.y = this->actor.shape.rot.y; if (1) {} if (!temp) { - gSaveContext.save.weekEventReg[23] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_23_10); Message_StartTextbox(play, 0x1069, NULL); } break; @@ -692,7 +692,7 @@ void func_80B5CEC8(EnOt* this, PlayState* play) { Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 3, 0xE38, 0x38E); if (this->unk_32C & 0x800) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_IA_NONE); } else { this->actor.flags &= ~ACTOR_FLAG_10000; if ((player->actor.bgCheckFlags & 1) && !func_801242B4(player) && (this->actor.xzDistToPlayer < 130.0f)) { @@ -700,7 +700,7 @@ void func_80B5CEC8(EnOt* this, PlayState* play) { } } - if (!(gSaveContext.save.weekEventReg[84] & 0x10) && (ENOT_GET_C000(&this->actor) == 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_84_10) && (ENOT_GET_C000(&this->actor) == 1)) { if ((fabsf(this->actor.xzDistToPlayer) <= 130.0f) && (fabsf(this->actor.playerHeightRel) <= 130.0f)) { player->unk_B2B = 29; } @@ -753,7 +753,7 @@ void func_80B5D160(EnOt* this, PlayState* play) { phi_a1 = 0x1069; } } else if (Flags_GetSwitch(play, ENOT_GET_3F80(&this->actor))) { - if (gSaveContext.save.weekEventReg[23] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_23_10)) { phi_a1 = 0x106C; } else { phi_a1 = 0x106B; @@ -984,8 +984,8 @@ void func_80B5DB6C(Actor* thisx, PlayState* play) { EnOt* this = THIS; Player* player = GET_PLAYER(play); - if (!(gSaveContext.save.weekEventReg[84] & 0x10) && !(this->unk_32C & 8)) { - if (gSaveContext.save.weekEventReg[25] & 4) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_84_10) && !(this->unk_32C & 8)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_25_04)) { Vec3f sp50; func_80B5B2E0(play, &this->actor.world.pos, ENOT_GET_7F(&this->actor), &sp50, &this->unk_340); @@ -997,7 +997,7 @@ void func_80B5DB6C(Actor* thisx, PlayState* play) { } else if (D_80B5E888 != NULL) { s32 sp4C = false; - if (gSaveContext.save.weekEventReg[13] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_13_01)) { if (!SurfaceType_IsHorseBlocked(&play->colCtx, player->actor.floorPoly, player->actor.floorBgId)) { sp4C = true; } diff --git a/src/overlays/actors/ovl_En_Owl/z_en_owl.c b/src/overlays/actors/ovl_En_Owl/z_en_owl.c index ab083aff1..8d7b92b69 100644 --- a/src/overlays/actors/ovl_En_Owl/z_en_owl.c +++ b/src/overlays/actors/ovl_En_Owl/z_en_owl.c @@ -183,7 +183,7 @@ void EnOwl_Init(Actor* thisx, PlayState* play) { case ENOWL_GET_TYPE_2: this->actionFunc = func_8095BE0C; - if (gSaveContext.save.weekEventReg[9] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_09_20)) { this->actor.textId = 0xBF0; } else { this->actor.textId = 0xBEA; @@ -229,7 +229,7 @@ s32 func_8095A978(EnOwl* this, PlayState* play, u16 textId, f32 targetDist, f32 this->actor.textId = textId; if (this->actor.xzDistToPlayer < targetDist) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, targetDist, arg4, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, targetDist, arg4, PLAYER_IA_NONE); } return false; @@ -242,7 +242,7 @@ s32 func_8095A9FC(EnOwl* this, PlayState* play, u16 textId) { this->actor.textId = textId; if (this->actor.xzDistToPlayer < 120.0f) { - func_800B8500(&this->actor, play, 350.0f, 1000.0f, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, 350.0f, 1000.0f, PLAYER_IA_NONE); } return false; @@ -411,7 +411,7 @@ void func_8095B0C8(EnOwl* this) { Vec3s* points = Lib_SegmentedToVirtual(this->path->points); points += this->unk_3F8; - this->unk_3EC = Math_FAtan2F(points->z - this->actor.world.pos.z, points->x - this->actor.world.pos.x); + this->unk_3EC = Math_Atan2S_XY(points->z - this->actor.world.pos.z, points->x - this->actor.world.pos.x); this->unk_3F0 = points->y; } @@ -505,7 +505,7 @@ void func_8095B574(EnOwl* this, PlayState* play) { this->unk_406 = 2; } else if (this->actor.xzDistToPlayer < 200.0f) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 200.0f, 400.0f, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, 200.0f, 400.0f, PLAYER_IA_NONE); } else { this->actor.flags &= ~ACTOR_FLAG_10000; } @@ -613,10 +613,10 @@ void func_8095BA84(EnOwl* this, PlayState* play) { switch (play->msgCtx.choiceIndex) { case 0: func_8019F208(); - if (gSaveContext.save.weekEventReg[9] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_09_40)) { func_80151938(play, 0xBF4); } else { - gSaveContext.save.weekEventReg[9] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_09_40); func_80151938(play, 0xBED); } break; @@ -649,7 +649,7 @@ void func_8095BA84(EnOwl* this, PlayState* play) { if (Message_ShouldAdvance(play)) { switch (play->msgCtx.currentTextId) { case 0xBEA: - gSaveContext.save.weekEventReg[9] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_09_20); func_80151938(play, 0xBEB); break; @@ -718,11 +718,11 @@ void func_8095BE0C(EnOwl* this, PlayState* play) { this->actionFlags |= 0x40; } else if (this->actor.textId == 0xBF0) { if (this->actor.isTargeted) { - func_800B8500(&this->actor, play, 200.0f, 200.0f, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, 200.0f, 200.0f, PLAYER_IA_NONE); } } else if (this->actor.xzDistToPlayer < 200.0f) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 200.0f, 200.0f, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, 200.0f, 200.0f, PLAYER_IA_NONE); } else { this->actor.flags &= ~ACTOR_FLAG_10000; } diff --git a/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c b/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c index 8c8a6eb57..2b0aae48a 100644 --- a/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c +++ b/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c @@ -153,17 +153,19 @@ void EnPamera_Init(Actor* thisx, PlayState* play) { } else { func_80BD8588(this, play); func_80BD8658(this); + if (1) {} - if (!(gSaveContext.save.weekEventReg[14] & 4) || (gSaveContext.save.weekEventReg[52] & 0x20) || - (gSaveContext.save.weekEventReg[75] & 0x20) || (gSaveContext.save.entrance == ENTRANCE(IKANA_CANYON, 9))) { + + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_04) || CHECK_WEEKEVENTREG(WEEKEVENTREG_52_20) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_75_20) || (gSaveContext.save.entrance == ENTRANCE(IKANA_CANYON, 9))) { Actor_Kill(&this->actor); } - if (gSaveContext.save.weekEventReg[61] & 4) { - if (!(gSaveContext.save.weekEventReg[59] & 1) || - (gSaveContext.save.entrance != ENTRANCE(IKANA_CANYON, 2))) { + + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_61_04)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_59_01) || (gSaveContext.save.entrance != ENTRANCE(IKANA_CANYON, 2))) { if ((gSaveContext.save.entrance != ENTRANCE(IKANA_CANYON, 2)) && - (gSaveContext.save.weekEventReg[59] & 1)) { - gSaveContext.save.weekEventReg[59] &= (u8)~1; + CHECK_WEEKEVENTREG(WEEKEVENTREG_59_01)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_59_01); } func_80BD8700(this); } else { @@ -174,7 +176,7 @@ void EnPamera_Init(Actor* thisx, PlayState* play) { func_80BD8CCC(this); } } else { - gSaveContext.save.weekEventReg[59] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_59_01); func_80BD8FF0(this); } } @@ -201,7 +203,7 @@ void func_80BD8588(EnPamera* this, PlayState* play) { if (path == NULL) { Actor_Kill(&this->actor); } - if (gSaveContext.save.weekEventReg[61] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_61_04)) { path = &play->setupPathList[path->unk1]; } this->pathPoints = Lib_SegmentedToVirtual(path->points); @@ -290,7 +292,7 @@ void func_80BD8964(EnPamera* this, PlayState* play) { if (Math_Vec3f_StepTo(&this->actor.world.pos, &vec, 1.0f) < 5.0f) { this->actor.speedXZ = 1.5f; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 1); - gSaveContext.save.weekEventReg[59] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_59_01); func_80BD8B50(this); } } @@ -305,10 +307,10 @@ void func_80BD8A7C(EnPamera* this, PlayState* play) { 0x3000, 0x100); this->actor.world.rot.y = this->actor.shape.rot.y; if (Math_Vec3f_StepTo(&this->actor.world.pos, &this->actor.home.pos, 1.5f) < 10.0f) { - gSaveContext.save.weekEventReg[59] &= (u8)~1; - if (!(gSaveContext.save.weekEventReg[61] & 4)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_59_01); + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_61_04)) { func_80BD92D0(this, play); - gSaveContext.save.weekEventReg[61] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_61_04); } func_80BD8700(this); } @@ -567,7 +569,7 @@ void func_80BD9840(EnPamera* this, PlayState* play) { this->actor.update = func_80BDA344; this->actor.flags |= ACTOR_FLAG_2000000; this->actor.flags |= ACTOR_FLAG_100000; - if ((gSaveContext.save.weekEventReg[75] & 0x20) || (gSaveContext.save.weekEventReg[52] & 0x20)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_75_20) || CHECK_WEEKEVENTREG(WEEKEVENTREG_52_20)) { func_80BD9E60(this); func_80BD9938(this); } else { @@ -575,7 +577,7 @@ void func_80BD9840(EnPamera* this, PlayState* play) { func_80BD9E60(this); func_80BD9904(this); } - if (gSaveContext.save.weekEventReg[14] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_04)) { func_801A0204(NA_BGM_MUSIC_BOX_HOUSE); } else { func_801A0204(NA_BGM_INSIDE_A_HOUSE); @@ -603,7 +605,7 @@ void func_80BD994C(EnPamera* this, PlayState* play) { this->unk_324 = 0x15A8; } else if ((gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) || - ((gSaveContext.save.weekEventReg[52] & 0x20) && (!(gSaveContext.save.weekEventReg[75] & 0x20)))) { + (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_20) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_75_20))) { func_80BD93CC(this, 1, 0); Message_StartTextbox(play, 0x158E, &this->actor); this->unk_324 = 0x158E; @@ -729,7 +731,7 @@ s32 func_80BD9CB8(EnPamera* this, PlayState* play) { this->setupFunc(this, play); return 1; } - if ((play->csCtx.state == 0) && (gSaveContext.save.weekEventReg[75] & 0x20)) { + if ((play->csCtx.state == 0) && CHECK_WEEKEVENTREG(WEEKEVENTREG_75_20)) { if ((this->actionFunc != func_80BD994C) && (this->actionFunc != EnPamera_HandleDialogue)) { this->actor.shape.rot.y = this->actor.world.rot.y; func_80BD9904(this); @@ -853,11 +855,11 @@ void func_80BDA344(Actor* thisx, PlayState* play) { func_80BD9384(this, play); if (func_80BD9CB8(this, play)) { // Pamela is outside - if (gSaveContext.save.weekEventReg[59] & 1) { - gSaveContext.save.weekEventReg[59] &= (u8)~1; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_59_01)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_59_01); } - if (!(gSaveContext.save.weekEventReg[61] & 4)) { - gSaveContext.save.weekEventReg[61] |= 4; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_61_04)) { + SET_WEEKEVENTREG(WEEKEVENTREG_61_04); } Actor_TrackNone(&this->headRot, &this->torsoRot); } else { @@ -866,7 +868,7 @@ void func_80BDA344(Actor* thisx, PlayState* play) { Collider_UpdateCylinder(&this->actor, &this->collider); CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base); } - if (gSaveContext.save.weekEventReg[14] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_04)) { play->roomCtx.unk7A[0]++; } } diff --git a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c index b4670662c..82b424657 100644 --- a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c +++ b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c @@ -171,13 +171,11 @@ static InitChainEntry sInitChain[] = { ICHAIN_U8(targetMode, 10, ICHAIN_STOP), }; -// gSaveContext.save.weekEventReg[KEY] = VALUE -// KEY | VALUE static s32 isFrogReturnedFlags[] = { - (32 << 8) | 0x40, // Woodfall Temple Frog Returned - (32 << 8) | 0x80, // Great Bay Temple Frog Returned - (33 << 8) | 0x01, // Southern Swamp Frog Returned - (33 << 8) | 0x02, // Laundry Pool Frog Returned + WEEKEVENTREG_32_40, + WEEKEVENTREG_32_80, + WEEKEVENTREG_33_01, + WEEKEVENTREG_33_02, }; void EnPametfrog_Init(Actor* thisx, PlayState* play) { @@ -193,8 +191,7 @@ void EnPametfrog_Init(Actor* thisx, PlayState* play) { this->params = CLAMP(this->actor.params, 1, 4); if (Flags_GetClear(play, play->roomCtx.curRoom.num)) { Actor_Kill(&this->actor); - if (!(gSaveContext.save.weekEventReg[isFrogReturnedFlags[this->actor.params - 1] >> 8] & - (u8)isFrogReturnedFlags[this->actor.params - 1])) { + if (!CHECK_WEEKEVENTREG(isFrogReturnedFlags[this->actor.params - 1])) { Actor_Spawn(&play->actorCtx, play, ACTOR_EN_MINIFROG, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, this->actor.shape.rot.y, 0, this->params); } @@ -345,7 +342,7 @@ void EnPametfrog_StopCutscene(EnPametfrog* this, PlayState* play) { Play_SetCameraAtEye(play, CAM_ID_MAIN, &subCam->at, &subCam->eye); this->subCamId = SUB_CAM_ID_DONE; ActorCutscene_Stop(this->cutscene); - func_800B724C(play, &this->actor, 6); + func_800B724C(play, &this->actor, PLAYER_CSMODE_6); } } @@ -1008,7 +1005,7 @@ void EnPametfrog_PlayCutscene(EnPametfrog* this, PlayState* play) { if (ActorCutscene_GetCanPlayNext(this->cutscene)) { ActorCutscene_Start(this->cutscene, &this->actor); this->subCamId = ActorCutscene_GetCurrentSubCamId(this->cutscene); - func_800B724C(play, &this->actor, 7); + func_800B724C(play, &this->actor, PLAYER_CSMODE_7); if (this->actor.colChkInfo.health == 0) { if (this->actor.params == GEKKO_PRE_SNAPPER) { EnPametfrog_SetupCallSnapper(this, play); diff --git a/src/overlays/actors/ovl_En_Pm/z_en_pm.c b/src/overlays/actors/ovl_En_Pm/z_en_pm.c index 7534d58a1..c4d1184bf 100644 --- a/src/overlays/actors/ovl_En_Pm/z_en_pm.c +++ b/src/overlays/actors/ovl_En_Pm/z_en_pm.c @@ -132,7 +132,7 @@ static u8 D_80AFAD80[] = { /* 0x239 */ SCHEDULE_CMD_RET_TIME(10, 21, 10, 35, 44), /* 0x23F */ SCHEDULE_CMD_RET_NONE(), /* 0x240 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(2, 0x414 - 0x245), - /* 0x245 */ SCHEDULE_CMD_CHECK_FLAG_L(0x1C, 0x08, 0x2EF - 0x24A), + /* 0x245 */ SCHEDULE_CMD_CHECK_FLAG_L(WEEKEVENTREG_28_08, 0x2EF - 0x24A), /* 0x24A */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(9, 0, 12, 0, 0x117 - 0x251), /* 0x251 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 0, 13, 1, 0x2E4 - 0x258), /* 0x258 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 1, 15, 0, 0x2DC - 0x25E), @@ -226,8 +226,8 @@ static u8 D_80AFAD80[] = { /* 0x40D */ SCHEDULE_CMD_RET_TIME(12, 0, 13, 1, 21), /* 0x413 */ SCHEDULE_CMD_RET_NONE(), /* 0x414 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(3, 0x588 - 0x419), - /* 0x419 */ SCHEDULE_CMD_CHECK_FLAG_L(0x1C, 0x08, 0x55D - 0x41E), - /* 0x41E */ SCHEDULE_CMD_CHECK_FLAG_L(0x1C, 0x10, 0x52F - 0x423), + /* 0x419 */ SCHEDULE_CMD_CHECK_FLAG_L(WEEKEVENTREG_28_08, 0x55D - 0x41E), + /* 0x41E */ SCHEDULE_CMD_CHECK_FLAG_L(WEEKEVENTREG_28_10, 0x52F - 0x423), /* 0x423 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(9, 0, 12, 0, 0x117 - 0x42A), /* 0x42A */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 0, 13, 1, 0x527 - 0x431), /* 0x431 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 1, 15, 0, 0x446 - 0x437), @@ -544,19 +544,19 @@ static AnimationInfoS sAnimationInfo[] = { }; s32 func_80AF7B40(void) { - if (gSaveContext.save.weekEventReg[90] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_90_01)) { return 4; } - if (gSaveContext.save.weekEventReg[89] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_89_40)) { return 3; } - if (gSaveContext.save.weekEventReg[89] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_89_08)) { return 2; } - if (gSaveContext.save.weekEventReg[86] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_86_01)) { return 1; } @@ -566,28 +566,28 @@ s32 func_80AF7B40(void) { s32 func_80AF7BAC(EnPm* this) { switch (this->unk_38C) { case 0: - if (gSaveContext.save.weekEventReg[86] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_86_01)) { D_801F4E78 = gSaveContext.save.time; this->unk_38C++; } break; case 1: - if (gSaveContext.save.weekEventReg[89] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_89_08)) { D_801F4E78 = gSaveContext.save.time; this->unk_38C++; } break; case 2: - if (gSaveContext.save.weekEventReg[89] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_89_40)) { D_801F4E78 = 0; this->unk_38C++; } break; case 3: - if (gSaveContext.save.weekEventReg[90] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_90_01)) { D_801F4E78 = gSaveContext.save.time; this->unk_38C++; } @@ -842,7 +842,7 @@ s32 func_80AF81E8(EnPm* this, PlayState* play) { case 1: case 3: case 5: - if ((gSaveContext.save.weekEventReg[86] & 8) && (this->unk_378 == 3)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_86_08) && (this->unk_378 == 3)) { ActorCutscene_Stop(sp2A); } else { Camera_SetTargetActor(Play_GetCamera(play, ActorCutscene_GetCurrentSubCamId(sp2A)), &this->actor); @@ -1103,31 +1103,29 @@ void func_80AF8AC8(EnPm* this) { void func_80AF8BA8(s32 arg0) { static u16 D_80AFB8D4[] = { - 0x1B02, 0x1B04, 0x1B08, 0x1B10, 0x1B20, + WEEKEVENTREG_27_02, WEEKEVENTREG_27_04, WEEKEVENTREG_27_08, WEEKEVENTREG_27_10, WEEKEVENTREG_27_20, }; static u16 D_80AFB8E0[] = { - 0x1B40, 0x1B80, 0x1C01, 0x1C02, 0x1C04, + WEEKEVENTREG_27_40, WEEKEVENTREG_27_80, WEEKEVENTREG_28_01, WEEKEVENTREG_28_02, WEEKEVENTREG_28_04, }; - if (!(gSaveContext.save.weekEventReg[88] & 2)) { - if (gSaveContext.save.weekEventReg[D_80AFB8D4[arg0] >> 8] & - (D_80AFB8D4[arg0] & (1 | 2 | 4 | 0x38 | 0x40 | 0x80))) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_88_02)) { + if (CHECK_WEEKEVENTREG(D_80AFB8D4[arg0])) { switch (gSaveContext.save.day) { case 2: - gSaveContext.save.weekEventReg[28] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_28_08); break; case 3: - gSaveContext.save.weekEventReg[28] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_28_10); break; } - gSaveContext.save.weekEventReg[51] |= 2; - gSaveContext.save.weekEventReg[90] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_51_02); + SET_WEEKEVENTREG(WEEKEVENTREG_90_08); } } - gSaveContext.save.weekEventReg[D_80AFB8E0[arg0] >> 8] = - ((void)0, gSaveContext.save.weekEventReg[D_80AFB8E0[arg0] >> 8]) | (u8)D_80AFB8E0[arg0]; + SET_WEEKEVENTREG(D_80AFB8E0[arg0]); } void func_80AF8C68(EnPm* this, PlayState* play) { @@ -1135,7 +1133,7 @@ void func_80AF8C68(EnPm* this, PlayState* play) { s32 talkState = Message_GetState(&play->msgCtx); u16 textId = play->msgCtx.currentTextId; - if ((player->targetActor == &this->actor) && ((textId < 0xFF) || (textId > 0x200)) && (talkState == TEXT_STATE_3) && + if ((player->talkActor == &this->actor) && ((textId < 0xFF) || (textId > 0x200)) && (talkState == TEXT_STATE_3) && (this->prevTalkState == TEXT_STATE_3)) { if ((play->state.frames % 3) == 0) { if (this->unk_360 == 120.0f) { @@ -1261,7 +1259,7 @@ s32 func_80AF9008(EnPm* this, PlayState* play, ScheduleOutput* scheduleOutput) { this->unk_36C = scheduleOutput->time1 - scheduleOutput->time0; this->unk_36E = sp56 - scheduleOutput->time0; this->actor.flags &= ~ACTOR_FLAG_1; - if (gSaveContext.save.weekEventReg[90] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_90_08)) { this->unk_356 |= 0x800; } this->unk_356 |= 0x9000; @@ -1341,7 +1339,7 @@ s32 func_80AF91E8(EnPm* this, PlayState* play, ScheduleOutput* scheduleOutput) { default: SubS_UpdateFlags(&this->unk_356, 3, 7); func_80AF7E98(this, 0); - if (gSaveContext.save.weekEventReg[90] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_90_08)) { this->unk_356 |= 0x800; } this->unk_356 |= 0x9000; @@ -1380,7 +1378,7 @@ s32 func_80AF94AC(EnPm* this, PlayState* play, ScheduleOutput* scheduleOutput) { if (scheduleOutput->result == 24) { Flags_UnsetSwitch(play, 0); Flags_UnsetSwitch(play, 1); - this->unk_394 = PLAYER_AP_NONE; + this->unk_394 = PLAYER_IA_NONE; this->unk_368 = 60.0f; func_80AF7E98(this, 9); } @@ -1457,10 +1455,10 @@ s32 func_80AF95E8(EnPm* this, PlayState* play, ScheduleOutput* scheduleOutput) { break; case 23: - if (gSaveContext.save.weekEventReg[90] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_90_08)) { this->unk_356 |= 0x800; } - gSaveContext.save.weekEventReg[60] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_60_04); default: if (scheduleOutput->result == 29) { @@ -1568,7 +1566,7 @@ s32 func_80AF9BF8(EnPm* this, PlayState* play, ScheduleOutput* scheduleOutput) { this->actor.flags |= ACTOR_FLAG_1; this->actor.targetMode = 0; - this->unk_394 = PLAYER_AP_NONE; + this->unk_394 = PLAYER_IA_NONE; this->unk_356 = 0; this->unk_368 = 40.0f; @@ -1780,11 +1778,9 @@ s32 func_80AF9E7C(EnPm* this, PlayState* play) { } if ((this->unk_356 & 0x10) && (this->unk_258 == 90)) { - u8 val = gSaveContext.save.weekEventReg[89] | 0x40; - - gSaveContext.save.weekEventReg[89] = val; - if (val == 0) { - gSaveContext.save.weekEventReg[89] |= 0x40; + //! @bug Uses SET_WEEKEVENTREG instead of CHECK_WEEKEVENTREG + if (!SET_WEEKEVENTREG(WEEKEVENTREG_89_40)) { + SET_WEEKEVENTREG(WEEKEVENTREG_89_40); } } @@ -1798,7 +1794,7 @@ s32 func_80AFA170(EnPm* this, PlayState* play) { switch (this->unk_258) { case 28: if (gSaveContext.save.time >= CLOCK_TIME(1, 39)) { - gSaveContext.save.weekEventReg[89] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_89_08); } case 16: @@ -2120,7 +2116,7 @@ void EnPm_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Matrix_MultVec3f(&gZeroVec3f, &this->actor.focus.pos); Math_Vec3s_Copy(&this->actor.focus.rot, &this->actor.world.rot); } - if ((this->unk_356 & 0x8000) && !(gSaveContext.save.weekEventReg[90] & 4)) { + if ((this->unk_356 & 0x8000) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_90_04)) { func_80AF8890(this, gfx, 1); } break; diff --git a/src/overlays/actors/ovl_En_Pr/z_en_pr.c b/src/overlays/actors/ovl_En_Pr/z_en_pr.c index 97fd2c7f5..5068c96ee 100644 --- a/src/overlays/actors/ovl_En_Pr/z_en_pr.c +++ b/src/overlays/actors/ovl_En_Pr/z_en_pr.c @@ -345,7 +345,7 @@ void func_80A32B20(EnPr* this, PlayState* play) { this->actor.speedXZ = BREG(57) + 3.0f; Math_SmoothStepToS(&this->unk_22C, this->actor.yawTowardsPlayer, BREG(49) + 1, BREG(50) + 1000, BREG(51)); - this->unk_2B8 = D_80A338C0[(void)0, gSaveContext.save.playerForm] + player->actor.world.pos.y; + this->unk_2B8 = D_80A338C0[GET_PLAYER_FORM] + player->actor.world.pos.y; func_80A324E0(this, play); if (!(player->stateFlags1 & PLAYER_STATE1_8000000)) { @@ -382,7 +382,7 @@ void func_80A32D28(EnPr* this, PlayState* play) { } else { Math_SmoothStepToS(&this->unk_22C, this->actor.yawTowardsPlayer, BREG(49) + 1, BREG(50) + 1000, BREG(51)); func_80A325E4(this); - this->unk_2B8 = D_80A338C0[(void)0, gSaveContext.save.playerForm] + player->actor.world.pos.y; + this->unk_2B8 = D_80A338C0[GET_PLAYER_FORM] + player->actor.world.pos.y; func_80A324E0(this, play); if (this->unk_2C8 < sqrtf(SQ(player->actor.world.pos.x - this->actor.home.pos.x) + SQ(player->actor.world.pos.z - this->actor.home.pos.z))) { diff --git a/src/overlays/actors/ovl_En_Prz/z_en_prz.c b/src/overlays/actors/ovl_En_Prz/z_en_prz.c index 23b7d7fd4..dad8fc126 100644 --- a/src/overlays/actors/ovl_En_Prz/z_en_prz.c +++ b/src/overlays/actors/ovl_En_Prz/z_en_prz.c @@ -353,7 +353,7 @@ void func_80A767A8(EnPrz* this, PlayState* play) { this->unk_1C8 = 1; } - this->unk_1D8.y = (player->actor.world.pos.y + D_80A771E0[((void)0, gSaveContext.save.playerForm)]) + + this->unk_1D8.y = (player->actor.world.pos.y + D_80A771E0[GET_PLAYER_FORM]) + randPlusMinusPoint5Scaled((2.0f * this->unk_1E6) + 1.0f); func_80A76070(this, Math_Vec3f_Yaw(&this->actor.world.pos, &this->unk_1D8), play); } diff --git a/src/overlays/actors/ovl_En_Pst/z_en_pst.c b/src/overlays/actors/ovl_En_Pst/z_en_pst.c index bae89c5c7..c49852746 100644 --- a/src/overlays/actors/ovl_En_Pst/z_en_pst.c +++ b/src/overlays/actors/ovl_En_Pst/z_en_pst.c @@ -162,15 +162,15 @@ void EnPst_UpdateCollision(EnPst* this, PlayState* play) { s32 EnPst_HandleLetterDay1(EnPst* this) { switch (this->actor.params) { case POSTBOX_SOUTH_UPPER_CLOCKTOWN: - return gSaveContext.save.weekEventReg[27] & 0x2; + return CHECK_WEEKEVENTREG(WEEKEVENTREG_27_02); case POSTBOX_NORTH_CLOCKTOWN: - return gSaveContext.save.weekEventReg[27] & 0x4; + return CHECK_WEEKEVENTREG(WEEKEVENTREG_27_04); case POSTBOX_EAST_UPPER_CLOCKTOWN: - return gSaveContext.save.weekEventReg[27] & 0x8; + return CHECK_WEEKEVENTREG(WEEKEVENTREG_27_08); case POSTBOX_EAST_LOWER_CLOCKTOWN: - return gSaveContext.save.weekEventReg[27] & 0x10; + return CHECK_WEEKEVENTREG(WEEKEVENTREG_27_10); case POSTBOX_SOUTH_LOWER_CLOCKTOWN: - return gSaveContext.save.weekEventReg[27] & 0x20; + return CHECK_WEEKEVENTREG(WEEKEVENTREG_27_20); default: return false; } @@ -179,22 +179,22 @@ s32 EnPst_HandleLetterDay1(EnPst* this) { s32 EnPst_HandleLetterDay2(EnPst* this) { switch (this->actor.params) { case POSTBOX_SOUTH_UPPER_CLOCKTOWN: - return gSaveContext.save.weekEventReg[27] & 0x40; + return CHECK_WEEKEVENTREG(WEEKEVENTREG_27_40); case POSTBOX_NORTH_CLOCKTOWN: - return gSaveContext.save.weekEventReg[27] & 0x80; + return CHECK_WEEKEVENTREG(WEEKEVENTREG_27_80); case POSTBOX_EAST_UPPER_CLOCKTOWN: - return gSaveContext.save.weekEventReg[28] & 0x1; + return CHECK_WEEKEVENTREG(WEEKEVENTREG_28_01); case POSTBOX_EAST_LOWER_CLOCKTOWN: - return gSaveContext.save.weekEventReg[28] & 0x2; + return CHECK_WEEKEVENTREG(WEEKEVENTREG_28_02); case POSTBOX_SOUTH_LOWER_CLOCKTOWN: - return gSaveContext.save.weekEventReg[28] & 0x4; + return CHECK_WEEKEVENTREG(WEEKEVENTREG_28_04); default: return false; } } s32 EnPst_ChooseBehaviour(Actor* thisx, PlayState* play) { - s32 itemActionParam = 0; + PlayerItemAction itemAction = PLAYER_IA_NONE; s32 scriptBranch = 0; EnPst* this = THIS; @@ -205,17 +205,16 @@ s32 EnPst_ChooseBehaviour(Actor* thisx, PlayState* play) { case TEXT_STATE_5: if (Message_ShouldAdvance(play)) { case TEXT_STATE_16: - itemActionParam = func_80123810(play); + itemAction = func_80123810(play); scriptBranch = 0; - if ((itemActionParam == PLAYER_AP_LETTER_TO_KAFEI) || - (itemActionParam == PLAYER_AP_LETTER_MAMA)) { - this->exchangeItemId = itemActionParam; + if ((itemAction == PLAYER_IA_LETTER_TO_KAFEI) || (itemAction == PLAYER_IA_LETTER_MAMA)) { + this->exchangeItemId = itemAction; this->behaviour++; scriptBranch = 1; - } else if (itemActionParam < PLAYER_AP_NONE) { + } else if (itemAction <= PLAYER_IA_MINUS1) { this->behaviour++; scriptBranch = 3; - } else if (itemActionParam != PLAYER_AP_NONE) { + } else if (itemAction != PLAYER_IA_NONE) { this->behaviour++; scriptBranch = 2; } @@ -224,7 +223,7 @@ s32 EnPst_ChooseBehaviour(Actor* thisx, PlayState* play) { } break; case POSTBOX_BEHAVIOUR_TAKE_ITEM: - if (this->exchangeItemId == PLAYER_AP_LETTER_TO_KAFEI) { + if (this->exchangeItemId == PLAYER_IA_LETTER_TO_KAFEI) { scriptBranch = 1; } break; @@ -253,7 +252,7 @@ s32* EnPst_GetMsgEventScript(EnPst* this, PlayState* play) { return NULL; } } else if (this->stateFlags & 0x20) { - if (this->exchangeItemId == PLAYER_AP_LETTER_MAMA) { + if (this->exchangeItemId == PLAYER_IA_LETTER_MAMA) { return D_80B2C488; } else { return D_80B2C490; @@ -284,10 +283,10 @@ s32 EnPst_CheckTalk(EnPst* this, PlayState* play) { if (this->stateFlags & 7) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->stateFlags &= ~0x30; - if (player->exchangeItemId == PLAYER_AP_LETTER_TO_KAFEI) { + if (player->exchangeItemId == PLAYER_IA_LETTER_TO_KAFEI) { this->stateFlags |= 0x10; this->exchangeItemId = player->exchangeItemId; - } else if (player->exchangeItemId != PLAYER_AP_NONE) { + } else if (player->exchangeItemId != PLAYER_IA_NONE) { this->stateFlags |= 0x20; this->exchangeItemId = player->exchangeItemId; } @@ -358,19 +357,19 @@ void EnPst_Talk(EnPst* this, PlayState* play) { if (EnPst_HandleLetterDay1(this) != this->isLetterToKafeiDeposited) { switch (gSaveContext.save.day) { case 1: - gSaveContext.save.weekEventReg[91] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_91_04); break; case 2: if (EnPst_HandleLetterDay2(this)) { - gSaveContext.save.weekEventReg[91] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_91_08); } else { - gSaveContext.save.weekEventReg[91] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_91_04); } break; default: - gSaveContext.save.weekEventReg[91] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_91_08); break; } } diff --git a/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c b/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c index 261c94adc..0caa2f8ca 100644 --- a/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c +++ b/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c @@ -15,6 +15,8 @@ #define THIS ((EnRacedog*)thisx) +//! TODO: this file require macros for its uses of weekEventReg + void EnRacedog_Init(Actor* thisx, PlayState* play); void EnRacedog_Destroy(Actor* thisx, PlayState* play); void EnRacedog_Update(Actor* thisx, PlayState* play); @@ -286,7 +288,7 @@ s16 EnRacedog_GetYRotation(Path* path, s32 pointIndex, Vec3f* pos, f32* distSQ) } *distSQ = SQ(diffX) + SQ(diffZ); - return RADF_TO_BINANG(Math_Acot2F(diffZRand, diffXRand)); + return RADF_TO_BINANG(Math_Atan2F_XY(diffZRand, diffXRand)); } void EnRacedog_GetFloorRot(EnRacedog* this, Vec3f* floorRot) { @@ -297,7 +299,7 @@ void EnRacedog_GetFloorRot(EnRacedog* this, Vec3f* floorRot) { ny = COLPOLY_GET_NORMAL(this->actor.floorPoly->normal.y); nz = COLPOLY_GET_NORMAL(this->actor.floorPoly->normal.z); - floorRot->x = -Math_Acot2F(1.0f, -nz * ny); + floorRot->x = -Math_Atan2F_XY(1.0f, -nz * ny); } } diff --git a/src/overlays/actors/ovl_En_Raf/z_en_raf.c b/src/overlays/actors/ovl_En_Raf/z_en_raf.c index c44268509..8421b20ac 100644 --- a/src/overlays/actors/ovl_En_Raf/z_en_raf.c +++ b/src/overlays/actors/ovl_En_Raf/z_en_raf.c @@ -235,8 +235,8 @@ void EnRaf_Init(Actor* thisx, PlayState* play) { } if (((this->switchFlag >= 0) || (this->mainType == EN_RAF_TYPE_DORMANT) || - (gSaveContext.save.weekEventReg[12] & 1)) && - ((Flags_GetSwitch(play, this->switchFlag)) || (this->mainType == EN_RAF_TYPE_DORMANT))) { + CHECK_WEEKEVENTREG(WEEKEVENTREG_12_01)) && + (Flags_GetSwitch(play, this->switchFlag) || (this->mainType == EN_RAF_TYPE_DORMANT))) { s32 i; for (i = CARNIVOROUS_LILY_PAD_LIMB_TRAP_1_LOWER_SEGMENT; i <= CARNIVOROUS_LILY_PAD_LIMB_TRAP_3_UPPER_SEGMENT; @@ -430,7 +430,7 @@ void EnRaf_Chew(EnRaf* this, PlayState* play) { switch (this->grabTarget) { case EN_RAF_GRAB_TARGET_PLAYER: play->damagePlayer(play, -2); - func_800B8E58((Player*)this, player->ageProperties->unk_92 + NA_SE_VO_LI_DAMAGE_S); + func_800B8E58((Player*)this, player->ageProperties->voiceSfxIdOffset + NA_SE_VO_LI_DAMAGE_S); CollisionCheck_GreenBlood(play, NULL, &player->actor.world.pos); if ((this->chewCount > (BREG(53) + 5)) || !(player->stateFlags2 & PLAYER_STATE2_80)) { player->actor.freezeTimer = 10; @@ -700,7 +700,7 @@ void EnRaf_Update(Actor* thisx, PlayState* play) { DECR(this->timer); this->actionFunc(this, play); - if ((this->action == EN_RAF_ACTION_IDLE) && (gSaveContext.save.weekEventReg[12] & 1)) { + if ((this->action == EN_RAF_ACTION_IDLE) && CHECK_WEEKEVENTREG(WEEKEVENTREG_12_01)) { this->petalScaleType = EN_RAF_PETAL_SCALE_TYPE_DEAD; EnRaf_SetupConvulse(this); return; diff --git a/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c b/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c index 7772127a0..50a203c81 100644 --- a/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c +++ b/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c @@ -272,7 +272,7 @@ void EnRailgibud_Init(Actor* thisx, PlayState* play) { Collider_InitCylinder(play, &this->collider); Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit); - if (gSaveContext.save.weekEventReg[14] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_04)) { Actor_Kill(&this->actor); } @@ -450,7 +450,7 @@ void EnRailgibud_Grab(EnRailgibud* this, PlayState* play) { if (this->grabDamageTimer == 20) { s16 requiredScopeTemp; - damageSfxId = player->ageProperties->unk_92 + NA_SE_VO_LI_DAMAGE_S; + damageSfxId = player->ageProperties->voiceSfxIdOffset + NA_SE_VO_LI_DAMAGE_S; play->damagePlayer(play, -8); func_800B8E58(player, damageSfxId); Rumble_Request(this->actor.xzDistToPlayer, 240, 1, 12); diff --git a/src/overlays/actors/ovl_En_Rd/z_en_rd.c b/src/overlays/actors/ovl_En_Rd/z_en_rd.c index a086375e7..3e46c9f04 100644 --- a/src/overlays/actors/ovl_En_Rd/z_en_rd.c +++ b/src/overlays/actors/ovl_En_Rd/z_en_rd.c @@ -881,7 +881,7 @@ void EnRd_Grab(EnRd* this, PlayState* play) { play->damagePlayer(play, -8); Rumble_Request(this->actor.xzDistToPlayer, 240, 1, 12); this->grabDamageTimer = 20; - func_800B8E58(player, player->ageProperties->unk_92 + NA_SE_VO_LI_DAMAGE_S); + func_800B8E58(player, player->ageProperties->voiceSfxIdOffset + NA_SE_VO_LI_DAMAGE_S); } break; diff --git a/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c b/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c index 692bdeef2..051cc8b33 100644 --- a/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c +++ b/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c @@ -149,8 +149,8 @@ void EnRecepgirl_Talk(EnRecepgirl* this, PlayState* play) { Flags_SetSwitch(play, this->actor.params); Animation_MorphToPlayOnce(&this->skelAnime, &object_bg_Anim_00AD98, 10.0f); - if (gSaveContext.save.weekEventReg[63] & 0x80) { // showed Couple's Mask to meeting - this->actor.textId = 0x2ADF; // Mayor's office is on the left (meeting ended) + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80)) { + this->actor.textId = 0x2ADF; // Mayor's office is on the left (meeting ended) } else { this->actor.textId = 0x2ADA; // Mayor's office is on the left (meeting ongoing) } diff --git a/src/overlays/actors/ovl_En_Rg/z_en_rg.c b/src/overlays/actors/ovl_En_Rg/z_en_rg.c index 2a357739a..7f6d39886 100644 --- a/src/overlays/actors/ovl_En_Rg/z_en_rg.c +++ b/src/overlays/actors/ovl_En_Rg/z_en_rg.c @@ -659,7 +659,7 @@ void func_80BF4EBC(EnRg* this, PlayState* play) { this->actor.shape.yOffset = 14.0f; this->actionFunc = func_80BF4FC4; } - } else if (gSaveContext.save.weekEventReg[12] & 2) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_12_02)) { if (DECR(this->unk_318) == 0) { func_80BF409C(this, 1); this->unk_310 &= ~8; @@ -698,7 +698,7 @@ void func_80BF4FC4(EnRg* this, PlayState* play) { this->unk_310 &= ~0x800; } - if (gSaveContext.eventInf[1] & 1) { + if (CHECK_EVENTINF(EVENTINF_10)) { if (DECR(this->unk_318) == 0) { func_80BF47AC(this, play); @@ -751,7 +751,7 @@ void EnRg_Init(Actor* thisx, PlayState* play) { this->actor.gravity = -1.0f; SubS_UpdateFlags(&this->unk_310, 3, 7); - if (!(gSaveContext.save.weekEventReg[12] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_12_02)) { this->unk_318 = Rand_S16Offset(30, 30); } diff --git a/src/overlays/actors/ovl_En_Rr/z_en_rr.c b/src/overlays/actors/ovl_En_Rr/z_en_rr.c index 15dd1d1c4..6c7ac273c 100644 --- a/src/overlays/actors/ovl_En_Rr/z_en_rr.c +++ b/src/overlays/actors/ovl_En_Rr/z_en_rr.c @@ -874,20 +874,18 @@ void EnRr_Update(Actor* thisx, PlayState* play) { void EnRr_Draw(Actor* thisx, PlayState* play2) { PlayState* play = play2; EnRr* this = THIS; - Mtx* matrix; + Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, 4 * sizeof(Mtx)); Vec3f* vecPtr; s32 i; EnRrStruct* ptr; Vec3f spA4; f32 temp_f20; - matrix = GRAPH_ALLOC(play->state.gfxCtx, sizeof(Mtx) * 4); - OPEN_DISPS(play->state.gfxCtx); func_8012C28C(play->state.gfxCtx); - gSPSegment(POLY_OPA_DISP++, 0x0C, matrix); + gSPSegment(POLY_OPA_DISP++, 0x0C, mtx); gSPSegment(POLY_OPA_DISP++, 0x08, Gfx_TwoTexScroll(play->state.gfxCtx, 0, (this->unk_1E8 * 0) & 0x7F, (this->unk_1E8 * 0) & 0x3F, 0x20, 0x10, 1, (this->unk_1E8 * 0) & 0x3F, (this->unk_1E8 * -6) & 0x7F, 0x20, 0x10)); @@ -914,7 +912,7 @@ void EnRr_Draw(Actor* thisx, PlayState* play2) { Matrix_RotateZYX(ptr->unk_1A.x, ptr->unk_1A.y, ptr->unk_1A.z, MTXMODE_APPLY); Matrix_Push(); Matrix_Scale(temp_f20, 1.0f, temp_f20, MTXMODE_APPLY); - Matrix_ToMtx(matrix); + Matrix_ToMtx(mtx); if ((i & 1) != 0) { Matrix_RotateYS(0x2000, MTXMODE_APPLY); @@ -925,7 +923,7 @@ void EnRr_Draw(Actor* thisx, PlayState* play2) { Matrix_MultVecX(1842.1053f, vecPtr++); Matrix_MultVecX(-1842.1053f, vecPtr++); Matrix_Pop(); - matrix++; + mtx++; if (i == 3) { Matrix_MultZero(&spA4); } diff --git a/src/overlays/actors/ovl_En_Rz/z_en_rz.c b/src/overlays/actors/ovl_En_Rz/z_en_rz.c index a53ad3bda..108d88023 100644 --- a/src/overlays/actors/ovl_En_Rz/z_en_rz.c +++ b/src/overlays/actors/ovl_En_Rz/z_en_rz.c @@ -118,7 +118,7 @@ void EnRz_Init(Actor* thisx, PlayState* play) { switch (EN_RZ_GET_TYPE(thisx)) { case EN_RZ_TYPE_1: - if (!(gSaveContext.save.weekEventReg[77] & 4)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_77_04)) { Actor_Kill(&this->actor); return; } @@ -129,7 +129,7 @@ void EnRz_Init(Actor* thisx, PlayState* play) { case EN_RZ_TYPE_2: this->actor.flags |= ACTOR_FLAG_10; - if (gSaveContext.save.weekEventReg[77] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_77_04)) { EnRz_ChangeAnim(play, this, EN_RZ_ANIM_LINK_DANCE, ANIMMODE_LOOP, 0.0f); } else { EnRz_ChangeAnim(play, this, EN_RZ_ANIM_DANCE, ANIMMODE_LOOP, 0.0f); @@ -141,7 +141,7 @@ void EnRz_Init(Actor* thisx, PlayState* play) { default: // EN_RZ_TYPE_0 this->stateFlags |= EN_RZ_STATE_2; - if (gSaveContext.save.weekEventReg[77] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_77_04)) { Actor_Kill(&this->actor); return; } @@ -344,7 +344,7 @@ EnRz* EnRz_FindSister(EnRz* this, PlayState* play) { } void func_80BFBDFC(PlayState* play) { - if (gSaveContext.save.weekEventReg[75] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_75_80)) { func_80151BB4(play, 0x27); } func_80151BB4(play, 0xC); @@ -424,7 +424,7 @@ void func_80BFC078(EnRz* this, PlayState* play) { case 0x2927: case 0x2928: func_80151938(play, play->msgCtx.currentTextId + 1); - gSaveContext.save.weekEventReg[77] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_77_04); break; default: @@ -489,12 +489,12 @@ void func_80BFC2F4(EnRz* this, PlayState* play) { void func_80BFC36C(EnRz* this, PlayState* play) { EnRz_UpdateSkelAnime(this, play); if (func_80BFBFAC(this, play)) { - gSaveContext.save.weekEventReg[77] |= 4; - if (gSaveContext.save.weekEventReg[75] & 0x80) { + SET_WEEKEVENTREG(WEEKEVENTREG_77_04); + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_75_80)) { this->actionFunc = func_80BFC214; } else { this->actionFunc = func_80BFC2F4; - gSaveContext.save.weekEventReg[75] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_75_80); } this->actor.cutscene = this->cutscenes[1]; } @@ -519,7 +519,7 @@ void func_80BFC3F8(EnRz* this, PlayState* play) { this->actor.cutscene = this->cutscenes[0]; this->actor.flags &= ~ACTOR_FLAG_10000; } else if (Player_GetMask(play) == PLAYER_MASK_KAMARO) { - if (gSaveContext.save.weekEventReg[77] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_77_04)) { Message_StartTextbox(play, 0x2925, &this->actor); func_80BFBDFC(play); } else { @@ -532,9 +532,9 @@ void func_80BFC3F8(EnRz* this, PlayState* play) { } } else if (EnRz_CanTalk(this, play)) { - if (func_80BFBCEC(this, play) && !(gSaveContext.save.weekEventReg[77] & 4) && this->sister != NULL) { + if (func_80BFBCEC(this, play) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_77_04) && this->sister != NULL) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { this->actor.flags &= ~ACTOR_FLAG_10000; func_800B8614(&this->actor, play, 120.0f); diff --git a/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c b/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c index e78f1970f..cc3cd2455 100644 --- a/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c +++ b/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c @@ -235,16 +235,16 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { switch (EN_S_GORO_GET_MAIN_TYPE(&this->actor)) { case EN_S_GORO_TYPE_SHRINE_WINTER_A: - if (!(gSaveContext.save.weekEventReg[22] & 4)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) { if (player->transformation == PLAYER_FORM_GORON) { - if (!(gSaveContext.save.weekEventReg[36] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_36_02)) { switch (this->textId) { case 0xCFB: return 0xCFC; case 0xCFC: return 0xCFD; case 0xCFD: - gSaveContext.save.weekEventReg[36] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_36_02); this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xCFE; default: @@ -255,8 +255,8 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { return 0xCFE; } } else { - if (!(gSaveContext.save.weekEventReg[36] & 1)) { - gSaveContext.save.weekEventReg[36] |= 1; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_36_01)) { + SET_WEEKEVENTREG(WEEKEVENTREG_36_01); return 0xCF9; } this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; @@ -266,9 +266,9 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { // Scene flag - Checks whether the chandelier has been lit if (!Flags_GetSwitch(play, EN_S_GORO_SCENEFLAG_INDEX(&this->actor))) { if (player->transformation == PLAYER_FORM_GORON) { - if (!(gSaveContext.save.weekEventReg[36] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_36_08)) { if (this->textId == 0xD02) { - gSaveContext.save.weekEventReg[36] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_36_08); this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xD03; } @@ -277,10 +277,10 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xD04; } - if (!(gSaveContext.save.weekEventReg[36] & 4)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_36_04)) { if (this->textId == 0xCFF) { this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; - gSaveContext.save.weekEventReg[36] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_36_04); return 0xD00; } return 0xCFF; @@ -288,9 +288,9 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xD01; } - if (!(gSaveContext.save.weekEventReg[36] & 0x10)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_36_10)) { if (this->textId == 0xD05) { - gSaveContext.save.weekEventReg[36] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_36_10); this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xD06; } @@ -302,14 +302,14 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { break; case EN_S_GORO_TYPE_SHRINE_WINTER_B: - if (!(gSaveContext.save.weekEventReg[22] & 4)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) { if (player->transformation == PLAYER_FORM_GORON) { - if (!(gSaveContext.save.weekEventReg[36] & 0x40)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_36_40)) { switch (this->textId) { case 0xD15: return 0xD16; case 0xD16: - gSaveContext.save.weekEventReg[36] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_36_40); this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xD17; default: @@ -320,20 +320,20 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { return 0xD17; } } else { - if (!(gSaveContext.save.weekEventReg[36] & 0x20)) { - gSaveContext.save.weekEventReg[36] |= 0x20; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_36_20)) { + SET_WEEKEVENTREG(WEEKEVENTREG_36_20); return 0xD13; } this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xD14; } } else if (player->transformation == PLAYER_FORM_GORON) { - if (!(gSaveContext.save.weekEventReg[37] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_37_01)) { switch (this->textId) { case 0xD1E: return 0xD1F; case 0xD1F: - gSaveContext.save.weekEventReg[37] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_37_01); this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xD20; default: @@ -344,7 +344,7 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { return 0xD21; } } else { - if (!(gSaveContext.save.weekEventReg[36] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_36_80)) { switch (this->textId) { case 0xD18: return 0xD19; @@ -353,7 +353,7 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { case 0xD1A: return 0xD1B; case 0xD1B: - gSaveContext.save.weekEventReg[36] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_36_80); this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xD1C; default: @@ -367,16 +367,16 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { break; case EN_S_GORO_TYPE_SHRINE_WINTER_C: - if (!(gSaveContext.save.weekEventReg[22] & 4)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) { if (player->transformation == PLAYER_FORM_GORON) { - if (!(gSaveContext.save.weekEventReg[37] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_37_02)) { switch (this->textId) { case 0xD09: return 0xD0A; case 0xD0A: return 0xD0B; case 0xD0B: - gSaveContext.save.weekEventReg[37] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_37_02); this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xD0C; default: @@ -391,12 +391,12 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { return 0xD08; } } else if (player->transformation == PLAYER_FORM_GORON) { - if (!(gSaveContext.save.weekEventReg[37] & 4)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_37_04)) { switch (this->textId) { case 0xD0E: return 0xD0F; case 0xD0F: - gSaveContext.save.weekEventReg[37] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_37_04); this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xD10; default: @@ -414,7 +414,7 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { case EN_S_GORO_TYPE_SHRINE_SPRING_A: if (player->transformation == PLAYER_FORM_GORON) { - if (gSaveContext.save.weekEventReg[77] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_77_80)) { if (this->textId == 0xDE3) { this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xDE4; @@ -429,7 +429,7 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { case EN_S_GORO_TYPE_SHRINE_SPRING_B: if (player->transformation == PLAYER_FORM_GORON) { - if (gSaveContext.save.weekEventReg[77] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_77_80)) { if (this->textId == 0xDE7) { this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xDE8; @@ -444,7 +444,7 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { case EN_S_GORO_TYPE_SHRINE_SPRING_C: if (player->transformation == PLAYER_FORM_GORON) { - if (gSaveContext.save.weekEventReg[77] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_77_80)) { if (this->textId == 0xDEB) { this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xDEC; @@ -459,7 +459,7 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { case EN_S_GORO_TYPE_SHRINE_SPRING_D: if (player->transformation == PLAYER_FORM_GORON) { - if (gSaveContext.save.weekEventReg[77] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_77_80)) { if (this->textId == 0xDF1) { this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xDF2; @@ -482,7 +482,7 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { case EN_S_GORO_TYPE_SHRINE_SPRING_E: if (player->transformation == PLAYER_FORM_GORON) { - if (gSaveContext.save.weekEventReg[77] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_77_80)) { if (this->textId == 0xDF6) { this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; return 0xDF7; @@ -500,7 +500,7 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) { case EN_S_GORO_TYPE_SHRINE_SPRING_F: if (player->transformation == PLAYER_FORM_GORON) { - if (gSaveContext.save.weekEventReg[77] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_77_80)) { switch (this->textId) { case 0xDFB: return 0xDFC; @@ -771,7 +771,7 @@ void EnSGoro_UpdateSleeping(EnSGoro* this, PlayState* play) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_GOLON_SNORE1); } } - } else if (gSaveContext.save.weekEventReg[22] & 4) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) { this->actionFlags &= ~EN_S_GORO_ACTIONFLAG_SUPPRESS_SNORE; } @@ -842,7 +842,7 @@ s32 EnSGoro_CheckGKBehavior(EnSGoro* this, PlayState* play) { return false; } if ((!(this->actionFlags & EN_S_GORO_ACTIONFLAG_GKQUIET_ACKNOWLEDGED)) && - ((((EnGk*)this->otherGoron)->unk_1E4 & 0x80) || (gSaveContext.save.weekEventReg[22] & 4))) { + ((((EnGk*)this->otherGoron)->unk_1E4 & 0x80) || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04))) { this->actionFlags |= EN_S_GORO_ACTIONFLAG_GKQUIET_ACKNOWLEDGED; this->animInfoIndex = EN_S_GORO_ANIM_ROLLUP; @@ -963,7 +963,7 @@ s32 EnSGoro_UpdateRotationToPlayer(EnSGoro* this, PlayState* play) { this->bodyRotY = CLAMP(this->bodyRotY, -0x1C70, 0x1C70); playerPos = player->actor.world.pos; - playerPos.y = player->bodyPartsPos[7].y + 3.0f; + playerPos.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; thisPos = this->actor.world.pos; thisPos.y += 70.0f; @@ -1026,7 +1026,7 @@ void EnSGoro_SetupAction(EnSGoro* this, PlayState* play) { if (Object_IsLoaded(&play->objectCtx, this->loadedObjIndex)) { this->actionFlags = 0; if (EN_S_GORO_OFTYPE_WSHRINE) { - if (gSaveContext.save.weekEventReg[22] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) { this->actionFlags |= EN_S_GORO_ACTIONFLAG_GKQUIET_ACKNOWLEDGED; this->actionFlags |= EN_S_GORO_ACTIONFLAG_EYESOPEN; this->animInfoIndex = EN_S_GORO_ANIM_SHIVER_A; diff --git a/src/overlays/actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.c b/src/overlays/actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.c index 15e808971..fa017af87 100644 --- a/src/overlays/actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.c +++ b/src/overlays/actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.c @@ -73,38 +73,38 @@ void EnScRuppe_UpdateCollision(EnScRuppe* this, PlayState* play) { s32 func_80BD697C(s16 ruppeIndex) { switch (ruppeIndex) { case RUPEE_GREEN: - if (gSaveContext.save.weekEventReg[53] & 4) { - gSaveContext.save.weekEventReg[53] &= (u8)~4; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_53_04)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_53_04); return true; } break; case RUPEE_BLUE: - if (gSaveContext.save.weekEventReg[53] & 0x80) { - gSaveContext.save.weekEventReg[53] &= (u8)~0x80; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_53_80)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_53_80); return true; } break; case RUPEE_RED: - if (gSaveContext.save.weekEventReg[54] & 1) { - gSaveContext.save.weekEventReg[54] &= (u8)~1; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_54_01)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_54_01); return true; } break; case RUPEE_ORANGE: - if (gSaveContext.save.weekEventReg[54] & 2) { - gSaveContext.save.weekEventReg[54] &= (u8)~2; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_54_02)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_54_02); return true; } break; case RUPEE_PURPLE: - if (gSaveContext.save.weekEventReg[54] & 4) { - gSaveContext.save.weekEventReg[54] &= (u8)~4; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_54_04)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_54_04); return true; } break; case RUPEE_UNUSED: - if ((gSaveContext.save.weekEventReg[54] & 8)) { - gSaveContext.save.weekEventReg[54] &= (u8)~8; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_54_08)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_54_08); return true; } break; diff --git a/src/overlays/actors/ovl_En_Scopecrow/z_en_scopecrow.c b/src/overlays/actors/ovl_En_Scopecrow/z_en_scopecrow.c index bcf7be085..b37190ee1 100644 --- a/src/overlays/actors/ovl_En_Scopecrow/z_en_scopecrow.c +++ b/src/overlays/actors/ovl_En_Scopecrow/z_en_scopecrow.c @@ -69,40 +69,46 @@ void func_80BCD000(EnScopecrow* this, PlayState* play) { s32 func_80BCD09C(s16 arg0) { switch (arg0) { case 0: - if (gSaveContext.save.weekEventReg[53] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_53_04)) { return true; + } else { + return false; } - return false; case 1: - if (gSaveContext.save.weekEventReg[53] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_53_80)) { return true; + } else { + return false; } - return false; case 2: - if (gSaveContext.save.weekEventReg[54] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_54_01)) { return true; + } else { + return false; } - return false; case 3: - if (gSaveContext.save.weekEventReg[54] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_54_02)) { return true; + } else { + return false; } - return false; case 4: - if (gSaveContext.save.weekEventReg[54] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_54_04)) { return true; + } else { + return false; } - return false; case 5: - if (gSaveContext.save.weekEventReg[54] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_54_08)) { return true; + } else { + return false; } - return false; } return false; @@ -111,43 +117,43 @@ s32 func_80BCD09C(s16 arg0) { s32 func_80BCD1AC(s16 arg0) { switch (arg0) { case 0: - if (!(gSaveContext.save.weekEventReg[53] & 4)) { - gSaveContext.save.weekEventReg[53] |= 4; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_53_04)) { + SET_WEEKEVENTREG(WEEKEVENTREG_53_04); return true; } break; case 1: - if (!(gSaveContext.save.weekEventReg[53] & 0x80)) { - gSaveContext.save.weekEventReg[53] |= 0x80; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_53_80)) { + SET_WEEKEVENTREG(WEEKEVENTREG_53_80); return true; } break; case 2: - if (!(gSaveContext.save.weekEventReg[54] & 1)) { - gSaveContext.save.weekEventReg[54] |= 1; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_54_01)) { + SET_WEEKEVENTREG(WEEKEVENTREG_54_01); return true; } break; case 3: - if (!(gSaveContext.save.weekEventReg[54] & 2)) { - gSaveContext.save.weekEventReg[54] |= 2; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_54_02)) { + SET_WEEKEVENTREG(WEEKEVENTREG_54_02); return true; } break; case 4: - if (!(gSaveContext.save.weekEventReg[54] & 4)) { - gSaveContext.save.weekEventReg[54] |= 4; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_54_04)) { + SET_WEEKEVENTREG(WEEKEVENTREG_54_04); return true; } break; case 5: - if (!(gSaveContext.save.weekEventReg[54] & 8)) { - gSaveContext.save.weekEventReg[54] |= 8; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_54_08)) { + SET_WEEKEVENTREG(WEEKEVENTREG_54_08); return true; } break; diff --git a/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c b/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c index a4a344ce7..4f8207046 100644 --- a/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c +++ b/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c @@ -170,7 +170,7 @@ void func_80BCAE78(EnScopenuts* this, PlayState* play) { s16 func_80BCAF0C(EnScopenuts* this) { switch (this->unk_33C) { case 0x0: - if (gSaveContext.save.weekEventReg[53] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_53_02)) { this->unk_328 |= 1; return 0x1638; } @@ -239,7 +239,7 @@ void func_80BCB1C8(EnScopenuts* this, PlayState* play) { this->unk_350 *= 0.92f; Actor_SetScale(&this->actor, this->unk_350); if (this->actor.bgCheckFlags & 1) { - gSaveContext.save.weekEventReg[52] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_52_40); Actor_Kill(&this->actor); } } @@ -368,7 +368,7 @@ void func_80BCB6D0(EnScopenuts* this, PlayState* play) { void func_80BCB90C(EnScopenuts* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actor.parent = NULL; - gSaveContext.save.weekEventReg[53] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_53_02); this->actionFunc = func_80BCB6D0; } else { Actor_PickUp(&this->actor, play, GI_HEART_PIECE, 300.0f, 300.0f); @@ -594,7 +594,7 @@ void func_80BCBFFC(EnScopenuts* this, PlayState* play) { if (sp32 == 3) { if (this->unk_334 >= (this->path->count - 1)) { ActorCutscene_Stop(this->unk_338); - gSaveContext.save.weekEventReg[52] &= (u8)~0x40; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_52_40); this->actionFunc = func_80BCC288; } else { this->unk_334++; @@ -684,8 +684,7 @@ void EnScopenuts_Init(Actor* thisx, PlayState* play) { s32 pad; EnScopenuts* this = THIS; - if (!(gSaveContext.save.weekEventReg[74] & 0x40) && - (gSaveContext.save.inventory.items[ITEM_OCARINA] == ITEM_NONE)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_74_40) && (gSaveContext.save.inventory.items[ITEM_OCARINA] == ITEM_NONE)) { Actor_Kill(&this->actor); return; } @@ -705,7 +704,7 @@ void EnScopenuts_Init(Actor* thisx, PlayState* play) { this->actor.speedXZ = 0.0f; if (ENSCOPENUTS_GET_3E0(&this->actor) == ENSCOPENUTS_3E0_0) { - if (gSaveContext.save.weekEventReg[52] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_40)) { Actor_Kill(&this->actor); } else if (play->actorCtx.flags & ACTORCTX_FLAG_1) { this->path = SubS_GetPathByIndex(play, ENSCOPENUTS_GET_FC00(&this->actor), 0x3F); @@ -716,7 +715,7 @@ void EnScopenuts_Init(Actor* thisx, PlayState* play) { Actor_Kill(&this->actor); } } else if (ENSCOPENUTS_GET_3E0(&this->actor) == ENSCOPENUTS_3E0_1) { - if (gSaveContext.save.weekEventReg[52] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_40)) { this->path = SubS_GetPathByIndex(play, ENSCOPENUTS_GET_FC00(&this->actor), 0x3F); if (this->path == NULL) { Actor_Kill(&this->actor); diff --git a/src/overlays/actors/ovl_En_Sda/z_en_sda.c b/src/overlays/actors/ovl_En_Sda/z_en_sda.c index bd453c84c..8835d92da 100644 --- a/src/overlays/actors/ovl_En_Sda/z_en_sda.c +++ b/src/overlays/actors/ovl_En_Sda/z_en_sda.c @@ -50,8 +50,8 @@ u8 D_80947AEC[] = { 2, 2, 2, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, }; -s8 D_80947AFC[] = { - 2, 9, 10, 11, 12, 13, 14, 0, 15, -1, 3, 4, 5, 6, 7, 8, -1, 1, 0, 0, +s8 D_80947AFC[PLAYER_BODYPART_MAX] = { + 2, 9, 10, 11, 12, 13, 14, 0, 15, -1, 3, 4, 5, 6, 7, 8, -1, 1, }; Vec3f D_80947B10[] = { @@ -93,7 +93,7 @@ void EnSda_Update(Actor* thisx, PlayState* play) { void EnSda_Draw(Actor* thisx, PlayState* play) { EnSda* this = THIS; Player* player; - u8* shadowTexture = GRAPH_ALLOC(play->state.gfxCtx, 64 * 64); + u8* shadowTex = GRAPH_ALLOC(play->state.gfxCtx, 64 * 64); if (this->actor.params == ENSDA_1) { player = (Player*)this->actor.parent; @@ -102,10 +102,10 @@ void EnSda_Draw(Actor* thisx, PlayState* play) { } player->actor.shape.shadowAlpha = 0; - func_8094702C(this, shadowTexture, player, play); + func_8094702C(this, shadowTex, player, play); if (KREG(0) < 5) { - func_80947668(shadowTexture, player, play); + func_80947668(shadowTex, player, play); } } @@ -242,7 +242,7 @@ void func_8094702C(EnSda* this, u8* shadowTexture, Player* player, PlayState* pl Matrix_RotateXFNew((BREG(50) + 70) / 100.0f); - for (i = 0; i < 18; i++) { + for (i = 0; i < PLAYER_BODYPART_MAX; i++) { if (D_80947AFC[i] >= 0) { D_80947EA0[D_80947AFC[i]] = player->bodyPartsPos[i]; } diff --git a/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c b/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c index 5ad105a76..88fab3298 100644 --- a/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c +++ b/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c @@ -54,14 +54,15 @@ void EnSekihi_Init(Actor* thisx, PlayState* play) { s32 objectIndex; s32 pad; - if (((params < SEKIHI_TYPE_0) || (params >= SEKIHI_TYPE_MAX)) || sOpaDLists[params] == NULL) { + if ((params < SEKIHI_TYPE_0 || params >= SEKIHI_TYPE_MAX) || sOpaDLists[params] == NULL) { Actor_Kill(&this->dyna.actor); return; } - if ((params == SEKIHI_TYPE_4) && ((gSaveContext.save.skullTokenCount & 0xFFFF) >= 30)) { - gSaveContext.save.weekEventReg[13] |= 0x20; + if ((params == SEKIHI_TYPE_4) && (((gSaveContext.save.skullTokenCount & 0xFFFF)) >= 30)) { + SET_WEEKEVENTREG(WEEKEVENTREG_13_20); } + objectIndex = Object_GetIndex(&play->objectCtx, sObjectIds[params]); if (objectIndex >= 0) { this->objectIndex = objectIndex; diff --git a/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c b/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c index de8036ef8..b16153a53 100644 --- a/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c +++ b/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c @@ -341,28 +341,28 @@ void func_80ADB544(EnSellnuts* this, PlayState* play) { Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 3, 0x7D0, 0); this->actor.world.rot.y = this->actor.shape.rot.y; if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - if (Player_GetExchangeItemId(play) == PLAYER_AP_MOON_TEAR) { + if (Player_GetExchangeItemId(play) == PLAYER_IA_MOON_TEAR) { player->actor.textId = D_80ADD928[this->unk_33A]; this->unk_340 = player->actor.textId; this->actionFunc = func_80ADBAB8; } else { switch (this->unk_340) { case 0x60E: - gSaveContext.save.weekEventReg[17] |= 0x20; - gSaveContext.save.weekEventReg[86] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_17_20); + SET_WEEKEVENTREG(WEEKEVENTREG_86_04); Message_StartTextbox(play, this->unk_340, &this->actor); this->actionFunc = func_80ADB0D8; break; case 0x628: - gSaveContext.save.weekEventReg[77] |= 0x40; - gSaveContext.save.weekEventReg[86] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_77_40); + SET_WEEKEVENTREG(WEEKEVENTREG_86_04); Message_StartTextbox(play, this->unk_340, &this->actor); this->actionFunc = func_80ADB0D8; break; case 0x614: - gSaveContext.save.weekEventReg[17] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_17_40); Message_StartTextbox(play, this->unk_340, &this->actor); this->actionFunc = func_80ADB0D8; break; @@ -382,24 +382,24 @@ void func_80ADB544(EnSellnuts* this, PlayState* play) { } else if (((this->actor.xzDistToPlayer < 80.0f) && (((this->actor.playerHeightRel < 50.0f) && (this->actor.playerHeightRel > -50.0f)) ? true : false)) || this->actor.isTargeted) { - func_800B85E0(&this->actor, play, 80.0f, PLAYER_AP_MOON_TEAR); + func_800B85E0(&this->actor, play, 80.0f, PLAYER_IA_MOON_TEAR); if (player->transformation == PLAYER_FORM_DEKU) { if (gSaveContext.save.day == 3) { this->unk_33A = 2; - if (gSaveContext.save.weekEventReg[77] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_77_40)) { this->unk_340 = D_80ADD918[this->unk_33A]; } else { this->unk_340 = D_80ADD910[this->unk_33A]; } } else { this->unk_33A = 1; - if (gSaveContext.save.weekEventReg[17] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_17_20)) { this->unk_340 = D_80ADD918[this->unk_33A]; } else { this->unk_340 = D_80ADD910[this->unk_33A]; } } - } else if (gSaveContext.save.weekEventReg[17] & 0x40) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_17_40)) { this->unk_340 = D_80ADD918[this->unk_33A]; } else { this->unk_340 = D_80ADD910[this->unk_33A]; @@ -417,15 +417,16 @@ void func_80ADB544(EnSellnuts* this, PlayState* play) { void func_80ADB924(EnSellnuts* this, PlayState* play) { Player* player = GET_PLAYER(play); u8 talkState = Message_GetState(&play->msgCtx); - s32 item; + PlayerItemAction itemAction; if (talkState == TEXT_STATE_16) { - item = func_80123810(play); - if (item > PLAYER_AP_NONE) { - if (item == PLAYER_AP_MOON_TEAR) { + itemAction = func_80123810(play); + + if (itemAction > PLAYER_IA_NONE) { + if (itemAction == PLAYER_IA_MOON_TEAR) { player->actor.textId = D_80ADD928[this->unk_33A]; this->unk_340 = player->actor.textId; - player->exchangeItemId = item; + player->exchangeItemId = itemAction; this->actionFunc = func_80ADBAB8; } else { player->actor.textId = D_80ADD920[this->unk_33A]; @@ -433,7 +434,7 @@ void func_80ADB924(EnSellnuts* this, PlayState* play) { this->actionFunc = func_80ADB0D8; } func_801477B4(play); - } else if (item < PLAYER_AP_NONE) { + } else if (itemAction <= PLAYER_IA_MINUS1) { this->unk_340 = D_80ADD920[this->unk_33A]; func_80151938(play, this->unk_340); this->actionFunc = func_80ADB0D8; @@ -472,14 +473,14 @@ void func_80ADBAB8(EnSellnuts* this, PlayState* play) { play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; this->actionFunc = func_80ADBBEC; - func_800B7298(play, NULL, 0x13); + func_800B7298(play, NULL, PLAYER_CSMODE_19); } } void func_80ADBBEC(EnSellnuts* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actor.parent = NULL; - gSaveContext.save.weekEventReg[17] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_17_80); this->actionFunc = func_80ADBCE4; } else { Actor_PickUp(&this->actor, play, GI_DEED_LAND, 300.0f, 300.0f); @@ -491,14 +492,14 @@ void func_80ADBC60(EnSellnuts* this, PlayState* play) { Message_StartTextbox(play, this->unk_340, &this->actor); this->actionFunc = func_80ADB0D8; } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); this->unk_340 = D_80ADD930[this->unk_33A]; } } void func_80ADBCE4(EnSellnuts* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); this->unk_340 = D_80ADD930[this->unk_33A]; this->actionFunc = func_80ADBC60; } @@ -835,7 +836,7 @@ void func_80ADCA64(EnSellnuts* this, PlayState* play) { SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, 17); } else if (this->unk_34C == 17) { ActorCutscene_Stop(this->cutscene); - gSaveContext.save.weekEventReg[73] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_73_04); Actor_Kill(&this->actor); } } @@ -871,7 +872,7 @@ void func_80ADCC04(EnSellnuts* this, PlayState* play) { void func_80ADCD3C(EnSellnuts* this, PlayState* play) { Math_ApproachS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 2, 0xE38); - if (gSaveContext.save.weekEventReg[73] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_04)) { this->unk_338 |= 2; this->unk_338 |= 1; this->unk_340 = 0x626; @@ -947,7 +948,7 @@ void EnSellnuts_Init(Actor* thisx, PlayState* play) { Player* player = GET_PLAYER(play); s32 pad2; - if ((gSaveContext.save.weekEventReg[17] & 0x80) || (gSaveContext.save.weekEventReg[61] & 0x10)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_17_80) || CHECK_WEEKEVENTREG(WEEKEVENTREG_61_10)) { Actor_Kill(&this->actor); } @@ -969,7 +970,7 @@ void EnSellnuts_Init(Actor* thisx, PlayState* play) { this->unk_36C = 0.01f; this->actor.speedXZ = 0.0f; this->actor.velocity.y = 0.0f; - if (gSaveContext.save.weekEventReg[73] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_04)) { if (ENSELLNUTS_GET_1(&this->actor)) { Actor_Kill(&this->actor); return; diff --git a/src/overlays/actors/ovl_En_Shn/z_en_shn.c b/src/overlays/actors/ovl_En_Shn/z_en_shn.c index 9c1af02bf..d606e17f4 100644 --- a/src/overlays/actors/ovl_En_Shn/z_en_shn.c +++ b/src/overlays/actors/ovl_En_Shn/z_en_shn.c @@ -181,7 +181,7 @@ void func_80AE6488(EnShn* this, PlayState* play) { this->unk_2D4 += (this->unk_2D0 != 0.0f) ? 40.0f : -40.0f; this->unk_2D4 = CLAMP(this->unk_2D4, 0.0f, 80.0f); Matrix_Translate(this->unk_2D4, 0.0f, 0.0f, MTXMODE_APPLY); - if ((&this->actor == player->targetActor) && + if ((&this->actor == player->talkActor) && ((play->msgCtx.currentTextId < 0xFF) || (play->msgCtx.currentTextId >= 0x201)) && (talkState == TEXT_STATE_3) && (this->prevTalkState == TEXT_STATE_3)) { if (play->state.frames % 2 == 0) { @@ -216,7 +216,7 @@ s32 func_80AE65F4(EnShn* this, PlayState* play) { this->unk_1DA = temp; this->unk_1D8 |= 0x40; } else if (this->unk_1D8 & 0x40) { - if (!(gSaveContext.save.weekEventReg[23] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_23_08)) { func_80AE615C(this, 3); } this->unk_1DA = 0; @@ -258,8 +258,8 @@ s32 func_80AE6704(Actor* thisx, PlayState* play) { break; case 6: - gSaveContext.save.weekEventReg[90] &= (u8)~0x40; - func_800B7298(play, &this->actor, 7); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_40); + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); play->nextEntrance = ENTRANCE(SOUTHERN_SWAMP_POISONED, 6); gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; @@ -293,17 +293,17 @@ s32 func_80AE68F0(EnShn* this, PlayState* play) { if (this->unk_1D8 & 7) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->unk_1D8 &= ~0x180; - if (player->exchangeItemId == PLAYER_AP_PICTO_BOX) { + if (player->exchangeItemId == PLAYER_IA_PICTO_BOX) { this->unk_1D8 |= 0x80; this->unk_2E4 = player->exchangeItemId; - } else if (player->exchangeItemId != PLAYER_AP_NONE) { + } else if (player->exchangeItemId != PLAYER_IA_NONE) { this->unk_1D8 |= 0x100; this->unk_2E4 = player->exchangeItemId; } SubS_UpdateFlags(&this->unk_1D8, 0, 7); this->unk_1DC = func_80AE6880(this, play); this->unk_2C6 = 0; - if (gSaveContext.save.weekEventReg[23] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_23_08)) { this->unk_1D8 |= 8; } this->actionFunc = func_80AE6A64; @@ -315,7 +315,7 @@ s32 func_80AE68F0(EnShn* this, PlayState* play) { void func_80AE69E8(EnShn* this, PlayState* play) { Math_ApproachS(&this->actor.shape.rot.y, this->actor.world.rot.y, 3, 0x2AA8); - if ((gSaveContext.save.weekEventReg[23] & 8) && EnShn_IsFacingPlayer(this)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_23_08) && EnShn_IsFacingPlayer(this)) { this->unk_1D8 |= 8; } else { this->unk_1D8 &= ~0x8; @@ -350,7 +350,7 @@ void EnShn_Init(Actor* thisx, PlayState* play) { SkelAnime_InitFlex(play, &this->skelAnime, &gBurlyGuySkel, NULL, this->jointTable, this->morphTable, BURLY_GUY_LIMB_MAX); this->unk_2E8 = -1; - if (gSaveContext.save.weekEventReg[23] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_23_08)) { func_80AE615C(this, 0); } else { func_80AE615C(this, 2); @@ -382,7 +382,7 @@ void EnShn_Update(Actor* thisx, PlayState* play) { func_80AE6130(this); func_80AE63A8(this, play); this->unk_2E0 = 0; - func_8013C964(&this->actor, play, 120.0f, 40.0f, PLAYER_AP_NONE, this->unk_1D8 & 7); + func_8013C964(&this->actor, play, 120.0f, 40.0f, PLAYER_IA_NONE, this->unk_1D8 & 7); } s32 EnShn_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { diff --git a/src/overlays/actors/ovl_En_Skb/z_en_skb.c b/src/overlays/actors/ovl_En_Skb/z_en_skb.c index 4fd9f5f14..bb1fb7e0b 100644 --- a/src/overlays/actors/ovl_En_Skb/z_en_skb.c +++ b/src/overlays/actors/ovl_En_Skb/z_en_skb.c @@ -807,7 +807,7 @@ void func_809964A0(EnSkb* this, PlayState* play) { void func_809964DC(EnSkb* this, PlayState* play) { if (this->unk_3D6 == 0) { if ((this->actionFunc != func_80994E94) && (this->actionFunc != func_80996284) && - (this->actionFunc != func_809964A0) && (gSaveContext.save.weekEventReg[85] & 0x40)) { + (this->actionFunc != func_809964A0) && CHECK_WEEKEVENTREG(WEEKEVENTREG_85_40)) { this->actor.colChkInfo.health = 0; func_809961E4(this, play); } diff --git a/src/overlays/actors/ovl_En_Snowman/z_en_snowman.c b/src/overlays/actors/ovl_En_Snowman/z_en_snowman.c index 8bd665bc0..994115f89 100644 --- a/src/overlays/actors/ovl_En_Snowman/z_en_snowman.c +++ b/src/overlays/actors/ovl_En_Snowman/z_en_snowman.c @@ -1040,8 +1040,8 @@ void EnSnowman_Update(Actor* thisx, PlayState* play) { if ((this->actor.floorPoly != NULL) && ((this->actor.floorPoly->normal.y * SHT_MINV) < 0.7f)) { Math_Vec3f_Copy(&this->actor.world.pos, &this->actor.prevPos); if (!this->turningOnSteepSlope) { - this->snowPileTargetRotY = Math_FAtan2F(this->actor.floorPoly->normal.z * SHT_MINV, - this->actor.floorPoly->normal.x * SHT_MINV); + this->snowPileTargetRotY = Math_Atan2S_XY(this->actor.floorPoly->normal.z * SHT_MINV, + this->actor.floorPoly->normal.x * SHT_MINV); this->turningOnSteepSlope = true; } } else { diff --git a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c index e2868f142..4778f6deb 100644 --- a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c +++ b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c @@ -190,7 +190,7 @@ u16 EnSob1_GetTalkOption(EnSob1* this, PlayState* play) { if (this->shopType == BOMB_SHOP) { if (gSaveContext.save.day == 1 && gSaveContext.save.time >= CLOCK_TIME(6, 00)) { return 0x648; - } else if (gSaveContext.save.weekEventReg[33] & 8) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08)) { return 0x649; } else { return 0x64A; @@ -229,10 +229,12 @@ u16 EnSob1_GetWelcome(EnSob1* this, PlayState* play) { case PLAYER_MASK_BUNNY: case PLAYER_MASK_POSTMAN: return 0x644; + case PLAYER_MASK_GORON: case PLAYER_MASK_ZORA: case PLAYER_MASK_DEKU: return 0x64B; + case PLAYER_MASK_TRUTH: case PLAYER_MASK_ALL_NIGHT: case PLAYER_MASK_KEATON: @@ -243,78 +245,96 @@ u16 EnSob1_GetWelcome(EnSob1* this, PlayState* play) { case PLAYER_MASK_BREMEN: case PLAYER_MASK_SCENTS: return 0x685; + case PLAYER_MASK_GARO: case PLAYER_MASK_CIRCUS_LEADER: case PLAYER_MASK_GIBDO: case PLAYER_MASK_CAPTAIN: return 0x686; + case PLAYER_MASK_COUPLE: return 0x687; + case PLAYER_MASK_STONE: return 0x688; + case PLAYER_MASK_BLAST: return 0x689; + case PLAYER_MASK_KAFEIS_MASK: return 0x68A; } } else if (this->shopType == ZORA_SHOP) { switch (player->transformation) { case PLAYER_FORM_HUMAN: - if (gSaveContext.save.weekEventReg[57] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_57_10)) { return 0x12CF; + } else { + SET_WEEKEVENTREG(WEEKEVENTREG_57_10); + return 0x12CE; } - gSaveContext.save.weekEventReg[57] |= 0x10; - return 0x12CE; + case PLAYER_FORM_DEKU: - if (gSaveContext.save.weekEventReg[57] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_57_20)) { return 0x12D1; + } else { + SET_WEEKEVENTREG(WEEKEVENTREG_57_20); + return 0x12D0; } - gSaveContext.save.weekEventReg[57] |= 0x20; - return 0x12D0; + case PLAYER_FORM_GORON: - if (gSaveContext.save.weekEventReg[57] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_57_40)) { return 0x12D3; + } else { + SET_WEEKEVENTREG(WEEKEVENTREG_57_40); + return 0x12D2; } - gSaveContext.save.weekEventReg[57] |= 0x40; - return 0x12D2; + case PLAYER_FORM_ZORA: - if (gSaveContext.save.weekEventReg[57] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_57_80)) { return 0x12D5; + } else { + SET_WEEKEVENTREG(WEEKEVENTREG_57_80); + return 0x12D4; } - gSaveContext.save.weekEventReg[57] |= 0x80; - return 0x12D4; + default: return 0x12CE; } } else if (this->shopType == GORON_SHOP) { if (player->transformation != PLAYER_FORM_GORON) { - if (gSaveContext.save.weekEventReg[58] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_58_04)) { return 0xBB9; + } else { + SET_WEEKEVENTREG(WEEKEVENTREG_58_04); + return 0xBB8; } - gSaveContext.save.weekEventReg[58] |= 4; - return 0xBB8; } else { - if (gSaveContext.save.weekEventReg[58] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_58_08)) { return 0xBBB; + } else { + SET_WEEKEVENTREG(WEEKEVENTREG_58_08); + return 0xBBA; } - gSaveContext.save.weekEventReg[58] |= 8; - return 0xBBA; } } else if (this->shopType == GORON_SHOP_SPRING) { if (player->transformation != PLAYER_FORM_GORON) { - if (gSaveContext.save.weekEventReg[58] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_58_10)) { return 0xBBD; + } else { + SET_WEEKEVENTREG(WEEKEVENTREG_58_10); + return 0xBBC; } - gSaveContext.save.weekEventReg[58] |= 0x10; - return 0xBBC; } else { - if (gSaveContext.save.weekEventReg[58] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_58_20)) { return 0xBBF; + } else { + SET_WEEKEVENTREG(WEEKEVENTREG_58_20); + return 0xBBE; } - gSaveContext.save.weekEventReg[58] |= 0x20; - return 0xBBE; } } + return 0; } @@ -386,7 +406,7 @@ void EnSob1_Init(Actor* thisx, PlayState* play) { this->shopType = ZORA_SHOP; break; case GORON_SHOP: - if (gSaveContext.save.weekEventReg[33] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80)) { this->shopType = GORON_SHOP_SPRING; } else { this->shopType = GORON_SHOP; @@ -824,7 +844,7 @@ void EnSob1_ItemPurchased(EnSob1* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { func_80151938(play, 0x647); } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -1080,7 +1100,7 @@ void EnSob1_SetupItemPurchased(EnSob1* this, PlayState* play) { this->cutscene = this->lookToShopkeeperCutscene; ActorCutscene_SetIntentToPlay(this->cutscene); } - func_800B85E0(&this->actor, play, 400.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -1096,7 +1116,7 @@ void EnSob1_ContinueShopping(EnSob1* this, PlayState* play) { player->stateFlags2 |= PLAYER_STATE2_20000000; Message_StartTextbox(play, this->welcomeTextId, &this->actor); EnSob1_SetupStartShopping(play, this, true); - func_800B85E0(&this->actor, play, 200.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } @@ -1266,7 +1286,7 @@ s16 EnSob1_GetDistSqAndOrient(Path* path, s32 pointIndex, Vec3f* pos, f32* distS diffZ = 0.0f; } *distSq = SQ(diffX) + SQ(diffZ); - return RADF_TO_BINANG(Math_Acot2F(diffZ, diffX)); + return RADF_TO_BINANG(Math_Atan2F_XY(diffZ, diffX)); } void EnSob1_GetCutscenes(EnSob1* this) { @@ -1361,7 +1381,7 @@ void EnSob1_InitShop(EnSob1* this, PlayState* play) { this->actor.world.pos.y += posOffset->y; this->actor.world.pos.z += posOffset->z; shopItems = sShops[this->shopType]; - if ((this->shopType == BOMB_SHOP) && (gSaveContext.save.weekEventReg[33] & 8)) { + if ((this->shopType == BOMB_SHOP) && CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08)) { sShops[this->shopType][0].shopItemId = SI_BOMB_BAG_30_2; } @@ -1611,13 +1631,12 @@ void EnSob1_BombShopkeeper_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dL } Gfx* EnSob1_EndDList(GraphicsContext* gfxCtx) { - Gfx* dList; - Gfx* dListHead; + Gfx* gfxHead = GRAPH_ALLOC(gfxCtx, sizeof(Gfx)); + Gfx* gfx = gfxHead; - dList = dListHead = GRAPH_ALLOC(gfxCtx, sizeof(Gfx) * 2); - gSPEndDisplayList(dListHead++); + gSPEndDisplayList(gfx++); - return dList; + return gfxHead; } void EnSob1_ZoraShopkeeper_Draw(Actor* thisx, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c index 023c6ba5d..7494695fa 100644 --- a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c +++ b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c @@ -708,11 +708,11 @@ void EnSsh_Talk(EnSsh* this, PlayState* play) { void func_809756D0(EnSsh* this, PlayState* play) { u16 phi_a1; - if (gSaveContext.save.weekEventReg[34] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_34_08)) { phi_a1 = 0x914; } else { phi_a1 = 0x910; - gSaveContext.save.weekEventReg[34] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_34_08); } Message_StartTextbox(play, phi_a1, &this->actor); } diff --git a/src/overlays/actors/ovl_En_Sth/z_en_sth.c b/src/overlays/actors/ovl_En_Sth/z_en_sth.c index 4ca1caae4..5d1bd1471 100644 --- a/src/overlays/actors/ovl_En_Sth/z_en_sth.c +++ b/src/overlays/actors/ovl_En_Sth/z_en_sth.c @@ -119,7 +119,7 @@ void EnSth_Init(Actor* thisx, PlayState* play) { Actor_Kill(&this->actor); } this->actor.textId = 0; - if (!(gSaveContext.save.weekEventReg[34] & 0x40) || !(gSaveContext.save.weekEventReg[34] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_34_40) || !CHECK_WEEKEVENTREG(WEEKEVENTREG_34_08)) { this->unk_29C |= 1; } break; @@ -136,19 +136,19 @@ void EnSth_Init(Actor* thisx, PlayState* play) { break; case ENSTH_F_4: - if (gSaveContext.save.weekEventReg[13] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_13_20)) { Actor_Kill(&this->actor); return; } this->actor.textId = 0; this->actionFunc = func_80B677BC; - if (gSaveContext.save.weekEventReg[13] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_13_80)) { this->unk_29C |= 2; } break; case ENSTH_F_5: - if (!(gSaveContext.save.weekEventReg[13] & 0x20) || (Inventory_GetSkullTokenCount(play->sceneId) < 30)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_13_20) || (Inventory_GetSkullTokenCount(play->sceneId) < 30)) { Actor_Kill(&this->actor); return; } @@ -258,7 +258,7 @@ void func_80B67348(EnSth* this, PlayState* play) { break; case 5: - if (gSaveContext.save.weekEventReg[13] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_13_40)) { phi_a1 = 0x113D; } else { phi_a1 = 0x113C; @@ -266,7 +266,7 @@ void func_80B67348(EnSth* this, PlayState* play) { break; default: - if (gSaveContext.save.weekEventReg[13] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_13_40)) { phi_a1 = 0x1142; } else { phi_a1 = 0x1141; @@ -275,7 +275,7 @@ void func_80B67348(EnSth* this, PlayState* play) { } Message_StartTextbox(play, phi_a1, &this->actor); } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -286,7 +286,7 @@ void func_80B67458(EnSth* this, PlayState* play) { this->actor.parent = NULL; this->actionFunc = func_80B67348; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); if (CURRENT_DAY == 3) { func_80B670A4(this, 6); } else { @@ -331,14 +331,14 @@ void func_80B67540(EnSth* this, PlayState* play) { break; case 0x1136: - gSaveContext.save.weekEventReg[13] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_13_80); switch (sp2C) { case 0: - if (gSaveContext.save.weekEventReg[13] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_13_40)) { this->actor.home.rot.z = 6; } else { - gSaveContext.save.weekEventReg[13] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_13_40); switch (CUR_UPG_VALUE(UPG_WALLET)) { case 0: this->actor.home.rot.z = 8; @@ -433,14 +433,14 @@ void func_80B67958(EnSth* this, PlayState* play) { void func_80B67984(EnSth* this, PlayState* play) { u16 sp1E; - if (gSaveContext.save.weekEventReg[34] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_34_10)) { sp1E = 0x903; func_80B670A4(this, 2); - } else if (gSaveContext.save.weekEventReg[34] & 0x20) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_34_20)) { sp1E = 0x90F; func_80B670A4(this, 2); - } else if (gSaveContext.save.weekEventReg[34] & 0x40) { - if (!(gSaveContext.save.weekEventReg[34] & 8)) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_34_40)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_34_08)) { sp1E = 0x91B; } else { sp1E = 0x918; @@ -453,11 +453,11 @@ void func_80B67984(EnSth* this, PlayState* play) { } else { sp1E = 0x916; } - } else if (gSaveContext.save.weekEventReg[34] & 2) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_34_02)) { sp1E = 0x8FF; } else { sp1E = 0x8FC; - gSaveContext.save.weekEventReg[34] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_34_02); } Message_StartTextbox(play, sp1E, &this->actor); } @@ -467,10 +467,10 @@ void func_80B67AB4(EnSth* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actionFunc = func_80B67C1C; - gSaveContext.save.weekEventReg[34] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_34_40); Message_StartTextbox(play, 0x918, &this->actor); } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -481,10 +481,10 @@ void func_80B67B50(EnSth* this, PlayState* play) { this->actor.parent = NULL; this->actionFunc = func_80B67AB4; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { this->unk_29C &= ~1; - gSaveContext.save.weekEventReg[34] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_34_08); Actor_PickUp(&this->actor, play, GI_MASK_TRUTH, 10000.0f, 50.0f); } } @@ -524,8 +524,8 @@ void func_80B67C1C(EnSth* this, PlayState* play) { break; case 0x91A: - gSaveContext.save.weekEventReg[34] |= 0x40; - gSaveContext.save.weekEventReg[34] &= (u8)~8; + SET_WEEKEVENTREG(WEEKEVENTREG_34_40); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_34_08); case 0x902: case 0x903: @@ -579,8 +579,8 @@ void EnSth_Update(Actor* thisx, PlayState* play) { this->jointTable, this->morphTable, 16); Animation_PlayLoop(&this->skelAnime, &ovl_En_Sth_Anim_0045B4); this->unk_29A = 1; - if ((gSaveContext.save.weekEventReg[34] & 0x10) || (gSaveContext.save.weekEventReg[34] & 0x20) || - (gSaveContext.save.weekEventReg[34] & 0x40) || (Inventory_GetSkullTokenCount(play->sceneId) >= 30)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_34_10) || CHECK_WEEKEVENTREG(WEEKEVENTREG_34_20) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_34_40) || (Inventory_GetSkullTokenCount(play->sceneId) >= 30)) { func_80B670A4(this, 3); } } else { @@ -598,7 +598,7 @@ void EnSth_Update(Actor* thisx, PlayState* play) { break; case ENSTH_F_4: - if (gSaveContext.save.weekEventReg[13] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_13_80)) { func_80B670A4(this, 5); } else { func_80B670A4(this, 5); diff --git a/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c b/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c index 9cc5b5fad..36dd9398e 100644 --- a/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c +++ b/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c @@ -161,13 +161,13 @@ void EnStoneheishi_TrackPlayer(EnStoneheishi* this) { void func_80BC94B0(EnStoneheishi* this) { this->textIdIndex = 0; - if (gSaveContext.save.weekEventReg[41] & 0x40) { // After drinking bottle + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_41_40)) { // After drinking bottle EnStoneheishi_ChangeAnim(this, EN_STONE_HEISHI_ANIM_CHEER_WITH_SPEAR); this->textIdIndex = 8; this->actor.flags &= ~ACTOR_FLAG_80; } else { // Initial configuration EnStoneheishi_ChangeAnim(this, EN_STONE_HEISHI_ANIM_WAVE); - if (gSaveContext.save.weekEventReg[41] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_41_80)) { this->textIdIndex = 2; } } @@ -185,7 +185,7 @@ void func_80BC9560(EnStoneheishi* this, PlayState* play) { return; } - if (!(gSaveContext.save.weekEventReg[41] & 0x40) && (play->actorCtx.lensMaskSize != 100)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_41_40) && (play->actorCtx.lensMaskSize != 100)) { this->actor.flags |= ACTOR_FLAG_8000000; return; } @@ -265,19 +265,20 @@ void EnStoneheishi_SetupCheckGivenItem(EnStoneheishi* this) { } void EnStoneheishi_CheckGivenItem(EnStoneheishi* this, PlayState* play) { - s32 itemActionParam; + PlayerItemAction itemAction; SkelAnime_Update(&this->skelAnime); if (Message_GetState(&play->msgCtx) == TEXT_STATE_16) { - itemActionParam = func_80123810(play); - if (itemActionParam > PLAYER_AP_NONE) { + itemAction = func_80123810(play); + + if (itemAction > PLAYER_IA_NONE) { this->timer = 40; func_801477B4(play); - if ((itemActionParam == PLAYER_AP_BOTTLE_POTION_RED) || (itemActionParam == PLAYER_AP_BOTTLE_POTION_BLUE)) { + if ((itemAction == PLAYER_IA_BOTTLE_POTION_RED) || (itemAction == PLAYER_IA_BOTTLE_POTION_BLUE)) { this->playerGivesBluePotion = false; - if (itemActionParam == PLAYER_AP_BOTTLE_POTION_BLUE) { + if (itemAction == PLAYER_IA_BOTTLE_POTION_BLUE) { this->playerGivesBluePotion = true; } EnStoneheishi_SetupDrinkBottleProcess(this); @@ -286,11 +287,11 @@ void EnStoneheishi_CheckGivenItem(EnStoneheishi* this, PlayState* play) { this->textIdIndex = 3; player->actor.textId = 0; - gSaveContext.save.weekEventReg[41] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_41_80); this->action = EN_STONE_ACTION_1; this->actionFunc = func_80BC9680; } - } else if (itemActionParam < PLAYER_AP_NONE) { + } else if (itemAction <= PLAYER_IA_MINUS1) { func_801477B4(play); func_80151BB4(play, 0x12); func_80BC94B0(this); @@ -327,7 +328,7 @@ void EnStoneheishi_DrinkBottleProcess(EnStoneheishi* this, PlayState* play) { play->msgCtx.msgLength = 0; player->actor.textId = 0; - player->exchangeItemId = PLAYER_AP_NONE; + player->exchangeItemId = PLAYER_IA_NONE; this->bottleDisplay = EN_STONE_BOTTLE_RED_POTION; if (this->playerGivesBluePotion) { @@ -346,7 +347,7 @@ void EnStoneheishi_DrinkBottleProcess(EnStoneheishi* this, PlayState* play) { if ((this->timer < 10) && (this->bottleDisplay != EN_STONE_BOTTLE_EMPTY)) { this->bottleDisplay = EN_STONE_BOTTLE_EMPTY; Actor_PlaySfxAtPos(&this->actor, NA_SE_VO_NP_DRINK); - func_80123D50(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_AP_BOTTLE); + Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_IA_BOTTLE); } } else { this->drinkBottleState++; @@ -395,9 +396,9 @@ void func_80BC9D28(EnStoneheishi* this, PlayState* play) { this->actor.parent = NULL; this->textIdIndex++; this->actor.textId = sEnStoneHeishiTextIds[this->textIdIndex]; - gSaveContext.save.weekEventReg[41] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_41_40); Actor_ProcessTalkRequest(&this->actor, &play->state); - func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); this->actionFunc = func_80BC9E50; } else if (INV_CONTENT(ITEM_MASK_STONE) == ITEM_MASK_STONE) { Actor_PickUp(&this->actor, play, GI_RUPEE_BLUE, 300.0f, 300.0f); @@ -415,7 +416,7 @@ void func_80BC9E50(EnStoneheishi* this, PlayState* play) { this->action = EN_STONE_ACTION_1; this->actionFunc = func_80BC9680; } else { - func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); } } @@ -435,7 +436,7 @@ void EnStoneheishi_Update(Actor* thisx, PlayState* play) { Actor_UpdateBgCheckInfo(play, &this->actor, 20.0f, 20.0f, 50.0f, 0x1D); Actor_SetScale(&this->actor, 0.01f); - if (((gSaveContext.save.weekEventReg[41] & 0x40) || (play->actorCtx.lensMaskSize == 100)) && + if ((CHECK_WEEKEVENTREG(WEEKEVENTREG_41_40) || (play->actorCtx.lensMaskSize == 100)) && !(player->stateFlags1 & PLAYER_STATE1_800000)) { if ((this->animIndex != EN_STONE_HEISHI_ANIM_WAVE) && ((((this->action == EN_STONE_ACTION_0) || (this->action == EN_STONE_ACTION_1)) || @@ -447,7 +448,7 @@ void EnStoneheishi_Update(Actor* thisx, PlayState* play) { this->targetHeadRot.y = 0; } - if (!(gSaveContext.save.weekEventReg[41] & 0x40)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_41_40)) { Actor_SetFocus(&this->actor, 30.0f); } else { Actor_SetFocus(&this->actor, 60.0f); @@ -516,7 +517,7 @@ void EnStoneheishi_Draw(Actor* thisx, PlayState* play) { OPEN_DISPS(play->state.gfxCtx); - if (!(gSaveContext.save.weekEventReg[41] & 0x40)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_41_40)) { func_8012C2DC(play->state.gfxCtx); POLY_XLU_DISP = diff --git a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c index 2840ffaee..e8a445433 100644 --- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c +++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c @@ -130,7 +130,7 @@ static TrackOptionsSet sTrackOptions = { static u8 D_80BAE820[] = { /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x80 - 0x04), - /* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(0x21, 0x08, 0x7F - 0x08), + /* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_33_08, 0x7F - 0x08), /* 0x08 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x3D - 0x0C), /* 0x0C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 0, 25, 0x37 - 0x12), /* 0x12 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 25, 0, 30, 0x31 - 0x18), @@ -364,7 +364,7 @@ void func_80BAAB78(EnSuttari* this, PlayState* play) { } else if (this->flags1 & 1) { switch (this->textId) { case 0: - if (gSaveContext.save.weekEventReg[81] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_81_01)) { this->textId = 0x1455; ((EnElf*)GET_PLAYER(play)->tatlActor)->unk_264 |= 8; this->flags2 |= 1; @@ -382,12 +382,12 @@ void func_80BAAB78(EnSuttari* this, PlayState* play) { } else { this->flags1 |= 0x400; this->textId = 0x1452; - gSaveContext.save.weekEventReg[81] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_81_01); } break; case 0x1453: this->flags1 |= 0x400; - gSaveContext.save.weekEventReg[81] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_81_01); ((EnElf*)GET_PLAYER(play)->tatlActor)->unk_264 |= 8; this->flags2 |= 1; this->textId = 0x1454; @@ -456,7 +456,7 @@ void func_80BAAFDC(EnSuttari* this, PlayState* play) { if (this->unk1F4[0] != 0) { this->unk1F4[0]--; } - gSaveContext.save.weekEventReg[61] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_61_08); this->unk3F6 = 20; this->actionFunc = func_80BADE8C; } @@ -489,7 +489,7 @@ void func_80BAB1A0(EnSuttari* this, PlayState* play) { if (this->unk1F4[0] != 0) { this->unk1F4[0]--; } - gSaveContext.save.weekEventReg[61] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_61_08); this->unk3F6 = 20; this->actionFunc = func_80BADE8C; } else { @@ -531,7 +531,7 @@ void func_80BAB4F0(EnSuttari* this, PlayState* play) { if (!(this->flags1 & 4) && (Player_GetMask(play) != PLAYER_MASK_STONE)) { if (SubS_AngleDiffLessEqual(this->actor.shape.rot.y, 0x36B0, this->actor.yawTowardsPlayer)) { point.x = player->actor.world.pos.x; - point.y = player->bodyPartsPos[7].y + 3.0f; + point.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; point.z = player->actor.world.pos.z; SubS_TrackPoint(&point, &this->actor.focus.pos, &this->actor.shape.rot, &this->trackTarget, &this->headRot, &this->torsoRot, &sTrackOptions); @@ -563,7 +563,7 @@ s16 EnSuttari_GetDistSqAndOrient(Path* path, s32 index, Vec3f* pos, f32* distSq) } *distSq = SQ(diffX) + SQ(diffZ); - return RADF_TO_BINANG(Math_Acot2F(diffZ, diffX)); + return RADF_TO_BINANG(Math_Atan2F_XY(diffZ, diffX)); } s32 func_80BAB758(EnSuttari* this, Path* path, s32 arg2) { @@ -858,7 +858,7 @@ void func_80BAC2FC(EnSuttari* this, PlayState* play) { this->animIndex = 2; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, this->animIndex); } - if (!(gSaveContext.save.weekEventReg[83] & 4) && !(this->flags1 & 0x1000)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_83_04) && !(this->flags1 & 0x1000)) { if (ActorCutscene_GetCanPlayNext(this->cutscenes[0])) { ActorCutscene_Start(this->cutscenes[0], &this->actor); if (!(player->stateFlags1 & PLAYER_STATE1_10000000)) { @@ -907,7 +907,7 @@ void func_80BAC2FC(EnSuttari* this, PlayState* play) { Actor_Kill(&this->actor); break; case 2: - if (!(gSaveContext.save.weekEventReg[81] & 4)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_81_04)) { this->flags1 |= 0x80; this->actor.world.pos.x = -16.0f; this->actor.world.pos.z = -16.0f; @@ -917,7 +917,7 @@ void func_80BAC2FC(EnSuttari* this, PlayState* play) { } break; case 4: - if (!(gSaveContext.save.weekEventReg[33] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08)) { if (this->animIndex == 2 || this->animIndex == 1) { this->animIndex = 5; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, this->animIndex); @@ -954,8 +954,8 @@ void func_80BAC6E8(EnSuttari* this, PlayState* play) { this->actionFunc = func_80BACA14; return; } else if ((gSaveContext.save.day == 3) && (gSaveContext.save.time <= CLOCK_TIME(19, 0)) && - !(gSaveContext.save.weekEventReg[61] & 8) && !(gSaveContext.save.weekEventReg[33] & 8) && - (gSaveContext.save.weekEventReg[51] & 8)) { + !CHECK_WEEKEVENTREG(WEEKEVENTREG_61_08) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08) && + CHECK_WEEKEVENTREG(WEEKEVENTREG_51_08)) { this->animIndex = 2; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, this->animIndex); this->actionFunc = func_80BACEE0; @@ -965,8 +965,8 @@ void func_80BAC6E8(EnSuttari* this, PlayState* play) { if (gSaveContext.save.time >= CLOCK_TIME(0, 20) && gSaveContext.save.time < CLOCK_TIME(6, 00)) { Actor_Kill(&this->actor); } - if ((gSaveContext.save.entrance == ENTRANCE(NORTH_CLOCK_TOWN, 7)) || - (gSaveContext.save.weekEventReg[58] & 0x40)) { + + if ((gSaveContext.save.entrance == ENTRANCE(NORTH_CLOCK_TOWN, 7)) || CHECK_WEEKEVENTREG(WEEKEVENTREG_58_40)) { Actor_Kill(&this->actor); } this->cutscenes[0] = this->actor.cutscene; @@ -978,7 +978,7 @@ void func_80BAC6E8(EnSuttari* this, PlayState* play) { this->actionFunc = func_80BAD004; return; } else if (play->sceneId == SCENE_ICHIBA) { - if (gSaveContext.save.weekEventReg[33] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08)) { Actor_Kill(&this->actor); return; } @@ -988,7 +988,7 @@ void func_80BAC6E8(EnSuttari* this, PlayState* play) { this->actionFunc = func_80BAD5F8; return; } else if (play->sceneId == SCENE_AYASHIISHOP) { - if (gSaveContext.save.weekEventReg[33] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08)) { Actor_Kill(&this->actor); return; } @@ -1116,7 +1116,7 @@ void func_80BACEE0(EnSuttari* this, PlayState* play) { func_80BAC2FC(this, play); func_80BAB434(this); if (this->unk428 == 5) { - gSaveContext.save.weekEventReg[58] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_58_80); this->actionFunc = func_80BADDB4; this->actor.speedXZ = 0.0f; } else if (Player_GetMask(play) != PLAYER_MASK_STONE) { @@ -1220,7 +1220,7 @@ void func_80BAD380(EnSuttari* this, PlayState* play) { this->flags2 |= 8; func_80BAAF1C(this); } else if (this->flags1 & 0x200) { - gSaveContext.save.weekEventReg[79] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_79_40); this->flags2 |= 4; this->actor.speedXZ = 0.0f; Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->actor.world.pos.x, this->actor.world.pos.y, @@ -1231,7 +1231,7 @@ void func_80BAD380(EnSuttari* this, PlayState* play) { } if (this->unk1F4[1] == -0x63) { if (this->flags2 & 8) { - gSaveContext.save.weekEventReg[33] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_33_08); } this->actor.speedXZ = 0.0f; Audio_QueueSeqCmd(0x101400FF); @@ -1323,7 +1323,7 @@ void func_80BADA08(EnSuttari* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actor.flags &= ~ACTOR_FLAG_10000; func_80BAAB78(this, play); - gSaveContext.save.weekEventReg[81] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_81_04); } else if (this->actor.xzDistToPlayer < 500.0f) { this->actor.flags |= ACTOR_FLAG_10000; func_800B8614(&this->actor, play, 500.0f); @@ -1401,7 +1401,7 @@ void func_80BADD0C(EnSuttari* this, PlayState* play) { void func_80BADDB4(EnSuttari* this, PlayState* play) { func_80BABA90(this, 1, 1); func_80BAB434(this); - if (gSaveContext.save.weekEventReg[51] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_51_10)) { this->actionFunc = func_80BADE14; } Actor_MoveWithGravity(&this->actor); @@ -1447,7 +1447,7 @@ void EnSuttari_Init(Actor* thisx, PlayState* play) { EnSuttari* this = THIS; s32 pad; - if (gSaveContext.save.weekEventReg[79] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_40)) { Actor_Kill(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Sw/z_en_sw.c b/src/overlays/actors/ovl_En_Sw/z_en_sw.c index da5ba5b8d..d8dd72923 100644 --- a/src/overlays/actors/ovl_En_Sw/z_en_sw.c +++ b/src/overlays/actors/ovl_En_Sw/z_en_sw.c @@ -761,7 +761,7 @@ void func_808DA3F4(EnSw* this, PlayState* play) { Math_Vec3f_Copy(&sp38, &this->unk_374); func_808D9894(this, &sp38); - temp_v0 = Math_FAtan2F(sp38.z, sp38.x); + temp_v0 = Math_Atan2S_XY(sp38.z, sp38.x); if (ABS_ALT(temp_v0) < temp_s1) { this->skelAnime.curFrame = 0.0f; Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_STALWALL_DASH); @@ -794,7 +794,7 @@ void func_808DA578(EnSw* this, PlayState* play) { if ((this->actor.speedXZ == 0.0f) && (this->unk_44C != 0.0f)) { Math_Vec3f_Copy(&sp30, &this->unk_374); func_808D9894(this, &sp30); - temp2 = Math_FAtan2F(sp30.z, sp30.x); + temp2 = Math_Atan2S_XY(sp30.z, sp30.x); func_808D94D0(this, play, 0, 0, temp2); } } else if (this->unk_410 & 0x20) { @@ -825,7 +825,7 @@ void func_808DA6FC(EnSw* this, PlayState* play) { if ((this->actor.speedXZ == 0.0f) && (this->unk_44C != 0.0f)) { Math_Vec3f_Copy(&sp38, &this->unk_374); func_808D9894(this, &sp38); - temp2 = Math_FAtan2F(sp38.z, sp38.x); + temp2 = Math_Atan2S_XY(sp38.z, sp38.x); func_808D94D0(this, play, 0, 0, temp2); } } else { @@ -916,7 +916,7 @@ void func_808DAA60(EnSw* this, PlayState* play) { if (this->unk_45E == 0) { Math_Vec3s_ToVec3f(&sp34, &sp44[this->unk_4A0]); func_808D9894(this, &sp34); - temp_v0 = Math_FAtan2F(sp34.z, sp34.x); + temp_v0 = Math_Atan2S_XY(sp34.z, sp34.x); if (ABS_ALT(temp_v0) < sp40) { this->skelAnime.curFrame = 0.0f; Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_STALWALL_DASH); @@ -967,7 +967,7 @@ void func_808DACF4(EnSw* this, PlayState* play) { Math_Vec3f_Copy(&sp38, &this->unk_374); func_808D9894(this, &sp38); - temp_f6 = Math_FAtan2F(sp38.z, sp38.x); + temp_f6 = Math_Atan2S_XY(sp38.z, sp38.x); func_808D94D0(this, play, 0, 0, temp_f6); } } else { diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index 1436d3f62..b8121acf4 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -222,7 +222,7 @@ void EnSyatekiMan_Init(Actor* thisx, PlayState* play) { } void EnSyatekiMan_Destroy(Actor* thisx, PlayState* play) { - gSaveContext.save.weekEventReg[63] &= (u8)~1; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); } /** @@ -341,8 +341,8 @@ void EnSyatekiMan_Swamp_HandleChoice(EnSyatekiMan* this, PlayState* play) { } else { func_8019F208(); Rupees_ChangeBy(-20); - gSaveContext.save.weekEventReg[63] |= 1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + SET_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; this->shootingGameState = SG_GAME_STATE_MOVING_PLAYER; @@ -408,11 +408,11 @@ void EnSyatekiMan_Swamp_HandleNormalMessage(EnSyatekiMan* this, PlayState* play) break; case 0xA32: // You have to try harder! - if (gSaveContext.save.weekEventReg[63] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_02)) { func_801477B4(play); player->stateFlags1 &= ~PLAYER_STATE1_20; - gSaveContext.save.weekEventReg[63] &= (u8)~1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); this->actionFunc = EnSyatekiMan_Swamp_Idle; gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; this->shootingGameState = SG_GAME_STATE_NONE; @@ -469,8 +469,8 @@ void EnSyatekiMan_Swamp_Talk(EnSyatekiMan* this, PlayState* play) { play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; player->stateFlags1 &= ~PLAYER_STATE1_20; - gSaveContext.save.weekEventReg[63] &= (u8)~1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); this->actionFunc = EnSyatekiMan_Swamp_Idle; this->shootingGameState = SG_GAME_STATE_NONE; } @@ -660,8 +660,8 @@ void EnSyatekiMan_Town_HandleChoice(EnSyatekiMan* this, PlayState* play) { this->prevTextId = 0x3FF; } - gSaveContext.save.weekEventReg[63] |= 1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + SET_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); } } else { func_8019F230(); @@ -747,8 +747,8 @@ void EnSyatekiMan_Town_HandleNormalMessage(EnSyatekiMan* this, PlayState* play) player->actor.freezeTimer = 0; this->shootingGameState = SG_GAME_STATE_MOVING_PLAYER; player->stateFlags1 |= PLAYER_STATE1_20; - gSaveContext.save.weekEventReg[63] |= 1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + SET_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); this->actionFunc = EnSyatekiMan_Town_MovePlayerAndSayHighScore; } break; @@ -767,10 +767,10 @@ void EnSyatekiMan_Town_HandleNormalMessage(EnSyatekiMan* this, PlayState* play) break; case 0x401: // You got [score]? Oh, that's too bad... - if (gSaveContext.save.weekEventReg[63] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_02)) { func_801477B4(play); - gSaveContext.save.weekEventReg[63] &= (u8)~1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); this->shootingGameState = SG_GAME_STATE_NONE; this->actionFunc = EnSyatekiMan_Town_Idle; } else { @@ -781,10 +781,10 @@ void EnSyatekiMan_Town_HandleNormalMessage(EnSyatekiMan* this, PlayState* play) break; case 0x403: // You got [score]? Too bad... - if (gSaveContext.save.weekEventReg[63] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_02)) { func_801477B4(play); - gSaveContext.save.weekEventReg[63] &= (u8)~1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); this->shootingGameState = SG_GAME_STATE_NONE; this->actionFunc = EnSyatekiMan_Town_Idle; } else { @@ -839,8 +839,8 @@ void EnSyatekiMan_Town_Talk(EnSyatekiMan* this, PlayState* play) { case TEXT_STATE_DONE: if (Message_ShouldAdvance(play)) { - gSaveContext.save.weekEventReg[63] &= (u8)~1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); player->stateFlags1 &= ~PLAYER_STATE1_20; this->actionFunc = EnSyatekiMan_Town_Idle; this->shootingGameState = SG_GAME_STATE_NONE; @@ -862,20 +862,20 @@ void EnSyatekiMan_Swamp_SetupGiveReward(EnSyatekiMan* this, PlayState* play) { Player* player = GET_PLAYER(play); if (Actor_HasParent(&this->actor, play)) { - if (!(gSaveContext.save.weekEventReg[59] & 0x10)) { - gSaveContext.save.weekEventReg[59] |= 0x10; - } else if (!(gSaveContext.save.weekEventReg[32] & 2) && (this->score >= 2180)) { - gSaveContext.save.weekEventReg[32] |= 2; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_59_10)) { + SET_WEEKEVENTREG(WEEKEVENTREG_59_10); + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_32_02) && (this->score >= 2180)) { + SET_WEEKEVENTREG(WEEKEVENTREG_32_02); } this->actor.parent = NULL; this->actionFunc = EnSyatekiMan_Swamp_GiveReward; } else { - if ((CUR_UPG_VALUE(UPG_QUIVER) < 3) && !(gSaveContext.save.weekEventReg[59] & 0x10)) { + if ((CUR_UPG_VALUE(UPG_QUIVER) < 3) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_59_10)) { Actor_PickUp(&this->actor, play, GI_QUIVER_30 + CUR_UPG_VALUE(UPG_QUIVER), 500.0f, 100.0f); } else if (this->score < 2180) { Actor_PickUp(&this->actor, play, GI_RUPEE_RED, 500.0f, 100.0f); - } else if (!(gSaveContext.save.weekEventReg[32] & 2)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_32_02)) { Actor_PickUp(&this->actor, play, GI_HEART_PIECE, 500.0f, 100.0f); } else { Actor_PickUp(&this->actor, play, GI_RUPEE_PURPLE, 500.0f, 100.0f); @@ -908,7 +908,7 @@ void EnSyatekiMan_Swamp_GiveReward(EnSyatekiMan* this, PlayState* play) { this->shootingGameState = SG_GAME_STATE_NONE; this->actionFunc = EnSyatekiMan_Swamp_Talk; } else { - func_800B85E0(&this->actor, play, 500.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 500.0f, PLAYER_IA_MINUS1); } } @@ -917,14 +917,14 @@ void EnSyatekiMan_Town_SetupGiveReward(EnSyatekiMan* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { if (this->prevTextId == 0x407) { - if (!(gSaveContext.save.weekEventReg[59] & 0x20)) { - gSaveContext.save.weekEventReg[59] |= 0x20; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_59_20)) { + SET_WEEKEVENTREG(WEEKEVENTREG_59_20); } } if ((this->prevTextId == 0x405) || (this->prevTextId == 0x406)) { - if (!(gSaveContext.save.weekEventReg[32] & 4)) { - gSaveContext.save.weekEventReg[32] |= 4; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_32_04)) { + SET_WEEKEVENTREG(WEEKEVENTREG_32_04); } } @@ -932,12 +932,12 @@ void EnSyatekiMan_Town_SetupGiveReward(EnSyatekiMan* this, PlayState* play) { this->actionFunc = EnSyatekiMan_Town_GiveReward; } else { if (this->prevTextId == 0x407) { - if ((CUR_UPG_VALUE(UPG_QUIVER) < 3) && !(gSaveContext.save.weekEventReg[59] & 0x20)) { + if ((CUR_UPG_VALUE(UPG_QUIVER) < 3) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_59_20)) { Actor_PickUp(&this->actor, play, GI_QUIVER_30 + CUR_UPG_VALUE(UPG_QUIVER), 500.0f, 100.0f); } else { Actor_PickUp(&this->actor, play, GI_RUPEE_PURPLE, 500.0f, 100.0f); } - } else if (!(gSaveContext.save.weekEventReg[32] & 4)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_32_04)) { Actor_PickUp(&this->actor, play, GI_HEART_PIECE, 500.0f, 100.0f); } else { Actor_PickUp(&this->actor, play, GI_RUPEE_HUGE, 500.0f, 100.0f); @@ -958,8 +958,8 @@ void EnSyatekiMan_Town_GiveReward(EnSyatekiMan* this, PlayState* play) { player->stateFlags1 &= ~PLAYER_STATE1_20; this->score = 0; this->shootingGameState = SG_GAME_STATE_NONE; - gSaveContext.save.weekEventReg[63] &= (u8)~1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); this->actionFunc = EnSyatekiMan_SetupIdle; } } else if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { @@ -972,7 +972,7 @@ void EnSyatekiMan_Town_GiveReward(EnSyatekiMan* this, PlayState* play) { this->shootingGameState = SG_GAME_STATE_NONE; this->actionFunc = EnSyatekiMan_Town_Talk; } else { - func_800B85E0(&this->actor, play, 500.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 500.0f, PLAYER_IA_MINUS1); } } @@ -1005,7 +1005,7 @@ void EnSyatekiMan_Swamp_StartGame(EnSyatekiMan* this, PlayState* play) { player->actor.world.pos = sSwampPlayerPos; player->actor.shape.rot.y = -0x8000; player->actor.world.rot.y = player->actor.shape.rot.y; - play->unk_18790(play, -0x8000, &this->actor); + play->unk_18790(play, -0x8000); sGameStartTimer--; } else { sGameStartTimer = 30; @@ -1118,9 +1118,9 @@ void EnSyatekiMan_Swamp_EndGame(EnSyatekiMan* this, PlayState* play) { this->prevTextId = 0xA34; this->shootingGameState = SG_GAME_STATE_ENDED; } else if (this->score >= 2000) { - if (gSaveContext.save.weekEventReg[63] & 2) { - gSaveContext.save.weekEventReg[63] &= (u8)~1; - gSaveContext.save.weekEventReg[63] &= (u8)~2; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_02)) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_63_02); this->shootingGameState = SG_GAME_STATE_NONE; gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; this->actionFunc = EnSyatekiMan_Swamp_Idle; @@ -1215,7 +1215,7 @@ void EnSyatekiMan_Town_StartGame(EnSyatekiMan* this, PlayState* play) { player->actor.prevPos = player->actor.world.pos; player->actor.shape.rot.y = -0x8000; player->actor.world.rot.y = player->actor.shape.rot.y; - play->unk_18790(play, -0x8000, &this->actor); + play->unk_18790(play, -0x8000); player->stateFlags1 |= PLAYER_STATE1_20; sGameStartTimer--; } else if (sGameStartTimer > 0) { @@ -1373,7 +1373,7 @@ void EnSyatekiMan_Town_EndGame(EnSyatekiMan* this, PlayState* play) { this->talkWaitTimer = 15; if ((GET_TOWN_SHOOTING_GALLERY_HIGH_SCORE() < this->score) || (this->score == 50)) { if (GET_TOWN_SHOOTING_GALLERY_HIGH_SCORE() < this->score) { - if (!(gSaveContext.save.weekEventReg[59] & 0x20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_59_20)) { // You got a new record! Message_StartTextbox(play, 0x407, &this->actor); this->prevTextId = 0x407; diff --git a/src/overlays/actors/ovl_En_Tab/z_en_tab.c b/src/overlays/actors/ovl_En_Tab/z_en_tab.c index 9b1e320ca..3159e4a18 100644 --- a/src/overlays/actors/ovl_En_Tab/z_en_tab.c +++ b/src/overlays/actors/ovl_En_Tab/z_en_tab.c @@ -268,7 +268,7 @@ void func_80BE0A98(EnTab* this, PlayState* play) { Matrix_Translate(this->unk_308, 0.0f, 0.0f, MTXMODE_APPLY); - if ((&this->actor == player->targetActor) && + if ((&this->actor == player->talkActor) && ((play->msgCtx.currentTextId < 0xFF) || (play->msgCtx.currentTextId > 0x200)) && (talkState == TEXT_STATE_3) && (this->prevTalkState == TEXT_STATE_3)) { if ((play->state.frames % 2) == 0) { @@ -435,8 +435,7 @@ s32 func_80BE10BC(EnTab* this, PlayState* play) { } else { dist = Math_Vec3f_DistXYZ(&this->actor.world.pos, &this->unk_1E4->actor.world.pos); - if ((gSaveContext.save.weekEventReg[75] & 1) || (this->unk_1E4->actor.draw == NULL) || - !(dist < 160.0f)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_75_01) || (this->unk_1E4->actor.draw == NULL) || !(dist < 160.0f)) { tempActor = &GET_PLAYER(play)->actor; this->actor.child = tempActor; } else { @@ -552,7 +551,7 @@ void EnTab_Update(Actor* thisx, PlayState* play) { radius = this->collider.dim.radius + this->unk_30C; height = this->collider.dim.height + 10; - func_8013C964(&this->actor, play, radius, height, PLAYER_AP_NONE, this->unk_2FC & 7); + func_8013C964(&this->actor, play, radius, height, PLAYER_IA_NONE, this->unk_2FC & 7); Actor_MoveWithGravity(&this->actor); Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 12.0f, 0.0f, 4); func_80BE0620(this, play); diff --git a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c index ed17ca42c..a84059634 100644 --- a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c +++ b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c @@ -49,8 +49,8 @@ void EnTalkGibud_TurnTowardsPlayer(EnTalkGibud* this, PlayState* play); s32 EnTalkGibud_MoveToIdealGrabPositionAndRotation(EnTalkGibud* this, PlayState* play); typedef struct { - /* 0x0 */ s32 itemActionParam; - /* 0x4 */ s32 item; + /* 0x0 */ PlayerItemAction itemAction; + /* 0x4 */ ItemId item; /* 0x8 */ s32 amount; /* 0xC */ s16 isBottledItem; } EnTalkGibudRequestedItem; @@ -200,16 +200,16 @@ static DamageTable sDamageTable = { static CollisionCheckInfoInit2 sColChkInfoInit = { 8, 0, 0, 0, MASS_HEAVY }; static EnTalkGibudRequestedItem sRequestedItemTable[] = { - { PLAYER_AP_BOTTLE_POTION_BLUE, ITEM_POTION_BLUE, 1, true }, - { PLAYER_AP_MAGIC_BEANS, ITEM_MAGIC_BEANS, 5, false }, - { PLAYER_AP_BOTTLE_SPRING_WATER, ITEM_SPRING_WATER, 1, true }, - { PLAYER_AP_BOTTLE_FISH, ITEM_FISH, 1, true }, - { PLAYER_AP_BOTTLE_BUG, ITEM_BUG, 1, true }, - { PLAYER_AP_NUT, ITEM_NUT, 10, false }, - { PLAYER_AP_BOMB, ITEM_BOMB, 10, false }, - { PLAYER_AP_BOTTLE_HOT_SPRING_WATER, ITEM_HOT_SPRING_WATER, 1, true }, - { PLAYER_AP_BOTTLE_BIG_POE, ITEM_BIG_POE, 1, true }, - { PLAYER_AP_BOTTLE_MILK, ITEM_MILK_BOTTLE, 1, true }, + { PLAYER_IA_BOTTLE_POTION_BLUE, ITEM_POTION_BLUE, 1, true }, + { PLAYER_IA_MAGIC_BEANS, ITEM_MAGIC_BEANS, 5, false }, + { PLAYER_IA_BOTTLE_SPRING_WATER, ITEM_SPRING_WATER, 1, true }, + { PLAYER_IA_BOTTLE_FISH, ITEM_FISH, 1, true }, + { PLAYER_IA_BOTTLE_BUG, ITEM_BUG, 1, true }, + { PLAYER_IA_NUT, ITEM_NUT, 10, false }, + { PLAYER_IA_BOMB, ITEM_BOMB, 10, false }, + { PLAYER_IA_BOTTLE_HOT_SPRING_WATER, ITEM_HOT_SPRING_WATER, 1, true }, + { PLAYER_IA_BOTTLE_BIG_POE, ITEM_BIG_POE, 1, true }, + { PLAYER_IA_BOTTLE_MILK, ITEM_MILK_BOTTLE, 1, true }, }; static InitChainEntry sInitChain[] = { @@ -242,7 +242,7 @@ void EnTalkGibud_Init(Actor* thisx, PlayState* play) { this->playerStunWaitTimer = 0; this->grabState = EN_TALK_GIBUD_GRAB_START; this->grabWaitTimer = 0; - this->itemActionParam = PLAYER_AP_NONE; + this->itemAction = PLAYER_IA_NONE; this->drawDmgEffTimer = 0; this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE; this->isTalking = false; @@ -407,7 +407,7 @@ void EnTalkGibud_Grab(EnTalkGibud* this, PlayState* play) { if (this->grabDamageTimer == 20) { s16 requiredScopeTemp; - damageSfxId = player->ageProperties->unk_92 + NA_SE_VO_LI_DAMAGE_S; + damageSfxId = player->ageProperties->voiceSfxIdOffset + NA_SE_VO_LI_DAMAGE_S; play->damagePlayer(play, -8); func_800B8E58(player, damageSfxId); Rumble_Request(this->actor.xzDistToPlayer, 240, 1, 12); @@ -703,10 +703,10 @@ void EnTalkGibud_GetNextTextBoxId(EnTalkGibud* this, PlayState* play) { } } -s32 EnTalkGibud_PresentedItemMatchesRequest(EnTalkGibud* this, PlayState* play, s32 presentedItemActionParam) { +s32 EnTalkGibud_PresentedItemMatchesRequest(EnTalkGibud* this, PlayState* play, PlayerItemAction presentedItemAction) { EnTalkGibudRequestedItem* requestedItem = &sRequestedItemTable[this->requestedItemIndex]; - if (requestedItem->itemActionParam == presentedItemActionParam) { + if (requestedItem->itemAction == presentedItemAction) { if (!requestedItem->isBottledItem) { if (AMMO(requestedItem->item) >= requestedItem->amount) { return EN_TALK_GIBUD_REQUESTED_ITEM_MET; @@ -723,15 +723,16 @@ s32 EnTalkGibud_PresentedItemMatchesRequest(EnTalkGibud* this, PlayState* play, void EnTalkGibud_CheckPresentedItem(EnTalkGibud* this, PlayState* play) { Player* player = GET_PLAYER(play); - s32 itemActionParam; + PlayerItemAction itemAction; - if (this->itemActionParam == PLAYER_AP_NONE) { - itemActionParam = func_80123810(play); - if (itemActionParam != PLAYER_AP_NONE) { - this->itemActionParam = itemActionParam; + if (this->itemAction == PLAYER_IA_NONE) { + itemAction = func_80123810(play); + + if (itemAction != PLAYER_IA_NONE) { + this->itemAction = itemAction; } - if (this->itemActionParam > PLAYER_AP_NONE) { - switch (EnTalkGibud_PresentedItemMatchesRequest(this, play, this->itemActionParam)) { + if (this->itemAction > PLAYER_IA_NONE) { + switch (EnTalkGibud_PresentedItemMatchesRequest(this, play, this->itemAction)) { case EN_TALK_GIBUD_REQUESTED_ITEM_MET: player->actor.textId = 0x138A; this->textId = 0x138A; @@ -751,7 +752,7 @@ void EnTalkGibud_CheckPresentedItem(EnTalkGibud* this, PlayState* play) { break; } func_801477B4(play); - } else if (this->itemActionParam < PLAYER_AP_NONE) { + } else if (this->itemAction <= PLAYER_IA_MINUS1) { Message_StartTextbox(play, 0x1389, &this->actor); this->textId = 0x1389; } @@ -787,7 +788,7 @@ void EnTalkGibud_PassiveIdle(EnTalkGibud* this, PlayState* play) { } void EnTalkGibud_SetupTalk(EnTalkGibud* this) { - this->itemActionParam = PLAYER_AP_NONE; + this->itemAction = PLAYER_IA_NONE; this->actionFunc = EnTalkGibud_Talk; } @@ -822,7 +823,7 @@ void EnTalkGibud_Talk(EnTalkGibud* this, PlayState* play) { if (!requestedItem->isBottledItem) { Inventory_ChangeAmmo(requestedItem->item, -requestedItem->amount); } else { - func_80123D50(play, player, ITEM_BOTTLE, PLAYER_AP_BOTTLE); + Player_UpdateBottleHeld(play, player, ITEM_BOTTLE, PLAYER_IA_BOTTLE); } player->stateFlags1 |= PLAYER_STATE1_20; player->stateFlags1 |= PLAYER_STATE1_20000000; diff --git a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.h b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.h index 4d11e6c15..d887b1c0d 100644 --- a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.h +++ b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.h @@ -19,7 +19,7 @@ typedef struct EnTalkGibud { /* 0x1D8 */ Vec3f limbPos[15]; /* 0x28C */ s32 limbIndex; /* 0x290 */ s32 requestedItemIndex; - /* 0x294 */ s32 itemActionParam; + /* 0x294 */ PlayerItemAction itemAction; /* 0x298 */ s32 switchFlag; /* 0x29C */ f32 drawDmgEffAlpha; /* 0x2A0 */ f32 drawDmgEffScale; diff --git a/src/overlays/actors/ovl_En_Tanron1/z_en_tanron1.c b/src/overlays/actors/ovl_En_Tanron1/z_en_tanron1.c index d6089e5b5..fec6a2d3b 100644 --- a/src/overlays/actors/ovl_En_Tanron1/z_en_tanron1.c +++ b/src/overlays/actors/ovl_En_Tanron1/z_en_tanron1.c @@ -149,7 +149,7 @@ void EnTanron1_Update(Actor* thisx, PlayState* play) { break; } - if ((player->itemActionParam == 7) && (player->unk_B28 != 0)) { + if ((player->heldItemAction == PLAYER_IA_STICK) && (player->unk_B28 != 0)) { this->unk_14C.x = player->meleeWeaponInfo[0].tip.x; this->unk_14C.y = player->meleeWeaponInfo[0].tip.y; this->unk_14C.z = player->meleeWeaponInfo[0].tip.z; diff --git a/src/overlays/actors/ovl_En_Tanron2/z_en_tanron2.c b/src/overlays/actors/ovl_En_Tanron2/z_en_tanron2.c index 1c46247ba..332560403 100644 --- a/src/overlays/actors/ovl_En_Tanron2/z_en_tanron2.c +++ b/src/overlays/actors/ovl_En_Tanron2/z_en_tanron2.c @@ -143,7 +143,7 @@ void EnTanron2_Init(Actor* thisx, PlayState* play) { Collider_InitAndSetCylinder(play, &this->collider1, &this->actor, &sCylinderInit1); Collider_InitAndSetCylinder(play, &this->collider2, &this->actor, &sCylinderInit2); - if ((KREG(64) != 0) || (gSaveContext.eventInf[6] & 1)) { + if ((KREG(64) != 0) || CHECK_EVENTINF(EVENTINF_60)) { func_80BB69C0(this); } else { func_80BB6F64(this); @@ -428,8 +428,8 @@ void func_80BB7578(EnTanron2* this, PlayState* play) { func_80BB6B80(this); this->unk_158 = 1; Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_IKURA_DAMAGE); - if ((player->unk_730 != 0) && (&this->actor != player->unk_730)) { - player->unk_730 = &this->actor; + if ((player->targetedActor != NULL) && (&this->actor != player->targetedActor)) { + player->targetedActor = &this->actor; play->actorCtx.targetContext.arrowPointedActor = &this->actor; play->actorCtx.targetContext.targetedActor = &this->actor; } diff --git a/src/overlays/actors/ovl_En_Tanron3/z_en_tanron3.c b/src/overlays/actors/ovl_En_Tanron3/z_en_tanron3.c index 3d831913e..d991ab323 100644 --- a/src/overlays/actors/ovl_En_Tanron3/z_en_tanron3.c +++ b/src/overlays/actors/ovl_En_Tanron3/z_en_tanron3.c @@ -232,7 +232,7 @@ void EnTanron3_Live(EnTanron3* this, PlayState* play) { // on attacking the player; in that case, this code will make it turn in the // opposite direction and swim away. In both cases, the fish's target y-position // will be slightly above the halfway point of the water. - atanTemp = Math_FAtan2F(this->targetPos.z, this->targetPos.x); + atanTemp = Math_Atan2S_XY(this->targetPos.z, this->targetPos.x); Matrix_RotateYS(atanTemp, MTXMODE_NEW); Matrix_MultVecZ(700.0f, &this->targetPos); this->targetPos.y = 250.0f; @@ -259,9 +259,9 @@ void EnTanron3_Live(EnTanron3* this, PlayState* play) { // Rotate the fish to look towards its target xzDistance = sqrtf(SQ(xDistance) + SQ(zDistance)); - atanTemp = Math_FAtan2F(xzDistance, -yDistance); + atanTemp = Math_Atan2S_XY(xzDistance, -yDistance); Math_ApproachS(&this->actor.world.rot.x, atanTemp, this->rotationScale, this->rotationStep); - atanTemp = Math_FAtan2F(zDistance, xDistance); + atanTemp = Math_Atan2S_XY(zDistance, xDistance); Math_SmoothStepToS(&this->actor.world.rot.y, atanTemp, this->rotationScale, this->rotationStep, 0); Math_ApproachS(&this->rotationStep, this->targetRotationStep, 1, 0x100); @@ -304,7 +304,7 @@ void EnTanron3_Live(EnTanron3* this, PlayState* play) { if (Rand_ZeroOne() < 0.5f) { this->targetShapeRotation.y = (s16)Rand_ZeroFloat(0x10000); } - this->actor.world.rot.y = Math_FAtan2F(this->actor.world.pos.z, this->actor.world.pos.x) + + this->actor.world.rot.y = Math_Atan2S_XY(this->actor.world.pos.z, this->actor.world.pos.x) + (s16)randPlusMinusPoint5Scaled(0xCE20); } @@ -343,8 +343,8 @@ void EnTanron3_SetupDie(EnTanron3* this, PlayState* play) { xDistance = this->actor.world.pos.x - player->actor.world.pos.x; yDistance = this->actor.world.pos.y - player->actor.world.pos.y + 30.0f; zDistance = this->actor.world.pos.z - player->actor.world.pos.z; - this->actor.world.rot.x = Math_FAtan2F(sqrtf(SQ(xDistance) + SQ(zDistance)), -yDistance); - this->actor.world.rot.y = Math_FAtan2F(zDistance, xDistance); + this->actor.world.rot.x = Math_Atan2S_XY(sqrtf(SQ(xDistance) + SQ(zDistance)), -yDistance); + this->actor.world.rot.y = Math_Atan2S_XY(zDistance, xDistance); this->workTimer[WORK_TIMER_DIE] = 6; this->actor.speedXZ = 10.0f; Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_KONB_MINI_DEAD); @@ -367,8 +367,8 @@ void EnTanron3_CheckCollisions(EnTanron3* this, PlayState* play) { if (player->actor.world.pos.y > 350.0f) { if (this->atCollider.base.atFlags & AT_HIT) { this->atCollider.base.atFlags &= ~AT_HIT; - func_800B8D50(play, NULL, 3.0f, Math_FAtan2F(-player->actor.world.pos.z, -player->actor.world.pos.x), 5.0f, - 0); + func_800B8D50(play, NULL, 3.0f, Math_Atan2S_XY(-player->actor.world.pos.z, -player->actor.world.pos.x), + 5.0f, 0); } } if (this->acCollider.base.acFlags & AC_HIT) { diff --git a/src/overlays/actors/ovl_En_Test/z_en_test.c b/src/overlays/actors/ovl_En_Test/z_en_test.c index 95fdce4e1..7f0a3e971 100644 --- a/src/overlays/actors/ovl_En_Test/z_en_test.c +++ b/src/overlays/actors/ovl_En_Test/z_en_test.c @@ -250,7 +250,7 @@ s32 EnTest_OverrideKeyframeDraw(PlayState* play, SkeletonInfo* skeletonInfo, s32 void EnTest_Draw(Actor* thisx, PlayState* play) { EnTest* this = THIS; - Mtx* sp28; + Mtx* mtx; s32 sp2C = this->unk_208 - 1; if (sp2C >= 29) { @@ -263,11 +263,11 @@ void EnTest_Draw(Actor* thisx, PlayState* play) { AnimatedMat_DrawStep(play, Lib_SegmentedToVirtual(gameplay_keep_Matanimheader_06B6A0), sp2C); } - sp28 = GRAPH_ALLOC(play->state.gfxCtx, ALIGN16(this->skeletonInfo.unk_18->unk_1 * sizeof(Mtx))); + mtx = GRAPH_ALLOC(play->state.gfxCtx, this->skeletonInfo.unk_18->unk_1 * sizeof(Mtx)); - if (sp28 != NULL) { + if (mtx != NULL) { func_8012C2DC(play->state.gfxCtx); - func_8018450C(play, &this->skeletonInfo, sp28, EnTest_OverrideKeyframeDraw, NULL, thisx); + func_8018450C(play, &this->skeletonInfo, mtx, EnTest_OverrideKeyframeDraw, NULL, thisx); func_80863048(play, this->unk_20C); } } diff --git a/src/overlays/actors/ovl_En_Test3/z_en_test3.c b/src/overlays/actors/ovl_En_Test3/z_en_test3.c index a5777e9d4..a459fc1d5 100644 --- a/src/overlays/actors/ovl_En_Test3/z_en_test3.c +++ b/src/overlays/actors/ovl_En_Test3/z_en_test3.c @@ -4,17 +4,171 @@ * Description: Kafei */ +#include "prevent_bss_reordering.h" #include "z_en_test3.h" +#include "objects/object_test3/object_test3.h" +#include "overlays/actors/ovl_En_Door/z_en_door.h" +#include "objects/gameplay_keep/gameplay_keep.h" +#include "objects/object_mask_ki_tan/object_mask_ki_tan.h" #define FLAGS (ACTOR_FLAG_10 | ACTOR_FLAG_20 | ACTOR_FLAG_4000000) #define THIS ((EnTest3*)thisx) -void EnTest3_Init(Actor* thisx, PlayState* play); -void EnTest3_Destroy(Actor* thisx, PlayState* play); -void EnTest3_Update(Actor* thisx, PlayState* play); +typedef struct { + /* 0x0 */ s8 unk_0; + /* 0x1 */ s8 unk_1_0 : 4; + /* 0x1 */ s8 unk_1_4 : 4; +} struct_80A41828; // size = 0x2 + +typedef s32 (*EnTest3UnkFunc2)(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput); +typedef s32 (*EnTest3UnkFunc)(EnTest3* this, PlayState* play); + +typedef struct { + /* 0x0 */ EnTest3UnkFunc2 unk_0; + /* 0x4 */ EnTest3UnkFunc unk_4; +} struct_80A40678; // size = 0x8 + +typedef struct { + /* 0x0 */ EnTest3ActionFunc unk_0; // might not actually be an action function + /* 0x4 */ EnTest3ActionFunc actionFunc; +} struct_80A4168C; // size = 0x8 + +// Main functions +void EnTest3_Init(Actor* thisx, PlayState* play2); +void EnTest3_Destroy(Actor* thisx, PlayState* play2); +void EnTest3_Update(Actor* thisx, PlayState* play2); +void EnTest3_Draw(Actor* thisx, PlayState* play2); + +// Functions used in D_80A4169C and D_80A416C0. Purpose unclear, but related to Schedule +s32 func_80A3E870(EnTest3* this, PlayState* play); +s32 func_80A3E884(EnTest3* this, PlayState* play); +s32 func_80A3E898(EnTest3* this, PlayState* play); +s32 func_80A3E960(EnTest3* this, PlayState* play); +s32 func_80A3E97C(EnTest3* this, PlayState* play); +s32 func_80A3E9DC(EnTest3* this, PlayState* play); +s32 func_80A3EA30(EnTest3* this, PlayState* play); +s32 func_80A3EAC4(EnTest3* this, PlayState* play); +s32 func_80A3EAF8(EnTest3* this, PlayState* play); +s32 func_80A3EB8C(EnTest3* this, PlayState* play); +s32 func_80A3EBFC(EnTest3* this, PlayState* play); +s32 func_80A3EC30(EnTest3* this, PlayState* play); +s32 func_80A3EC44(EnTest3* this, PlayState* play); + +// Functions used in D_80A417E8. Purpose unclear, but related to Schedule +s32 func_80A3F080(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput); +s32 func_80A3F09C(EnTest3* this, PlayState* play); +s32 func_80A3F62C(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput); +s32 func_80A3F73C(EnTest3* this, PlayState* play); +s32 func_80A3F8D4(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput); +s32 func_80A3F9A4(EnTest3* this, PlayState* play); +s32 func_80A3F9E4(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput); +s32 func_80A3FA58(EnTest3* this, PlayState* play); +s32 func_80A3FBCC(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput); +s32 func_80A3FBE8(EnTest3* this, PlayState* play); +s32 func_80A3FDE4(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput); +s32 func_80A3FE20(EnTest3* this, PlayState* play); +s32 func_80A3FF10(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput); +s32 func_80A3FFD0(EnTest3* this, PlayState* play2); +s32 func_80A40098(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput); +s32 func_80A40230(EnTest3* this, PlayState* play); + +// Action functions +void func_80A40678(EnTest3* this, PlayState* play); +void func_80A40824(EnTest3* this, PlayState* play); +void func_80A4084C(EnTest3* this, PlayState* play); +void func_80A40908(EnTest3* this, PlayState* play); +void func_80A40A6C(EnTest3* this, PlayState* play); + +static u8 sScheduleScript[] = { + /* 0x000 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(1, 0x046 - 0x004), + /* 0x004 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ALLEY, 0x020 - 0x008), + /* 0x008 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 50, 7, 20, 0x01A - 0x00E), + /* 0x00E */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(7, 30, 0x019 - 0x012), + /* 0x012 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_04, 0x017 - 0x016), + /* 0x016 */ SCHEDULE_CMD_RET_NONE(), + /* 0x017 */ SCHEDULE_CMD_RET_VAL_S(10), + /* 0x019 */ SCHEDULE_CMD_RET_NONE(), + /* 0x01A */ SCHEDULE_CMD_RET_TIME(6, 50, 7, 20, 15), + /* 0x020 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x045 - 0x024), + /* 0x024 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 6, 30, 0x03F - 0x02A), + /* 0x02A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 30, 6, 35, 0x03D - 0x030), + /* 0x030 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 35, 6, 50, 0x037 - 0x036), + /* 0x036 */ SCHEDULE_CMD_RET_NONE(), + /* 0x037 */ SCHEDULE_CMD_RET_TIME(6, 35, 6, 50, 14), + /* 0x03D */ SCHEDULE_CMD_RET_VAL_S(1), + /* 0x03F */ SCHEDULE_CMD_RET_TIME(6, 0, 6, 30, 13), + /* 0x045 */ SCHEDULE_CMD_RET_NONE(), + /* 0x046 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x09B - 0x04A), + /* 0x04A */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_02, 0x058 - 0x04E), + /* 0x04E */ SCHEDULE_CMD_BRANCH_S(0x0), + /* 0x050 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_04, 0x055 - 0x054), + /* 0x054 */ SCHEDULE_CMD_RET_NONE(), + /* 0x055 */ SCHEDULE_CMD_RET_VAL_L(10), + /* 0x058 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ALLEY, 0x081 - 0x05C), + /* 0x05C */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x050 - 0x060), + /* 0x060 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 5, 15, 25, 0x07B - 0x066), + /* 0x066 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 25, 15, 40, 0x079 - 0x06C), + /* 0x06C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 40, 16, 0, 0x073 - 0x072), + /* 0x072 */ SCHEDULE_CMD_RET_NONE(), + /* 0x073 */ SCHEDULE_CMD_RET_TIME(15, 40, 16, 0, 17), + /* 0x079 */ SCHEDULE_CMD_RET_VAL_S(1), + /* 0x07B */ SCHEDULE_CMD_RET_TIME(15, 5, 15, 25, 16), + /* 0x081 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_AYASHIISHOP, 0x09A - 0x085), + /* 0x085 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 55, 16, 10, 0x094 - 0x08B), + /* 0x08B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 10, 22, 10, 0x092 - 0x091), + /* 0x091 */ SCHEDULE_CMD_RET_NONE(), + /* 0x092 */ SCHEDULE_CMD_RET_VAL_S(3), + /* 0x094 */ SCHEDULE_CMD_RET_TIME(15, 55, 16, 10, 12), + /* 0x09A */ SCHEDULE_CMD_RET_NONE(), + /* 0x09B */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(3, 0x138 - 0x0A0), + /* 0x0A0 */ SCHEDULE_CMD_CHECK_FLAG_L(WEEKEVENTREG_33_08, 0x12C - 0x0A5), + /* 0x0A5 */ SCHEDULE_CMD_CHECK_FLAG_L(WEEKEVENTREG_79_40, 0x12C - 0x0AA), + /* 0x0AA */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_SECOM, 0x0B0 - 0x0AE), + /* 0x0AE */ SCHEDULE_CMD_RET_VAL_S(7), + /* 0x0B0 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_20, 0x0DD - 0x0B4), + /* 0x0B4 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_IKANA, 0x0DC - 0x0B8), + /* 0x0B8 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_08, 0x0BE - 0x0BC), + /* 0x0BC */ SCHEDULE_CMD_RET_VAL_S(5), + /* 0x0BE */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_61_08, 0x0DA - 0x0C2), + /* 0x0C2 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_10, 0x0CD - 0x0C6), + /* 0x0C6 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(19, 0, 0x0CB - 0x0CA), + /* 0x0CA */ SCHEDULE_CMD_RET_NONE(), + /* 0x0CB */ SCHEDULE_CMD_RET_VAL_S(5), + /* 0x0CD */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(19, 0, 19, 10, 0x0D4 - 0x0D3), + /* 0x0D3 */ SCHEDULE_CMD_RET_NONE(), + /* 0x0D4 */ SCHEDULE_CMD_RET_TIME(19, 0, 19, 10, 20), + /* 0x0DA */ SCHEDULE_CMD_RET_VAL_S(5), + /* 0x0DC */ SCHEDULE_CMD_RET_NONE(), + /* 0x0DD */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_IKANA, 0x0E8 - 0x0E1), + /* 0x0E1 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_90_02, 0x0E7 - 0x0E5), + /* 0x0E5 */ SCHEDULE_CMD_RET_VAL_S(9), + /* 0x0E7 */ SCHEDULE_CMD_RET_NONE(), + /* 0x0E8 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x0F9 - 0x0EC), + /* 0x0EC */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(4, 0, 4, 10, 0x0F3 - 0x0F2), + /* 0x0F2 */ SCHEDULE_CMD_RET_NONE(), + /* 0x0F3 */ SCHEDULE_CMD_RET_TIME(4, 0, 4, 10, 11), + /* 0x0F9 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x12B - 0x0FD), + /* 0x0FD */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(4, 10, 4, 30, 0x125 - 0x103), + /* 0x103 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_01, 0x11C - 0x107), + /* 0x107 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(4, 30, 4, 45, 0x116 - 0x10D), + /* 0x10D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(4, 45, 6, 0, 0x114 - 0x113), + /* 0x113 */ SCHEDULE_CMD_RET_NONE(), + /* 0x114 */ SCHEDULE_CMD_RET_VAL_S(6), + /* 0x116 */ SCHEDULE_CMD_RET_TIME(4, 30, 4, 45, 19), + /* 0x11C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(4, 30, 6, 0, 0x123 - 0x122), + /* 0x122 */ SCHEDULE_CMD_RET_NONE(), + /* 0x123 */ SCHEDULE_CMD_RET_VAL_S(8), + /* 0x125 */ SCHEDULE_CMD_RET_TIME(4, 10, 4, 30, 18), + /* 0x12B */ SCHEDULE_CMD_RET_NONE(), + /* 0x12C */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_AYASHIISHOP, 0x137 - 0x130), + /* 0x130 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_08, 0x135 - 0x134), + /* 0x134 */ SCHEDULE_CMD_RET_NONE(), + /* 0x135 */ SCHEDULE_CMD_RET_VAL_S(4), + /* 0x137 */ SCHEDULE_CMD_RET_NONE(), + /* 0x138 */ SCHEDULE_CMD_RET_NONE(), +}; -#if 0 ActorInit En_Test3_InitVars = { ACTOR_EN_TEST3, ACTORCAT_NPC, @@ -27,113 +181,1123 @@ ActorInit En_Test3_InitVars = { (ActorFunc)NULL, }; -#endif +static struct_80A4168C D_80A4168C[] = { + { func_80A40A6C, NULL }, + { NULL, NULL }, +}; -extern UNK_TYPE D_0600EDD0; -extern UNK_TYPE D_0600F7EC; +static EnTest3UnkFunc D_80A4169C[] = { + func_80A3E898, func_80A3E898, func_80A3E884, func_80A3E898, func_80A3E898, + func_80A3EA30, func_80A3E898, func_80A3E960, func_80A3E870, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3E7E0.s") +static EnTest3UnkFunc D_80A416C0[] = { + func_80A3EAC4, func_80A3EAF8, func_80A3EBFC, func_80A3EC44, + func_80A3EC30, func_80A3E9DC, func_80A3EB8C, func_80A3E97C, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3E80C.s") +static PlayerAgeProperties sAgeProperties = { + 40.0f, + 60.0f, + 11.0f / 17.0f, + 71.0f, + 50.0f, + 49.0f, + 39.0f, + 27.0f, + 19.0f, + 22.0f, + 32.4f, + 32.0f, + 48.0f, + 11.0f / 17.0f * 70.0f, + 14.0f, + 12.0f, + 55.0f, + { 0xFFE8, 0x0DED, 0x036C }, + { { 0xFFE8, 0x0D92, 0x035E }, { 0xFFE8, 0x1371, 0x03A9 }, { 0x0008, 0x1256, 0x017C }, { 0x0009, 0x17EA, 0x0167 } }, + { { 0xFFE8, 0x1371, 0x03A9 }, { 0xFFE8, 0x195F, 0x03A9 }, { 0x0009, 0x17EA, 0x0167 }, { 0x0009, 0x1E0D, 0x017C } }, + { { 0x0008, 0x1256, 0x017C }, { 0x0009, 0x17EA, 0x0167 }, { 0xF9C8, 0x1256, 0x017C }, { 0xF9C9, 0x17EA, 0x0167 } }, + 0x0020, + 0x0000, + 22.0f, + 29.4343f, + &gPlayerAnim_clink_demo_Tbox_open, + &gPlayerAnim_clink_demo_goto_future, + &gPlayerAnim_clink_demo_return_to_future, + &gPlayerAnim_clink_normal_climb_startA, + &gPlayerAnim_clink_normal_climb_startB, + { &gPlayerAnim_clink_normal_climb_upL, &gPlayerAnim_clink_normal_climb_upR, &gPlayerAnim_link_normal_Fclimb_upL, + &gPlayerAnim_link_normal_Fclimb_upR }, + { &gPlayerAnim_link_normal_Fclimb_sideL, &gPlayerAnim_link_normal_Fclimb_sideR }, + { &gPlayerAnim_clink_normal_climb_endAL, &gPlayerAnim_clink_normal_climb_endAR }, + { &gPlayerAnim_clink_normal_climb_endBR, &gPlayerAnim_clink_normal_climb_endBL }, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3E870.s") +static EffectBlureInit2 sBlureInit = { + 0, 8, 0, { 255, 255, 255, 255 }, { 255, 255, 255, 64 }, { 255, 255, 255, 0 }, { 255, 255, 255, 0 }, 4, + 0, 2, 0, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3E884.s") +static EffectTireMarkInit sTireMarkInit = { + 0, + 63, + { 0, 0, 15, 100 }, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3E898.s") +static struct_80A40678 D_80A417E8[] = { + { func_80A3F080, func_80A3F09C }, { func_80A40098, func_80A40230 }, { func_80A3F62C, func_80A3F73C }, + { func_80A3F8D4, func_80A3F9A4 }, { func_80A3F9E4, func_80A3FA58 }, { func_80A3FBCC, func_80A3FBE8 }, + { func_80A3FDE4, func_80A3FE20 }, { func_80A3FF10, func_80A3FFD0 }, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3E960.s") +static struct_80A41828 D_80A41828[] = { + { 0, 0, 0 }, { 3, -2, 0 }, { 2, -1, 0 }, { 2, -1, 1 }, { 2, -1, 2 }, { 2, 1, 3 }, { 2, -2, 4 }, { 5, 1, 0 }, + { 7, -1, 0 }, { 6, 2, 0 }, { 4, 4, 0 }, { 1, 1, 0 }, { 1, 1, 0 }, { 1, 2, 0 }, { 1, 1, 0 }, { 1, 1, 0 }, + { 1, 2, 0 }, { 1, 3, 0 }, { 1, 1, 0 }, { 1, 2, 0 }, { 1, 1, 0 }, { 0, 0, 0 }, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3E97C.s") +static EnTest3_struct_D78 D_80A41854[] = { + { 4, 0, 0x2B25 }, { 1, 0, 0x2969 }, { 3, 1, 0x296A }, { 1, 0, 0x296B }, { 5, 1, 0x0000 }, { 8, 0, 0x0000 }, + { 4, 0, 0x2976 }, { 6, 0, 0x2977 }, { 7, 10, 0x2978 }, { 4, 1, 0x0000 }, { 4, 0, 0x2968 }, { 4, 0, 0x297A }, + { 1, 0, 0x145D }, { 1, 0, 0x145E }, { 5, 1, 0x145F }, { 1, 0, 0x145F }, { 5, 0, 0x0000 }, { 4, 0, 0x1460 }, + { 4, 0, 0x145C }, { 4, 0, 0x2913 }, { 4, 0, 0x1465 }, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3E9DC.s") +s32 D_80A41D20; +s32 D_80A41D24; +Input sEnTest3_Input; +f32 D_80A41D40; +s16 D_80A41D44; +s32 D_80A41D48; +Vec3f D_80A41D50; +s32 D_80A41D5C; +s32 D_80A41D60; +s32 D_80A41D64; +s32 D_80A41D68; +Vec3f* D_80A41D6C; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3EA30.s") +s32 func_80A3E7E0(EnTest3* this, EnTest3ActionFunc actionFunc) { + if (actionFunc == this->unk_D94) { + return false; + } else { + this->unk_D94 = actionFunc; + this->unk_D8A = 0; + this->unk_D88 = 0; + return true; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3EAC4.s") +s32 func_80A3E80C(EnTest3* this, PlayState* play, s32 arg2) { + s32 pad; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3EAF8.s") + D_80A4168C[arg2].unk_0(this, play); + if (D_80A4168C[arg2].actionFunc == NULL) { + // D_80A4168C[arg2].actionFunc is always NULL + return false; + } else { + func_80A3E7E0(this, D_80A4168C[arg2].actionFunc); + return true; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3EB8C.s") +s32 func_80A3E870(EnTest3* this, PlayState* play) { + return true; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3EBFC.s") +s32 func_80A3E884(EnTest3* this, PlayState* play) { + return false; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3EC30.s") +s32 func_80A3E898(EnTest3* this, PlayState* play) { + u16 textId = this->unk_D78->textId; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3EC44.s") + if ((this->unk_D78->unk_0 == 4) && CHECK_WEEKEVENTREG(WEEKEVENTREG_51_08)) { + func_80151BB4(play, 2); + } + if (textId == 0xFFFF) { + func_801477B4(play); + } else if (textId) { // != 0 + func_80151938(play, textId); + } + if (textId == 0x296B) { + LinkAnimation_PlayOnceSetSpeed(play, &this->player.skelAnime, &gPlayerAnim_al_yareyare, 2.0f / 3.0f); + } + return false; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3ECEC.s") +s32 func_80A3E960(EnTest3* this, PlayState* play) { + this->unk_D8C = this->unk_D78->unk_1; + return false; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3ED24.s") +s32 func_80A3E97C(EnTest3* this, PlayState* play) { + if (DECR(this->unk_D8C) == 0) { + Message_StartTextbox(play, this->unk_D78->textId, NULL); + return true; + } + return false; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/EnTest3_Init.s") +s32 func_80A3E9DC(EnTest3* this, PlayState* play) { + if (ActorCutscene_GetCanPlayNext(this->unk_D8D)) { + ActorCutscene_StartAndSetUnkLinkFields(this->unk_D8D, &this->player.actor); + return true; + } else { + ActorCutscene_SetIntentToPlay(this->unk_D8D); + return false; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/EnTest3_Destroy.s") +s32 func_80A3EA30(EnTest3* this, PlayState* play) { + if (this->unk_D78->textId == 0x145F) { + Actor* hideoutDoor = SubS_FindActor(play, NULL, ACTORCAT_BG, ACTOR_BG_IKNV_OBJ); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F080.s") + if (hideoutDoor != NULL) { + this->player.targetedActor = hideoutDoor; + } + } + if (this->unk_D78->unk_1 != 0) { + ActorCutscene_Stop(0x7C); + ActorCutscene_SetIntentToPlay(this->unk_D8D); + play->msgCtx.msgMode = 0x44; + } + return false; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F09C.s") +s32 func_80A3EAC4(EnTest3* this, PlayState* play) { + if (Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) { + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F0B0.s") +s32 func_80A3EAF8(EnTest3* this, PlayState* play) { + if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { + if (this->unk_D78->textId == 0x145F) { + ActorCutscene_Stop(this->unk_D8D); + this->unk_D8D = 0x7C; + ActorCutscene_SetIntentToPlay(this->unk_D8D); + this->player.targetedActor = &GET_PLAYER(play)->actor; + } + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F114.s") +s32 func_80A3EB8C(EnTest3* this, PlayState* play) { + if (func_80A3EAF8(this, play)) { + Actor* hideoutObject = SubS_FindActor(play, NULL, ACTORCAT_ITEMACTION, ACTOR_OBJ_NOZOKI); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F15C.s") + if (hideoutObject != NULL) { + this->player.targetedActor = hideoutObject; + } + play->msgCtx.msgMode = 0x44; + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F2BC.s") +s32 func_80A3EBFC(EnTest3* this, PlayState* play) { + if (Message_GetState(&play->msgCtx) == TEXT_STATE_CLOSING) { + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F384.s") +s32 func_80A3EC30(EnTest3* this, PlayState* play) { + return 0; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F4A4.s") +s32 func_80A3EC44(EnTest3* this, PlayState* play) { + if ((Message_GetState(&play->msgCtx) == TEXT_STATE_CHOICE) && Message_ShouldAdvance(play)) { + if (play->msgCtx.choiceIndex != 0) { + func_8019F230(); + } else { + func_8019F208(); + } + if (play->msgCtx.choiceIndex != 0) { + return 1; + } else { + s32 ret = this->unk_D78->unk_1 + 1; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F534.s") + return ret; + } + } + return 0; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F5A4.s") +s32 func_80A3ECEC(EnTest3* this, PlayState* play) { + return D_80A4169C[this->unk_D78->unk_0](this, play); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F62C.s") +s32 func_80A3ED24(EnTest3* this, PlayState* play) { + s32 temp = D_80A416C0[this->unk_D78->unk_0](this, play); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F73C.s") + if (temp != 0) { + this->unk_D78 = &this->unk_D78[temp]; + return func_80A3ECEC(this, play); + } + return false; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F8D4.s") +void EnTest3_Init(Actor* thisx, PlayState* play2) { + PlayState* play = play2; + EnTest3* this = THIS; + Camera* subCam; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F9A4.s") + if (D_80A41D24) { + Actor_Kill(&this->player.actor); + return; + } + D_80A41D24 = true; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3F9E4.s") + this->player.actor.room = -1; + this->player.unk_A86 = -1; + this->player.transformation = PLAYER_FORM_HUMAN; + this->player.ageProperties = &sAgeProperties; + this->player.heldItemAction = PLAYER_IA_NONE; + this->player.heldItemId = ITEM_OCARINA; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3FA58.s") + Player_SetModelGroup(&this->player, 3); + play->playerInit(&this->player, play, &object_test3_Skel_00F7EC); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3FBCC.s") + Effect_Add(play, &this->player.meleeWeaponEffectIndex[0], EFFECT_BLURE2, 0, 0, &sBlureInit); + Effect_Add(play, &this->player.meleeWeaponEffectIndex[1], EFFECT_BLURE2, 0, 0, &sBlureInit); + Effect_Add(play, &this->player.meleeWeaponEffectIndex[2], EFFECT_TIRE_MARK, 0, 0, &sTireMarkInit); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3FBE8.s") + this->player.maskObjectSegment = ZeldaArena_Malloc(0x3800); + play->func_18780(&this->player, play); + this->unk_D90 = GET_PLAYER(play); + this->player.giObjectSegment = this->unk_D90->giObjectSegment; + this->player.tatlActor = this->unk_D90->tatlActor; + if ((CURRENT_DAY != 3) || CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08) || !CHECK_WEEKEVENTREG(WEEKEVENTREG_51_08)) { + this->player.currentMask = PLAYER_MASK_KEATON; + } + this->player.prevMask = this->player.currentMask; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3FDE4.s") + if (play->sceneId == SCENE_SECOM) { + this->subCamId = Play_CreateSubCamera(play); + subCam = Play_GetCamera(play, this->subCamId); + Camera_InitPlayerSettings(subCam, &this->player); + Camera_SetFlags(subCam, CAM_STATE_0 | CAM_STATE_6); + Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_WAIT); + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3FE20.s") + this->player.actor.colChkInfo.cylRadius = 20; + this->player.actor.colChkInfo.cylHeight = 60; + this->player.actor.colChkInfo.health = 255; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3FF10.s") + if (KAFEI_GET_PARAM_1E0(&this->player.actor) == 0) { + func_80A3E7E0(this, func_80A40824); + } else { + func_80A3E7E0(this, func_80A40678); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A3FFD0.s") +void EnTest3_Destroy(Actor* thisx, PlayState* play2) { + PlayState* play = play2; + EnTest3* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A40098.s") + Effect_Destroy(play, this->player.meleeWeaponEffectIndex[0]); + Effect_Destroy(play, this->player.meleeWeaponEffectIndex[1]); + Effect_Destroy(play, this->player.meleeWeaponEffectIndex[2]); + Collider_DestroyCylinder(play, &this->player.cylinder); + Collider_DestroyCylinder(play, &this->player.shieldCylinder); + Collider_DestroyQuad(play, &this->player.meleeWeaponQuads[0]); + Collider_DestroyQuad(play, &this->player.meleeWeaponQuads[1]); + Collider_DestroyQuad(play, &this->player.shieldQuad); + ZeldaArena_Free(this->player.maskObjectSegment); + func_800FE498(); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A40230.s") +s32 func_80A3F080(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput) { + return true; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A40678.s") +s32 func_80A3F09C(EnTest3* this, PlayState* play) { + this->player.actor.draw = NULL; + return true; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A40824.s") +void func_80A3F0B0(EnTest3* this, PlayState* play) { + func_800BC154(play, &play->actorCtx, &this->unk_D90->actor, 2); + func_800BC154(play, &play->actorCtx, &this->player.actor, 4); + this->unk_D90->stateFlags1 &= ~PLAYER_STATE1_20; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A4084C.s") +void func_80A3F114(EnTest3* this, PlayState* play) { + if (this->player.csMode != 0) { + play->startPlayerCutscene(play, &this->player, 6); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A40908.s") +s32 func_80A3F15C(EnTest3* this, PlayState* play, struct_80A41828* arg2) { + s32 pathIndex; + Path* path; + Vec3s* curPathPoint; + Vec3s* nextPathPoint; + Vec3f curPathPos; + Vec3f nextPathPos; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A409D4.s") + pathIndex = ABS_ALT(arg2->unk_1_0) - 1; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A40A6C.s") + if (pathIndex >= 0) { + path = SubS_GetAdditionalPath(play, KAFEI_GET_PARAM_1F(&this->player.actor), pathIndex); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/EnTest3_Update.s") + curPathPoint = Lib_SegmentedToVirtual(path->points); + if (arg2->unk_1_0 > 0) { + nextPathPoint = curPathPoint + 1; + } else { + curPathPoint += path->count - 1; + nextPathPoint = curPathPoint - 1; + } + Math_Vec3s_ToVec3f(&curPathPos, curPathPoint); + Math_Vec3s_ToVec3f(&nextPathPos, nextPathPoint); + if (Math_Vec3f_DistXZ(&this->player.actor.world.pos, &curPathPos) > 10.0f) { + Math_Vec3f_Copy(&this->player.actor.world.pos, &curPathPos); + Math_Vec3f_Copy(&this->player.actor.home.pos, &curPathPos); + Math_Vec3f_Copy(&this->player.actor.prevPos, &curPathPos); + this->player.currentYaw = Math_Vec3f_Yaw(&this->player.actor.world.pos, &nextPathPos); + if (arg2->unk_1_0 < 0) { + this->player.currentYaw += 0x8000; + } + this->player.actor.shape.rot.y = this->player.currentYaw; + return true; + } + } + return false; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A40CF0.s") +Actor* func_80A3F2BC(PlayState* play, EnTest3* this, s32 actorId, s32 category, f32 arg4, f32 arg5) { + Actor* actor = play->actorCtx.actorLists[category].first; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A40F34.s") + while (actor != NULL) { + if (actorId == actor->id) { + f32 dy = this->player.actor.world.pos.y - actor->world.pos.y; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Test3/func_80A4129C.s") + if ((fabsf(dy) < arg5) && (Actor_XZDistanceBetweenActors(&this->player.actor, actor) < arg4)) { + return actor; + } + } + actor = actor->next; + } + return NULL; +} + +s32 func_80A3F384(EnTest3* this, PlayState* play) { + Player* player = GET_PLAYER(play); + EnDoor* door = (EnDoor*)func_80A3F2BC(play, this, ACTOR_EN_DOOR, ACTORCAT_DOOR, 55.0f, 20.0f); + Vec3f offset; + + if ((door != NULL) && (door->unk_1A1 == 0) && + ((player->doorType == 0) || (&door->dyna.actor != player->doorActor)) && + Actor_ActorAIsFacingActorB(&this->player.actor, &door->dyna.actor, 0x3000)) { + Actor_OffsetOfPointInActorCoords(&door->dyna.actor, &offset, &this->player.actor.world.pos); + this->player.doorType = 1; + this->player.doorDirection = (offset.z >= 0.0f) ? 1.0f : -1.0f; + this->player.doorActor = &door->dyna.actor; + this->player.unk_A86 = -1; + return true; + } + return false; +} + +s32 func_80A3F4A4(PlayState* play) { + return (Player_GetMask(play) == PLAYER_MASK_NONE) || (Player_GetMask(play) == PLAYER_MASK_BUNNY) || + (Player_GetMask(play) == PLAYER_MASK_POSTMAN) || (Player_GetMask(play) == PLAYER_MASK_KEATON) || + (Player_GetMask(play) == PLAYER_MASK_KAFEIS_MASK); +} + +void func_80A3F534(EnTest3* this, PlayState* play) { + if (!func_80A3F4A4(play)) { + this->unk_D78 = &D_80A41854[10]; + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_51_08)) { + this->unk_D78 = &D_80A41854[7]; + } else { + this->unk_D78 = &D_80A41854[1]; + } + this->unk_D8D = this->player.actor.cutscene; +} + +void func_80A3F5A4(EnTest3* this, PlayState* play) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_51_08) || !func_80A3F4A4(play)) { + this->unk_D78 = &D_80A41854[18]; + D_80A41D5C = false; + } else if (D_80A41D5C) { + this->unk_D78 = &D_80A41854[17]; + } else { + this->unk_D78 = &D_80A41854[12]; + } + this->unk_D8D = this->player.actor.cutscene; +} + +s32 func_80A3F62C(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput) { + static EnTest3_struct_D78* D_80A418A8[] = { + &D_80A41854[0], &D_80A41854[1], &D_80A41854[11], &D_80A41854[12], &D_80A41854[19], + }; + + if (((func_80A3F15C(this, play, arg2) || (this->unk_D88 >= 8)) && ((arg2->unk_1_4 == 1) || (arg2->unk_1_4 == 2))) || + (arg2->unk_1_4 == 4)) { + if (arg2->unk_1_4 == 4) { + this->player.actor.home.rot.y = 0x7FFF; + } else { + this->player.actor.home.rot.y = this->player.actor.shape.rot.y + 0x8000; + } + this->player.stateFlags2 |= PLAYER_STATE2_40000; + play->startPlayerCutscene(play, &this->player, -1); + } + this->unk_D78 = D_80A418A8[arg2->unk_1_4]; + return true; +} + +s32 func_80A3F73C(EnTest3* this, PlayState* play) { + if (Actor_ProcessTalkRequest(&this->player.actor, &play->state)) { + func_80A3E7E0(this, func_80A4084C); + this->player.targetedActor = &GET_PLAYER(play)->actor; + this->player.stateFlags2 &= ~PLAYER_STATE2_40000; + D_80A41D5C = true; + if ((this->unk_D78->unk_0 == 4) && CHECK_WEEKEVENTREG(WEEKEVENTREG_51_08)) { + func_80151BB4(play, 2); + } + } else { + if (play->actorCtx.flags & ACTORCTX_FLAG_4) { + play->actorCtx.flags &= ~ACTORCTX_FLAG_4; + this->player.stateFlags2 &= ~PLAYER_STATE2_40000; + this->unk_D90->stateFlags1 |= PLAYER_STATE1_20; + func_800BC154(play, &play->actorCtx, &this->unk_D90->actor, 4); + func_800BC154(play, &play->actorCtx, &this->player.actor, 2); + ActorCutscene_SetReturnCamera(this->subCamId); + play->startPlayerCutscene(play, &this->player, 7); + } + func_800B863C(&this->player.actor, play); + if (this->unk_D88 == 3) { + func_80A3F534(this, play); + } else if (this->unk_D88 == 5) { + func_80A3F5A4(this, play); + } + this->player.actor.textId = this->unk_D78->textId; + this->player.actor.flags |= (ACTOR_FLAG_1 | ACTOR_FLAG_8); + } + return false; +} + +s32 func_80A3F8D4(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput) { + Actor* postActor; + + func_80A3F15C(this, play, arg2); + if (((postActor = func_80A3F2BC(play, this, ACTOR_EN_PST, ACTORCAT_PROP, 100.0f, 20.0f)) != NULL) || + ((postActor = func_80A3F2BC(play, this, ACTOR_EN_PM, ACTORCAT_NPC, 100.0f, 20.0f)) != NULL)) { + this->player.actor.home.rot.y = Actor_YawBetweenActors(&this->player.actor, postActor); + } + play->startPlayerCutscene(play, &this->player, 0x61); + return true; +} + +s32 func_80A3F9A4(EnTest3* this, PlayState* play) { + Math_ScaledStepToS(&this->player.actor.shape.rot.y, this->player.actor.home.rot.y, 0x320); + this->player.currentYaw = this->player.actor.shape.rot.y; + return false; +} + +s32 func_80A3F9E4(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput) { + scheduleOutput->time0 = SCHEDULE_TIME_NOW; + scheduleOutput->time1 = (u16)(scheduleOutput->time0 + 70); + func_80A40098(this, play, arg2, scheduleOutput); + if (this->player.actor.xzDistToPlayer < 300.0f) { + this->unk_D8A = -1; + } else { + this->unk_D8A = 120; + } + return true; +} + +s32 func_80A3FA58(EnTest3* this, PlayState* play) { + s32 pad; + Player* player = GET_PLAYER(play); + u32 cond; + struct_80A41828 sp40; + ScheduleOutput scheduleOutput; + + if (player->stateFlags1 & PLAYER_STATE1_40) { + return false; + } + cond = func_80A40230(this, play); + if (this->unk_D8A > 0) { + this->unk_D8A--; + cond = cond && (this->player.actor.xzDistToPlayer < 200.0f); + if (cond || this->unk_D8A <= 0) { + func_80A3F114(this, play); + sp40.unk_1_0 = 5; + scheduleOutput.time0 = SCHEDULE_TIME_NOW; + scheduleOutput.time1 = (u16)(scheduleOutput.time0 + (cond ? 80 : 140)); + + func_80A40098(this, play, &sp40, &scheduleOutput); + this->unk_D8A = -40; + return false; + } + if (this->unk_D8A == 90) { + play->startPlayerCutscene(play, &this->player, 0x15); + } + } else { + this->unk_D8A++; + if (this->unk_D8A == 0) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_51_04); + this->unk_D88 = 0; + } + } + return false; +} + +s32 func_80A3FBCC(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput) { + return true; +} + +s32 func_80A3FBE8(EnTest3* this, PlayState* play) { + if (D_80A41D20 == 0) { + if (!Play_InCsMode(play)) { + D_80A41D20 = 1; + this->unk_D78 = &D_80A41854[20]; + this->unk_D8D = this->player.actor.cutscene; + this->player.actor.textId = this->unk_D78->textId; + } + } else if (D_80A41D20 == 1) { + if (this->unk_D8D >= 0) { + if (func_80A3E9DC(this, play)) { + this->unk_D8D = -1; + func_800FE484(); + } + } else if ((play->actorCtx.flags & ACTORCTX_FLAG_6) || (play->actorCtx.flags & ACTORCTX_FLAG_5)) { + this->unk_D8D = ActorCutscene_GetAdditionalCutscene(this->player.actor.cutscene); + SET_WEEKEVENTREG(WEEKEVENTREG_90_02); + if (play->actorCtx.flags & ACTORCTX_FLAG_5) { + this->unk_D8D = ActorCutscene_GetAdditionalCutscene(this->unk_D8D); + } + Audio_QueueSeqCmd(NA_BGM_STOP | 0x10000); + D_80A41D20 = 2; + } else { + func_80A3F73C(this, play); + } + } else if ((D_80A41D20 == 2) && func_80A3E9DC(this, play)) { + ActorCutscene_SetReturnCamera(CAM_ID_MAIN); + func_800FE498(); + if (((void)0, gSaveContext.save.time) > CLOCK_TIME(6, 0)) { + func_800FE658(TIME_TO_MINUTES_ALT_F(fabsf((s16) - ((void)0, gSaveContext.save.time)))); + } + if (play->actorCtx.flags & ACTORCTX_FLAG_6) { + SET_WEEKEVENTREG(WEEKEVENTREG_51_20); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_02); + } + D_80A41D20 = 3; + } + return false; +} + +s32 func_80A3FDE4(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput) { + this->unk_D8D = ActorCutscene_GetAdditionalCutscene(this->player.actor.cutscene); + return true; +} + +s32 func_80A3FE20(EnTest3* this, PlayState* play) { + struct_80A41828 sp2C; + ScheduleOutput scheduleOutput; + + if (D_80A41D64 == 0) { + if (func_80A3E9DC(this, play)) { + sp2C.unk_1_0 = 2; + scheduleOutput.time0 = SCHEDULE_TIME_NOW; + scheduleOutput.time1 = (u16)(scheduleOutput.time0 + 1000); + func_80A40098(this, play, &sp2C, &scheduleOutput); + D_80A41D64 = 1; + return false; + } + } else if (D_80A41D64 == 1) { + func_80A40230(this, play); + } else if (D_80A41D64 == 2) { + ActorCutscene_Stop(this->unk_D8D); + SET_WEEKEVENTREG(WEEKEVENTREG_90_02); + D_80A41D64 = 3; + } + return false; +} + +s32 func_80A3FF10(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput) { + static Vec3f D_80A418BC = { -420.0f, 210.0f, -162.0f }; + + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_51_40)) { + D_80A41D68 = 2; + Math_Vec3f_Copy(&this->player.actor.world.pos, &D_80A418BC); + Math_Vec3f_Copy(&this->player.actor.home.pos, &D_80A418BC); + + this->player.actor.home.rot.y = -0x2AAB; + this->player.actor.shape.rot.y = -0x2AAB; + this->player.currentYaw = -0x2AAB; + if (1) {} // macro? + return true; + } else { + func_80A3F15C(this, play, arg2); + this->unk_D8D = this->player.actor.cutscene; + if (play->roomCtx.curRoom.num == 2) { + this->unk_D8D = ActorCutscene_GetAdditionalCutscene(this->unk_D8D); + } + return true; + } +} + +s32 func_80A3FFD0(EnTest3* this, PlayState* play2) { + PlayState* play = play2; + + if (D_80A41D68 == 0) { + if (!Play_InCsMode(play) && (play->roomCtx.curRoom.num == 2)) { + D_80A41D68 = 1; + } + } else if (D_80A41D68 == 1) { + if (func_80A3E9DC(this, play)) { + D_80A41D68 = 2; + } + } else { + SET_WEEKEVENTREG(WEEKEVENTREG_51_40); + play->startPlayerCutscene(play, &this->player, 0x6E); + } + return false; +} + +s32 func_80A40098(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput) { + u16 now = SCHEDULE_TIME_NOW; + u16 startTime; + u16 numWaypoints; + + func_80A3F15C(this, play, arg2); + this->unk_D7C = SubS_GetAdditionalPath(play, KAFEI_GET_PARAM_1F(&this->player.actor), ABS_ALT(arg2->unk_1_0) - 1); + if ((this->unk_D88 < 7) && (this->unk_D88 != 0) && (this->unk_D80 >= 0)) { + startTime = now; + } else { + startTime = scheduleOutput->time0; + } + if (scheduleOutput->time1 < startTime) { + this->unk_DA8 = (startTime - scheduleOutput->time1) + (DAY_LENGTH - 1); + } else { + this->unk_DA8 = scheduleOutput->time1 - startTime; + } + this->unk_DB4 = now - startTime; + numWaypoints = startTime = this->unk_D7C->count - (SUBS_TIME_PATHING_ORDER - 1); + this->unk_DAC = this->unk_DA8 / numWaypoints; + this->unk_DB0 = (this->unk_DB4 / this->unk_DAC) + (SUBS_TIME_PATHING_ORDER - 1); + this->unk_D89 &= ~1; + this->unk_D84 = 1.0f; + return true; +} + +s32 func_80A40230(EnTest3* this, PlayState* play) { + f32 knots[265]; + Vec3f worldPos; + Vec3f sp7C; + Vec3f sp70; + s32 sp6C = 0; + s32 sp68 = 0; + s32 pad1; + f32 dx; + f32 dy; + s32 ret = false; + + SubS_TimePathing_FillKnots(knots, 3, this->unk_D7C->count + 3); + if (!(this->unk_D89 & 1)) { + sp70 = gZeroVec3f; + SubS_TimePathing_Update(this->unk_D7C, &this->unk_DA4, &this->unk_DB4, this->unk_DAC, this->unk_DA8, + &this->unk_DB0, knots, &sp70, this->unk_D80); + SubS_TimePathing_ComputeInitialY(play, this->unk_D7C, this->unk_DB0, &sp70); + Math_Vec3f_Copy(&this->player.actor.home.pos, &sp70); + Math_Vec3f_Copy(&this->player.actor.prevPos, &sp70); + this->player.actor.world.pos.y = sp70.y; + this->unk_D89 |= 1; + } else { + sp70 = this->unk_D98; + } + this->player.actor.world.pos.x = sp70.x; + this->player.actor.world.pos.z = sp70.z; + if (play->transitionMode != TRANS_MODE_OFF) { + sp6C = this->unk_DB4; + sp68 = this->unk_DB0; + sp70 = this->player.actor.world.pos; + } + this->unk_D98 = gZeroVec3f; + if (SubS_TimePathing_Update(this->unk_D7C, &this->unk_DA4, &this->unk_DB4, this->unk_DAC, this->unk_DA8, + &this->unk_DB0, knots, &this->unk_D98, this->unk_D80)) { + if (this->unk_D88 == 0x14) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_58_80); + this->player.actor.draw = NULL; + } else if (this->unk_D88 == 9) { + D_80A41D64 = 2; + } + ret = true; + } else { + worldPos = this->player.actor.world.pos; + sp7C = this->unk_D98; + this->player.actor.world.rot.y = Math_Vec3f_Yaw(&worldPos, &sp7C); + } + if (play->transitionMode != TRANS_MODE_OFF) { + this->unk_DB4 = sp6C; + this->unk_DB0 = sp68; + this->unk_D98 = sp70; + } + dx = this->player.actor.world.pos.x - this->player.actor.prevPos.x; + dy = this->player.actor.world.pos.z - this->player.actor.prevPos.z; + if (!Math_StepToF(&this->unk_D84, 1.0f, 0.1f)) { + this->player.actor.world.pos.x = this->player.actor.prevPos.x + (dx * this->unk_D84); + this->player.actor.world.pos.z = this->player.actor.prevPos.z + (dy * this->unk_D84); + } + Math_Vec3f_Copy(&D_80A41D50, &this->player.actor.world.pos); + dx = this->player.actor.world.pos.x - this->player.actor.prevPos.x; + dy = this->player.actor.world.pos.z - this->player.actor.prevPos.z; + this->player.linearVelocity = sqrtf(SQ(dx) + SQ(dy)); + this->player.linearVelocity *= 1.0f + (1.05f * fabsf(Math_SinS(this->player.unk_B6C))); + D_80A41D40 = (this->player.linearVelocity * 10.0f) + 20.0f; + D_80A41D40 = CLAMP_MAX(D_80A41D40, 60.0f); + D_80A41D44 = this->player.actor.world.rot.y; + this->player.actor.world.pos.x = this->player.actor.prevPos.x; + this->player.actor.world.pos.z = this->player.actor.prevPos.z; + if (!func_80A3F384(this, play)) { + D_80A41D48 = true; + } + return ret; +} + +void func_80A40678(EnTest3* this, PlayState* play) { + struct_80A41828* sp3C; + ScheduleOutput scheduleOutput; + + this->unk_D80 = ((this->unk_D88 == 20) || (this->unk_D88 == 10) || (this->unk_D88 == 9)) ? 3 + : Play_InCsMode(play) ? 0 + : REG(15) + ((void)0, gSaveContext.save.daySpeed); + + if (Schedule_RunScript(play, sScheduleScript, &scheduleOutput)) { + if (this->unk_D88 != scheduleOutput.result) { + sp3C = &D_80A41828[scheduleOutput.result]; + func_80A3F114(this, play); + if (sp3C->unk_0 != 4) { + CLEAR_WEEKEVENTREG(WEEKEVENTREG_51_04); + } + if (!D_80A417E8[sp3C->unk_0].unk_0(this, play, sp3C, &scheduleOutput)) { + return; + } + if (scheduleOutput.result == 6) { + this->player.actor.home.rot.y = 0x7FFF; + this->player.stateFlags2 |= PLAYER_STATE2_40000; + play->startPlayerCutscene(play, &this->player, -1); + } + } + } else { + scheduleOutput.result = 0; + } + this->unk_D88 = scheduleOutput.result; + sp3C = &D_80A41828[this->unk_D88]; + D_80A417E8[sp3C->unk_0].unk_4(this, play); +} + +void func_80A40824(EnTest3* this, PlayState* play) { + this->unk_D78 = &D_80A41854[0]; + func_80A3F73C(this, play); +} + +void func_80A4084C(EnTest3* this, PlayState* play) { + if (Actor_TextboxIsClosing(&this->player.actor, play)) { + if ((this->unk_D78->unk_1 == 0) || !func_80A3E80C(this, play, this->unk_D78->unk_1 - 1)) { + if (KAFEI_GET_PARAM_1E0(&this->player.actor) == 0) { + func_80A3E7E0(this, func_80A40824); + } else { + func_80A3E7E0(this, func_80A40678); + } + this->player.targetedActor = NULL; + } + } else if (func_80A3ED24(this, play)) { + func_80A3E7E0(this, func_80A40908); + } +} + +void func_80A40908(EnTest3* this, PlayState* play) { + if (Actor_ProcessTalkRequest(&this->player.actor, &play->state)) { + func_80A3E7E0(this, func_80A4084C); + this->player.targetedActor = &GET_PLAYER(play)->actor; + SET_WEEKEVENTREG(WEEKEVENTREG_51_08); + func_80151BB4(play, 0x19); + func_80151BB4(play, 2); + } else { + func_800B8500(&this->player.actor, play, 9999.9f, 9999.9f, PLAYER_IA_MINUS1); + this->unk_D78 = &D_80A41854[6]; + this->player.actor.textId = this->unk_D78->textId; + this->player.actor.flags |= (ACTOR_FLAG_1 | ACTOR_FLAG_8); + } +} + +void func_80A409D4(EnTest3* this, PlayState* play) { + if ((play->actorCtx.flags & ACTORCTX_FLAG_5) || (play->actorCtx.flags & ACTORCTX_FLAG_4)) { + play->actorCtx.flags &= ~ACTORCTX_FLAG_4; + func_80A3F0B0(this, play); + ActorCutscene_SetReturnCamera(CAM_ID_MAIN); + } else { + sEnTest3_Input = *CONTROLLER1(&play->state); + } +} + +void func_80A40A6C(EnTest3* this, PlayState* play) { + SET_WEEKEVENTREG(WEEKEVENTREG_64_20); +} + +void EnTest3_Update(Actor* thisx, PlayState* play2) { + PlayState* play = play2; + EnTest3* this = THIS; + + sEnTest3_Input.rel.button = sEnTest3_Input.cur.button; + sEnTest3_Input.cur.button = 0; + sEnTest3_Input.rel.stick_x = 0; + sEnTest3_Input.rel.stick_y = 0; + + play->actorCtx.flags &= ~ACTORCTX_FLAG_7; + this->player.actor.draw = EnTest3_Draw; + D_80A41D48 = false; + this->player.actor.flags &= ~(ACTOR_FLAG_1 | ACTOR_FLAG_8); + if (Cutscene_CheckActorAction(play, 0x1FA) && + !((this->player.actor.category == ACTORCAT_PLAYER) && + ((play->actorCtx.flags & ACTORCTX_FLAG_5) || (play->actorCtx.flags & ACTORCTX_FLAG_4)))) { + if (this->player.csMode != 5) { + play->startPlayerCutscene(play, &this->player, 5); + } + play->actorCtx.flags &= ~ACTORCTX_FLAG_4; + } else if (this->player.actor.category == ACTORCAT_PLAYER) { + func_80A409D4(this, play); + } else if (play->startPlayerCutscene(play, &this->player, 0)) { + if (this->unk_D88 >= 7) { + Vec3f worldPos; + + Math_Vec3f_Copy(&worldPos, &this->player.actor.world.pos); + this->unk_D80 = 4; + func_80A40230(this, play); + Math_Vec3f_Copy(&this->player.actor.world.pos, &worldPos); + D_80A41D48 = false; + this->unk_D84 = 0.0f; + } + } else { + D_80A41D40 = 0.0f; + D_80A41D44 = this->player.actor.shape.rot.y; + this->unk_D94(this, play); + sEnTest3_Input.press.button = + (sEnTest3_Input.rel.button ^ sEnTest3_Input.cur.button) & sEnTest3_Input.cur.button; + func_800B6F20(play, &sEnTest3_Input, D_80A41D40, D_80A41D44); + } + play->playerUpdate(&this->player, play, &sEnTest3_Input); + if (D_80A41D48) { + this->player.actor.world.pos.x = D_80A41D50.x; + this->player.actor.world.pos.z = D_80A41D50.z; + this->player.linearVelocity = 0.0f; + } +} + +s32 D_80A418C8 = false; + +s32 EnTest3_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { + EnTest3* this = THIS; + + if (limbIndex == OBJECT_TEST3_LIMB_01) { + D_80A41D6C = &this->player.bodyPartsPos[-1]; + if (!(this->player.skelAnime.moveFlags & ANIM_FLAG_4) || (this->player.skelAnime.moveFlags & ANIM_FLAG_1)) { + pos->x *= this->player.ageProperties->unk_08; + pos->z *= this->player.ageProperties->unk_08; + } + if (!(this->player.skelAnime.moveFlags & ANIM_FLAG_4) || + (this->player.skelAnime.moveFlags & ANIM_FLAG_UPDATEY)) { + pos->y *= this->player.ageProperties->unk_08; + } + pos->y -= this->player.unk_AB8; + if (this->player.unk_AAA != 0) { + + Matrix_Translate(pos->x, ((Math_CosS(this->player.unk_AAA) - 1.0f) * 200.0f) + pos->y, pos->z, + MTXMODE_APPLY); + Matrix_RotateXS(this->player.unk_AAA, MTXMODE_APPLY); + Matrix_RotateZYX(rot->x, rot->y, rot->z, MTXMODE_APPLY); + func_80125318(pos, rot); + } + } else { + if (*dList != NULL) { + D_80A41D6C++; + } + if (D_80A418C8) { + *dList = NULL; + } + if (limbIndex == OBJECT_TEST3_LIMB_0B) { + rot->x += this->player.unk_AAC.z; + rot->y -= this->player.unk_AAC.y; + rot->z += this->player.unk_AAC.x; + } else if (limbIndex == OBJECT_TEST3_LIMB_0A) { + s32 requiredScopeTemp; + + if (this->player.unk_AA8 != 0) { + Matrix_RotateZS(0x44C, MTXMODE_APPLY); + Matrix_RotateYS(this->player.unk_AA8, MTXMODE_APPLY); + } + if (this->player.unk_AB2.y != 0) { + Matrix_RotateYS(this->player.unk_AB2.y, MTXMODE_APPLY); + } + Matrix_RotateXS(this->player.unk_AB2.x, MTXMODE_APPLY); + if (this->player.unk_AB2.z != 0) { + Matrix_RotateZS(this->player.unk_AB2.z, MTXMODE_APPLY); + } + } else { + func_80125500(play, &this->player, limbIndex, pos, rot); + } + } + return false; +} + +void EnTest3_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList1, Gfx** dList2, Vec3s* rot, Actor* thisx) { + s32 pad; + EnTest3* this = THIS; + + if (*dList2 != NULL) { + Matrix_MultZero(D_80A41D6C); + } + if (limbIndex == OBJECT_TEST3_LIMB_10) { + MtxF curMtxF; + Actor* leftHandActor; + + Math_Vec3f_Copy(&this->player.leftHandWorld.pos, D_80A41D6C); + if (*dList1 != NULL) { + func_80128640(play, &this->player, *dList1); + if (this->player.stateFlags3 & PLAYER_STATE3_20000000) { + OPEN_DISPS(play->state.gfxCtx); + gSPDisplayList(POLY_OPA_DISP++, object_test3_DL_00EDD0); + CLOSE_DISPS(play->state.gfxCtx); + } + } + leftHandActor = this->player.heldActor; + if ((leftHandActor != NULL) && (this->player.stateFlags1 & PLAYER_STATE1_800)) { + Vec3s curRot; + + Matrix_Get(&curMtxF); + Matrix_MtxFToYXZRot(&curMtxF, &curRot, false); + leftHandActor->world.rot.y = this->player.actor.shape.rot.y + this->player.leftHandWorld.rot.y; + leftHandActor->shape.rot.y = leftHandActor->world.rot.y; + } else { + Matrix_Get(&this->player.mf_CC4); + Matrix_MtxFToYXZRot(&this->player.mf_CC4, &this->player.leftHandWorld.rot, false); + func_80126B8C(play, &this->player); + } + + } else if (limbIndex == OBJECT_TEST3_LIMB_13) { + Actor* leftHandActor = this->player.heldActor; + + if (leftHandActor != NULL) { + leftHandActor->world.pos.x = (this->player.bodyPartsPos[15].x + this->player.leftHandWorld.pos.x) / 2.0f; + leftHandActor->world.pos.y = (this->player.bodyPartsPos[15].y + this->player.leftHandWorld.pos.y) / 2.0f; + leftHandActor->world.pos.z = (this->player.bodyPartsPos[15].z + this->player.leftHandWorld.pos.z) / 2.0f; + } + } else if (limbIndex == OBJECT_TEST3_LIMB_0B) { + Actor* actor730 = this->player.targetedActor; + + if ((*dList1 != NULL) && this->player.currentMask && !(this->player.stateFlags2 & PLAYER_STATE2_1000000)) { + // this->player.currentMask != PLAYER_MASK_NONE + if ((this->player.skelAnime.animation != &gPlayerAnim_cl_maskoff) && + ((this->player.skelAnime.animation != &gPlayerAnim_cl_setmask) || + (this->player.skelAnime.curFrame >= 12.0f))) { + if (func_80127438(play, &this->player, this->player.currentMask)) { + OPEN_DISPS(play->state.gfxCtx); + gSPDisplayList(POLY_OPA_DISP++, object_mask_ki_tan_DL_0004A0); + CLOSE_DISPS(play->state.gfxCtx); + } + } + } + if ((actor730 != NULL) && (actor730->id == ACTOR_BG_IKNV_OBJ)) { + Math_Vec3f_Copy(&this->player.actor.focus.pos, &actor730->focus.pos); + } else { + static Vec3f D_80A418CC = { 1100.0f, -700.0f, 0.0f }; + + Matrix_MultVec3f(&D_80A418CC, &this->player.actor.focus.pos); + } + } else if (limbIndex == OBJECT_TEST3_LIMB_15) { + if (D_80A41D60 || CHECK_WEEKEVENTREG(WEEKEVENTREG_50_80) || + (INV_CONTENT(ITEM_PENDANT_OF_MEMORIES) == ITEM_PENDANT_OF_MEMORIES) || + (this->player.getItemDrawId - 1 == GID_PENDANT_OF_MEMORIES)) { + D_80A41D60 = true; + } else { + OPEN_DISPS(play->state.gfxCtx); + gSPDisplayList(POLY_OPA_DISP++, object_test3_DL_00CB60); + CLOSE_DISPS(play->state.gfxCtx); + } + } else { + func_80128B74(play, &this->player, limbIndex); + } +} + +static TexturePtr sEyeTextures[] = { + object_test3_Tex_000DC0, object_test3_Tex_003680, object_test3_Tex_003E80, object_test3_Tex_004680, + object_test3_Tex_004E80, object_test3_Tex_005680, object_test3_Tex_005E80, object_test3_Tex_006680, +}; + +static TexturePtr sMouthTextures[] = { + object_test3_Tex_0009C0, + object_test3_Tex_006E80, + object_test3_Tex_007280, + object_test3_Tex_007680, +}; + +typedef struct { + /* 0x0 */ u8 eyeIndex; + /* 0x1 */ u8 mouthIndex; +} KafeiFace; // size = 0x2 + +static KafeiFace sFaceExpressions[] = { + { 0, 0 }, { 1, 0 }, { 2, 0 }, { 0, 0 }, { 1, 0 }, { 2, 0 }, { 4, 0 }, { 5, 1 }, { 7, 2 }, { 0, 2 }, + { 3, 0 }, { 4, 0 }, { 2, 2 }, { 1, 1 }, { 0, 2 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, +}; + +void EnTest3_Draw(Actor* thisx, PlayState* play2) { + PlayState* play = play2; + EnTest3* this = THIS; + s32 eyeTexIndex = (this->player.skelAnime.jointTable[OBJECT_TEST3_LIMB_MAX].x & 0xF) - 1; + s32 mouthTexIndex = ((this->player.skelAnime.jointTable[OBJECT_TEST3_LIMB_MAX].x >> 4) & 0xF) - 1; + Gfx* gfx; + + OPEN_DISPS(play->state.gfxCtx); + + func_8012C268(play); + if (this->player.invincibilityTimer > 0) { + s32 temp2; // Must exist for stack order. Could hold the result of CLAMP instead. + + this->player.unk_B5F += CLAMP(50 - this->player.invincibilityTimer, 8, 40); + temp2 = Math_CosS(this->player.unk_B5F * 0x100) * 2000.0f; + POLY_OPA_DISP = Gfx_SetFog(POLY_OPA_DISP, 255, 0, 0, 0, 0, 4000 - temp2); + } + func_800B8050(&this->player.actor, play, 0); + D_80A418C8 = false; + if (this->player.stateFlags1 & PLAYER_STATE1_100000) { + Vec3f sp4C; + + SkinMatrix_Vec3fMtxFMultXYZ(&play->viewProjectionMtxF, &this->player.actor.focus.pos, &sp4C); + if (sp4C.z < -4.0f) { + D_80A418C8 = true; + } + } + + gfx = POLY_OPA_DISP; + + if (eyeTexIndex < 0) { + eyeTexIndex = sFaceExpressions[this->player.actor.shape.face].eyeIndex; + } + gSPSegment(&gfx[0], 0x08, Lib_SegmentedToVirtual(sEyeTextures[eyeTexIndex])); + if (mouthTexIndex < 0) { + mouthTexIndex = sFaceExpressions[this->player.actor.shape.face].mouthIndex; + } + gSPSegment(&gfx[1], 0x09, Lib_SegmentedToVirtual(sMouthTextures[mouthTexIndex])); + + POLY_OPA_DISP = &gfx[2]; + + SkelAnime_DrawFlexLod(play, this->player.skelAnime.skeleton, this->player.skelAnime.jointTable, + this->player.skelAnime.dListCount, EnTest3_OverrideLimbDraw, EnTest3_PostLimbDraw, + &this->player.actor, 0); + if (this->player.invincibilityTimer > 0) { + POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + } + if ((this->player.getItemDrawId - 1) != GID_NONE) { + Player_DrawGetItem(play, &this->player); + } + CLOSE_DISPS(play->state.gfxCtx); +} diff --git a/src/overlays/actors/ovl_En_Test3/z_en_test3.h b/src/overlays/actors/ovl_En_Test3/z_en_test3.h index fbddc77f1..a4f1ff659 100644 --- a/src/overlays/actors/ovl_En_Test3/z_en_test3.h +++ b/src/overlays/actors/ovl_En_Test3/z_en_test3.h @@ -7,11 +7,35 @@ struct EnTest3; typedef void (*EnTest3ActionFunc)(struct EnTest3*, PlayState*); +#define KAFEI_GET_PARAM_1F(thisx) ((thisx)->params & 0x1F) +#define KAFEI_GET_PARAM_1E0(thisx) (((thisx)->params >> 5) & 0xF) + +typedef struct { + /* 0x0 */ u8 unk_0; + /* 0x1 */ u8 unk_1; + /* 0x2 */ u16 textId; +} EnTest3_struct_D78; // size = 0x4 + typedef struct EnTest3 { - /* 0x000 */ Actor actor; - /* 0x144 */ char unk_144[0x628]; - /* 0x76C */ EnTest3ActionFunc actionFunc; - /* 0x770 */ char unk_770[0x648]; + /* 0x000 */ Player player; + /* 0xD78 */ EnTest3_struct_D78* unk_D78; + /* 0xD7C */ Path* unk_D7C; + /* 0xD80 */ s32 unk_D80; + /* 0xD84 */ f32 unk_D84; + /* 0xD88 */ s8 unk_D88; + /* 0xD89 */ u8 unk_D89; + /* 0xD8A */ s16 unk_D8A; + /* 0xD8C */ u8 unk_D8C; + /* 0xD8D */ s8 unk_D8D; + /* 0xD8E */ s16 subCamId; + /* 0xD90 */ Player* unk_D90; + /* 0xD94 */ EnTest3ActionFunc unk_D94; + /* 0xD98 */ Vec3f unk_D98; + /* 0xDA4 */ f32 unk_DA4; + /* 0xDA8 */ s32 unk_DA8; + /* 0xDAC */ s32 unk_DAC; + /* 0xDB0 */ s32 unk_DB0; + /* 0xDB4 */ s32 unk_DB4; } EnTest3; // size = 0xDB8 #endif // Z_EN_TEST3_H diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index bf9c8c01d..1d8ba7973 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -4,6 +4,7 @@ * Description: Three-Day Clock */ +#include "prevent_bss_reordering.h" #include "z_en_test4.h" #include "overlays/gamestates/ovl_daytelop/z_daytelop.h" #include "overlays/actors/ovl_En_Horse/z_en_horse.h" @@ -75,7 +76,7 @@ void func_80A41D70(EnTest4* this, PlayState* play) { this->actionFunc = func_80A42F20; sCurrentCs = sCutscenes[this->unk_144]; this->transitionCsTimer = 0; - gSaveContext.eventInf[1] |= 0x80; + SET_EVENTINF(EVENTINF_17); } else if (this->unk_144 == 0) { play_sound(NA_SE_EV_CHICKEN_CRY_M); } else { @@ -112,7 +113,7 @@ void func_80A41FA4(EnTest4* this, PlayState* play) { this->actionFunc = func_80A42F20; sCurrentCs = sCutscenes[this->unk_144]; this->transitionCsTimer = 0; - gSaveContext.eventInf[1] |= 0x80; + SET_EVENTINF(EVENTINF_17); } else if (this->unk_144 == 0) { play_sound(NA_SE_EV_CHICKEN_CRY_M); } else { @@ -302,14 +303,14 @@ void EnTest4_Init(Actor* thisx, PlayState* play) { if (temp_v0 >= 0) { ActorCutscene* temp_v0_2 = ActorCutscene_GetCutscene(sCutscenes[0]); - gSaveContext.eventInf[5] |= 0x4; + SET_EVENTINF(EVENTINF_52); sCutscenes[1] = temp_v0_2->additionalCutscene; } else { - gSaveContext.eventInf[5] &= (u8)~0x4; + CLEAR_EVENTINF(EVENTINF_52); sCutscenes[1] = sCutscenes[0]; } - if (sIsLoaded || (gSaveContext.eventInf[2] & 0x80)) { + if (sIsLoaded || (CHECK_EVENTINF(EVENTINF_27))) { Actor_Kill(&this->actor); } else { sIsLoaded = true; @@ -395,14 +396,14 @@ void func_80A42AB8(EnTest4* this, PlayState* play) { if (CURRENT_DAY == 3) { Interface_StartMoonCrash(play); Actor_Kill(&this->actor); - gSaveContext.eventInf[1] |= 0x80; + SET_EVENTINF(EVENTINF_17); } else if (((sCutscenes[this->unk_144] < 0) || (play->actorCtx.flags & ACTORCTX_FLAG_1)) && (CURRENT_DAY != 3)) { func_80A41FA4(this, play); } else { gSaveContext.screenScale = 0.0f; Play_SetRespawnData(&play->state, RESPAWN_MODE_DOWN, Entrance_CreateFromSpawn(0), player->unk_3CE, - 0xBFF, &player->unk_3C0, player->unk_3CC); + PLAYER_PARAMS(0xFF, PLAYER_INITMODE_B), &player->unk_3C0, player->unk_3CC); func_80169EFC(&play->state); if (player->stateFlags1 & PLAYER_STATE1_800000) { EnHorse* rideActor = (EnHorse*)player->rideActor; @@ -417,7 +418,7 @@ void func_80A42AB8(EnTest4* this, PlayState* play) { } gSaveContext.respawnFlag = -4; - gSaveContext.eventInf[2] |= 0x80; + SET_EVENTINF(EVENTINF_27); Actor_Kill(&this->actor); } } @@ -446,9 +447,9 @@ void func_80A42AB8(EnTest4* this, PlayState* play) { u32 entrance = gSaveContext.save.entrance; if ((play->actorCtx.flags & ACTORCTX_FLAG_1)) { - playerParams = 0xCFF; + playerParams = PLAYER_PARAMS(0xFF, PLAYER_INITMODE_TELESCOPE); } else { - playerParams = 0xBFF; + playerParams = PLAYER_PARAMS(0xFF, PLAYER_INITMODE_B); } Play_SetRespawnData(&play->state, RESPAWN_MODE_RETURN, entrance, player->unk_3CE, playerParams, &player->unk_3C0, player->unk_3CC); @@ -512,8 +513,9 @@ void func_80A42F20(EnTest4* this, PlayState* play) { if (sCurrentCs >= 0) { ActorCutscene_Stop(sCurrentCs); } + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; - gSaveContext.eventInf[1] &= (u8)~0x80; + CLEAR_EVENTINF(EVENTINF_17); Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } } diff --git a/src/overlays/actors/ovl_En_Test6/z_en_test6.c b/src/overlays/actors/ovl_En_Test6/z_en_test6.c index 48f5327ad..c0915fce6 100644 --- a/src/overlays/actors/ovl_En_Test6/z_en_test6.c +++ b/src/overlays/actors/ovl_En_Test6/z_en_test6.c @@ -125,7 +125,7 @@ void func_80A90730(EnTest6* this, PlayState* play) { phi_s0 = 0; phi_f24 = -900.0f; - if (gSaveContext.eventInf[7] & 1) { + if (CHECK_EVENTINF(EVENTINF_70)) { for (i = 0; i < 6; i++) { D_80A94910[(s32)(Rand_ZeroOne() * ARRAY_COUNT(D_80A94910))].unk_00 = 5; } @@ -134,7 +134,7 @@ void func_80A90730(EnTest6* this, PlayState* play) { phi_s0 |= 1; } - if (gSaveContext.eventInf[7] & 0x10) { + if (CHECK_EVENTINF(EVENTINF_74)) { D_80A94910[(s32)(Rand_ZeroOne() * ARRAY_COUNT(D_80A94910))].unk_00 = 1; D_80A94910[(s32)(Rand_ZeroOne() * ARRAY_COUNT(D_80A94910))].unk_00 = 1; if (!(phi_s0 & 1)) { @@ -144,7 +144,7 @@ void func_80A90730(EnTest6* this, PlayState* play) { phi_s0 |= 0x10; } - if (gSaveContext.eventInf[7] & 2) { + if (CHECK_EVENTINF(EVENTINF_71)) { D_80A94910[(s32)(Rand_ZeroOne() * ARRAY_COUNT(D_80A94910))].unk_00 = 2; D_80A94910[(s32)(Rand_ZeroOne() * ARRAY_COUNT(D_80A94910))].unk_00 = 2; if (!(phi_s0 & 1)) { @@ -154,7 +154,7 @@ void func_80A90730(EnTest6* this, PlayState* play) { phi_s0 |= 2; } - if (gSaveContext.eventInf[7] & 4) { + if (CHECK_EVENTINF(EVENTINF_72)) { D_80A94910[(s32)(Rand_ZeroOne() * ARRAY_COUNT(D_80A94910))].unk_00 = 3; if (!(phi_s0 & (0x10 | 0x2 | 0x1))) { D_80A94910[(s32)(Rand_ZeroOne() * ARRAY_COUNT(D_80A94910))].unk_00 = 3; @@ -162,7 +162,7 @@ void func_80A90730(EnTest6* this, PlayState* play) { phi_s0 |= 4; } - if (gSaveContext.eventInf[7] & 8) { + if (CHECK_EVENTINF(EVENTINF_73)) { D_80A94910[(s32)(Rand_ZeroOne() * ARRAY_COUNT(D_80A94910))].unk_00 = 4; if (!(phi_s0 & (0x10 | 0x2 | 0x1))) { D_80A94910[(s32)(Rand_ZeroOne() * ARRAY_COUNT(D_80A94910))].unk_00 = 4; @@ -240,8 +240,8 @@ void func_80A90D34(EnTest6* this, PlayState* play, EnTest6Struct* ptr) { void func_80A90FC0(EnTest6* this, PlayState* play, EnTest6Struct* ptr) { s32 pad; - Gfx* gfx = GRAPH_ALLOC(play->state.gfxCtx, sizeof(Gfx) * 2); - Gfx* gfx2 = gfx; + Gfx* gfxHead = GRAPH_ALLOC(play->state.gfxCtx, 2 * sizeof(Gfx)); + Gfx* gfx = gfxHead; Hilite* sp70; Vec3f sp64; @@ -253,14 +253,14 @@ void func_80A90FC0(EnTest6* this, PlayState* play, EnTest6Struct* ptr) { OPEN_DISPS(play->state.gfxCtx); - if (gfx != NULL) { + if (gfxHead != NULL) { func_8012C28C(play->state.gfxCtx); gDPSetTileSize(gfx++, 1, sp70->h.x1 & 0xFFFF, sp70->h.y1 & 0xFFFF, (sp70->h.x1 + 60) & 0xFFFF, (sp70->h.y1 + 60) & 0xFFFF); - gSPEndDisplayList(gfx); + gSPEndDisplayList(gfx++); - gSPSegment(POLY_OPA_DISP++, 0x07, gfx2); + gSPSegment(POLY_OPA_DISP++, 0x07, gfxHead); Matrix_Translate(sp64.x, sp64.y, sp64.z, MTXMODE_NEW); Matrix_Scale(ptr->unk_04 * 0.018f, ptr->unk_04 * 0.018f, ptr->unk_04 * 0.018f, MTXMODE_APPLY); @@ -395,7 +395,7 @@ void func_80A916F0(EnTest6* this, PlayState* play) { player->actor.freezeTimer = 0; play->unk_18844 = 0; ActorCutscene_Stop(play->playerActorCsIds[8]); - func_800B7298(play, NULL, 6); + func_800B7298(play, NULL, PLAYER_CSMODE_6); func_80A90C34(); Distortion_ClearType(DISTORTION_TYPE_5); Actor_Kill(&this->actor); @@ -537,22 +537,22 @@ void func_80A91760(EnTest6* this, PlayState* play) { } if (this->unk_286 != 0) { - func_800B7298(play, NULL, 7); + func_800B7298(play, NULL, PLAYER_CSMODE_7); } else { if (this->unk_27A == 90) { - func_800B7298(play, NULL, 0x42); + func_800B7298(play, NULL, PLAYER_CSMODE_66); } if (this->unk_27A == 70) { - func_800B7298(play, NULL, 0x52); + func_800B7298(play, NULL, PLAYER_CSMODE_82); } if (this->unk_27A == 30) { - func_800B7298(play, NULL, 0x51); + func_800B7298(play, NULL, PLAYER_CSMODE_81); } if (this->unk_27A == 5) { - func_800B7298(play, NULL, 0x4A); + func_800B7298(play, NULL, PLAYER_CSMODE_74); } } @@ -616,7 +616,7 @@ void func_80A92118(EnTest6* this, PlayState* play) { player->actor.freezeTimer = 0; play->unk_18844 = 0; ActorCutscene_Stop(play->playerActorCsIds[8]); - func_800B7298(play, NULL, 6); + func_800B7298(play, NULL, PLAYER_CSMODE_6); func_80A90C34(); Distortion_ClearType(DISTORTION_TYPE_5); Actor_Kill(&this->actor); @@ -722,7 +722,7 @@ void func_80A92188(EnTest6* this, PlayState* play) { case 1: func_80A90C34(); - if (gSaveContext.eventInf[5] & 4) { + if (CHECK_EVENTINF(EVENTINF_52)) { this->unk_274 = 9; } break; @@ -764,23 +764,23 @@ void func_80A92188(EnTest6* this, PlayState* play) { break; case 98: - func_800B7298(play, NULL, 0x40); + func_800B7298(play, NULL, PLAYER_CSMODE_64); break; case 68: - func_800B7298(play, NULL, 0x41); + func_800B7298(play, NULL, PLAYER_CSMODE_65); break; case 52: - func_800B7298(play, NULL, 0x58); + func_800B7298(play, NULL, PLAYER_CSMODE_88); break; case 43: - func_800B7298(play, NULL, 0x72); + func_800B7298(play, NULL, PLAYER_CSMODE_114); break; case 38: - func_800B7298(play, NULL, 7); + func_800B7298(play, NULL, PLAYER_CSMODE_7); break; case 14: @@ -972,14 +972,14 @@ void func_80A92950(EnTest6* this, PlayState* play) { case 9: Play_SetRespawnData(&play->state, 1, ((void)0, gSaveContext.save.entrance & 0xFFFF), player->unk_3CE, - 0xBFF, &player->unk_3C0, player->unk_3CC); + PLAYER_PARAMS(0xFF, PLAYER_INITMODE_B), &player->unk_3C0, player->unk_3CC); this->unk_276 = 99; play->transitionTrigger = TRANS_TRIGGER_START; play->nextEntrance = gSaveContext.respawn[RESPAWN_MODE_RETURN].entrance; play->transitionType = TRANS_TYPE_02; if ((gSaveContext.save.time > CLOCK_TIME(18, 0)) || (gSaveContext.save.time < CLOCK_TIME(6, 0))) { gSaveContext.respawnFlag = -0x63; - gSaveContext.eventInf[2] |= 0x80; + SET_EVENTINF(EVENTINF_27); } else { gSaveContext.respawnFlag = 2; } @@ -1053,7 +1053,8 @@ void func_80A92950(EnTest6* this, PlayState* play) { case 9: if (gSaveContext.save.time > CLOCK_TIME(12, 0)) { Play_SetRespawnData(&play->state, 1, ((void)0, gSaveContext.save.entrance & 0xFFFF), - player->unk_3CE, 0xBFF, &player->unk_3C0, player->unk_3CC); + player->unk_3CE, PLAYER_PARAMS(0xFF, PLAYER_INITMODE_B), &player->unk_3C0, + player->unk_3CC); this->unk_276 = 99; play->transitionTrigger = TRANS_TRIGGER_START; play->nextEntrance = gSaveContext.respawn[RESPAWN_MODE_RETURN].entrance; @@ -1272,7 +1273,7 @@ void func_80A939E8(EnTest6* this, PlayState* play2) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gOwlStatueWhiteFlashDL); + gSPDisplayList(POLY_XLU_DISP++, gEffFlash1DL); } } Lights_PointSetPosition(&this->lights[0].info, player->actor.world.pos.x, player->actor.world.pos.y - 10.0f, diff --git a/src/overlays/actors/ovl_En_Test7/z_en_test7.c b/src/overlays/actors/ovl_En_Test7/z_en_test7.c index 7dbbaec93..43facd831 100644 --- a/src/overlays/actors/ovl_En_Test7/z_en_test7.c +++ b/src/overlays/actors/ovl_En_Test7/z_en_test7.c @@ -667,10 +667,10 @@ void func_80AF2350(EnTest7* this, PlayState* play) { gSaveContext.respawnFlag = -6; } else { play->nextEntrance = D_80AF343C[ENTEST7_GET(&this->actor) - ENTEST7_1C]; - if ((play->nextEntrance == ENTRANCE(SOUTHERN_SWAMP_POISONED, 10)) && (gSaveContext.save.weekEventReg[20] & 2)) { + if ((play->nextEntrance == ENTRANCE(SOUTHERN_SWAMP_POISONED, 10)) && CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02)) { play->nextEntrance = ENTRANCE(SOUTHERN_SWAMP_CLEARED, 10); } else if ((play->nextEntrance == ENTRANCE(MOUNTAIN_VILLAGE_WINTER, 8)) && - (gSaveContext.save.weekEventReg[33] & 0x80)) { + CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80)) { play->nextEntrance = ENTRANCE(MOUNTAIN_VILLAGE_SPRING, 8); } } @@ -957,7 +957,7 @@ void EnTest7_Draw(Actor* thisx, PlayState* play) { s32 sp40; if (this->unk_144 & 1) { - Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, ALIGN16(sizeof(Mtx) * this->unk_18CC.unk_18->unk_1)); + Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, this->unk_18CC.unk_18->unk_1 * sizeof(Mtx)); if (mtx != NULL) { func_8018450C(play, &this->unk_18CC, mtx, func_80AF31D0, NULL, &this->actor); diff --git a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c index 54a680562..58f44d468 100644 --- a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c +++ b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c @@ -4,6 +4,7 @@ * Description: Takkuri */ +#include "prevent_bss_reordering.h" #include "z_en_thiefbird.h" #define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_200 | ACTOR_FLAG_1000 | ACTOR_FLAG_80000000) @@ -130,8 +131,9 @@ static DamageTable sDamageTable = { /* Powder Keg */ DMG_ENTRY(1, 0x0), }; -static s16 D_80C13664[] = { ITEM00_ARROWS_10, ITEM00_BOMBS_B, ITEM00_RUPEE_GREEN, - ITEM00_RUPEE_BLUE, ITEM00_RUPEE_RED, ITEM00_RUPEE_PURPLE }; +static s16 D_80C13664[] = { + ITEM00_ARROWS_10, ITEM00_BOMBS_B, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_RED, ITEM00_RUPEE_PURPLE, +}; static InitChainEntry sInitChain[] = { ICHAIN_F32(uncullZoneForward, 3000, ICHAIN_CONTINUE), @@ -140,8 +142,8 @@ static InitChainEntry sInitChain[] = { ICHAIN_F32(targetArrowOffset, 500, ICHAIN_STOP), }; -static Vec3f D_80C13920; -static s32 D_80C1392C; +Vec3f D_80C13920; +s32 D_80C1392C; void EnThiefbird_Init(Actor* thisx, PlayState* play) { EnThiefbird* this = THIS; @@ -209,7 +211,11 @@ void func_80C10984(EnThiefbird* this, s32 arg1) { } s32 func_80C10B0C(EnThiefbird* this, PlayState* play) { - static Gfx* D_80C13680[] = { gTakkuriStolenKokiriSwordDL, gTakkuriStolenRazorSwordDL, gTakkuriStolenGildedSwordDL }; + static Gfx* D_80C13680[] = { + gTakkuriStolenKokiriSwordDL, + gTakkuriStolenRazorSwordDL, + gTakkuriStolenGildedSwordDL, + }; s32 isItemFound = false; s32 phi_a3 = 0; s32 slotId = SLOT_BOTTLE_1; diff --git a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c index fa140ba85..4e09f01a9 100644 --- a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c +++ b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c @@ -49,7 +49,7 @@ void EnTimeTag_Init(Actor* thisx, PlayState* play) { switch (ENTIMETAG_GET_E000(&this->actor)) { case 4: - if ((gSaveContext.save.weekEventReg[8] & 0x40) || (CURRENT_DAY != 3)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_08_40) || (CURRENT_DAY != 3)) { Actor_Kill(&this->actor); return; } @@ -93,7 +93,7 @@ void func_80AC9FE4(EnTimeTag* this, PlayState* play) { gSaveContext.timerStates[TIMER_ID_MOON_CRASH] = TIMER_STATE_OFF; if (CHECK_QUEST_ITEM(QUEST_REMAINS_ODOLWA) && CHECK_QUEST_ITEM(QUEST_REMAINS_GOHT) && CHECK_QUEST_ITEM(QUEST_REMAINS_GYORG) && CHECK_QUEST_ITEM(QUEST_REMAINS_TWINMOLD)) { - gSaveContext.save.weekEventReg[25] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_25_02); } } else { ActorCutscene_SetIntentToPlay(this->actor.cutscene); @@ -273,8 +273,8 @@ void func_80ACA724(EnTimeTag* this, PlayState* play) { } void func_80ACA7C4(EnTimeTag* this, PlayState* play) { - if (!(gSaveContext.save.weekEventReg[63] & 1) && !(gSaveContext.save.weekEventReg[63] & 2)) { - func_800B7298(play, &this->actor, 7); + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_63_01) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_63_02)) { + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); Message_StartTextbox(play, ENTIMETAG_GET_1FE0(&this->actor) + 0x1883, NULL); this->actionFunc = func_80ACA724; } @@ -287,15 +287,15 @@ void func_80ACA840(EnTimeTag* this, PlayState* play) { if ((play->sceneId != SCENE_YADOYA) || (INV_CONTENT(ITEM_ROOM_KEY) != ITEM_ROOM_KEY)) { temp_ft4 = gSaveContext.save.time * (24.0f / 0x10000); // TIME_TO_HOURS_F temp_hi = (s32)TIME_TO_MINUTES_F(gSaveContext.save.time) % 60; - if (gSaveContext.save.weekEventReg[63] & 1) { - if (gSaveContext.save.weekEventReg[63] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_02)) { this->actionFunc = func_80ACA7C4; } else if ((temp_ft4 == this->actor.home.rot.x) && (temp_hi == this->actor.home.rot.y)) { - gSaveContext.save.weekEventReg[63] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_63_02); } } else if ((temp_ft4 == this->actor.home.rot.x) && (temp_hi == this->actor.home.rot.y) && !Play_InCsMode(play)) { - func_800B7298(play, &this->actor, 7); + func_800B7298(play, &this->actor, PLAYER_CSMODE_7); Message_StartTextbox(play, ENTIMETAG_GET_1FE0(&this->actor) + 0x1883, NULL); this->actionFunc = func_80ACA724; } diff --git a/src/overlays/actors/ovl_En_Tk/z_en_tk.c b/src/overlays/actors/ovl_En_Tk/z_en_tk.c index f17350a9b..1bdc92b4a 100644 --- a/src/overlays/actors/ovl_En_Tk/z_en_tk.c +++ b/src/overlays/actors/ovl_En_Tk/z_en_tk.c @@ -486,7 +486,7 @@ s32 func_80AECE60(EnTk* this, PlayState* play) { } if (!(this->unk_3CE & 8) && !(this->unk_2CA & 0x10) && (this->actor.xzDistToPlayer < 100.0f)) { - func_8013E8F8(&this->actor, play, 100.0f, 100.0f, PLAYER_AP_NONE, 0x4000, 0x4000); + func_8013E8F8(&this->actor, play, 100.0f, 100.0f, PLAYER_IA_NONE, 0x4000, 0x4000); } return false; @@ -535,9 +535,9 @@ void func_80AED4F8(EnTk* this, PlayState* play) { } void func_80AED544(EnTk* this, PlayState* play) { - if (!(gSaveContext.save.weekEventReg[31] & 0x10)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_31_10)) { Message_StartTextbox(play, 0x13FE, &this->actor); - gSaveContext.save.weekEventReg[31] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_31_10); } else if (gSaveContext.save.time < CLOCK_TIME(9, 0)) { Message_StartTextbox(play, 0x13FF, &this->actor); } else if (gSaveContext.save.time < CLOCK_TIME(12, 0)) { @@ -564,7 +564,7 @@ void func_80AED610(EnTk* this, PlayState* play) { func_80AED544(this, play); } else if (!Flags_GetSwitch(play, ENTK_GET_7F0(&this->actor))) { Message_StartTextbox(play, 0x1403, &this->actor); - } else if (gSaveContext.save.weekEventReg[60] & 2) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_60_02)) { func_80AED544(this, play); } else { Message_StartTextbox(play, 0x1413, &this->actor); @@ -595,7 +595,7 @@ void func_80AED610(EnTk* this, PlayState* play) { case 0x1413: Rupees_ChangeBy(30); - gSaveContext.save.weekEventReg[60] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_60_02); func_80151938(play, 0x13FF); break; @@ -657,7 +657,7 @@ void func_80AED940(EnTk* this, PlayState* play) { } Math_Vec3f_Copy(&sp44, &player->actor.world.pos); - sp44.y = player->bodyPartsPos[7].y + 3.0f; + sp44.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; temp_v0 = Math_Vec3f_Pitch(&this->actor.focus.pos, &sp44); if (ABS(temp_v0) < 0x800) { Math_SmoothStepToS(&this->unk_31A, temp_v0, 3, 0x16C, 0); @@ -696,10 +696,10 @@ void func_80AED940(EnTk* this, PlayState* play) { func_80AEDE10(this, play); } else if (!(this->unk_2CA & 0x80)) { if (this->actor.xzDistToPlayer < 100.0f) { - func_8013E8F8(&this->actor, play, 100.0f, 100.0f, PLAYER_AP_NONE, 0x4000, 0x4000); + func_8013E8F8(&this->actor, play, 100.0f, 100.0f, PLAYER_IA_NONE, 0x4000, 0x4000); } } else { - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_IA_NONE); } } @@ -758,7 +758,7 @@ void func_80AEDE10(EnTk* this, PlayState* play) { switch (this->unk_310) { case 0: this->unk_2CA &= ~0x1000; - if (!(gSaveContext.save.weekEventReg[52] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_52_80)) { this->unk_2E6 = 0x1405; } else { this->unk_2E6 = 0x140B; @@ -863,7 +863,7 @@ void func_80AEDF5C(EnTk* this, PlayState* play) { break; case 0x140A: - gSaveContext.save.weekEventReg[52] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_52_80); case 0x140B: func_80AEE784(this, play); diff --git a/src/overlays/actors/ovl_En_Torch2/z_en_torch2.c b/src/overlays/actors/ovl_En_Torch2/z_en_torch2.c index 83d084951..75f966a3c 100644 --- a/src/overlays/actors/ovl_En_Torch2/z_en_torch2.c +++ b/src/overlays/actors/ovl_En_Torch2/z_en_torch2.c @@ -83,9 +83,9 @@ void EnTorch2_Destroy(Actor* thisx, PlayState* play) { EnTorch2* this = THIS; Collider_DestroyCylinder(play, &this->collider); - Play_SetRespawnData(&play->state, this->actor.params + RESPAWN_MODE_GORON - 1, 0xFF, 0, 0xBFF, - &this->actor.world.pos, this->actor.shape.rot.y); - play->actorCtx.unk254[this->actor.params] = 0; + Play_SetRespawnData(&play->state, this->actor.params + RESPAWN_MODE_GORON - 1, 0xFF, 0, + PLAYER_PARAMS(0xFF, PLAYER_INITMODE_B), &this->actor.world.pos, this->actor.shape.rot.y); + play->actorCtx.elegyShells[this->actor.params] = NULL; } void EnTorch2_Update(Actor* thisx, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Toto/z_en_toto.c b/src/overlays/actors/ovl_En_Toto/z_en_toto.c index 75878a7b6..aefa6383f 100644 --- a/src/overlays/actors/ovl_En_Toto/z_en_toto.c +++ b/src/overlays/actors/ovl_En_Toto/z_en_toto.c @@ -11,7 +11,7 @@ #define THIS ((EnToto*)thisx) -#define ENTOTO_WEEK_EVENT_FLAGS (gSaveContext.save.weekEventReg[50] & 1 || gSaveContext.save.weekEventReg[51] & 0x80) +#define ENTOTO_WEEK_EVENT_FLAGS (CHECK_WEEKEVENTREG(WEEKEVENTREG_50_01) || CHECK_WEEKEVENTREG(WEEKEVENTREG_51_80)) void EnToto_Init(Actor* thisx, PlayState* play); void EnToto_Destroy(Actor* thisx, PlayState* play); @@ -258,7 +258,7 @@ void func_80BA39C8(EnToto* this, PlayState* play) { if (this->unk2B6 != 0) { this->text = D_80BA5044; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 9999.9f, 9999.9f, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, 9999.9f, 9999.9f, PLAYER_IA_NONE); } else { this->actor.flags &= ~ACTOR_FLAG_10000; func_800B8614(&this->actor, play, 50.0f); @@ -357,7 +357,7 @@ s32 func_80BA3ED4(EnToto* this, PlayState* play) { s32 func_80BA3EE8(EnToto* this, PlayState* play) { if (this->text->unk1 == 2) { - func_800B7298(play, NULL, 7); + func_800B7298(play, NULL, PLAYER_CSMODE_7); } return 0; } @@ -452,7 +452,7 @@ s32 func_80BA42BC(EnToto* this, PlayState* play) { Vec3s* end = &D_80BA510C[3]; func_80BA3FB0(this, play); - func_800B7298(play, NULL, 6); + func_800B7298(play, NULL, PLAYER_CSMODE_6); if (player->actor.world.pos.z > -310.0f) { if ((player->actor.world.pos.x > -150.0f) || (player->actor.world.pos.z > -172.0f)) { phi_s0 = 3; @@ -472,7 +472,7 @@ s32 func_80BA42BC(EnToto* this, PlayState* play) { s32 func_80BA43F4(EnToto* this, PlayState* play) { func_80BA3C88(this); if (func_80122760(play, &this->unk_2BC, 60.0f)) { - func_800B7298(play, NULL, 0x13); + func_800B7298(play, NULL, PLAYER_CSMODE_19); return func_80BA4204(this, play); } return 0; @@ -480,7 +480,7 @@ s32 func_80BA43F4(EnToto* this, PlayState* play) { s32 func_80BA445C(EnToto* this, PlayState* play) { if (func_80BA4128(this, play)) { - func_800B7298(play, NULL, 6); + func_800B7298(play, NULL, PLAYER_CSMODE_6); return 1; } return 0; @@ -524,13 +524,12 @@ s32 func_80BA4530(EnToto* this, PlayState* play) { return func_80BA407C(this, play); } if (!ENTOTO_WEEK_EVENT_FLAGS) { - for (i = 0; i < 4; i++) { + for (i = 0; i < ARRAY_COUNT(D_80BA50DC); i++) { if (func_80BA44D4(&D_80BA50DC[i], player)) { if (this->unk2B1 < 10) { this->unk2B1++; if (this->unk2B1 >= 10) { - Message_StartTextbox(play, D_80BA50DC[((void)0, gSaveContext.save.playerForm) - 1].unk2, - NULL); + Message_StartTextbox(play, D_80BA50DC[GET_PLAYER_FORM - 1].unk2, NULL); } } return 0; @@ -543,7 +542,7 @@ s32 func_80BA4530(EnToto* this, PlayState* play) { } s32 func_80BA46D8(EnToto* this, PlayState* play) { - func_800B7298(play, NULL, 0x44); + func_800B7298(play, NULL, PLAYER_CSMODE_68); func_80152434(play, D_80BA5120[CUR_FORM]); return 0; } @@ -551,16 +550,16 @@ s32 func_80BA46D8(EnToto* this, PlayState* play) { s32 func_80BA4740(EnToto* this, PlayState* play) { if (play->msgCtx.ocarinaMode == 4) { if (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { - gSaveContext.save.weekEventReg[56] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_56_10); } if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { - gSaveContext.save.weekEventReg[56] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_56_20); } if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { - gSaveContext.save.weekEventReg[56] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_56_40); } if (gSaveContext.save.playerForm == PLAYER_FORM_GORON) { - gSaveContext.save.weekEventReg[56] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_56_80); } return 1; } @@ -572,22 +571,23 @@ s32 func_80BA47E0(EnToto* this, PlayState* play) { s32 i; this->unk2B3 = 0; - if (gSaveContext.save.weekEventReg[56] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_56_10)) { this->unk2B3 += 1; } - if (gSaveContext.save.weekEventReg[56] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_56_20)) { this->unk2B3 += 2; } - if (gSaveContext.save.weekEventReg[56] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_56_40)) { this->unk2B3 += 4; } - if (gSaveContext.save.weekEventReg[56] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_56_80)) { this->unk2B3 += 8; } - for (i = 0; i < 4; i++) { + for (i = 0; i < ARRAY_COUNT(D_80BA50DC); i++) { if (gSaveContext.save.playerForm != (i + 1) && (D_80BA5128[i] & this->unk2B3)) { Math_Vec3s_ToVec3f(&spawnPos, &D_80BA50DC[i].unk6); - Actor_Spawn(&play->actorCtx, play, ACTOR_PLAYER, spawnPos.x, spawnPos.y, spawnPos.z, i + 2, 0, 0, -1); + Actor_Spawn(&play->actorCtx, play, ACTOR_PLAYER, spawnPos.x, spawnPos.y, spawnPos.z, i + 2, 0, 0, + PLAYER_PARAMS(0xFF, PLAYER_INITMODE_F) | 0xFFFFF000); } } func_80BA402C(this, play); @@ -598,7 +598,7 @@ s32 func_80BA47E0(EnToto* this, PlayState* play) { } s32 func_80BA49A4(EnToto* this, PlayState* play) { - func_800B7298(play, NULL, 0x44); + func_800B7298(play, NULL, PLAYER_CSMODE_68); func_801A31EC(NA_BGM_BALLAD_OF_THE_WIND_FISH, 4, this->unk2B3 ^ 0xF); this->unk2B1 = 4; return 0; @@ -618,12 +618,12 @@ s32 func_80BA4A00(EnToto* this, PlayState* play) { if (this->spotlights != NULL) { Actor_Kill(this->spotlights); } - func_800B7298(play, NULL, 0x45); + func_800B7298(play, NULL, PLAYER_CSMODE_69); if (this->unk2B3 == 0xF) { if (CURRENT_DAY == 1) { - gSaveContext.save.weekEventReg[50] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_50_01); } else { - gSaveContext.save.weekEventReg[51] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_51_80); } } else { func_80BA402C(this, play); diff --git a/src/overlays/actors/ovl_En_Trt/z_en_trt.c b/src/overlays/actors/ovl_En_Trt/z_en_trt.c index 997b2804f..7ec1095d0 100644 --- a/src/overlays/actors/ovl_En_Trt/z_en_trt.c +++ b/src/overlays/actors/ovl_En_Trt/z_en_trt.c @@ -202,7 +202,7 @@ u16 EnTrt_GetItemTextId(EnTrt* this) { u16 EnTrt_GetItemChoiceTextId(EnTrt* this) { EnGirlA* item = this->items[this->cursorIndex]; - if ((item->actor.params == SI_POTION_BLUE) && !(gSaveContext.save.weekEventReg[53] & 0x10)) { + if ((item->actor.params == SI_POTION_BLUE) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_53_10)) { this->textId = 0x881; return 0x881; } @@ -348,8 +348,8 @@ void EnTrt_GetMushroom(EnTrt* this, PlayState* play) { case 0x883: this->textId = 0x884; Message_StartTextbox(play, this->textId, &this->actor); - gSaveContext.save.weekEventReg[53] |= 8; - func_80123D50(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_AP_BOTTLE); + SET_WEEKEVENTREG(WEEKEVENTREG_53_08); + Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_IA_BOTTLE); break; case 0x888: this->textId = 0x889; @@ -375,7 +375,7 @@ void EnTrt_GetMushroom(EnTrt* this, PlayState* play) { void EnTrt_PayForMushroom(EnTrt* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actor.parent = NULL; - func_80123D50(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_AP_BOTTLE); + Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_IA_BOTTLE); this->actionFunc = EnTrt_SetupItemGiven; } else { Actor_PickUp(&this->actor, play, GI_RUPEE_RED, 300.0f, 300.0f); @@ -400,7 +400,7 @@ void EnTrt_Goodbye(EnTrt* this, PlayState* play) { void EnTrt_StartRedPotionConversation(EnTrt* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { if (this->textId == 0x88F) { - if (Inventory_HasEmptyBottle() || !(gSaveContext.save.weekEventReg[12] & 0x10)) { + if (Inventory_HasEmptyBottle() || !CHECK_WEEKEVENTREG(WEEKEVENTREG_12_10)) { if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; @@ -411,28 +411,28 @@ void EnTrt_StartRedPotionConversation(EnTrt* this, PlayState* play) { } else { this->prevTextId = this->textId; this->textId = 0x88E; - gSaveContext.save.weekEventReg[85] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_85_08); Message_StartTextbox(play, this->textId, &this->actor); this->actionFunc = EnTrt_EndConversation; } } else { - if (gSaveContext.save.weekEventReg[12] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_12_08)) { this->textId = 0x83D; EnTrt_SetupStartShopping(play, this, 0); - } else if (gSaveContext.save.weekEventReg[84] & 0x40) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_84_40)) { this->textId = 0x83B; if (Inventory_HasItemInBottle(ITEM_POTION_RED)) { EnTrt_SetupStartShopping(play, this, false); } else { this->actionFunc = EnTrt_TryToGiveRedPotion; } - } else if (gSaveContext.save.weekEventReg[16] & 0x10) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_16_10)) { this->timer = 30; this->textId = 0x838; this->cutsceneState = ENTRT_CUTSCENESTATE_PLAYING_SPECIAL; this->actionFunc = EnTrt_Surprised; return; - } else if (gSaveContext.save.weekEventReg[17] & 1) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_17_01)) { this->textId = 0x835; EnTrt_SetupStartShopping(play, this, false); } @@ -446,13 +446,13 @@ void EnTrt_GiveRedPotionForKoume(EnTrt* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actor.parent = NULL; - if (!(gSaveContext.save.weekEventReg[12] & 0x10)) { - gSaveContext.save.weekEventReg[12] |= 0x10; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_12_10)) { + SET_WEEKEVENTREG(WEEKEVENTREG_12_10); } - gSaveContext.save.weekEventReg[84] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_84_40); player->stateFlags2 &= ~PLAYER_STATE2_20000000; this->actionFunc = EnTrt_GivenRedPotionForKoume; - } else if (gSaveContext.save.weekEventReg[12] & 0x10) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_12_10)) { Actor_PickUp(&this->actor, play, GI_POTION_RED, 300.0f, 300.0f); } else { Actor_PickUp(&this->actor, play, GI_POTION_RED_BOTTLE, 300.0f, 300.0f); @@ -479,7 +479,7 @@ void EnTrt_GivenRedPotionForKoume(EnTrt* this, PlayState* play) { ActorCutscene_SetIntentToPlay(this->cutscene); } } - func_800B85E0(&this->actor, play, 400.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); this->actionFunc = EnTrt_ItemGiven; } } @@ -753,7 +753,7 @@ void EnTrt_SelectItem(EnTrt* this, PlayState* play) { this->drawCursor = 0; this->shopItemSelectedTween = 0.0f; item->boughtFunc(play, item); - gSaveContext.save.weekEventReg[53] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_53_10); } } } @@ -762,14 +762,14 @@ void EnTrt_SelectItem(EnTrt* this, PlayState* play) { void EnTrt_IdleSleeping(EnTrt* this, PlayState* play) { Player* player = GET_PLAYER(play); - if ((gSaveContext.save.weekEventReg[85] & 8) && !(gSaveContext.save.weekEventReg[84] & 0x40)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_85_08) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_84_40)) { this->textId = 0x88F; } else if (!(this->flags & ENTRT_MET)) { this->textId = 0x834; } else { this->textId = 0x83E; } - if (!(gSaveContext.save.weekEventReg[53] & 8)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_53_08)) { this->talkOptionTextId = 0x845; } else if (this->flags & ENTRT_GIVEN_MUSHROOM) { this->talkOptionTextId = 0x882; @@ -894,8 +894,8 @@ void EnTrt_BeginInteraction(EnTrt* this, PlayState* play) { this->animIndex = TRT_ANIM_HANDS_ON_COUNTER; switch (this->textId) { case 0x834: - if (!(gSaveContext.save.weekEventReg[12] & 8) && !(gSaveContext.save.weekEventReg[84] & 0x40) && - !(gSaveContext.save.weekEventReg[16] & 0x10) && !(gSaveContext.save.weekEventReg[17] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_12_08) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_84_40) && + !CHECK_WEEKEVENTREG(WEEKEVENTREG_16_10) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_17_01)) { Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = true; @@ -952,7 +952,7 @@ void EnTrt_TryToGiveRedPotionAfterSurprised(EnTrt* this, PlayState* play) { this->blinkFunc = EnTrt_Blink; if ((talkState == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { - if (Inventory_HasEmptyBottle() || !(gSaveContext.save.weekEventReg[12] & 0x10)) { + if (Inventory_HasEmptyBottle() || !CHECK_WEEKEVENTREG(WEEKEVENTREG_12_10)) { if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; @@ -961,7 +961,7 @@ void EnTrt_TryToGiveRedPotionAfterSurprised(EnTrt* this, PlayState* play) { } else { this->prevTextId = this->textId; this->textId = 0x88E; - gSaveContext.save.weekEventReg[85] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_85_08); Message_StartTextbox(play, this->textId, &this->actor); this->actionFunc = EnTrt_EndConversation; } @@ -982,7 +982,7 @@ void EnTrt_TryToGiveRedPotion(EnTrt* this, PlayState* play) { } else { this->prevTextId = this->textId; this->textId = 0x88E; - gSaveContext.save.weekEventReg[85] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_85_08); Message_StartTextbox(play, this->textId, &this->actor); this->actionFunc = EnTrt_EndConversation; } @@ -1031,7 +1031,7 @@ void EnTrt_ItemGiven(EnTrt* this, PlayState* play) { } func_80151938(play, this->textId); } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -1054,7 +1054,7 @@ void EnTrt_ShopkeeperGone(EnTrt* this, PlayState* play) { } } if ((talkState == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { - if (gSaveContext.save.weekEventReg[20] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02)) { play->nextEntrance = ENTRANCE(SOUTHERN_SWAMP_CLEARED, 5); } else { play->nextEntrance = ENTRANCE(SOUTHERN_SWAMP_POISONED, 5); @@ -1104,7 +1104,7 @@ void EnTrt_SetupItemGiven(EnTrt* this, PlayState* play) { this->cutscene = this->lookToShopkeeperCutscene; ActorCutscene_SetIntentToPlay(this->cutscene); } - func_800B85E0(&this->actor, play, 400.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -1127,7 +1127,7 @@ void EnTrt_ContinueShopping(EnTrt* this, PlayState* play) { player->stateFlags2 |= PLAYER_STATE2_20000000; Message_StartTextbox(play, this->textId, &this->actor); EnTrt_SetupStartShopping(play, this, true); - func_800B85E0(&this->actor, play, 400.0f, PLAYER_AP_MINUS1); + func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); break; case 1: default: @@ -1380,7 +1380,7 @@ void EnTrt_OpenEyesThenSetToBlink(EnTrt* this) { void EnTrt_TalkToShopkeeper(EnTrt* this, PlayState* play) { u8 talkState = talkState = Message_GetState(&play->msgCtx); Player* player = GET_PLAYER(play); - s32 itemGiven; + PlayerItemAction itemAction; if (talkState == TEXT_STATE_5) { if (Message_ShouldAdvance(play)) { @@ -1391,16 +1391,16 @@ void EnTrt_TalkToShopkeeper(EnTrt* this, PlayState* play) { } } } else if (talkState == TEXT_STATE_16) { - itemGiven = func_80123810(play); - if (itemGiven > PLAYER_AP_NONE) { - if (itemGiven == PLAYER_AP_BOTTLE_MUSHROOM) { - if (gSaveContext.save.weekEventReg[53] & 8) { + itemAction = func_80123810(play); + if (itemAction > PLAYER_IA_NONE) { + if (itemAction == PLAYER_IA_BOTTLE_MUSHROOM) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_53_08)) { player->actor.textId = 0x888; } else { player->actor.textId = 0x883; } this->textId = player->actor.textId; - player->exchangeItemId = itemGiven; + player->exchangeItemId = itemAction; this->actionFunc = EnTrt_GetMushroom; } else { if (this->flags & ENTRT_GIVEN_MUSHROOM) { @@ -1412,7 +1412,7 @@ void EnTrt_TalkToShopkeeper(EnTrt* this, PlayState* play) { this->actionFunc = EnTrt_Goodbye; } func_801477B4(play); - } else if (itemGiven < PLAYER_AP_NONE) { + } else if (itemAction <= PLAYER_IA_MINUS1) { if (this->flags & ENTRT_GIVEN_MUSHROOM) { this->textId = 0x88B; } else { @@ -1463,7 +1463,7 @@ void EnTrt_LookToShopkeeperFromShelf(EnTrt* this, PlayState* play) { void EnTrt_InitShopkeeper(EnTrt* this, PlayState* play) { SkelAnime_InitFlex(play, &this->skelAnime, &gKotakeSkel, &gKotakeSleepingAnim, NULL, NULL, 0); - if (!(gSaveContext.save.weekEventReg[12] & 8) && !(gSaveContext.save.weekEventReg[84] & 0x40) && + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_12_08) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_84_40) && (gSaveContext.save.day >= 2)) { this->actor.draw = NULL; } else { @@ -1479,7 +1479,7 @@ void EnTrt_InitShop(EnTrt* this, PlayState* play) { this->actor.colChkInfo.mass = MASS_IMMOVABLE; this->actor.colChkInfo.cylRadius = 50; this->timer = Rand_S16Offset(40, 20); - if (!(gSaveContext.save.weekEventReg[12] & 8) && !(gSaveContext.save.weekEventReg[84] & 0x40) && + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_12_08) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_84_40) && gSaveContext.save.day >= 2) { this->textId = 0x84A; this->actionFunc = EnTrt_ShopkeeperGone; @@ -1545,7 +1545,7 @@ void EnTrt_InitShop(EnTrt* this, PlayState* play) { this->blinkTimer = 20; this->eyeTexIndex = 0; this->blinkFunc = EnTrt_EyesClosed; - if (gSaveContext.save.weekEventReg[53] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_53_08)) { this->flags |= ENTRT_GIVEN_MUSHROOM; } @@ -1711,7 +1711,7 @@ void EnTrt_TrackPlayer(EnTrt* this, PlayState* play) { this->headYaw = CLAMP(this->headYaw, -0x38E0, 0x38E0); playerPos = player->actor.world.pos; - playerPos.y = player->bodyPartsPos[7].y + 3.0f; + playerPos.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; pos = this->actor.world.pos; Math_SmoothStepToS(&this->headPitch, Math_Vec3f_Pitch(&pos, &playerPos), 4, 0x1C70, 1); this->headPitch = CLAMP(this->headPitch, -0x1C70, 0x1C70); diff --git a/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c b/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c index 0dca63bd2..4018a5021 100644 --- a/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c +++ b/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c @@ -144,13 +144,13 @@ void func_80AD341C(EnTrt2* this, PlayState* play) { } void func_80AD349C(EnTrt2* this) { - if ((gSaveContext.save.weekEventReg[85] & 0x10) && !(gSaveContext.save.weekEventReg[84] & 0x40)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_85_10) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_84_40)) { this->unk_3A8 = 0x88F; } else if (this->unk_3A8 == 0) { this->unk_3A8 = 0x84B; - } else if (gSaveContext.save.weekEventReg[16] & 0x10) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_16_10)) { this->unk_3A8 = 0x838; - } else if (gSaveContext.save.weekEventReg[17] & 1) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_17_01)) { this->unk_3A8 = 0x84D; } else { this->unk_3A8 = 0x849; @@ -378,7 +378,7 @@ void func_80AD3E34(EnTrt2* this, PlayState* play) { play->msgCtx.stateTimer = 4; this->unk_3B2 = 12; } else { - gSaveContext.save.weekEventReg[85] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_85_10); this->unk_3A8 = 0x88E; Message_StartTextbox(play, this->unk_3A8, &this->actor); this->unk_3B2 = 10; @@ -391,11 +391,11 @@ void func_80AD3EF0(EnTrt2* this, PlayState* play) { if (talkState == TEXT_STATE_DONE) { if (Message_ShouldAdvance(play)) { - if ((Inventory_HasEmptyBottle() && !(gSaveContext.save.weekEventReg[84] & 0x40)) || - !(gSaveContext.save.weekEventReg[12] & 0x10)) { + if ((Inventory_HasEmptyBottle() && !CHECK_WEEKEVENTREG(WEEKEVENTREG_84_40)) || + !CHECK_WEEKEVENTREG(WEEKEVENTREG_12_10)) { this->unk_3B2 = 12; } else { - gSaveContext.save.weekEventReg[85] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_85_10); this->unk_3A8 = 0x88E; Message_StartTextbox(play, this->unk_3A8, &this->actor); this->unk_3B2 = 10; @@ -410,13 +410,13 @@ void func_80AD3EF0(EnTrt2* this, PlayState* play) { void func_80AD3FF4(EnTrt2* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { - if (!(gSaveContext.save.weekEventReg[12] & 0x10)) { - gSaveContext.save.weekEventReg[12] |= 0x10; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_12_10)) { + SET_WEEKEVENTREG(WEEKEVENTREG_12_10); } - gSaveContext.save.weekEventReg[84] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_84_40); this->actor.parent = NULL; this->unk_3B2 = 14; - } else if (gSaveContext.save.weekEventReg[12] & 0x10) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_12_10)) { Actor_PickUp(&this->actor, play, GI_POTION_RED, 300.0f, 300.0f); } else { Actor_PickUp(&this->actor, play, GI_POTION_RED_BOTTLE, 300.0f, 300.0f); @@ -615,7 +615,7 @@ s16 func_80AD48F8(Path* path, s32 arg1, Vec3f* arg2, f32* arg3) { phi_f12 = 0.0f; } *arg3 = SQ(phi_f14) + SQ(phi_f12); - return RADF_TO_BINANG(Math_Acot2F(phi_f12, phi_f14)); + return RADF_TO_BINANG(Math_Atan2F_XY(phi_f12, phi_f14)); } f32 func_80AD49B8(Path* path, s32 arg1, Vec3f* arg2, Vec3s* arg3) { @@ -742,20 +742,20 @@ void func_80AD4DB4(EnTrt2* this, PlayState* play) { this->unk_3B8 = 0; this->unk_3BC = func_80AD4608; - if (gSaveContext.save.weekEventReg[12] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_12_08)) { Actor_Kill(&this->actor); return; } - if (gSaveContext.save.weekEventReg[84] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_84_40)) { Actor_Kill(&this->actor); return; } if ((play->sceneId == SCENE_20SICHITAI) || (play->sceneId == SCENE_20SICHITAI2)) { if (gSaveContext.save.day == 2) { - if (!(gSaveContext.save.weekEventReg[15] & 0x80)) { - gSaveContext.save.weekEventReg[15] |= 0x80; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_15_80)) { + SET_WEEKEVENTREG(WEEKEVENTREG_15_80); this->unk_3B2 = 3; } else { Actor_Kill(&this->actor); @@ -766,7 +766,7 @@ void func_80AD4DB4(EnTrt2* this, PlayState* play) { return; } } else if (gSaveContext.save.day == 2) { - if (gSaveContext.save.weekEventReg[15] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_15_80)) { this->unk_3B2 = 4; } else { Actor_Kill(&this->actor); @@ -850,9 +850,9 @@ void func_80AD5234(EnTrt2* this, PlayState* play) { sp40 = player->actor.world.pos; if (this->unk_3B2 == 8) { - sp40.y = player->bodyPartsPos[7].y + 3.0f; + sp40.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; } else { - sp40.y = player->bodyPartsPos[7].y + 45.0f; + sp40.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 45.0f; } sp34 = this->actor.world.pos; diff --git a/src/overlays/actors/ovl_En_Tru/z_en_tru.c b/src/overlays/actors/ovl_En_Tru/z_en_tru.c index 518ca189e..733ea0c57 100644 --- a/src/overlays/actors/ovl_En_Tru/z_en_tru.c +++ b/src/overlays/actors/ovl_En_Tru/z_en_tru.c @@ -465,7 +465,7 @@ s32 func_80A869DC(EnTru* this, PlayState* play) { Math_ApproachS(&this->unk_368, this->actor.yawTowardsPlayer - this->actor.shape.rot.y, 4, 0x2AA8); this->unk_368 = CLAMP(this->unk_368, -0x1FFE, 0x1FFE); Math_Vec3f_Copy(&sp38, &player->actor.world.pos); - sp38.y = player->bodyPartsPos[7].y + 3.0f; + sp38.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; Math_Vec3f_Copy(&sp2C, &this->actor.focus.pos); sp2C.y -= 30.0f; Math_ApproachS(&this->unk_366, Math_Vec3f_Pitch(&sp2C, &sp38), 4, 0x2AA8); @@ -671,11 +671,11 @@ UNK_TYPE* func_80A871E0(EnTru* this, PlayState* play) { return D_80A88924; } - if (!(this->unk_34E & 0x40) && !(gSaveContext.save.weekEventReg[16] & 0x10)) { + if (!(this->unk_34E & 0x40) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_16_10)) { return D_80A88918; } - if ((this->unk_34E & 0x1000) && !(gSaveContext.save.weekEventReg[16] & 0x10)) { + if ((this->unk_34E & 0x1000) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_16_10)) { return D_80A88910; } @@ -770,7 +770,7 @@ s32 func_80A875AC(Actor* thisx, PlayState* play) { switch (this->unk_364) { case 0: - if ((this->unk_34E & 0x40) || (gSaveContext.save.weekEventReg[16] & 0x10)) { + if ((this->unk_34E & 0x40) || CHECK_WEEKEVENTREG(WEEKEVENTREG_16_10)) { this->unk_374 = this->actor.cutscene; this->unk_364++; } else { @@ -827,7 +827,7 @@ s32 func_80A875AC(Actor* thisx, PlayState* play) { s32 func_80A8777C(Actor* thisx, PlayState* play) { EnTru* this = THIS; s32 ret = 0; - s32 itemActionParam; + PlayerItemAction itemAction; switch (Message_GetState(&play->msgCtx)) { case TEXT_STATE_CHOICE: @@ -837,10 +837,11 @@ s32 func_80A8777C(Actor* thisx, PlayState* play) { } // Fallthrough case TEXT_STATE_16: - itemActionParam = func_80123810(play); - if ((itemActionParam == PLAYER_AP_BOTTLE_POTION_RED) || (itemActionParam == PLAYER_AP_BOTTLE_POTION_BLUE)) { + itemAction = func_80123810(play); + + if ((itemAction == PLAYER_IA_BOTTLE_POTION_RED) || (itemAction == PLAYER_IA_BOTTLE_POTION_BLUE)) { this->unk_34E |= 8; - if (itemActionParam == PLAYER_AP_BOTTLE_POTION_RED) { + if (itemAction == PLAYER_IA_BOTTLE_POTION_RED) { this->unk_390 = 1; } else { this->unk_390 = 2; @@ -848,9 +849,9 @@ s32 func_80A8777C(Actor* thisx, PlayState* play) { this->unk_378 = func_80A87880; this->unk_364 = 0; ret = 1; - } else if (itemActionParam < PLAYER_AP_NONE) { + } else if (itemAction <= PLAYER_IA_MINUS1) { ret = 3; - } else if (itemActionParam != PLAYER_AP_NONE) { + } else if (itemAction != PLAYER_IA_NONE) { ret = 2; } break; @@ -899,7 +900,7 @@ s32 func_80A87880(Actor* thisx, PlayState* play) { } else if (Animation_OnFrame(&this->skelAnime, 12.0f) && !(this->unk_34E & 0x800)) { this->unk_34E |= 0x400; this->unk_34E |= 0x800; - Player_SetModels(player, 3); + Player_SetModels(player, PLAYER_MODELGROUP_DEFAULT); } break; @@ -912,7 +913,7 @@ s32 func_80A87880(Actor* thisx, PlayState* play) { Animation_OnFrame(&this->skelAnime, 52.0f)) { if (Animation_OnFrame(&this->skelAnime, 52.0f)) { this->unk_34E &= ~0x400; - func_80123D50(play, player, 18, 21); + Player_UpdateBottleHeld(play, player, ITEM_BOTTLE, PLAYER_IA_BOTTLE); } Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_KOUME_DRINK); } else if (Animation_OnFrame(&this->skelAnime, 90.0f)) { @@ -1040,7 +1041,7 @@ s32 func_80A87DC0(Actor* thisx, PlayState* play) { case 4: if (func_80A87400(this, play) || (DECR(this->unk_362) == 0)) { ret = true; - gSaveContext.save.weekEventReg[12] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_12_08); } break; } @@ -1057,7 +1058,7 @@ s32 func_80A87DC0(Actor* thisx, PlayState* play) { void func_80A87FD0(EnTru* this, PlayState* play) { if (this->actor.draw != NULL) { - if ((this->unk_34E & 0x80) || (gSaveContext.save.weekEventReg[16] & 0x10)) { + if ((this->unk_34E & 0x80) || CHECK_WEEKEVENTREG(WEEKEVENTREG_16_10)) { if (func_80A873B8(this)) { SubS_UpdateFlags(&this->unk_34E, 3, 7); } else { @@ -1080,7 +1081,7 @@ void func_80A87FD0(EnTru* this, PlayState* play) { EnTru_ChangeAnim(this, KOUME_ANIM_TRY_GET_UP); } } - } else if (!(gSaveContext.save.weekEventReg[16] & 0x10) && (fabsf(this->actor.playerHeightRel) < 10.0f) && + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_16_10) && (fabsf(this->actor.playerHeightRel) < 10.0f) && (this->actor.xzDistToPlayer < 140.0f)) { SubS_UpdateFlags(&this->unk_34E, 4, 7); this->unk_34E |= 0x1040; @@ -1105,12 +1106,12 @@ void func_80A881E0(EnTru* this, PlayState* play) { ActorCutscene_Stop(ActorCutscene_GetCurrentIndex()); } - if (!(this->unk_34E & 0x40) && !(gSaveContext.save.weekEventReg[16] & 0x10)) { + if (!(this->unk_34E & 0x40) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_16_10)) { EnTru_ChangeAnim(this, KOUME_ANIM_INJURED_LYING_DOWN); } else if (this->unk_34E & 0x80) { EnTru_ChangeAnim(this, KOUME_ANIM_INJURED_LYING_DOWN); func_80A86460(this); - } else if (gSaveContext.save.weekEventReg[16] & 0x10) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_16_10)) { EnTru_ChangeAnim(this, KOUME_ANIM_INJURED_HEAD_UP_MORPH); } @@ -1127,7 +1128,7 @@ void func_80A881E0(EnTru* this, PlayState* play) { void EnTru_Init(Actor* thisx, PlayState* play) { EnTru* this = THIS; - if ((gSaveContext.save.entrance != 0xC200) || (gSaveContext.save.weekEventReg[12] & 8)) { + if ((gSaveContext.save.entrance != ENTRANCE(WOODS_OF_MYSTERY, 0)) || CHECK_WEEKEVENTREG(WEEKEVENTREG_12_08)) { Actor_Kill(&this->actor); return; } @@ -1147,10 +1148,10 @@ void EnTru_Init(Actor* thisx, PlayState* play) { Actor_SetScale(&this->actor, 0.008f); this->unk_34E = 0; - if (gSaveContext.save.weekEventReg[16] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_16_10)) { EnTru_ChangeAnim(this, KOUME_ANIM_INJURED_HEAD_UP); } else { - this->unk_388 = PLAYER_AP_NONE; + this->unk_388 = PLAYER_IA_NONE; } this->actionFunc = func_80A87FD0; @@ -1176,7 +1177,7 @@ void EnTru_Update(Actor* thisx, PlayState* play) { func_80A86DB8(this); radius = this->collider.dim.worldSphere.radius + 30; - this->unk_388 = !(this->unk_34E & 0x80) ? PLAYER_AP_NONE : PLAYER_AP_NONE; + this->unk_388 = !(this->unk_34E & 0x80) ? PLAYER_IA_NONE : PLAYER_IA_NONE; func_8013C964(&this->actor, play, radius, 20.0f, this->unk_388, this->unk_34E & 7); func_80A8697C(this, play); diff --git a/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c b/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c index 1e3bcb9e9..e51af14ae 100644 --- a/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c +++ b/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c @@ -318,7 +318,7 @@ void func_80B7679C(EnTruMt* this, PlayState* play) { this->unk_34A = CLAMP(this->unk_34A, -0x38E0, 0x38E0); sp40 = player->actor.world.pos; - sp40.y = player->bodyPartsPos[7].y + 3.0f; + sp40.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; sp34 = this->actor.world.pos; sp34.y += 30.0f; @@ -344,18 +344,18 @@ void func_80B76980(EnTruMt* this, PlayState* play) { if (gSaveContext.minigameHiddenScore >= 10) { Message_StartTextbox(play, 0x87F, &this->actor); - gSaveContext.eventInf[3] |= 0x40; - gSaveContext.eventInf[4] |= 1; + SET_EVENTINF(EVENTINF_36); + SET_EVENTINF(EVENTINF_40); player->stateFlags3 &= ~PLAYER_STATE3_400; this->actor.speedXZ = 0.0f; this->actionFunc = func_80B76BB8; - } else if (gSaveContext.eventInf[4] & 1) { + } else if (CHECK_EVENTINF(EVENTINF_40)) { u32 score = gSaveContext.minigameScore; if (((gSaveContext.save.unk_EE8 & 0xFFFF0000) >> 0x10) < score) { gSaveContext.save.unk_EE8 = ((gSaveContext.minigameScore & 0xFFFF) << 0x10) | (gSaveContext.save.unk_EE8 & 0xFFFF); - gSaveContext.eventInf[3] |= 0x80; + SET_EVENTINF(EVENTINF_37); } } } @@ -413,7 +413,7 @@ void EnTruMt_Init(Actor* thisx, PlayState* play) { s32 pad; EnTruMt* this = THIS; - if (!(gSaveContext.eventInf[3] & 0x20)) { + if (!CHECK_EVENTINF(EVENTINF_35)) { Actor_Kill(&this->actor); return; } @@ -461,7 +461,7 @@ void EnTruMt_Update(Actor* thisx, PlayState* play) { func_80B76110(this); Actor_SetFocus(&this->actor, 34.0f); - if (!(gSaveContext.eventInf[4] & 1)) { + if (!CHECK_EVENTINF(EVENTINF_40)) { func_80B761FC(this, play); } diff --git a/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c b/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c index 31674a668..a9631d96b 100644 --- a/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c +++ b/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c @@ -87,7 +87,7 @@ void func_80ADFCEC(EnTsn* this, PlayState* play) { switch (ENTSN_GET_F(&this->actor)) { case ENTSN_F_0: - if (gSaveContext.save.weekEventReg[26] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_26_08)) { Actor_Kill(&this->actor); return; } @@ -95,7 +95,7 @@ void func_80ADFCEC(EnTsn* this, PlayState* play) { break; case ENTSN_F_1: - if (gSaveContext.save.weekEventReg[26] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_26_04)) { this->actor.textId = 0x1091; } else { this->actor.textId = 0x108A; @@ -103,7 +103,7 @@ void func_80ADFCEC(EnTsn* this, PlayState* play) { break; } - if (gSaveContext.save.weekEventReg[55] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { if ((ENTSN_GET_F(&this->actor)) == ENTSN_F_0) { this->actionFunc = func_80AE0D78; } else { @@ -144,7 +144,7 @@ void EnTsn_Init(Actor* thisx, PlayState* play) { this->actor.terminalVelocity = -9.0f; this->actor.gravity = -1.0f; - if (gSaveContext.save.weekEventReg[55] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { Actor_Kill(&this->actor); } } @@ -158,15 +158,15 @@ void EnTsn_Destroy(Actor* thisx, PlayState* play) { void func_80ADFF84(EnTsn* this, PlayState* play) { u16 textId; - if (gSaveContext.save.weekEventReg[26] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_26_08)) { textId = 0x107E; } else if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { - if (gSaveContext.save.weekEventReg[25] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_25_80)) { textId = 0x1083; } else { textId = 0x107F; } - } else if (gSaveContext.save.weekEventReg[26] & 1) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_26_01)) { textId = 0x1089; } else { textId = 0x1084; @@ -208,14 +208,14 @@ void func_80AE0010(EnTsn* this, PlayState* play) { case 0x1082: Animation_MorphToLoop(&this->skelAnime, &object_tsn_Anim_0092FC, -10.0f); - gSaveContext.save.weekEventReg[25] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_25_80); func_801477B4(play); this->actionFunc = func_80AE0304; this->actor.textId = 0; break; case 0x1083: - gSaveContext.save.weekEventReg[25] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_25_80); func_801477B4(play); this->actionFunc = func_80AE0304; this->actor.textId = 0; @@ -233,7 +233,7 @@ void func_80AE0010(EnTsn* this, PlayState* play) { case 0x1089: case 0x1093: - gSaveContext.save.weekEventReg[26] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_26_01); func_801477B4(play); Animation_MorphToLoop(&this->skelAnime, &object_tsn_Anim_0092FC, -10.0f); this->actionFunc = func_80AE0304; @@ -246,7 +246,7 @@ void func_80AE0010(EnTsn* this, PlayState* play) { break; case 0x1088: - gSaveContext.save.weekEventReg[26] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_26_01); if (INV_CONTENT(ITEM_MASK_ZORA) == ITEM_MASK_ZORA) { func_801477B4(play); Animation_MorphToLoop(&this->skelAnime, &object_tsn_Anim_0092FC, -10.0f); @@ -311,19 +311,20 @@ void func_80AE04C4(EnTsn* this, PlayState* play) { } void func_80AE04FC(EnTsn* this, PlayState* play) { - s32 sp24; + PlayerItemAction itemAction; Player* player = GET_PLAYER(play); if (Message_GetState(&play->msgCtx) == TEXT_STATE_16) { - sp24 = func_80123810(play); - if (sp24 != 0) { - gSaveContext.save.weekEventReg[26] |= 2; + itemAction = func_80123810(play); + + if (itemAction != PLAYER_IA_NONE) { + SET_WEEKEVENTREG(WEEKEVENTREG_26_02); } - if (sp24 > 0) { + if (itemAction > PLAYER_IA_NONE) { func_801477B4(play); this->actionFunc = func_80AE0704; - if (sp24 == 19) { + if (itemAction == PLAYER_IA_PICTO_BOX) { if (CHECK_QUEST_ITEM(QUEST_PICTOGRAPH)) { if (Snap_CheckFlag(PICTOGRAPH_PIRATE_GOOD)) { player->actor.textId = 0x107B; @@ -345,7 +346,7 @@ void func_80AE04FC(EnTsn* this, PlayState* play) { return; } - if (sp24 == 13) { + if (itemAction == PLAYER_IA_HOOKSHOT) { player->actor.textId = 0x1075; return; } @@ -355,7 +356,7 @@ void func_80AE04FC(EnTsn* this, PlayState* play) { return; } - if (sp24 < 0) { + if (itemAction <= PLAYER_IA_MINUS1) { func_80151938(play, 0x1078); Animation_MorphToLoop(&this->unk_1D8->skelAnime, &object_tsn_Anim_001198, -10.0f); this->actionFunc = func_80AE0704; @@ -389,13 +390,13 @@ void func_80AE0704(EnTsn* this, PlayState* play) { if (Message_ShouldAdvance(play)) { switch (play->msgCtx.currentTextId) { case 0x106E: - if (gSaveContext.save.weekEventReg[25] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_25_40)) { func_80151938(play, 0x1074); } else { func_80151938(play, 0x106F); } this->unk_220 |= 2; - gSaveContext.save.weekEventReg[25] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_25_40); ENTSN_SET_Z(&this->unk_1D8->actor, true); this->unk_220 |= 4; break; @@ -426,7 +427,7 @@ void func_80AE0704(EnTsn* this, PlayState* play) { case 0x107C: if (Inventory_HasEmptyBottle()) { - gSaveContext.save.weekEventReg[26] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_26_08); func_801477B4(play); this->actionFunc = func_80AE0460; func_80AE0460(this, play); @@ -463,7 +464,7 @@ void func_80AE0704(EnTsn* this, PlayState* play) { case 0x108A: case 0x1091: - gSaveContext.save.weekEventReg[26] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_26_04); func_80151938(play, play->msgCtx.currentTextId + 1); this->unk_220 |= 2; this->actor.textId = 0x1091; @@ -478,7 +479,7 @@ void func_80AE0704(EnTsn* this, PlayState* play) { break; case 0x1092: - if (gSaveContext.save.weekEventReg[26] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_26_08)) { func_80AE0698(this, play); } else { func_80151938(play, 0x10A7); diff --git a/src/overlays/actors/ovl_En_Twig/z_en_twig.c b/src/overlays/actors/ovl_En_Twig/z_en_twig.c index bdf18fd2c..5843357ee 100644 --- a/src/overlays/actors/ovl_En_Twig/z_en_twig.c +++ b/src/overlays/actors/ovl_En_Twig/z_en_twig.c @@ -74,18 +74,18 @@ void EnTwig_Init(Actor* thisx, PlayState* play2) { break; case 1: if (!sRingsHaveSpawned) { - sRingCount = (gSaveContext.save.weekEventReg[24] & 4) ? 25 : 20; + sRingCount = CHECK_WEEKEVENTREG(WEEKEVENTREG_24_04) ? 25 : 20; for (i = 0; i < sRingCount; i++) { sRingNotCollected[i] = false; } sRingsHaveSpawned = true; } if (RACERING_GET_PARAM_1F0(&this->dyna.actor) != 0) { - if (!(gSaveContext.save.weekEventReg[24] & 4)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_24_04)) { Actor_Kill(&this->dyna.actor); return; } - } else if (gSaveContext.save.weekEventReg[24] & 4) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_24_04)) { Actor_Kill(&this->dyna.actor); return; } diff --git a/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c b/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c index 1ddcc4add..74bd4fec6 100644 --- a/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c +++ b/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c @@ -459,14 +459,14 @@ void EnWallmas_SetupTakePlayer(EnWallmas* this, PlayState* play) { this->actor.speedXZ = 0.0f; this->actor.velocity.y = 0.0f; this->yTarget = this->actor.playerHeightRel; - func_800B724C(play, &this->actor, 18); + func_800B724C(play, &this->actor, PLAYER_CSMODE_18); } void EnWallmas_TakePlayer(EnWallmas* this, PlayState* play) { Player* player = GET_PLAYER(play); if (Animation_OnFrame(&this->skelAnime, 1.0f)) { - func_800B8E58(player, player->ageProperties->unk_92 + NA_SE_VO_LI_DAMAGE_S); + func_800B8E58(player, player->ageProperties->voiceSfxIdOffset + NA_SE_VO_LI_DAMAGE_S); Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_FALL_CATCH); } @@ -480,9 +480,9 @@ void EnWallmas_TakePlayer(EnWallmas* this, PlayState* play) { this->actor.world.pos.y += 10.0f; } - player->actor.world.pos.y = this->actor.world.pos.y - sYOffsetPerForm[((void)0, gSaveContext.save.playerForm)]; + player->actor.world.pos.y = this->actor.world.pos.y - sYOffsetPerForm[GET_PLAYER_FORM]; if (this->timer == -30) { - func_800B8E58(player, player->ageProperties->unk_92 + NA_SE_VO_LI_TAKEN_AWAY); + func_800B8E58(player, player->ageProperties->voiceSfxIdOffset + NA_SE_VO_LI_TAKEN_AWAY); } if (this->timer == 0) { @@ -491,8 +491,7 @@ void EnWallmas_TakePlayer(EnWallmas* this, PlayState* play) { this->timer += 2; } else { - Math_StepToF(&this->actor.world.pos.y, - sYOffsetPerForm[((void)0, gSaveContext.save.playerForm)] + player->actor.world.pos.y, 5.0f); + Math_StepToF(&this->actor.world.pos.y, sYOffsetPerForm[GET_PLAYER_FORM] + player->actor.world.pos.y, 5.0f); } Math_StepToF(&this->actor.world.pos.x, player->actor.world.pos.x, 3.0f); diff --git a/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c b/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c index 67a1196bc..77b857c14 100644 --- a/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c +++ b/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c @@ -84,7 +84,7 @@ void EnWarpTag_CheckDungeonKeepObject(EnWarptag* this, PlayState* play) { if (Object_IsLoaded(&play->objectCtx, this->dangeonKeepObject)) { this->actionFunc = EnWarpTag_WaitForPlayer; DynaPolyActor_Init(&this->dyna, 0x1); - DynaPolyActor_LoadMesh(play, &this->dyna, &gWarpTagGoronTrialBaseCollider); + DynaPolyActor_LoadMesh(play, &this->dyna, &gWarpTagGoronTrialBaseCol); this->dyna.actor.objBankIndex = this->dangeonKeepObject; this->dyna.actor.draw = EnWarpTag_Draw; } @@ -94,10 +94,10 @@ void EnWarpTag_WaitForPlayer(EnWarptag* this, PlayState* play) { if (!Player_InCsMode(play) && (this->dyna.actor.xzDistToPlayer <= 30.0f) && (this->dyna.actor.playerHeightRel <= 10.0f)) { if (WARPTAG_GET_INVISIBLE(&this->dyna.actor)) { - func_800B7298(play, NULL, 0x51); + func_800B7298(play, NULL, PLAYER_CSMODE_81); this->actionFunc = EnWarpTag_GrottoReturn; } else { - func_800B7298(play, NULL, 0xF); + func_800B7298(play, NULL, PLAYER_CSMODE_15); this->actionFunc = EnWarpTag_RespawnPlayer; } } @@ -126,7 +126,7 @@ void EnWarpTag_Unused809C09A0(EnWarptag* this, PlayState* play) { */ void EnWarpTag_Unused809C0A20(EnWarptag* this, PlayState* play) { if (play->msgCtx.ocarinaMode == 9) { - func_800B7298(play, NULL, 7); + func_800B7298(play, NULL, PLAYER_CSMODE_7); this->actionFunc = EnWarpTag_RespawnPlayer; ActorCutscene_Stop(ActorCutscene_GetCurrentIndex()); @@ -201,9 +201,9 @@ void EnWarpTag_RespawnPlayer(EnWarptag* this, PlayState* play) { newRespawnPos.z = playerActorEntry->pos.z; if (WARPTAG_GET_3C0_MAX(&this->dyna.actor) == WARPTAG_3C0_MAX) { - playerParams = 0x9FF; + playerParams = PLAYER_PARAMS(0xFF, PLAYER_INITMODE_9); } else { // not used by any known variant - playerParams = 0x8FF; + playerParams = PLAYER_PARAMS(0xFF, PLAYER_INITMODE_8); } // why are we getting player home rotation from the room data? doesnt player have home.rot.y? @@ -264,7 +264,7 @@ void EnWarpTag_Draw(Actor* thisx, PlayState* play) { OPEN_DISPS(play->state.gfxCtx); func_8012C28C(play->state.gfxCtx); - AnimatedMat_Draw(play, Lib_SegmentedToVirtual(&gWarpTagRainbowTexAnim)); + AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gWarpTagRainbowTexAnim)); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, gWarpTagGoronTrialBaseDL); diff --git a/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.c b/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.c index 5f92164b3..94890bd39 100644 --- a/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.c +++ b/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.c @@ -482,7 +482,7 @@ void func_80A59C04(Actor* thisx, PlayState* play2) { player->flameTimers[j] = Rand_S16Offset(0, 200); } player->isBurning = true; - func_800B8E58(player, player->ageProperties->unk_92 + NA_SE_VO_LI_DEMO_DAMAGE); + func_800B8E58(player, player->ageProperties->voiceSfxIdOffset + NA_SE_VO_LI_DEMO_DAMAGE); } } diff --git a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c index 77e9ef903..32e3e3437 100644 --- a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c +++ b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c @@ -77,7 +77,7 @@ void EnWeatherTag_Init(Actor* thisx, PlayState* play) { EnWeatherTag_SetupAction(this, func_80966A08); break; case WEATHERTAG_TYPE_UNK1: - if (gSaveContext.save.weekEventReg[52] & 0x20) { // if cleared STT + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_20)) { Actor_Kill(&this->actor); } EnWeatherTag_SetupAction(this, func_80966B08); diff --git a/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c b/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c index b8a623539..ee2f3d158 100644 --- a/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c +++ b/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c @@ -1519,7 +1519,7 @@ void EnWiz_Draw(Actor* thisx, PlayState* play) { if (this->fightState == EN_WIZ_FIGHT_STATE_FIRST_PHASE) { Matrix_Push(); - AnimatedMat_Draw(play, Lib_SegmentedToVirtual(&gWizrobePlatformLightTexAnim)); + AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gWizrobePlatformLightTexAnim)); Matrix_Translate(this->platformLightPos.x, this->platformLightPos.y, this->platformLightPos.z, MTXMODE_NEW); Matrix_Scale(0.01f, 0.01f, 0.01f, MTXMODE_APPLY); gDPPipeSync(POLY_XLU_DISP++); diff --git a/src/overlays/actors/ovl_En_Wiz_Brock/z_en_wiz_brock.c b/src/overlays/actors/ovl_En_Wiz_Brock/z_en_wiz_brock.c index 857bb5300..f2d88759e 100644 --- a/src/overlays/actors/ovl_En_Wiz_Brock/z_en_wiz_brock.c +++ b/src/overlays/actors/ovl_En_Wiz_Brock/z_en_wiz_brock.c @@ -121,7 +121,7 @@ void EnWizBrock_Draw(Actor* thisx, PlayState* play) { if (this->platformType != EN_WIZ_BROCK_PLATFORM_TYPE_INACTIVE) { OPEN_DISPS(play->state.gfxCtx); - AnimatedMat_Draw(play, Lib_SegmentedToVirtual(&gWizrobePlatformCenterTexAnim)); + AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gWizrobePlatformCenterTexAnim)); gDPPipeSync(POLY_XLU_DISP++); gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, 255, 255, 255, 255); if (this->platformType == EN_WIZ_BROCK_PLATFORM_TYPE_FIRE) { diff --git a/src/overlays/actors/ovl_En_Yb/z_en_yb.c b/src/overlays/actors/ovl_En_Yb/z_en_yb.c index 106b23926..2310a2eef 100644 --- a/src/overlays/actors/ovl_En_Yb/z_en_yb.c +++ b/src/overlays/actors/ovl_En_Yb/z_en_yb.c @@ -120,8 +120,7 @@ void EnYb_Init(Actor* thisx, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_1; } - // check if already healed - if (gSaveContext.save.weekEventReg[82] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_82_04)) { Actor_Kill(&this->actor); } } @@ -263,7 +262,7 @@ void EnYb_SetupLeaving(EnYb* this, PlayState* play) { Message_StartTextbox(play, 0x147D, &this->actor); func_80BFA2FC(play); } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } EnYb_EnableProximityMusic(this); } @@ -275,7 +274,7 @@ void EnYb_ReceiveMask(EnYb* this, PlayState* play) { this->actor.parent = NULL; this->actionFunc = EnYb_SetupLeaving; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { Actor_PickUp(&this->actor, play, GI_MASK_KAMARO, 10000.0f, 100.0f); } @@ -292,7 +291,7 @@ void EnYb_Talk(EnYb* this, PlayState* play) { case 0x147D: // I am counting on you func_801477B4(play); this->actionFunc = EnYb_Disappear; - gSaveContext.save.weekEventReg[82] |= 0x4; + SET_WEEKEVENTREG(WEEKEVENTREG_82_04); break; case 0x147C: // Spread my dance across the world if (Player_GetMask(play) == PLAYER_MASK_KAMARO) { @@ -326,7 +325,7 @@ void EnYb_TeachingDanceFinish(EnYb* this, PlayState* play) { Message_StartTextbox(play, 0x147C, &this->actor); this->actor.flags &= ~ACTOR_FLAG_10000; } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } EnYb_EnableProximityMusic(this); } @@ -341,7 +340,7 @@ void EnYb_TeachingDance(EnYb* this, PlayState* play) { EnYb_FinishTeachingCutscene(this); this->actionFunc = EnYb_TeachingDanceFinish; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } EnYb_EnableProximityMusic(this); } diff --git a/src/overlays/actors/ovl_En_Zo/z_en_zo.c b/src/overlays/actors/ovl_En_Zo/z_en_zo.c index 74d830be1..a16b828f9 100644 --- a/src/overlays/actors/ovl_En_Zo/z_en_zo.c +++ b/src/overlays/actors/ovl_En_Zo/z_en_zo.c @@ -185,7 +185,7 @@ void EnZo_LookAtPlayer(EnZo* this, PlayState* play) { SkelAnime_Update(&this->skelAnime); if (SubS_AngleDiffLessEqual(this->actor.shape.rot.y, 0x2710, this->actor.yawTowardsPlayer)) { point.x = player->actor.world.pos.x; - point.y = player->bodyPartsPos[7].y + 3.0f; + point.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; point.z = player->actor.world.pos.z; SubS_TrackPoint(&point, &this->actor.focus.pos, &this->actor.shape.rot, &this->trackTarget, &this->headRot, &this->upperBodyRot, &sTrackOptions); diff --git a/src/overlays/actors/ovl_En_Zob/z_en_zob.c b/src/overlays/actors/ovl_En_Zob/z_en_zob.c index cebdd68cf..58dd246d8 100644 --- a/src/overlays/actors/ovl_En_Zob/z_en_zob.c +++ b/src/overlays/actors/ovl_En_Zob/z_en_zob.c @@ -114,13 +114,13 @@ void EnZob_Init(Actor* thisx, PlayState* play) { switch (ENZOB_GET_F(&this->actor)) { case ENZOB_F_1: - if (gSaveContext.save.weekEventReg[78] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_78_01)) { this->actionFunc = func_80BA0BB4; } else { this->actionFunc = func_80BA0AD8; } - if (!(gSaveContext.save.weekEventReg[55] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { Actor_Kill(&this->actor); return; } @@ -135,7 +135,7 @@ void EnZob_Init(Actor* thisx, PlayState* play) { break; default: - if (gSaveContext.save.weekEventReg[55] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { Actor_Kill(&this->actor); } this->actor.flags |= ACTOR_FLAG_10; @@ -211,7 +211,7 @@ void func_80B9FA3C(EnZob* this, PlayState* play) { this->unk_2F4 |= 1; if (gSaveContext.save.playerForm != PLAYER_FORM_ZORA) { - if (gSaveContext.save.weekEventReg[30] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_30_02)) { textId = 0x11F9; } else { textId = 0x11F8; @@ -222,7 +222,7 @@ void func_80B9FA3C(EnZob* this, PlayState* play) { textId = 0x1210; this->unk_304 = 3; func_80B9F7E4(this, 5, ANIMMODE_ONCE); - } else if (gSaveContext.save.weekEventReg[31] & 8) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_31_08)) { textId = 0x1205; this->unk_304 = 1; func_80B9F7E4(this, 3, ANIMMODE_LOOP); @@ -234,12 +234,12 @@ void func_80B9FA3C(EnZob* this, PlayState* play) { textId = 0x1203; this->unk_304 = 1; func_80B9F7E4(this, 2, ANIMMODE_ONCE); - } else if (gSaveContext.save.weekEventReg[30] & 8) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_30_08)) { textId = 0x11FA; this->unk_304 = 1; func_80B9F7E4(this, 2, ANIMMODE_ONCE); - } else if (!(gSaveContext.save.weekEventReg[30] & 4)) { - gSaveContext.save.weekEventReg[30] |= 4; + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_30_04)) { + SET_WEEKEVENTREG(WEEKEVENTREG_30_04); textId = 0x11FB; this->unk_304 = 1; func_80B9F7E4(this, 2, ANIMMODE_ONCE); @@ -420,7 +420,7 @@ void func_80BA00BC(EnZob* this, PlayState* play) { break; case 0x120F: - gSaveContext.save.weekEventReg[31] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_31_08); this->unk_2F4 |= 0x10; func_80B9FCA0(this, play); break; @@ -473,7 +473,7 @@ void func_80BA0374(EnZob* this, PlayState* play) { if (Message_ShouldAdvance(play)) { switch (play->msgCtx.currentTextId) { case 0x11F8: - gSaveContext.save.weekEventReg[30] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_30_02); func_80151938(play, 0x11F9); break; @@ -565,7 +565,7 @@ void func_80BA0728(EnZob* this, PlayState* play) { if (func_800B8718(&this->actor, &play->state)) { if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { Message_StartTextbox(play, 0x1208, NULL); - gSaveContext.save.weekEventReg[30] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_30_08); } else { Message_StartTextbox(play, 0x1216, NULL); } @@ -595,17 +595,17 @@ void func_80BA08E8(EnZob* this, PlayState* play) { s32 textId; if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { - if (gSaveContext.save.weekEventReg[79] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_01)) { textId = 0x1257; this->unk_304 = 3; func_80B9F7E4(this, 4, ANIMMODE_ONCE); - } else if (gSaveContext.save.weekEventReg[78] & 0x40) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_78_40)) { textId = 0x1256; this->unk_304 = 1; func_80B9F7E4(this, 2, ANIMMODE_ONCE); } else { textId = 0x1255; - gSaveContext.save.weekEventReg[78] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_78_40); this->unk_304 = 1; func_80B9F7E4(this, 2, ANIMMODE_ONCE); } @@ -664,7 +664,7 @@ void func_80BA0AD8(EnZob* this, PlayState* play) { void func_80BA0BB4(EnZob* this, PlayState* play) { func_80B9F86C(this); - if (gSaveContext.save.weekEventReg[79] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_01)) { this->actionFunc = func_80BA09E0; func_80B9F7E4(this, 0, ANIMMODE_ONCE); this->unk_304 = 5; diff --git a/src/overlays/actors/ovl_En_Zog/z_en_zog.c b/src/overlays/actors/ovl_En_Zog/z_en_zog.c index 4f0a82980..a165d91fe 100644 --- a/src/overlays/actors/ovl_En_Zog/z_en_zog.c +++ b/src/overlays/actors/ovl_En_Zog/z_en_zog.c @@ -264,7 +264,7 @@ void EnZog_Init(Actor* thisx, PlayState* play) { } } - if ((ENZOG_GET_F(&this->actor) != ENZOG_F_2) && (gSaveContext.save.weekEventReg[88] & 0x10)) { + if ((ENZOG_GET_F(&this->actor) != ENZOG_F_2) && CHECK_WEEKEVENTREG(WEEKEVENTREG_88_10)) { this->unk_302 = this->unk_300 = 0; this->unk_2FC = this->unk_2FE = 3; this->actor.flags |= ACTOR_FLAG_2000000; @@ -274,7 +274,7 @@ void EnZog_Init(Actor* thisx, PlayState* play) { Animation_PlayLoop(&this->skelAnime, D_80B958DC[0]); this->actor.textId = 0x1009; - if (gSaveContext.save.weekEventReg[91] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_91_02)) { this->actor.textId = 0x103C; this->actionFunc = func_80B9451C; } else { @@ -645,7 +645,7 @@ void func_80B9461C(EnZog* this, PlayState* play) { this->actor.textId = 0x103C; this->actionFunc = func_80B9451C; this->actor.flags |= ACTOR_FLAG_2000000; - gSaveContext.save.weekEventReg[91] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_91_02); } if ((this->unk_304 == 11) && ((s32)this->skelAnime.curFrame >= 55)) { @@ -748,11 +748,11 @@ void func_80B94A00(EnZog* this, PlayState* play) { if (func_80B93BE0(this, play)) { this->actionFunc = func_80B948A8; this->actor.flags |= ACTOR_FLAG_2000000; - if (gSaveContext.save.weekEventReg[29] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_29_20)) { this->actor.textId = 0x1009; } else { this->actor.textId = 0x1008; - gSaveContext.save.weekEventReg[29] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_29_20); } this->unk_300 = 2; this->unk_31C = 2; @@ -876,7 +876,7 @@ void func_80B94E34(EnZog* this, PlayState* play) { if ((player->actor.speedXZ > 3.0f) && (this->unk_324 == 0)) { this->unk_324 = 25; - func_800B8E58(player, player->ageProperties->unk_92 + NA_SE_VO_LI_PUSH); + func_800B8E58(player, player->ageProperties->voiceSfxIdOffset + NA_SE_VO_LI_PUSH); } } this->actor.speedXZ *= 0.3f; @@ -905,7 +905,7 @@ void func_80B94E34(EnZog* this, PlayState* play) { this->unk_31C = 1; this->unk_31E = 0; func_80B93BA8(this, 0); - gSaveContext.save.weekEventReg[88] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_88_10); } else if ((this->actor.yawTowardsPlayer > 16000) && (this->actor.yawTowardsPlayer < 32000) && (this->unk_302 == 0)) { func_800B8614(&this->actor, play, 150.0f); @@ -939,7 +939,7 @@ void func_80B95128(EnZog* this, PlayState* play) { } this->actor.flags &= ~ACTOR_FLAG_10000; - gSaveContext.save.weekEventReg[91] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_91_01); } else { func_800B8614(&this->actor, play, 150.0f); } diff --git a/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.c b/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.c index f882c9711..2f6f0e791 100644 --- a/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.c +++ b/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.c @@ -118,7 +118,7 @@ void EnZoraegg_Init(Actor* thisx, PlayState* play) { case ENZORAEGG_1F_07: case ENZORAEGG_1F_08: case ENZORAEGG_1F_09: - if (gSaveContext.save.weekEventReg[19] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_19_40)) { Actor_Kill(&this->actor); return; } @@ -131,7 +131,7 @@ void EnZoraegg_Init(Actor* thisx, PlayState* play) { case ENZORAEGG_1F_0E: case ENZORAEGG_1F_0F: case ENZORAEGG_1F_10: - if (!(gSaveContext.save.weekEventReg[19] & 0x40)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_19_40)) { Actor_Kill(&this->actor); return; } @@ -405,7 +405,7 @@ void func_80B32390(EnZoraegg* this, PlayState* play) { if (temp_v0 != NULL) { ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, temp_v0); - gSaveContext.eventInf[3] |= 8; + SET_EVENTINF(EVENTINF_33); Actor_Kill(&this->actor); } } else if ((func_80B319A8(play) >= 7) && @@ -475,7 +475,7 @@ void func_80B326F4(EnZoraegg* this, PlayState* play) { Animation_GetLastFrame(&object_zoraegg_Anim_004D20), ANIMMODE_ONCE, 5.0f); this->unk_1E8 = 0; this->actionFunc = func_80B32644; - gSaveContext.save.weekEventReg[19] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_19_40); this->unk_1EC = 2; this->unk_1EE = 100; Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_ZORA_KIDS_SWIM_2); @@ -556,13 +556,13 @@ void func_80B32A88(EnZoraegg* this, PlayState* play) { } void func_80B32B10(EnZoraegg* this, PlayState* play) { - if (gSaveContext.eventInf[3] & 8) { + if (CHECK_EVENTINF(EVENTINF_33)) { this->actionFunc = func_80B32A88; } } void func_80B32B3C(EnZoraegg* this, PlayState* play) { - if (gSaveContext.eventInf[3] & 8) { + if (CHECK_EVENTINF(EVENTINF_33)) { this->actionFunc = func_80B32A88; this->actor.draw = EnZoraegg_Draw; } diff --git a/src/overlays/actors/ovl_En_Zos/z_en_zos.c b/src/overlays/actors/ovl_En_Zos/z_en_zos.c index 0570d4c6d..ba37c3ffe 100644 --- a/src/overlays/actors/ovl_En_Zos/z_en_zos.c +++ b/src/overlays/actors/ovl_En_Zos/z_en_zos.c @@ -100,11 +100,11 @@ void EnZos_Init(Actor* thisx, PlayState* play) { switch (ENZOS_GET_F(&this->actor)) { case ENZOS_F_1: - if (!(gSaveContext.save.weekEventReg[55] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { Actor_Kill(&this->actor); } - if (gSaveContext.save.weekEventReg[78] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_78_01)) { this->actionFunc = func_80BBC24C; } else { this->actionFunc = func_80BBC14C; @@ -120,7 +120,7 @@ void EnZos_Init(Actor* thisx, PlayState* play) { break; default: - if (gSaveContext.save.weekEventReg[55] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { Actor_Kill(&this->actor); } this->actor.flags |= ACTOR_FLAG_10; @@ -131,7 +131,7 @@ void EnZos_Init(Actor* thisx, PlayState* play) { void EnZos_Destroy(Actor* thisx, PlayState* play) { EnZos* this = THIS; - gSaveContext.save.weekEventReg[52] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_52_10); } static AnimationHeader* sAnimations[] = { @@ -223,7 +223,7 @@ void func_80BBB15C(EnZos* this, PlayState* play) { textId = 0x123E; EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); this->unk_2B6 |= 2; - } else if (gSaveContext.save.weekEventReg[40] & 0x20) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_40_20)) { textId = 0x1236; EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); this->unk_2B6 |= 0x80; @@ -234,13 +234,13 @@ void func_80BBB15C(EnZos* this, PlayState* play) { } } else { this->unk_2B6 &= ~2; - if (gSaveContext.save.weekEventReg[39] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_39_10)) { textId = 0x1243; EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); this->unk_2B6 |= 0x80; } else { textId = 0x1244; - gSaveContext.save.weekEventReg[39] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_39_10); EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_LOOK_DOWN, ANIMMODE_LOOP); this->unk_2B6 |= 0x10; } @@ -254,7 +254,7 @@ void func_80BBB2C4(EnZos* this, PlayState* play) { this->actionFunc = func_80BBB8AC; this->actor.flags &= ~ACTOR_FLAG_10000; } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -264,11 +264,11 @@ void func_80BBB354(EnZos* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actor.parent = NULL; this->actionFunc = func_80BBB2C4; - gSaveContext.save.weekEventReg[39] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_39_20); this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { - if (gSaveContext.save.weekEventReg[39] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_39_20)) { getItemId = GI_RUPEE_PURPLE; } else { getItemId = GI_HEART_PIECE; @@ -361,36 +361,37 @@ void func_80BBB574(EnZos* this, PlayState* play) { } void func_80BBB718(EnZos* this, PlayState* play) { - s32 sp24; + PlayerItemAction itemAction; Player* player = GET_PLAYER(play); SkelAnime_Update(&this->skelAnime); if (Message_GetState(&play->msgCtx) == TEXT_STATE_16) { - sp24 = func_80123810(play); - if (sp24 > 0) { + itemAction = func_80123810(play); + + if (itemAction > PLAYER_IA_NONE) { func_801477B4(play); - if (sp24 == 25) { + if (itemAction == PLAYER_IA_BOTTLE_ZORA_EGG) { player->actor.textId = 0x1232; EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_ARMS_OUT, ANIMMODE_LOOP); this->unk_2B6 |= 8; - gSaveContext.save.weekEventReg[40] |= 0x20; - } else if (gSaveContext.save.weekEventReg[39] & 8) { + SET_WEEKEVENTREG(WEEKEVENTREG_40_20); + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_39_08)) { player->actor.textId = 0x1241; } else { player->actor.textId = 0x1237; - gSaveContext.save.weekEventReg[39] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_39_08); EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_LOOK_DOWN, ANIMMODE_LOOP); this->unk_2B6 |= 4; } this->actionFunc = func_80BBB8AC; - } else if (sp24 < 0) { - if (gSaveContext.save.weekEventReg[39] & 8) { + } else if (itemAction <= PLAYER_IA_MINUS1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_39_08)) { func_80151938(play, 0x1241); } else { func_80151938(play, 0x1237); - gSaveContext.save.weekEventReg[39] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_39_08); EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_LOOK_DOWN, ANIMMODE_LOOP); this->unk_2B6 |= 4; } @@ -502,12 +503,12 @@ void func_80BBBB84(EnZos* this, PlayState* play) { this->actionFunc = func_80BBB8AC; EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); this->unk_2B6 |= 2; - } else if (gSaveContext.save.weekEventReg[41] & 0x10) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_41_10)) { Message_StartTextbox(play, 0x124A, &this->actor); this->actionFunc = func_80BBB8AC; EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); } else { - gSaveContext.save.weekEventReg[41] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_41_10); Message_StartTextbox(play, 0x124B, &this->actor); this->actionFunc = func_80BBB574; EnZos_ChangeAnim(this, EN_ZOS_ANIM_INSPIRED, ANIMMODE_ONCE); @@ -525,7 +526,7 @@ void func_80BBBCBC(EnZos* this, PlayState* play) { Message_StartTextbox(play, 0x124D, &this->actor); this->actionFunc = func_80BBB574; } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -534,7 +535,7 @@ void func_80BBBD5C(EnZos* this, PlayState* play) { if (!Cutscene_CheckActorAction(play, 0x1F5)) { this->actionFunc = func_80BBBCBC; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -571,9 +572,9 @@ void func_80BBBDE0(EnZos* this, PlayState* play) { } if (!Actor_IsFacingPlayer(&this->actor, 0x4000) && (this->actor.xzDistToPlayer < 100.0f)) { - gSaveContext.save.weekEventReg[52] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_52_10); } else { - gSaveContext.save.weekEventReg[52] &= (u8)~0x10; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_52_10); } sp28.x = this->actor.projectedPos.x; @@ -586,13 +587,13 @@ void func_80BBBFBC(EnZos* this, PlayState* play) { u16 textId; if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { - if (gSaveContext.save.weekEventReg[79] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_01)) { textId = 0x125B; - } else if (gSaveContext.save.weekEventReg[78] & 0x80) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_78_80)) { textId = 0x125A; } else { textId = 0x1259; - gSaveContext.save.weekEventReg[78] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_78_80); } EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_ARMS_OUT, ANIMMODE_LOOP); } else { @@ -653,7 +654,7 @@ void func_80BBC22C(EnZos* this, PlayState* play) { void func_80BBC24C(EnZos* this, PlayState* play) { func_80BBB0D4(this, play); - if (gSaveContext.save.weekEventReg[79] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_01)) { this->actionFunc = func_80BBC22C; EnZos_ChangeAnim(this, EN_ZOS_ANIM_PLAY_RIGHT, ANIMMODE_ONCE); } diff --git a/src/overlays/actors/ovl_En_Zot/z_en_zot.c b/src/overlays/actors/ovl_En_Zot/z_en_zot.c index f8a9c0bd2..417a6388e 100644 --- a/src/overlays/actors/ovl_En_Zot/z_en_zot.c +++ b/src/overlays/actors/ovl_En_Zot/z_en_zot.c @@ -185,14 +185,14 @@ void EnZot_Init(Actor* thisx, PlayState* play2) { func_80B96BEC(this, 2, ANIMMODE_LOOP); this->actor.colChkInfo.cylRadius = 0; this->actor.shape.yOffset = -1400.0f; - if (!(gSaveContext.save.weekEventReg[55] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { Actor_Kill(&this->actor); } break; case 18: this->actionFunc = func_80B99384; - if (!(gSaveContext.save.weekEventReg[55] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { Actor_Kill(&this->actor); } break; @@ -220,7 +220,7 @@ void EnZot_Init(Actor* thisx, PlayState* play2) { break; } - if ((ENZOT_GET_1F(thisx) >= 2) && (ENZOT_GET_1F(thisx) < 11) && (gSaveContext.save.weekEventReg[55] & 0x80)) { + if ((ENZOT_GET_1F(thisx) >= 2) && (ENZOT_GET_1F(thisx) < 11) && CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { Actor_Kill(&this->actor); } } @@ -230,7 +230,7 @@ void EnZot_Destroy(Actor* thisx, PlayState* play) { Collider_DestroyCylinder(play, &this->collider); if (ENZOT_GET_1F(&this->actor) == 8) { - gSaveContext.save.weekEventReg[41] &= (u8)~0x20; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_41_20); } } @@ -362,17 +362,17 @@ void func_80B97110(EnZot* this, PlayState* play) { if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { textId = 0x125F; - if (gSaveContext.save.weekEventReg[28] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_28_80)) { textId = 0x1261; } else { - gSaveContext.save.weekEventReg[28] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_28_80); } } else { textId = 0x125C; - if (gSaveContext.save.weekEventReg[28] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_28_40)) { textId = 0x125E; } else { - gSaveContext.save.weekEventReg[28] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_28_40); } } Message_StartTextbox(play, textId, &this->actor); @@ -410,35 +410,35 @@ void func_80B97240(EnZot* this, PlayState* play) { void func_80B972E8(EnZot* this, PlayState* play) { u16 textId; - if (gSaveContext.save.weekEventReg[29] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_29_10)) { if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { textId = 0x126A; - if (gSaveContext.save.weekEventReg[29] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_29_01)) { textId = 0x126D; } else { - gSaveContext.save.weekEventReg[29] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_29_01); } } else { textId = 0x1267; - if (gSaveContext.save.weekEventReg[29] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_29_02)) { textId = 0x1269; } else { - gSaveContext.save.weekEventReg[29] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_29_02); } } } else if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { textId = 0x1265; - if (gSaveContext.save.weekEventReg[29] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_29_04)) { textId = 0x1266; } else { - gSaveContext.save.weekEventReg[29] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_29_04); } } else { textId = 0x1262; - if (gSaveContext.save.weekEventReg[29] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_29_08)) { textId = 0x1264; } else { - gSaveContext.save.weekEventReg[29] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_29_08); } } Message_StartTextbox(play, textId, &this->actor); @@ -516,7 +516,7 @@ void func_80B975F8(EnZot* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actionFunc = func_80B973BC; } else { - func_800B8500(&this->actor, play, 10000.0f, 1000.0f, PLAYER_AP_NONE); + func_800B8500(&this->actor, play, 10000.0f, 1000.0f, PLAYER_IA_NONE); } } @@ -560,7 +560,7 @@ void func_80B97708(EnZot* this, PlayState* play) { } if (phi_v1 != 0) { - gSaveContext.save.weekEventReg[29] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_29_10); this->actor.flags |= ACTOR_FLAG_10000; if (phi_v1 == 5) { if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { @@ -588,58 +588,58 @@ void func_80B9787C(EnZot* this, PlayState* play) { if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { switch (ENZOT_GET_1F(&this->actor)) { case 2: - if (gSaveContext.save.weekEventReg[37] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_37_40)) { textId = 0x127E; } else { textId = 0x127C; - gSaveContext.save.weekEventReg[37] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_37_40); } break; case 3: - if (gSaveContext.save.weekEventReg[38] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_38_01)) { textId = 0x1284; } else { textId = 0x1282; - gSaveContext.save.weekEventReg[38] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_38_01); } break; default: - if (gSaveContext.save.weekEventReg[38] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_38_04)) { textId = 0x128A; } else { textId = 0x1288; - gSaveContext.save.weekEventReg[38] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_38_04); } break; } } else { switch (ENZOT_GET_1F(&this->actor)) { case 2: - if (gSaveContext.save.weekEventReg[37] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_37_20)) { textId = 0x127B; } else { textId = 0x1279; - gSaveContext.save.weekEventReg[37] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_37_20); } break; case 3: - if (gSaveContext.save.weekEventReg[37] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_37_80)) { textId = 0x1281; } else { textId = 0x127F; - gSaveContext.save.weekEventReg[37] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_37_80); } break; default: - if (gSaveContext.save.weekEventReg[38] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_38_02)) { textId = 0x1287; } else { textId = 0x1285; - gSaveContext.save.weekEventReg[38] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_38_02); } break; } @@ -786,7 +786,7 @@ void func_80B97E4C(EnZot* this, PlayState* play) { this->actionFunc = func_80B97D6C; this->unk_2F2 |= 4; func_80B96BEC(this, 3, ANIMMODE_LOOP); - gSaveContext.save.weekEventReg[38] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_38_08); break; case 0x128B: @@ -803,7 +803,7 @@ void func_80B97FD0(EnZot* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actionFunc = func_80B97E4C; func_80B97BF8(this, play); - } else if (gSaveContext.save.weekEventReg[38] & 8) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_38_08)) { if ((this->actor.xzDistToPlayer < 120.0f) && (gSaveContext.save.playerForm == PLAYER_FORM_ZORA)) { this->unk_2F2 |= 4; this->actionFunc = func_80B97E0C; @@ -837,35 +837,35 @@ void func_80B98178(EnZot* this, PlayState* play) { if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { if (CURRENT_DAY == 3) { textId = 0x129D; - } else if (gSaveContext.save.weekEventReg[39] & 1) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_39_01)) { textId = 0x129C; } else { textId = 0x129B; - gSaveContext.save.weekEventReg[39] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_39_01); } - } else if (gSaveContext.save.weekEventReg[38] & 0x80) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_38_80)) { textId = 0x1293; } else { textId = 0x1291; - gSaveContext.save.weekEventReg[38] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_38_80); } break; case 7: if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { - if (gSaveContext.save.weekEventReg[39] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_39_04)) { textId = 0x12AA; } else { textId = 0x12A6; - gSaveContext.save.weekEventReg[39] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_39_04); } } else if (Flags_GetSwitch(play, this->actor.home.rot.z & 0x7F)) { textId = 0x12A0; - } else if (gSaveContext.save.weekEventReg[39] & 2) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_39_02)) { textId = 0x12A5; } else { textId = 0x12A2; - gSaveContext.save.weekEventReg[39] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_39_02); } break; @@ -877,7 +877,7 @@ void func_80B98178(EnZot* this, PlayState* play) { case 16: case 17: phi_v0 = (ENZOT_GET_1F(&this->actor) * 4) - 44; - if (gSaveContext.save.weekEventReg[79] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_01)) { phi_v0 += 2; } @@ -931,7 +931,7 @@ void func_80B9849C(EnZot* this, PlayState* play) { } this->actionFunc = func_80B98728; } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -941,22 +941,23 @@ void func_80B9854C(EnZot* this, PlayState* play) { this->actor.parent = NULL; this->actionFunc = func_80B9849C; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_AP_MINUS1); + func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { Actor_PickUp(&this->actor, play, this->unk_2D4, 10000.0f, 50.0f); } } void func_80B985EC(EnZot* this, PlayState* play) { - s32 itemActionParam; + PlayerItemAction itemAction; Player* player = GET_PLAYER(play); func_80B98348(this, play); if (Message_GetState(&play->msgCtx) == TEXT_STATE_16) { - itemActionParam = func_80123810(play); - if (itemActionParam > PLAYER_AP_NONE) { + itemAction = func_80123810(play); + + if (itemAction > PLAYER_IA_NONE) { func_801477B4(play); - if ((itemActionParam == PLAYER_AP_PICTO_BOX) && CHECK_QUEST_ITEM(QUEST_PICTOGRAPH) && + if ((itemAction == PLAYER_IA_PICTO_BOX) && CHECK_QUEST_ITEM(QUEST_PICTOGRAPH) && Snap_CheckFlag(PICTOGRAPH_LULU_HEAD)) { if (Snap_CheckFlag(PICTOGRAPH_LULU_RIGHT_ARM) && Snap_CheckFlag(PICTOGRAPH_LULU_LEFT_ARM)) { player->actor.textId = 0x12AE; @@ -968,7 +969,7 @@ void func_80B985EC(EnZot* this, PlayState* play) { player->actor.textId = 0x12AB; } this->actionFunc = func_80B98728; - } else if (itemActionParam < PLAYER_AP_NONE) { + } else if (itemAction <= PLAYER_IA_MINUS1) { func_80151938(play, 0x12AB); this->actionFunc = func_80B98728; } @@ -1076,17 +1077,17 @@ void func_80B98A4C(EnZot* this, PlayState* play) { u16 textId; if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { - if (gSaveContext.save.weekEventReg[39] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_39_80)) { textId = 0x12B6; } else { textId = 0x12B4; - gSaveContext.save.weekEventReg[39] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_39_80); } - } else if (gSaveContext.save.weekEventReg[39] & 0x40) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_39_40)) { textId = 0x12B3; } else { textId = 0x12B1; - gSaveContext.save.weekEventReg[39] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_39_40); } Message_StartTextbox(play, textId, &this->actor); } @@ -1104,14 +1105,14 @@ void func_80B98AD0(EnZot* this, PlayState* play) { case 0x12B8: func_801477B4(play); this->actionFunc = func_80B98CA8; - gSaveContext.save.weekEventReg[41] &= (u8)~0x20; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_41_20); AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); break; case 0x12BA: func_801477B4(play); this->actionFunc = func_80B98CA8; - gSaveContext.save.weekEventReg[41] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_41_20); AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); break; @@ -1126,7 +1127,7 @@ void func_80B98AD0(EnZot* this, PlayState* play) { void func_80B98BF4(EnZot* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actor.flags &= ~ACTOR_FLAG_10000; - if (gSaveContext.save.weekEventReg[41] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_41_20)) { Message_StartTextbox(play, 0x12B7, &this->actor); this->actionFunc = func_80B98AD0; } else { @@ -1159,7 +1160,7 @@ void func_80B98CA8(EnZot* this, PlayState* play) { } if (this->actor.xzDistToPlayer > 100.0f) { - gSaveContext.save.weekEventReg[41] &= (u8)~0x20; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_41_20); } } @@ -1168,17 +1169,17 @@ void func_80B98E10(EnZot* this, PlayState* play) { if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { if (Flags_GetSwitch(play, this->actor.home.rot.z & 0x7F)) { - if (gSaveContext.save.weekEventReg[40] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_40_04)) { textId = 0x12C5; } else { textId = 0x12C3; - gSaveContext.save.weekEventReg[40] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_40_04); } - } else if (gSaveContext.save.weekEventReg[40] & 2) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_40_02)) { textId = 0x12C2; } else { textId = 0x12C0; - gSaveContext.save.weekEventReg[40] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_40_02); } } else { if (Flags_GetSwitch(play, this->actor.home.rot.z & 0x7F)) { @@ -1188,10 +1189,10 @@ void func_80B98E10(EnZot* this, PlayState* play) { textId = 0x12BE; this->unk_2F2 |= 0x10; } - } else if (gSaveContext.save.weekEventReg[40] & 1) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_40_01)) { textId = 0x12BC; } else { - gSaveContext.save.weekEventReg[40] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_40_01); this->unk_2F2 |= 4; textId = 0x12BB; } @@ -1254,17 +1255,17 @@ void func_80B99160(EnZot* this, PlayState* play) { u16 textId; if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { - if (gSaveContext.save.weekEventReg[40] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_40_10)) { textId = 0x12CD; } else { textId = 0x12CA; - gSaveContext.save.weekEventReg[40] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_40_10); } - } else if (gSaveContext.save.weekEventReg[40] & 8) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_40_08)) { textId = 0x12C9; } else { textId = 0x12C6; - gSaveContext.save.weekEventReg[40] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_40_08); } Message_StartTextbox(play, textId, &this->actor); } @@ -1345,11 +1346,12 @@ void EnZot_Update(Actor* thisx, PlayState* play) { } Gfx* func_80B99580(GraphicsContext* gfxCtx) { - Gfx* dList = GRAPH_ALLOC(gfxCtx, sizeof(Gfx) * 2); + Gfx* gfxHead = GRAPH_ALLOC(gfxCtx, sizeof(Gfx)); + Gfx* gfx = gfxHead; - gSPEndDisplayList(dList); + gSPEndDisplayList(gfx++); - return dList; + return gfxHead; } s32 EnZot_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { diff --git a/src/overlays/actors/ovl_En_Zov/z_en_zov.c b/src/overlays/actors/ovl_En_Zov/z_en_zov.c index 81f81b052..851214b5d 100644 --- a/src/overlays/actors/ovl_En_Zov/z_en_zov.c +++ b/src/overlays/actors/ovl_En_Zov/z_en_zov.c @@ -107,7 +107,7 @@ void EnZov_Init(Actor* thisx, PlayState* play) { case ENZOV_F_1: this->actionFunc = func_80BD1F1C; func_80BD1570(this, 9, ANIMMODE_LOOP); - if (!(gSaveContext.save.weekEventReg[55] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { Actor_Kill(&this->picto.actor); return; } @@ -120,7 +120,7 @@ void EnZov_Init(Actor* thisx, PlayState* play) { default: this->unk_320 |= 2; - if ((gSaveContext.save.weekEventReg[55] & 0x80) || (gSaveContext.save.weekEventReg[53] & 0x20)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80) || CHECK_WEEKEVENTREG(WEEKEVENTREG_53_20)) { Actor_Kill(&this->picto.actor); } break; @@ -185,7 +185,7 @@ s32 func_80BD15A4(EnZov* this, PlayState* play) { void func_80BD160C(EnZov* this, PlayState* play) { s32 textId = 0; - if (gSaveContext.save.weekEventReg[53] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_53_20)) { this->unk_320 &= ~2; if (gSaveContext.save.playerForm != PLAYER_FORM_ZORA) { textId = 0x1024; @@ -391,7 +391,7 @@ void func_80BD1D30(EnZov* this, PlayState* play) { u16 textId; if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { - if (gSaveContext.save.weekEventReg[79] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_01)) { textId = 0x1032; } else { textId = 0x1033; @@ -426,7 +426,7 @@ void func_80BD1DB8(EnZov* this, PlayState* play) { play->nextEntrance = play->setupExitList[ENZOV_GET_FE00(&this->picto.actor)]; play->transitionType = TRANS_TYPE_05; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.weekEventReg[78] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_78_01); this->actionFunc = func_80BD1D94; play->msgCtx.msgLength = 0; Audio_QueueSeqCmd(0x101400FF); diff --git a/src/overlays/actors/ovl_En_Zow/z_en_zow.c b/src/overlays/actors/ovl_En_Zow/z_en_zow.c index 2d4bf1605..7e3709162 100644 --- a/src/overlays/actors/ovl_En_Zow/z_en_zow.c +++ b/src/overlays/actors/ovl_En_Zow/z_en_zow.c @@ -357,45 +357,45 @@ void func_80BDD1E0(EnZow* this, PlayState* play) { u16 phi_a1; if (ENZOW_GET_F(&this->actor) == ENZOW_F_1) { - if (gSaveContext.save.weekEventReg[55] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { - if (gSaveContext.save.weekEventReg[78] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_78_04)) { phi_a1 = 0x12FD; } else { phi_a1 = 0x12FA; - gSaveContext.save.weekEventReg[78] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_78_04); } - } else if (gSaveContext.save.weekEventReg[78] & 0x10) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_78_10)) { phi_a1 = 0x1301; } else { - gSaveContext.save.weekEventReg[78] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_78_10); phi_a1 = 0x12FF; } } else if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { - if (gSaveContext.save.weekEventReg[78] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_78_08)) { phi_a1 = 0x12F8; } else { phi_a1 = 0x12F3; - gSaveContext.save.weekEventReg[78] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_78_08); } - } else if (gSaveContext.save.weekEventReg[78] & 0x10) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_78_10)) { phi_a1 = 0x1301; } else { - gSaveContext.save.weekEventReg[78] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_78_10); phi_a1 = 0x12FF; } - } else if (gSaveContext.save.weekEventReg[55] & 0x80) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { phi_a1 = 0x12EC; } else { phi_a1 = 0x12F1; } } else if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { - if (gSaveContext.save.weekEventReg[78] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_78_02)) { phi_a1 = 0x12EB; } else { phi_a1 = 0x12E8; - gSaveContext.save.weekEventReg[78] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_78_02); } } else { phi_a1 = 0x12EF; @@ -589,11 +589,12 @@ void EnZow_Update(Actor* thisx, PlayState* play) { } Gfx* func_80BDDA7C(GraphicsContext* gfxCtx) { - Gfx* gfx = GRAPH_ALLOC(gfxCtx, sizeof(Gfx) * 2); + Gfx* gfxHead = GRAPH_ALLOC(gfxCtx, sizeof(Gfx)); + Gfx* gfx = gfxHead; - gSPEndDisplayList(gfx); + gSPEndDisplayList(gfx++); - return gfx; + return gfxHead; } Vec3f D_80BDDD4C = { 400.0f, 0.0f, 0.0f }; diff --git a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c index 2a8a63fec..35f37d5d8 100644 --- a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c +++ b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c @@ -546,7 +546,7 @@ void func_80937FC8(ObjBean* this, PlayState* play) { this->unk_1E8(this); if (Actor_ProcessTalkRequest(&this->dyna.actor, &play->state)) { - if (Player_GetExchangeItemId(play) == PLAYER_AP_MAGIC_BEANS) { + if (Player_GetExchangeItemId(play) == PLAYER_IA_MAGIC_BEANS) { func_809383B4(this); Flags_SetSwitch(play, OBJBEAN_GET_3F80(&this->dyna.actor, 0)); } @@ -591,7 +591,7 @@ void func_809381C4(ObjBean* this, PlayState* play) { if (ActorCutscene_GetCanPlayNext(this->dyna.actor.cutscene)) { ActorCutscene_StartAndSetUnkLinkFields(this->dyna.actor.cutscene, &this->dyna.actor); if (this->dyna.actor.cutscene >= 0) { - func_800B7298(play, &this->dyna.actor, 1); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_1); } this->unk_1E4 = 2; func_80938284(this); @@ -748,7 +748,7 @@ void func_80938780(ObjBean* this, PlayState* play) { if (ActorCutscene_GetCanPlayNext(this->dyna.actor.cutscene)) { ActorCutscene_StartAndSetUnkLinkFields(this->dyna.actor.cutscene, &this->dyna.actor); if (this->dyna.actor.cutscene >= 0) { - func_800B7298(play, &this->dyna.actor, 1); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_1); } this->unk_1B4 = 36; func_80937130(this); diff --git a/src/overlays/actors/ovl_Obj_Boat/z_obj_boat.c b/src/overlays/actors/ovl_Obj_Boat/z_obj_boat.c index 6545b98e5..c48ff332c 100644 --- a/src/overlays/actors/ovl_Obj_Boat/z_obj_boat.c +++ b/src/overlays/actors/ovl_Obj_Boat/z_obj_boat.c @@ -124,7 +124,7 @@ void ObjBoat_Update(Actor* thisx, PlayState* play) { sp3C = this->unk_15D * (OBJBOAT_GET_4000(thisx) ? 5.0f : 3.0f); } } - if (player->csMode != 0x1A) { + if (player->csMode != PLAYER_CSMODE_26) { Math_ScaledStepToS(&this->dyna.actor.shape.rot.y, sp3A, (s16)(s32)(fabsf(this->dyna.actor.speedXZ) * 40.0f)); this->dyna.actor.world.rot.y = this->dyna.actor.shape.rot.y; Math_StepToF(&this->dyna.actor.speedXZ, sp3C, 0.05f); diff --git a/src/overlays/actors/ovl_Obj_Boyo/z_obj_boyo.c b/src/overlays/actors/ovl_Obj_Boyo/z_obj_boyo.c index 387d79616..cfecbdad0 100644 --- a/src/overlays/actors/ovl_Obj_Boyo/z_obj_boyo.c +++ b/src/overlays/actors/ovl_Obj_Boyo/z_obj_boyo.c @@ -82,7 +82,7 @@ void ObjBoyo_UpdatePlayerBumpValues(ObjBoyo* this, Player* target) { void ObjBoyo_UpdatePirateBumpValues(ObjBoyo* src, EnKaizoku* target) { target->unk_2F0 = 30.0f; - target->unk_2F4 = Actor_YawBetweenActors(&src->actor, &target->actor); + target->unk_2F4 = Actor_YawBetweenActors(&src->actor, &target->picto.actor); } void ObjBoyo_UpdateBombBumpValues(ObjBoyo* src, EnBom* target) { diff --git a/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c b/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c index e77ea9890..27f5cc273 100644 --- a/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c +++ b/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c @@ -310,8 +310,8 @@ void ObjChan_PotAction(ObjChan* this, PlayState* play) { SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 20, NA_SE_EV_CHANDELIER_BROKEN); func_80BB9A1C((ObjChan*)this->actor.parent, 40.0f); if (this->myPotIndex == 4) { - if (!(((void)0, gSaveContext.save.weekEventReg[0x25]) & 0x10)) { - gSaveContext.save.weekEventReg[0x25] = ((void)0, gSaveContext.save.weekEventReg[0x25]) | 0x10; + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_37_10)) { + SET_WEEKEVENTREG(WEEKEVENTREG_37_10); Actor_SpawnAsChildAndCutscene(&play->actorCtx, play, ACTOR_EN_MM, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0, 0x8000, this->actor.cutscene, this->actor.unk20, NULL); diff --git a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c index 367bf1619..b03344708 100644 --- a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c +++ b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c @@ -334,7 +334,7 @@ void ObjComb_Init(Actor* thisx, PlayState* play) { Actor_ProcessInitChain(&this->actor, sInitChain); Collider_InitJntSph(play, &this->collider); - if ((sp2C == 1) && OBJCOMB_GET_10(&this->actor) && (gSaveContext.save.weekEventReg[83] & 2)) { + if ((sp2C == 1) && OBJCOMB_GET_10(&this->actor) && CHECK_WEEKEVENTREG(WEEKEVENTREG_83_02)) { Actor_Kill(&this->actor); return; } @@ -495,7 +495,7 @@ void func_8098E0B8(ObjComb* this, PlayState* play) { if ((this->unk_1B4 == 10) && (this->unk_1B6 != 0) && (this->unk_1B5 == 2) && (this->actor.cutscene >= 0)) { if (ActorCutscene_GetCurrentIndex() == this->actor.cutscene) { - func_800B7298(play, &this->actor, 4); + func_800B7298(play, &this->actor, PLAYER_CSMODE_4); } } } @@ -529,12 +529,12 @@ void ObjComb_Update(Actor* thisx, PlayState* play) { if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) { ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, &this->actor); if (this->actor.cutscene >= 0) { - func_800B7298(play, &this->actor, 1); + func_800B7298(play, &this->actor, PLAYER_CSMODE_1); } if (((OBJCOMB_GET_8000(&this->actor) | OBJCOMB_GET_80(&this->actor)) == 1) && OBJCOMB_GET_10(&this->actor)) { - gSaveContext.save.weekEventReg[83] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_83_02); } this->unk_1B5 = 2; diff --git a/src/overlays/actors/ovl_Obj_Dinner/z_obj_dinner.c b/src/overlays/actors/ovl_Obj_Dinner/z_obj_dinner.c index 0b6a6b988..5a9ef2d05 100644 --- a/src/overlays/actors/ovl_Obj_Dinner/z_obj_dinner.c +++ b/src/overlays/actors/ovl_Obj_Dinner/z_obj_dinner.c @@ -31,7 +31,7 @@ ActorInit Obj_Dinner_InitVars = { void ObjDinner_Init(Actor* thisx, PlayState* play) { ObjDinner* this = THIS; - if (gSaveContext.save.isNight != true || (CURRENT_DAY == 3 && gSaveContext.save.weekEventReg[22] & 1)) { + if ((gSaveContext.save.isNight != true) || ((CURRENT_DAY == 3) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01))) { Actor_Kill(&this->actor); } Actor_SetScale(&this->actor, 0.1f); diff --git a/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c b/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c index c89c8ffca..0581706d5 100644 --- a/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c +++ b/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c @@ -44,7 +44,7 @@ static InitChainEntry D_80B3C96C[] = { }; void func_80B3C260(ObjGhaka* this) { - if (gSaveContext.save.weekEventReg[20] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_20)) { this->dyna.actor.world.pos.z = this->dyna.actor.home.pos.z + 100.0f; } this->actionFunc = func_80B3C39C; @@ -59,7 +59,7 @@ void func_80B3C2B0(ObjGhaka* this) { } void func_80B3C2C4(ObjGhaka* this, PlayState* play) { - if (!(gSaveContext.save.weekEventReg[20] & 0x20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_20_20)) { Actor_SpawnAsChildAndCutscene(&play->actorCtx, play, ACTOR_BG_GORON_OYU, 0.0f, 25.0f, 261.0f, 0, 0, 0, 0, this->dyna.actor.cutscene, this->dyna.actor.unk20, 0); } else { @@ -84,7 +84,8 @@ void func_80B3C39C(ObjGhaka* this, PlayState* play) { } } } - if (this->dyna.pushForce < 0.0f && !(gSaveContext.save.weekEventReg[20] & 0x20) && + + if (this->dyna.pushForce < 0.0f && !CHECK_WEEKEVENTREG(WEEKEVENTREG_20_20) && player->transformation == PLAYER_FORM_GORON) { func_80B3C2B0(this); } else { @@ -138,7 +139,7 @@ void func_80B3C624(ObjGhaka* this, PlayState* play) { player->stateFlags2 &= ~PLAYER_STATE2_10; this->dyna.pushForce = 0.0f; func_80B3C2C4(this, play); - gSaveContext.save.weekEventReg[20] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_20_20); func_80B3C260(this); Audio_PlaySfxAtPos(&D_80B3C960, NA_SE_EV_BLOCK_BOUND); } else { @@ -160,7 +161,7 @@ void ObjGhaka_Init(Actor* thisx, PlayState* play) { if (this->dyna.actor.floorPoly == 0) { Actor_Kill(&this->dyna.actor); } - if (gSaveContext.save.weekEventReg[20] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_20)) { func_80B3C2C4(this, play); } func_80B3C260(this); diff --git a/src/overlays/actors/ovl_Obj_Grass_Carry/z_obj_grass_carry.c b/src/overlays/actors/ovl_Obj_Grass_Carry/z_obj_grass_carry.c index 568e10141..9872fb0b7 100644 --- a/src/overlays/actors/ovl_Obj_Grass_Carry/z_obj_grass_carry.c +++ b/src/overlays/actors/ovl_Obj_Grass_Carry/z_obj_grass_carry.c @@ -356,5 +356,5 @@ void ObjGrassCarry_Update(Actor* thisx, PlayState* play) { } void func_809ABB7C(Actor* this, PlayState* play) { - Gfx_DrawDListOpa(play, gKusaBushType1); + Gfx_DrawDListOpa(play, gKusaBushType1DL); } diff --git a/src/overlays/actors/ovl_Obj_Hgdoor/z_obj_hgdoor.c b/src/overlays/actors/ovl_Obj_Hgdoor/z_obj_hgdoor.c index 5ecd2a63f..e3972be18 100644 --- a/src/overlays/actors/ovl_Obj_Hgdoor/z_obj_hgdoor.c +++ b/src/overlays/actors/ovl_Obj_Hgdoor/z_obj_hgdoor.c @@ -94,7 +94,7 @@ void ObjHgdoor_SetupIdle(ObjHgdoor* this) { } void ObjHgdoor_Idle(ObjHgdoor* this, PlayState* play) { - if (!(gSaveContext.save.weekEventReg[75] & 0x20) && !(gSaveContext.save.weekEventReg[52] & 0x20) && + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_75_20) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_52_20) && (this->dyna.actor.xzDistToPlayer < 100.0f) && (this->dyna.actor.playerHeightRel < 40.0f) && OBJHGDOOR_IS_RIGHT_DOOR(&this->dyna.actor)) { ObjHgdoor_SetChild(this, play); diff --git a/src/overlays/actors/ovl_Obj_Hugebombiwa/z_obj_hugebombiwa.c b/src/overlays/actors/ovl_Obj_Hugebombiwa/z_obj_hugebombiwa.c index 8210f23d3..cade13522 100644 --- a/src/overlays/actors/ovl_Obj_Hugebombiwa/z_obj_hugebombiwa.c +++ b/src/overlays/actors/ovl_Obj_Hugebombiwa/z_obj_hugebombiwa.c @@ -412,7 +412,7 @@ void func_80A54CEC(ObjHugebombiwa* this, PlayState* play) { Flags_SetSwitch(play, ENHUGEBOMBIWA_GET_7F(&this->actor)); if (!(ENHUGEBOMBIWA_GET_100(&this->actor)) && ((play->sceneId == SCENE_17SETUGEN) || (play->sceneId == SCENE_17SETUGEN2))) { - gSaveContext.save.weekEventReg[19] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_19_02); } if (!(ENHUGEBOMBIWA_GET_100(&this->actor))) { diff --git a/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.c b/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.c index cf6588c31..13f49fd1f 100644 --- a/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.c +++ b/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.c @@ -116,7 +116,7 @@ void ObjIcePoly_Init(Actor* thisx, PlayState* play) { thisx->shape.rot.z = -0x500; if (((this->unk_149 != OBJICEPOLY_FF_FF) && Flags_GetSwitch(play, this->unk_149)) || - ((play->sceneId == SCENE_KAJIYA) && (gSaveContext.save.weekEventReg[33] & 0x80))) { + ((play->sceneId == SCENE_KAJIYA) && CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80))) { Actor_Kill(thisx); return; } diff --git a/src/overlays/actors/ovl_Obj_Iceblock/z_obj_iceblock.c b/src/overlays/actors/ovl_Obj_Iceblock/z_obj_iceblock.c index 8a039c496..8c88c35ee 100644 --- a/src/overlays/actors/ovl_Obj_Iceblock/z_obj_iceblock.c +++ b/src/overlays/actors/ovl_Obj_Iceblock/z_obj_iceblock.c @@ -921,7 +921,7 @@ void ObjIceblock_Init(Actor* thisx, PlayState* play) { } DynaPolyActor_Init(&this->dyna, 1); - DynaPolyActor_LoadMesh(play, &this->dyna, &gIceBlockDynaColHeader); + DynaPolyActor_LoadMesh(play, &this->dyna, &gIceBlockCol); func_800C62BC(play, &play->colCtx.dyna, this->dyna.bgId); Collider_InitCylinder(play, &this->collider); Collider_SetCylinder(play, &this->collider, &this->dyna.actor, &sCylinderInit); @@ -1208,7 +1208,7 @@ void func_80A25FD4(ObjIceblock* this, PlayState* play) { func_80A23370(this, sp2C); func_80A260E8(this); sp30 = false; - func_800B7298(play, &this->dyna.actor, 7); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_7); this->unk_1B0 |= 1; } @@ -1254,7 +1254,7 @@ void func_80A26144(ObjIceblock* this, PlayState* play) { if ((this->unk_1B0 & 1) && (isBool || sp28 || (this->dyna.actor.xzDistToPlayer > 400.0f))) { this->unk_1B0 &= ~1; - func_800B7298(play, &this->dyna.actor, 6); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_6); } if (isBool) { @@ -1453,7 +1453,7 @@ void ObjIceblock_Update(Actor* thisx, PlayState* play) { this->unk_1B0 &= ~0x100; if (this->unk_1B0 & 1) { this->unk_1B0 &= ~1; - func_800B7298(play, &this->dyna.actor, 6); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_6); } func_80A266C4(this); } diff --git a/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c b/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c index fefa5797d..c46821ac1 100644 --- a/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c +++ b/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c @@ -87,7 +87,7 @@ void func_8099FB64(Actor* thisx, PlayState* play) { Matrix_RotateXS(thisx->shape.rot.x, MTXMODE_APPLY); Matrix_RotateZS(thisx->shape.rot.z, MTXMODE_APPLY); Matrix_MultVec3f(&D_8099FE3C, &destVec); - rotY = Math_FAtan2F(destVec.z, destVec.x); + rotY = Math_Atan2S_XY(destVec.z, destVec.x); } actor = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_SW, thisx->world.pos.x, thisx->world.pos.y, thisx->world.pos.z, 0, rotY, 0, (OBJMAKEKINSUTA_GET_1F(thisx) << 2) | 0xFF01); @@ -130,7 +130,7 @@ void func_8099FD7C(Actor* thisx, PlayState* play) { if (ActorCutscene_GetCanPlayNext(thisx->cutscene)) { ActorCutscene_StartAndSetUnkLinkFields(thisx->cutscene, thisx); if (thisx->cutscene >= 0) { - func_800B7298(play, thisx, 4); + func_800B7298(play, thisx, PLAYER_CSMODE_4); } func_8099FB64(thisx, play); thisx->update = Actor_Noop; diff --git a/src/overlays/actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c b/src/overlays/actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c index 358cfde4b..8ff6e8455 100644 --- a/src/overlays/actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c +++ b/src/overlays/actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c @@ -58,7 +58,7 @@ void ObjMilkBin_Init(Actor* thisx, PlayState* play) { this->disableDraw = 0; this->type = thisx->params; - if ((this->type == OBJ_MILK_BIN_TYPE_2) && !(gSaveContext.save.weekEventReg[52] & 1)) { + if ((this->type == OBJ_MILK_BIN_TYPE_2) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01)) { this->disableDraw |= 1; } } @@ -74,14 +74,14 @@ void ObjMilkBin_Update(Actor* thisx, PlayState* play2) { ObjMilkBin* this = THIS; if (this->type == OBJ_MILK_BIN_TYPE_1) { - if (gSaveContext.save.weekEventReg[22] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { if (((gSaveContext.save.day == 2) && (gSaveContext.save.isNight == 1)) || (gSaveContext.save.day >= 3)) { Actor_Kill(&this->actor); return; } } } else if (this->type == OBJ_MILK_BIN_TYPE_2) { - if (gSaveContext.save.weekEventReg[52] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01)) { this->disableDraw &= ~1; } else { this->disableDraw |= 1; diff --git a/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c b/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c index e6f9ec496..18c36f87e 100644 --- a/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c +++ b/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c @@ -49,8 +49,8 @@ void ObjMoonStone_Init(Actor* thisx, PlayState* play) { this->actor.colChkInfo.health = 0; this->actor.flags |= (ACTOR_FLAG_1 | ACTOR_FLAG_8); func_80C0662C(this); - } else if (!(gSaveContext.save.weekEventReg[74] & 0x40)) { - if ((gSaveContext.save.weekEventReg[74] & 0x80)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_74_40)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_74_80)) { Actor_Spawn(&play->actorCtx, play, 1, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0, -1); } @@ -97,14 +97,14 @@ void func_80C0670C(ObjMoonStone* this, PlayState* play) { } void func_80C0673C(ObjMoonStone* this) { - if (!(gSaveContext.save.weekEventReg[74] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_74_80)) { this->actor.draw = NULL; } this->actionFunc = func_80C06768; } void func_80C06768(ObjMoonStone* this, PlayState* play) { - if ((gSaveContext.save.weekEventReg[74] & 0x80)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_74_80)) { if (this->actor.draw == NULL) { this->actor.draw = ObjMoonStone_Draw; Actor_Spawn(&play->actorCtx, play, 1, this->actor.world.pos.x, this->actor.world.pos.y, @@ -128,7 +128,7 @@ void func_80C0685C(ObjMoonStone* this) { void func_80C06870(ObjMoonStone* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { - gSaveContext.save.weekEventReg[74] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_74_40); Actor_Kill(&this->actor); } } diff --git a/src/overlays/actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c b/src/overlays/actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c index 2dca46caa..e2750e639 100644 --- a/src/overlays/actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c +++ b/src/overlays/actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c @@ -40,7 +40,7 @@ ActorInit Obj_Mu_Pict_InitVars = { void ObjMuPict_Init(Actor* thisx, PlayState* play) { ObjMuPict* this = THIS; - if (!(gSaveContext.save.weekEventReg[75] & 0x20) && !(gSaveContext.save.weekEventReg[52] & 0x20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_75_20) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_52_20)) { Actor_Kill(&this->actor); } diff --git a/src/overlays/actors/ovl_Obj_Nozoki/z_obj_nozoki.c b/src/overlays/actors/ovl_Obj_Nozoki/z_obj_nozoki.c index 55d148f4a..933ea06d2 100644 --- a/src/overlays/actors/ovl_Obj_Nozoki/z_obj_nozoki.c +++ b/src/overlays/actors/ovl_Obj_Nozoki/z_obj_nozoki.c @@ -407,17 +407,17 @@ void func_80BA311C(ObjNozoki* this, PlayState* play) { } void func_80BA3230(ObjNozoki* this, PlayState* play) { - if (gSaveContext.save.weekEventReg[64] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_64_20)) { Actor* npc = play->actorCtx.actorLists[ACTORCAT_NPC].first; Actor* test3 = SubS_FindActor(play, npc, ACTORCAT_NPC, ACTOR_EN_TEST3); if ((test3 != NULL) && (test3->draw != NULL)) { - if ((play->curSpawn == 3) && !(gSaveContext.save.weekEventReg[64] & 0x40)) { + if ((play->curSpawn == 3) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_64_40)) { this->dyna.actor.flags |= (ACTOR_FLAG_1 | ACTOR_FLAG_8 | ACTOR_FLAG_10000); this->dyna.actor.textId = 0x297A; } else { this->dyna.actor.flags |= (ACTOR_FLAG_1 | ACTOR_FLAG_8); - if (gSaveContext.save.weekEventReg[64] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_64_40)) { this->dyna.actor.textId = 0; } else { this->dyna.actor.textId = 0x2979; @@ -434,9 +434,9 @@ void func_80BA3230(ObjNozoki* this, PlayState* play) { } void func_80BA3344(ObjNozoki* this, PlayState* play) { - if ((play->curSpawn == 3) && !(gSaveContext.save.weekEventReg[64] & 0x40)) { + if ((play->curSpawn == 3) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_64_40)) { if (Actor_TextboxIsClosing(&this->dyna.actor, play)) { - gSaveContext.save.weekEventReg[64] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_64_40); this->dyna.actor.flags &= ~ACTOR_FLAG_10000; ObjNozoki_SetupAction(this, func_80BA3230); } diff --git a/src/overlays/actors/ovl_Obj_Purify/z_obj_purify.c b/src/overlays/actors/ovl_Obj_Purify/z_obj_purify.c index 29ffa674e..ee26937da 100644 --- a/src/overlays/actors/ovl_Obj_Purify/z_obj_purify.c +++ b/src/overlays/actors/ovl_Obj_Purify/z_obj_purify.c @@ -109,14 +109,11 @@ s32 ObjPurify_IsPurified(ObjPurify* this) { ObjPurifyInfo* info = &sObjPurifyInfo[OBJPURIFY_GET_INFO_INDEX(&this->dyna.actor)]; if (!info->isDekuCity) { - // woodfall temple wood flower unraveled - if (gSaveContext.save.weekEventReg[12] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_12_01)) { return true; } - } - // woodfall temple purification cutscene watched - else { - if (gSaveContext.save.weekEventReg[20] & 2) { + } else { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02)) { return true; } } diff --git a/src/overlays/actors/ovl_Obj_Skateblock/z_obj_skateblock.c b/src/overlays/actors/ovl_Obj_Skateblock/z_obj_skateblock.c index 9265c6615..6a469eea0 100644 --- a/src/overlays/actors/ovl_Obj_Skateblock/z_obj_skateblock.c +++ b/src/overlays/actors/ovl_Obj_Skateblock/z_obj_skateblock.c @@ -535,7 +535,7 @@ void func_80A22334(ObjSkateblock* this, PlayState* play) { func_80A21C88(this, sp2C); func_80A2244C(this); sp30 = false; - func_800B7298(play, &this->dyna.actor, 7); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_7); this->unk_1C1 |= 1; } @@ -591,7 +591,7 @@ void func_80A224A4(ObjSkateblock* this, PlayState* play) { if ((this->unk_1C1 & 1) && (sp24 || sp28 || (this->dyna.actor.xzDistToPlayer > 400.0f))) { this->unk_1C1 &= ~1; - func_800B7298(play, &this->dyna.actor, 6); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_6); } func_80A21F74(this, play); diff --git a/src/overlays/actors/ovl_Obj_Spidertent/z_obj_spidertent.c b/src/overlays/actors/ovl_Obj_Spidertent/z_obj_spidertent.c index 214c74495..4708062da 100644 --- a/src/overlays/actors/ovl_Obj_Spidertent/z_obj_spidertent.c +++ b/src/overlays/actors/ovl_Obj_Spidertent/z_obj_spidertent.c @@ -529,7 +529,7 @@ s32 func_80B30480(ObjSpidertent* this, PlayState* play, Vec3f* arg2) { Vec3f sp58; f32 sp54; - if (player->itemActionParam == 7) { + if (player->heldItemAction == PLAYER_IA_STICK) { if (player->unk_B28 > 0) { for (i = 0; i < ARRAY_COUNT(this->colliderElements); i++) { triNorm = &this->collider.elements[i].dim; @@ -679,7 +679,7 @@ void func_80B30A4C(ObjSpidertent* this, PlayState* play) { if (ActorCutscene_GetCanPlayNext(this->dyna.actor.cutscene)) { ActorCutscene_StartAndSetUnkLinkFields(this->dyna.actor.cutscene, &this->dyna.actor); if (this->dyna.actor.cutscene >= 0) { - func_800B7298(play, &this->dyna.actor, 1); + func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_1); } Flags_SetSwitch(play, OBJSPIDERTENT_GET_7F00(&this->dyna.actor)); func_80B30AD4(this); diff --git a/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c b/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c index 7270f1a39..ada5eadd3 100644 --- a/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c +++ b/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c @@ -411,7 +411,7 @@ void ObjSwitch_Init(Actor* thisx, PlayState* play) { } } if (type == OBJSWITCH_TYPE_CRYSTAL) { - sCrystalSwitchAnimatedMat = Lib_SegmentedToVirtual(&gCrystalSwitchTexAnim); + sCrystalSwitchAnimatedMat = Lib_SegmentedToVirtual(gCrystalSwitchTexAnim); } if (OBJ_SWITCH_IS_FROZEN(&this->dyna.actor)) { ObjSwitch_EyeSwitchFrozenInit(this); diff --git a/src/overlays/actors/ovl_Obj_Swprize/z_obj_swprize.c b/src/overlays/actors/ovl_Obj_Swprize/z_obj_swprize.c index 5eeef1d5e..578244237 100644 --- a/src/overlays/actors/ovl_Obj_Swprize/z_obj_swprize.c +++ b/src/overlays/actors/ovl_Obj_Swprize/z_obj_swprize.c @@ -65,7 +65,7 @@ void func_80C253D0(ObjSwprize* this, PlayState* play) { if (sp78.y < 0.98f) { collectible->velocity.y = (sp78.y + 1.0f) * 4.0f; collectible->speedXZ = (2.0f * (1.0f - fabsf(sp78.y))) + 2.0f; - collectible->world.rot.y = Math_FAtan2F(sp78.z, sp78.x) + D_80C257F8[i]; + collectible->world.rot.y = Math_Atan2S_XY(sp78.z, sp78.x) + D_80C257F8[i]; } else { collectible->world.rot.y = i * (0x10000 / 3); } @@ -76,7 +76,7 @@ void func_80C253D0(ObjSwprize* this, PlayState* play) { if ((collectible != NULL) && (sp78.y < 0.98f)) { collectible->velocity.y = (sp78.y + 1.0f) * 4.0f; collectible->speedXZ = (2.0f * (1.0f - fabsf(sp78.y))) + 2.0f; - collectible->world.rot.y = Math_FAtan2F(sp78.z, sp78.x); + collectible->world.rot.y = Math_Atan2S_XY(sp78.z, sp78.x); } } } diff --git a/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c b/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c index e73892e89..96716d107 100644 --- a/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c +++ b/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c @@ -196,7 +196,7 @@ void ObjSyokudai_Update(Actor* thisx, PlayState* play2) { if (this->flameCollider.info.acHitInfo->toucher.dmgFlags & 0x820) { interaction = OBJ_SYOKUDAI_INTERACTION_ARROW_FA; } - } else if (player->itemActionParam == PLAYER_AP_STICK) { + } else if (player->heldItemAction == PLAYER_IA_STICK) { Vec3f stickTipSeparationVec; Math_Vec3f_Diff(&player->meleeWeaponInfo[0].tip, &thisx->world.pos, &stickTipSeparationVec); diff --git a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c index 0ee951066..704bc58c3 100644 --- a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c +++ b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c @@ -128,7 +128,7 @@ void ObjTokeidai_ExteriorGear_Init(ObjTokeidai* this, PlayState* play) { this->actionFunc = ObjTokeidai_ExteriorGear_OpenedIdle; this->actor.world.pos.y += this->actor.scale.y * 1900.0f; this->actor.shape.yOffset = 1500.0f; - gSaveContext.save.weekEventReg[8] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_08_40); } else { this->actionFunc = ObjTokeidai_ExteriorGear_Idle; } @@ -441,7 +441,7 @@ void ObjTokeidai_TerminaFieldWalls_Idle(ObjTokeidai* this, PlayState* play) { void ObjTokeidai_TowerOpening_EndCutscene(ObjTokeidai* this, PlayState* play) { if (Cutscene_CheckActorAction(play, 132) != 0 && play->csCtx.actorActions[Cutscene_GetActorActionIndex(play, 132)]->action == 5) { - gSaveContext.save.weekEventReg[8] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_08_40); if (((play->sceneId == SCENE_CLOCKTOWER) && (gSaveContext.sceneLayer == 2) && (play->csCtx.currentCsIndex == 0)) || ((play->sceneId == SCENE_00KEIKOKU) && (gSaveContext.sceneLayer == 2) && @@ -453,7 +453,8 @@ void ObjTokeidai_TowerOpening_EndCutscene(ObjTokeidai* this, PlayState* play) { play->transitionTrigger = TRANS_TRIGGER_START; play->nextEntrance = gSaveContext.respawn[RESPAWN_MODE_RETURN].entrance; play->transitionType = TRANS_TYPE_02; - if (gSaveContext.respawn[RESPAWN_MODE_RETURN].playerParams == 0xCFF) { + if (gSaveContext.respawn[RESPAWN_MODE_RETURN].playerParams == + PLAYER_PARAMS(0xFF, PLAYER_INITMODE_TELESCOPE)) { gSaveContext.nextTransitionType = TRANS_TYPE_21; } else { gSaveContext.nextTransitionType = TRANS_TYPE_02; @@ -588,7 +589,7 @@ void ObjTokeidai_TowerOpening_RaiseTower(ObjTokeidai* this, PlayState* play) { void ObjTokeidai_TowerOpening_Start(ObjTokeidai* this, PlayState* play) { if ((Cutscene_CheckActorAction(play, 132) && play->csCtx.actorActions[Cutscene_GetActorActionIndex(play, 132)]->action == 4) || - (gSaveContext.save.weekEventReg[8] & 0x40)) { + CHECK_WEEKEVENTREG(WEEKEVENTREG_08_40)) { this->actionFunc = ObjTokeidai_TowerOpening_RaiseTower; } } @@ -610,8 +611,8 @@ void ObjTokeidai_DoNothing(ObjTokeidai* this, PlayState* play) { } void ObjTokeidai_StaircaseToRooftop_Idle(ObjTokeidai* this, PlayState* play) { - if (((CURRENT_DAY == 3 && gSaveContext.save.time < CLOCK_TIME(6, 0)) || CURRENT_DAY >= 4) || - (gSaveContext.save.weekEventReg[8] & 0x40)) { + if ((((CURRENT_DAY == 3) && (gSaveContext.save.time < CLOCK_TIME(6, 0))) || CURRENT_DAY >= 4) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_08_40)) { this->actor.draw = ObjTokeidai_Draw; } else { this->actor.draw = NULL; @@ -686,7 +687,7 @@ void ObjTokeidai_TowerClock_Idle(ObjTokeidai* this, PlayState* play) { if (CURRENT_DAY == 3 && this->clockHour < 6 && gSaveContext.save.time < CLOCK_TIME(6, 0)) { this->actor.draw = ObjTokeidai_Clock_Draw; ObjTokeidai_SetupTowerOpening(this); - gSaveContext.save.weekEventReg[8] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_08_40); return; } diff --git a/src/overlays/actors/ovl_Obj_Um/z_obj_um.c b/src/overlays/actors/ovl_Obj_Um/z_obj_um.c index f3246089f..0309a511a 100644 --- a/src/overlays/actors/ovl_Obj_Um/z_obj_um.c +++ b/src/overlays/actors/ovl_Obj_Um/z_obj_um.c @@ -14,41 +14,41 @@ /** * weekEventReg flags checked by this actor: - * - gSaveContext.save.weekEventReg[22] & 1: Aliens defeated + * - WEEKEVENTREG_22_01: Aliens defeated * If false: The actor doesn't spawn - * - gSaveContext.save.weekEventReg[31] & 0x40 + * - WEEKEVENTREG_31_40 * If true: Cremia doesn't explain again she'll deliever milk to town - * - gSaveContext.save.weekEventReg[31] & 0x80 + * - WEEKEVENTREG_31_80 * If true: Triggers cutscene on Romani's Ranch - * - gSaveContext.save.weekEventReg[34] & 0x80 + * - WEEKEVENTREG_34_80 * If true: Doesn't spawn on Romani's Ranch - * - gSaveContext.save.weekEventReg[52] & 1 + * - WEEKEVENTREG_52_01 * If true: Doesn't spawn on Romani's Ranch or Milk Road - * - gSaveContext.save.weekEventReg[52] & 2 + * - WEEKEVENTREG_52_02 * If true: Doesn't spawn on Romani's Ranch or Milk Road - * - gSaveContext.save.weekEventReg[59] & 2 + * - WEEKEVENTREG_59_02 * If true: Doesn't spawn again on Milk Road * * weekEventReg flags set by this actor: - * - gSaveContext.save.weekEventReg[31] |= 0x40: Cremia offered a ride + * - WEEKEVENTREG_31_40: Cremia offered a ride * Cremia offered a ride accross the Milk Road to Player - * - gSaveContext.save.weekEventReg[31] |= 0x80: Player is in Milk Run - * Player accepts the ride and is with Cremia during the Milk Run. - * - gSaveContext.save.weekEventReg[34] |= 0x80: Cremia does Milk Run alone + * - WEEKEVENTREG_31_80: Player is in Milk Run + * Player accepts the ride and is with Cremia during the Milk Run + * - WEEKEVENTREG_34_80: Cremia does Milk Run alone * Player didn't interact or didn't accept the ride - * - gSaveContext.save.weekEventReg[52] |= 1: Won Milk Run minigame + * - WEEKEVENTREG_52_01: Won Milk Run minigame * At least one pot is safe. Turns off the "Lose Milk Run minigame" - * - gSaveContext.save.weekEventReg[52] |= 2: Lose Milk Run minigame + * - WEEKEVENTREG_52_02: Lose Milk Run minigame * Every pot was broken by bandits. Turns off the "Win Milk Run minigame" - * - gSaveContext.save.weekEventReg[59] |= 2: ? + * - WEEKEVENTREG_59_02: ? * Passed through Milk Road after winning the Milk Run * * weekEventReg flags unset by this actor: - * - gSaveContext.save.weekEventReg[31] &= (u8)~0x80 + * - WEEKEVENTREG_31_80 * Turned off when the Milk Run finishes - * - gSaveContext.save.weekEventReg[52] &= (u8)~1 + * - WEEKEVENTREG_52_01 * Turned off if Player lose the Milk Run - * - gSaveContext.save.weekEventReg[52] &= (u8)~2 + * - WEEKEVENTREG_52_02 * Turned off if Player wins the Milk Run */ @@ -683,7 +683,7 @@ void ObjUm_Init(Actor* thisx, PlayState* play) { this->initialPathIndex = OBJ_UM_GET_PATH_INDEX(thisx); // if (!AliensDefeated) - if (!(gSaveContext.save.weekEventReg[22] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { Actor_Kill(&this->dyna.actor); return; } @@ -692,7 +692,7 @@ void ObjUm_Init(Actor* thisx, PlayState* play) { ObjUm_SetupAction(this, ObjUm_TerminaFieldIdle); } else if (this->type == OBJ_UM_TYPE_RANCH) { this->pathIndex = this->initialPathIndex; - if (gSaveContext.save.weekEventReg[31] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_31_80)) { // In cutscene sp54 = false; @@ -702,9 +702,9 @@ void ObjUm_Init(Actor* thisx, PlayState* play) { } else { // Waiting for player - if ((gSaveContext.save.weekEventReg[34] & 0x80) || gSaveContext.save.time >= CLOCK_TIME(19, 0) || - gSaveContext.save.time <= CLOCK_TIME(6, 0) || (gSaveContext.save.weekEventReg[52] & 1) || - (gSaveContext.save.weekEventReg[52] & 2)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_34_80) || (gSaveContext.save.time >= CLOCK_TIME(19, 0)) || + (gSaveContext.save.time <= CLOCK_TIME(6, 0)) || CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_52_02)) { Actor_Kill(&this->dyna.actor); return; } @@ -714,12 +714,12 @@ void ObjUm_Init(Actor* thisx, PlayState* play) { ObjUm_SetupAction(this, ObjUm_RanchWait); } } else if (this->type == OBJ_UM_TYPE_PRE_MILK_RUN) { - if (!(gSaveContext.save.weekEventReg[31] & 0x80) || (gSaveContext.save.weekEventReg[52] & 1)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_31_80) || CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01)) { Actor_Kill(&this->dyna.actor); return; } - if (!(gSaveContext.save.weekEventReg[52] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_52_02)) { this->pathIndex = this->initialPathIndex; sp54 = false; func_800FE484(); @@ -728,7 +728,7 @@ void ObjUm_Init(Actor* thisx, PlayState* play) { ObjUm_RotatePlayer(this, play, 0); } } else if (this->type == OBJ_UM_TYPE_MILK_RUN_MINIGAME) { - if (!(gSaveContext.save.weekEventReg[31] & 0x80)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_31_80)) { Actor_Kill(&this->dyna.actor); return; } @@ -740,7 +740,7 @@ void ObjUm_Init(Actor* thisx, PlayState* play) { this->unk_354 = 0; ObjUm_RotatePlayer(this, play, 0); } else if (this->type == OBJ_UM_TYPE_POST_MILK_RUN) { - if (!(gSaveContext.save.weekEventReg[52] & 1) || (gSaveContext.save.weekEventReg[59] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01) || CHECK_WEEKEVENTREG(WEEKEVENTREG_59_02)) { Actor_Kill(&this->dyna.actor); return; } @@ -828,11 +828,11 @@ s32 func_80B795A0(PlayState* play, ObjUm* this, s32 arg2) { case 0x33B4: // "Want a ride?" case 0x33CF: - gSaveContext.save.weekEventReg[31] |= 0x40; + SET_WEEKEVENTREG(WEEKEVENTREG_31_40); if (play->msgCtx.choiceIndex == 0) { player = GET_PLAYER(play); func_8019F208(); - gSaveContext.save.weekEventReg[31] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_31_80); play->nextEntrance = ENTRANCE(ROMANI_RANCH, 11); if (player->stateFlags1 & PLAYER_STATE1_800000) { D_801BDAA0 = 1; @@ -907,7 +907,7 @@ u16 ObjUm_RanchGetDialogue(PlayState* play, ObjUm* this, s32 arg2) { u16 textId = 0; if (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { - if (gSaveContext.save.weekEventReg[31] & 0x40) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_31_40)) { // "Want a ride?" textId = 0x33CF; } else { @@ -999,7 +999,7 @@ void ObjUm_RanchWait(ObjUm* this, PlayState* play) { func_80B7984C(play, this, 0, &this->unk_2B4); } } else if (!func_80B79A24(this->unk_2B4) && (gSaveContext.save.time > CLOCK_TIME(19, 0))) { - gSaveContext.save.weekEventReg[34] |= 0x80; + SET_WEEKEVENTREG(WEEKEVENTREG_34_80); ObjUm_SetupAction(this, ObjUm_RanchWaitPathFinished); } @@ -1138,7 +1138,7 @@ void ObjUm_RanchWaitPathFinished(ObjUm* this, PlayState* play) { switch (ObjUm_UpdatePath(this, play)) { case OBJUM_PATH_STATE_1: case OBJUM_PATH_STATE_FINISH: - if (gSaveContext.save.weekEventReg[31] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_31_80)) { ActorCutscene_Stop(this->dyna.actor.cutscene); play->nextEntrance = ENTRANCE(MILK_ROAD, 5); play->transitionType = TRANS_TYPE_64; @@ -1296,24 +1296,24 @@ void ObjUm_RunMinigame(ObjUm* this, PlayState* play) { case OBJUM_PATH_STATE_1: case OBJUM_PATH_STATE_FINISH: gSaveContext.seqId = (u8)NA_BGM_DISABLED; - gSaveContext.save.weekEventReg[31] &= (u8)~0x80; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_31_80); gSaveContext.ambienceId = AMBIENCE_ID_DISABLED; - if (!(gSaveContext.save.weekEventReg[52] & 1) && !(gSaveContext.save.weekEventReg[52] & 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_52_02)) { if (!this->areAllPotsBroken) { play->nextEntrance = ENTRANCE(MILK_ROAD, 6); play->transitionType = TRANS_TYPE_64; gSaveContext.nextTransitionType = TRANS_TYPE_03; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.weekEventReg[52] |= 1; - gSaveContext.save.weekEventReg[52] &= (u8)~2; + SET_WEEKEVENTREG(WEEKEVENTREG_52_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_52_02); } else { play->nextEntrance = ENTRANCE(ROMANI_RANCH, 8); play->transitionType = TRANS_TYPE_64; gSaveContext.nextTransitionType = TRANS_TYPE_03; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.weekEventReg[52] |= 2; - gSaveContext.save.weekEventReg[52] &= (u8)~1; + SET_WEEKEVENTREG(WEEKEVENTREG_52_02); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_52_01); } } break; @@ -1545,10 +1545,10 @@ void ObjUm_PostMilkRunWaitPathFinished(ObjUm* this, PlayState* play) { this->wheelRot += 0x3E8; ObjUm_ChangeAnim(this, play, OBJ_UM_ANIM_TROT); - if ((ObjUm_UpdatePath(this, play) == OBJUM_PATH_STATE_4) && !(gSaveContext.save.weekEventReg[59] & 2)) { + if ((ObjUm_UpdatePath(this, play) == OBJUM_PATH_STATE_4) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_59_02)) { ActorCutscene_Stop(this->dyna.actor.cutscene); Audio_SetCutsceneFlag(false); - gSaveContext.save.weekEventReg[59] |= 2; + SET_WEEKEVENTREG(WEEKEVENTREG_59_02); gSaveContext.nextCutsceneIndex = 0xFFF3; play->nextEntrance = ENTRANCE(TERMINA_FIELD, 0); play->transitionType = TRANS_TYPE_64; @@ -1823,7 +1823,7 @@ s32 ObjUm_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p s16 sp3E; Vec3f sp30 = player->actor.world.pos; - sp30.y = player->bodyPartsPos[7].y + 3.0f; + sp30.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; sp3E = Math_Vec3f_Yaw(&this->dyna.actor.focus.pos, &sp30) - this->dyna.actor.shape.rot.y; temp_v0_3 = Math_Atan2S( this->dyna.actor.focus.pos.y - sp30.y, diff --git a/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.c b/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.c index d20f988fd..24e816644 100644 --- a/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.c +++ b/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.c @@ -80,7 +80,7 @@ s32 func_80C07CD0(void) { } } - if (gSaveContext.save.weekEventReg[22] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { return false; } return true; diff --git a/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c b/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c index 7d6ade650..3fa3260fd 100644 --- a/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c +++ b/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c @@ -181,11 +181,11 @@ void ObjWarpstone_Draw(Actor* thisx, PlayState* play2) { gDPSetEnvColor(POLY_XLU_DISP++, 100, 200, 0, 255); Matrix_RotateZF((((play->gameplayFrames * 1500) & 0xFFFF) * M_PI) / 0x8000, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gOwlStatueWhiteFlashDL); + gSPDisplayList(POLY_XLU_DISP++, gEffFlash1DL); Matrix_Pop(); Matrix_RotateZF((~((play->gameplayFrames * 1200) & 0xFFFF) * M_PI) / 0x8000, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_XLU_DISP++, gOwlStatueWhiteFlashDL); + gSPDisplayList(POLY_XLU_DISP++, gEffFlash1DL); CLOSE_DISPS(play->state.gfxCtx); } } diff --git a/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c b/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c index cfeaabcfd..184fed3d6 100644 --- a/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c +++ b/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c @@ -72,7 +72,7 @@ void func_808A7AAC(ObjWturn* this, PlayState* play) { ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, &this->actor); func_8016566C(140); this->subCamId = ActorCutscene_GetCurrentSubCamId(this->actor.cutscene); - func_800B7298(play, &this->actor, 21); + func_800B7298(play, &this->actor, PLAYER_CSMODE_21); subCamAt.x = player->actor.focus.pos.x; subCamAt.z = player->actor.focus.pos.z; subCamAt.y = player->actor.focus.pos.y; @@ -96,7 +96,7 @@ void func_808A7C04(ObjWturn* this, PlayState* play) { this->actor.world.pos.y += this->actor.playerHeightRel; player->actor.shape.shadowAlpha = 0; - func_800B7298(play, &this->actor, 0x54); + func_800B7298(play, &this->actor, PLAYER_CSMODE_84); func_800B8E58(player, NA_SE_VO_NAVY_ENEMY); this->unk_14A = 0; func_80165690(); diff --git a/src/overlays/actors/ovl_Obj_Yado/z_obj_yado.c b/src/overlays/actors/ovl_Obj_Yado/z_obj_yado.c index 02107b102..b4a78851a 100644 --- a/src/overlays/actors/ovl_Obj_Yado/z_obj_yado.c +++ b/src/overlays/actors/ovl_Obj_Yado/z_obj_yado.c @@ -4,6 +4,7 @@ * Description: Stockpot Inn - 2nd Floor Window */ +#include "prevent_bss_reordering.h" #include "z_obj_yado.h" #include "objects/object_yado_obj/object_yado_obj.h" diff --git a/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c b/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c index d923bdd20..dea819c7d 100644 --- a/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c +++ b/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c @@ -170,9 +170,10 @@ void ShotSun_UpdateHyliaSun(ShotSun* this, PlayState* play) { if (!(this->actor.xzDistToPlayer > 120.0f)) { if ((gSaveContext.save.time >= CLOCK_TIME(6, 30)) && (gSaveContext.save.time < CLOCK_TIME(7, 30))) { - cylinderPos.x = player->bodyPartsPos[7].x + (play->envCtx.unk_4 * (1.0f / 6.0f)); - cylinderPos.y = (player->bodyPartsPos[7].y - 30.0f) + (play->envCtx.unk_8 * (1.0f / 6.0f)); - cylinderPos.z = player->bodyPartsPos[7].z + (play->envCtx.unk_C * (1.0f / 6.0f)); + cylinderPos.x = player->bodyPartsPos[PLAYER_BODYPART_HEAD].x + (play->envCtx.unk_4 * (1.0f / 6.0f)); + cylinderPos.y = + (player->bodyPartsPos[PLAYER_BODYPART_HEAD].y - 30.0f) + (play->envCtx.unk_8 * (1.0f / 6.0f)); + cylinderPos.z = player->bodyPartsPos[PLAYER_BODYPART_HEAD].z + (play->envCtx.unk_C * (1.0f / 6.0f)); this->hitboxPos = cylinderPos; diff --git a/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.c b/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.c index 7d6cf277c..1108e61ce 100644 --- a/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.c +++ b/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.c @@ -71,7 +71,7 @@ u32 EffectSsEnIce_Init(PlayState* play, u32 index, EffectSs* this, void* initPar this->update = EffectSsEnIce_Update; this->rLifespan = initParams->life; this->rScale = initParams->scale * 100.0f; - this->rYaw = Math_FAtan2F(initParams->velocity.z, initParams->velocity.x); + this->rYaw = Math_Atan2S_XY(initParams->velocity.z, initParams->velocity.x); this->rPitch = 0; this->rPrimColorR = initParams->primColor.r; this->rPrimColorG = initParams->primColor.g; diff --git a/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.c b/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.c index 764828bf4..b81ccf594 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.c +++ b/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.c @@ -89,7 +89,7 @@ void EffectSsFhgFlash_Update(PlayState* play, u32 index, EffectSs* this) { if (this->rParams == FHGFLASH_SHOCK_PLAYER) { Player* player = GET_PLAYER(play); - randBodyPart = Rand_ZeroFloat(18 - 0.1f); + randBodyPart = Rand_ZeroFloat(PLAYER_BODYPART_MAX - 0.1f); this->pos.x = player->bodyPartsPos[randBodyPart].x + randPlusMinusPoint5Scaled(10.0f); this->pos.y = player->bodyPartsPos[randBodyPart].y + randPlusMinusPoint5Scaled(15.0f); this->pos.z = player->bodyPartsPos[randBodyPart].z + randPlusMinusPoint5Scaled(10.0f); diff --git a/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.c b/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.c index ebc28b469..52561fea2 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.c +++ b/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.c @@ -36,7 +36,7 @@ u32 EffectSsIcePiece_Init(PlayState* play, u32 index, EffectSs* this, void* init this->update = EffectSsIcePiece_Update; this->rLifespan = initParams->life; this->rScale = initParams->scale * 100.0f; - this->rYaw = Math_FAtan2F(initParams->velocity.z, initParams->velocity.x); + this->rYaw = Math_Atan2S_XY(initParams->velocity.z, initParams->velocity.x); this->rPitch = 0; this->rRotSpeed = ((fabsf(initParams->velocity.x) + fabsf(initParams->velocity.y)) * 100.0f) * (Rand_ZeroFloat(1.0f) + 0.5f); diff --git a/src/overlays/effects/ovl_Effect_Ss_Sbn/z_eff_ss_sbn.c b/src/overlays/effects/ovl_Effect_Ss_Sbn/z_eff_ss_sbn.c index d1a22473f..c5c058cc3 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Sbn/z_eff_ss_sbn.c +++ b/src/overlays/effects/ovl_Effect_Ss_Sbn/z_eff_ss_sbn.c @@ -111,9 +111,9 @@ u32 EffectSsSbn_Init(PlayState* play, u32 index, EffectSs* this, void* initParam opposite = (SQ(angle) >= 1.0f) ? 0.0f : sqrtf(1.0f - SQ(angle)); if (((mtx.mf[0][0] * colPolyVec.x) + (mtx.mf[0][1] * colPolyVec.y) + (mtx.mf[0][2] * colPolyVec.z)) < 0.0f) { - this->rRotAngle = Math_FAtan2F(angle, opposite); + this->rRotAngle = Math_Atan2S_XY(angle, opposite); } else { - this->rRotAngle = -Math_FAtan2F(angle, opposite); + this->rRotAngle = -Math_Atan2S_XY(angle, opposite); } } diff --git a/src/overlays/gamestates/ovl_opening/z_opening.c b/src/overlays/gamestates/ovl_opening/z_opening.c index fc5d05be2..c56cc4bbb 100644 --- a/src/overlays/gamestates/ovl_opening/z_opening.c +++ b/src/overlays/gamestates/ovl_opening/z_opening.c @@ -12,7 +12,7 @@ void TitleSetup_SetupTitleScreen(TitleSetupState* this) { static s32 sOpeningEntrances[] = { ENTRANCE(CUTSCENE, 0), ENTRANCE(CUTSCENE, 1) }; static s32 sOpeningCutscenes[] = { 0xFFFA, 0xFFFA }; - gSaveContext.eventInf[1] &= (u8)~0x80; + CLEAR_EVENTINF(EVENTINF_17); gSaveContext.gameMode = 1; Sram_InitNewSave(); diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index b7b21167e..461192d48 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -994,7 +994,7 @@ void MapSelect_DrawMenu(MapSelectState* this) { GfxPrint_Open(printer, POLY_OPA_DISP); MapSelect_PrintMenu(this, printer); - MapSelect_PrintAgeSetting(this, printer, ((void)0, gSaveContext.save.playerForm)); + MapSelect_PrintAgeSetting(this, printer, GET_PLAYER_FORM); MapSelect_PrintCutsceneSetting(this, printer, ((void)0, gSaveContext.save.cutscene)); POLY_OPA_DISP = GfxPrint_Close(printer); diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_collect.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_collect.c index d37b2d631..38f5224da 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_collect.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_collect.c @@ -326,7 +326,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play) { gDPSetCombineLERP(POLY_OPA_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); - if ((pauseCtx->state == 4) || (pauseCtx->state == 0x1A)) { + if ((pauseCtx->state == PAUSE_STATE_OPENING_3) || (pauseCtx->state == PAUSE_STATE_UNPAUSE_SETUP)) { gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sQuestHpPrimColorTargets[0][0], sQuestHpPrimColorTargets[0][1], sQuestHpPrimColorTargets[0][2], pauseCtx->alpha); } else { @@ -344,11 +344,11 @@ void KaleidoScope_DrawQuestStatus(PlayState* play) { j += 4; - if (pauseCtx->state == 6) { + if (pauseCtx->state == PAUSE_STATE_MAIN) { gDPPipeSync(POLY_OPA_DISP++); gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - if (pauseCtx->unk_200 == 2) { + if (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PLAYBACK) { // Draw ocarina buttons as they are played back pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff(); @@ -391,7 +391,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play) { POLY_OPA_DISP, sOcarinaButtonTextures[sQuestSongPlayedOcarinaButtons[i]], 16, 16, 0); } } - } else if (((pauseCtx->unk_200 >= 4) && (pauseCtx->unk_200 <= 6)) || (pauseCtx->unk_200 == 8)) { + } else if (IS_PAUSE_MAIN_STATE_SAVE_PROMPT || (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) { // Draw the buttons for playing a song sp1C8 = pauseCtx->ocarinaSongIndex; sp1CA = gOcarinaSongButtons[sp1C8].numButtons; @@ -407,7 +407,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play) { gDPPipeSync(POLY_OPA_DISP++); - if (pauseCtx->unk_200 == 8) { + if (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG) { // Draw ocarina buttons colored if (gOcarinaSongButtons[sp1C8].buttonIndex[k] == OCARINA_BTN_A) { gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 80, 150, 255, 200); @@ -425,7 +425,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play) { POLY_OPA_DISP, sOcarinaButtonTextures[gOcarinaSongButtons[sp1C8].buttonIndex[k]], 16, 16, 0); } - if (pauseCtx->unk_200 != 8) { + if (pauseCtx->mainState != PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG) { pauseCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff(); // Update ocarina song inputs @@ -475,7 +475,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play) { POLY_OPA_DISP, sOcarinaButtonTextures[sQuestSongPlayedOcarinaButtons[k]], 16, 16, 0); } - if (pauseCtx->unk_200 == 4) { + if (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT_INIT) { for (k = 0; k < 8; k++) { sQuestSongPlayedOcarinaButtons[k] = OCARINA_BTN_INVALID; sQuestSongPlayedOcarinaButtonsAlpha[k] = 0; @@ -487,7 +487,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play) { pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff(); pauseCtx->ocarinaStaff->pos = 0; pauseCtx->ocarinaStaff->state = 0xFE; - pauseCtx->unk_200 = 5; + pauseCtx->mainState = PAUSE_MAIN_STATE_SONG_PROMPT; } } } @@ -630,15 +630,17 @@ void KaleidoScope_UpdateQuestCursor(PlayState* play) { pauseCtx->nameColorSet = PAUSE_NAME_COLOR_SET_WHITE; pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_WHITE; - // != 0 - if ((pauseCtx->state == 6) && (!pauseCtx->unk_200 || (pauseCtx->unk_200 == 5) || (pauseCtx->unk_200 == 8)) && + // != PAUSE_MAIN_STATE_IDLE + if ((pauseCtx->state == PAUSE_STATE_MAIN) && + (!pauseCtx->mainState || (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT) || + (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) && (pauseCtx->pageIndex == PAUSE_QUEST) && !pauseCtx->itemDescriptionOn) { if (pauseCtx->cursorSpecialPos == 0) { oldCursorPoint = pauseCtx->cursorPoint[PAUSE_QUEST]; if (pauseCtx->stickAdjX < -30) { // Move cursor left - if (pauseCtx->unk_200 == 5) { + if (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); } pauseCtx->unk_298 = 4.0f; @@ -646,7 +648,7 @@ void KaleidoScope_UpdateQuestCursor(PlayState* play) { nextCursorPoint = sCursorPointLinks[oldCursorPoint].left; if (nextCursorPoint == CURSOR_TO_LEFT) { KaleidoScope_MoveCursorToSpecialPos(play, PAUSE_CURSOR_PAGE_LEFT); - pauseCtx->unk_200 = 0; + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; if (interfaceCtx->aButtonHorseDoAction == DO_ACTION_DECIDE) { Interface_SetAButtonDoAction(play, DO_ACTION_INFO); } @@ -661,7 +663,7 @@ void KaleidoScope_UpdateQuestCursor(PlayState* play) { } } else if (pauseCtx->stickAdjX > 30) { // Move cursor right - if (pauseCtx->unk_200 == 5) { + if (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); } pauseCtx->unk_298 = 4.0f; @@ -669,7 +671,7 @@ void KaleidoScope_UpdateQuestCursor(PlayState* play) { if (nextCursorPoint == CURSOR_TO_RIGHT) { KaleidoScope_MoveCursorToSpecialPos(play, PAUSE_CURSOR_PAGE_RIGHT); - pauseCtx->unk_200 = 0; + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; return; } @@ -683,7 +685,7 @@ void KaleidoScope_UpdateQuestCursor(PlayState* play) { if (pauseCtx->stickAdjY < -30) { // Move cursor down - if (pauseCtx->unk_200 == 5) { + if (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); } nextCursorPoint = sCursorPointLinks[oldCursorPoint].down; @@ -697,7 +699,7 @@ void KaleidoScope_UpdateQuestCursor(PlayState* play) { } } else if (pauseCtx->stickAdjY > 30) { // Move cursor up - if (pauseCtx->unk_200 == 5) { + if (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); } nextCursorPoint = sCursorPointLinks[oldCursorPoint].up; @@ -712,7 +714,7 @@ void KaleidoScope_UpdateQuestCursor(PlayState* play) { // if the cursor point changed if (oldCursorPoint != pauseCtx->cursorPoint[PAUSE_QUEST]) { - pauseCtx->unk_200 = 0; + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; play_sound(NA_SE_SY_CURSOR); } @@ -787,8 +789,8 @@ void KaleidoScope_UpdateQuestCursor(PlayState* play) { pauseCtx->cursorItem[pauseCtx->pageIndex] = cursorItem; pauseCtx->cursorSlot[pauseCtx->pageIndex] = cursor; - if ((pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && (pauseCtx->state == 6) && (pauseCtx->unk_200 == 0) && - (pauseCtx->cursorSpecialPos == 0)) { + if ((pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && (pauseCtx->state == PAUSE_STATE_MAIN) && + (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && (pauseCtx->cursorSpecialPos == 0)) { if ((cursor >= QUEST_SONG_SONATA) && (cursor <= QUEST_SONG_SUN)) { // Handle part of the ocarina songs playback if ((CHECK_QUEST_ITEM(pauseCtx->cursorPoint[PAUSE_QUEST]) || @@ -829,7 +831,7 @@ void KaleidoScope_UpdateQuestCursor(PlayState* play) { pauseCtx->ocarinaButtonsY[OCARINA_BTN_C_LEFT] = -46; pauseCtx->ocarinaButtonsY[OCARINA_BTN_C_UP] = -41; - pauseCtx->unk_200 = 8; + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG; if (interfaceCtx->aButtonHorseDoAction != DO_ACTION_DECIDE) { Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); @@ -873,7 +875,7 @@ void KaleidoScope_UpdateQuestCursor(PlayState* play) { if (CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_A) && (msgCtx->msgLength == 0)) { if (pauseCtx->cursorPoint[PAUSE_QUEST] == QUEST_BOMBERS_NOTEBOOK) { play->pauseCtx.bombersNotebookOpen = true; - pauseCtx->unk_200 = 0x10; + pauseCtx->mainState = PAUSE_MAIN_STATE_BOMBERS_NOTEBOOK_OPEN; play_sound(NA_SE_SY_DECIDE); } else { pauseCtx->itemDescriptionOn = true; @@ -898,31 +900,35 @@ void KaleidoScope_UpdateQuestCursor(PlayState* play) { Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } } - } else if (pauseCtx->unk_200 == 5) { + } else if (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT) { // Abort reading ocarina song input if the stick is moved if ((pauseCtx->stickAdjX != 0) || (pauseCtx->stickAdjY != 0)) { - pauseCtx->unk_200 = 0; + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); } - } else if ((pauseCtx->unk_200 == 8) && CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_A) && - (msgCtx->msgLength == 0) && (cursor >= QUEST_SONG_SONATA) && (cursor <= QUEST_SONG_SUN)) { - pauseCtx->unk_200 = 9; + } else if ((pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG) && + CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_A) && (msgCtx->msgLength == 0) && + (cursor >= QUEST_SONG_SONATA) && (cursor <= QUEST_SONG_SUN)) { + pauseCtx->mainState = PAUSE_MAIN_STATE_SONG_PLAYBACK_INIT; sQuestSongPlaybackDelayTimer = 10; } if (pauseCtx->cursorSpecialPos == 0) { if ((pauseCtx->cursorSlot[PAUSE_QUEST] >= 6) && (pauseCtx->cursorSlot[PAUSE_QUEST] < 0x12) && - ((pauseCtx->unk_200 <= 2) || (pauseCtx->unk_200 == 5) || (pauseCtx->unk_200 == 8)) && + ((pauseCtx->mainState <= PAUSE_MAIN_STATE_SONG_PLAYBACK) || + (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT) || + (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) && (pauseCtx->cursorItem[pauseCtx->pageIndex] != PAUSE_ITEM_NONE)) { pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_BLUE; - if ((pauseCtx->unk_200 >= 2) && (pauseCtx->unk_200 <= 6)) { + if ((pauseCtx->mainState >= PAUSE_MAIN_STATE_SONG_PLAYBACK) && + (pauseCtx->mainState <= PAUSE_MAIN_STATE_SONG_PROMPT_DONE)) { pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_WHITE; } } } } else if (pauseCtx->cursorSpecialPos == PAUSE_CURSOR_PAGE_LEFT) { if (pauseCtx->stickAdjX > 30) { - if (pauseCtx->unk_200 == 5) { + if (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); } @@ -940,7 +946,7 @@ void KaleidoScope_UpdateQuestCursor(PlayState* play) { pauseCtx->cursorSlot[pauseCtx->pageIndex] = cursor; } } else if (pauseCtx->stickAdjX < -30) { - if (pauseCtx->unk_200 == 5) { + if (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); } @@ -961,7 +967,7 @@ void KaleidoScope_UpdateQuestCursor(PlayState* play) { pauseCtx->cursorItem[pauseCtx->pageIndex] = cursorItem; pauseCtx->cursorSlot[pauseCtx->pageIndex] = cursor; } - } else if (pauseCtx->unk_200 == 9) { + } else if (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PLAYBACK_INIT) { // After a short delay, start the playback of the selected song pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_BLUE; @@ -989,7 +995,7 @@ void KaleidoScope_UpdateQuestCursor(PlayState* play) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT); pauseCtx->ocarinaSongIndex = gOcarinaSongItemMap[cursor - QUEST_SONG_SONATA]; AudioOcarina_SetPlaybackSong(pauseCtx->ocarinaSongIndex + 1, 1); - pauseCtx->unk_200 = 2; + pauseCtx->mainState = PAUSE_MAIN_STATE_SONG_PLAYBACK; pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff(); pauseCtx->ocarinaStaff->pos = 0; } diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c index 306863c80..474180826 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c @@ -15,7 +15,7 @@ s16 sEquipMagicArrowSlotHoldTimer = 0; // Number of frames to move icon from slot to target position when equipping. s16 sEquipAnimTimer = 10; -u8 gPlayerFormSlotRestrictions[PLAYER_FORM_MAX][24] = { +u8 gPlayerFormSlotRestrictions[PLAYER_FORM_MAX][NUM_ITEM_SLOTS] = { // Fierce Deity { false, // SLOT_OCARINA @@ -258,9 +258,9 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { // Loop over c-buttons (i) and vtx offset (j) gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha); - for (i = 0, j = 24 * 4; i < 3; i++, j += 4) { + for (i = 0, j = NUM_ITEM_SLOTS * 4; i < 3; i++, j += 4) { if (GET_CUR_FORM_BTN_ITEM(i + 1) != ITEM_NONE) { - if (GET_CUR_FORM_BTN_SLOT(i + 1) < 24) { + if (GET_CUR_FORM_BTN_SLOT(i + 1) < NUM_ITEM_SLOTS) { gSPVertex(POLY_OPA_DISP++, &pauseCtx->itemVtx[j], 4, 0); POLY_OPA_DISP = Gfx_DrawTexQuadIA8(POLY_OPA_DISP, gEquippedItemOutlineTex, 32, 32, 0); } @@ -272,11 +272,12 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { // Draw the item icons // Loop over slots (i) and vtx offset (j) gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - for (j = 0, i = 0; i < 24; i++, j += 4) { + for (j = 0, i = 0; i < NUM_ITEM_SLOTS; i++, j += 4) { gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha); if (((void)0, gSaveContext.save.inventory.items[i]) != ITEM_NONE) { - if ((pauseCtx->unk_200 == 0) && (pauseCtx->pageIndex == PAUSE_ITEM) && (pauseCtx->cursorSpecialPos == 0) && + if ((pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && (pauseCtx->pageIndex == PAUSE_ITEM) && + (pauseCtx->cursorSpecialPos == 0) && gPlayerFormSlotRestrictions[(void)0, gSaveContext.save.playerForm][i]) { if ((sEquipState == EQUIP_STATE_MAGIC_ARROW_HOVER_OVER_BOW_SLOT) && (i == SLOT_ARROW_ICE)) { // Possible bug: @@ -315,13 +316,14 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { // Draw the ammo digits if (pauseCtx->pageIndex == PAUSE_ITEM) { - if ((pauseCtx->state == 6) && ((pauseCtx->unk_200 == 0) || (pauseCtx->unk_200 == 3)) && - (pauseCtx->state != 7) && ((pauseCtx->state < 8) || (pauseCtx->state >= 0x13))) { + if ((pauseCtx->state == PAUSE_STATE_MAIN) && + ((pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) || (pauseCtx->mainState == PAUSE_MAIN_STATE_EQUIP_ITEM)) && + (pauseCtx->state != PAUSE_STATE_SAVEPROMPT) && !IS_PAUSE_STATE_GAMEOVER) { func_8012C628(play->state.gfxCtx); gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); // Loop over slots (i) and ammoIndex (j) - for (j = 0, i = 0; i < 24; i++) { + for (j = 0, i = 0; i < NUM_ITEM_SLOTS; i++) { if (gAmmoItems[i] != ITEM_NONE) { if (((void)0, gSaveContext.save.inventory.items[i]) != ITEM_NONE) { KaleidoScope_DrawAmmoCount(pauseCtx, play->state.gfxCtx, @@ -359,8 +361,8 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) { pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_WHITE; pauseCtx->nameColorSet = PAUSE_NAME_COLOR_SET_WHITE; - if ((pauseCtx->state == 6) && (pauseCtx->unk_200 == 0) && (pauseCtx->pageIndex == PAUSE_ITEM) && - !pauseCtx->itemDescriptionOn) { + if ((pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && + (pauseCtx->pageIndex == PAUSE_ITEM) && !pauseCtx->itemDescriptionOn) { moveCursorResult = PAUSE_CURSOR_RESULT_NONE; oldCursorPoint = pauseCtx->cursorPoint[PAUSE_ITEM]; @@ -396,7 +398,7 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) { pauseCtx->cursorPoint[PAUSE_ITEM] = pauseCtx->cursorXIndex[PAUSE_ITEM] + (pauseCtx->cursorYIndex[PAUSE_ITEM] * 6); - if (pauseCtx->cursorPoint[PAUSE_ITEM] >= 24) { + if (pauseCtx->cursorPoint[PAUSE_ITEM] >= NUM_ITEM_SLOTS) { pauseCtx->cursorPoint[PAUSE_ITEM] = pauseCtx->cursorXIndex[PAUSE_ITEM]; } @@ -427,7 +429,7 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) { pauseCtx->cursorPoint[PAUSE_ITEM] = pauseCtx->cursorXIndex[PAUSE_ITEM] + (pauseCtx->cursorYIndex[PAUSE_ITEM] * 6); - if (pauseCtx->cursorPoint[PAUSE_ITEM] >= 24) { + if (pauseCtx->cursorPoint[PAUSE_ITEM] >= NUM_ITEM_SLOTS) { pauseCtx->cursorPoint[PAUSE_ITEM] = pauseCtx->cursorXIndex[PAUSE_ITEM]; } @@ -593,7 +595,7 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) { if (cursorItem != PAUSE_ITEM_NONE) { // Equip item to the C buttons if ((pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && !pauseCtx->itemDescriptionOn && - (pauseCtx->state == 6) && (pauseCtx->unk_200 == 0) && + (pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && CHECK_BTN_ANY(CONTROLLER1(&play->state)->press.button, BTN_CLEFT | BTN_CDOWN | BTN_CRIGHT)) { // Ensure that a transformation mask can not be unequipped while being used @@ -647,7 +649,7 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) { // Equip item to the C buttons pauseCtx->equipTargetItem = cursorItem; pauseCtx->equipTargetSlot = cursorSlot; - pauseCtx->unk_200 = 3; + pauseCtx->mainState = PAUSE_MAIN_STATE_EQUIP_ITEM; vtxIndex = cursorSlot * 4; pauseCtx->equipAnimX = pauseCtx->itemVtx[vtxIndex].v.ob[0] * 10; pauseCtx->equipAnimY = pauseCtx->itemVtx[vtxIndex].v.ob[1] * 10; @@ -673,9 +675,9 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) { } else { play_sound(NA_SE_SY_DECIDE); } - } else if ((pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && (pauseCtx->state == 6) && - (pauseCtx->unk_200 == 0) && CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_A) && - (msgCtx->msgLength == 0)) { + } else if ((pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && (pauseCtx->state == PAUSE_STATE_MAIN) && + (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && + CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_A) && (msgCtx->msgLength == 0)) { // Give description on item through a message box pauseCtx->itemDescriptionOn = true; if (pauseCtx->cursorYIndex[PAUSE_ITEM] < 2) { @@ -692,7 +694,7 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) { if (oldCursorPoint != pauseCtx->cursorPoint[PAUSE_ITEM]) { play_sound(NA_SE_SY_CURSOR); } - } else if ((pauseCtx->unk_200 == 3) && (pauseCtx->pageIndex == PAUSE_ITEM)) { + } else if ((pauseCtx->mainState == PAUSE_MAIN_STATE_EQUIP_ITEM) && (pauseCtx->pageIndex == PAUSE_ITEM)) { pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_YELLOW; } } @@ -985,7 +987,7 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) { } // Reset params - pauseCtx->unk_200 = 0; + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; sEquipAnimTimer = 10; pauseCtx->equipAnimScale = 320; pauseCtx->equipAnimShrinkRate = 40; diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_map.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_map.c index 25c53d70d..87acfaa6c 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_map.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_map.c @@ -13,7 +13,7 @@ extern s16 D_8082B7F0[]; extern s16 D_8082B838[]; -extern TexturePtr D_09007500; // gPlayerFace +extern TexturePtr D_09007500; // gPlayerFaceIcon #define WORLD_MAP_IMAGE_TEX_WIDTH 216 #define WORLD_MAP_IMAGE_TEX_HEIGHT 128 @@ -168,11 +168,11 @@ void KaleidoScope_DrawDungeonMap(PlayState* play) { // Loop over dungeonItems (i) and vtxIndex (j) for (i = DUNGEON_BOSS_KEY, j = 4; i <= DUNGEON_STRAY_FAIRIES; i++, j += 4) { if (i == DUNGEON_STRAY_FAIRIES) { - if ((pauseCtx->pageIndex == PAUSE_MAP) && (pauseCtx->unk_200 == 0)) { - // If (pauseCtx->state == 6), then the other conditions are redundant and + if ((pauseCtx->pageIndex == PAUSE_MAP) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE)) { + // If (pauseCtx->state == PAUSE_STATE_MAIN), then the other conditions are redundant and // always return true - if ((pauseCtx->state == 6) && (pauseCtx->state != 7) && - !((pauseCtx->state >= 8) && (pauseCtx->state <= 0x12))) { + if ((pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->state != PAUSE_STATE_SAVEPROMPT) && + !IS_PAUSE_STATE_GAMEOVER) { KaleidoScope_SetView(pauseCtx, 0.0f, 0.0f, 64.0f); if (!sStrayFairyIconAlphaScaleState) { @@ -264,11 +264,11 @@ void KaleidoScope_DrawDungeonMap(PlayState* play) { func_80108AF8(play); - if ((pauseCtx->pageIndex == PAUSE_MAP) && (pauseCtx->unk_200 == 0)) { - // If (pauseCtx->state == 6), then the other conditions are redundant and always return + if ((pauseCtx->pageIndex == PAUSE_MAP) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE)) { + // If (pauseCtx->state == PAUSE_STATE_MAIN), then the other conditions are redundant and always return // true - if ((pauseCtx->state == 6) && (pauseCtx->state != 7) && - !((pauseCtx->state >= 8) && (pauseCtx->state <= 0x12))) { + if ((pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->state != PAUSE_STATE_SAVEPROMPT) && + !IS_PAUSE_STATE_GAMEOVER) { func_8012C628(play->state.gfxCtx); @@ -305,8 +305,8 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) { s16 i; s16 oldCursorPoint; - if (pauseCtx->state == 6) { - if ((pauseCtx->unk_200 == 0) && (pauseCtx->pageIndex == PAUSE_MAP)) { + if (pauseCtx->state == PAUSE_STATE_MAIN) { + if ((pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && (pauseCtx->pageIndex == PAUSE_MAP)) { pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_WHITE; oldCursorPoint = pauseCtx->cursorPoint[PAUSE_MAP]; if (pauseCtx->stickAdjX > 30) { @@ -540,9 +540,9 @@ void KaleidoScope_DrawWorldMap(PlayState* play) { KaleidoScope_SetCursorVtx(pauseCtx, pauseCtx->cursorSlot[PAUSE_MAP] * 4, pauseCtx->mapPageVtx); // Draw the world map image - if ((pauseCtx->pageIndex == PAUSE_MAP) && (pauseCtx->state == 6) && - ((pauseCtx->unk_200 == 0) || (pauseCtx->unk_200 == 3)) && YREG(6) && (pauseCtx->state != 7) && - !((pauseCtx->state >= 8) && (pauseCtx->state <= 0x12))) { + if ((pauseCtx->pageIndex == PAUSE_MAP) && (pauseCtx->state == PAUSE_STATE_MAIN) && + ((pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) || (pauseCtx->mainState == PAUSE_MAIN_STATE_EQUIP_ITEM)) && + YREG(6) && (pauseCtx->state != PAUSE_STATE_SAVEPROMPT) && !IS_PAUSE_STATE_GAMEOVER) { // Draw the world map image flat // Because it is flat, the texture is loaded by filling it in 8 rows at a time. @@ -650,7 +650,7 @@ void KaleidoScope_DrawWorldMap(PlayState* play) { } } - if ((pauseCtx->state >= 0x15) && (pauseCtx->state <= 0x19)) { + if (IS_PAUSE_STATE_OWLWARP) { gDPPipeSync(POLY_OPA_DISP++); gDPSetRenderMode(POLY_OPA_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); gDPSetCombineMode(POLY_OPA_DISP++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); @@ -660,7 +660,7 @@ void KaleidoScope_DrawWorldMap(PlayState* play) { func_8012C8AC(play->state.gfxCtx); - if (!((pauseCtx->state >= 0x15) && (pauseCtx->state <= 0x19))) { + if (!IS_PAUSE_STATE_OWLWARP) { // Browsing the world map regions on the pause menu gDPLoadTextureBlock(POLY_OPA_DISP++, gWorldMapDotTex, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, @@ -729,10 +729,11 @@ void KaleidoScope_DrawWorldMap(PlayState* play) { } // Find and draw Player's face at the current region based on the current scene - // If (pauseCtx->state == 6), then the other pauseCtx->state conditions are redundant + // If (pauseCtx->state == PAUSE_STATE_MAIN), then the other pauseCtx->state conditions are redundant // and always return true - if ((pauseCtx->pageIndex == PAUSE_MAP) && (pauseCtx->unk_200 == 0) && (pauseCtx->state == 6) && - (pauseCtx->state != 7) && !((pauseCtx->state >= 8) && (pauseCtx->state <= 0x12))) { + if ((pauseCtx->pageIndex == PAUSE_MAP) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && + (pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->state != PAUSE_STATE_SAVEPROMPT) && + !IS_PAUSE_STATE_GAMEOVER) { j = 0; n = 0; @@ -826,7 +827,8 @@ void KaleidoScope_UpdateWorldMapCursor(PlayState* play) { PauseContext* pauseCtx = &play->pauseCtx; s16 oldCursorPoint; - if ((pauseCtx->state == 6) && (pauseCtx->unk_200 == 0) && (pauseCtx->pageIndex == PAUSE_MAP)) { + if ((pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && + (pauseCtx->pageIndex == PAUSE_MAP)) { pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_WHITE; oldCursorPoint = pauseCtx->cursorPoint[PAUSE_WORLD_MAP]; @@ -937,7 +939,7 @@ void KaleidoScope_UpdateWorldMapCursor(PlayState* play) { if (oldCursorPoint != pauseCtx->cursorPoint[PAUSE_WORLD_MAP]) { play_sound(NA_SE_SY_CURSOR); } - } else if (pauseCtx->state == 0x17) { + } else if (pauseCtx->state == PAUSE_STATE_OWLWARP_SELECT) { pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_BLUE; oldCursorPoint = pauseCtx->cursorPoint[PAUSE_WORLD_MAP]; diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c index 6a7b3143d..02cb7ce46 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c @@ -223,7 +223,7 @@ void KaleidoScope_DrawMaskSelect(PlayState* play) { if (((void)0, gSaveContext.save.inventory.items[i + NUM_ITEM_SLOTS]) != ITEM_NONE) { if (!CHECK_GIVEN_MASK_ON_MOON(i)) { - if ((pauseCtx->unk_200 == 0) && (pauseCtx->pageIndex == PAUSE_MASK) && + if ((pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && (pauseCtx->pageIndex == PAUSE_MASK) && (pauseCtx->cursorSpecialPos == 0) && gMaskPlayerFormSlotRestrictions[(void)0, gSaveContext.save.playerForm][i]) { if ((sMaskEquipState == EQUIP_STATE_MAGIC_ARROW_HOVER_OVER_BOW_SLOT) && (i == SLOT_ARROW_ICE)) { @@ -288,8 +288,8 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) { pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_WHITE; pauseCtx->nameColorSet = PAUSE_NAME_COLOR_SET_WHITE; - if ((pauseCtx->state == 6) && (pauseCtx->unk_200 == 0) && (pauseCtx->pageIndex == PAUSE_MASK) && - !pauseCtx->itemDescriptionOn) { + if ((pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && + (pauseCtx->pageIndex == PAUSE_MASK) && !pauseCtx->itemDescriptionOn) { moveCursorResult = PAUSE_CURSOR_RESULT_NONE; oldCursorPoint = pauseCtx->cursorPoint[PAUSE_MASK]; @@ -533,7 +533,7 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) { if (cursorItem != PAUSE_ITEM_NONE) { // Equip item to the C buttons if ((pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && !pauseCtx->itemDescriptionOn && - (pauseCtx->state == 6) && (pauseCtx->unk_200 == 0) && + (pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && CHECK_BTN_ANY(input->press.button, BTN_CLEFT | BTN_CDOWN | BTN_CRIGHT)) { // Ensure that a mask is not unequipped while being used @@ -585,7 +585,7 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) { // Equip item to the C buttons pauseCtx->equipTargetItem = cursorItem; pauseCtx->equipTargetSlot = cursorSlot + NUM_ITEM_SLOTS; - pauseCtx->unk_200 = 0xF; + pauseCtx->mainState = PAUSE_MAIN_STATE_EQUIP_MASK; vtxIndex = cursorSlot * 4; pauseCtx->equipAnimX = pauseCtx->maskVtx[vtxIndex].v.ob[0] * 10; pauseCtx->equipAnimY = pauseCtx->maskVtx[vtxIndex].v.ob[1] * 10; @@ -594,9 +594,9 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) { sMaskEquipState = EQUIP_STATE_MOVE_TO_C_BTN; sMaskEquipAnimTimer = 10; play_sound(NA_SE_SY_DECIDE); - } else if ((pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && (pauseCtx->state == 6) && - (pauseCtx->unk_200 == 0) && CHECK_BTN_ALL(input->press.button, BTN_A) && - (msgCtx->msgLength == 0)) { + } else if ((pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && (pauseCtx->state == PAUSE_STATE_MAIN) && + (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && + CHECK_BTN_ALL(input->press.button, BTN_A) && (msgCtx->msgLength == 0)) { // Give description on item through a message box pauseCtx->itemDescriptionOn = true; if (pauseCtx->cursorYIndex[PAUSE_MASK] < 2) { @@ -613,7 +613,7 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) { if (oldCursorPoint != pauseCtx->cursorPoint[PAUSE_MASK]) { play_sound(NA_SE_SY_CURSOR); } - } else if ((pauseCtx->unk_200 == 0xF) && (pauseCtx->pageIndex == PAUSE_MASK)) { + } else if ((pauseCtx->mainState == PAUSE_MAIN_STATE_EQUIP_MASK) && (pauseCtx->pageIndex == PAUSE_MASK)) { pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_YELLOW; } } @@ -796,7 +796,7 @@ void KaleidoScope_UpdateMaskEquip(PlayState* play) { } // Reset params - pauseCtx->unk_200 = 0; + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; sMaskEquipAnimTimer = 10; pauseCtx->equipAnimScale = 320; pauseCtx->equipAnimShrinkRate = 40; diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_prompt.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_prompt.c index 53453e8e7..13e233b58 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_prompt.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_prompt.c @@ -17,7 +17,9 @@ void KaleidoScope_UpdatePrompt(PlayState* play) { s8 relStickX = input->rel.stick_x; s16 alphaStep; - if (((pauseCtx->state == 7) && (pauseCtx->unk_208 == 1)) || (pauseCtx->state == 0xE) || (pauseCtx->state == 0x11)) { + if (((pauseCtx->state == PAUSE_STATE_SAVEPROMPT) && (pauseCtx->savePromptState == PAUSE_SAVEPROMPT_STATE_1)) || + (pauseCtx->state == PAUSE_STATE_GAMEOVER_SAVE_PROMPT) || + (pauseCtx->state == PAUSE_STATE_GAMEOVER_CONTINUE_PROMPT)) { // Move the prompt if ((pauseCtx->promptChoice == PAUSE_PROMPT_YES) && (relStickX >= 30)) { diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h index 14c16ddcd..7349db241 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h @@ -16,6 +16,86 @@ typedef enum { /* 4 */ PAUSE_WORLD_MAP } PauseMenuPage; +// Direction of pause pages +#define PAUSE_ITEM_X (0) +#define PAUSE_ITEM_Z (-1) +#define PAUSE_MAP_X (1) +#define PAUSE_MAP_Z (0) +#define PAUSE_QUEST_X (0) +#define PAUSE_QUEST_Z (1) +#define PAUSE_MASK_X (-1) +#define PAUSE_MASK_Z (0) + +#define PAUSE_EYE_DIST (64.0f) + +typedef enum { + /* 0x00 */ PAUSE_STATE_OFF, + /* 0x01 */ PAUSE_STATE_OPENING_0, + /* 0x02 */ PAUSE_STATE_OPENING_1, + /* 0x03 */ PAUSE_STATE_OPENING_2, + /* 0x04 */ PAUSE_STATE_OPENING_3, + /* 0x05 */ PAUSE_STATE_OPENING_4, + /* 0x06 */ PAUSE_STATE_MAIN, // Pause menu ready for player inputs. + /* 0x07 */ PAUSE_STATE_SAVEPROMPT, + /* 0x08 */ PAUSE_STATE_GAMEOVER_0, + /* 0x09 */ PAUSE_STATE_GAMEOVER_1, + /* 0x0A */ PAUSE_STATE_GAMEOVER_2, + /* 0x0B */ PAUSE_STATE_GAMEOVER_3, + /* 0x0C */ PAUSE_STATE_GAMEOVER_4, + /* 0x0D */ PAUSE_STATE_GAMEOVER_5, + /* 0x0E */ PAUSE_STATE_GAMEOVER_SAVE_PROMPT, + /* 0x0F */ PAUSE_STATE_GAMEOVER_7, + /* 0x10 */ PAUSE_STATE_GAMEOVER_8, + /* 0x11 */ PAUSE_STATE_GAMEOVER_CONTINUE_PROMPT, + /* 0x12 */ PAUSE_STATE_GAMEOVER_10, + /* 0x13 */ PAUSE_STATE_OWLWARP_0, + /* 0x14 */ PAUSE_STATE_OWLWARP_1, + /* 0x15 */ PAUSE_STATE_OWLWARP_2, + /* 0x16 */ PAUSE_STATE_OWLWARP_3, + /* 0x17 */ PAUSE_STATE_OWLWARP_SELECT, // Selecting the destination + /* 0x18 */ PAUSE_STATE_OWLWARP_CONFIRM, // Confirming the choice given + /* 0x19 */ PAUSE_STATE_OWLWARP_6, + /* 0x1A */ PAUSE_STATE_UNPAUSE_SETUP, // Unpause + /* 0x1B */ PAUSE_STATE_UNPAUSE_CLOSE +} PauseState; + +typedef enum { + /* 0x00 */ PAUSE_MAIN_STATE_IDLE, // Await input for the next action + /* 0x01 */ PAUSE_MAIN_STATE_SWITCHING_PAGE, + /* 0x02 */ PAUSE_MAIN_STATE_SONG_PLAYBACK, + /* 0x03 */ PAUSE_MAIN_STATE_EQUIP_ITEM, + /* 0x04 */ PAUSE_MAIN_STATE_SONG_PROMPT_INIT, + /* 0x05 */ PAUSE_MAIN_STATE_SONG_PROMPT, + /* 0x06 */ PAUSE_MAIN_STATE_SONG_PROMPT_DONE, + /* 0x07 */ PAUSE_MAIN_STATE_SONG_PROMPT_UNUSED, + /* 0x08 */ PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG, // Await input but the cursor is on a song + /* 0x09 */ PAUSE_MAIN_STATE_SONG_PLAYBACK_INIT, + /* 0x0F */ PAUSE_MAIN_STATE_EQUIP_MASK = 0xF, + /* 0x10 */ PAUSE_MAIN_STATE_BOMBERS_NOTEBOOK_OPEN, + /* 0x11 */ PAUSE_MAIN_STATE_UNK +} PauseMainState; + +typedef enum { + /* 0x00 */ PAUSE_SAVEPROMPT_STATE_0, + /* 0x01 */ PAUSE_SAVEPROMPT_STATE_1, + /* 0x02 */ PAUSE_SAVEPROMPT_STATE_2, + /* 0x03 */ PAUSE_SAVEPROMPT_STATE_3, + /* 0x04 */ PAUSE_SAVEPROMPT_STATE_4, + /* 0x05 */ PAUSE_SAVEPROMPT_STATE_5, + /* 0x06 */ PAUSE_SAVEPROMPT_STATE_6, + /* 0x07 */ PAUSE_SAVEPROMPT_STATE_7 +} PauseSavePromptState; + +#define IS_PAUSE_STATE_GAMEOVER \ + ((pauseCtx->state >= PAUSE_STATE_GAMEOVER_0) && (pauseCtx->state <= PAUSE_STATE_GAMEOVER_10)) + +#define IS_PAUSE_STATE_OWLWARP \ + ((pauseCtx->state >= PAUSE_STATE_OWLWARP_2) && (pauseCtx->state <= PAUSE_STATE_OWLWARP_6)) + +#define IS_PAUSE_MAIN_STATE_SAVE_PROMPT \ + ((pauseCtx->mainState >= PAUSE_MAIN_STATE_SONG_PROMPT_INIT) && \ + (pauseCtx->mainState <= PAUSE_MAIN_STATE_SONG_PROMPT_DONE)) + typedef enum { /* 0 */ PAUSE_EQUIP_C_LEFT, /* 1 */ PAUSE_EQUIP_C_DOWN, @@ -36,6 +116,15 @@ typedef enum { /* 3 */ DEBUG_EDITOR_EVENTS } DebugEditor; +typedef enum { + /* 0 */ PAUSE_BG_PRERENDER_OFF, + /* 1 */ PAUSE_BG_PRERENDER_SETUP, // The current frame is only drawn for the purpose of serving as the pause background. + /* 2 */ PAUSE_BG_PRERENDER_PROCESS, // The previous frame was PAUSE_BG_PRERENDER_DRAW, now apply prerender filters. + /* 3 */ PAUSE_BG_PRERENDER_DONE, // The pause background is ready to be used. + /* 4 */ PAUSE_BG_PRERENDER_UNK4, + /* 5 */ PAUSE_BG_PRERENDER_MAX +} PauseBgPreRenderState; + #define PAUSE_NAME_COLOR_SET_WHITE 0 #define PAUSE_NAME_COLOR_SET_GREY 1 @@ -70,7 +159,7 @@ void KaleidoScope_UpdateWorldMapCursor(PlayState* play); // Collect void KaleidoScope_DrawQuestStatus(PlayState* play); -void KaleidoScope_UpdateQuestCursor(PlayState* play); +void KaleidoScope_UpdateQuestCursor(PlayState* play); // Item void KaleidoScope_SetCursorVtx(PauseContext* pauseCtx, u16 index, Vtx* vtx); diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c index a322fda1f..d7be8364c 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c @@ -5,6 +5,7 @@ */ #include "z_kaleido_scope.h" +#include "overlays/gamestates/ovl_opening/z_opening.h" #include "z64view.h" extern UNK_TYPE D_02001360; @@ -17,6 +18,8 @@ extern UNK_TYPE D_0B000000; extern UNK_TYPE D_0C000000; extern UNK_TYPE D_0C006C00; +extern u8 sUnpausedButtonStatus[5]; + void* D_8082B700[] = { 0x08064440, 0x0806E440, 0x08077A40, 0x08081040, 0x0808A640, 0x0D003A00, 0x0806EE40, 0x08078440, 0x08081A40, 0x0808B040, 0x08065840, 0x0806F840, 0x08078E40, 0x08082440, 0x0808BA40, @@ -45,42 +48,62 @@ s16 D_8082B838[] = { 0x0008, 0x0008, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, }; -s16 D_8082B880 = 0; -s16 D_8082B884 = 0; -s16 D_8082B888 = 0; -s16 D_8082B88C = 255; -s16 D_8082B890 = 0; -s16 D_8082B894 = 0; -s16 D_8082B898 = 0; -s16 D_8082B89C = 0; -s16 D_8082B8A0 = 0; -s16 D_8082B8A4 = 0; -s16 D_8082B8A8 = 255; -s16 D_8082B8AC = 0; -s16 D_8082B8B0 = 0; +s16 sGameOverPrimR = 0; +s16 sGameOverPrimG = 0; +s16 sGameOverPrimB = 0; +s16 sGameOverPrimAlpha = 255; +s16 sCursorPrimR = 0; +s16 sCursorPrimG = 0; +s16 sCursorPrimB = 0; +s16 sCursorEnvR = 0; +s16 sCursorEnvG = 0; +s16 sCursorEnvB = 0; +s16 sGameOverEnvR = 255; +s16 sGameOverEnvG = 0; +s16 sGameOverEnvB = 0; -s16 D_8082B8B4 = false; +s16 sInDungeonScene = false; -f32 D_8082B8B8[] = { - -4.0f, 4.0f, 4.0f, 4.0f, 4.0f, -4.0f, -4.0f, -4.0f, +f32 sPageSwitchEyeDx[] = { + -PAUSE_EYE_DIST * (PAUSE_MAP_X - PAUSE_ITEM_X) / 16, // From PAUSE_ITEM to PAUSE_MAP (switching right) + -PAUSE_EYE_DIST*(PAUSE_MASK_X - PAUSE_ITEM_X) / 16, // From PAUSE_ITEM to PAUSE_MASK (switching left) + -PAUSE_EYE_DIST*(PAUSE_QUEST_X - PAUSE_MAP_X) / 16, // From PAUSE_MAP to PAUSE_QUEST (switching right) + -PAUSE_EYE_DIST*(PAUSE_ITEM_X - PAUSE_MAP_X) / 16, // From PAUSE_MAP to PAUSE_ITEM (switching left) + -PAUSE_EYE_DIST*(PAUSE_MASK_X - PAUSE_QUEST_X) / 16, // From PAUSE_QUEST to PAUSE_MASK (switching right) + -PAUSE_EYE_DIST*(PAUSE_MAP_X - PAUSE_QUEST_X) / 16, // From PAUSE_QUEST to PAUSE_MAP (switching left) + -PAUSE_EYE_DIST*(PAUSE_ITEM_X - PAUSE_MASK_X) / 16, // From PAUSE_MASK to PAUSE_ITEM (switching right) + -PAUSE_EYE_DIST*(PAUSE_QUEST_X - PAUSE_MASK_X) / 16, // From PAUSE_MASK to PAUSE_QUEST (switching left) }; -f32 D_8082B8D8[] = { - -4.0f, -4.0f, -4.0f, 4.0f, 4.0f, 4.0f, 4.0f, -4.0f, +f32 sPageSwitchEyeDz[] = { + -PAUSE_EYE_DIST * (PAUSE_MAP_Z - PAUSE_ITEM_Z) / 16, // From PAUSE_ITEM to PAUSE_MAP (switching right) + -PAUSE_EYE_DIST*(PAUSE_MASK_Z - PAUSE_ITEM_Z) / 16, // From PAUSE_ITEM to PAUSE_MASK (switching left) + -PAUSE_EYE_DIST*(PAUSE_QUEST_Z - PAUSE_MAP_Z) / 16, // From PAUSE_MAP to PAUSE_QUEST (switching right) + -PAUSE_EYE_DIST*(PAUSE_ITEM_Z - PAUSE_MAP_Z) / 16, // From PAUSE_MAP to PAUSE_ITEM (switching left) + -PAUSE_EYE_DIST*(PAUSE_MASK_Z - PAUSE_QUEST_Z) / 16, // From PAUSE_QUEST to PAUSE_MASK (switching right) + -PAUSE_EYE_DIST*(PAUSE_MAP_Z - PAUSE_QUEST_Z) / 16, // From PAUSE_QUEST to PAUSE_MAP (switching left) + -PAUSE_EYE_DIST*(PAUSE_ITEM_Z - PAUSE_MASK_Z) / 16, // From PAUSE_MASK to PAUSE_ITEM (switching right) + -PAUSE_EYE_DIST*(PAUSE_QUEST_Z - PAUSE_MASK_Z) / 16, // From PAUSE_MASK to PAUSE_QUEST (switching left) }; -s16 D_8082B8F8[] = { - PAUSE_MAP, PAUSE_MASK, PAUSE_QUEST, PAUSE_ITEM, PAUSE_MASK, PAUSE_MAP, PAUSE_ITEM, PAUSE_QUEST, +u16 sPageSwitchNextPageIndex[] = { + PAUSE_MAP, // From PAUSE_ITEM (switching right) + PAUSE_MASK, // From PAUSE_ITEM (switching left) + PAUSE_QUEST, // From PAUSE_MAP (switching right) + PAUSE_ITEM, // From PAUSE_MAP (switching left) + PAUSE_MASK, // From PAUSE_QUEST (switching right) + PAUSE_MAP, // From PAUSE_QUEST (switching left) + PAUSE_ITEM, // From PAUSE_MASK (switching right) + PAUSE_QUEST, // From PAUSE_MASK (switching left) }; -f32 D_8082B908 = 0.0f; +f32 sPauseMenuVerticalOffset = 0.0f; f32 D_8082B90C = 0.0f; -f32 D_8082B910 = 40.0f; -f32 D_8082B914 = -40.0f; +f32 sPauseCursorLeftMoveOffsetX = 40.0f; +f32 sPauseCursorRightMoveOffsetX = -40.0f; -s32 D_8082B918 = 0; - -s32 D_8082B91C = 0; +s16 sPauseCursorLeftX = 0; +s16 sPauseCursorRightX = 0; s16 D_8082B920 = 10; @@ -89,7 +112,8 @@ u8 D_8082B924[] = { 0x07, 0x07, 0x03, 0x0F, 0x07, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0x1F, 0x0F, 0x03, 0x0F, 0x00, 0x00, }; -s16 D_8082B944 = 0x42; +// TODO: Also applies to owl warps +s16 sGameOverRectPosY = 66; s16 D_8082B948[][3] = { { 0x00FF, 0x00FF, 0x00FF }, { 0x00FF, 0x00FF, 0x00FF }, { 0x00FF, 0x00FF, 0x0000 }, @@ -436,31 +460,17 @@ f32 D_8082BE28[] = { s16 D_8082BE84 = 0; -s16 D_8082BE88[] = { - 0x001C, 0x001D, 0x001E, 0x001F, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, -}; +void func_80821900(void* segment, u32 texIndex) { + func_80178E3C(SEGMENT_ROM_START(map_name_static), texIndex, segment, 0x400); +} -s32 D_8082BE9C = 0; +void func_8082192C(void* segment, u32 texIndex) { + func_80178E3C(SEGMENT_ROM_START(map_name_static), texIndex, segment, 0xA00); +} -s32 D_8082BEA0 = 0; - -s16 D_8082BEA4 = 10; - -s32 D_8082BEA8 = 0; - -s32 D_8082BEAC = 0; - -s32 D_8082BEB0 = 0; - -s32 D_8082BEB4 = 0; - -s32 D_8082BEB8[] = { 0, 0 }; - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_80821900.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_8082192C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_80821958.s") +void func_80821958(void* segment, u32 texIndex) { + func_80178E3C(SEGMENT_ROM_START(item_name_static), texIndex, segment, 0x400); +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/KaleidoScope_MoveCursorToSpecialPos.s") @@ -470,7 +480,8 @@ s32 D_8082BEB8[] = { 0, 0 }; #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_80821CC4.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_80821D84.s") +void KaleidoScope_HandlePageToggles(PlayState* play, Input* input); +#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/KaleidoScope_HandlePageToggles.s") #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_80821F30.s") @@ -478,15 +489,18 @@ s32 D_8082BEB8[] = { 0, 0 }; #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_80823350.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_80824738.s") +void KaleidoScope_UpdateNamePanel(PlayState* play); +#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/KaleidoScope_UpdateNamePanel.s") #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_808248D0.s") #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_80824B90.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_808256E4.s") +void KaleidoScope_UpdateOwlWarpNamePanel(PlayState* play); +#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/KaleidoScope_UpdateOwlWarpNamePanel.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_8082585C.s") +void KaleidoScope_UpdateSwitchPage(PlayState* play, Input* input); +#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/KaleidoScope_UpdateSwitchPage.s") #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/KaleidoScope_SetView.s") @@ -502,8 +516,964 @@ s32 D_8082BEB8[] = { 0, 0 }; #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/KaleidoScope_Draw.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_808286D8.s") +void KaleidoScope_GrayOutTextureRGBA32(u32* texture, u16 pixelCount); +#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/KaleidoScope_GrayOutTextureRGBA32.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_80828788.s") +void KaleidoScope_UpdateOpening(PlayState* play) { + PauseContext* pauseCtx = &play->pauseCtx; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/KaleidoScope_Update.s") + pauseCtx->eye.x += sPageSwitchEyeDx[pauseCtx->nextPageMode] * 2.0f; + pauseCtx->eye.z += sPageSwitchEyeDz[pauseCtx->nextPageMode] * 2.0f; + pauseCtx->switchPageTimer += 8; + + if (pauseCtx->switchPageTimer == 64) { + // Finished opening + Interface_UpdateButtonsAlt(play, 1); + + if (pauseCtx->cursorSpecialPos == 0) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = D_801C6A98[pauseCtx->pageIndex][0]; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = D_801C6A98[pauseCtx->pageIndex][1]; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = D_801C6A98[pauseCtx->pageIndex][1]; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = D_801C6A98[pauseCtx->pageIndex][1]; + gSaveContext.buttonStatus[EQUIP_SLOT_A] = BTN_ENABLED; + } else { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_A] = BTN_DISABLED; + } + + pauseCtx->pageIndex = sPageSwitchNextPageIndex[pauseCtx->nextPageMode]; + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; + pauseCtx->state++; // PAUSE_STATE_MAIN + pauseCtx->alpha = 255; + Interface_LoadBButtonDoActionLabel(play, DO_ACTION_RETURN); + } else if (pauseCtx->switchPageTimer == 64) { + pauseCtx->pageIndex = sPageSwitchNextPageIndex[pauseCtx->nextPageMode]; + pauseCtx->nextPageMode = (pauseCtx->pageIndex * 2) + 1; + } +} + +void KaleidoScope_Update(PlayState* play) { + static u16 sCursorPointsToOcarinaModes[] = { + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + }; + static s16 sUnpausedHudVisibility = HUD_VISIBILITY_IDLE; + static s16 sNextMainState = PAUSE_MAIN_STATE_IDLE; + static s16 sDelayTimer = 10; + static s16 sGameOverColorTimer = 0; + static s16 sStickXRepeatTimer = 0; + static s16 sStickYRepeatTimer = 0; + static s16 sStickXRepeatState = 0; + static s16 sStickYRepeatState = 0; + PauseContext* pauseCtx = &play->pauseCtx; + InterfaceContext* interfaceCtx = &play->interfaceCtx; + MessageContext* msgCtx = &play->msgCtx; + GameOverContext* gameOverCtx = &play->gameOverCtx; + SramContext* sramCtx = &play->sramCtx; + Input* input = CONTROLLER1(&play->state); + size_t size0; + size_t size1; + size_t size2; + u16 itemId; + u16 worldMapCursorPoint; + void* iconItemLangSegment; + s16 stepR; + s16 stepG; + s16 stepB; + s16 stepA; + s16 stickAdjX = input->rel.stick_x; + + func_80109428(play); + + pauseCtx->stickAdjX = input->rel.stick_x; + pauseCtx->stickAdjY = input->rel.stick_y; + + switch (pauseCtx->state) { + case PAUSE_STATE_OPENING_2: + sUnpausedHudVisibility = gSaveContext.hudVisibility; + sPauseMenuVerticalOffset = -6240.0f; + + sUnpausedButtonStatus[EQUIP_SLOT_B] = gSaveContext.buttonStatus[EQUIP_SLOT_B]; + sUnpausedButtonStatus[EQUIP_SLOT_C_LEFT] = gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT]; + sUnpausedButtonStatus[EQUIP_SLOT_C_DOWN] = gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN]; + sUnpausedButtonStatus[EQUIP_SLOT_C_RIGHT] = gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT]; + sUnpausedButtonStatus[EQUIP_SLOT_A] = gSaveContext.buttonStatus[EQUIP_SLOT_A]; + + pauseCtx->cursorXIndex[PAUSE_MAP] = 0; + pauseCtx->cursorSlot[PAUSE_MAP] = R_REVERSE_FLOOR_INDEX + DUNGEON_FLOOR_INDEX_4; + pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->unk_256 = R_REVERSE_FLOOR_INDEX + DUNGEON_FLOOR_INDEX_4; + + sPauseCursorLeftX = -175; + sPauseCursorRightX = 155; + pauseCtx->roll = -314.0f; + + pauseCtx->iconItemSegment = (void*)ALIGN16((uintptr_t)play->objectCtx.spaceStart); + size0 = SEGMENT_ROM_SIZE(icon_item_static_old); + func_80178E7C((uintptr_t)SEGMENT_ROM_START(icon_item_static_test), pauseCtx->iconItemSegment, size0); + + gSegments[0x08] = PHYSICAL_TO_VIRTUAL(pauseCtx->iconItemSegment); + + for (itemId = 0; itemId <= ITEM_BOW_ARROW_FIRE; itemId++) { + if (!gPlayerFormItemRestrictions[(void)0, gSaveContext.save.playerForm][(s32)itemId]) { + KaleidoScope_GrayOutTextureRGBA32(Lib_SegmentedToVirtual(gItemIcons[(s32)itemId]), 0x400); + } + } + + pauseCtx->iconItem24Segment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemSegment + size0); + size1 = SEGMENT_ROM_SIZE(icon_item_24_static_old); + func_80178E7C((uintptr_t)SEGMENT_ROM_START(icon_item_24_static_test), pauseCtx->iconItem24Segment, size1); + + pauseCtx->iconItemAltSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItem24Segment + size1); + if (func_8010A0A4(play)) { + size_t size = SEGMENT_ROM_SIZE(icon_item_dungeon_static); + + DmaMgr_SendRequest0(pauseCtx->iconItemAltSegment, SEGMENT_ROM_START(icon_item_dungeon_static), size); + iconItemLangSegment = + func_801068FC(play, (void*)ALIGN16((uintptr_t)pauseCtx->iconItemAltSegment + size), size); + sInDungeonScene = true; + } else { + size_t size; + + sInDungeonScene = false; + size = SEGMENT_ROM_SIZE(icon_item_field_static); + DmaMgr_SendRequest0(pauseCtx->iconItemAltSegment, _icon_item_field_staticSegmentRomStart, size); + iconItemLangSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemAltSegment + size); + } + + pauseCtx->iconItemLangSegment = iconItemLangSegment; + size2 = SEGMENT_ROM_SIZE(icon_item_jpn_static); + DmaMgr_SendRequest0(pauseCtx->iconItemLangSegment, SEGMENT_ROM_START(icon_item_jpn_static), size2); + + pauseCtx->nameSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemLangSegment + size2); + Interface_SetAButtonDoAction(play, DO_ACTION_INFO); + if (((void)0, gSaveContext.worldMapArea) < 0x16) { + func_8082192C(pauseCtx->nameSegment + 0x400, ((void)0, gSaveContext.worldMapArea)); + } + + pauseCtx->iconItemVtxSegment = (void*)ALIGN16((uintptr_t)pauseCtx->nameSegment + 0xA00); + DmaMgr_SendRequest0(pauseCtx->iconItemVtxSegment, SEGMENT_ROM_START(icon_item_vtx_static), + SEGMENT_ROM_SIZE(icon_item_vtx_static)); + + pauseCtx->unk_2B6 = 255; + pauseCtx->unk_2B7 = 255; + pauseCtx->unk_2B8 = 255; + pauseCtx->state = PAUSE_STATE_OPENING_3; + break; + + case PAUSE_STATE_OPENING_3: + pauseCtx->infoPanelOffsetY += 10; + pauseCtx->itemPageRoll = pauseCtx->mapPageRoll = pauseCtx->questPageRoll = pauseCtx->maskPageRoll -= 40.0f; + + interfaceCtx->startAlpha += 63; + sPauseCursorLeftX += (s16)(sPauseCursorLeftMoveOffsetX / 4); + sPauseCursorRightX += (s16)(sPauseCursorRightMoveOffsetX / 4); + pauseCtx->alpha += 31; + if (pauseCtx->itemPageRoll == 0) { + interfaceCtx->startAlpha = 255; + sPauseMenuVerticalOffset = 0.0f; + pauseCtx->state = PAUSE_STATE_OPENING_4; + } + + KaleidoScope_UpdateOpening(play); + break; + + case PAUSE_STATE_OPENING_4: + pauseCtx->alpha += 31; + KaleidoScope_UpdateOpening(play); + + if (pauseCtx->state == PAUSE_STATE_MAIN) { + KaleidoScope_UpdateNamePanel(play); + } + break; + + case PAUSE_STATE_MAIN: + switch (pauseCtx->mainState) { + case PAUSE_MAIN_STATE_IDLE: + if (!pauseCtx->itemDescriptionOn && + (CHECK_BTN_ALL(input->press.button, BTN_START) || CHECK_BTN_ALL(input->press.button, BTN_B))) { + Interface_SetAButtonDoAction(play, DO_ACTION_NONE); + pauseCtx->state = PAUSE_STATE_UNPAUSE_SETUP; + sPauseMenuVerticalOffset = -6240.0f; + func_801A3AEC(0); + } + break; + + case PAUSE_MAIN_STATE_SWITCHING_PAGE: + KaleidoScope_UpdateSwitchPage(play, input); + break; + + case PAUSE_MAIN_STATE_SONG_PLAYBACK: + // Song is in playback + pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff(); + if (pauseCtx->ocarinaStaff->state == 0) { + // Song playback is finished, give song prompt to player + pauseCtx->mainState = PAUSE_MAIN_STATE_SONG_PROMPT_INIT; + AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); + } + break; + + case PAUSE_MAIN_STATE_EQUIP_ITEM: + KaleidoScope_UpdateItemEquip(play); + break; + + case PAUSE_MAIN_STATE_SONG_PROMPT_INIT: + break; + + case PAUSE_MAIN_STATE_SONG_PROMPT: + pauseCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff(); + + if (CHECK_BTN_ALL(input->press.button, BTN_START) || CHECK_BTN_ALL(input->press.button, BTN_B)) { + // Abort having the player play the song and close the pause menu + AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); + Interface_SetAButtonDoAction(play, DO_ACTION_NONE); + pauseCtx->state = PAUSE_STATE_UNPAUSE_SETUP; + sPauseMenuVerticalOffset = -6240.0f; + func_801A3AEC(0); + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; + } else if (pauseCtx->ocarinaStaff->state == pauseCtx->ocarinaSongIndex) { + // The player successfully played the song + play_sound(NA_SE_SY_TRE_BOX_APPEAR); + sNextMainState = PAUSE_MAIN_STATE_IDLE; + sDelayTimer = 30; + pauseCtx->mainState = PAUSE_MAIN_STATE_SONG_PROMPT_DONE; + } else if (pauseCtx->ocarinaStaff->state == 0xFF) { + // The player failed to play the song + play_sound(NA_SE_SY_OCARINA_ERROR); + sNextMainState = PAUSE_MAIN_STATE_SONG_PROMPT_INIT; + sDelayTimer = 20; + pauseCtx->mainState = PAUSE_MAIN_STATE_SONG_PROMPT_DONE; + } + break; + + case PAUSE_MAIN_STATE_SONG_PROMPT_DONE: + sDelayTimer--; + if (sDelayTimer == 0) { + pauseCtx->mainState = sNextMainState; + if (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) { + AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); + } + } + break; + + case PAUSE_MAIN_STATE_SONG_PROMPT_UNUSED: + break; + + case PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG: + if (CHECK_BTN_ALL(input->press.button, BTN_START) || CHECK_BTN_ALL(input->press.button, BTN_B)) { + AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); + Interface_SetAButtonDoAction(play, DO_ACTION_NONE); + pauseCtx->state = PAUSE_STATE_UNPAUSE_SETUP; + sPauseMenuVerticalOffset = -6240.0f; + func_801A3AEC(0); + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; + } + break; + + case PAUSE_MAIN_STATE_SONG_PLAYBACK_INIT: + break; + + case PAUSE_MAIN_STATE_EQUIP_MASK: + KaleidoScope_UpdateMaskEquip(play); + break; + + case PAUSE_MAIN_STATE_BOMBERS_NOTEBOOK_OPEN: + if (!play->pauseCtx.bombersNotebookOpen) { + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; + } + break; + + default: + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; + break; + } + break; + + case PAUSE_STATE_SAVEPROMPT: + switch (pauseCtx->savePromptState) { + case PAUSE_SAVEPROMPT_STATE_0: + pauseCtx->roll -= 78.5f; + sPauseCursorLeftX -= (s16)(sPauseCursorLeftMoveOffsetX / 4); + sPauseCursorRightX -= (s16)(sPauseCursorRightMoveOffsetX / 4); + if (pauseCtx->roll <= -628.0f) { + pauseCtx->roll = -628.0f; + pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_1; + } + break; + + case PAUSE_SAVEPROMPT_STATE_1: + if (CHECK_BTN_ALL(input->press.button, BTN_A) || CHECK_BTN_ALL(input->press.button, BTN_CUP)) { + if (pauseCtx->promptChoice != PAUSE_PROMPT_YES) { + Interface_SetAButtonDoAction(play, DO_ACTION_NONE); + pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_2; + } else { + play_sound(NA_SE_SY_PIECE_OF_HEART); + Play_SaveCycleSceneFlags(&play->state); + gSaveContext.save.playerData.savedSceneId = play->sceneId; + func_8014546C(sramCtx); + if (gSaveContext.unk_3F3F == 0) { + pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_5; + } else { + func_80147008(sramCtx, D_801C67C8[gSaveContext.fileNum], + D_801C67F0[gSaveContext.fileNum]); + func_80147020(sramCtx); + pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_4; + } + sDelayTimer = 90; + } + } else if (CHECK_BTN_ALL(input->press.button, BTN_START)) { + Interface_SetAButtonDoAction(play, DO_ACTION_NONE); + pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_3; + sPauseMenuVerticalOffset = -6240.0f; + D_8082B90C = pauseCtx->roll; + func_801A3AEC(0); + } else if (CHECK_BTN_ALL(input->press.button, BTN_B)) { + Interface_SetAButtonDoAction(play, DO_ACTION_NONE); + pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_2; + D_8082B90C = pauseCtx->roll; + } + break; + + case PAUSE_SAVEPROMPT_STATE_4: + if (sramCtx->status == 0) { + pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_5; + } + break; + + case PAUSE_SAVEPROMPT_STATE_5: + if (CHECK_BTN_ALL(input->press.button, BTN_B) || CHECK_BTN_ALL(input->press.button, BTN_A) || + CHECK_BTN_ALL(input->press.button, BTN_START) || (--sDelayTimer == 0)) { + Interface_SetAButtonDoAction(play, DO_ACTION_NONE); + pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_3; + sPauseMenuVerticalOffset = -6240.0f; + D_8082B90C = pauseCtx->roll; + func_801A3AEC(0); + } + break; + + case PAUSE_SAVEPROMPT_STATE_3: + case PAUSE_SAVEPROMPT_STATE_7: + if (pauseCtx->roll != (D_8082B90C + 160.0f)) { + pauseCtx->itemPageRoll = pauseCtx->mapPageRoll = pauseCtx->questPageRoll = + pauseCtx->maskPageRoll += 40.0f; + pauseCtx->roll += 40.0f; + pauseCtx->infoPanelOffsetY -= 10; + sPauseCursorLeftX -= (s16)(sPauseCursorLeftMoveOffsetX / 4); + sPauseCursorRightX -= (s16)(sPauseCursorRightMoveOffsetX / 4); + pauseCtx->alpha -= 63; + if (pauseCtx->roll == (D_8082B90C + 160.0f)) { + pauseCtx->alpha = 0; + } + } else { + pauseCtx->debugEditor = DEBUG_EDITOR_NONE; + pauseCtx->state = PAUSE_STATE_UNPAUSE_CLOSE; + pauseCtx->itemPageRoll = pauseCtx->mapPageRoll = pauseCtx->questPageRoll = + pauseCtx->maskPageRoll = 160.0f; + pauseCtx->roll = -434.0f; + pauseCtx->namedItem = PAUSE_ITEM_NONE; + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; + } + break; + + case PAUSE_SAVEPROMPT_STATE_2: + pauseCtx->roll += 78.5f; + sPauseCursorLeftX += (s16)(sPauseCursorLeftMoveOffsetX / 4); + sPauseCursorRightX += (s16)(sPauseCursorRightMoveOffsetX / 4); + if (pauseCtx->roll >= -314.0f) { + pauseCtx->state = PAUSE_STATE_MAIN; + pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_0; + pauseCtx->roll = -314.0f; + pauseCtx->itemPageRoll = pauseCtx->mapPageRoll = pauseCtx->questPageRoll = + pauseCtx->maskPageRoll = 0.0f; + Interface_SetAButtonDoAction(play, DO_ACTION_INFO); + gSaveContext.buttonStatus[EQUIP_SLOT_B] = D_801C6A98[pauseCtx->pageIndex + 1][0]; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = D_801C6A98[pauseCtx->pageIndex + 1][1]; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = D_801C6A98[pauseCtx->pageIndex + 1][1]; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = D_801C6A98[pauseCtx->pageIndex + 1][1]; + if ((pauseCtx->cursorSpecialPos == PAUSE_CURSOR_PAGE_LEFT) || + (pauseCtx->cursorSpecialPos == PAUSE_CURSOR_PAGE_RIGHT)) { + KaleidoScope_MoveCursorToSpecialPos(play, pauseCtx->cursorSpecialPos); + } else { + func_80821A04(play); + } + } + break; + + case PAUSE_SAVEPROMPT_STATE_6: + if (interfaceCtx->screenFillAlpha != 255) { + interfaceCtx->screenFillAlpha += 10; + if (interfaceCtx->screenFillAlpha >= 255) { + interfaceCtx->screenFillAlpha = 255; + pauseCtx->state = PAUSE_STATE_OFF; + Game_SetFramerateDivisor(&play->state, 3); + R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_UNK4; + Object_LoadAll(&play->objectCtx); + BgCheck_InitCollisionHeaders(&play->colCtx, play); + STOP_GAMESTATE(&play->state); + SET_NEXT_GAMESTATE(&play->state, TitleSetup_Init, sizeof(TitleSetupState)); + func_801A4058(0x14); + gSaveContext.seqId = (u8)NA_BGM_DISABLED; + gSaveContext.ambienceId = AMBIENCE_ID_DISABLED; + } + } + break; + } + break; + + case PAUSE_STATE_GAMEOVER_2: + pauseCtx->cursorSlot[PAUSE_MAP] = R_REVERSE_FLOOR_INDEX + DUNGEON_FLOOR_INDEX_4; + pauseCtx->cursorPoint[PAUSE_MAP] = R_REVERSE_FLOOR_INDEX + DUNGEON_FLOOR_INDEX_4; + sPauseCursorLeftX = -175; + sPauseCursorRightX = 155; + pauseCtx->roll = -434.0f; + Interface_SetHudVisibility(HUD_VISIBILITY_NONE); + + pauseCtx->iconItemSegment = + (void*)(((uintptr_t)play->objectCtx.spaceStart + 0x30) & ~0x3F); // Messed up ALIGN64 + size0 = SEGMENT_ROM_SIZE(icon_item_static_old); + func_80178E7C(SEGMENT_ROM_START(icon_item_static_test), pauseCtx->iconItemSegment, size0); + + pauseCtx->iconItem24Segment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemSegment + size0); + size1 = SEGMENT_ROM_SIZE(icon_item_24_static_old); + func_80178E7C(SEGMENT_ROM_START(icon_item_24_static_test), pauseCtx->iconItem24Segment, size1); + + pauseCtx->iconItemAltSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItem24Segment + size1); + size2 = SEGMENT_ROM_SIZE(icon_item_gameover_static); + DmaMgr_SendRequest0(pauseCtx->iconItemAltSegment, SEGMENT_ROM_START(icon_item_gameover_static), size2); + + pauseCtx->iconItemLangSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemAltSegment + size2); + DmaMgr_SendRequest0(pauseCtx->iconItemLangSegment, SEGMENT_ROM_START(icon_item_jpn_static), + SEGMENT_ROM_SIZE(icon_item_jpn_static)); + + gSaveContext.timerStates[TIMER_ID_MOON_CRASH] = TIMER_STATE_OFF; + + sGameOverPrimR = 255; + sGameOverPrimG = 130; + sGameOverPrimB = 0; + sGameOverPrimAlpha = 0; + sGameOverEnvR = 30; + sGameOverEnvG = 0; + sGameOverEnvB = 0; + sGameOverRectPosY = 98; + sGameOverColorTimer = 30; + + pauseCtx->promptChoice = PAUSE_PROMPT_YES; + pauseCtx->state++; + if (gameOverCtx->state == GAMEOVER_INACTIVE) { + pauseCtx->state++; + } + break; + + case PAUSE_STATE_GAMEOVER_3: + stepR = ABS_ALT(sGameOverPrimR - 30) / sGameOverColorTimer; + stepG = ABS_ALT(sGameOverPrimG - 0) / sGameOverColorTimer; + stepB = ABS_ALT(sGameOverPrimB - 0) / sGameOverColorTimer; + stepA = ABS_ALT(sGameOverPrimAlpha - 255) / sGameOverColorTimer; + if (sGameOverPrimR >= 30) { + sGameOverPrimR -= stepR; + } else { + sGameOverPrimR += stepR; + } + if (sGameOverPrimG >= 0) { + sGameOverPrimG -= stepG; + } else { + sGameOverPrimG += stepG; + } + if (sGameOverPrimB >= 0) { + sGameOverPrimB -= stepB; + } else { + sGameOverPrimB += stepB; + } + if (sGameOverPrimAlpha >= 255) { + sGameOverPrimAlpha -= stepA; + } else { + sGameOverPrimAlpha += stepA; + } + + stepR = ABS_ALT(sGameOverEnvR - 255) / sGameOverColorTimer; + stepG = ABS_ALT(sGameOverEnvG - 130) / sGameOverColorTimer; + stepB = ABS_ALT(sGameOverEnvB - 0) / sGameOverColorTimer; + if (sGameOverEnvR >= 255) { + sGameOverEnvR -= stepR; + } else { + sGameOverEnvR += stepR; + } + if (sGameOverEnvG >= 130) { + sGameOverEnvG -= stepG; + } else { + sGameOverEnvG += stepG; + } + if (sGameOverEnvB >= 0) { + sGameOverEnvB -= stepB; + } else { + sGameOverEnvB += stepB; + } + + sGameOverColorTimer--; + if (sGameOverColorTimer == 0) { + sGameOverPrimR = 30; + sGameOverPrimG = 0; + sGameOverPrimB = 0; + sGameOverPrimAlpha = 255; + + sGameOverEnvR = 255; + sGameOverEnvG = 130; + sGameOverEnvB = 0; + + sGameOverColorTimer = 40; + pauseCtx->state++; + } + break; + + case PAUSE_STATE_GAMEOVER_4: + sGameOverColorTimer--; + if (sGameOverColorTimer == 0) { + pauseCtx->state = PAUSE_STATE_GAMEOVER_5; + } + break; + + case PAUSE_STATE_GAMEOVER_5: + pauseCtx->infoPanelOffsetY += 10; + pauseCtx->roll -= 40.0f; + pauseCtx->itemPageRoll = pauseCtx->mapPageRoll = pauseCtx->questPageRoll = pauseCtx->maskPageRoll = + pauseCtx->roll; + interfaceCtx->startAlpha += 63; + sGameOverRectPosY -= 3; + sPauseCursorLeftX += (s16)(sPauseCursorLeftMoveOffsetX / 4); + sPauseCursorRightX += (s16)(sPauseCursorRightMoveOffsetX / 4); + pauseCtx->alpha += 31; + if (pauseCtx->roll < -628.0f) { + pauseCtx->roll = -628.0f; + interfaceCtx->startAlpha = 255; + sGameOverRectPosY = 66; + sPauseMenuVerticalOffset = 0.0f; + pauseCtx->alpha = 255; + if (gameOverCtx->state == GAMEOVER_INACTIVE) { + pauseCtx->state = PAUSE_STATE_GAMEOVER_SAVE_PROMPT; + } else { + pauseCtx->state = PAUSE_STATE_GAMEOVER_CONTINUE_PROMPT; + } + } + break; + + case PAUSE_STATE_GAMEOVER_SAVE_PROMPT: + if (CHECK_BTN_ALL(input->press.button, BTN_A)) { + if (pauseCtx->promptChoice != PAUSE_PROMPT_YES) { + pauseCtx->promptChoice = PAUSE_PROMPT_YES; + play_sound(NA_SE_SY_DECIDE); + pauseCtx->state = PAUSE_STATE_OFF; + Game_SetFramerateDivisor(&play->state, 3); + R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_UNK4; + Object_LoadAll(&play->objectCtx); + BgCheck_InitCollisionHeaders(&play->colCtx, play); + } else { + play_sound(NA_SE_SY_PIECE_OF_HEART); + pauseCtx->promptChoice = PAUSE_PROMPT_YES; + Play_SaveCycleSceneFlags(&play->state); + gSaveContext.save.playerData.savedSceneId = play->sceneId; + gSaveContext.save.playerData.health = 0x30; + func_8014546C(sramCtx); + if (gSaveContext.unk_3F3F == 0) { + pauseCtx->state = PAUSE_STATE_GAMEOVER_8; + } else { + func_80147008(sramCtx, D_801C67C8[gSaveContext.fileNum], D_801C67F0[gSaveContext.fileNum]); + func_80147020(sramCtx); + pauseCtx->state = PAUSE_STATE_GAMEOVER_7; + } + sDelayTimer = 90; + } + } else if ((pauseCtx->promptChoice == PAUSE_PROMPT_YES) && (stickAdjX >= 30)) { + play_sound(NA_SE_SY_CURSOR); + pauseCtx->promptChoice = PAUSE_PROMPT_NO; + } else if ((pauseCtx->promptChoice != PAUSE_PROMPT_YES) && (stickAdjX <= -30)) { + play_sound(NA_SE_SY_CURSOR); + pauseCtx->promptChoice = PAUSE_PROMPT_YES; + } + break; + + case PAUSE_STATE_GAMEOVER_7: + if (sramCtx->status == 0) { + pauseCtx->state = PAUSE_STATE_OFF; + Game_SetFramerateDivisor(&play->state, 3); + R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_UNK4; + Object_LoadAll(&play->objectCtx); + BgCheck_InitCollisionHeaders(&play->colCtx, play); + } + break; + + case PAUSE_STATE_GAMEOVER_8: + sDelayTimer--; + if (sDelayTimer == 0) { + pauseCtx->state = PAUSE_STATE_GAMEOVER_CONTINUE_PROMPT; + gameOverCtx->state++; + } else if ((sDelayTimer <= 80) && + (CHECK_BTN_ALL(input->press.button, BTN_A) || CHECK_BTN_ALL(input->press.button, BTN_START))) { + pauseCtx->state = PAUSE_STATE_GAMEOVER_CONTINUE_PROMPT; + gameOverCtx->state++; + func_801A3AEC(0); + } + break; + + case PAUSE_STATE_GAMEOVER_CONTINUE_PROMPT: + if (CHECK_BTN_ALL(input->press.button, BTN_A) || CHECK_BTN_ALL(input->press.button, BTN_START)) { + if (pauseCtx->promptChoice == PAUSE_PROMPT_YES) { + play_sound(NA_SE_SY_PIECE_OF_HEART); + Play_SaveCycleSceneFlags(&play->state); + if (gSaveContext.save.entrance == ENTRANCE(UNSET_0D, 0)) {} + } else { // PAUSE_PROMPT_NO + play_sound(NA_SE_SY_DECIDE); + } + pauseCtx->state = PAUSE_STATE_GAMEOVER_10; + } + break; + + case PAUSE_STATE_GAMEOVER_10: + if (interfaceCtx->screenFillAlpha != 255) { + interfaceCtx->screenFillAlpha += 10; + if (interfaceCtx->screenFillAlpha >= 255) { + interfaceCtx->screenFillAlpha = 255; + + pauseCtx->state = PAUSE_STATE_OFF; + Game_SetFramerateDivisor(&play->state, 3); + R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_UNK4; + Object_LoadAll(&play->objectCtx); + BgCheck_InitCollisionHeaders(&play->colCtx, play); + + if (pauseCtx->promptChoice == PAUSE_PROMPT_YES) { + func_80169FDC(&play->state); + gSaveContext.respawnFlag = -2; + gSaveContext.nextTransitionType = TRANS_TYPE_02; + gSaveContext.save.playerData.health = 0x30; + Audio_SetSpec(0xA); + gSaveContext.healthAccumulator = 0; + gSaveContext.magicState = MAGIC_STATE_IDLE; + gSaveContext.magicFlag = 0; + gSaveContext.magicCapacity = 0; + gSaveContext.magicFillTarget = gSaveContext.save.playerData.magic; + gSaveContext.save.playerData.magicLevel = 0; + gSaveContext.save.playerData.magic = 0; + } else { // PAUSE_PROMPT_NO + STOP_GAMESTATE(&play->state); + SET_NEXT_GAMESTATE(&play->state, TitleSetup_Init, sizeof(TitleSetupState)); + } + } + } + break; + + case PAUSE_STATE_OWLWARP_2: + sPauseMenuVerticalOffset = -6240.0f; + + sUnpausedButtonStatus[EQUIP_SLOT_B] = gSaveContext.buttonStatus[EQUIP_SLOT_B]; + sUnpausedButtonStatus[EQUIP_SLOT_C_LEFT] = gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT]; + sUnpausedButtonStatus[EQUIP_SLOT_C_DOWN] = gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN]; + sUnpausedButtonStatus[EQUIP_SLOT_C_RIGHT] = gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT]; + sUnpausedButtonStatus[EQUIP_SLOT_A] = gSaveContext.buttonStatus[EQUIP_SLOT_A]; + + pauseCtx->cursorXIndex[PAUSE_MAP] = 0; + pauseCtx->cursorSlot[PAUSE_MAP] = R_REVERSE_FLOOR_INDEX + DUNGEON_FLOOR_INDEX_4; + pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->unk_256 = R_REVERSE_FLOOR_INDEX + DUNGEON_FLOOR_INDEX_4; + + sPauseCursorLeftX = -175; + sPauseCursorRightX = 155; + + pauseCtx->iconItemSegment = (void*)ALIGN16((uintptr_t)play->objectCtx.spaceStart); + size0 = SEGMENT_ROM_SIZE(icon_item_static_old); + func_80178E7C(SEGMENT_ROM_START(icon_item_static_test), pauseCtx->iconItemSegment, size0); + + pauseCtx->iconItemAltSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemSegment + size0); + sInDungeonScene = false; + size1 = SEGMENT_ROM_SIZE(icon_item_field_static); + DmaMgr_SendRequest0(pauseCtx->iconItemAltSegment, SEGMENT_ROM_START(icon_item_field_static), size1); + + pauseCtx->iconItemLangSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemAltSegment + size1); + size2 = SEGMENT_ROM_SIZE(icon_item_jpn_static); + DmaMgr_SendRequest0(pauseCtx->iconItemLangSegment, SEGMENT_ROM_START(icon_item_jpn_static), size2); + + pauseCtx->nameSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemLangSegment + size2); + Interface_SetAButtonDoAction(play, DO_ACTION_WARP); + worldMapCursorPoint = pauseCtx->cursorPoint[PAUSE_WORLD_MAP]; + func_80821900(pauseCtx->nameSegment, worldMapCursorPoint); + + pauseCtx->iconItemVtxSegment = (void*)ALIGN16((uintptr_t)pauseCtx->nameSegment + 0xA00); + DmaMgr_SendRequest0(pauseCtx->iconItemVtxSegment, SEGMENT_ROM_START(icon_item_vtx_static), + SEGMENT_ROM_SIZE(icon_item_vtx_static)); + + pauseCtx->state = PAUSE_STATE_OWLWARP_3; + sGameOverRectPosY = 98; + pauseCtx->promptChoice = PAUSE_PROMPT_YES; + break; + + case PAUSE_STATE_OWLWARP_3: + R_PAUSE_OWLWARP_ALPHA += 20; + pauseCtx->infoPanelOffsetY += 10; + pauseCtx->mapPageRoll -= 40.0f; + interfaceCtx->startAlpha += 63; + sGameOverRectPosY -= 3; + sPauseCursorLeftX += (s16)(sPauseCursorLeftMoveOffsetX / 4); + sPauseCursorRightX += (s16)(sPauseCursorRightMoveOffsetX / 4); + pauseCtx->alpha += 31; + + if (pauseCtx->mapPageRoll == 0) { + interfaceCtx->startAlpha = 255; + sPauseMenuVerticalOffset = 0.0f; + pauseCtx->alpha = 255; + pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE; + pauseCtx->cursorSpecialPos = 0; + pauseCtx->state = PAUSE_STATE_OWLWARP_SELECT; + R_PAUSE_OWLWARP_ALPHA = 120; + } + break; + + case PAUSE_STATE_OWLWARP_SELECT: + if (CHECK_BTN_ALL(input->press.button, BTN_START) || CHECK_BTN_ALL(input->press.button, BTN_B)) { + Interface_SetAButtonDoAction(play, DO_ACTION_NONE); + pauseCtx->state = PAUSE_STATE_OWLWARP_6; + sPauseMenuVerticalOffset = -6240.0f; + func_801A3AEC(0); + play->msgCtx.ocarinaMode = 4; + gSaveContext.prevHudVisibility = HUD_VISIBILITY_ALL; + } else if (CHECK_BTN_ALL(input->press.button, BTN_A)) { + play_sound(NA_SE_SY_DECIDE); + Message_StartTextbox(play, 0x1B93, NULL); + pauseCtx->state = PAUSE_STATE_OWLWARP_CONFIRM; + } else { + KaleidoScope_UpdateOwlWarpNamePanel(play); + } + break; + + case PAUSE_STATE_OWLWARP_CONFIRM: + if (CHECK_BTN_ALL(input->press.button, BTN_A)) { + msgCtx->msgLength = 0; + msgCtx->msgMode = 0; + if (msgCtx->choiceIndex == 0) { + Interface_SetAButtonDoAction(play, DO_ACTION_NONE); + pauseCtx->state = PAUSE_STATE_OWLWARP_6; + sPauseMenuVerticalOffset = -6240.0f; + func_801A3AEC(0); + play->msgCtx.ocarinaMode = sCursorPointsToOcarinaModes[pauseCtx->cursorPoint[PAUSE_WORLD_MAP]]; + play_sound(NA_SE_SY_DECIDE); + } else { + pauseCtx->state = PAUSE_STATE_OWLWARP_SELECT; + Interface_SetAButtonDoAction(play, DO_ACTION_WARP); + play_sound(NA_SE_SY_MESSAGE_PASS); + } + } else if (CHECK_BTN_ALL(input->press.button, BTN_B)) { + msgCtx->msgLength = 0; + msgCtx->msgMode = 0; + pauseCtx->state = PAUSE_STATE_OWLWARP_SELECT; + play_sound(NA_SE_SY_MESSAGE_PASS); + } else if (CHECK_BTN_ALL(input->press.button, BTN_START)) { + msgCtx->msgLength = 0; + msgCtx->msgMode = 0; + Interface_SetAButtonDoAction(play, DO_ACTION_NONE); + pauseCtx->state = PAUSE_STATE_OWLWARP_6; + sPauseMenuVerticalOffset = -6240.0f; + func_801A3AEC(0); + play->msgCtx.ocarinaMode = 4; + gSaveContext.prevHudVisibility = HUD_VISIBILITY_ALL; + } + break; + + case PAUSE_STATE_OWLWARP_6: + if (pauseCtx->mapPageRoll != 160.0f) { + R_PAUSE_OWLWARP_ALPHA -= 60; + if (R_PAUSE_OWLWARP_ALPHA <= 0) { + R_PAUSE_OWLWARP_ALPHA = 0; + } + pauseCtx->infoPanelOffsetY -= 10; + pauseCtx->mapPageRoll += 40.0f; + interfaceCtx->startAlpha -= 63; + sPauseCursorLeftX -= (s16)(sPauseCursorLeftMoveOffsetX / 4); + sPauseCursorRightX -= (s16)(sPauseCursorRightMoveOffsetX / 4); + pauseCtx->alpha -= 63; + if (pauseCtx->mapPageRoll == 160.0f) { + pauseCtx->alpha = 0; + } + } else { + pauseCtx->debugEditor = DEBUG_EDITOR_NONE; + pauseCtx->state = PAUSE_STATE_UNPAUSE_CLOSE; + pauseCtx->itemPageRoll = pauseCtx->mapPageRoll = pauseCtx->questPageRoll = pauseCtx->maskPageRoll = + 160.0f; + pauseCtx->namedItem = PAUSE_ITEM_NONE; + interfaceCtx->startAlpha = 0; + pauseCtx->pageIndex = pauseCtx->unk_2C8; + pauseCtx->cursorPoint[PAUSE_WORLD_MAP] = pauseCtx->unk_2CA; + } + break; + + case PAUSE_STATE_UNPAUSE_SETUP: + if (pauseCtx->itemPageRoll != 160.0f) { + pauseCtx->infoPanelOffsetY -= 10; + pauseCtx->itemPageRoll = pauseCtx->mapPageRoll = pauseCtx->questPageRoll = pauseCtx->maskPageRoll += + 40.0f; + interfaceCtx->startAlpha -= 63; + sPauseCursorLeftX -= (s16)(sPauseCursorLeftMoveOffsetX / 4); + sPauseCursorRightX -= (s16)(sPauseCursorRightMoveOffsetX / 4); + pauseCtx->alpha -= 63; + if (pauseCtx->itemPageRoll == 160.0f) { + pauseCtx->alpha = 0; + } + } else { + pauseCtx->debugEditor = DEBUG_EDITOR_NONE; + pauseCtx->state = PAUSE_STATE_UNPAUSE_CLOSE; + pauseCtx->maskPageRoll = 160.0f; + pauseCtx->questPageRoll = 160.0f; + pauseCtx->mapPageRoll = 160.0f; + pauseCtx->itemPageRoll = 160.0f; + pauseCtx->namedItem = PAUSE_ITEM_NONE; + interfaceCtx->startAlpha = 0; + } + break; + + case PAUSE_STATE_UNPAUSE_CLOSE: + pauseCtx->state = PAUSE_STATE_OFF; + Game_SetFramerateDivisor(&play->state, 3); + R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_UNK4; + Object_LoadAll(&play->objectCtx); + BgCheck_InitCollisionHeaders(&play->colCtx, play); + + gSaveContext.buttonStatus[EQUIP_SLOT_B] = sUnpausedButtonStatus[EQUIP_SLOT_B]; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = sUnpausedButtonStatus[EQUIP_SLOT_C_LEFT]; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = sUnpausedButtonStatus[EQUIP_SLOT_C_DOWN]; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = sUnpausedButtonStatus[EQUIP_SLOT_C_RIGHT]; + gSaveContext.buttonStatus[EQUIP_SLOT_A] = sUnpausedButtonStatus[EQUIP_SLOT_A]; + + Interface_UpdateButtonsPart2(play); + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); + MsgEvent_SendNullTask(); + func_80143324(play, &play->skyboxCtx, play->skyboxId); + + if ((msgCtx->msgMode != 0) && (msgCtx->currentTextId == 0xFF)) { + Interface_LoadBButtonDoActionLabel(play, DO_ACTION_STOP); + Interface_SetAButtonDoAction(play, DO_ACTION_STOP); + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_C); + } else { + interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; + } + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; + Interface_SetHudVisibility(sUnpausedHudVisibility); + func_801A3A7C(0); + break; + } + + // If stickAdj is held, set a delay to allow the cursor to read the next input. + // The first delay is given a longer time than all subsequent delays. + if (!IS_PAUSE_STATE_GAMEOVER && (pauseCtx->state != PAUSE_STATE_SAVEPROMPT)) { + if (pauseCtx->stickAdjX < -30) { + if (sStickXRepeatState == -1) { + sStickXRepeatTimer--; + if (sStickXRepeatTimer < 0) { + // Allow the input to register and apply the delay for all subsequent repeated inputs + sStickXRepeatTimer = 2; + } else { + // Cancel the current input + pauseCtx->stickAdjX = 0; + } + } else { + // Allow the input to register and apply the delay for the first repeated input + sStickXRepeatTimer = 10; + sStickXRepeatState = -1; + } + } else if (pauseCtx->stickAdjX > 30) { + if (sStickXRepeatState == 1) { + sStickXRepeatTimer--; + if (sStickXRepeatTimer < 0) { + // Allow the input to register and apply the delay for all subsequent repeated inputs + sStickXRepeatTimer = 2; + } else { + // Cancel the current input + pauseCtx->stickAdjX = 0; + } + } else { + // Allow the input to register and apply the delay for the first repeated input + sStickXRepeatTimer = 10; + sStickXRepeatState = 1; + } + } else { + sStickXRepeatState = 0; + } + + if (pauseCtx->stickAdjY < -30) { + if (sStickYRepeatState == -1) { + sStickYRepeatTimer--; + if (sStickYRepeatTimer < 0) { + // Allow the input to register and apply the delay for all subsequent repeated inputs + sStickYRepeatTimer = 2; + } else { + // Cancel the current input + pauseCtx->stickAdjY = 0; + } + } else { + // Allow the input to register and apply the delay for the first repeated input + sStickYRepeatTimer = 10; + sStickYRepeatState = -1; + } + } else if (pauseCtx->stickAdjY > 30) { + if (sStickYRepeatState == 1) { + sStickYRepeatTimer--; + if (sStickYRepeatTimer < 0) { + // Allow the input to register and apply the delay for all subsequent repeated inputs + sStickYRepeatTimer = 2; + } else { + // Cancel the current input + pauseCtx->stickAdjY = 0; + } + } else { + // Allow the input to register and apply the delay for the first repeated input + sStickYRepeatTimer = 10; + sStickYRepeatState = 1; + } + } else { + sStickYRepeatState = 0; + } + } + + // Process the Cursor input + if ((R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_DONE) && (pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && + !IS_PAUSE_STATE_OWLWARP && + (((pauseCtx->state >= PAUSE_STATE_OPENING_3) && (pauseCtx->state <= PAUSE_STATE_SAVEPROMPT)) || + ((pauseCtx->state >= PAUSE_STATE_GAMEOVER_2) && (pauseCtx->state <= PAUSE_STATE_UNPAUSE_SETUP)))) { + if (!IS_PAUSE_STATE_GAMEOVER) { + switch (pauseCtx->pageIndex) { + case PAUSE_ITEM: + KaleidoScope_UpdateItemCursor(play); + break; + + case PAUSE_MAP: + if (sInDungeonScene) { + KaleidoScope_UpdateDungeonCursor(play); + } else { + KaleidoScope_UpdateWorldMapCursor(play); + } + break; + + case PAUSE_QUEST: + KaleidoScope_UpdateQuestCursor(play); + break; + + case PAUSE_MASK: + KaleidoScope_UpdateMaskCursor(play); + break; + } + + if ((pauseCtx->state == PAUSE_STATE_MAIN) && + ((pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) || + (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG))) { + KaleidoScope_HandlePageToggles(play, input); + } + } + if (pauseCtx->state == PAUSE_STATE_MAIN) { + KaleidoScope_UpdateNamePanel(play); + } + } else if (pauseCtx->state == PAUSE_STATE_OWLWARP_SELECT) { + KaleidoScope_UpdateWorldMapCursor(play); + KaleidoScope_UpdateNamePanel(play); + } + + // Update the inventory editor + if ((pauseCtx->debugEditor == DEBUG_EDITOR_INVENTORY_INIT) || (pauseCtx->debugEditor == DEBUG_EDITOR_INVENTORY)) { + KaleidoScope_UpdateInventoryEditor(play); + } +} diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 755560406..56c0cb28d 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -754,7 +754,7 @@ 0x800B742C:("Actor_ActorAIsFacingActorB",), 0x800B748C:("Actor_IsFacingAndNearPlayer",), 0x800B750C:("Actor_ActorAIsFacingAndNearActorB",), - 0x800B75A0:("func_800B75A0",), + 0x800B75A0:("Actor_GetSlopeDirection",), 0x800B761C:("func_800B761C",), 0x800B7678:("func_800B7678",), 0x800B78B8:("Actor_UpdateBgCheckInfo",), @@ -2207,7 +2207,7 @@ 0x80123BD4:("Player_SetModelGroup",), 0x80123C58:("func_80123C58",), 0x80123C90:("Player_SetEquipmentData",), - 0x80123D50:("func_80123D50",), + 0x80123D50:("Player_UpdateBottleHeld",), 0x80123DA4:("func_80123DA4",), 0x80123DC0:("func_80123DC0",), 0x80123E90:("func_80123E90",), @@ -2780,9 +2780,9 @@ 0x80142100:("func_80142100",), 0x80142440:("func_80142440",), 0x80143148:("func_80143148",), - 0x801431E8:("func_801431E8",), + 0x801431E8:("Skybox_Setup",), 0x80143324:("func_80143324",), - 0x801434E4:("func_801434E4",), + 0x801434E4:("Skybox_Init",), 0x801435A0:("SkyboxDraw_UpdateMatrix",), 0x80143624:("SkyboxDraw_SetColors",), 0x80143668:("SkyboxDraw_Draw",), @@ -3352,8 +3352,8 @@ 0x8017FEB0:("Math_GetAtan2Tbl",), 0x8017FEE4:("Math_Atan2S",), 0x801800CC:("Math_Atan2F",), - 0x80180100:("Math_FAtan2F",), - 0x8018012C:("Math_Acot2F",), + 0x80180100:("Math_Atan2S_XY",), + 0x8018012C:("Math_Atan2F_XY",), 0x80180160:("Matrix_Init",), 0x8018019C:("Matrix_Push",), 0x801801CC:("Matrix_Pop",), @@ -4225,15 +4225,15 @@ 0x80821A04:("func_80821A04",), 0x80821AD4:("KaleidoScope_DrawTexQuadRGBA32",), 0x80821CC4:("func_80821CC4",), - 0x80821D84:("func_80821D84",), + 0x80821D84:("KaleidoScope_HandlePageToggles",), 0x80821F30:("func_80821F30",), 0x808221DC:("func_808221DC",), 0x80823350:("func_80823350",), - 0x80824738:("func_80824738",), + 0x80824738:("KaleidoScope_UpdateNamePanel",), 0x808248D0:("func_808248D0",), 0x80824B90:("func_80824B90",), - 0x808256E4:("func_808256E4",), - 0x8082585C:("func_8082585C",), + 0x808256E4:("KaleidoScope_UpdateOwlWarpNamePanel",), + 0x8082585C:("KaleidoScope_UpdateSwitchPage",), 0x808259D4:("KaleidoScope_SetView",), 0x80825A50:("func_80825A50",), 0x80825E28:("func_80825E28",), @@ -4241,8 +4241,8 @@ 0x80827A8C:("func_80827A8C",), 0x80827E08:("func_80827E08",), 0x808283D8:("KaleidoScope_Draw",), - 0x808286D8:("func_808286D8",), - 0x80828788:("func_80828788",), + 0x808286D8:("KaleidoScope_GrayOutTextureRGBA32",), + 0x80828788:("KaleidoScope_UpdateOpening",), 0x8082895C:("KaleidoScope_Update",), 0x8082DA90:("func_8082DA90",), 0x8082DABC:("func_8082DABC",), @@ -11108,48 +11108,48 @@ 0x80A7C5EC:("ObjEtcetera_Update",), 0x80A7C690:("ObjEtcetera_DrawIdle",), 0x80A7C718:("ObjEtcetera_DrawAnimated",), - 0x80A7C990:("func_80A7C990",), - 0x80A7CA18:("func_80A7CA18",), - 0x80A7CBC4:("func_80A7CBC4",), - 0x80A7CD08:("func_80A7CD08",), + 0x80A7C990:("EnEgol_ChangeAnim",), + 0x80A7CA18:("EnEgol_FootstepEffects",), + 0x80A7CBC4:("EnEgol_DestroyBlocks",), + 0x80A7CD08:("EnEgol_GetWaypoint",), 0x80A7CD60:("EnEgol_Init",), 0x80A7D0F0:("EnEgol_Destroy",), - 0x80A7D140:("func_80A7D140",), - 0x80A7D168:("func_80A7D168",), - 0x80A7D1E4:("func_80A7D1E4",), - 0x80A7D240:("func_80A7D240",), - 0x80A7D27C:("func_80A7D27C",), - 0x80A7D2C4:("func_80A7D2C4",), - 0x80A7D710:("func_80A7D710",), - 0x80A7D780:("func_80A7D780",), - 0x80A7DAAC:("func_80A7DAAC",), - 0x80A7DAF0:("func_80A7DAF0",), - 0x80A7E2E8:("func_80A7E2E8",), - 0x80A7E344:("func_80A7E344",), - 0x80A7E478:("func_80A7E478",), - 0x80A7E4B4:("func_80A7E4B4",), - 0x80A7E7EC:("func_80A7E7EC",), - 0x80A7E820:("func_80A7E820",), - 0x80A7E924:("func_80A7E924",), - 0x80A7E970:("func_80A7E970",), - 0x80A7E9D0:("func_80A7E9D0",), - 0x80A7EA28:("func_80A7EA28",), - 0x80A7EA88:("func_80A7EA88",), - 0x80A7EAD8:("func_80A7EAD8",), - 0x80A7EB14:("func_80A7EB14",), - 0x80A7EB54:("func_80A7EB54",), - 0x80A7EB90:("func_80A7EB90",), - 0x80A7EBDC:("func_80A7EBDC",), - 0x80A7EC84:("func_80A7EC84",), - 0x80A7ED14:("func_80A7ED14",), - 0x80A7EFB8:("func_80A7EFB8",), + 0x80A7D140:("EnEgol_SetupWait",), + 0x80A7D168:("EnEgol_Wait",), + 0x80A7D1E4:("EnEgol_SetupStand",), + 0x80A7D240:("EnEgol_Stand",), + 0x80A7D27C:("EnEgol_SetupWalk",), + 0x80A7D2C4:("EnEgol_Walk",), + 0x80A7D710:("EnEgol_SetupRetreat",), + 0x80A7D780:("EnEgol_Retreat",), + 0x80A7DAAC:("EnEgol_SetupLaser",), + 0x80A7DAF0:("EnEgol_Laser",), + 0x80A7E2E8:("EnEgol_SetupStop",), + 0x80A7E344:("EnEgol_Stop",), + 0x80A7E478:("EnEgol_SetupSlam",), + 0x80A7E4B4:("EnEgol_Slam",), + 0x80A7E7EC:("EnEgol_SetupPunch",), + 0x80A7E820:("EnEgol_Punch",), + 0x80A7E924:("EnEgol_SetupSlamWait",), + 0x80A7E970:("EnEgol_SlamWait",), + 0x80A7E9D0:("EnEgol_SetupStunned",), + 0x80A7EA28:("EnEgol_Stunned",), + 0x80A7EA88:("EnEgol_SetupStunEnd",), + 0x80A7EAD8:("EnEgol_StunEnd",), + 0x80A7EB14:("EnEgol_SetupSlamEnd",), + 0x80A7EB54:("EnEgol_SlamEnd",), + 0x80A7EB90:("EnEgol_SetupDamaged",), + 0x80A7EBDC:("EnEgol_Damaged",), + 0x80A7EC84:("EnEgol_StartDeathCutscene",), + 0x80A7ED14:("EnEgol_Death",), + 0x80A7EFB8:("EnEgol_CollisionCheck",), 0x80A7F354:("EnEgol_Update",), - 0x80A7F8E8:("func_80A7F8E8",), - 0x80A7FAFC:("func_80A7FAFC",), + 0x80A7F8E8:("EnEgol_OverrideLimbDraw",), + 0x80A7FAFC:("EnEgol_PostLimbDraw",), 0x80A7FFB8:("EnEgol_Draw",), - 0x80A80508:("func_80A80508",), - 0x80A80750:("func_80A80750",), - 0x80A80904:("func_80A80904",), + 0x80A80508:("EnEgol_SpawnEffect",), + 0x80A80750:("EnEgol_UpdateEffects",), + 0x80A80904:("EnEgol_DrawEffects",), 0x80A811D0:("func_80A811D0",), 0x80A8120C:("func_80A8120C",), 0x80A81288:("func_80A81288",), @@ -11409,13 +11409,13 @@ 0x80A98F94:("func_80A98F94",), 0x80A99EA0:("EnEstone_Init",), 0x80A9A1B0:("EnEstone_Destroy",), - 0x80A9A1DC:("func_80A9A1DC",), - 0x80A9A4B0:("func_80A9A4B0",), + 0x80A9A1DC:("EnEstone_Active",), + 0x80A9A4B0:("EnEstone_Inactive",), 0x80A9A4E0:("EnEstone_Update",), 0x80A9A600:("EnEstone_Draw",), - 0x80A9A774:("func_80A9A774",), - 0x80A9A870:("func_80A9A870",), - 0x80A9A9C0:("func_80A9A9C0",), + 0x80A9A774:("EnEstone_SpawnEffect",), + 0x80A9A870:("EnEstone_UpdateEffects",), + 0x80A9A9C0:("EnEstone_DrawEffects",), 0x80A9ACD0:("func_80A9ACD0",), 0x80A9ACF0:("func_80A9ACF0",), 0x80A9AD18:("func_80A9AD18",), @@ -11794,14 +11794,14 @@ 0x80AB9C4C:("func_80AB9C4C",), 0x80ABA7A0:("EnEgblock_Init",), 0x80ABA868:("EnEgblock_Destroy",), - 0x80ABA8A4:("func_80ABA8A4",), - 0x80ABA988:("func_80ABA988",), - 0x80ABA9B8:("func_80ABA9B8",), + 0x80ABA8A4:("EnEgblock_Active",), + 0x80ABA988:("EnEgblock_Inactive",), + 0x80ABA9B8:("EnEgblock_DoNothing",), 0x80ABA9C8:("EnEgblock_Update",), 0x80ABAA14:("EnEgblock_Draw",), - 0x80ABAAF4:("func_80ABAAF4",), - 0x80ABACB4:("func_80ABACB4",), - 0x80ABAE64:("func_80ABAE64",), + 0x80ABAAF4:("EnEgblock_SpawnEffect",), + 0x80ABACB4:("EnEgblock_UpdateEffects",), + 0x80ABAE64:("EnEgblock_DrawEffects",), 0x80ABB0E0:("EnGuardNuts_Init",), 0x80ABB1E4:("EnGuardNuts_Destroy",), 0x80ABB210:("EnGuardNuts_ChangeAnim",), @@ -14659,8 +14659,8 @@ 0x80B85858:("func_80B85858",), 0x80B85900:("func_80B85900",), 0x80B85A00:("func_80B85A00",), - 0x80B85E18:("func_80B85E18",), - 0x80B85EA0:("func_80B85EA0",), + 0x80B85E18:("EnKaizoku_ChangeAnim",), + 0x80B85EA0:("EnKaizoku_ValidatePictograph",), 0x80B85F48:("func_80B85F48",), 0x80B85FA8:("func_80B85FA8",), 0x80B86804:("func_80B86804",), @@ -14698,10 +14698,10 @@ 0x80B8971C:("func_80B8971C",), 0x80B89A08:("func_80B89A08",), 0x80B8A0A0:("EnKaizoku_Update",), - 0x80B8A318:("func_80B8A318",), - 0x80B8A468:("func_80B8A468",), - 0x80B8A6B0:("func_80B8A6B0",), - 0x80B8A718:("func_80B8A718",), + 0x80B8A318:("EnKaizoku_OverrideLimbDraw",), + 0x80B8A468:("EnKaizoku_PostLimbDraw",), + 0x80B8A6B0:("EnKaizoku_TransformLimbDraw",), + 0x80B8A718:("EnKaizoku_Draw",), 0x80B8B2D0:("EnGe2_Init",), 0x80B8B504:("EnGe2_Destroy",), 0x80B8B514:("func_80B8B514",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 67ce39fa9..d96397e5f 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -971,9 +971,9 @@ 0x801BDACC:("D_801BDACC","UNK_TYPE4","",0x4), 0x801BDAF0:("D_801BDAF0","UNK_TYPE4","",0x4), 0x801BDAF8:("D_801BDAF8","UNK_TYPE4","",0x4), - 0x801BDB00:("D_801BDB00","UNK_TYPE1","",0x1), - 0x801BDB08:("sKaleidoSetupEyeX","UNK_TYPE1","",0x1), - 0x801BDB18:("sKaleidoSetupEyeZ","UNK_TYPE1","",0x1), + 0x801BDB00:("sKaleidoSetupRightPageIndex","UNK_TYPE1","",0x1), + 0x801BDB08:("sKaleidoSetupRightPageEyeX","UNK_TYPE1","",0x1), + 0x801BDB18:("sKaleidoSetupRightPageEyeZ","UNK_TYPE1","",0x1), 0x801BDB30:("kanfontOrdering","u8","[92]",0x5c), 0x801BDB90:("D_801BDB90","f32","",0x4), 0x801BDB94:("D_801BDB94","UNK_TYPE4","",0x4), @@ -4743,32 +4743,32 @@ 0x8082B7B4:("D_8082B7B4","UNK_TYPE1","",0x1), 0x8082B7F0:("D_8082B7F0","UNK_TYPE2","",0x2), 0x8082B838:("D_8082B838","UNK_TYPE2","",0x2), - 0x8082B880:("D_8082B880","UNK_TYPE2","",0x2), - 0x8082B884:("D_8082B884","UNK_TYPE2","",0x2), - 0x8082B888:("D_8082B888","UNK_TYPE2","",0x2), - 0x8082B88C:("D_8082B88C","UNK_TYPE2","",0x2), - 0x8082B890:("D_8082B890","UNK_TYPE2","",0x2), - 0x8082B894:("D_8082B894","UNK_TYPE2","",0x2), - 0x8082B898:("D_8082B898","UNK_TYPE2","",0x2), - 0x8082B89C:("D_8082B89C","UNK_TYPE2","",0x2), - 0x8082B8A0:("D_8082B8A0","UNK_TYPE2","",0x2), - 0x8082B8A4:("D_8082B8A4","UNK_TYPE2","",0x2), - 0x8082B8A8:("D_8082B8A8","UNK_TYPE2","",0x2), - 0x8082B8AC:("D_8082B8AC","UNK_TYPE2","",0x2), - 0x8082B8B0:("D_8082B8B0","UNK_TYPE2","",0x2), - 0x8082B8B4:("D_8082B8B4","UNK_TYPE2","",0x2), - 0x8082B8B8:("D_8082B8B8","UNK_TYPE1","",0x1), - 0x8082B8D8:("D_8082B8D8","UNK_TYPE1","",0x1), - 0x8082B8F8:("D_8082B8F8","UNK_TYPE1","",0x1), - 0x8082B908:("D_8082B908","f32","",0x4), + 0x8082B880:("sGameOverPrimR","UNK_TYPE2","",0x2), + 0x8082B884:("sGameOverPrimG","UNK_TYPE2","",0x2), + 0x8082B888:("sGameOverPrimB","UNK_TYPE2","",0x2), + 0x8082B88C:("sGameOverPrimAlpha","UNK_TYPE2","",0x2), + 0x8082B890:("sCursorPrimR","UNK_TYPE2","",0x2), + 0x8082B894:("sCursorPrimG","UNK_TYPE2","",0x2), + 0x8082B898:("sCursorPrimB","UNK_TYPE2","",0x2), + 0x8082B89C:("sCursorEnvR","UNK_TYPE2","",0x2), + 0x8082B8A0:("sCursorEnvG","UNK_TYPE2","",0x2), + 0x8082B8A4:("sCursorEnvB","UNK_TYPE2","",0x2), + 0x8082B8A8:("sGameOverEnvR","UNK_TYPE2","",0x2), + 0x8082B8AC:("sGameOverEnvG","UNK_TYPE2","",0x2), + 0x8082B8B0:("sGameOverEnvB","UNK_TYPE2","",0x2), + 0x8082B8B4:("sInDungeonScene","UNK_TYPE2","",0x2), + 0x8082B8B8:("sPageSwitchEyeDx","UNK_TYPE1","",0x1), + 0x8082B8D8:("sPageSwitchEyeDz","UNK_TYPE1","",0x1), + 0x8082B8F8:("sPageSwitchNextPageIndex","UNK_TYPE1","",0x1), + 0x8082B908:("sPauseMenuVerticalOffset","f32","",0x4), 0x8082B90C:("D_8082B90C","f32","",0x4), - 0x8082B910:("D_8082B910","f32","",0x4), - 0x8082B914:("D_8082B914","f32","",0x4), - 0x8082B918:("D_8082B918","UNK_TYPE2","",0x2), - 0x8082B91C:("D_8082B91C","UNK_TYPE2","",0x2), + 0x8082B910:("sPauseCursorLeftMoveOffsetX","f32","",0x4), + 0x8082B914:("sPauseCursorRightMoveOffsetX","f32","",0x4), + 0x8082B918:("sPauseCursorLeftX","UNK_TYPE2","",0x2), + 0x8082B91C:("sPauseCursorRightX","UNK_TYPE2","",0x2), 0x8082B920:("D_8082B920","UNK_TYPE2","",0x2), 0x8082B924:("D_8082B924","UNK_TYPE2","",0x2), - 0x8082B944:("D_8082B944","UNK_TYPE2","",0x2), + 0x8082B944:("sGameOverRectPosY","UNK_TYPE2","",0x2), 0x8082B948:("D_8082B948","UNK_TYPE2","",0x2), 0x8082B96C:("D_8082B96C","UNK_TYPE2","",0x2), 0x8082B990:("D_8082B990","UNK_TYPE2","",0x2), @@ -4823,15 +4823,15 @@ 0x8082BDCC:("D_8082BDCC","UNK_TYPE1","",0x1), 0x8082BE28:("D_8082BE28","UNK_TYPE1","",0x1), 0x8082BE84:("D_8082BE84","UNK_TYPE2","",0x2), - 0x8082BE88:("D_8082BE88","UNK_TYPE1","",0x1), - 0x8082BE9C:("D_8082BE9C","UNK_TYPE2","",0x2), - 0x8082BEA0:("D_8082BEA0","UNK_TYPE2","",0x2), - 0x8082BEA4:("D_8082BEA4","UNK_TYPE2","",0x2), - 0x8082BEA8:("D_8082BEA8","UNK_TYPE2","",0x2), - 0x8082BEAC:("D_8082BEAC","UNK_TYPE2","",0x2), - 0x8082BEB0:("D_8082BEB0","UNK_TYPE2","",0x2), - 0x8082BEB4:("D_8082BEB4","UNK_TYPE2","",0x2), - 0x8082BEB8:("D_8082BEB8","UNK_TYPE2","",0x2), + 0x8082BE88:("sCursorPointsToOcarinaModes","UNK_TYPE1","",0x1), + 0x8082BE9C:("sUnpausedHudVisibility","UNK_TYPE2","",0x2), + 0x8082BEA0:("sNextMainState","UNK_TYPE2","",0x2), + 0x8082BEA4:("sDelayTimer","UNK_TYPE2","",0x2), + 0x8082BEA8:("sGameOverColorTimer","UNK_TYPE2","",0x2), + 0x8082BEAC:("sStickXRepeatTimer","UNK_TYPE2","",0x2), + 0x8082BEB0:("sStickYRepeatTimer","UNK_TYPE2","",0x2), + 0x8082BEB4:("sStickXRepeatState","UNK_TYPE2","",0x2), + 0x8082BEB8:("sStickYRepeatState","UNK_TYPE2","",0x2), 0x8082BEC0:("D_8082BEC0","char","[]",0x1), 0x8082BEC4:("D_8082BEC4","char","[]",0x1), 0x8082BED0:("D_8082BED0","char","[]",0x1), @@ -4948,7 +4948,7 @@ 0x8082DA52:("D_8082DA52","UNK_TYPE1","",0x1), 0x8082DA54:("D_8082DA54","UNK_TYPE1","",0x1), 0x8082DA56:("D_8082DA56","UNK_TYPE1","",0x1), - 0x8082DA58:("D_8082DA58","UNK_TYPE1","",0x1), + 0x8082DA58:("sUnpausedButtonStatus","UNK_TYPE1","",0x1), 0x8082DA60:("D_8082DA60","f32","",0x4), 0x8082DA64:("D_8082DA64","f32","",0x4), 0x8082DA68:("D_8082DA68","f32","",0x4), @@ -11467,7 +11467,7 @@ 0x80A41938:("D_80A41938","f32","",0x4), 0x80A41D20:("D_80A41D20","UNK_TYPE1","",0x1), 0x80A41D24:("D_80A41D24","UNK_TYPE1","",0x1), - 0x80A41D28:("D_80A41D28","UNK_TYPE1","",0x1), + 0x80A41D28:("sEnTest3_Input","Input","",0x18), 0x80A41D40:("D_80A41D40","f32","",0x4), 0x80A41D44:("D_80A41D44","UNK_TYPE1","",0x1), 0x80A41D48:("D_80A41D48","UNK_TYPE1","",0x1), diff --git a/tools/eventinfconvert.py b/tools/eventinfconvert.py new file mode 100755 index 000000000..7205dfcc9 --- /dev/null +++ b/tools/eventinfconvert.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python3 + +import argparse +import math +import re + +def isValid(index: int, mask: int) -> bool: + if index < 0 or index > 7: + return False + if mask != (1 << int(math.log2(mask))): + return False + return True + +def getFlagMacro(index: int, mask: int) -> str: + return f"EVENTINF_{index}{int(math.log2(mask))}" + +def getCheckMacro(index: int, mask: int) -> str: + return f"CHECK_EVENTINF({getFlagMacro(index, mask)})" + +def getSetMacro(index: int, mask: int) -> str: + return f"SET_EVENTINF({getFlagMacro(index, mask)})" + +def getClearMacro(index: int, mask: int) -> str: + return f"CLEAR_EVENTINF({getFlagMacro(index, mask)})" + +NUMBER_PATTERN = r"(0[xX])?[0-9a-fA-F]+" + +def applyChange(fileContents: str, compiledRegex: re.Pattern, callback) -> str: + parsedContents = "" + + match = compiledRegex.search(fileContents) + while match: + index = int(match.group("index"), 0) + mask = int(match.group("mask"), 0) + + start, end = match.span() + parsedContents += fileContents[:start] + if isValid(index, mask): + parsedContents += callback(index, mask) + else: + parsedContents += fileContents[start:end] + + fileContents = fileContents[end:] + match = compiledRegex.search(fileContents) + + parsedContents += fileContents + return parsedContents + + +def updateCheck(fileContents: str) -> str: + checkRegex = re.compile(rf"gSaveContext.eventInf\[(?P{NUMBER_PATTERN})\]\s*\&\s*(?P{NUMBER_PATTERN})") + + return applyChange(fileContents, checkRegex, getCheckMacro) + +def updateSet(fileContents: str) -> str: + setRegex = re.compile(rf"gSaveContext.eventInf\[(?P{NUMBER_PATTERN})\]\s*\|=\s*(?P{NUMBER_PATTERN})") + + return applyChange(fileContents, setRegex, getSetMacro) + +def updateClear(fileContents: str) -> str: + clearRegex = re.compile(rf"gSaveContext.eventInf\[(?P{NUMBER_PATTERN})\]\s*\&=\s*(\(u8\))?~(?P{NUMBER_PATTERN})") + + return applyChange(fileContents, clearRegex, getClearMacro) + + +def read_file(filename): + with open(filename) as src_file: + return src_file.read() + +def write_file(filename, contents): + with open(filename, "w") as f: + f.write(contents) + + +def main(): + parser = argparse.ArgumentParser(description="Converts a eventInf access to a macro") + + parser.add_argument("filename", help="Replace every occurrence of numeric eventInf on this file to the corresponding macro") + args = parser.parse_args() + + fileContents = read_file(args.filename) + + parsedContents = updateCheck(fileContents) + parsedContents = updateSet(parsedContents) + parsedContents = updateClear(parsedContents) + + if fileContents != parsedContents: + write_file(args.filename, parsedContents) + +if __name__ == "__main__": + main() diff --git a/tools/ido_recomp/linux/5.3/as0 b/tools/ido_recomp/linux/5.3/as0 new file mode 100755 index 000000000..15c169107 Binary files /dev/null and b/tools/ido_recomp/linux/5.3/as0 differ diff --git a/tools/ido_recomp/linux/5.3/as1 b/tools/ido_recomp/linux/5.3/as1 index 41c2545af..1a24f18b2 100755 Binary files a/tools/ido_recomp/linux/5.3/as1 and b/tools/ido_recomp/linux/5.3/as1 differ diff --git a/tools/ido_recomp/linux/5.3/cc b/tools/ido_recomp/linux/5.3/cc index 3dcc53798..65f0d1b2d 100755 Binary files a/tools/ido_recomp/linux/5.3/cc and b/tools/ido_recomp/linux/5.3/cc differ diff --git a/tools/ido_recomp/linux/5.3/cfe b/tools/ido_recomp/linux/5.3/cfe index e9594fafc..cbb4f9d44 100755 Binary files a/tools/ido_recomp/linux/5.3/cfe and b/tools/ido_recomp/linux/5.3/cfe differ diff --git a/tools/ido_recomp/linux/5.3/err.english.cc b/tools/ido_recomp/linux/5.3/err.english.cc old mode 100755 new mode 100644 diff --git a/tools/ido_recomp/linux/5.3/ugen b/tools/ido_recomp/linux/5.3/ugen index b2b662f1d..119d2817b 100755 Binary files a/tools/ido_recomp/linux/5.3/ugen and b/tools/ido_recomp/linux/5.3/ugen differ diff --git a/tools/ido_recomp/linux/5.3/ujoin b/tools/ido_recomp/linux/5.3/ujoin old mode 100644 new mode 100755 index f9c90b8be..4091986a8 Binary files a/tools/ido_recomp/linux/5.3/ujoin and b/tools/ido_recomp/linux/5.3/ujoin differ diff --git a/tools/ido_recomp/linux/5.3/uld b/tools/ido_recomp/linux/5.3/uld old mode 100644 new mode 100755 index f227222bc..653ff37df Binary files a/tools/ido_recomp/linux/5.3/uld and b/tools/ido_recomp/linux/5.3/uld differ diff --git a/tools/ido_recomp/linux/5.3/umerge b/tools/ido_recomp/linux/5.3/umerge old mode 100644 new mode 100755 index 00a8281d2..4b00ffa36 Binary files a/tools/ido_recomp/linux/5.3/umerge and b/tools/ido_recomp/linux/5.3/umerge differ diff --git a/tools/ido_recomp/linux/5.3/uopt b/tools/ido_recomp/linux/5.3/uopt index 5afe7a11c..d5ba32fbd 100755 Binary files a/tools/ido_recomp/linux/5.3/uopt and b/tools/ido_recomp/linux/5.3/uopt differ diff --git a/tools/ido_recomp/linux/5.3/usplit b/tools/ido_recomp/linux/5.3/usplit old mode 100644 new mode 100755 index a1c5ebad6..17d9d3d5d Binary files a/tools/ido_recomp/linux/5.3/usplit and b/tools/ido_recomp/linux/5.3/usplit differ diff --git a/tools/ido_recomp/linux/7.1/as0 b/tools/ido_recomp/linux/7.1/as0 new file mode 100755 index 000000000..e9ef71c63 Binary files /dev/null and b/tools/ido_recomp/linux/7.1/as0 differ diff --git a/tools/ido_recomp/linux/7.1/as1 b/tools/ido_recomp/linux/7.1/as1 index 01dbc6f6b..475079063 100755 Binary files a/tools/ido_recomp/linux/7.1/as1 and b/tools/ido_recomp/linux/7.1/as1 differ diff --git a/tools/ido_recomp/linux/7.1/cc b/tools/ido_recomp/linux/7.1/cc index a7f06afa8..6c68698f3 100755 Binary files a/tools/ido_recomp/linux/7.1/cc and b/tools/ido_recomp/linux/7.1/cc differ diff --git a/tools/ido_recomp/linux/7.1/cfe b/tools/ido_recomp/linux/7.1/cfe index 2c6767e69..2b52669de 100755 Binary files a/tools/ido_recomp/linux/7.1/cfe and b/tools/ido_recomp/linux/7.1/cfe differ diff --git a/tools/ido_recomp/linux/7.1/err.english.cc b/tools/ido_recomp/linux/7.1/err.english.cc old mode 100755 new mode 100644 diff --git a/tools/ido_recomp/linux/7.1/ugen b/tools/ido_recomp/linux/7.1/ugen index f5c1a2e20..340a282c9 100755 Binary files a/tools/ido_recomp/linux/7.1/ugen and b/tools/ido_recomp/linux/7.1/ugen differ diff --git a/tools/ido_recomp/linux/7.1/ujoin b/tools/ido_recomp/linux/7.1/ujoin new file mode 100755 index 000000000..3752698d8 Binary files /dev/null and b/tools/ido_recomp/linux/7.1/ujoin differ diff --git a/tools/ido_recomp/linux/7.1/uld b/tools/ido_recomp/linux/7.1/uld new file mode 100755 index 000000000..2b76d0c18 Binary files /dev/null and b/tools/ido_recomp/linux/7.1/uld differ diff --git a/tools/ido_recomp/linux/7.1/umerge b/tools/ido_recomp/linux/7.1/umerge old mode 100644 new mode 100755 index b0c8c1778..03d68a8f2 Binary files a/tools/ido_recomp/linux/7.1/umerge and b/tools/ido_recomp/linux/7.1/umerge differ diff --git a/tools/ido_recomp/linux/7.1/uopt b/tools/ido_recomp/linux/7.1/uopt index ecf7eab72..feef7f749 100755 Binary files a/tools/ido_recomp/linux/7.1/uopt and b/tools/ido_recomp/linux/7.1/uopt differ diff --git a/tools/ido_recomp/linux/7.1/usplit b/tools/ido_recomp/linux/7.1/usplit new file mode 100755 index 000000000..090200ab5 Binary files /dev/null and b/tools/ido_recomp/linux/7.1/usplit differ diff --git a/tools/ido_recomp/macos/5.3/acpp b/tools/ido_recomp/macos/5.3/acpp deleted file mode 100755 index 043162770..000000000 Binary files a/tools/ido_recomp/macos/5.3/acpp and /dev/null differ diff --git a/tools/ido_recomp/macos/5.3/as0 b/tools/ido_recomp/macos/5.3/as0 index 9cff1dcd7..46e69e09b 100755 Binary files a/tools/ido_recomp/macos/5.3/as0 and b/tools/ido_recomp/macos/5.3/as0 differ diff --git a/tools/ido_recomp/macos/5.3/as1 b/tools/ido_recomp/macos/5.3/as1 index df0142e86..f723cc5c1 100755 Binary files a/tools/ido_recomp/macos/5.3/as1 and b/tools/ido_recomp/macos/5.3/as1 differ diff --git a/tools/ido_recomp/macos/5.3/cc b/tools/ido_recomp/macos/5.3/cc index e9b599bda..d583c6b5b 100755 Binary files a/tools/ido_recomp/macos/5.3/cc and b/tools/ido_recomp/macos/5.3/cc differ diff --git a/tools/ido_recomp/macos/5.3/cfe b/tools/ido_recomp/macos/5.3/cfe index 30e514947..92f76465a 100755 Binary files a/tools/ido_recomp/macos/5.3/cfe and b/tools/ido_recomp/macos/5.3/cfe differ diff --git a/tools/ido_recomp/macos/5.3/copt b/tools/ido_recomp/macos/5.3/copt deleted file mode 100755 index 243c37a29..000000000 Binary files a/tools/ido_recomp/macos/5.3/copt and /dev/null differ diff --git a/tools/ido_recomp/macos/5.3/ugen b/tools/ido_recomp/macos/5.3/ugen index 7f18bf44b..7be477312 100755 Binary files a/tools/ido_recomp/macos/5.3/ugen and b/tools/ido_recomp/macos/5.3/ugen differ diff --git a/tools/ido_recomp/macos/5.3/ujoin b/tools/ido_recomp/macos/5.3/ujoin index 30503f95d..e69611f41 100755 Binary files a/tools/ido_recomp/macos/5.3/ujoin and b/tools/ido_recomp/macos/5.3/ujoin differ diff --git a/tools/ido_recomp/macos/5.3/uld b/tools/ido_recomp/macos/5.3/uld index 13aa261f5..2bcce1cd6 100755 Binary files a/tools/ido_recomp/macos/5.3/uld and b/tools/ido_recomp/macos/5.3/uld differ diff --git a/tools/ido_recomp/macos/5.3/umerge b/tools/ido_recomp/macos/5.3/umerge index c31c866d5..7fdf06e8d 100755 Binary files a/tools/ido_recomp/macos/5.3/umerge and b/tools/ido_recomp/macos/5.3/umerge differ diff --git a/tools/ido_recomp/macos/5.3/uopt b/tools/ido_recomp/macos/5.3/uopt index 7bbaac298..e9b8cbe62 100755 Binary files a/tools/ido_recomp/macos/5.3/uopt and b/tools/ido_recomp/macos/5.3/uopt differ diff --git a/tools/ido_recomp/macos/5.3/usplit b/tools/ido_recomp/macos/5.3/usplit index a95984803..cb28e320c 100755 Binary files a/tools/ido_recomp/macos/5.3/usplit and b/tools/ido_recomp/macos/5.3/usplit differ diff --git a/tools/ido_recomp/macos/7.1/as0 b/tools/ido_recomp/macos/7.1/as0 new file mode 100755 index 000000000..cdb4f9121 Binary files /dev/null and b/tools/ido_recomp/macos/7.1/as0 differ diff --git a/tools/ido_recomp/macos/7.1/as1 b/tools/ido_recomp/macos/7.1/as1 index 88b9f1f7e..93370b495 100755 Binary files a/tools/ido_recomp/macos/7.1/as1 and b/tools/ido_recomp/macos/7.1/as1 differ diff --git a/tools/ido_recomp/macos/7.1/cc b/tools/ido_recomp/macos/7.1/cc index ae54cdbcd..96d45690b 100755 Binary files a/tools/ido_recomp/macos/7.1/cc and b/tools/ido_recomp/macos/7.1/cc differ diff --git a/tools/ido_recomp/macos/7.1/cfe b/tools/ido_recomp/macos/7.1/cfe index 6c468c336..a9f0b56fc 100755 Binary files a/tools/ido_recomp/macos/7.1/cfe and b/tools/ido_recomp/macos/7.1/cfe differ diff --git a/tools/ido_recomp/macos/7.1/ugen b/tools/ido_recomp/macos/7.1/ugen index 3fa7d48fc..801337b48 100755 Binary files a/tools/ido_recomp/macos/7.1/ugen and b/tools/ido_recomp/macos/7.1/ugen differ diff --git a/tools/ido_recomp/macos/7.1/ujoin b/tools/ido_recomp/macos/7.1/ujoin new file mode 100755 index 000000000..620e624f0 Binary files /dev/null and b/tools/ido_recomp/macos/7.1/ujoin differ diff --git a/tools/ido_recomp/macos/7.1/uld b/tools/ido_recomp/macos/7.1/uld new file mode 100755 index 000000000..a7826480f Binary files /dev/null and b/tools/ido_recomp/macos/7.1/uld differ diff --git a/tools/ido_recomp/macos/7.1/umerge b/tools/ido_recomp/macos/7.1/umerge index 3a9d5440c..0f1978051 100755 Binary files a/tools/ido_recomp/macos/7.1/umerge and b/tools/ido_recomp/macos/7.1/umerge differ diff --git a/tools/ido_recomp/macos/7.1/uopt b/tools/ido_recomp/macos/7.1/uopt index b025fa2c5..528151499 100755 Binary files a/tools/ido_recomp/macos/7.1/uopt and b/tools/ido_recomp/macos/7.1/uopt differ diff --git a/tools/ido_recomp/macos/7.1/usplit b/tools/ido_recomp/macos/7.1/usplit new file mode 100755 index 000000000..cc539bdb1 Binary files /dev/null and b/tools/ido_recomp/macos/7.1/usplit differ diff --git a/tools/ido_recomp/windows/5.3/as0.exe b/tools/ido_recomp/windows/5.3/as0.exe new file mode 100755 index 000000000..10c16ca69 Binary files /dev/null and b/tools/ido_recomp/windows/5.3/as0.exe differ diff --git a/tools/ido_recomp/windows/5.3/as1.exe b/tools/ido_recomp/windows/5.3/as1.exe index fb67bb8b5..0ddac02bb 100755 Binary files a/tools/ido_recomp/windows/5.3/as1.exe and b/tools/ido_recomp/windows/5.3/as1.exe differ diff --git a/tools/ido_recomp/windows/5.3/cc.exe b/tools/ido_recomp/windows/5.3/cc.exe index 402d6f489..fdbaea21d 100755 Binary files a/tools/ido_recomp/windows/5.3/cc.exe and b/tools/ido_recomp/windows/5.3/cc.exe differ diff --git a/tools/ido_recomp/windows/5.3/cfe.exe b/tools/ido_recomp/windows/5.3/cfe.exe index 4b2fa59de..abe1063c6 100755 Binary files a/tools/ido_recomp/windows/5.3/cfe.exe and b/tools/ido_recomp/windows/5.3/cfe.exe differ diff --git a/tools/ido_recomp/windows/5.3/err.english.cc b/tools/ido_recomp/windows/5.3/err.english.cc old mode 100755 new mode 100644 diff --git a/tools/ido_recomp/windows/5.3/ugen.exe b/tools/ido_recomp/windows/5.3/ugen.exe index f74ee0d9e..be08a43c9 100755 Binary files a/tools/ido_recomp/windows/5.3/ugen.exe and b/tools/ido_recomp/windows/5.3/ugen.exe differ diff --git a/tools/ido_recomp/windows/5.3/ujoin.exe b/tools/ido_recomp/windows/5.3/ujoin.exe new file mode 100755 index 000000000..b01b5c335 Binary files /dev/null and b/tools/ido_recomp/windows/5.3/ujoin.exe differ diff --git a/tools/ido_recomp/windows/5.3/uld.exe b/tools/ido_recomp/windows/5.3/uld.exe new file mode 100755 index 000000000..34cad1400 Binary files /dev/null and b/tools/ido_recomp/windows/5.3/uld.exe differ diff --git a/tools/ido_recomp/windows/5.3/umerge.exe b/tools/ido_recomp/windows/5.3/umerge.exe new file mode 100755 index 000000000..3ce31e0cb Binary files /dev/null and b/tools/ido_recomp/windows/5.3/umerge.exe differ diff --git a/tools/ido_recomp/windows/5.3/uopt.exe b/tools/ido_recomp/windows/5.3/uopt.exe index 274d7e008..c1fb98c0d 100755 Binary files a/tools/ido_recomp/windows/5.3/uopt.exe and b/tools/ido_recomp/windows/5.3/uopt.exe differ diff --git a/tools/ido_recomp/windows/5.3/usplit.exe b/tools/ido_recomp/windows/5.3/usplit.exe new file mode 100755 index 000000000..d179f1e13 Binary files /dev/null and b/tools/ido_recomp/windows/5.3/usplit.exe differ diff --git a/tools/ido_recomp/windows/7.1/as0.exe b/tools/ido_recomp/windows/7.1/as0.exe new file mode 100755 index 000000000..1a375d73e Binary files /dev/null and b/tools/ido_recomp/windows/7.1/as0.exe differ diff --git a/tools/ido_recomp/windows/7.1/as1.exe b/tools/ido_recomp/windows/7.1/as1.exe index b41eba841..4778d2db6 100755 Binary files a/tools/ido_recomp/windows/7.1/as1.exe and b/tools/ido_recomp/windows/7.1/as1.exe differ diff --git a/tools/ido_recomp/windows/7.1/cc.exe b/tools/ido_recomp/windows/7.1/cc.exe index 1ada0d5bb..887b7cc49 100755 Binary files a/tools/ido_recomp/windows/7.1/cc.exe and b/tools/ido_recomp/windows/7.1/cc.exe differ diff --git a/tools/ido_recomp/windows/7.1/cfe.exe b/tools/ido_recomp/windows/7.1/cfe.exe index 03f8fc7e8..6f5fd9e8d 100755 Binary files a/tools/ido_recomp/windows/7.1/cfe.exe and b/tools/ido_recomp/windows/7.1/cfe.exe differ diff --git a/tools/ido_recomp/windows/7.1/err.english.cc b/tools/ido_recomp/windows/7.1/err.english.cc old mode 100755 new mode 100644 diff --git a/tools/ido_recomp/windows/7.1/ugen.exe b/tools/ido_recomp/windows/7.1/ugen.exe index e6533ab0b..fcc03538c 100755 Binary files a/tools/ido_recomp/windows/7.1/ugen.exe and b/tools/ido_recomp/windows/7.1/ugen.exe differ diff --git a/tools/ido_recomp/windows/7.1/ujoin.exe b/tools/ido_recomp/windows/7.1/ujoin.exe new file mode 100755 index 000000000..9fb3a3f4f Binary files /dev/null and b/tools/ido_recomp/windows/7.1/ujoin.exe differ diff --git a/tools/ido_recomp/windows/7.1/uld.exe b/tools/ido_recomp/windows/7.1/uld.exe new file mode 100755 index 000000000..4a0cc8fe2 Binary files /dev/null and b/tools/ido_recomp/windows/7.1/uld.exe differ diff --git a/tools/ido_recomp/windows/7.1/umerge.exe b/tools/ido_recomp/windows/7.1/umerge.exe new file mode 100755 index 000000000..7cc0b1be6 Binary files /dev/null and b/tools/ido_recomp/windows/7.1/umerge.exe differ diff --git a/tools/ido_recomp/windows/7.1/uopt.exe b/tools/ido_recomp/windows/7.1/uopt.exe index 5033f72b1..4fbd1ab57 100755 Binary files a/tools/ido_recomp/windows/7.1/uopt.exe and b/tools/ido_recomp/windows/7.1/uopt.exe differ diff --git a/tools/ido_recomp/windows/7.1/usplit.exe b/tools/ido_recomp/windows/7.1/usplit.exe new file mode 100755 index 000000000..5c0da6fe6 Binary files /dev/null and b/tools/ido_recomp/windows/7.1/usplit.exe differ diff --git a/tools/namefixer.py b/tools/namefixer.py index 14e8625e6..b58693986 100755 --- a/tools/namefixer.py +++ b/tools/namefixer.py @@ -5,10 +5,7 @@ import argparse # all occurrences of keys will be replaced by associated value simpleReplace = { - # "Math_Rand_":"Rand_", - # "ACTORTYPE":"ACTORCAT", - # "DistToLink":"DistToPlayer", - # "HitItem":"HitInfo", + "PLAYER_AP_": "PLAYER_IA_", } # all occurrences of keys will be replaced by associated value, @@ -21,7 +18,9 @@ simpleReplace = { wordReplace = { # Functions "Actor_GetSwitchFlag": "Flags_GetSwitch", - "atan_flip": "Math_Acot2F", + "Math_FAtan2F(": "Math_Atan2S_XY(", + "Math_Acot2F": "Math_Atan2F_XY", + "atan_flip": "Math_Atan2F_XY", "atans": "Math_Atan2S", # "SysMatrix_StateAlloc": "Matrix_StateAlloc", @@ -98,6 +97,7 @@ wordReplace = { "Matrix_InsertRotationAroundUnitVector_s": "Matrix_RotateAxisS", "func_800B78B8": "Actor_UpdateBgCheckInfo", + "func_80123D50": "Player_UpdateBottleHeld", "func_8012403C": "Player_GetMask", "func_8012404c": "Player_RemoveMask", "func_80123AA4": "Player_SetModels", @@ -149,6 +149,7 @@ wordReplace = { "func_801A5BD0": "AudioSfx_MuteBanks", "func_801A72CC": "AudioSfx_StopByPos", "Audio_StopSfxByPos": "AudioSfx_StopByPos", + "Audio_StopSfxById": "AudioSfx_StopById", "func_801A3098": "Audio_PlayFanfare", "func_801A8A50": "Audio_GetActiveSequence", "func_801A2E54": "Audio_PlayBgm_StorePrevBgm", @@ -622,6 +623,7 @@ wordReplace = { "func_800E8FA4": "Actor_TrackPoint", "func_800E9250": "Actor_TrackPlayer", "func_800E8EA0": "Actor_ContinueText", + "func_800B90F4": "Actor_DeactivateLens", "func_8010A000": "Map_GetDungeonOrBossAreaIndex", "func_8010A074": "Map_IsInDungeonOrBossArea", @@ -731,6 +733,17 @@ wordReplace = { "player->swordAnimation": "player->meleeWeaponAnimation", "player->swordState": "player->meleeWeaponState", "player->swordInfo": "player->meleeWeaponInfo", + "player->itemActionParam": "player->heldItemAction", + "player->heldItemActionParam": "player->itemAction", + "player->unk_A9C": "player->secretRumbleCharge", + "player->unk_AA0": "player->closestSecretDistSq", + "player->unk_B68": "player->fallStartHeight", + "player->unk_B6A": "player->fallDistance", + "player->targetActor": "player->talkActor", + "player->targetActorDistance": "player->talkActorDistance", + "player->unk_730": "player->targetedActor", + "player->ageProperties->unk_92": "player->ageProperties->voiceSfxIdOffset", + "player->ageProperties->unk_94": "player->ageProperties->surfaceSfxIdOffset", "csCtx.npcActions": "csCtx.actorActions", "csCtx->npcActions": "csCtx->actorActions", @@ -790,21 +803,21 @@ wordReplace = { "ICHAIN_F32_DIV1000(minVelocityY,": "ICHAIN_F32_DIV1000(terminalVelocity,", "ICHAIN_F32(minVelocityY,": "ICHAIN_F32(terminalVelocity,", - "EXCH_ITEM_MINUS1": "PLAYER_AP_MINUS1", - "EXCH_ITEM_NONE": "PLAYER_AP_NONE", - "EXCH_ITEM_PICTO_BOX": "PLAYER_AP_PICTO_BOX", - "EXCH_ITEM_1E": "PLAYER_AP_BOTTLE_MUSHROOM", - "EXCH_ITEM_MOON_TEAR": "PLAYER_AP_MOON_TEAR", - "EXCH_ITEM_DEED_LAND": "PLAYER_AP_DEED_LAND", - "EXCH_ITEM_ROOM_KEY": "PLAYER_AP_ROOM_KEY", - "EXCH_ITEM_LETTER_TO_KAFEI": "PLAYER_AP_LETTER_TO_KAFEI", - "EXCH_ITEM_2E": "PLAYER_AP_MAGIC_BEANS", - "EXCH_ITEM_DEED_SWAMP": "PLAYER_AP_DEED_SWAMP", - "EXCH_ITEM_DEED_MOUNTAIN": "PLAYER_AP_DEED_MOUNTAIN", - "EXCH_ITEM_DEED_OCEAN": "PLAYER_AP_DEED_OCEAN", - "EXCH_ITEM_LETTER_MAMA": "PLAYER_AP_LETTER_MAMA", + "EXCH_ITEM_MINUS1": "PLAYER_IA_MINUS1", + "EXCH_ITEM_NONE": "PLAYER_IA_NONE", + "EXCH_ITEM_PICTO_BOX": "PLAYER_IA_PICTO_BOX", + "EXCH_ITEM_1E": "PLAYER_IA_BOTTLE_MUSHROOM", + "EXCH_ITEM_MOON_TEAR": "PLAYER_IA_MOON_TEAR", + "EXCH_ITEM_DEED_LAND": "PLAYER_IA_DEED_LAND", + "EXCH_ITEM_ROOM_KEY": "PLAYER_IA_ROOM_KEY", + "EXCH_ITEM_LETTER_TO_KAFEI": "PLAYER_IA_LETTER_TO_KAFEI", + "EXCH_ITEM_2E": "PLAYER_IA_MAGIC_BEANS", + "EXCH_ITEM_DEED_SWAMP": "PLAYER_IA_DEED_SWAMP", + "EXCH_ITEM_DEED_MOUNTAIN": "PLAYER_IA_DEED_MOUNTAIN", + "EXCH_ITEM_DEED_OCEAN": "PLAYER_IA_DEED_OCEAN", + "EXCH_ITEM_LETTER_MAMA": "PLAYER_IA_LETTER_MAMA", "ITEM_FISHING_POLE": "ITEM_FISHING_ROD", - "PLAYER_AP_FISHING_POLE": "PLAYER_AP_FISHING_ROD", + "PLAYER_AP_FISHING_POLE": "PLAYER_IA_FISHING_ROD", # Example of custom behaviour: # "PLAYER": ("GET_PLAYER(play)", {"ignore": (-1, '"PLAYER"')}), # ignore "PLAYER" in sSoundBankNames diff --git a/tools/overlayhelpers/scheduledis.py b/tools/overlayhelpers/scheduledis.py index b441b94c7..5eb70d518 100755 --- a/tools/overlayhelpers/scheduledis.py +++ b/tools/overlayhelpers/scheduledis.py @@ -7,8 +7,8 @@ import argparse, os, struct, math from actor_symbols import resolve_symbol cmd_info = [ - ('SCHEDULE_CMD_CHECK_FLAG_S', 0x04, '>BBb', (2, )), - ('SCHEDULE_CMD_CHECK_FLAG_L', 0x05, '>BBh', (2, )), + ('SCHEDULE_CMD_CHECK_FLAG_S', 0x04, '>Hb', (1, )), + ('SCHEDULE_CMD_CHECK_FLAG_L', 0x05, '>Hh', (1, )), ('SCHEDULE_CMD_CHECK_TIME_RANGE_S', 0x06, '>BBBBb', (4, )), ('SCHEDULE_CMD_CHECK_TIME_RANGE_L', 0x07, '>BBBBh', (4, )), ('SCHEDULE_CMD_RET_VAL_L', 0x03, '>H', ( )), @@ -198,6 +198,8 @@ def disassemble_unk_script(data_file, offset): elif arg_type == "H": if (cmd == 0x0A or cmd == 0x0B) and (arg_value < len(scene_names)): arg_formatted = scene_names[arg_value] + elif cmd == 0x00 or cmd == 0x01: + arg_formatted = f"WEEKEVENTREG_{arg_value>>8:02}_{arg_value&0xFF:02X}" else: arg_formatted = f"{arg_value}" elif arg_type == "B": diff --git a/tools/permuter_settings.toml b/tools/permuter_settings.toml index 380acbfc2..691913cdc 100644 --- a/tools/permuter_settings.toml +++ b/tools/permuter_settings.toml @@ -20,6 +20,17 @@ CLOCK_TIME = "int" CURRENT_DAY = "int" CHECK_NEWF = "int" NULL = "int" +GET_PLAYER = "int" +CHECK_WEEKEVENTREG = "int" +SET_WEEKEVENTREG = "int" +CLEAR_WEEKEVENTREG = "int" +"WEEKEVENTREG_.+" = "int" +CHECK_EVENTINF = "int" +SET_EVENTINF = "int" +CLEAR_EVENTINF = "int" +CLEAR_EVENTINF_ALT = "int" +"EVENTINF_.*" = "int" +".+REG" = "int" [decompme.compilers] "tools/ido_recomp/linux/7.1/cc" = "ido7.1" diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index b875d0af4..1bbca17ce 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -268,7 +268,7 @@ asm/non_matchings/code/z_actor/Actor_IsFacingPlayer.s,Actor_IsFacingPlayer,0x800 asm/non_matchings/code/z_actor/Actor_ActorAIsFacingActorB.s,Actor_ActorAIsFacingActorB,0x800B742C,0x18 asm/non_matchings/code/z_actor/Actor_IsFacingAndNearPlayer.s,Actor_IsFacingAndNearPlayer,0x800B748C,0x20 asm/non_matchings/code/z_actor/Actor_ActorAIsFacingAndNearActorB.s,Actor_ActorAIsFacingAndNearActorB,0x800B750C,0x25 -asm/non_matchings/code/z_actor/func_800B75A0.s,func_800B75A0,0x800B75A0,0x1F +asm/non_matchings/code/z_actor/Actor_GetSlopeDirection.s,Actor_GetSlopeDirection,0x800B75A0,0x1F asm/non_matchings/code/z_actor/func_800B761C.s,func_800B761C,0x800B761C,0x17 asm/non_matchings/code/z_actor/func_800B7678.s,func_800B7678,0x800B7678,0x90 asm/non_matchings/code/z_actor/Actor_UpdateBgCheckInfo.s,Actor_UpdateBgCheckInfo,0x800B78B8,0x153 @@ -1721,7 +1721,7 @@ asm/non_matchings/code/z_player_lib/Player_SetModels.s,Player_SetModels,0x80123A asm/non_matchings/code/z_player_lib/Player_SetModelGroup.s,Player_SetModelGroup,0x80123BD4,0x21 asm/non_matchings/code/z_player_lib/func_80123C58.s,func_80123C58,0x80123C58,0xE asm/non_matchings/code/z_player_lib/Player_SetEquipmentData.s,Player_SetEquipmentData,0x80123C90,0x30 -asm/non_matchings/code/z_player_lib/func_80123D50.s,func_80123D50,0x80123D50,0x15 +asm/non_matchings/code/z_player_lib/Player_UpdateBottleHeld.s,Player_UpdateBottleHeld,0x80123D50,0x15 asm/non_matchings/code/z_player_lib/func_80123DA4.s,func_80123DA4,0x80123DA4,0x7 asm/non_matchings/code/z_player_lib/func_80123DC0.s,func_80123DC0,0x80123DC0,0x34 asm/non_matchings/code/z_player_lib/func_80123E90.s,func_80123E90,0x80123E90,0x21 @@ -2294,9 +2294,9 @@ asm/non_matchings/code/code_801420C0/func_801420F4.s,func_801420F4,0x801420F4,0x asm/non_matchings/code/code_801420C0/func_80142100.s,func_80142100,0x80142100,0xD0 asm/non_matchings/code/z_vr_box/func_80142440.s,func_80142440,0x80142440,0x342 asm/non_matchings/code/z_vr_box/func_80143148.s,func_80143148,0x80143148,0x28 -asm/non_matchings/code/z_vr_box/func_801431E8.s,func_801431E8,0x801431E8,0x4F +asm/non_matchings/code/z_vr_box/Skybox_Setup.s,Skybox_Setup,0x801431E8,0x4F asm/non_matchings/code/z_vr_box/func_80143324.s,func_80143324,0x80143324,0x70 -asm/non_matchings/code/z_vr_box/func_801434E4.s,func_801434E4,0x801434E4,0x2F +asm/non_matchings/code/z_vr_box/Skybox_Init.s,Skybox_Init,0x801434E4,0x2F asm/non_matchings/code/z_vr_box_draw/func_801435A0.s,func_801435A0,0x801435A0,0x21 asm/non_matchings/code/z_vr_box_draw/func_80143624.s,func_80143624,0x80143624,0x11 asm/non_matchings/code/z_vr_box_draw/func_80143668.s,func_80143668,0x80143668,0xE7 @@ -2866,8 +2866,8 @@ asm/non_matchings/code/sys_math3d/func_8017FD44.s,func_8017FD44,0x8017FD44,0x5B asm/non_matchings/code/sys_math_atan/Math_GetAtan2Tbl.s,Math_GetAtan2Tbl,0x8017FEB0,0xD asm/non_matchings/code/sys_math_atan/Math_Atan2S.s,Math_Atan2S,0x8017FEE4,0x7A asm/non_matchings/code/sys_math_atan/Math_Atan2F.s,Math_Atan2F,0x801800CC,0xD -asm/non_matchings/code/sys_math_atan/Math_FAtan2F.s,Math_FAtan2F,0x80180100,0xB -asm/non_matchings/code/sys_math_atan/Math_Acot2F.s,Math_Acot2F,0x8018012C,0xD +asm/non_matchings/code/sys_math_atan/Math_Atan2S_XY.s,Math_Atan2S_XY,0x80180100,0xB +asm/non_matchings/code/sys_math_atan/Math_Atan2F_XY.s,Math_Atan2F_XY,0x8018012C,0xD asm/non_matchings/code/sys_matrix/Matrix_Init.s,Matrix_Init,0x80180160,0xF asm/non_matchings/code/sys_matrix/Matrix_Push.s,Matrix_Push,0x8018019C,0xC asm/non_matchings/code/sys_matrix/Matrix_Pop.s,Matrix_Pop,0x801801CC,0x7 diff --git a/tools/weekeventregconvert.py b/tools/weekeventregconvert.py new file mode 100755 index 000000000..4e8ca1311 --- /dev/null +++ b/tools/weekeventregconvert.py @@ -0,0 +1,889 @@ +#!/usr/bin/env python3 + +import argparse +import re + +weekEventReg = { + ( 0 << 8) | 0x01: "WEEKEVENTREG_00_01", + ( 0 << 8) | 0x02: "WEEKEVENTREG_00_02", + ( 0 << 8) | 0x04: "WEEKEVENTREG_00_04", + ( 0 << 8) | 0x08: "WEEKEVENTREG_00_08", + ( 0 << 8) | 0x10: "WEEKEVENTREG_00_10", + ( 0 << 8) | 0x20: "WEEKEVENTREG_00_20", + ( 0 << 8) | 0x40: "WEEKEVENTREG_00_40", + ( 0 << 8) | 0x80: "WEEKEVENTREG_00_80", + ( 1 << 8) | 0x01: "WEEKEVENTREG_01_01", + ( 1 << 8) | 0x02: "WEEKEVENTREG_01_02", + ( 1 << 8) | 0x04: "WEEKEVENTREG_01_04", + ( 1 << 8) | 0x08: "WEEKEVENTREG_01_08", + ( 1 << 8) | 0x10: "WEEKEVENTREG_01_10", + ( 1 << 8) | 0x20: "WEEKEVENTREG_01_20", + ( 1 << 8) | 0x40: "WEEKEVENTREG_01_40", + ( 1 << 8) | 0x80: "WEEKEVENTREG_01_80", + ( 2 << 8) | 0x01: "WEEKEVENTREG_02_01", + ( 2 << 8) | 0x02: "WEEKEVENTREG_02_02", + ( 2 << 8) | 0x04: "WEEKEVENTREG_02_04", + ( 2 << 8) | 0x08: "WEEKEVENTREG_02_08", + ( 2 << 8) | 0x10: "WEEKEVENTREG_02_10", + ( 2 << 8) | 0x20: "WEEKEVENTREG_02_20", + ( 2 << 8) | 0x40: "WEEKEVENTREG_02_40", + ( 2 << 8) | 0x80: "WEEKEVENTREG_02_80", + ( 3 << 8) | 0x01: "WEEKEVENTREG_03_01", + ( 3 << 8) | 0x02: "WEEKEVENTREG_03_02", + ( 3 << 8) | 0x04: "WEEKEVENTREG_03_04", + ( 3 << 8) | 0x08: "WEEKEVENTREG_03_08", + ( 3 << 8) | 0x10: "WEEKEVENTREG_03_10", + ( 3 << 8) | 0x20: "WEEKEVENTREG_03_20", + ( 3 << 8) | 0x40: "WEEKEVENTREG_03_40", + ( 3 << 8) | 0x80: "WEEKEVENTREG_03_80", + ( 4 << 8) | 0x01: "WEEKEVENTREG_04_01", + ( 4 << 8) | 0x02: "WEEKEVENTREG_04_02", + ( 4 << 8) | 0x04: "WEEKEVENTREG_04_04", + ( 4 << 8) | 0x08: "WEEKEVENTREG_04_08", + ( 4 << 8) | 0x10: "WEEKEVENTREG_04_10", + ( 4 << 8) | 0x20: "WEEKEVENTREG_04_20", + ( 4 << 8) | 0x40: "WEEKEVENTREG_04_40", + ( 4 << 8) | 0x80: "WEEKEVENTREG_04_80", + ( 5 << 8) | 0x01: "WEEKEVENTREG_05_01", + ( 5 << 8) | 0x02: "WEEKEVENTREG_05_02", + ( 5 << 8) | 0x04: "WEEKEVENTREG_05_04", + ( 5 << 8) | 0x08: "WEEKEVENTREG_05_08", + ( 5 << 8) | 0x10: "WEEKEVENTREG_05_10", + ( 5 << 8) | 0x20: "WEEKEVENTREG_05_20", + ( 5 << 8) | 0x40: "WEEKEVENTREG_05_40", + ( 5 << 8) | 0x80: "WEEKEVENTREG_05_80", + ( 6 << 8) | 0x01: "WEEKEVENTREG_06_01", + ( 6 << 8) | 0x02: "WEEKEVENTREG_06_02", + ( 6 << 8) | 0x04: "WEEKEVENTREG_06_04", + ( 6 << 8) | 0x08: "WEEKEVENTREG_06_08", + ( 6 << 8) | 0x10: "WEEKEVENTREG_06_10", + ( 6 << 8) | 0x20: "WEEKEVENTREG_06_20", + ( 6 << 8) | 0x40: "WEEKEVENTREG_06_40", + ( 6 << 8) | 0x80: "WEEKEVENTREG_06_80", + ( 7 << 8) | 0x01: "WEEKEVENTREG_07_01", + ( 7 << 8) | 0x02: "WEEKEVENTREG_07_02", + ( 7 << 8) | 0x04: "WEEKEVENTREG_07_04", + ( 7 << 8) | 0x08: "WEEKEVENTREG_07_08", + ( 7 << 8) | 0x10: "WEEKEVENTREG_07_10", + ( 7 << 8) | 0x20: "WEEKEVENTREG_07_20", + ( 7 << 8) | 0x40: "WEEKEVENTREG_07_40", + ( 7 << 8) | 0x80: "WEEKEVENTREG_07_80", + ( 8 << 8) | 0x01: "WEEKEVENTREG_08_01", + ( 8 << 8) | 0x02: "WEEKEVENTREG_08_02", + ( 8 << 8) | 0x04: "WEEKEVENTREG_08_04", + ( 8 << 8) | 0x08: "WEEKEVENTREG_08_08", + ( 8 << 8) | 0x10: "WEEKEVENTREG_08_10", + ( 8 << 8) | 0x20: "WEEKEVENTREG_08_20", + ( 8 << 8) | 0x40: "WEEKEVENTREG_08_40", + ( 8 << 8) | 0x80: "WEEKEVENTREG_08_80", + ( 9 << 8) | 0x01: "WEEKEVENTREG_09_01", + ( 9 << 8) | 0x02: "WEEKEVENTREG_09_02", + ( 9 << 8) | 0x04: "WEEKEVENTREG_09_04", + ( 9 << 8) | 0x08: "WEEKEVENTREG_09_08", + ( 9 << 8) | 0x10: "WEEKEVENTREG_09_10", + ( 9 << 8) | 0x20: "WEEKEVENTREG_09_20", + ( 9 << 8) | 0x40: "WEEKEVENTREG_09_40", + ( 9 << 8) | 0x80: "WEEKEVENTREG_09_80", + (10 << 8) | 0x01: "WEEKEVENTREG_10_01", + (10 << 8) | 0x02: "WEEKEVENTREG_10_02", + (10 << 8) | 0x04: "WEEKEVENTREG_10_04", + (10 << 8) | 0x08: "WEEKEVENTREG_10_08", + (10 << 8) | 0x10: "WEEKEVENTREG_10_10", + (10 << 8) | 0x20: "WEEKEVENTREG_10_20", + (10 << 8) | 0x40: "WEEKEVENTREG_10_40", + (10 << 8) | 0x80: "WEEKEVENTREG_10_80", + (11 << 8) | 0x01: "WEEKEVENTREG_11_01", + (11 << 8) | 0x02: "WEEKEVENTREG_11_02", + (11 << 8) | 0x04: "WEEKEVENTREG_11_04", + (11 << 8) | 0x08: "WEEKEVENTREG_11_08", + (11 << 8) | 0x10: "WEEKEVENTREG_11_10", + (11 << 8) | 0x20: "WEEKEVENTREG_11_20", + (11 << 8) | 0x40: "WEEKEVENTREG_11_40", + (11 << 8) | 0x80: "WEEKEVENTREG_11_80", + (12 << 8) | 0x01: "WEEKEVENTREG_12_01", + (12 << 8) | 0x02: "WEEKEVENTREG_12_02", + (12 << 8) | 0x04: "WEEKEVENTREG_12_04", + (12 << 8) | 0x08: "WEEKEVENTREG_12_08", + (12 << 8) | 0x10: "WEEKEVENTREG_12_10", + (12 << 8) | 0x20: "WEEKEVENTREG_12_20", + (12 << 8) | 0x40: "WEEKEVENTREG_12_40", + (12 << 8) | 0x80: "WEEKEVENTREG_12_80", + (13 << 8) | 0x01: "WEEKEVENTREG_13_01", + (13 << 8) | 0x02: "WEEKEVENTREG_13_02", + (13 << 8) | 0x04: "WEEKEVENTREG_13_04", + (13 << 8) | 0x08: "WEEKEVENTREG_13_08", + (13 << 8) | 0x10: "WEEKEVENTREG_13_10", + (13 << 8) | 0x20: "WEEKEVENTREG_13_20", + (13 << 8) | 0x40: "WEEKEVENTREG_13_40", + (13 << 8) | 0x80: "WEEKEVENTREG_13_80", + (14 << 8) | 0x01: "WEEKEVENTREG_14_01", + (14 << 8) | 0x02: "WEEKEVENTREG_14_02", + (14 << 8) | 0x04: "WEEKEVENTREG_14_04", + (14 << 8) | 0x08: "WEEKEVENTREG_14_08", + (14 << 8) | 0x10: "WEEKEVENTREG_14_10", + (14 << 8) | 0x20: "WEEKEVENTREG_14_20", + (14 << 8) | 0x40: "WEEKEVENTREG_14_40", + (14 << 8) | 0x80: "WEEKEVENTREG_14_80", + (15 << 8) | 0x01: "WEEKEVENTREG_15_01", + (15 << 8) | 0x02: "WEEKEVENTREG_15_02", + (15 << 8) | 0x04: "WEEKEVENTREG_15_04", + (15 << 8) | 0x08: "WEEKEVENTREG_15_08", + (15 << 8) | 0x10: "WEEKEVENTREG_15_10", + (15 << 8) | 0x20: "WEEKEVENTREG_15_20", + (15 << 8) | 0x40: "WEEKEVENTREG_15_40", + (15 << 8) | 0x80: "WEEKEVENTREG_15_80", + (16 << 8) | 0x01: "WEEKEVENTREG_16_01", + (16 << 8) | 0x02: "WEEKEVENTREG_16_02", + (16 << 8) | 0x04: "WEEKEVENTREG_16_04", + (16 << 8) | 0x08: "WEEKEVENTREG_16_08", + (16 << 8) | 0x10: "WEEKEVENTREG_16_10", + (16 << 8) | 0x20: "WEEKEVENTREG_16_20", + (16 << 8) | 0x40: "WEEKEVENTREG_16_40", + (16 << 8) | 0x80: "WEEKEVENTREG_16_80", + (17 << 8) | 0x01: "WEEKEVENTREG_17_01", + (17 << 8) | 0x02: "WEEKEVENTREG_17_02", + (17 << 8) | 0x04: "WEEKEVENTREG_17_04", + (17 << 8) | 0x08: "WEEKEVENTREG_17_08", + (17 << 8) | 0x10: "WEEKEVENTREG_17_10", + (17 << 8) | 0x20: "WEEKEVENTREG_17_20", + (17 << 8) | 0x40: "WEEKEVENTREG_17_40", + (17 << 8) | 0x80: "WEEKEVENTREG_17_80", + (18 << 8) | 0x01: "WEEKEVENTREG_18_01", + (18 << 8) | 0x02: "WEEKEVENTREG_18_02", + (18 << 8) | 0x04: "WEEKEVENTREG_18_04", + (18 << 8) | 0x08: "WEEKEVENTREG_18_08", + (18 << 8) | 0x10: "WEEKEVENTREG_18_10", + (18 << 8) | 0x20: "WEEKEVENTREG_18_20", + (18 << 8) | 0x40: "WEEKEVENTREG_18_40", + (18 << 8) | 0x80: "WEEKEVENTREG_18_80", + (19 << 8) | 0x01: "WEEKEVENTREG_19_01", + (19 << 8) | 0x02: "WEEKEVENTREG_19_02", + (19 << 8) | 0x04: "WEEKEVENTREG_19_04", + (19 << 8) | 0x08: "WEEKEVENTREG_19_08", + (19 << 8) | 0x10: "WEEKEVENTREG_19_10", + (19 << 8) | 0x20: "WEEKEVENTREG_19_20", + (19 << 8) | 0x40: "WEEKEVENTREG_19_40", + (19 << 8) | 0x80: "WEEKEVENTREG_19_80", + (20 << 8) | 0x01: "WEEKEVENTREG_20_01", + (20 << 8) | 0x02: "WEEKEVENTREG_20_02", + (20 << 8) | 0x04: "WEEKEVENTREG_20_04", + (20 << 8) | 0x08: "WEEKEVENTREG_20_08", + (20 << 8) | 0x10: "WEEKEVENTREG_20_10", + (20 << 8) | 0x20: "WEEKEVENTREG_20_20", + (20 << 8) | 0x40: "WEEKEVENTREG_20_40", + (20 << 8) | 0x80: "WEEKEVENTREG_20_80", + (21 << 8) | 0x01: "WEEKEVENTREG_21_01", + (21 << 8) | 0x02: "WEEKEVENTREG_21_02", + (21 << 8) | 0x04: "WEEKEVENTREG_21_04", + (21 << 8) | 0x08: "WEEKEVENTREG_21_08", + (21 << 8) | 0x10: "WEEKEVENTREG_21_10", + (21 << 8) | 0x20: "WEEKEVENTREG_21_20", + (21 << 8) | 0x40: "WEEKEVENTREG_21_40", + (21 << 8) | 0x80: "WEEKEVENTREG_21_80", + (22 << 8) | 0x01: "WEEKEVENTREG_22_01", + (22 << 8) | 0x02: "WEEKEVENTREG_22_02", + (22 << 8) | 0x04: "WEEKEVENTREG_22_04", + (22 << 8) | 0x08: "WEEKEVENTREG_22_08", + (22 << 8) | 0x10: "WEEKEVENTREG_22_10", + (22 << 8) | 0x20: "WEEKEVENTREG_22_20", + (22 << 8) | 0x40: "WEEKEVENTREG_22_40", + (22 << 8) | 0x80: "WEEKEVENTREG_22_80", + (23 << 8) | 0x01: "WEEKEVENTREG_23_01", + (23 << 8) | 0x02: "WEEKEVENTREG_23_02", + (23 << 8) | 0x04: "WEEKEVENTREG_23_04", + (23 << 8) | 0x08: "WEEKEVENTREG_23_08", + (23 << 8) | 0x10: "WEEKEVENTREG_23_10", + (23 << 8) | 0x20: "WEEKEVENTREG_23_20", + (23 << 8) | 0x40: "WEEKEVENTREG_23_40", + (23 << 8) | 0x80: "WEEKEVENTREG_23_80", + (24 << 8) | 0x01: "WEEKEVENTREG_24_01", + (24 << 8) | 0x02: "WEEKEVENTREG_24_02", + (24 << 8) | 0x04: "WEEKEVENTREG_24_04", + (24 << 8) | 0x08: "WEEKEVENTREG_24_08", + (24 << 8) | 0x10: "WEEKEVENTREG_24_10", + (24 << 8) | 0x20: "WEEKEVENTREG_24_20", + (24 << 8) | 0x40: "WEEKEVENTREG_24_40", + (24 << 8) | 0x80: "WEEKEVENTREG_24_80", + (25 << 8) | 0x01: "WEEKEVENTREG_25_01", + (25 << 8) | 0x02: "WEEKEVENTREG_25_02", + (25 << 8) | 0x04: "WEEKEVENTREG_25_04", + (25 << 8) | 0x08: "WEEKEVENTREG_25_08", + (25 << 8) | 0x10: "WEEKEVENTREG_25_10", + (25 << 8) | 0x20: "WEEKEVENTREG_25_20", + (25 << 8) | 0x40: "WEEKEVENTREG_25_40", + (25 << 8) | 0x80: "WEEKEVENTREG_25_80", + (26 << 8) | 0x01: "WEEKEVENTREG_26_01", + (26 << 8) | 0x02: "WEEKEVENTREG_26_02", + (26 << 8) | 0x04: "WEEKEVENTREG_26_04", + (26 << 8) | 0x08: "WEEKEVENTREG_26_08", + (26 << 8) | 0x10: "WEEKEVENTREG_26_10", + (26 << 8) | 0x20: "WEEKEVENTREG_26_20", + (26 << 8) | 0x40: "WEEKEVENTREG_26_40", + (26 << 8) | 0x80: "WEEKEVENTREG_26_80", + (27 << 8) | 0x01: "WEEKEVENTREG_27_01", + (27 << 8) | 0x02: "WEEKEVENTREG_27_02", + (27 << 8) | 0x04: "WEEKEVENTREG_27_04", + (27 << 8) | 0x08: "WEEKEVENTREG_27_08", + (27 << 8) | 0x10: "WEEKEVENTREG_27_10", + (27 << 8) | 0x20: "WEEKEVENTREG_27_20", + (27 << 8) | 0x40: "WEEKEVENTREG_27_40", + (27 << 8) | 0x80: "WEEKEVENTREG_27_80", + (28 << 8) | 0x01: "WEEKEVENTREG_28_01", + (28 << 8) | 0x02: "WEEKEVENTREG_28_02", + (28 << 8) | 0x04: "WEEKEVENTREG_28_04", + (28 << 8) | 0x08: "WEEKEVENTREG_28_08", + (28 << 8) | 0x10: "WEEKEVENTREG_28_10", + (28 << 8) | 0x20: "WEEKEVENTREG_28_20", + (28 << 8) | 0x40: "WEEKEVENTREG_28_40", + (28 << 8) | 0x80: "WEEKEVENTREG_28_80", + (29 << 8) | 0x01: "WEEKEVENTREG_29_01", + (29 << 8) | 0x02: "WEEKEVENTREG_29_02", + (29 << 8) | 0x04: "WEEKEVENTREG_29_04", + (29 << 8) | 0x08: "WEEKEVENTREG_29_08", + (29 << 8) | 0x10: "WEEKEVENTREG_29_10", + (29 << 8) | 0x20: "WEEKEVENTREG_29_20", + (29 << 8) | 0x40: "WEEKEVENTREG_29_40", + (29 << 8) | 0x80: "WEEKEVENTREG_29_80", + (30 << 8) | 0x01: "WEEKEVENTREG_30_01", + (30 << 8) | 0x02: "WEEKEVENTREG_30_02", + (30 << 8) | 0x04: "WEEKEVENTREG_30_04", + (30 << 8) | 0x08: "WEEKEVENTREG_30_08", + (30 << 8) | 0x10: "WEEKEVENTREG_30_10", + (30 << 8) | 0x20: "WEEKEVENTREG_30_20", + (30 << 8) | 0x40: "WEEKEVENTREG_30_40", + (30 << 8) | 0x80: "WEEKEVENTREG_30_80", + (31 << 8) | 0x01: "WEEKEVENTREG_31_01", + (31 << 8) | 0x02: "WEEKEVENTREG_31_02", + (31 << 8) | 0x04: "WEEKEVENTREG_31_04", + (31 << 8) | 0x08: "WEEKEVENTREG_31_08", + (31 << 8) | 0x10: "WEEKEVENTREG_31_10", + (31 << 8) | 0x20: "WEEKEVENTREG_31_20", + (31 << 8) | 0x40: "WEEKEVENTREG_31_40", + (31 << 8) | 0x80: "WEEKEVENTREG_31_80", + (32 << 8) | 0x01: "WEEKEVENTREG_32_01", + (32 << 8) | 0x02: "WEEKEVENTREG_32_02", + (32 << 8) | 0x04: "WEEKEVENTREG_32_04", + (32 << 8) | 0x08: "WEEKEVENTREG_32_08", + (32 << 8) | 0x10: "WEEKEVENTREG_32_10", + (32 << 8) | 0x20: "WEEKEVENTREG_32_20", + (32 << 8) | 0x40: "WEEKEVENTREG_32_40", + (32 << 8) | 0x80: "WEEKEVENTREG_32_80", + (33 << 8) | 0x01: "WEEKEVENTREG_33_01", + (33 << 8) | 0x02: "WEEKEVENTREG_33_02", + (33 << 8) | 0x04: "WEEKEVENTREG_33_04", + (33 << 8) | 0x08: "WEEKEVENTREG_33_08", + (33 << 8) | 0x10: "WEEKEVENTREG_33_10", + (33 << 8) | 0x20: "WEEKEVENTREG_33_20", + (33 << 8) | 0x40: "WEEKEVENTREG_33_40", + (33 << 8) | 0x80: "WEEKEVENTREG_33_80", + (34 << 8) | 0x01: "WEEKEVENTREG_34_01", + (34 << 8) | 0x02: "WEEKEVENTREG_34_02", + (34 << 8) | 0x04: "WEEKEVENTREG_34_04", + (34 << 8) | 0x08: "WEEKEVENTREG_34_08", + (34 << 8) | 0x10: "WEEKEVENTREG_34_10", + (34 << 8) | 0x20: "WEEKEVENTREG_34_20", + (34 << 8) | 0x40: "WEEKEVENTREG_34_40", + (34 << 8) | 0x80: "WEEKEVENTREG_34_80", + (35 << 8) | 0x01: "WEEKEVENTREG_35_01", + (35 << 8) | 0x02: "WEEKEVENTREG_35_02", + (35 << 8) | 0x04: "WEEKEVENTREG_35_04", + (35 << 8) | 0x08: "WEEKEVENTREG_35_08", + (35 << 8) | 0x10: "WEEKEVENTREG_35_10", + (35 << 8) | 0x20: "WEEKEVENTREG_35_20", + (35 << 8) | 0x40: "WEEKEVENTREG_35_40", + (35 << 8) | 0x80: "WEEKEVENTREG_35_80", + (36 << 8) | 0x01: "WEEKEVENTREG_36_01", + (36 << 8) | 0x02: "WEEKEVENTREG_36_02", + (36 << 8) | 0x04: "WEEKEVENTREG_36_04", + (36 << 8) | 0x08: "WEEKEVENTREG_36_08", + (36 << 8) | 0x10: "WEEKEVENTREG_36_10", + (36 << 8) | 0x20: "WEEKEVENTREG_36_20", + (36 << 8) | 0x40: "WEEKEVENTREG_36_40", + (36 << 8) | 0x80: "WEEKEVENTREG_36_80", + (37 << 8) | 0x01: "WEEKEVENTREG_37_01", + (37 << 8) | 0x02: "WEEKEVENTREG_37_02", + (37 << 8) | 0x04: "WEEKEVENTREG_37_04", + (37 << 8) | 0x08: "WEEKEVENTREG_37_08", + (37 << 8) | 0x10: "WEEKEVENTREG_37_10", + (37 << 8) | 0x20: "WEEKEVENTREG_37_20", + (37 << 8) | 0x40: "WEEKEVENTREG_37_40", + (37 << 8) | 0x80: "WEEKEVENTREG_37_80", + (38 << 8) | 0x01: "WEEKEVENTREG_38_01", + (38 << 8) | 0x02: "WEEKEVENTREG_38_02", + (38 << 8) | 0x04: "WEEKEVENTREG_38_04", + (38 << 8) | 0x08: "WEEKEVENTREG_38_08", + (38 << 8) | 0x10: "WEEKEVENTREG_38_10", + (38 << 8) | 0x20: "WEEKEVENTREG_38_20", + (38 << 8) | 0x40: "WEEKEVENTREG_38_40", + (38 << 8) | 0x80: "WEEKEVENTREG_38_80", + (39 << 8) | 0x01: "WEEKEVENTREG_39_01", + (39 << 8) | 0x02: "WEEKEVENTREG_39_02", + (39 << 8) | 0x04: "WEEKEVENTREG_39_04", + (39 << 8) | 0x08: "WEEKEVENTREG_39_08", + (39 << 8) | 0x10: "WEEKEVENTREG_39_10", + (39 << 8) | 0x20: "WEEKEVENTREG_39_20", + (39 << 8) | 0x40: "WEEKEVENTREG_39_40", + (39 << 8) | 0x80: "WEEKEVENTREG_39_80", + (40 << 8) | 0x01: "WEEKEVENTREG_40_01", + (40 << 8) | 0x02: "WEEKEVENTREG_40_02", + (40 << 8) | 0x04: "WEEKEVENTREG_40_04", + (40 << 8) | 0x08: "WEEKEVENTREG_40_08", + (40 << 8) | 0x10: "WEEKEVENTREG_40_10", + (40 << 8) | 0x20: "WEEKEVENTREG_40_20", + (40 << 8) | 0x40: "WEEKEVENTREG_40_40", + (40 << 8) | 0x80: "WEEKEVENTREG_40_80", + (41 << 8) | 0x01: "WEEKEVENTREG_41_01", + (41 << 8) | 0x02: "WEEKEVENTREG_41_02", + (41 << 8) | 0x04: "WEEKEVENTREG_41_04", + (41 << 8) | 0x08: "WEEKEVENTREG_41_08", + (41 << 8) | 0x10: "WEEKEVENTREG_41_10", + (41 << 8) | 0x20: "WEEKEVENTREG_41_20", + (41 << 8) | 0x40: "WEEKEVENTREG_41_40", + (41 << 8) | 0x80: "WEEKEVENTREG_41_80", + (42 << 8) | 0x01: "WEEKEVENTREG_42_01", + (42 << 8) | 0x02: "WEEKEVENTREG_42_02", + (42 << 8) | 0x04: "WEEKEVENTREG_42_04", + (42 << 8) | 0x08: "WEEKEVENTREG_42_08", + (42 << 8) | 0x10: "WEEKEVENTREG_42_10", + (42 << 8) | 0x20: "WEEKEVENTREG_42_20", + (42 << 8) | 0x40: "WEEKEVENTREG_42_40", + (42 << 8) | 0x80: "WEEKEVENTREG_42_80", + (43 << 8) | 0x01: "WEEKEVENTREG_43_01", + (43 << 8) | 0x02: "WEEKEVENTREG_43_02", + (43 << 8) | 0x04: "WEEKEVENTREG_43_04", + (43 << 8) | 0x08: "WEEKEVENTREG_43_08", + (43 << 8) | 0x10: "WEEKEVENTREG_43_10", + (43 << 8) | 0x20: "WEEKEVENTREG_43_20", + (43 << 8) | 0x40: "WEEKEVENTREG_43_40", + (43 << 8) | 0x80: "WEEKEVENTREG_43_80", + (44 << 8) | 0x01: "WEEKEVENTREG_44_01", + (44 << 8) | 0x02: "WEEKEVENTREG_44_02", + (44 << 8) | 0x04: "WEEKEVENTREG_44_04", + (44 << 8) | 0x08: "WEEKEVENTREG_44_08", + (44 << 8) | 0x10: "WEEKEVENTREG_44_10", + (44 << 8) | 0x20: "WEEKEVENTREG_44_20", + (44 << 8) | 0x40: "WEEKEVENTREG_44_40", + (44 << 8) | 0x80: "WEEKEVENTREG_44_80", + (45 << 8) | 0x01: "WEEKEVENTREG_45_01", + (45 << 8) | 0x02: "WEEKEVENTREG_45_02", + (45 << 8) | 0x04: "WEEKEVENTREG_45_04", + (45 << 8) | 0x08: "WEEKEVENTREG_45_08", + (45 << 8) | 0x10: "WEEKEVENTREG_45_10", + (45 << 8) | 0x20: "WEEKEVENTREG_45_20", + (45 << 8) | 0x40: "WEEKEVENTREG_45_40", + (45 << 8) | 0x80: "WEEKEVENTREG_45_80", + (46 << 8) | 0x01: "WEEKEVENTREG_46_01", + (46 << 8) | 0x02: "WEEKEVENTREG_46_02", + (46 << 8) | 0x04: "WEEKEVENTREG_46_04", + (46 << 8) | 0x08: "WEEKEVENTREG_46_08", + (46 << 8) | 0x10: "WEEKEVENTREG_46_10", + (46 << 8) | 0x20: "WEEKEVENTREG_46_20", + (46 << 8) | 0x40: "WEEKEVENTREG_46_40", + (46 << 8) | 0x80: "WEEKEVENTREG_46_80", + (47 << 8) | 0x01: "WEEKEVENTREG_47_01", + (47 << 8) | 0x02: "WEEKEVENTREG_47_02", + (47 << 8) | 0x04: "WEEKEVENTREG_47_04", + (47 << 8) | 0x08: "WEEKEVENTREG_47_08", + (47 << 8) | 0x10: "WEEKEVENTREG_47_10", + (47 << 8) | 0x20: "WEEKEVENTREG_47_20", + (47 << 8) | 0x40: "WEEKEVENTREG_47_40", + (47 << 8) | 0x80: "WEEKEVENTREG_47_80", + (48 << 8) | 0x01: "WEEKEVENTREG_48_01", + (48 << 8) | 0x02: "WEEKEVENTREG_48_02", + (48 << 8) | 0x04: "WEEKEVENTREG_48_04", + (48 << 8) | 0x08: "WEEKEVENTREG_48_08", + (48 << 8) | 0x10: "WEEKEVENTREG_48_10", + (48 << 8) | 0x20: "WEEKEVENTREG_48_20", + (48 << 8) | 0x40: "WEEKEVENTREG_48_40", + (48 << 8) | 0x80: "WEEKEVENTREG_48_80", + (49 << 8) | 0x01: "WEEKEVENTREG_49_01", + (49 << 8) | 0x02: "WEEKEVENTREG_49_02", + (49 << 8) | 0x04: "WEEKEVENTREG_49_04", + (49 << 8) | 0x08: "WEEKEVENTREG_49_08", + (49 << 8) | 0x10: "WEEKEVENTREG_49_10", + (49 << 8) | 0x20: "WEEKEVENTREG_49_20", + (49 << 8) | 0x40: "WEEKEVENTREG_49_40", + (49 << 8) | 0x80: "WEEKEVENTREG_49_80", + (50 << 8) | 0x01: "WEEKEVENTREG_50_01", + (50 << 8) | 0x02: "WEEKEVENTREG_50_02", + (50 << 8) | 0x04: "WEEKEVENTREG_50_04", + (50 << 8) | 0x08: "WEEKEVENTREG_50_08", + (50 << 8) | 0x10: "WEEKEVENTREG_50_10", + (50 << 8) | 0x20: "WEEKEVENTREG_50_20", + (50 << 8) | 0x40: "WEEKEVENTREG_50_40", + (50 << 8) | 0x80: "WEEKEVENTREG_50_80", + (51 << 8) | 0x01: "WEEKEVENTREG_51_01", + (51 << 8) | 0x02: "WEEKEVENTREG_51_02", + (51 << 8) | 0x04: "WEEKEVENTREG_51_04", + (51 << 8) | 0x08: "WEEKEVENTREG_51_08", + (51 << 8) | 0x10: "WEEKEVENTREG_51_10", + (51 << 8) | 0x20: "WEEKEVENTREG_51_20", + (51 << 8) | 0x40: "WEEKEVENTREG_51_40", + (51 << 8) | 0x80: "WEEKEVENTREG_51_80", + (52 << 8) | 0x01: "WEEKEVENTREG_52_01", + (52 << 8) | 0x02: "WEEKEVENTREG_52_02", + (52 << 8) | 0x04: "WEEKEVENTREG_52_04", + (52 << 8) | 0x08: "WEEKEVENTREG_52_08", + (52 << 8) | 0x10: "WEEKEVENTREG_52_10", + (52 << 8) | 0x20: "WEEKEVENTREG_52_20", + (52 << 8) | 0x40: "WEEKEVENTREG_52_40", + (52 << 8) | 0x80: "WEEKEVENTREG_52_80", + (53 << 8) | 0x01: "WEEKEVENTREG_53_01", + (53 << 8) | 0x02: "WEEKEVENTREG_53_02", + (53 << 8) | 0x04: "WEEKEVENTREG_53_04", + (53 << 8) | 0x08: "WEEKEVENTREG_53_08", + (53 << 8) | 0x10: "WEEKEVENTREG_53_10", + (53 << 8) | 0x20: "WEEKEVENTREG_53_20", + (53 << 8) | 0x40: "WEEKEVENTREG_53_40", + (53 << 8) | 0x80: "WEEKEVENTREG_53_80", + (54 << 8) | 0x01: "WEEKEVENTREG_54_01", + (54 << 8) | 0x02: "WEEKEVENTREG_54_02", + (54 << 8) | 0x04: "WEEKEVENTREG_54_04", + (54 << 8) | 0x08: "WEEKEVENTREG_54_08", + (54 << 8) | 0x10: "WEEKEVENTREG_54_10", + (54 << 8) | 0x20: "WEEKEVENTREG_54_20", + (54 << 8) | 0x40: "WEEKEVENTREG_54_40", + (54 << 8) | 0x80: "WEEKEVENTREG_54_80", + (55 << 8) | 0x01: "WEEKEVENTREG_55_01", + (55 << 8) | 0x02: "WEEKEVENTREG_55_02", + (55 << 8) | 0x04: "WEEKEVENTREG_55_04", + (55 << 8) | 0x08: "WEEKEVENTREG_55_08", + (55 << 8) | 0x10: "WEEKEVENTREG_55_10", + (55 << 8) | 0x20: "WEEKEVENTREG_55_20", + (55 << 8) | 0x40: "WEEKEVENTREG_55_40", + (55 << 8) | 0x80: "WEEKEVENTREG_55_80", + (56 << 8) | 0x01: "WEEKEVENTREG_56_01", + (56 << 8) | 0x02: "WEEKEVENTREG_56_02", + (56 << 8) | 0x04: "WEEKEVENTREG_56_04", + (56 << 8) | 0x08: "WEEKEVENTREG_56_08", + (56 << 8) | 0x10: "WEEKEVENTREG_56_10", + (56 << 8) | 0x20: "WEEKEVENTREG_56_20", + (56 << 8) | 0x40: "WEEKEVENTREG_56_40", + (56 << 8) | 0x80: "WEEKEVENTREG_56_80", + (57 << 8) | 0x01: "WEEKEVENTREG_57_01", + (57 << 8) | 0x02: "WEEKEVENTREG_57_02", + (57 << 8) | 0x04: "WEEKEVENTREG_57_04", + (57 << 8) | 0x08: "WEEKEVENTREG_57_08", + (57 << 8) | 0x10: "WEEKEVENTREG_57_10", + (57 << 8) | 0x20: "WEEKEVENTREG_57_20", + (57 << 8) | 0x40: "WEEKEVENTREG_57_40", + (57 << 8) | 0x80: "WEEKEVENTREG_57_80", + (58 << 8) | 0x01: "WEEKEVENTREG_58_01", + (58 << 8) | 0x02: "WEEKEVENTREG_58_02", + (58 << 8) | 0x04: "WEEKEVENTREG_58_04", + (58 << 8) | 0x08: "WEEKEVENTREG_58_08", + (58 << 8) | 0x10: "WEEKEVENTREG_58_10", + (58 << 8) | 0x20: "WEEKEVENTREG_58_20", + (58 << 8) | 0x40: "WEEKEVENTREG_58_40", + (58 << 8) | 0x80: "WEEKEVENTREG_58_80", + (59 << 8) | 0x01: "WEEKEVENTREG_59_01", + (59 << 8) | 0x02: "WEEKEVENTREG_59_02", + (59 << 8) | 0x08: "WEEKEVENTREG_59_08", + (59 << 8) | 0x04: "WEEKEVENTREG_59_04", + (59 << 8) | 0x10: "WEEKEVENTREG_59_10", + (59 << 8) | 0x20: "WEEKEVENTREG_59_20", + (59 << 8) | 0x40: "WEEKEVENTREG_59_40", + (59 << 8) | 0x80: "WEEKEVENTREG_59_80", + (60 << 8) | 0x01: "WEEKEVENTREG_60_01", + (60 << 8) | 0x02: "WEEKEVENTREG_60_02", + (60 << 8) | 0x04: "WEEKEVENTREG_60_04", + (60 << 8) | 0x08: "WEEKEVENTREG_60_08", + (60 << 8) | 0x10: "WEEKEVENTREG_60_10", + (60 << 8) | 0x20: "WEEKEVENTREG_60_20", + (60 << 8) | 0x40: "WEEKEVENTREG_60_40", + (60 << 8) | 0x80: "WEEKEVENTREG_60_80", + (61 << 8) | 0x01: "WEEKEVENTREG_61_01", + (61 << 8) | 0x02: "WEEKEVENTREG_61_02", + (61 << 8) | 0x04: "WEEKEVENTREG_61_04", + (61 << 8) | 0x08: "WEEKEVENTREG_61_08", + (61 << 8) | 0x10: "WEEKEVENTREG_61_10", + (61 << 8) | 0x20: "WEEKEVENTREG_61_20", + (61 << 8) | 0x40: "WEEKEVENTREG_61_40", + (61 << 8) | 0x80: "WEEKEVENTREG_61_80", + (62 << 8) | 0x01: "WEEKEVENTREG_62_01", + (62 << 8) | 0x02: "WEEKEVENTREG_62_02", + (62 << 8) | 0x04: "WEEKEVENTREG_62_04", + (62 << 8) | 0x08: "WEEKEVENTREG_62_08", + (62 << 8) | 0x10: "WEEKEVENTREG_62_10", + (62 << 8) | 0x20: "WEEKEVENTREG_62_20", + (62 << 8) | 0x40: "WEEKEVENTREG_62_40", + (62 << 8) | 0x80: "WEEKEVENTREG_62_80", + (63 << 8) | 0x01: "WEEKEVENTREG_63_01", + (63 << 8) | 0x02: "WEEKEVENTREG_63_02", + (63 << 8) | 0x04: "WEEKEVENTREG_63_04", + (63 << 8) | 0x08: "WEEKEVENTREG_63_08", + (63 << 8) | 0x10: "WEEKEVENTREG_63_10", + (63 << 8) | 0x20: "WEEKEVENTREG_63_20", + (63 << 8) | 0x40: "WEEKEVENTREG_63_40", + (63 << 8) | 0x80: "WEEKEVENTREG_63_80", + (64 << 8) | 0x01: "WEEKEVENTREG_64_01", + (64 << 8) | 0x02: "WEEKEVENTREG_64_02", + (64 << 8) | 0x04: "WEEKEVENTREG_64_04", + (64 << 8) | 0x08: "WEEKEVENTREG_64_08", + (64 << 8) | 0x10: "WEEKEVENTREG_64_10", + (64 << 8) | 0x20: "WEEKEVENTREG_64_20", + (64 << 8) | 0x40: "WEEKEVENTREG_64_40", + (64 << 8) | 0x80: "WEEKEVENTREG_64_80", + (65 << 8) | 0x01: "WEEKEVENTREG_65_01", + (65 << 8) | 0x02: "WEEKEVENTREG_65_02", + (65 << 8) | 0x04: "WEEKEVENTREG_65_04", + (65 << 8) | 0x08: "WEEKEVENTREG_65_08", + (65 << 8) | 0x10: "WEEKEVENTREG_65_10", + (65 << 8) | 0x20: "WEEKEVENTREG_65_20", + (65 << 8) | 0x40: "WEEKEVENTREG_65_40", + (65 << 8) | 0x80: "WEEKEVENTREG_65_80", + (66 << 8) | 0x01: "WEEKEVENTREG_66_01", + (66 << 8) | 0x02: "WEEKEVENTREG_66_02", + (66 << 8) | 0x04: "WEEKEVENTREG_66_04", + (66 << 8) | 0x08: "WEEKEVENTREG_66_08", + (66 << 8) | 0x10: "WEEKEVENTREG_66_10", + (66 << 8) | 0x20: "WEEKEVENTREG_66_20", + (66 << 8) | 0x40: "WEEKEVENTREG_66_40", + (66 << 8) | 0x80: "WEEKEVENTREG_66_80", + (67 << 8) | 0x01: "WEEKEVENTREG_67_01", + (67 << 8) | 0x02: "WEEKEVENTREG_67_02", + (67 << 8) | 0x04: "WEEKEVENTREG_67_04", + (67 << 8) | 0x08: "WEEKEVENTREG_67_08", + (67 << 8) | 0x10: "WEEKEVENTREG_67_10", + (67 << 8) | 0x20: "WEEKEVENTREG_67_20", + (67 << 8) | 0x40: "WEEKEVENTREG_67_40", + (67 << 8) | 0x80: "WEEKEVENTREG_67_80", + (68 << 8) | 0x01: "WEEKEVENTREG_68_01", + (68 << 8) | 0x02: "WEEKEVENTREG_68_02", + (68 << 8) | 0x04: "WEEKEVENTREG_68_04", + (68 << 8) | 0x08: "WEEKEVENTREG_68_08", + (68 << 8) | 0x10: "WEEKEVENTREG_68_10", + (68 << 8) | 0x20: "WEEKEVENTREG_68_20", + (68 << 8) | 0x40: "WEEKEVENTREG_68_40", + (68 << 8) | 0x80: "WEEKEVENTREG_68_80", + (69 << 8) | 0x01: "WEEKEVENTREG_69_01", + (69 << 8) | 0x02: "WEEKEVENTREG_69_02", + (69 << 8) | 0x04: "WEEKEVENTREG_69_04", + (69 << 8) | 0x08: "WEEKEVENTREG_69_08", + (69 << 8) | 0x10: "WEEKEVENTREG_69_10", + (69 << 8) | 0x20: "WEEKEVENTREG_69_20", + (69 << 8) | 0x40: "WEEKEVENTREG_69_40", + (69 << 8) | 0x80: "WEEKEVENTREG_69_80", + (70 << 8) | 0x01: "WEEKEVENTREG_70_01", + (70 << 8) | 0x02: "WEEKEVENTREG_70_02", + (70 << 8) | 0x04: "WEEKEVENTREG_70_04", + (70 << 8) | 0x08: "WEEKEVENTREG_70_08", + (70 << 8) | 0x10: "WEEKEVENTREG_70_10", + (70 << 8) | 0x20: "WEEKEVENTREG_70_20", + (70 << 8) | 0x40: "WEEKEVENTREG_70_40", + (70 << 8) | 0x80: "WEEKEVENTREG_70_80", + (71 << 8) | 0x01: "WEEKEVENTREG_71_01", + (71 << 8) | 0x02: "WEEKEVENTREG_71_02", + (71 << 8) | 0x04: "WEEKEVENTREG_71_04", + (71 << 8) | 0x08: "WEEKEVENTREG_71_08", + (71 << 8) | 0x10: "WEEKEVENTREG_71_10", + (71 << 8) | 0x20: "WEEKEVENTREG_71_20", + (71 << 8) | 0x40: "WEEKEVENTREG_71_40", + (71 << 8) | 0x80: "WEEKEVENTREG_71_80", + (72 << 8) | 0x01: "WEEKEVENTREG_72_01", + (72 << 8) | 0x02: "WEEKEVENTREG_72_02", + (72 << 8) | 0x04: "WEEKEVENTREG_72_04", + (72 << 8) | 0x08: "WEEKEVENTREG_72_08", + (72 << 8) | 0x10: "WEEKEVENTREG_72_10", + (72 << 8) | 0x20: "WEEKEVENTREG_72_20", + (72 << 8) | 0x40: "WEEKEVENTREG_72_40", + (72 << 8) | 0x80: "WEEKEVENTREG_72_80", + (73 << 8) | 0x01: "WEEKEVENTREG_73_01", + (73 << 8) | 0x02: "WEEKEVENTREG_73_02", + (73 << 8) | 0x04: "WEEKEVENTREG_73_04", + (73 << 8) | 0x08: "WEEKEVENTREG_73_08", + (73 << 8) | 0x10: "WEEKEVENTREG_73_10", + (73 << 8) | 0x20: "WEEKEVENTREG_73_20", + (73 << 8) | 0x40: "WEEKEVENTREG_73_40", + (73 << 8) | 0x80: "WEEKEVENTREG_73_80", + (74 << 8) | 0x01: "WEEKEVENTREG_74_01", + (74 << 8) | 0x02: "WEEKEVENTREG_74_02", + (74 << 8) | 0x04: "WEEKEVENTREG_74_04", + (74 << 8) | 0x08: "WEEKEVENTREG_74_08", + (74 << 8) | 0x10: "WEEKEVENTREG_74_10", + (74 << 8) | 0x20: "WEEKEVENTREG_74_20", + (74 << 8) | 0x40: "WEEKEVENTREG_74_40", + (74 << 8) | 0x80: "WEEKEVENTREG_74_80", + (75 << 8) | 0x01: "WEEKEVENTREG_75_01", + (75 << 8) | 0x02: "WEEKEVENTREG_75_02", + (75 << 8) | 0x04: "WEEKEVENTREG_75_04", + (75 << 8) | 0x08: "WEEKEVENTREG_75_08", + (75 << 8) | 0x10: "WEEKEVENTREG_75_10", + (75 << 8) | 0x20: "WEEKEVENTREG_75_20", + (75 << 8) | 0x40: "WEEKEVENTREG_75_40", + (75 << 8) | 0x80: "WEEKEVENTREG_75_80", + (76 << 8) | 0x01: "WEEKEVENTREG_76_01", + (76 << 8) | 0x02: "WEEKEVENTREG_76_02", + (76 << 8) | 0x04: "WEEKEVENTREG_76_04", + (76 << 8) | 0x08: "WEEKEVENTREG_76_08", + (76 << 8) | 0x10: "WEEKEVENTREG_76_10", + (76 << 8) | 0x20: "WEEKEVENTREG_76_20", + (76 << 8) | 0x40: "WEEKEVENTREG_76_40", + (76 << 8) | 0x80: "WEEKEVENTREG_76_80", + (77 << 8) | 0x01: "WEEKEVENTREG_77_01", + (77 << 8) | 0x02: "WEEKEVENTREG_77_02", + (77 << 8) | 0x04: "WEEKEVENTREG_77_04", + (77 << 8) | 0x08: "WEEKEVENTREG_77_08", + (77 << 8) | 0x10: "WEEKEVENTREG_77_10", + (77 << 8) | 0x20: "WEEKEVENTREG_77_20", + (77 << 8) | 0x40: "WEEKEVENTREG_77_40", + (77 << 8) | 0x80: "WEEKEVENTREG_77_80", + (78 << 8) | 0x01: "WEEKEVENTREG_78_01", + (78 << 8) | 0x02: "WEEKEVENTREG_78_02", + (78 << 8) | 0x04: "WEEKEVENTREG_78_04", + (78 << 8) | 0x08: "WEEKEVENTREG_78_08", + (78 << 8) | 0x10: "WEEKEVENTREG_78_10", + (78 << 8) | 0x20: "WEEKEVENTREG_78_20", + (78 << 8) | 0x40: "WEEKEVENTREG_78_40", + (78 << 8) | 0x80: "WEEKEVENTREG_78_80", + (79 << 8) | 0x01: "WEEKEVENTREG_79_01", + (79 << 8) | 0x02: "WEEKEVENTREG_79_02", + (79 << 8) | 0x04: "WEEKEVENTREG_79_04", + (79 << 8) | 0x08: "WEEKEVENTREG_79_08", + (79 << 8) | 0x10: "WEEKEVENTREG_79_10", + (79 << 8) | 0x20: "WEEKEVENTREG_79_20", + (79 << 8) | 0x40: "WEEKEVENTREG_79_40", + (79 << 8) | 0x80: "WEEKEVENTREG_79_80", + (80 << 8) | 0x01: "WEEKEVENTREG_80_01", + (80 << 8) | 0x02: "WEEKEVENTREG_80_02", + (80 << 8) | 0x04: "WEEKEVENTREG_80_04", + (80 << 8) | 0x08: "WEEKEVENTREG_80_08", + (80 << 8) | 0x10: "WEEKEVENTREG_80_10", + (80 << 8) | 0x20: "WEEKEVENTREG_80_20", + (80 << 8) | 0x40: "WEEKEVENTREG_80_40", + (80 << 8) | 0x80: "WEEKEVENTREG_80_80", + (81 << 8) | 0x01: "WEEKEVENTREG_81_01", + (81 << 8) | 0x02: "WEEKEVENTREG_81_02", + (81 << 8) | 0x04: "WEEKEVENTREG_81_04", + (81 << 8) | 0x08: "WEEKEVENTREG_81_08", + (81 << 8) | 0x10: "WEEKEVENTREG_81_10", + (81 << 8) | 0x20: "WEEKEVENTREG_81_20", + (81 << 8) | 0x40: "WEEKEVENTREG_81_40", + (81 << 8) | 0x80: "WEEKEVENTREG_81_80", + (82 << 8) | 0x01: "WEEKEVENTREG_82_01", + (82 << 8) | 0x02: "WEEKEVENTREG_82_02", + (82 << 8) | 0x04: "WEEKEVENTREG_82_04", + (82 << 8) | 0x08: "WEEKEVENTREG_82_08", + (82 << 8) | 0x10: "WEEKEVENTREG_82_10", + (82 << 8) | 0x20: "WEEKEVENTREG_82_20", + (82 << 8) | 0x40: "WEEKEVENTREG_82_40", + (82 << 8) | 0x80: "WEEKEVENTREG_82_80", + (83 << 8) | 0x01: "WEEKEVENTREG_83_01", + (83 << 8) | 0x02: "WEEKEVENTREG_83_02", + (83 << 8) | 0x04: "WEEKEVENTREG_83_04", + (83 << 8) | 0x08: "WEEKEVENTREG_83_08", + (83 << 8) | 0x10: "WEEKEVENTREG_83_10", + (83 << 8) | 0x20: "WEEKEVENTREG_83_20", + (83 << 8) | 0x40: "WEEKEVENTREG_83_40", + (83 << 8) | 0x80: "WEEKEVENTREG_83_80", + (84 << 8) | 0x01: "WEEKEVENTREG_84_01", + (84 << 8) | 0x02: "WEEKEVENTREG_84_02", + (84 << 8) | 0x04: "WEEKEVENTREG_84_04", + (84 << 8) | 0x08: "WEEKEVENTREG_84_08", + (84 << 8) | 0x10: "WEEKEVENTREG_84_10", + (84 << 8) | 0x20: "WEEKEVENTREG_84_20", + (84 << 8) | 0x40: "WEEKEVENTREG_84_40", + (84 << 8) | 0x80: "WEEKEVENTREG_84_80", + (85 << 8) | 0x01: "WEEKEVENTREG_85_01", + (85 << 8) | 0x02: "WEEKEVENTREG_85_02", + (85 << 8) | 0x04: "WEEKEVENTREG_85_04", + (85 << 8) | 0x08: "WEEKEVENTREG_85_08", + (85 << 8) | 0x10: "WEEKEVENTREG_85_10", + (85 << 8) | 0x20: "WEEKEVENTREG_85_20", + (85 << 8) | 0x40: "WEEKEVENTREG_85_40", + (85 << 8) | 0x80: "WEEKEVENTREG_85_80", + (86 << 8) | 0x01: "WEEKEVENTREG_86_01", + (86 << 8) | 0x02: "WEEKEVENTREG_86_02", + (86 << 8) | 0x04: "WEEKEVENTREG_86_04", + (86 << 8) | 0x08: "WEEKEVENTREG_86_08", + (86 << 8) | 0x10: "WEEKEVENTREG_86_10", + (86 << 8) | 0x20: "WEEKEVENTREG_86_20", + (86 << 8) | 0x40: "WEEKEVENTREG_86_40", + (86 << 8) | 0x80: "WEEKEVENTREG_86_80", + (87 << 8) | 0x01: "WEEKEVENTREG_87_01", + (87 << 8) | 0x02: "WEEKEVENTREG_87_02", + (87 << 8) | 0x04: "WEEKEVENTREG_87_04", + (87 << 8) | 0x08: "WEEKEVENTREG_87_08", + (87 << 8) | 0x10: "WEEKEVENTREG_87_10", + (87 << 8) | 0x20: "WEEKEVENTREG_87_20", + (87 << 8) | 0x40: "WEEKEVENTREG_87_40", + (87 << 8) | 0x80: "WEEKEVENTREG_87_80", + (88 << 8) | 0x01: "WEEKEVENTREG_88_01", + (88 << 8) | 0x02: "WEEKEVENTREG_88_02", + (88 << 8) | 0x04: "WEEKEVENTREG_88_04", + (88 << 8) | 0x08: "WEEKEVENTREG_88_08", + (88 << 8) | 0x10: "WEEKEVENTREG_88_10", + (88 << 8) | 0x20: "WEEKEVENTREG_88_20", + (88 << 8) | 0x40: "WEEKEVENTREG_88_40", + (88 << 8) | 0x80: "WEEKEVENTREG_88_80", + (89 << 8) | 0x01: "WEEKEVENTREG_89_01", + (89 << 8) | 0x02: "WEEKEVENTREG_89_02", + (89 << 8) | 0x04: "WEEKEVENTREG_89_04", + (89 << 8) | 0x08: "WEEKEVENTREG_89_08", + (89 << 8) | 0x10: "WEEKEVENTREG_89_10", + (89 << 8) | 0x20: "WEEKEVENTREG_89_20", + (89 << 8) | 0x40: "WEEKEVENTREG_89_40", + (89 << 8) | 0x80: "WEEKEVENTREG_89_80", + (90 << 8) | 0x01: "WEEKEVENTREG_90_01", + (90 << 8) | 0x02: "WEEKEVENTREG_90_02", + (90 << 8) | 0x04: "WEEKEVENTREG_90_04", + (90 << 8) | 0x08: "WEEKEVENTREG_90_08", + (90 << 8) | 0x10: "WEEKEVENTREG_90_10", + (90 << 8) | 0x20: "WEEKEVENTREG_90_20", + (90 << 8) | 0x40: "WEEKEVENTREG_90_40", + (90 << 8) | 0x80: "WEEKEVENTREG_90_80", + (91 << 8) | 0x01: "WEEKEVENTREG_91_01", + (91 << 8) | 0x02: "WEEKEVENTREG_91_02", + (91 << 8) | 0x04: "WEEKEVENTREG_91_04", + (91 << 8) | 0x08: "WEEKEVENTREG_91_08", + (91 << 8) | 0x10: "WEEKEVENTREG_91_10", + (91 << 8) | 0x20: "WEEKEVENTREG_91_20", + (91 << 8) | 0x40: "WEEKEVENTREG_91_40", + (91 << 8) | 0x80: "WEEKEVENTREG_91_80", + (92 << 8) | 0x01: "WEEKEVENTREG_92_01", + (92 << 8) | 0x02: "WEEKEVENTREG_92_02", + (92 << 8) | 0x04: "WEEKEVENTREG_92_04", + (92 << 8) | 0x08: "WEEKEVENTREG_92_08", + (92 << 8) | 0x10: "WEEKEVENTREG_92_10", + (92 << 8) | 0x20: "WEEKEVENTREG_92_20", + (92 << 8) | 0x40: "WEEKEVENTREG_92_40", + (92 << 8) | 0x80: "WEEKEVENTREG_92_80", + (93 << 8) | 0x01: "WEEKEVENTREG_93_01", + (93 << 8) | 0x02: "WEEKEVENTREG_93_02", + (93 << 8) | 0x04: "WEEKEVENTREG_93_04", + (93 << 8) | 0x08: "WEEKEVENTREG_93_08", + (93 << 8) | 0x10: "WEEKEVENTREG_93_10", + (93 << 8) | 0x20: "WEEKEVENTREG_93_20", + (93 << 8) | 0x40: "WEEKEVENTREG_93_40", + (93 << 8) | 0x80: "WEEKEVENTREG_93_80", + (94 << 8) | 0x01: "WEEKEVENTREG_94_01", + (94 << 8) | 0x02: "WEEKEVENTREG_94_02", + (94 << 8) | 0x04: "WEEKEVENTREG_94_04", + (94 << 8) | 0x08: "WEEKEVENTREG_94_08", + (94 << 8) | 0x10: "WEEKEVENTREG_94_10", + (94 << 8) | 0x20: "WEEKEVENTREG_94_20", + (94 << 8) | 0x40: "WEEKEVENTREG_94_40", + (94 << 8) | 0x80: "WEEKEVENTREG_94_80", + (95 << 8) | 0x01: "WEEKEVENTREG_95_01", + (95 << 8) | 0x02: "WEEKEVENTREG_95_02", + (95 << 8) | 0x04: "WEEKEVENTREG_95_04", + (95 << 8) | 0x08: "WEEKEVENTREG_95_08", + (95 << 8) | 0x10: "WEEKEVENTREG_95_10", + (95 << 8) | 0x20: "WEEKEVENTREG_95_20", + (95 << 8) | 0x40: "WEEKEVENTREG_95_40", + (95 << 8) | 0x80: "WEEKEVENTREG_95_80", + (96 << 8) | 0x01: "WEEKEVENTREG_96_01", + (96 << 8) | 0x02: "WEEKEVENTREG_96_02", + (96 << 8) | 0x04: "WEEKEVENTREG_96_04", + (96 << 8) | 0x08: "WEEKEVENTREG_96_08", + (96 << 8) | 0x10: "WEEKEVENTREG_96_10", + (96 << 8) | 0x20: "WEEKEVENTREG_96_20", + (96 << 8) | 0x40: "WEEKEVENTREG_96_40", + (96 << 8) | 0x80: "WEEKEVENTREG_96_80", + (97 << 8) | 0x01: "WEEKEVENTREG_97_01", + (97 << 8) | 0x02: "WEEKEVENTREG_97_02", + (97 << 8) | 0x04: "WEEKEVENTREG_97_04", + (97 << 8) | 0x08: "WEEKEVENTREG_97_08", + (97 << 8) | 0x10: "WEEKEVENTREG_97_10", + (97 << 8) | 0x20: "WEEKEVENTREG_97_20", + (97 << 8) | 0x40: "WEEKEVENTREG_97_40", + (97 << 8) | 0x80: "WEEKEVENTREG_97_80", + (98 << 8) | 0x01: "WEEKEVENTREG_98_01", + (98 << 8) | 0x02: "WEEKEVENTREG_98_02", + (98 << 8) | 0x04: "WEEKEVENTREG_98_04", + (98 << 8) | 0x08: "WEEKEVENTREG_98_08", + (98 << 8) | 0x10: "WEEKEVENTREG_98_10", + (98 << 8) | 0x20: "WEEKEVENTREG_98_20", + (98 << 8) | 0x40: "WEEKEVENTREG_98_40", + (98 << 8) | 0x80: "WEEKEVENTREG_98_80", + (99 << 8) | 0x01: "WEEKEVENTREG_99_01", + (99 << 8) | 0x02: "WEEKEVENTREG_99_02", + (99 << 8) | 0x04: "WEEKEVENTREG_99_04", + (99 << 8) | 0x08: "WEEKEVENTREG_99_08", + (99 << 8) | 0x10: "WEEKEVENTREG_99_10", + (99 << 8) | 0x20: "WEEKEVENTREG_99_20", + (99 << 8) | 0x40: "WEEKEVENTREG_99_40", + (99 << 8) | 0x80: "WEEKEVENTREG_99_80", +} + +def getFlagMacro(index: int, mask: int) -> str: + flag = (index << 8) | mask + if flag in weekEventReg: + return weekEventReg[flag] + return f"WEEKEVENTREG_{index:02}_{mask:02X}" + +def getCheckMacro(index: int, mask: int) -> str: + return f"CHECK_WEEKEVENTREG({getFlagMacro(index, mask)})" + +def getSetMacro(index: int, mask: int) -> str: + return f"SET_WEEKEVENTREG({getFlagMacro(index, mask)})" + +def getClearMacro(index: int, mask: int) -> str: + return f"CLEAR_WEEKEVENTREG({getFlagMacro(index, mask)})" + +NUMBER_PATTERN = r"(0[xX])?[0-9a-fA-F]+" + +def applyChange(fileContents: str, compiledRegex: re.Pattern, callback) -> str: + parsedContents = "" + + match = compiledRegex.search(fileContents) + while match: + index = int(match.group("index"), 0) + mask = int(match.group("mask"), 0) + + start, end = match.span() + parsedContents += fileContents[:start] + parsedContents += callback(index, mask) + + fileContents = fileContents[end:] + match = compiledRegex.search(fileContents) + + parsedContents += fileContents + return parsedContents + + +def updateCheck(fileContents: str) -> str: + # gSaveContext.save.weekEventReg[86] & 2 + checkRegex = re.compile(rf"gSaveContext.save.weekEventReg\[(?P{NUMBER_PATTERN})\]\s*\&\s*(?P{NUMBER_PATTERN})") + + return applyChange(fileContents, checkRegex, getCheckMacro) + +def updateSet(fileContents: str) -> str: + # gSaveContext.save.weekEventReg[51] |= 0x10 + setRegex = re.compile(rf"gSaveContext.save.weekEventReg\[(?P{NUMBER_PATTERN})\]\s*\|=\s*(?P{NUMBER_PATTERN})") + + return applyChange(fileContents, setRegex, getSetMacro) + +def updateClear(fileContents: str) -> str: + # gSaveContext.save.weekEventReg[85] &= (u8)~0x80 + clearRegex = re.compile(rf"gSaveContext.save.weekEventReg\[(?P{NUMBER_PATTERN})\]\s*\&=\s*(\(u8\))?~(?P{NUMBER_PATTERN})") + + return applyChange(fileContents, clearRegex, getClearMacro) + + +def read_file(filename): + with open(filename) as src_file: + return src_file.read() + +def write_file(filename, contents): + with open(filename, "w") as f: + f.write(contents) + + +def main(): + parser = argparse.ArgumentParser(description="Converts a weekEventReg access to a macro") + + parser.add_argument("filename", help="Replace every occurrence of numeric weekEventReg on this file to the corresponding macro") + args = parser.parse_args() + + fileContents = read_file(args.filename) + + parsedContents = updateCheck(fileContents) + parsedContents = updateSet(parsedContents) + parsedContents = updateClear(parsedContents) + + if fileContents != parsedContents: + write_file(args.filename, parsedContents) + +if __name__ == "__main__": + main() diff --git a/undefined_syms.txt b/undefined_syms.txt index e813cc9d3..76e431295 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -564,68 +564,14 @@ D_06004240 = 0x06004240; D_06003B08 = 0x06003B08; D_06003E80 = 0x06003E80; -// ovl_Bg_Fire_Wall - -D_06000040 = 0x06000040; - -// ovl_Bg_Fu_Mizu - -D_06002FC0 = 0x06002FC0; -D_060037D8 = 0x060037D8; -D_060037F8 = 0x060037F8; - // ovl_Bg_Haka_Bombwall D_06001680 = 0x06001680; -// ovl_Bg_Hakugin_Bombwall - -D_06009830 = 0x06009830; - -// ovl_Bg_Hakugin_Elvpole - -D_0600ACB8 = 0x0600ACB8; -D_0600BF40 = 0x0600BF40; - // ovl_Bg_Ikana_Bombwall D_06000288 = 0x06000288; -// ovl_Bg_Ikana_Mirror - -D_060014B0 = 0x060014B0; -D_06001678 = 0x06001678; -D_06001880 = 0x06001880; -D_06001AD8 = 0x06001AD8; -D_06001E18 = 0x06001E18; -D_06002358 = 0x06002358; - -// ovl_Bg_Kin2_Bombwall - -D_06000128 = 0x06000128; -D_060002C0 = 0x060002C0; -D_06000360 = 0x06000360; -D_06000490 = 0x06000490; - -// ovl_Bg_Kin2_Picture - -D_06000658 = 0x06000658; -D_06000798 = 0x06000798; - -// ovl_Bg_Last_Bwall - -D_06000098 = 0x06000098; - -// ovl_Bg_Sinkai_Kabe - -D_06000048 = 0x06000048; - -// ovl_Bg_Umajump - -D_06001220 = 0x06001220; -D_06001438 = 0x06001438; -D_06001558 = 0x06001558; - // ovl_Boss_01 D_06000C44 = 0x06000C44; @@ -677,14 +623,6 @@ D_06006E50 = 0x06006E50; D_06007488 = 0x06007488; D_06007908 = 0x06007908; -// ovl_Boss_06 - -D_06018BD0 = 0x06018BD0; -D_06018CF0 = 0x06018CF0; -D_06018DE0 = 0x06018DE0; -D_06019360 = 0x06019360; -D_060193B0 = 0x060193B0; - // ovl_Boss_07 D_06000194 = 0x06000194; @@ -779,86 +717,17 @@ D_0600B5A0 = 0x0600B5A0; D_06010C40 = 0x06010C40; D_060129F0 = 0x060129F0; -// ovl_Demo_Tre_Lgt - -D_06007D78 = 0x06007D78; - -// ovl_Dm_Ah - -D_06009E70 = 0x06009E70; - -// ovl_Dm_Al - -D_0600A0D8 = 0x0600A0D8; - -// ovl_Dm_Bal - -D_060005FC = 0x060005FC; -D_06001804 = 0x06001804; -D_0600A6D0 = 0x0600A6D0; - -// ovl_Dm_Char02 - -D_0600AD68 = 0x0600AD68; - -// ovl_Dm_Char03 - -D_06020550 = 0x06020550; - -// ovl_Dm_Char06 - -D_060013A8 = 0x060013A8; -D_06006868 = 0x06006868; - -// ovl_Dm_Char08 - -D_06002328 = 0x06002328; -D_06002470 = 0x06002470; -D_06004E70 = 0x06004E70; -D_0600E748 = 0x0600E748; - -// ovl_Dm_Char09 - -D_0600005C = 0x0600005C; -D_06001398 = 0x06001398; - // ovl_Dm_Tsg D_06002D30 = 0x06002D30; D_06011458 = 0x06011458; -// ovl_Dm_Zl - -D_0600DE08 = 0x0600DE08; -D_0600E038 = 0x0600E038; - -// ovl_Door_Warp1 - -D_06003230 = 0x06003230; -D_060044D8 = 0x060044D8; -D_06004690 = 0x06004690; -D_060057D8 = 0x060057D8; -D_060058C8 = 0x060058C8; -D_06007238 = 0x06007238; - -// ovl_Eff_Kamejima_Wave - -D_06000000 = 0x06000000; -D_06000140 = 0x06000140; -D_06001AF0 = 0x06001AF0; - // ovl_Eff_Stk D_06008920 = 0x06008920; D_06008A38 = 0x06008A38; D_06009F60 = 0x06009F60; -// ovl_Eff_Zoraband - -D_06000180 = 0x06000180; -D_060002A8 = 0x060002A8; -D_06000F38 = 0x06000F38; - // ovl_En_An D_06000308 = 0x06000308; @@ -872,25 +741,6 @@ D_06012618 = 0x06012618; D_0600B380 = 0x0600B380; -// ovl_En_Ani - -D_060007FC = 0x060007FC; -D_06000C14 = 0x06000C14; -D_060011CC = 0x060011CC; -D_06001D48 = 0x06001D48; -D_060027A0 = 0x060027A0; -D_060028A0 = 0x060028A0; -D_06009220 = 0x06009220; -D_06009D34 = 0x06009D34; - -// ovl_En_Az - -D_06007438 = 0x06007438; -D_0600C94C = 0x0600C94C; -D_06017990 = 0x06017990; -D_0601ABF0 = 0x0601ABF0; -D_0601AD00 = 0x0601AD00; - // ovl_En_Bal D_060005FC = 0x060005FC; @@ -900,48 +750,6 @@ D_0600B604 = 0x0600B604; D_0600CB78 = 0x0600CB78; D_0600D530 = 0x0600D530; -// ovl_En_Bat - -D_060000A0 = 0x060000A0; -D_060000C8 = 0x060000C8; - -// ovl_En_Bee - -D_0600005C = 0x0600005C; -D_06001398 = 0x06001398; - -// ovl_En_Bh - -D_06000074 = 0x06000074; -D_06001E60 = 0x06001E60; - -// ovl_En_Bombal - -D_06000A00 = 0x06000A00; -D_06000D78 = 0x06000D78; - -// ovl_En_Bombers2 - -D_060064B8 = 0x060064B8; -D_0600F82C = 0x0600F82C; - -// ovl_En_Bomjimb - -D_060064B8 = 0x060064B8; -D_0600F82C = 0x0600F82C; - -// ovl_En_Box - -D_0600043C = 0x0600043C; -D_060006F0 = 0x060006F0; -D_06000A50 = 0x06000A50; -D_06000DB0 = 0x06000DB0; -D_060012E8 = 0x060012E8; -D_06001850 = 0x06001850; -D_06001D58 = 0x06001D58; -D_060066A0 = 0x060066A0; -D_060080E8 = 0x060080E8; - // ovl_En_Bsb D_06000C50 = 0x06000C50; @@ -949,15 +757,6 @@ D_06004894 = 0x06004894; D_060086BC = 0x060086BC; D_0600C3E0 = 0x0600C3E0; -// ovl_En_Bubble - -D_06001000 = 0x06001000; - -// ovl_En_Crow - -D_060000F0 = 0x060000F0; -D_060010C0 = 0x060010C0; - // ovl_En_Death D_06000E64 = 0x06000E64; @@ -989,20 +788,10 @@ D_06001828 = 0x06001828; D_06002A40 = 0x06002A40; D_06003070 = 0x06003070; -// ovl_En_Demo_heishi - -D_06003BFC = 0x06003BFC; -D_0600D640 = 0x0600D640; - // ovl_En_Dnh D_06002950 = 0x06002950; -// ovl_En_Ds2n - -D_06008038 = 0x06008038; -D_06008170 = 0x06008170; - // ovl_En_Dt D_0600112C = 0x0600112C; @@ -1034,26 +823,6 @@ D_060009A0 = 0x060009A0; D_06010240 = 0x06010240; -// ovl_En_Fall2 - -D_06005EF4 = 0x06005EF4; -D_06005F10 = 0x06005F10; -D_06008840 = 0x06008840; -D_06008898 = 0x06008898; - -// ovl_En_Famos - -D_060000F8 = 0x060000F8; -D_06003D38 = 0x06003D38; -D_06003DC8 = 0x06003DC8; - -// ovl_En_Fishing - -D_060029C0 = 0x060029C0; -D_0600007C = 0x0600007C; -D_0600CFE0 = 0x0600CFE0; -D_06011058 = 0x06011058; - // ovl_En_Ge2 D_0600030C = 0x0600030C; @@ -1069,12 +838,6 @@ D_0600A344 = 0x0600A344; D_06001EFC = 0x06001EFC; D_0600A808 = 0x0600A808; -// ovl_En_Hgo - -D_0600B644 = 0x0600B644; -D_0600F248 = 0x0600F248; -D_06012A58 = 0x06012A58; - // ovl_En_Invadepoh_Demo D_06000080 = 0x06000080; @@ -1091,15 +854,6 @@ D_06012FC8 = 0x06012FC8; D_06013928 = 0x06013928; D_06016588 = 0x06016588; -// ovl_En_Js - -D_06010880 = 0x06010880; -D_06010CD8 = 0x06010CD8; -D_060164B8 = 0x060164B8; -D_06016F58 = 0x06016F58; -D_0601764C = 0x0601764C; -D_06017E98 = 0x06017E98; - // ovl_En_Jso D_060081F4 = 0x060081F4; @@ -1111,16 +865,6 @@ D_06002ED8 = 0x06002ED8; D_06003168 = 0x06003168; D_060081F4 = 0x060081F4; -// ovl_En_Kaizoku - -D_060058B8 = 0x060058B8; -D_0600D828 = 0x0600D828; - -// ovl_En_Kanban - -D_06000C30 = 0x06000C30; -D_06001630 = 0x06001630; - // ovl_En_Kitan D_06000CE8 = 0x06000CE8; @@ -1187,22 +931,6 @@ D_06021E34 = 0x06021E34; D_06022728 = 0x06022728; D_06022CAC = 0x06022CAC; -// ovl_En_Lift_Nuts - -D_060029E8 = 0x060029E8; -D_0600AC70 = 0x0600AC70; - -// ovl_En_Mag - -D_06000000 = 0x06000000; -D_06009000 = 0x06009000; -D_06009680 = 0x06009680; -D_06009D00 = 0x06009D00; -D_06010F40 = 0x06010F40; -D_06011740 = 0x06011740; -D_06011BC0 = 0x06011BC0; -D_06011E48 = 0x06011E48; - // ovl_En_Mnk D_06003584 = 0x06003584; @@ -1214,17 +942,6 @@ D_060105DC = 0x060105DC; D_06019B88 = 0x06019B88; D_0601D518 = 0x0601D518; -// ovl_En_Neo_Reeba - -D_060001E4 = 0x060001E4; -D_06001EE8 = 0x06001EE8; - -// ovl_En_Nwc - -D_060000E8 = 0x060000E8; -D_060002E8 = 0x060002E8; -D_06002530 = 0x06002530; - // ovl_En_Okuta D_0600044C = 0x0600044C; @@ -1236,16 +953,6 @@ D_06003EE4 = 0x06003EE4; D_06004204 = 0x06004204; D_0600466C = 0x0600466C; -// ovl_En_Osn - -D_060192A0 = 0x060192A0; -D_060201BC = 0x060201BC; -D_060202F0 = 0x060202F0; - -// ovl_En_Paper - -D_0600D5A0 = 0x0600D5A0; - // ovl_En_Po_Composer D_0600188C = 0x0600188C; @@ -1255,26 +962,6 @@ D_06006F38 = 0x06006F38; D_06006FD8 = 0x06006FD8; D_06009930 = 0x06009930; -// ovl_En_Pr2 - -D_06003904 = 0x06003904; -D_06004188 = 0x06004188; -D_06004340 = 0x06004340; - -// ovl_En_Pst - -D_06001A80 = 0x06001A80; - -// ovl_En_Ru - -D_0600C700 = 0x0600C700; - -// ovl_En_Rz - -D_06003A20 = 0x06003A20; -D_0600D768 = 0x0600D768; -D_0600D8D8 = 0x0600D8D8; - // ovl_En_Slime D_060004C0 = 0x060004C0; @@ -1291,28 +978,11 @@ D_06001AA0 = 0x06001AA0; D_06000304 = 0x06000304; -// ovl_En_Sth2 - -D_060031F8 = 0x060031F8; - -// ovl_En_Stone_heishi - -D_06000630 = 0x06000630; -D_06000768 = 0x06000768; -D_06003BFC = 0x06003BFC; -D_0600D640 = 0x0600D640; - // ovl_En_Stop_heishi D_06006C18 = 0x06006C18; D_0600D640 = 0x0600D640; -// ovl_En_S_Goro - -D_060091A8 = 0x060091A8; -D_06011AC8 = 0x06011AC8; -D_06012DE0 = 0x06012DE0; - // ovl_En_Takaraya D_06000968 = 0x06000968; @@ -1322,45 +992,17 @@ D_06009890 = 0x06009890; D_0600A280 = 0x0600A280; D_0600AD98 = 0x0600AD98; -// ovl_En_Tanron2 - -D_06003450 = 0x06003450; -D_060034C8 = 0x060034C8; -D_06004510 = 0x06004510; -D_06004550 = 0x06004550; - -// ovl_En_Tanron4 - -D_06000168 = 0x06000168; -D_06000E68 = 0x06000E68; - // ovl_En_Test3 D_0600CB60 = 0x0600CB60; D_0600EDD0 = 0x0600EDD0; D_0600F7EC = 0x0600F7EC; -// ovl_En_Tg - -D_0600B0A0 = 0x0600B0A0; -D_0600B0E0 = 0x0600B0E0; -D_0600B2B0 = 0x0600B2B0; - -// ovl_En_Trt - -D_0600FEF0 = 0x0600FEF0; -D_06000A44 = 0x06000A44; - // ovl_En_Tru D_0601A820 = 0x0601A820; D_0601A830 = 0x0601A830; -// ovl_En_Twig - -D_060014C8 = 0x060014C8; -D_06001C38 = 0x06001C38; - // ovl_En_Wdhand D_060000F4 = 0x060000F4; @@ -1381,22 +1023,6 @@ D_06000D94 = 0x06000D94; D_06007650 = 0x06007650; D_0600D658 = 0x0600D658; -// ovl_Mir_Ray3 - -D_06000168 = 0x06000168; -D_060003F8 = 0x060003F8; -D_060004B0 = 0x060004B0; - -// ovl_Obj_Danpeilift - -D_06000180 = 0x06000180; -D_06000BA0 = 0x06000BA0; - -// ovl_Obj_Lift - -D_06000D10 = 0x06000D10; -D_06000F00 = 0x06000F00; - // ovl_Obj_Mine D_06000030 = 0x06000030; @@ -1408,15 +1034,6 @@ D_06002188 = 0x06002188; D_06000B70 = 0x06000B70; D_06000D60 = 0x06000D60; -// ovl_Obj_Taru - -D_06000420 = 0x06000420; -D_06000FC8 = 0x06000FC8; -D_06001040 = 0x06001040; -D_06001100 = 0x06001100; -D_06001140 = 0x06001140; -D_06001CB0 = 0x06001CB0; - // ovl_player_actor D_06008860 = 0x06008860;