Files
seeddsandv0lumehi 92fc2f2711 Build and ship offline Metal pipeline archives (#226)
Compile eligible shader-pair bases on the Mac with metal-tt, package one
archive per selected iPhone GPU, and use a matching bundle before falling
back to on-device preparation. Carry the profile depth mode through packing
and include the pulling libraries required by the bundled bases.

Integrate PR #226 with four confirmed fixes: validate archive container
bounds before invoking Metal; require at least one actual successful bundle
probe; hash consumed library bytes into offline cache keys; and emit device
remainder lists for constant-only plans instead of aborting packaging.
Keep game measurements in the game note and document the general findings.

Validation on current main: 52 real Metal bundle checks, 57 archive checks,
79 prewarm checks on each pipeline path, 73 Python regressions covering
offline tools, packaging, documentation and chain checks, and compilation
of all 133 iOS source files. No new iPhone gameplay validation. The archive guard validates
container structure, not private Metal payloads.

Co-authored-by: v0lumehi <aljic.zijad@gmail.com>
2026-10-26 10:52:50 +08:00

2.1 KiB

1# Game profile of The Legend of Zelda: Link's Awakening (Switch, base game v0 + update 1.1.0 = v131072). In bring-up
2# Format: see dm/games/README.md
3# Grezzo's engine on NintendoWare (G3d / Ui2d / Vfx / Atk / Font), SDK 8.2.0, NVN; modules main + subsdk0 (GLSLC, the runtime shader compiler) + subsdk1 (NintendoSDK_movie) + sdk.
4# RomFS: bfres models and maps (region_common/map, region_common/actor), shaders in region_common/shader/*.bfsha (BNSH; the *_uber.bfsha are compiled at run time through GLSLC),
5# particle effects in region_common/effect/*.ptcl, layouts in */ui/*.arc (SARC)
6# ---- Identity ----
7title_id01006BB00C6F0000
8program_id01006BB00C6F0000
9# ---- App ----
10# Game name: only a label for profile listings and the Mac window title; the iOS app name is the game name in the base NSP, and the bundle ID comes from the base game title ID (build_ipa.sh / NSP script)
11nameThe Legend of Zelda: Link's Awakening
12ipaZeldaLinksAwakening.ipa
13app_categorypublic.app-category.adventure-games
14# ---- Versions ----
15# only the merged 1.1.0 copy is extracted; the base game's own build IDs are added when needed
16buildv1310721.1.0main=909e904af78ac1b8deefe97ab2ccdb51subsdk0=c8a3cc0b1d1858330a881c0c2fc87940subsdk1=8df876f80ce4ceee62360b31405c452fsdk=3ae34e689d7a35f13cbf42bfd672af8b
17packagev131072
18shader_versionsv131072
19# ---- Files ----
20modulesmain subsdk0 subsdk1 sdk
21romfs_markerregion_common/shader/postprocess.bfsha
22zip_store.bfres:.bfstm:.bfsar:.webm:.metallib
23# ---- Memory ----
24# The NPDM declares no system resource (META +0x14 = 0): the game uses SetHeapSize. Starts from 13 Sentinels' partition (4 GB block = 256 MB in front + 256 MB alias region + 256 MB stack region + 3.25 GB heap region) until measured
25mem_reserve0x100000000
26mem_alias0x10000000
27mem_stack0x10000000
28app_pool0xCD500000
29# ---- Shader split (shader_split.py) ----
30shader_groups/region_common/shader/=shader /region_common/effect/=effect /ui/=layout
31shader_noteLink's Awakening shaders
32# the NVN depth mode the game sets (nvnDeviceSetDepthMode near = 0): the pipeline archive made offline holds the main0_z vertex entries (dm/gfx/tools/pso_offline.py)
33depth_modezero