О Великий Ктулху! Как же я ошибался!
Начал с самого простого — нарисовал одну палку, разделенную на сегменты и залитую зеленым. Команды рисования — элементарные. Принялся двигать фигуру влево и зеленый стал фиолетовым. Снова зеленым, и опять фиолетовым. Примитивнейший код работал не так, как задумано и заставил меня орать в голос, чего я позволял себе в отношении компьютера нечасто.
— Да пендехо ты яблочный! — крикнул на несчастный комп, уже будучи далек от радости, что я его спас. — Это что за цветомузыка?
Ответ, как всегда, в процедуре RTFM!
Старший бит (бит 7) каждого байта видеопамяти является битом задержки фазы. Если он равен 0, пиксели отображаются в фазе с цветовой поднесущей NTSC, давая фиолетовый и зеленый цвета. Если он равен 1, фаза сдвигается на 90 градусов, давая синий и оранжевый.
До Штирлица не дошла шифровка из центра. Он перечитал еще раз — всё еще не дошла.
Я искренне считаю себя не полным дебилом. Да, иногда я веду себя, как клинический идиот, но то в сложных ситуациях, связанных с общением с людьми. Мы, хомосапиенсы — сложные. А вот компьютеры обычно простые и в них, я думал, хорошо разбираюсь и секретов не осталось. Но вот перечитал… вроде бы понятным английским языком написанную фразу и нифига не вдуплил. Что значит — всего четыре цвета? Почему именно эти? Как гениальные парни смогли написать ULTIMA с подобными ограничениями? Игра что, цветная, но зелено-фиолетовая? А как мне текст рендерить? И ладно четыре, мерцание-то зачем?
Вспомнился, опять нет лучшего слова, легендарный Принц Персии, изначально писавшийся как раз под Эппл 2. Фон — черный. Главный герой — по большей части белый, с редкими вкраплениями оранжевого. Огонь — только оранжевый. Окружение — бело-синее. То есть в парадигме имеющихся в графическом режиме цветов.
Но какой же Джобс пройдоха! Цветное яблочко на логотипе! Его следовало изобразить зелено-оранжево-фиолетово-синим! Переливающимся на свету при смене угла зрения из зеленого в фиолетовый, как голографическая наклейка на акцизной марке.
Но как разработчик Принца, а он трудился в одиночку, как и я, устранил мерцание? С производительностью-то известен ответ — ассемблер. Среди книжек есть и руководство по нему.
RTFM!
Полчаса лихорадочного листания страниц толстой красной книги и вырывания волос на ягодицах я нашел:
Цвет точки жестко привязан к ее координате X. Зеленый и оранжевый могут быть отображены только в нечетных столбцах. Фиолетовый и синий — в четных. Сдвиг точки на соседнюю колонку неизбежно приведет к смене фазы и, как следствие, изменению цвета.