PS4 [Research]PS2 emulator configuration on PS4

Debug Menu Cheat for PAL version
Code:
--Press L1 on the main menu screen (Debug Menu)
eeObj.WriteMem32(0x201120F8,0x24A5CCC0)

So it works! When you start game first time, it let you load most chapters, but while walkthrough or when you reboot game, random freeze issue apper while loading screen!

Harry Potter and the Prisoner of Azkaban. Debug Menu Test!
VIDEO

Is there a way to run it in NTSC-J version?
 
The Da Vinci Code NTSC

CLI
Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth

--vu1-di-bits=0
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog

--ee-hook=0x3fb7c0,AdvanceClock,,10000

#https://www.youtube.com/watch?v=JxsfEio0L8Y
LUA
Code:
-- The Da Vinci Code SLUS-21443
-- Widescreen hack
-- ported to PS4 LUA
-- emu used=kof98um

require( "ee-gpr-alias" ) -- you can access EE GPR by alias (gpr.a0 / gpr["a0"])

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

emuObj.SetDisplayAspectWide()

local patcher =  function()
--16:9
eeObj.WriteMem32(0x003ae5d8,0x3c023f40)
--60 fps
--eeObj.WriteMem32(0x201AD428,0x00000001)

emuObj.ThrottleMax()
end
 
emuObj.AddVsyncHook(patcher)

Annoying stutter removed.
 
Last edited:
Grand Theft Auto™ Forelli Redemption®

CLI
Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth
--gs-kernel-cl="h2lpool"
--gs-kernel-cl-up="h2lpool2x2"
--gs-h2l-list-opt=1
--gs-h2l-accurate-hash=1
--gs-flush-ad-xyz=safeZwrite
--gs-check-trans-rejection=1

--vu1-no-clamping=0
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog

--ee-hook=0x27cea8,FastForwardClock
--ee-hook=0x154ba0,AdvanceClock,,3100 #for 60fps

--framelimiter=1
--framelimit-fps=60.0
--framelimit-scalar=1
LUA
Code:
-- Grand Theft Auto™ Forelli Redemption®
-- Widescreen fix by nemesis2000
-- ported to PS4
-- other config taken from official PSN release
-- emu used=kof98um

require( "ee-gpr-alias" ) -- you can access EE GPR by alias (gpr.a0 / gpr["a0"])

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

emuObj.PadSetLightBar(0, 145, 255, 10)
emuObj.SetDisplayAspectWide()
emuObj.SetDeinterlace(true)
 
local patcher = function()
--widescreen fix
eeObj.WriteMem32(0x00184A4C,0x3C013F9D)
eeObj.WriteMem32(0x00184A50,0x44810000)
eeObj.WriteMem32(0x00184A54,0x46006302)
eeObj.WriteMem32(0x00184A58,0x03E00008)
eeObj.WriteMem32(0x00184A5C,0xE78C85C8)

eeObj.WriteMem32(0x00253BB8,0x0C061293)
eeObj.WriteMem32(0x00253D6C,0x0C061296)
eeObj.WriteMem32(0x0027B214,0x0C061296)
eeObj.WriteMem32(0x0027B6EC,0x0C061296)
--60 fps
eeObj.WriteMem32(0x2027CEAC,0x28420001)

emuObj.ThrottleMax()
end
 
emuObj.AddVsyncHook(patcher)

-- Performace fix
local thresholdArea = 600
emuObj.SetGsTitleFix( "ignoreUpRender", thresholdArea , {alpha=0x80008068 , zmsk=1 } )


-- Bug#9133
-- workaround ... -16020(gp) value is something wrong. the value comes from CCamera::Process().
--  unfortunately accurate math or any other flags don't help for this problem,
--          even though it should be calculation error issue.
--          for here, it's just given 0 radian for CSprite::RenderBufferedOneXLUSprite_Rotate_Dimension()
--          actually the cloud is a billboard, so it should have 0 degree in view-space.
--          so given 0 degree must be OK.... but could cause some corruption (wrong perspective or something)
eeInsnReplace(0x318344,   0xc792c16c, 0x44809000) --    lwc1   $f18,-16020(gp)

