PS4 [Research]PS2 emulator configuration on PS4

Also, this
"--fpu-accurate-range=0x28C154,0x28C5B0 #fixes the crash on Chapter 5 in the ambush by Vitt0xLar"
was meant for the Jak emus...maybe that is why it didn't work here?
not sure, on ps3 i was test PAL version, i try with us config now!
 
with ps3 config same - Freeze

Which one did you use? Did you try all 3 versions?

Untitled.jpg
 
Which one did you use? Did you try all 3 versions?

View attachment 36127
If the error is the same as on the PS3, one of the following two versions of the floating point range configuration should help
Code:
NTSC
--fpu-accurate-range=0x28D4BC,0x28D4BC
--fpu-accurate-muldiv=0x28D4BC,0x28D4BC
--fpu-accurate-addsub=0x28D4BC,0x0x28D4BC

Code:
PAL
--fpu-accurate-range=0x28C29C,0x28C29C
--fpu-accurate-muldiv=0x28C29C,0x28C29C
--fpu-accurate-addsub=0x28C29C,0x28C29C
 
In game "Def Jam fight for NY" used this configuration for play Four players:
1player - Pad 1A
2player - Pad 2A
3player - Pad 2B
4player - Pad 2C
it won't work any other way.

have you tried "--matap1=byhost" and "--mtap2=byhost"? that is the only other option you got that is known.
 
WIP fix for Call of Duty 2 - The Big Red One NTSC
CLI

Code:
--gs-uprender=2x2
--gs-upscale=none
--gs-kernel-cl="h2lpool"
--gs-kernel-cl-up="h2lpool2x2"
--gs-h2l-list-opt=1
--gs-h2l-accurate-hash=1
--host-display-mode=16:9
--vu0-mpg-cycles=225
--idec-cycles-per-qwc=650
--ee-cycle-scalar=1.8
--iop-cycle-scalar=1.0

--cdvd-sector-read-cycles=1650

#emu used=jakx v2
LUA
Code:
-- Call of Duty™ 2 - Big Red One
-- ported to PS4
-- emu used=jakx v2

apiRequest(2.0)

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

local FPS = function()
   eeObj.WriteMem32(0x20407F20,0x00000001) --60 fps
end

local patcher = function()
   eeObj.Vu1MpgCycles(math.floor(6300))
--   eeObj.SetVifDataCycleScalar(1, 1.5)
   emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

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

