Sin embargo, mientras eso pasa, hay que divertirse. Aprovechando el tiempo libre he trabajado en varias cosas que había dejado pendientes o inconclusas. Entre ellas está el adaptador de controles de PlayStation al puerto USB. Aunque reitero que los controles de PlayStation no son de mi completo agrado, decidí trabajar en la interfaz debido a que ya había dedicado mucho tiempo en ella, tanto en codificación como en investigación y pruebas; por lo que sería un desperdicio no concluirla. He dado por concluida la interfaz, aunque en mis pruebas los controles inalámbricos no respondieron. Sin embargo, tanto el control Nubytech de Street Fighter II como los controles DualShock y DualShock 2 originales funcionaron sin ningún inconveniente. No dispongo de controles genéricos para probar, sin embargo supongo que deben funcionar bien, ya que por lo que he leído, los controles originales son más caprichosos (y exigentes) con los tiempos que los genéricos.
También estuve tratando de arreglar los detalles de desconexiones y errores de lectura que estaba arrojando la interfaz con el MapleBUS al utilizar el ATTINY2313. Si bien, las lecturas aún no son completamente confiables (Hay errores al leer el primer bit cerca del 5% de las veces) la interfaz ya es suficientemente fiable como para experimentar un poco con ella. Además decidí atacar la interfaz con este microcontrolador, debido a que en este caso no se depende de los factores de calibración que afectan al ATTINY25, así sería más confiable replicar el circuito y mantener su funcionalidad.
Pues bien, uniendo la interfaz mejorada del MapleBUS con la interfaz mejorada de controles de PlayStation se obtiene un adaptador nada despreciable. Además, como sobraban muchos pines y espacio en memoria, decidí unir también la interfaz del control de SEGA Saturn y la interfaz del control de Super Nintendo. Así pues, surgió el que considero el mejor de mis proyectos hasta la fecha, el adaptador de controles de PlayStation, SEGA Saturn y Super Nintendo a Dreamcast.
Entre las características del adaptador se tienen:
- Soporte para controles originales de PlayStation en modo digital o modo analógico.
- Soporte para controles convencionales de SEGA Saturn (ningún otro tipo de control es soportado).
- Soporte para controles convencionales de Super Nintendo (ningún otro tipo de control es soportado).
- No sufre desconexiones y soporta reconexión automática después de un reset.
- Soporta conexión Plug and Play.
El adaptador es visto por el Dreamcast como un control convencional, esto debido a que algunos juegos no funcionan (por ejemplo Tokyo Xtreme Racer 2) si el adaptador es dado de alta como un FightStick. Además, utilizando el control de PlayStation en modo analógico es posible jugar prácticamente a todos los juegos sin ningún inconveniente.
El adaptador tiene algunas carencias, como son:
- No soporta dispositivos especiales, como pistolas de luz.
- No soporta unidades de memoria (Visual Memory Units).
- No soporta vibración.
- No soporta controles inalámbricos de PlayStation (aún no sé el porque...).
Al emplear el adaptador se debe tener la precaución conectar SOLO UN CONTROL. No existe el riesgo de cortocircuitar los controles entre sí, pero si existe el riesgo de exigir mucha corriente a los pines del microcontrolador y que éste se pueda dañar.
En una de las características se menciona que el adaptador se puede reconectar después de un reset. Este es un detalle importante para todos los que utilicen respaldos para jugar, pues cuando el Dreamcast arranca un disco respaldo, aplica un soft reset que suele dar problemas en la sincronía del bus. Así, no es necesario reconectar el adaptador de forma manual cuando ocurre un soft reset, ya que el adaptador se reconecta de forma automática.
Para solventar la ausencia de soporte de unidades de memoria, se puede optar por conectar un control convencional de Dreamcast con su unidad de memoria en el segundo puerto de la consola. Si el juego en cuestión no soporta lectura de memorias desde otro control, se pueden intercalar el control convencional y el adaptador en los momentos de carga y guardado. Quizás eso sea molesto para muchos videojugadores, sobre todo de generaciones más recientes donde el guardado en los juegos ocurre en cada momento. Sin embargo en épocas un poco más arcaicas (década de 1990) se solía cargar sólo al empezar a jugar y se guardaba el avance al finalizar la sesión de juego. También hay muchos juegos que ni siquiera hacen uso de la memoria.
Pues, sin más preámbulo ni debraye, aquí está la liga donde pueden descargar el firmware, el diagrama y la configuración de fusibles del adaptador:
Adaptador de controles de PlayStation, SEGA Saturn y Super Nintendo a Dreamcast (MapleBUS)
La lista de compras para el adaptador es:
- Un microcontrolador ATTINY2313-20PU (encapsulado DIP).
- Un cristal de cuarzo de 16[MHz].
- Dos capacitores cerámicos de 33[pF](número 33).
- Un capacitor cerámico de 0.1[uF](número 104).
- Un capacitor electrolítico de 10[uF]de 6.3[V] o más.
- Tres resistencias de carbón de 1.5[kOhm] a 1/4 [W].
- Dos resistencias de carbón de 68[Ohm] a 1/4 [W].
- Una resistencia de carbón de 10[kOhm] a 1/4 [W].
- Base para circuito DIP de 20 pines.
- Placa fenólica.
- Alambres, terminales, chasis, conectores, etc.
Como se puede apreciar, la lista es corta y el adaptador resulta muy económico de ensamblar. Con respecto al microcontrolador, recomiendo el uso de la versión de 20[MHz] (ATTINY2313-20PU) debido a que se emplea una frecuencia de 16[MHz]. Sin embargo, en una ocasión confundí el microcontrolador y por equivocación conecté la versión de 10[MHz] y el adaptador funcionó, sin embargo la prueba duró poco y no fui capaz de verificar la durabilidad del adaptador con ese modelo. Así que si no pueden conseguir la versión de 20[MHz] pueden recurrir a la versión de 10[MHz] de manera temporal.
La advertencia de siempre, si deciden hacer este proyecto es bajo su propio riesgo. He probado exhaustivamente el adaptador y no me ha dado ningún problema, por lo que considero que cualquiera puede realizarlo sin inconvenientes.