User:Scalerize: Difference between revisions

From PS4 Developer wiki
Jump to navigation Jump to search
No edit summary
(Replaced content with "TODO: 1: Find a solution for mipmapping (Should be a cli commands?) 2: Patch IOP to fix the restarting music 3: Patch the instruction causing Ratchet to fall 4: Refine the patch's performance")
Tag: Replaced
Line 1: Line 1:
<pre>apiRequest(0.1)
TODO:


local eeObj = getEEObject()
1: Find a solution for mipmapping (Should be a cli commands?)
local emuObj = getEmuObject()
2: Patch IOP to fix the restarting music
-- We only need to write these opcodes once. Writing in perpetuity is unharmful, sure, but unneeded!
3: Patch the instruction causing Ratchet to fall
eeObj.WriteMem32(0x0011F38C, 0x0803FFC8) -- <-- //Address to change for other Ratchet games
4: Refine the patch's performance
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 and eeObj.ReadMem32(0x000FFF14) ~= eeObj.ReadMem32(0x000FFF10) 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>

Revision as of 23:01, 9 September 2024

TODO:

1: Find a solution for mipmapping (Should be a cli commands?) 2: Patch IOP to fix the restarting music 3: Patch the instruction causing Ratchet to fall 4: Refine the patch's performance