Install savedata zips that contain a single save folder's files in the root

Some shared saves are zipped without their folder, with the zip named after it
instead (ULUS10019000.zip). Detect these by a root PARAM.SFO with a
SAVEDATA_DIRECTORY, which holds the folder name (game ID + save name), and
extract into that folder.

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-12 12:27:24 +02:00
1 parent fb5835e576
commit abeb890d0f
5 files changed
+85 -3

No files matched your search

+1 -1
View File
@@ -249,7 +249,7 @@ void InstallZipScreen::CreateContentViews(UI::ViewGroup *parent) {
Path savedataDir = GetSysDirectory(DIRECTORY_SAVEDATA);
ZipContainer zipFile = ZipOpenPath(zipPath_);
overwrite = !ZipCanExtractWithoutOverwrite(zipFile, savedataDir, zipFileInfo_.stripChars, 50);
overwrite = !ZipCanExtractWithoutOverwrite(zipFile, zipFileInfo_.saveDataInRoot ? savedataDir / zipFileInfo_.savedataDir : savedataDir, zipFileInfo_.stripChars, 50);
ZipClose(zipFile);
destFolders_.push_back(savedataDir);