1
0
mirror of synced 2025-02-01 12:17:55 +01:00

RFID can now be inserted, proper XMLs are however required to load data on games.

This commit is contained in:
Nico Giansanti 2019-04-18 04:40:54 +03:00
parent 7cd2bd245f
commit cf94067d43
5 changed files with 55 additions and 11 deletions

View File

@ -25,6 +25,18 @@ static int ReturnTrue()
return 1;
}
static InitFunction initFunction_USF4([]()
{
init_FastIoEmu();
init_RfidEmu();
init_RegHooks();
if (GameDetect::enableNesysEmu)
init_NesysEmu();
#if _M_IX86
init_CryptoPipe(GameDetect::NesicaKey);
#endif
}, GameID::UltraStreetFighterIVDevExe);
static InitFunction initFunction_GC2([]()
{
uintptr_t imageBase = (uintptr_t)GetModuleHandleA(0);

View File

@ -57,7 +57,7 @@ NesysEmu::NesysEmu()
char server[];
};
const char* wat = "card_id=42";
const char* wat = "card_id=7020392010281502";
nesys_cert_init_response* response = (nesys_cert_init_response*)malloc(sizeof(nesys_cert_init_response) + strlen(wat));
response->tenpo.tenpo_id = 1337;
@ -105,6 +105,7 @@ NesysEmu::NesysEmu()
// get card
m_commandHandlers[LCOMMAND_CARD_SELECT_REQUEST] = [=](const uint8_t* dataa, size_t length)
{
OutputDebugStringA("Getting card data");
struct __declspec(align(4)) _CARD_GETDATA
{
char cardId[16];
@ -117,8 +118,9 @@ NesysEmu::NesysEmu()
FILE* f = fopen(va("card_%.16s_%d.bin", card->cardId, card->dataType), "rb");
size_t dataSize = 0;
size_t dataSize = 16384;
char data[16384];
memset(data, 0x0, 0x4000);
if (f)
{
@ -141,8 +143,8 @@ NesysEmu::NesysEmu()
cardstatus* s = (cardstatus*)malloc(sizeof(cardstatus) + dataSize);
s->status = 1;
s->times = 0;
s->days = 0;
s->times = 100;
s->days = 100;
s->size = dataSize;
memcpy(s->data, data, s->size);
@ -203,8 +205,8 @@ NesysEmu::NesysEmu()
cardstatus* s = (cardstatus*)malloc(sizeof(cardstatus) + card->dataSize);
s->status = 1;
s->times = 0;
s->days = 0;
s->times = 100;
s->days = 100;
s->size = card->dataSize;
memcpy(s->data, card->data, s->size);
@ -239,7 +241,7 @@ NesysEmu::NesysEmu()
SendResponse(SCOMMAND_INCOME_STATUS_REPLY, &r);
};
m_commandHandlers[LCOMMAND_RANKING_DATA_REQUEST] = [=](const uint8_t* data, size_t length)
m_commandHandlers[LCOMMAND_RANKING_DATA_REQUEST] = [=](const uint8_t* dataa, size_t length)
{
struct ranking
{

View File

@ -242,7 +242,7 @@ int handleReadGeneralPurposeInput(jprot_encoder *r, DWORD arg1)
for(DWORD i = 0; i < arg1; i++)
{
if (cardInserted)
r->push(0x19);
r->push(0x19); // This should be only injected with first package of the 3, but does not seem to care.
else
r->push(0);
}
@ -258,7 +258,7 @@ static char cardData[0x18] = { 0x04, 0xC2, 0x3D, 0xDA, 0x6F, 0x52, 0x80, 0x00, 0
int handleReadGeneralPurposeOutput(jprot_encoder *r, DWORD arg1)
{
#ifdef _DEBUG
OutputDebugStringA("Requested card data!");
//OutputDebugStringA("Requested card data!");
#endif
r->report(JVS_REPORT_OK);
if(cardInserted)
@ -978,6 +978,28 @@ static HANDLE __stdcall FindFirstFileWWrap(
return g_origFindFirstFileW(ParseFileNamesW(lpFileName), lpFindFileData);
}
static DWORD WINAPI InsertCardThread(LPVOID)
{
static bool keyDown;
while (true)
{
if (GetAsyncKeyState(VK_F4))
{
if (!keyDown)
{
cardInserted = !cardInserted;
keyDown = true;
}
}
else
{
keyDown = false;
}
Sleep(100);
}
return 1;
}
void init_RfidEmu()
{
MH_Initialize();
@ -1003,4 +1025,6 @@ void init_RfidEmu()
MH_CreateHookApi(L"kernel32.dll", "SetCommTimeouts", SetCommTimeoutsWrap, (void**)&g_origSetCommTimeouts);
MH_CreateHookApi(L"kernel32.dll", "GetCommTimeouts", GetCommTimeoutsWrap, (void**)&g_origGetCommTimeouts);
MH_EnableHook(MH_ALL_HOOKS);
CreateThread(0, 0, InsertCardThread, 0, 0, 0);
}

View File

@ -26,11 +26,15 @@ void GameDetect::DetectCurrentGame()
isNesica = true;
break;
case 0xcb4ab9d6:
case 0x385ad385:
currentGame = GameID::Nesica;
NesicaKey = NesicaKey::USF4;
isNesica = true;
break;
case 0x385ad385:
currentGame = GameID::UltraStreetFighterIVDevExe;
NesicaKey = NesicaKey::USF4;
isNesica = true;
break;
case 0x1d396bf2:
currentGame = GameID::MagicalBeat;
NesicaKey = NesicaKey::MagicalBeat;

View File

@ -49,5 +49,7 @@ enum class GameID
MB4,
DariusBurst,
GTIClub3,
GRID
GRID,
UltraStreetFighterIV,
UltraStreetFighterIVDevExe
};