DOSBox-X
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator
src/hardware/snd_pc98/sound/psggen.h
00001 
00002 enum {
00003         PSGFREQPADBIT           = 12,
00004         PSGADDEDBIT                     = 3
00005 };
00006 
00007 enum {
00008         PSGENV_INC                      = 15,
00009         PSGENV_ONESHOT          = 16,
00010         PSGENV_LASTON           = 32,
00011         PSGENV_ONECYCLE         = 64
00012 };
00013 
00014 typedef struct {
00015         SINT32  freq;
00016         SINT32  count;
00017         SINT32  *pvol;                  // !!
00018         UINT16  puchi;
00019         UINT8   pan;
00020         UINT8   padding;
00021 } PSGTONE;
00022 
00023 typedef struct {
00024         SINT32  freq;
00025         SINT32  count;
00026         UINT    base;
00027 } PSGNOISE;
00028 
00029 typedef struct {
00030         UINT8   tune[3][2];             // 0
00031         UINT8   noise;                  // 6
00032         UINT8   mixer;                  // 7
00033         UINT8   vol[3];                 // 8
00034         UINT8   envtime[2];             // b
00035         UINT8   env;                    // d
00036         UINT8   io1;
00037         UINT8   io2;
00038 } PSGREG;
00039 
00040 typedef struct {
00041         PSGTONE         tone[3];
00042         PSGNOISE        noise;
00043         PSGREG          reg;
00044         UINT16          envcnt;
00045         UINT16          envmax;
00046         UINT8           mixer;
00047         UINT8           envmode;
00048         UINT8           envvol;
00049         SINT8           envvolcnt;
00050         SINT32          evol;                           // !!
00051         UINT            puchicount;
00052 } _PSGGEN, *PSGGEN;
00053 
00054 typedef struct {
00055         SINT32  volume[16];
00056         SINT32  voltbl[16];
00057         UINT    rate;
00058         UINT32  base;
00059         UINT16  puchidec;
00060 } PSGGENCFG;
00061 
00062 
00063 #ifdef __cplusplus
00064 extern "C" {
00065 #endif
00066 
00067 void psggen_initialize(UINT rate);
00068 void psggen_setvol(UINT vol);
00069 
00070 void psggen_reset(PSGGEN psg);
00071 void psggen_restore(PSGGEN psg);
00072 void psggen_setreg(PSGGEN psg, UINT reg, REG8 val);
00073 REG8 psggen_getreg(PSGGEN psg, UINT reg);
00074 void psggen_setpan(PSGGEN psg, UINT ch, REG8 pan);
00075 
00076 void SOUNDCALL psggen_getpcm(PSGGEN psg, SINT32 *pcm, UINT count);
00077 
00078 #ifdef __cplusplus
00079 }
00080 #endif
00081