mirror of
https://github.com/zeldaret/oot.git
synced 2025-02-20 13:55:26 +00:00
Pause docs: Songs playback (#2220)
* Pause docs: Songs playback * `VREG(21-25)` -> `VREG(21) to VREG(25)` * comments on quest-song related main states * make `sPlayedSongBtns` `+1`-sized to account for trailing INVALID button note in a 8-btn-notes song
This commit is contained in:
parent
a09ea76025
commit
e331805c0a
4 changed files with 192 additions and 159 deletions
|
@ -221,6 +221,7 @@
|
||||||
#define R_COMPASS_OFFSET_X VREG(16)
|
#define R_COMPASS_OFFSET_X VREG(16)
|
||||||
#define R_COMPASS_OFFSET_Y VREG(17)
|
#define R_COMPASS_OFFSET_Y VREG(17)
|
||||||
#define R_MINIMAP_COLOR(i) VREG(18 + (i))
|
#define R_MINIMAP_COLOR(i) VREG(18 + (i))
|
||||||
|
#define R_PAUSE_SONG_OCA_BTN_Y(ocarinaBtnIndex) VREG(21 + (ocarinaBtnIndex)) // VREG(21) to VREG(25)
|
||||||
#define R_OCARINA_BUTTONS_XPOS VREG(28)
|
#define R_OCARINA_BUTTONS_XPOS VREG(28)
|
||||||
#define R_OCARINA_BUTTONS_XPOS_OFFSET VREG(29)
|
#define R_OCARINA_BUTTONS_XPOS_OFFSET VREG(29)
|
||||||
#define R_TEXT_ADJUST_COLOR_1_R VREG(33)
|
#define R_TEXT_ADJUST_COLOR_1_R VREG(33)
|
||||||
|
@ -230,6 +231,7 @@
|
||||||
#define R_TEXT_ADJUST_COLOR_2_G VREG(37)
|
#define R_TEXT_ADJUST_COLOR_2_G VREG(37)
|
||||||
#define R_TEXT_ADJUST_COLOR_2_B VREG(38)
|
#define R_TEXT_ADJUST_COLOR_2_B VREG(38)
|
||||||
#define R_OCARINA_BUTTONS_YPOS(note) VREG(45 + (note))
|
#define R_OCARINA_BUTTONS_YPOS(note) VREG(45 + (note))
|
||||||
|
#define R_OCARINA_BUTTONS_APPEAR_ALPHA_STEP VREG(50)
|
||||||
#define R_OCARINA_BUTTONS_YPOS_OFFSET VREG(51)
|
#define R_OCARINA_BUTTONS_YPOS_OFFSET VREG(51)
|
||||||
#define R_KALEIDO_PROMPT_CURSOR_ALPHA_TIMER_BASE VREG(60)
|
#define R_KALEIDO_PROMPT_CURSOR_ALPHA_TIMER_BASE VREG(60)
|
||||||
#define R_KALEIDO_PROMPT_CURSOR_ALPHA VREG(61)
|
#define R_KALEIDO_PROMPT_CURSOR_ALPHA VREG(61)
|
||||||
|
|
|
@ -87,14 +87,14 @@ typedef enum PauseState {
|
||||||
typedef enum PauseMainState {
|
typedef enum PauseMainState {
|
||||||
/* 0 */ PAUSE_MAIN_STATE_IDLE,
|
/* 0 */ PAUSE_MAIN_STATE_IDLE,
|
||||||
/* 1 */ PAUSE_MAIN_STATE_SWITCHING_PAGE,
|
/* 1 */ PAUSE_MAIN_STATE_SWITCHING_PAGE,
|
||||||
/* 2 */ PAUSE_MAIN_STATE_2,
|
/* 2 */ PAUSE_MAIN_STATE_SONG_PLAYBACK, // The song is being played back to the player.
|
||||||
/* 3 */ PAUSE_MAIN_STATE_3,
|
/* 3 */ PAUSE_MAIN_STATE_3,
|
||||||
/* 4 */ PAUSE_MAIN_STATE_4,
|
/* 4 */ PAUSE_MAIN_STATE_SONG_PROMPT_INIT, // Start the prompt for the player to play the song.
|
||||||
/* 5 */ PAUSE_MAIN_STATE_5,
|
/* 5 */ PAUSE_MAIN_STATE_SONG_PROMPT, // Waiting for the player to play the song.
|
||||||
/* 6 */ PAUSE_MAIN_STATE_6,
|
/* 6 */ PAUSE_MAIN_STATE_SONG_PROMPT_DONE, // The song prompt is done, the player either played the song successfully or made a mistake.
|
||||||
/* 7 */ PAUSE_MAIN_STATE_7,
|
/* 7 */ PAUSE_MAIN_STATE_7,
|
||||||
/* 8 */ PAUSE_MAIN_STATE_8,
|
/* 8 */ PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG, // Like PAUSE_MAIN_STATE_IDLE, but the quest page is active and the cursor is positioned on a song.
|
||||||
/* 9 */ PAUSE_MAIN_STATE_9
|
/* 9 */ PAUSE_MAIN_STATE_SONG_PLAYBACK_START // Start playing the song back to the player.
|
||||||
} PauseMainState;
|
} PauseMainState;
|
||||||
|
|
||||||
// Sub-states of PAUSE_STATE_SAVE_PROMPT
|
// Sub-states of PAUSE_STATE_SAVE_PROMPT
|
||||||
|
|
|
@ -2,14 +2,16 @@
|
||||||
#include "assets/textures/parameter_static/parameter_static.h"
|
#include "assets/textures/parameter_static/parameter_static.h"
|
||||||
#include "assets/textures/icon_item_static/icon_item_static.h"
|
#include "assets/textures/icon_item_static/icon_item_static.h"
|
||||||
|
|
||||||
|
#define SONG_MAX_LENGTH 8
|
||||||
|
|
||||||
#if !PLATFORM_GC
|
#if !PLATFORM_GC
|
||||||
#define KALEIDO_COLOR_COLLECT_UNK_R 80
|
#define QUEST_OCARINA_BTN_A_COLOR_R 80
|
||||||
#define KALEIDO_COLOR_COLLECT_UNK_G 150
|
#define QUEST_OCARINA_BTN_A_COLOR_G 150
|
||||||
#define KALEIDO_COLOR_COLLECT_UNK_B 255
|
#define QUEST_OCARINA_BTN_A_COLOR_B 255
|
||||||
#else
|
#else
|
||||||
#define KALEIDO_COLOR_COLLECT_UNK_R 80
|
#define QUEST_OCARINA_BTN_A_COLOR_R 80
|
||||||
#define KALEIDO_COLOR_COLLECT_UNK_G 255
|
#define QUEST_OCARINA_BTN_A_COLOR_G 255
|
||||||
#define KALEIDO_COLOR_COLLECT_UNK_B 150
|
#define QUEST_OCARINA_BTN_A_COLOR_B 150
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||||
|
@ -51,12 +53,10 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||||
static s16 sHpPrimTimer = 20;
|
static s16 sHpPrimTimer = 20;
|
||||||
static s16 sHpPrimState = 0;
|
static s16 sHpPrimState = 0;
|
||||||
|
|
||||||
static s16 D_8082A11C = 0;
|
static s16 sPlayedSongBtnsNum = 0;
|
||||||
static s16 D_8082A120 = 0;
|
static s16 sPlaybackSongStartDelayTimer = 0;
|
||||||
static u8 D_8082A124[] = {
|
static u8 sPlayedSongBtns[SONG_MAX_LENGTH + 1] = { 0 };
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
static void* sOcarinaBtnTextures[] = {
|
||||||
};
|
|
||||||
static void* D_8082A130[] = {
|
|
||||||
gOcarinaBtnIconATex, // OCARINA_BTN_A
|
gOcarinaBtnIconATex, // OCARINA_BTN_A
|
||||||
gOcarinaBtnIconCDownTex, // OCARINA_BTN_C_DOWN
|
gOcarinaBtnIconCDownTex, // OCARINA_BTN_C_DOWN
|
||||||
gOcarinaBtnIconCRightTex, // OCARINA_BTN_C_RIGHT
|
gOcarinaBtnIconCRightTex, // OCARINA_BTN_C_RIGHT
|
||||||
|
@ -66,9 +66,8 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||||
static u16 D_8082A144[] = {
|
static u16 D_8082A144[] = {
|
||||||
0xFFCC, 0xFFCC, 0xFFCC, 0xFFCC, 0xFFCC,
|
0xFFCC, 0xFFCC, 0xFFCC, 0xFFCC, 0xFFCC,
|
||||||
};
|
};
|
||||||
static s16 D_8082A150[] = {
|
static s16 sPlayedSongBtnsAlpha[SONG_MAX_LENGTH] = { 0 };
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
static s32 sUnused = 0;
|
||||||
};
|
|
||||||
|
|
||||||
static s16 sSongsPrimRed[] = {
|
static s16 sSongsPrimRed[] = {
|
||||||
150, 255, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
150, 255, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
||||||
|
@ -109,8 +108,8 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||||
|
|
||||||
OPEN_DISPS(gfxCtx, "../z_kaleido_collect.c", 248);
|
OPEN_DISPS(gfxCtx, "../z_kaleido_collect.c", 248);
|
||||||
|
|
||||||
if ((((u32)pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) || (pauseCtx->mainState == PAUSE_MAIN_STATE_5) ||
|
if ((((u32)pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) || (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT) ||
|
||||||
(pauseCtx->mainState == PAUSE_MAIN_STATE_8)) &&
|
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) &&
|
||||||
(pauseCtx->pageIndex == PAUSE_QUEST)) {
|
(pauseCtx->pageIndex == PAUSE_QUEST)) {
|
||||||
pauseCtx->cursorColorSet = 0;
|
pauseCtx->cursorColorSet = 0;
|
||||||
|
|
||||||
|
@ -208,44 +207,50 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||||
|
|
||||||
KaleidoScope_SetCursorPos(pauseCtx, sp216 * 4, pauseCtx->questVtx);
|
KaleidoScope_SetCursorPos(pauseCtx, sp216 * 4, pauseCtx->questVtx);
|
||||||
|
|
||||||
|
// Handle part of the ocarina songs playback
|
||||||
|
|
||||||
if ((pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) &&
|
if ((pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) &&
|
||||||
(pauseCtx->cursorSpecialPos == 0)) {
|
(pauseCtx->cursorSpecialPos == 0)) {
|
||||||
if ((sp216 >= QUEST_SONG_MINUET) && (sp216 < QUEST_KOKIRI_EMERALD)) {
|
if ((sp216 >= QUEST_SONG_MINUET) && (sp216 < QUEST_KOKIRI_EMERALD)) {
|
||||||
if (CHECK_QUEST_ITEM(pauseCtx->cursorPoint[PAUSE_QUEST])) {
|
if (CHECK_QUEST_ITEM(pauseCtx->cursorPoint[PAUSE_QUEST])) {
|
||||||
sp216 = pauseCtx->cursorSlot[PAUSE_QUEST];
|
sp216 = pauseCtx->cursorSlot[PAUSE_QUEST];
|
||||||
pauseCtx->ocarinaSongIdx = gOcarinaSongItemMap[sp216 - QUEST_SONG_MINUET];
|
pauseCtx->ocarinaSongIdx = gOcarinaSongItemMap[sp216 - QUEST_SONG_MINUET];
|
||||||
D_8082A120 = 10;
|
sPlaybackSongStartDelayTimer = 10;
|
||||||
|
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < SONG_MAX_LENGTH; i++) {
|
||||||
D_8082A124[i] = 0xFF;
|
sPlayedSongBtns[i] = OCARINA_BTN_INVALID;
|
||||||
D_8082A150[i] = 0;
|
sPlayedSongBtnsAlpha[i] = 0;
|
||||||
}
|
}
|
||||||
|
sPlayedSongBtnsNum = 0;
|
||||||
|
|
||||||
D_8082A11C = 0;
|
|
||||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||||
AudioOcarina_Start((1 << pauseCtx->ocarinaSongIdx) + 0x8000);
|
AudioOcarina_Start((1 << pauseCtx->ocarinaSongIdx) + 0x8000);
|
||||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||||
pauseCtx->ocarinaStaff->pos = 0;
|
pauseCtx->ocarinaStaff->pos = 0;
|
||||||
pauseCtx->ocarinaStaff->state = 0xFF;
|
pauseCtx->ocarinaStaff->state = 0xFF;
|
||||||
VREG(21) = -62;
|
|
||||||
VREG(22) = -56;
|
R_PAUSE_SONG_OCA_BTN_Y(OCARINA_BTN_A) = -62;
|
||||||
VREG(23) = -49;
|
R_PAUSE_SONG_OCA_BTN_Y(OCARINA_BTN_C_DOWN) = -56;
|
||||||
VREG(24) = -46;
|
R_PAUSE_SONG_OCA_BTN_Y(OCARINA_BTN_C_RIGHT) = -49;
|
||||||
VREG(25) = -41;
|
R_PAUSE_SONG_OCA_BTN_Y(OCARINA_BTN_C_LEFT) = -46;
|
||||||
pauseCtx->mainState = PAUSE_MAIN_STATE_8;
|
R_PAUSE_SONG_OCA_BTN_Y(OCARINA_BTN_C_UP) = -41;
|
||||||
|
|
||||||
|
pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG;
|
||||||
|
|
||||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (pauseCtx->mainState == PAUSE_MAIN_STATE_5) {
|
} else if (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT) {
|
||||||
|
// Abort having the player play the song if the stick is moved
|
||||||
if ((pauseCtx->stickAdjX != 0) || (pauseCtx->stickAdjY != 0)) {
|
if ((pauseCtx->stickAdjX != 0) || (pauseCtx->stickAdjY != 0)) {
|
||||||
pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE;
|
pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE;
|
||||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||||
}
|
}
|
||||||
} else if (pauseCtx->mainState == PAUSE_MAIN_STATE_8) {
|
} else if (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG) {
|
||||||
if (CHECK_BTN_ALL(input->press.button, BTN_A) && (sp216 >= QUEST_SONG_MINUET) &&
|
if (CHECK_BTN_ALL(input->press.button, BTN_A) && (sp216 >= QUEST_SONG_MINUET) &&
|
||||||
(sp216 < QUEST_KOKIRI_EMERALD)) {
|
(sp216 < QUEST_KOKIRI_EMERALD)) {
|
||||||
pauseCtx->mainState = PAUSE_MAIN_STATE_9;
|
pauseCtx->mainState = PAUSE_MAIN_STATE_SONG_PLAYBACK_START;
|
||||||
D_8082A120 = 10;
|
sPlaybackSongStartDelayTimer = 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (pauseCtx->cursorSpecialPos == PAUSE_CURSOR_PAGE_LEFT) {
|
} else if (pauseCtx->cursorSpecialPos == PAUSE_CURSOR_PAGE_LEFT) {
|
||||||
|
@ -292,30 +297,35 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else if (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PLAYBACK_START) {
|
||||||
if (pauseCtx->mainState == PAUSE_MAIN_STATE_9) {
|
// After a short delay, start playing the selected song back to the player
|
||||||
|
|
||||||
pauseCtx->cursorColorSet = 8;
|
pauseCtx->cursorColorSet = 8;
|
||||||
|
|
||||||
if (--D_8082A120 == 0) {
|
if (--sPlaybackSongStartDelayTimer == 0) {
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < SONG_MAX_LENGTH; i++) {
|
||||||
D_8082A124[i] = 0xFF;
|
sPlayedSongBtns[i] = OCARINA_BTN_INVALID;
|
||||||
D_8082A150[i] = 0;
|
sPlayedSongBtnsAlpha[i] = 0;
|
||||||
}
|
}
|
||||||
|
sPlayedSongBtnsNum = 0;
|
||||||
|
|
||||||
|
R_PAUSE_SONG_OCA_BTN_Y(OCARINA_BTN_A) = -62;
|
||||||
|
R_PAUSE_SONG_OCA_BTN_Y(OCARINA_BTN_C_DOWN) = -56;
|
||||||
|
R_PAUSE_SONG_OCA_BTN_Y(OCARINA_BTN_C_RIGHT) = -49;
|
||||||
|
R_PAUSE_SONG_OCA_BTN_Y(OCARINA_BTN_C_LEFT) = -46;
|
||||||
|
R_PAUSE_SONG_OCA_BTN_Y(OCARINA_BTN_C_UP) = -41;
|
||||||
|
|
||||||
D_8082A11C = 0;
|
|
||||||
VREG(21) = -62;
|
|
||||||
VREG(22) = -56;
|
|
||||||
VREG(23) = -49;
|
|
||||||
VREG(24) = -46;
|
|
||||||
VREG(25) = -41;
|
|
||||||
sp216 = pauseCtx->cursorSlot[PAUSE_QUEST];
|
sp216 = pauseCtx->cursorSlot[PAUSE_QUEST];
|
||||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||||
pauseCtx->ocarinaSongIdx = gOcarinaSongItemMap[sp216 - QUEST_SONG_MINUET];
|
pauseCtx->ocarinaSongIdx = gOcarinaSongItemMap[sp216 - QUEST_SONG_MINUET];
|
||||||
AudioOcarina_SetPlaybackSong(pauseCtx->ocarinaSongIdx + 1, 1);
|
AudioOcarina_SetPlaybackSong(pauseCtx->ocarinaSongIdx + 1, 1);
|
||||||
pauseCtx->mainState = PAUSE_MAIN_STATE_2;
|
|
||||||
|
pauseCtx->mainState = PAUSE_MAIN_STATE_SONG_PLAYBACK;
|
||||||
|
|
||||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||||
pauseCtx->ocarinaStaff->pos = 0;
|
pauseCtx->ocarinaStaff->pos = 0;
|
||||||
|
|
||||||
sp216 = pauseCtx->cursorSlot[PAUSE_QUEST];
|
sp216 = pauseCtx->cursorSlot[PAUSE_QUEST];
|
||||||
KaleidoScope_SetCursorPos(pauseCtx, sp216 * 4, pauseCtx->questVtx);
|
KaleidoScope_SetCursorPos(pauseCtx, sp216 * 4, pauseCtx->questVtx);
|
||||||
}
|
}
|
||||||
|
@ -323,7 +333,6 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||||
sp216 = pauseCtx->cursorSlot[PAUSE_QUEST];
|
sp216 = pauseCtx->cursorSlot[PAUSE_QUEST];
|
||||||
KaleidoScope_SetCursorPos(pauseCtx, sp216 * 4, pauseCtx->questVtx);
|
KaleidoScope_SetCursorPos(pauseCtx, sp216 * 4, pauseCtx->questVtx);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Draw medallions
|
// Draw medallions
|
||||||
// QUEST_MEDALLION_FOREST to QUEST_MEDALLION_LIGHT
|
// QUEST_MEDALLION_FOREST to QUEST_MEDALLION_LIGHT
|
||||||
|
@ -516,86 +525,93 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||||
gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
|
gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
|
||||||
|
|
||||||
if ((pauseCtx->cursorSpecialPos == 0) && (sp216 >= 6) && (sp216 < 0x12)) {
|
if ((pauseCtx->cursorSpecialPos == 0) && (sp216 >= 6) && (sp216 < 0x12)) {
|
||||||
if ((pauseCtx->mainState < PAUSE_MAIN_STATE_3) || (pauseCtx->mainState == PAUSE_MAIN_STATE_5) ||
|
if ((pauseCtx->mainState < PAUSE_MAIN_STATE_3) || (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT) ||
|
||||||
(pauseCtx->mainState == PAUSE_MAIN_STATE_8)) {
|
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) {
|
||||||
if (pauseCtx->cursorItem[pauseCtx->pageIndex] != PAUSE_ITEM_NONE) {
|
if (pauseCtx->cursorItem[pauseCtx->pageIndex] != PAUSE_ITEM_NONE) {
|
||||||
pauseCtx->cursorColorSet = 8;
|
pauseCtx->cursorColorSet = 8;
|
||||||
if ((pauseCtx->mainState >= PAUSE_MAIN_STATE_2) && (pauseCtx->mainState < PAUSE_MAIN_STATE_7)) {
|
if ((pauseCtx->mainState >= PAUSE_MAIN_STATE_SONG_PLAYBACK) &&
|
||||||
|
(pauseCtx->mainState < PAUSE_MAIN_STATE_7)) {
|
||||||
pauseCtx->cursorColorSet = 0;
|
pauseCtx->cursorColorSet = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pauseCtx->mainState == PAUSE_MAIN_STATE_2) {
|
if (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PLAYBACK) {
|
||||||
|
// Draw ocarina buttons as the song playback progresses
|
||||||
|
|
||||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||||
|
|
||||||
if (pauseCtx->ocarinaStaff->pos != 0) {
|
if (pauseCtx->ocarinaStaff->pos != 0) {
|
||||||
if (D_8082A11C == (pauseCtx->ocarinaStaff->pos - 1)) {
|
if (sPlayedSongBtnsNum == (pauseCtx->ocarinaStaff->pos - 1)) {
|
||||||
D_8082A11C++;
|
sPlayedSongBtnsNum++;
|
||||||
D_8082A124[pauseCtx->ocarinaStaff->pos - 1] = pauseCtx->ocarinaStaff->buttonIndex;
|
sPlayedSongBtns[pauseCtx->ocarinaStaff->pos - 1] = pauseCtx->ocarinaStaff->buttonIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 0, i = 0; j < 8; j++, i += 4, bufI += 4) {
|
for (j = 0, i = 0; j < SONG_MAX_LENGTH; j++, i += 4, bufI += 4) {
|
||||||
if (D_8082A124[j] == 0xFF) {
|
if (sPlayedSongBtns[j] == OCARINA_BTN_INVALID) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (D_8082A150[j] != 255) {
|
if (sPlayedSongBtnsAlpha[j] != 255) {
|
||||||
D_8082A150[j] += VREG(50);
|
sPlayedSongBtnsAlpha[j] += R_OCARINA_BUTTONS_APPEAR_ALPHA_STEP;
|
||||||
if (D_8082A150[j] >= 255) {
|
if (sPlayedSongBtnsAlpha[j] >= 255) {
|
||||||
D_8082A150[j] = 255;
|
sPlayedSongBtnsAlpha[j] = 255;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pauseCtx->questVtx[bufI + 0].v.ob[1] = pauseCtx->questVtx[bufI + 1].v.ob[1] =
|
pauseCtx->questVtx[bufI + 0].v.ob[1] = pauseCtx->questVtx[bufI + 1].v.ob[1] =
|
||||||
VREG(21 + D_8082A124[j]);
|
R_PAUSE_SONG_OCA_BTN_Y(sPlayedSongBtns[j]);
|
||||||
|
|
||||||
pauseCtx->questVtx[bufI + 2].v.ob[1] = pauseCtx->questVtx[bufI + 3].v.ob[1] =
|
pauseCtx->questVtx[bufI + 2].v.ob[1] = pauseCtx->questVtx[bufI + 3].v.ob[1] =
|
||||||
pauseCtx->questVtx[bufI + 0].v.ob[1] - 12;
|
pauseCtx->questVtx[bufI + 0].v.ob[1] - 12;
|
||||||
|
|
||||||
gDPPipeSync(POLY_OPA_DISP++);
|
gDPPipeSync(POLY_OPA_DISP++);
|
||||||
|
|
||||||
if (D_8082A124[j] == 0) {
|
if (sPlayedSongBtns[j] == OCARINA_BTN_A) {
|
||||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, KALEIDO_COLOR_COLLECT_UNK_R, KALEIDO_COLOR_COLLECT_UNK_G,
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, QUEST_OCARINA_BTN_A_COLOR_R, QUEST_OCARINA_BTN_A_COLOR_G,
|
||||||
KALEIDO_COLOR_COLLECT_UNK_B, D_8082A150[j]);
|
QUEST_OCARINA_BTN_A_COLOR_B, sPlayedSongBtnsAlpha[j]);
|
||||||
} else {
|
} else {
|
||||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 50, D_8082A150[j]);
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 50, sPlayedSongBtnsAlpha[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
gDPSetEnvColor(POLY_OPA_DISP++, 10, 10, 10, 0);
|
gDPSetEnvColor(POLY_OPA_DISP++, 10, 10, 10, 0);
|
||||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->questVtx[bufI], 4, 0);
|
gSPVertex(POLY_OPA_DISP++, &pauseCtx->questVtx[bufI], 4, 0);
|
||||||
|
|
||||||
gDPLoadTextureBlock(POLY_OPA_DISP++, D_8082A130[D_8082A124[j]], G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, 0,
|
gDPLoadTextureBlock(POLY_OPA_DISP++, sOcarinaBtnTextures[sPlayedSongBtns[j]], G_IM_FMT_IA,
|
||||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
|
G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP,
|
||||||
G_TX_NOLOD, G_TX_NOLOD);
|
G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||||
|
|
||||||
gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0);
|
gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (((pauseCtx->mainState >= PAUSE_MAIN_STATE_4) && (pauseCtx->mainState <= PAUSE_MAIN_STATE_6)) ||
|
} else if (((pauseCtx->mainState >= PAUSE_MAIN_STATE_SONG_PROMPT_INIT) &&
|
||||||
(pauseCtx->mainState == PAUSE_MAIN_STATE_8)) {
|
(pauseCtx->mainState <= PAUSE_MAIN_STATE_SONG_PROMPT_DONE)) ||
|
||||||
|
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) {
|
||||||
|
// Draw the buttons for playing a song
|
||||||
|
|
||||||
// temps reused, fake?
|
// temps reused, fake?
|
||||||
stepGreen = pauseCtx->ocarinaSongIdx;
|
stepGreen = pauseCtx->ocarinaSongIdx;
|
||||||
stepRed = gOcarinaSongButtons[stepGreen].numButtons;
|
stepRed = gOcarinaSongButtons[stepGreen].numButtons;
|
||||||
|
|
||||||
for (j = bufI, i = 0; i < stepRed; i++, bufI += 4) {
|
for (j = bufI, i = 0; i < stepRed; i++, bufI += 4) {
|
||||||
pauseCtx->questVtx[bufI + 0].v.ob[1] = pauseCtx->questVtx[bufI + 1].v.ob[1] =
|
pauseCtx->questVtx[bufI + 0].v.ob[1] = pauseCtx->questVtx[bufI + 1].v.ob[1] =
|
||||||
VREG(21 + gOcarinaSongButtons[stepGreen].buttonsIndex[i]);
|
R_PAUSE_SONG_OCA_BTN_Y(gOcarinaSongButtons[stepGreen].buttonsIndex[i]);
|
||||||
|
|
||||||
pauseCtx->questVtx[bufI + 2].v.ob[1] = pauseCtx->questVtx[bufI + 3].v.ob[1] =
|
pauseCtx->questVtx[bufI + 2].v.ob[1] = pauseCtx->questVtx[bufI + 3].v.ob[1] =
|
||||||
pauseCtx->questVtx[bufI + 0].v.ob[1] - 12;
|
pauseCtx->questVtx[bufI + 0].v.ob[1] - 12;
|
||||||
|
|
||||||
gDPPipeSync(POLY_OPA_DISP++);
|
gDPPipeSync(POLY_OPA_DISP++);
|
||||||
|
|
||||||
if (pauseCtx->mainState == PAUSE_MAIN_STATE_8) {
|
if (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG) {
|
||||||
if (gOcarinaSongButtons[stepGreen].buttonsIndex[i] == OCARINA_BTN_A) {
|
if (gOcarinaSongButtons[stepGreen].buttonsIndex[i] == OCARINA_BTN_A) {
|
||||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, KALEIDO_COLOR_COLLECT_UNK_R, KALEIDO_COLOR_COLLECT_UNK_G,
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, QUEST_OCARINA_BTN_A_COLOR_R, QUEST_OCARINA_BTN_A_COLOR_G,
|
||||||
KALEIDO_COLOR_COLLECT_UNK_B, 200);
|
QUEST_OCARINA_BTN_A_COLOR_B, 200);
|
||||||
} else {
|
} else {
|
||||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 50, 200);
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 50, 200);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// Gray out buttons during the player playing the song
|
||||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 150, 150, 150, 150);
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 150, 150, 150, 150);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -603,79 +619,83 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||||
|
|
||||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->questVtx[bufI], 4, 0);
|
gSPVertex(POLY_OPA_DISP++, &pauseCtx->questVtx[bufI], 4, 0);
|
||||||
|
|
||||||
gDPLoadTextureBlock(POLY_OPA_DISP++, D_8082A130[gOcarinaSongButtons[stepGreen].buttonsIndex[i]],
|
gDPLoadTextureBlock(POLY_OPA_DISP++,
|
||||||
G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
sOcarinaBtnTextures[gOcarinaSongButtons[stepGreen].buttonsIndex[i]], G_IM_FMT_IA,
|
||||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP,
|
||||||
|
G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||||
|
|
||||||
gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0);
|
gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pauseCtx->mainState != PAUSE_MAIN_STATE_8) {
|
if (pauseCtx->mainState != PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG) {
|
||||||
|
// Draw the buttons colored as the player plays the song
|
||||||
|
|
||||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
pauseCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
||||||
|
|
||||||
if (pauseCtx->ocarinaStaff->pos != 0) {
|
if (pauseCtx->ocarinaStaff->pos != 0) {
|
||||||
if (D_8082A11C == (pauseCtx->ocarinaStaff->pos - 1)) {
|
if (sPlayedSongBtnsNum == (pauseCtx->ocarinaStaff->pos - 1)) {
|
||||||
if ((pauseCtx->ocarinaStaff->buttonIndex >= OCARINA_BTN_A) &&
|
if ((pauseCtx->ocarinaStaff->buttonIndex >= OCARINA_BTN_A) &&
|
||||||
(pauseCtx->ocarinaStaff->buttonIndex <= OCARINA_BTN_C_UP)) {
|
(pauseCtx->ocarinaStaff->buttonIndex <= OCARINA_BTN_C_UP)) {
|
||||||
D_8082A124[pauseCtx->ocarinaStaff->pos - 1] = pauseCtx->ocarinaStaff->buttonIndex;
|
sPlayedSongBtns[pauseCtx->ocarinaStaff->pos - 1] = pauseCtx->ocarinaStaff->buttonIndex;
|
||||||
D_8082A124[pauseCtx->ocarinaStaff->pos] = 0xFF;
|
sPlayedSongBtns[pauseCtx->ocarinaStaff->pos] = OCARINA_BTN_INVALID;
|
||||||
D_8082A11C++;
|
sPlayedSongBtnsNum++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bufI = j + 32;
|
bufI = j + 32;
|
||||||
i = 0;
|
|
||||||
for (; i < 8; i++, bufI += 4) {
|
for (i = 0; i < SONG_MAX_LENGTH; i++, bufI += 4) {
|
||||||
if (D_8082A124[i] == 0xFF) {
|
if (sPlayedSongBtns[i] == OCARINA_BTN_INVALID) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (D_8082A150[i] != 255) {
|
if (sPlayedSongBtnsAlpha[i] != 255) {
|
||||||
D_8082A150[i] += VREG(50);
|
sPlayedSongBtnsAlpha[i] += R_OCARINA_BUTTONS_APPEAR_ALPHA_STEP;
|
||||||
if (D_8082A150[i] >= 255) {
|
if (sPlayedSongBtnsAlpha[i] >= 255) {
|
||||||
D_8082A150[i] = 255;
|
sPlayedSongBtnsAlpha[i] = 255;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pauseCtx->questVtx[bufI + 0].v.ob[1] = pauseCtx->questVtx[bufI + 1].v.ob[1] =
|
pauseCtx->questVtx[bufI + 0].v.ob[1] = pauseCtx->questVtx[bufI + 1].v.ob[1] =
|
||||||
VREG(21 + D_8082A124[i]);
|
R_PAUSE_SONG_OCA_BTN_Y(sPlayedSongBtns[i]);
|
||||||
|
|
||||||
pauseCtx->questVtx[bufI + 2].v.ob[1] = pauseCtx->questVtx[bufI + 3].v.ob[1] =
|
pauseCtx->questVtx[bufI + 2].v.ob[1] = pauseCtx->questVtx[bufI + 3].v.ob[1] =
|
||||||
pauseCtx->questVtx[bufI + 0].v.ob[1] - 12;
|
pauseCtx->questVtx[bufI + 0].v.ob[1] - 12;
|
||||||
|
|
||||||
gDPPipeSync(POLY_OPA_DISP++);
|
gDPPipeSync(POLY_OPA_DISP++);
|
||||||
|
|
||||||
if (D_8082A124[i] == 0) {
|
if (sPlayedSongBtns[i] == OCARINA_BTN_A) {
|
||||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, KALEIDO_COLOR_COLLECT_UNK_R, KALEIDO_COLOR_COLLECT_UNK_G,
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, QUEST_OCARINA_BTN_A_COLOR_R, QUEST_OCARINA_BTN_A_COLOR_G,
|
||||||
KALEIDO_COLOR_COLLECT_UNK_B, D_8082A150[i]);
|
QUEST_OCARINA_BTN_A_COLOR_B, sPlayedSongBtnsAlpha[i]);
|
||||||
} else {
|
} else {
|
||||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 50, D_8082A150[i]);
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 50, sPlayedSongBtnsAlpha[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
gDPSetEnvColor(POLY_OPA_DISP++, 10, 10, 10, 0);
|
gDPSetEnvColor(POLY_OPA_DISP++, 10, 10, 10, 0);
|
||||||
|
|
||||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->questVtx[bufI], 4, 0);
|
gSPVertex(POLY_OPA_DISP++, &pauseCtx->questVtx[bufI], 4, 0);
|
||||||
|
|
||||||
gDPLoadTextureBlock(POLY_OPA_DISP++, D_8082A130[D_8082A124[i]], G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, 0,
|
gDPLoadTextureBlock(POLY_OPA_DISP++, sOcarinaBtnTextures[sPlayedSongBtns[i]], G_IM_FMT_IA,
|
||||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
|
G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP,
|
||||||
G_TX_NOLOD, G_TX_NOLOD);
|
G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||||
|
|
||||||
gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0);
|
gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pauseCtx->mainState == PAUSE_MAIN_STATE_4) {
|
if (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT_INIT) {
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < SONG_MAX_LENGTH; i++) {
|
||||||
D_8082A124[i] = 0xFF;
|
sPlayedSongBtns[i] = OCARINA_BTN_INVALID;
|
||||||
D_8082A150[i] = 0;
|
sPlayedSongBtnsAlpha[i] = 0;
|
||||||
}
|
}
|
||||||
|
sPlayedSongBtnsNum = 0;
|
||||||
|
|
||||||
D_8082A11C = 0;
|
|
||||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||||
AudioOcarina_Start((1 << pauseCtx->ocarinaSongIdx) + 0x8000);
|
AudioOcarina_Start((1 << pauseCtx->ocarinaSongIdx) + 0x8000);
|
||||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||||
pauseCtx->ocarinaStaff->pos = 0;
|
pauseCtx->ocarinaStaff->pos = 0;
|
||||||
pauseCtx->ocarinaStaff->state = 0xFE;
|
pauseCtx->ocarinaStaff->state = 0xFE;
|
||||||
pauseCtx->mainState = PAUSE_MAIN_STATE_5;
|
|
||||||
|
pauseCtx->mainState = PAUSE_MAIN_STATE_SONG_PROMPT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1117,11 +1117,12 @@ void KaleidoScope_DrawCursor(PlayState* play, u16 pageIndex) {
|
||||||
|
|
||||||
OPEN_DISPS(play->state.gfxCtx, "../z_kaleido_scope_PAL.c", 955);
|
OPEN_DISPS(play->state.gfxCtx, "../z_kaleido_scope_PAL.c", 955);
|
||||||
|
|
||||||
if (((((u32)pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) || (pauseCtx->mainState == PAUSE_MAIN_STATE_8)) &&
|
if (((((u32)pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) ||
|
||||||
|
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) &&
|
||||||
(pauseCtx->state == PAUSE_STATE_MAIN)) ||
|
(pauseCtx->state == PAUSE_STATE_MAIN)) ||
|
||||||
((pauseCtx->pageIndex == PAUSE_QUEST) &&
|
((pauseCtx->pageIndex == PAUSE_QUEST) &&
|
||||||
((pauseCtx->mainState < PAUSE_MAIN_STATE_3) || (pauseCtx->mainState == PAUSE_MAIN_STATE_5) ||
|
((pauseCtx->mainState < PAUSE_MAIN_STATE_3) || (pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT) ||
|
||||||
(pauseCtx->mainState == PAUSE_MAIN_STATE_8)))) {
|
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)))) {
|
||||||
s16 i;
|
s16 i;
|
||||||
s16 j;
|
s16 j;
|
||||||
|
|
||||||
|
@ -1840,13 +1841,16 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) {
|
||||||
|
|
||||||
if ((pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->namedItem != PAUSE_ITEM_NONE) &&
|
if ((pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->namedItem != PAUSE_ITEM_NONE) &&
|
||||||
(pauseCtx->nameDisplayTimer < WREG(89)) &&
|
(pauseCtx->nameDisplayTimer < WREG(89)) &&
|
||||||
(((u32)pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) || (pauseCtx->mainState == PAUSE_MAIN_STATE_2) ||
|
(((u32)pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) ||
|
||||||
((pauseCtx->mainState >= PAUSE_MAIN_STATE_4) && (pauseCtx->mainState <= PAUSE_MAIN_STATE_7)) ||
|
(pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PLAYBACK) ||
|
||||||
(pauseCtx->mainState == PAUSE_MAIN_STATE_8)) &&
|
((pauseCtx->mainState >= PAUSE_MAIN_STATE_SONG_PROMPT_INIT) && (pauseCtx->mainState <= PAUSE_MAIN_STATE_7)) ||
|
||||||
|
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) &&
|
||||||
(pauseCtx->cursorSpecialPos == 0)) {
|
(pauseCtx->cursorSpecialPos == 0)) {
|
||||||
if (((u32)pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) || (pauseCtx->mainState == PAUSE_MAIN_STATE_2) ||
|
if (((u32)pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) ||
|
||||||
((pauseCtx->mainState >= PAUSE_MAIN_STATE_4) && (pauseCtx->mainState <= PAUSE_MAIN_STATE_7)) ||
|
(pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PLAYBACK) ||
|
||||||
(pauseCtx->mainState == PAUSE_MAIN_STATE_8)) {
|
((pauseCtx->mainState >= PAUSE_MAIN_STATE_SONG_PROMPT_INIT) &&
|
||||||
|
(pauseCtx->mainState <= PAUSE_MAIN_STATE_7)) ||
|
||||||
|
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) {
|
||||||
pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = -63;
|
pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = -63;
|
||||||
|
|
||||||
pauseCtx->infoPanelVtx[17].v.ob[0] = pauseCtx->infoPanelVtx[19].v.ob[0] =
|
pauseCtx->infoPanelVtx[17].v.ob[0] = pauseCtx->infoPanelVtx[19].v.ob[0] =
|
||||||
|
@ -1913,7 +1917,7 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ((pauseCtx->mainState < PAUSE_MAIN_STATE_3) || (pauseCtx->mainState == PAUSE_MAIN_STATE_7) ||
|
} else if ((pauseCtx->mainState < PAUSE_MAIN_STATE_3) || (pauseCtx->mainState == PAUSE_MAIN_STATE_7) ||
|
||||||
(pauseCtx->mainState == PAUSE_MAIN_STATE_8)) {
|
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) {
|
||||||
pauseCtx->infoPanelVtx[20].v.ob[1] = pauseCtx->infoPanelVtx[21].v.ob[1] = temp;
|
pauseCtx->infoPanelVtx[20].v.ob[1] = pauseCtx->infoPanelVtx[21].v.ob[1] = temp;
|
||||||
|
|
||||||
pauseCtx->infoPanelVtx[22].v.ob[1] = pauseCtx->infoPanelVtx[23].v.ob[1] =
|
pauseCtx->infoPanelVtx[22].v.ob[1] = pauseCtx->infoPanelVtx[23].v.ob[1] =
|
||||||
|
@ -2116,7 +2120,8 @@ void KaleidoScope_UpdateNamePanel(PlayState* play) {
|
||||||
}
|
}
|
||||||
} else if (pauseCtx->nameColorSet == 0) {
|
} else if (pauseCtx->nameColorSet == 0) {
|
||||||
if (((pauseCtx->pageIndex == PAUSE_QUEST) && (pauseCtx->cursorSlot[PAUSE_QUEST] >= 6) &&
|
if (((pauseCtx->pageIndex == PAUSE_QUEST) && (pauseCtx->cursorSlot[PAUSE_QUEST] >= 6) &&
|
||||||
(pauseCtx->cursorSlot[PAUSE_QUEST] <= 0x11) && (pauseCtx->mainState == PAUSE_MAIN_STATE_8)) ||
|
(pauseCtx->cursorSlot[PAUSE_QUEST] <= 0x11) &&
|
||||||
|
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) ||
|
||||||
(pauseCtx->pageIndex == PAUSE_ITEM) ||
|
(pauseCtx->pageIndex == PAUSE_ITEM) ||
|
||||||
((pauseCtx->pageIndex == PAUSE_EQUIP) && (pauseCtx->cursorX[PAUSE_EQUIP] != 0))) {
|
((pauseCtx->pageIndex == PAUSE_EQUIP) && (pauseCtx->cursorX[PAUSE_EQUIP] != 0))) {
|
||||||
if (pauseCtx->namedItem != ITEM_SOLD_OUT) {
|
if (pauseCtx->namedItem != ITEM_SOLD_OUT) {
|
||||||
|
@ -3381,8 +3386,8 @@ void KaleidoScope_UpdateDungeonMap(PlayState* play) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void KaleidoScope_Update(PlayState* play) {
|
void KaleidoScope_Update(PlayState* play) {
|
||||||
static s16 D_8082B258 = PAUSE_MAIN_STATE_IDLE;
|
static s16 sMainStateAfterSongPlayerPlayingDone = PAUSE_MAIN_STATE_IDLE;
|
||||||
static s16 D_8082B25C = 10;
|
static s16 sDelayTimer = 10;
|
||||||
static s16 D_8082B260 = 0;
|
static s16 D_8082B260 = 0;
|
||||||
PauseContext* pauseCtx = &play->pauseCtx;
|
PauseContext* pauseCtx = &play->pauseCtx;
|
||||||
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
||||||
|
@ -3403,14 +3408,15 @@ void KaleidoScope_Update(PlayState* play) {
|
||||||
(((pauseCtx->state >= PAUSE_STATE_OPENING_1) && (pauseCtx->state <= PAUSE_STATE_SAVE_PROMPT)) ||
|
(((pauseCtx->state >= PAUSE_STATE_OPENING_1) && (pauseCtx->state <= PAUSE_STATE_SAVE_PROMPT)) ||
|
||||||
((pauseCtx->state >= PAUSE_STATE_10) && (pauseCtx->state <= PAUSE_STATE_CLOSING)))) {
|
((pauseCtx->state >= PAUSE_STATE_10) && (pauseCtx->state <= PAUSE_STATE_CLOSING)))) {
|
||||||
|
|
||||||
if ((((u32)pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) || (pauseCtx->mainState == PAUSE_MAIN_STATE_8)) &&
|
if ((((u32)pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) ||
|
||||||
|
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) &&
|
||||||
(pauseCtx->state == PAUSE_STATE_MAIN)) {
|
(pauseCtx->state == PAUSE_STATE_MAIN)) {
|
||||||
pauseCtx->stickAdjX = input->rel.stick_x;
|
pauseCtx->stickAdjX = input->rel.stick_x;
|
||||||
pauseCtx->stickAdjY = input->rel.stick_y;
|
pauseCtx->stickAdjY = input->rel.stick_y;
|
||||||
KaleidoScope_UpdateCursorVtx(play);
|
KaleidoScope_UpdateCursorVtx(play);
|
||||||
KaleidoScope_HandlePageToggles(pauseCtx, input);
|
KaleidoScope_HandlePageToggles(pauseCtx, input);
|
||||||
} else if ((pauseCtx->pageIndex == PAUSE_QUEST) &&
|
} else if ((pauseCtx->pageIndex == PAUSE_QUEST) && ((pauseCtx->mainState < PAUSE_MAIN_STATE_3) ||
|
||||||
((pauseCtx->mainState < PAUSE_MAIN_STATE_3) || (pauseCtx->mainState == PAUSE_MAIN_STATE_5))) {
|
(pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT))) {
|
||||||
KaleidoScope_UpdateCursorVtx(play);
|
KaleidoScope_UpdateCursorVtx(play);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3853,10 +3859,11 @@ void KaleidoScope_Update(PlayState* play) {
|
||||||
KaleidoScope_UpdatePageSwitch(play, play->state.input);
|
KaleidoScope_UpdatePageSwitch(play, play->state.input);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PAUSE_MAIN_STATE_2:
|
case PAUSE_MAIN_STATE_SONG_PLAYBACK:
|
||||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||||
if (pauseCtx->ocarinaStaff->state == 0) {
|
if (pauseCtx->ocarinaStaff->state == 0) {
|
||||||
pauseCtx->mainState = PAUSE_MAIN_STATE_4;
|
// Song playback is finished
|
||||||
|
pauseCtx->mainState = PAUSE_MAIN_STATE_SONG_PROMPT_INIT;
|
||||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -3865,10 +3872,10 @@ void KaleidoScope_Update(PlayState* play) {
|
||||||
KaleidoScope_UpdateItemEquip(play);
|
KaleidoScope_UpdateItemEquip(play);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PAUSE_MAIN_STATE_4:
|
case PAUSE_MAIN_STATE_SONG_PROMPT_INIT:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PAUSE_MAIN_STATE_5:
|
case PAUSE_MAIN_STATE_SONG_PROMPT:
|
||||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
pauseCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
||||||
|
|
||||||
if (CHECK_BTN_ALL(input->press.button, BTN_START)) {
|
if (CHECK_BTN_ALL(input->press.button, BTN_START)) {
|
||||||
|
@ -3894,24 +3901,28 @@ void KaleidoScope_Update(PlayState* play) {
|
||||||
pauseCtx->savePromptState = PAUSE_SAVE_PROMPT_STATE_APPEARING;
|
pauseCtx->savePromptState = PAUSE_SAVE_PROMPT_STATE_APPEARING;
|
||||||
pauseCtx->state = PAUSE_STATE_SAVE_PROMPT;
|
pauseCtx->state = PAUSE_STATE_SAVE_PROMPT;
|
||||||
} else if (pauseCtx->ocarinaStaff->state == pauseCtx->ocarinaSongIdx) {
|
} else if (pauseCtx->ocarinaStaff->state == pauseCtx->ocarinaSongIdx) {
|
||||||
|
// The player successfully played the song
|
||||||
Audio_PlaySfxGeneral(NA_SE_SY_TRE_BOX_APPEAR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
Audio_PlaySfxGeneral(NA_SE_SY_TRE_BOX_APPEAR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||||
D_8082B258 = PAUSE_MAIN_STATE_IDLE;
|
|
||||||
D_8082B25C = 30;
|
sMainStateAfterSongPlayerPlayingDone = PAUSE_MAIN_STATE_IDLE;
|
||||||
pauseCtx->mainState = PAUSE_MAIN_STATE_6;
|
sDelayTimer = 30;
|
||||||
|
pauseCtx->mainState = PAUSE_MAIN_STATE_SONG_PROMPT_DONE;
|
||||||
} else if (pauseCtx->ocarinaStaff->state == 0xFF) {
|
} else if (pauseCtx->ocarinaStaff->state == 0xFF) {
|
||||||
|
// The player failed to play the song
|
||||||
Audio_PlaySfxGeneral(NA_SE_SY_OCARINA_ERROR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
Audio_PlaySfxGeneral(NA_SE_SY_OCARINA_ERROR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||||
D_8082B258 = PAUSE_MAIN_STATE_4;
|
|
||||||
D_8082B25C = 20;
|
sMainStateAfterSongPlayerPlayingDone = PAUSE_MAIN_STATE_SONG_PROMPT_INIT;
|
||||||
pauseCtx->mainState = PAUSE_MAIN_STATE_6;
|
sDelayTimer = 20;
|
||||||
|
pauseCtx->mainState = PAUSE_MAIN_STATE_SONG_PROMPT_DONE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PAUSE_MAIN_STATE_6:
|
case PAUSE_MAIN_STATE_SONG_PROMPT_DONE:
|
||||||
D_8082B25C--;
|
sDelayTimer--;
|
||||||
if (D_8082B25C == 0) {
|
if (sDelayTimer == 0) {
|
||||||
pauseCtx->mainState = D_8082B258;
|
pauseCtx->mainState = sMainStateAfterSongPlayerPlayingDone;
|
||||||
if (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) {
|
if (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) {
|
||||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||||
}
|
}
|
||||||
|
@ -3921,7 +3932,7 @@ void KaleidoScope_Update(PlayState* play) {
|
||||||
case PAUSE_MAIN_STATE_7:
|
case PAUSE_MAIN_STATE_7:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PAUSE_MAIN_STATE_8:
|
case PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG:
|
||||||
if (CHECK_BTN_ALL(input->press.button, BTN_START)) {
|
if (CHECK_BTN_ALL(input->press.button, BTN_START)) {
|
||||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||||
Interface_SetDoAction(play, DO_ACTION_NONE);
|
Interface_SetDoAction(play, DO_ACTION_NONE);
|
||||||
|
@ -3946,7 +3957,7 @@ void KaleidoScope_Update(PlayState* play) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PAUSE_MAIN_STATE_9:
|
case PAUSE_MAIN_STATE_SONG_PLAYBACK_START:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -3991,9 +4002,9 @@ void KaleidoScope_Update(PlayState* play) {
|
||||||
Sram_WriteSave(&play->sramCtx);
|
Sram_WriteSave(&play->sramCtx);
|
||||||
pauseCtx->savePromptState = PAUSE_SAVE_PROMPT_STATE_SAVED;
|
pauseCtx->savePromptState = PAUSE_SAVE_PROMPT_STATE_SAVED;
|
||||||
#if PLATFORM_N64
|
#if PLATFORM_N64
|
||||||
D_8082B25C = 90;
|
sDelayTimer = 90;
|
||||||
#else
|
#else
|
||||||
D_8082B25C = 3;
|
sDelayTimer = 3;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_START) ||
|
} else if (CHECK_BTN_ALL(input->press.button, BTN_START) ||
|
||||||
|
@ -4015,7 +4026,7 @@ void KaleidoScope_Update(PlayState* play) {
|
||||||
|
|
||||||
case PAUSE_SAVE_PROMPT_STATE_SAVED:
|
case PAUSE_SAVE_PROMPT_STATE_SAVED:
|
||||||
if (CHECK_BTN_ALL(input->press.button, BTN_B) || CHECK_BTN_ALL(input->press.button, BTN_A) ||
|
if (CHECK_BTN_ALL(input->press.button, BTN_B) || CHECK_BTN_ALL(input->press.button, BTN_A) ||
|
||||||
CHECK_BTN_ALL(input->press.button, BTN_START) || (--D_8082B25C == 0)) {
|
CHECK_BTN_ALL(input->press.button, BTN_START) || (--sDelayTimer == 0)) {
|
||||||
Interface_SetDoAction(play, DO_ACTION_NONE);
|
Interface_SetDoAction(play, DO_ACTION_NONE);
|
||||||
gSaveContext.buttonStatus[0] = gSaveContext.buttonStatus[1] = gSaveContext.buttonStatus[2] =
|
gSaveContext.buttonStatus[0] = gSaveContext.buttonStatus[1] = gSaveContext.buttonStatus[2] =
|
||||||
gSaveContext.buttonStatus[3] = BTN_ENABLED;
|
gSaveContext.buttonStatus[3] = BTN_ENABLED;
|
||||||
|
@ -4254,20 +4265,20 @@ void KaleidoScope_Update(PlayState* play) {
|
||||||
Sram_WriteSave(&play->sramCtx);
|
Sram_WriteSave(&play->sramCtx);
|
||||||
pauseCtx->state = PAUSE_STATE_15;
|
pauseCtx->state = PAUSE_STATE_15;
|
||||||
#if PLATFORM_N64
|
#if PLATFORM_N64
|
||||||
D_8082B25C = 90;
|
sDelayTimer = 90;
|
||||||
#else
|
#else
|
||||||
D_8082B25C = 3;
|
sDelayTimer = 3;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PAUSE_STATE_15:
|
case PAUSE_STATE_15:
|
||||||
D_8082B25C--;
|
sDelayTimer--;
|
||||||
if (D_8082B25C == 0) {
|
if (sDelayTimer == 0) {
|
||||||
pauseCtx->state = PAUSE_STATE_16;
|
pauseCtx->state = PAUSE_STATE_16;
|
||||||
gameOverCtx->state++;
|
gameOverCtx->state++;
|
||||||
} else if ((D_8082B25C <= 80) &&
|
} else if ((sDelayTimer <= 80) &&
|
||||||
(CHECK_BTN_ALL(input->press.button, BTN_A) || CHECK_BTN_ALL(input->press.button, BTN_START))) {
|
(CHECK_BTN_ALL(input->press.button, BTN_A) || CHECK_BTN_ALL(input->press.button, BTN_START))) {
|
||||||
pauseCtx->state = PAUSE_STATE_16;
|
pauseCtx->state = PAUSE_STATE_16;
|
||||||
gameOverCtx->state++;
|
gameOverCtx->state++;
|
||||||
|
|
Loading…
Add table
Reference in a new issue