1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 11:03:00 +01:00

Reversed 684ac3

This commit is contained in:
Duncan Frost
2014-11-01 00:13:15 +00:00
parent d00001fed2
commit cbd7e0c096
4 changed files with 64 additions and 3 deletions

View File

@@ -24,6 +24,7 @@
#include "../world/scenery.h"
#include "news_item.h"
#include "research.h"
#include "../scenario.h"
const int _researchRate[] = { 0, 160, 250, 400 };
@@ -259,4 +260,61 @@ void research_update()
break;
}
}
}
/* rct2: 0x684AC3*/
void sub_684AC3(){
rct_research_item* research = gResearchItems;
for (; research->entryIndex != -2; research++);
research++;
for (; research->entryIndex != -3; research += 2){
if (scenario_rand() & 1) continue;
rct_research_item* edx;
rct_research_item* ebp;
for (rct_research_item* inner_research = gResearchItems; inner_research->entryIndex != -2; inner_research++){
if (research->entryIndex == inner_research->entryIndex){
edx = inner_research;
}
if ((research + 1)->entryIndex == inner_research->entryIndex){
ebp = inner_research;
}
}
edx->entryIndex = research->entryIndex;
ebp->entryIndex = (research + 1)->entryIndex;
uint8 cat = edx->category;
edx->category = ebp->category;
ebp->category = cat;
}
for (int i = 0; i < 8; ++i){
RCT2_ADDRESS(0x01357404, uint32)[i] = 0;
RCT2_ADDRESS(0x01357424, uint32)[i] = 0;
}
for (int i = 0; i < 56; i++){
RCT2_ADDRESS(0x01357BD0, uint32)[i] = -1;
}
for (int i = 0; i < 19; ++i){
rct_scenery_set_entry* scenery_set = g_scenerySetEntries[i];
if ((int)scenery_set == -1)continue;
for (int j = 0; j < scenery_set->entry_count; ++j){
uint8 value = scenery_set->scenery_entries[j] & 0x1F;
RCT2_ADDRESS(0x01357BD0, uint32)[scenery_set->scenery_entries[j] >> 5] &= ~(1 << value);
}
}
for (research = gResearchItems; research->entryIndex != -1; research++){
research_finish_item(research->entryIndex);
}
RCT2_GLOBAL(RCT2_ADDRESS_LAST_RESEARCHED_ITEM_SUBJECT, sint32) = -1;
RCT2_GLOBAL(RCT2_ADDRESS_RESEARH_PROGRESS_STAGE, uint8) = 0;
RCT2_GLOBAL(RCT2_ADDRESS_RESEARH_PROGRESS, uint16) = 0;
}

View File

@@ -52,5 +52,6 @@ extern uint8 gResearchUncompletedCategories;
void research_reset_items();
void research_update_uncompleted_types();
void research_update();
void sub_684AC3();
#endif

View File

@@ -26,6 +26,7 @@
#include "management/award.h"
#include "management/finance.h"
#include "management/marketing.h"
#include "management/research.h"
#include "management/news_item.h"
#include "object.h"
#include "platform/platform.h"
@@ -248,7 +249,7 @@ int scenario_load_and_play_from_path(const char *path)
RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, sint32) &= 0xFFFFF7FF;
if (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, sint32) & PARK_FLAGS_NO_MONEY_SCENARIO)
RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, sint32) |= PARK_FLAGS_NO_MONEY;
RCT2_CALLPROC_EBPSAFE(0x00684AC3);
sub_684AC3();
RCT2_CALLPROC_EBPSAFE(0x006DFEE4);
news_item_init_queue();
if (RCT2_GLOBAL(RCT2_ADDRESS_OBJECTIVE_TYPE, uint8) != OBJECTIVE_NONE)
@@ -1039,4 +1040,4 @@ void scenario_success_submit_name(const char *name)
}
RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) &= ~PARK_FLAGS_SCENARIO_COMPLETE_NAME_INPUT;
}
}

View File

@@ -31,6 +31,7 @@
#include "interface/viewport.h"
#include "intro.h"
#include "management/news_item.h"
#include "management/research.h"
#include "ride/ride.h"
#include "scenario.h"
#include "world/climate.h"
@@ -194,7 +195,7 @@ static void title_update_showcase()
window_invalidate(w);
sub_69E9A7();
window_new_ride_init_vars();
RCT2_CALLPROC_EBPSAFE(0x00684AC3);
sub_684AC3();
RCT2_CALLPROC_EBPSAFE(0x006DFEE4);
news_item_init_queue();
gfx_invalidate_screen();