4 #define BUILD_YM3812 (HAS_YM3812) 10 #define OPL_OUTPUT_BIT 16 15 typedef unsigned char UINT8;
16 typedef unsigned short UINT16;
17 typedef unsigned int UINT32;
18 typedef signed char INT8;
19 typedef signed short INT16;
20 typedef signed int INT32;
23 #if (OPL_OUTPUT_BIT==16) 24 typedef INT16 OPLSAMPLE;
26 #if (OPL_OUTPUT_BIT==8) 27 typedef unsigned char OPLSAMPLE;
35 typedef void (*OPL_TIMERHANDLER)(
int channel,
double interval_Sec);
36 typedef void (*OPL_IRQHANDLER)(
int param,
int irq);
37 typedef void (*OPL_UPDATEHANDLER)(
int param,
int min_interval_us);
38 typedef void (*OPL_PORTHANDLER_W)(
int param,
unsigned char data);
39 typedef unsigned char (*OPL_PORTHANDLER_R)(
int param);
43 #define OPL_TYPE_WAVESEL 0x01 44 #define OPL_TYPE_ADPCM 0x02 45 #define OPL_TYPE_KEYBOARD 0x04 46 #define OPL_TYPE_IO 0x08 121 OPL_PORTHANDLER_R porthandler_r;
122 OPL_PORTHANDLER_W porthandler_w;
124 OPL_PORTHANDLER_R keyboardhandler_r;
125 OPL_PORTHANDLER_W keyboardhandler_w;
130 UINT32 FN_TABLE[1024];
141 OPL_TIMERHANDLER TimerHandler;
143 OPL_IRQHANDLER IRQHandler;
145 OPL_UPDATEHANDLER UpdateHandler;
150 #define OPL_TYPE_YM3526 (0) 151 #define OPL_TYPE_YM3812 (OPL_TYPE_WAVESEL) 152 #define OPL_TYPE_Y8950 (OPL_TYPE_ADPCM|OPL_TYPE_KEYBOARD|OPL_TYPE_IO) 154 FM_OPL *OPLCreate(
int type,
int clock,
int rate);
155 void OPLDestroy(
FM_OPL *OPL);
156 void OPLSetTimerHandler(
FM_OPL *OPL,OPL_TIMERHANDLER TimerHandler,
int channelOffset);
157 void OPLSetIRQHandler(
FM_OPL *OPL,OPL_IRQHANDLER IRQHandler,
int param);
158 void OPLSetUpdateHandler(
FM_OPL *OPL,OPL_UPDATEHANDLER UpdateHandler,
int param);
160 void OPLSetPortHandler(
FM_OPL *OPL,OPL_PORTHANDLER_W PortHandler_w,OPL_PORTHANDLER_R PortHandler_r,
int param);
161 void OPLSetKeyboardHandler(
FM_OPL *OPL,OPL_PORTHANDLER_W KeyboardHandler_w,OPL_PORTHANDLER_R KeyboardHandler_r,
int param);
163 void OPLResetChip(
FM_OPL *OPL);
164 int OPLWrite(
FM_OPL *OPL,
int a,
int v);
165 unsigned char OPLRead(
FM_OPL *OPL,
int a);
166 int OPLTimerOver(
FM_OPL *OPL,
int c);
169 void YM3812UpdateOne(
FM_OPL *OPL, INT16 *buffer,
int length,
int stripe,
float volume);
171 void Y8950UpdateOne(
FM_OPL *OPL, INT16 *buffer,
int length);