Пример подпрограммы рисования спрайта с маской в режиме COLOR2M размером 24х24 точки по координатам, заданным в знакоместах. Спрайт в памяти хранится так: байт маски 1 линии в столбике, байт данных 1 линии в столбике, байт маски 2 линии в столбике, байт данных 2 линии в столбике, ... байт маски 24 линии в столбике, байт данных 24 линии в столбике. Затем аналогично записан второй и третий столбики спрайта.
Код:
; перед выводом спрайтов устанавливаетя режим цвета color_mode = COLOR2M
; и выбирается номер слоя current_layer для рисования
;
; hl - адрес спрайта
; d - координата x в знакоместах
; e - координата y в знакоместах
; a - цвет спрайта, соответствует стандартному атрибуту Спектрума
ld (attr), a ; устанавливаем цвет спрайта
sla e ; вычисляем адрес младшего байта e в области пикселов
sla e ; старший байт d соответствует координете x
sla e
push de ; сохраняем координаты начала столбика
dup 24 ; рисуем 1 столбик спрайта высотой 24 байта
ldi
dec e
ldi
edup
pop de ; восстанавливаем координаты начала столбика
inc d ; переходим к столбику справа
push de ; сохраняем координаты начала столбика
dup 24 ; рисуем 2 столбик спрайта высотой 24 байта
ldi
dec e
ldi
edup
pop de ; восстанавливаем координаты начала столбика
inc d ; переходим к столбику справа
dup 24 ; рисуем 3 столбик спрайта высотой 24 байта
ldi
dec e
ldi
edup
ret
Пример подпрограммы рисования спрайта без маски в режиме COLOR1C размером 24х24 точки по координатам, заданным в знакоместах. Спрайт в памяти хранится так: байт данных 1 линии в столбике, байт данных 2 линии в столбике, ... байт данных 24 линии в столбике. Затем аналогично записан второй и третий столбики спрайта.
Код:
; перед выводом спрайтов устанавливаетя режим цвета color_mode = COLOR1C
; и выбирается номер слоя current_layer для рисования
;
; hl - адрес спрайта
; d - координата x в знакоместах
; e - координата y в знакоместах
; a - цвет спрайта от 1 до 15
ld (color), a ; устанавливаем цвет спрайта
sla e ; вычисляем адрес младшего байта e в области пикселов
sla e ; старший байт d соответствует координете x
sla e
push de ; сохраняем координаты начала столбика
dup 24 ; рисуем 1 столбик спрайта высотой 24 байта
ldi
edup
pop de ; восстанавливаем координаты начала столбика
inc d ; переходим к столбику справа
push de ; сохраняем координаты начала столбика
dup 24 ; рисуем 2 столбик спрайта высотой 24 байта
ldi
edup
pop de ; восстанавливаем координаты начала столбика
inc d ; переходим к столбику справа
dup 24 ; рисуем 3 столбик спрайта высотой 24 байта
ldi
edup
ret
Пример подпрограммы стирания спрайта размером 24х24 точки по координатам, заданным в знакоместах.
Код:
; перед стиранием спрайтов устанавливаетя режим цвета color_mode = COLOR1C,
; цвет для стирания color = 0 и выбирается номер слоя current_layer для стирания
;
; d - координата x в знакоместах
; e - координата y в знакоместах
sla e ; вычисляем адрес младшего байта e в области пикселов
sla e ; старший байт d соответствует координете x
sla e
ld a, #FF; байт для стирания - стираем все 8 точек в байте
dup 24 ; стираем 1 столбик спрайта высотой 24 байта сверху-вниз
ld (de),a
inc e
edup
inc d ; переходим к столбику справа
dup 24 ; стираем 2 столбик спрайта высотой 24 байта снизу-вверх
dec e
ld (de),a
edup
inc d ; переходим к столбику справа
dup 24 ; стираем 3 столбик спрайта высотой 24 байта сверху-вниз
ld (de),a
inc e
edup
ret