PSX-FPKG

PS4 PSX-FPKG (by Jabu) - A Tool to convert PS1 (PSX) games for use on PS4 v0.3

Metal Gear Solid (SLUS00594) (v1.1)

config-title.txt
Code:
--gpu-scanout-fps-override=ntsc
--scale=6
--gamma=5
--brightness=9
--contrast=8
--cdrom-cmd-time=100
--cdrom-max-seek=true
--ctlanalog=on
--metal-gear-solid=true
--globalgamedata-dir=global
--enable-change-disc-ui=true

LUA.
Code:
-- Metal Gear Solid (NTSC) (v1.1)
-- ported to PS4 lua
-- emu used=syphonfilter 3
if true then
end
local patcher = function()
--Disable dithering
local no_dither = R3K_ReadMem16(0x017C24)
if no_dither == 0x0000 then
R3K_WriteMem16(0x80017C24,0x41E8)
end
local no_dither = R3K_ReadMem16(0x017C26)
if no_dither == 0x0000 then
R3K_WriteMem16(0x80017C26,0xA420)
end
local no_dither = R3K_ReadMem16(0x017C3C)
if no_dither == 0x0000 then
R3K_WriteMem16(0x80017C3C,0x4228)
end
local no_dither = R3K_ReadMem16(0x017C3E)
if no_dither == 0x0000 then
R3K_WriteMem16(0x80017C3E,0xA420)
end
--Have SOCOM Pistol
R3K_WriteMem16(0x800B753A,0x03E7)
R3K_WriteMem16(0x800B754E,0x03E7)
--Widescreen
R3K_WriteMem16(0x8001F6E0,0x4415)
R3K_WriteMem16(0x8001F6E2,0x0800)
R3K_WriteMem16(0x80011054,0x0000)
R3K_WriteMem16(0x80011056,0x84A2)
R3K_WriteMem16(0x80011058,0x0000)
R3K_WriteMem16(0x8001105A,0x0000)
R3K_WriteMem16(0x8001105C,0xD883)
R3K_WriteMem16(0x8001105E,0x0002)
R3K_WriteMem16(0x80011060,0x1043)
R3K_WriteMem16(0x80011062,0x0002)
R3K_WriteMem16(0x80011064,0x1021)
R3K_WriteMem16(0x80011066,0x005B)
R3K_WriteMem16(0x80011068,0x0000)
R3K_WriteMem16(0x8001106A,0xA4A2)
R3K_WriteMem16(0x8001106C,0x0004)
R3K_WriteMem16(0x8001106E,0x84A2)
R3K_WriteMem16(0x80011070,0x0000)
R3K_WriteMem16(0x80011072,0x0000)
R3K_WriteMem16(0x80011074,0xD883)
R3K_WriteMem16(0x80011076,0x0002)
R3K_WriteMem16(0x80011078,0x1043)
R3K_WriteMem16(0x8001107A,0x0002)
R3K_WriteMem16(0x8001107C,0x1021)
R3K_WriteMem16(0x8001107E,0x005B)
R3K_WriteMem16(0x80011080,0x0008)
R3K_WriteMem16(0x80011082,0x03E0)
R3K_WriteMem16(0x80011084,0x0004)
R3K_WriteMem16(0x80011086,0xA4A2)
end
EM_AddVsyncHook(patcher)

app_boot.lua
Code:
require "disc-selection"

local default_disc_map = {
   en = { "disc01.bin" , "disc02.bin"  }
      
}

RegisterDiscs(default_disc_map)


Metal Gear Solid. Second Disc Test!
VIDEO


Metal Gear Solid. First Person Mod Test! (Just for fun!)
VIDEO


I also attach saves to get acess for 2nd disc!
 

Attachments

Metal Gear Solid [First Person Mod]

LUA.

