Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-ley 13/2012. Si continúa navegando consideramos que acepta el uso de cookies. OK | Más información

Retro Virtual Machine

En este mes de septiembre hemos asistido a algo que no ocurre todos los días, la aparición de un nuevo emulador para nuestro querido ZX Spectrum y lo ha hecho un programador de la tierra, Juan Carlos González, que, muy amablemente, accedió a presentarlo en nuestro blog.

Retro Virtual Machine

Primero antes de empezar me gustaría agradecer a ZXDEVS por darme la oportunidad de contaros aquí un poco de la historia, de la filosofía y los entresijos de Retro Virtual Machine.

Un poco de historia.

Siempre he sido un gran amante del mundo ‘retro’ pero sobre todo me llaman mucho la atención los microordenadores de 8-bits, en especial el ZX Spectrum y el Amstrad CPC. He estado siempre muy atento a toda la escena ‘retro’ y cada vez que sale un emulador nuevo, o un nuevo juego lo pruebo y lo disfruto como cuando era crío.

Mi otra gran pasión es la programación, y leer libros de informática llamémosla ‘clásica’. Cuanto más técnicos mejor, así que un día leí que había salido el libro “The ZX Spectrum ULA - How to Design a Microcomputer” de Chris Smith así que lo encargue y lo devoré en pocos días.

En el verano de 2013 tuve una pequeña colaboración con Till Harbaum en su proyecto de la MIST-Board (Tan de moda ahora) y fue la primera vez que hice mis pinitos en Verilog, esta colaboración fue muy importante ya que me dio una visión muy clara de como funciona un ordenador desde un punto de vista hardware.

Más o menos por las mismas fechas me tope con Ramiro el Vampiro de los MojonTwins y este juego me cautivó desde el minuto cero. Lo terminé jugando con el emulador FUSE en mi mac y me hizo volver al mundillo del ZX Spectrum.

Después de haber leído el libro de la ULA, se me ocurrió hacer un emulador del ZX Spectrum 48k, simplemente por hobby. En aquel momento me parecía un proyecto enorme pero decidí que, si lo hacia, haría todas las partes ‘a mano’ no utilizaría ningún motor de Z80 ya hecho porque, si no, ¿dónde estaba la diversión?

Así que retomé mi proyecto inconcluso que comencé en el 2011, una emulación del z80, en un principio en lenguaje LUA, aunque luego me di cuenta de que la única opción viable para alcanzar una velocidad respetable era C. Llegué a emular todas y cada una de las instrucciones del procesador, en un entorno de pruebas que me fabriqué y cuando terminé (supuestamente, no sabía lo que me esperaba) con la ultima instrucción empecé a programar la ULA.

El proceso de hacer un emulador, sobre todo al principio, es un poco frustrante, no paras de darte cuenta de que hay cosas que no has diseñado bien, y te toca rehacer de cero muchas partes que creías terminadas. Pero cuando se llega al punto de que la máquina, aun llena de bugs, arranca por primera vez y ves el mensaje de ©1982 Sinclair Reserch ltd la satisfacción es enorme.

Después de eso uno cae cautivo en el mundo de lo técnico y descubre lo que es la ‘contienda de memoria’, el snow bug, las instrucciones indocumentadas del z80, etc, etc.

Pero cuando el proyecto avanzó lo suficiente y me di cuenta de que podía terminarlo y funcionar, me plantee una pregunta y me hizo cambiar por completo la forma de hacer el emulador.

¿Que busca una persona anónima en la web cuando se instala un emulador de un ordenador antiguo?

La filosofía.

La respuesta a esta pregunta era muy sencilla, un usuario busca revivir las sensaciones que tenía al usar esos ordenadores. Por eso la gente que se compra un Spectrum en ebay luego quiere verlo en un televisor de CRT porque si no ‘no es lo mismo’.

Así que decidí introducir todos los pequeños detalles que puedan hacer sentir que realmente se está usando una de esas máquinas, desde el sonido del cassette girando, hasta la sensación de pulsar las teclas del reproductor pasando por una emulación de vídeo acelerada por hardware que intenta simular mediante filtros las imperfecciones de la imagen en un viejo televisor.

