Mando de recreativa USB cuádruple con juego Simón integrado

Imagen

1 Introducción

1.1 Motivación

Gracias a los emuladores disponible hoy en día tuve la posibilidad de construir mi propia máquina recreativa. A pesar de estar construida con genuinos mandos de recreativa y un añejo monitor CRT no conseguía la misma emoción que jugando a las máquinas originales. En aquellas la muerte era catastrófica: si “morías” en la partida y querías continuar jugando debías desprenderte de una preciada moneda. Dado que con un emulador se puede simular la inserción de monedas con solo pulsar una tecla, a efectos prácticos se dispone de vidas infinitas y la emoción se pierde. Para solucionarlo idee un mando con un contador de créditos. El mando deshabilita los botones de inserción de monedas si no se dispone de créditos e integra un pequeño reto que habrá que resolver para conseguirlos.

1.2 El reto

Se trata del juego electrónico Simón creado por Ralph Baer y Howard J. Morrison en 1978. La siguiente descripción del mismo está extraida de la wikipedia:

Dispone de cuatro botones de colores luminosos, cada uno de un color: verde, rojo, azul y amarillo. El juego de forma aleatoria va iluminando los botones de colores, y a la vez emite un sonido propio de cada botón. Después de esperar, el usuario debe ir introduciendo la secuencia mostrada en el orden correcto, ayudándose de su memoria visual y sonora. Si lo consigue, éste responderá con una secuencia más larga, y así sucesivamente. Si falla, el usuario debe volver a empezar. Los distintos niveles de dificultad van aumentando la longitud máxima de la secuencia a repetir.


Al igual que en el juego Simón original hay distintos niveles de dificultad. El número de créditos concedidos al ganar la partida dependerá del nivel de dificultad elegido.

1.3 Características

  • Integra cuatro mandos genéricos usando un único conector USB.
  • No requiere drivers especiales.
  • Cada mando tiene asociados 6 botones genéricos, un botón de start y un botón de inserción de moneda retroiluminado.
  • Los botones de inserción de monedas permiten además usar un juego Simón integrado para conseguir créditos.
  • Los botones de inserción de moneda se deshabilitan si no se dispone de créditos.

2 Requisitos

2.1 Hardware

  • Cuatro mandos tipo recreativa y, por cada uno de ellos, seis botones genéricos y un botón de start
  • Cinco botones tipo recreativa retroiluminados de distindos colores (amarillo, azul, rojo, verde y blanco)
  • Un altavoz o zumbador pequeño
  • Al menos una resistencia de unos 1000 ohmios. Es posible que las luces de los botones retroiluminados requieran resistencias en serie adicionales.
  • 48 diodos Schottky
  • Placa de prototipado Teensy++ 2.0 (disponible aquí)
  • Cableado de interconexión

2.2 Firmware

El firmware ya compilado y puede descargarse aquí. El código fuente está disponible en github.

2.3 Software

Para programar la placa de prototipado será necesaria el programa teensy loader. Si además desea recompilar el firmware necesitará el compilador avr-gcc]avr-gcc así como la herramienta GNU Make.

Por supuesto, para poder disfrutar jugando con los mandos necesitará juegos y/o emuladores, por ejemplo el emulador de recreativa mame.

3 Montaje

3.1 Hardware

Los componentes deben conectarse de acuerdo a este esquemático. Los botones de inserción de monedas retroiluminados azul, amarillo, verde y rojo deberán conectarse respectivamente a las líneas etiquetadas con vgnd1, vgnd2, vgnd3 y vgnd4. El botón retroiluminado blanco aparece etiquetado como “central button” y tiene funciones especiales. Hay que tener en cuenta que los botones retroiluminados empleados en mi caso permitían conectar cada bombilla/led directamente a una tensión de 5 voltios como la generada por la placa de prototipado. En otro caso puede ser necesario poner resistencias en serie para limitar la intensidad que pasa por los led. Deberá comprobarlo en su hoja de características.

3.2 Firmware

3.2.1 Compilación

