PS4 [Research]PS2 emulator configuration on PS4

Ultimate Spider-Man™ Limited Edition®

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

--host-display-mode=16:9

--vu1-mpg-cycles=750

--ee-hook=0x002a08a0,FastForwardClock #lhu a0, $0016(a1)
--ee-hook=0x0058e9f8,AdvanceClock,0x8e42000c,0x2500 #lw v0, $000c(s2)
LUA
Code:
-- Ultimate Spider-Man™ Limited Edition®
-- Freeze fix by Stayhye
-- Building Shadow disable by Kozarovv
-- Widescreen hack by Arapapa
-- 60fps by Asasega
-- ported to PS4 lua
-- emu used=swrr v1

apiRequest(0.4)

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


local WS = function()
--16:9
eeObj.WriteMem32(0x0058b210,0x08030000) -- 0x3c030074 >> lui v1, $0074 --X-Fov
eeObj.WriteMem32(0x000c0000,0x3c030074) 
eeObj.WriteMem32(0x000c0004,0x3c013faa)
eeObj.WriteMem32(0x000c0008,0x3421aaab)
eeObj.WriteMem32(0x000c000c,0x4481f000)
eeObj.WriteMem32(0x000c0010,0x461e18c2)
eeObj.WriteMem32(0x000c0014,0x08162c85)

--FMV freeze fix(PS4)
eeObj.WriteMem32(0x0057dc68,0x3c036000) -- 0x3c031f00 >> lui v1, $1f00
--remove building shadows
eeObj.WriteMem32(0x00295894,0x00000000)

--Access All Characters/Covers/Concept Art/Landmarks by Code Master
eeObj.WriteMem32(0x2066FBF8,0x00000001)

--enable FPS meter only
--eeObj.WriteMem32(0x00580CE4,0x00000000)
--60fps
--eeObj.WriteMem32(0x20311F18,0x00000000)
--eeObj.WriteMem32(0x2069FE20,0x00000001)


emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(WS)

Big thanks to Kozarovv for building shadow fix! Proper FMV fix, audio is no longer out of sync.
Hi!! Limited edición is multilanguage? Include spanish? I have the game without limited editión. in pal.. for this that question. thnx
 
Hi!! Limited edición is multilanguage? Include spanish? I have the game without limited editión. in pal.. for this that question. thnx
NTSC region most time have english lang only! Very rare time it have french or spanish. Just for Info!
 
I am able to get Mercenaries - Playground of Destruction to run with the same exact config as Battlefront II with the Red Faction emu. Locked the game at 4:3 and just used edge smooth. Frame rate is fine However the game crashes on the console when you try to save for the first time. Runs that silly ps4 blue screen error code. Any ideas of what I could change? I am very new to this and I appreciate all you guys do. I love playing Battlefront on my PS4!
 
Last edited:
I am able to get Mercenaries - Playground of Destruction to run with the same exact config as Battlefront II with the Red Faction emu. Locked the game at 4:3 and just used edge smooth. Frame rate is fine However the game crashes on the console when you try to save for the first time. Runs that silly ps4 blue screen error code. Any ideas of what I could change? I am very new to this and I appreciate all you guys do. I love playing Battlefront on my PS4!
Try your luck with the eecyclescalar and xgkick
 
Try your luck with the eecyclescalar and xgkick

Appreciate the help but xgkick crashed it immediately.

I got it working this evening! It saves and functions. A few artifacts here and there but totally playable at least until the first save file!

Mercenaries Playground Of Destruction NTSC
Red Faction 2 Emu
4:3 Screen
Uprender: None
Upscale: Edgesmooth


TXT Config:
--vu1-mpg-cycles=1 #Fixes/Reduces suddenly graphical issues
--vu0-no-clamping=0 #Fixes most of the background
--ee-cycle-scalar=2.05

