mirror of
https://github.com/pret/pokeheartgold.git
synced 2026-06-02 21:54:45 -05:00
more work
This commit is contained in:
parent
dd8c551a9b
commit
144ee051ee
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user