PS4 [Research]PS2 emulator configuration on PS4

WIP fix for The Bard's Tale (SLUS-20803)

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

--vif1-instant-xfer=0
--vu1-no-clamping=0
LUA
Code:
-- The Bard's Tale (SLUS-20803)
-- Widescreen hack by nemesis2000
-- Font fix by Arapapa
-- ported to PS4 lua by Stayhye
-- emu used=psycho v2

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()

--Widescreen hack 16:9 E
eeInsnReplace(0x00144874,0x3c023f80,0x3c023f40) -- 0x3c023f80
--render fix
eeInsnReplace(0x0013e080,0x3c023f00,0x3c023f2b) -- 0x3c023f00

local patcher = function()
--Widescreen hack 16:9 A-D
eeObj.WriteMem32(0x0011c594,0x3c023f40) --3c023f80 --hor fov+
eeObj.WriteMem32(0x0012ed8c,0x3c033f40) --3c033f80
eeObj.WriteMem32(0x001447a8,0x3c053f40) --3c053f80
eeObj.WriteMem32(0x00144824,0x3c033f40) --3c033f80
--font fix 
eeObj.WriteMem32(0x0010ec24,0x3c0341c0) --3c034200

eeObj.SchedulerDelayEvent("vif1.dma", 0x1500)
emuObj.ThrottleMax()
end
 
emuObj.AddVsyncHook(patcher)

  • Still has issues with framerate.
  • Graphical issues fixed
  • only works with some emus
 
Buffy the Vampire Slayer™ Chaos Bleeds® NTSC

CLI
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth
--gs-progressive=1
--host-display-mode=16:9
--cdvd-sector-read-cycles=3000
--mtap1=always

#emu used=wotm v2
LUA
Code:
-- Buffy the Vampire Slayer™ Chaos Bleeds®
-- boot/graphics fix by kozarovv
-- ported to PS4 by Stayhye
-- emu used=wotm v2(for throttlemax) (others work also < 4mb eboot.bin)

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

apiRequest(0.1)

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

local patcher = function()
--Replace bad VIF1 CMD (0x12) with VIF1 NOP.
eeObj.WriteMem32(0x0026AC48,0x3C060000) -- 0x3c061200 >> lui a2, $1200 (____12000000)
--

emuObj.ThrottleMax() -- <-- the ONLY reason War of the Monsters was used.
end

emuObj.AddVsyncHook(patcher)

No issues at all. Multi-tap enabled. Big thanks to Kozarovv for fix for PS3.

Just want say thanks @Stayhye and say hi to @kozarovv

Buffy the Vampire Slayer Chaos Bleeds. Before\\\After FiX Comparison & Short Gameplay!
VIDEO
 
Speed Racer NTSC

CLI
Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth
--ee-hook=0x001bfa88,FastForwardClock #loading stutter
--vu1-mpg-cycles=1000
LUA
Code:
-- Speed Racer NTSC
-- Widescreen hack by pelvicthrustman
-- Stutter fix by Stayhye
-- ported to PS4
-- emu used=kof98um

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

apiRequest(0.1)

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

emuObj.SetDisplayAspectWide()
emuObj.SetDeinterlace(true)
emuObj.ForceRefreshRate(60)

--In-game stutter removal
eeObj.AddHook(0x00127590,0x3c033f80,function() -- lui v1, $3f80
       eeObj.AdvanceClock(18000)
end)  

local WS2 = function()
--16:9
eeObj.WriteMem32(0x004c314c,0x3c013f00) --00000000
eeObj.WriteMem32(0x004c315c,0x4481f800) --00000000
eeObj.WriteMem32(0x004c31b0,0x461f0003) --46000803

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(WS2)

--blur fix
emuObj.SetGsTitleFix( "forceSimpleFetch", "reserved", { texMode=2  } )

Graphical issues and stutter eliminated. No other issues so far....
 
Last edited:
@kozarovv @anyone
how to use memory card? write function

i found out that this command is just duplicating itself inside user/savedata encrypted , its useful when signing ps2 save game along with your pkg.

--emuObj.SetFormattedCard("formatted.card")

what im looking is using the formatted.card as a mounted mc like opl. pcsx2 and ps3, so user is able to easily switch and backup their save games, which we can WRITE and READ anywhere on ps4. (without using apollo)

on my research, looks like this three option has a same function. real back up from ps2, opl and pcsx2 are gonna work

(CLI) this one is looking for root formatted.card app0/, name should be the same on the one on root.
--formatted-mcd="formatted.card"
--formatted-vmc="formatted.card"

