1
0
mirror of synced 2025-02-07 23:01:30 +01:00

- Fix Vampire Savior (Nesica) when running from D:\

- Fix Vampire Savior (Nesica) when running from D:\ , saves\loads test menu settings properly
This commit is contained in:
Nezarn 2020-06-27 13:55:01 +02:00
parent 012642229e
commit 5deeed3338
4 changed files with 45 additions and 21 deletions

View File

@ -287,6 +287,16 @@ static InitFunction initFunction_KOF98Nesica([]()
#endif #endif
}, GameID::KOF98Nesica); }, GameID::KOF98Nesica);
static InitFunction initFunction_VampireSavior([]()
{
init_FastIoEmu();
init_RfidEmu();
init_RegHooks();
#if _M_IX86
init_CryptoPipe(GameDetect::NesicaKey);
#endif
}, GameID::VampireSavior);
static InitFunction initFunction_Theatrhythm([]() static InitFunction initFunction_Theatrhythm([]()
{ {
uintptr_t imageBase = (uintptr_t)GetModuleHandleA(0); uintptr_t imageBase = (uintptr_t)GetModuleHandleA(0);

View File

@ -777,14 +777,11 @@ LPCSTR ParseFileNamesA(LPCSTR lpFileName)
{ {
if (GameDetect::currentGame == GameID::HyperStreetFighterII) if (GameDetect::currentGame == GameID::HyperStreetFighterII)
{ {
//info(true, "ParseFileNamesA: %s", lpFileName);
if (!strncmp(lpFileName, "D:\\3", 4)) if (!strncmp(lpFileName, "D:\\3", 4))
{ {
memset(moveBuf, 0, 256); memset(moveBuf, 0, 256);
if (lpFileName[3] == '3') if (lpFileName[3] == '3')
{ {
//info(true, "ParseFileNamesA: %s -> .\\OpenParrot\\%s", lpFileName, lpFileName + 3);
sprintf(moveBuf, ".\\OpenParrot\\%s", lpFileName + 3); sprintf(moveBuf, ".\\OpenParrot\\%s", lpFileName + 3);
} }
return moveBuf; return moveBuf;
@ -795,14 +792,11 @@ LPCSTR ParseFileNamesA(LPCSTR lpFileName)
if (GameDetect::currentGame == GameID::StreetFigherZero3) if (GameDetect::currentGame == GameID::StreetFigherZero3)
{ {
//info(true, "ParseFileNamesA: %s", lpFileName);
if (!strncmp(lpFileName, "D:\\c", 4)) if (!strncmp(lpFileName, "D:\\c", 4))
{ {
memset(moveBuf, 0, 256); memset(moveBuf, 0, 256);
if (lpFileName[3] == 'c') if (lpFileName[3] == 'c')
{ {
//info(true, "ParseFileNamesA: %s -> .\\OpenParrot\\%s", lpFileName, lpFileName + 3);
sprintf(moveBuf, ".\\OpenParrot\\%s", lpFileName + 3); sprintf(moveBuf, ".\\OpenParrot\\%s", lpFileName + 3);
} }
return moveBuf; return moveBuf;
@ -813,14 +807,11 @@ LPCSTR ParseFileNamesA(LPCSTR lpFileName)
if (GameDetect::currentGame == GameID::StreetFighter3rdStrike) if (GameDetect::currentGame == GameID::StreetFighter3rdStrike)
{ {
//info(true, "ParseFileNamesA: %s", lpFileName);
if (!strncmp(lpFileName, "D:\\9", 4)) if (!strncmp(lpFileName, "D:\\9", 4))
{ {
memset(moveBuf, 0, 256); memset(moveBuf, 0, 256);
if (lpFileName[3] == '9') if (lpFileName[3] == '9')
{ {
//info(true, "ParseFileNamesA: %s -> .\\OpenParrot\\%s", lpFileName, lpFileName + 3);
sprintf(moveBuf, ".\\OpenParrot\\%s", lpFileName + 3); sprintf(moveBuf, ".\\OpenParrot\\%s", lpFileName + 3);
} }
return moveBuf; return moveBuf;
@ -831,14 +822,11 @@ LPCSTR ParseFileNamesA(LPCSTR lpFileName)
if (GameDetect::currentGame == GameID::RumbleFish2) if (GameDetect::currentGame == GameID::RumbleFish2)
{ {
//info(true, "ParseFileNamesA: %s", lpFileName);
if (!strncmp(lpFileName, "D:\\eb342", 8)) if (!strncmp(lpFileName, "D:\\eb342", 8))
{ {
memset(moveBuf, 0, 256); memset(moveBuf, 0, 256);
if (lpFileName[3] == 'e') if (lpFileName[3] == 'e')
{ {
//info(true, "ParseFileNamesA: %s -> .\\OpenParrot\\%s", lpFileName, lpFileName + 3);
sprintf(moveBuf, ".\\OpenParrot\\%s", lpFileName + 3); sprintf(moveBuf, ".\\OpenParrot\\%s", lpFileName + 3);
} }
return moveBuf; return moveBuf;
@ -851,13 +839,10 @@ LPCSTR ParseFileNamesA(LPCSTR lpFileName)
{ {
if (!strncmp(lpFileName, "d:/SettingKOF98UM", 17) || !strncmp(lpFileName, "d:/RankingKOF98UM", 17) || !strncmp(lpFileName, "d:/CoinFileKOF98UM", 18)) if (!strncmp(lpFileName, "d:/SettingKOF98UM", 17) || !strncmp(lpFileName, "d:/RankingKOF98UM", 17) || !strncmp(lpFileName, "d:/CoinFileKOF98UM", 18))
{ {
//info(true, "ParseFileNamesA !!!!!SettingKOF98UM!!!: %s", lpFileName, lpFileName); // OK
memset(moveBuf, 0, 256); memset(moveBuf, 0, 256);
if (lpFileName[2] == '\\' || lpFileName[2] == '/') if (lpFileName[2] == '\\' || lpFileName[2] == '/')
{ {
sprintf(moveBuf, ".\\OpenParrot\\%s", lpFileName + 3); sprintf(moveBuf, ".\\OpenParrot\\%s", lpFileName + 3);
//info(true, "ParseFileNamesA: %s -> .\\OpenParrot\\%s", lpFileName, lpFileName + 3);
} }
return moveBuf; return moveBuf;
@ -865,11 +850,8 @@ LPCSTR ParseFileNamesA(LPCSTR lpFileName)
if (!strncmp(lpFileName, "SettingKOF98UM*.txt", 19) || !strncmp(lpFileName, "RankingKOF98UM*.txt", 19) || !strncmp(lpFileName, "CoinFileKOF98UM*.txt", 20)) if (!strncmp(lpFileName, "SettingKOF98UM*.txt", 19) || !strncmp(lpFileName, "RankingKOF98UM*.txt", 19) || !strncmp(lpFileName, "CoinFileKOF98UM*.txt", 20))
{ {
//info(true, "ParseFileNamesA ASTERISK: %s", lpFileName, lpFileName); // OK
memset(moveBuf, 0, 256); memset(moveBuf, 0, 256);
sprintf(moveBuf, ".\\OpenParrot\\%s", lpFileName); sprintf(moveBuf, ".\\OpenParrot\\%s", lpFileName);
//info(true, "ParseFileNamesA ASTERISK: %s -> .\\OpenParrot\\%s", lpFileName, lpFileName);
return moveBuf; return moveBuf;
} }
@ -893,6 +875,22 @@ LPCSTR ParseFileNamesA(LPCSTR lpFileName)
return lpFileName; return lpFileName;
} }
if (GameDetect::currentGame == GameID::VampireSavior)
{
if (!strncmp(lpFileName, "D:\\0343d7a98baf803c268e7ed73239464b", 35))
{
memset(moveBuf, 0, 256);
if (lpFileName[3] == '0')
{
sprintf(moveBuf, ".\\OpenParrot\\%s", lpFileName + 3);
}
return moveBuf;
}
return lpFileName;
}
if (!strncmp(lpFileName, "D:", 2) || !strncmp(lpFileName, "d:", 2)) if (!strncmp(lpFileName, "D:", 2) || !strncmp(lpFileName, "d:", 2))
{ {
memset(moveBuf, 0, 256); memset(moveBuf, 0, 256);
@ -1014,6 +1012,22 @@ LPCWSTR ParseFileNamesW(LPCWSTR lpFileName)
return lpFileName; return lpFileName;
} }
if (GameDetect::currentGame == GameID::VampireSavior)
{
if (!wcsncmp(lpFileName, L"D:\\0343d7a98baf803c268e7ed73239464b", 35))
{
memset(moveBufW, 0, 256);
if (lpFileName[3] == '0')
{
swprintf(moveBufW, L".\\OpenParrot\\%s", lpFileName + 3);
}
return moveBufW;
}
return lpFileName;
}
if (!wcsncmp(lpFileName, L"D:", 2) || !wcsncmp(lpFileName, L"d:", 2)) if (!wcsncmp(lpFileName, L"D:", 2) || !wcsncmp(lpFileName, L"d:", 2))
{ {
memset(moveBufW, 0, 256); memset(moveBufW, 0, 256);

View File

@ -161,10 +161,9 @@ void GameDetect::DetectCurrentGame()
break; break;
case 0x19ba6a0c: // Vampire Savior - The Lord of Vampire case 0x19ba6a0c: // Vampire Savior - The Lord of Vampire
case 0x7cc54950: // Test.exe case 0x7cc54950: // Test.exe
currentGame = GameID::Nesica; currentGame = GameID::VampireSavior;
NesicaKey = NesicaKey::None; NesicaKey = NesicaKey::None;
isNesica = true; isNesica = true;
GameDetect::enableNesysEmu = false;
break; break;
case 0xf6e33d2b: // Exception case 0xf6e33d2b: // Exception
currentGame = GameID::Nesica; currentGame = GameID::Nesica;

View File

@ -78,5 +78,6 @@ enum class GameID
StreetFigherZero3, StreetFigherZero3,
StreetFighter3rdStrike, StreetFighter3rdStrike,
RumbleFish2, RumbleFish2,
KOF98Nesica KOF98Nesica,
VampireSavior
}; };