ZXNet эхоконференция «code.zx»


тема: cursor



от: 812/03.00
кому: All
дата: 09 Jan 1998

Hi All !

Вот подпросранки работы с курсором:



MAIN_CURSOR
CALL RESTORE_CURSOR
ART_CURSOR
EXX
LD DE,BUFFER
EXX
LD BC,(COOR_1)
LD (COOR_0),BC
CALL COORDS
ADD A,A
ADD A,A
ADD A,A
ADD A,A
ADD A,A
LD L,A
LD H,0
ADD HL,HL
LD DE,CURSOR
ADD HL,DE
LD LX,16
LOOP_1 EX DE,HL
CALL COORDS
LD A,H
EXX
LD H,A
EXX
LD A,L
EXX
LD L,A
LDI
LD A,(HL)
LD (DE),A
INC DE
EXX
EX DE,HL
LD A,(DE)
AND (HL)
INC HL
OR (HL)
LD (DE),A
INC HL
INC DE
LD A,(DE)
AND (HL)
INC HL
OR (HL)
LD (DE),A
INC HL
INC B
DEC LX
JR NZ,LOOP_1
RET

RESTORE_CURSOR
LD DE,BUFFER
LD BC,(COOR_0)
LD LX,16
LOOP_0 CALL COORDS
LD A,(DE)
LD (HL),A
INC HL
INC E
LD A,(DE)
LD (HL),A
INC E
INC B
DEC LX
JR NZ,LOOP_0
RET

COORDS LD A,B
CP 192
JR NC,NULL_HL
RRCA
RRCA
RRCA
LD L,A
AND #18
OR #40
LD H,A
LD A,B
AND 7
OR H
LD H,A
LD A,L
LD L,C
RRA
RR L
RRA
RR L
RRA
RR L
LD A,C
AND 7
RET
NULL_HL LD H,0
RET

COOR_0 DEFW 0
COOR_1 DEFW 0

BUFFER DEFS 48

CURSOR LCODE "CURSOR"


И так, подпрограмма main_cursor ,
основная, она вызывается на прерывании,
или при изменении координат. art_cursor
вызывается один раз когда мы начинаем
рисовать курсор. restore_cursor что бы
убрать курсор с экрана.

Курсор содержиться в следущем формате
2x2 знакоместа, то есть 16 на 16 пикселей
причем второе знакоместо по горизонтали
збито #ff. для удобства, маска курсора
и сам курсор перемешаны, то есть кодовый
блок "CURSOR" байт_маски+байт_курсора+
байт_маски+байт_курсора... и так
процедуры я думаю понятны. единственное
это процедура COORD , она помогает легко
вычислять нужный адрес по координатам.

▌▌║▌█▐│▌▌▐▐ WiTh The BeST wIsheS fROM CREATOR product
▌812/03.00▐ Powered by Cyrix 6x86L 200+/16DIMM/S3TrV2 2MB/1.6GB


-+- SMM version 1.05




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Премьера - Mortal Kombat: что ждёт Вас в полной версии игры и некоторые коментарии к demo версии.
COMICS - Стихотворения : Про птичек , Про пингвина , Про ужа.
Cоding - В этой статье я попытаюсь рассказать, о том как максимально быстро обсчитать трехмерное пространство. Печать точек. Построение линии. Умножение/деление. SIN (x), COS (x). Поворот осей x,y,z.
Infotek - Реклама и объявления.
Урок английского - Александр КАМНЕВ, Борис ФАЙФЕЛЬ: Урок английского.

В этот день...   26 апреля