PS4 [Research]PS2 emulator configuration on PS4

Kind of. But is more complicated.

Rayman arena (US) sooner or later stuck on
1DE9B0
1DEB94
1DEC00
1DEC54
1DEEA0
1DEEDC
1DF078
1DF0B4
1DF154
Because of sync issues between EE-VU.

You should take a look at these two files:

Rayman 3
https://mega.nz/file/5yoQ2SiR#Vl-Sq_NSD-RDz0DnZpBFWzLGQfd0492lMwnB1fpntMs
Rayman M:
https://mega.nz/file/BqoSyIjD#PPP55AZ_YdABXYgjM8-Y0nHcpPWYIfX5hPH7tRAknSo

In rayman 3, nopping these two addresses:
00101194 4846E800 cfc2 a2,VPU-STAT--
001011B4 4846E800 cfc2 a2,VPU-STAT--
The game will create an infinite loading screen loop and it will show this error in the register (PCSX2):
sceGsSyncPath: VU1 does not terminate
 
Here are games that require xgkick hack + value to use. Bold are ones that are most promising to be tested on ps4, titles that aren't bolded probably require a lot more patching. Remember to test titles with

Code:
--fpu-no-clamping=0
--fpu-clamp-results=1
--vu0-no-clamping=0
--vu0-clamp-results=1
--vu1-no-clamping=0
--vu1-clamp-results=1
--cop2-no-clamping=0
--cop2-clamp-results=1
--vu0-opt-flags=1
--vu1-opt-flags=1
--cop2-opt-flags=1
--vu0-const-prop=0
--vu1-const-prop=0
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog

+ additional line from spoiler.

Title : dot Hack - G.U. Vol.1 - Rebirth
Game ID : SLUS_212.58
--vu-xgkick-delay=8


Title : dot Hack - G.U. Vol.2 - Reminisce
Game ID : SLUS_214.88
--vu-xgkick-delay=8


Title : dot Hack - G.U. Vol.3 - Redemption
Game ID : SLUS_214.89
--vu-xgkick-delay=8


Title : Harry Potter and The Chamber of Secrets
Game ID : SLUS_205.76
--vu-xgkick-delay=8


Title : Harry Potter and the Chamber of Secrets
Game ID : SLES_511.92
--vu-xgkick-delay=8


Title : Harry Potter and The Prisoner of Azkaban
Game ID : SLUS_209.26
--vu-xgkick-delay=8


Title : Project Eden
Game ID : SLUS_201.64
--vu-xgkick-delay=8


Title : Project Eden
Game ID : SLES_505.53
--vu-xgkick-delay=8


Title : Radiata Stories
Game ID : SLUS_212.62
--vu-xgkick-delay=8


Title : Ratchet & Clank
Game ID : SCUS_971.99
--vu-xgkick-delay=2


Title : Ratchet & Clank - Going Commando
Game ID : SCUS_972.68
--vu-xgkick-delay=2


Title : Ratchet and Clank - Up Your Arsenal
Game ID : SCUS_973.53
--vu-xgkick-delay=2


Title : Ratchet - Deadlocked
Game ID : SCUS_974.65
--vu-xgkick-delay=2


Title : World of Outlaws - Sprint Cars 2002
Game ID : SLUS_202.83
--vu-xgkick-delay=8


Title : Star Ocean 3 - Till the End of Time [Disc1of2]
Game ID : SLUS_204.88
--vu-xgkick-delay=8


Title : Star Ocean 3 - Till the End of Time [Disc2of2]
Game ID : SLUS_208.91
--vu-xgkick-delay=8


Title : Star Ocean 3 - Till the End of Time [Disc1of2]
Game ID : SLES_820.28
--vu-xgkick-delay=8


Title : Star Ocean 3 - Till the End of Time [Disc2of2]
Game ID : SLES_820.29
--vu-xgkick-delay=8


Title : Valkyrie Profile 2 - Silmeria
Game ID : SLUS_214.52


Title : Ty the Tasmanian Tiger
Game ID : SLUS_205.71
--vu-xgkick-delay=8


Title : Harry Potter to Himitsu no Heya
Game ID : SLPS_202.34
--vu-xgkick-delay=8


Title : Momotaro Densetsu
Game ID : SLPM_625.55
--vu-xgkick-delay=8


Title : World Rallt Championship II Extreme
Game ID : SLPM_652.84
--vu-xgkick-delay=8


Title : World Rally Championship 3
Game ID : SLPM_655.83
--vu-xgkick-delay=4


