1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-02-23 15:55:47 +00:00

some more bits on questpage

This commit is contained in:
Dragorn421 2022-10-31 16:53:16 +01:00
parent ac3a7e20fb
commit 40538e7aea
No known key found for this signature in database
GPG key ID: 32B53D2D16FC4118
4 changed files with 61 additions and 12 deletions

View file

@ -106,6 +106,7 @@
#define R_START_LABEL_DD(i) ZREG(48 + (i)) #define R_START_LABEL_DD(i) ZREG(48 + (i))
#define R_START_LABEL_Y(i) ZREG(51 + (i)) #define R_START_LABEL_Y(i) ZREG(51 + (i))
#define R_START_LABEL_X(i) ZREG(54 + (i)) #define R_START_LABEL_X(i) ZREG(54 + (i))
#define R_PAUSE_QUEST_MEDALLION_SHINE_TIME(i) ZREG(61 + (i)) // i = 0..3 (clashes with ZREG(62) and ZREG(63))
#define R_C_UP_BTN_X ZREG(62) #define R_C_UP_BTN_X ZREG(62)
#define R_C_UP_BTN_Y ZREG(63) #define R_C_UP_BTN_Y ZREG(63)
#define R_START_BTN_X ZREG(68) #define R_START_BTN_X ZREG(68)

View file

