![]() |
Игра "Вера". Что еще можно ускорить?
1 Attachment(s)
Посмотрите вложение. Что-то еще можно ускорить? Может кто подскажет какой-либо более "удобный" формат для скорости?
|
да фиг его знает... и так вроде намана... ведь это же спек, и предел близок...
|
Quote:
ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL Этот кусок точно можно ускорить, странно но подобное я видел и в ЧВ. |
Quote:
PUSH HL LD H,(HL) LD L,A CALL Anim2 ;Проверка на анимацию и т.п. CALL BLOCK22 ;Печать блока POP HL POP BC POP DE INC HL INC E DJNZ PRMLP1 Зачем ты выносишь процедуру печати спрайта за цикл? Лишний Call и Ret отнимает кучу тактов. Кроме того для счетчиков лучше использовать половинки индексных регистров, это позволит избавиться от нагромаждения POP HL,DE,BC. |
PRSHAD1 PUSH BC
....... POP BC DJNZ PRSHAD1 И тут тоже можно использовать LX например, вместо того что сувать лишний раз в стек BC. |
Quote:
На сколько я помню вся работа с полными индексными регистрами выполняется гораздо медленнее чем все остальные команды. Как обстоят дела с половинками не в курсе. |
Quote:
Подскажи, как можно быстро по коду в HL - 0-511 высчитать адрес спрайта? Спрайты, понятно, выровнены по адресу (#c000), но формат линейный (почти). Или подскажите кто-нибудь, как можно быстро умножить на 32. |
Идея
Если бы не формат анимации на карте, то можно было бы карту хранить в более выгодном формате. А именно, уже сразу умножить код спрайта на 32. Все равно в карте он занимает 2 байта. Но, блин, у меня там анимация:( Хотя... Надо подумать :)
|
Дополнения по идее
Можно не только хранить в карте уже умноженное число на 32, а сразу адрес спрайта. Таким образом у меня на выводе карты будет экономиться порядка 10000 тактов.
Пока правда не придумал как быть с анимацией. Но вроде выход есть. Ведь все адреса спрайтов четные. Поэтому можно задействовать 1-й бит в числе... |
Вообще, если адреса хранить - они будут не просто чётные, а все младшие 5 бит будут в нуле. Т.е., в принципе, там можно чего-нибудь дополнительное хранить, а на выводе младший байт and %11100000
|
| All times are GMT +4. The time now is 21:08. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.