~josealberto4444/lector-cart-game-boy

Lector de cartuchos de Game Boy
bde98cf4 — josealberto4444 2 years ago
Añade tercer día de trabajo
a7fe16bd — josealberto4444 2 years ago
Añade cambio de rumbo y ayuda de Fede
ada4f00f — josealberto4444 2 years ago
Corrige erratas y mejora formato

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~josealberto4444/lector-cart-game-boy
read/write
git@git.sr.ht:~josealberto4444/lector-cart-game-boy

You can also use your local clone with git send-email.

Lector de cartuchos de Game Boy

En este proyecto, un amigo y yo intentaremos construir un conector para lectura (y escritura también, si son compatibles) de cartuchos de Game Boy.

Índice

Antecedentes

Para ello, nos basamos en el proyecto de un par de estudiantes de Polonia llamados Kraku y Chroost. Ahí se puede encontrar todo lo necesario para construir el conector (nosotros hemos construido la versión USB):

Licencia

Tal y como se puede ver en el manual, los únicos términos de uso que se especifican son los siguientes:

This project was created for educational purposes only
and is intended for your own Game Boy programming and development.
This project is free and any kind of commercial usage is prohibited.

con lo cual, nosotros nos vamos a construir nuestro propio conector y dejaremos aquí el diseño para que cualquiera se pueda construir el suyo, desaconsejando la venta y la compra de cualquier producto derivado de este.

Material necesario

Este es el material que nosotros hemos utilizado:

  • Material básico de electrónica:
    • Multímetro.
    • Placa de pruebas para poder montar circuitos rápidamente.
    • Pulsera anti electricidad estática para manipular los chips.
  • Piezas importantes:
    • Lector de cartuchos: compré una Game Boy (clásica, de las antiguas del todo porque era la recomendada para sacarle el lector) de segunda mano como rota (lo único que tenía era la conexión de las pilas oxidada, pero la limpié y funcionaba).
    • Destornillador específico para poder abrir la consola, de esos de estrella de 3 puntas.
    • Chip ATMEGA8515-16PU.
    • Chip FT232BL (usamos este en lugar del FT232BM porque son iguales, salvo que el BL es la versión sin plomo).
    • Programador de chips: nosotros lo pedimos prestado, porque es algo que solo se usa una vez.
  • Piezas genéricas:
    • LED verde.
    • LED rojo.
    • Oscilador de cristal de 6 MHz.
    • Conector USB-B hembra.
    • Resistencias de 27 Ω, 330 Ω, 470 Ω y 1,5 kΩ.
    • Condensadores de 27 pF, 33 nF, 100 nF y 100 µF.
    • Bobina de 10 µH.

Historia y evolución del proyecto

Comienzo y estancamiento

Inicialmente, empecé este proyecto porque allá por 2016 decidí volver a jugar a mis juegos de Game Boy (los que seguían funcionando, porque algunos se oxidaron extrañamente) y quería alguna manera de poder hacer copias de seguridad de las partidas guardadas. Por ejemplo, me daba mucha rabia perder mis Pokémon cada vez que dejaba de jugar por algún tiempo, porque había cartuchos a los que se les gastaba la pila demasiado rápido.

Así pues, empecé a buscar en internet y encontré un proyecto de unos estudiantes en los que se detallaba cómo se tenía que hacer esto. La verdad es que me pareció una cosa genial, así que me puse a ello. Sabía que iba a ser difícil, pero me motivé.

Empecé por comprar todos los materiales que me hacían falta (la parte fácil), preguntándole a amigos que hacían cosas de electrónica para saber dónde comprar y eso. Era la primera vez que me ponía a cacharrear de verdad con cosas de electrónica, así que mi experiencia era nula.