(LUA) this one is looking on feature_data
--emuObj.SetFormattedCard("formatted.card")
 
Thrillville [SLUS-21413]
emu used=primal

Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth
--host-display-mode=16:9
--vu1-mpg-cycles=650
--gs-kernel-cl="h2lpool"
--gs-kernel-cl-up="h2lpool2x2"
--vu1-jalr-cache-policy=newprog #fix stutter

Lua:
Code:
--ws by Monsterjamp

apiRequest(1.1)

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

local patcher   = function()
--FOV
eeObj.WriteMem32(0x20CC5540, 0x3FE374BC)
--Increases Draw Distance
eeObj.WriteMem32(0x20CC5558, 0x3FC00000)
--HUD Scaling
eeObj.WriteMem32(0x20CC5544, 0x3F666666)
eeObj.WriteMem32(0x20CC5548, 0x3F866666)
eeObj.WriteMem32(0x20CC554C, 0x3F8374BC)
emuObj.ThrottleMax()
end
emuObj.AddVsyncHook(patcher)

emuObj.SetGsTitleFix( "forceSimpleFetch", "reserved", { texMode=2 } )
I was use almost same config for Thrillville Off the Rails (SLUS-21611) and also add widescreen and Frame rate FiX!
Looks playble!

TXT.
Code:
--host-display-mode=16:9
--gs-kernel-cl="h2lpool"
--gs-kernel-cl-up="h2lpool2x2"
--vu1-jalr-cache-policy=newprog

LUA.
Code:
--Thrillville Off the Rails (NTSC-U) (SLUS-21611)
--emu used=primal

apiRequest(1.1)

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

local patcher   = function()

--Widescreen hack 16:9

--Zoom
--003f013c 00608144 000099c4
eeObj.WriteMem32(0x00410548,0x3c013f20) --3c013f00

--Y-Fov
--4040013c 00008144 803e013c 00088144 02a00046(2nd)
eeObj.WriteMem32(0x004105dc,0x3c014080) --3c014040

--Frame rate FiX
eeObj.WriteMem32(0x00421300,0x100000B7)

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

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

Thrillville Off the Rails. Short GamePlay!
VIDEO
 
@kozarovv @anyone
how to use memory card? write function

i found out that this command is just duplicating itself inside user/savedata encrypted , its useful when signing ps2 save game along with your pkg.

--emuObj.SetFormattedCard("formatted.card")

what im looking is using the formatted.card as a mounted mc like opl. pcsx2 and ps3, so user is able to easily switch and backup their save games, which we can WRITE and READ anywhere on ps4. (without using apollo)

on my research, looks like this three option has a same function. real back up from ps2, opl and pcsx2 are gonna work

(CLI) this one is looking for root formatted.card app0/, name should be the same on the one on root.
--formatted-mcd="formatted.card"
--formatted-vmc="formatted.card"

(LUA) this one is looking on feature_data
--emuObj.SetFormattedCard("formatted.card")

you can easily add an uLE disc as disc02.iso to your pkg for total memory card management. You can even add all the *.psu files you want to be added to your memory card
 
I was use almost same config for Thrillville Off the Rails (SLUS-21611) and also add widescreen and Frame rate FiX!
Looks playble!

TXT.
Code:
--host-display-mode=16:9
--gs-kernel-cl="h2lpool"
--gs-kernel-cl-up="h2lpool2x2"
--vu1-jalr-cache-policy=newprog

LUA.
Code:
--Thrillville Off the Rails (NTSC-U) (SLUS-21611)
--emu used=primal

apiRequest(1.1)

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

local patcher   = function()

--Widescreen hack 16:9

--Zoom
--003f013c 00608144 000099c4
eeObj.WriteMem32(0x00410548,0x3c013f20) --3c013f00

--Y-Fov
--4040013c 00008144 803e013c 00088144 02a00046(2nd)
eeObj.WriteMem32(0x004105dc,0x3c014080) --3c014040

--Frame rate FiX
eeObj.WriteMem32(0x00421300,0x100000B7)

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

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

Thrillville Off the Rails. Short GamePlay!
VIDEO
Frame rate fix by me. Skips bloom effect.

https://www.psx-place.com/posts/313691/
 
Onimusha Blade Warriors NTSC

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

--force-frame-blend=1
--mtap1=always

--ee-cycle-scalar=1.2
--iop-cycle-scalar=0.8
--vu1-mpg-cycles=700
LUA
Code:
-- Onimusha Blade Warriors NTSC
-- Black screen fix by Kozarovv
-- Widescreen Hack by VIRGIN KLM
-- ported to PS4 lua
-- emu used=kof98um

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

