User:Scalerize: Difference between revisions

From PS4 Developer wiki
Jump to navigation Jump to search
No edit summary
 
(117 intermediate revisions by the same user not shown)
Line 1: Line 1:
=PS2=
==Notes==
<pre>
Marvel = 0054B5D4
IOP audi restarting debugging address? 1F801574 > BF801574
wotm: 4A72C2
</pre>
==Configs (CLI)==
===Debugging CLI===
<pre>
#ee
--ee-cycle-scalar=1
#iop
--iop-cycle-scalar=0.38
--iop-evt-check-full=1
#fpu
--fpu-accurate-muldiv=1
--fpu-accurate-mul-fast=1
--fpu-accurate-addsub=1
--fpu-to-double=1
#cop2
--cop2-opt-flags=0
--cop2-opt-vf00=0
--cop2-const-prop=0
--cop2-accurate-mul=1
--cop2-accurate-addsub=1
--cop2-di-bits=1
#vu0
--vu0-opt-flags=0
--vu0-opt-vf00=0
--vu0-const-prop=0
--vu0-di-bits=1
#vu1
--vu1-opt-flags=0
--vu1-opt-vf00=0
--vu1-const-prop=0
--vu1-di-bits=1
--assert-path1-ad=1
#vu
--vu-xgkick-delay=0
--vu-custom-min-max=0
--vu-branch-hazard=0
--vu-evil-branches=1
--vu-to-double=1
#gs
--gs-use-mipmap=1
--gs-use-clut-merge=1
--gs-force-bilinear=1
--gs-kernel-cl="mipmap"
--gs-kernel-cl-up="mipmap2x2"
--gs-upscale=none
--gs-uprender=none
--gs-use-deferred-l2h=0
--gs-packed15-fmv-opt=1
--gs-skip-dirty-flush-on-mipmap=1
#cdvd
--verbose-cdvd-reads=1
#lang
--ps2-lang=English
#clamping
--vu1-no-clamping=0
--cop2-no-clamping=0
--fpu-no-clamping=0
--vu0-no-clamping=0
#vif1 and disabled MTVU (Might crash, or introduce graphical distortions on some games)
--vif1-instant-xfer=0
--vu1=jit-sync
--vu1-mpg-cycles=0
#Emu-exclusive commands (modern emus)
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog
--vu0-mpg-cycles=6000
--vif1-ignore-cmd-ints=1
--vif-ignore-invalid-cmd=1
--ee-ignore-segfault=readwrite
--gs-ignore-dirty-page-border=1
--gs-vert-precision=8
--force-frame-blend=1
--gs-flush-ad-xyz=always
--gs-uv-shift-pointsampling=1
--gs-ignore-rect-correction=1
#test me on 1 and 0
--vu-d-bit=1
--vu-t-bit=1
--vu-inst-mflag=1
--vu-inst-cflag=1
--vu1-use-rsqrt=1
--vu1-use-rcp=1
--vu1-inst-q=1
--vu1-inst-p=1
--vu1-clamp-operands=1
--vu1-clamp-results=1
--vu0-inst-q=1
--vu0-inst-p=1
--vu0-clamp-operands=1
--vu0-clamp-results=1
--vu0-use-rcp=1
--vu0-use-rsqrt=1
--cop2-inst-p=1
--cop2-use-rsqrt=1
--cop2-use-rcp=1
--cop2-clamp-operands=1
--cop2-clamp-results=1
</pre>
===Optimal General Config===
<pre>
--iop-cycle-scalar=0.38
--vu1-di-bits=0
--assert-path1-ad=1
--vu-xgkick-delay=0
--vu-custom-min-max=0
--gs-use-mipmap=1
--gs-use-clut-merge=1
--gs-kernel-cl="mipmap"
--gs-kernel-cl-up"mipmap2x2"
--cop2-opt-flags=0
--cop2-opt-vf00=0
--vu0-opt-flags=0
--vu0-opt-vf00=0
--vu1-opt-flags=0
--vu1-opt-vf00=0
</pre>
===Needs Research===
<pre>
--vu-d-bit=1
--vu-t-bit=1
--vu-inst-mflag=1
--vu-inst-cflag=1
--vu1-use-rsqrt=1
--vu1-use-rcp=1
--vu1-inst-q=1
--vu1-inst-p=1
--vu1-clamp-operands=1
--vu1-clamp-results=1
--vu0-inst-q=1
--vu0-inst-p=1
--vu0-clamp-operands=1
--vu0-clamp-results=1
--vu0-use-rcp=1
--vu0-use-rsqrt=1
--cop2-inst-p=1
--cop2-use-rsqrt=1
--cop2-use-rcp=1
--cop2-clamp-operands=1
--cop2-clamp-results=1
</pre>
===Jakv2===
====General Use====
<pre>
--ee-cycle-scalar=1
--iop-cycle-scalar=0.38
--cop2-opt-flags=0
--cop2-opt-vf00=0
--cop2-const-prop=0
--cop2-di-bits=1
--vu0-opt-flags=0
--vu0-opt-vf00=0
--vu0-const-prop=0
--vu1-opt-flags=0
--vu1-opt-vf00=0
--vu1-di-bits=0
--assert-path1-ad=1
--vu-xgkick-delay=0
--vu-custom-min-max=0
--gs-use-mipmap=1
--gs-use-clut-merge=1
--gs-force-bilinear=1
--gs-kernel-cl="mipmap"
--gs-kernel-cl-up="mipmap2x2"
--gs-upscale=none
--gs-uprender=none
--gs-use-deferred-l2h=0
--gs-packed15-fmv-opt=1
--gs-skip-dirty-flush-on-mipmap=1
--ps2-lang=English
--vu1-mpg-cycles=150
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog
--vu0-mpg-cycles=200
--vif1-ignore-cmd-ints=1
--vif-ignore-invalid-cmd=1
--ee-ignore-segfault=readwrite
--gs-ignore-dirty-page-border=1
--gs-vert-precision=8
--force-frame-blend=1
--gs-flush-ad-xyz=always
--gs-uv-shift-pointsampling=1
--gs-ignore-rect-correction=1
</pre>
====Speedhackster====
<pre>
--ee-cycle-scalar=1.2
--vu1-di-bits=0
--vu1-opt-flags=2
--vu1-opt-vf00=2
--vu1-mpg-cycles=2000
</pre>
====Crash-preventer====
<pre>
--fpu-accurate-muldiv=1
--fpu-accurate-mul-fast=1
--fpu-accurate-addsub=1
--cop2-opt-flags=0
--cop2-opt-vf00=0
--cop2-accurate-addsub=1
--vu0-opt-flags=0
--vu0-opt-vf00=0
--vu1-opt-flags=0
--vu1-opt-vf00=0
--gs-upscale=none
--gs-uprender=none
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog
--vu0-mpg-cycles=0
--vif1-ignore-cmd-ints=1
--vif-ignore-invalid-cmd=1
--ee-ignore-segfault=readwrite
--assert-path1-ad=1
--ps2-lang=English
--vu-custom-min-max=0
--vu-branch-hazard=0
--vu-evil-branches=1
#
--vu1-mpg-cycles=8000
--vu1-no-clamping=0
--cop2-no-clamping=0
--fpu-no-clamping=0
--vu0-no-clamping=0
--vif1-instant-xfer=0
--vu1=jit-sync
--vu-xgkick-delay=2
</pre>
====Clean-GS====
<pre>
--gs-use-mipmap=1
--gs-use-clut-merge=1
--gs-force-bilinear=1
--gs-kernel-cl="mipmap"
--gs-kernel-cl-up="mipmap2x2"
--gs-upscale=none
--gs-uprender=none
--gs-use-deferred-l2h=0
--gs-packed15-fmv-opt=1
--gs-skip-dirty-flush-on-mipmap=1
--gs-ignore-dirty-page-border=1
--gs-vert-precision=8
--force-frame-blend=1
--gs-flush-ad-xyz=always
--gs-uv-shift-pointsampling=1
--gs-ignore-rect-correction=1
</pre>
====SPS-fixer====
<pre>
--vu0-opt-flags=0
--vu0-opt-vf00=0
--vu1-opt-flags=0
--vu1-opt-vf00=0
--vif1-instant-xfer=0
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog
--vu0-mpg-cycles=2000
--vu1-mpg-cycles=0
--vu-xgkick-delay=0
--vu-custom-min-max=0
#
--vu1-no-clamping=0
--vu0-no-clamping=0
#
--vif1-instant-xfer=0
--vu1=jit-sync
</pre>
====Physics-restorer====
<pre>
--fpu-accurate-muldiv=1
--fpu-accurate-addsub=1
--fpu-to-double=1
--cop2-opt-flags=0
--cop2-opt-vf00=0
--cop2-const-prop=0
--cop2-accurate-mul=1
--cop2-accurate-addsub=1
--cop2-di-bits=1
--vu0-opt-flags=0
--vu0-opt-vf00=0
--vu0-const-prop=0
--vu0-di-bits=1
--vu-custom-min-max=0
--vu-branch-hazard=0
--vu-evil-branches=1
--vu-to-double=1
--vu0-mpg-cycles=2000
#
--fpu-accurate-mul-fast=1
--cop2-no-clamping=0
--fpu-no-clamping=0
--vu0-no-clamping=0
</pre>
==Configs (LUA)==
<br>'''Delay GIF'''
<pre>
<pre>
apiRequest(0.1)
apiRequest(0.1)
Line 4: Line 328:
local eeObj = getEEObject()
local eeObj = getEEObject()
local emuObj = getEmuObject()
local emuObj = getEmuObject()
local patcher = function()
eeObj.SchedulerDelayEvent("gif.dma", 0x60500)
emuObj.AddVsyncHook(patcher)
</pre>


