1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-05-10 02:54:24 +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

@ -1198,7 +1198,7 @@ s32 Object_IsLoaded(ObjectContext* objectCtx, s32 bankIndex);
void func_800981B8(ObjectContext* objectCtx);
s32 Scene_ExecuteCommands(GlobalContext* globalCtx, SceneCmd* sceneCmd);
void TransitionActor_InitContext(GameState* state, TransitionActorContext* transiActorCtx);
void func_800994A0(GlobalContext* globalCtx);
void Scene_SetTransitionForNextEntrance(GlobalContext* globalCtx);
void Scene_Draw(GlobalContext* globalCtx);
void SkelAnime_DrawLod(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable,
OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, void* arg, s32 lod);

File diff suppressed because it is too large Load diff

View file

@ -95,7 +95,7 @@ extern void (*gSceneCmdHandlers[SCENE_CMD_ID_MAX])(GlobalContext*, SceneCmd*);
extern s16 gLinkObjectIds[2];
extern u32 gObjectTableSize;
extern RomFile gObjectTable[OBJECT_ID_MAX];
extern EntranceInfo gEntranceTable[1556];
extern EntranceInfo gEntranceTable[ENTR_MAX];
extern SceneTableEntry gSceneTable[SCENE_ID_MAX];
extern u16 gSramSlotOffsets[];
// 4 16-colors palettes

View file

