PS4 [Research]PS2 emulator configuration on PS4

emuObj.ThrottleMax() cuts all my load times in 1/2....I don't know why it didn't work for you. Try moving it outside the patcher. I also used it on my previous fixes back to the Marc Ecko fix...

With this 9.00 release, I am able to re-dump ALL emus! Some of the known emus may have been updated since the last dump.....including the last 2 to be examined.

Art of fighting Anthology
Eternal Ring

Updates soon...

Look foward in seeing them. I still have a collection of your last ones.
 
I tried 100 times to make the twisted metal black game work, but whenever I start a game, and try to go back to the start menu, the game crashes and gives a blue screen with an error. The official dump I can't find anywhere.
 


Twisted Metal Black - SCUS_971.01

psdevwiki configuration:

TXT

--mtap1=always
--gs-use-deferred-l2h=0
--l2h-2d-params=0x0000000400000004,0x00000000300a0000,240
--vu1-di-bits=0
--vu1-opt-vf00=2

LUA
require("ee-gpr-alias")
apiRequest(0.1) -- request version 0.1 API. Calling apiRequest() is mandatory.

-- This game uses an old kernel which has a bug on _TerminateThread.
-- It is necessary to check the target thread is already in readyqueue or not.

iopObj = getIOPObject()
iopInsnReplace(0x0000C5C0, 0x0C004430, 0) -- jal 0x000110C0 // unlink_element (in TerminateThread)
iopInsnReplace(0x0000C6EC, 0x0C004430, 0) -- jal 0x000110C0 // unlink_element (in iTerminateThread)
local fix_TerminateThread = function()
local TCB = iopObj.GetGpr(gpr.s0)
local TCB_status = iopObj.ReadMem8(TCB + 0xc)
local TCB_h_l = TCB
if TCB_status == 0x2 then
-- the target thread is on ready.
local TCB_h_l_prev = iopObj.ReadMem32(TCB_h_l + 0)
local TCB_h_l_next = iopObj.ReadMem32(TCB_h_l + 4)
if TCB_h_l_prev == TCB_h_l_next then -- last_one_element(&tcb->h.l)
-- we need to maintain threadManCB.readymap.
-- print("WE NEED TO MAINTAIN threadManCB.readymap!")
local s0 = iopObj.ReadMem16(TCB + 0xe) -- prio
local s1 = TCB
local a0 = s0 >> 5
a0 = a0 << 2
local v1 = s0 & 0x1f
local v0 = 1 << v1
v1 = 0x10000 + a0
v1 = iopObj.ReadMem32(v1 + 0x1a08)
v0 = ~v0
v1 = v1 & v0
local at = 0x10000+a0
iopObj.WriteMem32(at+0x1a08, v1)

-- 0000B798 00102142 srl a0,s0,5
-- 0000B79C 00042080 sll a0,a0,2
-- 0000B7A0 3203001F andi v1,s0,0x1F
-- 0000B7A4 24020001 li v0,0x1
-- 0000B7A8 00621004 sllv v0,v0,v1
-- 0000B7AC 3C030001 lui v1,0x1
-- 0000B7B0 00641821 addu v1,v1,a0
-- 0000B7B4 8C631A08 lw v1,0x1A08(v1)
-- 0000B7B8 00021027 nor v0,zero,v0
-- 0000B7BC 00621824 and v1,v1,v0
-- 0000B7C0 3C010001 lui at,0x1
-- 0000B7C4 00240821 addu at,at,a0
-- 0000B7C8 AC231A08 sw v1,0x1A08(at)

end
end
-- do unlink_element
local v1 = iopObj.ReadMem32(TCB_h_l+0) -- element->prev
local v0 = iopObj.ReadMem32(TCB_h_l+4) -- element->next
iopObj.WriteMem32(v1 + 4, v0) -- element->prev->next = element->next
iopObj.WriteMem32(v0 + 0, v1)
end
iopObj.AddHook(0x0000C5C4, 0x02002021, fix_TerminateThread) -- move a0,s0
iopObj.AddHook(0x0000C6F0, 0x02002021, fix_TerminateThread) -- move a0,s0

