PSX-FPKG

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

Thank you, but why is this screen appearing if that is the case? I am definitely using the NTSC-U version.

I also check the game there no LibCrypt (with BPC register). Redump database said no to http://redump.org/disc/2503/

For some reason the widescreen patch is what causing it. But the no dithering is fine.

Code:
-- Medievil 2
-- ported to PS4 lua
-- emu used=syphonfilter v2
local patcher = function()
--Widescreen (dont work)
--R3K_WriteMem16(0xD0129044,0x1999)
--R3K_WriteMem16(0x80129044,0x1333)
--Disable dithering
R3K_WriteMem16(0x800A422C,0x0000)
end
EM_AddVsyncHook(patcher)
 
Last edited:
I also check the game there no LibCrypt (with BPC register). Redump database said no to http://redump.org/disc/2503/

For some reason the widescreen patch is what causing it. But the no dithering is fine.

Code:
-- Medievil 2
-- ported to PS4 lua
-- emu used=syphonfilter v2
local patcher = function()
--Widescreen (dont work)
--R3K_WriteMem16(0xD0129044,0x1999)
--R3K_WriteMem16(0x80129044,0x1333)
--Disable dithering
R3K_WriteMem16(0x800A422C,0x0000)
end
EM_AddVsyncHook(patcher)

Wide screen code should look like this to work

Code:
-- Medievil 2
-- ported to PS4 lua
-- emu used=syphonfilter v2

local patcher = function()
--Widescreen
local wide1 = R3K_ReadMem16(0x129044)
if wide1 == 0x1999 then
R3K_WriteMem16(0x80129044,0x1333)
end

--Disable dithering
R3K_WriteMem16(0x800A422C,0x0000)
end

EM_AddVsyncHook(patcher)

codes that start with "D" are conditional. You must convert them further
 
I've tried to port no dithering code to Soul Reaver (NTSC version), but for some reason it's breaking the game when trying to go to different area. Can someone take a look at it?

Original gs/ar code:
Code:
D0026958 0640
30026959 0004
D0027E48 0268
30027E49 0000
D002A7BC 0640
3002A7BD 0004
D002A910 0208
3002A911 0000
D002B284 0640
3002B285 0004
D002B2A4 0620
3002B2A5 0004
D0044C9C 0620
30044C9D 0004
D0044E28 0620
30044E29 0004
D0045574 0620
30045575 0004
D004557C 0640
3004557D 0004
D0046214 0600
30046215 0004
D004D8A8 0620
3004D8A9 0004
D004E050 0620
3004E05A 0004
D004EA4C 0640
3004EA4D 0004
D004EA54 0620
3004EA52 0004
D00BB87C 0200
300BB87D 0000
D00BCCB4 1000
300BCCB5 0000

