diff options
author | Phlosioneer <mattmdrr2@gmail.com> | 2019-02-12 00:51:54 -0500 |
---|---|---|
committer | Phlosioneer <mattmdrr2@gmail.com> | 2019-02-17 23:14:14 -0500 |
commit | fb705e604743f30983145a184472570fdc42fe35 (patch) | |
tree | 9f91dd6b4840faf8033adf2a408e88ab5500dd45 /src | |
parent | 6466d0bea8e743f8dbba0b2d0bc2e4bce60ea501 (diff) |
Decompiled sub_81C7170.
Diffstat (limited to 'src')
-rw-r--r-- | src/pokenav_main.c | 36 |
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 |