summaryrefslogtreecommitdiff
path: root/arm9/lib
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-06-03 18:27:52 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-06-03 18:27:52 -0400
commit94eb56526428935ea1f49d2b8912b5b3022d99b7 (patch)
tree8aeb29623e5160c304da993439f488b54254d23e /arm9/lib
parentd9562dc1675e93f565e63eeba35369688bb70742 (diff)
Rename window-related structs; port g2 reg inlines
Diffstat (limited to 'arm9/lib')
-rw-r--r--arm9/lib/include/GX_bgcnt.h284
-rw-r--r--arm9/lib/include/registers.h232
2 files changed, 516 insertions, 0 deletions
diff --git a/arm9/lib/include/GX_bgcnt.h b/arm9/lib/include/GX_bgcnt.h
index a581443e..9a604046 100644
--- a/arm9/lib/include/GX_bgcnt.h
+++ b/arm9/lib/include/GX_bgcnt.h
@@ -285,6 +285,14 @@ typedef enum
}
GXBGExtPltt;
+typedef enum
+{
+ GX_BG_EXTMODE_256x16PLTT = (0 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (0 << REG_G2_BG2CNT_COLORMODE_SHIFT),
+ GX_BG_EXTMODE_256BITMAP = (0 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (1 << REG_G2_BG2CNT_COLORMODE_SHIFT),
+ GX_BG_EXTMODE_DCBITMAP = (1 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (1 << REG_G2_BG2CNT_COLORMODE_SHIFT)
+}
+GXBGExtMode;
+
//GX_capture
typedef enum
{
@@ -344,4 +352,280 @@ typedef enum
}
GXCaptureMode;
+static inline void G2_SetBG0Control(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt)
+{
+ reg_G2_BG0CNT = (u16)((reg_G2_BG0CNT & (REG_G2_BG0CNT_PRIORITY_MASK | REG_G2_BG0CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG0CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2_BG0CNT_COLORMODE_SHIFT) | (screenBase << REG_G2_BG0CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG0CNT_CHARBASE_SHIFT) | (bgExtPltt << REG_G2_BG0CNT_BGPLTTSLOT_SHIFT));
+}
+
+static inline void G2S_SetBG0Control(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt)
+{
+ reg_G2S_DB_BG0CNT = (u16)((reg_G2S_DB_BG0CNT & (REG_G2S_DB_BG0CNT_PRIORITY_MASK | REG_G2S_DB_BG0CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG0CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2S_DB_BG0CNT_COLORMODE_SHIFT) | (screenBase << REG_G2S_DB_BG0CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG0CNT_CHARBASE_SHIFT) | (bgExtPltt << REG_G2S_DB_BG0CNT_BGPLTTSLOT_SHIFT));
+}
+
+static inline void G2_SetBG1Control(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt)
+{
+ reg_G2_BG1CNT = (u16)((reg_G2_BG1CNT & (REG_G2_BG1CNT_PRIORITY_MASK | REG_G2_BG1CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG1CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2_BG1CNT_COLORMODE_SHIFT) | (screenBase << REG_G2_BG1CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG1CNT_CHARBASE_SHIFT) | (bgExtPltt << REG_G2_BG1CNT_BGPLTTSLOT_SHIFT));
+}
+
+static inline void G2S_SetBG1Control(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt)
+{
+ reg_G2S_DB_BG1CNT = (u16)((reg_G2S_DB_BG1CNT & (REG_G2S_DB_BG1CNT_PRIORITY_MASK | REG_G2S_DB_BG1CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG1CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2S_DB_BG1CNT_COLORMODE_SHIFT) | (screenBase << REG_G2S_DB_BG1CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG1CNT_CHARBASE_SHIFT) | (bgExtPltt << REG_G2S_DB_BG1CNT_BGPLTTSLOT_SHIFT));
+}
+
+static inline void G2_SetBG2ControlText(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & ((REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK))) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2_BG2CNT_COLORMODE_SHIFT) | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG2CNT_CHARBASE_SHIFT));
+}
+
+static inline void G2S_SetBG2ControlText(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & ((REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK))) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2S_DB_BG2CNT_COLORMODE_SHIFT) | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG2CNT_CHARBASE_SHIFT));
+}
+
+static inline void G2_SetBG2ControlAffine(GXBGScrSizeAffine screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & ((REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK))) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT) | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG2CNT_CHARBASE_SHIFT));
+}
+
+static inline void G2S_SetBG2ControlAffine(GXBGScrSizeAffine screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & ((REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK))) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT) | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG2CNT_CHARBASE_SHIFT));
+}
+
+static inline void G2_SetBG2Control256x16Pltt(GXBGScrSize256x16Pltt screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (charBase << REG_G2_BG2CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG2Control256x16Pltt(GXBGScrSize256x16Pltt screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | (charBase << REG_G2S_DB_BG2CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG2Control256Bmp(GXBGScrSize256Bmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG2Control256Bmp(GXBGScrSize256Bmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG2ControlDCBmp(GXBGScrSizeDcBmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG2ControlDCBmp(GXBGScrSizeDcBmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG2ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver)
+{
+ reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG2ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver)
+{
+ reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG3ControlText(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & ((REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK))) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2_BG3CNT_COLORMODE_SHIFT) | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG3CNT_CHARBASE_SHIFT));
+}
+
+static inline void G2S_SetBG3ControlText(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & ((REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK))) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2S_DB_BG3CNT_COLORMODE_SHIFT) | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG3CNT_CHARBASE_SHIFT));
+}
+
+static inline void G2_SetBG3ControlAffine(GXBGScrSizeAffine screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & ((REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK))) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT) | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG3CNT_CHARBASE_SHIFT));
+}
+
+static inline void G2S_SetBG3ControlAffine(GXBGScrSizeAffine screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & ((REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK))) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT) | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG3CNT_CHARBASE_SHIFT));
+}
+
+static inline void G2_SetBG3Control256x16Pltt(GXBGScrSize256x16Pltt screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (charBase << REG_G2_BG3CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG3Control256x16Pltt(GXBGScrSize256x16Pltt screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | (charBase << REG_G2S_DB_BG3CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG3Control256Bmp(GXBGScrSize256Bmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG3Control256Bmp(GXBGScrSize256Bmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG3ControlDCBmp(GXBGScrSizeDcBmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG3ControlDCBmp(GXBGScrSizeDcBmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG3ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver)
+{
+ reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG3ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver)
+{
+ reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_BG0Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2_BG0CNT |= REG_G2_BG0CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2_BG0CNT &= ~REG_G2_BG0CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2S_BG0Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2S_DB_BG0CNT |= REG_G2S_DB_BG0CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2S_DB_BG0CNT &= ~REG_G2S_DB_BG0CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2_BG1Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2_BG1CNT |= REG_G2_BG1CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2_BG1CNT &= ~REG_G2_BG1CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2S_BG1Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2S_DB_BG1CNT |= REG_G2S_DB_BG1CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2S_DB_BG1CNT &= ~REG_G2S_DB_BG1CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2_BG2Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2_BG2CNT |= REG_G2_BG2CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2_BG2CNT &= ~REG_G2_BG2CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2S_BG2Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2S_DB_BG2CNT |= REG_G2S_DB_BG2CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2S_DB_BG2CNT &= ~REG_G2S_DB_BG2CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2_BG3Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2_BG3CNT |= REG_G2_BG3CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2_BG3CNT &= ~REG_G2_BG3CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2S_BG3Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2S_DB_BG3CNT |= REG_G2S_DB_BG3CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2S_DB_BG3CNT &= ~REG_G2S_DB_BG3CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2_SetBG0Priority(int priority)
+{
+ reg_G2_BG0CNT = (u16)((reg_G2_BG0CNT & ~REG_G2_BG0CNT_PRIORITY_MASK) | (priority << REG_G2_BG0CNT_PRIORITY_SHIFT));
+}
+
+static inline void G2S_SetBG0Priority(int priority)
+{
+ reg_G2S_DB_BG0CNT = (u16)((reg_G2S_DB_BG0CNT & ~REG_G2S_DB_BG0CNT_PRIORITY_MASK) | (priority << REG_G2S_DB_BG0CNT_PRIORITY_SHIFT));
+}
+
+static inline void G2_SetBG1Priority(int priority)
+{
+ reg_G2_BG1CNT = (u16)((reg_G2_BG1CNT & ~REG_G2_BG1CNT_PRIORITY_MASK) | (priority << REG_G2_BG1CNT_PRIORITY_SHIFT));
+}
+
+static inline void G2S_SetBG1Priority(int priority)
+{
+ reg_G2S_DB_BG1CNT = (u16)((reg_G2S_DB_BG1CNT & ~REG_G2S_DB_BG1CNT_PRIORITY_MASK) | (priority << REG_G2S_DB_BG1CNT_PRIORITY_SHIFT));
+}
+
+static inline void G2_SetBG2Priority(int priority)
+{
+ reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & ~REG_G2_BG2CNT_PRIORITY_MASK) | (priority << REG_G2_BG2CNT_PRIORITY_SHIFT));
+}
+
+static inline void G2S_SetBG2Priority(int priority)
+{
+ reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & ~REG_G2S_DB_BG2CNT_PRIORITY_MASK) | (priority << REG_G2S_DB_BG2CNT_PRIORITY_SHIFT));
+}
+
+static inline void G2_SetBG3Priority(int priority)
+{
+ reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & ~REG_G2_BG3CNT_PRIORITY_MASK) | (priority << REG_G2_BG3CNT_PRIORITY_SHIFT));
+}
+
+static inline void G2S_SetBG3Priority(int priority)
+{
+ reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & ~REG_G2S_DB_BG3CNT_PRIORITY_MASK) | (priority << REG_G2S_DB_BG3CNT_PRIORITY_SHIFT));
+}
+
#endif //GUARD_GX_BGCNT_H
diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h
index 73ae7ccf..f4da59ad 100644
--- a/arm9/lib/include/registers.h
+++ b/arm9/lib/include/registers.h
@@ -697,4 +697,236 @@
#define REG_GX_DISPSTAT_VBLK_SIZE 1
#define REG_GX_DISPSTAT_VBLK_MASK 0x0001
+// G2_BG0CNT
+#define REG_G2_BG0CNT_SCREENSIZE_SHIFT 14
+#define REG_G2_BG0CNT_SCREENSIZE_SIZE 2
+#define REG_G2_BG0CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2_BG0CNT_BGPLTTSLOT_SHIFT 13
+#define REG_G2_BG0CNT_BGPLTTSLOT_SIZE 1
+#define REG_G2_BG0CNT_BGPLTTSLOT_MASK 0x2000
+
+#define REG_G2_BG0CNT_SCREENBASE_SHIFT 8
+#define REG_G2_BG0CNT_SCREENBASE_SIZE 5
+#define REG_G2_BG0CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2_BG0CNT_COLORMODE_SHIFT 7
+#define REG_G2_BG0CNT_COLORMODE_SIZE 1
+#define REG_G2_BG0CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2_BG0CNT_MOSAIC_SHIFT 6
+#define REG_G2_BG0CNT_MOSAIC_SIZE 1
+#define REG_G2_BG0CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2_BG0CNT_CHARBASE_SHIFT 2
+#define REG_G2_BG0CNT_CHARBASE_SIZE 4
+#define REG_G2_BG0CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2_BG0CNT_PRIORITY_SHIFT 0
+#define REG_G2_BG0CNT_PRIORITY_SIZE 2
+#define REG_G2_BG0CNT_PRIORITY_MASK 0x0003
+
+// G2_BG1CNT
+#define REG_G2_BG1CNT_SCREENSIZE_SHIFT 14
+#define REG_G2_BG1CNT_SCREENSIZE_SIZE 2
+#define REG_G2_BG1CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2_BG1CNT_BGPLTTSLOT_SHIFT 13
+#define REG_G2_BG1CNT_BGPLTTSLOT_SIZE 1
+#define REG_G2_BG1CNT_BGPLTTSLOT_MASK 0x2000
+
+#define REG_G2_BG1CNT_SCREENBASE_SHIFT 8
+#define REG_G2_BG1CNT_SCREENBASE_SIZE 5
+#define REG_G2_BG1CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2_BG1CNT_COLORMODE_SHIFT 7
+#define REG_G2_BG1CNT_COLORMODE_SIZE 1
+#define REG_G2_BG1CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2_BG1CNT_MOSAIC_SHIFT 6
+#define REG_G2_BG1CNT_MOSAIC_SIZE 1
+#define REG_G2_BG1CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2_BG1CNT_CHARBASE_SHIFT 2
+#define REG_G2_BG1CNT_CHARBASE_SIZE 4
+#define REG_G2_BG1CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2_BG1CNT_PRIORITY_SHIFT 0
+#define REG_G2_BG1CNT_PRIORITY_SIZE 2
+#define REG_G2_BG1CNT_PRIORITY_MASK 0x0003
+
+// G2_BG2CNT
+#define REG_G2_BG2CNT_SCREENSIZE_SHIFT 14
+#define REG_G2_BG2CNT_SCREENSIZE_SIZE 2
+#define REG_G2_BG2CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2_BG2CNT_AREAOVER_SHIFT 13
+#define REG_G2_BG2CNT_AREAOVER_SIZE 1
+#define REG_G2_BG2CNT_AREAOVER_MASK 0x2000
+
+#define REG_G2_BG2CNT_SCREENBASE_SHIFT 8
+#define REG_G2_BG2CNT_SCREENBASE_SIZE 5
+#define REG_G2_BG2CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2_BG2CNT_COLORMODE_SHIFT 7
+#define REG_G2_BG2CNT_COLORMODE_SIZE 1
+#define REG_G2_BG2CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2_BG2CNT_MOSAIC_SHIFT 6
+#define REG_G2_BG2CNT_MOSAIC_SIZE 1
+#define REG_G2_BG2CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2_BG2CNT_CHARBASE_SHIFT 2
+#define REG_G2_BG2CNT_CHARBASE_SIZE 4
+#define REG_G2_BG2CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2_BG2CNT_PRIORITY_SHIFT 0
+#define REG_G2_BG2CNT_PRIORITY_SIZE 2
+#define REG_G2_BG2CNT_PRIORITY_MASK 0x0003
+
+// G2_BG3CNT
+#define REG_G2_BG3CNT_SCREENSIZE_SHIFT 14
+#define REG_G2_BG3CNT_SCREENSIZE_SIZE 2
+#define REG_G2_BG3CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2_BG3CNT_AREAOVER_SHIFT 13
+#define REG_G2_BG3CNT_AREAOVER_SIZE 1
+#define REG_G2_BG3CNT_AREAOVER_MASK 0x2000
+
+#define REG_G2_BG3CNT_SCREENBASE_SHIFT 8
+#define REG_G2_BG3CNT_SCREENBASE_SIZE 5
+#define REG_G2_BG3CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2_BG3CNT_COLORMODE_SHIFT 7
+#define REG_G2_BG3CNT_COLORMODE_SIZE 1
+#define REG_G2_BG3CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2_BG3CNT_MOSAIC_SHIFT 6
+#define REG_G2_BG3CNT_MOSAIC_SIZE 1
+#define REG_G2_BG3CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2_BG3CNT_CHARBASE_SHIFT 2
+#define REG_G2_BG3CNT_CHARBASE_SIZE 4
+#define REG_G2_BG3CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2_BG3CNT_PRIORITY_SHIFT 0
+#define REG_G2_BG3CNT_PRIORITY_SIZE 2
+#define REG_G2_BG3CNT_PRIORITY_MASK 0x0003
+
+// G2S_DB_BG0CNT
+#define REG_G2S_DB_BG0CNT_SCREENSIZE_SHIFT 14
+#define REG_G2S_DB_BG0CNT_SCREENSIZE_SIZE 2
+#define REG_G2S_DB_BG0CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2S_DB_BG0CNT_BGPLTTSLOT_SHIFT 13
+#define REG_G2S_DB_BG0CNT_BGPLTTSLOT_SIZE 1
+#define REG_G2S_DB_BG0CNT_BGPLTTSLOT_MASK 0x2000
+
+#define REG_G2S_DB_BG0CNT_SCREENBASE_SHIFT 8
+#define REG_G2S_DB_BG0CNT_SCREENBASE_SIZE 5
+#define REG_G2S_DB_BG0CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2S_DB_BG0CNT_COLORMODE_SHIFT 7
+#define REG_G2S_DB_BG0CNT_COLORMODE_SIZE 1
+#define REG_G2S_DB_BG0CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2S_DB_BG0CNT_MOSAIC_SHIFT 6
+#define REG_G2S_DB_BG0CNT_MOSAIC_SIZE 1
+#define REG_G2S_DB_BG0CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2S_DB_BG0CNT_CHARBASE_SHIFT 2
+#define REG_G2S_DB_BG0CNT_CHARBASE_SIZE 4
+#define REG_G2S_DB_BG0CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2S_DB_BG0CNT_PRIORITY_SHIFT 0
+#define REG_G2S_DB_BG0CNT_PRIORITY_SIZE 2
+#define REG_G2S_DB_BG0CNT_PRIORITY_MASK 0x0003
+
+// G2S_DB_BG1CNT
+#define REG_G2S_DB_BG1CNT_SCREENSIZE_SHIFT 14
+#define REG_G2S_DB_BG1CNT_SCREENSIZE_SIZE 2
+#define REG_G2S_DB_BG1CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2S_DB_BG1CNT_BGPLTTSLOT_SHIFT 13
+#define REG_G2S_DB_BG1CNT_BGPLTTSLOT_SIZE 1
+#define REG_G2S_DB_BG1CNT_BGPLTTSLOT_MASK 0x2000
+
+#define REG_G2S_DB_BG1CNT_SCREENBASE_SHIFT 8
+#define REG_G2S_DB_BG1CNT_SCREENBASE_SIZE 5
+#define REG_G2S_DB_BG1CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2S_DB_BG1CNT_COLORMODE_SHIFT 7
+#define REG_G2S_DB_BG1CNT_COLORMODE_SIZE 1
+#define REG_G2S_DB_BG1CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2S_DB_BG1CNT_MOSAIC_SHIFT 6
+#define REG_G2S_DB_BG1CNT_MOSAIC_SIZE 1
+#define REG_G2S_DB_BG1CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2S_DB_BG1CNT_CHARBASE_SHIFT 2
+#define REG_G2S_DB_BG1CNT_CHARBASE_SIZE 4
+#define REG_G2S_DB_BG1CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2S_DB_BG1CNT_PRIORITY_SHIFT 0
+#define REG_G2S_DB_BG1CNT_PRIORITY_SIZE 2
+#define REG_G2S_DB_BG1CNT_PRIORITY_MASK 0x0003
+
+// G2S_DB_BG2CNT
+#define REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT 14
+#define REG_G2S_DB_BG2CNT_SCREENSIZE_SIZE 2
+#define REG_G2S_DB_BG2CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2S_DB_BG2CNT_AREAOVER_SHIFT 13
+#define REG_G2S_DB_BG2CNT_AREAOVER_SIZE 1
+#define REG_G2S_DB_BG2CNT_AREAOVER_MASK 0x2000
+
+#define REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT 8
+#define REG_G2S_DB_BG2CNT_SCREENBASE_SIZE 5
+#define REG_G2S_DB_BG2CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2S_DB_BG2CNT_COLORMODE_SHIFT 7
+#define REG_G2S_DB_BG2CNT_COLORMODE_SIZE 1
+#define REG_G2S_DB_BG2CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2S_DB_BG2CNT_MOSAIC_SHIFT 6
+#define REG_G2S_DB_BG2CNT_MOSAIC_SIZE 1
+#define REG_G2S_DB_BG2CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2S_DB_BG2CNT_CHARBASE_SHIFT 2
+#define REG_G2S_DB_BG2CNT_CHARBASE_SIZE 4
+#define REG_G2S_DB_BG2CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2S_DB_BG2CNT_PRIORITY_SHIFT 0
+#define REG_G2S_DB_BG2CNT_PRIORITY_SIZE 2
+#define REG_G2S_DB_BG2CNT_PRIORITY_MASK 0x0003
+
+// G2S_DB_BG3CNT
+#define REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT 14
+#define REG_G2S_DB_BG3CNT_SCREENSIZE_SIZE 2
+#define REG_G2S_DB_BG3CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2S_DB_BG3CNT_AREAOVER_SHIFT 13
+#define REG_G2S_DB_BG3CNT_AREAOVER_SIZE 1
+#define REG_G2S_DB_BG3CNT_AREAOVER_MASK 0x2000
+
+#define REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT 8
+#define REG_G2S_DB_BG3CNT_SCREENBASE_SIZE 5
+#define REG_G2S_DB_BG3CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2S_DB_BG3CNT_COLORMODE_SHIFT 7
+#define REG_G2S_DB_BG3CNT_COLORMODE_SIZE 1
+#define REG_G2S_DB_BG3CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2S_DB_BG3CNT_MOSAIC_SHIFT 6
+#define REG_G2S_DB_BG3CNT_MOSAIC_SIZE 1
+#define REG_G2S_DB_BG3CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2S_DB_BG3CNT_CHARBASE_SHIFT 2
+#define REG_G2S_DB_BG3CNT_CHARBASE_SIZE 4
+#define REG_G2S_DB_BG3CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2S_DB_BG3CNT_PRIORITY_SHIFT 0
+#define REG_G2S_DB_BG3CNT_PRIORITY_SIZE 2
+#define REG_G2S_DB_BG3CNT_PRIORITY_MASK 0x0003
+
#endif //POKEDIAMOND_ARM9_REGISTERS_H