initial work on port

updated readme, new "build system," fixed some errors
This commit is contained in:
'mr software' 2023-03-09 21:35:56 -08:00
parent 9fcee05b53
commit ff7c092581
220 changed files with 220138 additions and 220096 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
obj
gen
test.s

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

View File

@ -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
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

View File

@ -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
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

View File

@ -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

View File

@ -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.

View File

@ -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
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
RAMP EQU 1 RAMP EQU 1
include gus.inc include gus.inc

View File

@ -1,3 +1,3 @@
include gus.inc include gus.inc

View File

@ -1,5 +1,5 @@
RIC EQU 1 RIC EQU 1
include gus.inc include gus.inc

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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 ..

File diff suppressed because it is too large Load Diff

View File

@ -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 ..

View File

@ -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

View File

@ -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
; ;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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 ..

View File

@ -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