23 YMF278(
const std::string& name,
int ramSizeInKb,
27 void reset(EmuTime::param time);
28 void writeReg(uint8_t reg, uint8_t data, EmuTime::param time);
29 [[nodiscard]] uint8_t
readReg(uint8_t reg);
30 [[nodiscard]] uint8_t
peekReg(uint8_t reg)
const;
32 [[nodiscard]] uint8_t
readMem(
unsigned address)
const;
33 void writeMem(
unsigned address, uint8_t value);
37 template<
typename Archive>
38 void serialize(Archive& ar,
unsigned version);
45 [[nodiscard]] uint8_t compute_rate(
int val)
const;
46 [[nodiscard]] uint8_t compute_decay_rate(
int val)
const;
47 [[nodiscard]]
unsigned decay_rate(
int num,
int sample_rate);
48 void envelope_next(
int sample_rate);
49 [[nodiscard]] int16_t compute_vib()
const;
50 [[nodiscard]] uint16_t compute_am()
const;
52 template<
typename Archive>
53 void serialize(Archive& ar,
unsigned version);
93 void generateChannels(std::span<float*> bufs,
unsigned num)
override;
95 void writeRegDirect(uint8_t reg, uint8_t data, EmuTime::param time);
96 [[nodiscard]]
unsigned getRamAddress(
unsigned addr)
const;
97 [[nodiscard]] int16_t getSample(
const Slot& slot, uint16_t pos)
const;
98 [[nodiscard]]
static uint16_t nextPos(
const Slot& slot, uint16_t pos, uint16_t increment);
100 [[nodiscard]]
bool anyActive();
101 void keyOnHelper(Slot& slot)
const;
106 DebugRegisters(
MSXMotherBoard& motherBoard,
const std::string& name);
107 [[nodiscard]] uint8_t read(
unsigned address)
override;
108 void write(
unsigned address, uint8_t value, EmuTime::param time)
override;
112 DebugMemory(
MSXMotherBoard& motherBoard,
const std::string& name);
113 [[nodiscard]] uint8_t read(
unsigned address)
override;
114 void write(
unsigned address, uint8_t value)
override;
117 std::array<Slot, 24> slots;
127 std::array<uint8_t, 256> regs;