summaryrefslogtreecommitdiff
path: root/src/code_80A26CC.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/code_80A26CC.c')
-rw-r--r--src/code_80A26CC.c112
1 files changed, 81 insertions, 31 deletions
diff --git a/src/code_80A26CC.c b/src/code_80A26CC.c
index 0217d51..110c278 100644
--- a/src/code_80A26CC.c
+++ b/src/code_80A26CC.c
@@ -14,12 +14,80 @@ struct unkStruct_80A2608
/* 0x11 */ u8 unk11;
};
-extern struct unkStruct_80A2608 *sub_80A2608(s32);
-extern struct unkStruct_80A2608 *sub_80A2620(u32);
extern u8 sub_80023E4(u32);
extern u8 sub_80973F4(s16);
extern u8 sub_8097384(s16);
+s16 sub_80A26B8(s16);
extern s16 gUnknown_8116F9A[];
+extern s16 gUnknown_8116F24[];
+extern struct unkStruct_80A2608 gUnknown_81168A8[];
+
+struct unkStruct_80A2608 *sub_80A2608(s16 r0)
+{
+ return &gUnknown_81168A8[r0];
+}
+
+struct unkStruct_80A2608 *sub_80A2620(s16 r0)
+{
+ u32 temp;
+ temp = sub_80A26B8(r0);
+ return &gUnknown_81168A8[temp];
+}
+
+s16 sub_80A2644(u32 r0)
+{
+ return gUnknown_8116F24[r0];
+}
+
+s16 sub_80A2654(s16 r0)
+{
+ struct unkStruct_80A2608 *temp;
+ temp = sub_80A2608(r0);
+ return temp->unkE;
+}
+
+// This is very ugly
+s32 sub_80A2668(u32 r0)
+{
+ u32 temp;
+ temp = 0xffc90000 + (r0 << 16);
+ if(temp >> 16 < 0x19)
+ {
+ return ((s32)temp >> 16);
+ }
+ else
+ {
+ return -1;
+ }
+}
+
+u32 sub_80A2688(u8 r0, u32 r1)
+{
+ u32 uVar1;
+
+ uVar1 = r0 - 0x4B;
+
+ // u8 cast is needed for only this compare
+ if ((u8)uVar1 < 0x17)
+ {
+ return uVar1;
+ }
+ else
+ {
+ if(r0 == 0x2F)
+ {
+ return 0x17;
+ }
+ else if (r0 == 0x30)
+ {
+ return 0x18;
+ }
+ else
+ {
+ return -1;
+ }
+ }
+}
s16 sub_80A26B8(s16 r0)
{
@@ -143,8 +211,6 @@ u32 sub_80A27CC(s16 r0)
u32 sub_80A2824(u8 r0)
{
s32 counter;
- s32 counter2;
- s32 temp2;
struct unkStruct_80A2608 *temp;
if(sub_80023E4(5) != 0)
@@ -155,18 +221,16 @@ u32 sub_80A2824(u8 r0)
{
for(counter = 0; counter <= 0x2D; counter++)
{
- temp2 = counter << 0x10;
- counter2 = temp2 >> 0x10;
- temp = sub_80A2620(counter2);
+ temp = sub_80A2620(counter);
if(temp->unk11 != 0)
{
if(temp->unkC == r0)
{
- if(sub_8097384(counter2) != 0)
+ if(sub_8097384(counter) != 0)
{
return 1;
}
- if(sub_80973F4(counter2) != 0)
+ if(sub_80973F4(counter) != 0)
{
return 1;
}
@@ -178,14 +242,12 @@ u32 sub_80A2824(u8 r0)
{
for(counter = 0; counter <= 0x2D; counter++)
{
- temp2 = counter << 0x10;
- counter2 = temp2 >> 0x10;
- temp = sub_80A2620(counter2);
+ temp = sub_80A2620(counter);
if(temp->unk11 != 0)
{
if(temp->unkC == r0)
{
- if(sub_8097384(counter2) != 0)
+ if(sub_8097384(counter) != 0)
{
return 1;
}
@@ -199,27 +261,19 @@ u32 sub_80A2824(u8 r0)
u32 sub_80A28B4(s16 r0)
{
- s32 counter2;
- s32 temp2;
struct unkStruct_80A2608 *temp;
- temp2 = r0 << 0x10;
- counter2 = temp2 >> 0x10;
- temp = sub_80A2620(counter2);
+ temp = sub_80A2620(r0);
if(temp->unk0 != -1)
{
- if(sub_8097384(counter2) == 0)
+ if(sub_8097384(r0) == 0 && sub_80973F4(r0) == 0)
{
- if(sub_80973F4(counter2) == 0)
- {
- return 0;
- }
+ return 0;
}
else
{
return 1;
}
- return 1;
}
return 0;
}
@@ -227,24 +281,20 @@ u32 sub_80A28B4(s16 r0)
u32 sub_80A28F0(u8 r0)
{
s32 counter;
- s32 counter2;
- s32 temp2;
struct unkStruct_80A2608 *temp;
for(counter = 0; counter <= 0x2D; counter++)
{
- temp2 = counter << 0x10;
- counter2 = temp2 >> 0x10;
- temp = sub_80A2620(counter2);
+ temp = sub_80A2620(counter);
if(temp->unk11 != 0)
{
if(temp->unkC == r0)
{
- if(sub_8097384(counter2) != 0)
+ if(sub_8097384(counter) != 0)
{
return 1;
}
- if(sub_80973F4(counter2) != 0)
+ if(sub_80973F4(counter) != 0)
{
return 1;
}