Proyecto MiSTer

MiSTer es un proyecto de implementación de Consolas clásicas, microordenadores y arcades utilizando una placa denominada Terasic DE10-Nano.

Se trata de un proyecto libre, esto es, tu puedes ver el código fuente de los cores de los sistemas que implementa, e incluso también son libres los esquemas de las placas accesorias que podemos conectar en los conectores GPIO de la FPGA DE10-Nano para dotarla de funcionalidades extra.

Verás que lo normal es llamar a la placa Terasic DE10-Nano igual que el proyecto que la integra, esto es, MiSTer.

Características técnicas de la placa Terasic DE10-Nano conocida como "MiSTer":

  • FPGA Altera Cyclone V SE con 110K celdas lógicas
  • CPU de doble núcleo ARM Cortex A9
  • Salida de video HDMI
  • Lector de tarjetas Micro-SD
  • Conector RJ-45 (red)
  • 1GB de memoria ram DDR3 disponible para la CPU ARM y el chip FPGA.
  • Conector de alimentación
  • Micro-USB otg.
  • Mini-USB para acceso por consola.
  • Multitud de pines GPIO para expansión.

El procesador ARM que contiene funciona con Linux, y este no participa en la implementación de los sistemas, sino que se encarga de las tareas auxiliares como: la interfaz de usuario, manejo de la tarjeta SD, manejo de la red y la gestión y control de los dispositivos que conectemos por USB.

Contenido

Si quisiera comprar una... ¿por donde empiezo?

Al igual que ocurre con la Raspberry Pi, puedes comprar la placa y luego por separado irle comprando accesorios, o existe la posibilidad de comprar packs con la placa y unos cuantos accesorios incluidos (al final del punto os pongo los links de los packs completos)

Vamos a suponer que quieres ir poco a poco: Lo primero que necesitas comprar es la placa Terasic DE10-Nano. La venden en webs como Mouser o Digikey:

Ahora mismo en Mouser sale por 147,23 € puesta en casa. Incluye el cargador, una tarjeta micro sd de 8gb, cable usb, y una pequeña carcasa de metraquilato.

¿Y ya está? No, necesitas un adaptador de clavija de enchufe (1 euro en los chinos) y un hub de micro-usb a usbs normales para conectarle teclados, ratones, joysticks y demás. (4 euros en los chinos) Con esto ya puedes jugar a varios sistemas haciendo uso del puerto hdmi y un teclado/joystick usb. Concretamente ya puedes jugar a los siguientes sistemas: Viejos Arcades (ni cps1 ni neogeo) - Atari 2600 - Sega Genesis/Mega Drive - Nintendo Game Boy Advance - TurboGrafx-16/PC Engine/CD/SuperGrafx - Vectrex - 486 PC - Apogee - Apple II+Aquarius - BBC Micro - ColecoVision - Commodore 16 - Commodore PET - Commodore - VIC_20 -Jupiter Ace - MultiComp - Sharp MZ - Specialist MX - TI 99/4A - Vector 06C - ZX81


Huy, pero hay faltan algunos de mis sistemas favoritos, ¿como puedo jugar a tooooodos? Entonces ya necesitas comprarle un modulo de 32 MB de SDRAM y pincharselo a los pines GPIO de expansión de tu MiSTer, ya que muchos sistemas no son compatibles con la memoría DDR que integra la MiSTer. El precio de este módulo de 32 megas ronda los 20 euros gastos de envío incluidos y se la puedes comprar a:

También es muy recomendable que, por precaución, te gastes un par de euros y compres un pequeño disipador de máximo 22mmx22mm y 10mm de altura. Ejemplos:

¿Donde puedo ver un listado de todos los cores a los que podré jugar con 32 Megas de SDRAM? Aquí: https://github.com/MiSTer-devel/Main_MiSTer/wiki, abajo en la columna de la derecha.


¿Qué diferencia hay entre comprarme un módulo de memoria SDRAM de 32 Megas a comprar un módulo de 128 Megas? A día de hoy (mayo 2020) la única diferencia es que 128 Megas te permitirá jugar a 28 juegos más (que son los que más tamaño ocupan) de NeoGeo. Su proceso de fabricación es más complicado (el módulo lleva dos chips de 64 megas y la velocidad que se obtiene es menor), por lo que asegurate bien que funciona correctamente dandole caña al core de MegaCD y a los juegos grandes de NeoGeo. Intenta evitar comprar los módulos SDRam de 64 megas, ya que no están soportadas oficialmente y pueden dar fallos aleatorios.


