From 035c0b0ecd03f890f3f8ed13ae5cdc3f98c941db Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 19 Nov 2017 18:34:28 -0500 Subject: [PATCH] sub_800C744 --- asm/link_rfu.s | 64 ---------------------------------------------- include/link_rfu.h | 2 +- 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; + } +}