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.
2.0 KiB
2.0 KiB
| 1 | # Game profile of Super Mario 3D World + Bowser's Fury (Switch, base game v0 + update 1.2.2 = v262144). In bring-up: on the Mac 3D World reaches World 1-1 and Bowser's Fury its open world | ||||
|---|---|---|---|---|---|
| 2 | # Format: see dm/games/README.md | ||||
| 3 | # Nintendo EPD's engine (sead / agl, NintendoWare G3d / Ui2d / Vfx / Atk), SDK 10.4.0, NVN; RomFS is almost entirely Yaz0-compressed SARC archives (.szs). | ||||
| 4 | # Shaders: bfsha (BNSH) and agl sharcb (BAHS) in ShaderData/*.szs, particle effects in EffectData (BNSH), a few layouts in LayoutData (BNSH), SystemData/AglResource.szs (BAHS) | ||||
| 5 | # ---- Identity ---- | ||||
| 6 | title_id | 010028600EBDA000 | |||
| 7 | program_id | 010028600EBDA000 | |||
| 8 | # ---- App ---- | ||||
| 9 | # 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) | ||||
| 10 | name | Super Mario 3D World + Bowser's Fury | |||
| 11 | ipa | Mario3DWorld.ipa | |||
| 12 | app_category | public.app-category.action-games | |||
| 13 | # the virtual gamepad starts in the 3D layout (D-pad, right stick, L3 / R3): the right stick turns the camera | ||||
| 14 | pad_layout | full | |||
| 15 | feedback_snap | 66a71a3081b91b9a 30e3ccb0bd304ead | |||
| 16 | # ---- Versions ---- | ||||
| 17 | # only the merged 1.2.2 copy is extracted; the base game's own build IDs are added when needed | ||||
| 18 | build | v262144 | 1.2.2 | main=635fe25c7cb69847f41b49f19cd9aa89 | sdk=204eaef83fe5e5617d0787c8ef01a080 |
| 19 | package | v262144 | |||
| 20 | shader_versions | v262144 | |||
| 21 | # ---- Files ---- | ||||
| 22 | modules | main sdk | |||
| 23 | romfs_marker | ShaderData/RenderMaterial.szs | |||
| 24 | zip_store | .szs:.bfstm:.metallib | |||
| 25 | # ---- Memory ---- | ||||
| 26 | # The NPDM declares no system resource (META +0x14 = 0): the game uses SetHeapSize. main's bss is only about 7 MB. 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 | ||||
| 27 | mem_reserve | 0x100000000 | |||
| 28 | mem_alias | 0x10000000 | |||
| 29 | mem_stack | 0x10000000 | |||
| 30 | app_pool | 0xCD500000 | |||
| 31 | # ---- Shader split (shader_split.py) ---- | ||||
| 32 | shader_groups | /ShaderData/=shader /EffectData/=effect /LayoutData/=layout /SystemData/=agl | |||
| 33 | shader_note | Super Mario 3D World + Bowser's Fury shaders |