Opcion 1: Vale, ya tengo la MiSTer y la memoria sdram, y estoy jugando a todos los cores por hdmi, pero me gustaría jugarlos en un televisor de tubo (CRT) y no quiero gastarme mucho más dinero ni necesito nada más. ¿Cuál es la opción más barata? En ese caso te recomendaría el cable RGB-MiSTer, de aTg, el creador del cable RGB-Pi. Vale 30 euros y se lo puedes pedir en su web (en construcción) o a través de Telegram: https://t.me/RGB_MiSTer

Opcion 2: Vale, ya tengo la MiSTer y la memoria sdram, y estoy jugando a todos los cores por hdmi, pero me gustaría jugarlos en un televisor de tubo (CRT), y también por VGA, y tener salida de audio analogica/digital, jugar con mandos nativos y con 0 lag, etc...? En ese caso necesitas una tarjeta I/O Board que expande las posibilidades de tu MiSTer y aprovecha casi todos los pines GPIO de expansión, pinchándose encima de estos. Te pongo 3 ejemplos:

y además, para jugar en CRT necesitas este adaptador: https://www.antoniovillena.es/store/product/vga-scart-adapter/ (también está en modo cable)

y además, para jugar en CRT necesitas este cable: https://manuferhi.com/p/cable-rgb-scart-zx-uno-vga-2m-mist-sidi-and-mister

y además, para jugar en CRT necesitas este cable: https://ultimatemister.com/product/rgb-scart-cable/

Las 3 opciones, más o menos, traen lo mismo pero si te interesa jugar con un mando de megadrive de 6 botones a todos los cores entonces te recomiendo la opción de Antonio Villena, ya que tiene un puerto db9 que se conecta directo a los pines de la FPGA lo que te supone 0 lag absoluto (un mando por usb pasa antes por la gestión de Linux y te consumirá unos pocos milisegundos) Además, a través de su web, te vende los adaptadores de db9 al resto de conectores clásicos: NES, SNES, NEOGEO, MASTER SYSTEM/MEGADRIVE/ATARI, PCENGINE/TURBOGRAFX y en un futuro N64 y PSX.

Opcion 3: Bufff, que jaleo!! Mira, paso de andar comprando piececitas e ir montándolo todo, que si la mister, que si la memoria, que si el disipador.... a ver si me voy a cargar algo. ¡Quiero un pack "full-equipe" con todo ya montado y sin lios!

En ese caso te muestro tres mister ya montadas cada una con sus características y expansiones:

Aquí ya va en gustos. La más completa es la de Antonio, por el puerto db9 con lag 0 y posibilidad de mandos nativos, porque te incluye el adaptador a vga a SCART, y porque es 100% compatible con el adaptador JAMMA que vende para meterla en una máquina recreativa de forma directa.

¿Qué aporta MiSTer?

¿Qué diferencias hay entre la emulación de un sistema y las implementacion de un sistema en una fpga? Si la implementación de un core en fpga está bien hecha, y se dispone de los esquemáticos de los chips a replicar, siempre va a ser mejor el feeling y fidelidad que nos ofrezca un core fpga que un emulador. Los gráficos y colores son limpios, los sonidos llenos de matices, y las instrucciones se van a ejecutar en paralelo al ritmo de un pulso de reloj entre los chips implementados en la fpga, no secuencialmente como en un emulador. Para más información sobre el funcionamiento de las fpgas escucha el podcast de "Quemando el mando": https://www.ivoox.com/quemando-mando-programa-104-preservacion-de-audios-mp3_rf_46599483_1.html o este otro de NeoGeo Pocket España: https://www.ivoox.com/ngpe-podcast-2x05-audios-mp3_rf_51902312_1.html

¿FPGA? Una matriz de puertas lógicas programable o FPGA (field-programmable gate array), es un dispositivo que contiene bloques de lógica cuya interconexión y funcionalidad puede ser configurada en el momento, mediante un lenguaje de descripción especializado. La FPGA tiene celdas que se configuran con una función específica ya sea como con una función lógica tipo AND, OR, XOR, como un multiplexor, o como una memoria (FLIP-FLOP tipo D). La labor del programador es describir el hardware que tendrá la FPGA lógica pudiendo reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lógica o un sistema combinacional, hasta clonar sistemas complejos formados por uno o varios chips.

