Думаю над хитрой буферизацией экрана под движущимися объектами. Хочу уложить всё в объём памяти стандартной БК-0010.
Пока идея такая:

1. Определять начальные адреса экрана для левого верхнего угла каждого спрайта.
2. Для каждой строки экрана считать сколько спрайтов на неё приходится. Это буфер из полторы сотни байтов.
3. Сортировать спрайты в порядке отрисовки сверху вниз и слева направо.
4. Формировать массив вида «содержимое, адрес». Для 10 спрайтов шириной в 3 слова и высотой в 10 пикселей получается массив 300*2 слов. В 16 раз меньше, чем полный буфер экрана.
5. Поскольку спрайты отсортированы, при отрисовке легко проверять массив на несколько элементов назад: а не записывалось ли уже по этому адресу содержимое других спрайтов. Если не записывалось - делаем просто MOV. Если записывалось - смешиваем содержимое (с применением масок если хватит памяти на них или без, просто XOR’ом).
6. Помимо отрисовки новых спрайтов, одновременно стираем старые, оставшиеся с предыдущего кадра. Таким же образом, с сортировкой и сравнением адресов.
7. На выходе получаем небольшой массив, который по сути содержит дельта-информацию: чем новый кадр отличается от старого. Выводим этот массив на экран MOV (R1)+,@(R1)+ Так у нас сделано в демке «Good Apple». Это гораздо быстрей, чем копировать полный экран.

Плюсы такого подхода:
+ При выводе спрайтов на экран ничего не мерцает.
+ Нужно мало памяти. Сможем сделать даже на БК-0010.
+ Быстрее, чем рисовать в экранном буфере и потом копировать его.

Минусы:
- Нужно продумывать детали. Неизведанная территория, так никто ещё не делал.
- Сортировка и поиск в массиве могут оказаться медленными. Суммарного выигрыша в скорости не получится.

Статические объекты (геометрия лабиринта) во всём описанном не участвуют, так как персонажи летают только поверх чёрного фона. Статику рисуем только один раз при входе в новую комнату.