mirror of
https://github.com/pret/pokeheartgold.git
synced 2026-05-19 10:20:36 -05:00
150 lines
3.0 KiB
C
150 lines
3.0 KiB
C
#ifndef POKEHEARTGOLD_WINDOW_H
|
|
#define POKEHEARTGOLD_WINDOW_H
|
|
|
|
typedef struct BGTEMPLATE {
|
|
u32 x;
|
|
u32 y;
|
|
u32 bufferSize;
|
|
u32 baseTile;
|
|
u8 size;
|
|
u8 colorMode;
|
|
u8 screenBase;
|
|
u8 charBase;
|
|
u8 bgExtPltt;
|
|
u8 priority;
|
|
u8 areaOver;
|
|
u8 dummy;
|
|
u32 mosaic;
|
|
} BGTEMPLATE;
|
|
|
|
typedef struct BG {
|
|
void *tilemapBuffer;
|
|
u32 bufferSize;
|
|
u32 baseTile;
|
|
|
|
fx32 hOffset;
|
|
fx32 vOffset;
|
|
|
|
u8 mode;
|
|
u8 size;
|
|
u8 colorMode;
|
|
u8 tileSize;
|
|
u16 rotation;
|
|
u16 unk22; // probably padding
|
|
fx32 xScale;
|
|
fx32 yScale;
|
|
fx32 centerX;
|
|
fx32 centerY;
|
|
} BG;
|
|
|
|
typedef struct BGCONFIG {
|
|
u32 heap_id;
|
|
u16 scrollScheduled;
|
|
u16 bufferTransferScheduled;
|
|
BG bgs[8];
|
|
} BGCONFIG;
|
|
|
|
typedef struct BITMAP {
|
|
const u8 *pixels;
|
|
u16 width;
|
|
u16 height;
|
|
} BITMAP;
|
|
|
|
typedef struct WINDOWTEMPLATE {
|
|
u8 bgId;
|
|
u8 left;
|
|
u8 top;
|
|
u8 width;
|
|
u8 height;
|
|
u8 palette;
|
|
u16 baseBlock;
|
|
} WINDOWTEMPLATE;
|
|
|
|
typedef struct WINDOW {
|
|
BGCONFIG *bgConfig;
|
|
u8 bgId;
|
|
u8 tilemapLeft;
|
|
u8 tilemapTop;
|
|
u8 width;
|
|
u8 height;
|
|
u8 paletteNum;
|
|
u16 baseTile : 15;
|
|
u16 colorMode : 1;
|
|
void *pixelBuffer;
|
|
} WINDOW;
|
|
|
|
enum GFBppMode {
|
|
GF_BG_CLR_4BPP = 0,
|
|
GF_BG_CLR_8BPP,
|
|
};
|
|
|
|
enum GFBgLayer {
|
|
GF_BG_LYR_MAIN_0 = 0,
|
|
GF_BG_LYR_MAIN_1,
|
|
GF_BG_LYR_MAIN_2,
|
|
GF_BG_LYR_MAIN_3,
|
|
GF_BG_LYR_SUB_0,
|
|
GF_BG_LYR_SUB_1,
|
|
GF_BG_LYR_SUB_2,
|
|
GF_BG_LYR_SUB_3,
|
|
GF_BG_LYR_MAIN_CNT = 4,
|
|
GF_BG_LYR_SUB_CNT = 4,
|
|
GF_BG_LYR_MAIN_FIRST = GF_BG_LYR_MAIN_0,
|
|
GF_BG_LYR_SUB_FIRST = GF_BG_LYR_SUB_0,
|
|
|
|
GF_BG_LYR_MAIN_0_F = 1 << (GF_BG_LYR_MAIN_0 - GF_BG_LYR_MAIN_FIRST),
|
|
GF_BG_LYR_MAIN_1_F = 1 << (GF_BG_LYR_MAIN_1 - GF_BG_LYR_MAIN_FIRST),
|
|
GF_BG_LYR_MAIN_2_F = 1 << (GF_BG_LYR_MAIN_2 - GF_BG_LYR_MAIN_FIRST),
|
|
GF_BG_LYR_MAIN_3_F = 1 << (GF_BG_LYR_MAIN_3 - GF_BG_LYR_MAIN_FIRST),
|
|
GF_BG_LYR_SUB_0_F = 1 << (GF_BG_LYR_SUB_0 - GF_BG_LYR_SUB_FIRST),
|
|
GF_BG_LYR_SUB_1_F = 1 << (GF_BG_LYR_SUB_1 - GF_BG_LYR_SUB_FIRST),
|
|
GF_BG_LYR_SUB_2_F = 1 << (GF_BG_LYR_SUB_2 - GF_BG_LYR_SUB_FIRST),
|
|
GF_BG_LYR_SUB_3_F = 1 << (GF_BG_LYR_SUB_3 - GF_BG_LYR_SUB_FIRST),
|
|
|
|
GF_BG_LYR_UNALLOC = 0xFF,
|
|
};
|
|
|
|
enum GFBgType {
|
|
GF_BG_TYPE_TEXT = 0,
|
|
GF_BG_TYPE_AFFINE,
|
|
GF_BG_TYPE_256x16PLTT,
|
|
};
|
|
|
|
enum GFBgCntSet {
|
|
GF_BG_CNT_SET_COLOR_MODE = 0,
|
|
GF_BG_CNT_SET_SCREEN_BASE,
|
|
GF_BG_CNT_SET_CHAR_BASE,
|
|
};
|
|
|
|
enum GFBgScreenSize {
|
|
GF_BG_SCR_SIZE_128x128 = 0,
|
|
GF_BG_SCR_SIZE_256x256,
|
|
GF_BG_SCR_SIZE_256x512,
|
|
GF_BG_SCR_SIZE_512x256,
|
|
GF_BG_SCR_SIZE_512x512,
|
|
GF_BG_SCR_SIZE_1024x1024
|
|
};
|
|
|
|
enum BgPosAdjustOp {
|
|
// Text layers
|
|
BG_POS_OP_SET_X = 0,
|
|
BG_POS_OP_ADD_X,
|
|
BG_POS_OP_SUB_X,
|
|
BG_POS_OP_SET_Y,
|
|
BG_POS_OP_ADD_Y,
|
|
BG_POS_OP_SUB_Y,
|
|
|
|
// Affine layers
|
|
BG_POS_OP_SET_ROT = 0,
|
|
BG_POS_OP_ADD_ROT,
|
|
BG_POS_OP_SUB_ROT,
|
|
BG_POS_OP_SET_CENTERX = 9,
|
|
BG_POS_OP_ADD_CENTERX,
|
|
BG_POS_OP_SUB_CENTERX,
|
|
BG_POS_OP_SET_CENTERY,
|
|
BG_POS_OP_ADD_CENTERY,
|
|
BG_POS_OP_SUB_CENTERY,
|
|
};
|
|
|
|
#endif //POKEHEARTGOLD_WINDOW_H
|