Sneekie

Дивіться, як рухаються байти

У Sneekie немає окремого "обʼєкта змії". Змія, стіни, серця і стріли — це просто символи в памʼяті екрана, а гра читає і записує цю памʼять напряму. Керуйте нижче і дивіться, що відбувається: екран зверху і сирі байти памʼяті під ним — це ті самі байти. Кожен хід складається з кількох peek і poke, які показані праворуч наживо. Зʼїжте серце — і десь зʼявиться трефа; чотири стріли патрулюють самостійно.

Поле Sneekie зʼєднане зі світною сіткою текстової відеопамʼяті.

Кожна клітинка має два байти (символ, потім атрибут яскравості/кольору), адресовані як offset = (рядок − 1) × 160 + (стовпець − 1) × 2. Це кут 22×15 справжнього екрана 80×25 — та сама формула і той самий крок рядка у 160 байтів.

Екран — те, що ви бачите
Операції (цей хід)
Керування
Памʼять — байт у кожній клітинці

Ось увесь трюк коду 1988 року. Подивіться його у вихідному коді на сторінці пояснення або поруч із JavaScript-портом на сторінці міграції.

Промені PEEK і POKE витягують із відеопамʼяті 3D-серця, трефи, стріли, камені й частини змії.

Гліфи за байтами

Кожен символ, який щойно рухався — змійка, стіни, серце — це один із 256 гліфів, вбудованих у той самий ROM-шрифт IBM VGA 8×16, яким малює гра. Кожен гліф — це 16 байтів, і кожен байт — це один рядок із 8 пікселів: увімкнений біт запалює піксель. Увесь цей шрифт вбудовано просто в game.js. Кольорові гліфи — ті, що Sneekie справді записує у відеопамʼять — наведіть або торкніться будь-якої клітинки, щоб розібрати її.

CP437 — усі 256 гліфів
Розберіть гліф
Код
Hex
Символ
У Sneekie
16 байтів → 16 рядків пікселів
CRT-дослідник шрифту з сіткою гліфів CP437, вибраним серцем, збільшеним до пікселів, і його 16 байтовими рядками.