#Performance optimization
--vu1-di-bits=0
--vu0-di-bits=0
--vu1-const-prop=1
--vu0-const-prop=1
--vu1-opt-flags=2
--vu0-opt-flags=2
--vu1-opt-vf00=2
--vu0-opt-vf00=2
--vu0-jr-cache-policy=sameprog
--vu1-jr-cache-policy=sameprog
--vu0-jalr-cache-policy=sameprog
--vu1-jalr-cache-policy=sameprog
--vu0-opt-subroutine=1
--vu1-opt-subroutine=1
--cop2-const-prop=1
--cop2-di-bits=0
--cop2-opt-flags=2
--cop2-opt-vf00=2
--gs-frontend-opt-mode=1
--gs-use-mipmap=1
--gs-kernel-cl="mipmap"
--gs-optimize-30fps=1
--gs-vert-precision=8
--gs-use-clut-merge=1
--safe-area-min=0.9

LUA:
local gpr = require("ee-gpr-alias")
apiRequest(1.0)
local eeObj = getEEObject()
local emuObj = getEmuObject()
local patcher = function()
emuObj.ThrottleMax()
end
emuObj.SetGsTitleFix( "forceSimpleFetch", "reserved", { texMode=3 } )
emuObj.AddVsyncHook(patcher)
 
Last edited:
Appreciate the help but xgkick crashed it immediately.

I got it working this evening! It saves and functions. A few artifacts here and there but totally playable at least until the first save file!

Mercenaries Playground Of Destruction NTSC
Red Faction 2 Emu
4:3 Screen
Uprender: None
Upscale: Edgesmooth


TXT Config:
--vu1-mpg-cycles=1 #Fixes/Reduces suddenly graphical issues
--vu0-no-clamping=0 #Fixes most of the background
--ee-cycle-scalar=2.05

#Performance optimization
--vu1-di-bits=0
--vu0-di-bits=0
--vu1-const-prop=1
--vu0-const-prop=1
--vu1-opt-flags=2
--vu0-opt-flags=2
--vu1-opt-vf00=2
--vu0-opt-vf00=2
--vu0-jr-cache-policy=sameprog
--vu1-jr-cache-policy=sameprog
--vu0-jalr-cache-policy=sameprog
--vu1-jalr-cache-policy=sameprog
--vu0-opt-subroutine=1
--vu1-opt-subroutine=1
--cop2-const-prop=1
--cop2-di-bits=0
--cop2-opt-flags=2
--cop2-opt-vf00=2
--gs-frontend-opt-mode=1
--gs-use-mipmap=1
--gs-kernel-cl="mipmap"
--gs-optimize-30fps=1
--gs-vert-precision=8
--gs-use-clut-merge=1
--safe-area-min=0.9

LUA:
local gpr = require("ee-gpr-alias")
apiRequest(1.0)
local eeObj = getEEObject()
local emuObj = getEmuObject()
local patcher = function()
emuObj.ThrottleMax()
end
emuObj.SetGsTitleFix( "forceSimpleFetch", "reserved", { texMode=3 } )
emuObj.AddVsyncHook(patcher)


Great work! your config also works with Mercenaries 2

CLI(reduced quite a bit, most commands was not needed)
Code:
--gs-uprender=none
--gs-upscale=gpu
--gs-frontend-opt-mode=1

--cdvd-sector-read-cycles=6000
--vu1-mpg-cycles=1
--vu0-mpg-cycles=225

--ee-cycle-scalar=2.05

--vu1-di-bits=0
LUA
Code:
-- Mercenaries 2 - World in Flames (U)(SLUS-21650)
-- Widescreen Hack by ElHecht, Arapapa
-- Stutter fix by Stayhye
-- ported to PS4
-- emu used=red faction 2

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

apiRequest(1.5)

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

emuObj.SetDisplayAspectWide()
emuObj.SetDeinterlace(true)
emuObj.ForceRefreshRate(60)
 
