credits: text scrolling works!!!!

This commit is contained in:
Vince Weaver 2018-07-06 14:44:00 -04:00
parent 2db0d40a26
commit a8246b7ea0
2 changed files with 70 additions and 16 deletions

View File

@ -9,7 +9,7 @@ int main(int argc, char **argv) {
// desired=5196; // desired=5196;
// desired=4547; // desired=4547;
// desired=9685; // desired=9685;
desired=429; desired=4431;
printf("You want %d cycles\n",desired); printf("You want %d cycles\n",desired);

View File

@ -10,6 +10,7 @@
LETTERY = $66 LETTERY = $66
LETTERD = $67 LETTERD = $67
LETTER = $68 LETTER = $68
BLARGH = $69
;=================== ;===================
; init screen ; init screen
@ -471,19 +472,20 @@ loop6:
jsr move_letters jsr move_letters ; 6+110
; Blanking time: 4550 ; Blanking time: 4550
; move_letters -116
; JMP at end -3 ; JMP at end -3
;========================4547 cycles ;========================4431 cycles
; Try X=13 Y=64 cycles=4545 R2 ; Try X=176 Y=5 cycles=4431
lda #0 ; 2
; lda #0 ; 2 ; lda #0 ; 2
ldy #64 ; 2 ; lda #0 ; 2
ldy #5 ; 2
loop7: loop7:
ldx #13 ; 2 ldx #176 ; 2
loop8: loop8:
dex ; 2 dex ; 2
bne loop8 ; 2nt/3 bne loop8 ; 2nt/3
@ -675,22 +677,31 @@ green_loop:
;=============================================== ;===============================================
; Move Letters ; Move Letters
;=============================================== ;===============================================
; ; Normal =10+25+38+9 = 82 need 28 (28)
; End of line =10+25+38+37 = 110
; Next line =10+5+12+34 = 61 need 49 (28+21)
; done entirely =10+5+9 = 24 need 86 (28+21+37)
; all forced to be 109
move_letters: move_letters:
ldy #0 ; 2 ldy #0 ; 2
lda (LETTERL),Y ; 5 lda (LETTERL),Y ; 5
sta LETTER ; 3 sta LETTER ; 3
;==========
; 10
bmi letter_special bmi letter_special
; 2 ; 2
lda LETTERY ; 3 lda LETTERY ; 3
asl ; 2 asl ; 2
tay ; 2 tay ; 2
lda gr_offsets,Y ; lookup low-res memory address ; 5 lda gr_offsets,Y ; lookup low-res memory address ; 4
sta BASL ; store out low byte of addy ; 3 sta BASL ; store out low byte of addy ; 3
lda gr_offsets+1,Y ; look up high byte ; 5 lda gr_offsets+1,Y ; look up high byte ; 4
sta BASH ; 3 sta BASH ; 3
lda #0 ; cycle-killer ; 2
;==========
; 25
ldy #0 ; erase old char with space ; 2 ldy #0 ; erase old char with space ; 2
lda #' '|$80 ; 2 lda #' '|$80 ; 2
@ -706,9 +717,17 @@ move_letters:
lda LETTERX ; 3 lda LETTERX ; 3
cmp LETTERD ; 3 cmp LETTERD ; 3
bne letter_ok ;===========
; 38
beq letter_next
; 2 ; 2
lda #0 ; 2
lda #0 ; 2
jmp waste_28 ; 3
;==========
; 9
letter_next: letter_next:
; 3
clc ; 2 clc ; 2
lda LETTERL ; 3 lda LETTERL ; 3
adc #1 ; 2 adc #1 ; 2
@ -719,18 +738,23 @@ letter_next:
inc LETTERD ; 5 inc LETTERD ; 5
lda #39 ; 2 lda #39 ; 2
sta LETTERX ; 3 sta LETTERX ; 3
letter_ok:
; 3
rts ; 6 rts ; 6
;===========
; 37
letter_special: letter_special:
; 3 ; 3
cmp #$ff ; 2 cmp #$ff ; 2
;==========
; 5
beq letter_done beq letter_done
; 2 ; 2
ldy #1 ; 2 ldy #1 ; 2
lda (LETTERL),Y ; 5 lda (LETTERL),Y ; 5
sta LETTERY ; 3 sta LETTERY ; 3
;===========
; 12
iny ; 2 iny ; 2
lda (LETTERL),Y ; 5 lda (LETTERL),Y ; 5
@ -743,10 +767,40 @@ letter_special:
lda LETTERH ; 3 lda LETTERH ; 3
adc #0 ; 2 adc #0 ; 2
sta LETTERH ; 3 sta LETTERH ; 3
lda LETTERH ; waste ; 3
jmp waste_21 ; 3
;===========
; 34
letter_done: letter_done:
;3/0 ; 3
rts ; 6 lda LETTERH ; 3
lda LETTERH ; 3
waste_37:
ldx #0 ; 2
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
waste_21:
ldx #0 ; 2
ldx #0 ; 2
ldx #0 ; 2
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
waste_28:
ldx #0 ; 2
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
inc BLARGH ; 5
rts ; 6
letters: letters:
;.byte 1,15 ;.byte 1,15