PS4 [Research]PS2 emulator configuration on PS4

It's a big question mark for me. Hooking the GIF transfer function at 0x102068 to delay it will force the graphical corruption at all times, similar to what EETimingHack is doing. It seems that it is something with DMA timing, but it does not make too much sense to me how speeding up this function can fix it. Maybe some other transfer has to slow down instead.
 
Dragon Ball Z: Budokai 3 NTSC

Code:
-- Dragon Ball Z: Budokai 3
-- freeze skip by Stayhye
-- widescreen found @PCSX2 forums
-- emu used=ADK

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

apiRequest(0.1)

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

local patcher = function()
--16:9
eeObj.WriteMem32(0x2047CA50,0x3f23d706) -- 3F5A740E
eeObj.WriteMem32(0x20470434,0x3f23d706) -- 3F5A740E
--Unlock All Characters by bungholio, lee4, CMX
eeObj.WriteMem32(0x2046A668,0xFFFFFFFF)
eeObj.WriteMem32(0x2046A66C,0xFFFFFFFF)
--fight intro freeze skip
eeObj.WriteMem32(0x00100f54,0)

end

emuObj.AddVsyncHook(patcher)

Skipping fight intros are no longer necessary.
 
Last edited:
Resident Evil - Survivor 2 - Code Veronica (SLES-50650)

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


--ee-cycle-scalar=1.5
LUA
Code:
-- Resident Evil - Survivor 2 - Code Veronica (PAL-E) (SLES-50650)
-- freeze fix by Stayhye
-- View selector by Stayhye
-- RE4 View & Widescreen hack by ElHecht
-- emu used=jak tpl v1

apiRequest(0.1)

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

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

emuObj.SetDisplayAspectWide()

local WS = function()
--fix annoying slow FMVs
eeObj.WriteMem32(0x00369d34,0)

-- 16:9
eeObj.WriteMem32(0x00339528,0x3c023f61) -- 3c023f96 hor fov
eeObj.WriteMem32(0x0033952c,0x34436873) -- 344345a2 hor fov

-- View Selector
local pad_bits    = emuObj.GetPad()

local L3  = pad_bits &  0x0002
local R3  = pad_bits &  0x0004

if (L3 ~= 0) then
   -- RE4 style camera
   eeObj.WriteMem32(0x2037e2c0,0x40900000) -- tori_x (horizontal)
   eeObj.WriteMem32(0x2037e2d0,0xC0000000) -- tory_y (height)
   eeObj.WriteMem32(0x2037e2e0,0x41100000) -- tori_z (distance)
end

if (R3 ~= 0) then
   -- Normal Camera
   eeObj.WriteMem32(0x2037e2c0,0x00000000) -- tori_x (horizontal)
   eeObj.WriteMem32(0x2037e2d0,0x00000000) -- tory_y (height)
   eeObj.WriteMem32(0x2037e2e0,0x00000000) -- tori_z (distance)
end

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(WS)

Fix for annoying FMV slowdown/de-sync. Added a 1st/3rd person switch. Works great!

We can also use View Selector in Resident Evil Veronica X (NTSC)
Code:
-- VeronicaX
apiRequest(0.1)    -- request version 0.1 API. Calling apiRequest() is mandatory.


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

-- Bug# 9976   
emuObj.SetGsTitleFix( "clipScissors", "reserved", {alpha = 0 , frameW = 4 , psm = 0} )


local WS = function()


-- Infinite Item Usage
eeObj.WriteMem32(0x2028AD68,0x00000000)
eeObj.WriteMem32(0x2028AD7C,0x00000000)

-- Press L2+D-Up For Item Box Anywhere
local code_check3 = eeObj.ReadMem16(0x01E0DBC2)
if code_check3 == 0xFEEF then -- L2+D-Up
eeObj.WriteMem32(0x00433166,0x00000004)
end

-- Press L2+D-Down For Open Save Menu Anywhere
local code_check3 = eeObj.ReadMem16(0x01E0DBC2)
if code_check3 == 0xFEBF then -- L2+D-Down
eeObj.WriteMem32(0x00433166,0x00000020)
end

-- Unlock All Extras
eeObj.WriteMem32(0x00433104,0x0000FFFF)

-- Claire's Alternate Costume
eeObj.WriteMem32(0x0045BB70,0x00000001)

-- First Person View (Off) [L1+Square]
local code_check4 = eeObj.ReadMem16(0x01E0DBC2)
if code_check4 == 0x7BFF then -- L1+Square
eeObj.WriteMem32(0x0043315C,0x00000002)
end

-- First Person View (On) [L2+Square]
local code_check5 = eeObj.ReadMem16(0x01E0DBC2)
if code_check5 == 0x7EFF then -- L2+Square
eeObj.WriteMem32(0x0043315C,0x000000C2)
end

emuObj.ThrottleMax()

end

emuObj.AddVsyncHook(WS)

Was test about year ago with @Kugozx and it work pretty good too!

Resident Evil Veronica X First Person Mod Showcase!
VIDEO
 
Dragon Ball Z: Infinite Worlds NTSC

