Páginas

lunes, 8 de junio de 2020

Y LLEGÓ EL MiSTer, PARTE 1

En algún comentario de alguno de los artículos del blog alguien me preguntaba qué opinaba de MiSTer y el FPGA. En aquél momento, hace ya bastante tiempo, mi interés por este hardware era prácticamente nulo y no tenía intención de adquirirlo.

Ahora, tras la adquisición por parte de mi amigo Pep Alacant de un MiSTer y tras sus positivas impresiones, me animé finalmente a adquirir uno y tras trastearlo un poco, me resulta posible hablar de esta tecnología y mis experiencias con ella, que plasmaré en un par de artículos.


QUÉ ES FPGA

Muchos creen, entre los que me encuentro, que el FPGA es el futuro en cuanto a poder simular determinado hardware ya sea consolas, ordenadores o arcades que es en nuestro caso lo que más nos interesan, sin recurrir a la emulación. Requiere bastante trabajo detrás y comenzar desde cero cada vez que se quiere implementar algún hardware en el FPGA, ya que ello implica desgranar su funcionamiento para repricarlo y simularlo con el objetivo de que funcione de manera lo más exacta posible al original.

La principal ventaja del FPGA es que, como decíamos antes, no se emula sino que SE SIMULA la máquina en cuestión, lo que implica que en términos prácticos es como si estuvieras ejecutando el hardware real usando un hardware programable para que pueda comportarse de forma idéntica a él. En definitiva, se usa hardware para todo y no existe por tanto una capa de emulación intermedia. Así que, si se implementa correctamente, el FPGA se comporta como la máquina original en todos los aspectos y si se ha conseguido de manera exacta la experiencia final es indistinguible. Ahora bien, si la implementación tiene errores, éstos causarán algún tipo de fallo que se puede manifestar de diversas formas. Dado que existe una gran comunidad que desarrolla detrás, las mejoras y actualizaciones son constantes y los fallos siendo corregidos paulatinamente. Muchos ordenadores, consolas y arcades ya tienen una implementación prácticamente perfecta.

Eso no significa que la emulación sea una mala opción, y de hecho ha llegado también a niveles de perfección muy altos. El FPGA está quizás centrado en gente algo más sibarita que quiere una experiencia algo más allá, y que no quiere emular el sistema sino que busca poder usar ese ordenador, consola o arcade de forma idéntica al original en todos los sentidos a nivel de hardware. Ello también implica un sobrecoste. La inversión necesaria en un sistema basado en FPGA como el MiSTer es considerablemente mayor que otros hardwares basados en emulación como Raspberry Pi.

CÓMO FUNCIONA EL FPGA

Diferentes tipos de puertas lógicas
Toda la tecnología digital se basa en puertas lógicas, que pueden abrirse o cerrarse para conseguir diferentes resultados, como sumar o restar. Las puertas lógicas se combinan de diferente forma para conseguir que el chip realice una determinada función. 

La diferencia entre un hardware ya cerrado como una consola u ordenador, es que sus chips ya implementan sus puertas lógicas invariables para que éstos se comporten de manera muy específica. Pero en un FPGA, los chips son programables o mejor dicho, reconfigurables, permitiendo que se puedan comportar como otros chips copiando la configuración de sus puertas lógicas. Y así, se replica uno a uno todos los chips del hardware original hasta conseguir implementarlo por completo en el FPGA. Para ello se utilizan lenguajes de descripción de hardware como VHDL y Verilog.

El FGPA es algo que existe hace muchos años, se inventó en 1984, pero no ha sido hasta ahora que hemos podido disfrutar de FPGAs económicamente accesibles y suficientemente amplios como para albergar sistemas completos retro.


Han habido diferentes FPGAs hasta llegar a MiSTer, como ZX-Uno o MIST.  Y existen otras placas FPGA en el mercado. La diferencia entre unos y otros es, en definitiva, la cantidad de puertas lógicas disponibles para albergar sistemas y que se mide en una unidad llamada "celdas lógicas".

