Вот про буфер, уже было:
Цитата Сообщение от NovaStorm Посмотреть сообщение
Сообщение от Andrew771
Можно ужать в 96 байт (1 бит на каждое знакоместо), но тогда долго будет искаться нужный бит.
Не обязательно долго, зависит от способа задания координат, если из координат выгрызти смещение и нужные три бита, то их можно будет подставить вперёд по коду прямо в BIT b,(IX+d), где координаты могут пойти в IXL и d.
Посчитал, получилось с расчетом BIT b,(IX+d) по тактам примерно столько же, сколько и сейчас при расчете атрибутов. Так что, шило на мыло менять не буду.

В программе еще оптимизировал только что:
1. Убрал проверку на пустой спрайт - такие задавать не буду. Для отладки было.
2. Заменил последовательность при копировании вирт.экрана на реальный:

res 7,(hl)
res 6,(hl)
ldi

на

ld a,(hl)
and %00111111
ld (de),a
inc hl
inc de

Так быстрее почти в 1,5 раза.