Title : World Rally Championship 4
Game ID : SLPM_659.75
--vu-xgkick-delay=4


Title : WRC - World Rally Championship
Game ID : SLPS_250.99
--vu-xgkick-delay=8


Title : Rimoko Koron
Game ID : SCPS_110.12
--vu-xgkick-delay=8


Title : Rally Shox
Game ID : SLPS_202.46
--vu-xgkick-delay=8


Title : Ratchet & Clank 2
Game ID : SCPS_150.56
--vu-xgkick-delay=2


Title : Ratchet & Clank 3
Game ID : SCPS_150.84
--vu-xgkick-delay=2


Title : Ratchet & Clank - Giga Battle
Game ID : SCPS_150.99
--vu-xgkick-delay=2


Title : Star Ocean 3 [Director's Cut] [Disc1of2]
Game ID : SLPM_654.38
--vu-xgkick-delay=8


Title : Star Ocean 3 [Limited Edition]
Game ID : SLPM_652.09
--vu-xgkick-delay=8


Title : Tenchu 3
Game ID : SLPS_252.34
--vu-xgkick-delay=8


Title : Valkyrie Profile 2 - Silmeria
Game ID : SLPM_664.19
--vu-xgkick-delay=8


Title : Radiata Stories
Game ID : SLPM_658.00
--vu-xgkick-delay=8


Title : Ratchet & Clank
Game ID : SCPS_150.37
--vu-xgkick-delay=2


Title : Harry Potter and The Prisoner of Azkaban
Game ID : SLPM_656.12
--vu-xgkick-delay=8


Title : Harry Potter and the Prisoner of Azkaban
Game ID : SLES_524.40
--vu-xgkick-delay=8


Title : Harry Potter og Fangen fra Azkaban
Game ID : SLES_525.27
--vu-xgkick-delay=8


Title : Harry Potter and The Prisoner of Azkaban
Game ID : SLES_526.00
--vu-xgkick-delay=8



Title : Ratchet & Clank 2 - Locked & Loaded
Game ID : SCES_516.07
--vu-xgkick-delay=2


Title : Ratchet & Clank 3
Game ID : SCES_524.56
--vu-xgkick-delay=2


Title : Ratchet - Gladiator
Game ID : SCES_532.85
--vu-xgkick-delay=2


Title : World Rally Championship II Extreme
Game ID : SCES_509.34
--vu-xgkick-delay=8


Title : WRC - World Rally Championship - Rally Evolved
Game ID : SCES_532.47
--vu-xgkick-delay=4


Title : WRC - Rally Evolved
Game ID : SCES_536.80
--vu-xgkick-delay=4


Title : Ratchet & Clank
Game ID : SCES_509.16
--vu-xgkick-delay=2


Title : Valkyrie Profile 2 - Silmeria
Game ID : SLES_546.44
--vu-xgkick-delay=8



Title : Valkyrie Profile 2 - Silmeria
Game ID : SLES_546.45
--vu-xgkick-delay=8



Title : Valkyrie Profile 2 - Silmeria
Game ID : SLES_546.46
--vu-xgkick-delay=8



Title : Valkyrie Profile 2 - Silmeria
Game ID : SLES_546.47
--vu-xgkick-delay=8



Title : Valkyrie Profile 2 - Silmeria
Game ID : SLES_546.48
--vu-xgkick-delay=8


Title : ?
Game ID : SLES_512.13
--vu-xgkick-delay=8


Title : World of Outlaws - Sprint Cars
Game ID : SLES_515.09
--vu-xgkick-delay=8


Title : Ty - The Tazmanian Tiger
Game ID : SLES_512.20
--vu-xgkick-delay=8


Title : Ratchet & Clank 2 - Gagaga! Ginga no Commando-ssu
Game ID : SCKA_200.11
--vu-xgkick-delay=2


Title : Ratchet & Clank 2 - Gagaga! Ginga no Commando-ssu [Big Hit Series]
Game ID : SCKA_200.37
--vu-xgkick-delay=2


Title : Ratchet - Deadlocked
Game ID : SCKA_200.60
--vu-xgkick-delay=2


Title : Harry Potter and the Prisoner of Azkaban
Game ID : SLKA_251.72
--vu-xgkick-delay=8


Title : Harry Potter and the Chamber of Secrets
Game ID : SLPM_645.28
--vu-xgkick-delay=8
Can this be relevant for games with the mVu problem, like second sight or gun?
Nope, different issue.
My God, this should be the most serious graphics problem in the games I have tested
Castlevania COD look worse ;)
You should take a look at these two files:
I don't think i can help with those titles.
 
