home *** CD-ROM | disk | FTP | other *** search
/ Dave Lowe: Amiga California Games + Samples / Lowe_AmigaCaliforniaGames+Samples.adf / chipfin.s < prev    next >
Encoding:
Text File  |  1992-04-01  |  33.3 KB  |  1,980 lines

  1.  
  2.     ;    DRIVER AND MUSIC REMAIN COPYRIGHT D.LOWE 
  3.  
  4.     ;         F15II INGAME TUNES and FX
  5.  
  6.  
  7.     ; GLYNN,
  8.     ; I've simply given you a selection of fx to use as you choose
  9.     ; 
  10.  
  11. ;dff0d0+6
  12.     ;        DAVE LOWE.....0723  870648
  13.  
  14.  
  15. ;        **************************
  16.  
  17.     section issA,code_c    ;must be in low memory for dma access
  18.                 ;DEVPAC PSEUDO OP ..CAN BE DELETED
  19.  
  20.  
  21. ;*****************************************
  22.  
  23.         ;  ALL EQUs
  24.  
  25. a00  equ  508*2
  26. bb00  equ  480*2
  27. b00  equ  453*2
  28.  
  29. c01  equ  428*2
  30. db01  equ  404*2
  31. d01 equ  381*2
  32. eb01  equ  360*2
  33. e01  equ  339*2
  34. f01  equ  320*2
  35. gb01  equ  302*2
  36. g01  equ  285*2
  37. ab01 equ 269*2
  38. a01  equ  508
  39. bb01  equ  480
  40. b01  equ  453
  41.  
  42. c02  equ  428
  43. db02  equ  404
  44. d02  equ  381
  45. eb02  equ  360
  46. e02  equ  339
  47. f02  equ  320
  48. gb02  equ  302
  49. g02  equ  285
  50. ab02 equ 269
  51. a02  equ  254
  52. bb02  equ  240
  53. b02  equ  226
  54.  
  55. c03  equ  214
  56. db03  equ  202
  57. d03  equ  190
  58. eb03  equ  180
  59. e03  equ  170
  60. f03  equ  160
  61. gb03  equ  151
  62. g03  equ  143
  63. ab03 equ 135
  64. a03  equ  127
  65.  
  66. bb03  equ  480*2
  67. b03  equ  453*2
  68.  
  69. c04  equ  428*2
  70. db04  equ  404*2
  71. d04 equ  381*2
  72. eb04  equ  360*2
  73. e04  equ  339*2
  74. f04  equ  320*2
  75. gb04  equ  302*2
  76. g04  equ  285*2
  77. ab04 equ 269*2
  78. a04  equ  508
  79. bb04  equ  480
  80. b04  equ  453
  81.  
  82. c05  equ  428
  83. db05  equ  404
  84. d05  equ  381
  85. eb05  equ  360
  86. e05  equ  339
  87. f05  equ  320
  88. gb05  equ  302
  89. g05  equ  285
  90. ab05 equ 269
  91. a05  equ  254
  92. bb05  equ  240
  93. b05  equ  226
  94.  
  95. c06  equ  214
  96. db06  equ  202
  97. d06  equ  190
  98. eb06  equ  180
  99. e06  equ  170
  100. f06  equ  160
  101. gb06  equ  151
  102. g06  equ  143
  103. ab06 equ 135
  104. a06  equ  127
  105. bb06  equ  480*2
  106. b06  equ  453*2
  107.  
  108. c07  equ  428*2
  109. db07  equ  404*2
  110. d07 equ  381*2
  111. eb07  equ  360*2
  112. e07  equ  339*2
  113. f07  equ  320*2
  114. gb07  equ  302*2
  115. g07  equ  285*2
  116. ab07 equ 269*2
  117. a07  equ  508
  118. bb07  equ  480
  119. b07  equ  453
  120.  
  121. c08  equ  428
  122. db08  equ  404
  123. d08  equ  381
  124. eb08  equ  360
  125. e08  equ  339
  126. f08  equ  320
  127. gb08  equ  302
  128. g08  equ  285
  129. ab08 equ 269
  130. a08  equ  254
  131. bb08  equ  240
  132. b08  equ  226
  133.  
  134.  
  135. v equ 0
  136.  
  137. no_loop equ 0
  138. loop equ 0
  139. chann1reg   equ $dff0a0    
  140. chann2reg   equ $dff0b0
  141. chann3reg   equ $dff0c0
  142. chann4reg   equ $dff0d0
  143. dmacon     equ $dff096
  144. int_bf_int   equ   $dff01e
  145. int_bf_w    equ   $dff09a
  146. vhposr     equ   $dff006
  147. in_line    equ   0
  148. new_snd    equ   4
  149. end_song     equ   1
  150. end_patt    equ   8
  151. new_env    equ   12
  152. pbend     equ   16
  153.  
  154. cr set   24
  155. q set cr/2
  156. sq set q/2
  157.  
  158. hi: equ 223
  159. lo:  equ 446
  160.  
  161. r22    equ 134
  162. r20    equ 179        ;correctum
  163. r19    equ 150
  164. r18    equ 178
  165. r17    equ 200
  166. r16:    equ 227        ;correctum
  167. r15:    equ 249
  168. r13:    equ 305
  169. r12:    equ 333
  170. r11:    equ 361
  171. r10:    equ 389
  172. r9:    equ 419
  173. r8:    equ 446
  174. r7:    equ 446+112
  175. r6:    equ 446+223
  176. r5:    equ 446+223+112
  177. r4:    equ 446*2
  178. r3:    equ 446*3
  179. r2:    equ 446*4
  180. r1:    equ 446*8
  181.  
  182.  
  183. filter: equ $bfe001
  184. filter_on equ 44
  185. filter_off equ 48
  186.  
  187. modon     equ   20
  188. pboff     equ   24
  189. modoff     equ   28
  190. rest     equ 32
  191. end_fxp  equ 36
  192. end_fx3  equ 36
  193. end_fx4  equ 40
  194. acc    equ 52
  195. repeat    equ 56
  196. down      equ   1
  197. up       equ   2
  198.  
  199. ;***************************************************************
  200.  
  201.  
  202.  ;    THIS IS THE CONTROL SECTION FOR TESTING AS A STAND ALONE PRG. 
  203.  
  204.     ;       AND CAN BE DELETED WHEN NOT REQUIRED
  205.  
  206.  
  207.     jsr select_new_song
  208.  
  209. testloop:
  210.     jsr delay    ;wait for scan line  at 50hz on pal
  211.  
  212.     jsr driver
  213.  
  214.         bra testloop
  215.  
  216.  
  217. delay:
  218.     tst.w fxtimer
  219.     bne no_test
  220.     clr.l d0
  221.     move.b $bfe001,d0
  222.     btst #6,d0
  223.     bne no_test1
  224.     move.w #10,fxtimer
  225.     bra testfx4
  226. no_test
  227.     subq #1,fxtimer
  228. no_test1
  229.     clr.l d0
  230.         move.w vhposr,d0
  231.         andi.w #%1111111100000000,d0
  232.         cmpi.w #%1111111100000000,d0
  233.  
  234.     bne no_test1
  235.     rts
  236.  
  237. testfx4:  
  238.  
  239.     ;jsr    kill_chip
  240.     ;move.w #1,int_disable
  241.     clr.l d0
  242.     move.b $bfe001,d0
  243.     btst #6,d0
  244.     beq testfx4
  245.  
  246.     move.l song_buffer,d0
  247.     addq.l #1,d0
  248.     cmp.l    #6,d0
  249.     bne nores
  250.     move.l #1,d0
  251. nores    move.l d0,song_buffer
  252.     jsr    select_new_song
  253.  
  254.  
  255.     ;move.l fx_last,d0
  256.     ;move.l d0,fx_kill
  257.  
  258.     ;jsr kill_loopfx        ;only one fx at a time
  259.  
  260.  
  261. no_k
  262.         move.l fx_no,fx_number
  263.     move.l fx_no,fx_last
  264.     addq.l #1,fx_no
  265.     move.l    max_fx,d0
  266.         cmp.l fx_no,d0
  267.     bne noreset
  268.     move.l #1,fx_no    
  269. noreset: 
  270.     jsr set_up_fx
  271.     bra no_test    
  272.  
  273. fxtc:          dc.w 10
  274. fx_no:         dc.l  1
  275. fx_last        dc.l  0
  276.  
  277.  
  278. ;        END OF CONTROL (DELETABLE) SECTION
  279.  
  280. ;**********************************************************
  281.  
  282. ; --------------------------------------------------------------
  283.  
  284. ;    MAIN VARIABLES TO BE ACCESSED BY PROGRAMMER DURING RUNTIME
  285.  
  286.  
  287. fx_number:     dc.l 0 ;     number of fx required here...see list
  288. fx_kill        dc.l 0 ;     number of fx to kill/only needed for looped fx
  289.  
  290. song_buffer     dc.l 1 ;     number of piece of music required here ie.1 to 5
  291.  
  292. music_disable:  dc.w 0 ;     1 = disable music
  293. fx_disable:     dc.w 1 ;     1 = disable fx  (currently disabled)
  294.  
  295. ;    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  296.  
  297. ;  THESE VARIABLES ARE USED INTERNALLY BY THE DRIVER
  298. fxr1         dc.l 0  
  299. fxr2         dc.l 0  
  300. fxr3         dc.l 0  
  301. fxr4         dc.l 0  
  302. fxc1        dc.l 0
  303. fxc2          dc.l 0
  304. fxc3        dc.l 0
  305. fxc4          dc.l 0
  306. fx1_flag    dc.w 0
  307. fx2_flag    dc.w 0
  308. fx3_flag    dc.w 0
  309. fx4_flag    dc.w 0
  310. fxtimer        dc.w 0
  311. gen        dc.w 0
  312. int_disable    dc.w 0
  313. altpf         dc.w 0
  314. kill_flag    dc.w 0
  315. ;  *******************************************************
  316.  
  317. ;  CALL THIS SUBROUTINE TO SET UP THE REQIURED FX
  318. ;  on entry it requires the fx number to be in "fx_number"(see above)
  319. ;  
  320.  
  321. set_up_fx
  322.     movem.l d5/a2,-(a7)    ;save used registers
  323.     move.l #1,d0
  324.     cmp fx_number,d0
  325.     bne check3        ;engine to 4
  326.  
  327.     tst.l fxc4
  328.     bne check3
  329. use4:    
  330.     move.w #%0000000000001000,d5
  331.     lea chann4reg,a2
  332.     jsr end_fx4p
  333.     move.l fx_number,fxr4
  334.     move.l fx_number,fxc4
  335.     move.l #0,fx_number
  336.     bra no_fx
  337. check3:    tst.l fxc3
  338.     bne check2
  339. use3:
  340.     move.w #%0000000000000100,d5
  341.     lea chann3reg,a2
  342.     jsr end_fx3p
  343.     move.l fx_number,fxr3
  344.     move.l fx_number,fxc3
  345.     move.l #0,fx_number
  346.     bra no_fx
  347. check2:    tst.l fxc2
  348.     bne check1
  349. use2:
  350.     move.w #%0000000000000010,d5
  351.     lea chann2reg,a2
  352.     jsr end_fx2p
  353.     move.l fx_number,fxr2
  354.     move.l fx_number,fxc2
  355.     move.l #0,fx_number
  356.     bra no_fx
  357. check1:    tst.l fxc1
  358.     bne use3
  359. use1:
  360.     move.w #%0000000000000001,d5
  361.     lea chann1reg,a2
  362.     jsr end_fx1p
  363.     move.l fx_number,fxr1
  364.     move.l fx_number,fxc1
  365.     move.l #0,fx_number
  366. no_fx
  367.     movem.l (a7)+,d5/a2    ;restore registers
  368.     rts
  369.  
  370. ;*************************************************
  371. ;          CALL HERE TO KILL ANY LOOPED FX...
  372. ;       after putting the number of the fx you want to kill
  373. ;            into fx_kill
  374.  
  375. kill_loopfx
  376.  
  377.     movem.l d5/a2,-(a7)    ;save used registers
  378.     move.l fx_kill,d5
  379.     cmp.l fxc1,d5
  380.     bne k2
  381.     move.w #%0000000000000001,d5
  382.     lea chann1reg,a2
  383.     jsr end_fx1p
  384.     bra error
  385. k2    cmp.l fxc2,d5
  386.     bne k3
  387.     move.w #%0000000000000010,d5
  388.     lea chann2reg,a2
  389.     jsr end_fx2p
  390.     bra error
  391. k3    cmp.l fxc3,d5
  392.     bne k4
  393.     move.w #%0000000000000100,d5
  394.     lea chann3reg,a2
  395.     jsr end_fx3p
  396.     bra error
  397. k4    cmp.l fxc4,d5
  398.     bne error
  399.     move.w #%0000000000001000,d5
  400.     lea chann2reg,a2
  401.     jsr end_fx4p
  402. error
  403.     clr.l fx_kill
  404.     movem.l (a7)+,d5/a2    ;restore registers
  405.     rts
  406. ;*************************************************
  407.  
  408.     ; CALL HERE TO KILL ANY SOUND for whatever reason
  409.  
  410. kill_chip:
  411.     move.w #%0000000000001111,dmacon
  412.     move.l rest_data,chann1reg
  413.     move.l rest_data,chann2reg
  414.     move.l rest_data,chann3reg
  415.     move.l rest_data,chann4reg
  416.     move.w #16,chann1reg+4    
  417.     move.w #16,chann2reg+4    
  418.     move.w #16,chann3reg+4    
  419.     move.w #16,chann4reg+4    
  420.     move.w #0,chann1reg+8
  421.     move.w #0,chann2reg+8
  422.     move.w #0,chann3reg+8
  423.     move.w #0,chann4reg+8
  424.     move.w #1,chann1reg+6
  425.     move.w #1,chann2reg+6
  426.     move.w #1,chann3reg+6
  427.     move.w #1,chann4reg+6
  428.     move.l #0,fxr1
  429.     move.l #0,fxr2
  430.     move.l #0,fxr3
  431.     move.l #0,fxr4
  432.     move.w #0,fx1_flag
  433.     move.w #0,fx2_flag
  434.     move.w #0,fx3_flag
  435.     move.w #0,fx4_flag
  436.     move.l #0,fxc1
  437.     move.l #0,fxc2
  438.     move.l #0,fxc3
  439.     move.l #0,fxc4
  440.     rts
  441. ;****************************************
  442.  
  443. ;  CALL HERE TO SELECT WHICH PIECE OF MUSIC TO PLAY
  444. ;  AFTER PLACING NUMBER (1 to 3) IN "SONG_BUFFER"..see above
  445. ;  a call to this routine will initiliase the driver/kill any sound etc.      
  446. ;  make sure this routine has been called before running the interrupt
  447. ;  driven section....see below
  448.  
  449. select_new_song:
  450.  
  451.     move.w #1,int_disable
  452.     movem.l d0/d1/a0/a1,-(a7)    ;save used registers
  453.     move.w music_disable,gen
  454.     move.w #1,music_disable
  455.         jsr kill_chip           
  456.     clr.l d0
  457.         move.w #204,d0
  458.         lea gvars,a0
  459. clloop: clr.w (a0)+        
  460.         dbra  d0,clloop
  461.     tst.l song_buffer
  462.     beq no_song
  463.         move.l song_buffer,d1
  464.     add.l d1,d1
  465.      add.l d1,d1
  466.      add.l d1,d1
  467.      add.l d1,d1
  468.         LEA  SONG_TABLE-16,A1
  469.         add.l d1,a1      
  470.         MOVE.L (A1)+,WSONG1    
  471.         move.l (a1)+,wsong2    
  472.         move.l (a1)+,wsong3
  473.     move.l (a1),wsong4
  474.         MOVE.L #pstart,PATTR1
  475.         MOVE.L #pstart,PATTR2
  476.         MOVE.L #pstart,PATTR3
  477.     move.l #pstart,pattr4
  478.         move.l #sstart,songr1
  479.         MOVE.L #sstart,SONGR2
  480.         MOVE.L #sstart,SONGR3
  481.     move.l #sstart,songr4
  482. no_song
  483.     move.w #1,ch1vars
  484.     move.w #2,ch2vars
  485.     move.w #3,ch3vars
  486.     move.w #4,ch4vars
  487.     move.w #6,ch4fxvars
  488.     move.w #5,ch3fxvars
  489.     move.w #7,ch2fxvars
  490.     move.w #8,ch1fxvars
  491.     move.w gen,music_disable
  492.     clr.w int_disable
  493.     movem.l (a7)+,d0/d1/a0/a1    ;restore registers
  494.         rts
  495.  
  496. ;**************************************************
  497.  
  498. ;  CALL HERE ON A 50hz INTERRUPT DURING RUNTIME
  499. ;  TO PLAY FX AND TUNES
  500.  
  501. driver:  
  502.     tst.w int_disable
  503.     beq process_data
  504.     rts        
  505. process_data
  506.     movem.l d0-d6/a0-a6,-(a7)    ;save used registers
  507.  
  508.  
  509. ch1:
  510.     tst.w fx_disable
  511.     bne test_music1
  512.     tst.l fxr1
  513.     bne   ch1j1
  514.     tst.l fxc1
  515.     beq test_music1
  516.     bra ch1j3
  517. ch1j2    jsr run_dummy1
  518.     jsr run_fx1
  519.     bra ch2
  520. ch1j1
  521.     jsr set_up1
  522. ch1j3    tst.w music_disable    
  523.     beq ch1j2
  524.     jsr run_fx1
  525.     bra ch2
  526. test_music1
  527.     tst.w music_disable
  528.     bne ch2
  529.     jsr run_music1
  530.     bra ch2
  531.     ;***********************
  532.  
  533.     ; channel 1 subroutines
  534.  
  535. run_dummy1    
  536.      lea ch1vars,a0
  537.      lea dummy_reg,a2 
  538.      move.w #0,d5 
  539.      jsr sect1    
  540.     rts
  541.  
  542. set_up1    
  543.          move.l fxr1,d0
  544.          add d0,d0
  545.          add d0,d0
  546.          lea  fxjump_table-4,A1
  547.      add.l d0,a1
  548.          move.l (a1),currfx1
  549.       clr.l fxr1
  550.      clr.w fxintc1
  551.       rts
  552.   
  553.      
  554. run_fx1
  555.     lea ch1fxvars,a0
  556.        lea chann1reg,a2
  557.       move.w #%0000000000000001,d5 
  558.      move.w #%1000001000000001,d1 
  559.      jsr sect1
  560.     rts
  561.  
  562. run_music1
  563.     lea ch1vars,a0
  564.        lea chann1reg,a2
  565.       move.w #%0000000000000001,d5 
  566.       move.w #%1000001000000001,d1 
  567.       jsr sect1     
  568.     rts
  569.  
  570.     ;  **************************
  571. ch2
  572.     tst.w fx_disable
  573.     bne test_music2
  574.     tst.l fxr2
  575.     bne   ch2j1
  576.     tst.l fxc2
  577.     beq test_music2
  578.     bra ch2j3
  579. ch2j2    jsr run_dummy2
  580.     jsr run_fx2
  581.     bra ch3
  582. ch2j1
  583.     jsr set_up2
  584. ch2j3    tst.w music_disable    
  585.     beq ch2j2
  586.     jsr run_fx2
  587.     bra ch3
  588.  
  589. test_music2
  590.     tst.w music_disable
  591.     bne ch3
  592.     jsr run_music2
  593.     bra ch3
  594.     ;***********************
  595.     ; channel 2 subroutines
  596. run_dummy2    
  597.      lea ch2vars,a0
  598.      lea dummy_reg,a2 
  599.      move.w #0,d5 
  600.      jsr sect1    
  601.     rts
  602.  
  603. set_up2    
  604.          move.l fxr2,d0
  605.          add d0,d0
  606.          add d0,d0
  607.          lea  fxjump_table-4,A1
  608.      add.l d0,a1
  609.          move.l (a1),currfx2
  610.       clr.l fxr2
  611.      clr.w fxintc2
  612.       rts
  613.   
  614.      
  615. run_fx2
  616.     lea ch2fxvars,a0
  617.        lea chann2reg,a2
  618.       move.w #%0000000000000010,d5 
  619.      move.w #%1000001000000010,d1 
  620.      jsr sect1
  621.     rts
  622.  
  623. run_music2
  624.     lea ch2vars,a0
  625.        lea chann2reg,a2
  626.       move.w #%0000000000000010,d5 
  627.       move.w #%1000001000000010,d1 
  628.       jsr sect1     
  629.     rts
  630.  
  631.     ;  **************************
  632.  
  633. ch3:
  634.     tst.w fx_disable
  635.     bne test_music3
  636.     tst.l fxr3
  637.     bne   ch3j1
  638.     tst.l fxc3
  639.     beq test_music3
  640.     bra ch3j3
  641. ch3j2    jsr run_dummy3
  642.     jsr run_fx3
  643.     bra ch4
  644. ch3j1
  645.     jsr set_up3
  646. ch3j3    tst.w music_disable    
  647.     beq ch3j2
  648.     jsr run_fx3
  649.     bra ch4
  650.  
  651. test_music3
  652.     tst.w music_disable
  653.     bne ch4
  654.     jsr run_music3
  655.     bra ch4
  656.  
  657.     ;***********************
  658.  
  659.     ; channel 3 subroutines
  660.  
  661. run_dummy3    
  662.      lea ch3vars,a0
  663.      lea dummy_reg,a2 
  664.      move.w #0,d5 
  665.      jsr sect1    
  666.     rts
  667.  
  668. set_up3    
  669.          move.l fxr3,d0
  670.          add d0,d0
  671.          add d0,d0
  672.          lea  fxjump_table-4,A1
  673.      add.l d0,a1
  674.          move.l (a1),currfx3
  675.       clr.l fxr3
  676.      clr.w fxintc3
  677.       rts
  678.   
  679.      
  680. run_fx3
  681.     lea ch3fxvars,a0
  682.        lea chann3reg,a2
  683.       move.w #%0000000000000100,d5 
  684.      move.w #%1000001000000100,d1 
  685.      jsr sect1
  686.     rts
  687.  
  688. run_music3
  689.     lea ch3vars,a0
  690.        lea chann3reg,a2
  691.       move.w #%0000000000000100,d5 
  692.       move.w #%1000001000000100,d1 
  693.       jsr sect1     
  694.     rts
  695.  
  696.     ;  **************************
  697.  
  698. ch4:
  699.     tst.w fx_disable
  700.     bne test_music4
  701.     tst.l fxr4
  702.     bne   ch4j1
  703.     tst.l fxc4
  704.     beq test_music4
  705.     bra ch4j3
  706. ch4j2    jsr run_dummy4
  707.     jsr run_fx4
  708.     bra no4
  709. ch4j1
  710.     jsr set_up4
  711. ch4j3    tst.w music_disable    
  712.     beq ch4j2
  713.     jsr run_fx4
  714.     bra no4
  715.  
  716. test_music4
  717.     tst.w music_disable
  718.     bne no4
  719.     jsr run_music4
  720. no4    
  721.     movem.l (a7)+,d0-d6/a0-a6    ;restore registers
  722.     rts
  723.  
  724.     ;***********************
  725.  
  726.     ; channel 4 subroutines
  727.  
  728. run_dummy4    
  729.      lea ch4vars,a0
  730.      lea dummy_reg,a2 
  731.      move.w #0,d5 
  732.      jsr sect1    
  733.     rts
  734.  
  735. set_up4    
  736.          move.l fxr4,d0
  737.          add d0,d0
  738.          add d0,d0
  739.          lea  fxjump_table-4,A1
  740.      add.l d0,a1
  741.          move.l (a1),currfx4
  742.       clr.l fxr4
  743.      clr.w fxintc4
  744.       rts
  745.   
  746.      
  747. run_fx4
  748.     lea ch4fxvars,a0
  749.        lea chann4reg,a2
  750.       move.w #%0000000000001000,d5 
  751.      move.w #%1000001000001000,d1 
  752.      jsr sect1
  753.     rts
  754.  
  755. run_music4
  756.     lea ch4vars,a0
  757.        lea chann4reg,a2
  758.       move.w #%0000000000001000,d5 
  759.       move.w #%1000001000001000,d1 
  760.       jsr sect1     
  761.     rts
  762.     ;  **************************
  763.  
  764. sect1: tst.w 0(a0)
  765.     bne s1j1
  766.     rts
  767.  
  768. s1j1:    tst.w 2(a0)
  769.         beq sect3       
  770.         cmpi.w #1,2(a0)
  771.         beq sect4
  772.  
  773.         cmpi.w #3,4(a0)    
  774.         beq part2       
  775.     
  776. mode_switch:  subq.w #1,2(a0)     
  777.  
  778. check_effects: clr.w altpf      
  779.         move.w 6(a0),d2    
  780.         tst.w 8(a0)      
  781.         beq check_mod
  782.         tst.w 14(a0)      
  783.         beq cont_bend
  784.         subq.w #1,14(a0)
  785.         bra check_mod
  786. cont_bend:   addq.w #1,altpf    
  787.         move.w 10(a0),d3    
  788.         move.w 12(a0),d4    
  789.         cmpi.w #1,8(a0)
  790.         beq pbup
  791.     
  792.         sub.w d3,d2
  793.         cmp.w d2,d4
  794.         bcs check_mod
  795.         bra fbend
  796.  
  797. pbup:     add.w d3,d2
  798.         cmp.w d2,d4
  799.         bcc check_mod
  800. fbend:     move.w d4,d2
  801.         clr.w 8(a0)      
  802. check_mod:   tst.w 16(a0)
  803.         beq send_alt_pitch
  804.    
  805.  
  806.     tst.w  58(a0)
  807.     beq st_ok
  808.     subq.w #1,58(a0)
  809.     bra send_alt_pitch
  810. st_ok:
  811.         tst.w 50(a0)
  812.         beq cont_mod
  813.         subq #1,50(a0)
  814.         bra send_alt_pitch
  815. cont_mod:    move.w 52(a0),50(a0)  
  816.         addq #1,altpf
  817.         cmpi #3,16(a0)
  818.         bcc addmod
  819.     
  820.         move.w 56(a0),d3 
  821.         sub.w d3,d2
  822.         addq.w #1,16(a0)  
  823.         bra send_alt_pitch
  824. addmod:
  825.  
  826.         move.w 54(a0),d3 
  827.         add.w d3,d2
  828.         addq.w #1,16(a0)
  829.         cmpi.w #5,16(a0)
  830.        bne send_alt_pitch
  831.         move.w #1,16(a0)  
  832.  
  833. send_alt_pitch: tst.w altpf
  834.         beq send_env
  835.         move.w d2,6(a0)  
  836.         move.w d2,6(a2)  
  837.  
  838. send_env: 
  839.  
  840.     cmpi #6,(a0)
  841.     beq norm_env    
  842.     cmpi #5,(a0)
  843.     bne do_env_check
  844.  
  845.     tst.w fx4_flag
  846.     beq norm_env
  847.     bra low_vol
  848.  
  849. do_env_check:
  850.     move.w fx3_flag,d0
  851.     or.w fx4_flag,d0
  852.     cmpi.w  #0,d0
  853.     beq norm_env
  854. low_vol:    
  855.     move.l 18(a0),a1    
  856.         cmpi.w #255,(a1)
  857.         beq evj1
  858.     move.w (a1)+,d0
  859. evj2:    sub.w  62(a0),d0
  860.     bcc no_over
  861.     move.w 0,d0
  862. no_over:
  863.         move.w d0,8(a2) 
  864.     bra fint        
  865.  
  866. evj1:   subq.l #2,a1
  867.     move.w (a1)+,d0
  868.     bra evj2
  869.  
  870. norm_env:
  871.     move.l 18(a0),a1    
  872.         cmpi.w #255,(a1)
  873.         beq env_finished
  874.     cmpi.w #1,66(a0)    
  875.     bne    no_acc 
  876.  
  877.     clr.l d0
  878.     move.w (a1)+,d0
  879.     add.w 64(a0),d0    
  880.     move.w d0,8(a2)    
  881.     move.l a1,18(a0)
  882.     rts        
  883.  
  884. no_acc:
  885. resu:   move.w (a1)+,8(a2)   
  886. fint:   move.l a1,18(a0)    
  887.     rts
  888.  
  889. env_finished:
  890.      subq.l #2,a1    
  891.      bra resu
  892.  
  893.  
  894. one_shot_note: move.w #3,4(a0)     
  895.         move.l 38(a0),(a2)
  896.         move.w 42(a0),4(a2)
  897.         move.w d1,dmacon     
  898.         bra send_env
  899.  
  900.  
  901. part2:                         
  902.         move.l 44(a0),(a2)
  903.         move.w 48(a0),4(a2)
  904.         subq.w #1,2(a0)      
  905.         move.w #1,4(a0)
  906.         bra check_effects
  907.  
  908. sect3:
  909.     move.w 0,66(a0)    
  910.  
  911.     move.l 22(a0),a1  
  912. control_ret: move.w (a1)+,d0  
  913.     cmpi.w #100,d0   
  914.     bls sect5   
  915.   
  916. acc_note:
  917.     move.w d0,6(a0)  
  918.     move.w d0,6(a2)  
  919.     move.w (a1)+,2(a0) 
  920.     subq.w #1,2(a0)  
  921.     move.l a1,22(a0)  
  922.     move.l 34(a0),18(a0) 
  923.     move.w 60(a0),58(a0) 
  924.  
  925.  
  926.     tst.w 16(a0)
  927.     beq no_mod_res
  928.     move.w #1,16(a0)
  929. no_mod_res:
  930.     cmpi.w #0,4(a0)
  931.     beq do_loop
  932.     bra one_shot_note    
  933.  
  934.  
  935. do_loop:    move.w d1,dmacon   
  936.         bra send_env
  937.  
  938. do_rest:
  939.     move.w (a1)+,2(a0) 
  940.     subq.w #1,2(a0)  
  941.     move.l a1,22(a0)  
  942.     move.l  #rest_env,18(a0)
  943.  
  944.         move.w #0,8(a2)
  945.         bra send_env
  946.    
  947. sect4:
  948.         cmpi.w #0,4(a0)
  949.         beq noof
  950.         move.w d5,dmacon   
  951. noof:     subq.w #1,2(a0)
  952.         bra check_effects
  953.    
  954. sect5:     move.l #jump_table,a3
  955.         move.l (a3,d0),a4
  956.         jmp (a4)
  957.  
  958. jump_table: 
  959.     dc.l  in_line_data
  960.         dc.l  nsound
  961.         dc.l  patt_end
  962.         dc.l  get_env
  963.         dc.l  check_pbend
  964.         dc.l  do_mod
  965.         dc.l  bend_off
  966.         dc.l  mod_off
  967.         dc.l  do_rest
  968.         dc.l  end_fx
  969.         dc.l  end_fx
  970.     dc.l  s_f_on
  971.     dc.l  s_f_off
  972.     dc.l  set_acc
  973.     dc.l  rept
  974.  
  975. in_line_data:
  976.  
  977.         nop
  978.         rts
  979.  
  980. rept:
  981.     move.l (a1),a1
  982.     bra control_ret
  983.  
  984. s_f_on: 
  985.     bclr #1,filter
  986.     bra control_ret
  987. s_f_off:
  988.     bset #1,filter
  989.     bra control_ret
  990.  
  991. nsound:    move.l (a1)+,a3     
  992.         cmpi.w #0,(a3)
  993.         bne one_shot_sound
  994.         move.w (a3)+,4(a0)    
  995.         move.l (a3)+,(a2)     
  996.         move.w (a3),4(a2)    
  997.         jmp control_ret
  998.  
  999. one_shot_sound:
  1000.         move.w (a3)+,4(a0)
  1001.         move.l (a3)+,38(a0)   
  1002.         move.l (a3)+,42(a0)
  1003.         move.l (a3),46(a0)
  1004.         jmp control_ret
  1005.  
  1006. patt_end:
  1007.  
  1008.         move.l 26(a0),a1    
  1009.         cmpi.l #0,(a1)     
  1010.         beq song_control
  1011.         addq.l #4,26(a0)    
  1012.         move.l (a1),a1     
  1013.         jmp control_ret
  1014. get_env: 
  1015.        move.l (a1)+,a4 
  1016.     move.l (a4)+,62(a0)    
  1017.     
  1018.     move.l  a4,34(a0)    
  1019.     
  1020.         bra control_ret
  1021.  
  1022. check_pbend:
  1023.      move.l (a1)+,8(a0)
  1024.         move.l (a1)+,12(a0)
  1025.         bra control_ret
  1026.  
  1027. do_mod:    move.w #1,16(a0)  
  1028.         move.l (a1)+,50(a0)
  1029.         move.l (a1)+,54(a0)
  1030.         move.l (a1)+,58(a0)
  1031.         bra control_ret
  1032.  
  1033. bend_off:   clr.w 8(a0)
  1034.         bra control_ret
  1035.  
  1036. mod_off:    clr.w 16(a0)
  1037.         bra control_ret
  1038.  
  1039.  
  1040. end_fx:    
  1041.     cmpi.w #6,(a0)
  1042.     beq end_fx4p
  1043.     cmpi.w #5,(a0)
  1044.     beq end_fx3p
  1045.     cmpi.w #7,(a0)
  1046.     beq end_fx2p
  1047.  
  1048. end_fx1p:
  1049.         move.w d5,dmacon   
  1050.     move.w  #1,chann1reg+6
  1051.     move.w #0,8(a2)
  1052.     move.l #0,fxc1
  1053.     rts
  1054.  
  1055. end_fx2p:
  1056.     move.w d5,dmacon 
  1057.     move.w  #1,chann2reg+6
  1058.         move.w #0,8(a2) 
  1059.     move.l #0,fxc2
  1060.         rts
  1061.  
  1062.  
  1063. end_fx3p:
  1064.         move.w d5,dmacon   
  1065.     move.w  #1,chann3reg+6
  1066.     move.w #0,8(a2)
  1067.     move.l #0,fxc3
  1068.     rts
  1069.  
  1070. end_fx4p:
  1071.     move.w d5,dmacon 
  1072.     move.w  #1,chann4reg+6
  1073.         move.w #0,8(a2) 
  1074.     move.l #0,fxc4
  1075.         rts
  1076.  
  1077. set_acc: move.w #1,66(a0) 
  1078.     bra control_ret
  1079.  
  1080. song_control:
  1081.         addq.l #4,a1
  1082.         move.l 30(a0),26(a0)
  1083.         move.l 26(a0),a1
  1084.         addq.l #4,26(a0)
  1085.         move.l (a1),a1
  1086.         jmp control_ret
  1087.  
  1088.  
  1089.     ;"""""""""""""""""""""""""""""""""""""""""""""""""
  1090.  
  1091.     ;;; DATA
  1092.  
  1093. song_table:
  1094.         dc.l s1,s2,s3,s4
  1095.     ;    dc.l s5,s6,s7,s8
  1096.  
  1097. ;************************************************************
  1098. gvars:
  1099. ch1vars     
  1100.     dc.w 0     
  1101.         dc.w 0,0,0,0,0,0,0,0,0,0     
  1102. pattr1: dc.l 0    
  1103. songr1: dc.l 0    
  1104. wsong1: dc.l 0   
  1105.         dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0   
  1106.  
  1107. ch2vars     
  1108.     dc.w 0     
  1109.         dc.w 0,0,0,0,0,0,0,0,0,0     
  1110. pattr2: dc.l 0    
  1111. songr2: dc.l 0    
  1112. wsong2: dc.l 0    
  1113.         dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0   
  1114.  
  1115. ch3vars 
  1116.     dc.w 0     
  1117.         dc.w 0,0,0,0,0,0,0,0,0,0     
  1118. pattr3: dc.l 0    
  1119. songr3: dc.l 0    
  1120. wsong3: dc.l 0    
  1121.         dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0   
  1122.  
  1123. ch4vars 
  1124.     dc.w 0     
  1125.         dc.w 0,0,0,0,0,0,0,0,0,0     
  1126. pattr4: dc.l 0    
  1127. songr4: dc.l 0    
  1128. wsong4: dc.l 0    
  1129.         dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0   
  1130.  
  1131.  
  1132. ch1fxvars 
  1133.     dc.w 0     
  1134. fxintc1:
  1135.     dc.w 0,0,0,0,0,0,0,0,0,0     
  1136. currfx1:
  1137.     dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0    
  1138.  
  1139. ch2fxvars 
  1140.     dc.w 0     
  1141. fxintc2:
  1142.     dc.w 0,0,0,0,0,0,0,0,0,0     
  1143. currfx2:
  1144.     dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0    
  1145.  
  1146.  
  1147. ch3fxvars
  1148.     dc.w 0     
  1149. fxintc3:
  1150.     dc.w 0,0,0,0,0,0,0,0,0,0     
  1151. currfx3:
  1152.     dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0    
  1153.  
  1154. ch4fxvars 
  1155.     dc.w 0     
  1156. fxintc4:
  1157.     dc.w 0,0,0,0,0,0,0,0,0,0     
  1158. currfx4:
  1159.     dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0    
  1160. ;************************************************************
  1161.  
  1162. dummy_reg dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1163.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1164.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1165.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1166. ;************************************************************
  1167.  
  1168.  
  1169.  
  1170. ;       fx patterns here
  1171.  
  1172. fxjump_table:  
  1173.  
  1174.     dc.l  expl1
  1175.     dc.l  expl2
  1176.     dc.l  tone1
  1177.     dc.l  tone2
  1178.     dc.l  tone3
  1179.     dc.l  tone4
  1180.  
  1181.  
  1182.  
  1183.      dc.l squelch1x        ;; 
  1184.      dc.l squelch2x        ;; 
  1185.      dc.l squelch3x
  1186.      dc.l squelch4x
  1187.      dc.l squelch5x
  1188.      dc.l squelch6x
  1189.     dc.l foot1    ;;  thud 1
  1190.     dc.l foot2    ;;  thud 2
  1191.      dc.l fxfall1    ;;    
  1192.      dc.l fxfall2    ;;    
  1193.      dc.l fx2    ;; 
  1194.      dc.l fx3    ;; 
  1195.      dc.l fx4    ;; 
  1196.      dc.l fx5    ;; 
  1197.     dc.l fx6    ;; 
  1198.     dc.l fx6a    ;; 
  1199.  
  1200.  
  1201.  
  1202.      dc.l fx9    ;; duckula jumps (use thud 1/2 for landing)
  1203.      dc.l fx10    ;; jack in the box jumps
  1204.      dc.l fanfare    ;; fanfare jingle
  1205.      dc.l endgame    ;; end of game jingle
  1206.  
  1207. max_fx    dc.l    27
  1208.  
  1209.  
  1210.  
  1211.  
  1212. ;______________________________________________________________________
  1213.  
  1214. ;   The 1/50 counter in these patterns is dependent on the length
  1215. ;   of the sample in bytes and the replay speed.if altering the
  1216. ;   replay speed calculate the counter using length/rate*50
  1217. ;   ie the piston sample is 2647 bytes at r6(6000)..hence interrupt
  1218. ;   counter for 1 shot play = 22
  1219.  
  1220.  
  1221.  
  1222.  
  1223. expl1
  1224.                         dc.w  new_env
  1225.                         dc.l  fx1_env
  1226.             dc.w    new_snd
  1227.             dc.l    snr
  1228.             dc.w    pboff
  1229.  
  1230.             dc.w    r4,100    
  1231.                            dc.w    end_fxp
  1232.  
  1233.  
  1234. expl2
  1235.                         dc.w  new_env
  1236.                         dc.l  fx1_env
  1237.             dc.w    new_snd
  1238.             dc.l    snr
  1239.             dc.w    pboff
  1240.  
  1241.             dc.w    r2,100    
  1242.                            dc.w    end_fxp
  1243.  
  1244.  
  1245.  
  1246. exp_env            dc.w 0,64,64,255
  1247.  
  1248.  
  1249.  
  1250. tone1:
  1251.       dc.w new_env
  1252.       dc.l exp_env
  1253.       dc.w new_snd
  1254.       dc.l sax
  1255.     dc.w A05,cr*2
  1256.       dc.w end_fxp
  1257.  
  1258.  
  1259. tone2:
  1260.       dc.w new_env
  1261.       dc.l exp_env
  1262.       dc.w new_snd
  1263.       dc.l sax
  1264.     dc.w f05,cr*2
  1265.       dc.w end_fxp
  1266.  
  1267.  
  1268. tone3:
  1269.       dc.w new_env
  1270.       dc.l exp_env
  1271.       dc.w new_snd
  1272.       dc.l sax
  1273.     dc.w d05,cr*2
  1274.       dc.w end_fxp
  1275.  
  1276.  
  1277. tone4:
  1278.       dc.w new_env
  1279.       dc.l exp_env
  1280.       dc.w new_snd
  1281.       dc.l sax
  1282.     dc.w c04,cr*2
  1283.       dc.w end_fxp
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  
  1291. sqenv        dc.w 0,64,64,255
  1292. squelch1x
  1293.                         dc.w  new_env
  1294.                         dc.l  sqenv
  1295.             dc.w    new_snd
  1296.             dc.l    squelch1
  1297.             dc.w    r16,15
  1298.                            dc.w    end_fxp
  1299. squelch2x
  1300.                         dc.w  new_env
  1301.                         dc.l  sqenv
  1302.             dc.w    new_snd
  1303.             dc.l    squelch2
  1304.             dc.w    r8,13
  1305.                            dc.w    end_fxp
  1306. squelch3x
  1307.                         dc.w  new_env
  1308.                         dc.l  sqenv
  1309.             dc.w    new_snd
  1310.             dc.l    squelch3
  1311.             dc.w    r4,14
  1312.                            dc.w    end_fxp
  1313. squelch4x
  1314.                         dc.w  new_env
  1315.                         dc.l  sqenv
  1316.             dc.w    new_snd
  1317.             dc.l    squelch4
  1318.             dc.w    r16,18
  1319.                            dc.w    end_fxp
  1320. squelch5x
  1321.                         dc.w  new_env
  1322.                         dc.l  sqenv
  1323.             dc.w    new_snd
  1324.             dc.l    squelch5
  1325.             dc.w    r16,19
  1326.                            dc.w    end_fxp
  1327. squelch6x
  1328.                         dc.w  new_env
  1329.                         dc.l  sqenv
  1330.             dc.w    new_snd
  1331.             dc.l    squelch6
  1332.             dc.w    r16,16
  1333.                            dc.w    end_fxp
  1334.  
  1335.  
  1336. fx1
  1337.                         dc.w  new_env
  1338.                         dc.l  fx1_env
  1339.             dc.w    new_snd
  1340.             dc.l    takeoff
  1341.             dc.w    pboff
  1342.  
  1343.             dc.w    300,100    
  1344.                            dc.w    end_fxp
  1345.  
  1346.  
  1347.  
  1348. fx1_env            dc.w 0,64,64,255
  1349.  
  1350.  
  1351. fx2
  1352.                         dc.w  new_env
  1353.                         dc.l  fx2_env
  1354.             dc.w    new_snd
  1355.             dc.l    twinkle
  1356.             dc.w    pboff
  1357.             dc.w    r20,1,r5,1,r20,1,r12,1
  1358.             dc.w    r20,1,r5,1,r20,1,r12,1
  1359.             dc.w    r20,2,r5,2,r20,2,r12,2
  1360.  
  1361.                            dc.w    end_fxp
  1362.  
  1363.  
  1364. fx3
  1365.                         dc.w  new_env
  1366.                         dc.l  fx2_env
  1367.             dc.w    new_snd
  1368.             dc.l    twinkle
  1369.             dc.w     pbend,up,4,1000,1
  1370.             dc.w    r4,50
  1371.                            dc.w    end_fxp
  1372.  
  1373.  
  1374.  
  1375. fx2_env            dc.w 0,64,64,255
  1376.  
  1377.  
  1378. fx4
  1379.                         dc.w  new_env
  1380.                         dc.l  alarm1env
  1381.             dc.w    new_snd
  1382.             dc.l    takeoff
  1383.             dc.w    pboff
  1384.  
  1385.             dc.w    r2,1
  1386.             dc.w    r4,1
  1387.             dc.w    r6,1
  1388.             dc.w    r8,1
  1389.             dc.w    r10,1
  1390.             dc.w    r8,1
  1391.             dc.w    r6,1
  1392.             dc.w    r4,1
  1393.                            dc.w    end_fxp
  1394.  
  1395. fx5
  1396.                         dc.w  new_env
  1397.                         dc.l  alarm1env
  1398.             dc.w    new_snd
  1399.             dc.l    sine
  1400.             dc.w    pboff
  1401.  
  1402.             dc.w    r20,1
  1403.             dc.w    r4,1
  1404.             dc.w    r20,1
  1405.             dc.w    r4,1
  1406.             dc.w    r20,1
  1407.             dc.w    r4,1
  1408.             dc.w    r20,1
  1409.             dc.w    r4,1
  1410.                            dc.w    end_fxp
  1411.  
  1412.  
  1413. fx6
  1414.                         dc.w  new_env
  1415.                         dc.l  alarm1env
  1416.             dc.w    new_snd
  1417.             dc.l    sine
  1418.             dc.w    pboff
  1419.  
  1420.             dc.w    r8,2
  1421.             dc.w    r16,2
  1422.             dc.w    r8,2
  1423.             dc.w    r16,2
  1424.             dc.w    r8,2
  1425.             dc.w    rest,6
  1426.  
  1427.             dc.w    r8,2
  1428.             dc.w    r16,2
  1429.             dc.w    r8,2
  1430.             dc.w    r16,2
  1431.             dc.w    r8,2
  1432.             dc.w    rest,6
  1433.  
  1434.             dc.w    r8,2
  1435.             dc.w    r16,2
  1436.             dc.w    r8,2
  1437.             dc.w    r16,2
  1438.             dc.w    r8,2
  1439.             dc.w    rest,6
  1440.  
  1441.  
  1442.                            dc.w    end_fxp
  1443.  
  1444.  
  1445. fx6a
  1446.                         dc.w  new_env
  1447.                         dc.l  alarm1env
  1448.             dc.w    new_snd
  1449.             dc.l    sine
  1450.             dc.w    pboff
  1451.  
  1452.             dc.w    r20,2
  1453.             dc.w    r19,2
  1454.             dc.w    r18,2
  1455.             dc.w    r17,2
  1456.             dc.w    r16,2
  1457.  
  1458.             dc.w    r15,2
  1459.             dc.w    r13,2
  1460.             dc.w    r13,2
  1461.             dc.w    r12,2
  1462.             dc.w    r11,2
  1463.  
  1464.             dc.w    r10,2
  1465.             dc.w    r9,2
  1466.             dc.w    r8,2
  1467.             dc.w    r7,2
  1468.             dc.w    r6,2
  1469.  
  1470.                            dc.w    end_fxp
  1471.  
  1472.  
  1473. alarm1env        dc.w 0,64,64,255
  1474. alarm3env        dc.w 0,64,64,255
  1475.  
  1476.  
  1477. fx7
  1478.                         dc.w  new_env
  1479.                         dc.l  fx7_env
  1480.             dc.w    new_snd
  1481.             dc.l    whoops
  1482.             dc.w    pboff
  1483.  
  1484.             dc.w    r16,50
  1485.                            dc.w    end_fxp
  1486.  
  1487.  
  1488. fx8
  1489.                         dc.w  new_env
  1490.                         dc.l  fx7_env
  1491.             dc.w    new_snd
  1492.             dc.l    whoops
  1493.             dc.w    pboff
  1494.  
  1495.             dc.w    r20,60
  1496.                            dc.w    end_fxp
  1497.  
  1498.  
  1499. fx9
  1500.                         dc.w  new_env
  1501.                         dc.l  fx8_env
  1502.             dc.w    new_snd
  1503.             dc.l    rabbit
  1504.             dc.w    pboff
  1505.  
  1506.             dc.w    r16,50
  1507.                            dc.w    end_fxp
  1508.  
  1509.  
  1510.  
  1511. fx8_env            dc.w    0,64,64,255
  1512. fx7_env            dc.w    0,64,64,255
  1513.  
  1514. fx10
  1515.                         dc.w  new_env
  1516.                         dc.l  fx8_env
  1517.             dc.w    new_snd
  1518.             dc.l    sine
  1519.             dc.w    r16,2,r8,2,r16,2,r8,2
  1520.             dc.w    r16,2,r8,2,r16,2,r8,2
  1521.             dc.w    r16,2,r8,2,r16,2,r8,2
  1522.             dc.w    r16,2,r8,2,r16,2,r8,2
  1523.                            dc.w    end_fxp
  1524.  
  1525.  
  1526. fxfall1
  1527.                         dc.w  new_env
  1528.                         dc.l  fx2_env
  1529.             dc.w    new_snd
  1530.             dc.l    sine
  1531.             dc.w     pbend,down,200,50000,1
  1532.  
  1533.             dc.w    r20,50
  1534.                            dc.w    end_fxp
  1535.  
  1536.  
  1537. fxfall2
  1538.                         dc.w  new_env
  1539.                         dc.l  fx2_env
  1540.             dc.w    new_snd
  1541.             dc.l    sax
  1542.             dc.w     pbend,down,500,50000,1
  1543.  
  1544.             dc.w    r20,20
  1545.                            dc.w    end_fxp
  1546.  
  1547.  
  1548.  
  1549. foot1
  1550.                         dc.w  new_env
  1551.                         dc.l  fx2_env
  1552.             dc.w    new_snd
  1553.             dc.l    foot
  1554.             dc.w    r8,10
  1555.                            dc.w    end_fxp
  1556.  
  1557.  
  1558.  
  1559. foot2
  1560.                         dc.w  new_env
  1561.                         dc.l  fx2_env
  1562.             dc.w    new_snd
  1563.             dc.l    foot
  1564.             dc.w    r4,12
  1565.                            dc.w    end_fxp
  1566.  
  1567. fanfare:
  1568.       dc.w new_env
  1569.       dc.l org_env
  1570.       dc.w new_snd
  1571.       dc.l org
  1572.     dc.w c05,q,e05,q,g05,q,e05,q,c05,q,g05,q,c06,q
  1573.       dc.w end_fxp
  1574.  
  1575.  
  1576. endgame:
  1577.     dc.w new_env
  1578.       dc.l org_env
  1579.       dc.w new_snd
  1580.       dc.l org
  1581.     dc.w c05,cr,a04,cr,d05,cr*2,a04,cr*4
  1582.       dc.w end_fxp
  1583.  
  1584.  
  1585.  
  1586. ;*******************************************************************
  1587.  
  1588. sstart: dc.l 0,end_song
  1589.  
  1590. pstart: dc.w end_patt
  1591.  
  1592.  
  1593. ;----------------------------------
  1594.  
  1595. ;;;;;;;;;;;;;;;;;;;;;   Music Data ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1596.  
  1597.  
  1598. ;;;;;;;;;;;;;;;;;;;;;   Music Data ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1599.  
  1600.  
  1601. cr set   16
  1602. q set cr/2
  1603. sq set q/2
  1604.  
  1605.  
  1606.  
  1607. s1:
  1608.     dc.l    p1,p1,p1b,p1,p1,p1a
  1609.     dc.l    pr,pr,pr,pr
  1610.       dc.l     0,end_song
  1611. s2:
  1612.     dc.l    p4z,p4z,p44,p4z,p4z,p4za
  1613.     dc.l    pr,pr,pr,pr
  1614.         DC.L    0,end_song
  1615. s3:
  1616.     dc.l    p3z,p3z,p3z,p3z
  1617.     dc.l    p3z,p3z,p3z,p3z
  1618.     dc.l    p3z,p3z,p3z,p3z
  1619.     dc.l    p3z,p3z,p3z,p3z
  1620.     dc.l    p3z,p3z,p3z,p3z
  1621.     dc.l    p3z,p3z,p3z,p3z
  1622.     dc.l    p3z,p3z,p3z,p3za
  1623.     dc.l    pr,pr,pr,pr
  1624.     dc.l     0,end_song
  1625. s4:
  1626.     dc.l    p2,p2,p2b,p2,p2,p2a
  1627.     dc.l    pr,pr,pr,pr
  1628.     dc.l     0,end_song
  1629. pr:
  1630.     dc.w rest,cr*4
  1631.     dc.w end_patt
  1632. prza:
  1633.     dc.w rest,q*7
  1634.     dc.w end_patt
  1635.  
  1636. p1:
  1637.       dc.w new_env
  1638.       dc.l sax_env
  1639.     dc.w new_snd
  1640.     dc.l sax
  1641. ;      dc.w modon,1,1
  1642. ;      dc.w 3,3,8
  1643.     dc.w G05,cr,rest,cr,A05,cr,rest,cr+q
  1644.     dc.w B05,q,B05,q,C06,q,C06,q,rest,cr*2
  1645.     dc.w A05,q,G05,q,E05,q,G05,cr,D05,cr,rest,q
  1646.     dc.w A05,q,G05,q,E05,q,G05,cr,A05,cr
  1647.       dc.w end_patt
  1648. p1b:
  1649.       dc.w new_env
  1650.       dc.l sax_env
  1651.     dc.w new_snd
  1652.     dc.l sax
  1653. ;      dc.w modon,1,1
  1654. ;      dc.w 3,3,8
  1655.     dc.w A05,q,A05,q,G05,q,A05,cr,G05,cr,rest,q*9
  1656.     dc.w A05,q,A05,q,G05,q,A05,cr,G05,cr
  1657.     dc.w A05,cr,A05,q,G05,cr,D05,cr,rest,cr
  1658.     dc.w A05,q,A05,q,G05,q,A05,cr,G05,cr,rest,q*9
  1659.     dc.w A05,q,A05,q,G05,q,A05,cr,G05,cr
  1660.     dc.w A05,cr,B05,q,B05,q,C06,q,C06,cr,rest,cr
  1661.       dc.w end_patt
  1662.  
  1663. p1a:
  1664.     dc.w G05,cr,rest,cr,A05,cr,rest,cr+q
  1665.     dc.w B05,q,B05,q,C06,q,C06,q,rest,q*3
  1666.     dc.w G05,cr,rest,cr,A05,cr,rest,cr+q
  1667.     dc.w B05,q,B05,q,C06,q,C06,q,rest,q*3
  1668.       dc.w end_patt
  1669. p2:
  1670.       dc.w new_env
  1671.       dc.l org_env
  1672.     dc.w new_snd
  1673.     dc.l sax
  1674. ;      dc.w modon,1,1
  1675. ;      dc.w 3,3,8
  1676.     dc.w E05,cr,rest,cr,F05,cr,rest,cr+q
  1677.     dc.w F05,q,E05,q,D05,q,C05,q,rest,q*19
  1678.       dc.w end_patt
  1679. p2b:
  1680.       dc.w new_env
  1681.       dc.l sax_env
  1682.     dc.w new_snd
  1683.     dc.l sax
  1684. ;      dc.w modon,1,1
  1685. ;      dc.w 3,3,8
  1686.     dc.w F05,q,F05,q,E05,q,F05,cr,E05,cr,rest,q*9
  1687.     dc.w F05,q,F05,q,E05,q,F05,cr,E05,cr
  1688.     dc.w F05,cr,F05,q,E05,cr,B04,cr,rest,cr
  1689.     dc.w F05,q,F05,q,E05,q,F05,cr,E05,cr,rest,q*9
  1690.     dc.w F05,q,F05,q,E05,q,F05,cr,E05,cr
  1691.     dc.w F05,cr,D05,q,D05,q,G05,q,G05,cr,rest,cr
  1692.       dc.w end_patt
  1693.  
  1694. p2a:
  1695.     dc.w E05,cr,rest,cr,F05,cr,rest,cr+q
  1696.     dc.w D05,q,D05,q,G05,q,G05,q,rest,q*3
  1697.     dc.w E05,cr,rest,cr,F05,cr,rest,cr+q
  1698.     dc.w F05,q,E05,q,D05,q,C05,q,rest,q*3
  1699.       dc.w end_patt
  1700. p4z:
  1701.       dc.w new_env
  1702.       dc.l bass_env
  1703.     dc.w new_snd
  1704.     dc.l bas
  1705.     dc.w C02,cr
  1706.     dc.w C02,q,C02,q
  1707.     dc.w F02,cr
  1708.     dc.w F02,q
  1709.     dc.w G02,cr
  1710.     dc.w G02,q,G02,q,G02,q
  1711.     dc.w C02,cr,rest,cr
  1712.     dc.w C02,(q*3)
  1713.     dc.w C02,q
  1714.     dc.w F02,(q*3)
  1715.     dc.w F02,q
  1716.     dc.w D02,(q*3)
  1717.     dc.w D02,q
  1718.     dc.w G02,cr,G02,cr
  1719.     dc.w end_patt
  1720. p4za:
  1721.       dc.w new_env
  1722.       dc.l bass_env
  1723.     dc.w new_snd
  1724.     dc.l bas
  1725.     dc.w C02,cr
  1726.     dc.w C02,q,C02,q
  1727.     dc.w F02,cr
  1728.     dc.w F02,q
  1729.     dc.w G02,cr
  1730.     dc.w G02,q,G02,q,G02,q
  1731.     dc.w C02,cr,rest,cr
  1732.     dc.w C02,cr
  1733.     dc.w C02,q,C02,q
  1734.     dc.w F02,cr
  1735.     dc.w F02,q
  1736.     dc.w G02,cr
  1737.     dc.w G02,q,G02,q,G02,q
  1738.     dc.w C02,cr,rest,cr
  1739.     dc.w end_patt
  1740. p44
  1741.     dc.w F02,cr,F02,q,F02,q,F02,(q*3)
  1742.     dc.w F02,cr,F02,q,E02,q,D02,q,C02,cr*2
  1743.     dc.w F02,cr,F02,q,F02,q,F02,(q*3)
  1744.     dc.w F02,cr,F02,q,F02,q,G02,q,G02,cr*2
  1745.     dc.w F02,cr,F02,q,F02,q,F02,(q*3)
  1746.     dc.w F02,cr,F02,q,E02,q,D02,q,C02,cr*2
  1747.     dc.w F02,cr,F02,q,F02,q,F02,cr*2
  1748.     dc.w rest,q,F02,q,F02,q,G02,q,C02,cr,rest,cr
  1749.     dc.w end_patt
  1750. p3z:
  1751.       dc.w new_env
  1752.       dc.l kik_env
  1753.     dc.w new_snd
  1754.     dc.l kik
  1755.       dc.w r16,cr
  1756.     dc.w new_snd
  1757.     dc.l snr
  1758.       dc.w r20,cr
  1759.     dc.w new_snd
  1760.     dc.l kik
  1761.     dc.w r16,cr
  1762.     dc.w new_snd
  1763.     dc.l snr
  1764.       dc.w r20,cr
  1765.       dc.w end_patt
  1766. p3za:
  1767.       dc.w new_env
  1768.       dc.l kik_env
  1769.     dc.w new_snd
  1770.     dc.l kik
  1771.       dc.w r16,cr
  1772.       dc.w new_snd
  1773.     dc.l snr
  1774.     dc.w r20,cr
  1775.     dc.w new_snd
  1776.     dc.l kik
  1777.       dc.w r16,cr,rest,cr
  1778.       dc.w end_patt
  1779.  
  1780.  
  1781.  
  1782.  
  1783. **************************************************************
  1784.     ; sample parameters
  1785. bas
  1786.         dc.w 1  
  1787.              dc.l bas4d
  1788.              dc.w 1801/2 
  1789.              dc.l restd
  1790.              dc.w 16/2
  1791. kik
  1792.         dc.w 1  
  1793.              dc.l kik1d
  1794.              dc.w 3801/2 
  1795.              dc.l restd
  1796.              dc.w 16/2
  1797. snr
  1798.         dc.w 1  
  1799.              dc.l snr1d
  1800.              dc.w 6325/2 
  1801.              dc.l restd
  1802.              dc.w 16/2
  1803. org
  1804. sax
  1805.         dc.w 1  
  1806.              dc.l sax2d
  1807.              dc.w 6073/2 
  1808.         dc.l sax2d
  1809.              dc.w 6073/2 
  1810.  
  1811. ;**************************************************
  1812. kik1d            incbin df1:kik1.sam
  1813. snr1d            incbin df1:snr1.sam
  1814. bas4d            incbin df1:bas4.sam
  1815. sax2d            incbin df1:sax2.sam                    
  1816.  
  1817. org_env:            dc.w 0,16,255
  1818. sax_env:            dc.w 0,33,255
  1819. bass_env            dc.w 0,64,255
  1820. q_env:                dc.w 0,10,255
  1821. kik_env:            dc.w 0,64,255
  1822. tom_env:            dc.w 0,45,255
  1823. rest_env:            dc.w 0,0,0,0,0,0,0,0,0,255
  1824. blip:        dc.w 0,33,33,7,7,33,33,10,29,28,24,20,16,14,12,10,8,6,4,2,0,255
  1825.  
  1826.  
  1827.  
  1828. squelch1
  1829.         dc.w 1  
  1830.              dc.l squelch1d
  1831.              dc.w 2488/2 
  1832.              dc.l restd
  1833.              dc.w 16/2
  1834. squelch2
  1835.         dc.w 1  
  1836.              dc.l squelch2d
  1837.              dc.w 2093/2 
  1838.              dc.l restd
  1839.              dc.w 16/2
  1840. squelch3
  1841.         dc.w 1  
  1842.              dc.l squelch3d
  1843.              dc.w 2319/2 
  1844.              dc.l restd
  1845.              dc.w 16/2
  1846. squelch4
  1847.         dc.w 1  
  1848.              dc.l squelch4d
  1849.              dc.w 2998/2 
  1850.              dc.l restd
  1851.              dc.w 16/2
  1852. squelch5
  1853.         dc.w 1  
  1854.              dc.l squelch5d
  1855.              dc.w 3168/2 
  1856.              dc.l restd
  1857.              dc.w 16/2
  1858. squelch6
  1859.         dc.w 1  
  1860.              dc.l squelch6d
  1861.              dc.w 2602/2 
  1862.              dc.l restd
  1863.              dc.w 16/2
  1864.  
  1865.  
  1866.  
  1867. TAKEOFF         
  1868.         dc.w 1  
  1869.              dc.l takeoffd
  1870.              dc.w 3754/2 
  1871.              dc.l rest_data
  1872.              dc.w 16/2
  1873.  
  1874. twinkle         
  1875.         dc.w 1  
  1876.              dc.l twinkled
  1877.              dc.w 1530/2 
  1878.              dc.l twinkled
  1879.              dc.w 1530/2
  1880.  
  1881. whoops         
  1882.         dc.w 1  
  1883.              dc.l whoopsd
  1884.              dc.w 4758/2 
  1885.              dc.l restd
  1886.              dc.w 16/2
  1887.  
  1888.  
  1889. rabbit         
  1890.         dc.w 1  
  1891.              dc.l rabbitd
  1892.              dc.w 3978/2 
  1893.              dc.l restd
  1894.              dc.w 16/2
  1895.  
  1896.  
  1897. foot         
  1898.         dc.w 1  
  1899.              dc.l footd
  1900.              dc.w 900/2 
  1901.              dc.l restd
  1902.              dc.w 16/2
  1903. sine         
  1904.         dc.w 1  
  1905.              dc.l sine_datad
  1906.              dc.w 32/2 
  1907.              dc.l sine_datad
  1908.              dc.w 32/2 
  1909.  
  1910.  
  1911.  
  1912. restd:
  1913. rest_data:
  1914.              dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1915.              dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1916.              dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1917.              dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1918.  
  1919. sine_datad:
  1920.              dc.w 127,100,50,25,0,-25,-50,-100,-127
  1921.              dc.w -127,-100,-50,-25,0,25,50,100,127
  1922.  
  1923.  
  1924. ;*************************************************
  1925.  
  1926. squelch1d        incbin df1:squelch1.con
  1927. squelch2d        incbin df1:squelch2.con
  1928. squelch3d        incbin df1:squelch3.con
  1929. squelch4d        incbin df1:squelch4.con
  1930. squelch5d        incbin df1:squelch5.con
  1931. squelch6d        incbin df1:squelch6.con
  1932. takeoffd        incbin df1:TAKEOFF8.CON
  1933. twinkled        incbin df1:TWINKLE8.CON
  1934. whoopsd            incbin df1:whoops9k.CON
  1935. rabbitd            incbin df1:RABBIT16.con
  1936. footd            incbin df1:FOOTF17.CON
  1937.  
  1938.  
  1939.     end
  1940.  
  1941.  
  1942.  
  1943.  
  1944. ;______________________________________________________________________
  1945.  
  1946.  
  1947.  
  1948. ;-------
  1949.  
  1950.  
  1951.  
  1952.  
  1953. ;NICESH08.CON                4728 
  1954. ;NICESHOT.CON                9456 
  1955. ;NICESHO1.CON                6976 
  1956. ;GOODHIT1.CON                4500 
  1957. ;BULLSEY2.CON                5016 
  1958. ;BULLSEY1.CON                6090 
  1959. ;NICEL.CON                   6130 
  1960. ;STRIKEE1.CON               12336 
  1961. ;STRIKEE.CON                12336 
  1962. ;GUN1.CON                    2914 
  1963. ;WHEELS.CON                  1808 
  1964. ;BRAKESL.CON                 1130 
  1965. ;NOISEL.CON                  2380 
  1966. ;JETENG1.CON                 8952 
  1967. ;SKID.CON                    5176 
  1968. ;EXPLOSI8.CON                4882 
  1969. ;17 files - 211 blocks used
  1970.  
  1971.  
  1972.     ;            dc.w modon,1,1,8,8,6,6
  1973.     ;dc.w pbend,down,20,60000,1
  1974.     ;dc.w    c01,cr*32
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.