FAQ sobre el diseño y características de M5

He decidido incluir este post que debería aclarar algunas dudas surgidas en diferentes foros como consecuencia de la primera aparición pública del prototipo del M5 y la avalancha de mensajes recibidos desde los distintos grupos en redes sociales. Este post podría ser ampliado o actualizado posteriormente incluyendo otras dudas que pudieran surgir.

¿Cómo nace M5?

Como ya he comentado en diferentes ocasiones M5 es un diseño o re-implementación de Amiga en una FPGA. El M5 nace casi por casualidad ya que no estaba previsto que se convirtiera en un producto terminado y, ni mucho menos, salir a la venta. El M5 inicialmente era un conjunto sin forma de diferentes circuitos electrónicos que me estaban ayudando con un diseño mucho más ambicioso de mi interpretación de lo que debería ser un sistema para juego más o menos avanzado. Alguien en un foro vio las fotos y apuntó la posibilidad de que pudiera convertirse en algo más "concreto". Así nació M5.

¿Qué hay en el interior del M5?

Como todo dispositivo electrónico de estas características puede distinguirse una parte hardware y en su interior un software o firmware que hace que se comporte como su diseñador desea. Desde el punto de vista de hardware es bastante concreto y puedes ver sus características aquí. Además incluye una caja estándar miniITX, la fuente de alimentación y algunos extras más que le permiten ser algo que yo buscaba: "sacar de la caja, conectar y listo".

En cuanto al firmware del interior de M5 hay tres grandes partes: existe un firmware que controla la E/S mediante la SD, pulsadores de reset, de menú, un puerto serie para debug y algunos elementos más. Este firmware se encuentra en el interior de un controlador externo a la FPGA. Por otro lado, en el interior de la FPGA hay una parte del firmware que implementa los custom chips y en general todo el funcionamiento específico del Amiga 500 y la tercera parte: una implementación, también en la propia FPGA, de un MC68000.

¿Qué puedes contar acerca del firmware?

El firmware referido al controlador ha sido desarrollado desde cero puesto que se deseaba incluir FAT32 en el acceso a la SD y había que implementar el soporte y lectura de la ROM onchip entre otras muchas cosas menos importantes. Con respecto al firmware de la FPGA durante meses y meses he estudiado el core del viejo miniMig y me ha sido de una ayuda inestimable para comprender el funcionamiento del mismo, sin embargo, como he apuntado en diferentes ocasiones, creo que ha envejecido muy mal y me he visto obligado a reescribir prácticamente toda la parte funcional de nuevo quedándome sólo con aquellas partes de definición de los chips básicamente y los menús de configuración que son bastante genéricos. He reescrito la gestión de memoria, la conexión con el MC68000 ya que en el viejo miniMig era a un procesador físico y en M5 no existe, he reescrito la gestión de joysticks y teclados mirando al futuro diseño del que hablaba al principio de este post.

Con respecto a la implementación del MC68000 en el core de la FPGA he escrito desde el principio todo el funcionamiento. Esto lo he hecho porque también miraba a futuro cuando lo hice. Pensé que sería buena idea implementar el MC68000 como si se tratara de un microprocesador RISC y no CISC como es en realidad. Esto me ha solucionado de forma bastante elegante algunos elementos para un diseño futuro como el caso de implementar una caché de instrucciones de forma muy poco traumática, por ejemplo.

¿Por qué no usas el core de MiST, Mister, Mística, UnAmiga y similares?

Todos estos cores derivan del core original de miniMig y se han ido mejorando con la vista puesta en sus diferentes plataformas o FPGAs que lo contienen. De la misma forma, yo orienté mi desarrollo desde el principio a un bien superior, esto es, una electrónica más ambiciosa técnicamente y por tanto necesito que mi core sea mi propia implementación desde el principio o difícilmente podré convertirlo en mi objetivo final que como digo, es algo que se aleja de la concepción de lo que hoy conocemos.

