summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/link_rfu.s138
-rw-r--r--include/link_rfu.h32
-rw-r--r--src/link_rfu.c56
3 files changed, 86 insertions, 140 deletions
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index f187207cb..46d134786 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -7,144 +7,6 @@
@ file boundary?
- thumb_func_start sub_800D6C8
-sub_800D6C8: @ 800D6C8
- push {r4,r5,lr}
- adds r3, r0, 0
- movs r0, 0
- movs r4, 0
- movs r5, 0x46
-_0800D6D2:
- adds r2, r0, 0x1
- movs r1, 0x45
- muls r0, r5
- adds r0, r3
- adds r0, 0x45
-_0800D6DC:
- strb r4, [r0]
- subs r0, 0x1
- subs r1, 0x1
- cmp r1, 0
- bge _0800D6DC
- adds r0, r2, 0
- cmp r0, 0x1F
- ble _0800D6D2
- movs r1, 0
- ldr r2, =0x000008c1
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- movs r2, 0x8C
- lsls r2, 4
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r2, =0x000008c2
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r2, =0x000008c3
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_800D6C8
-
- thumb_func_start sub_800D724
-sub_800D724: @ 800D724
- push {r4,lr}
- adds r3, r0, 0
- movs r1, 0
- movs r4, 0
-_0800D72C:
- lsls r0, r1, 3
- adds r2, r1, 0x1
- subs r0, r1
- movs r1, 0xD
- lsls r0, 1
- adds r0, r3
- adds r0, 0xD
-_0800D73A:
- strb r4, [r0]
- subs r0, 0x1
- subs r1, 0x1
- cmp r1, 0
- bge _0800D73A
- adds r1, r2, 0
- cmp r1, 0x27
- ble _0800D72C
- movs r1, 0
- ldr r2, =0x00000231
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- movs r2, 0x8C
- lsls r2, 2
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r2, =0x00000232
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r2, =0x00000233
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_800D724
-
- thumb_func_start sub_800D780
-sub_800D780: @ 800D780
- push {r4,lr}
- adds r3, r0, 0
- movs r1, 0
- movs r4, 0
-_0800D788:
- lsls r0, r1, 8
- adds r2, r1, 0x1
- movs r1, 0xFF
- adds r0, r3
- adds r0, 0xFF
-_0800D792:
- strb r4, [r0]
- subs r0, 0x1
- subs r1, 0x1
- cmp r1, 0
- bge _0800D792
- adds r1, r2, 0
- cmp r1, 0x1
- ble _0800D788
- movs r1, 0
- ldr r2, =0x00000201
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- movs r2, 0x80
- lsls r2, 2
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r2, =0x00000202
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r2, =0x00000203
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_800D780
-
thumb_func_start sub_800D7D8
sub_800D7D8: @ 800D7D8
push {r4-r7,lr}
diff --git a/include/link_rfu.h b/include/link_rfu.h
index f82fbd05a..51ebab9cf 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -78,11 +78,39 @@ struct UnkRfuStruct_1 {
/* 0x048 */ u8 filler_48[0xe78];
};
+struct UnkRfuStruct_2_Sub_124 {
+ /* 0x000 */ u8 unk_00[32][70];
+ /* 0x8c0 */ vu8 unk_8c0;
+ /* 0x8c1 */ vu8 unk_8c1;
+ /* 0x8c2 */ vu8 unk_8c2;
+ /* 0x8c3 */ vu8 unk_8c3;
+};
+
+struct UnkRfuStruct_2_Sub_9e8 {
+ /* 0x000 */ u8 unk_00[40][14];
+ /* 0x230 */ vu8 unk_230;
+ /* 0x231 */ vu8 unk_231;
+ /* 0x232 */ vu8 unk_232;
+ /* 0x233 */ vu8 unk_233;
+};
+
+struct UnkRfuStruct_Sub_Unused {
+ /* 0x000 */ u8 unk_00[2][256];
+ /* 0x200 */ vu8 unk_200;
+ /* 0x201 */ vu8 unk_201;
+ /* 0x202 */ vu8 unk_202;
+ /* 0x203 */ vu8 unk_203;
+};
+
struct UnkRfuStruct_2 {
/* 0x000 */ u8 filler_00[13];
/* 0x00d */ u8 playerCount;
- /* 0x00e */ u8 filler_0e[0xcea];
-};
+ /* 0x00e */ u8 filler_0e[0x5e];
+ /* 0x06c */ u8 filler_6c[0xb8];
+ /* 0x124 */ struct UnkRfuStruct_2_Sub_124 unk_124;
+ /* 0x9e8 */ struct UnkRfuStruct_2_Sub_9e8 unk_9e8;
+ /* 0xc1c */ u8 filler_c1c[0xdc];
+}; // size = 0xcf8
// Exported RAM declarations
diff --git a/src/link_rfu.c b/src/link_rfu.c
index 704f272a3..4f2dbd186 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -1413,3 +1413,59 @@ void sub_800D658(void)
}
}
}
+
+// TODO: Is there a file boundary here?
+
+void sub_800D6C8(struct UnkRfuStruct_2_Sub_124 *ptr)
+{
+ int i;
+ int j;
+
+ for (i = 0; i < 32; i++)
+ {
+ for (j = 0; j < 70; j++)
+ {
+ ptr->unk_00[i][j] = 0;
+ }
+ }
+ ptr->unk_8c1 = 0;
+ ptr->unk_8c0 = 0;
+ ptr->unk_8c2 = 0;
+ ptr->unk_8c3 = 0;
+}
+
+void sub_800D724(struct UnkRfuStruct_2_Sub_9e8 *ptr)
+{
+ int i;
+ int j;
+
+ for (i = 0; i < 40; i++)
+ {
+ for (j = 0; j < 14; j++)
+ {
+ ptr->unk_00[i][j] = 0;
+ }
+ }
+ ptr->unk_231 = 0;
+ ptr->unk_230 = 0;
+ ptr->unk_232 = 0;
+ ptr->unk_233 = 0;
+}
+
+void sub_800D780(struct UnkRfuStruct_Sub_Unused *ptr)
+{
+ int i;
+ int j;
+
+ for (i = 0; i < 2; i++)
+ {
+ for (j = 0; j < 256; j++)
+ {
+ ptr->unk_00[i][j] = 0;
+ }
+ }
+ ptr->unk_201 = 0;
+ ptr->unk_200 = 0;
+ ptr->unk_202 = 0;
+ ptr->unk_203 = 0;
+}