Last edited:
Possible fix for Castlevania: Curse of Darkness SLUS_211.68 only
I'm correcting some calculations on VU to get correct clipping. That should remove SPS. At least on PCSX2 it worked without changing clamping. Please test. Issue was massive gfx corruption since start, and after going into chamber. So is easy to check. FYI @sabin1981

Code:
apiRequest(0.1)

-- loi 255.0 to -255.0 to fix cliping calculation
emuMediaPatch(0xba2, 12 + 0x528, { 0x437f0000 }, { 0xc37f0000 })
emuMediaPatch(0xba2, 12 + 0x620, { 0x437f0000 }, { 0xc37f0000 })
 
Possible fix for Castlevania: Curse of Darkness SLUS_211.68 only
I'm correcting some calculations on VU to get correct clipping. That should remove SPS. At least on PCSX2 it worked without changing clamping. Please test. Issue was massive gfx corruption since start, and after going into chamber. So is easy to check. FYI @sabin1981

Code:
apiRequest(0.1)

-- loi 255.0 to -255.0 to fix cliping calculation
emuMediaPatch(0xba2, 12 + 0x528, { 0x437f0000 }, { 0xc37f0000 })
emuMediaPatch(0xba2, 12 + 0x620, { 0x437f0000 }, { 0xc37f0000 })

The European, American and Japanese versions of this game have gfx problems, which are not as perfect as the European version on WIKI, which is misleading. I will apply the configuration you issued and test it.
 
Possible fix for Castlevania: Curse of Darkness SLUS_211.68 only
I'm correcting some calculations on VU to get correct clipping. That should remove SPS. At least on PCSX2 it worked without changing clamping. Please test. Issue was massive gfx corruption since start, and after going into chamber. So is easy to check. FYI @sabin1981

Code:
apiRequest(0.1)

-- loi 255.0 to -255.0 to fix cliping calculation
emuMediaPatch(0xba2, 12 + 0x528, { 0x437f0000 }, { 0xc37f0000 })
emuMediaPatch(0xba2, 12 + 0x620, { 0x437f0000 }, { 0xc37f0000 })

This configuration has no effect。

恶魔城暗黑诅咒(美版)_20200420125402.jpg 恶魔城暗黑诅咒(美版)_20200420125501.jpg 恶魔城暗黑诅咒(美版)_20200420125514.jpg
 
Can you test one more time? This is heavy patch that for sure gonna break something else, i just want to know that issue is really where i'm looking it.

Code:
apiRequest(0.1)

eeInsnReplace(0x92fd28, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92c540, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92c690, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92c868, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92cad8, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92cc28, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92ce28, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92cf08, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92d020, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92d6a0, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92da30, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92ee68, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92eec8, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92ef28, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92f208, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92fc78, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92feb0, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92fef8, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x931310, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x931578, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x9317f0, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x931d48, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x931e88, 0x437f0000, 0xc37f0000)
 

Tenchu 3 SLPS_252.34 Cannot test the integrity of the game, black screen after reading the game。


The CLI configuration is as follows:
--fpu-no-clamping = 0
--fpu-clamp-results = 1
--vu0-no-clamping = 0
--vu0-clamp-results = 1
--vu1-no-clamping = 0
--vu1-clamp-results = 1
--cop2-no-clamping = 0
--cop2-clamp-results = 1
--vu0-opt-flags = 1
--vu1-opt-flags = 1
--cop2-opt-flags = 1
--vu0-const-prop = 0
--vu1-const-prop = 0
--vu1-jr-cache-policy = newprog
--vu1-jalr-cache-policy = newprog
--vu0-jr-cache-policy = newprog
--vu0-jalr-cache-policy = newprog
--vu-xgkick-delay = 8
 
Can you test one more time? This is heavy patch that for sure gonna break something else, i just want to know that issue is really where i'm looking it.

Code:
apiRequest(0.1)

eeInsnReplace(0x92fd28, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92c540, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92c690, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92c868, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92cad8, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92cc28, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92ce28, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92cf08, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92d020, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92d6a0, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92da30, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92ee68, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92eec8, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92ef28, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92f208, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92fc78, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92feb0, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x92fef8, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x931310, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x931578, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x9317f0, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x931d48, 0x437f0000, 0xc37f0000)
eeInsnReplace(0x931e88, 0x437f0000, 0xc37f0000)

