mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-11-11 16:49:27 +01:00
GameInfoCache: report the firmware updater bundled on a game disc
Adds GameInfoFlags::BUNDLED_UPDATE_INFO, holding the version, title, size and timestamp of the updater in PSP_GAME/SYSDIR/UPDATE. It comes from the PARAM.SFO and the directory entry next to the archive, so it's a couple of small reads on the ISOFileSystem the worker already has open - no decryption, and DATA.BIN itself is only sniffed for its magic. Only computed for ISOs; everything else is marked complete with an empty struct. ISOFileSystem now parses the date out of the ISO9660 directory record, stored as Unix UTC seconds and reported as the PSP's atime/ctime/mtime. Those used to always read back as zero, so games calling sceIoGetstat on a UMD file saw 1900 where hardware gives the mastering date. Shown on GameScreen as e.g. "Firmware update on disc: 6.60 (2011-10-05), 25.6 MB". Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149QcTVgZEXKXbgHyvXF4ZY
This commit is contained in:
1 parent
c09e6bddaa
commit
396f9e802d
8 files changed
+167
-3
No files matched your search
@@ -851,6 +851,15 @@ handleELF:
|
||||
}
|
||||
}
|
||||
|
||||
// Most UMDs carry a firmware updater, which is a source of things like the
|
||||
// system fonts. Just note down what's there - unpacking it is a separate step.
|
||||
if (flags_ & GameInfoFlags::BUNDLED_UPDATE_INFO) {
|
||||
BundledUpdateInfo update;
|
||||
ReadBundledUpdateInfo(&umd, "/", &update);
|
||||
std::lock_guard<std::mutex> lock(info_->lock);
|
||||
info_->bundledUpdate = update;
|
||||
}
|
||||
|
||||
if (flags_ & GameInfoFlags::PIC0) {
|
||||
info_->pic0.dataLoaded = ReadFileToString(&umd, join(gameRoot, "PIC0.PNG"), &info_->pic0.data, &info_->lock);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user