mirror of
https://github.com/knutwurst/patchdl.git
synced 2026-10-06 09:00:23 +02:00
Write param.json + icon0.png into /user/app/<TITLE_ID>/sce_sys/, then call sceAppInstUtilAppInstallTitleDir to register the directory as an app. No package, no code signing — the installer reads the metadata files directly. The tile uses TITLE_ID PTDL00001 and deeplinkUri http://127.0.0.1:12880/, so tapping it opens PatchDL's own UI in the on-console browser. Only useful while the ELF is running. Asset pipeline: param.json + icon0.png live under assets/ and get .incbin'd straight into .rodata. Makefile lists them as TILE_ASSETS so a touch on either forces a relink. Stat-guard: file_matches() diffs each asset against the on-disk copy first; when nothing changed the install API isn't called at all. Keeps repeated payload starts from re-registering the app. Repeated /api/install_tile calls return "already installed and up to date". Backend lazy-load: AppInstUtil isn't mapped until something pokes it, so the helper polls patchdl_install_backend_check() for up to ~15 s before resolving sceAppInstUtilAppInstallTitleDir. Wiring: /api/install_tile POST triggers the install on demand; patchdl_websrv_start() runs it at startup when home_shortcut is on; and flipping the toggle from off to on in /api/config also fires it. All three paths share the stat-guarded helper so they're safe to repeat.
21 lines
1.0 KiB
XML
21 lines
1.0 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
<defs>
|
|
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
|
|
<stop offset="0" stop-color="#0f2a1e"/>
|
|
<stop offset="1" stop-color="#0a1612"/>
|
|
</linearGradient>
|
|
<linearGradient id="badge" x1="0" y1="0" x2="0" y2="1">
|
|
<stop offset="0" stop-color="#21d07a"/>
|
|
<stop offset="1" stop-color="#179a59"/>
|
|
</linearGradient>
|
|
</defs>
|
|
<rect width="512" height="512" rx="72" fill="url(#bg)"/>
|
|
<rect x="56" y="56" width="160" height="160" rx="36" fill="url(#badge)"/>
|
|
<text x="136" y="178" font-family="Helvetica,Arial,sans-serif" font-size="116"
|
|
font-weight="800" fill="#0a1612" text-anchor="middle">PD</text>
|
|
<text x="256" y="346" font-family="Helvetica,Arial,sans-serif" font-size="80"
|
|
font-weight="700" fill="#e7ecea" text-anchor="middle">PatchDL</text>
|
|
<text x="256" y="404" font-family="Helvetica,Arial,sans-serif" font-size="32"
|
|
font-weight="500" fill="#7a8f86" text-anchor="middle">PS5 Patch Tool</text>
|
|
</svg>
|