summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/region_map.c95
1 files changed, 93 insertions, 2 deletions
diff --git a/src/region_map.c b/src/region_map.c
index 8ea4c9bb6..e8252065e 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -231,16 +231,18 @@ u8 sub_80C31C0(void);
u8 sub_80C3348(void);
u8 sub_80C3400(void);
void sub_80C3418(void);
-u8 sub_80C3878(u8 a0);
u16 sub_80C3520(void);
u8 sub_80C35DC(u8 a0);
+u8 sub_80C3878(u8 a0);
u8 sub_80C3AC8(u8 a0);
void sub_80C3D40(void);
u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3);
void sub_80C41D8(u16 a0, u16 a1);
void sub_80C4324(u8 a0);
-void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc);
void sub_80C4348(void);
+u16 sub_80C4380();
+u16 sub_80C438C();
+void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc);
void sub_80C48BC(u8 a0, u8 a1, u8 a2);
void sub_80C4960(u8 a0, u8 a1, u8 a2);
void sub_80C4A04(void);
@@ -2223,3 +2225,92 @@ u8 sub_80C3400(void)
{
return gUnknown_20399E4->field_010();
}
+
+void sub_80C3418(void)
+{
+ if (sub_80C0E04(0) == 1)
+ {
+ gUnknown_20399E4->field_00E++;
+ gUnknown_20399E4->field_00E %= 3;
+ if (gUnknown_20399E4->field_00E == 0 && sub_80C0E20() != sub_80C0E34())
+ {
+ gUnknown_20399E4->field_00E++;
+ }
+ switch (gUnknown_20399E4->field_00E)
+ {
+ case 0:
+ default:
+ gUnknown_20399E4->field_000 = sub_80C4380();
+ gUnknown_20399E4->field_002 = sub_80C438C();
+ break;
+ case 1:
+ gUnknown_20399E4->field_000 = 21;
+ gUnknown_20399E4->field_002 = 11;
+ break;
+ case 2:
+ gUnknown_20399E4->field_002 = 13;
+ gUnknown_20399E4->field_000 = 21;
+ break;
+ }
+ }
+ else
+ {
+ gUnknown_20399E4->field_00E++;
+ gUnknown_20399E4->field_00E %= 2;
+ switch (gUnknown_20399E4->field_00E)
+ {
+ case 0:
+ default:
+ gUnknown_20399E4->field_000 = sub_80C4380();
+ gUnknown_20399E4->field_002 = sub_80C438C();
+ break;
+ case 1:
+ gUnknown_20399E4->field_002 = 13;
+ gUnknown_20399E4->field_000 = 21;
+ break;
+ }
+ }
+ gUnknown_20399E4->field_01C->pos1.x = 8 * gUnknown_20399E4->field_000 + 36;
+ gUnknown_20399E4->field_01C->pos1.y = 8 * gUnknown_20399E4->field_002 + 36;
+ gUnknown_20399E4->field_014 = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000);
+}
+
+u16 sub_80C3508(void)
+{
+ return gUnknown_20399E4->field_000;
+}
+
+u16 sub_80C3514(void)
+{
+ return gUnknown_20399E4->field_002;
+}
+
+u16 sub_80C3520(void)
+{
+ u8 ret;
+ if (gUnknown_20399E4->field_002 < 0
+ || gUnknown_20399E4->field_002 > 14
+ || gUnknown_20399E4->field_000 < 0
+ || gUnknown_20399E4->field_000 > 21)
+ return MAPSEC_NONE;
+
+ ret = sub_80C4164(sub_80C0E20(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000);
+ if ((ret == MAPSEC_NAVEL_ROCK || ret == MAPSEC_BIRTH_ISLAND) && !FlagGet(FLAG_WORLD_MAP_NAVEL_ROCK_EXTERIOR))
+ ret = MAPSEC_NONE;
+ return ret;
+}
+
+u16 sub_80C3580(void)
+{
+ u8 ret;
+ if (gUnknown_20399E4->field_002 < 0
+ || gUnknown_20399E4->field_002 > 14
+ || gUnknown_20399E4->field_000 < 0
+ || gUnknown_20399E4->field_000 > 21)
+ return MAPSEC_NONE;
+
+ ret = sub_80C4164(sub_80C0E20(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000);
+ if (ret == MAPSEC_CERULEAN_CAVE && !FlagGet(FLAG_SYS_CAN_LINK_WITH_RS))
+ ret = MAPSEC_NONE;
+ return ret;
+}