Proyecto

ZX Spectrum +2A

Mi primer ordenador fue un ZX Spectrum +2A negro, el español, con el casete integrado. Con él y con el libro de BASIC empecé a programar, así que tenía pendiente este proyecto: un emulador escrito desde cero, sin librerías, y el aparato modelado en Blender para usarlo en el navegador encima de una tele de tubo. Arranca con la ROM original, suena, carga cintas y se puede escribir con el teclado del ordenador o pulsando las teclas del modelo.

Puedes probarlo tú mismo: encender el ZX Spectrum +2A. Funciona en el ordenador y en el móvil, y el emulador no se descarga hasta que le das a «Encender».

El Reel del proyecto, sin sonido. Todo lo que sale es mío: los renders de Blender, el emulador funcionando y el código.
Fecha
Noviembre 2026
Tipo
Emulador y modelo 3D en el navegador
Mi papel
Desarrollo del emulador, modelado 3D y página
Tecnologías
JavaScript sin librerías · Web Audio · Three.js · Blender · Astro
En línea
jcalarcon.dev/zx-spectrum-2a

Un Z80 escrito desde cero

Lo primero fue el procesador. El Z80 está hecho a mano con todas sus instrucciones, también las no documentadas, y contando los ciclos de cada acceso a memoria, porque en el Spectrum la imagen y el sonido dependen de ese tiempo exacto.

Para saber si está bien no vale con que arranque. Existen dos programas de prueba clásicos, zexdoc y zexall, que comparan miles de combinaciones de cada instrucción con un Z80 real. Los dos dan 67 de 67 correctas, y cada uno tarda alrededor de minuto y medio en ejecutarse.

Salida de la prueba zexdoc en una terminal con todas las instrucciones del Z80 marcadas como OK
zexdoc pasando por el Z80 del emulador.
El modelo 3D del +2A con la tele de tubo mostrando el menú de arranque 128 +2A
El menú de arranque del +2A en la tele del modelo.
La tele del modelo con el borde rojo después de cargar una cinta
Una cinta cargada con la señal real.

La máquina completa

El aparato en Blender

El modelo es un +2A español, con su teclado de MAYUSCULAS, BORRAR e INTRO, la ñ, el Datacorder y los conectores de la parte de atrás con sus nombres. Está hecho con un script de Blender que se puede volver a generar, y en la web se usa una versión ligera de menos de un mega.

En la página, al pulsar «Encender» se descargan el emulador, la ROM y el 3D, y la cámara se pone delante de la tele. Las teclas del modelo se hunden al escribir y también se pueden pulsar con el ratón o con el dedo.

Parte trasera del modelo 3D del +2A con los conectores rotulados: impresora, alimentación, expansión, RS232 y los demás
La trasera, con los conectores del +2A español.

El Reel

El vídeo lo he montado con ReelKit, una herramienta que estoy haciendo para copiar la estructura de un Reel que me gusta (los cortes, la duración de cada plano y el ritmo) y rellenarla con mis propios vídeos. Los planos salen de renders de Blender, de grabaciones del emulador funcionando y del propio código.

La ROM y las marcas

La ROM del +2A es de Amstrad, que permite distribuirla con los emuladores siempre que no se venda, y así se usa aquí. Es un proyecto personal, sin relación con Sky ni con Amstrad, propietarias de las marcas Sinclair y ZX Spectrum.

Ver otros proyectos

Ver todos los proyectos

Más sobre mi trabajo