1
0
mirror of https://github.com/blawar/ooot.git synced 2024-07-02 17:13:34 +00:00

fixed #121 (again)

This commit is contained in:
Blake Warner 2022-02-20 17:43:54 -05:00
parent 3be9e0e35a
commit e7f868af06
3 changed files with 28 additions and 41 deletions

View File

@ -103,8 +103,10 @@ struct PauseContext {
/* 0x024E */ u16 equipTargetItem; // "sl_item_no" /* 0x024E */ u16 equipTargetItem; // "sl_item_no"
/* 0x0250 */ u16 equipTargetSlot; // "sl_number" /* 0x0250 */ u16 equipTargetSlot; // "sl_number"
/* 0x0252 */ u16 equipTargetCBtn; /* 0x0252 */ u16 equipTargetCBtn;
/* 0x0254 */ s16 equipAnimX; /* 0x0254 */ float equipAnimX;
/* 0x0256 */ s16 equipAnimY; /* 0x0256 */ float equipAnimY;
float equipAnimStartX;
float equipAnimStartY;
/* 0x0258 */ s16 equipAnimAlpha; /* 0x0258 */ s16 equipAnimAlpha;
/* 0x025A */ s16 infoPanelOffsetY; /* 0x025A */ s16 infoPanelOffsetY;
/* 0x025C */ u16 nameDisplayTimer; /* 0x025C */ u16 nameDisplayTimer;

View File

@ -3313,12 +3313,10 @@ void Interface_Draw(GlobalContext* globalCtx) {
gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATERGBA_PRIM, G_CC_MODULATERGBA_PRIM); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATERGBA_PRIM, G_CC_MODULATERGBA_PRIM);
gSPMatrix(OVERLAY_DISP++, &gMtxClear, G_MTX_MODELVIEW | G_MTX_LOAD); gSPMatrix(OVERLAY_DISP++, &gMtxClear, G_MTX_MODELVIEW | G_MTX_LOAD);
pauseCtx->cursorVtx[svar3].v.ob[0] = pauseCtx->cursorVtx[18].v.ob[0] = svar2 = pauseCtx->equipAnimX / 10; pauseCtx->cursorVtx[svar3].v.ob[0] = pauseCtx->cursorVtx[18].v.ob[0] = svar2 = pauseCtx->equipAnimX;
pauseCtx->cursorVtx[17].v.ob[0] = pauseCtx->cursorVtx[19].v.ob[0] = svar2 = pauseCtx->cursorVtx[17].v.ob[0] = pauseCtx->cursorVtx[19].v.ob[0] = svar2 = pauseCtx->cursorVtx[svar3].v.ob[0] + WREG(90) / 10;
pauseCtx->cursorVtx[svar3].v.ob[0] + WREG(90) / 10; pauseCtx->cursorVtx[svar3].v.ob[1] = pauseCtx->cursorVtx[17].v.ob[1] = svar2 = pauseCtx->equipAnimY;
pauseCtx->cursorVtx[svar3].v.ob[1] = pauseCtx->cursorVtx[17].v.ob[1] = svar2 = pauseCtx->equipAnimY / 10; pauseCtx->cursorVtx[18].v.ob[1] = pauseCtx->cursorVtx[19].v.ob[1] = svar2 = pauseCtx->cursorVtx[svar3].v.ob[1] - WREG(90) / 10;
pauseCtx->cursorVtx[18].v.ob[1] = pauseCtx->cursorVtx[19].v.ob[1] = svar2 =
pauseCtx->cursorVtx[svar3].v.ob[1] - WREG(90) / 10;
if (pauseCtx->equipTargetItem < 0xBF) { if (pauseCtx->equipTargetItem < 0xBF) {
// Normal Equip (icon goes from the inventory slot to the C button when equipping it) // Normal Equip (icon goes from the inventory slot to the C button when equipping it)

View File

@ -366,8 +366,8 @@ void KaleidoScope_DrawItemSelect(GlobalContext* globalCtx) {
pauseCtx->equipTargetItem = cursorItem; pauseCtx->equipTargetItem = cursorItem;
pauseCtx->equipTargetSlot = cursorSlot; pauseCtx->equipTargetSlot = cursorSlot;
pauseCtx->unk_1E4 = 3; pauseCtx->unk_1E4 = 3;
pauseCtx->equipAnimX = pauseCtx->itemVtx[index].v.ob[0] * 10; pauseCtx->equipAnimStartX = pauseCtx->equipAnimX = pauseCtx->itemVtx[index].v.ob[0];
pauseCtx->equipAnimY = pauseCtx->itemVtx[index].v.ob[1] * 10; pauseCtx->equipAnimStartY = pauseCtx->equipAnimY = pauseCtx->itemVtx[index].v.ob[1];
pauseCtx->equipAnimAlpha = 255; pauseCtx->equipAnimAlpha = 255;
sEquipAnimTimer = 0; sEquipAnimTimer = 0;
sEquipState = 3; sEquipState = 3;
@ -493,15 +493,15 @@ void KaleidoScope_DrawItemSelect(GlobalContext* globalCtx) {
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_kaleido_item.c", 516); CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_kaleido_item.c", 516);
} }
static s16 sCButtonPosX[] = { 660, 900, 1140 }; static float sCButtonPosX[] = { 66.0f, 90.0f, 114.0f };
static s16 sCButtonPosY[] = { 1100, 920, 1100 }; static float sCButtonPosY[] = { 110.0f, 92.0f, 110.0f };
void KaleidoScope_UpdateItemEquip(GlobalContext* globalCtx) { void KaleidoScope_UpdateItemEquip(GlobalContext* globalCtx) {
static s16 D_8082A488 = 0; static s16 D_8082A488 = 0;
PauseContext* pauseCtx = &globalCtx->pauseCtx; PauseContext* pauseCtx = &globalCtx->pauseCtx;
Vtx* bowItemVtx; Vtx* bowItemVtx;
u16 offsetX; float targetX;
u16 offsetY; float targetY;
if (sEquipState == 0) { if (sEquipState == 0) {
pauseCtx->equipAnimAlpha += 14; pauseCtx->equipAnimAlpha += 14;
@ -530,11 +530,11 @@ void KaleidoScope_UpdateItemEquip(GlobalContext* globalCtx) {
if (sEquipState == 1) { if (sEquipState == 1) {
bowItemVtx = &pauseCtx->itemVtx[12]; bowItemVtx = &pauseCtx->itemVtx[12];
offsetX = (u16)(ABS((s16)pauseCtx->equipAnimX - bowItemVtx->v.ob[0] * 10) / sEquipMoveTimer); targetX = bowItemVtx->v.ob[0];
offsetY = (u16)(ABS((s16)pauseCtx->equipAnimY - bowItemVtx->v.ob[1] * 10) / sEquipMoveTimer); targetY = bowItemVtx->v.ob[1];
} else { } else {
offsetX = (u16)(ABS((s16)pauseCtx->equipAnimX - (sCButtonPosX[pauseCtx->equipTargetCBtn] * gfx_ar_ratio())) / sEquipMoveTimer); targetX = sCButtonPosX[pauseCtx->equipTargetCBtn] * gfx_ar_ratio();
offsetY = (u16)(ABS((s16)pauseCtx->equipAnimY - (sCButtonPosY[pauseCtx->equipTargetCBtn])) / sEquipMoveTimer); targetY = sCButtonPosY[pauseCtx->equipTargetCBtn];
} }
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipAnimAlpha < 254)) { if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipAnimAlpha < 254)) {
@ -548,34 +548,21 @@ void KaleidoScope_UpdateItemEquip(GlobalContext* globalCtx) {
if (sEquipAnimTimer == 0) { if (sEquipAnimTimer == 0) {
WREG(90) -= (s16)(WREG(87) / sEquipMoveTimer); WREG(90) -= (s16)(WREG(87) / sEquipMoveTimer);
WREG(87) -= (s16)(WREG(87) / sEquipMoveTimer); WREG(87) -= (s16)(WREG(87) / sEquipMoveTimer);
float pos = 1.0f - ((float)sEquipMoveTimer / 10.0f);
if (sEquipState == 1) { if (sEquipState == 1) {
if (pauseCtx->equipAnimX >= (pauseCtx->itemVtx[12].v.ob[0] * 10) * gfx_ar_ratio()) { targetX = pauseCtx->itemVtx[12].v.ob[0];
pauseCtx->equipAnimX -= offsetX; targetY = pauseCtx->itemVtx[12].v.ob[1];
} else {
pauseCtx->equipAnimX += offsetX;
}
if (pauseCtx->equipAnimY >= (pauseCtx->itemVtx[12].v.ob[1] * 10)) {
pauseCtx->equipAnimY -= offsetY;
} else {
pauseCtx->equipAnimY += offsetY;
}
} else { } else {
if (pauseCtx->equipAnimX >= sCButtonPosX[pauseCtx->equipTargetCBtn] * gfx_ar_ratio()) { targetX = sCButtonPosX[pauseCtx->equipTargetCBtn];
pauseCtx->equipAnimX -= offsetX; targetY = sCButtonPosY[pauseCtx->equipTargetCBtn];
} else {
pauseCtx->equipAnimX += offsetX;
}
if (pauseCtx->equipAnimY >= sCButtonPosY[pauseCtx->equipTargetCBtn]) {
pauseCtx->equipAnimY -= offsetY;
} else {
pauseCtx->equipAnimY += offsetY;
}
} }
pauseCtx->equipAnimX = F32_LERP(pauseCtx->equipAnimStartX, GFX_ALIGN_RIGHT_F(targetX), pos);
pauseCtx->equipAnimY = F32_LERP(pauseCtx->equipAnimStartY, targetY, pos);
sEquipMoveTimer--; sEquipMoveTimer--;
if (sEquipMoveTimer == 0) { if (sEquipMoveTimer == 0) {