sub_811A428

This commit is contained in:
scnorton 2017-09-25 17:22:51 -04:00
parent 0984461aeb
commit cdfdd2a29a
2 changed files with 49 additions and 80 deletions

View file

@ -5,85 +5,6 @@
.text
thumb_func_start sub_811A428
sub_811A428: @ 811A428
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
ldr r1, =gTasks + 0x8
adds r6, r0, r1
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0x4
bhi _0811A4BC
lsls r0, 2
ldr r1, =_0811A454
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0811A454:
.4byte _0811A468
.4byte _0811A47C
.4byte _0811A482
.4byte _0811A498
.4byte _0811A4B0
_0811A468:
movs r0, 0
bl SetVBlankCallback
bl ResetSpriteData
bl FreeAllSpritePalettes
bl ResetPaletteFade
b _0811A4C0
_0811A47C:
bl sub_811F28C
b _0811A49C
_0811A482:
ldrb r4, [r6, 0x2]
adds r0, r5, 0
movs r1, 0x2
bl GetWordTaskArg
adds r1, r0, 0
ldrb r2, [r6, 0xE]
adds r0, r4, 0
bl sub_811A95C
b _0811A49C
_0811A498:
bl sub_811BF8C
_0811A49C:
lsls r0, 24
cmp r0, 0
bne _0811A4C0
adds r0, r5, 0
movs r1, 0x4
bl GetWordTaskArg
bl sub_811A4D0
b _0811A4C0
_0811A4B0:
bl sub_811BFA4
lsls r0, 24
cmp r0, 0
beq _0811A4C0
b _0811A4C6
_0811A4BC:
movs r0, 0
b _0811A4C8
_0811A4C0:
ldrh r0, [r6]
adds r0, 0x1
strh r0, [r6]
_0811A4C6:
movs r0, 0x1
_0811A4C8:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_811A428
thumb_func_start sub_811A4D0
sub_811A4D0: @ 811A4D0
push {r4,lr}

View file

@ -14,7 +14,7 @@
// Static RAM declarations
static void sub_811A2C0(u8);
static void sub_811A278(void);
/*static*/ bool8 sub_811A428(u8);
static bool8 sub_811A428(u8);
static void sub_811A2FC(u8);
/*static*/ u16 sub_811AAAC(void);
/*static*/ bool32 sub_811A88C(u16);
@ -22,6 +22,10 @@ static void sub_811A2FC(u8);
/*static*/ bool8 sub_811C170(void);
/*static*/ void sub_811A8A4(u16);
/*static*/ void sub_811A4D0(u32);
bool8 sub_811F28C(void);
bool8 sub_811A95C(u8, u32, u8);
bool8 sub_811BF8C(void);
bool8 sub_811BFA4(void);
// Static ROM declarations
@ -139,3 +143,47 @@ static void sub_811A2FC(u8 taskId)
break;
}
}
static bool8 sub_811A428(u8 taskId)
{
s16 *data;
data = gTasks[taskId].data;
switch (data[0])
{
case 0:
SetVBlankCallback(NULL);
ResetSpriteData();
FreeAllSpritePalettes();
ResetPaletteFade();
break;
case 1:
if (!sub_811F28C())
{
sub_811A4D0(GetWordTaskArg(taskId, 0x04));
}
break;
case 2:
if (!sub_811A95C(data[1], GetWordTaskArg(taskId, 0x02), data[7]))
{
sub_811A4D0(GetWordTaskArg(taskId, 0x04));
}
break;
case 3:
if (!sub_811BF8C())
{
sub_811A4D0(GetWordTaskArg(taskId, 0x04));
}
break;
case 4:
if (sub_811BFA4())
{
return TRUE;
}
break;
default:
return FALSE;
}
data[0] ++;
return TRUE;
}