Года 2 назад я самоуверенно утверждал, что субтайловый рендерер на Векторе просадит скорость до неиграбельной.

Озвучу ниже некоторые свои соображения по поводу субтайлового скролла применительно к Вектору, сидящие уже года полтора в мозгах дабы поправить досадное недоразумение.

Мне думается, что очень легко сделать программный скролл тайлмапа с дискретностью в 8 пикселов, и практически такой же скоростью как в Роботах. То бишь чистый скроллерный движок тайлов (без спрайтовых оверлеев, музыки и т.п.), может в теории давать 17-18 кадров в секунду во вьюпорт размером 208x160 пикселов при сохранении двойной видео буферизации. Тайлы - такого же размера, как и в Роботах: 16x16 пикселов, 2 бита на пиксел, змейкой.

Идея в том, что необходим рендерер как выше (стеком), но имеющий 2 дополнительные ветки кода для вывода только левой половины тайла (1 байт по горизонтали) и для вывода правой половины тайла. Дискретность рендерера устанавливается в 8 пикселов (сдвиг по горизонтали побайтно). При выводе первой и последней вертикальной колонки тайлов используются 2 новые процедуры, выводящие по пол тайла (правая половина тайла для первой колонки и левая половина тайла для последней) или по целому тайлу в зависимости от чётного и нечётного кадра. Получаем субтайловый 8-пиксельный рендерер со скоростью как в Роботах. Вывод оверлеев, привязанных к координатной сетке тайлмапа (т.е. спрайтов, но с не произвольной координатой, типа батареек в Роботах), при этом становится сложнее так как им тоже нужно делать клиппинг, но к счастью по такому же 8-пиксельному алгоритму, то бишь, без сдвигов.

При определённых серьёзных ухищрениях, можно сделать и рендерер с субтайловой точностью в 2 пиксела и скоростью вывода наверное не хуже, чем в 2 раза по сравнению с Роботами (на самом деле-практически сравнимой). Для этого нужно при загрузке сдвинуть все тайлы на 0,2,4,6 бит, заполнив сдвинутые биты нулями и уложить полученные сдвинутые изображения в 4 банка RAM-диска в соответствии со сдвигом. При выводе нужен будет рендерер, получающий изображение тайла сложением (OR-ом) сдвинутых изображений для смежнных тайлов из 2х банков. Вывод оверлеев при 2-х пиксельной субтайловой точности придётся делать также используя клиппинг и заготовленные сдвинутые части битмапов.