Code:
-- Metal Gear Solid (NTSC) (v1.1)
-- ported to PS4 lua
-- emu used=syphonfilter 3
if true then
end
local patcher = function()
--Disable dithering
local no_dither = R3K_ReadMem16(0x017C24)
if no_dither == 0x0000 then
R3K_WriteMem16(0x80017C24,0x41E8)
end
local no_dither = R3K_ReadMem16(0x017C26)
if no_dither == 0x0000 then
R3K_WriteMem16(0x80017C26,0xA420)
end
local no_dither = R3K_ReadMem16(0x017C3C)
if no_dither == 0x0000 then
R3K_WriteMem16(0x80017C3C,0x4228)
end
local no_dither = R3K_ReadMem16(0x017C3E)
if no_dither == 0x0000 then
R3K_WriteMem16(0x80017C3E,0xA420)
end
--1st Person View
if R3K_ReadMem16(0x000B2D60) == 0x0400 then --R3 For On
R3K_WriteMem16(0x800B9F7A,0x0001)
end

if R3K_ReadMem16(0x000B2D60) == 0x0200 then --L3 For Off
R3K_WriteMem16(0x800B9F7A,0x0000)
end
--Have Sniper Rifle
R3K_WriteMem16(0x800B754C,0x03E7)
R3K_WriteMem16(0x800B7560,0x03E7)
--Have SOCOM Pistol
R3K_WriteMem16(0x800B753A,0x03E7)
R3K_WriteMem16(0x800B754E,0x03E7)
--SOCOM Is Rifle
R3K_WriteMem16(0x800ADFB8,0x6972)
R3K_WriteMem16(0x800ADFBA,0x6C66)
R3K_WriteMem16(0x800ADFBC,0x0065)
R3K_WriteMem16(0x800ADFC0,0x6972)
R3K_WriteMem16(0x800ADFC2,0x6C66)
R3K_WriteMem16(0x800ADFC4,0x0065)
R3K_WriteMem16(0x800ADFD0,0x6972)
R3K_WriteMem16(0x800ADFD2,0x6C66)
R3K_WriteMem16(0x800ADFD4,0x2E65)
R3K_WriteMem16(0x800ADFD6,0x0063)
--Widescreen
R3K_WriteMem16(0x8001F6E0,0x4415)
R3K_WriteMem16(0x8001F6E2,0x0800)
R3K_WriteMem16(0x80011054,0x0000)
R3K_WriteMem16(0x80011056,0x84A2)
R3K_WriteMem16(0x80011058,0x0000)
R3K_WriteMem16(0x8001105A,0x0000)
R3K_WriteMem16(0x8001105C,0xD883)
R3K_WriteMem16(0x8001105E,0x0002)
R3K_WriteMem16(0x80011060,0x1043)
R3K_WriteMem16(0x80011062,0x0002)
R3K_WriteMem16(0x80011064,0x1021)
R3K_WriteMem16(0x80011066,0x005B)
R3K_WriteMem16(0x80011068,0x0000)
R3K_WriteMem16(0x8001106A,0xA4A2)
R3K_WriteMem16(0x8001106C,0x0004)
R3K_WriteMem16(0x8001106E,0x84A2)
R3K_WriteMem16(0x80011070,0x0000)
R3K_WriteMem16(0x80011072,0x0000)
R3K_WriteMem16(0x80011074,0xD883)
R3K_WriteMem16(0x80011076,0x0002)
R3K_WriteMem16(0x80011078,0x1043)
R3K_WriteMem16(0x8001107A,0x0002)
R3K_WriteMem16(0x8001107C,0x1021)
R3K_WriteMem16(0x8001107E,0x005B)
R3K_WriteMem16(0x80011080,0x0008)
R3K_WriteMem16(0x80011082,0x03E0)
R3K_WriteMem16(0x80011084,0x0004)
R3K_WriteMem16(0x80011086,0xA4A2)
end
EM_AddVsyncHook(patcher)

MGS. 1st\3rd view Switcher guide!
VIDEO

Metal Gear Solid|GamePlay|Debug First Person Mod|PSXtoPS4 Test
 
Could someone tell me if it works for 5.05? No matter how much I try with Marcus95's new script, I can't. please help me vika.
 
Parasite Eve (SLUS00662)

