diff options
| author | Christopher Leggett <chris@leggett.dev> | 2023-12-10 12:49:15 -0500 |
|---|---|---|
| committer | Christopher Leggett <chris@leggett.dev> | 2023-12-10 12:49:15 -0500 |
| commit | d58968d196d3a375be79c5f47852647daf9ebf67 (patch) | |
| tree | 6e82a068195d4fbacbcbef8aa1b4c675b4fa5a64 /soh/src/code | |
| parent | dad4ae00957e4960556f7f0cce94a3354105708b (diff) | |
| parent | 2d22a3ebcc9d735eeccc4df6eb6e78a4a31cfb91 (diff) | |
Merge branch 'develop' into merge-develop
# Conflicts:
# soh/soh/Enhancements/custom-message/CustomMessageTypes.h
# soh/soh/Enhancements/debugger/debugSaveEditor.h
# soh/soh/Enhancements/item-tables/ItemTableTypes.h
# soh/soh/Enhancements/mods.cpp
# soh/soh/Enhancements/randomizer/3drando/entrance.cpp
# soh/soh/Enhancements/randomizer/3drando/item_location.cpp
# soh/soh/Enhancements/randomizer/3drando/keys.hpp
# soh/soh/Enhancements/randomizer/3drando/location_access/locacc_castle_town.cpp
# soh/soh/Enhancements/randomizer/3drando/location_access/locacc_ganons_castle.cpp
# soh/soh/Enhancements/randomizer/3drando/location_access/locacc_gerudo_training_grounds.cpp
# soh/soh/Enhancements/randomizer/3drando/location_access/locacc_ice_cavern.cpp
# soh/soh/Enhancements/randomizer/3drando/menu.cpp
# soh/soh/Enhancements/randomizer/3drando/playthrough.cpp
# soh/soh/Enhancements/randomizer/3drando/settings.cpp
# soh/soh/Enhancements/randomizer/3drando/settings.hpp
# soh/soh/Enhancements/randomizer/randomizer.cpp
# soh/soh/Enhancements/randomizer/randomizerTypes.h
# soh/soh/Enhancements/randomizer/randomizer_check_objects.cpp
# soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp
# soh/soh/Enhancements/randomizer/randomizer_entrance.c
# soh/soh/OTRGlobals.cpp
# soh/src/code/z_sram.c
# soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c
Diffstat (limited to 'soh/src/code')
| -rw-r--r-- | soh/src/code/code_80097A00.c | 11 | ||||
| -rw-r--r-- | soh/src/code/graph.c | 23 | ||||
| -rw-r--r-- | soh/src/code/z_actor.c | 24 | ||||
| -rw-r--r-- | soh/src/code/z_camera.c | 6 | ||||
| -rw-r--r-- | soh/src/code/z_common_data.c | 2 | ||||
| -rw-r--r-- | soh/src/code/z_demo.c | 794 | ||||
| -rw-r--r-- | soh/src/code/z_draw.c | 2 | ||||
| -rw-r--r-- | soh/src/code/z_fbdemo_circle.c | 64 | ||||
| -rw-r--r-- | soh/src/code/z_fbdemo_wipe1.c | 10 | ||||
| -rw-r--r-- | soh/src/code/z_horse.c | 18 | ||||
| -rw-r--r-- | soh/src/code/z_kaleido_setup.c | 2 | ||||
| -rw-r--r-- | soh/src/code/z_kankyo.c | 38 | ||||
| -rw-r--r-- | soh/src/code/z_lifemeter.c | 25 | ||||
| -rw-r--r-- | soh/src/code/z_message_PAL.c | 2 | ||||
| -rw-r--r-- | soh/src/code/z_parameter.c | 84 | ||||
| -rw-r--r-- | soh/src/code/z_play.c | 327 | ||||
| -rw-r--r-- | soh/src/code/z_player_lib.c | 12 | ||||
| -rw-r--r-- | soh/src/code/z_room.c | 5 | ||||
| -rw-r--r-- | soh/src/code/z_scene.c | 2 | ||||
| -rw-r--r-- | soh/src/code/z_scene_table.c | 860 | ||||
| -rw-r--r-- | soh/src/code/z_sram.c | 54 | ||||
| -rw-r--r-- | soh/src/code/z_vr_box.c | 7 | ||||
| -rw-r--r-- | soh/src/code/z_vr_box_draw.c | 10 |
23 files changed, 854 insertions, 1528 deletions
diff --git a/soh/src/code/code_80097A00.c b/soh/src/code/code_80097A00.c index 9e20d66aa..eb83738e3 100644 --- a/soh/src/code/code_80097A00.c +++ b/soh/src/code/code_80097A00.c @@ -204,6 +204,17 @@ u8 Inventory_DeleteEquipment(PlayState* play, s16 equipment) { if (equipment == EQUIP_TYPE_TUNIC) { gSaveContext.equips.equipment |= EQUIP_VALUE_TUNIC_KOKIRI << (EQUIP_TYPE_TUNIC * 4); + // non-vanilla: remove goron and zora tunics from item buttons if assignable tunics is on + if (CVarGetInteger("gAssignableTunicsAndBoots", 0) && equipValue != EQUIP_VALUE_TUNIC_KOKIRI) { + ItemID item = (equipValue == EQUIP_VALUE_TUNIC_GORON ? ITEM_TUNIC_GORON : ITEM_TUNIC_ZORA); + for (int i = 1; i < ARRAY_COUNT(gSaveContext.equips.buttonItems); i++) { + if (gSaveContext.equips.buttonItems[i] == item) { + gSaveContext.equips.buttonItems[i] = ITEM_NONE; + gSaveContext.equips.cButtonSlots[i - 1] = SLOT_NONE; + } + } + } + // end non-vanilla } if (equipment == EQUIP_TYPE_SWORD) { diff --git a/soh/src/code/graph.c b/soh/src/code/graph.c index 85169db77..d273e7643 100644 --- a/soh/src/code/graph.c +++ b/soh/src/code/graph.c @@ -7,6 +7,7 @@ #include <stdlib.h> #include "soh/Enhancements/debugger/colViewer.h" +#include "soh/Enhancements/debugger/valueViewer.h" #include "soh/Enhancements/gameconsole.h" #include "soh/OTRGlobals.h" @@ -289,6 +290,28 @@ void Graph_Update(GraphicsContext* gfxCtx, GameState* gameState) { OPEN_DISPS(gfxCtx); + if (CVarGetInteger("gValueViewer.EnablePrinting", 0)) { + Gfx* gfx; + Gfx* polyOpa; + GfxPrint printer; + + polyOpa = POLY_OPA_DISP; + gfx = Graph_GfxPlusOne(polyOpa); + gSPDisplayList(OVERLAY_DISP++, gfx); + + GfxPrint_Init(&printer); + GfxPrint_Open(&printer, gfx); + + ValueViewer_Draw(&printer); + + gfx = GfxPrint_Close(&printer); + GfxPrint_Destroy(&printer); + + gSPEndDisplayList(gfx++); + Graph_BranchDlist(polyOpa, gfx); + POLY_OPA_DISP = gfx; + } + gDPNoOpString(WORK_DISP++, "WORK_DISP 終了", 0); gDPNoOpString(POLY_OPA_DISP++, "POLY_OPA_DISP 終了", 0); gDPNoOpString(POLY_XLU_DISP++, "POLY_XLU_DISP 終了", 0); diff --git a/soh/src/code/z_actor.c b/soh/src/code/z_actor.c index 79a3c8ace..3b68f1211 100644 --- a/soh/src/code/z_actor.c +++ b/soh/src/code/z_actor.c @@ -1426,27 +1426,27 @@ void Actor_MountHorse(PlayState* play, Player* player, Actor* horse) { } s32 func_8002DEEC(Player* player) { - return (player->stateFlags1 & 0x20000080) || (player->csMode != 0); + return (player->stateFlags1 & 0x20000080) || (player->csAction != 0); } void func_8002DF18(PlayState* play, Player* player) { func_8006DC68(play, player); } -s32 func_8002DF38(PlayState* play, Actor* actor, u8 csMode) { +s32 func_8002DF38(PlayState* play, Actor* actor, u8 csAction) { Player* player = GET_PLAYER(play); - player->csMode = csMode; - player->unk_448 = actor; + player->csAction = csAction; + player->csActor = actor; player->doorBgCamIndex = 0; return true; } -s32 func_8002DF54(PlayState* play, Actor* actor, u8 csMode) { +s32 func_8002DF54(PlayState* play, Actor* actor, u8 csAction) { Player* player = GET_PLAYER(play); - func_8002DF38(play, actor, csMode); + func_8002DF38(play, actor, csAction); player->doorBgCamIndex = 1; return true; @@ -2121,8 +2121,8 @@ void func_8002F5C4(Actor* actorA, Actor* actorB, PlayState* play) { void func_8002F5F0(Actor* actor, PlayState* play) { Player* player = GET_PLAYER(play); - if (actor->xyzDistToPlayerSq < player->unk_6A4) { - player->unk_6A4 = actor->xyzDistToPlayerSq; + if (actor->xyzDistToPlayerSq < player->closestSecretDistSq) { + player->closestSecretDistSq = actor->xyzDistToPlayerSq; } } @@ -6137,7 +6137,7 @@ s32 func_80038154(PlayState* play, Actor* actor, Vec3s* arg2, Vec3s* arg3, f32 a actor->focus.pos = actor->world.pos; actor->focus.pos.y += arg4; - if (!(((play->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) && (gSaveContext.entranceIndex == 0x00EE))) { + if (!(((play->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) && (gSaveContext.entranceIndex == ENTR_KOKIRI_FOREST_0))) { var = actor->yawTowardsPlayer - actor->shape.rot.y; abs_var = ABS(var); if (abs_var >= 0x4300) { @@ -6146,7 +6146,7 @@ s32 func_80038154(PlayState* play, Actor* actor, Vec3s* arg2, Vec3s* arg3, f32 a } } - if (((play->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) && (gSaveContext.entranceIndex == 0x00EE)) { + if (((play->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) && (gSaveContext.entranceIndex == ENTR_KOKIRI_FOREST_0)) { sp2C = play->view.eye; } else { sp2C = player->actor.focus.pos; @@ -6166,7 +6166,7 @@ s32 func_80038290(PlayState* play, Actor* actor, Vec3s* arg2, Vec3s* arg3, Vec3f actor->focus.pos = arg4; - if (!(((play->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) && (gSaveContext.entranceIndex == 0x00EE))) { + if (!(((play->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) && (gSaveContext.entranceIndex == ENTR_KOKIRI_FOREST_0))) { var = actor->yawTowardsPlayer - actor->shape.rot.y; abs_var = ABS(var); if (abs_var >= 0x4300) { @@ -6175,7 +6175,7 @@ s32 func_80038290(PlayState* play, Actor* actor, Vec3s* arg2, Vec3s* arg3, Vec3f } } - if (((play->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) && (gSaveContext.entranceIndex == 0x00EE)) { + if (((play->csCtx.state != CS_STATE_IDLE) || (gDbgCamEnabled)) && (gSaveContext.entranceIndex == ENTR_KOKIRI_FOREST_0)) { sp24 = play->view.eye; } else { sp24 = player->actor.focus.pos; diff --git a/soh/src/code/z_camera.c b/soh/src/code/z_camera.c index a177e29e7..ed8b9c8f4 100644 --- a/soh/src/code/z_camera.c +++ b/soh/src/code/z_camera.c @@ -4521,7 +4521,7 @@ s32 Camera_Subj4(Camera* camera) { if ((anim->unk_28 < temp_f16) && !anim->unk_2E) { player = camera->player; anim->unk_2E = true; - func_800F4010(&player->actor.projectedPos, player->unk_89E + 0x8B0, 4.0f); + func_800F4010(&player->actor.projectedPos, player->floorSfxOffset + 0x8B0, 4.0f); } else if (anim->unk_28 > temp_f16) { anim->unk_2E = false; } @@ -7594,7 +7594,7 @@ Vec3s Camera_Update(Camera* camera) { D_8011D3F0--; sCameraInterfaceFlags = 0x3200; Camera_UpdateInterface(sCameraInterfaceFlags); - } else if (camera->play->transitionMode != 0) { + } else if (camera->play->transitionMode != TRANS_MODE_OFF) { sCameraInterfaceFlags = 0xF200; Camera_UpdateInterface(sCameraInterfaceFlags); } else if (camera->play->csCtx.state != CS_STATE_IDLE) { @@ -7732,7 +7732,7 @@ void Camera_Finish(Camera* camera) { player->actor.freezeTimer = 0; player->stateFlags1 &= ~0x20000000; - if (player->csMode != 0) { + if (player->csAction != 0) { func_8002DF54(camera->play, &player->actor, 7); osSyncPrintf("camera: player demo end!!\n"); } diff --git a/soh/src/code/z_common_data.c b/soh/src/code/z_common_data.c index 83486b2d7..2a903b26e 100644 --- a/soh/src/code/z_common_data.c +++ b/soh/src/code/z_common_data.c @@ -14,6 +14,6 @@ void SaveContext_Init(void) { gSaveContext.nextDayTime = 0xFFFF; gSaveContext.skyboxTime = 0; gSaveContext.dogIsLost = true; - gSaveContext.nextTransitionType = 0xFF; + gSaveContext.nextTransitionType = TRANS_NEXT_TYPE_DEFAULT; gSaveContext.unk_13EE = 50; } diff --git a/soh/src/code/z_demo.c b/soh/src/code/z_demo.c index 1955a9235..9c0dd9b05 100644 --- a/soh/src/code/z_demo.c +++ b/soh/src/code/z_demo.c @@ -56,40 +56,40 @@ CutsceneStateHandler sCsStateHandlers2[] = { u8 sTitleCsState = 0; EntranceCutscene sEntranceCutsceneTable[] = { - { 0x0185, 2, 0xA0, gHyruleFieldIntroCs }, - { 0x013D, 2, 0xA1, gDMTIntroCs }, - { 0x00DB, 2, 0xA3, gKakarikoVillageIntroCs }, - { 0x0108, 2, 0xA4, gZorasDomainIntroCs }, - { 0x0138, 1, 0xA5, gHyruleCastleIntroCs }, - { 0x014D, 2, 0xA6, gGoronCityIntroCs }, - { 0x0053, 2, 0xA7, gTempleOfTimeIntroCs }, - { 0x0000, 2, 0xA8, gDekuTreeIntroCs }, - { 0x028A, 0, 0x18, gHyruleFieldSouthEponaJumpCs }, - { 0x0292, 0, 0x18, gHyruleFieldEastEponaJumpCs }, - { 0x028E, 0, 0x18, gHyruleFieldWestEponaJumpCs }, - { 0x0476, 0, 0x18, gHyruleFieldGateEponaJumpCs }, - { 0x050F, 1, 0xA9, gHyruleFieldGetOoTCs }, - { 0x0102, 2, 0xB1, gLakeHyliaIntroCs }, - { 0x0117, 2, 0xB2, gGerudoValleyIntroCs }, - { 0x0129, 2, 0xB3, gGerudoFortressIntroCs }, - { 0x0157, 2, 0xB4, gLonLonRanchIntroCs }, - { 0x0028, 2, 0xB5, gJabuJabuIntroCs }, - { 0x00E4, 2, 0xB6, gGraveyardIntroCs }, - { 0x0225, 2, 0xB7, gZorasFountainIntroCs }, - { 0x0123, 2, 0xB8, gDesertColossusIntroCs }, - { 0x0147, 2, 0xB9, gDeathMountainCraterIntroCs }, - { 0x0138, 0, 0xBA, gGanonsCastleIntroCs }, - { 0x0574, 2, 0x5A, gSunSongGraveSunSongTeachPart2Cs }, - { 0x0538, 2, 0xBB, gForestBarrierCs }, - { 0x053C, 2, 0xBC, gWaterBarrierCs }, - { 0x0540, 2, 0xBD, gShadowBarrierCs }, - { 0x0544, 2, 0xBE, gFireBarrierCs }, - { 0x0548, 2, 0xBF, gLightBarrierCs }, - { 0x054C, 2, 0xAD, gSpiritBarrierCs }, - { 0x008D, 0, 0xC0, gSpiritBossNabooruKnuckleIntroCs }, - { 0x03B4, 0, 0xC7, gGerudoFortressFirstCaptureCs }, - { 0x0246, 2, 0xB9, gDeathMountainCraterIntroCs }, - { 0x05E8, 2, 0xC6, gKokiriForestDekuSproutCs }, + { ENTR_HYRULE_FIELD_3, 2, 0xA0, gHyruleFieldIntroCs }, + { ENTR_DEATH_MOUNTAIN_TRAIL_0, 2, 0xA1, gDMTIntroCs }, + { ENTR_KAKARIKO_VILLAGE_0, 2, 0xA3, gKakarikoVillageIntroCs }, + { ENTR_ZORAS_DOMAIN_0, 2, 0xA4, gZorasDomainIntroCs }, + { ENTR_HYRULE_CASTLE_0, 1, 0xA5, gHyruleCastleIntroCs }, + { ENTR_GORON_CITY_0, 2, 0xA6, gGoronCityIntroCs }, + { ENTR_TEMPLE_OF_TIME_0, 2, 0xA7, gTempleOfTimeIntroCs }, + { ENTR_DEKU_TREE_0, 2, 0xA8, gDekuTreeIntroCs }, + { ENTR_HYRULE_FIELD_11, 0, 0x18, gHyruleFieldSouthEponaJumpCs }, + { ENTR_HYRULE_FIELD_13, 0, 0x18, gHyruleFieldEastEponaJumpCs }, + { ENTR_HYRULE_FIELD_12, 0, 0x18, gHyruleFieldWestEponaJumpCs }, + { ENTR_HYRULE_FIELD_15, 0, 0x18, gHyruleFieldGateEponaJumpCs }, + { ENTR_HYRULE_FIELD_16, 1, 0xA9, gHyruleFieldGetOoTCs }, + { ENTR_LAKE_HYLIA_0, 2, 0xB1, gLakeHyliaIntroCs }, + { ENTR_GERUDO_VALLEY_0, 2, 0xB2, gGerudoValleyIntroCs }, + { ENTR_GERUDOS_FORTRESS_0, 2, 0xB3, gGerudoFortressIntroCs }, + { ENTR_LON_LON_RANCH_0, 2, 0xB4, gLonLonRanchIntroCs }, + { ENTR_JABU_JABU_0, 2, 0xB5, gJabuJabuIntroCs }, + { ENTR_GRAVEYARD_0, 2, 0xB6, gGraveyardIntroCs }, + { ENTR_ZORAS_FOUNTAIN_2, 2, 0xB7, gZorasFountainIntroCs }, + { ENTR_DESERT_COLOSSUS_0, 2, 0xB8, gDesertColossusIntroCs }, + { ENTR_DEATH_MOUNTAIN_CRATER_0, 2, 0xB9, gDeathMountainCraterIntroCs }, + { ENTR_HYRULE_CASTLE_0, 0, 0xBA, gGanonsCastleIntroCs }, + { ENTR_ROYAL_FAMILYS_TOMB_1, 2, 0x5A, gSunSongGraveSunSongTeachPart2Cs }, + { ENTR_INSIDE_GANONS_CASTLE_2, 2, 0xBB, gForestBarrierCs }, + { ENTR_INSIDE_GANONS_CASTLE_3, 2, 0xBC, gWaterBarrierCs }, + { ENTR_INSIDE_GANONS_CASTLE_4, 2, 0xBD, gShadowBarrierCs }, + { ENTR_INSIDE_GANONS_CASTLE_5, 2, 0xBE, gFireBarrierCs }, + { ENTR_INSIDE_GANONS_CASTLE_6, 2, 0xBF, gLightBarrierCs }, + { ENTR_INSIDE_GANONS_CASTLE_7, 2, 0xAD, gSpiritBarrierCs }, + { ENTR_SPIRIT_TEMPLE_BOSS_0, 0, 0xC0, gSpiritBossNabooruKnuckleIntroCs }, + { ENTR_GERUDOS_FORTRESS_17, 0, 0xC7, gGerudoFortressFirstCaptureCs }, + { ENTR_DEATH_MOUNTAIN_CRATER_1, 2, 0xB9, gDeathMountainCraterIntroCs }, + { ENTR_KOKIRI_FOREST_12, 2, 0xC6, gKokiriForestDekuSproutCs }, }; // Unused, seems to be an early list of dungeon entrance cutscene locations @@ -168,7 +168,7 @@ void func_800645A0(PlayState* play, CutsceneContext* csCtx) { gSaveContext.cutsceneTrigger = 1; } - if ((gSaveContext.cutsceneTrigger != 0) && (play->sceneLoadFlag == 0x14)) { + if ((gSaveContext.cutsceneTrigger != 0) && (play->transitionTrigger == TRANS_TRIGGER_START)) { gSaveContext.cutsceneTrigger = 0; } @@ -246,7 +246,7 @@ void func_80064824(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) { case 3: if (sp3F != 0) { Flags_SetEnv(play, 0); - if (gSaveContext.entranceIndex == 0x0053 || (IS_RANDO && gSaveContext.entranceIndex == 0x05F4)) { + if (gSaveContext.entranceIndex == ENTR_TEMPLE_OF_TIME_0 || (IS_RANDO && gSaveContext.entranceIndex == ENTR_TEMPLE_OF_TIME_7)) { Flags_SetEnv(play, 2); } } @@ -409,7 +409,7 @@ void func_80064824(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) { break; case 32: if (sp3F != 0) { - play->envCtx.sandstormState = 1; + play->envCtx.sandstormState = SANDSTORM_FILL; } func_800788CC(NA_SE_EV_SAND_STORM - SFX_FLAG); break; @@ -506,7 +506,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB (CHECK_BTN_ALL(play->state.input[0].press.button, BTN_A) || CHECK_BTN_ALL(play->state.input[0].press.button, BTN_B) || CHECK_BTN_ALL(play->state.input[0].press.button, BTN_START)) && - (gSaveContext.fileNum != 0xFEDC) && (play->sceneLoadFlag == 0)) { + (gSaveContext.fileNum != 0xFEDC) && (play->transitionTrigger == TRANS_TRIGGER_OFF)) { Audio_PlaySoundGeneral(NA_SE_SY_PIECE_OF_HEART, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); temp = 1; } @@ -574,46 +574,46 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB switch (cmd->base) { case 1: - play->nextEntranceIndex = 0x00A0; + play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; gSaveContext.cutsceneIndex = 0xFFF1; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 2: - play->nextEntranceIndex = 0x00A0; + play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; gSaveContext.cutsceneIndex = 0xFFF0; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 10; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FILL_WHITE; break; case 3: - play->nextEntranceIndex = 0x0117; + play->nextEntranceIndex = ENTR_GERUDO_VALLEY_0; gSaveContext.cutsceneIndex = 0xFFF1; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 10; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FILL_WHITE; break; case 4: - play->nextEntranceIndex = 0x013D; + play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_0; gSaveContext.cutsceneIndex = 0xFFF0; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 10; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FILL_WHITE; break; case 5: - play->nextEntranceIndex = 0x00EE; + play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; gSaveContext.cutsceneIndex = 0xFFF0; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 10; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FILL_WHITE; break; case 6: - play->nextEntranceIndex = 0x00A0; + play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; gSaveContext.cutsceneIndex = 0xFFF2; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 10; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FILL_WHITE; break; case 7: - play->nextEntranceIndex = 0x00EE; + play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; gSaveContext.cutsceneIndex = 0xFFF2; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 11; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_INSTANT; break; case 8: if (CVarGetInteger("gBetterFW", 0)) { @@ -626,10 +626,10 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB } if (!Flags_GetEventChkInf(EVENTCHKINF_PULLED_MASTER_SWORD_FROM_PEDESTAL)) { Flags_SetEventChkInf(EVENTCHKINF_PULLED_MASTER_SWORD_FROM_PEDESTAL); - play->nextEntranceIndex = 0x00A0; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF3; - play->fadeTransition = 11; + play->transitionType = TRANS_TYPE_INSTANT; } else { if (gSaveContext.sceneSetupIndex < 4) { if (!LINK_IS_ADULT) { @@ -638,360 +638,360 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB play->linkAgeOnLoad = 1; } } - play->nextEntranceIndex = 0x02CA; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; - gSaveContext.nextTransitionType = 3; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } break; case 9: - play->nextEntranceIndex = 0x0117; + play->nextEntranceIndex = ENTR_GERUDO_VALLEY_0; gSaveContext.cutsceneIndex = 0xFFF0; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 12; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FILL_BROWN; break; case 10: - play->nextEntranceIndex = 0x00BB; + play->nextEntranceIndex = ENTR_LINKS_HOUSE_0; gSaveContext.cutsceneIndex = 0xFFF0; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 11: - play->nextEntranceIndex = 0x00EE; + play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; gSaveContext.cutsceneIndex = 0xFFF3; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 12: - play->nextEntranceIndex = 0x047A; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_5; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 13: - play->nextEntranceIndex = 0x010E; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; - gSaveContext.nextTransitionType = 2; + play->nextEntranceIndex = ENTR_ZORAS_FOUNTAIN_0; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; case 14: - play->nextEntranceIndex = 0x0457; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_KOKIRI_FOREST_11; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 15: - play->nextEntranceIndex = 0x0053; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF4; - play->fadeTransition = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 16: - play->nextEntranceIndex = 0x0053; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF5; - play->fadeTransition = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 17: - play->nextEntranceIndex = 0x0053; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF6; - play->fadeTransition = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 18: Flags_SetEventChkInf(EVENTCHKINF_ENTERED_MASTER_SWORD_CHAMBER); - play->nextEntranceIndex = 0x0324; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; - gSaveContext.nextTransitionType = 2; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_4; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; case 19: - play->nextEntranceIndex = 0x013D; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 4; + play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_0; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; gSaveContext.cutsceneIndex = 0x8000; break; case 21: - play->nextEntranceIndex = 0x0102; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_LAKE_HYLIA_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF0; - play->fadeTransition = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 22: Item_Give(play, ITEM_SONG_REQUIEM); - play->nextEntranceIndex = 0x0123; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_DESERT_COLOSSUS_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF0; - play->fadeTransition = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 23: - play->nextEntranceIndex = 0x00A0; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF8; - play->fadeTransition = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 24: - play->nextEntranceIndex = 0x0028; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_JABU_JABU_0; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 25: play->linkAgeOnLoad = 0; - play->nextEntranceIndex = 0x006B; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF0; - play->fadeTransition = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 26: - play->nextEntranceIndex = 0x0053; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF4; - play->fadeTransition = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 27: - play->nextEntranceIndex = 0x0053; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF5; - play->fadeTransition = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 28: - play->nextEntranceIndex = 0x0053; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF6; - play->fadeTransition = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 29: - play->nextEntranceIndex = 0x006B; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.chamberCutsceneNum = 0; - play->fadeTransition = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 30: - play->nextEntranceIndex = 0x006B; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; + play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; Item_Give(play, ITEM_MEDALLION_FIRE); gSaveContext.chamberCutsceneNum = 1; break; case 31: - play->nextEntranceIndex = 0x006B; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; + play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; gSaveContext.chamberCutsceneNum = 2; break; case 32: play->linkAgeOnLoad = 1; - play->nextEntranceIndex = 0x00CD; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF2; - play->fadeTransition = 11; + play->transitionType = TRANS_TYPE_INSTANT; break; case 33: - play->nextEntranceIndex = 0x00CD; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; + play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 34: - play->nextEntranceIndex = 0x00A0; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF3; - play->fadeTransition = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 35: - play->nextEntranceIndex = 0x00CD; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF0; - play->fadeTransition = 4; + play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; case 38: - play->nextEntranceIndex = 0x00A0; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF4; - play->fadeTransition = 4; + play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; case 39: - play->nextEntranceIndex = 0x0053; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF9; - play->fadeTransition = 4; + play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; case 40: play->linkAgeOnLoad = 0; - play->nextEntranceIndex = 0x0053; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFFA; - play->fadeTransition = 4; + play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; case 41: - play->nextEntranceIndex = 0x04E6; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_LAKE_HYLIA_5; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 42: - play->nextEntranceIndex = 0x00DB; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_KAKARIKO_VILLAGE_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF2; - play->fadeTransition = 4; + play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; case 43: - play->nextEntranceIndex = 0x0503; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 4; + play->nextEntranceIndex = ENTR_WINDMILL_AND_DAMPES_GRAVE_2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; case 44: - play->nextEntranceIndex = 0x0320; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 17; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_3; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE_INSTANT; break; case 46: Flags_SetEventChkInf(EVENTCHKINF_ENTERED_MASTER_SWORD_CHAMBER); - play->nextEntranceIndex = 0x0324; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 4; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_4; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; case 47: Item_Give(play, ITEM_SONG_NOCTURNE); Flags_SetEventChkInf(EVENTCHKINF_LEARNED_NOCTURNE_OF_SHADOW); - play->nextEntranceIndex = 0x00DB; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_KAKARIKO_VILLAGE_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF1; - play->fadeTransition = 4; + play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; case 48: - play->nextEntranceIndex = 0x01ED; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 15; - gSaveContext.nextTransitionType = 15; + play->nextEntranceIndex = ENTR_DESERT_COLOSSUS_4; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_SANDSTORM_END; + gSaveContext.nextTransitionType = TRANS_TYPE_SANDSTORM_END; break; case 49: - play->nextEntranceIndex = 0x058C; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 4; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_5; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; case 50: - play->nextEntranceIndex = 0x0513; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 17; + play->nextEntranceIndex = ENTR_KAKARIKO_VILLAGE_13; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE_INSTANT; break; case 51: - play->nextEntranceIndex = 0x00CD; + play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; gSaveContext.cutsceneIndex = 0xFFF8; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 41; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_CIRCLE(TCA_NORMAL, TCC_WHITE, TCS_SLOW); break; case 52: - play->nextEntranceIndex = 0x0053; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; gSaveContext.cutsceneIndex = 0xFFF7; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 11; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_INSTANT; break; case 53: - play->nextEntranceIndex = 0x050F; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; + play->nextEntranceIndex = ENTR_HYRULE_FIELD_16; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 54: gSaveContext.gameMode = 3; Audio_SetSoundBanksMute(0x6F); play->linkAgeOnLoad = 1; - play->nextEntranceIndex = 0x0117; + play->nextEntranceIndex = ENTR_GERUDO_VALLEY_0; gSaveContext.cutsceneIndex = 0xFFF2; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 55: - play->nextEntranceIndex = 0x0129; + play->nextEntranceIndex = ENTR_GERUDOS_FORTRESS_0; gSaveContext.cutsceneIndex = 0xFFF1; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 56: - play->nextEntranceIndex = 0x00DB; + play->nextEntranceIndex = ENTR_KAKARIKO_VILLAGE_0; gSaveContext.cutsceneIndex = 0xFFF4; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 57: - play->nextEntranceIndex = 0x013D; + play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_0; gSaveContext.cutsceneIndex = 0xFFF3; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 58: - play->nextEntranceIndex = 0x014D; + play->nextEntranceIndex = ENTR_GORON_CITY_0; gSaveContext.cutsceneIndex = 0xFFF1; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 59: - play->nextEntranceIndex = 0x0102; + play->nextEntranceIndex = ENTR_LAKE_HYLIA_0; gSaveContext.cutsceneIndex = 0xFFF1; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 60: - play->nextEntranceIndex = 0x010E; + play->nextEntranceIndex = ENTR_ZORAS_FOUNTAIN_0; gSaveContext.cutsceneIndex = 0xFFF2; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 61: - play->nextEntranceIndex = 0x0108; + play->nextEntranceIndex = ENTR_ZORAS_DOMAIN_0; gSaveContext.cutsceneIndex = 0xFFF0; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 62: play->linkAgeOnLoad = 0; - play->nextEntranceIndex = 0x00EE; + play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; gSaveContext.cutsceneIndex = 0xFFF6; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 63: - play->nextEntranceIndex = 0x00EE; + play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; gSaveContext.cutsceneIndex = 0xFFF7; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 64: - play->nextEntranceIndex = 0x00CD; + play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; gSaveContext.cutsceneIndex = 0xFFF5; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 65: play->linkAgeOnLoad = 1; - play->nextEntranceIndex = 0x0157; + play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; gSaveContext.cutsceneIndex = 0xFFF2; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 66: - play->nextEntranceIndex = 0x0554; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_KAKARIKO_VILLAGE_14; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 67: - play->nextEntranceIndex = 0x027E; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_HYRULE_FIELD_9; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 68: - play->nextEntranceIndex = 0x00A0; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF5; - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 69: - play->nextEntranceIndex = 0x05E8; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_KOKIRI_FOREST_12; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 70: - play->nextEntranceIndex = 0x013D; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF4; - play->fadeTransition = 2; - gSaveContext.nextTransitionType = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; case 71: gSaveContext.equips.equipment |= EQUIP_VALUE_TUNIC_KOKIRI << (EQUIP_TYPE_TUNIC * 4); @@ -999,58 +999,58 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB gSaveContext.equips.equipment |= EQUIP_VALUE_BOOTS_KOKIRI << (EQUIP_TYPE_BOOTS * 4); Player_SetEquipmentData(play, player); play->linkAgeOnLoad = 1; - play->nextEntranceIndex = 0x0053; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF1; - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 72: - play->nextEntranceIndex = 0x0400; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_CASTLE_COURTYARD_ZELDA_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF0; - play->fadeTransition = 2; - gSaveContext.nextTransitionType = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; case 73: play->linkAgeOnLoad = 1; - play->nextEntranceIndex = 0x0157; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF2; - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 74: - play->nextEntranceIndex = 0x0157; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF3; - play->fadeTransition = 3; - gSaveContext.nextTransitionType = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; break; case 75: play->linkAgeOnLoad = 1; - play->nextEntranceIndex = 0x0157; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF4; - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 76: play->linkAgeOnLoad = 0; - play->nextEntranceIndex = 0x0157; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF5; - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 77: play->linkAgeOnLoad = 1; - play->nextEntranceIndex = 0x0157; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF6; - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 78: - play->nextEntranceIndex = 0x0157; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF7; - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 79: case 80: @@ -1067,170 +1067,170 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB case 91: case 92: case 93: - play->nextEntranceIndex = 0x0157; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 94: - play->nextEntranceIndex = 0x02AE; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; + play->nextEntranceIndex = ENTR_LON_LON_RANCH_1; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 95: if ((Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP)) && (Flags_GetEventChkInf(EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP)) && (Flags_GetEventChkInf(EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP))) { - play->nextEntranceIndex = 0x0053; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF3; - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; } else { switch (gSaveContext.sceneSetupIndex) { case 8: - play->nextEntranceIndex = 0x00FC; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_SACRED_FOREST_MEADOW_0; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 9: - play->nextEntranceIndex = 0x0147; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_CRATER_0; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 10: - play->nextEntranceIndex = 0x0102; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_LAKE_HYLIA_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF0; - play->fadeTransition = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; } } break; case 96: if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW)) { - play->nextEntranceIndex = 0x006B; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF1; - play->fadeTransition = 5; + play->transitionType = TRANS_TYPE_FADE_WHITE_FAST; } else { Flags_SetEventChkInf(EVENTCHKINF_OBTAINED_SPIRIT_MEDALLION); - play->nextEntranceIndex = 0x0610; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; - gSaveContext.nextTransitionType = 3; + play->nextEntranceIndex = ENTR_DESERT_COLOSSUS_8; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } break; case 97: if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) { - play->nextEntranceIndex = 0x006B; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF1; - play->fadeTransition = 5; + play->transitionType = TRANS_TYPE_FADE_WHITE_FAST; } else { - play->nextEntranceIndex = 0x0580; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; - gSaveContext.nextTransitionType = 3; + play->nextEntranceIndex = ENTR_GRAVEYARD_8; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } break; case 98: - play->nextEntranceIndex = 0x0564; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; - gSaveContext.nextTransitionType = 3; + play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_CRATER_5; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; break; case 99: - play->nextEntranceIndex = 0x0608; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; - gSaveContext.nextTransitionType = 2; + play->nextEntranceIndex = ENTR_SACRED_FOREST_MEADOW_3; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; case 100: - play->nextEntranceIndex = 0x00EE; + play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; gSaveContext.cutsceneIndex = 0xFFF8; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; - gSaveContext.nextTransitionType = 3; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; break; case 101: - play->nextEntranceIndex = 0x01F5; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 15; + play->nextEntranceIndex = ENTR_DESERT_COLOSSUS_6; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_SANDSTORM_END; break; case 102: - play->nextEntranceIndex = 0x0590; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_6; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 103: - play->nextEntranceIndex = 0x00CD; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF3; - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 104: switch (sTitleCsState) { case 0: - play->nextEntranceIndex = 0x008D; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_SPIRIT_TEMPLE_BOSS_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF2; - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; sTitleCsState++; break; case 1: - play->nextEntranceIndex = 0x0147; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_CRATER_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF1; - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; sTitleCsState++; break; case 2: - play->nextEntranceIndex = 0x00A0; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF6; - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; sTitleCsState = 0; break; } break; case 105: - play->nextEntranceIndex = 0x00E4; - play->sceneLoadFlag = 0x14; + play->nextEntranceIndex = ENTR_GRAVEYARD_0; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.cutsceneIndex = 0xFFF1; - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 106: - play->nextEntranceIndex = 0x0574; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_ROYAL_FAMILYS_TOMB_1; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 107: - play->nextEntranceIndex = 0x0538; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_INSIDE_GANONS_CASTLE_2; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 108: - play->nextEntranceIndex = 0x053C; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_INSIDE_GANONS_CASTLE_3; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 109: - play->nextEntranceIndex = 0x0540; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_INSIDE_GANONS_CASTLE_4; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 110: - play->nextEntranceIndex = 0x0544; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_INSIDE_GANONS_CASTLE_5; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 111: - play->nextEntranceIndex = 0x0548; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_INSIDE_GANONS_CASTLE_6; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 112: - play->nextEntranceIndex = 0x054C; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_INSIDE_GANONS_CASTLE_7; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 113: if (Flags_GetEventChkInf(EVENTCHKINF_COMPLETED_FOREST_TRIAL) && Flags_GetEventChkInf(EVENTCHKINF_COMPLETED_WATER_TRIAL) && Flags_GetEventChkInf(EVENTCHKINF_COMPLETED_SHADOW_TRIAL) && @@ -1246,49 +1246,49 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB } break; case 114: - play->nextEntranceIndex = 0x0185; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; + play->nextEntranceIndex = ENTR_HYRULE_FIELD_3; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; break; case 115: - play->nextEntranceIndex = 0x0594; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 2; - gSaveContext.nextTransitionType = 2; + play->nextEntranceIndex = ENTR_HYRULE_FIELD_17; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_BLACK; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; case 116: if (Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_SPIRIT_MEDALLION)) { - play->nextEntranceIndex = 0x0580; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; + play->nextEntranceIndex = ENTR_GRAVEYARD_8; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; } else { - play->nextEntranceIndex = 0x0610; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; + play->nextEntranceIndex = ENTR_DESERT_COLOSSUS_8; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; } - gSaveContext.nextTransitionType = 3; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; break; case 117: gSaveContext.gameMode = 3; Audio_SetSoundBanksMute(0x6F); play->linkAgeOnLoad = 0; - play->nextEntranceIndex = 0x00CD; + play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; gSaveContext.cutsceneIndex = 0xFFF7; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 118: - gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex = 0x0517; + gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex = ENTR_GANON_BOSS_0; Play_TriggerVoidOut(play); gSaveContext.respawnFlag = -2; - gSaveContext.nextTransitionType = 2; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; case 119: gSaveContext.dayTime = 0x8000; gSaveContext.skyboxTime = 0x8000; - play->nextEntranceIndex = 0x05F0; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; + play->nextEntranceIndex = ENTR_CASTLE_COURTYARD_ZELDA_1; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; } @@ -1314,12 +1314,12 @@ void Cutscene_Command_TransitionFX(PlayState* play, CutsceneContext* csCtx, CsCm play->envCtx.screenFillColor[2] = 160; if (cmd->base == 1) { play->envCtx.screenFillColor[3] = 255.0f * temp; - if ((temp == 0.0f) && (gSaveContext.entranceIndex == 0x006B)) { + if ((temp == 0.0f) && (gSaveContext.entranceIndex == ENTR_CHAMBER_OF_THE_SAGES_0)) { Audio_PlaySoundGeneral(NA_SE_SY_WHITE_OUT_S, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); } else if ((temp == 0.0f) && - ((gSaveContext.entranceIndex == 0x0053) || (gSaveContext.entranceIndex == 0x0138) || - (gSaveContext.entranceIndex == 0x0371))) { + ((gSaveContext.entranceIndex == ENTR_TEMPLE_OF_TIME_0) || (gSaveContext.entranceIndex == ENTR_HYRULE_CASTLE_0) || + (gSaveContext.entranceIndex == ENTR_GREAT_FAIRYS_FOUNTAIN_SPELLS_0))) { Audio_PlaySoundGeneral(NA_SE_EV_WHITE_OUT, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); } else if ((temp == 0.0f) && (play->sceneNum == SCENE_INSIDE_GANONS_CASTLE)) { @@ -2024,10 +2024,10 @@ void func_80068DC0(PlayState* play, CutsceneContext* csCtx) { if (D_8015FCC8 != 0) { switch (gSaveContext.entranceIndex) { - case 0x028A: - case 0x028E: - case 0x0292: - case 0x0476: + case ENTR_HYRULE_FIELD_11: + case ENTR_HYRULE_FIELD_12: + case ENTR_HYRULE_FIELD_13: + case ENTR_HYRULE_FIELD_15: Play_CopyCamera(play, D_8015FCC6, csCtx->unk_14); } @@ -2115,12 +2115,12 @@ void Cutscene_HandleEntranceTriggers(PlayState* play) { if (IS_RANDO && // don't skip epona escape cutscenes - gSaveContext.entranceIndex != 650 && - gSaveContext.entranceIndex != 654 && - gSaveContext.entranceIndex != 658 && - gSaveContext.entranceIndex != 1142 && + gSaveContext.entranceIndex != ENTR_HYRULE_FIELD_11 && + gSaveContext.entranceIndex != ENTR_HYRULE_FIELD_12 && + gSaveContext.entranceIndex != ENTR_HYRULE_FIELD_13 && + gSaveContext.entranceIndex != ENTR_HYRULE_FIELD_15 && // don't skip nabooru iron knuckle cs - gSaveContext.entranceIndex != 141) { + gSaveContext.entranceIndex != ENTR_SPIRIT_TEMPLE_BOSS_0) { gSaveContext.showTitleCard = false; return; } @@ -2152,24 +2152,24 @@ void Cutscene_HandleConditionalTriggers(PlayState* play) { if ((gSaveContext.gameMode == 0) && (gSaveContext.respawnFlag <= 0) && (gSaveContext.cutsceneIndex < 0xFFF0)) { const bool bShouldTowerRandoSkip = (IS_RANDO && Randomizer_GetSettingValue(RSK_SKIP_TOWER_ESCAPE)); - if ((gSaveContext.entranceIndex == 0x01E1) && !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_REQUIEM_OF_SPIRIT)) { + if ((gSaveContext.entranceIndex == ENTR_DESERT_COLOSSUS_1) && !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_REQUIEM_OF_SPIRIT)) { if (!IS_RANDO) { Flags_SetEventChkInf(EVENTCHKINF_LEARNED_REQUIEM_OF_SPIRIT); - gSaveContext.entranceIndex = 0x0123; + gSaveContext.entranceIndex = ENTR_DESERT_COLOSSUS_0; gSaveContext.cutsceneIndex = 0xFFF0; } - } else if ((gSaveContext.entranceIndex == 0x00DB) && LINK_IS_ADULT && (Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP)) && + } else if ((gSaveContext.entranceIndex == ENTR_KAKARIKO_VILLAGE_0) && LINK_IS_ADULT && (Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP)) && (Flags_GetEventChkInf(EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP)) && (Flags_GetEventChkInf(EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP)) && !Flags_GetEventChkInf(EVENTCHKINF_BONGO_BONGO_ESCAPED_FROM_WELL)) { if (!IS_RANDO) { Flags_SetEventChkInf(EVENTCHKINF_BONGO_BONGO_ESCAPED_FROM_WELL); gSaveContext.cutsceneIndex = 0xFFF0; } - } else if ((gSaveContext.entranceIndex == 0x05E0) && !Flags_GetEventChkInf(EVENTCHKINF_SPOKE_TO_SARIA_ON_BRIDGE)) { + } else if ((gSaveContext.entranceIndex == ENTR_LOST_WOODS_9) && !Flags_GetEventChkInf(EVENTCHKINF_SPOKE_TO_SARIA_ON_BRIDGE)) { if (!IS_RANDO) { Flags_SetEventChkInf(EVENTCHKINF_SPOKE_TO_SARIA_ON_BRIDGE); Item_Give(play, ITEM_OCARINA_FAIRY); - gSaveContext.entranceIndex = 0x011E; + gSaveContext.entranceIndex = ENTR_LOST_WOODS_0; gSaveContext.cutsceneIndex = 0xFFF0; } } else if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) && CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) && @@ -2177,7 +2177,7 @@ void Cutscene_HandleConditionalTriggers(PlayState* play) { (gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TEMPLE_OF_TIME)) { if (!IS_RANDO) { Flags_SetEventChkInf(EVENTCHKINF_RETURNED_TO_TEMPLE_OF_TIME_WITH_ALL_MEDALLIONS); - gSaveContext.entranceIndex = 0x0053; + gSaveContext.entranceIndex = ENTR_TEMPLE_OF_TIME_0; gSaveContext.cutsceneIndex = 0xFFF8; } } else if ((!Flags_GetEventChkInf(EVENTCHKINF_WATCHED_GANONS_CASTLE_COLLAPSE_CAUGHT_BY_GERUDO) && @@ -2185,7 +2185,7 @@ void Cutscene_HandleConditionalTriggers(PlayState* play) { (bShouldTowerRandoSkip && gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR)) { Flags_SetEventChkInf(EVENTCHKINF_WATCHED_GANONS_CASTLE_COLLAPSE_CAUGHT_BY_GERUDO); - gSaveContext.entranceIndex = 0x0517; + gSaveContext.entranceIndex = ENTR_GANON_BOSS_0; // In rando, skip the cutscene for the tower falling down after the escape. if (IS_RANDO) { return; diff --git a/soh/src/code/z_draw.c b/soh/src/code/z_draw.c index cb28a498e..e9ab95398 100644 --- a/soh/src/code/z_draw.c +++ b/soh/src/code/z_draw.c @@ -1043,7 +1043,7 @@ void GetItem_DrawTriforcePiece(PlayState* play, s16 drawId) { Matrix_Scale(0.035f, 0.035f, 0.035f, MTXMODE_APPLY); - uint16_t index = gSaveContext.triforcePiecesCollected % 3; + uint8_t index = gSaveContext.triforcePiecesCollected % 3; Gfx* triforcePieceDL; switch (index) { diff --git a/soh/src/code/z_fbdemo_circle.c b/soh/src/code/z_fbdemo_circle.c index a3ebbabd4..98183023a 100644 --- a/soh/src/code/z_fbdemo_circle.c +++ b/soh/src/code/z_fbdemo_circle.c @@ -39,16 +39,16 @@ Gfx __sCircleDList[] = { void TransitionCircle_Start(void* thisx) { TransitionCircle* this = (TransitionCircle*)thisx; - this->isDone = 0; + this->isDone = false; - switch (this->effect) { - case 1: + switch (this->appearanceType) { + case TCA_WAVE: this->texture = sTransCircleWaveTex; break; - case 2: + case TCA_RIPPLE: this->texture = sTransCircleRippleTex; break; - case 3: + case TCA_STARBURST: this->texture = sTransCircleStarburstTex; break; default: @@ -56,34 +56,34 @@ void TransitionCircle_Start(void* thisx) { break; } - if (this->speed == 0) { - this->step = 0x14; + if (this->speedType == TCS_FAST) { + this->speed = 20; } else { - this->step = 0xA; + this->speed = 10; } - if (this->typeColor == 0) { + if (this->colorType == TCC_BLACK) { this->color.rgba = RGBA8(0, 0, 0, 255); - } else if (this->typeColor == 1) { + } else if (this->colorType == TCC_WHITE) { this->color.rgba = RGBA8(160, 160, 160, 255); - } else if (this->typeColor == 2) { + } else if (this->colorType == TCC_GRAY) { // yes, really. this->color.r = 100; this->color.g = 100; this->color.b = 100; this->color.a = 255; } else { - this->step = 0x28; - this->color.rgba = this->effect == 1 ? RGBA8(0, 0, 0, 255) : RGBA8(160, 160, 160, 255); + this->speed = 40; + this->color.rgba = this->appearanceType == TCA_WAVE ? RGBA8(0, 0, 0, 255) : RGBA8(160, 160, 160, 255); } - if (this->unk_14 != 0) { + if (this->direction != 0) { this->texY = 0; - if (this->typeColor == 3) { + if (this->colorType == TCC_SPECIAL) { this->texY = 0xFA; } } else { this->texY = 0x1F4; - if (this->effect == 2) { + if (this->appearanceType == TCA_RIPPLE) { Audio_PlaySoundGeneral(NA_SE_OC_SECRET_WARP_OUT, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); } } @@ -106,28 +106,28 @@ void TransitionCircle_Update(void* thisx, s32 updateRate) { s32 temp_t2; s32 temp_t3; - if (this->unk_14 != 0) { + if (this->direction != 0) { if (this->texY == 0) { - if (this->effect == 2) { + if (this->appearanceType == TCA_RIPPLE) { Audio_PlaySoundGeneral(NA_SE_OC_SECRET_WARP_IN, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); } } - this->texY += this->step * 3 / updateRate; + this->texY += this->speed * 3 / updateRate; if (this->texY >= 0x1F4) { this->texY = 0x1F4; - this->isDone = 1; + this->isDone = true; } } else { - this->texY -= this->step * 3 / updateRate; - if (this->typeColor != 3) { + this->texY -= this->speed * 3 / updateRate; + if (this->colorType != TCC_SPECIAL) { if (this->texY <= 0) { this->texY = 0; - this->isDone = 1; + this->isDone = true; } } else { if (this->texY < 0xFB) { this->texY = 0xFA; - this->isDone = 1; + this->isDone = true; } } } @@ -194,15 +194,17 @@ s32 TransitionCircle_IsDone(void* thisx) { void TransitionCircle_SetType(void* thisx, s32 type) { TransitionCircle* this = (TransitionCircle*)thisx; - if (type & 0x80) { - this->unk_14 = (type >> 5) & 0x1; - this->typeColor = (type >> 3) & 0x3; - this->speed = type & 0x1; - this->effect = (type >> 1) & 0x3; + if (type & TC_SET_PARAMS) { + // SetType is called twice for circles, the actual direction value will be set on the second call. + // The direction set here will be overwritten on that second call. + this->direction = (type >> 5) & 0x1; + this->colorType = (type >> 3) & 0x3; + this->speedType = type & 0x1; + this->appearanceType = (type >> 1) & 0x3; } else if (type == 1) { - this->unk_14 = 1; + this->direction = 1; } else { - this->unk_14 = 0; + this->direction = 0; } } diff --git a/soh/src/code/z_fbdemo_wipe1.c b/soh/src/code/z_fbdemo_wipe1.c index df5cbbc2d..6bc3fb039 100644 --- a/soh/src/code/z_fbdemo_wipe1.c +++ b/soh/src/code/z_fbdemo_wipe1.c @@ -64,18 +64,18 @@ void TransitionWipe_Destroy(void* thisx) { void TransitionWipe_Update(void* thisx, s32 updateRate) { TransitionWipe* this = (TransitionWipe*)thisx; - u8 unk1419; + u8 speed; if (this->direction != 0) { - unk1419 = gSaveContext.transWipeSpeed; - this->texY += (unk1419 * 3) / updateRate; + speed = gSaveContext.transWipeSpeed; + this->texY += (speed * 3) / updateRate; if (this->texY >= 0x264) { this->texY = 0x264; this->isDone = 1; } } else { - unk1419 = gSaveContext.transWipeSpeed; - this->texY -= (unk1419 * 3) / updateRate; + speed = gSaveContext.transWipeSpeed; + this->texY -= (speed * 3) / updateRate; if (this->texY < 0x14E) { this->texY = 0x14D; this->isDone = 1; diff --git a/soh/src/code/z_horse.c b/soh/src/code/z_horse.c index c36e6095e..6f7aa2d3a 100644 --- a/soh/src/code/z_horse.c +++ b/soh/src/code/z_horse.c @@ -68,7 +68,7 @@ void func_8006D0EC(PlayState* play, Player* player) { horseActor = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, 3586.0f, 1413.0f, -402.0f, 0, 0x4000, 0, 1, true); horseActor->room = -1; - } else if ((gSaveContext.entranceIndex == 1230) && (Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED))) { + } else if ((gSaveContext.entranceIndex == ENTR_LON_LON_RANCH_7) && (Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED))) { Actor* horseActor = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, -25.0f, 0.0f, -1600.0f, 0, -0x4000, 0, 1, true); assert(horseActor != NULL); @@ -134,8 +134,8 @@ void func_8006D684(PlayState* play, Player* player) { s32 i; Vec3s spawnPos; - if ((gSaveContext.entranceIndex == 0x028A || gSaveContext.entranceIndex == 0x028E || - gSaveContext.entranceIndex == 0x0292 || gSaveContext.entranceIndex == 0x0476) && + if ((gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_11 || gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_12 || + gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_13 || gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_15) && (gSaveContext.respawnFlag == 0)) { Vec3s spawnPositions[] = { { 0xF46F, 0x0139, 0x1E14 }, @@ -144,13 +144,13 @@ void func_8006D684(PlayState* play, Player* player) { { 0xF6F7, 0x0139, 0x1766 }, }; - if (gSaveContext.entranceIndex == 0x028A) { + if (gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_11) { spawnPos = spawnPositions[0]; - } else if (gSaveContext.entranceIndex == 0x028E) { + } else if (gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_12) { spawnPos = spawnPositions[1]; - } else if (gSaveContext.entranceIndex == 0x0292) { + } else if (gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_13) { spawnPos = spawnPositions[2]; - } else { + } else { // entranceIndex == ENTR_HYRULE_FIELD_15 spawnPos = spawnPositions[3]; } @@ -253,8 +253,8 @@ void func_8006DC68(PlayState* play, Player* player) { if (func_8006CFC0(play->sceneNum)) { if ((gSaveContext.sceneSetupIndex > 3) || - ((gSaveContext.entranceIndex == 0x028A || gSaveContext.entranceIndex == 0x028E || - gSaveContext.entranceIndex == 0x0292 || gSaveContext.entranceIndex == 0x0476) && + ((gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_11 || gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_12 || + gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_13 || gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_15) && (gSaveContext.respawnFlag == 0)) || ((play->sceneNum == SCENE_LON_LON_RANCH) && ((gSaveContext.eventInf[0] & 0xF) == 6) && !Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) && (DREG(1) == 0))) { diff --git a/soh/src/code/z_kaleido_setup.c b/soh/src/code/z_kaleido_setup.c index 77cc43e99..e4001e6ce 100644 --- a/soh/src/code/z_kaleido_setup.c +++ b/soh/src/code/z_kaleido_setup.c @@ -13,7 +13,7 @@ void KaleidoSetup_Update(PlayState* play) { Input* input = &play->state.input[0]; if (pauseCtx->state == 0 && pauseCtx->debugState == 0 && play->gameOverCtx.state == GAMEOVER_INACTIVE && - play->sceneLoadFlag == 0 && play->transitionMode == 0 && gSaveContext.cutsceneIndex < 0xFFF0 && + play->transitionTrigger == TRANS_TRIGGER_OFF && play->transitionMode == TRANS_MODE_OFF && gSaveContext.cutsceneIndex < 0xFFF0 && gSaveContext.nextCutsceneIndex < 0xFFF0 && !Play_InCsMode(play) && play->shootingGalleryStatus <= 1 && gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY && gSaveContext.magicState != MAGIC_STATE_FILL && (play->sceneNum != SCENE_BOMBCHU_BOWLING_ALLEY || !Flags_GetSwitch(play, 0x38))) { diff --git a/soh/src/code/z_kankyo.c b/soh/src/code/z_kankyo.c index 4474c2d8b..77c7546f8 100644 --- a/soh/src/code/z_kankyo.c +++ b/soh/src/code/z_kankyo.c @@ -289,7 +289,7 @@ void Environment_Init(PlayState* play2, EnvironmentContext* envCtx, s32 unused) envCtx->skyboxFilterColor[1] = 0; envCtx->skyboxFilterColor[2] = 0; envCtx->skyboxFilterColor[3] = 0; - envCtx->sandstormState = 0; + envCtx->sandstormState = SANDSTORM_OFF; envCtx->sandstormPrimA = 0; envCtx->sandstormEnvA = 0; @@ -925,7 +925,7 @@ void Environment_Update(PlayState* play, EnvironmentContext* envCtx, LightContex if ((pauseCtx->state == 0) && (gameOverCtx->state == GAMEOVER_INACTIVE)) { if (((msgCtx->msgLength == 0) && (msgCtx->msgMode == 0)) || (((void)0, gSaveContext.gameMode) == 3)) { if ((envCtx->unk_1A == 0) && !FrameAdvance_IsEnabled(play) && - (play->transitionMode == 0 || ((void)0, gSaveContext.gameMode) != 0)) { + (play->transitionMode == TRANS_MODE_OFF || ((void)0, gSaveContext.gameMode) != 0)) { if (IS_DAY || gTimeIncrement >= 0x190) { gSaveContext.dayTime += gTimeIncrement; @@ -1322,7 +1322,7 @@ void Environment_DrawSunAndMoon(PlayState* play) { play->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_HYRULE_FIELD_0 || ((void)0, gSaveContext.sceneSetupIndex) != 5) { Matrix_Translate(play->view.eye.x + play->envCtx.sunPos.x, play->view.eye.y + play->envCtx.sunPos.y, play->view.eye.z + play->envCtx.sunPos.z, MTXMODE_NEW); @@ -2004,7 +2004,7 @@ void Environment_PlaySceneSequence(PlayState* play) { play->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_LOST_WOODS_8 || ((void)0, gSaveContext.entranceIndex) == ENTR_LOST_WOODS_9) { Audio_PlayNatureAmbienceSequence(NATURE_ID_KOKIRI_REGION); } else if (((void)0, gSaveContext.forcedSeqId) != NA_BGM_GENERAL_SFX) { if (!Environment_IsForcedSequenceDisabled()) { @@ -2336,7 +2336,7 @@ void Environment_DrawSandstorm(PlayState* play, u8 sandstormState) { Environment_PatchSandstorm(play); switch (sandstormState) { - case 3: + case SANDSTORM_ACTIVE: if ((play->sceneNum == SCENE_HAUNTED_WASTELAND) && (play->roomCtx.curRoom.num == 0)) { envA1 = 0; primA1 = (play->envCtx.sandstormEnvA > 128) ? 255 : play->envCtx.sandstormEnvA >> 1; @@ -2349,11 +2349,11 @@ void Environment_DrawSandstorm(PlayState* play, u8 sandstormState) { envA1 = 128; } break; - case 1: + case SANDSTORM_FILL: primA1 = 255; envA1 = (play->envCtx.sandstormPrimA >= 255) ? 255 : 128; break; - case 2: + case SANDSTORM_UNFILL: envA1 = 128; if (play->envCtx.sandstormEnvA > 128) { primA1 = 0xFF; @@ -2365,15 +2365,15 @@ void Environment_DrawSandstorm(PlayState* play, u8 sandstormState) { primA1 += 73; } if ((primA1 >= primA) && (primA1 != 255)) { - play->envCtx.sandstormState = 3; + play->envCtx.sandstormState = SANDSTORM_ACTIVE; } break; - case 4: + case SANDSTORM_DISSIPATE: envA1 = 0; primA1 = (play->envCtx.sandstormEnvA > 128) ? 255 : play->envCtx.sandstormEnvA >> 1; if (primA == 0) { - play->envCtx.sandstormState = 0; + play->envCtx.sandstormState = SANDSTORM_OFF; } break; } @@ -2541,27 +2541,27 @@ void Environment_WarpSongLeave(PlayState* play) { gSaveContext.cutsceneIndex = 0; gSaveContext.respawnFlag = -3; play->nextEntranceIndex = gSaveContext.respawn[RESPAWN_MODE_RETURN].entranceIndex; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; - gSaveContext.nextTransitionType = 3; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; switch (play->nextEntranceIndex) { - case 0x147: + case ENTR_DEATH_MOUNTAIN_CRATER_0: Flags_SetEventChkInf(EVENTCHKINF_ENTERED_DEATH_MOUNTAIN_CRATER); break; - case 0x0102: + case ENTR_LAKE_HYLIA_0: Flags_SetEventChkInf(EVENTCHKINF_ENTERED_LAKE_HYLIA); break; - case 0x0123: + case ENTR_DESERT_COLOSSUS_0: Flags_SetEventChkInf(EVENTCHKINF_ENTERED_DESERT_COLOSSUS); break; - case 0x00E4: + case ENTR_GRAVEYARD_0: Flags_SetEventChkInf(EVENTCHKINF_ENTERED_GRAVEYARD); break; - case 0x0053: + case ENTR_TEMPLE_OF_TIME_0: Flags_SetEventChkInf(EVENTCHKINF_ENTERED_TEMPLE_OF_TIME); break; - case 0x00FC: + case ENTR_SACRED_FOREST_MEADOW_0: break; } } diff --git a/soh/src/code/z_lifemeter.c b/soh/src/code/z_lifemeter.c index 8d5e41a20..69cba24b4 100644 --- a/soh/src/code/z_lifemeter.c +++ b/soh/src/code/z_lifemeter.c @@ -601,13 +601,24 @@ void HealthMeter_Draw(PlayState* play) { { Mtx* matrix = Graph_Alloc(gfxCtx, sizeof(Mtx)); - Matrix_SetTranslateScaleMtx2(matrix, - HeartsScale+(HeartsScale/3) - ((HeartsScale/3) * sp144), - HeartsScale+(HeartsScale/3) - ((HeartsScale/3) * sp144), - HeartsScale+(HeartsScale/3) - ((HeartsScale/3) * sp144), - -130+offsetX, //Pos X - (-94+offsetY) *-1, //Pos Y - 0.0f); + + if (CVarGetInteger("gNoHUDHeartAnimation", 0)) { + Matrix_SetTranslateScaleMtx2(matrix, + HeartsScale, // Scale X + HeartsScale, // Scale Y + HeartsScale, // Scale Z + -130 + offsetX, // Pos X + (-94 + offsetY) * -1, // Pos Y + 0.0f); + } else { + Matrix_SetTranslateScaleMtx2(matrix, HeartsScale + (HeartsScale / 3) - ((HeartsScale / 3) * sp144), + HeartsScale + (HeartsScale / 3) - ((HeartsScale / 3) * sp144), + HeartsScale + (HeartsScale / 3) - ((HeartsScale / 3) * sp144), + -130 + offsetX, // Pos X + (-94 + offsetY) * -1, // Pos Y + 0.0f); + } + gSPMatrix(OVERLAY_DISP++, matrix, G_MTX_MODELVIEW | G_MTX_LOAD); gSPVertex(OVERLAY_DISP++, sp154, 4, 0); gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); diff --git a/soh/src/code/z_message_PAL.c b/soh/src/code/z_message_PAL.c index da0f5f55f..7bb3803fc 100644 --- a/soh/src/code/z_message_PAL.c +++ b/soh/src/code/z_message_PAL.c @@ -3384,7 +3384,7 @@ void Message_Update(PlayState* play) { } sLastPlayedSong = 0xFF; osSyncPrintf("OCARINA_MODE=%d chk_ocarina_no=%d\n", play->msgCtx.ocarinaMode, msgCtx->unk_E3F2); - CheckTracker_OnMessageClose(); + // TODO: OnMessageClose hook break; case MSGMODE_PAUSED: break; diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c index 73c8aebd1..67405d226 100644 --- a/soh/src/code/z_parameter.c +++ b/soh/src/code/z_parameter.c @@ -893,7 +893,7 @@ void func_80083108(PlayState* play) { Interface_ChangeAlpha(6); } - if (play->transitionMode != 0) { + if (play->transitionMode != TRANS_MODE_OFF) { Interface_ChangeAlpha(1); } else if (gSaveContext.minigameState == 1) { Interface_ChangeAlpha(8); @@ -1344,7 +1344,7 @@ void func_80083108(PlayState* play) { if (sp28) { gSaveContext.unk_13EA = 0; - if ((play->sceneLoadFlag == 0) && (play->transitionMode == 0)) { + if ((play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { Interface_ChangeAlpha(50); osSyncPrintf("???????? alpha_change( 50 ); ?????\n"); } else { @@ -1469,6 +1469,7 @@ void Inventory_SwapAgeEquipment(void) { gSaveContext.equips.buttonItems[0] = ITEM_SWORD_MASTER; } else { gSaveContext.equips.buttonItems[0] = ITEM_NONE; + Flags_SetInfTable(INFTABLE_SWORDLESS); } if (gSaveContext.inventory.items[SLOT_NUT] != ITEM_NONE) { @@ -1525,13 +1526,13 @@ void Inventory_SwapAgeEquipment(void) { } else { // When becoming child, set swordless flag if player doesn't have kokiri sword // Only in rando to keep swordless link bugs in vanilla - if (IS_RANDO && (EQUIP_INV_SWORD_KOKIRI << (EQUIP_TYPE_SWORD * 4) & gSaveContext.inventory.equipment) == 0) { + if (IS_RANDO && CHECK_OWNED_EQUIP(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_KOKIRI) == 0) { Flags_SetInfTable(INFTABLE_SWORDLESS); } // When using enhancements, set swordless flag if player doesn't have kokiri sword or hasn't equipped a sword yet. // Then set the child equips button items to item none to ensure kokiri sword is not equipped - if ((CVarGetInteger("gSwitchAge", 0) || CVarGetInteger("gSwitchTimeline", 0)) && ((EQUIP_INV_SWORD_KOKIRI << (EQUIP_TYPE_SWORD * 4) & gSaveContext.inventory.equipment) == 0 || Flags_GetInfTable(INFTABLE_SWORDLESS))) { + if ((CVarGetInteger("gSwitchAge", 0) || CVarGetInteger("gSwitchTimeline", 0)) && (CHECK_OWNED_EQUIP(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_KOKIRI) == 0 || Flags_GetInfTable(INFTABLE_SWORDLESS))) { Flags_SetInfTable(INFTABLE_SWORDLESS); gSaveContext.childEquips.buttonItems[0] = ITEM_NONE; } @@ -1567,7 +1568,7 @@ void Inventory_SwapAgeEquipment(void) { gSaveContext.equips.equipment = gSaveContext.childEquips.equipment; gSaveContext.equips.equipment &= (u16) ~(0xF << (EQUIP_TYPE_SWORD * 4)); // Equips kokiri sword in the inventory screen only if kokiri sword exists in inventory and a sword has been equipped already - if (!((EQUIP_INV_SWORD_KOKIRI << (EQUIP_TYPE_SWORD * 4) & gSaveContext.inventory.equipment) == 0) && !Flags_GetInfTable(INFTABLE_SWORDLESS)) { + if (!(CHECK_OWNED_EQUIP(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_KOKIRI) == 0) && !Flags_GetInfTable(INFTABLE_SWORDLESS)) { gSaveContext.equips.equipment |= EQUIP_VALUE_SWORD_KOKIRI << (EQUIP_TYPE_SWORD * 4); } } else if (gSaveContext.childEquips.buttonItems[0] != ITEM_NONE) { @@ -1597,7 +1598,7 @@ void Inventory_SwapAgeEquipment(void) { (only kokiri tunic/boots equipped, no sword, no C-button items, no D-Pad items). When becoming child, set swordless flag if player doesn't have kokiri sword Only in rando to keep swordless link bugs in vanilla*/ - if (EQUIP_INV_SWORD_KOKIRI << (EQUIP_TYPE_SWORD * 4) & gSaveContext.inventory.equipment == 0) { + if (CHECK_OWNED_EQUIP(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_KOKIRI) == 0) { Flags_SetInfTable(INFTABLE_SWORDLESS); } @@ -1723,7 +1724,7 @@ void GameplayStats_SetTimestamp(PlayState* play, u8 item) { } // Use ITEM_KEY_BOSS only for Ganon's boss key - not any other boss keys if (play != NULL) { - if (item == ITEM_KEY_BOSS && play->sceneNum != 13 && play->sceneNum != 10) { + if (item == ITEM_KEY_BOSS && play->sceneNum != SCENE_INSIDE_GANONS_CASTLE && play->sceneNum != SCENE_GANONS_TOWER) { return; } } @@ -1800,15 +1801,25 @@ u8 Return_Item_Entry(GetItemEntry itemEntry, ItemID returnItem ) { u8 Return_Item(u8 itemID, ModIndex modId, ItemID returnItem) { // ITEM_SOLD_OUT doesn't have an ItemTable entry, so pass custom entry instead if (itemID == ITEM_SOLD_OUT) { - GetItemEntry gie = { ITEM_SOLD_OUT, 0, 0, 0, 0, 0, 0, 0, false, ITEM_FROM_NPC, ITEM_CATEGORY_LESSER, NULL }; + GetItemEntry gie = { ITEM_SOLD_OUT, 0, 0, 0, 0, 0, 0, 0, 0, false, ITEM_FROM_NPC, ITEM_CATEGORY_LESSER, NULL }; return Return_Item_Entry(gie, returnItem); } - int32_t get = GetGIID(itemID); - if (get == -1) { - modId = MOD_RANDOMIZER; - get = itemID; + + GetItemID getItemID = RetrieveGetItemIDFromItemID(itemID); + if (getItemID != GI_MAX) { + // Vanilla ItemID with an associated GetItemID + return Return_Item_Entry(ItemTable_RetrieveEntry(modId, getItemID), returnItem); + } + + RandomizerGet randomizerGet = RetrieveRandomizerGetFromItemID(itemID); + if (randomizerGet != RG_MAX) { + // Vanilla ItemID with an associated RandomizerGet (These are items in extendedVanillaGetItemTable) + return Return_Item_Entry(ItemTable_RetrieveEntry(MOD_RANDOMIZER, randomizerGet), returnItem); } - return Return_Item_Entry(ItemTable_RetrieveEntry(modId, get), returnItem); + + // All randomizer items should go through Randomizer_Item_Give, so this should never be reached + // but leaving this here just in case, as it was in the original behavior + return Return_Item_Entry(ItemTable_RetrieveEntry(MOD_RANDOMIZER, itemID), returnItem); } /** @@ -2604,6 +2615,7 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { if (gSaveContext.triforcePiecesCollected == Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED)) { gSaveContext.sohStats.itemTimestamp[TIMESTAMP_TRIFORCE_COMPLETED] = GAMEPLAYSTAT_TOTAL_TIME; gSaveContext.sohStats.gameComplete = 1; + Flags_SetRandomizerInf(RAND_INF_GRANT_GANONS_BOSSKEY); Play_PerformSave(play); GameInteractor_SetTriforceHuntCreditsWarpActive(true); } @@ -3469,7 +3481,7 @@ void Interface_UpdateMagicBar(PlayState* play) { case MAGIC_STATE_CONSUME_LENS: if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugState == 0) && (msgCtx->msgMode == MSGMODE_NONE) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && - (play->sceneLoadFlag == 0) && (play->transitionMode == 0) && !Play_InCsMode(play)) { + (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play)) { bool hasLens = false; for (int buttonIndex = 1; buttonIndex < (CVarGetInteger("gDpadEquips", 0) != 0) ? ARRAY_COUNT(gSaveContext.equips.buttonItems) : 4; buttonIndex++) { if (gSaveContext.equips.buttonItems[buttonIndex] == ITEM_LENS) { @@ -5077,7 +5089,7 @@ void Interface_Draw(PlayState* play) { aButtonColor = (Color_RGB8){ 0, 200, 50 }; } - static s16 spoilingItemEntrances[] = { 0x01AD, 0x0153, 0x0153 }; + static s16 spoilingItemEntrances[] = { ENTR_LOST_WOODS_2, ENTR_ZORAS_DOMAIN_3, ENTR_ZORAS_DOMAIN_3 }; static f32 D_80125B54[] = { -40.0f, -35.0f }; // unused static s16 D_80125B5C[] = { 91, 91 }; // unused static s16 D_8015FFE0; @@ -5794,8 +5806,8 @@ void Interface_Draw(PlayState* play) { // Trade quest timer reached 0 D_8015FFE6 = 40; gSaveContext.cutsceneIndex = 0; - play->sceneLoadFlag = 0x14; - play->fadeTransition = 3; + play->transitionTrigger = TRANS_TRIGGER_START; + play->transitionType = TRANS_TYPE_FADE_WHITE; gSaveContext.timer2State = 0; if ((gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KOKIRI) && @@ -5830,8 +5842,8 @@ void Interface_Draw(PlayState* play) { if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugState == 0) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && (msgCtx->msgMode == MSGMODE_NONE) && - !(player->stateFlags2 & 0x01000000) && (play->sceneLoadFlag == 0) && - (play->transitionMode == 0) && !Play_InCsMode(play) && (gSaveContext.minigameState != 1) && + !(player->stateFlags2 & 0x01000000) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && + (play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play) && (gSaveContext.minigameState != 1) && (play->shootingGalleryStatus <= 1) && !((play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38))) { svar6 = 0; @@ -6522,8 +6534,8 @@ void Interface_Update(PlayState* play) { HealthMeter_Update(play); if ((gSaveContext.timer1State >= 3) && (play->pauseCtx.state == 0) && (play->pauseCtx.debugState == 0) && - (msgCtx->msgMode == MSGMODE_NONE) && !(player->stateFlags2 & 0x01000000) && (play->sceneLoadFlag == 0) && - (play->transitionMode == 0) && !Play_InCsMode(play)) {} + (msgCtx->msgMode == MSGMODE_NONE) && !(player->stateFlags2 & 0x01000000) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && + (play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play)) {} if (gSaveContext.rupeeAccumulator != 0) { if (gSaveContext.rupeeAccumulator > 0) { @@ -6561,11 +6573,15 @@ void Interface_Update(PlayState* play) { gSaveContext.pendingSale = ITEM_NONE; gSaveContext.pendingSaleMod = MOD_NONE; if (tempSaleMod == MOD_NONE) { - s16 giid = GetGIID(tempSaleItem); - if (giid == -1) { - tempSaleMod = MOD_RANDOMIZER; + GetItemID getItemID = RetrieveGetItemIDFromItemID(tempSaleItem); + RandomizerGet randomizerGet = RetrieveRandomizerGetFromItemID(tempSaleItem); + if (getItemID != GI_MAX) { + tempSaleItem = getItemID; } else { - tempSaleItem = giid; + if (randomizerGet != RG_MAX) { + tempSaleItem = randomizerGet; + } + tempSaleMod = MOD_RANDOMIZER; } } GameInteractor_ExecuteOnSaleEndHooks(ItemTable_RetrieveEntry(tempSaleMod, tempSaleItem)); @@ -6618,8 +6634,8 @@ void Interface_Update(PlayState* play) { WREG(7) = interfaceCtx->unk_1F4; if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugState == 0) && - (msgCtx->msgMode == MSGMODE_NONE) && (play->sceneLoadFlag == 0) && - (play->gameOverCtx.state == GAMEOVER_INACTIVE) && (play->transitionMode == 0) && + (msgCtx->msgMode == MSGMODE_NONE) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && + (play->gameOverCtx.state == GAMEOVER_INACTIVE) && (play->transitionMode == TRANS_MODE_OFF) && ((play->csCtx.state == CS_STATE_IDLE) || !Player_InCsMode(play))) { if ((gSaveContext.isMagicAcquired != 0) && (gSaveContext.magicLevel == 0)) { gSaveContext.magicLevel = gSaveContext.isDoubleMagicAcquired + 1; @@ -6716,19 +6732,19 @@ void Interface_Update(PlayState* play) { (interfaceCtx->restrictions.sunsSong != 3)) { if ((gSaveContext.dayTime >= 0x4555) && (gSaveContext.dayTime < 0xC001)) { gSaveContext.nextDayTime = 0; - play->fadeTransition = 4; - gSaveContext.nextTransitionType = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; play->unk_11DE9 = 1; } else { gSaveContext.nextDayTime = 0x8001; - play->fadeTransition = 5; - gSaveContext.nextTransitionType = 3; + play->transitionType = TRANS_TYPE_FADE_WHITE_FAST; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; play->unk_11DE9 = 1; } if (play->sceneNum == SCENE_HAUNTED_WASTELAND) { - play->fadeTransition = 14; - gSaveContext.nextTransitionType = 14; + play->transitionType = TRANS_TYPE_SANDSTORM_PERSIST; + gSaveContext.nextTransitionType = TRANS_TYPE_SANDSTORM_PERSIST; } gSaveContext.respawnFlag = -2; @@ -6739,7 +6755,7 @@ void Interface_Update(PlayState* play) { Grotto_ForceGrottoReturn(); } - play->sceneLoadFlag = 0x14; + play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.sunsSongState = SUNSSONG_INACTIVE; func_800F6964(30); gSaveContext.seqId = (u8)NA_BGM_DISABLED; diff --git a/soh/src/code/z_play.c b/soh/src/code/z_play.c index 112a71888..d6c84e355 100644 --- a/soh/src/code/z_play.c +++ b/soh/src/code/z_play.c @@ -33,6 +33,7 @@ u64 D_801614D0[0xA00]; #endif PlayState* gPlayState; +s16 firstInit = 0; s16 gEnPartnerId; @@ -71,13 +72,14 @@ void func_800BC590(PlayState* play) { } } -void func_800BC5E0(PlayState* play, s32 transitionType) { +void Gameplay_SetupTransition(PlayState* play, s32 transitionType) { TransitionContext* transitionCtx = &play->transitionCtx; memset(transitionCtx,0, sizeof(TransitionContext)); transitionCtx->transitionType = transitionType; + // Circle Transition Types if ((transitionCtx->transitionType >> 5) == 1) { transitionCtx->init = TransitionCircle_Init; transitionCtx->destroy = TransitionCircle_Destroy; @@ -90,7 +92,7 @@ void func_800BC5E0(PlayState* play, s32 transitionType) { transitionCtx->setEnvColor = TransitionCircle_SetEnvColor; } else { switch (transitionCtx->transitionType) { - case 1: + case TRANS_TYPE_TRIFORCE: transitionCtx->init = TransitionTriforce_Init; transitionCtx->destroy = TransitionTriforce_Destroy; transitionCtx->start = TransitionTriforce_Start; @@ -101,8 +103,8 @@ void func_800BC5E0(PlayState* play, s32 transitionType) { transitionCtx->setColor = TransitionTriforce_SetColor; transitionCtx->setEnvColor = NULL; break; - case 0: - case 8: + case TRANS_TYPE_WIPE: + case TRANS_TYPE_WIPE_FAST: transitionCtx->init = TransitionWipe_Init; transitionCtx->destroy = TransitionWipe_Destroy; transitionCtx->start = TransitionWipe_Start; @@ -113,16 +115,16 @@ void func_800BC5E0(PlayState* play, s32 transitionType) { transitionCtx->setColor = TransitionWipe_SetColor; transitionCtx->setEnvColor = NULL; break; - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 13: - case 17: - case 18: - case 19: + case TRANS_TYPE_FADE_BLACK: + case TRANS_TYPE_FADE_WHITE: + case TRANS_TYPE_FADE_BLACK_FAST: + case TRANS_TYPE_FADE_WHITE_FAST: + case TRANS_TYPE_FADE_BLACK_SLOW: + case TRANS_TYPE_FADE_WHITE_SLOW: + case TRANS_TYPE_FADE_WHITE_CS_DELAYED: + case TRANS_TYPE_FADE_WHITE_INSTANT: + case TRANS_TYPE_FADE_GREEN: + case TRANS_TYPE_FADE_BLUE: transitionCtx->init = TransitionFade_Init; transitionCtx->destroy = TransitionFade_Destroy; transitionCtx->start = TransitionFade_Start; @@ -133,24 +135,24 @@ void func_800BC5E0(PlayState* play, s32 transitionType) { transitionCtx->setColor = TransitionFade_SetColor; transitionCtx->setEnvColor = NULL; break; - case 9: - case 10: - play->transitionMode = 4; + case TRANS_TYPE_FILL_WHITE2: + case TRANS_TYPE_FILL_WHITE: + play->transitionMode = TRANS_MODE_FILL_WHITE_INIT; break; - case 11: - play->transitionMode = 10; + case TRANS_TYPE_INSTANT: + play->transitionMode = TRANS_MODE_INSTANT; break; - case 12: - play->transitionMode = 7; + case TRANS_TYPE_FILL_BROWN: + play->transitionMode = TRANS_MODE_FILL_BROWN_INIT; break; - case 14: - play->transitionMode = 12; + case TRANS_TYPE_SANDSTORM_PERSIST: + play->transitionMode = TRANS_MODE_SANDSTORM_INIT; break; - case 15: - play->transitionMode = 14; + case TRANS_TYPE_SANDSTORM_END: + play->transitionMode = TRANS_MODE_SANDSTORM_END_INIT; break; - case 16: - play->transitionMode = 16; + case TRANS_TYPE_CS_BLACK_FILL: + play->transitionMode = TRANS_MODE_CS_BLACK_FILL_INIT; break; default: Fault_AddHungupAndCrash(__FILE__, __LINE__); @@ -199,10 +201,10 @@ void Play_Destroy(GameState* thisx) { gTrnsnUnkState = 0; } - if (play->transitionMode == 3) { + if (play->transitionMode == TRANS_MODE_INSTANCE_RUNNING) { play->transitionCtx.destroy(&play->transitionCtx.data); func_800BC88C(play); - play->transitionMode = 0; + play->transitionMode = TRANS_MODE_OFF; } ShrinkWindow_Destroy(); @@ -227,8 +229,8 @@ void Play_Destroy(GameState* thisx) { void GivePlayerRandoRewardSongOfTime(PlayState* play, RandomizerCheck check) { Player* player = GET_PLAYER(play); - if (gSaveContext.entranceIndex == 0x050F && player != NULL && !Player_InBlockingCsMode(play, player) && - !Flags_GetTreasure(play, 0x1F) && gSaveContext.nextTransitionType == 0xFF && !gSaveContext.pendingIceTrapCount) { + if (gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_16 && player != NULL && !Player_InBlockingCsMode(play, player) && + !Flags_GetTreasure(play, 0x1F) && gSaveContext.nextTransitionType == TRANS_NEXT_TYPE_DEFAULT && !gSaveContext.pendingIceTrapCount) { GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheck(check, RG_SONG_OF_TIME); GiveItemEntryWithoutActor(play, getItemEntry); player->pendingFlag.flagID = 0x1F; @@ -239,9 +241,9 @@ void GivePlayerRandoRewardSongOfTime(PlayState* play, RandomizerCheck check) { void GivePlayerRandoRewardNocturne(PlayState* play, RandomizerCheck check) { Player* player = GET_PLAYER(play); - if ((gSaveContext.entranceIndex == 0x00DB || - gSaveContext.entranceIndex == 0x0191 || - gSaveContext.entranceIndex == 0x0195) && LINK_IS_ADULT && CHECK_QUEST_ITEM(QUEST_MEDALLION_FOREST) && + if ((gSaveContext.entranceIndex == ENTR_KAKARIKO_VILLAGE_0 || + gSaveContext.entranceIndex == ENTR_KAKARIKO_VILLAGE_1 || + gSaveContext.entranceIndex == ENTR_KAKARIKO_VILLAGE_2) && LINK_IS_ADULT && CHECK_QUEST_ITEM(QUEST_MEDALLION_FOREST) && CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE) && CHECK_QUEST_ITEM(QUEST_MEDALLION_WATER) && player != NULL && !Player_InBlockingCsMode(play, player) && !Flags_GetEventChkInf(EVENTCHKINF_BONGO_BONGO_ESCAPED_FROM_WELL)) { GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheck(check, RG_NOCTURNE_OF_SHADOW); @@ -255,7 +257,7 @@ void GivePlayerRandoRewardRequiem(PlayState* play, RandomizerCheck check) { Player* player = GET_PLAYER(play); if ((gSaveContext.gameMode == 0) && (gSaveContext.respawnFlag <= 0) && (gSaveContext.cutsceneIndex < 0xFFF0)) { - if ((gSaveContext.entranceIndex == 0x01E1) && !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_REQUIEM_OF_SPIRIT) && player != NULL && + if ((gSaveContext.entranceIndex == ENTR_DESERT_COLOSSUS_1) && !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_REQUIEM_OF_SPIRIT) && player != NULL && !Player_InBlockingCsMode(play, player)) { GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheck(check, RG_SONG_OF_TIME); GiveItemEntryWithoutActor(play, getItemEntry); @@ -268,7 +270,7 @@ void GivePlayerRandoRewardRequiem(PlayState* play, RandomizerCheck check) { void GivePlayerRandoRewardMasterSword(PlayState* play, RandomizerCheck check) { Player* player = GET_PLAYER(play); - if (gSaveContext.entranceIndex == 0x02CA && LINK_IS_ADULT && player != NULL && + if (gSaveContext.entranceIndex == ENTR_TEMPLE_OF_TIME_2 && LINK_IS_ADULT && player != NULL && !Player_InBlockingCsMode(play, player) && Randomizer_GetSettingValue(RSK_SHUFFLE_MASTER_SWORD) && !Flags_GetRandomizerInf(RAND_INF_TOT_MASTER_SWORD)) { GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheck(check, RG_MASTER_SWORD); @@ -441,7 +443,7 @@ void GivePlayerRandoRewardZeldaLightArrowsGift(PlayState* play, RandomizerCheck if (meetsRequirements && LINK_IS_ADULT && (gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TEMPLE_OF_TIME) && !Flags_GetTreasure(play, 0x1E) && player != NULL && !Player_InBlockingCsMode(play, player) && - play->sceneLoadFlag == 0) { + play->transitionTrigger == TRANS_TRIGGER_OFF) { GetItemEntry getItem = Randomizer_GetItemFromKnownCheck(check, GI_ARROW_LIGHT); if (GiveItemEntryWithoutActor(play, getItem)) { player->pendingFlag.flagID = 0x1E; @@ -452,7 +454,7 @@ void GivePlayerRandoRewardZeldaLightArrowsGift(PlayState* play, RandomizerCheck void GivePlayerRandoRewardSariaGift(PlayState* play, RandomizerCheck check) { Player* player = GET_PLAYER(play); - if (gSaveContext.entranceIndex == 0x05E0) { + if (gSaveContext.entranceIndex == ENTR_LOST_WOODS_9) { GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheck(check, RG_ZELDAS_LULLABY); if (!Flags_GetEventChkInf(EVENTCHKINF_SPOKE_TO_SARIA_ON_BRIDGE) && player != NULL && !Player_InBlockingCsMode(play, player)) { @@ -481,17 +483,23 @@ void Play_Init(GameState* thisx) { // Skip Child Stealth when option is enabled, Zelda's Letter isn't obtained and Impa's reward hasn't been received // eventChkInf[4] & 1 = Got Zelda's Letter // eventChkInf[5] & 0x200 = Got Impa's reward - // entranceIndex 0x7A, Castle Courtyard - Day from crawlspace - // entranceIndex 0x400, Zelda's Courtyard + // entranceIndex 0x7A, ENTR_CASTLE_COURTYARD_GUARDS_DAY_0, Castle Courtyard - Day from crawlspace + // entranceIndex 0x400, ENTR_CASTLE_COURTYARD_ZELDA_0, Zelda's Courtyard if (IS_RANDO && Randomizer_GetSettingValue(RSK_SKIP_CHILD_STEALTH) && !Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER) && !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_ZELDAS_LULLABY)) { - if (gSaveContext.entranceIndex == 0x7A) { - gSaveContext.entranceIndex = 0x400; + if (gSaveContext.entranceIndex == ENTR_CASTLE_COURTYARD_GUARDS_DAY_0) { + gSaveContext.entranceIndex = ENTR_CASTLE_COURTYARD_ZELDA_0; } } + // Properly initialize the frame counter so it doesn't use garbage data + if (!firstInit) { + play->gameplayFrames = 0; + firstInit = 1; + } + // Invalid entrance, so immediately exit the game to opening title - if (gSaveContext.entranceIndex == -1) { + if (gSaveContext.entranceIndex == ENTR_LOAD_OPENING) { gSaveContext.entranceIndex = 0; play->state.running = false; SET_NEXT_GAMESTATE(&play->state, Opening_Init, OpeningContext); @@ -617,12 +625,12 @@ void Play_Init(GameState* thisx) { PreRender_SetValuesSave(&play->pauseBgPreRender, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0, 0); PreRender_SetValues(&play->pauseBgPreRender, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0); gTrnsnUnkState = 0; - play->transitionMode = 0; + play->transitionMode = TRANS_MODE_OFF; if (CVarGetInteger("gSceneTransitions", 255)!= 255){ play->transitionMode = CVarGetInteger("gSceneTransitions", 0); gSaveContext.nextTransitionType = CVarGetInteger("gSceneTransitions", 0); - play->fadeTransition = CVarGetInteger("gSceneTransitions", 0); + play->transitionType = CVarGetInteger("gSceneTransitions", 0); } FrameAdvance_Init(&play->frameAdvCtx); @@ -630,21 +638,21 @@ void Play_Init(GameState* thisx) { Matrix_Init(&play->state); play->state.main = Play_Main; play->state.destroy = Play_Destroy; - play->sceneLoadFlag = -0x14; + play->transitionTrigger = TRANS_TRIGGER_END; play->unk_11E16 = 0xFF; play->unk_11E18 = 0; play->unk_11DE9 = 0; if (gSaveContext.gameMode != 1) { - if (gSaveContext.nextTransitionType == 0xFF) { - play->fadeTransition = - (gEntranceTable[((void)0, gSaveContext.entranceIndex) + tempSetupIndex].field >> 7) & 0x7F; // Fade In + if (gSaveContext.nextTransitionType == TRANS_NEXT_TYPE_DEFAULT) { + play->transitionType = ENTRANCE_INFO_END_TRANS_TYPE( + gEntranceTable[((void)0, gSaveContext.entranceIndex) + tempSetupIndex].field); // Fade In } else { - play->fadeTransition = gSaveContext.nextTransitionType; - gSaveContext.nextTransitionType = 0xFF; + play->transitionType = gSaveContext.nextTransitionType; + gSaveContext.nextTransitionType = TRANS_NEXT_TYPE_DEFAULT; } } else { - play->fadeTransition = 6; + play->transitionType = TRANS_TYPE_FADE_BLACK_SLOW; } ShrinkWindow_Init(); @@ -801,8 +809,8 @@ void Play_Update(PlayState* play) { gSegments[2] = VIRTUAL_TO_PHYSICAL(play->sceneSegment); if (FrameAdvance_Update(&play->frameAdvCtx, &input[1])) { - if ((play->transitionMode == 0) && (play->sceneLoadFlag != 0)) { - play->transitionMode = 1; + if ((play->transitionMode == TRANS_MODE_OFF) && (play->transitionTrigger != TRANS_TRIGGER_OFF)) { + play->transitionMode = TRANS_MODE_SETUP; } // Gameplay stats: Count button presses @@ -851,8 +859,8 @@ void Play_Update(PlayState* play) { if (play->transitionMode) { switch (play->transitionMode) { - case 1: - if (play->sceneLoadFlag != -0x14) { + case TRANS_MODE_SETUP: + if (play->transitionTrigger != TRANS_TRIGGER_END) { s16 sp6E = 0; Interface_ChangeAlpha(1); @@ -860,10 +868,10 @@ void Play_Update(PlayState* play) { sp6E = (gSaveContext.cutsceneIndex & 0xF) + 4; } - if (!(gEntranceTable[play->nextEntranceIndex + sp6E].field & 0x8000)) { // Continue BGM Off + if (!(gEntranceTable[play->nextEntranceIndex + sp6E].field & ENTRANCE_INFO_CONTINUE_BGM_FLAG)) { // Continue BGM Off // "Sound initalized. 111" osSyncPrintf("\n\n\nサウンドイニシャル来ました。111"); - if ((play->fadeTransition < 56) && !Environment_IsForcedSequenceDisabled()) { + if ((play->transitionType < TRANS_TYPE_MAX) && !Environment_IsForcedSequenceDisabled()) { // "Sound initalized. 222" osSyncPrintf("\n\n\nサウンドイニシャル来ました。222"); func_800F6964(0x14); @@ -873,58 +881,59 @@ void Play_Update(PlayState* play) { } } - if (CREG(11) == 0) { - func_800BC5E0(play, play->fadeTransition); + if (!R_TRANS_DBG_ENABLED) { + Gameplay_SetupTransition(play, play->transitionType); } else { - func_800BC5E0(play, CREG(12)); + Gameplay_SetupTransition(play, R_TRANS_DBG_TYPE); } - if (play->transitionMode >= 4) { + if (play->transitionMode >= TRANS_MODE_FILL_WHITE_INIT) { break; } - case 2: + case TRANS_MODE_INSTANCE_INIT: play->transitionCtx.init(&play->transitionCtx.data); + // Circle Transition Types if ((play->transitionCtx.transitionType >> 5) == 1) { play->transitionCtx.setType(&play->transitionCtx.data, - play->transitionCtx.transitionType | 0x80); + play->transitionCtx.transitionType | TC_SET_PARAMS); } gSaveContext.transWipeSpeed = 14; - if ((play->transitionCtx.transitionType == 8) || - (play->transitionCtx.transitionType == 9)) { + if ((play->transitionCtx.transitionType == TRANS_TYPE_WIPE_FAST) || + (play->transitionCtx.transitionType == TRANS_TYPE_FILL_WHITE2)) { gSaveContext.transWipeSpeed = 28; } gSaveContext.transFadeDuration = 60; - if ((play->transitionCtx.transitionType == 4) || - (play->transitionCtx.transitionType == 5)) { + if ((play->transitionCtx.transitionType == TRANS_TYPE_FADE_BLACK_FAST) || + (play->transitionCtx.transitionType == TRANS_TYPE_FADE_WHITE_FAST)) { gSaveContext.transFadeDuration = 20; - } else if ((play->transitionCtx.transitionType == 6) || - (play->transitionCtx.transitionType == 7)) { + } else if ((play->transitionCtx.transitionType == TRANS_TYPE_FADE_BLACK_SLOW) || + (play->transitionCtx.transitionType == TRANS_TYPE_FADE_WHITE_SLOW)) { gSaveContext.transFadeDuration = 150; - } else if (play->transitionCtx.transitionType == 17) { + } else if (play->transitionCtx.transitionType == TRANS_TYPE_FADE_WHITE_INSTANT) { gSaveContext.transFadeDuration = 2; } - if ((play->transitionCtx.transitionType == 3) || - (play->transitionCtx.transitionType == 5) || - (play->transitionCtx.transitionType == 7) || - (play->transitionCtx.transitionType == 13) || - (play->transitionCtx.transitionType == 17)) { + if ((play->transitionCtx.transitionType == TRANS_TYPE_FADE_WHITE) || + (play->transitionCtx.transitionType == TRANS_TYPE_FADE_WHITE_FAST) || + (play->transitionCtx.transitionType == TRANS_TYPE_FADE_WHITE_SLOW) || + (play->transitionCtx.transitionType == TRANS_TYPE_FADE_WHITE_CS_DELAYED) || + (play->transitionCtx.transitionType == TRANS_TYPE_FADE_WHITE_INSTANT)) { play->transitionCtx.setColor(&play->transitionCtx.data, RGBA8(160, 160, 160, 255)); if (play->transitionCtx.setEnvColor != NULL) { play->transitionCtx.setEnvColor(&play->transitionCtx.data, RGBA8(160, 160, 160, 255)); } - } else if (play->transitionCtx.transitionType == 18) { + } else if (play->transitionCtx.transitionType == TRANS_TYPE_FADE_GREEN) { play->transitionCtx.setColor(&play->transitionCtx.data, RGBA8(140, 140, 100, 255)); if (play->transitionCtx.setEnvColor != NULL) { play->transitionCtx.setEnvColor(&play->transitionCtx.data, RGBA8(140, 140, 100, 255)); } - } else if (play->transitionCtx.transitionType == 19) { + } else if (play->transitionCtx.transitionType == TRANS_TYPE_FADE_BLUE) { play->transitionCtx.setColor(&play->transitionCtx.data, RGBA8(70, 100, 110, 255)); if (play->transitionCtx.setEnvColor != NULL) { play->transitionCtx.setEnvColor(&play->transitionCtx.data, @@ -937,7 +946,7 @@ void Play_Update(PlayState* play) { } } - if (play->sceneLoadFlag == -0x14) { + if (play->transitionTrigger == TRANS_TRIGGER_END) { play->transitionCtx.setType(&play->transitionCtx.data, 1); } else { play->transitionCtx.setType(&play->transitionCtx.data, 2); @@ -945,22 +954,22 @@ void Play_Update(PlayState* play) { play->transitionCtx.start(&play->transitionCtx); - if (play->transitionCtx.transitionType == 13) { - play->transitionMode = 11; + if (play->transitionCtx.transitionType == TRANS_TYPE_FADE_WHITE_CS_DELAYED) { + play->transitionMode = TRANS_MODE_INSTANCE_WAIT; } else { - play->transitionMode = 3; + play->transitionMode = TRANS_MODE_INSTANCE_RUNNING; } break; - case 3: + case TRANS_MODE_INSTANCE_RUNNING: if (play->transitionCtx.isDone(&play->transitionCtx) != 0) { - if (play->transitionCtx.transitionType >= 56) { - if (play->sceneLoadFlag == -0x14) { + if (play->transitionCtx.transitionType >= TRANS_TYPE_MAX) { + if (play->transitionTrigger == TRANS_TRIGGER_END) { play->transitionCtx.destroy(&play->transitionCtx); func_800BC88C(play); - play->transitionMode = 0; + play->transitionMode = TRANS_MODE_OFF; } - } else if (play->sceneLoadFlag != -0x14) { + } else if (play->transitionTrigger != TRANS_TRIGGER_END) { play->state.running = 0; if (gSaveContext.gameMode != 2) { SET_NEXT_GAMESTATE(&play->state, Play_Init, PlayState); @@ -974,7 +983,7 @@ void Play_Update(PlayState* play) { } else { play->transitionCtx.destroy(&play->transitionCtx); func_800BC88C(play); - play->transitionMode = 0; + play->transitionMode = TRANS_MODE_OFF; if (gTrnsnUnkState == 3) { TransitionUnk_Destroy(&sTrnsnUnk); gTrnsnUnkState = 0; @@ -984,7 +993,7 @@ void Play_Update(PlayState* play) { // Transition end for standard transitions GameInteractor_ExecuteOnTransitionEndHooks(play->sceneNum); } - play->sceneLoadFlag = 0; + play->transitionTrigger = TRANS_TRIGGER_OFF; } else { play->transitionCtx.update(&play->transitionCtx.data, R_UPDATE_RATE); } @@ -992,104 +1001,104 @@ void Play_Update(PlayState* play) { } switch (play->transitionMode) { - case 4: + case TRANS_MODE_FILL_WHITE_INIT: D_801614C8 = 0; play->envCtx.fillScreen = true; play->envCtx.screenFillColor[0] = 160; play->envCtx.screenFillColor[1] = 160; play->envCtx.screenFillColor[2] = 160; - if (play->sceneLoadFlag != -0x14) { + if (play->transitionTrigger != TRANS_TRIGGER_END) { play->envCtx.screenFillColor[3] = 0; - play->transitionMode = 5; + play->transitionMode = TRANS_MODE_FILL_IN; } else { play->envCtx.screenFillColor[3] = 255; - play->transitionMode = 6; + play->transitionMode = TRANS_MODE_FILL_OUT; } break; - case 5: + case TRANS_MODE_FILL_IN: play->envCtx.screenFillColor[3] = (D_801614C8 / 20.0f) * 255.0f; if (D_801614C8 >= 20 && 1) { play->state.running = 0; SET_NEXT_GAMESTATE(&play->state, Play_Init, PlayState); gSaveContext.entranceIndex = play->nextEntranceIndex; - play->sceneLoadFlag = 0; - play->transitionMode = 0; + play->transitionTrigger = TRANS_TRIGGER_OFF; + play->transitionMode = TRANS_MODE_OFF; } else { D_801614C8++; } break; - case 6: + case TRANS_MODE_FILL_OUT: play->envCtx.screenFillColor[3] = (1 - D_801614C8 / 20.0f) * 255.0f; if (D_801614C8 >= 20 && 1) { gTrnsnUnkState = 0; R_UPDATE_RATE = 3; - play->sceneLoadFlag = 0; - play->transitionMode = 0; + play->transitionTrigger = TRANS_TRIGGER_OFF; + play->transitionMode = TRANS_MODE_OFF; play->envCtx.fillScreen = false; } else { D_801614C8++; } break; - case 7: + case TRANS_MODE_FILL_BROWN_INIT: D_801614C8 = 0; play->envCtx.fillScreen = true; play->envCtx.screenFillColor[0] = 170; play->envCtx.screenFillColor[1] = 160; play->envCtx.screenFillColor[2] = 150; - if (play->sceneLoadFlag != -0x14) { + if (play->transitionTrigger != TRANS_TRIGGER_END) { play->envCtx.screenFillColor[3] = 0; - play->transitionMode = 5; + play->transitionMode = TRANS_MODE_FILL_IN; } else { play->envCtx.screenFillColor[3] = 255; - play->transitionMode = 6; + play->transitionMode = TRANS_MODE_FILL_OUT; } break; - case 10: - if (play->sceneLoadFlag != -0x14) { + case TRANS_MODE_INSTANT: + if (play->transitionTrigger != TRANS_TRIGGER_END) { play->state.running = 0; SET_NEXT_GAMESTATE(&play->state, Play_Init, PlayState); gSaveContext.entranceIndex = play->nextEntranceIndex; - play->sceneLoadFlag = 0; - play->transitionMode = 0; + play->transitionTrigger = TRANS_TRIGGER_OFF; + play->transitionMode = TRANS_MODE_OFF; } else { gTrnsnUnkState = 0; R_UPDATE_RATE = 3; - play->sceneLoadFlag = 0; - play->transitionMode = 0; + play->transitionTrigger = TRANS_TRIGGER_OFF; + play->transitionMode = TRANS_MODE_OFF; } break; - case 11: + case TRANS_MODE_INSTANCE_WAIT: if (gSaveContext.cutsceneTransitionControl != 0) { - play->transitionMode = 3; + play->transitionMode = TRANS_MODE_INSTANCE_RUNNING; } break; - case 12: - if (play->sceneLoadFlag != -0x14) { - play->envCtx.sandstormState = 1; - play->transitionMode = 13; + case TRANS_MODE_SANDSTORM_INIT: + if (play->transitionTrigger != TRANS_TRIGGER_END) { + play->envCtx.sandstormState = SANDSTORM_FILL; + play->transitionMode = TRANS_MODE_SANDSTORM; } else { - play->envCtx.sandstormState = 2; + play->envCtx.sandstormState = SANDSTORM_UNFILL; play->envCtx.sandstormPrimA = 255; play->envCtx.sandstormEnvA = 255; - play->transitionMode = 13; + play->transitionMode = TRANS_MODE_SANDSTORM; } break; - case 13: + case TRANS_MODE_SANDSTORM: Audio_PlaySoundGeneral(NA_SE_EV_SAND_STORM - SFX_FLAG, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); - if (play->sceneLoadFlag == -0x14) { + if (play->transitionTrigger == TRANS_TRIGGER_END) { if (play->envCtx.sandstormPrimA < 110) { gTrnsnUnkState = 0; R_UPDATE_RATE = 3; - play->sceneLoadFlag = 0; - play->transitionMode = 0; + play->transitionTrigger = TRANS_TRIGGER_OFF; + play->transitionMode = TRANS_MODE_OFF; // Transition end for sandstorm effect (delayed until effect is finished) GameInteractor_ExecuteOnTransitionEndHooks(play->sceneNum); @@ -1099,34 +1108,34 @@ void Play_Update(PlayState* play) { play->state.running = 0; SET_NEXT_GAMESTATE(&play->state, Play_Init, PlayState); gSaveContext.entranceIndex = play->nextEntranceIndex; - play->sceneLoadFlag = 0; - play->transitionMode = 0; + play->transitionTrigger = TRANS_TRIGGER_OFF; + play->transitionMode = TRANS_MODE_OFF; } } break; - case 14: - if (play->sceneLoadFlag == -0x14) { - play->envCtx.sandstormState = 4; + case TRANS_MODE_SANDSTORM_END_INIT: + if (play->transitionTrigger == TRANS_TRIGGER_END) { + play->envCtx.sandstormState = SANDSTORM_DISSIPATE; play->envCtx.sandstormPrimA = 255; play->envCtx.sandstormEnvA = 255; // "It's here!!!!!!!!!" LOG_STRING("来た!!!!!!!!!!!!!!!!!!!!!"); - play->transitionMode = 15; + play->transitionMode = TRANS_MODE_SANDSTORM_END; } else { - play->transitionMode = 12; + play->transitionMode = TRANS_MODE_SANDSTORM_INIT; } break; - case 15: + case TRANS_MODE_SANDSTORM_END: Audio_PlaySoundGeneral(NA_SE_EV_SAND_STORM - SFX_FLAG, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); - if (play->sceneLoadFlag == -0x14) { + if (play->transitionTrigger == TRANS_TRIGGER_END) { if (play->envCtx.sandstormPrimA <= 0) { gTrnsnUnkState = 0; R_UPDATE_RATE = 3; - play->sceneLoadFlag = 0; - play->transitionMode = 0; + play->transitionTrigger = TRANS_TRIGGER_OFF; + play->transitionMode = TRANS_MODE_OFF; // Transition end for sandstorm effect (delayed until effect is finished) GameInteractor_ExecuteOnTransitionEndHooks(play->sceneNum); @@ -1134,24 +1143,24 @@ void Play_Update(PlayState* play) { } break; - case 16: + case TRANS_MODE_CS_BLACK_FILL_INIT: D_801614C8 = 0; play->envCtx.fillScreen = true; play->envCtx.screenFillColor[0] = 0; play->envCtx.screenFillColor[1] = 0; play->envCtx.screenFillColor[2] = 0; play->envCtx.screenFillColor[3] = 255; - play->transitionMode = 17; + play->transitionMode = TRANS_MODE_CS_BLACK_FILL; break; - case 17: + case TRANS_MODE_CS_BLACK_FILL: if (gSaveContext.cutsceneTransitionControl != 0) { play->envCtx.screenFillColor[3] = gSaveContext.cutsceneTransitionControl; if (gSaveContext.cutsceneTransitionControl < 0x65) { gTrnsnUnkState = 0; R_UPDATE_RATE = 3; - play->sceneLoadFlag = 0; - play->transitionMode = 0; + play->transitionTrigger = TRANS_TRIGGER_OFF; + play->transitionMode = TRANS_MODE_OFF; } } break; @@ -1202,7 +1211,7 @@ void Play_Update(PlayState* play) { play->gameplayFrames++; // Gameplay stat tracking if (!gSaveContext.sohStats.gameComplete && - (!IS_BOSS_RUSH || (IS_BOSS_RUSH && !gSaveContext.isBossRushPaused))) { + (!IS_BOSS_RUSH || !gSaveContext.isBossRushPaused)) { gSaveContext.sohStats.playTimer++; gSaveContext.sohStats.sceneTimer++; gSaveContext.sohStats.roomTimer++; @@ -1539,8 +1548,8 @@ void Play_Draw(PlayState* play) { gSPDisplayList(OVERLAY_DISP++, gfxP); gSPGrayscale(gfxP++, false); - if ((play->transitionMode == 3) || (play->transitionMode == 11) || - (play->transitionCtx.transitionType >= 56)) { + if ((play->transitionMode == TRANS_MODE_INSTANCE_RUNNING) || (play->transitionMode == TRANS_MODE_INSTANCE_WAIT) || + (play->transitionCtx.transitionType >= TRANS_TYPE_MAX)) { View view; View_Init(&view, gfxCtx); @@ -1702,7 +1711,7 @@ void Play_Draw(PlayState* play) { } if ((HREG(80) != 10) || (HREG(88) != 0)) { - if (play->envCtx.sandstormState != 0) { + if (play->envCtx.sandstormState != SANDSTORM_OFF) { Environment_DrawSandstorm(play, play->envCtx.sandstormState); } } @@ -2246,27 +2255,27 @@ void Play_TriggerVoidOut(PlayState* play) { gSaveContext.respawn[RESPAWN_MODE_DOWN].tempSwchFlags = play->actorCtx.flags.tempSwch; gSaveContext.respawn[RESPAWN_MODE_DOWN].tempCollectFlags = play->actorCtx.flags.tempCollect; gSaveContext.respawnFlag = 1; - play->sceneLoadFlag = 0x14; + play->transitionTrigger = TRANS_TRIGGER_START; play->nextEntranceIndex = gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex; - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; } void Play_LoadToLastEntrance(PlayState* play) { gSaveContext.respawnFlag = -1; - play->sceneLoadFlag = 0x14; + play->transitionTrigger = TRANS_TRIGGER_START; 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; + play->nextEntranceIndex = ENTR_GANONS_TOWER_COLLAPSE_EXTERIOR_0; Item_Give(play, ITEM_SWORD_MASTER); - } else if ((gSaveContext.entranceIndex == 0x028A) || (gSaveContext.entranceIndex == 0x028E) || - (gSaveContext.entranceIndex == 0x0292) || (gSaveContext.entranceIndex == 0x0476)) { - play->nextEntranceIndex = 0x01F9; + } else if ((gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_11) || (gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_12) || + (gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_13) || (gSaveContext.entranceIndex == ENTR_HYRULE_FIELD_15)) { + play->nextEntranceIndex = ENTR_HYRULE_FIELD_6; } else { play->nextEntranceIndex = gSaveContext.entranceIndex; } - play->fadeTransition = 2; + play->transitionType = TRANS_TYPE_FADE_BLACK; } void Play_TriggerRespawn(PlayState* play) { @@ -2329,8 +2338,28 @@ void Play_PerformSave(PlayState* play) { if (play != NULL && gSaveContext.fileNum != 0xFF) { Play_SaveSceneFlags(play); gSaveContext.savedSceneNum = play->sceneNum; + + // Track values from temp B + uint8_t prevB = gSaveContext.equips.buttonItems[0]; + uint8_t prevStatus = gSaveContext.buttonStatus[0]; + + // Replicate the B button restore from minigames/epona that kaleido does + if (gSaveContext.equips.buttonItems[0] == ITEM_SLINGSHOT || + gSaveContext.equips.buttonItems[0] == ITEM_BOW || + gSaveContext.equips.buttonItems[0] == ITEM_BOMBCHU || + gSaveContext.equips.buttonItems[0] == ITEM_FISHING_POLE || + (gSaveContext.equips.buttonItems[0] == ITEM_NONE && !Flags_GetInfTable(INFTABLE_SWORDLESS))) { + + gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; + Interface_RandoRestoreSwordless(); + } + Save_SaveFile(); + // Restore temp B values back + gSaveContext.equips.buttonItems[0] = prevB; + gSaveContext.buttonStatus[0] = prevStatus; + uint8_t triforceHuntCompleted = IS_RANDO && gSaveContext.triforcePiecesCollected == Randomizer_GetSettingValue(RSK_TRIFORCE_HUNT_PIECES_REQUIRED) && diff --git a/soh/src/code/z_player_lib.c b/soh/src/code/z_player_lib.c index 820f2c672..b9a66c90e 100644 --- a/soh/src/code/z_player_lib.c +++ b/soh/src/code/z_player_lib.c @@ -573,7 +573,7 @@ uint8_t Player_IsCustomLinkModel() { } s32 Player_InBlockingCsMode(PlayState* play, Player* this) { - return (this->stateFlags1 & 0x20000080) || (this->csMode != 0) || (play->sceneLoadFlag == 0x14) || + return (this->stateFlags1 & 0x20000080) || (this->csAction != 0) || (play->transitionTrigger == TRANS_TRIGGER_START) || (this->stateFlags1 & 1) || (this->stateFlags3 & 0x80) || ((gSaveContext.magicState != MAGIC_STATE_IDLE) && (Player_ActionToMagicSpell(this, this->itemAction) >= 0)); } @@ -668,7 +668,7 @@ void func_8008EC70(Player* this) { } void Player_SetEquipmentData(PlayState* play, Player* this) { - if (this->csMode != 0x56) { + if (this->csAction != 0x56) { this->currentShield = SHIELD_EQUIP_TO_PLAYER(CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD)); this->currentTunic = TUNIC_EQUIP_TO_PLAYER(CUR_EQUIP_VALUE(EQUIP_TYPE_TUNIC)); this->currentBoots = BOOTS_EQUIP_TO_PLAYER(CUR_EQUIP_VALUE(EQUIP_TYPE_BOOTS)); @@ -743,6 +743,10 @@ s32 Player_IsBurningStickInRange(PlayState* play, Vec3f* pos, f32 xzRange, f32 y s32 Player_GetStrength(void) { s32 strengthUpgrade = CUR_UPG_VALUE(UPG_STRENGTH); + if (CVarGetInteger("gToggleStrength", 0) && CVarGetInteger("gStrengthDisabled", 0)) { + return PLAYER_STR_NONE; + } + if (CVarGetInteger("gTimelessEquipment", 0) || LINK_IS_ADULT) { return strengthUpgrade; } else if (strengthUpgrade != 0) { @@ -889,8 +893,8 @@ s32 Player_GetEnvironmentalHazard(PlayState* play) { if (play->roomCtx.curRoom.behaviorType2 == ROOM_BEHAVIOR_TYPE2_3) { // Room is hot var = 0; - } else if ((this->unk_840 > 80) && - ((this->currentBoots == PLAYER_BOOTS_IRON) || (this->unk_840 >= 300))) { // Deep underwater + } else if ((this->underwaterTimer > 80) && + ((this->currentBoots == PLAYER_BOOTS_IRON) || (this->underwaterTimer >= 300))) { // Deep underwater var = ((this->currentBoots == PLAYER_BOOTS_IRON) && (this->actor.bgCheckFlags & 1)) ? 1 : 3; } else if (this->stateFlags1 & 0x8000000) { // Swimming var = 2; diff --git a/soh/src/code/z_room.c b/soh/src/code/z_room.c index ccbc93d0d..772978f09 100644 --- a/soh/src/code/z_room.c +++ b/soh/src/code/z_room.c @@ -277,6 +277,11 @@ void func_8009638C(Gfx** displayList, void* source, void* tlut, u16 width, u16 h bg->b.imagePal = 0; bg->b.imageFlip = CVarGetInteger("gMirroredWorld", 0) ? G_BG_FLAG_FLIPS : 0; + // When an alt resource exists for the background, we need to unload the original asset + // to clear the cache so the alt asset will be loaded instead + // OTRTODO: If Alt loading over original cache is fixed, this line can most likely be removed + ResourceMgr_UnloadOriginalWhenAltExists((char*) source); + if (ResourceMgr_ResourceIsBackground((char*) source)) { char* blob = (char*) ResourceGetDataByName((char *) source); swapAndConvertJPEG(blob); diff --git a/soh/src/code/z_scene.c b/soh/src/code/z_scene.c index 2a0a5d5d7..1702dc3d9 100644 --- a/soh/src/code/z_scene.c +++ b/soh/src/code/z_scene.c @@ -360,7 +360,7 @@ void Scene_CommandTimeSettings(PlayState* play, SceneCmd* cmd) { play->envCtx.sunPos.z = (Math_CosS(((void)0, gSaveContext.dayTime) - 0x8000) * 20.0f) * 25.0f; if (((play->envCtx.timeIncrement == 0) && (gSaveContext.cutsceneIndex < 0xFFF0)) || - (gSaveContext.entranceIndex == 0x0604)) { + (gSaveContext.entranceIndex == ENTR_LAKE_HYLIA_8)) { gSaveContext.skyboxTime = ((void)0, gSaveContext.dayTime); if ((gSaveContext.skyboxTime >= 0x2AAC) && (gSaveContext.skyboxTime < 0x4555)) { gSaveContext.skyboxTime = 0x3556; diff --git a/soh/src/code/z_scene_table.c b/soh/src/code/z_scene_table.c index d1065533c..9cb9a31d7 100644 --- a/soh/src/code/z_scene_table.c +++ b/soh/src/code/z_scene_table.c @@ -26,793 +26,20 @@ #include "soh/mq_asset_hacks.h" #include "soh/Enhancements/randomizer/adult_trade_shuffle.h" -#define ENTRANCE(scene, spawn, continueBgm, displayTitleCard, fadeIn, fadeOut) \ - { \ - scene, spawn, \ - ((continueBgm & 1) << 15) | ((displayTitleCard & 1) << 14) | ((fadeIn & 0x7F) << 7) | (fadeOut & 0x7F) \ - } +// Entrance Table definition +#define DEFINE_ENTRANCE(_0, sceneId, spawn, continueBgm, displayTitleCard, endTransType, startTransType) \ + { sceneId, spawn, \ + (((continueBgm) ? ENTRANCE_INFO_CONTINUE_BGM_FLAG : 0) | \ + ((displayTitleCard) ? ENTRANCE_INFO_DISPLAY_TITLE_CARD_FLAG : 0) | \ + (((endTransType) << ENTRANCE_INFO_END_TRANS_TYPE_SHIFT) & ENTRANCE_INFO_END_TRANS_TYPE_MASK) | \ + (((startTransType) << ENTRANCE_INFO_START_TRANS_TYPE_SHIFT) & ENTRANCE_INFO_START_TRANS_TYPE_MASK)) }, EntranceInfo gEntranceTable[] = { - ENTRANCE(0x00, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x00, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x00, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x00, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x01, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x01, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x01, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x01, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x0B, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x0B, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x0B, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x0B, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x14, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x14, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x14, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x14, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x05, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x05, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x05, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x05, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x6E, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x6E, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x6E, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x6E, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x6C, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x6C, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x6C, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x6C, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x68, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x68, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x68, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x68, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x69, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x69, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x69, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x69, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x6D, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x6D, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x6D, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x6D, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x02, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x02, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x02, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x02, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x02, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x41, 0x00, 0, 1, 0x02, 0x26), - ENTRANCE(0x41, 0x00, 0, 1, 0x02, 0x26), ENTRANCE(0x41, 0x00, 0, 1, 0x02, 0x26), - ENTRANCE(0x41, 0x00, 0, 1, 0x02, 0x26), ENTRANCE(0x41, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x41, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x1B, 0x00, 1, 1, 0x03, 0x03), - ENTRANCE(0x1C, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x1D, 0x00, 1, 1, 0x03, 0x03), - ENTRANCE(0x1D, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x07, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x07, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x07, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x07, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x42, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x42, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x42, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x42, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x3E, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x38, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x38, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x38, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x38, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x6A, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x6A, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x6A, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x6A, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x40, 0x00, 0, 1, 0x02, 0x26), - ENTRANCE(0x40, 0x00, 0, 1, 0x02, 0x26), ENTRANCE(0x40, 0x00, 0, 1, 0x02, 0x26), - ENTRANCE(0x40, 0x00, 0, 1, 0x02, 0x26), ENTRANCE(0x4C, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x4C, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x4C, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x4C, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x00, 0, 1, 0x0B, 0x0B), ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x10, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x10, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x10, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x10, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x1E, 0x03, 1, 1, 0x03, 0x03), - ENTRANCE(0x1F, 0x03, 1, 1, 0x02, 0x02), ENTRANCE(0x1E, 0x03, 1, 1, 0x02, 0x02), - ENTRANCE(0x1F, 0x03, 1, 1, 0x02, 0x02), ENTRANCE(0x44, 0x00, 0, 1, 0x07, 0x07), - ENTRANCE(0x44, 0x00, 0, 1, 0x07, 0x07), ENTRANCE(0x44, 0x00, 0, 1, 0x07, 0x07), - ENTRANCE(0x44, 0x00, 0, 1, 0x07, 0x07), ENTRANCE(0x44, 0x00, 0, 1, 0x0D, 0x02), - ENTRANCE(0x44, 0x00, 0, 1, 0x0D, 0x02), ENTRANCE(0x44, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x4E, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x4E, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x4E, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x4E, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x6B, 0x00, 0, 1, 0x22, 0x22), ENTRANCE(0x6B, 0x00, 0, 1, 0x22, 0x22), - ENTRANCE(0x6B, 0x00, 0, 1, 0x22, 0x22), ENTRANCE(0x6B, 0x00, 0, 1, 0x22, 0x22), - ENTRANCE(0x45, 0x00, 0, 1, 0x22, 0x04), ENTRANCE(0x46, 0x00, 0, 1, 0x22, 0x04), - ENTRANCE(0x45, 0x00, 0, 1, 0x22, 0x04), ENTRANCE(0x46, 0x00, 0, 1, 0x22, 0x04), - ENTRANCE(0x4D, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x4D, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x4D, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x4D, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x06, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x06, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x06, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x06, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x06, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x06, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x09, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x09, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x09, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x09, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x09, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x17, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x17, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x17, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x17, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x17, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x17, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x17, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x65, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x65, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x65, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x65, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x08, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x08, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x08, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x08, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x27, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x27, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x27, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x27, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x47, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x47, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x47, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x47, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x47, 0x00, 0, 1, 0x0A, 0x0A), ENTRANCE(0x47, 0x00, 0, 1, 0x02, 0x0A), - ENTRANCE(0x47, 0x00, 1, 1, 0x0A, 0x0A), ENTRANCE(0x47, 0x00, 0, 1, 0x0B, 0x0B), - ENTRANCE(0x47, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x47, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x47, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x47, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x47, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x1E, 0x00, 1, 1, 0x03, 0x03), - ENTRANCE(0x1F, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x1E, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x1F, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x20, 0x00, 1, 1, 0x03, 0x03), - ENTRANCE(0x21, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x22, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x22, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x20, 0x00, 0, 1, 0x08, 0x08), - ENTRANCE(0x67, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x2C, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x2C, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x2C, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x2C, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x34, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x34, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x34, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x34, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x34, 0x00, 0, 1, 0x04, 0x02), - ENTRANCE(0x34, 0x00, 0, 1, 0x10, 0x10), ENTRANCE(0x2D, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x2D, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x2D, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x2D, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x01, 0x01, 1, 0, 0x02, 0x02), - ENTRANCE(0x01, 0x01, 1, 0, 0x02, 0x02), ENTRANCE(0x01, 0x01, 1, 0, 0x02, 0x02), - ENTRANCE(0x01, 0x01, 1, 0, 0x02, 0x02), ENTRANCE(0x26, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x26, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x26, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x26, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x51, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x51, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x51, 0x00, 0, 1, 0x04, 0x02), - ENTRANCE(0x51, 0x00, 0, 1, 0x21, 0x21), ENTRANCE(0x51, 0x00, 0, 1, 0x21, 0x21), - ENTRANCE(0x51, 0x00, 0, 1, 0x23, 0x23), ENTRANCE(0x51, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x51, 0x00, 0, 1, 0x23, 0x23), - ENTRANCE(0x51, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x51, 0x00, 0, 1, 0x29, 0x29), - ENTRANCE(0x51, 0x00, 1, 1, 0x03, 0x03), ENTRANCE(0x52, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x52, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x52, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x52, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x52, 0x00, 0, 1, 0x26, 0x26), - ENTRANCE(0x52, 0x00, 0, 1, 0x21, 0x21), ENTRANCE(0x52, 0x00, 1, 1, 0x21, 0x21), - ENTRANCE(0x52, 0x00, 0, 1, 0x21, 0x21), ENTRANCE(0x52, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x53, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x53, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x53, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x53, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x53, 0x00, 0, 1, 0x04, 0x02), ENTRANCE(0x53, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x54, 0x00, 1, 1, 0x03, 0x03), ENTRANCE(0x54, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x54, 0x00, 1, 1, 0x03, 0x03), ENTRANCE(0x54, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x55, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x55, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x55, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x55, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x55, 0x00, 1, 1, 0x0A, 0x0A), ENTRANCE(0x55, 0x00, 0, 1, 0x0A, 0x0A), - ENTRANCE(0x55, 0x00, 1, 1, 0x0A, 0x0A), ENTRANCE(0x55, 0x00, 0, 1, 0x0D, 0x0A), - ENTRANCE(0x55, 0x00, 0, 1, 0x0A, 0x0A), ENTRANCE(0x55, 0x00, 0, 1, 0x0A, 0x0A), - ENTRANCE(0x55, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x55, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x55, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x55, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x56, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x56, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x56, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x56, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x56, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x56, 0x00, 0, 1, 0x00, 0x00), - ENTRANCE(0x57, 0x00, 1, 1, 0x03, 0x03), ENTRANCE(0x57, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x57, 0x00, 1, 1, 0x03, 0x03), ENTRANCE(0x57, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x57, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x57, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x58, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x58, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x58, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x58, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x58, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x58, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x59, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x59, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x59, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x59, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x59, 0x00, 0, 1, 0x0D, 0x00), ENTRANCE(0x59, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x59, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x59, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x59, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x5A, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x5A, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x5A, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x5A, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x5A, 0x00, 1, 1, 0x0C, 0x0A), - ENTRANCE(0x5A, 0x00, 1, 1, 0x0A, 0x0A), ENTRANCE(0x5A, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x5B, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x5B, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x5B, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x5B, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x5B, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x5C, 0x00, 1, 1, 0x0F, 0x0F), - ENTRANCE(0x5C, 0x00, 1, 1, 0x0F, 0x0F), ENTRANCE(0x5C, 0x00, 1, 1, 0x0F, 0x0F), - ENTRANCE(0x5C, 0x00, 1, 1, 0x0F, 0x0F), ENTRANCE(0x5C, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x5C, 0x00, 1, 1, 0x0F, 0x0F), ENTRANCE(0x5D, 0x00, 1, 1, 0x03, 0x03), - ENTRANCE(0x5D, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x00, 1, 1, 0x03, 0x03), - ENTRANCE(0x5D, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x00, 1, 1, 0x21, 0x21), - ENTRANCE(0x5D, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x5E, 0x00, 1, 1, 0x0E, 0x0E), ENTRANCE(0x5E, 0x00, 1, 1, 0x0E, 0x0E), - ENTRANCE(0x5E, 0x00, 1, 1, 0x0E, 0x0E), ENTRANCE(0x5E, 0x00, 1, 1, 0x0E, 0x0E), - ENTRANCE(0x0E, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x0E, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x5F, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x5F, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x64, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x64, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x64, 0x00, 0, 1, 0x04, 0x02), ENTRANCE(0x60, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x60, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x60, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x60, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x60, 0x00, 1, 1, 0x0A, 0x0A), - ENTRANCE(0x60, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x60, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x60, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x60, 0x00, 1, 1, 0x03, 0x03), - ENTRANCE(0x60, 0x00, 1, 1, 0x03, 0x03), ENTRANCE(0x61, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x61, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x61, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x61, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x61, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x61, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x62, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x62, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x62, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x62, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x62, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x62, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x58, 0x03, 0, 1, 0x00, 0x00), - ENTRANCE(0x58, 0x03, 0, 1, 0x00, 0x00), ENTRANCE(0x58, 0x03, 0, 1, 0x00, 0x00), - ENTRANCE(0x58, 0x03, 0, 1, 0x00, 0x00), ENTRANCE(0x63, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x63, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x63, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x63, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x63, 0x00, 0, 1, 0x20, 0x20), - ENTRANCE(0x63, 0x00, 0, 1, 0x2A, 0x2A), ENTRANCE(0x63, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x63, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x63, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x63, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x63, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x63, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x63, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x63, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x04, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x04, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x04, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x04, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x03, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x03, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x03, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x03, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x42, 0x01, 0, 1, 0x04, 0x20), - ENTRANCE(0x42, 0x01, 0, 1, 0x04, 0x20), ENTRANCE(0x42, 0x01, 0, 1, 0x04, 0x20), - ENTRANCE(0x42, 0x01, 0, 1, 0x04, 0x20), ENTRANCE(0x23, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x24, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x25, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x25, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x04, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x04, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x04, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x04, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x0E, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x0E, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x51, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x51, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x51, 0x02, 1, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x02, 1, 1, 0x02, 0x02), ENTRANCE(0x51, 0x02, 1, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x02, 1, 1, 0x02, 0x02), ENTRANCE(0x51, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x51, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x51, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x51, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x51, 0x04, 1, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x04, 1, 1, 0x02, 0x02), ENTRANCE(0x51, 0x04, 1, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x04, 1, 1, 0x02, 0x02), ENTRANCE(0x51, 0x05, 0, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x05, 0, 1, 0x02, 0x02), ENTRANCE(0x51, 0x05, 0, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x05, 0, 1, 0x02, 0x02), ENTRANCE(0x52, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x52, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x52, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x52, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x52, 0x02, 0, 1, 0x03, 0x03), - ENTRANCE(0x52, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x52, 0x02, 0, 1, 0x03, 0x03), - ENTRANCE(0x52, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x54, 0x01, 1, 1, 0x03, 0x03), - ENTRANCE(0x54, 0x01, 1, 1, 0x03, 0x03), ENTRANCE(0x54, 0x01, 1, 1, 0x03, 0x03), - ENTRANCE(0x54, 0x01, 1, 1, 0x03, 0x03), ENTRANCE(0x54, 0x02, 0, 1, 0x03, 0x03), - ENTRANCE(0x54, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x54, 0x02, 0, 1, 0x03, 0x03), - ENTRANCE(0x54, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x58, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x58, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x58, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x58, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x5A, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x5A, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x5A, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x5A, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x5B, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x5B, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x5B, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x5B, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x5B, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x5B, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x5B, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x5B, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x5B, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x5B, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x5B, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x5B, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x02, 1, 1, 0x02, 0x02), - ENTRANCE(0x0E, 0x02, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x02, 1, 1, 0x02, 0x02), - ENTRANCE(0x0E, 0x02, 1, 1, 0x02, 0x02), ENTRANCE(0x60, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x60, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x60, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x60, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x60, 0x02, 0, 1, 0x03, 0x03), - ENTRANCE(0x60, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x60, 0x02, 0, 1, 0x03, 0x03), - ENTRANCE(0x60, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x62, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x62, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x62, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x62, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x38, 0x01, 0, 1, 0x04, 0x20), - ENTRANCE(0x38, 0x01, 0, 1, 0x04, 0x20), ENTRANCE(0x38, 0x01, 0, 1, 0x04, 0x20), - ENTRANCE(0x38, 0x01, 0, 1, 0x04, 0x20), ENTRANCE(0x1A, 0x05, 1, 1, 0x02, 0x02), - ENTRANCE(0x1A, 0x05, 1, 1, 0x02, 0x02), ENTRANCE(0x1A, 0x05, 1, 1, 0x02, 0x02), - ENTRANCE(0x1A, 0x05, 1, 1, 0x02, 0x02), ENTRANCE(0x20, 0x08, 0, 1, 0x04, 0x02), - ENTRANCE(0x21, 0x08, 0, 1, 0x04, 0x02), ENTRANCE(0x22, 0x08, 0, 1, 0x04, 0x02), - ENTRANCE(0x22, 0x08, 0, 1, 0x04, 0x02), ENTRANCE(0x20, 0x09, 0, 1, 0x04, 0x02), - ENTRANCE(0x21, 0x09, 0, 1, 0x04, 0x02), ENTRANCE(0x22, 0x09, 0, 1, 0x04, 0x02), - ENTRANCE(0x22, 0x09, 0, 1, 0x04, 0x02), ENTRANCE(0x20, 0x0A, 0, 1, 0x04, 0x02), - ENTRANCE(0x21, 0x0A, 0, 1, 0x04, 0x02), ENTRANCE(0x22, 0x0A, 0, 1, 0x04, 0x02), - ENTRANCE(0x22, 0x0A, 0, 1, 0x04, 0x02), ENTRANCE(0x54, 0x03, 1, 1, 0x03, 0x03), - ENTRANCE(0x54, 0x03, 1, 1, 0x02, 0x02), ENTRANCE(0x54, 0x03, 1, 1, 0x03, 0x03), - ENTRANCE(0x54, 0x03, 1, 1, 0x02, 0x02), ENTRANCE(0x54, 0x04, 0, 1, 0x2C, 0x2C), - ENTRANCE(0x54, 0x04, 0, 1, 0x2C, 0x2C), ENTRANCE(0x54, 0x04, 0, 1, 0x2C, 0x2C), - ENTRANCE(0x54, 0x04, 0, 1, 0x2C, 0x2C), ENTRANCE(0x5C, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x5C, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x5C, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x5C, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x5C, 0x02, 0, 0, 0x03, 0x03), - ENTRANCE(0x5C, 0x02, 0, 0, 0x02, 0x02), ENTRANCE(0x5C, 0x02, 0, 0, 0x03, 0x03), - ENTRANCE(0x5C, 0x02, 0, 0, 0x02, 0x02), ENTRANCE(0x5C, 0x03, 0, 0, 0x03, 0x03), - ENTRANCE(0x5C, 0x03, 0, 0, 0x02, 0x02), ENTRANCE(0x5C, 0x03, 0, 0, 0x03, 0x03), - ENTRANCE(0x5C, 0x03, 0, 0, 0x02, 0x02), ENTRANCE(0x5C, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x5C, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x5C, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x5C, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x5C, 0x05, 0, 1, 0x03, 0x03), - ENTRANCE(0x5C, 0x05, 0, 1, 0x02, 0x02), ENTRANCE(0x5C, 0x05, 0, 1, 0x03, 0x03), - ENTRANCE(0x5C, 0x05, 0, 1, 0x02, 0x02), ENTRANCE(0x5C, 0x06, 1, 0, 0x0F, 0x0F), - ENTRANCE(0x5C, 0x06, 1, 0, 0x0F, 0x0F), ENTRANCE(0x5C, 0x06, 1, 0, 0x0F, 0x0F), - ENTRANCE(0x5C, 0x06, 1, 0, 0x0F, 0x0F), ENTRANCE(0x51, 0x06, 0, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x06, 0, 1, 0x02, 0x02), ENTRANCE(0x51, 0x06, 0, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x06, 0, 1, 0x02, 0x02), ENTRANCE(0x51, 0x07, 0, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x07, 0, 1, 0x02, 0x02), ENTRANCE(0x51, 0x07, 0, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x07, 0, 1, 0x02, 0x02), ENTRANCE(0x52, 0x03, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x03, 0, 1, 0x04, 0x02), ENTRANCE(0x52, 0x03, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x03, 0, 1, 0x04, 0x02), ENTRANCE(0x53, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x53, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x53, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x53, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x55, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x55, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x55, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x55, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x55, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x55, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x55, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x55, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x55, 0x03, 0, 1, 0x04, 0x04), - ENTRANCE(0x55, 0x03, 0, 1, 0x04, 0x04), ENTRANCE(0x55, 0x03, 0, 1, 0x04, 0x04), - ENTRANCE(0x55, 0x03, 0, 1, 0x04, 0x04), ENTRANCE(0x56, 0x01, 0, 1, 0x12, 0x12), - ENTRANCE(0x56, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x56, 0x01, 0, 1, 0x12, 0x12), - ENTRANCE(0x56, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x57, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x57, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x57, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x57, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x57, 0x02, 0, 1, 0x13, 0x13), - ENTRANCE(0x57, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x57, 0x02, 0, 1, 0x13, 0x13), - ENTRANCE(0x57, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x59, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x59, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x59, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x59, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x59, 0x02, 0, 1, 0x03, 0x03), - ENTRANCE(0x59, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x59, 0x02, 0, 1, 0x03, 0x03), - ENTRANCE(0x59, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x5A, 0x02, 1, 1, 0x03, 0x03), - ENTRANCE(0x5A, 0x02, 1, 1, 0x02, 0x02), ENTRANCE(0x5A, 0x02, 1, 1, 0x03, 0x03), - ENTRANCE(0x5A, 0x02, 1, 1, 0x02, 0x02), ENTRANCE(0x5A, 0x03, 1, 1, 0x03, 0x03), - ENTRANCE(0x5A, 0x03, 1, 1, 0x02, 0x02), ENTRANCE(0x5A, 0x03, 1, 1, 0x03, 0x03), - ENTRANCE(0x5A, 0x03, 1, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x5D, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x5D, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x02, 0, 1, 0x03, 0x03), - ENTRANCE(0x5D, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x02, 0, 1, 0x03, 0x03), - ENTRANCE(0x5D, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x03, 0, 1, 0x03, 0x03), - ENTRANCE(0x5D, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x03, 0, 1, 0x03, 0x03), - ENTRANCE(0x5D, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x5F, 0x01, 0, 1, 0x03, 0x03), - ENTRANCE(0x5F, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x64, 0x01, 0, 1, 0x05, 0x05), - ENTRANCE(0x64, 0x01, 0, 1, 0x05, 0x05), ENTRANCE(0x5F, 0x01, 0, 1, 0x00, 0x00), - ENTRANCE(0x60, 0x03, 0, 1, 0x03, 0x03), ENTRANCE(0x60, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x60, 0x03, 0, 1, 0x03, 0x03), ENTRANCE(0x60, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x61, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x61, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x61, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x61, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x61, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x61, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x61, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x61, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x03, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x03, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x03, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x03, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x00, 0x01, 1, 0, 0x02, 0x02), ENTRANCE(0x00, 0x01, 1, 0, 0x02, 0x02), - ENTRANCE(0x00, 0x01, 1, 0, 0x02, 0x02), ENTRANCE(0x00, 0x01, 1, 0, 0x02, 0x02), - ENTRANCE(0x0E, 0x03, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x03, 1, 1, 0x02, 0x02), - ENTRANCE(0x0E, 0x03, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x03, 1, 1, 0x02, 0x02), - ENTRANCE(0x20, 0x01, 0, 1, 0x03, 0x03), ENTRANCE(0x21, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x22, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x22, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x20, 0x02, 0, 1, 0x03, 0x03), ENTRANCE(0x21, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x22, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x22, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x20, 0x03, 1, 1, 0x03, 0x03), ENTRANCE(0x21, 0x03, 1, 1, 0x02, 0x02), - ENTRANCE(0x22, 0x03, 1, 1, 0x02, 0x02), ENTRANCE(0x22, 0x03, 1, 1, 0x02, 0x02), - ENTRANCE(0x55, 0x04, 0, 0, 0x04, 0x04), ENTRANCE(0x55, 0x04, 0, 0, 0x04, 0x04), - ENTRANCE(0x55, 0x04, 0, 0, 0x04, 0x04), ENTRANCE(0x55, 0x04, 0, 0, 0x04, 0x04), - ENTRANCE(0x55, 0x05, 0, 0, 0x04, 0x04), ENTRANCE(0x55, 0x05, 0, 0, 0x04, 0x04), - ENTRANCE(0x55, 0x05, 0, 0, 0x04, 0x04), ENTRANCE(0x55, 0x05, 0, 0, 0x04, 0x04), - ENTRANCE(0x1B, 0x02, 0, 0, 0x02, 0x02), ENTRANCE(0x1C, 0x02, 0, 0, 0x02, 0x02), - ENTRANCE(0x1D, 0x02, 0, 0, 0x02, 0x02), ENTRANCE(0x1D, 0x02, 0, 0, 0x02, 0x02), - ENTRANCE(0x34, 0x01, 0, 1, 0x04, 0x04), ENTRANCE(0x34, 0x01, 0, 1, 0x04, 0x04), - ENTRANCE(0x34, 0x01, 0, 1, 0x04, 0x04), ENTRANCE(0x34, 0x01, 0, 1, 0x04, 0x04), - ENTRANCE(0x1B, 0x01, 0, 1, 0x03, 0x03), ENTRANCE(0x1C, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x1D, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x1D, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x51, 0x08, 1, 1, 0x03, 0x03), ENTRANCE(0x51, 0x08, 1, 1, 0x02, 0x02), - ENTRANCE(0x51, 0x08, 1, 1, 0x03, 0x03), ENTRANCE(0x51, 0x08, 1, 1, 0x02, 0x02), - ENTRANCE(0x51, 0x09, 0, 1, 0x03, 0x03), ENTRANCE(0x51, 0x09, 0, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x09, 0, 1, 0x03, 0x03), ENTRANCE(0x51, 0x09, 0, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x0A, 0, 1, 0x03, 0x03), ENTRANCE(0x51, 0x0A, 0, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x0A, 0, 1, 0x03, 0x03), ENTRANCE(0x51, 0x0A, 0, 1, 0x03, 0x03), - ENTRANCE(0x55, 0x06, 0, 1, 0x02, 0x02), ENTRANCE(0x55, 0x06, 0, 1, 0x02, 0x02), - ENTRANCE(0x55, 0x06, 0, 1, 0x02, 0x02), ENTRANCE(0x55, 0x06, 0, 1, 0x02, 0x02), - ENTRANCE(0x51, 0x0B, 0, 1, 0x05, 0x05), ENTRANCE(0x51, 0x0B, 0, 1, 0x04, 0x02), - ENTRANCE(0x51, 0x0B, 0, 1, 0x05, 0x05), ENTRANCE(0x51, 0x0B, 0, 1, 0x04, 0x02), - ENTRANCE(0x51, 0x0C, 0, 1, 0x05, 0x05), ENTRANCE(0x51, 0x0C, 0, 1, 0x04, 0x02), - ENTRANCE(0x51, 0x0C, 0, 1, 0x05, 0x05), ENTRANCE(0x51, 0x0C, 0, 1, 0x04, 0x02), - ENTRANCE(0x51, 0x0D, 0, 1, 0x05, 0x05), ENTRANCE(0x51, 0x0D, 0, 1, 0x04, 0x02), - ENTRANCE(0x51, 0x0D, 0, 1, 0x05, 0x05), ENTRANCE(0x51, 0x0D, 0, 1, 0x04, 0x02), - ENTRANCE(0x45, 0x01, 0, 1, 0x03, 0x03), ENTRANCE(0x46, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x45, 0x01, 0, 1, 0x03, 0x03), ENTRANCE(0x46, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x1E, 0x01, 1, 1, 0x03, 0x03), ENTRANCE(0x1F, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x1E, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x1F, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x20, 0x04, 1, 1, 0x03, 0x03), ENTRANCE(0x21, 0x04, 1, 1, 0x02, 0x02), - ENTRANCE(0x22, 0x04, 1, 1, 0x02, 0x02), ENTRANCE(0x22, 0x04, 1, 1, 0x02, 0x02), - ENTRANCE(0x20, 0x05, 0, 1, 0x04, 0x02), ENTRANCE(0x21, 0x05, 0, 1, 0x04, 0x02), - ENTRANCE(0x22, 0x05, 0, 1, 0x04, 0x02), ENTRANCE(0x22, 0x05, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x52, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x52, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x52, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x04, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x04, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x63, 0x01, 0, 0, 0x03, 0x03), ENTRANCE(0x63, 0x01, 0, 0, 0x02, 0x02), - ENTRANCE(0x63, 0x01, 0, 0, 0x03, 0x03), ENTRANCE(0x63, 0x01, 0, 0, 0x02, 0x02), - ENTRANCE(0x07, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x07, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x07, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x07, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x07, 0x02, 1, 1, 0x02, 0x02), ENTRANCE(0x07, 0x02, 1, 1, 0x02, 0x02), - ENTRANCE(0x07, 0x02, 1, 1, 0x02, 0x02), ENTRANCE(0x07, 0x02, 1, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x05, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x05, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x05, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x05, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x06, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x06, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x06, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x06, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x07, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x07, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x07, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x07, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x08, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x08, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x08, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x08, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x02, 0, 1, 0x0A, 0x0A), ENTRANCE(0x43, 0x02, 0, 1, 0x0A, 0x0A), - ENTRANCE(0x43, 0x02, 0, 1, 0x0A, 0x0A), ENTRANCE(0x43, 0x02, 0, 1, 0x0A, 0x0A), - ENTRANCE(0x44, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x44, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x44, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x44, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x09, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x09, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x09, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x09, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x0A, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x0A, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x0A, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x0A, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x0B, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x0B, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x0B, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x0B, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x0C, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x0C, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x0C, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x0C, 0, 1, 0x02, 0x02), - ENTRANCE(0x63, 0x02, 0, 1, 0x03, 0x03), ENTRANCE(0x63, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x63, 0x02, 0, 1, 0x03, 0x03), ENTRANCE(0x63, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x63, 0x03, 0, 1, 0x03, 0x03), ENTRANCE(0x63, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x63, 0x03, 0, 1, 0x03, 0x03), ENTRANCE(0x63, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x42, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x42, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x42, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x42, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x56, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x47, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x42, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x42, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x42, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x42, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x42, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x06, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x06, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x06, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x06, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x36, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x36, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x36, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x36, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x2A, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x2A, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x2A, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x2A, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x13, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x13, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x13, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x13, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x15, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x15, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x15, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x15, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x57, 0x06, 0, 1, 0x04, 0x02), - ENTRANCE(0x57, 0x06, 0, 1, 0x04, 0x02), ENTRANCE(0x57, 0x06, 0, 1, 0x04, 0x02), - ENTRANCE(0x57, 0x06, 0, 1, 0x04, 0x02), ENTRANCE(0x3A, 0x00, 0, 1, 0x02, 0x20), - ENTRANCE(0x3A, 0x00, 0, 1, 0x02, 0x20), ENTRANCE(0x3A, 0x00, 0, 1, 0x02, 0x20), - ENTRANCE(0x3A, 0x00, 0, 1, 0x02, 0x20), ENTRANCE(0x51, 0x0E, 1, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x0E, 1, 1, 0x03, 0x03), ENTRANCE(0x51, 0x0E, 1, 1, 0x03, 0x03), - ENTRANCE(0x51, 0x0E, 1, 1, 0x03, 0x03), ENTRANCE(0x3B, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x3B, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x3B, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x3B, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x3B, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x3B, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x3B, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x3F, 0x00, 0, 1, 0x02, 0x26), ENTRANCE(0x3F, 0x00, 0, 1, 0x02, 0x26), - ENTRANCE(0x3F, 0x00, 0, 1, 0x02, 0x26), ENTRANCE(0x3F, 0x00, 0, 1, 0x02, 0x26), - ENTRANCE(0x43, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x58, 0x04, 0, 1, 0x2C, 0x2C), ENTRANCE(0x58, 0x04, 0, 1, 0x2C, 0x2C), - ENTRANCE(0x58, 0x04, 0, 1, 0x2C, 0x2C), ENTRANCE(0x58, 0x04, 0, 1, 0x2C, 0x2C), - ENTRANCE(0x1A, 0x02, 1, 1, 0x02, 0x02), ENTRANCE(0x1A, 0x02, 1, 1, 0x02, 0x02), - ENTRANCE(0x1A, 0x02, 1, 1, 0x02, 0x02), ENTRANCE(0x1A, 0x02, 1, 1, 0x02, 0x02), - ENTRANCE(0x1A, 0x03, 1, 1, 0x02, 0x02), ENTRANCE(0x1A, 0x03, 1, 1, 0x02, 0x02), - ENTRANCE(0x1A, 0x03, 1, 1, 0x02, 0x02), ENTRANCE(0x1A, 0x03, 1, 1, 0x02, 0x02), - ENTRANCE(0x1A, 0x04, 1, 1, 0x02, 0x02), ENTRANCE(0x1A, 0x04, 1, 1, 0x02, 0x02), - ENTRANCE(0x1A, 0x04, 1, 1, 0x02, 0x02), ENTRANCE(0x1A, 0x04, 1, 1, 0x02, 0x02), - ENTRANCE(0x55, 0x07, 0, 0, 0x04, 0x04), ENTRANCE(0x55, 0x07, 0, 0, 0x04, 0x04), - ENTRANCE(0x55, 0x07, 0, 0, 0x04, 0x04), ENTRANCE(0x55, 0x07, 0, 0, 0x04, 0x04), - ENTRANCE(0x55, 0x08, 0, 0, 0x04, 0x04), ENTRANCE(0x55, 0x08, 0, 0, 0x04, 0x04), - ENTRANCE(0x55, 0x08, 0, 0, 0x04, 0x04), ENTRANCE(0x55, 0x08, 0, 0, 0x04, 0x04), - ENTRANCE(0x5F, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x5F, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x64, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x64, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x5F, 0x02, 0, 1, 0x00, 0x00), ENTRANCE(0x52, 0x05, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x05, 0, 1, 0x04, 0x02), ENTRANCE(0x52, 0x05, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x05, 0, 1, 0x04, 0x02), ENTRANCE(0x52, 0x06, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x06, 0, 1, 0x04, 0x02), ENTRANCE(0x52, 0x06, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x06, 0, 1, 0x04, 0x02), ENTRANCE(0x52, 0x07, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x07, 0, 1, 0x04, 0x02), ENTRANCE(0x52, 0x07, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x07, 0, 1, 0x04, 0x02), ENTRANCE(0x52, 0x08, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x08, 0, 1, 0x04, 0x02), ENTRANCE(0x52, 0x08, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x08, 0, 1, 0x04, 0x02), ENTRANCE(0x53, 0x02, 0, 1, 0x04, 0x02), - ENTRANCE(0x53, 0x02, 0, 1, 0x04, 0x02), ENTRANCE(0x53, 0x02, 0, 1, 0x04, 0x02), - ENTRANCE(0x53, 0x02, 0, 1, 0x04, 0x02), ENTRANCE(0x53, 0x03, 0, 1, 0x03, 0x03), - ENTRANCE(0x53, 0x03, 0, 1, 0x03, 0x03), ENTRANCE(0x53, 0x03, 0, 1, 0x03, 0x03), - ENTRANCE(0x53, 0x03, 0, 1, 0x03, 0x03), ENTRANCE(0x53, 0x04, 0, 1, 0x03, 0x03), - ENTRANCE(0x53, 0x04, 0, 1, 0x03, 0x03), ENTRANCE(0x53, 0x04, 0, 1, 0x03, 0x03), - ENTRANCE(0x53, 0x04, 0, 1, 0x03, 0x03), ENTRANCE(0x53, 0x05, 0, 1, 0x03, 0x03), - ENTRANCE(0x53, 0x05, 0, 1, 0x03, 0x03), ENTRANCE(0x53, 0x05, 0, 1, 0x03, 0x03), - ENTRANCE(0x53, 0x05, 0, 1, 0x03, 0x03), ENTRANCE(0x5E, 0x01, 1, 1, 0x0E, 0x0E), - ENTRANCE(0x5E, 0x01, 1, 1, 0x0E, 0x0E), ENTRANCE(0x5E, 0x01, 1, 1, 0x0E, 0x0E), - ENTRANCE(0x5E, 0x01, 1, 1, 0x0E, 0x0E), ENTRANCE(0x5E, 0x02, 0, 1, 0x0E, 0x0E), - ENTRANCE(0x5E, 0x02, 0, 1, 0x0E, 0x0E), ENTRANCE(0x5E, 0x02, 0, 1, 0x0E, 0x0E), - ENTRANCE(0x5E, 0x02, 0, 1, 0x0E, 0x0E), ENTRANCE(0x3C, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x3C, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x3C, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x3C, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x3D, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x3D, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x3D, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x3D, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x3D, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x3D, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x3D, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x63, 0x04, 0, 1, 0x04, 0x02), ENTRANCE(0x63, 0x04, 0, 1, 0x04, 0x02), - ENTRANCE(0x63, 0x04, 0, 1, 0x04, 0x02), ENTRANCE(0x63, 0x04, 0, 1, 0x04, 0x02), - ENTRANCE(0x2E, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x2E, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x2E, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x2E, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x2F, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x2F, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x2F, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x2F, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x30, 0x00, 0, 0, 0x04, 0x20), ENTRANCE(0x30, 0x00, 0, 0, 0x04, 0x20), - ENTRANCE(0x30, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x30, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x31, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x31, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x31, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x31, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x1E, 0x04, 0, 1, 0x04, 0x02), ENTRANCE(0x1F, 0x04, 0, 1, 0x04, 0x02), - ENTRANCE(0x1E, 0x04, 0, 1, 0x04, 0x02), ENTRANCE(0x1F, 0x04, 0, 1, 0x04, 0x02), - ENTRANCE(0x32, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x32, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x32, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x32, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x59, 0x05, 0, 1, 0x03, 0x03), ENTRANCE(0x59, 0x05, 0, 1, 0x03, 0x03), - ENTRANCE(0x59, 0x05, 0, 1, 0x03, 0x03), ENTRANCE(0x59, 0x05, 0, 1, 0x03, 0x03), - ENTRANCE(0x35, 0x00, 0, 1, 0x04, 0x02), ENTRANCE(0x35, 0x00, 0, 1, 0x04, 0x02), - ENTRANCE(0x35, 0x00, 0, 1, 0x04, 0x02), ENTRANCE(0x35, 0x00, 0, 1, 0x04, 0x02), - ENTRANCE(0x37, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x37, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x37, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x37, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x39, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x39, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x39, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x39, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x5D, 0x0D, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x0D, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x0D, 0, 1, 0x03, 0x03), ENTRANCE(0x5D, 0x0D, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x0E, 0, 1, 0x03, 0x05), ENTRANCE(0x5D, 0x0E, 0, 1, 0x02, 0x04), - ENTRANCE(0x5D, 0x0E, 0, 1, 0x03, 0x05), ENTRANCE(0x5D, 0x0E, 0, 1, 0x02, 0x04), - ENTRANCE(0x5D, 0x0F, 1, 1, 0x0F, 0x0F), ENTRANCE(0x5D, 0x0F, 1, 1, 0x0F, 0x0F), - ENTRANCE(0x5D, 0x0F, 1, 1, 0x0F, 0x0F), ENTRANCE(0x5D, 0x0F, 1, 1, 0x0F, 0x0F), - ENTRANCE(0x5D, 0x10, 0, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x10, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x10, 0, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x10, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x11, 0, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x11, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x11, 0, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x11, 0, 1, 0x02, 0x02), - ENTRANCE(0x20, 0x06, 0, 1, 0x04, 0x02), ENTRANCE(0x21, 0x06, 0, 1, 0x04, 0x02), - ENTRANCE(0x22, 0x06, 0, 1, 0x04, 0x02), ENTRANCE(0x22, 0x06, 0, 1, 0x04, 0x02), - ENTRANCE(0x20, 0x07, 0, 1, 0x04, 0x02), ENTRANCE(0x21, 0x07, 0, 1, 0x04, 0x02), - ENTRANCE(0x22, 0x07, 0, 1, 0x04, 0x02), ENTRANCE(0x22, 0x07, 0, 1, 0x04, 0x02), - ENTRANCE(0x1E, 0x02, 0, 1, 0x04, 0x02), ENTRANCE(0x1F, 0x02, 0, 1, 0x04, 0x02), - ENTRANCE(0x1E, 0x02, 0, 1, 0x03, 0x03), ENTRANCE(0x1F, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x58, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x58, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x58, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x58, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x57, 0x03, 0, 1, 0x03, 0x03), ENTRANCE(0x57, 0x03, 0, 1, 0x03, 0x03), - ENTRANCE(0x57, 0x03, 0, 1, 0x03, 0x03), ENTRANCE(0x57, 0x03, 0, 1, 0x03, 0x03), - ENTRANCE(0x57, 0x04, 0, 1, 0x04, 0x02), ENTRANCE(0x57, 0x04, 0, 1, 0x04, 0x02), - ENTRANCE(0x57, 0x04, 0, 1, 0x04, 0x02), ENTRANCE(0x57, 0x04, 0, 1, 0x04, 0x02), - ENTRANCE(0x5A, 0x04, 0, 1, 0x04, 0x02), ENTRANCE(0x5A, 0x04, 0, 1, 0x04, 0x02), - ENTRANCE(0x5A, 0x04, 0, 1, 0x04, 0x02), ENTRANCE(0x5A, 0x04, 0, 1, 0x04, 0x02), - ENTRANCE(0x59, 0x03, 0, 1, 0x03, 0x03), ENTRANCE(0x59, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x59, 0x03, 0, 1, 0x03, 0x03), ENTRANCE(0x59, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x59, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x59, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x59, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x59, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x0E, 0x04, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x04, 1, 1, 0x02, 0x02), - ENTRANCE(0x0E, 0x04, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x04, 1, 1, 0x02, 0x02), - ENTRANCE(0x0E, 0x05, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x05, 1, 1, 0x02, 0x02), - ENTRANCE(0x0E, 0x05, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x05, 1, 1, 0x02, 0x02), - ENTRANCE(0x0E, 0x06, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x06, 1, 1, 0x02, 0x02), - ENTRANCE(0x0E, 0x06, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x06, 1, 1, 0x02, 0x02), - ENTRANCE(0x30, 0x01, 0, 0, 0x04, 0x20), ENTRANCE(0x30, 0x01, 0, 0, 0x04, 0x20), - ENTRANCE(0x30, 0x01, 0, 1, 0x04, 0x20), ENTRANCE(0x30, 0x01, 0, 1, 0x04, 0x20), - ENTRANCE(0x30, 0x02, 0, 0, 0x04, 0x20), ENTRANCE(0x30, 0x02, 0, 0, 0x04, 0x20), - ENTRANCE(0x30, 0x02, 0, 1, 0x04, 0x20), ENTRANCE(0x30, 0x02, 0, 1, 0x04, 0x20), - ENTRANCE(0x06, 0x02, 0, 0, 0x02, 0x02), ENTRANCE(0x06, 0x02, 0, 0, 0x02, 0x02), - ENTRANCE(0x06, 0x02, 0, 0, 0x02, 0x02), ENTRANCE(0x06, 0x02, 0, 0, 0x02, 0x02), - ENTRANCE(0x06, 0x03, 0, 0, 0x02, 0x02), ENTRANCE(0x06, 0x03, 0, 0, 0x02, 0x02), - ENTRANCE(0x06, 0x03, 0, 0, 0x02, 0x02), ENTRANCE(0x06, 0x03, 0, 0, 0x02, 0x02), - ENTRANCE(0x06, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x06, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x06, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x06, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x62, 0x02, 0, 1, 0x04, 0x02), ENTRANCE(0x62, 0x02, 0, 1, 0x04, 0x02), - ENTRANCE(0x62, 0x02, 0, 1, 0x04, 0x02), ENTRANCE(0x62, 0x02, 0, 1, 0x04, 0x02), - ENTRANCE(0x4A, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x4A, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x4A, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x4A, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x4A, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x4A, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x4A, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x02, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x02, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x02, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x02, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x12, 0x00, 1, 0, 0x02, 0x02), - ENTRANCE(0x12, 0x00, 1, 0, 0x02, 0x02), ENTRANCE(0x12, 0x00, 1, 0, 0x02, 0x02), - ENTRANCE(0x12, 0x00, 1, 0, 0x02, 0x02), ENTRANCE(0x11, 0x00, 1, 0, 0x02, 0x02), - ENTRANCE(0x11, 0x00, 1, 0, 0x02, 0x02), ENTRANCE(0x11, 0x00, 1, 0, 0x02, 0x02), - ENTRANCE(0x11, 0x00, 1, 0, 0x02, 0x02), ENTRANCE(0x18, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x18, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x18, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x18, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x16, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x16, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x16, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x16, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x0A, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x0A, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x0A, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x0A, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x19, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x19, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x19, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x19, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x05, 0x01, 1, 1, 0x03, 0x02), - ENTRANCE(0x05, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x05, 0x01, 1, 1, 0x03, 0x02), - ENTRANCE(0x05, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x0A, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x0A, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x0A, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x0A, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x0A, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x0A, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x0A, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x0A, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x63, 0x05, 0, 1, 0x04, 0x02), - ENTRANCE(0x63, 0x05, 0, 1, 0x04, 0x02), ENTRANCE(0x63, 0x05, 0, 1, 0x04, 0x02), - ENTRANCE(0x63, 0x05, 0, 1, 0x04, 0x02), ENTRANCE(0x28, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x28, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x28, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x28, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x29, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x29, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x29, 0x00, 0, 1, 0x04, 0x04), - ENTRANCE(0x29, 0x00, 0, 1, 0x04, 0x04), ENTRANCE(0x2B, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x2B, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x2B, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x2B, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x1A, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x1A, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x1A, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x1A, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x55, 0x09, 0, 0, 0x04, 0x04), - ENTRANCE(0x55, 0x09, 0, 0, 0x04, 0x04), ENTRANCE(0x55, 0x09, 0, 0, 0x04, 0x04), - ENTRANCE(0x55, 0x09, 0, 0, 0x04, 0x04), ENTRANCE(0x55, 0x0A, 0, 0, 0x04, 0x04), - ENTRANCE(0x55, 0x0A, 0, 0, 0x04, 0x04), ENTRANCE(0x55, 0x0A, 0, 0, 0x04, 0x04), - ENTRANCE(0x55, 0x0A, 0, 0, 0x04, 0x04), ENTRANCE(0x52, 0x09, 0, 1, 0x04, 0x04), - ENTRANCE(0x52, 0x09, 0, 1, 0x04, 0x04), ENTRANCE(0x52, 0x09, 0, 1, 0x04, 0x04), - ENTRANCE(0x52, 0x09, 0, 1, 0x04, 0x04), ENTRANCE(0x48, 0x00, 0, 1, 0x02, 0x26), - ENTRANCE(0x48, 0x00, 0, 1, 0x02, 0x26), ENTRANCE(0x48, 0x00, 0, 1, 0x02, 0x26), - ENTRANCE(0x48, 0x00, 0, 1, 0x02, 0x26), ENTRANCE(0x48, 0x01, 0, 1, 0x04, 0x20), - ENTRANCE(0x48, 0x01, 0, 1, 0x04, 0x20), ENTRANCE(0x48, 0x01, 0, 1, 0x04, 0x20), - ENTRANCE(0x48, 0x01, 0, 1, 0x04, 0x20), ENTRANCE(0x55, 0x0B, 0, 1, 0x04, 0x02), - ENTRANCE(0x55, 0x0B, 0, 1, 0x04, 0x02), ENTRANCE(0x55, 0x0B, 0, 1, 0x04, 0x02), - ENTRANCE(0x55, 0x0B, 0, 1, 0x04, 0x02), ENTRANCE(0x60, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x60, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x60, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x60, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x49, 0x00, 0, 1, 0x02, 0x20), - ENTRANCE(0x49, 0x00, 0, 1, 0x02, 0x20), ENTRANCE(0x49, 0x00, 0, 1, 0x02, 0x20), - ENTRANCE(0x49, 0x00, 0, 1, 0x02, 0x20), ENTRANCE(0x52, 0x0A, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x0A, 0, 1, 0x04, 0x02), ENTRANCE(0x52, 0x0A, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x0A, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x00, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x00, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x00, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x00, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x00, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x00, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x00, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x00, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x00, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x00, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x00, 0, 1, 0x04, 0x02), - ENTRANCE(0x23, 0x01, 0, 1, 0x04, 0x02), ENTRANCE(0x24, 0x01, 0, 1, 0x04, 0x02), - ENTRANCE(0x25, 0x01, 0, 1, 0x04, 0x02), ENTRANCE(0x25, 0x01, 0, 1, 0x04, 0x02), - ENTRANCE(0x51, 0x0F, 0, 1, 0x05, 0x05), ENTRANCE(0x51, 0x0F, 0, 1, 0x04, 0x02), - ENTRANCE(0x51, 0x0F, 0, 1, 0x05, 0x05), ENTRANCE(0x51, 0x0F, 0, 1, 0x04, 0x02), - ENTRANCE(0x60, 0x05, 0, 1, 0x04, 0x02), ENTRANCE(0x60, 0x05, 0, 1, 0x04, 0x02), - ENTRANCE(0x60, 0x05, 0, 1, 0x04, 0x02), ENTRANCE(0x60, 0x05, 0, 1, 0x04, 0x02), - ENTRANCE(0x5F, 0x04, 0, 1, 0x03, 0x03), ENTRANCE(0x5F, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x64, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x64, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x61, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x61, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x61, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x61, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x05, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x05, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x05, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x05, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x06, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x06, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x06, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x06, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x07, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x07, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x07, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x07, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x08, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x08, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x08, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x08, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x09, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x09, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x09, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x09, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x0A, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x0A, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x0A, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x0A, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x0B, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x0B, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x0B, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x0B, 0, 1, 0x02, 0x02), - ENTRANCE(0x0E, 0x07, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x07, 1, 1, 0x02, 0x02), - ENTRANCE(0x0E, 0x07, 1, 1, 0x02, 0x02), ENTRANCE(0x0E, 0x07, 1, 1, 0x02, 0x02), - ENTRANCE(0x1A, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x1A, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x1A, 0x01, 1, 1, 0x02, 0x02), ENTRANCE(0x1A, 0x01, 1, 1, 0x02, 0x02), - ENTRANCE(0x3B, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x3B, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x3B, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x3B, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x3B, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x3B, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x3B, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x3B, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x5B, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x5B, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x5B, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x5B, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x63, 0x06, 0, 0, 0x02, 0x26), ENTRANCE(0x63, 0x06, 0, 0, 0x02, 0x26), - ENTRANCE(0x63, 0x06, 0, 0, 0x02, 0x26), ENTRANCE(0x63, 0x06, 0, 0, 0x02, 0x26), - ENTRANCE(0x63, 0x07, 0, 0, 0x2E, 0x2E), ENTRANCE(0x63, 0x07, 0, 0, 0x2E, 0x2E), - ENTRANCE(0x63, 0x07, 0, 0, 0x2E, 0x2E), ENTRANCE(0x63, 0x07, 0, 0, 0x2E, 0x2E), - ENTRANCE(0x5B, 0x05, 0, 1, 0x02, 0x02), ENTRANCE(0x5B, 0x05, 0, 1, 0x02, 0x02), - ENTRANCE(0x5B, 0x05, 0, 1, 0x02, 0x02), ENTRANCE(0x5B, 0x05, 0, 1, 0x02, 0x02), - ENTRANCE(0x5B, 0x06, 0, 1, 0x2C, 0x2C), ENTRANCE(0x5B, 0x06, 0, 1, 0x2C, 0x2C), - ENTRANCE(0x5B, 0x06, 0, 1, 0x2C, 0x2C), ENTRANCE(0x5B, 0x06, 0, 1, 0x2C, 0x2C), - ENTRANCE(0x5B, 0x07, 0, 1, 0x2C, 0x2C), ENTRANCE(0x5B, 0x07, 0, 1, 0x2C, 0x2C), - ENTRANCE(0x5B, 0x07, 0, 1, 0x2C, 0x2C), ENTRANCE(0x5B, 0x07, 0, 1, 0x2C, 0x2C), - ENTRANCE(0x5B, 0x08, 0, 0, 0x02, 0x02), ENTRANCE(0x5B, 0x08, 0, 0, 0x02, 0x02), - ENTRANCE(0x5B, 0x08, 0, 0, 0x02, 0x02), ENTRANCE(0x5B, 0x08, 0, 0, 0x02, 0x02), - ENTRANCE(0x62, 0x03, 0, 1, 0x2C, 0x2C), ENTRANCE(0x62, 0x03, 0, 1, 0x2C, 0x2C), - ENTRANCE(0x62, 0x03, 0, 1, 0x2C, 0x2C), ENTRANCE(0x62, 0x03, 0, 1, 0x2C, 0x2C), - ENTRANCE(0x57, 0x05, 0, 1, 0x02, 0x02), ENTRANCE(0x57, 0x05, 0, 1, 0x02, 0x02), - ENTRANCE(0x57, 0x05, 0, 1, 0x02, 0x02), ENTRANCE(0x57, 0x05, 0, 1, 0x02, 0x02), - ENTRANCE(0x07, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x07, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x07, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x07, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x52, 0x0B, 0, 1, 0x04, 0x02), ENTRANCE(0x52, 0x0B, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x0B, 0, 1, 0x04, 0x02), ENTRANCE(0x52, 0x0B, 0, 1, 0x04, 0x02), - ENTRANCE(0x3B, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x3B, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x3B, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x3B, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x61, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x61, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x61, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x61, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x5F, 0x03, 0, 1, 0x03, 0x03), ENTRANCE(0x5F, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x64, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x64, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x5F, 0x03, 0, 1, 0x00, 0x00), ENTRANCE(0x52, 0x0C, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x0C, 0, 1, 0x04, 0x02), ENTRANCE(0x52, 0x0C, 0, 1, 0x04, 0x02), - ENTRANCE(0x52, 0x0C, 0, 1, 0x04, 0x02), ENTRANCE(0x48, 0x02, 1, 1, 0x04, 0x20), - ENTRANCE(0x48, 0x02, 1, 1, 0x04, 0x20), ENTRANCE(0x48, 0x02, 1, 1, 0x04, 0x20), - ENTRANCE(0x48, 0x02, 1, 1, 0x04, 0x20), ENTRANCE(0x4B, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x4B, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x4B, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x4B, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x53, 0x06, 0, 1, 0x03, 0x03), - ENTRANCE(0x53, 0x06, 0, 1, 0x03, 0x03), ENTRANCE(0x53, 0x06, 0, 1, 0x03, 0x03), - ENTRANCE(0x53, 0x06, 0, 1, 0x03, 0x03), ENTRANCE(0x51, 0x10, 0, 1, 0x0B, 0x0B), - ENTRANCE(0x51, 0x10, 0, 1, 0x0B, 0x0B), ENTRANCE(0x51, 0x10, 0, 1, 0x0B, 0x0B), - ENTRANCE(0x51, 0x10, 0, 1, 0x0B, 0x0B), ENTRANCE(0x52, 0x0D, 0, 1, 0x03, 0x03), - ENTRANCE(0x52, 0x0D, 0, 1, 0x02, 0x02), ENTRANCE(0x52, 0x0D, 0, 1, 0x03, 0x03), - ENTRANCE(0x52, 0x0D, 0, 1, 0x02, 0x02), ENTRANCE(0x4F, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x4F, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x4F, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x4F, 0x00, 0, 1, 0x03, 0x03), ENTRANCE(0x4F, 0x00, 0, 1, 0x03, 0x03), - ENTRANCE(0x1A, 0x06, 1, 1, 0x02, 0x02), ENTRANCE(0x1A, 0x06, 1, 1, 0x02, 0x02), - ENTRANCE(0x1A, 0x06, 1, 1, 0x02, 0x02), ENTRANCE(0x1A, 0x06, 1, 1, 0x02, 0x02), - ENTRANCE(0x66, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x66, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x66, 0x00, 0, 1, 0x02, 0x02), ENTRANCE(0x66, 0x00, 0, 1, 0x02, 0x02), - ENTRANCE(0x1A, 0x07, 1, 1, 0x02, 0x02), ENTRANCE(0x1A, 0x07, 1, 1, 0x02, 0x02), - ENTRANCE(0x1A, 0x07, 1, 1, 0x02, 0x02), ENTRANCE(0x1A, 0x07, 1, 1, 0x02, 0x02), - ENTRANCE(0x32, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x32, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x32, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x32, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x2C, 0x01, 0, 1, 0x04, 0x20), ENTRANCE(0x2C, 0x01, 0, 1, 0x04, 0x20), - ENTRANCE(0x2C, 0x01, 0, 1, 0x04, 0x20), ENTRANCE(0x2C, 0x01, 0, 1, 0x04, 0x20), - ENTRANCE(0x33, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x33, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x33, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x33, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x0D, 0x01, 0, 0, 0x04, 0x02), ENTRANCE(0x0D, 0x01, 0, 0, 0x04, 0x02), - ENTRANCE(0x0D, 0x01, 0, 0, 0x04, 0x02), ENTRANCE(0x0D, 0x01, 0, 0, 0x04, 0x02), - ENTRANCE(0x0D, 0x02, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x02, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x02, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x02, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x03, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x03, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x03, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x03, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x04, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x04, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x04, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x04, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x05, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x05, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x05, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x05, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x06, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x06, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x06, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x06, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x07, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x07, 0, 1, 0x04, 0x02), - ENTRANCE(0x0D, 0x07, 0, 1, 0x04, 0x02), ENTRANCE(0x0D, 0x07, 0, 1, 0x04, 0x02), - ENTRANCE(0x50, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x50, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x50, 0x00, 0, 1, 0x04, 0x20), ENTRANCE(0x50, 0x00, 0, 1, 0x04, 0x20), - ENTRANCE(0x52, 0x0E, 0, 1, 0x03, 0x03), ENTRANCE(0x52, 0x0E, 0, 1, 0x02, 0x02), - ENTRANCE(0x52, 0x0E, 0, 1, 0x03, 0x03), ENTRANCE(0x52, 0x0E, 0, 1, 0x02, 0x02), - ENTRANCE(0x63, 0x08, 0, 0, 0x20, 0x20), ENTRANCE(0x63, 0x08, 0, 0, 0x20, 0x20), - ENTRANCE(0x63, 0x08, 0, 0, 0x20, 0x20), ENTRANCE(0x63, 0x08, 0, 0, 0x20, 0x20), - ENTRANCE(0x63, 0x09, 0, 0, 0x02, 0x02), ENTRANCE(0x63, 0x09, 0, 0, 0x02, 0x02), - ENTRANCE(0x63, 0x09, 0, 0, 0x02, 0x02), ENTRANCE(0x63, 0x09, 0, 0, 0x02, 0x02), - ENTRANCE(0x57, 0x07, 0, 1, 0x2C, 0x2C), ENTRANCE(0x57, 0x07, 0, 1, 0x2C, 0x2C), - ENTRANCE(0x57, 0x07, 0, 1, 0x2C, 0x2C), ENTRANCE(0x57, 0x07, 0, 1, 0x2C, 0x2C), - ENTRANCE(0x61, 0x05, 0, 1, 0x02, 0x02), ENTRANCE(0x61, 0x05, 0, 1, 0x02, 0x02), - ENTRANCE(0x61, 0x05, 0, 1, 0x02, 0x02), ENTRANCE(0x61, 0x05, 0, 1, 0x02, 0x02), - ENTRANCE(0x53, 0x07, 0, 1, 0x03, 0x03), ENTRANCE(0x53, 0x07, 0, 1, 0x03, 0x03), - ENTRANCE(0x53, 0x07, 0, 1, 0x03, 0x03), ENTRANCE(0x53, 0x07, 0, 1, 0x03, 0x03), - ENTRANCE(0x0F, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x0F, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x0F, 0x00, 1, 1, 0x02, 0x02), ENTRANCE(0x0F, 0x00, 1, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x0C, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x0C, 0, 1, 0x02, 0x02), - ENTRANCE(0x0C, 0x0C, 0, 1, 0x02, 0x02), ENTRANCE(0x0C, 0x0C, 0, 1, 0x02, 0x02), - ENTRANCE(0x41, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x41, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x41, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x41, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x3D, 0x01, 0, 1, 0x04, 0x04), ENTRANCE(0x3D, 0x01, 0, 1, 0x04, 0x04), - ENTRANCE(0x3D, 0x01, 0, 1, 0x04, 0x04), ENTRANCE(0x3D, 0x01, 0, 1, 0x04, 0x04), - ENTRANCE(0x5C, 0x07, 0, 1, 0x03, 0x03), ENTRANCE(0x5C, 0x07, 0, 1, 0x02, 0x02), - ENTRANCE(0x5C, 0x07, 0, 1, 0x03, 0x03), ENTRANCE(0x5C, 0x07, 0, 1, 0x02, 0x02), - ENTRANCE(0x53, 0x08, 0, 1, 0x03, 0x03), ENTRANCE(0x53, 0x08, 0, 1, 0x03, 0x03), - ENTRANCE(0x53, 0x08, 0, 1, 0x03, 0x03), ENTRANCE(0x53, 0x08, 0, 1, 0x03, 0x03), - ENTRANCE(0x03, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x03, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x03, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x03, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x3D, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x3D, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x3D, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x3D, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x05, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x05, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x05, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x05, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x06, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x06, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x06, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x06, 0, 1, 0x02, 0x02), - ENTRANCE(0x51, 0x11, 0, 1, 0x03, 0x03), ENTRANCE(0x51, 0x11, 0, 1, 0x02, 0x02), - ENTRANCE(0x51, 0x11, 0, 1, 0x03, 0x03), ENTRANCE(0x51, 0x11, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x02, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x03, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x03, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x04, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x04, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x05, 0, 1, 0x02, 0x03), ENTRANCE(0x3E, 0x05, 0, 1, 0x02, 0x03), - ENTRANCE(0x3E, 0x05, 0, 1, 0x02, 0x03), ENTRANCE(0x3E, 0x05, 0, 1, 0x02, 0x03), - ENTRANCE(0x3E, 0x06, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x06, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x06, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x06, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x07, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x07, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x07, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x07, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x08, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x08, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x08, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x08, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x09, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x09, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x09, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x09, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x0A, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x0A, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x0A, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x0A, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x0B, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x0B, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x0B, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x0B, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x0C, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x0C, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x0C, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x0C, 0, 1, 0x02, 0x02), - ENTRANCE(0x37, 0x01, 0, 1, 0x04, 0x20), ENTRANCE(0x37, 0x01, 0, 1, 0x04, 0x20), - ENTRANCE(0x37, 0x01, 0, 1, 0x04, 0x20), ENTRANCE(0x37, 0x01, 0, 1, 0x04, 0x20), - ENTRANCE(0x08, 0x01, 0, 1, 0x04, 0x04), ENTRANCE(0x08, 0x01, 0, 1, 0x04, 0x04), - ENTRANCE(0x08, 0x01, 0, 1, 0x04, 0x04), ENTRANCE(0x08, 0x01, 0, 1, 0x04, 0x04), - ENTRANCE(0x4C, 0x01, 0, 1, 0x04, 0x20), ENTRANCE(0x4C, 0x01, 0, 1, 0x04, 0x20), - ENTRANCE(0x4C, 0x01, 0, 1, 0x04, 0x20), ENTRANCE(0x4C, 0x01, 0, 1, 0x04, 0x20), - ENTRANCE(0x63, 0x0A, 0, 1, 0x04, 0x02), ENTRANCE(0x63, 0x0A, 0, 1, 0x04, 0x02), - ENTRANCE(0x63, 0x0A, 0, 1, 0x04, 0x02), ENTRANCE(0x63, 0x0A, 0, 1, 0x04, 0x02), - ENTRANCE(0x09, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x09, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x09, 0x01, 0, 1, 0x02, 0x02), ENTRANCE(0x09, 0x01, 0, 1, 0x02, 0x02), - ENTRANCE(0x52, 0x0F, 0, 1, 0x03, 0x03), ENTRANCE(0x52, 0x0F, 0, 1, 0x02, 0x02), - ENTRANCE(0x52, 0x0F, 0, 1, 0x03, 0x03), ENTRANCE(0x52, 0x0F, 0, 1, 0x02, 0x02), - ENTRANCE(0x5B, 0x09, 0, 0, 0x02, 0x02), ENTRANCE(0x5B, 0x09, 0, 0, 0x02, 0x02), - ENTRANCE(0x5B, 0x09, 0, 0, 0x02, 0x02), ENTRANCE(0x5B, 0x09, 0, 0, 0x02, 0x02), - ENTRANCE(0x4C, 0x02, 0, 1, 0x04, 0x20), ENTRANCE(0x4C, 0x02, 0, 1, 0x04, 0x20), - ENTRANCE(0x4C, 0x02, 0, 1, 0x04, 0x20), ENTRANCE(0x4C, 0x02, 0, 1, 0x04, 0x20), - ENTRANCE(0x55, 0x0C, 0, 1, 0x04, 0x02), ENTRANCE(0x55, 0x0C, 0, 1, 0x04, 0x02), - ENTRANCE(0x55, 0x0C, 0, 1, 0x04, 0x02), ENTRANCE(0x55, 0x0C, 0, 1, 0x04, 0x02), - ENTRANCE(0x17, 0x02, 1, 1, 0x02, 0x02), ENTRANCE(0x17, 0x02, 1, 1, 0x02, 0x02), - ENTRANCE(0x17, 0x02, 1, 1, 0x02, 0x02), ENTRANCE(0x17, 0x02, 1, 1, 0x02, 0x02), - ENTRANCE(0x4A, 0x01, 0, 0, 0x03, 0x03), ENTRANCE(0x4A, 0x01, 0, 0, 0x02, 0x02), - ENTRANCE(0x4A, 0x01, 0, 0, 0x03, 0x03), ENTRANCE(0x4A, 0x01, 0, 0, 0x02, 0x02), - ENTRANCE(0x43, 0x07, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x07, 0, 1, 0x02, 0x02), - ENTRANCE(0x43, 0x07, 0, 1, 0x02, 0x02), ENTRANCE(0x43, 0x07, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x12, 0, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x12, 0, 1, 0x02, 0x02), - ENTRANCE(0x5D, 0x12, 0, 1, 0x02, 0x02), ENTRANCE(0x5D, 0x12, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x0D, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x0D, 0, 1, 0x02, 0x02), - ENTRANCE(0x3E, 0x0D, 0, 1, 0x02, 0x02), ENTRANCE(0x3E, 0x0D, 0, 1, 0x02, 0x02), - ENTRANCE(0x56, 0x02, 0, 1, 0x12, 0x12), ENTRANCE(0x56, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x56, 0x02, 0, 1, 0x12, 0x12), ENTRANCE(0x56, 0x02, 0, 1, 0x02, 0x02), - ENTRANCE(0x57, 0x08, 0, 1, 0x02, 0x02), ENTRANCE(0x57, 0x08, 0, 1, 0x02, 0x02), - ENTRANCE(0x57, 0x08, 0, 1, 0x02, 0x02), ENTRANCE(0x57, 0x08, 0, 1, 0x02, 0x02), - ENTRANCE(0x56, 0x03, 0, 1, 0x03, 0x03), ENTRANCE(0x56, 0x03, 0, 1, 0x03, 0x03), - ENTRANCE(0x56, 0x03, 0, 1, 0x03, 0x03), ENTRANCE(0x56, 0x03, 0, 1, 0x03, 0x03), - ENTRANCE(0x57, 0x09, 0, 1, 0x03, 0x03), ENTRANCE(0x57, 0x09, 0, 1, 0x03, 0x03), - ENTRANCE(0x57, 0x09, 0, 1, 0x03, 0x03), ENTRANCE(0x57, 0x09, 0, 1, 0x03, 0x03), - ENTRANCE(0x5C, 0x08, 0, 1, 0x03, 0x03), ENTRANCE(0x5C, 0x08, 0, 1, 0x03, 0x03), - ENTRANCE(0x5C, 0x08, 0, 1, 0x03, 0x03), ENTRANCE(0x5C, 0x08, 0, 1, 0x03, 0x03), +#include "tables/entrance_table.h" }; +#undef DEFINE_ENTRANCE + //#define TITLED_SCENE(name, title, unk_10, config, unk_12) \ // { \ // (u32) _##name##SegmentRomStart, (u32)_##name##SegmentRomEnd, (u32)_##title##SegmentRomStart, \ @@ -858,24 +85,24 @@ Gfx sDefaultDisplayList[] = { }; // Computes next entrance index based on age and day time to set the fade out transition -void func_800994A0(PlayState* play) { - s16 computedEntranceIndex; +void Scene_SetTransitionForNextEntrance(PlayState* play) { + s16 entranceIndex; if (!IS_DAY) { if (!LINK_IS_ADULT) { - computedEntranceIndex = play->nextEntranceIndex + 1; + entranceIndex = play->nextEntranceIndex + 1; } else { - computedEntranceIndex = play->nextEntranceIndex + 3; + entranceIndex = play->nextEntranceIndex + 3; } } else { if (!LINK_IS_ADULT) { - computedEntranceIndex = play->nextEntranceIndex; + entranceIndex = play->nextEntranceIndex; } else { - computedEntranceIndex = play->nextEntranceIndex + 2; + entranceIndex = play->nextEntranceIndex + 2; } } - play->fadeTransition = gEntranceTable[computedEntranceIndex].field & 0x7F; // Fade out + play->transitionType = ENTRANCE_INFO_START_TRANS_TYPE(gEntranceTable[entranceIndex].field); // Fade out } // Scene Draw Config 0 @@ -1212,11 +439,7 @@ void func_8009AFE0(PlayState* play) { { s32 pad[2]; } - if (ResourceMgr_IsGameMasterQuest()) { - gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sThievesHideoutEntranceTextures_MQ[gSaveContext.nightFlag])); - } else { - gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sThievesHideoutEntranceTextures[gSaveContext.nightFlag])); - } + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sThievesHideoutEntranceTextures[gSaveContext.nightFlag])); CLOSE_DISPS(play->state.gfxCtx); } @@ -1673,11 +896,7 @@ void func_8009D31C(PlayState* play) { { s32 pad[2]; } - if (ResourceMgr_IsGameMasterQuest()) { - gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sLonLonHouseEntranceTextures_MQ[gSaveContext.nightFlag])); - } else { - gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sLonLonHouseEntranceTextures[gSaveContext.nightFlag])); - } + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sLonLonHouseEntranceTextures[gSaveContext.nightFlag])); gDPPipeSync(POLY_OPA_DISP++); gDPSetEnvColor(POLY_OPA_DISP++, 128, 128, 128, 128); @@ -1709,13 +928,8 @@ void func_8009D438(PlayState* play) { var = gSaveContext.nightFlag; } - if (ResourceMgr_IsGameMasterQuest()) { - gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGuardHouseView1Textures_MQ[var])); - gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(sGuardHouseView2Textures_MQ[var])); - } else { - gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGuardHouseView1Textures[var])); - gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(sGuardHouseView2Textures[var])); - } + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGuardHouseView1Textures[var])); + gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(sGuardHouseView2Textures[var])); gDPPipeSync(POLY_OPA_DISP++); gDPSetEnvColor(POLY_OPA_DISP++, 128, 128, 128, 128); @@ -1859,11 +1073,7 @@ void func_8009DD5C(PlayState* play) { { s32 pad[2]; } - if (ResourceMgr_IsGameMasterQuest()) { - gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sKakarikoWindowTextures_MQ[gSaveContext.nightFlag])); - } else { - gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sKakarikoWindowTextures[gSaveContext.nightFlag])); - } + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sKakarikoWindowTextures[gSaveContext.nightFlag])); gDPPipeSync(POLY_OPA_DISP++); gDPSetEnvColor(POLY_OPA_DISP++, 128, 128, 128, 128); @@ -1998,12 +1208,8 @@ void func_8009E730(PlayState* play) { gDPPipeSync(POLY_OPA_DISP++); gDPSetEnvColor(POLY_OPA_DISP++, 128, 128, 128, 128); - - if (ResourceMgr_IsGameMasterQuest()) { - gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sZorasDomainEntranceTextures_MQ[gSaveContext.nightFlag])); - } else { - gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sZorasDomainEntranceTextures[gSaveContext.nightFlag])); - } + + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sZorasDomainEntranceTextures[gSaveContext.nightFlag])); { s32 pad[2]; } @@ -2136,11 +1342,7 @@ void func_8009F1B4(PlayState* play) { { s32 pad[2]; } - if (ResourceMgr_IsGameMasterQuest()) { - gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(D_8012A380_MQ[gSaveContext.nightFlag])); - } else { - gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(D_8012A380[gSaveContext.nightFlag])); - } + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(D_8012A380[gSaveContext.nightFlag])); CLOSE_DISPS(play->state.gfxCtx); } @@ -2273,11 +1475,7 @@ void func_8009F9D0(PlayState* play) { gDPPipeSync(POLY_XLU_DISP++); gDPSetEnvColor(POLY_XLU_DISP++, 128, 128, 128, 128); - if (ResourceMgr_IsGameMasterQuest()) { - gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGoronCityEntranceTextures_MQ[gSaveContext.nightFlag])); - } else { - gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGoronCityEntranceTextures[gSaveContext.nightFlag])); - } + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGoronCityEntranceTextures[gSaveContext.nightFlag])); { s32 pad[2]; } @@ -2295,11 +1493,7 @@ void func_8009FB74(PlayState* play) { { s32 pad[2]; } - if (ResourceMgr_IsGameMasterQuest()) { - gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sLonLonRanchWindowTextures_MQ[gSaveContext.nightFlag])); - } else { - gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sLonLonRanchWindowTextures[gSaveContext.nightFlag])); - } + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sLonLonRanchWindowTextures[gSaveContext.nightFlag])); gDPPipeSync(POLY_OPA_DISP++); gDPSetEnvColor(POLY_OPA_DISP++, 128, 128, 128, 128); diff --git a/soh/src/code/z_sram.c b/soh/src/code/z_sram.c index 753dd1c02..84d2d747a 100644 --- a/soh/src/code/z_sram.c +++ b/soh/src/code/z_sram.c @@ -10,6 +10,8 @@ void Save_LoadFile(void); +void BossRush_InitSave(void); + /** * Initialize new save. * This save has an empty inventory with 3 hearts and single magic. @@ -33,8 +35,28 @@ void Sram_InitDebugSave(void) { void Sram_InitBossRushSave(void) { Save_InitFile(false); + BossRush_InitSave(); } +static s16 sDungeonEntrances[] = { + ENTR_DEKU_TREE_0, // SCENE_DEKU_TREE + ENTR_DODONGOS_CAVERN_0, // SCENE_DODONGOS_CAVERN + ENTR_JABU_JABU_0, // SCENE_JABU_JABU + ENTR_FOREST_TEMPLE_0, // SCENE_FOREST_TEMPLE + ENTR_FIRE_TEMPLE_0, // SCENE_FIRE_TEMPLE + ENTR_WATER_TEMPLE_0, // SCENE_WATER_TEMPLE + ENTR_SPIRIT_TEMPLE_0, // SCENE_SPIRIT_TEMPLE + ENTR_SHADOW_TEMPLE_0, // SCENE_SHADOW_TEMPLE + ENTR_BOTTOM_OF_THE_WELL_0, // SCENE_BOTTOM_OF_THE_WELL + ENTR_ICE_CAVERN_0, // SCENE_ICE_CAVERN + ENTR_GANONS_TOWER_0, // SCENE_GANONS_TOWER + ENTR_GERUDO_TRAINING_GROUND_0, // SCENE_GERUDO_TRAINING_GROUND + ENTR_THIEVES_HIDEOUT_0, // SCENE_THIEVES_HIDEOUT + ENTR_INSIDE_GANONS_CASTLE_0, // SCENE_INSIDE_GANONS_CASTLE + ENTR_GANONS_TOWER_COLLAPSE_INTERIOR_0, // SCENE_GANONS_TOWER_COLLAPSE_INTERIOR + ENTR_INSIDE_GANONS_CASTLE_COLLAPSE_0, // SCENE_INSIDE_GANONS_CASTLE_COLLAPSE +}; + /** * Copy save currently on the buffer to Save Context and complete various tasks to open the save. * This includes: @@ -46,10 +68,6 @@ void Sram_InitBossRushSave(void) { * - Revert any trade items that spoil */ void Sram_OpenSave() { - 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; @@ -73,45 +91,45 @@ void Sram_OpenSave() { case SCENE_GERUDO_TRAINING_GROUND: case SCENE_THIEVES_HIDEOUT: case SCENE_INSIDE_GANONS_CASTLE: - gSaveContext.entranceIndex = dungeonEntrances[gSaveContext.savedSceneNum]; + gSaveContext.entranceIndex = sDungeonEntrances[gSaveContext.savedSceneNum]; break; case SCENE_DEKU_TREE_BOSS: - gSaveContext.entranceIndex = 0; + gSaveContext.entranceIndex = ENTR_DEKU_TREE_0; break; case SCENE_DODONGOS_CAVERN_BOSS: - gSaveContext.entranceIndex = 4; + gSaveContext.entranceIndex = ENTR_DODONGOS_CAVERN_0; break; case SCENE_JABU_JABU_BOSS: - gSaveContext.entranceIndex = 0x28; + gSaveContext.entranceIndex = ENTR_JABU_JABU_0; break; case SCENE_FOREST_TEMPLE_BOSS: - gSaveContext.entranceIndex = 0x169; + gSaveContext.entranceIndex = ENTR_FOREST_TEMPLE_0; break; case SCENE_FIRE_TEMPLE_BOSS: - gSaveContext.entranceIndex = 0x165; + gSaveContext.entranceIndex = ENTR_FIRE_TEMPLE_0; break; case SCENE_WATER_TEMPLE_BOSS: - gSaveContext.entranceIndex = 0x10; + gSaveContext.entranceIndex = ENTR_WATER_TEMPLE_0; break; case SCENE_SPIRIT_TEMPLE_BOSS: - gSaveContext.entranceIndex = 0x82; + gSaveContext.entranceIndex = ENTR_SPIRIT_TEMPLE_0; break; case SCENE_SHADOW_TEMPLE_BOSS: - gSaveContext.entranceIndex = 0x37; + gSaveContext.entranceIndex = ENTR_SHADOW_TEMPLE_0; break; 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: - gSaveContext.entranceIndex = 0x41B; + gSaveContext.entranceIndex = ENTR_GANONS_TOWER_0; break; default: if (gSaveContext.savedSceneNum != SCENE_LINKS_HOUSE) { - gSaveContext.entranceIndex = (LINK_AGE_IN_YEARS == YEARS_CHILD) ? 0xBB : 0x5F4; + gSaveContext.entranceIndex = (LINK_AGE_IN_YEARS == YEARS_CHILD) ? ENTR_LINKS_HOUSE_0 : ENTR_TEMPLE_OF_TIME_7; } else { - gSaveContext.entranceIndex = 0xBB; + gSaveContext.entranceIndex = ENTR_LINKS_HOUSE_0; } break; } @@ -206,7 +224,7 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx) { Sram_InitDebugSave(); } - gSaveContext.entranceIndex = 0xBB; + gSaveContext.entranceIndex = ENTR_LINKS_HOUSE_0; gSaveContext.linkAge = 1; gSaveContext.dayTime = 0x6AAB; gSaveContext.cutsceneIndex = 0xFFF1; @@ -225,6 +243,8 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx) { gSaveContext.questId = QUEST_RANDOMIZER; Randomizer_InitSaveFile(); + } else if (currentQuest == QUEST_MASTER) { + gSaveContext.questId = QUEST_MASTER; } Save_SaveFile(); diff --git a/soh/src/code/z_vr_box.c b/soh/src/code/z_vr_box.c index b77c3d869..ff2622187 100644 --- a/soh/src/code/z_vr_box.c +++ b/soh/src/code/z_vr_box.c @@ -417,7 +417,12 @@ void func_800AEFC8(SkyboxContext* skyboxCtx, s16 skyboxId) { s32 j; s32 phi_s3 = 0; - if (skyboxId == SKYBOX_BAZAAR || (skyboxId > SKYBOX_HOUSE_KAKARIKO && skyboxId <= SKYBOX_BOMBCHU_SHOP)) { + //! @bug All shops only provide 2 faces for their sky box. Mask shop is missing from the condition + // meaning that the Mask shop will calculate 4 faces + // This effect is not noticed as the faces are behind the camera, but will cause a crash in SoH. + // SOH General: We have added the Mask shop to this check so only the 2 expected faces are calculated. + if (skyboxId == SKYBOX_BAZAAR || skyboxId == SKYBOX_HAPPY_MASK_SHOP || + (skyboxId >= SKYBOX_KOKIRI_SHOP && skyboxId <= SKYBOX_BOMBCHU_SHOP)) { for (j = 0, i = 0; i < 2; i++, j += 2) { phi_s3 = func_800ADBB0(skyboxCtx, skyboxCtx->roomVtx, phi_s3, D_8012AEBC[i].unk_0, D_8012AEBC[i].unk_4, D_8012AEBC[i].unk_8, D_8012AEBC[i].unk_C, D_8012AEBC[i].unk_10, i, j); diff --git a/soh/src/code/z_vr_box_draw.c b/soh/src/code/z_vr_box_draw.c index 8eb97573e..5b4867121 100644 --- a/soh/src/code/z_vr_box_draw.c +++ b/soh/src/code/z_vr_box_draw.c @@ -59,8 +59,14 @@ void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyb gSPDisplayList(POLY_OPA_DISP++, skyboxCtx->dListBuf[2]); gSPDisplayList(POLY_OPA_DISP++, skyboxCtx->dListBuf[3]); - if (skyboxId != SKYBOX_BAZAAR) { - if (skyboxId <= SKYBOX_HOUSE_KAKARIKO || skyboxId > SKYBOX_BOMBCHU_SHOP) { + //! @bug All shops only provide 2 faces for their sky box. Mask shop is missing from the condition + // meaning that the Mask shop will render the previously loaded sky box values, or uninitialized data. + // This effect is not noticed as the faces are behind the camera, but will cause a crash in SoH. + // SOH General: We have added the Mask shop to this check so only the 2 expected faces are rendered. + if (skyboxId != SKYBOX_BAZAAR && skyboxId != SKYBOX_HAPPY_MASK_SHOP) { + if (skyboxId < SKYBOX_KOKIRI_SHOP || skyboxId > SKYBOX_BOMBCHU_SHOP) { + // Skip remaining faces for most shop skyboxes + gDPPipeSync(POLY_OPA_DISP++); gDPLoadTLUT_pal256(POLY_OPA_DISP++, skyboxCtx->palettes[2]); gSPDisplayList(POLY_OPA_DISP++, skyboxCtx->dListBuf[4]); |
