; Tried only drawing if changed ; but page flipping means this can go wrong unless we draw to both put_letters: ;================ ; First -- Note A ;================ first_note_a: lda #$bb sta sprite_color_smc+1 ldx note_a+NOTE_NOTE ; cpx olda ; beq first_note_b ; stx olda clc lda note_lookup_letter,X and #$7f adc #letter_a adc #0 sta INH lda #0 sta XPOS lda #2 sta YPOS jsr put_sprite ; second clc ldx note_a+NOTE_NOTE lda note_lookup_letter,X and #$80 bne sharp_a lda #letter_none sta INH bne do_sharp_a ; branch always sharp_a: lda #letter_sharp sta INH do_sharp_a: lda #4 sta XPOS lda #2 sta YPOS jsr put_sprite ; third clc ldx note_a+NOTE_NOTE lda note_lookup_number,X adc #number_0 adc #0 sta INH lda #8 sta XPOS lda #2 sta YPOS jsr put_sprite ;================ ; First -- Note B ;================ first_note_b: lda #$22 sta sprite_color_smc+1 ldx note_b+NOTE_NOTE ; cpx oldb ; beq first_note_c ; stx oldb clc lda note_lookup_letter,X and #$7f adc #letter_a adc #0 sta INH lda #14 sta XPOS lda #2 sta YPOS jsr put_sprite ; second clc ldx note_b+NOTE_NOTE lda note_lookup_letter,X and #$80 bne sharp_b lda #letter_none sta INH bne do_sharp_b ; branch always sharp_b: lda #letter_sharp sta INH do_sharp_b: lda #18 sta XPOS lda #2 sta YPOS jsr put_sprite ; third clc ldx note_b+NOTE_NOTE lda note_lookup_number,X adc #number_0 adc #0 sta INH lda #22 sta XPOS lda #2 sta YPOS jsr put_sprite ;================ ; First -- Note C ;================ first_note_c: lda #$33 sta sprite_color_smc+1 ldx note_c+NOTE_NOTE ; cpx oldc ; beq done_print_note ; stx oldc clc lda note_lookup_letter,X and #$7f adc #letter_a adc #0 sta INH lda #28 sta XPOS lda #2 sta YPOS jsr put_sprite ; second clc ldx note_c+NOTE_NOTE lda note_lookup_letter,X and #$80 bne sharp_c lda #letter_none sta INH bne do_sharp_c ; branch always sharp_c: lda #letter_sharp sta INH do_sharp_c: lda #32 sta XPOS lda #2 sta YPOS jsr put_sprite ; third clc ldx note_c+NOTE_NOTE lda note_lookup_number,X adc #number_0 adc #0 sta INH lda #36 sta XPOS lda #2 sta YPOS jmp put_sprite done_print_note: ;rts olda: .byte $00 oldb: .byte $00 oldc: .byte $00 LETTER_A_OFFSET=0 LETTER_B_OFFSET=11 LETTER_C_OFFSET=22 LETTER_D_OFFSET=33 LETTER_E_OFFSET=44 LETTER_F_OFFSET=55 LETTER_G_OFFSET=66 SHARP=$80 NUMBER_0_OFFSET=0 NUMBER_1_OFFSET=11 NUMBER_2_OFFSET=22 NUMBER_3_OFFSET=33 NUMBER_4_OFFSET=44 NUMBER_5_OFFSET=55 NUMBER_6_OFFSET=66 NUMBER_7_OFFSET=77 NUMBER_8_OFFSET=88 NUMBER_9_OFFSET=99 letter_a: .byte 3,3 .byte $f0,$0f,$f0 .byte $ff,$0f,$ff .byte $ff,$00,$ff letter_b: .byte 3,3 .byte $ff,$0f,$f0 .byte $ff,$0f,$f0 .byte $ff,$f0,$0f letter_c: .byte 3,3 .byte $f0,$0f,$0f .byte $ff,$00,$00 .byte $0f,$f0,$f0 letter_d: .byte 3,3 .byte $ff,$0f,$f0 .byte $ff,$00,$ff .byte $ff,$f0,$0f letter_e: .byte 3,3 .byte $ff,$0f,$0f .byte $ff,$0f,$00 .byte $ff,$f0,$f0 letter_f: .byte 3,3 .byte $ff,$0f,$0f .byte $ff,$0f,$00 .byte $ff,$00,$00 letter_g: .byte 3,3 .byte $f0,$0f,$0f .byte $ff,$00,$f0 .byte $0f,$f0,$ff letter_sharp: .byte 3,3 .byte $ff,$f0,$ff .byte $ff,$f0,$ff .byte $0f,$00,$0f letter_none: .byte 3,3 .byte $00,$00,$00 .byte $00,$00,$00 .byte $00,$00,$00 number_0: .byte 3,3 .byte $ff,$0f,$ff .byte $ff,$00,$ff .byte $ff,$f0,$ff number_1: .byte 3,3 .byte $00,$ff,$00 .byte $00,$ff,$00 .byte $00,$ff,$00 number_2: .byte 3,3 .byte $0f,$0f,$ff .byte $ff,$0f,$0f .byte $ff,$f0,$f0 number_3: .byte 3,3 .byte $0f,$0f,$ff .byte $0f,$0f,$ff .byte $f0,$f0,$ff number_4: .byte 3,3 .byte $ff,$00,$ff .byte $0f,$0f,$ff .byte $00,$00,$ff number_5: .byte 3,3 .byte $ff,$0f,$0f .byte $0f,$0f,$ff .byte $f0,$f0,$ff number_6: .byte 3,3 .byte $ff,$0f,$0f .byte $ff,$0f,$f0 .byte $ff,$f0,$ff number_7: .byte 3,3 .byte $0f,$0f,$ff .byte $00,$00,$ff .byte $00,$00,$ff number_8: .byte 3,3 .byte $ff,$0f,$ff .byte $ff,$0f,$ff .byte $ff,$f0,$ff number_9: .byte 3,3 .byte $ff,$0f,$ff .byte $0f,$0f,$ff .byte $00,$00,$ff note_lookup_letter: ; "C-1","C#1","D-1","D#1","E-1","F-1","F#1","G-1", // 50 ; "G#1","A-1","A#1","B-1", ; 1 .byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP .byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP .byte LETTER_E_OFFSET .byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP .byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP .byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP .byte LETTER_B_OFFSET ; 2 .byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP .byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP .byte LETTER_E_OFFSET .byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP .byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP .byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP .byte LETTER_B_OFFSET ; 3 .byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP .byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP .byte LETTER_E_OFFSET .byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP .byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP .byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP .byte LETTER_B_OFFSET ; 4 .byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP .byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP .byte LETTER_E_OFFSET .byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP .byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP .byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP .byte LETTER_B_OFFSET ; 5 .byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP .byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP .byte LETTER_E_OFFSET .byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP .byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP .byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP .byte LETTER_B_OFFSET ; 6 .byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP .byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP .byte LETTER_E_OFFSET .byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP .byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP .byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP .byte LETTER_B_OFFSET ; 7 .byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP .byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP .byte LETTER_E_OFFSET .byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP .byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP .byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP .byte LETTER_B_OFFSET ; 8 .byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP .byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP .byte LETTER_E_OFFSET .byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP .byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP .byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP .byte LETTER_B_OFFSET note_lookup_number: ; 1 .byte NUMBER_1_OFFSET,NUMBER_1_OFFSET,NUMBER_1_OFFSET .byte NUMBER_1_OFFSET,NUMBER_1_OFFSET,NUMBER_1_OFFSET .byte NUMBER_1_OFFSET,NUMBER_1_OFFSET,NUMBER_1_OFFSET .byte NUMBER_1_OFFSET,NUMBER_1_OFFSET,NUMBER_1_OFFSET ; 2 .byte NUMBER_2_OFFSET,NUMBER_2_OFFSET,NUMBER_2_OFFSET .byte NUMBER_2_OFFSET,NUMBER_2_OFFSET,NUMBER_2_OFFSET .byte NUMBER_2_OFFSET,NUMBER_2_OFFSET,NUMBER_2_OFFSET .byte NUMBER_2_OFFSET,NUMBER_2_OFFSET,NUMBER_2_OFFSET ; 3 .byte NUMBER_3_OFFSET,NUMBER_3_OFFSET,NUMBER_3_OFFSET .byte NUMBER_3_OFFSET,NUMBER_3_OFFSET,NUMBER_3_OFFSET .byte NUMBER_3_OFFSET,NUMBER_3_OFFSET,NUMBER_3_OFFSET .byte NUMBER_3_OFFSET,NUMBER_3_OFFSET,NUMBER_3_OFFSET ; 4 .byte NUMBER_4_OFFSET,NUMBER_4_OFFSET,NUMBER_4_OFFSET .byte NUMBER_4_OFFSET,NUMBER_4_OFFSET,NUMBER_4_OFFSET .byte NUMBER_4_OFFSET,NUMBER_4_OFFSET,NUMBER_4_OFFSET .byte NUMBER_4_OFFSET,NUMBER_4_OFFSET,NUMBER_4_OFFSET ; 5 .byte NUMBER_5_OFFSET,NUMBER_5_OFFSET,NUMBER_5_OFFSET .byte NUMBER_5_OFFSET,NUMBER_5_OFFSET,NUMBER_5_OFFSET .byte NUMBER_5_OFFSET,NUMBER_5_OFFSET,NUMBER_5_OFFSET .byte NUMBER_5_OFFSET,NUMBER_5_OFFSET,NUMBER_5_OFFSET ; 6 .byte NUMBER_6_OFFSET,NUMBER_6_OFFSET,NUMBER_6_OFFSET .byte NUMBER_6_OFFSET,NUMBER_6_OFFSET,NUMBER_6_OFFSET .byte NUMBER_6_OFFSET,NUMBER_6_OFFSET,NUMBER_6_OFFSET .byte NUMBER_6_OFFSET,NUMBER_6_OFFSET,NUMBER_6_OFFSET ; 7 .byte NUMBER_7_OFFSET,NUMBER_7_OFFSET,NUMBER_7_OFFSET .byte NUMBER_7_OFFSET,NUMBER_7_OFFSET,NUMBER_7_OFFSET .byte NUMBER_7_OFFSET,NUMBER_7_OFFSET,NUMBER_7_OFFSET .byte NUMBER_7_OFFSET,NUMBER_7_OFFSET,NUMBER_7_OFFSET ; 8 .byte NUMBER_8_OFFSET,NUMBER_8_OFFSET,NUMBER_8_OFFSET .byte NUMBER_8_OFFSET,NUMBER_8_OFFSET,NUMBER_8_OFFSET .byte NUMBER_8_OFFSET,NUMBER_8_OFFSET,NUMBER_8_OFFSET .byte NUMBER_8_OFFSET,NUMBER_8_OFFSET,NUMBER_8_OFFSET