外观
BTL Reference 闭合状态与后续研究队列
状态:Publication-Ready Reference v1 / Semantic Closure Incomplete
1. 当前结论
BTL Reference v1 已经具备对外阅读所需的完整格式覆盖:
- BTL 物理 section:
20/20有正式中文入口; - Header:
0x80全 32 槽覆盖; - Country:
0x12C全字节覆盖; - Building:
0x20全字节覆盖; - Unit:v1
0x30、v2/v30x40全字节覆盖; - Event:
0x2C全字节覆盖,并明确 trigger/action union; - Reinforcement:v1
0x50、v2/v30x68全字节覆盖; - v3+ ExtensionArea:原版 descriptor、9 个顶层字段、17 个可达 message / 78 字段 consumer coverage 已建立;
- 其余短记录均至少有 authoritative raw-first 物理说明。
当前最新 Android 1.30.0 全 corpus:
text
BTL files = 1383
exact physical parses = 1383 / 1383
exact length matches = 1383 / 13831.29.0 / 1359 与 1.28.0 / 1358 继续作为历史差异和已有 native/专项语义证据层。
因此现在可以发布一份明显超过传统社区“偏移表”的中文 BTL Reference。
但这不表示 BTL 的所有玩法语义已经 100% 闭合。
2. 三种“完成”必须分开
2.1 格式文档完整
当前状态:已达到 Reference v1。
含义:
- 文件每个 section 都知道在哪里、长度如何计算;
- 每个主要 Record 都有完整 byte map 或明确 raw-preserve 区;
- Unknown 不会形成未描述的文件空洞;
- v1/v2/v3 边界已显式记录。
2.2 字段语义完整
当前状态:未完成。
仍存在:
- packed bit 未逐位闭合;
- raw scalar 有 consumer 但没有稳定用户侧名称;
- current corpus 无正样本;
- type-dependent union 只闭合部分分支。
2.3 安全 writer 完整
当前状态:远未等同于 Reference 完成。
BTL writer 必须另外证明:
- 引用完整性;
- count/length 联动;
- 结构插入/删除;
- unknown byte preservation;
- protobuf reserialize compatibility;
- invalid input 原版边界。
所以本 Reference 的“可读”不能被解释成“所有字段可写”。
3. P0:最值得继续打掉的语义 Unknown
这些条目会显著提升普通 MOD 作者能理解/编辑的 BTL 能力。
Unit
+0x25BattleMode 6 / Frontier owner-feature gate 完整语义;+0x2B全 bit mask;+0x36/+0x38..+0x3F逐字段/逐 bit consumer;+0x08/+0x0A两个 legacy scalar;+0x2E;+0x2F EliteSkinIndexRaw的Index > 1、缺失定义、非 Elite 非零值与非法值 fallback/异常边界(字段身份与 stock0/1映射已由 1.30 正样本闭合)。
Building
+0x14全 bit mask;+0x17全 bit mask;+0x1Dhigh 5 bits;+0x08/+0x0ABuildingType × consumer matrix;+0x12/+0x13/+0x15/+0x1E/+0x1F。
Event
TriggerType 已完成第四轮 producer/lifecycle 收敛:corpus 0..5 全部列出;Type0/3 direct EventId callback gate 已闭合;Building+0x0E CaptureEventId <-> runtime Tile+0x150 已直接双向闭合;Type1/4 stock reference-role 已闭合;Type5 已闭合 caller Country.RecordId gate + positive center TileId + inclusive hex-radius 圈外→圈内算法,并确认成功执行后的 runtime executed latch 会阻止同一 Event 对象再次由 Type5 evaluator 执行。剩余:
- ActionType
0x00..0x19与 TriggerType0x00..0x05的原版正式 enum/UI 名称;其中0x19/25的 native handler 来自 1.29,1.30 已新增 24 条 stock 正样本; - Type3 57 条已升级为 audited normal Battle graph 下 dormant/unreachable;下一步只追未审计 computed/indirect 特殊入口或 runtime mutation 证据,不再凭空假设 producer;
- TriggerType
0x02的排序/repeat/ActionType-4/missing-linked-event 边界; - Type5 center/Country-gate seed-ineligible 记录的完整 lifecycle,以及 stock 没有
+0x22!=0Type5 正样本带来的边界; ActionType 0x0D/0x18Reinforcement 的完整占用/失败/表现时序,0x0E异常/null/context 边界,0x0FCountry 额外 runtime object cleanup 的完整业务语义;- status definition 逐 ID 效果与 stack/替换边界;
- LinkedEvent cycle/re-entry、presentation defer、pending resume 和异常引用边界;
ActionType 0x19的 1.30 设备动态验收、GeneralId=0、无匹配/重复匹配的 author/runtime 合法性和完整反馈;1.29 nativeActionType 0..25外 parser/runtime validity,以及仍未闭合的+0x10/+0x14/+0x18union 长尾;- 其余仍带明确历史标签的深层 producer/reachability 专项按证据需要迁移到 1.30;物理布局、Extension wire、Unit EliteSkinIndex、Event raw/value corpus、Behavior、Country、Reinforcement 与固定记录总量已前移到 1.30。
4. P1:模式和 Extension 长尾
Header
H50 bit16玩法/表现含义;H74;H78;- victory type 全分支的参数命名和最终结果合成。
Country
+0x24;- 56 个 technology slot 的逐槽 consumer;
- defeat policy
0..7的完整用户侧 enum; +0x120/+0x124/+0x128..+0x12B;- 全 BattleMode 下 controller seed 与最终控制权组合。
Extension
countryEx/buildingEx正样本;armyBuffs/armyStats原版 disk-tail 正样本;两者 runtime 容器/导入结构已闭合,armyBuffs.buffId已闭合为ArmyBuffSettings.Id,并确认 BTL importer 对 lookup-success 记录逐条直接 append、不会套用正常 runtime add/refresh 的同 Id/同 Type 合并;同时已恢复 country-index 分区 tick、有限 round 递减/删除和-1sentinel。Android 1.30 runtime gate audit 已确认 load/post-load/native-save 链不存在额外 ArmyBuff Type/BattleMode acceptance 白名单;armyStats.statType已扫到至少1..17,8/9/0x0C的剩余自然语义已闭合,10则明确收口为 Lightning Division LegendTactics Type32/Id10602 的Effect投影槽且 stock 1.30NoConsumerObserved。仍需官方/内部 authoring UI 是否过滤候选 Id、crafted duplicate 的 Type-specific 最终消费、stat 异常值/save-load acceptance,以及 key10 在未来版本/其他平台是否出现 consumer;tunnelFromArea非零 BTL 正样本 + authoring/save-load acceptance;runtime producer/consumer、全局 TileId 域与 ArmyFeature Type0x59“隧道挖掘”绑定已闭合,仍需FUN_00489A00全部非法目标规则及与TunnelArgs的关系;steelWillValue非零 BTL authoring 正样本 + 异常值合法域 + save/load acceptance;runtime 业务语义和FUN_0048157C一回合 reset owner 已闭合;bynameId最终 setter 闭环;legendArmyId完整 runtime coordination consumer;- secondary condition 最终皇冠/奖励/胜负合成。
5. P2:异常值、生命周期和兼容边界
最后的高难度部分主要包括:
- 无效 Country/Tile/Army/Building/Event/definition 引用;
- duplicate Unit/Building 的失败对象生命周期;
- same-Tile 多 Unit 与 Extension
area最终对象身份; - Reinforcement spawn 占用冲突和 deferred Country 创建;
- Start Group A/B 完整 mode consumer;
- Airstrike/AirSupport 全字段;
- Mine 触发/伤害/销毁;
- Terrain
+0x0C..+0x0Ftail 语义、Primary raw setter 的真实 runtime producer、derived refresh 顺序,以及 invalid id/variant/sentinel 的完整兼容边界;前0x0C字节的 static visual slice 与 primary MapTerrain/TerrainType 主链已收敛到records/terrain.md; - protobuf duplicate singular / malformed input / merge 的完整原版行为;第一 writer gate 对这些输入采用 fail-closed,并以 lossless local rewrite 保留 future unknown fields;同版本原版 fresh protobuf regeneration +
SerializeToArray已闭合; - Extension writer foundation 已完成:bynameId/legendArmyId lossless local wire transform、独立变长 preservation/transaction/Save As;其 writer qualification 仍明确来自 1.28 原版 corpus 的
407/407no-op 与112/112controlled mutation+inverse,不能用当前 1.30 的415个 read-side payload 自动替代;剩余 package-boundary qualification、Scenario Editor product admission 和 original-game behavior acceptance; - 其他
MapSource值; - 当前
1.30.0stock corpus 仍未覆盖的其他版本/模式正值域。
这些问题往往无法靠继续扫描当前 1.30.0 的同一批 1383 个文件解决,需要 native consumer、cross-arch、其他合法原版样本或受控动态 trace。
6. 研究闭环模板
后续每消灭一个 Unknown,固定采用:
text
Reference Unknown/Partial
-> native parser/consumer recovery
-> original corpus distribution
-> cross-architecture when useful
-> controlled runtime trace when necessary
-> update underlying evidence/canonical
-> update machine Reference index
-> update Chinese Markdown
-> update community correction/supersession if needed不得反过来先修改文档名称,再寻找证据证明它。
7. 当前可发布范围
现在可以公开/交付给普通读者的内容包括:
- BTL 总体文件结构;
- v1/v2/v3 差异;
- Header/Country/Building/Unit/Event/Reinforcement 主记录;
- Province/Owner/Behavior/Weather/Strategy;
- v3+
BattleExArgs; - 社区旧文档勘误;
- 明确的 Unknown/NoGo 列表。
公开时必须同时保留证据状态标签。不能为了让文档看起来“完整”而隐藏 Unknown。
8. 不属于本 Reference v1 的完成声明
当前不能声称:
text
BTL gameplay semantics 100% closed
all BTL fields safe to edit
arbitrary BTL writer compatible
all Event actions restored
all Extension gameplay effects restored
all invalid-input behavior restored当前准确表述是:
BTL 物理格式和中文 Reference v1 已形成完整覆盖;主要记录语义已经高度恢复,剩余工作集中在 packed/模式专属字段、Event union、Extension 无正样本字段、异常输入和动态生命周期。