Update teakra

This commit is contained in:
wheremyfoodat 2025-07-08 20:28:21 +03:00
parent 518b279139
commit 9ef7db63ef
6 changed files with 84 additions and 29 deletions

View file

@ -66,6 +66,21 @@ namespace Audio {
virtual Type getType() = 0;
virtual void* getRegisters() { return nullptr; }
// Read a word from program memory. By default, just perform a regular DSP RAM read for the HLE cores
// The LLE cores translate the address, accounting for the way Teak memory is mapped
virtual u16 readProgramWord(u32 address) {
u8* dspRam = getDspMemory();
auto readByte = [&](u32 addr) {
if (addr >= 256_KB) return u8(0);
return dspRam[addr];
};
u16 lsb = u16(readByte(address));
u16 msb = u16(readByte(address + 1));
return u16(lsb | (msb << 8));
}
};
std::unique_ptr<DSPCore> makeDSPCore(EmulatorConfig& config, Memory& mem, Scheduler& scheduler, DSPService& dspService);

View file

@ -92,6 +92,7 @@ namespace Audio {
u8* getDspMemory() override { return teakra.GetDspMemory().data(); }
void* getRegisters() override;
DSPCore::Type getType() override { return DSPCore::Type::Teakra; }
u16 readProgramWord(u32 address) override { return teakra.ProgramRead(address); }
u16 recvData(u32 regId) override { return teakra.RecvData(regId); }
bool recvDataIsReady(u32 regId) override { return teakra.RecvDataIsReady(regId); }

View file

@ -5,7 +5,6 @@
#include <QScrollBar>
#include <QWidget>
#include "capstone.hpp"
#include "emulator.hpp"
#include "panda_qt/disabled_widget_overlay.hpp"
@ -20,10 +19,10 @@ class DSPDebugger : public QWidget {
QLineEdit* addressInput;
DisabledWidgetOverlay* disabledOverlay;
DisabledWidgetOverlay* disabledRegisterEditOverlay;
bool enabled = false;
bool followPC = false;
Common::CapstoneDisassembler disassembler;
public:
DSPDebugger(Emulator* emulator, QWidget* parent = nullptr);