что-то аномалия какая-то у меня в процедуре закраски массивом атрибутов в области ректангла.
Есть такая процедурка. С ней всё ок. Тут выводит лишь отдельно взятый атрибут по указанным X|Y
Пробую то же самое уже для массива атрибутов из линейного DEFB сверху вниз/слева направо (правда тут иные регистровые пары используются, и рисуется в буфер), так почему-то при достижении позиции Y определённого значения оно перескакивает на начало экрана. Что-то не то в булевой алгебре AND ORКод:ATTR ld a,(_ATTRY) ld b,a ld a,(_ATTRX) ld c,a ; расчет адреса атрибутов знакоместа в DE, B-вертик.координата, C-гориз.координата LD A,B RRCA RRCA RRCA LD L,A AND 31 OR 88 LD H,A LD A,L AND 252 OR C LD L,A LD A,(_ATTRC) LD (HL),A RET
_SPR_H, _SPR_W - высота/ширина ректангла, соответственно.
Код:ld hl, SPR_ATTR ;указатель на массив DEFB ld a,(_SPR_Y) ld d,a ld a,(_SPR_X) ld e,a ld a,(_SPR_H) ld b,a PUTSPRITES2 push bc push de LD A,D RRCA RRCA RRCA LD C,A AND 31 OR 242 ; 61952/256 LD B,A LD A,C AND 252 OR E LD C,A ld d,b ld e,c ld bc,(_SPR_W) ld b,0 ldir pop de inc d pop bc djnz PUTSPRITES2 ret




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