DevilutionX(暗黑破坏神 1)GKD350h 移植版:安装、按键映射与已知问题全解析
2026/9/24 15:25:20 网站建设 项目流程
  • 游戏开发

【免费下载链接】DevilutionX

Diablo build for modern operating systems

项目地址:https://gitcode.com/gh_mirrors/de/DevilutionX
点击查看免费下载

DevilutionX 是《暗黑破坏神 1》面向现代操作系统的开源重制移植,本指南聚焦其在GKD350h复古掌机上的专用 OpenDingux 版本:从 OPK 安装包的放置、游戏数据文件diabdat.mpq的拷贝路径,到完整的键位映射表、Select/Start 互换与 IPU 缩放失效等已知问题,再到如何从源码自行构建该平台版本。读完本文,你可以在 GKD350h 上完整安装并流畅游玩 Diablo 1,同时理解该移植版在控件与渲染上的底层设计取舍。

平台背景:GKD350h 与 OpenDingux

GKD350h 是一款搭载 MIPS 架构 SoC 的掌上复古游戏机,运行基于 Buildroot 的OpenDingux(GCW0 风格)系统。DevilutionX 为它提供了专用移植目标,与lepusretrofwrg99rg350一同列为 OpenDingux 系列支持平台(见 Packaging/OpenDingux/targets.sh 中的VALID_TARGETS)。对应的构建目标名为gkd350h,其 CMake 平台配置位于 CMake/platforms/gkd350h.cmake。

该平台的移植版本有几个与众不同的技术约束:GKD350h 的 IPU 缩放器(IPU scaler)存在缺陷、方向键在摇杆模式下会被报告为左摇杆、且内核占用了Start + D-Pad组合键,这些约束直接决定了安装包的行为与按键布局,下文将逐一展开。

安装步骤

1. 拷贝 OPK 安装包

从 DevilutionX 的 Release 页面下载devilutionx-gkd350h.opk,将其复制到设备存储的apps目录之一:

  • 内置存储:/media/data/apps
  • SD 卡:/media/sdcard/apps/

OPK(Open PacKage)是 OpenDingux 使用的 squashfs 格式打包容器,其中不仅包含主程序devilutionx,还包含default.gcw0.desktop启动描述文件、readme.gcw0.txt手册以及图标资源。打包逻辑见 Packaging/OpenDingux/package-opk.sh:脚本会为rg350/gkd350h目标使用gcw0扩展名,把对应平台的.desktop文件与-manual.txt一并压入 OPK。GKD350h 的桌面描述文件 Packaging/OpenDingux/gkd350h.desktop 声明了Exec=devilutionxX-OD-Manual=readme.gcw0.txtX-OD-NeedsDownscaling=true,表明系统会按需对画面进行降采样适配。

2. 放置游戏数据文件diabdat.mpq

你需要从《暗黑破坏神 1》原版光盘或 GOG 安装目录中取得diabdat.mpq,将其拷贝到:

/usr/local/home/.local/share/diasurgical/devilution/diabdat.mpq

diabdat.mpq是暴雪经典的 MPQ 归档格式文件,包含游戏全部关卡、怪物、物品与音频资源。DevilutionX 在启动时会通过GetMPQSearchPaths()(见 Source/engine/assets.cpp)按顺序搜索多个候选路径来定位 MPQ 文件,因此在 OpenDingux 上该路径即为用户数据目录~/.local/share/diasurgical/devilution/

如果你购买了《地狱火》(Hellfire)扩展包,还可以把以下文件一并拷贝到同一目录以启用扩展内容:

hellfire.mpq hfmonk.mpq hfmusic.mpq hfvoice.mpq

此外,若需要中文、日文、韩文等 CJK 文字显示支持,可额外放置fonts.mpq;波兰语与俄语语音包则分别对应pl.mpqru.mpq。这些可选资源同样放在上述diasurgical/devilution/目录下。

提示:游戏存档与diablo.ini配置文件也位于同一目录~/.local/share/diasurgical/devilution/,备份或迁移存档时只需关注该目录。

按键映射与控制方案

GKD350h 版本的手柄映射与常规 OpenDingux 设备(如 RG350)略有不同,完整键位如下表:

