mirror of
https://github.com/jpd002/Play-.git
synced 2025-04-28 13:47:57 +03:00
Add patches in game config file.
This commit is contained in:
parent
3dafb40510
commit
06db080a5f
2 changed files with 34 additions and 0 deletions
|
@ -1,4 +1,8 @@
|
|||
<GameConfigs>
|
||||
<GameConfig Executable="SLUS_200.24;1" Title="Blood Omen 2">
|
||||
<Patch Address="0x00463018" Value="0x03E00008" Description="Nullify custom exception handler." />
|
||||
<Patch Address="0x0046301C" Value="0x24020001" Description="Nullify custom exception handler." />
|
||||
</GameConfig>
|
||||
<GameConfig Executable="SLUS_204.71;1" Title="Rygar - The Legendary Adventure">
|
||||
<BlockFpRoundingMode Address="0x00147D88" Mode="NEAREST" Description="Fixes hang when entering first door." />
|
||||
</GameConfig>
|
||||
|
@ -11,4 +15,16 @@
|
|||
<GameConfig Executable="SLUS_213.06;1" Title="Ghost Rider">
|
||||
<IdleLoopBlock Address="0x002F43E8" />
|
||||
</GameConfig>
|
||||
<GameConfig Executable="SLES_501.76;1" Title="Oni">
|
||||
<Patch Address="0x001cef7c" Value="0x00000000 // bc0f $001cef7c" Description="Fix hang by skip branch if copro 0 condition false." />
|
||||
</GameConfig>
|
||||
<GameConfig Executable="SLPM_551.91;1" Title="L2 - Love x Loop">
|
||||
<Patch Address="0x001B4828" Value="0x10000008" Description="Avoid bug in code that fiddles with SP and causes the stack to be clobbered by SifCallRpc. Requires proper data cache handling to avoid issue." />
|
||||
</GameConfig>
|
||||
<GameConfig Executable="SCES_500.03;1" Title="Dead or Alive 2">
|
||||
<Patch Address="0x002b4c44" Value="0x24060000" Description="Make the file reading RPC call synchronous. Requires proper data cache handling to avoid issue." />
|
||||
</GameConfig>
|
||||
<GameConfig Executable="SLPS_250.02;1" Title="Dead or Alive 2">
|
||||
<Patch Address="0x00290408" Value="0x24060000" Description="Make the file reading RPC call synchronous. Requires proper data cache handling to avoid issue." />
|
||||
</GameConfig>
|
||||
</GameConfigs>
|
||||
|
|
|
@ -676,6 +676,24 @@ void CPS2OS::ApplyGameConfig()
|
|||
|
||||
//Found the right executable, apply config
|
||||
|
||||
for(Framework::Xml::CFilteringNodeIterator itNode(gameConfigNode, "Patch");
|
||||
!itNode.IsEnd(); itNode++)
|
||||
{
|
||||
auto patch = (*itNode);
|
||||
|
||||
const char* addressString = patch->GetAttribute("Address");
|
||||
const char* valueString = patch->GetAttribute("Value");
|
||||
|
||||
if(!addressString) continue;
|
||||
if(!valueString) continue;
|
||||
|
||||
uint32 value = 0, address = 0;
|
||||
if(sscanf(addressString, "%x", &address) == 0) continue;
|
||||
if(sscanf(valueString, "%x", &value) == 0) continue;
|
||||
|
||||
*reinterpret_cast<uint32*>(m_ram + address) = value;
|
||||
}
|
||||
|
||||
for(Framework::Xml::CFilteringNodeIterator itNode(gameConfigNode, "BlockFpRoundingMode");
|
||||
!itNode.IsEnd(); itNode++)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue