PS4 [Research]PS2 emulator configuration on PS4

Any insight on how this is done and what to look for?
This is very specific fix, i don't think any other game will need it. Maybe WRC 1 NTSC-U, in any other case standard delay XGKICK will work.

I found in code which one XGKICK is responsible for sending bad packet, and rearranged code to delay only that one instruction. I'm glad it work :)
 
--vif1-ignore-cmd-ints=1 fixes Onimusha Blade Warriors NTSC black screen after PS2 logo.


now freezes after FMV, before title screen

This is what got it working for me(must press triangle after PS2 logo for some reason?)

--vif1-ignore-cmd-ints=1 appears to be the ps4 equivalent of "Delay VIF1 Stalls" game fix in PCSX2
 
Last edited:
Yes I got the same black screen with it disabled. Also, I have to press triangle with it enabled
as well. I got the idea from here

https://forums.pcsx2.net/Thread-Onimusha-Blade-Warriors-SLUS-20710-U--29943?pid=335731#pid335731
Ok, i found what is issue, i can't fix it sadly. And none of current commands probably can without complicated lua. Btw. Game work under the hood, even after movie. Is not freeze but VIF stop decoding stuff at stall, it just don't know it should do more job..

This is where pcsx2 fixed it https://github.com/PCSX2/pcsx2/pull/3683/files
To fix it on ps4 we need to know where on ee side code that trigger stall is sent, then we can flip VPS bit. Like i said, complicated lua.
 
My first attempt at porting a patch/config from pnach file. All thanks go to @kozarovv for his help in teaching me this.

10,000 Bullets

vu1=jit-sync

Code:
-- 10,000 Bullets PAL (SLES_534.81)
-- Widescreen Hack

apiRequest(1.0)

local eeObj = getEEObject()
local emuObj = getEmuObject()
local patcher = function()
eeObj.WriteMem32(0x005EDED4,0x3C013FAA) -- widescreen hack
eeObj.WriteMem32(0x005EE0EC,0x3C013FAA)
eeObj.WriteMem32(0x003C046C,0x3C013FF3) -- HUD
eeObj.WriteMem32(0x003C046C,0x3C013FB6) -- HUD
eeObj.WriteMem32(0x003C0374,0x3C0143D4) -- Set FMV to 16:9 aspect ratio
eeObj.WriteMem32(0x003C0374,0x3C0143A0) -- Set FMV to 16:9 aspect ratio
end

emuObj.AddVsyncHook(patcher)

true widescreen is enabled in gameplay only. FMVs, Menus are stretched.


Baroque NTSC

vu1=jit-sync

Code:
-- Baroque NTSC US
-- Widescreen, no blur, no noise hack

apiRequest(1.0)

local eeObj = getEEObject()
local emuObj = getEmuObject()
local patcher = function()
eeObj.WriteMem32(0x00173f98,0x64030001) -- No black Borders (ver.3)
eeObj.WriteMem32(0x0010fb9c,0x24030000) -- Noise Filter Off
eeObj.WriteMem32(0x0010ee18,0x24030000) -- Disable Blur Effect
eeObj.WriteMem32(0x0039e744,0x3c033f40) -- hor fov A
eeObj.WriteMem32(0x0039e744,0x3c033f80) -- hor fov B
eeObj.WriteMem32(0x0039e74c,0x4483f000) --
eeObj.WriteMem32(0x0039e74c,0x44832800) --
eeObj.WriteMem32(0x0039e750,0x461ef143) --
eeObj.WriteMem32(0x0039e750,0x00000000) --
eeObj.WriteMem32(0x0044c180,0x3f5eb852) --  subtitle hor fov A
eeObj.WriteMem32(0x0044c180,0x3f947ae1) --  subtitle hor fov B
eeObj.WriteMem32(0x00166b50,0x3c054028) --  hud hp/vt A
eeObj.WriteMem32(0x00166b50,0x3c054060) --  hud hp/vt B
eeObj.WriteMem32(0x00166b90,0x3c053ff0) --  hud hp/vt C
eeObj.WriteMem32(0x00166b90,0x3c054020) --  hud hp/vt D
eeObj.WriteMem32(0x00237914,0x3c014500) --  remove ghosting effect A
eeObj.WriteMem32(0x00237914,0x3c013f80) --  remove ghosting effect B
eeObj.WriteMem32(0x0010fc60,0x3c023e80) --  remove grain effect A
eeObj.WriteMem32(0x0010fc60,0x3c023f80) --  remove grain effect B

