1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-04 15:04:31 +00:00
This commit is contained in:
Dragorn421 2022-08-29 16:44:25 +02:00
parent 1c6b7b082f
commit 739397fd39
No known key found for this signature in database
GPG key ID: 32B53D2D16FC4118
3 changed files with 72 additions and 57 deletions

View file

@ -103,6 +103,8 @@
#define R_TRANS_DBG_TYPE CREG(12) #define R_TRANS_DBG_TYPE CREG(12)
#define R_ENV_WIND_DIR(i) CREG(16 + (i)) #define R_ENV_WIND_DIR(i) CREG(16 + (i))
#define R_ENV_WIND_SPEED CREG(19) #define R_ENV_WIND_SPEED CREG(19)
#define R_PAUSE_STICK_REPEAT_DELAY_FIRST XREG(6)
#define R_PAUSE_STICK_REPEAT_DELAY XREG(8)
#define R_A_BTN_Y XREG(16) #define R_A_BTN_Y XREG(16)
#define R_A_BTN_X XREG(17) #define R_A_BTN_X XREG(17)
#define R_A_ICON_Y XREG(19) #define R_A_ICON_Y XREG(19)

View file

@ -345,9 +345,9 @@ void func_80111070(void) {
XREG(3) = -4; XREG(3) = -4;
XREG(4) = 3; XREG(4) = 3;
XREG(5) = 0; XREG(5) = 0;
XREG(6) = 2; // pause menu: stick input repeat cooldown (from first repeat onwards) R_PAUSE_STICK_REPEAT_DELAY_FIRST = 2;
XREG(7) = 30; XREG(7) = 30;
XREG(8) = 10; // pause menu: stick input repeat cooldown (from initial input to first repeat) R_PAUSE_STICK_REPEAT_DELAY = 10;
XREG(9) = 0; XREG(9) = 0;
XREG(10) = -9550; XREG(10) = -9550;
XREG(11) = 9950; XREG(11) = 9950;

View file

@ -550,10 +550,11 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) {
}; };
static s16 sCursorColorBlinkTimer_D_8082AD3C = 20; static s16 sCursorColorBlinkTimer_D_8082AD3C = 20;
static s16 sCursorColorBlinkOffset_D_8082AD40 = 0; static s16 sCursorColorBlinkOffset_D_8082AD40 = 0;
static s16 sStickXcooldownTimer_D_8082AD44 = 0;
static s16 sStickYcooldownTimer_D_8082AD48 = 0; static s16 sStickXRepeatTimer = 0;
static s16 sStickXcooldownDirection_D_8082AD4C = 0; static s16 sStickYRepeatTimer = 0;
static s16 sStickYcooldownDirection_D_8082AD50 = 0; static s16 sStickXRepeatState = 0;
static s16 sStickYRepeatState = 0;
PauseContext* pauseCtx = &play->pauseCtx; PauseContext* pauseCtx = &play->pauseCtx;
s16 stepR; s16 stepR;
@ -613,55 +614,55 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) {
} }
if (pauseCtx->stickRelX < -30) { if (pauseCtx->stickRelX < -30) {
if (sStickXcooldownDirection_D_8082AD4C == -1) { if (sStickXRepeatState == -1) {
if (--sStickXcooldownTimer_D_8082AD44 < 0) { if (--sStickXRepeatTimer < 0) {
sStickXcooldownTimer_D_8082AD44 = XREG(6); sStickXRepeatTimer = R_PAUSE_STICK_REPEAT_DELAY_FIRST;
} else { } else {
pauseCtx->stickRelX = 0; pauseCtx->stickRelX = 0;
} }
} else { } else {
sStickXcooldownTimer_D_8082AD44 = XREG(8); sStickXRepeatTimer = R_PAUSE_STICK_REPEAT_DELAY;
sStickXcooldownDirection_D_8082AD4C = -1; sStickXRepeatState = -1;
} }
} else if (pauseCtx->stickRelX > 30) { } else if (pauseCtx->stickRelX > 30) {
if (sStickXcooldownDirection_D_8082AD4C == 1) { if (sStickXRepeatState == 1) {
if (--sStickXcooldownTimer_D_8082AD44 < 0) { if (--sStickXRepeatTimer < 0) {
sStickXcooldownTimer_D_8082AD44 = XREG(6); sStickXRepeatTimer = R_PAUSE_STICK_REPEAT_DELAY_FIRST;
} else { } else {
pauseCtx->stickRelX = 0; pauseCtx->stickRelX = 0;
} }
} else { } else {
sStickXcooldownTimer_D_8082AD44 = XREG(8); sStickXRepeatTimer = R_PAUSE_STICK_REPEAT_DELAY;
sStickXcooldownDirection_D_8082AD4C = 1; sStickXRepeatState = 1;
} }
} else { } else {
sStickXcooldownDirection_D_8082AD4C = 0; sStickXRepeatState = 0;
} }
if (pauseCtx->stickRelY < -30) { if (pauseCtx->stickRelY < -30) {
if (sStickYcooldownDirection_D_8082AD50 == -1) { if (sStickYRepeatState == -1) {
if (--sStickYcooldownTimer_D_8082AD48 < 0) { if (--sStickYRepeatTimer < 0) {
sStickYcooldownTimer_D_8082AD48 = XREG(6); sStickYRepeatTimer = R_PAUSE_STICK_REPEAT_DELAY_FIRST;
} else { } else {
pauseCtx->stickRelY = 0; pauseCtx->stickRelY = 0;
} }
} else { } else {
sStickYcooldownTimer_D_8082AD48 = XREG(8); sStickYRepeatTimer = R_PAUSE_STICK_REPEAT_DELAY;
sStickYcooldownDirection_D_8082AD50 = -1; sStickYRepeatState = -1;
} }
} else if (pauseCtx->stickRelY > 30) { } else if (pauseCtx->stickRelY > 30) {
if (sStickYcooldownDirection_D_8082AD50 == 1) { if (sStickYRepeatState == 1) {
if (--sStickYcooldownTimer_D_8082AD48 < 0) { if (--sStickYRepeatTimer < 0) {
sStickYcooldownTimer_D_8082AD48 = XREG(6); sStickYRepeatTimer = R_PAUSE_STICK_REPEAT_DELAY_FIRST;
} else { } else {
pauseCtx->stickRelY = 0; pauseCtx->stickRelY = 0;
} }
} else { } else {
sStickYcooldownTimer_D_8082AD48 = XREG(8); sStickYRepeatTimer = R_PAUSE_STICK_REPEAT_DELAY;
sStickYcooldownDirection_D_8082AD50 = 1; sStickYRepeatState = 1;
} }
} else { } else {
sStickYcooldownDirection_D_8082AD50 = 0; sStickYRepeatState = 0;
} }
} }
@ -852,10 +853,10 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) {
Gfx_SetupDL_42Opa(gfxCtx); Gfx_SetupDL_42Opa(gfxCtx);
if ((pauseCtx->state == PAUSE_STATE_SAVE_PROMPT) || if ((pauseCtx->state == PAUSE_STATE_SAVE_PROMPT) ||
((pauseCtx->state >= PAUSE_STATE_8) && (pauseCtx->state < PAUSE_STATE_CLOSING)) ((pauseCtx->state >= PAUSE_STATE_8) && (pauseCtx->state < PAUSE_STATE_CLOSING)
/* PAUSE_STATE_8, PAUSE_STATE_9, PAUSE_STATE_10, PAUSE_STATE_11, PAUSE_STATE_12, /* PAUSE_STATE_8, PAUSE_STATE_9, PAUSE_STATE_10, PAUSE_STATE_11, PAUSE_STATE_12, PAUSE_STATE_13,
PAUSE_STATE_13, PAUSE_STATE_14, PAUSE_STATE_15, PAUSE_STATE_16, PAUSE_STATE_17 */ PAUSE_STATE_14, PAUSE_STATE_15, PAUSE_STATE_16, PAUSE_STATE_17 */
) { )) {
KaleidoScope_UpdatePrompt(play); KaleidoScope_UpdatePrompt(play);
gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA, G_CC_MODULATEIA); gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA, G_CC_MODULATEIA);
@ -896,9 +897,10 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) {
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(gfxCtx, "../z_kaleido_scope_PAL.c", 1424), gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(gfxCtx, "../z_kaleido_scope_PAL.c", 1424),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if (((pauseCtx->state >= PAUSE_STATE_8) && (pauseCtx->state < PAUSE_STATE_CLOSING)) if (((pauseCtx->state >= PAUSE_STATE_8) && (pauseCtx->state < PAUSE_STATE_CLOSING)
/* PAUSE_STATE_8, PAUSE_STATE_9, PAUSE_STATE_10, PAUSE_STATE_11, PAUSE_STATE_12, /* PAUSE_STATE_8, PAUSE_STATE_9, PAUSE_STATE_10, PAUSE_STATE_11, PAUSE_STATE_12, PAUSE_STATE_13,
PAUSE_STATE_13, PAUSE_STATE_14, PAUSE_STATE_15, PAUSE_STATE_16, PAUSE_STATE_17 */) { PAUSE_STATE_14, PAUSE_STATE_15, PAUSE_STATE_16, PAUSE_STATE_17 */
)) {
POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->saveVtx, sGameOverTexs); POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->saveVtx, sGameOverTexs);
} else { // PAUSE_STATE_SAVE_PROMPT } else { // PAUSE_STATE_SAVE_PROMPT
POLY_OPA_DISP = POLY_OPA_DISP =
@ -907,8 +909,11 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) {
gSPVertex(POLY_OPA_DISP++, &pauseCtx->saveVtx[60], 32, 0); gSPVertex(POLY_OPA_DISP++, &pauseCtx->saveVtx[60], 32, 0);
if (((pauseCtx->state == PAUSE_STATE_SAVE_PROMPT) && (pauseCtx->savePromptSubState < PAUSE_SAVE_PROMPT_STATE_SAVED) if (((pauseCtx->state == PAUSE_STATE_SAVE_PROMPT) &&
/* PAUSE_SAVE_PROMPT_STATE_APPEARING, PAUSE_SAVE_PROMPT_STATE_WAIT_CHOICE, PAUSE_SAVE_PROMPT_STATE_CLOSING, PAUSE_SAVE_PROMPT_STATE_RETURN_TO_MENU */) || (pauseCtx->savePromptSubState < PAUSE_SAVE_PROMPT_STATE_SAVED)
/* PAUSE_SAVE_PROMPT_STATE_APPEARING, PAUSE_SAVE_PROMPT_STATE_WAIT_CHOICE, PAUSE_SAVE_PROMPT_STATE_CLOSING,
PAUSE_SAVE_PROMPT_STATE_RETURN_TO_MENU */
) ||
(pauseCtx->state == PAUSE_STATE_14)) { (pauseCtx->state == PAUSE_STATE_14)) {
POLY_OPA_DISP = POLY_OPA_DISP =
@ -933,8 +938,12 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) {
POLY_OPA_DISP = POLY_OPA_DISP =
KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sPromptChoiceTexs[gSaveContext.language][1], 48, 16, 16); KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sPromptChoiceTexs[gSaveContext.language][1], 48, 16, 16);
} else if ((pauseCtx->state != PAUSE_STATE_SAVE_PROMPT) || (pauseCtx->savePromptSubState < PAUSE_SAVE_PROMPT_STATE_SAVED) } else if ((pauseCtx->state != PAUSE_STATE_SAVE_PROMPT) ||
/* PAUSE_SAVE_PROMPT_STATE_APPEARING, PAUSE_SAVE_PROMPT_STATE_WAIT_CHOICE, PAUSE_SAVE_PROMPT_STATE_CLOSING, PAUSE_SAVE_PROMPT_STATE_RETURN_TO_MENU */) { (pauseCtx->savePromptSubState < PAUSE_SAVE_PROMPT_STATE_SAVED
/* PAUSE_SAVE_PROMPT_STATE_APPEARING, PAUSE_SAVE_PROMPT_STATE_WAIT_CHOICE,
PAUSE_SAVE_PROMPT_STATE_CLOSING, PAUSE_SAVE_PROMPT_STATE_RETURN_TO_MENU */
)) {
if ((pauseCtx->state != PAUSE_STATE_15) && if ((pauseCtx->state != PAUSE_STATE_15) &&
((pauseCtx->state == PAUSE_STATE_16) || (pauseCtx->state == PAUSE_STATE_17))) { ((pauseCtx->state == PAUSE_STATE_16) || (pauseCtx->state == PAUSE_STATE_17))) {
@ -1217,19 +1226,21 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) {
(!pauseCtx->mainSubState /* PAUSE_MAIN_STATE_IDLE */ || (!pauseCtx->mainSubState /* PAUSE_MAIN_STATE_IDLE */ ||
(pauseCtx->mainSubState == PAUSE_MAIN_STATE_SONG_PLAYBACK) || (pauseCtx->mainSubState == PAUSE_MAIN_STATE_SONG_PLAYBACK) ||
((pauseCtx->mainSubState >= PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING_INIT) && ((pauseCtx->mainSubState >= PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING_INIT) &&
(pauseCtx->mainSubState <= PAUSE_MAIN_STATE_7)) /* PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING_INIT, (pauseCtx->mainSubState <= PAUSE_MAIN_STATE_7)
PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING, /* PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING_INIT, PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING,
PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING_DONE, PAUSE_MAIN_STATE_7 */ PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING_DONE, PAUSE_MAIN_STATE_7 */
|| (pauseCtx->mainSubState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) && ) ||
(pauseCtx->mainSubState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) &&
(pauseCtx->cursorSpecialPos == 0)) { (pauseCtx->cursorSpecialPos == 0)) {
if (!pauseCtx->mainSubState /* PAUSE_MAIN_STATE_IDLE */ || if (!pauseCtx->mainSubState /* PAUSE_MAIN_STATE_IDLE */ ||
(pauseCtx->mainSubState == PAUSE_MAIN_STATE_SONG_PLAYBACK) || (pauseCtx->mainSubState == PAUSE_MAIN_STATE_SONG_PLAYBACK) ||
((pauseCtx->mainSubState >= PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING_INIT) && ((pauseCtx->mainSubState >= PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING_INIT) &&
(pauseCtx->mainSubState <= PAUSE_MAIN_STATE_7)) /* PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING_INIT, (pauseCtx->mainSubState <= PAUSE_MAIN_STATE_7)
PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING, /* PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING_INIT, PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING,
PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING_DONE, PAUSE_MAIN_STATE_7 */ PAUSE_MAIN_STATE_SONG_PLAYER_PLAYING_DONE, PAUSE_MAIN_STATE_7 */
|| (pauseCtx->mainSubState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) { ) ||
(pauseCtx->mainSubState == 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;
@ -1544,14 +1555,14 @@ void KaleidoScope_UpdateSwitchPage(PlayState* play, Input* input) {
} }
} }
void KaleidoScope_SetView(PauseContext* pauseCtx, f32 x, f32 y, f32 z) { void KaleidoScope_SetView(PauseContext* pauseCtx, f32 eyeX, f32 eyeY, f32 eyeZ) {
Vec3f eye; Vec3f eye;
Vec3f lookAt; Vec3f lookAt;
Vec3f up; Vec3f up;
eye.x = x; eye.x = eyeX;
eye.y = y; eye.y = eyeY;
eye.z = z; eye.z = eyeZ;
lookAt.x = lookAt.y = lookAt.z = 0.0f; lookAt.x = lookAt.y = lookAt.z = 0.0f;
up.x = up.z = 0.0f; up.x = up.z = 0.0f;
up.y = 1.0f; up.y = 1.0f;
@ -2457,7 +2468,9 @@ void KaleidoScope_Draw(PlayState* play) {
} }
if ((pauseCtx->state >= PAUSE_STATE_11) && (pauseCtx->state <= PAUSE_STATE_17) if ((pauseCtx->state >= PAUSE_STATE_11) && (pauseCtx->state <= PAUSE_STATE_17)
/* PAUSE_STATE_11, PAUSE_STATE_12, PAUSE_STATE_13, PAUSE_STATE_14, PAUSE_STATE_15, PAUSE_STATE_16, PAUSE_STATE_17 */) { /* PAUSE_STATE_11, PAUSE_STATE_12, PAUSE_STATE_13, PAUSE_STATE_14, PAUSE_STATE_15, PAUSE_STATE_16,
PAUSE_STATE_17 */
) {
KaleidoScope_DrawGameOver(play); KaleidoScope_DrawGameOver(play);
} }
@ -2554,23 +2567,23 @@ void KaleidoScope_UpdateCursorSize(PlayState* play) {
temp2 = 4; temp2 = 4;
temp3 = 12; temp3 = 12;
temp4 = 12; temp4 = 12;
if (pauseCtx->cursorSlot[pauseCtx->pageIndex] == 0x18) { if (pauseCtx->cursorSlot[pauseCtx->pageIndex] == QUEST_HEART_PIECE) {
temp1 = -2; temp1 = -2;
temp2 = 2; temp2 = 2;
temp3 = 32; temp3 = 32;
temp4 = 32; temp4 = 32;
} else if (pauseCtx->cursorSlot[pauseCtx->pageIndex] == 0x17) { } else if (pauseCtx->cursorSlot[pauseCtx->pageIndex] == QUEST_SKULL_TOKEN) {
temp1 = -4; temp1 = -4;
temp2 = 4; temp2 = 4;
temp4 = 13; temp4 = 13;
temp3 = 34; temp3 = 34;
} else if (pauseCtx->cursorSlot[pauseCtx->pageIndex] < 6) { } else if (pauseCtx->cursorSlot[pauseCtx->pageIndex] < QUEST_SONG_MINUET) {
temp1 = -1; temp1 = -1;
temp2 = 1; temp2 = 1;
temp3 = 10; temp3 = 10;
temp4 = 10; temp4 = 10;
} else if ((pauseCtx->cursorSlot[pauseCtx->pageIndex] >= 6) && } else if ((pauseCtx->cursorSlot[pauseCtx->pageIndex] >= QUEST_SONG_MINUET) &&
(pauseCtx->cursorSlot[pauseCtx->pageIndex] < 0x12)) { (pauseCtx->cursorSlot[pauseCtx->pageIndex] < QUEST_KOKIRI_EMERALD)) {
temp1 = -5; temp1 = -5;
temp2 = 3; temp2 = 3;
temp3 = 8; temp3 = 8;