Подумал над этим несколько дней, склоняюсь к мысли, что выгоднее делать тоже на спрайтах, как в ZXOOM. Тогда будет также всё быстро выводиться, без математических расчетов. Для уменьшения дискретности сделать глубину просмотра уровней-спрайтов не меньше 12 (в ZXOOM сейчас 7). Зато в ширину достаточно 3 уровня - центр, слева и справа (в ZXOOM сейчас от 7 до 9). Т.е., количество выводящихся спрайтов в "Megarace ZX" примерно такое же будет.
В писишном Megarace трассы сделаны на технологии FMV, т.е. при прохождении показывается изначально отрендеренное видео трассы. Причем на каждом кадре только одно положение трассы, т.е. при управлении машиной сдвигается именно машина, а не изображение трассы.
У нас же, т.к. видео невозможно хранить и отображать, будут выводиться комбинации спрайтов в одном положении для каждого кадра. Кодируем каждый кадр трассы 6 байтами-сегментами - центр вблизи, центр вдали, лево вблизи, лево вдали, право вблизи, право вдали. Каждый байт-сегмент обозначает комбинацию спрайтов для 12 уровней.
А сегменты могут быть такие:
- прямо ровно
- прямо по горке вниз
- прямо по горке вверх
- поворот влево ровно
- поворот вправо ровно
- ответвление вправо
- ответвление влево.
Другие сегменты, например повороты по горке, можно не использовать. Из имеющихся сегментов можно уже построить разнообразные трассы.
Т.е. получится: 7 сегментов * 3 уровня в ширину * 12 уровней в длину = 252 значения для байта. Теоретически примерно столько же будет спрайтов.
От спрайтов нужно хранить только четвертушки, как и в ZXOOM, т.к. симметрия, а остальные 3/4 достраивать программно (движок уже есть). Т.е., то что является барьерами в ZXOOM, здесь будет бордюрами. А то что является высокими стенами, здесь будет тоннелями.
Если один кадр занимает 6 байт, то допустим выделим 6кб - 1000 кадров. С учетом разветвлений максимальная длина одного круга трассы будет 500 кадров. Если в секунду выводить 2-3 кадра, то по времени длина круга будет около 180 секунд или 3 минуты - нормально.
Пока такие мыслишки. Может, есть подводные камни.