Add support for DariusBurst 1.16
- Add support for DariusBurst 1.16 - Fix test menu in DariusBurst 1.05 - Fix a typo
This commit is contained in:
parent
ab4a5abe1c
commit
f25e1574bc
@ -99,7 +99,7 @@ static InitFunction initFunction_DariusBurst([]()
|
||||
|
||||
// Ignore cryptopipe check.
|
||||
// NOTE: This could be cause for the non-working TEST MODE. No time to analyze since dump was released and we want to give instant support.
|
||||
injector::WriteMemory<BYTE>(imageBase + 0x2CC753, 0xEB, true);
|
||||
//injector::WriteMemory<BYTE>(imageBase + 0x2CC753, 0xEB, true);
|
||||
|
||||
// D:
|
||||
injector::WriteMemoryRaw(imageBase + 0x482F38, "\x2E\x5C\x44", 3, true); // D:\%s%04d%02d%02d_%02d%02d%02d_
|
||||
@ -119,9 +119,59 @@ static InitFunction initFunction_DariusBurst([]()
|
||||
// NOTE: Nezarn is pro
|
||||
injector::WriteMemoryRaw(imageBase + 0x4D4E34, "\x30\x2E\x30\x66\x20\x20\x20\x20", 8, true); // 0.0f
|
||||
injector::WriteMemoryRaw(imageBase + 0x4D4E4C, "\x2A\x20\x30\x2E\x30\x66\x20\x20\x20\x20\x20\x2D", 12, true); // * 0.0f -
|
||||
|
||||
#if _M_IX86
|
||||
init_CryptoPipe(GameDetect::NesicaKey);
|
||||
#endif
|
||||
}, GameID::DariusBurst);
|
||||
|
||||
static InitFunction initFunction_DariusBurst116([]()
|
||||
{
|
||||
init_FastIoEmu();
|
||||
init_RegHooks();
|
||||
init_NesysEmu(true);
|
||||
|
||||
uintptr_t imageBase = (uintptr_t)GetModuleHandleA(0);
|
||||
|
||||
// Ignore cryptopipe check.
|
||||
// NOTE: This could be cause for the non-working TEST MODE. No time to analyze since dump was released and we want to give instant support.
|
||||
//injector::WriteMemory<BYTE>(imageBase + 0x302743, 0xEB, true);
|
||||
|
||||
// D:
|
||||
injector::WriteMemoryRaw(imageBase + 0x4EEF68, "\x2E\x5C\x44", 3, true); // D:\%s%04d%02d%02d_%02d%02d%02d_
|
||||
injector::WriteMemoryRaw(imageBase + 0x4EF0D0, "\x2E\x5C\x44", 3, true); // D:\%s/%s/*
|
||||
injector::WriteMemoryRaw(imageBase + 0x4EF0DC, "\x2E\x5C\x44", 3, true); // D:\%s/%s
|
||||
injector::WriteMemoryRaw(imageBase + 0x4EF0E8, "\x2E\x5C\x44", 3, true); // D:\%s/*
|
||||
injector::WriteMemoryRaw(imageBase + 0x4EF0F0, "\x2E\x5C\x44", 3, true); // D:\%s
|
||||
injector::WriteMemoryRaw(imageBase + 0x50E980, "\x2E\x5C\x44", 3, true); // D:\EDData
|
||||
injector::WriteMemoryRaw(imageBase + 0x50EB58, "\x2E\x5C\x44", 3, true); // D:\EDData
|
||||
injector::WriteMemoryRaw(imageBase + 0x5145E0, "\x2E\x5C\x44", 3, true); // D:\EDData
|
||||
injector::WriteMemoryRaw(imageBase + 0x539190, "\x2E\x5C\x44", 3, true); // D:\EDData
|
||||
injector::WriteMemoryRaw(imageBase + 0x539240, "\x2E\x5C\x44", 3, true); // Proclog
|
||||
injector::WriteMemoryRaw(imageBase + 0x50DD84, "\x2E\x5C\x44", 3, true); // D:\EDData\event000.pxk
|
||||
injector::WriteMemoryRaw(imageBase + 0x50DD9C, "\x2E\x5C\x44", 3, true); // D:\EDData\ev
|
||||
injector::WriteMemoryRaw(imageBase + 0x50E8EC, "\x2E\x5C\x44", 3, true); // D:\EDData\ev
|
||||
injector::WriteMemoryRaw(imageBase + 0x50E8FC, "\x2E\x5C\x44", 3, true); // D:\EDData\ev\event000.sxr
|
||||
injector::WriteMemoryRaw(imageBase + 0x50EB64, "\x2E\x5C\x44", 3, true); // D:\EDData\ev\event000.sxr
|
||||
injector::WriteMemoryRaw(imageBase + 0x50EBE8, "\x2E\x5C\x44", 3, true); // D:\EDData\ev
|
||||
injector::WriteMemoryRaw(imageBase + 0x50EBF8, "\x2E\x5C\x44", 3, true); // D:\EDData\ev\event000.sxr
|
||||
injector::WriteMemoryRaw(imageBase + 0x517464, "\x2E\x5C\x44", 3, true); // D:\EDData\news000.tx2
|
||||
injector::WriteMemoryRaw(imageBase + 0x51747C, "\x2E\x5C\x44", 3, true); // D:\EDData\news000.tx2
|
||||
injector::WriteMemoryRaw(imageBase + 0x517494, "\x2E\x5C\x44", 3, true); // D:\EDData\news000.tx2
|
||||
injector::WriteMemoryRaw(imageBase + 0x518524, "\x2E\x5C\x44", 3, true); // D:\EDData\ev
|
||||
injector::WriteMemoryRaw(imageBase + 0x5660FC, "\x2E\x5C\x44", 3, true); // D:\EDData\ev
|
||||
injector::WriteMemoryRaw(imageBase + 0x56610C, "\x2E\x5C\x44", 3, true); // D:\EDData\ev\event000.sxr
|
||||
|
||||
// D:/
|
||||
injector::WriteMemoryRaw(imageBase + 0x539020, "\x2E\x5C\x44", 3, true);
|
||||
|
||||
// Disable invertion of 2nd screen area
|
||||
injector::WriteMemoryRaw(imageBase + 0x5399CC, "\x30\x2E\x30\x66\x20\x20\x20\x20", 8, true); // 0.0f
|
||||
injector::WriteMemoryRaw(imageBase + 0x5399E4, "\x2A\x20\x30\x2E\x30\x66\x20\x20\x20\x20\x20\x2D", 12, true); // * 0.0f -
|
||||
#if _M_IX86
|
||||
init_CryptoPipe(GameDetect::NesicaKey);
|
||||
#endif
|
||||
}, GameID::DariusBurst116);
|
||||
|
||||
static InitFunction initFunction_PB([]()
|
||||
{
|
||||
uintptr_t imageBase = (uintptr_t)GetModuleHandleA(0);
|
||||
@ -216,16 +266,14 @@ static InitFunction initFunction_Theatrhythm([]()
|
||||
|
||||
}, GameID::Theatrhythm);
|
||||
|
||||
#if _M_IX86
|
||||
static InitFunction initFunction_KOFXIIIClimax([]()
|
||||
{
|
||||
#if _M_IX86
|
||||
init_CryptoPipe(GameDetect::NesicaKey);
|
||||
#endif
|
||||
}, GameID::KOFXIIIClimax);
|
||||
|
||||
static InitFunction initFunction_KOFXIII([]()
|
||||
{
|
||||
#if _M_IX86
|
||||
init_CryptoPipe(GameDetect::NesicaKey);
|
||||
#endif
|
||||
}, GameID::KOFXIII);
|
||||
}, GameID::KOFXIII);
|
||||
#endif
|
@ -12,6 +12,7 @@ const char *key_bbcp = "0702000000a400005253413200020000010001008f35cf7db98ccacf
|
||||
const char *key_kofxiiiclimax = "0702000000A400005253413200020000010001000D20722B0858DCFAE9783F33E67BED82A0C1A3FE17FBB733B056A2337ADA9DAAE028079B07EE25CBCC9C2B72AA6154CEEF898C8CA9F168684D9A3806D6F622D4FF5CFFDDA03325FD7322D1CBF9CD8E45773E116B353871EEF7E5DCAAE3DCE1F8F326C1922DE4B76F1DD075DB788D67B6719126FBB2497FA0CB855F56651334DA152F3AED5D8A53C92A83F08177535B44420FEB2617E932791DC9DB0A26250755FDC37B74BCFF5DDDFDB2E52AE59D7E52042A022D37A9D73339ECA29F0DF60C1F792BCB25A3BCC5ED53D6A0DA2D403246C12EA958C4F5DAE9FFA0D10B7C31ECC3E5DC9A2418104B3A7825FBC527177EE00056176A3176323DE62CC834D36095D26CC9841D331A72814FE0D04BCE0B3A666C6896E0571E77323D5B6797B20168B9";
|
||||
const char *key_persona4ultimix = "0702000000a40000525341320002000001000100359073c4ef2b8e9556ffded09e5e1c4374169ba2a2077e9993c34e7fb3b499d9624f620018afaeeed697d7e72432b488e8e4a2a1b648ee24c9e878d9145a36d87f39dfcfd4aa3751c70039dfb4ce022a85a81d7440287538a41eb3b3d9a0f0fd4b481e274b71af8bdd36ac6f7a930cc67e41be6e65628a50f3779082555ff7d97fb45e4d6973beb316d220bc45e2f20fbd1fd9271cea65ac14b09136d99a31a179ce1933f5343fe930d858769fd7b861c7bf3ecc187792a9c200856822c1ab2138628cb7183dbce115589a4a0f213fd77b91758d13d762714666b97a428723895512e57c29ab3c68113120d7cb3269a605ac483601bd6b1bdac238759d564ea6da64a445fc502251fbeaa2621bd157040c60637371096a6b261d0fcb767f9f7c";
|
||||
const char *key_usf4 = "0702000000a40000525341320002000001000100b77cb7dfef27ca5ed4895576c6a68518bab782e60dae9dffad94434fb9366125e46630352261afe960e8401a3c5ee1cfc15ec2b1849e02a3dcc30e47ea3100a5c7175f9207aab497a9c9c0bf19d30a9fbb294a761147607927163685624dced391d3ae2211c6c11350077070386a195a8641f0e7920ddbcb200f990f55c76dc73de119d62751e5cb6cfa3653481d3e711b666c9a6cc9c2a4e50f4e55ce2831a821d75448cda3a2d6f3b359012bff571842c34a844989a4af0a4a5081cb8dc0780173865658cd8b999f9baaa3febc9c95b1477cd6af5060af603e597b3547fd0021a422c3a2cd0028523b5bd12b23bd4a6d2924ca920870cba2f38477631589cc4251590fba955d114f2ce0d6228c4932c1f2d9b753cda2d646591c48e164820e";
|
||||
const char *key_darius = "0702000000A40000525341320002000001000100659798436F4181BA70679A7849BBA874F385D3DB0C0930309A0953EDDAD69BD9A84AF03E51079AB63ACB0995A91E622BAAD5F929ED76F2FAB0BCE84AA6632AD4C1E08B131E39996E5B725E9A26517C7DA340F6AE3A7D5143C73A796FC437C8EDA57B741EF0496986F69DA4B721F3C949DD067DD87FC75DB5612AB440BABC6BE40159A2679C1436FA6FF05B102ACD2D01C4EDAE5FE24887E26E821BE0DA0D6EAEC579D8FACE455DB749D9A7F663BF7872B9C372E07FF47E32F6C3F9D6E45D2054DC96AE1349F80485CB631D81510197C40B18494EC8B83CD2FD5D4C08CC8922C701C556D993469CEEBBBA7515E4626AF002FE59E0E13F20288730EF2763E71F793DF2790B58F0FF7E226AF3F57AB40CD98894173F16FC97099C05CBC86BF060AC";
|
||||
|
||||
DWORD dword_44DEC4;
|
||||
DWORD dword_44DEC0;
|
||||
@ -78,6 +79,13 @@ DWORD LinkRC5Data(const char* file, void* buf, int gameId)
|
||||
key[i] = num;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
for (int i = 0; i < 308; i++)
|
||||
{
|
||||
sscanf(&key_darius[i * 2], "%02x", &num);
|
||||
key[i] = num;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
for (int i = 0; i < 308; i++)
|
||||
{
|
||||
|
@ -9,7 +9,8 @@ enum class NesicaKey
|
||||
KOFXIIIClimax = 4,
|
||||
Persona4Ultimix = 5,
|
||||
USF4 = 6,
|
||||
NoNet = 7,
|
||||
DariusBurst = 7,
|
||||
NoNet = 8,
|
||||
};
|
||||
|
||||
void init_CryptoPipe(NesicaKey id);
|
@ -53,7 +53,7 @@ int __cdecl iDmacDrvRegisterRead(int DeviceId, DWORD CommandCode, LPVOID OutBuff
|
||||
result = 0x00FF00FF;
|
||||
break;
|
||||
case 0x4004:
|
||||
if (GameDetect::currentGame == GameID::DariusBurst)
|
||||
if (GameDetect::currentGame == GameID::DariusBurst || GameDetect::currentGame == GameID::DariusBurst116)
|
||||
{
|
||||
// I/O error without this switch
|
||||
result = 0x00FF00FF;
|
||||
@ -67,7 +67,7 @@ int __cdecl iDmacDrvRegisterRead(int DeviceId, DWORD CommandCode, LPVOID OutBuff
|
||||
result = g_fastIOValues[0] + ((DWORD)g_fastIOValues[1] * 0x100) + ((DWORD)g_fastIOValues[2] * 0x10000) + ((DWORD)g_fastIOValues[3] * 0x1000000);
|
||||
break;
|
||||
case 0x4124: // Analogs 1
|
||||
if (GameDetect::currentGame == GameID::DariusBurst)
|
||||
if (GameDetect::currentGame == GameID::DariusBurst || GameDetect::currentGame == GameID::DariusBurst116)
|
||||
{
|
||||
// Sound volume to maximum
|
||||
result = 0xFF;
|
||||
|
@ -424,6 +424,13 @@ void GameDetect::DetectCurrentGame()
|
||||
if (*(uint32_t*)(moduleBase + 0x2CC751) == 0x6B75C084)
|
||||
{
|
||||
currentGame = GameID::DariusBurst;
|
||||
NesicaKey = NesicaKey::DariusBurst;
|
||||
break;
|
||||
}
|
||||
if (*(uint32_t*)(moduleBase + 0x302741) == 0x7075C084)
|
||||
{
|
||||
currentGame = GameID::DariusBurst116;
|
||||
NesicaKey = NesicaKey::DariusBurst;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -49,6 +49,7 @@ enum class GameID
|
||||
Daytona3,
|
||||
MB4,
|
||||
DariusBurst,
|
||||
DariusBurst116,
|
||||
GTIClub3,
|
||||
GRID,
|
||||
UltraStreetFighterIV,
|
||||
|
Loading…
x
Reference in New Issue
Block a user