User:Scalerize: Difference between revisions

From PS4 Developer wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
<pre>
TODO:
apiRequest(0.1)


local eeObj = getEEObject()
1: Patch IOP to fix the restarting music
local emuObj = getEmuObject()
2: Patch the instruction causing Ratchet to fall
-- We only need to write these opcodes once. Writing in perpetuity is unharmful, sure, but unneeded!
3: Refine the patch's performance
eeObj.WriteMem32(0x0011F38C, 0x0803FFC8) -- <-- //Address to change for other Ratchet games
eeObj.WriteMem32(0x000FFF20, 0x3C1B000F)
eeObj.WriteMem32(0x000FFF24, 0x377BFF00)
eeObj.WriteMem32(0x000FFF28, 0xAF770000)
eeObj.WriteMem32(0x000FFF2C, 0xAF760004)
eeObj.WriteMem32(0x000FFF30, 0xAF750008)
eeObj.WriteMem32(0x000FFF34, 0xAF74000C)
eeObj.WriteMem32(0x000FFF38, 0x3C1701FF)
eeObj.WriteMem32(0x000FFF3C, 0x36F7FCF0)
eeObj.WriteMem32(0x000FFF40, 0x24167000)
eeObj.WriteMem32(0x000FFF44, 0x26D618B4)
eeObj.WriteMem32(0x000FFF48, 0x8EF70000)
eeObj.WriteMem32(0x000FFF4C, 0x02D7B821)
eeObj.WriteMem32(0x000FFF50, 0x3C157120)
eeObj.WriteMem32(0x000FFF54, 0x36B5CDA8)
eeObj.WriteMem32(0x000FFF5C, 0x12950004)
eeObj.WriteMem32(0x000FFF58, 0x8EF40000)
eeObj.WriteMem32(0x000FFF64, 0x26F70004)
eeObj.WriteMem32(0x000FFF68, 0x1000FFFB)
eeObj.WriteMem32(0x000FFF70, 0xAF770010)
eeObj.WriteMem32(0x000FFF74, 0x8F740014)
eeObj.WriteMem32(0x000FFF78, 0x12970004)
eeObj.WriteMem32(0x000FFF80, 0x24160150) --Ensures the vsync hook catches the value
eeObj.WriteMem32(0x000FFF84, 0x26D6FFFF)
eeObj.WriteMem32(0x000FFF88, 0x16C0FFFE)
eeObj.WriteMem32(0x000FFF90, 0x8F74000C)
eeObj.WriteMem32(0x000FFF94, 0x8F760004)
eeObj.WriteMem32(0x000FFF98, 0x8F750008)
eeObj.WriteMem32(0x000FFF9C, 0xAF770014)
eeObj.WriteMem32(0x000FFFA0, 0x8F770000)
eeObj.WriteMem32(0x000FFFA4, 0x241B0000)
eeObj.WriteMem32(0x000FFFA8, 0x08047CE4) -- <-- //Opcode to change for other Ratchet games
 
--Continuously check for updates, and patch the necessary offsets
local Hooks = function()
 
if  eeObj.ReadMem32(0x000FFF10) ~= 0 and eeObj.ReadMem32(0x000FFF14) ~= eeObj.ReadMem32(0x000FFF10) then
--Add new hooks
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10),0x7120CDA8, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x8,0x00000000, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0xB8,0x00000000, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0xC0,0x00000000, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x158,0x701188FC, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x160,0x70E0CDA8, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x1F8,0x7019CC3F, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x200,0x00000000, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x2A8,0x7120CDA8, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x2B0,0x7009E688, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x350,0x00000000, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x358,0x00000000, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x3F0,0x701188FC, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x3F8,0x70E0CDA8, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x490,0x7019CC3F, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x498,0x00000000, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x540,0x7120CDA8, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x548,0x7009E688, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x5E8,0x0019C900, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x5F0,0x0325C820, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x688,0x000F7880, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x690,0x22310006, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x728,0x7017BEC8, function() eeObj.AdvanceClock(2000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x730,0x71D18D88, function() eeObj.AdvanceClock(2000) end)
--Remove previous hooks
if  eeObj.ReadMem32(0x000FFF14) ~= 0 then
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14),0x7120CDA8, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x8,0x00000000, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0xB8,0x00000000, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0xC0,0x00000000, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x158,0x701188FC, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x160,0x70E0CDA8, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x1F8,0x7019CC3F, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x200,0x00000000, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x2A8,0x7120CDA8, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x2B0,0x7009E688, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x350,0x00000000, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x358,0x00000000, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x3F0,0x701188FC, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x3F8,0x70E0CDA8, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x490,0x7019CC3F, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x498,0x00000000, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x540,0x7120CDA8, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x548,0x7009E688, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x5E8,0x0019C900, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x5F0,0x0325C820, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x688,0x000F7880, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x690,0x22310006, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x728,0x7017BEC8, function() eeObj.AdvanceClock(2000) end)
eeObj.RemoveHook(eeObj.ReadMem32(0x000FFF14)+0x730,0x71D18D88, function() eeObj.AdvanceClock(2000) end)
end
end
end
emuObj.AddVsyncHook(Hooks)
</pre>

Latest revision as of 08:33, 11 September 2024

TODO:

1: Patch IOP to fix the restarting music 2: Patch the instruction causing Ratchet to fall 3: Refine the patch's performance