PS4 [Research]PS2 emulator configuration on PS4

Men you're incredible !
If possible i'm interested by PAL conversion of "disables" stuff for Shaolin Monks.
Code:
-- Mortal Kombat Shaolin Monks PAL(SLES_535.24)

--Disable Bloom
eeObj.WriteMem32(0x004F4E38,0x0)
--Disable Fog
eeObj.WriteMem32(0x004F4ED8,0x0)
--Disable Light on Characters Skills
eeObj.WriteMem32(0x004F4F68,0x0)
--Disable Characters Skinning
eeObj.WriteMem32(0x004F4F14,0x0)
 
Fix for The Getaway NTSC
CLI

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

--host-display-mode=16:9

--vu1-di-bits=0
--vu1-no-clamping=0

--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 NTSC
-- 60FPS by Asaega @PCSX2 forums
-- ported to PS4 Lua
-- emu used=star wars racer's revenge v1

apiRequest(0.4)

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

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

local patcher = function()
--60 fps
eeObj.WriteMem32(0x201F10E8,0x1000000B)
eeObj.Vu1MpgCycles(2000)
emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(patcher)

Just about perfect. Emu used is a MUST. All other emus I tried have stutter at title screen and slight in other places. This one is almost perfect for some reason...

Really hard game mate!
 
WIP fix for Mercenaries 2 - World in Flames NTSC
CLI

Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth
--gs-kernel-cl="h2lpool"
--gs-kernel-cl-up="h2lpool2x2"
--gs-h2l-list-opt=1
--gs-h2l-accurate-hash=1

--mfifo-manual-drain=25.5  #[frame_multiplier/float]
--mfifo-chunk-drain-cycles=550  #[cycles/int]

--ee-block-validation=none         
--ee-regalloc-scalar=RW       

--ee-const-folding=all
--ee-cycle-scalar=2.1

--iop-cycle-scalar=0.95

--host-display-mode=16:9

#emu used=jakx v2
LUA
Code:
-- Mercenaries 2 - World in Flames (U)(SLUS-21650)
-- Widescreen Hack by ElHecht, Arapapa
-- ported to PS4
-- emu used=jakx v2

apiRequest(2.0)

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

local patcher = function()
-- 16:9 
eeObj.WriteMem32(0x0037ce68,0x3c013f40) -- 00000000 hor fov
eeObj.WriteMem32(0x0037ce70,0x4481f000) -- 00000000 fov
eeObj.WriteMem32(0x0037ceb0,0x4600f306) -- 44816000 fov
--Render fix(objects) by Arapapa
--003f013c 00088144 1000b07f (2nd)
eeObj.WriteMem32(0x003811b4,0x3c013f2b) -- 3c013f00
--00608144 2d20a003 80bf013c
eeObj.WriteMem32(0x003896e8,0x4600f306) -- 44816000 renderfix 2 smoke and fire
--42080346 02000346 40080446
eeObj.WriteMem32(0x0037b748,0x081287e8) -- 46030842 hud-identification fix
eeObj.WriteMem32(0x0037b74c,0x00000000) -- 46030002 hud-identification fix
eeObj.WriteMem32(0x004a1fa0,0x46030842) -- 00000000 hud-identification fix
eeObj.WriteMem32(0x004a1fa4,0x46030002) -- 00000000 hud-identification fix
eeObj.WriteMem32(0x004a1fa8,0x461e0002) -- 00000000 hud-identification fix
eeObj.WriteMem32(0x004a1fac,0x080dedd3) -- 00000000 hud-identification fix

--eeObj.WriteMem32(0x203FD4F8,0x2C420001) -- 60FPS 
eeObj.Vu1MpgCycles(math.floor(2250))
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 = 2500
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     = 10.0 / ChunksPerFrame         -- hold for 15 frames per one frame of delay
local EnableTapering     = true

