Медитирую, но не могу разобрать магию с регистром А.
Так понимаю, в IX окажется адрес со смещением на 12 минус удвоенная ширина спрайта?
Как оно работает? Не понятна часть где sbc.
- - - Добавлено - - -Код:.... ld bc, (SAV_SPR_HEIGHT) ; B = cellwidth, C = pixheight ld a, b ; A = cellwidth dec a add a, a ; A = (cellwidth - 1) * 2 sub #0A ; #0A = (6-1)*2 ; 6 = max cellwidth of sprite ld e, a ld a, 0 sbc a, 0 ld d, a add ix, de ; ix=destination adr ....
Написал, и похоже, сам уже понял
sbc учитывает CY, который получен в sub #0A. Если ширина спрайта меньше 6, то sbc a, 0 даёт в результате FF, и в de у нас будет отрицательное число. А если ширина равна 6, то CY сброшен, и в de получится ноль.
![]()



Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 

