PS4 [Research]PS2 emulator configuration on PS4

Hello, I wanna ask if there's a list with the games that contain the ps2 emulators so i can track some copies of them myself
 
Hello, how can I make Scarface pal work on the ps4, I looked on the devwiki but I can't find it, and on the internet too. I have graphic bugs when I convert it ps4 to ps2, and I find it nowhere to take as its direct ready for ps4 Thank you
 
Hello, how can I make Scarface pal work on the ps4, I looked on the devwiki but I can't find it, and on the internet too. I have graphic bugs when I convert it ps4 to ps2, and I find it nowhere to take as its direct ready for ps4 Thank you
You need to convert NTSC's offsets to PAL's.
 
You need to convert NTSC's offsets to PAL's.
Sorry I don't understand how it works yet, I'm just a simple user, I hack a little, but I don't know and I would really like to have the Scarface game in French version without the bugs, too bad. Then there is the US version but it's not the same. Thanks
 
Total Overdose (SLES53492)

TXT.
Code:
--host-display-mode=16:9
--host-vsync=1
--gs-optimize=60fps
--cdvd-sector-read-cycles=2000
--ps2-lang=system

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

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

--gs-ignore-rect-correction=1

LUA.
Code:
-- Total Overdose (E)(SLES-53492)
-- emu used=ADK

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

local patcher = function()
--Widescreen hack 16:9

--00 00 80 3F 83 F9 22 3F DB 0F C9 3F 00 00 00 BF
eeObj.WriteMem32(0x20692A2C,0x3F47AE14) -- Zoom

--00 00 80 3F 00 00 00 00 00 00 00 00 2F 00 00 00
eeObj.WriteMem32(0x206C64C4,0x3F400000) -- Vert fov
end

emuObj.AddVsyncHook(patcher)

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

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

Ghosting effect on light sources, appear\disappear issue with character (in training house), flickering white line (in open world) and Random Сrash issue - FiXed!
Widescreen - added! Vertical sync - enabled! Speeded up loading screens!

Total Overdose|Crash FiX|PS2toPS4 Test
 
The psdev config for Bully or Canis Canem Edit is a complete mess, it simply crashes the game. I've looked it up after some trial and error and I'm pretty sure the command causing that was the "fpjk-muldiv-range=0x3fa5c0,0x3fa5c0", I'm not sure what this does but getting rid of it makes the game launch. Anyway, then it says it works fine with Jak or Rogue emus... it doesn't. You have to use Bully v2 to avoid the graphical glitches along with some other commands. I've cleaned up the "official" CLI config of useless commands that don't help in anything or could make the game less stable. By the way, the LUA works for both SLES-53561 and SLUS-21269 even though the wiki says it's only for SLES.

CLI:
--fpu-rsqrt-fast-estimate=0
--vu1-opt-vf00=2
--vu1-di-bits=0
--vu1-mpg-cycles=2500
--ee-hook=0x001f3ef4,FastForwardClock
--gs-flush-ad-xyz=SafeZWrite


LUA:
apiRequest(0.1)

-- Performance fix
-- emu used=BULLY V2
local emuObj = getEmuObject()
local thresholdArea = 600
emuObj.SetGsTitleFix( "ignoreUpRender", thresholdArea , {alpha=0x80000044 , zmsk=1 , tw=4, th=4 } )


Game should be perfect now. I didn't see any graphical or audio bugs. Performance is still a bit crap but it was like that on the PS2 Classic version and original hardware. I believe the EE hook command is the one that fixes the famous "Hattrick vs Galloway" bug but it takes so long to get there. If someone wants to test and let me know I will appreciate it. A custom patch could probably be done if needed.
 
The psdev config for Bully or Canis Canem Edit is a complete mess, it simply crashes the game. I've looked it up after some trial and error and I'm pretty sure the command causing that was the "fpjk-muldiv-range=0x3fa5c0,0x3fa5c0", I'm not sure what this does but getting rid of it makes the game launch. Anyway, then it says it works fine with Jak or Rogue emus... it doesn't. You have to use Bully v2 to avoid the graphical glitches along with some other commands. I've cleaned up the "official" CLI config of useless commands that don't help in anything or could make the game less stable. By the way, the LUA works for both SLES-53561 and SLUS-21269 even though the wiki says it's only for SLES.

CLI:
--fpu-rsqrt-fast-estimate=0
--vu1-opt-vf00=2
--vu1-di-bits=0
--vu1-mpg-cycles=2500
--ee-hook=0x001f3ef4,FastForwardClock
--gs-flush-ad-xyz=SafeZWrite


LUA:
apiRequest(0.1)

