Skip to content

Skip Kakariko and Hyrule Castle gate cutscenes#5314

Merged
Malkierian merged 8 commits intoHarbourMasters:develop-blairfrom
JordanLongstaff:skip-kak-gate-cs
May 7, 2025
Merged

Skip Kakariko and Hyrule Castle gate cutscenes#5314
Malkierian merged 8 commits intoHarbourMasters:develop-blairfrom
JordanLongstaff:skip-kak-gate-cs

Conversation

@JordanLongstaff
Copy link
Contributor

@JordanLongstaff JordanLongstaff commented Apr 4, 2025

Fixes #5264

There are three cutscenes to skip. First, if you show the guard Zelda's Letter, he'll open the gate:

skip-kak-gate-cs.mp4

Second, if you refuse to sell him Keaton's Mask, he'll close it:

skip-kak-gate-cs-2.mp4

Third, if you then do sell it to him, he'll open it again:

skip-kak-gate-cs-3.mp4

As an extra, I'm also adding a skip to the Hyrule Castle gate, which can be opened by paying the guard 10 Rupees:

skip-castle-gate-cs.mp4

Build Artifacts

@JordanLongstaff JordanLongstaff changed the title Skip Kakariko gate cutscenes Skip Kakariko and Hyrule Castle gate cutscenes Apr 5, 2025
@JordanLongstaff JordanLongstaff changed the base branch from develop to develop-blair April 12, 2025 14:22
@Pepper0ni
Copy link
Contributor

Pepper0ni commented Apr 27, 2025

Trying to skip the cutscene at kak is crashing the game due to an illegal operand: here's the call stack.

void std::__invoke_impl<void, void (*&)(GIVanillaBehavior, bool*, __va_list_tag*), GIVanillaBehavior, bool*, __va_list_tag*>(std::__invoke_other, void (*&)(GIVanillaBehavior, bool*, __va_list_tag*), GIVanillaBehavior&&, bool*&&, __va_list_tag*&&) (/usr/include/c++/14.2.1/bits/invoke.h:61)
std::enable_if<is_invocable_r_v<void, void (*&)(GIVanillaBehavior, bool*, __va_list_tag*), GIVanillaBehavior, bool*, __va_list_tag*>, void>::type std::__invoke_r<void, void (*&)(GIVanillaBehavior, bool*, __va_list_tag*), GIVanillaBehavior, bool*, __va_list_tag*>(void (*&)(GIVanillaBehavior, bool*, __va_list_tag*), GIVanillaBehavior&&, bool*&&, __va_list_tag*&&) (/usr/include/c++/14.2.1/bits/invoke.h:111)
std::_Function_handler<void (GIVanillaBehavior, bool*, __va_list_tag*), void (*)(GIVanillaBehavior, bool*, __va_list_tag*)>::_M_invoke(std::_Any_data const&, GIVanillaBehavior&&, bool*&&, __va_list_tag*&&) (/usr/include/c++/14.2.1/bits/std_function.h:290)
std::function<void (GIVanillaBehavior, bool*, __va_list_tag*)>::operator()(GIVanillaBehavior, bool*, __va_list_tag*) const (/usr/include/c++/14.2.1/bits/std_function.h:591)
void GameInteractor::ExecuteHooks<GameInteractor::OnVanillaBehavior, GIVanillaBehavior&, bool*, __va_list_tag (&) [1]>(GIVanillaBehavior&, bool*&&, __va_list_tag (&) [1]) (/home/pepper0ni/github/ShipwrightFork/soh/soh/Enhancements/game-interactor/GameInteractor.h:286)
::GameInteractor_Should(GIVanillaBehavior, u32, ...) (/home/pepper0ni/github/ShipwrightFork/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.cpp:188)
func_80A53DF8 (/home/pepper0ni/github/ShipwrightFork/soh/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.c:488)
EnHeishi2_Update (/home/pepper0ni/github/ShipwrightFork/soh/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.c:802)
Actor_UpdateAll (/home/pepper0ni/github/ShipwrightFork/soh/src/code/z_actor.c:2669)
Play_Update (/home/pepper0ni/github/ShipwrightFork/soh/src/code/z_play.c:1212)
Play_Main (/home/pepper0ni/github/ShipwrightFork/soh/src/code/z_play.c:1720)
GameState_Update (/home/pepper0ni/github/ShipwrightFork/soh/src/code/game.c:270)
Graph_Update (/home/pepper0ni/github/ShipwrightFork/soh/src/code/graph.c:297)
RunFrame (/home/pepper0ni/github/ShipwrightFork/soh/src/code/graph.c:487)
Graph_ThreadEntry (/home/pepper0ni/github/ShipwrightFork/soh/src/code/graph.c:518)
Main (/home/pepper0ni/github/ShipwrightFork/soh/src/code/main.c:140)
main (/home/pepper0ni/github/ShipwrightFork/soh/src/code/main.c:67)
___lldb_unnamed_symbol3290 (@___lldb_unnamed_symbol3290:28)
__libc_start_main (@__libc_start_main:44)```

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
@JordanLongstaff
Copy link
Contributor Author

Wow. Thanks for the info on this. I'd never have understood.

Copy link
Contributor

@Malkierian Malkierian left a comment

Choose a reason for hiding this comment

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

Wait, the guard closes the gate again if you don't sell him the mask? That's hilarious.

@Malkierian Malkierian merged commit 6cbb298 into HarbourMasters:develop-blair May 7, 2025
6 checks passed
ReddestDream pushed a commit to ReddestDream/Shipwright that referenced this pull request May 8, 2025
* Skip Kakariko gate cutscenes

* Simplify a bit

* Revert "Simplify a bit"

This reverts commit ffa68c1.

* Add Hyrule Castle gate skip

* Add missing backtick

* Redo simplifications

* Run clang-format

* Proper casting of clearCamera argument

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>

---------

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
@JordanLongstaff JordanLongstaff deleted the skip-kak-gate-cs branch July 21, 2025 17:47
krazyjakee pushed a commit to krazyjakee/OOT that referenced this pull request Sep 6, 2025
* Skip Kakariko gate cutscenes

* Simplify a bit

* Revert "Simplify a bit"

This reverts commit ffa68c1.

* Add Hyrule Castle gate skip

* Add missing backtick

* Redo simplifications

* Run clang-format

* Proper casting of clearCamera argument

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>

---------

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
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.

Opening the kakriko gate is not skipped even with all cutscene skips on.

3 participants