mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-07 22:55:40 +12:00
HLE DSP: Init/deinit sources better
This commit is contained in:
parent
5da93d17bd
commit
43a1c89478
2 changed files with 17 additions and 2 deletions
|
@ -23,6 +23,8 @@ namespace Audio {
|
||||||
u16 bufferID;
|
u16 bufferID;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int index = 0; // Index of the voice in [0, 23] for debugging
|
||||||
|
|
||||||
void reset();
|
void reset();
|
||||||
DSPSource() { reset(); }
|
DSPSource() { reset(); }
|
||||||
};
|
};
|
||||||
|
@ -58,6 +60,7 @@ namespace Audio {
|
||||||
DSPState dspState;
|
DSPState dspState;
|
||||||
|
|
||||||
std::array<std::vector<u8>, pipeCount> pipeData; // The data of each pipe
|
std::array<std::vector<u8>, pipeCount> pipeData; // The data of each pipe
|
||||||
|
std::array<Source, Audio::HLE::sourceCount> sources; // DSP voices
|
||||||
Audio::HLE::DspMemory dspRam;
|
Audio::HLE::DspMemory dspRam;
|
||||||
|
|
||||||
void resetAudioPipe();
|
void resetAudioPipe();
|
||||||
|
@ -86,7 +89,7 @@ namespace Audio {
|
||||||
void generateFrame(StereoFrame<s16>& frame);
|
void generateFrame(StereoFrame<s16>& frame);
|
||||||
void outputFrame();
|
void outputFrame();
|
||||||
public:
|
public:
|
||||||
HLE_DSP(Memory& mem, Scheduler& scheduler, DSPService& dspService) : DSPCore(mem, scheduler, dspService) {}
|
HLE_DSP(Memory& mem, Scheduler& scheduler, DSPService& dspService);
|
||||||
~HLE_DSP() override {}
|
~HLE_DSP() override {}
|
||||||
|
|
||||||
void reset() override;
|
void reset() override;
|
||||||
|
|
|
@ -14,6 +14,13 @@ namespace Audio {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HLE_DSP::HLE_DSP(Memory& mem, Scheduler& scheduler, DSPService& dspService) : DSPCore(mem, scheduler, dspService) {
|
||||||
|
// Set up source indices
|
||||||
|
for (int i = 0; i < sources.size(); i++) {
|
||||||
|
sources[i].index = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void HLE_DSP::resetAudioPipe() {
|
void HLE_DSP::resetAudioPipe() {
|
||||||
#define DSPOffset(var) (0x8000 + offsetof(Audio::HLE::SharedMemory, var) / 2)
|
#define DSPOffset(var) (0x8000 + offsetof(Audio::HLE::SharedMemory, var) / 2)
|
||||||
|
|
||||||
|
@ -56,6 +63,10 @@ namespace Audio {
|
||||||
e.clear();
|
e.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (auto& source : sources) {
|
||||||
|
source.reset();
|
||||||
|
}
|
||||||
|
|
||||||
// Note: Reset audio pipe AFTER resetting all pipes, otherwise the new data will be yeeted
|
// Note: Reset audio pipe AFTER resetting all pipes, otherwise the new data will be yeeted
|
||||||
resetAudioPipe();
|
resetAudioPipe();
|
||||||
}
|
}
|
||||||
|
@ -189,6 +200,7 @@ namespace Audio {
|
||||||
SharedMemory& write = writeRegion();
|
SharedMemory& write = writeRegion();
|
||||||
|
|
||||||
for (int source = 0; source < sourceCount; source++) {
|
for (int source = 0; source < sourceCount; source++) {
|
||||||
|
//updateSourceConfig(sources[source]);
|
||||||
Helpers::panic("Panda");
|
Helpers::panic("Panda");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue