Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

POP-FE PSP: Difference between revisions

From GameBrew
No edit summary
No edit summary
 
(26 intermediate revisions by 2 users not shown)
Line 4: Line 4:
|description=Python script to automate the process of fetching boxart and installing PS1 games (onto your PSP/VITA/PS2/PS3).
|description=Python script to automate the process of fetching boxart and installing PS1 games (onto your PSP/VITA/PS2/PS3).
|author=sahlberg
|author=sahlberg
|lastupdated=2023/08/02
|lastupdated=2024/09/22
|type=PC Utilities
|type=File Operation
|version=1.0.14
|version=1.16
|license=LGPLv2.1
|license=LGPL-2.1
|download=https://dlhb.gamebrew.org/psphomebrew/popfepsp.7z
|download=https://dlhb.gamebrew.org/psphomebrew/popfepsp.7z
|website=https://github.com/sahlberg/pop-fe
|website=https://github.com/sahlberg/pop-fe
|source=https://github.com/sahlberg/pop-fe
|source=https://github.com/sahlberg/pop-fe
|discussion=
}}
}}
{{#seo:
{{#seo:
Line 19: Line 18:
|image_alt=POP-FE
|image_alt=POP-FE
}}
}}
POP-FE is a convenient tool designed for automating the conversion of PSX disk images and their installation on various platforms, such as PSP/VITA, PSIO, PS2, PS3, Retroarch, and PS Classic.
POP-FE is a tool designed for automating the process converting PSX disk images and install them on various platforms, including:
* PSP/VITA.
* PSIO.
* PS2.
* PS3.
* Retroarch.
* PS Classic.
 
For Linux and Windows.


==Features==
==Features==
* It automatically detects the disc ID and game title from the disc image.
* Automatically detects the disc ID and game title from the disc image.
* It automatically downloads PSX cover image and gameplay images.
* Automatically downloads PSX cover image and gameplay images.
* It handles multi-disc games, with up to 5 discs supported.
* It handles multi-disc games, with up to 5 discs supported.
* It automatically disables libcrypt.
* Automatically disables libcrypt.
* It automatically converts any CDDA (Compact Disc Digital Audio) tracks into ATRAC3 format and injects them into the EBOOT (Executable Boot), ensuring beautiful music for those games when played on PS3 and PSP (PlayStation Portable).
* Automatically converts any CDDA (Compact Disc Digital Audio) tracks into ATRAC3 format and injects them into the EBOOT.
* Aside from PS3 packages, it can also convert games for use on PSP/VITA/PS2/PSIO.
* Aside from PS3 packages, it can also convert games for use on PSP/VITA/PS2/PSIO.


==Usage==
==User guide==
For Linux and windows.<br>
pop-fe needs to create a bunch of temporary files while it is processing the data. So run it in a shell from the same directory that pop-fe and its dependencies are installed (if you use the prebuilt binary releases you do not need to perform the manual install).
 
pop-fe can read and process the images from remote directories so you do not need to copy the game images to this directory. Examples:
 
Connect PSP to your Linux/Windows box via USB, then run:
Connect PSP to your Linux/Windows box via USB, then run:
===PSP===
$ ./pop-fe.py --psp-dir=auto /psx/Grandia1of2.cue /psx/Grandia2of2.cue
<pre>
$ ./pop-fe.py --psp-dir=auto /psx/Grandia1of2.cue /psx/Grandia2of2.cue
</pre>
===PS3===
<pre>
$ ./pop-fe.py --ps3-pkg=Grandia.pkg /psx/Grandia1of2.ccd /psx/Grandia2of2.ccd
</pre>


===Formats===
Or create a PS3 PKG:
<pre>
$ ./pop-fe.py --ps3-pkg=Grandia.pkg /psx/Grandia1of2.ccd /psx/Grandia2of2.ccd
.cue  : CUE file. The preferred option. The actual image file is extracted
        from the content of the cue file. If the file-name found inside the
        cue is a relative path it is assumed that the bin/img file is stored
        in the same directory as the cue file.
.ccd  : CCD file. Will be converted to a temporary CUE file before it is used.
.bin  : BIN/IMG files. In this case a temporary .cue file will be created
.img    in the local directory and used for the conversion. This cue file
        will assume that the bin/img file is just one single track of type
        MODE2/2352
.zip  : ZIP file. The ZIP file will be extracted into the local directory
        and if a .cue file is found it will be used.
.*    : Various memory card image formats.
        Memory cards are detected by file size so the extensions does not matter.


The utility supports building and installing the games on various different target platforms.
===Supported formats===
</pre>
The current directory where you run this utility from needs to be writable so that we can use it to store temporary files during the conversing process. It supports and can convert games stored in the following types of file formats:
===Commandline===
<pre>
Command line arguments are:
-v                    : Verbose. Print additional information about what
        operations are performed during the game installation.
--title                : Force the title to use for this game.
        By default pop-fe will automatically discover the
game title from the image file provided. This argument
can be used to override the title if the autodetection
is wrong or fails.
--game_id              : Force the game id. By default pop-fe will extract
        the SYSTEM.CNF file off the game iso and use it to
detect the game-id. This argument can be used to
override the id.
For multidisc games this supports a comma-separated
list of ids.
This argument does not affect libcrypt. Libcrypt
handling will always use the id from the cue/bin.
--cover                : Image to use as the game icon. If not specified pop-fe
        will automatically fetch one from the internet.
--pic0                : Image to use as the PIC0/Screenshot. If not specified
        pop-fe will automatically fetch one from the internet.
--pic1                : Image to use as the PIC1/Screenshot. If not specified
        pop-fe will automatically fetch one from the internet.
--manual              : Specify a http link, zip-file or a directory containing
                        scans of the manual. This is only supported for
