diff options
Diffstat (limited to 'arm9/lib/libnns/include')
-rw-r--r-- | arm9/lib/libnns/include/NNS_FND_allocator.h | 34 | ||||
-rw-r--r-- | arm9/lib/libnns/include/NNS_FND_expheap.h | 55 | ||||
-rw-r--r-- | arm9/lib/libnns/include/NNS_FND_heapcommon.h | 26 | ||||
-rw-r--r-- | arm9/lib/libnns/include/NNS_FND_list.h | 20 | ||||
-rw-r--r-- | arm9/lib/libnns/include/NNS_SND_arc.h | 39 | ||||
-rw-r--r-- | arm9/lib/libnns/include/NNS_SND_arc_loader.h | 12 | ||||
-rw-r--r-- | arm9/lib/libnns/include/NNS_SND_heap.h | 11 | ||||
-rw-r--r-- | arm9/lib/libnns/include/NNS_g2d.h | 212 |
8 files changed, 409 insertions, 0 deletions
diff --git a/arm9/lib/libnns/include/NNS_FND_allocator.h b/arm9/lib/libnns/include/NNS_FND_allocator.h new file mode 100644 index 00000000..eb17fa70 --- /dev/null +++ b/arm9/lib/libnns/include/NNS_FND_allocator.h @@ -0,0 +1,34 @@ +#ifndef GUARD_NNS_FND_ALLOCATOR_H +#define GUARD_NNS_FND_ALLOCATOR_H + +#include "NNS_FND_heapcommon.h" + +typedef struct NNSFndAllocator NNSFndAllocator; + +typedef void* (*NNSFndFuncAllocatorAlloc)( + NNSFndAllocator* pAllocator, + u32 size); + +typedef void (*NNSFndFuncAllocatorFree)( + NNSFndAllocator* pAllocator, + void* memBlock); + +typedef struct NNSFndAllocatorFunc NNSFndAllocatorFunc; + +struct NNSFndAllocatorFunc +{ + NNSFndFuncAllocatorAlloc pfAlloc; + NNSFndFuncAllocatorFree pfFree; +}; + +struct NNSFndAllocator +{ + NNSFndAllocatorFunc const * pFunc; + void* pHeap; + u32 heapParam1; + u32 heapParam2; +}; + +void NNS_FndInitAllocatorForExpHeap(NNSFndAllocator * pAllocator, NNSFndHeapHandle heap, int alignment); + +#endif //GUARD_NNS_FND_ALLOCATOR_H diff --git a/arm9/lib/libnns/include/NNS_FND_expheap.h b/arm9/lib/libnns/include/NNS_FND_expheap.h new file mode 100644 index 00000000..bdc3fcc4 --- /dev/null +++ b/arm9/lib/libnns/include/NNS_FND_expheap.h @@ -0,0 +1,55 @@ +#ifndef GUARD_NNS_FND_EXPHEAP_H +#define GUARD_NNS_FND_EXPHEAP_H + +#include "NNS_FND_heapcommon.h" + +typedef struct NNSiFndExpHeapMBlockHead NNSiFndExpHeapMBlockHead; + +struct NNSiFndExpHeapMBlockHead +{ + u16 signature; // Signature + u16 attribute; // Attribute + // [8:groupID] + // [7:alignment] + // [1:temporary flag] + + u32 blockSize; // Block size (data area only) + + NNSiFndExpHeapMBlockHead* pMBHeadPrev; // Previous block + NNSiFndExpHeapMBlockHead* pMBHeadNext; // Next block +}; + +typedef struct NNSiFndExpMBlockList NNSiFndExpMBlockList; + +struct NNSiFndExpMBlockList +{ + NNSiFndExpHeapMBlockHead* head; // Pointer for memory block linked to header + NNSiFndExpHeapMBlockHead* tail; // Pointer to the memory block linked to the tail of the expanded heap +}; + +typedef struct NNSiFndExpHeapHead NNSiFndExpHeapHead; + +struct NNSiFndExpHeapHead +{ + NNSiFndExpMBlockList mbFreeList; // Free list + NNSiFndExpMBlockList mbUsedList; // Used list + + u16 groupID; // Current group ID (lower 8 bits only) + u16 feature; // Attribute +}; + +NNSFndHeapHandle NNS_FndCreateExpHeapEx(void *startAddress, u32 size, u32 optFlag); +void *NNS_FndAllocFromExpHeapEx(NNSFndHeapHandle heap, u32 size, int alignment); +void NNS_FndDestroyExpHeap(NNSFndHeapHandle heap); +void NNS_FndFreeToExpHeap(NNSFndHeapHandle heap, void *memBlock); +u32 NNS_FndGetTotalFreeSizeForExpHeap(NNSFndHeapHandle heap); +u32 NNS_FndGetSizeForMBlockExpHeap(const void *memBlock); +void NNS_FndResizeForMBlockExpHeap(NNSFndHeapHandle heap, void *memBlock, u32 size); + +#define NNS_FndCreateExpHeap(startAddress, size) \ + NNS_FndCreateExpHeapEx(startAddress, size, 0) +#define NNS_FndAllocFromExpHeap(heap, size) \ + NNS_FndAllocFromExpHeapEx(heap, size, NNS_FND_HEAP_DEFAULT_ALIGNMENT) + + +#endif //GUARD_NNS_FND_EXPHEAP_H diff --git a/arm9/lib/libnns/include/NNS_FND_heapcommon.h b/arm9/lib/libnns/include/NNS_FND_heapcommon.h new file mode 100644 index 00000000..e6fab69c --- /dev/null +++ b/arm9/lib/libnns/include/NNS_FND_heapcommon.h @@ -0,0 +1,26 @@ +#ifndef GUARD_NNS_FND_HEAPCOMMON_H +#define GUARD_NNS_FND_HEAPCOMMON_H + +#include "NNS_FND_list.h" + +#define NNS_FND_HEAP_DEFAULT_ALIGNMENT 4 + +typedef struct NNSiFndHeapHead NNSiFndHeapHead; + +struct NNSiFndHeapHead +{ + u32 signature; + + NNSFndLink link; + NNSFndList childList; + + void* heapStart; // Heap start address + void* heapEnd; // Heap end (+1) address + + u32 attribute; // Attribute + // [8:Option flag] +}; + +typedef NNSiFndHeapHead* NNSFndHeapHandle; // Type to represent heap handle + +#endif //GUARD_NNS_FND_HEAPCOMMON_H diff --git a/arm9/lib/libnns/include/NNS_FND_list.h b/arm9/lib/libnns/include/NNS_FND_list.h new file mode 100644 index 00000000..5fec2fdf --- /dev/null +++ b/arm9/lib/libnns/include/NNS_FND_list.h @@ -0,0 +1,20 @@ +#ifndef GUARD_NNS_FND_LIST_H +#define GUARD_NNS_FND_LIST_H + +typedef struct +{ + void* prevObject; // Pointer to the previous linked object. + void* nextObject; // Pointer to the next linked object. + +} NNSFndLink; + +typedef struct +{ + void* headObject; // Pointer for the object linked to the top of the list. + void* tailObject; // Pointer for the object linked to the end of the list. + u16 numObjects; // Number of objects linked in the list. + u16 offset; // Offset for NNSFndLink type structure member. + +} NNSFndList; + +#endif //GUARD_NNS_FND_LIST_H diff --git a/arm9/lib/libnns/include/NNS_SND_arc.h b/arm9/lib/libnns/include/NNS_SND_arc.h new file mode 100644 index 00000000..5298d805 --- /dev/null +++ b/arm9/lib/libnns/include/NNS_SND_arc.h @@ -0,0 +1,39 @@ +#ifndef GUARD_NNS_SND_ARC_H +#define GUARD_NNS_SND_ARC_H + +#include "SND_main.h" +#include "FS_file.h" + +typedef struct NNSSndArcHeader +{ + struct SNDBinaryFileHeader fileHeader; + u32 symbolDataOffset; + u32 symbolDataSize; + u32 infoOffset; + u32 infoSize; + u32 fatOffset; + u32 fatSize; + u32 fileImageOffset; + u32 fileImageSize; +} NNSSndArcHeader; + +typedef struct NNSSndArc +{ + NNSSndArcHeader header; + BOOL file_open; + FSFile file; + FSFileID fileId; + struct NNSSndArcFat* fat; + struct NNSSndArcSymbol* symbol; + struct NNSSndArcInfo* info; +} NNSSndArc; + +void NNS_SndInit(void); +void NNS_SndArcInit(NNSSndArc *, const char *, void *, u32); +void NNS_SndArcPlayerSetup(void *); +void NNS_SndMain(void); +void NNS_SndHandleInit(u32 *); +void NNS_SndPlayerStopSeqByPlayerNo(int playerNo, int fadeFrame); +void NNS_SndHandleReleaseSeq(u32 *); + +#endif //GUARD_NNS_SND_ARC_H diff --git a/arm9/lib/libnns/include/NNS_SND_arc_loader.h b/arm9/lib/libnns/include/NNS_SND_arc_loader.h new file mode 100644 index 00000000..7d1e2787 --- /dev/null +++ b/arm9/lib/libnns/include/NNS_SND_arc_loader.h @@ -0,0 +1,12 @@ +#ifndef GUARD_NNS_SND_ARC_LOADER_H +#define GUARD_NNS_SND_ARC_LOADER_H + +#include "NNS_SND_heap.h" + +BOOL NNS_SndArcLoadGroup(int groupNo, NNSSndHeapHandle * heap); +BOOL NNS_SndArcLoadSeq(int seqNo, NNSSndHeapHandle * heap); +BOOL NNS_SndArcLoadSeqEx(int seqNo, u32 loadFlag, NNSSndHeapHandle * heap); +BOOL NNS_SndArcLoadWaveArc(int waveArcNo, NNSSndHeapHandle * heap); +BOOL NNS_SndArcLoadBank(int bankNo, NNSSndHeapHandle * heap); + +#endif //GUARD_NNS_SND_ARC_LOADER_H diff --git a/arm9/lib/libnns/include/NNS_SND_heap.h b/arm9/lib/libnns/include/NNS_SND_heap.h new file mode 100644 index 00000000..2909d662 --- /dev/null +++ b/arm9/lib/libnns/include/NNS_SND_heap.h @@ -0,0 +1,11 @@ +#ifndef GUARD_NNS_SND_HEAP_H +#define GUARD_NNS_SND_HEAP_H + +struct NNSSndHeap; +typedef struct NNSSndHeap* NNSSndHeapHandle; + +NNSSndHeapHandle * NNS_SndHeapCreate(void * start, u32 size); +int NNS_SndHeapSaveState(NNSSndHeapHandle * heap); +void NNS_SndHeapLoadState(NNSSndHeapHandle * heap, int level); + +#endif //GUARD_NNS_SND_HEAP_H diff --git a/arm9/lib/libnns/include/NNS_g2d.h b/arm9/lib/libnns/include/NNS_g2d.h new file mode 100644 index 00000000..f7eed210 --- /dev/null +++ b/arm9/lib/libnns/include/NNS_g2d.h @@ -0,0 +1,212 @@ +#ifndef NNSYS_NNS_G2D_H +#define NNSYS_NNS_G2D_H + +#include "gx.h" + +typedef struct NNSG2dCharacterData +{ + u16 H; + u16 W; + GXTexFmt pixelFmt; + GXOBJVRamModeChar mapingType; + u32 characterFmt; + u32 szByte; + void * pRawData; +} NNSG2dCharacterData; + +typedef struct NNSG2dScreenData +{ + u16 screenWidth; + u16 screenHeight; + u16 colorMode; + u16 screenFormat; + u32 szByte; + u32 rawData[1]; +} NNSG2dScreenData; + +typedef struct NNSG2dPaletteData +{ + GXTexFmt fmt; + BOOL bExtendedPlt; + u32 szByte; + void * pRawData; + +} NNSG2dPaletteData; + +typedef enum NNS_G2D_VRAM_TYPE +{ + NNS_G2D_VRAM_TYPE_3DMAIN = 0, + NNS_G2D_VRAM_TYPE_2DMAIN = 1, + NNS_G2D_VRAM_TYPE_2DSUB = 2, + NNS_G2D_VRAM_TYPE_MAX = 3 +} NNS_G2D_VRAM_TYPE; + +typedef enum NNSG2dCharacterDataMapingType +{ + NNS_G2D_CHARACTERMAPING_1D_32, + NNS_G2D_CHARACTERMAPING_1D_64, + NNS_G2D_CHARACTERMAPING_1D_128, + NNS_G2D_CHARACTERMAPING_1D_256, + NNS_G2D_CHARACTERMAPING_2D, + NNS_G2D_CHARACTERMAPING_MAX + +} NNSG2dCharacterDataMapingType; + +typedef struct NNSG2dImageAttr +{ + GXTexSizeS sizeS; + GXTexSizeT sizeT; + GXTexFmt fmt; + BOOL bExtendedPlt; + GXTexPlttColor0 plttUse; + GXOBJVRamModeChar mappingType; +} NNSG2dImageAttr; + +typedef struct NNSG2dVRamLocation +{ + u32 baseAddrOfVram[ NNS_G2D_VRAM_TYPE_MAX ]; +} NNSG2dVRamLocation; + +typedef struct NNSG2dImageProxy +{ + NNSG2dVRamLocation vramLocation; + NNSG2dImageAttr attr; +} NNSG2dImageProxy; + +typedef struct NNSG2dPaletteCompressInfo +{ + u16 numPalette; + u16 pad16; + void * pPlttIdxTbl; + +} NNSG2dPaletteCompressInfo; + +void NNS_G2dLoadImage1DMapping +( + const NNSG2dCharacterData * pSrcData, + u32 baseAddr, + NNS_G2D_VRAM_TYPE type, + NNSG2dImageProxy * pImgProxy +); + +void NNS_G2dLoadImage2DMapping +( + const NNSG2dCharacterData * pSrcData, + u32 baseAddr, + NNS_G2D_VRAM_TYPE type, + NNSG2dImageProxy * pImgProxy +); + +typedef struct NNSG2dImagePaletteProxy +{ + GXTexFmt fmt; + BOOL bExtendedPlt; + NNSG2dVRamLocation vramLocation; +} NNSG2dImagePaletteProxy; + +void NNS_G2dLoadPalette +( + const NNSG2dPaletteData * pSrcData, + u32 addr, + NNS_G2D_VRAM_TYPE type, + NNSG2dImagePaletteProxy * pPltProxy +); + +void NNS_G2dLoadPaletteEx +( + const NNSG2dPaletteData * pSrcData, + const NNSG2dPaletteCompressInfo * pCmpInfo, + u32 addr, + NNS_G2D_VRAM_TYPE type, + NNSG2dImagePaletteProxy * pPltProxy +); + +typedef struct NNSG2dCellVramTransferData +{ + u32 srcDataOffset; + u32 szByte; +} NNSG2dCellVramTransferData; + +typedef struct NNSG2dVramTransferData +{ + u32 szByteMax; + NNSG2dCellVramTransferData * pCellTransferDataArray; +} NNSG2dVramTransferData; + +typedef struct NNSG2dCellOAMAttrData +{ + u16 attr0; + u16 attr1; + u16 attr2; +} NNSG2dCellOAMAttrData; + +typedef struct NNSG2dCellData +{ + u16 numOAMAttrs; + u16 cellAttr; + NNSG2dCellOAMAttrData * pOamAttrArray; + +} NNSG2dCellData; + +typedef struct NNSG2dCellDataBank +{ + u16 numCells; + u16 cellBankAttr; + NNSG2dCellData * pCellDataArrayHead; + NNSG2dCharacterDataMapingType mappingMode; + NNSG2dVramTransferData * pVramTransferData; + void * pStringBank; + void * pExtendedData; + +} NNSG2dCellDataBank; + +typedef enum NNSG2dAnimationPlayMode +{ + NNS_G2D_ANIMATIONPLAYMODE_INVALID = 0x0, + NNS_G2D_ANIMATIONPLAYMODE_FORWARD, + NNS_G2D_ANIMATIONPLAYMODE_FORWARD_LOOP, + NNS_G2D_ANIMATIONPLAYMODE_REVERSE, + NNS_G2D_ANIMATIONPLAYMODE_REVERSE_LOOP, + NNS_G2D_ANIMATIONPLAYMODE_MAX +} NNSG2dAnimationPlayMode; + +typedef struct NNSG2dAnimFrameData +{ + void * pContent; + u16 frames; + u16 pad16; +} NNSG2dAnimFrameData; + +typedef struct NNSG2dAnimSequenceData +{ + u16 numFrames; + u16 loopStartFrameIdx; + u32 animType; + NNSG2dAnimationPlayMode playMode; + NNSG2dAnimFrameData * pAnmFrameArray; + +} NNSG2dAnimSequenceData; + +typedef struct NNSG2dAnimBankData +{ + + u16 numSequences; + u16 numTotalFrames; + NNSG2dAnimSequenceData * pSequenceArrayHead; + NNSG2dAnimFrameData * pFrameArrayHead; + void * pAnimContents; + void * pStringBank; + void * pExtendedData; + +} NNSG2dAnimBankData; + +BOOL NNS_G2dGetUnpackedBGCharacterData(void * pNcgrFile, NNSG2dCharacterData ** ppCharData); +BOOL NNS_G2dGetUnpackedCharacterData(void * pNcgrFile, NNSG2dCharacterData ** ppCharData); +BOOL NNS_G2dGetUnpackedScreenData(void * pNscrFile, NNSG2dScreenData ** ppScrData); +BOOL NNS_G2dGetUnpackedPaletteData(void * pNclrFile, NNSG2dPaletteData ** ppPltData); +BOOL NNS_G2dGetUnpackedPaletteData(void * pNclrFile, NNSG2dPaletteData ** ppPltData); +BOOL NNS_G2dGetUnpackedPaletteCompressInfo(void * pNclrFile, NNSG2dPaletteCompressInfo ** ppPltCmpInfo); +BOOL NNS_G2dGetUnpackedCellBank(void * pNcerFile, NNSG2dCellDataBank ** ppCellBank); +BOOL NNS_G2dGetUnpackedAnimBank(void * pNanrFile, NNSG2dAnimBankData ** ppAnimBank); + +#endif //NNSYS_NNS_G2D_H |