PS4 [Research]PS2 emulator configuration on PS4

Fix for Eragon (SLUS-21322)
CLI
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth

--ee-cycle-scalar=1.65
--iop-cycle-scalar=0.8

--cdvd-sector-read-cycles=4000

#emu used=aofa
LUA
Code:
-- Eragon (U)(SLUS-21322)
-- Widescreen hack by Arapapa
-- emu used=aofa

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

apiRequest(1.0)

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

emuObj.SetDisplayAspectWide()

local patcher = function()
--16:9
eeObj.WriteMem32(0x001b632c,0x3c013f40)
eeObj.WriteMem32(0x001b6330,0x4481f000)
eeObj.WriteMem32(0x001b6334,0x4618a843)
eeObj.WriteMem32(0x001b6338,0x461e0842)
--Render fix
eeObj.WriteMem32(0x001afc34,0x3c023f2b)

--60fps (not used yet, stutters, and messes with FMV)
--eeObj.WriteMem32(0x00399B30,0x00000000)

--Eragon Fixes
eeObj.SchedulerDelayEvent("vif1.dma", 0x1500)

emuObj.ThrottleMax() --loading speedup...DOES NOT affect gameplay contrary to wiki belief. ONLY AFFECTS STATIC SCREENS!

end

emuObj.AddVsyncHook(patcher)

-- Fix background lines
emuObj.SetGsTitleFix( "forceSimpleFetch", "reserved", { texMode=1  } )

Total fix. Tested a little. Works great so far. @Bergolino Gamer

This lua command seems to have a similar function like MTVU
Code:
eeObj.SchedulerDelayEvent("vif1.dma", 0x1500)
 
Last edited:
This lua command seems to have a similar function like MTVU
Code:
eeObj.SchedulerDelayEvent("vif1.dma", 0x1500)

No, it does not. It does delay the selected DMA event by cycles. It is similar to the "EE timing hack" from the PCSX2, albeit it is more accurate and customisable. MTVU is a PCSX2 speedhack, which separates the VU1 from the main thread.
 
Fix for Forgotten Realms - Demon Stone (SLUS-20804)

CLI
Code:
--gs-kernel-cl="h2lpool"     
--gs-kernel-cl-up="h2lpool2x2"
--ee-cycle-scalar=1.5
--vu1-mpg-cycles=690
--fpu-no-clamping=0
--fpu-clamp-results=1
--vu0-no-clamping=0
--vu0-clamp-results=1

#emu used=ADK
LUA
Code:
-- Forgotten Realms - Demon Stone (SLUS-20804)
-- Widescreen hack nemesis2000
-- emu used=ADK

apiRequest(1.0)

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

--black border fix
eeObj.WriteMem32(0x001d8330,0x24040001)

--16:9
eeObj.WriteMem32(0x001a4fb0,0x3c013f40)
eeObj.WriteMem32(0x001a4fb4,0x44810000)
eeObj.WriteMem32(0x001a4fbc,0x46006b43)
eeObj.WriteMem32(0x0015629c,0x3c023fe3)
eeObj.WriteMem32(0x001562a0,0x34438e38)

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

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

Total fix.
 
Last edited:
No, it does not. It does delay the selected DMA event by cycles. It is similar to the "EE timing hack" from the PCSX2, albeit it is more accurate and customisable. MTVU is a PCSX2 speedhack, which separates the VU1 from the main thread.

I only say that because that is the command that fixed Eragon, a game that requires MTVU disabled. I know it is not the exactly same(obviously), but on PS4, the result is similar..... the game booted and worked. But thanks anyway for the godly comment.

Games that require MTVU on PS4 usually uses "--vu1=jit-sync". But in this case, it wasn't needed and the game worked without it. I don't know the inner workings of the PS2 like you, I can only judge based off of results I get from testing.
 
Last edited:
WIP Fix for Bloodrayne 2 NTSC
CLI
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth

--ee-cycle-scalar=2.0

--host-display-mode=16:9

