62 void reset(EmuTime::param time);
63 void writeReg(uint8_t r, uint8_t v, EmuTime::param time);
66 template<
typename Archive>
67 void serialize(Archive& ar,
unsigned version);
71 struct YM2151Operator {
72 template<
typename Archive>
73 void serialize(Archive& ar,
unsigned version);
126 void setConnect(std::span<YM2151Operator, 4> o,
int cha,
int v);
129 void generateChannels(std::span<float*> bufs,
unsigned num)
override;
131 void callback(uint8_t flag)
override;
132 void setStatus(uint8_t flags);
133 void resetStatus(uint8_t flags);
136 void envelopeKONKOFF(std::span<YM2151Operator, 4> op,
int v);
137 static void refreshEG(std::span<YM2151Operator, 4> op);
138 [[nodiscard]]
int opCalc(YM2151Operator& op,
unsigned env,
int pm);
139 [[nodiscard]]
int opCalc1(YM2151Operator& op,
unsigned env,
int pm);
140 [[nodiscard]]
inline unsigned volumeCalc(YM2151Operator& op,
unsigned AM);
141 inline void keyOn(YM2151Operator& op,
unsigned keySet);
142 inline void keyOff(YM2151Operator& op,
unsigned keyClear);
145 void chanCalc(
unsigned chan);
151 [[nodiscard]]
bool checkMuteHelper();
156 const std::unique_ptr<EmuTimer> timer1;
157 const std::unique_ptr<EmuTimer> timer2;
159 std::array<YM2151Operator, 32> oper;
161 std::array<unsigned, 16> pan;
168 unsigned lfo_overflow;
170 unsigned lfo_counter;
171 unsigned lfo_counter_add;
188 std::array<int, 8> chanOut;
192 uint16_t timer_A_val{0};
202 std::array<uint8_t, 256> regs = {};
uint8_t readStatus() const
void reset(EmuTime::param time)
void serialize(Archive &ar, unsigned version)
YM2151(const std::string &name, static_string_view desc, const DeviceConfig &config, EmuTime::param time, Variant variant)
void writeReg(uint8_t r, uint8_t v, EmuTime::param time)
This file implemented 3 utility functions:
IntHelper< IRQSource > IRQHelper