El ZX-uno tiene una cantidad limitada de ellas (9K celdas) que permite como mucho albergar sistemas como ZX-Spectrum y otros retroordenadores de 8 bits. MIST implementa un FPGA más amplio (25k celdas), lo que permite implementar sistemas más complejos, hasta llegar a MiSTer, el caso que nos ocupa, que implementa una cantidad realmente espectacular de puertas lógicas en su FPGA (110K celdas) permitiendo replicar sistemas de bastante complejidad, siendo ahora el FPGA más popular por la cantidad de sistemas que se han podido llegar a implementar y la gran cantidad de desarrollos que hay en proceso.

PARTES DEL MiSTer

El Míster es un desarrollo abierto y cualquier aficionado puede crear versiones derivadas con mejoras y otras implementaciones, lo que se llama "FORK".
Alexey Melnikov "Sorgelig" comenzó el proyecto MiSTer y en cierta forma coordina el desarrollo para la plataforma.

El MíSTer original es un conjunto de placas, por lo general dichas placas se pueden comprar por separado e irlas conectando si se tiene cierta maña. Se podría decir que un MiSTer con una funcionalidad aceptable debería estar constituido por 4 placas:

- Placa DE10-Nano es el corazón del sistema y la que alberga el FPGA. Fabricada por Terasic, su precio bajo se debe a que está subvencionada por empresas como Intel, Analog etc lo que permite disfrutar de una cantidad desmesurada de puertas lógicas a un precio asumible en comparación con otros FPGAs del mercado. Y de hecho, si intentas comprar el chip FPGA que implementa esta placa por separado su coste es mayor que el de la placa completa.

Placa DE10-Nano

Este precio comedido también se debe en parte al hecho de que la DE10-NANO está pensada para su uso por parte de estudiantes de ingeniería, con el objetivo de aprender y hacer simulaciones con esta placa y hacer pequeños programas de prueba, razón por la que también reciben el nombre de "placas entrenadoras".  Esta placa está compuesta por un SOC Cyclone formado por el FPGA y una CPU de tipo ARM que es la que ejecuta la pequeña implementación de Linux que facilita el uso del FPGA.
Esta placa incorpora la salida HDMI, el lector de tarjetas microSD principal y una salida Ethernet, como lo más destacable para su uso en MiSTer. Y evidentemente el conector de corriente.

- Placa I/O. Placa imprescindible para dar salida de video y audio analógicas al MiSTer, como la salida VGA (que podemos conectar a un monitor o a un CRT con un cable VGA--->Scart) y auriculares. También incorpora una salida de audio digital SPDIF. 

Placa I/O

También incorpora un lector de microSD secundario que apenas tiene uso, y un conector USERIO que tiene forma de un falso USB3.0. 
USERIO es un conector de propósito general. De momento sólo se utiliza para implementar mandos nativos pero podrían implementarse otras funcionalidades en el futuro. 
En esta placa también se encuentran tres botones para resetear el menú ("reset") resetear el MiSTer por completo ("user") y hacer aparecer el menú emergente ("OSD").
En este diseño estándar de MiSTer la placa IO incorpora el ventilador de refrigeración.

- Placa USB HUB. Necesaria para conectar por USB mandos, teclados y ratones. También pendrives, discos duros e incluso adaptadores wifi.

Placa USB HUB

- Placa SDRAM. De diferentes tamaños de 32 hasta 128 mb, esta memoria es imprescindible para muchos de los núcleos o cores que se usen, como el de Neo Geo. Algunos no necesitan esta memoria adicional, pero si queremos un MiSTer plenamente funcional donde se pueda ejecutar todo, esta memoria es necesaria. Básicamente es donde se instala la RAM de determinados cores y las ROMS de los juegos de los sistemas basados en cartuchos, como Mega Drive, Super Nes, Neo Geo, etc.

Placa SDRAM de 128mb

Por lo general con 32 mb funciona prácticamente todo, pero si queremos ejecutar todos los juegos de Neo Geo incluyendo los que más ocupan, no cabrán en 32 mb. Lo mejor es adquirir la versión de 128 mb para asegurarse de que nada se queda corto y que en el futuro tampoco tendremos problemas, aunque ello implique una mayor inversión. La de 64 megas es poco recomendable por dar problemas.