--cdvd-sector-read-cycles=1000

#emu used=psychonauts v2
LUA
Code:
-- Bloodrayne 2
-- ported to PS4
-- emu used=psychonauts v2

apiRequest(1.0)

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

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

local patches = function()
--60 fps
eeObj.WriteMem32(0x2033CC10,0x28630001)

emuObj.ThrottleMax() -- Again, no negative side effects, game DOES NOT speed up/down
end

emuObj.AddVsyncHook(patches)

Tested a little. Seems to work fine without the 60 fps code. Stutters slightly with it enabled
 
Last edited:
WIP Fix for Bloodrayne 2 NTSC
CLI
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth

--ee-cycle-scalar=2.0

--host-display-mode=16:9

--cdvd-sector-read-cycles=1000

#emu used=psychonauts v2
LUA
Code:
-- Bloodrayne 2
-- ported to PS4
-- emu used=psychonauts v2

apiRequest(1.0)

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

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

local patches = function()
--60 fps
eeObj.WriteMem32(0x2033CC10,0x28630001)

emuObj.ThrottleMax() -- Again, no negative side effects, game DOES NOT speed up/down
end

emuObj.AddVsyncHook(patches)

Tested a little. Seems to work fine without the 60 fps code. Stutters slightly with it enabled

yes i test before, sadly 60FPS make game run with slowdowns!
 
Fix for Forgotten Realms - Demon Stone (SLES_526.69) PAL

--gs-uprender=none
--gs-upscale=Edgesmooth
--host-display-mode=16:9
--gs-kernel-cl="h2lpool"
--gs-kernel-cl-up="h2lpool2x2"
--iop-cycle-scalar=3.3
--ee-cycle-scalar=2.6
--vu1-mpg-cycles=700
--fpu-no-clamping=0
--fpu-clamp-results=1
--vu0-no-clamping=0
--vu0-clamp-results=1
--vu0-di-bits=0
--vu1-di-bits=0

emu used jakv2
TEST FINE!!!
 
Last edited:
Fix for Breeders' Cup - World Thoroughbred Championships (SLUS-21195)

CLI
Code:
--gs-use-clut-merge=1
--gs-kernel-cl="clutmerge"
--gs-kernel-cl-up="clutmerge2x2"

#emu used=aofa
LUA
Code:
-- Breeders' Cup - World Thoroughbred Championships (SLUS-21195)
-- Widescreen hack by Arapapa
-- emu used=aofa

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

apiRequest(1.0)

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

emuObj.SetDisplayAspectWide()

local patcher = function()

--Widescreen
eeObj.WriteMem32(0x001b54dc,0x080848c8)
eeObj.WriteMem32(0x00212320,0x46001906)
eeObj.WriteMem32(0x00212324,0x3c013f40)
eeObj.WriteMem32(0x00212328,0x4481f000)
eeObj.WriteMem32(0x0021232c,0x461e2102)
eeObj.WriteMem32(0x00212330,0x0806d538)

--Render fix
eeObj.WriteMem32(0x0011adb4,0x3c013f2b)

--Fix
eeObj.SchedulerDelayEvent("vif1.dma", 0x1500)

emuObj.ThrottleMax()

end

emuObj.AddVsyncHook(patcher)

Total fix. Another game that only starts with the configuration eeObj.SchedulerDelayEvent("vif1.dma", 0x1500) in .lua,
I really don't know what this command does in the game, I just know that in this case it made the game start.
Thanks @Stayhye for that.
 
Fix for Breeders' Cup - World Thoroughbred Championships (SLUS-21195)

CLI
Code:
--gs-use-clut-merge=1
--gs-kernel-cl="clutmerge"
--gs-kernel-cl-up="clutmerge2x2"

#emu used=aofa
LUA
Code:
-- Breeders' Cup - World Thoroughbred Championships (SLUS-21195)
-- Widescreen hack by Arapapa
-- emu used=aofa

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

apiRequest(1.0)

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

