diff options
| -rw-r--r-- | asm/link_rfu.s | 64 | ||||
| -rw-r--r-- | include/link_rfu.h | 2 | ||||
| -rw-r--r-- | src/link_rfu.c | 44 | 
3 files changed, 43 insertions, 67 deletions
| diff --git a/asm/link_rfu.s b/asm/link_rfu.s index 169279f43..e33e66ed2 100644 --- a/asm/link_rfu.s +++ b/asm/link_rfu.s @@ -5,70 +5,6 @@  	.text -	thumb_func_start sub_800C744 -sub_800C744: @ 800C744 -	push {r4,lr} -	adds r3, r0, 0 -	ldr r0, =gUnknown_03004140 -	ldrb r1, [r0, 0x7] -	adds r4, r0, 0 -	cmp r1, 0x5 -	bne _0800C76E -	movs r2, 0x1 -	strb r2, [r4, 0x6] -	strb r1, [r4, 0x4] -	ldrh r0, [r4, 0x1C] -	strh r0, [r4, 0x1A] -	lsls r0, 16 -	cmp r0, 0 -	beq _0800C76C -	movs r0, 0x6 -	strb r0, [r4, 0x7] -	b _0800C76E -	.pool -_0800C76C: -	strb r2, [r4, 0x7] -_0800C76E: -	ldrb r0, [r4, 0x7] -	cmp r0, 0x1 -	bne _0800C798 -	strb r0, [r4, 0x6] -	movs r0, 0x5 -	strb r0, [r4, 0x4] -	adds r0, r3, 0 -	movs r1, 0x8C -	bl __umodsi3 -	strh r0, [r4, 0x1A] -	movs r1, 0x8C -	subs r1, r0 -	strh r1, [r4, 0x1C] -	lsls r0, 16 -	cmp r0, 0 -	beq _0800C794 -	movs r0, 0x2 -	b _0800C796 -_0800C794: -	movs r0, 0x3 -_0800C796: -	strb r0, [r4, 0x7] -_0800C798: -	ldrb r0, [r4, 0x7] -	cmp r0, 0x3 -	bne _0800C7AE -	movs r0, 0 -	strb r0, [r4, 0x6] -	movs r0, 0x28 -	strh r0, [r4, 0x1A] -	movs r0, 0x4 -	strb r0, [r4, 0x7] -	movs r0, 0x9 -	strb r0, [r4, 0x4] -_0800C7AE: -	pop {r4} -	pop {r0} -	bx r0 -	thumb_func_end sub_800C744 -  	thumb_func_start sub_800C7B4  sub_800C7B4: @ 800C7B4  	push {r4-r7,lr} diff --git a/include/link_rfu.h b/include/link_rfu.h index 12ff03330..7c1949bba 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -62,7 +62,7 @@ struct UnkRfuStruct_1 {      /* 0x016 */ u16 unk_16;      /* 0x018 */ u16 unk_18;      /* 0x01a */ u16 unk_1a; -    /* 0x01c */ u8 filler_1c[2]; +    /* 0x01c */ u16 unk_1c;      /* 0x01e */ u16 unk_1e;      /* 0x020 */ u16 *unk_20;      /* 0x024 */ u8 unk_24; diff --git a/src/link_rfu.c b/src/link_rfu.c index 6e0d3e249..de0b782f8 100644 --- a/src/link_rfu.c +++ b/src/link_rfu.c @@ -471,8 +471,8 @@ void sub_800C54C(u32 a0)          {              sub_800C744(a0);          } -        do { - +        do +        {              if (gUnknown_03004140.unk_04 != 0)              {                  rfu_waitREQComplete(); @@ -569,3 +569,43 @@ void sub_800C54C(u32 a0)          }      }  } + +void sub_800C744(u32 a0) +{ +    if (gUnknown_03004140.unk_07 == 5) +    { +        gUnknown_03004140.unk_06 = 1; +        gUnknown_03004140.unk_04 = 5; +        gUnknown_03004140.unk_1a = gUnknown_03004140.unk_1c; +        if (gUnknown_03004140.unk_1a) +        { +            gUnknown_03004140.unk_07 = 6; +        } +        else +        { +            gUnknown_03004140.unk_07 = 1; +        } +    } +    if (gUnknown_03004140.unk_07 == 1) +    { +        gUnknown_03004140.unk_06 = 1; +        gUnknown_03004140.unk_04 = 5; +        gUnknown_03004140.unk_1a = a0 % 140; +        gUnknown_03004140.unk_1c = 140 - gUnknown_03004140.unk_1a; +        if (gUnknown_03004140.unk_1a) +        { +            gUnknown_03004140.unk_07 = 2; +        } +        else +        { +            gUnknown_03004140.unk_07 = 3; +        } +    } +    if (gUnknown_03004140.unk_07 == 3) +    { +        gUnknown_03004140.unk_06 = 0; +        gUnknown_03004140.unk_1a = 40; +        gUnknown_03004140.unk_07 = 4; +        gUnknown_03004140.unk_04 = 9; +    } +} | 
