PS3 ps1_netemu - External Configs and Ad Hoc Params

You mentioned ps1_newemu, not ps1_netemu, in your first post.

Anyways, your categorization seems correct. ps1_emu is by far the sharpest option, but has the lowest compatibility out of the three. I just play via HDMI on my 1080p display, everything looks fine to me with ps1_netemu, but I can understand if people want more out of the image quality.
 
I'm trying to convert all my playstation games but sometimes i get the following error, and the pkg is not created.

Creating D:/_PSX PKGs/PKG/011-Metal Gear Solid_pal.pkg
DISC SLES01370
TITLE METAL GEAR SOLID
GameID pop-fe-ps3-work/SLES01370
Create EBOOT.PBP at pop-fe-ps3-work/SLES01370/USRDIR/CONTENT/EBOOT.PBP
Injecting MAGIC WORD 0x0000 for disc 0
Injecting MAGIC WORD 0x0000 for disc 1
Create ISO.BIN.DAT pop-fe-ps3-work/SLES01370/USRDIR/ISO.BIN.DAT
Signing pop-fe-ps3-work/SLES01370/USRDIR/ISO.BIN.DAT
Create ISO.BIN.EDAT
Create PKG
Traceback (most recent call last):
File "pkg.py", line 595, in <module>
File "pkg.py", line 590, in main
File "pkg.py", line 484, in pack
MemoryError
[6516] Failed to execute script 'pkg' due to unhandled exception!
Finished. D:/_PSX PKGs/PKG/011-Metal Gear Solid_pal.pkg created

There is enough memory free on the system.
Can anyone tell me what causes this?
 
I'm trying to convert all my playstation games but sometimes i get the following error, and the pkg is not created.

Creating D:/_PSX PKGs/PKG/011-Metal Gear Solid_pal.pkg
DISC SLES01370
TITLE METAL GEAR SOLID
GameID pop-fe-ps3-work/SLES01370
Create EBOOT.PBP at pop-fe-ps3-work/SLES01370/USRDIR/CONTENT/EBOOT.PBP
Injecting MAGIC WORD 0x0000 for disc 0
Injecting MAGIC WORD 0x0000 for disc 1
Create ISO.BIN.DAT pop-fe-ps3-work/SLES01370/USRDIR/ISO.BIN.DAT
Signing pop-fe-ps3-work/SLES01370/USRDIR/ISO.BIN.DAT
Create ISO.BIN.EDAT
Create PKG
Traceback (most recent call last):
File "pkg.py", line 595, in <module>
File "pkg.py", line 590, in main
File "pkg.py", line 484, in pack
MemoryError
[6516] Failed to execute script 'pkg' due to unhandled exception!
Finished. D:/_PSX PKGs/PKG/011-Metal Gear Solid_pal.pkg created

There is enough memory free on the system.
Can anyone tell me what causes this?

That looks like the system is running out of memory.
Line 484 is a simple python statement :
dataToEncrypt += b'\0' * (((file.fileSize + 0x0F) & ~0x0F) - len(fileData))

That really just extends the python object/bytearray dataToEncrypt with a string of 0-bytes.
This operation will require additional memoruy to be allocated and this seems to fail inside the python runtime,
causing this exception to be thrown.

On windows, try adding a few more GigaBytes to the paging file to extend the amouynt of memory available to applications.
 
Besides sound issues in NTSC games played on PAL consoles is there any other issue? I recently noticed stutter in an NTSC game I converted and was surprised to see how smooth the PAL version looked in comparison, it's the first time I notice this but perhaps it affects other NTSC games played on PAL console.
 
ps1_netemu is closed source, so it will not be possible to add stuff like that.


The PSN PKGs do not use any config. Where exactly does it freeze? Can you provide a save file?
I've had the same issue - I was going to post a link to my save files but I apparently don't have permission.

For Spyro 3 it hangs on the Demo Mode screen for the PS3 PKG and PSP EBOOT. For two of my save files there's a black screen after you load the file, the other freezes within seconds of the game screen coming up.
For Spyro 2 it has similar behaviour with Demo Mode. I quickly tested the game on a clear save and got a black screen when I tried to enter Idol Springs. I didn't try any of the other worlds.
For Spyro 1 the Demo Mode worked and entering Lofty Castle worked. I haven't had the chance to test further than that.

I should specify that this is for the PAL versions of the games

Link to the Spyro save files:
https://drive.google.com/drive/folders/10z2WVsUwhUHwrchHkUmiqkpiSVUN5wj1?usp=share_link
 