--[[
local frameskip = {}

frameskip.DeterministicMode = 0     -- set 0 for native (non-deterministic) behavior, see function frameskip.GetFramesInQueue()

-- constants:
local CLOCK_EE          = 294912000.0
local CLOCK_EE_60hz      = 294912000.0 / 60
local AdvanceCycleChunkSize = 4400
local ChunksPerFrame      = (CLOCK_EE_60hz / AdvanceCycleChunkSize)
local TaperHoldBaseline     = ChunksPerFrame / 20         -- frames to hold even the smallest taper values
local TaperRatePerFrame     = ChunksPerFrame / 140         -- frames to taper away 1.0 worth of dog-ratio
local TaperHoldPerChunk     = 15.0 / ChunksPerFrame         -- hold for 15 frames per one frame of delay
local EnableTapering     = true

local MaxChunkCounter      = math.floor(ChunksPerFrame * 3.25) -- 

-- globals:
local isFrameDone        = false
local m_counter        = 0
local m_prev_framecount    = 0
local m_taper_peak     = 0
local m_taper_hold       = 0

-- Vars For diagnostic:
local d_truelog        = false
local d_numframes        = 0

frameskip.GetFramesInQueue = function()
   if frameskip.DeterministicMode == 0 then
     return gsObj.GetFramesInQueue()

   elseif frameskip.DeterministicMode == 1 then
     -- five regular frames, four slow frames
     local modulo = (eeObj.GetClock() // CLOCK_EE_60hz) % 9
     if modulo < 5 then
       return 0
     else
       return 3
     end

   elseif frameskip.DeterministicMode == 2 then
     -- nice slow cyclic test!
     local modulo = (eeObj.GetClock() // CLOCK_EE_60hz) % 240
     if modulo < 200 then
       return 0
     else
       return 3
     end

   elseif frameskip.DeterministicMode == 3 then
     -- slow cycle from 0 to 3 and back to 0, across about 10 seconds...
     local modulo = (eeObj.GetClock() // CLOCK_EE_60hz) % 600
     if modulo < 100 then
       return 0
     elseif modulo < 200 then
       return 1
     elseif modulo < 300 then
       return 2
     elseif modulo < 300 then
       return 3
     elseif modulo < 400 then
       return 2
     elseif modulo < 500 then
       return 1
     else
       return 0
     end
   end

   return gsObj.GetFramesInQueue()
end

frameskip.onFrameFinishedHook = function()
   emuObj.CountFrameOnPS2()   -- updates FRAPS/Actual FPS reading in olympus

   -- local cyl_data, cyl_mpg = eeObj.GetVif1Cycles()
   -- print (string.format("data=%6d  mpg=%6d", cyl_data, cyl_mpg))
   
   local frameCount     = frameskip.GetFramesInQueue()
   
   m_counter  = 0
   if frameCount ~= 0 or m_prev_framecount ~= 0 then
     -- Keep in mind here that the incurred cycle delay will be appended after the standard
     -- VIF/VU cycle delays.  Standard delays can be read using eeObj.GetVif1Cycles() as shown
     -- in a print snippet above.
     
     local fcnew  = frameCount
     local fcold  = m_prev_framecount

     -- first frame being a bit slow is often a red herring, because of how the deferred 
     -- EE/GS pipeline works.  So weight it very lightly here (if either fcold or fcnew is
     -- 0 then it'll go negative and help offset remaining 1.0)

     if fcnew < 1.2 then fcnew = fcnew - 0.6 end

     -- Delta from prev to new frame is used to indicate vectoring toward poor perf.
     --  eg. if prev was 1 and new is 3 then ramp up frameskip in a hurry (+2)

     local fcdelta = fcnew - fcold
     fcdelta = (fcdelta >= 0) and (fcdelta / 2.0) or 0

     m_counter      = m_counter + (ChunksPerFrame /  7.5) * (fcnew + fcold + fcdelta)     -- baseline

     -- fcold and fcnew are squared and so to scale back the curve a bit we subtract some
     -- amount from them here:

     fcnew = fcnew - 0.25
     fcold = fcold - 0.40

     m_counter      = m_counter + (ChunksPerFrame / 15.0) * (fcold * fcold)           -- weighted prev slowness
     m_counter      = m_counter + (ChunksPerFrame /  9.0) * (fcnew * (fcnew+fcdelta))     -- weighted current slowness
     
     -- Boundscheck the counter.  Keep in mind that a counter delay of 2 frames will run at ~20fps.
     m_counter  = math.floor(m_counter)
     if m_counter > MaxChunkCounter then m_counter = MaxChunkCounter end
     
     if EnableTapering and m_taper_peak < m_counter then
       m_taper_hold = TaperHoldBaseline + (m_counter * TaperHoldPerChunk)
       m_taper_peak = m_counter
     end
   end

   -- Tapering kind of helps reduce the game's built-in jutter problem... but not really to the
   -- extent that I would like. -- jstine

   local m_origc = m_counter
   if m_counter < m_taper_peak then
     m_counter = math.floor(m_taper_peak)
   end
   
   --print (string.format("onFrameFinished! numFrames=%d,%d counter=%3d taper_hold=%5.1f taper_peak=%5.1f delayInFrames=%5.3f",
   --   m_prev_framecount, frameCount, m_origc, m_taper_hold, m_taper_peak, m_counter / ChunksPerFrame
   --));     

   if m_taper_peak > 0 then
     if m_taper_hold > 0 then
       m_taper_hold = m_taper_hold - 1
     elseif m_origc <= 25 then
       -- TODO make these constants?
       m_taper_peak = m_taper_peak - (m_taper_peak > 112 and TaperRatePerFrame or 0.75)
     end

     -- when taper is a large value, slide it back quickly regardless of hold state
     if m_taper_peak > 450 and m_taper_peak > m_origc then
       m_taper_peak = m_taper_peak * 0.90
     end
   end

   m_prev_framecount = frameCount
   isFrameDone = true     -- enables SpinWaitDelayHook
end

frameskip.SpinWaitDelayHook = function(hookpc, gprv, writeon)
   if not isFrameDone then
     return 
   end

   local numFrames = frameskip.GetFramesInQueue()
   local isSkipping = false
   
   --local numFrames = frameskip.GetFramesInQueue()
   --print (string.format("HOOKED @ 0x%02x - counter=%d numFrames=%d", hookpc, m_counter, numFrames))
   
   if m_counter > 0 then
     --if not d_truelog then
     --   print ( string.format("HOOKED! - numFrames=%d", numFrames))
     --   d_numframes = numFrames
     --end
     --d_truelog = true

     -- SetFrameSkipping call removed because it causes severe frame loss, due to internal scanout
     -- not aligning to when this hook is invoked.  The call was only implemented in order to solve
     -- interlace jitter problems on Jak TPL anyway, and isn't needed here... --jstine
     --gsObj.SetFrameSkipping(true)

     isSkipping = true
   end
   
   if isSkipping then
     --local v0 = eeObj.GetGpr(gprv)
     eeObj.SetGpr(gprv, writeon)
     eeObj.AdvanceClock(AdvanceCycleChunkSize)
     m_counter = m_counter - 1
     -- print ( string.format("SKIPP! - numFrames=%d", numFrames))
   else
     isFrameDone = false
     --gsObj.SetFrameSkipping(false)
     m_counter = 0

     --if d_truelog then
     --   print "BUSY ENDED, RESUMIMG..."
     --end
     --d_truelog = false
   end

   --if d_numframes ~= numFrames then
   --   print ( string.format("Frame Queue Changed - numFrames=%d", numFrames))
   --   d_numframes = numFrames
   --end
end

return frameskip
--]]

Somewhat playable. Needs to get settings right. Almost there
 
add "--mtap1=always" to CLI or TXT (no quotes)

----------------------------------------------------------------
Final Fix for The Getaway Black Monday NTSC
CLI

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

--host-display-mode=16:9

--vu1-di-bits=0
--vu1-opt-flags=2
--fpu-accurate-range=0x28D4BC,0x28D4BC  #fixes the crash on Chapter 5 in the ambush
--ee-cycle-scalar=2.0

--framelimiter=1
--framelimit-fps=60.0
--framelimit-scalar=1

#emu used=star wars racer's revenge v1
LUA
Code:
-- The Getaway - Black Monday (U)(SCUS-97408)
-- Force turn on Native Widescreen (Full boot passing) by Arapapa
-- 60FPS by Asagea @ PCSX2 forums
-- emu used=star wars RR v1

apiRequest(0.4)

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

eeInsnReplace(0x00434e28, 0x30420003, 0x24020002) -- force 16:9 at boot

local patcher = function()

--60FPS
eeObj.WriteMem32(0x20253FF0,0x24020001)
--Unlock All Levels by MadCatz
eeObj.WriteMem32(0x202DBBF0,0x00071820)
eeObj.WriteMem32(0x2029142C,0x24020001)
eeObj.WriteMem32(0x202BA4B0,0x24020001)
--general improvements
eeObj.Vu1MpgCycles(2000)
emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

Perfect so far! Testers needed

Tested. also Chapter 5
 
Improvements for Silent Hill 4 The Room NTSC (all ported from PCSX2 forums)
CLI
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth

--host-display-mode=16:9

#emu used=star ocean v2
LUA
Code:
-- Silent Hill 4: The Room [SLUS-20873] (U)
-- Codes By Maori-Jigglypuff + felixthecat1970
-- NTSC Widescreen code by sergx12
-- ported to ps4
-- emu used=star ocean v2

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

apiRequest(1.3)

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

local patcher = function()
-- Enhance Game Sharpness
eeObj.WriteMem32(0x0013b330,0x240D0000)
-- Constant correct Value 0x00000080 Adjustment to disable overall Fog Effect
eeObj.WriteMem32(0x002e5398,0x64040080)
-- Disable Blur-Effect when Ghost hangs on the Wall in Henrys Room
eeObj.WriteMem32(0x002a50e8,0x0c04088d)
-- Disable local Blur-Effects
eeObj.WriteMem32(0x0024bef4,0x24020000)
-- Disable global Blur-Effects
eeObj.WriteMem32(0x002c4430,0x24020000)
-- No black Borders
eeObj.WriteMem32(0x001a970c,0x24030000)
eeObj.WriteMem32(0x001a972c,0x24030000)
-- Disable Noise Filter, Film Tear Effects
-- and Blur Cones
eeObj.WriteMem32(0x002485e0,0x03E00008)
eeObj.WriteMem32(0x002485e4,0x00000000)
eeObj.WriteMem32(0x00273210,0x03E00008)
eeObj.WriteMem32(0x00273214,0x00000000)
-- Disable World-, Cutscene-, Rooms- and
-- Outside World of Window Renderer
eeObj.WriteMem32(0x001cd1b8,0xac201f00)
-- Create clean Window for Outlook
eeObj.WriteMem32(0x002196bc,0x24100000)
-- 16:9
eeObj.WriteMem32(0x00148564,0x3c013f40) -- 00000000 hor fov
eeObj.WriteMem32(0x00148570,0x4481f000) -- 00000000
eeObj.WriteMem32(0x001485a0,0x461ed683) -- 4600d647
eeObj.WriteMem32(0x001485b4,0x4600d647) -- 00000000
-- FMV fix
eeObj.WriteMem32(0x202f7954,0x3c020380) -- 3c020008 FMV top
eeObj.WriteMem32(0x202f7998,0x34021880) -- 26220008 FMV bottom
-- Black borders fix
eeObj.WriteMem32(0x201A9540,0x24030000) -- 24030001
-- Inventory fix
eeObj.WriteMem32(0x20625D54,0x3F400000) --1
eeObj.WriteMem32(0x20625E24,0x3F400000) --2
eeObj.WriteMem32(0x20625EF4,0x3F400000) --3
eeObj.WriteMem32(0x20625FC4,0x3F400000) --4
eeObj.WriteMem32(0x20626094,0x3F400000) --5
eeObj.WriteMem32(0x20626164,0x3F400000) --6
eeObj.WriteMem32(0x20626234,0x3F400000) --7
eeObj.WriteMem32(0x20626304,0x3F400000) --8
eeObj.WriteMem32(0x206263D4,0x3F400000) --9
eeObj.WriteMem32(0x206264A4,0x3F400000) --10
-- Item box fix
eeObj.WriteMem32(0x20624B54,0x3F400000) --1
eeObj.WriteMem32(0x20624C24,0x3F400000) --2
eeObj.WriteMem32(0x20624CF4,0x3F400000) --3
eeObj.WriteMem32(0x20624DC4,0x3F400000) --4
eeObj.WriteMem32(0x20624E94,0x3F400000) --5
eeObj.WriteMem32(0x20624F64,0x3F400000) --6
eeObj.WriteMem32(0x20625034,0x3F400000) --7
-- Hide licensing
eeObj.WriteMem32(0x2048F0E4,0x00000000)
-- Progressive mode + sharp framebuffer + video nopi (felixthecat1970)
eeObj.WriteMem32(0x2010025C,0x3C050000)
eeObj.WriteMem32(0x20100264,0x3C060050)
eeObj.WriteMem32(0x2010026C,0x3C070001)
eeObj.WriteMem32(0x20100914,0x34021000)
eeObj.WriteMem32(0x001020cc,0x00)
-- not used and why
-- 60 FPS code not complete
-- world renderer disable code crashes PS4 emu at ps2 logo
-- emuObj.ThrottleMax() -- Makes gameplay fast on this game at times

end

emuObj.AddVsyncHook(patcher)

--math.random() + math.random(1, 99)
 
Last edited:
Improvements for Silent Hill 4 The Room NTSC (all ported from PCSX2 forums)
CLI
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth

--host-display-mode=16:9

#emu used=star ocean v2
LUA
Code:
-- Silent Hill 4: The Room [SLUS-20873] (U)
-- Codes By Maori-Jigglypuff + felixthecat1970
-- NTSC Widescreen code by sergx12
-- ported to ps4
-- emu used=star ocean v2

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

apiRequest(1.3)

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

local patcher = function()
-- Enhance Game Sharpness
eeObj.WriteMem32(0x0013b330,0x240D0000)
-- Constant correct Value 0x00000080 Adjustment to disable overall Fog Effect
eeObj.WriteMem32(0x002e5398,0x64040080)
-- Disable Blur-Effect when Ghost hangs on the Wall in Henrys Room
eeObj.WriteMem32(0x002a50e8,0x0c04088d)
-- Disable local Blur-Effects
eeObj.WriteMem32(0x0024bef4,0x24020000)
-- Disable global Blur-Effects
eeObj.WriteMem32(0x002c4430,0x24020000)
-- No black Borders
eeObj.WriteMem32(0x001a970c,0x24030000)
eeObj.WriteMem32(0x001a972c,0x24030000)
-- Disable Noise Filter, Film Tear Effects
-- and Blur Cones
eeObj.WriteMem32(0x002485e0,0x03E00008)
eeObj.WriteMem32(0x002485e4,0x00000000)
eeObj.WriteMem32(0x00273210,0x03E00008)
eeObj.WriteMem32(0x00273214,0x00000000)
-- Disable World-, Cutscene-, Rooms- and
-- Outside World of Window Renderer
eeObj.WriteMem32(0x001cd1b8,0xac201f00)
-- Create clean Window for Outlook
eeObj.WriteMem32(0x002196bc,0x24100000)
-- 16:9
eeObj.WriteMem32(0x00148564,0x3c013f40) -- 00000000 hor fov
eeObj.WriteMem32(0x00148570,0x4481f000) -- 00000000
eeObj.WriteMem32(0x001485a0,0x461ed683) -- 4600d647
eeObj.WriteMem32(0x001485b4,0x4600d647) -- 00000000
-- FMV fix
eeObj.WriteMem32(0x202f7954,0x3c020380) -- 3c020008 FMV top
eeObj.WriteMem32(0x202f7998,0x34021880) -- 26220008 FMV bottom
-- Black borders fix
eeObj.WriteMem32(0x201A9540,0x24030000) -- 24030001
-- Inventory fix
eeObj.WriteMem32(0x20625D54,0x3F400000) --1
eeObj.WriteMem32(0x20625E24,0x3F400000) --2
eeObj.WriteMem32(0x20625EF4,0x3F400000) --3
eeObj.WriteMem32(0x20625FC4,0x3F400000) --4
eeObj.WriteMem32(0x20626094,0x3F400000) --5
eeObj.WriteMem32(0x20626164,0x3F400000) --6
eeObj.WriteMem32(0x20626234,0x3F400000) --7
eeObj.WriteMem32(0x20626304,0x3F400000) --8
eeObj.WriteMem32(0x206263D4,0x3F400000) --9
eeObj.WriteMem32(0x206264A4,0x3F400000) --10
-- Item box fix
eeObj.WriteMem32(0x20624B54,0x3F400000) --1
eeObj.WriteMem32(0x20624C24,0x3F400000) --2
eeObj.WriteMem32(0x20624CF4,0x3F400000) --3
eeObj.WriteMem32(0x20624DC4,0x3F400000) --4
eeObj.WriteMem32(0x20624E94,0x3F400000) --5
eeObj.WriteMem32(0x20624F64,0x3F400000) --6
eeObj.WriteMem32(0x20625034,0x3F400000) --7
-- Hide licensing
eeObj.WriteMem32(0x2048F0E4,0x00000000)
-- Progressive mode + sharp framebuffer + video nopi (felixthecat1970)
eeObj.WriteMem32(0x2010025C,0x3C050000)
eeObj.WriteMem32(0x20100264,0x3C060050)
eeObj.WriteMem32(0x2010026C,0x3C070001)
eeObj.WriteMem32(0x20100914,0x34021000)
eeObj.WriteMem32(0x001020cc,0x00)
-- not used and why
-- 60 FPS code not complete
-- world renderer disable code crashes PS4 emu at ps2 logo
-- emuObj.ThrottleMax() -- Makes gameplay fast on this game at times

end

emuObj.AddVsyncHook(patcher)

--math.random() + math.random(1, 99)
test almost same config few months ago
 

Similar threads

Back
Top