eeObj.WriteMem32(0x0011F38C, 0x0803FFC8) -- <-- //Address to change for other Ratchet games
<br>'''Patch EE memory'''
eeObj.WriteMem32(0x000FFF20, 0x3C1B000F)
<pre>
eeObj.WriteMem32(0x000FFF24, 0x377BFF00)
apiRequest(0.1)
eeObj.WriteMem32(0x000FFF28, 0xAF770000)
eeObj.WriteMem32(0x000FFF2C, 0xAF760004)
eeObj.WriteMem32(0x000FFF30, 0xAF750008)
eeObj.WriteMem32(0x000FFF34, 0xAF74000C)
eeObj.WriteMem32(0x000FFF38, 0x3C1701FF) -- < -- //Might need to be changed for other Ratchet games
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, 0x24160100) --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 eeObj = getEEObject()
local Hooks = function()
local emuObj = getEmuObject()


if  eeObj.ReadMem32(0x000FFF10) ~= 0 and eeObj.ReadMem32(0x000FFF14) ~= eeObj.ReadMem32(0x000FFF10) then
local patcher = function()
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10),0x7120CDA8, function() eeObj.AdvanceClock(6000) end)
eeObj.WriteMem32(0x001958A0, 0x10000086)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x8,0x00000000, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0xB8,0x00000000, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0xC0,0x00000000, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x158,0x701188FC, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x160,0x70E0CDA8, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x1F8,0x7019CC3F, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x200,0x00000000, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x2A8,0x7120CDA8, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x2B0,0x7009E688, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x350,0x00000000, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x358,0x00000000, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x3F0,0x701188FC, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x3F8,0x70E0CDA8, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x490,0x7019CC3F, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x498,0x00000000, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x540,0x7120CDA8, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x548,0x7009E688, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x5E8,0x0019C900, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x5F0,0x0325C820, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x688,0x000F7880, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x690,0x22310006, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x728,0x7017BEC8, function() eeObj.AdvanceClock(6000) end)
eeObj.AddHook(eeObj.ReadMem32(0x000FFF10)+0x730,0x71D18D88, function() eeObj.AdvanceClock(6000) end)
end
end
end
emuObj.AddVsyncHook(patcher)
emuObj.AddVsyncHook(Hooks)
</pre>
 
