2.8 KiB
2.8 KiB
| 1 | # Super Mario Galaxy 2 (Switch, 2025; base game v0 + update 1.4.0 = v393216), SDK 18.3.5. | |||||
|---|---|---|---|---|---|---|
| 2 | # hardware (GX → Vulkan with SPIR-V generated at run time, the DSP, DVD reads from the RomFS). main's bss is about 2.6 GB (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) and sdk are loaded; subsdk0 and sdk are Galaxy's builds. | |||||
| 5 | # ---- Identity ---- | |||||
| 6 | title_id | 0100FD8022DAA000 | ||||
| 7 | program_id | 0100FD8022DAA000 | ||||
| 8 | # ---- App ---- | |||||
| 9 | name | Super Mario Galaxy 2 | ||||
| 10 | ipa | SuperMarioGalaxy2.ipa | ||||
| 11 | app_category | public.app-category.action-games | ||||
| 12 | pad_layout | full | ||||
| 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 | |||||
| 14 | op_mode | handheld | ||||
| 15 | # ---- Versions ---- | |||||
| 16 | build | v393216 | 1.4.0 | main=4c4513d976582b4a7a766401a8ea6dbf | subsdk0=8a72a4dcbfd375d2952288284259da94 | sdk=6075151627016eef437c1312f2e3ed56 |
| 17 | package | v393216 | ||||
| 18 | shader_versions | v393216 | ||||
| 19 | # ---- Graphics ---- | |||||
| 20 | # main imports Vulkan, not NVN: the host's Vulkan layer (dm/gfx/vk/hle_vk.m). Hagi generates its GX shaders as SPIR-V at run time, and the RomFS has no SPIR-V file, | |||||
| 21 | # 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 | |||||
| 22 | # ---- Files ---- | |||||
| 23 | # 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 | |||||
| 24 | modules | main subsdk0 sdk | ||||
| 25 | romfs_marker | hagi.config | ||||
| 26 | zip_store | .arc:.ast:.bmp:.cache:.har:.png:.szs:.zst:.metallib | ||||
| 27 | # ---- Memory ---- | |||||
| 28 | # NPDM system resource 8 MB. As in Galaxy: no SetHeapSize, the game's memory is main's 2.6 GB bss. Unlike Galaxy, the movie player's StandardAllocator takes 384 MB of | |||||
| 29 | # virtual address memory (main+0x62c280: Initialize(nullptr, 0x18000000)), which the alias region holds after the SDK's node area (cut to 62 MB in dm/tools/sdk_patches.py for this sdk build). | |||||
| 30 | # So the block is 1.25 GB = 256 MB in front + 512 MB alias region + 256 MB stack region + 256 MB heap region; with main's 2.7 GB image about 4 GB of address space, as Galaxy's. | |||||
| 31 | # Footprint on the Mac (M4 Pro, the opening's first stage): 1.93 GB, flat from 2 to 5 minutes (Metal 1.0 GB) | |||||
| 32 | mem_reserve | 0x50000000 | ||||
| 33 | mem_alias | 0x20000000 | ||||
| 34 | mem_stack | 0x10000000 | ||||
| 35 | app_pool | 0xCD500000 | ||||
| 36 | # ---- Shader split ---- | |||||
| 37 | shader_note | Super Mario Galaxy 2 has no NVN shaders (its SPIR-V shaders go through the Vulkan layer) |