LUA
Code:
-- Dragon Ball Z: Infinite World
-- widescreen
-- freeze skip by Stayhye
-- emu used=jak v1

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

apiRequest(0.1)

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

local patcher = function()
--16:9
eeObj.WriteMem32(0x2052E6B0,0x3f23d706) --3f5a740e
eeObj.WriteMem32(0x2049C054,0x3f23d706) --3f5a740e
--fight intro freeze skip
eeObj.WriteMem32(0x00101054,0)

end

emuObj.AddVsyncHook(patcher)

Same issue as Budokai 3. Eliminated!
 
Last edited:
I'm convinced. --vif1-instant-xfer=1 has no effect on any emu/games(100s of tests). Everything runs the same with or without it. I've tested this a long time ago.



Video of glitches
1. Set a breakpoint for GIF write in PCSX2
2. Get the offsets that occur during that issue.
3. AdvanceClock or FastForwardClock them, or simply turn them from sw into sq or sh
 
Last edited:
100% VU1 issue. Issue can be replicated in PCSX2 by turning VU1 clamping off
Probably safe to assume that it's related to VU1 timing since clamping in PS4 doesn't do the trick. Try mpg cycles and jit-sync.
 
Last edited:
Prince of Persia™ The Sands of Time® NTSC

CLI
Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth
--gs-scanout-offsetx=500
--gs-scanout-offsety=500
#--gs-frontend-opt-mode=0
--host-display-mode=16:9
--vu1-mpg-cycles=1000
--vif1-instant-xfer=0
--vu1-no-clamping=0
--vu1-clamp-results=1
--fpu-no-clamping=0
--fpu-clamp-results=1
LUA
Code:
-- Prince of Persia™ The Sands of Time®
-- FMV fix by Stayhye
-- Widescreen
-- emu used=ADK

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

apiRequest(1.0)

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

local patcher = function()

--gameplay
eeObj.WriteMem32(0x004b5114,0x3c033f40)
eeObj.WriteMem32(0x004b5144,0x4600a886)
eeObj.WriteMem32(0x004b514c,0x46000346)
eeObj.WriteMem32(0x004b5150,0x4600a306)

--rfix
eeObj.WriteMem32(0x004a4e70,0x3c014455)
eeObj.WriteMem32(0x004a4eac,0x44810000)

--menu fix
eeObj.WriteMem32(0x00464538,0x0c11e32f)
eeObj.WriteMem32(0x00478cbc,0x3c014456)
eeObj.WriteMem32(0x00478d08,0x44812800)
eeObj.WriteMem32(0x00478d04,0x2407ff95)

--HUD fix
eeObj.WriteMem32(0x001d8c80,0x3c03bddd)
eeObj.WriteMem32(0x001d8c88,0x3464dddd)

--partial bb fix
eeObj.WriteMem32(0x00253110,0x00000000)
eeObj.WriteMem32(0x002bd92c,0x00000000)

-- Fix for FMV de-sync/slowness
eeObj.WriteMem32(0x004a0034,0)
eeObj.WriteMem32(0x0019a0c4,0)
eeObj.WriteMem32(0x0019a1dc,0)

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

Fix for slow/de-synced FMVs.
 
Last edited:
What are some options to test in a config file to try and fix this issue?


I'm using rogue v1 emu with 2x2 upsacle and edgesmooth, no other options in PS2 FPKG selected. Jak emu doesn't work with game (crashes on boot)


The majority of time the framerate is smooth and audio clear, but in certain areas of all tracks we have the issue in the video with dropped frames and choppy audio.
 
Resident Evil - Survivor 2 - Code Veronica (SLES-50650)

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


--ee-cycle-scalar=1.5
LUA
Code:
-- Resident Evil - Survivor 2 - Code Veronica (PAL-E) (SLES-50650)
-- freeze fix by Stayhye
-- View selector by Stayhye
-- RE4 View & Widescreen hack by ElHecht
-- emu used=jak tpl v1

apiRequest(0.1)

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

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

emuObj.SetDisplayAspectWide()

local WS = function()
--fix annoying slow FMVs
eeObj.WriteMem32(0x00369d34,0)

-- 16:9
eeObj.WriteMem32(0x00339528,0x3c023f61) -- 3c023f96 hor fov
eeObj.WriteMem32(0x0033952c,0x34436873) -- 344345a2 hor fov

-- View Selector
local pad_bits    = emuObj.GetPad()

local L3  = pad_bits &  0x0002
local R3  = pad_bits &  0x0004

if (L3 ~= 0) then
   -- RE4 style camera
   eeObj.WriteMem32(0x2037e2c0,0x40900000) -- tori_x (horizontal)
   eeObj.WriteMem32(0x2037e2d0,0xC0000000) -- tory_y (height)
   eeObj.WriteMem32(0x2037e2e0,0x41100000) -- tori_z (distance)
end

if (R3 ~= 0) then
   -- Normal Camera
   eeObj.WriteMem32(0x2037e2c0,0x00000000) -- tori_x (horizontal)
   eeObj.WriteMem32(0x2037e2d0,0x00000000) -- tory_y (height)
   eeObj.WriteMem32(0x2037e2e0,0x00000000) -- tori_z (distance)
