summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/help_system_812B1E0.s364
-rw-r--r--src/help_system_812B1E0.c214
2 files changed, 213 insertions, 365 deletions
diff --git a/asm/help_system_812B1E0.s b/asm/help_system_812B1E0.s
index c41eb680f..b396180be 100644
--- a/asm/help_system_812B1E0.s
+++ b/asm/help_system_812B1E0.s
@@ -5,370 +5,6 @@
.text
- thumb_func_start sub_812B780
-sub_812B780: @ 812B780
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- adds r5, r1, 0
- movs r4, 0
- ldr r0, _0812B7A8 @ =gUnknown_3005E9C
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0812B794
- b _0812B8AC
-_0812B794:
- subs r0, r1, 0x1
- cmp r0, 0x2B
- bls _0812B79C
- b _0812BB04
-_0812B79C:
- lsls r0, 2
- ldr r1, _0812B7AC @ =_0812B7B0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812B7A8: .4byte gUnknown_3005E9C
-_0812B7AC: .4byte _0812B7B0
- .align 2, 0
-_0812B7B0:
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B860
- .4byte _0812BB08
- .4byte _0812B868
- .4byte _0812B870
- .4byte _0812BB08
- .4byte _0812B880
- .4byte _0812B868
- .4byte _0812B878
- .4byte _0812B890
- .4byte _0812B880
- .4byte _0812B880
- .4byte _0812B880
- .4byte _0812B868
- .4byte _0812B880
- .4byte _0812B880
- .4byte _0812B868
- .4byte _0812B880
- .4byte _0812B888
- .4byte _0812B868
- .4byte _0812B888
- .4byte _0812B878
- .4byte _0812B890
- .4byte _0812B880
- .4byte _0812B890
- .4byte _0812B896
- .4byte _0812B880
- .4byte _0812B890
- .4byte _0812B880
- .4byte _0812B890
- .4byte _0812B890
- .4byte _0812BB08
- .4byte _0812B868
- .4byte _0812B868
- .4byte _0812B880
- .4byte _0812BB08
- .4byte _0812B89C
- .4byte _0812B896
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B8A4
-_0812B860:
- ldr r0, _0812B864 @ =0x000002cf
- b _0812BAF2
- .align 2, 0
-_0812B864: .4byte 0x000002cf
-_0812B868:
- ldr r0, _0812B86C @ =0x00000891
- b _0812BAF2
- .align 2, 0
-_0812B86C: .4byte 0x00000891
-_0812B870:
- ldr r0, _0812B874 @ =0x00000895
- b _0812BAF2
- .align 2, 0
-_0812B874: .4byte 0x00000895
-_0812B878:
- ldr r0, _0812B87C @ =0x000008a4
- b _0812BAF2
- .align 2, 0
-_0812B87C: .4byte 0x000008a4
-_0812B880:
- ldr r0, _0812B884 @ =0x00000828
- b _0812BAF2
- .align 2, 0
-_0812B884: .4byte 0x00000828
-_0812B888:
- ldr r0, _0812B88C @ =0x00000829
- b _0812BAF2
- .align 2, 0
-_0812B88C: .4byte 0x00000829
-_0812B890:
- movs r0, 0x82
- lsls r0, 4
- b _0812BAF2
-_0812B896:
- bl sub_812BB10
- b _0812BAF6
-_0812B89C:
- ldr r0, _0812B8A0 @ =0x0000029b
- b _0812BAF2
- .align 2, 0
-_0812B8A0: .4byte 0x0000029b
-_0812B8A4:
- ldr r0, _0812B8A8 @ =0x00000892
- b _0812BAF2
- .align 2, 0
-_0812B8A8: .4byte 0x00000892
-_0812B8AC:
- cmp r0, 0x1
- beq _0812B8B2
- b _0812B9D8
-_0812B8B2:
- subs r0, r1, 0x1
- cmp r0, 0x2F
- bls _0812B8BA
- b _0812BB04
-_0812B8BA:
- lsls r0, 2
- ldr r1, _0812B8C4 @ =_0812B8C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812B8C4: .4byte _0812B8C8
- .align 2, 0
-_0812B8C8:
- .4byte _0812B988
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812B9A8
- .4byte _0812B9A0
- .4byte _0812BB08
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B9A0
- .4byte _0812B990
- .4byte _0812B9BA
- .4byte _0812B9C0
- .4byte _0812B9C0
- .4byte _0812B9C6
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B988
- .4byte _0812BB08
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812B9A8
- .4byte _0812B9A0
- .4byte _0812BB08
- .4byte _0812B988
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B9D0
-_0812B988:
- ldr r0, _0812B98C @ =0x00000829
- b _0812BAF2
- .align 2, 0
-_0812B98C: .4byte 0x00000829
-_0812B990:
- ldr r0, _0812B99C @ =0x00000169
- movs r1, 0x1
- bl CheckBagHasItem
- b _0812BAF6
- .align 2, 0
-_0812B99C: .4byte 0x00000169
-_0812B9A0:
- ldr r0, _0812B9A4 @ =0x00000828
- b _0812BAF2
- .align 2, 0
-_0812B9A4: .4byte 0x00000828
-_0812B9A8:
- movs r0, 0x1
- bl sub_8088EDC
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _0812B9B8
- b _0812BB08
-_0812B9B8:
- b _0812BB04
-_0812B9BA:
- movs r0, 0x82
- lsls r0, 4
- b _0812BAF2
-_0812B9C0:
- bl sub_812BB10
- b _0812BAF6
-_0812B9C6:
- ldr r0, _0812B9CC @ =0x00000271
- b _0812BAF2
- .align 2, 0
-_0812B9CC: .4byte 0x00000271
-_0812B9D0:
- ldr r0, _0812B9D4 @ =0x0000082c
- b _0812BAF2
- .align 2, 0
-_0812B9D4: .4byte 0x0000082c
-_0812B9D8:
- cmp r0, 0x2
- beq _0812B9DE
- b _0812BADC
-_0812B9DE:
- bl sub_812B754
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812BA0E
- ldr r0, _0812BA20 @ =gUnknown_845B9BE
- ldrb r1, [r0]
- adds r2, r0, 0
- cmp r1, 0xFF
- beq _0812BA0E
- adds r1, r2, 0
-_0812B9F6:
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, r5
- bne _0812BA00
- b _0812BB04
-_0812BA00:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0812B9F6
-_0812BA0E:
- subs r0, r5, 0x1
- cmp r0, 0x26
- bls _0812BA16
- b _0812BB08
-_0812BA16:
- lsls r0, 2
- ldr r1, _0812BA24 @ =_0812BA28
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812BA20: .4byte gUnknown_845B9BE
-_0812BA24: .4byte _0812BA28
- .align 2, 0
-_0812BA28:
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAD2
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BB08
- .4byte _0812BAD2
- .4byte _0812BAC4
- .4byte _0812BB08
- .4byte _0812BAD2
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BACC
- .4byte _0812BACC
- .4byte _0812BB08
- .4byte _0812BAD2
-_0812BAC4:
- ldr r0, _0812BAC8 @ =0x00000828
- b _0812BAF2
- .align 2, 0
-_0812BAC8: .4byte 0x00000828
-_0812BACC:
- bl sub_812BB10
- b _0812BAF6
-_0812BAD2:
- ldr r0, _0812BAD8 @ =0x000008a4
- b _0812BAF2
- .align 2, 0
-_0812BAD8: .4byte 0x000008a4
-_0812BADC:
- cmp r0, 0x3
- bne _0812BB00
- cmp r5, 0x5
- beq _0812BAEA
- cmp r5, 0x6
- beq _0812BAF0
- b _0812BB08
-_0812BAEA:
- movs r0, 0x82
- lsls r0, 4
- b _0812BAF2
-_0812BAF0:
- ldr r0, _0812BAFC @ =0x00000821
-_0812BAF2:
- bl FlagGet
-_0812BAF6:
- lsls r0, 24
- lsrs r0, 24
- b _0812BB0A
- .align 2, 0
-_0812BAFC: .4byte 0x00000821
-_0812BB00:
- cmp r0, 0x4
- beq _0812BB08
-_0812BB04:
- movs r0, 0
- b _0812BB0A
-_0812BB08:
- movs r0, 0x1
-_0812BB0A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_812B780
-
thumb_func_start sub_812BB10
sub_812BB10: @ 812BB10
push {lr}
diff --git a/src/help_system_812B1E0.c b/src/help_system_812B1E0.c
index c8cee9676..b04876c2a 100644
--- a/src/help_system_812B1E0.c
+++ b/src/help_system_812B1E0.c
@@ -3,12 +3,15 @@
#include "event_scripts.h"
#include "field_player_avatar.h"
#include "help_system.h"
+#include "item.h"
#include "link.h"
#include "overworld.h"
+#include "pokedex.h"
#include "quest_log.h"
#include "save.h"
#include "save_location.h"
#include "strings.h"
+#include "constants/items.h"
#include "constants/maps.h"
EWRAM_DATA u16 gUnknown_203B0EC = 0;
@@ -23,10 +26,10 @@ void sub_812B520(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
void sub_812B614(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
bool8 sub_812B754(void);
bool8 sub_812B780(u8);
+bool8 sub_812BB10(void);
void sub_812BF9C(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
void sub_812BF74(const u8 *);
-// this file
const u8 *const gUnknown_845B080[] = {
gUnknown_81B2DF8,
gUnknown_81B2E1C,
@@ -1122,3 +1125,212 @@ bool8 sub_812B754(void)
return TRUE;
return FALSE;
}
+
+bool8 sub_812B780(u8 id)
+{
+ u8 i = 0;
+
+ if (gUnknown_3005E9C[1] == 0)
+ {
+ switch (id)
+ {
+ case 1:
+ case 2:
+ case 3:
+ case 5:
+ case 8:
+ case 34:
+ case 38:
+ case 41:
+ case 42:
+ case 43:
+ return TRUE;
+ case 4:
+ return FlagGet(FLAG_0x2CF);
+ case 6:
+ case 10:
+ case 16:
+ case 19:
+ case 22:
+ case 35:
+ case 36:
+ return FlagGet(FLAG_WORLD_MAP_VIRIDIAN_CITY);
+ case 7:
+ return FlagGet(FLAG_WORLD_MAP_VERMILION_CITY);
+ case 11:
+ case 24:
+ return FlagGet(FLAG_0x8A4);
+ case 9:
+ case 13:
+ case 14:
+ case 15:
+ case 17:
+ case 18:
+ case 20:
+ case 26:
+ case 29:
+ case 31:
+ case 37:
+ return FlagGet(FLAG_0x828);
+ case 21:
+ case 23:
+ return FlagGet(FLAG_0x829);
+ case 12:
+ case 25:
+ case 27:
+ case 30:
+ case 32:
+ case 33:
+ return FlagGet(FLAG_UNK820);
+ case 28:
+ case 40:
+ return sub_812BB10();
+ case 39:
+ return FlagGet(FLAG_0x29B);
+ case 44:
+ return FlagGet(FLAG_WORLD_MAP_PEWTER_CITY);
+ }
+ return FALSE;
+ }
+ if (gUnknown_3005E9C[1] == 1)
+ {
+ switch (id)
+ {
+ case 06:
+ case 10:
+ case 11:
+ case 12:
+ case 19:
+ case 20:
+ case 21:
+ case 22:
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ case 27:
+ case 28:
+ case 29:
+ case 31:
+ case 36:
+ case 38:
+ case 39:
+ case 40:
+ case 41:
+ case 42:
+ case 45:
+ case 46:
+ case 47:
+ return TRUE;
+ case 1:
+ case 30:
+ case 37:
+ return FlagGet(FLAG_0x829);
+ case 14:
+ return CheckBagHasItem(ITEM_TOWN_MAP, 1);
+ case 2:
+ case 3:
+ case 5:
+ case 7:
+ case 8:
+ case 9:
+ case 13:
+ case 32:
+ case 33:
+ case 35:
+ case 43:
+ case 44:
+ return FlagGet(FLAG_0x828);
+ case 4:
+ case 34:
+ if (sub_8088EDC(1) > 1)
+ return TRUE;
+ return FALSE;
+ case 15:
+ return FlagGet(FLAG_UNK820);
+ case 16:
+ case 17:
+ return sub_812BB10();
+ case 18:
+ return FlagGet(FLAG_0x271);
+ case 48:
+ return FlagGet(FLAG_0x82C);
+ }
+ return FALSE;
+ }
+ if (gUnknown_3005E9C[1] == 2)
+ {
+ if (sub_812B754() == TRUE)
+ {
+ for (i = 0; gUnknown_845B9BE[i] != 0xFF; i++)
+ {
+ if (gUnknown_845B9BE[i] == id)
+ return FALSE;
+ }
+ }
+ switch (id)
+ {
+ case 14:
+ case 17:
+ case 22:
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ case 27:
+ case 28:
+ case 29:
+ case 30:
+ case 31:
+ case 32:
+ case 33:
+ case 34:
+ case 35:
+ case 38:
+ return TRUE;
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 16:
+ case 19:
+ case 20:
+ case 21:
+ return FlagGet(FLAG_0x828);
+ case 36:
+ case 37:
+ return sub_812BB10();
+ case 3:
+ case 15:
+ case 18:
+ case 39:
+ return FlagGet(FLAG_0x8A4);
+ }
+ return TRUE;
+ }
+ if (gUnknown_3005E9C[1] == 3)
+ {
+ switch (id)
+ {
+ case 5:
+ return FlagGet(FLAG_UNK820);
+ case 6:
+ return FlagGet(FLAG_0x821);
+ }
+ return TRUE;
+ }
+ if (gUnknown_3005E9C[1] == 4)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}