LUA
Code:
-- The Legacy Of Kain Soul Reaver SLUS00708
if true then
end
local patcher = function()
-- No dithering
local no_dithering1 = R3K_ReadMem16(0x80026958)
if no_dithering1 == 0x0640 then
R3K_WriteMem16(0x80026959,0x0004)
end
local no_dithering2 = R3K_ReadMem16(0x80027E48)
if no_dithering2 == 0x0268 then
R3K_WriteMem16(0x80027E49,0x0000)
end
local no_dithering3 = R3K_ReadMem16(0x8002A7BC)
if no_dithering3 == 0x0640 then
R3K_WriteMem16(0x8002A7BD,0x0004)
end
local no_dithering4 = R3K_ReadMem16(0x8002A910)
if no_dithering4 == 0x0208 then
R3K_WriteMem16(0x8002A911,0x0000)
end
local no_dithering5 = R3K_ReadMem16(0x8002B284)
if no_dithering5 == 0x0640 then
R3K_WriteMem16(0x8002B285,0x0004)
end
local no_dithering6 = R3K_ReadMem16(0x8002B2A4)
if no_dithering6 == 0x0620 then
R3K_WriteMem16(0x8002B2A5,0x0004)
end
local no_dithering7 = R3K_ReadMem16(0x80044C9C)
if no_dithering7 == 0x0620 then
R3K_WriteMem16(0x80044C9D,0x0004)
end
local no_dithering8 = R3K_ReadMem16(0x80044E28)
if no_dithering8 == 0x0620 then
R3K_WriteMem16(0x80044E29,0x0004)
end
local no_dithering9 = R3K_ReadMem16(0x80045574)
if no_dithering9 == 0x0620 then
R3K_WriteMem16(0x80045575,0x0004)
end
local no_dithering10 = R3K_ReadMem16(0x8004557C)
if no_dithering10 == 0x0640 then
R3K_WriteMem16(0x8004557D,0x0004)
end
local no_dithering11 = R3K_ReadMem16(0x80046214)
if no_dithering11 == 0x0600 then
R3K_WriteMem16(0x80046215,0x0004)
end
local no_dithering12 = R3K_ReadMem16(0x8004D8A8)
if no_dithering12 == 0x0620 then
R3K_WriteMem16(0x8004D8A9,0x0004)
end
local no_dithering13 = R3K_ReadMem16(0x8004E050)
if no_dithering13 == 0x0620 then
R3K_WriteMem16(0x8004E05A,0x0004)
end
local no_dithering14 = R3K_ReadMem16(0x8004EA4C)
if no_dithering14 == 0x0640 then
R3K_WriteMem16(0x8004EA4D,0x0004)
end
local no_dithering15 = R3K_ReadMem16(0x8004EA54)
if no_dithering15 == 0x0620 then
R3K_WriteMem16(0x8004EA52,0x0004)
end
local no_dithering16 = R3K_ReadMem16(0x800BB87C)
if no_dithering16 == 0x0200 then
R3K_WriteMem16(0x800BB87D,0x0000)
end
local no_dithering17 = R3K_ReadMem16(0x800BCCB4)
if no_dithering17 == 0x1000 then
R3K_WriteMem16(0x800BCCB5,0x0000)
end
--Widescreen
R3K_WriteMem16(0x8003A374,0x0C00)
R3K_WriteMem16(0x8003A384,0x0034)
R3K_WriteMem16(0x8003A386,0xAFA0)
R3K_WriteMem16(0x8003A388,0x1000)
R3K_WriteMem16(0x8003A38A,0x2403)
end
EM_AddVsyncHook(patcher)
 
I've tried to port no dithering code to Soul Reaver (NTSC version), but for some reason it's breaking the game when trying to go to different area. Can someone take a look at it?

Original gs/ar code:
Code:
D0026958 0640
30026959 0004
D0027E48 0268
30027E49 0000
D002A7BC 0640
3002A7BD 0004
D002A910 0208
3002A911 0000
D002B284 0640
3002B285 0004
D002B2A4 0620
3002B2A5 0004
D0044C9C 0620
30044C9D 0004
D0044E28 0620
30044E29 0004
D0045574 0620
30045575 0004
D004557C 0640
3004557D 0004
D0046214 0600
30046215 0004
D004D8A8 0620
3004D8A9 0004
D004E050 0620
3004E05A 0004
D004EA4C 0640
3004EA4D 0004
D004EA54 0620
3004EA52 0004
D00BB87C 0200
300BB87D 0000
D00BCCB4 1000
300BCCB5 0000