end

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(WS)

Fix for annoying FMV slowdown/de-sync. Added a 1st/3rd person switch. Works great!
Remap cheats also work great
Code:
--Remap Buttons
eeObj.WriteMem32(0x2010BFF4,0x0803F414)
eeObj.WriteMem32(0x200FD050,0x00C0C821)
eeObj.WriteMem32(0x200FD054,0x08042FFF)
eeObj.WriteMem32(0x200FD058,0x24030070)
eeObj.WriteMem32(0x2010C064,0x0803F417)
eeObj.WriteMem32(0x200FD05C,0x87240002)
eeObj.WriteMem32(0x200FD060,0x308573FF)
eeObj.WriteMem32(0x200FD064,0x93260010)
eeObj.WriteMem32(0x200FD068,0x93270011)
eeObj.WriteMem32(0x200FD06C,0x9328000F)
eeObj.WriteMem32(0x200FD070,0x93290004)
eeObj.WriteMem32(0x200FD074,0x30810800)
eeObj.WriteMem32(0x200FD078,0x34A38000)
eeObj.WriteMem32(0x200FD07C,0x0061280B)
eeObj.WriteMem32(0x200FD080,0xA327000F)
eeObj.WriteMem32(0x200FD084,0x34A30400)
eeObj.WriteMem32(0x200FD088,0x2D210041)
eeObj.WriteMem32(0x200FD08C,0x0061280A)
eeObj.WriteMem32(0x200FD090,0x3923007F)
eeObj.WriteMem32(0x200FD094,0x00031840)
eeObj.WriteMem32(0x200FD098,0x2D21007F)
eeObj.WriteMem32(0x200FD09C,0x0001180A)
eeObj.WriteMem32(0x200FD0A0,0xA3230010)
eeObj.WriteMem32(0x200FD0A4,0x34A30800)
eeObj.WriteMem32(0x200FD0A8,0x2D2100BF)
eeObj.WriteMem32(0x200FD0AC,0x0061280B)
eeObj.WriteMem32(0x200FD0B0,0x2523FF80)
eeObj.WriteMem32(0x200FD0B4,0x00031840)
eeObj.WriteMem32(0x200FD0B8,0x2D210081)
eeObj.WriteMem32(0x200FD0BC,0x0001180B)
eeObj.WriteMem32(0x200FD0C0,0xA3230011)
eeObj.WriteMem32(0x200FD0C4,0x34090080)
eeObj.WriteMem32(0x200FD0C8,0x00060842)
eeObj.WriteMem32(0x200FD0CC,0x3821007F)
eeObj.WriteMem32(0x200FD0D0,0x0026480B)
eeObj.WriteMem32(0x200FD0D4,0x00080842)
eeObj.WriteMem32(0x200FD0D8,0x24230080)
eeObj.WriteMem32(0x200FD0DC,0x0068480B)
eeObj.WriteMem32(0x200FD0E0,0xA7250002)
eeObj.WriteMem32(0x200FD0E4,0x03E00008)
eeObj.WriteMem32(0x200FD0E8,0xA3290004)

--Infinity Life
eeObj.WriteMem32(0x205B12BC,0x000000FF)

--Infinity Timer
eeObj.WriteMem32(0x20280774,0x00000000)

Now right stick activated and gameplay more comfy!
 
What are some options to test in a config file to try and fix this issue?


I'm using rogue v1 emu with 2x2 upsacle and edgesmooth, no other options in PS2 FPKG selected. Jak emu doesn't work with game (crashes on boot)


The majority of time the framerate is smooth and audio clear, but in certain areas of all tracks we have the issue in the video with dropped frames and choppy audio.
So the only issue is framerate? try this then
Code:
--ee-cycle-scalar=1.2
--vu1-di-bits=0
--vu1-mpg-cycles=2000
And in the case you were feeling more curious, here's a link of the wiki https://www.psdevwiki.com/ps4/PS2_Emulation#XXXX-YYYYY_cli.conf_commands

There's a reason why I made a Speedhacks tab ;)
 
Last edited:
I don't know if this is useful anymore, but with NFS Share you can extract the emulog through ftp.
i use this commands on Shadow man 2econd coming+jakxv2 emu (game still not working):

