diff options
author | Phlosioneer <mattmdrr2@gmail.com> | 2019-02-12 20:57:51 -0500 |
---|---|---|
committer | Phlosioneer <mattmdrr2@gmail.com> | 2019-02-17 23:14:14 -0500 |
commit | 112fc4701794ba3b1a35882d7995c907448431fe (patch) | |
tree | fe739fba59d8083f5f8bef7fea59f38d9ea274b6 /src/pokenav_main.c | |
parent | 3d73f7c48c7c658b0d12fbc89867a44bf9490206 (diff) |
Decompiled sub_81C756C
Also discovered a constant that may be useful for future decompiling.
Comments were added in the asm that references the constant.
Diffstat (limited to 'src/pokenav_main.c')
-rw-r--r-- | src/pokenav_main.c | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/src/pokenav_main.c b/src/pokenav_main.c index e75ae38f3..21ee72f30 100644 --- a/src/pokenav_main.c +++ b/src/pokenav_main.c @@ -7,8 +7,10 @@ #include "palette.h" #include "pokemon_storage_system.h" +#define UNKNOWN_OFFSET 100000 + struct UnknownStruct_0203CF40 { - u32 field0; + u32 (*field0)(void); u32 field4; u16 field8; u32 fieldC; @@ -17,7 +19,7 @@ struct UnknownStruct_0203CF40 { }; struct UnknownStruct_0861F3EC { - void (*data[7])(void); + u32 (*data[7])(void); }; extern struct UnknownStruct_0203CF40 *gUnknown_0203CF40; @@ -29,13 +31,15 @@ extern void sub_81C76C4(void); extern void sub_81C7710(void); extern void sub_81C7850(u32 a0); extern void sub_81C9430(void); -extern u32 sub_81C756C(u32 a0); +extern void sub_81C75F4(void); +extern void sub_81C7834(u32 (*a0)(void), u32(*a1)(void)); extern u32 sub_81C76FC(void); extern u32 sub_81C786C(void); extern u32 sub_81C75E0(void); extern u32 sub_81C75D4(void); extern u32 sub_81C7738(void); +bool32 sub_81C756C(u32 a0); u32 AnyMonHasRibbon(void); void sub_81C7334(void); void sub_81C71E4(u8 a0); @@ -220,7 +224,7 @@ void sub_81C7360(struct UnknownStruct_0203CF40 *a0) { a0->field8 = 0; a0->field4 = 0; a0->fieldC = AnyMonHasRibbon(); - a0->field0 = 0; + a0->field0 = NULL; } bool32 AnyMonHasRibbon() { @@ -278,7 +282,7 @@ void sub_81C742C(u8 taskId) { if (sub_81C76FC()) { break; } - sub_81C756C(0x186a0); + sub_81C756C(UNKNOWN_OFFSET); dataPtr[0] = 4; break; case 2: @@ -291,7 +295,7 @@ void sub_81C742C(u8 taskId) { if (v1 == -1) { sub_81C7710(); dataPtr[0] = 5; - } else if (v1 > 0x1869F) { + } else if (v1 >= UNKNOWN_OFFSET) { gUnknown_0861F3EC[gUnknown_0203CF40->field4].data[6](); gUnknown_0861F3EC[gUnknown_0203CF40->field4].data[5](); if (sub_81C756C(v1)) { @@ -324,4 +328,21 @@ void sub_81C742C(u8 taskId) { } } } +} + +bool32 sub_81C756C(u32 a0) { + u32 index; + + index = a0 - UNKNOWN_OFFSET; + sub_81C75F4(); + if (!gUnknown_0861F3EC[index].data[0]()) { + return FALSE; + } + if (!gUnknown_0861F3EC[index].data[2]()) { + return FALSE; + } + sub_81C7834(gUnknown_0861F3EC[index].data[3], gUnknown_0861F3EC[index].data[4]); + gUnknown_0203CF40->field0 = gUnknown_0861F3EC[index].data[1]; + gUnknown_0203CF40->field4 = index; + return TRUE; }
\ No newline at end of file |