Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Программирование (http://zx-pk.ru/forumdisplay.php?f=14)
-   -   Игра "Вера". Что еще можно ускорить? (http://zx-pk.ru/showthread.php?t=1139)

axor 15th July 2005 10:35

Игра "Вера". Что еще можно ускорить?
 
1 Attachment(s)
Посмотрите вложение. Что-то еще можно ускорить? Может кто подскажет какой-либо более "удобный" формат для скорости?

rasmer 16th July 2005 01:14

да фиг его знает... и так вроде намана... ведь это же спек, и предел близок...

newart 16th July 2005 01:21

Quote:

Originally Posted by axor
Может кто подскажет какой-либо более "удобный" формат для скорости?

ADD HL,HL ;HL=HL*32
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
Этот кусок точно можно ускорить, странно но подобное я видел и в ЧВ.

newart 16th July 2005 01:24

Quote:

Originally Posted by axor
Может кто подскажет какой-либо более "удобный" формат для скорости?

INC HL
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.

newart 16th July 2005 01:28

PRSHAD1 PUSH BC

.......

POP BC
DJNZ PRSHAD1

И тут тоже можно использовать LX например, вместо того что сувать лишний раз в стек BC.

axor 17th July 2005 00:29

Quote:

Originally Posted by newart
PRSHAD1 PUSH BC

.......

POP BC
DJNZ PRSHAD1

И тут тоже можно использовать LX например, вместо того что сувать лишний раз в стек BC.

А какова скорость работы с половинками индексных регистров?
На сколько я помню вся работа с полными индексными регистрами выполняется гораздо медленнее чем все остальные команды. Как обстоят дела с половинками не в курсе.

axor 17th July 2005 00:32

Quote:

Originally Posted by newart
ADD HL,HL ;HL=HL*32
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
Этот кусок точно можно ускорить, странно но подобное я видел и в ЧВ.

А как ускорить?

Подскажи, как можно быстро по коду в HL - 0-511 высчитать адрес спрайта? Спрайты, понятно, выровнены по адресу (#c000), но формат линейный (почти).

Или подскажите кто-нибудь, как можно быстро умножить на 32.

axor 17th July 2005 00:38

Идея
 
Если бы не формат анимации на карте, то можно было бы карту хранить в более выгодном формате. А именно, уже сразу умножить код спрайта на 32. Все равно в карте он занимает 2 байта. Но, блин, у меня там анимация:( Хотя... Надо подумать :)

axor 17th July 2005 10:48

Дополнения по идее
 
Можно не только хранить в карте уже умноженное число на 32, а сразу адрес спрайта. Таким образом у меня на выводе карты будет экономиться порядка 10000 тактов.

Пока правда не придумал как быть с анимацией. Но вроде выход есть. Ведь все адреса спрайтов четные. Поэтому можно задействовать 1-й бит в числе...

Shiru 17th July 2005 10:52

Вообще, если адреса хранить - они будут не просто чётные, а все младшие 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.