29#include <EASTL/functional.h>
101 static void dmaWrite(
uint32_t spuAddress,
const void* ramAddress,
size_t dataSize,
size_t blockSize = 0);
120 void dmaWrite(
uint32_t spuAddress,
const void* ramAddress,
size_t dataSize, eastl::function<
void()>&& callback,
146 eastl::function<
void()> m_dmaCallback =
nullptr;
147 unsigned m_dmaEventSlot = 0;
148 bool m_transferPending =
false;
149 bool m_fromISR =
false;
150 bool m_initialized =
false;
static void dmaWrite(uint32_t spuAddress, const void *ramAddress, size_t dataSize, size_t blockSize=0)
Synchronously uploads data to the SPU's sound RAM.
Definition spu.cpp:85
static constexpr uint32_t SOUND_RAM_SIZE
The size of the SPU's sound RAM, in bytes.
Definition spu.hh:44
static void initialize()
Resets the SPU to a known, silent state.
Definition spu.cpp:127
static constexpr size_t MAX_DMA_BLOCK_SIZE
The largest DMA block size the SPU will accept, in bytes.
Definition spu.hh:61
static uint32_t getNextFreeChannel()
Definition spu.cpp:214
static constexpr uint32_t NO_FREE_CHANNEL
Definition spu.hh:141
static constexpr uint16_t BASE_ALLOC_ADDR
Definition spu.hh:143
static constexpr uint32_t BASE_SAMPLE_RATE
Definition spu.hh:142
void initAsync()
Enables asynchronous DMA transfers for this SPU object.
Definition spu.cpp:158
static void playADPCM(uint8_t channelId, uint32_t spuRamAddress, const ChannelPlaybackConfig &config, bool hardCut)
Starts playing an ADPCM sample on the given channel.
Definition spu.cpp:187
static void silenceChannels(uint32_t channelMask)
Silences the given channels.
Definition spu.cpp:108
static constexpr size_t ADPCM_BLOCK_SIZE
The size of a single ADPCM block, in bytes.
Definition spu.hh:53
DmaCallback
Definition kernel.hh:38
@ FROM_MAIN_LOOP
Definition kernel.hh:40
uint16_t volumeRight
Definition spu.hh:125
uint32_t adsr
Definition spu.hh:126
FixedPoint< 12, uint16_t > sampleRate
Definition spu.hh:124
uint16_t volumeLeft
Definition spu.hh:125
void uint32_t(classId, spec)