@ -315,6 +315,19 @@ typedef enum {
#undef DEFINE_SCENE
// Entrance Index Enum
#define DEFINE_ENTRANCE(enum, _1, _2, _3, _4, _5, _6) enum,
typedef enum {
#include "tables/entrance_table.h"
/* 0x613 */ ENTR_MAX
} EntranceIndex;
#define ENTR_LOAD_OPENING -1
#undef DEFINE_ENTRANCE
// Scene commands
typedef enum {

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;

View file

@ -221,7 +221,7 @@ void BgSpot00Hanebasi_Update(Actor* thisx, GlobalContext* globalCtx) {
Flags_SetEventChkInf(EVENTCHKINF_82);
this->actionFunc = BgSpot00Hanebasi_DoNothing;
func_8002DF54(globalCtx, &player->actor, 8);
globalCtx->nextEntranceIndex = 0x00CD;
globalCtx->nextEntranceIndex = ENTR_SPOT00_0;
gSaveContext.nextCutsceneIndex = 0xFFF1;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK_FAST;

View file

@ -1498,7 +1498,7 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, GlobalContext* globalCtx)
if (this->csTimer == 180) {
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->nextEntranceIndex = 0x43F;
globalCtx->nextEntranceIndex = ENTR_GANON_FINAL_0;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE_FAST;
}
break;

View file

@ -1791,7 +1791,7 @@ void func_8090120C(BossGanon2* this, GlobalContext* globalCtx) {
break;
}
case 20:
globalCtx->nextEntranceIndex = 0x6B;
globalCtx->nextEntranceIndex = ENTR_KENJYANOMA_0;
gSaveContext.nextCutsceneIndex = 0xFFF2;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;

View file

@ -328,7 +328,7 @@ void DemoEffect_Init(Actor* thisx, GlobalContext* globalCtx2) {
break;
case DEMO_EFFECT_GOD_LGT_NAYRU:
if (gSaveContext.entranceIndex == 0x013D) {
if (gSaveContext.entranceIndex == ENTR_SPOT16_0) {
Actor_SetScale(&this->actor, 1.0f);
} else {
Actor_SetScale(&this->actor, 0.1f);
@ -349,7 +349,7 @@ void DemoEffect_Init(Actor* thisx, GlobalContext* globalCtx2) {
break;
case DEMO_EFFECT_GOD_LGT_FARORE:
if (gSaveContext.entranceIndex == 0x00EE) {
if (gSaveContext.entranceIndex == ENTR_SPOT04_0) {
Actor_SetScale(&this->actor, 2.4f);
} else {
Actor_SetScale(&this->actor, 0.1f);
@ -631,7 +631,7 @@ void DemoEffect_UpdateGetItem(DemoEffect* this, GlobalContext* globalCtx) {
Actor_SetScale(thisx, 0.20f);
if (gSaveContext.entranceIndex == 0x0053) {
if (gSaveContext.entranceIndex == ENTR_TOKINOMA_0) {
switch (globalCtx->csCtx.npcActions[this->csActionId]->action) {
case 2:
DemoEffect_MedalSparkle(this, globalCtx, 0);
@ -643,7 +643,7 @@ void DemoEffect_UpdateGetItem(DemoEffect* this, GlobalContext* globalCtx) {
}
switch (globalCtx->csCtx.npcActions[this->csActionId]->action) {
case 2:
if (gSaveContext.entranceIndex == 0x0053) {
if (gSaveContext.entranceIndex == ENTR_TOKINOMA_0) {
Audio_PlayActorSound2(thisx, NA_SE_EV_MEDAL_APPEAR_L - SFX_FLAG);
} else {
func_800788CC(NA_SE_EV_MEDAL_APPEAR_S - SFX_FLAG);
@ -658,7 +658,7 @@ void DemoEffect_UpdateGetItem(DemoEffect* this, GlobalContext* globalCtx) {
if (this->getItem.drawId != GID_ARROW_LIGHT) {
this->actor.shape.rot.y += this->getItem.rotation;
}
if (gSaveContext.entranceIndex == 0x0053) {
if (gSaveContext.entranceIndex == ENTR_TOKINOMA_0) {
Audio_PlayActorSound2(thisx, NA_SE_EV_MEDAL_APPEAR_L - SFX_FLAG);
} else {
func_800788CC(NA_SE_EV_MEDAL_APPEAR_S - SFX_FLAG);
@ -697,7 +697,7 @@ void DemoEffect_InitTimeWarp(DemoEffect* this, GlobalContext* globalCtx) {
Actor_SetScale(&this->actor, 84 * 0.001f);
}
} else if (gSaveContext.sceneSetupIndex == 5 || gSaveContext.sceneSetupIndex == 4 ||
(gSaveContext.entranceIndex == 0x0324 && !GET_EVENTCHKINF(EVENTCHKINF_C9))) {
(gSaveContext.entranceIndex == ENTR_TOKINOMA_4 && !GET_EVENTCHKINF(EVENTCHKINF_C9))) {
SkelCurve_SetAnim(&this->skelCurve, &gTimeWarpAnim, 1.0f, 59.0f, 59.0f, 0.0f);
SkelCurve_Update(globalCtx, &this->skelCurve);
this->updateFunc = DemoEffect_UpdateTimeWarpReturnFromChamberOfSages;
@ -760,7 +760,7 @@ void DemoEffect_UpdateTimeWarpReturnFromChamberOfSages(DemoEffect* this, GlobalC
this->timeWarp.shrinkTimer++;
if (this->timeWarp.shrinkTimer > 250) {
if (gSaveContext.entranceIndex == 0x0324) {
if (gSaveContext.entranceIndex == ENTR_TOKINOMA_4) {
SET_EVENTCHKINF(EVENTCHKINF_C9);
}
@ -852,7 +852,7 @@ void DemoEffect_UpdateTriforceSpot(DemoEffect* this, GlobalContext* globalCtx) {
}
}
if (gSaveContext.entranceIndex == 0x00A0 && gSaveContext.sceneSetupIndex == 6 &&
if (gSaveContext.entranceIndex == ENTR_HIRAL_DEMO_0 && gSaveContext.sceneSetupIndex == 6 &&
globalCtx->csCtx.frames == 143) {
Audio_PlayActorSound2(&this->actor, NA_SE_IT_DM_RING_EXPLOSION);
}
@ -1153,7 +1153,7 @@ void DemoEffect_UpdateGodLgtDin(DemoEffect* this, GlobalContext* globalCtx) {
}
}
if (gSaveContext.entranceIndex == 0x00A0) {
if (gSaveContext.entranceIndex == ENTR_HIRAL_DEMO_0) {
switch (gSaveContext.sceneSetupIndex) {
case 4:
if (globalCtx->csCtx.frames == 288) {
@ -1208,7 +1208,7 @@ void DemoEffect_UpdateGodLgtNayru(DemoEffect* this, GlobalContext* globalCtx) {
}
}
if (gSaveContext.entranceIndex == 0x00A0) {
if (gSaveContext.entranceIndex == ENTR_HIRAL_DEMO_0) {
switch (gSaveContext.sceneSetupIndex) {
case 4:
if (globalCtx->csCtx.frames == 298) {
@ -1230,7 +1230,7 @@ void DemoEffect_UpdateGodLgtNayru(DemoEffect* this, GlobalContext* globalCtx) {
}
}
if (gSaveContext.entranceIndex == 0x013D && gSaveContext.sceneSetupIndex == 4) {
if (gSaveContext.entranceIndex == ENTR_SPOT16_0 && gSaveContext.sceneSetupIndex == 4) {
if (globalCtx->csCtx.frames == 72) {
Audio_PlayActorSound2(&this->actor, NA_SE_IT_DM_FLYING_GOD_DASH);
}
@ -1268,7 +1268,7 @@ void DemoEffect_UpdateGodLgtFarore(DemoEffect* this, GlobalContext* globalCtx) {
func_800F3F3C(3);
}
if (gSaveContext.entranceIndex == 0x00A0) {
if (gSaveContext.entranceIndex == ENTR_HIRAL_DEMO_0) {
switch (gSaveContext.sceneSetupIndex) {
case 4:
if (globalCtx->csCtx.frames == 315) {
@ -1587,14 +1587,14 @@ void DemoEffect_UpdateJewelChild(DemoEffect* this, GlobalContext* globalCtx) {
return;
default:
DemoEffect_MoveToCsEndpoint(this, globalCtx, this->csActionId, 0);
if (gSaveContext.entranceIndex == 0x0053) {
if (gSaveContext.entranceIndex == ENTR_TOKINOMA_0) {
DemoEffect_MoveJewelSplit(&thisx->world, this);
}
break;
}
}
if (gSaveContext.entranceIndex == 0x0053) {
if (gSaveContext.entranceIndex == ENTR_TOKINOMA_0) {
if (!GET_EVENTCHKINF(EVENTCHKINF_4B)) {
hasCmdAction = globalCtx->csCtx.state && globalCtx->csCtx.npcActions[this->csActionId];
if (!hasCmdAction) {
@ -1804,7 +1804,7 @@ void DemoEffect_DrawGodLgt(Actor* thisx, GlobalContext* globalCtx) {
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_demo_effect.c", 2737);
if (!DemoEffect_CheckCsAction(this, globalCtx, 2)) {
if (gSaveContext.entranceIndex == 0x00A0) {
if (gSaveContext.entranceIndex == ENTR_HIRAL_DEMO_0) {
if (gSaveContext.sceneSetupIndex == 4) {
if (globalCtx->csCtx.frames <= 680) {
func_80078914(&this->actor.projectedPos, NA_SE_EV_GOD_FLYING - SFX_FLAG);
@ -1968,7 +1968,7 @@ void DemoEffect_DrawTriforceSpot(Actor* thisx, GlobalContext* globalCtx) {
u32 frames = globalCtx->gameplayFrames;
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_demo_effect.c", 2994);
if (gSaveContext.entranceIndex != 0x0400 || globalCtx->csCtx.frames < 885) {
if (gSaveContext.entranceIndex != ENTR_NAKANIWA_0 || globalCtx->csCtx.frames < 885) {
func_80093D84(globalCtx->state.gfxCtx);
if (this->triforceSpot.lightColumnOpacity > 0) {
@ -2076,7 +2076,8 @@ void DemoEffect_DrawTimeWarp(Actor* thisx, GlobalContext* globalCtx) {
u8 effectType = (this->actor.params & 0x00FF);
if (effectType == DEMO_EFFECT_TIMEWARP_TIMEBLOCK_LARGE || effectType == DEMO_EFFECT_TIMEWARP_TIMEBLOCK_SMALL ||
Flags_GetEnv(globalCtx, 1) || gSaveContext.sceneSetupIndex >= 4 || gSaveContext.entranceIndex == 0x0324) {
Flags_GetEnv(globalCtx, 1) || gSaveContext.sceneSetupIndex >= 4 ||
gSaveContext.entranceIndex == ENTR_TOKINOMA_4) {
OPEN_DISPS(gfxCtx, "../z_demo_effect.c", 3201);
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 25);
Matrix_Scale(2.0f, 2.0f, 2.0f, MTXMODE_APPLY);

View file

@ -867,7 +867,7 @@ void func_80986B2C(GlobalContext* globalCtx) {
if (Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_CLOSING) {
Player* player = GET_PLAYER(globalCtx);
globalCtx->nextEntranceIndex = 0xCD;
globalCtx->nextEntranceIndex = ENTR_SPOT00_0;
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_BLACK, TCS_FAST);
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
func_8002DF54(globalCtx, &player->actor, 8);

View file

@ -541,7 +541,7 @@ void DemoKankyo_DrawRain(Actor* thisx, GlobalContext* globalCtx) {
switch (this->unk_150[i].unk_22) {
case 0:
func_80989B54(thisx, globalCtx, i);
if (gSaveContext.entranceIndex == 0x00A0) { // Cutscene Map
if (gSaveContext.entranceIndex == ENTR_HIRAL_DEMO_0) {
this->unk_150[i].unk_0.y = Rand_ZeroOne() * 500.0f;
} else {
this->unk_150[i].unk_0.y = Rand_ZeroOne() * -500.0f;
@ -550,16 +550,16 @@ void DemoKankyo_DrawRain(Actor* thisx, GlobalContext* globalCtx) {
break;
case 1:
temp_f12_2 = globalCtx->view.eye.y + (dy / norm) * 150.0f;
if (gSaveContext.entranceIndex == 0x00A0) { // Cutscene Map
if (gSaveContext.entranceIndex == ENTR_HIRAL_DEMO_0) {
this->unk_150[i].unk_0.y -= this->unk_150[i].unk_18;
} else {
this->unk_150[i].unk_0.y += this->unk_150[i].unk_18;
}
if (gSaveContext.entranceIndex == 0x00A0) { // Cutscene Map
if (gSaveContext.entranceIndex == ENTR_HIRAL_DEMO_0) {
if (this->unk_150[i].unk_C.y + this->unk_150[i].unk_0.y < temp_f12_2 - 300.0f) {
this->unk_150[i].unk_22++;
}
} else if (gSaveContext.entranceIndex == 0x00CD) { // Hyrule Field
} else if (gSaveContext.entranceIndex == ENTR_SPOT00_0) {
if (temp_f12_2 + 300.0f < this->unk_150[i].unk_C.y + this->unk_150[i].unk_0.y) {
this->unk_150[i].unk_22++;
}
@ -578,12 +578,14 @@ void DemoKankyo_DrawRain(Actor* thisx, GlobalContext* globalCtx) {
Matrix_Translate(this->unk_150[i].unk_C.x + this->unk_150[i].unk_0.x,
this->unk_150[i].unk_C.y + this->unk_150[i].unk_0.y,
this->unk_150[i].unk_C.z + this->unk_150[i].unk_0.z, MTXMODE_NEW);
if (gSaveContext.entranceIndex != 0x00A0) { // Cutscene Map
if (gSaveContext.entranceIndex != ENTR_HIRAL_DEMO_0) {
Matrix_RotateX(M_PI, MTXMODE_APPLY);
}
gDPPipeSync(POLY_XLU_DISP++);
if (gSaveContext.entranceIndex == 0x00CD) { // Hyrule Field
if (gSaveContext.entranceIndex == ENTR_SPOT00_0) {
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, 255);
gDPSetEnvColor(POLY_XLU_DISP++, 255, 255, 0, 255);
} else {

View file

@ -1,7 +1,7 @@
/*
* File: z_door_ana.c
* Overlay: ovl_Door_Ana
* Description: Grottos Entrances/Exits
* Description: Grotto
*/
#include "z_door_ana.h"
@ -50,10 +50,10 @@ static ColliderCylinderInit sCylinderInit = {
{ 50, 10, 0, { 0 } },
};
// array of entrance table entries to grotto destinations
static s16 entrances[] = {
0x036D, 0x003F, 0x0598, 0x059C, 0x05A0, 0x05A4, 0x05A8, 0x05AC,
0x05B0, 0x05B4, 0x05B8, 0x05BC, 0x05C0, 0x05C4, 0x05FC,
static s16 sGrottoEntrances[] = {
ENTR_YOUSEI_IZUMI_TATE_0, ENTR_KAKUSIANA_0, ENTR_KAKUSIANA_1, ENTR_KAKUSIANA_2, ENTR_KAKUSIANA_3,
ENTR_KAKUSIANA_4, ENTR_KAKUSIANA_5, ENTR_KAKUSIANA_6, ENTR_KAKUSIANA_7, ENTR_KAKUSIANA_8,
ENTR_KAKUSIANA_9, ENTR_KAKUSIANA_10, ENTR_KAKUSIANA_11, ENTR_KAKUSIANA_12, ENTR_KAKUSIANA_13,
};
void DoorAna_SetupAction(DoorAna* this, DoorAnaActionFunc actionFunc) {
@ -138,7 +138,7 @@ void DoorAna_WaitOpen(DoorAna* this, GlobalContext* globalCtx) {
if (destinationIdx < 0) {
destinationIdx = this->actor.home.rot.z + 1;
}
globalCtx->nextEntranceIndex = entrances[destinationIdx];
globalCtx->nextEntranceIndex = sGrottoEntrances[destinationIdx];
DoorAna_SetupAction(this, DoorAna_GrabPlayer);
} else {
if (!Player_InCsMode(globalCtx) && !(player->stateFlags1 & (PLAYER_STATE1_23 | PLAYER_STATE1_27)) &&

View file

@ -162,11 +162,9 @@ void DoorWarp1_SetupWarp(DoorWarp1* this, GlobalContext* globalCtx) {
DoorWarp1_SetupAction(this, DoorWarp1_AwaitClearFlag);
break;
case WARP_DESTINATION:
if ((!(gSaveContext.entranceIndex == 0x608 || // sacred forest meadow
gSaveContext.entranceIndex == 0x564 || // death mountain crater
gSaveContext.entranceIndex == 0x60C || // lake hylia
gSaveContext.entranceIndex == 0x610 || // desert colossus
gSaveContext.entranceIndex == 0x580) && // graveyard
if ((!(gSaveContext.entranceIndex == ENTR_SPOT05_3 || gSaveContext.entranceIndex == ENTR_SPOT17_5 ||
gSaveContext.entranceIndex == ENTR_SPOT06_9 || gSaveContext.entranceIndex == ENTR_SPOT11_8 ||
gSaveContext.entranceIndex == ENTR_SPOT02_8) &&
gSaveContext.sceneSetupIndex < 4) ||
(GET_PLAYER(globalCtx)->actor.params & 0xF00) != 0x200) {
Actor_Kill(&this->actor);
@ -263,7 +261,7 @@ void DoorWarp1_SetupPurpleCrystal(DoorWarp1* this, GlobalContext* globalCtx) {
this->unk_1BC = 1.f;
this->actor.shape.yOffset = 800.0f;
if (gSaveContext.entranceIndex != 0x53) {
if (gSaveContext.entranceIndex != ENTR_TOKINOMA_0) {
this->actor.scale.x = 0.0499f;
this->actor.scale.y = 0.077f;
this->actor.scale.z = 0.09f;
@ -501,10 +499,10 @@ void DoorWarp1_ChildWarpOut(DoorWarp1* this, GlobalContext* globalCtx) {
if (!Flags_GetEventChkInf(EVENTCHKINF_25)) {
Flags_SetEventChkInf(EVENTCHKINF_25);
Item_Give(globalCtx, ITEM_GORON_RUBY);
globalCtx->nextEntranceIndex = 0x13D;
globalCtx->nextEntranceIndex = ENTR_SPOT16_0;
gSaveContext.nextCutsceneIndex = 0xFFF1;
} else {
globalCtx->nextEntranceIndex = 0x47A;
globalCtx->nextEntranceIndex = ENTR_SPOT16_5;
gSaveContext.nextCutsceneIndex = 0;
}
} else if (globalCtx->sceneNum == SCENE_YDAN_BOSS) {
@ -512,14 +510,14 @@ void DoorWarp1_ChildWarpOut(DoorWarp1* this, GlobalContext* globalCtx) {
Flags_SetEventChkInf(EVENTCHKINF_07);
Flags_SetEventChkInf(EVENTCHKINF_09);
Item_Give(globalCtx, ITEM_KOKIRI_EMERALD);
globalCtx->nextEntranceIndex = 0xEE;
globalCtx->nextEntranceIndex = ENTR_SPOT04_0;
gSaveContext.nextCutsceneIndex = 0xFFF1;
} else {
globalCtx->nextEntranceIndex = 0x457;
globalCtx->nextEntranceIndex = ENTR_SPOT04_11;
gSaveContext.nextCutsceneIndex = 0;
}
} else if (globalCtx->sceneNum == SCENE_BDAN_BOSS) {
globalCtx->nextEntranceIndex = 0x10E;
globalCtx->nextEntranceIndex = ENTR_SPOT08_0;
gSaveContext.nextCutsceneIndex = 0;
}
osSyncPrintf("\n\n\nおわりおわり");
@ -607,7 +605,7 @@ void DoorWarp1_RutoWarpOut(DoorWarp1* this, GlobalContext* globalCtx) {
if (this->warpTimer > sWarpTimerTarget && gSaveContext.nextCutsceneIndex == 0xFFEF) {
SET_EVENTCHKINF(EVENTCHKINF_37);
Item_Give(globalCtx, ITEM_ZORA_SAPPHIRE);
globalCtx->nextEntranceIndex = 0x10E;
globalCtx->nextEntranceIndex = ENTR_SPOT08_0;
gSaveContext.nextCutsceneIndex = 0xFFF0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE_SLOW;
@ -709,14 +707,14 @@ void DoorWarp1_AdultWarpOut(DoorWarp1* this, GlobalContext* globalCtx) {
if (!GET_EVENTCHKINF(EVENTCHKINF_48)) {
SET_EVENTCHKINF(EVENTCHKINF_48);
Item_Give(globalCtx, ITEM_MEDALLION_FOREST);
globalCtx->nextEntranceIndex = 0x6B;
globalCtx->nextEntranceIndex = ENTR_KENJYANOMA_0;
gSaveContext.nextCutsceneIndex = 0;
gSaveContext.chamberCutsceneNum = CHAMBER_CS_FOREST;
} else {
if (!LINK_IS_ADULT) {
globalCtx->nextEntranceIndex = 0x600;
globalCtx->nextEntranceIndex = ENTR_SPOT05_2;
} else {
globalCtx->nextEntranceIndex = 0x608;
globalCtx->nextEntranceIndex = ENTR_SPOT05_3;
}
gSaveContext.nextCutsceneIndex = 0;
}
@ -724,13 +722,13 @@ void DoorWarp1_AdultWarpOut(DoorWarp1* this, GlobalContext* globalCtx) {
if (!GET_EVENTCHKINF(EVENTCHKINF_49)) {
SET_EVENTCHKINF(EVENTCHKINF_49);
Item_Give(globalCtx, ITEM_MEDALLION_FIRE);
globalCtx->nextEntranceIndex = 0xDB;
globalCtx->nextEntranceIndex = ENTR_SPOT01_0;
gSaveContext.nextCutsceneIndex = 0xFFF3;
} else {
if (!LINK_IS_ADULT) {
globalCtx->nextEntranceIndex = 0x4F6;
globalCtx->nextEntranceIndex = ENTR_SPOT17_4;
} else {
globalCtx->nextEntranceIndex = 0x564;
globalCtx->nextEntranceIndex = ENTR_SPOT17_5;
}
gSaveContext.nextCutsceneIndex = 0;
}
@ -738,42 +736,42 @@ void DoorWarp1_AdultWarpOut(DoorWarp1* this, GlobalContext* globalCtx) {
if (!GET_EVENTCHKINF(EVENTCHKINF_4A)) {
SET_EVENTCHKINF(EVENTCHKINF_4A);
Item_Give(globalCtx, ITEM_MEDALLION_WATER);
globalCtx->nextEntranceIndex = 0x6B;
globalCtx->nextEntranceIndex = ENTR_KENJYANOMA_0;
gSaveContext.nextCutsceneIndex = 0;
gSaveContext.chamberCutsceneNum = CHAMBER_CS_WATER;
} else {
if (!LINK_IS_ADULT) {
globalCtx->nextEntranceIndex = 0x604;
globalCtx->nextEntranceIndex = ENTR_SPOT06_8;
} else {
globalCtx->nextEntranceIndex = 0x60C;
globalCtx->nextEntranceIndex = ENTR_SPOT06_9;
}
gSaveContext.nextCutsceneIndex = 0;
}
} else if (globalCtx->sceneNum == SCENE_JYASINBOSS) {
if (!CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) {
Item_Give(globalCtx, ITEM_MEDALLION_SPIRIT);
globalCtx->nextEntranceIndex = 0x6B;
globalCtx->nextEntranceIndex = ENTR_KENJYANOMA_0;
gSaveContext.nextCutsceneIndex = 0;
gSaveContext.chamberCutsceneNum = CHAMBER_CS_SPIRIT;
} else {
if (!LINK_IS_ADULT) {
globalCtx->nextEntranceIndex = 0x1F1;
globalCtx->nextEntranceIndex = ENTR_SPOT11_5;
} else {
globalCtx->nextEntranceIndex = 0x610;
globalCtx->nextEntranceIndex = ENTR_SPOT11_8;
}
gSaveContext.nextCutsceneIndex = 0;
}
} else if (globalCtx->sceneNum == SCENE_HAKADAN_BS) {
if (!CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW)) {
Item_Give(globalCtx, ITEM_MEDALLION_SHADOW);
globalCtx->nextEntranceIndex = 0x6B;
globalCtx->nextEntranceIndex = ENTR_KENJYANOMA_0;
gSaveContext.nextCutsceneIndex = 0;
gSaveContext.chamberCutsceneNum = CHAMBER_CS_SHADOW;
} else {
if (!LINK_IS_ADULT) {
globalCtx->nextEntranceIndex = 0x568;
globalCtx->nextEntranceIndex = ENTR_SPOT02_7;
} else {
globalCtx->nextEntranceIndex = 0x580;
globalCtx->nextEntranceIndex = ENTR_SPOT02_8;
}
gSaveContext.nextCutsceneIndex = 0;
}

View file

@ -230,11 +230,11 @@ void EnGe1_KickPlayer(EnGe1* this, GlobalContext* globalCtx) {
func_8006D074(globalCtx);
if ((INV_CONTENT(ITEM_HOOKSHOT) == ITEM_NONE) || (INV_CONTENT(ITEM_LONGSHOT) == ITEM_NONE)) {
globalCtx->nextEntranceIndex = 0x1A5;
globalCtx->nextEntranceIndex = ENTR_SPOT09_1;
} else if (GET_EVENTCHKINF(EVENTCHKINF_C7)) { // Caught previously
globalCtx->nextEntranceIndex = 0x5F8;
globalCtx->nextEntranceIndex = ENTR_SPOT12_18;
} else {
globalCtx->nextEntranceIndex = 0x3B4;
globalCtx->nextEntranceIndex = ENTR_SPOT12_17;
}
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_BLACK, TCS_FAST);
@ -581,7 +581,7 @@ void EnGe1_BeginGame_Archery(EnGe1* this, GlobalContext* globalCtx) {
this->actionFunc = EnGe1_TalkTooPoor_Archery;
} else {
Rupees_ChangeBy(-20);
globalCtx->nextEntranceIndex = 0x129;
globalCtx->nextEntranceIndex = ENTR_SPOT12_0;
gSaveContext.nextCutsceneIndex = 0xFFF0;
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_BLACK, TCS_FAST);
globalCtx->transitionTrigger = TRANS_TRIGGER_START;

View file

@ -241,11 +241,11 @@ void EnGe2_CaptureClose(EnGe2* this, GlobalContext* globalCtx) {
func_8006D074(globalCtx);
if ((INV_CONTENT(ITEM_HOOKSHOT) == ITEM_NONE) || (INV_CONTENT(ITEM_LONGSHOT) == ITEM_NONE)) {
globalCtx->nextEntranceIndex = 0x1A5;
globalCtx->nextEntranceIndex = ENTR_SPOT09_1;
} else if (GET_EVENTCHKINF(EVENTCHKINF_C7)) {
globalCtx->nextEntranceIndex = 0x5F8;
globalCtx->nextEntranceIndex = ENTR_SPOT12_18;
} else {
globalCtx->nextEntranceIndex = 0x3B4;
globalCtx->nextEntranceIndex = ENTR_SPOT12_17;
}
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_BLACK, TCS_FAST);
@ -267,11 +267,11 @@ void EnGe2_CaptureCharge(EnGe2* this, GlobalContext* globalCtx) {
func_8006D074(globalCtx);
if ((INV_CONTENT(ITEM_HOOKSHOT) == ITEM_NONE) || (INV_CONTENT(ITEM_LONGSHOT) == ITEM_NONE)) {
globalCtx->nextEntranceIndex = 0x1A5;
globalCtx->nextEntranceIndex = ENTR_SPOT09_1;
} else if (GET_EVENTCHKINF(EVENTCHKINF_C7)) {
globalCtx->nextEntranceIndex = 0x5F8;
globalCtx->nextEntranceIndex = ENTR_SPOT12_18;
} else {
globalCtx->nextEntranceIndex = 0x3B4;
globalCtx->nextEntranceIndex = ENTR_SPOT12_17;
}
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_BLACK, TCS_FAST);

View file

@ -1576,11 +1576,11 @@ void EnGeldB_Draw(Actor* thisx, GlobalContext* globalCtx) {
this->timer--;
if (this->timer == 0) {
if ((INV_CONTENT(ITEM_HOOKSHOT) == ITEM_NONE) || (INV_CONTENT(ITEM_LONGSHOT) == ITEM_NONE)) {
globalCtx->nextEntranceIndex = 0x1A5;
globalCtx->nextEntranceIndex = ENTR_SPOT09_1;
} else if (GET_EVENTCHKINF(EVENTCHKINF_C7)) {
globalCtx->nextEntranceIndex = 0x5F8;
globalCtx->nextEntranceIndex = ENTR_SPOT12_18;
} else {
globalCtx->nextEntranceIndex = 0x3B4;
globalCtx->nextEntranceIndex = ENTR_SPOT12_17;
}
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_BLACK, TCS_FAST);
globalCtx->transitionTrigger = TRANS_TRIGGER_START;

View file

@ -348,7 +348,7 @@ void EnHeishi1_Kick(EnHeishi1* this, GlobalContext* globalCtx) {
Message_CloseTextbox(globalCtx);
if (!this->loadStarted) {
SET_EVENTCHKINF(EVENTCHKINF_4E);
globalCtx->nextEntranceIndex = 0x4FA;
globalCtx->nextEntranceIndex = ENTR_SPOT15_3;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
this->loadStarted = true;
sPlayerIsCaught = false;

View file

@ -203,7 +203,7 @@ void func_80A55D00(EnHeishi3* this, GlobalContext* globalCtx) {
if ((Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(globalCtx) &&
(this->respawnFlag == 0)) {
SET_EVENTCHKINF(EVENTCHKINF_4E);
globalCtx->nextEntranceIndex = 0x47E; // Hyrule Castle from Guard Capture (outside)
globalCtx->nextEntranceIndex = ENTR_SPOT15_4;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
this->respawnFlag = 1;
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_WHITE, TCS_FAST);

View file

@ -76,7 +76,7 @@ void EnHoll_SetupAction(EnHoll* this, EnHollActionFunc func) {
}
s32 EnHoll_IsKokiriSetup8() {
return gSaveContext.entranceIndex == 0x00EE && gSaveContext.sceneSetupIndex == 8;
return gSaveContext.entranceIndex == ENTR_SPOT04_0 && gSaveContext.sceneSetupIndex == 8;
}
void EnHoll_ChooseAction(EnHoll* this) {

View file

@ -2528,7 +2528,7 @@ void EnHorse_UpdateHorsebackArchery(EnHorse* this, GlobalContext* globalCtx) {
if (this->hbaFlags & 1 || this->hbaTimer >= 46) {
if (sp20 != 1 && gSaveContext.minigameState != 3) {
gSaveContext.cutsceneIndex = 0;
globalCtx->nextEntranceIndex = 0x3B0;
globalCtx->nextEntranceIndex = ENTR_SPOT12_16;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_NORMAL, TCC_BLACK, TCS_FAST);
}

View file

@ -109,7 +109,7 @@ s32 EnHorseGameCheck_DestroyIngoRace(EnHorseGameCheckBase* base, GlobalContext*
void EnHorseGameCheck_FinishIngoRace(EnHorseGameCheckIngoRace* this, GlobalContext* globalCtx) {
gSaveContext.cutsceneIndex = 0;
if (this->result == INGORACE_PLAYER_WIN) {
globalCtx->nextEntranceIndex = 0x4CE;
globalCtx->nextEntranceIndex = ENTR_SPOT20_7;
if (GET_EVENTINF(EVENTINF_HORSES_06)) {
SET_EVENTINF_HORSES_STATE(EVENTINF_HORSES_STATE_6);
SET_EVENTINF_HORSES_0F(1);
@ -122,7 +122,7 @@ void EnHorseGameCheck_FinishIngoRace(EnHorseGameCheckIngoRace* this, GlobalConte
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_WHITE, TCS_FAST);
}
} else {
globalCtx->nextEntranceIndex = 0x558;
globalCtx->nextEntranceIndex = ENTR_SPOT20_8;
SET_EVENTINF_HORSES_STATE(EVENTINF_HORSES_STATE_3);
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_NORMAL, TCC_BLACK, TCS_FAST);
SET_EVENTINF_HORSES_0F(1);
@ -295,21 +295,21 @@ s32 EnHorseGameCheck_DestroyMalonRace(EnHorseGameCheckBase* base, GlobalContext*
void EnHorseGameCheck_FinishMalonRace(EnHorseGameCheckMalonRace* this, GlobalContext* globalCtx) {
if ((this->result == MALONRACE_SUCCESS) || (this->result == MALONRACE_TIME_UP)) {
gSaveContext.cutsceneIndex = 0;
globalCtx->nextEntranceIndex = 0x4CE;
globalCtx->nextEntranceIndex = ENTR_SPOT20_7;
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_WHITE, TCS_FAST);
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
} else if (this->result == MALONRACE_FAILURE) {
gSaveContext.timer1Value = 240;
gSaveContext.timer1State = 0xF;
gSaveContext.cutsceneIndex = 0;
globalCtx->nextEntranceIndex = 0x4CE;
globalCtx->nextEntranceIndex = ENTR_SPOT20_7;
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_WHITE, TCS_FAST);
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
} else {
// "not supported"
osSyncPrintf("En_HGC_Spot20_Ta_end():対応せず\n");
gSaveContext.cutsceneIndex = 0;
globalCtx->nextEntranceIndex = 0x157;
globalCtx->nextEntranceIndex = ENTR_SPOT20_0;
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_WHITE, TCS_FAST);
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
}

View file

@ -351,7 +351,7 @@ void func_80A6A068(EnHorseLinkChild* this, GlobalContext* globalCtx) {
player = GET_PLAYER(globalCtx);
distFromLink = Actor_WorldDistXZToActor(&this->actor, &player->actor);
if (gSaveContext.entranceIndex == 0x2AE) {
if (gSaveContext.entranceIndex == ENTR_SPOT20_1) {
Audio_PlaySoundGeneral(NA_SE_EV_KID_HORSE_NEIGH, &this->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
func_80A6A724(this);

View file

@ -424,7 +424,7 @@ void func_80A79AB4(EnIn* this, GlobalContext* globalCtx) {
}
void func_80A79BAC(EnIn* this, GlobalContext* globalCtx, s32 index, u32 transitionType) {
s16 entrances[] = { 0x0558, 0x04CA, 0x0157 };
s16 entrances[] = { ENTR_SPOT20_8, ENTR_SPOT20_6, ENTR_SPOT20_0 };
globalCtx->nextEntranceIndex = entrances[index];
if (index == 2) {
@ -870,7 +870,7 @@ void func_80A7AEF0(EnIn* this, GlobalContext* globalCtx) {
pos.z += 90.0f * Math_CosS(this->actor.shape.rot.y);
yaw = Math_Vec3f_Yaw(&pos, &player->actor.world.pos);
if (ABS(yaw) > 0x4000) {
globalCtx->nextEntranceIndex = 0x0476;
globalCtx->nextEntranceIndex = ENTR_SPOT00_15;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE_FAST;
this->actionFunc = func_80A7B018;

View file

@ -147,7 +147,7 @@ void func_80A89A6C(EnJsjutan* this, GlobalContext* globalCtx) {
i = 1;
// Credits scene. The magic carpet man is friends with the bean guy and the lakeside professor.
if ((gSaveContext.entranceIndex == 0x157) && (gSaveContext.sceneSetupIndex == 8)) {
if ((gSaveContext.entranceIndex == ENTR_SPOT20_0) && (gSaveContext.sceneSetupIndex == 8)) {
isInCreditsScene = true;
actorProfessor = globalCtx->actorCtx.actorLists[ACTORCAT_NPC].head;

View file

@ -385,7 +385,7 @@ void func_80AA10EC(EnMa1* this, GlobalContext* globalCtx) {
void func_80AA1150(EnMa1* this, GlobalContext* globalCtx) {
GET_PLAYER(globalCtx)->stateFlags2 |= PLAYER_STATE2_23;
if (globalCtx->msgCtx.ocarinaMode == OCARINA_MODE_03) {
globalCtx->nextEntranceIndex = 0x157;
globalCtx->nextEntranceIndex = ENTR_SPOT20_0;
gSaveContext.nextCutsceneIndex = 0xFFF1;
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_WAVE, TCC_WHITE, TCS_FAST);
globalCtx->transitionTrigger = TRANS_TRIGGER_START;

View file

@ -114,7 +114,7 @@ s16 func_80AA2BD4(GlobalContext* globalCtx, Actor* thisx) {
switch (Message_GetState(&globalCtx->msgCtx)) {
case TEXT_STATE_EVENT:
if (Message_ShouldAdvance(globalCtx)) {
globalCtx->nextEntranceIndex = 0x157;
globalCtx->nextEntranceIndex = ENTR_SPOT20_0;
gSaveContext.nextCutsceneIndex = 0xFFF0;
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_BLACK, TCS_FAST);
globalCtx->transitionTrigger = TRANS_TRIGGER_START;

View file

@ -168,7 +168,7 @@ void EnMs_Update(Actor* thisx, GlobalContext* globalCtx) {
SkelAnime_Update(&this->skelAnime);
this->actionFunc(this, globalCtx);
if (gSaveContext.entranceIndex == 0x157 && gSaveContext.sceneSetupIndex == 8) { // ride carpet if in credits
if (gSaveContext.entranceIndex == ENTR_SPOT20_0 && gSaveContext.sceneSetupIndex == 8) { // ride carpet if in credits
Actor_MoveForward(&this->actor);
osSyncPrintf("OOOHHHHHH %f\n", this->actor.velocity.y);
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 0.0f, 0.0f, 0.0f, UPDBGCHECKINFO_FLAG_2);

View file

@ -917,7 +917,7 @@ void EnOssan_State_StartConversation(EnOssan* this, GlobalContext* globalCtx, Pl
EnOssan_TryPaybackMask(this, globalCtx);
return;
case OSSAN_HAPPY_STATE_ANGRY:
globalCtx->nextEntranceIndex = 0x1D1;
globalCtx->nextEntranceIndex = ENTR_MARKET_DAY_9;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_WHITE, TCS_FAST);
return;

View file

@ -663,7 +663,7 @@ void func_80B15424(EnTa* this, GlobalContext* globalCtx) {
func_80B15308(this);
if ((Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(globalCtx)) {
globalCtx->nextEntranceIndex = 0x5E4;
globalCtx->nextEntranceIndex = ENTR_SOUKO_2;
if (GET_EVENTINF(EVENTINF_HORSES_08)) {
globalCtx->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_WHITE, TCS_FAST);

View file

@ -378,7 +378,7 @@ void EnZl4_Init(Actor* thisx, GlobalContext* globalCtx) {
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ZL4_ANIM_0);
this->actionFunc = EnZl4_Idle;
} else {
if (gSaveContext.entranceIndex != 0x5F0) {
if (gSaveContext.entranceIndex != ENTR_NAKANIWA_1) {
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ZL4_ANIM_21);
this->csState = ZL4_CS_WAIT;
this->talkState = 0;
@ -770,7 +770,7 @@ s32 EnZl4_CsAskName(EnZl4* this, GlobalContext* globalCtx) {
this->talkTimer2++;
if (this->talkTimer2 == 130) {
globalCtx->msgCtx.msgMode = MSGMODE_PAUSED;
globalCtx->nextEntranceIndex = 0xA0;
globalCtx->nextEntranceIndex = ENTR_HIRAL_DEMO_0;
gSaveContext.nextCutsceneIndex = 0xFFF7;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_WHITE;

View file

@ -134,22 +134,22 @@ void ObjectKankyo_Init(Actor* thisx, GlobalContext* globalCtx) {
}
if (gSaveContext.cutsceneTrigger != 0) {
if (gSaveContext.entranceIndex == 0x0538) {
if (gSaveContext.entranceIndex == ENTR_GANONTIKA_2) {
this->effects[0].size = 0.1f;
}
if (gSaveContext.entranceIndex == 0x053C) {
if (gSaveContext.entranceIndex == ENTR_GANONTIKA_3) {
this->effects[1].size = 0.1f;
}
if (gSaveContext.entranceIndex == 0x0540) {
if (gSaveContext.entranceIndex == ENTR_GANONTIKA_4) {
this->effects[2].size = 0.1f;
}
if (gSaveContext.entranceIndex == 0x0544) {
if (gSaveContext.entranceIndex == ENTR_GANONTIKA_5) {
this->effects[3].size = 0.1f;
}
if (gSaveContext.entranceIndex == 0x0548) {
if (gSaveContext.entranceIndex == ENTR_GANONTIKA_6) {
this->effects[4].size = 0.1f;
}
if (gSaveContext.entranceIndex == 0x054C) {
if (gSaveContext.entranceIndex == ENTR_GANONTIKA_7) {
this->effects[5].size = 0.1f;
}
}
@ -222,8 +222,8 @@ void ObjectKankyo_Fairies(ObjectKankyo* this, GlobalContext* globalCtx) {
}
}
if (globalCtx->envCtx.unk_EE[3] < 64 &&
(gSaveContext.entranceIndex != 0x00EE || gSaveContext.sceneSetupIndex != 4 || globalCtx->envCtx.unk_EE[3])) {
if (globalCtx->envCtx.unk_EE[3] < 64 && (gSaveContext.entranceIndex != ENTR_SPOT04_0 ||
gSaveContext.sceneSetupIndex != 4 || globalCtx->envCtx.unk_EE[3])) {
globalCtx->envCtx.unk_EE[3] += 16;
}

View file

@ -3786,7 +3786,7 @@ s32 func_808382DC(Player* this, GlobalContext* globalCtx) {
if (sp68) {
Gameplay_TriggerRespawn(globalCtx);
func_800994A0(globalCtx);
Scene_SetTransitionForNextEntrance(globalCtx);
} else {
// Special case for getting crushed in Forest Temple's Checkboard Ceiling Hall or Shadow Temple's
// Falling Spike Trap Room, to respawn the player in a specific place
@ -4081,20 +4081,20 @@ s32 func_80838FB8(GlobalContext* globalCtx, Player* this) {
}
s16 D_808544F8[] = {
0x045B, // DMT from Magic Fairy Fountain
0x0482, // DMC from Double Defense Fairy Fountain
0x0340, // Hyrule Castle from Dins Fire Fairy Fountain
0x044B, // Kakariko from Potion Shop
0x02A2, // Market (child day) from Potion Shop
0x0201, // Kakariko from Bazaar
0x03B8, // Market (child day) from Bazaar
0x04EE, // Kakariko from House of Skulltulas
0x03C0, // Back Alley (day) from Bombchu Shop
0x0463, // Kakariko from Shooting Gallery
0x01CD, // Market (child day) from Shooting Gallery
0x0394, // Zoras Fountain from Farores Wind Fairy Fountain
0x0340, // Hyrule Castle from Dins Fire Fairy Fountain
0x057C, // Desert Colossus from Nayrus Love Fairy Fountain
ENTR_SPOT16_4, // DMT from Magic Fairy Fountain
ENTR_SPOT17_3, // DMC from Double Defense Fairy Fountain
ENTR_SPOT15_2, // Hyrule Castle from Dins Fire Fairy Fountain
ENTR_SPOT01_9, // Kakariko from Potion Shop
ENTR_MARKET_DAY_5, // Market (child day) from Potion Shop
ENTR_SPOT01_3, // Kakariko from Bazaar
ENTR_MARKET_DAY_6, // Market (child day) from Bazaar
ENTR_SPOT01_11, // Kakariko from House of Skulltulas
ENTR_MARKET_ALLEY_2, // Back Alley (day) from Bombchu Shop
ENTR_SPOT01_10, // Kakariko from Shooting Gallery
ENTR_MARKET_DAY_8, // Market (child day) from Shooting Gallery
ENTR_SPOT08_5, // Zoras Fountain from Farores Wind Fairy Fountain
ENTR_SPOT15_2, // Hyrule Castle from Dins Fire Fairy Fountain
ENTR_SPOT11_7, // Desert Colossus from Nayrus Love Fairy Fountain
};
u8 D_80854514[] = { 11, 9, 3, 5, 7, 0 };
@ -4123,7 +4123,7 @@ s32 func_80839034(GlobalContext* globalCtx, Player* this, CollisionPoly* poly, u
if (sp3C == 0) {
Gameplay_TriggerVoidOut(globalCtx);
func_800994A0(globalCtx);
Scene_SetTransitionForNextEntrance(globalCtx);
} else {
globalCtx->nextEntranceIndex = globalCtx->setupExitList[sp3C - 1];
if (globalCtx->nextEntranceIndex == 0x7FFF) {
@ -4134,7 +4134,7 @@ s32 func_80839034(GlobalContext* globalCtx, Player* this, CollisionPoly* poly, u
} else if (globalCtx->nextEntranceIndex >= 0x7FF9) {
globalCtx->nextEntranceIndex =
D_808544F8[D_80854514[globalCtx->nextEntranceIndex - 0x7FF9] + globalCtx->curSpawn];
func_800994A0(globalCtx);
Scene_SetTransitionForNextEntrance(globalCtx);
} else {
if (SurfaceType_GetSlope(&globalCtx->colCtx, poly, bgId) == 2) {
gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex = globalCtx->nextEntranceIndex;
@ -4142,7 +4142,7 @@ s32 func_80839034(GlobalContext* globalCtx, Player* this, CollisionPoly* poly, u
gSaveContext.respawnFlag = -2;
}
gSaveContext.unk_13C3 = 1;
func_800994A0(globalCtx);
Scene_SetTransitionForNextEntrance(globalCtx);
}
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
}
@ -12053,7 +12053,7 @@ s32 func_8084DFF4(GlobalContext* globalCtx, Player* this) {
} else {
if (Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_CLOSING) {
if (this->getItemId == GI_GAUNTLETS_SILVER) {
globalCtx->nextEntranceIndex = 0x0123;
globalCtx->nextEntranceIndex = ENTR_SPOT11_0;
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.nextCutsceneIndex = 0xFFF1;
globalCtx->transitionType = TRANS_TYPE_SANDSTORM_END;
@ -12110,7 +12110,9 @@ void func_8084E368(Player* this, GlobalContext* globalCtx) {
func_8084AEEC(this, &this->linearVelocity, 0.0f, this->actor.shape.rot.y);
}
static s16 D_808549D4[] = { 0x0600, 0x04F6, 0x0604, 0x01F1, 0x0568, 0x05F4 };
static s16 sWarpSongEntrances[] = {
ENTR_SPOT05_2, ENTR_SPOT17_4, ENTR_SPOT06_8, ENTR_SPOT11_5, ENTR_SPOT02_7, ENTR_TOKINOMA_7,
};
void func_8084E3C4(Player* this, GlobalContext* globalCtx) {
if (LinkAnimation_Update(globalCtx, &this->skelAnime)) {
@ -12144,7 +12146,7 @@ void func_8084E3C4(Player* this, GlobalContext* globalCtx) {
this->stateFlags2 &= ~(PLAYER_STATE2_23 | PLAYER_STATE2_24 | PLAYER_STATE2_25);
this->unk_6A8 = NULL;
} else if (globalCtx->msgCtx.ocarinaMode == OCARINA_MODE_02) {
gSaveContext.respawn[RESPAWN_MODE_RETURN].entranceIndex = D_808549D4[globalCtx->msgCtx.lastPlayedSong];
gSaveContext.respawn[RESPAWN_MODE_RETURN].entranceIndex = sWarpSongEntrances[globalCtx->msgCtx.lastPlayedSong];
gSaveContext.respawn[RESPAWN_MODE_RETURN].playerParams = 0x5FF;
gSaveContext.respawn[RESPAWN_MODE_RETURN].data = globalCtx->msgCtx.lastPlayedSong;
@ -12669,7 +12671,7 @@ void func_8084F88C(Player* this, GlobalContext* globalCtx) {
if (this->unk_84F != 0) {
if (globalCtx->sceneNum == 9) {
Gameplay_TriggerRespawn(globalCtx);
globalCtx->nextEntranceIndex = 0x0088;
globalCtx->nextEntranceIndex = ENTR_ICE_DOUKUTO_0;
} else if (this->unk_84F < 0) {
Gameplay_TriggerRespawn(globalCtx);
} else {

View file

@ -1458,7 +1458,7 @@ void FileChoose_LoadGame(GameState* thisx) {
this->state.running = false;
}
gSaveContext.respawn[0].entranceIndex = -1;
gSaveContext.respawn[0].entranceIndex = ENTR_LOAD_OPENING;
gSaveContext.respawnFlag = 0;
gSaveContext.seqId = (u8)NA_BGM_DISABLED;
gSaveContext.natureAmbienceId = 0xFF;

View file

@ -31,7 +31,7 @@ void Select_LoadGame(SelectContext* this, s32 entranceIndex) {
Audio_QueueSeqCmd(SEQ_PLAYER_BGM_MAIN << 24 | NA_BGM_STOP);
gSaveContext.entranceIndex = entranceIndex;
gSaveContext.respawnFlag = 0;
gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex = -1;
gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex = ENTR_LOAD_OPENING;
gSaveContext.seqId = (u8)NA_BGM_DISABLED;
gSaveContext.natureAmbienceId = 0xFF;
gSaveContext.showTitleCard = true;
@ -43,257 +43,258 @@ void Select_LoadGame(SelectContext* this, s32 entranceIndex) {
// "Translation" (Actual name)
static SceneSelectEntry sScenes[] = {
// "1: SPOT00" (Hyrule Field)
{ " 1:SPOT00", Select_LoadGame, 0x00CD },
{ " 1:SPOT00", Select_LoadGame, ENTR_SPOT00_0 },
// "2: SPOT01" (Kakariko Village)
{ " 2:SPOT01", Select_LoadGame, 0x00DB },
{ " 2:SPOT01", Select_LoadGame, ENTR_SPOT01_0 },
// "3: SPOT02" (Graveyard)
{ " 3:SPOT02", Select_LoadGame, 0x00E4 },
{ " 3:SPOT02", Select_LoadGame, ENTR_SPOT02_0 },
// "4: SPOT03" (Zora's River)
{ " 4:SPOT03", Select_LoadGame, 0x00EA },
{ " 4:SPOT03", Select_LoadGame, ENTR_SPOT03_0 },
// "5: SPOT04" (Kokiri Forest)
{ " 5:SPOT04", Select_LoadGame, 0x00EE },
{ " 5:SPOT04", Select_LoadGame, ENTR_SPOT04_0 },
// "6: SPOT05" (Sacred Forest Meadow)
{ " 6:SPOT05", Select_LoadGame, 0x00FC },
{ " 6:SPOT05", Select_LoadGame, ENTR_SPOT05_0 },
// "7: SPOT06" (Lake Hylia)
{ " 7:SPOT06", Select_LoadGame, 0x0102 },
{ " 7:SPOT06", Select_LoadGame, ENTR_SPOT06_0 },
// "8: SPOT07" (Zora's Domain)
{ " 8:SPOT07", Select_LoadGame, 0x0108 },
{ " 8:SPOT07", Select_LoadGame, ENTR_SPOT07_0 },
// "9: SPOT08" (Zora's Fountain)
{ " 9:SPOT08", Select_LoadGame, 0x010E },
{ " 9:SPOT08", Select_LoadGame, ENTR_SPOT08_0 },
// "10: SPOT09" (Gerudo Valley)
{ "10:SPOT09", Select_LoadGame, 0x0117 },
{ "10:SPOT09", Select_LoadGame, ENTR_SPOT09_0 },
// "11: SPOT10" (Lost Woods)
{ "11:SPOT10", Select_LoadGame, 0x011E },
{ "11:SPOT10", Select_LoadGame, ENTR_SPOT10_0 },
// "12: SPOT11" (Desert Colossus)
{ "12:SPOT11", Select_LoadGame, 0x0123 },
{ "12:SPOT11", Select_LoadGame, ENTR_SPOT11_0 },
// "13: SPOT12" (Gerudo's Fortress)
{ "13:SPOT12", Select_LoadGame, 0x0129 },
{ "13:SPOT12", Select_LoadGame, ENTR_SPOT12_0 },
// "14: SPOT13" (Haunted Wasteland)
{ "14:SPOT13", Select_LoadGame, 0x0130 },
{ "14:SPOT13", Select_LoadGame, ENTR_SPOT13_0 },
// "15: SPOT15" (Hyrule Castle)
{ "15:SPOT15", Select_LoadGame, 0x0138 },
{ "15:SPOT15", Select_LoadGame, ENTR_SPOT15_0 },
// "16: SPOT16" (Death Mountain Trail)
{ "16:SPOT16", Select_LoadGame, 0x013D },
{ "16:SPOT16", Select_LoadGame, ENTR_SPOT16_0 },
// "17: SPOT17" (Death Mountain Crater)
{ "17:SPOT17", Select_LoadGame, 0x0147 },
{ "17:SPOT17", Select_LoadGame, ENTR_SPOT17_0 },
// "18: SPOT18" (Goron City)
{ "18:SPOT18", Select_LoadGame, 0x014D },
{ "18:SPOT18", Select_LoadGame, ENTR_SPOT18_0 },
// "19: SPOT20" (Lon Lon Ranch)
{ "19:SPOT20", Select_LoadGame, 0x0157 },
{ "19:SPOT20", Select_LoadGame, ENTR_SPOT20_0 },
// "20: Chamber of Time" (Temple Of Time)
{ "20:" GFXP_HIRAGANA "トキノマ", Select_LoadGame, 0x0053 },
{ "20:" GFXP_HIRAGANA "トキノマ", Select_LoadGame, ENTR_TOKINOMA_0 },
// "21: Chamber of the Sages" (Chamber of the Sages)
{ "21:" GFXP_HIRAGANA "ケンジャノマ", Select_LoadGame, 0x006B },
{ "21:" GFXP_HIRAGANA "ケンジャノマ", Select_LoadGame, ENTR_KENJYANOMA_0 },
// "22: Target Range" (Shooting Gallery)
{ "22:" GFXP_HIRAGANA "シャテキジョウ", Select_LoadGame, 0x003B },
{ "22:" GFXP_HIRAGANA "シャテキジョウ", Select_LoadGame, ENTR_SYATEKIJYOU_0 },
// "23: Hyrule Garden Game" (Hyrule Garden Minigame)
{ "23:" GFXP_KATAKANA "ハイラル" GFXP_HIRAGANA "ニワ" GFXP_KATAKANA "ゲーム", Select_LoadGame, 0x007A },
{ "23:" GFXP_KATAKANA "ハイラル" GFXP_HIRAGANA "ニワ" GFXP_KATAKANA "ゲーム", Select_LoadGame, ENTR_HAIRAL_NIWA_0 },
// "24: Grave Dive Hole" (Grave (Redead))
{ "24:" GFXP_HIRAGANA "ハカシタトビコミアナ", Select_LoadGame, 0x031C },
{ "24:" GFXP_HIRAGANA "ハカシタトビコミアナ", Select_LoadGame, ENTR_HAKAANA_0 },
// "25: Grave Dive Hole 2" (Grave (Fairy's Fountain))
{ "25:" GFXP_HIRAGANA "ハカシタトビコミアナ 2", Select_LoadGame, 0x004B },
{ "25:" GFXP_HIRAGANA "ハカシタトビコミアナ 2", Select_LoadGame, ENTR_HAKAANA2_0 },
// "26: Royal Family's Grave" (Royal Family's Tomb)
{ "26:" GFXP_HIRAGANA "オウケ ノ ハカアナ", Select_LoadGame, 0x002D },
{ "26:" GFXP_HIRAGANA "オウケ ノ ハカアナ", Select_LoadGame, ENTR_HAKAANA_OUKE_0 },
// "27: Great Fairy's Fountain" (Great Fairy's Fountain (Upgrades))
{ "27:" GFXP_HIRAGANA "ダイヨウセイノイズミ", Select_LoadGame, 0x0315 },
{ "27:" GFXP_HIRAGANA "ダイヨウセイノイズミ", Select_LoadGame, ENTR_DAIYOUSEI_IZUMI_0 },
// "28: Fairy Dive Hole" (Fairy's Fountain (Healing Fairies))
{ "28:" GFXP_HIRAGANA "トビコミ ヨウセイ アナ", Select_LoadGame, 0x036D },
{ "28:" GFXP_HIRAGANA "トビコミ ヨウセイ アナ", Select_LoadGame, ENTR_YOUSEI_IZUMI_TATE_0 },
// "29: Magic Stone Fairy's Fountain" (Great Fairy's Fountain (Spells))
{ "29:" GFXP_HIRAGANA "マホウセキ ヨウセイノイズミ", Select_LoadGame, 0x0371 },
{ "29:" GFXP_HIRAGANA "マホウセキ ヨウセイノイズミ", Select_LoadGame, ENTR_YOUSEI_IZUMI_YOKO_0 },
// "30: Final Battle With Ganon" (Battle With Ganon)
{ "30:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "サイシュウセン", Select_LoadGame, 0x043F },
{ "30:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "サイシュウセン", Select_LoadGame, ENTR_GANON_FINAL_0 },
// "31: Hyrule Inner Garden" (Castle Courtyard)
{ "31:" GFXP_KATAKANA "ハイラル" GFXP_HIRAGANA "ナカニワ", Select_LoadGame, 0x0400 },
{ "31:" GFXP_KATAKANA "ハイラル" GFXP_HIRAGANA "ナカニワ", Select_LoadGame, ENTR_NAKANIWA_0 },
// "32: Fishing" (Fishing Pond)
{ "32:" GFXP_HIRAGANA "ツリボリ", Select_LoadGame, 0x045F },
{ "32:" GFXP_HIRAGANA "ツリボリ", Select_LoadGame, ENTR_TURIBORI_0 },
// "33: Bombchu Bowling" (Bombchu Bowling Alley)
{ "33:" GFXP_KATAKANA "ボムチュウボーリング", Select_LoadGame, 0x0507 },
{ "33:" GFXP_KATAKANA "ボムチュウボーリング", Select_LoadGame, ENTR_BOWLING_0 },
// "34: Lon Lon Ranch - Storehouse 1" (Talon's House)
{ "34:" GFXP_KATAKANA "ロンロン" GFXP_HIRAGANA "ボクジョウ ソウコ 1", Select_LoadGame, 0x004F },
{ "34:" GFXP_KATAKANA "ロンロン" GFXP_HIRAGANA "ボクジョウ ソウコ 1", Select_LoadGame, ENTR_SOUKO_0 },
// "35: Lon Lon Ranch - Storehouse 2" (Ranch Silo)
{ "35:" GFXP_KATAKANA "ロンロン" GFXP_HIRAGANA "ボクジョウ ソウコ 2", Select_LoadGame, 0x05D0 },
{ "35:" GFXP_KATAKANA "ロンロン" GFXP_HIRAGANA "ボクジョウ ソウコ 2", Select_LoadGame, ENTR_SOUKO_1 },
// "36: Lookout Hut" (Guard House)
{ "36:" GFXP_HIRAGANA "ミハリ ゴヤ", Select_LoadGame, 0x007E },
{ "36:" GFXP_HIRAGANA "ミハリ ゴヤ", Select_LoadGame, ENTR_MIHARIGOYA_0 },
// "37: Magic Potion Shop" (Granny's Potion Shop)
{ "37:" GFXP_HIRAGANA "マホウ ノ クスリヤ", Select_LoadGame, 0x0072 },
{ "37:" GFXP_HIRAGANA "マホウ ノ クスリヤ", Select_LoadGame, ENTR_MAHOUYA_0 },
// "38: Treasure Chest Shop" (Treasure Chest Game)
{ "38:" GFXP_HIRAGANA "タカラバコヤ", Select_LoadGame, 0x0063 },
{ "38:" GFXP_HIRAGANA "タカラバコヤ", Select_LoadGame, ENTR_TAKARAYA_0 },
// "39: Gold Skulltula House" (House of Skulltula)
{ "39:" GFXP_HIRAGANA "キン " GFXP_KATAKANA "スタルチュラ ハウス", Select_LoadGame, 0x0550 },
{ "39:" GFXP_HIRAGANA "キン " GFXP_KATAKANA "スタルチュラ ハウス", Select_LoadGame, ENTR_KINSUTA_0 },
// "40: Castle Town - Entrance" (Market Entrance)
{ "40:" GFXP_HIRAGANA "ジョウカマチ イリグチ", Select_LoadGame, 0x0033 },
{ "40:" GFXP_HIRAGANA "ジョウカマチ イリグチ", Select_LoadGame, ENTR_ENTRA_0 },
// "41: Castle Town" (Market)
{ "41:" GFXP_HIRAGANA "ジョウカマチ", Select_LoadGame, 0x00B1 },
{ "41:" GFXP_HIRAGANA "ジョウカマチ", Select_LoadGame, ENTR_MARKET_DAY_0 },
// "42: Back Alley" (Back Alley)
{ "42:" GFXP_HIRAGANA "ウラロジ", Select_LoadGame, 0x00AD },
{ "42:" GFXP_HIRAGANA "ウラロジ", Select_LoadGame, ENTR_MARKET_ALLEY_0 },
// "43: In Front of the Temple of Time" (Temple of Time Exterior)
{ "43:" GFXP_HIRAGANA "トキノシンデン マエ", Select_LoadGame, 0x0171 },
{ "43:" GFXP_HIRAGANA "トキノシンデン マエ", Select_LoadGame, ENTR_SHRINE_0 },
// "44: Link's House" (Link's House)
{ "44:" GFXP_HIRAGANA "リンクノイエ", Select_LoadGame, 0x00BB },
{ "44:" GFXP_HIRAGANA "リンクノイエ", Select_LoadGame, ENTR_LINK_HOME_0 },
// "45: Kakariko Village Row House" (Carpenter Boss's House)
{ "45:" GFXP_KATAKANA "カカリコ" GFXP_HIRAGANA "ムラノナガヤ", Select_LoadGame, 0x02FD },
{ "45:" GFXP_KATAKANA "カカリコ" GFXP_HIRAGANA "ムラノナガヤ", Select_LoadGame, ENTR_KAKARIKO_0 },
// "46: Back Alley House" (Back Alley House (Man in Green))
{ "46:" GFXP_HIRAGANA "ウラロジノ イエ", Select_LoadGame, 0x043B },
{ "46:" GFXP_HIRAGANA "ウラロジノ イエ", Select_LoadGame, ENTR_KAKARIKO3_0 },
// "47: Kokiri Village - Know-It-All Brothers' House" (Know-It-All Brothers' House)
{ "47:" GFXP_HIRAGANA "コキリノムラ モノシリキョウダイノイエ", Select_LoadGame, 0x00C9 },
{ "47:" GFXP_HIRAGANA "コキリノムラ モノシリキョウダイノイエ", Select_LoadGame, ENTR_KOKIRI_HOME_0 },
// "48: Kokiri Village - Twins' House" (Twins' House)
{ "48:" GFXP_HIRAGANA "コキリノムラ フタゴノイエ", Select_LoadGame, 0x009C },
{ "48:" GFXP_HIRAGANA "コキリノムラ フタゴノイエ", Select_LoadGame, ENTR_KOKIRI_HOME3_0 },
// "49: Kokiri Village - Mido's House" (Mido's House)
{ "49:" GFXP_HIRAGANA "コキリノムラ " GFXP_KATAKANA "ミド" GFXP_HIRAGANA "ノイエ", Select_LoadGame, 0x0433 },
{ "49:" GFXP_HIRAGANA "コキリノムラ " GFXP_KATAKANA "ミド" GFXP_HIRAGANA "ノイエ", Select_LoadGame, ENTR_KOKIRI_HOME4_0 },
// "50: Kokiri Village - Saria's House" (Saria's House)
{ "50:" GFXP_HIRAGANA "コキリノムラ " GFXP_KATAKANA "サリア" GFXP_HIRAGANA "ノイエ", Select_LoadGame, 0x0437 },
{ "50:" GFXP_HIRAGANA "コキリノムラ " GFXP_KATAKANA "サリア" GFXP_HIRAGANA "ノイエ", Select_LoadGame, ENTR_KOKIRI_HOME5_0 },
// "51: Stable" (Stable)
{ "51:" GFXP_HIRAGANA "ウマゴヤ", Select_LoadGame, 0x02F9 },
{ "51:" GFXP_HIRAGANA "ウマゴヤ", Select_LoadGame, ENTR_MALON_STABLE_0 },
// "52: Grave Keeper's House" (Gravekeeper's Hut)
{ "52:" GFXP_HIRAGANA "ハカモリノイエ", Select_LoadGame, 0x030D },
{ "52:" GFXP_HIRAGANA "ハカモリノイエ", Select_LoadGame, ENTR_HUT_0 },
// "53: Back Alley - Dog Lady's House" (Back Alley House)
{ "53:" GFXP_HIRAGANA "ウラロジ イヌオバサンノイエ", Select_LoadGame, 0x0398 },
{ "53:" GFXP_HIRAGANA "ウラロジ イヌオバサンノイエ", Select_LoadGame, ENTR_IMPA_0 },
// "54: Kakariko Village - Impa's House" (Impa's House)
{ "54:" GFXP_HIRAGANA "カカリコムラ " GFXP_KATAKANA "インパ" GFXP_HIRAGANA "ノイエ", Select_LoadGame, 0x039C },
{ "54:" GFXP_HIRAGANA "カカリコムラ " GFXP_KATAKANA "インパ" GFXP_HIRAGANA "ノイエ", Select_LoadGame, ENTR_LABO_0 },
// "55: Hylia Laboratory" (Lakeside Laboratory)
{ "55:" GFXP_KATAKANA "ハイリア" GFXP_HIRAGANA " ケンキュウジョ", Select_LoadGame, 0x0043 },
{ "55:" GFXP_KATAKANA "ハイリア" GFXP_HIRAGANA " ケンキュウジョ", Select_LoadGame, ENTR_HYLIA_LABO_0 },
// "56: Tent" (Carpenters' Tent)
{ "56:" GFXP_KATAKANA "テント", Select_LoadGame, 0x03A0 },
{ "56:" GFXP_KATAKANA "テント", Select_LoadGame, ENTR_TENT_0 },
// "57: Shield Shop" (Bazaar)
{ "57:" GFXP_HIRAGANA "タテノミセ", Select_LoadGame, 0x00B7 },
{ "57:" GFXP_HIRAGANA "タテノミセ", Select_LoadGame, ENTR_SHOP1_0 },
// "58: Kokiri Shop" (Kokiri Shop)
{ "58:" GFXP_HIRAGANA "コキリゾクノミセ", Select_LoadGame, 0x00C1 },
{ "58:" GFXP_HIRAGANA "コキリゾクノミセ", Select_LoadGame, ENTR_KOKIRI_SHOP_0 },
// "59: Goron Shop" (Goron Shop)
{ "59:" GFXP_KATAKANA "ゴロン" GFXP_HIRAGANA "ノミセ", Select_LoadGame, 0x037C },
{ "59:" GFXP_KATAKANA "ゴロン" GFXP_HIRAGANA "ノミセ", Select_LoadGame, ENTR_GOLON_0 },
// "60: Zora Shop" (Zora Shop)
{ "60:" GFXP_KATAKANA "ゾーラ" GFXP_HIRAGANA "ノミセ", Select_LoadGame, 0x0380 },
{ "60:" GFXP_KATAKANA "ゾーラ" GFXP_HIRAGANA "ノミセ", Select_LoadGame, ENTR_ZOORA_0 },
// "61: Kakariko Village - Potion Shop" (Kakariko Potion Shop)
{ "61:" GFXP_KATAKANA "カカリコ" GFXP_HIRAGANA "ムラ クスリヤ", Select_LoadGame, 0x0384 },
{ "61:" GFXP_KATAKANA "カカリコ" GFXP_HIRAGANA "ムラ クスリヤ", Select_LoadGame, ENTR_DRAG_0 },
// "62: Castle Town - Potion Shop" (Market Potion Shop)
{ "62:" GFXP_HIRAGANA "ジョウカマチ クスリヤ", Select_LoadGame, 0x0388 },
{ "62:" GFXP_HIRAGANA "ジョウカマチ クスリヤ", Select_LoadGame, ENTR_ALLEY_SHOP_0 },
// "63: Back Alley - Night Shop" (Bombchu Shop)
{ "63:" GFXP_HIRAGANA "ウラロジ ヨルノミセ", Select_LoadGame, 0x0390 },
{ "63:" GFXP_HIRAGANA "ウラロジ ヨルノミセ", Select_LoadGame, ENTR_NIGHT_SHOP_0 },
// "64: Mask Shop" (Happy Mask Shop)
{ "64:" GFXP_HIRAGANA "オメンヤ", Select_LoadGame, 0x0530 },
{ "64:" GFXP_HIRAGANA "オメンヤ", Select_LoadGame, ENTR_FACE_SHOP_0 },
// "65: Gerudo Training Area" (Gerudo Training Ground)
{ "65:" GFXP_KATAKANA "ゲルド" GFXP_HIRAGANA "ノシュウレンジョウ", Select_LoadGame, 0x0008 },
{ "65:" GFXP_KATAKANA "ゲルド" GFXP_HIRAGANA "ノシュウレンジョウ", Select_LoadGame, ENTR_MEN_0 },
// "66: Fairy Tree Dungeon" (Inside the Deku Tree)
{ "66:" GFXP_HIRAGANA "ヨウセイノキノ " GFXP_KATAKANA "ダンジョン", Select_LoadGame, 0x0000 },
{ "66:" GFXP_HIRAGANA "ヨウセイノキノ " GFXP_KATAKANA "ダンジョン", Select_LoadGame, ENTR_YDAN_0 },
// "67: Fairy Tree Dungeon - Boss" (Gohma's Lair)
{ "67:" GFXP_HIRAGANA "ヨウセイノキノ " GFXP_KATAKANA "ダンジョン ボス", Select_LoadGame, 0x040F },
{ "67:" GFXP_HIRAGANA "ヨウセイノキノ " GFXP_KATAKANA "ダンジョン ボス", Select_LoadGame, ENTR_YDAN_BOSS_0 },
// "68: Dondogo Dungeon" (Dodongo's Cavern)
{ "68:" GFXP_KATAKANA "ドドンゴ ダンジョン", Select_LoadGame, 0x0004 },
{ "68:" GFXP_KATAKANA "ドドンゴ ダンジョン", Select_LoadGame, ENTR_DDAN_0 },
// "69: Dondogo Dungeon - Boss" (King Dodongo's Lair)
{ "69:" GFXP_KATAKANA "ドドンゴ ダンジョン ボス", Select_LoadGame, 0x040B },
{ "69:" GFXP_KATAKANA "ドドンゴ ダンジョン ボス", Select_LoadGame, ENTR_DDAN_BOSS_0 },
// "70: Giant Fish Dungeon" (Inside Jabu-Jabu's Belly)
{ "70:" GFXP_HIRAGANA "キョダイギョ " GFXP_KATAKANA "ダンジョン", Select_LoadGame, 0x0028 },
{ "70:" GFXP_HIRAGANA "キョダイギョ " GFXP_KATAKANA "ダンジョン", Select_LoadGame, ENTR_BDAN_0 },
// "71: Giant Fish Dungeon - Boss" (Barinade's Lair)
{ "71:" GFXP_HIRAGANA "キョダイギョ " GFXP_KATAKANA "ダンジョン ボス", Select_LoadGame, 0x0301 },
{ "71:" GFXP_HIRAGANA "キョダイギョ " GFXP_KATAKANA "ダンジョン ボス", Select_LoadGame, ENTR_BDAN_BOSS_0 },
// "72: Forest Temple" (Forest Temple)
{ "72:" GFXP_HIRAGANA "モリノシンデン", Select_LoadGame, 0x0169 },
{ "72:" GFXP_HIRAGANA "モリノシンデン", Select_LoadGame, ENTR_BMORI1_0 },
// "73: Forest Temple - Boss" (Phantom Ganon's Lair)
{ "73:" GFXP_HIRAGANA "モリノシンデン " GFXP_KATAKANA "ボス", Select_LoadGame, 0x000C },
{ "73:" GFXP_HIRAGANA "モリノシンデン " GFXP_KATAKANA "ボス", Select_LoadGame, ENTR_MORIBOSSROOM_0 },
// "74: Dungeon Below the Well" (Bottom of the Well)
{ "74:" GFXP_HIRAGANA "イドシタ " GFXP_KATAKANA "ダンジョン", Select_LoadGame, 0x0098 },
{ "74:" GFXP_HIRAGANA "イドシタ " GFXP_KATAKANA "ダンジョン", Select_LoadGame, ENTR_HAKADANCH_0 },
// "75: Dungeon Beneath the Graves" (Shadow Temple)
{ "75:" GFXP_HIRAGANA "ハカシタ " GFXP_KATAKANA "ダンジョン", Select_LoadGame, 0x0037 },
{ "75:" GFXP_HIRAGANA "ハカシタ " GFXP_KATAKANA "ダンジョン", Select_LoadGame, ENTR_HAKADAN_0 },
// "76: Dungeon Beneath the Graves - Boss" (Bongo Bongo's Lair)
{ "76:" GFXP_HIRAGANA "ハカシタ " GFXP_KATAKANA "ダンジョン ボス", Select_LoadGame, 0x0413 },
{ "76:" GFXP_HIRAGANA "ハカシタ " GFXP_KATAKANA "ダンジョン ボス", Select_LoadGame, ENTR_HAKADAN_BS_0 },
// "77: Fire Temple" (Fire Temple)
{ "77:" GFXP_HIRAGANA "ヒノシンデン", Select_LoadGame, 0x0165 },
{ "77:" GFXP_HIRAGANA "ヒノシンデン", Select_LoadGame, ENTR_HIDAN_0 },
// "78: Fire Temple - Boss" (Volvagia's Lair)
{ "78:" GFXP_HIRAGANA "ヒノシンデン " GFXP_KATAKANA "ボス", Select_LoadGame, 0x0305 },
{ "78:" GFXP_HIRAGANA "ヒノシンデン " GFXP_KATAKANA "ボス", Select_LoadGame, ENTR_FIRE_BS_0 },
// "79: Water Temple" (Water Temple)
{ "79:" GFXP_HIRAGANA "ミズノシンデン", Select_LoadGame, 0x0010 },
{ "79:" GFXP_HIRAGANA "ミズノシンデン", Select_LoadGame, ENTR_MIZUSIN_0 },
// "80: Water Temple - Boss" (Morpha's Lair)
{ "80:" GFXP_HIRAGANA "ミズノシンデン " GFXP_KATAKANA "ボス", Select_LoadGame, 0x0417 },
{ "80:" GFXP_HIRAGANA "ミズノシンデン " GFXP_KATAKANA "ボス", Select_LoadGame, ENTR_MIZUSIN_BS_0 },
// "81: Evil Goddess Statue Dungeon" (Spirit Temple)
{ "81:" GFXP_HIRAGANA "ジャシンゾウ " GFXP_KATAKANA "ダンジョン", Select_LoadGame, 0x0082 },
{ "81:" GFXP_HIRAGANA "ジャシンゾウ " GFXP_KATAKANA "ダンジョン", Select_LoadGame, ENTR_JYASINZOU_0 },
// "82: Evil Goddess Statue Dungeon - Iron Knuckle" (Iron Knuckle's Lair)
{ "82:" GFXP_HIRAGANA "ジャシンゾウ " GFXP_KATAKANA "ダンジョン アイアンナック", Select_LoadGame, 0x008D },
{ "82:" GFXP_HIRAGANA "ジャシンゾウ " GFXP_KATAKANA "ダンジョン アイアンナック", Select_LoadGame, ENTR_JYASINBOSS_0 },
// "83: Evil Goddess Statue Dungeon - Boss" (Twinrova's Lair)
{ "83:" GFXP_HIRAGANA "ジャシンゾウ " GFXP_KATAKANA "ダンジョン ボス", Select_LoadGame, 0x05EC },
{ "83:" GFXP_HIRAGANA "ジャシンゾウ " GFXP_KATAKANA "ダンジョン ボス", Select_LoadGame, ENTR_JYASINBOSS_2 },
// "84: Ganon's Tower" (Ganon's Tower)
{ "84:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "ノトウ", Select_LoadGame, 0x041B },
{ "84:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "ノトウ", Select_LoadGame, ENTR_GANON_0 },
// "85: Ganon's Tower - Boss" (Ganondorf's Lair)
{ "85:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "ノトウ" GFXP_KATAKANA "ボス", Select_LoadGame, 0x041F },
{ "85:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "ノトウ" GFXP_KATAKANA "ボス", Select_LoadGame, ENTR_GANON_BOSS_0 },
// "86: Ice Cavern" (Ice Cavern)
{ "86:" GFXP_HIRAGANA "コオリノドウクツ", Select_LoadGame, 0x0088 },
{ "86:" GFXP_HIRAGANA "コオリノドウクツ", Select_LoadGame, ENTR_ICE_DOUKUTO_0 },
// "87: Relay Beneath the Graves" (Dampé's Grave)
{ "87:" GFXP_HIRAGANA "ハカシタ" GFXP_KATAKANA "リレー", Select_LoadGame, 0x044F },
{ "87:" GFXP_HIRAGANA "ハカシタ" GFXP_KATAKANA "リレー", Select_LoadGame, ENTR_HAKASITARELAY_0 },
// "88: Ganon's Basement Dungeon" (Inside Ganon's Castle)
{ "88:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "チカ " GFXP_KATAKANA "ダンジョン", Select_LoadGame, 0x0467 },
{ "88:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "チカ " GFXP_KATAKANA "ダンジョン", Select_LoadGame, ENTR_GANONTIKA_0 },
// "89: Final Battle With Ganon - Cutscene & Battle" (Ganondorf's Death Scene & Tower Escape Exterior)
{ "89:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "サイシュウセン " GFXP_KATAKANA "デモ & バトル", Select_LoadGame, 0x0517 },
{ "89:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "サイシュウセン " GFXP_KATAKANA "デモ & バトル", Select_LoadGame,
ENTR_GANON_DEMO_0 },
// "90: Ganon's Tower Aftermath 1" (Escaping Ganon's Tower 1)
{ "90:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "ノトウ ソノゴ 1", Select_LoadGame, 0x0179 },
{ "90:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "ノトウ ソノゴ 1", Select_LoadGame, ENTR_GANON_SONOGO_0 },
// "91: Ganon's Tower Aftermath 2" (Escaping Ganon's Tower 2)
{ "91:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "ノトウ ソノゴ 2", Select_LoadGame, 0x01B5 },
{ "91:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "ノトウ ソノゴ 2", Select_LoadGame, ENTR_GANON_SONOGO_2 },
// "92: Ganon's Tower Aftermath 3" (Escaping Ganon's Tower 3)
{ "92:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "ノトウ ソノゴ 3", Select_LoadGame, 0x03DC },
{ "92:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "ノトウ ソノゴ 3", Select_LoadGame, ENTR_GANON_SONOGO_4 },
// "93: Ganon's Tower Aftermath 4" (Escaping Ganon's Tower 4)
{ "93:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "ノトウ ソノゴ 4", Select_LoadGame, 0x03E4 },
{ "93:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "ノトウ ソノゴ 4", Select_LoadGame, ENTR_GANON_SONOGO_6 },
// "94: Ganon's Basement Aftermath" (Escaping Ganon's Castle)
{ "94:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "チカ ソノゴ", Select_LoadGame, 0x056C },
{ "94:" GFXP_KATAKANA "ガノン" GFXP_HIRAGANA "チカ ソノゴ", Select_LoadGame, ENTR_GANONTIKA_SONOGO_0 },
// "95: Gerudo Passage 1-2" (Thieves' Hideout 1)
{ "95:" GFXP_KATAKANA "ゲルド" GFXP_HIRAGANA "ツウロ 1-2", Select_LoadGame, 0x0486 },
{ "95:" GFXP_KATAKANA "ゲルド" GFXP_HIRAGANA "ツウロ 1-2", Select_LoadGame, ENTR_GERUDOWAY_0 },
// "96: Gerudo Passage 3-4 9-10" (Thieves' Hideout 2)
{ "96:" GFXP_KATAKANA "ゲルド" GFXP_HIRAGANA "ツウロ 3-4 9-10", Select_LoadGame, 0x048E },
{ "96:" GFXP_KATAKANA "ゲルド" GFXP_HIRAGANA "ツウロ 3-4 9-10", Select_LoadGame, ENTR_GERUDOWAY_2 },
// "97: Gerudo Passage 5-6" (Thieves' Hideout 3)
{ "97:" GFXP_KATAKANA "ゲルド" GFXP_HIRAGANA "ツウロ 5-6", Select_LoadGame, 0x0496 },
{ "97:" GFXP_KATAKANA "ゲルド" GFXP_HIRAGANA "ツウロ 5-6", Select_LoadGame, ENTR_GERUDOWAY_4 },
// "98: Gerudo Passage 7-8" (Thieves' Hideout 4)
{ "98:" GFXP_KATAKANA "ゲルド" GFXP_HIRAGANA "ツウロ 7-8", Select_LoadGame, 0x049E },
{ "98:" GFXP_KATAKANA "ゲルド" GFXP_HIRAGANA "ツウロ 7-8", Select_LoadGame, ENTR_GERUDOWAY_6 },
// "99: Gerudo Passage 11-12" (Thieves' Hideout 5)
{ "99:" GFXP_KATAKANA "ゲルド" GFXP_HIRAGANA "ツウロ 11-12", Select_LoadGame, 0x04AE },
{ "99:" GFXP_KATAKANA "ゲルド" GFXP_HIRAGANA "ツウロ 11-12", Select_LoadGame, ENTR_GERUDOWAY_10 },
// "100: Gerudo Passage 13" (Thieves' Hideout 6)
{ "100:" GFXP_KATAKANA "ゲルド" GFXP_HIRAGANA "ツウロ 13", Select_LoadGame, 0x0570 },
{ "100:" GFXP_KATAKANA "ゲルド" GFXP_HIRAGANA "ツウロ 13", Select_LoadGame, ENTR_GERUDOWAY_12 },
// "101: Hidden Dive Hole 0" (Grotto 0 - Gossip Stone & Chest)
{ "101:" GFXP_HIRAGANA "カクシトビコミアナ 0", Select_LoadGame, 0x003F },
{ "101:" GFXP_HIRAGANA "カクシトビコミアナ 0", Select_LoadGame, ENTR_KAKUSIANA_0 },
// "102: Hidden Dive Hole 1" (Grotto 1 - Skulltula & Gold Skulltula)
{ "102:" GFXP_HIRAGANA "カクシトビコミアナ 1", Select_LoadGame, 0x0598 },
{ "102:" GFXP_HIRAGANA "カクシトビコミアナ 1", Select_LoadGame, ENTR_KAKUSIANA_1 },
// "103: Hidden Dive Hole 2" (Grotto 2 - Business Scrub & Heart Piece)
{ "103:" GFXP_HIRAGANA "カクシトビコミアナ 2", Select_LoadGame, 0x059C },
{ "103:" GFXP_HIRAGANA "カクシトビコミアナ 2", Select_LoadGame, ENTR_KAKUSIANA_2 },
// "104: Hidden Dive Hole 3" (Grotto 3 - Redeads)
{ "104:" GFXP_HIRAGANA "カクシトビコミアナ 3", Select_LoadGame, 0x05A0 },
{ "104:" GFXP_HIRAGANA "カクシトビコミアナ 3", Select_LoadGame, ENTR_KAKUSIANA_3 },
// "105: Hidden Dive Hole 4" (Grotto 4 - 3 Business Scrubs)
{ "105:" GFXP_HIRAGANA "カクシトビコミアナ 4", Select_LoadGame, 0x05A4 },
{ "105:" GFXP_HIRAGANA "カクシトビコミアナ 4", Select_LoadGame, ENTR_KAKUSIANA_4 },
// "106: Hidden Dive Hole 5" (Grotto 5 - Gossip Stone, Skulltula, Cow)
{ "106:" GFXP_HIRAGANA "カクシトビコミアナ 5", Select_LoadGame, 0x05A8 },
{ "106:" GFXP_HIRAGANA "カクシトビコミアナ 5", Select_LoadGame, ENTR_KAKUSIANA_5 },
// "107: Hidden Dive Hole 6" (Grotto 6 - Octorok)
{ "107:" GFXP_HIRAGANA "カクシトビコミアナ 6", Select_LoadGame, 0x05AC },
{ "107:" GFXP_HIRAGANA "カクシトビコミアナ 6", Select_LoadGame, ENTR_KAKUSIANA_6 },
// "108: Hidden Dive Hole 7" (Grotto 7 - Business Scrub & Deku Nut Upgrade)
{ "108:" GFXP_HIRAGANA "カクシトビコミアナ 7", Select_LoadGame, 0x05B0 },
{ "108:" GFXP_HIRAGANA "カクシトビコミアナ 7", Select_LoadGame, ENTR_KAKUSIANA_7 },
// "109: Hidden Dive Hole 8" (Grotto 8 - 2 Wolfos)
{ "109:" GFXP_HIRAGANA "カクシトビコミアナ 8", Select_LoadGame, 0x05B4 },
{ "109:" GFXP_HIRAGANA "カクシトビコミアナ 8", Select_LoadGame, ENTR_KAKUSIANA_8 },
// "110: Hidden Dive Hole 9" (Grotto 9 - Bombable Walls)
{ "110:" GFXP_HIRAGANA "カクシトビコミアナ 9", Select_LoadGame, 0x05B8 },
{ "110:" GFXP_HIRAGANA "カクシトビコミアナ 9", Select_LoadGame, ENTR_KAKUSIANA_9 },
// "111: Hidden Dive Hole 10" (Grotto 10 - 2 Business Scrubs)
{ "111:" GFXP_HIRAGANA "カクシトビコミアナ 10", Select_LoadGame, 0x05BC },
{ "111:" GFXP_HIRAGANA "カクシトビコミアナ 10", Select_LoadGame, ENTR_KAKUSIANA_10 },
// "112: Hidden Dive Hole 11" (Grotto 11 - Tektite & Heart Piece)
{ "112:" GFXP_HIRAGANA "カクシトビコミアナ 11", Select_LoadGame, 0x05C0 },
{ "112:" GFXP_HIRAGANA "カクシトビコミアナ 11", Select_LoadGame, ENTR_KAKUSIANA_11 },
// "113: Hidden Dive Hole 12" (Grotto 12 - Deku Stage)
{ "113:" GFXP_HIRAGANA "カクシトビコミアナ 12", Select_LoadGame, 0x05C4 },
{ "113:" GFXP_HIRAGANA "カクシトビコミアナ 12", Select_LoadGame, ENTR_KAKUSIANA_12 },
// "114: Hidden Dive Hole 13" (Grotto 13 - Rupees & Cow)
{ "114:" GFXP_HIRAGANA "カクシトビコミアナ 13", Select_LoadGame, 0x05FC },
{ "114:" GFXP_HIRAGANA "カクシトビコミアナ 13", Select_LoadGame, ENTR_KAKUSIANA_13 },
// "115: Hyrule Cutscenes" (Cutscene Map)
{ "115:" GFXP_KATAKANA "ハイラル デモ", Select_LoadGame, 0x00A0 },
{ "115:" GFXP_KATAKANA "ハイラル デモ", Select_LoadGame, ENTR_HIRAL_DEMO_0 },
// "116: Special Room (Treasure Chest Warp)" (Ganondorf Test Room)
{ "116:" GFXP_HIRAGANA "ベッシツ (タカラバコ" GFXP_KATAKANA "ワープ)", Select_LoadGame, 0x0520 },
{ "116:" GFXP_HIRAGANA "ベッシツ (タカラバコ" GFXP_KATAKANA "ワープ)", Select_LoadGame, ENTR_BESITU_0 },
// "117: Sasaki Test" (Sasa Test)
{ "117:" GFXP_HIRAGANA "ササ" GFXP_KATAKANA "テスト", Select_LoadGame, 0x0018 },
{ "117:" GFXP_HIRAGANA "ササ" GFXP_KATAKANA "テスト", Select_LoadGame, ENTR_SASATEST_0 },
// "118: Test Map" (Jungle Gym)
{ "118:" GFXP_KATAKANA "テストマップ", Select_LoadGame, 0x0094 },
{ "118:" GFXP_KATAKANA "テストマップ", Select_LoadGame, ENTR_TEST01_0 },
// "119: Test Room" (Treasure Chest Room)
{ "119:" GFXP_KATAKANA "テストルーム", Select_LoadGame, 0x0024 },
{ "119:" GFXP_KATAKANA "テストルーム", Select_LoadGame, ENTR_TESTROOM_0 },
// "120: Stalfos Miniboss Room" (Stalfos Miniboss Room)
{ "120:" GFXP_HIRAGANA "チュウ" GFXP_KATAKANA "スタロフォス" GFXP_HIRAGANA "ベヤ", Select_LoadGame, 0x001C },
{ "120:" GFXP_HIRAGANA "チュウ" GFXP_KATAKANA "スタロフォス" GFXP_HIRAGANA "ベヤ", Select_LoadGame, ENTR_SYOTES_0 },
// "121: Boss Stalfos Room" (Stalfos Boss Room)
{ "121:" GFXP_KATAKANA "ボススタロフォス" GFXP_HIRAGANA "ベヤ", Select_LoadGame, 0x0020 },
{ "121:" GFXP_KATAKANA "ボススタロフォス" GFXP_HIRAGANA "ベヤ", Select_LoadGame, ENTR_SYOTES2_0 },
// "122: Stal" (Sutaru)
{ "122:Sutaru", Select_LoadGame, 0x0047 },
{ "122:Sutaru", Select_LoadGame, ENTR_SUTARU_0 },
// "123: Test Area" (Shooting Gallery)
{ "123:jikkenjyou", Select_LoadGame, 0x02EA },
{ "123:jikkenjyou", Select_LoadGame, ENTR_TEST_SYATEKIJYOU_0 },
// "124: Depth Test" (Depth Test)
{ "124:depth" GFXP_KATAKANA "テスト", Select_LoadGame, 0x00B6 },
{ "124:depth" GFXP_KATAKANA "テスト", Select_LoadGame, ENTR_DEPTH_TEST_0 },
// "125: Hyrule Garden Game 2" (Early Hyrule Garden Game)
{ "125:" GFXP_KATAKANA "ハイラル" GFXP_HIRAGANA "ニワ" GFXP_KATAKANA "ゲーム2", Select_LoadGame, 0x0076 },
{ "125:" GFXP_KATAKANA "ハイラル" GFXP_HIRAGANA "ニワ" GFXP_KATAKANA "ゲーム2", Select_LoadGame, ENTR_HAIRAL_NIWA2_0 },
// "title" (Title Screen)
{ "title", (void*)Select_LoadTitle, 0x0000 },
{ "title", (void*)Select_LoadTitle, 0 },
};
void Select_UpdateMenu(SelectContext* this) {

View file

@ -3324,48 +3324,57 @@ void KaleidoScope_Update(GlobalContext* globalCtx) {
Gameplay_SaveSceneFlags(globalCtx);
switch (gSaveContext.entranceIndex) {
case 0x0000:
case 0x0004:
case 0x0028:
case 0x0169:
case 0x0165:
case 0x0010:
case 0x0082:
case 0x0037:
case 0x041B:
case 0x0008:
case 0x0088:
case 0x0486:
case 0x0098:
case 0x0467:
case 0x0179:
case ENTR_YDAN_0:
case ENTR_DDAN_0:
case ENTR_BDAN_0:
case ENTR_BMORI1_0:
case ENTR_HIDAN_0:
case ENTR_MIZUSIN_0:
case ENTR_JYASINZOU_0:
case ENTR_HAKADAN_0:
case ENTR_GANON_0:
case ENTR_MEN_0:
case ENTR_ICE_DOUKUTO_0:
case ENTR_GERUDOWAY_0:
case ENTR_HAKADANCH_0:
case ENTR_GANONTIKA_0:
case ENTR_GANON_SONOGO_0:
break;
case 0x040F:
gSaveContext.entranceIndex = 0x0000;
case ENTR_YDAN_BOSS_0:
gSaveContext.entranceIndex = ENTR_YDAN_0;
break;
case 0x040B:
gSaveContext.entranceIndex = 0x0004;
case ENTR_DDAN_BOSS_0:
gSaveContext.entranceIndex = ENTR_DDAN_0;
break;
case 0x0301:
gSaveContext.entranceIndex = 0x0028;
case ENTR_BDAN_BOSS_0:
gSaveContext.entranceIndex = ENTR_BDAN_0;
break;
case 0x000C:
gSaveContext.entranceIndex = 0x0169;
case ENTR_MORIBOSSROOM_0:
gSaveContext.entranceIndex = ENTR_BMORI1_0;
break;
case 0x0305:
gSaveContext.entranceIndex = 0x0165;
case ENTR_FIRE_BS_0:
gSaveContext.entranceIndex = ENTR_HIDAN_0;
break;
case 0x0417:
gSaveContext.entranceIndex = 0x0010;
case ENTR_MIZUSIN_BS_0:
gSaveContext.entranceIndex = ENTR_MIZUSIN_0;
break;
case 0x008D:
gSaveContext.entranceIndex = 0x0082;
case ENTR_JYASINBOSS_0:
gSaveContext.entranceIndex = ENTR_JYASINZOU_0;
break;
case 0x0413:
gSaveContext.entranceIndex = 0x0037;
case ENTR_HAKADAN_BS_0:
gSaveContext.entranceIndex = ENTR_HAKADAN_0;
break;
case 0x041F:
gSaveContext.entranceIndex = 0x041B;
case ENTR_GANON_BOSS_0:
gSaveContext.entranceIndex = ENTR_GANON_0;
break;
}
} else {