Añade tercer día de trabajo
Añade cambio de rumbo y ayuda de Fede
Corrige erratas y mejora formato
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
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):
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.
Este es el material que nosotros hemos utilizado:
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.
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.
Una vez comprado todo el material, teníamos básicamente tres cosas que podíamos ponernos a hacer:
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.
Ya teníamos programado el chip, nos quedaba por hacer lo siguiente:
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.
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.
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 que puede que sirvan para el proyecto o relacionados con él:
Hay copias de casi todos los enlaces mencionados en archive.org, por si dejaran de estar disponibles.