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