pop-fe2

PS3 pop-fe2 A tool to create PS2Classic packages on Linux v1.1

Early version of Pop-fe2. A utility that creates PS2Classic games for PS3.
https://github.com/sahlberg/pop-fe2

Can be run from command line or via a UI that is similar to pop-fe-ps3.
Supports windows and windows binaries can be downloaded from the github page on the actions tab.

For windows:
-----------------
Download the latest release from : https://github.com/sahlberg/pop-fe2 and unpack the ZIP file.

For more up-to-date versions, there is a scratch build made everytime something in the repository changes. These can also be downloaded but you need to be logged in to a github account or the download links will not show up:
Go to https://github.com/sahlberg/pop-fe2 select the actions tab, pick the most recent build and the link to download the latest scratch build of pop-fe2-ui will be at the bottom.

NOTE: ONLY games that are fully curated in :https://github.com/sahlberg/pop-fe2/blob/master/gamedb.py will look good on the XMB. Right now this is only ~200-300 of the more popular NTSC-U releases.

Any game NOT curated in the database can still be converted but they will not have game-cover, background image or logo. There will not be any sound at all on the XMB. I.e. they will look completely terrible in the XMB which defeats the whole purpose of converting them into PS2 Classic format in the first place.

A workaround for this is to install a "art pack" from https://archive.org/details/ps2-opl-cover-art-set. This provides assets for many many of the games but is was created for very low resolution screens like OPL on a PS2 and definitely not aimed at a much much higher resolution screen like the PS3 XMB. Low resolution assets are better than no assets at all.
Download the ART pack and install as the ART subdirectory in the pop-fe2-ps3 folder next to the pop-fe2-ps3.exe binary.


If you want high quality assets, and of course you do, it is fortunately very easy to add links to
curated assets to the database:

1, fork the repository on github and switch to your fork
2, in the github ui, edit the gamedb.py file and update the data for
your game. You need to specify links for all of icon0,pic0,pic1 and snd0
3, save your changes and create a commit
4, click the buttons to turn this into a pull request and then I will merge it into upstream.

Note, as soon as you save and create a commit, you should get a new build being done
under the actions tab in your repository. You will be able to download an updated version
of pop-fe2-ui there in a few minutes.



Example of how my fav ai2.resized.jpg torite game in the Atelier Iris series look like:
 
