summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-06-22 22:59:22 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-06-22 22:59:22 -0400
commit29ed9d7aee11527bbe971dd1daa099e04d7e5bc9 (patch)
tree83482f67d7984b2cf1e4a22442a6b0234a1e9361 /src
parent9e14c471e6176d3b9eded4815f917b4a2e06d5cc (diff)
Up through ResetFieldTaskArgs
Diffstat (limited to 'src')
-rwxr-xr-x[-rw-r--r--]src/field_specials.c0
-rwxr-xr-x[-rw-r--r--]src/field_tasks.c65
2 files changed, 64 insertions, 1 deletions
diff --git a/src/field_specials.c b/src/field_specials.c
index 2cb2cf795..2cb2cf795 100644..100755
--- a/src/field_specials.c
+++ b/src/field_specials.c
diff --git a/src/field_tasks.c b/src/field_tasks.c
index 0b6cc2de4..d52bafe1c 100644..100755
--- a/src/field_tasks.c
+++ b/src/field_tasks.c
@@ -36,7 +36,7 @@ void Task_RunPerStepCallback(u8 taskId)
gUnknown_08376364[idx](taskId);
}
-void RunTimeBasedEvents(s16 *taskData)
+static void RunTimeBasedEvents(s16 *taskData)
{
switch (*taskData)
{
@@ -65,3 +65,66 @@ void Task_RunTimeBasedEvents(u8 taskId)
sub_80540D0(taskData + 1, taskData + 2);
}
}
+
+void Task_MuddySlope(u8);
+
+void SetUpFieldTasks(void)
+{
+ if (!FuncIsActiveTask(Task_RunPerStepCallback))
+ {
+ u8 taskId = CreateTask(Task_RunPerStepCallback, 0x50);
+ gTasks[taskId].data[0] = 0;
+ }
+ if (!FuncIsActiveTask(Task_MuddySlope))
+ {
+ CreateTask(Task_MuddySlope, 0x50);
+ }
+ if (!FuncIsActiveTask(Task_RunTimeBasedEvents))
+ {
+ CreateTask(Task_RunTimeBasedEvents, 0x50);
+ }
+}
+
+void ActivatePerStepCallback(u8 callback)
+{
+ s16 *dataPointer;
+ s16 *dataStart;
+ s16 zero;
+ u8 taskId = FindTaskIdByFunc(Task_RunPerStepCallback);
+ if (taskId != 0xff)
+ {
+ dataStart = gTasks[taskId].data;
+ zero = 0;
+ dataPointer = &dataStart[15];
+ do
+ {
+ *dataPointer-- = zero;
+ } while ((int)dataPointer >= (int)dataStart);
+ if (callback >= ARRAY_COUNT(gUnknown_08376364))
+ {
+ *dataStart = 0;
+ }
+ else
+ {
+ *dataStart = callback;
+ }
+ }
+}
+
+void ResetFieldTasksArgs(void)
+{
+ u8 taskId;
+ s16 *taskData;
+ taskId = FindTaskIdByFunc(Task_RunPerStepCallback);
+ if (taskId != 0xff)
+ {
+ taskData = gTasks[taskId].data;
+ }
+ taskId = FindTaskIdByFunc(Task_RunTimeBasedEvents);
+ if (taskId != 0xff)
+ {
+ taskData = gTasks[taskId].data;
+ taskData[1] = 0;
+ taskData[2] = 0;
+ }
+}