end

emuObj.AddVsyncHook(patcher)

 
Last edited:
just wanted to share this.
idk what im doing but i extracted the indigo prophecy emu and use that to make a ps2pkg. wild arms 4 is able to bypass the load memory card (you need to press it fast to new game, bcoz if you stay too long on that menu gamepad will not respond anymore) then the intro after that is like the description on https://www.psdevwiki.com/ps4/PS2_Classics_Emulator_Compatibility_List it freeze but the subtitle still going. (i didnt wait the fmv to finish but i thinkg it still running)

edit: i can move around. hope someone make a improvement on this
 
Last edited:
Widescreen ,Blur removal and severe graphical glitches fix for Steambot Chronicles NTSC

*EDIT - new better fix here https://www.psx-place.com/threads/r...nfiguration-on-ps4.16131/page-102#post-312496
lua
Code:
-- Steambot Chronicles SLUS_213.44
-- Widescreen Hack & Blur Removal

apiRequest(1.0)

local eeObj = getEEObject()
local emuObj = getEmuObject()
local widescreen = function()
emuObj.PadSetLightBar(0,6,8,199)
emuObj.ThrottleNorm()
--emuObj.ForceRefreshRate(60)
emuObj.SetDisplayAspectWide()
--emuObj.EnableImposeMenu(true)
--Widescreen hack 16:9

eeObj.WriteMem32(0x001329c0,0x3c033f40)
eeObj.WriteMem32(0x00132818,0x3c0643d6)

--Extensive blur removal

eeObj.WriteMem32(0x0010fdd8,0x00000000)
eeObj.WriteMem32(0x0010fea4,0x00000000)

end

emuObj.AddVsyncHook(widescreen)

conf
Code:
--fpu-no-clamping=0
--fpu-clamp-results=1
--vu0-no-clamping=0
--vu0-clamp-results=1
--vu1-no-clamping=0
--vu1-clamp-results=1
--cop2-no-clamping=0
--cop2-clamp-results=1
--vu0-opt-flags=1
--vu1-opt-flags=1
--cop2-opt-flags=1
--vu0-const-prop=0
--vu1-const-prop=0
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog

 
Last edited:
Fix for Urban Reign NTSC

cli
Code:
--vif-ignore-invalid-cmd=0
--vif1-ignore-cmd-ints=1
--vif1-instant-xfer=0
--vu1=jit-sync
--mtap1=always

lua
Code:
-- Urban Reign NTSC (SLUS-21209)

apiRequest(2.3)

local gpr       = require("ee-gpr-alias")
local emuObj      = getEmuObject()
local eeObj       = getEEObject()
local gsObj       = getGsObject()
local eeOverlay    = eeObj.getOverlayObject()

local widescreen = function()
--emuObj.PadSetLightBar(0,210,151,62)
emuObj.SetDisplayAspectWide()
--emuObj.EnableImposeMenu(true)
gsObj.SetDeinterlaceShift(0)
--emuObj.SetFormattedCard("custom_formatted.card")

end

emuObj.AddVsyncHook(widescreen)

emuObj.SetGsTitleFix( "forceSimpleFetch", "reserved", { texMode=1 } )

emuObj.SetGsTitleFix( "globalSet",  "reserved", { workLoadThreshold = 100000} )

 
Last edited:
Fix for Urban Reign NTSC

cli
Code:
--vif-ignore-invalid-cmd=0
--vif1-ignore-cmd-ints=1
--vif1-instant-xfer=0
--vu1=jit-sync
--mtap1=always
--mtap2=byhost

lua
Code:
-- Urban Reign NTSC (SLUS-21209)

apiRequest(2.3)

local gpr       = require("ee-gpr-alias")
local emuObj      = getEmuObject()
local eeObj       = getEEObject()
local gsObj       = getGsObject()
local eeOverlay    = eeObj.getOverlayObject()

local widescreen = function()
emuObj.PadSetLightBar(0,210,151,62)
emuObj.ThrottleNorm()
emuObj.ForceRefreshRate(60)
emuObj.SetDisplayAspectWide()
emuObj.EnableImposeMenu(true)
gsObj.SetDeinterlaceShift(0)
--emuObj.SetFormattedCard("custom_formatted.card")

