256 байт интро "Disequilibrium" для компьютера Vectrex

Хотя работа довольно примитивная — линия, по которой скользит точка — реализация не так проста, как кажется на первый взгляд. Нарисовать линию на Vectrex'е, разумеется, просто, как и точку — есть даже соответствующие подпрограммы в BIOS'е. Но вот с перемещением точки вдоль перемещающейся линии — есть нюансы.
Кажущееся очевидным решение — каким-нибудь брезенхеймом всё время вычислять очередную координату и рисовать в этом месте точку. Наверное это бы сработало, но вряд ли бы траектория точки в точности повторяла траекторию векторной линии. Есть метод интереснее, который в данной работе и реализован:
Сначала рисуем основную линию, подпрограммой BIOS. Возвращаемся к её началу.
Пишем в ЦАП значения X и Y, соответствующие концу уже нарисованной линии (точнее, чуть выше неё — чтобы точка шла по линии) и запускаем интегрирование (о деталях я уже как-то писал). Луч начинает перемещаться и рисовать за собой линию вдоль первой линии. Но нам нужна точка. Поэтому луч мы с самого начала выключаем (обнуляя SHIFT register) и запускаем счётчик. После отсчёта d итераций выключаем интегрирование, включаем луч и некоторое время держим его на одном месте, чтобы люминофор в этом месте засиял особенно ярко. После чего повторяем всё сначала.
Теперь, меняя в общем цикле d, мы получаем точку, находящуюся на нужном расстоянии от начала, причём всегда точно вдоль линии.
youtube, vkvideo
P.S. Кому интересен Vectrex, посмотрите на интересный проект Scopetrex. Это современная, но совершенно аутентичная реализация Vectrex. Это не эмулятор и не очередной проект на FPGA. Схема практически идентична оригинальной — с цифровой и аналоговой частями. В качестве монитора понадобится осциллограф (обязательно имеющий кроме X и Y ещё и вход Z). Scopetrex также был представлен на Chaos Constructions'2025:

2 комментария