===== page 1 ===== 1 ===== page 2 ===== "!# 2 ===== page 3 ===== SIDin Contents General Index Editorials..................................................................................................................................................4 News..........................................................................................................................................................5 HVSC version 5.0...............................................................................................................................5 CGSC version 1.9...............................................................................................................................5 Sidplay2/w...........................................................................................................................................6 Goattracker 1.33.................................................................................................................................6 PSID64 0.4...........................................................................................................................................7 XSIDPLAY 1.6.5pre15......................................................................................................................7 Luca Carrafiello Interview!...................................................................................................................8 Iseq music composition program........................................................................................................11 Comp.sys.cbm Iseq threads............................................................................................................11 'Commando' tune in Iseq................................................................................................................28 Ripping a game: DIG DUG.................................................................................................................30 Step 1: Get the game........................................................................................................................30 Step 2: Play the game!.....................................................................................................................31 Step 3: Disassemble the game.........................................................................................................31 Step 4: Let the order emerge from the chaos!.............................................................................32 Step 5: Make a source file...............................................................................................................34 Step 6: listen to the compiled source.............................................................................................35 Inside DIG-DUG..............................................................................................................................35 The Code............................................................................................................................................37 Conclusion.........................................................................................................................................52 3 ===== page 4 ===== Editorials Stefano Tognon "!#$ % # %&'(# ) %* +'#(# ), )- ) *. . + *' /* &+ %,#01,!2" % / 3 4" %.. 5.& # .. 6&3 # ,! % & '#( +'#(# 7- 8#/+79:;$<= 7 . >-#.. ?* "!1 2 " %= / 3$@4 "5. ' "8#/ 86! 5% "! " 4%> A , " % # 6 ' 0##-6 %#-A 6, " % #/ ' #36 6,& -A#3! # ! > 5 ='#(# - #// ! " ".02,!" %1. ' 66 ' B!4. 3 "6! # #0# '4. #C. %2 5 6 !% " % 8.6 3!6-A 2 # ,! %,#32' /63!5 " 5. 43! D -A . 81. ' 6& 0"181" %+ 8 1 #3!#C. E !6.2!# 3!%6' 6,6. 4!F '#(# 6 A- &- 6G5.G4 & , ' @ H 4-A 6. " /& $ # 6,#/ , &6 4 6. # H 4-A 6#4 C , % #5I 6 ' 6,&%%%J K#/6 $ 6" & $ " & " 5&F L-A#/ )'#(# +- A,)#/ , ) )G8.G * C-M +%N *.%6. , / " -),!#4 6#C5 "!O P$&A%% # 2 A5 6 2 2 %$ Q R- '> 8 " '#-5,! 2 2 >32STU= / 32 A Q V AA #3- 2#C "!6- , !# W!6#/E ! 4 6, !%&- ..=@ J 4 ===== page 5 ===== News )* + , -.'/0 &'1* 2 . . 1%3&'1* -. 4 5'. &% 6 #7 " 8 . 3# 9#: -. 55 2 .'; &'( <=8 . 8 = .> 6 -. = . 26 - 2 ! #" !%$ $ $'&'( ?@!ACBEDFG H+I JKMLN O P CQRS -T 69* %, + #"U )# ; &'( <%*V%3+$ V%"W -X = - =&'( ? .;9 4 @A9 ;/-9 B C) D E.1 .F (G H ) ) 6%G ) " " 6 I ( 87 9 9 ;) 6%2 .+" 4 , ." J2 1 9 K ' .L6.+M4 1M(" (N O!+ N;) N .+1PQ" 'R1S) L ) J1 /) (R (R1/TU 1;) .1R.,8;) R, ) 2 2 B " +1Q1) 1V ) 1+U* (" ./XW5) 1Y Z\[]^^_`ab]_5cd e]e f(!+ ) 4) ." 6OV !gh" 1), ."4;" . *Q .0) R1./PQ" ;) .1O#2 >>28i;" .jQ" ;) .1 #2 > (\#%5" " ) R5 ) 1!) R1. 0J" 1 016R." '- + (5 6") ! 4 .!) 1J5R." ) 1 " ) 1Jk1O, " .lQ" ;) .1L#2 %AL) ;+." !Q1L!+ ) ;5 +12mn./'+;) 1JO8o-V0) " +1RQ1!) 10V ) 1+U2 o8./1 .!p-.f" 4:;"8, " .O7 ( 87 9 9 4 .Q" ) .2 4 q 2 1 9 .. 9 J. " :2 r) 6 ===== page 7 ===== ! "#%$ &#'#( ) *+ &#( ,#*-$ .* /0! 132*( ! &#.54%$ $ 6 17! 8 9;:%*( *< * ! *#= +%"#* )( ! ! &#. >! 81?( &,#( 1@A 1 @51#B* C! D& ! E#= *F &G= ! *#.7 & H &#'(I+ 12&#( ! *F <@' ! )J&#.71 ( *1#=5K%&@@5&"&#( *FL) &#@5#' *( $ 01' &@51 ! ) 1#= = H ,*#.*#( 1 * 1MK% *#= +3*N ( 1) ! .,*N*)' 1#E#= *O+ ( &#@C1 P+ ! = *-$RQ*S*N*)' 1#E#= * ) &#. 1! . T *D "1 1#U51V( *W ( *#= &) 1 *"X#= 1 H *(1."T@51 H 1#= &TW ! +Y *( *Z! [*.&#',-\ 1) * 121#! = 1E-= *]! .] *]K% *.2#! ( &.#@5*.SW^) &#. 1! ._1 "*#@O&#. ( 1 ! &.\( &,#( 1@a`! ! .+ &#( @O1 ! &#.51#E&#'3 *M b+ ! = *-$ c2*.d! +e*( *fJ'J1Gg Kc .1 & UhD) 1.d,#( 1#.D 1D! ( '#. *( + *) = H ! .M@ H K%# $ ib Oj0kl;mn oOpqrOmso t%%! "-#= 1 H % `s`s`$ ,#*&) ! ! * $ ) &@ %! = ! ) &#.g1#= = * H u 1#B* v-wx ! "#-= 1 H / *Ty.#! Nz#= 1 H *( ! .&`h12*#( ! &#.w#$ %$ v( *-wv-$ ( '#. z`! = ! E ! "#-= 1 H W w#$ {%$ vx &#( = ! E ! "-#= 1 H#| K-g3$ Q*}#= 1 H *(< '#&( ~ *.*` |-% UE'= ! E ! "-#= 1 H wM@51 H )( ' `*.D= ! *#.! .,h &hK%D *)! + ! ) ( '* - 1 `! = =-) &#@O*! .M *M+ ' '( *:-gK '#,-( 1"*-$ &#@O*b"#! )' ! &#.! ME*#! .,"&#.*+ &#( #! U &( &#E1#E#= H 1I &-= ' ! &.h`! = =nE* + &#'#."z'#. ! =% *.*NO:-gKh'#,-( 1"*U & *( `! *I= ! *#.z &X&-= "h e( ! &#( ' * *M= ! E ! "##= 1 H#| *.,-! .*$ 7 ===== page 8 ===== Luca Carrafiello Interview! by Stefano Tognon !"# $ ! "% '& ( )* +-,/. * 0 1 1 2-3( 4 54 1 !/1 1 6442 ( !7 3( 481 6 (9 1 : 1 1 ';'<3=%>-?@/>A ( ! 1 =!1 % B1 !% C != !% = 1#DEDFG( H 2!7 >-! 1 IJ 6 I& 7 I/KL/M #!4- N0 O0 &P L4( !! Q . P-"#2- ! "R ( ( #"# 4 $44 1 5 !4 3 8 . STU U VWXYZ [W \[]T$^V_T`Va b^c V4bT^Z a d eTY^5[U d c c U T$[eVYc fVYg0`hTa T$bV4fVY4U d iT W8`h[/c-bV4fVY4bVW0j j j g k Y^c-[la T^Tm/c [c d Vm[eVYc fVYaa T[UU d n Tj o& ( C>- /1 1 286p& ( <$* ! ( 1 !p+/ (q,! C9 * +,Q$( "#2!7 ALr-./ ts 7 7 !J ( 5> 4 !7( ! 1 7 7$J/. 0. 4 *1 !( -47 201 - Q 201 ! !s 1 : !sB (9 N 681 7 1 72 /|P-20* !( 2#, ! ~!7 ! . \TU U8Y^BhV/`td ^-47 ? ! 1 9 !7 0!1 2 !J1 ) @H Q s/ !1/s4$!7' '(67's42 /1 7' !' !74$ $( ! ! !sB?' (67(6#"8 s! /1 1 1 7"# 1 1 !"8 ./!( 43 172 !! G z' !7!t7 4!B3qJ1 ) @A!1 s 4y s ! ( ! ( "# 4 4!74 /6!4 !$ 1J1 ) @' ( !2!7/2-!7 ( 1 2 !$ >-?@ ( ! . 0 (74 J1 ) @ ( ! ! 3 044! 2 3s/ !! !s rFy 1 ( "8201 201 B . . . !7'8s0 7 /6 .v28 7 47/ "z1 s2 ( 2( . . . 37 $3( 4 !s ' !H vzJ1 ) @= !7/ <( 1 % B"# = pL; ( 7R "8 )! R !7/243 !( $ 4!7DF2-/1 7B1 !"% ( ! <7 4!71 4 t!J1 ) @2 "# 1 (!!11 ! L C ( . L $ 2 '( ! 0"8$/1 ! 7/2 "#!G 31 23z %"8=( ! 2$"# (G1 q A 1 C"# G( ( '"8 2 /1 $4!7 + . 8 ===== page 9 ===== "! # $&%& ' (# )! *+% ,-. # ' /0 1 /2-! 4365+7 8709-': / . # '' : ;< =3< =.*+% , 2- # 0).> ? ' '@ # A& &B C D&%6@ E 4 ) $ +# # $ GB C D: G &*+% , '7-%= ) & > I = ') & )= # )! )*+% ,<7V: '# > +%>!7 FE =G% @ W0:# ' >'. @ $ +! . )E%0!0 $L,+F6>*NF'/BLB $ .'$/B C D/' M)=A G!!!'/!7-F6'.%0# : 7-N+ @ G G# G$ # .4 !'.X>%0: : W .' M)=G'# @ 0)=.G !'. 7-F6' $ )>%0! # ). $ # )!X+ B C D.L =2-)! #') R '' +7 9-'E%0 & .Y 0 # . '' . ):= E' )/# :# '/# ZD # :# ' ==)@ :'$4[\P=)7 7 7>%$ !: 'G +# G'= 47>]E # ) 68QQw/7 # G ' %4 # .x 3< @ & ' $-X / / 0 y / E)# ') & # )')z !#.# z 4 @ # =G $ = # G2-ZD[\ 7>{7 =+7 X. B C D ' | ' =. .'4 .' =+ .&# ). >'G%6| !'GG$.# % ' M =# ) #: }$B2P =(] D365+7 ~/0FEB{ 36 )!# +7 0qln '> ! (')@ # %:' ' ( ' # / '( ' 1 )2+! TEE 60 ') M N+# ' = #& 8JJJ%$! $ '/ # / *+% ,( # | ) M/*+% ,' . > :&# : < :). '0 ) # '-7N+) 0FE & @ # A4% @ U =)E 9 ===== page 10 ===== "!#$"$% & !% ' '()#*"+' , & - #"- '/. $*- 0 0 - &12, 3)421657. !'1 8 '91#- :;& !% '- - #<& #@?@# A $?2, @ B *, ' 'C D - #' 1!# '8 E21, - $(F 1' G 00 - , 'H#*I )& %23KJL#*?1#&G 0=& !% ' 'M' & 1BN. $= - B2- #,#*O- ## . - .)- *' O%1P- # )=Q5 RS(S' !O!#$O! #= ' !$?23 3 3 T2'(H'1 2, $(MRS.VUO- W (7X #Y2, (/Z2 ?\[S1?? *(M]N - #_^, `a$(/RL b(/]N ^N $3 3 3 ?15, - Wc'1 % - '- #BM!, *- 'O, - W7d e2$#%')% , ' d?$MfS- B2,^N - .(Pd gE1- # bd ?$cfS- &WX #'(S d RS O L^P, $dP#*cd h 1# 0 & da?$X $cRS :S =&1 O!=1' - &a$ 1 * #8 Lb%& i 2 jN k=l k kS m- ' P 0, , (, K?O!#$O% %2, )#B2 $S:L5K, - WO!=12, - '%*O 1#'(L?1P5P& #'- *N !V)' 0Nd '1?& B $d (, - W)*- B2- '(S#*65N' - 1', $) - #2W)- `a 1, *c?OB *= O& =c!=12, - '%* & !% Y- #' *V 06!=- b- #BY !n`K- _d # !2, dM'- #B2, '%*o 1#'"p `q &- ' i r 3cg23 B3 ( d Q2 #B '- #= 6m, - B2 da?$7RL b(d ^ % dK?$O^ stc#*cd ^PZ2^I- #Oh$? '%& dK?$O^P, ## ^, , 0 ' 'G ' 1##- #Bi)421H!$" c`a'G 2W#+ 16 0O - 'M`a , *o?$o 6!=1' - & ': d Uc- u?2, , dF?$7^, `a$6'=0 - ' ( #7!#$7 '(a, - W6]N ^N $8 ')d v ' fS- # A 7wd (P]N %%8 ' d Q* `x 0M \4' d (M^ #V2, 8 'Vd h$? # - *d (I]N u5 & JL 8 'Yd v1!=- # 1' d (Me *b8 ' d g, * * )y zd 3 3 3 (2 =!#$( =!#$(' $i: R { k| | }~k/ k6 ) M ~=MH jM = H k2 j 2}=Fk2Y H 67l2 l ~Y2 kO } | | 2L) kkLa / k | PS2S = k JLi5 8 .6B , 6b% - #& H- #6 - '=& !? iP^N- , '=, `a$'=`K- , ,%% &- O$ 1`a W'= # Q5 R6&- %:S*1## `K$(?1 $8 , `a$'' =' #'- ?, ? 1`K $8 ), - ' #- #B2(#* B- , 'G- #' # , $+1#* ' #*+$ 1c0 0 c 2W 1c& ,F!, *- 'M0 !' ! - #B ' !'K' $ - '3 3 3 5 8 '= ' *S:a$ 17#*H HB- ,`K- , ,L! .70 !> Hh/*'Wc*- & , $H #7 H?*(P $/- ?2, - .=- i r U)? B %$O 0 !Vv 1& : v #f`a' &- .S: %S: %, 1' S3 !=1& !=%23 & !K, #23 ! y, 1' O'!=1%=% A & : %S: `P`P`F3 b 3 & ! y, 1' O &- .: 0 %: & S3 1, u3 B%1? %2, 1' [2SQhS8 '%: %S: !23 0 12W3 # `au u`[2SQh- #*b- 3 !), 10 ===== page 11 ===== Iseq music composition program Stefano Tognon ! " #$ %&" ' ()% & *,+-. / " % !" 01 % 2 "3 0 4 "5" ' ,2 ) "6 (7 % % ) " 8' ' 1' ( " ,.6 1 " (9 " 0: ;" :< ; (9=" < " 0 ?>(' 0) 7@ ABDC,E FGFE @ HB4 "3>& " #I.IJ,% ! )&70 " 3 '" % % K,>(7' 0 5 L "6*, M7" 0 " #I. N1ODPQ6R S!T)S6R UDV6PXW S&Y6Z\[]6^Y5_6`6S a b> )c d > e' . f ,> g " #7" 6 " 7 0 ' " h &" 0 " I. " (". >K,' . +- i , jkkjl k+l km1jn jo2 np7q / 5 7"D ' " " #K,9" 5 " 0 r% *I+-d " 3I L "6" >' 6f .q 0 KIM' "K "KI" " "6 ))D. % % jI. 5s % 0 s " # / ' (K b> )c a "*I t," 2u8 s s 1. . s % 0 l l l l l l l l l l l l " # "K,% " K,*I+-" 5 " 0 KI6 ' ' ( % \" d . I. 8 "L Ig " ! / " f . 8"5' !% % "5>! "6% ' (" ( " KI6 ' 3 d "&&' ' "6 M!" % %2>' 6f . a >6&' 7>3" 2&' 3Iv p snIw s kj7q0% % ' (0"6' ,v x 3% ' " y " #,wk,. z 7q 0 KI "K,M' ". y {|&w. i +-. 0z6J}. +-7%, > ". y " #,. " x 3 I. y " #,. ' / '0 0" ,. / ",d ( 1' " 3% $cJI *~" 07-wkjf y ",. 5J~ D6 3% 2 30 cI' L "Db0 d ' 7 1. z >f y M' ". I3M' " "5d ,," % " 3 "&6 >(cI' / " K2' 3 " 3( " 0f . I , 11 ===== page 12 ===== ! " #$ %& !' ( )* +)* , )-++.+/! - % % 01 02 # 3 4 +) #' 5! ! 6! ! ++ 7 +# 8 +! +! . ! ! % ! ! +# 12 ===== page 13 ===== ! ! " # ! $ #! % &' #(( )* %#+! ( ", ) $# ( ! " - #$./ 0 1 2 3 4 65 7! 8# ,1 9$ 2 - ) 0 5 :*5 $ # # ( ; ! <,= ( #5 # % )" ! >? @* 5 3AA3B A>B CA$A3*5 CD*5 A3FE - :) +7 )*5 G - / $ H ! " ,I # # ( J G K>?F1 - L H # $)! ,2 6E ( "M #! " G " N,O,O, 3 P (P 13 ===== page 14 ===== !"" #$! %#!& ' '! ( ) '*& + %! ( , ( * - ./ & ! & 0 ", )'!, 0 1324 , 5" 6 7"."&, 6 0 78( &* * * 9: (#;< = ?> @), 8"A )(BC3."DE @"-;* F (&* 0 , G D3! F > H> I'!, ; ( , , ( ) J C3# ) !(> (* * 3 * 24 K 3> LMM&LN M 2 N OM'M&P> QO> QLED6 .+'- "OMR !LMM&L : (#;#; > S H& : , 3> S S S STS D& %R !'% & I#U!, V (, , ( ) W0 STS 124 A D& ; , ( , & #;G *?E )& 38(& STS ; X#+#+#%* 0 0 &L&* 9 0 , ) 9 , I S & ' &7 "!7" #Y!7 S #!& ' ! % ( )& * &V! (& , S ( &*& - ./ '! & 0 ", )'!, 0 S 1324 , 5" 6 77. , 6 0 78( &* * * S 9: (#;< "', "!"',! ") * , ', ", 0 0 W 07!, %( 9 , *6! ", 0 ' )&, , 0 0 W ! )07 ( 0 , , 0!, ;, !3* Z, 0 , 7 V, !)#; F ! , ) ( ' 7 W # V#;, %@ , H(& , )&*6 ( ) 1 @ , ; !0 !! , "&;' 707 , , V, ) *6!)& 3, , ; , ', V, " (& #;, %[ 1 !(7 * 7#! & I0 7 , !V!, V, )* N N @), 8 9 D 17\ = ?> D& %R !'A F !B #(&* G D3! F > H> I'!, ; ( , , ( ) J C3# ) !(> (* * 3 * 24 K 3> LMM&LN M 2 N OM]O^> 4 O> LLED6 3& , _ E, &* \ C`"* 4 * PP* M&LM 2 OM3OPLOP&QM3* O 24 OM&N OMMMMM&B(* F (* 0 , S @), 8T_7)(BC3."DE @"-;* F (* 0 , S #; 3> S 14 ===== page 15 ===== !"!"# $ %& (')%# $%# # *+ ,# - %).& /10$ %2%3 **,3# % % %*4 %5%!76- 8 6 - $ - # 9# 6;: # /<$ ,%+=>?A@ %%0$ %2%B "*% # - $ - )% !"C DAE# 9# 6+.%F6 % /1* * # %%,$ "# %+$? - %M$ N# %##*- N# %#: #%F6 %D D D H.%,!",- ,- 3- $ &$ + 6 - $ %*#$ + # $ O& CPN, %+6 $ B 2%)%% # %$ $ I- : # 6+$ - 2% # %%,$ J$ %*+$ +,+ - Q& C 4,%%*- $$*-6 $9# %%D4$ - %*- $- J$ : #: # 6;$ ,%+ 66+ B $ *# *B:6- 3 I%# G %*- $ # DN,% %#- $ %# : %*%I)# *L 9- - J: #: # 6;$ ,% 66 9%:6+ $B # : % - B- *:6- "%*- $ # # *.D R % IB 2%+ - *- S 4 $ B 3$!",$4 B 6T %*+$ D SU$$ ,%+5% $ - - & !",$*%B $- $*$ ,$I+# % - 9+: # O V %$ ,%+ %# W - $ %# : %+- 8*- : : %# %$ D4 : $ .- $ B ")- $%F %# - 6%$ D N,%# % - "- 6 %.&.4*B $$ ,- 82%# I,- 9, I:.$ ,%S $ *# *S- $ %# : % *6X$ # I- 9$ +%F # %+$ ,%#6+# %+%: : % $ - 2%!JI":*- 9 $ : : D4 $ B 8$ YYI6+# %Z!",I+, *4 - 6+- $6I % :.$ I%$$ ,%# %+:LW [3I%# *6+- 8 # 9# 68G I $ %6O N,%+9:.$ ,%- $ %# : %+- "$ # % %$ %: - : # 6+$ - !",- %%% - 9 $ $ %#@ - D %D % % 3- : # 6+$ - C$ +6- - 66LD+N,%+ I $ %6T- " *% - 9%*+$ %$I+ 6+ %S )I+%# S .# $ ,%#$ ,)I+%I%W WI+ 6 %+)I - 9 %W $ % - 9+$ ,# 9,I#$ %.- $ %*: $ # - 9+$$ ,% # %%W W* $ +*+ # - * ID \ J$ $ ,%S %I)# *L 9- S !J% 4*B $!U!",$$ + IDA- %I)# * I$ .# #%IJ$ 6+2%+# **=N.'.] W %$ $ %#%I": #%*- $ # 66+*D 4 $ B "!: I,# *+: #6+%$ + %%,!U$ ,- " *)%*- : : - $# : - 9D 4 %5- 8 6+ $$ # - 2- $ %.&I - 3- $ # 6+%$ $ I %+%II,%# $ ,%$ %8- $- "%$ %# %*D+N,%# %B 8$ ,- 9+$ + %$ W WI8^ $$ I %+* # !"- $ ,- $ D4 $ # 6+%$ J$ %+3: %!U % *"$ +# %$ %# %+% I+$ $ !J% *6+% J!"- $ ,$ - I: - *+ 6+%$ ,- 9+IL - %*+ )%+- 6 %+#2%# I 6+ - $ %*D \ # %99- J$ +# %$ # - 2- *+: %F- ) %D4 +66# II * # %$ $ I6+,+I$ ,- 9+I!J$ .)$ ,6- I+*- +$ %# 6+":.04 _ ** 5- I+*%- ID 0!",%# %B J$ ,% # ) %6O 4: - 9# %*!",%4!"# $ %- %5+$ ,$- $!J *B $)%32%# I #W W6+ $ %%# *B $ - %3$ + $ % +$:.$ ,% 6: # $`%D \ *- $ %# $ - I,8# 6;: # - 6 # 2%6+%$ *+4*B $ - 6;$ ,$- $*%"%2%# I$ ,- 9#- J: #%2%# I%D $- $ %# $ - I+*%86+ $$ ,- 9 .*%J$ ,%6;!J% .*," )- - $ - %J$ ,$ # %+ # % IL - 9- +$ ,%#6- 8 # 9# 6+D R - $ ,- %54 6%+ # %$ $ I6, 15 ===== page 16 ===== ! "# ! $ %& '% ' %! ()*' &$! "&&+ % %,- ./ %)" 0 01*' )%23 4516 7 % ! ! $89 ! ! -& -6 : 7 % 1%'% ; ' %" < = - $! + "" "8?> % < +'$- < ! !) @ ( : %)! "< * = %A& )B! '$( C % ' % ' %D $! *$A*B&( C %E ! EF *; %" $! G H A*./ 0 0* $! ! (I3"* A*B) ' * $ +D% % ! !" G H A*./ J+$DK-( : C % "%' L A : &+1 *$")! ' : ( C %'$% 1 ) % * +$! %DM& L&< : -( N %-( C % $! + ! ! $(I4" ' %L- AO & 2 / ( C $! D $ ! ! %$! ) > P ,&BIQ-R SS$T@* U) 2! ( V $! !" % & % " %) W ! ! * 2 -( C % < % ' % - I ) L- AO *> % ! +" ! ! @ (), ! ! & %L AO % % D ! ! U ! % % ! ! =DM& L# ( ,-" $! < F! "+ 'I! $! ! % 0 01*! !" D * 0 '() " ! ' 2 %"% W %$! $! % L A# ' "%'( H % ; 1 D % $! 2! > % "% ! ! & %)5 C ,-LO1X A G D% ! @ ) < ! !+ $( Y 2 &" ' % % FX A G I5 C ,-LI "% ! *0 0 )X A G '$ I! )5 C ,-LO * )"% %D % - %* ( : ! $< 1 " '-( N %-( 7 $! ! - ' *%2D $Z$% < ) %1 *E "EF" D$ '89 < ! !+ %2 1 ; % 0 $! ! )+" ! "#! ) ( 7 $! ! &! $WF [ % * ) < 2 +-( N - 9; \D < & % D+" D & %* ' "-*< U % ' (O]$& % E *" 2 % ^ ! $" % "% & ! - 1 1+ ! "E )! ! " ! ! -() ' 2 *% & $ % 1 ' % = ' % 0 0 ' 6) < )! 2 %+1 6 16 ===== page 17 ===== !"# $%!" &'( ) #* +!, $-* % # !" " .!" / 0!)1+ "#2#+ 3 # %" #% "- 4 % !))!) 65 - 7" # " # * + $$6 * # $ # $- * 8 # 59(#3 7# * : $ ; < = #?> @ +1!" ##A#%5 + 8 > B>- 7 " #%# # # C D+!) #> #65 5 %$ 5 &' E2+ > FGGF ; G& ; HH GF2> FI> GJ(K NNPO $6!" > ##% #% + $#2 ## :> L # 4 N + # % # ) # #% #+ #Q3> R # + %!)4 * *!)# 5- % +!)# %+ 5* 4 4 " 653> N < #%!" 4 " % # : -68 3#4 S 1 5 L 4 " ) #% +659? 3 # ) #%1+ $ - 4 T. % # 0 + +13 $2 1%U3#+ ; #*V L +1 + #S= L FW - L F%+ #(K R 3%-3 # 3 % %% X 1 # 5 *-3 ) !" 6 #%# !"#% %%!" 5 N 9? 7$6-3 %1 + N % #-*!) $6%!" % %#+* "-*!)+ $6# Y67 +1 Y? N $!" #* % % + 5-32 #Y2 Y2$# %!" < - EZ N !" ; ; -3+* #+=[*DQ < #) # 1%0 13 6Q9(% 4 *# % %*#:- 4 !)"##% #++!\ " !, $2# +4 )8 " !)# 0 % 3 5 N 9?# !" 7:]-*!" $#+2 # 6Q -*!)#4 5 N 9(#3 7# * : < %#+65 N $ N ; < W+@6 1+!"^ 17 ===== page 18 ===== ! " #$% & ' )( ' " ' )( * + ,.-/ * ( )( 0 1$." 233425 3645 778342$ 9: ;2< 4= > ?(.-A@B4 ." CD- ' " C)%B* " 8-' 4 0 8- -' %E)& ' .?F 4?G"$" F% &(*( ' " " H" *4" ' "I ?J 0H "B .-K' "-/J J -' " )1$LE$MN/O, = = % L/,B ,-H.J " " *H% P + F" )' " ' * " .-4 ' "B *' Q)' "B ' /" 0% J' "BP "B J R" " 8" ' " ' ." .? " GP "E." " G 8' J' "B' 8(-/ J " F-/ ?G-' " 8" )( 8" )?.' )J ' % P ' ?8" )( 4 F" ' *" ."Q 0)0).J" ) ' G' " J $" 6;S .?G' -/ 5 - ' " " " ." ' ,."B " *H/" .0).J " -/ .? 0 F*4 (G .-/ H.0AT ;NIU4#)-F-/ F" ' GU4TUU = )( %J ' ).Q" F' "B.J$VEM$% /" )' . .J J " ." ' /-' P "B J 5 .W(4 ." 0$)' " " 4 0H%E.QP "B.?) "BVB." 5E LE' = .?B' " ."B ." .W" H " ' /" H%B4 0?.-X ' 4' " $-' -' " "B H" ."E' % 1-' 5 5 G $*)' WB *()A,L < BN ! (4 J ' ! " #$% & ' )( ' " ' )( * + ,.-/ * ( )( 0 H " 6; 1$." 233425 3645 77F342$ 97 U3< = LIA7.3FY )23342H " .Q8Y - " $ C[Z4 H C CD% " ' . @E<' 4 T,\B ;$ UU 342367.37U27.U493 7.6;$7.345 7.333334)(4 ! ( J ' CBH C$*)' WX@*()A,L < BN ! ( J ' CD- ." C]C C]CLINEH7.3Y 23342H> .?(.-F- " C]C C]CIC]# "I> ' C]CIC C]CICXC " .QGY G )% &4H).-^ ' (' " ' ( *4 RJ C]CICXCS" 6;A " .QP G ' (." ' - <. * )H.W)( H C]CICXCD H) " ."_-I-I-8 J J 2 G` J ' * `' & C]C%B.?' "B "B' "B*4 4%E" ' ' "E' /" FJ $J R" F )F C]CBP " P.J ' G(4 .0 ` ' " = B' " J A?.0 A *' C]CB' J $J R" ) *.J "BP ( J ' P4?.' J ' G' " C]C C CSaA H .0 P QF ' ' Hb % " P G"$-"% P " bX> "" & " ' ' CS-"P "E' "BF" "0 ) 4?.' *FJ c 18 ===== page 19 ===== ! " " # # $ %'& " $ ( $$) * $ +$ ,) * - +/. 0 1( 2 "3 51 0c 41 0c 41 0c 41(0) 00 41(0) 00 41(0) 00 41(0) 00 40 00 40 00 40 00 4/ $ # / ' /5 5 65 5 5 5 '/ 5 5 2 ' $ 7 " 7 %46 $ 7 ) 7( " / 6 +$ 7 $ $8 9 7 7'% % % $ # ) ) 7:, 8 $ " ' $ 7 )3; ' * 9 $ < <" '% =?> $ @ 8 %(- 6 # 8 /" % =?A 8 " .'-# / ,8 7 7 5 5< = 2 7 " 78 $ %(- # * =CBDDE 7 F 7$ -G <)7 7 / 6 BE @ BH 7 = ($ *" *! 7 0 1:77$ ,* * 08-< $ (7 ,$ ) 7# 8 $ / % % - # ,) $ 6 @ # 8 8. I A 7 " J A K3/L6M- & A 3/(,7" 7(,7" / , " 7":NO" 7(P < $($ I ' G& B !&Q!& H !&R?NO" 7! " ! ! % P ST "# #.!( @ 4%A ( ?! ;1B1C D# * 0 * * % 41 E%F ' +6 *!61! G *7 - 3 ( %/ /: +* 7 : "# % 1H# 4%* % ( & I 3 . *6%* 7 % * & 3 ( % 1 3 ( 6 7 1H# 7 & 1 - .- &* 0 # (- ( * .( * "# * ( * * 80J 0 ? 5! *#K * +6 7 L (. *( - #M $ 6 7 - .6 7 * I ' JN( -POQ#/% ?$ * ( ': 3 1 * ( *.0- # ("#( ? 8 * *1* #7 "!! ?4 < ( * ? . * 1 4%< , * ,: %K 1 "# R= S14%A+ / / ( * * T 1 ?4%< % *. I (- ! # = S14%A+ &* )- "?U S5" $ 6 (- %- . ( ' 8V ;6 4 8 ! * (.- "# % & * * 8%* .0 ! * * & % - (*! ?>06 ;07 8% 0 @ (& - NW # ;6 4 NX0 3 XV ( .( # ( $ Y 2 = / 0%24. % 8* <* ?. , :* % % % +* 8* % @ A A<'+* *% . B ) < A % %4 %-" C. % 8+* $ . +D3 +* -8* (4 !" # % B - 4 $ % 8. E' (4 1F ' +* 3 %3* & (4 % * * 2 -G++0!?(I '" C- . 3 ' ,J?1. %OF 8\B" 2 +?B ,. B% B2% '8 + %.1 "' 58 ' 2 2" C[+2 BM "2.83 % )(4 @ U * ?. 3 . . 4- 2()B % * 1 <% ', * M 2 4-* * . * * " ' 2 1+ ' + %6() ? (4 - 3 %()+? A A + ]-" :* -2,< ] Z< 2 4F %< , '58 * [+<(^:?(^ * 2(4 , 2 )_'/ \. +* * 8+* - B C B - C- ) % G2 3 % %+* * )(4 `* -, -& -8+* />% . %(4* -* 1(4 WV%. ) 2 (^ .1"2 (4 % . 4 %a(4 5 @8 ()? B3 '8 + %4- % 4" +* ())() " C-4-* B 2 < 1.1+ 3 % 1 @,'8 +* * 1"< ' F - L-'+ C 2 N ">?(^ * +1+ 4-* '2 . 4 21 ===== page 22 ===== ! " ! #$ $ $%& && ! '#()# ! "* + !) ! ** ! & , #(* + '- ! ! !&( & ! )! &#( - - . ) !(!(/0 (&( ! !&(, ) 1* !( - /- . && " )! !&( ,& # # ! !$ $ -"!&, ! $ 2 " !0" !# )& "* + "! * &/ ! ) !& ' )) ! & ! ! &!& * 3& # ! (#) " ! $ 4 (* + " # , ! ,!& #) 5/ " ! * !( 0! ! *& 60,* # ( 3&) 78 ! 1 & 6 ( * & %9 .% !* : ; 4 : '* !* !&& & & 6 , ! =? 4'@ 8 ( 8 *!&&!& !A & !* !& 0 (* 3 *! $BC 0 ! ((!/ : !)!# , ! * + "!&,&(D & , # &!#!)! &8 ! ) ,!)! & ) !*! ) ) #( !# #( !"(* !( , E!&0,! ! &$ $ $F GH I J **#(& $ 8 8 B = % @ 9 K L5 % 0M &&,F + &&N *$ I %/ + 5 ;5: 6, ) * * !D ! & >/ *5 *$ ($ /! $ OP ?! /5 QRRQ8 RO8 ST,QQ5 SU/5 QSV%. W !B )5 I : ! YX'V $ 9>Z"$ P$ 77$ RQRO/SSR[UT7\R/$ QSO/S78 SRRRRRN!!*$ + !*$ ]" B ^X!*!NY>/_"%V B 4 $ + !*$ ]`) /5 ] ]_AYSR#M QRRQ% 0M &&) 5 ] ]'; # & / " ! ! " ## ]!0 = ! * /!& * ! &) ! $ K ]!* /a &,&!# ! 1 & 6 1 ! ]"& : 65 G ] ]b,!0c *d > 51 0c > 41 0c > 41 0c > 41(0) 00 > 41(0) 00 > 41(0) 00 > 41(0) 00 > 40 00 > 40 00 > 40 00 22 ===== page 23 ===== "! #$ &% '(%) * +,-.- */& # 0 ,21 3 # 03 #4 * &5& , $( 26 *#7 , ) +89;: <)= = &) , & > , 7(4 & ? , , 7 @2 24BA CB < / , 4"& * D & 4! = #4 (& , 2 = 4 ( #4"4 > ! 4" E ?&# A" CF , 3 & & 3 = = &% % ## 4# 3 ! , *&! 3@ ?#3 ,&, 4 , 3 #! # &? *#?#7 , ) B?#3 >3 ?) , * ($? 3 (A CG , & ? $!( 6 * && *' **H 1 # 4" , 4 #7 @ < /#I)# ( , 4B 0"/ J?&& 32 ?3 # ?# #A CF( ? ## 23 , / & 0? 3 4 ?#>3 ?#* 7 &&3#3 / 4"?7 &# , 4 ? 4 03 ? * ? , & H #4 B 4 JBABCK7(4 # 3/ H * 2 #( ! #3& # /#I* #* ($? 4 3 (B* # #A C/ & ,, & # 03 = = 3#3 ! #3 ?& 1 3 = = # &% # , % 4 >& & & 3 &3 #* 4 LJF M #NB , ,, 3#3 # ,, 03 4"( / I&% 4 >4 % * # 2 # * , 4 4 /&4 >4 1 ) $4 03 ? 4 & &! = = 4 >& &! ) >& & # 7(4 O & # * H# 4 03 ? , 7 &!# *4 B 4 7& ?3 & , & * 4 03 ?/#I) : 9 ) ?3 : 7(4 P + 5 9 4 0"P + ... 6 B ( < Q , ?3 : 7(4 P +99 4 0"P + ... R , ?3 : 7(4 'P +-B9 4 0"P * ( 4 >4B 7 $4 03 ? / J 4" # &# &!$ 4 # *&A C)/#I?# 3 ?#3 & , # # ? , *& , * , $@2 ( ? ?# # ,, # /#J? *#?7 &# #A C"3 & ? !# ,, , / J ** & = = 3 = 4 D & , ! *2 # ** # , /#J ** 3 !#? * # , , "3 &( (# , * (#4 4 , 3 & #3 ?& = / S J , # " , , 4 , # * 7 , 4% , % B% * , % S % % (% ( ! %4 4 3 74 D , 3 &* 7 ?& S 3 # ?&& *"/JB3 ? # $( ? & 4 B #0 ?#4 S , , 1 ?! ?/ / / *&# 4" # S # , $ 7 # #$( ?'@# , , " , & 3 S * 3 *&* , # , &?&&# , 7 #7( $G , ( S ( ! 2 4" # , 1 )# , # ) ! / B @# 4" *2 !! ?7 , &!# ,&, , )# & ) , 3 "!) 4" # 0 ?&4% ?#3 A" C%) 7 ) , )(#! = #4 4 3 / , " 7 & ( , $ 23 ===== page 24 ===== ! " # $% & '% ($ ') # ! * + ,%-!+ ./ ,)-!'% " 0 ,% ) & 1 ' # 1 ,%-2 0 0 ,% ' 3 $ # 54 ,)-7618666%966618666666 66 66 666666 : '1 ; "!+ $ $ +< <% ; ! %% ! = * ,0 : $% 0 ')* 0$0 ( ') 1 >0 $% ( ?5 ($ '5 ; '1 ') @ 0 * , ')#>0 # 0'); 0; < <# * %>" A " " @ # "*% "< <#* '% ; ! ! '1 % @ >0 3 A 0 * $** & @ @> < 50 $$ $ * '5$ $ %$ ! * < ( B4 C /D%5 E 0 $ '1 @ >0 * " & , 41 "F5 F/ $ * 0') 0 ' $ ') ( !$$0GH# % %; %>@5'1 ; I $ A " ! $ /J $ % * 5 $ #< 0 $ > 3 '1#* '1#; $ 5 0@5# 1 < < ( ) Q Q R8 LR0S0LRT LR0U/V2$% 0L $ L L Q M W#X!Y5< % C! *0 A *! % $ Q >0$ # # >0$ )D%! # * Q ) 5 >') # " *@ >0 0' Q $ 0< * 1 &5Z R A '1Y5D)X[Y A5\)] )R ($ ' Z Q Q1^ ! $ *% >0 "M W#X!Y5< >0'%_ Y Z < >0C $ Q ; "* < < 0) ^ #!$ # >0#$ O Q *% ` % A >0 5 0** L $? ; >0$ a 1P %>0 >0$ 0 *% < >0< < 0'1 0') %< < * $ 5 * #5 < >0)O # % ; 24 ===== page 25 ===== "! # $%$ ! $ & '( )( " * ! $+,.-/ 0 $10 ! &"2"3"4 56 ( 0 0 ," 678 9 : *; < ! .11 0$0 1 $ = 9.= ' 9 < . ' *6' 0 % >% ' @? ' ( BA A6? " ! $A A.' A < C . B '" 1 # *6 # $ ' 0% 4 4 " = 6 .0%$ /8 9 &D&E&(F ( B ! ? 0 01 &D& &D& < G $*; $'0 01 HI= 6 < B'* < &D& 9 &&(F $1 %'KJ6A 00 = 1 $ 9D . #% " & 01 $@ 0 1*('.1 $$ & +('JL' % 1 $'B1* ! 0'AD # ('JE 1 $ @ ! "( A A MN % .11 ( 0 $ ' ! ;/OD$% ! < # 0= $0 ' 0 9 &D&E& 0 "< P ! ! ,( M 1 $ ; &D& &D&/Q % *; 0 ";, M Q D ? " &D&LR S ,-T A A" $ ;/U " 0 , M @ * &D& $' ! 0 R S ,-T B C'V; &&"S = .$' ' *; $; 9 W *6 < %, M *;$< ' $ "! % 1 #0 X 1 *; # $ ' D, M Y @ < ! ! , M 1 @ < 67 &D&[Z 2 ,\ .]( # ]T && 6]6 ]/ *6 60 ! 2 ,/ *; & ! 0 U R . ( D8 9 F * % 1 ! "! B 1 1 0 "6 /+6 < ! # "8? 0 " 10# ^ 4 _= A 9 ! '#%? . ) 2 1 ^ 4 _ @ Y , R ;`^ 4 V a % 0 W Qb;2 *6^ 4 5_" " W Qb;2 M6c a,) 2 = a 4 $ B1. 9 , * ! 0$ "0 A * 0 ! ( 0Y , R W Qb;2 ]6 ]/ " 0# 11 1 $A A "6 /O; ; 25 ===== page 26 ===== ! " # $&% ' (!) )* + !" # , #-$&% '. ( / 0!1 ## ) ,324456 78&'9#, #;: 1 ,# ,#, 0 8 .< = 0 0> 7 > 7 ,) ?9/ @ >1 ,A: > '9,/ , 0> 7 > 7 ,) ?9/ @ > $B:% C!D9E > ) F > &G# H > '9#, A:# H/ , 00 + # 7 ,+ ;IBJ!';?&/ 4K -, B + B8 0 , B8 7 G# G /< = 1 /C"L% * M#(# -< = /;K* 7 , M ##) )B% * N( - ,( G +% 7* B,8 /;O P , - # = / Q! 9 89 - + 8 -) ) %" %B #, # 8 N B%B,* "RS ## - /3KB 8& * + 8 T* + 9 # 8 , B (8 9< = / 0 J! 89 + ,G! M ,#8 BH( ,8 G/ 0 K!S;S +7# , , UB= V(8 G,#% ,# 7 # B 9 8& W 8&%B * 8 G G#BT #%! #( #( G N , ,#%B ,7#(! G +/#C" / & ,+!- !:9XBYY V; # &#B , #( G #9B,'CJJXZQE;# [< =\O Q9A&7 A.(([ = 0 Q # ] #( , - # T - T 7 GM8 0 # /9Z9 & # , # ,#, 7+ ^!) # 0 / / /< = P * +8 G9/#P# ,M 8 & # G 9,#! 8 & # G /Q * - # # + /E% G ,&+#@?# + M+ '9 ( / C"# # -8& ! 89 # 8 # -_ + ,_ & 8 8 /,#%" ,# B #) )B7 G + & , ] O ( + 7 ) + , 8 ,= [3K % T8 + 2`_ _! #B # G ,# + 7 /V BG + # ,+ 8 + #( +G+ /% * + # G G , 9%B # [ 0 % ! - ## G ) # 7# 8 ! - ( & 0 B( G 7/ P / / / / M + M BG #GG G/Q # , ( 7,#, 9,#%! ], B%!7 8 , 7 > , # 8 8 9! ,#(B G ) (( G 8 ,M( M /% T#, ( B 7 (89 ,#, ( + 7 _ G_!, ( #89 # ,& /%B, , ( G 26 ===== page 27 ===== "!#$!%& '() * * +* -, . $/ 01-/ 0 $!+/ 02-/ 0 $!+/ 0 3() "( ( $'+ * .( 3 ( 4 $ 5 ( 6 7 8 ( , "( 9 3( () ( ( : $ .; -7 < :. + 2= 6 7 8$> ,# * .-- ( * $? (? ( 8 "' ? $ * @ * .; - ( A (' -,A* 8 ( ;7 7 7B; ( +: ,3 C " * 8 * $$33-* A' , * *:3 C +D ? $ * :. 8 . , ( : D "D E; (' * * .:':; :: 8 * : ( ( $( )3-* : (D D E; (, "- (-* : 8 . $ ( ;( (A* -,* -* ;7 7 D * .(A* , 8 7 -7E; ? ( -* * 7 > -* * : -,):(-* A:$3* : 7 ( :( : +3 .- (AF F2 : . : $(* -7 ( (-:? @3 .9-* : 3( ( :(-* : 3 (' ":$ 3( ((3 -* * : ( ( ? + . G H $ +(':? * * ( 3 3( . $ * I $. .. " .;'* * - .+ / / -* ,)( . (':')= 6 7 J++:( () * ( ( ( ;7KJ$ ( - ? (-* ':(A L M3 .- (7E; ? ('N,3(' O . . $ +-,(': 3 3( $ ? (' 3 * G 4 > * ( $: -* ':( * *P'QA$ ( :? R* , ( 2= 6 7 :':( > -* * :33 A ( 3+* * ( 94 * * :" ? (( .R* ,STR* ,(" / / * (. 3 ("( ; U-C ( / / () * * : .(6 7 V $ (;.-; @3 * ':('* 2= 6 7 > * : 3-7 ( :(7 5 .-( : * () 7 . @ =.+( : W$* AE; , X= 6 -* * / B- 27 ===== page 28 ===== "!$#&% ('*),+ -.!./ 0 11 '"!$#'*20 3 0 '"4&3 5"0 0 3 5$6&3 *78 /99.1 '*7:,'*);&'<=/"<<: 9"> ? '!.!$9"'@3 /"&ABC5@ 3 D&% E0 F*F0 G+ -"4IH0 3 5J3 5J5"0 99"G"/"!$<: F0 J3 5J*9&0 3 '":*9"9*9 5: ) ':!('": $: "% 0 "<0 % 0 3 DCA K'"0 1 3 : 1 L2"M V0: hard+ gate=3 DDDDG trans=3 G trans=0 HIJIJKKLLMM trans=2 M trans=0 NPPPPTULL hard+ gate=3 MM trans=2 M trans=0 NPPPX V1: hard+ gate=3 EEEEEE trans=3 EE trans=0 EEEEEEDD trans=-3 D trans=4 D trans=-3 D trans=4 D trans=5 DD trans=7 DD trans=3 PPPP trans=0 DDDDDD trans=-3 D trans=4 D trans=-3 D trans=4 D trans=5 DD trans=7 DD trans=3 PPP trans=0 X V2: hard+ gate=0 AAA trans=3 A trans=0 BAAC trans=5 C trans=-3 C trans=4 C trans=-3 C trans=4 C trans=5 CC trans=-5 CC trans=0 gate=3 QQQQ gate=0 C trans=5 C trans=0 C trans=5 C trans=0 C trans=5 C trans=-3 C trans=4 C trans=-3 C trans=4 C trans=5 CC trans=-5 CCQQQ trans=0 W N 3 3 : *"M A: inst=0(hubbass) dur=1(6) a1 h a1 a2 inst=1(crash) a1 h inst=0(hubbass) a1 h a1 h h a2 inst=1(crash) a1 h inst=0(hubbass) g2 a2 a1 h a1 a2 inst=1(crash) a1 h inst=0(hubbass) a1 h a1 h h a2 inst=1(crash) a1 h instr=0(hubbass) g2 a2 a#1 h a#1 a#2 instr=1(crash) a#1 h instr=0(hubbass) a#1 h a#1 h h a#2 instr=1(crash) a#1 h instr=0(hubbass) g#2 a#2 e1 h e1 e2 instr=1(crash) e1 h instr=0(hubbass) e1 h e1 h h e2 inst=1(crash) e1 h instr=0(hubbass) d2 e2 B: a1 h a1 a2 instr=1(crash) a1 h instr=0(hubbass) a1 h a1 h h a2 inst=1(crash) a1 h instr=0(hubbass) g2 a2 d2 h d2 d3 instr=1(crash) d2 h instr=0(hubbass) d2 h d2 h h d3 instr=1(crash) d2 h instr=0(hubbass) c3 d3 e1 h e1 e2 instr=1(crash) e1 h instr=0(hubbass) e1 h e1 h h e2 instr=1(crash) e1 h instr=0(hubbass) d2 e2 a1 h a1 a2 instr=1(crash) a1 h instr=0(hubbass) a1 h a1 h h a2 instr=1(crash) a1 h instr=0(hubbass) g2 a2 C: instr=0(hubbass) a1 h a1 a2 instr=1(crash) a1 h instr=0(hubbass) a1 h a1 h h a2 instr=1(crash) a1 h instr=0(hubbass) g2 a2 a1 h a1 a2 instr=1(crash) a1 h instr=0(hubbass) a1 h a1 h h a2 instr=1(crash) a1 h instr=0(hubbass) g2 a2 D: gate+ instr=2(crish-v1) dur=3(12) arp=1(octave) e6 a6 instr=4(hubharmo) dur=1(6) a4 h a4 h a4 h h a4 h h g4 h h a4 a4 h a4 h g4 h a4 g4 a4 h instr=2(crish-v1) dur=3(12) e6 a6 E: gate+ instr=3(crish-v2) arp=0 dur=1(6) b6 c7 c6 c6 instr=4(hubharmo) arp=1(octave) e4 h e4 h f4 h h e4 h h d4 h instr=3(crish-v2) dur=1(6) b6 c7 c6 c6 instr=4(hubharmo) e4 h e4 h e4 h h h h h h h G: arp=0 instr=5(hublead) dur=1(6) rest rest a4 a4 a4 h a4 h a4 h h a4 h h a4 h h e5 e5 h e5 h e5 h e5 h h h instr=6(beoop) e3 h h h instr=5(hublead) f5 h h h e5 h h h f5 h h h e5 h d5 h h b4 b4 h b4 h b h b4 h h h instr=6(beoop) b3 h h h H: inst=5(hublead) a4 a4 a4 h a4 h a4 h a4 h h b4 h h c5 h d5 d5 d5 h d5 h e5 h d5 h h h inst=6(beoop) c4 h inst=5(hublead) d5 e5 f5 f5 e5 h d5 h c5 h b4 h a4 h g#4 h h h h inst=5(hublead) a4 a4 h a4 h b4 h a4 h h h inst=6(beoop) c4 h h h I: inst=4(hubharmo) arp=1(octave) dur=1(6) c5 b4 h a#4 a4 h c5 b4 h a#4 a4 h c5 b4 h a#4 a4 h c5 b4 h a#4 a4 h c5 b4 h a4 f5 h e5 h J: f5 e5 h d#5 d5 h f5 e5 h d#5 d5 h f5 e5 h d5 b4 a#4 h a4 g#4 h b4 a#4 h a4 g#4 h c5 h b4 h K: inst=5(bublead) arp=0 c5 b4 h a#4 a4 h c5 b4 h a#4 a4 h c5 b4 h a#4 a4 h c5 b4 h a#4 a4 c5 b4 h a4 c5 h b4 h L: gate- dur=3(12) inst=5(hublead) f#5 inst=a(scream-) f#5 h h inst=5(hublead) e5 h b4 a#4 h h h dur=1(6) a#4 h b4 a#4 b4 h c#5 h c#5 h c#5 h h h h h c#5 h e5 h h c#5 h h inst=b(scream+) b4 h h inst=5(hublead) c#5 h h inst=a(scream-) c#5 h gate+ dur=3(12) h h h inst=6(beoop) c6 c6 M: gate+ inst=5(hublead) dur=1(6) d5 h h h h h d5 h e5 h h d5 h h inst=b(scream+) c5 h h h inst=5(hublead) d5 h d5 h c5 h d5 c5 d5 h h h h h 28 ===== page 29 ===== N: e5 h h h h h e5 h f#5 h h e5 h h d5 h e5 h h f#5 h h g#5 h f#5 h h g#5 h h a5 h P: inst=9(harmo2) arp=1(octave) dur=1(6) g5 g5 g5 f5 g5 h f5 g5 h f5 g5 f5 g5 h f5 h Q: inst=9(harmo2) arp=1(octave) d#3 d#3 d#3 c#3 inst=6(beoop) arp=0 d#3 h inst=4(hubbarmo) arp=1(octave) c#3 d#3 h c#3 d#3 c#3 arp=0 inst=6(beoop) d#3 h c#3 h S: gate- dur=3(12) inst=c(scream) g4 h inst=b(scream+) g4 h inst=c(scream) a4 h h h h h g4 a4 d5 c5 a4 h c5 h inst=b(scream+) c5 h inst=c(scream) d5 h h h c5 d5 g5 f#5 d5 a4 g5 T: arp=0 inst=c(scream) dur=1(6) a5 a5 h g5 a5 h g5 a5 h g5 f#5 g5 f#5 e5 f#5 e5 d5 d5 h c5 d5 h c5 b4 h c5 b4 a4 b4 c5 d5 g5 a5 a5 h g5 a5 h g5 a5 h g5 f#5 g5 f#5 e5 f#5 e5 d5 d5 h c5 d5 h c5 b4 h c5 b4 a4 b4 c5 d5 g5 U: gate- dur=3(12) b5 inst=a(scream) b5 h h inst=c(scream) a5 h h h h h dur=1(6) g5 gate- h a5 h c6 c6 a5 h g5 h a5 h dur=3(12) d6 inst=a(scream-) d6 h h inst=c(scream) c6 h h h h c6 d6 g6 gate+ dur=1(6) f#6 f#6 dur=3(12) d6 c6 a5 gate- g5 inst=b(scream+) g5 h h inst=c(scream) a5 h h h h h dur=1(6) g5 h a5 h gate+ c6 c6 a5 h g5 h gate- a5 h dur=3(12) d6 inst=a(scream-) d6 h h inst=c(scream) c6 h h h h c6 d6 gate+ g6 dur=1(6) f#6 f#6 dur=3(12) d6 c6 a5 W: arp=0 dur=3(12) h h h h h h inst=6(beop) g6 g6 X: arp=0 dur=3(12) h h h h h gate- h inst=1(crash) e1 e1 0 1 [+0 +12] inst 0-hubbass atdk=09 surl=d0 pwid=0102 01ff 0016 creg=41 gate=40 inst 1-crash atdk=0a surl=09 freq=0f82 1f04 creg=81 80 gate=88 inst 2-crish-v1 atdk=0d surl=f1 creg=15 81 81 15 gate=14 inst 3=cridh-v2 atdk=0f surl=b4 pwid=0200 creg=43 81 81 43 gate=42 inst=4-hubbarmo atdk=06 surl=ea pwid=01800 creg=41 81 81 41 gate=40 inst=5-bublead atdk=29 surl=99 pwid=0900 09a8 0a50 0af8 0ba0 0c48 creg=41 frq+=0000 0040 0080 00c0 00c0 0080 gate=40 inst=6-beop atdk=0a surl=0800 freq=0dd0 0100 0100 creg=41 81 81 40 gate=40 inst=9-harmo2 atdk=06 surl=c9 pwid=0800 0006 creg=41 81 81 40 inst=a-scream- inst=b-scream+ inst=scream atdk=38 atdk=29 atdk=38 surl=9a surl=99 surl=7a pwid=0b20 0c00 0ce0 0dc0 pwid=0900 09c0 0a80 0c00 pwid=0b20 0c00 0ce0 0ea0 0dc0 0cc0 0dc0 0ea0 0dc0 creg=41 creg=41 creg=41 inst f-hard gate=40 frq+=0000 0028 frq+=0000 0094 0094 gate=40 0094 0000 ff6c !#"$ %&"' () & *( + , ,- ,". / 29 ===== page 30 ===== Ripping a game: DIG DUG Stefano Tognon ! #"%$ &' ( ( ) )* + ,-#* .( / 0 " 12 3" && . .5467 .267".8 * 9:;/" & < .=:>? @ )A#CB $ &' ( (/D +* + ,-#* . 1E5F+ " G + / G GH2 IF G) .)*CJG+ ! I &K GF < * LC % 2D "M + 3"2 && .K! " NJ.! '&5?A@;#=2,)='. =+ % '% % &-54 2=! #=>'&B2,)=0 ,)4 +: >5). -$$! ! .C8(#. ! #;&)% 0. ,)$! $B %$?5D5,)3%6#,)54 +:)% 33'B&, ! ,.(E 4 76! #'$!0 ,&B FA 0 &)54 '! ,. G ,.76$* ><'H4 % !,$ '$++. $% % $%! #'$!'. =I$06)$! +<+). >=! #:>'&:-2<% ! ! > % ,&-. $'57*$, $! %$? ? JK3L M(MCMN OP#. ;'. 3'. ,)%&,$+3! ,=,-! ' B';+ % '% % &-54 ;,$ C! #;>'&5?PD5,)B%6#,)54 +:)% ! #3FA 0 &, ! ,.Q ,.A% ' >! #+ % '$% % &-4 QR S",$8. /P2,)%6#,)54 +3+)&*! #3&&,. 2,$ "! #>'&8( ! #! #&, ! ,.C ' 4 '+ ! #+ % '$% % &-4 !A8( ! #'&,. %6*$06 0! ,$,54 ? T ,.I'&*54 H2,)U0 'V)% ^2,)_8'$!`! ,_+ % '% % &-54 aE ! #^! ,,54b %c'' 4 '-54 ^ . ,&d#. "R #$! ! *QR e e 888? >$,06 ! %? 0 ,&e f" 4 0 ,FQ'54 4 26eg '576$% eh5i6jPk6e6*$'$076'>$% e G ? D5,):*. ,-$'-4 2H7,8l,$! #.! ,,54 % ,.+ % '% % &-54 ='= 4 "R])% B! #<&2% 4 ()$! 4 ! 2QRm n6opYX W E #! ! *"R e e % ? $$! e6*. , q $0 ! % e q 0 rj G! #'$!+ % '% % &-54 =*. >5/A%6 +='+=&)% 4 5?Qs$;06#'. '$0 ! . % ! 0,$ ! # %(! ,,4 %! ,'$++'0 ,&&$!A! ,! #$37,$8(&&,. 234 ,0 '! ,%-$ >+ % '% % &-54 $+P? 31 ===== page 32 ===== ! "# !$ % &$ ' ## (!! )&$ * $ % )% ,+ % %)+& , ,-$ ) -.0/ *1!-$ ")+,!*)2$ '( " #3 4-5 #67 $ '* " 8-9 * :;+ ;)+"# !$ ,$ ' 3 8-907 )+" $ )" +&! + $ 89 $ '#=< > 8(?@#A 5 $ $ . BA +-$ -+ C + : D =! +* +-$* *E !! -. % "## "=F ,F+ & *E% &!! ),$ * " ! ?G 444" ?-H /*// I ! !J K L ! I CM N-O#P !! D E #+-$ $ Q R#STUV M. WXY=Z\[C]=^YX(X_Ya` b#c=Y bY=dJY b#e=Y\fb#` dgX_YJh _i`jk )+l$ 'm* &n o 6 #L m$ -:=)+p $ $0 m q p+ G 544l *2 !-$ % r A = " E )" ! " E(&$ ' ( s M*t; $ % $ $ *1 E * = !u I )+#+-$ $ *DDvxwDwy x< ADz + = . A "2+$ p +m q!+ & : m#+-$ q #p {$ '# 3 K | :C| /# }-| : 3 ~x* -$ | :* *. & m$ x.D(,% +, #:" $ $*E " , ,*), *l$ = D !*EC $ +!D*D+ ($ * $ '# C =*1!-$ BBFE A6 EA LDX $EA Table of screen line/Transient editor BC00 95 E1 STA $E1,X Table of screen line/Transient editor BC02 94 E0 STY $E0,X Table of screen line/Transient editor BC04 4C F3 BA JMP $BAF3 BASIC ROM BC07 A9 11 LDA #$11 BC09 D0 0A BNE $BC15 BASIC ROM BC0B A9 10 LDA #$10 BC0D D0 06 BNE $BC15 BASIC ROM BC0F A9 41 LDA #$41 BC11 D0 02 BNE $BC15 BASIC ROM BC13 A9 40 LDA #$40 BC15 A4 F6 LDY $F6 Vector: keyboard decode table BC17 99 04 D4 STA $D404,Y Voice 1: Control registers BC1A 4C F3 BA JMP $BAF3 BASIC ROM BC1D A9 02 LDA #$02 BC1F D0 02 BNE $BC23 BASIC ROM BC21 A9 06 LDA #$06 BC23 A4 EB LDY $EB Table of screen line/Transient editor BC25 99 F2 00 STA $00F2,Y Label of screen lines BC28 A9 40 LDA #$40 BC2A 85 FE STA $FE Free 0 page for user program BC2C 4C F3 BA JMP $BAF3 BASIC ROM * $ $ !$ '# C C x 32 ===== page 33 ===== BBFE A6 EA LDX $EA Table of screen line/Transient editor BC00 95 E1 STA $E1,X Table of screen line/Transient editor BC02 94 E0 STY $E0,X Table of screen line/Transient editor BC04 4C F3 BA JMP $BAF3 BASIC ROM BC07 LDA #$11 BNE $BC15 LDA #$10 BNE $BC15 LDA #$41 BNE $BC15 LDA #$40 BC15 LDY $F6 BC1A JMP $BAF3 ;Vector: keyboard decode table STA $D404,Y ;Voice 1: Control registers BC1D A9 02 LDA #$02 BC1F D0 02 BNE $BC23 BASIC ROM BC21 A9 06 LDA #$06 BC23 A4 EB LDY $EB Table of screen line/Transient editor BC25 99 F2 00 STA $00F2,Y Label of screen lines BC28 A9 40 LDA #$40 BC2A 85 FE STA $FE Free 0 page for user program BC2C 4C F3 BA JMP $BAF3 BASIC ROM !"# $ ! % & $ ! % ' )(*,+"-. /01 2 1(*134. ) " 0 25(*/3 . 01 2 6 ,0 / # ')! 7 0 )8# ) ) 9 ' :1;5? @ !"6A" ) '0 1 @ 5 B+"CD3 EDF +"CD3G1H 9DBE A9 FE LDA #$FE 9DC0 8D 00 DC STA $DC00 Data port A #1: keyboard, joystick, paddle, optical pencil 9DC3 A9 E1 LDA #$E1 9DC5 8D 14 03 STA $0314 Vector: Hardware Interrupt (IRQ) 9DC8 A9 9D LDA #$9D 9DCA 8D 15 03 STA $0315 Vector: Hardware Interrupt (IRQ) 9DCD A9 20 LDA #$20 9DCF 8D 12 D0 STA $D012 Reading/Writing IRQ balance value 9DD2 A9 01 LDA #$01 9DD4 8D 19 D0 STA $D019 Interrupt indicator register 9DD7 8D 1A D0 STA $D01A IRQ mask register 9DDA AD 0D DC LDA $DC0D Interrupt control register CIA #1 9DDD 58 CLI 9DDE 4C 12 9E JMP $9E12 Normal space for BASIC programs/ROM cartridge I 870 / ! 1 @< =">JBGDK/L"3@ < =">J # !! )& @M< * BN+,6,< 7$ / ) @! /& @ ! & *,< @M< *< =>O 1$):1;5<5 6 P 8 J&% %8# % @ Q Q # % %%0 %< ="> . "6 !*,< J5M< *,2#&" 0 @ 8# ) " # 6< 0 " ) # @ < =">J )$@ @/ ) & 0 / 6 33 ===== page 34 ===== !"# $ % &# & ' ( ( ) ( *) + )" ,*) + ( ( - ) * ( . & )( ( "/ 10( 2 3 4$+56( 7/*( (8 " ) "#25 *9 * *6:25 3; ) :( *9 '? @A & A' *:( 1 6 6 "-( ( B &6 "6 :( 5 ( *A B 3C( < :1 7/ "D0 *# /7/3 3 3 ; 1!"#0( / 1E&*6( 7E / *E 5( &9 ( *9 & 91 1#FG4$HC A 5A 6 ) & A 7 / ( 2B *#: B +&6 B"#&6 "#"# 2.( 960 -"#"# 2B* 3#C /A# 9 7* B 5"# + *5:2' 90( 2 E& ' E" ' E E:2( 7 &9 * # *FG !!I G@!!3 4$< < * ""#"# 2)( * <&* "#&# "J : "# :2#** &)3 :2 # 1( 7/ K track9: .byte $38, $0F .byte $20, $07, $00 .byte $58, $10 .byte $28, $00, $87 .byte $30, $28 .byte $78, $02 BD60 .byte $00 .byte $08, $3C, $32 .byte $98 .byte $68 .byte $90 .byte $70, rBD60 ; set volume to 15 ; set ADSL ; set filter mode ; set filter frequency ; set resonance ; set number of repeat (A) ; set control 11 (triangle) ; set frequency ; set note length duration to 6 ; set control to 10 (triangle no A) ; set note length duration to 2 ; goto repeat (A) L#MN?'@ A B,; ? += % ' . &1%# ! 15% %2 & *,! -#= -4 %7@ 5&! +8= = *, ##% *,! - .= $# + # $ # 0%! $8%(%*! A ; Dig Dug game ; copyright 1982 Namco, 1983 Atari, 1984 Datasoft ; The music in the game are changed dinamically ; during the games .ifdef sid .byte "PSID" .word $0200 ; version 2 .word $7C00 ; data offset .word $0000 ; load address in cbm format .byte >initmusic .byte play .byte ",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .byte "1984 Datasoft",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .word $0000 .word $0000 .word $0000 Conditional code for the sid file header .endif .byte $01,$08 .byte $0b,$08,$e8,$03,$9e,"2061",0,0,0 .org 2061 jsr initmusic sei lda #interr sta $0315 ldx #$00 inx stx $DC0E ; Control register A of CIA #1 stx $D01A ; IRQ mask register cli aaa: jmp aaa interr =* .ifndef sid lda #$01 sta $D019 ; Interrupt indicator register lda #$82 sta $D012 ; Reading/Writing IRQ balance value lda #$1B sta $D011 ; VIC control register lda #$01 sta $D020 ; Border color .endif jsr play .ifndef sid .endif dec $D020 ; Border color jmp $ea31 ;==================================== 37 ===== page 38 ===== ;init music initmusic: .ifndef sid lda #$06 .endif cmp #$00 beq t1 cmp #$01 beq t2 cmp #$02 beq t3 cmp #$03 beq t4 cmp #$04 beq t5 cmp #$05 beq t6 cmp #$06 beq t7 lda #$0a jsr setTrack lda #$0c jsr setTrack lda #$0d jsr setTrack rts t1: lda #$00 jsr setTrack lda #$01 jsr setTrack lda #$02 jsr setTrack rts t2: lda #$0b jsr setTrack lda #$0c jsr setTrack lda #$03 jsr setTrack rts t3: lda #$0b jsr setTrack lda #$0c jsr setTrack lda #$04 jsr setTrack rts t4: lda #$0b jsr setTrack lda #$0c jsr setTrack lda #$05 jsr setTrack rts t5: lda #$0b jsr setTrack lda #$0c jsr setTrack lda #$06 Select the subtune to play according with the passed A register Init the tracks for first tune to play 38 ===== page 39 ===== jsr setTrack rts t6: lda #$0b jsr setTrack lda #$0c jsr setTrack lda #$07 jsr setTrack rts t7: lda #$08 jsr setTrack lda #$09 jsr setTrack lda #$0d jsr setTrack rts ;================================= ; set the tracks and voice for it ;================================= setTrack: sta $EB asl a sta $EA tya pha txa pha ldy $EB lda voices,y ; read voice number sta $EB ; voice number asl a tax ldy $EA sta $EA lda tracks,y ; read instructions track sta $E0,x sta $EC,x lda tracks+1,y sta $E1,x sta $ED,x ldx #$02 loopST: lda $F2,x clc adc $F5 sta $F2,x dex bpl loopST ldx $EB lda #$00 sta $F2,x lda #$01 sta $F5 pla tax pla tay rts voices: .byte $00, $01, $02, $02 .byte $02, $02, $02, $02 .byte $00, $01, $00, $00 .byte $01, $02 tracks: .byte track1 .byte track2 .byte track3 .byte track4 .byte track5 .byte track6 .byte track7 39 ===== page 40 ===== .byte track8 .byte track9 .byte track10 .byte track11 .byte track12 .byte track12 .byte track12 play: dec $F5 beq locA rts locA: lda $D0 beq locB rts locB: lda #$01 sta $D0 jsr locC lda #$00 sta $D0 rts locC: cli lda $DC0D ; Interrupt control register CIA #1 ldy #$02 ; last voice ldx #$04 nextVoice: lda $E1,x ; is active? beq noActive lda $00F2,y ; note length duration bne noActive lda voiceIndex,y sta $F6 ; voice index jsr playNext noActive: dex dex dey ; previous voice bpl nextVoice jmp jmpAdjustDuration voiceIndex: .byte $00, $07, $0E ; index of the 3 voices ;================================== ; play next note in track ;================================== playNext: txa pha tya pha asl a stx $EA sty $EB nextInstr: ldx $EA ldy $EB lda ($E0,x) sta $FE ; read actual track instruction ; store readed value cmp #$B1 bcs skipExecute and #$07 bne skipExecute lda $FE ; read stored track instruction cmp #$B0 ; end? bne executeInstr skipExecute: lda #$00 sta $E1,x ; no active lda #$7F sta $00F2,y ; note length duration jmp exitPlay executeInstr: jsr incForNext ; increment pointer for next reading 40 ===== page 41 ===== lda $FE and #$F8 lsr a lsr a tay lda instTable,y sta $E6 lda instTable+1,y sta $E7 jmp ($00E6) finishInstr: lda $FE cmp #$40 bne nextInstr exitPlay: pla tay pla tax rts jmpAdjustDuration: jmp adjustDuration ;================================== ; increment pointer for next reading ;================================== incForNext: lda $E0,x clc adc #$01 sta $E0,x lda $E1,x adc #$00 sta $E1,x rts ; read stored track instruction ; read this instruction from table ; execute the readed instruction ; read stored track instruction ; is set note length duration ; exit only when note is set ;================================== ; set frequency control ;================================== setFrequency: jsr readNext ; read next song instruction/data ldy $F6 ; voice index sta $D400,y ; Voice 1: Frequency control (lo byte) jsr readNext ; read next song instruction/data sta $D401,y ; Voice 1: Frequency control (hi byte) ldx $EB ; voice number sta $D8,x jmp finishInstr ;================================== ; set voice control ;================================== setControl: jsr readNext ; read next song instruction/data ldy $F6 ; voice index sta $D404,y ; Voice 1: Control registers jmp finishInstr ;================================== ; set wave form pulsation amplitude ;================================== setAmplitude: jsr readNext ; read next song instruction/data ldy $F6 ; voice index sta $D402,y ; Voice 1: Wave form pulsation amplitude (lo byte) jsr readNext ; read next song instruction/data sta $D403,y ; Voice 1: Wave form pulsation amplitude (hi byte) jmp finishInstr ;================================== ; set the Attack/Decay Sustain/Release ;================================== setADSR: jsr readNext ; read next song instruction/data ldy $F6 ; voice index sta $D405,y ; Generator 1: Attack/Decay jsr readNext ; read next song instruction/data 41 ===== page 42 ===== sta $D406,y jmp finishInstr ; Generator 1: Sustain/Release ;================================== ; set filter frequency ;================================== setFilterFreq: ; set filter frequency jsr readNext ; read next song instruction/data sta $D415 ; Filter cut frequency: lo byte (bit 2-0) jsr readNext ; read next song instruction/data sta $FF ; Transient data area of BASIC sta $D416 ; Filter cut frequency: hi byte jmp finishInstr ;================================== ; set filter resonance ;================================== setResonance: jsr readNext and #$F0 sta $FC clc adc $FA sta $D417 jmp finishInstr ; read next song instruction/data ; RS-232 output buffer pointer ; Filter resonance control/voice input control ;================================== ; set volume and filter mode ;================================== setVolume: jsr readNext and #$0F sta $FD clc adc $FB sta $D418 jmp finishInstr ; read next song instruction/data ; Free 0 page for user program ; Select volume and filter mode ; rts ;================================== ; set note lenght duration ;================================== setDuration: jsr readNext ; read next song instruction/data ldy $EB ; voice number sta $00F2,y ; note length duration jmp finishInstr ;================================== ; change track position ;================================== changePosition: ldx $EA lda $EC,x sta $E0,x lda $ED,x sta $E1,x jmp finishInstr ; read position to go ; set new position ;================================== ; set filter resonance (A) ;================================== setResonanceA: ldy $EB ; voice number lda #$01 loopA: cpy #$00 beq endA asl a dey jmp loopA endA: ora $FA sta $FA lda $FC clc adc $FA 42 ===== page 43 ===== sta $D417 jmp finishInstr ; Filter resonance control/voice input control ;================================== ; set filter mode ;================================== setFilterMode: jsr readNext and #$F0 sta $FB clc adc $FD sta $D418 jmp finishInstr ; read next song instruction/data ; Select volume and filter mode ;================================== ; set filter resonance B ;================================== setResonanceB: ldy $EB ; voice number lda #$FE loopB: cpy #$00 sec beq endB rol a dey jmp loopB endB: and $FA sta $FA clc adc $FC sta $D417 jmp finishInstr ; Filter resonance control/voice input control ;================================== ; set number of repeat (A) ;================================== setRepeatA: jsr readNext ; read next song instruction/data ldy $EB ; voice number clc adc #$01 sta $00D2,y ; number of repeat factor jmp finishInstr ; rts ;================================== ; goto the track to repeat (A) ;================================== gotoRepeatA: jsr readNext ; read next song instruction/data tay jsr readNext ; read next song instruction/data ldx $EB ; voice number dec $D2,x ; dec repeat factor beq skipRepeatA ldx $EA sta $E1,x ; change pointer sty $E0,x ; to the next instruction skipRepeatA: jmp finishInstr ;================================== ; set various controls ;================================== setControl11: lda #$11 bne locSetControl ; set control voice to triangle setControl10: lda #$10 bne locSetControl ; set control voice to triangle (no A) setControl41: lda #$41 ; set control voice to rectangle 43 ===== page 44 ===== bne locSetControl setControl40: lda #$40 ; set control voice to rectangle (no A) locSetControl: ldy $F6 ; voice index sta $D404,y ; Voice 1: Control registers jmp finishInstr ;================================== ; set various duration ;================================== setDuration2: lda #$02 bne locSetDuration ; set note length duration to 2 setDuration6: lda #$06 ; set note length duration to 6 locSetDuration: ldy $EB ; voice number sta $00F2,y ; set note length duration lda #$40 sta $FE jmp finishInstr ;================================== ; set number of repeat (B) ;================================== setRepeatB: jsr readNext ; read next song instruction/data ldy $EB ; voice number clc adc #$01 sta $00D5,y ; number of repeat factor jmp finishInstr ;================================== ; goto the track to repeat (B) ;================================== gotoRepeatB: jsr readNext ; read next song instruction/data tay jsr readNext ; read next song instruction/data ldx $EB ; voice number dec $D5,x ; dec repeat factor beq skipRepeatB ldx $EA sta $E1,x ; change pointer sty $E0,x ; to the next instruction skipRepeatB: jmp finishInstr ;================================== ; read next song instruction/data ;================================== readNext: ldx $EA lda ($E0,x) pha jsr incForNext pla rts ; read the value ; increment pointer for next reading ;================================== ; adjust duration of note ;================================== adjustDuration: lda $F2 cmp $F3 bcc loc1 lda $F3 cmp $F4 bcc loc2 lda $F4 jmp loc2 ; note length duration voice 1 ; note length duration voice 2 ; note length duration voice 2 ; note length duration voice 3 ; note length duration voice 3 loc1: 44 ===== page 45 ===== lda $F2 cmp $F4 bcc loc2 lda $F4 loc2: sta $F5 lda $E1 beq loc3 lda $F2 sec sbc $F5 sta $F2 loc3: lda $E3 beq loc4 lda $F3 sec sbc $F5 sta $F3 loc4: lda $E5 beq loc5 lda $F4 sec sbc $F5 sta $F4 loc5: rts instTable: .byte setControl11 .byte setFrequency .byte setControl .byte setAmplitude .byte setADSR .byte setFilterFreq .byte setResonance .byte setVolume .byte setDuration .byte changePosition .byte setResonanceA .byte setFilterMode .byte setResonanceB .byte setControl10 .byte gotoRepeatA .byte setRepeatA .byte setControl41 .byte setControl40 .byte setDuration2 .byte setDuration6 .byte setRepeatB .byte gotoRepeatB track1: .byte $38, $0F .byte $20, $0F, $00 .byte $00 ; note length duration voice 1 ; note length duration voice 3 ; note length duration voice 3 ; seg. of track 1 ; jump if not active ; note length duration voice 1 ; note length duration voice 1 ; seg. of track 2 ; jump if not active ; note length duration voice 2 ; note length duration voice 2 ; seg. of track 3 ; jump if not active ; note length duration voice 3 ; note length duration voice 3 ; set volume to 15 ; set ADSL ; set control to 11 (triangle) 45 ===== page 46 ===== .byte $08, $0F, $43 .byte $40, $04 .byte $68 .byte $00 .byte $08, $83, $59 .byte $40, $04 .byte $68 .byte $00 .byte $08, $C7, $70 .byte $40, $04 .byte $68 .byte $00 .byte $08, $0F, $43 .byte $40, $04 .byte $68 .byte $00 .byte $08, $45, $4B .byte $40, $04 .byte $68 .byte $B0 track2: .byte $20, $0F, $00 .byte $00 .byte $08, $C1, $2C .byte $40, $04 .byte $68 .byte $00 .byte $08, $D1, $12 .byte $40, $04 .byte $68 .byte $00 .byte $08, $A5, $1F .byte $40, $04 .byte $68 .byte $00 .byte $08, $1E, $19 .byte $40, $04 .byte $68 .byte $00 .byte $08, $A2, $25 .byte $40, $04 .byte $68 .byte $B0 track3: .byte $38, $0F .byte $20, $0C, $00 .byte $18, $00, $09 .byte $80 .byte $08, $0F, $43 .byte $98 .byte $88 .byte $90 .byte $80 .byte $08, $45, $4B .byte $98 .byte $88 .byte $90 .byte $80 .byte $08, $7D, $54 .byte $98 .byte $88 .byte $90 .byte $80 .byte $08, $63, $38 .byte $98 .byte $88 .byte $90 .byte $80 .byte $08, $3C, $32 .byte $98 .byte $88 .byte $98 .byte $80 .byte $08, $C7, $70 .byte $40, $0C .byte $88 ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set control to 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set control to 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set control to 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set control to 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set ADSL ; set control 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set control 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set control 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set control 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set control 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set volume to 15 ; set ADSL ; set amplitude ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 6 ; set control to 41 (rectangle) ; set frequency ; set note length duration ; set control to 40 (rectangle no A) 46 ===== page 47 ===== .byte $98 .byte $80 .byte $08, $79, $64 .byte $40, $12 .byte $88 .byte $90 .byte $B0 track9: .byte $38, $0F .byte $20, $07, $00 .byte $58, $10 .byte $28, $00, $87 .byte $30, $28 .byte $78, $02 rBD60: .byte $00 .byte $08, $3C, $32 .byte $98 .byte $68 .byte $90 .byte $70, rBD60 .byte $00 .byte $40, $0E .byte $78, $05 rBD6F: .byte $68 .byte $90 .byte $00 .byte $98 .byte $70, rBD6F .byte $68 .byte $90 .byte $00 .byte $40, $0E .byte $78, $02 rBD7D: .byte $68 .byte $90 .byte $00 .byte $98 .byte $70, rBD7D .byte $68 .byte $90 .byte $78, $01 rBD88: .byte $00 .byte $08, $3E, $2A .byte $98 .byte $68 .byte $90 .byte $00 .byte $08, $C1, $2C .byte $40, $0E .byte $68 .byte $90 .byte $70, rBD88 .byte $00 .byte $08, $3E, $2A .byte $98 .byte $68 .byte $90 .byte $00 .byte $08, $C1, $2C .byte $40, $2E .byte $68 .byte $90 .byte $00 .byte $08, $A2, $25 .byte $40, $16 .byte $68 .byte $90 .byte $78, $02 rBDB3: ; set note length duration to 6 ; set control to 41 (rectangle) ; set frequency ; set note length duration ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set volume to 15 ; set ADSR ; set filter mode ; set filter frequency ; set resonance ; set number of repeat (A) ; set control 11 (triangle) ; set frequency ; set note length duration to 6 ; set control to 10 (triangle no A) ; set note length duration to 2 ; goto repeat (A) ; set control 11 (triangle) ; set note length duration ; set number of repeat (A) ; set control to 10 (triangle no A) ; set note length duration to 2 ; set control 11 (triangle) ; set note length duration to 6 ; goto repeat (A) ; set control to 10 (triangle no A) ; set note length duration to 2 ; set control 11 (triangle) ; set note length duration ; set number of repeat (A) ; set control to 10 (triangle no A) ; set note length duration to 2 ; set control 11 (triangle) ; set note length duration to 6 ; goto repeat (A) ; set control to 10 (triangle no A) ; set note length duration to 2 ; set number of repeat (A) ; set control 11 (triangle) ; set frequency ; set note length duration to 6 ; set control to 10 (triangle no A) ; set note length duration to 2 ; set control 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set note length duration to 2 ; goto repeat (A) ; set control 11 (triangle) ; set frequency ; set note length duration to 6 ; set control to 10 (triangle no A) ; set note length duration to 2 ; set control 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set note length duration to 2 ; set control 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set note length duration to 2 ; set number of repeat (A) 47 ===== page 48 ===== .byte $00 .byte $08, $3E, $2A .byte $98 .byte $68 .byte $90 .byte $70, rBDB3 .byte $00 .byte $40, $0E .byte $78, $05 rBDC2: .byte $68 .byte $90 .byte $00 .byte $98 .byte $70, rBDC2 .byte $68 .byte $90 .byte $00 .byte $40, $0E .byte $78, $02 rBDD0: .byte $68 .byte $90 .byte $00 .byte $98 .byte $70, rBDD0 .byte $68 .byte $90 .byte $78, $01 rBDDB: .byte $00 .byte $08, $A2, $25 .byte $98 .byte $68 .byte $90 .byte $00 .byte $08, $3E, $2A .byte $40, $0E .byte $68 .byte $90 .byte $70, rBDDB ; set control 11 (triangle) ; set frequency ; set note length duration to 6 ; set control to 10 (triangle no A) ; set note length duration to 2 ; goto repeat (A) ; set control 11 (triangle) ; set note length duration ; set number of repeat (A) ; set control to 10 (triangle no A) ; set note length duration to 2 ; set control 11 (triangle) ; set note length duration to 6 ; goto repeat (A) ; set control to 10 (triangle no A) ; set note length duration to 2 ; set control 11 (triangle) ; set note length duration ; set number of repeat (A) ; set control to 10 (triangle no A) ; set note length duration to 2 ; set control 11 (triangle) ; set note length duration to 6 ; goto repeat (A) ; set control to 10 (triangle no A) ; set note length duration to 2 ; set number of repeat (A) ; set control 11 (triangle) ; set frequency ; set note length duration to 6 ; set control to 10 (triangle no A) ; set note length duration to 2 ; set control 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set note length duration to 2 ; goto repeat (A) .byte $00 .byte $08, $A2, $25 .byte $98 .byte $68 .byte $90 .byte $00 .byte $08, $3C, $32 .byte $40, $48 .byte $68 .byte $90 .byte $B0 ; set control 11 (triangle) ; set frequency ; set note length duration to 6 ; set control to 10 (triangle no A) ; set note length duration to 2 ; set control 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set note length duration to 2 .byte $48 ; change position track10: .byte $20, $37, $32 .byte $50 .byte $18, $00, $08 .byte $78, $01 rBE07: .byte $A0, $01 rBE09: .byte $80 .byte $08, $C3, $10 .byte $98 .byte $88 .byte $90 .byte $80 .byte $08, $87, $21 .byte $98 .byte $88 .byte $90 .byte $A8, rBE09 ; set ADSL ; set resonance A ; set amplitude ; set number of repeat (A) ; set number of repeat (B) ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; goto repeat (B) 48 ===== page 49 ===== .byte $A0, $01 rBE1C: .byte $80 .byte $08, $D2, $0F .byte $98 .byte $88 .byte $90 .byte $80 .byte $08, $A5, $1F .byte $98 .byte $88 .byte $90 .byte $A8, rBE1C .byte $A0, $01 rBE2F: .byte $80 .byte $08, $EF, $0E .byte $98 .byte $88 .byte $90 .byte $80 .byte $08, $DF, $1D .byte $98 .byte $88 .byte $90 .byte $A8, rBE2F .byte $A0, $01 rBE42: .byte $80 .byte $08, $18, $0E .byte $98 .byte $88 .byte $90 .byte $80 .byte $08, $31, $1C .byte $98 .byte $88 .byte $90 .byte $A8, rBE42 .byte $A0, $03 rBE55: .byte $80 .byte $08, $4E, $0D .byte $98 .byte $88 .byte $90 .byte $80 .byte $08, $9C, $1A .byte $98 .byte $88 .byte $90 .byte $A8, rBE55 .byte $A0, $01 rBE68: .byte $80 .byte $08, $8F, $0C .byte $98 .byte $88 .byte $90 .byte $80 .byte $08, $1E, $19 .byte $98 .byte $88 .byte $90 .byte $A8, rBE68 .byte $80 .byte $08, $18, $0E .byte $98 .byte $88 .byte $90 .byte $80 .byte $08, $31, $1C .byte $98 ; set number of repeat (B) ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; goto repeat (B) ; set number of repeat (B) ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; goto repeat (B) ; set number of repeat (B) ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; goto repeat (B) ; set number of repeat (B) ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; goto repeat (B) ; set number of repeat (B) ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; goto repeat (B) ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 49 ===== page 50 ===== .byte $88 .byte $90 .byte $80 .byte $08, $D2, $0F .byte $98 .byte $88 .byte $90 .byte $80 .byte $08, $A5, $1F .byte $98 .byte $88 .byte $90 .byte $70, rBE07 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set control to 41 (rectangle) ; set frequency ; set note length duration to 6 ; set control to 40 (rectangle no A) ; set note length duration to 2 ; goto repeat (A) .byte $90 .byte $B0 ; set note length duration to 2 .byte $48 ; change position track4: .byte $38, $0F .byte $20, $00, $F0 .byte $80 .byte $18, $00, $08 .byte $08, $F7, $09 .byte $40, $01 .byte $08, $8F, $0A .byte $40, $01 .byte $08, $68, $09 .byte $40, $01 .byte $08, $8F, $0A .byte $40, $01 .byte $08, $8F, $0C .byte $40, $01 .byte $08, $4E, $0D .byte $40, $01 .byte $08, $18, $0E .byte $40, $01 .byte $08, $C3, $10 .byte $40, $01 .byte $08, $EF, $13 .byte $40, $01 .byte $08, $60, $16 .byte $40, $01 .byte $08, $31, $1C .byte $40, $01 .byte $08, $DF, $1D .byte $40, $01 .byte $08, $86, $23 .byte $40, $01 .byte $08, $16, $22 .byte $40, $01 .byte $08, $87, $21 .byte $40, $01 .byte $08, $02, $24 .byte $40, $01 .byte $08, $86, $23 .byte $40, $01 .byte $08, $3B, $25 .byte $40, $01 .byte $08, $02, $26 .byte $40, $01 .byte $08, $86, $23 .byte $40, $01 .byte $08, $20, $24 .byte $40, $01 .byte $88 .byte $B0 track5: .byte $38, $0F .byte $20, $0F, $00 .byte $80 .byte $18, $00, $08 .byte $78, $01 rBF1A: .byte $08, $8F, $0C .byte $40, $03 .byte $08, $8F, $0B ; set volume to 15 ; set ADSL ; set control to 41 (rectangle) ; set amplitude ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set frequency ; set note length duration ; set control to 40 (rectangle no A) ; set volumne to 15 ; set ADSL ; set control to 41 (rectangle) ; set amplitude ; set number of repeat (A) ; set frequency ; set note length duration ; set frequency 50 ===== page 51 ===== .byte $40, $01 .byte $70, rBF1A .byte $88 .byte $90 .byte $80 .byte $18, $00, $08 .byte $08, $5F, $10 .byte $40, $08 .byte $88 .byte $B0 track6: .byte $38, $0F .byte $20, $4F, $F4 .byte $18, $00, $08 .byte $80 .byte $08, $68, $03 .byte $40, $04 .byte $80 .byte $08, $89, $03 .byte $40, $04 .byte $80 .byte $08, $AE, $03 .byte $40, $04 .byte $80 .byte $08, $C8, $03 .byte $40, $04 .byte $80 .byte $08, $AE, $03 .byte $40, $03 .byte $80 .byte $08, $93, $03 .byte $40, $03 .byte $88 .byte $B0 track7: .byte $38, $0F .byte $20, $2C, $C2 .byte $78, $02 rBF69: .byte $00 .byte $08, $D6, $5E .byte $40, $03 .byte $00 .byte $08, $C7, $70 .byte $40, $03 .byte $00 .byte $08, $97, $7E .byte $90 .byte $70, rBF69 .byte $68 .byte $B0 track8: .byte $38, $0F .byte $20, $0C, $00 .byte $00 .byte $08, $1E, $86 .byte $90 .byte $68 .byte $00 .byte $08, $8B, $96 .byte $90 .byte $68 .byte $00 .byte $08, $2B, $9F .byte $90 .byte $68 .byte $00 .byte $08, $FA, $A8 .byte $90 .byte $68 .byte $00 .byte $08, $30, $AB .byte $90 ; set note length duration ; goto repeat (A) ; set control to 40 (rectangle no A) ; set note length duration to 2 ; set control to 41 (rectangle) ; set frequency ; set note length duration ; set control to 40 (rectangle no A) ; set volume to 15 ; set ADSL ; set amplitude ; set control to 41 (rectangle) ; set frequency ; set note length duration ; set control to 41 (rectangle) ; set frequency ; set note length duration ; set control to 41 (rectangle) ; set frequency ; set note length duration ; set control to 41 (rectangle) ; set frequency ; set note length duration ; set control to 41 (rectangle) ; set frequency ; set note length duration ; set control to 41 (rectangle) ; set frequency ; set note length duration ; set control to 40 (rectangle no A) ; set volume to 15 ; set ADSL ; set number of repeat (A) ; set control 11 (triangle) ; set frequency ; set note length duration ; set control 11 (triangle) ; set frequency ; set note length duration ; set control 11 (triangle) ; set frequency ; set note length duration to 2 ; goto repeat (A) ; set control to 10 (triangle no A) ; set volume to 15 ; set ADSL ; set control 11 (triangle) ; set frequency ; set note length duration to 2 ; set control to 10 (triangle no A) ; set control 11 (triangle) ; set frequency ; set note length duration to 2 ; set control to 10 (triangle no A) ; set control 11 (triangle) ; set frequency ; set note length duration to 2 ; set control to 10 (triangle no A) ; set control 11 (triangle) ; set frequency ; set note length duration to 2 ; set control to 10 (triangle no A) ; set control 11 (triangle) ; set frequency ; set note length duration to 2 51 ===== page 52 ===== ; set control to 10 (triangle no A) ; set control 11 (triangle) ; set frequency ; set note length duration to 2 ; set control 11 (triangle) ; set frequency ; set note length duration ; set control 11 (triangle) ; set frequency ; set note length duration ; set ADSL ; set control 11 (triangle) ; set frequency ; set note length duration ; set control to 10 (triangle no A) ; set control ; set frequency .byte $68 .byte $00 .byte $08, $06, $B3 .byte $90 .byte $00 .byte $08, $FF, $5E .byte $40, $03 .byte $00 .byte $08, $8B, $5A .byte $40, $03 .byte $20, $0C, $74 .byte $00 .byte $08, $64, $56 .byte $40, $03 .byte $68 .byte $B0 track12: .byte $10, $00 .byte $08, $00, $00 .byte $B0 track11: .byte $38, $0F .byte $20, $07, $60 .byte $00 .byte $08, $79, $64 .byte $90 .byte $78, $01 rBFD0: .byte $00 .byte $08, $C7, $6F .byte $40, $03 .byte $00 .byte $08, $C7, $69 .byte $90 .byte $70, rBFD0 .byte $00 .byte $08, $79, $64 .byte $40, $03 .byte $78, $02 rBFE6: .byte $00 .byte $08, $0F, $43 .byte $90 .byte $00 .byte $08, $4B, $3F .byte $40, $03 .byte $70, rBFE6 ; set volume to 15 ; set ADSL ; set control 11 (triangle) ; set frequency ; set note length duration to 2 ; set number of repeat (A) ; set control 11 (triangle) ; set frequency ; set note length duration ; set control 11 (triangle) ; set frequency ; set note length duration to 2 ; goto repeat (A) ; set control 11 (triangle) ; set frequency ; set note length duration ; set number of repeat (A) ; set control 11 (triangle) ; set frequency ; set note length duration to 2 ; set control 11 (triangle) ; set frequency ; set note length duration ; goto repeat (A) .byte $68 ; set control to 10 (triangle no A) .byte $48 ; change position .byte $B0 !""#$&%' ( ) "'+*-," . !# (/' "&021 & 3 "4(/ &0 "5 #")-"&6 " ' !"+1 #!87 ' 5' !" '9 :& # 3 "4' ' ; ; ; /5 "5 +>/?/ ' @+' A5 -) "'9/4' 5 3 ) "'- ' 52 ===== page 53 ===== 53