📖 本文由 Batocera 官方 Wiki 翻译整理,内容可能随版本更新而变化。


Support for steering wheels is under heavy development. Consider this wiki page an early look. Join #steering-wheels on Discord to contribute or to follow latest updates.

Steering wheel controllers

If you’ve ever been to an arcade before, chances are you’ve seen or played on one of the sit-down driver cab games where the conventional steering wheel of a car is used to control a virtual car on-screen as opposed to a regular controller. From Batocera FIXME and up, steering wheel controllers are supported. Menu navigation is performed by FIXME and configuration on supported emulated systems is automatic.

Supported wheels

^ ^ Max range ^ 力反馈 ^ Gear shifter ^ Notes ^
| HORI Racing Wheel APEX | 270° | ✘ | ✘ | Mapping is incomplete |
| HORI Racing Wheel Overdrive | 270° | ✘ | ✘ | (v40) Must be on mode 2 to work |
| HORI Mario Kart Racing Wheel Pro Deluxe for Nintendo Switch | 270° | ✘ | ✘ | (v42) Must be on DP switch mode |
| 罗技 Driving Force | 200° | ✔ | ✘ | |
| 罗技 Driving Force GT | 900° | ✔ | ✔ | |
| 罗技 Driving Force Pro | 900° | ✔ | ✔ | (v40) |
| 罗技 Formula Vibration Feedback | 180° | ✘ | ✘ | (v43) |
| 罗技 G PRO Racing Wheel | None | ✔ | ✘ | (v42) |
| 罗技 G25 Racing Wheel | 900° | ✔ | ✔ | |
| 罗技 G27 Racing Wheel | 900° | ✔ | ✔ | |
| 罗技 G29 Driving Force | 900° | ✔ | ✔ | Must be on PS3/PC mode to work |
| 罗技 G920 Driving Force (PlayStation model) | 900° | ✔ | ✔ | |
| 罗技 G920 Driving Force (Xbox model) | 900° | ✔ | ✔ | (v41) |
| 罗技 G923 Driving Force (PlayStation model) | 900° | ✔ | ✔ | |
| 罗技 G923 Driving Force (Xbox model) | 900° | ✔ | ✔ | (v42) |
| 罗技 Momo Racing | 240° | ✔ | ✔ | |
| Microsoft SideWinder 力反馈 Wheel | 220° | ✔ | ✘ | |
| Microsoft SideWinder Precision Racing Wheel | 270° | ✘ | ✘ | (v41) |
| MOZA Racing R9 | None | ✔ | ✔ | Mapping is incomplete |
| MOZA R12 V2 (Direct Drive) | None | ✔ | ✔ | (v43) |
| Speedlink 4in1 Leather Power Feedback Wheel (SL-6698) | 250° | :!: | ✘ | (v42) 力反馈 unsupported yet |
| 图马思特 Ferrari 458 Spider | 240° | ✘ | ✘ | 力反馈 unsupported yet |
| 图马思特 Ferrari Wireless F430 Cockpit | 270° | ✘ | ✘ | |
| 图马思特 Ferrari F430 力反馈 | 270° | ✔ | ✘ | |
| 图马思特 Ferrari SF1000 (Advance Racer) | ? | ? | ? | |
| 图马思特 Ferrari GT 2 in 1 Rumble Force Racing Wheel | 240° | ✘ | ✘ | (v40) Must be on 3-axis mode (default) |
| 图马思特 T300 RS | 1080° | ✔ | ✘ | |
| 图马思特 T248 | 900° | ✔ | ✘ | (v42) Must update firmware to gain 力反馈. PC MODE only. |
| 图马思特 T150 RS | 1080° | ✔ | ✔ | (v40) Must be on PS3 mode to work |
| 图马思特 T80 | 240° | ✘ | ✘ | (v40) Must be on gamepad mode to work |
| PXN-V10 | 900° | ✔ | ✔ | (v40) Must be on x-input mode, switch to 270° and 力反馈 disabled in PXN phone app |

Unsupported wheels

^ Wheel ^ Notes ^
| 图马思特 T128 | Need testers, Linux drivers are compatible (v41) |
| 图马思特 TMX | Need testers, Linux drivers are compatible (v41) |
| Mad Catz Wireless Racing Wheel for XBox 360 | Unfortunately, seen as a plain XBox360 controller only |

Supported systems (WIP)