Last edited by a moderator:
Is there a proper way to run "Crash Bash (Europe) (En,Fr,De,Es,It)" in cue/bin/lsd format via webman/managunz/irisman with some ad hoc params to fix speed and synchro issues? I know that I can play the USA NTSC version but i wish to have it in my own language! XD
 
Hello, I'm new here.Could someone teach me how to fix the audio of the silent Hill game?
I managed to download the .CONFIG file, but I don't know where to put it.
 
Hello, I'm new here.Could someone teach me how to fix the audio of the silent Hill game?
I managed to download the .CONFIG file, but I don't know where to put it.

The config data is embedded inside the ISO.BIN.EDAT file, which is encrypted.
You can patch ISO.BIN.DAT and inject the config at offset 0x424 into the PSISOIMG section, then re-sign the ISO.BIN.DAT and encrypt it into ISO.BIN.EDAT.
That is actually pretty involved and hard-ish to do even for veterans.

Just convert the game using pop-fe and it will automatically inject the config into the generated PKG file.
It is much easier.
 
The config data is embedded inside the ISO.BIN.EDAT file, which is encrypted.
You can patch ISO.BIN.DAT and inject the config at offset 0x424 into the PSISOIMG section, then re-sign the ISO.BIN.DAT and encrypt it into ISO.BIN.EDAT.
That is actually pretty involved and hard-ish to do even for veterans.

Just convert the game using pop-fe and it will automatically inject the config into the generated PKG file.
It is much easier.

Thank you very much, I managed to apply it to PKG and it is working perfectly.
 
Just convert the game using pop-fe and it will automatically inject the config into the generated PKG file.
It is much easier.
Can I feed my existing ISO.BIN.EDAT by itself into pop-fe and patch it, so that I don't have to convert the entire game?
 
Last edited:
Making a request for PS1 Harry Potter Sorcerer's Stone and Phantom Menace. Phantom Menace got a re-release on the PS4/PS5, so it is interesting if there are any configs that can be created based on that. From the title config file:

Code:
# Star Wars Episode I The Phantom Menace (all regions)

--ctlanalog=true
--force-pad-disconnect=0b1110

--bios-hide-sce-osd=1
--ps5-uds=0

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

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

# Required to work-around MAST-3353, 3821 and 3794
--cdrom-cmd-time=1000
--mdec-dma-period0=5
--mdec-dma-period1=5

# Prevent VRAM garbage from showing in the movie borders
--drawrect-fill-hack=true


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

--globalgamedata-dir=global


LUA patches:
Code:
-- Lua 5.3
-- Title:   Star Wars Episode I: The Phantom Menace
-- Author:  Ali Burakaz

print ("---------------------------------------------------------------------------------------")
print ("_NOTE: OPENING patches.lua")
print ("---------------------------------------------------------------------------------------")

--
-- Initialization
--

local id = EM_GetLegacyTitleId()
    id = string.sub(id, 5)                -- just need the identifying numbers
print ("_NOTE: ID = ", id)

local NOP = 0
local control_locked = false
local in_turret = false
local turret_control_pointer = 0
local turret_control = 0

if id == "00884" then
    print ("---------------------------------------------------------------------------------------")
    print ("Trophy Region: SIEA")
    print ("---------------------------------------------------------------------------------------")
   
    i_enter_turret = {0x30fa8, 0x90820003}
    i_exit_turret = {0x030fc4, 0x9082000e}

    i_vsync_start = {0x011248, 0x96648a34}
    i_set_vsync = {0x11238, 0xACA37914}
    mem_vsyncs = 0x77914
   
elseif id == "02034" then
    print ("---------------------------------------------------------------------------------------")
    print ("Patch Region: SIEE EN")
    print ("---------------------------------------------------------------------------------------")
   
    i_vsync_start = {0x011248, 0x96648a90}
    --i_set_vsync = {0x11238, 0xaca37940}
    mem_vsyncs = 0x77940
   
    i_enter_turret = {0x30fd8, 0x90820003}
    i_exit_turret = {0x30ff8, 0xa480000e}
   
   
   
    credits_vpos_hack = {0x8001b780, 0x8001b798}

elseif id == "02035" then
    print ("---------------------------------------------------------------------------------------")
    print ("Patch Region: SIEE FR")
    print ("---------------------------------------------------------------------------------------")
   
    i_vsync_start = {0x011248, 0x96648fa4}
    --i_set_vsync = {0x11238, 0xaca3795c}
    mem_vsyncs = 0x07795C

    i_enter_turret = {0x30fdc, 0x90820003}
    i_exit_turret = {0x30ffc, 0xa480000e}

    credits_vpos_hack = {0x8001b770, 0x8001b788}
   
   
