mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-25 10:52:19 -05:00
fix: skybox crash for mask shop (#3427)
This commit is contained in:
parent
bdb201201e
commit
f2df029efa
@ -417,7 +417,12 @@ void func_800AEFC8(SkyboxContext* skyboxCtx, s16 skyboxId) {
|
|||||||
s32 j;
|
s32 j;
|
||||||
s32 phi_s3 = 0;
|
s32 phi_s3 = 0;
|
||||||
|
|
||||||
if (skyboxId == SKYBOX_BAZAAR || (skyboxId > SKYBOX_HOUSE_KAKARIKO && skyboxId <= SKYBOX_BOMBCHU_SHOP)) {
|
//! @bug All shops only provide 2 faces for their sky box. Mask shop is missing from the condition
|
||||||
|
// meaning that the Mask shop will calculate 4 faces
|
||||||
|
// This effect is not noticed as the faces are behind the camera, but will cause a crash in SoH.
|
||||||
|
// SOH General: We have added the Mask shop to this check so only the 2 expected faces are calculated.
|
||||||
|
if (skyboxId == SKYBOX_BAZAAR || skyboxId == SKYBOX_HAPPY_MASK_SHOP ||
|
||||||
|
(skyboxId >= SKYBOX_KOKIRI_SHOP && skyboxId <= SKYBOX_BOMBCHU_SHOP)) {
|
||||||
for (j = 0, i = 0; i < 2; i++, j += 2) {
|
for (j = 0, i = 0; i < 2; i++, j += 2) {
|
||||||
phi_s3 = func_800ADBB0(skyboxCtx, skyboxCtx->roomVtx, phi_s3, D_8012AEBC[i].unk_0, D_8012AEBC[i].unk_4,
|
phi_s3 = func_800ADBB0(skyboxCtx, skyboxCtx->roomVtx, phi_s3, D_8012AEBC[i].unk_0, D_8012AEBC[i].unk_4,
|
||||||
D_8012AEBC[i].unk_8, D_8012AEBC[i].unk_C, D_8012AEBC[i].unk_10, i, j);
|
D_8012AEBC[i].unk_8, D_8012AEBC[i].unk_C, D_8012AEBC[i].unk_10, i, j);
|
||||||
|
@ -59,8 +59,14 @@ void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyb
|
|||||||
gSPDisplayList(POLY_OPA_DISP++, skyboxCtx->dListBuf[2]);
|
gSPDisplayList(POLY_OPA_DISP++, skyboxCtx->dListBuf[2]);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, skyboxCtx->dListBuf[3]);
|
gSPDisplayList(POLY_OPA_DISP++, skyboxCtx->dListBuf[3]);
|
||||||
|
|
||||||
if (skyboxId != SKYBOX_BAZAAR) {
|
//! @bug All shops only provide 2 faces for their sky box. Mask shop is missing from the condition
|
||||||
if (skyboxId <= SKYBOX_HOUSE_KAKARIKO || skyboxId > SKYBOX_BOMBCHU_SHOP) {
|
// meaning that the Mask shop will render the previously loaded sky box values, or uninitialized data.
|
||||||
|
// This effect is not noticed as the faces are behind the camera, but will cause a crash in SoH.
|
||||||
|
// SOH General: We have added the Mask shop to this check so only the 2 expected faces are rendered.
|
||||||
|
if (skyboxId != SKYBOX_BAZAAR && skyboxId != SKYBOX_HAPPY_MASK_SHOP) {
|
||||||
|
if (skyboxId < SKYBOX_KOKIRI_SHOP || skyboxId > SKYBOX_BOMBCHU_SHOP) {
|
||||||
|
// Skip remaining faces for most shop skyboxes
|
||||||
|
|
||||||
gDPPipeSync(POLY_OPA_DISP++);
|
gDPPipeSync(POLY_OPA_DISP++);
|
||||||
gDPLoadTLUT_pal256(POLY_OPA_DISP++, skyboxCtx->palettes[2]);
|
gDPLoadTLUT_pal256(POLY_OPA_DISP++, skyboxCtx->palettes[2]);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, skyboxCtx->dListBuf[4]);
|
gSPDisplayList(POLY_OPA_DISP++, skyboxCtx->dListBuf[4]);
|
||||||
|
Loading…
Reference in New Issue
Block a user