diff --git a/asm/include/overlay_01_021F8D80.inc b/asm/include/overlay_01_021F8D80.inc index cb95bc15a..d7c32fcf5 100644 --- a/asm/include/overlay_01_021F8D80.inc +++ b/asm/include/overlay_01_021F8D80.inc @@ -16,7 +16,7 @@ .public MapObjectManager_SetFlagsBits .public MapObjectManager_ClearFlagsBits .public MapObjectManager_GetFlagsBitsMask -.public MapObjectManager_GetHeapID +.public MapObjectManager_GetPriority .public sub_0205F1A0 .public FldObjSys_SetMModelNarc .public FldObjSys_GetMModelNarc diff --git a/asm/include/overlay_01_021F944C.inc b/asm/include/overlay_01_021F944C.inc index d811c4a01..5032e434f 100644 --- a/asm/include/overlay_01_021F944C.inc +++ b/asm/include/overlay_01_021F944C.inc @@ -48,7 +48,7 @@ .public sub_0205EEF4 .public sub_0205F09C .public MapObjectManager_GetObjectCount -.public MapObjectManager_GetHeapID +.public MapObjectManager_GetPriority .public sub_0205F1A0 .public sub_0205F1AC .public sub_0205F1C4 diff --git a/asm/include/overlay_01_021FD41C.inc b/asm/include/overlay_01_021FD41C.inc index 100c46eee..672564788 100644 --- a/asm/include/overlay_01_021FD41C.inc +++ b/asm/include/overlay_01_021FD41C.inc @@ -5,7 +5,7 @@ .public GF_RTC_GetTimeOfDay .public sub_0205F09C .public sub_0205F0F8 -.public MapObjectManager_GetHeapID +.public MapObjectManager_GetPriority .public MapObject_TestFlagsBits .public MapObject_GetID .public sub_0205F254 diff --git a/asm/include/unk_02062108.inc b/asm/include/unk_02062108.inc index bd37b7d5a..fb0c71cd5 100644 --- a/asm/include/unk_02062108.inc +++ b/asm/include/unk_02062108.inc @@ -7,7 +7,7 @@ .public FreeToHeapExplicit .public SysTask_GetData .public GF_AssertFail -.public MapObjectManager_GetHeapID +.public MapObjectManager_GetPriority .public MapObject_SetFlagsBits .public MapObject_ClearFlagsBits .public MapObject_TestFlagsBits diff --git a/asm/overlay_01_021F8D80.s b/asm/overlay_01_021F8D80.s index 9764063e4..93ba50346 100644 --- a/asm/overlay_01_021F8D80.s +++ b/asm/overlay_01_021F8D80.s @@ -664,7 +664,7 @@ _021F9212: bl MapObjectManager_GetObjectCount str r0, [sp, #0x14] add r0, r5, #0 - bl MapObjectManager_GetHeapID + bl MapObjectManager_GetPriority sub r0, r0, #1 str r0, [sp, #0x10] add r0, r5, #0 diff --git a/asm/overlay_01_021F944C.s b/asm/overlay_01_021F944C.s index e4b6196d4..2fe4684b9 100644 --- a/asm/overlay_01_021F944C.s +++ b/asm/overlay_01_021F944C.s @@ -2934,7 +2934,7 @@ _021FA882: str r4, [r5, r0] add r0, r0, #4 ldr r0, [r5, r0] - bl MapObjectManager_GetHeapID + bl MapObjectManager_GetPriority add r6, r0, #0 ldr r0, _021FA8E8 ; =ov01_021FA564 add r1, r5, #0 @@ -3245,7 +3245,7 @@ _021FAB4A: mov r0, #0x41 lsl r0, r0, #2 ldr r0, [r7, r0] - bl MapObjectManager_GetHeapID + bl MapObjectManager_GetPriority ldr r0, _021FAB98 ; =ov01_021FAB9C add r1, r5, #0 mov r2, #0xff diff --git a/asm/overlay_01_021FD41C.s b/asm/overlay_01_021FD41C.s index dfdf5e393..ea96dfae9 100644 --- a/asm/overlay_01_021FD41C.s +++ b/asm/overlay_01_021FD41C.s @@ -53,7 +53,7 @@ ov01_021FD458: ; 0x021FD458 ldr r0, [r4, #0x20] bl ov01_021F1468 ldr r0, [r0, #0x3c] - bl MapObjectManager_GetHeapID + bl MapObjectManager_GetPriority sub r2, r0, #1 ldr r0, _021FD478 ; =ov01_021FD4F4 add r1, r4, #0 diff --git a/asm/unk_02062108.s b/asm/unk_02062108.s index 70a105404..05005d531 100644 --- a/asm/unk_02062108.s +++ b/asm/unk_02062108.s @@ -188,7 +188,7 @@ _02062230: bne _02062230 add r0, r5, #0 bl MapObject_GetManager - bl MapObjectManager_GetHeapID + bl MapObjectManager_GetPriority sub r2, r0, #1 ldr r0, _0206225C ; =MovementScriptMachine add r1, r4, #0 diff --git a/include/map_object.h b/include/map_object.h index 7edd0d452..55f0517dc 100644 --- a/include/map_object.h +++ b/include/map_object.h @@ -34,7 +34,7 @@ struct MapObjectManager { //declared field_system.h u32 flags; u32 object_count; u32 unk8; - HeapID heapId; + u32 priority; u8 unk10[4]; NARC* mmodel_narc; u8 unk18[4]; @@ -161,7 +161,7 @@ typedef struct MapObjectInitArgs { } MapObjectInitArgs; // FIXME: Some of these declarations are static and don't belong in here. -MapObjectManager *MapObjectManager_Init(FieldSystem *fieldSystem, u32 objectCount, HeapID heapId); +MapObjectManager *MapObjectManager_Init(FieldSystem *fieldSystem, u32 objectCount, u32 priority); void MapObjectManager_Delete(MapObjectManager *manager); void sub_0205E104(MapObjectManager *manager, u32 unused, u32 a2, u32 objectCount, ObjectEvent* objectEvents); LocalMapObject *MapObject_Create(MapObjectManager *manager, u32 x, u32 z, u32 direction, u32 sprite, u32 movement, u32 mapNo); @@ -179,10 +179,6 @@ void sub_0205E580(MapObjectManager *manager); void FieldSystem_SyncMapObjectsToSaveEx(FieldSystem *fieldSystem, MapObjectManager *manager, SavedMapObject *savedObjects, s32 count); void MapObjectManager_RestoreFromSave(MapObjectManager *mapObjectManager, SavedMapObject *savedObjects, u32 objectCount); void MapObject_CreateFromMultipleObjectEvents(MapObjectManager *manager, u32 mapNo, u32 objectEventCount, ObjectEvent *objectEvents); -void sub_0205EA08(struct MapObjectInitArgs* args); -LocalMapObject* MapObjectManager_GetFirstInactiveObject(MapObjectManager*); -LocalMapObject* sub_0205EA98(MapObjectManager*, u32, u32); -void sub_0205EAF0(MapObjectManager* manager, LocalMapObject* object); void MapObject_InitFromObjectEvent(LocalMapObject* object, ObjectEvent* template, FieldSystem* fieldSystem); void MapObject_SetPositionVecFromTemplate(LocalMapObject* object, ObjectEvent* template); void sub_0205EC90(LocalMapObject* object, MapObjectManager* manager); @@ -215,8 +211,8 @@ void sub_0205F174(MapObjectManager* manager); void MapObjectManager_SetFlagsBits(MapObjectManager* manager, u32 bits); void MapObjectManager_ClearFlagsBits(MapObjectManager* manager, u32 bits); u32 MapObjectManager_GetFlagsBitsMask(MapObjectManager* manager, u32 bits); -void MapObjectManager_SetHeapID(MapObjectManager*, HeapID); -HeapID MapObjectManager_GetHeapID(MapObjectManager* manager); +void MapObjectManager_SetPriority(MapObjectManager* manager, u32 priority); +u32 MapObjectManager_GetPriority(MapObjectManager* manager); void* sub_0205F1A0(MapObjectManager*); void MapObjectManager_SetObjects(MapObjectManager* manager, LocalMapObject* objects); LocalMapObject* sub_0205F1AC(MapObjectManager* manager); diff --git a/src/field_warp_tasks.c b/src/field_warp_tasks.c index 327e93722..0582d3a2a 100644 --- a/src/field_warp_tasks.c +++ b/src/field_warp_tasks.c @@ -223,7 +223,7 @@ static void sub_0205316C(FieldSystem *fieldSystem) { playerSaveData = LocalFieldData_GetPlayer(Save_LocalFieldData_Get(fieldSystem->saveData)); fieldSystem->playerAvatar = sub_0205C390(fieldSystem->mapObjectManager, fieldSystem->location->x, fieldSystem->location->y, fieldSystem->location->direction, playerSaveData->unk4, gender, 2, playerSaveData); } else { - fieldSystem->mapObjectManager = MapObjectManager_Init(fieldSystem, 64, HEAP_ID_BATTLE); + fieldSystem->mapObjectManager = MapObjectManager_Init(fieldSystem, 64, 5); gender = PlayerProfile_GetTrainerGender(Save_PlayerData_GetProfileAddr(fieldSystem->saveData)); playerSaveData = LocalFieldData_GetPlayer(Save_LocalFieldData_Get(fieldSystem->saveData)); fieldSystem->playerAvatar = sub_0205C390(fieldSystem->mapObjectManager, fieldSystem->location->x, fieldSystem->location->y, fieldSystem->location->direction, playerSaveData->unk4, gender, 2, playerSaveData); @@ -248,7 +248,7 @@ static void sub_0205323C(FieldSystem *fieldSystem) { u32 gender; struct PlayerSaveData *playerSaveData; - fieldSystem->mapObjectManager = MapObjectManager_Init(fieldSystem, 64, HEAP_ID_BATTLE); + fieldSystem->mapObjectManager = MapObjectManager_Init(fieldSystem, 64, 5); FieldSystem_RestoreMapObjectsFromSave(fieldSystem); playerSaveData = LocalFieldData_GetPlayer(Save_LocalFieldData_Get(fieldSystem->saveData)); gender = PlayerProfile_GetTrainerGender(Save_PlayerData_GetProfileAddr(fieldSystem->saveData)); diff --git a/src/map_object.c b/src/map_object.c index 6a7cf9b03..49184e26e 100644 --- a/src/map_object.c +++ b/src/map_object.c @@ -17,15 +17,19 @@ static void LocalMapObject_InitFromSavedMapObject(LocalMapObject *localObject, S static void sub_0205E8EC(MapObjectManager *manager, LocalMapObject *object); static void sub_0205E934(LocalMapObject *object); static void MapObject_ConvertXYToPositionVec(LocalMapObject *object); +static void MapObject_CreateFromInitArgs(MapObjectInitArgs *args); +static LocalMapObject *MapObjectManager_GetFirstInactiveObject(MapObjectManager *manager); +static LocalMapObject *sub_0205EA98(MapObjectManager *manager, u32 id, u32 mapNo); +static void sub_0205EAF0(MapObjectManager *manager, LocalMapObject *object); static void sub_0205ED18(LocalMapObject *object); static void sub_0205EF8C(LocalMapObject *object); -MapObjectManager *MapObjectManager_Init(FieldSystem *fieldSystem, u32 objectCount, HeapID heapId) { +MapObjectManager *MapObjectManager_Init(FieldSystem *fieldSystem, u32 objectCount, u32 priority) { MapObjectManager *ret = MapObjectManager_New(objectCount); MapObjectManager_SetFieldSystemPtr(ret, fieldSystem); MapObjectManager_SetObjectCount(ret, objectCount); - MapObjectManager_SetHeapID(ret, heapId); + MapObjectManager_SetPriority(ret, priority); return ret; } @@ -442,48 +446,48 @@ void MapObject_CreateFromMultipleObjectEvents(MapObjectManager *manager, u32 map args->manager = manager; args->objectEvents = objectEventsCopy; - sub_0205EA08(args); + MapObject_CreateFromInitArgs(args); } -void sub_0205EA08(struct MapObjectInitArgs* args) { - FieldSystem* fieldSystem = MapObjectManager_GetFieldSystemPtr(args->manager); - ObjectEvent* template = args->objectEvents; +static void MapObject_CreateFromInitArgs(MapObjectInitArgs *args) { + FieldSystem *fieldSystem = MapObjectManager_GetFieldSystemPtr(args->manager); + ObjectEvent *objectEvents = args->objectEvents; do { - GF_ASSERT((ObjectEvent_ScriptIdIsUnset(template) != TRUE && FieldSystem_FlagCheck(fieldSystem, template->flag) != FALSE) || - MapObject_CreateFromObjectEvent(args->manager, template, args->mapNo) != NULL); + GF_ASSERT((ObjectEvent_ScriptIdIsUnset(objectEvents) != TRUE && FieldSystem_FlagCheck(fieldSystem, objectEvents->flag) != FALSE) || + MapObject_CreateFromObjectEvent(args->manager, objectEvents, args->mapNo) != NULL); - template++; + objectEvents++; args->index++; } while (args->index < args->objectEventCount); - FreeToHeapExplicit((HeapID)11, args->objectEvents); - FreeToHeapExplicit((HeapID)11, args); + FreeToHeapExplicit(HEAP_ID_FIELD, args->objectEvents); + FreeToHeapExplicit(HEAP_ID_FIELD, args); } -LocalMapObject* MapObjectManager_GetFirstInactiveObject(MapObjectManager* manager) { - int i = 0; - int count = MapObjectManager_GetObjectCount(manager); - LocalMapObject* object = MapObjectManager_GetObjects(manager); +static LocalMapObject *MapObjectManager_GetFirstInactiveObject(MapObjectManager *manager) { + s32 i = 0; + s32 count = MapObjectManager_GetObjectCount(manager); + LocalMapObject *objects = MapObjectManager_GetObjects(manager); do { - if (MapObject_GetFlagsBits(object, MAPOBJECTFLAG_ACTIVE) == 0) { - return object; + if (MapObject_GetFlagsBits(objects, MAPOBJECTFLAG_ACTIVE) == 0) { + return objects; } i++; - object++; + objects++; } while (i < count); return NULL; } -LocalMapObject* sub_0205EA98(MapObjectManager* manager, u32 id, u32 map_no) { - int index = 0; - LocalMapObject* object; +static LocalMapObject *sub_0205EA98(MapObjectManager *manager, u32 id, u32 mapNo) { //find corresponding LMO with ID and mapNo? + s32 index = 0; + LocalMapObject *object; while (sub_0205EEF4(manager, &object, &index, MAPOBJECTFLAG_ACTIVE) == TRUE) { - if (MapObject_CheckFlag25(object) == TRUE && id == MapObject_GetID(object) && map_no == sub_0205F544(object)) { + if (MapObject_CheckFlag25(object) == TRUE && MapObject_GetID(object) == id && sub_0205F544(object) == mapNo) { return object; } } @@ -491,14 +495,14 @@ LocalMapObject* sub_0205EA98(MapObjectManager* manager, u32 id, u32 map_no) { return NULL; } -void sub_0205EAF0(MapObjectManager* manager, LocalMapObject* object) { - u32 priority = MapObjectManager_GetHeapID(manager); +static void sub_0205EAF0(MapObjectManager *manager, LocalMapObject *object) { + u32 priority = MapObjectManager_GetPriority(manager); u32 movement = MapObject_GetMovement(object); if (movement == 48 || movement == 50) { priority += 2; } - SysTask* task = SysTask_CreateOnMainQueue((SysTaskFunc)sub_0205F12C, object, priority); + SysTask *task = SysTask_CreateOnMainQueue((SysTaskFunc)sub_0205F12C, object, priority); GF_ASSERT(task != NULL); sub_0205F338(object, task); @@ -839,12 +843,12 @@ u32 MapObjectManager_GetFlagsBitsMask(MapObjectManager* manager, u32 bits) { return manager->flags & bits; } -void MapObjectManager_SetHeapID(MapObjectManager* manager, HeapID heapId) { - manager->heapId = heapId; +void MapObjectManager_SetPriority(MapObjectManager* manager, u32 priority) { + manager->priority = priority; } -HeapID MapObjectManager_GetHeapID(MapObjectManager* manager) { - return manager->heapId; +u32 MapObjectManager_GetPriority(MapObjectManager* manager) { + return manager->priority; } void* sub_0205F1A0(MapObjectManager* manager) { @@ -1270,8 +1274,8 @@ FieldSystem* MapObject_GetFieldSystemPtr(LocalMapObject* object) { return MapObjectManager_GetFieldSystemPtr(sub_0205F364(object)); } -void* sub_0205F538(LocalMapObject* object) { - return (void*)MapObjectManager_GetHeapID(MapObject_GetManager(object)); +void* sub_0205F538(LocalMapObject* object) { //TODO: this is not void + return (void*)MapObjectManager_GetPriority(MapObject_GetManager(object)); } u32 sub_0205F544(LocalMapObject* object) {