config-title.txt
Code:
--gpu-scanout-fps-override=ntsc
--scale=6
--gamma=5
--brightness=9
--contrast=8
--cdrom-cmd-time=100
--cdrom-max-seek=true
--sim-analog-pad=0x2020
--enable-change-disc-ui=true

LUA.
Code:
-- Parasite Eve (NTSC)
-- ported to PS4 lua
-- emu used=syphonfilter 3
if true then
end
local patcher = function()
--No Battles
if R3K_ReadMem16(0x0009D0F0) == 0x0005 then --L1+L2 For On
R3K_WriteMem16(0x800A781A,0x8000)
end

if R3K_ReadMem16(0x0009D0F0) == 0x0006 then --L1+R2 For Off
R3K_WriteMem16(0x800A781A,0x0000)
end
end
EM_AddVsyncHook(patcher)

app_boot.lua

Code:
require "disc-selection"

local default_disc_map = {
   en = { "disc01.bin" , "disc02.bin"  }
    
}

RegisterDiscs(default_disc_map)

Parasite Eve|GamePlay|Debug Room|2CD|PSXtoPS4 Test
 

Attachments

Last edited:
Hi Vika! Can you fix Parasite Eve 2? It slows down the control in the game menu and pressing the buttons, the game cannot be controlled smoothly
 
The Legend of Dragoon (SLUS94491) (v1.0)

config-title.txt
Code:
--image-dir=data
--globalgamedata-dir=global
--userui-settings-graphics=1
--ctlanalog=true
--bios-hide-sce-osd=1
--has-shown-start-select-help=1
--scale=6
--gamma=5
--brightness=10
--contrast=8
--cdrom-cmd-time=1500
--cdrom-max-seek=true

LUA.
Code:
-- The Legend of Dragoon
-- Auto swap disc by wigwrm
-- Dither Removal by wigwrm
-- emu used=syphonfilter 3

function SetSwapDiscFlag()

  -- Set flag in unused memory location
  R3K_WriteMem8(0x1A0,0x01)

end

function SwapDisc()
 
  -- Check that the flag is set
  if R3K_ReadMem8(0x1A0) == 0x01 then
 
    if R3K_GetGpr(gpr.v1) ~= 0x1 then
 
      local ReqDisc = R3K_ReadMem8(0x8004DDC0)
      EM_DiscSwap(ReqDisc)
      R3K_SetGpr(gpr.v1, 0x1)
 
    end
 
    -- Clear flag
    R3K_WriteMem8(0x1A0,0x00)
 
  end
 
end

-- Disc swap flag
R3K_AddHook(0x800D9744, 0x27BDFFE8, SetSwapDiscFlag)

-- Disc swap code
R3K_AddHook(0x800D92D8, 0x24020001, SwapDisc)

local patcher = function()

-- Title Screen
R3K_WriteMem16(0x800397C8,0x0000)

-- Save Dialog
R3K_WriteMem16(0x800296D8,0x0000)

-- 2D Background (3D Enemy Models)
local dither_flag = R3K_ReadMem16(0x0DD0A0)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800DD0A0,0x0000)
end

-- 2D Background Effects
local dither_flag = R3K_ReadMem16(0x0DD770)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800DD770,0x0000)
end

-- 2D Background and Effects
R3K_WriteMem16(0x8003B760,0x0000)

-- Story Text Boxes
R3K_WriteMem16(0x80026178,0x0000)

-- 3D Map
local dither_flag = R3K_ReadMem16(0x0E4CD4)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800E4CD4,0x0000)
end

-- Battle Background (Hero Competition)
R3K_WriteMem16(0x800181E8,0x0000)

-- Battle Background
R3K_WriteMem16(0x800182DC,0x0000)

-- Battle Character Portraits
local dither_flag = R3K_ReadMem16(0x0F9F9C)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800F9F9C,0x0000)
end

-- Battle Text Boxes
local dither_flag = R3K_ReadMem16(0x0F14E8)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800F14E8,0x0000)
end

-- Battle Animations (Various Dragoon Effects)
R3K_WriteMem16(0x80013C08,0x0000)

-- Battle Animations (Various Effects)
R3K_WriteMem16(0x8003B868,0x0000)

