2.8 KiB
2.8 KiB
| 1 | # Game profile of Hollow Knight: Silksong (Switch, update 1.0.30000 = v655360). Plays on the Mac and on the iPhone | |||||
|---|---|---|---|---|---|---|
| 2 | # Format: see dm/games/README.md | |||||
| 3 | # Unity 6000.0.50f1 (IL2CPP) with FMOD, SDK 20.5.8; subsdk0 is the movie module, which plays the 27 MP4 cinematics (H.264 and AAC; Intro_Cinematic.mp4 after a new file). | |||||
| 4 | # Nearly everything is in 2,068 Addressables bundles (StreamingAssets/aa/Switch), whose Shader objects carry type trees (the bundles report engine version 0.0.0), so unityfs.py reads them | |||||
| 5 | # without a written-out layout. The host needed nn::hid::GetDebugPadStates, which Unity 6 polls every frame (hle_hid.c). | |||||
| 6 | # Docked (1920x1080; 1280x720 with present interval 2 while a cinematic plays) with the 2D pad layout: A binds, B jumps, Y attacks | |||||
| 7 | # ---- Identity ---- | |||||
| 8 | title_id | 010013C00E930000 | ||||
| 9 | program_id | 010013C00E930000 | ||||
| 10 | # ---- App ---- | |||||
| 11 | # 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) | |||||
| 12 | name | Hollow Knight: Silksong | ||||
| 13 | ipa | HollowKnightSilksong.ipa | ||||
| 14 | app_category | public.app-category.games | ||||
| 15 | # ---- Versions ---- | |||||
| 16 | build | v655360 | 1.0.30000 | main=fc9ea4ccc955d5799f37752b2d730b31 | subsdk0=c89c804fc3b26757661a70fc125aa923 | sdk=e01950c58e17b080c90494784ea1dd29 |
| 17 | package | v655360 | ||||
| 18 | shader_versions | v655360 | ||||
| 19 | # ---- Files ---- | |||||
| 20 | # load order as on Horizon: main, subsdk*, sdk (subsdk0 = NintendoSDK_movie) | |||||
| 21 | modules | main subsdk0 sdk | ||||
| 22 | romfs_marker | Data/globalgamemanagers | ||||
| 23 | zip_store | .assets:.bin:.bundle:.dat:.mp4:.ress:.metallib | ||||
| 24 | # ---- Memory ---- | |||||
| 25 | # The NPDM declares 16 MB of system resource, so IsVirtualAddressMemoryEnabled is true. Unity 6's nninitStartup (main+0x118cb70) only queries the memory info and sets the TLS allocator: | |||||
| 26 | # no heap and no StandardAllocator; Unity takes its memory itself through nn::os::AllocateAddressRegion and AllocateMemoryPages in the alias region. The 5 GB block of the other Unity games | |||||
| 27 | # with virtual address memory (256 MB in front + 4.375 GB alias region + 256 MB stack region + 128 MB heap region), with the node area cut for this sdk build (dm/tools/sdk_patches.py). Measured on the | |||||
| 28 | # Mac: the alias region's high-water mark +2.26 GB in the first room of play (+3.00 GB before the cut), 1.51 GB mapped, resident 2.1 GB and 1.25 GB of GPU memory, flat for 100 s of play. | |||||
| 29 | # The pool is the hardware's (3.2 GB): Unity only reads it through QueryMemoryInfo, and nothing maps against it | |||||
| 30 | sys_resource | 0x1000000 | ||||
| 31 | mem_reserve | 0x140000000 | ||||
| 32 | mem_alias | 0x118000000 | ||||
| 33 | mem_stack | 0x10000000 | ||||
| 34 | app_pool | 0xCD500000 | ||||
| 35 | # ---- Shader split (shader_split.py; Unity Shader and ComputeShader objects, read by unityfs.py) ---- | |||||
| 36 | # everything is under Data/: the player's serialized files and the StreamingAssets bundles | |||||
| 37 | shader_groups | /Data/=data | ||||
| 38 | shader_note | Hollow Knight: Silksong shaders |