eeInsnReplace(0x003454a4, 0x1060002e, 0x1000002e) --  disable bloom
-- 16:9
eeInsnReplace(0x0037ce68, 0x00000000, 0x3c013f40) --  hor fov
eeInsnReplace(0x0037ce70, 0x00000000, 0x4481f000) --  fov
eeInsnReplace(0x0037ceb0, 0x44816000, 0x4600f306) --  fov
--Render fix(objects) by Arapapa
eeInsnReplace(0x003811b4, 0x3c013f00, 0x3c013f2b) --
eeInsnReplace(0x003896e8, 0x44816000, 0x4600f306) --  renderfix 2 smoke and fire
eeInsnReplace(0x0037b748, 0x46030842, 0x081287e8) --  hud-identification fix
eeInsnReplace(0x0037b74c, 0x46030002, 0x00000000) --  hud-identification fix
eeInsnReplace(0x004a1fa0, 0x00000000, 0x46030842) --  hud-identification fix
eeInsnReplace(0x004a1fa4, 0x00000000, 0x46030002) --  hud-identification fix
eeInsnReplace(0x004a1fa8, 0x00000000, 0x461e0002) --  hud-identification fix
eeInsnReplace(0x004a1fac, 0x00000000, 0x080dedd3) --  hud-identification fix

--stutter fix A
eeObj.AddHook(0x0017df24,0x3c013f00,function() -- lui at, $3f00
       eeObj.Vu1MpgCycles(100)
      
end)

--stutter fix B
eeNativeHook (0x0048bcc0, 0xd8df0000,"FastForwardClock", 0)

local patcher = function()

--60 fps
--eeObj.WriteMem32(0x203FD4F8,0x2C420001)
--
--eeObj.WriteMem32(0x004078b8,0x3c023000)

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

emuObj.AddVsyncHook(patcher)

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

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

After testing, "--gs-frontend-opt-mode=1" and emu choice(Red Faction 2) seems to be the most important here. Almost perfect.
 
Last edited:
Great work! your config also works with Mercenaries 2

Awesome! I wanted to try it next. Mercenaries 1 has some weird swirling image on the loading screen. Its been so long since I've played it I can't remember what it's supposed to look like. Doesn't really matter but that's all I've seen so far wrong with it.
 
Yeah I don't understand most of these commands. I was mostly throwing things at the wall until something stuck. I've played a bit farther and it isn't perfect. I'm not sure what else could be changed if anything to make it better. Thanks for condensing it down and showing what works.
 
Blood Omen 2: Legacy of Kain - SLUS-20024

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

--host-display-mode=16:9

#emu used=KOF2000

LUA
Code:
------------------------------------------------------------------[]
-- The Legacy of Kain - Blood Omen 2              --
-- Boot fix by Kozarovv                           --
-- ported to PS4 lua by JSimesen                  --
-- PS3 mipmapping fix converted                   --
-- Specal Thanks to: Kozarovv, Stayhye, Scalerize --
-- emu used=KOF2000                               --
------------------------------------------------------------------[]
                                                                                   
apiRequest(1.0)                          

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

-------------------------------------------------------------------[]

local CheckInputs = function()

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 (R2 ~= 0 and UP ~= 0) then

emuObj.SetFormattedCard("blood.card")
end

end

emuObj.AddVsyncHook(CheckInputs)

emuObj.SetDisplayAspectWide()

-------------------------------------------------------------------[]

local patcher = function()

eeObj.WriteMem32(0x002f4350,0x10000006)

-- No Widescreen
-- eeObj.WriteMem32(0x00312b08,0x3C013FE3)
-- eeObj.WriteMem32(0x00312b0c,0x34218E38)

-- No Black Borders
-- eeObj.WriteMem32(0x002d443c,0x00000000) -- causes kain to not re-appear after dying/loading

-- No FMV
-- eeObj.WriteMem32(0x002eb280,0x240575e0) --y-position
-- eeObj.WriteMem32(0x002eb298,0x240a1440) --y-scaling

end

emuObj.AddVsyncHook(patcher)

local fix = function()

-- Completely skip ridiculous debugger hook.
eeObj.WriteMem32(0x297DA8, 0x10000006)
eeObj.WriteMem32(0x297DA0, 0x00000000)

end

emuObj.AddEntryPointHook(fix)

------------------------------------------------------------------[]

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

No Widescreen
No Black Borders
No FMV

