Идея такая - делаем новый комп, заточенный под графику. Он кроме стандартного режима графики с цветовыми атрибутами 8x8 точек будет иметь дополнительный режим. С помощью нового режима графики можно будет переделать старые игры для рисования каждого спрайта своим цветом без клешинга атрибутов. При записи байта восемь точек будут закрашиваться выборочно текущим цветом. Байт содержит информацию, какие точки закрашивать. А текущий цвет для рисования предварительно записывается в порт цвета.
Для раскрашивания старых игр нужно доработать подпрограмму рисования для выбора нового режима графики и установки цвета спрайта. Сначала, используя байт маски, надо нарисовать силуэт спрайта черным цветом. Затем, используя байт спрайта, надо нарисовать контур спрайта выбранным цветом. Байты маски и спрайта можно использовать те же самые из старой игры.
Часто игры рисуют не сразу на экран, а сначала в буфер. Это позволяет решить проблему нелинейности экрана и устранить мерцания. При этом следующий кадр игры можно рисовать в буфере в течение несколько кадров телевизора. А затем “быстро” скопировать изображение из буфера на экран. Для копирования используют команды LDI (примерно 17 тактов Z80 на 8 точек) или POP/PUSH (примерно 13 тактов Z80 на 8 точек). Но даже при последем способе скорости Z80 не хватает для копирования за кадр телевизора всего экрана. Часто копируют верхние 2/3 экрана или меньше. А индикаторы жизней рисуют прямо на экране.
Новая графика должна работать не только при прямой записи в экран, но и при записи в буфер. Для раскраски старых игр надо сделать так, чтобы все адресное пространство Z80 работало как новая графика, добавить возможность копировать новую графику из основного буфера во временный для сохранения фона, обратно для восстановления фона и готового изображения и основного буфера на экран.
Параллельно основной памяти 64 Кбайта надо установить графическую память. На каждый бит основной памяти приходится байт графической памяти. Потребуется 64 Кбайт * 8 = 512 Кбайт графической памяти. При записи байта в адресное пространство Z80 будем записывать восемь последовательных байтов в параллельную графическую память.