Last edited:
wow nice work Ronnie, 1 small feature request for somewhere down the line (like much later) would be Multi Disc support (something ps2 classic gui doesn't have) not many PS2 games had multi discs but it would be nice to have support for the few that do, And maybe batch processing too, but again neither feature are that important, Great work on what you have done so far.
 
wow nice work Ronnie, 1 small feature request for somewhere down the line (like much later) would be Multi Disc support (something ps2 classic gui doesn't have) not many PS2 games had multi discs but it would be nice to have support for the few that do, And maybe batch processing too, but again neither feature are that important, Great work on what you have done so far.

Those are good ideas. It takes a LONG time to convert these games so batch processing is a good idea.
I added some new command line arguments to make batch processing easier.

This for example:
$ find /path/to/my/isos | egrep ".iso$" | while read ISO; do ./pop-fe2.py --ps3-pkg=title --output-directory=/path/to/my/pkgs ${ISO}; done

Will scan /path/to/my/isos for all files with an '.iso' extension and then try to convert them. --ps3-pkg=title is a special case and means that pop-fe2 will use the detected title of the game as the filename for the PKG.
And they will all be written to /path/to/my/pkgs/

For multidisc games I am happy to try implementing support.
I have a few such games, Xenosaga 2 and 3, but I only have physical copies of them.

So this would be a PKG that contains multiple disc images that all use the same VMCs ?
Do you have access to any such PS2Classics and information what the directory structure would look like and the content?
 
Those are good ideas. It takes a LONG time to convert these games so batch processing is a good idea.
I added some new command line arguments to make batch processing easier.

This for example:
$ find /path/to/my/isos | egrep ".iso$" | while read ISO; do ./pop-fe2.py --ps3-pkg=title --output-directory=/path/to/my/pkgs ${ISO}; done

Will scan /path/to/my/isos for all files with an '.iso' extension and then try to convert them. --ps3-pkg=title is a special case and means that pop-fe2 will use the detected title of the game as the filename for the PKG.
And they will all be written to /path/to/my/pkgs/

For multidisc games I am happy to try implementing support.
I have a few such games, Xenosaga 2 and 3, but I only have physical copies of them.

So this would be a PKG that contains multiple disc images that all use the same VMCs ?
Do you have access to any such PS2Classics and information what the directory structure would look like and the content?
Very nice, thanks for adding batch processing, that should be helpful for anyone doing many games at the same time,
And the only 2 disc game i have seen is on the American store and its Grandia III and its layout is shown in the picture im attaching below, memory cards are shared because they kind of have to be (otherwise how would you continue your save on the next disc)

EDIT1: also here is some more info on the matter that describes the needed part in the CONFIG file for changing discs
https://www.psx-place.com/threads/compatibility-list-ps2-on-ps3.1306/page-116#post-252631
 

Attachments

  • Grandia3Layout.png
    Grandia3Layout.png
    17.8 KB · Views: 70
Last edited:
Very nice, thanks for adding batch processing, that should be helpful for anyone doing many games at the same time,
And the only 2 disc game i have seen is on the American store and its Grandia III and its layout is shown in the picture im attaching below, memory cards are shared because they kind of have to be (otherwise how would you continue your save on the next disc)

EDIT1: also here is some more info on the matter that describes the needed part in the CONFIG file for changing discs
https://www.psx-place.com/threads/compatibility-list-ps2-on-ps3.1306/page-116#post-252631

What is the content of DISC.IDX?
 
What is the content of DISC.IDX?
Oh DISC.IDX is the current disc to load, so in hex it reads
02 00
by default which tells the game to load disc1 when you start it from XMB, when its
02 01
then it loads disc2 from XMB, it basically lets the game remember which disc you are on so next time you start the game you go back to the disc you was on last.
 
Oh DISC.IDX is the current disc to load, so in hex it reads
02 00
by default which tells the game to load disc1 when you start it from XMB, when its
02 01
then it loads disc2 from XMB, it basically lets the game remember which disc you are on so next time you start the game you go back to the disc you was on last.


I got some code running that creates the PKG and installs CONFIG/CONFIG2 as well as ISO.BIN.ENC/ISO.BIN.ENC2 and the resulting PKG I can boot the game from disc1 and even reset it and select disc2 from the PS-button UI.
But disc2 does not boot, it just hangs the console. So close but also so far away.

Can you decrypt the content of ISO.BIN.EDAT and show me the content?

Another thing could be if multidisc games need something special in PARAM.SFO. Can you dump PARAM.SFO for me?
Something like this should dump it (using popstation.py from pop-fe) :

$ python
Python 3.10.11 (main, Apr 5 2023, 00:00:00) [GCC 12.2.1 20221121 (Red Hat 12.2.1-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from popstation import ParseSFO
>>> with open('/run/media/sahlberg/3A068D3E068CFC5F/pop-fe2/pop-fe2-work/UP0000-SLUS21334_00-PS2CLASSICS00000/PARAM.SFO', 'rb') as f:
... print(ParseSFO(f.read()))
...
 
I got some code running that creates the PKG and installs CONFIG/CONFIG2 as well as ISO.BIN.ENC/ISO.BIN.ENC2 and the resulting PKG I can boot the game from disc1 and even reset it and select disc2 from the PS-button UI.
But disc2 does not boot, it just hangs the console. So close but also so far away.

Can you decrypt the content of ISO.BIN.EDAT and show me the content?

Another thing could be if multidisc games need something special in PARAM.SFO. Can you dump PARAM.SFO for me?
Something like this should dump it (using popstation.py from pop-fe) :

$ python
Python 3.10.11 (main, Apr 5 2023, 00:00:00) [GCC 12.2.1 20221121 (Red Hat 12.2.1-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from popstation import ParseSFO
>>> with open('/run/media/sahlberg/3A068D3E068CFC5F/pop-fe2/pop-fe2-work/UP0000-SLUS21334_00-PS2CLASSICS00000/PARAM.SFO', 'rb') as f:
... print(ParseSFO(f.read()))
...
Yeah i previously tried getting multi disc working by just FTPing the files across or making a custom package but i couldn't get it working, it was a really odd thing, maybe @sandungas can give more info, he and kozarovv did a lot of work looking into it with me, and @mrjaredbeta also looked into multidisc too i think, so hopefully they can give you more info too
Also sent you the info in a private convo Ronnie since im not sure if it can be posted here or not, hope that helps.
 
I've been playing around with this and pop-fe. Took some trial and error to get everything setup on Mint 22 because of some dependency differences but the PS1 package (Einhander) and PS2 package (Timesplitters 2) I made work great. I'd like to start filling in the gamedb.py a little bit too if you're still looking for help with that.

Only issue I've run into so far with pop-fe2 is trying to build a CD game (Timesplitters 1). I have it ripped as a cue/bin and I converted it to .iso first with bchunk but pop-fe2 exits with 'file size not a multiple of 16kb'. Is there a trick to setting up the image input for CD based games or is that not yet supported?
 
I've been playing around with this and pop-fe. Took some trial and error to get everything setup on Mint 22 because of some dependency differences but the PS1 package (Einhander) and PS2 package (Timesplitters 2) I made work great. I'd like to start filling in the gamedb.py a little bit too if you're still looking for help with that.

Only issue I've run into so far with pop-fe2 is trying to build a CD game (Timesplitters 1). I have it ripped as a cue/bin and I converted it to .iso first with bchunk but pop-fe2 exits with 'file size not a multiple of 16kb'. Is there a trick to setting up the image input for CD based games or is that not yet supported?

Thanks. Please add and help fill in more entries in the database.

For the size being a multiple of 16kb, I will fix that over the weekend. I will just add padding data to the file so that it aligns properly.
 
Please try current master.
I added assets to Timesplitters and removed the size check.
I also added support so you can use the .cue file and pop-fe2 will automatically extract the ISO to a temporary directory.
 
So if anyone wants to contribute and add more entries to the database but are intimidated by "I am not a developer, I can't write code".
Do not fear, you can add new entries to the database right in the github UI. It is super easy.

This is how you do it:
===
Create an account on github and login.
Go to https://github.com/sahlberg/pop-fe2
and fork the repository. (fork button, upper right)
In your repo, click on gamedb.py to open it, then click on "Edit this file".
(the pen symbol in the upper right)
Go down to the entry you want to add, remove the '#' characters at the start of the line and fill out the links to the assets.
For example if it looked like this:
#'SLUS20152': {
# 'id': 'SLUS20152',
# 'title': 'ACE COMBAT - SHATTERED SKIES',
# 'icon0':
# 'pic0':
# 'pic1':
# 'snd0':
#},
Change it to look like this:
'SLUS20152': {
'id': 'SLUS20152',
'title': 'ACE COMBAT - SHATTERED SKIES',
'icon0': 'https://images.launchbox-app.com//a2bc9730-5419-4585-8057-6f2e7e1a05f8.jpg',
'pic0': 'https://images.launchbox-app.com//b38543f3-fe9a-49ce-8918-6138fd087245.png',
'pic1': 'https://images.launchbox-app.com//02b90700-e2d0-4919-b02c-bd11347329cd.jpg',
'snd0': '
',
},
ICON0 is the game cover. PIC0 is the clear logotype and for PIC1 just
a nice fanart. The launchbox website has a lot of good links you can
use. For SND0, I usually just search youtube for "ps2 <name of game> ost" and
pick a nice one. Try to pick an entry that is less than 5 minutes in length
and not the full OST.

Click on "Commit changes..." and provide some descriptive text for the change,
for exampe "Add ACE COMBAT 4 assets"

Tick "Create a new branch for this commit and start a pull request"

Then click "Propose changes"

On the new screen, click "Create pull request"

That's it. Couldn't be easier.
If you want to test your changes right away, before I merge them
you can go to the Actions tab where you can see that the changes
are now being automatically built.
Click on your change and once it has finished you can download
a test version of pop-fe2 from there.
It should only take a couple of minutes and the build will be ready to download.
 
Last edited:
I have opened it up so now it allows generation of all games released regardless of whether they have nice curated assets or not.
Of course, without nice assets there is not point in converting to a PS2 Classic in the first place, but whatever.

As a low quality is better than no quality workaround for games missing assets, when starting pop-fe2-ps3 will check if any third-party assets packs have been installed and open a nag dialog where to download an art-pack and to install it.

I also made a official release for windows with this.
 
It can now also create "software manual". These are just the scanned paper manual that shipped with the game.
I have only populated teh database with manuals for NTSC-U games starting with either 'A' or 'B' but it is easy to add more.
I will add the rest of the NTSC-U games over time.

If you want to help adding manuals, please reach out. You can do so and create pull requests that I will then merge directly from the github website. You don't need to be a programmer. It is really just a matter of adding a single line of text into a text document.
 
Back
Top