Arcade en casa - Placas JAMMA en tu televisor

Mandos de Saturn a USB
Por pacoarcade el 1 de Junio de 2020

Para muchos usuarios no hay nada como los controladores originales de las consolas de antaño, y muy especialmente el primer modelo de mando Saturn que salió en Japón, que es equivalente al segundo modelo que apareció en Europa.

Gracias a los controladores DaemonBite es posible adaptarlos a USB de forma que puedan ser usados tanto en Mister como en otros sistemas. Este código ha sido importado en el repositorio oficial de Mister; desconozco si incluye cambios con respecto al repositorio original.

Componentes necesarios

  • Arduino Pro Micro ATmega32u4 5V 16MHz
  • Programador USB ASP
  • Mando original de SEGA Saturn
  • Cable Micro USB
  • Cable 22 AWG
  • Soldador y estaño
  • Conector hembra para mando de SEGA Saturn

Aunque no he hecho la prueba, es posible (y recomendable) usar la versión con conector Mini USB en lugar de Micro USB para tener un conector más robusto.

Como compilar y grabar el programa

Lo primero es descargar los archivos de SaturnControllerUSB y guardarlos en un directorio con este nombre para a continuación compilarlos desde Arduino IDE seleccionando la placa Arduino Leonardo. Para guardarlo en formato .hex hay que exportar el archivo binario compilado. Puedes ahorrarte este paso descargando el archivo SaturnControllerUSB.ino.with_bootloader.leonardo.hex.

He intentado programar el Arduino Pro Micro desde el Arduino IDE instalando los controladores necesarios usando el programador USBASP sin éxito. La alternativa es programarlo mediante ICSP conectando los pines RST, CLK, MOSI, MISO, +5V y GND, mediante el programa avrdude desde OpenBSD u otros sistemas operativos que lo soporten:

$ doas avrdude -c usbasp -p m32u4 -U flash:w:SaturnControllerUSB.ino.with_bootloader.leonardo.hex

Una vez hecho esto hay que cerrar el puente J1 que se encuentra en una esquina del Arduino. Esto desactiva el regulador de voltaje del Arduino y funcionará a los 5 V del puerto USB.

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9587 (probably m32u4)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "SaturnControllerUSB.ino.with_bootloader.leonardo.hex"
avrdude: input file SaturnControllerUSB.ino.with_bootloader.leonardo.hex auto detected as Intel Hex
avrdude: writing flash (32730 bytes):

Writing | ################################################## | 100% 1.65s

avrdude: 32730 bytes of flash written
avrdude: verifying flash memory against SaturnControllerUSB.ino.with_bootloader.leonardo.hex:
avrdude: load data flash data from input file SaturnControllerUSB.ino.with_bootloader.leonardo.hex:
avrdude: input file SaturnControllerUSB.ino.with_bootloader.leonardo.hex auto detected as Intel Hex
avrdude: input file SaturnControllerUSB.ino.with_bootloader.leonardo.hex contains 32730 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.44s

avrdude: verifying ...
avrdude: 32730 bytes of flash verified

avrdude: safemode: Fuses OK (E:CB, H:D8, L:FF)

avrdude done.  Thank you.

Soldadura del conector hembra de SEGA Saturn a Arduino

Es de vital importancia tener en cuenta la orientación correcta de los pines, ya que estos son distintos si se miran desde el lado del conector del mando o desde el zócalo donde se conecta. Teniendo el receptáculo donde se conecta el mando de frente, el pin de la izquierda será el número 1 (VCC), y el de la derecha el número 9 (GND).

Los conectores se pueden obtener de cables alargadores para mandos de Sega Saturn. Unos que he probado y funcionan bien son los de HISPEEDIDO en este enlace. Estos encajan perfectamente y además quedan apretados al conectar el mando.

Hembra Saturn (P1) Arduino Pro Micro
1 VCC
2 2
3 3
4 15
5 14
6 4
7 TXO
8 RXI
9 GND
Hembra Saturn (P2) Arduino Pro Micro
1 VCC
2 A2
3 A3
4 15
5 14
6 6
7 A0
8 A1
9 GND

Para dos jugadores hacen falta dos Arduino Pro Micro, esto es, no se puede usar un único microcontrolador para ambos mandos.

Como configurar el mando en Mister

Si todo esto se ha realizado de forma correcta, el Arduino ya se podrá conectar a la Mister y ésta detectará la pulsación de cada uno de los botones del mando, con lo que ya sólo queda configurarlo como se explica en el Wiki de Mister. Grosso modo el proceso es el siguiente:

  1. Conectar un teclado USB y el mando
  2. Pulsar Esc y elegir Define joystick buttons
  3. Pulsar Espacio para DPAD y Tilt
  4. Pulsar las direcciones y botones en el mando
  5. Pulsar Espacio para las opciones Mouse
  6. Para Menu pulsa una combinación de dos botones como L+R
  7. Una vez aparece "Press: Menu: OK" pulsa Enter

No olvides activar la opción fast polling 1ms desde el menú de scripts de Mister para hacer que el lag sea mínimo.

También te puede interesar...

Contacto

Si has encontrado un error, tienes alguna duda o quieres comentarme lo que sea mándame un correo a webmaster EN arcadeencasa.com