From bea67e6fdecc9100bbe05e48b1c3bd471ec8426c Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Thu, 10 Sep 2020 19:09:23 +0200 Subject: [PATCH] package/opentyrian: fix build with gcc 10 Fixes: - http://autobuild.buildroot.org/results/241b594bab63b2eeceb749e01510da550ed0ffd1 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- ...ed-to-be-exposed-from-opl-h-to-opl-c.patch | 365 ++++++++++++++++++ 1 file changed, 365 insertions(+) create mode 100644 package/opentyrian/0001-Move-definitions-that-don-t-need-to-be-exposed-from-opl-h-to-opl-c.patch diff --git a/package/opentyrian/0001-Move-definitions-that-don-t-need-to-be-exposed-from-opl-h-to-opl-c.patch b/package/opentyrian/0001-Move-definitions-that-don-t-need-to-be-exposed-from-opl-h-to-opl-c.patch new file mode 100644 index 0000000000..f41758ce30 --- /dev/null +++ b/package/opentyrian/0001-Move-definitions-that-don-t-need-to-be-exposed-from-opl-h-to-opl-c.patch @@ -0,0 +1,365 @@ +From 962ee8fc46ca51691bde1c8c1022dacbe8a037ed Mon Sep 17 00:00:00 2001 +From: Carl Reinke +Date: Sun, 14 Jun 2020 14:11:00 -0600 +Subject: [PATCH] Move definitions that don't need to be exposed from opl.h to + opl.c + +[Retrieved from: +https://github.com/opentyrian/opentyrian/commit/962ee8fc46ca51691bde1c8c1022dacbe8a037ed] +Signed-off-by: Fabrice Fontaine +--- + src/opl.c | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++- + src/opl.h | 157 ++---------------------------------------------------- + 2 files changed, 154 insertions(+), 156 deletions(-) + +diff --git a/src/opl.c b/src/opl.c +index a4071c5..f15474c 100644 +--- a/src/opl.c ++++ b/src/opl.c +@@ -23,12 +23,161 @@ + * Copyright (C) 1998-2001 Ken Silverman + * Ken Silverman's official web site: "http://www.advsys.net/ken" + */ +- ++#include "opl.h" + + #include ++#include + #include // rand() + #include // memset() +-#include "opl.h" ++ ++#define fltype double ++ ++ /* ++ define attribution that inlines/forces inlining of a function (optional) ++ */ ++#define OPL_INLINE inline ++ ++ ++#undef NUM_CHANNELS ++#if defined(OPLTYPE_IS_OPL3) ++#define NUM_CHANNELS 18 ++#else ++#define NUM_CHANNELS 9 ++#endif ++ ++#define MAXOPERATORS (NUM_CHANNELS*2) ++ ++ ++#define FL05 ((fltype)0.5) ++#define FL2 ((fltype)2.0) ++#define PI ((fltype)3.1415926535897932384626433832795) ++ ++ ++#define FIXEDPT 0x10000 // fixed-point calculations using 16+16 ++#define FIXEDPT_LFO 0x1000000 // fixed-point calculations using 8+24 ++ ++#define WAVEPREC 1024 // waveform precision (10 bits) ++ ++#define INTFREQU ((fltype)(14318180.0 / 288.0)) // clocking of the chip ++ ++ ++#define OF_TYPE_ATT 0 ++#define OF_TYPE_DEC 1 ++#define OF_TYPE_REL 2 ++#define OF_TYPE_SUS 3 ++#define OF_TYPE_SUS_NOKEEP 4 ++#define OF_TYPE_OFF 5 ++ ++#define ARC_CONTROL 0x00 ++#define ARC_TVS_KSR_MUL 0x20 ++#define ARC_KSL_OUTLEV 0x40 ++#define ARC_ATTR_DECR 0x60 ++#define ARC_SUSL_RELR 0x80 ++#define ARC_FREQ_NUM 0xa0 ++#define ARC_KON_BNUM 0xb0 ++#define ARC_PERC_MODE 0xbd ++#define ARC_FEEDBACK 0xc0 ++#define ARC_WAVE_SEL 0xe0 ++ ++#define ARC_SECONDSET 0x100 // second operator set for OPL3 ++ ++ ++#define OP_ACT_OFF 0x00 ++#define OP_ACT_NORMAL 0x01 // regular channel activated (bitmasked) ++#define OP_ACT_PERC 0x02 // percussion channel activated (bitmasked) ++ ++#define BLOCKBUF_SIZE 512 ++ ++ ++ // vibrato constants ++#define VIBTAB_SIZE 8 ++#define VIBFAC 70/50000 // no braces, integer mul/div ++ ++ // tremolo constants and table ++#define TREMTAB_SIZE 53 ++#define TREM_FREQ ((fltype)(3.7)) // tremolo at 3.7hz ++ ++ ++ /* operator struct definition ++ For OPL2 all 9 channels consist of two operators each, carrier and modulator. ++ Channel x has operators x as modulator and operators (9+x) as carrier. ++ For OPL3 all 18 channels consist either of two operators (2op mode) or four ++ operators (4op mode) which is determined through register4 of the second ++ adlib register set. ++ Only the channels 0,1,2 (first set) and 9,10,11 (second set) can act as ++ 4op channels. The two additional operators for a channel y come from the ++ 2op channel y+3 so the operatorss y, (9+y), y+3, (9+y)+3 make up a 4op ++ channel. ++ */ ++typedef struct operator_struct { ++ Bit32s cval, lastcval; // current output/last output (used for feedback) ++ Bit32u tcount, wfpos, tinc; // time (position in waveform) and time increment ++ fltype amp, step_amp; // and amplification (envelope) ++ fltype vol; // volume ++ fltype sustain_level; // sustain level ++ Bit32s mfbi; // feedback amount ++ fltype a0, a1, a2, a3; // attack rate function coefficients ++ fltype decaymul, releasemul; // decay/release rate functions ++ Bit32u op_state; // current state of operator (attack/decay/sustain/release/off) ++ Bit32u toff; ++ Bit32s freq_high; // highest three bits of the frequency, used for vibrato calculations ++ Bit16s* cur_wform; // start of selected waveform ++ Bit32u cur_wmask; // mask for selected waveform ++ Bit32u act_state; // activity state (regular, percussion) ++ bool sus_keep; // keep sustain level when decay finished ++ bool vibrato,tremolo; // vibrato/tremolo enable bits ++ ++ // variables used to provide non-continuous envelopes ++ Bit32u generator_pos; // for non-standard sample rates we need to determine how many samples have passed ++ Bits cur_env_step; // current (standardized) sample position ++ Bits env_step_a,env_step_d,env_step_r; // number of std samples of one step (for attack/decay/release mode) ++ Bit8u step_skip_pos_a; // position of 8-cyclic step skipping (always 2^x to check against mask) ++ Bits env_step_skip_a; // bitmask that determines if a step is skipped (respective bit is zero then) ++ ++#if defined(OPLTYPE_IS_OPL3) ++ bool is_4op,is_4op_attached; // base of a 4op channel/part of a 4op channel ++ Bit32s left_pan,right_pan; // opl3 stereo panning amount ++#endif ++} op_type; ++ ++// per-chip variables ++static op_type op[MAXOPERATORS]; ++ ++static Bits int_samplerate; ++ ++static Bit8u status; ++static Bit32u opl_index; ++#if defined(OPLTYPE_IS_OPL3) ++static Bit8u adlibreg[512]; // adlib register set (including second set) ++static Bit8u wave_sel[44]; // waveform selection ++#else ++static Bit8u adlibreg[256]; // adlib register set ++static Bit8u wave_sel[22]; // waveform selection ++#endif ++ ++ ++ // vibrato/tremolo increment/counter ++static Bit32u vibtab_pos; ++static Bit32u vibtab_add; ++static Bit32u tremtab_pos; ++static Bit32u tremtab_add; ++ ++ ++// enable an operator ++void enable_operator(Bitu regbase, op_type* op_pt, Bit32u act_type); ++ ++// functions to change parameters of an operator ++void change_frequency(Bitu chanbase, Bitu regbase, op_type* op_pt); ++ ++void change_attackrate(Bitu regbase, op_type* op_pt); ++void change_decayrate(Bitu regbase, op_type* op_pt); ++void change_releaserate(Bitu regbase, op_type* op_pt); ++void change_sustainlevel(Bitu regbase, op_type* op_pt); ++void change_waveform(Bitu regbase, op_type* op_pt); ++void change_keepsustain(Bitu regbase, op_type* op_pt); ++void change_vibrato(Bitu regbase, op_type* op_pt); ++void change_feedback(Bitu chanbase, op_type* op_pt); ++ + + static Bit32u generator_add; // should be a chip parameter + +diff --git a/src/opl.h b/src/opl.h +index c8e643b..cbb56ad 100644 +--- a/src/opl.h ++++ b/src/opl.h +@@ -25,11 +25,8 @@ + * Ken Silverman's official web site: "http://www.advsys.net/ken" + */ + +- +-#define fltype double +- +-#include + #include ++ + typedef uintptr_t Bitu; + typedef intptr_t Bits; + typedef uint32_t Bit32u; +@@ -39,154 +36,6 @@ typedef int16_t Bit16s; + typedef uint8_t Bit8u; + typedef int8_t Bit8s; + +- +-/* +- define attribution that inlines/forces inlining of a function (optional) +-*/ +-#define OPL_INLINE inline +- +- +-#undef NUM_CHANNELS +-#if defined(OPLTYPE_IS_OPL3) +-#define NUM_CHANNELS 18 +-#else +-#define NUM_CHANNELS 9 +-#endif +- +-#define MAXOPERATORS (NUM_CHANNELS*2) +- +- +-#define FL05 ((fltype)0.5) +-#define FL2 ((fltype)2.0) +-#define PI ((fltype)3.1415926535897932384626433832795) +- +- +-#define FIXEDPT 0x10000 // fixed-point calculations using 16+16 +-#define FIXEDPT_LFO 0x1000000 // fixed-point calculations using 8+24 +- +-#define WAVEPREC 1024 // waveform precision (10 bits) +- +-#define INTFREQU ((fltype)(14318180.0 / 288.0)) // clocking of the chip +- +- +-#define OF_TYPE_ATT 0 +-#define OF_TYPE_DEC 1 +-#define OF_TYPE_REL 2 +-#define OF_TYPE_SUS 3 +-#define OF_TYPE_SUS_NOKEEP 4 +-#define OF_TYPE_OFF 5 +- +-#define ARC_CONTROL 0x00 +-#define ARC_TVS_KSR_MUL 0x20 +-#define ARC_KSL_OUTLEV 0x40 +-#define ARC_ATTR_DECR 0x60 +-#define ARC_SUSL_RELR 0x80 +-#define ARC_FREQ_NUM 0xa0 +-#define ARC_KON_BNUM 0xb0 +-#define ARC_PERC_MODE 0xbd +-#define ARC_FEEDBACK 0xc0 +-#define ARC_WAVE_SEL 0xe0 +- +-#define ARC_SECONDSET 0x100 // second operator set for OPL3 +- +- +-#define OP_ACT_OFF 0x00 +-#define OP_ACT_NORMAL 0x01 // regular channel activated (bitmasked) +-#define OP_ACT_PERC 0x02 // percussion channel activated (bitmasked) +- +-#define BLOCKBUF_SIZE 512 +- +- +-// vibrato constants +-#define VIBTAB_SIZE 8 +-#define VIBFAC 70/50000 // no braces, integer mul/div +- +-// tremolo constants and table +-#define TREMTAB_SIZE 53 +-#define TREM_FREQ ((fltype)(3.7)) // tremolo at 3.7hz +- +- +-/* operator struct definition +- For OPL2 all 9 channels consist of two operators each, carrier and modulator. +- Channel x has operators x as modulator and operators (9+x) as carrier. +- For OPL3 all 18 channels consist either of two operators (2op mode) or four +- operators (4op mode) which is determined through register4 of the second +- adlib register set. +- Only the channels 0,1,2 (first set) and 9,10,11 (second set) can act as +- 4op channels. The two additional operators for a channel y come from the +- 2op channel y+3 so the operatorss y, (9+y), y+3, (9+y)+3 make up a 4op +- channel. +-*/ +-typedef struct operator_struct { +- Bit32s cval, lastcval; // current output/last output (used for feedback) +- Bit32u tcount, wfpos, tinc; // time (position in waveform) and time increment +- fltype amp, step_amp; // and amplification (envelope) +- fltype vol; // volume +- fltype sustain_level; // sustain level +- Bit32s mfbi; // feedback amount +- fltype a0, a1, a2, a3; // attack rate function coefficients +- fltype decaymul, releasemul; // decay/release rate functions +- Bit32u op_state; // current state of operator (attack/decay/sustain/release/off) +- Bit32u toff; +- Bit32s freq_high; // highest three bits of the frequency, used for vibrato calculations +- Bit16s* cur_wform; // start of selected waveform +- Bit32u cur_wmask; // mask for selected waveform +- Bit32u act_state; // activity state (regular, percussion) +- bool sus_keep; // keep sustain level when decay finished +- bool vibrato,tremolo; // vibrato/tremolo enable bits +- +- // variables used to provide non-continuous envelopes +- Bit32u generator_pos; // for non-standard sample rates we need to determine how many samples have passed +- Bits cur_env_step; // current (standardized) sample position +- Bits env_step_a,env_step_d,env_step_r; // number of std samples of one step (for attack/decay/release mode) +- Bit8u step_skip_pos_a; // position of 8-cyclic step skipping (always 2^x to check against mask) +- Bits env_step_skip_a; // bitmask that determines if a step is skipped (respective bit is zero then) +- +-#if defined(OPLTYPE_IS_OPL3) +- bool is_4op,is_4op_attached; // base of a 4op channel/part of a 4op channel +- Bit32s left_pan,right_pan; // opl3 stereo panning amount +-#endif +-} op_type; +- +-// per-chip variables +-Bitu chip_num; +-op_type op[MAXOPERATORS]; +- +-Bits int_samplerate; +- +-Bit8u status; +-Bit32u opl_index; +-#if defined(OPLTYPE_IS_OPL3) +-Bit8u adlibreg[512]; // adlib register set (including second set) +-Bit8u wave_sel[44]; // waveform selection +-#else +-Bit8u adlibreg[256]; // adlib register set +-Bit8u wave_sel[22]; // waveform selection +-#endif +- +- +-// vibrato/tremolo increment/counter +-Bit32u vibtab_pos; +-Bit32u vibtab_add; +-Bit32u tremtab_pos; +-Bit32u tremtab_add; +- +- +-// enable an operator +-void enable_operator(Bitu regbase, op_type* op_pt, Bit32u act_type); +- +-// functions to change parameters of an operator +-void change_frequency(Bitu chanbase, Bitu regbase, op_type* op_pt); +- +-void change_attackrate(Bitu regbase, op_type* op_pt); +-void change_decayrate(Bitu regbase, op_type* op_pt); +-void change_releaserate(Bitu regbase, op_type* op_pt); +-void change_sustainlevel(Bitu regbase, op_type* op_pt); +-void change_waveform(Bitu regbase, op_type* op_pt); +-void change_keepsustain(Bitu regbase, op_type* op_pt); +-void change_vibrato(Bitu regbase, op_type* op_pt); +-void change_feedback(Bitu chanbase, op_type* op_pt); +- + // general functions + void adlib_init(Bit32u samplerate); + void adlib_write(Bitu idx, Bit8u val); +@@ -195,8 +44,8 @@ void adlib_getsample(Bit16s* sndptr, Bits numsamples); + Bitu adlib_reg_read(Bitu port); + void adlib_write_index(Bitu port, Bit8u val); + +-#endif /* OPL_H */ +- + #define opl_init() adlib_init(OUTPUT_QUALITY * 11025) + #define opl_write(reg, val) adlib_write(reg, val) + #define opl_update(buf, num) adlib_getsample(buf, num) ++ ++#endif /* OPL_H */ -- 2.30.2