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


Замечание - часть 13


Если ячейка памяти по

// этому адресу содержит значение 1, это означает, что следующий

// фрагмент все еще ожидает своей очереди. Когда значение ячейки

// становится равным 0, ваша программа может начать загрузку

// следующего фрагмента в двойной буфер. Использование "семафора"

// для определения момента для загрузки следующего фрагмента

// предпочтительнее, чем вызов функции AudioPendingStatus.

extern short far * cdecl ReportSemaphoreAddress(void);

// сообщает адрес семафора DIGPAK. Возвращаемый указатель является

// дальним указателем на ячейку памяти внутри драйвера DIGPAK. Если

// значение не нулевое, то DIGPAK находится в активном состоянии и

// вы не должны в это время вызывать какие бы то ни было функции

// DIGPAK по аппаратному прерыванию, так как это, возможно, прервет

// исполнение кода самого драйвера.

extern void far cdecl SetTimerDivisorRate (short rate) ;

// устанавливает делитель частоты для таймера

// Если ваша программа перепрограммировала таймер 8253 на новую

// частоту, вы должны сообщить об этом драйверу DIGPAK.

// Не забудьте восстановить стандартную частоту после завершения

// работы программы.

extern short far cdecl ReportVersionNumber (void);

// сообщает версию драйвера DIGPAK

// Номер версии возвращается умноженным на сто, то есть значение

// 310 соответствует версии 3.1. Драйверы версий младше 3.1 не

// поддерживают данную функцию, поэтому нулевое значение означает,

// что версия загруженного драйвера DIGPAK меньше, чем 3.1.

extern short far cdecl SetBackFillMode (short mode);

// Устанавливает режим обратной записи DMA. Возвращает 1, если

// режим.установлен, и 0, если драйвер не поддерживает этот режим.

extern unsigned short far cdecl ReportDMAC (void);

// сообщает текущее значение счётчика DMA

extern short far cdecl VerifyDMA (chac far *data, short length);

// Проверяет, не пересекает ли буфер границ страницы. Возвращает 1,

// если граница не пересекается, и 0, если буфер пересек границу.

extern void far cdecl NullSound (char far *sound, short sndlen, short null) ;

/* Дополнительные функции */

extern void far cdecl WaitSound (void);

// ожидание окончания воспроизведения звука

extern short far cdecl Checkin (void);        

// Загружён ли драйвер. 1 - да; О - нет.

/**** Внимание!!! Если вы используете LOADABLE_DRIVERS, то должны

обеспечить доступ к функциям распределения памяти и к DOSCALLS.OBJ.

extern short far cdecl InitDP (short segment);

 // инициализировать

драйвер DIGPAK

extern void far cdecl DeInitDP (short segment);

// выгрузить драйвер DIGPAK




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



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