thanks to @kozarovv @Stayhye

 

Attachments

Last edited:
Blood Omen 2: Legacy of Kain - SLUS-20024

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

--host-display-mode=16:9

--lopnor-config=1

#emu used=KOF2000

LUA
Code:
------------------------------------------------------------------[]
-- The Legacy of Kain - Blood Omen 2              --
-- Boot fix by Kozarovv                           --
-- ported to PS4 lua by JSimesen                  --
-- PS3 mipmapping fix converted                   --
-- Specal Thanks to: Kozarovv, Stayhye, Scalerize --
-- emu used=KOF2000                               --
------------------------------------------------------------------[]
                                                                                    
apiRequest(1.0)                           

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

-------------------------------------------------------------------[]

local CheckInputs = function()

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 (R2 ~= 0 and UP ~= 0) then

emuObj.SetFormattedCard("blood.card")
end

end

emuObj.AddVsyncHook(CheckInputs)

emuObj.SetDisplayAspectWide()

-------------------------------------------------------------------[]

local patcher = function()

eeObj.WriteMem32(0x002f4350,0x10000006)

-- No Widescreen
-- eeObj.WriteMem32(0x00312b08,0x3C013FE3)
-- eeObj.WriteMem32(0x00312b0c,0x34218E38)

-- No Black Borders
-- eeObj.WriteMem32(0x002d443c,0x00000000) -- causes kain to not re-appear after dying/loading

-- No FMV
-- eeObj.WriteMem32(0x002eb280,0x240575e0) --y-position
-- eeObj.WriteMem32(0x002eb298,0x240a1440) --y-scaling

end

emuObj.AddVsyncHook(patcher)

local fix = function()

-- Completely skip ridiculous debugger hook.
eeObj.WriteMem32(0x297DA8, 0x10000006)
eeObj.WriteMem32(0x297DA0, 0x00000000)

end

emuObj.AddEntryPointHook(fix)

------------------------------------------------------------------[]

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

No Widescreen
No Black Borders
No FMV

thanks to @kozarovv @Stayhye

The code from the "--lopnor-config=1" is the same as this in lua:

Code:
eeObj.WriteMem32(0x002f4350,0x10000006)

you can remove the lopnor config, as it is doing nothing.
 
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

fix for Hitman Contracts failed ( still not working )

did you try?

tested on ape escape 2.

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

--cdvd-sector-read-cycles=9000
--host-display-mode=16:9
--vif1-instant-xfer=0

--gs-kernel-cl="mipmap"
--gs-kernel-cl-up="mipmap2x2"
--gs-use-mipmap=1

#emu used=Ape Escape 2

LUA
Code:
------------------------------------------------------------------[]
-- Hitman Contracts NTSC
-- Crash fix A by Stayhye
-- WIP, game still crashes
-- emu used=Ape Escape 2
------------------------------------------------------------------[]

apiRequest(1.0)

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

--emuObj.SetDisplayAspectWide()

-------------------------------------------------------------------[]

local patcher = function()
-- 16:9

-- 60 fps
-- eeObj.WriteMem32(0x2053A70C,0x00000001)

--emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

-------------------------------------------------------------------[]

local fix = function()

--crash fix A (goes to title screen)
eeObj.WriteMem32(0x0024caa8,0x00000000) -- 0x1073002e >> beq v1, s3, $0024cb64

end

emuObj.AddEntryPointHook(fix)

-------------------------------------------------------------------[]

emuObj.SetGsTitleFix( "forceSimpleFetch",  "reserved", {psm=0} )
emuObj.SetGsTitleFix( "fetchFromCurrBuff", "reserved", {psm=0} )
 
Any workarounds for Winx Club (SLES-53219)? According to the PSDev wiki, the game has random freezing during gameplay with both Jak v2 and Rogue so it's marked as unplayable.
 
Prisoner of War

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

--vu1-di-bits=0
LUA
Code:
-- Prisoner of War
-- Widescreen switcher by Stayhye
-- Widescreen codes from PCSX2 forums
-- ported to PS4 lua
-- emu used=psycho v1