LUA
Code:
-- The Legacy Of Kain Soul Reaver SLUS00708
if true then
end
local patcher = function()
-- No dithering
local no_dithering1 = R3K_ReadMem16(0x80026958)
if no_dithering1 == 0x0640 then
R3K_WriteMem16(0x80026959,0x0004)
end
local no_dithering2 = R3K_ReadMem16(0x80027E48)
if no_dithering2 == 0x0268 then
R3K_WriteMem16(0x80027E49,0x0000)
end
local no_dithering3 = R3K_ReadMem16(0x8002A7BC)
if no_dithering3 == 0x0640 then
R3K_WriteMem16(0x8002A7BD,0x0004)
end
local no_dithering4 = R3K_ReadMem16(0x8002A910)
if no_dithering4 == 0x0208 then
R3K_WriteMem16(0x8002A911,0x0000)
end
local no_dithering5 = R3K_ReadMem16(0x8002B284)
if no_dithering5 == 0x0640 then
R3K_WriteMem16(0x8002B285,0x0004)
end
local no_dithering6 = R3K_ReadMem16(0x8002B2A4)
if no_dithering6 == 0x0620 then
R3K_WriteMem16(0x8002B2A5,0x0004)
end
local no_dithering7 = R3K_ReadMem16(0x80044C9C)
if no_dithering7 == 0x0620 then
R3K_WriteMem16(0x80044C9D,0x0004)
end
local no_dithering8 = R3K_ReadMem16(0x80044E28)
if no_dithering8 == 0x0620 then
R3K_WriteMem16(0x80044E29,0x0004)
end
local no_dithering9 = R3K_ReadMem16(0x80045574)
if no_dithering9 == 0x0620 then
R3K_WriteMem16(0x80045575,0x0004)
end
local no_dithering10 = R3K_ReadMem16(0x8004557C)
if no_dithering10 == 0x0640 then
R3K_WriteMem16(0x8004557D,0x0004)
end
local no_dithering11 = R3K_ReadMem16(0x80046214)
if no_dithering11 == 0x0600 then
R3K_WriteMem16(0x80046215,0x0004)
end
local no_dithering12 = R3K_ReadMem16(0x8004D8A8)
if no_dithering12 == 0x0620 then
R3K_WriteMem16(0x8004D8A9,0x0004)
end
local no_dithering13 = R3K_ReadMem16(0x8004E050)
if no_dithering13 == 0x0620 then
R3K_WriteMem16(0x8004E05A,0x0004)
end
local no_dithering14 = R3K_ReadMem16(0x8004EA4C)
if no_dithering14 == 0x0640 then
R3K_WriteMem16(0x8004EA4D,0x0004)
end
local no_dithering15 = R3K_ReadMem16(0x8004EA54)
if no_dithering15 == 0x0620 then
R3K_WriteMem16(0x8004EA52,0x0004)
end
local no_dithering16 = R3K_ReadMem16(0x800BB87C)
if no_dithering16 == 0x0200 then
R3K_WriteMem16(0x800BB87D,0x0000)
end
local no_dithering17 = R3K_ReadMem16(0x800BCCB4)
if no_dithering17 == 0x1000 then
R3K_WriteMem16(0x800BCCB5,0x0000)
end
--Widescreen
R3K_WriteMem16(0x8003A374,0x0C00)
R3K_WriteMem16(0x8003A384,0x0034)
R3K_WriteMem16(0x8003A386,0xAFA0)
R3K_WriteMem16(0x8003A388,0x1000)
R3K_WriteMem16(0x8003A38A,0x2403)
end
EM_AddVsyncHook(patcher)

Try:

