pokeplatinum/include/buffer_manager.h
2024-07-06 14:40:34 -07:00

31 lines
1009 B
C

#ifndef POKEPLATINUM_BUFFER_MANAGER_H
#define POKEPLATINUM_BUFFER_MANAGER_H
#include "constants/heap.h"
#define BUFFER_MANAGER_MODE_SINGLE 0
#define BUFFER_MANAGER_MODE_DOUBLE 1
enum BufferManagerDMAType {
BUFFER_MANAGER_DMA_TYPE_16BIT = 0,
BUFFER_MANAGER_DMA_TYPE_32BIT = 1
};
typedef struct BufferManager {
void *buffers[2];
u8 writeBuffer;
u8 mode;
u8 padding[2];
} BufferManager;
BufferManager *BufferManager_New(enum HeapId heapID, void *buffer1, void *buffer2);
void BufferManager_Delete(BufferManager *bufferManager);
void *BufferManager_GetWriteBuffer(const BufferManager *bufferManager);
const void *BufferManager_GetReadBuffer(const BufferManager *bufferManager);
void BufferManager_SetMode(BufferManager *bufferManager, u8 mode);
void BufferManager_SwapBuffers(BufferManager *bufferManager);
void BufferManager_StopDMA(void);
void BufferManager_StartDMA(const void *src, void *dst, int size, enum BufferManagerDMAType dmaType);
#endif // POKEPLATINUM_BUFFER_MANAGER_H