randovania/mercury-engine-data-structures
GitHub: randovania/mercury-engine-data-structures
用于解析和编辑 Mercury Engine 游戏文件格式的 Python 库,支持「银河战士:萨姆斯归来」和「银河战士:生存恐惧」的各类资源文件读写。
Stars: 3 | Forks: 10
# Mercury Engine 数据结构
构建 Mercury Engine 的类型定义
## 格式支持
| Format | Samus Returns (Read) | Samus Returns (Write) | Dread (Read) | Dread (Write) | Purpose |
|-----------|----------------------|-----------------------|--------------|---------------|-------------|
| BAPD | Missing | Missing | ✓ | ✓ | 音频预设 (位置音频数据) |
| BCCAM | ✗ | ✗ | ✗ | ✗ | 相机动画 (专用于过场动画镜头) |
| BCLGT | ✗ | ✗ | Missing | Missing | 灯光 (?) |
| BCMDL | ✗ | ✗ | ✓ | ✗ | 3D 模型 |
| BCPTL | ✗ | ✗ | ✗ | ✗ | 粒子特效 |
| BCSKLA | ✓ | ✓ | ✓ | ✓ | 骨骼动画 |
| BCTEX | ✗ | ✗ | ✓ | ✗ | 纹理文件 |
| BCURV | Missing | Missing | ✗ | ✗ | CURV (?) |
| BCUT | ✗ | ✗ | Missing | Missing | 与过场动画文件相关 |
| BCWAV | ✗ | ✗ | Missing | Missing | Cafe/Citra 波形 (通用 AAL 音频格式) |
| BFGRP | Missing | Missing | ✗ | ✗ | 声音波形组 (通用 AAL 音频格式) |
| BFONT | ✗ | ✗ | ✗ | ✗ | 字体文件 |
| BFSAR | Missing | Missing | ✗ | ✗ | FSAR (?) |
| BFSTM | Missing | Missing | ✗ | ✗ | 通用 Switch 音频格式 |
| BGSNDS | Missing | Missing | ✓ | ✓ | 背景声音 (?) |
| BLDEF | Missing | Missing | ✓ | ✓ | Actor 灯光定义 |
| BLSND | ✓ | ✓ | ✓ | ✓ | 声音 (?) |
| BLUT | Missing | Missing | ✓ | ✓ | 查找表 (用于 ADAM 动画) |
| BMBLS | Missing | Missing | ✓ | ✓ | 混合空间 |
| BMDEFS | ✓ | ✓ | ✓ | ✓ | 音乐轨道定义与属性 |
| BMMAP | Missing | Missing | ✓ | ✓ | 小地图 |
| BMMDEF | Missing | Missing | ✓ | ✓ | 小地图定义 (?) |
| BMSAD | ✓ | ✓ | ✓ | ✓ | Actor 定义 |
| BMSAS | Missing | Missing | ✓ | ✓ | 动作集 |
| BMSAT | ✗ | ✗ | ✓ | ✓ | 动画树 |
| BMSBK | ✓ | ✓ | Missing | Missing | 区块,按场景划分 |
| BMSCC | ✓ | ✓ | ✓ | ✓ | 碰撞相机 |
| BMSCD | ✓ | ✓ | ✓ | ✓ | 碰撞数据 / 几何体 |
| BMSCP | Missing | Missing | ✓ | ✓ | GUI 组合 |
| BMSCU | ✗ | ✗ | ✓ | ✓ | 过场动画文件 |
| BMSEM | ✓ | ✓ | Missing | Missing | 环境音乐 |
| BMSES | ✓ | ✓ | Missing | Missing | 环境音效 |
| BMSEV | ✗ | ✗ | Missing | Missing | 环境视觉效果 (fx) |
| BMSLD | ✓ | ✓ | Missing | Missing | Samus Returns 场景实体数据 |
| BMSLGROUP | Missing | Missing | ✓ | ✓ | SmartLink 组 |
| BMSLINK | Missing | Missing | ✓ | ✓ | SmartLink (Actor 专用导航网格路径) |
| BMSMD | ✓ | ✓ | Missing | Missing | 菜单数据 (?) |
| BMSMSD | ✓ | ✓ | Missing | Missing | 地图屏幕数据 (?) |
| BMSNAV | ✓ | ✓ | ✓ | ✓ | 导航网格 |
| BMSND | ✗ | ✗ | Missing | Missing | 声音 (?) |
| BMSSA | ✓ | ✓ | Missing | Missing | 子区域设置 (MSR) |
| BMSSD | ✓ | ✓ | ✓ | ✓ | 场景数据 (场景区块、对象、msr 灯光) |
| BMSSH | Missing | Missing | ✓ | ✓ | GUI 形状 |
| BMSSK | Missing | Missing | ✓ | ✓ | GUI 皮肤 |
| BMSSS | Missing | Missing | ✓ | ✓ | GUI 精灵表 |
| BMSSTOC | Missing | Missing | ✓ | ✓ | 声音目录 (将 BFSAR 音效链接到 BFGRP 文件) |
| BMTRE | ✗ | ✗ | ✓ | ✓ | 行为树;实体 AI)|
| BMTUN | ✓ | ✓ | Missing | Missing | 可调参数;暴露的变量 |
| BNVIB | Missing | Missing | ✓ | ✓ | 振动数据 |
| BPSI | ✓ | ✓ | ✓ | ✓ | PackSet;开发残留 |
| BPTDAT | Missing | Missing | ✓ | ✓ | 流程数据 |
| BPTDEF | Missing | Missing | ✓ | ✓ | 流程定义 |
| BREM | Missing | Missing | ✓ | ✓ | 环境音乐预设 |
| BRES | Missing | Missing | ✓ | ✓ | 环境音效预设 |
| BREV | Missing | Missing | ✓ | ✓ | 环境视觉预设 |
| BRFLD | Missing | Missing | ✓ | ✓ | Dread 场景实体数据 |
| BRSA | Missing | Missing | ✓ | ✓ | 子区域设置 (Dread) |
| BRSPD | Missing | Missing | ✓ | ✓ | 射击音频预设 |
| BSHDAT | ✗ | ✗ | ✗ | ✗ | 着色器数据 |
| BSMAT | Missing | Missing | ✓ | ✓ | 网格材质 |
| BTUNDA | Missing | Missing | ✓ | ✓ | 可调参数数据 |
| BUCT | ✓ | ✓ | ✓ | ✓ | 字体字形数据 (?) |
| INI | Missing | Missing | ✓ | ✓ | 标准 INI |
| LC | ✓ | ✓ | ✓ | ✓ | Lua 字节码 |
| PKG | ✓ | ✓ | ✓ | ✓ | 打包文件 |
| TOC | ✓ | ✓ | ✓ | ✓ | 目录 |
| TXT | ✓ | ✓ | ✓ | ✓ | UTF-16 文本文件 (?) |
| WEBM | Missing | Missing | ✗ | ✗ | 标准 WEBM |
## 示例用法
```
# TODO
```
## 文本颜色
《银河战士:生存恐惧》在文本中使用以下注释来更改颜色:
| Code | Color | |
|------|-------------|--------------|
| {c0} | 白色 | (默认) |
| {c1} | 黄色 | |
| {c2} | 红色 | |
| {c3} | 粉色 | |
| {c4} | 绿色 | |
| {c5} | 蓝色 | |
| {c6} | UI 激活 | (浅蓝) |
| {c7} | UI 未激活 | (暗蓝) |
## 测试
要运行完整的测试套件,必须设置以下环境变量。
| Variable | Purpose |
|--------------------|------------------------------------------------|
| SAMUS_RETURNS_PATH | 已解包的 Samus Returns RomFS 路径 |
| DREAD_1_0_0_PATH | 已解包的《银河战士:生存恐惧》v1.0.0 RomFS 路径 |
| DREAD_2_1_0_PATH | 已解包的《银河战士:生存恐惧》v2.1.0 RomFS 路径 |
如果未设置其中任何变量,将跳过相关测试。
### 运行
```
export SAMUS_RETURNS_PATH=D:/RomFS/Samus Returns
python -m pytest
```
标签:3D模型, BAPD, BCMDL, BCSKLA, BCTEX, BFGRP, BFSTM, DNS解析, Mercury Engine, Metroid, 云资产清单, 任天堂Switch, 动作游戏, 安全规则引擎, 开源项目, 数据结构, 文件解析, 格式规范, 模组工具, 游戏开发, 游戏引擎, 类型定义, 资源提取, 逆向工具, 逆向工程, 银河战士, 音频处理