diff --git a/include/z64.h b/include/z64.h index 875ba96841..cd334f240d 100644 --- a/include/z64.h +++ b/include/z64.h @@ -750,6 +750,7 @@ typedef enum { #define PAUSE_EQUIP_PLAYER_WIDTH 64 #define PAUSE_EQUIP_PLAYER_HEIGHT 112 +#define PAUSE_EQUIP_PLAYER_FRAG_HEIGHT (TMEM_SIZE / (PAUSE_EQUIP_PLAYER_WIDTH * G_IM_SIZ_16b_BYTES)) #define PAUSE_EQUIP_BUFFER_SIZE sizeof(u16[PAUSE_EQUIP_PLAYER_HEIGHT][PAUSE_EQUIP_PLAYER_WIDTH]) #define PAUSE_PLAYER_SEGMENT_GAMEPLAY_KEEP_BUFFER_SIZE 0x5000 diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c index da4da3d380..be15c865a5 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c @@ -2,11 +2,31 @@ #include "assets/textures/icon_item_static/icon_item_static.h" #include "assets/textures/parameter_static/parameter_static.h" -static u8 sChildUpgrades[] = { UPG_BULLET_BAG, UPG_BOMB_BAG, UPG_STRENGTH, UPG_SCALE }; -static u8 sAdultUpgrades[] = { UPG_QUIVER, UPG_BOMB_BAG, UPG_STRENGTH, UPG_SCALE }; +static u8 sChildUpgrades[] = { + UPG_BULLET_BAG, // QUAD_EQUIP_UPG_BULLETBAG_QUIVER + UPG_BOMB_BAG, // QUAD_EQUIP_UPG_BOMB_BAG + UPG_STRENGTH, // QUAD_EQUIP_UPG_STRENGTH + UPG_SCALE, // QUAD_EQUIP_UPG_SCALE +}; +static u8 sAdultUpgrades[] = { + UPG_QUIVER, // QUAD_EQUIP_UPG_BULLETBAG_QUIVER + UPG_BOMB_BAG, // QUAD_EQUIP_UPG_BOMB_BAG + UPG_STRENGTH, // QUAD_EQUIP_UPG_STRENGTH + UPG_SCALE, // QUAD_EQUIP_UPG_SCALE +}; -static u8 sChildUpgradeItemBases[] = { ITEM_BULLET_BAG_30, ITEM_BOMB_BAG_20, ITEM_BRACELET, ITEM_SCALE_SILVER }; -static u8 sAdultUpgradeItemBases[] = { ITEM_QUIVER_30, ITEM_BOMB_BAG_20, ITEM_BRACELET, ITEM_SCALE_SILVER }; +static u8 sChildUpgradeItemBases[] = { + ITEM_BULLET_BAG_30, // QUAD_EQUIP_UPG_BULLETBAG_QUIVER + ITEM_BOMB_BAG_20, // QUAD_EQUIP_UPG_BOMB_BAG + ITEM_BRACELET, // QUAD_EQUIP_UPG_STRENGTH + ITEM_SCALE_SILVER, // QUAD_EQUIP_UPG_SCALE +}; +static u8 sAdultUpgradeItemBases[] = { + ITEM_QUIVER_30, // QUAD_EQUIP_UPG_BULLETBAG_QUIVER + ITEM_BOMB_BAG_20, // QUAD_EQUIP_UPG_BOMB_BAG + ITEM_BRACELET, // QUAD_EQUIP_UPG_STRENGTH + ITEM_SCALE_SILVER, // QUAD_EQUIP_UPG_SCALE +}; static u8 sUpgradeItemOffsets[] = { 0x00, 0x03, 0x06, 0x09 }; @@ -35,15 +55,15 @@ void KaleidoScope_DrawEquipmentImage(PlayState* play, void* source, u32 width, u gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha); curTexture = source; - remainingSize = width * height * 2; - textureHeight = 4096 / (width * 2); - textureSize = width * textureHeight * 2; + remainingSize = width * height * G_IM_SIZ_16b_BYTES; + textureHeight = TMEM_SIZE / (width * G_IM_SIZ_16b_BYTES); + textureSize = width * textureHeight * G_IM_SIZ_16b_BYTES; textureCount = remainingSize / textureSize; if ((remainingSize % textureSize) != 0) { textureCount += 1; } - vtxIndex = 80; + vtxIndex = QUAD_EQUIP_PLAYER_FIRST * 4; gDPSetTileCustom(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, width, textureHeight, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -64,7 +84,7 @@ void KaleidoScope_DrawEquipmentImage(PlayState* play, void* source, u32 width, u if ((remainingSize - textureSize) < 0) { if (remainingSize > 0) { - textureHeight = remainingSize / (s32)(width * 2); + textureHeight = remainingSize / (s32)(width * G_IM_SIZ_16b_BYTES); remainingSize -= textureSize; gDPSetTileCustom(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, width, textureHeight, 0, @@ -141,7 +161,9 @@ void KaleidoScope_DrawEquipment(PlayState* play) { gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, ZREG(39), ZREG(40), ZREG(41), pauseCtx->alpha); gDPSetEnvColor(POLY_OPA_DISP++, ZREG(43), ZREG(44), ZREG(45), 0); - for (i = 0, j = 64; i < 4; i++, j += 4) { + // Draw QUAD_EQUIP_SELECTED_SWORD, QUAD_EQUIP_SELECTED_SHIELD, QUAD_EQUIP_SELECTED_TUNIC, QUAD_EQUIP_SELECTED_BOOTS + + for (i = 0, j = QUAD_EQUIP_SELECTED_SWORD * 4; i < EQUIP_TYPE_MAX; i++, j += 4) { if (CUR_EQUIP_VALUE(i) != 0) { gDPPipeSync(POLY_OPA_DISP++); gSPVertex(POLY_OPA_DISP++, &pauseCtx->equipVtx[j], 4, 0); @@ -424,7 +446,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) { } if ((pauseCtx->cursorY[PAUSE_EQUIP] == 0) && (pauseCtx->cursorX[PAUSE_EQUIP] == 3)) { - if (gSaveContext.bgsFlag != 0) { + if (gSaveContext.bgsFlag) { cursorItem = ITEM_HEART_PIECE_2; } else if (CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE)) { cursorItem = ITEM_SWORD_KNIFE; @@ -475,14 +497,14 @@ void KaleidoScope_DrawEquipment(PlayState* play) { gSaveContext.infTable[INFTABLE_1DX_INDEX] = 0; gSaveContext.equips.buttonItems[0] = cursorItem; - if ((pauseCtx->cursorX[PAUSE_EQUIP] == 3) && (gSaveContext.bgsFlag != 0)) { + if ((pauseCtx->cursorX[PAUSE_EQUIP] == 3) && gSaveContext.bgsFlag) { gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BGS; gSaveContext.swordHealth = 8; } else { if (gSaveContext.equips.buttonItems[0] == ITEM_HEART_PIECE_2) { gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BGS; } - if ((gSaveContext.equips.buttonItems[0] == ITEM_SWORD_BGS) && (gSaveContext.bgsFlag == 0) && + if ((gSaveContext.equips.buttonItems[0] == ITEM_SWORD_BGS) && !gSaveContext.bgsFlag && CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE)) { gSaveContext.equips.buttonItems[0] = ITEM_SWORD_KNIFE; } @@ -515,8 +537,16 @@ void KaleidoScope_DrawEquipment(PlayState* play) { } } - for (rowStart = 0, i = 0, point = 4; i < 4; i++, rowStart += 4, point += 16) { + // for each row (one row per equip type) + // point = QUAD_EQUIP_SWORD_KOKIRI, QUAD_EQUIP_SHIELD_DEKU, QUAD_EQUIP_TUNIC_KOKIRI, QUAD_EQUIP_BOOTS_KOKIRI + for (rowStart = 0, i = 0, point = QUAD_EQUIP_SWORD_KOKIRI * 4; i < EQUIP_TYPE_MAX; + i++, rowStart += 4, point += 4 * 4) { + // for each equip column + // j = QUAD_EQUIP_SWORD_KOKIRI, QUAD_EQUIP_SWORD_MASTER, QUAD_EQUIP_SWORD_BIGGORON + // j = QUAD_EQUIP_SHIELD_DEKU, QUAD_EQUIP_SHIELD_HYLIAN, QUAD_EQUIP_SHIELD_MIRROR + // j = QUAD_EQUIP_TUNIC_KOKIRI, QUAD_EQUIP_TUNIC_GORON, QUAD_EQUIP_TUNIC_ZORA + // j = QUAD_EQUIP_BOOTS_KOKIRI, QUAD_EQUIP_BOOTS_IRON, QUAD_EQUIP_BOOTS_HOVER for (k = 0, temp = rowStart + 1, bit = rowStart, j = point; k < 3; k++, bit++, j += 4, temp++) { if ((gBitFlags[bit] & gSaveContext.inventory.equipment) && (pauseCtx->cursorSpecialPos == 0)) { @@ -541,8 +571,12 @@ void KaleidoScope_DrawEquipment(PlayState* play) { gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha); - for (rowStart = 0, j = 0, temp = 0, i = 0; i < 4; i++, rowStart += 4, j += 16) { - gSPVertex(POLY_OPA_DISP++, &pauseCtx->equipVtx[j], 16, 0); + // for each row + for (rowStart = 0, j = 0, temp = 0, i = 0; i < 4; i++, rowStart += 4, j += 4 * 4) { + gSPVertex(POLY_OPA_DISP++, &pauseCtx->equipVtx[j], 4 * 4, 0); + + // Draw upgrade `i` + // QUAD_EQUIP_UPG_BULLETBAG_QUIVER, QUAD_EQUIP_UPG_BOMB_BAG, QUAD_EQUIP_UPG_STRENGTH, QUAD_EQUIP_UPG_SCALE if (LINK_AGE_IN_YEARS == YEARS_CHILD) { point = CUR_UPG_VALUE(sChildUpgrades[i]); @@ -553,6 +587,8 @@ void KaleidoScope_DrawEquipment(PlayState* play) { } } else { if ((i == 0) && (CUR_UPG_VALUE(sAdultUpgrades[i]) == 0)) { + // Show bullet bag instead of quiver if player has no quiver + //! @bug This assumes adult always has bullet bag KaleidoScope_DrawQuadTextureRGBA32( play->state.gfxCtx, gItemIcons[sChildUpgradeItemBases[i] + CUR_UPG_VALUE(sChildUpgrades[i]) - 1], 32, 32, 0); @@ -563,11 +599,18 @@ void KaleidoScope_DrawEquipment(PlayState* play) { } } + // Draw owned equips of type `i` + // QUAD_EQUIP_SWORD_KOKIRI, QUAD_EQUIP_SWORD_MASTER, QUAD_EQUIP_SWORD_BIGGORON + // QUAD_EQUIP_SHIELD_DEKU, QUAD_EQUIP_SHIELD_HYLIAN, QUAD_EQUIP_SHIELD_MIRROR + // QUAD_EQUIP_TUNIC_KOKIRI, QUAD_EQUIP_TUNIC_GORON, QUAD_EQUIP_TUNIC_ZORA + // QUAD_EQUIP_BOOTS_KOKIRI, QUAD_EQUIP_BOOTS_IRON, QUAD_EQUIP_BOOTS_HOVER + for (k = 0, bit = rowStart, point = 4; k < 3; k++, point += 4, temp++, bit++) { - if (((u32)i == 0) && (k == 2) && (gSaveContext.bgsFlag != 0)) { + if (((u32)i == EQUIP_TYPE_SWORD) && (k == EQUIP_INV_SWORD_BGS) && gSaveContext.bgsFlag) { KaleidoScope_DrawQuadTextureRGBA32(play->state.gfxCtx, gBiggoronSwordIconTex, 32, 32, point); - } else if ((i == 0) && (k == 2) && (gBitFlags[bit + 1] & gSaveContext.inventory.equipment)) { + } else if ((i == EQUIP_TYPE_SWORD) && (k == EQUIP_INV_SWORD_BGS) && + (gBitFlags[bit + 1] & gSaveContext.inventory.equipment)) { KaleidoScope_DrawQuadTextureRGBA32(play->state.gfxCtx, gBrokenGiantsKnifeIconTex, 32, 32, point); } else if (gBitFlags[bit] & gSaveContext.inventory.equipment) { KaleidoScope_DrawQuadTextureRGBA32(play->state.gfxCtx, gItemIcons[ITEM_SWORD_KOKIRI + temp], 32, 32, diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h index 0266732372..f86518e279 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h @@ -53,6 +53,41 @@ typedef enum { /* 47 */ QUAD_QUEST_MAX } QuestQuad; +typedef enum { + // Grid of upgrades and equips, left column is upgrades, others are equips, with one row per equip type + // Row 0 + /* 0 */ QUAD_EQUIP_UPG_BULLETBAG_QUIVER, + /* 1 */ QUAD_EQUIP_SWORD_KOKIRI, + /* 2 */ QUAD_EQUIP_SWORD_MASTER, + /* 3 */ QUAD_EQUIP_SWORD_BIGGORON, + // Row 1 + /* 4 */ QUAD_EQUIP_UPG_BOMB_BAG, + /* 5 */ QUAD_EQUIP_SHIELD_DEKU, + /* 6 */ QUAD_EQUIP_SHIELD_HYLIAN, + /* 7 */ QUAD_EQUIP_SHIELD_MIRROR, + // Row 2 + /* 8 */ QUAD_EQUIP_UPG_STRENGTH, + /* 9 */ QUAD_EQUIP_TUNIC_KOKIRI, + /* 10 */ QUAD_EQUIP_TUNIC_GORON, + /* 11 */ QUAD_EQUIP_TUNIC_ZORA, + // Row 3 + /* 12 */ QUAD_EQUIP_UPG_SCALE, + /* 13 */ QUAD_EQUIP_BOOTS_KOKIRI, + /* 14 */ QUAD_EQUIP_BOOTS_IRON, + /* 15 */ QUAD_EQUIP_BOOTS_HOVER, + // Markers indicating the currently selected equip + /* 16 */ QUAD_EQUIP_SELECTED_SWORD, + /* 17 */ QUAD_EQUIP_SELECTED_SHIELD, + /* 18 */ QUAD_EQUIP_SELECTED_TUNIC, + /* 19 */ QUAD_EQUIP_SELECTED_BOOTS, + // Player prerender + /* 20 */ QUAD_EQUIP_PLAYER_FIRST, + /* 23 */ QUAD_EQUIP_PLAYER_LAST = + QUAD_EQUIP_PLAYER_FIRST + (((PAUSE_EQUIP_PLAYER_HEIGHT - 1) / PAUSE_EQUIP_PLAYER_FRAG_HEIGHT) + 1) - 1, + // 24..27 are unused, probably meant for player prerender + /* 28 */ QUAD_EQUIP_MAX = QUAD_EQUIP_PLAYER_LAST + 4 + 1 +} EquipQuad; + void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx); s32 KaleidoScope_UpdateQuestStatusPoint(PauseContext* pauseCtx, s32 point); void KaleidoScope_DrawDebugEditor(PlayState* play); diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c index a212447029..905402339b 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c @@ -476,30 +476,34 @@ u8 gSlotAgeReqs[] = { // Not sure EQUIP_TYPE_MAX is really EQUIP_TYPE_MAX u8 gEquipAgeReqs[EQUIP_TYPE_MAX][4] = { + // EQUIP_TYPE_SWORD { - AGE_REQ_ADULT, - AGE_REQ_CHILD, - AGE_REQ_ADULT, - AGE_REQ_ADULT, - }, // EQUIP_TYPE_SWORD + AGE_REQ_ADULT, // EQUIP_VALUE_SWORD_NONE + AGE_REQ_CHILD, // EQUIP_VALUE_SWORD_KOKIRI + AGE_REQ_ADULT, // EQUIP_VALUE_SWORD_MASTER + AGE_REQ_ADULT, // EQUIP_VALUE_SWORD_BGS + }, + // EQUIP_TYPE_SHIELD { - AGE_REQ_NONE, - AGE_REQ_CHILD, - AGE_REQ_NONE, - AGE_REQ_ADULT, - }, // EQUIP_TYPE_SHIELD + AGE_REQ_NONE, // EQUIP_VALUE_SHIELD_NONE + AGE_REQ_CHILD, // EQUIP_VALUE_SHIELD_DEKU + AGE_REQ_NONE, // EQUIP_VALUE_SHIELD_HYLIAN + AGE_REQ_ADULT, // EQUIP_VALUE_SHIELD_MIRROR + }, + // EQUIP_TYPE_TUNIC { - AGE_REQ_ADULT, - AGE_REQ_NONE, - AGE_REQ_ADULT, - AGE_REQ_ADULT, - }, // EQUIP_TYPE_TUNIC + AGE_REQ_ADULT, // EQUIP_VALUE_TUNIC_NONE + AGE_REQ_NONE, // EQUIP_VALUE_TUNIC_KOKIRI + AGE_REQ_ADULT, // EQUIP_VALUE_TUNIC_GORON + AGE_REQ_ADULT, // EQUIP_VALUE_TUNIC_ZORA + }, + // EQUIP_TYPE_BOOTS { - AGE_REQ_NONE, - AGE_REQ_NONE, - AGE_REQ_ADULT, - AGE_REQ_ADULT, - }, // EQUIP_TYPE_BOOTS + AGE_REQ_NONE, // EQUIP_VALUE_BOOTS_NONE + AGE_REQ_NONE, // EQUIP_VALUE_BOOTS_KOKIRI + AGE_REQ_ADULT, // EQUIP_VALUE_BOOTS_IRON + AGE_REQ_ADULT, // EQUIP_VALUE_BOOTS_HOVER + }, }; u8 gItemAgeReqs[] = { @@ -2314,9 +2318,14 @@ s16 func_80823A0C_makeVertices_(PlayState* play, Vtx* vtx, s16 usage_arg2, s16 a static s16 D_8082B11C[] = { 0, 4, 8, 12, 24, 32, 56 }; // itemVtx -static s16 D_8082B12C_x_equipVtx_[] = { -114, 12, 44, 76 }; +static s16 sEquipColumnsX[] = { -114, 12, 44, 76 }; -static u8 D_8082B134[] = { 1, 5, 9, 13 }; // equipVtx +static u8 sEquipQuadsFirstByEquipType_[EQUIP_TYPE_MAX] = { + QUAD_EQUIP_SWORD_KOKIRI, // EQUIP_TYPE_SWORD + QUAD_EQUIP_SHIELD_DEKU, // EQUIP_TYPE_SHIELD + QUAD_EQUIP_TUNIC_KOKIRI, // EQUIP_TYPE_TUNIC + QUAD_EQUIP_BOOTS_KOKIRI, // EQUIP_TYPE_BOOTS +}; static s16 sQuestQuadsX[] = { 74, // QUEST_MEDALLION_FOREST @@ -2707,11 +2716,18 @@ void KaleidoScope_InitVertices(PlayState* play, GraphicsContext* gfxCtx) { } } - pauseCtx->equipVtx = Graph_Alloc(gfxCtx, 112 * sizeof(Vtx)); + pauseCtx->equipVtx = Graph_Alloc(gfxCtx, (QUAD_EQUIP_MAX * 4) * sizeof(Vtx)); - for (k = 0, i = 0, vtx_y = 58; i < 4; i++, vtx_y -= 32) { + // QUAD_EQUIP_UPG_BULLETBAG_QUIVER, QUAD_EQUIP_SWORD_KOKIRI, QUAD_EQUIP_SWORD_MASTER, QUAD_EQUIP_SWORD_BIGGORON, + // QUAD_EQUIP_UPG_BOMB_BAG, QUAD_EQUIP_SHIELD_DEKU, QUAD_EQUIP_SHIELD_HYLIAN, QUAD_EQUIP_SHIELD_MIRROR, + // QUAD_EQUIP_UPG_STRENGTH, QUAD_EQUIP_TUNIC_KOKIRI, QUAD_EQUIP_TUNIC_GORON, QUAD_EQUIP_TUNIC_ZORA, + // QUAD_EQUIP_UPG_SCALE, QUAD_EQUIP_BOOTS_KOKIRI, QUAD_EQUIP_BOOTS_IRON, QUAD_EQUIP_BOOTS_HOVER + + // for each row + for (k = 0, i = 0, vtx_y = 58; i < EQUIP_TYPE_MAX; i++, vtx_y -= 32) { + // for each column for (j = 0; j < 4; j++, k += 4) { - pauseCtx->equipVtx[k + 0].v.ob[0] = pauseCtx->equipVtx[k + 2].v.ob[0] = D_8082B12C_x_equipVtx_[j] + 2; + pauseCtx->equipVtx[k + 0].v.ob[0] = pauseCtx->equipVtx[k + 2].v.ob[0] = sEquipColumnsX[j] + 2; pauseCtx->equipVtx[k + 1].v.ob[0] = pauseCtx->equipVtx[k + 3].v.ob[0] = pauseCtx->equipVtx[k + 0].v.ob[0] + 28; @@ -2745,9 +2761,11 @@ void KaleidoScope_InitVertices(PlayState* play, GraphicsContext* gfxCtx) { } } - for (j = 0; j < 4; j++, k += 4) { + // QUAD_EQUIP_SELECTED_SWORD, QUAD_EQUIP_SELECTED_SHIELD, QUAD_EQUIP_SELECTED_TUNIC, QUAD_EQUIP_SELECTED_BOOTS + + for (j = 0; j < EQUIP_TYPE_MAX; j++, k += 4) { if (CUR_EQUIP_VALUE(j) != 0) { - i = (CUR_EQUIP_VALUE(j) + D_8082B134[j] - 1) * 4; + i = (CUR_EQUIP_VALUE(j) - 1 + sEquipQuadsFirstByEquipType_[j]) * 4; pauseCtx->equipVtx[k + 0].v.ob[0] = pauseCtx->equipVtx[k + 2].v.ob[0] = pauseCtx->equipVtx[i].v.ob[0] - 2; @@ -2783,16 +2801,20 @@ void KaleidoScope_InitVertices(PlayState* play, GraphicsContext* gfxCtx) { } } - vtx_x_ = 112; + // QUAD_EQUIP_PLAYER_FIRST to TODO + + vtx_x_ = PAUSE_EQUIP_PLAYER_HEIGHT; vtx_y = 50; while (true) { pauseCtx->equipVtx[k + 0].v.ob[0] = pauseCtx->equipVtx[k + 2].v.ob[0] = -64; - pauseCtx->equipVtx[k + 1].v.ob[0] = pauseCtx->equipVtx[k + 3].v.ob[0] = pauseCtx->equipVtx[k + 0].v.ob[0] + 64; + pauseCtx->equipVtx[k + 1].v.ob[0] = pauseCtx->equipVtx[k + 3].v.ob[0] = + pauseCtx->equipVtx[k + 0].v.ob[0] + PAUSE_EQUIP_PLAYER_WIDTH; pauseCtx->equipVtx[k + 0].v.ob[1] = pauseCtx->equipVtx[k + 1].v.ob[1] = vtx_y + pauseCtx->offsetY; - pauseCtx->equipVtx[k + 2].v.ob[1] = pauseCtx->equipVtx[k + 3].v.ob[1] = pauseCtx->equipVtx[k + 0].v.ob[1] - 32; + pauseCtx->equipVtx[k + 2].v.ob[1] = pauseCtx->equipVtx[k + 3].v.ob[1] = + pauseCtx->equipVtx[k + 0].v.ob[1] - PAUSE_EQUIP_PLAYER_FRAG_HEIGHT; pauseCtx->equipVtx[k + 0].v.ob[2] = pauseCtx->equipVtx[k + 1].v.ob[2] = pauseCtx->equipVtx[k + 2].v.ob[2] = pauseCtx->equipVtx[k + 3].v.ob[2] = 0; @@ -2803,9 +2825,10 @@ void KaleidoScope_InitVertices(PlayState* play, GraphicsContext* gfxCtx) { pauseCtx->equipVtx[k + 0].v.tc[0] = pauseCtx->equipVtx[k + 0].v.tc[1] = pauseCtx->equipVtx[k + 1].v.tc[1] = pauseCtx->equipVtx[k + 2].v.tc[0] = 0; - pauseCtx->equipVtx[k + 1].v.tc[0] = pauseCtx->equipVtx[k + 3].v.tc[0] = 64 * (1 << 5); + pauseCtx->equipVtx[k + 1].v.tc[0] = pauseCtx->equipVtx[k + 3].v.tc[0] = PAUSE_EQUIP_PLAYER_WIDTH * (1 << 5); - pauseCtx->equipVtx[k + 2].v.tc[1] = pauseCtx->equipVtx[k + 3].v.tc[1] = 32 * (1 << 5); + pauseCtx->equipVtx[k + 2].v.tc[1] = pauseCtx->equipVtx[k + 3].v.tc[1] = + PAUSE_EQUIP_PLAYER_FRAG_HEIGHT * (1 << 5); pauseCtx->equipVtx[k + 0].v.cn[0] = pauseCtx->equipVtx[k + 1].v.cn[0] = pauseCtx->equipVtx[k + 2].v.cn[0] = pauseCtx->equipVtx[k + 3].v.cn[0] = pauseCtx->equipVtx[k + 0].v.cn[1] = pauseCtx->equipVtx[k + 1].v.cn[1] = @@ -2816,13 +2839,16 @@ void KaleidoScope_InitVertices(PlayState* play, GraphicsContext* gfxCtx) { pauseCtx->equipVtx[k + 0].v.cn[3] = pauseCtx->equipVtx[k + 1].v.cn[3] = pauseCtx->equipVtx[k + 2].v.cn[3] = pauseCtx->equipVtx[k + 3].v.cn[3] = pauseCtx->alpha; - vtx_x_ -= 32; - vtx_y -= 32; + vtx_x_ -= PAUSE_EQUIP_PLAYER_FRAG_HEIGHT; + vtx_y -= PAUSE_EQUIP_PLAYER_FRAG_HEIGHT; + if (vtx_x_ < 0) { pauseCtx->equipVtx[k + 2].v.ob[1] = pauseCtx->equipVtx[k + 3].v.ob[1] = - pauseCtx->equipVtx[k + 0].v.ob[1] - 16; + pauseCtx->equipVtx[k + 0].v.ob[1] - (PAUSE_EQUIP_PLAYER_HEIGHT % PAUSE_EQUIP_PLAYER_FRAG_HEIGHT); + + pauseCtx->equipVtx[k + 2].v.tc[1] = pauseCtx->equipVtx[k + 3].v.tc[1] = + (PAUSE_EQUIP_PLAYER_HEIGHT % PAUSE_EQUIP_PLAYER_FRAG_HEIGHT) * (1 << 5); - pauseCtx->equipVtx[k + 2].v.tc[1] = pauseCtx->equipVtx[k + 3].v.tc[1] = 16 * (1 << 5); break; } @@ -3598,7 +3624,7 @@ void KaleidoScope_Update(PlayState* play) { if (i == ITEM_FROG) { pauseCtx->tradeQuestLocation = 3; } - if ((i == ITEM_CLAIM_CHECK) && (gSaveContext.bgsFlag == 0)) { + if ((i == ITEM_CLAIM_CHECK) && !gSaveContext.bgsFlag) { pauseCtx->tradeQuestLocation = 7; } }