mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-09-11 07:03:33 +02:00
PSAR: don't decrypt entries a filter is going to reject
Decrypting an entry's contents is by far the most expensive part of walking an archive, and it happened for every entry before the filter was even consulted. Now it waits until entryData()/entryCompression() asks, so pulling just the fonts out of an updater no longer costs a full firmware decrypt. Records are decrypted independently of each other, so deferring one is safe. Unpacking fonts from a 3.11 updater goes 0.365s -> 0.133s; a full unpack is unchanged and produces identical output. The compression counts now describe the entries we actually decoded rather than everything in the archive. Also adds --unpack-updater-filter to headless, which is how the above was measured. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JvJR8oJNSCimCM9KXVLjfq
This commit is contained in:
co-authored by
Claude Opus 5
parent
a641305c75
commit
111f01481c
@@ -209,6 +209,7 @@ static const CommandLineParam g_autoParams[] = {
|
||||
{POFF(mountIso), CmdParamType::String, "mount", 'm', "Mount ISO/CSO on umd1:", CmdLineMode::Headless},
|
||||
{POFF(unpackUpdater), CmdParamType::String, "unpack-updater", '\0', "Unpack the firmware in an updater EBOOT.PBP into DIR and exit", CmdLineMode::Headless},
|
||||
{POFF(unpackUpdaterModel), CmdParamType::String, "unpack-updater-model", '\0', "PSP model to unpack for (01g..12g, default any)", CmdLineMode::Headless},
|
||||
{POFF(unpackUpdaterFilter), CmdParamType::String, "unpack-updater-filter", '\0', "Only unpack entries under this path, e.g. flash0:/font/", CmdLineMode::Headless},
|
||||
{POFF(odsLog), CmdParamType::Bool, "odslog", 'o', "Also log through OutputDebugString (Windows)", CmdLineMode::Headless},
|
||||
{POFF(generateInterpreterDispatch), CmdParamType::Bool, "generate-interpreter-dispatch", '\0', "Generate C++ interpreter dispatch code (ExecInstruction) to stdout and exit", CmdLineMode::Headless},
|
||||
{POFF(resolutionScale), CmdParamType::Int, "resolution-scale", '\0', "Set the resolution scale factor"},
|
||||
|
||||
Reference in New Issue
Block a user