updated branch with fix

This commit is contained in:
U-User-PC\User 2017-09-22 18:28:18 -04:00
parent ee277bff16
commit 3d16b884b9

View File

@ -99,6 +99,8 @@ s8 sub_81C08F8(s8 a);
void sub_81C4204(u8 a, u8 b); void sub_81C4204(u8 a, u8 b);
void sub_81C20F0(u8 taskId); void sub_81C20F0(u8 taskId);
u8 sub_81C0A50(struct Pokemon* mon); u8 sub_81C0A50(struct Pokemon* mon);
void sub_81C49E0();
void sub_81C0E24();
u8 sub_81BFB10(); u8 sub_81BFB10();
u8 sub_81B1250(); u8 sub_81B1250();
@ -702,298 +704,73 @@ void sub_81C0604(u8 taskId, s8 a)
} }
} }
#ifdef NONMATCHING
void sub_81C0704(u8 taskId) void sub_81C0704(u8 taskId)
{ {
s16 *data = gTasks[taskId].data; s16 *data = gTasks[taskId].data;
switch (data[0]) switch (data[0])
{ {
case 0: case 0:
StopCryAndClearCrySongs(); StopCryAndClearCrySongs();
data[0]++; break;
break; case 1:
case 1: sub_81C4898();
sub_81C4898(); DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D3]);
DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D3]); break;
data[0]++; case 2:
break; DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D4]);
case 2: break;
DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D4]); case 3:
data[0]++; sub_81C0098(&gUnknown_0203CF1C->currentPoke);
break; gUnknown_0203CF1C->unk40F0 = 0;
case 3: break;
sub_81C0098(&gUnknown_0203CF1C->currentPoke); case 4:
gUnknown_0203CF1C->unk40F0 = 0; if (sub_81C00F0(&gUnknown_0203CF1C->currentPoke) == 0)
data[0]++; return;
break; break;
case 4: case 5:
if (sub_81C00F0(&gUnknown_0203CF1C->currentPoke)) sub_81C49E0(&gUnknown_0203CF1C->currentPoke);
data[0]++; break;
break; case 6:
case 5: sub_81C4A08(&gUnknown_0203CF1C->currentPoke);
sub_81C49E0(&gUnknown_0203CF1C->currentPoke); break;
data[0]++; case 7:
break; if (gUnknown_0203CF1C->summary.unk7)
case 6: sub_81C2074(10, -2);
sub_81C4A08(&gUnknown_0203CF1C->currentPoke); sub_81C2228(&gUnknown_0203CF1C->currentPoke);
data[0]++; data[1] = 0;
break; break;
case 7: case 8:
if (gUnknown_0203CF1C->summary.unk7) gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentPoke, &data[1]);
sub_81C2074(10, -2); if (gUnknown_0203CF1C->unk40D3 == 0xFF)
sub_81C2228(&gUnknown_0203CF1C->currentPoke); return;
data[1] = 0; gSprites[gUnknown_0203CF1C->unk40D3].data2 = 1;
data[0]++; sub_81C0E24();
break; data[1] = 0;
case 8: break;
gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentPoke, &data[1]); case 9:
if (gUnknown_0203CF1C->unk40D3 != 0xFF) sub_81C4280();
{ break;
gSprites[gUnknown_0203CF1C->unk40D3].data2 = 1; case 10:
sub_81C0E24(); sub_81C25E8();
data[1] = 0; break;
data[0]++; case 11:
} sub_81C2D9C(gUnknown_0203CF1C->unk40C0);
break; sub_81C2524();
case 9: break;
sub_81C4280(); case 12:
data[0]++; gSprites[gUnknown_0203CF1C->unk40D3].data2 = 0;
break; break;
case 10: default:
sub_81C25E8(); if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0)
data[0]++; {
break; data[0] = 0;
case 11: gTasks[taskId].func = sub_81C0510;
sub_81C2D9C(gUnknown_0203CF1C->unk40C0); }
sub_81C2524(); return;
data[0]++;
break;
case 12:
gSprites[gUnknown_0203CF1C->unk40D3].data2 = 0;
data[0]++;
break;
case 13:
if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0)
{
TaskFunc *func;
data[0] = 0;
func = &gTasks[taskId].func;
*func = sub_81C0510;
}
} }
data[0]++;
} }
#else
__attribute__((naked))
void sub_81C0704(u8 taskId)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
lsls r0, 24\n\
lsrs r0, 24\n\
lsls r1, r0, 2\n\
adds r1, r0\n\
lsls r4, r1, 3\n\
ldr r6, =gTasks + 0x8\n\
adds r5, r4, r6\n\
movs r1, 0\n\
ldrsh r0, [r5, r1]\n\
cmp r0, 0xC\n\
bls _081C071E\n\
b _081C08BC\n\
_081C071E:\n\
lsls r0, 2\n\
ldr r1, =_081C0730\n\
adds r0, r1\n\
ldr r0, [r0]\n\
mov pc, r0\n\
.pool\n\
.align 2, 0\n\
_081C0730:\n\
.4byte _081C0764\n\
.4byte _081C076A\n\
.4byte _081C0780\n\
.4byte _081C07A8\n\
.4byte _081C07C8\n\
.4byte _081C07E0\n\
.4byte _081C07F0\n\
.4byte _081C0800\n\
.4byte _081C0828\n\
.4byte _081C086C\n\
.4byte _081C0872\n\
.4byte _081C0878\n\
.4byte _081C0894\n\
_081C0764:\n\
bl StopCryAndClearCrySongs\n\
b _081C08EC\n\
_081C076A:\n\
bl sub_81C4898\n\
ldr r0, =gUnknown_0203CF1C\n\
ldr r0, [r0]\n\
ldr r1, =0x000040d3\n\
b _081C0786\n\
.pool\n\
_081C0780:\n\
ldr r0, =gUnknown_0203CF1C\n\
ldr r0, [r0]\n\
ldr r1, =0x000040d4\n\
_081C0786:\n\
adds r0, r1\n\
ldrb r1, [r0]\n\
lsls r0, r1, 4\n\
adds r0, r1\n\
lsls r0, 2\n\
ldr r1, =gSprites\n\
adds r0, r1\n\
bl DestroySpriteAndFreeResources\n\
b _081C08EC\n\
.pool\n\
_081C07A8:\n\
ldr r4, =gUnknown_0203CF1C\n\
ldr r0, [r4]\n\
adds r0, 0xC\n\
bl sub_81C0098\n\
ldr r0, [r4]\n\
ldr r1, =0x000040f0\n\
adds r0, r1\n\
movs r1, 0\n\
strh r1, [r0]\n\
b _081C08EC\n\
.pool\n\
_081C07C8:\n\
ldr r0, =gUnknown_0203CF1C\n\
ldr r0, [r0]\n\
adds r0, 0xC\n\
bl sub_81C00F0\n\
lsls r0, 24\n\
cmp r0, 0\n\
bne _081C07DA\n\
b _081C08F2\n\
_081C07DA:\n\
b _081C08EC\n\
.pool\n\
_081C07E0:\n\
ldr r0, =gUnknown_0203CF1C\n\
ldr r0, [r0]\n\
adds r0, 0xC\n\
bl sub_81C49E0\n\
b _081C08EC\n\
.pool\n\
_081C07F0:\n\
ldr r0, =gUnknown_0203CF1C\n\
ldr r0, [r0]\n\
adds r0, 0xC\n\
bl sub_81C4A08\n\
b _081C08EC\n\
.pool\n\
_081C0800:\n\
ldr r4, =gUnknown_0203CF1C\n\
ldr r0, [r4]\n\
adds r0, 0x77\n\
ldrb r0, [r0]\n\
cmp r0, 0\n\
beq _081C0816\n\
movs r1, 0x2\n\
negs r1, r1\n\
movs r0, 0xA\n\
bl sub_81C2074\n\
_081C0816:\n\
ldr r0, [r4]\n\
adds r0, 0xC\n\
bl sub_81C2228\n\
movs r0, 0\n\
strh r0, [r5, 0x2]\n\
b _081C08EC\n\
.pool\n\
_081C0828:\n\
ldr r4, =gUnknown_0203CF1C\n\
ldr r0, [r4]\n\
adds r0, 0xC\n\
adds r1, r5, 0x2\n\
bl sub_81C45F4\n\
ldr r1, [r4]\n\
ldr r2, =0x000040d3\n\
adds r1, r2\n\
strb r0, [r1]\n\
ldr r0, [r4]\n\
adds r1, r0, r2\n\
ldrb r0, [r1]\n\
cmp r0, 0xFF\n\
beq _081C08F2\n\
ldr r2, =gSprites\n\
adds r1, r0, 0\n\
lsls r0, r1, 4\n\
adds r0, r1\n\
lsls r0, 2\n\
adds r0, r2\n\
movs r1, 0x1\n\
strh r1, [r0, 0x32]\n\
bl sub_81C0E24\n\
movs r0, 0\n\
strh r0, [r5, 0x2]\n\
b _081C08EC\n\
.pool\n\
_081C086C:\n\
bl sub_81C4280\n\
b _081C08EC\n\
_081C0872:\n\
bl sub_81C25E8\n\
b _081C08EC\n\
_081C0878:\n\
ldr r0, =gUnknown_0203CF1C\n\
ldr r0, [r0]\n\
ldr r1, =0x000040c0\n\
adds r0, r1\n\
ldrb r0, [r0]\n\
bl sub_81C2D9C\n\
bl sub_81C2524\n\
b _081C08EC\n\
.pool\n\
_081C0894:\n\
ldr r2, =gSprites\n\
ldr r0, =gUnknown_0203CF1C\n\
ldr r0, [r0]\n\
ldr r1, =0x000040d3\n\
adds r0, r1\n\
ldrb r1, [r0]\n\
lsls r0, r1, 4\n\
adds r0, r1\n\
lsls r0, 2\n\
adds r0, r2\n\
movs r1, 0\n\
strh r1, [r0, 0x32]\n\
b _081C08EC\n\
.pool\n\
_081C08BC:\n\
bl sub_81221EC\n\
lsls r0, 24\n\
cmp r0, 0\n\
bne _081C08F2\n\
ldr r0, =sub_81C20F0\n\
bl FuncIsActiveTask\n\
lsls r0, 24\n\
lsrs r0, 24\n\
cmp r0, 0\n\
bne _081C08F2\n\
strh r0, [r5]\n\
adds r0, r6, 0\n\
subs r0, 0x8\n\
adds r0, r4, r0\n\
ldr r1, =sub_81C0510\n\
str r1, [r0]\n\
b _081C08F2\n\
.pool\n\
_081C08EC:\n\
ldrh r0, [r5]\n\
adds r0, 0x1\n\
strh r0, [r5]\n\
_081C08F2:\n\
pop {r4-r6}\n\
pop {r0}\n\
bx r0\n\
.syntax divided\n");
}
#endif
#ifdef NONMATCHING #ifdef NONMATCHING
s8 sub_81C08F8(s8 a) s8 sub_81C08F8(s8 a)