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, 动作游戏, 安全规则引擎, 开源项目, 数据结构, 文件解析, 格式规范, 模组工具, 游戏开发, 游戏引擎, 类型定义, 资源提取, 逆向工具, 逆向工程, 银河战士, 音频处理