Si queremos utilizar mandos nativos como el Old Style de Neo Geo o un pad de Mega Drive, por poner dos ejemplos, se necesitan dos placas más a añadir al MiSTer oficial:

- Una placa SNAC conectada al conector USERIO (falso USB3.0) de la placa IO. La placa SNAC que se conecta a Userio sirve para normalizar niveles de voltaje. La MiSTer funciona s 3,3V y los mandos a 5V por lo que no funcionarían. Esta placa intermedia, proporciona como salida otro conector USERIO falso USB3.0 con los voltajes normalizados.

- Un adaptador de USERIO a mando nativo. El  USERIO que entrega la placa SNAC con los voltajes correctos necesita un adaptador para ser convertido al pinout del mando que nos interesa usar.


Placa SNAC y dos adaptadores para mandos

Por tanto, utilizar mandos nativos es algo aparatoso con un MiSTer oficial, por lo que en caso de tener claro que queremos usar esos mandos lo mejor es buscar un folk, es decir, un desarrollo alternativo que incorpore, por ejemplo, un conector DB9 real directamente donde conectar un mando de Mega Drive. El DB9 puede ser reconvertido a su vez a todo tipo de mandos con otros adaptadores. Esta es la solución planteada por el MiSTer de Antonio Villena que trataremos en la parte 2 de este artículo.

CARCASAS

Carcasa para MiSTer
Es posible dejar el Mister al aire, pero también podemos encapsularlo en una carcasa, lo cual resulta más estético y de paso protegemos las placas. Pueden ser opacas o transparentes. Una web recomendable para adquirirlas es la de Ricardo https://ultimatemister.com/.


ESTRUCTURA DE CARPETAS DE LA SD, CORES Y ROMS

La MiSTer utiliza como almacenamiento tarjetas microSD que se introducen en el lector de la placa DE10-NANO. Es imprescindible un PC donde poder trabajar con la microSD ya que podríamos necesitar en más de una ocasión editar el contenido.

El tamaño de la tarjeta es libre, cuanto más capacidad tenga más información nos cabrá, pero con una de 128 gb suele ser más que suficiente e incluso llegar a sobrar espacio, a menos claro está de que tengamos la intención de introducir los Romsets de absolutamente todo, en cuyo caso incluso una de 512 gb puede resultar insuficiente. Existe la posibilidad de utilizar también discos duros USB y pendrives por lo que no hay límites. 

Mister necesita un pequeño sistema Linux para funcionar. Es el que permite el uso de los menús emergentes (OSD) y que, en definitiva, ejecuta los diferentes sistemas o cores. Pero esto implica que la tarjeta SD debe tener una estructura mínima de funcionamiento, no es un mero receptáculo de ROMS sin orden alguno. La estructura de ficheros y lo que debe contener debe ser reconocible por el MiSTer por lo que no puede grabarse contenido de cualquier forma. Y de hecho, si el MiSTer no detecta una microSD válida ni siquiera arrancará.

Para ello lo mejor es empezar por descargar la utilidad que formatea y crea la estructura de archivos básica para funcionar en la microSD. Básicamente son los archivos "Mister" y "Menu.rbf" que incorporan el Linux minimo para funcionar y el menú emergente del sistema. Podéis encontrar esta utilidad en ESTE ENLACE, descargad la versión más reciente. Estas versiones son para 64 bits.

Estructura de carpetas oficial
creadas con un script (explicado más abajo)
A partir de aquí no existe un orden concreto para organizar los cores y las roms en carpetas en la microSD. Pero es MUY recomendable ceñirse a la estructura de carpetas oficial para evitar complicarnos innecesariamente y para tener todo ordenado. Cuando actualizamos el contenido usando un script, la mayoría de ellos se basan en dicha estructura para grabar los archivos. Y los cores, buscarán sus roms por defecto en las carpetas creadas con esta estructura. Y de igual forma, las carpetas precedidas por "_" son las que se muestran nada más encender el MisTEr y donde se encuentran los cores, resultando cómodos de encontrar. Para crear esta estructura de carpetas lo más efectivo es ejecutar un Script, del que hablo más abajo.

No deben confundirse por tanto los cores con las ROMS.

