WeekEventFlags: Entrance Cutscenes Watched (#1166)

* entrance regs

* cleanup comments

* add comment

* comments

* missed a space

* fix placement of comment
This commit is contained in:
engineer124 2023-02-24 10:08:06 -05:00 committed by GitHub
parent 69f7540e33
commit e75c51e841
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 80 additions and 67 deletions

View File

@ -503,36 +503,43 @@ typedef enum SunsSongState {
#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)
/* Entrance cutscenes watched */
#define WEEKEVENTREG_ENTERED_TERMINA_FIELD PACK_WEEKEVENTREG_FLAG(0, 0x02)
#define WEEKEVENTREG_ENTERED_IKANA_GRAVEYARD PACK_WEEKEVENTREG_FLAG(0, 0x04)
#define WEEKEVENTREG_ENTERED_ROMANI_RANCH PACK_WEEKEVENTREG_FLAG(0, 0x08)
#define WEEKEVENTREG_ENTERED_GORMAN_TRACK PACK_WEEKEVENTREG_FLAG(0, 0x10)
#define WEEKEVENTREG_ENTERED_MOUNTAIN_VILLAGE_WINTER PACK_WEEKEVENTREG_FLAG(0, 0x20)
#define WEEKEVENTREG_ENTERED_GORON_SHRINE PACK_WEEKEVENTREG_FLAG(0, 0x40)
#define WEEKEVENTREG_ENTERED_SNOWHEAD PACK_WEEKEVENTREG_FLAG(0, 0x80)
#define WEEKEVENTREG_ENTERED_SOUTHERN_SWAMP_POISONED PACK_WEEKEVENTREG_FLAG(1, 0x01)
#define WEEKEVENTREG_ENTERED_WOODFALL PACK_WEEKEVENTREG_FLAG(1, 0x02)
#define WEEKEVENTREG_ENTERED_DEKU_PALACE PACK_WEEKEVENTREG_FLAG(1, 0x04)
#define WEEKEVENTREG_ENTERED_GREAT_BAY_COAST PACK_WEEKEVENTREG_FLAG(1, 0x08)
#define WEEKEVENTREG_ENTERED_PIRATES_FORTRESS PACK_WEEKEVENTREG_FLAG(1, 0x10)
#define WEEKEVENTREG_ENTERED_ZORA_HALL PACK_WEEKEVENTREG_FLAG(1, 0x20)
#define WEEKEVENTREG_ENTERED_WATERFALL_RAPIDS PACK_WEEKEVENTREG_FLAG(1, 0x40)
#define WEEKEVENTREG_ENTERED_IKANA_CANYON PACK_WEEKEVENTREG_FLAG(1, 0x80)
// Attached to the scene but unused. Entrance cutscene is instead triggered by `ACTOR_OBJ_DEMO`
#define WEEKEVENTREG_ENTERED_IKANA_CASTLE PACK_WEEKEVENTREG_FLAG(2, 0x01)
#define WEEKEVENTREG_ENTERED_STONE_TOWER PACK_WEEKEVENTREG_FLAG(2, 0x02)
#define WEEKEVENTREG_ENTERED_STONE_TOWER_INVERTED PACK_WEEKEVENTREG_FLAG(2, 0x04)
#define WEEKEVENTREG_ENTERED_EAST_CLOCK_TOWN PACK_WEEKEVENTREG_FLAG(2, 0x08)
#define WEEKEVENTREG_ENTERED_WEST_CLOCK_TOWN PACK_WEEKEVENTREG_FLAG(2, 0x10)
#define WEEKEVENTREG_ENTERED_NORTH_CLOCK_TOWN PACK_WEEKEVENTREG_FLAG(2, 0x20)
#define WEEKEVENTREG_ENTERED_WOODFALL_TEMPLE PACK_WEEKEVENTREG_FLAG(2, 0x40)
#define WEEKEVENTREG_ENTERED_SNOWHEAD_TEMPLE PACK_WEEKEVENTREG_FLAG(2, 0x80)
// Attached to the scene but unused. Entrance cutscene is instead triggered by `ACTOR_OBJ_DEMO`
#define WEEKEVENTREG_ENTERED_PIRATES_FORTRESS_EXTERIOR PACK_WEEKEVENTREG_FLAG(3, 0x01)
#define WEEKEVENTREG_ENTERED_STONE_TOWER_TEMPLE PACK_WEEKEVENTREG_FLAG(3, 0x02)
#define WEEKEVENTREG_ENTERED_STONE_TOWER_TEMPLE_INVERTED PACK_WEEKEVENTREG_FLAG(3, 0x04)
// Unused as no cutscene is attached to this script
#define WEEKEVENTREG_ENTERED_THE_MOON PACK_WEEKEVENTREG_FLAG(3, 0x08)
#define WEEKEVENTREG_ENTERED_MOON_DEKU_TRIAL PACK_WEEKEVENTREG_FLAG(3, 0x10)
#define WEEKEVENTREG_ENTERED_MOON_GORON_TRIAL PACK_WEEKEVENTREG_FLAG(3, 0x20)
#define WEEKEVENTREG_ENTERED_MOON_ZORA_TRIAL 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)
@ -565,7 +572,8 @@ typedef enum SunsSongState {
#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)
// Entrance cutscene watched to the prison where the deku princess is kept. Also set in door_warp1.c
#define WEEKEVENTREG_ENTERED_WOODFALL_TEMPLE_PRISON 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)
@ -785,6 +793,9 @@ typedef enum SunsSongState {
#define WEEKEVENTREG_31_10 PACK_WEEKEVENTREG_FLAG(31, 0x10)
#define WEEKEVENTREG_31_20 PACK_WEEKEVENTREG_FLAG(31, 0x20)
//! @note: entrance cutscenes defined in `CutsceneEntry` can not use
//! any of the below weekEventFlags due to bitpacking
// Cremia asked the player to accompany her to town
#define WEEKEVENTREG_31_40 PACK_WEEKEVENTREG_FLAG(31, 0x40)
// Player is playing the Milk Run

View File

@ -32,7 +32,7 @@ void DmRavine_Init(Actor* thisx, PlayState* play) {
s32 pad;
DmRavine* this = THIS;
if (CHECK_WEEKEVENTREG_ALT(WEEKEVENTREG_00_10) | cREG(0)) {
if (CHECK_WEEKEVENTREG_ALT(WEEKEVENTREG_ENTERED_GORMAN_TRACK) | cREG(0)) {
Actor_Kill(&this->actor);
return;
}

View File

@ -652,7 +652,7 @@ void func_808BA10C(DoorWarp1* this, PlayState* play) {
if (this->unk_202 != 0) {
if (phi_v0_2 > 0) {
SET_WEEKEVENTREG(WEEKEVENTREG_07_80);
SET_WEEKEVENTREG(WEEKEVENTREG_ENTERED_WOODFALL_TEMPLE_PRISON);
}
switch (phi_v0_2) {
@ -711,7 +711,8 @@ void func_808BA10C(DoorWarp1* this, PlayState* play) {
switch (phi_v0_2) {
case 0:
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02)) {
SET_WEEKEVENTREG(WEEKEVENTREG_07_80);
// Skips the entrance cutscene as this flag is attached to `ENTRANCE(WOODFALL_TEMPLE, 1)`
SET_WEEKEVENTREG(WEEKEVENTREG_ENTERED_WOODFALL_TEMPLE_PRISON);
play->nextEntrance = ENTRANCE(WOODFALL_TEMPLE, 1);
play->transitionTrigger = TRANS_TRIGGER_START;
play->transitionType = TRANS_TYPE_FADE_WHITE;

View File

@ -345,7 +345,8 @@ 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 (CHECK_WEEKEVENTREG(WEEKEVENTREG_01_20)) {
// The carry-over of this flag from OoT was not done correctly
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_ENTERED_ZORA_HALL)) {
f32 sp44 = Math3D_Distance(&this->actor.world.pos, &this->actor.home.pos);
s32 pad;

View File

@ -1,7 +1,7 @@
/*
* File: z_obj_demo.c
* Overlay: ovl_Obj_Demo
* Description:
* Description: Cutscene triggers when player is in range
*/
#include "z_obj_demo.h"

View File

@ -5,36 +5,36 @@ 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",
( 0 << 8) | 0x02: "WEEKEVENTREG_ENTERED_TERMINA_FIELD",
( 0 << 8) | 0x04: "WEEKEVENTREG_ENTERED_IKANA_GRAVEYARD",
( 0 << 8) | 0x08: "WEEKEVENTREG_ENTERED_ROMANI_RANCH",
( 0 << 8) | 0x10: "WEEKEVENTREG_ENTERED_GORMAN_TRACK",
( 0 << 8) | 0x20: "WEEKEVENTREG_ENTERED_MOUNTAIN_VILLAGE_WINTER",
( 0 << 8) | 0x40: "WEEKEVENTREG_ENTERED_GORON_SHRINE",
( 0 << 8) | 0x80: "WEEKEVENTREG_ENTERED_SNOWHEAD",
( 1 << 8) | 0x01: "WEEKEVENTREG_ENTERED_SOUTHERN_SWAMP_POISONED",
( 1 << 8) | 0x02: "WEEKEVENTREG_ENTERED_WOODFALL",
( 1 << 8) | 0x04: "WEEKEVENTREG_ENTERED_DEKU_PALACE",
( 1 << 8) | 0x08: "WEEKEVENTREG_ENTERED_GREAT_BAY_COAST",
( 1 << 8) | 0x10: "WEEKEVENTREG_ENTERED_PIRATES_FORTRESS",
( 1 << 8) | 0x20: "WEEKEVENTREG_ENTERED_ZORA_HALL",
( 1 << 8) | 0x40: "WEEKEVENTREG_ENTERED_WATERFALL_RAPIDS",
( 1 << 8) | 0x80: "WEEKEVENTREG_ENTERED_IKANA_CANYON",
( 2 << 8) | 0x01: "WEEKEVENTREG_ENTERED_IKANA_CASTLE",
( 2 << 8) | 0x02: "WEEKEVENTREG_ENTERED_STONE_TOWER",
( 2 << 8) | 0x04: "WEEKEVENTREG_ENTERED_STONE_TOWER_INVERTED",
( 2 << 8) | 0x08: "WEEKEVENTREG_ENTERED_EAST_CLOCK_TOWN",
( 2 << 8) | 0x10: "WEEKEVENTREG_ENTERED_WEST_CLOCK_TOWN",
( 2 << 8) | 0x20: "WEEKEVENTREG_ENTERED_NORTH_CLOCK_TOWN",
( 2 << 8) | 0x40: "WEEKEVENTREG_ENTERED_WOODFALL_TEMPLE",
( 2 << 8) | 0x80: "WEEKEVENTREG_ENTERED_SNOWHEAD_TEMPLE",
( 3 << 8) | 0x01: "WEEKEVENTREG_ENTERED_PIRATES_FORTRESS_EXTERIOR",
( 3 << 8) | 0x02: "WEEKEVENTREG_ENTERED_STONE_TOWER_TEMPLE",
( 3 << 8) | 0x04: "WEEKEVENTREG_ENTERED_STONE_TOWER_TEMPLE_INVERTED",
( 3 << 8) | 0x08: "WEEKEVENTREG_ENTERED_THE_MOON",
( 3 << 8) | 0x10: "WEEKEVENTREG_ENTERED_MOON_DEKU_TRIAL",
( 3 << 8) | 0x20: "WEEKEVENTREG_ENTERED_MOON_GORON_TRIAL",
( 3 << 8) | 0x40: "WEEKEVENTREG_ENTERED_MOON_ZORA_TRIAL",
( 3 << 8) | 0x80: "WEEKEVENTREG_03_80",
( 4 << 8) | 0x01: "WEEKEVENTREG_04_01",
( 4 << 8) | 0x02: "WEEKEVENTREG_04_02",
@ -67,7 +67,7 @@ weekEventReg = {
( 7 << 8) | 0x10: "WEEKEVENTREG_07_10",
( 7 << 8) | 0x20: "WEEKEVENTREG_07_20",
( 7 << 8) | 0x40: "WEEKEVENTREG_07_40",
( 7 << 8) | 0x80: "WEEKEVENTREG_07_80",
( 7 << 8) | 0x80: "WEEKEVENTREG_ENTERED_WOODFALL_TEMPLE_PRISON",
( 8 << 8) | 0x01: "WEEKEVENTREG_08_01",
( 8 << 8) | 0x02: "WEEKEVENTREG_08_02",
( 8 << 8) | 0x04: "WEEKEVENTREG_08_04",