diff options
| author | Rémi Calixte <remicalixte.rmc@gmail.com> | 2021-06-01 20:03:16 +0200 | 
|---|---|---|
| committer | Rémi Calixte <remicalixte.rmc@gmail.com> | 2021-06-01 20:03:16 +0200 | 
| commit | d6f348ce384723cecd3e1fe0f9db572f252cc6fa (patch) | |
| tree | dc033bd9e39a01b37896295fa4e29549f566c214 /arm9/lib | |
| parent | 8e4dda14ff3f4390af69d52b928f987f3618e9a1 (diff) | |
| parent | f84ce2d813902c7c4bdd6db34b40152ddf9cadde (diff) | |
Merge branch 'master' into unk_0200BB14
Diffstat (limited to 'arm9/lib')
| -rw-r--r-- | arm9/lib/include/NNS_g2d.h | 212 | ||||
| -rw-r--r-- | arm9/lib/include/gx.h | 15 | ||||
| -rw-r--r-- | arm9/lib/include/registers.h | 142 | 
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 | 
