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

  1. *************************************
  2. *                                   *
  3. *         - SAMPLE PLAYER -         *
  4. *                                   *
  5. *    STEREO WITH BALANCE CONTROL    *
  6. *   DONE BY FRANKENSTEIN 29/10/92   *
  7. *                                   *
  8. *************************************
  9.  
  10. SPBEG    EQU $0700
  11. SPEND    EQU $B3FF
  12.  
  13. ZP    EQU $F0        (AND $F1)
  14. END    EQU $F2        (AND $F3)
  15. COUNT    EQU $F4
  16. VLEFT    EQU $F5
  17. VRIGHT    EQU $F6
  18.  
  19. TAB0123    EQU $BA00
  20. TAB4567    EQU $BB00
  21.  
  22.     ORG $B400
  23.  
  24. * BALANCE LEFT   RIGHT
  25. * ------- ------ ------
  26. *  7        0     14 <- MAX.RIGHT
  27. *  6        1     13
  28. *  5        2     12
  29. *  4        3     11
  30. *  3        4     10
  31. *  2        5      9
  32. *  1        6      8
  33. *  0        7      7 <- NEUTRAL
  34. *  1        8      6
  35. *  2        9      5
  36. *  3       10      4
  37. *  4       11      3
  38. *  5       12      2
  39. *  6       13      1
  40. *  7       14      0 <- MAX.LEFT
  41.  
  42. *------------------------------------
  43. * MAIN LOOP
  44. *------------------------------------
  45.  
  46.     LDA #3
  47.     STA $D20F
  48.     STA $D21F
  49.  
  50. * SET BALANCE VOLUMES
  51.  
  52.     LDA #%00010111
  53.     STA VLEFT
  54.     STA VRIGHT
  55.  
  56.     JSR MAKTAB
  57.     JSR INTOFF
  58.  
  59. LOOP    LDA #SPBEG:L
  60.     STA ZP
  61.     LDA #SPBEG:H
  62.     STA ZP+1
  63.  
  64.     LDA #SPEND:L
  65.     STA END
  66.     LDA #SPEND:H
  67.     STA END+1
  68.  
  69.     LDA #0
  70.     STA COUNT
  71.     STA $D400
  72.  
  73.     JSR PLAY
  74.     JMP LOOP
  75.  
  76.     JSR INTON
  77.     RTS
  78.  
  79. *------------------------------------
  80. * CREATE LOOKUP TABLES:
  81. *
  82. * FOR 4-BIT SAMPLES:
  83. *
  84. * TAB0123: ----xxxx
  85. * TAB4567: xxxx----
  86. *
  87. * x      : BITS USED TO LOOKUP
  88. * -      : DOESN'T MATTER BITS
  89. *
  90. * SETS VOLUME ONLY BIT IN TABLES TOO!
  91. *------------------------------------
  92.  
  93. * 4-BIT TABLES (8/4=2)
  94.  
  95. MAKTAB    LDX #0
  96.  
  97. N0123    TXA
  98.     AND #%00001111
  99.     ORA #%00010000
  100.     STA TAB0123,X
  101.     INX
  102.     BNE N0123
  103.  
  104. N4567    TXA
  105.     AND #%11110000
  106.     LSR
  107.     LSR
  108.     LSR
  109.     LSR
  110.     ORA #%00010000
  111.     STA TAB4567,X
  112.     INX
  113.     BNE N4567
  114.  
  115.     RTS
  116.  
  117. *------------------------------------
  118. * INTERRUPTS OFF
  119. *------------------------------------
  120.  
  121. INTOFF    LDA #0
  122.     STA $D20E
  123.     STA $D40E
  124.     RTS
  125.  
  126. *------------------------------------
  127. * INTERRUPTS ON
  128. *------------------------------------
  129.  
  130. INTON    LDA 16
  131.     STA $D20E
  132.     LDA #$C0
  133.     STA $D40E
  134.     RTS
  135.  
  136. *------------------------------------
  137. * SELECT/OPTION FOR BALANCE CONTROL
  138. *------------------------------------
  139.  
  140. * PLAY: xxxx0000
  141.  
  142. PLAY    LDY #0
  143.     LDA (ZP),Y
  144.     TAX
  145.     LDA TAB4567,X
  146.  
  147.     LDX VLEFT
  148.     LDY VRIGHT
  149.  
  150.     STA $D40A
  151.     STA $D201
  152.     STA $D211
  153.  
  154.     STA $D40A
  155.     STX $D203
  156.     STX $D205
  157.     STY $D213
  158.     STY $D215
  159.  
  160.     INC COUNT    ; DELAY
  161.     BEQ YOVOL
  162.  
  163.     LDA #8
  164.     STA $D01F
  165.     BNE EXITVC
  166.  
  167. YOVOL    LDA $D01F
  168.     EOR #%00000111
  169.     BEQ EXITVC
  170.  
  171.     CMP #%00000100    ; OPTION
  172.     BNE OPTNO
  173.  
  174. * OPTION = BALANCE TO RIGHT
  175.  
  176.     LDX VRIGHT
  177.     CPX #16+14    ; R.MAX?
  178.     BEQ EXITVC
  179.  
  180.     INX
  181.     STX VRIGHT
  182.     LDX VLEFT
  183.     DEX
  184.     STX VLEFT
  185.     BNE EXITVC
  186.  
  187. * SELECT = BALANCE TO LEFT
  188.  
  189. OPTNO    CMP #%00000010    ; SELECT
  190.     BNE EXITVC
  191.  
  192.     LDX VLEFT
  193.     CPX #16+14    ; L.MAX?
  194.     BEQ EXITVC
  195.  
  196.     INX
  197.     STX VLEFT
  198.     LDX VRIGHT    
  199.     DEX
  200.     STX VRIGHT
  201.     NOP
  202.  
  203. * PLAY: 0000xxxx
  204.  
  205. EXITVC    LDY #0
  206.     LDA (ZP),Y
  207.     TAX
  208.     LDA TAB0123,X
  209.  
  210.     LDX VLEFT
  211.     LDY VRIGHT
  212.  
  213.     STA $D40A
  214.     STA $D201
  215.     STA $D211
  216.  
  217.     STA $D40A
  218.     STX $D203
  219.     STX $D205
  220.     STY $D213
  221.     STY $D215
  222.  
  223. *------------------------------------
  224. * GET NEXT BYTE FROM DATA
  225. *------------------------------------
  226.  
  227. NEXBT    INC ZP
  228.     BNE NOWAY
  229.     INC ZP+1
  230.  
  231. NOWAY    LDA ZP+1
  232.     CMP END+1
  233.     BEQ COULD
  234.  
  235.     NOP
  236.     NOP
  237.     NOP
  238.     NOP
  239.     JMP PLAY
  240.  
  241. COULD    LDA ZP
  242.     CMP END
  243.     BEQ QPLAY
  244.     JMP PLAY
  245.  
  246. QPLAY    RTS
  247.  
  248. * VARS
  249.  
  250. LEN    DFB 0,0¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