0,0 → 1,118 |
format MS COFF |
|
include "snd.inc" |
include "proc32.inc" |
|
section '.text' align 16 code readable executable |
|
public _InitSound@4 |
public _CreateBuffer@12 |
public _DestroyBuffer@4 |
|
align 4 |
_InitSound@4: ;p_ver:dword |
|
push ebx |
push ecx |
|
mov eax, 68 |
mov ebx, 16 |
mov ecx, szInfinity |
int 0x40 |
mov [hSound], eax |
test eax, eax |
jz .fail |
|
mov eax, 68 |
mov ebx, 16 |
mov ecx, szSound |
int 0x40 |
mov [hrdwSound], eax |
|
lea eax, [esp+12] ;p_ver |
xor ebx, ebx |
|
push 4 ;.out_size |
push eax ;.output |
push ebx ;.inp_size |
push ebx ;.input |
push SRV_GETVERSION ;.code |
push [hSound] ;.handle |
|
mov eax, 68 |
mov ebx, 17 |
mov ecx, esp ;[handle] |
int 0x40 |
add esp, 24 |
pop ecx |
pop ebx |
ret 4 |
.fail: |
or eax, -1 |
pop ecx |
pop ebx |
ret 4 |
|
|
align 4 |
_CreateBuffer@12: ;format:dword,size:dword,p_str:dword |
|
push ebx |
push ecx |
lea eax, [esp+20] ;p_str |
lea ebx, [esp+12] ;format |
|
push 4 ;.out_size |
push eax ;.output |
push 8 ;.inp_size |
push ebx ;.input |
push SND_CREATE_BUFF;.code |
push [hSound] ;.handle |
|
mov eax, 68 |
mov ebx, 17 |
mov ecx, esp |
int 0x40 |
add esp, 24 ;io_cintrol |
pop ecx |
pop ebx |
ret 12 |
|
align 4 |
_DestroyBuffer@4: ;str:dword |
|
push ebx |
push ecx |
|
xor eax, eax |
lea ebx, [esp+12] ;[stream] |
|
push eax ;.out_size |
push eax ;.output |
push 4 ;.inp_size |
push ebx ;.input |
push SND_DESTROY_BUFF;.code |
push [hSound] ;.handle |
|
mov eax, 68 |
mov ebx, 17 |
mov ecx, esp ;[handle] |
int 0x40 |
add esp, 24 |
pop ecx |
pop ebx |
ret 4 |
|
|
section '.data' align 16 data readable writable |
|
public hSound |
public hrdwSound |
|
hSound dd ? |
hrdwSound dd ? |
|
szInfinity db 'INFINITY',0 |
szSound db 'SOUND',0 |
|
|