¿Cuál es la forma más fiel de jugar a los sistemas clásicos en MiSTer? Para asegurarte el 0 lag utiliza el puerto db9 para los mandos y un televisor de tubo (crt). Para más información general sobre MiSTer, y soporte DB9 únete en Telegram en el grupo de MiSTer en Español: (https://t.me/joinchat/DwDFfFF3d_4vK-glu8BKiA

¿Y la salida HDMI de MiSTer tiene lag? La MiSTer emite la señal por HDMI sin lag pero mientras que los crt muestran la imagen según les llega linea a linea, los lcd necesitan almacenar toda la imagen en un buffer antes de mostrarla Por lo tanto, cualquier monitor tft/lcd/oled/plasma/ips... siempre va a tener 1 frame de lag mínimo, no pueden competir con un crt, son tecnologias distintas.

¿Y los mandos USB tienen lag? Las pulsaciones en un mando USB pasan antes por el Linux que las gestiona en forma de interrupciones y luego se las pasa a la FPGA. En este proceso se pierden unos pocos milisegundos, dependiendo por ejemplo del mando/interfaz USB que utilices y del polling del Linux (En la sección de cacharreo de más abajo te explico como poner el polling al máximo). En cambio, con el puerto DB9 esto no ocurre, ya que va conectado directamente a los pines de la fpga y las pulsaciones se tratan igual que en el sistema original.

¿Qué me supone que mi mando/interfaz USB tenga, por ejemplo, 8 milisegundos de lag? Simplificándolo al máximo, si tenemos en cuenta que un frame son 16 milisegundos, y que al pulsar un botón en nuestro mando (durante esos 16 milisegundos) se espera una reacción en el siguiente frame, estadísticamente, un 50% de mis pulsaciones entrarán en el frame siguiente correctamente (las que pulse entre los milisegundos 1 y 8 del frame actual), y al otro 50% ya no entraran a tiempo. Por lo tanto 8 milisegundos de lag me suponen que 50% de mis pulsaciones tendrán 1 frame de lag, y un 50% de mis pulsaciones 0 lag.

Os dejo un link con los lag de varios mandos/interfaces usb: https://inputlag.science/controller/results. El mejor es el Brook Universal Fighting, que te garantiza que el 95% de tus pulsaciones tendrán 0 lag. El mejor calidad/precio es el Xinmotek XM-10 Dual con un 75% de tus pulsaciones sin lag.

Que supone 1 frame de lag:

  • Si Nintendo ideó que un gancho de Tyson en el Punch-Out de NES dejara al jugador 20 frames para esquivarlo, con un 1 frame de lag solo tendrás 19.
  • Esquivar o no a tiempo una bala en los juegos de naves
  • Encadenar o fallar una serie de combos en los juegos de lucha

Conclusión: El lag hace los juegos un poquito más difíciles, ya no estás jugando al juego original, es "otro juego". Además, el lag total es la suma del del lag de tu mando usb y el lag de tu monitor plano. Si no quieres nada de lag utiliza un crt y el puerto db9.

Bueno, ya está, tengo la Mister en casa, quiero empezar a jugar ya. ¿Que hago?

  • Primer Paso: Preparar una tarjeta microsd con las particiones necesarias. Puedes utilizar mismamente la tarjeta de 8GB que te trae la MiSTer de regalo. Para ello, mete la tarjeta microsd en tu ordenador con Windows y formatéala con la siguiente utilidad llamada SD-INSTALLER: https://github.com/MiSTer-devel/SD-Installer-Win64_MiSTer

(baja abajo del todo y descárgate la release más actual, descomprimela en tu escritorio mismamente y ejecútala)

  • Tercer Paso: Metes en la sd tus backups (roms) favoritas organizadas a tu gusto. Por ejemplo: creas una carpeta en la raiz de la sd que la llamas NES y dentro metes las backups (roms) de la consola NES comprimidas en zip o descomprimidas

Ya solo queda meter la SD en la MiSTer, encender, elegir tu core favorito dentro de la carpeta correspondiente, y una vez ejecutado el core del core elegir tu rom favorita (Open Rom) y a jugar.

Oye, he ejecutado el programa del segundo paso (MiSTer Updater script for PC) y me ha metido un montón de cores de diferentes sistemas, pero el core de CAPCOM CPS1 no está. ¿Por qué? Eso es porque es un core que está en fase beta y aún no ha salido la versión pública final. Si quieres acceder las versiones beta de cps1 deberás donar al autor (Jose Tejada) 3 dolares para descargarte las betas y además mostrarle tu apoyo para que siga desarrollando cores (por ejemplo cps2 o X68000). Para hacer la donación entra en su Patreon: https://www.patreon.com/topapate

Donaciones para los creadores de cores

¿Como puedo donar al resto de autores (además de José Tejada que hemos visto en el punto anterior) que realizan los cores presentes y futuros para MisTer?

¿Hasta dónde puede llegar una MiSTer?

¿Cuál sería el máximo core que se podría implementar en MiSTer? El tope es Nintendo 64, pero parece que la velocidad de la memoria de MiSTer se queda corta, ya veremos.......... De momento están experimentando conectandole la CPU de la N64 R4300 a una FPGA e implementando el resto de chips: https://twitter.com/AshEvans81/status/1246314752399347713?s=20

¿Y Saturn y 32X? Es muy probable. Incluso están experimentando con un addon que lleva dos procesadores SH2 en paralelo que se conectaría a los pines GPIO de expansión de la MiSTer y facilitaría mucho las cosas: https://twitter.com/ashevans81/status/1258051694711226369?s=12

¿Y Dreamcast y PS2? No.

Consejos / Trucos / Tutoriales para sacarle el máximo partido a tu MiSTer

En vez de meter todos los cores en la tarjeta microsd como explicaste arriba en el "Segundo paso"...¿como puedo meter solo unos pocos de mi interés?

La única norma que tienes que cumplir es que la carpeta/s que utilices para meter cores comience por una barra baja, como por ejemplo _Consolas. Los cores tienen extensión .rbf y te los puedes bajar buscando la carpeta releases del fork db9 (recomendado, ya que son los mismos cores del sitio oficial pero con el soporte para mandos nativos db9) o del sitio oficial. Instrucciones:

  1. Entras aquí: https://github.com/Miguel-T80c?tab=repositories
  2. Buscas en la lista de repositorio de cores, o escribes arriba el que te interese, por ejemplo SNES
  3. Pinchas en el repositorio para entrar en él y te vas a la carpeta "releases"
  4. Pincha sobre la release más actual y luego dale al botón "Download"

¿Puedo actualizar automáticamente todos los cores sin necesidad de sacar la tarjeta microsd de la MiSTer?

Si claro, basta con que guardes en tu tarjeta sd el siguiente script: https://raw.githubusercontent.com/theypsilon/Update_All_MiSTer/master/update_all.sh Luego enciende tu MiSTer, conéctala con el cable RJ45 (ya os explicaré como hacerlo por wifi), pulsa la tecla a la que hayas asignado "menú" en tu mando (o el tercer botón físico de MiSTer o F12 en tu teclado), baja hasta la opción "Scripts" y busca el script que acabas de guardar en la microsd y pulsa sobre él para ejecutarlo. Automáticamente se te actualizarán todos los cores, se te descargarán los nuevos cores, y también se actualizan los archivos *.mra (ahora explico que es eso). Si te da algún error puedes preguntar en el grupo de soporte de MiSTer en español: https://t.me/joinchat/DwDFfFF3d_4vK-glu8BKiA

¿Dónde guardo las roms de los arcades (mame)?

Por defecto, la MiSTer, busca las roms de los arcades en una carpeta que se llame MAME y la que se encuentre más proxima al directorio raiz. Para que la cosa no se lie, os recomiendo que tengais UNA ÚNICA carpeta llamada MAME y a ser posible en la raíz de vuestra sd (o dentro de la carpeta _Arcade) y que ahí guardeis toooodas las roms arcade que necesiteis de la última versión de mame (esas son las roms correctas). Además, lo normal es que tengais dentro de la carpeta _Arcade la carpeta cores.

Para ejecutar una rom de mame basta con ejecutar un archivo con extensión .mra. Estos archivo *.mra (por ejemplo arkanoid.mra) no son más que ficheros de texto con información sobre estructura de la rom adecuada a ejecutar.

¿Donde puedo toquetear para cambiar cosillas de la configuración de la MiSTer?

En la raiz de la tarjeta sd tienes un archivo llamado mister.ini que te permite cambiar configuraciones de tu MiSTer. Veamos algunas interesantes:

  • composite_sync=1 //Esto te permitirá activar la salida analógica (crt). Además te permite salida dual, esto es, un monitor por hdmi y, a la vez, una tele de tubo por scart/vga.
  • direct_video=1 //Esto te permite sacar 15khz por el hdmi. Con un adaptador de hdmi a vga, y un cable "vga to scart" podrás ver la MiSTer en un CRT a través del puerto HDMI y con lag 0.
  • video_mode=número de 0 a 11 //Podrás elegir la resolución y refresco de tu salida hdmi, e incluso puedes añadir resoluciones a tu gusto.
  • vsync_adjust=2 //Este modo te permitirá el modo de baja latencia (single buffer) por hdmi. Si tu monitor soporta esta opción, la MiSTer podrá obtener de él su lag más bajo posible (1 frame de lag sería lo más bajo posible, y recuerda poner en modo "game" o similar en tu tv o monitor hdmi)

¿Comó puedo obtener el lag más bajo posible que me permita mi mando usb?

Para ello debes configurar el polling del Linux de la MiSTer a 1000 (1 milisegundo) y, si el mando lo soporta, podrás sacarle el mínimo lag posible. Ejemplos de mandos que obtienen un lag bajísimo con esta opción activada: 1.iBuffalo Classic, 2.8bitdo SFC30 3.8bitdo M30 (Fuente: https://github.com/eniva/MisSTer_Guides/wiki/USB-Controllers-Performance-Ranking)

Al lio, para Overclock USB Controllers Polling Rate a 1 milisegundo basta con que vayas al directorio linux de tu microsd y crees un fichero llamado "u-boot.txt". Dentro de él escribe esta línea de texto y luego guardalo: v=loglevel=4 usbhid.jspoll=1 xpad.cpoll=1 Mete la microsd en la MiSTer, enciéndela y listo. Si tienes curiosidad para qué es cada cosa de esa línea entra aquí y lee: https://github.com/MiSTer-devel/Main_MiSTer/wiki/Lag-Explained

¿Como conecto la MiSTer por WIFI?

Para ello necesitarás uno de estos pinchos wifi compatibles: https://github.com/MiSTer-devel/Main_MiSTer/wiki/WiFi-setup Luego, como ahí se indica, realiza los siguientes pasos:

  1. Busca el archivo linux/_wpa_supplicant.conf en tu microsd y ábrelo para editarlo.
  2. Reemplaza put_your_SSID_here con el nombre de tu red WIFI y sustituye put_your_password_here con la contraseña de tu WIFI.
  3. Renombra _wpa_supplicant.conf a wpa_supplicant.conf
  4. Mete la microsd en la MiSTer y enciéndela. Pulsa la tecla a la que hayas asignado "menú" en tu mando (o el tercer botón físico de MiSTer o F12 en tu teclado) y espera un poquito a ver si aparece el icono del wifi y abajo la dirección IP asignada.

¿Puedo meterle archivos a la MiSTer sin necesidad de extraer la tarjeta?

Si, por ejemplo, a través del protocolo FTP o el protocolo Samba.

Por FTP: Para ello enciende la MiSTer, pulsa la tecla a la que hayas asignado "menú" en tu mando (o el tercer botón físico de MiSTer o F12 en tu teclado) y mira a ver cual es la dirección IP de tu MiSTer conectada por Wifi o cable. Vete a tu ordenador y abre un programa de conexión a FTP (como por ejemplo filezilla) y realiza una nueva conexión:

  • Servidor: Aquí pon la ip de tu MiSTer.
  • Usuario:root
  • Contraseña:1
  • Puerto: 21

Pulsa en conectar y te saldrá el arbol de directorios del Linux de la MiSTer. Para acceder a la tarjeta microSd navega vete a la carpeta media y dentro de esta a la carpeta fat.

Por Samba: Vete a la carpeta linux de tu microsd y borra la barra baja inicial en el nombre de archivo _samba.sh. Mete la microSd en tu MiSTer, enciendela, y pulsa la tecla a la que hayas asignado "menú" en tu mando (o el tercer botón físico de MiSTer o F12 en tu teclado) y asegurate de tener una dirección IP en tu MiSTer conectada por Wifi o cable. Vete a tu ordenador y abre el explorador de archivos y en la barra de exploración escribe \\mister. A continuación nos pedirá los credenciales:

  • Usuario:root
  • Contraseña:1

Aceptamos y ya estaremos navegando por la microSd de nuestra MiSTer.

Continuará..... --oskarzer0 03:08 19 mayo 2020 (CEST)