¿Por qué no usas TG68?

TG68 es un core para MC68000 bastante depurado y funcional y existe una versión incluso para 020, pero como digo, necesito tener el total control de todo el core de M5 de cara a futuro así que he hecho mi propia interpretación (le llamo RSC00 para 68000, RSC020 para 68020 y así sucesivamente). Como comentaba más arriba me pareció buena idea hacer una implementación tratando al MC68000 como si de un procesador RISC se tratara y por tanto he implementando el proceso en cuatro partes de este tipo de procesador. Eso me ha facilitado mucho el desarrollo del otro diseño más ambicioso.

¿Pero entonces el M5 es un miniMIG evolucionado?

No me molesta en absoluto que se vea así. Ni yo mismo sé lo que es M5 con respecto a miniMIG. Siendo objetivos miniMIG me ha provisto de los conocimientos suficientes durante los últimos dos años para llevar a cabo mi trabajo ya que he estudiado y escudriñado su código de forma obsesiva. Por otro lado, como han apuntado en los foros, la apariencia de los menús de opciones y su funcionalidad recuerdan a miniMIG más antiguo y efectivamente así es. Como digo miniMIG (a mi modo de ver) envejeció fatal y puesto en contexto ha sido el germen para que muchos de nosotros aprendamos con algo que funcionaba razonablemente bien y nazcan grandes productos como MiST, Mister, UnAmiga, Mística y otros.

¿Entonces qué es M5 con respecto al futuro?

Como apunto en la primera parte de este FAQ "solo" era un prototipo que me ayudaba a llegar a mi objetivo principal y futuro: una máquina de juegos algo más cercana al momento tecnológico actual y que fuera compatible con Amiga para tener acceso a sus juegos. Durante mucho tiempo M5 ha soportado pruebas y experimentos, en algunos casos imposibles, para poder comprender la implementación y así "transportarla" a un diseño mucho más ambicioso.

¿Qué es ese diseño más ambicioso del que hablas?

En los foros habrás visto que se habla indistintamente de M5 y M5+. El M5 es todo eso de lo que he hablado de aquí para atrás en este post, y el M5+ no es más que ese diseño más ambicioso al que hago referencia constantemente.

El M5+ es mi proyecto principal, en el que trabajo actualmente y que implementa algunas cosas que creo pueden ser importantes para una máquina de juegos: USB con soporte HID completo, PCIe, SSD y alguna otra cosa que me hace falta para tener mi ordenador de juegos ideal. Es un proyecto ambicioso y por tanto tiene un porcentaje muy alto de sucumbir por el camino. En mi defensa diré que para mi es un reto que por ahora me apasiona.

¿Qué quieres conseguir, hacia dónde vas?

Pues no lo tengo muy claro. Actualmente mi trabajo en el M5+ es sencillamente un reto, un entretenimiento. Hay gente que hace bricolaje y otra gente a la que le encanta poner a punto su moto, yo he elegido esto como entretenimiento y a la vez como reto. No negaré que albergo en mi interior alguna esperanza íntima de que el M5+, o como quiera que se llame en el futuro, se convierta en una máquina de juegos para que la gente desarrolle en ella y para eso liberaré un SDK por si alguien se animara en el futuro.

¿Pero entonces tienes algo claro?

Si, hay muchas cosas muy claras: el M5 es una especie de miniMIG, el M5+ será una máquina para juegos. Ninguno de ellos es un Amiga, ni pretende serlo. Ninguno de ellos es el Amiga del futuro, ni la evolución del Amiga ni ninguna otra majadería que me oigas decir. Es sencillamente mi interpretación de una máquina de juegos en la que se da la circunstancia de que es compatible con Amiga.

** Si algo no ha quedado claro, dímelo y lo añado o amplio **

Comparte este post


Mon, 08 Jul 2019 09:52:10 +0200
Publicado en: Ocio doméstico

Posts relacionados
conecta conmigo en