UMD Video: Boot the XMB for a video disc however it's started

The game list already did, but booting a video disc any other way (the command line, a file
association, dropping it on a running game, headless) tried it as a game and failed. The loader now
swaps in vshmain.prx with the disc mounted and auto-start on whenever it identifies a UMD Video
disc and the installed firmware can play it. GetUmdVideoVSHPath() moves from the UI to
Core/Util/PSARUnpack.

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 12:08:10 +02:00
1 parent 5bd94f9fa3
commit a1ade54aac
6 files changed
+31 -14

No files matched your search

+17
View File
@@ -823,6 +823,23 @@ bool PSP_InitStart(const CoreParameter &coreParam) {
IdentifiedFileType fileType;
FileLoader *loadedFile = ResolveFileLoaderTarget(ConstructFileLoader(filename), &fileType, errorString);
// UMD Video only plays in the XMB, so however it was asked for, boot that with the disc in
// the drive and auto-start on. Without a firmware that can, CPU_Init says what's needed.
if (fileType == IdentifiedFileType::PSP_UMD_VIDEO_ISO) {
const Path vshmain = GetUmdVideoVSHPath();
if (!vshmain.empty()) {
INFO_LOG(Log::Loader, "UMD Video: booting the XMB (%s) to play %s", vshmain.c_str(), filename.c_str());
delete loadedFile;
g_CoreParameter.mountIso = filename;
g_CoreParameter.fileToStart = vshmain;
if (!g_CoreParameter.umdAutoboot) {
g_CoreParameter.umdAutoboot = true;
}
filename = vshmain;
loadedFile = ResolveFileLoaderTarget(ConstructFileLoader(filename), &fileType, errorString);
}
}
if (System_GetPropertyBool(SYSPROP_ENOUGH_RAM_FOR_FULL_ISO)) {
if (g_Config.bCacheFullIsoInRam) {
switch (fileType) {