3х3 нету, но можно переделать из 4х4 (сократить). А одномерный массив - это двумерный с одной стороной равной 1![]()
Там нужно будет вычислять длину строки до ldir, что может убить всю выгоду от ldir-а. Я пытался так сделать, хотел сделать спрайты в Паскале только прямоугольные для экономии места и ускорения процедур, но ускорения не получается, отказался из-за этого. Так что, лучше на спрайты вернуться.
ALKO(24.05.2020)
Ищё такой вопрос, если спрайт 8х8 он по скорости же будет тождественен линейной процедуре Putimage?
И ищё такой вопрос. В паскале этой выводилка спрайтов максимально быстрая? Или возможны варианты ещё быстрее ?(с использованием стека (наличие проверки границ экрана обязательно, разумеется))
Памяти пока не жалко, поэтому готов пожертвовать во благо скорости.
В текущей демке фпс в принципе устраивает, но я опасаюсь жоской просадки, когда будет дофига логики в ЯВУ.(к тому же тут пока ещё нет хальта для верт. синхры)
![]()
Последний раз редактировалось ALKO; 25.05.2020 в 22:34.
Andrew771(26.05.2020)
да.
С использованием стека быстрее, но опять же, проверки границ притормаживают. И процедуры сложнее по кодированию. У меня таких нету.
Еще есть промежуточный вариант - вместо 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.
Было бы неплохо её единожды за фрейм вычислить максимально быстро.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)