sub_800CEB0

This commit is contained in:
PikalaxALT 2017-11-22 00:16:00 -05:00
parent 7a38a43f81
commit 73b0f9eb53
4 changed files with 42 additions and 66 deletions

View file

@ -5,70 +5,6 @@
.text
thumb_func_start sub_800CEB0
sub_800CEB0: @ 800CEB0
push {r4-r7,lr}
sub sp, 0x4
lsls r0, 16
lsrs r6, r0, 16
ldr r4, =gUnknown_03004140
ldrb r7, [r4, 0xE]
movs r0, 0
strb r0, [r4, 0xE]
movs r0, 0x1
strb r0, [r4, 0xF]
ldr r0, =gUnknown_03007890
ldr r0, [r0]
ldrb r5, [r0]
cmp r5, 0
bne _0800CEEC
adds r0, r6, 0
bl sub_800C36C
ldrb r0, [r4, 0x2]
cmp r0, 0x1
beq _0800CF04
bl sub_800D610
strb r5, [r4, 0xF]
strb r7, [r4, 0xE]
b _0800CF28
.pool
_0800CEEC:
mov r0, sp
bl rfu_UNI_PARENT_getDRAC_ACK
lsls r0, 16
cmp r0, 0
bne _0800CF04
mov r1, sp
ldrb r0, [r4, 0x3]
ldrb r1, [r1]
orrs r0, r1
ldrb r1, [r4, 0x3]
strb r0, [r4, 0x3]
_0800CF04:
ldr r4, =gUnknown_03004140
ldr r1, [r4, 0x44]
cmp r1, 0
beq _0800CF20
adds r0, r6, 0
bl _call_via_r1
bl rfu_waitREQComplete
ldrb r0, [r4, 0x2]
cmp r0, 0x2
bne _0800CF20
bl sub_800D610
_0800CF20:
ldr r1, =gUnknown_03004140
movs r0, 0
strb r0, [r1, 0xF]
strb r7, [r1, 0xE]
_0800CF28:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_800CEB0
thumb_func_start sub_800CF34
sub_800CF34: @ 800CF34
push {r4-r7,lr}

View file

@ -183,3 +183,4 @@ u8 rfu_NI_CHILD_setSendGameName(u8 a0, u8 a1);
void rfu_clearSlot(u8 a0, u8 a1);
bool16 rfu_CHILD_getConnectRecoveryStatus(u8 *status);
bool16 rfu_getConnectParentStatus(u8 *status, u8 *a1);
bool16 rfu_UNI_PARENT_getDRAC_ACK(u8 *a0);

View file

@ -74,7 +74,7 @@ struct UnkRfuStruct_1 {
/* 0x034 */ u16 unk_34[4];
/* 0x03c */ struct UnkLinkRfuStruct_02022B2C *unk_3c;
/* 0x040 */ void (*unk_40)(u8);
/* 0x044 */ void (*unk_44)(void);
/* 0x044 */ void (*unk_44)(u16);
/* 0x048 */ u8 filler_48[0xe78];
};

View file

@ -84,7 +84,7 @@ void rfu_REQ_sendData_wrapper(u8 r2)
rfu_REQ_sendData(r2);
}
int sub_800BF4C(void (*func1)(u8), void (*func2)(void))
int sub_800BF4C(void (*func1)(u8), void (*func2)(u16))
{
if (func1 == NULL)
{
@ -976,3 +976,42 @@ void sub_800C7B4(u16 r8, u16 r6)
sub_800D610();
}
}
void sub_800CEB0(u16 r6)
{
u8 r7;
u8 sp0;
r7 = gUnknown_03004140.unk_0e;
gUnknown_03004140.unk_0e = 0;
gUnknown_03004140.unk_0f = 1;
if (gUnknown_03007890->unk_00 == 0)
{
sub_800C36C(r6);
if (gUnknown_03004140.unk_02 != 1)
{
sub_800D610();
gUnknown_03004140.unk_0f = 0;
gUnknown_03004140.unk_0e = r7;
return;
}
}
else
{
if (!rfu_UNI_PARENT_getDRAC_ACK(&sp0))
{
gUnknown_03004140.unk_03 |= sp0;
}
}
if (gUnknown_03004140.unk_44 != NULL)
{
gUnknown_03004140.unk_44(r6);
rfu_waitREQComplete();
if (gUnknown_03004140.unk_02 == 2)
{
sub_800D610();
}
}
gUnknown_03004140.unk_0f = 0;
gUnknown_03004140.unk_0e = r7;
}