emuObj.SetDisplayAspectWide()

local patcher = function()

--Widescreen
eeObj.WriteMem32(0x001b54dc,0x080848c8)
eeObj.WriteMem32(0x00212320,0x46001906)
eeObj.WriteMem32(0x00212324,0x3c013f40)
eeObj.WriteMem32(0x00212328,0x4481f000)
eeObj.WriteMem32(0x0021232c,0x461e2102)
eeObj.WriteMem32(0x00212330,0x0806d538)

--Render fix
eeObj.WriteMem32(0x0011adb4,0x3c013f2b)

--Fix
eeObj.SchedulerDelayEvent("vif1.dma", 0x1500)

emuObj.ThrottleMax()

end

emuObj.AddVsyncHook(patcher)

Total fix. Another game that only starts with the configuration eeObj.SchedulerDelayEvent("vif1.dma", 0x1500) in .lua,
I really don't know what this command does in the game, I just know that in this case it made the game start.
Thanks @Stayhye for that.

I got the idea from @Manu Mx , while trying to fix Scarface on emus that black screened after PS2 logo
******************************************
WIP fix for Twisted Metal - Head-On [Extra Twisted Edition] [SCUS-97621]
CLI
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth

--ee-cycle-scalar=3.0

--vif1-ignore-cmd-ints=1  #Menu freeze fix 1

--vu0-mpg-cycles=2500 # looks to be important to this game, vu0 in general
--vu1-mpg-cycles=50  # ?? trying stuff

--ee-const-folding=all

#emu used=aofa <-- Fixed original title screen crash
LUA
Code:
-- Twisted Metal - Head-On [Extra Twisted Edition] (NTSC-U) [SCUS-97621] [3DC2FE45]
-- Widescreen hacks by Aced14 Font Fixes by gamemasterplc
-- ported to PS4
-- emu used=aofa

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

apiRequest(1.0)

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

emuObj.SetDisplayAspectWide()

local patcher = function()
--16:9 Widescreen
eeObj.WriteMem32(0x202D10A0,0x4400A000) --442B8000 - Menu Master X FOV
eeObj.WriteMem32(0x202D10C0,0x3F206D39) --3EF0A3D7 - Menu Master Y FOV

eeObj.WriteMem32(0x20222CE8,0x08030000) --Jump to Custom Code
eeObj.WriteMem32(0x200C0000,0x00051843) --Divide Font Width by 2
eeObj.WriteMem32(0x200C0004,0x00052883) --Divide Font Width by 4
eeObj.WriteMem32(0x200C0008,0x00A32821) --Add previous 2 operations
eeObj.WriteMem32(0x200C000C,0x08088B3C) --Jump back to Original Code
eeObj.WriteMem32(0x200C0010,0x24030044) --Original Instruction

