То есть копию карты загружать в видеокарту в виде таблицы с номерами спрайтов ?
Вроде тогда будет все хорошо, но игры будут однообразными с плавным, но ОДНОВРЕМЕННЫМ движением ВСЕГО экрана.
А программно у нас будет свобода выбора что, куда и с какой скоростью двигать или не двигать !
Мы можем написать для каждого участка свой алгоритм и шаг движения фона.
Вывел формулу для ориентировочного подсчета времени выполнения примера:
T=(NX+1)*(NY*115+300)+700,
где T - общее кол-во тактов Z80 на отрисовку фона,
NX - число спрайтов по-горизонтали
NY - число спрайтов по-вертикали.
Для режима 256х192 и спрайтов 16х16 T=17*(12*115+300)+700=29260 тактов
Для режима 320х240 и спрайтов 16х16 T=21*(15*115+300)+700=43225 тактов
В одном кадре 312*224=69888 тактов Z80.
Много это или мало? Программа отображения фона написана универсальной с произвольными размерами спрайтов. Ее можно оптимизировать по скорости, особенно для режима 256x192 точек. Кроме этого, мало в каких играх используется скроллинг всего экрана - есть еще и статичные участки.
Еще один аргумент в пользу однослойного строения экрана. Если делать второй слой для подвижных мелких объектов, то для их движения нужно будет сохранять координаты и размеры их местоположения на экране и каждый раз стирать их на старом месте. Только потом изображать на новом. А это требует дополнительного времени. Если же мы каждый кадр фон отрисовываем заново - он автоматически стирает эти мелкие объекты на старом месте. Останется только после отрисовки фона изобразить их поверх фона на новом месте.





Ответить с цитированием