Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Enhancement] Add Moon Crash Cutscene Skip to Story Cutscenes time savers #970

Open
wants to merge 4 commits into
base: develop
Choose a base branch
from

Conversation

JoshSanch
Copy link
Contributor

@JoshSanch JoshSanch commented Jan 27, 2025

Getting a game over on the first cycle without saving after using Skip Intro Sequence creates a weird behavior that makes this cutscene skip seem strange - but it also occurs when the cutscene skip is not used. Seems to be an issue with the Skip Intro Sequence which is in use in all video examples here - I have added links here to view the behaviors for reference.

Link to view implementation behavior: https://www.youtube.com/watch?v=37N_wjt-yB4

Links to view quirky behavior when Moon Crash occurs on the first cycle without saving (Skip Misc Interactions enabled/disabled):
https://youtu.be/kvy4NSR1s9w (Moon Crash CS Enabled)
https://youtu.be/nB7_fK1Rmrc (Moon Crash CS Disabled)

Build Artifacts

@JoshSanch JoshSanch changed the title Feat: Add Moon Crash Cutscene Skip to Misc Interactions time savers [Enhancement] Add Moon Crash Cutscene Skip to Misc Interactions time savers Jan 27, 2025
@Eblo Eblo mentioned this pull request Jan 27, 2025
46 tasks
Copy link
Contributor

@garrettjoecox garrettjoecox left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code mostly looks good, but I'd like if we could get some thorough QA on this to ensure it doesn't break any vanilla behavior

@JoshSanch JoshSanch changed the title [Enhancement] Add Moon Crash Cutscene Skip to Misc Interactions time savers [Enhancement] Add Moon Crash Cutscene Skip to Story Cutscenes time savers Feb 6, 2025
@Eblo
Copy link
Contributor

Eblo commented Mar 1, 2025

tl;dr I found many moon crash and saving issues, but none of them seem logically related to this enhancement, nor does anything in this enhancement's code seem like it could cause what I've seen

There were a number of things I wanted to verify still work correctly with this enhancement (whether Razor sword, bottles, stolen gear, and consumables honor the player's SoT reset configuration), but I can't because of other issues that are probably unrelated to this enhancement. I'm questioning how much I understand about the moon crash now since I don't think I've ever battle tested that aspect of this game.

Getting a game over on the first cycle without saving after using Skip Intro Sequence creates a weird behavior that makes this cutscene skip seem strange - but it also occurs when the cutscene skip is not used. Seems to be an issue with the Skip Intro Sequence which is in use in all video examples here

image

I seem to be getting these issues no matter what my time saver settings are, and even if I have actually saved. This includes playing through the entire intro up to the first cycle, or playing in subsequent cycles. This happens even with "Skip Story Cutscenes" disabled, and therefore this enhancement does not run, so that much is probably unrelated.

  • Various saves are just throwing me back to the start of the intro when I load them. Happens with first cycle pause saves (which may be unforeseen consequences of saving during a part of the game that wasn't built for it), but also happens with a legitimate Song of Time save from playing atop the Clock Tower. Since the moon crash isn't a factor here, again I think it's unrelated to this enhancement, but a big issue nonetheless.
  • If I moon crash during first cycle, Link will always be human in the Clock Tower interior cutscene. The Happy Mask Salesman will be invisible for most of it as well. My inventory is wiped, but maybe that's a first cycle thing?
  • If I moon crash after first cycle, the Clock Tower interior plays the "wow you got your instrument!" cutscene. Link will always be Deku as expected for that scene. I can do this multiple times in a row; it never seems to change what Happy Mask Salesman cutscene I get. This wipes some things from my inventory, including Deku Mask, Razor Sword, bottles, and other masks.

#define CVAR_NAME "gEnhancements.Cutscenes.SkipStoryCutscenes"
#define CVAR CVarGetInteger(CVAR_NAME, 0)

#define TERMINA_FIELD_MOON_CRASH_CS_ENTRANCE 0x54C0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not a fan of these defines, instead we should just compare against the entrance values using the entrance macro.

If you really want the define, then it should contain the ENTRANCE value instead of these hardcoded numbers

In this case its ENTRANCE(TERMINA_FIELD, 12)

#define TERMINA_FIELD_MOON_CRASH_CS_ENTRANCE 0x54C0

#define MOON_CRASH_NEW_CYCLE_CS_ID 13
#define MOON_CRASH_NEW_CYCLE_ENTRANCE_ID 0xC030
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above, but this value is ENTRANCE(CLOCK_TOWER_INTERIOR, 3)

// IT MUST BE CALLED HERE IF THAT CUTSCENE IS SKIPPED OR ELSE THE GAME STATE WILL NOT RESET CORRECTLY!
Sram_ResetSaveFromMoonCrash(&gPlayState->sramCtx);

gSaveContext.save.cutsceneIndex = MOON_CRASH_NEW_CYCLE_CS_ID;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gSaveContext.save.cutsceneIndex should remain at 0 for the clock tower interior entrance.

This value MOON_CRASH_NEW_CYCLE_CS_ID being 13 appears to be a misunderstanding with the cutscene ID used by the salesman when the salesman inits. His logic handles choosing the right cs ID based on the players inventory.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants