mirror of
https://github.com/LNH-team/pico-launcher.git
synced 2025-12-05 13:16:06 +01:00
38 lines
697 B
C++
38 lines
697 B
C++
#pragma once
|
|
#include <libtwl/gfx/gfxOam.h>
|
|
#include <libtwl/dma/dmaNitro.h>
|
|
#include <string.h>
|
|
|
|
/// @brief Class for managing oams and affine matrices.
|
|
class alignas(32) OamManager
|
|
{
|
|
public:
|
|
OamManager()
|
|
{
|
|
Clear();
|
|
}
|
|
|
|
gfx_oam_entry_t* AllocOams(u32 count)
|
|
{
|
|
_oamPtr -= count;
|
|
return _oamPtr;
|
|
}
|
|
|
|
gfx_oam_mtx_t* AllocMatrices(u32 count, u32& mtxId)
|
|
{
|
|
mtxId = _mtxIdx;
|
|
gfx_oam_mtx_t* result = &_oamTable.mtxs[_mtxIdx];
|
|
_mtxIdx += count;
|
|
return result;
|
|
}
|
|
|
|
void Apply(vu16* dst);
|
|
|
|
void Clear();
|
|
|
|
private:
|
|
gfx_oam_table_t _oamTable alignas(32);
|
|
gfx_oam_entry_t* _oamPtr;
|
|
u32 _mtxIdx;
|
|
};
|