diff --git a/externals/teakra b/externals/teakra index 97f9ec617..343bad999 160000 --- a/externals/teakra +++ b/externals/teakra @@ -1 +1 @@ -Subproject commit 97f9ec6171882ee65fe6a011af82b96cfb98cff0 +Subproject commit 343bad999d53279b5ed966db3f36e2d1c6f5d85b diff --git a/src/audio_core/lle/lle.cpp b/src/audio_core/lle/lle.cpp index 2defd14ed..603e9fa80 100644 --- a/src/audio_core/lle/lle.cpp +++ b/src/audio_core/lle/lle.cpp @@ -153,7 +153,12 @@ struct DspLle::Impl final { return &memory[DspDataOffset + baddr]; } - PipeStatus GetPipeStatus(u8 pipe_index, PipeDirection direction) { + const u8* GetDspDataPointer(u32 baddr) const { + auto& memory = teakra.GetDspMemory(); + return &memory[DspDataOffset + baddr]; + } + + PipeStatus GetPipeStatus(u8 pipe_index, PipeDirection direction) const { u8 slot_index = PipeIndexToSlotIndex(pipe_index, direction); PipeStatus pipe_status; std::memcpy(&pipe_status, @@ -249,7 +254,7 @@ struct DspLle::Impl final { } return data; } - u16 GetPipeReadableSize(u8 pipe_index) { + u16 GetPipeReadableSize(u8 pipe_index) const { PipeStatus pipe_status = GetPipeStatus(pipe_index, PipeDirection::DSPtoCPU); u16 size = pipe_status.write_bptr - pipe_status.read_bptr; if (pipe_status.IsWrapped()) { @@ -307,7 +312,7 @@ struct DspLle::Impl final { return; } - // Send finalization signal + // Send finalization signal via command/reply register 2 constexpr u16 FinalizeSignal = 0x8000; while (!teakra.SendDataIsEmpty(2)) RunTeakraSlice();