local USEWIDESCREEN_ADDRESS = 0x416748

local H1 =   -- start of main()
   function()
     eeObj.WriteMem8(USEWIDESCREEN_ADDRESS, 1)   -- enable widescreen
   end

local H2 =   -- change widescreen flag
   function()
     local isWidescreen = eeObj.GetGpr(gpr.v0)
    
     if isWidescreen == 0 then
       emuObj.SetDisplayAspectNormal()
     else
       emuObj.SetDisplayAspectWide()
     end
   end

local hook1 = eeObj.AddHook(0x27ed04, 0x7fbf0000, H1)   -- <main>:
local hook2 = eeObj.AddHook(0x270e50, 0xa382b8d8, H2)   -- <CMenuManager::AnaliseMenuContents(void)>:

Mod for GTA III. added 60 FPS. No issues noticed.
 
Wild Arms 4 PAL still has random freezes where the controller stops responding

i would say PAL is able to go far than NTSC (sometimes it freeze but not always like ntsc)
until i cant pass this area which is known bug even on real hardware, the problem is when i change to NTSC mode it will now face the old problem of NTSC which is more random freezes even your just running around.

wiki:
The English localization copy is known to freeze when loading the area at the top of a ladder at "The Great Wall" roughly 5 hours into the game when played in PAL mode. A workaround can be achieved by saving the game in the area prior and loading the game in NTSC mode, going past and saving on the world map. No other areas are known to have this problem.

2023-06-26-154508.png


problem of this game on ps4 emu right now
-the intro on NTSC always freeze with a loop sound (animation is playing but the sound always freeze, controller not responding)
-slowdown on menu when there is a scrolling text
-and some places has a line. like this on video
https://imgur.com/a/OgtFaKM

working: red faction 2, art of fighting, kof orochi

sometimes i played this option
--cdvd-sector-read-cycles=40000
--cdvd-sector-seek-cycles=10
--vu1-mpg-cycles=500

==========================================
 
Fix for Demon Chaos (PAL-M5) (SLES-54305)

CLI
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth

--host-display-mode=16:9
--force-frame-blend=1

--vu1-di-bits=0

#https://www.youtube.com/watch?v=JxsfEio0L8Y
#emu used=jak2 v2
LUA
Code:
-- Demon Chaos (PAL-M5) (SLES-54305)
-- Widescreen hack by ElHecht
-- disable bloom by Raigho @PCSX2 forums
-- Crash fix by Kozarovv
-- ported to PS4
-- emu used=jak2 v2

local gpr = require("ee-gpr-alias")

apiRequest(2.0)

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

local patcher = function()
-- 16:9
eeObj.WriteMem32(0x0017a87c,0x3c023f80) -- 3c023faa hor fov
eeObj.WriteMem32(0x0017a880,0x344a0000) -- 344aaaaa hor fov

--Disable Bloom 0x20= 25%, 0x40=50%
eeObj.WriteMem32(0x00244924,0x0)

--title screen crash fix
-- Skip -1 sector reads
iopObj.WriteMem32(0x0a7ed8, 0x0c07fffa)
iopObj.WriteMem32(0x1fffe8, 0x04800003)
iopObj.WriteMem32(0x1ffff0, 0x08029f58)
iopObj.WriteMem32(0x1ffff8, 0x03e00008)
iopObj.WriteMem32(0x1ffffc, 0x24020001)


emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

Crash at title screen fixed by Kozarovv. Disable Bloom code by Raigho at PCSX2 forums. Some slight artifacts during FMVs, other than that, game works great so far..
 
Last edited:
The Incredibles - Rise of the Underminer+Cheats SLUS-21217

CLI
Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth

--host-display-mode=16:9
--cdvd-sector-read-cycles=8000

--force-frame-blend=1 #stops screen shaking

--vu1-no-clamping=0 # stops random SPS
LUA
Code:
-- The Incredibles - Rise of the Underminer SLUS-21217
-- Widescreen hack
-- Cheats by MadCatz
-- ported to PS4 lua
-- emu used=kof98um

