User Tools

Site Tools


base:matt_gray_-_driller

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

base:matt_gray_-_driller [2015-04-17 04:32] (current)
Line 1: Line 1:
 +====== Disassembly of Matt Gray's "​Driller"​ ======
  
 +<​code>​
 +; da65 V2.12.9 - (C) Copyright 2000-2005, ​ Ullrich von Bassewitz
 +; Created: ​   2009-04-01 09:43:40
 +; Input file: Matt_Gray-Driller.prg
 +
 +
 +track_ptr = $FB
 +pattern_ptr = $FD
 +
 +
 +play_voice:
 + lda tune_ctrl ;​ 0900
 + bne is_playing ;​ 0903
 + sta $D418 ;​ 0905
 + rts ; 0908
 +
 +is_playing:
 + cmp #​$AB ;​ 0909  +
 + beq continue_playing ;​ 090B
 + jmp change_tune ;​ 090D
 +
 +reset_voices:​
 + lda #​$00 ;​ 0910  .
 + sta $D404 ;​ 0912
 + sta $D40B ;​ 0915
 + sta $D412 ;​ 0918
 + lda #​$0F ;​ 091B  O
 + sta $D418 ;​ 091D
 + ldy #​$00 ;​ 0920  .
 + sty voice1_track_index ;​ 0922
 + sty voice2_track_index ;​ 0925
 + sty voice3_track_index ;​ 0928
 + sty voice1_ctrl2 ;​ 092B
 + sty voice2_ctrl2 ;​ 092E
 + sty voice3_ctrl2 ;​ 0931
 + sty voice1_pattern_index ;​ 0934
 + sty voice2_pattern_index ;​ 0937
 + sty voice3_pattern_index ;​ 093A
 + iny ; 093D
 + sty tempo_ctr ;​ 093E
 + jmp voice_done ;​ 0941
 +
 +continue_playing:​
 + ldy voice1_instrument_index,​x ;​ 0944
 + lda possibly_instrument_a0+7,​y ;​ 0947
 + and #​$04 ;​ 094A  D
 + beq L0964 ;​ 094C
 + lda voice1_two_ctr,​x ;​ 094E
 + beq L095E ;​ 0951
 + dec voice1_two_ctr,​x ;​ 0953
 + lda possibly_instrument_a1+2,​y ;​ 0956
 + sta $D404,​x ;​ 0959
 + bne L0964 ;​ 095C
 +L095E:
 + lda possibly_instrument_a0+1,​y ;​ 095E
 + sta $D404,​x ;​ 0961
 +L0964:
 + lda tempo_ctr ;​ 0964
 + bne L096E ;​ 0967
 + dec voice1_ctrl2,​x ;​ 0969
 + bmi L09B6 ;​ 096C
 +L096E:
 + jmp L0B33 ;​ 096E
 +
 +change_tune:​
 + ldy tune_ctrl ;​ 0971
 + lda voice1_tune_trackptr_lo,​y ;​ 0974
 + sta voice1_trackptr ;​ 0977
 + lda voice1_tune_trackptr_hi,​y ;​ 097A
 + sta voice1_trackptr+1 ;​ 097D
 + lda voice2_tune_trackptr_lo,​y ;​ 0980
 + sta voice2_trackptr ;​ 0983
 + lda voice2_tune_trackptr_hi,​y ;​ 0986
 + sta voice2_trackptr+1 ;​ 0989
 + lda voice3_tune_trackptr_lo,​y ;​ 098C
 + sta voice3_trackptr ;​ 098F
 + lda voice3_tune_trackptr_hi,​y ;​ 0992
 + sta voice3_trackptr+1 ;​ 0995
 + lda tune_tempo,​y ;​ 0998
 + sta tempo ;​ 099B
 + jmp reset_voices ;​ 099E
 +
 +voice_done:
 + cpx #​$0E ;​ 09A1  N
 + bne @done ;​ 09A3
 + dec tempo_ctr ;​ 09A5
 + bpl @done ;​ 09A8
 + lda tempo ;​ 09AA
 + sta tempo_ctr ;​ 09AD
 +@done:
 + lda #​$AB ;​ 09B0  +
 + sta tune_ctrl ;​ 09B2
 + rts ; 09B5
 +
 +L09B6:
 + lda voice1_trackptr,​x ;​ 09B6
 + sta track_ptr ;​ 09B9
 + lda voice1_trackptr+1,​x ;​ 09BB
 + sta track_ptr+1 ;​ 09BE
 + ldy voice1_track_index,​x ;​ 09C0
 + lda (track_ptr),​y ;​ 09C3
 + tay ; 09C5
 + lda pattern_lobytes,​y ;​ 09C6
 + sta pattern_ptr ;​ 09C9
 + lda pattern_hibytes,​y ;​ 09CB
 + sta pattern_ptr+1 ;​ 09CE
 + lda #​$FF ;​ 09D0  .
 + sta control3 ;​ 09D2
 + lda #​$00 ;​ 09D5  .
 + sta voice1_whatever+2,​x ;​ 09D7
 + sta voice1_whatever+1,​x ;​ 09DA
 + sta voice1_whatever,​x ;​ 09DD
 +read_note_or_ctrl:​
 + ldy voice1_pattern_index,​x ;​ 09E0
 + lda (pattern_ptr),​y ;​ 09E3
 + cmp #​$FD ;​ 09E5  }
 + bcc check_effect_fb_or_fc ;​ 09E7
 + iny ; 09E9
 + inc voice1_pattern_index,​x ;​ 09EA
 + lda (pattern_ptr),​y ;​ 09ED
 + sta voice1_something+2,​x ;​ 09EF
 +next_note_or_ctrl:​
 + inc voice1_pattern_index,​x ;​ 09F2
 + bne read_note_or_ctrl ;​ 09F5
 +check_effect_fb_or_fc:​
 + cmp #​$FB ;​ 09F7  {
 + bcc @check_effect_fa ;​ 09F9
 + cmp #​$FB ;​ 09FB  {
 + bne @effect_fc_2 ;​ 09FD
 +@effect_fb_1:​
 + lda #​$01 ;​ 09FF  A
 +@do_effect_fb_or_fc:​
 + sta voice1_whatever+2,​x ;​ 0A01
 + iny ; 0A04
 + inc voice1_pattern_index,​x ;​ 0A05
 + lda (pattern_ptr),​y ;​ 0A08
 + sta voice1_something,​x ;​ 0A0A
 + lda #​$00 ;​ 0A0D  .
 + sta voice1_whatever+1,​x ;​ 0A0F
 + sta voice1_whatever,​x ;​ 0A12
 + beq next_note_or_ctrl ;​ 0A15
 +@effect_fc_2:​
 + lda #​$02 ;​ 0A17  B
 + bne @do_effect_fb_or_fc ;​ 0A19
 +@check_effect_fa:​
 + cmp #​$FA ;​ 0A1B  z
 + bcc @plain_note ;​ 0A1D
 + iny ; 0A1F
 + inc voice1_pattern_index,​x ;​ 0A20
 + lda (pattern_ptr),​y ;​ 0A23
 + asl a ; 0A25
 + asl a ; 0A26
 + asl a ; 0A27
 + sta voice1_instrument_index,​x ;​ 0A28
 + tay ; 0A2B
 + lda possibly_instrument_a0,​y ;​ 0A2C
 + pha ; 0A2F
 + and #​$0F ;​ 0A30  O
 + sta voice1_something_else+2,​x ;​ 0A32
 + sta voice1_ctrl0,​x ;​ 0A35
 + pla ; 0A38
 + and #​$F0 ;​ 0A39  p
 + sta voice1_something_else,​x ;​ 0A3B
 + sta voice1_something_else+1,​x ;​ 0A3E
 + jmp next_note_or_ctrl ;​ 0A41
 +
 +@plain_note:​
 + sta voice1_stuff+3,​x ;​ 0A44
 + lda voice1_something+2,​x ;​ 0A47
 + sta voice1_ctrl2,​x ;​ 0A4A
 + lda #​$00 ;​ 0A4D  .
 + sta voice1_whatever+3,​x ;​ 0A4F
 + sta voice1_whatever+4,​x ;​ 0A52
 + lda #​$02 ;​ 0A55  B
 + sta voice1_two_ctr,​x ;​ 0A57
 + ldy voice1_instrument_index,​x ;​ 0A5A
 + lda possibly_instrument_a0+7,​y ;​ 0A5D
 + and #​$02 ;​ 0A60  B
 + beq L0A70 ;​ 0A62
 + lda voice1_something_else+1,​x ;​ 0A64
 + sta voice1_something_else,​x ;​ 0A67
 + lda voice1_ctrl0,​x ;​ 0A6A
 + sta voice1_something_else+2,​x ;​ 0A6D
 +L0A70:
 + lda voice1_stuff+3,​x ;​ 0A70
 + bne L0A88 ;​ 0A73
 + lda voice1_things+6,​x ;​ 0A75
 + sta voice1_stuff+3,​x ;​ 0A78
 + lda #​$00 ;​ 0A7B  .
 + sta voice1_things+6,​x ;​ 0A7D
 + ldy voice1_instrument_index,​x ;​ 0A80
 + dec control3 ;​ 0A83
 + bne L0AAD ;​ 0A86
 +L0A88:
 + sta voice1_things+6,​x ;​ 0A88
 + tay ; 0A8B
 + lda frq_hi,​y ;​ 0A8C
 + sta $D401,​x ;​ 0A8F
 + sta voice1_stuff+2,​x ;​ 0A92
 + sta voice1_stuff+4,​x ;​ 0A95
 + lda frq_lo,​y ;​ 0A98
 + sta $D400,​x ;​ 0A9B
 + sta voice1_stuff+1,​x ;​ 0A9E
 + sta voice1_stuff,​x ;​ 0AA1
 + ldy voice1_instrument_index,​x ;​ 0AA4
 + lda possibly_instrument_a0+6,​y ;​ 0AA7
 + sta $D404,​x ;​ 0AAA
 +L0AAD:
 + lda possibly_instrument_a0+1,​y ;​ 0AAD
 + and control3 ;​ 0AB0
 + sta $D404,​x ;​ 0AB3
 + lda possibly_instrument_a0+2,​y ;​ 0AB6
 + sta $D405,​x ;​ 0AB9
 + lda possibly_instrument_a0+3,​y ;​ 0ABC
 + sta $D406,​x ;​ 0ABF
 + lda voice1_something_else,​x ;​ 0AC2
 + sta $D402,​x ;​ 0AC5
 + lda voice1_something_else+2,​x ;​ 0AC8
 + sta $D403,​x ;​ 0ACB
 + inc voice1_pattern_index,​x ;​ 0ACE
 + ldy voice1_pattern_index,​x ;​ 0AD1
 + lda (pattern_ptr),​y ;​ 0AD4
 + cmp #​$FF ;​ 0AD6  .
 + bne L0AFC ;​ 0AD8
 + lda #​$00 ;​ 0ADA  .
 + sta voice1_pattern_index,​x ;​ 0ADC
 + inc voice1_track_index,​x ;​ 0ADF
 + ldy voice1_track_index,​x ;​ 0AE2
 + lda (track_ptr),​y ;​ 0AE5
 + cmp #​$FF ;​ 0AE7  .
 + bne L0AF2 ;​ 0AE9
 + lda #​$00 ;​ 0AEB  .
 + sta voice1_track_index,​x ;​ 0AED
 + beq L0AFC ;​ 0AF0
 +L0AF2:
 + cmp #​$FE ;​ 0AF2  ~
 + bne L0AFC ;​ 0AF4
 + lda #​$00 ;​ 0AF6  .
 + sta tune_ctrl ;​ 0AF8
 + rts ; 0AFB
 +
 +L0AFC:
 + lda voice1_things+6,​x ;​ 0AFC
 + beq L0B33 ;​ 0AFF
 + ldy voice1_instrument_index,​x ;​ 0B01
 + lda voice1_whatever+2,​x ;​ 0B04
 + bne L0B17 ;​ 0B07
 + lda possibly_instrument_a1+4,​y ;​ 0B09
 + beq L0B1A ;​ 0B0C
 + sta voice1_whatever+2,​x ;​ 0B0E
 + lda possibly_instrument_a1+3,​y ;​ 0B11
 + sta voice1_something,​x ;​ 0B14
 +L0B17:
 + jmp L0C5A ;​ 0B17
 +
 +L0B1A:
 + lda possibly_instrument_a0+5,​y ;​ 0B1A
 + beq L0B22 ;​ 0B1D
 + jmp L0E67 ;​ 0B1F
 +
 +L0B22:
 + sta voice1_whatever+1,​x ;​ 0B22
 + lda possibly_instrument_a1,​y ;​ 0B25
 + beq L0B2D ;​ 0B28
 + jmp L0E89 ;​ 0B2A
 +
 +L0B2D:
 + sta voice1_whatever,​x ;​ 0B2D
 + jmp voice_done ;​ 0B30
 +
 +L0B33:
 + lda possibly_instrument_a0+4,​y ;​ 0B33
 + sta control1 ;​ 0B36
 + beq L0B82 ;​ 0B39
 + lda voice1_whatever2,​x ;​ 0B3B
 + bne L0B62 ;​ 0B3E
 + clc ; 0B40
 + lda voice1_something_else,​x ;​ 0B41
 + adc control1 ;​ 0B44
 + sta voice1_something_else,​x ;​ 0B47
 + sta $D402,​x ;​ 0B4A
 + lda voice1_something_else+2,​x ;​ 0B4D
 + adc #​$00 ;​ 0B50  .
 + sta voice1_something_else+2,​x ;​ 0B52
 + sta $D403,​x ;​ 0B55
 + clc ; 0B58
 + cmp #​$0E ;​ 0B59  N
 + bcc L0B82 ;​ 0B5B
 + inc voice1_whatever2,​x ;​ 0B5D
 + bne L0B82 ;​ 0B60
 +L0B62:
 + lda voice1_something_else,​x ;​ 0B62
 + sec ; 0B65
 + sbc control1 ;​ 0B66
 + sta voice1_something_else,​x ;​ 0B69
 + sta $D402,​x ;​ 0B6C
 + lda voice1_something_else+2,​x ;​ 0B6F
 + sbc #​$00 ;​ 0B72  .
 + sta voice1_something_else+2,​x ;​ 0B74
 + sta $D403,​x ;​ 0B77
 + clc ; 0B7A
 + cmp #​$08 ;​ 0B7B  H
 + bcs L0B82 ;​ 0B7D
 + dec voice1_whatever2,​x ;​ 0B7F
 +L0B82:
 + lda voice1_whatever+1,​x ;​ 0B82
 + beq L0BC0 ;​ 0B85
 + lda voice1_ctrl1,​x ;​ 0B87
 + asl a ; 0B8A
 + tay ; 0B8B
 + lda arpeggio_table,​y ;​ 0B8C
 + sta arp_ptr ;​ 0B8F
 + lda arpeggio_table+1,​y ;​ 0B92
 + sta arp_ptr+1 ;​ 0B95
 + lda voice1_stuff+6,​x ;​ 0B98
 + cmp voice1_stuff+5,​x ;​ 0B9B
 + bne L0BA5 ;​ 0B9E
 + lda #​$00 ;​ 0BA0  .
 + sta voice1_stuff+6,​x ;​ 0BA2
 +L0BA5:
 + tay ; 0BA5
 + lda voice1_stuff+3,​x ;​ 0BA6
 + clc ; 0BA9
 +arp_ptr := * + 1
 + adc arpeggio_0,​y ;​ 0BAA
 + tay ; 0BAD
 + lda frq_lo,​y ;​ 0BAE
 + sta $D400,​x ;​ 0BB1
 + lda frq_hi,​y ;​ 0BB4
 + sta $D401,​x ;​ 0BB7
 + inc voice1_stuff+6,​x ;​ 0BBA
 + jmp voice_done ;​ 0BBD
 +
 +L0BC0:
 + lda voice1_whatever,​x ;​ 0BC0
 + bne L0BC8 ;​ 0BC3
 + jmp L0C5A ;​ 0BC5
 +
 +L0BC8:
 + lda voice1_things,​x ;​ 0BC8
 + beq L0C06 ;​ 0BCB
 + cmp #​$03 ;​ 0BCD  C
 + bcc L0C2F ;​ 0BCF
 + sec ; 0BD1
 + lda voice1_stuff,​x ;​ 0BD2
 + sbc voice1_things+1,​x ;​ 0BD5
 + sta voice1_stuff,​x ;​ 0BD8
 + sta $D400,​x ;​ 0BDB
 + lda voice1_stuff+4,​x ;​ 0BDE
 + sbc #​$00 ;​ 0BE1  .
 + sta voice1_stuff+4,​x ;​ 0BE3
 + sta $D401,​x ;​ 0BE6
 + dec voice1_things+3,​x ;​ 0BE9
 + bne L0C03 ;​ 0BEC
 + lda voice1_things+2,​x ;​ 0BEE
 + sta voice1_things+3,​x ;​ 0BF1
 + inc voice1_things,​x ;​ 0BF4
 + lda voice1_things,​x ;​ 0BF7
 + cmp #​$05 ;​ 0BFA  E
 + bcc L0C03 ;​ 0BFC
 + lda #​$01 ;​ 0BFE  A
 + sta voice1_things,​x ;​ 0C00
 +L0C03:
 + jmp voice_done ;​ 0C03
 +
 +L0C06:
 + sec ; 0C06
 + lda voice1_stuff,​x ;​ 0C07
 + sbc voice1_things+1,​x ;​ 0C0A
 + sta voice1_stuff,​x ;​ 0C0D
 + sta $D400,​x ;​ 0C10
 + lda voice1_stuff+4,​x ;​ 0C13
 + sbc #​$00 ;​ 0C16  .
 + sta voice1_stuff+4,​x ;​ 0C18
 + sta $D401,​x ;​ 0C1B
 + dec voice1_things+3,​x ;​ 0C1E
 + bne L0C2C ;​ 0C21
 + lda voice1_things+2,​x ;​ 0C23
 + sta voice1_things+3,​x ;​ 0C26
 + inc voice1_things,​x ;​ 0C29
 +L0C2C:
 + jmp voice_done ;​ 0C2C
 +
 +L0C2F:
 + clc ; 0C2F
 + lda voice1_stuff,​x ;​ 0C30
 + adc voice1_things+1,​x ;​ 0C33
 + sta voice1_stuff,​x ;​ 0C36
 + sta $D400,​x ;​ 0C39
 + lda voice1_stuff+4,​x ;​ 0C3C
 + adc #​$00 ;​ 0C3F  .
 + sta voice1_stuff+4,​x ;​ 0C41
 + sta $D401,​x ;​ 0C44
 + dec voice1_things+3,​x ;​ 0C47
 + bne L0CCB ;​ 0C4A
 + lda voice1_things+2,​x ;​ 0C4C
 + sta voice1_things+3,​x ;​ 0C4F
 + inc voice1_things,​x ;​ 0C52
 + bne L0CCB ;​ 0C55
 + jmp voice_done ;​ 0C57
 +
 +L0C5A:
 + lda voice1_whatever+2,​x ;​ 0C5A
 + beq L0CBE ;​ 0C5D
 + cmp #​$01 ;​ 0C5F  A
 + beq L0C7B ;​ 0C61
 + cmp #​$02 ;​ 0C63  B
 + beq L0CA6 ;​ 0C65
 + cmp #​$03 ;​ 0C67  C
 + beq L0C96 ;​ 0C69
 + clc ; 0C6B
 + lda voice1_stuff+4,​x ;​ 0C6C
 + adc voice1_something,​x ;​ 0C6F
 + sta voice1_stuff+4,​x ;​ 0C72
 + sta $D401,​x ;​ 0C75
 + jmp L0CBE ;​ 0C78
 +
 +L0C7B:
 + clc ; 0C7B
 + lda voice1_stuff,​x ;​ 0C7C
 + sbc voice1_something,​x ;​ 0C7F
 + sta voice1_stuff,​x ;​ 0C82
 + sta $D400,​x ;​ 0C85
 + lda voice1_stuff+4,​x ;​ 0C88
 + sbc #​$00 ;​ 0C8B  .
 + sta voice1_stuff+4,​x ;​ 0C8D
 + sta $D401,​x ;​ 0C90
 + jmp L0CBE ;​ 0C93
 +
 +L0C96:
 + sec ; 0C96
 + lda voice1_stuff+4,​x ;​ 0C97
 + sbc voice1_something,​x ;​ 0C9A
 + sta voice1_stuff+4,​x ;​ 0C9D
 + sta $D401,​x ;​ 0CA0
 + jmp L0CBE ;​ 0CA3
 +
 +L0CA6:
 + clc ; 0CA6
 + lda voice1_stuff,​x ;​ 0CA7
 + adc voice1_something,​x ;​ 0CAA
 + sta voice1_stuff,​x ;​ 0CAD
 + sta $D400,​x ;​ 0CB0
 + lda voice1_stuff+4,​x ;​ 0CB3
 + adc #​$00 ;​ 0CB6  .
 + sta voice1_stuff+4,​x ;​ 0CB8
 + sta $D401,​x ;​ 0CBB
 +L0CBE:
 + ldy voice1_instrument_index,​x ;​ 0CBE
 + lda possibly_instrument_a0+7,​y ;​ 0CC1
 + and #​$01 ;​ 0CC4  A
 + beq L0CCB ;​ 0CC6
 + jmp L1005 ;​ 0CC8
 +
 +L0CCB:
 + jmp voice_done ;​ 0CCB
 +
 +voice1_whatever:​
 + .byte $00,​$00,​$00,​$00,​$00 ;​ 0CCE  .....
 +voice1_pattern_index:​
 + .byte $06 ;​ 0CD3  F
 +voice1_whatever2:​
 + .byte $00 ;​ 0CD4  .
 +voice2_whatever:​
 + .byte $00,​$00,​$00,​$00,​$00 ;​ 0CD5  .....
 +voice2_pattern_index:​
 + .byte $06 ;​ 0CDA  F
 +voice2_whatever2:​
 + .byte $00 ;​ 0CDB  .
 +voice3_whatever:​
 + .byte $00,​$00,​$00,​$00,​$00 ;​ 0CDC  .....
 +voice3_pattern_index:​
 + .byte $00 ;​ 0CE1  .
 +voice3_whatever2:​
 + .byte $01 ;​ 0CE2  A
 +voice1_something:​
 + .byte $00,​$00,​$3F ;​ 0CE3  ..?
 +voice1_instrument_index:​
 + .byte $08 ;​ 0CE6  H
 +voice1_something_else:​
 + .byte $BB,​$90,​$02 ;​ 0CE7  ;PB
 +@voice2_something:​
 + .byte $00,​$00,​$3F ;​ 0CEA  ..?
 +@voice2_instrument_index:​
 + .byte $08 ;​ 0CED  H
 +@voice2_something_else:​
 + .byte $BB,​$90,​$02 ;​ 0CEE  ;PB
 +@voice3_something:​
 + .byte $00,​$00,​$3F ;​ 0CF1  ..?
 +@voice3_instrument_index:​
 + .byte $20 ;​ 0CF4   
 +@voice3_something_else:​
 + .byte $F0,​$90,​$0C ;​ 0CF5  pPL
 +voice1_ctrl0:​
 + .byte $00 ;​ 0CF8  .
 +voice1_ctrl1:​
 + .byte $00 ;​ 0CF9  .
 +
 +voice1_trackptr:​
 + .addr voice1_track ;​ 0CFA
 +
 +voice1_track_index:​
 + .byte $00,​$00 ;​ 0CFC  ..
 +voice1_ctrl2:​
 + .byte $3C ;​ 0CFE  <
 +voice2_ctrl0:​
 + .byte $00 ;​ 0CFF  .
 +voice2_ctrl1:​
 + .byte $00 ;​ 0D00  .
 +
 +voice2_trackptr:​
 + .addr voice2_track ;​ 0D01
 +
 +voice2_track_index:​
 + .byte $00,​$00 ;​ 0D03  ..
 +voice2_ctrl2:​
 + .byte $3C ;​ 0D05  <
 +voice3_ctrl0:​
 + .byte $06 ;​ 0D06  F
 +voice3_ctrl1:​
 + .byte $00 ;​ 0D07  .
 +
 +voice3_trackptr:​
 + .addr voice3_track ;​ 0D08
 +
 +voice3_track_index:​
 + .byte $02,​$00 ;​ 0D0A  B.
 +voice3_ctrl2:​
 + .byte $3C,​$00,​$00 ;​ 0D0C  <..
 +tune_ctrl:
 + .byte $AB ;​ 0D0F  +
 +tempo:
 + .byte $03 ;​ 0D10  C
 +control1:
 + .byte $A0 ;​ 0D11   
 +tempo_ctr:
 + .byte $00 ;​ 0D12  .
 +control3:
 + .byte $FE ;​ 0D13  ~
 +voice1_stuff:​
 + .byte $47,​$47,​$06,​$1F,​$06,​$00,​$00 ;​ 0D14  GGF_F..
 +@voice2_stuff:​
 + .byte $23,​$23,​$03,​$13,​$03,​$00,​$00 ;​ 0D1B  ##CSC..
 +@voice3_stuff:​
 + .byte $00,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0D22  .......
 +voice1_things:​
 + .byte $00,​$00,​$00,​$00,​$00,​$00,​$1F ;​ 0D29  ......_
 +@voice2_things:​
 + .byte $00,​$00,​$00,​$00,​$00,​$00,​$13 ;​ 0D30  ......S
 +@voice3_things:​
 + .byte $00,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0D37  .......
 +voice1_two_ctr:​
 + .byte $02,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0D3E  B......
 +@voice2_two_ctr:​
 + .byte $02,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0D45  B......
 +@voice3_two_ctr:​
 + .byte $02,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0D4C  B......
 +frq_lo:
 + .byte $0C,​$1C,​$2D,​$3E,​$51,​$66,​$7B,​$91 ;​ 0D53  L\->Qf{Q
 + .byte $A9,​$C3,​$DD,​$FA,​$18,​$38,​$5A,​$7D ;​ 0D5B  )C]zX8Z}
 + .byte $A3,​$CC,​$F6,​$23,​$53,​$86,​$BB,​$F4 ;​ 0D63  #Lv#SF;t
 + .byte $30,​$70,​$B4,​$FB,​$47,​$98,​$ED,​$47 ;​ 0D6B  0p4{GXmG
 + .byte $A7,​$0C,​$77,​$E9,​$61,​$E1,​$68,​$F7 ;​ 0D73  '​Lwiaahw
 + .byte $8F,​$30,​$DA,​$8F,​$4E,​$18,​$EF,​$D2 ;​ 0D7B  O0ZONXoR
 + .byte $C3,​$C3,​$D1,​$EF,​$1F,​$60,​$B5,​$1E ;​ 0D83  CCQo_`5^
 + .byte $9C,​$31,​$DF,​$A5,​$87,​$86,​$A2,​$DF ;​ 0D8B  \1_%GF\"​_
 + .byte $3E,​$C1,​$6B,​$3C,​$39,​$63,​$BE,​$4B ;​ 0D93  >​Ak<​9c>​K
 + .byte $0F,​$0C,​$45,​$BF,​$7D,​$83,​$D6,​$79 ;​ 0D9B  OLE?}CVy
 + .byte $73,​$C7,​$7C,​$97,​$1E,​$18,​$8B,​$7E ;​ 0DA3  sG|W^XK~
 + .byte $FA,​$06,​$AC,​$F3,​$E6,​$8F,​$F8,​$2E ;​ 0DAB  zF,sfOx.
 +frq_hi:
 + .byte $01,​$01,​$01,​$01,​$01,​$01,​$01,​$01 ;​ 0DB3  AAAAAAAA
 + .byte $01,​$01,​$01,​$01,​$02,​$02,​$02,​$02 ;​ 0DBB  AAAABBBB
 + .byte $02,​$02,​$02,​$03,​$03,​$03,​$03,​$03 ;​ 0DC3  BBBCCCCC
 + .byte $04,​$04,​$04,​$04,​$05,​$05,​$05,​$06 ;​ 0DCB  DDDDEEEF
 + .byte $06,​$07,​$07,​$07,​$08,​$08,​$09,​$09 ;​ 0DD3  FGGGHHII
 + .byte $0A,​$0B,​$0B,​$0C,​$0D,​$0E,​$0E,​$0F ;​ 0DDB  JKKLMNNO
 + .byte $10,​$11,​$12,​$13,​$15,​$16,​$17,​$19 ;​ 0DE3  PQRSUVWY
 + .byte $1A,​$1C,​$1D,​$1F,​$21,​$23,​$25,​$27 ;​ 0DEB  Z\]_!#​%'​
 + .byte $2A,​$2C,​$2F,​$32,​$35,​$38,​$3B,​$3F ;​ 0DF3  *,/258;?
 + .byte $43,​$47,​$4B,​$4F,​$54,​$59,​$5E,​$64 ;​ 0DFB  CGKOTY^d
 + .byte $6A,​$70,​$77,​$7E,​$86,​$8E,​$96,​$9F ;​ 0E03  jpw~FNV_
 + .byte $A8,​$B3,​$BD,​$C8,​$D4,​$E1,​$EE,​$FD ;​ 0E0B  (3=HTan}
 +
 +setup_irq:
 + sei ; 0E13
 + lda #​$29 ;​ 0E14  )
 + sta $0314 ;​ 0E16
 + lda #​$0E ;​ 0E19  N
 + sta $0315 ;​ 0E1B
 + ldx #​$00 ;​ 0E1E  .
 + stx $DC0E ;​ 0E20
 + inx ; 0E23
 + stx $D01A ;​ 0E24
 + cli ; 0E27
 + rts ; 0E28
 +
 +play_irq:
 + lda #​$01 ;​ 0E29  A
 + sta $D019 ;​ 0E2B
 + lda #​$82 ;​ 0E2E  B
 + sta $D012 ;​ 0E30
 + lda #​$1B ;​ 0E33  [
 + sta $D011 ;​ 0E35
 + lda #​$01 ;​ 0E38  A
 + sta $D020 ;​ 0E3A
 + jsr music_play ;​ 0E3D
 + dec $D020 ;​ 0E40
 + jmp $EA31 ;​ 0E43
 +
 +music_play:
 + ldx #​$00 ;​ 0E46  .
 + jsr play_voice ;​ 0E48
 + ldx #​$07 ;​ 0E4B  G
 + jsr play_voice ;​ 0E4D
 + ldx #​$0E ;​ 0E50  N
 + jsr play_voice ;​ 0E52
 + rts ; 0E55
 +
 +@copyright:
 + .byte $28,​$43,​$29,​$31,​$39,​$38,​$37,​$20 ;​ 0E56  (C)1987 ​
 + .byte $4D,​$41,​$54,​$54,​$20,​$47,​$52,​$41 ;​ 0E5E  MATT GRA
 + .byte $59 ;​ 0E66  Y
 +
 +L0E67:
 + pha ; 0E67
 + and #​$0F ;​ 0E68  O
 + sta voice1_ctrl1,​x ;​ 0E6A
 + pla ; 0E6D
 + and #​$F0 ;​ 0E6E  p
 + lsr a ; 0E70
 + lsr a ; 0E71
 + lsr a ; 0E72
 + lsr a ; 0E73
 + sta voice1_stuff+5,​x ;​ 0E74
 + lda #​$00 ;​ 0E77  .
 + sta voice1_stuff+6,​x ;​ 0E79
 + lda #​$01 ;​ 0E7C  A
 + sta voice1_whatever+1,​x ;​ 0E7E
 + lda #​$00 ;​ 0E81  .
 + sta voice1_whatever,​x ;​ 0E83
 + jmp voice_done ;​ 0E86
 +
 +L0E89:
 + sta voice1_things+1,​x ;​ 0E89
 + lda possibly_instrument_a1+1,​y ;​ 0E8C
 + sta voice1_things+2,​x ;​ 0E8F
 + sta voice1_things+3,​x ;​ 0E92
 + lda #​$00 ;​ 0E95  .
 + sta voice1_whatever+1,​x ;​ 0E97
 + sta voice1_things,​x ;​ 0E9A
 + lda #​$01 ;​ 0E9D  A
 + sta voice1_whatever,​x ;​ 0E9F
 + jmp voice_done ;​ 0EA2
 +
 +possibly_instrument_a0:​
 + .byte $00,​$81,​$0A,​$00,​$00,​$00,​$80,​$01 ;​ 0EA5  .AJ....A
 +@possibly_instrument_b0:​
 + .byte $90,​$41,​$FE,​$0D,​$25,​$00,​$40,​$02 ;​ 0EAD  PA~M%.@B
 +@possibly_instrument_c0:​
 + .byte $00,​$81,​$FD,​$00,​$00,​$00,​$80,​$00 ;​ 0EB5  .A}.....
 +@possibly_instrument_d0:​
 + .byte $30,​$41,​$0E,​$00,​$30,​$00,​$40,​$02 ;​ 0EBD  0AN.0.@B
 +@possibly_instrument_e0:​
 + .byte $96,​$41,​$0E,​$00,​$A0,​$00,​$40,​$02 ;​ 0EC5  VAN. .@B
 +@possibly_instrument_f0:​
 + .byte $00,​$00,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0ECD  ........
 +@possibly_instrument_g0:​
 + .byte $32,​$41,​$00,​$40,​$F0,​$00,​$40,​$02 ;​ 0ED5  2A.@p.@B
 +@possibly_instrument_h0:​
 + .byte $00,​$81,​$08,​$00,​$00,​$00,​$80,​$01 ;​ 0EDD  .AH....A
 +@possibly_instrument_i0:​
 + .byte $00,​$11,​$0D,​$00,​$00,​$00,​$10,​$00 ;​ 0EE5  .QM...P.
 +@possibly_instrument_j0:​
 + .byte $90,​$41,​$0E,​$00,​$25,​$00,​$40,​$02 ;​ 0EED  PAN.%.@B
 +@possibly_instrument_k0:​
 + .byte $2E,​$43,​$00,​$60,​$F5,​$00,​$40,​$04 ;​ 0EF5  .C.`u.@D
 +@possibly_instrument_l0:​
 + .byte $70,​$41,​$0A,​$00,​$40,​$00,​$40,​$02 ;​ 0EFD  pAJ.@.@B
 +@possibly_instrument_m0:​
 + .byte $00,​$15,​$03,​$00,​$00,​$20,​$14,​$04 ;​ 0F05  .UC.. TD
 +@possibly_instrument_n0:​
 + .byte $40,​$41,​$00,​$90,​$01,​$00,​$40,​$00 ;​ 0F0D  @A.PA.@.
 +@possibly_instrument_o0:​
 + .byte $00,​$15,​$EE,​$00,​$00,​$00,​$14,​$00 ;​ 0F15  .Un...T.
 +@possibly_instrument_p0:​
 + .byte $98,​$41,​$09,​$00,​$00,​$00,​$40,​$01 ;​ 0F1D  XAI...@A
 +@possibly_instrument_q0:​
 + .byte $21,​$41,​$0A,​$00,​$30,​$00,​$40,​$06 ;​ 0F25  !AJ.0.@F
 +@possibly_instrument_r0:​
 + .byte $21,​$41,​$0A,​$00,​$30,​$00,​$40,​$06 ;​ 0F2D  !AJ.0.@F
 +@possibly_instrument_s0:​
 + .byte $31,​$41,​$0E,​$00,​$10,​$00,​$40,​$02 ;​ 0F35  1AN.P.@B
 +@possibly_instrument_t0:​
 + .byte $23,​$41,​$00,​$A0,​$50,​$00,​$40,​$00 ;​ 0F3D  #A. P.@.
 +@possibly_instrument_u0:​
 + .byte $91,​$41,​$0A,​$00,​$30,​$00,​$40,​$06 ;​ 0F45  QAJ.0.@F
 +@possibly_instrument_v0:​
 + .byte $F1,​$41,​$0C,​$00,​$40,​$00,​$40,​$06 ;​ 0F4D  qAL.@.@F
 +possibly_instrument_a1:​
 + .byte $00,​$00,​$11,​$00,​$00,​$03,​$00,​$00 ;​ 0F55  ..Q..C..
 +@possibly_instrument_b1:​
 + .byte $00,​$00,​$81,​$00,​$00,​$00,​$00,​$00 ;​ 0F5D  ..A.....
 +@possibly_instrument_c1:​
 + .byte $06,​$50,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0F65  FP......
 +@possibly_instrument_d1:​
 + .byte $30,​$02,​$81,​$00,​$00,​$00,​$00,​$00 ;​ 0F6D  0BA.....
 +@possibly_instrument_e1:​
 + .byte $40,​$02,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0F75  @B......
 +@possibly_instrument_f1:​
 + .byte $00,​$00,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0F7D  ........
 +@possibly_instrument_g1:​
 + .byte $00,​$00,​$81,​$00,​$00,​$00,​$00,​$00 ;​ 0F85  ..A.....
 +@possibly_instrument_h1:​
 + .byte $00,​$00,​$11,​$41,​$01,​$01,​$00,​$00 ;​ 0F8D  ..QAAA..
 +@possibly_instrument_i1:​
 + .byte $50,​$02,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0F95  PB......
 +@possibly_instrument_j1:​
 + .byte $00,​$00,​$81,​$00,​$00,​$00,​$00,​$00 ;​ 0F9D  ..A.....
 +@possibly_instrument_k1:​
 + .byte $20,​$02,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0FA5   ​B......
 +@possibly_instrument_l1:​
 + .byte $00,​$00,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0FAD  ........
 +@possibly_instrument_m1:​
 + .byte $00,​$00,​$81,​$00,​$00,​$00,​$00,​$00 ;​ 0FB5  ..A.....
 +@possibly_instrument_n1:​
 + .byte $40,​$02,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0FBD  @B......
 +@possibly_instrument_o1:​
 + .byte $00,​$00,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0FC5  ........
 +@possibly_instrument_p1:​
 + .byte $00,​$00,​$41,​$F0,​$01,​$01,​$00,​$00 ;​ 0FCD  ..ApAA..
 +@possibly_instrument_q1:​
 + .byte $10,​$02,​$43,​$00,​$00,​$00,​$00,​$00 ;​ 0FD5  PBC.....
 +@possibly_instrument_r1:​
 + .byte $00,​$00,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0FDD  ........
 +@possibly_instrument_s1:​
 + .byte $A0,​$02,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0FE5   ​B......
 +@possibly_instrument_t1:​
 + .byte $60,​$02,​$00,​$00,​$00,​$00,​$00,​$00 ;​ 0FED  `B......
 +@possibly_instrument_u1:​
 + .byte $00,​$00,​$43,​$00,​$00,​$00,​$00,​$00 ;​ 0FF5  ..C.....
 +@possibly_instrument_v1:​
 + .byte $0A,​$02,​$43,​$00,​$00,​$00,​$00,​$00 ;​ 0FFD  JBC.....
 +
 +L1005:
 + lda voice1_stuff+2,​x ;​ 1005
 + beq L100D ;​ 1008
 + dec voice1_stuff+2,​x ;​ 100A
 +L100D:
 + lda voice1_whatever+3,​x ;​ 100D
 + beq L1025 ;​ 1010
 + dec voice1_whatever+3,​x ;​ 1012
 + lda #​$81 ;​ 1015  A
 + sta $D404,​x ;​ 1017
 + lda voice1_stuff+2,​x ;​ 101A
 + eor #​$23 ;​ 101D  #
 + sta $D401,​x ;​ 101F
 + jmp voice_done ;​ 1022
 +
 +L1025:
 + jmp L103A ;​ 1025
 +
 +L1028:
 + lda voice1_stuff+4,​x ;​ 1028
 + sta $D401,​x ;​ 102B
 + sta voice1_stuff+2,​x ;​ 102E
 + lda possibly_instrument_a1+2,​y ;​ 1031
 + sta $D404,​x ;​ 1034
 + jmp voice_done ;​ 1037
 +
 +L103A:
 + lda voice1_whatever+4,​x ;​ 103A
 + cmp possibly_instrument_a1+5,​y ;​ 103D
 + beq L104A ;​ 1040
 + inc voice1_whatever+3,​x ;​ 1042
 + inc voice1_whatever+4,​x ;​ 1045
 + bne L1028 ;​ 1048
 +L104A:
 + lda #​$00 ;​ 104A  .
 + sta voice1_whatever+4,​x ;​ 104C
 + sta voice1_whatever+3,​x ;​ 104F
 + beq L1028 ;​ 1052
 +tune_tempo:
 + .byte $00,​$03,​$03 ;​ 1054  .CC
 +voice1_track:​
 + .byte $01,​$01,​$07,​$09,​$09,​$09,​$01,​$07 ;​ 1057  AAGIIIAG
 + .byte $07,​$0F,​$0F,​$0F,​$0F,​$0F,​$0F,​$03 ;​ 105F  GOOOOOOC
 + .byte $03,​$0F,​$0F,​$13,​$13,​$0F,​$13,​$0F ;​ 1067  COOSSOSO
 + .byte $13,​$0F,​$13,​$0F,​$13,​$0F,​$0F,​$0F ;​ 106F  SOSOSOOO
 + .byte $0F,​$0F,​$0F,​$0F,​$0F,​$0F,​$0F,​$0F ;​ 1077  OOOOOOOO
 + .byte $0F,​$0F,​$0F,​$0F,​$0F,​$0F,​$0F,​$0F ;​ 107F  OOOOOOOO
 + .byte $0F,​$0F,​$0F,​$0F,​$0F,​$0F,​$1B,​$1D ;​ 1087  OOOOOO[]
 + .byte $1E,​$0F,​$1B,​$1D,​$1E,​$0F,​$1B,​$1D ;​ 108F  ^O[]^O[]
 + .byte $1E,​$12,​$12,​$12,​$12,​$24,​$24,​$21 ;​ 1097  ^RRRR$$!
 + .byte $21,​$24,​$24,​$21,​$21,​$24,​$24,​$21 ;​ 109F  !$$!!$$!
 + .byte $21,​$24,​$24,​$21,​$21,​$24,​$24,​$21 ;​ 10A7  !$$!!$$!
 + .byte $21,​$24,​$24,​$21,​$21,​$24,​$24,​$21 ;​ 10AF  !$$!!$$!
 + .byte $21,​$24,​$24,​$21,​$21,​$24,​$24,​$21 ;​ 10B7  !$$!!$$!
 + .byte $21,​$24,​$24,​$21,​$21,​$08,​$08,​$28 ;​ 10BF  !$$!!HH(
 + .byte $00,​$00,​$00,​$00,​$FF ;​ 10C7  .....
 +voice2_track:​
 + .byte $03,​$03,​$08,​$0A,​$0D,​$0D,​$0D,​$0D ;​ 10CC  CCHJMMMM
 + .byte $08,​$07,​$0E,​$0E,​$0E,​$0E,​$0E,​$0E ;​ 10D4  HGNNNNNN
 + .byte $0E,​$0E,​$05,​$12,​$12,​$12,​$12,​$14 ;​ 10DC  NNERRRRT
 + .byte $15,​$14,​$15,​$14,​$15,​$14,​$15,​$08 ;​ 10E4  UTUTUTUH
 + .byte $17,​$17,​$17,​$17,​$17,​$17,​$17,​$17 ;​ 10EC  WWWWWWWW
 + .byte $17,​$17,​$17,​$17,​$07,​$07,​$1F,​$1F ;​ 10F4  WWWWGG__
 + .byte $1F,​$1F,​$07,​$07,​$00,​$00,​$25,​$25 ;​ 10FC  __GG..%%
 + .byte $26,​$25,​$27,​$27,​$27,​$27,​$27,​$27 ;​ 1104  &​%''''''​
 + .byte $27,​$27,​$06,​$06,​$06,​$06,​$06,​$06 ;​ 110C  ''​FFFFFF
 + .byte $06,​$06,​$06,​$06,​$28,​$00,​$00,​$00 ;​ 1114  FFFF(...
 + .byte $00,​$FF ;​ 111C  ..
 +voice3_track:​
 + .byte $00,​$00,​$00,​$00,​$04,​$06,​$06,​$0C ;​ 111E  ....DFFL
 + .byte $0B,​$0C,​$0B,​$0C,​$0B,​$06,​$06,​$06 ;​ 1126  KLKLKFFF
 + .byte $06,​$06,​$06,​$06,​$06,​$06,​$06,​$06 ;​ 112E  FFFFFFFF
 + .byte $06,​$06,​$06,​$0F,​$0F,​$10,​$11,​$0E ;​ 1136  FFFOOPQN
 + .byte $0E,​$0E,​$0E,​$0E,​$0E,​$0E,​$0E,​$0E ;​ 113E  NNNNNNNN
 + .byte $0E,​$0E,​$0E,​$16,​$07,​$07,​$07,​$18 ;​ 1146  NNNVGGGX
 + .byte $19,​$19,​$1A,​$1A,​$08,​$08,​$1C,​$08 ;​ 114E  YYZZHH\H
 + .byte $08,​$23,​$23,​$22,​$22,​$23,​$23,​$22 ;​ 1156  H##​\"​\"##​\"​
 + .byte $22,​$23,​$23,​$22,​$22,​$23,​$23,​$22 ;​ 115E  \"##​\"​\"##​\"​
 + .byte $22,​$23,​$23,​$22,​$22,​$23,​$23,​$22 ;​ 1166  \"##​\"​\"##​\"​
 + .byte $22,​$23,​$23,​$22,​$22,​$23,​$23,​$22 ;​ 116E  \"##​\"​\"##​\"​
 + .byte $22,​$23,​$23,​$22,​$22,​$23,​$23,​$22 ;​ 1176  \"##​\"​\"##​\"​
 + .byte $22,​$07,​$07,​$0F,​$0F,​$0F,​$0F,​$29 ;​ 117E  \"​GGOOOO)
 + .byte $00,​$00,​$00,​$00,​$FF ;​ 1186  .....
 +pattern_00:
 + .byte $FD,​$3F,​$FA,​$04,​$00,​$FF ;​ 118B  }?zD..
 +pattern_01:
 + .byte $FA,​$01,​$FD,​$3F,​$23,​$1F,​$22,​$1E ;​ 1191  zA}?#​_\"​^
 + .byte $FF ;​ 1199  .
 +pattern_03:
 + .byte $FA,​$01,​$FD,​$3F,​$17,​$13,​$16,​$12 ;​ 119A  zA}?WSVR
 + .byte $FF ;​ 11A2  .
 +pattern_02:
 + .byte $FD,​$0F,​$FA,​$04,​$00,​$FF ;​ 11A3  }OzD..
 +pattern_04:
 + .byte $FA,​$02,​$FD,​$7F,​$25,​$25,​$FF ;​ 11A9  zB}.%%.
 +pattern_05:
 + .byte $FA,​$0E,​$FD,​$3F,​$2F,​$2B,​$2E,​$FC ;​ 11B0  zN}?/+.|
 + .byte $20,​$2A,​$FF ;​ 11B8   *.
 +pattern_06:
 + .byte $FA,​$06,​$FD,​$01,​$42,​$3B,​$3B,​$42 ;​ 11BB  zF}AB;;B
 + .byte $3B,​$3B,​$43,​$3B,​$42,​$3B,​$3B,​$42 ;​ 11C3  ;;C;B;;B
 + .byte $3B,​$3B,​$43,​$3B,​$42,​$3B,​$3B,​$42 ;​ 11CB  ;;C;B;;B
 + .byte $3B,​$3B,​$43,​$3B,​$42,​$3B,​$3B,​$42 ;​ 11D3  ;;C;B;;B
 + .byte $3B,​$3B,​$43,​$3B,​$FF ;​ 11DB  ;;C;.
 +pattern_07:
 + .byte $FA,​$01,​$FD,​$7F,​$23,​$FF ;​ 11E0  zA}.#.
 +pattern_08:
 + .byte $FA,​$01,​$FD,​$7F,​$17,​$00,​$FF ;​ 11E6  zA}.W..
 +pattern_09:
 + .byte $FA,​$09,​$FD,​$1F,​$17,​$13,​$12,​$0F ;​ 11ED  zI}_WSRO
 + .byte $FF ;​ 11F5  .
 +pattern_10:
 + .byte $FA,​$08,​$FD,​$0F,​$3E,​$39,​$FD,​$1F ;​ 11F6  zH}O>9}_
 + .byte $3B,​$FD,​$0F,​$3D,​$3B,​$FD,​$1F,​$3A ;​ 11FE  ;}O=;}_:
 + .byte $FD,​$7F,​$FB,​$01,​$2F,​$FF ;​ 1206  }.{A/.
 +pattern_11:
 + .byte $FA,​$06,​$FD,​$01,​$3D,​$36,​$36,​$3D ;​ 120C  zF}A=66=
 + .byte $36,​$36,​$3E,​$36,​$3D,​$36,​$36,​$3D ;​ 1214  66>6=66=
 + .byte $36,​$36,​$3E,​$36,​$3A,​$33,​$33,​$3A ;​ 121C  66>6:33:
 + .byte $33,​$33,​$3B,​$33,​$3A,​$33,​$33,​$3A ;​ 1224  33;3:33:
 + .byte $33,​$33,​$3B,​$33,​$FF ;​ 122C  33;3.
 +pattern_12:
 + .byte $FA,​$06,​$FD,​$01,​$42,​$3B,​$3B,​$42 ;​ 1231  zF}AB;;B
 + .byte $3B,​$3B,​$43,​$3B,​$42,​$3B,​$3B,​$42 ;​ 1239  ;;C;B;;B
 + .byte $3B,​$3B,​$43,​$3B,​$3E,​$37,​$37,​$3E ;​ 1241  ;;​C;>​77>​
 + .byte $37,​$37,​$3F,​$37,​$3E,​$37,​$37,​$3E ;​ 1249  77?​7>​77>​
 + .byte $37,​$37,​$3F,​$37,​$FF ;​ 1251  77?7.
 +pattern_13:
 + .byte $FA,​$0A,​$FD,​$01,​$3B,​$3A,​$39,​$38 ;​ 1256  zJ}A;:98
 + .byte $39,​$3A,​$3B,​$3A,​$39,​$38,​$39,​$3A ;​ 125E  9:;:989:
 + .byte $3B,​$3A,​$39,​$38,​$39,​$3A,​$3B,​$3A ;​ 1266  ;:989:;:
 + .byte $39,​$38,​$39,​$3A,​$3B,​$3A,​$39,​$38 ;​ 126E  989:;:98
 + .byte $39,​$3A,​$3B,​$3A,​$FF ;​ 1276  9:;:.
 +pattern_14:
 + .byte $FA,​$07,​$FD,​$01,​$2D,​$FD,​$03,​$2D ;​ 127B  zG}A-}C-
 + .byte $FD,​$0D,​$2D,​$FD,​$03,​$2D,​$FD,​$07 ;​ 1283  }M-}C-}G
 + .byte $FA,​$00,​$2D,​$FA,​$07,​$FD,​$01,​$2D ;​ 128B  z.-zG}A-
 + .byte $FD,​$03,​$2D,​$FD,​$0D,​$2D,​$FD,​$03 ;​ 1293  }C-}M-}C
 + .byte $2D,​$FD,​$07,​$FA,​$00,​$2D,​$FF ;​ 129B  -}Gz.-.
 +pattern_15:
 + .byte $FA,​$0B,​$FD,​$01,​$23,​$23,​$23,​$23 ;​ 12A2  zK}A####
 + .byte $23,​$23,​$23,​$23,​$23,​$23,​$23,​$23 ;​ 12AA  ########
 + .byte $23,​$23,​$23,​$23,​$23,​$23,​$23,​$23 ;​ 12B2  ########
 + .byte $23,​$23,​$23,​$23,​$23,​$23,​$23,​$23 ;​ 12BA  ########
 + .byte $23,​$23,​$23,​$23,​$FF ;​ 12C2  ####.
 +pattern_16:
 + .byte $FA,​$0B,​$FD,​$01,​$22,​$22,​$22,​$22 ;​ 12C7  zK}A\"​\"​\"​\"​
 + .byte $22,​$22,​$22,​$22,​$22,​$22,​$22,​$22 ;​ 12CF  \"​\"​\"​\"​\"​\"​\"​\"​
 + .byte $22,​$22,​$22,​$22,​$22,​$22,​$22,​$22 ;​ 12D7  \"​\"​\"​\"​\"​\"​\"​\"​
 + .byte $22,​$22,​$22,​$22,​$22,​$22,​$22,​$22 ;​ 12DF  \"​\"​\"​\"​\"​\"​\"​\"​
 + .byte $22,​$22,​$22,​$22,​$FF ;​ 12E7  \"​\"​\"​\"​.
 +pattern_17:
 + .byte $FA,​$0B,​$FD,​$01,​$25,​$25,​$25,​$25 ;​ 12EC  zK}A%%%%
 + .byte $25,​$25,​$25,​$25,​$25,​$25,​$25,​$25 ;​ 12F4  %%%%%%%%
 + .byte $25,​$25,​$25,​$25,​$25,​$25,​$25,​$25 ;​ 12FC  %%%%%%%%
 + .byte $25,​$25,​$25,​$25,​$25,​$25,​$25,​$25 ;​ 1304  %%%%%%%%
 + .byte $25,​$25,​$25,​$25,​$FF ;​ 130C  %%%%.
 +pattern_18:
 + .byte $FA,​$0A,​$FD,​$01,​$3B,​$37,​$36,​$34 ;​ 1311  zJ}A;764
 + .byte $3B,​$37,​$36,​$34,​$3B,​$37,​$36,​$34 ;​ 1319  ;764;764
 + .byte $3B,​$37,​$36,​$34,​$3B,​$37,​$36,​$34 ;​ 1321  ;764;764
 + .byte $3B,​$37,​$36,​$34,​$3B,​$37,​$36,​$34 ;​ 1329  ;764;764
 + .byte $3B,​$37,​$36,​$34,​$FF ;​ 1331  ;764.
 +pattern_19:
 + .byte $FA,​$0B,​$FD,​$01,​$1F,​$1F,​$1F,​$1F ;​ 1336  zK}A____
 + .byte $1F,​$1F,​$1F,​$1F,​$1F,​$1F,​$1F,​$1F ;​ 133E  ________
 + .byte $1F,​$1F,​$1F,​$1F,​$1F,​$1F,​$1F,​$1F ;​ 1346  ________
 + .byte $1F,​$1F,​$1F,​$1F,​$1F,​$1F,​$1F,​$1F ;​ 134E  ________
 + .byte $1F,​$1F,​$1F,​$1F,​$FF ;​ 1356  ____.
 +pattern_20:
 + .byte $FA,​$06,​$FD,​$01,​$3F,​$3B,​$36,​$3F ;​ 135B  zF}A?;6?
 + .byte $3B,​$36,​$3F,​$3B,​$3F,​$3B,​$36,​$3F ;​ 1363  ;6?;?;6?
 + .byte $3B,​$36,​$3F,​$3B,​$3F,​$3B,​$36,​$3F ;​ 136B  ;6?;?;6?
 + .byte $3B,​$36,​$3F,​$3B,​$3F,​$3B,​$36,​$3F ;​ 1373  ;6?;?;6?
 + .byte $3B,​$36,​$3F,​$3B,​$FF ;​ 137B  ;6?;.
 +pattern_21:
 + .byte $FA,​$06,​$FD,​$01,​$3E,​$3B,​$37,​$3E ;​ 1380  zF}A>;​7>​
 + .byte $3B,​$37,​$3E,​$3B,​$3E,​$3B,​$37,​$3E ;​ 1388  ;​7>;>;​7>​
 + .byte $3B,​$37,​$3E,​$3B,​$3E,​$3B,​$37,​$3E ;​ 1390  ;​7>;>;​7>​
 + .byte $3B,​$37,​$3E,​$3B,​$3E,​$3B,​$37,​$3E ;​ 1398  ;​7>;>;​7>​
 + .byte $3B,​$37,​$3E,​$3B,​$FF ;​ 13A0  ;7>;.
 +pattern_22:
 + .byte $FA,​$0D,​$FD,​$1F,​$37,​$36,​$39,​$37 ;​ 13A5  zM}_7697
 + .byte $36,​$2F,​$2F,​$32,​$FF ;​ 13AD  6//2.
 +pattern_23:
 + .byte $FA,​$10,​$FD,​$01,​$23,​$23,​$2A,​$2A ;​ 13B2  zP}A##**
 + .byte $28,​$28,​$2A,​$2A,​$26,​$26,​$2A,​$2A ;​ 13BA  ((**&&​**
 + .byte $28,​$28,​$2A,​$2A,​$23,​$23,​$2A,​$2A ;​ 13C2  ((**##**
 + .byte $28,​$28,​$2A,​$2A,​$26,​$26,​$2A,​$2A ;​ 13CA  ((**&&​**
 + .byte $28,​$28,​$2A,​$2A,​$FF ;​ 13D2  ((**.
 +pattern_24:
 + .byte $FA,​$13,​$FD,​$07,​$FC,​$37,​$45,​$FD ;​ 13D7  zS}G|7E}
 + .byte $2F,​$47,​$FD,​$07,​$FB,​$7F,​$47,​$FD ;​ 13DF  /G}G{.G}
 + .byte $37,​$42,​$FD,​$07,​$FB,​$80,​$42,​$FF ;​ 13E7  7B}G{.B.
 +pattern_25:
 + .byte $FA,​$13,​$FD,​$1F,​$3B,​$FD,​$0F,​$39 ;​ 13EF  zS}_;}O9
 + .byte $37,​$FD,​$3F,​$36,​$FF ;​ 13F7  7}?6.
 +pattern_26:
 + .byte $FA,​$13,​$FD,​$1F,​$34,​$FD,​$0F,​$32 ;​ 13FC  zS}_4}O2
 + .byte $31,​$FD,​$3F,​$2F,​$FF ;​ 1404  1}?/.
 +pattern_27:
 + .byte $FA,​$0B,​$FD,​$01,​$1B,​$1B,​$1B,​$1B ;​ 1409  zK}A[[[[
 + .byte $1B,​$1B,​$1B,​$1B,​$1B,​$1B,​$1B,​$1B ;​ 1411  [[[[[[[[
 + .byte $1B,​$1B,​$1B,​$1B,​$1B,​$1B,​$1B,​$1B ;​ 1419  [[[[[[[[
 + .byte $1B,​$1B,​$1B,​$1B,​$1B,​$1B,​$1B,​$1B ;​ 1421  [[[[[[[[
 + .byte $1B,​$1B,​$1B,​$1B,​$FF ;​ 1429  [[[[.
 +pattern_28:
 + .byte $FA,​$01,​$FD,​$1F,​$3B,​$FD,​$0F,​$3A ;​ 142E  zA}_;}O:
 + .byte $36,​$FD,​$2F,​$36,​$FD,​$0F,​$38,​$FD ;​ 1436  6}/6}O8}
 + .byte $1F,​$38,​$2F,​$31,​$FD,​$0F,​$33,​$34 ;​ 143E  _8/1}O34
 + .byte $FD,​$7F,​$36,​$36,​$FF ;​ 1446  }.66.
 +pattern_29:
 + .byte $FA,​$0B,​$FD,​$01,​$1C,​$1C,​$1C,​$1C ;​ 144B  zK}A\\\\
 + .byte $1C,​$1C,​$1C,​$1C,​$1C,​$1C,​$1C,​$1C ;​ 1453  \\\\\\\\
 + .byte $1C,​$1C,​$1C,​$1C,​$1C,​$1C,​$1C,​$1C ;​ 145B  \\\\\\\\
 + .byte $1C,​$1C,​$1C,​$1C,​$1C,​$1C,​$1C,​$1C ;​ 1463  \\\\\\\\
 + .byte $1C,​$1C,​$1C,​$1C,​$FF ;​ 146B  \\\\.
 +pattern_30:
 + .byte $FA,​$0B,​$FD,​$01,​$1E,​$1E,​$1E,​$1E ;​ 1470  zK}A^^^^
 + .byte $1E,​$1E,​$1E,​$1E,​$1E,​$1E,​$1E,​$1E ;​ 1478  ^^^^^^^^
 + .byte $1E,​$1E,​$1E,​$1E,​$1E,​$1E,​$1E,​$1E ;​ 1480  ^^^^^^^^
 + .byte $1E,​$1E,​$1E,​$1E,​$1E,​$1E,​$1E,​$1E ;​ 1488  ^^^^^^^^
 + .byte $1E,​$1E,​$1E,​$1E,​$FF ;​ 1490  ^^^^.
 +pattern_31:
 + .byte $FA,​$09,​$FD,​$3F,​$23,​$1B,​$1C,​$1E ;​ 1495  zI}?#[\^
 + .byte $FF ;​ 149D  .
 +pattern_32:
 + .byte $FA,​$01,​$FD,​$7F,​$17,​$17,​$FF,​$21 ;​ 149E  zA}.WW.!
 + .byte $26,​$FD,​$11,​$28,​$FF ;​ 14A6  &}Q(.
 +pattern_33:
 + .byte $FA,​$15,​$FD,​$01,​$1F,​$1F,​$FD,​$03 ;​ 14AB  zU}A__}C
 + .byte $1F,​$FA,​$0F,​$FD,​$01,​$2E,​$27,​$FA ;​ 14B3  _zO}A.'​z
 + .byte $15,​$1F,​$FD,​$03,​$1F,​$FD,​$01,​$1F ;​ 14BB  U_}C_}A_
 + .byte $FD,​$03,​$1F,​$FD,​$01,​$FA,​$0F,​$2F ;​ 14C3  }C_}AzO/
 + .byte $FA,​$15,​$1A,​$1D,​$1F,​$FF ;​ 14CB  zUZ]_.
 +pattern_34:
 + .byte $FA,​$09,​$FD,​$01,​$13,​$13,​$FD,​$03 ;​ 14D1  zI}ASS}C
 + .byte $13,​$FD,​$01,​$FA,​$00,​$2E,​$27,​$FA ;​ 14D9  S}Az..'​z
 + .byte $09,​$13,​$FD,​$03,​$13,​$FD,​$01,​$13 ;​ 14E1  IS}CS}AS
 + .byte $FD,​$03,​$13,​$FD,​$01,​$13,​$10,​$11 ;​ 14E9  }CS}ASPQ
 + .byte $13,​$FF ;​ 14F1  S.
 +pattern_35:
 + .byte $FA,​$09,​$FD,​$01,​$17,​$17,​$FD,​$03 ;​ 14F3  zI}AWW}C
 + .byte $17,​$FD,​$01,​$FA,​$00,​$2E,​$27,​$FA ;​ 14FB  W}Az..'​z
 + .byte $09,​$17,​$FD,​$03,​$17,​$FD,​$01,​$17 ;​ 1503  IW}CW}AW
 + .byte $FD,​$03,​$17,​$FD,​$01,​$17,​$12,​$15 ;​ 150B  }CW}AWRU
 + .byte $17,​$FF ;​ 1513  W.
 +pattern_36:
 + .byte $FA,​$15,​$FD,​$01,​$23,​$23,​$FD,​$03 ;​ 1515  zU}A##}C
 + .byte $23,​$FA,​$0F,​$FD,​$01,​$2E,​$27,​$FA ;​ 151D  #​zO}A.'​z
 + .byte $15,​$23,​$FD,​$03,​$23,​$FD,​$01,​$23 ;​ 1525  U#}C#}A#
 + .byte $FD,​$03,​$23,​$FD,​$01,​$FA,​$0F,​$2F ;​ 152D  }C#}AzO/
 + .byte $FA,​$15,​$1E,​$21,​$23,​$FF ;​ 1535  zU^!#.
 +pattern_37:
 + .byte $FA,​$0A,​$FD,​$39,​$47,​$FD,​$01,​$46 ;​ 153B  zJ}9G}AF
 + .byte $45,​$44,​$FD,​$39,​$43,​$FD,​$01,​$44 ;​ 1543  ED}9C}AD
 + .byte $45,​$46,​$FF ;​ 154B  EF.
 +pattern_38:
 + .byte $FA,​$12,​$FD,​$3F,​$3B,​$43,​$42,​$3E ;​ 154E  zR}?;CB>
 + .byte $3B,​$37,​$36,​$2F,​$FF ;​ 1556  ;76/.
 +pattern_39:
 + .byte $FA,​$0C,​$FD,​$01,​$31,​$3D,​$49,​$3D ;​ 155B  zL}A1=I=
 + .byte $31,​$3D,​$49,​$3D,​$FF ;​ 1563  1=I=.
 +pattern_40:
 + .byte $FA,​$01,​$FD,​$7F,​$17,​$00,​$00,​$00 ;​ 1568  zA}.W...
 + .byte $FF ;​ 1570  .
 +pattern_41:
 + .byte $FA,​$01,​$FD,​$7F,​$23,​$00,​$00,​$00 ;​ 1571  zA}.#...
 + .byte $FF ;​ 1579  .
 +
 +arpeggio_table:​
 + .addr arpeggio_0 ;​ 157A
 +
 +arpeggio_0:
 + .byte $00,​$0C,​$18 ;​ 157C  .LX
 +
 +pattern_lobytes:​
 + .byte <​pattern_00
 + .byte <​pattern_01
 + .byte <​pattern_03
 + .byte <​pattern_02
 + .byte <​pattern_04
 + .byte <​pattern_05
 + .byte <​pattern_06
 + .byte <​pattern_07
 + .byte <​pattern_08
 + .byte <​pattern_09
 + .byte <​pattern_10
 + .byte <​pattern_11
 + .byte <​pattern_12
 + .byte <​pattern_13
 + .byte <​pattern_14
 + .byte <​pattern_15
 + .byte <​pattern_16
 + .byte <​pattern_17
 + .byte <​pattern_18
 + .byte <​pattern_19
 + .byte <​pattern_20
 + .byte <​pattern_21
 + .byte <​pattern_22
 + .byte <​pattern_23
 + .byte <​pattern_24
 + .byte <​pattern_25
 + .byte <​pattern_26
 + .byte <​pattern_27
 + .byte <​pattern_28
 + .byte <​pattern_29
 + .byte <​pattern_30
 + .byte <​pattern_31
 + .byte <​pattern_32
 + .byte <​pattern_33
 + .byte <​pattern_34
 + .byte <​pattern_35
 + .byte <​pattern_36
 + .byte <​pattern_37
 + .byte <​pattern_38
 + .byte <​pattern_39
 + .byte <​pattern_40
 + .byte <​pattern_41
 +pattern_hibytes:​
 + .byte >​pattern_00
 + .byte >​pattern_01
 + .byte >​pattern_03
 + .byte >​pattern_02
 + .byte >​pattern_04
 + .byte >​pattern_05
 + .byte >​pattern_06
 + .byte >​pattern_07
 + .byte >​pattern_08
 + .byte >​pattern_09
 + .byte >​pattern_10
 + .byte >​pattern_11
 + .byte >​pattern_12
 + .byte >​pattern_13
 + .byte >​pattern_14
 + .byte >​pattern_15
 + .byte >​pattern_16
 + .byte >​pattern_17
 + .byte >​pattern_18
 + .byte >​pattern_19
 + .byte >​pattern_20
 + .byte >​pattern_21
 + .byte >​pattern_22
 + .byte >​pattern_23
 + .byte >​pattern_24
 + .byte >​pattern_25
 + .byte >​pattern_26
 + .byte >​pattern_27
 + .byte >​pattern_28
 + .byte >​pattern_29
 + .byte >​pattern_30
 + .byte >​pattern_31
 + .byte >​pattern_32
 + .byte >​pattern_33
 + .byte >​pattern_34
 + .byte >​pattern_35
 + .byte >​pattern_36
 + .byte >​pattern_37
 + .byte >​pattern_38
 + .byte >​pattern_39
 + .byte >​pattern_40
 + .byte >​pattern_41
 +voice1_tune_trackptr_lo:​
 + .byte $00
 + .byte <​voice1_track
 +voice1_tune_trackptr_hi:​
 + .byte $00
 + .byte >​voice1_track
 +voice2_tune_trackptr_lo:​
 + .byte $00
 + .byte <​voice2_track
 +voice2_tune_trackptr_hi:​
 + .byte $00
 + .byte >​voice2_track
 +voice3_tune_trackptr_lo:​
 + .byte $00
 + .byte <​voice3_track
 +voice3_tune_trackptr_hi:​
 + .byte $00
 + .byte >​voice3_track
 +
 +
 +; init code added by sid ripper
 +
 + .byte 0
 +
 +music_init:
 + lda #$01
 + sta tune_ctrl
 + rts
 +
 + .byte $00,​$53,​$48,​$41,​$44,​$45,​$00,​$00 ;​ 15E6  .SHADE..
 + .byte $00,​$00 ;​ 15EE  ..
 +</​code>​
base/matt_gray_-_driller.txt ยท Last modified: 2015-04-17 04:32 (external edit)