Presentación del proyecto

Hay proyectos que nacen en una tarde. Otros son el resultado de semanas o meses de preparación. Y otros parece que no van a llegar a cuajar nunca. Este emulador se parece un poco a todos ellos. La idea surgió un día allá por el ya lejano año 1999 (el siglo pasado, ni más ni menos), aunque las ganas de hacer algo relacionado con el Spectrum comenzaron mucho antes, porque en 1996 ya hacía mis pinitos con las primeras versiones del XZX de Des Herriot, antes de que otro desarrollador decidiera mejorarlo y convertirlo en shareware solo para que ahora duerma el sueño de los justos...

Empecé por hacer algunas pruebas para ver si era capaz de refrescar la pantalla las 50 veces por segundo que requiere el Spectrum. De aquellas pruebas, escritas en C++ usando la versión 2.0 de la librería Qt, salió un mini-proyecto que llamé QtScr y que aún puede descargarse del servidor de The World of Spectrum. Se trata de un visualizador de ficheros de pantalla del Spectrum.

Durante mucho tiempo no hice mucho más que pensar de vez en cuando en un proyecto que parecía no iba a existir más que en mi cabeza. Mientras, el mundo seguía dando vueltas y los emuladores de Spectrum surgían continuamente, cada uno mejorando el anterior. A la vez, se abandonaban casi tantos como se creaban. Uno de los pocos que ha seguido desarrollándose hasta convertirse, probablemente, en el mejor emulador para plataformas Unix, es el FUSE de Philip Kendall, al que se han unido muchos otros desarrolladores. Unos para añadir características, otros para portarlo a casi cualquier plataforma imaginable.

Con independencia de todo eso, y tras participar más o menos activamente en varios proyectos de software libre, he ido adquiriendo una cierta aversión a algo que comenzó siendo divertido (por decir algo) y que con el tiempo ha acabado por convertirse en una molestia para mi y para mucha otra gente: compilar el emulador. La proliferación de distribuciones de Linux, cada una incompatible en mayor o menor medida con las otras, y el uso por mi parte de otros sistemas Unix, como Solaris 10, hacían cada vez más tediosa la tarea. La constante fuente de problemas que ello causa en los usuarios menos expertos era evidente, por otra parte. Había que hacer algo que no necesitara compilarse uno mismo (a menos que fuera adicto a ese tipo de drogas).

Pensando ya en el lenguaje Java, en un par de ratos largos, lo primero que hice fue portar el QtScr a Java, poniéndole el original nombre de JScr y que nunca hasta ahora ha salido de mi máquina. Hasta hoy.

Hace algo más de dos años me topé con un emulador que llamó mi atención. Se trataba de JaS, el emulador de Spectrum escrito en Java de Alberto Sánchez Terrén, proyecto hospedado en este mismo servidor. Era diferente a otros en varios aspectos: emulaba un montón de modelos de Spectrum, tenía soporte de ficheros TAP/TZX y, lo que es más importante, era software libre.

Durante algunos días lo probé, miré el código y pensé en cómo mejorar un emulador que, al ser un proyecto de fin de carrera, llevaba tras de sí un montón de horas de trabajo, acompañado por una dirección de proyecto a cargo de dos profesores, Eduardo Mena y Juan Pablo López-Grao, cuya adhesión y cariño por la máquina de Sir Clive Sinclair quedaban fuera de toda duda.

De modo que, según atestiguan los mensajes de correo electrónico que aún conservo, un 4 de enero de 2008 me puse en contacto con Alberto para comunicarle mis intenciones y pedirle permiso para modificar su emulador. Paralelamente se lo comuniqué también a sus directores de PFC por si había algún problema (los PFC tienen unas características un poco especiales). Debo decir que solo encontré palabras de ánimo en los tres y hasta alegría de que alguien continuara con el proyecto. Me ayudaron en lo que pudieron cuando solicité algunos fuentes que no se encontraban en la distribución y, con el OK de los "padres" de JaS me puse a la tarea.

Y en estas páginas está el resultado de lo que sucedió después... :)