Files
seedds 56b806155f One NVN driver layout for every game; shader sources read from the game files
The NVN driver's constant segments have the same layout in every game, so the
nvn_* profile keys are gone. Combined textures are at c2 0x20 + 8 r (a slot past
31 shares the image table; Hades II binds 34), images at 0x120, separate textures
at 0x168 (now always the host's slots 128 + n, as Monster Hunter Rise had them),
samplers at 0x568, and the storage buffer tables at c0 0x110 / 0x310 / 0x510.
dmsh_build.py decodes with that layout, the replay fills both texture tables,
and the translator numbers slots the same way (rebuilt; its SPIR-V and
reflection are byte-identical on 1,491 sample shaders, lock updated).

The shader_* switches and graphics are gone too; the build reads them from the
files (profile_guess.py shader_sources):
- Vulkan when main imports Vulkan and not NVN; its capture when the RomFS has
  no SPIR-V.
- A GLSLC capture when main holds GLSL sources and imports glslcCompile.
- An Oodle decode for Unreal paks, and the tool-mode decoder for Trinity packs.
- GLSLC outputs from every main.
- A cover pairing for each single-stage vertex shader (GLSLC, Unreal).
build_ipa.sh takes GFXAPI from the NSP script.

Also removed: the last D2R pieces (the embedded-shader path in dmsh_build.py,
dmsh_facts.py --freeze / --check, maxwell_refs.py, ref/hle_hid_d2r.c).

Chain: every profile's dmsh_chain.h is regenerated. The c1_full lists are
carried over: the change touches no c1 read, and the rebuilt Octopath
Traveler 0, Hades II, Unicorn Overlord and Rhythm Heaven Groove gave the same
lists, identical tables and the same reflection apart from separate texture
slots + 128.

Still to do:
- Run the chain procedure for the other NVN profiles.
- Engage's and Three Houses' shader tables need a new split: Engage gains
  Unity's 11 GLSLC shaders in main, and Three Houses' 17 BNSH vertex shaders
  lose their cover pairs.
- Ace Attorney's new tables are in, but its libraries are not rebuilt.
2026-10-21 07:23:10 +08:00

2.7 KiB

1# Super Mario Galaxy (Switch, 2025; base game v0 + update 1.3.1 = v327680), SDK 18.3.5.
2# hardware (GX → Vulkan with SPIR-V generated at run time, the DSP with its own ROMs in data/dsp, DVD reads from the RomFS). main's bss is about 2.9 GB (0xb964d0e8: the emulated memory).
3# Renders with Vulkan: main imports 99 vk* functions, which subsdk4 (NVIDIA's Vulkan driver, on GLSLC in subsdk1) supplies; subsdk3 is NVIDIA's OpenGL driver, subsdk2 nn::pcm.
4# The host implements the vk* functions on Metal itself (dm/gfx/vk/hle_vk.m), so only main, subsdk0 (NintendoSDK_movie, for the WebM movies in data/video_replace) and sdk are loaded.
5# ---- Identity ----
6title_id010099C022B96000
7program_id010099C022B96000
8# ---- App ----
9nameSuper Mario Galaxy
10ipaSuperMarioGalaxy.ipa
11app_categorypublic.app-category.action-games
12pad_layoutfull
13# handheld: the pointer (star bits, menus, the file select) is the touch screen; docked it is the Joy-Con gyro, which the host does not have
14op_modehandheld
15# ---- Versions ----
16buildv3276801.3.1main=9d08cadcbcc1cea428381745291f8bc2subsdk0=8a72a4dcbfd375d2952288284259da94sdk=6075151627016eef437c1312f2e3ed56
17packagev327680
18shader_versionsv327680
19# ---- Graphics ----
20# 3,089 modules with the 56 built into main, and the RomFS has no SPIR-V file, so the NSP script captures them by booting the game on the Mac (vk_capture.tsv lists the keys); vk_shaders.py translates the capture
21# ---- Files ----
22# load order as on Horizon: main, subsdk*, sdk; subsdk1–4 (GLSLC, nn::pcm, NVIDIA's OpenGL and Vulkan drivers) are replaced by the host's Vulkan layer and not loaded
23modulesmain subsdk0 sdk
24romfs_markerhagi.config
25zip_store.webm:.png:.har:.ast:.thp:.metallib
26# ---- Memory ----
27# NPDM system resource 8 MB. Measured (DM_SVC=1, Mac, to the Star Festival): no SetHeapSize, one alias page mapped during SDK initialization; the game's memory is main's
28# 2.9 GB bss (charged 443 MB), not this block (7 MB charged). So the block is 1 GB = 256 MB in front + 256 MB alias region + 256 MB stack region + 256 MB heap region;
29# with main's 3 GB image that is about 4 GB of address space. Footprint on the Mac: 1.9 GB (Metal 1.1 GB)
30mem_reserve0x40000000
31mem_alias0x10000000
32mem_stack0x10000000
33app_pool0xCD500000
34# ---- Shader split ----
35shader_noteSuper Mario Galaxy has no NVN shaders (its SPIR-V shaders go through the Vulkan layer)