Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions include/save.h
Original file line number Diff line number Diff line change
Expand Up @@ -576,13 +576,13 @@ typedef enum LinkAge {
#define EVENTCHKINF_DEFEATED_NABOORU_KNUCKLE 0x3C

// EVENTCHKINF 0x40
#define EVENTCHKINF_INDEX_40 EVENTCHKINF_INDEX(EVENTCHKINF_40)
#define EVENTCHKINF_40 0x40
#define EVENTCHKINF_INDEX_OBTAINED_ZELDAS_LETTER EVENTCHKINF_INDEX(EVENTCHKINF_OBTAINED_ZELDAS_LETTER)
#define EVENTCHKINF_OBTAINED_ZELDAS_LETTER 0x40

#define EVENTCHKINF_41 0x41
#define EVENTCHKINF_42 0x42
#define EVENTCHKINF_43 0x43
#define EVENTCHKINF_45 0x45
#define EVENTCHKINF_OBTAINED_MASTER_SWORD 0x45
#define EVENTCHKINF_48 0x48
#define EVENTCHKINF_49 0x49
#define EVENTCHKINF_4A 0x4A
Expand Down Expand Up @@ -621,7 +621,7 @@ typedef enum LinkAge {
#define EVENTCHKINF_BEGAN_BARINADE_BATTLE 0x76
#define EVENTCHKINF_BEGAN_BONGO_BONGO_BATTLE 0x77
#define EVENTCHKINF_BEGAN_GANONDORF_BATTLE 0x78
#define EVENTCHKINF_80 0x80
#define EVENTCHKINF_ZELDA_FLED_CASTLE 0x80
#define EVENTCHKINF_82 0x82
#define EVENTCHKINF_PAID_BACK_KEATON_MASK 0x8C
#define EVENTCHKINF_PAID_BACK_SKULL_MASK 0x8D
Expand Down Expand Up @@ -697,7 +697,7 @@ typedef enum LinkAge {
#define EVENTCHKINF_C4 0xC4
#define EVENTCHKINF_C5 0xC5
#define EVENTCHKINF_C6 0xC6
#define EVENTCHKINF_C7 0xC7
#define EVENTCHKINF_GERUDO_CAUGHT_TOWER_FALL 0xC7 // This flag is mainly used for when first caught by the Gerudo, but Zelda will later purge it for use in the Tower collapse sequence.
#define EVENTCHKINF_C8 0xC8
#define EVENTCHKINF_C9 0xC9

Expand Down
2 changes: 1 addition & 1 deletion src/code/z_actor.c
Original file line number Diff line number Diff line change
Expand Up @@ -5266,7 +5266,7 @@ u32 func_80035BFC(PlayState* play, s16 arg1) {
} else {
retTextId = 0x2010;
}
} else if (Flags_GetEventChkInf(EVENTCHKINF_40)) {
} else if (Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER)) {
retTextId = 0x200F;
} else {
retTextId = 0x200E;
Expand Down
10 changes: 5 additions & 5 deletions src/code/z_demo.c
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ EntranceCutscene sEntranceCutsceneTable[] = {
{ ENTR_INSIDE_GANONS_CASTLE_6, 2, EVENTCHKINF_BF, gLightBarrierCs },
{ ENTR_INSIDE_GANONS_CASTLE_7, 2, EVENTCHKINF_AD, gSpiritBarrierCs },
{ ENTR_SPIRIT_TEMPLE_BOSS_0, 0, EVENTCHKINF_C0, gSpiritBossNabooruKnuckleIntroCs },
{ ENTR_GERUDOS_FORTRESS_17, 0, EVENTCHKINF_C7, gGerudoFortressFirstCaptureCs },
{ ENTR_GERUDOS_FORTRESS_17, 0, EVENTCHKINF_GERUDO_CAUGHT_TOWER_FALL, gGerudoFortressFirstCaptureCs },
{ ENTR_DEATH_MOUNTAIN_CRATER_1, 2, EVENTCHKINF_B9, gDeathMountainCraterIntroCs },
{ ENTR_KOKIRI_FOREST_12, 2, EVENTCHKINF_C6, gKokiriForestDekuSproutPart3Cs },
};
Expand Down Expand Up @@ -672,8 +672,8 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti
gSaveContext.save.info.fw.set = 0;
gSaveContext.respawn[RESPAWN_MODE_TOP].data = 0;

if (!GET_EVENTCHKINF(EVENTCHKINF_45)) {
SET_EVENTCHKINF(EVENTCHKINF_45);
if (!GET_EVENTCHKINF(EVENTCHKINF_OBTAINED_MASTER_SWORD)) {
SET_EVENTCHKINF(EVENTCHKINF_OBTAINED_MASTER_SWORD);
play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0;
play->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.save.cutsceneIndex = CS_INDEX_3;
Expand Down Expand Up @@ -2443,9 +2443,9 @@ void Cutscene_HandleConditionalTriggers(PlayState* play) {
Flags_SetEventChkInf(EVENTCHKINF_C4);
gSaveContext.save.entranceIndex = ENTR_TEMPLE_OF_TIME_0;
gSaveContext.save.cutsceneIndex = CS_INDEX_8;
} else if (!Flags_GetEventChkInf(EVENTCHKINF_C7) &&
} else if (!Flags_GetEventChkInf(EVENTCHKINF_GERUDO_CAUGHT_TOWER_FALL) &&
(gEntranceTable[((void)0, gSaveContext.save.entranceIndex)].sceneId == SCENE_GANON_BOSS)) {
Flags_SetEventChkInf(EVENTCHKINF_C7);
Flags_SetEventChkInf(EVENTCHKINF_GERUDO_CAUGHT_TOWER_FALL);
gSaveContext.save.entranceIndex = ENTR_GANON_BOSS_0;
gSaveContext.save.cutsceneIndex = CS_INDEX_0;
}
Expand Down
10 changes: 5 additions & 5 deletions src/code/z_sram.c
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,7 @@ void Sram_InitDebugSave(void) {
EVENTCHKINF_MASK(EVENTCHKINF_SARIA_WAS_TOLD_ABOUT_MIDO) | EVENTCHKINF_MASK(EVENTCHKINF_04) |
EVENTCHKINF_MASK(EVENTCHKINF_05) | EVENTCHKINF_MASK(EVENTCHKINF_09) | EVENTCHKINF_MASK(EVENTCHKINF_0C);

SET_EVENTCHKINF(EVENTCHKINF_80);
SET_EVENTCHKINF(EVENTCHKINF_ZELDA_FLED_CASTLE);
SET_EVENTCHKINF(EVENTCHKINF_C4);

if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
Expand Down Expand Up @@ -562,10 +562,10 @@ void Sram_OpenSave(SramContext* sramCtx) {
}

// if zelda cutscene has been watched but lullaby was not obtained, restore cutscene and take away letter
if (GET_EVENTCHKINF(EVENTCHKINF_40) && !CHECK_QUEST_ITEM(QUEST_SONG_LULLABY)) {
i = gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_40];
i &= ~EVENTCHKINF_MASK(EVENTCHKINF_40);
gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_40] = i;
if (GET_EVENTCHKINF(EVENTCHKINF_OBTAINED_ZELDAS_LETTER) && !CHECK_QUEST_ITEM(QUEST_SONG_LULLABY)) {
i = gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_OBTAINED_ZELDAS_LETTER];
i &= ~EVENTCHKINF_MASK(EVENTCHKINF_OBTAINED_ZELDAS_LETTER);
gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_OBTAINED_ZELDAS_LETTER] = i;

INV_CONTENT(ITEM_ZELDAS_LETTER) = ITEM_CHICKEN;

Expand Down
6 changes: 3 additions & 3 deletions src/elf_message/elf_message_field.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@ QuestHintCmd gOverworldNaviQuestHints[] = {
QUEST_HINT_FLAG(CHECK, EVENTCHKINF_09, false, 0x41),
QUEST_HINT_FLAG(CHECK, EVENTCHKINF_RECEIVED_WEIRD_EGG, false, 0x42),
QUEST_HINT_FLAG(CHECK, EVENTCHKINF_TALON_RETURNED_FROM_CASTLE, false, 0x43),
QUEST_HINT_FLAG(CHECK, EVENTCHKINF_40, false, 0x44),
QUEST_HINT_FLAG(CHECK, EVENTCHKINF_OBTAINED_ZELDAS_LETTER, false, 0x44),
QUEST_HINT_SONG(CHECK, ITEM_SONG_SARIA, false, 0x45),
QUEST_HINT_STRENGTH_UPG(CHECK, 0, true, 0x46),
QUEST_HINT_FLAG(CHECK, EVENTCHKINF_25, false, 0x47),
QUEST_HINT_MAGIC(CHECK, false, 0x48),
QUEST_HINT_FLAG(CHECK, EVENTCHKINF_GAVE_LETTER_TO_KING_ZORA, false, 0x49),
QUEST_HINT_FLAG(CHECK, EVENTCHKINF_37, false, 0x4A),
QUEST_HINT_FLAG(CHECK, EVENTCHKINF_80, false, 0x4B),
QUEST_HINT_FLAG(CHECK, EVENTCHKINF_ZELDA_FLED_CASTLE, false, 0x4B),
QUEST_HINT_FLAG(CHECK, EVENTCHKINF_43, false, 0x4C),
QUEST_HINT_FLAG(CHECK, EVENTCHKINF_45, false, 0x4D),
QUEST_HINT_FLAG(CHECK, EVENTCHKINF_OBTAINED_MASTER_SWORD, false, 0x4D),
QUEST_HINT_ITEM(CHECK, ITEM_HOOKSHOT, ITEM_NONE, true, 0x4E),
QUEST_HINT_MEDALLION(CHECK, ITEM_MEDALLION_FOREST, false, 0x50),
QUEST_HINT_MEDALLION(CHECK, ITEM_MEDALLION_FIRE, false, 0x51),
Expand Down
3 changes: 2 additions & 1 deletion src/overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ void BgGateShutter_Init(Actor* thisx, PlayState* play) {
this->somePos.x = thisx->world.pos.x;
this->somePos.y = thisx->world.pos.y;
this->somePos.z = thisx->world.pos.z;
if ((GET_INFTABLE(INFTABLE_76) || GET_EVENTCHKINF(EVENTCHKINF_45)) && (play->sceneId == SCENE_KAKARIKO_VILLAGE)) {
if ((GET_INFTABLE(INFTABLE_76) || GET_EVENTCHKINF(EVENTCHKINF_OBTAINED_MASTER_SWORD)) &&
(play->sceneId == SCENE_KAKARIKO_VILLAGE)) {
thisx->world.pos.x = -89.0f;
thisx->world.pos.z = -1375.0f;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ void BgSpot00Hanebasi_Init(Actor* thisx, PlayState* play) {

if (gSaveContext.sceneLayer != 6) {
if (CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD) && CHECK_QUEST_ITEM(QUEST_GORON_RUBY) &&
CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE) && !GET_EVENTCHKINF(EVENTCHKINF_80)) {
CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE) && !GET_EVENTCHKINF(EVENTCHKINF_ZELDA_FLED_CASTLE)) {
this->dyna.actor.shape.rot.x = -0x4000;
}
}
Expand Down Expand Up @@ -152,7 +152,7 @@ void BgSpot00Hanebasi_DrawbridgeWait(BgSpot00Hanebasi* this, PlayState* play) {
BgSpot00Hanebasi* child = (BgSpot00Hanebasi*)this->dyna.actor.child;

if (!IS_CUTSCENE_LAYER && CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD) && CHECK_QUEST_ITEM(QUEST_GORON_RUBY) &&
CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE) && !GET_EVENTCHKINF(EVENTCHKINF_80)) {
CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE) && !GET_EVENTCHKINF(EVENTCHKINF_ZELDA_FLED_CASTLE)) {
return;
}

Expand Down Expand Up @@ -220,13 +220,14 @@ void BgSpot00Hanebasi_Update(Actor* thisx, PlayState* play) {
if (this->dyna.actor.params == DT_DRAWBRIDGE) {
if (play->sceneId == SCENE_HYRULE_FIELD) {
if (CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD) && CHECK_QUEST_ITEM(QUEST_GORON_RUBY) &&
CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE) && !GET_EVENTCHKINF(EVENTCHKINF_80) && LINK_IS_CHILD) {
CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE) && !GET_EVENTCHKINF(EVENTCHKINF_ZELDA_FLED_CASTLE) &&
LINK_IS_CHILD) {
player = GET_PLAYER(play);

if ((player->actor.world.pos.x > -450.0f) && (player->actor.world.pos.x < 450.0f) &&
(player->actor.world.pos.z > 1080.0f) && (player->actor.world.pos.z < 1700.0f) &&
(!(Play_InCsMode(play)))) {
SET_EVENTCHKINF(EVENTCHKINF_80);
SET_EVENTCHKINF(EVENTCHKINF_ZELDA_FLED_CASTLE);
Flags_SetEventChkInf(EVENTCHKINF_82);
this->actionFunc = BgSpot00Hanebasi_DoNothing;
Player_SetCsActionWithHaltedActors(play, &player->actor, PLAYER_CSACTION_8);
Expand Down
6 changes: 3 additions & 3 deletions src/overlays/actors/ovl_Demo_Im/z_demo_im.c
Original file line number Diff line number Diff line change
Expand Up @@ -921,7 +921,7 @@ void func_80986BE4(DemoIm* this, s32 arg1) {
}

void func_80986BF8(DemoIm* this, PlayState* play) {
if (GET_EVENTCHKINF(EVENTCHKINF_40)) {
if (GET_EVENTCHKINF(EVENTCHKINF_OBTAINED_ZELDAS_LETTER)) {
this->action = 24;
this->drawConfig = 1;
this->unk_280 = 1;
Expand All @@ -942,7 +942,7 @@ void func_80986C30(DemoIm* this, PlayState* play) {
}

void func_80986CC8(DemoIm* this) {
if (GET_EVENTCHKINF(EVENTCHKINF_40)) {
if (GET_EVENTCHKINF(EVENTCHKINF_OBTAINED_ZELDAS_LETTER)) {
this->action = 26;
this->drawConfig = 1;
this->unk_280 = 1;
Expand All @@ -966,7 +966,7 @@ void func_80986D40(DemoIm* this, PlayState* play) {
}
#endif

if (GET_EVENTCHKINF(EVENTCHKINF_80)) {
if (GET_EVENTCHKINF(EVENTCHKINF_ZELDA_FLED_CASTLE)) {
Actor_Kill(&this->actor);
} else if (!GET_EVENTCHKINF(EVENTCHKINF_59)) {
this->action = 23;
Expand Down
2 changes: 1 addition & 1 deletion src/overlays/actors/ovl_En_Ge1/z_en_ge1.c
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ void EnGe1_KickPlayer(EnGe1* this, PlayState* play) {

if ((INV_CONTENT(ITEM_HOOKSHOT) == ITEM_NONE) || (INV_CONTENT(ITEM_LONGSHOT) == ITEM_NONE)) {
play->nextEntranceIndex = ENTR_GERUDO_VALLEY_1;
} else if (GET_EVENTCHKINF(EVENTCHKINF_C7)) { // Caught previously
} else if (GET_EVENTCHKINF(EVENTCHKINF_GERUDO_CAUGHT_TOWER_FALL)) { // Caught previously
play->nextEntranceIndex = ENTR_GERUDOS_FORTRESS_18;
} else {
play->nextEntranceIndex = ENTR_GERUDOS_FORTRESS_17;
Expand Down
4 changes: 2 additions & 2 deletions src/overlays/actors/ovl_En_Ge2/z_en_ge2.c
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ void EnGe2_CaptureClose(EnGe2* this, PlayState* play) {

if ((INV_CONTENT(ITEM_HOOKSHOT) == ITEM_NONE) || (INV_CONTENT(ITEM_LONGSHOT) == ITEM_NONE)) {
play->nextEntranceIndex = ENTR_GERUDO_VALLEY_1;
} else if (GET_EVENTCHKINF(EVENTCHKINF_C7)) {
} else if (GET_EVENTCHKINF(EVENTCHKINF_GERUDO_CAUGHT_TOWER_FALL)) {
play->nextEntranceIndex = ENTR_GERUDOS_FORTRESS_18;
} else {
play->nextEntranceIndex = ENTR_GERUDOS_FORTRESS_17;
Expand All @@ -281,7 +281,7 @@ void EnGe2_CaptureCharge(EnGe2* this, PlayState* play) {

if ((INV_CONTENT(ITEM_HOOKSHOT) == ITEM_NONE) || (INV_CONTENT(ITEM_LONGSHOT) == ITEM_NONE)) {
play->nextEntranceIndex = ENTR_GERUDO_VALLEY_1;
} else if (GET_EVENTCHKINF(EVENTCHKINF_C7)) {
} else if (GET_EVENTCHKINF(EVENTCHKINF_GERUDO_CAUGHT_TOWER_FALL)) {
play->nextEntranceIndex = ENTR_GERUDOS_FORTRESS_18;
} else {
play->nextEntranceIndex = ENTR_GERUDOS_FORTRESS_17;
Expand Down
2 changes: 1 addition & 1 deletion src/overlays/actors/ovl_En_GeldB/z_en_geldb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1597,7 +1597,7 @@ void EnGeldB_Draw(Actor* thisx, PlayState* play) {
if (this->timer == 0) {
if ((INV_CONTENT(ITEM_HOOKSHOT) == ITEM_NONE) || (INV_CONTENT(ITEM_LONGSHOT) == ITEM_NONE)) {
play->nextEntranceIndex = ENTR_GERUDO_VALLEY_1;
} else if (GET_EVENTCHKINF(EVENTCHKINF_C7)) {
} else if (GET_EVENTCHKINF(EVENTCHKINF_GERUDO_CAUGHT_TOWER_FALL)) {
play->nextEntranceIndex = ENTR_GERUDOS_FORTRESS_18;
} else {
play->nextEntranceIndex = ENTR_GERUDOS_FORTRESS_17;
Expand Down
6 changes: 4 additions & 2 deletions src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.c
Original file line number Diff line number Diff line change
Expand Up @@ -136,13 +136,15 @@ void EnHeishi1_Init(Actor* thisx, PlayState* play2) {
}

if (this->type != 5) {
if (((gSaveContext.save.dayTime < CLOCK_TIME(17, 18) - 1) || IS_DAY) && !GET_EVENTCHKINF(EVENTCHKINF_80)) {
if (((gSaveContext.save.dayTime < CLOCK_TIME(17, 18) - 1) || IS_DAY) &&
!GET_EVENTCHKINF(EVENTCHKINF_ZELDA_FLED_CASTLE)) {
this->actionFunc = EnHeishi1_SetupWalk;
} else {
Actor_Kill(&this->actor);
}
} else {
if ((gSaveContext.save.dayTime > CLOCK_TIME(17, 18) - 1) || !IS_DAY || GET_EVENTCHKINF(EVENTCHKINF_80)) {
if ((gSaveContext.save.dayTime > CLOCK_TIME(17, 18) - 1) || !IS_DAY ||
GET_EVENTCHKINF(EVENTCHKINF_ZELDA_FLED_CASTLE)) {
this->actionFunc = EnHeishi1_SetupWaitNight;
} else {
Actor_Kill(&this->actor);
Expand Down
8 changes: 4 additions & 4 deletions src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,12 +146,12 @@ void func_80A563BC(EnHeishi4* this, PlayState* play) {
this->unk_2B4 = 1;
this->actionFunc = func_80A56B40;
} else {
if (GET_EVENTCHKINF(EVENTCHKINF_80)) {
if (GET_EVENTCHKINF(EVENTCHKINF_ZELDA_FLED_CASTLE)) {
this->actor.textId = 0x5065;
this->actionFunc = func_80A56B40;
return;
}
if (GET_EVENTCHKINF(EVENTCHKINF_45)) {
if (GET_EVENTCHKINF(EVENTCHKINF_OBTAINED_MASTER_SWORD)) {
this->actor.textId = 0x5068;
this->actionFunc = func_80A56B40;
return;
Expand Down Expand Up @@ -229,14 +229,14 @@ void func_80A56614(EnHeishi4* this, PlayState* play) {
void func_80A5673C(EnHeishi4* this, PlayState* play) {
f32 frames;

if (GET_EVENTCHKINF(EVENTCHKINF_45)) {
if (GET_EVENTCHKINF(EVENTCHKINF_OBTAINED_MASTER_SWORD)) {
PRINTF(VT_FGCOL(YELLOW) T(" ☆☆☆☆☆ マスターソード祝入手! ☆☆☆☆☆ \n",
" ☆☆☆☆☆ Congratulations on obtaining the Master Sword! ☆☆☆☆☆ \n") VT_RST);
Actor_Kill(&this->actor);
return;
}
this->unk_284 = 0;
if (GET_EVENTCHKINF(EVENTCHKINF_80)) {
if (GET_EVENTCHKINF(EVENTCHKINF_ZELDA_FLED_CASTLE)) {
if (!GET_INFTABLE(INFTABLE_6C)) {
frames = Animation_GetLastFrame(&gEnHeishiDyingGuardAnim_00C444);
Animation_Change(&this->skelAnime, &gEnHeishiDyingGuardAnim_00C444, 1.0f, 0.0f, (s16)frames, ANIMMODE_LOOP,
Expand Down
Loading