apiRequest(0.1)

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

emuObj.SetDisplayAspectWide()
emuObj.SetDeinterlace(true)
--emuObj.ForceRefreshRate(60)
--emuObj.SetFormattedCard("OnimushaBW.card")

local patcher = function()
--force interrupt to happen, even if command is not nop
eeObj.WriteMem32(0x0030DFDC,0x00000000)
eeObj.WriteMem32(0x0030DFF0,0x10000015)
--Widescreen
eeObj.WriteMem32(0x204F7040,0x3F400000) -- 3F800000
--no interlace
eeObj.WriteMem32(0x2031359c,0x00000000)

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

Black screen issue fixed by Kozarovv. No issues. 4 player enabled. I used a custom memory card with everything unlocked
 
Buffy the Vampire Slayer™ Chaos Bleeds® NTSC

CLI
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth
--gs-progressive=1
--host-display-mode=16:9
--cdvd-sector-read-cycles=3000
--mtap1=always

#emu used=wotm v2
LUA
Code:
-- Buffy the Vampire Slayer™ Chaos Bleeds®
-- boot/graphics fix by kozarovv
-- ported to PS4 by Stayhye
-- emu used=wotm v2(for throttlemax) (others work also < 4mb eboot.bin)

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

apiRequest(0.1)

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

local patcher = function()
--Replace bad VIF1 CMD (0x12) with VIF1 NOP.
eeObj.WriteMem32(0x0026AC48,0x3C060000) -- 0x3c061200 >> lui a2, $1200 (____12000000)
--

emuObj.ThrottleMax() -- <-- the ONLY reason War of the Monsters was used.
end

emuObj.AddVsyncHook(patcher)

No issues at all. Multi-tap enabled. Big thanks to Kozarovv for fix for PS3.

Config for PAL (SLES51890) Ver.

TXT.

Code:
--gs-progressive=1
--host-display-mode=16:9
--cdvd-sector-read-cycles=3000
--mtap1=always
--ps2-lang=system

LUA
Code:
-- Buffy the Vampire Slayer Chaos Bleeds (PAL)
-- ported to PS4
-- emu used=wotm

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

apiRequest(0.1)

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

local patcher = function()

--Replace bad VIF1 CMD (0x12) with VIF1 NOP.
eeObj.WriteMem32(0x0026B6E8,0x3C060000) -- 0x3c061200 >> lui a2, $1200 (____12000000)

end

emuObj.AddVsyncHook(patcher)

Buffy the Vampire Slayer Chaos Bleeds. French Dub Test!

VIDEO
 
Wipeout Pulse PAL

CLI
Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth
--cdvd-sector-read-cycles=3000
--force-pal-60hz=1
--framelimiter=1
--framelimit-fps=60.0
--framelimit-scalar=1
--vu1-mpg-cycles=225
--ee-hook=0x0021eb38,FastForwardClock
--ee-cycle-scalar=1.2
--iop-cycle-scalar=0.6
--vu1-di-bits=0
--vu0-di-bits=0

#emu used=aofa
LUA
Code:
-- Wipeout Pulse Pal
-- 60fps by Asasega
-- ported to PS4
-- emu used=aofa


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

apiRequest(0.1)

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

emuObj.SetDisplayAspectWide()
emuObj.SetDeinterlace(true)
emuObj.ForceRefreshRate(60)

local patcher = function()
--60 fps
eeObj.WriteMem32(0x0027A860,0x00000000)


emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

No issues noticed. 60FPS added..
 
WIP fix for Hitman Contracts NTSC (still not working)

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

--host-display-mode=16:9

--vif1-instant-xfer=0
LUA
Code:
-- Hitman Contracts NTSC
-- Crash fix A by Stayhye
-- WIP, game still crashes
-- emu used=jakx v2

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

apiRequest(0.1)

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

--emuObj.SetDisplayAspectWide()

