home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 4: Phase Four / 17Bit_Phase_Four.iso / files / 2986.dms / 2986.adf / Effects / Delay.s < prev    next >
Text File  |  1993-12-04  |  4KB  |  181 lines

  1. ;
  2. ; TREG II Effect Structure
  3. ;
  4. HEADER:    dc.b    'TREG'            ; Header
  5.     dc.l    24975,2            ; TREG 2
  6. SLIDE1:    dc.b    'SLDR'
  7.     dc.l    VALS1-NAME1        ; Sliders Name Length
  8. NAME1:    dc.b    'Left Offset',0        ; Sliders Name
  9.     even
  10. VALS1:    dc.l    0            ; Data Register
  11.     dc.l    0            ; Min Value
  12.     dc.l    29000            ; Max Value
  13.     dc.l    0            ; Set Value
  14. SLIDE2:
  15.     dc.l    VALS2-NAME2        ; Sliders Name Length
  16. NAME2:    dc.b    'Right Offset',0    ; Sliders Name
  17.     even
  18. VALS2:    dc.l    1            ; Data Register
  19.     dc.l    0            ; Min Value
  20.     dc.l    29000            ; Max Value
  21.     dc.l    1000            ; Set Value
  22. SLIDE3:
  23.     dc.l    VALS3-NAME3        ; Sliders Name Length
  24. NAME3:    dc.b    'Left Volume',0        ; Sliders Name
  25.     even
  26. VALS3:    dc.l    2            ; Data Register
  27.     dc.l    0            ; Min Value
  28.     dc.l    64            ; Max Value
  29.     dc.l    64            ; Set Value
  30. SLIDE4:
  31.     dc.l    VALS4-NAME4        ; Sliders Name Length
  32. NAME4:    dc.b    'Right Volume',0    ; Sliders Name
  33.     even
  34. VALS4:    dc.l    3            ; Data Register
  35.     dc.l    0            ; Min Value
  36.     dc.l    64            ; Max Value
  37.     dc.l    64            ; Set Value
  38. CODE:
  39.     dc.l    LEFT-START        ; Left Offset From Start
  40.     dc.l    RIGHT-START        ; Right Offset From Start
  41.     dc.l    -1            ; Stereo Offset From Start
  42.  
  43.     even
  44. START:                    ; Marks Code Start
  45.  
  46. LEFT:                    ; Left Channel Code
  47.     MOVE.B    #0,$BFE301
  48.     MOVE.B    #3,$BFE201
  49.     MOVE.B    #6,$BFD200
  50.     MOVE.B    #2,$BFD000
  51.     BRA.S    Delay
  52. RIGHT:                    ; Right Channel Code
  53.     MOVE.B    #0,$BFE301
  54.     MOVE.B    #3,$BFE201
  55.     MOVE.B    #6,$BFD200
  56.     MOVE.B    #4,$BFD000
  57. Delay:
  58.     Move.w #$4000,$dff09a
  59.     Move.w #%0111111111111111,$dff096
  60.     Movem.l D0-D7/A0-A6,-(sp)
  61.     Sub.l #30000,D0
  62.     Sub.l #30000,D1
  63.     Neg.l D0
  64.     Neg.l D1
  65.     Move.l D0,D4
  66.     Move.l D0,D7
  67.     Move.l D1,D5
  68.     Move.l D1,D6
  69.     Move.l D2,D0
  70.     Move.l D3,D1
  71.     Move.l D3,D2
  72.     Move.l D0,D3
  73.     Move.w D0,$dff0a8
  74.     Move.w D1,$dff0b8
  75.     Move.w D2,$dff0c8
  76.     Move.w D3,$dff0d8
  77.     Lea Storeage(pc),A6
  78.     Move.l A6,D0
  79.     Lea StoreEnd(pc),A6
  80.     Move.l A6,D1
  81.     Bsr REFClear
  82.     Move.w #$20,$dff0a6
  83.     Move.w #$20,$dff0b6
  84.     Move.w #$20,$dff0c6
  85.     Move.w #$20,$dff0d6
  86.     Move.w #$1,$dff0a4
  87.     Move.w #$1,$dff0b4
  88.     Move.w #$1,$dff0c4
  89.     Move.w #$1,$dff0d4
  90.     Move.l D0,A5
  91.     Move.l D1,A6
  92.     Move.l A5,A0
  93.     Move.l A5,A1
  94.     Move.l A5,A2
  95.     Move.l A5,A3
  96.     Move.l A5,A4
  97.     Add.l D4,A0
  98.     Add.l D5,A1
  99.     Add.l D6,A2
  100.     Add.l D7,A3
  101. REFReverbLoop:
  102.     Move.b $bfe101,D0
  103.     Add.b #$80,D0
  104.     Move.b D0,(A4)+
  105.     Cmp.l A6,A0
  106.     Blt.s REFOk1
  107.     Move.l A5,A0
  108. REFOk1:
  109.     Cmp.l A6,A1
  110.     Blt.s REFOk2
  111.     Move.l A5,A1
  112. REFOk2:
  113.     Cmp.l A6,A2
  114.     Blt.s REFOk3
  115.     Move.l A5,A2
  116. REFOk3:
  117.     Cmp.l A6,A3
  118.     Blt.s REFOk4
  119.     Move.l A5,A3
  120. REFOk4:
  121.     Cmp.l A6,A4
  122.     Blt.s REFOk5
  123.     Move.l A5,A4
  124. REFOk5:    
  125.     Move.w #$780,$dff09c
  126.     Move.b (A0)+,$dff0aa
  127.     Move.b (A1)+,$dff0ba
  128.     Move.b (A2)+,$dff0ca
  129.     Move.b (A3)+,$dff0da
  130. REFUnFinished:
  131.     Btst #$1,$dff01e
  132.     Beq REFUnFinished
  133.     Btst #$6,$bfe001
  134.     Beq.s REFQuit
  135.     Bra REFReverbLoop
  136. REFQuit:
  137.     Movem.l (sp)+,D0-D7/A0-A6
  138.     Move.w #%1000001111110000,$dff096
  139.     Move.w #$c000,$dff09a
  140.     Rts
  141. REFClear:
  142.     Move.l D0,A0
  143.     Move.l D1,A1
  144. REFCLoop:
  145.     Move.b #0,(A0)+
  146.     Cmp.l A0,A1
  147.     Bhi REFCLoop
  148.     Rts
  149.     
  150. Clear:    Dc.l 0,0,0
  151. Storeage: Dcb.b 30000
  152. StoreEnd: dc.b 0,0
  153.  
  154.     END                ; Program END
  155.  
  156.                     NOTES
  157.                     -----
  158.  
  159.     If (0) Is Placed As The Offset Then TREG Will Disable The
  160.     Button To Select That Piece Of Code.
  161.     
  162.         E.g - If You Place (0) In STEREO Then TREG Will
  163.             Disable The "S" Button On The Main Screen.
  164.             
  165.     If (-1) Is Placed As The Data Register Then That Slider
  166.     Will Be Disabled.
  167.     
  168.     The Code MUST Be (PC) Relative As Hunks Will Be Removed!
  169.     The Code MUST Handle All Its Own Memory!
  170.     The Code MUST Store ALL Registers On The Stack And Return Them!
  171.     The Code MUST Handle Its Own Errors And Return A Code In D0
  172.  
  173.     Error Codes (D0)
  174.     ----- ----- ----
  175.     
  176.         0    -    Everything Worked Fine! (NO ERROR)
  177.         1    -    Out Of Free Memory!
  178.         2    -    Settings Error!
  179.         3    -    Stack Error!
  180.         4    -    Unknown Error!
  181.