|
Этюды - процедуры быстрого скроллинга экрана.
|
(с) Александр Лавров г.Тольятти. |
280 |
RET |
|
В ZX РЕВЮ 96/3 были да |
290 UP2 |
LD |
A,8 |
ны два скроллинга |
экрана (автор |
300 |
ADD |
A,H |
Вадим Куликов). Эти процедуры |
310 320 |
LD JR |
H,A NXTU |
можно ускорить, |
если заменить |
внугренний цикл (строки с 90 по 130) на LDIR и поменять расчет |
SCROLL DOWN 10 (c) A.Lavrov |
|
адреса следующей линии. |
20 from NEW STANDARD |
Идея |
использовать ылк в |
30 |
ORG |
40000 |
процедурах |
скроллинга взята из |
40 |
LD |
DE,#57E0 |
книги "Как |
написать игру для ZX |
50 |
LD |
HL,#56E0 |
Spectrum" |
(часть |
2-ая) фирмы |
60 |
LD |
A, 191 |
"Питер" |
|
|
70 DW1 |
LD |
ВС,32 |
SCROLL UP |
|
|
80 |
PUSH |
HL |
10 (с) A. Lavrov from |
|
90 |
LDIR |
|
20 NEW STANDARD |
|
100 |
POP |
DE |
30 |
ORG |
40000 |
110 |
LD |
H,D |
40 |
LD |
DE,#4000 |
120 |
LD |
L.E |
50 |
LD |
HL,#4100 |
130 |
DEC |
H |
60 |
LD |
А, 191 |
140 |
EX |
AF.AF' |
70UP1 |
LD |
ВС.32 |
150 |
LD |
A.H |
80 |
PUSH |
HL |
160 |
AND |
#07 |
90 |
LDIR |
|
170 |
XOR |
#07 |
100 |
POP |
DE |
180 |
JR |
Z.DW2 |
110 |
LD |
H,D |
190 NXTD |
EX |
AF.AF' |
120 |
LD |
L,E |
200 |
DEC |
A |
130 |
INC |
H |
210 |
JR |
NZ.DW1 |
140 |
EX |
AF.AF' |
220 |
RET |
|
150 |
LD |
A,H |
230 DW2 |
LD |
A,H |
160 |
AND |
#07 |
240 |
ADD |
A, 8 |
170 |
JR |
NZ.NXTU |
250 |
LD |
H,A |
180 |
LD |
A,H |
260 |
LD |
A.L |
190 |
SUB |
8 |
270 |
SUB |
#20 |
200 |
LD |
H,A |
280 |
LD |
L.A |
210 |
LD |
A, #20 |
290 |
JR |
NC.NXTD |
220 |
ADD |
A,L |
300 |
LD |
L,#E0 |
230 |
LD |
L,A |
310 |
LD |
A,H |
240 |
JR |
C.UP2 |
320 |
SUB |
8 |
250 NXTU |
EX |
AF.AF' |
330 |
LD |
H,A |
260 |
DEC |
A |
340 |
JR |
NXTD |
270 |
JR |
NZ.UP1 |
|
|
|
этюды
Скорость скроллинга должна увеличится почти вдвое. Правда, нарушена синхронность, если использовать процедуры в паре. Т.е. процедура SCROLL DOWN работает медленнее чем SCROLL UP А именно, в каждой установке новой линии на 2 такта, новой строки на 10 тактов и нового сегмента на 2 такта дольше.
Для скроллинга окна надо изменить часть процедуры SCROLL DOWN (для SCROLL_UP это не требуется), вставив такие строки:
280 JR C.DW3
285 LD L,A
290 JR NXTD
295 DW3 LD A,L 300 OR #E0
305 LD L.A
Количество перемещаемых строк (пиксельных) задается в строке 60, в А. Адрес верхнего левого или нижнего левого углов, как и раньше в DE, строка 40. Ширина окна (в знакоместах) в ВС, строка 70.
Чтобы процедуры сами рассчитывали начальный адрес в HL, надо заменить строки 50 и 60 в обоих процедурах, и поставить метку в строку 110: 50 LD А,п
количество пиксельных линий + 1 60 JR s ; метка в строке 110.
СОДЕРЖАНИЕ:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Форум-Игры - в разделе рассмотрены: Dun Darach, Murray Mause (Supercop), Wild West Seymour, Sim City, Hero Quest, Dizzy-Y, Apollo, Cliffhanger, Laser Squad, Movie, Elite, Where Time Stood Still, Sceptre, Carrier Command, Math Day.
-
-
-
-
-
-
-
-
-
|