^ System ^ Emulator ^ Working out of the box ^ Has 力反馈 feature ^ Working 力反馈 in Batocera ^ Notes ^
| 3DO | libretro:opera | ✘ | ✘ | — | 3DO had one driving game with 力反馈 |
| Atari 2600 | libretro:stella | ✘ | ✘ | — | |
| Atari 5200 | libretro:atari800 | ✘ | ✘ | — | |
| Atomiswave | libretro:Flycast | ✔ | ✔ | ✘ | |
| ColecoVision | libretro:bluemsx | ✘ | ✘ | — | No support in blueMSX yet |
| Dreamcast | libretro:Flycast | ✔ | ✘ | — | |
| FBNeo | libretro:FBNeo | ✘ | ✘ | ✘ | Not optimized |
| GameCube | Dolphin | ✔ | ✔ | ✔ | |
| Lindbergh | Lindbergh | ✔ | ✔ | ✘ | No 力反馈 support yet |
| MAME | MAME | :!: | ✔ | ✘ | Not optimized |
| Model 2 | model2emu | ✘ | ✔ | ✔ | Not optimized |
| Model 3 | Supermodel | ✘ | ✔ | ✔ | Not optimized |
| Naomi | libretro:Flycast | ✔ | ✔ | ✘ | |
| Naomi 2 | libretro:Flycast | ✔ | ✔ | ✘ | |
| Namco 2×6 | Play! | ✘ | ✔ | :?: | Not optimized |
| Nintendo 64 | Mupen64 | ✔ | ✘ | — | |
| PlayStation | libretro:pcsx_rearmed | :!: | ✘ | — | Not optimized |
| PS2 | PCSX2 | ✔ | ✔ | ✔ | |
| PlayStation 3 | RPCS3 | ✘ | ✔ | ✘ | Not optimized |
| Sega Saturn | libretro:beetle-saturn | ✔ | ✘ | — | |
| Triforce | Dolphin | ✔ | ✔ | — | No 力反馈 support yet |
| Wii | Dolphin | :!: | ✘ | — | Not optimized |
| Wiiu | cemu | ✘ | :?: | — | Not optimized |
| Xbox | xemu | :!: | :?: | — | Not optimized |
| Xbox 360 | xenia | ✘ | :?: | — | Not optimized |

力反馈 is supported with the PCSX2 and Dolphin (GameCube) emulators.

You can test the wheel 力反馈 from command line by (type evtest to find your XX value):
ffcfstress -d /dev/input/eventXX

Adding a wheel not yet supported by Batocera

Before trying to add a steering wheel you believe is not yet supported, verify the list above. If it’s there but undetected in Batocera, upgrade to latest version.

If coming from an upgrade and the steering wheel is detected, but no buttons are working, simply delete the file /userdata/system/configs/EmulationStation/es_input.cfg and reboot. This will generate a new es_input.cfg with the latest additions. Do not remap the steering wheel, this will break the pre-configured generator.

To initiate support for a new steering wheel controller in Batocera (view image below):
– Configure the wheel as a normal pad in EmulationStation with the following convention:
* LEFT ANALOG LEFT to the rotation of the steering wheel (skip LEFT ANALOG UP by holding any button)
* If possible, LEFT SHOULDER and RIGHT SHOULDER to gear down and up respectively
* LEFT TRIGGER to the brake pedal, and RIGHT TRIGGER to the acceleration/gas pedal
* START as a button (required)
* Additional buttons if possible, the more that can be assigned the more compatibility. For example: D-PAD and {{:wiki:north.png?20&nolink}}, {{:wiki:south.png?20&nolink}}, {{:wiki:east.png?20&nolink}}, {{:wiki:west.png?20&nolink}} (FIXME could probably follow a guideline similar to :configure_a_controller)
{{ :emulators:wheel.png?direct&700 |}}

  • Create a file in /userdata/system/udev/rules.d/ called 99-wheels.rules (or any other name if you already have one) with the content below, replacing my wheel name by the actual wheel name, reported by the evtest command. Further more, you need to add the right rotation angle. If you have a direct drive model, you can skip the rotation angle value.
    SUBSYSTEM==”input”, ATTRS{name}==”my wheel name”, MODE=”0666″, ENV{ID_INPUT_JOYSTICK}=”1″, ENV{ID_INPUT_WHEEL}=”1″, ENV{WHEEL_ROTATION_ANGLE}=”270″
  • Reboot. Your wheel should work. Some wheels require tweaking. Please contact the Batocera team via Discord in case of any issue.
  • Don’t forget to send the two files /userdata/system/configs/EmulationStation/es_last_input.cfg and 99-wheels.rules to the Batocera team so that the wheel becomes pre-configured for everybody in the next Batocera release.
Wheel zones

{{:emulators:wheel_zones.png?400|}}

The wheel has three properties that can be adjusted (FIXME where?): rotation angle, midzone and deadzone.

Rotation angle

This will multiply the sent value by a factor to match the specified angle. This is the maximum rotation angle in degrees the wheel will respond to (in red on the picture). Most games would label this setting as “sensitivity”. If set to a value lower than the wheel’s physical limits, it allows you to more easily reach the maximum input before turning the wheel all the way. It helps to convert a 900° rotation wheel to a 180° rotation wheel for example. Some games like Mario Kart 64 intended to play with a joystick need to switch very quickly from full left to full right which can be difficult to do on a 900° wheel without changing this setting.

旋转角度设置

