1#ifndef YAZE_APP_EMU_APU_H_
2#define YAZE_APP_EMU_APU_H_
61 uint8_t
SpcRead(uint16_t address);
62 void SpcWrite(uint16_t address, uint8_t data);
67 uint8_t
Read(uint16_t address);
68 void Write(uint16_t address, uint8_t data);
81 void GetSamples(int16_t *buffer,
int count,
bool loop =
false) {
84 void WriteDma(uint16_t address,
const uint8_t *data,
int count) {
85 for (
int i = 0; i < count; i++) {
86 ram[address + i] = data[i];
93 std::vector<uint8_t>
ram = std::vector<uint8_t>(0x10000, 0);
112 [&](uint16_t adr, uint8_t val) {
SpcWrite(adr, val); },
113 [&](uint16_t adr) {
return SpcRead(adr); },
114 [&](
bool waiting) {
SpcIdle(waiting); },
The Apu class represents the Audio Processing Unit (APU) of a system.
std::array< Timer, 3 > timer_
uint8_t SpcRead(uint16_t address)
uint8_t Read(uint16_t address)
debug::ApuHandshakeTracker * handshake_tracker_
void Write(uint16_t address, uint8_t data)
void SpcIdle(bool waiting)
auto spc700() -> Spc700 &
void set_handshake_tracker(debug::ApuHandshakeTracker *tracker)
void RunCycles(uint64_t cycles)
void SpcWrite(uint16_t address, uint8_t data)
void WriteDma(uint16_t address, const uint8_t *data, int count)
std::vector< uint8_t > ram
uint8_t GetControl() const
std::array< uint8_t, 4 > out_ports_
void GetSamples(int16_t *buffer, int count, bool loop=false)
uint64_t GetCycles() const
uint8_t GetStatus() const
std::array< uint8_t, 6 > in_ports_
void GetSamples(int16_t *sample_data, int samples_per_frame, bool pal_timing)
Implementation of the Memory interface for emulating memory in a SNES system.
The Spc700 class represents the SPC700 processor.
IPL ROM handshake tracker.
Main namespace for the application.