diff options
| author | Leonid Kapitonov <Feacur@gmail.com> | 2025-06-17 15:54:52 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-17 15:54:52 +0200 |
| commit | b11fdab792f1e7c4b71cfa7568963fad1c7d742d (patch) | |
| tree | e5d7b2b8628f8508ac417bb7049522985a35fca5 /src/code | |
| parent | bc5839a32cce3fd3b6100d56e1d8965b2b365ee2 (diff) | |
Document `Save.cutsceneIndex` and adjacent data / code (#2286)
* introduce `enum CutsceneIndex` as a first step
* crudely rename `enum CutsceneIndex` entries
* run `check_format.py ...` separetely
so that it doesn't clutter previous commit. still, allowing `clangd LSP` to run format-on-save yields inconsistent results for me with the project's tooling, especially for header files
* apply a draft PR suggestion
Co-authored-by: mzxrules <mzxrules@gmail.com>
* rename `CS_INDEX_*` with PR suggestions
and some additional observations
reverified with
> `check_format.py ...`
> `make ...`
additionally:
- current clang-format lacks a rule for trailing commas
- compiler says about them `cfe: Warning 624`
* improve `CS_INDEX_*` naming, rem `ENTRANCE` suffix
https://github.com/zeldaret/oot/pull/2286#discussion_r1829165205
reverified with
> `check_format.py ...`
> `make ...`
* apply Jenkins fixes
https://jenkins.deco.mp/job/OOT/job/PR-2286/4/console
hmm, i do need this automation locally to
* apply a PR suggestion
https://github.com/zeldaret/oot/pull/2286#discussion_r1829219841
* remove redundant comments, fix the header comment
and add a comment chunk from https://github.com/zeldaret/oot/pull/2286#discussion_r1829108940
* rename the flag for freeing `nextCutsceneIndex`
* rename the flag for automatic `sceneLayer` calc
it gets assigned to the `nextCutsceneIndex`,
so `CS_INDEX_NONE` name was misleading
* use explicit scene layer names instead of numbers
* ok, now the last two `CS_INDEX_*` are less unknown
the purpose of `CS_INDEX_BARRIER` is not quite clear still
* apply Jenkins fixes
https://jenkins.deco.mp/job/OOT/job/PR-2286/14/console
* run `fix_bss` locally
`ntsc-1.2` refused to comply though
* revert all local to the branch bss shifts
* ugh, use defines instead of an enum
probably size of enum entries doesn't match well? originally these were
just numbers. besides, not like it's a real enumeration from zero to a
value or some bit flags
* still, add a BSS pragma for `z_demo.c`
* apply review changes
* factor out a cutscene layer formula
* give scene layers names throughout code
* apply Jenkins fixes
https://jenkins.deco.mp/job/OOT/job/PR-2286/32/console
* tweak `CS_INDEX` descriptions
* apply PR review suggestions
* rename "auto" -> "default"
* apply PR review suggestions
https://github.com/zeldaret/oot/pull/2286#discussion_r1868693980
essentially reverts 106cb1021be88f745ee303838c11c7d7cbf9c79d, except for 2 generic `z_scene.c` lines
* apply Jenkins fixes
https://jenkins.deco.mp/job/OOT/job/PR-2286/77/console
* Apply suggestions from code review
Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
Co-authored-by: mzxrules <mzxrules@gmail.com>
* apply Jenkins fixes
https://jenkins.deco.mp/job/OOT/job/PR-2286/175/console
* Move CS_INDEX_* macros to z64save.h, with the definition of gSaveContext.save.cutsceneIndex
* `#define CS_INDEX_D 0xFFFD` and co.
Co-authored-by: cadmic <cadmic24@gmail.com>
* add comment on CS_INDEX_D
* review
* CS_INDEX_NONE is back
* bss
* expand comment about 0xFFFD
* fix comment about 0xFFFF usage
* review
---------
Co-authored-by: mzxrules <mzxrules@gmail.com>
Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
Co-authored-by: cadmic <cadmic24@gmail.com>
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/db_camera.c | 2 | ||||
| -rw-r--r-- | src/code/z_common_data.c | 2 | ||||
| -rw-r--r-- | src/code/z_demo.c | 174 | ||||
| -rw-r--r-- | src/code/z_horse.c | 20 | ||||
| -rw-r--r-- | src/code/z_kaleido_setup.c | 6 | ||||
| -rw-r--r-- | src/code/z_kankyo.c | 2 | ||||
| -rw-r--r-- | src/code/z_message.c | 2 | ||||
| -rw-r--r-- | src/code/z_parameter.c | 8 | ||||
| -rw-r--r-- | src/code/z_play.c | 16 | ||||
| -rw-r--r-- | src/code/z_scene.c | 14 | ||||
| -rw-r--r-- | src/code/z_sram.c | 4 |
11 files changed, 128 insertions, 122 deletions
diff --git a/src/code/db_camera.c b/src/code/db_camera.c index 3e770316c..02389cfe3 100644 --- a/src/code/db_camera.c +++ b/src/code/db_camera.c @@ -2167,7 +2167,7 @@ s32 DebugCamera_UpdateDemoControl(DebugCam* debugCam, Camera* cam) { if (CHECK_BTN_ALL(sPlay->state.input[1].press.button, BTN_CRIGHT)) { gUseCutsceneCam = false; - gSaveContext.save.cutsceneIndex = 0xFFFD; + gSaveContext.save.cutsceneIndex = CS_INDEX_D; gSaveContext.cutsceneTrigger = 1; sDebugCamAnim.curFrame = 0.0f; sDebugCamAnim.keyframe = 0; diff --git a/src/code/z_common_data.c b/src/code/z_common_data.c index 1dfd4d241..eeb620e84 100644 --- a/src/code/z_common_data.c +++ b/src/code/z_common_data.c @@ -25,7 +25,7 @@ void SaveContext_Init(void) { gSaveContext.seqId = (u8)NA_BGM_DISABLED; gSaveContext.natureAmbienceId = NATURE_ID_DISABLED; gSaveContext.forcedSeqId = NA_BGM_GENERAL_SFX; - gSaveContext.nextCutsceneIndex = 0xFFEF; + gSaveContext.nextCutsceneIndex = NEXT_CS_INDEX_NONE; gSaveContext.cutsceneTrigger = 0; gSaveContext.chamberCutsceneNum = CHAMBER_CS_FOREST; gSaveContext.nextDayTime = NEXT_TIME_NONE; diff --git a/src/code/z_demo.c b/src/code/z_demo.c index d6b34d54c..358edd32e 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -202,7 +202,7 @@ void Cutscene_StopManual(PlayState* play, CutsceneContext* csCtx) { } void Cutscene_UpdateManual(PlayState* play, CutsceneContext* csCtx) { - if (gSaveContext.save.cutsceneIndex < 0xFFF0) { + if (gSaveContext.save.cutsceneIndex < CS_INDEX_0) { sManualCutsceneHandlers[csCtx->state](play, csCtx); } } @@ -214,14 +214,14 @@ void Cutscene_UpdateScripted(PlayState* play, CutsceneContext* csCtx) { if (CHECK_BTN_ALL(input->press.button, BTN_DLEFT) && (csCtx->state == CS_STATE_IDLE) && IS_CUTSCENE_LAYER) { gUseCutsceneCam = false; - gSaveContext.save.cutsceneIndex = 0xFFFD; + gSaveContext.save.cutsceneIndex = CS_INDEX_D; gSaveContext.cutsceneTrigger = 1; } if (CHECK_BTN_ALL(input->press.button, BTN_DUP) && (csCtx->state == CS_STATE_IDLE) && IS_CUTSCENE_LAYER && !gDebugCamEnabled) { gUseCutsceneCam = true; - gSaveContext.save.cutsceneIndex = 0xFFFD; + gSaveContext.save.cutsceneIndex = CS_INDEX_D; gSaveContext.cutsceneTrigger = 1; } } @@ -233,11 +233,11 @@ void Cutscene_UpdateScripted(PlayState* play, CutsceneContext* csCtx) { if ((gSaveContext.cutsceneTrigger != 0) && (csCtx->state == CS_STATE_IDLE)) { PRINTF(T("\nデモ開始要求 発令!", "\nDemo start request issued!")); - gSaveContext.save.cutsceneIndex = 0xFFFD; + gSaveContext.save.cutsceneIndex = CS_INDEX_D; gSaveContext.cutsceneTrigger = 1; } - if (gSaveContext.save.cutsceneIndex >= 0xFFF0) { + if (gSaveContext.save.cutsceneIndex >= CS_INDEX_0) { Cutscene_SetupScripted(play, csCtx); sScriptedCutsceneHandlers[csCtx->state](play, csCtx); } @@ -616,54 +616,54 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti gSaveContext.forceRisingButtonAlphas = true; } - gSaveContext.save.cutsceneIndex = 0; + gSaveContext.save.cutsceneIndex = CS_INDEX_NONE; switch (cmd->destination) { case CS_DEST_CUTSCENE_MAP_GANON_HORSE: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; - gSaveContext.save.cutsceneIndex = 0xFFF1; + gSaveContext.save.cutsceneIndex = CS_INDEX_1; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; case CS_DEST_CUTSCENE_MAP_THREE_GODDESSES: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FILL_WHITE; break; case CS_DEST_GERUDO_VALLEY_DIN_PART_1: play->nextEntranceIndex = ENTR_GERUDO_VALLEY_0; - gSaveContext.save.cutsceneIndex = 0xFFF1; + gSaveContext.save.cutsceneIndex = CS_INDEX_1; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FILL_WHITE; break; case CS_DEST_DEATH_MOUNTAIN_TRAIL_NAYRU: play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_0; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FILL_WHITE; break; case CS_DEST_KOKIRI_FOREST_FARORE: play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FILL_WHITE; break; case CS_DEST_CUTSCENE_MAP_TRIFORCE_CREATION: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; - gSaveContext.save.cutsceneIndex = 0xFFF2; + gSaveContext.save.cutsceneIndex = CS_INDEX_2; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FILL_WHITE; break; case CS_DEST_KOKIRI_FOREST_RECEIVE_KOKIRI_EMERALD: play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; - gSaveContext.save.cutsceneIndex = 0xFFF2; + gSaveContext.save.cutsceneIndex = CS_INDEX_2; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_INSTANT; break; @@ -676,7 +676,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti SET_EVENTCHKINF(EVENTCHKINF_45); play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF3; + gSaveContext.save.cutsceneIndex = CS_INDEX_3; play->transitionType = TRANS_TYPE_INSTANT; } else { if (!IS_CUTSCENE_LAYER) { @@ -696,21 +696,21 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case CS_DEST_GERUDO_VALLEY_DIN_PART_2: play->nextEntranceIndex = ENTR_GERUDO_VALLEY_0; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FILL_BROWN; break; case CS_DEST_LINKS_HOUSE_INTRO: play->nextEntranceIndex = ENTR_LINKS_HOUSE_0; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; case CS_DEST_KOKIRI_FOREST_INTRO: play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; - gSaveContext.save.cutsceneIndex = 0xFFF3; + gSaveContext.save.cutsceneIndex = CS_INDEX_3; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; break; @@ -737,21 +737,21 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case CS_DEST_TEMPLE_OF_TIME_KOKIRI_EMERALD_RESTORED: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF4; + gSaveContext.save.cutsceneIndex = CS_INDEX_4; play->transitionType = TRANS_TYPE_FADE_WHITE; break; case CS_DEST_TEMPLE_OF_TIME_GORON_RUBY_RESTORED: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF5; + gSaveContext.save.cutsceneIndex = CS_INDEX_5; play->transitionType = TRANS_TYPE_FADE_WHITE; break; case CS_DEST_TEMPLE_OF_TIME_ZORAS_SAPPHIRE_RESTORED: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF6; + gSaveContext.save.cutsceneIndex = CS_INDEX_6; play->transitionType = TRANS_TYPE_FADE_WHITE; break; @@ -769,13 +769,13 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; - gSaveContext.save.cutsceneIndex = 0x8000; + gSaveContext.save.cutsceneIndex = CS_INDEX_DAY; break; case CS_DEST_LAKE_HYLIA_WATER_RESTORED: play->nextEntranceIndex = ENTR_LAKE_HYLIA_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; play->transitionType = TRANS_TYPE_FADE_WHITE; break; @@ -783,14 +783,14 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti Item_Give(play, ITEM_SONG_REQUIEM); play->nextEntranceIndex = ENTR_DESERT_COLOSSUS_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; play->transitionType = TRANS_TYPE_FADE_WHITE; break; case CS_DEST_CUTSCENE_MAP_GANONDORF_DEFEATED_CREDITS: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF8; + gSaveContext.save.cutsceneIndex = CS_INDEX_8; play->transitionType = TRANS_TYPE_FADE_WHITE; break; @@ -804,28 +804,28 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti play->linkAgeOnLoad = LINK_AGE_ADULT; play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; play->transitionType = TRANS_TYPE_FADE_WHITE; break; case CS_DEST_TEMPLE_OF_TIME_KOKIRI_EMERALD_RESTORED_2: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF4; + gSaveContext.save.cutsceneIndex = CS_INDEX_4; play->transitionType = TRANS_TYPE_FADE_WHITE; break; case CS_DEST_TEMPLE_OF_TIME_GORON_RUBY_RESTORED_2: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF5; + gSaveContext.save.cutsceneIndex = CS_INDEX_5; play->transitionType = TRANS_TYPE_FADE_WHITE; break; case CS_DEST_TEMPLE_OF_TIME_ZORAS_SAPPHIRE_RESTORED_2: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF6; + gSaveContext.save.cutsceneIndex = CS_INDEX_6; play->transitionType = TRANS_TYPE_FADE_WHITE; break; @@ -855,7 +855,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti play->linkAgeOnLoad = LINK_AGE_CHILD; play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF2; + gSaveContext.save.cutsceneIndex = CS_INDEX_2; play->transitionType = TRANS_TYPE_INSTANT; break; @@ -868,28 +868,28 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case CS_DEST_CUTSCENE_MAP_GANONDORF_FROM_MASTER_SWORD: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF3; + gSaveContext.save.cutsceneIndex = CS_INDEX_3; play->transitionType = TRANS_TYPE_FADE_WHITE; break; case CS_DEST_HYRULE_FIELD_INTRO_DREAM: play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; case CS_DEST_CUTSCENE_MAP_SHEIKAH_LEGEND: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF4; + gSaveContext.save.cutsceneIndex = CS_INDEX_4; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; case CS_DEST_TEMPLE_OF_TIME_ZELDA_REVEAL: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF9; + gSaveContext.save.cutsceneIndex = CS_INDEX_9; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; @@ -897,7 +897,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti play->linkAgeOnLoad = LINK_AGE_ADULT; play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFFA; + gSaveContext.save.cutsceneIndex = CS_INDEX_A; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; @@ -910,7 +910,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case CS_DEST_KAKARIKO_VILLAGE_DRAIN_WELL: play->nextEntranceIndex = ENTR_KAKARIKO_VILLAGE_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF2; + gSaveContext.save.cutsceneIndex = CS_INDEX_2; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; @@ -940,7 +940,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti SET_EVENTCHKINF(EVENTCHKINF_54); play->nextEntranceIndex = ENTR_KAKARIKO_VILLAGE_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF1; + gSaveContext.save.cutsceneIndex = CS_INDEX_1; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; break; @@ -965,14 +965,14 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case CS_DEST_HYRULE_FIELD_FROM_ZELDAS_COURTYARD: play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; - gSaveContext.save.cutsceneIndex = 0xFFF8; + gSaveContext.save.cutsceneIndex = CS_INDEX_8; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_CIRCLE(TCA_NORMAL, TCC_WHITE, TCS_SLOW); break; case CS_DEST_TEMPLE_OF_TIME_SONG_OF_TIME: play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; - gSaveContext.save.cutsceneIndex = 0xFFF7; + gSaveContext.save.cutsceneIndex = CS_INDEX_7; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_INSTANT; break; @@ -990,56 +990,56 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti #endif play->linkAgeOnLoad = LINK_AGE_CHILD; play->nextEntranceIndex = ENTR_GERUDO_VALLEY_0; - gSaveContext.save.cutsceneIndex = 0xFFF2; + gSaveContext.save.cutsceneIndex = CS_INDEX_2; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; case CS_DEST_GERUDO_FORTRESS_CREDITS: play->nextEntranceIndex = ENTR_GERUDOS_FORTRESS_0; - gSaveContext.save.cutsceneIndex = 0xFFF1; + gSaveContext.save.cutsceneIndex = CS_INDEX_1; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; case CS_DEST_KAKARIKO_VILLAGE_CREDITS: play->nextEntranceIndex = ENTR_KAKARIKO_VILLAGE_0; - gSaveContext.save.cutsceneIndex = 0xFFF4; + gSaveContext.save.cutsceneIndex = CS_INDEX_4; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; case CS_DEST_DEATH_MOUNTAIN_TRAIL_CREDITS_PART_1: play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_0; - gSaveContext.save.cutsceneIndex = 0xFFF3; + gSaveContext.save.cutsceneIndex = CS_INDEX_3; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; case CS_DEST_GORON_CITY_CREDITS: play->nextEntranceIndex = ENTR_GORON_CITY_0; - gSaveContext.save.cutsceneIndex = 0xFFF1; + gSaveContext.save.cutsceneIndex = CS_INDEX_1; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; case CS_DEST_LAKE_HYLIA_CREDITS: play->nextEntranceIndex = ENTR_LAKE_HYLIA_0; - gSaveContext.save.cutsceneIndex = 0xFFF1; + gSaveContext.save.cutsceneIndex = CS_INDEX_1; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; case CS_DEST_ZORAS_FOUNTAIN_CREDITS: play->nextEntranceIndex = ENTR_ZORAS_FOUNTAIN_0; - gSaveContext.save.cutsceneIndex = 0xFFF2; + gSaveContext.save.cutsceneIndex = CS_INDEX_2; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; case CS_DEST_ZORAS_DOMAIN_CREDITS: play->nextEntranceIndex = ENTR_ZORAS_DOMAIN_0; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; @@ -1047,21 +1047,21 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case CS_DEST_KOKIRI_FOREST_CREDITS_PART_1: play->linkAgeOnLoad = LINK_AGE_ADULT; play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; - gSaveContext.save.cutsceneIndex = 0xFFF6; + gSaveContext.save.cutsceneIndex = CS_INDEX_6; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; case CS_DEST_KOKIRI_FOREST_CREDITS_PART_2: play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; - gSaveContext.save.cutsceneIndex = 0xFFF7; + gSaveContext.save.cutsceneIndex = CS_INDEX_7; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; case CS_DEST_HYRULE_FIELD_CREDITS: play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; - gSaveContext.save.cutsceneIndex = 0xFFF5; + gSaveContext.save.cutsceneIndex = CS_INDEX_5; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; @@ -1069,7 +1069,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case CS_DEST_LON_LON_RANCH_CREDITS_PART_1_ALT: play->linkAgeOnLoad = LINK_AGE_CHILD; play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; - gSaveContext.save.cutsceneIndex = 0xFFF2; + gSaveContext.save.cutsceneIndex = CS_INDEX_2; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; break; @@ -1089,7 +1089,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case CS_DEST_CUTSCENE_MAP_DEKU_SPROUT_PART_2: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF5; + gSaveContext.save.cutsceneIndex = CS_INDEX_5; play->transitionType = TRANS_TYPE_FADE_BLACK; break; @@ -1102,7 +1102,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case CS_DEST_DEATH_MOUNTAIN_TRAIL_CREDITS_PART_2: play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF4; + gSaveContext.save.cutsceneIndex = CS_INDEX_4; play->transitionType = TRANS_TYPE_FADE_BLACK; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; @@ -1115,14 +1115,14 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti play->linkAgeOnLoad = LINK_AGE_CHILD; play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF1; + gSaveContext.save.cutsceneIndex = CS_INDEX_1; play->transitionType = TRANS_TYPE_FADE_BLACK; break; case CS_DEST_ZELDAS_COURTYARD_CREDITS: play->nextEntranceIndex = ENTR_CASTLE_COURTYARD_ZELDA_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; play->transitionType = TRANS_TYPE_FADE_BLACK; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; break; @@ -1131,14 +1131,14 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti play->linkAgeOnLoad = LINK_AGE_CHILD; play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF2; + gSaveContext.save.cutsceneIndex = CS_INDEX_2; play->transitionType = TRANS_TYPE_FADE_BLACK; break; case CS_DEST_LON_LON_RANCH_CREDITS_PART_2: play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF3; + gSaveContext.save.cutsceneIndex = CS_INDEX_3; play->transitionType = TRANS_TYPE_FADE_WHITE; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; break; @@ -1147,7 +1147,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti play->linkAgeOnLoad = LINK_AGE_CHILD; play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF4; + gSaveContext.save.cutsceneIndex = CS_INDEX_4; play->transitionType = TRANS_TYPE_FADE_BLACK; break; @@ -1155,7 +1155,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti play->linkAgeOnLoad = LINK_AGE_ADULT; play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF5; + gSaveContext.save.cutsceneIndex = CS_INDEX_5; play->transitionType = TRANS_TYPE_FADE_BLACK; break; @@ -1163,14 +1163,14 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti play->linkAgeOnLoad = LINK_AGE_CHILD; play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF6; + gSaveContext.save.cutsceneIndex = CS_INDEX_6; play->transitionType = TRANS_TYPE_FADE_BLACK; break; case CS_DEST_LON_LON_RANCH_CREDITS_PART_5: play->nextEntranceIndex = ENTR_LON_LON_RANCH_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF7; + gSaveContext.save.cutsceneIndex = CS_INDEX_7; play->transitionType = TRANS_TYPE_FADE_BLACK; break; @@ -1210,7 +1210,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti GET_EVENTCHKINF(EVENTCHKINF_4A)) { play->nextEntranceIndex = ENTR_TEMPLE_OF_TIME_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF3; + gSaveContext.save.cutsceneIndex = CS_INDEX_3; play->transitionType = TRANS_TYPE_FADE_BLACK; } else { switch (gSaveContext.sceneLayer) { @@ -1229,7 +1229,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case 10: play->nextEntranceIndex = ENTR_LAKE_HYLIA_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; play->transitionType = TRANS_TYPE_FADE_WHITE; break; } @@ -1240,7 +1240,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW)) { play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF1; + gSaveContext.save.cutsceneIndex = CS_INDEX_1; play->transitionType = TRANS_TYPE_FADE_WHITE_FAST; } else { SET_EVENTCHKINF(EVENTCHKINF_C8); @@ -1255,7 +1255,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) { play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF1; + gSaveContext.save.cutsceneIndex = CS_INDEX_1; play->transitionType = TRANS_TYPE_FADE_WHITE_FAST; } else { play->nextEntranceIndex = ENTR_GRAVEYARD_8; @@ -1281,7 +1281,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case CS_DEST_KOKIRI_FOREST_FROM_CHAMBER_OF_SAGES: play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0; - gSaveContext.save.cutsceneIndex = 0xFFF8; + gSaveContext.save.cutsceneIndex = CS_INDEX_8; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; @@ -1302,7 +1302,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case CS_DEST_HYRULE_FIELD_TITLE_SCREEN: play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF3; + gSaveContext.save.cutsceneIndex = CS_INDEX_3; play->transitionType = TRANS_TYPE_FADE_BLACK; break; @@ -1311,7 +1311,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case TITLE_DEMO_SPIRIT_TEMPLE: play->nextEntranceIndex = ENTR_SPIRIT_TEMPLE_BOSS_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF2; + gSaveContext.save.cutsceneIndex = CS_INDEX_2; play->transitionType = TRANS_TYPE_FADE_BLACK; sTitleDemoDestination++; break; @@ -1319,7 +1319,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case TITLE_DEMO_DEATH_MOUNTAIN_CRATER: play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_CRATER_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF1; + gSaveContext.save.cutsceneIndex = CS_INDEX_1; play->transitionType = TRANS_TYPE_FADE_BLACK; sTitleDemoDestination++; break; @@ -1327,7 +1327,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case TITLE_DEMO_GANONDORF_HORSE: play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF6; + gSaveContext.save.cutsceneIndex = CS_INDEX_6; play->transitionType = TRANS_TYPE_FADE_BLACK; sTitleDemoDestination = TITLE_DEMO_SPIRIT_TEMPLE; break; @@ -1337,7 +1337,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti case CS_DEST_GRAVEYARD_SUNS_SONG_PART_2: play->nextEntranceIndex = ENTR_GRAVEYARD_0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.cutsceneIndex = 0xFFF1; + gSaveContext.save.cutsceneIndex = CS_INDEX_1; play->transitionType = TRANS_TYPE_FADE_BLACK; break; @@ -1390,10 +1390,16 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti play->csCtx.script = SEGMENTED_TO_VIRTUAL(gTowerBarrierCs); play->csCtx.curFrame = 0; gSaveContext.cutsceneTrigger = 1; - gSaveContext.save.cutsceneIndex = 0xFFFF; + // Force cutsceneIndex to CS_INDEX_F so that CS_STATE_STOP is handled by the "scripted" system's + // CutsceneHandler_StopScript. + // Otherwise, because cutsceneIndex is set to 0 above, CS_STATE_STOP would be handled by the + // "manual" cutscene system's CutsceneHandler_StopManual, which does not terminate the cutscene + // camera, resulting in a softlock. + gSaveContext.save.cutsceneIndex = CS_INDEX_F; csCtx->state = CS_STATE_STOP; } else { - gSaveContext.save.cutsceneIndex = 0xFFFF; + // Same as above + gSaveContext.save.cutsceneIndex = CS_INDEX_F; csCtx->state = CS_STATE_STOP; } break; @@ -1430,7 +1436,7 @@ void CutsceneCmd_Destination(PlayState* play, CutsceneContext* csCtx, CsCmdDesti Audio_SetSfxBanksMute(0x6F); play->linkAgeOnLoad = LINK_AGE_ADULT; play->nextEntranceIndex = ENTR_HYRULE_FIELD_0; - gSaveContext.save.cutsceneIndex = 0xFFF7; + gSaveContext.save.cutsceneIndex = CS_INDEX_7; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; break; @@ -2237,7 +2243,7 @@ void Cutscene_ProcessScript(PlayState* play, CutsceneContext* csCtx, u8* script) } void CutsceneHandler_RunScript(PlayState* play, CutsceneContext* csCtx) { - if (gSaveContext.save.cutsceneIndex >= 0xFFF0) { + if (gSaveContext.save.cutsceneIndex >= CS_INDEX_0) { #if DEBUG_FEATURES if (BREG(0) != 0) { Gfx* displayList; @@ -2290,7 +2296,7 @@ void CutsceneHandler_StopScript(PlayState* play, CutsceneContext* csCtx) { PRINTF(T("\n\n\n\n\nやっぱりここかいな", "\n\n\n\n\nThis is it after all")); - gSaveContext.save.cutsceneIndex = 0; + gSaveContext.save.cutsceneIndex = CS_INDEX_NONE; gSaveContext.gameMode = GAMEMODE_NORMAL; if (gUseCutsceneCam) { @@ -2316,10 +2322,10 @@ void Cutscene_SetupScripted(PlayState* play, CutsceneContext* csCtx) { u8 i; if ((gSaveContext.cutsceneTrigger != 0) && (csCtx->state == CS_STATE_IDLE) && !Player_InCsMode(play)) { - gSaveContext.save.cutsceneIndex = 0xFFFD; + gSaveContext.save.cutsceneIndex = CS_INDEX_D; } - if ((gSaveContext.save.cutsceneIndex >= 0xFFF0) && (csCtx->state == CS_STATE_IDLE)) { + if ((gSaveContext.save.cutsceneIndex >= CS_INDEX_0) && (csCtx->state == CS_STATE_IDLE)) { CutsceneFlags_Unset(play, 0); sCurTextId = 0; @@ -2401,7 +2407,7 @@ void Cutscene_HandleEntranceTriggers(PlayState* play) { if ((gSaveContext.save.entranceIndex == entranceCutscene->entrance) && (!Flags_GetEventChkInf(entranceCutscene->flag) || (entranceCutscene->flag == EVENTCHKINF_EPONA_OBTAINED)) && - (gSaveContext.save.cutsceneIndex < 0xFFF0) && ((u8)gSaveContext.save.linkAge == requiredAge) && + (gSaveContext.save.cutsceneIndex < CS_INDEX_0) && ((u8)gSaveContext.save.linkAge == requiredAge) && (gSaveContext.respawnFlag <= 0)) { Flags_SetEventChkInf(entranceCutscene->flag); Cutscene_SetScript(play, entranceCutscene->script); @@ -2416,32 +2422,32 @@ void Cutscene_HandleConditionalTriggers(PlayState* play) { PRINTF("\ngame_info.mode=[%d] restart_flag", ((void)0, gSaveContext.respawnFlag)); if ((gSaveContext.gameMode == GAMEMODE_NORMAL) && (gSaveContext.respawnFlag <= 0) && - (gSaveContext.save.cutsceneIndex < 0xFFF0)) { + (gSaveContext.save.cutsceneIndex < CS_INDEX_0)) { if ((gSaveContext.save.entranceIndex == ENTR_DESERT_COLOSSUS_1) && !Flags_GetEventChkInf(EVENTCHKINF_AC)) { Flags_SetEventChkInf(EVENTCHKINF_AC); gSaveContext.save.entranceIndex = ENTR_DESERT_COLOSSUS_0; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; } else if ((gSaveContext.save.entranceIndex == ENTR_KAKARIKO_VILLAGE_0) && LINK_IS_ADULT && GET_EVENTCHKINF(EVENTCHKINF_48) && GET_EVENTCHKINF(EVENTCHKINF_49) && GET_EVENTCHKINF(EVENTCHKINF_4A) && !Flags_GetEventChkInf(EVENTCHKINF_AA)) { Flags_SetEventChkInf(EVENTCHKINF_AA); - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; } else if ((gSaveContext.save.entranceIndex == ENTR_LOST_WOODS_9) && !Flags_GetEventChkInf(EVENTCHKINF_C1)) { Flags_SetEventChkInf(EVENTCHKINF_C1); Item_Give(play, ITEM_OCARINA_FAIRY); gSaveContext.save.entranceIndex = ENTR_LOST_WOODS_0; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; } else if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) && CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) && LINK_IS_ADULT && !Flags_GetEventChkInf(EVENTCHKINF_C4) && (gEntranceTable[((void)0, gSaveContext.save.entranceIndex)].sceneId == SCENE_TEMPLE_OF_TIME)) { Flags_SetEventChkInf(EVENTCHKINF_C4); gSaveContext.save.entranceIndex = ENTR_TEMPLE_OF_TIME_0; - gSaveContext.save.cutsceneIndex = 0xFFF8; + gSaveContext.save.cutsceneIndex = CS_INDEX_8; } else if (!Flags_GetEventChkInf(EVENTCHKINF_C7) && (gEntranceTable[((void)0, gSaveContext.save.entranceIndex)].sceneId == SCENE_GANON_BOSS)) { Flags_SetEventChkInf(EVENTCHKINF_C7); gSaveContext.save.entranceIndex = ENTR_GANON_BOSS_0; - gSaveContext.save.cutsceneIndex = 0xFFF0; + gSaveContext.save.cutsceneIndex = CS_INDEX_0; } } } diff --git a/src/code/z_horse.c b/src/code/z_horse.c index ab556c3d1..93eec4bd3 100644 --- a/src/code/z_horse.c +++ b/src/code/z_horse.c @@ -164,15 +164,15 @@ typedef struct HorseCutsceneSpawn { void Horse_SetupInCutscene(PlayState* play, Player* player) { static HorseCutsceneSpawn horseSpawns[] = { - { SCENE_GERUDOS_FORTRESS, 0xFFF0, { 3600, 1413, 360 }, 0x8001, HORSE_PTYPE_HORSEBACK_ARCHERY }, - { SCENE_LON_LON_RANCH, 0xFFF0, { -250, 1, -1580 }, 0x4000, HORSE_PTYPE_6 }, // Horse Race - { SCENE_LON_LON_RANCH, 0xFFF1, { 0, 0, 0 }, 0x0000, HORSE_PTYPE_5 }, // Learned Epona's Song - { SCENE_LON_LON_RANCH, 0xFFF5, { 0, 0, 0 }, 0x0000, HORSE_PTYPE_7 }, // Credits - { SCENE_HYRULE_FIELD, 0xFFF3, { -2961, 313, 7700 }, 0x0000, HORSE_PTYPE_7 }, // Title Screen - { SCENE_HYRULE_FIELD, 0xFFF4, { -1900, 313, 7015 }, 0x0000, HORSE_PTYPE_7 }, - { SCENE_HYRULE_FIELD, 0xFFF5, { -4043, 313, 6933 }, 0x0000, HORSE_PTYPE_7 }, // Credits - { SCENE_HYRULE_FIELD, 0xFFF6, { -4043, 313, 6933 }, 0x0000, HORSE_PTYPE_7 }, // Unused. Hopping Lon Lon - // Ranch North Gate + { SCENE_GERUDOS_FORTRESS, CS_INDEX_0, { 3600, 1413, 360 }, 0x8001, HORSE_PTYPE_HORSEBACK_ARCHERY }, + { SCENE_LON_LON_RANCH, CS_INDEX_0, { -250, 1, -1580 }, 0x4000, HORSE_PTYPE_6 }, // Horse Race + { SCENE_LON_LON_RANCH, CS_INDEX_1, { 0, 0, 0 }, 0x0000, HORSE_PTYPE_5 }, // Learned Epona's Song + { SCENE_LON_LON_RANCH, CS_INDEX_5, { 0, 0, 0 }, 0x0000, HORSE_PTYPE_7 }, // Credits + { SCENE_HYRULE_FIELD, CS_INDEX_3, { -2961, 313, 7700 }, 0x0000, HORSE_PTYPE_7 }, // Title Screen + { SCENE_HYRULE_FIELD, CS_INDEX_4, { -1900, 313, 7015 }, 0x0000, HORSE_PTYPE_7 }, + { SCENE_HYRULE_FIELD, CS_INDEX_5, { -4043, 313, 6933 }, 0x0000, HORSE_PTYPE_7 }, // Credits + { SCENE_HYRULE_FIELD, CS_INDEX_6, { -4043, 313, 6933 }, 0x0000, HORSE_PTYPE_7 }, // Unused. Hopping Lon Lon + // Ranch North Gate }; s32 pad; s32 i; @@ -235,7 +235,7 @@ void Horse_SetupInCutscene(PlayState* play, Player* player) { (((void)0, gSaveContext.save.cutsceneIndex) == horseSpawns[i].cutsceneIndex)) { if (horseSpawns[i].type == HORSE_PTYPE_7) { if ((play->sceneId == SCENE_LON_LON_RANCH) && - (((void)0, gSaveContext.save.cutsceneIndex) == 0xFFF1)) { + (((void)0, gSaveContext.save.cutsceneIndex) == CS_INDEX_1)) { horseSpawns[i].pos.x = player->actor.world.pos.x; horseSpawns[i].pos.y = player->actor.world.pos.y; horseSpawns[i].pos.z = player->actor.world.pos.z; diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index b3ef53164..6b865df45 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -72,9 +72,9 @@ void KaleidoSetup_Update(PlayState* play) { if (!IS_PAUSED(pauseCtx) && play->gameOverCtx.state == GAMEOVER_INACTIVE && play->transitionTrigger == TRANS_TRIGGER_OFF && play->transitionMode == TRANS_MODE_OFF && - gSaveContext.save.cutsceneIndex < 0xFFF0 && gSaveContext.nextCutsceneIndex < 0xFFF0 && !Play_InCsMode(play) && - play->shootingGalleryStatus <= 1 && gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY && - gSaveContext.magicState != MAGIC_STATE_FILL && + gSaveContext.save.cutsceneIndex < CS_INDEX_0 && gSaveContext.nextCutsceneIndex < CS_INDEX_0 && + !Play_InCsMode(play) && play->shootingGalleryStatus <= 1 && + gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY && gSaveContext.magicState != MAGIC_STATE_FILL && (play->sceneId != SCENE_BOMBCHU_BOWLING_ALLEY || !Flags_GetSwitch(play, 0x38))) { if (CHECK_BTN_ALL(input->cur.button, BTN_L) && CHECK_BTN_ALL(input->press.button, BTN_CUP)) { diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index 83699c82f..5da43b4c2 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -2642,7 +2642,7 @@ void Environment_StopStormNatureAmbience(PlayState* play) { void Environment_WarpSongLeave(PlayState* play) { gWeatherMode = WEATHER_MODE_CLEAR; - gSaveContext.save.cutsceneIndex = 0; + gSaveContext.save.cutsceneIndex = CS_INDEX_NONE; gSaveContext.respawnFlag = -3; play->nextEntranceIndex = gSaveContext.respawn[RESPAWN_MODE_RETURN].entranceIndex; play->transitionTrigger = TRANS_TRIGGER_START; diff --git a/src/code/z_message.c b/src/code/z_message.c index 7ebe57ae7..09647912c 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -4379,7 +4379,7 @@ void Message_Update(PlayState* play) { if (msgCtx->textId != 0x2061 && msgCtx->textId != 0x2025 && msgCtx->textId != 0x208C && ((msgCtx->textId < 0x88D || msgCtx->textId >= 0x893) || msgCtx->choiceIndex != 0) && - (msgCtx->textId != 0x3055 && gSaveContext.save.cutsceneIndex < 0xFFF0)) { + (msgCtx->textId != 0x3055 && gSaveContext.save.cutsceneIndex < CS_INDEX_0)) { PRINTF("=== day_time=%x ", ((void)0, gSaveContext.save.cutsceneIndex)); if (play->activeCamId == CAM_ID_MAIN) { if (gSaveContext.prevHudVisibilityMode == HUD_VISIBILITY_NO_CHANGE || diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index fa8ec09c5..1709031cf 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -670,8 +670,8 @@ void func_80083108(PlayState* play) { s16 i; s16 sp28 = false; - if ((gSaveContext.save.cutsceneIndex < 0xFFF0) || - ((play->sceneId == SCENE_LON_LON_RANCH) && (gSaveContext.save.cutsceneIndex == 0xFFF0))) { + if ((gSaveContext.save.cutsceneIndex < CS_INDEX_0) || + ((play->sceneId == SCENE_LON_LON_RANCH) && (gSaveContext.save.cutsceneIndex == CS_INDEX_0))) { gSaveContext.forceRisingButtonAlphas = false; if ((player->stateFlags1 & PLAYER_STATE1_23) || (play->shootingGalleryStatus > 1) || @@ -3554,7 +3554,7 @@ void Interface_Draw(PlayState* play) { (Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT)) { // Trade quest timer reached 0 sSubTimerStateTimer = 40; - gSaveContext.save.cutsceneIndex = 0; + gSaveContext.save.cutsceneIndex = CS_INDEX_NONE; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; gSaveContext.subTimerState = SUBTIMER_STATE_OFF; @@ -3884,7 +3884,7 @@ void Interface_Draw(PlayState* play) { (play->sceneId != SCENE_INSIDE_GANONS_CASTLE_COLLAPSE))) { sSubTimerStateTimer = 40; gSaveContext.subTimerState = SUBTIMER_STATE_RESPAWN; - gSaveContext.save.cutsceneIndex = 0; + gSaveContext.save.cutsceneIndex = CS_INDEX_NONE; Message_StartTextbox(play, 0x71B0, NULL); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); } else { diff --git a/src/code/z_play.c b/src/code/z_play.c index cff1d3970..8d73e9e56 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -93,7 +93,7 @@ void Play_SetViewpoint(PlayState* this, s16 viewpoint) { this->viewpoint = viewpoint; - if ((R_SCENE_CAM_TYPE != SCENE_CAM_TYPE_FIXED_SHOP_VIEWPOINT) && (gSaveContext.save.cutsceneIndex < 0xFFF0)) { + if ((R_SCENE_CAM_TYPE != SCENE_CAM_TYPE_FIXED_SHOP_VIEWPOINT) && (gSaveContext.save.cutsceneIndex < CS_INDEX_0)) { // Play a sfx when the player toggles the camera SFX_PLAY_CENTERED((viewpoint == VIEWPOINT_LOCKED) ? NA_SE_SY_CAMERA_ZOOM_DOWN : NA_SE_SY_CAMERA_ZOOM_UP); } @@ -350,13 +350,13 @@ void Play_Init(GameState* thisx) { AnimTaskQueue_Reset(&this->animTaskQueue); Cutscene_InitContext(this, &this->csCtx); - if (gSaveContext.nextCutsceneIndex != 0xFFEF) { + if (gSaveContext.nextCutsceneIndex != NEXT_CS_INDEX_NONE) { gSaveContext.save.cutsceneIndex = gSaveContext.nextCutsceneIndex; - gSaveContext.nextCutsceneIndex = 0xFFEF; + gSaveContext.nextCutsceneIndex = NEXT_CS_INDEX_NONE; } - if (gSaveContext.save.cutsceneIndex == 0xFFFD) { - gSaveContext.save.cutsceneIndex = 0; + if (gSaveContext.save.cutsceneIndex == CS_INDEX_D) { + gSaveContext.save.cutsceneIndex = CS_INDEX_NONE; } if (gSaveContext.nextDayTime != NEXT_TIME_NONE) { @@ -372,10 +372,10 @@ void Play_Init(GameState* thisx) { Cutscene_HandleConditionalTriggers(this); - if (gSaveContext.gameMode != GAMEMODE_NORMAL || gSaveContext.save.cutsceneIndex >= 0xFFF0) { + if (gSaveContext.gameMode != GAMEMODE_NORMAL || gSaveContext.save.cutsceneIndex >= CS_INDEX_0) { gSaveContext.nayrusLoveTimer = 0; Magic_Reset(this); - gSaveContext.sceneLayer = SCENE_LAYER_CUTSCENE_FIRST + (gSaveContext.save.cutsceneIndex & 0xF); + gSaveContext.sceneLayer = GET_CUTSCENE_LAYER(gSaveContext.save.cutsceneIndex); } else if (!LINK_IS_ADULT && IS_DAY) { gSaveContext.sceneLayer = SCENE_LAYER_CHILD_DAY; } else if (!LINK_IS_ADULT && !IS_DAY) { @@ -625,7 +625,7 @@ void Play_Update(PlayState* this) { Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_NOTHING); - if (gSaveContext.save.cutsceneIndex >= 0xFFF0) { + if (gSaveContext.save.cutsceneIndex >= CS_INDEX_0) { sceneLayer = SCENE_LAYER_CUTSCENE_FIRST + (gSaveContext.save.cutsceneIndex & 0xF); } diff --git a/src/code/z_scene.c b/src/code/z_scene.c index 65503d0cc..a3182a2f8 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -396,7 +396,7 @@ BAD_RETURN(s32) Scene_CommandTimeSettings(PlayState* play, SceneCmd* cmd) { play->envCtx.sunPos.y = (Math_CosS(((void)0, gSaveContext.save.dayTime) - CLOCK_TIME(12, 0)) * 120.0f) * 25.0f; play->envCtx.sunPos.z = (Math_CosS(((void)0, gSaveContext.save.dayTime) - CLOCK_TIME(12, 0)) * 20.0f) * 25.0f; - if (((play->envCtx.sceneTimeSpeed == 0) && (gSaveContext.save.cutsceneIndex < 0xFFF0)) || + if (((play->envCtx.sceneTimeSpeed == 0) && (gSaveContext.save.cutsceneIndex < CS_INDEX_0)) || (gSaveContext.save.entranceIndex == ENTR_LAKE_HYLIA_8)) { #if OOT_VERSION >= PAL_1_0 gSaveContext.skyboxTime = ((void)0, gSaveContext.save.dayTime); @@ -459,7 +459,7 @@ BAD_RETURN(s32) Scene_CommandAlternateHeaderList(PlayState* play, SceneCmd* cmd) PRINTF("\n[ZU]sceneset time =[%X]", ((void)0, gSaveContext.save.cutsceneIndex)); PRINTF("\n[ZU]sceneset counter=[%X]", ((void)0, gSaveContext.sceneLayer)); - if (gSaveContext.sceneLayer != 0) { + if (gSaveContext.sceneLayer != SCENE_LAYER_CHILD_DAY) { SceneCmd* altHeader = ((SceneCmd**)SEGMENTED_TO_VIRTUAL(cmd->altHeaders.data))[gSaveContext.sceneLayer - 1]; if (altHeader != NULL) { @@ -502,7 +502,7 @@ BAD_RETURN(s32) Scene_CommandMiscSettings(PlayState* play, SceneCmd* cmd) { if (((play->sceneId >= SCENE_HYRULE_FIELD) && (play->sceneId <= SCENE_OUTSIDE_GANONS_CASTLE)) || ((play->sceneId >= SCENE_MARKET_ENTRANCE_DAY) && (play->sceneId <= SCENE_TEMPLE_OF_TIME_EXTERIOR_RUINS))) { - if (gSaveContext.save.cutsceneIndex < 0xFFF0) { + if (gSaveContext.save.cutsceneIndex < CS_INDEX_0) { gSaveContext.save.info.worldMapAreaData |= gBitFlags[((void)0, gSaveContext.worldMapArea)]; PRINTF("000 area_arrival=%x (%d)\n", gSaveContext.save.info.worldMapAreaData, ((void)0, gSaveContext.worldMapArea)); @@ -515,15 +515,15 @@ void Scene_SetTransitionForNextEntrance(PlayState* play) { if (!IS_DAY) { if (!LINK_IS_ADULT) { - entranceIndex = play->nextEntranceIndex + 1; + entranceIndex = play->nextEntranceIndex + SCENE_LAYER_CHILD_NIGHT; } else { - entranceIndex = play->nextEntranceIndex + 3; + entranceIndex = play->nextEntranceIndex + SCENE_LAYER_ADULT_NIGHT; } } else { if (!LINK_IS_ADULT) { - entranceIndex = play->nextEntranceIndex; + entranceIndex = play->nextEntranceIndex + SCENE_LAYER_CHILD_DAY; } else { - entranceIndex = play->nextEntranceIndex + 2; + entranceIndex = play->nextEntranceIndex + SCENE_LAYER_ADULT_DAY; } } diff --git a/src/code/z_sram.c b/src/code/z_sram.c index 17bfb5baa..c1a514a94 100644 --- a/src/code/z_sram.c +++ b/src/code/z_sram.c @@ -859,11 +859,11 @@ void Sram_InitSave(FileSelectState* fileSelect, SramContext* sramCtx) { gSaveContext.save.entranceIndex = ENTR_LINKS_HOUSE_0; gSaveContext.save.linkAge = LINK_AGE_CHILD; gSaveContext.save.dayTime = CLOCK_TIME(10, 0); - gSaveContext.save.cutsceneIndex = 0xFFF1; + gSaveContext.save.cutsceneIndex = CS_INDEX_1; #if DEBUG_FEATURES if (fileSelect->buttonIndex == 0) { - gSaveContext.save.cutsceneIndex = 0; + gSaveContext.save.cutsceneIndex = CS_INDEX_NONE; } #endif |
