Project documentation

See GitHub repo for up to date information.

Problematic

There are various ways available to enjoy retro gaming. Those of us that prefer playing with the original systems face various challenges regarding the controllers. Controllers are the part that degrades the most and often with old console not all of your original controllers (if any) are in good working condition. If you have more than one console, it can quickly get expensive to buy NOS or replica controllers. Adapters for USB & Bluetooth exist on the market but are compatible with one or two systems only.

When it comes to 4+ retro multiplayer party, it’s hard to have enough working controller and it quickly becomes a cable mess if you end up playing more than one console. Most systems included only 2 ports and 3+ players games required a multitap accessories that are now often hard to find and expensive. Existing adapters solutions are all limited for single player use, one need to buy multiple adapters for each player.

Some early games got really awkward control style by today's standard and it is often not even possible to edit the buttons mapping. Even when possible, it's often too much trouble doing so while your friends are waiting to play. Controllers & adapters including configurability are not simple enough to be used in a party.

Mouse, trackball & keyboards are often rare and expensive to get accessories for most systems. And let not forget that some controller design got questionable ergonomic! Very few, if any, adaptive option existed back in the day for people with limited mobility.

Solution

Across all current and last generation console and PC accessories, we already own a large quantity of Bluetooth HID devices. BlueRetro is a Bluetooth controller adapter for retro video game consoles that enable to use all those devices. Any Bluetooth HID (BR/EDR/BLE) devices can be connected and used including gamepad, mouse, keyboard, trackball, etc. This includes the Xbox adaptive controller.

The BlueRetro core can be used with every retro gaming system supported. This has the benefits of not requiring to repair your Bluetooth controllers between different system uses. No reconfiguration is required since the adapter auto detect the system it is plug on. Only the cable adapter need switched between system.

Up to 7 controllers can be connected simultaneously on a single adapter for multiplayer games. This means the adapter also emulate the multitap accessory for most systems. Rumble accessories/function is supported. Keyboard, trackball & mouse console accessories are supported too.

The adapter is highly configurable via a Web Bluetooth (BLE) interface for mobile & desktop. Buttons and axes can be mapped to any buttons or axis direction (Ex. mapping axis direction to a button, buttons on an axis direction, inverting an axis direction, trigger to axis, buttons to trigger, etc.). Various scaling and response curve options is available for axes and trigger. Presets configuration for various games are available. Using presets, you can change every player mapping at once with a few clicks on your mobile phone.

A secondary objective is for the code to be easily used on other ESP32 project to add Bluetooth HID device input.

To help this the Bluetooth and HID decoding is all done within one core. The retro console interface on the second core can be easily removed and replaced by another application that need input. (ex. RC cars, robots, game consoles, emulators, etc.). While the project in itself is more toward gaming, the code could be used as a component of an adaptive tool by using it in conjunction with the Xbox adaptive controller. 

A hardware goal is to be as simple as possible. A unique module with a ESP32 and one connector (DB-25 so far) should be the core of the solution. Most system will only need a straight cable adapter or an adapter only including level shifter. More complex adapter will exist for systems with full parallel input, direct potentiometer interface, RS485 (JVS), RS232 or USB.

Care was taken to make the module as safe as possible by adding reverse currant, overvoltage & ESD protections.