New problem:
Code:
void Audio_MixSound(int DestAddr, int SrcAddr, int MixLen, int LVolume, int RVolume)
{
_asm {
mov edi, DestAddr
mov ecx, MixLen
mov esi, SrcAddr
}
SOUND_CYCLE :
_asm {
movsx eax, word ptr [esi]
imul LVolume
sar eax, 16
mov bx, word ptr [edi]
add ax, bx
jo LEFT_CHECK_OVERFLOW
mov word ptr [edi], ax
jmp CYCLE_RIGHT
}
LEFT_CHECK_OVERFLOW :
__asm {
cmp bx, 0
js LEFT_MAX_NEGATIVE
mov ax, 32767
mov word ptr [edi], ax
jmp CYCLE_RIGHT
}
LEFT_MAX_NEGATIVE :
__asm mov word ptr [edi], -32767
CYCLE_RIGHT :
__asm {
movsx eax, word ptr [esi]
imul dword ptr RVolume
sar eax, 16
mov bx, word ptr [edi+2]
add ax, bx
jo RIGHT_CHECK_OVERFLOW
mov word ptr [edi+2], ax
jmp CYCLE_CONTINUE
}
RIGHT_CHECK_OVERFLOW :
__asm {
cmp bx, 0
js RIGHT_MAX_NEGATIVE
mov word ptr [edi+2], 32767
jmp CYCLE_CONTINUE
}
RIGHT_MAX_NEGATIVE :
__asm mov word ptr [edi+2], -32767
CYCLE_CONTINUE :
__asm {
add edi, 4
add esi, 2
dec ecx
jnz SOUND_CYCLE
}
My compiler (MinGW) doesn't recognize _asm; What linker/ compiler command do I need for this...?
Bookmarks