Files
operating-system/buildroot/package/opentyrian/0001-Move-definitions-that-don-t-need-to-be-exposed-from-opl-h-to-opl-c.patch
Stefan Agner a0871be6c0 Bump buildroot to 2020.11-rc1 (#985)
* Update buildroot-patches for 2020.11-rc1 buildroot

* Update buildroot to 2020.11-rc1

Signed-off-by: Stefan Agner <stefan@agner.ch>

* Don't rely on sfdisk --list-free output

The --list-free (-F) argument does not allow machine readable mode. And
it seems that the output format changes over time (different spacing,
using size postfixes instead of raw blocks).

Use sfdisk json output and calculate free partition space ourselfs. This
works for 2.35 and 2.36 and is more robust since we rely on output which
is meant for scripts to parse.

* Migrate defconfigs for Buildroot 2020.11-rc1

In particular, rename BR2_TARGET_UBOOT_BOOT_SCRIPT(_SOURCE) to
BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT(_SOURCE).

* Rebase/remove systemd patches for systemd 246

* Drop apparmor/libapparmor from buildroot-external

* hassos-persists: use /run as directory for lockfiles

The U-Boot tools use /var/lock by default which is not created any more
by systemd by default (it is under tmpfiles legacy.conf, which we no
longer install).

* Disable systemd-update-done.service

The service is not suited for pure read-only systems. In particular the
service needs to be able to write a file in /etc and /var. Remove the
service. Note: This is a static service and cannot be removed using
systemd-preset.

* Disable apparmor.service for now

The service loads all default profiles. Some might actually cause
problems. E.g. the profile for ping seems not to match our setup for
/etc/resolv.conf:
[85503.634653] audit: type=1400 audit(1605286002.684:236): apparmor="DENIED" operation="open" profile="ping" name="/run/resolv.conf" pid=27585 comm="ping" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
2020-11-13 18:25:44 +01:00

366 lines
12 KiB
Diff

From 962ee8fc46ca51691bde1c8c1022dacbe8a037ed Mon Sep 17 00:00:00 2001
From: Carl Reinke <carlreinke@users.noreply.github.com>
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 <fontaine.fabrice@gmail.com>
---
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 <math.h>
+#include <stdbool.h>
#include <stdlib.h> // rand()
#include <string.h> // 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 <stdbool.h>
#include <stdint.h>
+
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 */