home *** CD-ROM | disk | FTP | other *** search
/ Mega Magazine 5 / Mega_Magazine_05_19xx___nl_Side_B.atr / sampling.lzh / PLAYBOTH.SRC < prev    next >
Text File  |  1988-09-01  |  3KB  |  259 lines

  1. *************************************
  2. *                                   *
  3. *         - SAMPLE PLAYER -         *
  4. *                                   *
  5. * TO COMPARE THE DIFFERENCE BETWEEN *
  6. * PLAYING THE R.DAVID 2-BIT SAMPLES *      *
  7. *                                   *
  8. * THE WRONG WAY: PLAYED AS IF THEY  *
  9. * WERE 4-BIT SAMPLES (BIG DEMO)     *
  10. *                                   *
  11. * THE RIGHT WAY: PLAYED AS 2-BIT    *
  12. * POINTER SAMPLES (OFFICIAL WAY)    *
  13. *                                   *
  14. *************************************
  15.  
  16. SPBEG    EQU $1000
  17. SPEND    EQU $B400
  18.  
  19. ZP    EQU $F0        (AND $F1)
  20. END    EQU $F2        (AND $F3)
  21. SPLBYTE    EQU $F4
  22.  
  23. TAB01    EQU $B600
  24. TAB23    EQU $B700
  25. TAB45    EQU $B800
  26. TAB67    EQU $B900
  27.  
  28. TAB0123    EQU $BA00
  29. TAB4567    EQU $BB00
  30.  
  31.     ORG $B400
  32.  
  33.     LDA #SPBEG:L
  34.     STA ZP
  35.     LDA #SPBEG:H
  36.     STA ZP+1
  37.  
  38.     LDA #SPEND:L
  39.     STA END
  40.     LDA #SPEND:H
  41.     STA END+1
  42.  
  43. *------------------------------------
  44. * MAIN LOOP
  45. *------------------------------------
  46.  
  47.     JSR MAKTAB
  48.     JSR INTOFF
  49.     JSR PLAY
  50.     JSR INTON
  51.     RTS
  52.  
  53. *------------------------------------
  54. * CREATE A LOOKUP TABLES:
  55. *
  56. * FOR 2-BIT SAMPLES:
  57. *
  58. * TAB01  : ------xx
  59. * TAB23  : ----xx--
  60. * TAB45  : --xx----
  61. * TAB67  : xx------
  62. *
  63. * FOR 4-BIT SAMPLES:
  64. *
  65. * TAB0123: ----xxxx
  66. * TAB4567: xxxx----
  67. *
  68. * x      : BITS USED TO LOOKUP
  69. * -      : DOESN'T MATTER BITS
  70. *
  71. * SETS VOLUME ONLY BIT IN TABLES TOO!
  72. *------------------------------------
  73.  
  74. * 2-BIT TABLES (8/2=4)
  75.  
  76. MAKTAB    LDX #0
  77. N01    TXA
  78.     AND #%00000011
  79.     TAY
  80.     LDA RALF,Y
  81.     STA TAB01,X
  82.     INX
  83.     BNE N01
  84.  
  85. N23    TXA
  86.     AND #%00001100
  87.     LSR
  88.     LSR
  89.     TAY
  90.     LDA RALF,Y
  91.     STA TAB23,X
  92.     INX
  93.     BNE N23
  94.  
  95. N45    TXA
  96.     AND #%00110000
  97.     LSR
  98.     LSR
  99.     LSR
  100.     LSR
  101.     TAY
  102.     LDA RALF,Y
  103.     STA TAB45,X
  104.     INX
  105.     BNE N45
  106.  
  107. N67    TXA
  108.     AND #%11000000
  109.     LSR
  110.     LSR
  111.     LSR
  112.     LSR
  113.     LSR
  114.     LSR
  115.     TAY
  116.     LDA RALF,Y
  117.     STA TAB67,X
  118.     INX
  119.     BNE N67
  120.  
  121. * 4-BIT TABLES (8/4=2)
  122.  
  123. N0123    TXA
  124.     AND #%00001111
  125.     ORA #%00010000
  126.     STA TAB0123,X
  127.     INX
  128.     BNE N0123
  129.  
  130. N4567    TXA
  131.     AND #%11110000
  132.     LSR
  133.     LSR
  134.     LSR
  135.     LSR
  136.     ORA #%00010000
  137.     STA TAB4567,X
  138.     INX
  139.     BNE N4567
  140.  
  141.     RTS
  142.  
  143. * VALUES FOR POKEY
  144.  
  145. RALF    DFB $10,$13,$16,$19
  146.  
  147. *------------------------------------
  148. * INTERRUPTS OFF
  149. *------------------------------------
  150.  
  151. INTOFF    LDA #0
  152.     STA $D20E
  153.     STA $D40E
  154.     RTS
  155.  
  156. *------------------------------------
  157. * INTERRUPTS ON
  158. *------------------------------------
  159.  
  160. INTON    LDA 16
  161.     STA $D20E
  162.     LDA #$C0
  163.     STA $D40E
  164.     RTS
  165.  
  166. *------------------------------------
  167. * THIS ROUTINE PLAYS 2-BIT SAMPLES
  168. * HOLD OPTION FOR 4-BIT PLAYING
  169. *------------------------------------
  170.  
  171. PLAY    LDY #0
  172.  
  173. NOHO    LDA (ZP),Y
  174.     STA SPLBYTE
  175.     LDA $D01F
  176.     CMP #3        ;OPTION?
  177.     BNE TWOBIT
  178.  
  179. * PLAY: xxxx0000
  180.  
  181.     LDA SPLBYTE
  182.     TAX
  183.     LDA TAB4567,X
  184.  
  185.     STA $D40A
  186.     STA $D40A
  187.     STA $D201
  188.  
  189. * PLAY: 0000xxxx
  190.  
  191.     LDA SPLBYTE
  192.     TAX
  193.     LDA TAB0123,X
  194.  
  195.     STA $D40A
  196.     STA $D40A
  197.     STA $D201
  198.     BNE NEXBT    ;ALWAYS!
  199.  
  200. *------------------------------------
  201. * 2-BIT PLAY ROUTINE
  202. *------------------------------------
  203.  
  204. * PLAY: xx------
  205.  
  206. TWOBIT    LDA SPLBYTE
  207.     TAX
  208.     LDA TAB67,X
  209.  
  210.     STA $D40A
  211.     STA $D201
  212.  
  213. * PLAY: --xx----
  214.  
  215.     LDA SPLBYTE
  216.     TAX
  217.     LDA TAB45,X
  218.  
  219.     STA $D40A
  220.     STA $D201
  221.  
  222. * PLAY: ----xx--
  223.  
  224.     LDA SPLBYTE
  225.     TAX
  226.     LDA TAB23,X
  227.  
  228.     STA $D40A
  229.     STA $D201
  230.  
  231. * PLAY: ------xx
  232.  
  233.     LDA SPLBYTE
  234.     TAX
  235.     LDA TAB01,X
  236.  
  237.     STA $D40A
  238.     STA $D201
  239.  
  240. *------------------------------------
  241. * GET NEXT BYTE FROM DATA
  242. *------------------------------------
  243.  
  244. NEXBT    INC ZP
  245.     BNE NOWAY
  246.     INC ZP+1
  247.  
  248. NOWAY    LDA ZP+1
  249.     CMP END+1
  250.     BNE NOHO
  251.     LDA ZP
  252.     CMP END
  253.     BNE NOHO
  254.  
  255.     RTS
  256.  
  257. * VARS
  258.  
  259. LEN    DFB 0,0¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