summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorfl4shk <fl4shk@users.noreply.github.com>2016-11-04 21:50:44 -0700
committerYamaArashi <shadow962@live.com>2016-11-05 10:29:27 -0700
commitbb020226fcf8f06258aaada4b39b61fb0f9f9d93 (patch)
treef9f1d0a59d9b650550622ed894f275f901fb427a /src
parent356e04a104f3ac8db482cfeb511dacfa7bde5e53 (diff)
heal_location.c and landmark.c
Diffstat (limited to 'src')
-rw-r--r--src/heal_location.c59
-rw-r--r--src/landmark.c127
2 files changed, 186 insertions, 0 deletions
diff --git a/src/heal_location.c b/src/heal_location.c
new file mode 100644
index 000000000..8975898f3
--- /dev/null
+++ b/src/heal_location.c
@@ -0,0 +1,59 @@
+#include "global.h"
+
+extern s8 gHealLocations[];
+
+
+u32 GetHealLocationIndexByMap(u16 arg_0, u16 arg_1)
+{
+ u32 i = 0;
+
+ s8 *temp = &(gHealLocations[0]);
+
+ for ( ; i<=0x15; i++)
+ {
+ if (temp[0] != arg_0)
+ {
+ temp += 8;
+ }
+ else if (temp[1] != arg_1)
+ {
+ temp += 8;
+ }
+ else
+ {
+ return i + 1;
+ }
+ }
+
+ return 0;
+}
+
+u32 GetHealLocationByMap(u16 arg_0, u16 arg_1)
+{
+ int temp = GetHealLocationIndexByMap(arg_0, arg_1);
+
+ if (!temp)
+ {
+ return 0;
+ }
+ else
+ {
+ return (u32)(gHealLocations - 8 + (temp << 3));
+ }
+}
+
+u32 GetHealLocation(u32 arg_0)
+{
+ if (arg_0 == 0)
+ {
+ return 0;
+ }
+ else if (arg_0 > 0x16)
+ {
+ return 0;
+ }
+ else
+ {
+ return (u32)(gHealLocations - 8 + (arg_0 << 3));
+ }
+}
diff --git a/src/landmark.c b/src/landmark.c
new file mode 100644
index 000000000..a343cecac
--- /dev/null
+++ b/src/landmark.c
@@ -0,0 +1,127 @@
+#include "global.h"
+
+struct Landmark
+{
+ u8 *name;
+ u16 flag_id;
+};
+
+struct LandmarkList
+{
+ u8 field_0;
+ u8 field_1;
+ u16 field_2;
+
+ struct Landmark **landmark_list;
+};
+
+extern const struct LandmarkList gLandmarkLists[];
+
+const struct Landmark **GetLandmarkList(u8 arg_0, u8 arg_1);
+
+u8 *GetLandmarkName(u8 arg_0, u8 arg_1, u8 count)
+{
+ register struct Landmark **landmark_list asm("r4")
+ = GetLandmarkList(arg_0, arg_1);
+
+ if (landmark_list == NULL)
+ {
+ return NULL;
+ }
+
+ while (1)
+ {
+ register struct Landmark *landmark asm("r1") = *landmark_list;
+
+ u16 temp_flag_id = landmark->flag_id;
+
+ if (temp_flag_id != 0xFFFF)
+ {
+ bool8 temp_flag = FlagGet(temp_flag_id);
+
+ if (temp_flag == TRUE)
+ {
+ if (count == 0)
+ {
+ break;
+ }
+ else
+ {
+ count--;
+ goto _0811A8F6;
+ }
+ }
+ else
+ {
+ goto _0811A8F6;
+ }
+ }
+ else
+ {
+ if (count == 0)
+ {
+ break;
+ }
+ else
+ {
+ count--;
+ goto _0811A8F6;
+ }
+ }
+
+ continue;
+
+ _0811A8F6:
+ landmark_list++;
+
+ if (*landmark_list == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ return (*landmark_list)->name;
+
+}
+
+
+const struct Landmark **GetLandmarkList(u8 arg_0, u8 arg_1)
+{
+ u16 i;
+
+ i = 0;
+
+ if (gLandmarkLists[0].field_0 == 0x58)
+ {
+ return NULL;
+ }
+
+
+ for (; gLandmarkLists[i].field_0 != 0x58; i++)
+ {
+ if (gLandmarkLists[i].field_0 > arg_0)
+ {
+ return NULL;
+ }
+ if (gLandmarkLists[i].field_0 == arg_0)
+ {
+ break;
+ }
+ }
+
+ if (gLandmarkLists[i].field_0 == 0x58)
+ {
+ return NULL;
+ }
+
+ for (; gLandmarkLists[i].field_0 == arg_0; i++)
+ {
+ if (gLandmarkLists[i].field_1 == arg_1)
+ {
+ return gLandmarkLists[i].landmark_list;
+ }
+ }
+
+ return 0;
+}
+