From 72358eb4d738723024a177a2c9b4690d9d497c5f Mon Sep 17 00:00:00 2001 From: briaguya <70942617+briaguya-ai@users.noreply.github.com> Date: Tue, 9 May 2023 23:33:27 -0400 Subject: [PATCH] fix for day/night textures (#2853) * hacky fix for deku tree entrance * lonlon windows * only hack in one place instead of everywhere * dehack deku * goron city entrance * gerudo cell, zd entrance * kak windows * fix pot house * back to the hacks * back back * space * globals * just hack it together to fix em all --------- Co-authored-by: briaguya --- soh/soh/mq_asset_hacks.h | 195 +++++++++++++++++++++++++++++++++++ soh/src/code/z_scene_table.c | 100 ++++++++++++++---- 2 files changed, 277 insertions(+), 18 deletions(-) create mode 100644 soh/soh/mq_asset_hacks.h diff --git a/soh/soh/mq_asset_hacks.h b/soh/soh/mq_asset_hacks.h new file mode 100644 index 000000000..dacf8a54e --- /dev/null +++ b/soh/soh/mq_asset_hacks.h @@ -0,0 +1,195 @@ +#ifndef MQ_ASSET_HACKS_H +#define MQ_ASSET_HACKS_H + +#include "align_asset_macro.h" + +#define dgYdanTex_00BA18_MQ "__OTR__scenes/mq/ydan_scene/gYdanTex_00BA18" +static const ALIGN_ASSET(2) char gYdanTex_00BA18_MQ[] = dgYdanTex_00BA18_MQ; + +#define dgYdanTex_00CA18_MQ "__OTR__scenes/mq/ydan_scene/gYdanTex_00CA18" +static const ALIGN_ASSET(2) char gYdanTex_00CA18_MQ[] = dgYdanTex_00CA18_MQ; +void* D_8012A2F8_MQ[] = { + gYdanTex_00BA18_MQ, + gYdanTex_00CA18_MQ, +}; + +#define dgGoronCityNightEntranceTex_MQ "__OTR__scenes/mq/spot18_scene/gGoronCityNightEntranceTex" +static const ALIGN_ASSET(2) char gGoronCityNightEntranceTex_MQ[] = dgGoronCityNightEntranceTex_MQ; + +#define dgGoronCityDayEntranceTex_MQ "__OTR__scenes/mq/spot18_scene/gGoronCityDayEntranceTex" +static const ALIGN_ASSET(2) char gGoronCityDayEntranceTex_MQ[] = dgGoronCityDayEntranceTex_MQ; +void* sGoronCityEntranceTextures_MQ[] = { + gGoronCityDayEntranceTex_MQ, + gGoronCityNightEntranceTex_MQ, +}; + +#define dgLonLonRanchDayWindowTex_MQ "__OTR__scenes/mq/spot20_scene/gLonLonRanchDayWindowTex" +static const ALIGN_ASSET(2) char gLonLonRanchDayWindowTex_MQ[] = dgLonLonRanchDayWindowTex_MQ; + +#define dgLonLonRangeNightWindowsTex_MQ "__OTR__scenes/mq/spot20_scene/gLonLonRangeNightWindowsTex" +static const ALIGN_ASSET(2) char gLonLonRangeNightWindowsTex_MQ[] = dgLonLonRangeNightWindowsTex_MQ; +void* sLonLonRanchWindowTextures_MQ[] = { + gLonLonRanchDayWindowTex_MQ, + gLonLonRangeNightWindowsTex_MQ, +}; + +// walls of GF room where they throw you when you get caught +#define dgSpot12_009678Tex_MQ "__OTR__scenes/mq/spot12_scene/gSpot12_009678Tex" +static const ALIGN_ASSET(2) char gSpot12_009678Tex_MQ[] = dgSpot12_009678Tex_MQ; + +#define dgSpot12_00DE78Tex_MQ "__OTR__scenes/mq/spot12_scene/gSpot12_00DE78Tex" +static const ALIGN_ASSET(2) char gSpot12_00DE78Tex_MQ[] = dgSpot12_00DE78Tex_MQ; +void* D_8012A380_MQ[] = { + gSpot12_009678Tex_MQ, + gSpot12_00DE78Tex_MQ, +}; + +#define dgZorasDomainDayEntranceTex_MQ "__OTR__scenes/mq/spot07_scene/gZorasDomainDayEntranceTex" +static const ALIGN_ASSET(2) char gZorasDomainDayEntranceTex_MQ[] = dgZorasDomainDayEntranceTex_MQ; + +#define dgZorasDomainNightEntranceTex_MQ "__OTR__scenes/mq/spot07_scene/gZorasDomainNightEntranceTex" +static const ALIGN_ASSET(2) char gZorasDomainNightEntranceTex_MQ[] = dgZorasDomainNightEntranceTex_MQ; +void* sZorasDomainEntranceTextures_MQ[] = { + gZorasDomainDayEntranceTex_MQ, + gZorasDomainNightEntranceTex_MQ, +}; + +#define dgKakarikoVillageDayWindowTex_MQ "__OTR__scenes/mq/spot01_scene/gKakarikoVillageDayWindowTex" +static const ALIGN_ASSET(2) char gKakarikoVillageDayWindowTex_MQ[] = dgKakarikoVillageDayWindowTex_MQ; + +#define dgKakarikoVillageNightWindowTex_MQ "__OTR__scenes/mq/spot01_scene/gKakarikoVillageNightWindowTex" +static const ALIGN_ASSET(2) char gKakarikoVillageNightWindowTex_MQ[] = dgKakarikoVillageNightWindowTex_MQ; +void* sKakarikoWindowTextures_MQ[] = { + gKakarikoVillageDayWindowTex_MQ, + gKakarikoVillageNightWindowTex_MQ, +}; + +#define dgGuardHouseOutSideView2NightTex_MQ "__OTR__scenes/mq/miharigoya_scene/gGuardHouseOutSideView2NightTex" +static const ALIGN_ASSET(2) char gGuardHouseOutSideView2NightTex_MQ[] = dgGuardHouseOutSideView2NightTex_MQ; + +#define dgGuardHouseOutSideView2DayTex_MQ "__OTR__scenes/mq/miharigoya_scene/gGuardHouseOutSideView2DayTex" +static const ALIGN_ASSET(2) char gGuardHouseOutSideView2DayTex_MQ[] = dgGuardHouseOutSideView2DayTex_MQ; + +#define dgGuardHouseOutSideView1NightTex_MQ "__OTR__scenes/mq/miharigoya_scene/gGuardHouseOutSideView1NightTex" +static const ALIGN_ASSET(2) char gGuardHouseOutSideView1NightTex_MQ[] = dgGuardHouseOutSideView1NightTex_MQ; + +#define dgGuardHouseOutSideView1DayTex_MQ "__OTR__scenes/mq/miharigoya_scene/gGuardHouseOutSideView1DayTex" +static const ALIGN_ASSET(2) char gGuardHouseOutSideView1DayTex_MQ[] = dgGuardHouseOutSideView1DayTex_MQ; +void* sGuardHouseView2Textures_MQ[] = { + gGuardHouseOutSideView1DayTex_MQ, + gGuardHouseOutSideView1NightTex_MQ, +}; +void* sGuardHouseView1Textures_MQ[] = { + gGuardHouseOutSideView2DayTex_MQ, + gGuardHouseOutSideView2NightTex_MQ, +}; + +#define dgLonLonHouseDayEntranceTex_MQ "__OTR__scenes/mq/souko_scene/gLonLonHouseDayEntranceTex" +static const ALIGN_ASSET(2) char gLonLonHouseDayEntranceTex_MQ[] = dgLonLonHouseDayEntranceTex_MQ; + +#define dgLonLonHouseNightEntranceTex_MQ "__OTR__scenes/mq/souko_scene/gLonLonHouseNightEntranceTex" +static const ALIGN_ASSET(2) char gLonLonHouseNightEntranceTex_MQ[] = dgLonLonHouseNightEntranceTex_MQ; +void* sLonLonHouseEntranceTextures_MQ[] = { + gLonLonHouseDayEntranceTex_MQ, + gLonLonHouseNightEntranceTex_MQ, +}; + +#define dgThievesHideoutNightEntranceTex_MQ "__OTR__scenes/mq/gerudoway_scene/gThievesHideoutNightEntranceTex" +static const ALIGN_ASSET(2) char gThievesHideoutNightEntranceTex_MQ[] = dgThievesHideoutNightEntranceTex_MQ; + +#define dgThievesHideoutDayEntranceTex_MQ "__OTR__scenes/mq/gerudoway_scene/gThievesHideoutDayEntranceTex" +static const ALIGN_ASSET(2) char gThievesHideoutDayEntranceTex_MQ[] = dgThievesHideoutDayEntranceTex_MQ; +void* sThievesHideoutEntranceTextures_MQ[] = { + gThievesHideoutDayEntranceTex_MQ, + gThievesHideoutNightEntranceTex_MQ, +}; + +#define dgDCDayEntranceTex_MQ "__OTR__scenes/mq/ddan_scene/gDCDayEntranceTex" +static const ALIGN_ASSET(2) char gDCDayEntranceTex_MQ[] = dgDCDayEntranceTex_MQ; + +#define dgDCNightEntranceTex_MQ "__OTR__scenes/mq/ddan_scene/gDCNightEntranceTex" +static const ALIGN_ASSET(2) char gDCNightEntranceTex_MQ[] = dgDCNightEntranceTex_MQ; +void* gDCEntranceTextures_MQ[] = { + gDCDayEntranceTex_MQ, + gDCNightEntranceTex_MQ, +}; + +#define dgDCLavaFloor1Tex_MQ "__OTR__scenes/mq/ddan_scene/gDCLavaFloor1Tex" +static const ALIGN_ASSET(2) char gDCLavaFloor1Tex_MQ[] = dgDCLavaFloor1Tex_MQ; + +#define dgDCLavaFloor2Tex_MQ "__OTR__scenes/mq/ddan_scene/gDCLavaFloor2Tex" +static const ALIGN_ASSET(2) char gDCLavaFloor2Tex_MQ[] = dgDCLavaFloor2Tex_MQ; + +#define dgDCLavaFloor3Tex_MQ "__OTR__scenes/mq/ddan_scene/gDCLavaFloor3Tex" +static const ALIGN_ASSET(2) char gDCLavaFloor3Tex_MQ[] = dgDCLavaFloor3Tex_MQ; + +#define dgDCLavaFloor4Tex_MQ "__OTR__scenes/mq/ddan_scene/gDCLavaFloor4Tex" +static const ALIGN_ASSET(2) char gDCLavaFloor4Tex_MQ[] = dgDCLavaFloor4Tex_MQ; + +#define dgDCLavaFloor5Tex_MQ "__OTR__scenes/mq/ddan_scene/gDCLavaFloor5Tex" +static const ALIGN_ASSET(2) char gDCLavaFloor5Tex_MQ[] = dgDCLavaFloor5Tex_MQ; + +#define dgDCLavaFloor6Tex_MQ "__OTR__scenes/mq/ddan_scene/gDCLavaFloor6Tex" +static const ALIGN_ASSET(2) char gDCLavaFloor6Tex_MQ[] = dgDCLavaFloor6Tex_MQ; + +#define dgDCLavaFloor7Tex_MQ "__OTR__scenes/mq/ddan_scene/gDCLavaFloor7Tex" +static const ALIGN_ASSET(2) char gDCLavaFloor7Tex_MQ[] = dgDCLavaFloor7Tex_MQ; + +#define dgDCLavaFloor8Tex_MQ "__OTR__scenes/mq/ddan_scene/gDCLavaFloor8Tex" +static const ALIGN_ASSET(2) char gDCLavaFloor8Tex_MQ[] = dgDCLavaFloor8Tex_MQ; +void* sDCLavaFloorTextures_MQ[] = { + gDCLavaFloor1Tex_MQ, gDCLavaFloor2Tex_MQ, gDCLavaFloor3Tex_MQ, gDCLavaFloor4Tex_MQ, + gDCLavaFloor5Tex_MQ, gDCLavaFloor6Tex_MQ, gDCLavaFloor7Tex_MQ, gDCLavaFloor8Tex_MQ, +}; + +#define dgWaterTempleDayEntranceTex_MQ "__OTR__scenes/mq/MIZUsin_scene/gWaterTempleDayEntranceTex" +static const ALIGN_ASSET(2) char gWaterTempleDayEntranceTex_MQ[] = dgWaterTempleDayEntranceTex_MQ; + +#define dgWaterTempleNightEntranceTex_MQ "__OTR__scenes/mq/MIZUsin_scene/gWaterTempleNightEntranceTex" +static const ALIGN_ASSET(2) char gWaterTempleNightEntranceTex_MQ[] = dgWaterTempleNightEntranceTex_MQ; +void* D_8012A330_MQ[] = { + gWaterTempleDayEntranceTex_MQ, + gWaterTempleNightEntranceTex_MQ, +}; + +#define dgIceCavernNightEntranceTex_MQ "__OTR__scenes/mq/ice_doukutu_scene/gIceCavernNightEntranceTex" +static const ALIGN_ASSET(2) char gIceCavernNightEntranceTex_MQ[] = dgIceCavernNightEntranceTex_MQ; + +#define dgIceCavernDayEntranceTex_MQ "__OTR__scenes/mq/ice_doukutu_scene/gIceCavernDayEntranceTex" +static const ALIGN_ASSET(2) char gIceCavernDayEntranceTex_MQ[] = dgIceCavernDayEntranceTex_MQ; +void* sIceCavernEntranceTextures_MQ[] = { + gIceCavernDayEntranceTex_MQ, + gIceCavernNightEntranceTex_MQ, +}; + +#define dgGTGDayEntranceTex_MQ "__OTR__scenes/mq/men_scene/gGTGDayEntranceTex" +static const ALIGN_ASSET(2) char gGTGDayEntranceTex_MQ[] = dgGTGDayEntranceTex_MQ; + +#define dgGTGNightEntranceTex_MQ "__OTR__scenes/mq/men_scene/gGTGNightEntranceTex" +static const ALIGN_ASSET(2) char gGTGNightEntranceTex_MQ[] = dgGTGNightEntranceTex_MQ; +void* sGTGEntranceTextures_MQ[] = { + gGTGDayEntranceTex_MQ, + gGTGNightEntranceTex_MQ, +}; + +#define dgForestTempleDayEntranceTex_MQ "__OTR__scenes/mq/Bmori1_scene/gForestTempleDayEntranceTex" +static const ALIGN_ASSET(2) char gForestTempleDayEntranceTex_MQ[] = dgForestTempleDayEntranceTex_MQ; + +#define dgForestTempleNightEntranceTex_MQ "__OTR__scenes/mq/Bmori1_scene/gForestTempleNightEntranceTex" +static const ALIGN_ASSET(2) char gForestTempleNightEntranceTex_MQ[] = dgForestTempleNightEntranceTex_MQ; +void* sForestTempleEntranceTextures_MQ[] = { + gForestTempleDayEntranceTex_MQ, + gForestTempleNightEntranceTex_MQ, +}; + +#define dgSpiritTempleDayEntranceTex_MQ "__OTR__scenes/mq/jyasinzou_scene/gSpiritTempleDayEntranceTex" +static const ALIGN_ASSET(2) char gSpiritTempleDayEntranceTex_MQ[] = dgSpiritTempleDayEntranceTex_MQ; + +#define dgSpiritTempleNightEntranceTex_MQ "__OTR__scenes/mq/jyasinzou_scene/gSpiritTempleNightEntranceTex" +static const ALIGN_ASSET(2) char gSpiritTempleNightEntranceTex_MQ[] = dgSpiritTempleNightEntranceTex_MQ; +void* sSpiritTempleEntranceTextures_MQ[] = { + gSpiritTempleDayEntranceTex_MQ, + gSpiritTempleNightEntranceTex_MQ, +}; + +#endif diff --git a/soh/src/code/z_scene_table.c b/soh/src/code/z_scene_table.c index 9e4f845f5..5213e3190 100644 --- a/soh/src/code/z_scene_table.c +++ b/soh/src/code/z_scene_table.c @@ -23,6 +23,7 @@ #include "overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.h" +#include "soh/mq_asset_hacks.h" #include "soh/Enhancements/randomizer/adult_trade_shuffle.h" #define ENTRANCE(scene, spawn, continueBgm, displayTitleCard, fadeIn, fadeOut) \ @@ -1006,7 +1007,11 @@ void func_800995DC(PlayState* play) { { s32 pad; } - gSPSegmentLoadRes(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(D_8012A2F8[gSaveContext.nightFlag])); + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(D_8012A2F8_MQ[gSaveContext.nightFlag])); + } else { + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(D_8012A2F8[gSaveContext.nightFlag])); + } CLOSE_DISPS(play->state.gfxCtx); } @@ -1046,8 +1051,13 @@ void func_80099878(PlayState* play) { OPEN_DISPS(play->state.gfxCtx); gameplayFrames = play->gameplayFrames; - gSPSegmentLoadRes(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gDCEntranceTextures[gSaveContext.nightFlag])); - gSPSegmentLoadRes(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(sDCLavaFloorTextures[(s32)(gameplayFrames & 14) >> 1])); + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gDCEntranceTextures_MQ[gSaveContext.nightFlag])); + gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(sDCLavaFloorTextures_MQ[(s32)(gameplayFrames & 14) >> 1])); + } else { + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gDCEntranceTextures[gSaveContext.nightFlag])); + gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(sDCLavaFloorTextures[(s32)(gameplayFrames & 14) >> 1])); + } gSPSegment(POLY_XLU_DISP++, 0x09, Gfx_TwoTexScroll(play->state.gfxCtx, 0, (gameplayFrames * 1) % 256, 0, 64, 32, 1, 0, (gameplayFrames * 1) % 128, 64, 32)); @@ -1301,7 +1311,11 @@ void func_8009AFE0(PlayState* play) { { s32 pad[2]; } - gSPSegmentLoadRes(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sThievesHideoutEntranceTextures[gSaveContext.nightFlag])); + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sThievesHideoutEntranceTextures_MQ[gSaveContext.nightFlag])); + } else { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sThievesHideoutEntranceTextures[gSaveContext.nightFlag])); + } CLOSE_DISPS(play->state.gfxCtx); } @@ -1323,7 +1337,11 @@ void func_8009B0FC(PlayState* play) { spAC = play->roomCtx.unk_74[1] & 0xFF; gameplayFrames = play->gameplayFrames; - gSPSegmentLoadRes(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(D_8012A330[gSaveContext.nightFlag])); + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(D_8012A330_MQ[gSaveContext.nightFlag])); + } else { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(D_8012A330[gSaveContext.nightFlag])); + } if (spB0 == 1) { gSPSegment(POLY_OPA_DISP++, 0x08, @@ -1548,7 +1566,11 @@ void func_8009C3EC(PlayState* play) { OPEN_DISPS(play->state.gfxCtx); gameplayFrames = play->gameplayFrames; - gSPSegmentLoadRes(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sIceCavernEntranceTextures[gSaveContext.nightFlag])); + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sIceCavernEntranceTextures_MQ[gSaveContext.nightFlag])); + } else { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sIceCavernEntranceTextures[gSaveContext.nightFlag])); + } gSPSegment(POLY_OPA_DISP++, 0x09, Gfx_TwoTexScroll(play->state.gfxCtx, 0, 127 - gameplayFrames % 128, (gameplayFrames * 1) % 128, 32, 32, 1, gameplayFrames % 128, (gameplayFrames * 1) % 128, 32, 32)); @@ -1650,7 +1672,11 @@ void func_8009CC00(PlayState* play) { OPEN_DISPS(play->state.gfxCtx); gameplayFrames = play->gameplayFrames; - gSPSegmentLoadRes(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGTGEntranceTextures[gSaveContext.nightFlag])); + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGTGEntranceTextures_MQ[gSaveContext.nightFlag])); + } else { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGTGEntranceTextures[gSaveContext.nightFlag])); + } gSPSegment(POLY_OPA_DISP++, 0x09, Gfx_TwoTexScroll(play->state.gfxCtx, 0, 127 - gameplayFrames % 128, (gameplayFrames * 1) % 128, 32, 32, 1, gameplayFrames % 128, (gameplayFrames * 1) % 128, 32, 32)); @@ -1746,7 +1772,11 @@ void func_8009D31C(PlayState* play) { { s32 pad[2]; } - gSPSegmentLoadRes(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sLonLonHouseEntranceTextures[gSaveContext.nightFlag])); + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sLonLonHouseEntranceTextures_MQ[gSaveContext.nightFlag])); + } else { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sLonLonHouseEntranceTextures[gSaveContext.nightFlag])); + } gDPPipeSync(POLY_OPA_DISP++); gDPSetEnvColor(POLY_OPA_DISP++, 128, 128, 128, 128); @@ -1778,8 +1808,13 @@ void func_8009D438(PlayState* play) { var = gSaveContext.nightFlag; } - gSPSegmentLoadRes(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGuardHouseView1Textures[var])); - gSPSegmentLoadRes(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(sGuardHouseView2Textures[var])); + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGuardHouseView1Textures_MQ[var])); + gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(sGuardHouseView2Textures_MQ[var])); + } else { + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGuardHouseView1Textures[var])); + gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(sGuardHouseView2Textures[var])); + } gDPPipeSync(POLY_OPA_DISP++); gDPSetEnvColor(POLY_OPA_DISP++, 128, 128, 128, 128); @@ -1823,7 +1858,11 @@ void func_8009D758(PlayState* play) { OPEN_DISPS(play->state.gfxCtx); gameplayFrames = play->gameplayFrames; - gSPSegmentLoadRes(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sForestTempleEntranceTextures[gSaveContext.nightFlag])); + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sForestTempleEntranceTextures_MQ[gSaveContext.nightFlag])); + } else { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sForestTempleEntranceTextures[gSaveContext.nightFlag])); + } gSPSegment(POLY_XLU_DISP++, 0x09, Gfx_TwoTexScroll(play->state.gfxCtx, 0, 127 - gameplayFrames % 128, (gameplayFrames * 1) % 128, 32, 32, 1, gameplayFrames % 128, (gameplayFrames * 1) % 128, 32, 32)); @@ -1853,7 +1892,11 @@ void func_8009D974(PlayState* play) { { s32 pad[2]; } - gSPSegmentLoadRes(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sSpiritTempleEntranceTextures[gSaveContext.nightFlag])); + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sSpiritTempleEntranceTextures_MQ[gSaveContext.nightFlag])); + } else { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sSpiritTempleEntranceTextures[gSaveContext.nightFlag])); + } CLOSE_DISPS(play->state.gfxCtx); } @@ -1915,7 +1958,11 @@ void func_8009DD5C(PlayState* play) { { s32 pad[2]; } - gSPSegmentLoadRes(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sKakarikoWindowTextures[gSaveContext.nightFlag])); + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sKakarikoWindowTextures_MQ[gSaveContext.nightFlag])); + } else { + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sKakarikoWindowTextures[gSaveContext.nightFlag])); + } gDPPipeSync(POLY_OPA_DISP++); gDPSetEnvColor(POLY_OPA_DISP++, 128, 128, 128, 128); @@ -2050,8 +2097,12 @@ void func_8009E730(PlayState* play) { gDPPipeSync(POLY_OPA_DISP++); gDPSetEnvColor(POLY_OPA_DISP++, 128, 128, 128, 128); - - gSPSegmentLoadRes(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sZorasDomainEntranceTextures[gSaveContext.nightFlag])); + + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sZorasDomainEntranceTextures_MQ[gSaveContext.nightFlag])); + } else { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sZorasDomainEntranceTextures[gSaveContext.nightFlag])); + } { s32 pad[2]; } @@ -2172,6 +2223,7 @@ void func_8009F074(PlayState* play) { CLOSE_DISPS(play->state.gfxCtx); } +// walls of GF room where they throw you when you get caught void* D_8012A380[] = { gSpot12_009678Tex, gSpot12_00DE78Tex, @@ -2183,7 +2235,11 @@ void func_8009F1B4(PlayState* play) { { s32 pad[2]; } - gSPSegmentLoadRes(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(D_8012A380[gSaveContext.nightFlag])); + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(D_8012A380_MQ[gSaveContext.nightFlag])); + } else { + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(D_8012A380[gSaveContext.nightFlag])); + } CLOSE_DISPS(play->state.gfxCtx); } @@ -2316,7 +2372,11 @@ void func_8009F9D0(PlayState* play) { gDPPipeSync(POLY_XLU_DISP++); gDPSetEnvColor(POLY_XLU_DISP++, 128, 128, 128, 128); - gSPSegmentLoadRes(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGoronCityEntranceTextures[gSaveContext.nightFlag])); + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGoronCityEntranceTextures_MQ[gSaveContext.nightFlag])); + } else { + gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sGoronCityEntranceTextures[gSaveContext.nightFlag])); + } { s32 pad[2]; } @@ -2334,7 +2394,11 @@ void func_8009FB74(PlayState* play) { { s32 pad[2]; } - gSPSegmentLoadRes(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sLonLonRanchWindowTextures[gSaveContext.nightFlag])); + if (ResourceMgr_IsGameMasterQuest()) { + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sLonLonRanchWindowTextures_MQ[gSaveContext.nightFlag])); + } else { + gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sLonLonRanchWindowTextures[gSaveContext.nightFlag])); + } gDPPipeSync(POLY_OPA_DISP++); gDPSetEnvColor(POLY_OPA_DISP++, 128, 128, 128, 128);