From 4f3cdd5e0b92fbb9fdfa4b0037dbe57f0010f066 Mon Sep 17 00:00:00 2001 From: nastys <@> Date: Wed, 5 Aug 2020 02:34:45 +0200 Subject: [PATCH] Quick Startup; Novidia disabled by default; Credits now require coins if Freeplay is disabled on 7.10 --- source-code/data/plugins/config.ini | 43 +++++++++++-------- .../source/plugins/Launcher/framework.h | 20 +++++---- .../source/plugins/Patches/dllmain.cpp | 26 ++++++++++- 3 files changed, 59 insertions(+), 30 deletions(-) diff --git a/source-code/data/plugins/config.ini b/source-code/data/plugins/config.ini index 0ad7755..6ffd92e 100644 --- a/source-code/data/plugins/config.ini +++ b/source-code/data/plugins/config.ini @@ -7,7 +7,7 @@ Enable=1 [GPU] -# Force GPU model (-1=auto; 0=Kepler; 1=Maxwell; 2=Turing) +# Force GPU model -- -1=auto, 0=Kepler, 1=Maxwell, 2=Turing Model=-1 [Launcher] @@ -25,38 +25,40 @@ Command_Line= Use_divahook_bat=0 [Patches] +#Disable movies (enable this if the game hangs when loading certain PVs) +No_Movies=0 +#Enable custom MP4 adv movies (experimental) +MP4_Movies=1 #Enable or disable mouse cursor Cursor=1 #Use 2 channels instead of 4 (when not using DivaSound) Stereo=1 +#Skip one or more menus -- 0=disabled, 1=guest, 2=guest+normal +Quick_Start=1 +#Disable the scrolling sound effect +No_Scrolling_SFX=0 +#Hide the volume and SE control buttons +Hide_Volume=0 +#Remove the photo controls during PV playback +No_PV_UI=0 +#Hide the watermark that's usually shown in PV viewing mode +Hide_PV_Watermark=0 +#Set the card reader and network status icons -- 0=default, 1=hidden, 2=error, 3=OK, 4=partial OK +Status_Icons=0 +#Disable showing lyrics +No_Lyrics=0 +#Disable the error banner +No_Error=1 #Hide "CREDIT(S)"/"FREE PLAY" Hide_Freeplay=0 #Show "FREE PLAY" instead of "CREDIT(S)" Freeplay=1 #Show "PD Loader " instead of "FREE PLAY" PDLoaderText=1 -#Set the card reader and network status icons -- 0=default, 1=hidden, 2=error, 3=OK, 4=partial OK -Status_Icons=0 -#Hide the watermark that's usually shown in PV viewing mode -Hide_PV_Watermark=0 -#Permanently the photo controls during PV playback -No_PV_UI=0 -#Disable showing lyrics -No_Lyrics=0 -#Disable movies (enable this if the game hangs when loading certain PVs) -No_Movies=0 -#Enable custom MP4 adv movies (experimental) -MP4_Movies=1 -#Hide the volume and SE control buttons -Hide_Volume=0 -#Disable the error banner -No_Error=1 #Freeze the timer No_Timer=1 #Disable the timer sprite No_Timer_Sprite=1 -#Allow using a real arcade slider attached to COM11 -Hardware_Slider=0 #Enhanced Stage Manager (sets a custom number of stages; "stage_manager" should be disabled in "components.ini") #Number of stages (0 = disabled) Enhanced_Stage_Manager=0 @@ -66,6 +68,8 @@ Enhanced_Stage_Manager_Encore=1 Unlock_Pseudo=0 #Enable the card menu (incomplete, it doesn't bypass the card prompt) Card=1 +#Allow using a real arcade slider attached to COM11 +Hardware_Slider=0 #Enable custom patches Custom_Patches=1 @@ -109,3 +113,4 @@ r.Height=1080 [plugins] DivaWig.dva=0 DSCRemote.dva=0 +Novidia.dva=0 diff --git a/source-code/source/plugins/Launcher/framework.h b/source-code/source/plugins/Launcher/framework.h index 2ae6835..77f93e3 100644 --- a/source-code/source/plugins/Launcher/framework.h +++ b/source-code/source/plugins/Launcher/framework.h @@ -159,25 +159,27 @@ ConfigOptionBase* internalResolutionArray[] = { }; ConfigOptionBase* optionsArray[] = { - new BooleanOption(L"hide_freeplay", PATCHES_SECTION, CONFIG_FILE, L"Hide \"FREE PLAY\"/\"CREDIT(S)\"", L"Hide the \"FREE PLAY\"/\"CREDIT(S)\" text.", false, false), - new BooleanOption(L"freeplay", PATCHES_SECTION, CONFIG_FILE, L"FREE PLAY", L"Show \"FREE PLAY\" instead of \"CREDIT(S)\".", true, false), - new BooleanOption(L"pdloadertext", PATCHES_SECTION, CONFIG_FILE, L"PD Loader FREE PLAY", L"Show \"PD Loader\" instead of \"FREE PLAY\".", true, false), - new OptionMetaSpacer(8), - new BooleanOption(L"no_movies", PATCHES_SECTION, CONFIG_FILE, L"Disable Movies", L"Disable movies (enable this if the game hangs when loading certain PVs).", false, false), new BooleanOption(L"mp4_movies", PATCHES_SECTION, CONFIG_FILE, L"Custom MP4 Adv Movies", L"Enable MP4 (instead of WMV) advertise/attract movies.", false, false), - new OptionMetaSpacer(8), - new BooleanOption(L"cursor", PATCHES_SECTION, CONFIG_FILE, L"Cursor", L"Enable or disable the mouse cursor.", true, false), new BooleanOption(L"stereo", PATCHES_SECTION, CONFIG_FILE, L"Stereo", L"Use 2 channels instead of 4 (when not using DivaSound).", true, false), + new OptionMetaSpacer(8), + + new DropdownOption(L"quick_start", PATCHES_SECTION, CONFIG_FILE, L"Quick Start:", L"Skip one or more menus.", 1, std::vector({ L"Disabled", L"Guest", L"Guest + Normal" })), + new BooleanOption(L"no_scrolling_sfx", PATCHES_SECTION, CONFIG_FILE, L"Disable Scrolling SFX", L"Disable the scrolling sound effect.", false, false), + new OptionMetaSpacer(8), + new BooleanOption(L"hide_volume", PATCHES_SECTION, CONFIG_FILE, L"Hide Volume Buttons", L"Hide the volume and SE control buttons.", false, false), new BooleanOption(L"no_pv_ui", PATCHES_SECTION, CONFIG_FILE, L"Disable PV UI", L"Remove the photo controls during PV playback.", false, false), new BooleanOption(L"hide_pv_watermark", PATCHES_SECTION, CONFIG_FILE, L"Hide PV Watermark", L"Hide the watermark that's usually shown in PV viewing mode.", false, false), + new DropdownOption(L"status_icons", PATCHES_SECTION, CONFIG_FILE, L"Status Icons:", L"Set the state of card reader and network status icons.", 3, std::vector({ L"Default", L"Hidden", L"Error", L"OK", L"Partial OK" })), new BooleanOption(L"no_lyrics", PATCHES_SECTION, CONFIG_FILE, L"Disable Lyrics", L"Disable showing lyrics.", false, false), new BooleanOption(L"no_error", PATCHES_SECTION, CONFIG_FILE, L"Disable Error Banner", L"Disable the error banner on the attract screen.", true, false), + new BooleanOption(L"hide_freeplay", PATCHES_SECTION, CONFIG_FILE, L"Hide \"FREE PLAY\"/\"CREDIT(S)\"", L"Hide the \"FREE PLAY\"/\"CREDIT(S)\" text.", false, false), + new BooleanOption(L"freeplay", PATCHES_SECTION, CONFIG_FILE, L"FREE PLAY", L"Show \"FREE PLAY\" instead of \"CREDIT(S)\".", true, false), + new BooleanOption(L"pdloadertext", PATCHES_SECTION, CONFIG_FILE, L"PD Loader FREE PLAY", L"Show \"PD Loader\" instead of \"FREE PLAY\".", true, false), new BooleanOption(L"no_timer", PATCHES_SECTION, CONFIG_FILE, L"Freeze Timer", L"Disable the timer.", true, false), new BooleanOption(L"no_timer_sprite", PATCHES_SECTION, CONFIG_FILE, L"Disable Timer Sprite", L"Disable the timer sprite.", true, false), - new DropdownOption(L"status_icons", PATCHES_SECTION, CONFIG_FILE, L"Status Icons:", L"Set the state of card reader and network status icons.", 3, std::vector({ L"Default", L"Hidden", L"Error", L"OK", L"Partial OK" })), new OptionMetaSpacer(8), new BooleanOption(L"Enhanced_Stage_Manager_Encore", PATCHES_SECTION, CONFIG_FILE, L"Encore Stages", L"Enable encore stages.", true, false), @@ -198,7 +200,7 @@ ConfigOptionBase* optionsArray[] = { new NumericOption(L"frm.motion.rate", GRAPHICS_SECTION, CONFIG_FILE, L"FRM Motion Rate:", L"Sets the motion rate (fps) for the Frame Rate Manager component.\nLarger values should be smoother, but more CPU intensive and possibly buggier.", 300, 1, INT_MAX), new OptionMetaSpacer(8), - new BooleanOption(L"autopause", KEYCONFIG_SECTION, KEYCONFIG_FILE, L"Pause automatically", L"Pause when focus is lost.", true, true), + new BooleanOption(L"autopause", KEYCONFIG_SECTION, KEYCONFIG_FILE, L"Pause Automatically", L"Pause when focus is lost.", true, true), new OptionMetaSpacer(8), new BooleanOption(L"rumble", KEYCONFIG_SECTION, KEYCONFIG_FILE, L"XInput Rumble", L"Enables rumble during chainslides.", true, true), diff --git a/source-code/source/plugins/Patches/dllmain.cpp b/source-code/source/plugins/Patches/dllmain.cpp index 0d6cb31..9f6a8ba 100644 --- a/source-code/source/plugins/Patches/dllmain.cpp +++ b/source-code/source/plugins/Patches/dllmain.cpp @@ -137,8 +137,6 @@ void ApplyPatches() { }; const struct { void* Address; std::vector Data; } patches_710[] = { - // Always return true for the SelCredit enter SelPv check - { (void*)0x0000000140393610, { 0xB0, 0x01, 0xC3, 0x90, 0x90, 0x90 } }, // Just completely ignore all SYSTEM_STARTUP errors { (void*)0x00000001403F5080, { 0xC3 } }, // Always exit TASK_MODE_APP_ERROR on the first frame @@ -176,6 +174,8 @@ void ApplyPatches() { { (void*)0x0000000140136CFA,{ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 } }, // enable module selector without use_card { (void*)0x00000001405C513B,{ 0x01 } }, + // fix back button + { (void*)0x0000000140578FB8, { 0xE9, 0x73, 0xFF, 0xFF, 0xFF } }, // Force Hide IDs { (void*)0x00000001409A5918, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, { (void*)0x00000001409A5928, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, @@ -224,6 +224,8 @@ void ApplyPatches() { auto nMLAA = GetPrivateProfileIntW(L"graphics", L"mlaa", TRUE, CONFIG_FILE); auto nStereo = GetPrivateProfileIntW(L"patches", L"stereo", TRUE, CONFIG_FILE); auto nCustomPatches = GetPrivateProfileIntW(L"patches", L"custom_patches", TRUE, CONFIG_FILE); + auto nQuickStart = GetPrivateProfileIntW(L"patches", L"quick_start", 1, CONFIG_FILE); + auto nNoScrollingSfx = GetPrivateProfileIntW(L"patches", L"no_scrolling_sfx", FALSE, CONFIG_FILE); std::string version_string = std::to_string(game_version); version_string.insert(version_string.begin()+1, '.'); @@ -577,6 +579,9 @@ void ApplyPatches() { // Enable "FREE PLAY" mode if (nFreeplay || nHideFreeplay) { + // Always return true for the SelCredit enter SelPv check + InjectCode((void*)0x0000000140393610, { 0xB0, 0x01, 0xC3, 0x90, 0x90, 0x90 }); + InjectCode((void*)0x00000001403BABEA, { 0x75 }); printf("[Patches] Show FREE PLAY instead of CREDIT(S)\n"); @@ -771,6 +776,23 @@ void ApplyPatches() { // Don't update the touch slider state so we can write our own InjectCode((void*)0x000000014061579B, { 0x90, 0x90, 0x90, 0x8B, 0x42, 0xE0, 0x90, 0x90, 0x90 }); } + // Quick start + { + if (nQuickStart == 1) // skip the card/guest screen + { + InjectCode((void*)0x0000000140578EA9, { 0xE9, 0x8E, 0x00, 0x00, 0x00 }); + } + else if (nQuickStart == 2) // skip everything; normal mode + { + InjectCode((void*)0x0000000140578EA9, { 0xE9, 0xF1, 0x00, 0x00, 0x00 }); + InjectCode((void*)0x0000000140578E9D, { 0xC7, 0x47, 0x68, 0x28, 0x00, 0x00, 0x00 }); // skip back button error + } + } + // Disable scrolling sound effect + if (nNoScrollingSfx) + { + InjectCode((void*)0x00000001405C84B3, { 0x90, 0x90, 0x90, 0x90, 0x90 }); + } }