apiRequest(1.0)

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

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

emuObj.SetDisplayAspectWide()


local patcher = function()

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 (R3 ~= 0 and LEFT ~= 0) then --
  --16:9
   eeObj.WriteMem32(0x0039c3dc,0x0c1127e8)  --3c013f80
   eeObj.WriteMem32(0x0039c3e0,0x00000000)  --4481a000
   eeObj.WriteMem32(0x00449fa0,0x3c013f40)  --00000000 hor fov
   eeObj.WriteMem32(0x00449fa8,0x4481a000)  --00000000
   eeObj.WriteMem32(0x00449fac,0x46146b42)  --00000000
   eeObj.WriteMem32(0x00449fb0,0x4614a503)  --00000000
   eeObj.WriteMem32(0x00449fb4,0x03e00008)  --00000000
   eeObj.WriteMem32(0x0013e6fc,0x3c0140c0)  --3c013f99 renderfix
   eeObj.WriteMem32(0x001a6b60,0x3c013f2b)  --3c013f00 renderfix
   emuObj.SetDisplayAspectWide()
end

if (R3 ~= 0 and RIGHT ~= 0) then --
  --4:3
   eeObj.WriteMem32(0x0039c3dc,0x3c013f80)  --3c013f80
   eeObj.WriteMem32(0x0039c3e0,0x4481a000)  --4481a000
   eeObj.WriteMem32(0x00449fa0,0x00000000)  --00000000 hor fov
   eeObj.WriteMem32(0x00449fa8,0x00000000)  --00000000
   eeObj.WriteMem32(0x00449fac,0x00000000)  --00000000
   eeObj.WriteMem32(0x00449fb0,0x00000000)  --00000000
   eeObj.WriteMem32(0x00449fb4,0x00000000)  --00000000
   eeObj.WriteMem32(0x0013e6fc,0x3c013f99)  --3c013f99 renderfix
   eeObj.WriteMem32(0x001a6b60,0x3c013f00)  --3c013f00 renderfix
   emuObj.SetDisplayAspectNormal()
end

if (L3 ~= 0 and RIGHT ~= 0) then --
  --4:3 Stretched
   eeObj.WriteMem32(0x0039c3dc,0x3c013f80)  --3c013f80
   eeObj.WriteMem32(0x0039c3e0,0x4481a000)  --4481a000
   eeObj.WriteMem32(0x00449fa0,0x00000000)  --00000000 hor fov
   eeObj.WriteMem32(0x00449fa8,0x00000000)  --00000000
   eeObj.WriteMem32(0x00449fac,0x00000000)  --00000000
   eeObj.WriteMem32(0x00449fb0,0x00000000)  --00000000
   eeObj.WriteMem32(0x00449fb4,0x00000000)  --00000000
   eeObj.WriteMem32(0x0013e6fc,0x3c013f99)  --3c013f99 renderfix
   eeObj.WriteMem32(0x001a6b60,0x3c013f00)  --3c013f00 renderfix
   emuObj.SetDisplayAspectWide()
end

if (L3 ~= 0 and LEFT ~= 0) then --
  --16:10
   eeObj.WriteMem32(0x0039c3dc,0x0c1127e8)  --3c013f80
   eeObj.WriteMem32(0x0039c3e0,0x00000000)  --4481a000
   eeObj.WriteMem32(0x00449fa0,0x3c013f55)  --00000000 hor fov
   eeObj.WriteMem32(0x00449fa4,0x34215555)  --00000000
   eeObj.WriteMem32(0x00449fa8,0x4481a000)  --00000000
   eeObj.WriteMem32(0x00449fac,0x46146b42)  --00000000
   eeObj.WriteMem32(0x00449fb0,0x4614a503)  --00000000
   eeObj.WriteMem32(0x00449fb4,0x03e00008)  --00000000
   eeObj.WriteMem32(0x0013e6fc,0x3c0140a0)  --3c013f99 renderfix
   eeObj.WriteMem32(0x001a6b60,0x3c013f1a)  --3c013f00 renderfix
   emuObj.SetDisplayAspectWide()
