Show and remove installed game updates from the game info screen

An installed update silently replaces what the game boots, so the info
pane now says when there is one - version, size and where it lives - and
the context menu offers to remove it again.

Removing takes the whole PSP/GAME/<DISC_ID> folder when the update is all
that's in it. When a digital game shares the folder, only PBOOT.PBP goes,
since deleting the folder would take the game with it and nothing records
what the install wrote. The confirmation names the exact path either way.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_018izZ1mGTWhz2RqeudqsDQR
This commit is contained in:
Henrik RydgårdandClaude Opus 5 committed 2026-09-08 11:15:15 -06:00
1 parent 3a70c6b149
commit f0dafdee10
5 files changed
+153 -2

No files matched your search

+5 -1
View File
@@ -167,7 +167,7 @@ patch file are silently dropped, with no warning that anything was skipped.
## How PPSSPP handles them
Three pieces, added 2026-08-21:
Four pieces:
- **`Core/Util/PkgUnpack.cpp`** reads a package: header, item table, both PARAM.SFOs, and the
decryption. `PkgReader::Open()` gives you a `PkgInfo` with the disc ID, disc version and patch
@@ -177,6 +177,10 @@ Three pieces, added 2026-08-21:
`InstallZipScreen` - it shows what the update patches, what it'll take up on disk, and where it's
going. The size is exact rather than an estimate: package contents aren't compressed, so summing
the item table is the answer. `GameManager::InstallPkgOnThread()` does the work.
- **`GameScreen`** shows an installed update in the info pane, and offers "Delete Game Update" in
its context menu. Deleting takes the whole `PSP/GAME/<DISC_ID>` folder when the update is all
that's in it, and only `PBOOT.PBP` when a digital game shares the folder - nothing records what
an install wrote, so the executable is the only part still identifiable afterwards.
- **`FindGameUpdatePBOOT()` in `Core/PSPLoaders.cpp`** is the boot-time half. Starting a disc looks
for `ms0:/PSP/GAME/<DISC_ID>/PBOOT.PBP`, and boots that instead of `disc0:/PSP_GAME/SYSDIR/EBOOT.BIN`
if it's there, leaving the disc mounted.