ASpectrum: Another Spectrum Emulator

Aspectrum es mi contribución al mundo del Spectrum y de Linux. Es un emulador de ZX Spectrum 48K y pretende convertirse en un emulador mucho más grande, con soporte para los demás modelos de Spectrum.

 ASpectrum

¿Por qué otro emulador de Spectrum?

La pregunta es: ¿Porqué otro emulador de Spectrum? Bien, Aspectrum está hecho en puro C sin una sóla línea de ensamblador. Esto lo hace totalmente portable, es decir, es un emulador pensado PARA EL PRESENTE y PARA EL FUTURO.

Para el presente, porque Aspectrum puede ser compilado EN CUALQUIER plataforma existente que soporte su librería gráfica: Windows, Linux, Beos, consolas, etc, sin realizar modificaciones al código. Esto es importante porque hay plataformas que no tienen emulador de Spectrum (o al menos no tienen uno decente y GPL y que no cueste dinero), y mediante Aspectrum este problema puede ser subsanado. Bien es cierto que no todos las plataformas existentes, soportan SDL y Allegro (las librerías gráficas que utilizo), _pero_ dado que el código gráfico es apenas un 2% del código del emulador (y además, en C) sería ideal para portarlo a móviles, PDAs o incluso !neveras! reescribiendo tan sólo la parte gráfica (hay neveras que funcionan con MIDORI Linux). No creo que haga falta decir más: la prueba es que el mismo código lo he compilado en MSDOS, Windows y Linux sin problemas, y el rendimiento era excepcional en las 3 plataformas.

Para el futuro… Tomemos por ejemplo cualquiera de los demás emuladores actuales realizados en ensamblador (es decir, el 95% de los que hay por ahi, cuyo código es en gran parte ASM). Dentro de unos años la arquitectura Intel i386 desaparecerá y aparecerán nuevas arquitecturas de 64 y 128 bits. El juego de instrucciones no será el mismo y los emuladores no funcionarán (a menos que usemos emuladores de PC para correr los emuladores :). Los autores de los emuladores tendrán que reescribir todo el código para las nuevas plataformas, ya que no pueden simplemente recompilar.

ASpectrum, al estar hecho en C se podrá recompilar en el compilador de CUALQUIER máquina que exista y obtener una versión binaria que corra en dicha máquina. Con Aspectrum tendríamos un emulador de Spectrum para todos y para siempre, sin tocar el código.

Obviamente, trabajar en C puro tiene sus desventajas: donde normalmente bastaría un ordenador 486 para emular un Spectrum, con ASpectrum probablemente necesitaremos un Pentium 200 o superior. Comprendo que actualmente no todo el mundo tiene un P200, pero ya comienza a ser un ordenador minoritario. Para cuando el emulador se finalice, cualquiera podrá correrlo en su ordenador sin problemas, ya que el ordenador mínimo existente en el mercado será superior a los requerimientos de Aspectrum. Este pago por la portabilidad es un coste que asumí desde el mismo momento en que el emulador sería portable y reutilizable en el futuro en cualquier plataforma (y además, seguro que cualquier plataforma del futuro es mucho más rápida que un Pentium 200). Nada impedirá de todas formas que cuando se termine el emulador pueda ser parcheado para modificar trozos de él por ensamblador, y acelerarlo. Esto es así gracias a la licencia del emulador.

Aspectrum es un emulador GPL: puedes copiarlo, modificarlo, añadir nuevas funcionalidades, regalarlo a los amigos, todo lo que se te ocurra, sin tener que notificarselo al autor. En cualquier caso a nivel personal sí que me gustaría ser notificado de aquellos trabajos realizados con mi emulador, y que se me envíen parches realizados para otros proyectos que puedan ayudar a este. Es una cuestión simple: yo te doy el emulador y no pido nada a cambio, haz con él lo que quieras, eso sí, estoy seguro de que los verdaderos amantes del Spectrum contribuirán a él, porque mejorar Aspectrum es incentivar la memoria del Spectrum. Y… ¿habéis pensado qué sería de vosotros ahora mismo si no hubiera existido el Spectrum? En mi caso, tuvo mucho que ver… yo quería ser periodista y ahora soy programador y Administrador de Sistemas… :-) Le debo mucho al Spectrum, porque me encanta lo que hago ahora.

Consideraciones

  • Aspectrum está todavía en desarrollo, pero por desgracia (por mi falta de tiempo) evoluciona poco a poco. Por suerte, otros desarrolladores me ayudan en su programación y añaden nuevas funcionalidades. En la sección de descargas los enumero.
  • Incluye un sencillo sistema de menues para el usuario.
  • Algunos opcodes indocumentados del micro Z80 todavía no están implementados (pero muchos de ellos sí).
  • El debugger de ASpectrum está totalmente en pañales.
  • El emulador sólo carga SP, SNA y Z80 y algunos ficheros TAP. Se está trabajando en el soporte TZX.
  • No emula todo el hardware existente de Spectrum.
  • Es versión 0.1.x (¿necesito decir mas?) :)

Descargas

En la página de SourceForge de Aspectrum tenéis acceso a la página de Alvaro Alea, mi colaborador principal en Aspectrum (también han contribuído otras personas como MetalBrain y Philip Kendall, por citar algunos). La página web de Aspectrum en Sourceforge siempre mantendrá la última versión de ASpectrum.

Si queréis probar el emulador, podéis descargar software de la sección de Juegos de mi web, así como en World Of Spectrum o en The Spanish Spectrum Archive (SPA2). Por si acaso no podéis acceder a estas páginas, dejo aquí alguno ficheros .SNA para una descarga más rápida:


Santiago Romero
Alvaro Alea