home *** CD-ROM | disk | FTP | other *** search
/ Dave Lowe: DPaint Amiga / Lowe_DPaintAmiga.adf / scfx.s < prev    next >
Encoding:
Text File  |  1978-10-13  |  39.7 KB  |  2,374 lines

  1.  
  2.  
  3. ; DEAR FLOPPY ELECTRONICS, THIS IS THE INGAME MUSIC AND
  4. ; FX DRIVER.THE MUSIC ONLY CONSISTS OF TRUMPET PARTS (Medieval of course
  5. ; 1 = CORONATION MUSIC./2 = FANFARE1./3 = FANFARE2)
  6. ; AS MEMORY WAS RATHER TIGHT,BECAUSE SOME OF THE FX SAMPLES
  7. ; NEEDED A REASONABLY HIGH SAMPLE RATE.
  8. ; THE RELEVENT PARTS OF THE DRIVER ARE ALL COMMENTED WHERE
  9. ; NEEDED,AND ALL REGISTERS ARE SAVED.JUST RUN THE MAIN SECTION
  10. ; OF THE DRIVER ON A 50hz INTERRUPT AND THEN CALL THE SET_UP
  11. ; ROUTINES ETC.WHERE NEEDED....see below.....
  12. ; TO TAKE OUT ANY FX NOT NEEDED JUST COMMENT OFF THE INCBIN
  13. ; AT THE END OF THE CODE.(Its easier than trying to configure
  14. ; the fx setup)
  15. ; I HAVE LEFT A TEST SECTION ON THE FRONT SO YOU CAN ASSEMBLE
  16. ; IT AS A STAND ALONE PROGRAM TO RUN THROUGH THE FX...AS ON
  17. ; THE DEMO...fxdemo..ON THE DISK.USE LEFT MOUSE BUTTON TO CYCLE
  18. ; THROUGH THEM. 
  19.  
  20. ; DONT HESITATE TO RING WITH ANY PROBLEMS OR IF SOME THING IS
  21. ; UNCLEAR AS ITS MUCH EASIER TO EXPLAIN ON THE PHONE.
  22.  
  23.  
  24. ;        DAVE LOWE.....0723  870648
  25.  
  26.  
  27. ;        **************************
  28.  
  29.  
  30.     section issA,code_c    ;must be in low memory for dma access
  31.                 ;DEVPAC PSEUDO OP ...
  32. a00  equ  508*2
  33. bb00  equ  480*2
  34. b00  equ  453*2
  35.  
  36. c01  equ  428*2
  37. db01  equ  404*2
  38. d01 equ  381*2
  39. eb01  equ  360*2
  40. e01  equ  339*2
  41. f01  equ  320*2
  42. gb01  equ  302*2
  43. g01  equ  285*2
  44. ab01 equ 269*2
  45. a01  equ  508
  46. bb01  equ  480
  47. b01  equ  453
  48.  
  49. c02  equ  428
  50. db02  equ  404
  51. d02  equ  381
  52. eb02  equ  360
  53. e02  equ  339
  54. f02  equ  320
  55. gb02  equ  302
  56. g02  equ  285
  57. ab02 equ 269
  58. a02  equ  254
  59. bb02  equ  240
  60. b02  equ  226
  61.  
  62. c03  equ  214
  63. db03  equ  202
  64. d03  equ  190
  65. eb03  equ  180
  66. e03  equ  170
  67. f03  equ  160
  68. gb03  equ  151
  69. g03  equ  143
  70. ab03 equ 135
  71. a03  equ  127
  72.  
  73. bb03  equ  480*2
  74. b03  equ  453*2
  75.  
  76. c04  equ  428*2
  77. db04  equ  404*2
  78. d04 equ  381*2
  79. eb04  equ  360*2
  80. e04  equ  339*2
  81. f04  equ  320*2
  82. gb04  equ  302*2
  83. g04  equ  285*2
  84. ab04 equ 269*2
  85. a04  equ  508
  86. bb04  equ  480
  87. b04  equ  453
  88.  
  89. c05  equ  428
  90. db05  equ  404
  91. d05  equ  381
  92. eb05  equ  360
  93. e05  equ  339
  94. f05  equ  320
  95. gb05  equ  302
  96. g05  equ  285
  97. ab05 equ 269
  98. a05  equ  254
  99. bb05  equ  240
  100. b05  equ  226
  101.  
  102. c06  equ  214
  103. db06  equ  202
  104. d06  equ  190
  105. eb06  equ  180
  106. e06  equ  170
  107. f06  equ  160
  108. gb06  equ  151
  109. g06  equ  143
  110. ab06 equ 135
  111. a06  equ  127
  112. bb06  equ  480*2
  113. b06  equ  453*2
  114.  
  115. c07  equ  428*2
  116. db07  equ  404*2
  117. d07 equ  381*2
  118. eb07  equ  360*2
  119. e07  equ  339*2
  120. f07  equ  320*2
  121. gb07  equ  302*2
  122. g07  equ  285*2
  123. ab07 equ 269*2
  124. a07  equ  508
  125. bb07  equ  480
  126. b07  equ  453
  127.  
  128. c08  equ  428
  129. db08  equ  404
  130. d08  equ  381
  131. eb08  equ  360
  132. e08  equ  339
  133. f08  equ  320
  134. gb08  equ  302
  135. g08  equ  285
  136. ab08 equ 269
  137. a08  equ  254
  138. bb08  equ  240
  139. b08  equ  226
  140.  
  141.  
  142. v equ 0
  143. a00x  equ  508*2+v
  144. bb00x  equ  480*2+v
  145. b00x  equ  453*2+v
  146.  
  147.  
  148. c01x  equ  428*2+v
  149. db01x  equ  404*2+v
  150. d01x equ  381*2+v
  151. eb01x  equ  360*2+v
  152. e01x  equ  339*2+v
  153. f01x  equ  320*2+v
  154. gb01x  equ  302*2+v
  155. g01x  equ  285*2+v
  156. ab01x equ 269*2+v
  157. a01x  equ  508+v
  158.  
  159. bb01x  equ  480+v
  160. b01x  equ  453+v
  161.  
  162. c02x  equ  428+v
  163. db02x  equ  404+v
  164. d02x  equ  381+v
  165. eb02x  equ  360+v
  166. e02x  equ  339+v
  167. f02x  equ  320+v
  168. gb02x  equ  302+v
  169. g02x  equ  285+v
  170. ab02x equ 269+v
  171. a02x  equ  254+v
  172. bb02x  equ  240+v
  173. b02x  equ  226+v
  174.  
  175. c03x  equ  214+v
  176. db03x  equ  202+v
  177. d03x  equ  190+v
  178. eb03x  equ  180+v
  179. e03x  equ  170+v
  180. f03x  equ  160+v
  181. gb03x  equ  151+v
  182. g03x  equ  143+v
  183. ab03x equ 135
  184. a03x  equ  127+v
  185. bb03x  equ  480*2+v
  186. b03x  equ  453*2+v
  187.  
  188. c04x  equ  428*2+v
  189. db04x  equ  404*2+v
  190. d04x equ  381*2+v
  191. eb04x  equ  360*2+v
  192. e04x  equ  339*2+v
  193. f04x  equ  320*2+v
  194. gb04x  equ  302*2+v
  195. g04x  equ  285*2+v
  196. ab04x equ 269*2+v
  197. a04x  equ  508+v
  198. bb04x  equ  480+v
  199. b04x  equ  453+v
  200.  
  201. c05x  equ  428+v
  202. db05x  equ  404+v
  203. d05x  equ  381+v
  204. eb05x  equ  360+v
  205. e05x  equ  339+v
  206. f05x  equ  320+v
  207. gb05x  equ  302+v
  208. g05x  equ  285+v
  209. ab05x equ 269+v
  210. a05x  equ  254+v
  211. bb05x  equ  240+v
  212. b05x  equ  226+v
  213.  
  214. c06x  equ  214+v
  215. db06x  equ  202+v
  216. d06x  equ  190+v
  217. eb06x  equ  180+v
  218. e06x  equ  170+v
  219. f06x  equ  160+v
  220. gb06x  equ  151+v
  221. g06x  equ  143+v
  222. ab06x equ 135
  223. a06x  equ  127+v
  224. bb06x  equ  480*2+v
  225. b06x  equ  453*2+v
  226.  
  227. c07x  equ  428*2+v
  228. db07x  equ  404*2+v
  229. d07x equ  381*2+v
  230. eb07x  equ  360*2+v
  231. e07x  equ  339*2+v
  232. f07x  equ  320*2+v
  233. gb07x  equ  302*2+v
  234. g07x  equ  285*2+v
  235. ab07x equ 269*2+v
  236. a07x  equ  508+v
  237. bb07x  equ  480+v
  238. b07x  equ  453+v
  239.  
  240. c08x  equ  428+v
  241. db08x  equ  404+v
  242. d08x  equ  381+v
  243. eb08x  equ  360+v
  244. e08x  equ  339+v
  245. f08x  equ  320+v
  246. gb08x  equ  302+v
  247. g08x  equ  285+v
  248. ab08x equ 269+v
  249. a08x  equ  254+v
  250. bb08x  equ  240+v
  251. b08x  equ  226+v
  252.  
  253. no_loop equ 0
  254. loop equ 0
  255. chann1reg   equ $dff0a0    
  256. chann2reg   equ $dff0b0
  257. chann3reg   equ $dff0c0
  258. chann4reg   equ $dff0d0
  259. dmacon     equ $dff096
  260. int_bf_int   equ   $dff01e
  261. int_bf_w    equ   $dff09a
  262. vhposr     equ   $dff006
  263. in_line    equ   0
  264. new_snd    equ   4
  265. end_song     equ   1
  266. end_patt    equ   8
  267. new_env    equ   12
  268. pbend     equ   16
  269.  
  270.  
  271.  
  272. cr  equ   16
  273. q equ cr/2
  274. sq equ q/2
  275. dsq equ sq/2
  276. m  equ cr*2
  277. sb equ cr*4
  278. dcr equ cr+q
  279. dq  equ q+sq
  280. r14 equ 264
  281. dm  equ m+cr
  282. tcr1      equ    11        ;;;;13
  283. tcr2    equ    10        ;;;;14
  284. tq1 equ     5         ;;;;7
  285. tq2 equ     6        ;;;;6
  286. tsq1 equ     3        ;;;;3 
  287. tsq2 equ     2        ;;;;4
  288. dsb equ sb+m
  289.  
  290.  
  291.  
  292. hi: equ 223
  293. lo:  equ 446
  294.  
  295. r22    equ 134
  296. r20    equ 143
  297. r19    equ 150
  298. r18    equ 178
  299. r17    equ 200
  300. r16:    equ 222
  301. r15:    equ 249
  302. r13:    equ 305
  303. r12:    equ 333
  304. r11:    equ 361
  305. r10:    equ 389
  306. r9:    equ 419
  307. r8:    equ 446
  308. r7:    equ 446+112
  309. r6:    equ 446+223
  310. r5:    equ 446+223+112
  311. r4:    equ 446*2
  312. r3:    equ 446*3
  313. r2:    equ 446*4
  314. r1:    equ 446*8
  315.  
  316.  
  317. filter: equ $bfe001
  318. filter_on equ 44
  319. filter_off equ 48
  320.  
  321. modon     equ   20
  322. pboff     equ   24
  323. modoff     equ   28
  324. rest     equ 32
  325. end_fxp  equ 36
  326. end_fx3  equ 36
  327. end_fx4  equ 40
  328. acc    equ 52
  329. repeat    equ 56
  330. down      equ   1
  331. up       equ   2
  332.  
  333.  
  334.  
  335.  
  336.  
  337. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  338.  
  339.  
  340.  
  341.  ;    THIS IS THE CONTROL SECTION FOR TESTING ANED CAN BE DELETED
  342.     ;        WHEN NOT REQUIRED
  343.  
  344.  
  345.     jsr select_new_song
  346.  
  347. testloop:
  348.     jsr delay    ;wait for scan line  at 50hz on pal
  349.  
  350.     jsr driver
  351.  
  352.         bra testloop
  353.  
  354.  
  355. delay:
  356.     tst.w fxtimer
  357.     bne no_test
  358.     clr.l d0
  359.     move.b $bfe001,d0
  360.     btst #6,d0
  361.     bne no_test1
  362.     move.w #10,fxtimer
  363.     bra testfx4
  364. no_test
  365.     subq #1,fxtimer
  366. no_test1
  367.     clr.l d0
  368.         move.w vhposr,d0
  369.         andi.w #%1111111100000000,d0
  370.         cmpi.w #%1111111100000000,d0
  371.  
  372.     bne no_test1
  373.     rts
  374.  
  375. testfx4:  
  376.  
  377.     clr.l d0
  378.     move.b $bfe001,d0
  379.     btst #6,d0
  380.     beq testfx4
  381.  
  382.  
  383.     move.l song_buffer,d0
  384.     add.l #1,d0
  385.     cmp.l #4,d0
  386.     bne no_s
  387.     move.l #1,d0
  388. no_s    move.l d0,song_buffer
  389.     jsr select_new_song
  390.  
  391.  
  392.  
  393.  
  394.  
  395.     move.l fx_last,d0
  396.     cmp.l #max_fx,d0
  397.     ;beq no_k
  398.     ;bcs no_k
  399.     move.l d0,fx_kill
  400.  
  401.     jsr kill_loopfx
  402.     ;move.w #1,music_disable
  403.     ;jsr kill_chip
  404.  
  405.  
  406. no_k
  407.         move.l fx_no,fx_number
  408.     move.l fx_no,fx_last
  409.     addq.l #1,fx_no
  410.     move.l    max_fx,d0
  411.         cmp.l fx_no,d0
  412.     bne noreset
  413.     move.l #1,fx_no    
  414. noreset: 
  415.     jsr set_up_fx
  416.     bra no_test    
  417.  
  418. fxtc:          dc.w 10
  419. fx_no:         dc.l  1
  420. fx_last        dc.l  0
  421.  
  422.  
  423. ;        END OF CONTROL (DELETABLE) SECTION
  424.  
  425. ;    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  426.  
  427. ;    MAIN VARIABLES TO BE ACCESSED BY PROGRAMMER DURING RUNTIME
  428.  
  429.  
  430. fx_number:     dc.l 0 ;     number of fx required here...see list
  431. fx_kill        dc.l 0 ;     number of fx to kill/only needed for looped fx
  432.  
  433. song_buffer     dc.l 1 ;     number of piece of music required here ie.1 to 3
  434.  
  435.  
  436. music_disable:  dc.w 1 ;     1 = disable music
  437. fx_disable:     dc.w 0 ;     1 = disable fx
  438.  
  439. ;    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  440.  
  441. ;  THESE VARIABLES ARE USED INTERNALLY BY THE DRIVER
  442. fxr1         dc.l 0  
  443. fxr2         dc.l 0  
  444. fxr3         dc.l 0  
  445. fxr4         dc.l 0  
  446. fxc1        dc.l 0
  447. fxc2          dc.l 0
  448. fxc3        dc.l 0
  449. fxc4          dc.l 0
  450. fx1_flag    dc.w 0
  451. fx2_flag    dc.w 0
  452. fx3_flag    dc.w 0
  453. fx4_flag    dc.w 0
  454. fxtimer        dc.w 0
  455. gen        dc.w 0
  456. int_disable    dc.w 0
  457. altpf         dc.w 0
  458. ;  *******************************************************
  459.  
  460. ;  CALL THIS SUBROUTINE TO SET UP THE REQIURED FX
  461. ;  on entry it requires the fx number to be in "fx_number"(see above)
  462. ;  
  463.  
  464. set_up_fx
  465.     movem.l d5/a2,-(a7)    ;save used registers
  466.     tst.l fxc4
  467.     bne check3
  468. use4:    
  469.     move.w #%0000000000001000,d5
  470.     lea chann4reg,a2
  471.     jsr end_fx4p
  472.     move.l fx_number,fxr4
  473.     move.l fx_number,fxc4
  474.     move.l #0,fx_number
  475.     bra no_fx
  476. check3:    tst.l fxc3
  477.     bne check2
  478. use3:
  479.     move.w #%0000000000000100,d5
  480.     lea chann3reg,a2
  481.     jsr end_fx3p
  482.     move.l fx_number,fxr3
  483.     move.l fx_number,fxc3
  484.     move.l #0,fx_number
  485.     bra no_fx
  486. check2:    tst.l fxc2
  487.     bne check1
  488. use2:
  489.     move.w #%0000000000000010,d5
  490.     lea chann2reg,a2
  491.     jsr end_fx2p
  492.     move.l fx_number,fxr2
  493.     move.l fx_number,fxc2
  494.     move.l #0,fx_number
  495.     bra no_fx
  496. check1:    tst.l fxc1
  497.     bne use4
  498. use1:
  499.     move.w #%0000000000000001,d5
  500.     lea chann1reg,a2
  501.     jsr end_fx1p
  502.     move.l fx_number,fxr1
  503.     move.l fx_number,fxc1
  504.     move.l #0,fx_number
  505. no_fx
  506.     movem.l (a7)+,d5/a2    ;restore registers
  507.     rts
  508.  
  509. ;*************************************************
  510. ;          CALL HERE TO KILL ANY LOOPED FX...
  511. ;       after putting the number of the fx you want to kill
  512. ;            into fx_kill
  513.  
  514. kill_loopfx
  515.  
  516.     movem.l d5/a2,-(a7)    ;save used registers
  517.     move.l fx_kill,d5
  518.     cmp.l fxc1,d5
  519.     bne k2
  520.     move.w #%0000000000000001,d5
  521.     lea chann1reg,a2
  522.     jsr end_fx1p
  523.     bra error
  524. k2    cmp.l fxc2,d5
  525.     bne k3
  526.     move.w #%0000000000000010,d5
  527.     lea chann2reg,a2
  528.     jsr end_fx2p
  529.     bra error
  530. k3    cmp.l fxc3,d5
  531.     bne k4
  532.     move.w #%0000000000000100,d5
  533.     lea chann3reg,a2
  534.     jsr end_fx3p
  535.     bra error
  536. k4    cmp.l fxc4,d5
  537.     bne error
  538.     move.w #%0000000000001000,d5
  539.     lea chann2reg,a2
  540.     jsr end_fx4p
  541. error
  542.     clr.l fx_kill
  543.     movem.l (a7)+,d5/a2    ;restore registers
  544.     rts
  545. ;*************************************************
  546.  
  547.     ; CALL HERE TO KILL ANY SOUND for whatever reason
  548.  
  549. kill_chip:
  550.  
  551.     move.w #%0000000000001111,dmacon
  552.     move.l rest_data,chann1reg
  553.     move.l rest_data,chann2reg
  554.     move.l rest_data,chann3reg
  555.     move.l rest_data,chann4reg
  556.     move.w #16,chann1reg+4    
  557.     move.w #16,chann2reg+4    
  558.     move.w #16,chann3reg+4    
  559.     move.w #16,chann4reg+4    
  560.     move.w #0,chann1reg+8
  561.     move.w #0,chann2reg+8
  562.     move.w #0,chann3reg+8
  563.     move.w #0,chann4reg+8
  564.     move.w #1,chann1reg+6
  565.     move.w #1,chann2reg+6
  566.     move.w #1,chann3reg+6
  567.     move.w #1,chann4reg+6
  568.     move.l #0,fxr1
  569.     move.l #0,fxr2
  570.     move.l #0,fxr3
  571.     move.l #0,fxr4
  572.     move.w #0,fx1_flag
  573.     move.w #0,fx2_flag
  574.     move.w #0,fx3_flag
  575.     move.w #0,fx4_flag
  576.     move.l #0,fxc1
  577.     move.l #0,fxc2
  578.     move.l #0,fxc3
  579.     move.l #0,fxc4
  580.     rts
  581. ;****************************************
  582.  
  583. ;  CALL HERE TO SELECT WHICH PIECE OF MUSIC TO PLAY
  584. ;  AFTER PLACING NUMBER (1 to 3) IN "SONG_BUFFER"..see above
  585. ;  a call to this routine will initiliase the driver/kill any sound etc.      
  586. ;  make sure this routine has been called before running the interrupt
  587. ;  driven section....see below
  588.  
  589. select_new_song:
  590.  
  591.     move.w #1,int_disable
  592.     movem.l d0/d1/a0/a1,-(a7)    ;save used registers
  593.     move.w music_disable,gen
  594.     move.w #1,music_disable
  595.         jsr kill_chip           
  596.     clr.l d0
  597.         move.w #204,d0
  598.         lea gvars,a0
  599. clloop: clr.w (a0)+        
  600.         dbra  d0,clloop
  601.     tst.l song_buffer
  602.     beq no_song
  603.         move.l song_buffer,d1
  604.     add.l d1,d1
  605.      add.l d1,d1
  606.      add.l d1,d1
  607.      add.l d1,d1
  608.         LEA  SONG_TABLE-16,A1
  609.         add.l d1,a1      
  610.         MOVE.L (A1)+,WSONG1    
  611.         move.l (a1)+,wsong2    
  612.         move.l (a1)+,wsong3
  613.     move.l (a1),wsong4
  614.         MOVE.L #pstart,PATTR1
  615.         MOVE.L #pstart,PATTR2
  616.         MOVE.L #pstart,PATTR3
  617.     move.l #pstart,pattr4
  618.         move.l #sstart,songr1
  619.         MOVE.L #sstart,SONGR2
  620.         MOVE.L #sstart,SONGR3
  621.     move.l #sstart,songr4
  622. no_song
  623.     move.w #1,ch1vars
  624.     move.w #2,ch2vars
  625.     move.w #3,ch3vars
  626.     move.w #4,ch4vars
  627.     move.w #6,ch4fxvars
  628.     move.w #5,ch3fxvars
  629.     move.w #7,ch2fxvars
  630.     move.w #8,ch1fxvars
  631.     move.w gen,music_disable
  632.     clr.w int_disable
  633.     movem.l (a7)+,d0/d1/a0/a1    ;restore registers
  634.         rts
  635.  
  636. ;**************************************************
  637.  
  638. ;  CALL HERE ON A 50hz INTERRUPT DURING RUNTIME
  639. ;  TO PLAY FX AND TUNES
  640.  
  641. driver:  
  642.     tst.w int_disable
  643.     beq process_data
  644.     rts        
  645. process_data
  646.     movem.l d0-d6/a0-a6,-(a7)    ;save used registers
  647.  
  648.  
  649. ch1:
  650.     tst.w fx_disable
  651.     bne test_music1
  652.     tst.l fxr1
  653.     bne   ch1j1
  654.     tst.l fxc1
  655.     beq test_music1
  656.     bra ch1j3
  657. ch1j2    jsr run_dummy1
  658.     jsr run_fx1
  659.     bra ch2
  660. ch1j1
  661.     jsr set_up1
  662. ch1j3    tst.w music_disable    
  663.     beq ch1j2
  664.     jsr run_fx1
  665.     bra ch2
  666. test_music1
  667.     tst.w music_disable
  668.     bne ch2
  669.     jsr run_music1
  670.     bra ch2
  671.     ;***********************
  672.  
  673.     ; channel 1 subroutines
  674.  
  675. run_dummy1    
  676.      lea ch1vars,a0
  677.      lea dummy_reg,a2 
  678.      move.w #0,d5 
  679.      jsr sect1    
  680.     rts
  681.  
  682. set_up1    
  683.          move.l fxr1,d0
  684.          add d0,d0
  685.          add d0,d0
  686.          lea  fxjump_table-4,A1
  687.      add.l d0,a1
  688.          move.l (a1),currfx1
  689.       clr.l fxr1
  690.      clr.w fxintc1
  691.       rts
  692.   
  693.      
  694. run_fx1
  695.     lea ch1fxvars,a0
  696.        lea chann1reg,a2
  697.       move.w #%0000000000000001,d5 
  698.      move.w #%1000001000000001,d1 
  699.      jsr sect1
  700.     rts
  701.  
  702. run_music1
  703.     lea ch1vars,a0
  704.        lea chann1reg,a2
  705.       move.w #%0000000000000001,d5 
  706.       move.w #%1000001000000001,d1 
  707.       jsr sect1     
  708.     rts
  709.  
  710.     ;  **************************
  711.  
  712. ch2
  713.     tst.w fx_disable
  714.     bne test_music2
  715.     tst.l fxr2
  716.     bne   ch2j1
  717.     tst.l fxc2
  718.     beq test_music2
  719.     bra ch2j3
  720. ch2j2    jsr run_dummy2
  721.     jsr run_fx2
  722.     bra ch3
  723. ch2j1
  724.     jsr set_up2
  725. ch2j3    tst.w music_disable    
  726.     beq ch2j2
  727.     jsr run_fx2
  728.     bra ch3
  729.  
  730. test_music2
  731.     tst.w music_disable
  732.     bne ch3
  733.     jsr run_music2
  734.     bra ch3
  735.  
  736.     ;***********************
  737.  
  738.     ; channel 2 subroutines
  739.  
  740. run_dummy2    
  741.      lea ch2vars,a0
  742.      lea dummy_reg,a2 
  743.      move.w #0,d5 
  744.      jsr sect1    
  745.     rts
  746.  
  747. set_up2    
  748.          move.l fxr2,d0
  749.          add d0,d0
  750.          add d0,d0
  751.          lea  fxjump_table-4,A1
  752.      add.l d0,a1
  753.          move.l (a1),currfx2
  754.       clr.l fxr2
  755.      clr.w fxintc2
  756.       rts
  757.   
  758.      
  759. run_fx2
  760.     lea ch2fxvars,a0
  761.        lea chann2reg,a2
  762.       move.w #%0000000000000010,d5 
  763.      move.w #%1000001000000010,d1 
  764.      jsr sect1
  765.     rts
  766.  
  767. run_music2
  768.     lea ch2vars,a0
  769.        lea chann2reg,a2
  770.       move.w #%0000000000000010,d5 
  771.       move.w #%1000001000000010,d1 
  772.       jsr sect1     
  773.     rts
  774.  
  775.     ;  **************************
  776.  
  777. ch3:
  778.     tst.w fx_disable
  779.     bne test_music3
  780.     tst.l fxr3
  781.     bne   ch3j1
  782.     tst.l fxc3
  783.     beq test_music3
  784.     bra ch3j3
  785. ch3j2    jsr run_dummy3
  786.     jsr run_fx3
  787.     bra ch4
  788. ch3j1
  789.     jsr set_up3
  790. ch3j3    tst.w music_disable    
  791.     beq ch3j2
  792.     jsr run_fx3
  793.     bra ch4
  794.  
  795. test_music3
  796.     tst.w music_disable
  797.     bne ch4
  798.     jsr run_music3
  799.     bra ch4
  800.  
  801.     ;***********************
  802.  
  803.     ; channel 3 subroutines
  804.  
  805. run_dummy3    
  806.      lea ch3vars,a0
  807.      lea dummy_reg,a2 
  808.      move.w #0,d5 
  809.      jsr sect1    
  810.     rts
  811.  
  812. set_up3    
  813.          move.l fxr3,d0
  814.          add d0,d0
  815.          add d0,d0
  816.          lea  fxjump_table-4,A1
  817.      add.l d0,a1
  818.          move.l (a1),currfx3
  819.       clr.l fxr3
  820.      clr.w fxintc3
  821.       rts
  822.   
  823.      
  824. run_fx3
  825.     lea ch3fxvars,a0
  826.        lea chann3reg,a2
  827.       move.w #%0000000000000100,d5 
  828.      move.w #%1000001000000100,d1 
  829.      jsr sect1
  830.     rts
  831.  
  832. run_music3
  833.     lea ch3vars,a0
  834.        lea chann3reg,a2
  835.       move.w #%0000000000000100,d5 
  836.       move.w #%1000001000000100,d1 
  837.       jsr sect1     
  838.     rts
  839.  
  840.     ;  **************************
  841.  
  842.  
  843.  
  844. ch4:
  845.     tst.w fx_disable
  846.     bne test_music4
  847.     tst.l fxr4
  848.     bne   ch4j1
  849.     tst.l fxc4
  850.     beq test_music4
  851.     bra ch4j3
  852. ch4j2    jsr run_dummy4
  853.     jsr run_fx4
  854.     bra no4
  855. ch4j1
  856.     jsr set_up4
  857. ch4j3    tst.w music_disable    
  858.     beq ch4j2
  859.     jsr run_fx4
  860.     bra no4
  861.  
  862. test_music4
  863.     tst.w music_disable
  864.     bne no4
  865.     jsr run_music4
  866. no4    
  867.     movem.l (a7)+,d0-d6/a0-a6    ;restore registers
  868.     rts
  869.  
  870.     ;***********************
  871.  
  872.     ; channel 4 subroutines
  873.  
  874. run_dummy4    
  875.      lea ch4vars,a0
  876.      lea dummy_reg,a2 
  877.      move.w #0,d5 
  878.      jsr sect1    
  879.     rts
  880.  
  881. set_up4    
  882.          move.l fxr4,d0
  883.          add d0,d0
  884.          add d0,d0
  885.          lea  fxjump_table-4,A1
  886.      add.l d0,a1
  887.          move.l (a1),currfx4
  888.       clr.l fxr4
  889.      clr.w fxintc4
  890.       rts
  891.   
  892.      
  893. run_fx4
  894.     lea ch4fxvars,a0
  895.        lea chann4reg,a2
  896.       move.w #%0000000000001000,d5 
  897.      move.w #%1000001000001000,d1 
  898.      jsr sect1
  899.     rts
  900.  
  901. run_music4
  902.     lea ch4vars,a0
  903.        lea chann4reg,a2
  904.       move.w #%0000000000001000,d5 
  905.       move.w #%1000001000001000,d1 
  906.       jsr sect1     
  907.     rts
  908.     ;  **************************
  909.  
  910. sect1: tst.w 0(a0)
  911.     bne s1j1
  912.     rts
  913.  
  914. s1j1:    tst.w 2(a0)
  915.         beq sect3       
  916.         cmpi.w #1,2(a0)
  917.         beq sect4
  918.  
  919.         cmpi.w #3,4(a0)    
  920.         beq part2       
  921.     
  922. mode_switch:  subq.w #1,2(a0)     
  923.  
  924. check_effects: clr.w altpf      
  925.         move.w 6(a0),d2    
  926.         tst.w 8(a0)      
  927.         beq check_mod
  928.         tst.w 14(a0)      
  929.         beq cont_bend
  930.         subq.w #1,14(a0)
  931.         bra check_mod
  932. cont_bend:   addq.w #1,altpf    
  933.         move.w 10(a0),d3    
  934.         move.w 12(a0),d4    
  935.         cmpi.w #1,8(a0)
  936.         beq pbup
  937.     
  938.         sub.w d3,d2
  939.         cmp.w d2,d4
  940.         bcs check_mod
  941.         bra fbend
  942.  
  943. pbup:     add.w d3,d2
  944.         cmp.w d2,d4
  945.         bcc check_mod
  946. fbend:     move.w d4,d2
  947.         clr.w 8(a0)      
  948. check_mod:   tst.w 16(a0)
  949.         beq send_alt_pitch
  950.    
  951.  
  952.     tst.w  58(a0)
  953.     beq st_ok
  954.     subq.w #1,58(a0)
  955.     bra send_alt_pitch
  956. st_ok:
  957.         tst.w 50(a0)
  958.         beq cont_mod
  959.         subq #1,50(a0)
  960.         bra send_alt_pitch
  961. cont_mod:    move.w 52(a0),50(a0)  
  962.         addq #1,altpf
  963.         cmpi #3,16(a0)
  964.         bcc addmod
  965.     
  966.         move.w 56(a0),d3 
  967.         sub.w d3,d2
  968.         addq.w #1,16(a0)  
  969.         bra send_alt_pitch
  970. addmod:
  971.  
  972.         move.w 54(a0),d3 
  973.         add.w d3,d2
  974.         addq.w #1,16(a0)
  975.         cmpi.w #5,16(a0)
  976.        bne send_alt_pitch
  977.         move.w #1,16(a0)  
  978.  
  979. send_alt_pitch: tst.w altpf
  980.         beq send_env
  981.         move.w d2,6(a0)  
  982.         move.w d2,6(a2)  
  983.  
  984. send_env: 
  985.  
  986.     cmpi #6,(a0)
  987.     beq norm_env    
  988.     cmpi #5,(a0)
  989.     bne do_env_check
  990.  
  991.     tst.w fx4_flag
  992.     beq norm_env
  993.     bra low_vol
  994.  
  995. do_env_check:
  996.     move.w fx3_flag,d0
  997.     or.w fx4_flag,d0
  998.     cmpi.w  #0,d0
  999.     beq norm_env
  1000. low_vol:    
  1001.     move.l 18(a0),a1    
  1002.         cmpi.w #255,(a1)
  1003.         beq evj1
  1004.     move.w (a1)+,d0
  1005. evj2:    sub.w  62(a0),d0
  1006.     bcc no_over
  1007.     move.w 0,d0
  1008. no_over:
  1009.         move.w d0,8(a2) 
  1010.     bra fint        
  1011.  
  1012. evj1:   subq.l #2,a1
  1013.     move.w (a1)+,d0
  1014.     bra evj2
  1015.  
  1016. norm_env:
  1017.     move.l 18(a0),a1    
  1018.         cmpi.w #255,(a1)
  1019.         beq env_finished
  1020.     cmpi.w #1,66(a0)    
  1021.     bne    no_acc 
  1022.  
  1023.     clr.l d0
  1024.     move.w (a1)+,d0
  1025.     add.w 64(a0),d0    
  1026.     move.w d0,8(a2)    
  1027.     move.l a1,18(a0)
  1028.     rts        
  1029.  
  1030. no_acc:
  1031. resu:   move.w (a1)+,8(a2)   
  1032. fint:   move.l a1,18(a0)    
  1033.     rts
  1034.  
  1035. env_finished:
  1036.      subq.l #2,a1    
  1037.      bra resu
  1038.  
  1039.  
  1040. one_shot_note: move.w #3,4(a0)     
  1041.         move.l 38(a0),(a2)
  1042.         move.w 42(a0),4(a2)
  1043.         move.w d1,dmacon     
  1044.         bra send_env
  1045.  
  1046.  
  1047. part2:                         
  1048.         move.l 44(a0),(a2)
  1049.         move.w 48(a0),4(a2)
  1050.         subq.w #1,2(a0)      
  1051.         move.w #1,4(a0)
  1052.         bra check_effects
  1053.  
  1054. sect3:
  1055.     move.w 0,66(a0)    
  1056.  
  1057.     move.l 22(a0),a1  
  1058. control_ret: move.w (a1)+,d0  
  1059.     cmpi.w #100,d0   
  1060.     bls sect5   
  1061.   
  1062. acc_note:
  1063.     move.w d0,6(a0)  
  1064.     move.w d0,6(a2)  
  1065.     move.w (a1)+,2(a0) 
  1066.     subq.w #1,2(a0)  
  1067.     move.l a1,22(a0)  
  1068.     move.l 34(a0),18(a0) 
  1069.     move.w 60(a0),58(a0) 
  1070.  
  1071.  
  1072.     tst.w 16(a0)
  1073.     beq no_mod_res
  1074.     move.w #1,16(a0)
  1075. no_mod_res:
  1076.     cmpi.w #0,4(a0)
  1077.     beq do_loop
  1078.     bra one_shot_note    
  1079.  
  1080.  
  1081. do_loop:    move.w d1,dmacon   
  1082.         bra send_env
  1083.  
  1084. do_rest:
  1085.     move.w (a1)+,2(a0) 
  1086.     subq.w #1,2(a0)  
  1087.     move.l a1,22(a0)  
  1088.     move.l  #rest_env,18(a0)
  1089.  
  1090.         move.w #0,8(a2)
  1091.         bra send_env
  1092.    
  1093. sect4:
  1094.         cmpi.w #0,4(a0)
  1095.         beq noof
  1096.         move.w d5,dmacon   
  1097. noof:     subq.w #1,2(a0)
  1098.         bra check_effects
  1099.    
  1100. sect5:     move.l #jump_table,a3
  1101.         move.l (a3,d0),a4
  1102.         jmp (a4)
  1103.  
  1104. jump_table: 
  1105.     dc.l  in_line_data
  1106.         dc.l  nsound
  1107.         dc.l  patt_end
  1108.         dc.l  get_env
  1109.         dc.l  check_pbend
  1110.         dc.l  do_mod
  1111.         dc.l  bend_off
  1112.         dc.l  mod_off
  1113.         dc.l  do_rest
  1114.         dc.l  end_fx
  1115.         dc.l  end_fx
  1116.     dc.l  s_f_on
  1117.     dc.l  s_f_off
  1118.     dc.l  set_acc
  1119.     dc.l  rept
  1120.  
  1121. in_line_data:
  1122.  
  1123.         nop
  1124.         rts
  1125.  
  1126. rept:
  1127.     move.l (a1),a1
  1128.     bra control_ret
  1129.  
  1130. s_f_on: 
  1131.     bclr #1,filter
  1132.     bra control_ret
  1133. s_f_off:
  1134.     bset #1,filter
  1135.     bra control_ret
  1136.  
  1137. nsound:    move.l (a1)+,a3     
  1138.         cmpi.w #0,(a3)
  1139.         bne one_shot_sound
  1140.         move.w (a3)+,4(a0)    
  1141.         move.l (a3)+,(a2)     
  1142.         move.w (a3),4(a2)    
  1143.         jmp control_ret
  1144.  
  1145. one_shot_sound:
  1146.         move.w (a3)+,4(a0)
  1147.         move.l (a3)+,38(a0)   
  1148.         move.l (a3)+,42(a0)
  1149.         move.l (a3),46(a0)
  1150.         jmp control_ret
  1151.  
  1152. patt_end:
  1153.  
  1154.         move.l 26(a0),a1    
  1155.         cmpi.l #0,(a1)     
  1156.         beq song_control
  1157.         addq.l #4,26(a0)    
  1158.         move.l (a1),a1     
  1159.         jmp control_ret
  1160. get_env: 
  1161.        move.l (a1)+,a4 
  1162.     move.l (a4)+,62(a0)    
  1163.     
  1164.     move.l  a4,34(a0)    
  1165.     
  1166.         bra control_ret
  1167.  
  1168. check_pbend:
  1169.      move.l (a1)+,8(a0)
  1170.         move.l (a1)+,12(a0)
  1171.         bra control_ret
  1172.  
  1173. do_mod:    move.w #1,16(a0)  
  1174.         move.l (a1)+,50(a0)
  1175.         move.l (a1)+,54(a0)
  1176.         move.l (a1)+,58(a0)
  1177.         bra control_ret
  1178.  
  1179. bend_off:   clr.w 8(a0)
  1180.         bra control_ret
  1181.  
  1182. mod_off:    clr.w 16(a0)
  1183.         bra control_ret
  1184.  
  1185.  
  1186. end_fx:    
  1187.     cmpi.w #6,(a0)
  1188.     beq end_fx4p
  1189.     cmpi.w #5,(a0)
  1190.     beq end_fx3p
  1191.     cmpi.w #7,(a0)
  1192.     beq end_fx2p
  1193.  
  1194. end_fx1p:
  1195.         move.w d5,dmacon   
  1196.     move.w  #1,chann1reg+6
  1197.     move.w #0,8(a2)
  1198.     move.l #0,fxc1
  1199.     rts
  1200.  
  1201. end_fx2p:
  1202.     move.w d5,dmacon 
  1203.     move.w  #1,chann2reg+6
  1204.         move.w #0,8(a2) 
  1205.     move.l #0,fxc2
  1206.         rts
  1207.  
  1208.  
  1209. end_fx3p:
  1210.         move.w d5,dmacon   
  1211.     move.w  #1,chann3reg+6
  1212.     move.w #0,8(a2)
  1213.     move.l #0,fxc3
  1214.     rts
  1215.  
  1216. end_fx4p:
  1217.     move.w d5,dmacon 
  1218.     move.w  #1,chann4reg+6
  1219.         move.w #0,8(a2) 
  1220.     move.l #0,fxc4
  1221.         rts
  1222.  
  1223. set_acc: move.w #1,66(a0) 
  1224.     bra control_ret
  1225.  
  1226. song_control:
  1227.         addq.l #4,a1
  1228.         move.l 30(a0),26(a0)
  1229.         move.l 26(a0),a1
  1230.         addq.l #4,26(a0)
  1231.         move.l (a1),a1
  1232.         jmp control_ret
  1233.  
  1234.  
  1235.     ;"""""""""""""""""""""""""""""""""""""""""""""""""
  1236.  
  1237.     ;;; DATA
  1238.  
  1239. song_table:
  1240.               dc.l s1,s2,s3,s4
  1241.           dc.l s5,s6,s7,s8
  1242.           dc.l s9,s10,s11,s12
  1243.  
  1244. ;************************************************************
  1245. gvars:
  1246. ch1vars     
  1247.     dc.w 0     
  1248.         dc.w 0,0,0,0,0,0,0,0,0,0     
  1249. pattr1: dc.l 0    
  1250. songr1: dc.l 0    
  1251. wsong1: dc.l 0   
  1252.         dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0   
  1253.  
  1254. ch2vars     
  1255.     dc.w 0     
  1256.         dc.w 0,0,0,0,0,0,0,0,0,0     
  1257. pattr2: dc.l 0    
  1258. songr2: dc.l 0    
  1259. wsong2: dc.l 0    
  1260.         dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0   
  1261.  
  1262. ch3vars 
  1263.     dc.w 0     
  1264.         dc.w 0,0,0,0,0,0,0,0,0,0     
  1265. pattr3: dc.l 0    
  1266. songr3: dc.l 0    
  1267. wsong3: dc.l 0    
  1268.         dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0   
  1269.  
  1270. ch4vars 
  1271.     dc.w 0     
  1272.         dc.w 0,0,0,0,0,0,0,0,0,0     
  1273. pattr4: dc.l 0    
  1274. songr4: dc.l 0    
  1275. wsong4: dc.l 0    
  1276.         dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0   
  1277.  
  1278.  
  1279. ch1fxvars 
  1280.     dc.w 0     
  1281. fxintc1:
  1282.     dc.w 0,0,0,0,0,0,0,0,0,0     
  1283. currfx1:
  1284.     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    
  1285.  
  1286. ch2fxvars 
  1287.     dc.w 0     
  1288. fxintc2:
  1289.     dc.w 0,0,0,0,0,0,0,0,0,0     
  1290. currfx2:
  1291.     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    
  1292.  
  1293.  
  1294. ch3fxvars
  1295.     dc.w 0     
  1296. fxintc3:
  1297.     dc.w 0,0,0,0,0,0,0,0,0,0     
  1298. currfx3:
  1299.     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    
  1300.  
  1301. ch4fxvars 
  1302.     dc.w 0     
  1303. fxintc4:
  1304.     dc.w 0,0,0,0,0,0,0,0,0,0     
  1305. currfx4:
  1306.     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    
  1307. ;************************************************************
  1308.  
  1309. dummy_reg dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1310.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1311.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1312.         dc.l  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1313. ;************************************************************
  1314.  
  1315. ;       fx patterns here
  1316.  
  1317. fxjump_table:   
  1318. ; dc.l fxp1
  1319.  dc.l fxp1a    ; crash
  1320.  dc.l fxp2    ; clang
  1321.  dc.l fxp3    ; squeak for mouse dying ( we actually sampled the office cat
  1322.         ;    killing Dave's daughters pet mouse )
  1323.  dc.l fxp4    ; futuristic pulsing sound for spaceship (copyright N.A.S.A.)
  1324.  dc.l fxp4a    
  1325.  dc.l fxp5     ; churning sound
  1326.  dc.l fxp6
  1327.  dc.l fxp7
  1328.  dc.l fxp8
  1329.  dc.l fxp9    ; 2 Jet-pack thrusts
  1330.  dc.l fxp10    ;     - THE CHOICE IS YOURS !!!!
  1331.  dc.l fxp11
  1332.  dc.l fxp12    ; 2 tyre screeches
  1333.  dc.l fxp13     ;     - you choose again (decisions, decisions !!)
  1334.  dc.l fxp14    ; mouse snoring ??*!!?*? ( you gotta be ****in' kidding !!)
  1335.  dc.l fxp15    ; engine (or if you're a cockney ..... injin)
  1336.  dc.l fxp16    ;   F I V E choices !!!!!
  1337.  dc.l fxp17    ;        ...........now this is ridiculous !!!!
  1338.  dc.l fxp18
  1339.  dc.l fxp19
  1340.  dc.l fxp20
  1341. max_fx    dc.l    22
  1342.  
  1343. ;************************************
  1344.  
  1345. ;   The 1/50 counter in these patterns is dependent on the length
  1346. ;   of the sample in bytes and the replay speed.if altering the
  1347. ;   replay speed calculate the counter using length/rate*50
  1348. ;   ie the piston sample is 2647 bytes at r6(6000)..hence interrupt
  1349. ;   counter for 1 shot play = 22
  1350.  
  1351.  
  1352. fxp12
  1353.                         dc.w  12
  1354.                         dc.l  brakesenv
  1355.             dc.w    4
  1356.             dc.l    brakes
  1357.             dc.w    446*2,100
  1358.                            dc.w    end_fxp
  1359. fxp15
  1360.                         dc.w  12
  1361.                         dc.l  brakesenv
  1362.             dc.w    4
  1363.             dc.l    engine2
  1364. er            dc.w    r6,65000
  1365.             dc.w    repeat
  1366.             dc.l    er
  1367.                            dc.w    end_fxp
  1368. fxp16
  1369.                         dc.w  12
  1370.                         dc.l  brakesenv
  1371.             dc.w    4
  1372.             dc.l    engine2
  1373. er2            dc.w    r8,65000
  1374.             dc.w    repeat
  1375.             dc.l    er2
  1376.                            dc.w    end_fxp
  1377. fxp17
  1378.                         dc.w  12
  1379.                         dc.l  brakesenv
  1380.             dc.w    4
  1381.             dc.l    engine2
  1382. er3            dc.w    r10,65000
  1383.             dc.w    repeat
  1384.             dc.l    er3
  1385.                            dc.w    end_fxp
  1386. fxp18
  1387.                        dc.w  12
  1388.                         dc.l  brakesenv
  1389.             dc.w    4
  1390.             dc.l    engine2
  1391. er4            dc.w    r12,65000
  1392.             dc.w    repeat
  1393.             dc.l    er4
  1394.                            dc.w    end_fxp
  1395. fxp19
  1396.                         dc.w  12
  1397.                         dc.l  brakesenv
  1398.             dc.w    4
  1399.             dc.l    engine2
  1400. er5            dc.w    r14,65000
  1401.             dc.w    repeat
  1402.             dc.l    er5
  1403.                            dc.w    end_fxp
  1404.  
  1405.  
  1406. fxp20
  1407.                         dc.w  12
  1408.                         dc.l  brakesenv
  1409.             dc.w    4
  1410.             dc.l    engine2
  1411.             dc.w    r4,10,rest,5
  1412.             dc.w    r4,10,rest,5
  1413.             dc.w    r4,10,rest,5
  1414.             dc.w    r4,10
  1415.             dc.w    r4,10
  1416.             dc.w    r4,10
  1417.             dc.w    r4,8
  1418.             dc.w    r4,6
  1419.             dc.w    r4,6
  1420.             dc.w    r4,6
  1421.             dc.w    r4,6
  1422.                            dc.w    end_fxp
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428. brakesenv        dc.w 0,64,64,255
  1429.  
  1430.  
  1431.  
  1432. fxp13
  1433.                         dc.w  12
  1434.                         dc.l  skidenv
  1435.             dc.w    4
  1436.             dc.l    skid
  1437.             dc.w    333,50
  1438.                            dc.w    end_fxp
  1439.  
  1440. skidenv        dc.w 0,64,64,255
  1441.  
  1442.  
  1443. fxp1:                    ;REPEATING STEAM PISTON
  1444.                         dc.w  new_env
  1445.                         dc.l  fx1env
  1446.             dc.w    new_snd
  1447.             dc.l    piston1
  1448. fp1r            dc.w    r6      ; r1-r22 to change pitch
  1449.             dc.w    22      ; repeat speed in 50th
  1450.             dc.w    repeat
  1451.             dc.l    fp1r
  1452.                            dc.w    end_fxp
  1453.  
  1454. fxp1a:                    ;ONE SHOT STEAM PISTON
  1455.  
  1456.                         dc.w  new_env
  1457.                         dc.l  fx1env
  1458.             dc.w    new_snd
  1459.             dc.l    piston1
  1460.             dc.w    r6    ; r1-r22 to change pitch
  1461.             dc.w    22
  1462.                            dc.w    end_fxp
  1463.  
  1464.  
  1465. fxp2:                    ;HAMMER CLANG
  1466.                         dc.w  new_env
  1467.                         dc.l  fx1env
  1468.             dc.w    new_snd
  1469.             dc.l    metalf28
  1470.             dc.w    r8    ; r1-r22 to change pitch
  1471.             dc.w    18    
  1472.                            dc.w    end_fxp
  1473.  
  1474.  
  1475.  
  1476.  
  1477. fxp3:                    ;FEMALE KISS
  1478.                        dc.w  new_env
  1479.                        dc.l  fx1env
  1480.             dc.w    new_snd
  1481.             dc.l    kiss2
  1482.             dc.w    r18,35
  1483.                            dc.w    end_fxp
  1484.  
  1485. fxp14:                    ;FEMALE KISS
  1486.                        dc.w  new_env
  1487.                        dc.l  fx1env
  1488.             dc.w    new_snd
  1489.             dc.l    kiss2
  1490.             dc.w    r18,20
  1491.             dc.w    new_snd
  1492.             dc.l    flame1
  1493.             dc.w    r3,cr
  1494.             dc.w    new_snd
  1495.             dc.l    kiss2
  1496.             dc.w    r18,20
  1497.             dc.w    new_snd
  1498.             dc.l    flame1
  1499.             dc.w    r3,cr
  1500.             dc.w    new_snd
  1501.             dc.l    kiss2
  1502.             dc.w    r18,20
  1503.             dc.w    new_snd
  1504.             dc.l    flame1
  1505.             dc.w    r3,cr
  1506.             dc.w    new_snd
  1507.             dc.l    kiss2
  1508.             dc.w    r18,20
  1509.             dc.w    new_snd
  1510.             dc.l    flame1
  1511.             dc.w    r3,cr
  1512.                            dc.w    end_fxp
  1513.  
  1514. fxp4:                    ;PUNCH MACHINE REPEAT
  1515.                        dc.w  new_env
  1516.                        dc.l  fx1env
  1517.             dc.w    new_snd
  1518.             dc.l    barhma38
  1519. fxp4r            dc.w    r1
  1520.             dc.w    40
  1521.             dc.w    repeat
  1522.             dc.l    fxp4r
  1523.                            dc.w    end_fxp
  1524.  
  1525.  
  1526. fxp4a:                    ;PUNCH  ONE SHOT
  1527.                        dc.w  new_env
  1528.                        dc.l  fx1env
  1529.             dc.w    new_snd
  1530.             dc.l    barhma38
  1531.             dc.w    r2,10
  1532.                            dc.w    end_fxp
  1533.  
  1534.  
  1535. fxp5:                    ;   MIXER
  1536.                        dc.w  new_env
  1537.                        dc.l  fx1env
  1538.             dc.w    new_snd
  1539.             dc.l    mix1
  1540. rp5            dc.w    r8,cr*1000
  1541.             dc.w    repeat
  1542.             dc.l    rp5
  1543.                            dc.w    end_fxp
  1544.  
  1545.  
  1546. fxp6:                    ;LIQUID BUBBLING
  1547.                        dc.w  new_env
  1548.                        dc.l  fx1env
  1549.             dc.w    new_snd
  1550.             dc.l    bubble1
  1551. rp6            dc.w    r12,cr*1000
  1552.             dc.w    repeat
  1553.             dc.l    rp6
  1554.                            dc.w    end_fxp
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560. fxp7:                    ;FIRE/FLAMES
  1561.                        dc.w  new_env
  1562.                        dc.l  fx1env
  1563.             dc.w    new_snd
  1564.             dc.l    flame1
  1565. rp7            dc.w    r4,cr*4,r7,cr*2,r3,q,r2,cr*2
  1566.             dc.w    r5,cr,r3,cr+q,r2,cr*2+q
  1567.             dc.w    repeat
  1568.             dc.l    rp7
  1569.                            dc.w    end_fxp
  1570.  
  1571.  
  1572.                     ;SPRING  
  1573. fxp8:            
  1574.                        dc.w  new_env
  1575.                        dc.l  fx1env
  1576.             dc.w    new_snd
  1577.             dc.l    bboing2k
  1578.             dc.w    r2    ; r1-r22 to change pitch
  1579.             dc.w     20
  1580.                            dc.w    end_fxp
  1581.  
  1582.  
  1583. fxp9:                    ;ELECTRICAL SPARK/ARC
  1584.  
  1585.                        dc.w  new_env
  1586.                        dc.l  fxsparkenv
  1587.             dc.w    new_snd
  1588.             dc.l    spark
  1589.             dc.w    r9,cr*8
  1590.                            dc.w    end_fxp
  1591.  
  1592.  
  1593. fxp10:                    ;SUCKING MACHINE ????
  1594.  
  1595.                        dc.w  new_env
  1596.                        dc.l  fx1env
  1597.             dc.w    new_snd
  1598.             dc.l    suck
  1599.             dc.w    r6,cr*3
  1600.                            dc.w    end_fxp
  1601.  
  1602.  
  1603. fxp11:                    ;  SLOSHING LIQUID
  1604.                        dc.w  new_env
  1605.                        dc.l  fx1env
  1606.             dc.w    new_snd
  1607.             dc.l    mix1
  1608.             dc.w    r4,cr*4
  1609.                            dc.w    end_fxp
  1610.  
  1611. sstart: dc.l 0,end_song
  1612.  
  1613. pstart: dc.w end_patt
  1614.  
  1615.  
  1616. ;----------------------------------
  1617.  
  1618.  
  1619. s1:
  1620.  
  1621.     dc.l p20,p20,p20,p20
  1622.     dc.l p20,p20,p20,p20
  1623.  
  1624.  
  1625.  
  1626.  
  1627.     dc.l p5,p5,p5,p5
  1628.     dc.l p1,p1c,p1b
  1629.     dc.l p1,p1c,p1b
  1630.     dc.l p1,p1c,p1b
  1631.     dc.l p1,p1c,p1b
  1632.  
  1633.     dc.l p16,p16,p16,p17,p16,p16,p16,p16
  1634.  
  1635.     ;perc break
  1636.  
  1637. ;s1
  1638.     dc.l p1,p1c,p1b
  1639.     dc.l p1,p1c,p1b
  1640.  
  1641.     dc.l p1,p1c,p1b
  1642.     dc.l p1,p1c,p1b
  1643.  
  1644.     dc.l p1,p1c,p1b
  1645.     dc.l p1,p1c,p17
  1646.  
  1647.  
  1648.     dc.l p16,p16,p16,p17,p16,p16,p16,p16
  1649.  
  1650.  
  1651.     dc.l p1,p1c,p1b
  1652.     dc.l p1,p1c,p1b
  1653.     dc.l p1,p1c,p1b
  1654.     dc.l p1,p1c,p1b
  1655.  
  1656.  
  1657.     dc.l p1,p1c,p1b
  1658.     dc.l p1,p1c,p1b
  1659.     dc.l p1,p1c,p1b
  1660.     dc.l p1,p1c,p1b
  1661.  
  1662.  
  1663.     ;dc.l prf
  1664.  
  1665.  
  1666.  
  1667.     dc.l    0,end_song
  1668.  
  1669. ;-----------------------------
  1670.  
  1671. s2:    
  1672.  
  1673.     dc.l p21,p21a,p21a,p21a
  1674.  
  1675.  
  1676.  
  1677.         dc.l p1a,p1a,p1a,p1d
  1678.         dc.l p1a,p1a,p1a,p1d
  1679.         dc.l p1a,p1a,p1a,p1d
  1680.         dc.l p1a,p1a,p1a,p1d
  1681.  
  1682.     dc.l p15
  1683.  
  1684.     ; perc break
  1685.  
  1686. ;s2 
  1687.        dc.l p1a,p1a,p1a,p1d
  1688.         dc.l p1a,p1a,p1a,p1d
  1689.     dc.l    p1a,p1a
  1690.     dc.l    p1a,p1a
  1691.  
  1692.     dc.l p15
  1693.  
  1694.         dc.l p1a,p1a,p1a,p1d
  1695.         dc.l p1a,p1a,p1a,p1d
  1696.  
  1697.         dc.l p1a,p1a,p1a,p1d
  1698.         dc.l p1a,p1a,p1a,p1d
  1699.  
  1700.  
  1701.  
  1702.     ;dc.l prf
  1703.  
  1704.  
  1705.     dc.l    0,end_song
  1706. ;-------------------------------
  1707.  
  1708. s3:        ;   bass
  1709.  
  1710.  
  1711.  
  1712.     dc.l p22
  1713.  
  1714.  
  1715.  
  1716.     dc.l    p2,p3,p2,p3
  1717.     dc.l    p4  
  1718.  
  1719. ;s3
  1720.     dc.l pr2,pr2,p18,p18,pr,pr
  1721.  
  1722.     dc.l    p4  
  1723.  
  1724.     dc.l    p2r,p3
  1725.  
  1726.     dc.l    p2,p3
  1727.  
  1728.     ;dc.l prf
  1729.  
  1730.       
  1731.     dc.l       0,end_song
  1732. ;------------------------------
  1733.  
  1734. s4:
  1735.  
  1736.     dc.l p22
  1737.  
  1738.  
  1739.         ; tune
  1740.         dc.l  p10,p10,p11,p12,p10a,p10b,p10b,p11,p12
  1741.     dc.l    p13
  1742.  
  1743. ;s4
  1744.     dc.l pr2,pr2
  1745.     dc.l p19,p19,p19,p19        
  1746.  
  1747.     dc.l    p10a,p13
  1748.  
  1749.     dc.l    p10a,p10b,p10b,p11,p12
  1750.     dc.l    p10a,p10b,p10b,p11,p12
  1751.  
  1752.  
  1753.     ;dc.l prf
  1754.  
  1755.  
  1756.  
  1757.     dc.l       0,end_song
  1758.  
  1759. ;------------------------------
  1760.  
  1761.  
  1762. pr: 
  1763.       dc.w rest,cr*4
  1764.       dc.w end_patt
  1765.  
  1766. pr1: 
  1767.       dc.w rest,cr*1
  1768.       dc.w end_patt
  1769.  
  1770. pr8: 
  1771.       dc.w rest,cr*32
  1772.       dc.w end_patt
  1773.  
  1774. pr2: 
  1775.       dc.w rest,cr*8
  1776.       dc.w end_patt
  1777.  
  1778. prf: 
  1779.       dc.w rest,cr*500
  1780.       dc.w end_patt
  1781.  
  1782. prinf: 
  1783.       dc.w rest,cr*2500
  1784.       dc.w end_patt
  1785.  
  1786.  
  1787. p1:             
  1788.         dc.w  new_env
  1789.         dc.l  mix1e
  1790.     dc.w    new_snd
  1791.     dc.l  mix1
  1792. p1b    
  1793.     dc.w    r12,q,r6,q,r12,q,r6,q
  1794.     dc.w    r12,q,r6,q,r12,q,r6,q
  1795.  
  1796.     dc.w     end_patt
  1797.  
  1798.  
  1799. p1c:             
  1800.         dc.w  new_env
  1801.         dc.l  mix1e
  1802.     dc.w    new_snd
  1803.     dc.l  bboing2k
  1804.     dc.w     end_patt
  1805.  
  1806.  
  1807. p1a:             
  1808.         dc.w  new_env
  1809.         dc.l  kicke
  1810.     dc.w    new_snd
  1811.     dc.l  kick
  1812.     dc.w    r4,cr
  1813.  
  1814.         dc.w  new_env
  1815.         dc.l  mix1e
  1816.     dc.w    new_snd
  1817.     dc.l  mix1
  1818.     dc.w    r16,q,r8,q
  1819.         dc.w  new_env
  1820.         dc.l  kicke
  1821.     dc.w    new_snd
  1822.     dc.l  kick
  1823.     dc.w    r4,cr
  1824.     dc.w    new_snd
  1825.     dc.l      snare
  1826.     dc.w    r8,cr
  1827.     dc.w     end_patt
  1828.  
  1829.  
  1830. p1d:             
  1831.         dc.w  new_env
  1832.         dc.l  kicke
  1833.     dc.w    new_snd
  1834.     dc.l  kick
  1835.     dc.w    r4,cr
  1836.  
  1837.         dc.w  new_env
  1838.         dc.l  mix1e
  1839.     dc.w    new_snd
  1840.     dc.l  mix1
  1841.     dc.w    r16,q,r8,q
  1842.         dc.w  new_env
  1843.         dc.l  kicke
  1844.     dc.w    new_snd
  1845.     dc.l  kick
  1846.     dc.w    r4,cr
  1847.         dc.w  new_env
  1848.         dc.l  snaree
  1849.  
  1850.     dc.w    new_snd
  1851.     dc.l      snare
  1852.     dc.w    r16,sq,r16,sq,r16,sq,r16,sq
  1853.     dc.w     end_patt
  1854.  
  1855.  
  1856.  
  1857.  
  1858. p2r:             
  1859.         dc.w  new_env
  1860.         dc.l  basse
  1861.     dc.w  new_snd
  1862.     dc.l  bass
  1863.  
  1864.     dc.w    c02,q,eb02,q,d02,q,db02,q,c02,q,bb01,q
  1865.     dc.w    ab01,cr
  1866.     dc.w    c02,cr,c03,cr,c02,cr,c03,cr
  1867.     dc.w    c02,q,eb02,q,d02,q,db02,q,c02,q,bb01,q
  1868.     dc.w    ab01,cr
  1869.     dc.w    c02,cr,c03,cr,d02,cr,d03,cr
  1870.     dc.w  end_patt
  1871.  
  1872. p2:             
  1873.         dc.w  new_env
  1874.         dc.l  basse
  1875.     dc.w  new_snd
  1876.     dc.l  bass
  1877.     dc.w    c02,q,c02,q,c03,cr,c02,cr,c03,cr
  1878.     dc.w    c02,cr,c03,cr,c02,cr,c03,cr
  1879.  
  1880.     dc.w    c02,q,c02,q,c03,cr,c02,cr,c03,cr
  1881.     dc.w    c02,q,c02,q,c03,cr,d02,cr,d03,cr
  1882.     dc.w  end_patt
  1883.  
  1884.  
  1885.  
  1886. p3    
  1887.     dc.w    eb02,cr,eb03,cr,eb02,cr,eb03,q,eb03,q
  1888.     dc.w    eb02,cr,eb03,cr,eb02,cr,eb03,cr
  1889.     dc.w    d02,cr,d03,cr,d02,cr,d03,sq,d03,sq,d03,sq,d03,sq
  1890.     dc.w    ab03,q,g03,q,gb03,q,f03,q,e03,q,eb03,q
  1891.     dc.w    d03,q,db03,q
  1892.  
  1893.     dc.w  end_patt
  1894.  
  1895. p4
  1896.         dc.w  new_env
  1897.         dc.l  basse
  1898.     dc.w  new_snd
  1899.     dc.l  bass
  1900.  
  1901.     dc.w    ab02,sq,ab02,sq,ab01,q,ab02,cr,ab02,cr,ab01,q,ab01,q
  1902.     dc.w    ab02,q,ab01,q,ab02,cr,ab02,cr,ab01,q,ab01,q
  1903.     dc.w    g02,q,g01,q,g02,cr,g02,cr,g02,q,g02,cr*4+q
  1904.     dc.w    f02,q,f01,q,f02,cr,f02,cr,f01,q,f01,q
  1905.     dc.w    f02,q,f01,q,f02,sq,f02,sq,f02,sq,f02,sq,f02,cr,f01,q,f01,q
  1906.     dc.w    g02,q,g01,q,g02,cr,g02,cr,g01,q,g02,cr*4+q
  1907.     dc.w  end_patt
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914. p5:             
  1915.         dc.w  new_env
  1916.         dc.l  sucke
  1917.     dc.w    new_snd
  1918.     dc.l  suck
  1919. p5a    dc.w    rest,cr,r6,cr,rest,cr,r8,cr
  1920.     dc.w    rest,cr,r6,cr,rest,cr,r8,cr
  1921.  
  1922.     dc.w     end_patt
  1923.  
  1924. p10a:             
  1925.         dc.w  new_env
  1926.         dc.l  synthe
  1927.     dc.w  new_snd
  1928.     dc.l  synth
  1929.     dc.w  end_patt
  1930.  
  1931. p10:             
  1932.         dc.w  new_env
  1933.         dc.l  strings_shorte
  1934.     dc.w  new_snd
  1935.     dc.l  strings
  1936.     dc.w modon,1,1,4,4,6,6
  1937.  
  1938. p10b    dc.w    eb02,2,e02,q-2,eb02,q,d02,q,db02,q,c02,q,bb01,q
  1939.     dc.w    ab01,cr,g01,cr*4
  1940.     dc.w  end_patt
  1941.  
  1942. p11
  1943.     dc.w    a01,4,bb01,cr-4,bb01,cr,bb01,q,a01,q,g01,cr
  1944.     dc.w    bb01,q,c02,q,d02,q,eb02,cr*2+q
  1945.     dc.w  end_patt
  1946.  
  1947. p12
  1948.     dc.w    eb02,3,d02,q-3,db02,q,d02,q,eb02,q,e02,q,f02,q
  1949.     dc.w    gb02,q,g02,q,ab02,q,a02,q,bb02,q,b02,q
  1950.     dc.w    c03,q,db03,q,d03,q,eb03,q
  1951.     dc.w  end_patt
  1952.  
  1953. p13
  1954.  
  1955.     dc.w    eb03,q,g02,q,d03,q,g02,q,c03,cr*2
  1956.     dc.w    eb03,q,g02,q,d03,q,g02,q,c03,cr*2
  1957.     dc.w    d03,q,g02,q,c03,q,g02,q,bb02,q,g02,q
  1958.     dc.w    c03,q,g02,q,d03,cr*4
  1959.     dc.w    eb03,q,g02,q,d03,q,g02,q,c03,q,g02,q
  1960.     dc.w    d03,q,eb03,cr*2+q,c03,cr*2
  1961.     dc.w    g03,q,g03,q,g03,cr,g03,cr,g03,q,g03,cr*4+q
  1962.     dc.w  end_patt
  1963.  
  1964.  
  1965. p15:             
  1966.         dc.w  new_env
  1967.         dc.l  strings2e
  1968.     dc.w  new_snd
  1969.     dc.l  strings
  1970.  
  1971.     dc.w    c01,cr*2,d01,cr*2,eb01,cr*2,d01,cr*2
  1972.     dc.w    d01,cr,c01,cr,bb01,cr
  1973.     dc.w    c01,q,d01,cr*4+q
  1974.  
  1975.     dc.w    a00,cr*2,bb00,cr*2,c01,cr*2,eb01,cr*2
  1976.     dc.w    d01,q,d01,q,d01,cr,d01,cr,d01,q,d01,cr*4+q
  1977.     dc.w  end_patt
  1978.  
  1979.  
  1980. p16:             
  1981.         dc.w  new_env
  1982.         dc.l      snares
  1983.     dc.w    new_snd
  1984.     dc.l      snare
  1985.     dc.w    r16,sq,r15,sq,r14,sq,r15,sq
  1986.     dc.w    r16,sq,r15,sq,r14,sq,r15,sq
  1987.     dc.w    r16,sq,r15,sq,r14,sq,r15,sq
  1988.     dc.w    r16,sq,r15,sq,r14,sq,r15,sq
  1989.     dc.w     end_patt
  1990.  
  1991.  
  1992. p17:             
  1993.         dc.w  new_env
  1994.         dc.l  sparke
  1995.     dc.w    new_snd
  1996.     dc.l  spark
  1997.     dc.w    r12,cr*4
  1998.     dc.w    end_patt
  1999.  
  2000.  
  2001. p18:             
  2002.         dc.w  new_env
  2003.         dc.l  sparke
  2004.     dc.w    new_snd
  2005.     dc.l  spark
  2006.     dc.w    rest,cr*6,r3,cr*6
  2007.     dc.w    end_patt
  2008.  
  2009.  
  2010.  
  2011. p19:             
  2012.         dc.w  new_env
  2013.         dc.l  basse
  2014.     dc.w    new_snd
  2015.     dc.l  bass
  2016.     dc.w    e02,q,eb02,q,d02,q,db02,q,c02,q,bb01,q
  2017.     dc.w    ab01,cr,g01,cr*4
  2018.     dc.w    end_patt
  2019.  
  2020.  
  2021. p20:             
  2022.         dc.w  new_env
  2023.         dc.l  kicke
  2024.     dc.w    new_snd
  2025.     dc.l  kick
  2026.     dc.w    r4,cr
  2027.         dc.w  new_env
  2028.         dc.l  snaree
  2029.     dc.w    new_snd
  2030.     dc.l      snare
  2031.     dc.w    r16,cr
  2032.     dc.w    r6,cr,r12,cr
  2033.     dc.w     end_patt
  2034.  
  2035. p21
  2036.         dc.w  new_env
  2037.         dc.l flamee
  2038.     dc.w    new_snd
  2039.     dc.l  flame
  2040. p21a    dc.w    r12,sq,r12,sq,r12,sq,r12,sq
  2041.     dc.w    r12,sq,r12,sq,r12,sq,r12,sq
  2042.     dc.w    r12,sq,r12,sq,r12,sq,r12,sq
  2043.     dc.w    r12,sq,r12,sq,r12,sq,r12,sq
  2044.     dc.w    r12,sq,r12,sq,r12,sq,r12,sq
  2045.     dc.w    r12,sq,r12,sq,r12,sq,r12,sq
  2046.     dc.w    r12,sq,r12,sq,r12,sq,r12,sq
  2047.     dc.w    r12,sq,r12,sq,r12,sq,r12,sq    
  2048.     dc.w    end_patt
  2049.  
  2050.  
  2051. p21b
  2052.         dc.w  new_env
  2053.         dc.l  flamees
  2054.     dc.w    new_snd
  2055.     dc.l  flame
  2056.     dc.w    end_patt
  2057.  
  2058.  
  2059.  
  2060. p22
  2061.         dc.w  new_env
  2062.         dc.l  stringse
  2063.     dc.w  new_snd
  2064.     dc.l  strings
  2065.     ;            dc.w modon,1,1,8,8,6,6
  2066.     dc.w pbend,down,20,60000,1
  2067.     dc.w    c01,cr*32
  2068.     dc.w pboff    
  2069.     dc.w  end_patt
  2070.  
  2071.  
  2072. ;**************************************
  2073.  
  2074.     ;   HIGH SCORE JINGLE
  2075.  
  2076. s5:
  2077.     dc.l p25    
  2078.     dc.l    0,end_song
  2079.  
  2080. ;-----------------------------
  2081. s6:    
  2082.     dc.l p30
  2083.     dc.l    0,end_song
  2084. ;-------------------------------
  2085. s7:
  2086.     dc.l    p21,p21a,p21a,p21a,p16,p16,p16,p17 
  2087.     dc.l       0,end_song
  2088. ;------------------------------
  2089. s8:
  2090.     dc.l prf
  2091.     dc.l       0,end_song
  2092.  
  2093. ;***********************************
  2094. p25
  2095.         dc.w  new_env
  2096.         dc.l  synthe
  2097.     dc.w  new_snd
  2098.     dc.l  synth
  2099.     dc.w modon,1,1,8,8,6,6
  2100.     dc.w    rest,q,d01,q,g01,q,a01,q,b01,q,d01,q
  2101.     dc.w    b01,q,d01,q,b01,cr,a01,q,g01,q,a01,q,b01,cr+q    
  2102.     dc.w    rest,q,d01,q,g01,q,a01,q,b01,q,d01,q
  2103.     dc.w    b01,q,d01,q,d02,cr,c02,q,b01,q,g01,cr*2    
  2104.  
  2105.     dc.w  end_patt
  2106.  
  2107. p30
  2108.         dc.w  new_env
  2109.         dc.l  basse
  2110.     dc.w  new_snd
  2111.     dc.l  bass
  2112.     dc.w    g01,q,g02,q,g01,q,g02,q,g01,q,g02,q,g01,q,g02,q
  2113.     dc.w    f01,q,f02,q,f01,q,f02,q,f01,q,f02,q,f01,q,f02,q
  2114.     dc.w    e01,q,e02,q,e01,q,e02,q,e01,q,e02,q,e01,q,e02,q
  2115.     dc.w    eb01,q,eb02,q,eb01,q,eb02,q,eb01,q,eb02,q,eb01,q,eb02,q
  2116.  
  2117.     dc.w  end_patt
  2118.  
  2119. ;**********************************
  2120.  
  2121.  
  2122.     ; machine background
  2123.  
  2124. s9:
  2125.     dc.l p41
  2126.     dc.l    0,end_song
  2127.  
  2128. ;-----------------------------
  2129. s10:    
  2130.     dc.l p5
  2131.     dc.l    0,end_song
  2132. ;-------------------------------
  2133. s11:
  2134.     dc.l    p40
  2135.  
  2136.     dc.l       0,end_song
  2137. ;------------------------------
  2138. s12:
  2139.     dc.l p21b,p21a
  2140.     dc.l       0,end_song
  2141.  
  2142. ;***********************************
  2143.  
  2144. p40:             
  2145.         dc.w  new_env
  2146.         dc.l  kickes
  2147.     dc.w    new_snd
  2148.     dc.l  kick
  2149.     dc.w    r4,q,r16,cr*2-q
  2150.         dc.w  new_env
  2151.         dc.l  snaresmb
  2152.     dc.w    new_snd
  2153.     dc.l      snare
  2154.     dc.w    r16,cr
  2155.     dc.w    r16,cr,r12,cr
  2156.     dc.w     end_patt
  2157.  
  2158.  
  2159. p41:             
  2160.         dc.w  new_env
  2161.         dc.l  mix1es
  2162.     dc.w    new_snd
  2163.     dc.l  mix1
  2164. p41b    
  2165.     dc.w    r12,q,r6,q,r12,q,r6,q
  2166.     dc.w    r12,q,r4,q,r12,q,r4,q
  2167.     dc.w     end_patt
  2168.  
  2169.  
  2170.  
  2171. bboing2k
  2172.         dc.w 1  
  2173.              dc.l bboing2kd
  2174.              dc.w 789/2 
  2175.              dc.l rest_data
  2176.               dc.w 16
  2177.  
  2178. barhma38
  2179.         dc.w 1  
  2180.              dc.l barhma38d
  2181.              dc.w 1326/2 
  2182.              dc.l rest_data
  2183.               dc.w 16
  2184.  
  2185.  
  2186. metalf28
  2187.         dc.w 1  
  2188.              dc.l metalf28d
  2189.              dc.w 2496/2 
  2190.              dc.l rest_data
  2191.               dc.w 16
  2192.  
  2193. ;***************************************
  2194. BRAKES
  2195.         dc.w 1  
  2196.              dc.l BRAKESLd
  2197.              dc.w 1130/2 
  2198.              dc.l BRAKESLd
  2199.              dc.w 1130/2 
  2200. SKID
  2201.         dc.w 1  
  2202.              dc.l SKIDd
  2203.              dc.w 5176/2 
  2204.              dc.l rest_data
  2205.              dc.w 16
  2206. mix1
  2207.         dc.w 1  
  2208.              dc.l mix1d
  2209.              dc.w 3563/2 
  2210.              dc.l mix1d
  2211.              dc.w 3563/2 
  2212.  
  2213. kiss
  2214. kiss2
  2215.         dc.w 1  
  2216.              dc.l kiss2d
  2217.              dc.w 2321/2 
  2218.              dc.l rest_data
  2219.               dc.w 16
  2220. flame
  2221. flame1
  2222.         dc.w 1  
  2223.              dc.l flame1d
  2224.              dc.w 3394/2 
  2225.              dc.l flame1d
  2226.              dc.w 3394/2 
  2227.  
  2228. spark
  2229.         dc.w 1  
  2230.              dc.l sparkd
  2231.              dc.w 736/2 
  2232.              dc.l sparkd
  2233.              dc.w 736/2 
  2234.  
  2235.  
  2236.  
  2237.  
  2238. suck
  2239.         dc.w 1  
  2240.              dc.l suckd
  2241.              dc.w 2206/2 
  2242.              dc.l suckd
  2243.              dc.w 2206/2 
  2244.  
  2245. bubble
  2246. bubble1
  2247.         dc.w 1  
  2248.              dc.l bubble1d
  2249.              dc.w 3111/2 
  2250.              dc.l bubble1d
  2251.              dc.w 3111/2 
  2252.  
  2253. piston1
  2254.         dc.w 1  
  2255.              dc.l piston1d
  2256.              dc.w 2647/2 
  2257.              dc.l rest_data
  2258.               dc.w 16
  2259. engine2
  2260.         dc.w 1  
  2261.              dc.l engine2d
  2262.              dc.w 2206/2 
  2263.              dc.l engine2d
  2264.              dc.w 2206/2 
  2265. bass
  2266.         dc.w 1  
  2267.              dc.l bas4d
  2268.              dc.w 1801/2 
  2269.              dc.l rest_data
  2270.               dc.w 16
  2271.  
  2272. synth
  2273.         dc.w 1  
  2274.              dc.l orglp1d
  2275.              dc.w 32/2 
  2276.              dc.l orglp1d
  2277.              dc.w 32/2 
  2278.  
  2279.  
  2280. strings
  2281.         dc.w 1  
  2282.              dc.l strlp1d
  2283.              dc.w 1568/2 
  2284.              dc.l strlp1d
  2285.              dc.w 1568/2 
  2286.  
  2287.  
  2288. restd:
  2289. rest_data:
  2290.              dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  2291.              dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  2292.              dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  2293.              dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  2294.  
  2295.  
  2296. fx1env:        dc.w 0,64,255
  2297. fx2env:        dc.w 0,64,255
  2298. fx3env:        dc.w 0,28,255
  2299. sparke
  2300. fxsparkenv    dc.w 0,64,64,64,0,63,60,60,59,58,56,55,54,53,52
  2301.         dc.w 50,49,48,47,46,45,44,43,42,41
  2302.         dc.w 40,0,38,37,36,35,34,33,32,31
  2303.         dc.w 30,29,28,27,0,25,24,23,22,21
  2304.         dc.w 20,0,18,17,16,15,14,13,12,11
  2305.         dc.w 10,9,8,0,6,5,4,3,2,1,0,255
  2306.  
  2307. strings_shorte
  2308.         dc.w 0,60,50,50,45,40,35,30,25,20,15,10,5,0,255
  2309.  
  2310. snares        dc.w    0,27,26,25,20,4,3,2,1,0,255
  2311. snaresmb    dc.w    0,15,255
  2312.  
  2313. snaree        dc.w    0,45,255
  2314. sucke        dc.w    0,24,255
  2315. kicke        dc.w    0,60,255
  2316. kickes        dc.w    0,30,255
  2317. pistone        dc.w    0,24,255
  2318. basse        dc.w    0,64,255
  2319. synthe        dc.w    0,43,255
  2320. stringse    dc.w    0,23,255
  2321. strings2e    dc.w    0,43,255
  2322. mix1e        dc.w    0,64,255
  2323. mix1es        dc.w    0,24,255
  2324. bubble1e    dc.w    0,36,255
  2325. bubblee        dc.w    0,50,255
  2326. kisse        dc.w    0,64,255
  2327. flamee        dc.w    0,40,255
  2328. flamees        dc.w    0,25,255
  2329.  
  2330. rest_env:    dc.w     0,0,0,0,0,0,0,0,255
  2331.  
  2332. ;**************************************************
  2333.  
  2334. snare    equ metalf28
  2335. kick    equ barhma38
  2336. punch    equ barhma38
  2337.  
  2338.  
  2339.         ;  SAMPLES MUST BE KEPT IN THIS ORDER
  2340.  
  2341.  
  2342.  
  2343.  
  2344.  
  2345. BRAKESLd        incbin df1:BRAKESL.con
  2346. SKIDd            incbin df1:SKID.con    
  2347. engine2d        incbin df1:engine2.sam
  2348. bboing2kd        incbin    df1:bboing2k.con
  2349. barhma38d        incbin  df1:barhma38.con
  2350. metalf28d        incbin    df1:metalf28.con
  2351. mix1d            incbin    df1:mix1.sam
  2352. kiss2d            incbin    df1:kiss2.sam
  2353. flame1d            incbin    df1:flame1.sam
  2354. sparkd            incbin    df1:spark.sam
  2355. suckd            incbin    df1:suck.sam
  2356. bubble1d        incbin    df1:bubble1.sam
  2357. piston1d        incbin    df1:piston1.sam
  2358.  
  2359.  
  2360. bas4d            incbin df1:bas4.sam
  2361. orglp1d            incbin df1:orglp1.sam
  2362. strlp1d            incbin df1:strlp1.sam
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.  
  2369.           END
  2370.  
  2371.  
  2372.  
  2373.  
  2374.