-- Battle Animations (Dragoon Transparency Effects)
local dither_flag = R3K_ReadMem16(0x0DE9CC)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800DE9CC,0x0000)
end

-- Battle Animations (Dragoon Transparency Effects)
local dither_flag = R3K_ReadMem16(0x0DEE9C)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800DEE9C,0x0000)
end

-- Battle Animations (Dragoon Transparency Effects)
local dither_flag = R3K_ReadMem16(0x0E0304)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800E0304,0x0000)
end

-- Battle Animations (Dragoon Transformation Effects)
local dither_flag = R3K_ReadMem16(0x0E0864)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800E0864,0x0000)
end

-- Battle Animations (Transparency Effects)
local dither_flag = R3K_ReadMem16(0x0DF144)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800DF144,0x0000)
end

-- Battle Animations (Enemy Attacks)
local dither_flag = R3K_ReadMem16(0x0E1C40)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800E1C40,0x0000)
end

-- Battle Animations (Enemy Magic Barrier)
local dither_flag = R3K_ReadMem16(0x0ED618)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800ED618,0x0000)
end

-- Battle Animations (Projectiles)
local dither_flag = R3K_ReadMem16(0x0E16C0)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800E16C0,0x0000)
end

-- Battle Animations (Dragoon Transformation)
R3K_WriteMem16(0x800183F8,0x0000)

-- Battle Animations (Dragoon Magic)
local dither_flag = R3K_ReadMem16(0x0E3FA0)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800E3FA0,0x0000)
end

end

EM_AddVsyncHook(patcher)

app_boot.lua
Code:
require "disc-selection"

local default_disc_map = {
  en = { "disc1.bin" , "disc2.bin" , "disc3.bin" , "disc4.bin" }
 
}

RegisterDiscs(default_disc_map)

Original:
Still a work in progress, but the game runs perfectly! I initially encountered the same softlock issue from the official sony release, when using Dragoon magic. Increasing the cdrom-cmd-time from 100 to 650 fixed the issue!

The dithering removal is mostly complete. I've been patching the game, as I play through it. This looks sooo much cleaner than the official sony release!

If anyone runs into any issues, let me know. Otherwise, enjoy!

Edit:
Added auto disc swap lua code! No more need to switch discs manually : )
Added some more anti-dithering codes. Finding more as I play. Currently on Disc 2.

@nifengyue Thank you for your suggestion. I updated the value to 1500 and it seems to be fine now. I don't know if the cdrom-cmd-time value is a timeout counter in milliseconds or something else... but it definitely makes all the difference in this game.

We weren't too far off from the official release : P
Official config-title.txt
Code:
# Legend of Dragoon (all regions)

--ctlanalog=true
--bios-hide-sce-osd=1
--cdrom-cmd-time=1000

# Use the new shared image directory
--image-dir=data

# to solve issue of 7+ seconds delay on swapping discs
--cdrom-cache-mode=priority

# Enable LopnorSPU to fix some audio issues
--use-lopnor-spu=1

# Increase global volume
--app-volume=1.0


# following settings are machine-generated
--region-dir=SIEA
--ps4-trophies=1
--ps5-uds=1
--trophies=1

--globalgamedata-dir=global
 
Last edited:
The Legend of Dragoon (SLUS94491) (v1.0)

config-title.txt
Code:
--image-dir=data
--globalgamedata-dir=global
--userui-settings-graphics=1
--ctlanalog=true
--ps1-title-id=SLUS94491
--bios-hide-sce-osd=1
--has-shown-start-select-help=1
--scale=6
--gamma=5
--brightness=10
--contrast=8
--cdrom-cmd-time=650
--cdrom-max-seek=true

LUA.
Code:
-- The Legend of Dragoon (NTSC)
-- Dither Removal by wigwrm
-- emu used=syphonfilter v3

local patcher = function()

-- Title Screen
R3K_WriteMem16(0x800397C8,0x0000)

-- 2D Background and Effects
R3K_WriteMem16(0x8003B760,0x0000)

-- Story Text Boxes
R3K_WriteMem16(0x80026178,0x0000)

