Rename APU to Apu
This commit is contained in:
@@ -14,7 +14,7 @@ namespace yaze {
|
|||||||
namespace app {
|
namespace app {
|
||||||
namespace emu {
|
namespace emu {
|
||||||
|
|
||||||
void APU::Init() {
|
void Apu::Init() {
|
||||||
// Set the clock frequency
|
// Set the clock frequency
|
||||||
clock_.SetFrequency(kApuClockSpeed);
|
clock_.SetFrequency(kApuClockSpeed);
|
||||||
|
|
||||||
@@ -27,17 +27,17 @@ void APU::Init() {
|
|||||||
[this](int16_t sample) { this->PushToAudioBuffer(sample); });
|
[this](int16_t sample) { this->PushToAudioBuffer(sample); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void APU::Reset() {
|
void Apu::Reset() {
|
||||||
clock_.ResetAccumulatedTime();
|
clock_.ResetAccumulatedTime();
|
||||||
spc700_.Reset();
|
spc700_.Reset();
|
||||||
dsp_.Reset();
|
dsp_.Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void APU::Update() {
|
void Apu::Update() {
|
||||||
auto cycles_to_run = clock_.GetCycleCount();
|
auto cycles_to_run = clock_.GetCycleCount();
|
||||||
|
|
||||||
for (auto i = 0; i < cycles_to_run; ++i) {
|
for (auto i = 0; i < cycles_to_run; ++i) {
|
||||||
// Update the APU
|
// Update the Apu
|
||||||
UpdateChannelSettings();
|
UpdateChannelSettings();
|
||||||
|
|
||||||
// Update the SPC700
|
// Update the SPC700
|
||||||
@@ -49,14 +49,14 @@ void APU::Update() {
|
|||||||
ProcessSamples();
|
ProcessSamples();
|
||||||
}
|
}
|
||||||
|
|
||||||
void APU::Notify(uint32_t address, uint8_t data) {
|
void Apu::Notify(uint32_t address, uint8_t data) {
|
||||||
if (address < 0x2140 || address > 0x2143) {
|
if (address < 0x2140 || address > 0x2143) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto offset = address - 0x2140;
|
auto offset = address - 0x2140;
|
||||||
spc700_.write(offset, data);
|
spc700_.write(offset, data);
|
||||||
|
|
||||||
// HACK - This is a temporary solution to get the APU to play audio
|
// HACK - This is a temporary solution to get the Apu to play audio
|
||||||
ports_[address - 0x2140] = data;
|
ports_[address - 0x2140] = data;
|
||||||
switch (address) {
|
switch (address) {
|
||||||
case 0x2140:
|
case 0x2140:
|
||||||
@@ -76,7 +76,7 @@ void APU::Notify(uint32_t address, uint8_t data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void APU::ProcessSamples() {
|
void Apu::ProcessSamples() {
|
||||||
// Fetch sample data from AudioRam
|
// Fetch sample data from AudioRam
|
||||||
// Iterate over all voices
|
// Iterate over all voices
|
||||||
for (uint8_t voice_num = 0; voice_num < 8; voice_num++) {
|
for (uint8_t voice_num = 0; voice_num < 8; voice_num++) {
|
||||||
@@ -91,17 +91,17 @@ void APU::ProcessSamples() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t APU::FetchSampleForVoice(uint8_t voice_num) {
|
uint8_t Apu::FetchSampleForVoice(uint8_t voice_num) {
|
||||||
uint16_t address = CalculateAddressForVoice(voice_num);
|
uint16_t address = CalculateAddressForVoice(voice_num);
|
||||||
return aram_.read(address);
|
return aram_.read(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t APU::CalculateAddressForVoice(uint8_t voice_num) {
|
uint16_t Apu::CalculateAddressForVoice(uint8_t voice_num) {
|
||||||
// TODO: Calculate the address for the specified voice
|
// TODO: Calculate the address for the specified voice
|
||||||
return voice_num;
|
return voice_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t APU::GetNextSample() {
|
int16_t Apu::GetNextSample() {
|
||||||
if (!audio_samples_.empty()) {
|
if (!audio_samples_.empty()) {
|
||||||
int16_t sample = audio_samples_.front();
|
int16_t sample = audio_samples_.front();
|
||||||
audio_samples_.erase(audio_samples_.begin());
|
audio_samples_.erase(audio_samples_.begin());
|
||||||
@@ -110,27 +110,27 @@ int16_t APU::GetNextSample() {
|
|||||||
return 0; // TODO: Return the last sample instead of 0.
|
return 0; // TODO: Return the last sample instead of 0.
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<int16_t>& APU::GetAudioSamples() const {
|
const std::vector<int16_t>& Apu::GetAudioSamples() const {
|
||||||
return audio_samples_;
|
return audio_samples_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void APU::UpdateChannelSettings() {
|
void Apu::UpdateChannelSettings() {
|
||||||
// TODO: Implement this method to update the channel settings.
|
// TODO: Implement this method to update the channel settings.
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t APU::GenerateSample(int channel) {
|
int16_t Apu::GenerateSample(int channel) {
|
||||||
// TODO: Implement this method to generate a sample for the specified channel.
|
// TODO: Implement this method to generate a sample for the specified channel.
|
||||||
}
|
}
|
||||||
|
|
||||||
void APU::ApplyEnvelope(int channel) {
|
void Apu::ApplyEnvelope(int channel) {
|
||||||
// TODO: Implement this method to apply an envelope to the specified channel.
|
// TODO: Implement this method to apply an envelope to the specified channel.
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t APU::ReadDspMemory(uint16_t address) {
|
uint8_t Apu::ReadDspMemory(uint16_t address) {
|
||||||
return dsp_.ReadGlobalReg(address);
|
return dsp_.ReadGlobalReg(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
void APU::WriteDspMemory(uint16_t address, uint8_t value) {
|
void Apu::WriteDspMemory(uint16_t address, uint8_t value) {
|
||||||
dsp_.WriteGlobalReg(address, value);
|
dsp_.WriteGlobalReg(address, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,9 +37,9 @@ const int kApuClockSpeed = 1024000; // 1.024 MHz
|
|||||||
const int apuSampleRate = 32000; // 32 KHz
|
const int apuSampleRate = 32000; // 32 KHz
|
||||||
const int apuClocksPerSample = 64; // 64 clocks per sample
|
const int apuClocksPerSample = 64; // 64 clocks per sample
|
||||||
|
|
||||||
class APU : public Observer {
|
class Apu : public Observer {
|
||||||
public:
|
public:
|
||||||
APU(MemoryImpl &memory, AudioRam &aram, Clock &clock)
|
Apu(MemoryImpl &memory, AudioRam &aram, Clock &clock)
|
||||||
: aram_(aram), clock_(clock), memory_(memory) {}
|
: aram_(aram), clock_(clock), memory_(memory) {}
|
||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class Debugger {
|
|||||||
public:
|
public:
|
||||||
Debugger() = default;
|
Debugger() = default;
|
||||||
// Attach the debugger to the emulator
|
// Attach the debugger to the emulator
|
||||||
// Debugger(CPU &cpu, PPU &ppu, APU &apu);
|
// Debugger(CPU &cpu, PPU &ppu, Apu &apu);
|
||||||
|
|
||||||
// Set a breakpoint
|
// Set a breakpoint
|
||||||
void SetBreakpoint(uint16_t address);
|
void SetBreakpoint(uint16_t address);
|
||||||
@@ -43,7 +43,7 @@ class Debugger {
|
|||||||
// References to the emulator's components
|
// References to the emulator's components
|
||||||
// CPU &cpu;
|
// CPU &cpu;
|
||||||
// PPU &ppu;
|
// PPU &ppu;
|
||||||
// APU &apu;
|
// Apu &apu;
|
||||||
|
|
||||||
// Breakpoints, watchpoints, etc.
|
// Breakpoints, watchpoints, etc.
|
||||||
// ...
|
// ...
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ uint16_t GetHeaderOffset(const Memory& memory) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void audio_callback(void* userdata, uint8_t* stream, int len) {
|
void audio_callback(void* userdata, uint8_t* stream, int len) {
|
||||||
auto* apu = static_cast<APU*>(userdata);
|
auto* apu = static_cast<Apu*>(userdata);
|
||||||
auto* buffer = reinterpret_cast<int16_t*>(stream);
|
auto* buffer = reinterpret_cast<int16_t*>(stream);
|
||||||
|
|
||||||
for (int i = 0; i < len / 2; i++) { // Assuming 16-bit samples
|
for (int i = 0; i < len / 2; i++) { // Assuming 16-bit samples
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ class SNES : public DMA {
|
|||||||
|
|
||||||
CPU cpu_{memory_, clock_};
|
CPU cpu_{memory_, clock_};
|
||||||
Ppu ppu_{memory_, clock_};
|
Ppu ppu_{memory_, clock_};
|
||||||
APU apu_{memory_, audio_ram_, clock_};
|
Apu apu_{memory_, audio_ram_, clock_};
|
||||||
|
|
||||||
// Helper classes
|
// Helper classes
|
||||||
ROMInfo rom_info_;
|
ROMInfo rom_info_;
|
||||||
|
|||||||
Reference in New Issue
Block a user