diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/vs_seeker.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/vs_seeker.c b/src/vs_seeker.c index 14b522679..b18521b83 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -3,6 +3,7 @@ #include "sound.h" #include "task.h" #include "malloc.h" +#include "field_map_obj.h" #include "new_menu_helpers.h" #include "item_use.h" #include "event_scripts.h" @@ -17,15 +18,18 @@ struct UnkStruct_845318C // TODO: populate }; +extern struct MapObject gUnknown_2036E38[MAP_OBJECTS_COUNT]; + // static declarations EWRAM_DATA struct VsSeekerStruct *gUnknown_203ADB8; void sub_810C730(u8 taskId); void sub_810C760(u8 taskId); -void sub_810C8EC(u8 taskId); void sub_810C808(void); +void sub_810C8EC(u8 taskId); bool8 sub_810C96C(void); void sub_810C604(void); u8 sub_810C9A8(const void *); +u16 sub_810D074(const u8 *); // rodata extern const struct UnkStruct_845318C gUnknown_845318C[]; @@ -92,3 +96,28 @@ void sub_810C760(u8 taskId) gTasks[taskId].func = sub_810C8EC; } } + +void sub_810C808(void) +{ + struct MapObjectTemplate *templates = gSaveBlock1Ptr->mapObjectTemplates; + u8 fieldObjectId = 0; + u8 vsSeekerObjectIdx = 0; + s32 mapObjectIdx; + + for (mapObjectIdx = 0; mapObjectIdx < gMapHeader.events->mapObjectCount; mapObjectIdx++) + { + if (templates[mapObjectIdx].unkC == 1 || templates[mapObjectIdx].unkC == 3) + { + gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_0 = templates[mapObjectIdx].script; + gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_4 = sub_810D074(templates[mapObjectIdx].script); + gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_6 = templates[mapObjectIdx].localId; + TryGetFieldObjectIdByLocalIdAndMap(templates[mapObjectIdx].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &fieldObjectId); + gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_7 = fieldObjectId; + gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_8 = gUnknown_2036E38[fieldObjectId].coords2.x - 7; + gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_a = gUnknown_2036E38[fieldObjectId].coords2.y - 7; + gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_c = templates[mapObjectIdx].graphicsId; + vsSeekerObjectIdx++; + } + } + gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_6 = 0xFF; +} |