diff options
-rw-r--r-- | asm/vs_seeker.s | 94 | ||||
-rw-r--r-- | include/event_scripts.h | 3 | ||||
-rw-r--r-- | include/field_specials.h | 1 | ||||
-rw-r--r-- | include/global.h | 4 | ||||
-rw-r--r-- | include/map_obj_lock.h | 1 | ||||
-rw-r--r-- | include/new_menu_helpers.h | 1 | ||||
-rw-r--r-- | src/vs_seeker.c | 43 |
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; + } +} |