end

--All Secrets by Codejunkies
eeObj.WriteMem32(0x0068DE00,0x00000001) -- 2
eeObj.WriteMem32(0x0068DE04,0x00000001) -- 2
eeObj.WriteMem32(0x0068DE08,0x00000001) -- 2
eeObj.WriteMem32(0x0068DE0C,0x00000001)
eeObj.WriteMem32(0x0068DE10,0x00000001)
eeObj.WriteMem32(0x0068DE14,0x00000001)

--Unlock 2nd Level by Codejunkies
eeObj.WriteMem32(0x00683E11,0x00000003)

--Unlock 3rd Level by Codejunkies
eeObj.WriteMem32(0x00683E7A,0x00000003)

--Unlock 4th Level by Codejunkies
eeObj.WriteMem32(0x00683EE3,0x00000003)

--Unlock 5th Level by Codejunkies
eeObj.WriteMem32(0x00683F4C,0x00000003)

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

No longer need to Skip FMVs. Widescreen patch causes them to freeze. Added a switch to enable 16:9, 16:10, 4:3 and 4:3 stretched at title screen(or anywhere after FMVs)
 
Prisoner of War

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

--vu1-di-bits=0
LUA
Code:
-- Prisoner of War
-- Widescreen switcher by Stayhye
-- Widescreen codes from PCSX2 forums
-- ported to PS4 lua
-- emu used=psycho v1


apiRequest(1.0)

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

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

emuObj.SetDisplayAspectWide()


local patcher = function()

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 (R3 ~= 0 and LEFT ~= 0) then --
  --16:9
   eeObj.WriteMem32(0x0039c3dc,0x0c1127e8)  --3c013f80
   eeObj.WriteMem32(0x0039c3e0,0x00000000)  --4481a000
   eeObj.WriteMem32(0x00449fa0,0x3c013f40)  --00000000 hor fov
   eeObj.WriteMem32(0x00449fa8,0x4481a000)  --00000000
   eeObj.WriteMem32(0x00449fac,0x46146b42)  --00000000
   eeObj.WriteMem32(0x00449fb0,0x4614a503)  --00000000
   eeObj.WriteMem32(0x00449fb4,0x03e00008)  --00000000
   eeObj.WriteMem32(0x0013e6fc,0x3c0140c0)  --3c013f99 renderfix
   eeObj.WriteMem32(0x001a6b60,0x3c013f2b)  --3c013f00 renderfix
   emuObj.SetDisplayAspectWide()
end

if (R3 ~= 0 and RIGHT ~= 0) then --
  --4:3
   eeObj.WriteMem32(0x0039c3dc,0x3c013f80)  --3c013f80
   eeObj.WriteMem32(0x0039c3e0,0x4481a000)  --4481a000
   eeObj.WriteMem32(0x00449fa0,0x00000000)  --00000000 hor fov
   eeObj.WriteMem32(0x00449fa8,0x00000000)  --00000000
   eeObj.WriteMem32(0x00449fac,0x00000000)  --00000000
   eeObj.WriteMem32(0x00449fb0,0x00000000)  --00000000
   eeObj.WriteMem32(0x00449fb4,0x00000000)  --00000000
   eeObj.WriteMem32(0x0013e6fc,0x3c013f99)  --3c013f99 renderfix
   eeObj.WriteMem32(0x001a6b60,0x3c013f00)  --3c013f00 renderfix
   emuObj.SetDisplayAspectNormal()
end

if (L3 ~= 0 and RIGHT ~= 0) then --
  --4:3 Stretched
   eeObj.WriteMem32(0x0039c3dc,0x3c013f80)  --3c013f80
   eeObj.WriteMem32(0x0039c3e0,0x4481a000)  --4481a000
   eeObj.WriteMem32(0x00449fa0,0x00000000)  --00000000 hor fov
   eeObj.WriteMem32(0x00449fa8,0x00000000)  --00000000
   eeObj.WriteMem32(0x00449fac,0x00000000)  --00000000
   eeObj.WriteMem32(0x00449fb0,0x00000000)  --00000000
   eeObj.WriteMem32(0x00449fb4,0x00000000)  --00000000
   eeObj.WriteMem32(0x0013e6fc,0x3c013f99)  --3c013f99 renderfix
   eeObj.WriteMem32(0x001a6b60,0x3c013f00)  --3c013f00 renderfix
   emuObj.SetDisplayAspectWide()
