initial work on port
updated readme, new "build system," fixed some errors
This commit is contained in:
parent
9fcee05b53
commit
ff7c092581
|
@ -0,0 +1,3 @@
|
|||
obj
|
||||
gen
|
||||
test.s
|
|
@ -1,9 +0,0 @@
|
|||
IT.EXE: IT.OBJ IT_DISK.OBJ IT_DISPL.OBJ IT_EMS.OBJ IT_ERR.OBJ IT_F.OBJ IT_G.OBJ IT_H.OBJ \
|
||||
IT_I.OBJ IT_K.OBJ IT_L.OBJ IT_M.OBJ IT_NET.OBJ IT_MSG.OBJ IT_MUSIC.OBJ IT_NET.OBJ IT_OBJ1.OBJ IT_PE.OBJ IT_S.OBJ \
|
||||
IT_TUTE.OBJ IT_MMTSR.OBJ IT_MOUSE.OBJ IT_MDATA.OBJ IT_FOUR.OBJ IT_VESA.OBJ
|
||||
tlink /3 /s /v @source.lst
|
||||
|
||||
.ASM.OBJ:
|
||||
# TASM /Zi /m /uT310 /jSMART $*.asm
|
||||
TASM /m /uT310 /jSMART $*.asm
|
||||
|
29
README.md
29
README.md
|
@ -1,33 +1,20 @@
|
|||
Impulse Tracker
|
||||
===============
|
||||
|
||||
Full source code for Impulse Tracker, including sound drivers, network drivers,
|
||||
and some supporting documentation
|
||||
|
||||
|
||||
Eventually, maybe, a version of IT for modern systems
|
||||
|
||||
Pre-Requisite Software
|
||||
----------------------
|
||||
|
||||
To build Impulse Tracker, you will need:
|
||||
|
||||
- Turbo Assembler v4.1
|
||||
- Netwide Assembler
|
||||
|
||||
- Turbo Link v3.01
|
||||
- GCC
|
||||
|
||||
- Borland MAKE v4.0
|
||||
- sh
|
||||
|
||||
- A DOS environment
|
||||
|
||||
|
||||
|
||||
Once you have these, building IT.EXE should be just a single call to `MAKE`
|
||||
|
||||
|
||||
Sound drivers are build individually via M\*.BAT files inside the SoundDrivers
|
||||
subdirectory
|
||||
|
||||
|
||||
Once you have these, building IT should be just a single call to `./build`
|
||||
|
||||
Quick File Overview
|
||||
-------------------
|
||||
|
@ -105,8 +92,6 @@ Quick File Overview
|
|||
- SWITCH.INC:
|
||||
High level switches for the program
|
||||
|
||||
|
||||
|
||||
Frequently Asked Questions
|
||||
--------------------------
|
||||
|
||||
|
@ -129,10 +114,8 @@ A: The original code was compatible all the way back to an 8086 machine. 8086 wo
|
|||
conditional jumps only within +/-128 bytes, so I spent too much time shuffling code around to meet
|
||||
this restriction. When I shifted away from this 8086 restriction, I never went back to update the
|
||||
code that was mutilated by it.
|
||||
|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
License for this source code is pending.
|
||||
Refer to LICENSE.TXT
|
||||
|
|
44
SWITCH.INC
44
SWITCH.INC
|
@ -1,44 +0,0 @@
|
|||
|
||||
TRACEENABLED EQU 0
|
||||
|
||||
TUTORIAL = 0
|
||||
|
||||
EMSUSE41 = 0
|
||||
|
||||
SHOWVERSION = 0
|
||||
SHOWREGISTERNAME = 1
|
||||
|
||||
USE32BITSCREENCOPY = 0
|
||||
|
||||
SORTENABLED = 1
|
||||
DDCOMPRESS = 1
|
||||
ORDERSORT = 1
|
||||
FILTERENVELOPES = 1
|
||||
CHORDENTRY = 1
|
||||
SPECTRUMANALYSER = 1
|
||||
SAVESAMPLEWAV = 1
|
||||
ENABLEPRESETENVELOPES = 1
|
||||
ENABLESOLO = 1
|
||||
|
||||
DEFAULTFORMAT = 3 ; 0 = IT214, 1 = S3M, 2 = IT2xx, 3 = IT215
|
||||
|
||||
USEFPUCODE = 1 ; For IT_MUSIC, this will change from LUT to FPU code
|
||||
|
||||
OLDDRIVER = 0
|
||||
|
||||
MUSICDEBUG = 0
|
||||
EMSDEBUG = 0
|
||||
MEMORYDEBUG = 0
|
||||
ENABLEINT3 = 0 ; For debugging.
|
||||
|
||||
TIMERSCREEN = 1
|
||||
|
||||
NETWORKENABLED = 1
|
||||
SHOWPATTERNLENGTH = 0
|
||||
|
||||
IF TUTORIAL
|
||||
SORTENABLED = 1
|
||||
DDCOMPRESS = 1
|
||||
ENDIF
|
||||
|
||||
TRACKERVERSION = 217h ; Still have to change text in IT.ASM, IT_F.ASM
|
File diff suppressed because it is too large
Load Diff
|
@ -1,56 +1,56 @@
|
|||
|
||||
; 8-bit interpolated mixing routine, 4 samples at a time. Rearranged
|
||||
; MM7 contains volume as packed floating point
|
||||
; MM6 contains offset as packed integer offset
|
||||
; MM5 = DeltaOffset
|
||||
|
||||
; MM7 = RVol|LVol
|
||||
; MM6 = (1-Offset2)|Offset2|(1-Offset1)|Offset1
|
||||
|
||||
MovD MM0, [SampleBlock1] ; MM0 = x|x|x|x|S2H|S2L|S1H|S1L
|
||||
MovQ MM2, MM6
|
||||
|
||||
PSRAW MM2, 1
|
||||
PUnpckLBW MM0, MM0 ; MM0 = S2H|S2L|S1H|S1L
|
||||
|
||||
PAddW MM6, MM5
|
||||
PMAddWD MM0, MM2 ; MM0 = IS2|IS1
|
||||
|
||||
MovD MM1, [SampleBlock2] ; MM1 = x|x|x|x|S4H|S4L|S3H|S3L
|
||||
MovQ MM2, MM6
|
||||
|
||||
PUnpckLBW MM1, MM1 ; MM1 = S4H|S4L|S3H|S3L
|
||||
PSRAW MM2, 1
|
||||
|
||||
PI2FD MM0, MM0 ; MM0 = FIS2|FIS1
|
||||
PMAddWD MM1, MM2 ; MM1 = IS4|IS3
|
||||
|
||||
MovQ MM2, MM0
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FIS1|FIS1
|
||||
|
||||
PUnpckHDQ MM2, MM2 ; MM2 = FIS2|FIS2
|
||||
PI2FD MM1, MM1 ; MM1 = FIS4|FIS3
|
||||
|
||||
PFMul MM0, MM7 ; MM0 = R1|L1
|
||||
PAddW MM6, MM5
|
||||
|
||||
PFMul MM2, MM7 ; MM2 = R2|L2
|
||||
MovQ MM3, MM1
|
||||
|
||||
PFAdd MM0, [Buffer1]
|
||||
PUnpckLDQ MM1, MM1 ; MM1 = FIS3|FIS3
|
||||
|
||||
PFAdd MM2, [Buffer2]
|
||||
PUnpckHDQ MM3, MM3 ; MM3 = FIS4|FIS4
|
||||
|
||||
PFMul MM1, MM7
|
||||
MovQ [Buffer1], MM0
|
||||
|
||||
PFMul MM3, MM7
|
||||
PFAdd MM1, [Buffer3]
|
||||
|
||||
MovQ [Buffer2], MM2
|
||||
PFAdd MM3, [Buffer4]
|
||||
|
||||
MovQ [Buffer3], MM1
|
||||
MovQ [Buffer4], MM3
|
||||
|
||||
; 8-bit interpolated mixing routine, 4 samples at a time. Rearranged
|
||||
; MM7 contains volume as packed floating point
|
||||
; MM6 contains offset as packed integer offset
|
||||
; MM5 = DeltaOffset
|
||||
|
||||
; MM7 = RVol|LVol
|
||||
; MM6 = (1-Offset2)|Offset2|(1-Offset1)|Offset1
|
||||
|
||||
MovD MM0, [SampleBlock1] ; MM0 = x|x|x|x|S2H|S2L|S1H|S1L
|
||||
MovQ MM2, MM6
|
||||
|
||||
PSRAW MM2, 1
|
||||
PUnpckLBW MM0, MM0 ; MM0 = S2H|S2L|S1H|S1L
|
||||
|
||||
PAddW MM6, MM5
|
||||
PMAddWD MM0, MM2 ; MM0 = IS2|IS1
|
||||
|
||||
MovD MM1, [SampleBlock2] ; MM1 = x|x|x|x|S4H|S4L|S3H|S3L
|
||||
MovQ MM2, MM6
|
||||
|
||||
PUnpckLBW MM1, MM1 ; MM1 = S4H|S4L|S3H|S3L
|
||||
PSRAW MM2, 1
|
||||
|
||||
PI2FD MM0, MM0 ; MM0 = FIS2|FIS1
|
||||
PMAddWD MM1, MM2 ; MM1 = IS4|IS3
|
||||
|
||||
MovQ MM2, MM0
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FIS1|FIS1
|
||||
|
||||
PUnpckHDQ MM2, MM2 ; MM2 = FIS2|FIS2
|
||||
PI2FD MM1, MM1 ; MM1 = FIS4|FIS3
|
||||
|
||||
PFMul MM0, MM7 ; MM0 = R1|L1
|
||||
PAddW MM6, MM5
|
||||
|
||||
PFMul MM2, MM7 ; MM2 = R2|L2
|
||||
MovQ MM3, MM1
|
||||
|
||||
PFAdd MM0, [Buffer1]
|
||||
PUnpckLDQ MM1, MM1 ; MM1 = FIS3|FIS3
|
||||
|
||||
PFAdd MM2, [Buffer2]
|
||||
PUnpckHDQ MM3, MM3 ; MM3 = FIS4|FIS4
|
||||
|
||||
PFMul MM1, MM7
|
||||
MovQ [Buffer1], MM0
|
||||
|
||||
PFMul MM3, MM7
|
||||
PFAdd MM1, [Buffer3]
|
||||
|
||||
MovQ [Buffer2], MM2
|
||||
PFAdd MM3, [Buffer4]
|
||||
|
||||
MovQ [Buffer3], MM1
|
||||
MovQ [Buffer4], MM3
|
||||
|
|
|
@ -1,304 +1,304 @@
|
|||
|
||||
; 8-bit non interpolated mixing routine, 8 samples at a time. Not rearranged
|
||||
|
||||
; MM7 contains volume as packed floating point MM7 = RVol|LVol
|
||||
|
||||
MovD MM0, [SampleBlock1] ; Low 4 bytes contain samples 1-4
|
||||
MovD MM1, [SampleBlock2] ; Low 4 bytes contain samples 5-8
|
||||
|
||||
PUnpckLBW MM0, MM0 ; MM0 = S4|S3|S2|S1
|
||||
PUnpckLBW MM1, MM1 ; MM1 = S8|S7|S6|S5
|
||||
|
||||
MovQ MM2, MM0
|
||||
MovQ MM3, MM1
|
||||
|
||||
PUnpckLWD MM0, MM0 ; MM0 = S2|S1
|
||||
PUnpckLWD MM1, MM1 ; MM1 = S6|S5
|
||||
|
||||
PUnpckHWD MM2, MM2 ; MM2 = S4|S3
|
||||
PUnpckHWD MM3, MM3 ; MM3 = S8|S7
|
||||
|
||||
; What category do PI2FD instructions fall under? Are they AMD-3D ALU (ie.
|
||||
; only one resource shared between pipes?)
|
||||
|
||||
PI2FD MM0, MM0 ; MM0 = FS2|FS1
|
||||
PI2FD MM1, MM1 ; MM1 = FS6|FS5
|
||||
PI2FD MM2, MM2 ; MM2 = FS4|FS3
|
||||
PI2FD MM3, MM3 ; MM3 = FS8|FS7
|
||||
|
||||
MovQ MM4, MM0
|
||||
MovQ MM5, MM2
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS1|FS1
|
||||
PUnpckHDQ MM4, MM4 ; MM4 = FS2|FS2
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS3|FS3
|
||||
PUnpckHDQ MM5, MM5 ; MM5 = FS4|FS4
|
||||
|
||||
PFMul MM0, MM7 ; MM0 = R1|L1
|
||||
PFMul MM4, MM7 ; MM4 = R2|L2
|
||||
PFMul MM2, MM7 ; MM2 = R3|L3
|
||||
PFMul MM5, MM7 ; MM5 = R4|L4
|
||||
|
||||
PFAdd MM0, [Buffer1]
|
||||
PFAdd MM4, [Buffer2]
|
||||
PFAdd MM2, [Buffer3]
|
||||
PFAdd MM5, [Buffer4]
|
||||
|
||||
MovQ [Buffer1], MM0
|
||||
MovQ [Buffer2], MM4
|
||||
MovQ [Buffer3], MM2
|
||||
MovQ [Buffer4], MM5
|
||||
|
||||
MovQ MM0, MM1
|
||||
MovQ MM2, MM3
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS5|FS5
|
||||
PUnpckHDQ MM1, MM1 ; MM1 = FS6|FS6
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS7|FS7
|
||||
PUnpckHDQ MM3, MM3 ; MM3 = FS8|FS8
|
||||
|
||||
PFMul MM0, MM7
|
||||
PFMul MM1, MM7
|
||||
PFMul MM2, MM7
|
||||
PFMul MM3, MM7
|
||||
|
||||
PFAdd MM0, [Buffer5]
|
||||
PFAdd MM1, [Buffer6]
|
||||
PFAdd MM2, [Buffer7]
|
||||
PFAdd MM3, [Buffer8]
|
||||
|
||||
MovQ [Buffer5], MM0
|
||||
MovQ [Buffer6], MM1
|
||||
MovQ [Buffer7], MM2
|
||||
MovQ [Buffer8], MM3
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Rearranged to improve pairing
|
||||
; MM7 contains volume as packed floating point MM7 = RVol|LVol
|
||||
|
||||
MovD MM0, [SampleBlock1] ; Low 4 bytes contain samples 1-4
|
||||
MovD MM1, [SampleBlock2] ; Low 4 bytes contain samples 5-8
|
||||
|
||||
PUnpckLBW MM0, MM0 ; MM0 = S4|S3|S2|S1
|
||||
PUnpckLBW MM1, MM1 ; MM1 = S8|S7|S6|S5
|
||||
|
||||
MovQ MM2, MM0
|
||||
PUnpckLWD MM0, MM0 ; MM0 = S2|S1
|
||||
|
||||
MovQ MM3, MM1
|
||||
PUnpckLWD MM1, MM1 ; MM1 = S6|S5
|
||||
|
||||
PUnpckHWD MM2, MM2 ; MM2 = S4|S3
|
||||
PI2FD MM0, MM0 ; MM0 = FS2|FS1
|
||||
|
||||
PUnpckHWD MM3, MM3 ; MM3 = S8|S7
|
||||
PI2FD MM1, MM1 ; MM1 = FS6|FS5
|
||||
|
||||
MovQ MM4, MM0
|
||||
PI2FD MM2, MM2 ; MM2 = FS4|FS3
|
||||
|
||||
MovQ MM5, MM2
|
||||
PI2FD MM3, MM3 ; MM3 = FS8|FS7
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS1|FS1
|
||||
PUnpckHDQ MM4, MM4 ; MM4 = FS2|FS2
|
||||
|
||||
PFMul MM0, MM7 ; MM0 = R1|L1
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS3|FS3
|
||||
|
||||
PFMul MM4, MM7 ; MM4 = R2|L2
|
||||
PUnpckHDQ MM5, MM5 ; MM5 = FS4|FS4
|
||||
|
||||
PFMul MM2, MM7 ; MM2 = R3|L3
|
||||
PFAdd MM0, [Buffer1]
|
||||
|
||||
PFMul MM5, MM7 ; MM5 = R4|L4
|
||||
PFAdd MM4, [Buffer2]
|
||||
|
||||
PFAdd MM2, [Buffer3]
|
||||
MovQ [Buffer1], MM0
|
||||
|
||||
MovQ [Buffer2], MM4
|
||||
PFAdd MM5, [Buffer4]
|
||||
|
||||
MovQ [Buffer3], MM2
|
||||
MovQ MM0, MM1
|
||||
|
||||
MovQ [Buffer4], MM5
|
||||
MovQ MM2, MM3
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS5|FS5
|
||||
PUnpckHDQ MM1, MM1 ; MM1 = FS6|FS6
|
||||
|
||||
PFMul MM0, MM7
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS7|FS7
|
||||
|
||||
PFMul MM1, MM7
|
||||
PUnpckHDQ MM3, MM3 ; MM3 = FS8|FS8
|
||||
|
||||
PFAdd MM0, [Buffer5]
|
||||
PFMul MM2, MM7
|
||||
|
||||
PFAdd MM1, [Buffer6]
|
||||
PFMul MM3, MM7
|
||||
|
||||
MovQ [Buffer5], MM0
|
||||
PFAdd MM2, [Buffer7]
|
||||
|
||||
MovQ [Buffer6], MM1
|
||||
PFAdd MM3, [Buffer8]
|
||||
|
||||
MovQ [Buffer7], MM2 ; These will be rearranged to match
|
||||
MovQ [Buffer8], MM3 ; the next iteration.
|
||||
|
||||
|
||||
|
||||
; 16-bit non interpolated mixing routine, 8 samples at a time. Not rearranged
|
||||
|
||||
; MM7 contains volume as packed floating point MM7 = RVol|LVol
|
||||
|
||||
MovQ MM0, [SampleBlock1] ; MM0 = S4|S3|S2|S1
|
||||
MovQ MM1, [SampleBlock2] ; MM1 = S8|S7|S6|S5
|
||||
|
||||
MovQ MM2, MM0
|
||||
MovQ MM3, MM1
|
||||
|
||||
PUnpckLWD MM0, MM0 ; MM0 = S2|S1
|
||||
PUnpckLWD MM1, MM1 ; MM1 = S6|S5
|
||||
|
||||
PUnpckHWD MM2, MM2 ; MM2 = S4|S3
|
||||
PUnpckHWD MM3, MM3 ; MM3 = S8|S7
|
||||
|
||||
; What category do PI2FD instructions fall under? Are they AMD-3D ALU (ie.
|
||||
; only one resource shared between pipes?)
|
||||
|
||||
PI2FD MM0, MM0 ; MM0 = FS2|FS1
|
||||
PI2FD MM1, MM1 ; MM1 = FS6|FS5
|
||||
PI2FD MM2, MM2 ; MM2 = FS4|FS3
|
||||
PI2FD MM3, MM3 ; MM3 = FS8|FS7
|
||||
|
||||
MovQ MM4, MM0
|
||||
MovQ MM5, MM2
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS1|FS1
|
||||
PUnpckHDQ MM4, MM4 ; MM4 = FS2|FS2
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS3|FS3
|
||||
PUnpckHDQ MM5, MM5 ; MM5 = FS4|FS4
|
||||
|
||||
PFMul MM0, MM7 ; MM0 = R1|L1
|
||||
PFMul MM4, MM7 ; MM4 = R2|L2
|
||||
PFMul MM2, MM7 ; MM2 = R3|L3
|
||||
PFMul MM5, MM7 ; MM5 = R4|L4
|
||||
|
||||
PFAdd MM0, [Buffer1]
|
||||
PFAdd MM4, [Buffer2]
|
||||
PFAdd MM2, [Buffer3]
|
||||
PFAdd MM5, [Buffer4]
|
||||
|
||||
MovQ [Buffer1], MM0
|
||||
MovQ [Buffer2], MM4
|
||||
MovQ [Buffer3], MM2
|
||||
MovQ [Buffer4], MM5
|
||||
|
||||
MovQ MM0, MM1
|
||||
MovQ MM2, MM3
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS5|FS5
|
||||
PUnpckHDQ MM1, MM1 ; MM1 = FS6|FS6
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS7|FS7
|
||||
PUnpckHDQ MM3, MM3 ; MM3 = FS8|FS8
|
||||
|
||||
PFMul MM0, MM7
|
||||
PFMul MM1, MM7
|
||||
PFMul MM2, MM7
|
||||
PFMul MM3, MM7
|
||||
|
||||
PFAdd MM0, [Buffer5]
|
||||
PFAdd MM1, [Buffer6]
|
||||
PFAdd MM2, [Buffer7]
|
||||
PFAdd MM3, [Buffer8]
|
||||
|
||||
MovQ [Buffer5], MM0
|
||||
MovQ [Buffer6], MM1
|
||||
MovQ [Buffer7], MM2
|
||||
MovQ [Buffer8], MM3
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Rearranged to improve pairing
|
||||
; MM7 contains volume as packed floating point MM7 = RVol|LVol
|
||||
|
||||
MovQ MM0, [SampleBlock1] ; MM0 = S4|S3|S2|S1
|
||||
MovQ MM1, [SampleBlock2] ; MM1 = S8|S7|S6|S5
|
||||
|
||||
MovQ MM2, MM0
|
||||
PUnpckLWD MM0, MM0 ; MM0 = S2|S1
|
||||
|
||||
MovQ MM3, MM1
|
||||
PUnpckLWD MM1, MM1 ; MM1 = S6|S5
|
||||
|
||||
PI2FD MM0, MM0 ; MM0 = FS2|FS1
|
||||
PUnpckHWD MM2, MM2 ; MM2 = S4|S3
|
||||
|
||||
PI2FD MM1, MM1 ; MM1 = FS6|FS5
|
||||
PUnpckHWD MM3, MM3 ; MM3 = S8|S7
|
||||
|
||||
; What category do PI2FD instructions fall under? Are they AMD-3D ALU (ie.
|
||||
; only one resource shared between pipes?)
|
||||
|
||||
MovQ MM4, MM0
|
||||
PI2FD MM2, MM2 ; MM2 = FS4|FS3
|
||||
|
||||
MovQ MM5, MM2
|
||||
PI2FD MM3, MM3 ; MM3 = FS8|FS7
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS1|FS1
|
||||
PUnpckHDQ MM4, MM4 ; MM4 = FS2|FS2
|
||||
|
||||
PFMul MM0, MM7 ; MM0 = R1|L1
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS3|FS3
|
||||
|
||||
PFMul MM4, MM7 ; MM4 = R2|L2
|
||||
PUnpckHDQ MM5, MM5 ; MM5 = FS4|FS4
|
||||
|
||||
PFAdd MM0, [Buffer1]
|
||||
PFMul MM2, MM7 ; MM2 = R3|L3
|
||||
|
||||
PFAdd MM4, [Buffer2]
|
||||
PFMul MM5, MM7 ; MM5 = R4|L4
|
||||
|
||||
PFAdd MM2, [Buffer3]
|
||||
MovQ [Buffer1], MM0
|
||||
|
||||
PFAdd MM5, [Buffer4]
|
||||
MovQ [Buffer2], MM4
|
||||
|
||||
MovQ MM0, MM1
|
||||
MovQ [Buffer3], MM2
|
||||
|
||||
MovQ MM2, MM3
|
||||
MovQ [Buffer4], MM5
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS5|FS5
|
||||
PUnpckHDQ MM1, MM1 ; MM1 = FS6|FS6
|
||||
|
||||
PFMul MM0, MM7
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS7|FS7
|
||||
|
||||
PFMul MM1, MM7
|
||||
PUnpckHDQ MM3, MM3 ; MM3 = FS8|FS8
|
||||
|
||||
PFAdd MM0, [Buffer5]
|
||||
PFMul MM2, MM7
|
||||
|
||||
PFAdd MM1, [Buffer6]
|
||||
PFMul MM3, MM7
|
||||
|
||||
MovQ [Buffer5], MM0
|
||||
PFAdd MM2, [Buffer7]
|
||||
|
||||
MovQ [Buffer6], MM1
|
||||
PFAdd MM3, [Buffer8]
|
||||
|
||||
MovQ [Buffer7], MM2
|
||||
MovQ [Buffer8], MM3
|
||||
|
||||
|
||||
; 8-bit non interpolated mixing routine, 8 samples at a time. Not rearranged
|
||||
|
||||
; MM7 contains volume as packed floating point MM7 = RVol|LVol
|
||||
|
||||
MovD MM0, [SampleBlock1] ; Low 4 bytes contain samples 1-4
|
||||
MovD MM1, [SampleBlock2] ; Low 4 bytes contain samples 5-8
|
||||
|
||||
PUnpckLBW MM0, MM0 ; MM0 = S4|S3|S2|S1
|
||||
PUnpckLBW MM1, MM1 ; MM1 = S8|S7|S6|S5
|
||||
|
||||
MovQ MM2, MM0
|
||||
MovQ MM3, MM1
|
||||
|
||||
PUnpckLWD MM0, MM0 ; MM0 = S2|S1
|
||||
PUnpckLWD MM1, MM1 ; MM1 = S6|S5
|
||||
|
||||
PUnpckHWD MM2, MM2 ; MM2 = S4|S3
|
||||
PUnpckHWD MM3, MM3 ; MM3 = S8|S7
|
||||
|
||||
; What category do PI2FD instructions fall under? Are they AMD-3D ALU (ie.
|
||||
; only one resource shared between pipes?)
|
||||
|
||||
PI2FD MM0, MM0 ; MM0 = FS2|FS1
|
||||
PI2FD MM1, MM1 ; MM1 = FS6|FS5
|
||||
PI2FD MM2, MM2 ; MM2 = FS4|FS3
|
||||
PI2FD MM3, MM3 ; MM3 = FS8|FS7
|
||||
|
||||
MovQ MM4, MM0
|
||||
MovQ MM5, MM2
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS1|FS1
|
||||
PUnpckHDQ MM4, MM4 ; MM4 = FS2|FS2
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS3|FS3
|
||||
PUnpckHDQ MM5, MM5 ; MM5 = FS4|FS4
|
||||
|
||||
PFMul MM0, MM7 ; MM0 = R1|L1
|
||||
PFMul MM4, MM7 ; MM4 = R2|L2
|
||||
PFMul MM2, MM7 ; MM2 = R3|L3
|
||||
PFMul MM5, MM7 ; MM5 = R4|L4
|
||||
|
||||
PFAdd MM0, [Buffer1]
|
||||
PFAdd MM4, [Buffer2]
|
||||
PFAdd MM2, [Buffer3]
|
||||
PFAdd MM5, [Buffer4]
|
||||
|
||||
MovQ [Buffer1], MM0
|
||||
MovQ [Buffer2], MM4
|
||||
MovQ [Buffer3], MM2
|
||||
MovQ [Buffer4], MM5
|
||||
|
||||
MovQ MM0, MM1
|
||||
MovQ MM2, MM3
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS5|FS5
|
||||
PUnpckHDQ MM1, MM1 ; MM1 = FS6|FS6
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS7|FS7
|
||||
PUnpckHDQ MM3, MM3 ; MM3 = FS8|FS8
|
||||
|
||||
PFMul MM0, MM7
|
||||
PFMul MM1, MM7
|
||||
PFMul MM2, MM7
|
||||
PFMul MM3, MM7
|
||||
|
||||
PFAdd MM0, [Buffer5]
|
||||
PFAdd MM1, [Buffer6]
|
||||
PFAdd MM2, [Buffer7]
|
||||
PFAdd MM3, [Buffer8]
|
||||
|
||||
MovQ [Buffer5], MM0
|
||||
MovQ [Buffer6], MM1
|
||||
MovQ [Buffer7], MM2
|
||||
MovQ [Buffer8], MM3
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Rearranged to improve pairing
|
||||
; MM7 contains volume as packed floating point MM7 = RVol|LVol
|
||||
|
||||
MovD MM0, [SampleBlock1] ; Low 4 bytes contain samples 1-4
|
||||
MovD MM1, [SampleBlock2] ; Low 4 bytes contain samples 5-8
|
||||
|
||||
PUnpckLBW MM0, MM0 ; MM0 = S4|S3|S2|S1
|
||||
PUnpckLBW MM1, MM1 ; MM1 = S8|S7|S6|S5
|
||||
|
||||
MovQ MM2, MM0
|
||||
PUnpckLWD MM0, MM0 ; MM0 = S2|S1
|
||||
|
||||
MovQ MM3, MM1
|
||||
PUnpckLWD MM1, MM1 ; MM1 = S6|S5
|
||||
|
||||
PUnpckHWD MM2, MM2 ; MM2 = S4|S3
|
||||
PI2FD MM0, MM0 ; MM0 = FS2|FS1
|
||||
|
||||
PUnpckHWD MM3, MM3 ; MM3 = S8|S7
|
||||
PI2FD MM1, MM1 ; MM1 = FS6|FS5
|
||||
|
||||
MovQ MM4, MM0
|
||||
PI2FD MM2, MM2 ; MM2 = FS4|FS3
|
||||
|
||||
MovQ MM5, MM2
|
||||
PI2FD MM3, MM3 ; MM3 = FS8|FS7
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS1|FS1
|
||||
PUnpckHDQ MM4, MM4 ; MM4 = FS2|FS2
|
||||
|
||||
PFMul MM0, MM7 ; MM0 = R1|L1
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS3|FS3
|
||||
|
||||
PFMul MM4, MM7 ; MM4 = R2|L2
|
||||
PUnpckHDQ MM5, MM5 ; MM5 = FS4|FS4
|
||||
|
||||
PFMul MM2, MM7 ; MM2 = R3|L3
|
||||
PFAdd MM0, [Buffer1]
|
||||
|
||||
PFMul MM5, MM7 ; MM5 = R4|L4
|
||||
PFAdd MM4, [Buffer2]
|
||||
|
||||
PFAdd MM2, [Buffer3]
|
||||
MovQ [Buffer1], MM0
|
||||
|
||||
MovQ [Buffer2], MM4
|
||||
PFAdd MM5, [Buffer4]
|
||||
|
||||
MovQ [Buffer3], MM2
|
||||
MovQ MM0, MM1
|
||||
|
||||
MovQ [Buffer4], MM5
|
||||
MovQ MM2, MM3
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS5|FS5
|
||||
PUnpckHDQ MM1, MM1 ; MM1 = FS6|FS6
|
||||
|
||||
PFMul MM0, MM7
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS7|FS7
|
||||
|
||||
PFMul MM1, MM7
|
||||
PUnpckHDQ MM3, MM3 ; MM3 = FS8|FS8
|
||||
|
||||
PFAdd MM0, [Buffer5]
|
||||
PFMul MM2, MM7
|
||||
|
||||
PFAdd MM1, [Buffer6]
|
||||
PFMul MM3, MM7
|
||||
|
||||
MovQ [Buffer5], MM0
|
||||
PFAdd MM2, [Buffer7]
|
||||
|
||||
MovQ [Buffer6], MM1
|
||||
PFAdd MM3, [Buffer8]
|
||||
|
||||
MovQ [Buffer7], MM2 ; These will be rearranged to match
|
||||
MovQ [Buffer8], MM3 ; the next iteration.
|
||||
|
||||
|
||||
|
||||
; 16-bit non interpolated mixing routine, 8 samples at a time. Not rearranged
|
||||
|
||||
; MM7 contains volume as packed floating point MM7 = RVol|LVol
|
||||
|
||||
MovQ MM0, [SampleBlock1] ; MM0 = S4|S3|S2|S1
|
||||
MovQ MM1, [SampleBlock2] ; MM1 = S8|S7|S6|S5
|
||||
|
||||
MovQ MM2, MM0
|
||||
MovQ MM3, MM1
|
||||
|
||||
PUnpckLWD MM0, MM0 ; MM0 = S2|S1
|
||||
PUnpckLWD MM1, MM1 ; MM1 = S6|S5
|
||||
|
||||
PUnpckHWD MM2, MM2 ; MM2 = S4|S3
|
||||
PUnpckHWD MM3, MM3 ; MM3 = S8|S7
|
||||
|
||||
; What category do PI2FD instructions fall under? Are they AMD-3D ALU (ie.
|
||||
; only one resource shared between pipes?)
|
||||
|
||||
PI2FD MM0, MM0 ; MM0 = FS2|FS1
|
||||
PI2FD MM1, MM1 ; MM1 = FS6|FS5
|
||||
PI2FD MM2, MM2 ; MM2 = FS4|FS3
|
||||
PI2FD MM3, MM3 ; MM3 = FS8|FS7
|
||||
|
||||
MovQ MM4, MM0
|
||||
MovQ MM5, MM2
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS1|FS1
|
||||
PUnpckHDQ MM4, MM4 ; MM4 = FS2|FS2
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS3|FS3
|
||||
PUnpckHDQ MM5, MM5 ; MM5 = FS4|FS4
|
||||
|
||||
PFMul MM0, MM7 ; MM0 = R1|L1
|
||||
PFMul MM4, MM7 ; MM4 = R2|L2
|
||||
PFMul MM2, MM7 ; MM2 = R3|L3
|
||||
PFMul MM5, MM7 ; MM5 = R4|L4
|
||||
|
||||
PFAdd MM0, [Buffer1]
|
||||
PFAdd MM4, [Buffer2]
|
||||
PFAdd MM2, [Buffer3]
|
||||
PFAdd MM5, [Buffer4]
|
||||
|
||||
MovQ [Buffer1], MM0
|
||||
MovQ [Buffer2], MM4
|
||||
MovQ [Buffer3], MM2
|
||||
MovQ [Buffer4], MM5
|
||||
|
||||
MovQ MM0, MM1
|
||||
MovQ MM2, MM3
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS5|FS5
|
||||
PUnpckHDQ MM1, MM1 ; MM1 = FS6|FS6
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS7|FS7
|
||||
PUnpckHDQ MM3, MM3 ; MM3 = FS8|FS8
|
||||
|
||||
PFMul MM0, MM7
|
||||
PFMul MM1, MM7
|
||||
PFMul MM2, MM7
|
||||
PFMul MM3, MM7
|
||||
|
||||
PFAdd MM0, [Buffer5]
|
||||
PFAdd MM1, [Buffer6]
|
||||
PFAdd MM2, [Buffer7]
|
||||
PFAdd MM3, [Buffer8]
|
||||
|
||||
MovQ [Buffer5], MM0
|
||||
MovQ [Buffer6], MM1
|
||||
MovQ [Buffer7], MM2
|
||||
MovQ [Buffer8], MM3
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Rearranged to improve pairing
|
||||
; MM7 contains volume as packed floating point MM7 = RVol|LVol
|
||||
|
||||
MovQ MM0, [SampleBlock1] ; MM0 = S4|S3|S2|S1
|
||||
MovQ MM1, [SampleBlock2] ; MM1 = S8|S7|S6|S5
|
||||
|
||||
MovQ MM2, MM0
|
||||
PUnpckLWD MM0, MM0 ; MM0 = S2|S1
|
||||
|
||||
MovQ MM3, MM1
|
||||
PUnpckLWD MM1, MM1 ; MM1 = S6|S5
|
||||
|
||||
PI2FD MM0, MM0 ; MM0 = FS2|FS1
|
||||
PUnpckHWD MM2, MM2 ; MM2 = S4|S3
|
||||
|
||||
PI2FD MM1, MM1 ; MM1 = FS6|FS5
|
||||
PUnpckHWD MM3, MM3 ; MM3 = S8|S7
|
||||
|
||||
; What category do PI2FD instructions fall under? Are they AMD-3D ALU (ie.
|
||||
; only one resource shared between pipes?)
|
||||
|
||||
MovQ MM4, MM0
|
||||
PI2FD MM2, MM2 ; MM2 = FS4|FS3
|
||||
|
||||
MovQ MM5, MM2
|
||||
PI2FD MM3, MM3 ; MM3 = FS8|FS7
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS1|FS1
|
||||
PUnpckHDQ MM4, MM4 ; MM4 = FS2|FS2
|
||||
|
||||
PFMul MM0, MM7 ; MM0 = R1|L1
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS3|FS3
|
||||
|
||||
PFMul MM4, MM7 ; MM4 = R2|L2
|
||||
PUnpckHDQ MM5, MM5 ; MM5 = FS4|FS4
|
||||
|
||||
PFAdd MM0, [Buffer1]
|
||||
PFMul MM2, MM7 ; MM2 = R3|L3
|
||||
|
||||
PFAdd MM4, [Buffer2]
|
||||
PFMul MM5, MM7 ; MM5 = R4|L4
|
||||
|
||||
PFAdd MM2, [Buffer3]
|
||||
MovQ [Buffer1], MM0
|
||||
|
||||
PFAdd MM5, [Buffer4]
|
||||
MovQ [Buffer2], MM4
|
||||
|
||||
MovQ MM0, MM1
|
||||
MovQ [Buffer3], MM2
|
||||
|
||||
MovQ MM2, MM3
|
||||
MovQ [Buffer4], MM5
|
||||
|
||||
PUnpckLDQ MM0, MM0 ; MM0 = FS5|FS5
|
||||
PUnpckHDQ MM1, MM1 ; MM1 = FS6|FS6
|
||||
|
||||
PFMul MM0, MM7
|
||||
PUnpckLDQ MM2, MM2 ; MM2 = FS7|FS7
|
||||
|
||||
PFMul MM1, MM7
|
||||
PUnpckHDQ MM3, MM3 ; MM3 = FS8|FS8
|
||||
|
||||
PFAdd MM0, [Buffer5]
|
||||
PFMul MM2, MM7
|
||||
|
||||
PFAdd MM1, [Buffer6]
|
||||
PFMul MM3, MM7
|
||||
|
||||
MovQ [Buffer5], MM0
|
||||
PFAdd MM2, [Buffer7]
|
||||
|
||||
MovQ [Buffer6], MM1
|
||||
PFAdd MM3, [Buffer8]
|
||||
|
||||
MovQ [Buffer7], MM2
|
||||
MovQ [Buffer8], MM3
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,101 +1,101 @@
|
|||
;
|
||||
; Debug macro. To write to the file, use "Trace <logmessage>"
|
||||
;
|
||||
|
||||
IF TRACEENABLED
|
||||
|
||||
IF CREATENEWLOGFILE
|
||||
FirstTime DB 0
|
||||
ENDIF
|
||||
|
||||
LogFileName DB "Logfile.Txt", 0
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc WriteDebugFile
|
||||
|
||||
PushA
|
||||
Push DS
|
||||
|
||||
Push CS
|
||||
Pop DS
|
||||
|
||||
Mov DX, Offset LogFileName
|
||||
|
||||
IF CREATENEWLOGFILE
|
||||
|
||||
Cmp DS:FirstTime, 0
|
||||
JNE WriteDebugFile1
|
||||
|
||||
Mov AH, 3Ch
|
||||
Xor CX, CX
|
||||
Int 21h
|
||||
JC WriteDebugFileEnd
|
||||
|
||||
Mov DS:FirstTime, 1
|
||||
XChg AX, BX
|
||||
Jmp WriteDebugFile2
|
||||
|
||||
WriteDebugFile1:
|
||||
|
||||
ENDIF
|
||||
Mov AX, 3D02h
|
||||
Int 21h
|
||||
JC WriteDebugFileEnd
|
||||
|
||||
XChg AX, BX
|
||||
|
||||
Mov AX, 4202h
|
||||
Xor CX, CX
|
||||
Xor DX, DX
|
||||
Int 21h ; Move to end of file
|
||||
|
||||
WriteDebugFile2:
|
||||
Mov AH, 40h
|
||||
Mov CX, 82
|
||||
Mov DX, SI
|
||||
Int 21h
|
||||
|
||||
Mov AH, 3Eh
|
||||
Int 21h
|
||||
|
||||
WriteDebugFileEnd:
|
||||
Pop DS
|
||||
PopA
|
||||
Ret
|
||||
|
||||
EndP WriteDebugFile
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Trace Macro LogMessage
|
||||
Local X, Y
|
||||
|
||||
PushF
|
||||
Push SI
|
||||
Jmp Y
|
||||
X:
|
||||
DB LogMessage
|
||||
DB 80-($-Offset X) Dup (0)
|
||||
DB 0Dh, 0Ah
|
||||
Y:
|
||||
Mov SI, Offset X
|
||||
Call WriteDebugFile
|
||||
Pop SI
|
||||
PopF
|
||||
|
||||
EndM
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
ELSE
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Trace Macro LogMessage
|
||||
EndM
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
ENDIF
|
||||
|
||||
;
|
||||
; Debug macro. To write to the file, use "Trace <logmessage>"
|
||||
;
|
||||
|
||||
IF TRACEENABLED
|
||||
|
||||
IF CREATENEWLOGFILE
|
||||
FirstTime DB 0
|
||||
ENDIF
|
||||
|
||||
LogFileName DB "Logfile.Txt", 0
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc WriteDebugFile
|
||||
|
||||
PushA
|
||||
Push DS
|
||||
|
||||
Push CS
|
||||
Pop DS
|
||||
|
||||
Mov DX, Offset LogFileName
|
||||
|
||||
IF CREATENEWLOGFILE
|
||||
|
||||
Cmp DS:FirstTime, 0
|
||||
JNE WriteDebugFile1
|
||||
|
||||
Mov AH, 3Ch
|
||||
Xor CX, CX
|
||||
Int 21h
|
||||
JC WriteDebugFileEnd
|
||||
|
||||
Mov DS:FirstTime, 1
|
||||
XChg AX, BX
|
||||
Jmp WriteDebugFile2
|
||||
|
||||
WriteDebugFile1:
|
||||
|
||||
ENDIF
|
||||
Mov AX, 3D02h
|
||||
Int 21h
|
||||
JC WriteDebugFileEnd
|
||||
|
||||
XChg AX, BX
|
||||
|
||||
Mov AX, 4202h
|
||||
Xor CX, CX
|
||||
Xor DX, DX
|
||||
Int 21h ; Move to end of file
|
||||
|
||||
WriteDebugFile2:
|
||||
Mov AH, 40h
|
||||
Mov CX, 82
|
||||
Mov DX, SI
|
||||
Int 21h
|
||||
|
||||
Mov AH, 3Eh
|
||||
Int 21h
|
||||
|
||||
WriteDebugFileEnd:
|
||||
Pop DS
|
||||
PopA
|
||||
Ret
|
||||
|
||||
EndP WriteDebugFile
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Trace Macro LogMessage
|
||||
Local X, Y
|
||||
|
||||
PushF
|
||||
Push SI
|
||||
Jmp Y
|
||||
X:
|
||||
DB LogMessage
|
||||
DB 80-($-Offset X) Dup (0)
|
||||
DB 0Dh, 0Ah
|
||||
Y:
|
||||
Mov SI, Offset X
|
||||
Call WriteDebugFile
|
||||
Pop SI
|
||||
PopF
|
||||
|
||||
EndM
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
ELSE
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Trace Macro LogMessage
|
||||
EndM
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
ENDIF
|
||||
|
||||
|
|
|
@ -1,113 +1,113 @@
|
|||
|
||||
DMAData Label Byte
|
||||
; Port/Mask, Port/Clear, Port/DMAMode, Address, Page, Count, Port/Mask
|
||||
DB 0Ah, 4, 0Ch, 0, 0Bh, 58h, 87h, 0, 1, 0Ah, 0
|
||||
DB 0Ah, 5, 0Ch, 0, 0Bh, 59h, 83h, 2, 3, 0Ah, 1
|
||||
DB 0Ah, 6, 0Ch, 0, 0Bh, 5Ah, 81h, 4, 5, 0Ah, 2
|
||||
DB 0Ah, 7, 0Ch, 0, 0Bh, 5Bh, 82h, 6, 7, 0Ah, 3
|
||||
DB 0D4h, 4, 0D8h, 0, 0D6h, 58h, 8Fh, 0C0h, 0C2h, 0D4h, 0
|
||||
DB 0D4h, 5, 0D8h, 0, 0D6h, 59h, 8Bh, 0C4h, 0C6h, 0D4h, 1
|
||||
DB 0D4h, 6, 0D8h, 0, 0D6h, 5Ah, 89h, 0C8h, 0CAh, 0D4h, 2
|
||||
DB 0D4h, 7, 0D8h, 0, 0D6h, 5Bh, 8Ah, 0CCh, 0CEh, 0D4h, 3
|
||||
|
||||
ActualDMAPtr Label DWord
|
||||
ActualDMAOffset DW 0
|
||||
ActualDMASegment DW 0
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc SetDMA ; BX:AX points to DMA buffer
|
||||
; DL = DMA Channel
|
||||
; DI = DMA Size
|
||||
PushA
|
||||
Push DS
|
||||
|
||||
Push CS
|
||||
Pop DS
|
||||
Assume DS:Driver
|
||||
|
||||
Mov ActualDMASegment, BX
|
||||
Mov ActualDMAOffset, AX
|
||||
|
||||
Mov CH, BH
|
||||
ShR CH, 4
|
||||
ShL BX, 4
|
||||
Add BX, AX
|
||||
AdC CH, 0
|
||||
Mov SI, BX ; CH:BH:BL contains 24 bit DMA address
|
||||
Neg SI
|
||||
Cmp SI, DI
|
||||
JA SetDMA1
|
||||
|
||||
Add ActualDMAOffset, SI
|
||||
Add BX, SI
|
||||
AdC CH, 0
|
||||
|
||||
SetDMA1:
|
||||
Cmp DL, 3
|
||||
JBE SetDMA2
|
||||
|
||||
ShR DI, 1
|
||||
Push CX
|
||||
ShR CH, 1
|
||||
Pop CX
|
||||
RCR BX, 1
|
||||
|
||||
SetDMA2:
|
||||
Mov AL, 11
|
||||
Mul DL
|
||||
Mov SI, AX
|
||||
Add SI, Offset DMAData
|
||||
|
||||
Xor DX, DX
|
||||
|
||||
LodsB ; Set mask
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Clear Ptrs
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Set Mode
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = page port
|
||||
Mov AL, CH
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = address port
|
||||
Mov AL, BL
|
||||
Out DX, AL
|
||||
Mov AL, BH
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = count port
|
||||
Mov AX, DI
|
||||
Dec AX
|
||||
Out DX, AL
|
||||
Mov AL, AH
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Reset mask
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
Pop DS
|
||||
PopA
|
||||
|
||||
Ret
|
||||
|
||||
EndP SetDMA
|
||||
Assume DS:Nothing
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
|
||||
DMAData Label Byte
|
||||
; Port/Mask, Port/Clear, Port/DMAMode, Address, Page, Count, Port/Mask
|
||||
DB 0Ah, 4, 0Ch, 0, 0Bh, 58h, 87h, 0, 1, 0Ah, 0
|
||||
DB 0Ah, 5, 0Ch, 0, 0Bh, 59h, 83h, 2, 3, 0Ah, 1
|
||||
DB 0Ah, 6, 0Ch, 0, 0Bh, 5Ah, 81h, 4, 5, 0Ah, 2
|
||||
DB 0Ah, 7, 0Ch, 0, 0Bh, 5Bh, 82h, 6, 7, 0Ah, 3
|
||||
DB 0D4h, 4, 0D8h, 0, 0D6h, 58h, 8Fh, 0C0h, 0C2h, 0D4h, 0
|
||||
DB 0D4h, 5, 0D8h, 0, 0D6h, 59h, 8Bh, 0C4h, 0C6h, 0D4h, 1
|
||||
DB 0D4h, 6, 0D8h, 0, 0D6h, 5Ah, 89h, 0C8h, 0CAh, 0D4h, 2
|
||||
DB 0D4h, 7, 0D8h, 0, 0D6h, 5Bh, 8Ah, 0CCh, 0CEh, 0D4h, 3
|
||||
|
||||
ActualDMAPtr Label DWord
|
||||
ActualDMAOffset DW 0
|
||||
ActualDMASegment DW 0
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc SetDMA ; BX:AX points to DMA buffer
|
||||
; DL = DMA Channel
|
||||
; DI = DMA Size
|
||||
PushA
|
||||
Push DS
|
||||
|
||||
Push CS
|
||||
Pop DS
|
||||
Assume DS:Driver
|
||||
|
||||
Mov ActualDMASegment, BX
|
||||
Mov ActualDMAOffset, AX
|
||||
|
||||
Mov CH, BH
|
||||
ShR CH, 4
|
||||
ShL BX, 4
|
||||
Add BX, AX
|
||||
AdC CH, 0
|
||||
Mov SI, BX ; CH:BH:BL contains 24 bit DMA address
|
||||
Neg SI
|
||||
Cmp SI, DI
|
||||
JA SetDMA1
|
||||
|
||||
Add ActualDMAOffset, SI
|
||||
Add BX, SI
|
||||
AdC CH, 0
|
||||
|
||||
SetDMA1:
|
||||
Cmp DL, 3
|
||||
JBE SetDMA2
|
||||
|
||||
ShR DI, 1
|
||||
Push CX
|
||||
ShR CH, 1
|
||||
Pop CX
|
||||
RCR BX, 1
|
||||
|
||||
SetDMA2:
|
||||
Mov AL, 11
|
||||
Mul DL
|
||||
Mov SI, AX
|
||||
Add SI, Offset DMAData
|
||||
|
||||
Xor DX, DX
|
||||
|
||||
LodsB ; Set mask
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Clear Ptrs
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Set Mode
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = page port
|
||||
Mov AL, CH
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = address port
|
||||
Mov AL, BL
|
||||
Out DX, AL
|
||||
Mov AL, BH
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = count port
|
||||
Mov AX, DI
|
||||
Dec AX
|
||||
Out DX, AL
|
||||
Mov AL, AH
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Reset mask
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
Pop DS
|
||||
PopA
|
||||
|
||||
Ret
|
||||
|
||||
EndP SetDMA
|
||||
Assume DS:Nothing
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
|
|
|
@ -1,113 +1,113 @@
|
|||
|
||||
DMAData Label Byte
|
||||
; Port/Mask, Port/Clear, Port/DMAMode, Address, Page, Count, Port/Mask
|
||||
DB 0Ah, 4, 0Ch, 0, 0Bh, 08h, 87h, 0, 1, 0Ah, 0
|
||||
DB 0Ah, 5, 0Ch, 0, 0Bh, 09h, 83h, 2, 3, 0Ah, 1
|
||||
DB 0Ah, 6, 0Ch, 0, 0Bh, 0Ah, 81h, 4, 5, 0Ah, 2
|
||||
DB 0Ah, 7, 0Ch, 0, 0Bh, 0Bh, 82h, 6, 7, 0Ah, 3
|
||||
DB 0D4h, 4, 0D8h, 0, 0D6h, 08h, 8Fh, 0C0h, 0C2h, 0D4h, 0
|
||||
DB 0D4h, 5, 0D8h, 0, 0D6h, 09h, 8Bh, 0C4h, 0C6h, 0D4h, 1
|
||||
DB 0D4h, 6, 0D8h, 0, 0D6h, 0Ah, 89h, 0C8h, 0CAh, 0D4h, 2
|
||||
DB 0D4h, 7, 0D8h, 0, 0D6h, 0Bh, 8Ah, 0CCh, 0CEh, 0D4h, 3
|
||||
|
||||
ActualDMAPtr Label DWord
|
||||
ActualDMAOffset DW 0
|
||||
ActualDMASegment DW 0
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc SetDMA ; BX:AX points to DMA buffer
|
||||
; DL = DMA Channel
|
||||
; DI = DMA Size
|
||||
PushA
|
||||
Push DS
|
||||
|
||||
Push CS
|
||||
Pop DS
|
||||
Assume DS:Driver
|
||||
|
||||
Mov ActualDMASegment, BX
|
||||
Mov ActualDMAOffset, AX
|
||||
|
||||
Mov CH, BH
|
||||
ShR CH, 4
|
||||
ShL BX, 4
|
||||
Add BX, AX
|
||||
AdC CH, 0
|
||||
Mov SI, BX ; CH:BH:BL contains 24 bit DMA address
|
||||
Neg SI
|
||||
Cmp SI, DI
|
||||
JA SetDMA1
|
||||
|
||||
Add ActualDMAOffset, SI
|
||||
Add BX, SI
|
||||
AdC CH, 0
|
||||
|
||||
SetDMA1:
|
||||
Cmp DL, 3
|
||||
JBE SetDMA2
|
||||
|
||||
ShR DI, 1
|
||||
Push CX
|
||||
ShR CH, 1
|
||||
Pop CX
|
||||
RCR BX, 1
|
||||
|
||||
SetDMA2:
|
||||
Mov AL, 11
|
||||
Mul DL
|
||||
Mov SI, AX
|
||||
Add SI, Offset DMAData
|
||||
|
||||
Xor DX, DX
|
||||
|
||||
LodsB ; Set mask
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Clear Ptrs
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Set Mode
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = page port
|
||||
Mov AL, CH
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = address port
|
||||
Mov AL, BL
|
||||
Out DX, AL
|
||||
Mov AL, BH
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = count port
|
||||
Mov AX, DI
|
||||
Dec AX
|
||||
Out DX, AL
|
||||
Mov AL, AH
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Reset mask
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
Pop DS
|
||||
PopA
|
||||
|
||||
Ret
|
||||
|
||||
EndP SetDMA
|
||||
Assume DS:Nothing
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
|
||||
DMAData Label Byte
|
||||
; Port/Mask, Port/Clear, Port/DMAMode, Address, Page, Count, Port/Mask
|
||||
DB 0Ah, 4, 0Ch, 0, 0Bh, 08h, 87h, 0, 1, 0Ah, 0
|
||||
DB 0Ah, 5, 0Ch, 0, 0Bh, 09h, 83h, 2, 3, 0Ah, 1
|
||||
DB 0Ah, 6, 0Ch, 0, 0Bh, 0Ah, 81h, 4, 5, 0Ah, 2
|
||||
DB 0Ah, 7, 0Ch, 0, 0Bh, 0Bh, 82h, 6, 7, 0Ah, 3
|
||||
DB 0D4h, 4, 0D8h, 0, 0D6h, 08h, 8Fh, 0C0h, 0C2h, 0D4h, 0
|
||||
DB 0D4h, 5, 0D8h, 0, 0D6h, 09h, 8Bh, 0C4h, 0C6h, 0D4h, 1
|
||||
DB 0D4h, 6, 0D8h, 0, 0D6h, 0Ah, 89h, 0C8h, 0CAh, 0D4h, 2
|
||||
DB 0D4h, 7, 0D8h, 0, 0D6h, 0Bh, 8Ah, 0CCh, 0CEh, 0D4h, 3
|
||||
|
||||
ActualDMAPtr Label DWord
|
||||
ActualDMAOffset DW 0
|
||||
ActualDMASegment DW 0
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc SetDMA ; BX:AX points to DMA buffer
|
||||
; DL = DMA Channel
|
||||
; DI = DMA Size
|
||||
PushA
|
||||
Push DS
|
||||
|
||||
Push CS
|
||||
Pop DS
|
||||
Assume DS:Driver
|
||||
|
||||
Mov ActualDMASegment, BX
|
||||
Mov ActualDMAOffset, AX
|
||||
|
||||
Mov CH, BH
|
||||
ShR CH, 4
|
||||
ShL BX, 4
|
||||
Add BX, AX
|
||||
AdC CH, 0
|
||||
Mov SI, BX ; CH:BH:BL contains 24 bit DMA address
|
||||
Neg SI
|
||||
Cmp SI, DI
|
||||
JA SetDMA1
|
||||
|
||||
Add ActualDMAOffset, SI
|
||||
Add BX, SI
|
||||
AdC CH, 0
|
||||
|
||||
SetDMA1:
|
||||
Cmp DL, 3
|
||||
JBE SetDMA2
|
||||
|
||||
ShR DI, 1
|
||||
Push CX
|
||||
ShR CH, 1
|
||||
Pop CX
|
||||
RCR BX, 1
|
||||
|
||||
SetDMA2:
|
||||
Mov AL, 11
|
||||
Mul DL
|
||||
Mov SI, AX
|
||||
Add SI, Offset DMAData
|
||||
|
||||
Xor DX, DX
|
||||
|
||||
LodsB ; Set mask
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Clear Ptrs
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Set Mode
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = page port
|
||||
Mov AL, CH
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = address port
|
||||
Mov AL, BL
|
||||
Out DX, AL
|
||||
Mov AL, BH
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = count port
|
||||
Mov AX, DI
|
||||
Dec AX
|
||||
Out DX, AL
|
||||
Mov AL, AH
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Reset mask
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
Pop DS
|
||||
PopA
|
||||
|
||||
Ret
|
||||
|
||||
EndP SetDMA
|
||||
Assume DS:Nothing
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
|
|
|
@ -1,116 +1,116 @@
|
|||
|
||||
DMAData Label Byte
|
||||
; Port/Mask, Port/Clear, Port/DMAMode, Address, Page, Count, Port/Mask
|
||||
DB 0Ah, 4, 0Ch, 0, 0Bh, 58h, 87h, 0, 1, 0Ah, 0
|
||||
DB 0Ah, 5, 0Ch, 0, 0Bh, 59h, 83h, 2, 3, 0Ah, 1
|
||||
DB 0Ah, 6, 0Ch, 0, 0Bh, 5Ah, 81h, 4, 5, 0Ah, 2
|
||||
DB 0Ah, 7, 0Ch, 0, 0Bh, 5Bh, 82h, 6, 7, 0Ah, 3
|
||||
DB 0D4h, 4, 0D8h, 0, 0D6h, 58h, 8Fh, 0C0h, 0C2h, 0D4h, 0
|
||||
DB 0D4h, 5, 0D8h, 0, 0D6h, 59h, 8Bh, 0C4h, 0C6h, 0D4h, 1
|
||||
DB 0D4h, 6, 0D8h, 0, 0D6h, 5Ah, 89h, 0C8h, 0CAh, 0D4h, 2
|
||||
DB 0D4h, 7, 0D8h, 0, 0D6h, 5Bh, 8Ah, 0CCh, 0CEh, 0D4h, 3
|
||||
|
||||
ActualDMAPtr Label DWord
|
||||
ActualDMAOffset DW 0
|
||||
ActualDMASegment DW 0
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc SetDMA ; BX:AX points to DMA buffer
|
||||
; DL = DMA Channel
|
||||
; DI = DMA Size
|
||||
PushA
|
||||
Push DS
|
||||
|
||||
Push CS
|
||||
Pop DS
|
||||
Assume DS:Driver
|
||||
|
||||
Mov ActualDMASegment, BX
|
||||
Mov ActualDMAOffset, AX
|
||||
|
||||
Mov CH, BH
|
||||
ShR CH, 4
|
||||
ShL BX, 4
|
||||
Add BX, AX
|
||||
AdC CH, 0
|
||||
Mov SI, BX ; CH:BH:BL contains 24 bit DMA address
|
||||
Neg SI
|
||||
Cmp SI, DI
|
||||
JA SetDMA1
|
||||
|
||||
Add ActualDMAOffset, SI
|
||||
Add BX, SI
|
||||
AdC CH, 0
|
||||
|
||||
SetDMA1:
|
||||
Cmp DL, 3
|
||||
JBE SetDMA2
|
||||
|
||||
ShR DI, 1
|
||||
Push CX
|
||||
ShR CH, 1
|
||||
Pop CX
|
||||
RCR BX, 1
|
||||
|
||||
SetDMA2:
|
||||
Mov AL, 11
|
||||
Mul DL
|
||||
Mov SI, AX
|
||||
Add SI, Offset DMAData
|
||||
|
||||
Xor DX, DX
|
||||
|
||||
LodsB ; Set mask
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Clear Ptrs
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Set Mode
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = page port
|
||||
Mov AL, CH
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = address port
|
||||
Mov AL, BL
|
||||
Out DX, AL
|
||||
Mov AL, BH
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = count port
|
||||
Mov AX, DI
|
||||
Dec AX
|
||||
Out DX, AL
|
||||
Mov AL, AH
|
||||
Out DX, AL
|
||||
|
||||
Mov Byte Ptr [CS:DMAPort1], DL
|
||||
Mov Byte Ptr [CS:DMAPort2], DL
|
||||
|
||||
LodsB ; Reset mask
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
Pop DS
|
||||
PopA
|
||||
|
||||
Ret
|
||||
|
||||
EndP SetDMA
|
||||
Assume DS:Nothing
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
|
||||
DMAData Label Byte
|
||||
; Port/Mask, Port/Clear, Port/DMAMode, Address, Page, Count, Port/Mask
|
||||
DB 0Ah, 4, 0Ch, 0, 0Bh, 58h, 87h, 0, 1, 0Ah, 0
|
||||
DB 0Ah, 5, 0Ch, 0, 0Bh, 59h, 83h, 2, 3, 0Ah, 1
|
||||
DB 0Ah, 6, 0Ch, 0, 0Bh, 5Ah, 81h, 4, 5, 0Ah, 2
|
||||
DB 0Ah, 7, 0Ch, 0, 0Bh, 5Bh, 82h, 6, 7, 0Ah, 3
|
||||
DB 0D4h, 4, 0D8h, 0, 0D6h, 58h, 8Fh, 0C0h, 0C2h, 0D4h, 0
|
||||
DB 0D4h, 5, 0D8h, 0, 0D6h, 59h, 8Bh, 0C4h, 0C6h, 0D4h, 1
|
||||
DB 0D4h, 6, 0D8h, 0, 0D6h, 5Ah, 89h, 0C8h, 0CAh, 0D4h, 2
|
||||
DB 0D4h, 7, 0D8h, 0, 0D6h, 5Bh, 8Ah, 0CCh, 0CEh, 0D4h, 3
|
||||
|
||||
ActualDMAPtr Label DWord
|
||||
ActualDMAOffset DW 0
|
||||
ActualDMASegment DW 0
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc SetDMA ; BX:AX points to DMA buffer
|
||||
; DL = DMA Channel
|
||||
; DI = DMA Size
|
||||
PushA
|
||||
Push DS
|
||||
|
||||
Push CS
|
||||
Pop DS
|
||||
Assume DS:Driver
|
||||
|
||||
Mov ActualDMASegment, BX
|
||||
Mov ActualDMAOffset, AX
|
||||
|
||||
Mov CH, BH
|
||||
ShR CH, 4
|
||||
ShL BX, 4
|
||||
Add BX, AX
|
||||
AdC CH, 0
|
||||
Mov SI, BX ; CH:BH:BL contains 24 bit DMA address
|
||||
Neg SI
|
||||
Cmp SI, DI
|
||||
JA SetDMA1
|
||||
|
||||
Add ActualDMAOffset, SI
|
||||
Add BX, SI
|
||||
AdC CH, 0
|
||||
|
||||
SetDMA1:
|
||||
Cmp DL, 3
|
||||
JBE SetDMA2
|
||||
|
||||
ShR DI, 1
|
||||
Push CX
|
||||
ShR CH, 1
|
||||
Pop CX
|
||||
RCR BX, 1
|
||||
|
||||
SetDMA2:
|
||||
Mov AL, 11
|
||||
Mul DL
|
||||
Mov SI, AX
|
||||
Add SI, Offset DMAData
|
||||
|
||||
Xor DX, DX
|
||||
|
||||
LodsB ; Set mask
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Clear Ptrs
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB ; Set Mode
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = page port
|
||||
Mov AL, CH
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = address port
|
||||
Mov AL, BL
|
||||
Out DX, AL
|
||||
Mov AL, BH
|
||||
Out DX, AL
|
||||
|
||||
LodsB
|
||||
Mov DL, AL ; DL = count port
|
||||
Mov AX, DI
|
||||
Dec AX
|
||||
Out DX, AL
|
||||
Mov AL, AH
|
||||
Out DX, AL
|
||||
|
||||
Mov Byte Ptr [CS:DMAPort1], DL
|
||||
Mov Byte Ptr [CS:DMAPort2], DL
|
||||
|
||||
LodsB ; Reset mask
|
||||
Mov DL, AL
|
||||
LodsB
|
||||
Out DX, AL
|
||||
|
||||
Pop DS
|
||||
PopA
|
||||
|
||||
Ret
|
||||
|
||||
EndP SetDMA
|
||||
Assume DS:Nothing
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
|
||||
ID DB "Impulse Tracker Advanced Sound Driver", 13, 10
|
||||
DB "Copyright (C) 1995-1998 Jeffrey Lim", 0
|
||||
DB 26
|
||||
|
||||
DB 126 - ($ - Offset ID) Dup (0)
|
||||
|
||||
LengthOfDriver DW Offset EndDriver - Offset StartDriver
|
||||
|
||||
ID DB "Impulse Tracker Advanced Sound Driver", 13, 10
|
||||
DB "Copyright (C) 1995-1998 Jeffrey Lim", 0
|
||||
DB 26
|
||||
|
||||
DB 126 - ($ - Offset ID) Dup (0)
|
||||
|
||||
LengthOfDriver DW Offset EndDriver - Offset StartDriver
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,161 +1,161 @@
|
|||
; Do output filtering
|
||||
; First copy old contents across
|
||||
; Assumes destination is MixSegment:0
|
||||
; data order is lastvalues, coefficients, volumes
|
||||
|
||||
Push CS
|
||||
Pop DS
|
||||
Assume DS:Driver
|
||||
|
||||
Xor DI, DI
|
||||
Mov SI, Offset LastFilter
|
||||
|
||||
Mov EAX, [SI+40h]
|
||||
Mov EBX, [SI+44h]
|
||||
Mov ECX, [SI+48h]
|
||||
Mov EDX, [SI+4Ch]
|
||||
Or EAX, EBX
|
||||
Or ECX, EDX
|
||||
Or EAX, ECX
|
||||
JZ NoEqualize
|
||||
|
||||
Mov CX, 80/4
|
||||
Mov ES, MixSegment
|
||||
|
||||
Rep MovsD
|
||||
|
||||
; Now do filtering.
|
||||
FNInit
|
||||
Mov CX, BytesToMix
|
||||
|
||||
Push ES
|
||||
Pop DS
|
||||
Assume DS:Nothing
|
||||
|
||||
Mov SI, DMABUFFERLENGTH*2+80
|
||||
|
||||
OutputFilter1:
|
||||
FILD DWord Ptr [SI] ; Left sample
|
||||
FILD DWord Ptr [SI+4] ; R, L
|
||||
|
||||
FLd DWord Ptr [DS:20h] ; LB, R, L
|
||||
FMul ST, ST(2) ; L.LB, R, L
|
||||
FLd DWord Ptr [DS:20h] ; LB, L.LB, R, L
|
||||
FMul ST, ST(2) ; R.LB, L.LB, R, L
|
||||
FLd DWord Ptr [DS:0] ; OL, R.LB, L.LB, R, L
|
||||
FMul DWord Ptr [DS:24h] ; OL.LB, R.LB, L.LB, R, L
|
||||
FLd DWord Ptr [DS:4] ; OR, OL.LB, R.LB, L.LB, R, L
|
||||
FMul DWord Ptr [DS:24h] ; OR.LB, OL.LB, R.LB, L.LB, R, L
|
||||
|
||||
FXCh ; OL.LB, OR.LB, R.LB, L.LB, R, L
|
||||
FAddP ST(3), ST
|
||||
FAdd ; RLB, LLB, R, L
|
||||
|
||||
FLd DWord Ptr [DS:28h] ; MB, RLB, LLB, R, L
|
||||
FMul ST, ST(4) ; L.MB, RLB, LLB, R, L
|
||||
FLd DWord Ptr [DS:28h] ; MB, L.MB, RLB, LLB, R, L
|
||||
FMul ST, ST(4) ; R.MB, L.MB, RLB, LLB, R, L
|
||||
FLd DWord Ptr [DS:8] ; OL, R.MB, L.MB, RLB, LLB, R, L
|
||||
FMul DWord Ptr [DS:2Ch] ; OL.MB, R.MB, L.MB, RLB, LLB, R, L
|
||||
FLd DWord Ptr [DS:0Ch] ; OR, OL.MB, R.MB, L.MB, RLB, LLB, R, L
|
||||
FMul DWord Ptr [DS:2Ch] ; OR.MB, OL.MB, R.MB, L.MB, RLB, LLB, R, L
|
||||
|
||||
FXCh ; OL.MB, OR.MB, R.MB, L.MB, RLB, LLB, R, L
|
||||
FAddP ST(3), ST
|
||||
FAdd ; RMB, LMB, RLB, LLB, R, L
|
||||
FXCh ST(3) ; LLB, LMB, RLB, RMB, R, L
|
||||
FStP DWord Ptr [DS:0]
|
||||
FStP DWord Ptr [DS:8]
|
||||
FStP DWord Ptr [DS:4]
|
||||
FStP DWord Ptr [DS:0Ch]
|
||||
|
||||
FLd DWord Ptr [DS:30h]
|
||||
FMul ST, ST(2)
|
||||
FLd DWord Ptr [DS:30h]
|
||||
FMul ST, ST(2)
|
||||
FLd DWord Ptr [DS:10h]
|
||||
FMul DWord Ptr [DS:34h]
|
||||
FLd DWord Ptr [DS:14h]
|
||||
FMul DWord Ptr [DS:34h]
|
||||
|
||||
FXCh
|
||||
FAddP ST(3), ST
|
||||
FAdd
|
||||
|
||||
FLd DWord Ptr [DS:38h]
|
||||
FMul ST, ST(4)
|
||||
FLd DWord Ptr [DS:38h]
|
||||
FMul ST, ST(4)
|
||||
FLd DWord Ptr [DS:18h]
|
||||
FMul DWord Ptr [DS:3Ch]
|
||||
FLd DWord Ptr [DS:1Ch]
|
||||
FMul DWord Ptr [DS:3Ch]
|
||||
|
||||
FXCh
|
||||
FAddP ST(3), ST
|
||||
FAdd
|
||||
FXCh ST(3)
|
||||
FStP DWord Ptr [DS:10h]
|
||||
FStP DWord Ptr [DS:18h]
|
||||
FStP DWord Ptr [DS:14h]
|
||||
FStP DWord Ptr [DS:1Ch] ; R, L
|
||||
|
||||
; For each one, output value += ((band value) - (previous band value)) * Volume
|
||||
|
||||
FLd DWord Ptr [DS:18h]
|
||||
FSub DWord Ptr [DS:10h] ; L4, R, L
|
||||
FLd DWord Ptr [DS:1Ch]
|
||||
FSub DWord Ptr [DS:14h] ; R4, L4, R, L
|
||||
FLd DWord Ptr [DS:10h]
|
||||
FSub DWord Ptr [DS:8]
|
||||
FLd DWord Ptr [DS:14h]
|
||||
FSub DWord Ptr [DS:0Ch] ; R3, L3, R4, L4, R, L
|
||||
FLd DWord Ptr [DS:8]
|
||||
FSub DWord Ptr [DS:0]
|
||||
FLd DWord Ptr [DS:0Ch]
|
||||
FSub DWord Ptr [DS:4] ; R2, L2, R3, L3, R4, L4, R, L
|
||||
FXCh ST(5) ; L4, L2, R3, L3, R4, R2, R, L
|
||||
FMul DWord Ptr [DS:4Ch] ; L4V, L2, R3, L3, R4, R2, R, L
|
||||
FXCh ST(4) ; R4, L2, R3, L3, L4V, R2, R, L
|
||||
FMul DWord Ptr [DS:4Ch] ; R4V, L2, R3, L3, L4V, R2, R, L
|
||||
FXCh ST(3) ; L3, L2, R3, R4V, L4V, R2, R, L
|
||||
FMul DWord Ptr [DS:48h] ; L3V, L2, R3, R4V, L4V, R2, R, L
|
||||
FXCh ST(2) ; R3, L2, L3V, R4V, L4V, R2, R, L
|
||||
FMul DWord Ptr [DS:48h] ; R3V, L2, L3V, R4V, L4V, R2, R, L
|
||||
FXCh ; L2, R3V, L3V, R4V, L4V, R2, R, L
|
||||
FMul DWord Ptr [DS:44h] ; L2V, R3V, L3V, R4V, L4V, R2, R, L
|
||||
FXCh ST(5) ; R2, R3V, L3V, R4V, L4V, L2V, R, L
|
||||
FMul DWord Ptr [DS:44h] ; R2V, R3V, L3V, R4V, L4V, L2V, R, L
|
||||
FXCh ST(4) ; L4V, R3V, L3V, R4V, R2V, L2V, R, L
|
||||
FAddP ST(7), ST ; R3V, L3V, R4V, R2V, L2V, R, L
|
||||
FAddP ST(5), ST ; L3V, R4V, R2V, L2V, R, L
|
||||
FAddP ST(3), ST
|
||||
FAdd
|
||||
FLd DWord Ptr [DS:0]
|
||||
FMul DWord Ptr [DS:40h] ; L1V, RV, LV, R, L
|
||||
FLd DWord Ptr [DS:4] ;
|
||||
FMul DWord Ptr [DS:40h] ; R1V, L1V, RV, LV, R, L
|
||||
FXCh ST(2) ; RV, L1V, R1V, LV, R, L
|
||||
FAddP ST(4), ST ; L1V, R1V, LV, R, L
|
||||
FAddP ST(4), ST ; R1V, LV, R, L
|
||||
FAddP ST(2), ST
|
||||
FAddP ST(2), ST
|
||||
|
||||
FIStP DWord Ptr [SI+4]
|
||||
FIStP DWord Ptr [SI]
|
||||
|
||||
Add SI, 8
|
||||
Dec CX
|
||||
JNZ OutputFilter1
|
||||
|
||||
; Transfer contents out
|
||||
Push CS
|
||||
Pop ES
|
||||
|
||||
Mov DI, Offset LastFilter
|
||||
Xor SI, SI
|
||||
Mov CX, 32/4
|
||||
|
||||
Rep MovsD
|
||||
; Finished output filtering!
|
||||
NoEqualize:
|
||||
; Do output filtering
|
||||
; First copy old contents across
|
||||
; Assumes destination is MixSegment:0
|
||||
; data order is lastvalues, coefficients, volumes
|
||||
|
||||
Push CS
|
||||
Pop DS
|
||||
Assume DS:Driver
|
||||
|
||||
Xor DI, DI
|
||||
Mov SI, Offset LastFilter
|
||||
|
||||
Mov EAX, [SI+40h]
|
||||
Mov EBX, [SI+44h]
|
||||
Mov ECX, [SI+48h]
|
||||
Mov EDX, [SI+4Ch]
|
||||
Or EAX, EBX
|
||||
Or ECX, EDX
|
||||
Or EAX, ECX
|
||||
JZ NoEqualize
|
||||
|
||||
Mov CX, 80/4
|
||||
Mov ES, MixSegment
|
||||
|
||||
Rep MovsD
|
||||
|
||||
; Now do filtering.
|
||||
FNInit
|
||||
Mov CX, BytesToMix
|
||||
|
||||
Push ES
|
||||
Pop DS
|
||||
Assume DS:Nothing
|
||||
|
||||
Mov SI, DMABUFFERLENGTH*2+80
|
||||
|
||||
OutputFilter1:
|
||||
FILD DWord Ptr [SI] ; Left sample
|
||||
FILD DWord Ptr [SI+4] ; R, L
|
||||
|
||||
FLd DWord Ptr [DS:20h] ; LB, R, L
|
||||
FMul ST, ST(2) ; L.LB, R, L
|
||||
FLd DWord Ptr [DS:20h] ; LB, L.LB, R, L
|
||||
FMul ST, ST(2) ; R.LB, L.LB, R, L
|
||||
FLd DWord Ptr [DS:0] ; OL, R.LB, L.LB, R, L
|
||||
FMul DWord Ptr [DS:24h] ; OL.LB, R.LB, L.LB, R, L
|
||||
FLd DWord Ptr [DS:4] ; OR, OL.LB, R.LB, L.LB, R, L
|
||||
FMul DWord Ptr [DS:24h] ; OR.LB, OL.LB, R.LB, L.LB, R, L
|
||||
|
||||
FXCh ; OL.LB, OR.LB, R.LB, L.LB, R, L
|
||||
FAddP ST(3), ST
|
||||
FAdd ; RLB, LLB, R, L
|
||||
|
||||
FLd DWord Ptr [DS:28h] ; MB, RLB, LLB, R, L
|
||||
FMul ST, ST(4) ; L.MB, RLB, LLB, R, L
|
||||
FLd DWord Ptr [DS:28h] ; MB, L.MB, RLB, LLB, R, L
|
||||
FMul ST, ST(4) ; R.MB, L.MB, RLB, LLB, R, L
|
||||
FLd DWord Ptr [DS:8] ; OL, R.MB, L.MB, RLB, LLB, R, L
|
||||
FMul DWord Ptr [DS:2Ch] ; OL.MB, R.MB, L.MB, RLB, LLB, R, L
|
||||
FLd DWord Ptr [DS:0Ch] ; OR, OL.MB, R.MB, L.MB, RLB, LLB, R, L
|
||||
FMul DWord Ptr [DS:2Ch] ; OR.MB, OL.MB, R.MB, L.MB, RLB, LLB, R, L
|
||||
|
||||
FXCh ; OL.MB, OR.MB, R.MB, L.MB, RLB, LLB, R, L
|
||||
FAddP ST(3), ST
|
||||
FAdd ; RMB, LMB, RLB, LLB, R, L
|
||||
FXCh ST(3) ; LLB, LMB, RLB, RMB, R, L
|
||||
FStP DWord Ptr [DS:0]
|
||||
FStP DWord Ptr [DS:8]
|
||||
FStP DWord Ptr [DS:4]
|
||||
FStP DWord Ptr [DS:0Ch]
|
||||
|
||||
FLd DWord Ptr [DS:30h]
|
||||
FMul ST, ST(2)
|
||||
FLd DWord Ptr [DS:30h]
|
||||
FMul ST, ST(2)
|
||||
FLd DWord Ptr [DS:10h]
|
||||
FMul DWord Ptr [DS:34h]
|
||||
FLd DWord Ptr [DS:14h]
|
||||
FMul DWord Ptr [DS:34h]
|
||||
|
||||
FXCh
|
||||
FAddP ST(3), ST
|
||||
FAdd
|
||||
|
||||
FLd DWord Ptr [DS:38h]
|
||||
FMul ST, ST(4)
|
||||
FLd DWord Ptr [DS:38h]
|
||||
FMul ST, ST(4)
|
||||
FLd DWord Ptr [DS:18h]
|
||||
FMul DWord Ptr [DS:3Ch]
|
||||
FLd DWord Ptr [DS:1Ch]
|
||||
FMul DWord Ptr [DS:3Ch]
|
||||
|
||||
FXCh
|
||||
FAddP ST(3), ST
|
||||
FAdd
|
||||
FXCh ST(3)
|
||||
FStP DWord Ptr [DS:10h]
|
||||
FStP DWord Ptr [DS:18h]
|
||||
FStP DWord Ptr [DS:14h]
|
||||
FStP DWord Ptr [DS:1Ch] ; R, L
|
||||
|
||||
; For each one, output value += ((band value) - (previous band value)) * Volume
|
||||
|
||||
FLd DWord Ptr [DS:18h]
|
||||
FSub DWord Ptr [DS:10h] ; L4, R, L
|
||||
FLd DWord Ptr [DS:1Ch]
|
||||
FSub DWord Ptr [DS:14h] ; R4, L4, R, L
|
||||
FLd DWord Ptr [DS:10h]
|
||||
FSub DWord Ptr [DS:8]
|
||||
FLd DWord Ptr [DS:14h]
|
||||
FSub DWord Ptr [DS:0Ch] ; R3, L3, R4, L4, R, L
|
||||
FLd DWord Ptr [DS:8]
|
||||
FSub DWord Ptr [DS:0]
|
||||
FLd DWord Ptr [DS:0Ch]
|
||||
FSub DWord Ptr [DS:4] ; R2, L2, R3, L3, R4, L4, R, L
|
||||
FXCh ST(5) ; L4, L2, R3, L3, R4, R2, R, L
|
||||
FMul DWord Ptr [DS:4Ch] ; L4V, L2, R3, L3, R4, R2, R, L
|
||||
FXCh ST(4) ; R4, L2, R3, L3, L4V, R2, R, L
|
||||
FMul DWord Ptr [DS:4Ch] ; R4V, L2, R3, L3, L4V, R2, R, L
|
||||
FXCh ST(3) ; L3, L2, R3, R4V, L4V, R2, R, L
|
||||
FMul DWord Ptr [DS:48h] ; L3V, L2, R3, R4V, L4V, R2, R, L
|
||||
FXCh ST(2) ; R3, L2, L3V, R4V, L4V, R2, R, L
|
||||
FMul DWord Ptr [DS:48h] ; R3V, L2, L3V, R4V, L4V, R2, R, L
|
||||
FXCh ; L2, R3V, L3V, R4V, L4V, R2, R, L
|
||||
FMul DWord Ptr [DS:44h] ; L2V, R3V, L3V, R4V, L4V, R2, R, L
|
||||
FXCh ST(5) ; R2, R3V, L3V, R4V, L4V, L2V, R, L
|
||||
FMul DWord Ptr [DS:44h] ; R2V, R3V, L3V, R4V, L4V, L2V, R, L
|
||||
FXCh ST(4) ; L4V, R3V, L3V, R4V, R2V, L2V, R, L
|
||||
FAddP ST(7), ST ; R3V, L3V, R4V, R2V, L2V, R, L
|
||||
FAddP ST(5), ST ; L3V, R4V, R2V, L2V, R, L
|
||||
FAddP ST(3), ST
|
||||
FAdd
|
||||
FLd DWord Ptr [DS:0]
|
||||
FMul DWord Ptr [DS:40h] ; L1V, RV, LV, R, L
|
||||
FLd DWord Ptr [DS:4] ;
|
||||
FMul DWord Ptr [DS:40h] ; R1V, L1V, RV, LV, R, L
|
||||
FXCh ST(2) ; RV, L1V, R1V, LV, R, L
|
||||
FAddP ST(4), ST ; L1V, R1V, LV, R, L
|
||||
FAddP ST(4), ST ; R1V, LV, R, L
|
||||
FAddP ST(2), ST
|
||||
FAddP ST(2), ST
|
||||
|
||||
FIStP DWord Ptr [SI+4]
|
||||
FIStP DWord Ptr [SI]
|
||||
|
||||
Add SI, 8
|
||||
Dec CX
|
||||
JNZ OutputFilter1
|
||||
|
||||
; Transfer contents out
|
||||
Push CS
|
||||
Pop ES
|
||||
|
||||
Mov DI, Offset LastFilter
|
||||
Xor SI, SI
|
||||
Mov CX, 32/4
|
||||
|
||||
Rep MovsD
|
||||
; Finished output filtering!
|
||||
NoEqualize:
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -1,83 +1,83 @@
|
|||
|
||||
FourierBufferStart DW 0
|
||||
|
||||
FourierBufferInputStart DW 0
|
||||
FourierBufferInputFractional DW 0
|
||||
FourierBufferStepOffset DW 1
|
||||
FourierBufferStepFractional DW 0
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc UpdateFourierBuffer
|
||||
|
||||
PushAD
|
||||
Push DS
|
||||
Push ES
|
||||
|
||||
Push CS
|
||||
Pop DS
|
||||
Assume DS:Driver
|
||||
|
||||
Xor EBX, EBX
|
||||
Xor ESI, ESI
|
||||
|
||||
Mov BX, MixTransferOffset
|
||||
Mov DI, FourierBufferStart
|
||||
ShR BX, 3
|
||||
Mov CX, BytesToMix
|
||||
Mov SI, FourierBufferInputStart
|
||||
Add SI, BX
|
||||
Add CX, BX
|
||||
|
||||
Mov BP, FourierBufferInputFractional
|
||||
Mov DX, FourierBufferStepOffset
|
||||
Mov BX, FourierBufferStepFractional
|
||||
|
||||
Mov ES, FourierSegment
|
||||
Mov DS, MixSegment
|
||||
|
||||
Assume DS:Nothing
|
||||
|
||||
UpdateFourierBuffer1:
|
||||
Mov EAX, [ESI*8]
|
||||
Add EAX, [ESI*8+4]
|
||||
SAR EAX, 13
|
||||
Cmp EAX, 7FFFh
|
||||
JG UpdateFourierBuffer3
|
||||
Cmp EAX, -8000h
|
||||
JL UpdateFourierBuffer4
|
||||
|
||||
UpdateFourierBuffer2:
|
||||
StosW
|
||||
|
||||
Add BP, BX
|
||||
AdC SI, DX
|
||||
And DI, (FOURIERBUFFERLENGTH*2)-1
|
||||
|
||||
; Cmp past end of buffer?
|
||||
Cmp SI, CX
|
||||
JB UpdateFourierBuffer1
|
||||
|
||||
Sub SI, CX
|
||||
Mov FourierBufferStart, DI
|
||||
Mov FourierBufferInputFractional, BP
|
||||
Mov FourierBufferInputStart, SI
|
||||
|
||||
Pop ES
|
||||
Pop DS
|
||||
PopAD
|
||||
|
||||
Ret
|
||||
|
||||
UpdateFourierBuffer3:
|
||||
Mov AX, 7FFFh
|
||||
Jmp UpdateFourierBuffer2
|
||||
|
||||
UpdateFourierBuffer4:
|
||||
Mov AX, 8000h
|
||||
Jmp UpdateFourierBuffer2
|
||||
|
||||
EndP UpdateFourierBuffer
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
|
||||
FourierBufferStart DW 0
|
||||
|
||||
FourierBufferInputStart DW 0
|
||||
FourierBufferInputFractional DW 0
|
||||
FourierBufferStepOffset DW 1
|
||||
FourierBufferStepFractional DW 0
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc UpdateFourierBuffer
|
||||
|
||||
PushAD
|
||||
Push DS
|
||||
Push ES
|
||||
|
||||
Push CS
|
||||
Pop DS
|
||||
Assume DS:Driver
|
||||
|
||||
Xor EBX, EBX
|
||||
Xor ESI, ESI
|
||||
|
||||
Mov BX, MixTransferOffset
|
||||
Mov DI, FourierBufferStart
|
||||
ShR BX, 3
|
||||
Mov CX, BytesToMix
|
||||
Mov SI, FourierBufferInputStart
|
||||
Add SI, BX
|
||||
Add CX, BX
|
||||
|
||||
Mov BP, FourierBufferInputFractional
|
||||
Mov DX, FourierBufferStepOffset
|
||||
Mov BX, FourierBufferStepFractional
|
||||
|
||||
Mov ES, FourierSegment
|
||||
Mov DS, MixSegment
|
||||
|
||||
Assume DS:Nothing
|
||||
|
||||
UpdateFourierBuffer1:
|
||||
Mov EAX, [ESI*8]
|
||||
Add EAX, [ESI*8+4]
|
||||
SAR EAX, 13
|
||||
Cmp EAX, 7FFFh
|
||||
JG UpdateFourierBuffer3
|
||||
Cmp EAX, -8000h
|
||||
JL UpdateFourierBuffer4
|
||||
|
||||
UpdateFourierBuffer2:
|
||||
StosW
|
||||
|
||||
Add BP, BX
|
||||
AdC SI, DX
|
||||
And DI, (FOURIERBUFFERLENGTH*2)-1
|
||||
|
||||
; Cmp past end of buffer?
|
||||
Cmp SI, CX
|
||||
JB UpdateFourierBuffer1
|
||||
|
||||
Sub SI, CX
|
||||
Mov FourierBufferStart, DI
|
||||
Mov FourierBufferInputFractional, BP
|
||||
Mov FourierBufferInputStart, SI
|
||||
|
||||
Pop ES
|
||||
Pop DS
|
||||
PopAD
|
||||
|
||||
Ret
|
||||
|
||||
UpdateFourierBuffer3:
|
||||
Mov AX, 7FFFh
|
||||
Jmp UpdateFourierBuffer2
|
||||
|
||||
UpdateFourierBuffer4:
|
||||
Mov AX, 8000h
|
||||
Jmp UpdateFourierBuffer2
|
||||
|
||||
EndP UpdateFourierBuffer
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
|
|
|
@ -1,34 +1,34 @@
|
|||
|
||||
FilterFrequencyTable Label DWord
|
||||
DD 3A9F7867h, 3A9AEE36h, 3A96851Bh, 3A923C25h
|
||||
DD 3A8E1269h, 3A8A0703h, 3A861918h, 3A8247CFh
|
||||
DD 3A7D24B3h, 3A75EFD6h, 3A6EEF7Dh, 3A68222Ch
|
||||
DD 3A61866Dh, 3A5B1AD6h, 3A54DE0Bh, 3A4ECEB3h
|
||||
DD 3A48EB87h, 3A433341h, 3A3DA4ACh, 3A383E96h
|
||||
DD 3A32FFD8h, 3A2DE754h, 3A28F3F3h, 3A2424A6h
|
||||
DD 3A1F7867h, 3A1AEE36h, 3A16851Bh, 3A123C25h
|
||||
DD 3A0E1269h, 3A0A0703h, 3A061918h, 3A0247CFh
|
||||
DD 39FD24B3h, 39F5EFD6h, 39EEEF7Dh, 39E8222Ch
|
||||
DD 39E1866Dh, 39DB1AD6h, 39D4DE0Bh, 39CECEB3h
|
||||
DD 39C8EB87h, 39C33341h, 39BDA4ACh, 39B83E96h
|
||||
DD 39B2FFD8h, 39ADE754h, 39A8F3F3h, 39A424A6h
|
||||
DD 399F7867h, 399AEE36h, 3996851Bh, 39923C25h
|
||||
DD 398E1269h, 398A0703h, 39861918h, 398247CFh
|
||||
DD 397D24B3h, 3975EFD6h, 396EEF7Dh, 3968222Ch
|
||||
DD 3961866Dh, 395B1AD6h, 3954DE0Bh, 394ECEB3h
|
||||
DD 3948EB87h, 39433341h, 393DA4ACh, 39383E96h
|
||||
DD 3932FFD8h, 392DE754h, 3928F3F3h, 392424A6h
|
||||
DD 391F7867h, 391AEE36h, 3916851Bh, 39123C25h
|
||||
DD 390E1269h, 390A0703h, 39061918h, 390247CFh
|
||||
DD 38FD24B3h, 38F5EFD6h, 38EEEF7Dh, 38E8222Ch
|
||||
DD 38E1866Dh, 38DB1AD6h, 38D4DE0Bh, 38CECEB3h
|
||||
DD 38C8EB87h, 38C33341h, 38BDA4ACh, 38B83E96h
|
||||
DD 38B2FFD8h, 38ADE754h, 38A8F3F3h, 38A424A6h
|
||||
DD 389F7867h, 389AEE36h, 3896851Bh, 38923C25h
|
||||
DD 388E1269h, 388A0703h, 38861918h, 388247CFh
|
||||
DD 387D24B3h, 3875EFD6h, 386EEF7Dh, 3868222Ch
|
||||
DD 3861866Dh, 385B1AD6h, 3854DE0Bh, 384ECEB3h
|
||||
DD 3848EB87h, 38433341h, 383DA4ACh, 38383E96h
|
||||
DD 3832FFD8h, 382DE754h, 3828F3F3h, 382424A6h
|
||||
DD 381F7867h, 381AEE36h, 3816851Bh, 38123C25h
|
||||
DD 380E1269h, 380A0703h, 38061918h, 380247CFh
|
||||
|
||||
FilterFrequencyTable Label DWord
|
||||
DD 3A9F7867h, 3A9AEE36h, 3A96851Bh, 3A923C25h
|
||||
DD 3A8E1269h, 3A8A0703h, 3A861918h, 3A8247CFh
|
||||
DD 3A7D24B3h, 3A75EFD6h, 3A6EEF7Dh, 3A68222Ch
|
||||
DD 3A61866Dh, 3A5B1AD6h, 3A54DE0Bh, 3A4ECEB3h
|
||||
DD 3A48EB87h, 3A433341h, 3A3DA4ACh, 3A383E96h
|
||||
DD 3A32FFD8h, 3A2DE754h, 3A28F3F3h, 3A2424A6h
|
||||
DD 3A1F7867h, 3A1AEE36h, 3A16851Bh, 3A123C25h
|
||||
DD 3A0E1269h, 3A0A0703h, 3A061918h, 3A0247CFh
|
||||
DD 39FD24B3h, 39F5EFD6h, 39EEEF7Dh, 39E8222Ch
|
||||
DD 39E1866Dh, 39DB1AD6h, 39D4DE0Bh, 39CECEB3h
|
||||
DD 39C8EB87h, 39C33341h, 39BDA4ACh, 39B83E96h
|
||||
DD 39B2FFD8h, 39ADE754h, 39A8F3F3h, 39A424A6h
|
||||
DD 399F7867h, 399AEE36h, 3996851Bh, 39923C25h
|
||||
DD 398E1269h, 398A0703h, 39861918h, 398247CFh
|
||||
DD 397D24B3h, 3975EFD6h, 396EEF7Dh, 3968222Ch
|
||||
DD 3961866Dh, 395B1AD6h, 3954DE0Bh, 394ECEB3h
|
||||
DD 3948EB87h, 39433341h, 393DA4ACh, 39383E96h
|
||||
DD 3932FFD8h, 392DE754h, 3928F3F3h, 392424A6h
|
||||
DD 391F7867h, 391AEE36h, 3916851Bh, 39123C25h
|
||||
DD 390E1269h, 390A0703h, 39061918h, 390247CFh
|
||||
DD 38FD24B3h, 38F5EFD6h, 38EEEF7Dh, 38E8222Ch
|
||||
DD 38E1866Dh, 38DB1AD6h, 38D4DE0Bh, 38CECEB3h
|
||||
DD 38C8EB87h, 38C33341h, 38BDA4ACh, 38B83E96h
|
||||
DD 38B2FFD8h, 38ADE754h, 38A8F3F3h, 38A424A6h
|
||||
DD 389F7867h, 389AEE36h, 3896851Bh, 38923C25h
|
||||
DD 388E1269h, 388A0703h, 38861918h, 388247CFh
|
||||
DD 387D24B3h, 3875EFD6h, 386EEF7Dh, 3868222Ch
|
||||
DD 3861866Dh, 385B1AD6h, 3854DE0Bh, 384ECEB3h
|
||||
DD 3848EB87h, 38433341h, 383DA4ACh, 38383E96h
|
||||
DD 3832FFD8h, 382DE754h, 3828F3F3h, 382424A6h
|
||||
DD 381F7867h, 381AEE36h, 3816851Bh, 38123C25h
|
||||
DD 380E1269h, 380A0703h, 38061918h, 380247CFh
|
||||
|
|
File diff suppressed because it is too large
Load Diff
4632
SoundDrivers/GUS.INC
4632
SoundDrivers/GUS.INC
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
|||
|
||||
RAMP EQU 1
|
||||
|
||||
include gus.inc
|
||||
|
||||
|
||||
RAMP EQU 1
|
||||
|
||||
include gus.inc
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
|
||||
include gus.inc
|
||||
|
||||
|
||||
include gus.inc
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
RIC EQU 1
|
||||
|
||||
include gus.inc
|
||||
|
||||
|
||||
RIC EQU 1
|
||||
|
||||
include gus.inc
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
RAMP EQU 1
|
||||
RIC EQU 1
|
||||
|
||||
include gus.inc
|
||||
RAMP EQU 1
|
||||
RIC EQU 1
|
||||
|
||||
include gus.inc
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,27 +1,27 @@
|
|||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc SetGUSVolume ; BX = new volume
|
||||
|
||||
; To do:
|
||||
; 1) Set ramp start
|
||||
; 2) Set ramp end
|
||||
; 3) Set current volume
|
||||
; 4) Start ramp
|
||||
; 5) Save new volume.
|
||||
|
||||
Mov AL, 9
|
||||
Out DX, AL
|
||||
|
||||
Add BX, BX
|
||||
Mov AX, [CS:GUSVolumeTable+BX]
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Call GUSDelay
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
Ret
|
||||
|
||||
EndP SetGUSVolume
|
||||
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc SetGUSVolume ; BX = new volume
|
||||
|
||||
; To do:
|
||||
; 1) Set ramp start
|
||||
; 2) Set ramp end
|
||||
; 3) Set current volume
|
||||
; 4) Start ramp
|
||||
; 5) Save new volume.
|
||||
|
||||
Mov AL, 9
|
||||
Out DX, AL
|
||||
|
||||
Add BX, BX
|
||||
Mov AX, [CS:GUSVolumeTable+BX]
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Call GUSDelay
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
Ret
|
||||
|
||||
EndP SetGUSVolume
|
||||
|
||||
|
||||
|
|
|
@ -1,415 +1,415 @@
|
|||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc SetGUSRegisters ; Given DS:SI, CX
|
||||
|
||||
Mov ES, CS:SongDataArea
|
||||
|
||||
Push CX
|
||||
Push SI
|
||||
|
||||
Xor AX, AX
|
||||
|
||||
GetOffsetLoop:
|
||||
Push AX
|
||||
Push CX
|
||||
|
||||
Mov DX, GUSVoiceSelect
|
||||
Out DX, AL ; OK.. now to play with this
|
||||
; voice.
|
||||
Call GUSDelay
|
||||
|
||||
Inc DL ; DX = select rego
|
||||
|
||||
Mov BX, [SI]
|
||||
Test BH, 2
|
||||
JZ GetOffsetLoop2
|
||||
|
||||
Mov BX, 200h
|
||||
Mov [SI], BX
|
||||
|
||||
GetOffsetLoop2:
|
||||
Test BL, 1 ; Channel not on!
|
||||
JZ GetOffsetLoop1
|
||||
Test BH, 1
|
||||
JZ GetOffsetLoop3 ; Prev 1.
|
||||
|
||||
Xor BX, BX
|
||||
Call SetGUSVolume
|
||||
|
||||
Mov AL, 80h
|
||||
Out DX, AL
|
||||
Add DL, 2
|
||||
In AL, DX
|
||||
Sub DL, 2
|
||||
Mov AH, AL
|
||||
And AX, 400h
|
||||
Out DX, AL ; AL = 0 (Mode control)
|
||||
Mov AL, 3
|
||||
Or AL, AH
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Call GUSDelay
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
Jmp GetOffsetLoop1
|
||||
|
||||
GetOffsetLoop3:
|
||||
Mov EAX, [SI+4Ch]
|
||||
Mov [SI+2Ch], EAX
|
||||
|
||||
Mov AL, 8Ah
|
||||
Out DX, AL
|
||||
|
||||
Inc DX
|
||||
In AX, DX
|
||||
Dec DX
|
||||
|
||||
And AH, 31
|
||||
ShL EAX, 16 ; Load high part of EAX
|
||||
|
||||
Mov AL, 8Bh
|
||||
Out DX, AL
|
||||
Inc DX
|
||||
In AX, DX
|
||||
; EAX = 000OOOOO OOOOOOOO OOOOOOOF FFFFFFFF
|
||||
; Need: 00000000 0000OOOO OOOOOOOO OOOOOOOO
|
||||
|
||||
ShR EAX, 9
|
||||
; EAX contains current loc.
|
||||
; Convert to Offset (in sample)
|
||||
MovZX EBX, Byte Ptr [SI+36h]
|
||||
Sub EAX, [CS:GUSDataTable+EBX*4]
|
||||
Push CX
|
||||
|
||||
Mov CL, CS:Compress
|
||||
ShL EAX, CL
|
||||
|
||||
Pop CX
|
||||
Mov [SI+4Ch], EAX
|
||||
|
||||
GetOffsetLoop1:
|
||||
Add SI, SLAVECHANNELSIZE
|
||||
|
||||
Pop CX
|
||||
Pop AX
|
||||
|
||||
Inc AX
|
||||
Loop GetOffsetLoop
|
||||
|
||||
Pop SI
|
||||
Pop CX
|
||||
|
||||
Xor AX, AX
|
||||
|
||||
SetGUSRegisters1:
|
||||
Push AX
|
||||
Push CX
|
||||
|
||||
Mov DX, GUSVoiceSelect
|
||||
Out DX, AL ; OK.. now to play with this
|
||||
; voice.
|
||||
Call GUSDelay
|
||||
|
||||
Mov CX, [SI] ; CX = flags.
|
||||
Inc DL ; DX = select rego
|
||||
|
||||
SetGUSRegisters21:
|
||||
Test CL, 32 ; Frequency change
|
||||
JZ SetGUSRegisters7
|
||||
|
||||
Push DX
|
||||
|
||||
Mov EAX, [SI+10h] ; EAX = freq.
|
||||
|
||||
Push CX
|
||||
Mov CL, CS:Compress
|
||||
ShR EAX, CL
|
||||
Pop CX
|
||||
|
||||
Xor EDX, EDX
|
||||
MovZX EBX, MixSpeed
|
||||
|
||||
Div EBX ; EAX = I portion.
|
||||
|
||||
Test EAX, Not 63
|
||||
JNZ SetGUSRegisters6
|
||||
|
||||
Push EAX
|
||||
|
||||
Xor EAX, EAX
|
||||
Div EBX
|
||||
|
||||
Pop EBX ; EBX:EAX = IIII FFFF etc.
|
||||
|
||||
SHRD EAX, EBX, 6
|
||||
|
||||
; Have: IIIIIIII IIIIIIII FFFFFFFF FFFFFFFF
|
||||
; Req: IIIIIIFF FFFFFFF0
|
||||
|
||||
Pop DX
|
||||
Mov AL, 1
|
||||
Out DX, AL
|
||||
|
||||
ShR EAX, 16
|
||||
Add AX, 1
|
||||
SBB AX, 0 ; Just in case!
|
||||
And AX, Not 1
|
||||
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
Jmp SetGUSRegisters7
|
||||
|
||||
SetGUSRegisters6:
|
||||
Mov CH, 2 ; Signify to turn off channel
|
||||
Pop DX
|
||||
|
||||
SetGUSRegisters7:
|
||||
MovZX BX, Byte Ptr [SI+36h] ; BX = sample number.
|
||||
Cmp BL, 99
|
||||
JA SetGUSRegisters20
|
||||
|
||||
ShL BX, 2 ; GUSDataTable+BX = position
|
||||
|
||||
Cmp DWord Ptr [CS:GUSDataTable+BX], 0FFFFFFFFh
|
||||
JNE SetGUSRegisters10
|
||||
|
||||
SetGUSRegisters20:
|
||||
Mov CH, 2
|
||||
Jmp SetGUSRegisters9
|
||||
|
||||
SetGUSRegisters10:
|
||||
Test CH, 5 ; Loop changed?!??!?
|
||||
JZ SetGUSRegisters8
|
||||
|
||||
Mov AL, 3 ; Starting location low.
|
||||
Out DX, AL
|
||||
|
||||
Mov EAX, [SI+40h]
|
||||
Call GUSGetAddress
|
||||
|
||||
; Reqd: ...OOOOO OOOOOOOO OOOOOOOI III.....
|
||||
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
Mov AL, 2 ; Starting location high
|
||||
Out DX, AL
|
||||
|
||||
ShR EAX, 16
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
; Ending location...
|
||||
Mov AL, 5 ; Ending location low
|
||||
Out DX, AL
|
||||
|
||||
Mov EAX, [SI+44h]
|
||||
Call GUSGetAddress
|
||||
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
Mov AL, 4 ; Ending location high
|
||||
Out DX, AL
|
||||
|
||||
SHR EAX, 16
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
SetGUSRegisters8:
|
||||
Test CH, 1 ; Do Current position?
|
||||
JZ SetGUSRegisters9
|
||||
|
||||
Mov AL, 0Bh ; Current location LOW
|
||||
Out DX, AL
|
||||
|
||||
Mov EAX, [SI+4Ch]
|
||||
Mov [SI+2Ch], EAX
|
||||
|
||||
; EAX = OOOOOOOO OOOOOOOO OOOOOOOO OOOOOOOO
|
||||
; Req: xxxOOOOO OOOOOOOO OOOOOOOF FFFFFFFF
|
||||
Call GUSGetAddress
|
||||
|
||||
Mov DI, AX
|
||||
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
Mov AL, 0Ah ; Current location HIGH
|
||||
Out DX, AL
|
||||
|
||||
SHR EAX, 16
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Call GUSDelay
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
Mov AL, 0Bh
|
||||
Out DX, AL
|
||||
|
||||
Mov AX, DI
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
SetGUSRegisters9:
|
||||
Test CL, 64 ; New volume??
|
||||
JZ SetGUSPanning
|
||||
|
||||
SetGUSRegisters23:
|
||||
Xor BX, BX
|
||||
Test CH, 8
|
||||
JNZ SetGUSRegistersMuted
|
||||
|
||||
Mov BL, Byte Ptr [SI+20h] ; BL = volume, 0->128
|
||||
|
||||
SetGUSRegistersMuted:
|
||||
Call SetGUSVolume
|
||||
|
||||
|
||||
SetGUSPanning:
|
||||
Test CH, 128 ; New panning?
|
||||
JZ SetGUSRegisters5
|
||||
|
||||
Mov AL, 0Ch ; Set panning.
|
||||
Out DX, AL
|
||||
|
||||
Test CS:Stereo, 1
|
||||
JZ SetGUSRegisters3
|
||||
|
||||
Mov AL, [SI+37h]
|
||||
Cmp AL, 100
|
||||
JNE SetGUSRegisters4
|
||||
|
||||
SetGUSRegisters3:
|
||||
Mov AL, 32 ; Surround goes to mono :(
|
||||
|
||||
SetGUSRegisters4: ; AL = 0->64
|
||||
ShR AL, 1 ; AL = 0->32
|
||||
Sub AL, 1
|
||||
AdC AL, 0 ; AL = 0->31
|
||||
ShR AL, 1
|
||||
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
SetGUSRegisters5:
|
||||
; Now for control register.
|
||||
; If CH | 2, then turn rego OFF
|
||||
; If CH | 5, then turn rego ON
|
||||
; If CL | 1, then check channel
|
||||
Test CH, 2
|
||||
JNZ SetGUSRegisters11
|
||||
|
||||
Test CH, 5
|
||||
JNZ SetGUSRegisters12
|
||||
|
||||
Test CL, 1
|
||||
JZ SetGUSRegisters13
|
||||
|
||||
Mov AL, 80h ; Read voice control
|
||||
Out DX, AL
|
||||
|
||||
Add DL, 2
|
||||
In AL, DX
|
||||
Sub DL, 2
|
||||
|
||||
Test AL, 1
|
||||
JZ SetGUSRegisters13
|
||||
|
||||
Xor BX, BX
|
||||
Call SetGUSVolume
|
||||
|
||||
Jmp SetGUSRegisters14
|
||||
|
||||
SetGUSRegisters11:
|
||||
; Turn off.
|
||||
Xor AL, AL
|
||||
Out DX, AL ; AL = 0 (Mode control)
|
||||
Mov AL, 2
|
||||
Add DL, 2
|
||||
|
||||
Mov AH, [SI+18h] ; 16 bit?
|
||||
Add AH, AH
|
||||
Or AL, AH
|
||||
|
||||
Out DX, AL
|
||||
Call GUSDelay
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
Xor BX, BX
|
||||
Call SetGUSVolume
|
||||
|
||||
SetGUSRegisters14:
|
||||
Test CL, 1
|
||||
JZ SetGUSRegisters13
|
||||
|
||||
Xor CX, CX ; Turn off channel
|
||||
Test Byte Ptr [SI+3Ah], 80h
|
||||
JNZ SetGUSRegisters13
|
||||
|
||||
Mov BX, [SI+38h]
|
||||
And Byte Ptr [BX], Not 4 ; Signify channel off
|
||||
|
||||
Jmp SetGUSRegisters13
|
||||
|
||||
SetGUSRegisters12: ; Turn on
|
||||
Xor AL, AL
|
||||
Out DX, AL
|
||||
|
||||
Mov AL, [SI+0Ah]
|
||||
|
||||
Cmp CS:Convert16To8Bit, 0
|
||||
JNZ SetGUSRegistersNo16Bit
|
||||
|
||||
Mov AH, [SI+18h] ; 16 bit?
|
||||
Add AH, AH
|
||||
Or AL, AH
|
||||
|
||||
SetGUSRegistersNo16Bit:
|
||||
Test CL, 1
|
||||
JNZ SetGUSRegisters15
|
||||
|
||||
Mov AL, 2
|
||||
Xor CX, CX
|
||||
|
||||
SetGUSRegisters15:
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Call GUSDelay
|
||||
Out DX, AL
|
||||
|
||||
SetGUSRegisters13:
|
||||
And CX, 0111100010011111b ; Turns off:
|
||||
; 1) Freq, pan & vol recalc
|
||||
; 2) New note/note stop/loop cha
|
||||
|
||||
Mov [SI], CX
|
||||
|
||||
Add SI, SLAVECHANNELSIZE
|
||||
|
||||
; Call CheckMIDI
|
||||
|
||||
Pop CX
|
||||
Pop AX
|
||||
|
||||
Inc AX
|
||||
Dec CX
|
||||
JNZ SetGUSRegisters1
|
||||
|
||||
Ret
|
||||
|
||||
|
||||
EndP SetGUSRegisters
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc SetGUSRegisters ; Given DS:SI, CX
|
||||
|
||||
Mov ES, CS:SongDataArea
|
||||
|
||||
Push CX
|
||||
Push SI
|
||||
|
||||
Xor AX, AX
|
||||
|
||||
GetOffsetLoop:
|
||||
Push AX
|
||||
Push CX
|
||||
|
||||
Mov DX, GUSVoiceSelect
|
||||
Out DX, AL ; OK.. now to play with this
|
||||
; voice.
|
||||
Call GUSDelay
|
||||
|
||||
Inc DL ; DX = select rego
|
||||
|
||||
Mov BX, [SI]
|
||||
Test BH, 2
|
||||
JZ GetOffsetLoop2
|
||||
|
||||
Mov BX, 200h
|
||||
Mov [SI], BX
|
||||
|
||||
GetOffsetLoop2:
|
||||
Test BL, 1 ; Channel not on!
|
||||
JZ GetOffsetLoop1
|
||||
Test BH, 1
|
||||
JZ GetOffsetLoop3 ; Prev 1.
|
||||
|
||||
Xor BX, BX
|
||||
Call SetGUSVolume
|
||||
|
||||
Mov AL, 80h
|
||||
Out DX, AL
|
||||
Add DL, 2
|
||||
In AL, DX
|
||||
Sub DL, 2
|
||||
Mov AH, AL
|
||||
And AX, 400h
|
||||
Out DX, AL ; AL = 0 (Mode control)
|
||||
Mov AL, 3
|
||||
Or AL, AH
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Call GUSDelay
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
Jmp GetOffsetLoop1
|
||||
|
||||
GetOffsetLoop3:
|
||||
Mov EAX, [SI+4Ch]
|
||||
Mov [SI+2Ch], EAX
|
||||
|
||||
Mov AL, 8Ah
|
||||
Out DX, AL
|
||||
|
||||
Inc DX
|
||||
In AX, DX
|
||||
Dec DX
|
||||
|
||||
And AH, 31
|
||||
ShL EAX, 16 ; Load high part of EAX
|
||||
|
||||
Mov AL, 8Bh
|
||||
Out DX, AL
|
||||
Inc DX
|
||||
In AX, DX
|
||||
; EAX = 000OOOOO OOOOOOOO OOOOOOOF FFFFFFFF
|
||||
; Need: 00000000 0000OOOO OOOOOOOO OOOOOOOO
|
||||
|
||||
ShR EAX, 9
|
||||
; EAX contains current loc.
|
||||
; Convert to Offset (in sample)
|
||||
MovZX EBX, Byte Ptr [SI+36h]
|
||||
Sub EAX, [CS:GUSDataTable+EBX*4]
|
||||
Push CX
|
||||
|
||||
Mov CL, CS:Compress
|
||||
ShL EAX, CL
|
||||
|
||||
Pop CX
|
||||
Mov [SI+4Ch], EAX
|
||||
|
||||
GetOffsetLoop1:
|
||||
Add SI, SLAVECHANNELSIZE
|
||||
|
||||
Pop CX
|
||||
Pop AX
|
||||
|
||||
Inc AX
|
||||
Loop GetOffsetLoop
|
||||
|
||||
Pop SI
|
||||
Pop CX
|
||||
|
||||
Xor AX, AX
|
||||
|
||||
SetGUSRegisters1:
|
||||
Push AX
|
||||
Push CX
|
||||
|
||||
Mov DX, GUSVoiceSelect
|
||||
Out DX, AL ; OK.. now to play with this
|
||||
; voice.
|
||||
Call GUSDelay
|
||||
|
||||
Mov CX, [SI] ; CX = flags.
|
||||
Inc DL ; DX = select rego
|
||||
|
||||
SetGUSRegisters21:
|
||||
Test CL, 32 ; Frequency change
|
||||
JZ SetGUSRegisters7
|
||||
|
||||
Push DX
|
||||
|
||||
Mov EAX, [SI+10h] ; EAX = freq.
|
||||
|
||||
Push CX
|
||||
Mov CL, CS:Compress
|
||||
ShR EAX, CL
|
||||
Pop CX
|
||||
|
||||
Xor EDX, EDX
|
||||
MovZX EBX, MixSpeed
|
||||
|
||||
Div EBX ; EAX = I portion.
|
||||
|
||||
Test EAX, Not 63
|
||||
JNZ SetGUSRegisters6
|
||||
|
||||
Push EAX
|
||||
|
||||
Xor EAX, EAX
|
||||
Div EBX
|
||||
|
||||
Pop EBX ; EBX:EAX = IIII FFFF etc.
|
||||
|
||||
SHRD EAX, EBX, 6
|
||||
|
||||
; Have: IIIIIIII IIIIIIII FFFFFFFF FFFFFFFF
|
||||
; Req: IIIIIIFF FFFFFFF0
|
||||
|
||||
Pop DX
|
||||
Mov AL, 1
|
||||
Out DX, AL
|
||||
|
||||
ShR EAX, 16
|
||||
Add AX, 1
|
||||
SBB AX, 0 ; Just in case!
|
||||
And AX, Not 1
|
||||
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
Jmp SetGUSRegisters7
|
||||
|
||||
SetGUSRegisters6:
|
||||
Mov CH, 2 ; Signify to turn off channel
|
||||
Pop DX
|
||||
|
||||
SetGUSRegisters7:
|
||||
MovZX BX, Byte Ptr [SI+36h] ; BX = sample number.
|
||||
Cmp BL, 99
|
||||
JA SetGUSRegisters20
|
||||
|
||||
ShL BX, 2 ; GUSDataTable+BX = position
|
||||
|
||||
Cmp DWord Ptr [CS:GUSDataTable+BX], 0FFFFFFFFh
|
||||
JNE SetGUSRegisters10
|
||||
|
||||
SetGUSRegisters20:
|
||||
Mov CH, 2
|
||||
Jmp SetGUSRegisters9
|
||||
|
||||
SetGUSRegisters10:
|
||||
Test CH, 5 ; Loop changed?!??!?
|
||||
JZ SetGUSRegisters8
|
||||
|
||||
Mov AL, 3 ; Starting location low.
|
||||
Out DX, AL
|
||||
|
||||
Mov EAX, [SI+40h]
|
||||
Call GUSGetAddress
|
||||
|
||||
; Reqd: ...OOOOO OOOOOOOO OOOOOOOI III.....
|
||||
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
Mov AL, 2 ; Starting location high
|
||||
Out DX, AL
|
||||
|
||||
ShR EAX, 16
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
; Ending location...
|
||||
Mov AL, 5 ; Ending location low
|
||||
Out DX, AL
|
||||
|
||||
Mov EAX, [SI+44h]
|
||||
Call GUSGetAddress
|
||||
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
Mov AL, 4 ; Ending location high
|
||||
Out DX, AL
|
||||
|
||||
SHR EAX, 16
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
SetGUSRegisters8:
|
||||
Test CH, 1 ; Do Current position?
|
||||
JZ SetGUSRegisters9
|
||||
|
||||
Mov AL, 0Bh ; Current location LOW
|
||||
Out DX, AL
|
||||
|
||||
Mov EAX, [SI+4Ch]
|
||||
Mov [SI+2Ch], EAX
|
||||
|
||||
; EAX = OOOOOOOO OOOOOOOO OOOOOOOO OOOOOOOO
|
||||
; Req: xxxOOOOO OOOOOOOO OOOOOOOF FFFFFFFF
|
||||
Call GUSGetAddress
|
||||
|
||||
Mov DI, AX
|
||||
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
Mov AL, 0Ah ; Current location HIGH
|
||||
Out DX, AL
|
||||
|
||||
SHR EAX, 16
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Call GUSDelay
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
Mov AL, 0Bh
|
||||
Out DX, AL
|
||||
|
||||
Mov AX, DI
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
SetGUSRegisters9:
|
||||
Test CL, 64 ; New volume??
|
||||
JZ SetGUSPanning
|
||||
|
||||
SetGUSRegisters23:
|
||||
Xor BX, BX
|
||||
Test CH, 8
|
||||
JNZ SetGUSRegistersMuted
|
||||
|
||||
Mov BL, Byte Ptr [SI+20h] ; BL = volume, 0->128
|
||||
|
||||
SetGUSRegistersMuted:
|
||||
Call SetGUSVolume
|
||||
|
||||
|
||||
SetGUSPanning:
|
||||
Test CH, 128 ; New panning?
|
||||
JZ SetGUSRegisters5
|
||||
|
||||
Mov AL, 0Ch ; Set panning.
|
||||
Out DX, AL
|
||||
|
||||
Test CS:Stereo, 1
|
||||
JZ SetGUSRegisters3
|
||||
|
||||
Mov AL, [SI+37h]
|
||||
Cmp AL, 100
|
||||
JNE SetGUSRegisters4
|
||||
|
||||
SetGUSRegisters3:
|
||||
Mov AL, 32 ; Surround goes to mono :(
|
||||
|
||||
SetGUSRegisters4: ; AL = 0->64
|
||||
ShR AL, 1 ; AL = 0->32
|
||||
Sub AL, 1
|
||||
AdC AL, 0 ; AL = 0->31
|
||||
ShR AL, 1
|
||||
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
SetGUSRegisters5:
|
||||
; Now for control register.
|
||||
; If CH | 2, then turn rego OFF
|
||||
; If CH | 5, then turn rego ON
|
||||
; If CL | 1, then check channel
|
||||
Test CH, 2
|
||||
JNZ SetGUSRegisters11
|
||||
|
||||
Test CH, 5
|
||||
JNZ SetGUSRegisters12
|
||||
|
||||
Test CL, 1
|
||||
JZ SetGUSRegisters13
|
||||
|
||||
Mov AL, 80h ; Read voice control
|
||||
Out DX, AL
|
||||
|
||||
Add DL, 2
|
||||
In AL, DX
|
||||
Sub DL, 2
|
||||
|
||||
Test AL, 1
|
||||
JZ SetGUSRegisters13
|
||||
|
||||
Xor BX, BX
|
||||
Call SetGUSVolume
|
||||
|
||||
Jmp SetGUSRegisters14
|
||||
|
||||
SetGUSRegisters11:
|
||||
; Turn off.
|
||||
Xor AL, AL
|
||||
Out DX, AL ; AL = 0 (Mode control)
|
||||
Mov AL, 2
|
||||
Add DL, 2
|
||||
|
||||
Mov AH, [SI+18h] ; 16 bit?
|
||||
Add AH, AH
|
||||
Or AL, AH
|
||||
|
||||
Out DX, AL
|
||||
Call GUSDelay
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
Xor BX, BX
|
||||
Call SetGUSVolume
|
||||
|
||||
SetGUSRegisters14:
|
||||
Test CL, 1
|
||||
JZ SetGUSRegisters13
|
||||
|
||||
Xor CX, CX ; Turn off channel
|
||||
Test Byte Ptr [SI+3Ah], 80h
|
||||
JNZ SetGUSRegisters13
|
||||
|
||||
Mov BX, [SI+38h]
|
||||
And Byte Ptr [BX], Not 4 ; Signify channel off
|
||||
|
||||
Jmp SetGUSRegisters13
|
||||
|
||||
SetGUSRegisters12: ; Turn on
|
||||
Xor AL, AL
|
||||
Out DX, AL
|
||||
|
||||
Mov AL, [SI+0Ah]
|
||||
|
||||
Cmp CS:Convert16To8Bit, 0
|
||||
JNZ SetGUSRegistersNo16Bit
|
||||
|
||||
Mov AH, [SI+18h] ; 16 bit?
|
||||
Add AH, AH
|
||||
Or AL, AH
|
||||
|
||||
SetGUSRegistersNo16Bit:
|
||||
Test CL, 1
|
||||
JNZ SetGUSRegisters15
|
||||
|
||||
Mov AL, 2
|
||||
Xor CX, CX
|
||||
|
||||
SetGUSRegisters15:
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Call GUSDelay
|
||||
Out DX, AL
|
||||
|
||||
SetGUSRegisters13:
|
||||
And CX, 0111100010011111b ; Turns off:
|
||||
; 1) Freq, pan & vol recalc
|
||||
; 2) New note/note stop/loop cha
|
||||
|
||||
Mov [SI], CX
|
||||
|
||||
Add SI, SLAVECHANNELSIZE
|
||||
|
||||
; Call CheckMIDI
|
||||
|
||||
Pop CX
|
||||
Pop AX
|
||||
|
||||
Inc AX
|
||||
Dec CX
|
||||
JNZ SetGUSRegisters1
|
||||
|
||||
Ret
|
||||
|
||||
|
||||
EndP SetGUSRegisters
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,114 +1,114 @@
|
|||
|
||||
Proc SetGUSVolume ; BX = new volume
|
||||
|
||||
; To do:
|
||||
; 1) Set ramp start
|
||||
; 2) Set ramp end
|
||||
; 3) Set current volume
|
||||
; 4) Start ramp
|
||||
; 5) Save new volume.
|
||||
|
||||
Push BX
|
||||
Push CX
|
||||
|
||||
Mov AL, 0Dh
|
||||
Out DX, AL
|
||||
|
||||
Mov AL, 3 ; Stop Ramp!
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Call GUSDelay
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
Add BX, BX
|
||||
Mov CX, [CS:GUSVolumeTable+BX] ; CX = new volume
|
||||
Mov BX, [SI+2]
|
||||
Add BX, BX
|
||||
Mov BX, [CS:GUSVolumeTable+BX] ; BX = old volume
|
||||
|
||||
Cmp BX, CX
|
||||
JNE SetGUSVolume2
|
||||
|
||||
Mov AL, 89h
|
||||
Out DX, AL
|
||||
Inc DX
|
||||
In AX, DX
|
||||
Dec DX
|
||||
|
||||
Mov BX, AX ; BX = old volume
|
||||
|
||||
SetGUSVolume2:
|
||||
|
||||
Push BX ; Old volume on stack
|
||||
|
||||
Xor AH, AH ; Ramp up
|
||||
Cmp CX, BX
|
||||
JAE SetGUSVolume1
|
||||
|
||||
XChg BX, CX
|
||||
Mov AH, 40h ; Ramp down
|
||||
|
||||
SetGUSVolume1:
|
||||
Mov AL, 6 ; Ramp rate
|
||||
Out DX, AL
|
||||
|
||||
Mov AL, Byte Ptr CS:UsedChannels
|
||||
ShR AL, 1
|
||||
Add AL, 16
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
Mov AL, 7 ; Ramp start
|
||||
Out DX, AL
|
||||
|
||||
Mov AL, BH
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Call GUSDelay
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
Mov AL, 8 ; Ramp end
|
||||
Out DX, AL
|
||||
|
||||
Mov AL, CH
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Call GUSDelay
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
Mov AL, 9
|
||||
Out DX, AL
|
||||
|
||||
Pop BX ; BX = old volume
|
||||
XChg BX, AX
|
||||
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Call GUSDelay
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
Mov AL, 0Dh ; Ramp control
|
||||
Out DX, AL
|
||||
|
||||
Mov AL, BH
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Call GUSDelay
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
Pop CX
|
||||
Pop BX
|
||||
|
||||
Mov [SI+2], BX
|
||||
|
||||
Ret
|
||||
|
||||
EndP SetGUSVolume
|
||||
|
||||
|
||||
|
||||
Proc SetGUSVolume ; BX = new volume
|
||||
|
||||
; To do:
|
||||
; 1) Set ramp start
|
||||
; 2) Set ramp end
|
||||
; 3) Set current volume
|
||||
; 4) Start ramp
|
||||
; 5) Save new volume.
|
||||
|
||||
Push BX
|
||||
Push CX
|
||||
|
||||
Mov AL, 0Dh
|
||||
Out DX, AL
|
||||
|
||||
Mov AL, 3 ; Stop Ramp!
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Call GUSDelay
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
Add BX, BX
|
||||
Mov CX, [CS:GUSVolumeTable+BX] ; CX = new volume
|
||||
Mov BX, [SI+2]
|
||||
Add BX, BX
|
||||
Mov BX, [CS:GUSVolumeTable+BX] ; BX = old volume
|
||||
|
||||
Cmp BX, CX
|
||||
JNE SetGUSVolume2
|
||||
|
||||
Mov AL, 89h
|
||||
Out DX, AL
|
||||
Inc DX
|
||||
In AX, DX
|
||||
Dec DX
|
||||
|
||||
Mov BX, AX ; BX = old volume
|
||||
|
||||
SetGUSVolume2:
|
||||
|
||||
Push BX ; Old volume on stack
|
||||
|
||||
Xor AH, AH ; Ramp up
|
||||
Cmp CX, BX
|
||||
JAE SetGUSVolume1
|
||||
|
||||
XChg BX, CX
|
||||
Mov AH, 40h ; Ramp down
|
||||
|
||||
SetGUSVolume1:
|
||||
Mov AL, 6 ; Ramp rate
|
||||
Out DX, AL
|
||||
|
||||
Mov AL, Byte Ptr CS:UsedChannels
|
||||
ShR AL, 1
|
||||
Add AL, 16
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
Mov AL, 7 ; Ramp start
|
||||
Out DX, AL
|
||||
|
||||
Mov AL, BH
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Call GUSDelay
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
Mov AL, 8 ; Ramp end
|
||||
Out DX, AL
|
||||
|
||||
Mov AL, CH
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Call GUSDelay
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
Mov AL, 9
|
||||
Out DX, AL
|
||||
|
||||
Pop BX ; BX = old volume
|
||||
XChg BX, AX
|
||||
|
||||
Inc DX
|
||||
Out DX, AX
|
||||
Call GUSDelay
|
||||
Out DX, AX
|
||||
Dec DX
|
||||
|
||||
Mov AL, 0Dh ; Ramp control
|
||||
Out DX, AL
|
||||
|
||||
Mov AL, BH
|
||||
Add DL, 2
|
||||
Out DX, AL
|
||||
Call GUSDelay
|
||||
Out DX, AL
|
||||
Sub DL, 2
|
||||
|
||||
Pop CX
|
||||
Pop BX
|
||||
|
||||
Mov [SI+2], BX
|
||||
|
||||
Ret
|
||||
|
||||
EndP SetGUSVolume
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,20 +1,20 @@
|
|||
|
||||
IRQData Label Word
|
||||
DW 20h, 1111111111111110b ; IRQ 0
|
||||
DW 24h, 1111111111111101b ; IRQ 1
|
||||
DW 28h, 1111110111111011b ; IRQ 2
|
||||
DW 2Ch, 1111111111110111b ; IRQ 3
|
||||
DW 30h, 1111111111101111b ; IRQ 4
|
||||
DW 34h, 1111111111011111b ; IRQ 5
|
||||
DW 38h, 1111111110111111b ; IRQ 6
|
||||
DW 3Ch, 1111111101111111b ; IRQ 7
|
||||
DW 1C0h, 1111111011111011b ; IRQ 8
|
||||
DW 1C4h, 1111110111111011b ; IRQ 9
|
||||
DW 1C8h, 1111101111111011b ; IRQ 10
|
||||
DW 1CCh, 1111011111111011b ; IRQ 11
|
||||
DW 1D0h, 1110111111111011b ; IRQ 12
|
||||
DW 1D4h, 1101111111111011b ; IRQ 13
|
||||
DW 1D8h, 1011111111111011b ; IRQ 14
|
||||
DW 1DCh, 0111111111111011b ; IRQ 15
|
||||
|
||||
|
||||
|
||||
IRQData Label Word
|
||||
DW 20h, 1111111111111110b ; IRQ 0
|
||||
DW 24h, 1111111111111101b ; IRQ 1
|
||||
DW 28h, 1111110111111011b ; IRQ 2
|
||||
DW 2Ch, 1111111111110111b ; IRQ 3
|
||||
DW 30h, 1111111111101111b ; IRQ 4
|
||||
DW 34h, 1111111111011111b ; IRQ 5
|
||||
DW 38h, 1111111110111111b ; IRQ 6
|
||||
DW 3Ch, 1111111101111111b ; IRQ 7
|
||||
DW 1C0h, 1111111011111011b ; IRQ 8
|
||||
DW 1C4h, 1111110111111011b ; IRQ 9
|
||||
DW 1C8h, 1111101111111011b ; IRQ 10
|
||||
DW 1CCh, 1111011111111011b ; IRQ 11
|
||||
DW 1D0h, 1110111111111011b ; IRQ 12
|
||||
DW 1D4h, 1101111111111011b ; IRQ 13
|
||||
DW 1D8h, 1011111111111011b ; IRQ 14
|
||||
DW 1DCh, 0111111111111011b ; IRQ 15
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,388 +1,388 @@
|
|||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Align 4
|
||||
include q.inc
|
||||
FilterParameters DB 64 Dup (07Fh), 64 Dup (0)
|
||||
Const2048 DD 16384.0
|
||||
FreqMultiplier DD 3A9F7867h ; = 1/(2*PI*110.0*2^0.25)
|
||||
FreqParameterMultiplier DD 0B92AAAAAh ; = -1/(24*256)
|
||||
|
||||
NUMBEROFFILTERBANDS = 4
|
||||
|
||||
IF OUTPUTFILTERENABLED
|
||||
LastFilter DD NUMBEROFFILTERBANDS*2 Dup (0) ; 4 stereo values
|
||||
FilterCoefficients DD NUMBEROFFILTERBANDS*2 Dup (0)
|
||||
FilterVolumes DD NUMBEROFFILTERBANDS Dup (0)
|
||||
ENDIF
|
||||
|
||||
FilterFreqValue DW 0
|
||||
NewControlWord DW 7Fh
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc MixSamples ; Given DS:SI = info tables, CX = numchannels
|
||||
Assume DS:Nothing
|
||||
|
||||
; 1. Clean buffer
|
||||
; + update variables
|
||||
; 2. Update parameters
|
||||
; 3. Mix func
|
||||
; 4. Return
|
||||
|
||||
Push CX
|
||||
|
||||
Mov CX, BytesToMix
|
||||
Mov ES, CS:MixSegment
|
||||
Mov DI, DMABUFFERLENGTH*2+80
|
||||
Xor EAX, EAX
|
||||
Mov DX, CX
|
||||
Add CX, CX
|
||||
|
||||
Mov CS:MixTransferOffset, DI
|
||||
|
||||
Cmp CS:Stereo, 0
|
||||
JE CS:MixSamples1
|
||||
|
||||
Mov DX, CX
|
||||
|
||||
MixSamples1:
|
||||
Rep StosD
|
||||
Mov CS:MixTransferRemaining, DX
|
||||
|
||||
Pop CX
|
||||
|
||||
MixSamples2:
|
||||
Test Byte Ptr [SI], 1
|
||||
JZ MixSamplesEnd2
|
||||
|
||||
Cmp Byte Ptr [SI+36h], 100
|
||||
JE MixSamplesEnd2
|
||||
|
||||
Push CX
|
||||
Mov CX, [SI]
|
||||
|
||||
Test CH, 2
|
||||
JZ MixSamplesNoStop
|
||||
|
||||
And Byte Ptr [SI], Not 1
|
||||
|
||||
Cmp MixMode, 2
|
||||
JB MixSamplesEnd
|
||||
|
||||
Mov DWord Ptr [SI+0Ch], 0
|
||||
Jmp MixModeCommon
|
||||
|
||||
MixSamplesNoStop:
|
||||
Test CL, 20h ; New freq?
|
||||
JZ MixSamples5
|
||||
|
||||
Mov AX, [SI+10h]
|
||||
Mov DX, [SI+12h]
|
||||
Mov BX, MixSpeed
|
||||
Cmp DX, BX
|
||||
JAE MixSamplesHandleError
|
||||
|
||||
Div BX
|
||||
ShL EAX, 16
|
||||
Xor AX, AX
|
||||
Div BX
|
||||
Mov STEPVALUE, EAX
|
||||
|
||||
MixSamples4:
|
||||
Test CH, 1
|
||||
JZ MixSamples5
|
||||
|
||||
Xor EAX, EAX
|
||||
Mov [SI+3Ch], AX ; For filter.
|
||||
Mov [SI+6Eh], AX
|
||||
|
||||
Mov DWord Ptr [SI+1Ch], EAX ; Current Volume = 0
|
||||
; for volume sliding.
|
||||
Mov [SI+06h], DX
|
||||
Mov [SI+5Eh], AX
|
||||
Mov [SI+7Eh], AX
|
||||
|
||||
MixSamples5:
|
||||
Test CX, 8540h ; New volume or panning?
|
||||
JZ MixSamplesMix
|
||||
|
||||
Mov AX, 4*60
|
||||
|
||||
Test CH, 8 ; Muted?
|
||||
JZ MixMMXNoMute
|
||||
|
||||
Xor EDX, EDX
|
||||
Mov [SI+06h], DX
|
||||
Mov [SI+0Ch], EDX
|
||||
Mov [SI+5Eh], DX
|
||||
Mov [SI+1Ch], EDX
|
||||
Mov [SI+6Eh], DX
|
||||
Mov [SI+3Ch], DX
|
||||
Mov [SI+7Eh], DX
|
||||
|
||||
Xor BX, BX
|
||||
Mov BL, [SI+3Ah]
|
||||
|
||||
Test BL, BL
|
||||
JS MixModeCommon1
|
||||
|
||||
Mov DL, [CS:FilterParameters+BX]
|
||||
Mov BL, [CS:FilterParameters+BX+64]
|
||||
|
||||
Mov [SI+5Bh], DL
|
||||
Mov [SI+3Fh], BL
|
||||
|
||||
Jmp MixModeCommon1
|
||||
|
||||
MixMMXNoMute:
|
||||
Xor BX, BX
|
||||
Mov BL, [SI+3Ah]
|
||||
|
||||
Test BL, BL ; Disowned? Then use channel filters.
|
||||
JNS MixGetChannelFilters
|
||||
|
||||
Mov BL, [SI+3Fh]
|
||||
Jmp MixChannelFilters
|
||||
|
||||
MixGetChannelFilters:
|
||||
; Filter = [FilterParameters+BX]
|
||||
; Q = [FilterParameters+BX+64]
|
||||
|
||||
Mov AL, [CS:FilterParameters+BX] ; AX = Filter
|
||||
Mov BL, [CS:FilterParameters+BX+64] ; BX = Q
|
||||
|
||||
; If the values are different, then force recalculate volume. (and hence mixmode)
|
||||
|
||||
Cmp [SI+5Bh], AL
|
||||
JE MixChannelFiltersSame
|
||||
Cmp [SI+3Fh], BL
|
||||
JE MixChannelFiltersSame
|
||||
|
||||
Mov DWord Ptr [SI+0Ch], 0
|
||||
|
||||
MixChannelFiltersSame:
|
||||
Mov [SI+5Bh], AL
|
||||
Mov [SI+3Fh], BL
|
||||
|
||||
MixChannelFilters:
|
||||
Cmp MixMode, 3
|
||||
JNE MixMMXNoFilters
|
||||
|
||||
Mov AL, [SI+3Eh]
|
||||
Mul Byte Ptr [SI+5Bh]
|
||||
|
||||
Mov CS:FilterFreqValue, AX
|
||||
|
||||
Cmp AX, 127*255
|
||||
JNE MixChannelFiltersOK
|
||||
Test BL, BL
|
||||
JZ MixMMXNoFilters
|
||||
|
||||
MixChannelFiltersOK:
|
||||
ShL BX, 2
|
||||
|
||||
FNInit
|
||||
FLdCW [CS:NewControlWord]
|
||||
|
||||
FILD [CS:FilterFreqValue] ; 0->127*256
|
||||
FMul [CS:FreqParameterMultiplier] ; -i/(24*256)
|
||||
FLd ST
|
||||
FRndInt
|
||||
FSub ST(1), ST
|
||||
FXCh
|
||||
F2XM1
|
||||
FLd1
|
||||
FAdd
|
||||
FScale ; = 2^(i/24*256)
|
||||
FMul [CS:FreqMultiplier] ; = r
|
||||
FLd ST ; r, r
|
||||
FMul ST(1), ST ; r, r^2
|
||||
|
||||
FLd [CS:QualityFactorTable+BX] ; 2d, r, r^2
|
||||
FMul ST(1), ST ; 2d, 2dr, r^2
|
||||
FAdd
|
||||
|
||||
FLd1 ; 1, d+1, e
|
||||
FXCh ; d+1, 1, e
|
||||
FSubR ST(1), ST
|
||||
FAdd ST, ST(2) ; 1+d+e, d, e
|
||||
FDivR Const2048 ; 1/(1+d+e), d, e
|
||||
FISt Word Ptr [SI+5Eh] ;
|
||||
FLd ST(2) ; e, 1/(1+d+e), d, e
|
||||
FAdd ST, ST
|
||||
FAddP ST(2), ST ; 1/(1+d+e), d+2e, e
|
||||
FMul ST(2), ST ; 1/(1+d+e), d+2e, e/(1+d+e)
|
||||
FMul
|
||||
FIStP Word Ptr [SI+6Eh]
|
||||
FChs
|
||||
FIStP Word Ptr [SI+7Eh]
|
||||
FStP ST
|
||||
Mov DWord Ptr [SI+0Ch], 0
|
||||
|
||||
MixMMXNoFilters:
|
||||
Mov EBX, [SI+0Ch]
|
||||
|
||||
Cmp Stereo, 0
|
||||
JNE MixMMXStereo
|
||||
|
||||
MixMMXMono:
|
||||
Mov AX, [SI+4Ah]
|
||||
Mul MixVolume
|
||||
ShRD AX, DX, 9
|
||||
Mov [SI+0Ch], AX
|
||||
Mov [SI+0Eh], AX
|
||||
|
||||
Jmp MixModeVolumeCheck
|
||||
|
||||
MixMMXStereo:
|
||||
Mov AL, [SI+37h] ; Final pan
|
||||
Cmp AL, 100
|
||||
JE MixMMXSurround
|
||||
|
||||
Mul Byte Ptr MixVolume ; 0->128
|
||||
Mul Word Ptr [SI+4Ah] ; 0->32768
|
||||
ShRD AX, DX, 15 ; Maxvol = 8192
|
||||
Mov [SI+0Eh], AX ; Store into right volume
|
||||
|
||||
Mov AL, 64 ; Do left volume
|
||||
Sub AL, [SI+37h] ; AL = 64-FinalPan
|
||||
Mul Byte Ptr MixVolume
|
||||
Mul Word Ptr [SI+4Ah]
|
||||
ShRD AX, DX, 15
|
||||
Mov [SI+0Ch], AX
|
||||
|
||||
Jmp MixModeVolumeCheck
|
||||
|
||||
MixMMXSurround:
|
||||
Mov AX, [SI+4Ah]
|
||||
Mul MixVolume
|
||||
ShRD AX, DX, 10
|
||||
Mov [SI+0Ch], AX
|
||||
Neg AX
|
||||
Mov [SI+0Eh], AX
|
||||
|
||||
MixModeVolumeCheck:
|
||||
Test CH, 3+4
|
||||
JNZ MixModeCommon
|
||||
|
||||
Cmp EBX, [SI+0Ch] ; Same as last volume?
|
||||
JE MixSamplesMix
|
||||
|
||||
MixModeCommon: ; Requires AX = 30 etc. depending
|
||||
; On mixing mode type.
|
||||
; This will add 180 for 16-bit,
|
||||
; And sort out loop types.
|
||||
Mov AX, MixModeOffset
|
||||
|
||||
Cmp DWord Ptr [SI+0Ch], 0
|
||||
JNE MixModeActualMix
|
||||
|
||||
Cmp MixMode, 2
|
||||
JB MixMMXGeneralNoRamp
|
||||
|
||||
Cmp DWord Ptr [SI+1Ch], 0
|
||||
JNE MixModeActualMix
|
||||
|
||||
MixMMXGeneralNoRamp:
|
||||
Mov AX, 4*60
|
||||
Jmp MixModeCommon1
|
||||
|
||||
MixModeActualMix:
|
||||
Cmp MixMode, 3
|
||||
JNE MixModeFilter
|
||||
|
||||
Cmp Word Ptr [SI+6Eh], 0
|
||||
JNE MixModeFilter
|
||||
Cmp Word Ptr [SI+7Eh], 0
|
||||
JNE MixModeFilter
|
||||
|
||||
Sub AX, 60
|
||||
|
||||
MixModeFilter:
|
||||
Test Byte Ptr [SI+18h], 2 ; 16 bit?
|
||||
JZ MixModeCommon1
|
||||
|
||||
Add AX, 30
|
||||
|
||||
MixModeCommon1:
|
||||
Cmp Byte Ptr [SI+0Ah], 8
|
||||
JB MixModeCommon3 ; No loop
|
||||
JE MixModeCommon2 ; Forwards loop
|
||||
|
||||
Add AX, 10
|
||||
|
||||
MixModeCommon2:
|
||||
Add AX, 10
|
||||
|
||||
MixModeCommon3:
|
||||
Add AX, Offset MixFunctionTables
|
||||
Mov [SI+8], AX ; Offset...
|
||||
|
||||
MixSamplesMix:
|
||||
Mov BX, [SI+8] ; BX = offset into
|
||||
Mov EAX, [CS:BX+2]
|
||||
Mov DWord Ptr PreMixFunction, EAX
|
||||
Mov EAX, [CS:BX+6]
|
||||
Mov DWord Ptr MixFunctionSeparateBackwards, EAX
|
||||
|
||||
Mov AX, BytesToMix
|
||||
Mov MixBlockSize, AX
|
||||
Mov MixBufferOffset, DMABUFFERLENGTH*2+80
|
||||
|
||||
Mov EAX, CURRENTPOSITION
|
||||
Mov OLDPOSITION, EAX
|
||||
|
||||
Push Word Ptr [SI+8]
|
||||
Call Word Ptr [CS:BX]
|
||||
Pop BX
|
||||
|
||||
And Word Ptr [SI], 0111100010001101b
|
||||
|
||||
Cmp BX, Offset MixFunctionTables+60*2
|
||||
JB MixSamplesEnd
|
||||
Cmp BX, Offset MixFunctionTables+60*4
|
||||
JAE MixSamplesEnd
|
||||
|
||||
MovDR AX, MM6
|
||||
Mov [SI+0Ch], EAX
|
||||
Mov [SI+1Ch], EAX
|
||||
|
||||
Cmp BX, Offset MixfunctionTables+60*3
|
||||
JB MixSamplesEnd
|
||||
|
||||
Mov ES, CS:MixSegment
|
||||
Mov DX, [ES:10h]
|
||||
Mov BX, [ES:14h]
|
||||
Mov [SI+3Ch], DX
|
||||
Mov [SI+6h], BX
|
||||
Jmp MixSamplesEnd
|
||||
|
||||
MixSamplesHandleError:
|
||||
Mov Word Ptr [SI], 200h
|
||||
|
||||
Test Byte Ptr [SI+3Ah], 80h
|
||||
JNZ MixSamplesEnd
|
||||
|
||||
Mov BX, [SI+38h]
|
||||
And Byte Ptr [BX], Not 4 ; Turn off channel
|
||||
|
||||
MixSamplesEnd:
|
||||
Pop CX
|
||||
|
||||
MixSamplesEnd2:
|
||||
Add SI, 128
|
||||
Dec CX
|
||||
JNZ MixSamples2
|
||||
|
||||
IF OUTPUTFILTERENABLED
|
||||
include equalize.inc
|
||||
ENDIF
|
||||
Ret
|
||||
|
||||
EndP MixSamples
|
||||
Assume DS:Nothing
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Align 4
|
||||
include q.inc
|
||||
FilterParameters DB 64 Dup (07Fh), 64 Dup (0)
|
||||
Const2048 DD 16384.0
|
||||
FreqMultiplier DD 3A9F7867h ; = 1/(2*PI*110.0*2^0.25)
|
||||
FreqParameterMultiplier DD 0B92AAAAAh ; = -1/(24*256)
|
||||
|
||||
NUMBEROFFILTERBANDS = 4
|
||||
|
||||
IF OUTPUTFILTERENABLED
|
||||
LastFilter DD NUMBEROFFILTERBANDS*2 Dup (0) ; 4 stereo values
|
||||
FilterCoefficients DD NUMBEROFFILTERBANDS*2 Dup (0)
|
||||
FilterVolumes DD NUMBEROFFILTERBANDS Dup (0)
|
||||
ENDIF
|
||||
|
||||
FilterFreqValue DW 0
|
||||
NewControlWord DW 7Fh
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
Proc MixSamples ; Given DS:SI = info tables, CX = numchannels
|
||||
Assume DS:Nothing
|
||||
|
||||
; 1. Clean buffer
|
||||
; + update variables
|
||||
; 2. Update parameters
|
||||
; 3. Mix func
|
||||
; 4. Return
|
||||
|
||||
Push CX
|
||||
|
||||
Mov CX, BytesToMix
|
||||
Mov ES, CS:MixSegment
|
||||
Mov DI, DMABUFFERLENGTH*2+80
|
||||
Xor EAX, EAX
|
||||
Mov DX, CX
|
||||
Add CX, CX
|
||||
|
||||
Mov CS:MixTransferOffset, DI
|
||||
|
||||
Cmp CS:Stereo, 0
|
||||
JE CS:MixSamples1
|
||||
|
||||
Mov DX, CX
|
||||
|
||||
MixSamples1:
|
||||
Rep StosD
|
||||
Mov CS:MixTransferRemaining, DX
|
||||
|
||||
Pop CX
|
||||
|
||||
MixSamples2:
|
||||
Test Byte Ptr [SI], 1
|
||||
JZ MixSamplesEnd2
|
||||
|
||||
Cmp Byte Ptr [SI+36h], 100
|
||||
JE MixSamplesEnd2
|
||||
|
||||
Push CX
|
||||
Mov CX, [SI]
|
||||
|
||||
Test CH, 2
|
||||
JZ MixSamplesNoStop
|
||||
|
||||
And Byte Ptr [SI], Not 1
|
||||
|
||||
Cmp MixMode, 2
|
||||
JB MixSamplesEnd
|
||||
|
||||
Mov DWord Ptr [SI+0Ch], 0
|
||||
Jmp MixModeCommon
|
||||
|
||||
MixSamplesNoStop:
|
||||
Test CL, 20h ; New freq?
|
||||
JZ MixSamples5
|
||||
|
||||
Mov AX, [SI+10h]
|
||||
Mov DX, [SI+12h]
|
||||
Mov BX, MixSpeed
|
||||
Cmp DX, BX
|
||||
JAE MixSamplesHandleError
|
||||
|
||||
Div BX
|
||||
ShL EAX, 16
|
||||
Xor AX, AX
|
||||
Div BX
|
||||
Mov STEPVALUE, EAX
|
||||
|
||||
MixSamples4:
|
||||
Test CH, 1
|
||||
JZ MixSamples5
|
||||
|
||||
Xor EAX, EAX
|
||||
Mov [SI+3Ch], AX ; For filter.
|
||||
Mov [SI+6Eh], AX
|
||||
|
||||
Mov DWord Ptr [SI+1Ch], EAX ; Current Volume = 0
|
||||
; for volume sliding.
|
||||
Mov [SI+06h], DX
|
||||
Mov [SI+5Eh], AX
|
||||
Mov [SI+7Eh], AX
|
||||
|
||||
MixSamples5:
|
||||
Test CX, 8540h ; New volume or panning?
|
||||
JZ MixSamplesMix
|
||||
|
||||
Mov AX, 4*60
|
||||
|
||||
Test CH, 8 ; Muted?
|
||||
JZ MixMMXNoMute
|
||||
|
||||
Xor EDX, EDX
|
||||
Mov [SI+06h], DX
|
||||
Mov [SI+0Ch], EDX
|
||||
Mov [SI+5Eh], DX
|
||||
Mov [SI+1Ch], EDX
|
||||
Mov [SI+6Eh], DX
|
||||
Mov [SI+3Ch], DX
|
||||
Mov [SI+7Eh], DX
|
||||
|
||||
Xor BX, BX
|
||||
Mov BL, [SI+3Ah]
|
||||
|
||||
Test BL, BL
|
||||
JS MixModeCommon1
|
||||
|
||||
Mov DL, [CS:FilterParameters+BX]
|
||||
Mov BL, [CS:FilterParameters+BX+64]
|
||||
|
||||
Mov [SI+5Bh], DL
|
||||
Mov [SI+3Fh], BL
|
||||
|
||||
Jmp MixModeCommon1
|
||||
|
||||
MixMMXNoMute:
|
||||
Xor BX, BX
|
||||
Mov BL, [SI+3Ah]
|
||||
|
||||
Test BL, BL ; Disowned? Then use channel filters.
|
||||
JNS MixGetChannelFilters
|
||||
|
||||
Mov BL, [SI+3Fh]
|
||||
Jmp MixChannelFilters
|
||||
|
||||
MixGetChannelFilters:
|
||||
; Filter = [FilterParameters+BX]
|
||||
; Q = [FilterParameters+BX+64]
|
||||
|
||||
Mov AL, [CS:FilterParameters+BX] ; AX = Filter
|
||||
Mov BL, [CS:FilterParameters+BX+64] ; BX = Q
|
||||
|
||||
; If the values are different, then force recalculate volume. (and hence mixmode)
|
||||
|
||||
Cmp [SI+5Bh], AL
|
||||
JE MixChannelFiltersSame
|
||||
Cmp [SI+3Fh], BL
|
||||
JE MixChannelFiltersSame
|
||||
|
||||
Mov DWord Ptr [SI+0Ch], 0
|
||||
|
||||
MixChannelFiltersSame:
|
||||
Mov [SI+5Bh], AL
|
||||
Mov [SI+3Fh], BL
|
||||
|
||||
MixChannelFilters:
|
||||
Cmp MixMode, 3
|
||||
JNE MixMMXNoFilters
|
||||
|
||||
Mov AL, [SI+3Eh]
|
||||
Mul Byte Ptr [SI+5Bh]
|
||||
|
||||
Mov CS:FilterFreqValue, AX
|
||||
|
||||
Cmp AX, 127*255
|
||||
JNE MixChannelFiltersOK
|
||||
Test BL, BL
|
||||
JZ MixMMXNoFilters
|
||||
|
||||
MixChannelFiltersOK:
|
||||
ShL BX, 2
|
||||
|
||||
FNInit
|
||||
FLdCW [CS:NewControlWord]
|
||||
|
||||
FILD [CS:FilterFreqValue] ; 0->127*256
|
||||
FMul [CS:FreqParameterMultiplier] ; -i/(24*256)
|
||||
FLd ST
|
||||
FRndInt
|
||||
FSub ST(1), ST
|
||||
FXCh
|
||||
F2XM1
|
||||
FLd1
|
||||
FAdd
|
||||
FScale ; = 2^(i/24*256)
|
||||
FMul [CS:FreqMultiplier] ; = r
|
||||
FLd ST ; r, r
|
||||
FMul ST(1), ST ; r, r^2
|
||||
|
||||
FLd [CS:QualityFactorTable+BX] ; 2d, r, r^2
|
||||
FMul ST(1), ST ; 2d, 2dr, r^2
|
||||
FAdd
|
||||
|
||||
FLd1 ; 1, d+1, e
|
||||
FXCh ; d+1, 1, e
|
||||
FSubR ST(1), ST
|
||||
FAdd ST, ST(2) ; 1+d+e, d, e
|
||||
FDivR Const2048 ; 1/(1+d+e), d, e
|
||||
FISt Word Ptr [SI+5Eh] ;
|
||||
FLd ST(2) ; e, 1/(1+d+e), d, e
|
||||
FAdd ST, ST
|
||||
FAddP ST(2), ST ; 1/(1+d+e), d+2e, e
|
||||
FMul ST(2), ST ; 1/(1+d+e), d+2e, e/(1+d+e)
|
||||
FMul
|
||||
FIStP Word Ptr [SI+6Eh]
|
||||
FChs
|
||||
FIStP Word Ptr [SI+7Eh]
|
||||
FStP ST
|
||||
Mov DWord Ptr [SI+0Ch], 0
|
||||
|
||||
MixMMXNoFilters:
|
||||
Mov EBX, [SI+0Ch]
|
||||
|
||||
Cmp Stereo, 0
|
||||
JNE MixMMXStereo
|
||||
|
||||
MixMMXMono:
|
||||
Mov AX, [SI+4Ah]
|
||||
Mul MixVolume
|
||||
ShRD AX, DX, 9
|
||||
Mov [SI+0Ch], AX
|
||||
Mov [SI+0Eh], AX
|
||||
|
||||
Jmp MixModeVolumeCheck
|
||||
|
||||
MixMMXStereo:
|
||||
Mov AL, [SI+37h] ; Final pan
|
||||
Cmp AL, 100
|
||||
JE MixMMXSurround
|
||||
|
||||
Mul Byte Ptr MixVolume ; 0->128
|
||||
Mul Word Ptr [SI+4Ah] ; 0->32768
|
||||
ShRD AX, DX, 15 ; Maxvol = 8192
|
||||
Mov [SI+0Eh], AX ; Store into right volume
|
||||
|
||||
Mov AL, 64 ; Do left volume
|
||||
Sub AL, [SI+37h] ; AL = 64-FinalPan
|
||||
Mul Byte Ptr MixVolume
|
||||
Mul Word Ptr [SI+4Ah]
|
||||
ShRD AX, DX, 15
|
||||
Mov [SI+0Ch], AX
|
||||
|
||||
Jmp MixModeVolumeCheck
|
||||
|
||||
MixMMXSurround:
|
||||
Mov AX, [SI+4Ah]
|
||||
Mul MixVolume
|
||||
ShRD AX, DX, 10
|
||||
Mov [SI+0Ch], AX
|
||||
Neg AX
|
||||
Mov [SI+0Eh], AX
|
||||
|
||||
MixModeVolumeCheck:
|
||||
Test CH, 3+4
|
||||
JNZ MixModeCommon
|
||||
|
||||
Cmp EBX, [SI+0Ch] ; Same as last volume?
|
||||
JE MixSamplesMix
|
||||
|
||||
MixModeCommon: ; Requires AX = 30 etc. depending
|
||||
; On mixing mode type.
|
||||
; This will add 180 for 16-bit,
|
||||
; And sort out loop types.
|
||||
Mov AX, MixModeOffset
|
||||
|
||||
Cmp DWord Ptr [SI+0Ch], 0
|
||||
JNE MixModeActualMix
|
||||
|
||||
Cmp MixMode, 2
|
||||
JB MixMMXGeneralNoRamp
|
||||
|
||||
Cmp DWord Ptr [SI+1Ch], 0
|
||||
JNE MixModeActualMix
|
||||
|
||||
MixMMXGeneralNoRamp:
|
||||
Mov AX, 4*60
|
||||
Jmp MixModeCommon1
|
||||
|
||||
MixModeActualMix:
|
||||
Cmp MixMode, 3
|
||||
JNE MixModeFilter
|
||||
|
||||
Cmp Word Ptr [SI+6Eh], 0
|
||||
JNE MixModeFilter
|
||||
Cmp Word Ptr [SI+7Eh], 0
|
||||
JNE MixModeFilter
|
||||
|
||||
Sub AX, 60
|
||||
|
||||
MixModeFilter:
|
||||
Test Byte Ptr [SI+18h], 2 ; 16 bit?
|
||||
JZ MixModeCommon1
|
||||
|
||||
Add AX, 30
|
||||
|
||||
MixModeCommon1:
|
||||
Cmp Byte Ptr [SI+0Ah], 8
|
||||
JB MixModeCommon3 ; No loop
|
||||
JE MixModeCommon2 ; Forwards loop
|
||||
|
||||
Add AX, 10
|
||||
|
||||
MixModeCommon2:
|
||||
Add AX, 10
|
||||
|
||||
MixModeCommon3:
|
||||
Add AX, Offset MixFunctionTables
|
||||
Mov [SI+8], AX ; Offset...
|
||||
|
||||
MixSamplesMix:
|
||||
Mov BX, [SI+8] ; BX = offset into
|
||||
Mov EAX, [CS:BX+2]
|
||||
Mov DWord Ptr PreMixFunction, EAX
|
||||
Mov EAX, [CS:BX+6]
|
||||
Mov DWord Ptr MixFunctionSeparateBackwards, EAX
|
||||
|
||||
Mov AX, BytesToMix
|
||||
Mov MixBlockSize, AX
|
||||
Mov MixBufferOffset, DMABUFFERLENGTH*2+80
|
||||
|
||||
Mov EAX, CURRENTPOSITION
|
||||
Mov OLDPOSITION, EAX
|
||||
|
||||
Push Word Ptr [SI+8]
|
||||
Call Word Ptr [CS:BX]
|
||||
Pop BX
|
||||
|
||||
And Word Ptr [SI], 0111100010001101b
|
||||
|
||||
Cmp BX, Offset MixFunctionTables+60*2
|
||||
JB MixSamplesEnd
|
||||
Cmp BX, Offset MixFunctionTables+60*4
|
||||
JAE MixSamplesEnd
|
||||
|
||||
MovDR AX, MM6
|
||||
Mov [SI+0Ch], EAX
|
||||
Mov [SI+1Ch], EAX
|
||||
|
||||
Cmp BX, Offset MixfunctionTables+60*3
|
||||
JB MixSamplesEnd
|
||||
|
||||
Mov ES, CS:MixSegment
|
||||
Mov DX, [ES:10h]
|
||||
Mov BX, [ES:14h]
|
||||
Mov [SI+3Ch], DX
|
||||
Mov [SI+6h], BX
|
||||
Jmp MixSamplesEnd
|
||||
|
||||
MixSamplesHandleError:
|
||||
Mov Word Ptr [SI], 200h
|
||||
|
||||
Test Byte Ptr [SI+3Ah], 80h
|
||||
JNZ MixSamplesEnd
|
||||
|
||||
Mov BX, [SI+38h]
|
||||
And Byte Ptr [BX], Not 4 ; Turn off channel
|
||||
|
||||
MixSamplesEnd:
|
||||
Pop CX
|
||||
|
||||
MixSamplesEnd2:
|
||||
Add SI, 128
|
||||
Dec CX
|
||||
JNZ MixSamples2
|
||||
|
||||
IF OUTPUTFILTERENABLED
|
||||
include equalize.inc
|
||||
ENDIF
|
||||
Ret
|
||||
|
||||
EndP MixSamples
|
||||
Assume DS:Nothing
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||||
|
||||
|
|
|
@ -1,119 +1,119 @@
|
|||
|
||||
; To be embedded within the IRQ handler.
|
||||
|
||||
Push DX
|
||||
|
||||
Cmp CS:Stereo, 0
|
||||
JNE TransferStereoBufferMMX
|
||||
|
||||
TransferMonoBufferMMX: ; DX = number of 32 bit numbers -> 16 bit.
|
||||
|
||||
Push DX
|
||||
ShR DX, 3
|
||||
JZ TransferMonoBufferMMX2
|
||||
|
||||
TransferMonoBufferMMX1:
|
||||
MovD MM0, [SI]
|
||||
MovD MM1, [SI+8]
|
||||
MovD MM2, [SI+10h]
|
||||
MovD MM3, [SI+18h]
|
||||
MovD MM4, [SI+20h]
|
||||
MovD MM5, [SI+28h]
|
||||
MovD MM6, [SI+30h]
|
||||
MovD MM7, [SI+38h]
|
||||
|
||||
PUnpckLDQ MM0, MM1 ; MM0 = S2|S1
|
||||
PUnpckLDQ MM2, MM3 ; MM2 = S4|S3
|
||||
PUnpckLDQ MM4, MM5 ; MM4 = S6|S5
|
||||
PUnpckLDQ MM6, MM7 ; MM6 = S8|S7
|
||||
|
||||
PF2ID MM0, MM0
|
||||
PF2ID MM2, MM2
|
||||
PF2ID MM4, MM4
|
||||
PF2ID MM6, MM6
|
||||
|
||||
|
||||
PackSSDW MM0, MM2
|
||||
PackSSDW MM4, MM6
|
||||
|
||||
MovQ [DI], MM0
|
||||
MovQ [DI+8], MM4
|
||||
|
||||
Add SI, 40h
|
||||
Add DI, 10h
|
||||
|
||||
Dec DX
|
||||
JNZ TransferMonoBufferMMX1
|
||||
|
||||
TransferMonoBufferMMX2:
|
||||
Pop CX
|
||||
Mov DX, CX
|
||||
|
||||
And CX, 7
|
||||
JZ TransferMonoBufferMMX4
|
||||
|
||||
TransferMonoBufferMMX3:
|
||||
MovD MM0, [SI]
|
||||
PF2ID MM0, MM0
|
||||
MovD EAX, MM0
|
||||
StosW
|
||||
Add SI, 8
|
||||
|
||||
Loop TransferMonoBufferMMX3
|
||||
|
||||
TransferMonoBufferMMX4:
|
||||
Jmp MMXMixTransferEnd
|
||||
|
||||
TransferStereoBufferMMX: ; DX is always an even number for stereo
|
||||
Push DX
|
||||
|
||||
ShR DX, 3
|
||||
JZ TransferStereoBufferMMX2
|
||||
|
||||
TransferStereoBufferMMX1: ; DX = number of 32 bit numbers -> 16 bit
|
||||
MovQ MM0, [SI]
|
||||
MovQ MM1, [SI+8]
|
||||
MovQ MM2, [SI+10h]
|
||||
MovQ MM3, [SI+18h]
|
||||
|
||||
PF2ID MM0, MM0
|
||||
PF2ID MM1, MM1
|
||||
PF2ID MM2, MM2
|
||||
PF2ID MM3, MM3
|
||||
|
||||
PackSSDW MM0, MM1
|
||||
PackSSDW MM2, MM3
|
||||
|
||||
MovQ [DI], MM0
|
||||
MovQ [DI+8], MM2
|
||||
|
||||
Add SI, 20h
|
||||
Add DI, 10h
|
||||
|
||||
Dec DX
|
||||
JNZ TransferStereoBufferMMX1
|
||||
|
||||
TransferStereoBufferMMX2:
|
||||
Pop CX
|
||||
Mov DX, CX
|
||||
|
||||
And CX, 7
|
||||
ShR CX, 1 ; Always an even number!
|
||||
JZ TransferStereoBufferMMX4
|
||||
|
||||
TransferStereoBufferMMX3:
|
||||
MovQ MM0, [SI]
|
||||
PF2ID MM0, MM0
|
||||
PackSSDW MM0, MM0
|
||||
MovD [DI], MM0
|
||||
|
||||
Add SI, 8
|
||||
Add DI, 4
|
||||
|
||||
Loop TransferStereoBufferMMX3
|
||||
|
||||
TransferStereoBufferMMX4:
|
||||
|
||||
MMXMixTransferEnd:
|
||||
Pop DX
|
||||
|
||||
|
||||
; To be embedded within the IRQ handler.
|
||||
|
||||
Push DX
|
||||
|
||||
Cmp CS:Stereo, 0
|
||||
JNE TransferStereoBufferMMX
|
||||
|
||||
TransferMonoBufferMMX: ; DX = number of 32 bit numbers -> 16 bit.
|
||||
|
||||
Push DX
|
||||
ShR DX, 3
|
||||
JZ TransferMonoBufferMMX2
|
||||
|
||||
TransferMonoBufferMMX1:
|
||||
MovD MM0, [SI]
|
||||
MovD MM1, [SI+8]
|
||||
MovD MM2, [SI+10h]
|
||||
MovD MM3, [SI+18h]
|
||||
MovD MM4, [SI+20h]
|
||||
MovD MM5, [SI+28h]
|
||||
MovD MM6, [SI+30h]
|
||||
MovD MM7, [SI+38h]
|
||||
|
||||
PUnpckLDQ MM0, MM1 ; MM0 = S2|S1
|
||||
PUnpckLDQ MM2, MM3 ; MM2 = S4|S3
|
||||
PUnpckLDQ MM4, MM5 ; MM4 = S6|S5
|
||||
PUnpckLDQ MM6, MM7 ; MM6 = S8|S7
|
||||
|
||||
PF2ID MM0, MM0
|
||||
PF2ID MM2, MM2
|
||||
PF2ID MM4, MM4
|
||||
PF2ID MM6, MM6
|
||||
|
||||
|
||||
PackSSDW MM0, MM2
|
||||
PackSSDW MM4, MM6
|
||||
|
||||
MovQ [DI], MM0
|
||||
MovQ [DI+8], MM4
|
||||
|
||||
Add SI, 40h
|
||||
Add DI, 10h
|
||||
|
||||
Dec DX
|
||||
JNZ TransferMonoBufferMMX1
|
||||
|
||||
TransferMonoBufferMMX2:
|
||||
Pop CX
|
||||
Mov DX, CX
|
||||
|
||||
And CX, 7
|
||||
JZ TransferMonoBufferMMX4
|
||||
|
||||
TransferMonoBufferMMX3:
|
||||
MovD MM0, [SI]
|
||||
PF2ID MM0, MM0
|
||||
MovD EAX, MM0
|
||||
StosW
|
||||
Add SI, 8
|
||||
|
||||
Loop TransferMonoBufferMMX3
|
||||
|
||||
TransferMonoBufferMMX4:
|
||||
Jmp MMXMixTransferEnd
|
||||
|
||||
TransferStereoBufferMMX: ; DX is always an even number for stereo
|
||||
Push DX
|
||||
|
||||
ShR DX, 3
|
||||
JZ TransferStereoBufferMMX2
|
||||
|
||||
TransferStereoBufferMMX1: ; DX = number of 32 bit numbers -> 16 bit
|
||||
MovQ MM0, [SI]
|
||||
MovQ MM1, [SI+8]
|
||||
MovQ MM2, [SI+10h]
|
||||
MovQ MM3, [SI+18h]
|
||||
|
||||
PF2ID MM0, MM0
|
||||
PF2ID MM1, MM1
|
||||
PF2ID MM2, MM2
|
||||
PF2ID MM3, MM3
|
||||
|
||||
PackSSDW MM0, MM1
|
||||
PackSSDW MM2, MM3
|
||||
|
||||
MovQ [DI], MM0
|
||||
MovQ [DI+8], MM2
|
||||
|
||||
Add SI, 20h
|
||||
Add DI, 10h
|
||||
|
||||
Dec DX
|
||||
JNZ TransferStereoBufferMMX1
|
||||
|
||||
TransferStereoBufferMMX2:
|
||||
Pop CX
|
||||
Mov DX, CX
|
||||
|
||||
And CX, 7
|
||||
ShR CX, 1 ; Always an even number!
|
||||
JZ TransferStereoBufferMMX4
|
||||
|
||||
TransferStereoBufferMMX3:
|
||||
MovQ MM0, [SI]
|
||||
PF2ID MM0, MM0
|
||||
PackSSDW MM0, MM0
|
||||
MovD [DI], MM0
|
||||
|
||||
Add SI, 8
|
||||
Add DI, 4
|
||||
|
||||
Loop TransferStereoBufferMMX3
|
||||
|
||||
TransferStereoBufferMMX4:
|
||||
|
||||
MMXMixTransferEnd:
|
||||
Pop DX
|
||||
|
||||
|
|
|
@ -1,71 +1,71 @@
|
|||
Proc LoadSample Far ; Fix up end of sample bytes
|
||||
|
||||
PushAD
|
||||
Push DS
|
||||
Push ES
|
||||
Push FS
|
||||
|
||||
Mov FS, CS:SongDataArea
|
||||
Mov BP, AX
|
||||
Add BP, BP
|
||||
Mov BP, [FS:64910+BP]
|
||||
|
||||
Xor CX, CX ; From the start of the sample..
|
||||
Call GetSampleLocation ; Returns DS:ESI, ECX = length
|
||||
JC LoadSampleEnd ; Zero flag ON if 16 bit..
|
||||
|
||||
Xor EAX, EAX
|
||||
Mov BL, [FS:BP+12h]
|
||||
|
||||
Test BL, 10h ; Loop
|
||||
JZ LoadSample2
|
||||
|
||||
Mov ESI, [FS:BP+34h] ; Start of loop
|
||||
Test BL, 40h ; Pingpong?
|
||||
JZ LoadSample1
|
||||
|
||||
Mov ESI, [FS:BP+38h]
|
||||
Sub ESI, 2
|
||||
JNC LoadSample1
|
||||
|
||||
Xor ESI, ESI
|
||||
|
||||
LoadSample1:
|
||||
Test BL, 2
|
||||
JZ LoadSample4
|
||||
|
||||
Add ESI, ESI
|
||||
|
||||
LoadSample4:
|
||||
Int 3
|
||||
Mov AL, [SI]
|
||||
Inc ESI
|
||||
Int 3
|
||||
Mov AH, [SI]
|
||||
|
||||
LoadSample2:
|
||||
Mov ESI, [FS:BP+30h]
|
||||
Test BL, 2
|
||||
JZ LoadSample3
|
||||
|
||||
Add ESI, ESI
|
||||
|
||||
LoadSample3:
|
||||
Int 3
|
||||
Mov [SI], AL
|
||||
Inc ESI
|
||||
Int 3
|
||||
Mov [SI], AH
|
||||
|
||||
LoadSampleEnd:
|
||||
Pop FS
|
||||
Pop ES
|
||||
Pop DS
|
||||
PopAD
|
||||
|
||||
StC
|
||||
Ret
|
||||
|
||||
EndP LoadSample
|
||||
|
||||
|
||||
Proc LoadSample Far ; Fix up end of sample bytes
|
||||
|
||||
PushAD
|
||||
Push DS
|
||||
Push ES
|
||||
Push FS
|
||||
|
||||
Mov FS, CS:SongDataArea
|
||||
Mov BP, AX
|
||||
Add BP, BP
|
||||
Mov BP, [FS:64910+BP]
|
||||
|
||||
Xor CX, CX ; From the start of the sample..
|
||||
Call GetSampleLocation ; Returns DS:ESI, ECX = length
|
||||
JC LoadSampleEnd ; Zero flag ON if 16 bit..
|
||||
|
||||
Xor EAX, EAX
|
||||
Mov BL, [FS:BP+12h]
|
||||
|
||||
Test BL, 10h ; Loop
|
||||
JZ LoadSample2
|
||||
|
||||
Mov ESI, [FS:BP+34h] ; Start of loop
|
||||
Test BL, 40h ; Pingpong?
|
||||
JZ LoadSample1
|
||||
|
||||
Mov ESI, [FS:BP+38h]
|
||||
Sub ESI, 2
|
||||
JNC LoadSample1
|
||||
|
||||
Xor ESI, ESI
|
||||
|
||||
LoadSample1:
|
||||
Test BL, 2
|
||||
JZ LoadSample4
|
||||
|
||||
Add ESI, ESI
|
||||
|
||||
LoadSample4:
|
||||
Int 3
|
||||
Mov AL, [SI]
|
||||
Inc ESI
|
||||
Int 3
|
||||
Mov AH, [SI]
|
||||
|
||||
LoadSample2:
|
||||
Mov ESI, [FS:BP+30h]
|
||||
Test BL, 2
|
||||
JZ LoadSample3
|
||||
|
||||
Add ESI, ESI
|
||||
|
||||
LoadSample3:
|
||||
Int 3
|
||||
Mov [SI], AL
|
||||
Inc ESI
|
||||
Int 3
|
||||
Mov [SI], AH
|
||||
|
||||
LoadSampleEnd:
|
||||
Pop FS
|
||||
Pop ES
|
||||
Pop DS
|
||||
PopAD
|
||||
|
||||
StC
|
||||
Ret
|
||||
|
||||
EndP LoadSample
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,49 +1,49 @@
|
|||
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix12Left8Bit, MFS8Bit, MBS8Bit, Mix12Single8Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Left8Bit, MFS8Bit, MBS8Bit, Mix12Single8Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Left8Bit, MFS8Bit, MBS8Bit, Mix12Single8Bit
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix12Right8Bit, MFS8Bit, MBS8Bit, Mix12Single8Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Right8Bit, MFS8Bit, MBS8Bit, Mix12Single8Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Right8Bit, MFS8Bit, MBS8Bit, Mix12Single8Bit
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix12Central8Bit, MFS8Bit, MBS8Bit, Mix12Central8Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Central8Bit, MFS8Bit, MBS8Bit, Mix12Central8Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Central8Bit, MFS8Bit, MBS8Bit, Mix12Central8Bit
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix12Panned8Bit, MFS8Bit, MBS8Bit, Mix12Panned8Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Panned8Bit, MFS8Bit, MBS8Bit, Mix12Panned8Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Panned8Bit, MFS8Bit, MBS8Bit, Mix12Panned8Bit
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix12Surround8Bit, MFS8Bit, MBS8Bit, Mix12Surround8Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Surround8Bit, MFS8Bit, MBS8Bit, Mix12Surround8Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Surround8Bit, MFS8Bit, MBS8Bit, Mix12Surround8Bit
|
||||
|
||||
; 16 bit tables
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix12Left16Bit, MFS16Bit, MBS16Bit, Mix12Single16Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Left16Bit, MFS16Bit, MBS16Bit, Mix12Single16Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Left16Bit, MFS16Bit, MBS16Bit, Mix12Single16Bit
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix12Right16Bit, MFS16Bit, MBS16Bit, Mix12Single16Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Right16Bit, MFS16Bit, MBS16Bit, Mix12Single16Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Right16Bit, MFS16Bit, MBS16Bit, Mix12Single16Bit
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix12Central16Bit, MFS16Bit, MBS16Bit, Mix12Central16Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Central16Bit, MFS16Bit, MBS16Bit, Mix12Central16Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Central16Bit, MFS16Bit, MBS16Bit, Mix12Central16Bit
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix12Panned16Bit, MFS16Bit, MBS16Bit, Mix12Panned16Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Panned16Bit, MFS16Bit, MBS16Bit, Mix12Panned16Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Panned16Bit, MFS16Bit, MBS16Bit, Mix12Panned16Bit
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix12Surround16Bit, MFS16Bit, MBS16Bit, Mix12Surround16Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Surround16Bit, MFS16Bit, MBS16Bit, Mix12Surround16Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Surround16Bit, MFS16Bit, MBS16Bit, Mix12Surround16Bit
|
||||
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix12Left8Bit, MFS8Bit, MBS8Bit, Mix12Single8Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Left8Bit, MFS8Bit, MBS8Bit, Mix12Single8Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Left8Bit, MFS8Bit, MBS8Bit, Mix12Single8Bit
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix12Right8Bit, MFS8Bit, MBS8Bit, Mix12Single8Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Right8Bit, MFS8Bit, MBS8Bit, Mix12Single8Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Right8Bit, MFS8Bit, MBS8Bit, Mix12Single8Bit
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix12Central8Bit, MFS8Bit, MBS8Bit, Mix12Central8Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Central8Bit, MFS8Bit, MBS8Bit, Mix12Central8Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Central8Bit, MFS8Bit, MBS8Bit, Mix12Central8Bit
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix12Panned8Bit, MFS8Bit, MBS8Bit, Mix12Panned8Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Panned8Bit, MFS8Bit, MBS8Bit, Mix12Panned8Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Panned8Bit, MFS8Bit, MBS8Bit, Mix12Panned8Bit
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix12Surround8Bit, MFS8Bit, MBS8Bit, Mix12Surround8Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Surround8Bit, MFS8Bit, MBS8Bit, Mix12Surround8Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Surround8Bit, MFS8Bit, MBS8Bit, Mix12Surround8Bit
|
||||
|
||||
; 16 bit tables
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix12Left16Bit, MFS16Bit, MBS16Bit, Mix12Single16Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Left16Bit, MFS16Bit, MBS16Bit, Mix12Single16Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Left16Bit, MFS16Bit, MBS16Bit, Mix12Single16Bit
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix12Right16Bit, MFS16Bit, MBS16Bit, Mix12Single16Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Right16Bit, MFS16Bit, MBS16Bit, Mix12Single16Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Right16Bit, MFS16Bit, MBS16Bit, Mix12Single16Bit
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix12Central16Bit, MFS16Bit, MBS16Bit, Mix12Central16Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Central16Bit, MFS16Bit, MBS16Bit, Mix12Central16Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Central16Bit, MFS16Bit, MBS16Bit, Mix12Central16Bit
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix12Panned16Bit, MFS16Bit, MBS16Bit, Mix12Panned16Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Panned16Bit, MFS16Bit, MBS16Bit, Mix12Panned16Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Panned16Bit, MFS16Bit, MBS16Bit, Mix12Panned16Bit
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix12Surround16Bit, MFS16Bit, MBS16Bit, Mix12Surround16Bit
|
||||
DW Offset MixForwardsLoop, PreMix12Surround16Bit, MFS16Bit, MBS16Bit, Mix12Surround16Bit
|
||||
DW Offset MixPingPongLoop, PreMix12Surround16Bit, MFS16Bit, MBS16Bit, Mix12Surround16Bit
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,49 +1,49 @@
|
|||
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix12Left8BitF, MFS8Bit, MBS8Bit, Mix12Single8BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Left8BitF, MFS8Bit, MBS8Bit, Mix12Single8BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Left8BitF, MFS8Bit, MBS8Bit, Mix12Single8BitF
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix12Right8BitF, MFS8Bit, MBS8Bit, Mix12Single8BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Right8BitF, MFS8Bit, MBS8Bit, Mix12Single8BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Right8BitF, MFS8Bit, MBS8Bit, Mix12Single8BitF
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix12Central8BitF, MFS8Bit, MBS8Bit, Mix12Central8BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Central8BitF, MFS8Bit, MBS8Bit, Mix12Central8BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Central8BitF, MFS8Bit, MBS8Bit, Mix12Central8BitF
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix12Panned8BitF, MFS8Bit, MBS8Bit, Mix12Panned8BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Panned8BitF, MFS8Bit, MBS8Bit, Mix12Panned8BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Panned8BitF, MFS8Bit, MBS8Bit, Mix12Panned8BitF
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix12Surround8BitF, MFS8Bit, MBS8Bit, Mix12Surround8BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Surround8BitF, MFS8Bit, MBS8Bit, Mix12Surround8BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Surround8BitF, MFS8Bit, MBS8Bit, Mix12Surround8BitF
|
||||
|
||||
; 16 bit tables
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix12Left16BitF, MFS16Bit, MBS16Bit, Mix12Single16BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Left16BitF, MFS16Bit, MBS16Bit, Mix12Single16BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Left16BitF, MFS16Bit, MBS16Bit, Mix12Single16BitF
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix12Right16BitF, MFS16Bit, MBS16Bit, Mix12Single16BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Right16BitF, MFS16Bit, MBS16Bit, Mix12Single16BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Right16BitF, MFS16Bit, MBS16Bit, Mix12Single16BitF
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix12Central16BitF, MFS16Bit, MBS16Bit, Mix12Central16BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Central16BitF, MFS16Bit, MBS16Bit, Mix12Central16BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Central16BitF, MFS16Bit, MBS16Bit, Mix12Central16BitF
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix12Panned16BitF, MFS16Bit, MBS16Bit, Mix12Panned16BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Panned16BitF, MFS16Bit, MBS16Bit, Mix12Panned16BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Panned16BitF, MFS16Bit, MBS16Bit, Mix12Panned16BitF
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix12Surround16BitF, MFS16Bit, MBS16Bit, Mix12Surround16BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Surround16BitF, MFS16Bit, MBS16Bit, Mix12Surround16BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Surround16BitF, MFS16Bit, MBS16Bit, Mix12Surround16BitF
|
||||
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix12Left8BitF, MFS8Bit, MBS8Bit, Mix12Single8BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Left8BitF, MFS8Bit, MBS8Bit, Mix12Single8BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Left8BitF, MFS8Bit, MBS8Bit, Mix12Single8BitF
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix12Right8BitF, MFS8Bit, MBS8Bit, Mix12Single8BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Right8BitF, MFS8Bit, MBS8Bit, Mix12Single8BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Right8BitF, MFS8Bit, MBS8Bit, Mix12Single8BitF
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix12Central8BitF, MFS8Bit, MBS8Bit, Mix12Central8BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Central8BitF, MFS8Bit, MBS8Bit, Mix12Central8BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Central8BitF, MFS8Bit, MBS8Bit, Mix12Central8BitF
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix12Panned8BitF, MFS8Bit, MBS8Bit, Mix12Panned8BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Panned8BitF, MFS8Bit, MBS8Bit, Mix12Panned8BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Panned8BitF, MFS8Bit, MBS8Bit, Mix12Panned8BitF
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix12Surround8BitF, MFS8Bit, MBS8Bit, Mix12Surround8BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Surround8BitF, MFS8Bit, MBS8Bit, Mix12Surround8BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Surround8BitF, MFS8Bit, MBS8Bit, Mix12Surround8BitF
|
||||
|
||||
; 16 bit tables
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix12Left16BitF, MFS16Bit, MBS16Bit, Mix12Single16BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Left16BitF, MFS16Bit, MBS16Bit, Mix12Single16BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Left16BitF, MFS16Bit, MBS16Bit, Mix12Single16BitF
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix12Right16BitF, MFS16Bit, MBS16Bit, Mix12Single16BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Right16BitF, MFS16Bit, MBS16Bit, Mix12Single16BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Right16BitF, MFS16Bit, MBS16Bit, Mix12Single16BitF
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix12Central16BitF, MFS16Bit, MBS16Bit, Mix12Central16BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Central16BitF, MFS16Bit, MBS16Bit, Mix12Central16BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Central16BitF, MFS16Bit, MBS16Bit, Mix12Central16BitF
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix12Panned16BitF, MFS16Bit, MBS16Bit, Mix12Panned16BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Panned16BitF, MFS16Bit, MBS16Bit, Mix12Panned16BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Panned16BitF, MFS16Bit, MBS16Bit, Mix12Panned16BitF
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix12Surround16BitF, MFS16Bit, MBS16Bit, Mix12Surround16BitF
|
||||
DW Offset MixForwardsLoop, PreMix12Surround16BitF, MFS16Bit, MBS16Bit, Mix12Surround16BitF
|
||||
DW Offset MixPingPongLoop, PreMix12Surround16BitF, MFS16Bit, MBS16Bit, Mix12Surround16BitF
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,49 +1,49 @@
|
|||
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix12Left8BitI, MFS8Bit, MBS8Bit, Mix12Single8BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Left8BitI, MFS8Bit, MBS8Bit, Mix12Single8BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Left8BitI, MFS8Bit, MBS8Bit, Mix12Single8BitI
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix12Right8BitI, MFS8Bit, MBS8Bit, Mix12Single8BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Right8BitI, MFS8Bit, MBS8Bit, Mix12Single8BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Right8BitI, MFS8Bit, MBS8Bit, Mix12Single8BitI
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix12Central8BitI, MFS8Bit, MBS8Bit, Mix12Central8BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Central8BitI, MFS8Bit, MBS8Bit, Mix12Central8BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Central8BitI, MFS8Bit, MBS8Bit, Mix12Central8BitI
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix12Panned8BitI, MFS8Bit, MBS8Bit, Mix12Panned8BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Panned8BitI, MFS8Bit, MBS8Bit, Mix12Panned8BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Panned8BitI, MFS8Bit, MBS8Bit, Mix12Panned8BitI
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix12Surround8BitI, MFS8Bit, MBS8Bit, Mix12Surround8BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Surround8BitI, MFS8Bit, MBS8Bit, Mix12Surround8BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Surround8BitI, MFS8Bit, MBS8Bit, Mix12Surround8BitI
|
||||
|
||||
; 16 bit tables
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix12Left16BitI, MFS16Bit, MBS16Bit, Mix12Single16BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Left16BitI, MFS16Bit, MBS16Bit, Mix12Single16BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Left16BitI, MFS16Bit, MBS16Bit, Mix12Single16BitI
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix12Right16BitI, MFS16Bit, MBS16Bit, Mix12Single16BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Right16BitI, MFS16Bit, MBS16Bit, Mix12Single16BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Right16BitI, MFS16Bit, MBS16Bit, Mix12Single16BitI
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix12Central16BitI, MFS16Bit, MBS16Bit, Mix12Central16BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Central16BitI, MFS16Bit, MBS16Bit, Mix12Central16BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Central16BitI, MFS16Bit, MBS16Bit, Mix12Central16BitI
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix12Panned16BitI, MFS16Bit, MBS16Bit, Mix12Panned16BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Panned16BitI, MFS16Bit, MBS16Bit, Mix12Panned16BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Panned16BitI, MFS16Bit, MBS16Bit, Mix12Panned16BitI
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix12Surround16BitI, MFS16Bit, MBS16Bit, Mix12Surround16BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Surround16BitI, MFS16Bit, MBS16Bit, Mix12Surround16BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Surround16BitI, MFS16Bit, MBS16Bit, Mix12Surround16BitI
|
||||
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix12Left8BitI, MFS8Bit, MBS8Bit, Mix12Single8BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Left8BitI, MFS8Bit, MBS8Bit, Mix12Single8BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Left8BitI, MFS8Bit, MBS8Bit, Mix12Single8BitI
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix12Right8BitI, MFS8Bit, MBS8Bit, Mix12Single8BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Right8BitI, MFS8Bit, MBS8Bit, Mix12Single8BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Right8BitI, MFS8Bit, MBS8Bit, Mix12Single8BitI
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix12Central8BitI, MFS8Bit, MBS8Bit, Mix12Central8BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Central8BitI, MFS8Bit, MBS8Bit, Mix12Central8BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Central8BitI, MFS8Bit, MBS8Bit, Mix12Central8BitI
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix12Panned8BitI, MFS8Bit, MBS8Bit, Mix12Panned8BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Panned8BitI, MFS8Bit, MBS8Bit, Mix12Panned8BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Panned8BitI, MFS8Bit, MBS8Bit, Mix12Panned8BitI
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix12Surround8BitI, MFS8Bit, MBS8Bit, Mix12Surround8BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Surround8BitI, MFS8Bit, MBS8Bit, Mix12Surround8BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Surround8BitI, MFS8Bit, MBS8Bit, Mix12Surround8BitI
|
||||
|
||||
; 16 bit tables
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix12Left16BitI, MFS16Bit, MBS16Bit, Mix12Single16BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Left16BitI, MFS16Bit, MBS16Bit, Mix12Single16BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Left16BitI, MFS16Bit, MBS16Bit, Mix12Single16BitI
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix12Right16BitI, MFS16Bit, MBS16Bit, Mix12Single16BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Right16BitI, MFS16Bit, MBS16Bit, Mix12Single16BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Right16BitI, MFS16Bit, MBS16Bit, Mix12Single16BitI
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix12Central16BitI, MFS16Bit, MBS16Bit, Mix12Central16BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Central16BitI, MFS16Bit, MBS16Bit, Mix12Central16BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Central16BitI, MFS16Bit, MBS16Bit, Mix12Central16BitI
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix12Panned16BitI, MFS16Bit, MBS16Bit, Mix12Panned16BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Panned16BitI, MFS16Bit, MBS16Bit, Mix12Panned16BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Panned16BitI, MFS16Bit, MBS16Bit, Mix12Panned16BitI
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix12Surround16BitI, MFS16Bit, MBS16Bit, Mix12Surround16BitI
|
||||
DW Offset MixForwardsLoop, PreMix12Surround16BitI, MFS16Bit, MBS16Bit, Mix12Surround16BitI
|
||||
DW Offset MixPingPongLoop, PreMix12Surround16BitI, MFS16Bit, MBS16Bit, Mix12Surround16BitI
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
4550
SoundDrivers/M16.ASM
4550
SoundDrivers/M16.ASM
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
|||
tasm /m /ut310 m16
|
||||
tlink /3 m16
|
||||
execom m16 itmaes16.drv
|
||||
copy itmaes16.drv ..
|
||||
|
||||
tasm /m /ut310 m16
|
||||
tlink /3 m16
|
||||
execom m16 itmaes16.drv
|
||||
copy itmaes16.drv ..
|
||||
|
||||
|
|
4542
SoundDrivers/M32.ASM
4542
SoundDrivers/M32.ASM
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
|||
tasm /m /ut310 m32
|
||||
tlink /3 m32
|
||||
execom m32 itmaes32.drv
|
||||
copy itmaes32.drv ..
|
||||
|
||||
tasm /m /ut310 m32
|
||||
tlink /3 m32
|
||||
execom m32 itmaes32.drv
|
||||
copy itmaes32.drv ..
|
||||
|
||||
|
|
|
@ -1,49 +1,49 @@
|
|||
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix32Left8Bit, MFS8Bit, MBS8Bit, Mix32Single8Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Left8Bit, MFS8Bit, MBS8Bit, Mix32Single8Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Left8Bit, MFS8Bit, MBS8Bit, Mix32Single8Bit
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix32Right8Bit, MFS8Bit, MBS8Bit, Mix32Single8Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Right8Bit, MFS8Bit, MBS8Bit, Mix32Single8Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Right8Bit, MFS8Bit, MBS8Bit, Mix32Single8Bit
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix32Central8Bit, MFS8Bit, MBS8Bit, Mix32Central8Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Central8Bit, MFS8Bit, MBS8Bit, Mix32Central8Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Central8Bit, MFS8Bit, MBS8Bit, Mix32Central8Bit
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix32Panned8Bit, MFS8Bit, MBS8Bit, Mix32Panned8Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Panned8Bit, MFS8Bit, MBS8Bit, Mix32Panned8Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Panned8Bit, MFS8Bit, MBS8Bit, Mix32Panned8Bit
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix32Surround8Bit, MFS8Bit, MBS8Bit, Mix32Surround8Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Surround8Bit, MFS8Bit, MBS8Bit, Mix32Surround8Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Surround8Bit, MFS8Bit, MBS8Bit, Mix32Surround8Bit
|
||||
|
||||
; 16 bit tables
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix32Left16Bit, MFS16Bit, MBS16Bit, Mix32Single16Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Left16Bit, MFS16Bit, MBS16Bit, Mix32Single16Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Left16Bit, MFS16Bit, MBS16Bit, Mix32Single16Bit
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix32Right16Bit, MFS16Bit, MBS16Bit, Mix32Single16Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Right16Bit, MFS16Bit, MBS16Bit, Mix32Single16Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Right16Bit, MFS16Bit, MBS16Bit, Mix32Single16Bit
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix32Central16Bit, MFS16Bit, MBS16Bit, Mix32Central16Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Central16Bit, MFS16Bit, MBS16Bit, Mix32Central16Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Central16Bit, MFS16Bit, MBS16Bit, Mix32Central16Bit
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix32Panned16Bit, MFS16Bit, MBS16Bit, Mix32Panned16Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Panned16Bit, MFS16Bit, MBS16Bit, Mix32Panned16Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Panned16Bit, MFS16Bit, MBS16Bit, Mix32Panned16Bit
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix32Surround16Bit, MFS16Bit, MBS16Bit, Mix32Surround16Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Surround16Bit, MFS16Bit, MBS16Bit, Mix32Surround16Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Surround16Bit, MFS16Bit, MBS16Bit, Mix32Surround16Bit
|
||||
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix32Left8Bit, MFS8Bit, MBS8Bit, Mix32Single8Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Left8Bit, MFS8Bit, MBS8Bit, Mix32Single8Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Left8Bit, MFS8Bit, MBS8Bit, Mix32Single8Bit
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix32Right8Bit, MFS8Bit, MBS8Bit, Mix32Single8Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Right8Bit, MFS8Bit, MBS8Bit, Mix32Single8Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Right8Bit, MFS8Bit, MBS8Bit, Mix32Single8Bit
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix32Central8Bit, MFS8Bit, MBS8Bit, Mix32Central8Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Central8Bit, MFS8Bit, MBS8Bit, Mix32Central8Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Central8Bit, MFS8Bit, MBS8Bit, Mix32Central8Bit
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix32Panned8Bit, MFS8Bit, MBS8Bit, Mix32Panned8Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Panned8Bit, MFS8Bit, MBS8Bit, Mix32Panned8Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Panned8Bit, MFS8Bit, MBS8Bit, Mix32Panned8Bit
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix32Surround8Bit, MFS8Bit, MBS8Bit, Mix32Surround8Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Surround8Bit, MFS8Bit, MBS8Bit, Mix32Surround8Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Surround8Bit, MFS8Bit, MBS8Bit, Mix32Surround8Bit
|
||||
|
||||
; 16 bit tables
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix32Left16Bit, MFS16Bit, MBS16Bit, Mix32Single16Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Left16Bit, MFS16Bit, MBS16Bit, Mix32Single16Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Left16Bit, MFS16Bit, MBS16Bit, Mix32Single16Bit
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix32Right16Bit, MFS16Bit, MBS16Bit, Mix32Single16Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Right16Bit, MFS16Bit, MBS16Bit, Mix32Single16Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Right16Bit, MFS16Bit, MBS16Bit, Mix32Single16Bit
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix32Central16Bit, MFS16Bit, MBS16Bit, Mix32Central16Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Central16Bit, MFS16Bit, MBS16Bit, Mix32Central16Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Central16Bit, MFS16Bit, MBS16Bit, Mix32Central16Bit
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix32Panned16Bit, MFS16Bit, MBS16Bit, Mix32Panned16Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Panned16Bit, MFS16Bit, MBS16Bit, Mix32Panned16Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Panned16Bit, MFS16Bit, MBS16Bit, Mix32Panned16Bit
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix32Surround16Bit, MFS16Bit, MBS16Bit, Mix32Surround16Bit
|
||||
DW Offset MixForwardsLoop, PreMix32Surround16Bit, MFS16Bit, MBS16Bit, Mix32Surround16Bit
|
||||
DW Offset MixPingPongLoop, PreMix32Surround16Bit, MFS16Bit, MBS16Bit, Mix32Surround16Bit
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,6 @@
|
|||
;
|
||||
; Floating point mixing routines
|
||||
; DS:0 = a, DS:4 = b, DS:8 = c
|
||||
; DS:10h = os1, DS:18h = OS2
|
||||
;
|
||||
|
||||
;
|
||||
; Floating point mixing routines
|
||||
; DS:0 = a, DS:4 = b, DS:8 = c
|
||||
; DS:10h = os1, DS:18h = OS2
|
||||
;
|
||||
|
||||
|
|
|
@ -1,49 +1,49 @@
|
|||
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix32Left8BitI, MFS8Bit, MBS8Bit, Mix32Single8BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Left8BitI, MFS8Bit, MBS8Bit, Mix32Single8BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Left8BitI, MFS8Bit, MBS8Bit, Mix32Single8BitI
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix32Right8BitI, MFS8Bit, MBS8Bit, Mix32Single8BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Right8BitI, MFS8Bit, MBS8Bit, Mix32Single8BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Right8BitI, MFS8Bit, MBS8Bit, Mix32Single8BitI
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix32Central8BitI, MFS8Bit, MBS8Bit, Mix32Central8BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Central8BitI, MFS8Bit, MBS8Bit, Mix32Central8BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Central8BitI, MFS8Bit, MBS8Bit, Mix32Central8BitI
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix32Panned8BitI, MFS8Bit, MBS8Bit, Mix32Panned8BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Panned8BitI, MFS8Bit, MBS8Bit, Mix32Panned8BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Panned8BitI, MFS8Bit, MBS8Bit, Mix32Panned8BitI
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix32Surround8BitI, MFS8Bit, MBS8Bit, Mix32Surround8BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Surround8BitI, MFS8Bit, MBS8Bit, Mix32Surround8BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Surround8BitI, MFS8Bit, MBS8Bit, Mix32Surround8BitI
|
||||
|
||||
; 16 bit tables
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix32Left16BitI, MFS16Bit, MBS16Bit, Mix32Single16BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Left16BitI, MFS16Bit, MBS16Bit, Mix32Single16BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Left16BitI, MFS16Bit, MBS16Bit, Mix32Single16BitI
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix32Right16BitI, MFS16Bit, MBS16Bit, Mix32Single16BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Right16BitI, MFS16Bit, MBS16Bit, Mix32Single16BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Right16BitI, MFS16Bit, MBS16Bit, Mix32Single16BitI
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix32Central16BitI, MFS16Bit, MBS16Bit, Mix32Central16BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Central16BitI, MFS16Bit, MBS16Bit, Mix32Central16BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Central16BitI, MFS16Bit, MBS16Bit, Mix32Central16BitI
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix32Panned16BitI, MFS16Bit, MBS16Bit, Mix32Panned16BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Panned16BitI, MFS16Bit, MBS16Bit, Mix32Panned16BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Panned16BitI, MFS16Bit, MBS16Bit, Mix32Panned16BitI
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix32Surround16BitI, MFS16Bit, MBS16Bit, Mix32Surround16BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Surround16BitI, MFS16Bit, MBS16Bit, Mix32Surround16BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Surround16BitI, MFS16Bit, MBS16Bit, Mix32Surround16BitI
|
||||
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix32Left8BitI, MFS8Bit, MBS8Bit, Mix32Single8BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Left8BitI, MFS8Bit, MBS8Bit, Mix32Single8BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Left8BitI, MFS8Bit, MBS8Bit, Mix32Single8BitI
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix32Right8BitI, MFS8Bit, MBS8Bit, Mix32Single8BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Right8BitI, MFS8Bit, MBS8Bit, Mix32Single8BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Right8BitI, MFS8Bit, MBS8Bit, Mix32Single8BitI
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix32Central8BitI, MFS8Bit, MBS8Bit, Mix32Central8BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Central8BitI, MFS8Bit, MBS8Bit, Mix32Central8BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Central8BitI, MFS8Bit, MBS8Bit, Mix32Central8BitI
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix32Panned8BitI, MFS8Bit, MBS8Bit, Mix32Panned8BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Panned8BitI, MFS8Bit, MBS8Bit, Mix32Panned8BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Panned8BitI, MFS8Bit, MBS8Bit, Mix32Panned8BitI
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix32Surround8BitI, MFS8Bit, MBS8Bit, Mix32Surround8BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Surround8BitI, MFS8Bit, MBS8Bit, Mix32Surround8BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Surround8BitI, MFS8Bit, MBS8Bit, Mix32Surround8BitI
|
||||
|
||||
; 16 bit tables
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMix32Left16BitI, MFS16Bit, MBS16Bit, Mix32Single16BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Left16BitI, MFS16Bit, MBS16Bit, Mix32Single16BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Left16BitI, MFS16Bit, MBS16Bit, Mix32Single16BitI
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMix32Right16BitI, MFS16Bit, MBS16Bit, Mix32Single16BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Right16BitI, MFS16Bit, MBS16Bit, Mix32Single16BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Right16BitI, MFS16Bit, MBS16Bit, Mix32Single16BitI
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMix32Central16BitI, MFS16Bit, MBS16Bit, Mix32Central16BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Central16BitI, MFS16Bit, MBS16Bit, Mix32Central16BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Central16BitI, MFS16Bit, MBS16Bit, Mix32Central16BitI
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMix32Panned16BitI, MFS16Bit, MBS16Bit, Mix32Panned16BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Panned16BitI, MFS16Bit, MBS16Bit, Mix32Panned16BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Panned16BitI, MFS16Bit, MBS16Bit, Mix32Panned16BitI
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMix32Surround16BitI, MFS16Bit, MBS16Bit, Mix32Surround16BitI
|
||||
DW Offset MixForwardsLoop, PreMix32Surround16BitI, MFS16Bit, MBS16Bit, Mix32Surround16BitI
|
||||
DW Offset MixPingPongLoop, PreMix32Surround16BitI, MFS16Bit, MBS16Bit, Mix32Surround16BitI
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,11 +1,11 @@
|
|||
; 8 bit tables
|
||||
|
||||
DW Offset MixNoLoop, PreM32BitMPanned, MFS8Bit, MBS8Bit, M32Bit8MPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMPanned, MFS8Bit, MBS8Bit, M32Bit8MPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMPanned, MFS8Bit, MBS8Bit, M32Bit8MPanned
|
||||
|
||||
; 16 bit
|
||||
|
||||
DW Offset MixNoLoop, PreM32BitMPanned, MFS16Bit, MBS16Bit, M32Bit16MPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMPanned, MFS16Bit, MBS16Bit, M32Bit16MPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMPanned, MFS16Bit, MBS16Bit, M32Bit16MPanned
|
||||
; 8 bit tables
|
||||
|
||||
DW Offset MixNoLoop, PreM32BitMPanned, MFS8Bit, MBS8Bit, M32Bit8MPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMPanned, MFS8Bit, MBS8Bit, M32Bit8MPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMPanned, MFS8Bit, MBS8Bit, M32Bit8MPanned
|
||||
|
||||
; 16 bit
|
||||
|
||||
DW Offset MixNoLoop, PreM32BitMPanned, MFS16Bit, MBS16Bit, M32Bit16MPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMPanned, MFS16Bit, MBS16Bit, M32Bit16MPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMPanned, MFS16Bit, MBS16Bit, M32Bit16MPanned
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,12 +1,12 @@
|
|||
; 8 bit tables
|
||||
|
||||
DW Offset MixNoLoop, PreM32BitMFPanned, MFS8Bit, MBS8Bit, M32Bit8MFPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMFPanned, MFS8Bit, MBS8Bit, M32Bit8MFPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMFPanned, MFS8Bit, MBS8Bit, M32Bit8MFPanned
|
||||
|
||||
; 16 bit tables
|
||||
|
||||
DW Offset MixNoLoop, PreM32BitMFPanned, MFS16Bit, MBS16Bit, M32Bit16MFPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMFPanned, MFS16Bit, MBS16Bit, M32Bit16MFPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMFPanned, MFS16Bit, MBS16Bit, M32Bit16MFPanned
|
||||
|
||||
; 8 bit tables
|
||||
|
||||
DW Offset MixNoLoop, PreM32BitMFPanned, MFS8Bit, MBS8Bit, M32Bit8MFPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMFPanned, MFS8Bit, MBS8Bit, M32Bit8MFPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMFPanned, MFS8Bit, MBS8Bit, M32Bit8MFPanned
|
||||
|
||||
; 16 bit tables
|
||||
|
||||
DW Offset MixNoLoop, PreM32BitMFPanned, MFS16Bit, MBS16Bit, M32Bit16MFPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMFPanned, MFS16Bit, MBS16Bit, M32Bit16MFPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMFPanned, MFS16Bit, MBS16Bit, M32Bit16MFPanned
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,11 +1,11 @@
|
|||
; 8 bit tables
|
||||
|
||||
DW Offset MixNoLoop, PreM32BitMIPanned, MFS8Bit, MBS8Bit, M32Bit8MIPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMIPanned, MFS8Bit, MBS8Bit, M32Bit8MIPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMIPanned, MFS8Bit, MBS8Bit, M32Bit8MIPanned
|
||||
|
||||
; 16 bit tables
|
||||
DW Offset MixNoLoop, PreM32BitMIPanned, MFS16Bit, MBS16Bit, M32Bit16MIPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMIPanned, MFS16Bit, MBS16Bit, M32Bit16MIPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMIPanned, MFS16Bit, MBS16Bit, M32Bit16MIPanned
|
||||
|
||||
; 8 bit tables
|
||||
|
||||
DW Offset MixNoLoop, PreM32BitMIPanned, MFS8Bit, MBS8Bit, M32Bit8MIPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMIPanned, MFS8Bit, MBS8Bit, M32Bit8MIPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMIPanned, MFS8Bit, MBS8Bit, M32Bit8MIPanned
|
||||
|
||||
; 16 bit tables
|
||||
DW Offset MixNoLoop, PreM32BitMIPanned, MFS16Bit, MBS16Bit, M32Bit16MIPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMIPanned, MFS16Bit, MBS16Bit, M32Bit16MIPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMIPanned, MFS16Bit, MBS16Bit, M32Bit16MIPanned
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,12 +1,12 @@
|
|||
; 8 bit tables
|
||||
|
||||
DW Offset MixNoLoop, PreM32BitMVPanned, MFS8Bit, MBS8Bit, M32Bit8MVPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMVPanned, MFS8Bit, MBS8Bit, M32Bit8MVPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMVPanned, MFS8Bit, MBS8Bit, M32Bit8MVPanned
|
||||
|
||||
; 16 bit tables
|
||||
|
||||
DW Offset MixNoLoop, PreM32BitMVPanned, MFS16Bit, MBS16Bit, M32Bit16MVPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMVPanned, MFS16Bit, MBS16Bit, M32Bit16MVPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMVPanned, MFS16Bit, MBS16Bit, M32Bit16MVPanned
|
||||
|
||||
; 8 bit tables
|
||||
|
||||
DW Offset MixNoLoop, PreM32BitMVPanned, MFS8Bit, MBS8Bit, M32Bit8MVPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMVPanned, MFS8Bit, MBS8Bit, M32Bit8MVPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMVPanned, MFS8Bit, MBS8Bit, M32Bit8MVPanned
|
||||
|
||||
; 16 bit tables
|
||||
|
||||
DW Offset MixNoLoop, PreM32BitMVPanned, MFS16Bit, MBS16Bit, M32Bit16MVPanned
|
||||
DW Offset MixForwardsLoop, PreM32BitMVPanned, MFS16Bit, MBS16Bit, M32Bit16MVPanned
|
||||
DW Offset MixPingPongLoop, PreM32BitMVPanned, MFS16Bit, MBS16Bit, M32Bit16MVPanned
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,49 +1,49 @@
|
|||
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMixUltraLeft8BitI, MFS8Bit, MBS8Bit, MixUltraSingle8BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraLeft8BitI, MFS8Bit, MBS8Bit, MixUltraSingle8BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraLeft8BitI, MFS8Bit, MBS8Bit, MixUltraSingle8BitI
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMixUltraRight8BitI, MFS8Bit, MBS8Bit, MixUltraSingle8BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraRight8BitI, MFS8Bit, MBS8Bit, MixUltraSingle8BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraRight8BitI, MFS8Bit, MBS8Bit, MixUltraSingle8BitI
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMixUltraCentral8BitI, MFS8Bit, MBS8Bit, MixUltraCentral8BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraCentral8BitI, MFS8Bit, MBS8Bit, MixUltraCentral8BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraCentral8BitI, MFS8Bit, MBS8Bit, MixUltraCentral8BitI
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMixUltraPanned8BitI, MFS8Bit, MBS8Bit, MixUltraPanned8BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraPanned8BitI, MFS8Bit, MBS8Bit, MixUltraPanned8BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraPanned8BitI, MFS8Bit, MBS8Bit, MixUltraPanned8BitI
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMixUltraSurround8BitI, MFS8Bit, MBS8Bit, MixUltraSurround8BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraSurround8BitI, MFS8Bit, MBS8Bit, MixUltraSurround8BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraSurround8BitI, MFS8Bit, MBS8Bit, MixUltraSurround8BitI
|
||||
|
||||
; 16 bit tables
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMixUltraLeft16BitI, MFS16Bit, MBS16Bit, MixUltraSingle16BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraLeft16BitI, MFS16Bit, MBS16Bit, MixUltraSingle16BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraLeft16BitI, MFS16Bit, MBS16Bit, MixUltraSingle16BitI
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMixUltraRight16BitI, MFS16Bit, MBS16Bit, MixUltraSingle16BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraRight16BitI, MFS16Bit, MBS16Bit, MixUltraSingle16BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraRight16BitI, MFS16Bit, MBS16Bit, MixUltraSingle16BitI
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMixUltraCentral16BitI, MFS16Bit, MBS16Bit, MixUltraCentral16BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraCentral16BitI, MFS16Bit, MBS16Bit, MixUltraCentral16BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraCentral16BitI, MFS16Bit, MBS16Bit, MixUltraCentral16BitI
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMixUltraPanned16BitI, MFS16Bit, MBS16Bit, MixUltraPanned16BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraPanned16BitI, MFS16Bit, MBS16Bit, MixUltraPanned16BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraPanned16BitI, MFS16Bit, MBS16Bit, MixUltraPanned16BitI
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMixUltraSurround16BitI, MFS16Bit, MBS16Bit, MixUltraSurround16BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraSurround16BitI, MFS16Bit, MBS16Bit, MixUltraSurround16BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraSurround16BitI, MFS16Bit, MBS16Bit, MixUltraSurround16BitI
|
||||
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMixUltraLeft8BitI, MFS8Bit, MBS8Bit, MixUltraSingle8BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraLeft8BitI, MFS8Bit, MBS8Bit, MixUltraSingle8BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraLeft8BitI, MFS8Bit, MBS8Bit, MixUltraSingle8BitI
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMixUltraRight8BitI, MFS8Bit, MBS8Bit, MixUltraSingle8BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraRight8BitI, MFS8Bit, MBS8Bit, MixUltraSingle8BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraRight8BitI, MFS8Bit, MBS8Bit, MixUltraSingle8BitI
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMixUltraCentral8BitI, MFS8Bit, MBS8Bit, MixUltraCentral8BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraCentral8BitI, MFS8Bit, MBS8Bit, MixUltraCentral8BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraCentral8BitI, MFS8Bit, MBS8Bit, MixUltraCentral8BitI
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMixUltraPanned8BitI, MFS8Bit, MBS8Bit, MixUltraPanned8BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraPanned8BitI, MFS8Bit, MBS8Bit, MixUltraPanned8BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraPanned8BitI, MFS8Bit, MBS8Bit, MixUltraPanned8BitI
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMixUltraSurround8BitI, MFS8Bit, MBS8Bit, MixUltraSurround8BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraSurround8BitI, MFS8Bit, MBS8Bit, MixUltraSurround8BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraSurround8BitI, MFS8Bit, MBS8Bit, MixUltraSurround8BitI
|
||||
|
||||
; 16 bit tables
|
||||
DW Offset UpdateNoLoop, 0, 0, 0, 0 ; Update only
|
||||
DW Offset UpdateForwardsLoop, 0, 0, 0, 0
|
||||
DW Offset UpdatePingPongLoop, 0, 0, 0, 0
|
||||
; Left only
|
||||
DW Offset MixNoLoop, PreMixUltraLeft16BitI, MFS16Bit, MBS16Bit, MixUltraSingle16BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraLeft16BitI, MFS16Bit, MBS16Bit, MixUltraSingle16BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraLeft16BitI, MFS16Bit, MBS16Bit, MixUltraSingle16BitI
|
||||
; Right only
|
||||
DW Offset MixNoLoop, PreMixUltraRight16BitI, MFS16Bit, MBS16Bit, MixUltraSingle16BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraRight16BitI, MFS16Bit, MBS16Bit, MixUltraSingle16BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraRight16BitI, MFS16Bit, MBS16Bit, MixUltraSingle16BitI
|
||||
; Central
|
||||
DW Offset MixNoLoop, PreMixUltraCentral16BitI, MFS16Bit, MBS16Bit, MixUltraCentral16BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraCentral16BitI, MFS16Bit, MBS16Bit, MixUltraCentral16BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraCentral16BitI, MFS16Bit, MBS16Bit, MixUltraCentral16BitI
|
||||
; Stereo
|
||||
DW Offset MixNoLoop, PreMixUltraPanned16BitI, MFS16Bit, MBS16Bit, MixUltraPanned16BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraPanned16BitI, MFS16Bit, MBS16Bit, MixUltraPanned16BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraPanned16BitI, MFS16Bit, MBS16Bit, MixUltraPanned16BitI
|
||||
; Surround
|
||||
DW Offset MixNoLoop, PreMixUltraSurround16BitI, MFS16Bit, MBS16Bit, MixUltraSurround16BitI
|
||||
DW Offset MixForwardsLoop, PreMixUltraSurround16BitI, MFS16Bit, MBS16Bit, MixUltraSurround16BitI
|
||||
DW Offset MixPingPongLoop, PreMixUltraSurround16BitI, MFS16Bit, MBS16Bit, MixUltraSurround16BitI
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
|||
tasm /m /ut310 ad1816
|
||||
tlink /3 ad1816
|
||||
execom ad1816 itad1816.drv
|
||||
copy itad1816.drv ..
|
||||
|
||||
tasm /m /ut310 ad1816
|
||||
tlink /3 ad1816
|
||||
execom ad1816 itad1816.drv
|
||||
copy itad1816.drv ..
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
tasm /m /ut310 awe32drv
|
||||
tlink /3 awe32drv
|
||||
execom awe32drv itawe32.drv
|
||||
copy itawe32.drv ..
|
||||
tasm /m /ut310 awe32drv
|
||||
tlink /3 awe32drv
|
||||
execom awe32drv itawe32.drv
|
||||
copy itawe32.drv ..
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
tasm /m /ut310 awe32b
|
||||
tlink /3 awe32b
|
||||
execom awe32b itawe32b.drv
|
||||
copy itawe32b.drv ..
|
||||
tasm /m /ut310 awe32b
|
||||
tlink /3 awe32b
|
||||
execom awe32b itawe32b.drv
|
||||
copy itawe32b.drv ..
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@rem Base1 Driver
|
||||
tasm /m /ut310 base1
|
||||
tlink /3 base1
|
||||
execom base1 itbase1.drv
|
||||
copy itbase1.drv ..
|
||||
|
||||
@rem Base1 Driver
|
||||
tasm /m /ut310 base1
|
||||
tlink /3 base1
|
||||
execom base1 itbase1.drv
|
||||
copy itbase1.drv ..
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tasm /m /ut310 es1868
|
||||
tlink /3 es1868
|
||||
execom es1868 ites1868.drv
|
||||
copy ites1868.drv ..
|
||||
|
||||
tasm /m /ut310 es1868
|
||||
tlink /3 es1868
|
||||
execom es1868 ites1868.drv
|
||||
copy ites1868.drv ..
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tasm /m /ut310 es1688
|
||||
tlink /3 es1688
|
||||
execom es1688 ites1688.drv
|
||||
copy ites1688.drv ..
|
||||
|
||||
tasm /m /ut310 es1688
|
||||
tlink /3 es1688
|
||||
execom es1688 ites1688.drv
|
||||
copy ites1688.drv ..
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tasm32 /m /ut310 es1688mx
|
||||
tlink /3 es1688mx
|
||||
execom es1688mx ites1688.mmx
|
||||
copy ites1688.mmx ..
|
||||
|
||||
tasm32 /m /ut310 es1688mx
|
||||
tlink /3 es1688mx
|
||||
execom es1688mx ites1688.mmx
|
||||
copy ites1688.mmx ..
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tasm /m /ut310 es1788
|
||||
tlink /3 es1788
|
||||
execom es1788 ites1788.drv
|
||||
copy ites1788.drv ..
|
||||
|
||||
tasm /m /ut310 es1788
|
||||
tlink /3 es1788
|
||||
execom es1788 ites1788.drv
|
||||
copy ites1788.drv ..
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tasm /m /ut310 es1869
|
||||
tlink /3 es1869
|
||||
execom es1869 ites1869.drv
|
||||
copy ites1869.drv ..
|
||||
|
||||
tasm /m /ut310 es1869
|
||||
tlink /3 es1869
|
||||
execom es1869 ites1869.drv
|
||||
copy ites1869.drv ..
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tasm32 /m /ut310 es1869mx
|
||||
tlink /3 es1869mx
|
||||
execom es1869mx ites1869.mmx
|
||||
copy ites1869.mmx ..
|
||||
|
||||
tasm32 /m /ut310 es1869mx
|
||||
tlink /3 es1869mx
|
||||
execom es1869mx ites1869.mmx
|
||||
copy ites1869.mmx ..
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tasm32 /m /ut310 es1868mx
|
||||
tlink /3 es1868mx
|
||||
execom es1868mx ites1868.mmx
|
||||
copy ites1868.mmx ..
|
||||
|
||||
tasm32 /m /ut310 es1868mx
|
||||
tlink /3 es1868mx
|
||||
execom es1868mx ites1868.mmx
|
||||
copy ites1868.mmx ..
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
tasm /m /ut310 ews64
|
||||
tlink /3 ews64
|
||||
execom ews64 itews64.drv
|
||||
copy itews64.drv ..
|
||||
tasm /m /ut310 ews64
|
||||
tlink /3 ews64
|
||||
execom ews64 itews64.drv
|
||||
copy itews64.drv ..
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tasm /m /ut310 ewscodec
|
||||
tlink /3 ewscodec
|
||||
execom ewscodec itewscod.drv
|
||||
copy itewscod.drv ..
|
||||
|
||||
tasm /m /ut310 ewscodec
|
||||
tlink /3 ewscodec
|
||||
execom ewscodec itewscod.drv
|
||||
copy itewscod.drv ..
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tasm32 /m /ut310 ewscodmx
|
||||
tlink /3 ewscodmx
|
||||
execom ewscodmx itewscod.mmx
|
||||
copy itewscod.mmx ..
|
||||
|
||||
tasm32 /m /ut310 ewscodmx
|
||||
tlink /3 ewscodmx
|
||||
execom ewscodmx itewscod.mmx
|
||||
copy itewscod.mmx ..
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tasm /m /ut310 gold16
|
||||
tlink /3 gold16
|
||||
execom m16 itgold16.drv
|
||||
copy itgold16.drv ..
|
||||
|
||||
tasm /m /ut310 gold16
|
||||
tlink /3 gold16
|
||||
execom m16 itgold16.drv
|
||||
copy itgold16.drv ..
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
tasm /m /ut310 guspnpm
|
||||
tlink /3 guspnpm
|
||||
execom guspnpm itguspnp.drv
|
||||
copy itguspnp.drv ..
|
||||
tasm /m /ut310 guspnpm
|
||||
tlink /3 guspnpm
|
||||
execom guspnpm itguspnp.drv
|
||||
copy itguspnp.drv ..
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
tasm32 /m /ut310 guspnpmx
|
||||
tlink /3 guspnpmx
|
||||
execom guspnpmx itguspnp.mmx
|
||||
copy itguspnp.mmx ..
|
||||
tasm32 /m /ut310 guspnpmx
|
||||
tlink /3 guspnpmx
|
||||
execom guspnpmx itguspnp.mmx
|
||||
copy itguspnp.mmx ..
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
tasm /m /uT310 /l gushiqdr
|
||||
tlink /3 gushiqdr
|
||||
execom gushiqdr itgus.drv
|
||||
copy itgus.drv ..
|
||||
tasm /m /uT310 /l gushiqdr
|
||||
tlink /3 gushiqdr
|
||||
execom gushiqdr itgus.drv
|
||||
copy itgus.drv ..
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
tasm /m /uT310 gushiq2
|
||||
tlink /3 gushiq2
|
||||
execom gushiq2 itgus2.drv
|
||||
copy itgus2.drv ..
|
||||
tasm /m /uT310 gushiq2
|
||||
tlink /3 gushiq2
|
||||
execom gushiq2 itgus2.drv
|
||||
copy itgus2.drv ..
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
tasm /m /uT310 gusdrv2
|
||||
tlink /3 gusdrv2
|
||||
execom gusdrv2 itguslo.drv
|
||||
copy itguslo.drv ..
|
||||
tasm /m /uT310 gusdrv2
|
||||
tlink /3 gusdrv2
|
||||
execom gusdrv2 itguslo.drv
|
||||
copy itguslo.drv ..
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tasm /m /ut310 gusmax
|
||||
tlink /3 gusmax
|
||||
execom gusmax itgusmax.drv
|
||||
copy itgusmax.drv ..
|
||||
|
||||
tasm /m /ut310 gusmax
|
||||
tlink /3 gusmax
|
||||
execom gusmax itgusmax.drv
|
||||
copy itgusmax.drv ..
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tasm32 /m /ut310 gusmaxmx
|
||||
tlink /3 gusmaxmx
|
||||
execom gusmaxmx itgusmax.mmx
|
||||
copy itgusmax.mmx ..
|
||||
|
||||
tasm32 /m /ut310 gusmaxmx
|
||||
tlink /3 gusmaxmx
|
||||
execom gusmaxmx itgusmax.mmx
|
||||
copy itgusmax.mmx ..
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue