Better DSP scheduling

This commit is contained in:
wheremyfoodat 2024-02-18 22:22:00 +02:00
parent f58354af06
commit 33eb096ef8
8 changed files with 44 additions and 27 deletions

View file

@ -65,14 +65,22 @@ namespace Audio {
bool signalledData;
bool signalledSemaphore;
// Run 1 slice of DSP instructions
void runSlice() {
if (running) {
teakra.Run(Audio::lleSlice);
}
}
public:
TeakraDSP(Memory& mem, DSPService& dspService);
TeakraDSP(Memory& mem, Scheduler& scheduler, DSPService& dspService);
void reset() override;
// Run 1 slice of DSP instructions and schedule the next audio frame
void runAudioFrame() override {
if (running) {
teakra.Run(16384);
}
runSlice();
scheduler.addEvent(Scheduler::EventType::RunDSP, scheduler.currentTimestamp + Audio::lleSlice * 2);
}
u8* getDspMemory() override { return teakra.GetDspMemory().data(); }