Программирование игр для Windows. Советы профессионала


Использование функций драйвера для проигрывания VOC-файлов - часть 8


call driver_ptr ; вызов

драйвера

} // конец ассемблерной вставки

} // конец функции //////////////////////////////////////////////////////////

void Voc_Set_DMA(unsigned dma)

{

// устанавливает номер прерывания прямого доступа к памяти

_asm

{

mov  bx,2        ; функция 2 устанавливает номер прерывания

                 ; прямого доступа к памяти

mov ax,dma       ; поместить в регистр АХ

                 ; номер прерывания прямого доступа в память

call driver_ptr  ; вызов драйвера

} // конец ассемблерной вставки

} // конец функции ////////////////////////////////////////////////////////////

Voc Set_Status_Addr(char _far *status)

{

unsigned segni,offm;

segm = _FP_SEG(status);

offm = _FP_OFF(status);

// задает переменную слова состояния

asm               

{

mov bx,5        ; функция задания переменной слова состояния

                ; имеет номер 5

mov еs, segm    ; в регистр ез загружается сегмент переменной

mov di, offm    ; в регистр di загружается смещение переменной

call driver_ptr ; вызов

драйвера

} // конец ассемблерной вставки

} // конец функции

///////////////////////////////////////

void Voc_Load_Driver(void) {

// загрузить CT-VOICE.DRV

int driver_handle; unsigned errno,segment_offset,num_para,bytes_read;

// открыть

файл драйвера

_dos_open("CT-VOICE.DRV", _O_RDONLY, &driver_handle);

// выделить

память

num_para= 1 + (filelength(driver__handle))/16;

_dos_allocmem(num_para, &segment);

// установить указатель на область данных драйвера

_FP_SEG(driver_ptr) = segment;

_FP_OFF(driver_ptr) =0;

// загрузить

код драйвера data_ptr = driver_ptr;

do

{

_dos_read(driver_handle,data_ptr, 0х4000, &bytes_read);

data_ptr += bytes_read;

} while (bytes_read==0x4000);

// закрыть

файл

_dos_close(driver_handle);

} // конец

функции

////////////////////////////////////////////////////////////

char far *Voc_Load_Sound(char *filename,

unsigned char *header_length)

{ // загрузка звукового файла с диска в память




Начало  Назад  Вперед



Книжный магазин