summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/help_system_812B1E0.s321
-rw-r--r--common_syms/help_system_812B1E0.txt1
-rw-r--r--include/constants/flags.h1
-rw-r--r--include/help_system.h29
-rw-r--r--include/overworld.h1
-rw-r--r--include/save_location.h1
-rw-r--r--src/help_system_812B1E0.c125
-rw-r--r--sym_common.txt4
8 files changed, 157 insertions, 326 deletions
diff --git a/asm/help_system_812B1E0.s b/asm/help_system_812B1E0.s
index 239b25afb..a6036015e 100644
--- a/asm/help_system_812B1E0.s
+++ b/asm/help_system_812B1E0.s
@@ -5,327 +5,6 @@
.text
- thumb_func_start sub_812B2C4
-sub_812B2C4: @ 812B2C4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r5, 0
- ldr r0, _0812B2E8 @ =gUnknown_845C5CE
- mov r9, r0
- movs r0, 0x2
- add r0, r9
- mov r8, r0
-_0812B2D8:
- movs r6, 0
- mov r4, r9
- lsls r1, r5, 1
- adds r0, r1, r5
- add r0, r8
- adds r7, r1, 0
- b _0812B33A
- .align 2, 0
-_0812B2E8: .4byte gUnknown_845C5CE
-_0812B2EC:
- adds r3, r1, r5
- adds r0, r3, r4
- ldrb r1, [r0]
- ldr r0, _0812B324 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- movs r0, 0x4
- ldrsb r0, [r2, r0]
- cmp r1, r0
- bne _0812B32C
- adds r0, r4, 0x1
- adds r0, r3, r0
- ldrb r0, [r0]
- adds r0, r6
- movs r1, 0x5
- ldrsb r1, [r2, r1]
- cmp r0, r1
- bne _0812B32C
- cmp r5, 0xF
- bne _0812B320
- ldr r0, _0812B328 @ =0x00000849
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812B32C
-_0812B320:
- movs r0, 0x1
- b _0812B34C
- .align 2, 0
-_0812B324: .4byte gSaveBlock1Ptr
-_0812B328: .4byte 0x00000849
-_0812B32C:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r4, _0812B358 @ =gUnknown_845C5CE
- adds r1, r7, 0
- adds r0, r1, r5
- add r0, r8
-_0812B33A:
- ldrb r0, [r0]
- cmp r6, r0
- bcc _0812B2EC
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _0812B2D8
- movs r0, 0
-_0812B34C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0812B358: .4byte gUnknown_845C5CE
- thumb_func_end sub_812B2C4
-
- thumb_func_start sub_812B35C
-sub_812B35C: @ 812B35C
- push {lr}
- bl sub_812B4B8
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _0812B376
- movs r0, 0x16
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B376:
- bl sub_812B2C4
- lsls r0, 24
- cmp r0, 0
- beq _0812B388
- movs r0, 0x15
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B388:
- ldr r0, _0812B3B0 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- bl is_light_level_8_or_9
- lsls r0, 24
- cmp r0, 0
- beq _0812B400
- ldr r0, _0812B3B4 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- cmp r1, 0x4
- beq _0812B3A8
- movs r0, 0x82
- lsls r0, 1
- cmp r1, r0
- bne _0812B3B8
-_0812B3A8:
- movs r0, 0xE
- bl HelpSystem_SetSomeVariable2
- b _0812B406
- .align 2, 0
-_0812B3B0: .4byte gMapHeader
-_0812B3B4: .4byte gSaveBlock1Ptr
-_0812B3B8:
- movs r0, 0xC1
- lsls r0, 2
- cmp r1, r0
- bne _0812B3C8
- movs r0, 0xF
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B3C8:
- bl IsCurMapPokeCenter
- cmp r0, 0x1
- bne _0812B3D8
- movs r0, 0x10
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B3D8:
- bl sub_812B25C
- cmp r0, 0x1
- bne _0812B3E8
- movs r0, 0x11
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B3E8:
- bl sub_812B26C
- cmp r0, 0x1
- bne _0812B3F8
- movs r0, 0x12
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B3F8:
- movs r0, 0x13
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B400:
- movs r0, 0x14
- bl HelpSystem_SetSomeVariable2
-_0812B406:
- pop {r0}
- bx r0
- thumb_func_end sub_812B35C
-
- thumb_func_start sub_812B40C
-sub_812B40C: @ 812B40C
- push {lr}
- ldr r0, _0812B434 @ =gUnknown_203B0EE
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0812B42E
- ldr r0, _0812B438 @ =gSaveFileStatus
- ldrh r0, [r0]
- cmp r0, 0
- beq _0812B440
- cmp r0, 0x2
- beq _0812B440
- ldr r0, _0812B43C @ =0x0000083c
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0812B440
-_0812B42E:
- movs r0, 0
- b _0812B44E
- .align 2, 0
-_0812B434: .4byte gUnknown_203B0EE
-_0812B438: .4byte gSaveFileStatus
-_0812B43C: .4byte 0x0000083c
-_0812B440:
- ldr r0, _0812B454 @ =0x0000083c
- bl FlagSet
- ldr r1, _0812B458 @ =gUnknown_203B0EE
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0x1
-_0812B44E:
- pop {r1}
- bx r1
- .align 2, 0
-_0812B454: .4byte 0x0000083c
-_0812B458: .4byte gUnknown_203B0EE
- thumb_func_end sub_812B40C
-
- thumb_func_start sub_812B45C
-sub_812B45C: @ 812B45C
- push {lr}
- ldr r0, _0812B46C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0812B470
- movs r0, 0x1
- b _0812B472
- .align 2, 0
-_0812B46C: .4byte gReceivedRemoteLinkPlayers
-_0812B470:
- movs r0, 0
-_0812B472:
- pop {r1}
- bx r1
- thumb_func_end sub_812B45C
-
- thumb_func_start sub_812B478
-sub_812B478: @ 812B478
- ldr r1, _0812B480 @ =gUnknown_3005ECC
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0812B480: .4byte gUnknown_3005ECC
- thumb_func_end sub_812B478
-
- thumb_func_start sub_812B484
-sub_812B484: @ 812B484
- push {lr}
- ldr r0, _0812B4A4 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _0812B49E
- ldr r1, _0812B4A8 @ =gUnknown_3005ECC
- movs r0, 0x1
- strb r0, [r1]
- bl sub_812B4B8
-_0812B49E:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B4A4: .4byte gUnknown_203ADFA
-_0812B4A8: .4byte gUnknown_3005ECC
- thumb_func_end sub_812B484
-
- thumb_func_start sub_812B4AC
-sub_812B4AC: @ 812B4AC
- ldr r1, _0812B4B4 @ =gUnknown_203F175
- movs r0, 0x1
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0812B4B4: .4byte gUnknown_203F175
- thumb_func_end sub_812B4AC
-
- thumb_func_start sub_812B4B8
-sub_812B4B8: @ 812B4B8
- ldr r1, _0812B4C0 @ =gUnknown_203F175
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0812B4C0: .4byte gUnknown_203F175
- thumb_func_end sub_812B4B8
-
- thumb_func_start sub_812B4C4
-sub_812B4C4: @ 812B4C4
- str r1, [r0]
- movs r2, 0x1
- movs r1, 0x1
- strh r1, [r0, 0x4]
- strh r1, [r0, 0x6]
- strb r2, [r0, 0x8]
- movs r1, 0x4
- strb r1, [r0, 0x9]
- bx lr
- thumb_func_end sub_812B4C4
-
- thumb_func_start sub_812B4D8
-sub_812B4D8: @ 812B4D8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_812B4C4
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812B520
- ldr r0, _0812B518 @ =gUnknown_841DFAC
- bl sub_812BF74
- ldr r0, _0812B51C @ =gUnknown_3005E9C
- ldrb r2, [r0, 0x2]
- adds r0, r4, 0
- movs r1, 0
- bl sub_813C64C
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812BF9C
- movs r0, 0x1
- bl sub_813BDA4
- movs r0, 0x1
- bl sub_813BD5C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B518: .4byte gUnknown_841DFAC
-_0812B51C: .4byte gUnknown_3005E9C
- thumb_func_end sub_812B4D8
-
thumb_func_start sub_812B520
sub_812B520: @ 812B520
push {r4-r7,lr}
diff --git a/common_syms/help_system_812B1E0.txt b/common_syms/help_system_812B1E0.txt
index 0541b5490..7986bedb5 100644
--- a/common_syms/help_system_812B1E0.txt
+++ b/common_syms/help_system_812B1E0.txt
@@ -1 +1,2 @@
+gUnknown_3005E9C
gUnknown_3005EA0
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 8ecac9769..eed83d7c6 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -68,6 +68,7 @@
#define FLAG_0x82F 0x82F
#define FLAG_0x830 0x830
#define FLAG_0x834 0x834
+#define FLAG_0x83C 0x83C
#define FLAG_0x83E 0x83E
#define FLAG_0x841 0x841
#define FLAG_0x844 0x844
diff --git a/include/help_system.h b/include/help_system.h
index 97acec45e..6eee0dcb3 100644
--- a/include/help_system.h
+++ b/include/help_system.h
@@ -3,11 +3,38 @@
#include "global.h"
+struct HelpSystemStruct_203F1AC
+{
+
+};
+
+struct HelpSystemStruct_203F190_sub
+{
+ struct HelpSystemStruct_203F1AC * field_00;
+ u16 field_04;
+ u16 field_06;
+ u8 field_08;
+ u8 field_09;
+
+};
+
+struct HelpSystemStruct_203F190
+{
+ struct HelpSystemStruct_203F190_sub field_00;
+ u8 filler_0C[0x10];
+};
+
+extern struct HelpSystemStruct_203F190 gUnknown_203F190;
+extern struct HelpSystemStruct_203F1AC gUnknown_203F1AC;
extern bool8 gUnknown_3005ECC;
+extern u8 gUnknown_203F175;
-void sub_812B1E0(u16);
+void sub_812B1E0(u8);
void sub_812B484(void);
void HelpSystem_SetSomeVariable2(u8);
void sub_812B478(void);
+void sub_813C64C(struct HelpSystemStruct_203F190_sub *, u8, u8);
+void sub_813BDA4(u8);
+void sub_813BD5C(u8);
#endif //GUARD_HELP_SYSTEM_H
diff --git a/include/overworld.h b/include/overworld.h
index a3fe1161f..b8cf58b4d 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -111,5 +111,6 @@ void Overworld_FadeOutMapMusic(void);
void sub_805671C(void);
void sub_8055DC4(void);
bool8 sub_8055FC4(void);
+bool8 is_light_level_8_or_9(u8 mapType);
#endif //GUARD_ROM4_H
diff --git a/include/save_location.h b/include/save_location.h
index 69b39ea53..cd499643e 100644
--- a/include/save_location.h
+++ b/include/save_location.h
@@ -7,5 +7,6 @@ bool32 sub_81AFCEC(void);
void TrySetMapSaveWarpStatus(void);
void sub_81AFDA0(void);
void sub_81AFDD0(void);
+bool32 IsCurMapPokeCenter(void);
#endif // GUARD_SAVE_LOCATION_H
diff --git a/src/help_system_812B1E0.c b/src/help_system_812B1E0.c
index 4477352d9..2b64a3ab3 100644
--- a/src/help_system_812B1E0.c
+++ b/src/help_system_812B1E0.c
@@ -1,16 +1,32 @@
#include "global.h"
#include "event_data.h"
+#include "field_player_avatar.h"
+#include "help_system.h"
+#include "link.h"
+#include "overworld.h"
+#include "quest_log.h"
+#include "save.h"
+#include "save_location.h"
#include "constants/maps.h"
EWRAM_DATA u16 gUnknown_203B0EC = 0;
EWRAM_DATA u8 gUnknown_203B0EE = 0;
+u8 gUnknown_3005E9C[4];
u16 gUnknown_3005EA0;
bool32 sub_812B27C(const u16 * mapIdxs);
+void sub_812B4B8(void);
+void sub_812B520(struct HelpSystemStruct_203F190_sub * a0, struct HelpSystemStruct_203F1AC * a1);
+void sub_812BF9C(struct HelpSystemStruct_203F190_sub * a0, struct HelpSystemStruct_203F1AC * a1);
+void sub_812BF74(const u8 *);
+
+// strings.h
+extern const u8 gUnknown_841DFAC[];
extern const u16 gUnknown_845C594[]; // marts
extern const u16 gUnknown_845C5BC[]; // gyms
+extern const u8 gUnknown_845C5CE[][3];
void sub_812B1E0(u8 a0)
{
@@ -73,3 +89,112 @@ bool32 sub_812B27C(const u16 * mapIdxs)
return FALSE;
}
+bool8 sub_812B2C4(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < 16; i++)
+ {
+ for (j = 0; j < gUnknown_845C5CE[i][2]; j++)
+ {
+ if (
+ gUnknown_845C5CE[i][0] == gSaveBlock1Ptr->location.mapGroup
+ && gUnknown_845C5CE[i][1] + j == gSaveBlock1Ptr->location.mapNum
+ && (i != 15 || FlagGet(FLAG_0x849) == TRUE)
+ )
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+void sub_812B35C(void)
+{
+ sub_812B4B8();
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
+ HelpSystem_SetSomeVariable2(0x16);
+ else if (sub_812B2C4())
+ HelpSystem_SetSomeVariable2(0x15);
+ else if (is_light_level_8_or_9(gMapHeader.mapType))
+ {
+ if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_1F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_1F)) || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_2F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_2F)))
+ HelpSystem_SetSomeVariable2(0x0E);
+ else if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_PROFESSOR_OAKS_LAB) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_PROFESSOR_OAKS_LAB))
+ HelpSystem_SetSomeVariable2(0x0F);
+ else if (IsCurMapPokeCenter() == TRUE)
+ HelpSystem_SetSomeVariable2(0x10);
+ else if (sub_812B25C() == TRUE)
+ HelpSystem_SetSomeVariable2(0x11);
+ else if (sub_812B26C() == TRUE)
+ HelpSystem_SetSomeVariable2(0x12);
+ else
+ HelpSystem_SetSomeVariable2(0x13);
+ }
+ else
+ HelpSystem_SetSomeVariable2(0x14);
+}
+
+bool8 sub_812B40C(void)
+{
+ if (gUnknown_203B0EE == 1)
+ return FALSE;
+
+ if (gSaveFileStatus != SAVE_STATUS_EMPTY && gSaveFileStatus != SAVE_STATUS_INVALID && FlagGet(FLAG_0x83C))
+ return FALSE;
+
+ FlagSet(FLAG_0x83C);
+ gUnknown_203B0EE = 1;
+ return TRUE;
+}
+
+bool8 sub_812B45C(void)
+{
+ if (gReceivedRemoteLinkPlayers == 1)
+ return FALSE;
+ return TRUE;
+}
+
+void sub_812B478(void)
+{
+ gUnknown_3005ECC = 0;
+}
+
+void sub_812B484(void)
+{
+ if (gUnknown_203ADFA != 2 && gUnknown_203ADFA != 3)
+ {
+ gUnknown_3005ECC = 1;
+ sub_812B4B8();
+ }
+}
+
+void sub_812B4AC(void)
+{
+ gUnknown_203F175 = 1;
+}
+
+void sub_812B4B8(void)
+{
+ gUnknown_203F175 = 0;
+}
+
+void sub_812B4C4(struct HelpSystemStruct_203F190_sub * a0, struct HelpSystemStruct_203F1AC * a1)
+{
+ a0->field_00 = a1;
+ a0->field_04 = 1;
+ a0->field_06 = 1;
+ a0->field_08 = 1;
+ a0->field_09 = 4;
+}
+
+void sub_812B4D8(struct HelpSystemStruct_203F190_sub * a0, struct HelpSystemStruct_203F1AC * a1)
+{
+ sub_812B4C4(a0, a1);
+ sub_812B520(a0, a1);
+ sub_812BF74(gUnknown_841DFAC);
+ sub_813C64C(a0, 0, gUnknown_3005E9C[2]);
+ sub_812BF9C(a0, a1);
+ sub_813BDA4(1);
+ sub_813BD5C(1);
+}
diff --git a/sym_common.txt b/sym_common.txt
index 059a30bb9..429623cb7 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -318,10 +318,6 @@ gUnknown_3005E94: @ 3005E94
gUnknown_3005E98: @ 3005E98
.space 0x4
-gUnknown_3005E9C: @ 3005E9C
- .space 0x4
-
- .align 4
.include "help_system_812B1E0.o"
.align 4
.include "fame_checker.o"