<br>'''Speedhacks'''
<pre>
apiRequest(0.1)
 
local eeObj = getEEObject()
local emuObj = getEmuObject()
 
eeObj.AddHook(0x002cc350, 0x78a30000, function()
          eeObj.AdvanceClock(21000)
          eeObj.Vu1MpgCycles(2000)
          eeObj.FastForwardClock()
end)
</pre>
 
Ratchet
<pre>
local Quick = emuObj.SetFrameLimiter()
local Slow = emuObj.SetFrameLimiter(1)
eeObj.AddHook(0x000FF904, 0x0, Quick)
eeObj.AddHook(0x000FF90C, 0x0, Slow)
</pre>
bee movie
<pre>
 
--ee-ignore-segfault=readwrite
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
--ee-hook=0x001A5C10,AdvanceClock,,130000
</pre>
 
==Speculation - Observations==
<pre>
> Redfaction and GTA 3's IOP is good.
> Redfaction defaults at newprog.
> Mipmapping is imperfect, the simpsons hate it.
> Clamping works best on Jak x
> Mipmapping works best on War of the Monsters
> A 0x200 delay restores the EE-VU0 sync.
</pre>
 
==Diagnosis==
<pre>
Grey screen > GIF
Freeze with repeating audio > looping IOP or EE
Freeze with no continuing audio > VU0 timing
Crash > VIF1 timing, VU1 cache policy, or segfault
SPS > VU timing/rounding/clamping
Incorrect physics = soft floats, clamping, or flags
Black screen > EE receiving incorrect data from VU/IOP/DMA channels
</pre>
=PSP=
==Notes==
<pre>
psp speedhack? 08B322B8
</pre>
</pre>
=PSX=
=Contact - Inbox=
~ Leave messages here.