如果设置的值超过了方向盘的物理极限,虽然可以让你进行更精细的调节,但这也意味着你永远无法通过物理操作达到游戏里的最大输入值。

生活化类比:这就像是你给水壶装了一个刻度极细的量杯,虽然能看清每一滴水,但量杯的总容量比水壶还大,你把水倒干了也装不满这个量杯。

通常建议设置为 180°。示例图片中的数值大约为 225°


中间死区(Midzone)

当你不去碰方向盘时,它会停留在“中立位置(Neutral Position)”。理论上,这时候不应该给游戏发送任何转向信号。但由于传感器可能会出现物理偏离,导致盘子明明没动,游戏里却在自动打方向。

中间死区(Midzone)就是在中心位置划出一个极小的“忽略区”,只有当你转动超出这个范围时,游戏才会做出反应。

生活化类比:这就像是给家里的电灯开关留了一点点“虚位”,防止你只是轻轻碰一下外壳,灯就忽明忽暗。

通常建议设置为


反向死区(Reverse Deadzone)

在真实设备上,一些针对家用主机(如任天堂 64)开发的游戏,为了适配手柄,往往会在游戏内部自带一个死区。这意味着即使你转动了方向盘,只要幅度不够大,游戏依然会假装没看见。

由于方向盘通常比普通摇杆更精准,这种设计会导致操作起来非常迟钝:你明明已经转过了方向盘的中间死区,却还陷在游戏自带的死区里动弹不得。为了解决这个问题,我们可以利用反向死区(Reverse Deadzone):一旦操作离开中间死区,信号会立即“跳跃”到一个较高的数值,直接冲破游戏自带的死区限制。

生活化类比:这就像是你踩油门起步,为了克服车子本身的沉重感,你先猛踩一脚深油门,让车子立刻蹿出去,而不是慢悠悠地磨合。

通常建议设置为 45°


操作演示

在下方的动图中,你可以直观地看到设置后的效果:

  • 第一步(观察顶部): 这是真实的 270° 方向盘转动情况(从中心到最左,再到最右)。
  • 第二步(观察底部): 这是游戏内感应到的转向反馈。
  • 第三步(观察中间位置): 在中间死区内,发送给游戏的输入信号会被大幅削减。
  • 第四步(观察进出死区): 当转向离开或进入中间死区时,你会发现数值有一个明显的跳跃,这就是“反向死区”在起作用,确保游戏能立刻响应。
  • 第五步(观察极限位置): 你会发现真实方向盘在最后一段(从 180° 到 270°)的转动对游戏输入已经没有影响了。

【注意】如果你的操作感到迟钝,请重点检查反向死区的数值是否匹配游戏的特性。

配置参数示例

目前的配置设置为:180° 最大转向角度(Maximum Movement)、5° 中间死区(Midzone)以及 25° 反向死区(Reverse Deadzone)。

{{:emulators:wheel_zones.gif}}


常见问题排查(Troubleshooting)

故障一:因为力反馈(Force Feedback)导致方向盘卡在左侧或右侧不动了

如果你遇到了方向盘“不听使唤”死命往一边偏的情况,请尝试以下操作:

  • 第一步: 进入游戏内的设置菜单,进行一次设备校准。
  • 第二步: 在设置中关闭力反馈(Force Feedback)选项。
  • 第三步: 直接开始一场比赛,并在赛道上随便撞点什么东西,这有时能重置反馈逻辑。

故障二:启动游戏后,校准好的方向盘不在中心位置

生活化类比:这就像是你刚起床时脖子有点僵,需要左右扭动一下来“找回状态”。

  • 操作步骤: 先将方向盘向左打到底,然后再向右打到底。这样做可以强制模拟器更新并读取当前方向盘的最大活动范围。

故障三:在游戏菜单里方向盘好使,但一进赛道就没反应

  • 排查技巧: 永远先去游戏内的设置里瞧瞧。看看当前的控制设备是否被正确选为了“方向盘(Steering Wheel)”而非“手柄(Controller)”。
  • 【注意】 有些游戏需要手动切换输入设备。改好后记得保存到虚拟记忆卡,省得下次还得重新设置。

故障四:游戏完全不响应方向盘上的任何按键

  • 排查技巧: 不要以为所有操作都要靠按键。
  • 【提示】 部分模拟器默认用排挡杆(Shifters)来翻页,用脚踏板(Pedals)来确认或开始。还有些游戏规定菜单界面必须用手柄操作,方向盘仅限在正式比赛中使用。

关于游戏兼容性的补充说明

有些老游戏本身就不支持方向盘模式。针对这类游戏,你需要切换到手柄模式(Controller-mode)来玩。

【注意】由于方向盘支持功能目前仍在开发中,手柄模式的适配还不完善。如果没有经过手动配置,部分游戏可能暂时无法运行。


原文: Batocera方向盘控制器支持清单 • 翻译: DIY8 Bot

© 版权声明
评论 抢沙发

请登录后发表评论

    暂无评论内容