mirror of
https://github.com/ondra-novak/gates_of_skeldal.git
synced 2025-07-16 03:06:45 -04:00
67 lines
1.7 KiB
NASM
67 lines
1.7 KiB
NASM
.model small
|
|
.386
|
|
|
|
DGROUP group _DATA
|
|
|
|
|
|
tchannel struct
|
|
PLAYPOS DD ?
|
|
STARTLOOP DD ?
|
|
ENDLOOP DD ?
|
|
SPEEDMAJ DD ?
|
|
SPEEDMIN DW ?
|
|
MINORPOS DW ?
|
|
SMPTYPE DW ?;0 - DISABLED, 1 - 8 BIT, 2 - 16 BIT
|
|
VOLUMELEFT DW ?
|
|
VOLUMERIGHT DW ?
|
|
tchannel ends
|
|
|
|
extrn _chaninfo:dword
|
|
extrn _mixbuffer:dword
|
|
extrn _backsnd:dword ;ukazatel na buffer s hudbou na pozadi (64Kb)
|
|
extrn _backstep:dword ;krok o kolik se meni _backsnd
|
|
extrn _backsndbuff:dword ;buffer hudby na pozadi
|
|
|
|
|
|
extrn _jumptable:dword[3] ;[0] - skip, [1] - mix8, [2] - mix16
|
|
extrn _getdma:dword
|
|
extrn _ido:dword
|
|
|
|
extrn _predstih:word
|
|
extrn _lastdma:dword
|
|
extrn _lastmix:dword
|
|
extrn _surpos:dword
|
|
extrn _mixpos:dword
|
|
extrn _mixsize:dword
|
|
|
|
extrn _dmaposadr:dword
|
|
extrn _dpmiselector:word
|
|
|
|
|
|
|
|
_TEXT segment byte public 'CODE' use32
|
|
assume CS:_TEXT
|
|
assume DS:DGROUP
|
|
|
|
PUBLIC _MIXER
|
|
_MIXER: ;THIS IS MAIN MIXING PROCEDURE.
|
|
;BEFORE USING, YOU MUST SET UP ALL VARIBLES TO THE CORRECT VALUES.
|
|
;_MIXBUFFER MUST START ON PAGE OF MEMORY (EXP 0x10000 0x20000 0x30000)
|
|
;PROCEDURE MUST BE CALLED EACH 18ms OR LITTLE.
|
|
;IF YOU USING INTERRUPT, REMEBER, THAT YOU MUST STORE ALL REGISTERS
|
|
;BEFORE USE.
|
|
|
|
; CALL calcsize ;VYPOCET DELKY MIXOVANI
|
|
mov edi,_mixpos ;Nejprve se vymaze mixovaci pamet
|
|
mov ecx,_mixsize
|
|
shr ecx,2
|
|
xor eax,eax
|
|
MIXCLR: mov [edi],eax
|
|
add di,4
|
|
dec ecx
|
|
jnz MIXCLR
|
|
mov ebx,_chaninfo ;TED SE ZACNE MIXOVAT
|
|
MIXING: xor eax,eax
|
|
mov ax,[ebx]offset tchannel.smptype
|
|
_TEXT ends
|
|
end
|