summaryrefslogtreecommitdiff
path: root/arm9/lib/include
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/lib/include')
-rw-r--r--arm9/lib/include/GXS_ioreg.h64
-rw-r--r--arm9/lib/include/NNS_g2d.h125
2 files changed, 187 insertions, 2 deletions
diff --git a/arm9/lib/include/GXS_ioreg.h b/arm9/lib/include/GXS_ioreg.h
new file mode 100644
index 00000000..1c66c4af
--- /dev/null
+++ b/arm9/lib/include/GXS_ioreg.h
@@ -0,0 +1,64 @@
+#ifndef POKEDIAMOND_GXS_IOREG_H
+#define POKEDIAMOND_GXS_IOREG_H
+
+#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_GXS_IOREG_H
diff --git a/arm9/lib/include/NNS_g2d.h b/arm9/lib/include/NNS_g2d.h
index aa30881e..722f4767 100644
--- a/arm9/lib/include/NNS_g2d.h
+++ b/arm9/lib/include/NNS_g2d.h
@@ -53,6 +53,17 @@ typedef enum NNS_G2D_VRAM_TYPE
} 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; // Image size (Invalid data is set during 1D mapping.)
@@ -86,7 +97,7 @@ typedef struct NNSG2dPaletteCompressInfo
void* pPlttIdxTbl; // offset addr.
}
- NNSG2dPaletteCompressInfo;
+NNSG2dPaletteCompressInfo;
void NNS_G2dLoadImage1DMapping
(
@@ -114,7 +125,7 @@ typedef struct NNSG2dImagePaletteProxy
NNSG2dVRamLocation vramLocation;
}
- NNSG2dImagePaletteProxy;
+NNSG2dImagePaletteProxy;
void NNS_G2dLoadPalette
(
@@ -133,11 +144,121 @@ void NNS_G2dLoadPaletteEx
NNSG2dImagePaletteProxy* pPltProxy
);
+typedef struct NNSG2dCellVramTransferData
+{
+ u32 srcDataOffset;
+ u32 szByte;
+
+}
+NNSG2dCellVramTransferData;
+
+typedef struct NNSG2dVramTransferData
+{
+ u32 szByteMax; // Maximum byte count during all VRAM transfers
+ NNSG2dCellVramTransferData* pCellTransferDataArray;// This is the length of the numCells amount of the maintained NNSG2dCellDataBank.
+ //
+
+}
+NNSG2dVramTransferData;
+
+typedef struct NNSG2dCellOAMAttrData
+{
+ u16 attr0;
+ u16 attr1;
+ u16 attr2;
+
+}
+NNSG2dCellOAMAttrData;
+
+typedef struct NNSG2dCellData
+{
+ u16 numOAMAttrs; // Number of OAM attributes
+ u16 cellAttr; // Information related to cell type
+ // Information related to flips (upper 8 bits)
+ // Information related to bounding information
+ //
+ // Information related to rendering optimization (lower 8 bits)
+ // (6bit => Radius of bounding sphere >> 2 )
+
+
+ NNSG2dCellOAMAttrData* pOamAttrArray; // Pointer to the NNSG2dCellOAMAttrData array
+
+}
+NNSG2dCellData;
+
+typedef struct NNSG2dCellDataBank
+{
+ u16 numCells; // Total number of cells
+ u16 cellBankAttr; // Attribute
+ NNSG2dCellData* pCellDataArrayHead; // offset address
+ NNSG2dCharacterDataMapingType mappingMode; // Mapping mode of the referenced character
+
+ NNSG2dVramTransferData* pVramTransferData; // Information related to Vram transfer animation
+
+ void* pStringBank; // Character string bank
+ void* pExtendedData; // offset addr (if it exists)
+
+
+}
+NNSG2dCellDataBank;
+
+typedef enum NNSG2dAnimationPlayMode
+{
+ NNS_G2D_ANIMATIONPLAYMODE_INVALID = 0x0, // Disabled
+ NNS_G2D_ANIMATIONPLAYMODE_FORWARD, // one-time playback (forward)
+ NNS_G2D_ANIMATIONPLAYMODE_FORWARD_LOOP, // repeat playback (forward loop)
+ NNS_G2D_ANIMATIONPLAYMODE_REVERSE, // reverse playback (reverse (forward + backward))
+ NNS_G2D_ANIMATIONPLAYMODE_REVERSE_LOOP, // reverse playback repeat (reverse (forward + backward) loop)
+ NNS_G2D_ANIMATIONPLAYMODE_MAX
+}
+NNSG2dAnimationPlayMode;
+
+typedef struct NNSG2dAnimFrameData
+{
+ void* pContent; // pointer to animation result
+ u16 frames; // animation frame continuation time (units: video frames)
+ u16 pad16; // padding
+
+}
+NNSG2dAnimFrameData;
+
+typedef struct NNSG2dAnimSequenceData
+{
+ u16 numFrames; // number of animation frames forming the sequence
+ u16 loopStartFrameIdx; // loop start animation frame number
+
+ u32 animType; // animation type (upper 16 bits)
+ // animation elements (lower 16 bits)
+ // (What's referenced by NNSG2dAnimFrameData.pContent is changed)
+
+ NNSG2dAnimationPlayMode playMode; // animation sequence playback method
+ NNSG2dAnimFrameData* pAnmFrameArray; // offset from the head of pFrameArray.
+
+}
+NNSG2dAnimSequenceData;
+
+typedef struct NNSG2dAnimBankData
+{
+
+ u16 numSequences; // number of animation sequences
+ u16 numTotalFrames; // total number of animation frames
+ NNSG2dAnimSequenceData* pSequenceArrayHead; // pointer to animation sequence array
+ NNSG2dAnimFrameData* pFrameArrayHead; // pointer to animation frame array
+ void* pAnimContents; // pointer to animation result array
+ void* pStringBank; // pointer to string bank (set during execution)
+ void* pExtendedData; // pointer to library expansion area (not used)
+
+}
+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