DOSBox-X
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator
src/hardware/snd_pc98/sound/adpcm.h
00001 
00002 enum {
00003         ADTIMING_BIT    = 11,
00004         ADTIMING                = (1 << ADTIMING_BIT),
00005         ADPCM_SHIFT             = 3
00006 };
00007 
00008 typedef struct {
00009         UINT8   ctrl1;          // 00
00010         UINT8   ctrl2;          // 01
00011         UINT8   start[2];       // 02
00012         UINT8   stop[2];        // 04
00013         UINT8   reg06;
00014         UINT8   reg07;
00015         UINT8   data;           // 08
00016         UINT8   delta[2];       // 09
00017         UINT8   level;          // 0b
00018         UINT8   limit[2];       // 0c
00019         UINT8   reg0e;
00020         UINT8   reg0f;
00021         UINT8   flag;           // 10
00022         UINT8   reg11;
00023         UINT8   reg12;
00024         UINT8   reg13;
00025 } ADPCMREG;
00026 
00027 typedef struct {
00028         ADPCMREG        reg;
00029         UINT32          pos;
00030         UINT32          start;
00031         UINT32          stop;
00032         UINT32          limit;
00033         SINT32          level;
00034         UINT32          base;
00035         SINT32          samp;
00036         SINT32          delta;
00037         SINT32          remain;
00038         SINT32          step;
00039         SINT32          out0;
00040         SINT32          out1;
00041         SINT32          fb;
00042         SINT32          pertim;
00043         UINT8           status;
00044         UINT8           play;
00045         UINT8           mask;
00046         UINT8           fifopos;
00047         UINT8           fifo[2];
00048         UINT8           padding[2];
00049         UINT8           buf[0x40000];
00050 } _ADPCM, *ADPCM;
00051 
00052 typedef struct {
00053         UINT    rate;
00054         UINT    vol;
00055 } ADPCMCFG;
00056 
00057 
00058 #ifdef __cplusplus
00059 extern "C" {
00060 #endif
00061 
00062 void adpcm_initialize(UINT rate);
00063 void adpcm_setvol(UINT vol);
00064 
00065 void adpcm_reset(ADPCM ad);
00066 void adpcm_update(ADPCM ad);
00067 void adpcm_setreg(ADPCM ad, UINT reg, REG8 value);
00068 REG8 adpcm_status(ADPCM ad);
00069 
00070 REG8 SOUNDCALL adpcm_readsample(ADPCM ad);
00071 void SOUNDCALL adpcm_datawrite(ADPCM ad, REG8 data);
00072 void SOUNDCALL adpcm_getpcm(ADPCM ad, SINT32 *buf, UINT count);
00073 
00074 #ifdef __cplusplus
00075 }
00076 #endif
00077