如何在 Retroflag GPI 上的 DOSBox 游戏中配置按键?

如何在 Retroflag GPI 上的 DOSBox 游戏中配置按键?

我在我的电脑上安装了 DOSBox逆行旗 GPi并将一些旧的 DOS 内容复制到 roms/pc,我可以从 RetroPie/EmulationStation 菜单运行它们,但控件存在问题。默认情况下,箭头似乎只在某些游戏中起作用,而其他键通常不起作用。我想以某种方式为每个游戏单独配置按键。我知道 DOSBox 有某种配置键盘的方法,但 GPi 按钮的键码是什么?

答案1

首先,系统将按钮视为操纵杆,因此您要做的就是将操纵杆移动和按钮映射到键盘。实际的按钮代码是:

Up: "stick_0 hat 0 1"
Down: "stick_0 hat 0 4"
Left: "stick_0 hat 0 8"
Right: "stick_0 hat 0 2"
A: "stick_0 button 0"
B: "stick_0 button 1"
X: "stick_0 button 2"
Y: "stick_0 button 3"
Select: "stick_0 button 8"
Start: "stick_0 button 9"
Left Shoulder: "stick_0 button 4"
Right Shoulder: "stick_0 button 5"

如果将 d-pad 切换到轴模式(长按 Start+Left),d-pad 将获得不同的代码:

Up: "stick_0 axis 1 0"
Down: "stick_0 axis 1 1"
Left: "stick_0 axis 0 0"
Right: "stick_0 axis 0 1"

请注意,Retroflag GPi 版本之间的确切键代码可能会有所不同,我听说过某个版本的 Select/Start 是 6/7,而不是 8/9。

现在您需要为每个游戏创建一个单独的 .conf 文件和一个 .map 文件。.map 文件包含键盘映射,例如,对于典型的游戏,文件 my_game.map 可能如下所示:

key_up "stick_0 hat 0 1"
key_down "stick_0 hat 0 4"
key_left "stick_0 hat 0 8"
key_right "stick_0 hat 0 2"

key_space "stick_0 button 0"
key_esc "stick_0 button 3"
key_p "stick_0 button 9"

key_lctrl "stick_0 button 8"
mod_3 "stick_0 button 8"
key_q "stick_0 button 9 mod3"

首先映射箭头,然后映射游戏中其他有用的键,最后部分做了一件棘手的事情:它将 Select 映射到 Ctrl 和 mod_3(DOSBox 中的虚拟修饰键),然后在 mod3+Start 上发送键 Q。这意味着按下 Select+Start 实际上会发送 Ctrl+Q(退出),但 Start 本身不会发送 Q(仅发送 P,如上所定义)。

对于无法正常退出的游戏,可以像这样终止 DOSBox:

mod_3 "stick_0 button 8"
hand_shutdown "stick_0 button 9 mod3"

然后在 roms/pc 中创建一个 my_game.conf 文件:

[sdl]
mapperfile=/full/path/to/my_game.map

[autoexec]
@cd /games/my_game
@my_game.exe
@exit

(不确定,也许到映射器的相对路径也可以起作用。)

我假设挂载操作在主 DOSBox 配置(config/dosbox-SVN.conf)中定义,如下所示:

[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.

@mount c /home/pi/RetroPie/roms/pcdata
@c:

这里我将所有 DOS 文件保存在 roms/pcdata 中,而不是 roms/pcdata 中,以防止 exe/bat/com 文件直接出现在游戏列表中。我只希望我的 conf 文件出现在那里。

最后一点:正如我所说,整个控制器被视为操纵杆,有些游戏,例如《波斯王子》,当使用操纵杆启动时,会进入操纵杆模式,并且根本不对箭头键做出反应。在这种情况下,您可以将方向键和 A 按钮映射到操纵杆,如下所示:

jaxis_0_1- "stick_0 hat 0 1"
jaxis_0_1+ "stick_0 hat 0 4"
jaxis_0_0- "stick_0 hat 0 8"
jaxis_0_0+ "stick_0 hat 0 2"
jbutton_0_0 "stick_0 button 0"

相关内容