-- Performance fix
-- emu used=BULLY V2
local emuObj = getEmuObject()
local thresholdArea = 600
emuObj.SetGsTitleFix( "ignoreUpRender", thresholdArea , {alpha=0x80000044 , zmsk=1 , tw=4, th=4 } )


Game should be perfect now. I didn't see any graphical or audio bugs. Performance is still a bit crap but it was like that on the PS2 Classic version and original hardware. I believe the EE hook command is the one that fixes the famous "Hattrick vs Galloway" bug but it takes so long to get there. If someone wants to test and let me know I will appreciate it. A custom patch could probably be done if needed.
The --fpjk-muldiv-range command is exclusive to Bully's emulator. That is why it keeps crashing. I also believe that it is the one that fixes "Hattrick vs Galloway", however, I could be wrong.
 
The --fpjk-muldiv-range command is exclusive to Bully's emulator. That is why it keeps crashing. I also believe that it is the one that fixes "Hattrick vs Galloway", however, I could be wrong.

that is a typo(fpjk). here is the official config.(SLUS-21269)

Code:
--fpu-accurate-mul-fast=1
--fpu-accurate-muldiv-range=0x3f9bb0,0x3f9bb0
--vu1-opt-vf00=2
--vu1-di-bits=0
--vu1-injection=1
--gs-flush-ad-xyz=SafeZWrite
--ee-hook=0x001f3ac4,FastForwardClock
--gs-use-deferred-l2h=0
--vu1-injection=1
--vu1-mpg-cycles=2500
--fpu-rsqrt-fast-estimate=0
--safe-area-min=1.0

there is also the features.lua

Code:
-- Lua 5.3
-- Title: Bully (USA)  SLUS-21269
--  Bully (Japan)  SLPS-25879
--  Bully (Europe) SLES-53561
-- Features version 1.00
-- Author: David Haywood
-- Date: Novemeber 16, 2015


require( "ee-gpr-alias" ) -- you can access EE GPR by alias (gpr.a0 / gpr["a0"])

apiRequest(0.7)   -- request version 0.7 API. Calling apiRequest() is mandatory.

-- obtain necessary objects.
local eeObj       = getEEObject()
local emuObj     = getEmuObject()
local trophyObj     = getTrophyObject()
local dmaObj     = getDmaObject()

-- load configuration if exist
local SaveData     = emuObj.LoadConfig(0)

-- 0 for US
-- 1 for Japan
-- 2 for Europe
local Region = 0


local SetAspectFunc = function()
  
   local a0 = eeObj.GetGPR(gpr.a0)
  
   a0 = a0 & 1
  
   if a0 == 1 then
     print( string.format("********* Request WIDE SCREEN mode **************" ) )
     emuObj.SetDisplayAspectWide()    
   else
     print( string.format("********* Request 4:3 mode **************" ) )
     emuObj.SetDisplayAspectNormal()  
   end

end

if Region == 2 then
   SetAspectHook = eeObj.AddHook(0x04aa7a0,0x27bdfff0, SetAspectFunc)
elseif Region == 0 then
   SetAspectHook = eeObj.AddHook(0x04a9d10,0x27bdfff0, SetAspectFunc)
elseif Region == 1 then
   SetAspectHook = eeObj.AddHook(0x04ab6c0,0x27bdfff0, SetAspectFunc)
end

--[[ clip from Settings::Initialize()

can't we detect native aspect of the system with sceScfGetAspect, rather than forcing it to widescreen by default?

0020c648  (0c14fb46:F...) jal  0x0053ed18 --  0053ED18 00000040 .text  sceScfGetAspect   (libscf.a libscf.o/  )
0020c64c  (00000000:....) nop
0020c650  (24030002:...$) li  $v1,2
0020c654  (14430005:..C.) bne  $v0,$v1,0x0020c66c
0020c658  (00000000:....) nop

]]

local DefaultAspectFunc = function()
  
   local v0 = eeObj.GetGPR(gpr.v0)
  
   v0 = 2

   eeObj.SetGPR(gpr.v0, v0)
   emuObj.SetDisplayAspectWide()

end

if Region == 2 then
   SetAspectHook = eeObj.AddHook(0x020c650,0x24030002, DefaultAspectFunc)
elseif Region == 0 then
   SetAspectHook = eeObj.AddHook(0x020c080,0x24030002, DefaultAspectFunc)
elseif Region == 1 then
   SetAspectHook = eeObj.AddHook(0x020c780,0x24030002, DefaultAspectFunc)
end




