Hoy en día, conseguir una tasa de refresco de 13,5 fotogramas por segundo en cualquier animación o juego que se ejecuta a pantalla completa, es algo bastante sencillo.

Hacerlo posible en un ZX Spectrum resulta bastante más divertido. Aunque no por ello complicado.

Si tienes menos de 20 años, seguro que estás convencido de que 48 Kb de memoria RAM, y un procesador de 8 bits a 3,5 Mhz no dan para mucho… Nada más lejos de la realidad.

El programa en cuestión está escrito en C usando el z88dk, por lo que con algunas optimizaciones, y reescribiéndolo en ensamblador, sería fácil conseguir al menos 25 FPS.

Si tenéis curiosidad, el código del programita es éste:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <conio.h>

static unsigned char gacPerin[]={...};

int main (void)
{
register unsigned int iX;
clock_t clkStart, clkEnd;

iX=0;
clkStart=clock();
while (!getk())
{
memcpy(16384, gacPerin, sizeof(gacPerin));
printk("\x16\x20 Frames: %d; FPS: %ld",
iX, iX*CLOCKS_PER_SEC/(clkEnd-clkStart));
iX++;
clkEnd=clock();
}
return(0);
}

Podéis descargar el autoejecutable creado con el emulador Bacteria desde aquí (22,5 Kb en formato ZIP), y verlo con vuestros propios ojos.