Files
nxnative-easy/dm/games/01004AB00A260000/game.tsv
T
seedds f4f0a85d6e patch_nso.py split into the general rewriter and per-build patch files (GitHub issue #63): every game's bring-up edited the one file, so PRs for unrelated games conflicted. dm/tools/patch_nso.py (1,711 → about 1,100 lines) keeps the general passes and the driver; the instruction encoders move unchanged to dm/tools/nso_asm.py; a game's own patches (CUTS, OBS and the frame-step stubs, now FRAME_STEP = {build ID: stub(ctx)}) move verbatim with their comments to dm/games/<id>/patches.py (16 profiles: Tears of the Kingdom, Breath of the Wild, Age of Calamity and Paper Mario: The Thousand-Year Door with their stubs), and the cuts of Nintendo's sdk module builds, 6 of the 15 shipped by 2 to 4 games, to dm/tools/sdk_patches.py. The rewriter loads every patch file, whatever the game, and applies those of a module's build ID at the points it did before (cuts before the scan, gates after the rewrite, stubs after the gates); a build ID claimed twice stops it, and its command line needs no DM_GAME. build_src.sha256 lists the rewriter's files and every patch file (the same for every module). NSP script: the rewrite step's reuse key counts nso_asm.py and only the patch files that name one of the game's builds (patch_files), profile_files leaves patches.py out (only the rewrite step reads it), and a derived profile gets none. dm/tools/tests/test_patches.py: no build claimed twice, the entries' forms, a game's file names only its own profile's non-sdk builds, sdk_patches.py only sdk builds some profile ships, and the reuse key's patch files. Checked byte-identical: every extracted module on the game drive (131 builds) rewritten with the previous and the new rewriter gives the same outputs but build_src.sha256, 28 of the 30 patched builds among them (all four frame-step mains), and 7 fail alike (rtld, and New Super Mario Bros. U Deluxe's, which no profile rewrites); the other two (Super Mario Bros. Wonder's mains and Absolum's, no game files here) by their CUTS / OBS data, equal to the previous tables. AGENTS.md, docs, dm/games/README.md, the profiles' comments and the host comments that named a game's cut in patch_nso.py now name its patches.py or sdk_patches.py
2026-10-23 23:36:21 +08:00

2.5 KiB

1# Game profile of DARK SOULS: REMASTERED (Switch, update 1.0.3 = v196608; base game v0 not extracted). Plays on the iPhone and the Mac (title, character creation, the opening, the Undead Asylum at 60 fps with sound; 30 on the Switch, rewriter cuts lift its limiter and halve its fixed frame step, patches.py)
2# Format: see dm/games/README.md
3# FromSoftware's engine (dantelion2) on SDK 4.5.0, the oldest so far, NVN, Havok, FMOD through AudioOut; subsdk0 is the SDK's movie library (H.264 MP4 movies, decoded by the host).
4# Files are in two dvdbnd archives (dvdbnd0.bdt / dvdbnd1.bdt, each indexed by its .bhd5; DCX zlib entries, BND3 archives inside), which the game reads itself
5# ---- Identity ----
6title_id01004AB00A260000
7program_id01004AB00A260000
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)
10nameDARK SOULS: REMASTERED
11ipaDarkSoulsRemastered.ipa
12app_categorypublic.app-category.role-playing-games
13# the right stick turns the camera and the D-pad switches spells and items; the game maps its buttons by position (B confirms, A goes back)
14pad_layoutfull
15# ---- Versions ----
16# only the merged 1.0.3 copy is extracted
17buildv1966081.0.3main=df3766a2bb651a3e822828abf10b6f7bsubsdk0=73f98f5f7a34d4c520bda7c1a19cd9bdsdk=d95547528dcd684e2813ec83d338a472
18packagev196608
19shader_versionsv196608
20# ---- Files ----
21# every module main imports from
22modulesmain subsdk0 sdk
23romfs_markerdvdbnd0.bdt
24zip_store.bdt:.mp4:.metallib
25# ---- Memory ----
26# no system resource: the game sets a 3.10 GB heap (pool − used) in the 4 GB layout; about 1.6 GB resident in the Asylum on the Mac
27mem_reserve0x100000000
28mem_alias0x10000000
29mem_stack0x10000000
30app_pool0xCD500000
31# the NPDM declares 0 MB of system resource: IsVirtualAddressMemoryEnabled is false, as on Horizon
32sys_resource0x0
33# the rewritten modules (110 MB with main's 51 MB bss) are larger than the default 64 MB of used memory the game takes off the pool for its heap
34mem_used0x6e00000
35# ---- Shader split ----
36# 3,099 shaders: 3,040 GLSLC outputs, one per .vpo / .fpo entry of six BND3 archives in dvdbnd0.bdt (shader_split.py bdt_shaders), and 59 more in main. SDK 4's GLSLC writes control
37# sections whose +0x20 is 12 bytes short of their length, so the split reads those outputs through their section headers (glslc_section)
38shader_groups.bdt#=dvdbnd
39shader_noteDARK SOULS™: REMASTERED shaders