Code:
-- The Legacy Of Kain Soul Reaver SLUS00708
if true then
end
local patcher = function()
-- No dithering
local no_dithering1 = R3K_ReadMem16(0x026958)
if no_dithering1 == 0x0640 then
R3K_WriteMem16(0x80026959,0x0004)
end
local no_dithering2 = R3K_ReadMem16(0x027E48)
if no_dithering2 == 0x0268 then
R3K_WriteMem16(0x80027E49,0x0000)
end
local no_dithering3 = R3K_ReadMem16(0x02A7BC)
if no_dithering3 == 0x0640 then
R3K_WriteMem16(0x8002A7BD,0x0004)
end
local no_dithering4 = R3K_ReadMem16(0x02A910)
if no_dithering4 == 0x0208 then
R3K_WriteMem16(0x8002A911,0x0000)
end
local no_dithering5 = R3K_ReadMem16(0x02B284)
if no_dithering5 == 0x0640 then
R3K_WriteMem16(0x8002B285,0x0004)
end
local no_dithering6 = R3K_ReadMem16(0x02B2A4)
if no_dithering6 == 0x0620 then
R3K_WriteMem16(0x8002B2A5,0x0004)
end
local no_dithering7 = R3K_ReadMem16(0x044C9C)
if no_dithering7 == 0x0620 then
R3K_WriteMem16(0x80044C9D,0x0004)
end
local no_dithering8 = R3K_ReadMem16(0x044E28)
if no_dithering8 == 0x0620 then
R3K_WriteMem16(0x80044E29,0x0004)
end
local no_dithering9 = R3K_ReadMem16(0x045574)
if no_dithering9 == 0x0620 then
R3K_WriteMem16(0x80045575,0x0004)
end
local no_dithering10 = R3K_ReadMem16(0x04557C)
if no_dithering10 == 0x0640 then
R3K_WriteMem16(0x8004557D,0x0004)
end
local no_dithering11 = R3K_ReadMem16(0x046214)
if no_dithering11 == 0x0600 then
R3K_WriteMem16(0x80046215,0x0004)
end
local no_dithering12 = R3K_ReadMem16(0x04D8A8)
if no_dithering12 == 0x0620 then
R3K_WriteMem16(0x8004D8A9,0x0004)
end
local no_dithering13 = R3K_ReadMem16(0x04E050)
if no_dithering13 == 0x0620 then
R3K_WriteMem16(0x8004E05A,0x0004)
end
local no_dithering14 = R3K_ReadMem16(0x04EA4C)
if no_dithering14 == 0x0640 then
R3K_WriteMem16(0x8004EA4D,0x0004)
end
local no_dithering15 = R3K_ReadMem16(0x04EA54)
if no_dithering15 == 0x0620 then
R3K_WriteMem16(0x8004EA52,0x0004)
end
local no_dithering16 = R3K_ReadMem16(0x0BB87C)
if no_dithering16 == 0x0200 then
R3K_WriteMem16(0x800BB87D,0x0000)
end
local no_dithering17 = R3K_ReadMem16(0x0BCCB4)
if no_dithering17 == 0x1000 then
R3K_WriteMem16(0x800BCCB5,0x0000)
end
--Widescreen
R3K_WriteMem16(0x8003A374,0x0C00)
R3K_WriteMem16(0x8003A384,0x0034)
R3K_WriteMem16(0x8003A386,0xAFA0)
R3K_WriteMem16(0x8003A388,0x1000)
R3K_WriteMem16(0x8003A38A,0x2403)
end
EM_AddVsyncHook(patcher)

Changed the ReadMem16 by removing "80" from the beginning of address. Don't know if this will make a difference..
 
Try:

