mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-09-19 19:07:48 +02:00
Shows what's actually in PSP/NAND - nothing, a fonts-only partial install, or a full firmware with its version, build date and region - read from flash0:/vsh/etc/version.txt, which is present both in a PSAR-unpacked install and a NAND dumped off hardware. Also offers to install an updater, erase the NAND, and launch the XMB, the last one gated on FirmwareVersionSupportsVSH() since the module patches that get vshmain.prx running are tied to 6.61's offsets. Installing a firmware now erases flash0/flash1/ipl first - two firmwares can't be merged, a file the new one doesn't have would linger and still get loaded. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
53 lines
1.8 KiB
C++
53 lines
1.8 KiB
C++
// Copyright (c) 2026- PPSSPP Project.
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, version 2.0 or later versions.
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License 2.0 for more details.
|
|
|
|
// A copy of the GPL 2.0 should have been included with the program.
|
|
// If not, see http://www.gnu.org/licenses/
|
|
|
|
// Official git repository and contact information can be found at
|
|
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
|
|
|
|
#pragma once
|
|
|
|
#include "Common/File/Path.h"
|
|
#include "Common/UI/UIScreen.h"
|
|
#include "Common/UI/ViewGroup.h"
|
|
|
|
#include "Core/Util/PSARUnpack.h"
|
|
|
|
#include "UI/SimpleDialogScreen.h"
|
|
|
|
// What's in PSP/NAND - which can be nothing at all, just the fonts we pulled off some game's
|
|
// disc, or a full firmware unpacked from an updater. Also the place to launch the XMB from,
|
|
// since that's what a full firmware buys you.
|
|
class FirmwareScreen : public UITwoPaneBaseDialogScreen {
|
|
public:
|
|
FirmwareScreen(const Path &gamePath)
|
|
: UITwoPaneBaseDialogScreen(gamePath, TwoPaneFlags::SettingsToTheRight | TwoPaneFlags::ContentsCanScroll) {}
|
|
|
|
const char *tag() const override { return "Firmware"; }
|
|
|
|
protected:
|
|
std::string_view GetTitle() const override;
|
|
void BeforeCreateViews() override;
|
|
void CreateSettingsViews(UI::ViewGroup *parent) override;
|
|
void CreateContentViews(UI::ViewGroup *parent) override;
|
|
void dialogFinished(const Screen *dialog, DialogResult result) override;
|
|
|
|
private:
|
|
void LaunchVSH();
|
|
void BrowseForUpdater();
|
|
void AskToErase();
|
|
|
|
Path nandRoot_;
|
|
InstalledFirmwareInfo info_;
|
|
};
|