apiRequest(0.1)
 
local emuObj  = getEmuObject()
local eeObj  = getEEObject()
 
local patcher = function()
--hang fix by Prafull
--eeObj.WriteMem32(0x001110e0,0x00000000) --
--16:9
eeObj.WriteMem32(0x00218E84,0x3C023F17)
eeObj.WriteMem32(0x00218EB0,0x3C023F10)

--Unlock All Mission Select by MadCatz
eeObj.WriteMem32(0x200C2000,0x8C410024)
eeObj.WriteMem32(0x200C2004,0x34210002)
eeObj.WriteMem32(0x200C2008,0xAC410024)
eeObj.WriteMem32(0x200C200C,0x080EFC22)
eeObj.WriteMem32(0x200C2010,0x8C420024)
eeObj.WriteMem32(0x203BF080,0x08030800)

emuObj.ThrottleMax()
end
 
emuObj.AddVsyncHook(patcher)

SPS fixed with "--vu1-no-clamping=0". Hang fix not needed on PS4. Game works flawlessly
 
Building off of this:

https://www.psx-place.com/threads/r...nfiguration-on-ps4.16131/page-215#post-364914

thanks @Jvn9207 for crash fix!

WIP for Call of Duty 3 NTSC

CLI
Code:
--gs-uprender=2x2
--gs-upscale=gpu
--gs-use-deferred-l2h=1
--gs-check-trans-rejection68=1
--gs-kernel-cl-up="up2x2tc"

--fpu-no-clamping=1  #crash fix
--fpu-accurate-mul-fast=1

--ee-cycle-scalar=2.2
--vu1-mpg-cycles=5000
--vu0-mpg-cycles=9000
--idec-cycles-per-qwc=800
--assert-path1-ad=1
LUA
Code:
-- Call of Duty 3
-- ported to PS4 LUA
-- emu used=Jakx v2, kof98um

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

emuObj.SetDisplayAspectWide()

emuObj.SetGsTitleFix( "ignoreUpRender", 800 , { zmsk=1 } )
emuObj.SetGsTitleFix( "globalSet",  "reserved", { waveThreshold = 90000} )
emuObj.SetGsTitleFix( "ignoreAreaUpdate", 0, { } )

local patcher =  function()
--Unlock All Chapters/Bonus Materials by Code Master, Lajos Szalay
local code_check1 = eeObj.ReadMem16(0x100238)
if code_check1 == 0xF7F7 then
eeObj.WriteMem32(0x2049C944,0x0000000E)
end
--Unlock All Levels by Codejunkies
eeObj.WriteMem32(0x0049C944,0x0000000E)

emuObj.ThrottleMax()
end
 
emuObj.AddVsyncHook(patcher)

Still needs work but almost there. Maybe some effects disabled might help...
 
Last edited:
Building off of this:

https://www.psx-place.com/threads/r...nfiguration-on-ps4.16131/page-215#post-364914

thanks @Jvn9207 for crash fix!

WIP for Call of Duty 3 NTSC

CLI
Code:
--gs-uprender=2x2
--gs-upscale=gpu
--gs-use-deferred-l2h=1
--gs-check-trans-rejection68=1
--gs-kernel-cl-up="up2x2tc"

--fpu-no-clamping=1  #crash fix
--fpu-accurate-mul-fast=1

--ee-cycle-scalar=2.2
--vu1-mpg-cycles=5000
--vu0-mpg-cycles=9000
--idec-cycles-per-qwc=800
--assert-path1-ad=1
LUA
Code:
-- Call of Duty 3
-- ported to PS4 LUA
-- emu used=Jakx v2, kof98um

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

emuObj.SetDisplayAspectWide()

emuObj.SetGsTitleFix( "ignoreUpRender", 800 , { zmsk=1 } )
emuObj.SetGsTitleFix( "globalSet",  "reserved", { waveThreshold = 90000} )
emuObj.SetGsTitleFix( "ignoreAreaUpdate", 0, { } )