-- _waitIpuIdle64 spin perf down problem. Bug#8289
-- NOTE: new libarary also loops just 500dec around. 0x1389 is too much.
eeInsnReplace(0x0020CF80, 0x28421389, 0x28420200) -- slti v0,v0,0x1389



EMU: jakXv2

https://www.psdevwiki.com/ps4/Talk:PS2_Classics_Emulator_Compatibility_List#Twisted_Metal_Black
 
Kozarovv's github page is down, is that how it's supposed to be? Plus, many configs posted here are not in the psdevwiki, is it ok for me to add them?
 
The Lord of the Rings: The Third Age(SLES-52801)
LUA

Code:
apiRequest(0.1)
eeInsnReplace(0x21aef0,0x14a000b4,0x100000b4)

The Lord of the Rings: The Third Age(SLAJ-25051)
LUA

Code:
apiRequest(0.1)
eeInsnReplace(0x21b4d8,0x14a000b4,0x100000b4)

Lord of the Rings:The Nakatsu Kuni Daisanki(SLPM-65846)
LUA

Code:
apiRequest(0.1)
eeInsnReplace(0x21b4d0,0x14a000b4,0x100000b4)

The Lord of the Rings: The Third Age(SLKA-25237)
LUA

Code:
apiRequest(0.1)
eeInsnReplace(0x21b408,0x14a000b4,0x100000b4)
 
WIP fix for Spartan Total Warrior

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

--gs-motion-factor=60
--host-display-mode=16:9

--ee-cycle-scalar=2.6

--vu1-mpg-cycles=550
LUA
Code:
local gpr = require("ee-gpr-alias")

apiRequest(0.1)

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

local patcher = function()
-- 16:9
eeObj.WriteMem32(0x2057C814,0x3F100000) -- 3F400000

end

emuObj.AddVsyncHook(patcher)

emu used=warriors v2

Still slight slowdown in cut scenes. Needs to be improved.
 
Last edited:
WIP fix for Spartan Total Warrior

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

--gs-motion-factor=60
--host-display-mode=16:9

--ee-cycle-scalar=2.6

--vu1-mpg-cycles=550
LUA
Code:
local gpr = require("ee-gpr-alias")

apiRequest(0.1)

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

local patcher = function()
-- 16:9
eeObj.WriteMem32(0x2057C814,0x3F100000) -- 3F400000

end

emuObj.AddVsyncHook(patcher)

emu used=warriors v2

Still slight slowdown in cut scenes. Needs to be improved.

Thankssss!!! I will test
 
Fix for Hunter X Hunter™ Ryumyaku no Saidan (Japan)

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

--host-display-mode=16:9

--vu1-no-clamping=0 #fixes missing textures
LUA
Code:
-- emu used=eternal ring v2

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

apiRequest(1.5)

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

local patcher = function()

eeObj.WriteMem32(0x00118e34,0x3c024408) --3c024448 zoom
eeObj.WriteMem32(0x202CBDEC,0x3F9F3B64) --3F6ED917 vert

emuObj.ThrottleMax()  -- loading screen speed up
end

emuObj.AddVsyncHook(patcher)

fixes missing character/world parts.
 
Fix for Shadow of Rome NTSC

CLI
Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth
--gs-kernel-cl="h2lpool"
--gs-kernel-cl-up="h2lpool2x2"
--gs-progressive=1
--vu-custom-min-max=0
--vu1-di-bits=0
LUA
Code:
-- Shadow of Rome NTSC
-- graphic fix + widescreen + no interlace
-- speed fix by @mrjaredbeta
-- emu used=eternal ring v2

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

apiRequest(1.5)

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

local patcher = function()
eeObj.WriteMem32(0x002e489c,0x00000000) -- speed fix/blur removal?
-- 16:9
eeObj.WriteMem32(0x00146bc8,0x3c023f1f)
eeObj.WriteMem32(0x00146bd0,0x344249f9)
eeObj.WriteMem32(0x00146de4,0x3c023f1f)
eeObj.WriteMem32(0x00146dec,0x344249f9)
eeObj.WriteMem32(0x001e746c,0x3c044328)

eeObj.WriteMem32(0x201E9274,0x30420000) -- no interlace

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

emuObj.SetDisplayAspectWide()

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

emu used= Eternal Ring v2

Works perfectly!
 
Last edited:

Similar threads

Back
Top