summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/region_map.c81
1 files changed, 77 insertions, 4 deletions
diff --git a/src/region_map.c b/src/region_map.c
index 493533c93..e19e8e151 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -305,7 +305,7 @@ bool8 sub_80C4B30(u8 a0);
void sub_80C4BE4(void);
void sub_80C4C2C(u8 a0, u16 a1, u16 a2);
void sub_80C4C48(u16 a0);
-void sub_80C4C5C(u16 a0);
+void sub_80C4C5C(u16 a0, u16 a1);
void sub_80C4C74(u16 a0, u16 a1);
void sub_80C4C88(u16 a0);
void sub_80C4C9C(u8 a0, u8 a1);
@@ -373,6 +373,8 @@ extern const struct OamData gUnknown_83F1C68;
extern const struct OamData gUnknown_83F1C70;
extern const union AnimCmd *const gUnknown_83F1C94[];
extern const union AnimCmd *const gUnknown_83F1C98[];
+extern const u16 gUnknown_83F1CA0[];
+extern const u8 gUnknown_83F1CA4[][2];
extern const u8 *const gUnknown_83F1CAC[];
extern const u16 gUnknown_83F1E60[][2];
extern const u16 gUnknown_83F2178[][2];
@@ -1034,14 +1036,14 @@ void sub_80C0FE0(void)
{
sub_80C4BE4();
sub_80C4C2C(27, 4, 64);
- sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD);
+ sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD, gUnknown_20399D8->field_1CCD);
}
bool8 sub_80C1014(void)
{
if (gUnknown_20399D8->field_1CCD < 16)
{
- sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD);
+ sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD, gUnknown_20399D8->field_1CCD);
gUnknown_20399D8->field_1CCD += 2;
return FALSE;
}
@@ -1056,7 +1058,7 @@ bool8 sub_80C1058(void)
if (gUnknown_20399D8->field_1CCD >= 2)
{
gUnknown_20399D8->field_1CCD -= 2;
- sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD);
+ sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD, gUnknown_20399D8->field_1CCD);
return FALSE;
}
else
@@ -3140,3 +3142,74 @@ void sub_80C4BB8(void)
FREE_IF_NOT_NULL(gUnknown_20399F0[i]);
}
}
+
+void sub_80C4BE4(void)
+{
+ struct UnkStruct_80C4CF0 data = {};
+ sub_80C4C2C(0, 0, 0);
+ sub_80C4C48(0);
+ sub_80C4CF0(0, &data);
+ sub_80C4CF0(1, &data);
+ sub_80C4C74(0, 0);
+ sub_80C4C9C(0, 1);
+ sub_80C4C9C(1, 1);
+}
+
+void sub_80C4C2C(u8 a0, u16 a1, u16 a2)
+{
+ u16 regval = a0 << 8;
+ regval |= a1;
+ regval |= a2;
+ SetGpuReg(REG_OFFSET_BLDCNT, regval);
+}
+
+void sub_80C4C48(u16 a0)
+{
+ SetGpuReg(REG_OFFSET_BLDY, a0);
+}
+
+void sub_80C4C5C(u16 a0, u16 a1)
+{
+ u16 regval = a0 << 8;
+ regval |= a1;
+ SetGpuReg(REG_OFFSET_BLDALPHA, regval);
+}
+
+void sub_80C4C74(u16 a0, u16 a1)
+{
+ u16 regval = a1 << 8;
+ regval |= a0;
+ SetGpuReg(REG_OFFSET_WININ, regval);
+}
+
+void sub_80C4C88(u16 a0)
+{
+ SetGpuReg(REG_OFFSET_WINOUT, a0);
+}
+
+void sub_80C4C9C(u8 a0, u8 a1)
+{
+ u16 data[2];
+ memcpy(data, gUnknown_83F1CA0, 4);
+ switch (a1)
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) | data[a0]);
+ break;
+ case 1:
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, data[a0]);
+ break;
+ }
+}
+
+void sub_80C4CF0(u8 a0, const struct UnkStruct_80C4CF0 *a1)
+{
+ SetGpuReg(gUnknown_83F1CA4[a0][0], (a1->v2 << 8) | a1->v6);
+ SetGpuReg(gUnknown_83F1CA4[a0][1], (a1->v0 << 8) | a1->v4);
+}
+
+void sub_80C4D30(void)
+{
+ sub_80C4BB8();
+ sub_80C4BE4();
+}