Torphedo/Esper-RE
GitHub: Torphedo/Esper-RE
用于逆向工程《Phantom Dust》游戏文件格式的工具集,包含图形化编辑器、C语言解析库及多种辅助工具。
Stars: 6 | Forks: 1
# Esper-RE
本仓库包含用于修改和研究 Phantom Dust 文件的工具与脚本。
这些工具主要关注 [ALR](https://phantomdust.miraheze.org/wiki/Modding/File_Formats/ALR) 文件,但也包含一些用于 [Deck/Arsenal](https://phantomdust.miraheze.org/wiki/Modding/File_Formats/Decks) 文件和 [SSB](https://phantomdust.miraheze.org/wiki/File_Formats/SSB) 脚本文件的简单工具。你可以在 [Phantom Dust Modding Wiki](https://phantomdust.miraheze.org/wiki/Modding) 上找到更多关于该游戏和文件格式的信息。
## Polaris [`src/polaris`]
这是本仓库的主程序,一个用于 ALR 文件的图形化编辑器。它能够理解(程度各异)ALR 中的纹理、网格、动画和骨骼数据。Polaris 旨在取代用于 ALR 修改的普通十六进制编辑器,同时不牺牲灵活性。几乎每个窗口中都内置了微型十六进制编辑器,因此你可以快速跳转到所需的数据(并仅查看该数据)。
`.alr` 文件的支持状态:
| 功能 | 查看 | 导出 | 导入 |
| ----------------- | -------------------------- |------------------------ |------------------------------------------- |
| 纹理 | ✅ | ✅(`.dds`) | ✅ (`.dds`, 相同分辨率和格式) |
| 网格 | ✅ | ✅(`.obj`) | ❌ |
| 动画 | ✅ (图表) | ❌ (开发中的 `.anim` 导出) | ❌ |
| 骨骼 | ❌ | ✅ (`.dae`) | ❌ |
Polaris 还支持其他几种 Phantom Dust 文件:
- 关卡布局 (`.dat`) 文件可以与其对应的 ALR 一起加载,以生成、渲染和编辑动态对象(如椅子和栏杆)(仅限地面关卡,不包括地下关卡)。
- 音乐 (`.stx`) 文件可以从 `.wav`、`.mp3`、`.mod`、`.xm` 或 `.s3m` 文件生成。它们也可以导出为 `.wav` 并直接在 Polaris 中播放
- 音效 (`.bin`) 文件可以导出为 `.wav`
- 任务 (`questdata.qdt`) 文件可以编辑(尽管尚未完全理解)
- `.mk` 和 `.ak` 文件是存储在 `.alr` 和相关文件中的 NPC 模型和动画包。Polaris 可以提取和创建这些包。
这是在 Polaris 中渲染的地下酒吧地图:
这是 Polaris 正在演示 Meister 的低多边形模型,同时编辑任务文件并播放它从 FastTracker II 歌曲 `domatron.xm` 生成的自定义 STX 文件:
### 命令行选项
Polaris 将文件名作为其第一个参数(这也意味着你可以将文件拖放到可执行文件上)。你还可以指定另一个标志以在*无头*模式(无 GUI)下运行特定操作:
`polaris [alr filename] [flag]`
- `--dump-textures`
- 将所有纹理以 DDS 格式转储到 `textures` 文件夹中。
- `--dump-materials`
- 从 ALR 文件以 MTL 格式导出材质(用于 OBJ 文件)
- 导出的 OBJ 文件包含材质分配数据,但你必须在开头手动写入 `mtllib [your .mtl file]`。
- `--extract-audio`
- 将多个 .bin 文件中的所有音效以 WAV 格式导出到文件夹
- `--validate`
- 对整个文件运行断言和一致性检查。不保证文件能在游戏中运行,只是根据我们目前对 ALR 的了解,没有什么看起来是错误的。
## Phantom Dust C Library [`src/formats`]
`src/formats` 中的所有代码是一个独立的 C11 库。你可以包含 `pd_common.h` 以一次性获取所有这些头文件,并仅编译 `pd_common.c` 以一次性获取所有支持的 C 文件。该库包含以下格式的结构:
- `.alr` (`alr.h`, `alr_animations.h`)
- Deck 文件 (无文件扩展名, `deck.h`)
- `.cso` (`dxbc_cso.h`)
- `.eft`, `e.i` (`eft.h`)
- `.ak`, `.mk` (`eventpack.h`)
- `.qdt` (`questdata.h`)
- `.ssb` (`ssb.h`)
- `.dat` (`st00.h`)
- `.bin` 音频 (`sth2.h`)
- `.stx` 音频 (`stx.h`)
- `.wav` 音频 (`wav.h`)
它还提供了一些实用功能:
- 用于处理 ALR 文件中纹理分辨率信息的包装器
- 将 `.bin` 或 `.stx` 文件中的所有音频导出为 WAV
- 预计算 STX 大小和块数量,并正确填充 STX 块结构
- 按需从 `.stx` 文件读取音频样本
- 从任意回调驱动的音频源生成新的 STX 文件
- 将任何音频转储为 WAV
- 以任何格式交错或去交错音频
## Deck Reader [`src/deck_reader`]
这是一个非常简单的用于 deck/arsenal 文件的 TUI 编辑器。采用简单的批处理脚本菜单风格,你可以通过数字选择菜单选项并输入新值。菜单会原地更新而不是滚动。
## SSB Tool [`src/ssb`]
这是一个基础工具,仅打印 SSB 的函数导出表。如果需要更好的 SSB 工具,请查看这些仓库:
- [hantu](https://github.com/VSaige3/hantu)
- [pd-ssb-decomp](https://github.com/VSaige3/pd-ssb-decomp)
有关文件格式的更多信息,请查看 [wiki 页面](https://phantomdust.miraheze.org/wiki/File_Formats/SSB)。
### 命令行选项
Polaris 将文件名作为其第一个参数(这也意味着你可以将文件拖放到可执行文件上)。你还可以指定另一个标志以在*无头*模式(无 GUI)下运行特定操作:
`polaris [alr filename] [flag]`
- `--dump-textures`
- 将所有纹理以 DDS 格式转储到 `textures` 文件夹中。
- `--dump-materials`
- 从 ALR 文件以 MTL 格式导出材质(用于 OBJ 文件)
- 导出的 OBJ 文件包含材质分配数据,但你必须在开头手动写入 `mtllib [your .mtl file]`。
- `--extract-audio`
- 将多个 .bin 文件中的所有音效以 WAV 格式导出到文件夹
- `--validate`
- 对整个文件运行断言和一致性检查。不保证文件能在游戏中运行,只是根据我们目前对 ALR 的了解,没有什么看起来是错误的。
## Phantom Dust C Library [`src/formats`]
`src/formats` 中的所有代码是一个独立的 C11 库。你可以包含 `pd_common.h` 以一次性获取所有这些头文件,并仅编译 `pd_common.c` 以一次性获取所有支持的 C 文件。该库包含以下格式的结构:
- `.alr` (`alr.h`, `alr_animations.h`)
- Deck 文件 (无文件扩展名, `deck.h`)
- `.cso` (`dxbc_cso.h`)
- `.eft`, `e.i` (`eft.h`)
- `.ak`, `.mk` (`eventpack.h`)
- `.qdt` (`questdata.h`)
- `.ssb` (`ssb.h`)
- `.dat` (`st00.h`)
- `.bin` 音频 (`sth2.h`)
- `.stx` 音频 (`stx.h`)
- `.wav` 音频 (`wav.h`)
它还提供了一些实用功能:
- 用于处理 ALR 文件中纹理分辨率信息的包装器
- 将 `.bin` 或 `.stx` 文件中的所有音频导出为 WAV
- 预计算 STX 大小和块数量,并正确填充 STX 块结构
- 按需从 `.stx` 文件读取音频样本
- 从任意回调驱动的音频源生成新的 STX 文件
- 将任何音频转储为 WAV
- 以任何格式交错或去交错音频
## Deck Reader [`src/deck_reader`]
这是一个非常简单的用于 deck/arsenal 文件的 TUI 编辑器。采用简单的批处理脚本菜单风格,你可以通过数字选择菜单选项并输入新值。菜单会原地更新而不是滚动。
## SSB Tool [`src/ssb`]
这是一个基础工具,仅打印 SSB 的函数导出表。如果需要更好的 SSB 工具,请查看这些仓库:
- [hantu](https://github.com/VSaige3/hantu)
- [pd-ssb-decomp](https://github.com/VSaige3/pd-ssb-decomp)
有关文件格式的更多信息,请查看 [wiki 页面](https://phantomdust.miraheze.org/wiki/File_Formats/SSB)。
标签:3D模型查看器, 3D网格, ALR编辑器, BurpSuite 集成, DDS, Hex Editor, OBJ, Phantom Dust, WPF, 二进制发布, 云资产清单, 开源工具, 数据解析, 文件格式分析, 游戏模组, 游戏研究, 纹理提取, 脚本分析, 资源修改, 逆向工程, 骨骼动画