Giter VIP home page Giter VIP logo

pop-fe's Introduction

POPstation-FEtcher
==================
==================

POP-FE a tool to automate the process converting PSX disk images and install
them on various platforms, including:
* PSP/VITA
* PSIO
* PS2
* PS3
* Retroarch
* PS Classic

This is all LGPLv2.1

TL;DR
For Linux and windows.
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

or ...


Enjoy.



HOW TO RUN POP-FE:
==================
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.
You do not need to copy the game images to this directory.
Pop-fe can read and process the images from remote directories.


POP-FE:
=======
A utility to automate building and installing PSX games onto different
systems.
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   : 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.
.chd   : CHD file. 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.

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.
--logo                 : Image to use as the Boot logo on PSP. If not specified
		         the default P.O.P.S one will be used.
--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.
			 When forcing the resolution to NTSC for PS3 this
			 will additionally inject the ps1_netemu config option
			 to set the speed of the game correctly.
--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.
--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 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.
--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.
--retroarch-pbp-dir  : The directory where retroarch game pbp images are to be
                        installed.
--retroarch-thumbnail-dir : Where the coverimage for retroarch should go.

#
Examples:
Assume I have connected my 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.


ROMHACKS
========
Romhacks can be provided and automatically applied.
These must either be in PPF format and have a 'ppf' extension or in
Xdelta[3] format and have a 'xdelta' extension.
This is a comma-separated list of hacks to apply, one hack for each disk
in the conversion.
If you don't want to specify a hack for a disk in the set, then specify 'none'.
You must have xdelta3 installed in order to apply such romhacks.

Example:
To apply a romhack on a single disc:
$ ./pop-fe.py --psp-dir=auto --romhacks SMT.xdelta Shin\ Megami\ Tensei.cue

To apply a romhack to only the second disc of a two disc game:
$ ./pop-fe.py --psp-dir=auto --romhacks none,X.ppf D1.cue D2.cue


PS3 External config files
=========================
External configs is a way to add commands to the ps1_netemu emulator to
tweak gameplay and fix bugs for individual titles.

See: https://www.psdevwiki.com/ps3/Talk:PS1_Emulation#External_Configs

pop-fe/pop-fe-ps3 comes with a bunch of configs built in for various games.
(See the ps3configs subdirectory.)

You can also specify additional config files that pop-fe/pop-fe-ps3 will
automatically eject when you create a PS3 package.
This is done by storing the config file in the same directory as the cue file
and with the filename <cue-file>.ps3config

PSP External config files
=========================
External configs is a way to add commands to the pops emulator to
tweak gameplay and fix bugs for individual titles.

See: ...

pop-fe/pop-fe-psp comes with a bunch of configs built in for various games.
(See the pspconfigs subdirectory.)

You can also specify additional config files that pop-fe/pop-fe-psp will
automatically eject when you create a PSP EBOOT.
This is done by storing the config file in the same directory as the cue file
and with the filename <cue-file>.pspconfig

Image files for PS3 packages
============================
PS3 packages uses 3 image files: <cue>_cover.png, <cue>_pic0.png and <cue>_pic1.png
Cover is the game cover and shown in the game list on the XMB.
It is square and it will be resized to 176x176 pixels.
If you provide your own custom image here, create it as 176x176 as then there
will be no blurring due to rescaling.

Pic0 is the foreground image when the game is selected in the XMB. It is
1000x560 pixels in size.

Pic1 is the background image when the game is selected in the XMB. It is
1920x1080 pixels in size.

These files must be named like the cue file.
Example:
MyGame.cue -> MyGame_cover.png MyGame_pic0.png MyGame_pic1.png

Installing Memory Card images on PSP
====================================
Most memory card image formats are supported.
To provide a memory card image to install along with the 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:
  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 --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 varient 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


PS2 Support
===========
Pop-fe can convert games into VCD format and install it on a USB memory stick
that has been prepared to be used with POPStarter and OPL to play PS1 games.
The USB stick must have a POPS subdirectory where the VCD file and memory cards
will be installed and an ART subdirectory for cover and background images.

PS3 Support
===========
Pop-fe can convert games into a PS3 PKG that can be installed on PS3 systems
with CFW or HEN.

PSClassic support
=================
Pop-fe can convert games and install them for use on AutoBleem 1.0 memory
sticks.
Multidisc support only works for when running the PBP from retroarch as the
builtin PCSX emulator does not see to support multidisc PBPs.

RetroArch Support
=================
The PSX emulator cores in retroarch support a variety of formats, with m3u and
pbp files being the most convenient for loading multi-disc games. Pop-fe can
prepare these formats/schemes for retroarch to load.

Preparations
------------
Install ecdsa python module:

$ pip3 install ecdsa

$ cd <directory where pop-fe is installed>

Install PSL1GHT as a subdirectory in the pop-fe directory
and compile the pgcrypt module:

$ git clone https://github.com/sahlberg/PSL1GHT
$ cd PSL1GHT/tools/ps3py
$ git checkout origin/use-python3
$ make
$ cd ../../..

Then to use it just run it as

$ ./pop-fe.py --ps3-pkg=Grandia.pkg Grandia_d1.cue Grandia_d2.cue


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.

PSP/VITA
--------
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, patches
welcome.  See gamedb.py/libcrypt

PS3
---
Libcrypt protected games are automatically patched by injecting the MagicWord
into the package file.
(The MagicWord is a compact representation of the subchannel corruption)
This should be sufficient to allow any games to work when converted to
a PS3 package.
If not, you can use the --ps3-libcrypt argument to force pop-fe to try to find
and apply PPF patches for this game.

ADDITONAL 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.
I support 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 SUPPORT
------------
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.

The instructions to set this tool up are part of the Linux/Windows install
instructions below. (atracdenc)