Retro Virtual Machine trata no solo de emular el comportamiento de las maquinas lo más fielmente posible sino, que trata de emular sobre todo la experiencia de usar una de esas máquinas.

Encontraba al resto de emuladores demasiado ‘fríos’, llenos de opciones, que la mayoría, solo entendemos los que estamos muy metidos en el mundillo.

Pero entonces me enfrenté al problema principal, el diseño.

El diseño

Yo sabía mucho de programación, pero no tenia ni idea de diseñar, el solo hecho de hacer una ilustración que se pareciera un poquito a un cassette me parecía una meta inalcanzable para mí. Así que en ese momento como en tantos otros, estuve a punto de abandonar el proyecto. Pero por casualidad cayó en mis manos Sketch 3. Este programa, con su simplicidad, me permitió aprender un poco de diseño vectorial. Y poco a poco con mucha paciencia fui creando cada una de las imágenes que usa RVM.

Con el tiempo y la práctica conseguí romper la barrera que para mí suponía el diseño, entonces ya solo quedaba una… ¿Cuándo parar y lanzar una versión estable?

El objetivo final.

Me marqué como objetivo final para lanzar RVM el que emulará todas las máquinas oficiales del ZX Spectrum, sin ningún periférico añadido (para no retrasarlo más). Pero su comportamiento tendría que ser el mismo que un usuario obtenía cuando sacaba un Spectrum de la caja.

A su vez, inspirándome en los programas de máquinas virtuales como Virtual Box o Parallels tan de moda ahora, le di al emulador otro enfoque. Una de las cosas que más me molestaba al usar como usuario FUSE era que cada vez que quería jugar a un juego tenia que configurar el emulador para hacerlo funcionar.

Vamos, que el proceso de usar el emulador se resumía a configuro - juego - configuro - juego etc.

Todo esto si tienes el nivel de conocimientos suficiente sobre la arquitectura de la máquina para saber qué máquina elegir y qué opciones seleccionar para que funcione el juego que quieres ejecutar. Yo quise realizarlo de otra manera, creo una máquina, la configuro a mi gusto y toda esa configuración se guarda en un archivo. Es decir, que si yo, de pequeño, tenía un Spectrum +2A, creo la máquina, configuro las opciones de vídeo y sonido como quiero y, cada vez que le doy doble click al icono mi +2A ‘virtual’, funciona sin tener que hacer nada más.

Además, también me gusta, de vez en cuando, releer antiguas revistas y escribir y toquetear antiguos programas en Basic. Y esto con la mayoría de los emuladores era muy frustrante ya que el soporte para la grabación en cassette, por ejemplo, es casi inexistente.

Así que otro de los objetivos es que, con la máquina se pudiera programar, grabar una cinta, un disco, formatear los discos directamente de la maquina, editar las cintas y así poder usar los pequeños trucos que recordábamos de hace 20 años o bien aprender cosas nuevas.

Recepción

En Abril de 2015 RVM estaba terminado más o menos como lo habéis conocido ahora en septiembre. Entonces empecé a escribir los manuales etc, para que a la gente que vuelve al mundillo ahora, después de tantos años, les fuera un poco más fácil entender como funciona.

A mediados de agosto, con todo terminado, me decidí a dar el paso.

Y solo puedo agradecer a todos los ánimos y la repercusión que esta teniendo el emulador. Ni en mis mejores sueños podía imaginar que tanta gente iba a interesarse por él.

Para cualquier cosa podéis contactar conmigo en rvm@retrovirtualmachine.org o a través de twitter en @retrovm.

El otro día un usuario a través de Facebook me escribió un mensaje que me hizo muchísima gracia, era un escueto “Juan Carlos que Dios te bendiga!”.

Yo lo único que tengo que decir sin ser creyente es ¡Que Dios os bendiga a todos vosotros!

Página oficial | Retro Virtual Machine

Coméntalo en: Twitter Facebook Google +