mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-11-15 02:29:51 +01:00
POPS: Multi-disc on firmware 6.20 and later, the reset dialog's disc number, and a POPS string category
Every MAC comparison the manager makes passes for a converted EBOOT, rather than the one in 6.60's disc header check: the export it's in has a different NID in each firmware. The disc switching text is found in the emulators of 6.20 to 6.61 (earlier ones have the same descrambling, compiled differently), so a playlist on an earlier firmware fails with a message saying so. The reset dialog's disc number is the disc picker label's, moved by a table of its own per language, which is now laid out for our text too. The PS1 strings get a category of their own, POPS, with the experimental warning moved there. langtool gets add-section, to make the section for a new category, and inserts into an empty section rather than dropping the line (which move-key had already removed from the old one). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
85e51ba23a
commit
572260101c
55 files changed
+710
-112
No files matched your search
+16
-3
@@ -672,10 +672,23 @@ bool Load_PSP_POPS(FileLoader *fileLoader, std::string *error_string) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Several discs from a playlist need the disc switching text PopsBoot puts in the emulator, which it
|
||||
// only finds in 6.20 and later.
|
||||
const PS1EbootFileLoader *discImage = dynamic_cast<PS1EbootFileLoader *>(fileLoader);
|
||||
if (discImage && discImage->NumDiscs() > 1) {
|
||||
InstalledFirmwareInfo info;
|
||||
ReadInstalledFirmwareInfo(g_Config.nandRootDirectory, &info, false);
|
||||
if (FirmwareVersionToInt(info.version) < 620) {
|
||||
auto po = GetI18NCategory(I18NCat::POPS);
|
||||
*error_string = po->T("PS1MultiDiscFirmware", "So far, PS1 games of several discs only run with firmware 6.20 or later. Install one of those from an official PSP update file in Settings > Tools > PSP Firmware.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Its directory as host0:, as for a homebrew EBOOT. An EBOOT made from a disc image is the only file there.
|
||||
const Path fullPath = fileLoader->GetPath();
|
||||
std::string gamePath;
|
||||
if (dynamic_cast<PS1EbootFileLoader *>(fileLoader)) {
|
||||
if (discImage) {
|
||||
pspFileSystem.Mount("host0:", std::make_shared<BlobFileSystem>(&pspFileSystem, fileLoader, "EBOOT.PBP"));
|
||||
gamePath = "host0:/EBOOT.PBP";
|
||||
} else {
|
||||
@@ -694,8 +707,8 @@ bool Load_PSP_POPS(FileLoader *fileLoader, std::string *error_string) {
|
||||
if (!__PopsBootStartInit(fileLoader, gamePath, error_string)) {
|
||||
return false;
|
||||
}
|
||||
auto sy = GetI18NCategory(I18NCat::SYSTEM);
|
||||
g_OSD.Show(OSDType::MESSAGE_WARNING, sy->T("PS1 support is still experimental. The game might not work, or there may be glitches."), 6.0f);
|
||||
auto po = GetI18NCategory(I18NCat::POPS);
|
||||
g_OSD.Show(OSDType::MESSAGE_WARNING, po->T("PS1 support is still experimental. The game might not work, or there may be glitches."), 6.0f);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user