Latest revision as of 04:47, 11 March 2025

PS2[edit | edit source]

Notes[edit | edit source]

Marvel = 0054B5D4
IOP audi restarting debugging address? 1F801574 > BF801574
wotm: 4A72C2

Configs (CLI)[edit | edit source]

Debugging CLI[edit | edit source]

#ee
--ee-cycle-scalar=1
#iop
--iop-cycle-scalar=0.38
--iop-evt-check-full=1
#fpu
--fpu-accurate-muldiv=1
--fpu-accurate-mul-fast=1
--fpu-accurate-addsub=1
--fpu-to-double=1
#cop2
--cop2-opt-flags=0
--cop2-opt-vf00=0
--cop2-const-prop=0
--cop2-accurate-mul=1
--cop2-accurate-addsub=1
--cop2-di-bits=1
#vu0
--vu0-opt-flags=0
--vu0-opt-vf00=0
--vu0-const-prop=0
--vu0-di-bits=1
#vu1
--vu1-opt-flags=0
--vu1-opt-vf00=0
--vu1-const-prop=0
--vu1-di-bits=1
--assert-path1-ad=1
#vu
--vu-xgkick-delay=0
--vu-custom-min-max=0
--vu-branch-hazard=0
--vu-evil-branches=1
--vu-to-double=1
#gs
--gs-use-mipmap=1
--gs-use-clut-merge=1
--gs-force-bilinear=1
--gs-kernel-cl="mipmap"
--gs-kernel-cl-up="mipmap2x2"
--gs-upscale=none
--gs-uprender=none
--gs-use-deferred-l2h=0
--gs-packed15-fmv-opt=1
--gs-skip-dirty-flush-on-mipmap=1
#cdvd
--verbose-cdvd-reads=1
#lang
--ps2-lang=English


#clamping
--vu1-no-clamping=0
--cop2-no-clamping=0
--fpu-no-clamping=0
--vu0-no-clamping=0
#vif1 and disabled MTVU (Might crash, or introduce graphical distortions on some games)
--vif1-instant-xfer=0
--vu1=jit-sync
--vu1-mpg-cycles=0

#Emu-exclusive commands (modern emus)
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog
--vu0-mpg-cycles=6000
--vif1-ignore-cmd-ints=1
--vif-ignore-invalid-cmd=1
--ee-ignore-segfault=readwrite
--gs-ignore-dirty-page-border=1
--gs-vert-precision=8
--force-frame-blend=1
--gs-flush-ad-xyz=always
--gs-uv-shift-pointsampling=1
--gs-ignore-rect-correction=1

#test me on 1 and 0
--vu-d-bit=1
--vu-t-bit=1
--vu-inst-mflag=1
--vu-inst-cflag=1
--vu1-use-rsqrt=1
--vu1-use-rcp=1
--vu1-inst-q=1
--vu1-inst-p=1
--vu1-clamp-operands=1
--vu1-clamp-results=1
--vu0-inst-q=1
--vu0-inst-p=1
--vu0-clamp-operands=1
--vu0-clamp-results=1
--vu0-use-rcp=1
--vu0-use-rsqrt=1
--cop2-inst-p=1
--cop2-use-rsqrt=1
--cop2-use-rcp=1
--cop2-clamp-operands=1
--cop2-clamp-results=1

