summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhlosioneer <mattmdrr2@gmail.com>2019-02-23 23:17:26 -0500
committerPhlosioneer <mattmdrr2@gmail.com>2019-02-23 23:17:26 -0500
commitfb8dddf0f16a0a7a582fe832bf1091b00f4a02d9 (patch)
tree1ed407c0b446aa765732ee4956284a1e20486eda
parent7995cf5b6162e5c88b3c565b00cf95645a499fe2 (diff)
Decompiled sub_81C81D4
-rw-r--r--asm/pokenav.s41
-rw-r--r--src/pokenav.c49
2 files changed, 42 insertions, 48 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s
index d568f4281..42fa18803 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -5,47 +5,6 @@
.text
-
-
-
-
- thumb_func_start sub_81C81D4
-sub_81C81D4: @ 81C81D4
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- adds r7, r2, 0
- ldr r1, =0x000008a4
- movs r0, 0x11
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081C821C
- ldr r1, =0x00000888
- adds r0, r4, r1
- adds r1, r5, 0
- bl sub_81C9160
- adds r0, r4, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r7, 0
- bl sub_81C91AC
- cmp r0, 0
- beq _081C821C
- ldr r0, =sub_81C8254
- movs r1, 0x6
- bl sub_81C7078
- movs r0, 0x1
- b _081C821E
- .pool
-_081C821C:
- movs r0, 0
-_081C821E:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81C81D4
-
thumb_func_start sub_81C8224
sub_81C8224: @ 81C8224
push {lr}
diff --git a/src/pokenav.c b/src/pokenav.c
index d09c3da94..1e712b170 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -28,6 +28,18 @@ enum
#define UNKNOWN_OFFSET 100000
+// Sizes based tentatively on loads and stores in sub_81C9160
+struct UnknownSubSubStruct_0203CF40 {
+ u16 unk0;
+ u16 unk2;
+ u16 unk4;
+ u16 unk6;
+ u8 unk8;
+ u8 unk9;
+ u16 unkA;
+ u16 unkC;
+};
+
struct UnknownSubStruct_0203CF40
{
void (*unk0)(u32);
@@ -39,7 +51,14 @@ struct UnknownSubStruct_0203CF40
struct Sprite *unk18;
struct Sprite *unk1C[2];
struct Sprite *unk24[2];
- u8 tilemapBuffer[0x1000];
+ u8 tilemapBuffer[0x800];
+};
+
+struct UnknownSubStruct_81C81D4
+{
+ u8 unk0[0x888];
+ struct UnknownSubSubStruct_0203CF40 unk888;
+ u8 unk898[0xC];
};
#define SUBSTRUCT_COUNT 19
@@ -51,7 +70,7 @@ struct UnknownStruct_0203CF40
u16 mode;
u16 fieldA;
bool32 hasAnyRibbons;
- struct UnknownSubStruct_0203CF40 *field10[SUBSTRUCT_COUNT];
+ void *field10[SUBSTRUCT_COUNT];
};
extern u32 sub_81C9430(void);
@@ -116,6 +135,9 @@ extern u32 sub_81D04B8(void);
extern u32 sub_81D09F4(void);
extern u32 sub_81CFA04(void);
extern u32 sub_81CFE08(void);
+extern u32 sub_81C91AC(struct UnknownSubStruct_81C81D4 *a0, const void *a1, void *a2, s32 a3);
+extern u32 sub_81C9160(struct UnknownSubSubStruct_0203CF40 *a0, void *a1);
+extern u32 sub_81C8254(s32);
u32 sub_81C791C(s32 a0);
bool32 sub_81C756C(u32 a0);
@@ -760,7 +782,9 @@ bool32 CanViewRibbonsMenu(void)
bool32 sub_81C76C4(void)
{
- struct UnknownSubStruct_0203CF40 *structPtr = AllocSubstruct(0, 0x82C);
+ struct UnknownSubStruct_0203CF40 *structPtr;
+
+ structPtr = AllocSubstruct(0, sizeof(struct UnknownSubStruct_0203CF40));
if (structPtr == NULL)
return FALSE;
@@ -1422,12 +1446,23 @@ void sub_81C817C(struct Sprite *sprite)
}
}
-/*
-bool32 sub_81C81D4(const void *arg0, void *arg1, s32 arg3)
+bool32 sub_81C81D4(const void *arg0, void *arg1, s32 arg2)
{
- struct UnknownSubStruct_0203CF40 *structPtr = AllocSubstruct(0x11, 0x8A4);
+ u32 v1;
+ struct UnknownSubStruct_81C81D4 *structPtr;
+
+ structPtr = AllocSubstruct(0x11, sizeof(struct UnknownSubStruct_81C81D4));
if (structPtr == NULL)
return FALSE;
+
+ sub_81C9160(&structPtr->unk888, arg1);
+
+ v1 = sub_81C91AC(structPtr, arg0, arg1, arg2);
+ if (v1 == 0)
+ return FALSE;
+
+ sub_81C7078(sub_81C8254, 6);
+ return TRUE;
}
-*/
+