diff --git a/split_screen/calc_freq.c b/split_screen/calc_freq.c index c11a88b2..e704deb1 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=4431; + desired=4704; printf("You want %d cycles\n",desired); diff --git a/split_screen/credits.s b/split_screen/credits.s index 0b386d61..7da5e353 100644 --- a/split_screen/credits.s +++ b/split_screen/credits.s @@ -450,24 +450,29 @@ loop4: ;========================= ; play mockingboard + ; 11+ 84*5 + 10*4 + 21 = 492 + lda MBASE ; 3 + sta MB_ADDRH ; 3 + lda #0 ; 2 + sta MB_ADDRL ; 3 + ;============= + ; 11 - lda MBASE - sta MB_ADDRH - lda #0 - sta MB_ADDRL - - ldx #0 - ldy MBOFFSET - lda (MB_ADDRL),Y - sta MB_VALUE - jsr write_ay_both - - clc - lda #6 - adc MB_ADDRH - sta MB_ADDRH + ldx #0 ; 2 + ldy MBOFFSET ; 3 + lda (MB_ADDRL),Y ; 5 + sta MB_VALUE ; 3 + jsr write_ay_both ; 6+65 + ;=============== + ; 84 + clc ; 2 + lda #6 ; 2 + adc MB_ADDRH ; 3 + sta MB_ADDRH ; 3 + ;============== + ; 10 ldx #2 ldy MBOFFSET lda (MB_ADDRL),Y @@ -507,30 +512,37 @@ loop4: sta MB_VALUE jsr write_ay_both - lda FRAME - and #1 - clc - adc MBOFFSET - sta MBOFFSET + ; - lda MBASE - adc #0 - sta MBASE + lda FRAME ; 3 + and #1 ; 2 + clc ; 2 + adc MBOFFSET ; 3 + sta MBOFFSET ; 3 + lda MBASE ; 3 + adc #0 ; 2 + sta MBASE ; 3 + ;============= + ; 21 - ; want 5200 - 4 = 5196 cycles - ; 1+y(6+5x) - ; Try X=17 Y=57 cycles=5188, R8 + ; lores want 5200 + ; mockingboard -492 + ; softswitch -4 + ;=================== + ; 4704 cycles + + ; Try X=133 Y=7 cycles=4698 R6 lda #0 ; 2 lda #0 ; 2 lda #0 ; 2 - lda #0 ; 2 +; lda #0 ; 2 - ldy #57 ; 2 + ldy #7 ; 2 loop5: - ldx #17 ; 2 + ldx #133 ; 2 loop6: dex ; 2 bne loop6 ; 2nt/3 @@ -901,9 +913,9 @@ letters: line1:.asciiz " * . " -line2:.asciiz " * . T A L B O T . " -line3:.asciiz " * F A N T A S Y " -line4:.asciiz " * S E V E N " +line2:.asciiz " * . . " +line3:.asciiz " * " +line4:.asciiz " * " line5:.asciiz " . . . " line6:.asciiz " . " diff --git a/split_screen/mockingboard.s b/split_screen/mockingboard.s index 3cd54737..cc5404e7 100644 --- a/split_screen/mockingboard.s +++ b/split_screen/mockingboard.s @@ -120,29 +120,32 @@ reset_ay_right: write_ay_both: ; address - stx MOCK_6522_1_ORA ; put address on PA1 ; 3 - stx MOCK_6522_2_ORA ; put address on PA2 ; 3 + stx MOCK_6522_1_ORA ; put address on PA1 ; 4 + stx MOCK_6522_2_ORA ; put address on PA2 ; 4 lda #MOCK_AY_LATCH_ADDR ; latch_address on PB1 ; 2 - sta MOCK_6522_1_ORB ; latch_address on PB1 ; 3 - sta MOCK_6522_2_ORB ; latch_address on PB2 ; 3 + sta MOCK_6522_1_ORB ; latch_address on PB1 ; 4 + sta MOCK_6522_2_ORB ; latch_address on PB2 ; 4 lda #MOCK_AY_INACTIVE ; go inactive ; 2 - sta MOCK_6522_1_ORB ; 3 - sta MOCK_6522_2_ORB ; 3 - + sta MOCK_6522_1_ORB ; 4 + sta MOCK_6522_2_ORB ; 4 + ;=========== + ; 28 ; value lda MB_VALUE ; 3 - sta MOCK_6522_1_ORA ; put value on PA1 ; 3 - sta MOCK_6522_2_ORA ; put value on PA2 ; 3 + sta MOCK_6522_1_ORA ; put value on PA1 ; 4 + sta MOCK_6522_2_ORA ; put value on PA2 ; 4 lda #MOCK_AY_WRITE ; ; 2 - sta MOCK_6522_1_ORB ; write on PB1 ; 3 - sta MOCK_6522_2_ORB ; write on PB2 ; 3 + sta MOCK_6522_1_ORB ; write on PB1 ; 4 + sta MOCK_6522_2_ORB ; write on PB2 ; 4 lda #MOCK_AY_INACTIVE ; go inactive ; 2 - sta MOCK_6522_1_ORB ; 3 - sta MOCK_6522_2_ORB ; 3 + sta MOCK_6522_1_ORB ; 4 + sta MOCK_6522_2_ORB ; 4 + ;=========== + ; 31 rts ; 6 ;=========== - ; 53 + ; 65 ;======================================= ; Detect a Mockingboard card in Slot4