summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhlosioneer <mattmdrr2@gmail.com>2019-02-12 00:51:54 -0500
committerPhlosioneer <mattmdrr2@gmail.com>2019-02-17 23:14:14 -0500
commitfb705e604743f30983145a184472570fdc42fe35 (patch)
tree9f91dd6b4840faf8033adf2a408e88ab5500dd45 /src
parent6466d0bea8e743f8dbba0b2d0bc2e4bce60ea501 (diff)
Decompiled sub_81C7170.
Diffstat (limited to 'src')
-rw-r--r--src/pokenav_main.c36
1 files changed, 34 insertions, 2 deletions
diff --git a/src/pokenav_main.c b/src/pokenav_main.c
index 2d5144a7f..4791cbc25 100644
--- a/src/pokenav_main.c
+++ b/src/pokenav_main.c
@@ -66,7 +66,7 @@ extern u8 gUnknown_0203CF3C;
extern void sub_81C7170(u8 a0);
extern void sub_81C71E4(u8 a0);
-u32 sub_81C7078(s32 a0, u32 a1)
+u32 sub_81C7078(u32 (*a0)(u32), u32 a1)
{
u16 taskId;
@@ -75,7 +75,7 @@ u32 sub_81C7078(s32 a0, u32 a1)
else
taskId = CreateTask(sub_81C71E4, a1);
- SetWordTaskArg(taskId, 1, a0);
+ SetWordTaskArg(taskId, 1, (u32)a0);
gTasks[taskId].data[3] = gUnknown_0203CF3C;
return ((gUnknown_0203CF3C++) << 16) | taskId;
@@ -112,4 +112,36 @@ bool32 sub_81C7124(u32 a0)
}
}
return FALSE;
+}
+
+void sub_81C7170(u8 taskId)
+{
+ s16 *dataPtr;
+ u32 (*func)(u32);
+ bool32 exitLoop;
+
+ func = (u32 (*)(u32))GetWordTaskArg(taskId, 1);
+ dataPtr = gTasks[taskId].data;
+ exitLoop = FALSE;
+ while (!exitLoop) {
+ u32 v1 =((u32 (*)(u32))func)(dataPtr[0]);
+ switch (v1) {
+ case 1:
+ dataPtr[0] = dataPtr[0] + 1;
+ break;
+ case 0:
+ dataPtr[0]++;
+ return;
+ case 4:
+ DestroyTask(taskId);
+ return;
+ default:
+ dataPtr[0] = v1 - 5;
+ break;
+ case 3:
+ break;
+ case 2:
+ return;
+ }
+ }
} \ No newline at end of file