remove clock from apu, use std::array
This commit is contained in:
@@ -52,8 +52,8 @@ void Apu::Reset() {
|
|||||||
rom_readable_ = true;
|
rom_readable_ = true;
|
||||||
dsp_adr_ = 0;
|
dsp_adr_ = 0;
|
||||||
cycles_ = 0;
|
cycles_ = 0;
|
||||||
memset(in_ports_, 0, sizeof(in_ports_));
|
std::fill(in_ports_.begin(), in_ports_.end(), 0);
|
||||||
memset(out_ports_, 0, sizeof(out_ports_));
|
std::fill(out_ports_.begin(), out_ports_.end(), 0);
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
timer_[i].cycles = 0;
|
timer_[i].cycles = 0;
|
||||||
timer_[i].divider = 0;
|
timer_[i].divider = 0;
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
|
|
||||||
#include "app/emu/audio/dsp.h"
|
#include "app/emu/audio/dsp.h"
|
||||||
#include "app/emu/audio/spc700.h"
|
#include "app/emu/audio/spc700.h"
|
||||||
#include "app/emu/cpu/clock.h"
|
|
||||||
#include "app/emu/memory/memory.h"
|
#include "app/emu/memory/memory.h"
|
||||||
|
|
||||||
namespace yaze {
|
namespace yaze {
|
||||||
@@ -52,7 +51,7 @@ typedef struct Timer {
|
|||||||
*/
|
*/
|
||||||
class Apu {
|
class Apu {
|
||||||
public:
|
public:
|
||||||
Apu(MemoryImpl &memory, Clock &clock) : clock_(clock), memory_(memory) {}
|
Apu(MemoryImpl &memory) : memory_(memory) {}
|
||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
void Reset();
|
void Reset();
|
||||||
@@ -67,25 +66,22 @@ class Apu {
|
|||||||
uint8_t Read(uint16_t address);
|
uint8_t Read(uint16_t address);
|
||||||
void Write(uint16_t address, uint8_t data);
|
void Write(uint16_t address, uint8_t data);
|
||||||
|
|
||||||
void UpdateClock(int delta_time) { clock_.UpdateClock(delta_time); }
|
|
||||||
|
|
||||||
auto dsp() -> Dsp & { return dsp_; }
|
auto dsp() -> Dsp & { return dsp_; }
|
||||||
auto spc700() -> Spc700 & { return spc700_; }
|
auto spc700() -> Spc700 & { return spc700_; }
|
||||||
|
|
||||||
// Port buffers (equivalent to $2140 to $2143 for the main CPU)
|
// Port buffers (equivalent to $2140 to $2143 for the main CPU)
|
||||||
uint8_t in_ports_[6]; // includes 2 bytes of ram
|
std::array<uint8_t, 6> in_ports_; // includes 2 bytes of ram
|
||||||
uint8_t out_ports_[4];
|
std::array<uint8_t, 4> out_ports_;
|
||||||
std::vector<uint8_t> ram = std::vector<uint8_t>(0x10000, 0);
|
std::vector<uint8_t> ram = std::vector<uint8_t>(0x10000, 0);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Timer timer_[3];
|
|
||||||
uint32_t cycles_;
|
|
||||||
uint8_t dsp_adr_;
|
|
||||||
bool rom_readable_ = false;
|
bool rom_readable_ = false;
|
||||||
|
|
||||||
// Member variables to store internal APU state and resources
|
uint8_t dsp_adr_ = 0;
|
||||||
Clock &clock_;
|
uint32_t cycles_ = 0;
|
||||||
|
|
||||||
MemoryImpl &memory_;
|
MemoryImpl &memory_;
|
||||||
|
std::array<Timer, 3> timer_;
|
||||||
|
|
||||||
ApuCallbacks callbacks_ = {
|
ApuCallbacks callbacks_ = {
|
||||||
[&](uint16_t adr, uint8_t val) { SpcWrite(adr, val); },
|
[&](uint16_t adr, uint8_t val) { SpcWrite(adr, val); },
|
||||||
|
|||||||
@@ -81,7 +81,6 @@ class SNES {
|
|||||||
// Components of the SNES
|
// Components of the SNES
|
||||||
ClockImpl clock_;
|
ClockImpl clock_;
|
||||||
Debugger debugger;
|
Debugger debugger;
|
||||||
memory::RomInfo rom_info_;
|
|
||||||
memory::MemoryImpl memory_;
|
memory::MemoryImpl memory_;
|
||||||
|
|
||||||
memory::CpuCallbacks cpu_callbacks_ = {
|
memory::CpuCallbacks cpu_callbacks_ = {
|
||||||
@@ -91,7 +90,7 @@ class SNES {
|
|||||||
};
|
};
|
||||||
Cpu cpu_{memory_, clock_, cpu_callbacks_};
|
Cpu cpu_{memory_, clock_, cpu_callbacks_};
|
||||||
video::Ppu ppu_{memory_, clock_};
|
video::Ppu ppu_{memory_, clock_};
|
||||||
audio::Apu apu_{memory_, clock_};
|
audio::Apu apu_{memory_};
|
||||||
|
|
||||||
// Currently loaded ROM
|
// Currently loaded ROM
|
||||||
std::vector<uint8_t> rom_data;
|
std::vector<uint8_t> rom_data;
|
||||||
|
|||||||
Reference in New Issue
Block a user