1 /* emu2149.h */ 2 #ifndef _EMU2149_H_ 3 #define _EMU2149_H_ 4 #include "emutypes.h" 5 6 /*#ifdef EMU2149_DLL_EXPORTS 7 #define EMU2149_API __declspec(dllexport) 8 #elif EMU2149_DLL_IMPORTS 9 #define EMU2149_API __declspec(dllimport) 10 #else*/ 11 #define EMU2149_API 12 //#endif 13 14 #define EMU2149_VOL_DEFAULT 1 15 #define EMU2149_VOL_YM2149 0 16 #define EMU2149_VOL_AY_3_8910 1 17 18 #define EMU2149_ZX_STEREO 0x80 19 20 #define PSG_MASK_CH(x) (1<<(x)) 21 22 /*#ifdef __cplusplus 23 extern "C" 24 { 25 #endif*/ 26 27 typedef struct __PSG 28 { 29 30 /* Volume Table */ 31 e_uint32 *voltbl; 32 33 e_uint8 reg[0x20]; 34 e_int32 out; 35 e_int32 cout[3]; 36 37 e_uint32 clk, rate, base_incr, quality; 38 39 e_uint32 count[3]; 40 e_uint32 volume[3]; 41 e_uint32 freq[3]; 42 e_uint32 edge[3]; 43 e_uint32 tmask[3]; 44 e_uint32 nmask[3]; 45 e_uint32 mask; 46 e_uint32 stereo_mask[3]; 47 48 e_uint32 base_count; 49 50 e_uint32 env_volume; 51 e_uint32 env_ptr; 52 e_uint32 env_face; 53 54 e_uint32 env_continue; 55 e_uint32 env_attack; 56 e_uint32 env_alternate; 57 e_uint32 env_hold; 58 e_uint32 env_pause; 59 e_uint32 env_reset; 60 61 e_uint32 env_freq; 62 e_uint32 env_count; 63 64 e_uint32 noise_seed; 65 e_uint32 noise_count; 66 e_uint32 noise_freq; 67 68 /* rate converter */ 69 e_uint32 realstep; 70 e_uint32 psgtime; 71 e_uint32 psgstep; 72 e_int32 prev, next; 73 e_int32 sprev[2], snext[2]; 74 75 /* I/O Ctrl */ 76 e_uint32 adr; 77 78 } 79 PSG; 80 81 EMU2149_API void PSG_set_quality (PSG * psg, e_uint32 q); 82 EMU2149_API void PSG_set_clock(PSG * psg, e_uint32 c); 83 EMU2149_API void PSG_set_rate (PSG * psg, e_uint32 r); 84 EMU2149_API PSG *PSG_new (e_uint32 clk, e_uint32 rate); 85 EMU2149_API void PSG_reset (PSG *); 86 EMU2149_API void PSG_delete (PSG *); 87 EMU2149_API void PSG_writeReg (PSG *, e_uint32 reg, e_uint32 val); 88 EMU2149_API void PSG_writeIO (PSG * psg, e_uint32 adr, e_uint32 val); 89 EMU2149_API e_uint8 PSG_readReg (PSG * psg, e_uint32 reg); 90 EMU2149_API e_uint8 PSG_readIO (PSG * psg); 91 EMU2149_API e_int16 PSG_calc (PSG *); 92 EMU2149_API void PSG_calc_stereo (PSG * psg, e_int32 **out, e_int32 samples); 93 EMU2149_API void PSG_setFlags (PSG * psg, e_uint8 flags); 94 EMU2149_API void PSG_setVolumeMode (PSG * psg, int type); 95 EMU2149_API e_uint32 PSG_setMask (PSG *, e_uint32 mask); 96 EMU2149_API e_uint32 PSG_toggleMask (PSG *, e_uint32 mask); 97 EMU2149_API void PSG_setStereoMask (PSG *psg, e_uint32 mask); 98 99 /*#ifdef __cplusplus 100 } 101 #endif*/ 102 103 #endif 104