elseif id == "02037" then
    print ("---------------------------------------------------------------------------------------")
    print ("Patch Region: SIEE IT")
    print ("---------------------------------------------------------------------------------------")
   
    i_vsync_start = {0x011248, 0x96648d38}
    --i_set_vsync = {0x11238, 0xaca3791c}
    mem_vsyncs = 0x07791c
   
    i_enter_turret = {0x30fb4, 0x90820003}
    i_exit_turret = {0x030fd0, 0x9082000e}

    credits_vpos_hack = {0x8001b748, 0x8001b760}
   
elseif id == "02036" then
    print ("---------------------------------------------------------------------------------------")
    print ("Patch Region: SIEE DE")
    print ("---------------------------------------------------------------------------------------")
   
    i_vsync_start = {0x011248, 0x96648dd4}
    --i_set_vsync = {0x11238, 0xaca3791c}
    mem_vsyncs = 0x07791c
   
    i_enter_turret = {0x30fb4, 0x90820003}
    i_exit_turret = {0x030fd0, 0x9082000e}
   
    credits_vpos_hack = {0x8001b748, 0x8001b760}
   
elseif id == "02038" then
    print ("---------------------------------------------------------------------------------------")
    print ("Patch Region: SIEE ES")
    print ("---------------------------------------------------------------------------------------")
   
    i_vsync_start = {0x011248, 0x96648ea4}
    --i_set_vsync = {0x01125C, 0xaca37920}
    mem_vsyncs = 0x077920

    i_enter_turret = {0x30fb8, 0x90820003}
    i_exit_turret = {0x030FD4, 0x9082000e}

    credits_vpos_hack = {0x8001b74c, 0x8001b764}
   
elseif id == "02153" then
    print ("---------------------------------------------------------------------------------------")
    print ("Patch Region: SIEJ")
    print ("---------------------------------------------------------------------------------------")
   
    i_enter_turret = {0x032980, 0x90820003}
    i_exit_turret = {0x03299C, 0x9082000e}
   
    i_vsync_start = {0x0112C4, 0x8668aacc}
    --i_set_vsync = {0x0112BC, 0xac829cec}
    mem_vsyncs = 0x79CEC
end

--Disable the code for dynamic framerate, and force to 30FPS (VSYNC wait of 2)
local function vsync_lock()
    --If never entered turret, default to 30fps
    if turret_control_pointer == 0 then
        R3K_WriteMem8(mem_vsyncs, 2)
        R3K_WriteMem8(mem_vsyncs + 0xC, 2)
        return
    end
   
    --If in turret, do not lock FPS because game cant keep up with 30
    if  R3K_ReadMem16(turret_control_pointer + 0xE) == 1 and  R3K_ReadMem32(turret_control_pointer + 0xA) == turret_control then
        --
    else
        R3K_WriteMem8(mem_vsyncs, 2)
        R3K_WriteMem8(mem_vsyncs + 0xC, 2)
    end
end

local function enter_turret()
    in_turret = true
    turret_control_pointer = R3K_GetGpr(gpr.a0)
    turret_control = R3K_ReadMem32(turret_control_pointer + 0xA)
    print(string.format("Entering Turret ptr: %x control %x", turret_control_pointer, turret_control))
end

local function exit_turret()
    in_turret = false
    turret_control_pointer = R3K_GetGpr(gpr.a0)
    turret_control = R3K_ReadMem32(turret_control_pointer + 0xA)
    print(string.format("Exiting Turret ptr: %x control %x", turret_control_pointer, turret_control))
end

--R3K_InsnReplace(i_set_vsync[1], i_set_vsync[2], NOP)
R3K_AddHook(i_vsync_start[1], i_vsync_start[2], vsync_lock)
R3K_AddHook(i_enter_turret[1], i_enter_turret[2], enter_turret)
R3K_AddHook(i_exit_turret[1], i_exit_turret[2], exit_turret)



print("30FPS VSync lock activated. Only a Sith deals in FPS below 30.")

---------------------------------------------------------------------------

local function vpos_hack()
    R3K_SetGpr(gpr.a2, 64)
end

if credits_vpos_hack ~= nil then
    R3K_AddHook(credits_vpos_hack[1], 0x24070140, vpos_hack)
    R3K_AddHook(credits_vpos_hack[2], 0x24070140, vpos_hack)
end
 
Back
Top