Code:
#commands:
--isd-git-hash=931434bb2afbfae728c7fe2188ecc9d168cdc3b6
--usrd-git-hash=245bb2b4741fff22e15aad0476d77f20e30d38a0
#--playgo-disc-per-chunk=4
--path-emulog="/tmp/recordings"
--path-recordings="/tmp/recordings"
--path-snaps="/tmp/snapshots"
--path-vmc="/tmp/vmc"
--config-local-lua=""
#--path-manual"/tmp/manual"
--path-patches="/app0/patches/SLES-50446_config.lua"
--path-trophydata="/app0/trophy_data"
--path-featuredata="/app0/feature_data"
--path-toolingscript="/app0/patches"
--rom="PS20220WD20050620.crack"
--ps2-title-id=SLES-50446
--max-disc-num=1
--host-audio=1
--verbose-cdvd-reads=1
--assert-path1-ad=1
#--cdvd-determinism=1
--verbose-cpu-cycles=1
--verbose-thread-id=1
#--ee-jit-opt-debug=1
--lua-debug-api=1
--emulog-file=1
--host-osd=verbose
--host-graph=off
--pad-record=1
--pad-record-frame=1
--verbose-tooling=1
--lua-script=1
--lua-use-pcall=1
--lua-trace-gc=1
--lua-trace-fn=1
--lua-trace-hooks=1
--lua-trace-vmsteps=1
--game-live-streaming=1
--game-live-streaming-record=1
--log-tooling=1
--verbose-deci2=1
--load-tooling-lua=1
--load-feature-lua=1
--lopnor-config=1
--ee-precompile-trace=1
#--safe-area-min=0.90
#--host-edit-safe-area=
--host-dbg-kbd=1
--host-vsync=1
--config-opt=1
--vu1-injection=enable
--spu2-warnings=1
--spu2-update-deferral=1
--screenshot-comment=1
--savedata-fingerprint=fingerprint
--pmc-enable=1
--threaded-gs=1
#--vmc-src=host
#--pad-run=1
--framelimit-mode=normal
--audio-stretching=1
#--eTrace=?
#--iTrace=?
#--spu2Trace=?
#--vtune-ee=?
#--vtune-vu=?
--ee-evt-check-full=1
--iop-evt-check-full=1
#--unit-test=enable?
#--config="config-emu-ps4.txt"?
--vu-d-bit=1
--vu-t-bit=1
--ee-break-as-nop=1
--host-display-mode=16:9    
--gs-upscale=edgesmooth
--gs-uprender=2x2


This is what I get in the emulog:

