mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-01-13 23:23:43 +01:00
Decompiled sub_81C7170.
This commit is contained in:
parent
6466d0bea8
commit
fb705e6047
@ -5,66 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_81C7170
|
|
||||||
sub_81C7170: @ 81C7170
|
|
||||||
push {r4-r7,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r5, r0, 24
|
|
||||||
adds r0, r5, 0
|
|
||||||
movs r1, 0x1
|
|
||||||
bl GetWordTaskArg
|
|
||||||
adds r6, r0, 0
|
|
||||||
lsls r0, r5, 2
|
|
||||||
adds r0, r5
|
|
||||||
lsls r0, 3
|
|
||||||
ldr r1, =gTasks + 0x8
|
|
||||||
adds r4, r0, r1
|
|
||||||
movs r7, 0
|
|
||||||
_081C718C:
|
|
||||||
movs r1, 0
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
bl _call_via_r6
|
|
||||||
cmp r0, 0x4
|
|
||||||
bhi _081C71D6
|
|
||||||
lsls r0, 2
|
|
||||||
ldr r1, =_081C71AC
|
|
||||||
adds r0, r1
|
|
||||||
ldr r0, [r0]
|
|
||||||
mov pc, r0
|
|
||||||
.pool
|
|
||||||
.align 2, 0
|
|
||||||
_081C71AC:
|
|
||||||
.4byte _081C71C6
|
|
||||||
.4byte _081C71C0
|
|
||||||
.4byte _081C71DE
|
|
||||||
.4byte _081C71DA
|
|
||||||
.4byte _081C71CE
|
|
||||||
_081C71C0:
|
|
||||||
ldrh r0, [r4]
|
|
||||||
adds r0, 0x1
|
|
||||||
b _081C71D8
|
|
||||||
_081C71C6:
|
|
||||||
ldrh r0, [r4]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4]
|
|
||||||
b _081C71DE
|
|
||||||
_081C71CE:
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl DestroyTask
|
|
||||||
b _081C71DE
|
|
||||||
_081C71D6:
|
|
||||||
subs r0, 0x5
|
|
||||||
_081C71D8:
|
|
||||||
strh r0, [r4]
|
|
||||||
_081C71DA:
|
|
||||||
cmp r7, 0
|
|
||||||
beq _081C718C
|
|
||||||
_081C71DE:
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_81C7170
|
|
||||||
|
|
||||||
thumb_func_start sub_81C71E4
|
thumb_func_start sub_81C71E4
|
||||||
sub_81C71E4: @ 81C71E4
|
sub_81C71E4: @ 81C71E4
|
||||||
push {r4,r5,lr}
|
push {r4,r5,lr}
|
||||||
|
@ -66,7 +66,7 @@ extern u8 gUnknown_0203CF3C;
|
|||||||
extern void sub_81C7170(u8 a0);
|
extern void sub_81C7170(u8 a0);
|
||||||
extern void sub_81C71E4(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;
|
u16 taskId;
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ u32 sub_81C7078(s32 a0, u32 a1)
|
|||||||
else
|
else
|
||||||
taskId = CreateTask(sub_81C71E4, a1);
|
taskId = CreateTask(sub_81C71E4, a1);
|
||||||
|
|
||||||
SetWordTaskArg(taskId, 1, a0);
|
SetWordTaskArg(taskId, 1, (u32)a0);
|
||||||
|
|
||||||
gTasks[taskId].data[3] = gUnknown_0203CF3C;
|
gTasks[taskId].data[3] = gUnknown_0203CF3C;
|
||||||
return ((gUnknown_0203CF3C++) << 16) | taskId;
|
return ((gUnknown_0203CF3C++) << 16) | taskId;
|
||||||
@ -112,4 +112,36 @@ bool32 sub_81C7124(u32 a0)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return FALSE;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user