Mientras, contacté con unos conocidos que sabía que podían fabricarme la placa de circuito, y les pasé las máscaras que venían en el proyecto. Me dijeron que no tenían ningún problema en imprimírmela, pero que ellos ya no hacían nada con máscaras y ácido, sino que les hacía falta un archivo Gerber con ciertas características y si no, nada. Les pregunté si sabían de software libre con el que pudiera hacer esto y me dijeron que abandonara la idea de dedicarme a este tipo de cosas sin Windows y programas privativos.

Entonces, como afortunadamente llevaba (y sigo llevando) años sin tocar Windows y no pensaba volver a hacerlo bajo ningún concepto porque soy defensor del software libre, le pregunté a más gente.

Desafortunadamente, la gente a la que le pregunté me desanimó y me dijo que me olvidara, que era una placa bastante complicada y que comprara el conector ya hecho, pero ya me había gastado mucho dinero en todos los materiales (no tenía nada de electrónica y tuve que comprarme todo lo básico: multímetro, soldador, placa de pruebas, etc.) así que lo descarté. Me puse a buscar por mi cuenta, pero sin haber tenido experiencia ninguna en este tipo de proyectos, no encontré nada viable, así que acabé abandonándolo.

Reanudación

Tiempo después, concretamente en diciembre de 2017, salió un curso en línea para aprender sobre Arduino desde cero, lo cual me llamaba mucho la atención, así que le pregunté a un amigo que sabía que tenía interés por si él también se quería apuntar, y nos apuntamos juntos. Ya que estábamos, le dije que si íbamos calentando intentando meterle mano al proyecto abandonado de Game Boy, y me dijo que sí.

Gracias a la grandísima y maravillosa comunidad libre que hay en Granada, en todo ese tiempo yo había escuchado un montón de cosas sobre hardware libre y cacharreo, sobre todo porque se formó un grupo local sobre ello, y había conocido el nombre de programas relacionados con el tema (como KiCad), así que por lo menos teníamos algo para empezar, aunque había que aprender un montón de cosas. Estando yo solo, me daba pereza, pero en compañía las cosas se llevan mucho mejor.

Primer día de trabajo: 2018-02-18

Una vez comprado todo el material, teníamos básicamente tres cosas que podíamos ponernos a hacer:

  • Programar el chip
  • Diseñar la placa de circuito impreso
  • Desoldar el lector de cartuchos de la Game Boy antigua

El primer día nos dedicamos a programar el chip. Para ello se usa un programador, es decir, un aparato que se le conecta al chip y sirve para meterle información a este. Esto solo hay que hacerlo una vez. A partir de ahí, el chip se queda programado y ya siempre hará bien su trabajo.

Conectamos el chip al programador ayudándonos de los diagramas que hay en esta página y la hoja de especificaciones de nuestro chip. Determinamos cuál era la patilla de tierra y conectamos el resto de patillas de forma adecuada (las patillas que usamos fueron VCC, MISO, MOSI, SCK, RESET y GROUND), con cuidado de manipular el chip con la pulsera anti electricidad estática.

Usamos avrdude para programar el chip:

avrdude -c <programador> -p <chip> -U <tipo_memoria>:r|w|v:<archivo>[:formato]:

<programador> es el programador usado para programar el chip (en nuestro caso usbtiny)

<chip> es el chip que se programa (en nuestro caso m8515)

<tipo_memoria> - puede ser flash, eeprom, hfuse (high fuse), lfuse (low fuse), o efuse (extended fuse) (en nuestro caso flash, fuse para después)
r|w|v - puede ser r (leer), w (escribir), v (verificar) (en nuestro caso w)
<archivo> - el archivo de entrada (lectura o verificación) o archivo de salida (lectura)
[:formato] - opcional, el formato del archivo. Se puede dejar sin poner para escritura, pero para lectura se debe usar i para los Hex de Intel (el formato más utilizado)

El comando que hemos usado ha sido:

avrdude -p usbtiny -p m8515 -U flash:w:gbcf-w-2.1-usb.hex

donde el archivo gbcf-w-2.1-usb.hex es uno de los controladores.

