remove clock from apu, use std::array

This commit is contained in:
scawful
2024-04-25 23:51:37 -04:00
parent 40d7a899ac
commit 89edcaa2a3
3 changed files with 10 additions and 15 deletions

View File

@@ -52,8 +52,8 @@ void Apu::Reset() {
rom_readable_ = true;
dsp_adr_ = 0;
cycles_ = 0;
memset(in_ports_, 0, sizeof(in_ports_));
memset(out_ports_, 0, sizeof(out_ports_));
std::fill(in_ports_.begin(), in_ports_.end(), 0);
std::fill(out_ports_.begin(), out_ports_.end(), 0);
for (int i = 0; i < 3; i++) {
timer_[i].cycles = 0;
timer_[i].divider = 0;

View File

@@ -7,7 +7,6 @@
#include "app/emu/audio/dsp.h"
#include "app/emu/audio/spc700.h"
#include "app/emu/cpu/clock.h"
#include "app/emu/memory/memory.h"
namespace yaze {
@@ -52,7 +51,7 @@ typedef struct Timer {
*/
class Apu {
public:
Apu(MemoryImpl &memory, Clock &clock) : clock_(clock), memory_(memory) {}
Apu(MemoryImpl &memory) : memory_(memory) {}
void Init();
void Reset();
@@ -67,25 +66,22 @@ class Apu {
uint8_t Read(uint16_t address);
void Write(uint16_t address, uint8_t data);
void UpdateClock(int delta_time) { clock_.UpdateClock(delta_time); }
auto dsp() -> Dsp & { return dsp_; }
auto spc700() -> Spc700 & { return spc700_; }
// Port buffers (equivalent to $2140 to $2143 for the main CPU)
uint8_t in_ports_[6]; // includes 2 bytes of ram
uint8_t out_ports_[4];
std::array<uint8_t, 6> in_ports_; // includes 2 bytes of ram
std::array<uint8_t, 4> out_ports_;
std::vector<uint8_t> ram = std::vector<uint8_t>(0x10000, 0);
private:
Timer timer_[3];
uint32_t cycles_;
uint8_t dsp_adr_;
bool rom_readable_ = false;
// Member variables to store internal APU state and resources
Clock &clock_;
uint8_t dsp_adr_ = 0;
uint32_t cycles_ = 0;
MemoryImpl &memory_;
std::array<Timer, 3> timer_;
ApuCallbacks callbacks_ = {
[&](uint16_t adr, uint8_t val) { SpcWrite(adr, val); },