summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-12-02 10:19:02 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-12-02 10:19:02 -0500
commitc282e4fa59bc88e874aa5056a3e57fc35b3fefe5 (patch)
treea4c8c1fc297d291c98b4808bb919ad4095b0d4f6
parente2244831a77723a1a565b8df24dda3ade00f584f (diff)
sub_800DBF8
-rw-r--r--asm/link_rfu.s168
-rw-r--r--include/link_rfu.h5
-rw-r--r--src/link_rfu.c63
3 files changed, 68 insertions, 168 deletions
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index 3667d39bc..1347ac077 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -7,174 +7,6 @@
@ file boundary?
- thumb_func_start sub_800DB84
-sub_800DB84: @ 800DB84
- push {r4,r5,lr}
- adds r3, r0, 0
- adds r5, r1, 0
- movs r1, 0x80
- lsls r1, 2
- adds r0, r3, r1
- adds r1, 0x1
- adds r4, r3, r1
- ldrb r1, [r0]
- ldrb r0, [r4]
- cmp r1, r0
- beq _0800DBA6
- ldr r1, =0x00000203
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0800DBB0
-_0800DBA6:
- movs r0, 0
- b _0800DBEA
- .pool
-_0800DBB0:
- movs r2, 0
-_0800DBB2:
- adds r0, r5, r2
- ldrb r1, [r4]
- lsls r1, 8
- adds r1, r2, r1
- adds r1, r3, r1
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0xFF
- ble _0800DBB2
- ldr r0, =0x00000201
- adds r1, r3, r0
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- ldrb r2, [r1]
- movs r0, 0x1
- ands r0, r2
- ldrb r2, [r1]
- strb r0, [r1]
- ldr r0, =0x00000202
- adds r1, r3, r0
- ldrb r0, [r1]
- subs r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- movs r0, 0x1
-_0800DBEA:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_800DB84
-
- thumb_func_start sub_800DBF8
-sub_800DBF8: @ 800DBF8
- push {r4-r7,lr}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r1, 0
- movs r5, 0
- cmp r1, 0x1
- beq _0800DC36
- cmp r1, 0x1
- bgt _0800DC12
- cmp r1, 0
- beq _0800DC1C
- b _0800DCAA
-_0800DC12:
- cmp r0, 0x2
- beq _0800DC56
- cmp r0, 0x3
- beq _0800DC76
- b _0800DCAA
-_0800DC1C:
- movs r4, 0
-_0800DC1E:
- adds r0, r6, r4
- adds r1, r4, 0x1
- strb r1, [r0]
- lsls r0, r5, 16
- asrs r0, 16
- adds r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r4, r1, 0
- cmp r4, 0xC7
- ble _0800DC1E
- b _0800DC70
-_0800DC36:
- movs r4, 0
- adds r2, r6, 0
- adds r2, 0xC8
-_0800DC3C:
- adds r0, r6, r4
- adds r1, r4, 0x1
- strb r1, [r0]
- lsls r0, r5, 16
- asrs r0, 16
- adds r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r4, r1, 0
- cmp r4, 0x63
- ble _0800DC3C
- strh r5, [r2]
- b _0800DCAA
-_0800DC56:
- movs r4, 0
-_0800DC58:
- bl Random
- lsls r0, 24
- lsrs r0, 24
- adds r1, r6, r4
- strb r0, [r1]
- adds r0, r5, r0
- lsls r0, 16
- lsrs r5, r0, 16
- adds r4, 0x1
- cmp r4, 0xC7
- ble _0800DC58
-_0800DC70:
- adds r0, r6, r4
- strh r5, [r0]
- b _0800DCAA
-_0800DC76:
- movs r4, 0
- ldr r3, =gUnknown_03000D74
- ldrb r1, [r3]
- ldrb r0, [r3]
- adds r7, r0, 0x1
- adds r2, r1, 0x1
- movs r0, 0xFF
- mov r12, r0
-_0800DC86:
- adds r0, r6, r4
- adds r1, r4, 0x1
- strb r2, [r0]
- adds r0, r4, r7
- mov r4, r12
- ands r0, r4
- adds r0, r5, r0
- lsls r0, 16
- lsrs r5, r0, 16
- adds r2, 0x1
- adds r4, r1, 0
- cmp r1, 0xC7
- ble _0800DC86
- adds r0, r6, r1
- strh r5, [r0]
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
-_0800DCAA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_800DBF8
-
thumb_func_start sub_800DCB4
sub_800DCB4: @ 800DCB4
push {r4,r5,lr}
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 28e244503..f02a0baef 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -109,6 +109,11 @@ struct UnkRfuStruct_Sub_Unused {
/* 0x203 */ vu8 unk_203;
};
+struct UnkRfuStruct_Sub_Unused2 {
+ /* 0x000 */ u8 unk_00[200];
+ /* 0x0c8 */ u16 unk_c8;
+};
+
struct UnkRfuStruct_2 {
/* 0x000 */ u8 filler_00[13];
/* 0x00d */ u8 playerCount;
diff --git a/src/link_rfu.c b/src/link_rfu.c
index 63776a298..608a6bdd3 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -1,6 +1,7 @@
// Includes
#include "global.h"
+#include "rng.h"
#include "link.h"
#include "librfu.h"
#include "link_rfu.h"
@@ -1665,3 +1666,65 @@ void sub_800DB18(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2)
q1->unk_203 = 1;
}
}
+
+bool8 sub_800DB84(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2)
+{
+ int i;
+
+ if (q1->unk_200 == q1->unk_201 || q1->unk_203)
+ {
+ return FALSE;
+ }
+ for (i = 0; i < 256; i++)
+ {
+ q2[i] = q1->unk_00[q1->unk_201][i];
+ }
+ q1->unk_201++;
+ q1->unk_201 %= 2;
+ q1->unk_202--;
+ return TRUE;
+}
+
+void sub_800DBF8(struct UnkRfuStruct_Sub_Unused2 *q1, u8 mode)
+{
+ int i;
+ u8 rval;
+ u16 r5 = 0;
+ switch (mode)
+ {
+ case 0:
+ for (i = 0; i < 200; i++)
+ {
+ q1->unk_00[i] = i + 1;
+ r5 += i + 1;
+ }
+ *((u16 *)(q1->unk_00 + i)) = r5;
+ break;
+ case 1:
+ for (i = 0; i < 100; i++)
+ {
+ q1->unk_00[i] = i + 1;
+ r5 += i + 1;
+ }
+ *((u16 *)(q1->unk_00 + 200)) = r5;
+ break;
+ case 2:
+ for (i = 0; i < 200; i++)
+ {
+ rval = Random();
+ q1->unk_00[i] = rval;
+ r5 += rval;
+ }
+ *((u16 *)(q1->unk_00 + i)) = r5;
+ break;
+ case 3:
+ for (i = 0; i < 200; i++)
+ {
+ q1->unk_00[i] = i + 1 + gUnknown_03000D74;
+ r5 += (i + 1 + gUnknown_03000D74) & 0xFF;
+ }
+ *((u16 *)(q1->unk_00 + i)) = r5;
+ gUnknown_03000D74++;
+ break;
+ }
+}