summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/vs_seeker.s94
-rw-r--r--include/event_scripts.h3
-rw-r--r--include/field_specials.h1
-rw-r--r--include/global.h4
-rw-r--r--include/map_obj_lock.h1
-rw-r--r--include/new_menu_helpers.h1
-rw-r--r--src/vs_seeker.c43
7 files changed, 52 insertions, 95 deletions
diff --git a/asm/vs_seeker.s b/asm/vs_seeker.s
index 2c2d9993e..c9f5ade87 100644
--- a/asm/vs_seeker.s
+++ b/asm/vs_seeker.s
@@ -5,100 +5,6 @@
.text
- thumb_func_start sub_810C8EC
-sub_810C8EC: @ 810C8EC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- ldr r0, _0810C928 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0xFF
- bl ScriptMovement_IsObjectMovementFinished
- lsls r0, 24
- cmp r0, 0
- beq _0810C962
- ldr r0, _0810C92C @ =gUnknown_203ADB8
- ldr r0, [r0]
- ldr r1, _0810C930 @ =0x00000431
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0xF8
- ands r1, r0
- cmp r1, 0
- bne _0810C93C
- ldr r2, _0810C934 @ =gUnknown_81C1429
- ldr r3, _0810C938 @ =sub_80A1E0C
- adds r0, r4, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
- b _0810C95A
- .align 2, 0
-_0810C928: .4byte gSaveBlock1Ptr
-_0810C92C: .4byte gUnknown_203ADB8
-_0810C930: .4byte 0x00000431
-_0810C934: .4byte gUnknown_81C1429
-_0810C938: .4byte sub_80A1E0C
-_0810C93C:
- cmp r1, 0x10
- bne _0810C944
- bl sub_810D304
-_0810C944:
- movs r0, 0
- movs r1, 0x1
- bl sub_80F6F54
- bl sub_80696C0
- bl ScriptContext2_Disable
- adds r0, r5, 0
- bl DestroyTask
-_0810C95A:
- ldr r0, _0810C968 @ =gUnknown_203ADB8
- ldr r0, [r0]
- bl Free
-_0810C962:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810C968: .4byte gUnknown_203ADB8
- thumb_func_end sub_810C8EC
-
- thumb_func_start sub_810C96C
-sub_810C96C: @ 810C96C
- push {lr}
- ldr r0, _0810C990 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0xC7
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x64
- bne _0810C998
- bl sub_810D1CC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _0810C994
- movs r0, 0x1
- b _0810C9A4
- .align 2, 0
-_0810C990: .4byte gSaveBlock1Ptr
-_0810C994:
- movs r0, 0x2
- b _0810C9A4
-_0810C998:
- movs r1, 0x64
- subs r1, r0
- movs r0, 0
- bl TV_PrintIntToStringVar
- movs r0, 0
-_0810C9A4:
- pop {r1}
- bx r1
- thumb_func_end sub_810C96C
-
thumb_func_start sub_810C9A8
sub_810C9A8: @ 810C9A8
push {r4-r7,lr}
diff --git a/include/event_scripts.h b/include/event_scripts.h
index a210e4c34..03329ba34 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -372,6 +372,9 @@ extern const u8 SecretBase_RedCave1_Text_274E75[];
extern const u8 SecretBase_RedCave1_Text_2751E1[];
extern const u8 SecretBase_RedCave1_Text_2754F6[];
extern const u8 SecretBase_RedCave1_Text_2758CC[];
+
+// vs_seeker
extern const u8 gUnknown_81C137C[];
extern const u8 gUnknown_81C13D6[];
+extern const u8 gUnknown_81C1429[];
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/field_specials.h b/include/field_specials.h
index 1f8fbf147..8c0e69c2c 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -2,5 +2,6 @@
#define GUARD_FIELD_SPECIALS_H
u8 GetLeadMonIndex(void);
+void TV_PrintIntToStringVar(u8, int);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/global.h b/include/global.h
index a48de5a61..7fa5cfafe 100644
--- a/include/global.h
+++ b/include/global.h
@@ -480,7 +480,9 @@ struct SaveBlock1
/*0x14*/ struct WarpData warp2;
/*0x1C*/ struct WarpData lastHealLocation;
/*0x24*/ struct WarpData warp4;
- /*0x002C*/ u8 filler2C[0x674];
+ /*0x002C*/ u8 filler2C[0x60C];
+ /*0x638*/ u8 trainerRematchStepCounter;
+ /*0x639*/ u8 trainerRematches[100];
/*0x06A0*/ struct MapObject mapObjects[MAP_OBJECTS_COUNT];
/*0x08E0*/ struct MapObjectTemplate mapObjectTemplates[64];
/*0x0EE0*/ u8 fillerEE0[0x273C];
diff --git a/include/map_obj_lock.h b/include/map_obj_lock.h
index a10648f2f..cf1f714d7 100644
--- a/include/map_obj_lock.h
+++ b/include/map_obj_lock.h
@@ -7,5 +7,6 @@ bool8 sub_809847C(void);
void LockSelectedMapObject(void);
void sub_8098630(void);
bool8 sub_8098734(void);
+void sub_80696C0(void);
#endif // GUARD_MAP_OBJ_LOCK_H
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index 71e1f3c0d..639395941 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -15,5 +15,6 @@ void sub_8197434(u8 a0, u8 a1);
void SetStandardWindowBorderStyle(u8 a0, u8 a1);
void sub_8197930(void);
u8 GetPlayerTextSpeed(void);
+void sub_80F6F54(u8, u8);
#endif // GUARD_NEW_MENU_HELPERS_H
diff --git a/src/vs_seeker.c b/src/vs_seeker.c
index b18521b83..9c4f12a1d 100644
--- a/src/vs_seeker.c
+++ b/src/vs_seeker.c
@@ -7,6 +7,9 @@
#include "new_menu_helpers.h"
#include "item_use.h"
#include "event_scripts.h"
+#include "script.h"
+#include "map_obj_lock.h"
+#include "field_specials.h"
#include "item_menu.h"
#include "field_effect.h"
#include "script_movement.h"
@@ -26,10 +29,12 @@ void sub_810C730(u8 taskId);
void sub_810C760(u8 taskId);
void sub_810C808(void);
void sub_810C8EC(u8 taskId);
+void sub_810D304(void);
bool8 sub_810C96C(void);
void sub_810C604(void);
u8 sub_810C9A8(const void *);
u16 sub_810D074(const u8 *);
+u8 sub_810D1CC(void);
// rodata
extern const struct UnkStruct_845318C gUnknown_845318C[];
@@ -121,3 +126,41 @@ void sub_810C808(void)
}
gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_6 = 0xFF;
}
+
+void sub_810C8EC(u8 taskId)
+{
+ if (ScriptMovement_IsObjectMovementFinished(0xFF, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup))
+ {
+ if (gUnknown_203ADB8->unk_431_3 == 0)
+ {
+ DisplayItemMessageOnField(taskId, 2, gUnknown_81C1429, sub_80A1E0C);
+ }
+ else
+ {
+ if (gUnknown_203ADB8->unk_431_3 == 2)
+ sub_810D304();
+ sub_80F6F54(0, 1);
+ sub_80696C0();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ Free(gUnknown_203ADB8);
+ }
+}
+
+u8 sub_810C96C(void)
+{
+ u8 vsSeekerChargeSteps = gSaveBlock1Ptr->trainerRematchStepCounter;
+ if (vsSeekerChargeSteps == 100)
+ {
+ if (sub_810D1CC() == 0xFF)
+ return 1;
+ else
+ return 2;
+ }
+ else
+ {
+ TV_PrintIntToStringVar(0, 100 - vsSeekerChargeSteps);
+ return 0;
+ }
+}