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;