Fairy-Oracle-Sanctuary/th06-plus

GitHub: Fairy-Oracle-Sanctuary/th06-plus

这是一个基于 Touhou 06 的增强修改版,提供中文本地化、命中框显示与无限生命等调试与研究功能。

Stars: 1 | Forks: 1

# 东方红魔乡 06 ~ 红魔乡[plus]

English | 简体中文

Decomp Progress [![Discord](https://img.shields.io/discord/1147558514840064030?color=%237289DA&logo=discord&logoColor=%23FFFFFF)][discord] <- 点击此处加入 discord 服务器。 这是由 GensokyoClub 制作的 [th06](https://github.com/GensokyoClub/th06) 的修改版本。 ## 修改内容 此 fork 包含以下修改: - **修复帧率 Bug** - 修复了游戏运行速度不正确的 Bug - **内置判定区指示器** - 按 Shift 键可显示以玩家为中心的旋转判定区指示器 - **无限生命** - 玩家死亡时自动获得生命 - **中文本地化** - 全面支持使用 GB2312 字符集和 SimHei 字体的中文文本 - **默认窗口模式** - 游戏默认以窗口模式启动 ### 中文本地化数据 中文本地化的 DAT 文件(`th06c_*.DAT`)来自 [thdog.moe](https://cn.thdog.moe/%E5%9B%BD%E9%99%85%E5%88%86%E6%B5%811/%E4%B8%9C%E6%96%B9Project/%E5%AE%98%E6%96%B9%E6%B8%B8%E6%88%8F/%E6%95%B4%E6%95%B0%E4%BD%9C/%5Bth06%5D%20%E4%B8%9C%E6%96%B9%E7%BA%A2%E9%AD%94%E4%B9%A1%20(%E6%B1%89%E5%8C%96%E7%89%88+%E6%97%A5%E6%96%87%E7%89%88)%201.02h.zip)。 原项目描述: 本项目旨在完美重构 Team Shanghai Alice 的 [东方红魔乡 ~ the Embodiment of Scarlet Devil 1.02h](https://en.touhouwiki.net/wiki/Embodiment_of_Scarlet_Devil) 的源代码。 ## 安装说明 ### 可执行文件 此项目需要原版 `東方紅魔郷.exe` 1.02h 版本(SHA256 哈希值为 9f76483c46256804792399296619c1274363c31cd8f1775fafb55106fb852245,你可以在 Windows 上使用命令 `certutil -hashfile SHA256` 检查哈希值)。 将 `東方紅魔郷.exe` 复制到 `resources/game.exe`。 ### 依赖项 构建系统有以下软件包要求: - `python3` >= 3.4 - `msiextract`(仅限 Linux/macOS) - `wine`(仅限 Linux/macOS,在 macOS 上推荐使用 CrossOver 以避免可能出现的 CL.EXE 堆问题) - `aria2c`(可选,允许进行 torrent 下载,如果在 Windows 上选择则会自动安装) 构建系统的其余部分是由来自 Web Archive 的 Visual Studio 2002 和 DirectX 8.0 构建的。 #### 配置 devenv 这将下载并安装编译器、库和其他工具。 如果你使用的是 Windows,并且出于某种原因想要手动下载依赖项, 运行以下命令以获取需要下载的文件列表: ``` python scripts/create_devenv.py scripts/dls scripts/prefix --no-download ``` 但如果你希望自动下载所有内容,请像这样运行: ``` python scripts/create_devenv.py scripts/dls scripts/prefix ``` 如果你想使用 torrent 下载这些依赖项,请使用以下命令: ``` python scripts/create_devenv.py scripts/dls scripts/prefix --torrent ``` 在 Linux 和 Mac 上,运行以下脚本: ``` # 注意:在 macOS 上如果你使用 CrossOver。 # export WINE=/wine ./scripts/create_th06_prefix ``` #### 构建 运行以下脚本: ``` python3 ./scripts/build.py ``` 这将自动生成一个 ninja 构建脚本 `build.ninja`,并 运行 ninja。 #### 创建发布包 要创建可分发的发布包: ``` python3 ./scripts/release.py ``` 这将: 1. 清理构建目录中不必要的文件(目标文件、调试符号等) 2. 创建一个仅包含基本游戏文件的 zip 压缩包 选项: - `--no-clean` - 跳过清理构建目录 - `--no-zip` - 跳过创建 zip 压缩包 - `-o PATH` - 指定 zip 的输出路径 - `-n NAME` - 指定发布名称(默认:th06e-release) ### 逆向工程 你可以在配套仓库的 `xml` 分支中找到我们使用 Ghidra 进行逆向工程的 XML 导出文件 [th06-re]。该仓库每晚通过 [`scripts/export_ghidra_database.py`] 进行更新,其历史记录与我们团队在 Ghidra Server 上的签入历史相匹配。 如果你希望协助我们进行逆向工程工作,请在 Discord 上联系 @roblabla,以便我们能在 Ghidra Server 上为你提供一个账号。 ### 重新实现 进行重新实现的最简单方法是使用 [`objdiff`](https://github.com/encounter/objdiff)。以下是入门步骤: 1. 首先,按照上述说明配置 devenv。 2. 将原版 `東方紅魔郷.exe` 文件(1.02h 版本)复制到 `resources/` 文件夹,并将其重命名为 `game.exe`。这将用作与 重新实现进行比较的源文件。 3. 下载最新版本的 objdiff。 4. 运行 `python3 scripts/export_ghidra_objs.py --import-csv`。这将从 `resources/game.exe` 中提取可供 objdiff 进行比较的目标文件。 5. 最后,运行 objdiff 并打开 th06 项目。 #### 选择要反编译的函数 最简单的方法是查看 `config/stubbed.csv` 文件。这些都是 自动被 stub 处理的函数。你应该选择其中一个,在 objdiff 中打开关联的目标文件,然后点击感兴趣的函数。 接着,打开正确的 `cpp` 文件,复制/粘贴声明,然后开始 修改代码!以 Ghidra 反编译器的输出作为基础可能会很有用。你 可以在 [th06-re] 仓库中找到此输出。 # 鸣谢 我们在此向以下为项目做出宝贵贡献的 个人表达感谢: - @EstexNT 感谢其将 [`var_order` pragma](scripts/pragma_var_order.cpp) 移植到 MSVC7。
标签:C/C++, 东方Project, 事务性I/O, 云资产清单, 汉化, 游戏, 逆向工程