Merge 848972c91b
into 0d0f64e32f
This commit is contained in:
commit
0380d5bd20
|
@ -5,7 +5,7 @@
|
||||||
<form class="config__form" id="conf-general__form">
|
<form class="config__form" id="conf-general__form">
|
||||||
<div class="config__hz-wrapper" id="conf-general__hz-wrapper">
|
<div class="config__hz-wrapper" id="conf-general__hz-wrapper">
|
||||||
<!-- Options -->
|
<!-- Options -->
|
||||||
<div class="config__wrapper" data-event-mouseout="set_cur_config_index(-1)" id="conf-general__wrapper">
|
<div class="config__wrapper" data-event-mouseout="set_cur_config_index(-1)" id="conf-general__wrapper" style="overflow:auto;max-height:100%">
|
||||||
<!-- targeting mode -->
|
<!-- targeting mode -->
|
||||||
<div class="config-option" data-event-mouseover="set_cur_config_index(0)" id="conf-general__Targeting-Mode">
|
<div class="config-option" data-event-mouseover="set_cur_config_index(0)" id="conf-general__Targeting-Mode">
|
||||||
<label class="config-option__title">Targeting Mode</label>
|
<label class="config-option__title">Targeting Mode</label>
|
||||||
|
@ -92,7 +92,7 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- joystick deadzone -->
|
<!-- joystick deadzone -->
|
||||||
<div class="config-option" data-event-mouseover="set_cur_config_index(4)">
|
<div class="config-option" data-event-mouseover="set_cur_config_index(4)">
|
||||||
<label class="config-option__title">Joystick Deadzone</label>
|
<label class="config-option__title">Joystick Deadzone</label>
|
||||||
|
@ -171,7 +171,7 @@
|
||||||
<label class="config-option__tab-label" for="autosave_disabled">Off</label>
|
<label class="config-option__tab-label" for="autosave_disabled">Off</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- camera inversion -->
|
<!-- camera inversion -->
|
||||||
<div class="config-option" data-event-mouseover="set_cur_config_index(7)">
|
<div class="config-option" data-event-mouseover="set_cur_config_index(7)">
|
||||||
<label class="config-option__title">Aiming Camera Mode</label>
|
<label class="config-option__title">Aiming Camera Mode</label>
|
||||||
|
@ -225,7 +225,7 @@
|
||||||
<label class="config-option__tab-label" for="camera_inversion_both">Invert Both</label>
|
<label class="config-option__tab-label" for="camera_inversion_both">Invert Both</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- analog camera -->
|
<!-- analog camera -->
|
||||||
<div class="config-option" data-event-mouseover="set_cur_config_index(8)">
|
<div class="config-option" data-event-mouseover="set_cur_config_index(8)">
|
||||||
<label class="config-option__title">Analog Camera</label>
|
<label class="config-option__title">Analog Camera</label>
|
||||||
|
@ -255,7 +255,7 @@
|
||||||
<label class="config-option__tab-label" for="analog_cam_disabled">Off</label>
|
<label class="config-option__tab-label" for="analog_cam_disabled">Off</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- analog camera inversion -->
|
<!-- analog camera inversion -->
|
||||||
<div class="config-option" data-event-mouseover="set_cur_config_index(9)">
|
<div class="config-option" data-event-mouseover="set_cur_config_index(9)">
|
||||||
<label class="config-option__title">Analog Camera Mode</label>
|
<label class="config-option__title">Analog Camera Mode</label>
|
||||||
|
@ -268,7 +268,7 @@
|
||||||
data-checked="analog_camera_invert_mode"
|
data-checked="analog_camera_invert_mode"
|
||||||
value="InvertNone"
|
value="InvertNone"
|
||||||
id="analog_camera_inversion_none"
|
id="analog_camera_inversion_none"
|
||||||
style="nav-up: #analog_cam_enabled;"
|
style="nav-up: #analog_cam_enabled; nav-down: #special_item_hud_enabled"
|
||||||
/>
|
/>
|
||||||
<label class="config-option__tab-label" for="analog_camera_inversion_none">None</label>
|
<label class="config-option__tab-label" for="analog_camera_inversion_none">None</label>
|
||||||
|
|
||||||
|
@ -280,7 +280,7 @@
|
||||||
data-checked="analog_camera_invert_mode"
|
data-checked="analog_camera_invert_mode"
|
||||||
value="InvertX"
|
value="InvertX"
|
||||||
id="analog_camera_inversion_x"
|
id="analog_camera_inversion_x"
|
||||||
style="nav-up: #analog_cam_disabled;"
|
style="nav-up: #analog_cam_disabled; nav-down: #special_item_hud_enabled"
|
||||||
/>
|
/>
|
||||||
<label class="config-option__tab-label" for="analog_camera_inversion_x">Invert X</label>
|
<label class="config-option__tab-label" for="analog_camera_inversion_x">Invert X</label>
|
||||||
|
|
||||||
|
@ -292,7 +292,7 @@
|
||||||
data-checked="analog_camera_invert_mode"
|
data-checked="analog_camera_invert_mode"
|
||||||
value="InvertY"
|
value="InvertY"
|
||||||
id="analog_camera_inversion_y"
|
id="analog_camera_inversion_y"
|
||||||
style="nav-up: #analog_cam_disabled;"
|
style="nav-up: #analog_cam_disabled; nav-down: #special_item_hud_disabled"
|
||||||
/>
|
/>
|
||||||
<label class="config-option__tab-label" for="analog_camera_inversion_y">Invert Y</label>
|
<label class="config-option__tab-label" for="analog_camera_inversion_y">Invert Y</label>
|
||||||
|
|
||||||
|
@ -304,16 +304,46 @@
|
||||||
data-checked="analog_camera_invert_mode"
|
data-checked="analog_camera_invert_mode"
|
||||||
value="InvertBoth"
|
value="InvertBoth"
|
||||||
id="analog_camera_inversion_both"
|
id="analog_camera_inversion_both"
|
||||||
style="nav-up: #analog_cam_disabled;"
|
style="nav-up: #analog_cam_disabled; nav-down: #special_item_hud_disabled"
|
||||||
/>
|
/>
|
||||||
<label class="config-option__tab-label" for="analog_camera_inversion_both">Invert Both</label>
|
<label class="config-option__tab-label" for="analog_camera_inversion_both">Invert Both</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- special item hud -->
|
||||||
|
<div class="config-option" data-event-mouseover="set_cur_config_index(10)">
|
||||||
|
<label class="config-option__title">Special Item HUD</label>
|
||||||
|
<div class="config-option__list">
|
||||||
|
<input
|
||||||
|
type="radio"
|
||||||
|
data-event-blur="set_cur_config_index(-1)"
|
||||||
|
data-event-focus="set_cur_config_index(10)"
|
||||||
|
name="special_item_hud_mode"
|
||||||
|
data-checked="special_item_hud_mode"
|
||||||
|
value="On"
|
||||||
|
id="special_item_hud_enabled"
|
||||||
|
style="nav-up: #analog_camera_inversion_none;"
|
||||||
|
/>
|
||||||
|
<label class="config-option__tab-label" for="special_item_hud_enabled">On</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="radio"
|
||||||
|
data-event-blur="set_cur_config_index(-1)"
|
||||||
|
data-event-focus="set_cur_config_index(10)"
|
||||||
|
name="special_item_hud_mode"
|
||||||
|
data-checked="special_item_hud_mode"
|
||||||
|
value="Off"
|
||||||
|
id="special_item_hud_disabled"
|
||||||
|
style="nav-up: #analog_camera_inversion_x;"
|
||||||
|
/>
|
||||||
|
<label class="config-option__tab-label" for="special_item_hud_disabled">Off</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Descriptions -->
|
<!-- Descriptions -->
|
||||||
<div class="config__wrapper">
|
<div class="config__wrapper">
|
||||||
<p data-if="cur_config_index == 0">
|
<p data-if="cur_config_index == 0">
|
||||||
Controls how targeting enemies and objects works. <b>Switch</b> will start or stop targeting each time the target button is pressed. <b>Hold</b> will start when the target button is pressed and stop when the button is released.
|
Controls how targeting enemies and objects works. <b>Switch</b> will start or stop targeting each time the target button is pressed. <b>Hold</b> will start when the target button is pressed and stop when the button is released.
|
||||||
</p>
|
</p>
|
||||||
<p data-if="cur_config_index == 1">
|
<p data-if="cur_config_index == 1">
|
||||||
Controls the strength of rumble when using a controller that supports it. <b>Setting this to zero will disable rumble.</b>
|
Controls the strength of rumble when using a controller that supports it. <b>Setting this to zero will disable rumble.</b>
|
||||||
|
@ -362,6 +392,9 @@
|
||||||
<p data-if="cur_config_index == 9">
|
<p data-if="cur_config_index == 9">
|
||||||
Inverts the camera controls for the analog camera if it's enabled. <b>None</b> is the default.
|
Inverts the camera controls for the analog camera if it's enabled. <b>None</b> is the default.
|
||||||
</p>
|
</p>
|
||||||
|
<p data-if="cur_config_index == 10">
|
||||||
|
Enables visibility of the special item HUD. Affects visibility only, functionality can be modified in the <b>Controls</b> setting tab. <b>On</b> is the default.
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -35,6 +35,9 @@ namespace zelda64 {
|
||||||
{zelda64::AutosaveMode::Off, "Off"}
|
{zelda64::AutosaveMode::Off, "Off"}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
AutosaveMode get_autosave_mode();
|
||||||
|
void set_autosave_mode(AutosaveMode mode);
|
||||||
|
|
||||||
enum class TargetingMode {
|
enum class TargetingMode {
|
||||||
Switch,
|
Switch,
|
||||||
Hold,
|
Hold,
|
||||||
|
@ -81,12 +84,23 @@ namespace zelda64 {
|
||||||
{zelda64::AnalogCamMode::Off, "Off"}
|
{zelda64::AnalogCamMode::Off, "Off"}
|
||||||
});
|
});
|
||||||
|
|
||||||
AutosaveMode get_autosave_mode();
|
|
||||||
void set_autosave_mode(AutosaveMode mode);
|
|
||||||
|
|
||||||
AnalogCamMode get_analog_cam_mode();
|
AnalogCamMode get_analog_cam_mode();
|
||||||
void set_analog_cam_mode(AnalogCamMode mode);
|
void set_analog_cam_mode(AnalogCamMode mode);
|
||||||
|
|
||||||
|
enum class SpecialItemHudMode {
|
||||||
|
On,
|
||||||
|
Off,
|
||||||
|
OptionCount
|
||||||
|
};
|
||||||
|
|
||||||
|
NLOHMANN_JSON_SERIALIZE_ENUM(zelda64::SpecialItemHudMode, {
|
||||||
|
{zelda64::SpecialItemHudMode::On, "On"},
|
||||||
|
{zelda64::SpecialItemHudMode::Off, "Off"}
|
||||||
|
});
|
||||||
|
|
||||||
|
SpecialItemHudMode get_special_item_hud_mode();
|
||||||
|
void set_special_item_hud_mode(SpecialItemHudMode mode);
|
||||||
|
|
||||||
void open_quit_game_prompt();
|
void open_quit_game_prompt();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#define gRandFloat sRandFloat
|
#define gRandFloat sRandFloat
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "rt64_extended_gbi.h"
|
#include "rt64_extended_gbi.h"
|
||||||
|
#include "patch_helpers.h"
|
||||||
|
|
||||||
#ifndef gEXFillRectangle
|
#ifndef gEXFillRectangle
|
||||||
#define gEXFillRectangle(cmd, lorigin, rorigin, ulx, uly, lrx, lry) \
|
#define gEXFillRectangle(cmd, lorigin, rorigin, ulx, uly, lrx, lry) \
|
||||||
|
@ -101,4 +102,6 @@ void draw_autosave_icon(PlayState* play);
|
||||||
|
|
||||||
void recomp_crash(const char* err);
|
void recomp_crash(const char* err);
|
||||||
|
|
||||||
|
DECLARE_FUNC(s32, recomp_special_item_hud_enabled);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -44,3 +44,4 @@ recomp_get_inverted_axes = 0x8F0000A4;
|
||||||
recomp_high_precision_fb_enabled = 0x8F0000A8;
|
recomp_high_precision_fb_enabled = 0x8F0000A8;
|
||||||
recomp_get_resolution_scale = 0x8F0000AC;
|
recomp_get_resolution_scale = 0x8F0000AC;
|
||||||
recomp_get_analog_inverted_axes = 0x8F0000B0;
|
recomp_get_analog_inverted_axes = 0x8F0000B0;
|
||||||
|
recomp_special_item_hud_enabled = 0x8F0000B4;
|
||||||
|
|
|
@ -488,8 +488,10 @@ RECOMP_PATCH void Interface_Draw(PlayState* play) {
|
||||||
|
|
||||||
// @recomp Draw the D-Pad and its item icons as well as the autosave icon if the game is unpaused.
|
// @recomp Draw the D-Pad and its item icons as well as the autosave icon if the game is unpaused.
|
||||||
if (pauseCtx->state != PAUSE_STATE_MAIN) {
|
if (pauseCtx->state != PAUSE_STATE_MAIN) {
|
||||||
draw_dpad(play);
|
if (recomp_special_item_hud_enabled()) {
|
||||||
draw_dpad_icons(play);
|
draw_dpad(play);
|
||||||
|
draw_dpad_icons(play);
|
||||||
|
}
|
||||||
draw_autosave_icon(play);
|
draw_autosave_icon(play);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -219,6 +219,7 @@ bool save_general_config(const std::filesystem::path& path) {
|
||||||
config_json["autosave_mode"] = zelda64::get_autosave_mode();
|
config_json["autosave_mode"] = zelda64::get_autosave_mode();
|
||||||
config_json["camera_invert_mode"] = zelda64::get_camera_invert_mode();
|
config_json["camera_invert_mode"] = zelda64::get_camera_invert_mode();
|
||||||
config_json["analog_cam_mode"] = zelda64::get_analog_cam_mode();
|
config_json["analog_cam_mode"] = zelda64::get_analog_cam_mode();
|
||||||
|
config_json["special_item_hud_mode"] = zelda64::get_special_item_hud_mode();
|
||||||
config_json["analog_camera_invert_mode"] = zelda64::get_analog_camera_invert_mode();
|
config_json["analog_camera_invert_mode"] = zelda64::get_analog_camera_invert_mode();
|
||||||
config_json["debug_mode"] = zelda64::get_debug_mode_enabled();
|
config_json["debug_mode"] = zelda64::get_debug_mode_enabled();
|
||||||
|
|
||||||
|
@ -235,6 +236,7 @@ void set_general_settings_from_json(const nlohmann::json& config_json) {
|
||||||
zelda64::set_autosave_mode(from_or_default(config_json, "autosave_mode", zelda64::AutosaveMode::On));
|
zelda64::set_autosave_mode(from_or_default(config_json, "autosave_mode", zelda64::AutosaveMode::On));
|
||||||
zelda64::set_camera_invert_mode(from_or_default(config_json, "camera_invert_mode", zelda64::CameraInvertMode::InvertY));
|
zelda64::set_camera_invert_mode(from_or_default(config_json, "camera_invert_mode", zelda64::CameraInvertMode::InvertY));
|
||||||
zelda64::set_analog_cam_mode(from_or_default(config_json, "analog_cam_mode", zelda64::AnalogCamMode::Off));
|
zelda64::set_analog_cam_mode(from_or_default(config_json, "analog_cam_mode", zelda64::AnalogCamMode::Off));
|
||||||
|
zelda64::set_special_item_hud_mode(from_or_default(config_json, "special_item_hud_mode", zelda64::SpecialItemHudMode::On));
|
||||||
zelda64::set_analog_camera_invert_mode(from_or_default(config_json, "analog_camera_invert_mode", zelda64::CameraInvertMode::InvertNone));
|
zelda64::set_analog_camera_invert_mode(from_or_default(config_json, "analog_camera_invert_mode", zelda64::CameraInvertMode::InvertNone));
|
||||||
zelda64::set_debug_mode_enabled(from_or_default(config_json, "debug_mode", false));
|
zelda64::set_debug_mode_enabled(from_or_default(config_json, "debug_mode", false));
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,6 +135,10 @@ extern "C" void recomp_analog_cam_enabled(uint8_t* rdram, recomp_context* ctx) {
|
||||||
_return<s32>(ctx, zelda64::get_analog_cam_mode() == zelda64::AnalogCamMode::On);
|
_return<s32>(ctx, zelda64::get_analog_cam_mode() == zelda64::AnalogCamMode::On);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" void recomp_special_item_hud_enabled(uint8_t * rdram, recomp_context * ctx) {
|
||||||
|
_return<s32>(ctx, zelda64::get_special_item_hud_mode() == zelda64::SpecialItemHudMode::On);
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" void recomp_get_camera_inputs(uint8_t* rdram, recomp_context* ctx) {
|
extern "C" void recomp_get_camera_inputs(uint8_t* rdram, recomp_context* ctx) {
|
||||||
float* x_out = _arg<0, float*>(rdram, ctx);
|
float* x_out = _arg<0, float*>(rdram, ctx);
|
||||||
float* y_out = _arg<1, float*>(rdram, ctx);
|
float* y_out = _arg<1, float*>(rdram, ctx);
|
||||||
|
|
|
@ -290,6 +290,7 @@ struct ControlOptionsContext {
|
||||||
zelda64::AutosaveMode autosave_mode;
|
zelda64::AutosaveMode autosave_mode;
|
||||||
zelda64::CameraInvertMode camera_invert_mode;
|
zelda64::CameraInvertMode camera_invert_mode;
|
||||||
zelda64::AnalogCamMode analog_cam_mode;
|
zelda64::AnalogCamMode analog_cam_mode;
|
||||||
|
zelda64::SpecialItemHudMode special_item_hud_mode;
|
||||||
zelda64::CameraInvertMode analog_camera_invert_mode;
|
zelda64::CameraInvertMode analog_camera_invert_mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -400,6 +401,17 @@ void zelda64::set_analog_cam_mode(zelda64::AnalogCamMode mode) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
zelda64::SpecialItemHudMode zelda64::get_special_item_hud_mode() {
|
||||||
|
return control_options_context.special_item_hud_mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void zelda64::set_special_item_hud_mode(zelda64::SpecialItemHudMode mode) {
|
||||||
|
control_options_context.special_item_hud_mode = mode;
|
||||||
|
if (general_model_handle) {
|
||||||
|
general_model_handle.DirtyVariable("special_item_hud_mode");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
zelda64::CameraInvertMode zelda64::get_analog_camera_invert_mode() {
|
zelda64::CameraInvertMode zelda64::get_analog_camera_invert_mode() {
|
||||||
return control_options_context.analog_camera_invert_mode;
|
return control_options_context.analog_camera_invert_mode;
|
||||||
}
|
}
|
||||||
|
@ -937,6 +949,7 @@ public:
|
||||||
bind_option(constructor, "autosave_mode", &control_options_context.autosave_mode);
|
bind_option(constructor, "autosave_mode", &control_options_context.autosave_mode);
|
||||||
bind_option(constructor, "camera_invert_mode", &control_options_context.camera_invert_mode);
|
bind_option(constructor, "camera_invert_mode", &control_options_context.camera_invert_mode);
|
||||||
bind_option(constructor, "analog_cam_mode", &control_options_context.analog_cam_mode);
|
bind_option(constructor, "analog_cam_mode", &control_options_context.analog_cam_mode);
|
||||||
|
bind_option(constructor, "special_item_hud_mode", &control_options_context.special_item_hud_mode);
|
||||||
bind_option(constructor, "analog_camera_invert_mode", &control_options_context.analog_camera_invert_mode);
|
bind_option(constructor, "analog_camera_invert_mode", &control_options_context.analog_camera_invert_mode);
|
||||||
|
|
||||||
general_model_handle = constructor.GetModelHandle();
|
general_model_handle = constructor.GetModelHandle();
|
||||||
|
|
Loading…
Reference in New Issue