Code:
i-thread[   0.465sec] IOP Thread Affinity set to: 0x0000000f
gsthread[   0.465sec] GS Thread Affinity set to: 0x00000070
vu1-thr [   0.470sec] VU1 Thread Affinity set to: 0x0000003f
i-cdvd  [   0.497sec] CDVD Thread Affinity set to: 0x0000006f
x-host  [   0.576sec] EE Thread Affinity set to: 0x0000000f
x-emu   [   0.576sec] Processing:  msgid=531 - uxMsg_StartExec(0x8)
x-mcd   [   0.593sec] VMC-Read #0 from TARGET: file=VMC0.card
x-save  [   0.593sec] LoadVmc Request [port=#0]: user=111ffe72 dir=SLES-50446 file=VMC0.card size=0x00000000_00840000 ofs=0x00000000_00000000
x-mcd   [   0.593sec] Memorycard Port #0 : Successfully Bound.
x-mcd   [   0.593sec] VMC-Read #1 from TARGET: file=VMC1.card
x-save  [   0.593sec] LoadVmc Request [port=#1]: user=111ffe72 dir=SLES-50446 file=VMC1.card size=0x00000000_00840000 ofs=0x00000000_00000000
x-mcd   [   0.593sec] Memorycard Port #1 : Successfully Bound.
x-replay[   0.593sec] PAD Record : Creating replay : /tmp/recordings/sles-50446/padlog
x-replay[   0.593sec]            : [snapshot=no][mcd1=unique][mcd2=unique]
x-mcd   [   0.593sec] Waiting for async read-in-progress: VMC0.card
x-pad   [   0.610sec] ----------------------------------------------------------------------------
x-pad   [   0.610sec] Controller Connection for userid 0x111ffe72:
x-pad   [   0.610sec]     connectionType         : 0 - Local
x-pad   [   0.610sec]     deviceClass            : 0 - SCE_PAD_DEVICE_CLASS_STANDARD
x-pad   [   0.610sec]     deadZoneLeft           : 13
x-pad   [   0.610sec]     deadZoneRight          : 13
x-pad   [   0.610sec]     touchPad Pixel Density : 44.859997
x-pad   [   0.610sec]     touchPad Resolution    : 1920 x 942
x-pad   [   0.611sec] ----------------------------------------------------------------------------
x-save  [   0.634sec] Load Execution Start: buff=0x00000002:81800000 path=/savedata0/VMC0.card size=0x00000000_00840000 ofs=0x00000000_00000000
x-save  [   0.775sec] Load Execution Done : buff=0x00000002:81800000 path=/savedata0/VMC0.card size=0x00000000_00840000 ofs=0x00000000_00000000
x-save  [   0.776sec] Load Execution Start: buff=0x00000002:82040000 path=/savedata0/VMC1.card size=0x00000000_00840000 ofs=0x00000000_00000000
x-mcd   [   0.909sec] Waiting for async read-in-progress: VMC1.card
x-save  [   1.037sec] Load Execution Done : buff=0x00000002:82040000 path=/savedata0/VMC1.card size=0x00000000_00840000 ofs=0x00000000_00000000
orbis-sd[   1.144sec] SaveData unmount, result=0x00000000
x-emu   [   1.160sec] Using host system language = 3
x-emu   [   1.160sec] Writing EEPROM: lang=3 PAL=1, aspect=1
x-host  [   1.160sec] RunStatus: Running...
Lua     [   1.193sec] [FnTrace] CallHook(key=3)
Lua     [   1.194sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.194sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.194sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.194sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.194sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.194sec] [VM Cntr] 0 steps for CallHook(key=3)
x-host  [   1.194sec] RunStatus: Stopping...
x-host  [   1.194sec] RunStatus: All Stopped!
x-emu   [   1.194sec] Processing:  msgid=505 - uxMsg_RepaintScanout(0x0)
x-host  [   1.194sec] RunStatus: Running...
Lua     [   1.200sec] [FnTrace] CallHook(key=3)
Lua     [   1.200sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.200sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.200sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.200sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.201sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.201sec] [VM Cntr] 0 steps for CallHook(key=3)
Lua     [   1.207sec] [FnTrace] CallHook(key=3)
Lua     [   1.207sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.207sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.207sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.207sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.207sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.207sec] [VM Cntr] 0 steps for CallHook(key=3)
Lua     [   1.237sec] [FnTrace] CallHook(key=3)
Lua     [   1.237sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.237sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.237sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.237sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.237sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.237sec] [VM Cntr] 0 steps for CallHook(key=3)
Lua     [   1.245sec] [FnTrace] CallHook(key=3)
Lua     [   1.245sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.245sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.245sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.245sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.245sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.245sec] [VM Cntr] 0 steps for CallHook(key=3)
e-jit   [   1.249sec] EE OVERLAY TRACKER Reset [ExecPS2='NOTHING']
Lua     [   1.253sec] [FnTrace] CallHook(key=3)
Lua     [   1.253sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.253sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.253sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.254sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.254sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.254sec] [VM Cntr] 0 steps for CallHook(key=3)
Lua     [   1.280sec] [FnTrace] CallHook(key=3)
Lua     [   1.280sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.280sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.280sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.280sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.280sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.280sec] [VM Cntr] 0 steps for CallHook(key=3)
Lua     [   1.286sec] [FnTrace] CallHook(key=3)
Lua     [   1.286sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.286sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.286sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.286sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.286sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.286sec] [VM Cntr] 0 steps for CallHook(key=3)
Lua     [   1.296sec] [FnTrace] CallHook(key=3)
Lua     [   1.296sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.296sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.296sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.296sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.296sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.296sec] [VM Cntr] 0 steps for CallHook(key=3)
Lua     [   1.311sec] [FnTrace] CallHook(key=3)
Lua     [   1.311sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.311sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.311sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.311sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.311sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.311sec] [VM Cntr] 0 steps for CallHook(key=3)
Lua     [   1.332sec] [FnTrace] CallHook(key=3)
Lua     [   1.332sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.332sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.332sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.333sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.333sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.333sec] [VM Cntr] 0 steps for CallHook(key=3)
Lua     [   1.338sec] [FnTrace] CallHook(key=3)
Lua     [   1.338sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.338sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.338sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.338sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.338sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.338sec] [VM Cntr] 0 steps for CallHook(key=3)
Lua     [   1.371sec] [FnTrace] CallHook(key=3)
Lua     [   1.371sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.371sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.371sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.371sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.371sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.371sec] [VM Cntr] 0 steps for CallHook(key=3)
Lua     [   1.375sec] [FnTrace] CallHook(key=3)
Lua     [   1.375sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.375sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.375sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.375sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.375sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.375sec] [VM Cntr] 0 steps for CallHook(key=3)
Lua     [   1.378sec] [FnTrace] CallHook(key=3)
Lua     [   1.378sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.378sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.378sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.378sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.378sec] Emu::ThrottleMax()  [current throttle state is fast/max (720 framecnt timeout)
Lua     [   1.378sec] [VM Cntr] 0 steps for CallHook(key=3)
Lua     [   1.387sec] [FnTrace] CallHook(key=3)
Lua     [   1.387sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(8) : WriteMem32
Lua     [   1.387sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
Lua     [   1.387sec] [FnTrace] > /app0/patches/SLES-50446_config.lua(9) : ThrottleMax
Lua     [   1.387sec] [GcTrace] >   \-->  mem usage: 0xd5c4 Bytes
e-Lua   [   1.387sec] Emu::ThrottleMax()  [current throttle state is fast/max (480 framecnt timeout)
 
Last edited:
So the only issue is framerate? try this then
Code:
--ee-cycle-scalar=1.2
--vu1-di-bits=0
--vu1-mpg-cycles=2000
And in the case you were feeling more curious, here's a link of the wiki https://www.psdevwiki.com/ps4/PS2_Emulation#XXXX-YYYYY_cli.conf_commands

There's a reason why I made a Speedhacks tab ;)


Thanks, but this crashes the game. The rogue 1 emu doesn't have the selectable game speed option.

Removing the cycle scaler from the config allows the game to boot but the game is in slow motion most of the time. I'll have a good read of the dev wiki and try some other settings.

The main problems with this game are the framerate drops and audio in the video.

On the minor graphical side, there's no motion blur present like on PS2 but looking at some videos of the game on the PC emulator it doesn't seem to be there either.
 
Prince of Persia™ The Sands of Time® NTSC

CLI
Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth
--gs-scanout-offsetx=500
--gs-scanout-offsety=500
#--gs-frontend-opt-mode=0
--host-display-mode=16:9
--vu1-mpg-cycles=1000
--vif1-instant-xfer=0
--vu1-no-clamping=0
--vu1-clamp-results=1
--fpu-no-clamping=0
--fpu-clamp-results=1
LUA
Code:
-- Prince of Persia™ The Sands of Time®
-- FMV fix by Stayhye
-- Widescreen
-- emu used=ADK

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

apiRequest(1.0)

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

local patcher = function()

--gameplay
eeObj.WriteMem32(0x004b5114,0x3c033f40)
eeObj.WriteMem32(0x004b5144,0x4600a886)
eeObj.WriteMem32(0x004b514c,0x46000346)
eeObj.WriteMem32(0x004b5150,0x4600a306)

--rfix
eeObj.WriteMem32(0x004a4e70,0x3c014455)
eeObj.WriteMem32(0x004a4eac,0x44810000)

--menu fix
eeObj.WriteMem32(0x00464538,0x0c11e32f)
eeObj.WriteMem32(0x00478cbc,0x3c014456)
eeObj.WriteMem32(0x00478d08,0x44812800)
eeObj.WriteMem32(0x00478d04,0x2407ff95)

--HUD fix
eeObj.WriteMem32(0x001d8c80,0x3c03bddd)
eeObj.WriteMem32(0x001d8c88,0x3464dddd)

--partial bb fix
eeObj.WriteMem32(0x00253110,0x00000000)
eeObj.WriteMem32(0x002bd92c,0x00000000)

-- Fix for FMV de-sync/slowness
eeObj.WriteMem32(0x004a0034,0)
eeObj.WriteMem32(0x0019a0c4,0)
eeObj.WriteMem32(0x0019a1dc,0)

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

Fix for slow/de-synced FMVs.

With that config i have alot graphical bugs and some micro slowdowns while gameplay! But FMV's fix work!
So i decide try make my version of config!

Prince of Persia Sands of Time (SLUS20743)

TXT
Code:
--gs-scanout-offsetx=500
--gs-scanout-offsety=500
--host-display-mode=16:9
--vif1-instant-xfer=0
--vu0-no-clamping=0
--vu0-clamp-operands=1
--vu0-clamp-results=1
--vu1-no-clamping=0
--vu1-clamp-operands=1
--vu1-clamp-results=1
--cop2-no-clamping=0
--cop2-clamp-operands=1
--cop2-clamp-results=1

LUA
Code:
-- Prince of Persia The Sands of Time
-- FMV fix by Stayhye
-- Widescreen
-- emu used=Default PS2 Emu

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

apiRequest(0.1)

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

local patcher = function()

--gameplay
eeObj.WriteMem32(0x004b5114,0x3c033f40)
eeObj.WriteMem32(0x004b5144,0x4600a886)
eeObj.WriteMem32(0x004b514c,0x46000346)
eeObj.WriteMem32(0x004b5150,0x4600a306)

--rfix
eeObj.WriteMem32(0x004a4e70,0x3c014455)
eeObj.WriteMem32(0x004a4eac,0x44810000)

--menu fix
eeObj.WriteMem32(0x00464538,0x0c11e32f)
eeObj.WriteMem32(0x00478cbc,0x3c014456)
eeObj.WriteMem32(0x00478d08,0x44812800)
eeObj.WriteMem32(0x00478d04,0x2407ff95)

--HUD fix
eeObj.WriteMem32(0x001d8c80,0x3c03bddd)
eeObj.WriteMem32(0x001d8c88,0x3464dddd)

--partial bb fix
eeObj.WriteMem32(0x00253110,0x00000000)
eeObj.WriteMem32(0x002bd92c,0x00000000)

-- Fix for FMV de-sync/slowness
eeObj.WriteMem32(0x004a0034,0)
eeObj.WriteMem32(0x0019a0c4,0)
eeObj.WriteMem32(0x0019a1dc,0)

end

emuObj.AddVsyncHook(patcher)

Prince of Persia Sands of Time. Short GamePlay!
VIDEO

Also @Stayhye or someone else...if you wish, you can try put some magic cheat in game!

Code:
//cheats (master-value)
patch=1,EE,20AB8D08,word,00000001

R3 - enable "ghost mode", a.k.a. fly mode. It work on PCSX2 and PS3 but not work on PS4 as lua and even if patch iso!

Maybe someone will able to get that cheat work!

 
With that config i have alot graphical bugs and some micro slowdowns while gameplay! But FMV's fix work!
So i decide try make my version of config!

Prince of Persia Sands of Time (SLUS20743)

TXT
Code:
--gs-scanout-offsetx=500
--gs-scanout-offsety=500
--host-display-mode=16:9
--vif1-instant-xfer=0
--vu0-no-clamping=0
--vu0-clamp-operands=1
--vu0-clamp-results=1
--vu1-no-clamping=0
--vu1-clamp-operands=1
--vu1-clamp-results=1
--cop2-no-clamping=0
--cop2-clamp-operands=1
--cop2-clamp-results=1

LUA
Code:
-- Prince of Persia The Sands of Time
-- FMV fix by Stayhye
-- Widescreen
-- emu used=Default PS2 Emu

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

apiRequest(0.1)

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

local patcher = function()

--gameplay
eeObj.WriteMem32(0x004b5114,0x3c033f40)
eeObj.WriteMem32(0x004b5144,0x4600a886)
eeObj.WriteMem32(0x004b514c,0x46000346)
eeObj.WriteMem32(0x004b5150,0x4600a306)

--rfix
eeObj.WriteMem32(0x004a4e70,0x3c014455)
eeObj.WriteMem32(0x004a4eac,0x44810000)

--menu fix
eeObj.WriteMem32(0x00464538,0x0c11e32f)
eeObj.WriteMem32(0x00478cbc,0x3c014456)
eeObj.WriteMem32(0x00478d08,0x44812800)
eeObj.WriteMem32(0x00478d04,0x2407ff95)

--HUD fix
eeObj.WriteMem32(0x001d8c80,0x3c03bddd)
eeObj.WriteMem32(0x001d8c88,0x3464dddd)

--partial bb fix
eeObj.WriteMem32(0x00253110,0x00000000)
eeObj.WriteMem32(0x002bd92c,0x00000000)

-- Fix for FMV de-sync/slowness
eeObj.WriteMem32(0x004a0034,0)
eeObj.WriteMem32(0x0019a0c4,0)
eeObj.WriteMem32(0x0019a1dc,0)

end

emuObj.AddVsyncHook(patcher)

Prince of Persia Sands of Time. Short GamePlay!
VIDEO


Also @Stayhye or someone else...if you wish, you can try put some magic cheat in game!

Code:
//cheats (master-value)
patch=1,EE,20AB8D08,word,00000001

R3 - enable "ghost mode", a.k.a. fly mode. It work on PCSX2 and PS3 but not work on PS4 as lua and even if patch iso!

Maybe someone will able to get that cheat work!


Try this:

Code:
-- Prince of Persia™ The Sands of Time® NTSC
-- FMV fix by Stayhye
-- Widescreen
-- Cheats added
-- emu used=kof98um

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

apiRequest(1.0)

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

local patcher = function()
--Unlock Prince Of Persia 1 by Code Master
eeObj.WriteMem32(0x202348C0,0x8C410000)
eeObj.WriteMem32(0x202348C4,0x34211000)
eeObj.WriteMem32(0x202348C8,0xAC410000)

--Speed Selector
local pad_bits = emuObj.GetPad()

local UP     = pad_bits &  0x0010
local DOWN     = pad_bits &  0x0040
local LEFT     = pad_bits &  0x0080
local RIGHT     = pad_bits &  0x0020
local Triangle  = pad_bits &  0x1000
local Cross     = pad_bits &  0x4000
local Square  = pad_bits &  0x8000
local Circle    = pad_bits &  0x2000
local L1     = pad_bits &  0x0400
local L2     = pad_bits &  0x0100
local L3     = pad_bits &  0x0002
local R1     = pad_bits &  0x0800
local R2     = pad_bits &  0x0200
local R3     = pad_bits &  0x0004
local Select    = pad_bits &  0x0001
local Start     = pad_bits &  0x0008

if (L1 ~= 0 and Select ~= 0) then
--P1 Press L1+Select For Normal Speed by Code Master
eeObj.WriteMem32(0x2066CF88,0x3F800000)
end
if (L2 ~= 0 and Select ~= 0) then
--P1 Press L2+Select For Super Speed by Code Master
eeObj.WriteMem32(0x2066CF88,0x3FC00000)
end
if (R1 ~= 0 and Select ~= 0) then
--P1 Press R1+Select For Turbo Speed by Code Master
eeObj.WriteMem32(0x2066CF88,0x40000000)
end
if (R2 ~= 0 and Select ~= 0) then
--P1 Press R2+Select For Ultra Speed by Code Master
eeObj.WriteMem32(0x2066CF88,0x40800000)
end
if (L3 ~= 0) then
--Leave A Ghost Trail by Code Master
local ghost_trail = eeObj.ReadMem16(0x1001B8)
if ghost_trail == 0x00E0 then
eeObj.WriteMem32(0x00182174,0x00000000)
end
end
if (R3 ~= 0) then
--Ghost Mode by Codejunkies
eeObj.WriteMem32(0x2018216C,0x00000000)
eeObj.WriteMem32(0x20182170,0x00000000)
eeObj.WriteMem32(0x20182174,0x00000000)
end

--------------------End of Cheats--------
--gameplay
eeObj.WriteMem32(0x004b5114,0x3c033f40)
eeObj.WriteMem32(0x004b5144,0x4600a886)
eeObj.WriteMem32(0x004b514c,0x46000346)
eeObj.WriteMem32(0x004b5150,0x4600a306)

--rfix
eeObj.WriteMem32(0x004a4e70,0x3c014455)
eeObj.WriteMem32(0x004a4eac,0x44810000)

--menu fix
eeObj.WriteMem32(0x00464538,0x0c11e32f)
eeObj.WriteMem32(0x00478cbc,0x3c014456)
eeObj.WriteMem32(0x00478d08,0x44812800)
eeObj.WriteMem32(0x00478d04,0x2407ff95)

--HUD fix
eeObj.WriteMem32(0x001d8c80,0x3c03bddd)
eeObj.WriteMem32(0x001d8c88,0x3464dddd)

--partial bb fix
eeObj.WriteMem32(0x00253110,0x00000000)
eeObj.WriteMem32(0x002bd92c,0x00000000)

-- Fix for FMV de-sync/slowness
eeObj.WriteMem32(0x004a0034,0)
eeObj.WriteMem32(0x0019a0c4,0)
eeObj.WriteMem32(0x0019a1dc,0)

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)
 
Last edited:
Try this:

Code:
-- Prince of Persia™ The Sands of Time® NTSC
-- FMV fix by Stayhye
-- Widescreen
-- Cheats added
-- emu used=kof98um

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

apiRequest(1.0)

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

local patcher = function()
--Unlock Prince Of Persia 1 by Code Master
eeObj.WriteMem32(0x202348C0,0x8C410000)
eeObj.WriteMem32(0x202348C4,0x34211000)
eeObj.WriteMem32(0x202348C8,0xAC410000)

--Speed Selector
local pad_bits = emuObj.GetPad()

local UP     = pad_bits &  0x0010
local DOWN     = pad_bits &  0x0040
local LEFT     = pad_bits &  0x0080
local RIGHT     = pad_bits &  0x0020
local Triangle  = pad_bits &  0x1000
local Cross     = pad_bits &  0x4000
local Square  = pad_bits &  0x8000
local Circle    = pad_bits &  0x2000
local L1     = pad_bits &  0x0400
local L2     = pad_bits &  0x0100
local L3     = pad_bits &  0x0002
local R1     = pad_bits &  0x0800
local R2     = pad_bits &  0x0200
local R3     = pad_bits &  0x0004
local Select    = pad_bits &  0x0001
local Start     = pad_bits &  0x0008

if (L1 ~= 0 and Select ~= 0) then
--P1 Press L1+Select For Normal Speed by Code Master
eeObj.WriteMem32(0x2066CF88,0x3F800000)
end
if (L2 ~= 0 and Select ~= 0) then
--P1 Press L2+Select For Super Speed by Code Master
eeObj.WriteMem32(0x2066CF88,0x3FC00000)
end
if (R1 ~= 0 and Select ~= 0) then
--P1 Press R1+Select For Turbo Speed by Code Master
eeObj.WriteMem32(0x2066CF88,0x40000000)
end
if (R2 ~= 0 and Select ~= 0) then
--P1 Press R2+Select For Ultra Speed by Code Master
eeObj.WriteMem32(0x2066CF88,0x40800000)
end
if (L3 ~= 0) then
--Leave A Ghost Trail by Code Master
local ghost_trail = eeObj.ReadMem16(0x1001B8)
if ghost_trail == 0x00E0 then
eeObj.WriteMem32(0x00182174,0x00000000)
end
end
if (R3 ~= 0) then
--Ghost Mode by Codejunkies
eeObj.WriteMem32(0x2018216C,0x00000000)
eeObj.WriteMem32(0x20182170,0x00000000)
eeObj.WriteMem32(0x20182174,0x00000000)
end

--------------------End of Cheats--------
--gameplay
eeObj.WriteMem32(0x004b5114,0x3c033f40)
eeObj.WriteMem32(0x004b5144,0x4600a886)
eeObj.WriteMem32(0x004b514c,0x46000346)
eeObj.WriteMem32(0x004b5150,0x4600a306)

--rfix
eeObj.WriteMem32(0x004a4e70,0x3c014455)
eeObj.WriteMem32(0x004a4eac,0x44810000)

--menu fix
eeObj.WriteMem32(0x00464538,0x0c11e32f)
eeObj.WriteMem32(0x00478cbc,0x3c014456)
eeObj.WriteMem32(0x00478d08,0x44812800)
eeObj.WriteMem32(0x00478d04,0x2407ff95)

--HUD fix
eeObj.WriteMem32(0x001d8c80,0x3c03bddd)
eeObj.WriteMem32(0x001d8c88,0x3464dddd)

--partial bb fix
eeObj.WriteMem32(0x00253110,0x00000000)
eeObj.WriteMem32(0x002bd92c,0x00000000)

-- Fix for FMV de-sync/slowness
eeObj.WriteMem32(0x004a0034,0)
eeObj.WriteMem32(0x0019a0c4,0)
eeObj.WriteMem32(0x0019a1dc,0)

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

Only Speed Selector cheats work! R3 - enable "ghost mode", a.k.a. fly mode.still not work! Strange why ps4 not support it, but thanks for trying anyway!
 

Similar threads

Back
Top