Skip to content

Commit 712240d

Browse files
committed
EnableLevelSelect: replaces mainmenu with debug lvl select
1 parent 57679aa commit 712240d

File tree

4 files changed

+40
-1
lines changed

4 files changed

+40
-1
lines changed

OutRun2006Tweaks.ini

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,10 @@ SkipIntroLogos = false
232232
# Can also be enabled via -OuttaTime launch parameter.
233233
DisableCountdownTimer = false
234234

235+
# Replaces the main menu with a debug level select, can be useful for quickly testing levels
236+
# Can also be enabled via -LevelSelect launch parameter.
237+
EnableLevelSelect = false
238+
235239
# Clarissa in O2SP arcade mode uses a different model in non-JP versions, this allows restoring the original JP model
236240
RestoreJPClarissa = false
237241

src/dllmain.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ namespace Settings
116116
spdlog::info(" - EnableHollyCourse2: {}", EnableHollyCourse2);
117117
spdlog::info(" - SkipIntroLogos: {}", SkipIntroLogos);
118118
spdlog::info(" - DisableCountdownTimer: {}", DisableCountdownTimer);
119+
spdlog::info(" - EnableLevelSelect: {}", EnableLevelSelect);
119120
spdlog::info(" - HudToggleKey: {}", HudToggleKey);
120121
spdlog::info(" - RestoreJPClarissa: {}", RestoreJPClarissa);
121122
spdlog::info(" - ShowOutRunMilesOnMenu: {}", ShowOutRunMilesOnMenu);
@@ -241,6 +242,7 @@ namespace Settings
241242
EnableHollyCourse2 = ini.Get("Misc", "EnableHollyCourse2", std::move(EnableHollyCourse2));
242243
SkipIntroLogos = ini.Get("Misc", "SkipIntroLogos", std::move(SkipIntroLogos));
243244
DisableCountdownTimer = ini.Get("Misc", "DisableCountdownTimer", std::move(DisableCountdownTimer));
245+
EnableLevelSelect = ini.Get("Misc", "EnableLevelSelect", std::move(EnableLevelSelect));
244246
RestoreJPClarissa = ini.Get("Misc", "RestoreJPClarissa", std::move(RestoreJPClarissa));
245247
ShowOutRunMilesOnMenu = ini.Get("Misc", "ShowOutRunMilesOnMenu", std::move(ShowOutRunMilesOnMenu));
246248
AllowCharacterSelection = ini.Get("Misc", "AllowCharacterSelection", std::move(AllowCharacterSelection));

src/hooks_misc.cpp

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -708,6 +708,12 @@ class CommandLineArguments : public Hook
708708
spdlog::info("CommandLineArguments: DisableCountdownTimer = true");
709709
Settings::DisableCountdownTimer = true;
710710
}
711+
else if (!wcsicmp(argv[i], L"-LevelSelect"))
712+
{
713+
spdlog::info("CommandLineArguments: EnableLevelSelect = true");
714+
Settings::EnableLevelSelect = true;
715+
Settings::SkipIntroLogos = true;
716+
}
711717
}
712718
catch (...) {}
713719
}
@@ -768,4 +774,30 @@ class GameDefaultConfigOverride : public Hook
768774

769775
static GameDefaultConfigOverride instance;
770776
};
771-
GameDefaultConfigOverride GameDefaultConfigOverride::instance;
777+
GameDefaultConfigOverride GameDefaultConfigOverride::instance;
778+
779+
class EnableLevelSelect : public Hook
780+
{
781+
public:
782+
std::string_view description() override
783+
{
784+
return "EnableLevelSelect";
785+
}
786+
787+
bool validate() override
788+
{
789+
return Settings::EnableLevelSelect;
790+
}
791+
792+
bool apply() override
793+
{
794+
// Change the param for "GetMenuForId" call from 0 to 0x1B
795+
constexpr int SumoFrontEnd__eventStep1_GetMenuForIdCall_Param = 0x45756 + 1;
796+
Memory::VP::Patch(Module::exe_ptr(SumoFrontEnd__eventStep1_GetMenuForIdCall_Param), uint8_t(0x1B));
797+
798+
return true;
799+
}
800+
801+
static EnableLevelSelect instance;
802+
};
803+
EnableLevelSelect EnableLevelSelect::instance;

src/plugin.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ namespace Settings
108108
inline int EnableHollyCourse2 = 1;
109109
inline bool SkipIntroLogos = false;
110110
inline bool DisableCountdownTimer = false;
111+
inline bool EnableLevelSelect = false;
111112
inline bool RestoreJPClarissa = false;
112113
inline bool ShowOutRunMilesOnMenu = true;
113114
inline bool AllowCharacterSelection = false;

0 commit comments

Comments
 (0)