--[[

 004AA7A0 000000A4 .text  FEOptions::SetAspectRatio(bool)   (FEOptions.cpp)
004aa7a0  (27bdfff0:...') addiu  $sp,$sp,-0x10
004aa7a4  (3c02006c:l..<) lui  $v0,0x006c
004aa7a8  (ffbf0000:....) sd  $ra,0($sp)
004aa7ac  (10800005:....) beqz  $a0,0x004aa7c4

004aa7b0  (a0447c9e:.|D.) sb  $a0,0x7c9e($v0)
004aa7b4  (3c023f40:@?.<) lui  $v0,0x3f40
004aa7b8  (44820000:...D) mtc1  $v0,$fpr0
004aa7bc  (10000003:....) j  0x004aa7cc
004aa7c0  (00000000:....) nop

004aa7c4  (3c023f80:.?.<) lui  $v0,0x3f80
004aa7c8  (44820000:...D) mtc1  $v0,$fpr0

004aa7cc  (50800005:...P) beql  $a0,$zero,0x004aa7e4

004aa7d0  (3c023f80:.?.<) lui  $v0,0x3f80
004aa7d4  (3c023f40:@?.<) lui  $v0,0x3f40
004aa7d8  (44821000:...D) mtc1  $v0,$fpr2
004aa7dc  (10000003:....) j  0x004aa7ec
004aa7e0  (3c023f80:.?.<) lui  $v0,0x3f80

004aa7e4  (44821000:...D) mtc1  $v0,$fpr2
004aa7e8  (3c023f80:.?.<) lui  $v0,0x3f80

004aa7ec  (e7809240:@...) swc1  $fpr0,-0x6dc0($gp)
004aa7f0  (44820800:...D) mtc1  $v0,$fpr1
004aa7f4  (00000000:....) nop
004aa7f8  (46000803:...F) div.s  $fpr0,$fpr1,$fpr0
004aa7fc  (e7809248:H...) swc1  $fpr0,-0x6db8($gp)
004aa800  (46020803:...F) div.s  $fpr0,$fpr1,$fpr2
004aa804  (e7809258:X...) swc1  $fpr0,-0x6da8($gp)
004aa808  (c78088e4:....) lwc1  $fpr0,-0x771c($gp)
004aa80c  (e7829250:P...) swc1  $fpr2,-0x6db0($gp)
004aa810  (c78288e8:....) lwc1  $fpr2,-0x7718($gp)
004aa814  (e7809254:T...) swc1  $fpr0,-0x6dac($gp)
004aa818  (c7818114:....) lwc1  $fpr1,-0x7eec($gp)
004aa81c  (c78088ec:....) lwc1  $fpr0,-0x7714($gp)
004aa820  (e7829244:D...) swc1  $fpr2,-0x6dbc($gp)
004aa824  (e781924c:L...) swc1  $fpr1,-0x6db4($gp)
004aa828  (0c050b0c:....) jal  0x00142c30  00142C30 00000088 .text  CHud::LoadHUDData()   (hud.cpp)
004aa82c  (e780925c:\...) swc1  $fpr0,-0x6da4($gp)
004aa830  (0c12cc58:X...) jal  0x004b3160  004B3160 000000B0 .text  FrontEnd::LoadFrontEndData()   (FrontEnd.cpp)
004aa834  (00000000:....) nop
004aa838  (dfbf0000:....) ld  $ra,0($sp)
004aa83c  (03e00008:....) jr  $ra
004aa840  (27bd0010:...') addiu  $sp,$sp,0x10
004aa844  (00000000:....) nop

]]

-- Credits

-- Trophy design and development by SCEA ISD SpecOps
-- David Thach  Senior Director
-- George Weising  Executive Producer
-- Tim Lindquist  Senior Technical PM
-- Clay Cowgill  Engineering
-- Nicola Salmoria  Engineering
-- David Haywood  Engineering
-- Warren Davis  Engineering
-- Jenny Murphy  Producer
-- David Alonzo  Assistant Producer
-- Tyler Chan  Associate Producer
-- Karla Quiros  Manager Business Finance & Ops
-- Mayene de la Cruz  Art Production Lead
-- Thomas Hindmarch  Production Coordinator
-- Special thanks to R&D
 
Sorry I don't understand how it works yet, I'm just a simple user, I hack a little, but I don't know and I would really like to have the Scarface game in French version without the bugs, too bad. Then there is the US version but it's not the same. Thanks
try this:
Scarface - [SLES-54182]
emu used= star ocean v2.
CLI:
Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth
--gs-kernel-cl-up="up2x2skipinterp"
--ps2-lang=system 
--gs-motion-factor=30
--gs-optimize-30fps=1
--framelimiter=1
--framelimit-fps=30.0
--framelimit-scalar=1.1
--cdvd-sector-read-cycles=5000
--host-vsync=1
--vu1-di-bits=0
--vu0-di-bits=0
--ee-cycle-scalar=1.3
--iop-cycle-scalar=0.7
--vu0-opt-flags=2
--vu1-opt-flags=2
--vu1-mpg-cycles=2000
--vu1-injection=0
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog

LUA:
Code:
-- speed fix by Agrippa & Kozarovv
-- graphical issues fix by kozarovv

apiRequest(0.1)

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

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

--PS3 config(speed up)
eeInsnReplace(0x00643e70, 0xc4810020, 0x03e00008)
eeInsnReplace(0x00643e74, 0x3c033f80, 0x00000000)
eeInsnReplace(0x0064300c, 0x45010012, 0x10000012)
eeInsnReplace(0x00510290, 0x3c034320, 0x3c034220)
eeInsnReplace(0x00510240, 0x3c033f80, 0x3c033f00)

local gfx_fix = function()
eeObj.WriteMem32(0x004ee128,0x10000003) --14400003
eeObj.WriteMem32(0x004f5224,0x00000000)  --14c00003
eeObj.WriteMem32(0x004f5248,0x10000007)  --14650007
eeObj.Vu1MpgCycles(375)
end
emuObj.AddVsyncHook(gfx_fix)

-- Uprender/Upscale fix
emuObj.SetGsTitleFix( "globalSet",  "reserved", { waveThreshold = 90000} )
emuObj.SetGsTitleFix( "ignoreAreaUpdate", 0, { } )
emuObj.SetGsTitleFix( "forceSimpleFetch",  "reserved", {psm=0} )
emuObj.SetGsTitleFix( "fetchFromCurrBuff", "reserved", {psm=0} )
 
Last edited:
This one is special...

Urban Reign™ NTSC (4 Player Fix) +Cheats

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

--force-frame-blend=1
--vif-ignore-invalid-cmd=0
--vif1-ignore-cmd-ints=1
--vif1-instant-xfer=0
--vu1=jit-sync
--mtap1=Always
LUA
Code:
-- Urban Reign NTSC (SLUS-21209)
-- Multitap fix by Kozarovv
-- Cheats from GameHacking.org
-- ported to PS4 by Stayhye
-- emu used=kof98um

apiRequest(0.1)

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

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


emuObj.PadSetLightBar(0, 45,65,55)
emuObj.SetDeinterlace(true)
emuObj.SetDisplayAspectWide()


local WS = function()
--Unlock Free Mode by MadCatz
eeObj.WriteMem32(0x00946634,0x00010001)
-- Init first mtap
eeObj.WriteMem32(0x12BA88,0x24040000)
-- Read data from 1B port when 2A is requested
eeObj.WriteMem32(0x0ffc00,0x10040005)
eeObj.WriteMem32(0x0ffc04,0x00000000)
eeObj.WriteMem32(0x0ffc08,0x14050003)
eeObj.WriteMem32(0x0ffc10,0x24040000)
eeObj.WriteMem32(0x0ffc14,0x24050001)
eeObj.WriteMem32(0x0ffc18,0x080c5cbd)
eeObj.WriteMem32(0x0ffc1c,0x24030070)
eeObj.WriteMem32(0x3172ec,0x0803ff00)
--Unlock Challenge Mode by MadCatz
eeObj.WriteMem32(0x00946636,0x00010001)

--Unlock All Weapons by MadCatz
eeObj.WriteMem32(0x20274774,0x24030001)
eeObj.WriteMem32(0x2027477C,0xA443000E)
--Brad Hawk by Code Master
eeObj.WriteMem32(0x0094668E,0x00010001)

--Glen by Code Master
eeObj.WriteMem32(0x00946694,0x00010001)

--Torque by Code Master
eeObj.WriteMem32(0x00946696,0x00010001)

--Rod by Code Master
eeObj.WriteMem32(0x00946698,0x00010001)

--Seth by Code Master
eeObj.WriteMem32(0x0094669A,0x00010001)

--Nas-Tiii by Code Master
eeObj.WriteMem32(0x0094669C,0x00010001)

--Em Cee by Code Master
eeObj.WriteMem32(0x0094669E,0x00010001)

--Real Deal by Code Master
eeObj.WriteMem32(0x009466A0,0x00010001)

--Ty by Code Master
eeObj.WriteMem32(0x009466A2,0x00010001)

--Miguel by Code Master
eeObj.WriteMem32(0x009466A4,0x00010001)

--Ramon by Code Master
eeObj.WriteMem32(0x009466A6,0x00010001)

--Jose by Code Master
eeObj.WriteMem32(0x009466A8,0x00010001)

--Emilio by Code Master
eeObj.WriteMem32(0x009466AA,0x00010001)

--Kadonashi by Code Master
eeObj.WriteMem32(0x009466AC,0x00010001)

--Reggie by Code Master
eeObj.WriteMem32(0x009466AE,0x00010001)

--Zach by Code Master
eeObj.WriteMem32(0x009466B0,0x00010001)

--Colin by Code Master
eeObj.WriteMem32(0x009466B2,0x00010001)

--Jake by Code Master
eeObj.WriteMem32(0x009466B4,0x00010001)

--Tong Yoon by Code Master
eeObj.WriteMem32(0x009466B6,0x00010001)

--Grimm by Code Master
eeObj.WriteMem32(0x009466B8,0x00010001)

--BK by Code Master
eeObj.WriteMem32(0x009466BA,0x00010001)

--Grave Digga' by Code Master
eeObj.WriteMem32(0x009466BC,0x00010001)

--Bones by Code Master
eeObj.WriteMem32(0x009466BE,0x00010001)

--Booma by Code Master
eeObj.WriteMem32(0x009466C0,0x00010001)

--Busta by Code Master
eeObj.WriteMem32(0x009466C2,0x00010001)

--Spider by Code Master
eeObj.WriteMem32(0x009466C4,0x00010001)

--Pain Killah by Code Master
eeObj.WriteMem32(0x009466C6,0x00010001)

--Dwayne by Code Master
eeObj.WriteMem32(0x009466C8,0x00010001)

--Dwayne 2? by Code Master
eeObj.WriteMem32(0x009466CA,0x00010001)

--Shun Ying Lee by Code Master
eeObj.WriteMem32(0x009466CC,0x00010001)

--GD-05 by Code Master
eeObj.WriteMem32(0x009466CE,0x00010001)

--DR-88 by Code Master
eeObj.WriteMem32(0x009466D0,0x00010001)

--FK-71 by Code Master
eeObj.WriteMem32(0x009466D2,0x00010001)

--PT-22 by Code Master
eeObj.WriteMem32(0x009466D4,0x00010001)

--Bain by Code Master
eeObj.WriteMem32(0x009466D6,0x00010001)

--Cooper by Code Master
eeObj.WriteMem32(0x009466D8,0x00010001)

--Anderson by Code Master
eeObj.WriteMem32(0x009466DA,0x00010001)

--Taylor by Code Master
eeObj.WriteMem32(0x009466DC,0x00010001)

--Chris by Code Master
eeObj.WriteMem32(0x009466DE,0x00010001)

--Park by Code Master
eeObj.WriteMem32(0x009466E0,0x00010001)

--Alex by Code Master
eeObj.WriteMem32(0x009466E2,0x00010001)

--McKinzie by Code Master
eeObj.WriteMem32(0x009466E4,0x00010001)

--Napalm 99 by Code Master
eeObj.WriteMem32(0x009466E6,0x00010001)

--Golem by Code Master
eeObj.WriteMem32(0x009466E8,0x00010001)

--Riki by Code Master
eeObj.WriteMem32(0x009466EA,0x00010001)

--Masa by Code Master
eeObj.WriteMem32(0x009466EC,0x00010001)

--Hiro by Code Master
eeObj.WriteMem32(0x009466EE,0x00010001)

--Ryuji by Code Master
eeObj.WriteMem32(0x009466F0,0x00010001)

--Ye Wei by Code Master
eeObj.WriteMem32(0x009466F2,0x00010001)

--Sha Ying by Code Master
eeObj.WriteMem32(0x009466F4,0x00010001)

--Yan Jun by Code Master
eeObj.WriteMem32(0x009466F6,0x00010001)

--Shinkai by Code Master
eeObj.WriteMem32(0x009466F8,0x00010001)

--Lin Fong Lee by Code Master
eeObj.WriteMem32(0x009466FA,0x00010001)

--Bordin by Code Master
eeObj.WriteMem32(0x009466FC,0x00010001)

--Lilian by Code Master
eeObj.WriteMem32(0x009466FE,0x00010001)

--Kelly by Code Master
eeObj.WriteMem32(0x00946700,0x00010001)

--Vera Ross by Code Master
eeObj.WriteMem32(0x00946702,0x00010001)

--Paul Phoenix by Code Master
eeObj.WriteMem32(0x00946704,0x00010001)

--Marshall Law by Code Master
eeObj.WriteMem32(0x00946706,0x00010001)

--KG by Code Master
eeObj.WriteMem32(0x00946718,0x00010001)

emuObj.ThrottleMax()
end

emuObj.AddVsyncHook(WS)

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

Big thanks to Kozarovv for this one! Finally 4 player multi-tap works! Apparently the emulator is flawed in how it handles multi-tap when it involves "--mtap2". All functions for 2A, 2B, 2C, 2D must be redirected to ports on multi-tap 1.

I remember trying different mtap + host combos in this post a long time ago on a game called "Sega ages 2500: Decathlete Collection", but it either ended up with only player 1 working or player 1 + player 2 working without config.

The game behaves like this:
PS2:
P1 in port 1,
multitap in port 2 (P2 = 2A, P3 = 2B, P3 = 2C)

PS3 (virtual mtap)
:
P1 = 1A,
P2 = 1B,
P3 = 1C,
P4 = 1D

In theory do you think the same LUA could be used in combination with "--mtap1=Always"
to make this game work in the same way?
Code:
-- Init first mtap
eeObj.WriteMem32(0x12BA88,0x24040000)
-- Read data from 1B port when 2A is requested
eeObj.WriteMem32(0x0ffc00,0x10040005)
eeObj.WriteMem32(0x0ffc04,0x00000000)
eeObj.WriteMem32(0x0ffc08,0x14050003)
eeObj.WriteMem32(0x0ffc10,0x24040000)
eeObj.WriteMem32(0x0ffc14,0x24050001)
eeObj.WriteMem32(0x0ffc18,0x080c5cbd)
eeObj.WriteMem32(0x0ffc1c,0x24030070)
eeObj.WriteMem32(0x3172ec,0x0803ff00)
 
Last edited:
try this:
Scarface - [SLES-54182]
emu used= star ocean v2.
CLI:
Code:
--gs-uprender=2x2
--gs-upscale=edgesmooth
--gs-kernel-cl-up="up2x2skipinterp"
--ps2-lang=system 
--gs-motion-factor=30
--gs-optimize-30fps=1
--framelimiter=1
--framelimit-fps=30.0
--framelimit-scalar=1.1
--cdvd-sector-read-cycles=5000
--host-vsync=1
--vu1-di-bits=0
--vu0-di-bits=0
--ee-cycle-scalar=1.3
--iop-cycle-scalar=0.7

LUA:
Code:
-- speed fix by Agrippa & Kozarovv
-- graphical issues fix by kozarovv

apiRequest(0.1)

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

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

--PS3 config(speed up)
eeInsnReplace(0x00643e70, 0xc4810020, 0x03e00008)
eeInsnReplace(0x00643e74, 0x3c033f80, 0x00000000)
eeInsnReplace(0x0064300c, 0x45010012, 0x10000012)
eeInsnReplace(0x00510290, 0x3c034320, 0x3c034220)
eeInsnReplace(0x00510240, 0x3c033f80, 0x3c033f00)

local gfx_fix = function()
eeObj.WriteMem32(0x004ee128,0x10000003) --14400003
eeObj.WriteMem32(0x004f5224,0x00000000)  --14c00003
eeObj.WriteMem32(0x004f5248,0x10000007)  --14650007
eeObj.Vu1MpgCycles(375)
end
emuObj.AddVsyncHook(gfx_fix)

-- Uprender/Upscale fix
emuObj.SetGsTitleFix( "globalSet",  "reserved", { waveThreshold = 90000} )
emuObj.SetGsTitleFix( "ignoreAreaUpdate", 0, { } )
emuObj.SetGsTitleFix( "forceSimpleFetch",  "reserved", {psm=0} )
emuObj.SetGsTitleFix( "fetchFromCurrBuff", "reserved", {psm=0} )

Did you test game till open world?

I guess without that FiX game will random crash! (as NTSC)
Code:
--vu0-opt-flags=2
--vu1-opt-flags=2
--vu1-mpg-cycles=2000
--vu1-injection=0
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog

But maybe PAL works fine?
 
that is a typo(fpjk). here is the official config.(SLUS-21269)

Code:
--fpu-accurate-mul-fast=1
--fpu-accurate-muldiv-range=0x3f9bb0,0x3f9bb0
--vu1-opt-vf00=2
--vu1-di-bits=0
--vu1-injection=1
--gs-flush-ad-xyz=SafeZWrite
--ee-hook=0x001f3ac4,FastForwardClock
--gs-use-deferred-l2h=0
--vu1-injection=1
--vu1-mpg-cycles=2500
--fpu-rsqrt-fast-estimate=0
--safe-area-min=1.0

there is also the features.lua

Code:
-- Lua 5.3
-- Title: Bully (USA)  SLUS-21269
--  Bully (Japan)  SLPS-25879
--  Bully (Europe) SLES-53561
-- Features version 1.00
-- Author: David Haywood
-- Date: Novemeber 16, 2015


require( "ee-gpr-alias" ) -- you can access EE GPR by alias (gpr.a0 / gpr["a0"])

apiRequest(0.7)   -- request version 0.7 API. Calling apiRequest() is mandatory.

-- obtain necessary objects.
local eeObj       = getEEObject()
local emuObj     = getEmuObject()
local trophyObj     = getTrophyObject()
local dmaObj     = getDmaObject()

-- load configuration if exist
local SaveData     = emuObj.LoadConfig(0)

-- 0 for US
-- 1 for Japan
-- 2 for Europe
local Region = 0


local SetAspectFunc = function()
 
   local a0 = eeObj.GetGPR(gpr.a0)
 
   a0 = a0 & 1
 
   if a0 == 1 then
     print( string.format("********* Request WIDE SCREEN mode **************" ) )
     emuObj.SetDisplayAspectWide()   
   else
     print( string.format("********* Request 4:3 mode **************" ) )
     emuObj.SetDisplayAspectNormal() 
   end

end

if Region == 2 then
   SetAspectHook = eeObj.AddHook(0x04aa7a0,0x27bdfff0, SetAspectFunc)
elseif Region == 0 then
   SetAspectHook = eeObj.AddHook(0x04a9d10,0x27bdfff0, SetAspectFunc)
elseif Region == 1 then
   SetAspectHook = eeObj.AddHook(0x04ab6c0,0x27bdfff0, SetAspectFunc)
end

--[[ clip from Settings::Initialize()

can't we detect native aspect of the system with sceScfGetAspect, rather than forcing it to widescreen by default?

0020c648  (0c14fb46:F...) jal  0x0053ed18 --  0053ED18 00000040 .text  sceScfGetAspect   (libscf.a libscf.o/  )
0020c64c  (00000000:....) nop
0020c650  (24030002:...$) li  $v1,2
0020c654  (14430005:..C.) bne  $v0,$v1,0x0020c66c
0020c658  (00000000:....) nop

]]

local DefaultAspectFunc = function()
 
   local v0 = eeObj.GetGPR(gpr.v0)
 
   v0 = 2

   eeObj.SetGPR(gpr.v0, v0)
   emuObj.SetDisplayAspectWide()

end

if Region == 2 then
   SetAspectHook = eeObj.AddHook(0x020c650,0x24030002, DefaultAspectFunc)
elseif Region == 0 then
   SetAspectHook = eeObj.AddHook(0x020c080,0x24030002, DefaultAspectFunc)
elseif Region == 1 then
   SetAspectHook = eeObj.AddHook(0x020c780,0x24030002, DefaultAspectFunc)
end




--[[

 004AA7A0 000000A4 .text  FEOptions::SetAspectRatio(bool)   (FEOptions.cpp)
004aa7a0  (27bdfff0:...') addiu  $sp,$sp,-0x10
004aa7a4  (3c02006c:l..<) lui  $v0,0x006c
004aa7a8  (ffbf0000:....) sd  $ra,0($sp)
004aa7ac  (10800005:....) beqz  $a0,0x004aa7c4

004aa7b0  (a0447c9e:.|D.) sb  $a0,0x7c9e($v0)
004aa7b4  (3c023f40:@?.<) lui  $v0,0x3f40
004aa7b8  (44820000:...D) mtc1  $v0,$fpr0
004aa7bc  (10000003:....) j  0x004aa7cc
004aa7c0  (00000000:....) nop

004aa7c4  (3c023f80:.?.<) lui  $v0,0x3f80
004aa7c8  (44820000:...D) mtc1  $v0,$fpr0

004aa7cc  (50800005:...P) beql  $a0,$zero,0x004aa7e4

004aa7d0  (3c023f80:.?.<) lui  $v0,0x3f80
004aa7d4  (3c023f40:@?.<) lui  $v0,0x3f40
004aa7d8  (44821000:...D) mtc1  $v0,$fpr2
004aa7dc  (10000003:....) j  0x004aa7ec
004aa7e0  (3c023f80:.?.<) lui  $v0,0x3f80

004aa7e4  (44821000:...D) mtc1  $v0,$fpr2
004aa7e8  (3c023f80:.?.<) lui  $v0,0x3f80

004aa7ec  (e7809240:@...) swc1  $fpr0,-0x6dc0($gp)
004aa7f0  (44820800:...D) mtc1  $v0,$fpr1
004aa7f4  (00000000:....) nop
004aa7f8  (46000803:...F) div.s  $fpr0,$fpr1,$fpr0
004aa7fc  (e7809248:H...) swc1  $fpr0,-0x6db8($gp)
004aa800  (46020803:...F) div.s  $fpr0,$fpr1,$fpr2
004aa804  (e7809258:X...) swc1  $fpr0,-0x6da8($gp)
004aa808  (c78088e4:....) lwc1  $fpr0,-0x771c($gp)
004aa80c  (e7829250:P...) swc1  $fpr2,-0x6db0($gp)
004aa810  (c78288e8:....) lwc1  $fpr2,-0x7718($gp)
004aa814  (e7809254:T...) swc1  $fpr0,-0x6dac($gp)
004aa818  (c7818114:....) lwc1  $fpr1,-0x7eec($gp)
004aa81c  (c78088ec:....) lwc1  $fpr0,-0x7714($gp)
004aa820  (e7829244:D...) swc1  $fpr2,-0x6dbc($gp)
004aa824  (e781924c:L...) swc1  $fpr1,-0x6db4($gp)
004aa828  (0c050b0c:....) jal  0x00142c30  00142C30 00000088 .text  CHud::LoadHUDData()   (hud.cpp)
004aa82c  (e780925c:\...) swc1  $fpr0,-0x6da4($gp)
004aa830  (0c12cc58:X...) jal  0x004b3160  004B3160 000000B0 .text  FrontEnd::LoadFrontEndData()   (FrontEnd.cpp)
004aa834  (00000000:....) nop
004aa838  (dfbf0000:....) ld  $ra,0($sp)
004aa83c  (03e00008:....) jr  $ra
004aa840  (27bd0010:...') addiu  $sp,$sp,0x10
004aa844  (00000000:....) nop

]]

-- Credits

-- Trophy design and development by SCEA ISD SpecOps
-- David Thach  Senior Director
-- George Weising  Executive Producer
-- Tim Lindquist  Senior Technical PM
-- Clay Cowgill  Engineering
-- Nicola Salmoria  Engineering
-- David Haywood  Engineering
-- Warren Davis  Engineering
-- Jenny Murphy  Producer
-- David Alonzo  Assistant Producer
-- Tyler Chan  Associate Producer
-- Karla Quiros  Manager Business Finance & Ops
-- Mayene de la Cruz  Art Production Lead
-- Thomas Hindmarch  Production Coordinator
-- Special thanks to R&D

Thanks, you're right. Hopefully they edit out fpjk in the wiki. Though you still need to use Bully v2, Rogue crashes and Jak has severe graphical issues. I also recommend adding mipmapping to the config since this game also suffers a bit from the white seams, on a few cutscenes. Doesn't seem to harm performance or create any issues.
 
I remember trying different mtap + host combos in this post a long time ago on a game called "Sega ages 2500: Decathlete Collection", but it either ended up with only player 1 working or player 1 + player 2 working without config.

The game behaves like this:
PS2:
P1 in port 1,
multitap in port 2 (P2 = 2A, P3 = 2B, P3 = 2C)

PS3 (virtual mtap)
:
P1 = 1A,
P2 = 1B,
P3 = 1C,
P4 = 1D

In theory do you think the same LUA could be used in combination with "--mtap1=Always"
to make this game work in the same way?
Code:
-- Init first mtap
eeObj.WriteMem32(0x12BA88,0x24040000)
-- Read data from 1B port when 2A is requested
eeObj.WriteMem32(0x0ffc00,0x10040005)
eeObj.WriteMem32(0x0ffc04,0x00000000)
eeObj.WriteMem32(0x0ffc08,0x14050003)
eeObj.WriteMem32(0x0ffc10,0x24040000)
eeObj.WriteMem32(0x0ffc14,0x24050001)
eeObj.WriteMem32(0x0ffc18,0x080c5cbd)
eeObj.WriteMem32(0x0ffc1c,0x24030070)
eeObj.WriteMem32(0x3172ec,0x0803ff00)

No, the offsets will be different. But the method will work, you just need to port the offsets.
 
No, the offsets will be different. But the method will work, you just need to port the offsets.
oh crap, yeah I just built a fpkg and it didn't respond, makes sense.
What methodology or and tools would one use to find these offsets, via emulator?
I don't mind getting technical if you have time.
 
Last edited:
That fix was not made by me. I also don't have the knowledge to accomplish a fix that technical on my own.

I see, no worries man. If anyone here has a clue of how to find such offsets like the controller ports mapping I'm all ears.
I'd be happy to try to document "a how to". Keep up the good work!
 
Did you test game till open world?

I guess without that FiX game will random crash! (as NTSC)
Code:
--vu0-opt-flags=2
--vu1-opt-flags=2
--vu1-mpg-cycles=2000
--vu1-injection=0
--vu0-jr-cache-policy=newprog
--vu0-jalr-cache-policy=newprog
--vu1-jr-cache-policy=newprog
--vu1-jalr-cache-policy=newprog

But maybe PAL works fine?
I forgot about that, thanks, I'll add it :encouragement:
 

Similar threads

Back
Top