-
Notifications
You must be signed in to change notification settings - Fork 91
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
base: develop
Are you sure you want to change the base?
[Enhancement] Add Moon Crash Cutscene Skip to Story Cutscenes time savers #970
Conversation
There was a problem hiding this 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
mm/2s2h/Enhancements/Cutscenes/MiscInteractions/SkipMoonCrash.cpp
Outdated
Show resolved
Hide resolved
mm/2s2h/Enhancements/Cutscenes/MiscInteractions/SkipMoonCrash.cpp
Outdated
Show resolved
Hide resolved
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
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.
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.
|
#define CVAR_NAME "gEnhancements.Cutscenes.SkipStoryCutscenes" | ||
#define CVAR CVarGetInteger(CVAR_NAME, 0) | ||
|
||
#define TERMINA_FIELD_MOON_CRASH_CS_ENTRANCE 0x54C0 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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; |
There was a problem hiding this comment.
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.
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