viernes, 13 de diciembre de 2024

Super Opentendo. Super Nintendo de código abierto.



En esta página daré información sobre un proyecto que he hecho en mi tiempo libre, básicamente para aprender algunas habilidades que me resultarán útiles como profesor de electrónica / programación, y ponerlas en práctica en un campo que me encanta, como es el mundo retro. Primero un pequeño índice.

            2.3.2.1.- Retron de Hyperkin
            2.3.2.2.- Polymega
        2.4.1.- MiSTer FPGA
        2.4.2.- Super NT




1.-¿De qué va el proyecto?

El proyecto es básicamente un clon de la Super Nintendo o SNES, que admita tanto los cartuchos como los mandos originales. Nada más y nada menos.

¿Por qué?

La motivación para realizar esto me vino de aprender reparación y mantenimiento electrónico y dedicar algo de mi tiempo a reparar Super Nintendos. Me di cuenta de que sus chips son frágiles y que sus CPU'S y sus PPU's son irremplazables, lo que se hace es reparar una Super Nintendo tomando piezas de otras Super Nintendo, por lo que irremediablemente su número se va reduciendo, y llegará el día en que dejen de funcionar.


Si quieres aprender a reparar supernintendos, te recomiendo los videos de este canal, tiene un montón.





2.- Quiero jugar a la Super Nintendo ¿Qué alternativas tengo?

¿Quieres jugar a la Super Nintendo como en 1995? Si tienes más de 40 años y tuviste esta consola en tu infancia como yo, a lo mejor entiendes la cantidad de recuerdos que vas a evocar haciendo esto. Manos a la obra.


2.1.- Setup original:

Compra una Super Nintendo original en Wallapop o similar (40 o 50€), una tele de tubo (20€), unos mandos (20 €) y unos juegos (de 10€ en adelante, dependiendo del juego), cables audio vídeo y fuente de alimentación (otros 10€). Hay alternativas para los juegos, menos ortodoxas podríamos decir, pero no voy a hablar de eso aquí. En total estamos hablando de unos 100€ para jugar a 1 juego con un mando. A mi me merece la pena. Tengo unos cuantos setup de estos y unos cuantos juegos originales. (la foto a continuación no es mía, es un ejemplo)




Puedes prescindir de la tele CRT y usar una moderna con entrada de euroconector o de RCA, pero no es ni de lejos la experiencia original, los juegos estaban diseñador para verse en televisores CRT y cambia mucho la experiencia.

👍Pros: Es como tener una máquina del tiempo y volver a tu infancia.
👎Contras: Te va a costar dinero y sobre todo espacio, las CRT son unos mastodontes.


2.2- Clones chinos:

No los toques ni con un palo, simplemente son una copia a nivel de hardware del original, creado en la época. No tiene la calidad de la original y añade una serie de problemas. Se pueden encontrar en Alixpress a partir de 80€, no te pongo el enlace, porque no quiero que lo compres, son una basura.

👍Pros: Puedes usar tus juegos y mandos originales.
👎Contras: Todo lo demás, hay muchos, no lo compres.

2.3.- Emulación por software: 

Puedes jugar a juegos de Super Nintendo en cualquier cosa que sea capaz de correr linux o windows, incluso aparatos bastante antiguos o poco potentes. Los emuladores por software son programas que emulan el comportamiento de la CPU de la Super Nintendo y es capaz de hacer correr las Roms, que son unos archivos que han sido extraídos de las memorias ROM (de ahí su nombre) que contienen los juegos originales de la Super Nintendo. Es un mundo amplio esto de la emulación, veamos que opciones tenemos:

2.3.1.- DIY (Método Juan Palomo, yo me lo guiso y yo me lo como):

Pilla cualquier Pc que tengas a mano, descargas un emulador, y descargas ROMs (esto es técnicamente ilegal), y a jugar. Puedes mejorar mucho la experiencia si usas los mandos originales con un adaptador a USB, o con algún mando similar compatible como los de 8bitdo o sus copias chinas.


Los métodos más usados para hacerte tu propia consola de emulación barata es usar un TvBox o una Raspberry Pi. Aquí tienes unos tutoriales.

TvBox 👇


Raspberry Pi👇




👍Pros: Barato, fácil y rápido.
👎Contras: No puedes usar tus cartuchos originales, y eso es un gran problema, meter y sacar los cartuchos es la mitad de la experiencia.

2.3.2.- Alternativas comerciales por emulación.

    Hay algunas empresas que vende consolas compatibles con los juegos y mandos originales pero que funcionan emulando a la Super Nintendo por software con emuladores.
            

2.3.2.1.- Productos de Hyperkin.

Son consolas que admiten cartuchos y mandos originales pero que funcionan emulando por software la consola. Son legales, pero son un poco, como... ni fu ni fa.

                        Web: https://hyperkin.com/retro/retron-5.html
                        Review:  El vídeo de abajo.👇
    