eeObj.WriteMem32(0x1EF98C,0x008C008C) --24060050 - Player 1 Text (1)
eeObj.WriteMem32(0x1EF9AC,0x008C008C) --24060050 - Player 2 Text (1)
eeObj.WriteMem32(0x1EF9E4,0x008C008C) --24060050 - Player 1 Text (2)
eeObj.WriteMem32(0x1EF9FC,0x008C008C) --24060050 - Player 2 Text (2)
--[[
eeObj.WriteMem32(0x166194,0x43BB43BB) --3C0143FA - 1P Sweet Tour Gameplay Master X FOV (after in-game cutscene) #1
eeObj.WriteMem32(0x166198,0xe000E000) --34218000 - 1P Sweet Tour Gameplay Master X FOV (after in-game cutscene) #2
eeObj.WriteMem32(0x1660F8,0x43BB43BB) --3C0143FA - 1P Sweet Tour Gameplay Master X FOV (after skipping in-game cutscene) #1
eeObj.WriteMem32(0x1660FC,0xe000E000) --34218000 - 1P Sweet Tour Gameplay Master X FOV (after skipping in-game cutscene) #2
eeObj.WriteMem32(0x1B3F20,0x43BB43BB) --3C0143FA - 1P Generic Master X FOV #1
eeObj.WriteMem32(0x1B3F24,0xe000E000) --34218000 - 1P Generic Master X FOV #2
--eeObj.WriteMem32(0x201B5E40,0x340301E0) --94430004 - ori v1, zero, $01e0 - Set v1 register to 480 - 1P TMHO Story In-Game Cutscene Master X FOV (commented-out due to grain overlay positioning issue in opening cutscene's first close-up angle of Calypso)
eeObj.WriteMem32(0x1B6290,0x43BB43BB) --3C0143FA - 1P TMHO Story Gameplay Master X FOV (after in-game cutscene) #1
eeObj.WriteMem32(0x1B6294,0xe000E000) --34218000 - 1P TMHO Story Gameplay Master X FOV (after in-game cutscene) #2
eeObj.WriteMem32(0x1B6164,0x43BB43BB) --3C0143FA - 1P TMHO Story Gameplay Master X FOV (after skipping in-game cutscene) #1
eeObj.WriteMem32(0x1B6168,0xe000E000) --34218000 - 1P TMHO Story Gameplay Master X FOV (after skipping in-game cutscene) #2
eeObj.WriteMem32(0x202D0D00,0x3F1F49E6) --3EEEEED9 - 1P Master Y FOV
eeObj.WriteMem32(0x13B4C8,0xBF80BF80) --3C01BF2E - 1P Master X Radar #1
eeObj.WriteMem32(0x13B4CC,0x00000000) --3421147B - 1P Master X Radar #2
eeObj.WriteMem32(0x13B574,0xBF803F80) --3C013F30 - 1P Master X Weapon #1
eeObj.WriteMem32(0x13B578,0x00000000) --3421A3D7 - 1P Master X Weapon #2
eeObj.WriteMem32(0x13AC5C,0x02300230) --2406021A - 1P X Weapon Names
eeObj.WriteMem32(0x13AD70,0x02300230) --2406021A - 1P X Weapon Ammo
eeObj.WriteMem32(0x13728C,0x002D002D) --2406003C - 1P Cars Remaining Number
eeObj.WriteMem32(0x139BD4,0x006A006A) --2406008E - 1P Horiz Nearby Cars Names

eeObj.WriteMem32(0x202D0DA0,0x439A8000) --43CE0000 - 2P Horiz P1 Master X FOV
eeObj.WriteMem32(0x202D0DC0,0x3F1F49E5) --3EEEEED9 - 2P Horiz P1 Master Y FOV
eeObj.WriteMem32(0x202D0E60,0x439A8000) --43CE0000 - 2P Horiz P2 Master X FOV
eeObj.WriteMem32(0x202D0E80,0x3F1F49E5) --3EEEEED9 - 2P Horiz P2 Master Y FOV
eeObj.WriteMem32(0x137108,0xBFA5BFA5) --3C01BF66 - 2P Horiz Master X Radar #1
eeObj.WriteMem32(0x13710C,0x1EB81EB8) --34216666 - 2P Horiz Master X Radar #2
eeObj.WriteMem32(0x13A5D8,0x3F9E3F9E) --3C013F59 - 2P Horiz Master X Weapon #1
eeObj.WriteMem32(0x13A5DC,0xB852B852) --3421999A - 2P Horiz Master X Weapon #2
eeObj.WriteMem32(0x13ACCC,0x02300230) --2406021A - 2P X Weapon Names
eeObj.WriteMem32(0x13AD4C,0x02300230) --2406021A - 2P X Weapon Ammo
eeObj.WriteMem32(0x1E6334,0x023D023D) --24060226 - 2P Wins %d
eeObj.WriteMem32(0x139B94,0x00570057) --24060074 - 2P Nearby Cars Names
eeObj.WriteMem32(0x13725C,0x00210021) --2406002C - 2P Cars Remaining Number

eeObj.WriteMem32(0x202D0F20,0x4376C000) --43A48000 - 2P Vert P1 Master X FOV
eeObj.WriteMem32(0x202D0F40,0x3F1F49E6) --3EEEEED9 - 2P Vert P1 Master Y FOV
eeObj.WriteMem32(0x202D0FE0,0x4376C000) --43A48000 - 2P Vert P1 Master X FOV
eeObj.WriteMem32(0x202D1000,0x3F1F49E6) --3EEEEED9 - 2P Vert P1 Master Y FOV
eeObj.WriteMem32(0x1370C0,0xBF20BF20) --3C01BEDC - 2P Vert Master X Radar #1
eeObj.WriteMem32(0x1370C4,0x00000000) --342128F6 - 2P Vert Master X Radar #2
eeObj.WriteMem32(0x13A590,0x3F233F23) --3C013EE6 - 2P Vert Master X Weapon #1
eeObj.WriteMem32(0x13A594,0x00000000) --34216666 - 2P Vert Master X Weapon #2
--]]

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

--math.random() + math.random(1, 99)  -- test for randomness

Finally makes it in game!......then crashes. I don't know for sure, but the game seems to be "vu0 sensitive" because changing vu0 cycles delay or speed up the crash. Any ideas?
 
Last edited:
Fix for Top Gear Dare Devil(SLUS-20039)
CLI
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth

--host-display-mode=16:9

--ee-cycle-scalar=1.8

#emu used=swrr v1
LUA
Code:
-- Top Gear Dare Devil (U)(SLUS-20039)
-- Widescreen hack by Arapapa
-- emu used=swrr v1

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

apiRequest(0.4)

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

local patcher = function()
--Widescreen hack 16:9
eeObj.WriteMem32(0x00143efc,0x3c013ec0) --3c013f00
--60 fps
eeObj.WriteMem32(0x2010097C,0x3C013F80)

eeObj.Vu1MpgCycles(math.floor(500 * 2.0045)) -- trying stuff, don't judge

emuObj.ThrottleMax() 
--[[
"emuObj.ThrottleMax()" only affects STATIC loading screens!  No negative effect to gameplay.  Maybe in some 2D games.  On paper should do damage, but in reality it DOES NOT!!  In rare cases maybe.  This is not PCSX2, not all rules apply. :-)
--]]
end