Este paso no es necesario a menos que desee modificar el código fuente. Desde una terminal/línea de comandos, sitúese en la carpeta/directorio donde se encuentre el código fuente y ejecute lo siguiente:

make clean

make


Esto generará un fichero con extensión .hex con el firmware compilado. Tras conectar la placa de prototipado podrá programarla siguiendo las instrucciones de la sección siguiente u, opcionalmente si ha descargado la versión del teensy loader para linea de comandos, programarla directamente ejecutando lo siguiente:

make program


Tras esto aparecerá un mensaje pidiendo que pulse el botón de la placa de prototipado. Hágalo y el firmware se escribirá.

3.2.2 Programación

Puede encontrar una descripción detallada de los siguientes pasos aquí.

  • Conecte la placa de prototipado a su computadora.
  • Ejecute la herramienta teensy loader.
  • Pulse el botón de la placa de prototipado.
  • Elija la opción "Open HEX File" del menú “File” y seleccione el fichero de extensión .hex con el firmware a programar.
  • Seleccione la opción "Program" del menú "Operations" o haga click sobre el botón “Program” de la barra de herramientas. Tras la escritura aparecerá el mensaje "Download Complete".
  • Seleccione la opción "Reboot" del menú "Operations" o haga click sobre el botón “Reboot” de la barra de herramientas.

3.3 Software

Al conectar el sistema a su computadora esta reconocerá un conjunto de mandos sin que sea necesario ningún driver especial. No obstante, si va a utilizarlo con un software de emulación de recreativa deberá configurar dicho software adecuadamente. En primer lugar deberá establecer los cuatro primeros interfaces detectados como los mandos de los jugadores 1, 2, 3 y 4. Además deberá establecer el último botón de cada uno de ellos como botón de inserción de monedas. La quinta interfaz se usa para interactuar con el emulador y no se corresponde en principio con ninguno de los mandos (véase la sección siguiente). Deberá configurar sus botones para tareas tales como pausar la emulación, resetear el sistema emulado, etc.

4 Uso

4.1 Interacción con interfaces de emulación

Dar órdenes a la interfaz del emulador (por ejemplo pausar o quitar la emulación) requiere establecer uno de los joysticks como controlador de la interfaz. Para ello, manteniendo pulsado el botón retroiluminado blanco, pulse el botón de inserción de crédito del mando que desee establecer como controlador de la interfaz. La luz de dicho botón se iluminará para indicar que dicho mando ya no funciona como controlador de juego. A partir de entonces sus botones tendrán asociados las funciones que haya configurado en el apartado anterior. Si quiere cambiar el mando de control de la interfaz repita el mismo proceso pulsando el botón de inserción de moneda de otro mando. También puede hacer que el mando de control de la interfaz vuelva a funcionar como mando de juego volviendo a pulsar su botón de inserción de moneda mientras se mantiene pulsado el botón retroiluminado blanco. Al hacerlo el botón de inserción de moneda se apagará.

4.2 Obtención de créditos

Obtener créditos requiere ganar partidas del juego Simón integrado. Para ello siga los siguientes pasos:
  • Pulse el botón retroiluminado blanco. Los cuatro botones de inserción de moneda se iluminarán.
  • Seleccione el nivel de dificultad de la partida de Simón pulsando uno de los botones retroiluminados de acuerdo a la siguiente tabla.
  • Repita las secuencias de pulsaciones que se le indiquen hasta que parpadee el botón blanco central. Esto indicará que ha ganado la partida. El botón blanco se mantendrá iluminado mientras disponga de créditos.

De forma alternativa, si se pulsa un botón de inserción de crédito cuando no hay créditos disponibles se iniciará un juego Simón en el nivel más facil.

Reconocimientos

El firmware está basado en proyecto Teensy Gamepad de Josh Kropf (josh@slashdev.ca), que a su vez está basado en el ejemplo de teclado para la placa de prototipado Teensy (Copyright (c) 2008 PJRC.COM, LLC).

La parte relativa al juego Simón ha sido posible gracias a los trabajos de ingeniería inversa realizados por Simon Inns.

Demostración
Podéis ver un video del sistema funcionando aquí.
0 respuestas