👍Pros: Puedes usar cartuchos y mandos originales
👎Contras: La experiencia no es la misma que con una Super Nintendo. Configuraciones y sensaciones como las que describe el vídeo


2.3.2.2.- Polymega. 

Es otro sistema por emulación por software. Básicamente es un pc que corre los emuladores y el sistema operativo y unos módulos aparte que son los que leen los juegos y los mandos originales. La idea es buena, y esta bien conseguida, pero el precio es una locura 530€ la unidad base (el Pc) y 76€ el módulo de la Super Nintendo. Estamos hablando de 600€ para jugar a la Super Nintendo. No apto para todos los públicos. Pero quédate con la idea.


👍Pros: Puedes usar cartuchos y mandos originales. Buena experiencia. Buenos acabados
👎Contras: El precio es una locura.

2.3.2.3.- Super Nintendo Classic Mini:

La versión oficial de Nintendo para jugar a juegos de Super Nintendo. Es un sistema de emulación, estéticamente imita a la Super Nintendo original pero más pequeña y los mandos son casi idénticos a los originales. Es la oficial de Nintendo y tal, pero no es mejor que usar una Raspberry Pi o un TvBox, además solo tiene 21 juegos. Yo la veo más para tenerla en la estantería y recordar con nostalgia la autentica Super Nintendo. Además ya no se fabrican, en su momento costaba unos 100€ ahora si la quieres sin abrir, te vas por encima de 300€
El enlace a amazon: Enlace



Review: 👇

👍Pros: Oficial. Buen acabado. Preciosa.
👎Contras: No acepta cartuchos originales. Ya no se venden. Solo 21 juegos. 


2.4.- Emulación por FPGA.

La emulación por FPGA es otro mundo aparte dentro del mundo del retro. ¿Qué es esto del FPGA? Bueno te lo resumo, es un chip que se puede programar para replicar a otro chip. Lo que se puede hacer es clonar los chips de la Super Nintendo, la CPU y las PPU, dentro del chip FPGA lo que permitirá al chip comportarse EXACTAMENTE, como lo haría la Super Nintendo. ¿Y no es eso lo que hace la emulación por software? Sí, mas o menos, y ahí está la clave, en el mas o menos. Los que lo han probado dicen que es una pasada.

2.4.1.- MISTer FPGA.

Es un proyecto de la comunidad que coge una placa que monta un chip FPGA y hace que corra multitud de plataformas retro, con la fidelidad que proporciona el FPGA. Es una pasada. Pero aparte de la placa necesitas algunos componentes más para conectar mandos, etc.
Aquí tienes una web con precios: https://manuferhi.com/c/mister-fpga

Aquí una review: 👇


👍Pros: Fidelidad máxima a la hora de emular múltiples plataformas.
👎Contras: No acepta cartuchos originales. El precio. Siempre el cochino dinero.


2.4.2.- Super NT de la empresa Analog.

Creo que en este punto hemos llegado a la perfección en cuanto a imitar a la Super Nintendo.
Supe NT es una copia usando la tecnología FPGA de una Super Nintendo, pudiendo usar juegos y mandos originales, y añadiendo una capa más para reescalar la imagen y poder sacarla por HDMI. Además es bonita. Su precio de unos 200€ es cara pero no mas que otras cosas de las que hemos visto.
El problema es que la empresa Analog se caracteriza por hacer tiradas muy escasas y a dia de hoy está descatalogada y solo se puede comprar de segunda mano. Seguramente la encuentres hasta precintada, hay mucho listo que las compra solo para revender, del precio ya ni hablemos. La he visto a 700€ en Wallapop 😱.

👍Pros: Fidelidad máxima a la hora de emular Super Nintendo. Es bonita y no es cara.
👎Contras: Ya no las fabrican, su precio de reventa es caro.

3.- Mi proyecto.

Bueno, pues después de saber todo lo que hay disponible, me decidí a hacer mi propio Clon de la Super Nintendo. Quiero que cumpla los siguientes requisitos:
  1. Precio. Que sea lo más barata posible.
  2. Estética. Me encanta la Super NT. Quiero que se parezca lo máximo posible. La original es demasiado grande.
  3. Cartuchos y mandos. Que admita los cartuchos y los mandos originales.
  4. Código abierto. Voy a usar componentes y software al alcance de todo el mundo.
Vamos a elegir los componentes necesarios. 

3.1 Núcleo del sistema.

Lo primero que voy a hacer y muy a pesar es descartar la tecnología FPGA, primero por precio y segundo por falta de conocimientos. Así que voy a elegir el sistema más barato en el que puedo hacer correr un emulador de Super Nintendo, y es un TvBox en concreto un modelo X96 mini, a día de hoy está por unos 20€, aunque puede variar: 



