1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-05 23:44:53 +00:00

Introduce DEFINE_ENTRANCE for entrance table and create entrance enum (#1213)

* entrance table OK

* entrance enum fixed

* most entrances using enum, still need to do conditionals

* more entrances

* entrance_table.h cleanups

* some review

* remove _0 from first entrance in a group of setups

* change table description

* typo

* wens spellcheck in vscode

* remove extra line
This commit is contained in:
fig02 2022-05-09 13:45:53 -04:00 committed by GitHub
parent 95b4317931
commit 2efd00863a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
43 changed files with 2478 additions and 2231 deletions

View file

@ -5550,7 +5550,8 @@ s32 func_80038154(GlobalContext* globalCtx, Actor* actor, Vec3s* arg2, Vec3s* ar
actor->focus.pos = actor->world.pos;
actor->focus.pos.y += arg4;
if (!(((globalCtx->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) && (gSaveContext.entranceIndex == 0x00EE))) {
if (!(((globalCtx->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) &&
(gSaveContext.entranceIndex == ENTR_SPOT04_0))) {
var = actor->yawTowardsPlayer - actor->shape.rot.y;
abs_var = ABS(var);
if (abs_var >= 0x4300) {
@ -5559,7 +5560,8 @@ s32 func_80038154(GlobalContext* globalCtx, Actor* actor, Vec3s* arg2, Vec3s* ar
}
}
if (((globalCtx->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) && (gSaveContext.entranceIndex == 0x00EE)) {
if (((globalCtx->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) &&
(gSaveContext.entranceIndex == ENTR_SPOT04_0)) {
sp2C = globalCtx->view.eye;
} else {
sp2C = player->actor.focus.pos;
@ -5579,7 +5581,8 @@ s32 func_80038290(GlobalContext* globalCtx, Actor* actor, Vec3s* arg2, Vec3s* ar
actor->focus.pos = arg4;
if (!(((globalCtx->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) && (gSaveContext.entranceIndex == 0x00EE))) {
if (!(((globalCtx->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) &&
(gSaveContext.entranceIndex == ENTR_SPOT04_0))) {
var = actor->yawTowardsPlayer - actor->shape.rot.y;
abs_var = ABS(var);
if (abs_var >= 0x4300) {
@ -5588,7 +5591,8 @@ s32 func_80038290(GlobalContext* globalCtx, Actor* actor, Vec3s* arg2, Vec3s* ar
}
}
if (((globalCtx->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) && (gSaveContext.entranceIndex == 0x00EE)) {
if (((globalCtx->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) &&
(gSaveContext.entranceIndex == ENTR_SPOT04_0)) {
sp24 = globalCtx->view.eye;
} else {
sp24 = player->actor.focus.pos;

View file

@ -52,40 +52,40 @@ CutsceneStateHandler sCsStateHandlers2[] = {
u8 sTitleCsState = 0;
EntranceCutscene sEntranceCutsceneTable[] = {
{ 0x0185, 2, EVENTCHKINF_A0, gHyruleFieldIntroCs },
{ 0x013D, 2, EVENTCHKINF_A1, gDMTIntroCs },
{ 0x00DB, 2, EVENTCHKINF_A3, gKakarikoVillageIntroCs },
{ 0x0108, 2, EVENTCHKINF_A4, gZorasDomainIntroCs },
{ 0x0138, 1, EVENTCHKINF_A5, gHyruleCastleIntroCs },
{ 0x014D, 2, EVENTCHKINF_A6, gGoronCityIntroCs },
{ 0x0053, 2, EVENTCHKINF_A7, gTempleOfTimeIntroCs },
{ 0x0000, 2, EVENTCHKINF_A8, gDekuTreeIntroCs },
{ 0x028A, 0, EVENTCHKINF_18, gHyruleFieldSouthEponaJumpCs },
{ 0x0292, 0, EVENTCHKINF_18, gHyruleFieldEastEponaJumpCs },
{ 0x028E, 0, EVENTCHKINF_18, gHyruleFieldWestEponaJumpCs },
{ 0x0476, 0, EVENTCHKINF_18, gHyruleFieldGateEponaJumpCs },
{ 0x050F, 1, EVENTCHKINF_A9, gHyruleFieldGetOoTCs },
{ 0x0102, 2, EVENTCHKINF_B1, gLakeHyliaIntroCs },
{ 0x0117, 2, EVENTCHKINF_B2, gGerudoValleyIntroCs },
{ 0x0129, 2, EVENTCHKINF_B3, gGerudoFortressIntroCs },
{ 0x0157, 2, EVENTCHKINF_B4, gLonLonRanchIntroCs },
{ 0x0028, 2, EVENTCHKINF_B5, gJabuJabuIntroCs },
{ 0x00E4, 2, EVENTCHKINF_B6, gGraveyardIntroCs },
{ 0x0225, 2, EVENTCHKINF_B7, gZorasFountainIntroCs },
{ 0x0123, 2, EVENTCHKINF_B8, gDesertColossusIntroCs },
{ 0x0147, 2, EVENTCHKINF_B9, gDeathMountainCraterIntroCs },
{ 0x0138, 0, EVENTCHKINF_BA, gGanonsCastleIntroCs },
{ 0x0574, 2, EVENTCHKINF_5A, gSunSongGraveSunSongTeachPart2Cs },
{ 0x0538, 2, EVENTCHKINF_BB, gForestBarrierCs },
{ 0x053C, 2, EVENTCHKINF_BC, gWaterBarrierCs },
{ 0x0540, 2, EVENTCHKINF_BD, gShadowBarrierCs },
{ 0x0544, 2, EVENTCHKINF_BE, gFireBarrierCs },
{ 0x0548, 2, EVENTCHKINF_BF, gLightBarrierCs },
{ 0x054C, 2, EVENTCHKINF_AD, gSpiritBarrierCs },
{ 0x008D, 0, EVENTCHKINF_C0, gSpiritBossNabooruKnuckleIntroCs },
{ 0x03B4, 0, EVENTCHKINF_C7, gGerudoFortressFirstCaptureCs },
{ 0x0246, 2, EVENTCHKINF_B9, gDeathMountainCraterIntroCs },
{ 0x05E8, 2, EVENTCHKINF_C6, gKokiriForestDekuSproutCs },
{ ENTR_SPOT00_3, 2, EVENTCHKINF_A0, gHyruleFieldIntroCs },
{ ENTR_SPOT16_0, 2, EVENTCHKINF_A1, gDMTIntroCs },
{ ENTR_SPOT01_0, 2, EVENTCHKINF_A3, gKakarikoVillageIntroCs },
{ ENTR_SPOT07_0, 2, EVENTCHKINF_A4, gZorasDomainIntroCs },
{ ENTR_SPOT15_0, 1, EVENTCHKINF_A5, gHyruleCastleIntroCs },
{ ENTR_SPOT18_0, 2, EVENTCHKINF_A6, gGoronCityIntroCs },
{ ENTR_TOKINOMA_0, 2, EVENTCHKINF_A7, gTempleOfTimeIntroCs },
{ ENTR_YDAN_0, 2, EVENTCHKINF_A8, gDekuTreeIntroCs },
{ ENTR_SPOT00_11, 0, EVENTCHKINF_18, gHyruleFieldSouthEponaJumpCs },
{ ENTR_SPOT00_13, 0, EVENTCHKINF_18, gHyruleFieldEastEponaJumpCs },
{ ENTR_SPOT00_12, 0, EVENTCHKINF_18, gHyruleFieldWestEponaJumpCs },
{ ENTR_SPOT00_15, 0, EVENTCHKINF_18, gHyruleFieldGateEponaJumpCs },
{ ENTR_SPOT00_16, 1, EVENTCHKINF_A9, gHyruleFieldGetOoTCs },
{ ENTR_SPOT06_0, 2, EVENTCHKINF_B1, gLakeHyliaIntroCs },
{ ENTR_SPOT09_0, 2, EVENTCHKINF_B2, gGerudoValleyIntroCs },
{ ENTR_SPOT12_0, 2, EVENTCHKINF_B3, gGerudoFortressIntroCs },
{ ENTR_SPOT20_0, 2, EVENTCHKINF_B4, gLonLonRanchIntroCs },
{ ENTR_BDAN_0, 2, EVENTCHKINF_B5, gJabuJabuIntroCs },
{ ENTR_SPOT02_0, 2, EVENTCHKINF_B6, gGraveyardIntroCs },
{ ENTR_SPOT08_2, 2, EVENTCHKINF_B7, gZorasFountainIntroCs },
{ ENTR_SPOT11_0, 2, EVENTCHKINF_B8, gDesertColossusIntroCs },
{ ENTR_SPOT17_0, 2, EVENTCHKINF_B9, gDeathMountainCraterIntroCs },
{ ENTR_SPOT15_0, 0, EVENTCHKINF_BA, gGanonsCastleIntroCs },
{ ENTR_HAKAANA_OUKE_1, 2, EVENTCHKINF_5A, gSunSongGraveSunSongTeachPart2Cs },
{ ENTR_GANONTIKA_2, 2, EVENTCHKINF_BB, gForestBarrierCs },
{ ENTR_GANONTIKA_3, 2, EVENTCHKINF_BC, gWaterBarrierCs },
{ ENTR_GANONTIKA_4, 2, EVENTCHKINF_BD, gShadowBarrierCs },
{ ENTR_GANONTIKA_5, 2, EVENTCHKINF_BE, gFireBarrierCs },
{ ENTR_GANONTIKA_6, 2, EVENTCHKINF_BF, gLightBarrierCs },
{ ENTR_GANONTIKA_7, 2, EVENTCHKINF_AD, gSpiritBarrierCs },
{ ENTR_JYASINBOSS_0, 0, EVENTCHKINF_C0, gSpiritBossNabooruKnuckleIntroCs },
{ ENTR_SPOT12_17, 0, EVENTCHKINF_C7, gGerudoFortressFirstCaptureCs },
{ ENTR_SPOT17_1, 2, EVENTCHKINF_B9, gDeathMountainCraterIntroCs },
{ ENTR_SPOT04_12, 2, EVENTCHKINF_C6, gKokiriForestDekuSproutCs },
};
// Unused, seems to be an early list of dungeon entrance cutscene locations
@ -242,7 +242,7 @@ void func_80064824(GlobalContext* globalCtx, CutsceneContext* csCtx, CsCmdBase*
case 3:
if (sp3F != 0) {
Flags_SetEnv(globalCtx, 0);
if (gSaveContext.entranceIndex == 0x0053) {
if (gSaveContext.entranceIndex == ENTR_TOKINOMA_0) {
Flags_SetEnv(globalCtx, 2);
}
}
@ -517,43 +517,43 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
switch (cmd->base) {
case 1:
globalCtx->nextEntranceIndex = 0x00A0;
globalCtx->nextEntranceIndex = ENTR_HIRAL_DEMO_0;
gSaveContext.cutsceneIndex = 0xFFF1;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 2:
globalCtx->nextEntranceIndex = 0x00A0;
globalCtx->nextEntranceIndex = ENTR_HIRAL_DEMO_0;
gSaveContext.cutsceneIndex = 0xFFF0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FILL_WHITE;
break;
case 3:
globalCtx->nextEntranceIndex = 0x0117;
globalCtx->nextEntranceIndex = ENTR_SPOT09_0;
gSaveContext.cutsceneIndex = 0xFFF1;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FILL_WHITE;
break;
case 4:
globalCtx->nextEntranceIndex = 0x013D;
globalCtx->nextEntranceIndex = ENTR_SPOT16_0;
gSaveContext.cutsceneIndex = 0xFFF0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FILL_WHITE;
break;
case 5:
globalCtx->nextEntranceIndex = 0x00EE;
globalCtx->nextEntranceIndex = ENTR_SPOT04_0;
gSaveContext.cutsceneIndex = 0xFFF0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FILL_WHITE;
break;
case 6:
globalCtx->nextEntranceIndex = 0x00A0;
globalCtx->nextEntranceIndex = ENTR_HIRAL_DEMO_0;
gSaveContext.cutsceneIndex = 0xFFF2;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FILL_WHITE;
break;
case 7:
globalCtx->nextEntranceIndex = 0x00EE;
globalCtx->nextEntranceIndex = ENTR_SPOT04_0;
gSaveContext.cutsceneIndex = 0xFFF2;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_INSTANT;
@ -563,7 +563,7 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
gSaveContext.respawn[RESPAWN_MODE_TOP].data = 0;
if (!GET_EVENTCHKINF(EVENTCHKINF_45)) {
SET_EVENTCHKINF(EVENTCHKINF_45);
globalCtx->nextEntranceIndex = 0x00A0;
globalCtx->nextEntranceIndex = ENTR_HIRAL_DEMO_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF3;
globalCtx->transitionType = TRANS_TYPE_INSTANT;
@ -575,253 +575,253 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
globalCtx->linkAgeOnLoad = LINK_AGE_CHILD;
}
}
globalCtx->nextEntranceIndex = 0x02CA;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_2;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE;
}
break;
case 9:
globalCtx->nextEntranceIndex = 0x0117;
globalCtx->nextEntranceIndex = ENTR_SPOT09_0;
gSaveContext.cutsceneIndex = 0xFFF0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FILL_BROWN;
break;
case 10:
globalCtx->nextEntranceIndex = 0x00BB;
globalCtx->nextEntranceIndex = ENTR_LINK_HOME_0;
gSaveContext.cutsceneIndex = 0xFFF0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 11:
globalCtx->nextEntranceIndex = 0x00EE;
globalCtx->nextEntranceIndex = ENTR_SPOT04_0;
gSaveContext.cutsceneIndex = 0xFFF3;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 12:
globalCtx->nextEntranceIndex = 0x047A;
globalCtx->nextEntranceIndex = ENTR_SPOT16_5;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 13:
globalCtx->nextEntranceIndex = 0x010E;
globalCtx->nextEntranceIndex = ENTR_SPOT08_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK;
break;
case 14:
globalCtx->nextEntranceIndex = 0x0457;
globalCtx->nextEntranceIndex = ENTR_SPOT04_11;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 15:
globalCtx->nextEntranceIndex = 0x0053;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF4;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 16:
globalCtx->nextEntranceIndex = 0x0053;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF5;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 17:
globalCtx->nextEntranceIndex = 0x0053;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF6;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 18:
SET_EVENTCHKINF(EVENTCHKINF_4F);
globalCtx->nextEntranceIndex = 0x0324;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_4;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK;
break;
case 19:
globalCtx->nextEntranceIndex = 0x013D;
globalCtx->nextEntranceIndex = ENTR_SPOT16_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
gSaveContext.cutsceneIndex = 0x8000;
break;
case 21:
globalCtx->nextEntranceIndex = 0x0102;
globalCtx->nextEntranceIndex = ENTR_SPOT06_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF0;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 22:
Item_Give(globalCtx, ITEM_SONG_REQUIEM);
globalCtx->nextEntranceIndex = 0x0123;
globalCtx->nextEntranceIndex = ENTR_SPOT11_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF0;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 23:
globalCtx->nextEntranceIndex = 0x00A0;
globalCtx->nextEntranceIndex = ENTR_HIRAL_DEMO_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF8;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 24:
globalCtx->nextEntranceIndex = 0x0028;
globalCtx->nextEntranceIndex = ENTR_BDAN_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 25:
globalCtx->linkAgeOnLoad = LINK_AGE_ADULT;
globalCtx->nextEntranceIndex = 0x006B;
globalCtx->nextEntranceIndex = ENTR_KENJYANOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF0;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 26:
globalCtx->nextEntranceIndex = 0x0053;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF4;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 27:
globalCtx->nextEntranceIndex = 0x0053;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF5;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 28:
globalCtx->nextEntranceIndex = 0x0053;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF6;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 29:
globalCtx->nextEntranceIndex = 0x006B;
globalCtx->nextEntranceIndex = ENTR_KENJYANOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.chamberCutsceneNum = 0;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 30:
globalCtx->nextEntranceIndex = 0x006B;
globalCtx->nextEntranceIndex = ENTR_KENJYANOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
Item_Give(globalCtx, ITEM_MEDALLION_FIRE);
gSaveContext.chamberCutsceneNum = 1;
break;
case 31:
globalCtx->nextEntranceIndex = 0x006B;
globalCtx->nextEntranceIndex = ENTR_KENJYANOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
gSaveContext.chamberCutsceneNum = 2;
break;
case 32:
globalCtx->linkAgeOnLoad = LINK_AGE_CHILD;
globalCtx->nextEntranceIndex = 0x00CD;
globalCtx->nextEntranceIndex = ENTR_SPOT00_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF2;
globalCtx->transitionType = TRANS_TYPE_INSTANT;
break;
case 33:
globalCtx->nextEntranceIndex = 0x00CD;
globalCtx->nextEntranceIndex = ENTR_SPOT00_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 34:
globalCtx->nextEntranceIndex = 0x00A0;
globalCtx->nextEntranceIndex = ENTR_HIRAL_DEMO_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF3;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 35:
globalCtx->nextEntranceIndex = 0x00CD;
globalCtx->nextEntranceIndex = ENTR_SPOT00_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF0;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
break;
case 38:
globalCtx->nextEntranceIndex = 0x00A0;
globalCtx->nextEntranceIndex = ENTR_HIRAL_DEMO_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF4;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
break;
case 39:
globalCtx->nextEntranceIndex = 0x0053;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF9;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
break;
case 40:
globalCtx->linkAgeOnLoad = LINK_AGE_ADULT;
globalCtx->nextEntranceIndex = 0x0053;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFFA;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
break;
case 41:
globalCtx->nextEntranceIndex = 0x04E6;
globalCtx->nextEntranceIndex = ENTR_SPOT06_5;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 42:
globalCtx->nextEntranceIndex = 0x00DB;
globalCtx->nextEntranceIndex = ENTR_SPOT01_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF2;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
break;
case 43:
globalCtx->nextEntranceIndex = 0x0503;
globalCtx->nextEntranceIndex = ENTR_HAKASITARELAY_2;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
break;
case 44:
globalCtx->nextEntranceIndex = 0x0320;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_3;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE_INSTANT;
break;
case 46:
SET_EVENTCHKINF(EVENTCHKINF_4F);
globalCtx->nextEntranceIndex = 0x0324;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_4;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
break;
case 47:
Item_Give(globalCtx, ITEM_SONG_NOCTURNE);
SET_EVENTCHKINF(EVENTCHKINF_54);
globalCtx->nextEntranceIndex = 0x00DB;
globalCtx->nextEntranceIndex = ENTR_SPOT01_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF1;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
break;
case 48:
globalCtx->nextEntranceIndex = 0x01ED;
globalCtx->nextEntranceIndex = ENTR_SPOT11_4;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_SANDSTORM_END;
gSaveContext.nextTransitionType = TRANS_TYPE_SANDSTORM_END;
break;
case 49:
globalCtx->nextEntranceIndex = 0x058C;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_5;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
break;
case 50:
globalCtx->nextEntranceIndex = 0x0513;
globalCtx->nextEntranceIndex = ENTR_SPOT01_13;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE_INSTANT;
break;
case 51:
globalCtx->nextEntranceIndex = 0x00CD;
globalCtx->nextEntranceIndex = ENTR_SPOT00_0;
gSaveContext.cutsceneIndex = 0xFFF8;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_NORMAL, TCC_WHITE, TCS_SLOW);
break;
case 52:
globalCtx->nextEntranceIndex = 0x0053;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_0;
gSaveContext.cutsceneIndex = 0xFFF7;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_INSTANT;
break;
case 53:
globalCtx->nextEntranceIndex = 0x050F;
globalCtx->nextEntranceIndex = ENTR_SPOT00_16;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
@ -829,102 +829,102 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
gSaveContext.gameMode = 3;
Audio_SetSoundBanksMute(0x6F);
globalCtx->linkAgeOnLoad = LINK_AGE_CHILD;
globalCtx->nextEntranceIndex = 0x0117;
globalCtx->nextEntranceIndex = ENTR_SPOT09_0;
gSaveContext.cutsceneIndex = 0xFFF2;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 55:
globalCtx->nextEntranceIndex = 0x0129;
globalCtx->nextEntranceIndex = ENTR_SPOT12_0;
gSaveContext.cutsceneIndex = 0xFFF1;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 56:
globalCtx->nextEntranceIndex = 0x00DB;
globalCtx->nextEntranceIndex = ENTR_SPOT01_0;
gSaveContext.cutsceneIndex = 0xFFF4;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 57:
globalCtx->nextEntranceIndex = 0x013D;
globalCtx->nextEntranceIndex = ENTR_SPOT16_0;
gSaveContext.cutsceneIndex = 0xFFF3;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 58:
globalCtx->nextEntranceIndex = 0x014D;
globalCtx->nextEntranceIndex = ENTR_SPOT18_0;
gSaveContext.cutsceneIndex = 0xFFF1;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 59:
globalCtx->nextEntranceIndex = 0x0102;
globalCtx->nextEntranceIndex = ENTR_SPOT06_0;
gSaveContext.cutsceneIndex = 0xFFF1;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 60:
globalCtx->nextEntranceIndex = 0x010E;
globalCtx->nextEntranceIndex = ENTR_SPOT08_0;
gSaveContext.cutsceneIndex = 0xFFF2;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 61:
globalCtx->nextEntranceIndex = 0x0108;
globalCtx->nextEntranceIndex = ENTR_SPOT07_0;
gSaveContext.cutsceneIndex = 0xFFF0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 62:
globalCtx->linkAgeOnLoad = LINK_AGE_ADULT;
globalCtx->nextEntranceIndex = 0x00EE;
globalCtx->nextEntranceIndex = ENTR_SPOT04_0;
gSaveContext.cutsceneIndex = 0xFFF6;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 63:
globalCtx->nextEntranceIndex = 0x00EE;
globalCtx->nextEntranceIndex = ENTR_SPOT04_0;
gSaveContext.cutsceneIndex = 0xFFF7;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 64:
globalCtx->nextEntranceIndex = 0x00CD;
globalCtx->nextEntranceIndex = ENTR_SPOT00_0;
gSaveContext.cutsceneIndex = 0xFFF5;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 65:
globalCtx->linkAgeOnLoad = LINK_AGE_CHILD;
globalCtx->nextEntranceIndex = 0x0157;
globalCtx->nextEntranceIndex = ENTR_SPOT20_0;
gSaveContext.cutsceneIndex = 0xFFF2;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 66:
globalCtx->nextEntranceIndex = 0x0554;
globalCtx->nextEntranceIndex = ENTR_SPOT01_14;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 67:
globalCtx->nextEntranceIndex = 0x027E;
globalCtx->nextEntranceIndex = ENTR_SPOT00_9;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 68:
globalCtx->nextEntranceIndex = 0x00A0;
globalCtx->nextEntranceIndex = ENTR_HIRAL_DEMO_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF5;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 69:
globalCtx->nextEntranceIndex = 0x05E8;
globalCtx->nextEntranceIndex = ENTR_SPOT04_12;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 70:
globalCtx->nextEntranceIndex = 0x013D;
globalCtx->nextEntranceIndex = ENTR_SPOT16_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF4;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
@ -936,13 +936,13 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
gSaveContext.equips.equipment |= EQUIP_VALUE_BOOTS_KOKIRI << (EQUIP_TYPE_BOOTS * 4);
Player_SetEquipmentData(globalCtx, player);
globalCtx->linkAgeOnLoad = LINK_AGE_CHILD;
globalCtx->nextEntranceIndex = 0x0053;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF1;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 72:
globalCtx->nextEntranceIndex = 0x0400;
globalCtx->nextEntranceIndex = ENTR_NAKANIWA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF0;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
@ -950,13 +950,13 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
break;
case 73:
globalCtx->linkAgeOnLoad = LINK_AGE_CHILD;
globalCtx->nextEntranceIndex = 0x0157;
globalCtx->nextEntranceIndex = ENTR_SPOT20_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF2;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 74:
globalCtx->nextEntranceIndex = 0x0157;
globalCtx->nextEntranceIndex = ENTR_SPOT20_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF3;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
@ -964,27 +964,27 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
break;
case 75:
globalCtx->linkAgeOnLoad = LINK_AGE_CHILD;
globalCtx->nextEntranceIndex = 0x0157;
globalCtx->nextEntranceIndex = ENTR_SPOT20_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF4;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 76:
globalCtx->linkAgeOnLoad = LINK_AGE_ADULT;
globalCtx->nextEntranceIndex = 0x0157;
globalCtx->nextEntranceIndex = ENTR_SPOT20_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF5;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 77:
globalCtx->linkAgeOnLoad = LINK_AGE_CHILD;
globalCtx->nextEntranceIndex = 0x0157;
globalCtx->nextEntranceIndex = ENTR_SPOT20_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF6;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 78:
globalCtx->nextEntranceIndex = 0x0157;
globalCtx->nextEntranceIndex = ENTR_SPOT20_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF7;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
@ -1004,36 +1004,36 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
case 91:
case 92:
case 93:
globalCtx->nextEntranceIndex = 0x0157;
globalCtx->nextEntranceIndex = ENTR_SPOT20_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 94:
globalCtx->nextEntranceIndex = 0x02AE;
globalCtx->nextEntranceIndex = ENTR_SPOT20_1;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 95:
if (GET_EVENTCHKINF(EVENTCHKINF_48) && GET_EVENTCHKINF(EVENTCHKINF_49) &&
GET_EVENTCHKINF(EVENTCHKINF_4A)) {
globalCtx->nextEntranceIndex = 0x0053;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF3;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
} else {
switch (gSaveContext.sceneSetupIndex) {
case 8:
globalCtx->nextEntranceIndex = 0x00FC;
globalCtx->nextEntranceIndex = ENTR_SPOT05_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 9:
globalCtx->nextEntranceIndex = 0x0147;
globalCtx->nextEntranceIndex = ENTR_SPOT17_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 10:
globalCtx->nextEntranceIndex = 0x0102;
globalCtx->nextEntranceIndex = ENTR_SPOT06_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF0;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
@ -1043,13 +1043,13 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
break;
case 96:
if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW)) {
globalCtx->nextEntranceIndex = 0x006B;
globalCtx->nextEntranceIndex = ENTR_KENJYANOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF1;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE_FAST;
} else {
SET_EVENTCHKINF(EVENTCHKINF_C8);
globalCtx->nextEntranceIndex = 0x0610;
globalCtx->nextEntranceIndex = ENTR_SPOT11_8;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE;
@ -1057,48 +1057,48 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
break;
case 97:
if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) {
globalCtx->nextEntranceIndex = 0x006B;
globalCtx->nextEntranceIndex = ENTR_KENJYANOMA_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF1;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE_FAST;
} else {
globalCtx->nextEntranceIndex = 0x0580;
globalCtx->nextEntranceIndex = ENTR_SPOT02_8;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE;
}
break;
case 98:
globalCtx->nextEntranceIndex = 0x0564;
globalCtx->nextEntranceIndex = ENTR_SPOT17_5;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE;
break;
case 99:
globalCtx->nextEntranceIndex = 0x0608;
globalCtx->nextEntranceIndex = ENTR_SPOT05_3;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK;
break;
case 100:
globalCtx->nextEntranceIndex = 0x00EE;
globalCtx->nextEntranceIndex = ENTR_SPOT04_0;
gSaveContext.cutsceneIndex = 0xFFF8;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE;
break;
case 101:
globalCtx->nextEntranceIndex = 0x01F5;
globalCtx->nextEntranceIndex = ENTR_SPOT11_6;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_SANDSTORM_END;
break;
case 102:
globalCtx->nextEntranceIndex = 0x0590;
globalCtx->nextEntranceIndex = ENTR_TOKINOMA_6;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 103:
globalCtx->nextEntranceIndex = 0x00CD;
globalCtx->nextEntranceIndex = ENTR_SPOT00_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF3;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
@ -1106,21 +1106,21 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
case 104:
switch (sTitleCsState) {
case 0:
globalCtx->nextEntranceIndex = 0x008D;
globalCtx->nextEntranceIndex = ENTR_JYASINBOSS_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF2;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
sTitleCsState++;
break;
case 1:
globalCtx->nextEntranceIndex = 0x0147;
globalCtx->nextEntranceIndex = ENTR_SPOT17_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF1;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
sTitleCsState++;
break;
case 2:
globalCtx->nextEntranceIndex = 0x00A0;
globalCtx->nextEntranceIndex = ENTR_HIRAL_DEMO_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF6;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
@ -1129,43 +1129,43 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
}
break;
case 105:
globalCtx->nextEntranceIndex = 0x00E4;
globalCtx->nextEntranceIndex = ENTR_SPOT02_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.cutsceneIndex = 0xFFF1;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 106:
globalCtx->nextEntranceIndex = 0x0574;
globalCtx->nextEntranceIndex = ENTR_HAKAANA_OUKE_1;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 107:
globalCtx->nextEntranceIndex = 0x0538;
globalCtx->nextEntranceIndex = ENTR_GANONTIKA_2;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 108:
globalCtx->nextEntranceIndex = 0x053C;
globalCtx->nextEntranceIndex = ENTR_GANONTIKA_3;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 109:
globalCtx->nextEntranceIndex = 0x0540;
globalCtx->nextEntranceIndex = ENTR_GANONTIKA_4;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 110:
globalCtx->nextEntranceIndex = 0x0544;
globalCtx->nextEntranceIndex = ENTR_GANONTIKA_5;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 111:
globalCtx->nextEntranceIndex = 0x0548;
globalCtx->nextEntranceIndex = ENTR_GANONTIKA_6;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 112:
globalCtx->nextEntranceIndex = 0x054C;
globalCtx->nextEntranceIndex = ENTR_GANONTIKA_7;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
@ -1184,23 +1184,23 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
}
break;
case 114:
globalCtx->nextEntranceIndex = 0x0185;
globalCtx->nextEntranceIndex = ENTR_SPOT00_3;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
break;
case 115:
globalCtx->nextEntranceIndex = 0x0594;
globalCtx->nextEntranceIndex = ENTR_SPOT00_17;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK;
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK;
break;
case 116:
if (GET_EVENTCHKINF(EVENTCHKINF_C8)) {
globalCtx->nextEntranceIndex = 0x0580;
globalCtx->nextEntranceIndex = ENTR_SPOT02_8;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
} else {
globalCtx->nextEntranceIndex = 0x0610;
globalCtx->nextEntranceIndex = ENTR_SPOT11_8;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
}
@ -1210,13 +1210,13 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
gSaveContext.gameMode = 3;
Audio_SetSoundBanksMute(0x6F);
globalCtx->linkAgeOnLoad = LINK_AGE_ADULT;
globalCtx->nextEntranceIndex = 0x00CD;
globalCtx->nextEntranceIndex = ENTR_SPOT00_0;
gSaveContext.cutsceneIndex = 0xFFF7;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
case 118:
gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex = 0x0517;
gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex = ENTR_GANON_DEMO_0;
Gameplay_TriggerVoidOut(globalCtx);
gSaveContext.respawnFlag = -2;
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK;
@ -1224,7 +1224,7 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt
case 119:
gSaveContext.dayTime = 0x8000;
gSaveContext.skyboxTime = 0x8000;
globalCtx->nextEntranceIndex = 0x05F0;
globalCtx->nextEntranceIndex = ENTR_NAKANIWA_1;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;
break;
@ -1248,12 +1248,12 @@ void Cutscene_Command_TransitionFX(GlobalContext* globalCtx, CutsceneContext* cs
globalCtx->envCtx.screenFillColor[2] = 160;
if (cmd->base == 1) {
globalCtx->envCtx.screenFillColor[3] = 255.0f * temp;
if ((temp == 0.0f) && (gSaveContext.entranceIndex == 0x006B)) {
if ((temp == 0.0f) && (gSaveContext.entranceIndex == ENTR_KENJYANOMA_0)) {
Audio_PlaySoundGeneral(NA_SE_SY_WHITE_OUT_S, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
} else if ((temp == 0.0f) &&
((gSaveContext.entranceIndex == 0x0053) || (gSaveContext.entranceIndex == 0x0138) ||
(gSaveContext.entranceIndex == 0x0371))) {
} else if ((temp == 0.0f) && ((gSaveContext.entranceIndex == ENTR_TOKINOMA_0) ||
(gSaveContext.entranceIndex == ENTR_SPOT15_0) ||
(gSaveContext.entranceIndex == ENTR_YOUSEI_IZUMI_YOKO_0))) {
Audio_PlaySoundGeneral(NA_SE_EV_WHITE_OUT, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
} else if ((temp == 0.0f) && (globalCtx->sceneNum == SCENE_GANONTIKA)) {
@ -2077,30 +2077,30 @@ void Cutscene_HandleConditionalTriggers(GlobalContext* globalCtx) {
osSyncPrintf("\ngame_info.mode=[%d] restart_flag", ((void)0, gSaveContext.respawnFlag));
if ((gSaveContext.gameMode == 0) && (gSaveContext.respawnFlag <= 0) && (gSaveContext.cutsceneIndex < 0xFFF0)) {
if ((gSaveContext.entranceIndex == 0x01E1) && !Flags_GetEventChkInf(EVENTCHKINF_AC)) {
if ((gSaveContext.entranceIndex == ENTR_SPOT11_1) && !Flags_GetEventChkInf(EVENTCHKINF_AC)) {
Flags_SetEventChkInf(EVENTCHKINF_AC);
gSaveContext.entranceIndex = 0x0123;
gSaveContext.entranceIndex = ENTR_SPOT11_0;
gSaveContext.cutsceneIndex = 0xFFF0;
} else if ((gSaveContext.entranceIndex == 0x00DB) && LINK_IS_ADULT && GET_EVENTCHKINF(EVENTCHKINF_48) &&
} else if ((gSaveContext.entranceIndex == ENTR_SPOT01_0) && LINK_IS_ADULT && GET_EVENTCHKINF(EVENTCHKINF_48) &&
GET_EVENTCHKINF(EVENTCHKINF_49) && GET_EVENTCHKINF(EVENTCHKINF_4A) &&
!Flags_GetEventChkInf(EVENTCHKINF_AA)) {
Flags_SetEventChkInf(EVENTCHKINF_AA);
gSaveContext.cutsceneIndex = 0xFFF0;
} else if ((gSaveContext.entranceIndex == 0x05E0) && !Flags_GetEventChkInf(EVENTCHKINF_C1)) {
} else if ((gSaveContext.entranceIndex == ENTR_SPOT10_9) && !Flags_GetEventChkInf(EVENTCHKINF_C1)) {
Flags_SetEventChkInf(EVENTCHKINF_C1);
Item_Give(globalCtx, ITEM_OCARINA_FAIRY);
gSaveContext.entranceIndex = 0x011E;
gSaveContext.entranceIndex = ENTR_SPOT10_0;
gSaveContext.cutsceneIndex = 0xFFF0;
} else if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) && CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) &&
LINK_IS_ADULT && !Flags_GetEventChkInf(EVENTCHKINF_C4) &&
(gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TOKINOMA)) {
Flags_SetEventChkInf(EVENTCHKINF_C4);
gSaveContext.entranceIndex = 0x0053;
gSaveContext.entranceIndex = ENTR_TOKINOMA_0;
gSaveContext.cutsceneIndex = 0xFFF8;
} else if (!Flags_GetEventChkInf(EVENTCHKINF_C7) &&
(gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_GANON_DEMO)) {
Flags_SetEventChkInf(EVENTCHKINF_C7);
gSaveContext.entranceIndex = 0x0517;
gSaveContext.entranceIndex = ENTR_GANON_DEMO_0;
gSaveContext.cutsceneIndex = 0xFFF0;
}
}

View file

@ -68,7 +68,7 @@ void func_8006D0EC(GlobalContext* globalCtx, Player* player) {
horseActor =
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_HORSE, 3586.0f, 1413.0f, -402.0f, 0, 0x4000, 0, 1);
horseActor->room = -1;
} else if ((gSaveContext.entranceIndex == 1230) && GET_EVENTCHKINF(EVENTCHKINF_18)) {
} else if ((gSaveContext.entranceIndex == ENTR_SPOT20_7) && GET_EVENTCHKINF(EVENTCHKINF_18)) {
Actor* horseActor =
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_HORSE, -25.0f, 0.0f, -1600.0f, 0, -0x4000, 0, 1);
ASSERT(horseActor != NULL, "horse_actor != NULL", "../z_horse.c", 389);
@ -132,8 +132,8 @@ void func_8006D684(GlobalContext* globalCtx, Player* player) {
s32 i;
Vec3s spawnPos;
if ((gSaveContext.entranceIndex == 0x028A || gSaveContext.entranceIndex == 0x028E ||
gSaveContext.entranceIndex == 0x0292 || gSaveContext.entranceIndex == 0x0476) &&
if ((gSaveContext.entranceIndex == ENTR_SPOT00_11 || gSaveContext.entranceIndex == ENTR_SPOT00_12 ||
gSaveContext.entranceIndex == ENTR_SPOT00_13 || gSaveContext.entranceIndex == ENTR_SPOT00_15) &&
(gSaveContext.respawnFlag == 0)) {
Vec3s spawnPositions[] = {
{ -2961, 313, 7700 },
@ -142,11 +142,11 @@ void func_8006D684(GlobalContext* globalCtx, Player* player) {
{ -2313, 313, 5990 },
};
if (gSaveContext.entranceIndex == 0x028A) {
if (gSaveContext.entranceIndex == ENTR_SPOT00_11) {
spawnPos = spawnPositions[0];
} else if (gSaveContext.entranceIndex == 0x028E) {
} else if (gSaveContext.entranceIndex == ENTR_SPOT00_12) {
spawnPos = spawnPositions[1];
} else if (gSaveContext.entranceIndex == 0x0292) {
} else if (gSaveContext.entranceIndex == ENTR_SPOT00_13) {
spawnPos = spawnPositions[2];
} else {
spawnPos = spawnPositions[3];
@ -247,8 +247,8 @@ void func_8006DC68(GlobalContext* globalCtx, Player* player) {
if (func_8006CFC0(globalCtx->sceneNum)) {
if ((gSaveContext.sceneSetupIndex > 3) ||
((gSaveContext.entranceIndex == 0x028A || gSaveContext.entranceIndex == 0x028E ||
gSaveContext.entranceIndex == 0x0292 || gSaveContext.entranceIndex == 0x0476) &&
((gSaveContext.entranceIndex == ENTR_SPOT00_11 || gSaveContext.entranceIndex == ENTR_SPOT00_12 ||
gSaveContext.entranceIndex == ENTR_SPOT00_13 || gSaveContext.entranceIndex == ENTR_SPOT00_15) &&
(gSaveContext.respawnFlag == 0)) ||
((globalCtx->sceneNum == SCENE_SPOT20) && (GET_EVENTINF_HORSES_STATE() == EVENTINF_HORSES_STATE_6) &&
!Flags_GetEventChkInf(EVENTCHKINF_18) && (DREG(1) == 0))) {

View file

@ -1278,7 +1278,7 @@ void Environment_DrawSunAndMoon(GlobalContext* globalCtx) {
globalCtx->envCtx.sunPos.z = +(Math_CosS(((void)0, gSaveContext.dayTime) - 0x8000) * 20.0f) * 25.0f;
}
if (gSaveContext.entranceIndex != 0xCD || ((void)0, gSaveContext.sceneSetupIndex) != 5) {
if (gSaveContext.entranceIndex != ENTR_SPOT00_0 || ((void)0, gSaveContext.sceneSetupIndex) != 5) {
Matrix_Translate(globalCtx->view.eye.x + globalCtx->envCtx.sunPos.x,
globalCtx->view.eye.y + globalCtx->envCtx.sunPos.y,
globalCtx->view.eye.z + globalCtx->envCtx.sunPos.z, MTXMODE_NEW);
@ -1920,7 +1920,8 @@ void Environment_PlaySceneSequence(GlobalContext* globalCtx) {
globalCtx->envCtx.unk_E0 = 0xFF;
// both lost woods exits on the bridge from kokiri to hyrule field
if (((void)0, gSaveContext.entranceIndex) == 0x4DE || ((void)0, gSaveContext.entranceIndex) == 0x5E0) {
if (((void)0, gSaveContext.entranceIndex) == ENTR_SPOT10_8 ||
((void)0, gSaveContext.entranceIndex) == ENTR_SPOT10_9) {
Audio_PlayNatureAmbienceSequence(NATURE_ID_KOKIRI_REGION);
} else if (((void)0, gSaveContext.forcedSeqId) != NA_BGM_GENERAL_SFX) {
if (!Environment_IsForcedSequenceDisabled()) {
@ -2442,22 +2443,27 @@ void Environment_WarpSongLeave(GlobalContext* globalCtx) {
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE;
switch (globalCtx->nextEntranceIndex) {
case 0x147:
case ENTR_SPOT17_0:
Flags_SetEventChkInf(EVENTCHKINF_B9);
break;
case 0x0102:
case ENTR_SPOT06_0:
Flags_SetEventChkInf(EVENTCHKINF_B1);
break;
case 0x0123:
case ENTR_SPOT11_0:
Flags_SetEventChkInf(EVENTCHKINF_B8);
break;
case 0x00E4:
case ENTR_SPOT02_0:
Flags_SetEventChkInf(EVENTCHKINF_B6);
break;
case 0x0053:
case ENTR_TOKINOMA_0:
Flags_SetEventChkInf(EVENTCHKINF_A7);
break;
case 0x00FC:
case ENTR_SPOT05_0:
break;
}
}

View file

@ -3029,7 +3029,7 @@ void Interface_Draw(GlobalContext* globalCtx) {
};
static s16 rupeeDigitsFirst[] = { 1, 0, 0 };
static s16 rupeeDigitsCount[] = { 2, 3, 3 };
static s16 spoilingItemEntrances[] = { 0x01AD, 0x0153, 0x0153 };
static s16 spoilingItemEntrances[] = { ENTR_SPOT10_2, ENTR_SPOT07_3, ENTR_SPOT07_3 };
static f32 D_80125B54[] = { -40.0f, -35.0f }; // unused
static s16 D_80125B5C[] = { 91, 91 }; // unused
static s16 D_8015FFE0;

View file

@ -204,7 +204,7 @@ void Gameplay_Init(GameState* thisx) {
u8 tempSetupIndex;
s32 pad[2];
if (gSaveContext.entranceIndex == -1) {
if (gSaveContext.entranceIndex == ENTR_LOAD_OPENING) {
gSaveContext.entranceIndex = 0;
globalCtx->state.running = false;
SET_NEXT_GAMESTATE(&globalCtx->state, Opening_Init, OpeningContext);
@ -1806,11 +1806,11 @@ void Gameplay_LoadToLastEntrance(GlobalContext* globalCtx) {
if ((globalCtx->sceneNum == SCENE_GANON_SONOGO) || (globalCtx->sceneNum == SCENE_GANON_FINAL) ||
(globalCtx->sceneNum == SCENE_GANONTIKA_SONOGO) || (globalCtx->sceneNum == SCENE_GANON_DEMO)) {
globalCtx->nextEntranceIndex = 0x043F;
globalCtx->nextEntranceIndex = ENTR_GANON_FINAL_0;
Item_Give(globalCtx, ITEM_SWORD_MASTER);
} else if ((gSaveContext.entranceIndex == 0x028A) || (gSaveContext.entranceIndex == 0x028E) ||
(gSaveContext.entranceIndex == 0x0292) || (gSaveContext.entranceIndex == 0x0476)) {
globalCtx->nextEntranceIndex = 0x01F9;
} else if ((gSaveContext.entranceIndex == ENTR_SPOT00_11) || (gSaveContext.entranceIndex == ENTR_SPOT00_12) ||
(gSaveContext.entranceIndex == ENTR_SPOT00_13) || (gSaveContext.entranceIndex == ENTR_SPOT00_15)) {
globalCtx->nextEntranceIndex = ENTR_SPOT00_6;
} else {
globalCtx->nextEntranceIndex = gSaveContext.entranceIndex;
}

View file

@ -376,7 +376,7 @@ void func_80098D80(GlobalContext* globalCtx, SceneCmd* cmd) {
globalCtx->envCtx.sunPos.z = (Math_CosS(((void)0, gSaveContext.dayTime) - 0x8000) * 20.0f) * 25.0f;
if (((globalCtx->envCtx.timeIncrement == 0) && (gSaveContext.cutsceneIndex < 0xFFF0)) ||
(gSaveContext.entranceIndex == 0x0604)) {
(gSaveContext.entranceIndex == ENTR_SPOT06_8)) {
gSaveContext.skyboxTime = ((void)0, gSaveContext.dayTime);
if ((gSaveContext.skyboxTime >= 0x2AAC) && (gSaveContext.skyboxTime < 0x4555)) {
gSaveContext.skyboxTime = 0x3556;

File diff suppressed because it is too large Load diff

View file

@ -294,11 +294,17 @@ void Sram_InitDebugSave(void) {
}
}
gSaveContext.entranceIndex = 0xCD;
gSaveContext.entranceIndex = ENTR_SPOT00_0;
gSaveContext.magicLevel = 0;
gSaveContext.sceneFlags[5].swch = 0x40000000;
}
static s16 sDungeonEntrances[] = {
ENTR_YDAN_0, ENTR_DDAN_0, ENTR_BDAN_0, ENTR_BMORI1_0, ENTR_HIDAN_0, ENTR_MIZUSIN_0,
ENTR_JYASINZOU_0, ENTR_HAKADAN_0, ENTR_HAKADANCH_0, ENTR_ICE_DOUKUTO_0, ENTR_GANON_0, ENTR_MEN_0,
ENTR_GERUDOWAY_0, ENTR_GANONTIKA_0, ENTR_GANON_SONOGO_0, ENTR_GANONTIKA_SONOGO_0,
};
/**
* Copy save currently on the buffer to Save Context and complete various tasks to open the save.
* This includes:
@ -310,10 +316,6 @@ void Sram_InitDebugSave(void) {
* - Revert any trade items that spoil
*/
void Sram_OpenSave(SramContext* sramCtx) {
static s16 dungeonEntrances[] = {
0x0000, 0x0004, 0x0028, 0x0169, 0x0165, 0x0010, 0x0082, 0x0037,
0x0098, 0x0088, 0x041B, 0x0008, 0x0486, 0x0467, 0x0179, 0x056C,
};
u16 i;
u16 j;
u8* ptr;
@ -343,45 +345,54 @@ void Sram_OpenSave(SramContext* sramCtx) {
case SCENE_MEN:
case SCENE_GERUDOWAY:
case SCENE_GANONTIKA:
gSaveContext.entranceIndex = dungeonEntrances[gSaveContext.savedSceneNum];
gSaveContext.entranceIndex = sDungeonEntrances[gSaveContext.savedSceneNum];
break;
case SCENE_YDAN_BOSS:
gSaveContext.entranceIndex = 0;
gSaveContext.entranceIndex = ENTR_YDAN_0;
break;
case SCENE_DDAN_BOSS:
gSaveContext.entranceIndex = 4;
gSaveContext.entranceIndex = ENTR_DDAN_0;
break;
case SCENE_BDAN_BOSS:
gSaveContext.entranceIndex = 0x28;
gSaveContext.entranceIndex = ENTR_BDAN_0;
break;
case SCENE_MORIBOSSROOM:
gSaveContext.entranceIndex = 0x169;
gSaveContext.entranceIndex = ENTR_BMORI1_0;
break;
case SCENE_FIRE_BS:
gSaveContext.entranceIndex = 0x165;
gSaveContext.entranceIndex = ENTR_HIDAN_0;
break;
case SCENE_MIZUSIN_BS:
gSaveContext.entranceIndex = 0x10;
gSaveContext.entranceIndex = ENTR_MIZUSIN_0;
break;
case SCENE_JYASINBOSS:
gSaveContext.entranceIndex = 0x82;
gSaveContext.entranceIndex = ENTR_JYASINZOU_0;
break;
case SCENE_HAKADAN_BS:
gSaveContext.entranceIndex = 0x37;
gSaveContext.entranceIndex = ENTR_HAKADAN_0;
break;
case SCENE_GANON_SONOGO:
case SCENE_GANONTIKA_SONOGO:
case SCENE_GANON_BOSS:
case SCENE_GANON_FINAL:
case SCENE_GANON_DEMO:
gSaveContext.entranceIndex = 0x41B;
gSaveContext.entranceIndex = ENTR_GANON_0;
break;
default:
if (gSaveContext.savedSceneNum != SCENE_LINK_HOME) {
gSaveContext.entranceIndex = (LINK_AGE_IN_YEARS == YEARS_CHILD) ? 0xBB : 0x5F4;
gSaveContext.entranceIndex = (LINK_AGE_IN_YEARS == YEARS_CHILD) ? ENTR_LINK_HOME_0 : ENTR_TOKINOMA_7;
} else {
gSaveContext.entranceIndex = 0xBB;
gSaveContext.entranceIndex = ENTR_LINK_HOME_0;
}
break;
}
@ -694,7 +705,7 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx, SramContext* sramCtx) {
Sram_InitDebugSave();
}
gSaveContext.entranceIndex = 0xBB;
gSaveContext.entranceIndex = ENTR_LINK_HOME_0;
gSaveContext.linkAge = LINK_AGE_CHILD;
gSaveContext.dayTime = 0x6AAB;
gSaveContext.cutsceneIndex = 0xFFF1;