Files
ppsspp/UI/CMakeLists.txt
T
Henrik RydgårdandClaude Opus 5 3a70c6b149 Install PKG game updates, and boot them
Opening a .pkg now offers to install it, the way a .zip does - see the new
InstallPkgScreen, which shows what the update patches, what it'll take up
on disk (exact, since package contents aren't compressed) and where it's
going. The package's PS3-style USRDIR/CONTENT wrapping is stripped so the
files land where the PSP expects them, in PSP/GAME/<DISC_ID>.

Booting a disc then looks for PSP/GAME/<DISC_ID>/PBOOT.PBP and boots that
instead of the disc's own EBOOT, leaving the disc mounted - so the update
overrides the files it ships and the disc supplies the rest. The update's
DISC_ID has to match; a DISC_VERSION mismatch only warns, since updates do
get used with slightly different dumps in practice.

Verified against the whole corpus: every one installs, and the
digital NP* update/base-image pairs that could be assembled all boot the
patch rather than the disc's executable. That includes Super Robot Taisen
Operation Extend from a real NPUMDIMG EBOOT.PBP, which settles that
ISO.BIN.EDAT does not re-key the PBOOT - a digital title's patched EBOOT is
encrypted exactly like a UMD one. On the UMD side, the patched
LittleBigPlanet reads PATCH.ARC out of the install alongside the disc's own
archive.

The DISC_VERSION warning turns out to be load-bearing: many of the pairs
mismatch, because the dumps in circulation are later disc revisions than the
updates were built against. docs/pkg_notes.md has the numbers, and the one
thing that doesn't work - PGD-wrapped .sprx modules, which
sceKernelLoadModuleNpDrm can't load.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 11:15:15 -06:00

130 lines
2.7 KiB
CMake

set(UISource)
if(NOT LIBRETRO)
list(APPEND UISource
AudioCommon.h
AudioCommon.cpp
)
endif()
list(APPEND UISource
ImDebugger/ImDebugger.cpp
ImDebugger/ImDebugger.h
ImDebugger/ImGe.cpp
ImDebugger/ImGe.h
ImDebugger/ImConsole.cpp
ImDebugger/ImConsole.h
ImDebugger/ImDisasmView.cpp
ImDebugger/ImDisasmView.h
ImDebugger/ImMemView.cpp
ImDebugger/ImMemView.h
ImDebugger/ImStructViewer.cpp
ImDebugger/ImStructViewer.h
ImDebugger/ImJitViewer.cpp
ImDebugger/ImJitViewer.h
DiscordIntegration.cpp
NativeApp.cpp
AdhocServerScreen.h
AdhocServerScreen.cpp
BackgroundAudio.h
BackgroundAudio.cpp
Background.h
Background.cpp
ChatScreen.h
ChatScreen.cpp
BaseScreens.h
BaseScreens.cpp
DebugOverlay.cpp
DebugOverlay.h
DevScreens.cpp
DevScreens.h
DisplayLayoutScreen.cpp
DisplayLayoutScreen.h
EmuScreen.h
EmuScreen.cpp
GameInfoCache.h
GameInfoCache.cpp
IAPScreen.cpp
IAPScreen.h
MainScreen.h
MainScreen.cpp
GameBrowser.h
GameBrowser.cpp
MiscScreens.h
MiscScreens.cpp
MiscViews.h
MiscViews.cpp
PauseScreen.h
PauseScreen.cpp
SimpleDialogScreen.h
SimpleDialogScreen.cpp
TabbedDialogScreen.h
TabbedDialogScreen.cpp
GameScreen.h
GameScreen.cpp
GameSettingsScreen.h
GameSettingsScreen.cpp
DeveloperToolsScreen.h
DeveloperToolsScreen.cpp
DriverManagerScreen.h
DriverManagerScreen.cpp
GPUDriverTestScreen.h
GPUDriverTestScreen.cpp
TiltAnalogSettingsScreen.h
TiltAnalogSettingsScreen.cpp
TouchControlLayoutScreen.h
TouchControlLayoutScreen.cpp
TouchControlVisibilityScreen.h
TouchControlVisibilityScreen.cpp
GamepadEmu.h
GamepadEmu.cpp
JoystickHistoryView.h
JoystickHistoryView.cpp
LoadStateConfirmScreen.h
LoadStateConfirmScreen.cpp
OnScreenDisplay.h
OnScreenDisplay.cpp
ControlMappingScreen.h
ControlMappingScreen.cpp
RemoteISOScreen.h
RemoteISOScreen.cpp
ReportScreen.h
ReportScreen.cpp
SavedataScreen.h
SavedataScreen.cpp
SystemInfoScreen.h
SystemInfoScreen.cpp
Store.h
Store.cpp
UploadScreen.h
UploadScreen.cpp
CwCheatScreen.h
CwCheatScreen.cpp
InstallUpdateScreen.h
InstallUpdateScreen.cpp
InstallZipScreen.h
InstallZipScreen.cpp
InstallPkgScreen.h
InstallPkgScreen.cpp
JitCompareScreen.h
JitCompareScreen.cpp
MemStickScreen.h
MemStickScreen.cpp
ProfilerDraw.h
ProfilerDraw.cpp
CustomButtonMappingScreen.h
CustomButtonMappingScreen.cpp
Theme.h
Theme.cpp
UIAtlas.h
UIAtlas.cpp
RetroAchievementScreens.cpp
RetroAchievementScreens.h
)
# Headless and unit test builds never link this - they don't have a UI to show. See the
# comment above add_subdirectory(UI) in the root CMakeLists.txt for why USE_DISCORD=1 has
# to be defined before this add_subdirectory() call rather than in here.
add_library(ppsspp_ui STATIC ${UISource})
target_link_libraries(ppsspp_ui Common Core)
setup_target_project(ppsspp_ui UI)