From d7575732fbc5277fb3a626eb22883edd75eb556c Mon Sep 17 00:00:00 2001 From: Ted John Date: Sun, 26 Jun 2016 00:48:11 +0100 Subject: [PATCH] get title screen loading correctly --- src/object/ObjectRepository.cpp | 33 ++++++++++++++++++++++++++++++++- src/object_list.c | 2 +- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/object/ObjectRepository.cpp b/src/object/ObjectRepository.cpp index 1eaf17c1d6..30bf7b5a01 100644 --- a/src/object/ObjectRepository.cpp +++ b/src/object/ObjectRepository.cpp @@ -338,6 +338,19 @@ IObjectRepository * GetObjectRepository() return _objectRepository; } +Object * _loadedObjects[721] = { nullptr }; + +int GetObjectEntryIndex(uint8 objectType, uint8 entryIndex) +{ + int result = 0; + for (uint8 i = 0; i < objectType; i++) + { + result += object_entry_group_counts[i]; + } + result += entryIndex; + return result; +} + extern "C" { void object_list_load() @@ -378,10 +391,28 @@ extern "C" Memory::Copy(extendedEntry, object->GetObjectEntry(), sizeof(rct_object_entry)); extendedEntry->chunk_size = 0; - object->Load(); + int loadedObjectIndex = GetObjectEntryIndex(objectType, groupIndex); + delete _loadedObjects[loadedObjectIndex]; + _loadedObjects[loadedObjectIndex] = object; return 1; } + void reset_loaded_objects() + { + reset_type_to_ride_entry_index_map(); + + gTotalNoImages = 0xF26E; + + for (int i = 0; i < 721; i++) + { + Object * object = _loadedObjects[i]; + if (object != nullptr) + { + object->Load(); + } + } + } + void scenario_translate(scenario_index_entry * scenarioEntry, const rct_object_entry * stexObjectEntry) { rct_string_id localisedStringIds[3]; diff --git a/src/object_list.c b/src/object_list.c index 2fcf94c9cd..ada621d0a3 100644 --- a/src/object_list.c +++ b/src/object_list.c @@ -226,7 +226,7 @@ static void object_list_examine() * * rct2: 0x006A9FC0 */ -void reset_loaded_objects() +void reset_loaded_objects_old() { reset_type_to_ride_entry_index_map();