#ifndef GUARD_BG_H #define GUARD_BG_H enum { BG_CTRL_ATTR_VISIBLE = 1, BG_CTRL_ATTR_CHARBASEINDEX = 2, BG_CTRL_ATTR_MAPBASEINDEX = 3, BG_CTRL_ATTR_SCREENSIZE = 4, BG_CTRL_ATTR_PALETTEMODE = 5, BG_CTRL_ATTR_PRIORITY = 6, BG_CTRL_ATTR_MOSAIC = 7, BG_CTRL_ATTR_WRAPAROUND = 8, }; struct BgTemplate { u32 bg:2; u32 charBaseIndex:2; u32 mapBaseIndex:5; u32 screenSize:2; u32 paletteMode:1; u32 priority:2; u32 baseTile:10; }; void ResetBgsAndClearDma3BusyFlags(u32 leftoverFireRedLeafGreenVariable); void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numTemplates); void SetBgAttribute(u8 bg, u8 attributeId, u8 value); u16 GetBgAttribute(u8 bg, u8 attributeId); u32 ChangeBgX(u8 bg, u32 value, u8 op); u32 GetBgX(u8 bg); u32 ChangeBgY(u8 bg, u32 value, u8 op); u32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op); u32 GetBgY(u8 bg); void SetBgAffine(u8 bg, u32 srcCenterX, u32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle); void SetBgTilemapBuffer(u8 bg, void *tilemap); void UnsetBgTilemapBuffer(u8 bg); void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset); void CopyBgTilemapBufferToVram(u8 bg); u16 LoadBgTiles(u8 bg, const void* src, u16 size, u16 destOffset); void ShowBg(u8 bg); void HideBg(u8 bg); #endif // GUARD_BG_H