diff --git a/split_screen/calc_freq.c b/split_screen/calc_freq.c index 50571054..c11a88b2 100644 --- a/split_screen/calc_freq.c +++ b/split_screen/calc_freq.c @@ -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); diff --git a/split_screen/credits.s b/split_screen/credits.s index 3c20bf9f..d08e3a18 100644 --- a/split_screen/credits.s +++ b/split_screen/credits.s @@ -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