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 106cb1021b, 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>
This commit is contained in:
Leonid Kapitonov
2025-06-17 15:54:52 +02:00
committed by GitHub
parent bc5839a32c
commit b11fdab792
33 changed files with 287 additions and 233 deletions
+7 -7
View File
@@ -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;
}
}