mirror of
https://github.com/Mr-Wiseguy/Zelda64Recomp.git
synced 2024-11-22 20:59:21 +01:00
Added origin adjustment for item equip animation in pause screen, disabled some WIP patches
This commit is contained in:
parent
1a6af79048
commit
899bbb205e
@ -1,8 +1,8 @@
|
|||||||
#include "patches.h"
|
#include "patches.h"
|
||||||
#include "input.h"
|
#include "input.h"
|
||||||
#include "z64quake.h"
|
#include "z64quake.h"
|
||||||
|
#if 0
|
||||||
RecompCameraMode recomp_camera_mode = RECOMP_CAMERA_DUALANALOG;
|
RecompCameraMode recomp_camera_mode = RECOMP_CAMERA_NORMAL;
|
||||||
|
|
||||||
VecGeo recomp_camera_pos = { .r = 66.0f, .pitch = 0, .yaw = 0 };
|
VecGeo recomp_camera_pos = { .r = 66.0f, .pitch = 0, .yaw = 0 };
|
||||||
|
|
||||||
@ -272,11 +272,6 @@ Vec3s Camera_Update(Camera* camera) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Call the camera update function
|
// Call the camera update function
|
||||||
recomp_printf(
|
|
||||||
"Camera:\n"
|
|
||||||
" setting: %d\n"
|
|
||||||
" mode: %d\n"
|
|
||||||
" funcId: %d\n", camera->setting, camera->mode, sCameraSettings[camera->setting].cameraModes[camera->mode].funcId);
|
|
||||||
sCameraUpdateHandlers[sCameraSettings[camera->setting].cameraModes[camera->mode].funcId](camera);
|
sCameraUpdateHandlers[sCameraSettings[camera->setting].cameraModes[camera->mode].funcId](camera);
|
||||||
|
|
||||||
// @recomp
|
// @recomp
|
||||||
@ -411,8 +406,6 @@ s32 Camera_Normal1(Camera* camera) {
|
|||||||
f32 phi_f2;
|
f32 phi_f2;
|
||||||
f32 rand;
|
f32 rand;
|
||||||
|
|
||||||
recomp_printf("Camera_Normal1\n");
|
|
||||||
|
|
||||||
roData->unk_00 = GET_NEXT_RO_DATA(values) * (sp88 * 0.01f * (0.8f - ((68.0f / sp88) * -0.2f)));
|
roData->unk_00 = GET_NEXT_RO_DATA(values) * (sp88 * 0.01f * (0.8f - ((68.0f / sp88) * -0.2f)));
|
||||||
roData->unk_04 = GET_NEXT_RO_DATA(values) * (sp88 * 0.01f * (0.8f - ((68.0f / sp88) * -0.2f)));
|
roData->unk_04 = GET_NEXT_RO_DATA(values) * (sp88 * 0.01f * (0.8f - ((68.0f / sp88) * -0.2f)));
|
||||||
roData->unk_08 = GET_NEXT_RO_DATA(values) * (sp88 * 0.01f * (0.8f - ((68.0f / sp88) * -0.2f)));
|
roData->unk_08 = GET_NEXT_RO_DATA(values) * (sp88 * 0.01f * (0.8f - ((68.0f / sp88) * -0.2f)));
|
||||||
@ -790,3 +783,4 @@ s32 Camera_Normal1(Camera* camera) {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#endif // #if 0
|
||||||
|
@ -29,6 +29,49 @@ s32 func_800BA2FC(PlayState* play, Actor* actor, Vec3f* projectedPos, f32 projec
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disable frustum culling for bush spawning
|
||||||
|
// s32 EnWood02_SpawnZoneCheck(EnWood02* this, PlayState* play, Vec3f* arg2) {
|
||||||
|
// f32 phi_f12;
|
||||||
|
|
||||||
|
// SkinMatrix_Vec3fMtxFMultXYZW(&play->viewProjectionMtxF, arg2, &this->actor.projectedPos, &this->actor.projectedW);
|
||||||
|
|
||||||
|
// if (this->actor.projectedW == 0.0f) {
|
||||||
|
// phi_f12 = 1000.0f;
|
||||||
|
// } else {
|
||||||
|
// phi_f12 = fabsf(1.0f / this->actor.projectedW);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (((-this->actor.uncullZoneScale < this->actor.projectedPos.z) &&
|
||||||
|
// (this->actor.projectedPos.z < (this->actor.uncullZoneForward + this->actor.uncullZoneScale)) /* &&
|
||||||
|
// (((fabsf(this->actor.projectedPos.x) - this->actor.uncullZoneScale) * phi_f12) < 1.0f)) &&
|
||||||
|
// (((this->actor.projectedPos.y + this->actor.uncullZoneDownward) * phi_f12) > -1.0f) &&
|
||||||
|
// (((this->actor.projectedPos.y - this->actor.uncullZoneScale) * phi_f12) < 1.0f */)) {
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Disable frustum culling for grass
|
||||||
|
s32 func_809A9110(PlayState* play, Vec3f* pos) {
|
||||||
|
f32 w;
|
||||||
|
Vec3f projectedPos;
|
||||||
|
|
||||||
|
SkinMatrix_Vec3fMtxFMultXYZW(&play->viewProjectionMtxF, pos, &projectedPos, &w);
|
||||||
|
|
||||||
|
if ((play->projectionMtxFDiagonal.z * -130.13191f) < projectedPos.z) {
|
||||||
|
if (w < 1.0f) {
|
||||||
|
w = 1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (((fabsf(projectedPos.x) - (130.13191f * play->projectionMtxFDiagonal.x)) < w) &&
|
||||||
|
// ((fabsf(projectedPos.y) - (130.13191f * play->projectionMtxFDiagonal.y)) < w)) {
|
||||||
|
return true;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Override LOD to 0
|
// Override LOD to 0
|
||||||
void Player_DrawGameplay(PlayState* play, Player* this, s32 lod, Gfx* cullDList,
|
void Player_DrawGameplay(PlayState* play, Player* this, s32 lod, Gfx* cullDList,
|
||||||
OverrideLimbDrawFlex overrideLimbDraw) {
|
OverrideLimbDrawFlex overrideLimbDraw) {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "patches.h"
|
#include "patches.h"
|
||||||
#include "input.h"
|
#include "input.h"
|
||||||
|
#if 0
|
||||||
u32 sPlayerItemButtons[] = {
|
u32 sPlayerItemButtons[] = {
|
||||||
BTN_B,
|
BTN_B,
|
||||||
BTN_CLEFT,
|
BTN_CLEFT,
|
||||||
@ -154,3 +154,4 @@ ItemId Player_GetItemOnButton(PlayState* play, Player* player, EquipSlot slot) {
|
|||||||
return C_BTN_ITEM(EQUIP_SLOT_C_RIGHT);
|
return C_BTN_ITEM(EQUIP_SLOT_C_RIGHT);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
#endif // #if 0
|
||||||
|
@ -389,6 +389,39 @@ void Interface_Draw(PlayState* play) {
|
|||||||
|
|
||||||
Interface_DrawAButton(play);
|
Interface_DrawAButton(play);
|
||||||
|
|
||||||
|
// @recomp Move the item being equipped from the center of the screen to the right edge as the timer counts down
|
||||||
|
if (gKaleidoMgrOverlayTable[0].loadedRamAddr != NULL) {
|
||||||
|
// These are overlay symbols, so their addresses need to be offset to get their actual loaded vram address.
|
||||||
|
// TODO remove this once the recompiler is able to handle overlay symbols automatically for patch functions.
|
||||||
|
extern s16 sEquipAnimTimer;
|
||||||
|
extern s16 sMaskEquipAnimTimer;
|
||||||
|
extern s16 sEquipState;
|
||||||
|
extern s16 sMaskEquipState;
|
||||||
|
s16 equip_timer = *(s16*)((u8*)&sEquipAnimTimer + gKaleidoMgrOverlayTable[0].offset);
|
||||||
|
s16 mask_equip_timer = *(s16*)((u8*)&sMaskEquipAnimTimer + gKaleidoMgrOverlayTable[0].offset);
|
||||||
|
s16 equip_state = *(s16*)((u8*)&sEquipState + gKaleidoMgrOverlayTable[0].offset);
|
||||||
|
s16 mask_equip_state = *(s16*)((u8*)&sMaskEquipState + gKaleidoMgrOverlayTable[0].offset);
|
||||||
|
|
||||||
|
s16 timer = MIN(equip_timer, mask_equip_timer);
|
||||||
|
s32 max_timer = 10;
|
||||||
|
|
||||||
|
// Prevent the timer from being used to calculate the origin when an arrow effect is taking place.
|
||||||
|
if (equip_timer < 10 && equip_state != EQUIP_STATE_MOVE_TO_C_BTN) {
|
||||||
|
timer = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adjust the max timer value if a magic arrow is being equipped.
|
||||||
|
if ((pauseCtx->equipTargetItem == ITEM_BOW_FIRE) ||
|
||||||
|
(pauseCtx->equipTargetItem == ITEM_BOW_ICE) ||
|
||||||
|
(pauseCtx->equipTargetItem == ITEM_BOW_LIGHT)) {
|
||||||
|
max_timer = 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 origin = (G_EX_ORIGIN_CENTER - G_EX_ORIGIN_RIGHT) * (timer - 1) / (max_timer - 1) + G_EX_ORIGIN_RIGHT;
|
||||||
|
s32 offset = (SCREEN_WIDTH / 2) * (timer - 1) / (max_timer - 1) - SCREEN_WIDTH;
|
||||||
|
gEXSetRectAlign(OVERLAY_DISP++, origin, origin, offset * 4, 0, offset * 4, 0);
|
||||||
|
gEXSetViewportAlign(OVERLAY_DISP++, origin, offset * 4, 0);
|
||||||
|
}
|
||||||
Interface_DrawPauseMenuEquippingIcons(play);
|
Interface_DrawPauseMenuEquippingIcons(play);
|
||||||
|
|
||||||
// Draw either the minigame countdown or the three-day clock
|
// Draw either the minigame countdown or the three-day clock
|
||||||
|
Loading…
Reference in New Issue
Block a user