A project to connect a genesis controller to USB via an Arduino board.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Yessiest d6daf1194d Initial commit 5 months ago
.gitignore Initial commit 5 months ago
LICENSE Initial commit 5 months ago
Makefile Initial commit 5 months ago
README.md Initial commit 5 months ago
controller_firmware.ino Initial commit 5 months ago
sega_pinout.txt Initial commit 5 months ago
uinput-sega-genesis.c Initial commit 5 months ago

README.md

genesis2pc - connect your genesis controller to a linux box

This small project was one of the silly ideas I once had about connecting one of the fake sega genesis controllers I had to a Raspberry Pi. Obviously there were easier ways to do this, but here we are.

How to run the project

You will need a sega genesis controller, an Arduino Nano/UNO chip, a linux kernel with the uinput module, and a way to flash the .ino file to the arduino (by whichever means you prefer)

The process is done in the following order:

  1. Connect the pins of the controllers port to the pins on the board, as specified in sega_pinout.txt
  2. Flash the controller_firmware.ino file to the board
  3. Compile the driver part (simply run make)
  4. Connect the arduino board to your PC via a usb cable
  5. Run the driver as root and specify the serial device for your arduino

There are 2 variations of the driver portion - driver and driver_kb. The difference is that driver attempts to simulate an actual joystick, while driver_kb maps to keyboard buttons.

Credits

Big thanks to tldp.org for the Serial Programming manual, thanks to the Arduino community for documenting the specifics of the communication between a genesis controller and the console, and to the people behind the uinput module for the linux kernel.

License

Copyright © 2022 Yessiest

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.