end

emuObj.AddVsyncHook(widescreen)

emuObj.SetGsTitleFix( "forceSimpleFetch", "reserved", { texMode=1 } )

if 0 then
  emuObj.SetGsTitleFix( "globalSet",  "reserved", { workLoadThreshold = 125000} )
else
  emuObj.SetGsTitleFix( "globalSet",  "reserved", { workLoadThreshold = 100000} )
end

I applied the configuration you posted, but I cannot enter the game
 
if you change back to 2.2, you can use the jak v2. that's the only change need to boot.
I tried to use Jak v2 to downgrade the api to 2.2 and it still fails to work. Just like you said Jak X v2 can run, I can even run with Jak3. By the way, this configuration is also valid when applied to the Japanese version of SLPS_255.57.
 
Fix for Urban Reign NTSC

cli
Code:
--vif-ignore-invalid-cmd=0
--vif1-ignore-cmd-ints=1
--vif1-instant-xfer=0
--vu1=jit-sync
--mtap1=always
--mtap2=byhost

lua
Code:
-- Urban Reign NTSC (SLUS-21209)

apiRequest(2.3)

local gpr       = require("ee-gpr-alias")
local emuObj      = getEmuObject()
local eeObj       = getEEObject()
local gsObj       = getGsObject()
local eeOverlay    = eeObj.getOverlayObject()

local widescreen = function()
emuObj.PadSetLightBar(0,210,151,62)
emuObj.ThrottleNorm()
emuObj.ForceRefreshRate(60)
emuObj.SetDisplayAspectWide()
emuObj.EnableImposeMenu(true)
gsObj.SetDeinterlaceShift(0)
--emuObj.SetFormattedCard("custom_formatted.card")

end

emuObj.AddVsyncHook(widescreen)

emuObj.SetGsTitleFix( "forceSimpleFetch", "reserved", { texMode=1 } )

if 0 then
  emuObj.SetGsTitleFix( "globalSet",  "reserved", { workLoadThreshold = 125000} )
else
  emuObj.SetGsTitleFix( "globalSet",  "reserved", { workLoadThreshold = 100000} )
end

You can remove this for sure:
emuObj.ThrottleNorm()
emuObj.EnableImposeMenu(true)
emuObj.PadSetLightBar(0,210,151,62)
emuObj.ForceRefreshRate(60)
--mtap2=byhost

And there will be no difference for gameplay.

Additionally

Code:
if 0 then
  emuObj.SetGsTitleFix( "globalSet",  "reserved", { workLoadThreshold = 125000} )
else
  emuObj.SetGsTitleFix( "globalSet",  "reserved", { workLoadThreshold = 100000} )
end

Can be squashed to just
Code:
 emuObj.SetGsTitleFix( "globalSet",  "reserved", { workLoadThreshold = 100000} )

Because that if statement make only above line work.
Aaaand nice work on getting that game to work :)
 
Fix for Hunter the Reckoning Wayward NTSC

cli

Code:
--fpu-no-clamping=0
--fpu-clamp-results=1
--vu0-no-clamping=0
--vu0-clamp-results=1
--vu1-no-clamping=0
--vu1-clamp-results=1
--cop2-no-clamping=0
--cop2-clamp-results=1
--vu0-opt-flags=1
--vu1-opt-flags=1
--cop2-opt-flags=1
--vu0-const-prop=0
#--vu1-const-prop=0
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
#--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog

lua
Code:
-- Hunter: The Reckoning Wayward [NTSC-U] (SLUS_205.11)
-- Widescreen Hack by El_Patas

apiRequest(1.0)

local eeObj = getEEObject()
local emuObj = getEmuObject()
local widescreen = function()
emuObj.PadSetLightBar(0,56,230,201)
emuObj.SetDisplayAspectWide()

--Widescreen hack 16:9

eeObj.WriteMem32(0x0023B1F4,0x3C023F23) --X-Fov A
eeObj.WriteMem32(0x0023B1F4,0x3C023F00) --X-Fov B
eeObj.WriteMem32(0x0023B66C,0x3C03BFAB) -- Y-Fov A
eeObj.WriteMem32(0x0023B66C,0x3C03BF80) -- Y-Fov B
end

emuObj.AddVsyncHook(widescreen)

 

Similar threads

Back
Top