mirror of https://github.com/zeldaret/oot.git
Merge 36616dd592
into 4d2bc68bac
This commit is contained in:
commit
a246acd9e0
|
@ -1,5 +1,7 @@
|
|||
#include "icon_item_static.h"
|
||||
|
||||
#include "versions.h"
|
||||
|
||||
// Item icons textures
|
||||
|
||||
u64 gItemIconDekuStickTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
|
||||
|
@ -746,33 +748,84 @@ u64 gMagicArrowEquipEffectTex[TEX_LEN(u64, gMagicArrowEquipEffectTex_WIDTH, gMag
|
|||
};
|
||||
|
||||
Gfx gInfoPanelBgDL[18] = {
|
||||
#include "assets/textures/icon_item_static/gInfoPanelBgDL.inc.c"
|
||||
gsDPLoadTextureBlock(gInfoPanelBgLeftTex, G_IM_FMT_IA, G_IM_SIZ_8b, gInfoPanelBgLeftTex_WIDTH,
|
||||
gInfoPanelBgLeftTex_HEIGHT, 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),
|
||||
gsSP1Quadrangle(0, 2, 3, 1, 0),
|
||||
gsDPLoadTextureBlock(gInfoPanelBgRightTex, G_IM_FMT_IA, G_IM_SIZ_8b, gInfoPanelBgRightTex_WIDTH,
|
||||
gInfoPanelBgRightTex_HEIGHT, 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),
|
||||
gsSP1Quadrangle(4, 6, 7, 5, 0),
|
||||
gsDPPipeSync(),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx gLButtonIconDL[10] = {
|
||||
#include "assets/textures/icon_item_static/gLButtonIconDL.inc.c"
|
||||
gsDPLoadTextureBlock(gLButtonTex, G_IM_FMT_IA, G_IM_SIZ_8b, gLButtonTex_WIDTH, gLButtonTex_HEIGHT, 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),
|
||||
gsSP1Quadrangle(8, 10, 11, 9, 0),
|
||||
gsDPPipeSync(),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx gRButtonIconDL[10] = {
|
||||
#include "assets/textures/icon_item_static/gRButtonIconDL.inc.c"
|
||||
gsDPLoadTextureBlock(gRButtonTex, G_IM_FMT_IA, G_IM_SIZ_8b, gRButtonTex_WIDTH, gRButtonTex_HEIGHT, 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),
|
||||
gsSP1Quadrangle(12, 14, 15, 13, 0),
|
||||
gsDPPipeSync(),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx gCButtonIconsDL[11] = {
|
||||
#include "assets/textures/icon_item_static/gCButtonIconsDL.inc.c"
|
||||
gsDPPipeSync(),
|
||||
gsDPSetPrimColor(0, 0, 255, 150, 0, 255),
|
||||
gsDPLoadTextureBlock(gCBtnSymbolsTex, G_IM_FMT_IA, G_IM_SIZ_8b, gCBtnSymbolsTex_WIDTH, gCBtnSymbolsTex_HEIGHT, 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),
|
||||
gsSP1Quadrangle(0, 2, 3, 1, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx gAButtonIconDL[11] = {
|
||||
#include "assets/textures/icon_item_static/gAButtonIconDL.inc.c"
|
||||
gsDPPipeSync(),
|
||||
#if PLATFORM_N64 || OOT_VERSION == IQUE_CN
|
||||
gsDPSetPrimColor(0, 0, 0, 100, 255, 255),
|
||||
#else
|
||||
gsDPSetPrimColor(0, 0, 0, 255, 100, 255),
|
||||
#endif
|
||||
gsDPLoadTextureBlock(gABtnSymbolTex, G_IM_FMT_IA, G_IM_SIZ_8b, gABtnSymbolTex_WIDTH, gABtnSymbolTex_HEIGHT, 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),
|
||||
gsSP1Quadrangle(0, 2, 3, 1, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx gBButtonIconDL[11] = {
|
||||
#include "assets/textures/icon_item_static/gBButtonIconDL.inc.c"
|
||||
gsDPPipeSync(),
|
||||
gsDPSetPrimColor(0, 0, 50, 150, 0, 255),
|
||||
gsDPLoadTextureBlock(gBBtnSymbolTex, G_IM_FMT_IA, G_IM_SIZ_8b, gBBtnSymbolTex_WIDTH, gBBtnSymbolTex_HEIGHT, 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),
|
||||
gsSP1Quadrangle(0, 2, 3, 1, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx gPromptCursorLeftDL[10] = {
|
||||
#include "assets/textures/icon_item_static/gPromptCursorLeftDL.inc.c"
|
||||
gsDPPipeSync(),
|
||||
gsDPLoadTextureBlock_4b(gPausePromptCursorTex, G_IM_FMT_I, gPausePromptCursorTex_WIDTH,
|
||||
gPausePromptCursorTex_HEIGHT, 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),
|
||||
gsSP1Quadrangle(4, 6, 7, 5, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
Gfx gPromptCursorRightDL[10] = {
|
||||
#include "assets/textures/icon_item_static/gPromptCursorRightDL.inc.c"
|
||||
gsDPPipeSync(),
|
||||
gsDPLoadTextureBlock_4b(gPausePromptCursorTex, G_IM_FMT_I, gPausePromptCursorTex_WIDTH,
|
||||
gPausePromptCursorTex_HEIGHT, 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),
|
||||
gsSP1Quadrangle(8, 10, 11, 9, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
|
|
@ -126,6 +126,7 @@ struct PlayState;
|
|||
#define R_EPONAS_SONG_PLAYED DREG(53)
|
||||
#define R_MAGIC_FILL_COLOR(i) ZREG(0 + (i))
|
||||
#define R_PAUSE_PAGE_SWITCH_FRAME_ADVANCE_ON ZREG(13)
|
||||
#define R_PAUSE_BUTTON_L_R_SELECTED_PRIM_TIMER ZREG(28)
|
||||
#define R_C_BTN_COLOR(i) ZREG(39 + (i))
|
||||
#define R_B_BTN_COLOR(i) ZREG(43 + (i))
|
||||
#if OOT_NTSC
|
||||
|
@ -192,6 +193,8 @@ struct PlayState;
|
|||
#define R_B_LABEL_DD WREG(0)
|
||||
#define R_PAUSE_PAGES_Y_ORIGIN_2 WREG(2) // Complements PauseContext.pagesYOrigin1
|
||||
#define R_PAUSE_DEPTH_OFFSET WREG(3) // Offset position of all pages away from the camera
|
||||
#define R_PAUSE_UI_ANIM_ALPHA_ADD_DURATION WREG(4)
|
||||
#define R_PAUSE_UI_ANIMS_DURATION WREG(6)
|
||||
#if OOT_NTSC
|
||||
#define R_B_LABEL_SCALE(i) WREG(8 + (i))
|
||||
#define R_B_LABEL_X(i) WREG(10 + (i))
|
||||
|
@ -201,6 +204,8 @@ struct PlayState;
|
|||
#define R_PAUSE_BUTTON_LEFT_X WREG(16)
|
||||
#define R_PAUSE_BUTTON_RIGHT_X WREG(17)
|
||||
#define R_PAUSE_BUTTON_LEFT_RIGHT_Y WREG(18)
|
||||
#define R_PAUSE_BUTTON_LEFT_MOVE_OFFSET_X WREG(25)
|
||||
#define R_PAUSE_BUTTON_RIGHT_MOVE_OFFSET_X WREG(26)
|
||||
#define R_OW_MINIMAP_X WREG(29)
|
||||
#define R_OW_MINIMAP_Y WREG(30)
|
||||
#define R_MINIMAP_DISABLED WREG(31)
|
||||
|
@ -218,6 +223,8 @@ struct PlayState;
|
|||
#endif
|
||||
#define R_DGN_MINIMAP_X WREG(68)
|
||||
#define R_DGN_MINIMAP_Y WREG(69)
|
||||
#define R_PAUSE_NAME_DISPLAY_TIMER_MAX_ WREG(88)
|
||||
#define R_PAUSE_NAME_DISPLAY_TIMER_THRESHOLD_ WREG(89)
|
||||
#define R_TEXTBOX_X VREG(0)
|
||||
#define R_TEXTBOX_Y VREG(1)
|
||||
#define R_TEXTBOX_CLEF_XPOS VREG(7)
|
||||
|
|
|
@ -352,7 +352,7 @@ void Regs_InitDataImpl(void) {
|
|||
ZREG(25) = 4;
|
||||
ZREG(26) = 20;
|
||||
ZREG(27) = 10;
|
||||
ZREG(28) = 20;
|
||||
R_PAUSE_BUTTON_L_R_SELECTED_PRIM_TIMER = 20;
|
||||
ZREG(29) = 4;
|
||||
ZREG(30) = 20;
|
||||
ZREG(31) = 10;
|
||||
|
@ -522,9 +522,9 @@ void Regs_InitDataImpl(void) {
|
|||
XREG(95) = 200;
|
||||
R_PAUSE_PAGES_Y_ORIGIN_2 = -6080;
|
||||
R_PAUSE_DEPTH_OFFSET = 9355;
|
||||
WREG(4) = 8;
|
||||
R_PAUSE_UI_ANIM_ALPHA_ADD_DURATION = 8;
|
||||
WREG(5) = 3;
|
||||
WREG(6) = 8;
|
||||
R_PAUSE_UI_ANIMS_DURATION = 8;
|
||||
WREG(7) = 0;
|
||||
|
||||
#if OOT_NTSC
|
||||
|
@ -557,8 +557,8 @@ void Regs_InitDataImpl(void) {
|
|||
WREG(22) = -32;
|
||||
WREG(23) = -38;
|
||||
WREG(24) = -36;
|
||||
WREG(25) = 40;
|
||||
WREG(26) = -40;
|
||||
R_PAUSE_BUTTON_LEFT_MOVE_OFFSET_X = 40;
|
||||
R_PAUSE_BUTTON_RIGHT_MOVE_OFFSET_X = -40;
|
||||
WREG(27) = 0;
|
||||
WREG(28) = 0;
|
||||
R_OW_MINIMAP_X = 238;
|
||||
|
@ -605,8 +605,8 @@ void Regs_InitDataImpl(void) {
|
|||
R_DGN_MINIMAP_X = 204;
|
||||
R_DGN_MINIMAP_Y = 140;
|
||||
WREG(87) = 80;
|
||||
WREG(88) = 70;
|
||||
WREG(89) = 40;
|
||||
R_PAUSE_NAME_DISPLAY_TIMER_MAX_ = 70;
|
||||
R_PAUSE_NAME_DISPLAY_TIMER_THRESHOLD_ = 40;
|
||||
WREG(90) = 320;
|
||||
WREG(91) = 40;
|
||||
WREG(92) = 3;
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
#include "ultra64.h"
|
||||
#include "debug.h"
|
||||
|
||||
#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0"
|
||||
|
||||
typedef struct DebugCamTextBufferEntry {
|
||||
/* 0x0 */ u8 x;
|
||||
/* 0x1 */ u8 y;
|
||||
|
|
|
@ -136,8 +136,11 @@ void KaleidoSetup_Init(PlayState* play) {
|
|||
pauseCtx->state = PAUSE_STATE_OFF;
|
||||
pauseCtx->debugState = PAUSE_DEBUG_STATE_CLOSED;
|
||||
|
||||
// Setting the eye xz here is irrelevant, it's set on pausing in KaleidoSetup_Update
|
||||
// x = -PAUSE_EYE_DIST * PAUSE_ITEM_X
|
||||
pauseCtx->eye.x = pauseCtx->eye.y = 0.0f;
|
||||
pauseCtx->eye.z = 64.0f;
|
||||
pauseCtx->eye.z = -PAUSE_EYE_DIST * PAUSE_ITEM_Z;
|
||||
|
||||
pauseCtx->promptDepthOffset = 936.0f;
|
||||
pauseCtx->itemPagePitch = pauseCtx->equipPagePitch = pauseCtx->mapPagePitch = pauseCtx->questPagePitch = 160.0f;
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "versions.h"
|
||||
#include "audio.h"
|
||||
#include "cutscene_flags.h"
|
||||
#include "ocarina.h"
|
||||
#include "play_state.h"
|
||||
#include "save.h"
|
||||
#include "ss_sram.h"
|
||||
|
@ -101,9 +102,9 @@ void EnMag_Init(Actor* thisx, PlayState* play) {
|
|||
this->fadeOutAlphaStep = 10;
|
||||
|
||||
VREG(19) = 99;
|
||||
VREG(21) = 9;
|
||||
VREG(23) = 10;
|
||||
VREG(24) = 8;
|
||||
R_PAUSE_SONG_OCA_BTN_Y(OCARINA_BTN_A) = 9;
|
||||
R_PAUSE_SONG_OCA_BTN_Y(OCARINA_BTN_C_RIGHT) = 10;
|
||||
R_PAUSE_SONG_OCA_BTN_Y(OCARINA_BTN_C_LEFT) = 8;
|
||||
|
||||
this->effectScroll = 0;
|
||||
this->unk_E30C = 0;
|
||||
|
|
|
@ -293,10 +293,15 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
|||
|
||||
KaleidoScope_SetCursorPos(pauseCtx, cursor * 4, pauseCtx->questVtx);
|
||||
|
||||
// Handle part of the ocarina songs playback
|
||||
|
||||
if ((pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) &&
|
||||
(pauseCtx->cursorSpecialPos == 0)) {
|
||||
if ((cursor >= QUEST_SONG_MINUET) && (cursor < QUEST_KOKIRI_EMERALD)) {
|
||||
if (CHECK_QUEST_ITEM(pauseCtx->cursorPoint[PAUSE_QUEST])) {
|
||||
// The cursor is on a learned song
|
||||
// Set some things up for song playback
|
||||
|
||||
cursor = pauseCtx->cursorSlot[PAUSE_QUEST];
|
||||
pauseCtx->ocarinaSongIdx = gOcarinaSongItemMap[cursor - QUEST_SONG_MINUET];
|
||||
sPlaybackSongStartDelayTimer = 10;
|
||||
|
@ -307,6 +312,9 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
|||
}
|
||||
sPlayedSongBtnsNum = 0;
|
||||
|
||||
// Have the player play a song, immediately cancelled below
|
||||
// Also clear the playback staff
|
||||
// This has no purpose (?)
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
AudioOcarina_Start((1 << pauseCtx->ocarinaSongIdx) + 0x8000);
|
||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
|
@ -321,6 +329,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
|||
|
||||
pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG;
|
||||
|
||||
// Stop having the player play a song as done above
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,7 +32,14 @@ u8 gAmmoItems[] = {
|
|||
ITEM_NONE,
|
||||
};
|
||||
|
||||
static s16 sEquipState = 0;
|
||||
typedef enum ItemEquipState {
|
||||
/* 0 */ ITEM_EQUIP_STATE_0,
|
||||
/* 1 */ ITEM_EQUIP_STATE_1,
|
||||
/* 2 */ ITEM_EQUIP_STATE_2,
|
||||
/* 3 */ ITEM_EQUIP_STATE_3
|
||||
} ItemEquipState;
|
||||
|
||||
static s16 sEquipState = ITEM_EQUIP_STATE_0;
|
||||
static s16 sEquipAnimTimer = 0;
|
||||
static s16 sEquipMoveTimer = 10;
|
||||
|
||||
|
@ -409,11 +416,13 @@ void KaleidoScope_DrawItemSelect(PlayState* play) {
|
|||
pauseCtx->equipAnimY = pauseCtx->itemVtx[index].v.ob[1] * 10;
|
||||
pauseCtx->equipAnimAlpha = 255;
|
||||
sEquipAnimTimer = 0;
|
||||
sEquipState = 3;
|
||||
sEquipState = ITEM_EQUIP_STATE_3;
|
||||
sEquipMoveTimer = 10;
|
||||
|
||||
if ((pauseCtx->equipTargetItem == ITEM_ARROW_FIRE) ||
|
||||
(pauseCtx->equipTargetItem == ITEM_ARROW_ICE) ||
|
||||
(pauseCtx->equipTargetItem == ITEM_ARROW_LIGHT)) {
|
||||
|
||||
index = 0;
|
||||
if (pauseCtx->equipTargetItem == ITEM_ARROW_ICE) {
|
||||
index = 1;
|
||||
|
@ -423,7 +432,7 @@ void KaleidoScope_DrawItemSelect(PlayState* play) {
|
|||
}
|
||||
SFX_PLAY_CENTERED(NA_SE_SY_SET_FIRE_ARROW + index);
|
||||
pauseCtx->equipTargetItem = 0xBF + index;
|
||||
sEquipState = 0;
|
||||
sEquipState = ITEM_EQUIP_STATE_0;
|
||||
pauseCtx->equipAnimAlpha = 0;
|
||||
sEquipMoveTimer = 6;
|
||||
} else {
|
||||
|
@ -435,6 +444,8 @@ void KaleidoScope_DrawItemSelect(PlayState* play) {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
// PAUSE_QUAD_CURSOR_TL
|
||||
|
||||
pauseCtx->cursorVtx[0].v.ob[0] = pauseCtx->cursorVtx[2].v.ob[0] = pauseCtx->cursorVtx[1].v.ob[0] =
|
||||
pauseCtx->cursorVtx[3].v.ob[0] = 0;
|
||||
|
||||
|
@ -449,7 +460,9 @@ void KaleidoScope_DrawItemSelect(PlayState* play) {
|
|||
SFX_PLAY_CENTERED(NA_SE_SY_CURSOR);
|
||||
}
|
||||
} else if ((pauseCtx->mainState == PAUSE_MAIN_STATE_3) && (pauseCtx->pageIndex == PAUSE_ITEM)) {
|
||||
//! @bug cursorSlot is uninitialized
|
||||
//! @bug cursorSlot is used uninitialized
|
||||
// This leads to reading from the itemVtx array at some index, typically OOB, and setting the cursor to an
|
||||
// unexpected position. However the cursor is not drawn in this state so it ends up not being an issue.
|
||||
KaleidoScope_SetCursorPos(pauseCtx, cursorSlot * 4, pauseCtx->itemVtx);
|
||||
pauseCtx->cursorColorSet = 4;
|
||||
}
|
||||
|
@ -476,7 +489,7 @@ void KaleidoScope_DrawItemSelect(PlayState* play) {
|
|||
if ((pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && (pauseCtx->pageIndex == PAUSE_ITEM) &&
|
||||
(pauseCtx->cursorSpecialPos == 0)) {
|
||||
if (CHECK_AGE_REQ_SLOT(i)) {
|
||||
if ((sEquipState == 2) && (i == 3)) {
|
||||
if ((sEquipState == ITEM_EQUIP_STATE_2) && (i == SLOT_BOW)) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, magicArrowEffectsR[pauseCtx->equipTargetItem - 0xBF],
|
||||
magicArrowEffectsG[pauseCtx->equipTargetItem - 0xBF],
|
||||
magicArrowEffectsB[pauseCtx->equipTargetItem - 0xBF], pauseCtx->alpha);
|
||||
|
@ -538,43 +551,44 @@ void KaleidoScope_DrawItemSelect(PlayState* play) {
|
|||
CLOSE_DISPS(play->state.gfxCtx, "../z_kaleido_item.c", 516);
|
||||
}
|
||||
|
||||
// C-left, C-down, C-right
|
||||
static s16 sCButtonPosX[] = { 660, 900, 1140 };
|
||||
static s16 sCButtonPosY[] = { 1100, 920, 1100 };
|
||||
|
||||
void KaleidoScope_UpdateItemEquip(PlayState* play) {
|
||||
static s16 D_8082A488 = 0;
|
||||
static s16 sItemEquipState2Timer_8082A488 = 0;
|
||||
PauseContext* pauseCtx = &play->pauseCtx;
|
||||
Vtx* bowItemVtx;
|
||||
u16 offsetX;
|
||||
u16 offsetY;
|
||||
|
||||
if (sEquipState == 0) {
|
||||
pauseCtx->equipAnimAlpha += 14;
|
||||
if (sEquipState == ITEM_EQUIP_STATE_0) {
|
||||
pauseCtx->equipAnimAlpha += 255 / 18;
|
||||
if (pauseCtx->equipAnimAlpha > 255) {
|
||||
pauseCtx->equipAnimAlpha = 254;
|
||||
sEquipState++;
|
||||
sEquipState++; // ITEM_EQUIP_STATE_1
|
||||
}
|
||||
sEquipAnimTimer = 5;
|
||||
return;
|
||||
}
|
||||
|
||||
if (sEquipState == 2) {
|
||||
D_8082A488--;
|
||||
if (sEquipState == ITEM_EQUIP_STATE_2) {
|
||||
sItemEquipState2Timer_8082A488--;
|
||||
|
||||
if (D_8082A488 == 0) {
|
||||
if (sItemEquipState2Timer_8082A488 == 0) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
|
||||
pauseCtx->equipTargetSlot = SLOT_BOW;
|
||||
sEquipMoveTimer = 6;
|
||||
WREG(90) = 320;
|
||||
WREG(87) = WREG(91);
|
||||
sEquipState++;
|
||||
sEquipState++; // ITEM_EQUIP_STATE_3
|
||||
SFX_PLAY_CENTERED(NA_SE_SY_SYNTH_MAGIC_ARROW);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (sEquipState == 1) {
|
||||
bowItemVtx = &pauseCtx->itemVtx[12];
|
||||
if (sEquipState == ITEM_EQUIP_STATE_1) {
|
||||
bowItemVtx = &pauseCtx->itemVtx[SLOT_BOW * 4];
|
||||
offsetX = ABS(pauseCtx->equipAnimX - bowItemVtx->v.ob[0] * 10) / sEquipMoveTimer;
|
||||
offsetY = ABS(pauseCtx->equipAnimY - bowItemVtx->v.ob[1] * 10) / sEquipMoveTimer;
|
||||
} else {
|
||||
|
@ -595,14 +609,14 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
|
|||
WREG(90) -= WREG(87) / sEquipMoveTimer;
|
||||
WREG(87) -= WREG(87) / sEquipMoveTimer;
|
||||
|
||||
if (sEquipState == 1) {
|
||||
if (pauseCtx->equipAnimX >= (pauseCtx->itemVtx[12].v.ob[0] * 10)) {
|
||||
if (sEquipState == ITEM_EQUIP_STATE_1) {
|
||||
if (pauseCtx->equipAnimX >= (pauseCtx->itemVtx[SLOT_BOW * 4].v.ob[0] * 10)) {
|
||||
pauseCtx->equipAnimX -= offsetX;
|
||||
} else {
|
||||
pauseCtx->equipAnimX += offsetX;
|
||||
}
|
||||
|
||||
if (pauseCtx->equipAnimY >= (pauseCtx->itemVtx[12].v.ob[1] * 10)) {
|
||||
if (pauseCtx->equipAnimY >= (pauseCtx->itemVtx[SLOT_BOW * 4].v.ob[1] * 10)) {
|
||||
pauseCtx->equipAnimY -= offsetY;
|
||||
} else {
|
||||
pauseCtx->equipAnimY += offsetY;
|
||||
|
@ -624,9 +638,9 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
|
|||
sEquipMoveTimer--;
|
||||
|
||||
if (sEquipMoveTimer == 0) {
|
||||
if (sEquipState == 1) {
|
||||
sEquipState++;
|
||||
D_8082A488 = 4;
|
||||
if (sEquipState == ITEM_EQUIP_STATE_1) {
|
||||
sEquipState++; // ITEM_EQUIP_STATE_2
|
||||
sItemEquipState2Timer_8082A488 = 4;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -162,7 +162,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) {
|
|||
pauseCtx->cursorSpecialPos = 0;
|
||||
pauseCtx->cursorSlot[PAUSE_MAP] = pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->dungeonMapSlot;
|
||||
pauseCtx->cursorX[PAUSE_MAP] = 0;
|
||||
j = (pauseCtx->cursorSlot[PAUSE_MAP] + 18) * 4;
|
||||
j = (pauseCtx->cursorSlot[PAUSE_MAP] + (PAGE_BG_QUADS + 3)) * 4;
|
||||
KaleidoScope_SetCursorPos(pauseCtx, j, pauseCtx->mapPageVtx);
|
||||
SFX_PLAY_CENTERED(NA_SE_SY_CURSOR);
|
||||
}
|
||||
|
@ -192,7 +192,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) {
|
|||
}
|
||||
|
||||
PRINTF("kscope->cursor_point====%d\n", pauseCtx->cursorPoint[PAUSE_MAP]);
|
||||
j = (pauseCtx->cursorSlot[PAUSE_MAP] + 18) * 4;
|
||||
j = (pauseCtx->cursorSlot[PAUSE_MAP] + (PAGE_BG_QUADS + 3)) * 4;
|
||||
KaleidoScope_SetCursorPos(pauseCtx, j, pauseCtx->mapPageVtx);
|
||||
SFX_PLAY_CENTERED(NA_SE_SY_CURSOR);
|
||||
}
|
||||
|
@ -212,7 +212,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) {
|
|||
|
||||
pauseCtx->cursorSlot[PAUSE_MAP] = pauseCtx->cursorPoint[PAUSE_MAP];
|
||||
|
||||
j = (pauseCtx->cursorSlot[PAUSE_MAP] + 18) * 4;
|
||||
j = (pauseCtx->cursorSlot[PAUSE_MAP] + (PAGE_BG_QUADS + 3)) * 4;
|
||||
KaleidoScope_SetCursorPos(pauseCtx, j, pauseCtx->mapPageVtx);
|
||||
|
||||
if (pauseCtx->cursorX[PAUSE_MAP] == 0) {
|
||||
|
@ -231,7 +231,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) {
|
|||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha);
|
||||
gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
|
||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->mapPageVtx[68], 16, 0);
|
||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->mapPageVtx[(PAGE_BG_QUADS + 2) * 4], 16, 0);
|
||||
|
||||
gDPLoadTextureBlock(POLY_OPA_DISP++, dungeonTitleTexs[gSaveContext.mapIndex], G_IM_FMT_IA, G_IM_SIZ_8b, 96, 16, 0,
|
||||
G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
|
||||
|
@ -256,7 +256,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) {
|
|||
gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 200, pauseCtx->alpha);
|
||||
|
||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->mapPageVtx[84], 32, 0);
|
||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->mapPageVtx[(PAGE_BG_QUADS + 6) * 4], 32, 0);
|
||||
|
||||
for (i = j = 0; i < 8; i++, j += 4) {
|
||||
if ((gSaveContext.save.info.sceneFlags[gSaveContext.mapIndex].floors & gBitFlags[i]) ||
|
||||
|
@ -283,19 +283,26 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) {
|
|||
|
||||
gSP1Quadrangle(POLY_OPA_DISP++, j, j + 2, j + 3, j + 1, 0);
|
||||
|
||||
pauseCtx->mapPageVtx[124].v.ob[0] = pauseCtx->mapPageVtx[126].v.ob[0] = pauseCtx->mapPageVtx[124].v.ob[0] + 2;
|
||||
pauseCtx->mapPageVtx[125].v.ob[0] = pauseCtx->mapPageVtx[127].v.ob[0] = pauseCtx->mapPageVtx[124].v.ob[0] + 19;
|
||||
pauseCtx->mapPageVtx[124].v.ob[1] = pauseCtx->mapPageVtx[125].v.ob[1] = pauseCtx->mapPageVtx[124].v.ob[1] - 2;
|
||||
pauseCtx->mapPageVtx[126].v.ob[1] = pauseCtx->mapPageVtx[127].v.ob[1] = pauseCtx->mapPageVtx[124].v.ob[1] - 19;
|
||||
// Quad PAGE_BG_QUADS + 16
|
||||
pauseCtx->mapPageVtx[31 * 4 + 0].v.ob[0] = pauseCtx->mapPageVtx[31 * 4 + 2].v.ob[0] =
|
||||
pauseCtx->mapPageVtx[31 * 4 + 0].v.ob[0] + 2;
|
||||
pauseCtx->mapPageVtx[31 * 4 + 1].v.ob[0] = pauseCtx->mapPageVtx[31 * 4 + 3].v.ob[0] =
|
||||
pauseCtx->mapPageVtx[31 * 4 + 0].v.ob[0] + 19;
|
||||
pauseCtx->mapPageVtx[31 * 4 + 0].v.ob[1] = pauseCtx->mapPageVtx[31 * 4 + 1].v.ob[1] =
|
||||
pauseCtx->mapPageVtx[31 * 4 + 0].v.ob[1] - 2;
|
||||
pauseCtx->mapPageVtx[31 * 4 + 2].v.ob[1] = pauseCtx->mapPageVtx[31 * 4 + 3].v.ob[1] =
|
||||
pauseCtx->mapPageVtx[31 * 4 + 0].v.ob[1] - 19;
|
||||
|
||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->mapPageVtx[116], 12, 0);
|
||||
|
||||
gDPPipeSync(POLY_OPA_DISP++);
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha);
|
||||
|
||||
pauseCtx->mapPageVtx[116].v.ob[1] = pauseCtx->mapPageVtx[117].v.ob[1] =
|
||||
// Quad PAGE_BG_QUADS + 14
|
||||
pauseCtx->mapPageVtx[29 * 4 + 0].v.ob[1] = pauseCtx->mapPageVtx[29 * 4 + 1].v.ob[1] =
|
||||
pauseCtx->pagesYOrigin1 + 50 - (VREG(30) * 14) - 1;
|
||||
pauseCtx->mapPageVtx[118].v.ob[1] = pauseCtx->mapPageVtx[119].v.ob[1] = pauseCtx->mapPageVtx[116].v.ob[1] - 16;
|
||||
pauseCtx->mapPageVtx[29 * 4 + 2].v.ob[1] = pauseCtx->mapPageVtx[29 * 4 + 3].v.ob[1] =
|
||||
pauseCtx->mapPageVtx[29 * 4 + 0].v.ob[1] - 16;
|
||||
|
||||
gDPLoadTextureBlock(POLY_OPA_DISP++, gDungeonMapLinkHeadTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 16, 0,
|
||||
G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
|
||||
|
@ -305,9 +312,12 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) {
|
|||
|
||||
if (CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, gSaveContext.mapIndex) &&
|
||||
(gMapData->skullFloorIconY[gSaveContext.mapIndex] != -99)) {
|
||||
pauseCtx->mapPageVtx[120].v.ob[1] = pauseCtx->mapPageVtx[121].v.ob[1] =
|
||||
|
||||
// Quad PAGE_BG_QUADS + 15
|
||||
pauseCtx->mapPageVtx[30 * 4 + 0].v.ob[1] = pauseCtx->mapPageVtx[30 * 4 + 1].v.ob[1] =
|
||||
gMapData->skullFloorIconY[gSaveContext.mapIndex] + pauseCtx->pagesYOrigin1;
|
||||
pauseCtx->mapPageVtx[122].v.ob[1] = pauseCtx->mapPageVtx[123].v.ob[1] = pauseCtx->mapPageVtx[120].v.ob[1] - 16;
|
||||
pauseCtx->mapPageVtx[30 * 4 + 2].v.ob[1] = pauseCtx->mapPageVtx[30 * 4 + 3].v.ob[1] =
|
||||
pauseCtx->mapPageVtx[30 * 4 + 0].v.ob[1] - 16;
|
||||
|
||||
gDPLoadTextureBlock(POLY_OPA_DISP++, gDungeonMapSkullTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 16, 0,
|
||||
G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
|
||||
|
@ -348,7 +358,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) {
|
|||
gDPLoadTLUT_pal16(POLY_OPA_DISP++, 0, interfaceCtx->mapPalette);
|
||||
gDPSetTextureLUT(POLY_OPA_DISP++, G_TT_RGBA16);
|
||||
|
||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->mapPageVtx[60], 8, 0);
|
||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->mapPageVtx[(PAGE_BG_QUADS + 0) * 4], 8, 0);
|
||||
|
||||
gDPLoadTextureBlock_4b(POLY_OPA_DISP++, interfaceCtx->mapSegment, G_IM_FMT_CI, 48, 85, 0, G_TX_WRAP | G_TX_NOMIRROR,
|
||||
G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
|
|
|
@ -688,6 +688,7 @@ static u8 gPageSwitchNextButtonStatus[][5] = {
|
|||
// PAUSE_EQUIP + PAGE_SWITCH_PT_RIGHT
|
||||
// -> PAUSE_ITEM
|
||||
{ BTN_ENABLED, BTN_ENABLED, BTN_ENABLED, BTN_ENABLED, BTN_DISABLED },
|
||||
|
||||
};
|
||||
|
||||
static s16 D_8082AB8C = 0;
|
||||
|
@ -963,7 +964,7 @@ void KaleidoScope_SetupPlayerPreRender(PlayState* play) {
|
|||
}
|
||||
|
||||
void KaleidoScope_ProcessPlayerPreRender(void) {
|
||||
Sleep_Msec(50);
|
||||
Sleep_Msec(50); // TODO investigate if this is required
|
||||
PreRender_ApplyFilters(&sPlayerPreRender);
|
||||
PreRender_Destroy(&sPlayerPreRender);
|
||||
}
|
||||
|
@ -1164,7 +1165,7 @@ void KaleidoScope_DrawCursor(PlayState* play, u16 pageIndex) {
|
|||
sCursorColors[pauseCtx->cursorColorSet >> 2][1],
|
||||
sCursorColors[pauseCtx->cursorColorSet >> 2][2], 255);
|
||||
gDPSetEnvColor(POLY_OPA_DISP++, D_8082AB8C, D_8082AB90, D_8082AB94, 255);
|
||||
gSPVertex(POLY_OPA_DISP++, pauseCtx->cursorVtx, 16, 0);
|
||||
gSPVertex(POLY_OPA_DISP++, pauseCtx->cursorVtx, 4 * 4, 0);
|
||||
|
||||
for (i = j = 0; i < 4; i++, j += 4) {
|
||||
gDPLoadTextureBlock_4b(POLY_OPA_DISP++, sCursorTexs[i], G_IM_FMT_IA, PAUSE_MENU_CURSOR_CORNER_TEX_WIDTH,
|
||||
|
@ -1236,10 +1237,12 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) {
|
|||
};
|
||||
static s16 D_8082AD3C = 20;
|
||||
static s16 D_8082AD40 = 0;
|
||||
|
||||
static s16 sStickXRepeatTimer = 0;
|
||||
static s16 sStickYRepeatTimer = 0;
|
||||
static s16 sStickXRepeatState = 0;
|
||||
static s16 sStickYRepeatState = 0;
|
||||
|
||||
PauseContext* pauseCtx = &play->pauseCtx;
|
||||
s16 stepR;
|
||||
s16 stepG;
|
||||
|
@ -1574,6 +1577,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) {
|
|||
if (((pauseCtx->state == PAUSE_STATE_SAVE_PROMPT) &&
|
||||
(pauseCtx->savePromptState < PAUSE_SAVE_PROMPT_STATE_SAVED)) ||
|
||||
(pauseCtx->state == PAUSE_STATE_GAME_OVER_SAVE_PROMPT)) {
|
||||
|
||||
POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sSavePromptMessageTexs[gSaveContext.language],
|
||||
152, 16, PROMPT_QUAD_MESSAGE * 4);
|
||||
|
||||
|
@ -1684,22 +1688,34 @@ void KaleidoScope_DrawUIOverlay(PlayState* play) {
|
|||
static u16 sToPlayMelodyTextWidths[] =
|
||||
LANGUAGE_ARRAY(gPauseToPlayMelodyJPNTex_WIDTH, gPauseToPlayMelodyENGTex_WIDTH, gPauseToPlayMelodyGERTex_WIDTH,
|
||||
gPauseToPlayMelodyFRATex_WIDTH);
|
||||
static s16 D_8082ADF0[][4] = {
|
||||
static s16 sLRSelectedPrimColors[][4] = {
|
||||
{ 180, 210, 255, 220 },
|
||||
{ 100, 100, 150, 220 },
|
||||
};
|
||||
static s16 D_8082AE00 = 20;
|
||||
static s16 D_8082AE04 = 0;
|
||||
static s16 sLRSelectedPrimTimer = 20;
|
||||
static s16 sLRSelectedPrimState = 0;
|
||||
static s16 D_8082AE08[] = {
|
||||
10, 16, 16, 17, 12, 13, 18, 17, 17, 19, 13, 21, 20, 21, 14, 15, 15, 15, 11, 14,
|
||||
};
|
||||
static s16 D_8082AE30[] = {
|
||||
21, 20, 19, 18, 11, 14, 10, 15, 16, 13, 12, 17,
|
||||
static s16 D_8082AE30[WORLD_MAP_POINT_MAX] = {
|
||||
21, // WORLD_MAP_POINT_HAUNTED_WASTELAND
|
||||
20, // WORLD_MAP_POINT_GERUDOS_FORTRESS
|
||||
19, // WORLD_MAP_POINT_GERUDO_VALLEY
|
||||
18, // WORLD_MAP_POINT_HYLIA_LAKESIDE
|
||||
11, // WORLD_MAP_POINT_LON_LON_RANCH
|
||||
14, // WORLD_MAP_POINT_MARKET
|
||||
10, // WORLD_MAP_POINT_HYRULE_FIELD
|
||||
15, // WORLD_MAP_POINT_DEATH_MOUNTAIN
|
||||
16, // WORLD_MAP_POINT_KAKARIKO_VILLAGE
|
||||
13, // WORLD_MAP_POINT_LOST_WOODS
|
||||
12, // WORLD_MAP_POINT_KOKIRI_FOREST
|
||||
17, // WORLD_MAP_POINT_ZORAS_DOMAIN
|
||||
};
|
||||
static s16 D_808321A0;
|
||||
static s16 D_808321A2;
|
||||
static s16 D_808321A4;
|
||||
static s16 D_808321A6;
|
||||
static s16 sLRSelectedPrimR;
|
||||
static s16 sLRSelectedPrimG;
|
||||
static s16 sLRSelectedPrimB;
|
||||
static s16 sLRSelectedPrimA;
|
||||
|
||||
PauseContext* pauseCtx = &play->pauseCtx;
|
||||
s16 stepR;
|
||||
s16 stepG;
|
||||
|
@ -1711,39 +1727,39 @@ void KaleidoScope_DrawUIOverlay(PlayState* play) {
|
|||
|
||||
OPEN_DISPS(play->state.gfxCtx, "../z_kaleido_scope_PAL.c", 1676);
|
||||
|
||||
stepR = ABS(D_808321A0 - D_8082ADF0[D_8082AE04][0]) / D_8082AE00;
|
||||
stepG = ABS(D_808321A2 - D_8082ADF0[D_8082AE04][1]) / D_8082AE00;
|
||||
stepB = ABS(D_808321A4 - D_8082ADF0[D_8082AE04][2]) / D_8082AE00;
|
||||
stepA = ABS(D_808321A6 - D_8082ADF0[D_8082AE04][3]) / D_8082AE00;
|
||||
if (D_808321A0 >= D_8082ADF0[D_8082AE04][0]) {
|
||||
D_808321A0 -= stepR;
|
||||
stepR = ABS(sLRSelectedPrimR - sLRSelectedPrimColors[sLRSelectedPrimState][0]) / sLRSelectedPrimTimer;
|
||||
stepG = ABS(sLRSelectedPrimG - sLRSelectedPrimColors[sLRSelectedPrimState][1]) / sLRSelectedPrimTimer;
|
||||
stepB = ABS(sLRSelectedPrimB - sLRSelectedPrimColors[sLRSelectedPrimState][2]) / sLRSelectedPrimTimer;
|
||||
stepA = ABS(sLRSelectedPrimA - sLRSelectedPrimColors[sLRSelectedPrimState][3]) / sLRSelectedPrimTimer;
|
||||
if (sLRSelectedPrimR >= sLRSelectedPrimColors[sLRSelectedPrimState][0]) {
|
||||
sLRSelectedPrimR -= stepR;
|
||||
} else {
|
||||
D_808321A0 += stepR;
|
||||
sLRSelectedPrimR += stepR;
|
||||
}
|
||||
if (D_808321A2 >= D_8082ADF0[D_8082AE04][1]) {
|
||||
D_808321A2 -= stepG;
|
||||
if (sLRSelectedPrimG >= sLRSelectedPrimColors[sLRSelectedPrimState][1]) {
|
||||
sLRSelectedPrimG -= stepG;
|
||||
} else {
|
||||
D_808321A2 += stepG;
|
||||
sLRSelectedPrimG += stepG;
|
||||
}
|
||||
if (D_808321A4 >= D_8082ADF0[D_8082AE04][2]) {
|
||||
D_808321A4 -= stepB;
|
||||
if (sLRSelectedPrimB >= sLRSelectedPrimColors[sLRSelectedPrimState][2]) {
|
||||
sLRSelectedPrimB -= stepB;
|
||||
} else {
|
||||
D_808321A4 += stepB;
|
||||
sLRSelectedPrimB += stepB;
|
||||
}
|
||||
if (D_808321A6 >= D_8082ADF0[D_8082AE04][3]) {
|
||||
D_808321A6 -= stepA;
|
||||
if (sLRSelectedPrimA >= sLRSelectedPrimColors[sLRSelectedPrimState][3]) {
|
||||
sLRSelectedPrimA -= stepA;
|
||||
} else {
|
||||
D_808321A6 += stepA;
|
||||
sLRSelectedPrimA += stepA;
|
||||
}
|
||||
|
||||
D_8082AE00--;
|
||||
if (D_8082AE00 == 0) {
|
||||
D_808321A0 = D_8082ADF0[D_8082AE04][0];
|
||||
D_808321A2 = D_8082ADF0[D_8082AE04][1];
|
||||
D_808321A4 = D_8082ADF0[D_8082AE04][2];
|
||||
D_808321A6 = D_8082ADF0[D_8082AE04][3];
|
||||
D_8082AE00 = ZREG(28);
|
||||
D_8082AE04 ^= 1;
|
||||
sLRSelectedPrimTimer--;
|
||||
if (sLRSelectedPrimTimer == 0) {
|
||||
sLRSelectedPrimR = sLRSelectedPrimColors[sLRSelectedPrimState][0];
|
||||
sLRSelectedPrimG = sLRSelectedPrimColors[sLRSelectedPrimState][1];
|
||||
sLRSelectedPrimB = sLRSelectedPrimColors[sLRSelectedPrimState][2];
|
||||
sLRSelectedPrimA = sLRSelectedPrimColors[sLRSelectedPrimState][3];
|
||||
sLRSelectedPrimTimer = R_PAUSE_BUTTON_L_R_SELECTED_PRIM_TIMER;
|
||||
sLRSelectedPrimState ^= 1;
|
||||
}
|
||||
|
||||
y = pauseCtx->infoPanelOffsetY - 76;
|
||||
|
@ -1853,7 +1869,7 @@ void KaleidoScope_DrawUIOverlay(PlayState* play) {
|
|||
gSPDisplayList(POLY_OPA_DISP++, gInfoPanelBgDL);
|
||||
|
||||
if ((pauseCtx->cursorSpecialPos == PAUSE_CURSOR_PAGE_LEFT) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE)) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, D_808321A0, D_808321A2, D_808321A4, D_808321A6);
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sLRSelectedPrimR, sLRSelectedPrimG, sLRSelectedPrimB, sLRSelectedPrimA);
|
||||
}
|
||||
|
||||
// Draw UI_OVERLAY_QUAD_BUTTON_LEFT
|
||||
|
@ -1862,14 +1878,14 @@ void KaleidoScope_DrawUIOverlay(PlayState* play) {
|
|||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 180, 210, 255, 220);
|
||||
|
||||
if ((pauseCtx->cursorSpecialPos == PAUSE_CURSOR_PAGE_RIGHT) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE)) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, D_808321A0, D_808321A2, D_808321A4, D_808321A6);
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sLRSelectedPrimR, sLRSelectedPrimG, sLRSelectedPrimB, sLRSelectedPrimA);
|
||||
}
|
||||
|
||||
// Draw UI_OVERLAY_QUAD_BUTTON_RIGHT
|
||||
gSPDisplayList(POLY_OPA_DISP++, gRButtonIconDL);
|
||||
|
||||
if (pauseCtx->cursorSpecialPos != 0) {
|
||||
j = (pauseCtx->cursorSpecialPos - 8) * 4;
|
||||
j = (pauseCtx->cursorSpecialPos - PAUSE_CURSOR_PAGE_LEFT + UI_OVERLAY_QUAD_BUTTON_LEFT) * 4;
|
||||
pauseCtx->cursorVtx[0].v.ob[0] = pauseCtx->uiOverlayVtx[j].v.ob[0];
|
||||
pauseCtx->cursorVtx[0].v.ob[1] = pauseCtx->uiOverlayVtx[j].v.ob[1];
|
||||
KaleidoScope_DrawCursor(play, pauseCtx->pageIndex);
|
||||
|
@ -1891,13 +1907,14 @@ void KaleidoScope_DrawUIOverlay(PlayState* play) {
|
|||
gDPSetEnvColor(POLY_OPA_DISP++, 20, 30, 40, 0);
|
||||
|
||||
if ((pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->namedItem != PAUSE_ITEM_NONE) &&
|
||||
(pauseCtx->nameDisplayTimer < WREG(89)) &&
|
||||
(pauseCtx->nameDisplayTimer < R_PAUSE_NAME_DISPLAY_TIMER_THRESHOLD_) &&
|
||||
(((u32)pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) ||
|
||||
(pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PLAYBACK) ||
|
||||
((pauseCtx->mainState >= PAUSE_MAIN_STATE_SONG_PROMPT_INIT) &&
|
||||
(pauseCtx->mainState <= PAUSE_MAIN_STATE_EQUIP_CHANGED)) ||
|
||||
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) &&
|
||||
(pauseCtx->cursorSpecialPos == 0)) {
|
||||
|
||||
if (((u32)pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) ||
|
||||
(pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PLAYBACK) ||
|
||||
((pauseCtx->mainState >= PAUSE_MAIN_STATE_SONG_PROMPT_INIT) &&
|
||||
|
@ -2070,8 +2087,11 @@ void KaleidoScope_DrawUIOverlay(PlayState* play) {
|
|||
} else if ((pauseCtx->pageIndex == PAUSE_MAP) && sInDungeonScene) {
|
||||
|
||||
} else if ((pauseCtx->pageIndex == PAUSE_QUEST) &&
|
||||
((pauseCtx->cursorSlot[PAUSE_QUEST] >= 6) && (pauseCtx->cursorSlot[PAUSE_QUEST] <= 0x11))) {
|
||||
((pauseCtx->cursorSlot[PAUSE_QUEST] >= QUEST_SONG_MINUET) &&
|
||||
(pauseCtx->cursorSlot[PAUSE_QUEST] < QUEST_KOKIRI_EMERALD))) {
|
||||
if (pauseCtx->namedItem != PAUSE_ITEM_NONE) {
|
||||
// The cursor is on a learned song
|
||||
|
||||
// UI_OVERLAY_QUAD_INFO_ICON
|
||||
pauseCtx->uiOverlayVtx[16].v.ob[0] = pauseCtx->uiOverlayVtx[18].v.ob[0] =
|
||||
R_PAUSE_INFO_PANEL_ICON_PLAY_SONG_X(gSaveContext.language);
|
||||
|
@ -2200,13 +2220,14 @@ void KaleidoScope_UpdateNamePanel(PlayState* play) {
|
|||
}
|
||||
} else if (pauseCtx->nameColorSet == 0) {
|
||||
if (((pauseCtx->pageIndex == PAUSE_QUEST) &&
|
||||
((pauseCtx->cursorSlot[PAUSE_QUEST] >= 6) && (pauseCtx->cursorSlot[PAUSE_QUEST] <= 0x11)) &&
|
||||
((pauseCtx->cursorSlot[PAUSE_QUEST] >= QUEST_SONG_MINUET) &&
|
||||
(pauseCtx->cursorSlot[PAUSE_QUEST] < QUEST_KOKIRI_EMERALD)) &&
|
||||
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) ||
|
||||
(pauseCtx->pageIndex == PAUSE_ITEM) ||
|
||||
((pauseCtx->pageIndex == PAUSE_EQUIP) && (pauseCtx->cursorX[PAUSE_EQUIP] != EQUIP_CURSOR_X_UPG))) {
|
||||
if (pauseCtx->namedItem != ITEM_SOLD_OUT) {
|
||||
pauseCtx->nameDisplayTimer++;
|
||||
if (pauseCtx->nameDisplayTimer > WREG(88)) {
|
||||
if (pauseCtx->nameDisplayTimer > R_PAUSE_NAME_DISPLAY_TIMER_MAX_) {
|
||||
pauseCtx->nameDisplayTimer = 0;
|
||||
}
|
||||
}
|
||||
|
@ -2233,11 +2254,11 @@ void KaleidoScope_UpdatePageSwitch(PlayState* play, Input* input) {
|
|||
if (pauseCtx->nextPageMode) {}
|
||||
|
||||
if (pauseCtx->pageSwitchTimer < ((4 * PAGE_SWITCH_NSTEPS) / 2)) {
|
||||
R_PAUSE_BUTTON_LEFT_X -= WREG(25) / WREG(6);
|
||||
R_PAUSE_BUTTON_RIGHT_X -= WREG(26) / WREG(6);
|
||||
R_PAUSE_BUTTON_LEFT_X -= R_PAUSE_BUTTON_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
R_PAUSE_BUTTON_RIGHT_X -= R_PAUSE_BUTTON_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
} else {
|
||||
R_PAUSE_BUTTON_LEFT_X += WREG(25) / WREG(6);
|
||||
R_PAUSE_BUTTON_RIGHT_X += WREG(26) / WREG(6);
|
||||
R_PAUSE_BUTTON_LEFT_X += R_PAUSE_BUTTON_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
R_PAUSE_BUTTON_RIGHT_X += R_PAUSE_BUTTON_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
}
|
||||
|
||||
pauseCtx->pageSwitchTimer += 4;
|
||||
|
@ -2250,19 +2271,19 @@ void KaleidoScope_UpdatePageSwitch(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 lookAt;
|
||||
Vec3f at;
|
||||
Vec3f up;
|
||||
|
||||
eye.x = x;
|
||||
eye.y = y;
|
||||
eye.z = z;
|
||||
lookAt.x = lookAt.y = lookAt.z = 0.0f;
|
||||
eye.x = eyeX;
|
||||
eye.y = eyeY;
|
||||
eye.z = eyeZ;
|
||||
at.x = at.y = at.z = 0.0f;
|
||||
up.x = up.z = 0.0f;
|
||||
up.y = 1.0f;
|
||||
|
||||
View_LookAt(&pauseCtx->view, &eye, &lookAt, &up);
|
||||
View_LookAt(&pauseCtx->view, &eye, &at, &up);
|
||||
View_Apply(&pauseCtx->view,
|
||||
VIEW_ALL | VIEW_FORCE_VIEWING | VIEW_FORCE_VIEWPORT | VIEW_FORCE_PROJECTION_PERSPECTIVE);
|
||||
}
|
||||
|
@ -2340,6 +2361,7 @@ static s16 sVtxPagePromptQuadsX[VTX_PAGE_PROMPT_QUADS] = {
|
|||
-58, // PROMPT_QUAD_CHOICE_YES
|
||||
10, // PROMPT_QUAD_CHOICE_NO
|
||||
};
|
||||
|
||||
static s16 sVtxPageItemQuadsWidth[CLAMP_MIN(VTX_PAGE_ITEM_QUADS, 1)] = { 0 };
|
||||
static s16 sVtxPageEquipQuadsWidth[CLAMP_MIN(VTX_PAGE_EQUIP_QUADS, 1)] = { 0 };
|
||||
static s16 sVtxPageMapDungeonQuadsWidth[VTX_PAGE_MAP_DUNGEON_QUADS] = {
|
||||
|
@ -2353,6 +2375,7 @@ static s16 sVtxPagePromptQuadsWidth[VTX_PAGE_PROMPT_QUADS] = {
|
|||
48, // PROMPT_QUAD_CHOICE_YES
|
||||
48, // PROMPT_QUAD_CHOICE_NO
|
||||
};
|
||||
|
||||
static s16 sVtxPageItemQuadsY[CLAMP_MIN(VTX_PAGE_ITEM_QUADS, 1)] = { 0 };
|
||||
static s16 sVtxPageEquipQuadsY[CLAMP_MIN(VTX_PAGE_EQUIP_QUADS, 1)] = { 0 };
|
||||
static s16 sVtxPageMapDungeonQuadsY[VTX_PAGE_MAP_DUNGEON_QUADS] = {
|
||||
|
@ -2400,6 +2423,7 @@ static s16 sVtxPagePromptQuadsY[VTX_PAGE_PROMPT_QUADS] = {
|
|||
-6, // PROMPT_QUAD_CHOICE_YES
|
||||
-6, // PROMPT_QUAD_CHOICE_NO
|
||||
};
|
||||
|
||||
static s16 sVtxPageItemQuadsHeight[CLAMP_MIN(VTX_PAGE_ITEM_QUADS, 1)] = { 0 };
|
||||
static s16 sVtxPageEquipQuadsHeight[CLAMP_MIN(VTX_PAGE_EQUIP_QUADS, 1)] = { 0 };
|
||||
static s16 sVtxPageMapDungeonQuadsHeight[VTX_PAGE_MAP_DUNGEON_QUADS] = {
|
||||
|
@ -3664,7 +3688,7 @@ void KaleidoScope_UpdateDungeonMap(PlayState* play) {
|
|||
void KaleidoScope_Update(PlayState* play) {
|
||||
static s16 sMainStateAfterSongPlayerPlayingDone = PAUSE_MAIN_STATE_IDLE;
|
||||
static s16 sDelayTimer = 10;
|
||||
static s16 D_8082B260 = 0;
|
||||
static s16 sTimer_ = 0;
|
||||
PauseContext* pauseCtx = &play->pauseCtx;
|
||||
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
||||
GameOverContext* gameOverCtx = &play->gameOverCtx;
|
||||
|
@ -3695,6 +3719,7 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
KaleidoScope_HandlePageToggles(pauseCtx, input);
|
||||
} else if ((pauseCtx->pageIndex == PAUSE_QUEST) && ((pauseCtx->mainState < PAUSE_MAIN_STATE_3) ||
|
||||
(pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PROMPT))) {
|
||||
|
||||
KaleidoScope_UpdateCursorVtx(play);
|
||||
}
|
||||
|
||||
|
@ -3771,6 +3796,7 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
case SCENE_SPIRIT_TEMPLE_BOSS:
|
||||
case SCENE_SHADOW_TEMPLE_BOSS:
|
||||
sInDungeonScene = true;
|
||||
|
||||
size2 = (uintptr_t)_icon_item_dungeon_staticSegmentRomEnd -
|
||||
(uintptr_t)_icon_item_dungeon_staticSegmentRomStart;
|
||||
PRINTF("icon_item_dungeon dungeon-size2=%x\n", size2);
|
||||
|
@ -3784,6 +3810,7 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
|
||||
default:
|
||||
sInDungeonScene = false;
|
||||
|
||||
size2 = (uintptr_t)_icon_item_field_staticSegmentRomEnd -
|
||||
(uintptr_t)_icon_item_field_staticSegmentRomStart;
|
||||
PRINTF("icon_item_field field-size2=%x\n", size2);
|
||||
|
@ -3827,6 +3854,8 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
|
||||
pauseCtx->nameSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemLangSegment + size);
|
||||
|
||||
// This printf may have been used to compute the size used on playerSegment at one point,
|
||||
// but is missing the size of icon_item_24_static
|
||||
PRINTF(T("サイズ=%x\n", "size=%x\n"), size2 + size1 + size0 + size);
|
||||
PRINTF("item_name I_N_PT=%x\n", 0x800);
|
||||
Interface_SetDoAction(play, DO_ACTION_DECIDE);
|
||||
|
@ -4088,13 +4117,13 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
}
|
||||
|
||||
pauseCtx->itemPagePitch = pauseCtx->equipPagePitch = pauseCtx->mapPagePitch = pauseCtx->questPagePitch -=
|
||||
160.0f / WREG(6);
|
||||
pauseCtx->infoPanelOffsetY += 40 / WREG(6);
|
||||
interfaceCtx->startAlpha += 255 / WREG(6);
|
||||
R_PAUSE_BUTTON_LEFT_X += WREG(25) / WREG(6);
|
||||
R_PAUSE_BUTTON_RIGHT_X += WREG(26) / WREG(6);
|
||||
XREG(5) += 150 / WREG(6);
|
||||
pauseCtx->alpha += (u16)(255 / (WREG(6) + WREG(4)));
|
||||
160.0f / R_PAUSE_UI_ANIMS_DURATION;
|
||||
pauseCtx->infoPanelOffsetY += 40 / R_PAUSE_UI_ANIMS_DURATION;
|
||||
interfaceCtx->startAlpha += 255 / R_PAUSE_UI_ANIMS_DURATION;
|
||||
R_PAUSE_BUTTON_LEFT_X += R_PAUSE_BUTTON_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
R_PAUSE_BUTTON_RIGHT_X += R_PAUSE_BUTTON_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
XREG(5) += 150 / R_PAUSE_UI_ANIMS_DURATION;
|
||||
pauseCtx->alpha += (u16)(255 / (R_PAUSE_UI_ANIMS_DURATION + R_PAUSE_UI_ANIM_ALPHA_ADD_DURATION));
|
||||
|
||||
if (pauseCtx->itemPagePitch == 0) {
|
||||
interfaceCtx->startAlpha = 255;
|
||||
|
@ -4106,7 +4135,7 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
break;
|
||||
|
||||
case PAUSE_STATE_OPENING_2:
|
||||
pauseCtx->alpha += (u16)(255 / (WREG(6) + WREG(4)));
|
||||
pauseCtx->alpha += (u16)(255 / (R_PAUSE_UI_ANIMS_DURATION + R_PAUSE_UI_ANIM_ALPHA_ADD_DURATION));
|
||||
KaleidoScope_UpdateOpening(play);
|
||||
|
||||
if (pauseCtx->state == PAUSE_STATE_MAIN) {
|
||||
|
@ -4185,6 +4214,7 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
pauseCtx->state = PAUSE_STATE_SAVE_PROMPT;
|
||||
} else if (pauseCtx->ocarinaStaff->state == pauseCtx->ocarinaSongIdx) {
|
||||
// The player successfully played the song
|
||||
|
||||
SFX_PLAY_CENTERED(NA_SE_SY_TRE_BOX_APPEAR);
|
||||
|
||||
sMainStateAfterSongPlayerPlayingDone = PAUSE_MAIN_STATE_IDLE;
|
||||
|
@ -4192,6 +4222,7 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
pauseCtx->mainState = PAUSE_MAIN_STATE_SONG_PROMPT_DONE;
|
||||
} else if (pauseCtx->ocarinaStaff->state == 0xFF) {
|
||||
// The player failed to play the song
|
||||
|
||||
SFX_PLAY_CENTERED(NA_SE_SY_OCARINA_ERROR);
|
||||
|
||||
sMainStateAfterSongPlayerPlayingDone = PAUSE_MAIN_STATE_SONG_PROMPT_INIT;
|
||||
|
@ -4249,9 +4280,9 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
case PAUSE_STATE_SAVE_PROMPT:
|
||||
switch (pauseCtx->savePromptState) {
|
||||
case PAUSE_SAVE_PROMPT_STATE_APPEARING:
|
||||
pauseCtx->promptPitch -= 314.0f / WREG(6);
|
||||
R_PAUSE_BUTTON_LEFT_X -= WREG(25) / WREG(6);
|
||||
R_PAUSE_BUTTON_RIGHT_X -= WREG(26) / WREG(6);
|
||||
pauseCtx->promptPitch -= 314.0f / R_PAUSE_UI_ANIMS_DURATION;
|
||||
R_PAUSE_BUTTON_LEFT_X -= R_PAUSE_BUTTON_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
R_PAUSE_BUTTON_RIGHT_X -= R_PAUSE_BUTTON_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
|
||||
if (pauseCtx->promptPitch <= -628.0f) {
|
||||
pauseCtx->promptPitch = -628.0f;
|
||||
|
@ -4263,10 +4294,12 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
if (CHECK_BTN_ALL(input->press.button, BTN_A)) {
|
||||
if (pauseCtx->promptChoice != 0) {
|
||||
Interface_SetDoAction(play, DO_ACTION_NONE);
|
||||
|
||||
gSaveContext.buttonStatus[0] = gSaveContext.buttonStatus[1] = gSaveContext.buttonStatus[2] =
|
||||
gSaveContext.buttonStatus[3] = BTN_ENABLED;
|
||||
gSaveContext.hudVisibilityMode = HUD_VISIBILITY_NO_CHANGE;
|
||||
Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_ALL);
|
||||
|
||||
pauseCtx->savePromptState = PAUSE_SAVE_PROMPT_STATE_CLOSING;
|
||||
R_PAUSE_PAGES_Y_ORIGIN_2 = PAUSE_PAGES_Y_ORIGIN_2_LOWER;
|
||||
YREG(8) = pauseCtx->promptPitch;
|
||||
|
@ -4276,9 +4309,11 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
#endif
|
||||
} else {
|
||||
SFX_PLAY_CENTERED(NA_SE_SY_PIECE_OF_HEART);
|
||||
|
||||
Play_SaveSceneFlags(play);
|
||||
gSaveContext.save.info.playerData.savedSceneId = play->sceneId;
|
||||
Sram_WriteSave(&play->sramCtx);
|
||||
|
||||
pauseCtx->savePromptState = PAUSE_SAVE_PROMPT_STATE_SAVED;
|
||||
#if !PLATFORM_GC
|
||||
sDelayTimer = 90;
|
||||
|
@ -4288,11 +4323,14 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_START) ||
|
||||
CHECK_BTN_ALL(input->press.button, BTN_B)) {
|
||||
|
||||
Interface_SetDoAction(play, DO_ACTION_NONE);
|
||||
|
||||
pauseCtx->savePromptState = PAUSE_SAVE_PROMPT_STATE_CLOSING;
|
||||
R_PAUSE_PAGES_Y_ORIGIN_2 = PAUSE_PAGES_Y_ORIGIN_2_LOWER;
|
||||
YREG(8) = pauseCtx->promptPitch;
|
||||
func_800F64E0(0);
|
||||
|
||||
gSaveContext.buttonStatus[0] = gSaveContext.buttonStatus[1] = gSaveContext.buttonStatus[2] =
|
||||
gSaveContext.buttonStatus[3] = BTN_ENABLED;
|
||||
gSaveContext.hudVisibilityMode = HUD_VISIBILITY_NO_CHANGE;
|
||||
|
@ -4306,11 +4344,14 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
case PAUSE_SAVE_PROMPT_STATE_SAVED:
|
||||
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) || (--sDelayTimer == 0)) {
|
||||
|
||||
Interface_SetDoAction(play, DO_ACTION_NONE);
|
||||
|
||||
gSaveContext.buttonStatus[0] = gSaveContext.buttonStatus[1] = gSaveContext.buttonStatus[2] =
|
||||
gSaveContext.buttonStatus[3] = BTN_ENABLED;
|
||||
gSaveContext.hudVisibilityMode = HUD_VISIBILITY_NO_CHANGE;
|
||||
Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_ALL);
|
||||
|
||||
pauseCtx->savePromptState = PAUSE_SAVE_PROMPT_STATE_CLOSING_AFTER_SAVED;
|
||||
R_PAUSE_PAGES_Y_ORIGIN_2 = PAUSE_PAGES_Y_ORIGIN_2_LOWER;
|
||||
YREG(8) = pauseCtx->promptPitch;
|
||||
|
@ -4320,9 +4361,9 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
|
||||
case PAUSE_SAVE_PROMPT_STATE_RETURN_TO_MENU:
|
||||
case PAUSE_SAVE_PROMPT_STATE_RETURN_TO_MENU_2:
|
||||
pauseCtx->promptPitch += 314.0f / WREG(6);
|
||||
R_PAUSE_BUTTON_LEFT_X += WREG(25) / WREG(6);
|
||||
R_PAUSE_BUTTON_RIGHT_X += WREG(26) / WREG(6);
|
||||
pauseCtx->promptPitch += 314.0f / R_PAUSE_UI_ANIMS_DURATION;
|
||||
R_PAUSE_BUTTON_LEFT_X += R_PAUSE_BUTTON_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
R_PAUSE_BUTTON_RIGHT_X += R_PAUSE_BUTTON_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
|
||||
if (pauseCtx->promptPitch >= -314.0f) {
|
||||
pauseCtx->state = PAUSE_STATE_MAIN;
|
||||
|
@ -4337,13 +4378,13 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
case PAUSE_SAVE_PROMPT_STATE_CLOSING_AFTER_SAVED:
|
||||
if (pauseCtx->promptPitch != (YREG(8) + 160.0f)) {
|
||||
pauseCtx->itemPagePitch = pauseCtx->equipPagePitch = pauseCtx->mapPagePitch =
|
||||
pauseCtx->questPagePitch += 160.0f / WREG(6);
|
||||
pauseCtx->promptPitch += 160.0f / WREG(6);
|
||||
pauseCtx->infoPanelOffsetY -= 40 / WREG(6);
|
||||
R_PAUSE_BUTTON_LEFT_X -= WREG(25) / WREG(6);
|
||||
R_PAUSE_BUTTON_RIGHT_X -= WREG(26) / WREG(6);
|
||||
XREG(5) -= 150 / WREG(6);
|
||||
pauseCtx->alpha -= (u16)(255 / WREG(6));
|
||||
pauseCtx->questPagePitch += 160.0f / R_PAUSE_UI_ANIMS_DURATION;
|
||||
pauseCtx->promptPitch += 160.0f / R_PAUSE_UI_ANIMS_DURATION;
|
||||
pauseCtx->infoPanelOffsetY -= 40 / R_PAUSE_UI_ANIMS_DURATION;
|
||||
R_PAUSE_BUTTON_LEFT_X -= R_PAUSE_BUTTON_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
R_PAUSE_BUTTON_RIGHT_X -= R_PAUSE_BUTTON_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
XREG(5) -= 150 / R_PAUSE_UI_ANIMS_DURATION;
|
||||
pauseCtx->alpha -= (u16)(255 / R_PAUSE_UI_ANIMS_DURATION);
|
||||
if (pauseCtx->promptPitch == (YREG(8) + 160.0f)) {
|
||||
pauseCtx->alpha = 0;
|
||||
}
|
||||
|
@ -4431,17 +4472,17 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
D_8082AB9C = 30;
|
||||
D_8082ABA0 = 0;
|
||||
D_8082ABA4 = 0;
|
||||
D_8082B260 = 30;
|
||||
sTimer_ = 30;
|
||||
VREG(88) = 98;
|
||||
pauseCtx->promptChoice = 0;
|
||||
pauseCtx->state++; // PAUSE_STATE_GAME_OVER_SHOW_MESSAGE
|
||||
break;
|
||||
|
||||
case PAUSE_STATE_GAME_OVER_SHOW_MESSAGE:
|
||||
stepR = ABS(D_8082AB8C - 30) / D_8082B260;
|
||||
stepG = ABS(D_8082AB90) / D_8082B260;
|
||||
stepB = ABS(D_8082AB94) / D_8082B260;
|
||||
stepA = ABS(D_8082AB98 - 255) / D_8082B260;
|
||||
stepR = ABS(D_8082AB8C - 30) / sTimer_;
|
||||
stepG = ABS(D_8082AB90) / sTimer_;
|
||||
stepB = ABS(D_8082AB94) / sTimer_;
|
||||
stepA = ABS(D_8082AB98 - 255) / sTimer_;
|
||||
if (D_8082AB8C >= 30) {
|
||||
D_8082AB8C -= stepR;
|
||||
} else {
|
||||
|
@ -4463,9 +4504,9 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
D_8082AB98 += stepA;
|
||||
}
|
||||
|
||||
stepR = ABS(D_8082AB9C - 255) / D_8082B260;
|
||||
stepG = ABS(D_8082ABA0 - 130) / D_8082B260;
|
||||
stepB = ABS(D_8082ABA4) / D_8082B260;
|
||||
stepR = ABS(D_8082AB9C - 255) / sTimer_;
|
||||
stepG = ABS(D_8082ABA0 - 130) / sTimer_;
|
||||
stepB = ABS(D_8082ABA4) / sTimer_;
|
||||
if (D_8082AB9C >= 255) {
|
||||
D_8082AB9C -= stepR;
|
||||
} else {
|
||||
|
@ -4482,8 +4523,8 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
D_8082ABA4 += stepB;
|
||||
}
|
||||
|
||||
D_8082B260--;
|
||||
if (D_8082B260 == 0) {
|
||||
sTimer_--;
|
||||
if (sTimer_ == 0) {
|
||||
D_8082AB8C = 30;
|
||||
D_8082AB90 = 0;
|
||||
D_8082AB94 = 0;
|
||||
|
@ -4492,29 +4533,29 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
D_8082AB9C = 255;
|
||||
D_8082ABA0 = 130;
|
||||
D_8082ABA4 = 0;
|
||||
D_8082B260 = 40;
|
||||
sTimer_ = 40;
|
||||
|
||||
pauseCtx->state++; // PAUSE_STATE_GAME_OVER_WINDOW_DELAY
|
||||
}
|
||||
break;
|
||||
|
||||
case PAUSE_STATE_GAME_OVER_WINDOW_DELAY:
|
||||
D_8082B260--;
|
||||
if (D_8082B260 == 0) {
|
||||
sTimer_--;
|
||||
if (sTimer_ == 0) {
|
||||
pauseCtx->state = PAUSE_STATE_GAME_OVER_SHOW_WINDOW;
|
||||
}
|
||||
break;
|
||||
|
||||
case PAUSE_STATE_GAME_OVER_SHOW_WINDOW:
|
||||
pauseCtx->itemPagePitch = pauseCtx->equipPagePitch = pauseCtx->mapPagePitch = pauseCtx->questPagePitch =
|
||||
pauseCtx->promptPitch -= 160.0f / WREG(6);
|
||||
pauseCtx->infoPanelOffsetY += 40 / WREG(6);
|
||||
interfaceCtx->startAlpha += 255 / WREG(6);
|
||||
pauseCtx->promptPitch -= 160.0f / R_PAUSE_UI_ANIMS_DURATION;
|
||||
pauseCtx->infoPanelOffsetY += 40 / R_PAUSE_UI_ANIMS_DURATION;
|
||||
interfaceCtx->startAlpha += 255 / R_PAUSE_UI_ANIMS_DURATION;
|
||||
VREG(88) -= 3;
|
||||
R_PAUSE_BUTTON_LEFT_X += WREG(25) / WREG(6);
|
||||
R_PAUSE_BUTTON_RIGHT_X += WREG(26) / WREG(6);
|
||||
XREG(5) += 150 / WREG(6);
|
||||
pauseCtx->alpha += (u16)(255 / (WREG(6) + WREG(4)));
|
||||
R_PAUSE_BUTTON_LEFT_X += R_PAUSE_BUTTON_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
R_PAUSE_BUTTON_RIGHT_X += R_PAUSE_BUTTON_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
XREG(5) += 150 / R_PAUSE_UI_ANIMS_DURATION;
|
||||
pauseCtx->alpha += (u16)(255 / (R_PAUSE_UI_ANIMS_DURATION + R_PAUSE_UI_ANIM_ALPHA_ADD_DURATION));
|
||||
if (pauseCtx->promptPitch < -628.0f) {
|
||||
pauseCtx->promptPitch = -628.0f;
|
||||
interfaceCtx->startAlpha = 255;
|
||||
|
@ -4676,23 +4717,21 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
case PAUSE_STATE_CLOSING:
|
||||
if (pauseCtx->itemPagePitch != 160.0f) {
|
||||
pauseCtx->itemPagePitch = pauseCtx->equipPagePitch = pauseCtx->mapPagePitch =
|
||||
pauseCtx->questPagePitch += 160.0f / WREG(6);
|
||||
pauseCtx->infoPanelOffsetY -= 40 / WREG(6);
|
||||
interfaceCtx->startAlpha -= 255 / WREG(6);
|
||||
R_PAUSE_BUTTON_LEFT_X -= WREG(25) / WREG(6);
|
||||
R_PAUSE_BUTTON_RIGHT_X -= WREG(26) / WREG(6);
|
||||
XREG(5) -= 150 / WREG(6);
|
||||
pauseCtx->alpha -= (u16)(255 / WREG(6));
|
||||
pauseCtx->questPagePitch += 160.0f / R_PAUSE_UI_ANIMS_DURATION;
|
||||
pauseCtx->infoPanelOffsetY -= 40 / R_PAUSE_UI_ANIMS_DURATION;
|
||||
interfaceCtx->startAlpha -= 255 / R_PAUSE_UI_ANIMS_DURATION;
|
||||
R_PAUSE_BUTTON_LEFT_X -= R_PAUSE_BUTTON_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
R_PAUSE_BUTTON_RIGHT_X -= R_PAUSE_BUTTON_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION;
|
||||
XREG(5) -= 150 / R_PAUSE_UI_ANIMS_DURATION;
|
||||
pauseCtx->alpha -= (u16)(255 / R_PAUSE_UI_ANIMS_DURATION);
|
||||
if (pauseCtx->itemPagePitch == 160.0f) {
|
||||
pauseCtx->alpha = 0;
|
||||
}
|
||||
} else {
|
||||
pauseCtx->debugState = PAUSE_DEBUG_STATE_CLOSED;
|
||||
pauseCtx->state = PAUSE_STATE_RESUME_GAMEPLAY;
|
||||
pauseCtx->questPagePitch = 160.0f;
|
||||
pauseCtx->mapPagePitch = 160.0f;
|
||||
pauseCtx->equipPagePitch = 160.0f;
|
||||
pauseCtx->itemPagePitch = 160.0f;
|
||||
pauseCtx->itemPagePitch = pauseCtx->equipPagePitch = pauseCtx->mapPagePitch = pauseCtx->questPagePitch =
|
||||
160.0f;
|
||||
pauseCtx->namedItem = PAUSE_ITEM_NONE;
|
||||
interfaceCtx->startAlpha = 0;
|
||||
}
|
||||
|
@ -4734,13 +4773,17 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
gSaveContext.buttonStatus[2] = sSavedButtonStatus[2];
|
||||
gSaveContext.buttonStatus[3] = sSavedButtonStatus[3];
|
||||
gSaveContext.buttonStatus[4] = sSavedButtonStatus[4];
|
||||
|
||||
interfaceCtx->unk_1FA = interfaceCtx->unk_1FC = 0;
|
||||
|
||||
PRINTF_COLOR_YELLOW();
|
||||
PRINTF("i=%d LAST_TIME_TYPE=%d\n", i, gSaveContext.prevHudVisibilityMode);
|
||||
gSaveContext.hudVisibilityMode = HUD_VISIBILITY_NO_CHANGE;
|
||||
Interface_ChangeHudVisibilityMode(gSaveContext.prevHudVisibilityMode);
|
||||
|
||||
player->talkActor = NULL;
|
||||
Player_SetEquipmentData(play, player);
|
||||
|
||||
PRINTF_RST();
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue