summaryrefslogtreecommitdiff
path: root/src/code_8041AD0.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2020-12-31 18:30:16 -0600
committerGitHub <noreply@github.com>2020-12-31 18:30:16 -0600
commit87cd9885a9f8b38a76ab6add4a634e2a8a4837ee (patch)
tree9e7e3352cc63bf5665d192c8ebbdfd6032641f74 /src/code_8041AD0.c
parent01ec8edb40c0662863e2fd14395a057be852e060 (diff)
Friend Area Decomp Work (#15)
split out and work on friend area stuff
Diffstat (limited to 'src/code_8041AD0.c')
-rw-r--r--src/code_8041AD0.c300
1 files changed, 191 insertions, 109 deletions
diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c
index be254ef..29b1710 100644
--- a/src/code_8041AD0.c
+++ b/src/code_8041AD0.c
@@ -1,6 +1,6 @@
#include "global.h"
-struct unkStruct_8041D5C
+struct unkDungeon_8041D5C
{
u8 padding[0x70];
u8 *unk70[100];
@@ -12,28 +12,42 @@ struct unk_struct_8041F08
u32 unk4;
};
+struct unkStruct_80420E8
+{
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+};
+
+extern u8 *gUnknown_203B418;
+
+
+extern void sub_803ED30(u8, struct unkDungeon_8041D5C *r0, u8, u8);
+extern void sub_804151C(struct unkDungeon_8041D5C *r0, u32 r1, u8 r2);
+extern void sub_80416E0(struct unkDungeon_8041D5C *r0, u32, u32);
+extern u8 sub_8042768(struct unkDungeon_8041D5C *r0);
+extern void sub_806CDD4(struct unkDungeon_8041D5C *r0, u8, u32);
+extern u8 sub_8071858(struct unkDungeon_8041D5C *r0, u8);
+extern u32 sub_806F62C(u32);
+extern void sub_8083E38(u32);
+extern u8 sub_803F428(struct unkDungeon_8041D5C *r0);
+extern void sub_8041550(struct unkDungeon_8041D5C *r0, u32, u32, u32);
-extern void sub_803ED30(u8, struct unkStruct_8041D5C *r0, u8, u8);
-extern void sub_804151C(u32 r0, u32 r1, u8 r2);
-extern void sub_80421C0(u32 r0, u32 r1);
-extern u8 sub_8042768(void);
-extern void sub_806CDD4(u32 r0, u8, u32);
-extern u8 sub_8071858(u32, u8);
-extern void sub_8041550(u32 r0, u32, u32, u32);
+void sub_80421C0(struct unkDungeon_8041D5C *r0, u16 r1);
-void sub_8041AD0(u32 r0)
+void sub_8041AD0(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0xA2 << 1, 1);
}
-void sub_8041AE0(u32 r0)
+void sub_8041AE0(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x143, 1);
}
-void sub_8041AF4(u32 r0)
+void sub_8041AF4(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x25, 1);
sub_80421C0(r0, 0x197);
@@ -43,7 +57,7 @@ void nullsub_57(void)
{
}
-void sub_8041B18(u32 r0)
+void sub_8041B18(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x141, 1);
}
@@ -56,7 +70,7 @@ void nullsub_59(void)
{
}
-void sub_8041B34(u32 r0)
+void sub_8041B34(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 7, 1);
}
@@ -65,7 +79,7 @@ void nullsub_60(void)
{
}
-void sub_8041B48(u32 r0)
+void sub_8041B48(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 4, 0);
}
@@ -74,16 +88,16 @@ void nullsub_61(void)
{
}
-void sub_8041B5C(u32 r0)
+void sub_8041B5C(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x171, 1);
}
-void nullsub_62(void)
+void nullsub_62(struct unkDungeon_8041D5C *r0)
{
}
-void sub_8041B74(u32 r0)
+void sub_8041B74(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x171, 0);
}
@@ -96,7 +110,7 @@ void nullsub_64(void)
{
}
-void sub_8041B90(u32 r0)
+void sub_8041B90(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0xD6 << 1, 0);
}
@@ -109,7 +123,7 @@ void nullsub_66(void)
{
}
-void sub_8041BA8(u32 r0)
+void sub_8041BA8(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 4, 1);
}
@@ -118,7 +132,7 @@ void nullsub_67(void)
{
}
-void sub_8041BBC(u32 r0)
+void sub_8041BBC(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0xD4 << 1, 1);
}
@@ -127,7 +141,7 @@ void nullsub_68(void)
{
}
-void sub_8041BD0(u32 r0, u8 r1)
+void sub_8041BD0(struct unkDungeon_8041D5C *r0, u8 r1)
{
if(r1 == 0)
{
@@ -136,22 +150,22 @@ void sub_8041BD0(u32 r0, u8 r1)
sub_80421C0(r0, 0x1a5);
}
-void sub_8041BE8(u32 r0)
+void sub_8041BE8(struct unkDungeon_8041D5C *r0)
{
sub_80421C0(r0, 0xCB << 1);
}
-void sub_8041BF8(u32 r0)
+void sub_8041BF8(struct unkDungeon_8041D5C *r0)
{
sub_806CDD4(r0, 0xA, 8);
}
-void sub_8041C08(u32 r0)
+void sub_8041C08(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x1a7, 1);
}
-void sub_8041C1C(u32 r0)
+void sub_8041C1C(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x1a7, 1);
}
@@ -160,7 +174,7 @@ void nullsub_69(void)
{
}
-void sub_8041C34(u32 r0)
+void sub_8041C34(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x4C, 1);
}
@@ -173,22 +187,22 @@ void nullsub_71(void)
{
}
-void sub_8041C4C(u32 r0, u32 r1)
+void sub_8041C4C(struct unkDungeon_8041D5C *r0, u32 r1)
{
sub_804151C(r0, r1, 1);
}
-void sub_8041C58(u32 r0)
+void sub_8041C58(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x1a9, 1);
}
-void sub_8041C6C(u32 r0)
+void sub_8041C6C(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x9D << 1, 1);
}
-void sub_8041C7C(u32 r0)
+void sub_8041C7C(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x9D << 1, 1);
}
@@ -201,32 +215,32 @@ void nullsub_73(void)
{
}
-void sub_8041C94(u32 r0)
+void sub_8041C94(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x171, 1);
}
-void sub_8041CA8(u32 r0)
+void sub_8041CA8(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 7, 1);
}
-void sub_8041CB8(u32 r0)
+void sub_8041CB8(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x18b, 1);
}
-void sub_8041CCC(u32 r0)
+void sub_8041CCC(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0xC5 << 1, 1);
}
-void sub_8041CDC(u32 r0)
+void sub_8041CDC(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 5, 1);
}
-void sub_8041CEC(u32 r0)
+void sub_8041CEC(struct unkDungeon_8041D5C *r0)
{
sub_80421C0(r0, 0x19d);
}
@@ -235,7 +249,7 @@ void nullsub_74(void)
{
}
-void sub_8041D00(u32 r0, u32 r1)
+void sub_8041D00(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C *r1)
{
sub_804151C(r1, 0x2F, 1);
sub_804151C(r0, 0x30, 1);
@@ -265,12 +279,12 @@ void nullsub_80(void)
{
}
-void sub_8041D38(u32 r0)
+void sub_8041D38(struct unkDungeon_8041D5C * r0)
{
sub_804151C(r0, 0x21, 1);
}
-void sub_8041D48(u32 r0)
+void sub_8041D48(struct unkDungeon_8041D5C * r0)
{
sub_80421C0(r0, 0x191);
}
@@ -279,10 +293,10 @@ void nullsub_81(void)
{
}
-void sub_8041D5C(struct unkStruct_8041D5C *r0)
+void sub_8041D5C(struct unkDungeon_8041D5C *r0)
{
u8 *temp;
- if(sub_8042768() == 0)
+ if(sub_8042768(r0) == 0)
{
return;
}
@@ -290,7 +304,7 @@ void sub_8041D5C(struct unkStruct_8041D5C *r0)
sub_803ED30(temp[0x89 << 1] , r0, 1, 0xB);
}
-void sub_8041D84(u32 r0)
+void sub_8041D84(struct unkDungeon_8041D5C * r0)
{
sub_80421C0(r0, 0x19f);
}
@@ -303,12 +317,12 @@ void nullsub_83(void)
{
}
-void sub_8041D9C(u32 r0)
+void sub_8041D9C(struct unkDungeon_8041D5C * r0)
{
sub_804151C(r0, 0x131, 1);
}
-void sub_8041DB0(u32 r0)
+void sub_8041DB0(struct unkDungeon_8041D5C * r0)
{
sub_804151C(r0, 0x30, 1);
}
@@ -337,122 +351,93 @@ void nullsub_88(void)
{
}
-#ifndef NONMATCHING
-NAKED
-#endif
-// TODO r1 is doing an lsr instead of an asr... maybe a signed arg?
-void sub_8041DD8(u32 r0, u16 r1)
+void sub_8041DD8(struct unkDungeon_8041D5C *r0, s16 r1)
{
-#ifdef NONMATCHING
+ u32 temp;
+ temp = r1;
+
if(sub_8071858(r0, 0xE) != 0)
- {
- sub_804151C(r0, r1, 1);
- return;
- }
- sub_804151C(r0, 0xE, 1);
-#else
- asm_unified("\tpush {r4,r5,lr}\n"
- "\tadds r4, r0, 0\n"
- "\tlsls r1, 16\n"
- "\tasrs r5, r1, 16\n"
- "\tmovs r1, 0xE\n"
- "\tbl sub_8071858\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbeq _08041DF8\n"
- "\tadds r0, r4, 0\n"
- "\tadds r1, r5, 0\n"
- "\tmovs r2, 0x1\n"
- "\tbl sub_804151C\n"
- "\tb _08041E02\n"
-"_08041DF8:\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0xE\n"
- "\tmovs r2, 0x1\n"
- "\tbl sub_804151C\n"
-"_08041E02:\n"
- "\tpop {r4,r5}\n"
- "\tpop {r0}\n"
- "\tbx r0");
-#endif
+ sub_804151C(r0, temp, 1);
+ else
+ sub_804151C(r0, 0xE, 1);
}
void nullsub_89(void)
{
}
-void sub_8041E0C(u32 r0)
+void sub_8041E0C(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x41, 1);
}
-void sub_8041E1C(u32 r0)
+void sub_8041E1C(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x8F << 1, 1);
sub_80421C0(r0, 0xCE << 1);
}
-void sub_8041E3C(u32 r0)
+void sub_8041E3C(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0xD7 << 1, 1);
}
-void sub_8041E4C(u32 r0)
+void sub_8041E4C(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x1b1, 1);
}
-void sub_8041E60(u32 r0)
+void sub_8041E60(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x1a9, 1);
}
-void sub_8041E74(u32 r0)
+void sub_8041E74(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0xC9 << 1, 1);
}
-void sub_8041E84(u32 r0)
+void sub_8041E84(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0xC7 << 1, 1);
}
-void sub_8041E94(u32 r0)
+void sub_8041E94(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0xC8 << 1, 1);
}
-void sub_8041EA4(u32 r0)
+void sub_8041EA4(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x15, 1);
}
-void sub_8041EB4(u32 r0)
+void sub_8041EB4(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x171, 1);
}
-void sub_8041EC8(u32 r0)
+void sub_8041EC8(struct unkDungeon_8041D5C *r0)
{
sub_80421C0(r0, 0x197);
}
-void sub_8041ED8(u32 r0)
+void sub_8041ED8(struct unkDungeon_8041D5C *r0)
{
sub_80421C0(r0, 0x197);
}
-void sub_8041EE8(u32 r0)
+void sub_8041EE8(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0x15, 1);
}
-void sub_8041EF8(u32 r0)
+void sub_8041EF8(struct unkDungeon_8041D5C *r0)
{
sub_804151C(r0, 0xF, 1);
}
-void sub_8041F08(u32 r0)
+void sub_8041F08(struct unkDungeon_8041D5C *r0)
{
volatile struct unk_struct_8041F08 temp;
temp.unk0 = 2;
@@ -464,7 +449,7 @@ void nullsub_90(void)
{
}
-void sub_8041F28(u32 r0, u32 r1)
+void sub_8041F28(struct unkDungeon_8041D5C *r0, u32 r1)
{
if(r1 == 0)
{
@@ -476,7 +461,7 @@ void sub_8041F28(u32 r0, u32 r1)
}
}
-void sub_8041F4C(u32 r0, u32 r1)
+void sub_8041F4C(struct unkDungeon_8041D5C *r0, u32 r1)
{
if(r1 == 0)
{
@@ -488,7 +473,7 @@ void sub_8041F4C(u32 r0, u32 r1)
}
}
-void sub_8041F70(u32 r0, u32 r1)
+void sub_8041F70(struct unkDungeon_8041D5C *r0, u32 r1)
{
if(r1 == 0)
{
@@ -500,7 +485,7 @@ void sub_8041F70(u32 r0, u32 r1)
}
}
-void sub_8041F94(u32 r0, u32 r1)
+void sub_8041F94(struct unkDungeon_8041D5C *r0, u32 r1)
{
if(r1 == 0)
{
@@ -512,7 +497,7 @@ void sub_8041F94(u32 r0, u32 r1)
}
}
-void sub_8041FB4(u32 r0, u32 r1)
+void sub_8041FB4(struct unkDungeon_8041D5C *r0, u32 r1)
{
if(r1 == 0)
{
@@ -524,7 +509,7 @@ void sub_8041FB4(u32 r0, u32 r1)
}
}
-void sub_8041FD8(u32 r0, u32 r1)
+void sub_8041FD8(struct unkDungeon_8041D5C *r0, u32 r1)
{
if(r1 == 0)
{
@@ -536,7 +521,7 @@ void sub_8041FD8(u32 r0, u32 r1)
}
}
-void sub_8041FFC(u32 r0, u32 r1)
+void sub_8041FFC(struct unkDungeon_8041D5C *r0, u32 r1)
{
if(r1 == 0)
{
@@ -548,7 +533,7 @@ void sub_8041FFC(u32 r0, u32 r1)
}
}
-void sub_804201C(u32 r0, u32 r1)
+void sub_804201C(struct unkDungeon_8041D5C *r0, u32 r1)
{
if(r1 == 0)
{
@@ -560,7 +545,7 @@ void sub_804201C(u32 r0, u32 r1)
}
}
-void sub_8042040(u32 r0, u32 r1)
+void sub_8042040(struct unkDungeon_8041D5C *r0, u32 r1)
{
if(r1 == 0)
{
@@ -572,7 +557,7 @@ void sub_8042040(u32 r0, u32 r1)
}
}
-void sub_8042060(u32 r0, u32 r1)
+void sub_8042060(struct unkDungeon_8041D5C *r0, u32 r1)
{
if(r1 == 0)
{
@@ -584,7 +569,7 @@ void sub_8042060(u32 r0, u32 r1)
}
}
-void sub_8042080(u32 r0, u32 r1)
+void sub_8042080(struct unkDungeon_8041D5C *r0, u32 r1)
{
if(r1 == 0)
{
@@ -596,7 +581,7 @@ void sub_8042080(u32 r0, u32 r1)
}
}
-void sub_80420A0(u32 r0, u32 r1)
+void sub_80420A0(struct unkDungeon_8041D5C *r0, u32 r1)
{
sub_804151C(r0, 0x143, 1);
}
@@ -605,12 +590,12 @@ void nullsub_91(void)
{
}
-void sub_80420B8(u32 r0, u32 r1)
+void sub_80420B8(struct unkDungeon_8041D5C *r0, u32 r1)
{
sub_804151C(r0, 0x19, 1);
}
-void sub_80420C8(u32 r0)
+void sub_80420C8(struct unkDungeon_8041D5C *r0)
{
volatile struct unk_struct_8041F08 temp;
temp.unk0 = 2;
@@ -621,3 +606,100 @@ void sub_80420C8(u32 r0)
void nullsub_92(void)
{
}
+
+void sub_80420E8(struct unkDungeon_8041D5C *r0, struct unkStruct_80420E8 *r1)
+{
+ u32 temp;
+ u32 arg;
+ volatile struct unk_struct_8041F08 temp_1;
+ temp = r1->unk8;
+ if(gUnknown_203B418[0x16d] != 0)
+ temp = sub_806F62C(r1->unk8);
+ switch(temp)
+ {
+ default:
+ case 0:
+ arg = 8;
+ break;
+ case 1:
+ arg = 9;
+ break;
+ case 2:
+ arg = 10;
+ break;
+ case 3:
+ arg = 11;
+ break;
+ }
+ temp_1.unk0 = 0;
+ temp_1.unk4 = 1;
+ sub_8041550(r0, arg, 1, 3);
+}
+
+void sub_8042148(struct unkDungeon_8041D5C *r0)
+{
+ sub_80421C0(r0, 0x1a7);
+ sub_804151C(r0, 0x9F << 1, 1);
+}
+
+void nullsub_93()
+{
+}
+
+void sub_804216C(u32 r0, struct unkDungeon_8041D5C *r1, u32 r2)
+{
+ if(r2 == 1)
+ sub_804151C(r1, 0xF8, 1);
+ else
+ sub_804151C(r1, 0xF9, 1);
+}
+
+void sub_804218C(u32 r0, struct unkDungeon_8041D5C *r1)
+{
+ sub_804151C(r1, 0x2A, 1);
+}
+
+void sub_804219C(struct unkDungeon_8041D5C *r0)
+{
+ sub_80416E0(r0, 0x90, 1);
+}
+
+void sub_80421AC(u32 r0, struct unkDungeon_8041D5C * r1)
+{
+ sub_804151C(r1, 0x167, 1);
+}
+
+void sub_80421C0(struct unkDungeon_8041D5C *r0, u16 r1)
+{
+ if(r0 == NULL)
+ sub_8083E38(r1);
+ else
+ if(sub_8042768(r0) != 0)
+ sub_8083E38(r1);
+}
+
+void sub_80421EC(struct unkDungeon_8041D5C *r0, u16 r1)
+{
+ if(sub_803F428(r0) != 0)
+ sub_8083E38(r1);
+}
+
+void sub_8042208(struct unkDungeon_8041D5C *r0, u8 r1)
+{
+ if(r1 == 0)
+ sub_8083E38(0xA9 << 1);
+ else if(r1 == 1)
+ sub_8083E38(0x151);
+ else
+ sub_8083E38(0xA8 << 1);
+}
+
+void sub_8042238(u32 r0, struct unkDungeon_8041D5C *r1)
+{
+ u8 *temp;
+ temp = *r1->unk70;
+ if(temp[6] != 0)
+ sub_8083E38(0x157);
+ else
+ sub_8083E38(0xAB << 1);
+}