PSP at the moment. See Manual section below.
--resolution       : By default resolution is set to '2' (640x512)
        for PAL games. I.e. games with a GameId that starts
with SCES or SLES.
And it is set to '1' (640x480) for all other games,
which are assumed to all be NTSC.
This argument can be used to force the resolution
to a specific value.
        See https://www.psdevwiki.com/ps3/PARAM.SFO#RESOLUTION
for a list of possible values.
--whole-disk          : For PS3 Packages pop-fe will default to only encode
        the data track in the pkg disc image and not the raw
CD-DA tracks. The CD-DA tracks are converted to
ATRAC3 format which is much much smaller which are
then injected into the package.
This makes packaged for games with CD-DA music much
smaller in size. Use this argument if you still want
the raw audio tracks to also be stored in the disc
image. (This is only useful if at a later time you
want to convert the EBOOT.PBP file back into a .BIN
file)
--watermark            : Add a watermark consisting of disk-id and game-title
        to PIC0 for PSP and PSC games.
--list-themes          : This lists all the available themes
--theme <theme>        : Use ICON0/PIC0/PIC1/SND0 from the theme if available
--psio-dir <path>      : This specifies the path to where a PSIO sd card has
                        been mounted. The games will be be installed as
                        <path>/<game-title>/<game-title>.bin
                        If you list more than one file it is assumed these
                        are all the disks part of a multidisc game and
                        MULTIDISC.LST will be created accordingly.
                        PSIO uses CU2 files so must have cue2cu2.py installed
in the same directory as pop-fe.py.
--psp-dir <path>      : This specifies the path to where a PSP sd card has
                        been mounted. The games will be converted into
                        an EBOOT.PBP and will be installed as
                        <path>/PSP/GAME/<game-id>/EBOOT.PBP
                        The EBOOT.PBP will have a cover icon as well as a
                        background image embedded.
If you specify multiple images then a single multi-disk
EBOOT.PBP will be created.
If you specify path as 'auto' then pop-fe will
scan all mounted media and pick the first one that
contains a PSP or VITA memory card.
--psp-install-memory-card : Used to install memory card images on the PSP.
See memory card section below for usage.
--ps2-dir            : This is the directory that holds the USB stick to
        install VCD files for running under POPS on a PS2.
--ps3-pkg            : This creates a PS3 PKG
This requires CU2 files so make sure this script is
installed.
--psc-dir            : This is the directory that holds the USB stick
        with AutoBleem to install to. The game will be installed