@ -309,10 +309,11 @@ void Regs_InitDataImpl(void) {
R_START_LABEL_X(0) = 120; R_START_LABEL_X(0) = 120;
R_START_LABEL_X(1) = 119; R_START_LABEL_X(1) = 119;
R_START_LABEL_X(2) = 119; R_START_LABEL_X(2) = 119;
ZREG(61) = 1; R_PAUSE_QUEST_MEDALLION_SHINE_TIME(0) = 1;
R_C_UP_BTN_X = C_UP_BUTTON_X; //! @bug Overlapping reg usage
R_C_UP_BTN_Y = C_UP_BUTTON_Y; R_C_UP_BTN_X = C_UP_BUTTON_X; // R_PAUSE_QUEST_MEDALLION_SHINE_TIME(1)
ZREG(64) = 20; R_C_UP_BTN_Y = C_UP_BUTTON_Y; // R_PAUSE_QUEST_MEDALLION_SHINE_TIME(2)
R_PAUSE_QUEST_MEDALLION_SHINE_TIME(3) = 20;
ZREG(65) = 21; ZREG(65) = 21;
ZREG(66) = 122; ZREG(66) = 122;
R_ITEM_BTN_X(1) = C_LEFT_BUTTON_X; R_ITEM_BTN_X(1) = C_LEFT_BUTTON_X;

View file

@ -14,9 +14,22 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
// Shining medallions // Shining medallions
static s16 sMedEnvColors[6 + 6][3] = { static s16 sMedEnvColors[6 + 6][3] = {
{ 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, // Target env color when sMedEnvShineState == 0
{ 0, 60, 0 }, { 90, 0, 0 }, { 0, 40, 110 }, { 80, 40, 0 }, { 70, 0, 90 }, { 90, 90, 0 }, { 0, 0, 0 }, // QUEST_MEDALLION_FOREST
{ 0, 0, 0 }, // QUEST_MEDALLION_FIRE
{ 0, 0, 0 }, // QUEST_MEDALLION_WATER
{ 0, 0, 0 }, // QUEST_MEDALLION_SPIRIT
{ 0, 0, 0 }, // QUEST_MEDALLION_SHADOW
{ 0, 0, 0 }, // QUEST_MEDALLION_LIGHT
// Target env color when sMedEnvShineState == 2
{ 0, 60, 0 }, // QUEST_MEDALLION_FOREST
{ 90, 0, 0 }, // QUEST_MEDALLION_FIRE
{ 0, 40, 110 }, // QUEST_MEDALLION_WATER
{ 80, 40, 0 }, // QUEST_MEDALLION_SPIRIT
{ 70, 0, 90 }, // QUEST_MEDALLION_SHADOW
{ 90, 90, 0 }, // QUEST_MEDALLION_LIGHT
}; };
// Current (animated) env color for each medallion
static s16 sMedEnvRed[6] = { 255, 255, 255, 255, 255, 255 }; static s16 sMedEnvRed[6] = { 255, 255, 255, 255, 255, 255 };
static s16 sMedEnvGreen[6] = { 255, 255, 255, 255, 255, 255 }; static s16 sMedEnvGreen[6] = { 255, 255, 255, 255, 255, 255 };
static s16 sMedEnvBlue[6] = { 150, 150, 150, 150, 150, 150 }; static s16 sMedEnvBlue[6] = { 150, 150, 150, 150, 150, 150 };
@ -48,13 +61,46 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
static s32 sUnused2 = 0; static s32 sUnused2 = 0;
static s16 sSongsPrimRed[] = { static s16 sSongsPrimRed[] = {
150, 255, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, // QUEST_SONG_MINUET
255, // QUEST_SONG_BOLERO
100, // QUEST_SONG_SERENADE
255, // QUEST_SONG_REQUIEM
255, // QUEST_SONG_NOCTURNE
255, // QUEST_SONG_PRELUDE
255, // QUEST_SONG_LULLABY
255, // QUEST_SONG_EPONA
255, // QUEST_SONG_SARIA
255, // QUEST_SONG_SUN
255, // QUEST_SONG_TIME
255, // QUEST_SONG_STORMS
}; };
static s16 sSongsPrimGreen[] = { static s16 sSongsPrimGreen[] = {
255, 80, 150, 160, 100, 240, 255, 255, 255, 255, 255, 255, 255, // QUEST_SONG_MINUET
80, // QUEST_SONG_BOLERO
150, // QUEST_SONG_SERENADE
160, // QUEST_SONG_REQUIEM
100, // QUEST_SONG_NOCTURNE
240, // QUEST_SONG_PRELUDE
255, // QUEST_SONG_LULLABY
255, // QUEST_SONG_EPONA
255, // QUEST_SONG_SARIA
255, // QUEST_SONG_SUN
255, // QUEST_SONG_TIME
255, // QUEST_SONG_STORMS
}; };
static s16 sSongsPrimBlue[] = { static s16 sSongsPrimBlue[] = {
100, 40, 255, 0, 255, 100, 255, 255, 255, 255, 255, 255, 100, // QUEST_SONG_MINUET
40, // QUEST_SONG_BOLERO
255, // QUEST_SONG_SERENADE
0, // QUEST_SONG_REQUIEM
255, // QUEST_SONG_NOCTURNE
100, // QUEST_SONG_PRELUDE
255, // QUEST_SONG_LULLABY
255, // QUEST_SONG_EPONA
255, // QUEST_SONG_SARIA
255, // QUEST_SONG_SUN
255, // QUEST_SONG_TIME
255, // QUEST_SONG_STORMS
}; };
enum { enum {
@ -390,7 +436,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
sMedEnvTimer--; sMedEnvTimer--;
for (j = 0, bufI = 0; j < QUEST_SONG_MINUET - QUEST_MEDALLION_FOREST; j++, bufI += 4) { for (j = 0, bufI = QUEST_MEDALLION_FOREST * 4; j < QUEST_SONG_MINUET - QUEST_MEDALLION_FOREST; j++, bufI += 4) {
if ((sMedEnvShineState != 1) && (sMedEnvShineState != 3)) { if ((sMedEnvShineState != 1) && (sMedEnvShineState != 3)) {
targetColorIndex = (sMedEnvShineState != 0) ? j + 6 : j; targetColorIndex = (sMedEnvShineState != 0) ? j + 6 : j;
@ -431,7 +477,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
} }
if (sMedEnvTimer == 0) { if (sMedEnvTimer == 0) {
sMedEnvTimer = ZREG(61 + sMedEnvShineState); sMedEnvTimer = R_PAUSE_QUEST_MEDALLION_SHINE_TIME(sMedEnvShineState);
if (++sMedEnvShineState >= 4) { if (++sMedEnvShineState >= 4) {
sMedEnvShineState = 0; sMedEnvShineState = 0;
} }
@ -564,7 +610,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
gDPPipeSync(POLY_OPA_DISP++); gDPPipeSync(POLY_OPA_DISP++);
gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
bufI += 4; bufI += (QUAD_QUEST_SONG_NOTE_A1 - QUEST_HEART_PIECE) * 4;
// Update cursor color // Update cursor color
if ((pauseCtx->cursorSpecialPos == 0) && (cursor >= QUEST_SONG_MINUET) && (cursor < QUEST_KOKIRI_EMERALD)) { if ((pauseCtx->cursorSpecialPos == 0) && (cursor >= QUEST_SONG_MINUET) && (cursor < QUEST_KOKIRI_EMERALD)) {

View file

@ -23,6 +23,7 @@ extern u8 gAreaGsFlags[];
#define CHECK_AGE_REQ_ITEM(item) ((gItemAgeReqs[item] == 9) || (gItemAgeReqs[item] == ((void)0, gSaveContext.linkAge))) #define CHECK_AGE_REQ_ITEM(item) ((gItemAgeReqs[item] == 9) || (gItemAgeReqs[item] == ((void)0, gSaveContext.linkAge)))
typedef enum { typedef enum {
// 0 to 24 matches the `QuestItem` enum
// Notes showing the correct song // Notes showing the correct song
/* 25 */ QUAD_QUEST_SONG_NOTE_A1 = QUEST_HEART_PIECE + 1, /* 25 */ QUAD_QUEST_SONG_NOTE_A1 = QUEST_HEART_PIECE + 1,
/* 26 */ QUAD_QUEST_SONG_NOTE_A2, /* 26 */ QUAD_QUEST_SONG_NOTE_A2,