外观
Terrain Record 地形记录
状态:Authoritative Raw Reference v1
1. 物理结构
仅当 Header.MapSource == 0 时,BTL 在 Country section 后内嵌:
text
MapWidth * MapHeight条 Terrain record,每条固定:
text
0x10 = 16 bytes当前 clean-room raw view:
text
+0x00 uint32 Raw00
+0x04 uint32 Raw04
+0x08 uint32 Raw08
+0x0C uint32 Raw0C这是有意的 raw-first 表示。当前项目已经确认 16 字节物理布局和 Map 构造链,但尚未把全部 bit/word 玩法语义提升为正式 BTL authority。
2. Embedded 与 external map
text
MapSource == 0
-> Terrain 来自 BTL 内嵌 0x10 records
MapSource == 1
-> BTL 不携带这些 records
-> Terrain 来自外部 world.bin 对应 global Tile因此 MapSource=1 文件不能因为 Terrain section 为空而视为缺失数据。
当前 1.28.0 corpus:
text
MapSource 0 = 1049 files
MapSource 1 = 309 files3. 不能把测试辅助名称升级成格式语义
部分 clean-room 测试为了构造样本,会直接改 Terrain 第一个 byte 并称为 terrainId。这只能证明测试/下游某条路径消费该 byte,不足以给整个 +0x00 uint32 或全部 0x10 布局命名。
当前 Reference 因此继续使用:
text
Raw00
Raw04
Raw08
Raw0C直到 native bitfield/consumer 专项闭合。
4. Writer 边界
text
physical layout = Confirmed
complete bit semantics = Unknown/Partial
semantic writer = NoGo
raw preservation = Required不得根据社区地形标签、自制地图格式或 world.bin 相似字段直接反推 BTL 16 字节语义。
主要证据:
text
reconstruction/src/WC4.Runtime.BattleData/BtlMapRecords.cs
reconstruction/docs/route4_round2_raw_views.md
reports/btl_v1280_so_recovery.md