Editing Talk:PSP Emulator Compatibility List

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 3: Line 3:


<pre>
<pre>
Configuration files created by users to improve PSP emulator compatibility on PS4.
Configuration files created by users, to improve PSP emulator compatibility on PS4.
</pre>
</pre>
===God Of War - Ghost Of Sparta===
===God Of War - Ghost Of Sparta===
'''config-title.txt'''
<br>UCUS98732
<br>UCUS98737
<br>CLI
<pre>
<pre>
--antialias=off
--antialias=off
Line 13: Line 13:
--forcenobilinear=true
--forcenobilinear=true
</pre>
</pre>
'''LUA'''
 
<br>UCUS98732
<br>UCUS98732
<br>'''LUA'''
<pre>
<pre>
local axObj = getAXObject()
local axObj = getAXObject()
Line 21: Line 22:
local patcher = function()
local patcher = function()


axObj.WriteMem32(0x8A15208,0x0)
axObj.WriteMem32(0x08A15210,0x24020000)
axObj.WriteMem32(0x08A15210,0x24020000)
end
end


emuObj.AddVsyncHook(patcher)
emuObj.AddVsyncHook(patcher)
</pre>
<pre>
PPSSPP
0881681C
</pre>
===God of War: Chains of Olympus===
'''config-title.txt'''
<br>UCUS98653
<pre>
--texclutmode=filter
--bend-30hz-lock=1
--godofwarhack=true
</pre>
===Dante's Inferno===
'''config-title.txt'''
<br>ULUS10469
<pre>
--antialias=off
--texloadcores=48
--texclutmode=full
--vramcopyback=12
--locorocomeshsmooth=true
--texrecent=true
--umddelay=true
--depthscalehack=true
--forcenobilinear=true
--smoothlevel=0
</pre>
'''LUA'''
<br>UCUS98732
<pre>
-- Dantes Inferno
apiRequest(1.0)  -- request version 1.0 API. Calling apiRequest() is mandatory.
local emuObj  = getEmuObject() -- emulator
local axObj  = getAXObject() -- allegrex
local patcher = function()
--30 FPS
local code_check1 = axObj.ReadMem16(0x001C239C)
local code_check2 = axObj.ReadMem16(0x103E4B40)
if code_check1 == 0x0064 and  code_check2 == 0x001E then
axObj.WriteMem32(0x203E4B40,0x0000001E)
axObj.WriteMem32(0x20022EE4,0x3D088889) --1/30 = 0.03333
end
end
emuObj.AddVsyncHook(patcher)
</pre>
===Tekken 6===
'''config-title.txt'''
<br>ULUS10466
<pre>
--has-shown-start-select-help=0
--userui-settings-graphics=1
--globalgamedata-dir=global
--bend-30hz-lock=0
--replacementfilter=true
--depthscalehack=true
--texcachemode=patchworkheroes
--texloadcores=16
--present=vblankstart
--texclutmode=full
--texrecent=true
--force-dsf-present=1
--gputhread=true
--gpu-renderthread=20
--force-triangle-clip-off=true
--umddelay=true
# Emu used = Syphon Filter Dark Mirror
</pre>
===Soulcalibur: Broken Destiny===
'''config-title.txt'''
<br>ULUS10457
<pre>
--has-shown-start-select-help=0
--userui-settings-graphics=1
--globalgamedata-dir=global
--trophies=0
--umddelay=true
--bend-30hz-lock=0
--present=setframebuf #,setframebuf,drawsync
--texclutmode=filter  #,full
--texloadmode=launch  #ondemand_lz4
--depthscalehack=true
--texloadcores=8
--texrecent=true  #async, lastused
# Emu used = Syphon Filter Dark Mirror
</pre>
===Miami Vice: The Game===
'''config-title.txt'''
<br>ULUS10109
<pre>
--antialias=off
--texclutmode=full
--texloadcores=12
--texcachemode=patchworkheroes
--present=setframebuf
--texrecent=true
--umddelay=true
--smoothlevel=0
</pre>
===Wild Arms XF===
'''config-title.txt'''
<br>ULUS10339
<pre>
--title-id=ULUS10339
--has-shown-start-select-help=0
--vms=/temp0/vms
--ms0=/temp0/ms0
--multisaves=true
--notrophies=true
--antialias="off" #ssaa4x off msaa4x
--texcachemode=rondo #drawbounds,drawboundsloco,patchworkheroes,locoroco2,rondo
--texloadcores=10
--present=drawsync
--gputhread=true
--texrecent=true
--texclutmode=full
</pre>
===Burnout Dominator===
'''config-title.txt'''
<br>ULUS10236
<pre>
---title-id=ULUS10236
--multisaves=true
--notrophies=true
--vms=/temp0/vms
--has-shown-start-select-help=1
--antialias="off"
--texclutmode=full
--texloadcores=12
--texcachemode=patchworkheroes
--present=setframebuf
--texrecent=true
--umddelay=true
</pre>
'''ULUS10236_patches.lua'''
<br>ULUS10236
<pre>
-- Burnout Dominator
-- lua by Stayhye
apiRequest(1.0)  -- request version 1.0 API. Calling apiRequest() is mandatory.
local emuObj  = getEmuObject() -- emulator
local axObj  = getAXObject() -- allegrex
local patcher = function()
--30 FPS V.2 [Default]
local code_check1 = axObj.ReadMem16(0x02574C)
if code_check1 == 0x0000 then
axObj.WriteMem32(0x2002574C,0x14A0001A)
axObj.WriteMem32(0x201A0358,0xE60C0034)
axObj.WriteMem32(0x204F08BC,0x3D088888)
axObj.WriteMem32(0x2019AE90,0x3C043F80)
end
--[[
--60 FPS V.2
local code_check2 = axObj.ReadMem16(0x02574C)
if code_check2 == 0x001A then
axObj.WriteMem32(0x2002574C, 0x00000000)
axObj.WriteMem32(0x201A0358, 0x00000000)
axObj.WriteMem32(0x204F08BC, 0x3C888888)
axObj.WriteMem32(0x2019AE90, 0x3C043F00)
end
--]]
end
emuObj.AddVsyncHook(patcher)
emuObj.SetTextureHashMode("patchworkheroes")
</pre>
===Tom Clancy's Ghost Recon Advanced Warfighter 2===
'''config-title.txt'''
<br>ULUS10237
<pre>
# Ghost Recon: Advanced Warfighter 2 (all regions)
--has-shown-start-select-help=1
--antialias=off
--texclutmode=full
--bend-30hz-lock=0
--texloadcores=12
--texcachemode=patchworkheroes
--present=setframebuf
--texrecent=true
--umddelay=true
--smoothlevel=0
--forcenobilinear=true
--active-sku="ULUS10237"
--title-id=ULUS10237
--psp-right-stick-action=1
--psp-right-stick-deadzone-x=15
--psp-right-stick-deadzone-y=15
--psp-right-stick-deadzone-semicircle-arc=40
#  Emu used = Syphon Filter Dark Mirror
</pre>
===Call of Duty: Roads to Victory===
'''config-title.txt'''
<br>ULES00643
<pre>
# Call of Duty: Roads to Victory (all regions)
--has-shown-start-select-help=1
--bend-30hz-lock=0
--antialias=off
--texclutmode=full
--texloadcores=12
--texcachemode=patchworkheroes
--present=setframebuf
--texrecent=true
--umddelay=true
--forcenobilinear=true
--active-sku="ULES00643"
--title-id=ULES00643
--psp-right-stick-action=1
--psp-right-stick-deadzone-x=15
--psp-right-stick-deadzone-y=15
--psp-right-stick-deadzone-semicircle-arc=40
--app-volume=0.8
#  Emu used = Syphon Filter Dark Mirror
</pre>
===SpongeBob's Truth or Square===
'''config-title.txt'''
<br>ULUS10478
<pre>
# SpongeBob's Truth or Square (all regions)
--has-shown-start-select-help=1
--bend-30hz-lock=1
--force-dsf-present=1
--forcenobilinear=true
--depthscalehack=true
--active-sku="ULUS10478"
--title-id=ULUS10478
--antialias=off
--texloadcores=48
--texcachemode=patchworkheroes
--present=setframebuf
--texrecent=true
--umddelay=true
--smoothlevel=0
--texclutmode=full 
--vramcopyback=12
--locorocomeshsmooth=true
--gpu-renderthread=20
# following settings are machine-generated
--region-dir=SIEA
--ps4-trophies=0
--ps5-uds=0
--trophies=0
--globalgamedata-dir=global
# Emu used = Syphon Filter Dark Mirror
</pre>
===Harvest Moon Hero of Leaf Valley===
'''config-title.txt'''
<br>ULUS10458
<pre>
# Harvest Moon Hero of Leaf Valley (all regions)
--has-shown-start-select-help=1
--bend-30hz-lock=0
--force-dsf-present=1
--depthscalehack=true
--gpu-renderthread=20
--antialias="msaa4x"
--anisolevel=4
--texclutmode=full
--texloadcores=48
--texcachemode=patchworkheroes
--present=vblankstart
--texrecent=true
--umddelay=true
--smoothlevel=0
--locorocomeshsmooth=true
--active-sku="ULUS10458"
--title-id=ULUS10458
# following settings are machine-generated
--region-dir=SIEA
--ps4-trophies=0
--ps5-uds=0
--trophies=0
--globalgamedata-dir=global
# Emu used = Syphon Filter Dark Mirror
</pre>
===Gurumin: A Monstrous Adventure===
'''config-title.txt'''
<br>ULUS10228
<pre>
# Gurumin: A Monstrous Adventure (all regions)
--image="data/USER_L0.IMG"
--title-id=ULUS10228
 
