Сообщение от
Jimmy Falcon
В итоге так:
Sync:
ld e,#0f
uim2: ld a,(#5880); <<- шедевр программирования, почти анекдот
ld a,e; <<- про два jmp'а подряд :)
in a,(#fd)
cp e
jr nz,uim2
Область атрибутов экрана в которой хотим чтобы сработал этот Sync нужно закрасить кодом 0xF. HALT вообще убрал, прерывания запретил. В итоге, сходу 9 врагов летают на 50fps без тормозов! Работает на эмуляторе Specnetide. На других пока не пробовал. Пришла ещё мысль переписать немного процедуру передвижения врагов чтобы можно было переместить её в "рисовальную" часть растра (сейчас она в силу алгоритма находится в тёмной части). В общем, попозже погоняю на разных эмулях.
А вообще, если кому интересно, процедура проверки работы floating bus вот (целиком):
floating:
ld a,#f
ld b,32
ld hl,#5a40
um1: ld (hl),a
inc l
djnz um1
fl_bus:
ld e,#0f
um2: ld a,(#5880)
ld a,e
in a,(#fd)
cp #f
jp nz,um2
ld a,1
out (254),a
ld b,128
djnz $
ld a,7
out (254),a
jr fl_bus
Она должна рисовать синюю полосу на экране и такую же на бордюре. Если на бордюре не рисует, значит не пашет у вас. ) Попозже .tap скину для проверки.