El core o núcleo es el pequeño programa que integra la descripción de hardware y que al ejecutarlo con el MiSTer hace que el FPGA se comporte como dicho hardware. Estos cores se introducen en las carpetas "_Arcade" "_Console" "Computer" y "_Other" dependiendo del tipo de núcleo del que se trate. Pero NO incorporan ROMS, éstas deben colocarse en una carpeta a parte a la que podremos acceder desde el menú emergente del core para hacerlas funcionar.

Por lo general si respetamos la distribución de carpetas oficial, las ROMS se introducen en GAMES/XXX  donde XXX es la carpeta con el nombre del sistema al que pertenecen. Por ejemplo "NeoGeo" , "Genesis"...etc

Los arcades necesitan un core para cada placa cuando no comparten hardware con otras. Por ejemplo, la placa de Donkey Kong viene implementada como un core individual pero al cargarlo, dicho core busca las roms de la placa, que deben estar por defecto en la carpeta GAMES/MAME en formato zip. Por esta razón comentaba antes que lo mejor es respetar la estructura oficial de carpetas para MiSTer para evitar potenciales problemas. Si hemos guardado las ROMS de estas placas en otra ubicación, el core podría no encontrarlas en primera instancia y no cargar el juego.

Ejemplos de
cores
Cuando una placa arcade comparta diferentes ROMS, tendremos la posibilidad de cargarlas desde el menú emergente, como ocurre con el core CPS1 de Jotego que tiene diferentes juegos.

De igual forma, el resto de cores como el de Mega Drive , Neo Geo o PCENGINE por ejemplo, implican cargar el core y posteriormente ejecutar la ROM desde la carpeta correspondiente. Y así sucesivamente para todos los sistemas. Si respetamos la estructura de archivos nos aparecerán las ROMS listadas directamente en vez de tener que buscarlas en cualquier otra ubicación, lo cual puede resultar molesto.  

Los núcleos se puede descargar en Github, concretamente EN ESTE ENLACE. En el menú de la derecha podréis ver todos los cores para descarga. Los cores se presentan en archivos de extensión RBF. En Github te descargas un ZIP que al descomprimir tiene bastante contenido, debe tenerse en cuenta que los cores corresponden a los archivos RBF exclusivamente y pueden incluirse diferentes revisiones.

Las ROMS lógicamente deben obtenerse a parte y no están publicadas libremente porque tienen derechos de autor, pero se pueden encontrar. Valga decir que no todos los romsets son válidos ni todos los formatos de archivo. Por ejemplo, el romset ideal de Neo Geo es el mismo usado por el NeoSD de esta consola y por tanto podrían no funcionar las versiones de MAME o FinalBurn. De igual forma, algunos formatos de imágenes de disco no son reconocidos por los cores: el core de turbografx no puede usar imágenes en fomato IMG, solo BIN CUE (al menos por ahora).

Mencionar que si compráis un Mister montado algunos ya incorporan una tarjeta SD con gran cantidad de contenido, aun así es importante familiarizarse con al estructura de carpetas para poder añadir o eliminar ficheros. De igual forma, otra opción si no queremos realizar todo el proceso es realizar una copia directa de todo el contenido de otra microSD ya creada previamente por otro usuario.

CONFIGURACIÓN DE MANDOS

En MiSTer el uso de un teclado USB es imprescindible, porque algunas acciones solo se pueden realizar con él. Sin ir más lejos, aunque conectes un mando USB y sea reconocido, nunca se podrá utilizar para moverte por los menús ni jugar hasta que no sea configurado la primera vez, y para ello debemos acceder a la opción "DEFINE JOYSTICK BUTTONS" conectando un teclado USB tras lo cual pulsamos F12 y accedemos al menú del sistema. Nos podemos desplazar con las flechas y confirmar con Intro.


Una vez configurado podremos usar el mando para jugar y movernos por los menús. Si queremos hacer lo mismo, pero con teclado, es posible remapearlo con la opción "REMAP KEYBOARD".

SCRIPTS

Un script no deja de ser más que un fichero que crea un proceso por lotes, es decir, un conjunto de acciones de forma automática. Hay muchos tipos de scripts, pero uno de los más importantes es aquél que actualiza los cores (o los descarga y graba la primera vez) de forma automática y CREA LA ESTRUCTURA DE CARPETAS OFICIAL o por lo menos la que recomendaría para la tarjeta SD de la que he hablado antes.

