Пример подпрограммы рисования спрайта с маской в режиме 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




Ответить с цитированием