--gpu-renderthread=0
--antialias=ssaa4x
--texclutmode=full
--smoothlevel=0
--texcachemode=patchworkheroes
--present=vblankstart
--texrecent=true
--umddelay=true
--gputhread=true
--vramcopyback=45
--texloadcores=48
--locorocomeshsmooth=true
--depthscalehack=true
--multisaves=true
--notrophies=true
# Emu used = Ridge Racer 2
</pre>
</pre>


Line 400: Line 33:
A place for research and sharing useful info.</pre>
A place for research and sharing useful info.</pre>
===Crash Tag Team Racing===
===Crash Tag Team Racing===
'''LUA'''
<br>ULUS10044
<br>ULUS10044
<pre>
<pre>
Line 408: Line 40:


===YU-GI-OH! 5D's Tag Force 4===
===YU-GI-OH! 5D's Tag Force 4===
'''LUA'''
<br>ULUS10481
<br>ULUS10481
<pre>
<pre>
local axObj = getAXObject()
Crashes with the RA register being here: 0x088187C0 lb v0,0x4(s0).
local emuObj = getEmuObject()


local patcher = function()
But before that, the pc register hits here and crashes later on: 0x08819088 jal zz_sceKernelLoadModule
 
axObj.WriteMem32(0x8818780,0x10000025)
end
 
