
Este juego, fuertemente inspirado en Space Invaders, fue escrito desde cero para ATtiny2313 y enviado al
concurso de 1 kilobyte recientemente celebrado
en Hackaday .
No es fácil poner un juego de este tipo en 1024 bytes. Pero el autor decidió obtener un juego completamente funcional con puntuación, sonido y una salida de video VGA con una resolución de 640x480 y una frecuencia de 60 Hz.
Por supuesto, todo el código está completamente escrito en ensamblador, y para la generación de sonido y video, está programado para obtener intervalos de tiempo precisos.
La interrupción del temporizador cumple con los requisitos para la sincronización horizontal VGA, y dado que la velocidad de cuadros se obtiene dividiendo la línea horizontal por un número entero, ambos tipos de sincronización se pueden colocar en un procedimiento de procesamiento de interrupción. Para hacer esto, el procedimiento cuenta con precisión los ciclos.
La frecuencia de línea de 31.5 kHz se toma en el mismo procedimiento que la base para recibir sonidos.
La rutina de procesamiento de interrupción ocupa el 90% del tiempo de la máquina, por lo que toda la lógica del juego se calcula durante el haz de retorno. Varias máquinas de estado controlan el movimiento de los personajes, determinando la posición de los misiles, etc.
Se utiliza un pequeño generador de caracteres para almacenar tanto la fuente para mostrar la partitura como los mosaicos y sprites.
Solo unas horas antes del final de la recepción de materiales, el código estaba listo y enviado a la competencia. Todo resultó ser realizado en él. Generación de una señal VGA estándar (aunque la resolución real es mucho menor que 640x480 - "píxeles cuadrados enormes"), controle desde un gamepad para SNES o su clon con tres señales Clock, Latch, Data, sprites de programa con movimiento suave, en lugar de saltar de la familiaridad en familiaridad, puntuación, cambio cíclico de azulejos como en el original ...
El mismo gamepad:

También puede hacer el mismo dispositivo y reproducir un análogo de Space Invaders de 1 kilobyte. Ensamble el circuito (no se muestra cuarzo a 20 MHz, se conecta a los pines 4 y 5, el conector en la parte superior derecha es para el programador). El autor afirma que dibujó este diagrama en un teléfono inteligente a las 4 a.m., inmediatamente antes de enviarlo al concurso. Por supuesto, el adaptador Parallax es opcional, solo puede tomar el conector VGA.

Al usar el adaptador, el dispositivo se ve así:

Compile la fuente (
archivo de programa y
encabezado ) con AVR Studio o GCC, o simplemente complete el
archivo HEX adjunto; esto es más rápido, pero no podrá profundizar en el código. Y puedes ver por ti mismo que el análogo de Space Invaders, que cabe en un kilobyte, es una realidad.