INSTALLATION
============
Pop-fe has a few external dependencies. It requires python3 and some additional
bits and pieces. Here are some examples on how to install pop-fe and its
dependencies on different OSes:

For installations on Linux/Posix/ you need to have a build environment.
Make sure you have 'git', 'gcc', 'g++', 'make', 'cmake' installed.


Fedora36 Automatic Install:
-------------------------
sudo dnf install python-is-python3
sudo dnf install pip3
sudo dnf install python3-devel
sudo dnf install libsndfile-devel
sudo dnf install ffmpeg
git clone https://github.com/sahlberg/pop-fe.git
cd pop-fe
./pop-fe.py --install


Debian/Mint Automatic Install:
------------------------------
sudo apt install python-is-python3
sudo apt install python3-pip
sudo apt install libsndfile-dev
sudo apt install git
sudo apt install ffmpeg
git clone https://github.com/sahlberg/pop-fe.git
cd pop-fe
./pop-fe.py --install


Debian/Mint Manual Install:
------------------------
sudo apt install python-is-python3
sudo apt install python3-pip
sudo apt install libsndfile-dev
sudo apt install git
git clone https://github.com/sahlberg/pop-fe.git
git clone https://github.com/NRGDEAD/Cue2cu2.git
git clone https://github.com/putnam/binmerge.git
git clone https://github.com/dcherednik/atracdenc.git
pip3 install pytubefix
pip3 install PyPDF2
pip3 install requests
pip3 install pycdlib  (or pip3 install pycdio)
pip3 install ecdsa
pip3 install tkinterdnd2
pip3 install opencv-contrib-python
pip3 install rarfile
pip3 install scikit-learn
pip3 install scipy
cd pop-fe
cp ../Cue2cu2/cue2cu2.py .
chmod +x cue2cu2.py
cp ../binmerge/binmerge .
chmod +x binmerge
git clone http://github.com/sahlberg/PSL1GHT
cd PSL1GHT/tools/ps3py
git checkout origin/use-python3
make
cd ../../..
cd atracdenc/src/
cmake .
make
cd ../..

Windows (x86_64)
----------------
Windows hs prebuilt binary releases of pop-fe available at :
https://github.com/sahlberg/pop-fe/releases
If you use these you do not need to perform the manual install described below.


Install Mingw64/MSYS2
Open Mingw64 Prompt and type

export PATH=$PATH:/mingw64/bin
pacman -S mingw-w64-x86_64-gcc
pacman -S make
pacman -S mingw-w64-x86_64-python
pacman -S git
pacman -S unzip
pacman -S mingw-w64-x86_64-python-pip
pacman -S mingw-w64-x86_64-python-pillow
pip3 uninstall pillow
pip3 install pillow
pip3 install PyPDF2
pip3 install requests
pip3 install pycdlib
pip3 install pycryptodome
pip3 install ecdsa
pip3 install opencv-contrib-python
pip3 install rarfile
pip3 install scikit-learn
pip3 install scipy
git clone https://github.com/sahlberg/pop-fe.git
git clone https://github.com/NRGDEAD/Cue2cu2.git
git clone https://github.com/putnam/binmerge.git
cd pop-fe
cp ../Cue2cu2/cue2cu2.py .
chmod +x cue2cu2.py
cp ../binmerge/binmerge .
chmod +x binmerge
git clone http://github.com/sahlberg/PSL1GHT
cd PSL1GHT/tools/ps3py
git checkout origin/use-python3
make
cd ../../..
wget https://github.com/dcherednik/atracdenc/releases/download/0.0.3/atracdenc-x86_0.0.3.zip
unzip -j atracdenc-x86_0.0.3 -x README.TXT
pip install pyinstaller
pip install pygubu
pyinstaller PSL1GHT/tools/ps3py/pkg.py
pyinstaller cue2cu2.py
pyinstaller binmerge
pyinstaller sign3.py
pyinstaller --add-data "PS3LOGO.DAT;." pop-fe.py
pyinstaller --add-data "PS3LOGO.DAT;." --add-data "pop-fe-ps3.ui;." pop-fe-ps3.py --hidden-import pop-fe --hidden-import pygubu.builder.tkstdwidgets --hidden-import pygubu.builder.ttkstdwidgets --hidden-import pygubu.builder.widgets.pathchooserinput
mkdir dist/pop-fe-ps3/atracdenc
mkdir dist/pop-fe-ps3/atracdenc/src
cp dist/binmerge/binmerge.exe dist/pop-fe-ps3/.
cp dist/cue2cu2/cue2cu2.exe dist/pop-fe-ps3/.
cp dist/pkg/pkg.exe dist/pop-fe-ps3/.
cp dist/pkg/pkgcrypt.cp39-mingw_x86_64.pyd dist/pop-fe-ps3/.
cp dist/pop-fe/pop-fe.exe dist/pop-fe-ps3/.
cp dist/sign3/sign3.exe dist/pop-fe-ps3/.
cp atracdenc.exe dist/pop-fe-ps3/atracdenc/src/.


On windows, always run pop-fe from git-bash and from within the pop-fe
directory.
The directory names for the E: drive-letter is /e etc in the git-bash shell
so use --psp-dir=/e or --psp-dir=auto

You may need to run this command every time you open the MSYS2 shell:
export PATH=$PATH:/mingw64/bin


POP-FE-PS3
==========
pop-fe-ps3.py is a graphical frontend to pop-fe:create_ps3() and can be used to
create PS3 packages from a GUI instead of using the command line.

Docker
----------------
# You can also run pop-fe inside a docker container.
# Assuming Docker is already installed on your preferred distro, run:
docker build -t pop-fe https://github.com/sahlberg/pop-fe.git

