summaryrefslogtreecommitdiff
path: root/arm9/lib/include
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/lib/include')
-rw-r--r--arm9/lib/include/NNS_g2d.h212
-rw-r--r--arm9/lib/include/gx.h15
-rw-r--r--arm9/lib/include/registers.h142
3 files changed, 369 insertions, 0 deletions
diff --git a/arm9/lib/include/NNS_g2d.h b/arm9/lib/include/NNS_g2d.h
new file mode 100644
index 00000000..483f254a
--- /dev/null
+++ b/arm9/lib/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
diff --git a/arm9/lib/include/gx.h b/arm9/lib/include/gx.h
index 26f6cfaf..11081942 100644
--- a/arm9/lib/include/gx.h
+++ b/arm9/lib/include/gx.h
@@ -5,6 +5,7 @@
#include "MI_memory.h"
#include "MI_dma.h"
#include "OS_vramExclusive.h"
+#include "registers.h"
//temporary while other files aren't decompiled
@@ -166,4 +167,18 @@ typedef enum
}
GXDispSelect;
+typedef enum
+{
+ GX_OBJVRAMMODE_CHAR_2D = (0 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (0 << REG_GX_DISPCNT_EXOBJ_SHIFT),
+ GX_OBJVRAMMODE_CHAR_1D_32K =
+ (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (0 << REG_GX_DISPCNT_EXOBJ_SHIFT),
+ GX_OBJVRAMMODE_CHAR_1D_64K =
+ (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (1 << REG_GX_DISPCNT_EXOBJ_SHIFT),
+ GX_OBJVRAMMODE_CHAR_1D_128K =
+ (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (2 << REG_GX_DISPCNT_EXOBJ_SHIFT),
+ GX_OBJVRAMMODE_CHAR_1D_256K =
+ (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (3 << REG_GX_DISPCNT_EXOBJ_SHIFT)
+}
+ GXOBJVRamModeChar;
+
#endif //GUARD_GX_H
diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h
index d55347d5..7a0155da 100644
--- a/arm9/lib/include/registers.h
+++ b/arm9/lib/include/registers.h
@@ -517,4 +517,146 @@
#define REG_GX_POWCNT_DSEL_SIZE 1
#define REG_GX_POWCNT_DSEL_MASK 0x8000
+// GX_DISPCNT
+#define REG_GX_DISPCNT_O_SHIFT 31
+#define REG_GX_DISPCNT_O_SIZE 1
+#define REG_GX_DISPCNT_O_MASK 0x80000000
+
+#define REG_GX_DISPCNT_BG_SHIFT 30
+#define REG_GX_DISPCNT_BG_SIZE 1
+#define REG_GX_DISPCNT_BG_MASK 0x40000000
+
+#define REG_GX_DISPCNT_BGSCREENOFFSET_SHIFT 27
+#define REG_GX_DISPCNT_BGSCREENOFFSET_SIZE 3
+#define REG_GX_DISPCNT_BGSCREENOFFSET_MASK 0x38000000
+
+#define REG_GX_DISPCNT_BGCHAROFFSET_SHIFT 24
+#define REG_GX_DISPCNT_BGCHAROFFSET_SIZE 3
+#define REG_GX_DISPCNT_BGCHAROFFSET_MASK 0x07000000
+
+#define REG_GX_DISPCNT_OH_SHIFT 23
+#define REG_GX_DISPCNT_OH_SIZE 1
+#define REG_GX_DISPCNT_OH_MASK 0x00800000
+
+#define REG_GX_DISPCNT_EXOBJ_SHIFT 20
+#define REG_GX_DISPCNT_EXOBJ_SIZE 3
+#define REG_GX_DISPCNT_EXOBJ_MASK 0x00700000
+
+#define REG_GX_DISPCNT_VRAM_SHIFT 18
+#define REG_GX_DISPCNT_VRAM_SIZE 2
+#define REG_GX_DISPCNT_VRAM_MASK 0x000c0000
+
+#define REG_GX_DISPCNT_MODE_SHIFT 16
+#define REG_GX_DISPCNT_MODE_SIZE 2
+#define REG_GX_DISPCNT_MODE_MASK 0x00030000
+
+#define REG_GX_DISPCNT_OW_SHIFT 15
+#define REG_GX_DISPCNT_OW_SIZE 1
+#define REG_GX_DISPCNT_OW_MASK 0x00008000
+
+#define REG_GX_DISPCNT_W1_SHIFT 14
+#define REG_GX_DISPCNT_W1_SIZE 1
+#define REG_GX_DISPCNT_W1_MASK 0x00004000
+
+#define REG_GX_DISPCNT_W0_SHIFT 13
+#define REG_GX_DISPCNT_W0_SIZE 1
+#define REG_GX_DISPCNT_W0_MASK 0x00002000
+
+#define REG_GX_DISPCNT_DISPLAY_SHIFT 8
+#define REG_GX_DISPCNT_DISPLAY_SIZE 5
+#define REG_GX_DISPCNT_DISPLAY_MASK 0x00001f00
+
+#define REG_GX_DISPCNT_BLANK_SHIFT 7
+#define REG_GX_DISPCNT_BLANK_SIZE 1
+#define REG_GX_DISPCNT_BLANK_MASK 0x00000080
+
+#define REG_GX_DISPCNT_OBJMAP_SHIFT 4
+#define REG_GX_DISPCNT_OBJMAP_SIZE 3
+#define REG_GX_DISPCNT_OBJMAP_MASK 0x00000070
+
+#define REG_GX_DISPCNT_BG02D3D_SHIFT 3
+#define REG_GX_DISPCNT_BG02D3D_SIZE 1
+#define REG_GX_DISPCNT_BG02D3D_MASK 0x00000008
+
+#define REG_GX_DISPCNT_BGMODE_SHIFT 0
+#define REG_GX_DISPCNT_BGMODE_SIZE 3
+#define REG_GX_DISPCNT_BGMODE_MASK 0x00000007
+
+#define REG_GX_DISPCNT_OBJMAP_CH_SHIFT 4
+#define REG_GX_DISPCNT_OBJMAP_CH_SIZE 1
+#define REG_GX_DISPCNT_OBJMAP_CH_MASK 0x00000010
+
+#define REG_GX_DISPCNT_OBJMAP_BM_SHIFT 5
+#define REG_GX_DISPCNT_OBJMAP_BM_SIZE 2
+#define REG_GX_DISPCNT_OBJMAP_BM_MASK 0x00000060
+
+#define REG_GX_DISPCNT_EXOBJ_CH_SHIFT 20
+#define REG_GX_DISPCNT_EXOBJ_CH_SIZE 2
+#define REG_GX_DISPCNT_EXOBJ_CH_MASK 0x00300000
+
+#define REG_GX_DISPCNT_EXOBJ_BM_SHIFT 22
+#define REG_GX_DISPCNT_EXOBJ_BM_SIZE 1
+#define REG_GX_DISPCNT_EXOBJ_BM_MASK 0x00400000
+
+// GXS_DB_DISPCNT
+#define REG_GXS_DB_DISPCNT_O_SHIFT 31
+#define REG_GXS_DB_DISPCNT_O_SIZE 1
+#define REG_GXS_DB_DISPCNT_O_MASK 0x80000000
+
+#define REG_GXS_DB_DISPCNT_BG_SHIFT 30
+#define REG_GXS_DB_DISPCNT_BG_SIZE 1
+#define REG_GXS_DB_DISPCNT_BG_MASK 0x40000000
+
+#define REG_GXS_DB_DISPCNT_OH_SHIFT 23
+#define REG_GXS_DB_DISPCNT_OH_SIZE 1
+#define REG_GXS_DB_DISPCNT_OH_MASK 0x00800000
+
+#define REG_GXS_DB_DISPCNT_EXOBJ_SHIFT 20
+#define REG_GXS_DB_DISPCNT_EXOBJ_SIZE 2
+#define REG_GXS_DB_DISPCNT_EXOBJ_MASK 0x00300000
+
+#define REG_GXS_DB_DISPCNT_MODE_SHIFT 16
+#define REG_GXS_DB_DISPCNT_MODE_SIZE 1
+#define REG_GXS_DB_DISPCNT_MODE_MASK 0x00010000
+
+#define REG_GXS_DB_DISPCNT_OW_SHIFT 15
+#define REG_GXS_DB_DISPCNT_OW_SIZE 1
+#define REG_GXS_DB_DISPCNT_OW_MASK 0x00008000
+
+#define REG_GXS_DB_DISPCNT_W1_SHIFT 14
+#define REG_GXS_DB_DISPCNT_W1_SIZE 1
+#define REG_GXS_DB_DISPCNT_W1_MASK 0x00004000
+
+#define REG_GXS_DB_DISPCNT_W0_SHIFT 13
+#define REG_GXS_DB_DISPCNT_W0_SIZE 1
+#define REG_GXS_DB_DISPCNT_W0_MASK 0x00002000
+
+#define REG_GXS_DB_DISPCNT_DISPLAY_SHIFT 8
+#define REG_GXS_DB_DISPCNT_DISPLAY_SIZE 5
+#define REG_GXS_DB_DISPCNT_DISPLAY_MASK 0x00001f00
+
+#define REG_GXS_DB_DISPCNT_BLANK_SHIFT 7
+#define REG_GXS_DB_DISPCNT_BLANK_SIZE 1
+#define REG_GXS_DB_DISPCNT_BLANK_MASK 0x00000080
+
+#define REG_GXS_DB_DISPCNT_OBJMAP_SHIFT 4
+#define REG_GXS_DB_DISPCNT_OBJMAP_SIZE 3
+#define REG_GXS_DB_DISPCNT_OBJMAP_MASK 0x00000070
+
+#define REG_GXS_DB_DISPCNT_BGMODE_SHIFT 0
+#define REG_GXS_DB_DISPCNT_BGMODE_SIZE 3
+#define REG_GXS_DB_DISPCNT_BGMODE_MASK 0x00000007
+
+#define REG_GXS_DB_DISPCNT_OBJMAP_CH_SHIFT 4
+#define REG_GXS_DB_DISPCNT_OBJMAP_CH_SIZE 1
+#define REG_GXS_DB_DISPCNT_OBJMAP_CH_MASK 0x00000010
+
+#define REG_GXS_DB_DISPCNT_OBJMAP_BM_SHIFT 5
+#define REG_GXS_DB_DISPCNT_OBJMAP_BM_SIZE 2
+#define REG_GXS_DB_DISPCNT_OBJMAP_BM_MASK 0x00000060
+
+#define REG_GXS_DB_DISPCNT_EXOBJ_CH_SHIFT 20
+#define REG_GXS_DB_DISPCNT_EXOBJ_CH_SIZE 2
+#define REG_GXS_DB_DISPCNT_EXOBJ_CH_MASK 0x00300000
+
#endif //POKEDIAMOND_ARM9_REGISTERS_H