Code:
-- The Legacy Of Kain Soul Reaver SLUS00708
if true then
end
local patcher = function()
-- No dithering
local no_dithering1 = R3K_ReadMem16(0x026958)
if no_dithering1 == 0x0640 then
R3K_WriteMem16(0x80026959,0x0004)
end
local no_dithering2 = R3K_ReadMem16(0x027E48)
if no_dithering2 == 0x0268 then
R3K_WriteMem16(0x80027E49,0x0000)
end
local no_dithering3 = R3K_ReadMem16(0x02A7BC)
if no_dithering3 == 0x0640 then
R3K_WriteMem16(0x8002A7BD,0x0004)
end
local no_dithering4 = R3K_ReadMem16(0x02A910)
if no_dithering4 == 0x0208 then
R3K_WriteMem16(0x8002A911,0x0000)
end
local no_dithering5 = R3K_ReadMem16(0x02B284)
if no_dithering5 == 0x0640 then
R3K_WriteMem16(0x8002B285,0x0004)
end
local no_dithering6 = R3K_ReadMem16(0x02B2A4)
if no_dithering6 == 0x0620 then
R3K_WriteMem16(0x8002B2A5,0x0004)
end
local no_dithering7 = R3K_ReadMem16(0x044C9C)
if no_dithering7 == 0x0620 then
R3K_WriteMem16(0x80044C9D,0x0004)
end
local no_dithering8 = R3K_ReadMem16(0x044E28)
if no_dithering8 == 0x0620 then
R3K_WriteMem16(0x80044E29,0x0004)
end
local no_dithering9 = R3K_ReadMem16(0x045574)
if no_dithering9 == 0x0620 then
R3K_WriteMem16(0x80045575,0x0004)
end
local no_dithering10 = R3K_ReadMem16(0x04557C)
if no_dithering10 == 0x0640 then
R3K_WriteMem16(0x8004557D,0x0004)
end
local no_dithering11 = R3K_ReadMem16(0x046214)
if no_dithering11 == 0x0600 then
R3K_WriteMem16(0x80046215,0x0004)
end
local no_dithering12 = R3K_ReadMem16(0x04D8A8)
if no_dithering12 == 0x0620 then
R3K_WriteMem16(0x8004D8A9,0x0004)
end
local no_dithering13 = R3K_ReadMem16(0x04E050)
if no_dithering13 == 0x0620 then
R3K_WriteMem16(0x8004E05A,0x0004)
end
local no_dithering14 = R3K_ReadMem16(0x04EA4C)
if no_dithering14 == 0x0640 then
R3K_WriteMem16(0x8004EA4D,0x0004)
end
local no_dithering15 = R3K_ReadMem16(0x04EA54)
if no_dithering15 == 0x0620 then
R3K_WriteMem16(0x8004EA52,0x0004)
end
local no_dithering16 = R3K_ReadMem16(0x0BB87C)
if no_dithering16 == 0x0200 then
R3K_WriteMem16(0x800BB87D,0x0000)
end
local no_dithering17 = R3K_ReadMem16(0x0BCCB4)
if no_dithering17 == 0x1000 then
R3K_WriteMem16(0x800BCCB5,0x0000)
end
--Widescreen
R3K_WriteMem16(0x8003A374,0x0C00)
R3K_WriteMem16(0x8003A384,0x0034)
R3K_WriteMem16(0x8003A386,0xAFA0)
R3K_WriteMem16(0x8003A388,0x1000)
R3K_WriteMem16(0x8003A38A,0x2403)
end
EM_AddVsyncHook(patcher)

Changed the ReadMem16 by removing "80" from the beginning of address. Don't know if this will make a difference..
Unfortunatelly it didn't made any difference, anyway, thank you for your help.
I'll keep digging.
 
I want to thank you for your great support and help. So I want to give you something back ...
I've made especially some PSX2PS4 games for our german friends, tested all and hope there are no errors.

You can find a list of downloads here: [links removed]
 
Last edited by a moderator:
This will enable correct dual analog controls @zolwikwkurwik

Code:
--ctlanalog=on
#--sim-analog-pad=1  <--MUST be disabled!

Tested with Medal of Honor

Thanks for the info, but is there a way to remap the control buttons to analog sticks in this emulator? And another question, is there a widescreen patch for King's Field 1-2-3?
 
Thanks for the info, but is there a way to remap the control buttons to analog sticks in this emulator? And another question, is there a widescreen patch for King's Field 1-2-3?

1st Question: More than likely with some advanced lua scripting.

2nd Question: I have not been able to find any out in the wild
 
Last edited:
Hello friends, I'm having problems with v0.3, when creating the pkg it's giving an error.
[Error]'Specified path does not exist. (param.sfo)'

What am I doing wrong?
 
Your config-title have #Game Settings (Per game), this is for config-region, i need to delete config-region file to use your file ?


yes, I only use one config txt file(config-title.txt). I delete all others from package
Untitled.png

These are all the files need to successfully build. Ignore xlsx file
 
Back
Top