0,0 → 1,137 |
format MS COFF |
|
include "snd.inc" |
include "proc32.inc" |
|
section '.text' align 16 code readable executable |
|
public _InitSound@0 |
public _CreateBuffer@8 |
public _DestroyBuffer@4 |
|
align 4 |
proc _InitSound@0 |
locals |
handle dd ? |
io_code dd ? |
input dd ? |
inp_size dd ? |
output dd ? |
out_size dd ? |
endl |
|
push ebx |
push ecx |
mov eax, 68 |
mov ebx, 16 |
mov ecx, szInfinity |
int 0x40 |
test eax, eax |
jz .fail |
|
mov [hSound], eax |
mov eax, 68 |
mov ebx, 16 |
mov ecx, szSound |
int 0x40 |
mov [hrdwSound], eax |
|
mov eax, [hSound] |
xor ebx, ebx |
|
mov [handle], eax |
mov [io_code], SRV_GETVERSION |
mov [input], ebx |
mov [inp_size], ebx |
mov [output], ebx |
mov [out_size], ebx |
|
mov eax, 68 |
mov ebx, 17 |
lea ecx, [handle] |
int 0x40 |
.fail: |
pop ecx |
pop ebx |
ret |
endp |
|
|
align 4 |
proc _CreateBuffer@8 stdcall, format:dword, size:dword |
locals |
handle dd ? |
io_code dd ? |
input dd ? |
inp_size dd ? |
output dd ? |
out_size dd ? |
endl |
|
push ebx |
push ecx |
mov eax, [hSound] |
lea ebx, [format] |
xor ecx, ecx |
|
mov [handle], eax |
mov [io_code], SND_CREATE_BUFF |
mov [input], ebx |
mov [inp_size], 4 |
mov [output], ecx |
mov [out_size], ecx |
|
mov eax, 68 |
mov ebx, 17 |
lea ecx, [handle] |
int 0x40 |
pop ecx |
pop ebx |
ret |
endp |
|
align 4 |
proc _DestroyBuffer@4 stdcall, str:dword |
locals |
handle dd ? |
io_code dd ? |
input dd ? |
inp_size dd ? |
output dd ? |
out_size dd ? |
endl |
|
push ebx |
push ecx |
|
mov eax, [hSound] |
lea ebx, [str] |
xor ecx, ecx |
|
mov [handle], eax |
mov [io_code], SND_DESTROY_BUFF |
mov [input], ebx |
mov [inp_size], 4 |
mov [output], ecx |
mov [out_size], ecx |
|
mov eax, 68 |
mov ebx, 17 |
lea ecx, [handle] |
int 0x40 |
pop ecx |
pop ebx |
ret |
endp |
|
section '.data' align 16 data readable writable |
|
szInfinity db 'INFINITY',0 |
szSound db 'SOUND',0 |
|
public hSound |
public hrdwSound |
|
align 4 |
hSound dd ? |
hrdwSound dd ? |