# You can then execute pop-fe directly:
docker run -it pop-fe:latest --help
# or get a shell and run pop-fe interactively:
docker run -it --entrypoint /bin/bash pop-fe:latest
./pop-fe.py

# Here is another Docker example where we mount the current host directory into the container at "/psp".
# Directory structure:
# .
# ├── game.bin
# ├── game.cue
# └── pspemu/
#     └── PSP/
#         └── GAME/
docker run -it --volume "$(pwd):/psp" pop-fe:latest --psp-dir=/psp/pspemu /psp/game.cue

pop-fe's People

Contributors

63beetlesmurf avatar fabax01 avatar flamming-python avatar fstarkenberg avatar jmle avatar pyromaniackeca avatar sahlberg avatar traace avatar webardo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pop-fe's Issues

PSP GUI possible Bug + Misc

image

pop-fe PSP:

  1. I don't think changing the GameID field changes the GameID.
  2. When EBOOT is finished being created, it says "PKG" instead of "EBOOT" (Who cares but just fyi)
  3. Does the "Theme" affect anything in the PSP version? If so, can you make it show you a live preview when you select a theme?
  4. After a random PIC1 is pulled from psxdatacenter, can you add the ability to click the PIC1 thumbnail to cycle through the different options?

Thank you, this is nifty and super surprising that it exists

P.S. I'm also curious where you get PIC0 from? In the case of NFSIII, as seen in my pic, it perfectly pulls in a beautiful transparent game logo. Does that come from psxdatacenter too? I didn't see it there. Some games don't have the beautiful transparent logo

BIN/CUE, BIN (track) y BIN no se ejecutan bien en RE2 PAL Spain

Un dato por si ayuda a la mejora de pop-fe. Probe convertir Resident Evil 2 PAL (spain) con BIN en modo multi disco, y solo ejecuta la introducción y el menu principal, pero no el gameplay, aparece la pantalla en negro y sin audio. Lo mismo sucede si lo hago por discos separados. Probe también con un Resident Evil 2 PAL (spain) con BIN (track1)/BIN (track2) y sucede lo mismo. Probe otro igual con BIN/CUE, pero el audio y las voces del gameplay se oyen distorsionadas. Con juegos como Resident Evil Director's Cut BIN PAL y Resident Evil 3 Nemesis BIN PAL (Spain) la conversión, el gameplay y el audio corren muy bien.

Erro 2

Every time I try to create a PSP game, I get the following error [errno 2} "No such file or directory".

How do I resolve this?