Los scripts se presentan como archivos con extensión SH. Si comenzamos desde cero, lo más efectivo es que una vez hemos creado la estructura básica con la utilidad de creación de la microSD es que ejecutemos inmediatamente un script con el MiSTer conectado a internet a través de la conexión Ethernet, para ahorrarnos trabajo y no tener, por ejemplo, que crear las carpetas una por una a mano ni tener que bajar manualmente los cores, lo cual es tedioso. 

Uno de estos scripts que os puede resultar útil al comenzar es el de Theypsilon al que podéis acceder en ESTE ENLACE Para descargarlo basta con pulsar el botón "RAW", lo que abrirá una versión editable, sin tocar nada pulsamos el botón derecho del ratón y clickamos en "guardar como". Debemos guardarlo en la microSD, puede ir en el directorio raíz, pero lo recomendable es guardarlo en una carpeta que llamaremos "Scripts" y que podemos crear previamente.



Para ejecutar el script simplemente debemos acceder a esta opción desde el menú de MiSTer. Después de decir que sí en la advertencia que aparece, debemos seleccionar el fichero del script y ejecutarlo, tras lo cual comenzará el proceso de creación de carpetas y grabación de cores e incluso Roms. Posteriormente podemos quitar o añadir cores, pero ya tenemos una base con la que trabajar.

MENÚS DE CORES

Una vez hemos ejecutado un core, podemos acceder a su menú emergente pulsando F12 en un teclado o desde el mando (o pulsando el botón OSD del MísTER si está disponible).
Cada core tiene sus propias opciones, por lo que es imposible describirlos todos aquí. El menú permite cargar roms, aplicar filtros y scanlines (en modo HDMI), acceder a Dip Switches en los arcades, etc.
Tendréis que examinar las opciones y probarlas ya que son específicas para cada core y las características de cada hardware que se está ejecutando.

DESARROLLO DE CORES

Existe una gran comunidad apoyando a MiSTer. Gracias a programadores como Furrtek podemos disfrutar del core de Neo Geo, que roza la perfección. Otros desarrolladores a mencionar es Mr X, que en el momento de escribir estas líneas está enfrascado en el core de System 16 de SEGA.
Sorgelig comenzó el proyecto MiSTer pero también desarrolla cores y mejora el sistema.

Y por supuesto no podemos dejar de mencionar a nuestro patriota José Tejada "Jotego", creador de varios cores arcade entre ellos el de CPS de Capcom y del cual es muy recomendable hacerse Patreon.
Podeis apoyar a Jotego AQUÍ


DOY LAS GRACIAS A ANTONIO VILLENA POR SU INESTIMABLE AYUDA PARA LA CREACIÓN DE ESTE ARTÍCULO

5 comentarios:

Unknown dijo...

Buenas Manu,

Felicitarte por el artículo y el detalle del funcionamiento de MiSTer que, como habrás escuchado por ahí, es el futuro del pasado.

Creo que esto de las FPGA para gaming va a seguir creciendo y el deseo que puedan ir desarrollando aún más cores como el de PlayStation 1 que parece ser posible.

Te recomiendo que le eches un ojo a todo el desarrollo del core TurboGrafx 16/CD, consola y catálogo de títulos para unos pocos en los 90s, donde hay joyas por descubrir y en donde MiSTer se luce con su vídeo y sonido espectacular de la época.

Dejo el contacto por cualquier consulta o comunidad hispana que se arme alrededor de MiSTer.

Un saludo desde Argentina!

Anónimo dijo...

Hola Manu,

Fui yo el que te preguntó sobre qué opinas de las FPGA :D Me alegro que te la hayas comprado al final.
Veo que a Pep lo conoce mucha gente, también es colega mío y yo he sido un poco el culpable de ir picándole poco a poco hasta que finalmente se la ha comprado.
Tengo que quedar con él para cenar, desde el confinamiento que no lo veo :D

