2023-03-09 21:35:56 -08:00
|
|
|
|
|
|
|
|
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
MONITORPERFORMANCE = 0
|
|
|
|
|
|
|
|
|
|
ALIGN 16
|
|
|
|
|
|
|
|
|
|
M32BitMVolumeData DW 0, 0, 0, 0
|
|
|
|
|
|
|
|
|
|
IF MONITORPERFORMANCE
|
|
|
|
|
M32BitMCounter8BitTicksLow DD 0
|
|
|
|
|
M32BitMCounter8BitTicksHigh DD 0
|
|
|
|
|
M32BitMCounter16BitTicksLow DD 0
|
|
|
|
|
M32BitMCounter16BitTicksHigh DD 0
|
|
|
|
|
M32BitMCounter8BitLow DW 0
|
|
|
|
|
M32BitMCounter8BitHigh DW 0
|
|
|
|
|
M32BitMCounter16BitLow DW 0
|
|
|
|
|
M32BitMCounter16BitHigh DW 0
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
Proc M32Bit16MPanned
|
|
|
|
|
|
|
|
|
|
; AX = number to mix
|
|
|
|
|
; CX = error
|
|
|
|
|
; DX = deltaoffset
|
|
|
|
|
; BP = deltaerror
|
|
|
|
|
; DS:SI = 32-bit output buffer
|
|
|
|
|
; ES:EDI+EDI = sample location
|
|
|
|
|
; MM6 = L/R volumes
|
|
|
|
|
; MM7 = PXor mask
|
|
|
|
|
|
|
|
|
|
IF MONITORPERFORMANCE
|
|
|
|
|
Push EAX
|
|
|
|
|
Push EDX
|
|
|
|
|
|
|
|
|
|
Add CS:M32BitMCounter16BitLow, AX
|
|
|
|
|
AdC CS:M32BitMCounter16BitHigh, 0
|
|
|
|
|
|
|
|
|
|
RdTSC
|
|
|
|
|
Sub CS:M32BitMCounter16BitTicksLow, EAX
|
|
|
|
|
SBB CS:M32BitMCounter16BitTicksHigh, EDX
|
|
|
|
|
|
|
|
|
|
Pop EDX
|
|
|
|
|
Pop EAX
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
Mov BX, DI
|
|
|
|
|
Add BX, BX
|
|
|
|
|
|
|
|
|
|
M32Bit16MPanned1: ; Mix 1 sample
|
|
|
|
|
Test AL, 1
|
|
|
|
|
JZ M32Bit16MPanned2
|
|
|
|
|
|
|
|
|
|
Push AX
|
|
|
|
|
Add CX, BP
|
|
|
|
|
Mov AX, [ES:BX]
|
|
|
|
|
AdC DI, DX
|
|
|
|
|
Mov [DS:0], AX
|
|
|
|
|
Mov BX, DI
|
|
|
|
|
|
|
|
|
|
MovQ MM0, [DS:0]
|
|
|
|
|
Add BX, BX
|
|
|
|
|
|
|
|
|
|
PUnpckLWD MM0, MM0
|
|
|
|
|
MovQ MM2, MM6
|
|
|
|
|
PMulLW MM2, MM0
|
|
|
|
|
PMulHW MM0, MM6
|
|
|
|
|
PUnpckLWD MM2, MM0
|
|
|
|
|
PAddD MM2, [SI]
|
|
|
|
|
MovQM [SI], MM2
|
|
|
|
|
|
|
|
|
|
Add SI, 8
|
|
|
|
|
Pop AX
|
|
|
|
|
|
|
|
|
|
M32Bit16MPanned2: ; Mix 2 samples
|
|
|
|
|
Test AL, 2
|
|
|
|
|
JZ M32Bit16MPanned3
|
|
|
|
|
|
|
|
|
|
Push AX
|
|
|
|
|
Add CX, BP
|
|
|
|
|
Mov AX, [ES:BX]
|
|
|
|
|
AdC DI, DX
|
|
|
|
|
Mov [DS:0], AX
|
|
|
|
|
Mov BX, DI
|
|
|
|
|
Add BX, BX
|
|
|
|
|
Add CX, BP
|
|
|
|
|
AdC DI, DX
|
|
|
|
|
Mov AX, [ES:BX]
|
|
|
|
|
Mov BX, DI
|
|
|
|
|
Mov [DS:2], AX
|
|
|
|
|
Add BX, BX
|
|
|
|
|
|
|
|
|
|
MovQ MM0, [DS:0]
|
|
|
|
|
PUnpckLWD MM0, MM0
|
|
|
|
|
MovQ MM2, MM6
|
|
|
|
|
PMulLW MM2, MM0
|
|
|
|
|
PMulHW MM0, MM6
|
|
|
|
|
MovQ MM4, MM2
|
|
|
|
|
PUnpckLWD MM2, MM0
|
|
|
|
|
PUnpckHWD MM4, MM0
|
|
|
|
|
PAddD MM2, [SI]
|
|
|
|
|
PAddD MM4, [SI+8]
|
|
|
|
|
MovQM [SI], MM2
|
|
|
|
|
MovQM [SI+8], MM4
|
|
|
|
|
|
|
|
|
|
Add SI, 10h
|
|
|
|
|
Pop AX
|
|
|
|
|
|
|
|
|
|
M32Bit16MPanned3:
|
|
|
|
|
ShR AX, 2
|
|
|
|
|
JZ M32Bit16MPannedEnd
|
|
|
|
|
|
|
|
|
|
Mov Word Ptr [DS:20h], AX
|
|
|
|
|
|
|
|
|
|
Mov AX, [ES:BX]
|
|
|
|
|
Add CX, BP
|
|
|
|
|
AdC DI, DX
|
|
|
|
|
Mov [DS:0], AX
|
|
|
|
|
Mov BX, DI
|
|
|
|
|
Add BX, BX
|
|
|
|
|
|
|
|
|
|
Mov AX, [ES:BX]
|
|
|
|
|
Add CX, BP
|
|
|
|
|
AdC DI, DX
|
|
|
|
|
Mov [DS:2], AX
|
|
|
|
|
Mov BX, DI
|
|
|
|
|
Add BX, BX
|
|
|
|
|
|
|
|
|
|
Mov AX, [ES:BX]
|
|
|
|
|
Add CX, BP
|
|
|
|
|
AdC DI, DX
|
|
|
|
|
Mov [DS:0Ch], AX
|
|
|
|
|
Mov BX, DI
|
|
|
|
|
Add BX, BX
|
|
|
|
|
|
|
|
|
|
Mov AX, [ES:BX]
|
|
|
|
|
Add CX, BP
|
|
|
|
|
AdC DI, DX
|
|
|
|
|
Mov [DS:0Eh], AX
|
|
|
|
|
Mov BX, DI
|
|
|
|
|
Add BX, BX
|
|
|
|
|
|
|
|
|
|
Dec Word Ptr [DS:20h]
|
|
|
|
|
JZ M32Bit16MPanned5
|
|
|
|
|
|
|
|
|
|
M32Bit16MPanned4:
|
|
|
|
|
MovQ MM0, [DS:0]
|
|
|
|
|
MovQ MM2, MM6
|
|
|
|
|
MovQ MM1, [DS:8]
|
|
|
|
|
PUnpckLWD MM0, MM0
|
|
|
|
|
|
|
|
|
|
PMulLW MM2, MM0
|
|
|
|
|
PUnpckHWD MM1, MM1
|
|
|
|
|
|
|
|
|
|
PMulHW MM0, MM6
|
|
|
|
|
MovQ MM3, MM6
|
|
|
|
|
|
|
|
|
|
Mov AX, [ES:BX]
|
|
|
|
|
Add CX, BP
|
|
|
|
|
AdC DI, DX
|
|
|
|
|
Mov [DS:0], AX
|
|
|
|
|
Mov BX, DI
|
|
|
|
|
Add BX, BX
|
|
|
|
|
|
|
|
|
|
MovQ MM4, MM2
|
|
|
|
|
PUnpckLWD MM2, MM0
|
|
|
|
|
|
|
|
|
|
PAddD MM2, [SI]
|
|
|
|
|
PUnpckHWD MM4, MM0
|
|
|
|
|
|
|
|
|
|
PAddD MM4, [SI+8]
|
|
|
|
|
PMulLW MM3, MM1
|
|
|
|
|
|
|
|
|
|
MovQM [SI], MM2
|
|
|
|
|
PMulHW MM1, MM6
|
|
|
|
|
|
|
|
|
|
Mov AX, [ES:BX]
|
|
|
|
|
Add CX, BP
|
|
|
|
|
AdC DI, DX
|
|
|
|
|
Mov [DS:2], AX
|
|
|
|
|
Mov BX, DI
|
|
|
|
|
Add BX, BX
|
|
|
|
|
|
|
|
|
|
MovQM [SI+8], MM4
|
|
|
|
|
MovQ MM5, MM3
|
|
|
|
|
|
|
|
|
|
MovQ MM0, [SI+18h]
|
|
|
|
|
PUnpckLWD MM3, MM1
|
|
|
|
|
PAddD MM3, [SI+10h]
|
|
|
|
|
PUnpckHWD MM5, MM1
|
|
|
|
|
MovQM [SI+10h], MM3
|
|
|
|
|
PAddD MM5, MM0
|
|
|
|
|
|
|
|
|
|
Mov AX, [ES:BX]
|
|
|
|
|
Add CX, BP
|
|
|
|
|
AdC DI, DX
|
|
|
|
|
Mov [DS:0Ch], AX
|
|
|
|
|
Mov BX, DI
|
|
|
|
|
Add BX, BX
|
|
|
|
|
|
|
|
|
|
MovQM [SI+18h], MM5
|
|
|
|
|
|
|
|
|
|
Mov AX, [ES:BX]
|
|
|
|
|
Add CX, BP
|
|
|
|
|
AdC DI, DX
|
|
|
|
|
Mov [DS:0Eh], AX
|
|
|
|
|
Mov BX, DI
|
|
|
|
|
Add BX, BX
|
|
|
|
|
|
|
|
|
|
Add SI, 20h
|
|
|
|
|
|
|
|
|
|
Dec Word Ptr [DS:20h]
|
|
|
|
|
JNZ M32Bit16MPanned4
|
|
|
|
|
|
|
|
|
|
M32Bit16MPanned5:
|
|
|
|
|
MovQ MM0, [DS:0]
|
|
|
|
|
MovQ MM2, MM6
|
|
|
|
|
|
|
|
|
|
MovQ MM1, [DS:8]
|
|
|
|
|
PUnpckLWD MM0, MM0
|
|
|
|
|
|
|
|
|
|
PMulLW MM2, MM0
|
|
|
|
|
MovQ MM3, MM6
|
|
|
|
|
|
|
|
|
|
PMulHW MM0, MM6
|
|
|
|
|
PUnpckHWD MM1, MM1
|
|
|
|
|
|
|
|
|
|
MovQ MM4, MM2
|
|
|
|
|
PMulLW MM3, MM1
|
|
|
|
|
|
|
|
|
|
PUnpckLWD MM2, MM0
|
|
|
|
|
PMulHW MM1, MM6
|
|
|
|
|
|
|
|
|
|
PAddD MM2, [SI]
|
|
|
|
|
PUnpckHWD MM4, MM0
|
|
|
|
|
|
|
|
|
|
PAddD MM4, [SI+8]
|
|
|
|
|
MovQ MM5, MM3
|
|
|
|
|
|
|
|
|
|
MovQM [SI], MM2
|
|
|
|
|
PUnpckLWD MM3, MM1
|
|
|
|
|
|
|
|
|
|
MovQM [SI+8], MM4
|
|
|
|
|
PUnpckHWD MM5, MM1
|
|
|
|
|
|
|
|
|
|
PAddD MM3, [SI+10h]
|
|
|
|
|
PAddD MM5, [SI+18h]
|
|
|
|
|
|
|
|
|
|
MovQM [SI+10h], MM3
|
|
|
|
|
MovQM [SI+18h], MM5
|
|
|
|
|
|
|
|
|
|
M32Bit16MPannedEnd:
|
|
|
|
|
IF MONITORPERFORMANCE
|
|
|
|
|
RdTSC
|
|
|
|
|
Add CS:M32BitMCounter16BitTicksLow, EAX
|
|
|
|
|
AdC CS:M32BitMCounter16BitTicksHigh, EDX
|
|
|
|
|
ENDIF
|
|
|
|
|
Ret
|
|
|
|
|
|
|
|
|
|
EndP M32Bit16MPanned
|
|
|
|
|
|
|
|
|
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
Proc M32Bit8MPanned
|
|
|
|
|
|
|
|
|
|
; AX = number to mix
|
|
|
|
|
; CX = error
|
|
|
|
|
; DX = deltaoffset
|
|
|
|
|
; BP = deltaerror
|
|
|
|
|
; DS:SI = 32-bit output buffer
|
|
|
|
|
; ES:DI = sample location
|
|
|
|
|
; MM6 = L/R volumes
|
|
|
|
|
; MM7 = PXor mask
|
|
|
|
|
|
|
|
|
|
IF MONITORPERFORMANCE
|
|
|
|
|
Push EAX
|
|
|
|
|
Push EDX
|
|
|
|
|
|
|
|
|
|
Add CS:M32BitMCounter8BitLow, AX
|
|
|
|
|
AdC CS:M32BitMCounter8BitHigh, 0
|
|
|
|
|
|
|
|
|
|
RdTSC
|
|
|
|
|
Sub CS:M32BitMCounter8BitTicksLow, EAX
|
|
|
|
|
SBB CS:M32BitMCounter8BitTicksHigh, EDX
|
|
|
|
|
|
|
|
|
|
Pop EDX
|
|
|
|
|
Pop EAX
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
Mov BX, AX
|
|
|
|
|
And AX, 3
|
|
|
|
|
JZ M32Bit8MPanned3
|
|
|
|
|
|
|
|
|
|
M32Bit8MPanned1: ; Mix 1 sample
|
|
|
|
|
Test AL, 1
|
|
|
|
|
JZ M32Bit8MPanned2
|
|
|
|
|
|
|
|
|
|
Xor AX, AX
|
|
|
|
|
Add ERROR, DELTAERROR
|
|
|
|
|
Mov AH, [ES:DI]
|
|
|
|
|
AdC DI, DELTAOFFSET
|
|
|
|
|
Mov [DS:0], AX
|
|
|
|
|
|
|
|
|
|
MovQ MM0, [DS:0]
|
|
|
|
|
PUnpckLWD MM0, MM0
|
|
|
|
|
MovQ MM2, MM6
|
|
|
|
|
PMulLW MM2, MM0
|
|
|
|
|
PMulHW MM0, MM6
|
|
|
|
|
PUnpckLWD MM2, MM0
|
|
|
|
|
PAddD MM2, [SI]
|
|
|
|
|
MovQM [SI], MM2
|
|
|
|
|
|
|
|
|
|
Add SI, 8
|
|
|
|
|
|
|
|
|
|
M32Bit8MPanned2: ; Mix 2 samples
|
|
|
|
|
Test BL, 2
|
|
|
|
|
JZ M32Bit8MPanned3
|
|
|
|
|
|
|
|
|
|
Xor AX, AX
|
|
|
|
|
|
|
|
|
|
Mov AH, [ES:DI]
|
|
|
|
|
Add ERROR, DELTAERROR
|
|
|
|
|
AdC DI, DELTAOFFSET
|
|
|
|
|
Mov [DS:0], AX
|
|
|
|
|
|
|
|
|
|
Mov AH, [ES:DI]
|
|
|
|
|
Add ERROR, DELTAERROR
|
|
|
|
|
AdC DI, DELTAOFFSET
|
|
|
|
|
Mov [DS:2], AX
|
|
|
|
|
|
|
|
|
|
MovQ MM0, [DS:0]
|
|
|
|
|
PUnpckLWD MM0, MM0
|
|
|
|
|
MovQ MM2, MM6
|
|
|
|
|
PMulLW MM2, MM0
|
|
|
|
|
PMulHW MM0, MM6
|
|
|
|
|
MovQ MM4, MM2
|
|
|
|
|
PUnpckLWD MM2, MM0
|
|
|
|
|
PUnpckHWD MM4, MM0
|
|
|
|
|
PAddD MM2, [SI]
|
|
|
|
|
PAddD MM4, [SI+8]
|
|
|
|
|
MovQM [SI], MM2
|
|
|
|
|
MovQM [SI+8], MM4
|
|
|
|
|
|
|
|
|
|
Add SI, 10h
|
|
|
|
|
|
|
|
|
|
M32Bit8MPanned3:
|
|
|
|
|
Xor AX, AX
|
|
|
|
|
ShR BX, 2
|
|
|
|
|
JZ M32Bit8MPannedEnd
|
|
|
|
|
|
|
|
|
|
Mov AH, [ES:DI]
|
|
|
|
|
Add ERROR, DELTAERROR
|
|
|
|
|
AdC DI, DELTAOFFSET
|
|
|
|
|
Mov [DS:0], AX
|
|
|
|
|
|
|
|
|
|
Mov AH, [ES:DI]
|
|
|
|
|
Add ERROR, DELTAERROR
|
|
|
|
|
AdC DI, DELTAOFFSET
|
|
|
|
|
Mov [DS:2], AX
|
|
|
|
|
|
|
|
|
|
Mov AH, [ES:DI]
|
|
|
|
|
Add ERROR, DELTAERROR
|
|
|
|
|
AdC DI, DELTAOFFSET
|
|
|
|
|
Mov [DS:0Ch], AX
|
|
|
|
|
|
|
|
|
|
Mov AH, [ES:DI]
|
|
|
|
|
Add ERROR, DELTAERROR
|
|
|
|
|
AdC DI, DELTAOFFSET
|
|
|
|
|
Mov [DS:0Eh], AX
|
|
|
|
|
|
|
|
|
|
Dec BX
|
|
|
|
|
JZ M32Bit8MPanned5
|
|
|
|
|
|
|
|
|
|
M32Bit8MPanned4:
|
|
|
|
|
MovQ MM0, [DS:0]
|
|
|
|
|
MovQ MM2, MM6
|
|
|
|
|
MovQ MM1, [DS:8]
|
|
|
|
|
PUnpckLWD MM0, MM0
|
|
|
|
|
|
|
|
|
|
PMulLW MM2, MM0
|
|
|
|
|
PUnpckHWD MM1, MM1
|
|
|
|
|
|
|
|
|
|
PMulHW MM0, MM6
|
|
|
|
|
MovQ MM3, MM6
|
|
|
|
|
|
|
|
|
|
Mov AH, [ES:DI]
|
|
|
|
|
Add ERROR, DELTAERROR
|
|
|
|
|
AdC DI, DELTAOFFSET
|
|
|
|
|
Mov [DS:0], AX
|
|
|
|
|
|
|
|
|
|
MovQ MM4, MM2
|
|
|
|
|
PUnpckLWD MM2, MM0
|
|
|
|
|
|
|
|
|
|
PAddD MM2, [SI]
|
|
|
|
|
PUnpckHWD MM4, MM0
|
|
|
|
|
|
|
|
|
|
PAddD MM4, [SI+8]
|
|
|
|
|
PMulLW MM3, MM1
|
|
|
|
|
|
|
|
|
|
MovQM [SI], MM2
|
|
|
|
|
PMulHW MM1, MM6
|
|
|
|
|
|
|
|
|
|
Mov AH, [ES:DI]
|
|
|
|
|
Add ERROR, DELTAERROR
|
|
|
|
|
AdC DI, DELTAOFFSET
|
|
|
|
|
Mov [DS:2], AX
|
|
|
|
|
|
|
|
|
|
MovQM [SI+8], MM4
|
|
|
|
|
MovQ MM5, MM3
|
|
|
|
|
|
|
|
|
|
MovQ MM0, [SI+18h]
|
|
|
|
|
PUnpckLWD MM3, MM1
|
|
|
|
|
PAddD MM3, [SI+10h]
|
|
|
|
|
PUnpckHWD MM5, MM1
|
|
|
|
|
MovQM [SI+10h], MM3
|
|
|
|
|
PAddD MM5, MM0
|
|
|
|
|
|
|
|
|
|
Mov AH, [ES:DI]
|
|
|
|
|
Add ERROR, DELTAERROR
|
|
|
|
|
AdC DI, DELTAOFFSET
|
|
|
|
|
Mov [DS:0Ch], AX
|
|
|
|
|
|
|
|
|
|
MovQM [SI+18h], MM5
|
|
|
|
|
|
|
|
|
|
Mov AH, [ES:DI]
|
|
|
|
|
Add ERROR, DELTAERROR
|
|
|
|
|
AdC DI, DELTAOFFSET
|
|
|
|
|
Mov [DS:0Eh], AX
|
|
|
|
|
|
|
|
|
|
Add SI, 20h
|
|
|
|
|
|
|
|
|
|
Dec BX
|
|
|
|
|
JNZ M32Bit8MPanned4
|
|
|
|
|
|
|
|
|
|
M32Bit8MPanned5:
|
|
|
|
|
MovQ MM0, [DS:0]
|
|
|
|
|
MovQ MM2, MM6
|
|
|
|
|
|
|
|
|
|
MovQ MM1, [DS:8]
|
|
|
|
|
PUnpckLWD MM0, MM0
|
|
|
|
|
|
|
|
|
|
PMulLW MM2, MM0
|
|
|
|
|
MovQ MM3, MM6
|
|
|
|
|
|
|
|
|
|
PMulHW MM0, MM6
|
|
|
|
|
PUnpckHWD MM1, MM1
|
|
|
|
|
|
|
|
|
|
MovQ MM4, MM2
|
|
|
|
|
PMulLW MM3, MM1
|
|
|
|
|
|
|
|
|
|
PUnpckLWD MM2, MM0
|
|
|
|
|
PMulHW MM1, MM6
|
|
|
|
|
|
|
|
|
|
PAddD MM2, [SI]
|
|
|
|
|
PUnpckHWD MM4, MM0
|
|
|
|
|
|
|
|
|
|
PAddD MM4, [SI+8]
|
|
|
|
|
MovQ MM5, MM3
|
|
|
|
|
|
|
|
|
|
MovQM [SI], MM2
|
|
|
|
|
PUnpckLWD MM3, MM1
|
|
|
|
|
|
|
|
|
|
MovQM [SI+8], MM4
|
|
|
|
|
PUnpckHWD MM5, MM1
|
|
|
|
|
|
|
|
|
|
PAddD MM3, [SI+10h]
|
|
|
|
|
PAddD MM5, [SI+18h]
|
|
|
|
|
|
|
|
|
|
MovQM [SI+10h], MM3
|
|
|
|
|
MovQM [SI+18h], MM5
|
|
|
|
|
|
|
|
|
|
M32Bit8MPannedEnd:
|
|
|
|
|
IF MONITORPERFORMANCE
|
|
|
|
|
RdTSC
|
|
|
|
|
Add CS:M32BitMCounter8BitTicksLow, EAX
|
|
|
|
|
AdC CS:M32BitMCounter8BitTicksHigh, EDX
|
|
|
|
|
ENDIF
|
|
|
|
|
Ret
|
|
|
|
|
|
|
|
|
|
EndP M32Bit8MPanned
|
|
|
|
|
|
|
|
|
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
Proc PreM32BitMPanned
|
|
|
|
|
Assume DS:Driver
|
|
|
|
|
|
|
|
|
|
Mov EAX, [SI+0Ch] ; LEAX = left vol, HEAX = right vol
|
|
|
|
|
Mov [DWord Ptr CS:M32BitMVolumeData], EAX
|
|
|
|
|
Mov [DWord Ptr CS:M32BitMVolumeData+4], EAX
|
|
|
|
|
|
|
|
|
|
SegCS MovQ MM6, M32BitMVolumeData
|
|
|
|
|
|
|
|
|
|
Ret
|
|
|
|
|
|
|
|
|
|
EndP PreM32BitMPanned
|
|
|
|
|
Assume DS:Nothing
|
|
|
|
|
|
|
|
|
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|