Space Invaders: теперь и в 512 байт (Assembler x86)

image

Казалось бы, ещё совсем недавно Space Invaders умещали в 1 килобайт, а теперь смогли уместить в один загрузочный сектор (512 байт). Автор программы — Оскар Толедо, пятикратный победитель IOCCC (International Obfuscated C Code Contest) и регулярный участник JS1K, также известный как создатель шахмат, которые занимают всего 392 байта.

Исходный код игры можно посмотреть в репозитории на Github: github.com/nanochess/Invaders

Для запуска вам потребуется nasm (Netwide Assembler), который можно скачать на официальном сайте. Игру можно собрать, выполнив команду:

nasm -f bin invaders.asm -Dcom_file=1 -o invaders.com

На самом деле, это всё ещё в 4 раза больше, чем весь размер оперативной памяти Atari 2600 —, но уже с легкостью поместилось бы на её картридж, который предоставлял 2 килобайта памяти. Также, использование в коде программы инструкций ассемблера PUSHA/POPA требует наличия процессора 80286 и выше.
Оригинальная Space Invaders вышла в 1980 году и стала одной из первых аркад, портированных на Atari 2600 с игровых автоматов. Игра стала бестселлером, увеличившим продажи самой консоли в 4 раза. Оригинал игры, появившийся на аркадных автоматах в 1978 году, по словам её автора, был в свою очередь вдохновлен другой игрой Atari — Breakout.

Демонстрацию работы игры можно посмотреть на видео.

© Habrahabr.ru