"Как написать игру на ассемблере"
там простейшие способы описаны, не чересчур быстрые, конечно, но подробно объясненные.
Основная идея - либо перед рисованием спрайта сохранить куда-то то, что он затирает (для бейсика малоприменимо, т.к. работа не с PRINT, а прямо с памятью. SCREEN$ может помочь для сохранения только, когда графика - это полностью замененный шрифт, а не символы пользователя. Да и то-будет жутко медленно); либо хранить в памяти только координаты всего, что нужно нарисовать на экране, и каждое изменение - это перерисовка всего экрана, причем дальние объекты рисуются раньше и закрываются потом ближними (это для бейсика тоже очень долго, все всегда перерисовывать). Такие экраны, чтоб не рябило в глазах, строятся обычно в памяти, а в область графической памяти перебрасываются одним махом, когда все готово (тут бейсик пасс, т.к. PRINT стандартно работает прямо на экран, а не в другую память. Это можно перенастроить, но перенастройка снова делается ассемблерым кодом).
Лучший выход, чтоб это реализовать в БЕЙСИКЕ - пользоваться LASER BASIC - это и знакомые команды и способ ввода программы, и плюс к ним много новых команд, большая часть как раз спрайтами и др. графикой заведует.
На нем тов. Медноноговым сделаны такие замечательные вещи, как "Буратино", "Чипполино" и "Дурак".
LASER BASIC хорошо описан в первой части той же книги "Как написать игру для ZX-Spectrum"
Конечно, для очень сложных экранов, вроде тех, что почти 3D у Ultimate или просто перенасыщенных игровыми объектами + курсор мышки, как "Вера" axor'а, конечно, нужны хитрости, чтоб все это не тормозило.




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
