summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-06-12 16:43:34 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-06-12 16:43:34 -0400
commit85aeb8d476459da4615949e287294658c8e9e3c5 (patch)
tree35613eaf9df6f71a9f9b866f28b87b78f6d37ac1
parent5f41304d75c6ea2091acc57a8cfb775fb376a784 (diff)
help_system_812B1E0: through sub_812BDEC
-rw-r--r--asm/help_system_812B1E0.s383
-rw-r--r--include/help_system.h5
-rw-r--r--include/strings.h2
-rw-r--r--src/help_system_812B1E0.c163
4 files changed, 170 insertions, 383 deletions
diff --git a/asm/help_system_812B1E0.s b/asm/help_system_812B1E0.s
index b396180be..7f2459190 100644
--- a/asm/help_system_812B1E0.s
+++ b/asm/help_system_812B1E0.s
@@ -5,389 +5,6 @@
.text
- thumb_func_start sub_812BB10
-sub_812BB10: @ 812BB10
- push {lr}
- ldr r0, _0812BB7C @ =0x00000237
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- movs r0, 0x8E
- lsls r0, 2
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB80 @ =0x00000239
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB84 @ =0x0000023a
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB88 @ =0x0000023b
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB8C @ =0x000002ef
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB90 @ =0x000001f1
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- movs r0, 0
- b _0812BB96
- .align 2, 0
-_0812BB7C: .4byte 0x00000237
-_0812BB80: .4byte 0x00000239
-_0812BB84: .4byte 0x0000023a
-_0812BB88: .4byte 0x0000023b
-_0812BB8C: .4byte 0x000002ef
-_0812BB90: .4byte 0x000001f1
-_0812BB94:
- movs r0, 0x1
-_0812BB96:
- pop {r1}
- bx r1
- thumb_func_end sub_812BB10
-
- thumb_func_start sub_812BB9C
-sub_812BB9C: @ 812BB9C
- push {lr}
- adds r2, r0, 0
- adds r3, r1, 0
- ldrb r0, [r2, 0xE]
- cmp r0, 0xA
- bhi _0812BC4C
- lsls r0, 2
- ldr r1, _0812BBB4 @ =_0812BBB8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812BBB4: .4byte _0812BBB8
- .align 2, 0
-_0812BBB8:
- .4byte _0812BC02
- .4byte _0812BC0C
- .4byte _0812BC16
- .4byte _0812BC20
- .4byte _0812BC2A
- .4byte _0812BC34
- .4byte _0812BC3E
- .4byte _0812BC4C
- .4byte _0812BBE4
- .4byte _0812BBEE
- .4byte _0812BBF8
-_0812BBE4:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BC54
- b _0812BC46
-_0812BBEE:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BC80
- b _0812BC46
-_0812BBF8:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BCA8
- b _0812BC46
-_0812BC02:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BCD0
- b _0812BC46
-_0812BC0C:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BD2C
- b _0812BC46
-_0812BC16:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BD64
- b _0812BC46
-_0812BC20:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BD98
- b _0812BC46
-_0812BC2A:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BE10
- b _0812BC46
-_0812BC34:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BEEC
- b _0812BC46
-_0812BC3E:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BF18
-_0812BC46:
- lsls r0, 24
- lsrs r0, 24
- b _0812BC4E
-_0812BC4C:
- movs r0, 0
-_0812BC4E:
- pop {r1}
- bx r1
- thumb_func_end sub_812BB9C
-
- thumb_func_start sub_812BC54
-sub_812BC54: @ 812BC54
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0812BC7C @ =gUnknown_841DFA5
- bl sub_812BF74
- bl sub_812BF5C
- movs r0, 0x1
- bl sub_813BDA4
- movs r0, 0x1
- bl sub_813BD5C
- movs r0, 0x9
- strb r0, [r4, 0xE]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BC7C: .4byte gUnknown_841DFA5
- thumb_func_end sub_812BC54
-
- thumb_func_start sub_812BC80
-sub_812BC80: @ 812BC80
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0812BCA4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0812BC9A
- movs r0, 0x5
- bl PlaySE
- movs r0, 0xA
- strb r0, [r4, 0xE]
-_0812BC9A:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BCA4: .4byte gMain
- thumb_func_end sub_812BC80
-
- thumb_func_start sub_812BCA8
-sub_812BCA8: @ 812BCA8
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r6, r1, 0
- ldr r0, _0812BCCC @ =gUnknown_3005E9C
- movs r5, 0
- strb r5, [r0, 0x2]
- adds r0, r4, 0
- bl sub_812BF94
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_812B4D8
- strb r5, [r4, 0xE]
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BCCC: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BCA8
-
- thumb_func_start sub_812BCD0
-sub_812BCD0: @ 812BCD0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_813C690
- adds r1, r0, 0
- adds r0, r1, 0x6
- cmp r0, 0x5
- bhi _0812BD16
- lsls r0, 2
- ldr r1, _0812BCEC @ =_0812BCF0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812BCEC: .4byte _0812BCF0
- .align 2, 0
-_0812BCF0:
- .4byte _0812BD08
- .4byte _0812BD0C
- .4byte _0812BD0C
- .4byte _0812BD1E
- .4byte _0812BD08
- .4byte _0812BD1E
-_0812BD08:
- movs r0, 0
- b _0812BD20
-_0812BD0C:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812BF9C
- b _0812BD1E
-_0812BD16:
- ldr r0, _0812BD28 @ =gUnknown_3005E9C
- strb r1, [r0, 0x1]
- movs r0, 0x1
- strb r0, [r4, 0xE]
-_0812BD1E:
- movs r0, 0x1
-_0812BD20:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BD28: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BCD0
-
- thumb_func_start sub_812BD2C
-sub_812BD2C: @ 812BD2C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0812BD60 @ =gUnknown_3005E9C
- movs r0, 0x1
- strb r0, [r1]
- ldrb r0, [r4, 0xD]
- strb r0, [r1, 0x2]
- adds r0, r4, 0
- bl sub_812BF94
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812B5A8
- bl sub_813C75C
- movs r0, 0x2
- bl sub_813C684
- movs r0, 0x3
- strb r0, [r4, 0xE]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BD60: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BD2C
-
- thumb_func_start sub_812BD64
-sub_812BD64: @ 812BD64
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- movs r0, 0
- movs r1, 0
- bl sub_813C004
- movs r0, 0x1
- movs r1, 0
- bl sub_813C004
- ldr r0, _0812BD94 @ =gUnknown_3005E9C
- movs r4, 0
- strb r4, [r0]
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_812B4D8
- strb r4, [r5, 0xE]
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BD94: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BD64
-
- thumb_func_start sub_812BD98
-sub_812BD98: @ 812BD98
- push {r4,lr}
- adds r4, r0, 0
- bl sub_813C690
- adds r1, r0, 0
- adds r0, r1, 0x6
- cmp r0, 0x5
- bhi _0812BDD8
- lsls r0, 2
- ldr r1, _0812BDB4 @ =_0812BDB8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812BDB4: .4byte _0812BDB8
- .align 2, 0
-_0812BDB8:
- .4byte _0812BDD0
- .4byte _0812BDE0
- .4byte _0812BDE0
- .4byte _0812BDE0
- .4byte _0812BDD4
- .4byte _0812BDE0
-_0812BDD0:
- movs r0, 0
- b _0812BDE2
-_0812BDD4:
- movs r0, 0x2
- b _0812BDDE
-_0812BDD8:
- ldr r0, _0812BDE8 @ =gUnknown_3005E9C
- strb r1, [r0, 0x3]
- movs r0, 0x4
-_0812BDDE:
- strb r0, [r4, 0xE]
-_0812BDE0:
- movs r0, 0x1
-_0812BDE2:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BDE8: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BD98
-
- thumb_func_start sub_812BDEC
-sub_812BDEC: @ 812BDEC
- push {lr}
- ldr r1, _0812BE08 @ =gUnknown_845B080
- ldr r0, _0812BE0C @ =gUnknown_3005E9C
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0
- bl sub_813C4CC
- pop {r0}
- bx r0
- .align 2, 0
-_0812BE08: .4byte gUnknown_845B080
-_0812BE0C: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BDEC
-
thumb_func_start sub_812BE10
sub_812BE10: @ 812BE10
push {r4,r5,lr}
diff --git a/include/help_system.h b/include/help_system.h
index f9aaba907..2f82c4cf0 100644
--- a/include/help_system.h
+++ b/include/help_system.h
@@ -18,6 +18,7 @@ struct HelpSystemStruct_203F190
struct HelpSystemStruct_203F190_sub sub;
u8 field_0C;
u8 field_0D;
+ u8 field_0E;
u8 filler_10[0xC];
};
@@ -37,5 +38,9 @@ void sub_813BD5C(u8);
void sub_813BDE8(u8);
void sub_813BFC0(u8);
void sub_813BE78(u8);
+s32 sub_813C690(void);
+void sub_813C75C(void);
+void sub_813C684(u8);
+void sub_813C004(u8, u8);
#endif //GUARD_HELP_SYSTEM_H
diff --git a/include/strings.h b/include/strings.h
index 1e3d4c39b..6cc6b93c1 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -137,7 +137,9 @@ extern const u8 gTeachyTvText_TMsScript2[];
extern const u8 gTeachyTvText_RegisterScript2[];
// help_system_812B1E0
+extern const u8 gUnknown_841DFA5[];
extern const u8 gUnknown_841DFAC[];
+extern const u8 gUnknown_841DFBE[];
extern const u8 gUnknown_841DFC9[];
#endif //GUARD_STRINGS_H
diff --git a/src/help_system_812B1E0.c b/src/help_system_812B1E0.c
index b04876c2a..5ac571e26 100644
--- a/src/help_system_812B1E0.c
+++ b/src/help_system_812B1E0.c
@@ -10,9 +10,11 @@
#include "quest_log.h"
#include "save.h"
#include "save_location.h"
+#include "sound.h"
#include "strings.h"
#include "constants/items.h"
#include "constants/maps.h"
+#include "constants/songs.h"
EWRAM_DATA u16 gUnknown_203B0EC = 0;
EWRAM_DATA u8 gUnknown_203B0EE = 0;
@@ -27,8 +29,20 @@ void sub_812B614(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
bool8 sub_812B754(void);
bool8 sub_812B780(u8);
bool8 sub_812BB10(void);
+bool8 sub_812BC54(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BC80(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BCA8(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BCD0(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BD2C(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BD64(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BD98(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BE10(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BEEC(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BF18(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
void sub_812BF9C(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+void sub_812BF5C(void);
void sub_812BF74(const u8 *);
+void sub_812BF94(struct HelpSystemStruct_203F190 * a0);
const u8 *const gUnknown_845B080[] = {
gUnknown_81B2DF8,
@@ -1334,3 +1348,152 @@ bool8 sub_812B780(u8 id)
return FALSE;
}
+
+bool8 sub_812BB10(void)
+{
+ if (FlagGet(FLAG_0x237) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x238) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x239) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x23A) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x23B) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x2EF) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x1F1) == TRUE)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 sub_812BB9C(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ switch (a0->field_0E)
+ {
+ case 8:
+ return sub_812BC54(a0, a1);
+ case 9:
+ return sub_812BC80(a0, a1);
+ case 10:
+ return sub_812BCA8(a0, a1);
+ case 0:
+ return sub_812BCD0(a0, a1);
+ case 1:
+ return sub_812BD2C(a0, a1);
+ case 2:
+ return sub_812BD64(a0, a1);
+ case 3:
+ return sub_812BD98(a0, a1);
+ case 4:
+ return sub_812BE10(a0, a1);
+ case 5:
+ return sub_812BEEC(a0, a1);
+ case 6:
+ return sub_812BF18(a0, a1);
+ }
+ return FALSE;
+}
+
+bool8 sub_812BC54(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ sub_812BF74(gUnknown_841DFA5);
+ sub_812BF5C();
+ sub_813BDA4(1);
+ sub_813BD5C(1);
+ a0->field_0E = 9;
+ return TRUE;
+}
+
+bool8 sub_812BC80(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ a0->field_0E = 10;
+ }
+ return TRUE;
+}
+
+bool8 sub_812BCA8(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ gUnknown_3005E9C[2] = 0;
+ sub_812BF94(a0);
+ sub_812B4D8(a0, a1);
+ a0->field_0E = 0;
+ return TRUE;
+}
+
+bool8 sub_812BCD0(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ s32 v0 = sub_813C690();
+ switch (v0)
+ {
+ case -6:
+ case -2:
+ return FALSE;
+ case -5:
+ case -4:
+ sub_812BF9C(a0, a1);
+ break;
+ case -3:
+ case -1:
+ break;
+ default:
+ gUnknown_3005E9C[1] = v0;
+ a0->field_0E = 1;
+ break;
+ }
+ return TRUE;
+}
+
+bool8 sub_812BD2C(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ gUnknown_3005E9C[0] = 1;
+ gUnknown_3005E9C[2] = a0->field_0D;
+ sub_812BF94(a0);
+ sub_812B5A8(a0, a1);
+ sub_813C75C();
+ sub_813C684(2);
+ a0->field_0E = 3;
+ return TRUE;
+}
+
+bool8 sub_812BD64(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ sub_813C004(0, 0);
+ sub_813C004(1, 0);
+ gUnknown_3005E9C[0] = 0;
+ sub_812B4D8(a0, a1);
+ a0->field_0E = 0;
+ return TRUE;
+}
+
+bool8 sub_812BD98(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ s32 v0 = sub_813C690();
+ switch (v0)
+ {
+ case -6:
+ return FALSE;
+ case -2:
+ a0->field_0E = 2;
+ break;
+ case -5:
+ case -4:
+ case -3:
+ case -1:
+ break;
+ default:
+ gUnknown_3005E9C[3] = v0;
+ a0->field_0E = 4;
+ break;
+ }
+ return TRUE;
+}
+
+void sub_812BDEC(void)
+{
+ sub_813C4CC(gUnknown_845B080[gUnknown_3005E9C[1]], 0, 0);
+} \ No newline at end of file