|
|
| version 1.2, 2003/10/18 07:28:50 | version 1.9, 2004/02/04 03:42:02 |
|---|---|
| Line 1 | Line 1 |
| enum { | enum { |
| OPNCH_MAX = 12, | OPNCH_MAX = 12, |
| OPNA_CLOCK = 3993600, | OPNA_CLOCK = 55466 * 72, |
| OPN_CHMASK = 0x8000, | OPN_CHMASK = 0x8000, |
| OPN_STEREO = 0x8000, | OPN_STEREO = 0x8000, |
| Line 9 enum { | Line 9 enum { |
| }; | }; |
| #ifdef OPNGENX86 | #if defined(OPNGENX86) |
| enum { | enum { |
| FMDIV_BITS = 8, | FMDIV_BITS = 8, |
| FMDIV_ENT = (1 << FMDIV_BITS), | FMDIV_ENT = (1 << FMDIV_BITS), |
| FMVOL_SFTBIT = 4, | FMVOL_SFTBIT = 4 |
| }; | |
| #define SIN_BITS 11 | |
| #define EVC_BITS 10 | |
| #define ENV_BITS 16 | |
| #define KF_BITS 6 | |
| #define FREQ_BITS 20 | |
| #define ENVTBL_BIT 14 | |
| #define SINTBL_BIT 14 | |
| #elif defined(OPNGENARM) | |
| SIN_BITS = 11, | enum { |
| EVC_BITS = 10, | FMDIV_BITS = 8, |
| ENV_BITS = 16, | FMDIV_ENT = (1 << FMDIV_BITS), |
| KF_BITS = 6, | FMVOL_SFTBIT = 4 |
| FREQ_BITS = 20, | |
| ENVTBL_BIT = 14, | |
| SINTBL_BIT = 14 | |
| }; | }; |
| #define SIN_BITS 8 | |
| #define EVC_BITS 7 | |
| #define ENV_BITS 16 | |
| #define KF_BITS 6 | |
| #define FREQ_BITS 20 | |
| #define ENVTBL_BIT 14 | |
| #define SINTBL_BIT 14 // env+sin 30bit max | |
| #else | #else |
| enum { | enum { |
| FMDIV_BITS = 8, | FMDIV_BITS = 8, |
| FMDIV_ENT = (1 << FMDIV_BITS), | FMDIV_ENT = (1 << FMDIV_BITS), |
| FMVOL_SFTBIT = 4, // CÈǤÏ̵»ë | FMVOL_SFTBIT = 4 |
| SIN_BITS = 10, | |
| EVC_BITS = 10, | |
| ENV_BITS = 16, | |
| KF_BITS = 6, | |
| FREQ_BITS = 20, | |
| ENVTBL_BIT = 14, | |
| SINTBL_BIT = 15 // env+sin 30bit max | |
| }; | }; |
| #define SIN_BITS 10 | |
| #define EVC_BITS 10 | |
| #define ENV_BITS 16 | |
| #define KF_BITS 6 | |
| #define FREQ_BITS 20 | |
| #define ENVTBL_BIT 14 | |
| #define SINTBL_BIT 15 | |
| #endif | #endif |
| #define TL_BITS (FREQ_BITS+2) | #define TL_BITS (FREQ_BITS+2) |
| Line 81 const SINT32 *release; // release rait | Line 97 const SINT32 *release; // release rait |
| SINT32 multiple; // multiple | SINT32 multiple; // multiple |
| BYTE keyscale; // key scale | BYTE keyscale; // key scale |
| BYTE env_mode; // envelope mode | BYTE env_mode; // envelope mode |
| BYTE envraito; // envelope raito | BYTE envratio; // envelope raito |
| BYTE ssgeg1; // SSG-EG | BYTE ssgeg1; // SSG-EG |
| SINT32 env_cnt; // envelope count | SINT32 env_cnt; // envelope count |
| Line 97 typedef struct { | Line 113 typedef struct { |
| OPNSLOT slot[4]; | OPNSLOT slot[4]; |
| BYTE algorithm; // algorithm | BYTE algorithm; // algorithm |
| BYTE feedback; // self feedback | BYTE feedback; // self feedback |
| BYTE padding1[2]; | BYTE playing; |
| BYTE outslot; | |
| SINT32 op1fb; // operator1 feedback | SINT32 op1fb; // operator1 feedback |
| SINT32 *connect1; // operator1 connect | SINT32 *connect1; // operator1 connect |
| SINT32 *connect3; // operator3 connect | SINT32 *connect3; // operator3 connect |
| Line 115 typedef struct { | Line 132 typedef struct { |
| typedef struct { | typedef struct { |
| UINT playchannels; | UINT playchannels; |
| UINT playing; | |
| SINT32 feedback2; | SINT32 feedback2; |
| SINT32 feedback3; | SINT32 feedback3; |
| SINT32 feedback4; | SINT32 feedback4; |
| Line 129 typedef struct { | Line 147 typedef struct { |
| SINT32 calc1024; | SINT32 calc1024; |
| SINT32 fmvol; | SINT32 fmvol; |
| UINT ratebit; | UINT ratebit; |
| UINT vr_en; | |
| SINT32 vr_l; | |
| SINT32 vr_r; | |
| SINT32 sintable[SIN_ENT]; | |
| SINT32 envtable[EVC_ENT]; | |
| SINT32 envcurve[EVC_ENT*2 + 1]; | |
| } OPNCFG; | } OPNCFG; |
| Line 138 extern "C" { | Line 163 extern "C" { |
| void opngen_initialize(UINT rate); | void opngen_initialize(UINT rate); |
| void opngen_setvol(UINT vol); | void opngen_setvol(UINT vol); |
| void opngen_setVR(REG8 channel, REG8 value); | |
| void opngen_reset(void); | void opngen_reset(void); |
| void opngen_setcfg(BYTE maxch, UINT flag); | void opngen_setcfg(REG8 maxch, UINT flag); |
| void opngen_setextch(UINT chnum, BYTE data); | void opngen_setextch(UINT chnum, REG8 data); |
| void opngen_setreg(BYTE chbase, BYTE reg, BYTE value); | void opngen_setreg(REG8 chbase, REG8 reg, REG8 value); |
| void opngen_keyon(UINT chnum, BYTE value); | void opngen_keyon(UINT chnum, REG8 value); |
| void SOUNDCALL opngen_getpcm(void *hdl, SINT32 *buf, UINT count); | void SOUNDCALL opngen_getpcm(void *hdl, SINT32 *buf, UINT count); |
| void SOUNDCALL opngen_getpcmvr(void *hdl, SINT32 *buf, UINT count); | |
| #ifdef __cplusplus | #ifdef __cplusplus |
| } | } |