-- 3D Map
local dither_flag = R3K_ReadMem16(0x0E4CD4)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800E4CD4,0x0000)
end

-- Battle Background (Hero Competition)
R3K_WriteMem16(0x800181E8,0x0000)

-- Battle Background
R3K_WriteMem16(0x800182DC,0x0000)

-- Battle Text Boxes
local dither_flag = R3K_ReadMem16(0x0F14E8)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800F14E8,0x0000)
end

-- Battle Animations (Various Dragoon Effects)
R3K_WriteMem16(0x80013C08,0x0000)

-- Battle Animations (Various Effects)
R3K_WriteMem16(0x8003B868,0x0000)

-- Battle Animations (Dragoon Transparency Effects)
local dither_flag = R3K_ReadMem16(0x0DE9CC)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800DE9CC,0x0000)
end

-- Battle Animations (Dragoon Transparency Effects)
local dither_flag = R3K_ReadMem16(0x0DEE9C)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800DEE9C,0x0000)
end

-- Battle Animations (Transparency Effects)
local dither_flag = R3K_ReadMem16(0x0DF144)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800DF144,0x0000)
end

-- Battle Animations (Dragoon Transformation Outline Effects)
local dither_flag = R3K_ReadMem16(0x0E0864)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800E0864,0x0000)
end

-- Battle Animations (Enemy Attacks)
local dither_flag = R3K_ReadMem16(0x0E1C40)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800E1C40,0x0000)
end

-- Battle Animations (Projectiles)
local dither_flag = R3K_ReadMem16(0x0E16C0)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800E16C0,0x0000)
end

-- Battle Animations (Dragoon Transformation)
R3K_WriteMem16(0x800183F8,0x0000)

-- Battle Animations (Dragoon Magic)
local dither_flag = R3K_ReadMem16(0x0E3FA0)
if dither_flag == 0x0200 then
R3K_WriteMem16(0x800E3FA0,0x0000)
end

end

EM_AddVsyncHook(patcher)

app_boot.lua
Code:
require "disc-selection"

local default_disc_map = {
  en = { "disc1.bin" , "disc2.bin" , "disc3.bin" , "disc4.bin" }
  
}

RegisterDiscs(default_disc_map)

Still a work in progress, but the game runs perfectly! I initially encountered the same softlock issue from the official sony release, when using Dragoon magic. Increasing the cdrom-cmd-time from 100 to 650 fixed the issue!

The dithering removal is mostly complete. I've been patching the game, as I play through it. This looks sooo much cleaner than the official sony release!

If anyone runs into any issues, let me know. Otherwise, enjoy!
The value of 650 is obviously not enough. I have not tested other versions. In the NTSC-J version, random soft locks will also occur in BOSS battles. I increased the value to 1650 and all random soft locks have been eliminated. Thank you very much Configuration tips. I'm now on disc four, and without disc swapping you'd still be stuck there.
 
I edited my original Legend of Dragoon post with some new settings and comments. After a lot of trial and error, I found a way to use the EM_SwapDisc function. It only takes one parameter, the disc number. Note this won't actually cause the swapped disc to load. You'll have to find out how to toggle the cd-rom lid open code, in the game of interest, in order to make use of this.

Edit:
Here's the discswap code from the official release
Code:
-- Lua 5.3
-- Title:  Legend of Dragoon
-- Author:  Phil Bennett

-- Changelog:


local function ChangeDisc()
   local curDisc = EM_GetDiscId()
   local newDisc = R3K_ReadMem32(discNumAddr)

   if newDisc >= 1 and newDisc <= 4 and curDisc ~= newDisc then
     print(string.format("Switching to disc %d", newDisc))
     EM_DiscSwap(newDisc)
   end
end

-- Hack to prevent the data streaming system from running into the
-- weeds if extra DRDY interrupts occur before a pause command can
-- execute.
local function DSSyncHack()
   R3K_WriteMem32(DSSyncCBPtr, 0)
end

local titleId = EM_GetLegacyTitleId()

