From fb8fe0a25b146fb2bcd1f06f7e638db4e8d78f8c Mon Sep 17 00:00:00 2001 From: "LT_Schmiddy (Alex Schmid)" Date: Sat, 16 Nov 2024 20:17:54 -0500 Subject: [PATCH] Add menu option for moving in first person. --- assets/config_menu/general.rml | 12 ++++++++++++ include/zelda_config.h | 2 ++ patches/input.c | 8 +++++++- patches/input.h | 1 + patches/syms.ld | 1 + src/game/recomp_api.cpp | 7 ++++++- 6 files changed, 29 insertions(+), 2 deletions(-) diff --git a/assets/config_menu/general.rml b/assets/config_menu/general.rml index 291bf8c..a90ef21 100644 --- a/assets/config_menu/general.rml +++ b/assets/config_menu/general.rml @@ -242,6 +242,18 @@ /> + + + unk_1887C == 0 && (in_free_look || this->currentMask != PLAYER_MASK_ZORA); + return recomp_move_in_first_person_enabled() + //return recomp_analog_cam_enabled() + && play->unk_1887C == 0 + && ( + in_free_look + || this->currentMask != PLAYER_MASK_ZORA + ); } void recomp_handle_first_person_movement(PlayState* play, Player* this, s32 arg2) { diff --git a/patches/input.h b/patches/input.h index 0f00e36..4b92e47 100644 --- a/patches/input.h +++ b/patches/input.h @@ -15,6 +15,7 @@ DECLARE_FUNC(void, recomp_get_mouse_deltas, float* x, float* y); DECLARE_FUNC(s32, recomp_get_targeting_mode); DECLARE_FUNC(void, recomp_get_inverted_axes, s32* x, s32* y); DECLARE_FUNC(s32, recomp_analog_cam_enabled); +DECLARE_FUNC(s32, recomp_move_in_first_person_enabled); DECLARE_FUNC(void, recomp_get_analog_inverted_axes, s32* x, s32* y); DECLARE_FUNC(void, recomp_get_camera_inputs, float* x, float* y); DECLARE_FUNC(void, recomp_set_right_analog_suppressed, s32 suppressed); diff --git a/patches/syms.ld b/patches/syms.ld index a0e5d7d..c0844d5 100644 --- a/patches/syms.ld +++ b/patches/syms.ld @@ -44,3 +44,4 @@ recomp_get_inverted_axes = 0x8F0000A4; recomp_high_precision_fb_enabled = 0x8F0000A8; recomp_get_resolution_scale = 0x8F0000AC; recomp_get_analog_inverted_axes = 0x8F0000B0; +recomp_move_in_first_person_enabled = 0x8F0000B4; diff --git a/src/game/recomp_api.cpp b/src/game/recomp_api.cpp index 28b4779..21e6b2b 100644 --- a/src/game/recomp_api.cpp +++ b/src/game/recomp_api.cpp @@ -132,7 +132,12 @@ extern "C" void recomp_get_analog_inverted_axes(uint8_t* rdram, recomp_context* } extern "C" void recomp_analog_cam_enabled(uint8_t* rdram, recomp_context* ctx) { - _return(ctx, zelda64::get_analog_cam_mode() == zelda64::AnalogCamMode::On); + _return(ctx, zelda64::get_analog_cam_mode() == zelda64::AnalogCamMode::On + || zelda64::get_analog_cam_mode() == zelda64::AnalogCamMode::MoveInFirstPerson); +} + +extern "C" void recomp_move_in_first_person_enabled(uint8_t* rdram, recomp_context* ctx) { + _return(ctx, zelda64::get_analog_cam_mode() == zelda64::AnalogCamMode::MoveInFirstPerson); } extern "C" void recomp_get_camera_inputs(uint8_t* rdram, recomp_context* ctx) {