Посмотрите вложение. Что-то еще можно ускорить? Может кто подскажет какой-либо более "удобный" формат для скорости?
Посмотрите вложение. Что-то еще можно ускорить? Может кто подскажет какой-либо более "удобный" формат для скорости?
axor/Perspective
http://abzac.retropc.ru/
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
да фиг его знает... и так вроде намана... ведь это же спек, и предел близок...
Мои интры: [Kukarachess][Super boot rmx][tRUSHE MOSAIc][BLAZE]
Мои игры: [Overload][Removal]
Список игр для ZX-Spectrum: [2015] [2014]
ADD HL,HL ;HL=HL*32Сообщение от axor
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
Этот кусок точно можно ускорить, странно но подобное я видел и в ЧВ.
INC HLСообщение от axor
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.
А какова скорость работы с половинками индексных регистров?Сообщение от newart
На сколько я помню вся работа с полными индексными регистрами выполняется гораздо медленнее чем все остальные команды. Как обстоят дела с половинками не в курсе.
axor/Perspective
http://abzac.retropc.ru/
А как ускорить?Сообщение от newart
Подскажи, как можно быстро по коду в HL - 0-511 высчитать адрес спрайта? Спрайты, понятно, выровнены по адресу (#c000), но формат линейный (почти).
Или подскажите кто-нибудь, как можно быстро умножить на 32.
axor/Perspective
http://abzac.retropc.ru/
Если бы не формат анимации на карте, то можно было бы карту хранить в более выгодном формате. А именно, уже сразу умножить код спрайта на 32. Все равно в карте он занимает 2 байта. Но, блин, у меня там анимация Хотя... Надо подумать
axor/Perspective
http://abzac.retropc.ru/
Можно не только хранить в карте уже умноженное число на 32, а сразу адрес спрайта. Таким образом у меня на выводе карты будет экономиться порядка 10000 тактов.
Пока правда не придумал как быть с анимацией. Но вроде выход есть. Ведь все адреса спрайтов четные. Поэтому можно задействовать 1-й бит в числе...
axor/Perspective
http://abzac.retropc.ru/
Вообще, если адреса хранить - они будут не просто чётные, а все младшие 5 бит будут в нуле. Т.е., в принципе, там можно чего-нибудь дополнительное хранить, а на выводе младший байт and %11100000
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)