local patcher = function()
--crash fix A (goes to title screen)
eeObj.WriteMem32(0x0024caa8,0x00000000) -- 0x1073002e >> beq v1, s3, $0024cb64
-- 16:9
eeObj.WriteMem32(0x002659d8,0x3c013f10) -- 3c013f40 ver fov
eeObj.WriteMem32(0x001c8300,0x3c1b3f40) -- 1060006e zoom
eeObj.WriteMem32(0x001c8304,0x1060006d) -- ae220044
eeObj.WriteMem32(0x001c8308,0xae220044) -- c6200038
eeObj.WriteMem32(0x001c830c,0xc6200038) -- 3c013f80
eeObj.WriteMem32(0x001c8310,0x3c013f80) -- 4481a000
eeObj.WriteMem32(0x001c8314,0x4481a000) -- 46140032
eeObj.WriteMem32(0x001c8318,0x46140032) -- 00000000
eeObj.WriteMem32(0x001c84bc,0x3c013f00) -- 3c013f80
eeObj.WriteMem32(0x001c84c0,0x4481a800) -- 4481a000
eeObj.WriteMem32(0x001c84c4,0x4615ad00) -- 3c013f00
eeObj.WriteMem32(0x001c84c8,0x449bf000) -- 4481a800
eeObj.WriteMem32(0x001c8504,0x461e0002) -- 46150002
eeObj.WriteMem32(0x001c8508,0x46150002) -- 4600a583
eeObj.WriteMem32(0x001c850c,0x4600a583) -- e6200054
eeObj.WriteMem32(0x001c8510,0xe6200054) -- 3c01bf00
eeObj.WriteMem32(0x001c8514,0x4600a807) -- 44810000



--emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

Now game will make it to title screen. Still crashes on loading level/mission
 
Ghost Rider (SLUS21306)

FiX

TXT

Code:
--cdvd-sector-read-cycles=2000

--gs-progressive=1
--gs-motion-factor=50

LUA
Code:
--gametitle=Ghost Rider [SLUS-21306]
--emu used=bully v.2

apiRequest(0.1)

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

local widescreen = function()

--Unlock All Cheats
eeObj.WriteMem32(0x206BD890,0x00000001)

--Unlock Movies
eeObj.WriteMem32(0x206BE628,0x00000001)
eeObj.WriteMem32(0x206BE668,0x00000001)
eeObj.WriteMem32(0x206BE6C8,0x00000001)
eeObj.WriteMem32(0x206BE728,0x00000001)

--Unlock Gallery
eeObj.WriteMem32(0x206BEB08,0x00000001)
eeObj.WriteMem32(0x206BEB68,0x00000001)
eeObj.WriteMem32(0x206BEBC8,0x00000001)
eeObj.WriteMem32(0x206BEE28,0x00000001)
eeObj.WriteMem32(0x206BEE88,0x00000001)

--Unlock Comics Codes
eeObj.WriteMem32(0x206BDD68,0x00000004)
eeObj.WriteMem32(0x206BDDA8,0x00000001)
eeObj.WriteMem32(0x206BDDE8,0x00000001)
eeObj.WriteMem32(0x206BDEC8,0x00000006)
eeObj.WriteMem32(0x206BDF48,0x00000003)
eeObj.WriteMem32(0x206BDF88,0x00000001)
eeObj.WriteMem32(0x206BDFC8,0x00000001)
eeObj.WriteMem32(0x206BE248,0x00000003)
eeObj.WriteMem32(0x206BE288,0x00000001)

emuObj.ThrottleMax()

end

emuObj.AddVsyncHook(widescreen)

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

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

emuObj.SetGsTitleFix( "forceSimpleFetch",  "reserved", {psm=0} )
emuObj.SetGsTitleFix( "fetchFromCurrBuff", "reserved", {psm=0} )

Stuck on loading screen FiXed with
Code:
--cdvd-sector-read-cycles=2000

Ghosting effects around fire elements also - FiXed!

Ghost Rider. Before\\\After Ghosting effects FiX Comparison!
VIDEO


Ghost Rider. Short GamePlay!
VIDEO
 
The Simpsons - Hit & Run NTSC (updated config 2023)

CLI
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth
--gs-kernel-cl="h2lpool"
--gs-kernel-cl-up="h2lpool2x2"
--gs-flush-ad-xyz=safe
--gs-progressive=1

--cdvd-sector-read-cycles=1
--ee-cycle-scalar=2.1
--iop-cycle-scalar=0.9

#emu used=kof98um
LUA
Code:
-- The Simpsons - Hit & Run (NTSC-U)
-- Widescreen hack by ElHecht
-- ported to PS4 by Stayhye
-- emu used=kof98um

apiRequest(0.1)

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

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


emuObj.PadSetLightBar(0, 255, 255, 0)
emuObj.SetDisplayAspectWide()
gsObj.SetUprenderMode(1) -- 0=none <> 1=2x2
emuObj.SetDeinterlace(true)


