void LoadHBCStub ( void )
{
//LoadHBCStub: Load HBC JODI reload Stub and change stub to haxx if needed.
//the first part of the title is at 0x800024CA (first 2 bytes) and 0x800024D2 (last 2 bytes)
//HBC < 1.0.5 = HAXX or 4841 5858
//HBC >= 1.0.5 = JODI or 4A4F 4449
//HBC >= 1.0.7 = .... or AF1B F516
if ( *(vu32*)0x80001804 == 0x53545542 && *(vu32*)0x80001808 == 0x48415858 )
{
return;
}
//load Stub, contains JODI by default.
memcpy((void*)0x80001800, stub_bin, stub_bin_size);
DCFlushRange((void*)0x80001800,stub_bin_size);
//see if changes are needed to change it to the right ID
switch(DetectHBC())
{
default: //not good, no HBC was detected >_> lets keep the stub anyway
gprintf("HBC stub : No HBC Detected!1.0.8 stub loaded by default\n");
case 3:
*(vu16*)0x800024CA = 0xAF1B;
*(vu16*)0x800024D2 = 0xF516;
DCFlushRange((void*)0x80001800,stub_bin_size);
break;
case 1: //HAXX
*(vu16*)0x800024CA = 0x4841;//"HA";
*(vu16*)0x800024D2 = 0x5858;//"XX";
DCFlushRange((void*)0x80001800,stub_bin_size);
case 2: //JODI, no changes are needed
break;
}
gprintf("HBC stub : Loaded\n");
return;
}