English only: no Chinese left in code, scripts, logs, tables or docs

- Log messages, script output, test labels, Makefile errors and comments are English. Red log lines start with "[RED] " (was 【红】).
- Shader map stage column: vertex / pixel / compute / geometry / hull / domain (generators, dmsh_build / dmsh_facts and nvn_mtl.m stage_of follow).
- The NSP script's regexes match the new shader_split.py / dmsh_build.py summary lines; patch_nso cut scopes are all / host-only.
- Host UI text table (dm_i18n_tab.h) is English only; dm_lang_zh() removed.
- Text that matches game data (t_swkbd.c, t_textbox.c) is written as \x escapes.
- Shader chain: the chain files lose their bilingual comments, so every profile has a new chain version. dmsh_xlate.dll rebuilt from the translated Program.cs (SPIR-V byte-identical on 4,500 shaders of Wonder, TOTK and Age of Calamity), lock and dmsh_chain.h headers regenerated. c1_full.tsv restamped for Dread, 13 Sentinels and Wonder; the other profiles follow when their rebuild finishes.
- AGENTS.md and docs/agents: the language rule now covers logs; quoted log lines updated.
This commit is contained in:
seedds committed 2026-10-19 15:34:57 +08:00
1 parent c162b95a93
commit c5955d42a6
256 files changed
+170176 -170329

No files matched your search

