А для вывода фона из тайлов 1х1 или 2х2 можно использовать карты в ZX Like Pascal
- - - Добавлено - - -
Могу еще подбросить 4х4, но без атрибутов. Она в demo_Z используется.
Вид для печати
3х3 нету, но можно переделать из 4х4 (сократить). А одномерный массив - это двумерный с одной стороной равной 1 :)
Там нужно будет вычислять длину строки до ldir, что может убить всю выгоду от ldir-а. Я пытался так сделать, хотел сделать спрайты в Паскале только прямоугольные для экономии места и ускорения процедур, но ускорения не получается, отказался из-за этого. Так что, лучше на спрайты вернуться.
Ищё такой вопрос, если спрайт 8х8 он по скорости же будет тождественен линейной процедуре Putimage?
И ищё такой вопрос. В паскале этой выводилка спрайтов максимально быстрая? Или возможны варианты ещё быстрее ?(с использованием стека (наличие проверки границ экрана обязательно, разумеется))
Памяти пока не жалко, поэтому готов пожертвовать во благо скорости.
В текущей демке фпс в принципе устраивает, но я опасаюсь жоской просадки, когда будет дофига логики в ЯВУ.(к тому же тут пока ещё нет хальта для верт. синхры)
https://media.giphy.com/media/ZBzp09...Hj72/giphy.gif
да.
С использованием стека быстрее, но опять же, проверки границ притормаживают. И процедуры сложнее по кодированию. У меня таких нету.
Еще есть промежуточный вариант - вместо ldir (21 такт на байт) использовать в цикле много ldi (16 тактов на байт). Это используется в процедуре копирования вирт.экрана на реальный.
я уже думаю про вирт. экран 128к, но я совсем не умею им пользоваться.
Почему
работает как положено.Код:for i:=campos/3 to 10+campos/3 do
begin
...
А это:
ведёт себя так, будто i всегда равно нулю?Код:kampos:=campos/3;
for i:=kampos to 10+kampos do
begin
...
kampos объявлял как word и byte.
- - - Добавлено - - -
вообще у меня там часто встречается campos/3.
Было бы неплохо её единожды за фрейм вычислить максимально быстро.