Add scene table (#3131)

* Add scene table

* Re-add accidentally deleted entry

* Update CrashHandlerExt.cpp

* Update CrashHandlerExt.cpp
This commit is contained in:
Pepe20129
2023-09-01 18:46:19 +02:00
committed by GitHub
parent 0e7c658523
commit 45b7520dcb
109 changed files with 2407 additions and 2521 deletions

View File

@@ -619,7 +619,7 @@ s32 AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) {
// this is not noticeable if the sequence is authentic, since the "Boss Battle"
// sequence begins with some silence
if (gPlayState != NULL &&
gPlayState->sceneNum == SCENE_BDAN_BOSS &&
gPlayState->sceneNum == SCENE_JABU_JABU_BOSS &&
playerIdx == SEQ_PLAYER_BGM_MAIN &&
seqId != NA_BGM_BOSS) {

View File

@@ -834,53 +834,53 @@ void TitleCard_InitPlaceName(PlayState* play, TitleCardContext* titleCtx, void*
SceneTableEntry* loadedScene = play->loadedScene;
// size_t size = loadedScene->titleFile.vromEnd - loadedScene->titleFile.vromStart;
switch (play->sceneNum) {
case SCENE_YDAN:
case SCENE_DEKU_TREE:
texture = gDekuTreeTitleCardENGTex;
break;
case SCENE_DDAN:
case SCENE_DODONGOS_CAVERN:
texture = gDodongosCavernTitleCardENGTex;
break;
case SCENE_BDAN:
case SCENE_JABU_JABU:
texture = gJabuJabuTitleCardENGTex;
break;
case SCENE_BMORI1:
case SCENE_FOREST_TEMPLE:
texture = gForestTempleTitleCardENGTex;
break;
case SCENE_HIDAN:
case SCENE_FIRE_TEMPLE:
texture = gFireTempleTitleCardENGTex;
break;
case SCENE_MIZUSIN:
case SCENE_WATER_TEMPLE:
texture = gWaterTempleTitleCardENGTex;
break;
case SCENE_JYASINZOU:
case SCENE_SPIRIT_TEMPLE:
texture = gSpiritTempleTitleCardENGTex;
break;
case SCENE_HAKADAN:
case SCENE_SHADOW_TEMPLE:
texture = gShadowTempleTitleCardENGTex;
break;
case SCENE_HAKADANCH:
case SCENE_BOTTOM_OF_THE_WELL:
texture = gBottomOfTheWellTitleCardENGTex;
break;
case SCENE_ICE_DOUKUTO:
case SCENE_ICE_CAVERN:
texture = gIceCavernTitleCardENGTex;
break;
case SCENE_MEN:
case SCENE_GERUDO_TRAINING_GROUND:
texture = gGERudoTrainingGroundTitleCardENGTex;
break;
case SCENE_GERUDOWAY:
case SCENE_THIEVES_HIDEOUT:
texture = gThievesHideoutTitleCardENGTex;
break;
case SCENE_GANON_TOU:
case SCENE_OUTSIDE_GANONS_CASTLE:
texture = gGanonsCastleTitleCardENGTex;
break;
case SCENE_GANONTIKA:
case SCENE_INSIDE_GANONS_CASTLE:
texture = gInsideGanonsCastleTitleCardENGTex;
break;
case SCENE_TAKARAYA:
case SCENE_TREASURE_BOX_SHOP:
texture = gTreasureBoxShopTitleCardENGTex;
break;
case SCENE_MARKET_ALLEY:
case SCENE_MARKET_ALLEY_N:
case SCENE_BACK_ALLEY_DAY:
case SCENE_BACK_ALLEY_NIGHT:
texture = gBackAlleyTitleCardENGTex;
break;
case SCENE_MARKET_DAY:
@@ -888,130 +888,130 @@ void TitleCard_InitPlaceName(PlayState* play, TitleCardContext* titleCtx, void*
case SCENE_MARKET_RUINS:
texture = gMarketTitleCardENGTex;
break;
case SCENE_SHOP1:
case SCENE_BAZAAR:
texture = gBazaarTitleCardENGTex;
break;
case SCENE_KOKIRI_SHOP:
texture = gKokiriShopTitleCardENGTex;
break;
case SCENE_GOLON:
case SCENE_GORON_SHOP:
texture = gGoronShopTitleCardENGTex;
break;
case SCENE_ZOORA:
case SCENE_ZORA_SHOP:
texture = gZoraShopTitleCardENGTex;
break;
case SCENE_NIGHT_SHOP:
case SCENE_BOMBCHU_SHOP:
texture = gBombchuShopTitleCardENGTex;
break;
case SCENE_DRAG:
case SCENE_MAHOUYA:
case SCENE_ALLEY_SHOP:
case SCENE_POTION_SHOP_KAKARIKO:
case SCENE_POTION_SHOP_GRANNY:
case SCENE_POTION_SHOP_MARKET:
texture = gPotionShopTitleCardENGTex;
break;
case SCENE_FACE_SHOP:
case SCENE_HAPPY_MASK_SHOP:
texture = gHappyMaskShopTitleCardENGTex;
break;
case SCENE_MALON_STABLE:
case SCENE_STABLE:
texture = gStableTitleCardENGTex;
break;
case SCENE_HYLIA_LABO:
case SCENE_LAKESIDE_LABORATORY:
texture = gLakesideLaboratoryTitleCardENGTex;
break;
case SCENE_HUT:
case SCENE_GRAVEKEEPERS_HUT:
texture = gGravekeepersHutTitleCardENGTex;
break;
case SCENE_DAIYOUSEI_IZUMI:
case SCENE_YOUSEI_IZUMI_YOKO:
case SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC:
case SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS:
texture = gGreatFairysFountainTitleCardENGTex;
break;
case SCENE_YOUSEI_IZUMI_TATE:
case SCENE_FAIRYS_FOUNTAIN:
texture = gFairysFountainTitleCardENGTex;
break;
case SCENE_HAKAANA_OUKE:
case SCENE_ROYAL_FAMILYS_TOMB:
texture = gRoyalFamilysTombTitleCardENGTex;
break;
case SCENE_SYATEKIJYOU:
case SCENE_SHOOTING_GALLERY:
texture = gShootingGalleryTitleCardENGTex;
break;
case SCENE_TOKINOMA:
case SCENE_TEMPLE_OF_TIME:
texture = gTempleOfTimeTitleCardENGTex;
break;
case SCENE_KENJYANOMA:
case SCENE_CHAMBER_OF_THE_SAGES:
texture = gChamberOfTheSagesTitleCardENGTex;
break;
case SCENE_HAIRAL_NIWA:
case SCENE_HAIRAL_NIWA_N:
case SCENE_NAKANIWA:
case SCENE_CASTLE_COURTYARD_GUARDS_DAY:
case SCENE_CASTLE_COURTYARD_GUARDS_NIGHT:
case SCENE_CASTLE_COURTYARD_ZELDA:
case SCENE_HAIRAL_NIWA2:
texture = gCastleCourtyardTitleCardENGTex;
break;
case SCENE_HAKASITARELAY:
case SCENE_WINDMILL_AND_DAMPES_GRAVE:
texture = gQuestionMarkTitleCardENGTex;
break;
case SCENE_TURIBORI:
case SCENE_FISHING_POND:
texture = gFishingPondTitleCardENGTex;
break;
case SCENE_BOWLING:
case SCENE_BOMBCHU_BOWLING_ALLEY:
texture = gBombchuBowlingAlleyCardENGTex;
break;
case SCENE_KINSUTA:
case SCENE_HOUSE_OF_SKULLTULA:
texture = gHouseOfSkulltulaTitleCardENGTex;
break;
case SCENE_SPOT00:
case SCENE_HYRULE_FIELD:
texture = gHyruleFieldTitleCardENGTex;
break;
case SCENE_SPOT01:
case SCENE_KAKARIKO_VILLAGE:
texture = gKakarikoVillageTitleCardENGTex;
break;
case SCENE_SPOT02:
case SCENE_GRAVEYARD:
texture = gGraveyardTitleCardENGTex;
break;
case SCENE_SPOT03:
case SCENE_ZORAS_RIVER:
texture = gZorasRiverTitleCardENGTex;
break;
case SCENE_SPOT04:
case SCENE_KOKIRI_FOREST:
texture = gKokiriForestTitleCardENGTex;
break;
case SCENE_SPOT05:
case SCENE_SACRED_FOREST_MEADOW:
texture = gSacredForestMeadowTitleCardENGTex;
break;
case SCENE_SPOT06:
case SCENE_LAKE_HYLIA:
texture = gLakeHyliaTitleCardENGTex;
break;
case SCENE_SPOT07:
case SCENE_ZORAS_DOMAIN:
texture = gZorasDomainTitleCardENGTex;
break;
case SCENE_SPOT08:
case SCENE_ZORAS_FOUNTAIN:
texture = gZorasFountainTitleCardENGTex;
break;
case SCENE_SPOT09:
case SCENE_GERUDO_VALLEY:
texture = gGERudoValleyTitleCardENGTex;
break;
case SCENE_SPOT10:
case SCENE_LOST_WOODS:
texture = gLostWoodsTitleCardENGTex;
break;
case SCENE_SPOT11:
case SCENE_DESERT_COLOSSUS:
texture = gDesertColossusTitleCardENGTex;
break;
case SCENE_SPOT12:
case SCENE_GERUDOS_FORTRESS:
texture = gGERudosFortressTitleCardENGTex;
break;
case SCENE_SPOT13:
case SCENE_HAUNTED_WASTELAND:
texture = gHauntedWastelandTitleCardENGTex;
break;
case SCENE_SPOT15:
case SCENE_HYRULE_CASTLE:
texture = gHyruleCastleTitleCardENGTex;
break;
case SCENE_SPOT16:
case SCENE_DEATH_MOUNTAIN_TRAIL:
texture = gDeathMountainTrailTitleCardENGTex;
break;
case SCENE_SPOT17:
case SCENE_DEATH_MOUNTAIN_CRATER:
texture = gDeathMountainCraterTitleCardENGTex;
break;
case SCENE_SPOT18:
case SCENE_GORON_CITY:
texture = gGoronCityTitleCardENGTex;
break;
case SCENE_SPOT20:
case SCENE_LON_LON_RANCH:
texture = gLonLonRanchTitleCardENGTex;
break;
default:
@@ -1200,7 +1200,7 @@ void Actor_Init(Actor* actor, PlayState* play) {
if (CVarGetInteger("gDisableDrawDistance", 0) != 0 && actor->id != ACTOR_EN_TORCH2 && actor->id != ACTOR_EN_BLKOBJ // Extra check for Dark Link and his room
&& actor->id != ACTOR_EN_HORSE // Check for Epona, else if we call her she will spawn at the other side of the map + we can hear her during the title screen sequence
&& actor->id != ACTOR_EN_HORSE_GANON && actor->id != ACTOR_EN_HORSE_ZELDA // check for Zelda's and Ganondorf's horses that will always be scene during cinematic whith camera paning
&& (play->sceneNum != SCENE_DDAN && actor->id != ACTOR_EN_ZF)) { // Check for DC and Lizalfos for the case where the miniboss music would still play under certains conditions and changing room
&& (play->sceneNum != SCENE_DODONGOS_CAVERN && actor->id != ACTOR_EN_ZF)) { // Check for DC and Lizalfos for the case where the miniboss music would still play under certains conditions and changing room
actor->uncullZoneForward = 32767.0f;
actor->uncullZoneScale = 32767.0f;
actor->uncullZoneDownward = 32767.0f;
@@ -2843,7 +2843,7 @@ s32 func_800314D4(PlayState* play, Actor* actor, Vec3f* arg2, f32 arg3) {
if (CVarGetInteger("gDisableDrawDistance", 0) != 0 && actor->id != ACTOR_EN_TORCH2 && actor->id != ACTOR_EN_BLKOBJ // Extra check for Dark Link and his room
&& actor->id != ACTOR_EN_HORSE // Check for Epona, else if we call her she will spawn at the other side of the map + we can hear her during the title screen sequence
&& actor->id != ACTOR_EN_HORSE_GANON && actor->id != ACTOR_EN_HORSE_ZELDA // check for Zelda's and Ganondorf's horses that will always be scene during cinematic whith camera paning
&& (play->sceneNum != SCENE_DDAN && actor->id != ACTOR_EN_ZF)) { // Check for DC and Lizalfos for the case where the miniboss music would still play under certains conditions and changing room
&& (play->sceneNum != SCENE_DODONGOS_CAVERN && actor->id != ACTOR_EN_ZF)) { // Check for DC and Lizalfos for the case where the miniboss music would still play under certains conditions and changing room
return true;
}
@@ -3740,69 +3740,69 @@ void Actor_SetTextWithPrefix(PlayState* play, Actor* actor, s16 baseTextId) {
s16 prefix;
switch (play->sceneNum) {
case SCENE_YDAN:
case SCENE_YDAN_BOSS:
case SCENE_MORIBOSSROOM:
case SCENE_KOKIRI_HOME:
case SCENE_KOKIRI_HOME3:
case SCENE_KOKIRI_HOME4:
case SCENE_KOKIRI_HOME5:
case SCENE_DEKU_TREE:
case SCENE_DEKU_TREE_BOSS:
case SCENE_FOREST_TEMPLE_BOSS:
case SCENE_KNOW_IT_ALL_BROS_HOUSE:
case SCENE_TWINS_HOUSE:
case SCENE_MIDOS_HOUSE:
case SCENE_SARIAS_HOUSE:
case SCENE_KOKIRI_SHOP:
case SCENE_LINK_HOME:
case SCENE_SPOT04:
case SCENE_SPOT05:
case SCENE_SPOT10:
case SCENE_LINKS_HOUSE:
case SCENE_KOKIRI_FOREST:
case SCENE_SACRED_FOREST_MEADOW:
case SCENE_LOST_WOODS:
case 112:
prefix = 0x1000;
break;
case SCENE_MALON_STABLE:
case SCENE_SPOT00:
case SCENE_SPOT20:
case SCENE_STABLE:
case SCENE_HYRULE_FIELD:
case SCENE_LON_LON_RANCH:
prefix = 0x2000;
break;
case SCENE_HIDAN:
case SCENE_DDAN_BOSS:
case SCENE_FIRE_BS:
case SCENE_SPOT16:
case SCENE_SPOT17:
case SCENE_SPOT18:
case SCENE_FIRE_TEMPLE:
case SCENE_DODONGOS_CAVERN_BOSS:
case SCENE_FIRE_TEMPLE_BOSS:
case SCENE_DEATH_MOUNTAIN_TRAIL:
case SCENE_DEATH_MOUNTAIN_CRATER:
case SCENE_GORON_CITY:
prefix = 0x3000;
break;
case SCENE_BDAN:
case SCENE_BDAN_BOSS:
case SCENE_SPOT03:
case SCENE_SPOT07:
case SCENE_SPOT08:
case SCENE_JABU_JABU:
case SCENE_JABU_JABU_BOSS:
case SCENE_ZORAS_RIVER:
case SCENE_ZORAS_DOMAIN:
case SCENE_ZORAS_FOUNTAIN:
prefix = 0x4000;
break;
case SCENE_HAKADAN:
case SCENE_HAKADAN_BS:
case SCENE_KAKARIKO:
case SCENE_KAKARIKO3:
case SCENE_IMPA:
case SCENE_HUT:
case SCENE_HAKAANA:
case SCENE_HAKASITARELAY:
case SCENE_SPOT01:
case SCENE_SPOT02:
case SCENE_SHADOW_TEMPLE:
case SCENE_SHADOW_TEMPLE_BOSS:
case SCENE_KAKARIKO_CENTER_GUEST_HOUSE:
case SCENE_BACK_ALLEY_HOUSE:
case SCENE_DOG_LADY_HOUSE:
case SCENE_GRAVEKEEPERS_HUT:
case SCENE_REDEAD_GRAVE:
case SCENE_WINDMILL_AND_DAMPES_GRAVE:
case SCENE_KAKARIKO_VILLAGE:
case SCENE_GRAVEYARD:
prefix = 0x5000;
break;
case SCENE_JYASINZOU:
case SCENE_JYASINBOSS:
case SCENE_LABO:
case SCENE_TENT:
case SCENE_SPOT06:
case SCENE_SPOT09:
case SCENE_SPOT11:
case SCENE_SPIRIT_TEMPLE:
case SCENE_SPIRIT_TEMPLE_BOSS:
case SCENE_IMPAS_HOUSE:
case SCENE_CARPENTERS_TENT:
case SCENE_LAKE_HYLIA:
case SCENE_GERUDO_VALLEY:
case SCENE_DESERT_COLOSSUS:
prefix = 0x6000;
break;
case SCENE_ENTRA:
case SCENE_MARKET_ALLEY:
case SCENE_MARKET_ALLEY_N:
case SCENE_MARKET_ENTRANCE_DAY:
case SCENE_BACK_ALLEY_DAY:
case SCENE_BACK_ALLEY_NIGHT:
case SCENE_MARKET_DAY:
case SCENE_MARKET_NIGHT:
case SCENE_MARKET_RUINS:
case SCENE_SPOT15:
case SCENE_HYRULE_CASTLE:
prefix = 0x7000;
break;
default:
@@ -5096,7 +5096,7 @@ u32 func_80035BFC(PlayState* play, s16 arg1) {
}
break;
case 16:
if (play->sceneNum == SCENE_SPOT15) {
if (play->sceneNum == SCENE_HYRULE_CASTLE) {
retTextId = 0x7002;
} else if (Flags_GetInfTable(INFTABLE_6A)) {
retTextId = 0x7004;

View File

@@ -1441,9 +1441,11 @@ u32 BgCheck_InitializeStaticLookup(CollisionContext* colCtx, PlayState* play, St
*/
s32 BgCheck_IsSpotScene(PlayState* play) {
static s16 spotScenes[] = {
SCENE_SPOT00, SCENE_SPOT01, SCENE_SPOT02, SCENE_SPOT03, SCENE_SPOT04, SCENE_SPOT05, SCENE_SPOT06,
SCENE_SPOT07, SCENE_SPOT08, SCENE_SPOT09, SCENE_SPOT10, SCENE_SPOT11, SCENE_SPOT12, SCENE_SPOT13,
SCENE_SPOT15, SCENE_SPOT16, SCENE_SPOT17, SCENE_SPOT18, SCENE_SPOT20,
SCENE_HYRULE_FIELD, SCENE_KAKARIKO_VILLAGE, SCENE_GRAVEYARD, SCENE_ZORAS_RIVER,
SCENE_KOKIRI_FOREST, SCENE_SACRED_FOREST_MEADOW, SCENE_LAKE_HYLIA, SCENE_ZORAS_DOMAIN,
SCENE_ZORAS_FOUNTAIN, SCENE_GERUDO_VALLEY, SCENE_LOST_WOODS, SCENE_DESERT_COLOSSUS,
SCENE_GERUDOS_FORTRESS, SCENE_HAUNTED_WASTELAND, SCENE_HYRULE_CASTLE, SCENE_DEATH_MOUNTAIN_TRAIL,
SCENE_DEATH_MOUNTAIN_CRATER, SCENE_GORON_CITY, SCENE_LON_LON_RANCH,
};
s16* i;
@@ -1465,9 +1467,10 @@ typedef struct {
*/
s32 BgCheck_TryGetCustomMemsize(s32 sceneId, u32* memSize) {
static BgCheckSceneMemEntry sceneMemList[] = {
{ SCENE_SPOT00, 0xB798 }, { SCENE_GANON_FINAL, 0x78C8 }, { SCENE_GANON_DEMO, 0x70C8 },
{ SCENE_JYASINBOSS, 0xACC8 }, { SCENE_KENJYANOMA, 0x70C8 }, { SCENE_JYASINZOU, 0x16CC8 },
{ SCENE_HIDAN, 0x198C8 }, { SCENE_GANON_BOSS, 0x84C8 },
{ SCENE_HYRULE_FIELD, 0xB798 }, { SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR, 0x78C8 },
{ SCENE_GANON_BOSS, 0x70C8 }, { SCENE_SPIRIT_TEMPLE_BOSS, 0xACC8 },
{ SCENE_CHAMBER_OF_THE_SAGES, 0x70C8 }, { SCENE_SPIRIT_TEMPLE, 0x16CC8 },
{ SCENE_FIRE_TEMPLE, 0x198C8 }, { SCENE_GANONDORF_BOSS, 0x84C8 },
};
s32 i;
@@ -1504,8 +1507,8 @@ typedef struct {
*/
void BgCheck_Allocate(CollisionContext* colCtx, PlayState* play, CollisionHeader* colHeader) {
static BgCheckSceneSubdivisionEntry sceneSubdivisionList[] = {
{ SCENE_HAKADAN, { 23, 7, 14 }, -1 },
{ SCENE_BMORI1, { 38, 1, 38 }, -1 },
{ SCENE_SHADOW_TEMPLE, { 23, 7, 14 }, -1 },
{ SCENE_FOREST_TEMPLE, { 38, 1, 38 }, -1 },
};
u32 tblMax;
u32 memSize;
@@ -1523,7 +1526,7 @@ void BgCheck_Allocate(CollisionContext* colCtx, PlayState* play, CollisionHeader
osSyncPrintf("/*---------------- BGCheck バッファーメモリサイズ -------------*/\n");
if (YREG(15) == 0x10 || YREG(15) == 0x20 || YREG(15) == 0x30 || YREG(15) == 0x40) {
if (play->sceneNum == SCENE_MALON_STABLE) {
if (play->sceneNum == SCENE_STABLE) {
// "/* BGCheck LonLon Size %dbyte */\n"
osSyncPrintf("/* BGCheck LonLonサイズ %dbyte */\n", 0x3520);
colCtx->memSize = 0x3520;
@@ -4208,7 +4211,7 @@ f32 zdWaterBoxMaxZ = -967.0f;
*/
s32 WaterBox_GetSurface1(PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface,
WaterBox** outWaterBox) {
if (play->sceneNum == SCENE_SPOT07) {
if (play->sceneNum == SCENE_ZORAS_DOMAIN) {
if (zdWaterBoxMinX < x && x < zdWaterBoxMaxX && zdWaterBoxMinY < *ySurface && *ySurface < zdWaterBoxMaxY &&
zdWaterBoxMinZ < z && z < zdWaterBoxMaxZ) {
*outWaterBox = &zdWaterBox;

View File

@@ -6631,7 +6631,7 @@ s32 Camera_Special7(Camera* camera) {
yOffset = Player_GetHeight(camera->player);
if (camera->animState == 0) {
if (camera->play->sceneNum == SCENE_JYASINZOU) {
if (camera->play->sceneNum == SCENE_SPIRIT_TEMPLE) {
// Spirit Temple
spec7->idx = 3;
} else if (playerPosRot->pos.x < 1500.0f) {
@@ -7326,7 +7326,7 @@ s32 Camera_UpdateWater(Camera* camera) {
if (camera->waterDistortionTimer > 0) {
camera->waterDistortionTimer--;
camera->distortionFlags |= DISTORTION_UNDERWATER_STRONG;
} else if (camera->play->sceneNum == SCENE_TURIBORI) {
} else if (camera->play->sceneNum == SCENE_FISHING_POND) {
camera->distortionFlags |= DISTORTION_UNDERWATER_FISHING;
} else {
camera->distortionFlags |= DISTORTION_UNDERWATER_WEAK;
@@ -7677,7 +7677,7 @@ Vec3s Camera_Update(Camera* camera) {
Camera_UpdateDistortion(camera);
if ((camera->play->sceneNum == SCENE_SPOT00) && (camera->fov < 59.0f)) {
if ((camera->play->sceneNum == SCENE_HYRULE_FIELD) && (camera->fov < 59.0f)) {
View_SetScale(&camera->play->view, 0.79f);
} else {
View_SetScale(&camera->play->view, 1.0f);
@@ -7921,7 +7921,7 @@ s16 Camera_ChangeSettingFlags(Camera* camera, s16 setting, s16 flags) {
}
}
if (((setting == CAM_SET_MEADOW_BIRDS_EYE) || (setting == CAM_SET_MEADOW_UNUSED)) && LINK_IS_ADULT &&
(camera->play->sceneNum == SCENE_SPOT05)) {
(camera->play->sceneNum == SCENE_SACRED_FOREST_MEADOW)) {
camera->unk_14A |= 0x10;
return -5;
}

View File

@@ -501,7 +501,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
bool debugCsSkip = (CHECK_BTN_ALL(play->state.input[0].press.button, BTN_START) &&
(gSaveContext.fileNum != 0xFEDC) && CVarGetInteger("gDebugEnabled", 0));
if ((gSaveContext.gameMode != 0) && (gSaveContext.gameMode != 3) && (play->sceneNum != SCENE_SPOT00) &&
if ((gSaveContext.gameMode != 0) && (gSaveContext.gameMode != 3) && (play->sceneNum != SCENE_HYRULE_FIELD) &&
(csCtx->frames > 20) &&
(CHECK_BTN_ALL(play->state.input[0].press.button, BTN_A) ||
CHECK_BTN_ALL(play->state.input[0].press.button, BTN_B) ||
@@ -1322,7 +1322,7 @@ void Cutscene_Command_TransitionFX(PlayState* play, CutsceneContext* csCtx, CsCm
(gSaveContext.entranceIndex == 0x0371))) {
Audio_PlaySoundGeneral(NA_SE_EV_WHITE_OUT, &D_801333D4, 4, &D_801333E0, &D_801333E0,
&D_801333E8);
} else if ((temp == 0.0f) && (play->sceneNum == SCENE_GANONTIKA)) {
} else if ((temp == 0.0f) && (play->sceneNum == SCENE_INSIDE_GANONS_CASTLE)) {
func_800788CC(NA_SE_EV_WHITE_OUT);
}
} else {
@@ -2174,16 +2174,16 @@ void Cutscene_HandleConditionalTriggers(PlayState* play) {
}
} else if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) && CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) &&
LINK_IS_ADULT && !Flags_GetEventChkInf(EVENTCHKINF_RETURNED_TO_TEMPLE_OF_TIME_WITH_ALL_MEDALLIONS) &&
(gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TOKINOMA)) {
(gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TEMPLE_OF_TIME)) {
if (!gSaveContext.n64ddFlag) {
Flags_SetEventChkInf(EVENTCHKINF_RETURNED_TO_TEMPLE_OF_TIME_WITH_ALL_MEDALLIONS);
gSaveContext.entranceIndex = 0x0053;
gSaveContext.cutsceneIndex = 0xFFF8;
}
} else if ((!Flags_GetEventChkInf(EVENTCHKINF_WATCHED_GANONS_CASTLE_COLLAPSE_CAUGHT_BY_GERUDO) &&
gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_GANON_DEMO) ||
gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_GANON_BOSS) ||
(bShouldTowerRandoSkip &&
gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_GANON_FINAL)) {
gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR)) {
Flags_SetEventChkInf(EVENTCHKINF_WATCHED_GANONS_CASTLE_COLLAPSE_CAUGHT_BY_GERUDO);
gSaveContext.entranceIndex = 0x0517;
// In rando, skip the cutscene for the tower falling down after the escape.

View File

@@ -3,7 +3,7 @@
#include <assert.h>
s32 func_8006CFC0(s32 scene) {
s32 validScenes[] = { SCENE_SPOT00, SCENE_SPOT06, SCENE_SPOT09, SCENE_SPOT12, SCENE_SPOT20 };
s32 validScenes[] = { SCENE_HYRULE_FIELD, SCENE_LAKE_HYLIA, SCENE_GERUDO_VALLEY, SCENE_GERUDOS_FORTRESS, SCENE_LON_LON_RANCH };
s32 i;
for (i = 0; i < ARRAY_COUNT(validScenes); i++) {
@@ -16,7 +16,7 @@ s32 func_8006CFC0(s32 scene) {
}
void func_8006D074(PlayState* play) {
gSaveContext.horseData.scene = SCENE_SPOT00;
gSaveContext.horseData.scene = SCENE_HYRULE_FIELD;
gSaveContext.horseData.pos.x = -1840;
gSaveContext.horseData.pos.y = 72;
gSaveContext.horseData.pos.z = 5497;
@@ -24,8 +24,8 @@ void func_8006D074(PlayState* play) {
}
void func_8006D0AC(PlayState* play) {
if (gSaveContext.horseData.scene == SCENE_SPOT06) {
gSaveContext.horseData.scene = SCENE_SPOT06;
if (gSaveContext.horseData.scene == SCENE_LAKE_HYLIA) {
gSaveContext.horseData.scene = SCENE_LAKE_HYLIA;
gSaveContext.horseData.pos.x = -2065;
gSaveContext.horseData.pos.y = -863;
gSaveContext.horseData.pos.z = 1839;
@@ -43,9 +43,9 @@ typedef struct {
void func_8006D0EC(PlayState* play, Player* player) {
s32 i;
HorseSpawn horseSpawns[] = {
{ SCENE_SPOT00, -460, 100, 6640, 0, 2 }, { SCENE_SPOT06, -1929, -1025, 768, 0, 2 },
{ SCENE_SPOT09, 2566, -259, 767, 0, 2 }, { SCENE_SPOT12, -328, 10, 953, 0, 2 },
{ SCENE_SPOT20, 928, 0, -2280, 0, 2 },
{ SCENE_HYRULE_FIELD, -460, 100, 6640, 0, 2 }, { SCENE_LAKE_HYLIA, -1929, -1025, 768, 0, 2 },
{ SCENE_GERUDO_VALLEY, 2566, -259, 767, 0, 2 }, { SCENE_GERUDOS_FORTRESS, -328, 10, 953, 0, 2 },
{ SCENE_LON_LON_RANCH, 928, 0, -2280, 0, 2 },
};
if ((AREG(6) != 0) && (Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) || (DREG(1) != 0))) {
@@ -59,10 +59,10 @@ void func_8006D0EC(PlayState* play, Player* player) {
func_8002DE74(play, player);
gSaveContext.horseData.scene = play->sceneNum;
if (play->sceneNum == SCENE_SPOT12) {
if (play->sceneNum == SCENE_GERUDOS_FORTRESS) {
player->rideActor->room = -1;
}
} else if ((play->sceneNum == SCENE_SPOT12) && (gSaveContext.minigameState == 3)) {
} else if ((play->sceneNum == SCENE_GERUDOS_FORTRESS) && (gSaveContext.minigameState == 3)) {
Actor* horseActor;
gSaveContext.minigameState = 0;
horseActor =
@@ -85,7 +85,7 @@ void func_8006D0EC(PlayState* play, Player* player) {
gSaveContext.horseData.pos.x, gSaveContext.horseData.pos.y,
gSaveContext.horseData.pos.z, 0, gSaveContext.horseData.angle, 0, 1, true);
assert(horseActor != NULL);
if (play->sceneNum == SCENE_SPOT12) {
if (play->sceneNum == SCENE_GERUDOS_FORTRESS) {
horseActor->room = -1;
}
} else {
@@ -95,7 +95,7 @@ void func_8006D0EC(PlayState* play, Player* player) {
osSyncPrintf(VT_RST);
func_8006D074(play);
}
} else if ((play->sceneNum == SCENE_SPOT20) && !Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) && (DREG(1) == 0)) {
} else if ((play->sceneNum == SCENE_LON_LON_RANCH) && !Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) && (DREG(1) == 0)) {
Actor* horseActor =
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, 0.0f, 0.0f, -500.0f, 0, 0, 0, 1, true);
assert(horseActor != NULL);
@@ -107,7 +107,7 @@ void func_8006D0EC(PlayState* play, Player* player) {
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, horseSpawn->pos.x, horseSpawn->pos.y,
horseSpawn->pos.z, 0, horseSpawn->angle, 0, horseSpawn->type, true);
assert(horseActor != NULL);
if (play->sceneNum == SCENE_SPOT12) {
if (play->sceneNum == SCENE_GERUDOS_FORTRESS) {
horseActor->room = -1;
}
@@ -115,7 +115,7 @@ void func_8006D0EC(PlayState* play, Player* player) {
}
}
} else if (!Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED)) {
if ((DREG(1) == 0) && (play->sceneNum == SCENE_SOUKO) && !IS_DAY) {
if ((DREG(1) == 0) && (play->sceneNum == SCENE_LON_LON_BUILDINGS) && !IS_DAY) {
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, 0.0f, 0.0f, -60.0f, 0, 0x7360, 0, 1, true);
}
}
@@ -161,7 +161,7 @@ void func_8006D684(PlayState* play, Player* player) {
Actor_MountHorse(play, player, player->rideActor);
func_8002DE74(play, player);
gSaveContext.horseData.scene = play->sceneNum;
} else if ((play->sceneNum == SCENE_SPOT20) && ((gSaveContext.eventInf[0] & 0xF) == 6) &&
} else if ((play->sceneNum == SCENE_LON_LON_RANCH) && ((gSaveContext.eventInf[0] & 0xF) == 6) &&
(Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) == 0) && (DREG(1) == 0)) {
player->rideActor =
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, 894.0f, 0.0f, -2084.0f, 0, -0x7FFF, 0, 5, true);
@@ -171,22 +171,26 @@ void func_8006D684(PlayState* play, Player* player) {
func_8002DE74(play, player);
gSaveContext.horseData.scene = play->sceneNum;
if (play->sceneNum == SCENE_SPOT12) {
if (play->sceneNum == SCENE_GERUDOS_FORTRESS) {
player->rideActor->room = -1;
}
} else {
static struct_8011F9B8 D_8011F9B8[] = {
{ 93, 0xFFF0, 0x0E10, 0x0585, 0x0168, 0x8001, 8 }, { 99, 0xFFF0, 0xFF06, 0x0001, 0xF9D4, 0x4000, 6 },
{ 99, 0xFFF1, 0x0000, 0x0000, 0x0000, 0x0000, 5 }, { 99, 0xFFF5, 0x0000, 0x0000, 0x0000, 0x0000, 7 },
{ 81, 0xFFF3, 0xF46F, 0x0139, 0x1E14, 0x0000, 7 }, { 81, 0xFFF4, 0xF894, 0x0139, 0x1B67, 0x0000, 7 },
{ 81, 0xFFF5, 0xF035, 0x0139, 0x1B15, 0x0000, 7 }, { 81, 0xFFF6, 0xF035, 0x0139, 0x1B15, 0x0000, 7 },
{ SCENE_GERUDOS_FORTRESS, 0xFFF0, { 3600, 1413, 360 }, 0x8001, 8 },
{ SCENE_LON_LON_RANCH, 0xFFF0, { -250, 1, -1580 }, 0x4000, 6 },
{ SCENE_LON_LON_RANCH, 0xFFF1, { 0, 0, 0 }, 0x0000, 5 },
{ SCENE_LON_LON_RANCH, 0xFFF5, { 0, 0, 0 }, 0x0000, 7 },
{ SCENE_HYRULE_FIELD, 0xFFF3, { -2961, 313, 7700 }, 0x0000, 7 },
{ SCENE_HYRULE_FIELD, 0xFFF4, { -1900, 313, 7015 }, 0x0000, 7 },
{ SCENE_HYRULE_FIELD, 0xFFF5, { -4043, 313, 6933 }, 0x0000, 7 },
{ SCENE_HYRULE_FIELD, 0xFFF6, { -4043, 313, 6933 }, 0x0000, 7 },
};
for (i = 0; i < ARRAY_COUNT(D_8011F9B8); i++) {
if ((play->sceneNum == D_8011F9B8[i].scene) &&
(((void)0, gSaveContext.cutsceneIndex) == D_8011F9B8[i].cutsceneIndex)) {
if (D_8011F9B8[i].type == 7) {
if ((play->sceneNum == 99) && (((void)0, gSaveContext.cutsceneIndex) == 0xFFF1)) {
if ((play->sceneNum == SCENE_LON_LON_RANCH) && (((void)0, gSaveContext.cutsceneIndex) == 0xFFF1)) {
D_8011F9B8[i].pos.x = player->actor.world.pos.x;
D_8011F9B8[i].pos.y = player->actor.world.pos.y;
D_8011F9B8[i].pos.z = player->actor.world.pos.z;
@@ -252,7 +256,7 @@ void func_8006DC68(PlayState* play, Player* player) {
((gSaveContext.entranceIndex == 0x028A || gSaveContext.entranceIndex == 0x028E ||
gSaveContext.entranceIndex == 0x0292 || gSaveContext.entranceIndex == 0x0476) &&
(gSaveContext.respawnFlag == 0)) ||
((play->sceneNum == SCENE_SPOT20) && ((gSaveContext.eventInf[0] & 0xF) == 6) &&
((play->sceneNum == SCENE_LON_LON_RANCH) && ((gSaveContext.eventInf[0] & 0xF) == 6) &&
!Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) && (DREG(1) == 0))) {
func_8006D684(play, player);
} else {

View File

@@ -16,7 +16,7 @@ void KaleidoSetup_Update(PlayState* play) {
play->sceneLoadFlag == 0 && play->transitionMode == 0 && gSaveContext.cutsceneIndex < 0xFFF0 &&
gSaveContext.nextCutsceneIndex < 0xFFF0 && !Play_InCsMode(play) &&
play->shootingGalleryStatus <= 1 && gSaveContext.magicState != 8 && gSaveContext.magicState != 9 &&
(play->sceneNum != SCENE_BOWLING || !Flags_GetSwitch(play, 0x38))) {
(play->sceneNum != SCENE_BOMBCHU_BOWLING_ALLEY || !Flags_GetSwitch(play, 0x38))) {
u8 easyPauseBufferEnabled = CVarGetInteger("gCheatEasyPauseBufferEnabled", 0);
u8 easyPauseBufferTimer = CVarGetInteger("gCheatEasyPauseBufferTimer", 0);

View File

@@ -2337,7 +2337,7 @@ void Environment_DrawSandstorm(PlayState* play, u8 sandstormState) {
switch (sandstormState) {
case 3:
if ((play->sceneNum == SCENE_SPOT13) && (play->roomCtx.curRoom.num == 0)) {
if ((play->sceneNum == SCENE_HAUNTED_WASTELAND) && (play->roomCtx.curRoom.num == 0)) {
envA1 = 0;
primA1 = (play->envCtx.sandstormEnvA > 128) ? 255 : play->envCtx.sandstormEnvA >> 1;
} else {

View File

@@ -62,24 +62,24 @@ void Map_SetFloorPalettesData(PlayState* play, s16 floor) {
}
switch (play->sceneNum) {
case SCENE_YDAN:
case SCENE_DDAN:
case SCENE_BDAN:
case SCENE_BMORI1:
case SCENE_HIDAN:
case SCENE_MIZUSIN:
case SCENE_JYASINZOU:
case SCENE_HAKADAN:
case SCENE_HAKADANCH:
case SCENE_ICE_DOUKUTO:
case SCENE_YDAN_BOSS:
case SCENE_DDAN_BOSS:
case SCENE_BDAN_BOSS:
case SCENE_MORIBOSSROOM:
case SCENE_FIRE_BS:
case SCENE_MIZUSIN_BS:
case SCENE_JYASINBOSS:
case SCENE_HAKADAN_BS:
case SCENE_DEKU_TREE:
case SCENE_DODONGOS_CAVERN:
case SCENE_JABU_JABU:
case SCENE_FOREST_TEMPLE:
case SCENE_FIRE_TEMPLE:
case SCENE_WATER_TEMPLE:
case SCENE_SPIRIT_TEMPLE:
case SCENE_SHADOW_TEMPLE:
case SCENE_BOTTOM_OF_THE_WELL:
case SCENE_ICE_CAVERN:
case SCENE_DEKU_TREE_BOSS:
case SCENE_DODONGOS_CAVERN_BOSS:
case SCENE_JABU_JABU_BOSS:
case SCENE_FOREST_TEMPLE_BOSS:
case SCENE_FIRE_TEMPLE_BOSS:
case SCENE_WATER_TEMPLE_BOSS:
case SCENE_SPIRIT_TEMPLE_BOSS:
case SCENE_SHADOW_TEMPLE_BOSS:
for (i = 0; i < gMapData->maxPaletteCount[mapIndex]; i++) {
room = gMapData->paletteRoom[mapIndex][floor][i];
if ((room != 0xFF) && (gSaveContext.sceneFlags[mapIndex].rooms & gBitFlags[room])) {
@@ -367,42 +367,42 @@ void Map_InitData(PlayState* play, s16 room) {
s16 extendedMapIndex;
switch (play->sceneNum) {
case SCENE_SPOT00:
case SCENE_SPOT01:
case SCENE_SPOT02:
case SCENE_SPOT03:
case SCENE_SPOT04:
case SCENE_SPOT05:
case SCENE_SPOT06:
case SCENE_SPOT07:
case SCENE_SPOT08:
case SCENE_SPOT09:
case SCENE_SPOT10:
case SCENE_SPOT11:
case SCENE_SPOT12:
case SCENE_SPOT13:
case SCENE_SPOT15:
case SCENE_SPOT16:
case SCENE_SPOT17:
case SCENE_SPOT18:
case SCENE_SPOT20:
case SCENE_GANON_TOU:
case SCENE_HYRULE_FIELD:
case SCENE_KAKARIKO_VILLAGE:
case SCENE_GRAVEYARD:
case SCENE_ZORAS_RIVER:
case SCENE_KOKIRI_FOREST:
case SCENE_SACRED_FOREST_MEADOW:
case SCENE_LAKE_HYLIA:
case SCENE_ZORAS_DOMAIN:
case SCENE_ZORAS_FOUNTAIN:
case SCENE_GERUDO_VALLEY:
case SCENE_LOST_WOODS:
case SCENE_DESERT_COLOSSUS:
case SCENE_GERUDOS_FORTRESS:
case SCENE_HAUNTED_WASTELAND:
case SCENE_HYRULE_CASTLE:
case SCENE_DEATH_MOUNTAIN_TRAIL:
case SCENE_DEATH_MOUNTAIN_CRATER:
case SCENE_GORON_CITY:
case SCENE_LON_LON_RANCH:
case SCENE_OUTSIDE_GANONS_CASTLE:
extendedMapIndex = mapIndex;
if (play->sceneNum == SCENE_SPOT02) {
if (play->sceneNum == SCENE_GRAVEYARD) {
if (CHECK_QUEST_ITEM(QUEST_SONG_NOCTURNE)) {
extendedMapIndex = 0x14;
}
} else if (play->sceneNum == SCENE_SPOT06) {
} else if (play->sceneNum == SCENE_LAKE_HYLIA) {
if ((LINK_AGE_IN_YEARS == YEARS_ADULT) &&
((!gSaveContext.n64ddFlag && !CHECK_QUEST_ITEM(QUEST_MEDALLION_WATER)) ||
(gSaveContext.n64ddFlag && !Flags_GetRandomizerInf(RAND_INF_DUNGEONS_DONE_WATER_TEMPLE)))) {
extendedMapIndex = 0x15;
}
} else if (play->sceneNum == SCENE_SPOT09) {
} else if (play->sceneNum == SCENE_GERUDO_VALLEY) {
if ((LINK_AGE_IN_YEARS == YEARS_ADULT) && !GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) {
extendedMapIndex = 0x16;
}
} else if (play->sceneNum == SCENE_SPOT12) {
} else if (play->sceneNum == SCENE_GERUDOS_FORTRESS) {
if ((!gSaveContext.n64ddFlag && GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) ||
(gSaveContext.n64ddFlag && CHECK_QUEST_ITEM(QUEST_GERUDO_CARD))) {
extendedMapIndex = 0x17;
@@ -423,24 +423,24 @@ void Map_InitData(PlayState* play, s16 room) {
interfaceCtx->unk_258 = mapIndex;
break;
case SCENE_YDAN:
case SCENE_DDAN:
case SCENE_BDAN:
case SCENE_BMORI1:
case SCENE_HIDAN:
case SCENE_MIZUSIN:
case SCENE_JYASINZOU:
case SCENE_HAKADAN:
case SCENE_HAKADANCH:
case SCENE_ICE_DOUKUTO:
case SCENE_YDAN_BOSS:
case SCENE_DDAN_BOSS:
case SCENE_BDAN_BOSS:
case SCENE_MORIBOSSROOM:
case SCENE_FIRE_BS:
case SCENE_MIZUSIN_BS:
case SCENE_JYASINBOSS:
case SCENE_HAKADAN_BS:
case SCENE_DEKU_TREE:
case SCENE_DODONGOS_CAVERN:
case SCENE_JABU_JABU:
case SCENE_FOREST_TEMPLE:
case SCENE_FIRE_TEMPLE:
case SCENE_WATER_TEMPLE:
case SCENE_SPIRIT_TEMPLE:
case SCENE_SHADOW_TEMPLE:
case SCENE_BOTTOM_OF_THE_WELL:
case SCENE_ICE_CAVERN:
case SCENE_DEKU_TREE_BOSS:
case SCENE_DODONGOS_CAVERN_BOSS:
case SCENE_JABU_JABU_BOSS:
case SCENE_FOREST_TEMPLE_BOSS:
case SCENE_FIRE_TEMPLE_BOSS:
case SCENE_WATER_TEMPLE_BOSS:
case SCENE_SPIRIT_TEMPLE_BOSS:
case SCENE_SHADOW_TEMPLE_BOSS:
osSyncPrintf(VT_FGCOL(YELLOW));
// "Deku Tree Dungeon MAP Texture DMA"
osSyncPrintf("デクの樹ダンジョンMAP テクスチャDMA(%x) scene_id_offset=%d VREG(30)=%d\n", room,
@@ -471,24 +471,24 @@ void Map_InitRoomData(PlayState* play, s16 room) {
if (room >= 0) {
switch (play->sceneNum) {
case SCENE_YDAN:
case SCENE_DDAN:
case SCENE_BDAN:
case SCENE_BMORI1:
case SCENE_HIDAN:
case SCENE_MIZUSIN:
case SCENE_JYASINZOU:
case SCENE_HAKADAN:
case SCENE_HAKADANCH:
case SCENE_ICE_DOUKUTO:
case SCENE_YDAN_BOSS:
case SCENE_DDAN_BOSS:
case SCENE_BDAN_BOSS:
case SCENE_MORIBOSSROOM:
case SCENE_FIRE_BS:
case SCENE_MIZUSIN_BS:
case SCENE_JYASINBOSS:
case SCENE_HAKADAN_BS:
case SCENE_DEKU_TREE:
case SCENE_DODONGOS_CAVERN:
case SCENE_JABU_JABU:
case SCENE_FOREST_TEMPLE:
case SCENE_FIRE_TEMPLE:
case SCENE_WATER_TEMPLE:
case SCENE_SPIRIT_TEMPLE:
case SCENE_SHADOW_TEMPLE:
case SCENE_BOTTOM_OF_THE_WELL:
case SCENE_ICE_CAVERN:
case SCENE_DEKU_TREE_BOSS:
case SCENE_DODONGOS_CAVERN_BOSS:
case SCENE_JABU_JABU_BOSS:
case SCENE_FOREST_TEMPLE_BOSS:
case SCENE_FIRE_TEMPLE_BOSS:
case SCENE_WATER_TEMPLE_BOSS:
case SCENE_SPIRIT_TEMPLE_BOSS:
case SCENE_SHADOW_TEMPLE_BOSS:
gSaveContext.sceneFlags[mapIndex].rooms |= gBitFlags[room];
osSyncPrintf("_%d\n", gSaveContext.sceneFlags[mapIndex].rooms);
interfaceCtx->mapRoomNum = room;
@@ -531,27 +531,27 @@ void Map_Init(PlayState* play) {
assert(interfaceCtx->mapSegment != NULL);
switch (play->sceneNum) {
case SCENE_SPOT00:
case SCENE_SPOT01:
case SCENE_SPOT02:
case SCENE_SPOT03:
case SCENE_SPOT04:
case SCENE_SPOT05:
case SCENE_SPOT06:
case SCENE_SPOT07:
case SCENE_SPOT08:
case SCENE_SPOT09:
case SCENE_SPOT10:
case SCENE_SPOT11:
case SCENE_SPOT12:
case SCENE_SPOT13:
case SCENE_SPOT15:
case SCENE_SPOT16:
case SCENE_SPOT17:
case SCENE_SPOT18:
case SCENE_SPOT20:
case SCENE_GANON_TOU:
mapIndex = play->sceneNum - SCENE_SPOT00;
case SCENE_HYRULE_FIELD:
case SCENE_KAKARIKO_VILLAGE:
case SCENE_GRAVEYARD:
case SCENE_ZORAS_RIVER:
case SCENE_KOKIRI_FOREST:
case SCENE_SACRED_FOREST_MEADOW:
case SCENE_LAKE_HYLIA:
case SCENE_ZORAS_DOMAIN:
case SCENE_ZORAS_FOUNTAIN:
case SCENE_GERUDO_VALLEY:
case SCENE_LOST_WOODS:
case SCENE_DESERT_COLOSSUS:
case SCENE_GERUDOS_FORTRESS:
case SCENE_HAUNTED_WASTELAND:
case SCENE_HYRULE_CASTLE:
case SCENE_DEATH_MOUNTAIN_TRAIL:
case SCENE_DEATH_MOUNTAIN_CRATER:
case SCENE_GORON_CITY:
case SCENE_LON_LON_RANCH:
case SCENE_OUTSIDE_GANONS_CASTLE:
mapIndex = play->sceneNum - SCENE_HYRULE_FIELD;
R_MAP_INDEX = gSaveContext.mapIndex = mapIndex;
R_COMPASS_SCALE_X = gMapData->owCompassInfo[mapIndex][0];
R_COMPASS_SCALE_Y = gMapData->owCompassInfo[mapIndex][1];
@@ -561,35 +561,35 @@ void Map_Init(PlayState* play) {
R_OW_MINIMAP_X = gMapData->owMinimapPosX[mapIndex];
R_OW_MINIMAP_Y = gMapData->owMinimapPosY[mapIndex];
break;
case SCENE_YDAN:
case SCENE_DDAN:
case SCENE_BDAN:
case SCENE_BMORI1:
case SCENE_HIDAN:
case SCENE_MIZUSIN:
case SCENE_JYASINZOU:
case SCENE_HAKADAN:
case SCENE_HAKADANCH:
case SCENE_ICE_DOUKUTO:
case SCENE_GANON:
case SCENE_MEN:
case SCENE_GERUDOWAY:
case SCENE_GANONTIKA:
case SCENE_GANON_SONOGO:
case SCENE_GANONTIKA_SONOGO:
case SCENE_TAKARAYA:
case SCENE_YDAN_BOSS:
case SCENE_DDAN_BOSS:
case SCENE_BDAN_BOSS:
case SCENE_MORIBOSSROOM:
case SCENE_FIRE_BS:
case SCENE_MIZUSIN_BS:
case SCENE_JYASINBOSS:
case SCENE_HAKADAN_BS:
case SCENE_DEKU_TREE:
case SCENE_DODONGOS_CAVERN:
case SCENE_JABU_JABU:
case SCENE_FOREST_TEMPLE:
case SCENE_FIRE_TEMPLE:
case SCENE_WATER_TEMPLE:
case SCENE_SPIRIT_TEMPLE:
case SCENE_SHADOW_TEMPLE:
case SCENE_BOTTOM_OF_THE_WELL:
case SCENE_ICE_CAVERN:
case SCENE_GANONS_TOWER:
case SCENE_GERUDO_TRAINING_GROUND:
case SCENE_THIEVES_HIDEOUT:
case SCENE_INSIDE_GANONS_CASTLE:
case SCENE_GANONS_TOWER_COLLAPSE_INTERIOR:
case SCENE_INSIDE_GANONS_CASTLE_COLLAPSE:
case SCENE_TREASURE_BOX_SHOP:
case SCENE_DEKU_TREE_BOSS:
case SCENE_DODONGOS_CAVERN_BOSS:
case SCENE_JABU_JABU_BOSS:
case SCENE_FOREST_TEMPLE_BOSS:
case SCENE_FIRE_TEMPLE_BOSS:
case SCENE_WATER_TEMPLE_BOSS:
case SCENE_SPIRIT_TEMPLE_BOSS:
case SCENE_SHADOW_TEMPLE_BOSS:
mapIndex =
(play->sceneNum >= SCENE_YDAN_BOSS) ? play->sceneNum - SCENE_YDAN_BOSS : play->sceneNum;
(play->sceneNum >= SCENE_DEKU_TREE_BOSS) ? play->sceneNum - SCENE_DEKU_TREE_BOSS : play->sceneNum;
R_MAP_INDEX = gSaveContext.mapIndex = mapIndex;
if ((play->sceneNum <= SCENE_ICE_DOUKUTO) || (play->sceneNum >= SCENE_YDAN_BOSS)) {
if ((play->sceneNum <= SCENE_ICE_CAVERN) || (play->sceneNum >= SCENE_DEKU_TREE_BOSS)) {
R_COMPASS_SCALE_X = gMapData->dgnCompassInfo[mapIndex][0];
R_COMPASS_SCALE_Y = gMapData->dgnCompassInfo[mapIndex][1];
R_COMPASS_OFFSET_X = gMapData->dgnCompassInfo[mapIndex][2];
@@ -638,10 +638,10 @@ void Minimap_DrawCompassIcons(PlayState* play) {
s16 mapWidth = 0;
s16 mapStartPosX = 0;
if (play->sceneNum >= SCENE_SPOT00 && play->sceneNum <= SCENE_GANON_TOU) { // Overworld
if (play->sceneNum >= SCENE_HYRULE_FIELD && play->sceneNum <= SCENE_OUTSIDE_GANONS_CASTLE) { // Overworld
mapStartPosX = R_OW_MINIMAP_X;
mapWidth = gMapData->owMinimapWidth[R_MAP_INDEX];
} else if (play->sceneNum >= SCENE_YDAN && play->sceneNum <= SCENE_ICE_DOUKUTO) { // Dungeons
} else if (play->sceneNum >= SCENE_DEKU_TREE && play->sceneNum <= SCENE_ICE_CAVERN) { // Dungeons
mapStartPosX = R_DGN_MINIMAP_X;
mapWidth = 96;
}
@@ -752,16 +752,16 @@ void Minimap_Draw(PlayState* play) {
}
switch (play->sceneNum) {
case SCENE_YDAN:
case SCENE_DDAN:
case SCENE_BDAN:
case SCENE_BMORI1:
case SCENE_HIDAN:
case SCENE_MIZUSIN:
case SCENE_JYASINZOU:
case SCENE_HAKADAN:
case SCENE_HAKADANCH:
case SCENE_ICE_DOUKUTO:
case SCENE_DEKU_TREE:
case SCENE_DODONGOS_CAVERN:
case SCENE_JABU_JABU:
case SCENE_FOREST_TEMPLE:
case SCENE_FIRE_TEMPLE:
case SCENE_WATER_TEMPLE:
case SCENE_SPIRIT_TEMPLE:
case SCENE_SHADOW_TEMPLE:
case SCENE_BOTTOM_OF_THE_WELL:
case SCENE_ICE_CAVERN:
if (!R_MINIMAP_DISABLED && CVarGetInteger("gMinimapPosType", 0) != 4) { // Not Hidden
Gfx_SetupDL_39Overlay(play->state.gfxCtx);
gDPSetCombineLERP(OVERLAY_DISP++, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0, 1, 0, PRIMITIVE, 0,
@@ -820,26 +820,26 @@ void Minimap_Draw(PlayState* play) {
}
break;
case SCENE_SPOT00:
case SCENE_SPOT01:
case SCENE_SPOT02:
case SCENE_SPOT03:
case SCENE_SPOT04:
case SCENE_SPOT05:
case SCENE_SPOT06:
case SCENE_SPOT07:
case SCENE_SPOT08:
case SCENE_SPOT09:
case SCENE_SPOT10:
case SCENE_SPOT11:
case SCENE_SPOT12:
case SCENE_SPOT13:
case SCENE_SPOT15:
case SCENE_SPOT16:
case SCENE_SPOT17:
case SCENE_SPOT18:
case SCENE_SPOT20:
case SCENE_GANON_TOU:
case SCENE_HYRULE_FIELD:
case SCENE_KAKARIKO_VILLAGE:
case SCENE_GRAVEYARD:
case SCENE_ZORAS_RIVER:
case SCENE_KOKIRI_FOREST:
case SCENE_SACRED_FOREST_MEADOW:
case SCENE_LAKE_HYLIA:
case SCENE_ZORAS_DOMAIN:
case SCENE_ZORAS_FOUNTAIN:
case SCENE_GERUDO_VALLEY:
case SCENE_LOST_WOODS:
case SCENE_DESERT_COLOSSUS:
case SCENE_GERUDOS_FORTRESS:
case SCENE_HAUNTED_WASTELAND:
case SCENE_HYRULE_CASTLE:
case SCENE_DEATH_MOUNTAIN_TRAIL:
case SCENE_DEATH_MOUNTAIN_CRATER:
case SCENE_GORON_CITY:
case SCENE_LON_LON_RANCH:
case SCENE_OUTSIDE_GANONS_CASTLE:
if (!R_MINIMAP_DISABLED && CVarGetInteger("gMinimapPosType", 0) != 4) { // Not Hidden
Gfx_SetupDL_39Overlay(play->state.gfxCtx);
@@ -882,8 +882,8 @@ void Minimap_Draw(PlayState* play) {
s16 iconSize = 8;
if (((play->sceneNum != SCENE_SPOT01) && (play->sceneNum != SCENE_SPOT04) &&
(play->sceneNum != SCENE_SPOT08)) ||
if (((play->sceneNum != SCENE_KAKARIKO_VILLAGE) && (play->sceneNum != SCENE_KOKIRI_FOREST) &&
(play->sceneNum != SCENE_ZORAS_FOUNTAIN)) ||
(LINK_AGE_IN_YEARS != YEARS_ADULT)) {
s16 origX = gMapData->owEntranceIconPosX[sEntranceIconMapIndex];
@@ -952,7 +952,7 @@ void Minimap_Draw(PlayState* play) {
}
// Ice Cavern entrance icon
if ((play->sceneNum == SCENE_SPOT08) && ((gSaveContext.infTable[26] & gBitFlags[9]) ||
if ((play->sceneNum == SCENE_ZORAS_FOUNTAIN) && ((gSaveContext.infTable[26] & gBitFlags[9]) ||
CVarGetInteger("gAlwaysShowDungeonMinimapIcon", 0))) {
gDPLoadTextureBlock(OVERLAY_DISP++, gMapDungeonEntranceIconTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, iconSize,
iconSize, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
@@ -1000,16 +1000,16 @@ void Map_Update(PlayState* play) {
if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugState == 0)) {
switch (play->sceneNum) {
case SCENE_YDAN:
case SCENE_DDAN:
case SCENE_BDAN:
case SCENE_BMORI1:
case SCENE_HIDAN:
case SCENE_MIZUSIN:
case SCENE_JYASINZOU:
case SCENE_HAKADAN:
case SCENE_HAKADANCH:
case SCENE_ICE_DOUKUTO:
case SCENE_DEKU_TREE:
case SCENE_DODONGOS_CAVERN:
case SCENE_JABU_JABU:
case SCENE_FOREST_TEMPLE:
case SCENE_FIRE_TEMPLE:
case SCENE_WATER_TEMPLE:
case SCENE_SPIRIT_TEMPLE:
case SCENE_SHADOW_TEMPLE:
case SCENE_BOTTOM_OF_THE_WELL:
case SCENE_ICE_CAVERN:
interfaceCtx->mapPalette[30] = 0;
if (CHECK_DUNGEON_ITEM(DUNGEON_MAP, mapIndex)) {
interfaceCtx->mapPalette[31] = 1;
@@ -1052,17 +1052,17 @@ void Map_Update(PlayState* play) {
VREG(10) = interfaceCtx->mapRoomNum;
break;
case SCENE_YDAN_BOSS:
case SCENE_DDAN_BOSS:
case SCENE_BDAN_BOSS:
case SCENE_MORIBOSSROOM:
case SCENE_FIRE_BS:
case SCENE_MIZUSIN_BS:
case SCENE_JYASINBOSS:
case SCENE_HAKADAN_BS:
VREG(30) = gMapData->bossFloor[play->sceneNum - SCENE_YDAN_BOSS];
case SCENE_DEKU_TREE_BOSS:
case SCENE_DODONGOS_CAVERN_BOSS:
case SCENE_JABU_JABU_BOSS:
case SCENE_FOREST_TEMPLE_BOSS:
case SCENE_FIRE_TEMPLE_BOSS:
case SCENE_WATER_TEMPLE_BOSS:
case SCENE_SPIRIT_TEMPLE_BOSS:
case SCENE_SHADOW_TEMPLE_BOSS:
VREG(30) = gMapData->bossFloor[play->sceneNum - SCENE_DEKU_TREE_BOSS];
R_MAP_TEX_INDEX = R_MAP_TEX_INDEX_BASE +
gMapData->floorTexIndexOffset[play->sceneNum - SCENE_YDAN_BOSS][VREG(30)];
gMapData->floorTexIndexOffset[play->sceneNum - SCENE_DEKU_TREE_BOSS][VREG(30)];
break;
}
}

View File

@@ -150,10 +150,10 @@ void MapMark_DrawForDungeon(PlayState* play) {
rectTop = (markPoint->y + Y_Margins_Minimap_ic + 140 + CVarGetInteger("gMinimapPosY", 0));
if (CVarGetInteger("gMinimapPosType", 0) == 1) {//Anchor Left
if (CVarGetInteger("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap_ic = Left_MC_Margin;};
if (play->sceneNum == SCENE_YDAN || play->sceneNum == SCENE_DDAN || play->sceneNum == SCENE_BDAN ||
play->sceneNum == SCENE_BMORI1 || play->sceneNum == SCENE_HIDAN || play->sceneNum == SCENE_MIZUSIN ||
play->sceneNum == SCENE_JYASINZOU || play->sceneNum == SCENE_HAKADAN || play->sceneNum == SCENE_HAKADANCH ||
play->sceneNum == SCENE_ICE_DOUKUTO) {
if (play->sceneNum == SCENE_DEKU_TREE || play->sceneNum == SCENE_DODONGOS_CAVERN || play->sceneNum == SCENE_JABU_JABU ||
play->sceneNum == SCENE_FOREST_TEMPLE || play->sceneNum == SCENE_FIRE_TEMPLE || play->sceneNum == SCENE_WATER_TEMPLE ||
play->sceneNum == SCENE_SPIRIT_TEMPLE || play->sceneNum == SCENE_SHADOW_TEMPLE || play->sceneNum == SCENE_BOTTOM_OF_THE_WELL ||
play->sceneNum == SCENE_ICE_CAVERN) {
rectLeft = OTRGetRectDimensionFromLeftEdge(markPointX+CVarGetInteger("gMinimapPosX", 0)+204+X_Margins_Minimap_ic);
} else {
rectLeft = OTRGetRectDimensionFromLeftEdge(markPointX+CVarGetInteger("gMinimapPosX", 0)+204+X_Margins_Minimap_ic);
@@ -192,21 +192,21 @@ void MapMark_DrawForDungeon(PlayState* play) {
void MapMark_Draw(PlayState* play) {
switch (play->sceneNum) {
case SCENE_YDAN:
case SCENE_DDAN:
case SCENE_BDAN:
case SCENE_BMORI1:
case SCENE_HIDAN:
case SCENE_MIZUSIN:
case SCENE_JYASINZOU:
case SCENE_HAKADAN:
case SCENE_HAKADANCH:
case SCENE_ICE_DOUKUTO:
case SCENE_YDAN_BOSS:
case SCENE_DDAN_BOSS:
case SCENE_BDAN_BOSS:
case SCENE_MORIBOSSROOM:
case SCENE_FIRE_BS:
case SCENE_DEKU_TREE:
case SCENE_DODONGOS_CAVERN:
case SCENE_JABU_JABU:
case SCENE_FOREST_TEMPLE:
case SCENE_FIRE_TEMPLE:
case SCENE_WATER_TEMPLE:
case SCENE_SPIRIT_TEMPLE:
case SCENE_SHADOW_TEMPLE:
case SCENE_BOTTOM_OF_THE_WELL:
case SCENE_ICE_CAVERN:
case SCENE_DEKU_TREE_BOSS:
case SCENE_DODONGOS_CAVERN_BOSS:
case SCENE_JABU_JABU_BOSS:
case SCENE_FOREST_TEMPLE_BOSS:
case SCENE_FIRE_TEMPLE_BOSS:
MapMark_DrawForDungeon(play);
break;
}

View File

@@ -3153,7 +3153,7 @@ void Message_Update(PlayState* play) {
if (D_8014B2F4 >= 4) {
var = true;
}
} else if (YREG(15) != 0 || play->sceneNum == SCENE_HAIRAL_NIWA) {
} else if (YREG(15) != 0 || play->sceneNum == SCENE_CASTLE_COURTYARD_GUARDS_DAY) {
var = true;
} else if (D_8014B2F4 >= 4 || msgCtx->talkActor == NULL) {
var = true;
@@ -3180,7 +3180,7 @@ void Message_Update(PlayState* play) {
var = msgCtx->textBoxType;
if (!msgCtx->textBoxPos) { // variable position
if (YREG(15) != 0 || play->sceneNum == SCENE_HAIRAL_NIWA) {
if (YREG(15) != 0 || play->sceneNum == SCENE_CASTLE_COURTYARD_GUARDS_DAY) {
if (averageY < XREG(92)) {
R_TEXTBOX_Y_TARGET = sTextboxLowerYPositions[var];
} else {

View File

@@ -43,106 +43,106 @@ typedef struct {
} RestrictionFlags;
static RestrictionFlags sRestrictionFlags[] = {
{ SCENE_SPOT00, 0x00, 0x00, 0x10 },
{ SCENE_SPOT01, 0x00, 0x00, 0x10 },
{ SCENE_SPOT02, 0x00, 0x00, 0x10 },
{ SCENE_SPOT03, 0x00, 0x00, 0x10 },
{ SCENE_SPOT04, 0x00, 0x00, 0x10 },
{ SCENE_SPOT05, 0x00, 0x00, 0x10 },
{ SCENE_SPOT06, 0x00, 0x00, 0x10 },
{ SCENE_SPOT07, 0x00, 0x00, 0x10 },
{ SCENE_SPOT08, 0x00, 0x00, 0x10 },
{ SCENE_SPOT09, 0x00, 0x00, 0x10 },
{ SCENE_SPOT10, 0x00, 0x00, 0x10 },
{ SCENE_SPOT11, 0x00, 0x00, 0x10 },
{ SCENE_SPOT12, 0x00, 0x00, 0x10 },
{ SCENE_SPOT13, 0x00, 0x00, 0x10 },
{ SCENE_SPOT15, 0x00, 0x00, 0x10 },
{ SCENE_GANON_TOU, 0x00, 0x00, 0x10 },
{ SCENE_SPOT16, 0x00, 0x00, 0x10 },
{ SCENE_SPOT17, 0x00, 0x00, 0x10 },
{ SCENE_SPOT18, 0x00, 0x00, 0x10 },
{ SCENE_SPOT20, 0x00, 0x00, 0x10 },
{ SCENE_TOKINOMA, 0x00, 0x10, 0x15 },
{ SCENE_KENJYANOMA, 0xA2, 0xAA, 0xAA },
{ SCENE_SYATEKIJYOU, 0x11, 0x55, 0x55 },
{ SCENE_HAIRAL_NIWA, 0x11, 0x55, 0x55 },
{ SCENE_HAIRAL_NIWA_N, 0x11, 0x55, 0x55 },
{ SCENE_HAKAANA, 0x00, 0x00, 0xD0 },
{ SCENE_HAKAANA2, 0x00, 0x00, 0xD0 },
{ SCENE_HAKAANA_OUKE, 0x00, 0x00, 0xD0 },
{ SCENE_DAIYOUSEI_IZUMI, 0x00, 0x00, 0x10 },
{ SCENE_YOUSEI_IZUMI_TATE, 0x00, 0x00, 0xD0 },
{ SCENE_YOUSEI_IZUMI_YOKO, 0x00, 0x00, 0x10 },
{ SCENE_GANON_FINAL, 0x00, 0x05, 0x50 },
{ SCENE_NAKANIWA, 0x00, 0x05, 0x54 },
{ SCENE_TURIBORI, 0x11, 0x55, 0x55 },
{ SCENE_BOWLING, 0x11, 0x55, 0x55 },
{ SCENE_SOUKO, 0x00, 0x10, 0x15 },
{ SCENE_MIHARIGOYA, 0x00, 0x10, 0x14 },
{ SCENE_MAHOUYA, 0x10, 0x15, 0x55 },
{ SCENE_TAKARAYA, 0x10, 0x15, 0x55 },
{ SCENE_KINSUTA, 0x00, 0x10, 0x15 },
{ SCENE_ENTRA, 0x00, 0x10, 0x15 },
{ SCENE_ENTRA_N, 0x00, 0x10, 0x15 },
{ SCENE_ENRUI, 0x00, 0x10, 0xD5 },
{ SCENE_HYRULE_FIELD, 0x00, 0x00, 0x10 },
{ SCENE_KAKARIKO_VILLAGE, 0x00, 0x00, 0x10 },
{ SCENE_GRAVEYARD, 0x00, 0x00, 0x10 },
{ SCENE_ZORAS_RIVER, 0x00, 0x00, 0x10 },
{ SCENE_KOKIRI_FOREST, 0x00, 0x00, 0x10 },
{ SCENE_SACRED_FOREST_MEADOW, 0x00, 0x00, 0x10 },
{ SCENE_LAKE_HYLIA, 0x00, 0x00, 0x10 },
{ SCENE_ZORAS_DOMAIN, 0x00, 0x00, 0x10 },
{ SCENE_ZORAS_FOUNTAIN, 0x00, 0x00, 0x10 },
{ SCENE_GERUDO_VALLEY, 0x00, 0x00, 0x10 },
{ SCENE_LOST_WOODS, 0x00, 0x00, 0x10 },
{ SCENE_DESERT_COLOSSUS, 0x00, 0x00, 0x10 },
{ SCENE_GERUDOS_FORTRESS, 0x00, 0x00, 0x10 },
{ SCENE_HAUNTED_WASTELAND, 0x00, 0x00, 0x10 },
{ SCENE_HYRULE_CASTLE, 0x00, 0x00, 0x10 },
{ SCENE_OUTSIDE_GANONS_CASTLE, 0x00, 0x00, 0x10 },
{ SCENE_DEATH_MOUNTAIN_TRAIL, 0x00, 0x00, 0x10 },
{ SCENE_DEATH_MOUNTAIN_CRATER, 0x00, 0x00, 0x10 },
{ SCENE_GORON_CITY, 0x00, 0x00, 0x10 },
{ SCENE_LON_LON_RANCH, 0x00, 0x00, 0x10 },
{ SCENE_TEMPLE_OF_TIME, 0x00, 0x10, 0x15 },
{ SCENE_CHAMBER_OF_THE_SAGES, 0xA2, 0xAA, 0xAA },
{ SCENE_SHOOTING_GALLERY, 0x11, 0x55, 0x55 },
{ SCENE_CASTLE_COURTYARD_GUARDS_DAY, 0x11, 0x55, 0x55 },
{ SCENE_CASTLE_COURTYARD_GUARDS_NIGHT, 0x11, 0x55, 0x55 },
{ SCENE_REDEAD_GRAVE, 0x00, 0x00, 0xD0 },
{ SCENE_GRAVE_WITH_FAIRYS_FOUNTAIN, 0x00, 0x00, 0xD0 },
{ SCENE_ROYAL_FAMILYS_TOMB, 0x00, 0x00, 0xD0 },
{ SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC, 0x00, 0x00, 0x10 },
{ SCENE_FAIRYS_FOUNTAIN, 0x00, 0x00, 0xD0 },
{ SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS, 0x00, 0x00, 0x10 },
{ SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR, 0x00, 0x05, 0x50 },
{ SCENE_CASTLE_COURTYARD_ZELDA, 0x00, 0x05, 0x54 },
{ SCENE_FISHING_POND, 0x11, 0x55, 0x55 },
{ SCENE_BOMBCHU_BOWLING_ALLEY, 0x11, 0x55, 0x55 },
{ SCENE_LON_LON_BUILDINGS, 0x00, 0x10, 0x15 },
{ SCENE_MARKET_GUARD_HOUSE, 0x00, 0x10, 0x14 },
{ SCENE_POTION_SHOP_GRANNY, 0x10, 0x15, 0x55 },
{ SCENE_TREASURE_BOX_SHOP, 0x10, 0x15, 0x55 },
{ SCENE_HOUSE_OF_SKULLTULA, 0x00, 0x10, 0x15 },
{ SCENE_MARKET_ENTRANCE_DAY, 0x00, 0x10, 0x15 },
{ SCENE_MARKET_ENTRANCE_NIGHT, 0x00, 0x10, 0x15 },
{ SCENE_MARKET_ENTRANCE_RUINS, 0x00, 0x10, 0xD5 },
{ SCENE_MARKET_DAY, 0x00, 0x10, 0x15 },
{ SCENE_MARKET_NIGHT, 0x00, 0x10, 0x15 },
{ SCENE_MARKET_RUINS, 0x00, 0x10, 0xD5 },
{ SCENE_MARKET_ALLEY, 0x00, 0x10, 0x15 },
{ SCENE_MARKET_ALLEY_N, 0x00, 0x10, 0x15 },
{ SCENE_SHRINE, 0x00, 0x10, 0x15 },
{ SCENE_SHRINE_N, 0x00, 0x10, 0x15 },
{ SCENE_SHRINE_R, 0x00, 0x10, 0xD5 },
{ SCENE_LINK_HOME, 0x10, 0x10, 0x15 },
{ SCENE_KAKARIKO, 0x10, 0x10, 0x15 },
{ SCENE_KAKARIKO3, 0x10, 0x10, 0x15 },
{ SCENE_KOKIRI_HOME, 0x10, 0x10, 0x15 },
{ SCENE_KOKIRI_HOME3, 0x10, 0x10, 0x15 },
{ SCENE_KOKIRI_HOME4, 0x10, 0x10, 0x15 },
{ SCENE_KOKIRI_HOME5, 0x10, 0x10, 0x15 },
{ SCENE_MALON_STABLE, 0x10, 0x10, 0x15 },
{ SCENE_HUT, 0x10, 0x10, 0x15 },
{ SCENE_IMPA, 0x10, 0x10, 0x15 },
{ SCENE_LABO, 0x10, 0x10, 0x15 },
{ SCENE_HYLIA_LABO, 0x00, 0x10, 0x15 },
{ SCENE_TENT, 0x10, 0x10, 0x15 },
{ SCENE_SHOP1, 0x10, 0x10, 0x15 },
{ SCENE_BACK_ALLEY_DAY, 0x00, 0x10, 0x15 },
{ SCENE_BACK_ALLEY_NIGHT, 0x00, 0x10, 0x15 },
{ SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY, 0x00, 0x10, 0x15 },
{ SCENE_TEMPLE_OF_TIME_EXTERIOR_NIGHT, 0x00, 0x10, 0x15 },
{ SCENE_TEMPLE_OF_TIME_EXTERIOR_RUINS, 0x00, 0x10, 0xD5 },
{ SCENE_LINKS_HOUSE, 0x10, 0x10, 0x15 },
{ SCENE_KAKARIKO_CENTER_GUEST_HOUSE, 0x10, 0x10, 0x15 },
{ SCENE_BACK_ALLEY_HOUSE, 0x10, 0x10, 0x15 },
{ SCENE_KNOW_IT_ALL_BROS_HOUSE, 0x10, 0x10, 0x15 },
{ SCENE_TWINS_HOUSE, 0x10, 0x10, 0x15 },
{ SCENE_MIDOS_HOUSE, 0x10, 0x10, 0x15 },
{ SCENE_SARIAS_HOUSE, 0x10, 0x10, 0x15 },
{ SCENE_STABLE, 0x10, 0x10, 0x15 },
{ SCENE_GRAVEKEEPERS_HUT, 0x10, 0x10, 0x15 },
{ SCENE_DOG_LADY_HOUSE, 0x10, 0x10, 0x15 },
{ SCENE_IMPAS_HOUSE, 0x10, 0x10, 0x15 },
{ SCENE_LAKESIDE_LABORATORY, 0x00, 0x10, 0x15 },
{ SCENE_CARPENTERS_TENT, 0x10, 0x10, 0x15 },
{ SCENE_BAZAAR, 0x10, 0x10, 0x15 },
{ SCENE_KOKIRI_SHOP, 0x10, 0x10, 0x15 },
{ SCENE_GOLON, 0x10, 0x10, 0x15 },
{ SCENE_ZOORA, 0x10, 0x10, 0x15 },
{ SCENE_DRAG, 0x10, 0x10, 0x15 },
{ SCENE_ALLEY_SHOP, 0x10, 0x10, 0x15 },
{ SCENE_NIGHT_SHOP, 0x10, 0x10, 0x15 },
{ SCENE_FACE_SHOP, 0x10, 0x10, 0x15 },
{ SCENE_MEN, 0x00, 0x03, 0x10 },
{ SCENE_YDAN, 0x00, 0x00, 0x00 },
{ SCENE_YDAN_BOSS, 0x00, 0x45, 0x50 },
{ SCENE_DDAN, 0x00, 0x00, 0x00 },
{ SCENE_DDAN_BOSS, 0x00, 0x45, 0x50 },
{ SCENE_BDAN, 0x00, 0x00, 0x00 },
{ SCENE_BDAN_BOSS, 0x00, 0x45, 0x50 },
{ SCENE_BMORI1, 0x00, 0x00, 0x00 },
{ SCENE_MORIBOSSROOM, 0x00, 0x45, 0x50 },
{ SCENE_HAKADANCH, 0x00, 0x00, 0x00 },
{ SCENE_HAKADAN, 0x00, 0x00, 0x00 },
{ SCENE_HAKADAN_BS, 0x00, 0x45, 0x50 },
{ SCENE_HIDAN, 0x00, 0x00, 0x00 },
{ SCENE_FIRE_BS, 0x00, 0x45, 0x50 },
{ SCENE_MIZUSIN, 0x00, 0x00, 0x00 },
{ SCENE_MIZUSIN_BS, 0x00, 0x45, 0x50 },
{ SCENE_JYASINZOU, 0x00, 0x00, 0x00 },
{ SCENE_JYASINBOSS, 0x00, 0x45, 0x50 },
{ SCENE_GANON, 0x00, 0x00, 0x00 },
{ SCENE_GORON_SHOP, 0x10, 0x10, 0x15 },
{ SCENE_ZORA_SHOP, 0x10, 0x10, 0x15 },
{ SCENE_POTION_SHOP_KAKARIKO, 0x10, 0x10, 0x15 },
{ SCENE_POTION_SHOP_MARKET, 0x10, 0x10, 0x15 },
{ SCENE_BOMBCHU_SHOP, 0x10, 0x10, 0x15 },
{ SCENE_HAPPY_MASK_SHOP, 0x10, 0x10, 0x15 },
{ SCENE_GERUDO_TRAINING_GROUND, 0x00, 0x03, 0x10 },
{ SCENE_DEKU_TREE, 0x00, 0x00, 0x00 },
{ SCENE_DEKU_TREE_BOSS, 0x00, 0x45, 0x50 },
{ SCENE_DODONGOS_CAVERN, 0x00, 0x00, 0x00 },
{ SCENE_DODONGOS_CAVERN_BOSS, 0x00, 0x45, 0x50 },
{ SCENE_JABU_JABU, 0x00, 0x00, 0x00 },
{ SCENE_JABU_JABU_BOSS, 0x00, 0x45, 0x50 },
{ SCENE_FOREST_TEMPLE, 0x00, 0x00, 0x00 },
{ SCENE_FOREST_TEMPLE_BOSS, 0x00, 0x45, 0x50 },
{ SCENE_BOTTOM_OF_THE_WELL, 0x00, 0x00, 0x00 },
{ SCENE_SHADOW_TEMPLE, 0x00, 0x00, 0x00 },
{ SCENE_SHADOW_TEMPLE_BOSS, 0x00, 0x45, 0x50 },
{ SCENE_FIRE_TEMPLE, 0x00, 0x00, 0x00 },
{ SCENE_FIRE_TEMPLE_BOSS, 0x00, 0x45, 0x50 },
{ SCENE_WATER_TEMPLE, 0x00, 0x00, 0x00 },
{ SCENE_WATER_TEMPLE_BOSS, 0x00, 0x45, 0x50 },
{ SCENE_SPIRIT_TEMPLE, 0x00, 0x00, 0x00 },
{ SCENE_SPIRIT_TEMPLE_BOSS, 0x00, 0x45, 0x50 },
{ SCENE_GANONS_TOWER, 0x00, 0x00, 0x00 },
{ SCENE_GANONDORF_BOSS, 0x00, 0x45, 0x50 },
{ SCENE_ICE_CAVERN, 0x00, 0x00, 0xC0 },
{ SCENE_WINDMILL_AND_DAMPES_GRAVE, 0x00, 0x03, 0x14 },
{ SCENE_INSIDE_GANONS_CASTLE, 0x00, 0x03, 0x10 },
{ SCENE_GANON_BOSS, 0x00, 0x45, 0x50 },
{ SCENE_ICE_DOUKUTO, 0x00, 0x00, 0xC0 },
{ SCENE_HAKASITARELAY, 0x00, 0x03, 0x14 },
{ SCENE_GANONTIKA, 0x00, 0x03, 0x10 },
{ SCENE_GANON_DEMO, 0x00, 0x45, 0x50 },
{ SCENE_GANON_SONOGO, 0x00, 0x05, 0x50 },
{ SCENE_GANONTIKA_SONOGO, 0x00, 0x05, 0x50 },
{ SCENE_GERUDOWAY, 0x00, 0x00, 0x10 },
{ SCENE_KAKUSIANA, 0x00, 0x00, 0xD0 },
{ SCENE_GANONS_TOWER_COLLAPSE_INTERIOR, 0x00, 0x05, 0x50 },
{ SCENE_INSIDE_GANONS_CASTLE_COLLAPSE, 0x00, 0x05, 0x50 },
{ SCENE_THIEVES_HIDEOUT, 0x00, 0x00, 0x10 },
{ SCENE_GROTTOS, 0x00, 0x00, 0xD0 },
{ 0xFF, 0x00, 0x00, 0x00 },
};
@@ -537,26 +537,26 @@ void func_80082850(PlayState* play, s16 maxAlpha) {
}
switch (play->sceneNum) {
case SCENE_SPOT00:
case SCENE_SPOT01:
case SCENE_SPOT02:
case SCENE_SPOT03:
case SCENE_SPOT04:
case SCENE_SPOT05:
case SCENE_SPOT06:
case SCENE_SPOT07:
case SCENE_SPOT08:
case SCENE_SPOT09:
case SCENE_SPOT10:
case SCENE_SPOT11:
case SCENE_SPOT12:
case SCENE_SPOT13:
case SCENE_SPOT15:
case SCENE_SPOT16:
case SCENE_SPOT17:
case SCENE_SPOT18:
case SCENE_SPOT20:
case SCENE_GANON_TOU:
case SCENE_HYRULE_FIELD:
case SCENE_KAKARIKO_VILLAGE:
case SCENE_GRAVEYARD:
case SCENE_ZORAS_RIVER:
case SCENE_KOKIRI_FOREST:
case SCENE_SACRED_FOREST_MEADOW:
case SCENE_LAKE_HYLIA:
case SCENE_ZORAS_DOMAIN:
case SCENE_ZORAS_FOUNTAIN:
case SCENE_GERUDO_VALLEY:
case SCENE_LOST_WOODS:
case SCENE_DESERT_COLOSSUS:
case SCENE_GERUDOS_FORTRESS:
case SCENE_HAUNTED_WASTELAND:
case SCENE_HYRULE_CASTLE:
case SCENE_DEATH_MOUNTAIN_TRAIL:
case SCENE_DEATH_MOUNTAIN_CRATER:
case SCENE_GORON_CITY:
case SCENE_LON_LON_RANCH:
case SCENE_OUTSIDE_GANONS_CASTLE:
if (interfaceCtx->minimapAlpha < 170) {
interfaceCtx->minimapAlpha = alpha;
} else {
@@ -821,11 +821,11 @@ void func_80083108(PlayState* play) {
s16 sp28 = 0;
if ((gSaveContext.cutsceneIndex < 0xFFF0) ||
((play->sceneNum == SCENE_SPOT20) && (gSaveContext.cutsceneIndex == 0xFFF0))) {
((play->sceneNum == SCENE_LON_LON_RANCH) && (gSaveContext.cutsceneIndex == 0xFFF0))) {
gSaveContext.unk_13E7 = 0;
if ((player->stateFlags1 & 0x00800000) || (play->shootingGalleryStatus > 1) ||
((play->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(play, 0x38))) {
((play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38))) {
if (gSaveContext.equips.buttonItems[0] != ITEM_NONE) {
gSaveContext.unk_13E7 = 1;
@@ -842,7 +842,7 @@ void func_80083108(PlayState* play) {
(gSaveContext.equips.buttonItems[0] != ITEM_NONE)) {
gSaveContext.buttonStatus[0] = gSaveContext.equips.buttonItems[0];
if ((play->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(play, 0x38)) {
if ((play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38)) {
gSaveContext.equips.buttonItems[0] = ITEM_BOMBCHU;
Interface_LoadItemIcon1(play, 0);
} else {
@@ -875,7 +875,7 @@ void func_80083108(PlayState* play) {
Interface_ChangeAlpha(8);
} else if (play->shootingGalleryStatus > 1) {
Interface_ChangeAlpha(8);
} else if ((play->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(play, 0x38)) {
} else if ((play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38)) {
Interface_ChangeAlpha(8);
} else if (player->stateFlags1 & 0x00800000) {
Interface_ChangeAlpha(12);
@@ -886,9 +886,9 @@ void func_80083108(PlayState* play) {
}
}
// Don't hide the HUD in the Chamber of Sages when in Boss Rush.
} else if (play->sceneNum == SCENE_KENJYANOMA && !gSaveContext.isBossRush) {
} else if (play->sceneNum == SCENE_CHAMBER_OF_THE_SAGES && !gSaveContext.isBossRush) {
Interface_ChangeAlpha(1);
} else if (play->sceneNum == SCENE_TURIBORI) {
} else if (play->sceneNum == SCENE_FISHING_POND) {
gSaveContext.unk_13E7 = 2;
if (play->interfaceCtx.unk_260 != 0) {
if (gSaveContext.equips.buttonItems[0] != ITEM_FISHING_POLE) {
@@ -1259,7 +1259,7 @@ void func_80083108(PlayState* play) {
(gSaveContext.equips.buttonItems[i] <= ITEM_BOOTS_HOVER)) && // (tunics/boots) on C-buttons
!((gSaveContext.equips.buttonItems[i] >= ITEM_WEIRD_EGG) &&
(gSaveContext.equips.buttonItems[i] <= ITEM_CLAIM_CHECK))) {
if ((play->sceneNum != SCENE_TAKARAYA) ||
if ((play->sceneNum != SCENE_TREASURE_BOX_SHOP) ||
(gSaveContext.equips.buttonItems[i] != ITEM_LENS)) {
if (gSaveContext.buttonStatus[BUTTON_STATUS_INDEX(i)] == BTN_ENABLED) {
sp28 = 1;
@@ -1360,7 +1360,7 @@ void Interface_SetSceneRestrictions(PlayState* play) {
interfaceCtx->restrictions.all);
osSyncPrintf(VT_RST);
if (CVarGetInteger("gBetterFW", 0)) {
if (currentScene == SCENE_MEN || currentScene == SCENE_GANONTIKA) {
if (currentScene == SCENE_GERUDO_TRAINING_GROUND || currentScene == SCENE_INSIDE_GANONS_CASTLE) {
interfaceCtx->restrictions.farores = 0;
}
}
@@ -2406,22 +2406,22 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
switch (item) {
case RG_DEKU_TREE_MAP:
case RG_DEKU_TREE_COMPASS:
mapIndex = SCENE_YDAN;
mapIndex = SCENE_DEKU_TREE;
break;
case RG_DODONGOS_CAVERN_MAP:
case RG_DODONGOS_CAVERN_COMPASS:
mapIndex = SCENE_DDAN;
mapIndex = SCENE_DODONGOS_CAVERN;
break;
case RG_JABU_JABUS_BELLY_MAP:
case RG_JABU_JABUS_BELLY_COMPASS:
mapIndex = SCENE_BDAN;
mapIndex = SCENE_JABU_JABU;
break;
case RG_FOREST_TEMPLE_MAP:
case RG_FOREST_TEMPLE_COMPASS:
case RG_FOREST_TEMPLE_SMALL_KEY:
case RG_FOREST_TEMPLE_KEY_RING:
case RG_FOREST_TEMPLE_BOSS_KEY:
mapIndex = SCENE_BMORI1;
mapIndex = SCENE_FOREST_TEMPLE;
numOfKeysOnKeyring = FOREST_TEMPLE_SMALL_KEY_MAX;
break;
case RG_FIRE_TEMPLE_MAP:
@@ -2429,7 +2429,7 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
case RG_FIRE_TEMPLE_SMALL_KEY:
case RG_FIRE_TEMPLE_KEY_RING:
case RG_FIRE_TEMPLE_BOSS_KEY:
mapIndex = SCENE_HIDAN;
mapIndex = SCENE_FIRE_TEMPLE;
numOfKeysOnKeyring = FIRE_TEMPLE_SMALL_KEY_MAX;
break;
case RG_WATER_TEMPLE_MAP:
@@ -2437,7 +2437,7 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
case RG_WATER_TEMPLE_SMALL_KEY:
case RG_WATER_TEMPLE_KEY_RING:
case RG_WATER_TEMPLE_BOSS_KEY:
mapIndex = SCENE_MIZUSIN;
mapIndex = SCENE_WATER_TEMPLE;
numOfKeysOnKeyring = WATER_TEMPLE_SMALL_KEY_MAX;
break;
case RG_SPIRIT_TEMPLE_MAP:
@@ -2445,7 +2445,7 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
case RG_SPIRIT_TEMPLE_SMALL_KEY:
case RG_SPIRIT_TEMPLE_KEY_RING:
case RG_SPIRIT_TEMPLE_BOSS_KEY:
mapIndex = SCENE_JYASINZOU;
mapIndex = SCENE_SPIRIT_TEMPLE;
numOfKeysOnKeyring = SPIRIT_TEMPLE_SMALL_KEY_MAX;
break;
case RG_SHADOW_TEMPLE_MAP:
@@ -2453,36 +2453,36 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
case RG_SHADOW_TEMPLE_SMALL_KEY:
case RG_SHADOW_TEMPLE_KEY_RING:
case RG_SHADOW_TEMPLE_BOSS_KEY:
mapIndex = SCENE_HAKADAN;
mapIndex = SCENE_SHADOW_TEMPLE;
numOfKeysOnKeyring = SHADOW_TEMPLE_SMALL_KEY_MAX;
break;
case RG_BOTTOM_OF_THE_WELL_MAP:
case RG_BOTTOM_OF_THE_WELL_COMPASS:
case RG_BOTTOM_OF_THE_WELL_SMALL_KEY:
case RG_BOTTOM_OF_THE_WELL_KEY_RING:
mapIndex = SCENE_HAKADANCH;
mapIndex = SCENE_BOTTOM_OF_THE_WELL;
numOfKeysOnKeyring = BOTTOM_OF_THE_WELL_SMALL_KEY_MAX;
break;
case RG_ICE_CAVERN_MAP:
case RG_ICE_CAVERN_COMPASS:
mapIndex = SCENE_ICE_DOUKUTO;
mapIndex = SCENE_ICE_CAVERN;
break;
case RG_GANONS_CASTLE_BOSS_KEY:
mapIndex = SCENE_GANON;
mapIndex = SCENE_GANONS_TOWER;
break;
case RG_GERUDO_TRAINING_GROUNDS_SMALL_KEY:
case RG_GERUDO_TRAINING_GROUNDS_KEY_RING:
mapIndex = SCENE_MEN;
mapIndex = SCENE_GERUDO_TRAINING_GROUND;
numOfKeysOnKeyring = GERUDO_TRAINING_GROUNDS_SMALL_KEY_MAX;
break;
case RG_GERUDO_FORTRESS_SMALL_KEY:
case RG_GERUDO_FORTRESS_KEY_RING:
mapIndex = SCENE_GERUDOWAY;
mapIndex = SCENE_THIEVES_HIDEOUT;
numOfKeysOnKeyring = GERUDO_FORTRESS_SMALL_KEY_MAX;
break;
case RG_GANONS_CASTLE_SMALL_KEY:
case RG_GANONS_CASTLE_KEY_RING:
mapIndex = SCENE_GANONTIKA;
mapIndex = SCENE_INSIDE_GANONS_CASTLE;
numOfKeysOnKeyring = GANONS_CASTLE_SMALL_KEY_MAX;
break;
}
@@ -4751,7 +4751,7 @@ void Interface_DrawAmmoCount(PlayState* play, s16 button, s16 alpha) {
ammo = play->interfaceCtx.hbaAmmo;
} else if ((button == 0) && (play->shootingGalleryStatus > 1)) {
ammo = play->shootingGalleryStatus - 1;
} else if ((button == 0) && (play->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(play, 0x38)) {
} else if ((button == 0) && (play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38)) {
ammo = play->bombchuBowlingStatus;
if (ammo < 0) {
ammo = 0;
@@ -5087,20 +5087,20 @@ void Interface_Draw(PlayState* play) {
}
switch (play->sceneNum) {
case SCENE_BMORI1:
case SCENE_HIDAN:
case SCENE_MIZUSIN:
case SCENE_JYASINZOU:
case SCENE_HAKADAN:
case SCENE_HAKADANCH:
case SCENE_ICE_DOUKUTO:
case SCENE_GANON:
case SCENE_MEN:
case SCENE_GERUDOWAY:
case SCENE_GANONTIKA:
case SCENE_GANON_SONOGO:
case SCENE_GANONTIKA_SONOGO:
case SCENE_TAKARAYA:
case SCENE_FOREST_TEMPLE:
case SCENE_FIRE_TEMPLE:
case SCENE_WATER_TEMPLE:
case SCENE_SPIRIT_TEMPLE:
case SCENE_SHADOW_TEMPLE:
case SCENE_BOTTOM_OF_THE_WELL:
case SCENE_ICE_CAVERN:
case SCENE_GANONS_TOWER:
case SCENE_GERUDO_TRAINING_GROUND:
case SCENE_THIEVES_HIDEOUT:
case SCENE_INSIDE_GANONS_CASTLE:
case SCENE_GANONS_TOWER_COLLAPSE_INTERIOR:
case SCENE_INSIDE_GANONS_CASTLE_COLLAPSE:
case SCENE_TREASURE_BOX_SHOP:
if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] >= 0) {
s16 X_Margins_SKC;
s16 Y_Margins_SKC;
@@ -5257,7 +5257,7 @@ void Interface_Draw(PlayState* play) {
}
if ((player->stateFlags1 & 0x00800000) || (play->shootingGalleryStatus > 1) ||
((play->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(play, 0x38))) {
((play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38))) {
if (!fullUi) {
Interface_DrawItemIconTexture(play, gItemIcons[gSaveContext.equips.buttonItems[0]], 0);
@@ -5723,7 +5723,7 @@ void Interface_Draw(PlayState* play) {
!(player->stateFlags2 & 0x01000000) && (play->sceneLoadFlag == 0) &&
(play->transitionMode == 0) && !Play_InCsMode(play) && (gSaveContext.minigameState != 1) &&
(play->shootingGalleryStatus <= 1) &&
!((play->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(play, 0x38))) {
!((play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38))) {
svar6 = 0;
switch (gSaveContext.timer1State) {
case 1:
@@ -5978,10 +5978,10 @@ void Interface_Draw(PlayState* play) {
if (gSaveContext.timer2Value <= 0) {
if (!Flags_GetSwitch(play, 0x37) ||
((play->sceneNum != SCENE_GANON_DEMO) &&
(play->sceneNum != SCENE_GANON_FINAL) &&
(play->sceneNum != SCENE_GANON_SONOGO) &&
(play->sceneNum != SCENE_GANONTIKA_SONOGO))) {
((play->sceneNum != SCENE_GANON_BOSS) &&
(play->sceneNum != SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) &&
(play->sceneNum != SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) &&
(play->sceneNum != SCENE_INSIDE_GANONS_CASTLE_COLLAPSE))) {
D_8015FFE6 = 40;
gSaveContext.timer2State = 5;
gSaveContext.cutsceneIndex = 0;
@@ -6270,9 +6270,9 @@ void Interface_Update(PlayState* play) {
if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugState == 0)) {
if ((gSaveContext.minigameState == 1) || (gSaveContext.sceneSetupIndex < 4) ||
((play->sceneNum == SCENE_SPOT20) && (gSaveContext.sceneSetupIndex == 4))) {
((play->sceneNum == SCENE_LON_LON_RANCH) && (gSaveContext.sceneSetupIndex == 4))) {
if ((msgCtx->msgMode == MSGMODE_NONE) ||
((msgCtx->msgMode != MSGMODE_NONE) && (play->sceneNum == SCENE_BOWLING))) {
((msgCtx->msgMode != MSGMODE_NONE) && (play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY))) {
if (play->gameOverCtx.state == GAMEOVER_INACTIVE) {
func_80083108(play);
}
@@ -6329,26 +6329,26 @@ void Interface_Update(PlayState* play) {
}
switch (play->sceneNum) {
case SCENE_SPOT00:
case SCENE_SPOT01:
case SCENE_SPOT02:
case SCENE_SPOT03:
case SCENE_SPOT04:
case SCENE_SPOT05:
case SCENE_SPOT06:
case SCENE_SPOT07:
case SCENE_SPOT08:
case SCENE_SPOT09:
case SCENE_SPOT10:
case SCENE_SPOT11:
case SCENE_SPOT12:
case SCENE_SPOT13:
case SCENE_SPOT15:
case SCENE_SPOT16:
case SCENE_SPOT17:
case SCENE_SPOT18:
case SCENE_SPOT20:
case SCENE_GANON_TOU:
case SCENE_HYRULE_FIELD:
case SCENE_KAKARIKO_VILLAGE:
case SCENE_GRAVEYARD:
case SCENE_ZORAS_RIVER:
case SCENE_KOKIRI_FOREST:
case SCENE_SACRED_FOREST_MEADOW:
case SCENE_LAKE_HYLIA:
case SCENE_ZORAS_DOMAIN:
case SCENE_ZORAS_FOUNTAIN:
case SCENE_GERUDO_VALLEY:
case SCENE_LOST_WOODS:
case SCENE_DESERT_COLOSSUS:
case SCENE_GERUDOS_FORTRESS:
case SCENE_HAUNTED_WASTELAND:
case SCENE_HYRULE_CASTLE:
case SCENE_DEATH_MOUNTAIN_TRAIL:
case SCENE_DEATH_MOUNTAIN_CRATER:
case SCENE_GORON_CITY:
case SCENE_LON_LON_RANCH:
case SCENE_OUTSIDE_GANONS_CASTLE:
if (interfaceCtx->minimapAlpha < 170) {
interfaceCtx->minimapAlpha = alpha1;
} else {
@@ -6616,7 +6616,7 @@ void Interface_Update(PlayState* play) {
play->unk_11DE9 = 1;
}
if (play->sceneNum == SCENE_SPOT13) {
if (play->sceneNum == SCENE_HAUNTED_WASTELAND) {
play->fadeTransition = 14;
gSaveContext.nextTransitionType = 14;
}

View File

@@ -425,7 +425,7 @@ void GivePlayerRandoRewardZeldaLightArrowsGift(PlayState* play, RandomizerCheck
}
if (meetsRequirements && LINK_IS_ADULT &&
(gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TOKINOMA) &&
(gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TEMPLE_OF_TIME) &&
!Flags_GetTreasure(play, 0x1E) && player != NULL && !Player_InBlockingCsMode(play, player) &&
play->sceneLoadFlag == 0) {
GetItemEntry getItem = Randomizer_GetItemFromKnownCheck(check, GI_ARROW_LIGHT);
@@ -558,7 +558,7 @@ void Play_Init(GameState* thisx) {
}
tempSetupIndex = gSaveContext.sceneSetupIndex;
if ((gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_SPOT00) && !LINK_IS_ADULT &&
if ((gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_HYRULE_FIELD) && !LINK_IS_ADULT &&
gSaveContext.sceneSetupIndex < 4) {
if (CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD) && CHECK_QUEST_ITEM(QUEST_GORON_RUBY) &&
CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE)) {
@@ -566,7 +566,7 @@ void Play_Init(GameState* thisx) {
} else {
gSaveContext.sceneSetupIndex = 0;
}
} else if ((gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_SPOT04) && LINK_IS_ADULT &&
} else if ((gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_KOKIRI_FOREST) && LINK_IS_ADULT &&
gSaveContext.sceneSetupIndex < 4) {
gSaveContext.sceneSetupIndex = (Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP)) ? 3 : 2;
}
@@ -2212,7 +2212,7 @@ void Play_SetupRespawnPoint(PlayState* play, s32 respawnMode, s32 playerParams)
s32 entranceIndex;
s8 roomIndex;
if ((play->sceneNum != SCENE_YOUSEI_IZUMI_TATE) && (play->sceneNum != SCENE_KAKUSIANA)) {
if ((play->sceneNum != SCENE_FAIRYS_FOUNTAIN) && (play->sceneNum != SCENE_GROTTOS)) {
roomIndex = play->roomCtx.curRoom.num;
entranceIndex = gSaveContext.entranceIndex;
Play_SetRespawnData(play, respawnMode, entranceIndex, roomIndex, playerParams,
@@ -2233,8 +2233,8 @@ void Play_LoadToLastEntrance(PlayState* play) {
gSaveContext.respawnFlag = -1;
play->sceneLoadFlag = 0x14;
if ((play->sceneNum == SCENE_GANON_SONOGO) || (play->sceneNum == SCENE_GANON_FINAL) ||
(play->sceneNum == SCENE_GANONTIKA_SONOGO) || (play->sceneNum == SCENE_GANON_DEMO)) {
if ((play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) || (play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) ||
(play->sceneNum == SCENE_INSIDE_GANONS_CASTLE_COLLAPSE) || (play->sceneNum == SCENE_GANON_BOSS)) {
play->nextEntranceIndex = 0x043F;
Item_Give(play, ITEM_SWORD_MASTER);
} else if ((gSaveContext.entranceIndex == 0x028A) || (gSaveContext.entranceIndex == 0x028E) ||
@@ -2254,7 +2254,7 @@ void Play_TriggerRespawn(PlayState* play) {
s32 func_800C0CB8(PlayState* play) {
return (play->roomCtx.curRoom.meshHeader->base.type != 1) && (YREG(15) != 0x20) && (YREG(15) != 0x30) &&
(YREG(15) != 0x40) && (play->sceneNum != SCENE_HAIRAL_NIWA);
(YREG(15) != 0x40) && (play->sceneNum != SCENE_CASTLE_COURTYARD_GUARDS_DAY);
}
s32 FrameAdvance_IsEnabled(PlayState* play) {

View File

@@ -645,7 +645,7 @@ void func_80097534(PlayState* play, RoomContext* roomCtx) {
func_80031B14(play, &play->actorCtx); //kills all actors without room num set to -1
Actor_SpawnTransitionActors(play, &play->actorCtx);
Map_InitRoomData(play, roomCtx->curRoom.num);
if (!((play->sceneNum >= SCENE_SPOT00) && (play->sceneNum <= SCENE_SPOT20))) {
if (!((play->sceneNum >= SCENE_HYRULE_FIELD) && (play->sceneNum <= SCENE_LON_LON_RANCH))) {
Map_SavePlayerInitialInfo(play);
}
Audio_SetEnvReverb(play->roomCtx.curRoom.echo);

View File

@@ -38,19 +38,19 @@ void Object_InitBank(PlayState* play, ObjectContext* objectCtx) {
size_t spaceSize;
s32 i;
if (play2->sceneNum == SCENE_SPOT00) {
if (play2->sceneNum == SCENE_HYRULE_FIELD) {
spaceSize = 1024000;
} else if (play2->sceneNum == SCENE_GANON_DEMO) {
} else if (play2->sceneNum == SCENE_GANON_BOSS) {
if (gSaveContext.sceneSetupIndex != 4) {
spaceSize = 1177600;
} else {
spaceSize = 1024000;
}
} else if (play2->sceneNum == SCENE_JYASINBOSS) {
} else if (play2->sceneNum == SCENE_SPIRIT_TEMPLE_BOSS) {
spaceSize = 1075200;
} else if (play2->sceneNum == SCENE_KENJYANOMA) {
} else if (play2->sceneNum == SCENE_CHAMBER_OF_THE_SAGES) {
spaceSize = 1075200;
} else if (play2->sceneNum == SCENE_GANON_BOSS) {
} else if (play2->sceneNum == SCENE_GANONDORF_BOSS) {
spaceSize = 1075200;
} else {
spaceSize = 1024000;
@@ -450,14 +450,14 @@ void Scene_CommandMiscSettings(PlayState* play, SceneCmd* cmd) {
YREG(15) = cmd->miscSettings.cameraMovement;
gSaveContext.worldMapArea = cmd->miscSettings.area;
if ((play->sceneNum == SCENE_SHOP1) || (play->sceneNum == SCENE_SYATEKIJYOU)) {
if ((play->sceneNum == SCENE_BAZAAR) || (play->sceneNum == SCENE_SHOOTING_GALLERY)) {
if (LINK_AGE_IN_YEARS == YEARS_ADULT) {
gSaveContext.worldMapArea = 1;
}
}
if (((play->sceneNum >= SCENE_SPOT00) && (play->sceneNum <= SCENE_GANON_TOU)) ||
((play->sceneNum >= SCENE_ENTRA) && (play->sceneNum <= SCENE_SHRINE_R))) {
if (((play->sceneNum >= SCENE_HYRULE_FIELD) && (play->sceneNum <= SCENE_OUTSIDE_GANONS_CASTLE)) ||
((play->sceneNum >= SCENE_MARKET_ENTRANCE_DAY) && (play->sceneNum <= SCENE_TEMPLE_OF_TIME_EXTERIOR_RUINS))) {
if (gSaveContext.cutsceneIndex < 0xFFF0) {
gSaveContext.worldMapAreaData |= gBitFlags[gSaveContext.worldMapArea];
osSyncPrintf(" _%x (%d)\n", gSaveContext.worldMapAreaData,

View File

@@ -819,130 +819,31 @@ EntranceInfo gEntranceTable[] = {
// (u32)_##title##SegmentRomEnd, unk_10, config, unk_12, 0 \
// }
#define TITLED_SCENE(name, title, unk_10, config, unk_12) \
{ \
{0, 0, #name}, {0, 0, #title}, unk_10, config, unk_12, 0 \
}
//#define TITLED_SCENE(name, title, unk_10, config, unk_12) \
// { \
// {0, 0, #name}, {0, 0, #title}, unk_10, config, unk_12, 0 \
// }
//#define UNTITLED_SCENE(name, unk_10, config, unk_12) \
//{ (u32) _##name##SegmentRomStart, (u32)_##name##SegmentRomEnd, 0, 0, unk_10, config, unk_12, 0 }
#define UNTITLED_SCENE(name, unk_10, config, unk_12) \
{ { 0, 0, #name }, (u32)0, 0, 0, unk_10, config, unk_12, 0 }
//#define UNTITLED_SCENE(name, unk_10, config, unk_12) \
// { { 0, 0, #name }, (u32)0, 0, 0, unk_10, config, unk_12, 0 }
#define DEFINE_SCENE(name, title, _2, config, unk_10, unk_12) \
{ { 0, 0, #name }, {0, 0, #title}, unk_10, config, unk_12, 0 },
// Handle `none` as a special case for scenes without a title card
#define none ""
SceneTableEntry gSceneTable[] = {
TITLED_SCENE(ydan_scene, g_pn_06, 1, 19, 2),
TITLED_SCENE(ddan_scene, g_pn_08, 1, 20, 3),
TITLED_SCENE(bdan_scene, g_pn_07, 1, 21, 4),
TITLED_SCENE(Bmori1_scene, g_pn_01, 2, 22, 5),
TITLED_SCENE(HIDAN_scene, g_pn_03, 2, 18, 6),
TITLED_SCENE(MIZUsin_scene, g_pn_04, 1, 23, 7),
TITLED_SCENE(jyasinzou_scene, g_pn_05, 1, 25, 8),
TITLED_SCENE(HAKAdan_scene, g_pn_02, 2, 24, 9),
TITLED_SCENE(HAKAdanCH_scene, g_pn_54, 2, 24, 10),
TITLED_SCENE(ice_doukutu_scene, g_pn_10, 0, 37, 0),
UNTITLED_SCENE(ganon_scene, 2, 0, 0),
TITLED_SCENE(men_scene, g_pn_11, 0, 27, 0),
TITLED_SCENE(gerudoway_scene, g_pn_49, 0, 40, 0),
TITLED_SCENE(ganontika_scene, g_pn_09, 0, 26, 0),
UNTITLED_SCENE(ganon_sonogo_scene, 0, 51, 0),
UNTITLED_SCENE(ganontikasonogo_scene, 0, 52, 0),
TITLED_SCENE(takaraya_scene, g_pn_51, 0, 0, 0),
UNTITLED_SCENE(ydan_boss_scene, 0, 28, 0),
UNTITLED_SCENE(ddan_boss_scene, 0, 0, 0),
UNTITLED_SCENE(bdan_boss_scene, 0, 21, 0),
UNTITLED_SCENE(moribossroom_scene, 1, 0, 0),
UNTITLED_SCENE(FIRE_bs_scene, 0, 18, 0),
UNTITLED_SCENE(MIZUsin_bs_scene, 0, 29, 0),
UNTITLED_SCENE(jyasinboss_scene, 0, 0, 0),
UNTITLED_SCENE(HAKAdan_bs_scene, 0, 24, 0),
UNTITLED_SCENE(ganon_boss_scene, 0, 0, 0),
UNTITLED_SCENE(ganon_final_scene, 0, 38, 0),
UNTITLED_SCENE(entra_scene, 0, 0, 0),
UNTITLED_SCENE(entra_n_scene, 0, 0, 0),
UNTITLED_SCENE(enrui_scene, 0, 0, 0),
TITLED_SCENE(market_alley_scene, g_pn_18, 0, 0, 0),
TITLED_SCENE(market_alley_n_scene, g_pn_18, 0, 0, 0),
TITLED_SCENE(market_day_scene, g_pn_17, 0, 0, 0),
TITLED_SCENE(market_night_scene, g_pn_17, 0, 0, 0),
TITLED_SCENE(market_ruins_scene, g_pn_17, 0, 0, 0),
UNTITLED_SCENE(shrine_scene, 0, 0, 0),
UNTITLED_SCENE(shrine_n_scene, 0, 0, 0),
UNTITLED_SCENE(shrine_r_scene, 0, 0, 0),
UNTITLED_SCENE(kokiri_home_scene, 0, 0, 0),
UNTITLED_SCENE(kokiri_home3_scene, 0, 0, 0),
UNTITLED_SCENE(kokiri_home4_scene, 0, 0, 0),
UNTITLED_SCENE(kokiri_home5_scene, 0, 0, 0),
UNTITLED_SCENE(kakariko_scene, 0, 0, 0),
UNTITLED_SCENE(kakariko3_scene, 0, 0, 0),
TITLED_SCENE(shop1_scene, g_pn_23, 0, 0, 0),
TITLED_SCENE(kokiri_shop_scene, g_pn_19, 0, 0, 0),
TITLED_SCENE(golon_scene, g_pn_20, 0, 0, 0),
TITLED_SCENE(zoora_scene, g_pn_21, 0, 0, 0),
TITLED_SCENE(drag_scene, g_pn_24, 0, 0, 0),
TITLED_SCENE(alley_shop_scene, g_pn_24, 0, 0, 0),
TITLED_SCENE(night_shop_scene, g_pn_56, 0, 0, 0),
TITLED_SCENE(face_shop_scene, g_pn_50, 0, 0, 0),
UNTITLED_SCENE(link_home_scene, 0, 0, 0),
UNTITLED_SCENE(impa_scene, 0, 0, 0),
TITLED_SCENE(malon_stable_scene, g_pn_48, 0, 0, 0),
UNTITLED_SCENE(labo_scene, 0, 0, 0),
TITLED_SCENE(hylia_labo_scene, g_pn_26, 0, 43, 0),
UNTITLED_SCENE(tent_scene, 0, 0, 0),
TITLED_SCENE(hut_scene, g_pn_25, 0, 0, 0),
TITLED_SCENE(daiyousei_izumi_scene, g_pn_13, 0, 33, 0),
TITLED_SCENE(yousei_izumi_tate_scene, g_pn_45, 0, 39, 0),
TITLED_SCENE(yousei_izumi_yoko_scene, g_pn_13, 0, 33, 0),
UNTITLED_SCENE(kakusiana_scene, 0, 31, 0),
UNTITLED_SCENE(hakaana_scene, 0, 48, 0),
UNTITLED_SCENE(hakaana2_scene, 0, 39, 0),
TITLED_SCENE(hakaana_ouke_scene, g_pn_44, 0, 42, 0),
TITLED_SCENE(syatekijyou_scene, g_pn_15, 0, 34, 0),
TITLED_SCENE(tokinoma_scene, g_pn_16, 0, 30, 0),
TITLED_SCENE(kenjyanoma_scene, g_pn_14, 0, 32, 0),
TITLED_SCENE(hairal_niwa_scene, g_pn_12, 0, 35, 0),
TITLED_SCENE(hairal_niwa_n_scene, g_pn_12, 0, 35, 0),
UNTITLED_SCENE(hiral_demo_scene, 0, 0, 0),
TITLED_SCENE(hakasitarelay_scene, g_pn_57, 0, 48, 0),
TITLED_SCENE(turibori_scene, g_pn_46, 0, 50, 0),
TITLED_SCENE(nakaniwa_scene, g_pn_12, 0, 47, 0),
TITLED_SCENE(bowling_scene, g_pn_47, 0, 41, 0),
UNTITLED_SCENE(souko_scene, 0, 44, 0),
UNTITLED_SCENE(miharigoya_scene, 0, 45, 0),
TITLED_SCENE(mahouya_scene, g_pn_24, 0, 46, 0),
UNTITLED_SCENE(ganon_demo_scene, 0, 36, 0),
TITLED_SCENE(kinsuta_scene, g_pn_22, 0, 0, 0),
TITLED_SCENE(spot00_scene, g_pn_27, 0, 1, 0),
TITLED_SCENE(spot01_scene, g_pn_28, 0, 2, 0),
TITLED_SCENE(spot02_scene, g_pn_29, 0, 0, 0),
TITLED_SCENE(spot03_scene, g_pn_30, 0, 3, 0),
TITLED_SCENE(spot04_scene, g_pn_31, 0, 4, 0),
TITLED_SCENE(spot05_scene, g_pn_52, 0, 47, 0),
TITLED_SCENE(spot06_scene, g_pn_32, 0, 5, 0),
TITLED_SCENE(spot07_scene, g_pn_33, 0, 6, 0),
TITLED_SCENE(spot08_scene, g_pn_34, 0, 7, 0),
TITLED_SCENE(spot09_scene, g_pn_35, 0, 8, 0),
TITLED_SCENE(spot10_scene, g_pn_36, 0, 9, 0),
TITLED_SCENE(spot11_scene, g_pn_55, 0, 10, 0),
TITLED_SCENE(spot12_scene, g_pn_53, 0, 11, 0),
TITLED_SCENE(spot13_scene, g_pn_37, 0, 12, 0),
TITLED_SCENE(spot15_scene, g_pn_38, 0, 13, 0),
TITLED_SCENE(spot16_scene, g_pn_39, 0, 14, 0),
TITLED_SCENE(spot17_scene, g_pn_40, 0, 15, 0),
TITLED_SCENE(spot18_scene, g_pn_41, 0, 16, 0),
TITLED_SCENE(spot20_scene, g_pn_42, 0, 17, 0),
TITLED_SCENE(ganon_tou_scene, g_pn_43, 0, 36, 0),
UNTITLED_SCENE(test01_scene, 0, 47, 0),
UNTITLED_SCENE(besitu_scene, 0, 49, 0),
UNTITLED_SCENE(depth_test_scene, 0, 0, 0),
UNTITLED_SCENE(syotes_scene, 0, 0, 0),
UNTITLED_SCENE(syotes2_scene, 0, 0, 0),
UNTITLED_SCENE(sutaru_scene, 0, 0, 0),
TITLED_SCENE(hairal_niwa2_scene, g_pn_12, 0, 35, 0),
UNTITLED_SCENE(sasatest_scene, 0, 0, 0),
UNTITLED_SCENE(testroom_scene, 0, 0, 0),
#include "tables/scene_table.h"
};
#undef none
#undef DEFINE_SCENE
Gfx sDefaultDisplayList[] = {
gsSPSegment(0x08, gEmptyDL),
gsSPSegment(0x09, gEmptyDL),
@@ -1276,7 +1177,7 @@ void func_8009AE30(PlayState* play) {
gameplayFrames = play->gameplayFrames;
if (play->sceneNum == SCENE_HAKADAN_BS) {
if (play->sceneNum == SCENE_SHADOW_TEMPLE_BOSS) {
gSPSegment(POLY_OPA_DISP++, 0x08,
Gfx_TwoTexScroll(play->state.gfxCtx, 0, (gameplayFrames * 2) % 128, 0, 32, 32, 1,
(gameplayFrames * 2) % 128, 0, 32, 32));
@@ -1444,7 +1345,7 @@ void func_8009BAA4(PlayState* play) {
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 127 - gameplayFrames % 128, (gameplayFrames * 3) % 128, 32,
32, 1, gameplayFrames % 128, (gameplayFrames * 3) % 128, 32, 32));
if (play->sceneNum == SCENE_HAIRAL_NIWA) {
if (play->sceneNum == SCENE_CASTLE_COURTYARD_GUARDS_DAY) {
gSPSegment(POLY_XLU_DISP++, 0x09,
Gfx_TexScroll(play->state.gfxCtx, 0, (gameplayFrames * 10) % 256, 32, 64));
}
@@ -1469,7 +1370,7 @@ void func_8009BC44(PlayState* play) {
gameplayFrames = play->gameplayFrames;
if (play->sceneNum == SCENE_GANON_TOU) {
if (play->sceneNum == SCENE_OUTSIDE_GANONS_CASTLE) {
gSPSegment(POLY_XLU_DISP++, 0x09,
Gfx_TexScroll(play->state.gfxCtx, 0, (gameplayFrames * 1) % 256, 64, 64));
gSPSegment(POLY_XLU_DISP++, 0x08,
@@ -1547,8 +1448,8 @@ void func_8009C0AC(PlayState* play) {
CLOSE_DISPS(play->state.gfxCtx);
if (Flags_GetSwitch(play, 0x37)) {
if ((play->sceneNum == SCENE_GANON_DEMO) || (play->sceneNum == SCENE_GANON_FINAL) ||
(play->sceneNum == SCENE_GANON_SONOGO) || (play->sceneNum == SCENE_GANONTIKA_SONOGO)) {
if ((play->sceneNum == SCENE_GANON_BOSS) || (play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) ||
(play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) || (play->sceneNum == SCENE_INSIDE_GANONS_CASTLE_COLLAPSE)) {
func_8009BEEC(play);
}
}
@@ -2444,7 +2345,7 @@ void func_8009FE58(PlayState* play) {
OPEN_DISPS(play->state.gfxCtx);
gameplayFrames = play->gameplayFrames;
if (play->sceneNum == SCENE_BDAN) {
if (play->sceneNum == SCENE_JABU_JABU) {
gSPSegment(POLY_OPA_DISP++, 0x08,
Gfx_TwoTexScroll(play->state.gfxCtx, 0, gameplayFrames % 128, (gameplayFrames * 2) % 128, 32,
32, 1, 127 - gameplayFrames % 128, (gameplayFrames * 2) % 128, 32, 32));

View File

@@ -56,59 +56,59 @@ void Sram_OpenSave() {
Save_LoadFile();
if (!CVarGetInteger("gRememberSaveLocation", 0) || gSaveContext.savedSceneNum == SCENE_YOUSEI_IZUMI_TATE ||
gSaveContext.savedSceneNum == SCENE_KAKUSIANA) {
if (!CVarGetInteger("gRememberSaveLocation", 0) || gSaveContext.savedSceneNum == SCENE_FAIRYS_FOUNTAIN ||
gSaveContext.savedSceneNum == SCENE_GROTTOS) {
switch (gSaveContext.savedSceneNum) {
case SCENE_YDAN:
case SCENE_DDAN:
case SCENE_BDAN:
case SCENE_BMORI1:
case SCENE_HIDAN:
case SCENE_MIZUSIN:
case SCENE_JYASINZOU:
case SCENE_HAKADAN:
case SCENE_HAKADANCH:
case SCENE_ICE_DOUKUTO:
case SCENE_GANON:
case SCENE_MEN:
case SCENE_GERUDOWAY:
case SCENE_GANONTIKA:
case SCENE_DEKU_TREE:
case SCENE_DODONGOS_CAVERN:
case SCENE_JABU_JABU:
case SCENE_FOREST_TEMPLE:
case SCENE_FIRE_TEMPLE:
case SCENE_WATER_TEMPLE:
case SCENE_SPIRIT_TEMPLE:
case SCENE_SHADOW_TEMPLE:
case SCENE_BOTTOM_OF_THE_WELL:
case SCENE_ICE_CAVERN:
case SCENE_GANONS_TOWER:
case SCENE_GERUDO_TRAINING_GROUND:
case SCENE_THIEVES_HIDEOUT:
case SCENE_INSIDE_GANONS_CASTLE:
gSaveContext.entranceIndex = dungeonEntrances[gSaveContext.savedSceneNum];
break;
case SCENE_YDAN_BOSS:
case SCENE_DEKU_TREE_BOSS:
gSaveContext.entranceIndex = 0;
break;
case SCENE_DDAN_BOSS:
case SCENE_DODONGOS_CAVERN_BOSS:
gSaveContext.entranceIndex = 4;
break;
case SCENE_BDAN_BOSS:
case SCENE_JABU_JABU_BOSS:
gSaveContext.entranceIndex = 0x28;
break;
case SCENE_MORIBOSSROOM:
case SCENE_FOREST_TEMPLE_BOSS:
gSaveContext.entranceIndex = 0x169;
break;
case SCENE_FIRE_BS:
case SCENE_FIRE_TEMPLE_BOSS:
gSaveContext.entranceIndex = 0x165;
break;
case SCENE_MIZUSIN_BS:
case SCENE_WATER_TEMPLE_BOSS:
gSaveContext.entranceIndex = 0x10;
break;
case SCENE_JYASINBOSS:
case SCENE_SPIRIT_TEMPLE_BOSS:
gSaveContext.entranceIndex = 0x82;
break;
case SCENE_HAKADAN_BS:
case SCENE_SHADOW_TEMPLE_BOSS:
gSaveContext.entranceIndex = 0x37;
break;
case SCENE_GANON_SONOGO:
case SCENE_GANONTIKA_SONOGO:
case SCENE_GANONS_TOWER_COLLAPSE_INTERIOR:
case SCENE_INSIDE_GANONS_CASTLE_COLLAPSE:
case SCENE_GANONDORF_BOSS:
case SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR:
case SCENE_GANON_BOSS:
case SCENE_GANON_FINAL:
case SCENE_GANON_DEMO:
gSaveContext.entranceIndex = 0x41B;
break;
default:
if (gSaveContext.savedSceneNum != SCENE_LINK_HOME) {
if (gSaveContext.savedSceneNum != SCENE_LINKS_HOUSE) {
gSaveContext.entranceIndex = (LINK_AGE_IN_YEARS == YEARS_CHILD) ? 0xBB : 0x5F4;
} else {
gSaveContext.entranceIndex = 0xBB;