summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDiegoisawesome <diego@domoreaweso.me>2017-09-09 20:52:33 -0500
committerDiegoisawesome <diego@domoreaweso.me>2017-09-09 20:52:33 -0500
commitf29fc55796cc5500f954b396264edc863f96f486 (patch)
treea583ec26e5cd29d4d52beb87e97c5dab489f6e8b /include
parent001d1027e38059654480707e90927ce0245faf29 (diff)
Cleanup bg.c
Diffstat (limited to 'include')
-rw-r--r--include/bg.h70
-rw-r--r--include/gba/defines.h6
2 files changed, 74 insertions, 2 deletions
diff --git a/include/bg.h b/include/bg.h
new file mode 100644
index 000000000..b9410afa3
--- /dev/null
+++ b/include/bg.h
@@ -0,0 +1,70 @@
+#ifndef GUARD_BG_H
+#define GUARD_BG_H
+
+#include "global.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 BgControl {
+ struct BgConfig {
+ u16 visible:1;
+ u16 unknown_1:1;
+ u16 screenSize:2;
+ u16 priority:2;
+ u16 mosaic:1;
+ u16 wraparound:1;
+
+ u16 charBaseIndex:2;
+ u16 mapBaseIndex:5;
+ u16 paletteMode:1;
+
+ u8 unknown_2;
+ u8 unknown_3;
+ } configs[4];
+
+ u16 bgVisibilityAndMode;
+};
+
+struct BgTemplate {
+ u32 bg:2;
+ u32 charBaseIndex:2;
+ u32 mapBaseIndex:5;
+ u32 screenSize:2;
+ u32 paletteMode:1;
+ u32 priority:2;
+ u32 baseTile:10;
+};
+
+struct BgConfig2 {
+ u32 baseTile:10;
+ u32 basePalette:4;
+ u32 unk_3:18;
+
+ void* tilemap;
+ u32 bg_x;
+ u32 bg_y;
+};
+
+bool32 IsInvalidBg32(u8);
+void ResetBgControlStructs();
+u16 GetBgMetricTextMode(u8, u8);
+u32 GetBgMetricAffineMode(u8, u8);
+u32 GetBgType(u8);
+void SetTextModeAndHideBgs();
+bool8 IsInvalidBg(u8);
+bool32 IsTileMapOutsideWram(u8);
+void CopyRectToBgTilemapBufferRect(u8, void*, u8, u8, u8, u8, u8, u8, u8, u8, u8, u16, u16);
+void CopyTileMapEntry(u16*, u16*, s32, u32, u32);
+u32 GetTileMapIndexFromCoords(s32, s32, s32, u32, u32);
+void WriteSequenceToBgTilemapBuffer(u8, u16, u8, u8, u8, u8, u8, s16);
+
+#endif // GUARD_BG_H
diff --git a/include/gba/defines.h b/include/gba/defines.h
index 66e5efcd1..e67d64777 100644
--- a/include/gba/defines.h
+++ b/include/gba/defines.h
@@ -34,8 +34,10 @@
#define BG_VRAM VRAM
#define BG_VRAM_SIZE 0x10000
-#define BG_CHAR_ADDR(n) (BG_VRAM + (0x4000 * (n)))
-#define BG_SCREEN_ADDR(n) (BG_VRAM + (0x800 * (n)))
+#define BG_CHAR_SIZE 0x4000
+#define BG_SCREEN_SIZE 0x800
+#define BG_CHAR_ADDR(n) (BG_VRAM + (BG_CHAR_SIZE * (n)))
+#define BG_SCREEN_ADDR(n) (BG_VRAM + (BG_SCREEN_SIZE * (n)))
// text-mode BG
#define OBJ_VRAM0 (VRAM + 0x10000)