Napisalem sobie prostego scrolla. Polaczenie coarse i fine scrollingu... Dziala, ale nie do konca plynnie wiec chcialem wrzucic aktualizacje HSCROL do DLI w jakas dolna linie albo przynajmniej czekac na ramke przed aktualizacje tej wartosci. Jest plynniej, ale jest jakas sciema ze smieciami ktore mi sie w pewnym momencie pokazuja na ekranie... Efekt wystepuje wtedy gdy w kodzie odkomentuje procedure czekania na ramke - nawet bez jej wywolania.
Kod:
org $4000
lda #0
sta 559
ldx <antic
ldy >antic
stx 560
sty 561
lda #%00100010
sta 559
; color setup
; text
lda #$38
sta COLOR1_SH
lda #$38
sta COLOR2_SH
COLOR1_SH equ $02C4
COLOR2_SH equ $02C5
INIT_LINE_PTR equ $00
HSCROL equ $D404
FS_COUNT equ $A000
CS_COUNT equ $A001
lda LINE_PTR
sta INIT_LINE_PTR
lda #8
sta FS_COUNT
;jsr frameWait
sta HSCROL
scrollInit
lda #100
sta CS_COUNT
scrollCoarse
jmp scrollFine
scrollFineRet
ldy LINE_PTR
iny
sty LINE_PTR
ldx CS_COUNT
dex
stx CS_COUNT
beq endOfText
jmp scrollCoarse
endOfText
lda INIT_LINE_PTR
sta LINE_PTR
jmp scrollInit
scrollFine
ldx FS_COUNT
dex
stx FS_COUNT
;jsr frameWait
stx HSCROL
jsr delay
cpx #0
bne scrollFine
ldx #8
stx FS_COUNT
;jsr frameWait
stx HSCROL
jmp scrollFineRet
delay
pha
txa
pha
tya
pha
ldx #$0F
ldy #$FF
xLoop
yLoop
dey
beq yOut
jmp yLoop
yOut dex
beq xOut
jmp xLoop
xOut
pla
tay
pla
tax
pla
rts
;frameWait
; lda 20
; cmp 20
; beq *-2
; rts
antic dta b($70,$70,$70)
dta b($00)
dta b($06,$06,$06)
LINE_PTR equ *+1
dta b($56),a(scrollText)
dta b($46),a(emptyText)
dta b($06,$06,$06)
dta b($41),a(antic)
scrollText dta d' OTO MOJ SUPER SCROLL TEST 123 HALLO ATARI 123456789 !!!!!!'
emptyText dta d' '
Odomentujcie sobie procedurke frameWait. (wszystkie jej wywolania sa zakomentowane). Wtedy po jednym kolku linii scrolla na ekran wpadna smieci.
Any idea? Pewnie to jakis banal, ale jakos nie moge na to wpasc...
--------
Atari 65XE + Ultimate 1MB + Stereo + SIO2SD | Atari 520STE + 4MB + UltraSatan | Atari Falcon 030 + CT60e + 14MB ST + 256MB TT + 68882 + CF + Netusbee | Amiga 500 + 1MB + Gotek | Amiga 600 + 2MB Chip + 8MB Fast + CF