summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-01-22 13:47:30 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-01-22 13:47:30 -0500
commitc4626ec2966d8d31140fc3cd26fee505d7f817d2 (patch)
tree113b6405d50e90dc87ebfa519ce70c58c7d175f0 /src
parent401276242af6e911104742ec6f34b54925b4c4b6 (diff)
Finish rfu_union_tool decomp
Diffstat (limited to 'src')
-rw-r--r--src/rfu_union_tool.c95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/rfu_union_tool.c b/src/rfu_union_tool.c
index 74dfaadd1..3a1b566e6 100644
--- a/src/rfu_union_tool.c
+++ b/src/rfu_union_tool.c
@@ -524,3 +524,98 @@ void sub_811BDA8(u32 r5, struct GFtgtGname * r4)
AGB_ASSERT_EX(0, ABSPATH("rfu_union_tool.c"), 979)
}
}
+
+void sub_811BE6C(u32 r5, struct GFtgtGname * unused)
+{
+ s32 i;
+ sub_811B90C(r5);
+ for (i = 0; i < 5; i++)
+ {
+ sub_811BC68(r5, i);
+ }
+}
+
+void sub_811BE8C(struct UnkStruct_URoom *r0)
+{
+ s32 i;
+ struct UnkStruct_x20 * r4;
+ gUnknown_203B088 = 0;
+ for (i = 0, r4 = r0->field_0->arr; i < 8; i++)
+ {
+ if (r4[i].field_1A_0 == 1)
+ {
+ sub_811BDA8(i, &r4[i].unk.field_0);
+ }
+ else if (r4[i].field_1A_0 == 2)
+ {
+ sub_811BE6C(i, &r4[i].unk.field_0);
+ }
+ }
+}
+
+void sub_811BECC(struct UnkStruct_URoom *unused)
+{
+ gUnknown_203B088 = 300;
+}
+
+void sub_811BEDC(struct UnkStruct_URoom *r2)
+{
+ if (++gUnknown_203B088 > 300)
+ {
+ sub_811BE8C(r2);
+ }
+}
+
+bool32 sub_811BF00(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3)
+{
+ s16 x, y;
+ s32 i, j;
+ struct UnkStruct_x20 * r4;
+ if (!is_walking_or_running())
+ {
+ return FALSE;
+ }
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ for (i = 0, r4 = arg0->arr; i < 8; i++)
+ {
+ for (j = 0; j < 5; j++)
+ {
+ s32 r3 = 5 * i + j;
+ if (x != gUnknown_84570EC[i][0] + gUnknown_845710C[j][0] + 7)
+ {
+ continue;
+ }
+ if (y != gUnknown_84570EC[i][1] + gUnknown_845710C[j][1] + 7)
+ {
+ continue;
+ }
+ if (sub_806916C(r3 - 0x38) != 0)
+ {
+ continue;
+ }
+ if (sub_8069294(r3 - 0x38) != 0)
+ {
+ continue;
+ }
+ if (r4[i].field_1A_0 != 1)
+ {
+ continue;
+ }
+ sub_811C008(j, i, gUnknown_8457116[GetPlayerFacingDirection()]);
+ *arg1 = j;
+ *arg2 = i;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void sub_811C008(s32 arg0, s32 arg1, u8 arg2)
+{
+ sub_8069058(5 * arg1 - 0x38 + arg0, arg2);
+}
+
+void sub_811C028(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2)
+{
+ return sub_811C008(arg0, arg1, sub_811BBA0(arg0, arg1, &arg2->arr[arg1].unk.field_0));
+}