Optimal General Config[edit | edit source]

--iop-cycle-scalar=0.38
--vu1-di-bits=0
--assert-path1-ad=1
--vu-xgkick-delay=0
--vu-custom-min-max=0
--gs-use-mipmap=1
--gs-use-clut-merge=1
--gs-kernel-cl="mipmap"
--gs-kernel-cl-up"mipmap2x2"
--cop2-opt-flags=0
--cop2-opt-vf00=0
--vu0-opt-flags=0
--vu0-opt-vf00=0
--vu1-opt-flags=0
--vu1-opt-vf00=0


Needs Research[edit | edit source]

--vu-d-bit=1
--vu-t-bit=1
--vu-inst-mflag=1
--vu-inst-cflag=1
--vu1-use-rsqrt=1
--vu1-use-rcp=1
--vu1-inst-q=1
--vu1-inst-p=1
--vu1-clamp-operands=1
--vu1-clamp-results=1
--vu0-inst-q=1
--vu0-inst-p=1
--vu0-clamp-operands=1
--vu0-clamp-results=1
--vu0-use-rcp=1
--vu0-use-rsqrt=1
--cop2-inst-p=1
--cop2-use-rsqrt=1
--cop2-use-rcp=1
--cop2-clamp-operands=1
--cop2-clamp-results=1

Jakv2[edit | edit source]

General Use[edit | edit source]

--ee-cycle-scalar=1
--iop-cycle-scalar=0.38
--cop2-opt-flags=0
--cop2-opt-vf00=0
--cop2-const-prop=0
--cop2-di-bits=1
--vu0-opt-flags=0
--vu0-opt-vf00=0
--vu0-const-prop=0
--vu1-opt-flags=0
--vu1-opt-vf00=0
--vu1-di-bits=0
--assert-path1-ad=1
--vu-xgkick-delay=0
--vu-custom-min-max=0
--gs-use-mipmap=1
--gs-use-clut-merge=1
--gs-force-bilinear=1
--gs-kernel-cl="mipmap"
--gs-kernel-cl-up="mipmap2x2"
--gs-upscale=none
--gs-uprender=none
--gs-use-deferred-l2h=0
--gs-packed15-fmv-opt=1
--gs-skip-dirty-flush-on-mipmap=1
--ps2-lang=English
--vu1-mpg-cycles=150
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog
--vu0-mpg-cycles=200
--vif1-ignore-cmd-ints=1
--vif-ignore-invalid-cmd=1
--ee-ignore-segfault=readwrite
--gs-ignore-dirty-page-border=1
--gs-vert-precision=8
--force-frame-blend=1
--gs-flush-ad-xyz=always
--gs-uv-shift-pointsampling=1
--gs-ignore-rect-correction=1

Speedhackster[edit | edit source]

--ee-cycle-scalar=1.2
--vu1-di-bits=0
--vu1-opt-flags=2
--vu1-opt-vf00=2
--vu1-mpg-cycles=2000

Crash-preventer[edit | edit source]

--fpu-accurate-muldiv=1
--fpu-accurate-mul-fast=1
--fpu-accurate-addsub=1
--cop2-opt-flags=0
--cop2-opt-vf00=0
--cop2-accurate-addsub=1
--vu0-opt-flags=0
--vu0-opt-vf00=0
--vu1-opt-flags=0
--vu1-opt-vf00=0
--gs-upscale=none
--gs-uprender=none
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog
--vu0-mpg-cycles=0
--vif1-ignore-cmd-ints=1
--vif-ignore-invalid-cmd=1
--ee-ignore-segfault=readwrite
--assert-path1-ad=1
--ps2-lang=English
--vu-custom-min-max=0
--vu-branch-hazard=0
--vu-evil-branches=1
#
--vu1-mpg-cycles=8000
--vu1-no-clamping=0
--cop2-no-clamping=0
--fpu-no-clamping=0
--vu0-no-clamping=0
--vif1-instant-xfer=0
--vu1=jit-sync
--vu-xgkick-delay=2

