- Taiko: Added support for version 8.18
This commit is contained in:
parent
c29308c669
commit
3d7de1013e
@ -486,7 +486,7 @@ static DWORD XInputGetCapabilitiesHook(DWORD dwUserIndex, DWORD dwFlags, XINPUT_
|
||||
return ERROR_DEVICE_NOT_CONNECTED;
|
||||
}
|
||||
|
||||
static InitFunction TaikoFunc([]()
|
||||
static InitFunction TaikoV0Func([]()
|
||||
{
|
||||
uintptr_t imageBase = (uintptr_t)GetModuleHandleA(0);
|
||||
uintptr_t amBase = (uintptr_t)GetModuleHandleA("AMFrameWork.dll");
|
||||
@ -602,5 +602,123 @@ static InitFunction TaikoFunc([]()
|
||||
MH_CreateHookApi(L"xinput9_1_0.dll", "XInputGetCapabilities", XInputGetCapabilitiesHook, NULL);
|
||||
|
||||
MH_EnableHook(MH_ALL_HOOKS);
|
||||
}, GameID::Taiko);
|
||||
}, GameID::TaikoV0);
|
||||
|
||||
static InitFunction TaikoV8Func([]()
|
||||
{
|
||||
uintptr_t imageBase = (uintptr_t)GetModuleHandleA(0);
|
||||
uintptr_t amBase = (uintptr_t)GetModuleHandleA("AMFrameWork.dll");
|
||||
|
||||
// Skip ExitWindowsEx (reboots pc when debugging)
|
||||
injector::MakeNOP(amBase + 0x35AB1, 10);
|
||||
|
||||
// Path fixes
|
||||
injector::WriteMemoryRaw(imageBase + 0xB5C538, ".\\Setting2.bin", 15, true); // g:\\Setting2.bin
|
||||
injector::WriteMemoryRaw(imageBase + 0xB5C528, ".\\Setting1.bin", 15, true); // f:\\Setting1.bin
|
||||
|
||||
injector::WriteMemory<BYTE>(amBase + 0x33EF7, 0xEB, true); // ErrorLogPathA
|
||||
injector::WriteMemory<BYTE>(amBase + 0x3404A, 0xEB, true); // ErrorLogPathB
|
||||
injector::WriteMemory<BYTE>(amBase + 0x34429, 0xEB, true); // CommonLogPathA
|
||||
injector::WriteMemory<BYTE>(amBase + 0x3457C, 0xEB, true); // CommonLogPathB
|
||||
injector::WriteMemory<BYTE>(amBase + 0x3497A, 0xEB, true); // BackupDataPathA
|
||||
injector::WriteMemory<BYTE>(amBase + 0x34ACD, 0xEB, true); // BackupDataPathB
|
||||
injector::WriteMemory<BYTE>(amBase + 0x148AF, 0xEB, true); // CreditLogPathA
|
||||
injector::WriteMemory<BYTE>(amBase + 0x14A1A, 0xEB, true); // CreditLogPathB
|
||||
|
||||
// Skip errors
|
||||
injector::WriteMemory<BYTE>(imageBase + 0x239C0, 0xC3, true);
|
||||
|
||||
// Respatch (currently doesn't change render resolution)
|
||||
if (ToBool(config["General"]["Custom Resolution (Stretches)"]))
|
||||
{
|
||||
DWORD resWidth = FetchDwordInformation("General", "Resolution Width", 1920);
|
||||
DWORD resHeight = FetchDwordInformation("General", "Resolution Height", 1080);
|
||||
|
||||
injector::WriteMemory<DWORD>(imageBase + 0x35FC5B, resWidth, true);
|
||||
injector::WriteMemory<DWORD>(imageBase + 0x35FC62, resHeight, true);
|
||||
}
|
||||
|
||||
// Fixes by the Taiko community (thanks Swigz, Samyuu and Mon!)
|
||||
if (ToBool(config["General"]["FixAnimationsEnable"]))
|
||||
{
|
||||
DWORD aniFps = FetchDwordInformation("General", "FixAnimationsFps", 120);
|
||||
|
||||
injector::WriteMemory<float>(imageBase + 0xB1A2D4, 1.0f / (float)aniFps * 1000.0f, true); // Enso Game Frame Time
|
||||
injector::WriteMemory<float>(imageBase + 0xB7755C, 0.0166800003498793f / 120.0f * (float)aniFps, true); // Model Animation 60 FPS Frame Time Factor
|
||||
injector::WriteMemory<double>(imageBase + 0xB77730, (double)aniFps, true); // Lua Common.FPS
|
||||
injector::WriteMemory<float>(imageBase + 0xB77814, (float)aniFps, true); // Compressed Animation Frame Rate
|
||||
}
|
||||
|
||||
if (ToBool(config["General"]["UnlockAllSongs"]))
|
||||
{
|
||||
injector::WriteMemoryRaw(imageBase + 0x314E8D, "\xB0\x01", 2, true); // 32 C0 (XOR AL, AL) -> B0 01 (MOV AL, 1)
|
||||
}
|
||||
|
||||
if (ToBool(config["General"]["SharedAudioMode"]))
|
||||
{
|
||||
injector::WriteMemory<BYTE>(imageBase + 0x692E17, 0xEB, true); // 74 (JZ) -> EB (JMP)
|
||||
}
|
||||
|
||||
// Hooks
|
||||
MH_Initialize();
|
||||
|
||||
MH_CreateHookApi(L"user32.dll", "CreateWindowExW", CreateWindowExWHook, (void**)&CreateWindowExWOri);
|
||||
MH_CreateHookApi(L"user32.dll", "ShowCursor", ShowCursorHook, (void**)&ShowCursorOri);
|
||||
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_ClearSram", bnusio_ClearSram, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_Close", bnusio_Close, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_Communication", bnusio_Communication, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_DecCoin", bnusio_DecCoin, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_DecService", bnusio_DecService, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetAnalogIn", bnusio_GetAnalogIn, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetBuffer", bnusio_GetBuffer, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetCDOut", bnusio_GetCDOut, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetCoin", bnusio_GetCoin, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetCoinError", bnusio_GetCoinError, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetCoinLock", bnusio_GetCoinLock, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetEncoder", bnusio_GetEncoder, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetExpansionMode", bnusio_GetExpansionMode, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetFirmwareVersion", bnusio_GetFirmwareVersion, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetGout", bnusio_GetGout, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetHopOut", bnusio_GetHopOut, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetIoBoardName", bnusio_GetIoBoardName, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetRegisterU16", bnusio_GetRegisterU16, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetRegisterU8", bnusio_GetRegisterU8, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetService", bnusio_GetService, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetServiceError", bnusio_GetServiceError, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetStatusU16", bnusio_GetStatusU16, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetStatusU8", bnusio_GetStatusU8, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetSwIn", bnusio_GetSwIn, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetSwIn64", bnusio_GetSwIn64, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_GetSystemError", bnusio_GetSystemError, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_IsConnected", bnusio_IsConnected, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_IsWideUsio", bnusio_IsWideUsio, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_Open", bnusio_Open, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_ResetCoin", bnusio_ResetCoin, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_ResetIoBoard", bnusio_ResetIoBoard, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_SetBuffer", bnusio_SetBuffer, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_SetCDOut", bnusio_SetCDOut, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_SetCoinLock", bnusio_SetCoinLock, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_SetExpansionMode", bnusio_SetExpansionMode, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_SetGout", bnusio_SetGout, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_SetHopOut", bnusio_SetHopOut, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_SetHopperLimit", bnusio_SetHopperLimit, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_SetHopperRequest", bnusio_SetHopperRequest, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_SetPLCounter", bnusio_SetPLCounter, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_SetRegisterU16", bnusio_SetRegisterU16, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_SetRegisterU8", bnusio_SetRegisterU8, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_SetSystemError", bnusio_SetSystemError, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_SramRead", bnusio_SramRead, NULL);
|
||||
MH_CreateHookApi(L"bnusio.dll", "bnusio_SramWrite", bnusio_SramWrite, NULL);
|
||||
|
||||
MH_CreateHookApi(L"nbamUsbFinder.dll", "nbamUsbFinderInitialize", nbamUsbFinderInitialize, NULL);
|
||||
MH_CreateHookApi(L"nbamUsbFinder.dll", "nbamUsbFinderRelease", nbamUsbFinderRelease, NULL);
|
||||
MH_CreateHookApi(L"nbamUsbFinder.dll", "nbamUsbFinderGetSerialNumber", nbamUsbFinderGetSerialNumber, NULL);
|
||||
|
||||
MH_CreateHookApi(L"xinput9_1_0.dll", "XInputGetState", XInputGetStateHook, NULL);
|
||||
MH_CreateHookApi(L"xinput9_1_0.dll", "XInputSetState", XInputSetStateHook, NULL);
|
||||
MH_CreateHookApi(L"xinput9_1_0.dll", "XInputGetCapabilities", XInputGetCapabilitiesHook, NULL);
|
||||
|
||||
MH_EnableHook(MH_ALL_HOOKS);
|
||||
}, GameID::TaikoV8);
|
||||
#endif
|
@ -781,8 +781,11 @@ void GameDetect::DetectCurrentGame()
|
||||
case 0x4fade723: // GGS 1.2
|
||||
SetGameId(GameID::GGS, "Guilty Gear Strive");
|
||||
break;
|
||||
case 0x72F9B475:
|
||||
SetGameId(GameID::Taiko, "Taiko no Tatsujin Nijiiro");
|
||||
case 0x72F9B475: // 00.18
|
||||
SetGameId(GameID::TaikoV0, "Taiko no Tatsujin Nijiiro (Version 00.18)");
|
||||
break;
|
||||
case 0xA12445B9:
|
||||
SetGameId(GameID::TaikoV8, "Taiko no Tatsujin Nijiiro (Version 08.18)");
|
||||
break;
|
||||
case 0xd9557fd6: // Base and 1.2
|
||||
case 0x8fdfa4dd: // Patched Base and 1.2
|
||||
|
@ -116,7 +116,8 @@ enum class GameID
|
||||
UmifreshTest,
|
||||
RollingGunner,
|
||||
Aleste,
|
||||
Taiko,
|
||||
TaikoV0,
|
||||
TaikoV8,
|
||||
WMMT5DX,
|
||||
Aleste11,
|
||||
CottonRocknRollA,
|
||||
|
Loading…
x
Reference in New Issue
Block a user