Mario Kart 8 Deluxe (0100152000022000, update 4.0.0, Nintendo's sead / agl / gsys on SDK 4.4.0, the oldest SDK so far): game profile and five general changes. Plays on the Mac and an iPhone from boot through the title's demo race, the Mii pick and the menus into Grand Prix races at 60 fps with sound, and a second boot loads the save. The Mii database (hle_mii.c: the six default Miis every console has, which the game lists at boot without reading the count, none of the console's own, random Miis for the demo race, the editor cancelled) and a MiiModel system data stand-in (0100000000000802 mounted as MiiResource:, written by the host with the layout main's Mii renderer reads: no textures and every shape one degenerate triangle, because the faceline is drawn without a check; the firmware is not the host's to ship, so Mii heads draw nothing). The add-on content cache sized as Horizon's RomFS working memory (its licence is decrypted in a 0x3130-byte heap that also holds the 4 KB the host used to answer). Device save data as a save of its own when main also imports MountSaveData (at boot the game deletes CommonSave:/userdata.dat, which in the shared directory was UserSave's; Animal Crossing, device save only, keeps its island where it was). SDK 4's DeviceSink (command 0xf, 0x130 bytes, byte input indices) and the audio renderer's update lock read off each SDK's own AudioRenderSystem::Update (LockMutex +0x1d0 / +0x1d8, SdkMutexType +0x1d8 / +0x1f0 / +0x1f8: it was SDK 16's for every SDK before 20; sound checked on Big Brain Academy and DRAGON QUEST XI S). The zero cube for a 2D array of fewer than six layers in a cube slot. Profile: render_cond on, a recorded prewarm list from boot into the first race; Breath of the Wild and Animal Crossing boot with their DLC caches resized, host unit tests pass

This commit is contained in:
seedds committed 2026-10-23 20:36:56 +08:00
1 parent eab15b5a7e
commit 6ec201c756
19 files changed
+78340 -16

No files matched your search

+1
View File
@@ -0,0 +1 @@
# generated
1 # generated
+3
View File
@@ -0,0 +1,3 @@
# chain b-9d8c16eac7d2 2026-10-23T19:09:02+08:00
44647df962f9d27b
4f5975d315f7ead3
1 # chain b-9d8c16eac7d2 2026-10-23T19:09:02+08:00
2 44647df962f9d27b
3 4f5975d315f7ead3
File diff suppressed because it is too large. Load diff
+2
View File
@@ -0,0 +1,2 @@
// Generated file (dm/gfx/tools/dmsh_chain.py --header, game 0100152000022000): the B shader library translation chain version this source tree expects (default options); the host loads only <library dir>/b-<V>/
#define DMSH_CHAIN "9d8c16eac7d2"
+47
View File
@@ -0,0 +1,47 @@
# 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)
# Format: see dm/games/README.md
# 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;
# 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.
# 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
# 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
# (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
# 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)
# ---- Identity ----
title_id 0100152000022000
program_id 0100152000022000
# ---- App ----
# 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)
name Mario Kart 8 Deluxe
ipa MarioKart8Deluxe.ipa
app_category public.app-category.racing-games
# 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)
render_cond on
# ---- Versions ----
# only the merged 4.0.0 copy is extracted; the base game's own build IDs are added when needed
build v1441792 4.0.0 main=2c336a9bcf79c3040ce506cdd391b578 subsdk0=d9de423efc1512328c3c05378c7cb031 sdk=ba520906609c503227871a314a94fb5f
package v1441792
shader_versions v1441792
# ---- Files ----
# every module main imports from
modules main subsdk0 sdk
romfs_marker UI/cmn/movie/StaffCredits.mp4
zip_store .bfres:.bfstm:.bslnk:.mp4:.ptcl:.sarc:.szs:.webm:.metallib
# ---- Memory ----
# 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
mem_reserve 0x100000000
mem_alias 0x10000000
mem_stack 0x10000000
app_pool 0xCD500000
# the NPDM declares 0 MB of system resource: IsVirtualAddressMemoryEnabled is false, as on Horizon
sys_resource 0x0
# ---- Shader split ----
# 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,
# agl's two BAHS sharcb and 37 in main; 18,747 variation pairs
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
shader_note Mario Kart 8 Deluxe shaders
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
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,29 @@
# Answer table for translation queries (generated by dm/gfx/tools/shader_split.py, do not edit): key <TAB> fact JSON. This game has no PC version to pair with: only the thread group / shared memory of compute shaders (taken from the control section); other queries get the translator defaults
01ddc1b8f71c92f2 {"local":[32,1,1],"shared":0}
0ef048bb0413ef7d {"local":[32,1,1],"shared":0}
1ccfe38f93a0ad95 {"local":[32,1,1],"shared":0}
2fc67ce43f79ca29 {"local":[32,1,1],"shared":0}
41156d73d21a2478 {"local":[32,1,1],"shared":0}
4c2f15d2c786edad {"local":[32,1,1],"shared":0}
5744acc6d1b7b021 {"local":[32,1,1],"shared":0}
673fa30a2815c396 {"local":[32,1,1],"shared":0}
679dbd1f5d4f18a9 {"local":[32,1,1],"shared":0}
6e1a1e9d5e8fb566 {"local":[32,1,1],"shared":0}
6f85eb914d6c9d09 {"local":[32,1,1],"shared":0}
6f8ec311cdf640a1 {"local":[32,1,1],"shared":0}
734b5fd55a9a2537 {"local":[32,1,1],"shared":0}
77e467fc4efcbe1d {"local":[32,1,1],"shared":0}
82d07760fd777f75 {"local":[32,1,1],"shared":0}
8bd132af1f21d489 {"local":[32,1,1],"shared":0}
90aa826ae6fbf6ae {"local":[32,1,1],"shared":0}
9f00441f55ac773c {"local":[32,1,1],"shared":0}
a0bb91ba753f352f {"local":[32,1,1],"shared":0}
ac40123a29ad60f6 {"local":[32,1,1],"shared":0}
afe3bc953dbf52bc {"local":[32,1,1],"shared":0}
b10b3b3fef43e373 {"local":[32,1,1],"shared":0}
bfc0cc41e591c671 {"local":[32,1,1],"shared":0}
cfdb555d90a0288c {"local":[32,1,1],"shared":0}
d58d39875bb2435f {"local":[32,1,1],"shared":0}
e908013e752fc2ea {"local":[32,1,1],"shared":0}
e9e401c7fa75e184 {"local":[32,1,1],"shared":0}
fc1b0dc28a955ed2 {"local":[32,1,1],"shared":0}
Can't render this file because it contains an unexpected character in line 2 and column 19.
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,2 @@
# kind: evidence control-section key conflict rulings: empty
dm_ctl_sha16 chosen_pc class candidates records
1 # kind: evidence control-section key conflict rulings: empty
2 dm_ctl_sha16 chosen_pc class candidates records
File diff suppressed because it is too large. Load diff