Without any help, the graphics problem still exists
 
The official 2D King of Fighters 98UM also has this kind of problem. It should be fixed in LUA. Can it be extracted as a reference?
I have KOF98 config, is different situation. Problem is that most of things like that will be game specific, and require specific patches. Here is KOF98 fix for that from official config.

Code:
apiRequest(2.0)

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

-- Fix bug 10414 - large stretched polygons block view of player characters

local FixPointTable = function()
       
        local s6 = eeObj.GetGpr(gpr.s6)                    -- obj in question
        local p5Tbl = eeObj.ReadMem32(s6+0x10)            -- ptr to object's data
        local numPts = eeObj.ReadMem32(p5Tbl+0x110)        -- num points in list
        local pTbl = 0x1bd6ce0                            -- bg_point_buff (we need to scan this)
        for i = 1, numPts do
            local stat = eeObj.ReadMem32(pTbl + 0xc)    -- check 4th word, should be 0
            if (stat ~= 0) then                            -- if not, we need to fix           
                if (i > 1) then                            -- if this is any but the first entry
                    stat = eeObj.ReadMem64(pTbl-0x10)    -- fix by replacing the x, y with
                    eeObj.WriteMem64(pTbl, stat)        -- the previous entry's x and y.
                    stat = 0x0000000080000000            -- replace the z with 0x80000000
                    eeObj.WriteMem64(pTbl+8, stat)        -- replace the 4th word with 0
                else
                    stat = eeObj.ReadMem32(pTbl + 0x1c)    -- if this is the first entry
                    if (stat == 0) then                    -- make sure the second entry is kosher
                        stat = eeObj.ReadMem64(pTbl+0x10)
                        eeObj.WriteMem64(pTbl, stat)    -- if it is, use the x, y from that entry.
                        stat = 0x0000000080000000        -- replace the z with 0x80000000
                        eeObj.WriteMem64(pTbl+8, stat)    -- replace the 4th word with 0          
                    else
                        eeObj.WriteMem64(pTbl, 0)                        -- if the 2nd entry is not kosher
                        eeObj.WriteMem64(pTbl+8, 0x0000000080000000)    -- write 0, 0, 0x80000000, 0
                    end
                end
            else                                        -- check if Z value is between 0 and 0x8000
                stat = eeObj.ReadMem32(pTbl + 8)        -- if so, overwrite Z with 0x80000000
                if (stat <= 0x8000) then
                    eeObj.WriteMem32(pTbl+8, 0x80000000)
                end
            end
            pTbl = pTbl + 0x10
        end  
end

eeObj.AddHook(0x439dc8, 0x008e150180, FixPointTable)
 
I have KOF98 config, is different situation. Problem is that most of things like that will be game specific, and require specific patches. Here is KOF98 fix for that from official config.

Code:
apiRequest(2.0)

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

-- Fix bug 10414 - large stretched polygons block view of player characters

local FixPointTable = function()
      
        local s6 = eeObj.GetGpr(gpr.s6)                    -- obj in question
        local p5Tbl = eeObj.ReadMem32(s6+0x10)            -- ptr to object's data
        local numPts = eeObj.ReadMem32(p5Tbl+0x110)        -- num points in list
        local pTbl = 0x1bd6ce0                            -- bg_point_buff (we need to scan this)
        for i = 1, numPts do
            local stat = eeObj.ReadMem32(pTbl + 0xc)    -- check 4th word, should be 0
            if (stat ~= 0) then                            -- if not, we need to fix          
                if (i > 1) then                            -- if this is any but the first entry
                    stat = eeObj.ReadMem64(pTbl-0x10)    -- fix by replacing the x, y with
                    eeObj.WriteMem64(pTbl, stat)        -- the previous entry's x and y.
                    stat = 0x0000000080000000            -- replace the z with 0x80000000
                    eeObj.WriteMem64(pTbl+8, stat)        -- replace the 4th word with 0
                else
                    stat = eeObj.ReadMem32(pTbl + 0x1c)    -- if this is the first entry
                    if (stat == 0) then                    -- make sure the second entry is kosher
                        stat = eeObj.ReadMem64(pTbl+0x10)
                        eeObj.WriteMem64(pTbl, stat)    -- if it is, use the x, y from that entry.
                        stat = 0x0000000080000000        -- replace the z with 0x80000000
                        eeObj.WriteMem64(pTbl+8, stat)    -- replace the 4th word with 0         
                    else
                        eeObj.WriteMem64(pTbl, 0)                        -- if the 2nd entry is not kosher
                        eeObj.WriteMem64(pTbl+8, 0x0000000080000000)    -- write 0, 0, 0x80000000, 0
                    end
                end
            else                                        -- check if Z value is between 0 and 0x8000
                stat = eeObj.ReadMem32(pTbl + 8)        -- if so, overwrite Z with 0x80000000
                if (stat <= 0x8000) then
                    eeObj.WriteMem32(pTbl+8, 0x80000000)
                end
            end
            pTbl = pTbl + 0x10
        end 
