From e2f2bda0146b834333829f3c442724379095b34d Mon Sep 17 00:00:00 2001 From: RyuMiya Date: Thu, 17 Oct 2024 14:33:30 +0800 Subject: [PATCH] Add Mode Unlock --- README.md | 6 ++++++ dist/config.toml | 3 +++ src/patches/versions/CHN00.cpp | 2 +- src/patches/versions/JPN39.cpp | 29 ++++++++++++++++++++++------- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 129c5d9..ef42082 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,12 @@ unlock_songs = true fix_language = false # use cn font and chineseS wordlist value chs_patch = false + # enable one piece collab mode + mode_collabo025 = false + # enable ai soshina mode + mode_collabo026 = false + # enable aoharu no tatsujinn mode + mode_aprilfool001 = false [audio] # wasapi shared mode diff --git a/dist/config.toml b/dist/config.toml index bea44c7..195d9c6 100644 --- a/dist/config.toml +++ b/dist/config.toml @@ -19,6 +19,9 @@ unlock_songs = true [patches.jpn39] fix_language = false chs_patch = false + mode_collabo025 = false + mode_collabo026 = false + mode_aprilfool001 = false [graphics] res = { x = 1920, y = 1080 } diff --git a/src/patches/versions/CHN00.cpp b/src/patches/versions/CHN00.cpp index c16bf6d..46fa093 100644 --- a/src/patches/versions/CHN00.cpp +++ b/src/patches/versions/CHN00.cpp @@ -100,7 +100,7 @@ Init () { i32 xRes = 1920; i32 yRes = 1080; bool unlockSongs = true; - bool fixLanguage = false; + bool fixLanguage = false; bool demoMovie = true; bool modeCollabo025 = false; bool modeCollabo026 = false; diff --git a/src/patches/versions/JPN39.cpp b/src/patches/versions/JPN39.cpp index 9735bfa..0c64344 100644 --- a/src/patches/versions/JPN39.cpp +++ b/src/patches/versions/JPN39.cpp @@ -25,6 +25,11 @@ lua_pushtrue (i64 a1) { return 1; } +HOOK (i64, AvailableMode_Collabo024, ASLR (0x1402DE710), i64 a1) { return lua_pushtrue (a1); } +HOOK (i64, AvailableMode_Collabo025, ASLR (0x1402DE6B0), i64 a1) { return lua_pushtrue (a1); } +HOOK (i64, AvailableMode_Collabo026, ASLR (0x1402DE670), i64 a1) { return lua_pushtrue (a1); } +HOOK (i64, AvailableMode_AprilFool001, ASLR (0x1402DE5B0), i64 a1) { return lua_pushtrue (a1); } + const i32 datatableBufferSize = 1024 * 1024 * 12; safetyhook::Allocation datatableBuffer1; safetyhook::Allocation datatableBuffer2; @@ -89,11 +94,14 @@ HOOK (i64, GetCabinetLanguage, ASLR (0x1401D1A60), i64, i64 a2) { void Init () { - i32 xRes = 1920; - i32 yRes = 1080; - bool unlockSongs = true; - bool fixLanguage = false; - bool chsPatch = false; + i32 xRes = 1920; + i32 yRes = 1080; + bool unlockSongs = true; + bool fixLanguage = false; + bool chsPatch = false; + bool modeCollabo025 = false; + bool modeCollabo026 = false; + bool modeAprilFool001 = false; auto configPath = std::filesystem::current_path () / "config.toml"; std::unique_ptr config_ptr (openConfig (configPath), toml_free); @@ -103,8 +111,11 @@ Init () { unlockSongs = readConfigBool (patches, "unlock_songs", unlockSongs); auto jpn39 = openConfigSection (patches, "jpn39"); if (jpn39) { - fixLanguage = readConfigBool (jpn39, "fix_language", fixLanguage); - chsPatch = readConfigBool (jpn39, "chs_patch", chsPatch); + fixLanguage = readConfigBool (jpn39, "fix_language", fixLanguage); + chsPatch = readConfigBool (jpn39, "chs_patch", chsPatch); + modeCollabo025 = readConfigBool (jpn39, "mode_collabo025", modeCollabo025); + modeCollabo026 = readConfigBool (jpn39, "mode_collabo026", modeCollabo026); + modeAprilFool001 = readConfigBool (jpn39, "mode_aprilfool001", modeAprilFool001); } } @@ -189,6 +200,10 @@ Init () { INSTALL_HOOK (GetCabinetLanguage); } + if (modeCollabo025) INSTALL_HOOK (AvailableMode_Collabo025); + if (modeCollabo026) INSTALL_HOOK (AvailableMode_Collabo026); + if (modeAprilFool001) INSTALL_HOOK (AvailableMode_AprilFool001); + // Disable live check auto amHandle = (u64)GetModuleHandle ("AMFrameWork.dll"); INSTALL_HOOK_DYNAMIC (AMFWTerminate, (void *)(amHandle + 0x42DE0));