PS4 [Research]PS2 emulator configuration on PS4

This hook does waste EE cycles in order to complete ongoing DMA transfers. It is completely opposite of the VU0 sync issues caused by running ahead of the EE mostly.
So I was being counter-productive this whole time? lol...
I will get around to it soon hopefully then. Thanks for the response <3.
 
being that these games are made using the "Kinetica" engine, would it be safe to assume that that emu is most likely tuned for the engine in the first place? Just a thought....

https://ultimatepopculture.fandom.com/wiki/Kinetica_(game_engine)
It is a COP2 timing issue. The engine is sadly irrelevant :( .

Nevertheless, I have made a "Fully" working prototype config for the first level just to help you in imagining what the game would look like assuming that it is fixed.
SCUS-97353
Jakv2


https://github.com/Scalerize/long-configs/blob/main/Ratchet 3.txt

A few notes:
* The slowdowns are caused by the eecyclescalar and are required in order for the game to work properly for now
* The sps is likely caused by the fastforwardclock
* I do not know how I will fix the missing graphics as I still do not know what is causing them but I am positive that it is not my patch.
 
Last edited:
does this make it in game?
Indeed it does, but only the first level. It is not meant to be a gamefix in anyway, it is only meant to give you and others a glimpse of the issues that are outside of the VU0 sync crap. Because even after, assuming I or anyone else fix it, there will be some other issues that will need to be fixed.
 
NARC (SLUS20730)

TXT
Code:
--host-display-mode=16:9
--gs-adaptive-frameskip=1
--mtap1=always

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

LUA

Code:
-- NARC (SLUS20730)
-- Cheat for Bonus Game
-- JakX v2

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 (L1 ~= 0 and UP ~= 0) then
-- on
eeObj.WriteMem32(0x01E404C0,0x00000019)
end

if (L1 ~= 0 and DOWN ~= 0) then
-- off
eeObj.WriteMem32(0x01E404C0,0x00000000)
end

end

emuObj.AddVsyncHook(CheckInputs)

local patcher = function()


end

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

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

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

emuObj.AddVsyncHook(patcher)

NARC. Short GamePlay!
VIDEO


NARC Original 1988 Arcade. Short GamePlay!
VIDEO


After finish first mission you need push L1 + D-pad Up button for activate this cheat, after it u can see classic game in main menu!
For bonus mission use Apollo tool and replace save file (load save #3)!
 

Attachments

X-Men™ Legends® NTSC

CLI
Code:
--gs-uprender=2x2
--gs-upscale=motionvector
--gs-optimize-30fps=1
--cdvd-sector-read-cycles=2000
--vu-custom-min-max=0
--vu1-di-bits=0
--vu0-di-bits=0
--vu1-opt-vf00=2
--vu0-opt-vf00=2
--vu1-injection=1
--vu1=jit-sync
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog


--ee-cycle-scalar=1.5
LUA
Code:
-- X-Men™ Legends®
-- ported to PS4 Lua by Stayhye
-- emu used=jakx v2

apiRequest(2.2)

local gpr       = require("ee-gpr-alias")
local emuObj      = getEmuObject()
local eeObj       = getEEObject()
local gsObj       = getGsObject()
local eeOverlay    = eeObj.getOverlayObject()
local iopObj  = getIOPObject()
 

emuObj.PadSetLightBar(0, 10,50,145)
emuObj.SetDisplayAspectWide()
gsObj.SetDeinterlaceShift(0)

local WS = function()
--eeObj.WriteMem32(0x005cc888,0x3c023f34)
eeObj.WriteMem32(0x20720920,0x3FE147AE)  --In-game width widescreen 16:9
eeObj.WriteMem32(0x2072094c,0x3F000000)  --Fonts Width
eeObj.WriteMem32(0x20720950,0x3F000000)  --Fonts Height
eeObj.WriteMem32(0x20720958,0x3F8CCCCD)  --HUD & Menu Height
--eeObj.WriteMem32(0x20720954,0x3FA00000)  --HUD & Menu Width
eeObj.WriteMem32(0x20D85448,0x3F666666)  --HUD Height
eeObj.WriteMem32(0x20D85430,0x3F59999A)  --HUD Width

eeObj.Vu1MpgCycles(3450)
emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(WS)

emuObj.SetGsTitleFix( "globalSet",  "reserved", { workLoadThreshold = 100000} )
emuObj.SetGsTitleFix( "globalSet",  "reserved", { waveThreshold = 90000} )
emuObj.SetGsTitleFix( "ignoreAreaUpdate", 0, { } )

X-Men™ Legends II - Rise of the Apocalypse® NTSC

CLI
Code:
--gs-uprender=2x2
--gs-upscale=motionvector
--gs-optimize-30fps=1
--vu0-di-bits=0
--vu1-di-bits=0

--vu1=jit-sync

--vu1-mpg-cycles=5430
--gs-kernel-cl="h2lpool"
--gs-kernel-cl-up="h2lpool2x2"
--gs-flush-ad-xyz=safeZwrite

--ee-cycle-scalar=1.11

--vu0-no-clamping=0
--vu1-no-clamping=0
--cop2-no-clamping=0

--vu1-jr-cache-policy=newprog
--vu0-jr-cache-policy=newprog
LUA
Code:
-- X-Men™ Legends II - Rise of the Apocalypse®
-- ported to PS4 Lua by Stayhye

apiRequest(2.2)

local gpr       = require("ee-gpr-alias")
local emuObj      = getEmuObject()
local eeObj       = getEEObject()
local gsObj       = getGsObject()
local eeOverlay    = eeObj.getOverlayObject()
local iopObj  = getIOPObject()
 

emuObj.PadSetLightBar(0, 15,100,255)
emuObj.SetDisplayAspectWide()
gsObj.SetDeinterlaceShift(0)

local WS = function()
--Widescreen hack 16:9
eeObj.WriteMem32(0x00270984,0x3c033f40) --3c033f80
eeObj.WriteMem32(0x0027099c,0x460318c3) --00000000
eeObj.WriteMem32(0x008985d0,0x3F199999) --fonts

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(WS)

emuObj.SetGsTitleFix( "globalSet",  "reserved", { workLoadThreshold = 100000} )
emuObj.SetGsTitleFix( "globalSet",  "reserved", { waveThreshold = 90000} )
emuObj.SetGsTitleFix( "ignoreAreaUpdate", 0, { } )

Vast improvement over previous fixes(framerate, loading, etc)

About my tests!

what emu u use in Legends II? jakx v2? In my test i always got freeze when u meet soldiers first time and start fight! After it i try change view of camera (Close) and game stayd more or less playble! I pass first fight with soldiers and some more fights...but soon got freeze again! When i notice if enemy attack u with some effect (lightning for example) game also freeze! So if u want play this game, u must defeat enemys very quick, but not sure it really possible!

X-Men Legends looks playble!
 
About my tests!

what emu u use in Legends II? jakx v2? In my test i always got freeze when u meet soldiers first time and start fight! After it i try change view of camera (Close) and game stayd more or less playble! I pass first fight with soldiers and some more fights...but soon got freeze again! When i notice if enemy attack u with some effect (lightning for example) game also freeze! So if u want play this game, u must defeat enemys very quick, but not sure it really possible!

X-Men Legends looks playble!
Maybe you can try this config? Haven't tested it.
RECVX
Code:
--vu1-mpg-cycles=6000
--vu1=jit-sync
 
Fix for Blade 2

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

--host-display-mode=16:9

--vu1-di-bits=0
--vu0-di-bits=0
--vu1-opt-vf00=2
--vu0-opt-vf00=2

--ee-regalloc-preserve-scalar=LoadStore
--ee-const-folding=all
LUA
Code:
-- Blade 2 NTSC
--emu used=ADK Damashii

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

apiRequest(0.1)

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

local patcher = function()

eeObj.WriteMem32(0x0018B6B8,0x3C033F40)
eeObj.WriteMem32(0x0017e7d4,0x3c033f40)
emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

emu used=ADK Damashii

Works Perfectly! More testing needed

Blade II PS2toPS4 Test

Game still have freeze issue - some missions freeze before loading on cutscenes! Possible to skip cutscenes, but level freeze soon or later... But was added Unlock Missions and Weapons cheats! That mean you can load any mission! You can see on video that some of missions is playble, so we can say that package is some kind big DEMO version of game, till someone find total freeze FiX!
 
Game still have freeze issue - some missions freeze before loading on cutscenes! Possible to skip cutscenes, but level freeze soon or later... But was added Unlock Missions and Weapons cheats! That mean you can load any mission! You can see on video that some of missions is playble, so we can say that package is some kind big DEMO version of game, till someone find total freeze FiX!

@Vika23 -

can you try this config?
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth
--cdvd-sector-read-cycles=200
--host-display-mode=16:9
#--vif1-instant-xfer=0
--vu0-di-bits=0
--vu1-di-bits=0

#emu used=everybody tennis

Let me know if you have same issue...

*edit - haven't had any freezes/crashes with this config yet..
 
Last edited:
SEGA Superstar Tennis NTSC

CLI
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth
--gs-kernel-cl="h2lpool"
--gs-kernel-cl-up="h2lpool2x2"
--cdvd-sector-read-cycles=2000
--vu0-di-bits=0
--vif1-instant-xfer=0

--ee-hook=0x0010bb0c,AdvanceClock,,6000
LUA
Code:
-- SEGA Superstar Tennis
-- Graphical issue fix by Kozarovv
-- ported to PS4 Lua
-- emu used=kof98um

apiRequest(0.1)

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

emuObj.PadSetLightBar(0, 5,5,255)
emuObj.SetDeinterlace(true)
emuObj.SetDisplayAspectWide()
--emuObj.ForceRefreshRate(60)
emuObj.EnableImposeMenu(true)

-- Rearrange code to not corrupt previous
-- result by new VU0 microprogram.
eeInsnReplace(0x0010c800,0x4a001ab8,0x48309800) -- vcallms $006a
eeInsnReplace(0x0010c804,0x48309800,0x4a001ab8) -- qmfc2 s0, vf19
eeInsnReplace(0x0010c874,0x4a002178,0x4830b800) -- vcallms $0085
eeInsnReplace(0x0010c878,0x4830b800,0x4a002178) -- qmfc2 s0, vf23
eeInsnReplace(0x0010c8f0,0x4a001ab8,0x48309800) -- vcallms $006a
eeInsnReplace(0x0010c8f4,0x48309800,0x4a001ab8) -- qmfc2 s0, vf19
eeInsnReplace(0x0010c978,0x4a002178,0x4830b800) -- vcallms $0085
eeInsnReplace(0x0010c97c,0x4830b800,0x4a002178) -- qmfc2 s0, vf23
eeInsnReplace(0x0010c990,0x4a002178,0x4830b800) -- vcallms $0085
eeInsnReplace(0x0010c994,0x4830b800,0x4a002178) -- qmfc2 s0, vf23
eeInsnReplace(0x0010c9c8,0x4a001ab8,0x48309800) -- vcallms $006a
eeInsnReplace(0x0010c9d0,0x48309800,0x4a001ab8) -- qmfc2 s0, vf19
eeInsnReplace(0x0010ca00,0x4a002178,0x4830b800) -- vcallms $0085
eeInsnReplace(0x0010ca08,0x4830b800,0x4a002178) -- qmfc2 s0, vf23

local WS = function()


emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(WS)

Total fix for graphics by Kozarovv. Maybe this method can be ported to R&C...
 
@Vika23 -

can you try this config?
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth
--cdvd-sector-read-cycles=200
--host-display-mode=16:9
#--vif1-instant-xfer=0
--vu0-di-bits=0
--vu1-di-bits=0

#emu used=everybody tennis

Let me know if you have same issue...

*edit - haven't had any freezes/crashes with this config yet..

Did u try that mission?
 

Attachments

  • Blade 2 [US] [WS] [FiXed]_20230406193425.jpg
    Blade 2 [US] [WS] [FiXed]_20230406193425.jpg
    471.9 KB · Views: 35
First mission after training not freeze. Freezes starts afte first mission, when u got elevator! You can skip fmv but mission freeze anway

what campaign is that? I didn't play into the game fully but FMVs are fine, and I can start all missions and let the FMV play with the missions cheat and this config
 
what campaign is that? I didn't play into the game fully but FMVs are fine, and I can start all missions and let the FMV play with the missions cheat and this config
Try start mission that i show on screen, or club mission! FMVs always freeze at start, for me!
 

Similar threads

Back
Top