42 uint8_t lastpoke[0x20];
47 virtual uint8_t read(uint_least8_t addr) = 0;
48 virtual void writeReg(uint_least8_t addr, uint8_t data) = 0;
50 virtual void reset(uint8_t volume) = 0;
55 std::fill(std::begin(lastpoke), std::end(lastpoke), 0);
60 void poke(uint_least16_t address, uint8_t value)
override
62 lastpoke[address & 0x1f] = value;
63 writeReg(address & 0x1f, value);
65 uint8_t
peek(uint_least16_t address)
override {
return read(address & 0x1f); }
67 void getStatus(uint8_t regs[0x20])
const { std::memcpy(regs, lastpoke, 0x20); }