65 lines
1.6 KiB
C
65 lines
1.6 KiB
C
|
/***************************************************************************
|
||
|
*
|
||
|
* fm.h
|
||
|
*
|
||
|
* Copyright (c) 1991-1996 Microsoft Corporation. All Rights Reserved.
|
||
|
*
|
||
|
* This code provides VDD support for SB 2.0 sound output, specifically:
|
||
|
* FM Chip OPL2 (a.k.a. Adlib)
|
||
|
*
|
||
|
***************************************************************************/
|
||
|
|
||
|
|
||
|
/*****************************************************************************
|
||
|
*
|
||
|
* #defines
|
||
|
*
|
||
|
*****************************************************************************/
|
||
|
|
||
|
/*
|
||
|
* OPL2/Adlib Ports
|
||
|
*/
|
||
|
|
||
|
#define ADLIB_REGISTER_SELECT_PORT 0x388 // select the register to write data
|
||
|
#define ADLIB_STATUS_PORT 0x388 // read to determine opl2 status
|
||
|
#define ADLIB_DATA_PORT 0x389 // write data port
|
||
|
|
||
|
/*
|
||
|
* FM information
|
||
|
*/
|
||
|
|
||
|
#define AD_MASK 0x04 // adlib register used to control opl2
|
||
|
#define AD_NEW 0x105 // used to determine if app entering opl3 mode
|
||
|
#define BATCH_SIZE 40 // how much data is batched to opl2
|
||
|
|
||
|
typedef struct { // structure written to fm device
|
||
|
unsigned short IoPort;
|
||
|
unsigned short PortData;
|
||
|
} SYNTH_DATA, *PSYNTH_DATA;
|
||
|
|
||
|
/*****************************************************************************
|
||
|
*
|
||
|
* Function Prototypes
|
||
|
*
|
||
|
*****************************************************************************/
|
||
|
|
||
|
void ResetFM(void);
|
||
|
BOOL OpenFMDevice(void);
|
||
|
void CloseFMDevice(void);
|
||
|
BOOL FMPortWrite(void);
|
||
|
|
||
|
VOID
|
||
|
FMDataWrite(
|
||
|
BYTE data
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
FMRegisterSelect(
|
||
|
BYTE data
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
FMStatusRead(
|
||
|
BYTE *data
|
||
|
);
|