103 lines
3.4 KiB
C
103 lines
3.4 KiB
C
/***************************************************************************
|
|
*
|
|
* vsb.h
|
|
*
|
|
* Copyright (c) 1991-1996 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* This code provides VDD support for SB 2.0 sound output, specifically:
|
|
* DSP 2.01+ (excluding SB-MIDI port)
|
|
* Mixer Chip CT1335 (not strictly part of SB 2.0, but apps seem to like it)
|
|
* FM Chip OPL2 (a.k.a. Adlib)
|
|
*
|
|
***************************************************************************/
|
|
|
|
|
|
/*****************************************************************************
|
|
*
|
|
* #defines
|
|
*
|
|
*****************************************************************************/
|
|
|
|
#define VSBD_PATH TEXT("System\\CurrentControlSet\\Control\\VirtualDeviceDrivers\\SoundBlaster")
|
|
#define LOOKAHEAD_VALUE TEXT("LookAhead")
|
|
|
|
/*
|
|
* Hardware and version information
|
|
* In DOS terms: SET BLASTER=A220 I5 D1 T3
|
|
*/
|
|
|
|
#define SB_VERSION 0x201 // SB 2.0 (DSP 2.01+)
|
|
#define SB_INTERRUPT 0x05 // Interrupt 5
|
|
#define SB_DMA_CHANNEL 0x01 // DMA Channel 1
|
|
#define NO_DEVICE_FOUND 0xFFFF // returned if no device found
|
|
|
|
/*****************************************************************************
|
|
*
|
|
* Function Prototypes
|
|
*
|
|
*****************************************************************************/
|
|
|
|
/*
|
|
* General function prototypes
|
|
*/
|
|
|
|
void VddDbgOut(LPSTR lpszFormat, ...);
|
|
BOOL WINAPI DllEntryPoint(HINSTANCE hInstance, DWORD reason, LPVOID reserved);
|
|
BOOL InstallIoHook(HINSTANCE hInstance);
|
|
void DeInstallIoHook(HINSTANCE hInstance);
|
|
VOID VsbByteIn(WORD port, BYTE * data);
|
|
VOID VsbByteOut(WORD port, BYTE data);
|
|
VOID ResetAll(VOID);
|
|
|
|
/*****************************************************************************
|
|
*
|
|
* Globals
|
|
*
|
|
*****************************************************************************/
|
|
|
|
//
|
|
// Definitions for MM api entry points. The functions will be linked
|
|
// dynamically to avoid bringing winmm.dll in before wow32.
|
|
//
|
|
|
|
typedef MMRESULT (WINAPI* SETVOLUMEPROC)(HWAVEOUT, DWORD);
|
|
typedef UINT (WINAPI* GETNUMDEVSPROC)(VOID);
|
|
typedef MMRESULT (WINAPI* GETDEVCAPSPROC)(UINT, LPWAVEOUTCAPSW, UINT);
|
|
typedef MMRESULT (WINAPI* OPENPROC)(LPHWAVEOUT, UINT, LPCWAVEFORMATEX, DWORD, DWORD, DWORD);
|
|
typedef MMRESULT (WINAPI* RESETPROC)(HWAVEOUT);
|
|
typedef MMRESULT (WINAPI* CLOSEPROC)(HWAVEOUT);
|
|
typedef MMRESULT (WINAPI* GETPOSITIONPROC)(HWAVEOUT, LPMMTIME, UINT);
|
|
typedef MMRESULT (WINAPI* WRITEPROC)(HWAVEOUT, LPWAVEHDR, UINT);
|
|
typedef MMRESULT (WINAPI* PREPAREHEADERPROC)(HWAVEOUT, LPWAVEHDR, UINT);
|
|
typedef MMRESULT (WINAPI* UNPREPAREHEADERPROC)(HWAVEOUT, LPWAVEHDR, UINT);
|
|
|
|
/*****************************************************************************
|
|
*
|
|
* Debugging
|
|
* Levels:
|
|
* 1 - errors only
|
|
* 2 - significant events
|
|
* 3 - regular events
|
|
* 4 - heaps o' information
|
|
*
|
|
*****************************************************************************/
|
|
|
|
#if DBG
|
|
|
|
extern int VddDebugLevel;
|
|
#define dprintf( _x_ ) VddDbgOut _x_
|
|
#define dprintf1( _x_ ) if (VddDebugLevel >= 1) VddDbgOut _x_
|
|
#define dprintf2( _x_ ) if (VddDebugLevel >= 2) VddDbgOut _x_
|
|
#define dprintf3( _x_ ) if (VddDebugLevel >= 3) VddDbgOut _x_
|
|
#define dprintf4( _x_ ) if (VddDebugLevel >= 4) VddDbgOut _x_
|
|
|
|
#else
|
|
|
|
#define dprintf(x)
|
|
#define dprintf1(x)
|
|
#define dprintf2(x)
|
|
#define dprintf3(x)
|
|
#define dprintf4(x)
|
|
|
|
#endif // DBG
|