if (titleId:find("^SCUS")) then -- US
   R3K_AddHook(0x800d9744, 0x27bdffe8, ChangeDisc)
   discNumAddr = 0x8004ddc0
   R3K_AddHook(0x80015014, 0x2402ffff, DSSyncHack)
   DSSyncCBPtr = 0x800c1bb4
elseif (titleId:find("^SCPS")) then -- JP
   R3K_AddHook(0x800d8464, 0x27bdffe8, ChangeDisc)
   discNumAddr = 0x8004d5a0
   R3K_AddHook(0x80014c58, 0x2402ffff, DSSyncHack)
   DSSyncCBPtr = 0x800c08d4
elseif (titleId:find("^SCES%d3043")) then -- EN
   R3K_AddHook(0x800d997c, 0x27bdffe8, ChangeDisc)
   discNumAddr = 0x8004dfe4
   R3K_AddHook(0x80015240, 0x2402ffff, DSSyncHack)
   DSSyncCBPtr = 0x800c1dec
elseif (titleId:find("^SCES%d3044")) then -- FR
   R3K_AddHook(0x800d9a3c, 0x27bdffe8, ChangeDisc)
   discNumAddr = 0x8004e12c
   R3K_AddHook(0x80015324, 0x2402ffff, DSSyncHack)
   DSSyncCBPtr = 0x800c1eac
elseif (titleId:find("^SCES%d3045")) then -- DE
   R3K_AddHook(0x800d9a2c, 0x27bdffe8, ChangeDisc)
   discNumAddr = 0x8004e0c8
   R3K_AddHook(0x800152c0, 0x2402ffff, DSSyncHack)
   DSSyncCBPtr = 0x800c1e9c
elseif (titleId:find("^SCES%d3046")) then -- IT
   R3K_AddHook(0x800d9a64, 0x27bdffe8, ChangeDisc)
   discNumAddr = 0x8004e0e4
   R3K_AddHook(0x800152dc, 0x2402ffff, DSSyncHack)
   DSSyncCBPtr = 0x800c1ed4
elseif (titleId:find("^SCES%d3047")) then -- ES
   R3K_AddHook(0x800d9a6c, 0x27bdffe8, ChangeDisc)
   discNumAddr = 0x8004e128
   R3K_AddHook(0x80015320, 0x2402ffff, DSSyncHack)
   DSSyncCBPtr = 0x800c1edc
else
   print("Unhandled titleId: ", titleId)
end
 
Last edited:
@wigwrm
Superb work on Legend of Dragoon
Any interest in setting up the auto disc swap for Metal gear solid? or possibly Final Fantasy VII - VIII games? Tutorial on how to find offsets for auto disc swap would be huge?
Thanks for reply in advance
 
@wigwrm
Superb work on Legend of Dragoon
Any interest in setting up the auto disc swap for Metal gear solid? or possibly Final Fantasy VII - VIII games? Tutorial on how to find offsets for auto disc swap would be huge?
Thanks for reply in advance
I'll try my luck with metal gear. As far as a tutorial goes, I'm not sure right now what I could write up. Using no$psx with a save file that causes a insert disc screen is where to start. If I can find an actual pattern to any of this, I'll be sure to report my findings.

Decompilation projects help a ton. They are good sources to gleem cdrom and data loading functions from. A little luck and tinkering is really the magic behind all of this.
 
By the way, another configuration of the official Legend of Dragoon is to fix the delay. According to the above example, we can repair any game that requires multiple discs to be exchanged。

Code:
-- Lua 5.3
-- Title:   Legend Of Dragoon (SIEA)
-- Author:  Ernesto Corvi

-- Changelog:

function SpeedupPatch()
    -- Modchip detection routine has a 6 second delay using a vsync counter (0x1C64EC) sitting in a tight loop
    -- Skip the delay entirely
    R3K_SetGpr(gpr.v0, 0x0f)
    print("Skipping wait")
end

local titleId = string.upper(EM_GetLegacyTitleId())

if (titleId:find("^SCUS")) then
    R3K_AddHook(0x801BFD8C, 0x3C01801C, SpeedupPatch)