Used: [pop-fe-psp

erro 2

Fails To Pull Game ID

Fails to convert game "rayman" worked on very first release:
[INFO] Opening cue: G:\Retro Roms\Sony Playstation\Rayman (USA)\Rayman (USA).cue
[INFO] Merging 51 tracks...
[INFO] Wrote C:\Users\billt\Desktop\pop-fe-ui(5)\pop-fe-ps3-work\MBd1.bin
[INFO] Wrote new cue: C:\Users\billt\Desktop\pop-fe-ui(5)\pop-fe-ps3-work\MBd1.cue
ID SLUS-00005
Fetching SND0
Exception in Tkinter callback
Traceback (most recent call last):
File "tkinter_init_.py", line 1892, in call
File "pop-fe-psp.py", line 237, in on_path_changed
KeyError: 'SLUS-00005'

Fails to pulls game id for the game "D":
[INFO] Opening cue: G:\Retro Roms\Sony Playstation\D (USA) (Disc 1)\D (USA) (Disc 1).cue
[INFO] Merging 3 tracks...
[INFO] Wrote C:\Users\billt\Desktop\pop-fe-ui(5)\pop-fe-ps3-work\MBd1.bin
[INFO] Wrote new cue: C:\Users\billt\Desktop\pop-fe-ui(5)\pop-fe-ps3-work\MBd1.cue
ID NSTACK=
Fetching SND0
Exception in Tkinter callback
Traceback (most recent call last):
File "tkinter_init_.py", line 1892, in call
File "pop-fe-psp.py", line 237, in on_path_changed
KeyError: 'NSTACK='

I also can replicate the same issue in linux as well

Stuck on pkg creation due to an exception

Basically, I was converting Vigilante 8, 2nd offense to pkg, and got this:

Create pop-fe-ps3-work/SLUS00868/SND0.AT3 from ./SND0.EA3
Exception in Tkinter callback
Traceback (most recent call last):
  File "tkinter\__init__.py", line 1892, in __call__
  File "pop-fe-ps3.py", line 498, in on_create_pkg
  File "pop-fe.py", line 799, in create_ps3
AttributeError: 'NoneType' object has no attribute 'size'

I was looking into those lines of code. Seems like what failed was the resizing of ICON0.PNG. See, this is the relevant part of pop-fe.py.
As it is compiled to

...
793    image = None
794    if icon0.size[0] > icon0.size[1] - 10 and icon0.size[0] < icon0.size[1] + 10:
795        img = icon0.resize((176, 176), Image.BILINEAR)
796        image = Image.new(img.mode, (320, 176), (0,0,0)).convert('RGBA')
797        image.putalpha(0)
798        image.paste(img, (72,0))
799    else:
800        image = icon0.resize((320, 176), Image.BILINEAR)
801    image.save(f + '/ICON0.PNG', format='PNG')
802    temp_files.append(f + '/ICON0.PNG')
...

Error making multidisc PKG from PSX games

i got and error converting multidisc games to pkg , I already tried this games The Legend of Dragoon 4 discs, Metal Gear Solid 2 discs, Final Fantasy VII 3 discs. I have to say that these game versions are the Spanish ones. This is the error am getting
photo_2023-05-09_00-07-07

I'm getting a encoding error when using pop-fe on the command line

It happens no matter what cue I use

Traceback (most recent call last): File "pop-fe.py", line 2212, in <module> File "pop-fe.py", line 1523, in get_disc_ids File "bchunk.py", line 75, in open File "cue.py", line 82, in parse_cue ValueError: substring not found [7308] Failed to execute script 'pop-fe' due to unhandled exception!

here's my command

PS C:\Users\Mustacheboyo\Documents\Sony\Tools\pop-fe-ui> .\pop-fe.exe -v --title="Net Yaroze: Collection 2014-2019" --ga me_id="NPEE78898, NPEE78899" --cover="C:\Users\Mustacheboyo\Documents\Sony\PS3\PS1_Classics\NetYaroze\ICON0.PNG" --pic0= "C:\Users\Mustacheboyo\Documents\Sony\PS3\PS1_Classics\NetYaroze\PIC0.PNG" --pic1="C:\Users\Mustacheboyo\Documents\Sony\ PS3\PS1_Classics\NetYaroze\PIC1.PNG" --ps3-pkg="C:\Users\Mustacheboyo\Documents\Sony\PS3\PS1_Classics\NetYaroze\EP1337-N PEE78900_00-NETYAROZE2014019.pkg" --whole-disk "C:\Users\Mustacheboyo\Documents\Sony\PS3\PS1_Classics\NetYaroze\CD [NET_ YAROZE_2014].bin" "C:\Users\Mustacheboyo\Documents\Sony\PS3\PS1_Classics\NetYaroze\CD [NET_YAROZE_2019].bin"

I also tried crash team racing and I got the same result

Fear Effect not loading (PS3)

Hello
I have an issue with Fear Effect NTSC-U SLUS00920, SLUS01056, SLUS01057, SLUS01058. When I convert the bin/cue files and try to play the game, it freezes at the PlayStation logo. When I convert Fear Effect PAL SLES02166, SLES12166, SLES22166, SLES32166 I get a black screen. I checked the CRC-32 and the MD5, and they match the PAL and the NTSC versions of the discs. Is there something I'm doing wrong, or am I missing something.
Best regards

Update
I deleted the "pop-fe-ui" folder and downloaded it again. The PAL version is working, but the NTSC version still freezes at the PlayStation logo.

[Request] POP-FE PSP & PS3

1- Is it possible not to add the game's name and ID on PIC1.PNG as a watermark when the game file is created?
2- Is it possible to add an option for a custom BOOT.PNG the same way as older tools like PSX2PSP offered rather than the POPS Loader splash?
3- Is it possible to allow custom PSP and PS3 sized ICON0.PNG (144x80 for PSP and 320x176 for PS3? Adding a custom picture with those resolutions always squashes it to the default squared shape.

Thank you

[Suggestion] Disable PIC1, PIC0 and music on pop-fe-ps3.exe

Just a suggestion. Sometimes there's no cool background to add and we prefer to disable the backgrounds pics and use the PlayStation 3 XMB theme. When I try to disable the PIC1 appears the back cover picture and it's annoying. It would be nice if possible to create the PS3 PSN art with ESRB Content Rating (like the PSP eboot PSN art).

Error making EBOOT

Path /mnt/zeus/8bay_usb3/roms/ps1/test_pbp/PSP/PSP/GAME exists!

Try URL http://www.hwc.nat.cu/psx/SLUS_012.01_COV.jpg
Id: SLUS01201
Title: ALONE IN THE DARK - THE NEW NIGHTMARE
/home/docmax/github/pop-fe/./pop-fe.py:542: DeprecationWarning: BILINEAR is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.BILINEAR instead.
  image = icon0.resize((80,80), Image.BILINEAR)
/home/docmax/github/pop-fe/./pop-fe.py:549: DeprecationWarning: BILINEAR is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.BILINEAR instead.
  pic1 = pic1.resize((480, 272), Image.BILINEAR).convert("RGBA")
/home/docmax/github/pop-fe/./pop-fe.py:280: DeprecationWarning: textsize is deprecated and will be removed in Pillow 10 (2023-07-01). Use textbbox or textlength instead.
  ts = d.textsize(t, font=fnt)
/home/docmax/github/pop-fe/./pop-fe.py:280: DeprecationWarning: textsize is deprecated and will be removed in Pillow 10 (2023-07-01). Use textbbox or textlength instead.
  ts = d.textsize(t, font=fnt)
/home/docmax/github/pop-fe/./pop-fe.py:287: DeprecationWarning: textsize is deprecated and will be removed in Pillow 10 (2023-07-01). Use textbbox or textlength instead.
  ts = d.textsize(game_id, font=fnt)
Create PBP file at /mnt/zeus/8bay_usb3/roms/ps1/test_pbp/PSP/GAME/SLUS01201/EBOOT.PBP
Traceback (most recent call last):
  File "/home/docmax/github/pop-fe/./pop-fe.py", line 1589, in <module>
    create_psp(args.psp_dir, game_id, game_title, icon0, pic1, cue_files, cu2_files, img_files, mem_cards, aea_files, snd0=snd0)
  File "/home/docmax/github/pop-fe/./pop-fe.py", line 593, in create_psp
    generate_pbp(dest_file, game_id, game_title, icon0, pic1, cue_files, cu2_files, img_files, aea_files, snd0=snd0_data)
  File "/home/docmax/github/pop-fe/./pop-fe.py", line 531, in generate_pbp
    p.create_pbp()
  File "/home/docmax/github/pop-fe/popstation.py", line 3006, in create_pbp
    fh = open(self._eboot, 'wb+')
FileNotFoundError: [Errno 2] No such file or directory: '/mnt/zeus/8bay_usb3/roms/ps1/test_pbp/PSP/GAME/SLUS01201/EBOOT.PBP'

Incompatibility with PSX.EXE games (and also NST errors?).

The following error is given when trying to convert "The Great Battle VI":

Exception in Tkinter callback
Traceback (most recent call last):
File "tkinter_init_.py", line 1892, in call
File "pop-fe-psp.py", line 333, in on_path_changed
File "pop-fe-psp.py", line 179, in update_assets
File "pop-fe.py", line 168, in get_game_from_gamelist
KeyError: 'PSXEXE'

A similar issue also shows with the games "LEGO Rock Riders" (Exception in Tkinter callback
Traceback (most recent call last):
File "tkinter_init_.py", line 1892, in call
File "pop-fe-psp.py", line 333, in on_path_changed
File "pop-fe-psp.py", line 179, in update_assets
File "pop-fe.py", line 168, in get_game_from_gamelist
KeyError: 'NST')
and "Santa Claus Saves the Earth" (Exception in Tkinter callback
Traceback (most recent call last):
File "tkinter_init_.py", line 1892, in call
File "pop-fe-psp.py", line 333, in on_path_changed
File "pop-fe-psp.py", line 179, in update_assets
File "pop-fe.py", line 168, in get_game_from_gamelist
KeyError: 'SLES04023').

Error making multidisc PKG game (PS3)

I got an error converting the Policenauts game (the English patched version). The PKG file was not created. I tried to make a PKG file with the generated content by pop-fe using another tool, but the 2nd Disc doesn't work.

image

pop-fe-psp.exe isn't working.

The following message shows when trying to execute it:

Traceback (most recent call last):
File "pop-fe-psp.py", line 551, in
File "pop-fe-psp.py", line 79, in init
File "pygubu\builder.py", line 135, in add_from_file
File "pygubu\component\uidefinition.py", line 407, in load_file
File "xml\etree\ElementTree.py", line 1224, in parse
File "xml\etree\ElementTree.py", line 569, in parse
FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\facun\Escritorio\pop-fe-ui\_internal\pop-fe-psp.ui'
[10480] Failed to execute script 'pop-fe-psp' due to unhandled exception!

sound noize……

title timecrisis
region japan

VITA 3.65

I used Tool of windows ver
Converted Audio is noisy
Compression ratio specification
Bitrate specification
Sampling specification
As a simple option to change the

I want you to add a function that can change these to windows ver

PSP GUI possible Bug + Misc

image

pop-fe PSP:

  1. I don't think changing the GameID field changes the GameID.
  2. When EBOOT is finished being created, it says "PKG" instead of "EBOOT" (Who cares but just fyi)
  3. Does the "Theme" affect anything in the PSP version? If so, can you make it show you a live preview when you select a theme?
  4. After a random PIC1 is pulled from psxdatacenter, can you add the ability to click the PIC1 thumbnail to cycle through the different options?

Thank you, this is nifty and super surprising that it exists

Demo One (Version 6) PAL not loading

The demo i'm trying to convert is Demo One (Version 6) - PBPX-95007
When creating a PKG from the bin/cue results in a blank screen at startup.
I have this demo running in Multiman on 576p and the emulator set to ps1_netemu.
Forcing PAL also results in a black screen.
I believe i can set Force NTSC to use the ps1_netemu but this results in NTSC speeds.
Or do i have to create a ps3config for this specific game?
Is there a way we can choose which emulator (ps1_emu or ps1_netemu) we want to use in pop-fe?
Thanks!

Error when creating pbp for psp/vita

keep trying to create an image and this error keeps being spat out on Windows 11

Creating EBOOT
DISC SLES01937
TITLE 40 WINKS - CONQUER YOUR DREAMS
Scanning for audio tracks
Create PBP file at C:/Users/danny/Desktop/Vita/PSP/GAME/SLES01937/EBOOT.PBP
Exception in Tkinter callback
Traceback (most recent call last):
File "tkinter_init_.py", line 1892, in call
File "pop-fe-psp.py", line 490, in on_create_eboot
File "pop-fe.py", line 882, in create_psp
File "pop-fe.py", line 824, in generate_pbp
File "popstation.py", line 3093, in create_pbp
FileNotFoundError: [Errno 2] No such file or directory: 'C:/Users/danny/Desktop/Vita/PSP/GAME/SLES01937/EBOOT.PBP'

V-Rally 2 music cuts off.

Hello, everything good?

So, the problem is that after a track finishes playing, instead of starting the next one, it just plays the last second of the previous track, followed by silence.

This issue may be caused by Atracdenc, because when merging the tracks and converting the game with PSX2PSP along with CDDA enabler this problem doesn't happen.
I just wanted to ask if this could be fixed or if it's out of your reach.

Error making PSX Game

I was trying to make a pkg of a game called Mizzurna Falls, however it seems to have a problem detecting the game (Concretely, it seems to not reach the id properly). At first I thought that it happened because it was English patched, however I downloaded a correct and unpatched BIN File from somewhere else and had the exact same problem. The game runs fine on an emulator (DuckStation)
How could I fix the issue?

Screenshot_1

SND0 sounds a bit pitched up

I don't understand what I'm doing wrong. I set my .wav file to be 16bit/44100/Stereo but on the XMB it sounds a bit pitched and speed up.
I want to add a SND0 for XMB for the NTSC version of Metal Gear Solid in case that helps, and I used Adobe Audition to convert the file to the specifications above and .wav
Screenshot 2023-01-15 192611
Screenshot 2023-01-15 193053

Option to create lossless PBPs

Is it possible to create PBPs in such a way that the audio tracks won't be extracted and compressed, and instead the original ISO (bin + cue) can be recovered after conversion? Or is this not currently possible with PBP files?

Fix eboot.pbp for CDDA Enable

Add lines to sources or create a Python file

fEBOOT=open('EBOOT.PBP','r+b') ; opening a file
fEBOOT.seek(0x24)
data = fEBOOT.read(4)
PSAR=int.from_bytes(data,'little') ; obtaining a PSAR address
fEBOOT.seek(PSAR+0x81b)
fEBOOT.write(b'\x80\x00\x00') ; recording maximum CD disk size (80 min)
fEBOOT.close()

CDDA games don't result in smaller package.

I read that when using CDDA games that pkg files would be smaller, but they aren't. I attempted to do a pkg for Pac-Man World, but the resulting file was actually bigger than the game with all bin files combined. Am I meant to use the ui or a specific command for this?

OSError: cannot open resource

What's the problem here?

Converting TRACK_2_02.wav to TRACK_2_02.aea
0 132300
WARNING: ATRAC3 is uncompleted, result will be not good )))
bitrate 132300
\  99% done
Done
Try URL http://www.hwc.nat.cu/psx/SLUS_012.01_COV.jpg
Id: SLUS01201
Title: ALONE IN THE DARK - THE NEW NIGHTMARE
/home/docmax/github/pop-fe/./pop-fe.py:542: DeprecationWarning: BILINEAR is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.BILINEAR instead.
  image = icon0.resize((80,80), Image.BILINEAR)
