summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcoco875 <pereira.jannin@gmail.com>2025-05-25 22:18:57 +0200
committercoco875 <pereira.jannin@gmail.com>2025-05-25 22:18:57 +0200
commit037ab3a1216cff699a7d05966639698070ee0d80 (patch)
treef35bae5f55eb96fae35aa48b75cddc899f0e5a5c /src
parentc2e913a626e9a5430402a4c64007e0509a530946 (diff)
add modify interpolation target fps in menu
Diffstat (limited to 'src')
-rw-r--r--src/port/Engine.cpp5
-rw-r--r--src/port/ui/PortMenu.cpp119
2 files changed, 72 insertions, 52 deletions
diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp
index 7b6246a42..2d1ca7ab6 100644
--- a/src/port/Engine.cpp
+++ b/src/port/Engine.cpp
@@ -354,7 +354,10 @@ void GameEngine::RunCommands(Gfx* Commands, const std::vector<std::unordered_map
void GameEngine::ProcessGfxCommands(Gfx* commands) {
std::vector<std::unordered_map<Mtx*, MtxF>> mtx_replacements;
- int target_fps = 200; // GameEngine::Instance->GetInterpolationFPS();
+ int target_fps = GameEngine::Instance->GetInterpolationFPS();
+ if (CVarGetInteger("gModifyInterpolationTargetFPS", 0)) {
+ target_fps = CVarGetInteger("gInterpolationTargetFPS", 60);
+ }
static int last_fps;
static int last_update_rate;
static int time;
diff --git a/src/port/ui/PortMenu.cpp b/src/port/ui/PortMenu.cpp
index cb709e16b..3c2e61db2 100644
--- a/src/port/ui/PortMenu.cpp
+++ b/src/port/ui/PortMenu.cpp
@@ -15,10 +15,10 @@
#endif
extern "C" {
- extern s32 gGamestateNext;
- extern s32 gMenuSelection;
- #include "audio/external.h"
- #include "defines.h"
+extern s32 gGamestateNext;
+extern s32 gMenuSelection;
+#include "audio/external.h"
+#include "defines.h"
}
namespace GameUI {
@@ -158,9 +158,8 @@ void PortMenu::AddSettings() {
.IsPercentage());
AddWidget(path, "Main Music Volume: %.0f%%", WIDGET_CVAR_SLIDER_FLOAT)
.CVar("gMainMusicVolume")
- .Callback([](WidgetInfo& info) {
- audio_set_player_volume(SEQ_PLAYER_LEVEL, CVarGetFloat("gMainMusicVolume", 1.0f));
- })
+ .Callback(
+ [](WidgetInfo& info) { audio_set_player_volume(SEQ_PLAYER_LEVEL, CVarGetFloat("gMainMusicVolume", 1.0f)); })
.Options(FloatSliderOptions()
.Tooltip("Adjust the background music volume.")
.ShowButtons(false)
@@ -168,16 +167,17 @@ void PortMenu::AddSettings() {
.IsPercentage());
AddWidget(path, "Sound Effects Volume: %.0f%%", WIDGET_CVAR_SLIDER_FLOAT)
.CVar("gSFXMusicVolume")
- .Callback([](WidgetInfo& info) {
- audio_set_player_volume(SEQ_PLAYER_SFX, CVarGetFloat("gSFXMusicVolume", 1.0f));
- })
- .Options(
- FloatSliderOptions().Tooltip("Adjust the sound effects volume.").ShowButtons(false).Format("").IsPercentage());
+ .Callback(
+ [](WidgetInfo& info) { audio_set_player_volume(SEQ_PLAYER_SFX, CVarGetFloat("gSFXMusicVolume", 1.0f)); })
+ .Options(FloatSliderOptions()
+ .Tooltip("Adjust the sound effects volume.")
+ .ShowButtons(false)
+ .Format("")
+ .IsPercentage());
AddWidget(path, "Sound Effects Volume: %.0f%%", WIDGET_CVAR_SLIDER_FLOAT)
.CVar("gEnvironmentVolume")
- .Callback([](WidgetInfo& info) {
- audio_set_player_volume(SEQ_PLAYER_ENV, CVarGetFloat("gEnvironmentVolume", 1.0f));
- })
+ .Callback(
+ [](WidgetInfo& info) { audio_set_player_volume(SEQ_PLAYER_ENV, CVarGetFloat("gEnvironmentVolume", 1.0f)); })
.Options(FloatSliderOptions()
.Tooltip("Adjust the environment volume.")
.ShowButtons(false)
@@ -332,31 +332,36 @@ void PortMenu::AddEnhancements() {
AddMenuEntry("Enhancements", "gSettings.Menu.EnhancementsSidebarSection");
WidgetPath path = { "Enhancements", "General", SECTION_COLUMN_1 };
AddSidebarEntry("Enhancements", "General", 3);
- //UIWidgets::WindowButton("Multiplayer", "gMultiplayerWindowEnabled", GameUI::mMultiplayerWindow,
- // { .tooltip = "Shows the multiplayer window" });
- // UIWidgets::WindowButton("Freecam", "gFreecam", GameUI::mFreecamWindow,
- // { .tooltip = "Allows you to fly around the course" });
+ // UIWidgets::WindowButton("Multiplayer", "gMultiplayerWindowEnabled", GameUI::mMultiplayerWindow,
+ // { .tooltip = "Shows the multiplayer window" });
+ // UIWidgets::WindowButton("Freecam", "gFreecam", GameUI::mFreecamWindow,
+ // { .tooltip = "Allows you to fly around the course" });
AddWidget(path, "No multiplayer feature cuts", WIDGET_CVAR_CHECKBOX)
.CVar("gMultiplayerNoFeatureCuts")
.Options(CheckboxOptions().Tooltip("Allows full train and jumbotron in multiplayer, etc."));
AddWidget(path, "General Improvements", WIDGET_CVAR_CHECKBOX)
- .CVar("gImprovements").Options(CheckboxOptions().Tooltip("General improvements to the game experience."));
+ .CVar("gImprovements")
+ .Options(CheckboxOptions().Tooltip("General improvements to the game experience."));
AddWidget(path, "No Level of Detail (LOD)", WIDGET_CVAR_CHECKBOX)
.CVar("gDisableLod")
- .Options(CheckboxOptions().Tooltip("Disable Level of Detail (LOD) to avoid models using lower poly versions at a distance"));
+ .Options(CheckboxOptions().Tooltip(
+ "Disable Level of Detail (LOD) to avoid models using lower poly versions at a distance"));
AddWidget(path, "Disable Culling", WIDGET_CVAR_CHECKBOX)
- .CVar("gNoCulling").Options(CheckboxOptions().Tooltip("Disable original culling of mk64"));
+ .CVar("gNoCulling")
+ .Options(CheckboxOptions().Tooltip("Disable original culling of mk64"));
AddWidget(path, "Far Frustrum", WIDGET_CVAR_SLIDER_FLOAT)
.CVar("gFarFrustrum")
- .Options(FloatSliderOptions().Min(0.0f).Max(10000.0f).DefaultValue(10000.0f)
- .Tooltip("Say how Far the Frustrum are when 'Disable Culling' are enable").Step(10.0f));
+ .Options(FloatSliderOptions()
+ .Min(0.0f)
+ .Max(10000.0f)
+ .DefaultValue(10000.0f)
+ .Tooltip("Say how Far the Frustrum are when 'Disable Culling' are enable")
+ .Step(10.0f));
path = { "Enhancements", "Cheats", SECTION_COLUMN_1 };
AddSidebarEntry("Enhancements", "Cheats", 3);
- AddWidget(path, "Moon Jump", WIDGET_CVAR_CHECKBOX)
- .CVar("gEnableMoonJump");
- AddWidget(path, "Enable Custom CC", WIDGET_CVAR_CHECKBOX)
- .CVar("gEnableCustomCC");
+ AddWidget(path, "Moon Jump", WIDGET_CVAR_CHECKBOX).CVar("gEnableMoonJump");
+ AddWidget(path, "Enable Custom CC", WIDGET_CVAR_CHECKBOX).CVar("gEnableCustomCC");
AddWidget(path, "Custom CC", WIDGET_CVAR_SLIDER_FLOAT)
.CVar("gCustomCC")
.Options(FloatSliderOptions().Min(0.0f).Max(1000.0f).DefaultValue(150.0f).Step(10.0f));
@@ -365,23 +370,23 @@ void PortMenu::AddEnhancements() {
.Options(CheckboxOptions().Tooltip("Disable wall collision."));
AddWidget(path, "Min Height", WIDGET_CVAR_SLIDER_FLOAT)
.CVar("gMinHeight")
- .Options(FloatSliderOptions().Min(-50.0f).Max(50.0f).DefaultValue(0.0f)
- .Tooltip("When Disable Wall Collision are enable what is the minimal height you can get."));
+ .Options(FloatSliderOptions().Min(-50.0f).Max(50.0f).DefaultValue(0.0f).Tooltip(
+ "When Disable Wall Collision are enable what is the minimal height you can get."));
- #if not defined(__SWITCH__) and not defined(__WIIU__)
+#if not defined(__SWITCH__) and not defined(__WIIU__)
path = { "Enhancements", "HM64 Lab", SECTION_COLUMN_1 };
AddSidebarEntry("Enhancements", "HM64 Lab", 4);
AddWidget(path, "Enable HM64 Labs", WIDGET_CVAR_CHECKBOX)
- .CVar("gEditorEnabled")
- .Callback([](WidgetInfo& info) {
- Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Tools")->ToggleVisibility();
- Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Scene Explorer")->ToggleVisibility();
- Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Content Browser")->ToggleVisibility();
- Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Track Properties")->ToggleVisibility();
- Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Properties")->ToggleVisibility();
- })
- .Options(UIWidgets::CheckboxOptions({{ .tooltip = "Edit the universe!"}}));
- #endif
+ .CVar("gEditorEnabled")
+ .Callback([](WidgetInfo& info) {
+ Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Tools")->ToggleVisibility();
+ Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Scene Explorer")->ToggleVisibility();
+ Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Content Browser")->ToggleVisibility();
+ Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Track Properties")->ToggleVisibility();
+ Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Properties")->ToggleVisibility();
+ })
+ .Options(UIWidgets::CheckboxOptions({ { .tooltip = "Edit the universe!" } }));
+#endif
}
#ifdef __SWITCH__
@@ -402,11 +407,11 @@ void PortMenu::AddDevTools() {
WidgetPath path = { "Developer", "General", SECTION_COLUMN_1 };
#ifdef __SWITCH__
AddWidget(path, "Switch CPU Profile", WIDGET_CVAR_COMBOBOX)
- .CVar("gSwitchPerfMode")
- .Options(ComboboxOptions()
- .Tooltip("Switches the CPU profile to a different one")
- .ComboMap(switchCPUProfiles)
- .DefaultIndex(Ship::SwitchProfiles::STOCK))
+ .CVar("gSwitchPerfMode")
+ .Options(ComboboxOptions()
+ .Tooltip("Switches the CPU profile to a different one")
+ .ComboMap(switchCPUProfiles)
+ .DefaultIndex(Ship::SwitchProfiles::STOCK))
.Callback([](WidgetInfo& info) { Ship::Switch::ApplyOverclock(); });
#endif
AddWidget(path, "Popout Menu", WIDGET_CVAR_CHECKBOX)
@@ -415,6 +420,17 @@ void PortMenu::AddDevTools() {
AddWidget(path, "Debug Mode", WIDGET_CVAR_CHECKBOX)
.CVar("gEnableDebugMode")
.Options(CheckboxOptions().Tooltip("Enables Debug Mode."));
+ AddWidget(path, "Modify Interpolation Target FPS", WIDGET_CVAR_CHECKBOX)
+ .CVar("gModifyInterpolationTargetFPS")
+ .Options(CheckboxOptions().Tooltip("Enables Debug Mode."));
+ AddWidget(path, "Interpolation Target FPS", WIDGET_CVAR_SLIDER_INT)
+ .CVar("gInterpolationTargetFPS")
+ .PreFunc([](WidgetInfo& info) { info.isHidden = !CVarGetInteger("gModifyInterpolationTargetFPS", 0); })
+ .Options(IntSliderOptions()
+ .Tooltip("Sets the target FPS for interpolation. When Modify Interpolation Target FPS are enable")
+ .Min(15)
+ .Max(360)
+ .DefaultValue(60));
AddWidget(path, "Render Collision", WIDGET_CVAR_CHECKBOX)
.CVar("gRenderCollisionMesh")
.Options(CheckboxOptions().Tooltip("Renders the collision mesh instead of the course mesh"));
@@ -431,7 +447,8 @@ void PortMenu::AddDevTools() {
AddSidebarEntry("Developer", "Stats", 1);
AddWidget(path, "Popout Stats", WIDGET_WINDOW_BUTTON)
.CVar("gStatsEnabled")
- .Options(ButtonOptions().Tooltip("Shows the stats window, with your FPS and frametimes, and the OS you're playing on"))
+ .Options(ButtonOptions().Tooltip(
+ "Shows the stats window, with your FPS and frametimes, and the OS you're playing on"))
.WindowName("Stats");
path = { "Developer", "Console", SECTION_COLUMN_1 };
@@ -447,9 +464,9 @@ PortMenu::PortMenu(const std::string& consoleVariable, const std::string& name)
: Menu(consoleVariable, name, 0, UIWidgets::Colors::LightBlue) {
}
-//bool CheckNetworkConnected(disabledInfo& info) {
-// return gNetwork.isConnected;
-//}
+// bool CheckNetworkConnected(disabledInfo& info) {
+// return gNetwork.isConnected;
+// }
void PortMenu::InitElement() {
Ship::Menu::InitElement();
@@ -533,4 +550,4 @@ void PortMenu::Draw() {
void PortMenu::DrawElement() {
Ship::Menu::DrawElement();
}
-} // namespace BenGui
+} // namespace GameUI