3.3 KiB
3.3 KiB
| 1 | # Game profile of Mario Kart 8 Deluxe (Switch, update 4.0.0 = v1441792). Plays on the iPhone and the Mac (boot, the title screen's demo race, the Mii pick, the menus, Grand Prix races at 60 fps with sound) | |||||
|---|---|---|---|---|---|---|
| 2 | # Format: see dm/games/README.md | |||||
| 3 | # Nintendo's sead / agl / gsys engine with NintendoWare (G3d, Ui2d, Vfx, Atk) and Pia networking, on SDK 4.4.0, the oldest SDK so far (DARK SOULS: REMASTERED is 4.5.0), NVN; | |||||
| 4 | # subsdk0 is the SDK's movie library (the menus' H.264 previews). RomFS is mostly Yaz0-compressed SARC (.szs), BFRES models and BNTX textures, which the game reads itself. | |||||
| 5 | # Three host parts it needed: the Mii database (hle_mii.c: the six default Miis it lists at boot and never counts, random Miis for the title's demo race), a MiiModel system data | |||||
| 6 | # stand-in (hle_mii.c / hle_fs.c MountSystemData: the firmware's Mii heads are not the host's to ship, so every head is empty and draws nothing), and SDK 4's audio renderer | |||||
| 7 | # (hle_audren.c: its DeviceSink is command 0xf of 0x130 bytes, and the update lock is an nn::os::MutexType at +0x1d0). Its add-on content (0100152000023001) holds only contents.dat | |||||
| 8 | # and version.txt (the courses are in the update): the game decrypts it in a 0x3130-byte heap, which the add-on content cache must leave room in (hle_fs.c romfs_work_size) | |||||
| 9 | # ---- Identity ---- | |||||
| 10 | title_id | 0100152000022000 | ||||
| 11 | program_id | 0100152000022000 | ||||
| 12 | # ---- App ---- | |||||
| 13 | # 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) | |||||
| 14 | name | Mario Kart 8 Deluxe | ||||
| 15 | ipa | MarioKart8Deluxe.ipa | ||||
| 16 | app_category | public.app-category.racing-games | ||||
| 17 | # the race records SetRenderEnableConditional as a course loads: evaluated at replay, as on the GPU (drawn anyway, the same race route at the same frames looked the same; evaluated is NVN's behaviour) | |||||
| 18 | render_cond | on | ||||
| 19 | # ---- Versions ---- | |||||
| 20 | # only the merged 4.0.0 copy is extracted; the base game's own build IDs are added when needed | |||||
| 21 | build | v1441792 | 4.0.0 | main=2c336a9bcf79c3040ce506cdd391b578 | subsdk0=d9de423efc1512328c3c05378c7cb031 | sdk=ba520906609c503227871a314a94fb5f |
| 22 | package | v1441792 | ||||
| 23 | shader_versions | v1441792 | ||||
| 24 | # ---- Files ---- | |||||
| 25 | # every module main imports from | |||||
| 26 | modules | main subsdk0 sdk | ||||
| 27 | romfs_marker | UI/cmn/movie/StaffCredits.mp4 | ||||
| 28 | zip_store | .bfres:.bfstm:.bslnk:.mp4:.ptcl:.sarc:.szs:.webm:.metallib | ||||
| 29 | # ---- Memory ---- | |||||
| 30 | # no system resource: the game sets a 3.03 GB heap (pool − 64 MB) in the 4 GB layout's 3.25 GB heap region; about 2.4 GB resident and 1.26 GB of Metal allocations in a race on the Mac | |||||
| 31 | mem_reserve | 0x100000000 | ||||
| 32 | mem_alias | 0x10000000 | ||||
| 33 | mem_stack | 0x10000000 | ||||
| 34 | app_pool | 0xCD500000 | ||||
| 35 | # the NPDM declares 0 MB of system resource: IsVirtualAddressMemoryEnabled is false, as on Horizon | |||||
| 36 | sys_resource | 0x0 | ||||
| 37 | # ---- Shader split ---- | |||||
| 38 | # 29,650 shaders (12,529 vertex, 17,092 pixel, 28 compute, 1 geometry): BNSH in the courses' and objects' .bfsha / .bfres archives inside the .szs SARCs, the effects' .ptcl, the layouts, | |||||
| 39 | # agl's two BAHS sharcb and 37 in main; 18,747 variation pairs | |||||
| 40 | shader_groups | /MapObj/=mapobj /Course/=course /UI/=ui /Audio/=audio /Kart/=kart /Ghost/=ghost /Driver/=driver /RaceCommon/=racecommon /Common/=common /DriverTex/=drivertex /Trophy/=trophy /UI3D/=ui3d /Data/=data /DriverAnim/=driveranim /AI/=ai | ||||
| 41 | shader_note | Mario Kart 8 Deluxe shaders |