local patcher =  function()
--Unlock All Chapters/Bonus Materials by Code Master, Lajos Szalay
local code_check1 = eeObj.ReadMem16(0x100238)
if code_check1 == 0xF7F7 then
eeObj.WriteMem32(0x2049C944,0x0000000E)
end
--Unlock All Levels by Codejunkies
eeObj.WriteMem32(0x0049C944,0x0000000E)

emuObj.ThrottleMax()
end
 
emuObj.AddVsyncHook(patcher)

Still needs work but almost there.

maybe this can help too?
Code:
-- speed Selector
local pad_bits = emuObj.GetPad()

local L1       = pad_bits &  0x0400
local L3       = pad_bits &  0x0002
local R1       = pad_bits &  0x0800
local R3       = pad_bits &  0x0004

if (L1 ~= 0 and R3 ~= 0) then --60fps
--60 fps
eeObj.WriteMem32(0x2053CF04,0x00000001)
end

if (L3 ~= 0 and R1 ~= 0) then --normal mode
eeObj.WriteMem32(0x2053CF04,0x00000002)
end
 
maybe this can help too?
Code:
-- speed Selector
local pad_bits = emuObj.GetPad()

local L1       = pad_bits &  0x0400
local L3       = pad_bits &  0x0002
local R1       = pad_bits &  0x0800
local R3       = pad_bits &  0x0004

if (L1 ~= 0 and R3 ~= 0) then --60fps
--60 fps
eeObj.WriteMem32(0x2053CF04,0x00000001)
end

if (L3 ~= 0 and R1 ~= 0) then --normal mode
eeObj.WriteMem32(0x2053CF04,0x00000002)
end

Give it a shot. I'm still trying to find some values with debugger to see if AdvanceClock may be helpful
 
Frank Herbert's Dune™

CLI
Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth

--host-display-mode=16:9
--cdvd-sector-read-cycles=3000

--force-frame-blend=1

--vu1-no-clamping=0

Graphics fixed. Widescreen patch(WriteMem32) breaks game. If used another way(InsnReplace), annoying black bars in FMV, gameplay fine. I post for those who want to use anyway

Code:
-- emu used=kof98um

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

--16:9 A
eeInsnReplace(0x00106e60,0x00000000,0x46070202)
eeInsnReplace(0x00106e64,0x00000000,0x3c013f40)
eeInsnReplace(0x00106e68,0x00000000,0x4481f000)
eeInsnReplace(0x00106e6c,0x00000000,0x461e4202)
eeInsnReplace(0x00106e70,0x00000000,0x080cfdec)

 
local patcher = function()
--16:9 B
eeObj.WriteMem32(0x0033f7ac,0x08041b98)

emuObj.ThrottleMax()
end
 
emuObj.AddVsyncHook(patcher)

I guess patching the ISO is also an option.
 
Excuse me someone has the config-emu-ps4.txt for Gran Turismo 4 SCPS-17001 ? I have only lua file for this game.

-- Gran Turismo 4 NTSC-J (SCPS-17001)

apiRequest(0.1)

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

local patcher = function()

-- Autoboot mode NTSC=0 / 480p=1 / 1080i=2
eeObj.WriteMem32(0x20AB4A78,0x00000001)

-- Fix shadows
eeObj.WriteMem32(0x001D2C38,0x00000000) --0C074C12

-- Fix graphics increment
eeObj.WriteMem32(0x0033A070,0x1000000B) --5440000B
eeObj.WriteMem32(0x001D30B0,0x450000A1) --450100A1
eeObj.WriteMem32(0x003E8C24,0x4680F320) --46806320
eeObj.WriteMem32(0x003E8C44,0x4680F360) --46806B60
 
Excuse me someone has the config-emu-ps4.txt for Gran Turismo 4 SCPS-17001 ? I have only lua file for this game.

-- Gran Turismo 4 NTSC-J (SCPS-17001)

apiRequest(0.1)

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

local patcher = function()

-- Autoboot mode NTSC=0 / 480p=1 / 1080i=2
eeObj.WriteMem32(0x20AB4A78,0x00000001)

-- Fix shadows
eeObj.WriteMem32(0x001D2C38,0x00000000) --0C074C12