elseif (titleId:find("^SCPS")) then
    R3K_AddHook(0x801BF808, 0x3C01801C, SpeedupPatch)

elseif (titleId:find("^SLPS")) then
    ; -- Nothing

else
    print("Unhandled image: ", titleId)

end
 
The Legend of Dragoon (SCUS94491) (The Legend of Dragoon emu) (5.05)

config-title.txt
Code:
--ctlanalog=true
--cdrom-cmd-time=1000

# Use the new shared image directory
--image-dir=data

# to solve issue of 7+ seconds delay on swapping discs
--cdrom-cache-mode=priority

# Enable LopnorSPU to fix some audio issues
--use-lopnor-spu=1

# Increase global volume
--app-volume=1.0

app_boot.lua
Code:
require "disc-selection"

local ntsc_disc_map = {
    en = {
        "LegendofDragoon_SCUS94491_SCEA_EN_DISC1.bin",
        "LegendofDragoon_SCUS94584_SCEA_EN_DISC2.bin",
        "LegendofDragoon_SCUS94585_SCEA_EN_DISC3.bin",
        "LegendofDragoon_SCUS94586_SCEA_EN_DISC4.bin",
    }
}

RegisterDiscs(pal_disc_map, ntsc_disc_map)

The Legend of Dragoon. Swap Disc and GamePlay Test!
VIDEO


Other main files from official release is attached!
 

Attachments

looks like we have now all the functions of PSX emu after the release of TLOD swap disc thing. except texture replacement & memory card import/export (using the official method thru usb).
 
Last edited:
Call of Cthulhu Prisoner of Ice (SLPS01129)

Code:
-- Call of Cthulhu Prisoner of Ice (Multi Lang Patched)
-- emu used=syphonfilter 3

config-title.txt
Code:
--gpu-scanout-fps-override=ntsc
--scale=6
--gamma=5
--brightness=9
--contrast=8
--cdrom-cmd-time=100
--cdrom-max-seek=true
--sim-analog-pad=0x2020
--globalgamedata-dir=global
--enable-change-disc-ui=true

app_boot.lua

Code:
require "disc-selection"

local default_disc_map = {
  en = { "disc1.bin" , "disc2.bin" , "disc3.bin" , "disc4.bin" }
 
}

RegisterDiscs(default_disc_map)

Call of Cthulhu Prisoner of Ice. Multi Lang Test!
VIDEO
 
Tom and Jerry in House Trap - ( SLUS01191)

config-title.txt

Code:
# Tom and Jerry in House Trap (all regions)

--ctlanalog=true
--gpu-scanout-fps-override=ntsc
--gamma=5
--brightness=10
--contrast=8
--antialias=SSAA4x

# PlayStation BIOS Dumps

--bios-hide-sce-osd=1
--has-shown-start-select-help=1

# Use the new shared image directory
--image-dir=data

# Enable LopnorSPU to fix some audio issues
--use-lopnor-spu=1

# PS1 ID

--ps1-title-id=SLUS01191

# Use the new multitap?

--multitap=always

# following settings are machine-generated
--ps4-trophies=0
--ps5-uds=0
--trophies=0

--globalgamedata-dir=global

# Allow the user to change between PAL and NTSC
--userui-region-selector=false

# Emu used = Syphon Filter 3

SLUS01191.lua
Code:
-- Title: Tom and Jerry in House Trap
-- ported to PS4 lua by JSimesen
-- emu used= Legend of Dragoon - Syphon Filter 3

local patcher = function()

-- Disable dithering
R3K_WriteMem16(0x300232D5,0x0000)
R3K_WriteMem16(0x30026631,0x0000)
R3K_WriteMem16(0x800232D4,0x0000)
R3K_WriteMem16(0x8002470C,0x0000)
R3K_WriteMem16(0x80026630,0x0000)
end

EM_AddVsyncHook(patcher)

app_boot.lua
Code:
require "disc-selection"

local default_disc_map = {
   en = { "Tom_and_Jerry_in_House_Trap.bin" }
   
}

RegisterDiscs(default_disc_map)

Disable dithering patch - added!
 

Attachments

Back
Top