mirror of
https://github.com/zeldaret/oot.git
synced 2025-02-24 00:25:48 +00:00
figure out equipVtx
This commit is contained in:
parent
ae89ec3044
commit
f0a2b4f74a
4 changed files with 160 additions and 55 deletions
|
@ -750,6 +750,7 @@ typedef enum {
|
||||||
|
|
||||||
#define PAUSE_EQUIP_PLAYER_WIDTH 64
|
#define PAUSE_EQUIP_PLAYER_WIDTH 64
|
||||||
#define PAUSE_EQUIP_PLAYER_HEIGHT 112
|
#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_EQUIP_BUFFER_SIZE sizeof(u16[PAUSE_EQUIP_PLAYER_HEIGHT][PAUSE_EQUIP_PLAYER_WIDTH])
|
||||||
#define PAUSE_PLAYER_SEGMENT_GAMEPLAY_KEEP_BUFFER_SIZE 0x5000
|
#define PAUSE_PLAYER_SEGMENT_GAMEPLAY_KEEP_BUFFER_SIZE 0x5000
|
||||||
|
|
|
@ -2,11 +2,31 @@
|
||||||
#include "assets/textures/icon_item_static/icon_item_static.h"
|
#include "assets/textures/icon_item_static/icon_item_static.h"
|
||||||
#include "assets/textures/parameter_static/parameter_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 sChildUpgrades[] = {
|
||||||
static u8 sAdultUpgrades[] = { UPG_QUIVER, UPG_BOMB_BAG, UPG_STRENGTH, UPG_SCALE };
|
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 sChildUpgradeItemBases[] = {
|
||||||
static u8 sAdultUpgradeItemBases[] = { ITEM_QUIVER_30, ITEM_BOMB_BAG_20, ITEM_BRACELET, ITEM_SCALE_SILVER };
|
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 };
|
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);
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha);
|
||||||
|
|
||||||
curTexture = source;
|
curTexture = source;
|
||||||
remainingSize = width * height * 2;
|
remainingSize = width * height * G_IM_SIZ_16b_BYTES;
|
||||||
textureHeight = 4096 / (width * 2);
|
textureHeight = TMEM_SIZE / (width * G_IM_SIZ_16b_BYTES);
|
||||||
textureSize = width * textureHeight * 2;
|
textureSize = width * textureHeight * G_IM_SIZ_16b_BYTES;
|
||||||
textureCount = remainingSize / textureSize;
|
textureCount = remainingSize / textureSize;
|
||||||
if ((remainingSize % textureSize) != 0) {
|
if ((remainingSize % textureSize) != 0) {
|
||||||
textureCount += 1;
|
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,
|
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);
|
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 - textureSize) < 0) {
|
||||||
if (remainingSize > 0) {
|
if (remainingSize > 0) {
|
||||||
textureHeight = remainingSize / (s32)(width * 2);
|
textureHeight = remainingSize / (s32)(width * G_IM_SIZ_16b_BYTES);
|
||||||
remainingSize -= textureSize;
|
remainingSize -= textureSize;
|
||||||
|
|
||||||
gDPSetTileCustom(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, width, textureHeight, 0,
|
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);
|
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);
|
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) {
|
if (CUR_EQUIP_VALUE(i) != 0) {
|
||||||
gDPPipeSync(POLY_OPA_DISP++);
|
gDPPipeSync(POLY_OPA_DISP++);
|
||||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->equipVtx[j], 4, 0);
|
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 ((pauseCtx->cursorY[PAUSE_EQUIP] == 0) && (pauseCtx->cursorX[PAUSE_EQUIP] == 3)) {
|
||||||
if (gSaveContext.bgsFlag != 0) {
|
if (gSaveContext.bgsFlag) {
|
||||||
cursorItem = ITEM_HEART_PIECE_2;
|
cursorItem = ITEM_HEART_PIECE_2;
|
||||||
} else if (CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE)) {
|
} else if (CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE)) {
|
||||||
cursorItem = ITEM_SWORD_KNIFE;
|
cursorItem = ITEM_SWORD_KNIFE;
|
||||||
|
@ -475,14 +497,14 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
|
||||||
gSaveContext.infTable[INFTABLE_1DX_INDEX] = 0;
|
gSaveContext.infTable[INFTABLE_1DX_INDEX] = 0;
|
||||||
gSaveContext.equips.buttonItems[0] = cursorItem;
|
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.equips.buttonItems[0] = ITEM_SWORD_BGS;
|
||||||
gSaveContext.swordHealth = 8;
|
gSaveContext.swordHealth = 8;
|
||||||
} else {
|
} else {
|
||||||
if (gSaveContext.equips.buttonItems[0] == ITEM_HEART_PIECE_2) {
|
if (gSaveContext.equips.buttonItems[0] == ITEM_HEART_PIECE_2) {
|
||||||
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BGS;
|
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)) {
|
CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE)) {
|
||||||
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_KNIFE;
|
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++) {
|
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)) {
|
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);
|
gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
|
||||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha);
|
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) {
|
// for each row
|
||||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->equipVtx[j], 16, 0);
|
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) {
|
if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
|
||||||
point = CUR_UPG_VALUE(sChildUpgrades[i]);
|
point = CUR_UPG_VALUE(sChildUpgrades[i]);
|
||||||
|
@ -553,6 +587,8 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ((i == 0) && (CUR_UPG_VALUE(sAdultUpgrades[i]) == 0)) {
|
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(
|
KaleidoScope_DrawQuadTextureRGBA32(
|
||||||
play->state.gfxCtx, gItemIcons[sChildUpgradeItemBases[i] + CUR_UPG_VALUE(sChildUpgrades[i]) - 1],
|
play->state.gfxCtx, gItemIcons[sChildUpgradeItemBases[i] + CUR_UPG_VALUE(sChildUpgrades[i]) - 1],
|
||||||
32, 32, 0);
|
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++) {
|
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);
|
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);
|
KaleidoScope_DrawQuadTextureRGBA32(play->state.gfxCtx, gBrokenGiantsKnifeIconTex, 32, 32, point);
|
||||||
} else if (gBitFlags[bit] & gSaveContext.inventory.equipment) {
|
} else if (gBitFlags[bit] & gSaveContext.inventory.equipment) {
|
||||||
KaleidoScope_DrawQuadTextureRGBA32(play->state.gfxCtx, gItemIcons[ITEM_SWORD_KOKIRI + temp], 32, 32,
|
KaleidoScope_DrawQuadTextureRGBA32(play->state.gfxCtx, gItemIcons[ITEM_SWORD_KOKIRI + temp], 32, 32,
|
||||||
|
|
|
@ -53,6 +53,41 @@ typedef enum {
|
||||||
/* 47 */ QUAD_QUEST_MAX
|
/* 47 */ QUAD_QUEST_MAX
|
||||||
} QuestQuad;
|
} 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);
|
void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx);
|
||||||
s32 KaleidoScope_UpdateQuestStatusPoint(PauseContext* pauseCtx, s32 point);
|
s32 KaleidoScope_UpdateQuestStatusPoint(PauseContext* pauseCtx, s32 point);
|
||||||
void KaleidoScope_DrawDebugEditor(PlayState* play);
|
void KaleidoScope_DrawDebugEditor(PlayState* play);
|
||||||
|
|
|
@ -476,30 +476,34 @@ u8 gSlotAgeReqs[] = {
|
||||||
|
|
||||||
// Not sure EQUIP_TYPE_MAX is really EQUIP_TYPE_MAX
|
// Not sure EQUIP_TYPE_MAX is really EQUIP_TYPE_MAX
|
||||||
u8 gEquipAgeReqs[EQUIP_TYPE_MAX][4] = {
|
u8 gEquipAgeReqs[EQUIP_TYPE_MAX][4] = {
|
||||||
|
// EQUIP_TYPE_SWORD
|
||||||
{
|
{
|
||||||
AGE_REQ_ADULT,
|
AGE_REQ_ADULT, // EQUIP_VALUE_SWORD_NONE
|
||||||
AGE_REQ_CHILD,
|
AGE_REQ_CHILD, // EQUIP_VALUE_SWORD_KOKIRI
|
||||||
AGE_REQ_ADULT,
|
AGE_REQ_ADULT, // EQUIP_VALUE_SWORD_MASTER
|
||||||
AGE_REQ_ADULT,
|
AGE_REQ_ADULT, // EQUIP_VALUE_SWORD_BGS
|
||||||
}, // EQUIP_TYPE_SWORD
|
},
|
||||||
|
// EQUIP_TYPE_SHIELD
|
||||||
{
|
{
|
||||||
AGE_REQ_NONE,
|
AGE_REQ_NONE, // EQUIP_VALUE_SHIELD_NONE
|
||||||
AGE_REQ_CHILD,
|
AGE_REQ_CHILD, // EQUIP_VALUE_SHIELD_DEKU
|
||||||
AGE_REQ_NONE,
|
AGE_REQ_NONE, // EQUIP_VALUE_SHIELD_HYLIAN
|
||||||
AGE_REQ_ADULT,
|
AGE_REQ_ADULT, // EQUIP_VALUE_SHIELD_MIRROR
|
||||||
}, // EQUIP_TYPE_SHIELD
|
},
|
||||||
|
// EQUIP_TYPE_TUNIC
|
||||||
{
|
{
|
||||||
AGE_REQ_ADULT,
|
AGE_REQ_ADULT, // EQUIP_VALUE_TUNIC_NONE
|
||||||
AGE_REQ_NONE,
|
AGE_REQ_NONE, // EQUIP_VALUE_TUNIC_KOKIRI
|
||||||
AGE_REQ_ADULT,
|
AGE_REQ_ADULT, // EQUIP_VALUE_TUNIC_GORON
|
||||||
AGE_REQ_ADULT,
|
AGE_REQ_ADULT, // EQUIP_VALUE_TUNIC_ZORA
|
||||||
}, // EQUIP_TYPE_TUNIC
|
},
|
||||||
|
// EQUIP_TYPE_BOOTS
|
||||||
{
|
{
|
||||||
AGE_REQ_NONE,
|
AGE_REQ_NONE, // EQUIP_VALUE_BOOTS_NONE
|
||||||
AGE_REQ_NONE,
|
AGE_REQ_NONE, // EQUIP_VALUE_BOOTS_KOKIRI
|
||||||
AGE_REQ_ADULT,
|
AGE_REQ_ADULT, // EQUIP_VALUE_BOOTS_IRON
|
||||||
AGE_REQ_ADULT,
|
AGE_REQ_ADULT, // EQUIP_VALUE_BOOTS_HOVER
|
||||||
}, // EQUIP_TYPE_BOOTS
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
u8 gItemAgeReqs[] = {
|
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_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[] = {
|
static s16 sQuestQuadsX[] = {
|
||||||
74, // QUEST_MEDALLION_FOREST
|
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) {
|
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 + 1].v.ob[0] = pauseCtx->equipVtx[k + 3].v.ob[0] =
|
||||||
pauseCtx->equipVtx[k + 0].v.ob[0] + 28;
|
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) {
|
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;
|
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;
|
vtx_y = 50;
|
||||||
while (true) {
|
while (true) {
|
||||||
pauseCtx->equipVtx[k + 0].v.ob[0] = pauseCtx->equipVtx[k + 2].v.ob[0] = -64;
|
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 + 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 + 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;
|
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 + 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 + 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 + 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] =
|
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 + 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;
|
pauseCtx->equipVtx[k + 3].v.cn[3] = pauseCtx->alpha;
|
||||||
|
|
||||||
vtx_x_ -= 32;
|
vtx_x_ -= PAUSE_EQUIP_PLAYER_FRAG_HEIGHT;
|
||||||
vtx_y -= 32;
|
vtx_y -= PAUSE_EQUIP_PLAYER_FRAG_HEIGHT;
|
||||||
|
|
||||||
if (vtx_x_ < 0) {
|
if (vtx_x_ < 0) {
|
||||||
pauseCtx->equipVtx[k + 2].v.ob[1] = pauseCtx->equipVtx[k + 3].v.ob[1] =
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3598,7 +3624,7 @@ void KaleidoScope_Update(PlayState* play) {
|
||||||
if (i == ITEM_FROG) {
|
if (i == ITEM_FROG) {
|
||||||
pauseCtx->tradeQuestLocation = 3;
|
pauseCtx->tradeQuestLocation = 3;
|
||||||
}
|
}
|
||||||
if ((i == ITEM_CLAIM_CHECK) && (gSaveContext.bgsFlag == 0)) {
|
if ((i == ITEM_CLAIM_CHECK) && !gSaveContext.bgsFlag) {
|
||||||
pauseCtx->tradeQuestLocation = 7;
|
pauseCtx->tradeQuestLocation = 7;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue