From 4371b582232ab034e2dd8b0f03ee21e3832b14ad Mon Sep 17 00:00:00 2001 From: Sirius902 <10891979+Sirius902@users.noreply.github.com> Date: Fri, 8 Jul 2022 14:39:50 -0700 Subject: [PATCH] Fix 0xabababab crash (#617) * Unconditionally setup the normal skybox * Only call Skybox_Setup once ever --- soh/src/code/graph.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/soh/src/code/graph.c b/soh/src/code/graph.c index f4a824cb4..f4dcf56e8 100644 --- a/soh/src/code/graph.c +++ b/soh/src/code/graph.c @@ -433,6 +433,7 @@ static void RunFrame() { u32 size; char faultMsg[0x50]; + static bool hasSetupSkybox = false; switch (runFrameContext.state) { case 0: @@ -465,6 +466,14 @@ static void RunFrame() } GameState_Init(runFrameContext.gameState, runFrameContext.ovl->init, &runFrameContext.gfxCtx); + // Setup the normal skybox once before entering any game states to avoid the 0xabababab crash. + // The crash is due to certain skyboxes not loading all the data they need from Skybox_Setup. + if (!hasSetupSkybox) { + GlobalContext* globalCtx = (GlobalContext*)runFrameContext.gameState; + Skybox_Setup(globalCtx, &globalCtx->skyboxCtx, SKYBOX_NORMAL_SKY); + hasSetupSkybox = true; + } + uint64_t freq = GetFrequency(); while (GameState_IsRunning(runFrameContext.gameState))