按键操作功能
摇杆 / 方向键移动英雄
○(A)攻击附近敌人、与镇民和商人交谈、拾取/放置背包物品、主菜单中确认(OK)
×(B)选择法术、菜单中返回
△(Y)拾取物品、打开附近的箱子和门、使用背包中的物品
□(X)施放法术、主菜单中删除角色
L使用腰带中的生命药剂
R使用腰带中的法力药剂
Select + ↑游戏菜单
Select + L 或 ←角色信息
Select + R 或 →背包(物品栏)
Select + ↓地图(自动地图)
Select + □任务日志
Select + ×法术书
Start + △○×□快捷施法热键

键位映射的底层实现

这份键位表并非游戏内临时配置,而是写死在 CMake 平台配置中的。由于 GKD350h 在摇杆模式下会把方向键(D-Pad)报告为左摇杆,移植版不得不放弃手柄模式,改用**键盘模拟模式(HAS_KBCTRL)**来控制角色,见 CMake/platforms/gkd350h.cmake:

set(HAS_KBCTRL 1) set(DEVILUTIONX_GAMEPAD_TYPE Nintendo) set(KBCTRL_BUTTON_DPAD_LEFT SDLK_LEFT) set(KBCTRL_BUTTON_DPAD_RIGHT SDLK_RIGHT) set(KBCTRL_BUTTON_DPAD_UP SDLK_UP) set(KBCTRL_BUTTON_DPAD_DOWN SDLK_DOWN) set(KBCTRL_BUTTON_B SDLK_LCTRL) set(KBCTRL_BUTTON_A SDLK_LALT) set(KBCTRL_BUTTON_Y SDLK_SPACE) set(KBCTRL_BUTTON_X SDLK_LSHIFT) set(KBCTRL_BUTTON_RIGHTSHOULDER SDLK_BACKSPACE) set(KBCTRL_BUTTON_LEFTSHOULDER SDLK_TAB)

物理按键通过 SDL 键盘符号被映射为对应的游戏动作:映射到SDLK_LCTRL×映射到SDLK_LALT映射到SDLK_SPACE映射到SDLK_LSHIFT,肩键 L/R 分别映射到SDLK_TABSDLK_BACKSPACE。同时该配置还声明了DEVILUTIONX_GAMEPAD_TYPE Nintendo,使游戏在 UI 与提示上采用任天堂风格的按键命名(○×△□),与上文键位表保持一致。摇杆轴映射为JOY_AXIS_LEFTX=0JOY_AXIS_LEFTY=1(左摇杆 X/Y 轴),文件底部保留了一组被注释标记为“为将来参考保留”的JOY_*摇杆/按键映射,说明该项目为手柄直连模式预留了扩展空间。

已知问题与使用注意

GKD350h 移植版存在三个官方文档明确列出的已知问题,均源于硬件与内核层面的限制:

  1. Start 与 Select 互换:由于 GKD350h 内核占用了Start + D-Pad组合键来调节背光,移植版将两键互换。CMake 配置中体现为:

    # We swap Select and Start because Start + D-Pad is overtaken by the kernel. set(KBCTRL_BUTTON_START SDLK_ESCAPE) # Select set(KBCTRL_BACK_BUTTON SDLK_RETURN) # Start

    即物理上的Start 键被映射为游戏内的 Select(对应SDLK_ESCAPE),物理Select 键被映射为游戏内的 Start(对应SDLK_RETURN)。因此上表所写的组合键(如 “Select + ↑ = 游戏菜单”)中的 “Select” 指的是物理按键Start 的实际按压。

  2. 无鼠标模拟:因为按键互换占用了原本可用的映射空间,本版本没有可用的鼠标模拟键位。这虽然不影响正常游玩,但意味着你**无法拖动自动地图(automap)**进行平移查看。作为对比,RG350 版本通过右摇杆及Select + 右摇杆按下实现鼠标模拟(见 docs/manual/platforms/rg350.md),而 GKD350h 缺少右摇杆,此功能自然缺失。

  3. 软件缩放渲染:GKD350h 的 IPU 缩放器当前不可用,因此本版本无法使用 RG350 那样的硬件缩放,只能回退到软件缩放,画面观感上会比 RG350 版本“粗糙”一些。CMake 配置中对应地固定了默认分辨率与色深:

    # GKD350h IPU scaler is broken at the moment set(DEFAULT_WIDTH 320) set(DEFAULT_HEIGHT 240) set(SDL1_VIDEO_MODE_BPP 16)

    即默认以 320×240 分辨率、16 位色深运行,同时整个平台构建强制使用 SDL1(USE_SDL1=ON)并关闭了零配置组网(DISABLE_ZERO_TIER=ON)与内置资源 MPQ(BUILD_ASSETS_MPQ=OFF),以适配这个资源有限的嵌入式环境。