+1 -1
View File
@@ -1,4 +1,4 @@
# chain b-4c64982e23bf 2026-10-18T23:48:25+08:00
# chain b-d740cde14039 2026-10-19T15:33:24+08:00
35cbc686dd8461b8
4872bec9a5567f8b
54a618792b2d5f0f
1 # chain b-4c64982e23bf 2026-10-18T23:48:25+08:00 # chain b-d740cde14039 2026-10-19T15:33:24+08:00
2 35cbc686dd8461b8
3 4872bec9a5567f8b
4 54a618792b2d5f0f
+2 -2
View File
@@ -1,2 +1,2 @@
// 生成文件(dm/gfx/tools/dmsh_chain.py --header,游戏 010015100B514000):本源码树期望的 B 着色器库翻译链版本(缺省选项);宿主只加载 <库目录>/b-<V>/
#define DMSH_CHAIN "4c64982e23bf"
// Generated file (dm/gfx/tools/dmsh_chain.py --header, game 010015100B514000): the B shader library translation chain version this source tree expects (default options); the host loads only <library dir>/b-<V>/
#define DMSH_CHAIN "d740cde14039"
+17 -22
View File
@@ -1,58 +1,53 @@
# 超级马力欧兄弟 惊奇(Switch,基础版 v0 与更新 1.2.1)的游戏档案。本目录另有着色器表(shader_split.py 生成)、c1_full.tsv、pso_manifest.tsv 与翻译链版本头 dmsh_chain.h
# Game profile of Super Mario Bros. Wonder (Switch, base game v0 and update 1.2.1). This folder also holds the shader tables (generated by shader_split.py), c1_full.tsv, pso_manifest.tsv and the chain version header dmsh_chain.h
# 格式:键 <TAB> 值;一个键多个值用空格分隔;build 每版一行;注释只能独占一行。改内存 / NVN 常数后重编宿主;改着色器相关的键后按 AGENTS.md 走翻译链流程
# Format: key <TAB> value; several values of one key are separated by spaces; one build row per version; comments must be on their own line. Rebuild the host after changing memory / NVN constants; after changing shader-related keys follow the chain procedure in AGENTS.md
# ---- 身份 | Identity ----
# 游戏名不写在这里:NSP 脚本从 NSP 的控制数据(NACP)取 | the game name is not kept here: the NSP script takes it from the NSP's control data (NACP)
# ---- Identity ----
# the game name is not kept here: the NSP script takes it from the NSP's control data (NACP)
title_id 010015100B514000
# svcGetInfo(ProgramId) 报给游戏的值(运行时 DM_PROGRAM_ID 可改) | the value svcGetInfo(ProgramId) reports to the game (DM_PROGRAM_ID overrides it at run time)
# the value svcGetInfo(ProgramId) reports to the game (DM_PROGRAM_ID overrides it at run time)
program_id 010015100B514000
# ---- App ----
# 游戏名:只给档案列表与 Mac 窗口标题当标签;iOS App 名取基础版 NSP 里的游戏名,包名按基础版标题号(build_ipa.sh / NSP 脚本)
# 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 Super Mario Bros. Wonder
ipa SMBWMobile.ipa
app_category public.app-category.action-games
# ---- 版本 | Versions ----
# build <版本> <显示版本> <模块>=<构建号>…:NSP 脚本只认这些构建(写死的地址在别的构建上不成立);宿主按 main 的构建号报显示版本
# ---- Versions ----
# build <version> <display version> <module>=<build ID>...: the NSP script accepts only these builds (fixed addresses do not hold on other builds); the host reports the display version by main's build ID
build v0 1.0.0 main=cd6e42aee7934f4d8393cd43893ae25e sdk=3053b22935e32ddf15ef81997603e5c2
build v327680 1.2.1 main=ff773e90972d544eb79406eaa65396d5 sdk=e4bd58cac28cf13a08fb417aa013cdcb
# 缺省打进 IPA 的版本 | version packed into the IPA by default
# version packed into the IPA by default
package v327680
# 着色器表是这几个版本的并集(基础版在前):出包时这些版本都要有 | the shader tables are the union of these versions (base game first): all of them are needed to build
# the shader tables are the union of these versions (base game first): all of them are needed to build
shader_versions v0 v327680
# ---- 文件 | Files ----
# 改写并装载的代码模块(装载顺序;rtld 由宿主代替) | code modules rewritten and loaded (load order; rtld is replaced by the host)
# ---- Files ----
# code modules rewritten and loaded (load order; rtld is replaced by the host)
modules main sdk
# RomFS 里必须有的路径(认游戏文件放对了没有) | a path that must exist in the RomFS (tells whether the game files are in the right place)
# a path that must exist in the RomFS (tells whether the game files are in the right place)
romfs_marker System/Resource
# zip 时不再压缩的扩展名(本身已压缩) | extensions zip stores without compressing (already compressed)
# extensions zip stores without compressing (already compressed)
zip_store .zs:.bwav:.metallib
# ---- 内存(hle_svc.c;分区依据见那里的注释) | Memory (hle_svc.c; the reasons for the partition are in its comments) ----
# ---- Memory (hle_svc.c; the reasons for the partition are in its comments) ----
mem_reserve 0x140000000
mem_alias 0xB8000000
mem_stack 0x10000000
app_pool 0xCD500000
# ---- NVN 驱动常量段(dmsh_build.py 出包、nvn_mtl.m 运行时现填;按全库着色器实测) | NVN driver constant segments (dmsh_build.py at packaging, nvn_mtl.m filled at run time; measured over all shaders) ----
# c2:贴图句柄表 0x20 + 8 r(32 槽)、分离采样器表 0x568、图像句柄表 0x120 + 8 r(8 槽);translator 内置同值,不同就要先让翻译器可配
# ---- NVN driver constant segments (dmsh_build.py at packaging, nvn_mtl.m filled at run time; measured over all shaders) ----
# c2: texture handle table 0x20 + 8 r (32 slots), separate sampler table 0x568, image handle table 0x120 + 8 r (8 slots); the translator has the same values built in, so a game that differs needs a configurable translator first
nvn_tex_base 0x20
nvn_tex_slots 32
nvn_samp_base 0x568
nvn_img_base 0x120
nvn_img_slots 8
# c0:存储缓冲表基址(每阶段 16 槽 × 0x10) | c0: storage buffer table bases (16 slots × 0x10 per stage)
# c0: storage buffer table bases (16 slots × 0x10 per stage)
nvn_ssbo_bases vs=0x110 ps=0x510 cs=0x310
# ---- 着色器拆分(shader_split.py) | Shader split (shader_split.py) ----
# 来源组:路径里含前者就归后者组(按顺序取第一个;main 内嵌的固定归 main,都不中归 other) | source groups: a path containing the first part goes to the second group (first match wins; shaders embedded in main always go to main, no match goes to other)
# ---- Shader split (shader_split.py) ----
# source groups: a path containing the first part goes to the second group (first match wins; shaders embedded in main always go to main, no match goes to other)
shader_groups /Shader/SecredUber=SecredUber .sharcb=agl /Effect/=effect /Layout/=layout /Shader/=SecredUber
# 映射表表头里的着色器来源说明 | description of the shader source in the map table header
shader_note 马力欧着色器
# description of the shader source in the map table header
shader_note Super Mario Bros. Wonder shaders
1 # 超级马力欧兄弟 惊奇(Switch,基础版 v0 与更新 1.2.1)的游戏档案。本目录另有着色器表(shader_split.py 生成)、c1_full.tsv、pso_manifest.tsv 与翻译链版本头 dmsh_chain.h # Game profile of Super Mario Bros. Wonder (Switch, base game v0 and update 1.2.1). This folder also holds the shader tables (generated by shader_split.py), c1_full.tsv, pso_manifest.tsv and the chain version header dmsh_chain.h
# 超级马力欧兄弟 惊奇(Switch,基础版 v0 与更新 1.2.1)的游戏档案。本目录另有着色器表(shader_split.py 生成)、c1_full.tsv、pso_manifest.tsv 与翻译链版本头 dmsh_chain.h
1 # Game profile of Super Mario Bros. Wonder (Switch, base game v0 and update 1.2.1). This folder also holds the shader tables (generated by shader_split.py), c1_full.tsv, pso_manifest.tsv and the chain version header dmsh_chain.h # Game profile of Super Mario Bros. Wonder (Switch, base game v0 and update 1.2.1). This folder also holds the shader tables (generated by shader_split.py), c1_full.tsv, pso_manifest.tsv and the chain version header dmsh_chain.h
# 格式:键 <TAB> 值;一个键多个值用空格分隔;build 每版一行;注释只能独占一行。改内存 / NVN 常数后重编宿主;改着色器相关的键后按 AGENTS.md 走翻译链流程
2 # Format: key <TAB> value; several values of one key are separated by spaces; one build row per version; comments must be on their own line. Rebuild the host after changing memory / NVN constants; after changing shader-related keys follow the chain procedure in AGENTS.md # Format: key <TAB> value; several values of one key are separated by spaces; one build row per version; comments must be on their own line. Rebuild the host after changing memory / NVN constants; after changing shader-related keys follow the chain procedure in AGENTS.md
3 # ---- 身份 | Identity ---- # ---- Identity ----
4 # 游戏名不写在这里:NSP 脚本从 NSP 的控制数据(NACP)取 | the game name is not kept here: the NSP script takes it from the NSP's control data (NACP) # the game name is not kept here: the NSP script takes it from the NSP's control data (NACP)
5 title_id title_id
6 # svcGetInfo(ProgramId) 报给游戏的值(运行时 DM_PROGRAM_ID 可改) | the value svcGetInfo(ProgramId) reports to the game (DM_PROGRAM_ID overrides it at run time) # the value svcGetInfo(ProgramId) reports to the game (DM_PROGRAM_ID overrides it at run time)
7 program_id program_id
8 # ---- App ---- # ---- App ----
9 # 游戏名:只给档案列表与 Mac 窗口标题当标签;iOS App 名取基础版 NSP 里的游戏名,包名按基础版标题号(build_ipa.sh / NSP 脚本) # 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)
10 # 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
name
11 ipa ipa
12 app_category app_category
13 # ---- 版本 | Versions ---- # ---- Versions ----
14 # build <版本> <显示版本> <模块>=<构建号>…:NSP 脚本只认这些构建(写死的地址在别的构建上不成立);宿主按 main 的构建号报显示版本 # build <version> <display version> <module>=<build ID>...: the NSP script accepts only these builds (fixed addresses do not hold on other builds); the host reports the display version by main's build ID
15 # build <version> <display version> <module>=<build ID>...: the NSP script accepts only these builds (fixed addresses do not hold on other builds); the host reports the display version by main's build ID build
16 build build
build
17 # 缺省打进 IPA 的版本 | version packed into the IPA by default # version packed into the IPA by default
18 package package
19 # 着色器表是这几个版本的并集(基础版在前):出包时这些版本都要有 | the shader tables are the union of these versions (base game first): all of them are needed to build # the shader tables are the union of these versions (base game first): all of them are needed to build
20 shader_versions shader_versions
21 # ---- 文件 | Files ---- # ---- Files ----
22 # 改写并装载的代码模块(装载顺序;rtld 由宿主代替) | code modules rewritten and loaded (load order; rtld is replaced by the host) # code modules rewritten and loaded (load order; rtld is replaced by the host)
23 modules modules
24 # RomFS 里必须有的路径(认游戏文件放对了没有) | a path that must exist in the RomFS (tells whether the game files are in the right place) # a path that must exist in the RomFS (tells whether the game files are in the right place)
25 romfs_marker romfs_marker
26 # zip 时不再压缩的扩展名(本身已压缩) | extensions zip stores without compressing (already compressed) # extensions zip stores without compressing (already compressed)
27 zip_store zip_store
28 # ---- 内存(hle_svc.c;分区依据见那里的注释) | Memory (hle_svc.c; the reasons for the partition are in its comments) ---- # ---- Memory (hle_svc.c; the reasons for the partition are in its comments) ----
29 mem_reserve mem_reserve
30 mem_alias mem_alias
31 mem_stack mem_stack
32 app_pool app_pool
33 # ---- NVN 驱动常量段(dmsh_build.py 出包、nvn_mtl.m 运行时现填;按全库着色器实测) | NVN driver constant segments (dmsh_build.py at packaging, nvn_mtl.m filled at run time; measured over all shaders) ---- # ---- NVN driver constant segments (dmsh_build.py at packaging, nvn_mtl.m filled at run time; measured over all shaders) ----
34 # c2:贴图句柄表 0x20 + 8 r(32 槽)、分离采样器表 0x568、图像句柄表 0x120 + 8 r(8 槽);translator 内置同值,不同就要先让翻译器可配 # c2: texture handle table 0x20 + 8 r (32 slots), separate sampler table 0x568, image handle table 0x120 + 8 r (8 slots); the translator has the same values built in, so a game that differs needs a configurable translator first
35 # c2: texture handle table 0x20 + 8 r (32 slots), separate sampler table 0x568, image handle table 0x120 + 8 r (8 slots); the translator has the same values built in, so a game that differs needs a configurable translator first nvn_tex_base
36 nvn_tex_base nvn_tex_slots
37 nvn_tex_slots nvn_samp_base
38 nvn_samp_base nvn_img_base
39 nvn_img_base nvn_img_slots
nvn_img_slots
40 # c0:存储缓冲表基址(每阶段 16 槽 × 0x10) | c0: storage buffer table bases (16 slots × 0x10 per stage) # c0: storage buffer table bases (16 slots × 0x10 per stage)
41 nvn_ssbo_bases nvn_ssbo_bases
42 # ---- 着色器拆分(shader_split.py) | Shader split (shader_split.py) ---- # ---- Shader split (shader_split.py) ----
43 # 来源组:路径里含前者就归后者组(按顺序取第一个;main 内嵌的固定归 main,都不中归 other) | source groups: a path containing the first part goes to the second group (first match wins; shaders embedded in main always go to main, no match goes to other) # source groups: a path containing the first part goes to the second group (first match wins; shaders embedded in main always go to main, no match goes to other)
44 shader_groups shader_groups
45 # 映射表表头里的着色器来源说明 | description of the shader source in the map table header # description of the shader source in the map table header
46 shader_note shader_note
47
48
49
50
51
52
53
+2 -2
View File
@@ -1,2 +1,2 @@
# 预热种子清单(随包,与 shader_map.tsv 同目录)。行:S<TAB>着色器键<TAB>阶段 / R<TAB>渲染管线键(pso_skey 十六进制)/ C<TAB>计算着色器键。
# 本作尚未录制(DM_PSO_RECORD):空表 = 不预热。行序 = 首次使用顺序,不要排序。
# Prewarm seed list (shipped in the app, next to shader_map.tsv). Rows: S<TAB>shader key<TAB>stage / R<TAB>render pipeline key (pso_skey hex) / C<TAB>compute shader key.
# Not recorded yet for this game (DM_PSO_RECORD): an empty list = no prewarm. Row order = first-use order; do not sort.
1 # 预热种子清单(随包,与 shader_map.tsv 同目录)。行:S<TAB>着色器键<TAB>阶段 / R<TAB>渲染管线键(pso_skey 十六进制)/ C<TAB>计算着色器键。 # Prewarm seed list (shipped in the app, next to shader_map.tsv). Rows: S<TAB>shader key<TAB>stage / R<TAB>render pipeline key (pso_skey hex) / C<TAB>compute shader key.
2 # 本作尚未录制(DM_PSO_RECORD):空表 = 不预热。行序 = 首次使用顺序,不要排序。 # Not recorded yet for this game (DM_PSO_RECORD): an empty list = no prewarm. Row order = first-use order; do not sort.
+1 -1
View File
@@ -1,4 +1,4 @@
# 翻译查询的作答表(dm/gfx/tools/shader_split.py 生成,勿手改):键 <TAB> 事实 JSON。本作没有 PC 版可配对:只有计算着色器的线程组 / 共享内存(取自控制段),其余查询按翻译器缺省
# 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
02338175eea7af9e {"local":[8,8,1],"shared":0}
075c4abad92db59b {"local":[32,1,1],"shared":896}
0b14078b7931d41c {"local":[32,1,1],"shared":640}
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
@@ -1,2 +1,2 @@
# kind: evidence 控制段键冲突裁定:本作键已含代码区(dm/gfx/tools/shader_split.py),不会有同键异码,表空
# kind: evidence control-section key conflict rulings: this game's keys already include the code area (dm/gfx/tools/shader_split.py), so one key never has two different codes; empty
dm_ctl_sha16 chosen_pc class candidates records
1 # kind: evidence 控制段键冲突裁定:本作键已含代码区(dm/gfx/tools/shader_split.py),不会有同键异码,表空 # kind: evidence control-section key conflict rulings: this game's keys already include the code area (dm/gfx/tools/shader_split.py), so one key never has two different codes; empty
2 dm_ctl_sha16 dm_ctl_sha16
+1 -1
View File
@@ -1,4 +1,4 @@
# kind: evidence BNSH 变体里的顶点 / 像素着色器配对(dm/gfx/tools/shader_split.py 生成,勿手改):顶点键 <TAB> 像素键 | vertex / pixel shader pairs within BNSH variations (generated, do not edit): vertex key <TAB> pixel key
# kind: evidence vertex / pixel shader pairs within BNSH variations (generated by dm/gfx/tools/shader_split.py, do not edit): vertex key <TAB> pixel key
00261563be068efa 1dd0b5353b8d03d2
00261563be068efa 286980f75cc65755
0048a1f91885dc11 91454f8169b3676d
1 # kind: evidence BNSH 变体里的顶点 / 像素着色器配对(dm/gfx/tools/shader_split.py 生成,勿手改):顶点键 <TAB> 像素键 | vertex / pixel shader pairs within BNSH variations (generated, do not edit): vertex key <TAB> pixel key # kind: evidence vertex / pixel shader pairs within BNSH variations (generated by dm/gfx/tools/shader_split.py, do not edit): vertex key <TAB> pixel key
2 00261563be068efa
3 00261563be068efa
4 0048a1f91885dc11