Код:
;вывод спрайта в системе битпланов Вектор 06
;ширина спрайта -24
;на входе
;bc адрес спрайта
;de aдрес на экране
;E-Y D-X
;A высота спрайта/2
drop24
ld hl,0
add hl,sp
ld (sprite_sp0),hl
ld h,b
ld l,c
ld c,(hl)
inc hl
ld b,(hl)
inc hl
ld sp,hl
;задаем Y в L
ld l,e
;задаем высоту спрайта в E
ld e,a
;задаем X в A
ld a,d
;переход между битпланами
ld d,#20
drop240
ld h,a
;рисуем на первом плане
ld (hl),c
inc h
ld (hl),b
inc h
pop bc
ld (hl),c
;переход на второй битплан
add a,d
ld h,a
;рисуем на втором плане
ld (hl),b
inc h
pop bc
ld (hl),c
inc h
ld (hl),b
pop bc
;переход на третий битплан
add a,d
ld h,a
;рисуем на третьем плане
ld (hl),c
inc h
ld (hl),b
inc h
pop bc
ld (hl),c
;возвращаемся на первый план
sub #40
;переходим на следующую строку
inc l
;повторяем цикл рисования
;
ld (hl),b
inc h
pop bc
ld (hl),c
inc h
ld (hl),b
pop bc
;переход на второй битплан
add a,d
ld h,a
;рисуем на втором плане
ld (hl),c
inc h
ld (hl),b
inc h
pop bc
ld (hl),c
;переход на третий битплан
add a,d
ld h,a
;рисуем на третьем плане
ld (hl),b
inc h
pop bc
ld (hl),c
inc h
ld (hl),b
;выбираем следующую пару байтов для цикла рисования
pop bc
;возвращаемся на первый план
sub #40
;переходим на следующую строку
inc l
;проверяем на завершение цикла
dec e
jp nz,drop240
sprite_sp
ld sp,#3131
sprite_sp0 equ $-2
ret
;ширина спрайта -32
;на входе
;bc адрес спрайта
;de aдрес на экране
;E-Y D-X
;A высота спрайта/2
drop32
ld hl,0
add hl,sp
ld (sprite_sp0),hl
ld h,b
ld l,c
ld c,(hl)
inc hl
ld b,(hl)
inc hl
ld sp,hl
;задаем Y в L
ld l,e
;задаем высоту спрайта в E
ld e,a
;задаем X в A
ld a,d
;переход между битпланами
ld d,#20
drop320
ld h,a
;рисуем на первом плане
ld (hl),c
inc h
ld (hl),b
inc h
pop bc
ld (hl),c
inc h
ld (hl),b
pop bc
;переход на второй битплан
add a,d
ld h,a
;рисуем на втором плане
ld (hl),c
inc h
ld (hl),b
inc h
pop bc
ld (hl),c
inc h
ld (hl),b
pop bc
;переход на третий битплан
add a,d
ld h,a
;рисуем на третьем плане
ld (hl),c
inc h
ld (hl),b
inc h
pop bc
ld (hl),c
inc h
ld (hl),b
pop bc
;возвращаемся на первый план
sub #40
;переходим на следующую строку
inc l
;повторяем цикл рисования
;
ld (hl),c
inc h
ld (hl),b
inc h
pop bc
ld (hl),c
inc h
ld (hl),b
pop bc
;переход на второй битплан
add a,d
ld h,a
;рисуем на втором плане
ld (hl),c
inc h
ld (hl),b
inc h
pop bc
ld (hl),c
inc h
ld (hl),b
pop bc
;переход на третий битплан
add a,d
ld h,a
;рисуем на третьем плане
ld (hl),c
inc h
ld (hl),b
inc h
pop bc
ld (hl),c
inc h
ld (hl),b
;выбираем следующую пару байтов для цикла рисования
pop bc
;возвращаемся на первый план
sub #40
;переходим на следующую строку
inc l
;проверяем на завершение цикла
dec e
jp nz,drop320
jp sprite_sp