emuObj.AddVsyncHook(patcher)
</pre>
</pre>


Line 425: Line 50:
<pre>Configuration files extracted from official packages to improve PSP emulator compatibility on PS4
<pre>Configuration files extracted from official packages to improve PSP emulator compatibility on PS4
</pre>
</pre>
===Syphon Filter: Dark Mirror===
'''config-title.txt'''
<br>UCUS98641
<pre>
# SyphonFilterDarkMirror (all regions)
--texclutmode=filter
--bend-30hz-lock=1
--psp-right-stick-action=1
--psp-right-stick-deadzone-x=15
--psp-right-stick-deadzone-y=15
--psp-right-stick-deadzone-semicircle-arc=40
--app-volume=0.8
# following settings are machine-generated
--region-dir=SIEA
--ps4-trophies=1
--ps5-uds=1
--trophies=1
--globalgamedata-dir=global
</pre>
'''UCUS98641_patches.lua'''
<pre>
-- Lua 5.3
-- Title: Syphon Filter: Dark Mirror
-- Patches for fixing issues with post fx in games using the Syphon Filter/Resistance engine
apiRequest(1.0) -- request version 1.0 API. Calling apiRequest() is mandatory.
local emuObj = getEmuObject()
local cpu = getAXObject()
-- The bloom filter uses 1.5 pixel jitter to make a ghetto blur. When up-ressed, this doesn't look good.
-- To compensate, reduce the jitter amount before rendering.
function BloomJitterPlusAdjust()
-- 1.5 pixel "+" pattern
emuObj.AdjustUVJitter(0, 4, 0.0, 1.5)
emuObj.AdjustUVJitter(4, 4, 0.0, -1.5)
emuObj.AdjustUVJitter(8, 4, 1.5, 0.0)
emuObj.AdjustUVJitter(12, 4, -1.5, 0.0)
end
function BloomJitterCrossAdjust()
-- 1.5 pixel "x" pattern
emuObj.AdjustUVJitter(0, 4, 1.5, 1.5)
emuObj.AdjustUVJitter(4, 4, -1.5, 1.5)
emuObj.AdjustUVJitter(8, 4, 1.5, -1.5)
emuObj.AdjustUVJitter(12, 4, -1.5, -1.5)
end
local jitterFixPlus = emuObj.AddGPUHook(0x40dc000, 0, 16, 0x40d4000, BloomJitterPlusAdjust)
local jitterFixCross = emuObj.AddGPUHook(0x40d4000, 0, 16, 0x40dc000, BloomJitterCrossAdjust)
function depthquery()
local querystruct = 0x8eda968 -- this is always in a fixed location
-- the depth query struct is fixed to 24 entries
-- 0..15 seem to be always used for lights, 16..23 are for npcs
for i=0,23 do
local querytype = cpu.ReadMem32(querystruct+0)
local valid = cpu.ReadMem32(querystruct+1*4)
if valid ~= 0xffffffff then
--local queryx = cpu.ReadMem32(querystruct+2*4)
--local queryy = cpu.ReadMem32(querystruct+3*4)
--local querydepth = cpu.ReadMem32(querystruct+4*4)
--local querywidth = cpu.ReadMem32(querystruct+5*4)
--local queryheight = cpu.ReadMem32(querystruct+6*4)
--local param1c = cpu.ReadMem32(querystruct+7*4)
--local param20 = cpu.ReadMem32(querystruct+8*4)
local param24 = cpu.ReadMem32(querystruct+9*4)
--local result = cpu.ReadMemFloat(querystruct+10*4)
if param24 <= 0 then
cpu.WriteMem32(querystruct+1*4, 0xffffffff) -- to be removed from the list -> mark as invalid
else
if querytype == 3 then -- n x n coverage based occlusion used by lights. Object opacity is set to (visible_samples / total_samples)
cpu.WriteMemFloat(querystruct+10*4, 0.0) -- always hide lights
else -- Enemies use a 5-point (corners + center) occlusion check. Object is visible if any of the points is visible.
cpu.WriteMemFloat(querystruct+10*4, 1.0) -- set always visible
end
end
end
querystruct = querystruct + 0x2c
end
end
cpu.AddHook(0x8c163d4, 0x27bdff80, depthquery) -- = addiu sp, sp, -0x80
-- the hook code replaces the occlusion function, so just adjust the stack and return
cpu.InsnReplace(0x8c163d8, 0x34040000, 0x27bd0080) -- addiu sp, sp, 0x80
cpu.InsnReplace(0x8c163dc, 0xafa40048, 0x03e00008) -- jr ra
cpu.InsnReplace(0x8c163e0, 0x3c0408ee, 0x00000000) -- nop
</pre>
===Echochrome===
'''config-title.txt'''
<br>UCES01011
<pre>
# Echochrome (all regions)
# following settings are machine-generated
--region-dir=SIEA
--ps4-trophies=0
--ps5-uds=0
--trophies=0
</pre>
'''config-region.txt'''
<pre>
--image="data/USER_L0.IMG"
--antialias=SSAA4x
--multisaves=true
--notrophies=true
</pre>
'''NPUG80135_patches.lua'''
<pre>
-- Lua 5.3
-- Title: Echochrome  NPUG 80135  (US)
--  WBD  5/10/2022 prevent Console Msg about Memory Stick from being displayed
--  WBD  5/22/2022  remove Send and Receive menu options
apiRequest(1.0) -- request version 1.0 API. Calling apiRequest() is mandatory.
local gpr = require( "ax-gpr-alias" ) -- you can access Allegrex GPR by alias (gpr.a0 / gpr["a0"])
local emuObj = getEmuObject()
local cpu = getAXObject()
local hook = 0x88468f0
function SkipMsg()
local v1 = cpu.GetGpr(gpr.v1)
local v0 = cpu.GetGpr(gpr.v0)
cpu.SetGpr(gpr.a0, v1)
cpu.SetGpr(gpr.v0, 0)
cpu.WriteMem32(v1+4, v0)
cpu.SetPC(hook+0xc)
print "_NOTE: Skipping Memory Stick Message"
end
cpu.AddHook(hook, 0x00602021, SkipMsg)
function DisableSendReceive()
cpu.WriteMem32(0x8909940, 0) -- overwrite Send with 0
cpu.WriteMem32(0x890991c, 0) -- overwrite Receive with 0
end
cpu.AddHook(0x8846fb4, 0xae130090, DisableSendReceive)
</pre>
===LocoRoco Midnight Carnival===
'''config-title.txt'''
<br>NPEG00024
<pre>
# LocorocoMidnightCarnival (all regions)
--ps5-uds=0# following settings are machine-generated
--region-dir=SIEE
--ps4-trophies=0
--ps5-uds=0
--trophies=0
</pre>
'''config-region.txt'''
<pre>
; Windows configuration file for PSPHD
; Game Image
--image="data\USER_L0.IMG"
; Use this to run the automatic font dumper.
;--boot="host0:../tools/glyphdump.prx"
; Uncomment these to play around with font dumping.
;--fontsave="host0:fontdump"
;--fontreplace="host0:fontreplace"
; Scaling factor (Windows only - 1: 480x272, 2: 960x544, 3: 1440x816, 4: 1920x1088 ... 8: 3840x2176)
--scale=3
; Language selection (Windows only - the PS4 version auto-selects based on the PS4 language setting)
; Switch the PSP language to one of the following:
; "en": English (default)
; "jp": Japanese
; "fr": French
; "es": Spanish
; "de": German
; "it": Italian
; "nl": Dutch
; "pt": Portuguese
; "ru": Russian
; "ko": Korean
; "chs": Chinese Simplified
; "cht": Chinese Traditional
;--lang="en"
; Redirect host0: to a another directory (uncomment to enable).
; By default it's mapped to the working directory where the executable starts
;--host="D:\Sony\PSPHD"
; To dump the original video in PMF format, uncomment the --dumpvideos line
; For example, with the current setting, it will save them in a "D:\Sony\PSPHD\videos" directory (make sure the directory exists)
;--dumpvideos="host0:videos"
; To dump the original audio in Atrac3 format, uncomment the --dumpaudio line
; For example, with the current setting, it will save them in a "D:\Sony\PSPHD\audio" directory (make sure the directory exists)
;--dumpaudio="host0:audio"
; To save the in-game textures as the game runs, uncomment the --texsave line
; For example, with the current setting, it will save them in a "D:\Sony\PSPHD\texdump" directory (make sure the directory exists)
;--texsave="host0:texdump"
;--texmissingsave="host0:texdump"
; To replace specific textures as the game runs, uncomment the --texreplace line
; For example, with the current setting, it will load them from the "D:\Sony\PSPHD\texreplace" directory
; If the --scale setting is set to 4 or 8, the program will also look for replacement textures on '4x' or '8x' directories within this directory
;--texreplace="host0:texreplace"
; This forces alpha blending to on for replaced textures. (uncomment to enable)
; With this we can freely make use of a normal alpha channel on replacement textures
;--replacementalpha=true
; This enables bilinear filtering on replaced textures. (uncomment to enable)
;--replacementfilter=true
; Antialiasing mode. SSAA4x looks best, MSAA4x only smooths edges.
; Choices: off, SSAA4x, MSAA4x
--antialias=SSAA4x
; Allows to switch between replacement and original textures using L3 on the DS4 or the T key.
;--texswitch=true
; Turns on the auto-resampler. Assumes textures in texreplace are at 8x resolution and resamples them at load
;--autoresampler=true
; Turns on filtering of CLUT hashes to avoid repeat indexed textures
;--texclutmode=filter
; Enable Multiple Savegames
--multisaves=true
; Custom locoroco2 texture hasher
;--texcachemode="locoroco2"
</pre>
'''NPEG00024_patches.lua'''
<pre>
-- Lua 5.3
-- Title: Locoroco Midnight Carnival NPEG-00024  (EU)
--  WBD  5/25/2022 prevent RANKING option from being selected
apiRequest(1.0) -- request version 1.0 API. Calling apiRequest() is mandatory.
local gpr = require( "ax-gpr-alias" ) -- you can access Allegrex GPR by alias (gpr.a0 / gpr["a0"])
local emuObj = getEmuObject()
local cpu = getAXObject()
function DisableRanking()
local a2 = cpu.GetGpr(gpr.a2)
local a1 = cpu.GetGpr(gpr.a1)
local check = cpu.ReadMem8(a1+0x2c) -- make sure we're in the correct menu
local ptr = a1+a2+0x34
local new_indx = cpu.ReadMem8(ptr)
if (new_indx == 2) then
if (a2 == 2 and check == 0x2b) then -- moving right
cpu.WriteMem8(ptr, 3)
print "_NOTE: NEW changed to 3"
elseif (a2 == 3 and check == 0x3e) then -- moving left
cpu.WriteMem8(ptr, 1)
print "_NOTE: NEW changed to 1"
end
end
end
cpu.AddHook(0x8a205c4, 0x00c58821, DisableRanking)
</pre>
===Patapon 2===
===Patapon 2===
'''LUA'''
<br>UCUS98732
<br>UCUS98732
<pre>
<pre>
Please note that all contributions to PS4 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS4 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)