Skip to content

Commit

Permalink
more work
Browse files Browse the repository at this point in the history
  • Loading branch information
red031000 committed Apr 17, 2024
1 parent dd8c551 commit 144ee05
Show file tree
Hide file tree
Showing 11 changed files with 50 additions and 50 deletions.
2 changes: 1 addition & 1 deletion asm/include/overlay_01_021F8D80.inc
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion asm/include/overlay_01_021F944C.inc
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion asm/include/overlay_01_021FD41C.inc
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion asm/include/unk_02062108.inc
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion asm/overlay_01_021F8D80.s
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions asm/overlay_01_021F944C.s
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion asm/overlay_01_021FD41C.s
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion asm/unk_02062108.s
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 4 additions & 8 deletions include/map_object.h
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions src/field_warp_tasks.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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));
Expand Down
66 changes: 35 additions & 31 deletions src/map_object.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down Expand Up @@ -442,63 +446,63 @@ 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;
}
}

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);
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down

0 comments on commit 144ee05

Please sign in to comment.