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>
2.1 KiB
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 ---- | ||||||
| 7 | title_id | 01006BB00C6F0000 | |||||
| 8 | program_id | 01006BB00C6F0000 | |||||
| 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) | ||||||
| 11 | name | The Legend of Zelda: Link's Awakening | |||||
| 12 | ipa | ZeldaLinksAwakening.ipa | |||||
| 13 | app_category | public.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 | ||||||
| 16 | build | v131072 | 1.1.0 | main=909e904af78ac1b8deefe97ab2ccdb51 | subsdk0=c8a3cc0b1d1858330a881c0c2fc87940 | subsdk1=8df876f80ce4ceee62360b31405c452f | sdk=3ae34e689d7a35f13cbf42bfd672af8b |
| 17 | package | v131072 | |||||
| 18 | shader_versions | v131072 | |||||
| 19 | # ---- Files ---- | ||||||
| 20 | modules | main subsdk0 subsdk1 sdk | |||||
| 21 | romfs_marker | region_common/shader/postprocess.bfsha | |||||
| 22 | zip_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 | ||||||
| 25 | mem_reserve | 0x100000000 | |||||
| 26 | mem_alias | 0x10000000 | |||||
| 27 | mem_stack | 0x10000000 | |||||
| 28 | app_pool | 0xCD500000 | |||||
| 29 | # ---- Shader split (shader_split.py) ---- | ||||||
| 30 | shader_groups | /region_common/shader/=shader /region_common/effect/=effect /ui/=layout | |||||
| 31 | shader_note | Link'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) | ||||||
| 33 | depth_mode | zero |