diff --git a/projects/openrct2.vcxproj b/projects/openrct2.vcxproj index 4b6c6a56ea..2196ebbb79 100644 --- a/projects/openrct2.vcxproj +++ b/projects/openrct2.vcxproj @@ -38,6 +38,7 @@ + @@ -67,6 +68,7 @@ + diff --git a/projects/openrct2.vcxproj.filters b/projects/openrct2.vcxproj.filters index f37cadcd0e..a701d7fc67 100644 --- a/projects/openrct2.vcxproj.filters +++ b/projects/openrct2.vcxproj.filters @@ -108,6 +108,9 @@ Header Files + + Header Files + @@ -227,6 +230,9 @@ Windows + + Source Files + diff --git a/src/rct2.c b/src/rct2.c index c7ea00da04..88fd5a7bbe 100644 --- a/src/rct2.c +++ b/src/rct2.c @@ -40,6 +40,7 @@ #include "ride.h" #include "scenario.h" #include "title.h" +#include "track.h" #include "viewport.h" #define GAME_PATH "C:\\Program Files (x86)\\Infogrames\\RollerCoaster Tycoon 2" @@ -111,7 +112,7 @@ void rct2_init() // RCT2_CALLPROC_EBPSAFE(0x00674B81); // pointless expansion pack crap object_load_list(); scenario_load_list(); - RCT2_CALLPROC_X(0x006CED50, 0, 0, 0, 253, 0, 0, 0); // track_load_list(253) + track_load_list(253); gfx_load_g1(); RCT2_CALLPROC_EBPSAFE(0x006C19AC); osinterface_init(); diff --git a/src/track.c b/src/track.c new file mode 100644 index 0000000000..c12d4c8e2e --- /dev/null +++ b/src/track.c @@ -0,0 +1,46 @@ +/***************************************************************************** + * 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 . + *****************************************************************************/ + +#include "addresses.h" +#include "track.h" + +/** + * + * rct2: 0x00997C9D + */ +const rct_trackdefinition gTrackDefinitions[] = { + // TYPE VANGLE END VANGLE START BANK END BANK START SPECIAL + { TRACK_FLAT, TRACK_NONE, TRACK_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, TRACK_NONE }, // flat + { TRACK_FLAT, TRACK_NONE, TRACK_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, TRACK_NONE }, // station end + { TRACK_FLAT, TRACK_NONE, TRACK_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, TRACK_NONE }, // station begin + { TRACK_FLAT, TRACK_NONE, TRACK_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, TRACK_NONE }, // station middle + { TRACK_FLAT, TRACK_UP_25, TRACK_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, TRACK_NONE }, // 25 deg up + { TRACK_FLAT, TRACK_UP_60, TRACK_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, TRACK_NONE }, // 60 deg up + // TODO the rest +}; + +/** + * + * rct2: 0x006CED50 + */ +void track_load_list(int edx) +{ + RCT2_CALLPROC_X(0x006CED50, 0, 0, 0, edx, 0, 0, 0); +} \ No newline at end of file diff --git a/src/track.h b/src/track.h new file mode 100644 index 0000000000..40f496e1f7 --- /dev/null +++ b/src/track.h @@ -0,0 +1,95 @@ +/***************************************************************************** + * 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 . + *****************************************************************************/ + +#ifndef _TRACK_H_ +#define _TRACK_H_ + +#include "rct2.h" + +typedef struct { + uint8 type; + uint8 vangle_end; + uint8 vangle_start; + uint8 bank_end; + uint8 bank_start; + uint8 special; + uint8 pad[2]; +} rct_trackdefinition; + +enum { + TRACK_NONE = 0, + + TRACK_FLAT = 0, + TRACK_STATION_END = 2, + TRACK_VERTICAL_LOOP = 7, + TRACK_S_BEND = 13, + TRACK_TWIST = 17, + TRACK_HALF_LOOP = 18, + TRACK_CORKSCREW = 19, + TRACK_TOWER_BASE = 20, + TRACK_HELIX_SMALL= 21, + TRACK_HELIX_LARGE= 22, + TRACK_HELIX_LARGE_UNBANKED = 23, + TRACK_BRAKES = 24, + TRACK_ON_RIDE_PHOTO = 26, + TRACK_WATER_SPLASH = 27, + TRACK_BARREL_ROLL = 29, + TRACK_POWERED_LIFT = 30, + TRACK_HALF_LOOP_2 = 31, // ? + TRACK_LOG_FLUME_REVERSER = 33, + TRACK_WHOA_BELLY = 36, + TRACK_LIFT_HILL = 43, + TRACK_SPINNING_TUNNEL = 46, + TRACK_ROTATION_CONTROL_TOGGLE = 47, + TRACK_RAPIDS = 52, + TRACK_WATERFALL = 152, + TRACK_WHIRLPOOL = 152, + TRACK_BRAKE_FOR_DROP = 172 +}; + +enum { + TRACK_UP_25 = 2, + TRACK_UP_60 = 4, + TRACK_DOWN_25 = 6, + TRACK_DOWN_60 = 8, + TRACK_UP_90 = 10, + TRACK_DOWN_90 = 18, + + TRACK_VANGLE_TOWER = 10, + TRACK_VANGLE_WHOA_BELLY = 10 +}; + +enum { + TRACK_BANK_NONE = 0, + TRACK_BANK_LEFT = 2, + TRACK_BANK_RIGHT = 4, + TRACK_BANK_UPSIDE_DOWN = 15, +}; + +enum { + TRACK_HALF_LOOP_UP = 64, + TRACK_HALF_LOOP_DOWN = 192, + TRACK_UNKNOWN_VERTICAL_LOOP = 208, + TRACK_CORKSCREW_DOWN = 224 +}; + +void track_load_list(int edx); + +#endif \ No newline at end of file