-- Fix graphics increment
eeObj.WriteMem32(0x0033A070,0x1000000B) --5440000B
eeObj.WriteMem32(0x001D30B0,0x450000A1) --450100A1
eeObj.WriteMem32(0x003E8C24,0x4680F320) --46806320
eeObj.WriteMem32(0x003E8C44,0x4680F360) --46806B60
try this
Code:
-gs-use-deferred-l2h=1

--vif1-instant-xfer=1

--gs-use-mipmap=0
--gs-use-clut-merge=1
--gs-kernel-cl="clutmerge"
--gs-kernel-cl-up="clutmerge2x2"

#Fix incomplete letters in menu
--vu0-no-clamping=0
--vu0-clamp-operands=1
--vu0-clamp-results=1

--vu1-no-clamping=0
--vu1-clamp-operands=1
--vu1-clamp-results=1

--ee-cycle-scalar=1.50

#Fix video anticipated race license
--fpu-accurate-muldiv-range=0x00579EB8,0x00579EB8
--fpu-accurate-muldiv-range=0x00579EDC,0x00579EDC
--fpu-accurate-muldiv-range=0x0057A008,0x0057A008
--fpu-accurate-muldiv-range=0x0057A030,0x0057A030

--detect-idle-vif=1
 
Made Man - Confessions of the Family Blood (SLUS-21587)

CLI
Code:
--gs-uprender=2x2
--gs-upscale=gpu #<-- Important!

--host-display-mode=16:9
--host-vsync=1
--host-audio-latency=0.045
--ee-hook=0x00232f2c,AdvanceClock,,9000
--ee-evt-check-full=1


--cdvd-sector-read-cycles=3000
LUA
Code:
-- Made Man - Confessions of the Family Blood (U)(SLUS-21587)
-- Widescreen Hack by Arapapa
-- ported to PS4
-- emu used=swjsf v1

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

--emuObj.SetDisplayAspectWide()

local patcher =  function()
--Widescreen hack 16:9
eeObj.WriteMem32(0x00152dd0,0x3c013fab) --0x3c013f80
--Zoom
eeObj.WriteMem32(0x002205d8,0x3c013f20) --0x3c013f00
--Black Bar Fix
eeObj.WriteMem32(0x00100b8c,0x3c010000) --0x3c014420 Bottom
eeObj.WriteMem32(0x00100ba0,0x3c010000) --0x3c014270 Upper
--Black Scene Fix
eeObj.WriteMem32(0x00100e2c,0x3c010000) --0x3c0143f0
--Zoom (Event, Menu)  3F508228
eeObj.WriteMem32(0x001b2e10,0x3c013ee0) --0x3c013f1c
eeObj.WriteMem32(0x001b2e14,0x342180ff) --0x342161ab

emuObj.ThrottleMax()
end
 
emuObj.AddVsyncHook(patcher)

Game will only boot with parappa v1 and Star Wars Jedi Star Fighter v1. Will not boot correctly with "upscale=edgesmooth"

Works flawlessly with config.
 
try this
Code:
-gs-use-deferred-l2h=1

--vif1-instant-xfer=1

--gs-use-mipmap=0
--gs-use-clut-merge=1
--gs-kernel-cl="clutmerge"
--gs-kernel-cl-up="clutmerge2x2"

#Fix incomplete letters in menu
--vu0-no-clamping=0
--vu0-clamp-operands=1
--vu0-clamp-results=1

--vu1-no-clamping=0
--vu1-clamp-operands=1
--vu1-clamp-results=1

--ee-cycle-scalar=1.50

#Fix video anticipated race license
--fpu-accurate-muldiv-range=0x00579EB8,0x00579EB8
--fpu-accurate-muldiv-range=0x00579EDC,0x00579EDC
--fpu-accurate-muldiv-range=0x0057A008,0x0057A008
--fpu-accurate-muldiv-range=0x0057A030,0x0057A030

--detect-idle-vif=1

I tested this configuration but the #Fix video anticipated race license did not work

Gran%20Turismo%204_20230627222627.jpg
 

Similar threads

Back
Top