/home/docmax/github/pop-fe/./pop-fe.py:549: DeprecationWarning: BILINEAR is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.BILINEAR instead.
  pic1 = pic1.resize((480, 272), Image.BILINEAR).convert("RGBA")
Traceback (most recent call last):
  File "/home/docmax/github/pop-fe/./pop-fe.py", line 1589, in <module>
    create_psp(args.psp_dir, game_id, game_title, icon0, pic1, cue_files, cu2_files, img_files, mem_cards, aea_files, snd0=snd0)
  File "/home/docmax/github/pop-fe/./pop-fe.py", line 550, in create_psp
    pic1 = add_image_text(pic1, game_title, game_id)
  File "/home/docmax/github/pop-fe/./pop-fe.py", line 275, in add_image_text
    fnt = ImageFont.truetype(font, 20)
  File "/usr/lib/python3.10/site-packages/PIL/ImageFont.py", line 959, in truetype
    return freetype(font)
  File "/usr/lib/python3.10/site-packages/PIL/ImageFont.py", line 956, in freetype
    return FreeTypeFont(font, size, index, encoding, layout_engine)
  File "/usr/lib/python3.10/site-packages/PIL/ImageFont.py", line 247, in __init__
    self.font = core.getfont(
OSError: cannot open resource

[Suggestion] Handle passing in a pre-made AT3

The current code does not handle pulling in a pre-converted AT3 file, and will try to re-encode it. As these were required for custom sounds in the past, it would be beneficial to check if a re-encode is necessary in the first place for those trying to use pre-made files.

Dragon Warrior can't be converted.

Hello, it's me again. How you doing?

Sorry to bother. Going straight to the point, this game (both discs SLUS-01206 and SLUS-01346) shows the following issue:
cdrom: line in system.cnf does not contain a proper id, read disc label instead
ID DRAGONWAR
Exception in Tkinter callback
Traceback (most recent call last):
File "tkinter_init_.py", line 1892, in call
File "pop-fe-psp.py", line 349, in on_path_changed
File "pop-fe-psp.py", line 181, in update_assets
File "pop-fe.py", line 180, in get_game_from_gamelist
KeyError: 'DRAGONWAR'

The issue comes from the game itself though. Disc 1 has this in the cnf file "SLUSP012.06;1" instead of "SLUS_012.06;1". Same thing applies to disc 2, with it having "SLUSP013.46;1" instead of the proper "SLUS_013.46;1".

Is it too much trouble to fix?

Wrong Resolution of PIC1.PNG for PS3 PKGs and other Fixes

When the script does the following instructions:
image = image.resize((480, 272), Image.BILINEAR).convert("RGBA")
image = add_image_text(image, game_title, game_id)

It wrongly resizes the image selected for PIC1 to a lower resolution image, then it scales that lower resolution image to 1920x1080 when doing the PS3 Package, making a very low resolution image for PS3 Backgrounds, it also includes unnecessary debug info (?) to it.

If this resize is meant to be done for PSP/Other consoles, I recommend to do that resize on those functions, and leave the 1980x1080 or another resolution as the base one when loading the image, also for a better presentation I suggest to comment out the add_image_text line of code there.

I also made some changes to the code to include support for a custom Info PIC0.PNG for the "create_ps3" function, I suggest that you add them properly with the proper code changes (My solution is just temporary for this case) and delete it or do not create it when creating the PS3 PKG if it is not found, because the presentation on the XMB will look bad with a duplicated PIC1 image in the front, that also hides the Title (Name of the Game). I will attach my modified pop-fe.py to this message if you want to look at it.

Thank you very much for reading, your program is really awesome and makes PSX Games on the PS3 very easy to make and to see in our collections, so these are just really nitpicks, but it would be great if you could fix them!
pop-fe.zip

Spyro 2 and 3 (PAL) crash on PS3

I tried to make a PKG with the PAL versions of some Spyro games, being my two favourites: Gateway to Glimmer and Year of the Dragon. But when I get to a new level on either, the screen stays black. They had their magic words injected, so any particular cause for why they don't work via pop-fe?

[Suggestion] CHD conversion support?

As the CHD format is superior for holding CD-based titles (especially multi-track or multi-disc titles), and is used heavily in MAME and a few other emulators, it would likely be worth it to add support for these to the tool. On Debian, at least, you can find a chd converter, chdman, under the mame-tools package. I've also written a shell script for my own use in conversion, as it's a two-line affair with bchunk and chdman:

chdman extractcd -f -i "$1" -ob /tmp/tmp.bin -o /tmp/tmp.cue
bchunk /tmp/tmp.bin /tmp/tmp.cue "$2"

PIC0 and PIC1 always the same

Using pop-fe-ps3. Worked fine for a couple of times. Now PIC1 is always also PIC0. Checking "Disable PIC0" does nothing either, still uses PIC1 as PIC0.

Does the same both for auto fetched images and custom ones.

NTSC to PAL ported configuration breaks 50hz/pal.

Ex: Unjammer lammy on vita.
Pop-fe correctly identifies the game as pal and applies the ported configuration from the NTSC pkg... if you then try to run the game the bottom of the screen is cut off. Maybe timings are also wrong.
I remember having the same issues in the past, when I tried to give a PAL game a NTSC game id.
Is it possible to add a switch to skip the configuration step?

Modifying current retroarch support

The current retroarch installation implemented in pop-fe, from what I understand, merges each bin file with binmerge and generates and appropriate .m3u file to load them as multiple discs. However, isn't the cue information lost in this procedure? According to retropie wiki, m3u files should be able to load cue files instead of bin files. So, perhaps for pop-fe, the retroarch installation could also copy over the cue files named with the game title but with the extensions CD1/CD2/etc (or named the same as their respective img/bin files with the CD# extension as well). Perhaps there could also be the option to create a folder with the game's official title in the given retroarch directory, so that each m3u/img/cd# combo for each game is easier to organize when running a script using pop-fe.py

And, given that most (all?) cores in retroarch are able to load pbp files, maybe there could also be an option to generate them in the given retroarch dir as well (named [title].pbp instead of eboot.pbp, or inside a folder with the title_id/title, depending on how retroarch expects the name of the pbp file to be). Currently tricking pop-fe into generating the pbp files for the PSP doesn't work very cleanly since it assumes the PSP/GAME directories exist inside the given --psp-dir folder (I patched it by switching the mkdir function for the makedirs function in the create_retroarch function).

Techinically incorrect parameter in pkgpy (PS3)

By default, pkg.py uses a flag to indicate a PS3 executable game (containing an eboot), which is the "metaBlock.unk22" variable set to 0x05. However, PS1 packages should technically use the flag 0x06 instead (as documented in PS3 dev wiki here).

If the pkgs pop-fe generates are installed and work correctly, this isn't much of a problem. Moreover, current behavior may be better for users since official PS1 classics get installed as bubbles (I assume for easy PSP installation later on straight from PS3). Though, perhaps there are some features/flags that only get checked with the appropriate flag on a pkg?

Edit: In your fork of PSL1GHT for pkg.py, perhaps it may be best to use git-repo-filter to only get ps3py in the repository (like in my repo here which I got from wMM.

Compatibility with PSX Disc Combining Kits

This is a long-shot, and probably unrealistic since these "disc combining kits" are very-much unofficial...but there are disc combining kits to combine some multi-disc ps1 games into 1 disc, but I never got them to work with PSX2PSP--the EBOOTs just showed a black screen. I'm specifically interested in getting the combined "Brain Dead 13" to work, because the disc swap function doesn't work in the PSP's emulator for that game. (So using the combined ISO would avoid that issue.)
I thought I'd give pop-fe a shot in case it used an alternative method to build the EBOOT that makes the combined-disc ISO work. When I tried creating the EBOOT from the combined-disc ISO (.bin/.cue), I got this error:
image
Probably an unrealistic request but thought I might as well ask

Sonic Wings Special [SLES-04102]

Failed to read game id. Falling back to raw read
Traceback (most recent call last):
  File "/pop-fe/pop-fe.py", line 2449, in <module>
    game = get_game_from_gamelist(disc_ids[0])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/pop-fe/pop-fe.py", line 189, in get_game_from_gamelist
    if 'url' not in games[game_id]:
                    ~~~~~^^^^^^^^^
KeyError: '         '

game_id Argument does not skip ISO creation

I was using the argument --game_id to set the Game's ID and skip the ISO conversion, but it seems it does not skip it because it's needed for the libcrypt instructions later on? I noticed it because the game Pink Panther - Pinkadelic Pursuit [SLUS01451] had an issue when trying to get the game's ID using the function get_disc_ids (probably a Bad ISO conversion? Bad Rip? I'm not too sure), so I moved the lines:
print('Convert CUE to a normal style ISO') if verbose else None
disc_ids = get_disc_ids(cue_files)
print('disc_ids', disc_ids)

inside the case "if not game_id", before game_id = disc_ids[0], and used the param --game_id as usual, then the game was converted successfully and works as intended with full BGM (it's a multi bin game).

I know this is not a good approach, it will probably prevent the libcrypt section from properly doing its work if game_id is used, but as a suggestion it would be better to skip the ISO conversion part if a game_id is already set by the user if possible, to save time and to possibly avoid this problems.

Errors when creating multidisc eboot [Docker]

pop-fe.py --psp-dir=/psp/ /psp/game.cue /psp/game2.cue /psp/game3.cue /psp/game4.cue
Processing /psp/game.cue ...
Processing /psp/game2.cue ...
Processing /psp/game3.cue ...
Processing /psp/game4.cue ...
Try URL http://www.hwc.nat.cu/psx/SCES_030.46_COV.jpg
Id: SCES03046
Title: THE LEGEND OF DRAGOON
Create PBP file at /psp//PSP/GAME/SCES03046/EBOOT.PBP
Traceback (most recent call last):
File "/pop-fe/pop-fe.py", line 2036, in
create_psp(args.psp_dir, disc_ids, game_title, icon0, pic0, pic1, cue_files, cu2_files, img_files, mem_cards, aea_files, snd0=snd0, watermark=args.watermark, subchannels=subchannels)
File "/pop-fe/pop-fe.py", line 777, in create_psp
generate_pbp(dest_file, disc_ids, game_title, icon0, pic0, pic1, cue_files, cu2_files, img_files, aea_files, snd0=snd0_data, whole_disk=False, subchannels=subchannels)
File "/pop-fe/pop-fe.py", line 719, in generate_pbp
p.create_pbp()
File "/pop-fe/popstation.py", line 3169, in create_pbp
self.encode_psiso(fh, disc_num, img_toc)
File "/pop-fe/popstation.py", line 2700, in encode_psiso
isosize = self._track0_size[disc_num]
IndexError: list index out of range

The incomplete eboot does not start. (corrupted file)

High Pitched Audio on PAL Games (PS3)

I had trouble converting some PAL Games with the program, the games' issues are High Pitched voices and/or SFX, both In Game and even in FMVs.
The games are Wacky Races (PAL) [SLES_024.68] and Broken Sword II: The Smoking Mirror (Spain) [SCES_008.02] for now.
I don't know the cause of the problem yet. The video output (60hz) is not the problem as the first Broken Sword (Spain) works well.
I don't know if this is an issue with the program itself, with the conversion process, with the PS1 Emulator on the PS3, or with the actual game rips.

Invalid number of discs (1) in multi-disc PBP file

I tried using pop-fe.py in a Docker image on my Windows machine. I tried several different bin/cue combinations, and verified that I could use PSX2PSP to convert them appropriately to PBP files. I consistently get the same error in Duckstation when checking the PBP files: Invalid number of discs (1) in multi-disc PBP file. Note that I tried games with single bin/cue combinations as well as some with multiple bin tracks (to test binmerge). Always the same result.

Here is the verbose log from pop-fe:
Processing /TEMP/Need for Speed - High Stakes (USA).zip ...
This is a ZIP file. Uncompress the file.
Extracting Need for Speed - High Stakes (USA).bin
Extracting Need for Speed - High Stakes (USA).cue
Found CUE file Need for Speed - High Stakes (USA).cue
CUE Need for Speed - High Stakes (USA).cue
Creating temporary CU2 file: TMP0.cu2
Convert CUE to a normal style ISO
Convert CUE to a normal style ISO
Cue: Need for Speed - High Stakes (USA).cue
Read bin 0 Need for Speed - High Stakes (USA).bin
Write track ISO0001.iso
disc_ids ['SLUS00826']
Fetch cover for NEED FOR SPEED - HIGH STAKES
get https://psxdatacenter.com/games/U/N/SLUS-00826.html
get icon for SLUS00826
Fetch screenshot for NEED FOR SPEED - HIGH STAKES
Add image text: title: NEED FOR SPEED - HIGH STAKES
Id: SLUS00826
Title: NEED FOR SPEED - HIGH STAKES
Cue Files ['Need for Speed - High Stakes (USA).cue']
Imb Files ['Need for Speed - High Stakes (USA).bin']
Disc IDs ['SLUS00826']
Create PBP file for NEED FOR SPEED - HIGH STAKES
Need to create a TOC
Add image Need for Speed - High Stakes (USA).bin
Create PBP file at /TEMP/PBP/NEED FOR SPEED - HIGH STAKES.pbp
Generating PARAM.SFO [NEED FOR SPEED - HIGH STAKES]...
Writing header
Writing PARAM.SFO at
Writing ICON0.PNG at
Writing PIC1.PNG
Got a TOC
Writing indexes
Writing PSX CD Dump
Writing compressed image
Writing PSTITLEIMG.DAT
Writing STARTDAT header
Writing P.O.P.S standard logo
Writing STARTDAT footer
EBOOT.PBP Created
Deleting temp file Need for Speed - High Stakes (USA).bin
Deleting temp file Need for Speed - High Stakes (USA).cue
Deleting temp file TMP0.cu2
Deleting temp file ISO0001.iso
Deleting temp file ICON0.jpg

Here is the Log from Duckstation:
[ 0.3014] I/SDLControllerInterface: Loading game controller mappings from 'C:\Users\damon\Desktop\Duckstation\database\gamecont
rollerdb.txt'
[ 0.8932] I/AutoUpdaterDialog: Current SHA: 50db81af16025583c68171c1fdaf921b6e655175
[ 0.8932] I/AutoUpdaterDialog: Latest SHA: 50db81af16025583c68171c1fdaf921b6e655175
[ 0.8932] I/AutoUpdaterDialog: Last Checked SHA:
[ 0.8932] I/AutoUpdaterDialog: No update needed.
[ 15.5418] I/HostInterface: Boot Filename: D:\TEMP\PBP\NEED FOR SPEED - HIGH STAKES.pbp
[ 15.5844] I/D3D11HostDisplay: No adapter selected, using first.
[ 15.6117] I/D3D11HostDisplay: D3D Adapter: Intel(R) UHD Graphics
[ 15.6118] I/D3D11HostDisplay: Creating a 2400x1767 flip-discard windowed swap chain
[ 15.6135] I/D3D11HostDisplay: Swap chain buffer size: 2400x1767
[ 15.6684] E(LoadTexture): Failed to open texture resource 'resources\logo.png'
[ 15.6713] I/HostInterface: Creating 'Cubeb' audio stream, sample rate = 44100, channels = 2, buffer size = 2048
[ 16.3927] I/CubebAudioStream: Minimum latency in frames: 133
[ 16.4654] I/System: Loading CD image 'D:\TEMP\PBP\NEED FOR SPEED - HIGH STAKES.pbp'...
[ 16.4656] E(Open): Invalid number of discs (1) in multi-disc PBP file
[ 16.4656] E(ReportError): Failed to load CD image 'D:\TEMP\PBP\NEED FOR SPEED - HIGH STAKES.pbp':
[ 18.5554] E(ReportError): System failed to boot. The log may contain more information.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.