Вопрос ультра-нуба.
Копирую DEFB массив атрибутов кастомной размерности в буфер по заданным координатам. Затем выплёскиваю его на экран.
Оффсет перехода на след. строку хардкодом задан. Как мне сделать так, чтоб его считала машина? Я бы мог конечно вычислять записывая в память. Но это слоупочно, а регистров не осталось свободных. Может сможете как-то оптимизнуть там через теневые/индексные регистры?
Код:
DRAW_ATTR
ld de, SPR_ATTR ; указатель на массив defb
ld c,3 ;шырина
ld b,5 ;высота
push bc
jp VIRT_ATTR
VIRT_ATTR
ld a,(_ATTRY)
ld b,a
ld a,(_ATTRX)
ld c,a
VIRT_ATTR_1
; расчет адреса атрибутов знакоместа в DE, B-вертик.координата, C-гориз.координата
LD A,B
RRCA
RRCA
RRCA
LD L,A
AND 31
; OR 88 ; 88*256=22582
OR 248 ; 57344+6144=63488/256=248
LD H,A
LD A,L
AND 252
OR C
LD L,A
pop bc
DRAW_SPR_1 push bc
ld a,(de)
inc de
;LD A,(_ATTRC)
LD (HL),A
inc hl
pop bc
dec c
jr nz, DRAW_SPR_1
push de
ld de, 32-8 ; ХАРДКОД
add hl,de ; на след. строку
pop de
ld c,8 ; ТОЖЕ ХАРДКОД
djnz DRAW_SPR_1
RET
VIRT_ATTR_TO_SCR
ld bc,768
ld de,16384+6144
ld hl, 57344+6144
ldir
RET