Sobre la gente que programa cores arcade creo que tambíen hay que resaltar al australiano Josh Bassett, creador de los cores Rygar, Silkworm y Gemini Wing. Recientemente ha anunciado que en cuanto haga público el core del Silkworm y Gemini Wing se liará con placas de la primera generación de Cave. Una fantástica noticia sin duda para los que nos gusta esa compañía.

Un saludo Manu.

Manuel P. Almuedo dijo...

Hola gracias por el comentario.
Pues si Pep es muy conocido en el mundillo. De hecho mañana tenemos quedada para que nos pase la genial microSD de 128 gigas llena de contenido para MiSTer que nos ha hecho. Si algún día quieres que nos conozcamos basta con que le preguntes a Pep por mi contacto. Un saludo y gracias por tu apunte sobre Josh Basset, no era mi idea listar todos los desarrolladores de cores sino poner algún ejemplo destacable pero se agradece. Es ilusionante que se vaya a poner con los de Cave porque alguien comenzó como proyecto de final de estudios y no lo acabó convirtiendo en un core.

Anónimo dijo...

Todo esto de los mini ordenadores PC comoel Black Berri Pi, y similares, para jugar a juegos antigüos de 16 - 64 bits, no me atrae. Prefiriendo más maquinas modernas, para videojuegos actuales, como Ori and the Blind Forest (Mon Studio), o Granblue Fantasy Vs. (Arc System Work)

Aunque hace poco estaba interesado en comprarme una GPD Win 2 Max, que tiene una pantalla incorporada, de 8" y mando dcontrol, como una consola portátil. Pero ante la dificultad de comprarla en una tienda física donde vivo,el problema de mandar dinero por correo (Hay que desplazarse al centro de la ciudad dondeestá la oficina de correos central,a rellenar un impreso, y a pagar una tasa por llevar dinero en metálico al destino); me a hechado para atras. También estuve muy interesado, a principios del año en el concept UFO, de Alienware; pero alser sólo un prototipo, y no tener una fecha para su comercialización,mea dejado a dos velas, y con los dientes largos.

Al final me decantaré ppor un convertible 2 en 1, que lleve un core i5 de intel, queincorpore la tarjeta dedicada Xe, de 11º generación, que saldráa a finales de este año 2020,(va con retraso) y un mando willcat o junglecat de Razer, para acoplarlo alos lados de la pantalla de 13" del tablet, y jugar desde la cama, como una videoconsola portátil, con una buena pantalla.

Andrés Jaña dijo...

hola, adquirí una MiSTfpga hace unos días y aunque estoy muy perdido, igualmente estoy ya jugando con algunos cores, por ahora no tengo la IO, pero con la tarjeta principal, los usb y la memoria de 128 ha sido todo maravilloso.

la idea que un mortal como yo, no especialista en estos cacharros tenía, es prácticamente "las fpga son un tema complejo, solo para usuarios especialistas y que se comparten información en grupos cerrados casi sectarios, con secretos que no solo no conoceremos si no que aunque los supiéramos, jamás los entenderíamos".

así que gracias por el artículo, la info que había encontrado hasta ahora sobre MiSTer (aunque está organizada en github) carece de estos detalles que agregas sobre las personas e historia (sin mencionar que son en otro idioma ).
Yo estoy bastante aislado y no sé donde preguntar u obtener más información que me lleve paso a paso a sacarle provecho a mi MiSTer sin caer en exceso de detalles técnicos que aún no comprendo(espero algun dia comprender algo),
por ahora pensé que solo me quedaba ir core por core peleando con las dificultades sin a veces tener mucha conciencia de lo que hago.

En tus comentarios mencionas una tarjeta de 128 SD, ¿esa imagen será posible compartirla (o que yo tenga acceso de alguna forma)? o es solo contenido para programadores expertos de fpga y que solo me confundiría más aún de lo que estoy...

y eso..
muchísimas gracias, tus artículos de MiSTer me están dando una perspectiva perfecta de donde estoy metido ahora, yo podría simplemente comprar un i5, i9 con tarjeta x etc etc... y no "complicar" todo, pero la verdad, es que jugar hasta "spacewar" con un funcionamiento real, idéntico al original, con todo el peso de la historia que lleva consigo... pues, no tiene precio, eso solo un "retro" como yo lo valora y no requiere mayor explicación.