summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Longstaff <JordanLongstaff@users.noreply.github.com>2026-09-20 08:58:30 -0400
committerGitHub <noreply@github.com>2026-09-20 09:58:30 -0300
commit8abe023044c4eaa1da81e5244ef67dc1c0cb968c (patch)
tree7207bddcf4c2bbe3c932b18fbd5e145bd0d6bc2a
parent4a8851c7fb2b29914d71f7ff42e4fef21ae7c380 (diff)
Document player transformation mask flags (#1904)
-rw-r--r--include/z64save.h8
-rw-r--r--src/code/z_sram_JPN.c5
-rw-r--r--src/code/z_sram_NES.c5
-rw-r--r--src/overlays/actors/ovl_player_actor/z_player.c20
-rw-r--r--tools/overlayhelpers/mscriptdis.py8
-rwxr-xr-xtools/weekeventregconvert.py8
6 files changed, 28 insertions, 26 deletions
diff --git a/include/z64save.h b/include/z64save.h
index 36e7f24aa..02d2e9ee3 100644
--- a/include/z64save.h
+++ b/include/z64save.h
@@ -967,10 +967,10 @@ typedef enum {
#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_WORE_DEKU_MASK PACK_WEEKEVENTREG_FLAG(30, 0x10)
+#define WEEKEVENTREG_WORE_GORON_MASK PACK_WEEKEVENTREG_FLAG(30, 0x20)
+#define WEEKEVENTREG_WORE_ZORA_MASK PACK_WEEKEVENTREG_FLAG(30, 0x40)
+#define WEEKEVENTREG_WORE_FIERCE_DEITY_MASK PACK_WEEKEVENTREG_FLAG(30, 0x80)
#define WEEKEVENTREG_31_01 PACK_WEEKEVENTREG_FLAG(31, 0x01)
#define WEEKEVENTREG_31_02 PACK_WEEKEVENTREG_FLAG(31, 0x02)
diff --git a/src/code/z_sram_JPN.c b/src/code/z_sram_JPN.c
index b8e0f76f7..0ac2da08c 100644
--- a/src/code/z_sram_JPN.c
+++ b/src/code/z_sram_JPN.c
@@ -110,8 +110,9 @@ u16 sPersistentCycleWeekEventRegs[ARRAY_COUNT(gSaveContext.save.saveInfo.weekEve
/* 28 */ 0,
/* 29 */ 0,
/* 30 */
- PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_10) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_20) |
- PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_40) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_80),
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_WORE_DEKU_MASK) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_WORE_GORON_MASK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_WORE_ZORA_MASK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_WORE_FIERCE_DEITY_MASK),
/* 31 */
PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_01) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_02) |
PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_04) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_20),
diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c
index b8e0f76f7..0ac2da08c 100644
--- a/src/code/z_sram_NES.c
+++ b/src/code/z_sram_NES.c
@@ -110,8 +110,9 @@ u16 sPersistentCycleWeekEventRegs[ARRAY_COUNT(gSaveContext.save.saveInfo.weekEve
/* 28 */ 0,
/* 29 */ 0,
/* 30 */
- PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_10) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_20) |
- PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_40) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_80),
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_WORE_DEKU_MASK) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_WORE_GORON_MASK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_WORE_ZORA_MASK) |
+ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_WORE_FIERCE_DEITY_MASK),
/* 31 */
PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_01) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_02) |
PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_04) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_20),
diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c
index 8e9182a73..a658258b2 100644
--- a/src/overlays/actors/ovl_player_actor/z_player.c
+++ b/src/overlays/actors/ovl_player_actor/z_player.c
@@ -18600,11 +18600,11 @@ void func_80855218(PlayState* play, Player* this, struct_8085D910** arg2) {
}
//! @bug This array may be indexed with PLAYER_FORM_HUMAN, causing an out-of-bounds access
-u16 D_8085D908[] = {
- WEEKEVENTREG_30_80, // PLAYER_FORM_FIERCE_DEITY
- WEEKEVENTREG_30_20, // PLAYER_FORM_GORON
- WEEKEVENTREG_30_40, // PLAYER_FORM_ZORA
- WEEKEVENTREG_30_10, // PLAYER_FORM_DEKU
+u16 gPlayerTransformMaskFlags[] = {
+ WEEKEVENTREG_WORE_FIERCE_DEITY_MASK, // PLAYER_FORM_FIERCE_DEITY
+ WEEKEVENTREG_WORE_GORON_MASK, // PLAYER_FORM_GORON
+ WEEKEVENTREG_WORE_ZORA_MASK, // PLAYER_FORM_ZORA
+ WEEKEVENTREG_WORE_DEKU_MASK, // PLAYER_FORM_DEKU
#ifdef AVOID_UB
// Avoid UB: Provide the data that would be read by indexing this with PLAYER_FORM_HUMAN.
// Both this array and D_8085D910 are read-only so this is not expected to change.
@@ -18643,14 +18643,14 @@ void Player_Action_86(Player* this, PlayState* play) {
this->actor.draw = NULL;
this->av1.actionVar1 = 0;
Play_DisableMotionBlurPriority();
- SET_WEEKEVENTREG(D_8085D908[GET_PLAYER_FORM]);
+ SET_WEEKEVENTREG(gPlayerTransformMaskFlags[GET_PLAYER_FORM]);
}
} else if ((this->av1.actionVar1++ > ((this->transformation == PLAYER_FORM_HUMAN) ? 0x53 : 0x37)) ||
((this->av1.actionVar1 >= 5) &&
- (sp48 =
- ((this->transformation != PLAYER_FORM_HUMAN) || CHECK_WEEKEVENTREG(D_8085D908[GET_PLAYER_FORM])) &&
- CHECK_BTN_ANY(sPlayerControlInput->press.button,
- BTN_CRIGHT | BTN_CLEFT | BTN_CDOWN | BTN_CUP | BTN_B | BTN_A)))) {
+ (sp48 = ((this->transformation != PLAYER_FORM_HUMAN) ||
+ CHECK_WEEKEVENTREG(gPlayerTransformMaskFlags[GET_PLAYER_FORM])) &&
+ CHECK_BTN_ANY(sPlayerControlInput->press.button,
+ BTN_CRIGHT | BTN_CLEFT | BTN_CDOWN | BTN_CUP | BTN_B | BTN_A)))) {
R_PLAY_FILL_SCREEN_ON = 45;
R_PLAY_FILL_SCREEN_R = 220;
R_PLAY_FILL_SCREEN_G = 220;
diff --git a/tools/overlayhelpers/mscriptdis.py b/tools/overlayhelpers/mscriptdis.py
index 07e728bc2..db79a721a 100644
--- a/tools/overlayhelpers/mscriptdis.py
+++ b/tools/overlayhelpers/mscriptdis.py
@@ -305,10 +305,10 @@ week_event_reg = {
(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",
+ (30 << 8) | 0x10: "WEEKEVENTREG_WORE_DEKU_MASK",
+ (30 << 8) | 0x20: "WEEKEVENTREG_WORE_GORON_MASK",
+ (30 << 8) | 0x40: "WEEKEVENTREG_WORE_ZORA_MASK",
+ (30 << 8) | 0x80: "WEEKEVENTREG_WORE_FIERCE_DEITY_MASK",
(31 << 8) | 0x01: "WEEKEVENTREG_31_01",
(31 << 8) | 0x02: "WEEKEVENTREG_31_02",
(31 << 8) | 0x04: "WEEKEVENTREG_31_04",
diff --git a/tools/weekeventregconvert.py b/tools/weekeventregconvert.py
index 4483fc57d..1031460ab 100755
--- a/tools/weekeventregconvert.py
+++ b/tools/weekeventregconvert.py
@@ -248,10 +248,10 @@ weekEventReg = {
(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",
+ (30 << 8) | 0x10: "WEEKEVENTREG_WORE_DEKU_MASK",
+ (30 << 8) | 0x20: "WEEKEVENTREG_WORE_GORON_MASK",
+ (30 << 8) | 0x40: "WEEKEVENTREG_WORE_ZORA_MASK",
+ (30 << 8) | 0x80: "WEEKEVENTREG_WORE_FIERCE_DEITY_MASK",
(31 << 8) | 0x01: "WEEKEVENTREG_31_01",
(31 << 8) | 0x02: "WEEKEVENTREG_31_02",
(31 << 8) | 0x04: "WEEKEVENTREG_31_04",