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:
1 parent
eab15b5a7e
commit
6ec201c756
19 files changed
+78340
-16
No files matched your search
@@ -0,0 +1 @@
|
||||
# generated
|
||||
|
@@ -0,0 +1,3 @@
|
||||
# chain b-9d8c16eac7d2 2026-10-23T19:09:02+08:00
|
||||
44647df962f9d27b
|
||||
4f5975d315f7ead3
|
||||
|
File diff suppressed because it is too large.
Load diff
@@ -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"
|
||||
@@ -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
|
||||
|
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
|
||||
|
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user