Remove AudioRam in favor of standard std::vector for spc700/dsp

This commit is contained in:
scawful
2024-04-24 10:08:57 -04:00
parent bd6fc2e8f1
commit 05df364ecb
4 changed files with 10 additions and 17 deletions

View File

@@ -193,10 +193,10 @@ void Dsp::HandleEcho() {
int echoR = clamp16(echoOutR + clip16((sumR * feedbackVolume) >> 7)) & ~1;
// write it to ram
if (echoWrites) {
aram_.write(adr, echoL & 0xff);
aram_.write((adr + 1) & 0xffff, echoL >> 8);
aram_.write((adr + 2) & 0xffff, echoR & 0xff);
aram_.write((adr + 3) & 0xffff, echoR >> 8);
aram_[adr] = echoL & 0xff;
aram_[(adr + 1) & 0xffff] = echoL >> 8;
aram_[(adr + 2) & 0xffff] = echoR & 0xff;
aram_[(adr + 3) & 0xffff] = echoR >> 8;
}
// handle indexes
if (echoBufferIndex == 0) {

View File

@@ -85,7 +85,7 @@ typedef struct DspChannel {
class Dsp {
public:
Dsp(AudioRam& aram) : aram_(aram) {}
Dsp(std::vector<uint8_t>& aram) : aram_(aram) {}
void Reset();
@@ -114,7 +114,7 @@ class Dsp {
int16_t sample_buffer_[0x400 * 2]; // (1024 samples, *2 for stereo)
int16_t sample_offset_; // current offset in samplebuffer
AudioRam& aram_;
std::vector<uint8_t>& aram_;
// mirror ram
uint8_t ram[0x80];

View File

@@ -21,7 +21,6 @@ void Spc700::Reset(bool hard) {
Y = 0;
SP = 0x00;
PSW = ByteToFlags(0x00);
aram_.reset();
}
stopped_ = false;
reset_wanted_ = true;
@@ -251,7 +250,6 @@ void Spc700::ExecuteInstructions(uint8_t opcode) {
A <<= 1;
PSW.Z = (A == 0);
PSW.N = (A & 0x80);
;
break;
}
case 0x1d: { // decx imp
@@ -674,7 +672,6 @@ void Spc700::ExecuteInstructions(uint8_t opcode) {
PSW.C = newC;
PSW.Z = (A == 0);
PSW.N = (A & 0x80);
;
break;
}
case 0x7d: { // movax imp
@@ -682,7 +679,6 @@ void Spc700::ExecuteInstructions(uint8_t opcode) {
A = X;
PSW.Z = (A == 0);
PSW.N = (A & 0x80);
;
break;
}
case 0x7e: { // cmpy dp
@@ -1282,7 +1278,7 @@ void Spc700::ExecuteInstructions(uint8_t opcode) {
break;
}
LogInstruction(initialPC, opcode);
//LogInstruction(initialPC, opcode);
}
void Spc700::LogInstruction(uint16_t initial_pc, uint8_t opcode) {
@@ -1310,7 +1306,7 @@ void Spc700::LogInstruction(uint16_t initial_pc, uint8_t opcode) {
std::cerr << log_entry << std::endl;
// Append the log entry to the log
log_.push_back(log_entry);
// log_.push_back(log_entry);
}
} // namespace audio

View File

@@ -71,7 +71,6 @@ typedef struct ApuCallbacks {
*/
class Spc700 {
private:
AudioRam& aram_;
ApuCallbacks callbacks_;
std::vector<std::string> log_;
@@ -87,8 +86,7 @@ class Spc700 {
0xDD, 0x5D, 0xD0, 0xDB, 0x1F, 0x00, 0x00, 0xC0, 0xFF};
public:
explicit Spc700(AudioRam& aram, ApuCallbacks& callbacks)
: aram_(aram), callbacks_(callbacks) {}
explicit Spc700(ApuCallbacks& callbacks) : callbacks_(callbacks) {}
// Registers
uint8_t A = 0x00; // 8-bit accumulator
@@ -146,8 +144,7 @@ class Spc700 {
}
uint8_t ReadOpcode() {
uint8_t opcode = read(PC);
PC++;
uint8_t opcode = read(PC++);
return opcode;
}