Install PS1 discs from zip and 7z archives, and show them as playable only with a firmware that runs them

A zip or 7z with a PS1 disc in it (a cue sheet and the files it names, a
.ccd with its .img and .sub, or a lone raw .bin or .img) is now installed
like a zipped ISO. A disc of several files goes into a folder of its own,
named after the cue sheet or .ccd. An ISO in the archive still takes
priority, and a lone .bin or .img only counts when nothing else does.

The game screen offers Play for a PS1 disc image only when the installed
firmware's POPS can run it: 3.95 to 6.61, with popsman.prx.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Henrik RydgårdandClaude Opus 5.5 committed 2026-10-23 15:01:22 +02:00
1 parent 23dffa9db3
commit 34a0090a18
11 files changed
+330 -52

No files matched your search

+3 -1
View File
@@ -84,6 +84,7 @@ void InstallZipScreen::CreateSettingsViews(UI::ViewGroup *parent) {
switch (zipFileInfo_.contents) {
case ZipFileContents::ISO_FILE:
case ZipFileContents::PSP_GAME_DIR:
case ZipFileContents::PSX_DISC:
installChoice_ = parent->Add(new Choice(iz->T("Install"), ImageID("I_FOLDER_UPLOAD")));
installChoice_->OnClick.Handle(this, &InstallZipScreen::OnInstall);
@@ -146,6 +147,7 @@ void InstallZipScreen::CreateContentViews(UI::ViewGroup *parent) {
switch (zipFileInfo_.contents) {
case ZipFileContents::ISO_FILE:
case ZipFileContents::PSP_GAME_DIR:
case ZipFileContents::PSX_DISC:
{
std::string_view question = iz->T("Install game from ZIP file?");
@@ -155,7 +157,7 @@ void InstallZipScreen::CreateContentViews(UI::ViewGroup *parent) {
leftColumn->Add(new TextView(zipFileInfo_.contentName));
}
if (zipFileInfo_.contents == ZipFileContents::ISO_FILE) {
if (zipFileInfo_.contents == ZipFileContents::ISO_FILE || zipFileInfo_.contents == ZipFileContents::PSX_DISC) {
const bool isInDownloads = File::IsProbablyInDownloadsFolder(zipPath_);
Path parent;
if (!isInDownloads && zipPath_.CanNavigateUp()) {