home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 4: Demo 1 / almathera_demo1.bin / utils / rippers / sources / futurecomposerreplayer.s < prev    next >
Text File  |  1995-03-17  |  18KB  |  791 lines

  1. ;-----------------------------------------------------------------------;
  2. ;            FUTURE COMPOSER REPLAYER            ;
  3. ;CONSISTS OF:                                ;
  4. ;ONE PLAY-FC-ROUTINE                            ;
  5. ;    THIS PROGRAMM WAS WRITTEN ON 03/04/91 BY RAIDER/FLASHING BYTES    ;
  6. ;              © 1991 BY FLASHING BYTES DEVELOPMENTS.        ;
  7. ;         THIS SOURCECODE IS ONLY FOR TFB-MEMBERS!        ;
  8. ;-----------------------------------------------------------------------;
  9.  
  10. >EXTERN "DF1:MODULES/FC/MOD.DECAY",MODULE
  11.  
  12. START:    MOVEM.L    D0-D7/A0-A6,-(A7)
  13.     JSR    INIT_MUSIC
  14. RAIDER:    JSR    PLAY_MUSIC
  15. RAIDER2:CMPI.B    #01,$DFF006
  16.     BNE    RAIDER2
  17. OF:    BTST    #06,$BFE001
  18.     BNE.S    TFB
  19.     JMP    END_MUSIC
  20. TFB:    BTST    #10,$DFF016
  21.     BNE.S    RAIDER
  22.     JMP    END_MUSIC
  23.  
  24. PLAY_MUSIC:
  25. bra.l PLAY
  26.  
  27. END_MUSIC:
  28. clr.w onoff
  29. clr.l $dff0a6
  30. clr.l $dff0b6
  31. clr.l $dff0c6
  32. clr.l $dff0d6
  33. move.w #$000f,$dff096
  34. bclr #1,$bfe001
  35. MOVEM.L    (A7)+,D0-D7/A0-A6
  36. rts
  37.  
  38. INIT_MUSIC:
  39. move.w #1,onoff
  40. bset #1,$bfe001
  41. lea MODULE,a0
  42. lea 100(a0),a1
  43. move.l a1,SEQpoint
  44. move.l a0,a1
  45. add.l 8(a0),a1
  46. move.l a1,PATpoint
  47. move.l a0,a1
  48. add.l 16(a0),a1
  49. move.l a1,FRQpoint
  50. move.l a0,a1
  51. add.l 24(a0),a1
  52. move.l a1,VOLpoint
  53. move.l 4(a0),d0
  54. divu #13,d0
  55.  
  56. lea 40(a0),a1
  57. lea SOUNDINFO+4(pc),a2
  58. moveq #10-1,d1
  59. initloop:
  60. move.w (a1)+,(a2)+
  61. move.l (a1)+,(a2)+
  62. addq.w #4,a2
  63. dbf d1,initloop
  64. moveq #0,d2
  65. move.l a0,d1
  66. add.l 32(a0),d1
  67. sub.l #WAVEFORMS,d1
  68. lea SOUNDINFO(pc),a0
  69. move.l d1,(a0)+
  70. moveq #9-1,d3
  71. initloop1:
  72. move.w (a0),d2
  73. add.l d2,d1
  74. add.l d2,d1
  75. addq.w #6,a0
  76. move.l d1,(a0)+
  77. dbf d3,initloop1
  78.  
  79. move.l SEQpoint(pc),a0
  80. moveq #0,d2
  81. move.b 12(a0),d2        ;Get replay speed
  82. bne.s speedok
  83. move.b #3,d2            ;Set default speed
  84. speedok:
  85. move.w d2,respcnt        ;Init repspeed counter
  86. move.w d2,repspd
  87. INIT2:
  88. clr.w audtemp
  89. move.w #$000f,$dff096        ;Disable audio DMA
  90. move.w #$0780,$dff09a        ;Disable audio IRQ
  91. moveq #0,d7
  92. mulu #13,d0
  93. moveq #4-1,d6            ;Number of soundchannels-1
  94. lea V1data(pc),a0        ;Point to 1st voice data area
  95. lea silent(pc),a1
  96. lea o4a0c8(pc),a2
  97. initloop2:
  98. move.l a1,10(a0)
  99. move.l a1,18(a0)
  100. clr.l 14(a0)
  101. clr.b 45(a0)
  102. clr.b 47(a0)
  103. clr.w 8(a0)
  104. clr.l 48(a0)
  105. move.b #$01,23(a0)
  106. move.b #$01,24(a0)
  107. clr.b 25(a0)
  108. clr.l 26(a0)
  109. clr.w 30(a0)
  110. moveq #$00,d3
  111. move.w (a2)+,d1
  112. move.w (a2)+,d3
  113. divu #$0003,d3
  114. move.b d3,32(a0)
  115. mulu #$0003,d3
  116. andi.l #$00ff,d3
  117. andi.l #$00ff,d1
  118. addi.l #$dff0a0,d1
  119. move.l d1,a6
  120. move.l #$0000,(a6)
  121. move.w #$0100,4(a6)
  122. move.w #$0000,6(a6)
  123. move.w #$0000,8(a6)
  124. move.l d1,60(a0)
  125. clr.w 64(a0)
  126. move.l SEQpoint(pc),(a0)
  127. move.l SEQpoint(pc),52(a0)
  128. add.l d0,52(a0)
  129. add.l d3,52(a0)
  130. add.l d7,(a0)
  131. add.l d3,(a0)
  132. move.w #$000d,6(a0)
  133. move.l (a0),a3
  134. move.b (a3),d1
  135. andi.l #$00ff,d1
  136. lsl.w #6,d1
  137. move.l PATpoint(pc),a4
  138. adda.w d1,a4
  139. move.l a4,34(a0)
  140. clr.l 38(a0)
  141. move.b #$01,33(a0)
  142. move.b #$02,42(a0)
  143. move.b 1(a3),44(a0)
  144. move.b 2(a3),22(a0)
  145. clr.b 43(a0)
  146. clr.b 45(a0)
  147. clr.w 56(a0)
  148. adda.w #$004a,a0    ;Point to next voice's data area
  149. dbf d6,initloop2
  150. rts
  151.  
  152.  
  153. PLAY:
  154. lea pervol(pc),a6
  155. tst.w onoff
  156. bne.s music_on
  157. rts
  158. music_on:
  159. subq.w #1,respcnt        ;Decrease replayspeed counter
  160. bne.s nonewnote
  161. move.w repspd(pc),respcnt    ;Restore replayspeed counter
  162. lea V1data(pc),a0        ;Point to voice1 data area
  163. bsr.L new_note
  164. lea V2data(pc),a0        ;Point to voice2 data area
  165. bsr.L new_note
  166. lea V3data(pc),a0        ;Point to voice3 data area
  167. bsr.L new_note
  168. lea V4data(pc),a0        ;Point to voice4 data area
  169. bsr.L new_note
  170. nonewnote:
  171. clr.w audtemp
  172. lea V1data(pc),a0
  173. bsr.L effects
  174. move.w d0,(a6)+
  175. move.w d1,(a6)+
  176. lea V2data(pc),a0
  177. bsr.L effects
  178. move.w d0,(a6)+
  179. move.w d1,(a6)+
  180. lea V3data(pc),a0
  181. bsr.L effects
  182. move.w d0,(a6)+
  183. move.w d1,(a6)+
  184. lea V4data(pc),a0
  185. bsr.L effects
  186. move.w d0,(a6)+
  187. move.w d1,(a6)+
  188. lea pervol(pc),a6
  189. move.w audtemp(pc),d0
  190. ori.w #$8000,d0            ;Set/clr bit = 1
  191. move.w d0,-(a7)
  192. moveq #0,d1
  193. move.l start1(pc),d2        ;Get samplepointers
  194. move.w offset1(pc),d1        ;Get offset
  195. add.l d1,d2            ;Add offset
  196. move.l start2(pc),d3
  197. move.w offset2(pc),d1
  198. add.l d1,d3
  199. move.l start3(pc),d4
  200. move.w offset3(pc),d1
  201. add.l d1,d4
  202. move.l start4(pc),d5
  203. move.w offset4(pc),d1
  204. add.l d1,d5
  205. move.w ssize1(pc),d0        ;Get sound lengths
  206. move.w ssize2(pc),d1
  207. move.w ssize3(pc),d6
  208. move.w ssize4(pc),d7
  209. move.w (a7)+,$dff096        ;Enable audio DMA
  210. chan1:
  211. lea V1data(pc),a0
  212. tst.w 72(a0)
  213. beq.l chan2
  214. subq.w #1,72(a0)
  215. cmpi.w #1,72(a0)
  216. bne.s chan2
  217. clr.w 72(a0)
  218. move.l d2,$dff0a0        ;Set soundstart
  219. move.w d0,$dff0a4        ;Set soundlength
  220. chan2:
  221. lea V2data(pc),a0
  222. tst.w 72(a0)
  223. beq.s chan3
  224. subq.w #1,72(a0)
  225. cmpi.w #1,72(a0)
  226. bne.s chan3
  227. clr.w 72(a0)
  228. move.l d3,$dff0b0
  229. move.w d1,$dff0b4
  230. chan3:
  231. lea V3data(pc),a0
  232. tst.w 72(a0)
  233. beq.s chan4
  234. subq.w #1,72(a0)
  235. cmpi.w #1,72(a0)
  236. bne.s chan4
  237. clr.w 72(a0)
  238. move.l d4,$dff0c0
  239. move.w d6,$dff0c4
  240. chan4:
  241. lea V4data(pc),a0
  242. tst.w 72(a0)
  243. beq.s setpervol
  244. subq.w #1,72(a0)
  245. cmpi.w #1,72(a0)
  246. bne.s setpervol
  247. clr.w 72(a0)
  248. move.l d5,$dff0d0
  249. move.w d7,$dff0d4
  250. setpervol:
  251. lea $dff0a6,a5
  252. move.w (a6)+,(a5)    ;Set period
  253. move.w (a6)+,2(a5)    ;Set volume
  254. move.w (a6)+,16(a5)
  255. move.w (a6)+,18(a5)
  256. move.w (a6)+,32(a5)
  257. move.w (a6)+,34(a5)
  258. move.w (a6)+,48(a5)
  259. move.w (a6)+,50(a5)
  260. rts
  261.  
  262. NEW_NOTE:
  263. moveq #0,d5
  264. move.l 34(a0),a1
  265. adda.w 40(a0),a1
  266. cmp.w #64,40(a0)
  267. bne.L samepat
  268. move.l (a0),a2
  269. adda.w 6(a0),a2        ;Point to next sequence row
  270. cmpa.l 52(a0),a2    ;Is it the end?
  271. bne.s notend
  272. move.w d5,6(a0)        ;yes!
  273. move.l (a0),a2        ;Point to first sequence
  274. notend:
  275. moveq #0,d1
  276. addq.b #1,spdtemp
  277. cmpi.b #4,spdtemp
  278. bne.s nonewspd
  279. move.b d5,spdtemp
  280. move.b -1(a1),d1    ;Get new replay speed
  281. beq.s nonewspd
  282. move.w d1,respcnt    ;store in counter
  283. move.w d1,repspd
  284. nonewspd:
  285. move.b (a2),d1        ;Pattern to play
  286. move.b 1(a2),44(a0)    ;Transpose value
  287. move.b 2(a2),22(a0)    ;Soundtranspose value
  288.  
  289. move.w d5,40(a0)
  290. lsl.w #6,d1
  291. add.l PATpoint(pc),d1    ;Get pattern pointer
  292. move.l d1,34(a0)
  293. addi.w #$000d,6(a0)
  294. move.l d1,a1
  295. samepat:
  296. move.b 1(a1),d1        ;Get info byte
  297. move.b (a1)+,d0        ;Get note
  298. bne.s ww1
  299. andi.w #%11000000,d1
  300. beq.s noport
  301. bra.s ww11
  302. ww1:
  303. move.w d5,56(a0)
  304. ww11:
  305. move.b d5,47(a0)
  306. move.b (a1),31(a0)
  307.  
  308.         ;31(a0) = PORTAMENTO/INSTR. info
  309.             ;Bit 7 = portamento on
  310.             ;Bit 6 = portamento off
  311.             ;Bit 5-0 = instrument number
  312.         ;47(a0) = portamento value
  313.             ;Bit 7-5 = always zero
  314.             ;Bit 4 = up/down
  315.             ;Bit 3-0 = value
  316. t_porton:
  317. btst #7,d1
  318. beq.s noport
  319. move.b 2(a1),47(a0)    
  320. noport:
  321. andi.w #$007f,d0
  322. beq.L nextnote
  323. move.b d0,8(a0)
  324. move.b (a1),9(a0)
  325. move.b 32(a0),d2
  326. moveq #0,d3
  327. bset d2,d3
  328. or.w d3,audtemp
  329. move.w d3,$dff096
  330. move.b (a1),d1
  331. andi.w #$003f,d1    ;Max 64 instruments
  332. add.b 22(a0),d1
  333. move.l VOLpoint(pc),a2
  334. lsl.w #6,d1
  335. adda.w d1,a2
  336. move.w d5,16(a0)
  337. move.b (a2),23(a0)
  338. move.b (a2)+,24(a0)
  339. move.b (a2)+,d1
  340. andi.w #$00ff,d1
  341. move.b (a2)+,27(a0)
  342. move.b #$40,46(a0)
  343. move.b (a2)+,d0
  344. move.b d0,28(a0)
  345. move.b d0,29(a0)
  346. move.b (a2)+,30(a0)
  347. move.l a2,10(a0)
  348. move.l FRQpoint(pc),a2
  349. lsl.w #6,d1
  350. adda.w d1,a2
  351. move.l a2,18(a0)
  352. move.w d5,50(a0)
  353. move.b d5,26(a0)
  354. move.b d5,25(a0)
  355. nextnote:
  356. addq.w #2,40(a0)
  357. rts
  358.  
  359. EFFECTS:
  360. moveq #0,d7
  361. testsustain:
  362. tst.b 26(a0)        ;Is sustain counter = 0
  363. beq.s sustzero
  364. subq.b #1,26(a0)    ;if no, decrease counter
  365. bra.L VOLUfx
  366. sustzero:        ;Next part of effect sequence
  367. move.l 18(a0),a1    ;can be executed now.
  368. adda.w 50(a0),a1
  369. testeffects:
  370. cmpi.b #$e1,(a1)    ;E1 = end of FREQseq sequence
  371. beq.L VOLUfx
  372. cmpi.b #$e0,(a1)    ;E0 = loop to other part of sequence
  373. bne.s testnewsound
  374. move.b 1(a1),d0        ;loop to start of sequence + 1(a1)
  375. andi.w #$003f,d0
  376. move.w d0,50(a0)
  377. move.l 18(a0),a1
  378. adda.w d0,a1
  379. testnewsound:
  380. cmpi.b #$e2,(a1)    ;E2 = set waveform
  381. bne.s o49c64
  382. moveq #0,d0
  383. moveq #0,d1
  384. move.b 32(a0),d1
  385. bset d1,d0
  386. or.w d0,audtemp
  387. move.w d0,$dff096
  388. move.b 1(a1),d0
  389. andi.w #$00ff,d0
  390. lea SOUNDINFO(pc),a4
  391. add.w d0,d0
  392. move.w d0,d1
  393. add.w d1,d1
  394. add.w d1,d1
  395. add.w d1,d0
  396. adda.w d0,a4
  397. move.l 60(a0),a3
  398. move.l (a4),d1
  399. add.l #WAVEFORMS,d1
  400. move.l d1,(a3)
  401. move.l d1,68(a0)
  402. move.w 4(a4),4(a3)
  403. move.l 6(a4),64(a0)
  404. swap d1
  405. move.w #$0003,72(a0)
  406. tst.w d1
  407. bne.s o49c52
  408. move.w #$0002,72(a0)
  409. o49c52:
  410. clr.w 16(a0)
  411. move.b #$01,23(a0)
  412. addq.w #2,50(a0)
  413. bra.L o49d02
  414. o49c64:
  415. cmpi.b #$e4,(a1)
  416. bne.s testpatjmp
  417. move.b 1(a1),d0
  418. andi.w #$00ff,d0
  419. lea SOUNDINFO(pc),a4
  420. add.w d0,d0
  421. move.w d0,d1
  422. add.w d1,d1
  423. add.w d1,d1
  424. add.w d1,d0
  425. adda.w d0,a4
  426. move.l 60(a0),a3
  427. move.l (a4),d1
  428. add.l #WAVEFORMS,d1
  429. move.l d1,(a3)
  430. move.l d1,68(a0)
  431. move.w 4(a4),4(a3)
  432. move.l 6(a4),64(a0)
  433.  
  434. swap d1
  435. move.w #$0003,72(a0)
  436. tst.w d1
  437. bne.s o49cae
  438. move.w #$0002,72(a0)
  439. o49cae:
  440. addq.w #2,50(a0)
  441. bra.s o49d02
  442. testpatjmp:
  443. cmpi.b #$e7,(a1)
  444. bne.s testnewsustain
  445. move.b 1(a1),d0
  446. andi.w #$00ff,d0
  447. lsl.w #6,d0
  448. move.l FRQpoint(pc),a1
  449. adda.w d0,a1
  450. move.l a1,18(a0)
  451. move.w d7,50(a0)
  452. bra.L testeffects
  453. testnewsustain:
  454. cmpi.b #$e8,(a1)    ;E8 = set sustain time
  455. bne.s o49cea
  456. move.b 1(a1),26(a0)
  457. addq.w #2,50(a0)
  458. bra.L testsustain
  459. o49cea:
  460. cmpi.b #$e3,(a1)
  461. bne.s o49d02
  462. addq.w #3,50(a0)
  463. move.b 1(a1),27(a0)
  464. move.b 2(a1),28(a0)
  465. o49d02:
  466. move.l 18(a0),a1
  467. adda.w 50(a0),a1
  468. move.b (a1),43(a0)
  469. addq.w #1,50(a0)
  470. VOLUfx:
  471. tst.b 25(a0)
  472. beq.s o49d1e
  473. subq.b #1,25(a0)
  474. bra.s o49d70
  475. o49d1e:
  476. subq.b #1,23(a0)
  477. bne.s o49d70
  478. move.b 24(a0),23(a0)
  479. o49d2a:
  480. move.l 10(a0),a1
  481. adda.w 16(a0),a1
  482. move.b (a1),d0
  483. cmpi.b #$e8,d0
  484. bne.s o49d4a
  485. addq.w #2,16(a0)
  486. move.b 1(a1),25(a0)
  487. bra.s VOLUfx
  488. o49d4a:
  489. cmpi.b #$e1,d0
  490. beq.s o49d70
  491. cmpi.b #$e0,d0
  492. bne.s o49d68
  493. move.b 1(a1),d0
  494. andi.l #$003f,d0
  495. subq.b #5,d0
  496. move.w d0,16(a0)
  497. bra.s o49d2a
  498. o49d68:
  499. move.b (a1),45(a0)
  500. addq.w #1,16(a0)
  501. o49d70:
  502. move.b 43(a0),d0
  503. bmi.s o49d7e
  504. add.b 8(a0),d0
  505. add.b 44(a0),d0
  506. o49d7e:
  507. andi.w #$007f,d0
  508. lea PERIODS(pc),a1
  509. add.w d0,d0
  510. move.w d0,d1
  511. adda.w d0,a1
  512. move.w (a1),d0
  513. move.b 46(a0),d7
  514. tst.b 30(a0)
  515. beq.s o49d9e
  516. subq.b #1,30(a0)
  517.  
  518. bra.s o49df4
  519. o49d9e:
  520. move.b d1,d5
  521. move.b 28(a0),d4
  522. add.b d4,d4
  523. move.b 29(a0),d1
  524. tst.b d7
  525. bpl.s o49db4
  526. btst #0,d7
  527. bne.s o49dda
  528. o49db4:
  529. btst #5,d7
  530. bne.s o49dc8
  531. sub.b 27(a0),d1
  532. bcc.s o49dd6
  533. bset #5,d7
  534. moveq #0,d1
  535. bra.s o49dd6
  536. o49dc8:
  537. add.b 27(a0),d1
  538. cmp.b d4,d1
  539. bcs.s o49dd6
  540. bclr #5,d7
  541. move.b d4,d1
  542. o49dd6:
  543. move.b d1,29(a0)
  544. o49dda:
  545. lsr.b #1,d4
  546. sub.b d4,d1
  547. bcc.s o49de4
  548. subi.w #$0100,d1
  549. o49de4:
  550. addi.b #$a0,d5
  551. bcs.s o49df2
  552. o49dea:
  553. add.w d1,d1
  554. addi.b #$18,d5
  555. bcc.s o49dea
  556. o49df2:
  557. add.w d1,d0
  558. o49df4:
  559. eori.b #$01,d7
  560. move.b d7,46(a0)
  561.  
  562. ; DO THE PORTAMENTO THING
  563. moveq #0,d1
  564. move.b 47(a0),d1    ;get portavalue
  565. beq.s a56d0        ;0=no portamento
  566. cmpi.b #$1f,d1
  567. bls.s portaup
  568. portadown: 
  569. andi.w #$1f,d1
  570. neg.w d1
  571. portaup:
  572. sub.w d1,56(a0)
  573. a56d0:
  574. add.w 56(a0),d0
  575. o49e3e:
  576. cmpi.w #$0070,d0
  577. bhi.s nn1
  578. move.w #$0071,d0
  579. nn1:
  580. cmpi.w #$06b0,d0
  581. bls.s nn2
  582. move.w #$06b0,d0
  583. nn2:
  584. moveq #0,d1
  585. move.b 45(a0),d1
  586. rts
  587.  
  588.  
  589.  
  590. pervol: blk.b 16,0    ;Periods & Volumes temp. store
  591. respcnt: dc.w 0        ;Replay speed counter 
  592. repspd:  dc.w 0        ;Replay speed counter temp
  593. onoff:   dc.w 0        ;Music on/off flag.
  594. firseq:     dc.w 0        ;First sequence
  595. lasseq:     dc.w 0        ;Last sequence
  596. audtemp: dc.w 0
  597. spdtemp: dc.w 0
  598.  
  599. V1data:  blk.b 64,0    ;Voice 1 data area
  600. offset1: blk.b 02,0    ;Is added to start of sound
  601. ssize1:  blk.b 02,0    ;Length of sound
  602. start1:  blk.b 06,0    ;Start of sound
  603.  
  604. V2data:  blk.b 64,0    ;Voice 2 data area
  605. offset2: blk.b 02,0
  606. ssize2:  blk.b 02,0
  607. start2:  blk.b 06,0
  608.  
  609. V3data:  blk.b 64,0    ;Voice 3 data area
  610. offset3: blk.b 02,0
  611. ssize3:  blk.b 02,0
  612. start3:  blk.b 06,0
  613.  
  614. V4data:  blk.b 64,0    ;Voice 4 data area
  615. offset4: blk.b 02,0
  616. ssize4:  blk.b 02,0
  617. start4:  blk.b 06,0
  618.  
  619. o4a0c8: dc.l $00000000,$00100003,$00200006,$00300009
  620. SEQpoint: dc.l 0
  621. PATpoint: dc.l 0
  622. FRQpoint: dc.l 0
  623. VOLpoint: dc.l 0
  624.  
  625.  
  626. even
  627. SILENT: dc.w $0100,$0000,$0000,$00e1
  628.  
  629. PERIODS:dc.w $06b0,$0650,$05f4,$05a0,$054c,$0500,$04b8,$0474
  630.     dc.w $0434,$03f8,$03c0,$038a,$0358,$0328,$02fa,$02d0
  631.     dc.w $02a6,$0280,$025c,$023a,$021a,$01fc,$01e0,$01c5
  632.     dc.w $01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d
  633.     dc.w $010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be,$00b4
  634.     dc.w $00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
  635.     dc.w $0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071
  636.     dc.w $0071,$0071,$0071,$0071,$0d60,$0ca0,$0be8,$0b40
  637.     dc.w $0a98,$0a00,$0970,$08e8,$0868,$07f0,$0780,$0714
  638.     dc.w $1ac0,$1940,$17d0,$1680,$1530,$1400,$12e0,$11d0
  639.     dc.w $10d0,$0fe0,$0f00,$0e28
  640.  
  641. SOUNDINFO:
  642. ;Offset.l , Sound-length.w , Start-offset.w , Repeat-length.w 
  643.  
  644. ;Reserved for samples
  645.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  646.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  647.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  648.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  649.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  650.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  651.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  652.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  653.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  654.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  655. ;Reserved for synth sounds
  656.     dc.w $0000,$0000 ,$0010 ,$0000 ,$0010 
  657.     dc.w $0000,$0020 ,$0010 ,$0000 ,$0010 
  658.     dc.w $0000,$0040 ,$0010 ,$0000 ,$0010 
  659.     dc.w $0000,$0060 ,$0010 ,$0000 ,$0010 
  660.     dc.w $0000,$0080 ,$0010 ,$0000 ,$0010 
  661.     dc.w $0000,$00a0 ,$0010 ,$0000 ,$0010 
  662.     dc.w $0000,$00c0 ,$0010 ,$0000 ,$0010 
  663.     dc.w $0000,$00e0 ,$0010 ,$0000 ,$0010 
  664.     dc.w $0000,$0100 ,$0010 ,$0000 ,$0010 
  665.     dc.w $0000,$0120 ,$0010 ,$0000 ,$0010 
  666.     dc.w $0000,$0140 ,$0010 ,$0000 ,$0010 
  667.     dc.w $0000,$0160 ,$0010 ,$0000 ,$0010 
  668.     dc.w $0000,$0180 ,$0010 ,$0000 ,$0010 
  669.     dc.w $0000,$01a0 ,$0010 ,$0000 ,$0010 
  670.     dc.w $0000,$01c0 ,$0010 ,$0000 ,$0010 
  671.     dc.w $0000,$01e0 ,$0010 ,$0000 ,$0010 
  672.     dc.w $0000,$0200 ,$0010 ,$0000 ,$0010 
  673.     dc.w $0000,$0220 ,$0010 ,$0000 ,$0010 
  674.     dc.w $0000,$0240 ,$0010 ,$0000 ,$0010 
  675.     dc.w $0000,$0260 ,$0010 ,$0000 ,$0010 
  676.     dc.w $0000,$0280 ,$0010 ,$0000 ,$0010 
  677.     dc.w $0000,$02a0 ,$0010 ,$0000 ,$0010 
  678.     dc.w $0000,$02c0 ,$0010 ,$0000 ,$0010 
  679.     dc.w $0000,$02e0 ,$0010 ,$0000 ,$0010 
  680.     dc.w $0000,$0300 ,$0010 ,$0000 ,$0010 
  681.     dc.w $0000,$0320 ,$0010 ,$0000 ,$0010 
  682.     dc.w $0000,$0340 ,$0010 ,$0000 ,$0010 
  683.     dc.w $0000,$0360 ,$0010 ,$0000 ,$0010 
  684.     dc.w $0000,$0380 ,$0010 ,$0000 ,$0010 
  685.     dc.w $0000,$03a0 ,$0010 ,$0000 ,$0010 
  686.     dc.w $0000,$03c0 ,$0010 ,$0000 ,$0010 
  687.     dc.w $0000,$03e0 ,$0010 ,$0000 ,$0010 
  688.     dc.w $0000,$0400 ,$0008 ,$0000 ,$0008 
  689.     dc.w $0000,$0410 ,$0008 ,$0000 ,$0008 
  690.     dc.w $0000,$0420 ,$0008 ,$0000 ,$0008 
  691.     dc.w $0000,$0430 ,$0008 ,$0000 ,$0008 
  692.     dc.w $0000,$0440 ,$0008 ,$0000 ,$0008
  693.     dc.w $0000,$0450 ,$0008 ,$0000 ,$0008
  694.     dc.w $0000,$0460 ,$0008 ,$0000 ,$0008
  695.     dc.w $0000,$0470 ,$0008 ,$0000 ,$0008
  696.     dc.w $0000,$0480 ,$0010 ,$0000 ,$0010
  697.     dc.w $0000,$04a0 ,$0008 ,$0000 ,$0008
  698.     dc.w $0000,$04b0 ,$0010 ,$0000 ,$0010
  699.     dc.w $0000,$04d0 ,$0010 ,$0000 ,$0010
  700.     dc.w $0000,$04f0 ,$0008 ,$0000 ,$0008
  701.     dc.w $0000,$0500 ,$0008 ,$0000 ,$0008
  702.     dc.w $0000,$0510 ,$0018 ,$0000 ,$0018
  703.  
  704.  
  705. WAVEFORMS:
  706. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  707. dc.w $3f37,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  708. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  709. dc.w $c037,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  710. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  711. dc.w $c0b8,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  712. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  713. dc.w $c0b8,$b027,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  714. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  715. dc.w $c0b8,$b0a8,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  716. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  717. dc.w $c0b8,$b0a8,$a017,$0f07,$ff07,$0f17,$1f27,$2f37
  718. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  719. dc.w $c0b8,$b0a8,$a098,$0f07,$ff07,$0f17,$1f27,$2f37
  720. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  721. dc.w $c0b8,$b0a8,$a098,$9007,$ff07,$0f17,$1f27,$2f37
  722. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  723. dc.w $c0b8,$b0a8,$a098,$9088,$ff07,$0f17,$1f27,$2f37
  724. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  725. dc.w $c0b8,$b0a8,$a098,$9088,$8007,$0f17,$1f27,$2f37
  726. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  727. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$0f17,$1f27,$2f37
  728. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  729. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9017,$1f27,$2f37
  730. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  731. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$1f27,$2f37
  732. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  733. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a027,$2f37
  734. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  735. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$2f37
  736. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  737. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$b037
  738. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  739. dc.w $7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  740. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  741. dc.w $817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  742. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  743. dc.w $8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  744. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  745. dc.w $8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  746. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  747. dc.w $8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  748. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  749. dc.w $8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  750. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  751. dc.w $8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  752. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  753. dc.w $8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f
  754. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  755. dc.w $8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f
  756. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  757. dc.w $8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f
  758. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  759. dc.w $8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f
  760. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  761. dc.w $8181,$8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f
  762. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  763. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f
  764. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  765. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$817f,$7f7f
  766. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  767. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$7f7f
  768. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  769. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$807f
  770. dc.w $8080,$8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f
  771. dc.w $8080,$8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f
  772. dc.w $8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  773. dc.w $8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  774. dc.w $8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  775. dc.w $8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  776. dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  777. dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  778. dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  779. dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  780. dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  781. dc.w $4545,$797d,$7a77,$7066,$6158,$534d,$2c20,$1812
  782. dc.w $04db,$d3cd,$c6bc,$b5ae,$a8a3,$9d99,$938e,$8b8a
  783. dc.w $4545,$797d,$7a77,$7066,$5b4b,$4337,$2c20,$1812
  784. dc.w $04f8,$e8db,$cfc6,$beb0,$a8a4,$9e9a,$9594,$8d83
  785. dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  786. dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  787. dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  788. dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  789. dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  790. MODULE:    BLK.B    60000,0
  791.