Después hemos grabado los bytes fusible. Para determinar los valores los hemos obtenido de aquí y aquí y al compararlo con la hoja de especificaciones y el manual, todo coincidía (1F para el bajo y 9C para el alto). Los comandos que hemos usado han sido:

avrdude -p usbtiny -p m8515 -U lfuse:w:0x1F:m
avrdude -p usbtiny -p m8515 -U hfuse:w:0x9C:m

Estos bytes se encargan de que el chip conecte o desconecte ciertos elementos, y uno de los que se desconecta es el oscilador interno del chip, así que si no se graban los dos valores a la vez,

avrdude -p usbtiny -p m8515 -U lfuse:w:0x1F:m -U hfuse:w:0x9C:m

puede que el chip se apague (apareciendo un error de "firma desconocida" cuando se intenta hacer cualquier cosa con avrdude) y haya que conectarlo al oscilador de cristal para que se vuelva a encender y seguir programándolo (la parte que habría que montar es la que va en el circuito final desde las patas del chip a tierra pasando por el oscilador de cristal, es decir, el cristal y los dos condensadores de 27 pF). Una vez conectado al oscilador, se podrá seguir programando el chip sin problema.

Segundo día de trabajo: 2018-02-25

Ya teníamos programado el chip, nos quedaba por hacer lo siguiente:

  • Diseñar la placa de circuito impreso
  • Desoldar el lector de cartuchos de la Game Boy antigua

así que decidimos que lo mejor era ponernos a diseñar la placa para poder pedirla lo antes posible y dejar lo de desoldar el lector de cartuchos para cuando tengamos que esperar a que llegue. Empezamos por probar un par de programas, el famoso KiCad y uno que me dijo una amiga súper manitas que era el que ella usaba para diseñar placas y que era muy sencillo llamado Fritzing. La verdad es que Fritzing está genial, parece muy intuitivo de usar y muy muy útil para didáctica, pero sabiendo la comunidad que hay detrás de KiCad, y imaginándonos que probablemente nos íbamos a encontrar bibliotecas de piezas que nos sirvieran, nos decantamos por él.

Con lo cual, a partir de ahí nos dedicamos básicamente a aprender a usarlo, lo cual nos llevará un tiempo, pero afortunadamente tienen unos tutoriales bestiales en su página, hacen un trabajo estupendo.

Cambio de rumbo

Un día, allá por marzo de 2018, vino un amigo de visita al que le estuve comentando sobre el proyecto este. Me dijo que quizá lo más fácil sería un adaptador que sirviera para soldar el chip en él y que transformara las conexiones de superficie a las de agujero de toda la vida y separaditas. Después de buscar un poco y preguntar a gente, encontré lo que hacía falta, un adaptador de QFP a DIP. Lo compré y, con la ayuda de Fede conseguimos hacer una buena soldadura y conectar el chip al adaptador.

Tercer día de trabajo: 2018-06-23

Aunque nuestro plan inicial era utilizar una Gameboy "tocho" típica, nos hicimos con una Nintendo DS que no funcionaba, así que decidimos desoldar el lector de cartuchos de la Nintendo DS y aprovechar la otra para que siguiera siendo funcional. Tuvimos que abrir la NDS desatornillando unos cuantos tornillos: algunos necesitaban del tipico destornillador de cruz y otros necesitan de un destornillador especial que por lo visto le gusta utilizar a Nintendo que tiene solo tres hendiduras. Una vez desatornillada, sacamos la placa y tuvimos que cortarla con unos alicates para poder hacer la desoldadura. Como las patillas del lector no tienen la separación estándar de una placa de circuitos tuvimos que soldar un cable a cada patilla. Tener en cuenta que hay 32 patillas, la última (correspondiente a tierra) es ligeramente distinta y está metida hacia dentro, la primera correspondería a tierra.

Otros enlaces quizá de interés

Otros enlaces que puede que sirvan para el proyecto o relacionados con él:

Enlaces espejo

Hay copias de casi todos los enlaces mencionados en archive.org, por si dejaran de estar disponibles.