mirror of https://github.com/OpenRCT2/OpenRCT2.git
347 lines
10 KiB
C
347 lines
10 KiB
C
/*****************************************************************************
|
|
* Copyright (c) 2014 Ted John
|
|
* OpenRCT2, an open source clone of Roller Coaster Tycoon 2.
|
|
*
|
|
* This file is part of OpenRCT2.
|
|
*
|
|
* OpenRCT2 is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*****************************************************************************/
|
|
|
|
#ifndef _RCT1_H_
|
|
#define _RCT1_H_
|
|
|
|
#include "management/award.h"
|
|
#include "management/news_item.h"
|
|
#include "management/research.h"
|
|
#include "rct2.h"
|
|
#include "ride/ride.h"
|
|
#include "world/banner.h"
|
|
#include "world/map.h"
|
|
#include "world/sprite.h"
|
|
|
|
typedef struct {
|
|
uint16 x;
|
|
uint16 y;
|
|
uint16 z;
|
|
uint8 direction;
|
|
} rct1_entrance;
|
|
|
|
/**
|
|
* RCT1,AA,LL scenario / saved game structure.
|
|
* size: 0x1F850C
|
|
*/
|
|
typedef struct {
|
|
uint16 month;
|
|
uint16 day;
|
|
uint32 ticks;
|
|
uint32 random_a;
|
|
uint32 random_b;
|
|
rct_map_element map_elements[0xC000];
|
|
uint32 unk_counter;
|
|
rct_sprite sprites[5000];
|
|
uint16 next_sprite_index;
|
|
uint16 first_vehicle_sprite_index;
|
|
uint16 first_peep_sprite_index;
|
|
uint16 first_duck_sprite_index;
|
|
uint16 first_litter_sprite_index;
|
|
uint16 first_oversized_ride_car_sprite_index;
|
|
uint16 sprites_available;
|
|
uint16 num_vehicle_sprites;
|
|
uint16 num_peep_sprites;
|
|
uint16 num_duck_sprites;
|
|
uint16 num_litter_sprites;
|
|
uint16 num_oversized_ride_car_sprites;
|
|
uint32 park_name_string_index;
|
|
uint32 unk_198830;
|
|
money32 cash;
|
|
money32 loan;
|
|
uint32 park_flags;
|
|
money16 park_entrance_fee;
|
|
rct1_entrance park_entrance;
|
|
uint8 unk_198849;
|
|
rct2_peep_spawn peep_spawn[2];
|
|
uint8 unk_198856;
|
|
uint8 research_level;
|
|
uint32 unk_198858;
|
|
uint8 available_rides[32];
|
|
uint8 available_vehicles[32];
|
|
uint32 ride_feature_1[128];
|
|
uint32 ride_feature_2[128];
|
|
uint16 guests_in_park;
|
|
uint16 unk_198C9E;
|
|
money32 expenditure[14 * 16];
|
|
uint32 guests_in_park_2;
|
|
uint8 unk_199024;
|
|
uint8 handman_colour;
|
|
uint8 mechanic_colour;
|
|
uint8 security_guard_colour;
|
|
uint8 available_scenery[128];
|
|
uint16 available_banners;
|
|
uint8 unk_1990AA[94];
|
|
uint16 park_rating;
|
|
uint8 park_rating_history[32];
|
|
uint8 guests_in_park_history[32];
|
|
uint8 research_priority;
|
|
uint8 research_progress;
|
|
uint8 last_research_item;
|
|
uint8 last_research_ride;
|
|
uint8 last_research_category;
|
|
uint8 last_research_flag;
|
|
rct_research_item research_items[200];
|
|
uint8 next_research_item;
|
|
uint8 next_research_ride;
|
|
uint8 next_research_category;
|
|
uint8 next_research_flag;
|
|
uint16 unk_19953C;
|
|
uint32 unk_19953E;
|
|
uint16 cheat_detection_land_owned;
|
|
uint16 unk_199544;
|
|
money16 median_recommended_park_entry_fee;
|
|
money32 max_loan;
|
|
money16 guest_initial_cash;
|
|
uint8 guest_initial_hunger;
|
|
uint8 guest_initial_thirst;
|
|
uint8 scenario_objective_type;
|
|
uint8 scenario_objective_years;
|
|
uint16 unk_199552;
|
|
money32 scenario_objective_currency;
|
|
uint16 scenario_objective_num_guests;
|
|
uint8 marketing_status[20];
|
|
uint8 marketing_assoc[20];
|
|
uint8 unk_199582[2];
|
|
money32 cash_history[128];
|
|
money32 total_expenditure;
|
|
money32 profit;
|
|
uint8 unk_199788[8];
|
|
money32 weekly_profit_history[128];
|
|
money32 park_value;
|
|
money32 park_value_history[128];
|
|
uint32 scenario_objective_score;
|
|
uint32 num_admissions;
|
|
money32 admission_total_income;
|
|
money32 company_value;
|
|
uint8 thought_timer[16];
|
|
rct_award awards[4];
|
|
money16 land_price;
|
|
money16 construction_rights_price;
|
|
uint16 unk_199BCC;
|
|
uint16 unk_199BCE;
|
|
uint32 unk_199BD0;
|
|
char username[64];
|
|
uint32 game_version;
|
|
money32 objective_completion_company_value;
|
|
uint32 finance_checksum;
|
|
uint16 num_rides;
|
|
uint16 cheat_detection_neg_num_rides;
|
|
uint16 cheat_detection_max_owned_tiles;
|
|
uint16 cheat_detection_neg_max_owned_tiles;
|
|
uint32 finance_checksum_3;
|
|
uint32 scenario_slot_index_checksum;
|
|
char scenario_winner[32];
|
|
uint32 finance_checksum_2;
|
|
char copyright_notice[40];
|
|
uint16 cheat_detection_sv6_sc4[4];
|
|
uint16 unk_199C84;
|
|
uint16 unk_199C86;
|
|
uint16 map_size_unk_a;
|
|
uint16 map_size_unk_b;
|
|
uint16 map_size;
|
|
uint16 map_size_unk_c;
|
|
uint32 same_price_flags;
|
|
uint16 unk_199C94;
|
|
uint8 unk_199C96[3];
|
|
uint8 water_colour;
|
|
uint16 unk_199C9A;
|
|
rct_research_item research_items_LL[180];
|
|
uint8 unk_19A020[5468];
|
|
rct_banner banners[100];
|
|
char string_table[32][1024];
|
|
uint32 game_time_counter;
|
|
rct_ride rides[255];
|
|
uint16 unk_game_time_counter;
|
|
uint16 view_x;
|
|
uint16 view_y;
|
|
uint8 view_zoom;
|
|
uint8 view_rotation;
|
|
uint8 animated_objects[6000];
|
|
uint32 num_animated_objects;
|
|
uint8 unk_1CADBC[12];
|
|
uint16 scrolling_text_step;
|
|
uint32 unk_1CADCA;
|
|
uint16 unk_1CADCE;
|
|
uint8 unk_1CADD0[116];
|
|
rct_ride_measurement ride_measurements[8];
|
|
uint32 next_guest_index;
|
|
uint16 game_counter_5;
|
|
uint8 patrol_areas[0x3C00];
|
|
uint8 unk_1F42AA[116];
|
|
uint8 unk_1F431E[4];
|
|
uint8 unk_1F4322[8];
|
|
uint8 climate;
|
|
uint8 unk_1F432B;
|
|
uint16 climate_timer;
|
|
uint8 weather;
|
|
uint8 target_weather;
|
|
uint8 temperature;
|
|
uint8 target_temperature;
|
|
uint8 thunder_frequency;
|
|
uint8 target_thunder_frequency;
|
|
uint8 weather_gloom;
|
|
uint8 target_weather_gloom;
|
|
uint8 rain;
|
|
uint8 target_rain;
|
|
rct_news_item messages[61];
|
|
char scenario_name[62];
|
|
uint16 scenario_slot_index;
|
|
uint32 scenario_flags;
|
|
uint8 unk_1F8358[432];
|
|
uint32 expansion_pack_checksum;
|
|
} rct1_s4;
|
|
|
|
enum {
|
|
RCT1_RIDE_TYPE_NULL = 255,
|
|
RCT1_RIDE_TYPE_WOODEN_ROLLER_COASTER = 0,
|
|
RCT1_RIDE_TYPE_STAND_UP_STEEL_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_SUSPENDED_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_INVERTED_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_STEEL_MINI_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_MINIATURE_RAILROAD,
|
|
RCT1_RIDE_TYPE_MONORAIL,
|
|
RCT1_RIDE_TYPE_SUSPENDED_SINGLE_RAIL_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_BOAT_HIRE,
|
|
RCT1_RIDE_TYPE_WOODEN_CRAZY_RODENT_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_SINGLE_RAIL_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_CAR_RIDE,
|
|
RCT1_RIDE_TYPE_WHOA_BELLY,
|
|
RCT1_RIDE_TYPE_BOBSLED_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_OBSERVATION_TOWER,
|
|
RCT1_RIDE_TYPE_STEEL_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_WATER_SLIDE,
|
|
RCT1_RIDE_TYPE_MINE_TRAIN_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_CHAIRLIFT,
|
|
RCT1_RIDE_TYPE_STEEL_CORKSCREW_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_HEDGE_MAZE,
|
|
RCT1_RIDE_TYPE_SPIRAL_SLIDE,
|
|
RCT1_RIDE_TYPE_GO_KARTS,
|
|
RCT1_RIDE_TYPE_LOG_FLUME,
|
|
RCT1_RIDE_TYPE_RIVER_RAPIDS,
|
|
RCT1_RIDE_TYPE_BUMPER_CARS,
|
|
RCT1_RIDE_TYPE_SWINGING_SHIP,
|
|
RCT1_RIDE_TYPE_SWINGING_INVERTER_SHIP,
|
|
RCT1_RIDE_TYPE_ICE_CREAM_STALL,
|
|
RCT1_RIDE_TYPE_FRIES_STALL,
|
|
RCT1_RIDE_TYPE_DRINK_STALL,
|
|
RCT1_RIDE_TYPE_COTTON_CANDY_STALL,
|
|
RCT1_RIDE_TYPE_BURGER_BAR,
|
|
RCT1_RIDE_TYPE_MERRY_GO_ROUND,
|
|
RCT1_RIDE_TYPE_BALLOON_STALL,
|
|
RCT1_RIDE_TYPE_INFORMATION_KIOSK,
|
|
RCT1_RIDE_TYPE_BATHROOM,
|
|
RCT1_RIDE_TYPE_FERRIS_WHEEL,
|
|
RCT1_RIDE_TYPE_MOTION_SIMULATOR,
|
|
RCT1_RIDE_TYPE_3D_CINEMA,
|
|
RCT1_RIDE_TYPE_GRAVITRON,
|
|
RCT1_RIDE_TYPE_SPACE_RINGS,
|
|
RCT1_RIDE_TYPE_REVERSE_WHOA_BELLY_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_SOUVENIR_STALL,
|
|
RCT1_RIDE_TYPE_VERTICAL_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_PIZZA_STALL,
|
|
RCT1_RIDE_TYPE_SCRAMBLED_EGGS,
|
|
RCT1_RIDE_TYPE_HAUNTED_HOUSE,
|
|
RCT1_RIDE_TYPE_POPCORN_STALL,
|
|
RCT1_RIDE_TYPE_CIRCUS_SHOW,
|
|
RCT1_RIDE_TYPE_GHOST_TRAIN,
|
|
RCT1_RIDE_TYPE_STEEL_TWISTER_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_WOODEN_TWISTER_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_WOODEN_SIDE_FRICTION_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_STEEL_WILD_MOUSE_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_HOT_DOG_STALL,
|
|
RCT1_RIDE_TYPE_EXOTIC_SEA_FOOD_STALL,
|
|
RCT1_RIDE_TYPE_HAT_STALL,
|
|
RCT1_RIDE_TYPE_CANDY_APPLE_STAND,
|
|
RCT1_RIDE_TYPE_VIRGINIA_REEL,
|
|
RCT1_RIDE_TYPE_RIVER_RIDE,
|
|
RCT1_RIDE_TYPE_CYCLE_MONORAIL,
|
|
RCT1_RIDE_TYPE_FLYING_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_SUSPENDED_MONORAIL,
|
|
RCT1_RIDE_TYPE_40,
|
|
RCT1_RIDE_TYPE_WOODEN_REVERSER_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_HEARTLINE_TWISTER_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_MINIATURE_GOLF,
|
|
RCT1_RIDE_TYPE_44,
|
|
RCT1_RIDE_TYPE_ROTO_DROP,
|
|
RCT1_RIDE_TYPE_FLYING_SAUCERS,
|
|
RCT1_RIDE_TYPE_CROOKED_HOUSE,
|
|
RCT1_RIDE_TYPE_CYCLE_RAILWAY,
|
|
RCT1_RIDE_TYPE_SUSPENDED_LOOPING_ROLLER_COASTER,
|
|
RCT1_RIDE_TYPE_WATER_COASTER,
|
|
RCT1_RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER,
|
|
RCT1_RIDE_TYPE_INVERTED_WILD_MOUSE_COASTER,
|
|
RCT1_RIDE_TYPE_JET_SKIS,
|
|
RCT1_RIDE_TYPE_T_SHIRT_STALL,
|
|
RCT1_RIDE_TYPE_RAFT_RIDE,
|
|
RCT1_RIDE_TYPE_DOUGHNUT_SHOP,
|
|
RCT1_RIDE_TYPE_ENTERPRISE,
|
|
RCT1_RIDE_TYPE_COFFEE_SHOP,
|
|
RCT1_RIDE_TYPE_FRIED_CHICKEN_STALL,
|
|
RCT1_RIDE_TYPE_LEMONADE_STALL
|
|
};
|
|
|
|
typedef struct{
|
|
uint8 type; // 0x00
|
|
uint8 vehicle_type; // 0x01
|
|
uint32 special_track_flags; // 0x02
|
|
uint8 operating_mode; // 0x06
|
|
uint8 vehicle_colour_version; // 0x07 Vehicle colour type in first two bits, Version in bits 3,4
|
|
uint8 body_trim_colour[24]; // 0x08
|
|
uint8 track_spine_colour_rct1; // 0x20
|
|
uint8 track_rail_colour_rct1; // 0x21
|
|
uint8 track_support_colour_rct1; // 0x22
|
|
uint8 departure_control_flags; // 0x23
|
|
uint8 number_of_trains; // 0x24
|
|
uint8 cars_per_train; // 0x25
|
|
uint8 min_wait_time; // 0x26
|
|
uint8 max_wait_time; // 0x27
|
|
uint8 speed; // 0x28
|
|
uint8 max_speed; // 0x29
|
|
uint8 average_speed; // 0x2A
|
|
uint16 ride_length; // 0x2B
|
|
uint8 max_positive_vertical_g; // 0x2D
|
|
uint8 max_negitive_vertical_g; // 0x2E
|
|
uint8 max_lateral_g; // 0x2F
|
|
union {
|
|
uint8 inversions; // 0x30
|
|
uint8 holes; // 0x30
|
|
};
|
|
uint8 drops; // 0x31
|
|
uint8 highest_drop_height; // 0x32
|
|
uint8 excitement; // 0x33
|
|
uint8 intensity; // 0x34
|
|
uint8 nausea; // 0x35
|
|
uint8 pad_36[2];
|
|
union{
|
|
uint16 start_track_data_original; // 0x38
|
|
uint8 track_spine_colour[4]; // 0x38
|
|
};
|
|
uint8 track_rail_colour[4]; // 0x3C
|
|
union{
|
|
uint8 track_support_colour[4]; // 0x40
|
|
uint8 wall_type[4]; // 0x40
|
|
};
|
|
uint8 pad_41[0x83];
|
|
uint16 start_track_data_AA_CF; // 0xC4
|
|
}rct_track_td4; // Information based off RCTTechDepot
|
|
|
|
#endif
|
|
|