From e0c98d4e33d84239b1c1508c89671d6b4e86e7c0 Mon Sep 17 00:00:00 2001 From: Bobby Dilley Date: Sat, 9 Mar 2024 21:47:51 +0000 Subject: [PATCH] Fix ghost squad --- src/lindbergh/config.c | 4 +++- src/lindbergh/patch.c | 11 +++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/lindbergh/config.c b/src/lindbergh/config.c index bd3a69a..471a0e0 100644 --- a/src/lindbergh/config.c +++ b/src/lindbergh/config.c @@ -282,7 +282,9 @@ static int detectGame(uint32_t elf_crc) case GHOST_SQUAD_EVOLUTION: { config.gameTitle = "Ghost Squad Evolution"; - config.gameStatus = NOT_WORKING; + config.gameStatus = WORKING; + config.gameDVP = "DVP-0029A"; + config.gameID = "SBNJ"; return 0; } break; diff --git a/src/lindbergh/patch.c b/src/lindbergh/patch.c index 89e33e4..82ce4bb 100644 --- a/src/lindbergh/patch.c +++ b/src/lindbergh/patch.c @@ -133,6 +133,8 @@ int amDongleUserInfoEx(int a, int b, char *_arcadeContext) memcpy(_arcadeContext, "SBPF", 4); else if (getConfig()->crc32 == HUMMER_EXTREME) memcpy(_arcadeContext, "SBST", 4); + else if (getConfig()->crc32 == GHOST_SQUAD_EVOLUTION) + memcpy(_arcadeContext, getConfig()->gameID, 4); return 0; } @@ -998,11 +1000,16 @@ int initPatch() detourFunction(0x08183046, amDongleInit); detourFunction(0x08181a91, amDongleIsAvailable); detourFunction(0x081824f5, amDongleUpdate); + detourFunction(0x08181aae, amDongleIsDevelop); + detourFunction(0x08182f0d, amDongleUserInfoEx); // Fixes detourFunction(0x0818191d, amDipswGetData); detourFunction(0x08181994, stubRetZero); - // patchMemory(0x807c9ec, "01"); - // detourFunction(0x080f3f94, stubRetZero); //eliminates init_heap function. + + patchMemory(0x080f37dd, "75"); + patchMemory(0x080e7db2, "01"); + patchMemory(0x0009FF41, "15"); + patchMemory(0x080e7f5f, "B80100000090"); } break; case HUMMER_EXTREME: