diff --git a/soh/soh/Enhancements/kaleido.cpp b/soh/soh/Enhancements/kaleido.cpp index 2b9552263..5edf050f3 100644 --- a/soh/soh/Enhancements/kaleido.cpp +++ b/soh/soh/Enhancements/kaleido.cpp @@ -1,5 +1,7 @@ #include "kaleido.h" +#include "objects/gameplay_keep/gameplay_keep.h" +#include "soh/Enhancements/randomizer/randomizerTypes.h" #include "soh/frame_interpolation.h" #include "soh/ShipUtils.h" @@ -45,7 +47,7 @@ void KaleidoEntryIcon::LoadIconTex(std::vector* mEntryDl) { } } -KaleidoEntry::KaleidoEntry(int16_t x, int16_t y, std::string text) : mX(x), mY(y), mText(std::move(text)) { +KaleidoEntry::KaleidoEntry(std::string text) : mText(std::move(text)) { mHeight = 0; mWidth = 0; vtx = nullptr; @@ -55,7 +57,12 @@ void KaleidoEntry::SetYOffset(int yOffset) { mY = yOffset; } +void KaleidoEntry::SetSelected(bool val) { + mSelected = val; +} + void KaleidoEntryIcon::Draw(PlayState* play, std::vector* mEntryDl) { + PauseContext* pauseCtx = &play->pauseCtx; if (vtx == nullptr) { return; } @@ -74,13 +81,24 @@ void KaleidoEntryIcon::Draw(PlayState* play, std::vector* mEntryDl) { mEntryDl->push_back(gsSPMatrix(Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW)); + // cursor (if selected) + if (mSelected) { + mEntryDl->push_back(gsDPSetPrimColor(0, 0, 255, 255, 255, 255)); + mEntryDl->push_back(gsSPVertex(vtx, 4, 0)); + Gfx cursorIconTex[] = { gsDPLoadTextureBlock(gArrowCursorTex, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 24, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD) }; + mEntryDl->insert(mEntryDl->end(), std::begin(cursorIconTex), std::end(cursorIconTex)); + mEntryDl->push_back(gsSP1Quadrangle(0, 2, 3, 1, 0)); + } + // icon if (!mAchieved) { mEntryDl->push_back(gsDPSetGrayscaleColor(109, 109, 109, 255)); mEntryDl->push_back(gsSPGrayscale(true)); } mEntryDl->push_back(gsDPSetPrimColor(0, 0, mIconColor.r, mIconColor.g, mIconColor.b, mIconColor.a)); - mEntryDl->push_back(gsSPVertex(vtx, 4, 0)); + mEntryDl->push_back(gsSPVertex(&vtx[4], 4, 0)); LoadIconTex(mEntryDl); mEntryDl->push_back(gsSP1Quadrangle(0, 2, 3, 1, 0)); mEntryDl->push_back(gsSPGrayscale(false)); @@ -90,10 +108,10 @@ void KaleidoEntryIcon::Draw(PlayState* play, std::vector* mEntryDl) { for (size_t i = 0, vtxGroup = 0; i < numChar; i++) { // A maximum of 64 Vtx can be loaded at once by gSPVertex, or basically 16 characters // handle loading groups of 16 chars at a time until there are no more left to load. - // By this point 4 vertices have already been loaded for the preceding icon. + // By this point 8 vertices have already been loaded for the preceding icon and cursor. if (i % 16 == 0) { size_t numVtxToLoad = std::min(numChar - i, 16) * 4; - mEntryDl->push_back(gsSPVertex(&vtx[4 + (vtxGroup * 16 * 4)], numVtxToLoad, 0)); + mEntryDl->push_back(gsSPVertex(&vtx[8 + (vtxGroup * 16 * 4)], numVtxToLoad, 0)); vtxGroup++; } @@ -111,22 +129,29 @@ void KaleidoEntryIcon::Draw(PlayState* play, std::vector* mEntryDl) { Kaleido::Kaleido() { const auto ctx = Rando::Context::GetInstance(); - int yOffset = 2; + int yOffset = 0; mEntries.push_back(std::make_shared( gRupeeCounterIconTex, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, Color_RGBA8{ 0xC8, 0xFF, 0x64, 255 }, - FlagType::FLAG_RANDOMIZER_INF, static_cast(RAND_INF_GREG_FOUND), 0, yOffset, "Greg")); - yOffset += 18; + FlagType::FLAG_RANDOMIZER_INF, static_cast(RAND_INF_GREG_FOUND), "Greg")); + if (ctx->GetOption(RSK_SHUFFLE_FISHING_POLE)) { + mEntries.push_back(std::make_shared( + gItemIconFishingPoleTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 32, Color_RGBA8{ 255, 255, 255, 255 }, + FlagType::FLAG_RANDOMIZER_INF, static_cast(RAND_INF_FISHING_POLE_FOUND), "Fishing Pole")); + } if (ctx->GetOption(RSK_TRIFORCE_HUNT)) { mEntries.push_back(std::make_shared( - gTriforcePieceTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 32, Color_RGBA8{ 255, 255, 255, 255 }, 0, yOffset, + gTriforcePieceTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 32, Color_RGBA8{ 255, 255, 255, 255 }, reinterpret_cast(&gSaveContext.ship.quest.data.randomizer.triforcePiecesCollected), ctx->GetOption(RSK_TRIFORCE_HUNT_PIECES_REQUIRED).Get() + 1, ctx->GetOption(RSK_TRIFORCE_HUNT_PIECES_TOTAL).Get() + 1)); - yOffset += 18; + } + if (ctx->GetOption(RSK_SKELETON_KEY)) { + mEntries.push_back(std::make_shared( + gSmallKeyCounterIconTex, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, Color_RGBA8{ 255, 255, 255, 255 }, + FlagType::FLAG_RANDOMIZER_INF, static_cast(RAND_INF_HAS_SKELETON_KEY), "Skeleton Key")); } if (ctx->GetOption(RSK_SHUFFLE_OCARINA_BUTTONS)) { - mEntries.push_back(std::make_shared(0, yOffset)); - yOffset += 18; + mEntries.push_back(std::make_shared()); } if (ctx->GetOption(RSK_SHUFFLE_BOSS_SOULS).IsNot(RO_BOSS_SOULS_OFF)) { static const char* bossSoulNames[] = { @@ -136,15 +161,22 @@ Kaleido::Kaleido() { for (int i = RAND_INF_GOHMA_SOUL; i < RAND_INF_GANON_SOUL; i++) { mEntries.push_back(std::make_shared( gBossSoulTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 32, Color_RGBA8{ 255, 255, 255, 255 }, - FlagType::FLAG_RANDOMIZER_INF, i, 0, yOffset, bossSoulNames[i - RAND_INF_GOHMA_SOUL])); - yOffset += 18; + FlagType::FLAG_RANDOMIZER_INF, i, bossSoulNames[i - RAND_INF_GOHMA_SOUL])); } } if (ctx->GetOption(RSK_SHUFFLE_BOSS_SOULS).Is(RO_BOSS_SOULS_ON_PLUS_GANON)) { mEntries.push_back(std::make_shared( gBossSoulTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 32, Color_RGBA8{ 255, 255, 255, 255 }, - FlagType::FLAG_RANDOMIZER_INF, RAND_INF_GANON_SOUL, 0, yOffset, "Ganon's Soul")); - yOffset += 18; + FlagType::FLAG_RANDOMIZER_INF, RAND_INF_GANON_SOUL, "Ganon's Soul")); + } + if (ctx->GetOption(RSK_LOCK_OVERWORLD_DOORS)) { + int rg = RG_GUARD_HOUSE_KEY; + for (int i = RAND_INF_GUARD_HOUSE_KEY_OBTAINED; i <= RAND_INF_FISHING_HOLE_KEY_OBTAINED; i += 2, rg++) { + mEntries.push_back(std::make_shared( + gSmallKeyCounterIconTex, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, Color_RGBA8{ 255, 255, 255, 255 }, + FlagType::FLAG_RANDOMIZER_INF, i, + Rando::StaticData::RetrieveItem(static_cast(rg)).GetName().english)); + } } } @@ -162,6 +194,7 @@ void Kaleido::Draw(PlayState* play) { mEntryDl.clear(); OPEN_DISPS(play->state.gfxCtx); mEntryDl.push_back(gsDPPipeSync()); + Gfx_SetupDL_39Opa(play->state.gfxCtx); Gfx_SetupDL_42Opa(play->state.gfxCtx); mEntryDl.push_back(gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM)); @@ -179,13 +212,23 @@ void Kaleido::Draw(PlayState* play) { if (!((pauseCtx->state != 6) || ((pauseCtx->stickRelX == 0) && (pauseCtx->stickRelY == 0)))) { if (pauseCtx->cursorSpecialPos == 0) { if ((pauseCtx->stickRelY > 30) || (dpad && CHECK_BTN_ALL(input->press.button, BTN_DUP))) { - if (mTopIndex > 0) { - mTopIndex--; + if (mCursorPos > 0) { + mCursorPos--; + Audio_PlaySoundGeneral(NA_SE_SY_CURSOR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, + &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); + } + if (mCursorPos < mTopIndex) { + mTopIndex = mCursorPos; shouldScroll = true; } } else if ((pauseCtx->stickRelY < -30) || (dpad && CHECK_BTN_ALL(input->press.button, BTN_DDOWN))) { - if (mTopIndex + mNumVisible < mEntries.size()) { - mTopIndex++; + if (mCursorPos < mEntries.size() - 1) { + mCursorPos++; + Audio_PlaySoundGeneral(NA_SE_SY_CURSOR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, + &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); + } + if (mCursorPos >= mTopIndex + mNumVisible && mTopIndex + mNumVisible < mEntries.size()) { + mTopIndex = mCursorPos - mNumVisible + 1; shouldScroll = true; } } @@ -213,16 +256,14 @@ void Kaleido::Draw(PlayState* play) { pauseCtx->cursorSpecialPos = 0; } } - int yOffset = 2; + int yOffset = 1; for (int i = mTopIndex; i < (mTopIndex + mNumVisible) && i < mEntries.size(); i++) { auto& entry = mEntries[i]; - if (shouldScroll) { - entry->SetYOffset(yOffset); - yOffset += 18; - Audio_PlaySoundGeneral(NA_SE_SY_CURSOR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, - &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - } + entry->SetYOffset(yOffset); + yOffset += 9; Matrix_Push(); + entry->SetSelected((i == mCursorPos) && !(pauseCtx->cursorSpecialPos == PAUSE_CURSOR_PAGE_RIGHT || + pauseCtx->cursorSpecialPos == PAUSE_CURSOR_PAGE_LEFT)); entry->Draw(play, &mEntryDl); Matrix_Pop(); } @@ -252,9 +293,9 @@ extern "C" void RandoKaleido_UpdateMiscCollectibles(int16_t inDungeonScene) { KaleidoEntryIconFlag::KaleidoEntryIconFlag(const char* iconResourceName, int iconFormat, int iconSize, int iconWidth, int iconHeight, Color_RGBA8 iconColor, FlagType flagType, int flag, - int16_t x, int16_t y, std::string name) - : mFlagType(flagType), mFlag(flag), KaleidoEntryIcon(iconResourceName, iconFormat, iconSize, iconWidth, iconHeight, - iconColor, x, y, std::move(name)) { + std::string name) + : mFlagType(flagType), mFlag(flag), + KaleidoEntryIcon(iconResourceName, iconFormat, iconSize, iconWidth, iconHeight, iconColor, std::move(name)) { BuildVertices(); } @@ -264,9 +305,9 @@ void KaleidoEntryIconFlag::Update(PlayState* play) { KaleidoEntryIconCountRequired::KaleidoEntryIconCountRequired(const char* iconResourceName, int iconFormat, int iconSize, int iconWidth, int iconHeight, Color_RGBA8 iconColor, - int16_t x, int16_t y, int* watch, int required, int total) + int* watch, int required, int total) : mWatch(watch), mRequired(required), mTotal(total), - KaleidoEntryIcon(iconResourceName, iconFormat, iconSize, iconWidth, iconHeight, iconColor, x, y) { + KaleidoEntryIcon(iconResourceName, iconFormat, iconSize, iconWidth, iconHeight, iconColor) { mCount = *mWatch; BuildText(); BuildVertices(); @@ -287,31 +328,54 @@ void KaleidoEntryIconCountRequired::BuildText() { void KaleidoEntryIcon::BuildVertices() { int offsetY = 0; int offsetX = 0; - // 4 vertices per character, plus one for the preceding icon. - Vtx* vertices = (Vtx*)calloc(sizeof(Vtx[4]), mText.length() + 1); + // 4 vertices per character, plus one for the preceding icon, plus one for the cursor. + Vtx* vertices = (Vtx*)calloc(sizeof(Vtx[4]), mText.length() + 2); + // Vertex for the cursor. + Ship_CreateQuadVertexGroup(vertices, offsetX, offsetY, 16, 24, 0); + offsetX += 18; // Vertex for the preceding icon. - Ship_CreateQuadVertexGroup(vertices, offsetX, offsetY, mIconWidth, mIconHeight, 0); + Ship_CreateQuadVertexGroup(&vertices[4], offsetX, offsetY, mIconWidth, mIconHeight, 0); offsetX += 18; for (size_t i = 0; i < mText.length(); i++) { int charWidth = static_cast(Ship_GetCharFontWidth(mText[i])); - Ship_CreateQuadVertexGroup(&(vertices)[(i + 1) * 4], offsetX, offsetY, charWidth, 16, 0); + Ship_CreateQuadVertexGroup(&(vertices)[((i + 1) * 4) + 4], offsetX, offsetY, charWidth, 16, 0); offsetX += charWidth; } offsetY += FONT_CHAR_TEX_HEIGHT; - mWidth = static_cast(offsetX); - mHeight = static_cast(offsetY); + // mWidth = static_cast(offsetX); + // mHeight = static_cast(offsetY); + + vertices[1].v.ob[0] = 15; // top-right x + vertices[2].v.ob[1] = 15; // bottom-left y + vertices[3].v.ob[0] = 15; // bottom-right x + vertices[3].v.ob[1] = 15; // bottom-right y + vertices[5].v.ob[0] = 32; // top-right x + vertices[6].v.ob[1] = 16; // bottom-left-y + vertices[7].v.ob[0] = 32; // bottom-right x + vertices[7].v.ob[1] = 16; // bottom-right y + + for (size_t i = 0; i < mText.length() + 2; i++) { + size_t j = i * 4; + vertices[j].v.ob[0] = vertices[j].v.ob[0] / 2; + vertices[j].v.ob[1] = vertices[j].v.ob[1] / 2; + vertices[j + 1].v.ob[0] = vertices[j + 1].v.ob[0] / 2; + vertices[j + 1].v.ob[1] = vertices[j + 1].v.ob[1] / 2; + vertices[j + 2].v.ob[0] = vertices[j + 2].v.ob[0] / 2; + vertices[j + 2].v.ob[1] = vertices[j + 2].v.ob[1] / 2; + vertices[j + 3].v.ob[0] = vertices[j + 3].v.ob[0] / 2; + vertices[j + 3].v.ob[1] = vertices[j + 3].v.ob[1] / 2; + } + + mWidth = static_cast(offsetX / 2); + mHeight = static_cast(8); - vertices[1].v.ob[0] = 16; - vertices[2].v.ob[1] = 16; - vertices[3].v.ob[0] = 16; - vertices[3].v.ob[1] = 16; vtx = vertices; } KaleidoEntryIcon::KaleidoEntryIcon(const char* iconResourceName, int iconFormat, int iconSize, int iconWidth, - int iconHeight, Color_RGBA8 iconColor, int16_t x, int16_t y, std::string text) + int iconHeight, Color_RGBA8 iconColor, std::string text) : mIconResourceName(iconResourceName), mIconFormat(iconFormat), mIconSize(iconSize), mIconWidth(iconWidth), - mIconHeight(iconHeight), mIconColor(iconColor), KaleidoEntry(x, y, std::move(text)) { + mIconHeight(iconHeight), mIconColor(iconColor), KaleidoEntry(std::move(text)) { } void KaleidoEntryIcon::RebuildVertices() { @@ -329,9 +393,9 @@ void KaleidoEntryIconCountRequired::Update(PlayState* play) { } } -KaleidoEntryOcarinaButtons::KaleidoEntryOcarinaButtons(int16_t x, int16_t y) +KaleidoEntryOcarinaButtons::KaleidoEntryOcarinaButtons() : KaleidoEntryIcon(gItemIconOcarinaOfTimeTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 32, - Color_RGBA8{ 255, 255, 255, 255 }, x, y, "\x9F\xA5\xA6\xA7\xA8") { + Color_RGBA8{ 255, 255, 255, 255 }, "\x9F\xA5\xA6\xA7\xA8") { CalculateColors(); BuildVertices(); } @@ -405,13 +469,24 @@ void KaleidoEntryOcarinaButtons::Draw(PlayState* play, std::vector* mEntryD mEntryDl->push_back(gsSPMatrix(Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW)); + // cursor (if selected) + if (mSelected) { + mEntryDl->push_back(gsDPSetPrimColor(0, 0, 255, 255, 255, 255)); + mEntryDl->push_back(gsSPVertex(vtx, 4, 0)); + Gfx cursorIconTex[] = { gsDPLoadTextureBlock(gArrowCursorTex, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 24, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD) }; + mEntryDl->insert(mEntryDl->end(), std::begin(cursorIconTex), std::end(cursorIconTex)); + mEntryDl->push_back(gsSP1Quadrangle(0, 2, 3, 1, 0)); + } + // icon if (!mAchieved) { mEntryDl->push_back(gsDPSetGrayscaleColor(109, 109, 109, 255)); mEntryDl->push_back(gsSPGrayscale(true)); } mEntryDl->push_back(gsDPSetPrimColor(0, 0, mIconColor.r, mIconColor.g, mIconColor.b, mIconColor.a)); - mEntryDl->push_back(gsSPVertex(vtx, 4, 0)); + mEntryDl->push_back(gsSPVertex(&vtx[4], 4, 0)); LoadIconTex(mEntryDl); mEntryDl->push_back(gsSP1Quadrangle(0, 2, 3, 1, 0)); mEntryDl->push_back(gsSPGrayscale(false)); @@ -426,7 +501,7 @@ void KaleidoEntryOcarinaButtons::Draw(PlayState* play, std::vector* mEntryD // By this point 4 vertices have already been loaded for the preceding icon. if (i % 16 == 0) { size_t numVtxToLoad = std::min(numChar - i, 16) * 4; - mEntryDl->push_back(gsSPVertex(&vtx[4 + (vtxGroup * 16 * 4)], numVtxToLoad, 0)); + mEntryDl->push_back(gsSPVertex(&vtx[8 + (vtxGroup * 16 * 4)], numVtxToLoad, 0)); vtxGroup++; } diff --git a/soh/soh/Enhancements/kaleido.h b/soh/soh/Enhancements/kaleido.h index 7776afb66..605bae226 100644 --- a/soh/soh/Enhancements/kaleido.h +++ b/soh/soh/Enhancements/kaleido.h @@ -26,18 +26,20 @@ class KaleidoEntry { * @param text the initial value of the line of text. Can be omitted for an * empty string. */ - KaleidoEntry(int16_t x, int16_t y, std::string text = ""); + KaleidoEntry(std::string text = ""); virtual void Draw(PlayState* play, std::vector* mEntryDl) = 0; virtual void Update(PlayState* play) = 0; void SetYOffset(int yOffset); + void SetSelected(bool val); protected: - int16_t mX; - int16_t mY; + int16_t mX = 0; + int16_t mY = 0; int16_t mHeight; int16_t mWidth; Vtx* vtx; std::string mText; + bool mSelected = false; bool mAchieved = false; }; @@ -59,7 +61,7 @@ class KaleidoEntryIcon : public KaleidoEntry { * @param text text to draw to the right of the icon. */ KaleidoEntryIcon(const char* iconResourceName, int iconFormat, int iconSize, int iconWidth, int iconHeight, - Color_RGBA8 iconColor, int16_t x, int16_t y, std::string text = ""); + Color_RGBA8 iconColor, std::string text = ""); void Draw(PlayState* play, std::vector* mEntryDl) override; void RebuildVertices(); @@ -95,8 +97,7 @@ class KaleidoEntryIconFlag : public KaleidoEntryIcon { * @param mName name to draw to the right of the icon. Leave blank to omit. */ KaleidoEntryIconFlag(const char* iconResourceName, int iconFormat, int iconSize, int iconWidth, int iconHeight, - Color_RGBA8 iconColor, FlagType flagType, int flag, int16_t x, int16_t y, - std::string name = ""); + Color_RGBA8 iconColor, FlagType flagType, int flag, std::string name = ""); void Update(PlayState* play) override; private: @@ -128,8 +129,7 @@ class KaleidoEntryIconCountRequired : public KaleidoEntryIcon { * @param total The amount of this collectible available in the seed. Set to 0 to not render. */ KaleidoEntryIconCountRequired(const char* iconResourceName, int iconFormat, int iconSize, int iconWidth, - int iconHeight, Color_RGBA8 iconColor, int16_t x, int16_t y, int* watch, - int required = 0, int total = 0); + int iconHeight, Color_RGBA8 iconColor, int* watch, int required = 0, int total = 0); void Update(PlayState* play) override; private: @@ -143,7 +143,7 @@ class KaleidoEntryIconCountRequired : public KaleidoEntryIcon { class KaleidoEntryOcarinaButtons : public KaleidoEntryIcon { public: - KaleidoEntryOcarinaButtons(int16_t x, int16_t y); + KaleidoEntryOcarinaButtons(); void Update(PlayState* play) override; void Draw(PlayState* play, std::vector* mEntryDl) override; @@ -164,7 +164,8 @@ class Kaleido { std::vector> mEntries; std::vector mEntryDl; int mTopIndex = 0; - int mNumVisible = 7; + int mCursorPos = 0; + int mNumVisible = 14; }; } // namespace Rando diff --git a/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c b/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c index 627300036..1e53d8180 100644 --- a/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c +++ b/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c @@ -1633,8 +1633,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); if (pauseCtx->randoQuestMode) { - POLY_OPA_DISP = - KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->saveVtx, sSaveTexs[gSaveContext.language]); + POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->saveVtx, sGameOverTexs); RandoKaleido_DrawMiscCollectibles(play); } else { POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->questPageVtx, @@ -1729,8 +1728,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); if (pauseCtx->randoQuestMode) { - POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->saveVtx, - sSaveTexs[gSaveContext.language]); + POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->saveVtx, sGameOverTexs); RandoKaleido_DrawMiscCollectibles(play); } else { POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->questPageVtx,