Если использовать много плоскостей, и если выбрать приоритетом скорость, то можно как написал svofski раскидывать спрайты по плоскостям. Готового механизма в игре нет, я представляю примерно так: при выводе очередного спрайта смотрим по координатам, если нет наложения, то используем основную плоскость+0, если есть, то плоскость+1, если и там уже есть, то +2, и т.д. (если хватит памяти) до +3. Если плоскости кончились, то или рисуем процедурой с xor или просто портим какую-то из плоскостей. Выигрыш за счет отказа от чтения экрана и логических операций, но, конечно, будет помигивать.
Вариантов много, вопрос в приоритетах - "безмигательность", скорость, наличие спецэффекта, наверно еще что-то можно придумать.

- - - Добавлено - - -

Цитата Сообщение от ivagor Посмотреть сообщение
будет помигивать.
Если разделить плоскости 2+2, то можно использовать переключение страниц и мигать не будет, но вопрос наложения спрайтов становится более острым.