1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-24 00:03:11 +01:00

fix and refactor rct1_process_scenario_flags

This commit is contained in:
IntelOrca
2015-07-14 23:37:22 +01:00
parent cde0cece16
commit 81a8434873
2 changed files with 38 additions and 25 deletions

View File

@@ -54,8 +54,8 @@ static void rct1_fix_scenery();
static void rct1_fix_entrance_positions();
static void rct1_reset_research();
static void sub_69F06A();
static void sub_666DFD();
static void rct1_process_scenario_flags();
static void rct1_reset_park_entrance_path_type();
static void rct1_clear_extra_sprite_entries();
static void rct1_clear_extra_tile_entries();
static void rct1_fix_colours();
@@ -214,7 +214,7 @@ void rct1_fix_landscape()
RCT2_GLOBAL(RCT2_ADDRESS_LAST_GUESTS_IN_PARK, uint16) = 0;
RCT2_GLOBAL(RCT2_ADDRESS_GUEST_CHANGE_MODIFIER, uint8) = 0;
rct1_clear_extra_tile_entries();
sub_69F06A();
rct1_process_scenario_flags();
rct1_fix_colours();
rct1_fix_z();
rct1_fix_paths();
@@ -479,48 +479,38 @@ static void rct1_reset_research()
*
* rct2: 0x0069F06A
*/
static void sub_69F06A()
static void rct1_process_scenario_flags()
{
RCT2_CALLPROC_EBPSAFE(0x0069F06A); return;
uint32 scenarioFlags = RCT2_GLOBAL(0x013CE770, uint32);
// TODO, bug with the following code
RCT2_GLOBAL(0x013CE770, uint32) |= (1 << 0) | (1 << 1) | (1 << 14) | (1 << 2) | (1 << 3);
if (!(RCT2_GLOBAL(0x013CE770, uint32) & (1 << 4))) {
RCT2_GLOBAL(0x013CE770, uint32) |= (1 << 4);
banner_init(); // 6B9CB0
if (!(scenarioFlags & RCT1_SCENARIO_FLAG_ENABLE_BANNERS)) {
banner_init();
}
if (!(RCT2_GLOBAL(0x013CE770, uint32) & (1 << 6))) {
RCT2_GLOBAL(0x013CE770, uint32) |= (1 << 6);
if (!(scenarioFlags & (1 << 6))) {
sub_69E891();
}
RCT2_GLOBAL(0x013CE770, uint32) |= (1 << 7);
if (!(RCT2_GLOBAL(0x013CE770, uint32) & (1 << 8))) {
RCT2_GLOBAL(0x013CE770, uint32) |= (1 << 8);
sub_666DFD();
if (!(scenarioFlags & RCT1_SCENARIO_FLAG_CUSTOM_PARK_ENTRANCE_PATH)) {
rct1_reset_park_entrance_path_type();
}
if (!(RCT2_GLOBAL(0x013CE770, uint32) & (1 << 9))) {
RCT2_GLOBAL(0x013CE770, uint32) |= (1 << 9);
if (!(scenarioFlags & RCT1_SCENARIO_FLAG_NO_CASH_RESET)) {
finance_reset_cash_to_initial();
}
if (!(RCT2_GLOBAL(0x013CE770, uint32) & (1 << 13))) {
RCT2_GLOBAL(0x013CE770, uint32) |= (1 << 13);
if (!(scenarioFlags & RCT1_SCENARIO_FLAG_CUSTOM_MAP_SIZE)) {
RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE_UNITS, uint16) = 127 * 32;
RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE_MINUS_2, uint16) = 4350;
RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE_UNITS, uint16) = 128;
RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE, uint16) = 128;
RCT2_GLOBAL(RCT2_ADDRESS_MAP_MAX_XY, uint16) = 4095;
}
if (!(RCT2_GLOBAL(0x013CE770, uint32) & (1 << 15))) {
RCT2_GLOBAL(0x013CE770, uint32) |= (1 << 15);
if (!(scenarioFlags & (1 << 15))) {
RCT2_GLOBAL(0x01358838, uint32) = 0;
}
RCT2_GLOBAL(0x013CE770, uint32) |= (1 << 16) | (1 << 18) | (1 << 19);
}
/**
*
* rct2: 0x00666DFD
*/
static void sub_666DFD()
static void rct1_reset_park_entrance_path_type()
{
int x, y;
rct_map_element *mapElement;

View File

@@ -477,6 +477,29 @@ typedef struct{
uint16 start_track_data_AA_CF; // 0xC4
}rct_track_td4; // Information based off RCTTechDepot
enum {
RCT1_SCENARIO_FLAG_0 = 1 << 0,
RCT1_SCENARIO_FLAG_1 = 1 << 1,
RCT1_SCENARIO_FLAG_2 = 1 << 2,
RCT1_SCENARIO_FLAG_3 = 1 << 3,
RCT1_SCENARIO_FLAG_ENABLE_BANNERS = 1 << 4,
RCT1_SCENARIO_FLAG_5 = 1 << 5,
RCT1_SCENARIO_FLAG_6 = 1 << 6,
RCT1_SCENARIO_FLAG_7 = 1 << 7,
RCT1_SCENARIO_FLAG_CUSTOM_PARK_ENTRANCE_PATH = 1 << 8,
RCT1_SCENARIO_FLAG_NO_CASH_RESET = 1 << 9,
RCT1_SCENARIO_FLAG_10 = 1 << 10,
RCT1_SCENARIO_FLAG_11 = 1 << 11,
RCT1_SCENARIO_FLAG_12 = 1 << 12,
RCT1_SCENARIO_FLAG_CUSTOM_MAP_SIZE = 1 << 13,
RCT1_SCENARIO_FLAG_14 = 1 << 14,
RCT1_SCENARIO_FLAG_15 = 1 << 15,
RCT1_SCENARIO_FLAG_16 = 1 << 16,
RCT1_SCENARIO_FLAG_17 = 1 << 17,
RCT1_SCENARIO_FLAG_18 = 1 << 18,
RCT1_SCENARIO_FLAG_19 = 1 << 19,
};
extern const uint8 RCT1ColourConversionTable[32];
char **gVehicleHierarchies[0x60];