local patcher = function()
-- 16:9 ver
eeObj.WriteMem32(0x00138a88,0x00000000) -- 10400005
eeObj.WriteMem32(0x0014b360,0x00000000) -- 10400004
eeObj.WriteMem32(0x0014b364,0x00000000) -- 10400004
eeObj.WriteMem32(0x002a0b38,0x00000000) -- 10400004
eeObj.WriteMem32(0x0031c888,0x00000000) -- 10400004
eeObj.WriteMem32(0x0031d674,0x00000000) -- 10400004
---------CHEATS-------------------------
--Have All Levels Complete by Code Master
eeObj.WriteMem32(0x005E6CF0,0x00000006)
eeObj.WriteMem32(0x005E6CF4,0x00000006)
--Have Movie by Code Master
eeObj.WriteMem32(0x005E5E0C,0x00000001)
--Have All Wasp Cameras by Code Master
eeObj.WriteMem32(0x005E5E18,0x00000014)
--Have All Gags by Code Master
eeObj.WriteMem32(0x005E5E2C,0x0000000F)
--Open All Chapters by Codejunkies
eeObj.WriteMem32(0x004244F4,0x000000FF)
--Bonus Mission 1 by Code Master
eeObj.WriteMem32(0x005E6C64,0x00000001)

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 (R1 ~= 0 and Select ~= 0) then --
  gsObj.SetUprenderMode(0) -- 0=none <> 1=2x2
end

if (L1 ~= 0 and Select ~= 0) then --
  gsObj.SetUprenderMode(1) -- 0=none <> 1=2x2
end


eeObj.SchedulerDelayEvent("vif1.dma", 0x1000) -- allows game to boot on later emus
emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

-- Performace fix (bug #9785 )
emuObj.SetGsTitleFix( "globalSet",  "reserved", { waveThreshold = 90000} )
emuObj.SetGsTitleFix( "ignoreAreaUpdate", 0, { } )

Just about perfect now.

LUA. for PAL (SLES51897)
Code:
-- The Simpsons - Hit & Run (PAL)
-- Widescreen hack by ElHecht
-- emu used=kof98um

apiRequest(0.1)

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

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


emuObj.PadSetLightBar(0, 255, 255, 0)
emuObj.SetDisplayAspectWide()
gsObj.SetUprenderMode(1) -- 0=none <> 1=2x2
emuObj.SetDeinterlace(true)


local patcher = function()
-- 16:9 ver
eeObj.WriteMem32(0x00138ab8,0x00000000) -- 10400005
eeObj.WriteMem32(0x0014b3a8,0x00000000) -- 10400004
eeObj.WriteMem32(0x0014c3ac,0x00000000) -- 10400004
eeObj.WriteMem32(0x002a1f88,0x00000000) -- 10400004
eeObj.WriteMem32(0x0031e0b8,0x00000000) -- 10400004
eeObj.WriteMem32(0x0031eea4,0x00000000) -- 10400004
--Open All Chapters by Codejunkies
eeObj.WriteMem32(0x00425EF4,0x000000FF)

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 (R1 ~= 0 and Select ~= 0) then --
  gsObj.SetUprenderMode(0) -- 0=none <> 1=2x2
end

if (L1 ~= 0 and Select ~= 0) then --
  gsObj.SetUprenderMode(1) -- 0=none <> 1=2x2
end


eeObj.SchedulerDelayEvent("vif1.dma", 0x1000) -- allows game to boot on later emus
emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

-- Performace fix (bug #9785 )
emuObj.SetGsTitleFix( "globalSet",  "reserved", { waveThreshold = 90000} )
emuObj.SetGsTitleFix( "ignoreAreaUpdate", 0, { } )

 
I managed to get Batman Begins pal tested in English and Italian on PS4. I used patch engine with cheat codes and the only problem is to skip the videos of the game if you see them entirely black screen and you have to restart the game. Naturally I haven't played it all but it works too bad for the videos... I forgot to press the X button to skip the EA logo and the videos

https://imgur.com/p7P5pBG
 
Last edited by a moderator:
I managed to get Batman Begins pal tested in English and Italian on PS4. I used patch engine with cheat codes and the only problem is to skip the videos of the game if you see them entirely black screen and you have to restart the game. Naturally I haven't played it all but it works too bad for the videos... I forgot to press the X button to skip the EA logo and the videos

https://imgur.com/p7P5pBG
60FPS the key for black screen! Thats why lua. prefered for these kind of issue!
Code:
--Combo button  R3=60fps - L3=30fps in gameplay

local switch_30fps = eeObj.ReadMem16(0x004486C0) --L3
local switch_60fps = eeObj.ReadMem16(0x004486C0) --R3

if (switch_30fps == 0xFFFD) then --L3
   eeObj.WriteMem32(0x00409BF8,0x0000001E)
end

if (switch_60fps == 0xFFFB) then --R3
   eeObj.WriteMem32(0x00409BF8,0x0000003C)
end
 

Similar threads

Back
Top