# RelicForge **Repository Path**: FlowerCN/RelicForge ## Basic Information - **Project Name**: RelicForge - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-05 - **Last Updated**: 2026-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RelicForge RelicForge 是一个 C++11/CMake/wxWidgets 的轻量级跨平台桌面与 headless 框架,用来构建离线、单机、授权、本地、模拟器、存档编辑、调试和可访问性辅助工具。当前仓库是 MVP foundation:包含 C API、模块化 CMake、MockTarget、CLI、Agent skeleton、wxWidgets GUI、i18n、多套离线修改器、测试和可拷贝部署目录。 RelicForge 不是外挂、作弊、反作弊绕过、隐蔽注入、提权、内核驱动或未授权远程控制框架。 ## 安全边界 支持的场景: - 离线单机游戏。 - 本地模拟器游戏。 - 授权存档编辑。 - 授权 memory-domain 编辑。 - 测试、调试、可访问性和生活质量工具。 - Mock target、sample profile、迁移验证和教学用途。 明确不支持: - 在线多人作弊。 - 反作弊绕过。 - DLL 注入、隐蔽注入、进程隐藏。 - 内核驱动或权限提升。 - 远程任意命令执行。 - 远程任意脚本上传和执行。 - 未认证网络监听器。 安全门控默认关闭: ```cmake RF_ENABLE_PROCESS_MEMORY=OFF RF_ENABLE_NETWORK_AGENT=OFF ``` ## 当前功能状态 已实现: - `rf_common`、`rf_compat`、`rf_core`、`rf_target`、`rf_save`、`rf_emulator`、`rf_profile`、`rf_ui`、`rf_wxui`、`relicforge_i18n`、`relicforge_ability`。 - `relicforge_gui`:Mock RPG 桌面 GUI。 - `relicforge_cli`:版本、语言列表、profile 列表、mock 读写、自测。 - `relicforge_agent`:安全 dry-run skeleton,默认不监听网络。 - 独立修改器:`relicforge_phantasy_star4_mega_modifier`、`relicforge_san3_mega_cd_modifier`、`relicforge_dk4pk_modifier`、`relicforge_taikou3_modifier`。 - `relicforge_deploy`:生成可直接拷贝走的部署目录。 - `relicforge_koukai2_save_editor`:大航海时代 II DOS `KOUKAI2.DAT` 本地存档编辑器,支持直接打开/保存 DAT、`.bak` 备份和未知字节保留。 仍是安全骨架: - 真实进程 memory attach。 - 真实模拟器 adapter。 - 真实网络 Agent。 - 自动 profile JSON loader。 ## 新增的两个 MFC 迁移修改器 本轮迁移参考目录为 `GameAuxiliaryTools-DK4PK_Tools`。它被逐文件登记、按功能重写,并会在迁移完成后从工作区删除。旧 MFC 工程不会进入 CMake、安装包或运行时资源。 ### DK4PK - 旧来源:`GameAuxiliaryTools-DK4PK_Tools/source/DK4PKTrainer` 和 `source/CoreModule/*DK4PK*`。 - 旧目标:`DK4PK.exe`。 - 新 target:`relicforge_dk4pk_modifier`。 - 新 executable:`relicforge_dk4pk_modifier.exe`。 - 新窗口标题:`RelicForge - 大航海時代 IV 威力加強版修改器`。 - Mock/offline 运行: ```powershell .\out\build\desktop-debug-static\bin\Debug\relicforge_dk4pk_modifier.exe --lang zh-TW .\out\build\desktop-debug-static\bin\Debug\relicforge_dk4pk_modifier.exe --smoke --lang en-US ``` 已迁移功能: - 海员 236、船只 207、舰队 69、宝物 208、港口 97、势力 25、航舰 20、全局/村庄 24 条 mock/offline 数据。 - 船舰命名、宝物归集、港口跃迁、主舰队跃迁、主舰队村庄跃迁、优化船舰与疲劳。 - 表格排序、选择、局部刷新、属性面板编辑、Apply/Reset/Refresh、快照/还原、`.rfstate` 保存/载入、日志。 安全降级: - 旧工程的 `OpenProcess`、`ReadProcessMemory`、`WriteProcessMemory` 没有迁移为默认功能。 - 旧预置名称大表没有复制;新实现保留数量、字段、操作语义,用 UTF-8/i18n 和生成式 mock 名称替代旧编码文本。 ### Taikou3 - 旧来源:`GameAuxiliaryTools-DK4PK_Tools/source/Taikou3Trainer` 和 `source/CoreModule/*Taikou3*`。 - 旧目标:`taikou3.exe`。 - 新 target:`relicforge_taikou3_modifier`。 - 新 executable:`relicforge_taikou3_modifier.exe`。 - 新窗口标题:`RelicForge - 太閣立志傳 III 修改器`。 - Mock/offline 运行: ```powershell .\out\build\desktop-debug-static\bin\Debug\relicforge_taikou3_modifier.exe --lang zh-TW .\out\build\desktop-debug-static\bin\Debug\relicforge_taikou3_modifier.exe --smoke --lang en-US ``` 已迁移功能: - 人物 250、城池 48、物品 64、大名 20、战斗 16、综合 6 条 mock/offline 数据。 - 锁定游戏数据、宝物归集、城池跃迁。 - 表格、属性编辑、Apply/Reset/Refresh、快照/还原、`.rfstate` 保存/载入、日志。 ## 多语言与乱码策略 默认语言可配置;没有配置时硬回退为繁体中文 `zh-TW`。 语言优先级: 1. 命令行 `--lang `。 2. 环境变量 `RELICFORGE_LANG`。 3. 配置文件 `language=zh-TW`。 4. CMake 默认 `RF_DEFAULT_LANGUAGE`。 5. 硬回退 `zh-TW`。 可用语言: - `zh-TW` - `en-US` - `zh-CN` 语言包位于: ```text locales/zh-TW.lang locales/en-US.lang locales/zh-CN.lang ``` GUI、CLI、Agent 和独立修改器的用户可见文本都应通过 i18n key。C/C++ 源码和 `.lang` 文件按仓库规则保持 UTF-8 with BOM,wxWidgets 边界使用 `wxString::FromUTF8`,避免 Windows ANSI code page 造成乱码。 ## 大航海时代 II DOS KOUKAI2.DAT 编辑器 本仓库现在新增一个独立可执行文件: ```text relicforge_koukai2_save_editor.exe ``` 默认打开: ```text C:\Software\KOUKAI2\KOUKAI2.DAT ``` 也可以指定任意 DAT: ```powershell .\out\build\desktop-debug-static\bin\Debug\relicforge_koukai2_save_editor.exe --save C:\Software\KOUKAI2\KOUKAI2.DAT --lang zh-TW .\out\build\desktop-debug-static\bin\Debug\relicforge_koukai2_save_editor.exe --smoke --save C:\Software\KOUKAI2\KOUKAI2.DAT --lang en-US ``` 当前实现是真实 DAT 读写,不是 `.rfstate` mock 页面: - 读取并校验 `KOUKAI2.DAT` 的 `328991` 字节文件大小。 - 解析 10 个固定记录槽,槽体大小 `32884` 字节。 - 从 header 读取槽位日期,当前 baseline 可见前三槽日期。 - 保存时保持未知字节不变。 - 写入前做字段类型、范围和槽内偏移校验。 - 保存时自动创建 `KOUKAI2.DAT.bak`。 - GUI 中显示字段 offset、类型、信心等级和逆向依据。 - 通过 Dk2Edit patch-readback 证据验证了一批字段,smoke 当前可加载 `2358` 个字段定义。 已接入的字段: - 年/月/日/20 分钟时间刻度。 - 所持金。 - 冒险/交易/战斗声望。 - 六国贡献度,按 Dk2Edit 的 `raw - 100` 规则显示和写回。 - 120 名海员的 8 项属性、当前/最大等级、两项经验、年龄、5 项技能 flag、国籍代码。 - 10 艘主角舰队船只的船型代码和三项积载分配字段。 - 20 个随身物品 ID 字节,已确认 `0xFF` 表示空槽。 - 3 个发现物汇报状态字节;baseline 上 Dk2Edit 的“设置所有发现物为没有汇报”会把这些字节从 `0x74` 改为 `0x64`。 - 航海图字节块只读查看。 - 对已实测代码值显示 Dk2Edit 名称,例如国籍、完整 25 项船型下拉名称和已验证随身物品;未验证代码仍显示为数字,避免猜测。 重要限制: - 这仍不是最终完整覆盖版。Dk2Edit 的海员 rank/归属状态、船只状态/补给/装备/完整船型名称表、港口/城市、发现物全可发现/全已发现 flag、事件 flag 等字段仍在覆盖清单中列为未完成或待确认。 - 当前 Codex 桌面会话不能向 VB6 文本框注入真实键盘输入,因此采用“直接 patch DAT 后让 Dk2Edit 读取”的 patch-readback 方式确认字段。 - 未完成项不会在文档里隐藏,详见 `doc/reverse/koukai2_feature_coverage.md`。 逆向工具和证据: - `tools/koukai2_reverse/scripts/`:snapshot、restore、diff、文本扫描、数值推断、checksum probe、Dk2Edit UI dump 工具。 - `tools/koukai2_reverse/reports/`:Dk2Edit 静态/UI 清单,已删除含乱码的临时 preview。 - `doc/reverse/koukai2_save_format.md`:当前 DAT 格式与 offset 表。 - `doc/reverse/koukai2_experiments.md`:实验记录。 - `doc/reverse/koukai2_feature_coverage.md`:Dk2Edit 覆盖/未覆盖清单。 - `doc/user/koukai2_editor_usage.md`:用户使用说明。 ## 架构概览 - `source/relicforge.h`:公共 C API,未来 plugin/ABI 基础。 - `source/common`:Status、ByteBuffer、Value、Logger、Config。 - `source/i18n`:语言选择、locale loader、message catalog、格式化。 - `source/target`:Target、MemoryDomain、MockTarget、FileTarget、ProcessTarget stub。 - `source/emulator`:EmulatorAdapter、MockEmulatorAdapter、逻辑地址映射。 - `source/ability`:Value/Batch/Freeze/Patch 能力,所有写入通过 Target/MemoryDomain。 - `source/ui`:toolkit-neutral UI schema、list/table model。 - `source/wxui`:wxWidgets 控件。 - `source/modifier`:独立模拟器修改器 profile、model、wx frame。 - `source/modifier/koukai2`:独立 KOUKAI2.DAT 存档修改器 GUI。 - `profiles`:部署用 profile 资源。 - `locales`:部署用语言包。 - `doc`:长文档与迁移证据。 ## 构建 初始化 bundled wxWidgets: ```sh git submodule update --init --recursive ``` Headless 构建不需要 wxWidgets: ```sh cmake --preset tests-headless cmake --build --preset tests-headless ctest --test-dir out/build/tests-headless -C Debug --output-on-failure ``` 桌面 Debug 构建: ```sh cmake --preset desktop-debug-static cmake --build --preset desktop-debug-static ``` Windows static preset: ```sh cmake --preset windows-msvc-static cmake --build --preset windows-msvc-static ``` Linux/macOS static preset 仍需遵守平台 GUI runtime 规则;GTK、Cocoa 和系统运行库不会因为“static”就完全消失。 ## 可拷贝部署目录 不要手工四处拷贝文件。使用部署 target: ```sh cmake --preset desktop-debug-static cmake --build --preset desktop-debug-static --target relicforge_deploy ``` 生成目录: ```text out/deploy/desktop-debug-static/Debug/ ``` 该目录可以直接复制、压缩或交给测试者,包含: - `bin/`:GUI、CLI、Agent、四个独立模拟器修改器和 `relicforge_koukai2_save_editor.exe`。 - `share/relicforge/locales/`:语言包。 - `share/relicforge/profiles/`:profile 资源。 - `share/doc/relicforge/`:README 和文档。 - 根目录 launcher:`run_relicforge_cli.cmd`、`run_dk4pk_modifier.cmd`、`run_taikou3_modifier.cmd` 等。 - KOUKAI2 launcher:`run_koukai2_save_editor.cmd`。 - `relicforge.conf.example` 和 `DEPLOYMENT.txt`。 部署目录运行示例: ```bat run_relicforge_gui.cmd --lang zh-TW run_dk4pk_modifier.cmd --lang zh-TW run_taikou3_modifier.cmd --lang zh-TW run_koukai2_save_editor.cmd --save C:\Software\KOUKAI2\KOUKAI2.DAT --lang zh-TW run_relicforge_cli.cmd --lang en-US list-languages ``` ## 运行 CLI: ```sh relicforge_cli --version relicforge_cli --lang zh-TW list-profiles relicforge_cli --lang en-US list-languages relicforge_cli mock-read player.hp relicforge_cli mock-write player.hp 999 ``` Agent: ```sh relicforge_agent --version relicforge_agent --dry-run --lang zh-TW ``` 测试: ```sh relicforge_tests ``` 成功时输出: ```text All RelicForge tests passed. ``` ## 迁移文档 - `doc/gameauxiliarytools_migration_inventory.md`:逐文件 inventory,包含行数/大小、SHA256、迁移状态和新路径。 - `doc/gameauxiliarytools_feature_mapping.md`:旧功能到新模块的映射。 - `doc/gameauxiliarytools_ui_parity.md`:旧 MFC UI 与新 wxWidgets UI 对照。 - `doc/gamecheatkits_*`:上一轮 GameCheatKits 迁移证据。 - `doc/reverse/koukai2_*`:Dk2Edit/KOUKAI2.DAT 逆向实验、格式和覆盖证据。 ## 开发约定 - 新用户可见文本先加 `zh-TW` key,再同步 `en-US` 和 `zh-CN`。 - 新公共头文件使用 Doxygen 风格注释。 - 安全敏感代码必须解释 mock/dry-run、回滚、地址映射和禁用原因。 - 不把参考目录加入 CMake、安装规则或部署目录。 - 使用原子提交,每个逻辑变化独立提交。 ## 后续任务 - JSON profile loader。 - 真实 emulator adapter。 - Profile editor。 - 更完整的视觉 parity 和截图自动化。 - 受安全门控的真实进程内存实验模块。 - 安全认证的本地 Agent protocol。 ## License 保留仓库现有 `LICENSE`。wxWidgets 使用其自身许可证。RelicForge 参考的是 x265 风格的目录组织方式,没有复制 x265 代码、宏、实现细节或许可证文本。