emuObj.AddVsyncHook(patcher)

--math.random() + math.random(1, 99)

Tested a little. If stutters, remove 60fps
 
Last edited:
@Stayhye

For the game Twisted Metal - Head-On [Extra Twisted Edition] [SCUS-97621]



--mtap1=always
--vu1-di-bits=0
--vu1-opt-vf00=2
--ee-cycle-scalar=1.2
--gs-kernel-cl-up="up2x2simple"
--host-audio-latency=1.33


Emu
twisted metal black v2



 
2. Fix for Reservoir Dogs

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

--host-display-mode=16:9

--vif1-instant-xfer=0

#emu used=ADK Damshii

emu used=ADK Damshii

No problems so far. Emu got past loading freeze. "--vif1-instant-xfer=0" fixes glitchy graphics

Reservoir Dogs NTSC PS2toPS4 Test


Also some .lua with cheats!

Code:
-- Reservoir Dogs
-- emu used=ADK

apiRequest(1.0)   

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

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

local patcher = function()

--Unlock All Levels
eeObj.WriteMem32(0x21DE5224,0x00000001)
--Unlock Art Gallery
eeObj.WriteMem32(0x21DE5228,0x00000001)
--Unlock Movie Gallery
eeObj.WriteMem32(0x21DE522C,0x00000001)

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)
 
Was test Dog's Life game PAL (SCES51248) and NTSC (SLUS21018) and both version have same new (for me) bug! It have freeze in menu and gameplay every 4 seconds but cutscenes work fine! Maybe @Stayhye @Bergolino Gamer and some others have same issue in some games?
you can watch bug at VIDEO
 

Similar threads

Back
Top