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=4547;
// desired=9685;
desired=429;
desired=4431;
printf("You want %d cycles\n",desired);

View File

@ -10,6 +10,7 @@
LETTERY = $66
LETTERD = $67
LETTER = $68
BLARGH = $69
;===================
; init screen
@ -471,19 +472,20 @@ loop6:
jsr move_letters
jsr move_letters ; 6+110
; Blanking time: 4550
; move_letters -116
; 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
ldy #64 ; 2
; lda #0 ; 2
ldy #5 ; 2
loop7:
ldx #13 ; 2
ldx #176 ; 2
loop8:
dex ; 2
bne loop8 ; 2nt/3
@ -675,22 +677,31 @@ green_loop:
;===============================================
; 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:
ldy #0 ; 2
lda (LETTERL),Y ; 5
sta LETTER ; 3
;==========
; 10
bmi letter_special
; 2
lda LETTERY ; 3
asl ; 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
lda gr_offsets+1,Y ; look up high byte ; 5
lda gr_offsets+1,Y ; look up high byte ; 4
sta BASH ; 3
lda #0 ; cycle-killer ; 2
;==========
; 25
ldy #0 ; erase old char with space ; 2
lda #' '|$80 ; 2
@ -706,9 +717,17 @@ move_letters:
lda LETTERX ; 3
cmp LETTERD ; 3
bne letter_ok
;===========
; 38
beq letter_next
; 2
lda #0 ; 2
lda #0 ; 2
jmp waste_28 ; 3
;==========
; 9
letter_next:
; 3
clc ; 2
lda LETTERL ; 3
adc #1 ; 2
@ -719,18 +738,23 @@ letter_next:
inc LETTERD ; 5
lda #39 ; 2
sta LETTERX ; 3
letter_ok:
; 3
rts ; 6
;===========
; 37
letter_special:
; 3
cmp #$ff ; 2
;==========
; 5
beq letter_done
; 2
ldy #1 ; 2
lda (LETTERL),Y ; 5
sta LETTERY ; 3
;===========
; 12
iny ; 2
lda (LETTERL),Y ; 5
@ -743,10 +767,40 @@ letter_special:
lda LETTERH ; 3
adc #0 ; 2
sta LETTERH ; 3
lda LETTERH ; waste ; 3
jmp waste_21 ; 3
;===========
; 34
letter_done:
;3/0
rts ; 6
; 3
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:
;.byte 1,15