存档兼容性

本版本的存档与 PC 版《暗黑破坏神 1》以及 DevilutionX 其他平台的存档完全兼容。存档文件保存在~/.local/share/diasurgical/devilution/目录下,这意味着你可以将 PC 或 Steam Deck 等设备上的 DevilutionX 存档拷贝到 GKD350h 继续游玩,反之亦然。需要注意,存档兼容的前提是双方运行的是同一游戏版本(原版 Diablo 1 数据),《地狱火》扩展内容同样遵循此规则。

从源码构建 GKD350h 移植版

如果你希望自行编译该版本,DevilutionX 提供了完整的 OpenDingux 构建流程。构建脚本 Packaging/OpenDingux/build.sh 使用 buildroot 工具链交叉编译,GKD350h 对应的是gkd350h目标(使用tonyjih/RG350_buildroot仓库与rg350_defconfig配置,见脚本中的BUILDROOT_REPOS/BUILDROOT_DEFCONFIGS表)。

基础构建命令如下:

TOOLCHAIN=<path/to/toolchain> Packaging/OpenDingux/build.sh gkd350h
  • 如果设置了TOOLCHAIN环境变量,脚本直接使用现成工具链;
  • 若不设置,脚本会自动下载并编译一个精简的 buildroot 工具链(存放于$HOME/devilutionx-buildroots/gkd350h),这需要 8 GiB 以上的磁盘空间且耗时较长;
  • 构建产物为build-gkd350h/devilutionx-gkd350h.opk,随后脚本调用package_opk将其连同.desktop描述文件、readme.gcw0.txt手册与图标一并打包为最终 OPK。

CMake 配置阶段的关键参数(见cmake_configure()函数):目标平台通过-DTARGET_PLATFORM=gkd350h传入,交叉工具链来自toolchainfile.cmake,同时关闭了单元测试(BUILD_TESTING=OFF)、系统 libsodium/bzip2(改用内置版本)、栈保护(STACK_PROTECTOR=OFF)。构建完成后会使用工具链自带的*-linux-strip对二进制进行瘦身。完整构建说明还可参考 docs/building.md 的 “OpenDingux / RetroFW” 章节,其中也提到了mksquashfs是打包 OPK 的必要依赖。

资源与参考

  • 玩家手册:设备上随 OPK 附带的readme.gcw0.txt(源文件为 Packaging/OpenDingux/gkd350h-manual.txt),内容与本指南安装、键位、已知问题章节一致
  • 其他平台手册:docs/manual/platforms/ 目录下还包含 RG350、RG99、RetroFW、Lepus 等同类 OpenDingux 设备的说明
  • 构建参考:docs/building.md
  • 平台打包脚本:Packaging/OpenDingux/

如需在启动时减轻 squashfs 的内存开销,可以借鉴 RG99 的devilutionx-from-disk.sh方案(Packaging/OpenDingux/devilutionx-from-disk.sh):它先将 OPK 内容解包到磁盘再执行,并通过 MD5 校验避免重复拷贝——该脚本由 build.sh 在rg99目标下自动加入 OPK,GKD350h 用户可自行参考使用。

  • 游戏开发

【免费下载链接】DevilutionX

Diablo build for modern operating systems

项目地址:https://gitcode.com/gh_mirrors/de/DevilutionX
点击查看免费下载

相关推荐

上一篇:通达信缠论可视化插件使用指南
下一篇:OCAT 入门指南:可视化 OpenCore 配置工具助你轻松打造黑苹果

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询