Este sistema se puede modificar con instalando un emuelec. Tienes tutorial en el 2.3.1 de esta misma página. Usé el emuelec 3.9 pues los posteriores daban problemas con la salida de vídeo por RCA y es que es otro de puntos fuertes que para mi tiene este sistema, y es que tiene salida HDMI pero también por video compuesto pudiendo conectarla a un TV CRT (sublime).


El emuelec que uso en realidad es una versión compilada por mí para añadir un driver de arduino que no trae el kernel y es necesario para que lea los cartuchos como luego explicaremos. Todos los enlaces de descarga al final del artículo.


Ya tenemos un miniPC con una versión de linux modificada (emuelec) que lanza automaticamente el software Emulation Station, que es un frontend para navegar por las roms y lanzar los emuladores. Solo con esto ya es superior a muchas versiones comerciales y más caras. Pero queremos más.

3.2.- Mandos Originales.

Queremos usar mandos originales. El TVBox tiene entradas USB, así que necesito un adaptador de snes a USB. Existen soluciones comerciales, lo puedo comprar, pero hemos venido a jugar. Así que lo vamos a diseñar nosotros mismos. Bueno tampoco tanto, ya está inventado. Hay que usar un arduino micro, que es el que tiene funciones de USB. Usando la librería de arduino, Joystick.h hago mi código para leer dos mandos de Super Nintendo y convertirlo a USB.

Usando EasyEda diseño la PCB y la mando a fabricar a JLCPCB.

Este sería el resultado, aunque tienen un fallo en una pista que tuve que corregir luego.



Ya tenemos una cajita que emula juegos de la Super Nintendo y que lee mandos originales, nada especial, esto se puede hacer de muchas formas. La guinda del pastel es conseguir que lea los cartuchos.




3.3.- Leyendo los cartuchos de Super Nintendo.

Cuando pensé en hacer esto me parecía imposible ser capaz de aprender a hacer esto, aunque ya sabía que había un par de proyectos de código abierto que lo habían conseguido, a mi me sonaba a chino, pero solo fue cuestión de paciencia y cabezonería y por suerte, voy bien de las dos. 

Encontré dos proyectos que hacen esto, acceder para leer y escribir en el cartucho de la Super Nintendo.
El primero y más grande es el Sanni Cart Reader. Es una pasada de proyecto, muy grande, que lee todos los cartuchos retro, tanto para dumpear las ROMs como para guardar o grabar las partidas. Como todo lo de código abierto, los chinos lo han hecho y lo venden en Alixpress. Este proyecto no es lo que necesito pero en alguna parte contiene el código que necesitaría para hacer que mi consola leyera los cartuchos de Super Nintendo.

El otro proyecto mucho más sencillo, tenía justo lo que necesitaba un esquema y código "sencillos" para hacer solo lo que necesitaba, leer cartuchos de Super Nintendo. El proyecto es ESTE. Solo usa un arduino nano y nos desplazadores de registro (el día que encontré el proyecto no sabía lo que era eso).


Así que lo que hago es montar este último proyecto, entender, corregir y modificar el código para que haga lo que yo quiero. Volvemos al EasyEda y este es el resultado.




Tenemos un TVBox como CPU, un lector de mandos y un lector de cartuchos. Ahora solo necesitamos una carcasa para ponerlo todo junto.

3.4.- Carcasa.

Esta es una de las partes que me ha costado más a pesar de ser, en principio la más sencilla, de hecho todavía no está terminada. El caso es que quería crear una carcasa para imprimir en 3D, así que desempolvé mi viejo Blender y me puese manos a la obra, no he conseguido hacer la tapa de la ranura de los cartuchos y otros detalles que no me han quedado tan bien como me gustaría, pero ahí va.

Así queda con todo metido en la parte inferior de la carcasa.

Así queda con la parte de arriba, y sin postprocesado, es decir tal cual sale de la impresora.

Le damos un masillado, lijado, pintado....





4.- Resultado final:


Y así es como finalmente queda:


Y aquí una pequeña demostración de su funcionamiento básico. Aunque tiene más opciones.


 Este artículo ha sido explicando un poco la idea del proyecto. Haré otro más estilo tutorial, con los pasos que tendrías que dar si quieres hacerte tu propia consola y con todos los archivos necesarios.


Ficheros del proyecto: 
Gerber:

Iré subiendo el resto. La imagen de emuelec modificada, los scripts de linux para que funcione la consola y los scripts de python para que funcione el lector en windows.



3 comentarios:

  1. Hola buenas noches soy un gran fan tuyo desde hace muchos años y en este momento por fin tengo un un PC decente para hacer juegos y me preguntaba si no es mucha molestia un tutorial de armory 3d en español que valla al grano así como tú lo sabes hacer gracias perdona y disculpa

    ResponderEliminar
    Respuestas
    1. Ya no hago tutoriales de videojuegos. Además ese programa no lo conozco. Gracias por preguntar de todas formas. Un saludo.

      Eliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar