summaryrefslogtreecommitdiff
path: root/arm9/lib/libnns/include
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/lib/libnns/include')
-rw-r--r--arm9/lib/libnns/include/NNS_FND_allocator.h34
-rw-r--r--arm9/lib/libnns/include/NNS_FND_expheap.h55
-rw-r--r--arm9/lib/libnns/include/NNS_FND_heapcommon.h26
-rw-r--r--arm9/lib/libnns/include/NNS_FND_list.h20
-rw-r--r--arm9/lib/libnns/include/NNS_SND_arc.h39
-rw-r--r--arm9/lib/libnns/include/NNS_SND_arc_loader.h12
-rw-r--r--arm9/lib/libnns/include/NNS_SND_heap.h11
-rw-r--r--arm9/lib/libnns/include/NNS_g2d.h212
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