Clean-GS[edit | edit source]

--gs-use-mipmap=1
--gs-use-clut-merge=1
--gs-force-bilinear=1
--gs-kernel-cl="mipmap"
--gs-kernel-cl-up="mipmap2x2"
--gs-upscale=none
--gs-uprender=none
--gs-use-deferred-l2h=0
--gs-packed15-fmv-opt=1
--gs-skip-dirty-flush-on-mipmap=1
--gs-ignore-dirty-page-border=1
--gs-vert-precision=8
--force-frame-blend=1
--gs-flush-ad-xyz=always
--gs-uv-shift-pointsampling=1
--gs-ignore-rect-correction=1

SPS-fixer[edit | edit source]

--vu0-opt-flags=0
--vu0-opt-vf00=0
--vu1-opt-flags=0
--vu1-opt-vf00=0
--vif1-instant-xfer=0
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog
--vu0-mpg-cycles=2000
--vu1-mpg-cycles=0
--vu-xgkick-delay=0
--vu-custom-min-max=0
#
--vu1-no-clamping=0
--vu0-no-clamping=0
#
--vif1-instant-xfer=0
--vu1=jit-sync

Physics-restorer[edit | edit source]

--fpu-accurate-muldiv=1
--fpu-accurate-addsub=1
--fpu-to-double=1
--cop2-opt-flags=0
--cop2-opt-vf00=0
--cop2-const-prop=0
--cop2-accurate-mul=1
--cop2-accurate-addsub=1
--cop2-di-bits=1
--vu0-opt-flags=0
--vu0-opt-vf00=0
--vu0-const-prop=0
--vu0-di-bits=1
--vu-custom-min-max=0
--vu-branch-hazard=0
--vu-evil-branches=1
--vu-to-double=1
--vu0-mpg-cycles=2000
#
--fpu-accurate-mul-fast=1
--cop2-no-clamping=0
--fpu-no-clamping=0
--vu0-no-clamping=0

Configs (LUA)[edit | edit source]


Delay GIF

apiRequest(0.1)

local eeObj = getEEObject()
local emuObj = getEmuObject()
local patcher = function()
eeObj.SchedulerDelayEvent("gif.dma", 0x60500)
emuObj.AddVsyncHook(patcher)


Patch EE memory

apiRequest(0.1)

local eeObj = getEEObject()
local emuObj = getEmuObject()

local patcher = function()
eeObj.WriteMem32(0x001958A0, 0x10000086)
end
emuObj.AddVsyncHook(patcher)


Speedhacks

apiRequest(0.1)

local eeObj = getEEObject()
local emuObj = getEmuObject()

eeObj.AddHook(0x002cc350, 0x78a30000, function()
          eeObj.AdvanceClock(21000)
          eeObj.Vu1MpgCycles(2000)
          eeObj.FastForwardClock()
end)

Ratchet

local Quick = emuObj.SetFrameLimiter()
local Slow = emuObj.SetFrameLimiter(1)
eeObj.AddHook(0x000FF904, 0x0, Quick)
eeObj.AddHook(0x000FF90C, 0x0, Slow)

bee movie

--ee-ignore-segfault=readwrite
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
--ee-hook=0x001A5C10,AdvanceClock,,130000

Speculation - Observations[edit | edit source]

> Redfaction and GTA 3's IOP is good.
> Redfaction defaults at newprog.
> Mipmapping is imperfect, the simpsons hate it.
> Clamping works best on Jak x
> Mipmapping works best on War of the Monsters
> A 0x200 delay restores the EE-VU0 sync.

Diagnosis[edit | edit source]

Grey screen > GIF
Freeze with repeating audio > looping IOP or EE
Freeze with no continuing audio > VU0 timing
Crash > VIF1 timing, VU1 cache policy, or segfault
SPS > VU timing/rounding/clamping
Incorrect physics = soft floats, clamping, or flags
Black screen > EE receiving incorrect data from VU/IOP/DMA channels

PSP[edit | edit source]

Notes[edit | edit source]

psp speedhack? 08B322B8

PSX[edit | edit source]

Contact - Inbox[edit | edit source]

~ Leave messages here.