end

eeObj.AddHook(0x439dc8, 0x008e150180, FixPointTable)

As you said, the situation of each game is different, even if it is the same game, the problems to be fixed in different versions are different. I have the official European version of the King of Fighters 98 configuration. Compared with what you have issued above, they are not the same. Thank you for your contribution to PS3 and PS4 simulation PS2, I know that you no longer have PS4, if there is a new game configuration to be tested, I can provide testing help;)
 
I have the official European version of the King of Fighters 98 configuration. Compared with what you have issued above, they are not the same.
I stripped texture replacement, and shaders from config, that why they aren't the same. ;) Just wanted to point how that exact issue is resolved there. Original config will break game without shader/texture files. One i posted above should work fine on custom iso (with cli from original, and without uprender (set to none)).
 
I stripped texture replacement, and shaders from config, that why they aren't the same. ;) Just wanted to point how that exact issue is resolved there. Original config will break game without shader/texture files. One i posted above should work fine on custom iso (with cli from original, and without uprender (set to none)).

I want to apply the above configuration to the Japanese version of the King of Fighters 98UM for testing. Can you transplant them for me? Because I mostly play the Japanese version in our area, I have some requests! SLPS_25783
 
I want to apply the above configuration to the Japanese version of the King of Fighters 98UM for testing. Can you transplant them for me? Because I mostly play the Japanese version in our area, I have some requests! SLPS_25783
Pm me SLPS_257.83 file. I will see they are differ much
 
Well, that function is different in JPN release. This can not work. But try.

Code:
apiRequest(2.0)

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

-- Fix bug 10414 - large stretched polygons block view of player characters

local FixPointTable = function()
        
        local s6 = eeObj.GetGpr(gpr.s6)                    -- obj in question
        local p5Tbl = eeObj.ReadMem32(s6+0x10)            -- ptr to object's data
        local numPts = eeObj.ReadMem32(p5Tbl+0x110)        -- num points in list
        local pTbl = 0x1D47840                            -- bg_point_buff (we need to scan this)
        for i = 1, numPts do
            local stat = eeObj.ReadMem32(pTbl + 0xc)    -- check 4th word, should be 0
            if (stat ~= 0) then                            -- if not, we need to fix    
                if (i > 1) then                            -- if this is any but the first entry
                    stat = eeObj.ReadMem64(pTbl-0x10)    -- fix by replacing the x, y with
                    eeObj.WriteMem64(pTbl, stat)        -- the previous entry's x and y.
                    stat = 0x0000000080000000            -- replace the z with 0x80000000
                    eeObj.WriteMem64(pTbl+8, stat)        -- replace the 4th word with 0
                else
                    stat = eeObj.ReadMem32(pTbl + 0x1c)    -- if this is the first entry
                    if (stat == 0) then                    -- make sure the second entry is kosher
                        stat = eeObj.ReadMem64(pTbl+0x10)
                        eeObj.WriteMem64(pTbl, stat)    -- if it is, use the x, y from that entry.
                        stat = 0x0000000080000000        -- replace the z with 0x80000000
                        eeObj.WriteMem64(pTbl+8, stat)    -- replace the 4th word with 0           
                    else
                        eeObj.WriteMem64(pTbl, 0)                        -- if the 2nd entry is not kosher
                        eeObj.WriteMem64(pTbl+8, 0x0000000080000000)    -- write 0, 0, 0x80000000, 0
                    end
                end
            else                                        -- check if Z value is between 0 and 0x8000
                stat = eeObj.ReadMem32(pTbl + 8)        -- if so, overwrite Z with 0x80000000
                if (stat <= 0x8000) then
                    eeObj.WriteMem32(pTbl+8, 0x80000000)
                end
            end
            pTbl = pTbl + 0x10
        end   
end

eeObj.AddHook(0x4F4094, 0x8e150180, FixPointTable)
 

Similar threads

Back
Top