|
LMMS
|
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdarg.h>#include <math.h>#include "fmopl.h"Macros | |
| #define | INLINE static inline |
| #define | HAS_YM3812 1 |
| #define | PI 3.14159265358979323846 |
| #define | OPL_ARRATE 141280 /* RATE 4 = 2826.24ms @ 3.6MHz */ |
| #define | OPL_DRRATE 1956000 /* RATE 4 = 39280.64ms @ 3.6MHz */ |
| #define | DELTAT_MIXING_LEVEL (1) /* DELTA-T ADPCM MIXING LEVEL */ |
| #define | FREQ_BITS 24 /* frequency turn */ |
| #define | FREQ_RATE (1<<(FREQ_BITS-20)) |
| #define | TL_BITS (FREQ_BITS+2) |
| #define | OPL_OUTSB (TL_BITS+3-16) /* OPL output final shift 16bit */ |
| #define | OPL_MAXOUT (0x7fff<<OPL_OUTSB) |
| #define | OPL_MINOUT (-0x8000<<OPL_OUTSB) |
| #define | SIN_ENT 2048 |
| #define | ENV_BITS 16 |
| #define | EG_ENT 4096 |
| #define | EG_OFF ((2*EG_ENT)<<ENV_BITS) /* OFF */ |
| #define | EG_DED EG_OFF |
| #define | EG_DST (EG_ENT<<ENV_BITS) /* DECAY START */ |
| #define | EG_AED EG_DST |
| #define | EG_AST 0 /* ATTACK START */ |
| #define | EG_STEP (96.0/EG_ENT) /* OPL is 0.1875 dB step */ |
| #define | VIB_ENT 512 |
| #define | VIB_SHIFT (32-9) |
| #define | AMS_ENT 512 |
| #define | AMS_SHIFT (32-9) |
| #define | VIB_RATE 256 |
| #define | SLOT1 0 |
| #define | SLOT2 1 |
| #define | ENV_MOD_RR 0x00 |
| #define | ENV_MOD_DR 0x01 |
| #define | ENV_MOD_AR 0x02 |
| #define | DV (EG_STEP/2) |
| #define | U(x) |
| #define | SC(db) |
| #define | TL_MAX (EG_ENT*2) /* limit(tl + ksr + envelope) + sinwave */ |
| #define | ML 2 |
| #define | LOG_ERR 3 /* ERROR */ |
| #define | LOG_WAR 2 /* WARNING */ |
| #define | LOG_INF 1 /* INFORMATION */ |
| #define | LOG_LEVEL LOG_ERR |
| #define | LOG(n, x) |
| #define | OP_OUT(slot, env, con) |
| #define | WHITE_NOISE_db 6.0 |
Variables | |
| static const int | slot_array [32] |
| static const UINT32 | KSL_TABLE [8 *16] |
| static const INT32 | SL_TABLE [16] |
| static INT32 * | TL_TABLE |
| static INT32 ** | SIN_TABLE |
| static INT32 * | AMS_TABLE |
| static INT32 * | VIB_TABLE |
| static INT32 | ENV_CURVE [2 *EG_ENT+1] |
| static const UINT32 | MUL_TABLE [16] |
| static INT32 | RATE_0 [16] |
| static int | num_lock = 0 |
| static void * | cur_chip = NULL |
| static OPL_CH * | S_CH |
| static OPL_CH * | E_CH |
| OPL_SLOT * | SLOT7_1 |
| OPL_SLOT * | SLOT7_2 |
| OPL_SLOT * | SLOT8_1 |
| OPL_SLOT * | SLOT8_2 |
| static INT32 | outd [1] |
| static INT32 | ams |
| static INT32 | vib |
| INT32 * | ams_table |
| INT32 * | vib_table |
| static INT32 | amsIncr |
| static INT32 | vibIncr |
| static INT32 | feedback2 |
| #define AMS_ENT 512 |
| #define AMS_SHIFT (32-9) |
| #define DELTAT_MIXING_LEVEL (1) /* DELTA-T ADPCM MIXING LEVEL */ |
| #define DV (EG_STEP/2) |
| #define EG_AED EG_DST |
| #define EG_AST 0 /* ATTACK START */ |
| #define EG_DED EG_OFF |
| #define EG_ENT 4096 |
| #define EG_STEP (96.0/EG_ENT) /* OPL is 0.1875 dB step */ |
| #define ENV_BITS 16 |
| #define ENV_MOD_AR 0x02 |
| #define ENV_MOD_DR 0x01 |
| #define ENV_MOD_RR 0x00 |
| #define FREQ_BITS 24 /* frequency turn */ |
| #define FREQ_RATE (1<<(FREQ_BITS-20)) |
| #define HAS_YM3812 1 |
| #define INLINE static inline |
| #define LOG_ERR 3 /* ERROR */ |
| #define LOG_INF 1 /* INFORMATION */ |
| #define LOG_LEVEL LOG_ERR |
| #define LOG_WAR 2 /* WARNING */ |
| #define ML 2 |
| #define OP_OUT | ( | slot, | |
| env, | |||
| con ) |
| #define OPL_ARRATE 141280 /* RATE 4 = 2826.24ms @ 3.6MHz */ |
| #define OPL_DRRATE 1956000 /* RATE 4 = 39280.64ms @ 3.6MHz */ |
| #define OPL_MAXOUT (0x7fff<<OPL_OUTSB) |
| #define OPL_MINOUT (-0x8000<<OPL_OUTSB) |
| #define PI 3.14159265358979323846 |
| #define SC | ( | db | ) |
| #define SIN_ENT 2048 |
| #define SLOT1 0 |
| #define SLOT2 1 |
| #define TL_BITS (FREQ_BITS+2) |
| #define U | ( | x | ) |
| #define VIB_ENT 512 |
| #define VIB_RATE 256 |
| #define VIB_SHIFT (32-9) |
| #define WHITE_NOISE_db 6.0 |
| void OPLSetIRQHandler | ( | FM_OPL * | OPL, |
| OPL_IRQHANDLER | IRQHandler, | ||
| int | param ) |
| void OPLSetTimerHandler | ( | FM_OPL * | OPL, |
| OPL_TIMERHANDLER | TimerHandler, | ||
| int | channelOffset ) |
| void OPLSetUpdateHandler | ( | FM_OPL * | OPL, |
| OPL_UPDATEHANDLER | UpdateHandler, | ||
| int | param ) |
|
static |
|
static |
| INT32* ams_table |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
| OPL_SLOT* SLOT7_1 |
| OPL_SLOT * SLOT7_2 |
| OPL_SLOT * SLOT8_1 |
| OPL_SLOT * SLOT8_2 |
|
static |
|
static |
|
static |
| INT32* vib_table |
|
static |