local MaxChunkCounter      = math.floor(ChunksPerFrame * 2.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

Need some help on this one....

 
WIP fix for Mercenaries 2 - World in Flames NTSC
CLI

Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth
--gs-kernel-cl="h2lpool"
--gs-kernel-cl-up="h2lpool2x2"
--gs-h2l-list-opt=1
--gs-h2l-accurate-hash=1

--mfifo-manual-drain=25.5  #[frame_multiplier/float]
--mfifo-chunk-drain-cycles=550  #[cycles/int]

--ee-block-validation=none        
--ee-regalloc-scalar=RW      

--ee-const-folding=all
--ee-cycle-scalar=2.1

--iop-cycle-scalar=0.95

--host-display-mode=16:9

#emu used=jakx v2
LUA
Code:
-- Mercenaries 2 - World in Flames (U)(SLUS-21650)
-- Widescreen Hack by ElHecht, Arapapa
-- ported to PS4
-- emu used=jakx v2

apiRequest(2.0)

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

local patcher = function()
-- 16:9
eeObj.WriteMem32(0x0037ce68,0x3c013f40) -- 00000000 hor fov
eeObj.WriteMem32(0x0037ce70,0x4481f000) -- 00000000 fov
eeObj.WriteMem32(0x0037ceb0,0x4600f306) -- 44816000 fov
--Render fix(objects) by Arapapa
--003f013c 00088144 1000b07f (2nd)
eeObj.WriteMem32(0x003811b4,0x3c013f2b) -- 3c013f00
--00608144 2d20a003 80bf013c
eeObj.WriteMem32(0x003896e8,0x4600f306) -- 44816000 renderfix 2 smoke and fire
--42080346 02000346 40080446
eeObj.WriteMem32(0x0037b748,0x081287e8) -- 46030842 hud-identification fix
eeObj.WriteMem32(0x0037b74c,0x00000000) -- 46030002 hud-identification fix
eeObj.WriteMem32(0x004a1fa0,0x46030842) -- 00000000 hud-identification fix
eeObj.WriteMem32(0x004a1fa4,0x46030002) -- 00000000 hud-identification fix
eeObj.WriteMem32(0x004a1fa8,0x461e0002) -- 00000000 hud-identification fix
eeObj.WriteMem32(0x004a1fac,0x080dedd3) -- 00000000 hud-identification fix

--eeObj.WriteMem32(0x203FD4F8,0x2C420001) -- 60FPS
eeObj.Vu1MpgCycles(math.floor(2250))
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 = 2500
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     = 10.0 / ChunksPerFrame         -- hold for 15 frames per one frame of delay
local EnableTapering     = true

local MaxChunkCounter      = math.floor(ChunksPerFrame * 2.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

Need some help on this one....

Can you fix the game DT Carnage ?
@Vika23 tested this game few months ago and the cars kept falling off the ground
 
Fix/Improvement for Clock Tower 3 NTSC
CLI

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

--host-display-mode=16:9

--ee-cycle-scalar=1.0
--iop-cycle-scalar=1.0

#emu used=rogue v1
LUA
Code:
-- Clock Tower 3
-- emu used=rogue v1

apiRequest(0.1) 

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

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

local patcher = function()
--gameplay by hyakki
eeObj.WriteMem32(0x01939d28,0x3f1fbe77)
--FMV's fix by nemesis2000
eeObj.WriteMem32(0x018bd568,0x3c026fa0)
eeObj.WriteMem32(0x018bd5b8,0x34028260)

eeObj.WriteMem32(0x018bcf38,0x3c026fa0)
eeObj.WriteMem32(0x018bcf84,0x34028260)
--black borders fix by nemesis2000
eeObj.WriteMem32(0x018f37e4,0x3c030000)
--remove black square near Panic Meter
eeObj.WriteMem32(0x2041C240,0x00000000)
--60FPS
eeObj.WriteMem32(0x218A8760,0x00000000)

end

emuObj.AddVsyncHook(patcher)

Works great! 60fps added with no notable penalty. More testing needed.

Test it, works very good!
 
That is the weirdest sh... It's like the sparks and particles have mass and your car runs into them or get launched off them. I wouldn't have the first clue... look like some math is getting messed up in a big way
Yeah looks like the ground and walls are not solid, probrably v-sync related ?
Also did you checked on other emulators ?
 
Here's a potential fix for the remaining slowdown of Mortal Kombat: Shaolin Monks (SLUS-21087):
Code:
eeInsnReplace(0x23e188, 0x14440011, 0x10000011)
Awsome!!
Please any ideas how to fix x men legends 2
General laging, and specially when too much stuff going on,and when the camera moves slightly behind the characters

another issue is and i think it causing ce error is when you view the characters in the change characters option,the characters are almost black.
Thank you for reading
 
Four pads on PS4 in games PS2

For game ps2 Def jam fight for NY i need to configure PS2-FPKG or PS2 Classics GUI this:
1player - Pad 1A
2player - Pad 2A
3player - Pad 2B
4player - Pad 2C
how to do it.
 
Four pads on PS4 in games PS2

For game ps2 Def jam fight for NY i need to configure PS2-FPKG or PS2 Classics GUI this:
1player - Pad 1A
2player - Pad 2A
3player - Pad 2B
4player - Pad 2C
how to do it.
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
 
Last edited:
add "--mtap1=always" to CLI or TXT (no quotes)
Bro! its command "--mtap1=always" or "--mtap2=always" activate this:
1player - Pad 1A
2player - Pad 1B
3player - Pad 1C
4player - Pad 1D
or
1player - Pad 2A
2player - Pad 2B
3player - Pad 2C
4player - Pad 2D

i need this:
1player - Pad 1A
2player - Pad 2A
3player - Pad 2B
4player - Pad 2C
 
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=0x28C154,0x28C5B0  #fixes the crash on Chapter 5 in the ambush by Vitt0xLar
--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
year ago i test fix from @mrjaredbeta for ps3 and Chapter 5 is work on ps3
But i have all chapters unlocked, that will easy to test
 
MK - Shaolin Monks PAL SLES-53524 Looks awesome now !
Thanks to all !

CLI
Code:
--gs-uprender=2x2
--gs-upscale=EdgeSmooth
--gs-adaptive-frameskip=1
--vif1-instant-xfer=0
--ee-cycle-scalar=1.62
--iop-cycle-scalar=0.78
--vu1-di-bits=0
--cdvd-sector-read-cycles=3000
--host-vsync=1

LUA
Code:
-- Mortal Kombat - Shaolin Monks (SLES-53524)
-- emu used=jakx v2

apiRequest(2.3)

local gpr  = require("ee-gpr-alias")
local cpr  = require("ee-cpr0-alias")
local hwaddr  = require("ee-hwaddr")

local emuObj  = getEmuObject()
local eeObj  = getEEObject()
local gsObj  = getGsObject()
local eeOverlay  = eeObj.getOverlayObject()

local thresholdArea = 600
 
emuObj.SetDisplayAspectWide()
gsObj.SetDeinterlaceShift(1)

eeInsnReplace(0x23e418, 0x14440011, 0x10000011) -- speed fix alt

local WS = function()

eeObj.Vu1MpgCycles(777)

-----------speed fix combo---------------
--Disable Bloom
eeObj.WriteMem32(0x004F4E38,0x0)
--Disable Fog
eeObj.WriteMem32(0x004F4ED8,0x0)
--Disable Light on Characters Skills
eeObj.WriteMem32(0x004F4F68,0x0)
--Disable Characters Skinning
eeObj.WriteMem32(0x004F4F14,0x0)

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(WS)
if u want u will also try
//All Kontent And Vs Characters Open
patch=1,EE,205D8588,extended,FFFFFFFF
patch=1,EE,205D858C,extended,FFFFFFFF
patch=1,EE,205D8590,extended,FFFFFFFF
patch=1,EE,205D8594,extended,FFFFFFFF
patch=1,EE,205D8598,extended,FFFFFFFF
patch=1,EE,205D859C,extended,FFFFFFFF
patch=1,EE,205D85A0,extended,FFFFFFFF
patch=1,EE,205D85A4,extended,FFFFFFFF
patch=1,EE,205D85A8,extended,FFFFFFFF
patch=1,EE,205D85AC,extended,FFFFFFFF
 
Bro! its command "--mtap1=always" or "--mtap2=always" activate this:
1player - Pad 1A
2player - Pad 1B
3player - Pad 1C
4player - Pad 1D
or
1player - Pad 2A
2player - Pad 2B
3player - Pad 2C
4player - Pad 2D

i need this:
1player - Pad 1A
2player - Pad 2A
3player - Pad 2B
4player - Pad 2C
Don't understand....why does it need to be in this weird configuration?
 
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=0x28C154,0x28C5B0  #fixes the crash on Chapter 5 in the ambush by Vitt0xLar
--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
Was test it, stutter in menu (but its ok). Finish 1st misson, all is fine, decide check misson №5 and its freeze after car was attaked!
 

Similar threads

Back
Top