end

if (L3 ~= 0 and LEFT ~= 0) then --
  --16:10
   eeObj.WriteMem32(0x0039c3dc,0x0c1127e8)  --3c013f80
   eeObj.WriteMem32(0x0039c3e0,0x00000000)  --4481a000
   eeObj.WriteMem32(0x00449fa0,0x3c013f55)  --00000000 hor fov
   eeObj.WriteMem32(0x00449fa4,0x34215555)  --00000000
   eeObj.WriteMem32(0x00449fa8,0x4481a000)  --00000000
   eeObj.WriteMem32(0x00449fac,0x46146b42)  --00000000
   eeObj.WriteMem32(0x00449fb0,0x4614a503)  --00000000
   eeObj.WriteMem32(0x00449fb4,0x03e00008)  --00000000
   eeObj.WriteMem32(0x0013e6fc,0x3c0140a0)  --3c013f99 renderfix
   eeObj.WriteMem32(0x001a6b60,0x3c013f1a)  --3c013f00 renderfix
   emuObj.SetDisplayAspectWide()
end

--All Secrets by Codejunkies
eeObj.WriteMem32(0x0068DE00,0x00000001) -- 2
eeObj.WriteMem32(0x0068DE04,0x00000001) -- 2
eeObj.WriteMem32(0x0068DE08,0x00000001) -- 2
eeObj.WriteMem32(0x0068DE0C,0x00000001)
eeObj.WriteMem32(0x0068DE10,0x00000001)
eeObj.WriteMem32(0x0068DE14,0x00000001)

--Unlock 2nd Level by Codejunkies
eeObj.WriteMem32(0x00683E11,0x00000003)

--Unlock 3rd Level by Codejunkies
eeObj.WriteMem32(0x00683E7A,0x00000003)

--Unlock 4th Level by Codejunkies
eeObj.WriteMem32(0x00683EE3,0x00000003)

--Unlock 5th Level by Codejunkies
eeObj.WriteMem32(0x00683F4C,0x00000003)

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

No longer need to Skip FMVs. Widescreen patch causes them to freeze. Added a switch to enable 16:9, 16:10, 4:3 and 4:3 stretched at title screen(or anywhere after FMVs)


Hey bud, i cannot figure out for the life of me, where to get the Psychonaut emu, AOFA emu and the Red Faction 2 emu. Can ya please point me in the right direction? thanks!
 
Hello everyone
has someone tried The Hulk 2003 ???
On psdevwiki.com/ps4/PS2_Classics_Emulator_Compatibility_List it sease is playable
I can't make it work and is a great game
 
Shaman King - Power of Spirit SLUS_209.53


Cli
Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth
--host-display-mode=16:9
--vu1-di-bits=0                               #fix micro freezing
--vu1=jit-sync                                   #fix black screen
--vu1-jr-cache-policy=newprog     # speed help
--vu1-jalr-cache-policy=newprog

Lua
Code:
--Shaman King - Power of Spirit SLUS_209.53
--Widescreen Hack
--jak v2

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

apiRequest(0.1)

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

local patcher = function()
--16:9
eeObj.WriteMem32(0x001dd764,0x3c023fab)

--Yoh Asakura Infinite HP
eeObj.WriteMem32(0x204E3DA4,0x2160EC00)
eeObj.WriteMem32(0x204E3F04,0x2160EC00)

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


Notes
- playable
- audio slowdown in fights with colored glow.
# --ee-cycle-scalar=4.0 ... fixes audio but brings other problems.
# --vu1-mpg-cycles=3000 crashes chapter 3 fight (Faust VII) .
#2900 works... but, I didn't see much difference.
 

Similar threads

Back
Top