Сброс портов и данных ТС
Posted: Wed, 02.07.2014 01:43:34
В общем, не буду описывать технические сложности, которые привели к текущей ситуации.
Ясно, что технически это решаться не будет по причине наличия отсутствия места под иниты.
Будем их решать
Итак.
Что делаем, если ваша ТС-программа после сброса начинает показывать что-то не то?
Первое - необходимо установить порты отображения Х и У разных плоскостей в начальное положение:
вторая замеченная фигня - данные о спрайтах остаются в SFILE. Мне очень понравился подход к программированию портов от DDp, и я его немного усовершенствовал по своему разумению.
Итак, боремся тем, что засылаем 3 leap в начале демы:
Ясно, что технически это решаться не будет по причине наличия отсутствия места под иниты.
Будем их решать
Итак.
Что делаем, если ваша ТС-программа после сброса начинает показывать что-то не то?
Первое - необходимо установить порты отображения Х и У разных плоскостей в начальное положение:
- Code: Select all
ld e,8
ld b,#40
call clr_port
ld b,#02
ld e,4
call clr_port
clr_port out (c),a
inc b
dec e
jr nz,$-4
ret
вторая замеченная фигня - данные о спрайтах остаются в SFILE. Мне очень понравился подход к программированию портов от DDp, и я его немного усовершенствовал по своему разумению.
Итак, боремся тем, что засылаем 3 leap в начале демы:
- Code: Select all
ld hl,spr_init
call set_ports
set_ports ld c,#af
ld a,(hl)
cp #ff
jr z,dma_stats
ld b,a
inc hl
ld a,(hl)
inc hl
out (c),a
jr set_ports+2
dma_stats ld bc,DMASTATUS
in a,(c)
AND #80
jr nz,$-4
ret
spr_init
defb #1a,low spr_ex
defb #1b,high spr_ex
defb #1c,2
defb #1d,0
defb #1e,2
defb #1f,0
defb #26,3*6
defb #28,0
db #27,#85
db #ff
spr_ex DB 0
DB %01000000 ; leap
DB 0
DB %00010000
DB 0
DB %11100000
DB 0
DB %01000000 ; leap
DB 0
DB %00010000
DB 0
DB %11100000
DB 0 ;exit
DB %01000000 ; leap
DB 0
DB %00010000
DB 0
DB %11100000