as Games/<title>.PBP. The PSC emulator can only handle
single disc PBPs :-(
Specify --psc-dir=auto and it will scan all connected
devices to try to find the one with AutoBleem.
--ps3-libcrypt        : Apply libcrypt patches also when building PS3 Packages.
        This should normally not be needed as we automatically
inject the magic word to the emulator running on the
PS3.
--snd0                : Provide an audio file to be played when this game
        is focused on the XMB. See the SND0.AT3 section below.
--auto-libcrypt      : Try to automatically create and apply a patch for
                        libcrypt. This can be used if there is no proper PPF
file available. This is not 100% reliable.
--retroarch-bin-dir  : The directory where retroarch game bins are to be
                        installed, inside a subfolder. Includes an m3u file
                        for correctly loading multi-dics games.
--retroarch-cue-dir  : The directory where retroarch game cues (as .CD files)
                        are to be installed with their respective bins, inside
                        a subfolder. Includes an m3u file for correctly loading
                        multi-dics games.
                        the different discs inputted.
--retroarch-pbp-dir  : The directory where retroarch game pbp images are to be
                        installed.
--retroarch-thumbnail-dir : Where the coverimage for retroarch should go.
</pre>


===Examples===
* CUE file (.cue). The preferred option. The actual image file is extracted from the content of the cue file.
<pre>
* CCD file (.ccd). Will be converted to a temporary CUE file before it is used.
Assume I have connected my PSP with USB and it is shows up as :
* BIN/IMG files (.bin/.img). In this case a temporary .cue file will be created in the local directory and used for the conversion. This cue file will assume that the bin/img file is just one single track of type MODE2/2352.
  /run/media/sahlberg/disk
* ZIP file (.zip). The ZIP file will be extracted into the local directory and if a .cue file is found it will be used.
 
* CHD file (.chd). This requires that the chdman program is installed.
$ ./pop-fe.py --psp-dir=/run/media/sahlberg/disk /psx/Metal\ Gear\ Solid\ VR\ Missions.cue
* Various memory card image formats (.*). Memory cards are detected by file size so the extensions does not matter.


Or you can just let pop-fe try to discover it automagically for you. This
===Command line and examples===
works for both Linux and Windows:
The utility supports building and installing the games on various different target platforms. Command line arguments are:


$ ./pop-fe.py --psp-dir=auto /psx/Metal\ Gear\ Solid\ VR\ Missions.cue
{| class="wikitable" style="width: 100%;"
!width=15%;| -v
|Verbose. Print additional information about what operations are performed during the game installation.
|-
! --title
|Force the title to use for this game. By default pop-fe will automatically discover the game title from the image file provided. <br>This argument can be used to override the title if the autodetection is wrong or fails.
|-
! --game_id
|Force the game id. By default pop-fe will extract the SYSTEM.CNF file off the game iso and use it to detect the game-id. <br>This argument can be used to override the id.<br> For multidisc games this supports a comma-separated list of ids. <br>This argument does not affect libcrypt. Libcrypt handling will always use the id from the cue/bin.
|-
! --cover
|Image to use as the game icon. If not specified pop-fe will automatically fetch one from the internet.
|-
! --pic0
|Image to use as the PIC0/Screenshot. If not specified pop-fe will automatically fetch one from the internet.
|-
! --pic1
|Image to use as the PIC1/Screenshot. If not specified pop-fe will automatically fetch one from the internet.
|-
! --manual
|Specify a http link, zip-file or a directory containing scans of the manual. This is only supported for PSP at the moment. See Manual section below.
|-
! --resolution
|By default resolution is set to '2' (640x512) for PAL games. I.e. games with a GameId that starts with SCES or SLES. <br>And it is set to '1' (640x480) for all other games, which are assumed to all be NTSC. <br>This argument can be used to force the resolution to a specific value. <br>See https://www.psdevwiki.com/ps3/PARAM.SFO#RESOLUTION for a list of possible values.
|-
! --whole-disk
|For PS3 Packages pop-fe will default to only encode the data track in the pkg disc image and not the raw CD-DA tracks. <br>The CD-DA tracks are converted to ATRAC3 format which is much much smaller which are then injected into the package. <br>This makes packaged for games with CD-DA music much smaller in size. <br>Use this argument if you still want the raw audio tracks to also be stored in the disc image. <br>(This is only useful if at a later time you want to convert the EBOOT.PBP file back into a .BIN file)
|-
! --watermark
|Add a watermark consisting of disk-id and game-title to PIC0 for PSP and PSC games.
|-
! --list-themes
|This lists all the available themes
|-
! --theme <theme>
|Use ICON0/PIC0/PIC1/SND0 from the theme if available
|-
! --psio-dir <path>
|This specifies the path to where a PSIO sd card has been mounted. <br>The games will be be installed as <path>/<game-title>/<game-title>.bin. <br>If you list more than one file it is assumed these are all the disks part of a multidisc game and MULTIDISC.LST will be created accordingly. <br>PSIO uses CU2 files so must have cue2cu2.py installed in the same directory as pop-fe.py.
|-
! --psp-dir <path>
| specifies the path to where a PSP sd card has been mounted. <br>The games will be converted into an EBOOT.PBP and will be installed as <path>/PSP/GAME/<game-id>/EBOOT.PBP. <br>The EBOOT.PBP will have a cover icon as well as a background image embedded.<br> If you specify multiple images then a single multi-disk EBOOT.PBP will be created. <br>If you specify path as 'auto' then pop-fe will scan all mounted media and pick the first one that contains a PSP or VITA memory card.
|-
! --psp-install-memory-card
|Used to install memory card images on the PSP. See memory card section below for usage.
|-
! --psp-use-cdda
|With this setting the PSP EBOOT will be created containing the full CDDA tracks but no ATRAC3 tracks will be injected. This is helpful for games on PSP that depend on the "cdrom" to automatically play the next track when the current track ends, which PSP does not do automatically for ATRAC3 audio files.
|-
! --ps2-dir
|This is the directory that holds the USB stick toinstall VCD files for running under POPS on a PS2.
|-
! --ps3-pkg
|This creates a PS3 PKG. This requires CU2 files so make sure this script is installed.
|-
! --psc-dir
|This is the directory that holds the USB stick with AutoBleem to install to. <br>The game will be installed as Games/<title>.PBP. The PSC emulator can only handle single disc PBPs. <br>Specify --psc-dir=auto and it will scan all connected devices to try to find the one with AutoBleem.
|-
! --ps3-libcrypt
|Apply libcrypt patches also when building PS3 Packages. <br>This should normally not be needed as we automatically inject the magic word to the emulator running on the PS3.
|-
! --ps1_newemu
|This only applies for PS3 PKGs. This switches the emulator to use to ps1_newemu instead of the default ps1_netemu.
|-
! --romhacks
|Comma separated list of romhacks to apply. Only supported types are .ppf and .xdelta files. There must be one romhack for each disk image in the conversion. This requires that you have xdelta3 installed.
|-
! --snd0
|Provide an audio file to be played when this game is focused on the XMB. See the SND0.AT3 section below.
|-
! --auto-libcrypt
|Try to automatically create and apply a patch for libcrypt. <br>This can be used if there is no proper PPF file available. This is not 100% reliable.
|-
! --retroarch-bin-dir
|The directory where retroarch game bins are to be installed, inside a subfolder. <br>Includes an m3u file for correctly loading multi-dics games.
|-
! --retroarch-cue-dir
|The directory where retroarch game cues (as .CD files) are to be installed with their respective bins, inside a subfolder. <br>Includes an m3u file for correctly loading multi-dics games. the different discs inputted.
|-
! --retroarch-pbp-dir
|The directory where retroarch game pbp images are to be installed.
|-
! --retroarch-thumbnail-dir
|Where the coverimage for retroarch should go.
|}


If you specify more than one cue file then it is assumed that this is
Assume you have connected the PSP with USB and it is shows up as: /run/media/sahlberg/disk
a multidisc game and we will use the first cue file to determine the
 
game id and title to be used for the whole set.
$ ./pop-fe.py --psp-dir=/run/media/sahlberg/disk /psx/Metal\ Gear\ Solid\ VR\ Missions.cue
 
Or you can just let pop-fe try to discover it automagically for you. This works for both Linux and Windows:
 
$ ./pop-fe.py --psp-dir=auto /psx/Metal\ Gear\ Solid\ VR\ Missions.cue
 
If you specify more than one cue file then it is assumed that this is a multidisc game and we will use the first cue file to determine the game id and title to be used for the whole set.


Example:
Example:
  # ./pop-fe.py --psp-dir=auto /psx/Grandia1of2.img /psx/Grandia2of2.img
  # ./pop-fe.py --psp-dir=auto /psx/Grandia1of2.img /psx/Grandia2of2.img


During the conversion process the img/bin file will be temporarily converted
During the conversion process the img/bin file will be temporarily converted into an ISO file as NORMAL01.iso in the current directory. This is in order to open the iso9660 image and read the system.cnf file to extract the game id.
into an ISO file as NORMAL01.iso in the current directory.
 
This is in order to open the iso9660 image and read the system.cnf file
You can avoid/skip this step by forcing the game-id from the command line, using (example only):
to extract the game id.
--game-id=SLUS00957
You can avoid/skip this step by forcing the game-id from the command line,
 
using (example only):
    --game-id=SLUS00957
   
Game art and images are fetched from https://psxdatacenter.com/
Game art and images are fetched from https://psxdatacenter.com/
If a file named the same as the CUE but with the extension *_cover.png is found in the game
 
directory it assumed to be the cover image and thus we skip pulling it from psxdatacenter.
If a file named the same as the CUE but with the extension *_cover.png is found in the game directory it assumed to be the cover image and thus we skip pulling it from psxdatacenter.
 
Example: cuefile:  foo.cue and corresponding cover in foo_cover.png
Example: cuefile:  foo.cue and corresponding cover in foo_cover.png


Similarly, files named as <cue>_pic0.png and <cue>_pic1.png are used for the screenshot
Similarly, files named as <cue>_pic0.png and <cue>_pic1.png are used for the screenshot images.
images.
 
</pre>
===Installing Memory Card images on PSP===
Most memory card image formats are supported. To provide a memory card image to install along with the game you just add the filename to the list of images. The file extension does not matter as we detect the memory cards by file size. Some platforms, such as PSP, require a two step process to install the memory cards so follow the onscreen instructions carefully.
 
Example:
./pop-fe.py --psp-dir=auto Crash.cue Crash.srm
 
You can also install a memory card image directly for an already installed game. But before this works, you must have ran the game at least once so that the PSP creates the required metadata files in the SAVEDATA directory. Since you are not providing a disk image to determine the game-id from you must specify game-id explicitely.
 
Example:
./pop-fe.py --psp-dir=auto --game_id=SCUS94900 --psp-install-memory-card Crash.srm
 
===VITA Support===
Vita is supported and you can install EBOOTs for its memory card also. The only difference is that when installing on a PSP you specify the path to the root of the SD card. If you want to install to a SD card for a Vita then you specify the path to the pspemu directory on the SD card:
 
Example:
$ ./pop-fe.py --psp-dir=/run/media/sahlberg/disk/pspemu/ /psx/Metal\ Gear\ Solid\ VR\ Missions.cue
 
or just use the auto feature:
 
$ ./pop-fe.py --psp-dir=auto /psx/Metal\ Gear\ Solid\ VR\ Missions.cue
 
===--fetch-metadata===
This argument will download and install
*<cue>_cover.png,
*<cue>_pic0.png,
*<cue>_pic1.png,
*<cue>.snd0,
*<cue>.manual,
*as well as the game id and title in the directory where the game is stored.
 
This requires that the game directory is writeable.
 
===VMP.PY===
vmp.py is a utility to convert between signed VMP memory card images (as used by PSP) and raw memory card images as created for example by Memory Card Annihilator on the PS2.
 
===SND0.AT3===
For PS3/PSP this is the audio that will be played when this games icon is focused on the XMB. It can either be a 16bit/44100/Stereo WAVE file or a youtube link.
 
If you specify <code>--snd0='auto'</code> then pop-fe will search youtube for the name of the game and the string 'ps1 ost' and use the first search result. YMMV.
 
The game database in gamedb.py contains curated youtube links for some games. IF a game has a curated link then it will be automatically used even if the <code>--snd0 argument</code> is not provided. Please send patches to populate these fields in gamedb.py with more entries.
 
Examples:
  $ ./pop-fe.py --ps3-pkg=alundra.pkg Alundra.cue --snd0='https://www.youtube.com/watch?v=wKmZTw7bmI0&list=PL2S7vVonTF8UZrKK17J8FBksvYbnqyHz-&index=1'
 
  $ ./pop-fe.py --ps3-pkg=alundra.pkg Alundra.cue --snd0=Alundra.WAV
 
  $ ./pop-fe.py --ps3-pkg=alundra.pkg Alundra.cue --snd0=auto
 
If specified as a file it must be WAVE/16bit/stereo/44100Hz.
 
This file/link will be automatically converted into ATRAC3 format using the atracdenc tool. A good way to generate these WAV files is to find a good OST music file for the game at youtube and download it in 3GP format. Then convert it to 44100Hz/Stereo/16bit WAV like so:
 
$ ffmpeg -i Azure\ Dreams\ OST\ 3.\ Overture.3gp  -ar 44100 -ac 2 Azure\ Dreams\ OST\ 3.\ Overture.wav
 
See:
*How to create these type of files by hand https://atunnic.gitbook.io/tnpsh-wiki/big-stinky-brew/aesthetic/snd0-atrac3
*Relation between EA3 and WAV files for ATRAC3 data https://github.com/GrapheneCt/ElevenMPV-A/blob/04885b62dcd7dfb318986cf0b553483975b745a6/ElevenMPV-A/source/audio/at3.cpp#L264
*and https://github.com/GrapheneCt/ElevenMPV-A/blob/04885b62dcd7dfb318986cf0b553483975b745a6/ElevenMPV-A/source/audio/at3.cpp#L132
*Discussions at psx-place https://www.psx-place.com/threads/pop-fe-a-utility-to-create-psx-classics-packages-for-ps3.37426/
 
===Manual===
Pop-fe can create a "Software Manual" for PSP. Use the <code>--manual</code> command line argument and spepcify either a https-link, a zip-file, a cbr-file (==rar) or a directory containing scans of the manual to use to generate DOCUMENT.DAT. The files can be in any format and will be converted to PNG and re-scaled to 480 pixels wide to match the PSP screen.
 
The image filenames must contain a format that pop-fe understands to match page numbers. The naming format that is supported right now are
* Filename must contain a four digit substrung that matches the page number. Example: '0000'.
* Filename must contain 'pag' followed by two digits that matches a page number. Example: 'pag00'.
 
Page-numbering start at either 0 or 1.
 
You can also store the manual locally alongside the cue file. The file needs to have the same name as the cue but the extension .manual The format of this file can either be a pre-processed DOCUMENT.DAT file or it can be a zip file containing image scans.
 
If this file exist then pop-fe will use it as the manual, overriding any any default manual that may be specified in gamedb.py.
 
===PSIO===
PSIO uses a variant of CUE files called CU2. To generate a CU2 file when installing PSIO games you need to have the CUE2CU2.PY tool installed in the same directory as POP-FE.PY.
 
This tool can be downloaded from: https://github.com/NRGDEAD/Cue2cu2
 
Just copy cue2cu2.py to the same directory as pop-fe.py and make it executable: <code>chmod +x cue2cu2.py</code>
 
=== Libcrypt ===
Libcrypt is a copy protection used on a small number of PAL releases. https://red-j.github.io/Libcrypt-PS1-Protection-bible/index.htm
 
The protection is based on careful corruption of the subchannel data of the disk and may prevent the converted games from running on PSP/PS3.
 
When converting to PSP/VITA pop-fe will try to locate and apply a PPF patch file to disable the libcrypt protection, making it possible to run the game on PSP/VITA.
 
This is provided through a curated list of URLs for where to download the fix. This list is very incomplete and needs to be extended. See gamedb.py/libcrypt.
 
===Additional dependencies===
'''Iso-parser:'''
*You need python support to read ISO9660 images. This is needed to be able to read system.cnf to discover the game-id.
*pop-se supports two different such python extensions since the are not all available on all flavors of linux. Pycdio and Pycdlib.
*As long as you have one of them installed things should work: <code>pip3 install pycdio</code> or <code>pip3 install pycdlib</code>
 
'''cue2cu2:'''
*This is a small program that parses a CUE and reformats it into CU2 format.
*It is used by PSIO but also to create the TOC structure we need for PSP EBOOTs when a CCD file is not present. It is also required when creating PS3 PKGs.
*Please install this python script in the same directory as pop-fe. It can be downloaded from https://github.com/NRGDEAD/Cue2cu2
*Make it executable by calling <code>chmod +x cue2cu2.py</code>
 
'''binmerge:'''
*This is a small python program to merge multi-bin files into a single bin. This is required if you intend to use pop-fe with multi-bin disks.
*This tool can be downloaded from https://github.com/putnam/binmerge and should be placed in the same directory as pop-fe.py.
*Make it executable with <code>chmod +x binmerge</code>
 
'''requests:'''
*This is used to fetch data from the internet.
*Install this with: <code>pip3 install requests</code>
 
===CDDA suport===
CDDA is supported for PSP/VITA/PS3 but requires an external tool to convert the audio tracks into ATRAC3 LP2 format.
 
If you do not have this tool installed then pop-fe will still create the EBOOT.PBP image but without the audio tracks.


==Changelog==  
==Changelog==
'''v1.16'''
* Windows filesystems are case insensitive so they treat .cue and .CUE as the same extension.
* Fix extenstion detection in pop-fe to handle uppercase extensions.
'''v1.15'''
*Fix bug when processing a game by CCD.
'''v1.14'''
* Support older POPS versions on PSP
* This involves not generating a PSTITLEIMG section for single disc games.
'''v1.13'''
*This adds support for singledisc games on old versions of POPS on PSP.
'''v1.12'''
*Switch to a different library for youtube audio.
'''v1.11'''
*Update with more assets and features.
'''v1.10'''
* Due to heroic work and contributions by the folks at psx-place and gbatemp.net we now have a LOT of new emulator configuration overrides for PSP and PS3 making a LOT of problematic games playable.
* Even AlienResurrection now works perfectly !!!
'''v1.8'''
*This should greatly speed up conversion of games containing a large SND0 or Manual.
'''v1.7'''
* This version contains A LOT of config updates that fixes close to 300 games that has never worked, or worked with glitches on PSP/VITA.
* The fixes are applied automatically when converting the game into a PSP EBOOT.
'''v1.6'''
*Fix for pop-fe-ps3.exe after the build changed the file layout and broke things.
'''v1.5'''
*fix pop-fe-psp on windows.
'''v1.3'''
*This update adds a number of external configs (that were missing due to a workflow bug) for building games for PS3 PKSs and solves issues with many games.
'''v1.2'''
* We already use the config to make PAL games forced into NTSC run at the correct speed for pop-fe.py.
* Now do the same for pop-fe-ps3
'''v1.1'''
*Fix for incorrect leadout for the disc image which caused some games such as Fear Effect NTSC-U to hang on the PS1 boot screen.
'''v1.0.15'''
* Don't crash just because an image we got was corrupted/unparseable. Just ignore the image instead.
* Also update BloodyRoar2 to use a better/not-corrupted PIC0
'''v1.0.14'''
'''v1.0.14'''
* This release adds a lot more software manuals for psp.
* This release adds a lot more software manuals for psp.


[https://github.com/sahlberg/pop-fe/releases Latest changelog]
[https://github.com/sahlberg/pop-fe/releases Release notes]


== External links ==
== External links ==
* Github - https://github.com/sahlberg/pop-fe
* GitHub - https://github.com/sahlberg/pop-fe
* Reddit - https://www.reddit.com/r/psphacks/comments/wtmbjc/best_psx_tool_popfe/

Latest revision as of 02:31, 22 September 2024

POP-FE
Popfepsp.png
General
Authorsahlberg
TypeFile Operation
Version1.16
LicenseLGPL-2.1
Last Updated2024/09/22
Links
Download
Website
Source

POP-FE is a tool designed for automating the process converting PSX disk images and install them on various platforms, including:

  • PSP/VITA.
  • PSIO.
  • PS2.
  • PS3.
  • Retroarch.
  • PS Classic.

For Linux and Windows.

Features

  • Automatically detects the disc ID and game title from the disc image.
  • Automatically downloads PSX cover image and gameplay images.
  • It handles multi-disc games, with up to 5 discs supported.
  • Automatically disables libcrypt.
  • Automatically converts any CDDA (Compact Disc Digital Audio) tracks into ATRAC3 format and injects them into the EBOOT.
  • Aside from PS3 packages, it can also convert games for use on PSP/VITA/PS2/PSIO.

User guide

pop-fe needs to create a bunch of temporary files while it is processing the data. So run it in a shell from the same directory that pop-fe and its dependencies are installed (if you use the prebuilt binary releases you do not need to perform the manual install).

pop-fe can read and process the images from remote directories so you do not need to copy the game images to this directory. Examples:

Connect PSP to your Linux/Windows box via USB, then run:

$ ./pop-fe.py --psp-dir=auto /psx/Grandia1of2.cue /psx/Grandia2of2.cue

Or create a PS3 PKG:

$ ./pop-fe.py --ps3-pkg=Grandia.pkg /psx/Grandia1of2.ccd /psx/Grandia2of2.ccd

Supported formats

The current directory where you run this utility from needs to be writable so that we can use it to store temporary files during the conversing process. It supports and can convert games stored in the following types of file formats:

  • CUE file (.cue). The preferred option. The actual image file is extracted from the content of the cue file.
  • CCD file (.ccd). Will be converted to a temporary CUE file before it is used.
  • BIN/IMG files (.bin/.img). In this case a temporary .cue file will be created in the local directory and used for the conversion. This cue file will assume that the bin/img file is just one single track of type MODE2/2352.
  • ZIP file (.zip). The ZIP file will be extracted into the local directory and if a .cue file is found it will be used.
  • CHD file (.chd). This requires that the chdman program is installed.
  • Various memory card image formats (.*). Memory cards are detected by file size so the extensions does not matter.

Command line and examples

The utility supports building and installing the games on various different target platforms. Command line arguments are:

-v Verbose. Print additional information about what operations are performed during the game installation.
--title Force the title to use for this game. By default pop-fe will automatically discover the game title from the image file provided.
This argument can be used to override the title if the autodetection is wrong or fails.
--game_id Force the game id. By default pop-fe will extract the SYSTEM.CNF file off the game iso and use it to detect the game-id.
This argument can be used to override the id.
For multidisc games this supports a comma-separated list of ids.
This argument does not affect libcrypt. Libcrypt handling will always use the id from the cue/bin.
--cover Image to use as the game icon. If not specified pop-fe will automatically fetch one from the internet.
--pic0 Image to use as the PIC0/Screenshot. If not specified pop-fe will automatically fetch one from the internet.
--pic1 Image to use as the PIC1/Screenshot. If not specified pop-fe will automatically fetch one from the internet.
--manual Specify a http link, zip-file or a directory containing scans of the manual. This is only supported for PSP at the moment. See Manual section below.
--resolution By default resolution is set to '2' (640x512) for PAL games. I.e. games with a GameId that starts with SCES or SLES.
And it is set to '1' (640x480) for all other games, which are assumed to all be NTSC.
This argument can be used to force the resolution to a specific value.
See https://www.psdevwiki.com/ps3/PARAM.SFO#RESOLUTION for a list of possible values.
--whole-disk For PS3 Packages pop-fe will default to only encode the data track in the pkg disc image and not the raw CD-DA tracks.
The CD-DA tracks are converted to ATRAC3 format which is much much smaller which are then injected into the package.
This makes packaged for games with CD-DA music much smaller in size.
Use this argument if you still want the raw audio tracks to also be stored in the disc image.
(This is only useful if at a later time you want to convert the EBOOT.PBP file back into a .BIN file)
--watermark Add a watermark consisting of disk-id and game-title to PIC0 for PSP and PSC games.
--list-themes This lists all the available themes
--theme <theme> Use ICON0/PIC0/PIC1/SND0 from the theme if available
--psio-dir <path> This specifies the path to where a PSIO sd card has been mounted.
The games will be be installed as <path>/<game-title>/<game-title>.bin.
If you list more than one file it is assumed these are all the disks part of a multidisc game and MULTIDISC.LST will be created accordingly.
PSIO uses CU2 files so must have cue2cu2.py installed in the same directory as pop-fe.py.
--psp-dir <path> specifies the path to where a PSP sd card has been mounted.
The games will be converted into an EBOOT.PBP and will be installed as <path>/PSP/GAME/<game-id>/EBOOT.PBP.
The EBOOT.PBP will have a cover icon as well as a background image embedded.
If you specify multiple images then a single multi-disk EBOOT.PBP will be created.
If you specify path as 'auto' then pop-fe will scan all mounted media and pick the first one that contains a PSP or VITA memory card.
--psp-install-memory-card Used to install memory card images on the PSP. See memory card section below for usage.
--psp-use-cdda With this setting the PSP EBOOT will be created containing the full CDDA tracks but no ATRAC3 tracks will be injected. This is helpful for games on PSP that depend on the "cdrom" to automatically play the next track when the current track ends, which PSP does not do automatically for ATRAC3 audio files.
--ps2-dir This is the directory that holds the USB stick toinstall VCD files for running under POPS on a PS2.
--ps3-pkg This creates a PS3 PKG. This requires CU2 files so make sure this script is installed.
--psc-dir This is the directory that holds the USB stick with AutoBleem to install to.
The game will be installed as Games/<title>.PBP. The PSC emulator can only handle single disc PBPs.
Specify --psc-dir=auto and it will scan all connected devices to try to find the one with AutoBleem.
--ps3-libcrypt Apply libcrypt patches also when building PS3 Packages.
This should normally not be needed as we automatically inject the magic word to the emulator running on the PS3.
--ps1_newemu This only applies for PS3 PKGs. This switches the emulator to use to ps1_newemu instead of the default ps1_netemu.
--romhacks Comma separated list of romhacks to apply. Only supported types are .ppf and .xdelta files. There must be one romhack for each disk image in the conversion. This requires that you have xdelta3 installed.
--snd0 Provide an audio file to be played when this game is focused on the XMB. See the SND0.AT3 section below.
--auto-libcrypt Try to automatically create and apply a patch for libcrypt.
This can be used if there is no proper PPF file available. This is not 100% reliable.
--retroarch-bin-dir The directory where retroarch game bins are to be installed, inside a subfolder.
Includes an m3u file for correctly loading multi-dics games.
--retroarch-cue-dir The directory where retroarch game cues (as .CD files) are to be installed with their respective bins, inside a subfolder.
Includes an m3u file for correctly loading multi-dics games. the different discs inputted.
--retroarch-pbp-dir The directory where retroarch game pbp images are to be installed.
--retroarch-thumbnail-dir Where the coverimage for retroarch should go.

Assume you have connected the PSP with USB and it is shows up as: /run/media/sahlberg/disk

$ ./pop-fe.py --psp-dir=/run/media/sahlberg/disk /psx/Metal\ Gear\ Solid\ VR\ Missions.cue

Or you can just let pop-fe try to discover it automagically for you. This works for both Linux and Windows:

$ ./pop-fe.py --psp-dir=auto /psx/Metal\ Gear\ Solid\ VR\ Missions.cue

If you specify more than one cue file then it is assumed that this is a multidisc game and we will use the first cue file to determine the game id and title to be used for the whole set.

Example:

# ./pop-fe.py --psp-dir=auto /psx/Grandia1of2.img /psx/Grandia2of2.img

During the conversion process the img/bin file will be temporarily converted into an ISO file as NORMAL01.iso in the current directory. This is in order to open the iso9660 image and read the system.cnf file to extract the game id.

You can avoid/skip this step by forcing the game-id from the command line, using (example only):

--game-id=SLUS00957

Game art and images are fetched from https://psxdatacenter.com/

If a file named the same as the CUE but with the extension *_cover.png is found in the game directory it assumed to be the cover image and thus we skip pulling it from psxdatacenter.

Example: cuefile: foo.cue and corresponding cover in foo_cover.png

Similarly, files named as <cue>_pic0.png and <cue>_pic1.png are used for the screenshot images.

Installing Memory Card images on PSP

Most memory card image formats are supported. To provide a memory card image to install along with the game you just add the filename to the list of images. The file extension does not matter as we detect the memory cards by file size. Some platforms, such as PSP, require a two step process to install the memory cards so follow the onscreen instructions carefully.

Example:

./pop-fe.py --psp-dir=auto Crash.cue Crash.srm

You can also install a memory card image directly for an already installed game. But before this works, you must have ran the game at least once so that the PSP creates the required metadata files in the SAVEDATA directory. Since you are not providing a disk image to determine the game-id from you must specify game-id explicitely.

Example:

./pop-fe.py --psp-dir=auto --game_id=SCUS94900 --psp-install-memory-card Crash.srm

VITA Support

Vita is supported and you can install EBOOTs for its memory card also. The only difference is that when installing on a PSP you specify the path to the root of the SD card. If you want to install to a SD card for a Vita then you specify the path to the pspemu directory on the SD card:

Example:

$ ./pop-fe.py --psp-dir=/run/media/sahlberg/disk/pspemu/ /psx/Metal\ Gear\ Solid\ VR\ Missions.cue

or just use the auto feature:

$ ./pop-fe.py --psp-dir=auto /psx/Metal\ Gear\ Solid\ VR\ Missions.cue

--fetch-metadata

This argument will download and install

  • <cue>_cover.png,
  • <cue>_pic0.png,
  • <cue>_pic1.png,
  • <cue>.snd0,
  • <cue>.manual,
  • as well as the game id and title in the directory where the game is stored.

This requires that the game directory is writeable.

VMP.PY

vmp.py is a utility to convert between signed VMP memory card images (as used by PSP) and raw memory card images as created for example by Memory Card Annihilator on the PS2.

SND0.AT3

For PS3/PSP this is the audio that will be played when this games icon is focused on the XMB. It can either be a 16bit/44100/Stereo WAVE file or a youtube link.

If you specify --snd0='auto' then pop-fe will search youtube for the name of the game and the string 'ps1 ost' and use the first search result. YMMV.

The game database in gamedb.py contains curated youtube links for some games. IF a game has a curated link then it will be automatically used even if the --snd0 argument is not provided. Please send patches to populate these fields in gamedb.py with more entries.

Examples:

 $ ./pop-fe.py --ps3-pkg=alundra.pkg Alundra.cue --snd0='https://www.youtube.com/watch?v=wKmZTw7bmI0&list=PL2S7vVonTF8UZrKK17J8FBksvYbnqyHz-&index=1'
 
 $ ./pop-fe.py --ps3-pkg=alundra.pkg Alundra.cue --snd0=Alundra.WAV
 
 $ ./pop-fe.py --ps3-pkg=alundra.pkg Alundra.cue --snd0=auto

If specified as a file it must be WAVE/16bit/stereo/44100Hz.

This file/link will be automatically converted into ATRAC3 format using the atracdenc tool. A good way to generate these WAV files is to find a good OST music file for the game at youtube and download it in 3GP format. Then convert it to 44100Hz/Stereo/16bit WAV like so:

$ ffmpeg -i Azure\ Dreams\ OST\ 3.\ Overture.3gp  -ar 44100 -ac 2 Azure\ Dreams\ OST\ 3.\ Overture.wav

See:

Manual

Pop-fe can create a "Software Manual" for PSP. Use the --manual command line argument and spepcify either a https-link, a zip-file, a cbr-file (==rar) or a directory containing scans of the manual to use to generate DOCUMENT.DAT. The files can be in any format and will be converted to PNG and re-scaled to 480 pixels wide to match the PSP screen.

The image filenames must contain a format that pop-fe understands to match page numbers. The naming format that is supported right now are

  • Filename must contain a four digit substrung that matches the page number. Example: '0000'.
  • Filename must contain 'pag' followed by two digits that matches a page number. Example: 'pag00'.

Page-numbering start at either 0 or 1.

You can also store the manual locally alongside the cue file. The file needs to have the same name as the cue but the extension .manual The format of this file can either be a pre-processed DOCUMENT.DAT file or it can be a zip file containing image scans.

If this file exist then pop-fe will use it as the manual, overriding any any default manual that may be specified in gamedb.py.

PSIO

PSIO uses a variant of CUE files called CU2. To generate a CU2 file when installing PSIO games you need to have the CUE2CU2.PY tool installed in the same directory as POP-FE.PY.

This tool can be downloaded from: https://github.com/NRGDEAD/Cue2cu2

Just copy cue2cu2.py to the same directory as pop-fe.py and make it executable: chmod +x cue2cu2.py

Libcrypt

Libcrypt is a copy protection used on a small number of PAL releases. https://red-j.github.io/Libcrypt-PS1-Protection-bible/index.htm

The protection is based on careful corruption of the subchannel data of the disk and may prevent the converted games from running on PSP/PS3.

When converting to PSP/VITA pop-fe will try to locate and apply a PPF patch file to disable the libcrypt protection, making it possible to run the game on PSP/VITA.

This is provided through a curated list of URLs for where to download the fix. This list is very incomplete and needs to be extended. See gamedb.py/libcrypt.

Additional dependencies

Iso-parser:

  • You need python support to read ISO9660 images. This is needed to be able to read system.cnf to discover the game-id.
  • pop-se supports two different such python extensions since the are not all available on all flavors of linux. Pycdio and Pycdlib.
  • As long as you have one of them installed things should work: pip3 install pycdio or pip3 install pycdlib

cue2cu2:

  • This is a small program that parses a CUE and reformats it into CU2 format.
  • It is used by PSIO but also to create the TOC structure we need for PSP EBOOTs when a CCD file is not present. It is also required when creating PS3 PKGs.
  • Please install this python script in the same directory as pop-fe. It can be downloaded from https://github.com/NRGDEAD/Cue2cu2
  • Make it executable by calling chmod +x cue2cu2.py

binmerge:

  • This is a small python program to merge multi-bin files into a single bin. This is required if you intend to use pop-fe with multi-bin disks.
  • This tool can be downloaded from https://github.com/putnam/binmerge and should be placed in the same directory as pop-fe.py.
  • Make it executable with chmod +x binmerge

requests:

  • This is used to fetch data from the internet.
  • Install this with: pip3 install requests

CDDA suport

CDDA is supported for PSP/VITA/PS3 but requires an external tool to convert the audio tracks into ATRAC3 LP2 format.

If you do not have this tool installed then pop-fe will still create the EBOOT.PBP image but without the audio tracks.

Changelog

v1.16

  • Windows filesystems are case insensitive so they treat .cue and .CUE as the same extension.
  • Fix extenstion detection in pop-fe to handle uppercase extensions.

v1.15

  • Fix bug when processing a game by CCD.

v1.14

  • Support older POPS versions on PSP
  • This involves not generating a PSTITLEIMG section for single disc games.

v1.13

  • This adds support for singledisc games on old versions of POPS on PSP.

v1.12

  • Switch to a different library for youtube audio.

v1.11

  • Update with more assets and features.

v1.10

  • Due to heroic work and contributions by the folks at psx-place and gbatemp.net we now have a LOT of new emulator configuration overrides for PSP and PS3 making a LOT of problematic games playable.
  • Even AlienResurrection now works perfectly !!!

v1.8

  • This should greatly speed up conversion of games containing a large SND0 or Manual.

v1.7

  • This version contains A LOT of config updates that fixes close to 300 games that has never worked, or worked with glitches on PSP/VITA.
  • The fixes are applied automatically when converting the game into a PSP EBOOT.

v1.6

  • Fix for pop-fe-ps3.exe after the build changed the file layout and broke things.

v1.5

  • fix pop-fe-psp on windows.

v1.3

  • This update adds a number of external configs (that were missing due to a workflow bug) for building games for PS3 PKSs and solves issues with many games.

v1.2

  • We already use the config to make PAL games forced into NTSC run at the correct speed for pop-fe.py.
  • Now do the same for pop-fe-ps3

v1.1

  • Fix for incorrect leadout for the disc image which caused some games such as Fear Effect NTSC-U to hang on the PS1 boot screen.

v1.0.15

  • Don't crash just because an image we got was corrupted/unparseable. Just ignore the image instead.
  • Also update BloodyRoar2 to use a better/not-corrupted PIC0

v1.0.14

  • This release adds a lot more software manuals for psp.

Release notes

External links

Advertising: