sub_800C7B4
This commit is contained in:
+367
@@ -32,7 +32,10 @@ void sub_800D610(void);
|
||||
void sub_800C744(u32 a0);
|
||||
void sub_800CF34(void);
|
||||
void sub_800D158(void);
|
||||
void sub_800D20C(void);
|
||||
void sub_800D268(void);
|
||||
u8 sub_800D294(void);
|
||||
void sub_800D358(void);
|
||||
void sub_800D434(void);
|
||||
|
||||
// .rodata
|
||||
@@ -609,3 +612,367 @@ void sub_800C744(u32 a0)
|
||||
gUnknown_03004140.unk_04 = 9;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800C7B4(u16 r8, u16 r6)
|
||||
{
|
||||
u8 sp0;
|
||||
register u8 *stwiRecvBuffer asm("r0");
|
||||
u8 *tmp;
|
||||
u8 i;
|
||||
|
||||
if (gUnknown_03004140.unk_0e != 0)
|
||||
{
|
||||
gUnknown_03004140.unk_0e = 0;
|
||||
switch (r8)
|
||||
{
|
||||
case 16:
|
||||
if (r6 == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05;
|
||||
gUnknown_03004140.unk_05 = 4;
|
||||
}
|
||||
break;
|
||||
case 23:
|
||||
if (r6 == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05;
|
||||
gUnknown_03004140.unk_05 = 0;
|
||||
}
|
||||
break;
|
||||
case 22:
|
||||
if (r6 == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0;
|
||||
sub_800D30C(0x00, 0x00);
|
||||
}
|
||||
break;
|
||||
case 25:
|
||||
if (r6 == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 6;
|
||||
}
|
||||
break;
|
||||
case 26:
|
||||
if (gUnknown_03004140.unk_1a && --gUnknown_03004140.unk_1a == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = 7;
|
||||
gUnknown_03004140.unk_05 = 8;
|
||||
}
|
||||
break;
|
||||
case 27:
|
||||
if (r6 == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05;
|
||||
gUnknown_03004140.unk_05 = 0;
|
||||
if (gUnknown_03004140.unk_07 == 0)
|
||||
{
|
||||
sub_800D30C(0x13, 0x00);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 28:
|
||||
if (r6 == 0)
|
||||
{
|
||||
if (gUnknown_03004140.unk_0b == 1 && gUnknown_03004140.unk_1a > 1)
|
||||
{
|
||||
gUnknown_03004140.unk_1a--;
|
||||
}
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 10;
|
||||
}
|
||||
break;
|
||||
case 29:
|
||||
if (r6 == 0)
|
||||
{
|
||||
sp0 = sub_800D294();
|
||||
gUnknown_03004140.unk_14 = sp0;
|
||||
if (sp0)
|
||||
{
|
||||
sub_800D30C(0x20, 0x01);
|
||||
}
|
||||
if (gUnknown_03004140.unk_0b && gUnknown_03004140.unk_1a != 1 && gUnknown_03007890->unk_08 == 4)
|
||||
{
|
||||
rfu_REQ_endSearchParent();
|
||||
rfu_waitREQComplete();
|
||||
gUnknown_03004140.unk_04 = 9;
|
||||
gUnknown_03004140.unk_0b = 1;
|
||||
}
|
||||
}
|
||||
if (gUnknown_03004140.unk_1a && --gUnknown_03004140.unk_1a == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = 11;
|
||||
gUnknown_03004140.unk_05 = 0;
|
||||
}
|
||||
break;
|
||||
case 30:
|
||||
if (r6 == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05;
|
||||
if (gUnknown_03004140.unk_07 == 0)
|
||||
{
|
||||
if (gUnknown_03004140.unk_04 == 0)
|
||||
{
|
||||
sub_800D30C(0x21, 0x00);
|
||||
}
|
||||
}
|
||||
else if (gUnknown_03004140.unk_07 != 7)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = 5;
|
||||
gUnknown_03004140.unk_07 = 5;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 31:
|
||||
if (r6 == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 13;
|
||||
}
|
||||
break;
|
||||
case 32:
|
||||
if (r6 == 0 && !rfu_getConnectParentStatus(&sp0, &gUnknown_03004140.unk_10) && !sp0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = 14;
|
||||
}
|
||||
if (gUnknown_03004140.unk_1a && --gUnknown_03004140.unk_1a == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = 14;
|
||||
}
|
||||
break;
|
||||
case 33:
|
||||
if (r6 == 0 && !rfu_getConnectParentStatus(&sp0, &gUnknown_03004140.unk_10))
|
||||
{
|
||||
if (!sp0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = 19;
|
||||
gUnknown_03004140.unk_05 = 15;
|
||||
gUnknown_03004140.unk_1e = 0x22;
|
||||
gUnknown_03004140.unk_14 = gUnknown_03004140.unk_10;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0;
|
||||
gUnknown_03004140.unk_1e = 0x23;
|
||||
gUnknown_03004140.unk_14 = sp0;
|
||||
if (gUnknown_03004140.unk_07)
|
||||
{
|
||||
gUnknown_03004140.unk_07 = 3;
|
||||
gUnknown_03004140.unk_04 = 9;
|
||||
}
|
||||
}
|
||||
sub_800D30C(gUnknown_03004140.unk_1e, 0x01);
|
||||
gUnknown_03004140.unk_1e = 0;
|
||||
}
|
||||
break;
|
||||
case 50:
|
||||
if (r6 == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_14 = gUnknown_03007890->unk_03;
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 17;
|
||||
for (gUnknown_03004140.unk_10 = 0; gUnknown_03004140.unk_10 < 4; gUnknown_03004140.unk_10 ++)
|
||||
{
|
||||
if ((gUnknown_03007890->unk_03 >> gUnknown_03004140.unk_10) & 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 51:
|
||||
if (r6 == 0 && !rfu_CHILD_getConnectRecoveryStatus(&sp0) && sp0 < 2)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = 18;
|
||||
}
|
||||
if (gUnknown_03004140.unk_34[gUnknown_03004140.unk_10] && --gUnknown_03004140.unk_34[gUnknown_03004140.unk_10] == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = 18;
|
||||
}
|
||||
break;
|
||||
case 52:
|
||||
if (r6 == 0 && !rfu_CHILD_getConnectRecoveryStatus(&sp0))
|
||||
{
|
||||
if (!sp0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = 19;
|
||||
gUnknown_03004140.unk_05 = 22;
|
||||
gUnknown_03004140.unk_1e = 0x32;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0;
|
||||
sub_800D334(gUnknown_03007890->unk_03);
|
||||
gUnknown_03004140.unk_1e = 0x33;
|
||||
}
|
||||
gUnknown_03004140.unk_34[gUnknown_03004140.unk_10] = 0;
|
||||
gUnknown_03004140.unk_30 = 0;
|
||||
gUnknown_03004140.unk_0a = 0;
|
||||
sub_800D30C(gUnknown_03004140.unk_1e, 0x01);
|
||||
gUnknown_03004140.unk_1e = 0;
|
||||
}
|
||||
break;
|
||||
case 39:
|
||||
if (r6 == 0)
|
||||
{
|
||||
if (gUnknown_03004140.unk_05 == 22)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_11;
|
||||
gUnknown_03004140.unk_05 = gUnknown_03004140.unk_12;
|
||||
gUnknown_03004140.unk_02 = 1;
|
||||
sub_800D30C(0x41, 0x00);
|
||||
}
|
||||
else if (gUnknown_03004140.unk_05 == 15)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05;
|
||||
gUnknown_03004140.unk_02 = 1;
|
||||
sub_800D30C(0x41, 0x00);
|
||||
gUnknown_03004140.unk_24 |= 1 << gUnknown_03004140.unk_10;
|
||||
gUnknown_03004140.unk_28[gUnknown_03004140.unk_10] = gUnknown_03004140.unk_26;
|
||||
rfu_clearSlot(4, gUnknown_03004140.unk_10);
|
||||
tmp = &sp0;
|
||||
*tmp = rfu_NI_CHILD_setSendGameName(gUnknown_03004140.unk_10, 0x0e);
|
||||
if (*tmp)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0;
|
||||
sub_800D610();
|
||||
sub_800D334(gUnknown_03007890->unk_02 | gUnknown_03007890->unk_03);
|
||||
gUnknown_03004140.unk_14 = sp0;
|
||||
sub_800D30C(0x25, 0x01);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 61:
|
||||
if (r6 == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0;
|
||||
sub_800D30C(0x42, 0x00);
|
||||
}
|
||||
break;
|
||||
}
|
||||
gUnknown_03004140.unk_0e = 1;
|
||||
}
|
||||
else if (r6 == 3 && gUnknown_03004140.unk_0f && (r8 == 0x24 || r8 == 0x26 || r8 == 0x27))
|
||||
{
|
||||
rfu_REQ_RFUStatus();
|
||||
rfu_waitREQComplete();
|
||||
rfu_getRFUStatus(&sp0);
|
||||
if (sp0 == 0 && gUnknown_03007890->unk_00 == 0)
|
||||
{
|
||||
stwiRecvBuffer = rfu_getSTWIRecvBuffer();
|
||||
stwiRecvBuffer[4] = gUnknown_03007890->unk_02;
|
||||
stwiRecvBuffer[5] = 1;
|
||||
sub_800C36C(0x29);
|
||||
r6 = 0;
|
||||
}
|
||||
}
|
||||
switch (r8)
|
||||
{
|
||||
case 48:
|
||||
if (r6 == 0)
|
||||
{
|
||||
stwiRecvBuffer = rfu_getSTWIRecvBuffer();
|
||||
gUnknown_03004140.unk_14 = stwiRecvBuffer[8];
|
||||
sub_800D358();
|
||||
if (gUnknown_03004140.unk_30)
|
||||
{
|
||||
gUnknown_03004140.unk_30 &= ~gUnknown_03004140.unk_14;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if ((gUnknown_03004140.unk_14 >> i) & 1)
|
||||
{
|
||||
gUnknown_03004140.unk_34[i] = 0;
|
||||
}
|
||||
}
|
||||
if (gUnknown_03004140.unk_06 == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0;
|
||||
}
|
||||
}
|
||||
sp0 = gUnknown_03004140.unk_00 & gUnknown_03004140.unk_14;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if ((sp0 >> i) & 1 && gUnknown_03004140.unk_01)
|
||||
{
|
||||
gUnknown_03004140.unk_01--;
|
||||
}
|
||||
}
|
||||
gUnknown_03004140.unk_00 &= ~gUnknown_03004140.unk_14;
|
||||
if (gUnknown_03004140.unk_07)
|
||||
{
|
||||
if (gUnknown_03007890->unk_00 == 0xFF)
|
||||
{
|
||||
if (gUnknown_03004140.unk_07 == 8)
|
||||
{
|
||||
gUnknown_03004140.unk_1a = gUnknown_03004140.unk_1c;
|
||||
gUnknown_03004140.unk_07 = 6;
|
||||
gUnknown_03004140.unk_04 = 6;
|
||||
}
|
||||
else if (gUnknown_03004140.unk_04 != 6 && gUnknown_03004140.unk_04 != 7)
|
||||
{
|
||||
gUnknown_03004140.unk_07 = 1;
|
||||
gUnknown_03004140.unk_04 = 5;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (gUnknown_03007890->unk_00 == 0xFF)
|
||||
{
|
||||
if (gUnknown_03004140.unk_04 == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_06 = -1;
|
||||
}
|
||||
}
|
||||
if (gUnknown_03004140.unk_0e == 0)
|
||||
{
|
||||
sub_800D30C(0x40, 0x01);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 38:
|
||||
sub_800D20C();
|
||||
if (gUnknown_03007890->unk_00 != 0xFF)
|
||||
{
|
||||
sub_800D30C(0x50, 0x00);
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
case 61:
|
||||
if (r6 == 0)
|
||||
{
|
||||
gUnknown_03004140.unk_0d = 0;
|
||||
gUnknown_03004140.unk_01 = 0;
|
||||
gUnknown_03004140.unk_00 = 0;;
|
||||
gUnknown_03004140.unk_06 = -1;
|
||||
sub_800D610();
|
||||
if (r8 == 61)
|
||||
{
|
||||
sub_800BFA0();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (r6 != 0)
|
||||
{
|
||||
if (r8 == 28 && r6 != 0 && gUnknown_03004140.unk_07 == 4)
|
||||
{
|
||||
gUnknown_03007890->unk_00 = 1;
|
||||
gUnknown_03007890->unk_02 = 15;
|
||||
sub_800D334(15);
|
||||
rfu_waitREQComplete();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_03004140.unk_14 = r8;
|
||||
gUnknown_03004140.unk_16 = r6;
|
||||
if (gUnknown_03004140.unk_0e)
|
||||
{
|
||||
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0;
|
||||
}
|
||||
sub_800D30C(0xf0, 0x02);
|
||||
sub_800D610();
|
||||
}
|
||||
}
|
||||
if (r8 == 0xFF)
|
||||
{
|
||||
sub_800D30C(0xf2, 0x00);
|
||||
sub_800D610();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user