summaryrefslogtreecommitdiff
path: root/src/code_800C9CC.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/code_800C9CC.c')
-rw-r--r--src/code_800C9CC.c172
1 files changed, 65 insertions, 107 deletions
diff --git a/src/code_800C9CC.c b/src/code_800C9CC.c
index ddc49c6..28ce10a 100644
--- a/src/code_800C9CC.c
+++ b/src/code_800C9CC.c
@@ -1,23 +1,17 @@
#include "global.h"
#include "input.h"
-
-struct unkStruct_809CC88
-{
- u16 padding;
- u16 unk2;
- u16 unk4;
- u16 unk6;
-};
+#include "bg.h"
extern u16 gRawKeyInput;
extern u8 gUnknown_202D6B8;
extern u8 gUnknown_202D6B9;
extern u16 gUnknown_202D7FA;
+extern u8 gUnknown_202D7FE;
-extern struct unkStruct_809CC88 gUnknown_202D698;
-extern struct unkStruct_809CC88 gUnknown_202D6A0;
-extern struct unkStruct_809CC88 gUnknown_202D6A8;
-extern struct unkStruct_809CC88 gUnknown_202D6B0;
+extern struct BGControlStruct gUnknown_202D698;
+extern struct BGControlStruct gUnknown_202D6A0;
+extern struct BGControlStruct gUnknown_202D6A8;
+extern struct BGControlStruct gUnknown_202D6B0;
void ReadKeyInput(struct Inputs *r0)
{
@@ -97,122 +91,86 @@ void sub_800CC44(s32 r0, s32 r1)
}
-void sub_800CC88(u32 r0, u32 r1)
+void SetBG0RegOffsets(s32 xoffset, s32 yoffset)
{
- gUnknown_202D698.unk4 = r0;
- gUnknown_202D698.unk6 = r1;
+ gUnknown_202D698.hofs = xoffset;
+ gUnknown_202D698.vofs = yoffset;
}
-void sub_800CC94(u32 r0, u32 r1)
+void SetBG1RegOffsets(s32 xoffset, s32 yoffset)
{
- gUnknown_202D6A0.unk4 = r0;
- gUnknown_202D6A0.unk6 = r1;
+ gUnknown_202D6A0.hofs = xoffset;
+ gUnknown_202D6A0.vofs = yoffset;
}
-void sub_800CCA0(u32 r0, u32 r1)
+void SetBG2RegOffsets(s32 xoffset, s32 yoffset)
{
- gUnknown_202D6A8.unk4 = r0;
- gUnknown_202D6A8.unk6 = r1;
+ gUnknown_202D6A8.hofs = xoffset;
+ gUnknown_202D6A8.vofs = yoffset;
}
-void sub_800CCAC(u32 r0, u32 r1)
+void SetBG3RegOffsets(s32 xoffset, s32 yoffset)
{
- gUnknown_202D6B0.unk4 = r0;
- gUnknown_202D6B0.unk6 = r1;
+ gUnknown_202D6B0.hofs = xoffset;
+ gUnknown_202D6B0.vofs = yoffset;
}
-void sub_800CCB8(s32 r0, u32 r1, u32 r2)
+void SetBGRegOffsets(s32 reg, u32 xoffset, s32 yoffset)
{
- if(r0 == 1)
- {
- goto _0800CCD4;
- }
- if(r0 <= 1)
- {
- goto _0800CCCA;
- }
- if(r0 == 2)
- {
- goto _0800CCDE;
+ switch (reg) {
+ default:
+ case 0: return SetBG0RegOffsets(xoffset, yoffset);
+ case 1: return SetBG1RegOffsets(xoffset, yoffset);
+ case 2: return SetBG2RegOffsets(xoffset, yoffset);
+ case 3: return SetBG3RegOffsets(xoffset, yoffset);
}
- if(r0 == 3)
- {
- goto _0800CCE8;
- }
-
- _0800CCCA:
- sub_800CC88(r1, r2);
- return;
- _0800CCD4:
- sub_800CC94(r1, r2);
- return;
- _0800CCDE:
- sub_800CCA0(r1, r2);
- return;
- _0800CCE8:
- sub_800CCAC(r1, r2);
}
-void sub_800CCF4(s32 r0, u32 r1)
+void SetBGRegXOffset(s32 reg, s32 offset)
{
- if(r0 == 1)
- {
- goto _0800CD10;
- }
- if(r0 <= 1)
- {
- goto _0800CD06;
+ switch (reg) {
+ default:
+ case 0:
+ gUnknown_202D698.hofs = offset;
+ break;
+ case 1:
+ gUnknown_202D6A0.hofs = offset;
+ break;
+ case 2:
+ gUnknown_202D6A8.hofs = offset;
+ break;
+ case 3:
+ gUnknown_202D6B0.hofs = offset;
+ break;
}
- if(r0 == 2)
- {
- goto _0800CD18;
- }
- if(r0 == 3)
- {
- goto _0800CD20;
- }
-
- _0800CD06:
- gUnknown_202D698.unk4 = r1;
- return;
- _0800CD10:
- gUnknown_202D6A0.unk4 = r1;
- return;
- _0800CD18:
- gUnknown_202D6A8.unk4 = r1;
- return;
- _0800CD20:
- gUnknown_202D6B0.unk4 = r1;
}
-void sub_800CD2C(s32 r0, u32 r1)
+void SetBGRegYOffset(s32 reg, s32 offset)
{
- if(r0 == 1)
- {
- goto _0800CD48;
- }
- if(r0 <= 1)
- {
- goto _0800CD3E;
- }
- if(r0 == 2)
- {
- goto _0800CD50;
- }
- if(r0 == 3)
- {
- goto _0800CD58;
+ switch (reg) {
+ default:
+ case 0:
+ gUnknown_202D698.vofs = offset;
+ break;
+ case 1:
+ gUnknown_202D6A0.vofs = offset;
+ break;
+ case 2:
+ gUnknown_202D6A8.vofs = offset;
+ break;
+ case 3:
+ gUnknown_202D6B0.vofs = offset;
+ break;
}
+}
- _0800CD3E:
- gUnknown_202D698.unk6 = r1;
- return;
- _0800CD48:
- gUnknown_202D6A0.unk6 = r1;
- return;
- _0800CD50:
- gUnknown_202D6A8.unk6 = r1;
- return;
- _0800CD58:
- gUnknown_202D6B0.unk6 = r1;
+void sub_800CD64(s32 r0, u8 r1)
+{
+ gUnknown_202D7FE = r1;
+ gUnknown_202D6A8.unk2 = r0 ? 0x8000 : 0;
+}
+
+void SetBGOBJEnableFlags(u32 mask)
+{
+ REG_DISPCNT = (REG_DISPCNT & 0xe0ff) | (~(mask << 8) & (DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON));
}