pakahenepy/HydroThunderTool

GitHub: pakahenepy/HydroThunderTool

针对经典游戏 Hydro Thunder(PC 版)的纯 Python 逆向工程工具包,实现游戏资源归档的完整解包、格式转换与模组重打包。

Stars: 1 | Forks: 0

# HydroThunderTool 针对 **Hydro Thunder(PC,Midway/Eurocom 2000)** 的逆向工程工具包——这是一个 仅依赖 Python 标准库的纯脚本,用于解包和解码游戏的 `Hydro.fsd` 资源归档文件。 ## 功能支持 - **FSD 容器 + EDL1 编解码器** — 完整提取全部 542 个文件 (支持 Huffman+LZ 解压缩器,在所有 13,572 个数据块上验证字节完全一致) - **文件名** — 从 `HYDRO.EXE` 中恢复了 536/542 个原始路径(`names.json`) - **纹理** — 所有 EGF UI 纹理、全部 1,496 个 `T*` 世界纹理,以及所有 1,155 个 `M*` 多级渐远赛道表面纹理 → PNG(`fmt` 字段即为 3dfx Glide 的 `GrTextureFormat_t` 枚举值) - **加载界面** — 全部 39 个(`B*` 记录,ARGB1555) - **3D 模型** — 全部 1,741 条 `G*` 记录 → OBJ **包含材质**:UV、 表面组,以及从容器重定位尾部恢复的 `.mtl` 纹理绑定(格式从 exe 的绘制代码中逆向得出) - **赛艇物理** — `P*` 参数记录 → 可读文本(全部 13 艘赛艇的质量、阻力、 浮力、操控性) - **音频** - 全部 459 个 ESF 音效 + 音乐 -> 16 位 WAV(IMA ADPCM) - **动画与摄像机** - A* 关键帧 -> JSON,D* 演示摄像机脚本 -> 文本 - **模组** - 一条命令,`hydrotool.py mod`,通过一个 mods 文件夹重建 `Hydro.fsd`,该文件夹可以包含任意修改后的纹理、模型及 其他文件的组合(当文件夹为空时可实现字节完全一致的往返操作)。 `hydrotool.py retexture` 可将修改后的 PNG 重新编码回该文件夹对应的 T*/M*/B*/EGF 纹理记录。 - **Blender 插件** - [hydro_blender.py](hydro_blender.py):导入模型 (已贴图,按子部件),整个赛道(世界网格 + 每一个放置的道具), 以及动画(关键帧子部件);**Export & Add to Mods** 可将修改后的模型 直接写入 mods 文件夹,无需输入任何文件名 ## 模组快速开始 ``` # 1. 编辑一个贴图 PNG (在 _textures/ 中),然后重新编码它: python hydrotool.py retexture out/bc0abcfa.bin_split/TBBBANS_A10.bin \ out/bc0abcfa.bin_split/_textures/TBBBANS_A10.png # -> out/bc0abcfa.bin_split/_mods/TBBBANS_A10.bin # 2. (可选)在 Blender 中编辑一个模型,点击 "Export & Add to Mods" # -> 自动写入到同一个 _mods/ 文件夹 # 3. 一条命令即可重新构建整个游戏,并应用 _mods/ 中的所有内容: python hydrotool.py mod Hydro.fsd out/bc0abcfa.bin_split/_mods -o Hydro_modded.fsd ``` ## 用法 将你游戏安装目录下的 `Hydro.fsd` 放在脚本旁边,然后运行: ``` python hydrotool.py all Hydro.fsd -o out # everything: extract, textures, # world split, models, params ``` 输出文件将位于 `out/bc0abcfa.bin_split/` 目录下:包含 `_textures/`、`_screens/`、 `_models/`(OBJ+MTL,可在 Blender 中打开)和 `_params/`。各个独立步骤也可通过 子命令执行(`extract`、`textures`、`world`、`models`、`params`)—— 请参阅 `python hydrotool.py --help`。 无外部依赖。本仓库**不包含**游戏数据——请自行准备游戏文件。 ## 文档 - [FSD_format.md](FSD_format.md) — 完整的文件格式文档 (容器、编解码器、哈希、所有解码后的记录类型、exe 函数地址) - [NEXT_STEPS.md](NEXT_STEPS.md) — 项目状态、遗留问题 (H* 碰撞数据,A* 动画,D* 摄像机脚本,赛道组装), 以及已排除的死胡同 ![models](https://static.pigsec.cn/wp-content/uploads/repos/cas/6a/6a974f09f12f4059704151522196cd63de4ffea029377ec731ca7138dcf5ad9d.png)
标签:Blender插件, Homebrew安装, Python, 云资产清单, 文件提取, 无后门, 模型导出, 游戏开发, 逆向工具, 逆向工程