# ports_fightnrage **Repository Path**: windstarry/ports_fightnrage ## Basic Information - **Project Name**: ports_fightnrage - **Description**: 战斗狂怒的ports移植,基于GOG版本 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-21 - **Last Updated**: 2026-09-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Fight'N Rage ARM64 移植 — ROCKNIX / GOG 版 面向 **Fight'N Rage**(作者 **SebaGamesDev**)的 ARM64 Linux 实验性兼容移植。 **本仓库不包含商业游戏本体。** 本树基于 [ryuhatev/fightnrage-arm64-port](https://github.com/ryuhatev/fightnrage-arm64-port), 面向不同的设备/发行版路径做了扩展。 **本 fork 仓库:** https://gitee.com/windstarry/ports_fightnrage ## 移植目标 | 目标 | 改动说明 | | --- | --- | | **GOG 版本** | 使用 DRM-free 的 Galaxy 构建。`PrepareGame.exe` 将 Galaxy 启动入口重定向到游戏托管启动流程,并中和商店相关类型/方法。**拒绝 Steam 构建**,不做任何商店验证绕过。 | | **动态分辨率** | `src/presenter.c` 从 framebuffer(或 SDL/kmsdrm)读取实时 `xres/yres/bpp/stride`,**不再写死 640×480**。 | | **以 ROCKNIX 为主** | 主目标 CFW:**ROCKNIX**(EmuELEC 系,Mesa + kmsdrm)。muOS/H700 仅作历史参考路径。 | | **SELECT+START 退出** | `tools/fnr_exit_watchdog` 监听 `/dev/input/event*`,按住 Select+Start 时结束 Mono 游戏进程。 | ## 冒烟测试状态(最近一轮) 已在 **ROCKNIX** 掌机上验证(RK3326 级别,如 XF35H): | 检查项 | 结果 | | --- | --- | | 版本 | GOG(`GogWindowsLauncher` + Galaxy 标记) | | PrepareGame | 入口重定向 + Galaxy/WinForms/OpenTK 光标补丁 | | 图形 | Mesa / Panfrost **Mali-G31 MC1**,GL 3.1 兼容档 | | 屏幕 | 运行时查询 DRM 模式(该机为 640×480,非硬编码) | | 音频 | FMOD 初始化成功(进程内 ALSA/PipeWire PCM) | | 游戏主循环 | 进程可保持运行;日志出现 `SESSION UPDATE`、资源加载 | | 退出 | SELECT+START 看门狗已随包提供 | 这**不是**已通过 PortMaster 官方验收的公开发行版。详见 [docs/RELEASE-STATUS.md](docs/RELEASE-STATUS.md)。 ## 本包提供什么 - ARM64 呈现库(`libfnrresolver.so`):**动态分辨率** + 多后端 GL 解析 (优先 Mesa/glvnd,可选 gl4es,回退 vendor EGL)。 - 已补丁的 OpenTK:保留桌面 GL 上下文;`LinuxNativeWindow.set_CursorGrabbed` 在 kmsdrm 下被置为 no-op。 - 仅 MIT 的 FMOD **API 适配层**(`libfmod.so`)。 - **已捆绑** `libfmod203.so.14`(Firelight FMOD Core 2.03.14 Linux ARM64), 见 `licenses/FMOD-NOTICE.txt`。安装后**只需把游戏文件放进 gamedata/**。 - `PrepareGame.exe`:处理 **GOG** 输入(拒绝 Steam),并附带 Mono.Cecil。 - `fnr_exit_watchdog`:SELECT+START 退出。 - PortMaster 启动脚本 `fightnrage.sh`(主目标 ROCKNIX/EmuELEC)。 - PortMaster v4 元数据、Docker 构建文件与说明文档。 Mono 使用 **PortMaster 共享运行时**(`mono-6.12.0.122-aarch64.squashfs`), 本包不捆绑。系统 Mesa/SDL2/ALSA/PipeWire 来自 CFW。 **不随包分发:** 游戏 exe、`data/`、存档、Steam 工具。 若 CFW 缺少 libgdiplus 等,仍需自行放入 `libs.aarch64/`。 > **许可提示:** FMOD 为专有软件。本 fork 为方便安装将其打入仓库,**不等于** > 取得公开再分发授权;详见 `docs/LICENSING.md`。 ## 用户需自备的文件(仅 GOG) 从你自己的 **GOG** 安装目录复制到 `fightnrage/gamedata/`: | 源文件 | 设备路径 | | --- | --- | | `FIGHT_N_RAGE.exe` | `fightnrage/gamedata/FIGHT_N_RAGE.exe` | | `SDL2-CS.dll` | `fightnrage/gamedata/SDL2-CS.dll` | | 完整 `data/` 目录 | `fightnrage/gamedata/data/` | **FMOD 运行库 `libfmod203.so.14` 已包含在包内**(`libs.aarch64/`), 无需再单独下载。 **不要**用零售版 `OpenTK.dll` 覆盖包内的 `game/OpenTK.dll`。 **不要**把 Windows 版 `fmod.dll` 或 Steam 相关 DLL 放进端口目录。 ## ROCKNIX 上的运行时库 框架已在 `fightnrage/libs.aarch64/` 中**捆绑** CFW 可能缺失的库 (Debian aarch64 构建,说明见 `licenses/RUNTIME-DEPS.txt`): | 文件 | 用途 | | --- | --- | | `libfmod203.so.14` + `libfmod.so` | FMOD 引擎 + 本项目适配层 | | `libgdiplus.so.0` / `libgdiplus.so` | Mono `System.Drawing` | | `libdl.so` | OpenTK 1.x P/Invoke(系统多为 `libdl.so.2`) | | `libtiff.so.5` `libgif.so.7` `libexif.so.12` | libgdiplus 依赖 | | `libjpeg.so.62` `libwebp.so.6` `libjbig.so.0` `libdeflate.so.0` | libtiff 依赖 | 安装端口包后**无需再手动补这些库**;用户只需把 GOG 游戏文件放进 `gamedata/`。若设备上仍报 `not found`,说明该 CFW 缺了其它 SONAME, 可用 `ldd` 定位后再增补。 用 `ldd libs.aarch64/libgdiplus.so.0` 检查,不应出现 `not found`。 ## 安装(ROCKNIX,遵循 PortMaster 规范) 1. 安装 PortMaster,并确保 Mono squashfs 存在: `…/PortMaster/libs/mono-6.12.0.122-aarch64.squashfs` 2. **仅使用标准 PortMaster 目录结构** 安装本端口: - 启动脚本 `fightnrage.sh`(及 `战斗狂怒.sh`)放在设备 Ports 根目录 (例如 `roms/ports/`) - 包内容 `fightnrage/` 紧挨其旁(例如 `roms/ports/fightnrage/`) 3. 将 GOG 文件复制到 `fightnrage/gamedata/`(exe、`SDL2-CS.dll`、`data/`)。 **FMOD 与 gdiplus 等依赖已随包提供**(`libs.aarch64/`),无需再单独下载。 4. 从 Ports 菜单启动。 **不要**把游戏文件安装到 PortMaster Ports 目录之外。 首次启动会执行 `PrepareGame.exe`,生成 `gamedata/FIGHT_N_RAGE.linux.exe`。 ### 设备目录布局(PortMaster) ``` roms/ports/ fightnrage.sh 战斗狂怒.sh fightnrage/ # 端口包根目录(GAMEDIR) gamedata/ # GOG exe、SDL2-CS、data/ game/ # 补丁后的 OpenTK.dll 与配置 tools/ # PrepareGame.exe、Mono.Cecil、fnr_exit_watchdog libs.aarch64/ # resolver、FMOD、gdiplus 及依赖(已捆绑) config/ # asound、50_mesa.json savedata/ logs/ ``` ## 操作说明 - 使用 PortMaster 各 CFW 的手柄映射(`$sdl_controllerconfig`), 并可选 `fightnrage.gptk`。 - 十字键 / 左摇杆移动;Start 打开菜单或暂停(具体键位以游戏内设置为准)。 - **退出:** 游戏运行中**同时按住 SELECT + START**。 看门狗日志:`fightnrage/logs/exit_watchdog.log`。 - SSH 测试时不要用 SIGSTOP 挂起前端(可能导致音频异常)。 ## 分辨率 / 图形说明 - Presenter 查询实时 fb 几何参数;在 kmsdrm 上若 fb 不可用则自行禁用, 交由 SDL 直接呈现。 - 启动器会放置 Mesa glvnd 厂商 JSON(`config/50_mesa.json`),并**重建** `LD_LIBRARY_PATH`(避免继承 Mali 优先的路径),以便 Mesa 上编译 GLSL 1.10 兼容档着色器。 - 本构建游戏内部帧缓冲约为 354×200 再缩放,与面板物理分辨率无关。 ## 存档 - `USERPROFILE` → `fightnrage/savedata` - 更新/卸载前请完整备份 `savedata/` - 通过 PortMaster 卸载前,先将 `savedata/`、`gamedata/` 复制到 **端口目录之外** ## 构建(摘要) 完整步骤见 **[docs/BUILD.md](docs/BUILD.md)**。 Windows 下推荐用 Docker,详见 BUILD 文档中的命令与清单。 ## 文档目录 - [docs/BUILD.md](docs/BUILD.md) — 构建、OpenTK、PrepareGame、部署 - [docs/TECHNICAL.md](docs/TECHNICAL.md) — 图形/音频路径说明 - [docs/LICENSING.md](docs/LICENSING.md) — 许可证与来源 - [docs/RELEASE-STATUS.md](docs/RELEASE-STATUS.md) — 尚未关闭的发布门槛 - [docs/CREDITS.md](docs/CREDITS.md) — 上游致谢 原移植框架代码:MIT 许可。FMOD 引擎:Firelight 另行授权。 非官方社区移植,与 SebaGamesDev、GOG、ROCKNIX、muOS、PortMaster 无背书关系。