From a67e61a6c65ad9ab57908a34b93865d9a94607fd Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 17:55:42 -0300
Subject: [PATCH 01/26] Add /compatibility directory
---
src/openrct2/libopenrct2.vcxproj | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index 34bb1b2990ce..98d7df6d38b2 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -1208,5 +1208,8 @@
{c453da76-44b3-4ac8-aaa2-2b64a76993a5}
+
+
+
From 384abd6159439c07d49055eed2e67a49a0f003d9 Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 17:57:43 -0300
Subject: [PATCH 02/26] Move /rct1 files to /compatibility
---
src/openrct2-ui/windows/NewRide.cpp | 2 +-
src/openrct2-ui/windows/Ride.cpp | 2 +-
src/openrct2/Editor.cpp | 2 +-
src/openrct2/SpriteIds.h | 2 +-
src/openrct2/{ => compatibility}/rct1/Csg.cpp | 8 +-
src/openrct2/{ => compatibility}/rct1/Csg.h | 2 +-
.../{ => compatibility}/rct1/Limits.h | 2 +-
src/openrct2/{ => compatibility}/rct1/RCT1.h | 10 +-
.../{ => compatibility}/rct1/S4Importer.cpp | 136 +++----
.../{ => compatibility}/rct1/T4Importer.cpp | 28 +-
.../{ => compatibility}/rct1/Tables.cpp | 12 +-
.../{ => compatibility}/rct1/Tables.h | 2 +-
src/openrct2/libopenrct2.vcxproj | 338 +++++++++++++++++-
src/openrct2/rct12/RCT12.cpp | 2 +-
src/openrct2/ride/Ride.cpp | 2 +-
src/openrct2/ride/Track.cpp | 2 +-
src/openrct2/scenario/Scenario.cpp | 2 +-
17 files changed, 437 insertions(+), 117 deletions(-)
rename src/openrct2/{ => compatibility}/rct1/Csg.cpp (96%)
rename src/openrct2/{ => compatibility}/rct1/Csg.h (96%)
rename src/openrct2/{ => compatibility}/rct1/Limits.h (97%)
rename src/openrct2/{ => compatibility}/rct1/RCT1.h (99%)
rename src/openrct2/{ => compatibility}/rct1/S4Importer.cpp (98%)
rename src/openrct2/{ => compatibility}/rct1/T4Importer.cpp (96%)
rename src/openrct2/{ => compatibility}/rct1/Tables.cpp (99%)
rename src/openrct2/{ => compatibility}/rct1/Tables.h (98%)
diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp
index 5121ac6d26c1..e6bba907b1c4 100644
--- a/src/openrct2-ui/windows/NewRide.cpp
+++ b/src/openrct2-ui/windows/NewRide.cpp
@@ -19,6 +19,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -32,7 +33,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp
index 1adac93ad832..77cdb3accf21 100644
--- a/src/openrct2-ui/windows/Ride.cpp
+++ b/src/openrct2-ui/windows/Ride.cpp
@@ -38,6 +38,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -56,7 +57,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp
index 16c695f49f9a..6177b31ccb68 100644
--- a/src/openrct2/Editor.cpp
+++ b/src/openrct2/Editor.cpp
@@ -20,6 +20,7 @@
#include "actions/LandSetRightsAction.h"
#include "actions/ResultWithMessage.h"
#include "audio/Audio.h"
+#include "compatibility/rct1/RCT1.h"
#include "core/EnumUtils.hpp"
#include "core/Path.hpp"
#include "core/String.hpp"
@@ -37,7 +38,6 @@
#include "object/ObjectManager.h"
#include "object/ObjectRepository.h"
#include "peep/PeepAnimations.h"
-#include "rct1/RCT1.h"
#include "scenario/Scenario.h"
#include "scripting/ScriptEngine.h"
#include "ui/WindowManager.h"
diff --git a/src/openrct2/SpriteIds.h b/src/openrct2/SpriteIds.h
index a09781e72913..cdf464d2ef6f 100644
--- a/src/openrct2/SpriteIds.h
+++ b/src/openrct2/SpriteIds.h
@@ -9,9 +9,9 @@
#pragma once
+#include "compatibility/rct1/Limits.h"
#include "drawing/ImageIndexType.h"
#include "drawing/ScrollingText.h"
-#include "rct1/Limits.h"
#include
diff --git a/src/openrct2/rct1/Csg.cpp b/src/openrct2/compatibility/rct1/Csg.cpp
similarity index 96%
rename from src/openrct2/rct1/Csg.cpp
rename to src/openrct2/compatibility/rct1/Csg.cpp
index 12d14bcee517..71bd3df925b2 100644
--- a/src/openrct2/rct1/Csg.cpp
+++ b/src/openrct2/compatibility/rct1/Csg.cpp
@@ -9,10 +9,10 @@
#include "Csg.h"
-#include "../core/FileStream.h"
-#include "../core/Path.hpp"
-#include "../drawing/Drawing.h"
-#include "../rct1/Limits.h"
+#include "../../core/FileStream.h"
+#include "../../core/Path.hpp"
+#include "../../drawing/Drawing.h"
+#include "Limits.h"
namespace OpenRCT2
{
diff --git a/src/openrct2/rct1/Csg.h b/src/openrct2/compatibility/rct1/Csg.h
similarity index 96%
rename from src/openrct2/rct1/Csg.h
rename to src/openrct2/compatibility/rct1/Csg.h
index d96ac8444eb4..972508677a53 100644
--- a/src/openrct2/rct1/Csg.h
+++ b/src/openrct2/compatibility/rct1/Csg.h
@@ -9,7 +9,7 @@
#pragma once
-#include "../core/StringTypes.h"
+#include "../../core/StringTypes.h"
namespace OpenRCT2
{
diff --git a/src/openrct2/rct1/Limits.h b/src/openrct2/compatibility/rct1/Limits.h
similarity index 97%
rename from src/openrct2/rct1/Limits.h
rename to src/openrct2/compatibility/rct1/Limits.h
index 5afb75c6180a..173b14f72c0c 100644
--- a/src/openrct2/rct1/Limits.h
+++ b/src/openrct2/compatibility/rct1/Limits.h
@@ -8,7 +8,7 @@
*****************************************************************************/
#pragma once
-#include "../rct12/Limits.h"
+#include "../../rct12/Limits.h"
namespace OpenRCT2::RCT1::Limits
{
diff --git a/src/openrct2/rct1/RCT1.h b/src/openrct2/compatibility/rct1/RCT1.h
similarity index 99%
rename from src/openrct2/rct1/RCT1.h
rename to src/openrct2/compatibility/rct1/RCT1.h
index 62329f5ea3c4..76497f99090e 100644
--- a/src/openrct2/rct1/RCT1.h
+++ b/src/openrct2/compatibility/rct1/RCT1.h
@@ -9,11 +9,11 @@
#pragma once
-#include "../core/FixedPoint.hpp"
-#include "../rct12/RCT12.h"
-#include "../ride/Angles.h"
-#include "../ride/RideRatings.h"
-#include "../world/ParkData.h"
+#include "../../core/FixedPoint.hpp"
+#include "../../rct12/RCT12.h"
+#include "../../ride/Angles.h"
+#include "../../ride/RideRatings.h"
+#include "../../world/ParkData.h"
#include "Limits.h"
enum class MechanicStatus : uint8_t;
diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/compatibility/rct1/S4Importer.cpp
similarity index 98%
rename from src/openrct2/rct1/S4Importer.cpp
rename to src/openrct2/compatibility/rct1/S4Importer.cpp
index b8efe49ab975..6aa930d63e03 100644
--- a/src/openrct2/rct1/S4Importer.cpp
+++ b/src/openrct2/compatibility/rct1/S4Importer.cpp
@@ -7,74 +7,74 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
-#include "../Cheats.h"
-#include "../Context.h"
-#include "../Diagnostic.h"
-#include "../Editor.h"
-#include "../Game.h"
-#include "../GameState.h"
-#include "../ParkImporter.h"
-#include "../audio/Audio.h"
-#include "../core/BitSet.hpp"
-#include "../core/Console.hpp"
-#include "../core/FileStream.h"
-#include "../core/Guard.hpp"
-#include "../core/IStream.hpp"
-#include "../core/Memory.hpp"
-#include "../core/Path.hpp"
-#include "../core/String.hpp"
-#include "../entity/Balloon.h"
-#include "../entity/Duck.h"
-#include "../entity/EntityList.h"
-#include "../entity/Fountain.h"
-#include "../entity/Litter.h"
-#include "../entity/MoneyEffect.h"
-#include "../entity/Particle.h"
-#include "../entity/PatrolArea.h"
-#include "../entity/Peep.h"
-#include "../entity/Staff.h"
-#include "../localisation/Formatting.h"
-#include "../management/Award.h"
-#include "../management/Marketing.h"
-#include "../management/NewsItem.h"
-#include "../object/ObjectLimits.h"
-#include "../object/ObjectList.h"
-#include "../object/ObjectManager.h"
-#include "../object/ObjectRepository.h"
-#include "../object/PeepAnimationsObject.h"
-#include "../object/ScenarioMetaObject.h"
-#include "../park/Legacy.h"
-#include "../peep/RideUseSystem.h"
-#include "../rct12/CSStringConverter.h"
-#include "../rct12/EntryList.h"
-#include "../rct12/ScenarioPatcher.h"
-#include "../ride/Ride.h"
-#include "../ride/RideData.h"
-#include "../ride/RideManager.hpp"
-#include "../ride/Track.h"
-#include "../ride/Vehicle.h"
-#include "../sawyer_coding/SawyerCoding.h"
-#include "../scenario/Scenario.h"
-#include "../scenario/ScenarioObjective.h"
-#include "../scenario/ScenarioRepository.h"
-#include "../scenario/ScenarioSources.h"
-#include "../world/Climate.h"
-#include "../world/Map.h"
-#include "../world/MapAnimation.h"
-#include "../world/Park.h"
-#include "../world/Scenery.h"
-#include "../world/TilePointerIndex.hpp"
-#include "../world/Wall.h"
-#include "../world/tile_element/BannerElement.h"
-#include "../world/tile_element/EntranceElement.h"
-#include "../world/tile_element/LargeSceneryElement.h"
-#include "../world/tile_element/PathElement.h"
-#include "../world/tile_element/Slope.h"
-#include "../world/tile_element/SmallSceneryElement.h"
-#include "../world/tile_element/SurfaceElement.h"
-#include "../world/tile_element/TileElement.h"
-#include "../world/tile_element/TrackElement.h"
-#include "../world/tile_element/WallElement.h"
+#include "../../Cheats.h"
+#include "../../Context.h"
+#include "../../Diagnostic.h"
+#include "../../Editor.h"
+#include "../../Game.h"
+#include "../../GameState.h"
+#include "../../ParkImporter.h"
+#include "../../audio/Audio.h"
+#include "../../core/BitSet.hpp"
+#include "../../core/Console.hpp"
+#include "../../core/FileStream.h"
+#include "../../core/Guard.hpp"
+#include "../../core/IStream.hpp"
+#include "../../core/Memory.hpp"
+#include "../../core/Path.hpp"
+#include "../../core/String.hpp"
+#include "../../entity/Balloon.h"
+#include "../../entity/Duck.h"
+#include "../../entity/EntityList.h"
+#include "../../entity/Fountain.h"
+#include "../../entity/Litter.h"
+#include "../../entity/MoneyEffect.h"
+#include "../../entity/Particle.h"
+#include "../../entity/PatrolArea.h"
+#include "../../entity/Peep.h"
+#include "../../entity/Staff.h"
+#include "../../localisation/Formatting.h"
+#include "../../management/Award.h"
+#include "../../management/Marketing.h"
+#include "../../management/NewsItem.h"
+#include "../../object/ObjectLimits.h"
+#include "../../object/ObjectList.h"
+#include "../../object/ObjectManager.h"
+#include "../../object/ObjectRepository.h"
+#include "../../object/PeepAnimationsObject.h"
+#include "../../object/ScenarioMetaObject.h"
+#include "../../park/Legacy.h"
+#include "../../peep/RideUseSystem.h"
+#include "../../rct12/CSStringConverter.h"
+#include "../../rct12/EntryList.h"
+#include "../../rct12/ScenarioPatcher.h"
+#include "../../ride/Ride.h"
+#include "../../ride/RideData.h"
+#include "../../ride/RideManager.hpp"
+#include "../../ride/Track.h"
+#include "../../ride/Vehicle.h"
+#include "../../sawyer_coding/SawyerCoding.h"
+#include "../../scenario/Scenario.h"
+#include "../../scenario/ScenarioObjective.h"
+#include "../../scenario/ScenarioRepository.h"
+#include "../../scenario/ScenarioSources.h"
+#include "../../world/Climate.h"
+#include "../../world/Map.h"
+#include "../../world/MapAnimation.h"
+#include "../../world/Park.h"
+#include "../../world/Scenery.h"
+#include "../../world/TilePointerIndex.hpp"
+#include "../../world/Wall.h"
+#include "../../world/tile_element/BannerElement.h"
+#include "../../world/tile_element/EntranceElement.h"
+#include "../../world/tile_element/LargeSceneryElement.h"
+#include "../../world/tile_element/PathElement.h"
+#include "../../world/tile_element/Slope.h"
+#include "../../world/tile_element/SmallSceneryElement.h"
+#include "../../world/tile_element/SurfaceElement.h"
+#include "../../world/tile_element/TileElement.h"
+#include "../../world/tile_element/TrackElement.h"
+#include "../../world/tile_element/WallElement.h"
#include "RCT1.h"
#include "Tables.h"
diff --git a/src/openrct2/rct1/T4Importer.cpp b/src/openrct2/compatibility/rct1/T4Importer.cpp
similarity index 96%
rename from src/openrct2/rct1/T4Importer.cpp
rename to src/openrct2/compatibility/rct1/T4Importer.cpp
index 4c1a88e558ef..213a513c8087 100644
--- a/src/openrct2/rct1/T4Importer.cpp
+++ b/src/openrct2/compatibility/rct1/T4Importer.cpp
@@ -7,20 +7,20 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
-#include "../TrackImporter.h"
-#include "../config/Config.h"
-#include "../core/FileStream.h"
-#include "../core/MemoryStream.h"
-#include "../core/Path.hpp"
-#include "../core/String.hpp"
-#include "../rct1/RCT1.h"
-#include "../rct1/Tables.h"
-#include "../rct12/TD46.h"
-#include "../ride/Ride.h"
-#include "../ride/RideData.h"
-#include "../ride/TrackDesign.h"
-#include "../ride/TrackDesignRepository.h"
-#include "../sawyer_coding/SawyerChunkReader.h"
+#include "../../TrackImporter.h"
+#include "../../config/Config.h"
+#include "../../core/FileStream.h"
+#include "../../core/MemoryStream.h"
+#include "../../core/Path.hpp"
+#include "../../core/String.hpp"
+#include "../../rct12/TD46.h"
+#include "../../ride/Ride.h"
+#include "../../ride/RideData.h"
+#include "../../ride/TrackDesign.h"
+#include "../../ride/TrackDesignRepository.h"
+#include "../../sawyer_coding/SawyerChunkReader.h"
+#include "RCT1.h"
+#include "Tables.h"
#include
diff --git a/src/openrct2/rct1/Tables.cpp b/src/openrct2/compatibility/rct1/Tables.cpp
similarity index 99%
rename from src/openrct2/rct1/Tables.cpp
rename to src/openrct2/compatibility/rct1/Tables.cpp
index b60b8a61329d..6ef3dbcd8b66 100644
--- a/src/openrct2/rct1/Tables.cpp
+++ b/src/openrct2/compatibility/rct1/Tables.cpp
@@ -9,12 +9,12 @@
#include "Tables.h"
-#include "../Diagnostic.h"
-#include "../core/Guard.hpp"
-#include "../interface/Colour.h"
-#include "../object/ObjectManager.h"
-#include "../ride/Ride.h"
-#include "../ride/RideData.h"
+#include "../../Diagnostic.h"
+#include "../../core/Guard.hpp"
+#include "../../interface/Colour.h"
+#include "../../object/ObjectManager.h"
+#include "../../ride/Ride.h"
+#include "../../ride/RideData.h"
#include "RCT1.h"
#include
diff --git a/src/openrct2/rct1/Tables.h b/src/openrct2/compatibility/rct1/Tables.h
similarity index 98%
rename from src/openrct2/rct1/Tables.h
rename to src/openrct2/compatibility/rct1/Tables.h
index 5123aec28d36..c995d15aa8f3 100644
--- a/src/openrct2/rct1/Tables.h
+++ b/src/openrct2/compatibility/rct1/Tables.h
@@ -9,7 +9,7 @@
#pragma once
-#include "../entity/Peep.h"
+#include "../../entity/Peep.h"
#include "RCT1.h"
#include
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index 98d7df6d38b2..93abcffda19a 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -176,6 +176,10 @@
+
+
+
+
@@ -425,10 +429,6 @@
-
-
-
-
@@ -790,6 +790,330 @@
+
+ Level4
+ 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
+ 4263;4265;4548;4549;4555
+ USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
+ MultiThreaded
+ true
+ true
+ /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
+ Full
+ true
+ true
+ false
+ Speed
+ NoListing
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Default
+ Default
+ false
+ Default
+ Column
+ false
+ Prompt
+ false
+ Sync
+ false
+ false
+ false
+ NotSet
+ NotSet
+ Precise
+ true
+ openrct2_pch.h
+ false
+ false
+ false
+ Default
+ false
+ Default
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Cdecl
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
+ Use
+ openrct2_pch.h
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
+ false
+ false
+ false
+ true
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ true
+ false
+ false
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
+ false
+ true
+ true
+ true
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ ProgramDatabase
+ false
+ false
+ false
+ InheritWarningLevel
+ true
+ false
+ true
+
+
+ Level4
+ 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
+ 4263;4265;4548;4549;4555
+ USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
+ MultiThreaded
+ true
+ true
+ /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
+ Full
+ true
+ true
+ false
+ Speed
+ NoListing
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Default
+ Default
+ false
+ Default
+ Column
+ false
+ Prompt
+ false
+ Sync
+ false
+ false
+ false
+ NotSet
+ NotSet
+ Precise
+ true
+ openrct2_pch.h
+ false
+ false
+ false
+ Default
+ false
+ Default
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Cdecl
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
+ Use
+ openrct2_pch.h
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
+ false
+ false
+ false
+ true
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ true
+ false
+ false
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
+ false
+ true
+ true
+ true
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ ProgramDatabase
+ false
+ false
+ false
+ InheritWarningLevel
+ true
+ false
+ true
+
+
+ Level4
+ 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
+ 4263;4265;4548;4549;4555
+ USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
+ MultiThreaded
+ true
+ true
+ /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
+ Full
+ true
+ true
+ false
+ Speed
+ NoListing
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Default
+ Default
+ false
+ Default
+ Column
+ false
+ Prompt
+ false
+ Sync
+ false
+ false
+ false
+ NotSet
+ NotSet
+ Precise
+ true
+ openrct2_pch.h
+ false
+ false
+ false
+ Default
+ false
+ Default
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Cdecl
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
+ Use
+ openrct2_pch.h
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
+ false
+ false
+ false
+ true
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ true
+ false
+ false
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
+ false
+ true
+ true
+ true
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ ProgramDatabase
+ false
+ false
+ false
+ InheritWarningLevel
+ true
+ false
+ true
+
+
+ Level4
+ 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
+ 4263;4265;4548;4549;4555
+ USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
+ MultiThreaded
+ true
+ true
+ /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
+ Full
+ true
+ true
+ false
+ Speed
+ NoListing
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Default
+ Default
+ false
+ Default
+ Column
+ false
+ Prompt
+ false
+ Sync
+ false
+ false
+ false
+ NotSet
+ NotSet
+ Precise
+ true
+ openrct2_pch.h
+ false
+ false
+ false
+ Default
+ false
+ Default
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Cdecl
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
+ Use
+ openrct2_pch.h
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
+ false
+ false
+ false
+ true
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ true
+ false
+ false
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
+ false
+ true
+ true
+ true
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ ProgramDatabase
+ false
+ false
+ false
+ InheritWarningLevel
+ true
+ false
+ true
+
@@ -1073,10 +1397,6 @@
-
-
-
-
@@ -1209,7 +1529,7 @@
-
+
diff --git a/src/openrct2/rct12/RCT12.cpp b/src/openrct2/rct12/RCT12.cpp
index fdc9f1845d93..dd29c032905b 100644
--- a/src/openrct2/rct12/RCT12.cpp
+++ b/src/openrct2/rct12/RCT12.cpp
@@ -9,11 +9,11 @@
#include "RCT12.h"
+#include "../compatibility/rct1/Tables.h"
#include "../core/CodepointView.hpp"
#include "../core/String.hpp"
#include "../localisation/Formatting.h"
#include "../object/ObjectList.h"
-#include "../rct1/Tables.h"
#include "../rct12/CSStringConverter.h"
#include "../rct2/RCT2.h"
#include "../ride/Ride.h"
diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp
index 0707beba3dde..97bbe5907fb9 100644
--- a/src/openrct2/ride/Ride.cpp
+++ b/src/openrct2/ride/Ride.cpp
@@ -21,6 +21,7 @@
#include "../actions/RideSetStatusAction.h"
#include "../actions/RideSetVehicleAction.h"
#include "../audio/Audio.h"
+#include "../compatibility/rct1/RCT1.h"
#include "../config/Config.h"
#include "../core/BitSet.hpp"
#include "../core/EnumUtils.hpp"
@@ -42,7 +43,6 @@
#include "../object/RideObject.h"
#include "../object/StationObject.h"
#include "../profiling/Profiling.h"
-#include "../rct1/RCT1.h"
#include "../scenario/Scenario.h"
#include "../ui/WindowManager.h"
#include "../util/Util.h"
diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp
index f0539ee29d1f..08d1ebe776ac 100644
--- a/src/openrct2/ride/Track.cpp
+++ b/src/openrct2/ride/Track.cpp
@@ -15,12 +15,12 @@
#include "../GameState.h"
#include "../actions/ResultWithMessage.h"
#include "../audio/Audio.h"
+#include "../compatibility/rct1/RCT1.h"
#include "../config/Config.h"
#include "../interface/Viewport.h"
#include "../management/Finance.h"
#include "../network/Network.h"
#include "../platform/Platform.h"
-#include "../rct1/RCT1.h"
#include "../ride/RideColour.h"
#include "../sawyer_coding/SawyerCoding.h"
#include "../world/Footpath.h"
diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp
index c5961c1b502e..c60496772c67 100644
--- a/src/openrct2/scenario/Scenario.cpp
+++ b/src/openrct2/scenario/Scenario.cpp
@@ -20,6 +20,7 @@
#include "../PlatformEnvironment.h"
#include "../actions/ResultWithMessage.h"
#include "../audio/Audio.h"
+#include "../compatibility/rct1/RCT1.h"
#include "../config/Config.h"
#include "../core/BitSet.hpp"
#include "../core/EnumUtils.hpp"
@@ -46,7 +47,6 @@
#include "../object/WaterEntry.h"
#include "../platform/Platform.h"
#include "../profiling/Profiling.h"
-#include "../rct1/RCT1.h"
#include "../rct12/RCT12.h"
#include "../ride/Ride.h"
#include "../ride/RideManager.hpp"
From 14b4ddd7876eb687ed16f5ea5b8ae938e5e85b09 Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 18:05:33 -0300
Subject: [PATCH 03/26] Move /rct2 and /rct12 to /compatibility
---
src/openrct2/Game.cpp | 2 +-
src/openrct2/Limits.h | 2 +-
src/openrct2/compatibility/rct1/Limits.h | 2 +-
src/openrct2/compatibility/rct1/RCT1.h | 2 +-
.../compatibility/rct1/S4Importer.cpp | 4 +-
.../compatibility/rct1/T4Importer.cpp | 2 +-
.../{ => compatibility}/rct12/CSChar.h | 0
.../rct12/CSStringConverter.cpp | 10 +-
.../rct12/CSStringConverter.h | 0
.../{ => compatibility}/rct12/EntryList.h | 0
.../{ => compatibility}/rct12/Limits.h | 0
.../{ => compatibility}/rct12/RCT12.cpp | 34 +-
.../{ => compatibility}/rct12/RCT12.h | 16 +-
.../rct12/ScenarioPatcher.cpp | 58 +-
.../{ => compatibility}/rct12/TD46.cpp | 4 +-
src/openrct2/{ => compatibility}/rct12/TD46.h | 2 +-
.../{ => compatibility}/rct2/DATLimits.h | 0
.../{ => compatibility}/rct2/Limits.h | 0
src/openrct2/compatibility/rct2/RCT2.h | 1098 +++++++++++++++++
.../{ => compatibility}/rct2/S6Importer.cpp | 100 +-
.../{ => compatibility}/rct2/SeaDecrypt.cpp | 8 +-
.../{ => compatibility}/rct2/T6Exporter.cpp | 32 +-
.../{ => compatibility}/rct2/T6Exporter.h | 2 +-
.../{ => compatibility}/rct2/T6Importer.cpp | 28 +-
src/openrct2/drawing/Font.cpp | 2 +-
src/openrct2/entity/EntityList.h | 2 +-
src/openrct2/libopenrct2.vcxproj | 681 +++++++++-
src/openrct2/object/PeepAnimationsObject.cpp | 2 +-
src/openrct2/object/RideObject.cpp | 2 +-
src/openrct2/object/StringTable.cpp | 2 +-
src/openrct2/park/Legacy.cpp | 2 +-
src/openrct2/rct2/RCT2.h | 4 +-
src/openrct2/ride/CableLift.cpp | 2 +-
src/openrct2/ride/Ride.h | 2 +-
src/openrct2/ride/RideEntry.h | 2 +-
src/openrct2/ride/Vehicle.cpp | 2 +-
src/openrct2/scenario/Scenario.cpp | 2 +-
src/openrct2/scenario/ScenarioRepository.cpp | 4 +-
.../scripting/bindings/entity/ScStaff.cpp | 2 +-
39 files changed, 1929 insertions(+), 190 deletions(-)
rename src/openrct2/{ => compatibility}/rct12/CSChar.h (100%)
rename src/openrct2/{ => compatibility}/rct12/CSStringConverter.cpp (97%)
rename src/openrct2/{ => compatibility}/rct12/CSStringConverter.h (100%)
rename src/openrct2/{ => compatibility}/rct12/EntryList.h (100%)
rename src/openrct2/{ => compatibility}/rct12/Limits.h (100%)
rename src/openrct2/{ => compatibility}/rct12/RCT12.cpp (97%)
rename src/openrct2/{ => compatibility}/rct12/RCT12.h (99%)
rename src/openrct2/{ => compatibility}/rct12/ScenarioPatcher.cpp (95%)
rename src/openrct2/{ => compatibility}/rct12/TD46.cpp (98%)
rename src/openrct2/{ => compatibility}/rct12/TD46.h (98%)
rename src/openrct2/{ => compatibility}/rct2/DATLimits.h (100%)
rename src/openrct2/{ => compatibility}/rct2/Limits.h (100%)
create mode 100644 src/openrct2/compatibility/rct2/RCT2.h
rename src/openrct2/{ => compatibility}/rct2/S6Importer.cpp (98%)
rename src/openrct2/{ => compatibility}/rct2/SeaDecrypt.cpp (95%)
rename src/openrct2/{ => compatibility}/rct2/T6Exporter.cpp (94%)
rename src/openrct2/{ => compatibility}/rct2/T6Exporter.h (96%)
rename src/openrct2/{ => compatibility}/rct2/T6Importer.cpp (95%)
diff --git a/src/openrct2/Game.cpp b/src/openrct2/Game.cpp
index 2952540dfb2c..c56cbfe27e37 100644
--- a/src/openrct2/Game.cpp
+++ b/src/openrct2/Game.cpp
@@ -24,6 +24,7 @@
#include "actions/GameSetSpeedAction.h"
#include "actions/LoadOrQuitAction.h"
#include "audio/Audio.h"
+#include "compatibility/rct12/CSStringConverter.h"
#include "config/Config.h"
#include "core/Console.hpp"
#include "core/File.h"
@@ -50,7 +51,6 @@
#include "object/ObjectList.h"
#include "object/WaterEntry.h"
#include "platform/Platform.h"
-#include "rct12/CSStringConverter.h"
#include "ride/Ride.h"
#include "ride/RideRatings.h"
#include "ride/Station.h"
diff --git a/src/openrct2/Limits.h b/src/openrct2/Limits.h
index ed45a66d03f0..96a4cc7fa47c 100644
--- a/src/openrct2/Limits.h
+++ b/src/openrct2/Limits.h
@@ -9,7 +9,7 @@
#pragma once
-#include "rct2/Limits.h"
+#include "compatibility/rct2/Limits.h"
#include
diff --git a/src/openrct2/compatibility/rct1/Limits.h b/src/openrct2/compatibility/rct1/Limits.h
index 173b14f72c0c..5afb75c6180a 100644
--- a/src/openrct2/compatibility/rct1/Limits.h
+++ b/src/openrct2/compatibility/rct1/Limits.h
@@ -8,7 +8,7 @@
*****************************************************************************/
#pragma once
-#include "../../rct12/Limits.h"
+#include "../rct12/Limits.h"
namespace OpenRCT2::RCT1::Limits
{
diff --git a/src/openrct2/compatibility/rct1/RCT1.h b/src/openrct2/compatibility/rct1/RCT1.h
index 76497f99090e..b95f3211f05f 100644
--- a/src/openrct2/compatibility/rct1/RCT1.h
+++ b/src/openrct2/compatibility/rct1/RCT1.h
@@ -10,10 +10,10 @@
#pragma once
#include "../../core/FixedPoint.hpp"
-#include "../../rct12/RCT12.h"
#include "../../ride/Angles.h"
#include "../../ride/RideRatings.h"
#include "../../world/ParkData.h"
+#include "../rct12/RCT12.h"
#include "Limits.h"
enum class MechanicStatus : uint8_t;
diff --git a/src/openrct2/compatibility/rct1/S4Importer.cpp b/src/openrct2/compatibility/rct1/S4Importer.cpp
index 6aa930d63e03..6a5753e3fffa 100644
--- a/src/openrct2/compatibility/rct1/S4Importer.cpp
+++ b/src/openrct2/compatibility/rct1/S4Importer.cpp
@@ -45,8 +45,6 @@
#include "../../object/ScenarioMetaObject.h"
#include "../../park/Legacy.h"
#include "../../peep/RideUseSystem.h"
-#include "../../rct12/CSStringConverter.h"
-#include "../../rct12/EntryList.h"
#include "../../rct12/ScenarioPatcher.h"
#include "../../ride/Ride.h"
#include "../../ride/RideData.h"
@@ -75,6 +73,8 @@
#include "../../world/tile_element/TileElement.h"
#include "../../world/tile_element/TrackElement.h"
#include "../../world/tile_element/WallElement.h"
+#include "../rct12/CSStringConverter.h"
+#include "../rct12/EntryList.h"
#include "RCT1.h"
#include "Tables.h"
diff --git a/src/openrct2/compatibility/rct1/T4Importer.cpp b/src/openrct2/compatibility/rct1/T4Importer.cpp
index 213a513c8087..5824515031a9 100644
--- a/src/openrct2/compatibility/rct1/T4Importer.cpp
+++ b/src/openrct2/compatibility/rct1/T4Importer.cpp
@@ -13,12 +13,12 @@
#include "../../core/MemoryStream.h"
#include "../../core/Path.hpp"
#include "../../core/String.hpp"
-#include "../../rct12/TD46.h"
#include "../../ride/Ride.h"
#include "../../ride/RideData.h"
#include "../../ride/TrackDesign.h"
#include "../../ride/TrackDesignRepository.h"
#include "../../sawyer_coding/SawyerChunkReader.h"
+#include "../rct12/TD46.h"
#include "RCT1.h"
#include "Tables.h"
diff --git a/src/openrct2/rct12/CSChar.h b/src/openrct2/compatibility/rct12/CSChar.h
similarity index 100%
rename from src/openrct2/rct12/CSChar.h
rename to src/openrct2/compatibility/rct12/CSChar.h
diff --git a/src/openrct2/rct12/CSStringConverter.cpp b/src/openrct2/compatibility/rct12/CSStringConverter.cpp
similarity index 97%
rename from src/openrct2/rct12/CSStringConverter.cpp
rename to src/openrct2/compatibility/rct12/CSStringConverter.cpp
index 8f967e4d8d34..991a4f145f1f 100644
--- a/src/openrct2/rct12/CSStringConverter.cpp
+++ b/src/openrct2/compatibility/rct12/CSStringConverter.cpp
@@ -9,11 +9,11 @@
#include "CSStringConverter.h"
-#include "../core/String.hpp"
-#include "../core/UnicodeChar.h"
-#include "../localisation/FormatCodes.h"
-#include "../localisation/Language.h"
-#include "../rct12/CSChar.h"
+#include "../../core/String.hpp"
+#include "../../core/UnicodeChar.h"
+#include "../../localisation/FormatCodes.h"
+#include "../../localisation/Language.h"
+#include "CSChar.h"
#include
#include
diff --git a/src/openrct2/rct12/CSStringConverter.h b/src/openrct2/compatibility/rct12/CSStringConverter.h
similarity index 100%
rename from src/openrct2/rct12/CSStringConverter.h
rename to src/openrct2/compatibility/rct12/CSStringConverter.h
diff --git a/src/openrct2/rct12/EntryList.h b/src/openrct2/compatibility/rct12/EntryList.h
similarity index 100%
rename from src/openrct2/rct12/EntryList.h
rename to src/openrct2/compatibility/rct12/EntryList.h
diff --git a/src/openrct2/rct12/Limits.h b/src/openrct2/compatibility/rct12/Limits.h
similarity index 100%
rename from src/openrct2/rct12/Limits.h
rename to src/openrct2/compatibility/rct12/Limits.h
diff --git a/src/openrct2/rct12/RCT12.cpp b/src/openrct2/compatibility/rct12/RCT12.cpp
similarity index 97%
rename from src/openrct2/rct12/RCT12.cpp
rename to src/openrct2/compatibility/rct12/RCT12.cpp
index dd29c032905b..b6f709be3453 100644
--- a/src/openrct2/rct12/RCT12.cpp
+++ b/src/openrct2/compatibility/rct12/RCT12.cpp
@@ -9,23 +9,23 @@
#include "RCT12.h"
-#include "../compatibility/rct1/Tables.h"
-#include "../core/CodepointView.hpp"
-#include "../core/String.hpp"
-#include "../localisation/Formatting.h"
-#include "../object/ObjectList.h"
-#include "../rct12/CSStringConverter.h"
-#include "../rct2/RCT2.h"
-#include "../ride/Ride.h"
-#include "../scenario/Scenario.h"
-#include "../world/Banner.h"
-#include "../world/Footpath.h"
-#include "../world/Wall.h"
-#include "../world/tile_element/PathElement.h"
-#include "../world/tile_element/Slope.h"
-#include "../world/tile_element/SmallSceneryElement.h"
-#include "../world/tile_element/SurfaceElement.h"
-#include "../world/tile_element/WallElement.h"
+#include "../../core/CodepointView.hpp"
+#include "../../core/String.hpp"
+#include "../../localisation/Formatting.h"
+#include "../../object/ObjectList.h"
+#include "../../rct2/RCT2.h"
+#include "../../ride/Ride.h"
+#include "../../scenario/Scenario.h"
+#include "../../world/Banner.h"
+#include "../../world/Footpath.h"
+#include "../../world/Wall.h"
+#include "../../world/tile_element/PathElement.h"
+#include "../../world/tile_element/Slope.h"
+#include "../../world/tile_element/SmallSceneryElement.h"
+#include "../../world/tile_element/SurfaceElement.h"
+#include "../../world/tile_element/WallElement.h"
+#include "../rct1/Tables.h"
+#include "CSStringConverter.h"
#include "EntryList.h"
using namespace OpenRCT2;
diff --git a/src/openrct2/rct12/RCT12.h b/src/openrct2/compatibility/rct12/RCT12.h
similarity index 99%
rename from src/openrct2/rct12/RCT12.h
rename to src/openrct2/compatibility/rct12/RCT12.h
index 05fc284e6665..6d5d4fa0b7bf 100644
--- a/src/openrct2/rct12/RCT12.h
+++ b/src/openrct2/compatibility/rct12/RCT12.h
@@ -11,14 +11,14 @@
// Structures shared between both RCT1 and RCT2.
-#include "../core/EnumUtils.hpp"
-#include "../core/FlagHolder.hpp"
-#include "../core/Money.hpp"
-#include "../entity/Fountain.h"
-#include "../management/Research.h"
-#include "../object/Object.h"
-#include "../ride/RideTypes.h"
-#include "../world/tile_element/TileElementType.h"
+#include "../../core/EnumUtils.hpp"
+#include "../../core/FlagHolder.hpp"
+#include "../../core/Money.hpp"
+#include "../../entity/Fountain.h"
+#include "../../management/Research.h"
+#include "../../object/Object.h"
+#include "../../ride/RideTypes.h"
+#include "../../world/tile_element/TileElementType.h"
#include "Limits.h"
#include
diff --git a/src/openrct2/rct12/ScenarioPatcher.cpp b/src/openrct2/compatibility/rct12/ScenarioPatcher.cpp
similarity index 95%
rename from src/openrct2/rct12/ScenarioPatcher.cpp
rename to src/openrct2/compatibility/rct12/ScenarioPatcher.cpp
index 5fece06eb135..e715cf76315c 100644
--- a/src/openrct2/rct12/ScenarioPatcher.cpp
+++ b/src/openrct2/compatibility/rct12/ScenarioPatcher.cpp
@@ -7,39 +7,39 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
-#include "ScenarioPatcher.h"
-
-#include "../Context.h"
-#include "../Game.h"
-#include "../PlatformEnvironment.h"
-#include "../actions/FootpathPlaceAction.h"
-#include "../actions/GameActionResult.h"
-#include "../core/File.h"
-#include "../core/Guard.hpp"
-#include "../core/Json.hpp"
-#include "../core/Path.hpp"
-#include "../core/String.hpp"
-#include "../entity/EntityList.h"
-#include "../entity/Guest.h"
-#include "../entity/Peep.h"
-#include "../object/ObjectManager.h"
-#include "../ride/Ride.h"
-#include "../ride/Track.h"
-#include "../world/Footpath.h"
-#include "../world/Location.hpp"
-#include "../world/Map.h"
-#include "../world/tile_element/EntranceElement.h"
-#include "../world/tile_element/PathElement.h"
-#include "../world/tile_element/Slope.h"
-#include "../world/tile_element/SurfaceElement.h"
-#include "../world/tile_element/TileElement.h"
-#include "../world/tile_element/TileElementType.h"
-#include "../world/tile_element/TrackElement.h"
+#include "../../rct12/ScenarioPatcher.h"
+
+#include "../../Context.h"
+#include "../../Game.h"
+#include "../../PlatformEnvironment.h"
+#include "../../actions/FootpathPlaceAction.h"
+#include "../../actions/GameActionResult.h"
+#include "../../core/File.h"
+#include "../../core/Guard.hpp"
+#include "../../core/Json.hpp"
+#include "../../core/Path.hpp"
+#include "../../core/String.hpp"
+#include "../../entity/EntityList.h"
+#include "../../entity/Guest.h"
+#include "../../entity/Peep.h"
+#include "../../object/ObjectManager.h"
+#include "../../ride/Ride.h"
+#include "../../ride/Track.h"
+#include "../../world/Footpath.h"
+#include "../../world/Location.hpp"
+#include "../../world/Map.h"
+#include "../../world/tile_element/EntranceElement.h"
+#include "../../world/tile_element/PathElement.h"
+#include "../../world/tile_element/Slope.h"
+#include "../../world/tile_element/SurfaceElement.h"
+#include "../../world/tile_element/TileElement.h"
+#include "../../world/tile_element/TileElementType.h"
+#include "../../world/tile_element/TrackElement.h"
#ifdef DISABLE_NETWORK
#include
#else
- #include "../core/Crypt.h"
+ #include "../../core/Crypt.h"
#endif
#include
diff --git a/src/openrct2/rct12/TD46.cpp b/src/openrct2/compatibility/rct12/TD46.cpp
similarity index 98%
rename from src/openrct2/rct12/TD46.cpp
rename to src/openrct2/compatibility/rct12/TD46.cpp
index 40296098ca82..0a8d7d616593 100644
--- a/src/openrct2/rct12/TD46.cpp
+++ b/src/openrct2/compatibility/rct12/TD46.cpp
@@ -9,8 +9,8 @@
#include "TD46.h"
-#include "../ride/Track.h"
-#include "../ride/TrackDesign.h"
+#include "../../ride/Track.h"
+#include "../../ride/TrackDesign.h"
namespace OpenRCT2::RCT12
{
diff --git a/src/openrct2/rct12/TD46.h b/src/openrct2/compatibility/rct12/TD46.h
similarity index 98%
rename from src/openrct2/rct12/TD46.h
rename to src/openrct2/compatibility/rct12/TD46.h
index 0fefb6ba6b22..3549f92f8bfb 100644
--- a/src/openrct2/rct12/TD46.h
+++ b/src/openrct2/compatibility/rct12/TD46.h
@@ -9,7 +9,7 @@
#pragma once
-#include "../core/EnumUtils.hpp"
+#include "../../core/EnumUtils.hpp"
#include
diff --git a/src/openrct2/rct2/DATLimits.h b/src/openrct2/compatibility/rct2/DATLimits.h
similarity index 100%
rename from src/openrct2/rct2/DATLimits.h
rename to src/openrct2/compatibility/rct2/DATLimits.h
diff --git a/src/openrct2/rct2/Limits.h b/src/openrct2/compatibility/rct2/Limits.h
similarity index 100%
rename from src/openrct2/rct2/Limits.h
rename to src/openrct2/compatibility/rct2/Limits.h
diff --git a/src/openrct2/compatibility/rct2/RCT2.h b/src/openrct2/compatibility/rct2/RCT2.h
new file mode 100644
index 000000000000..87cd6e2b4cf9
--- /dev/null
+++ b/src/openrct2/compatibility/rct2/RCT2.h
@@ -0,0 +1,1098 @@
+/*****************************************************************************
+ * Copyright (c) 2014-2026 OpenRCT2 developers
+ *
+ * For a complete list of all authors, please refer to contributors.md
+ * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
+ *
+ * OpenRCT2 is licensed under the GNU General Public License version 3.
+ *****************************************************************************/
+
+#pragma once
+
+#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/rct2/Limits.h"
+#include "../core/FileSystem.hpp"
+#include "../core/FixedPoint.hpp"
+#include "../ride/Angles.h"
+#include "../ride/RideRatings.h"
+#include "../world/ParkData.h"
+
+#include
+
+struct RideObjectEntry;
+enum class EditorStep : uint8_t;
+enum class MechanicStatus : uint8_t;
+enum class RideInvalidateFlag : uint8_t;
+enum class VehicleColourSettings : uint8_t;
+
+template
+struct FlagHolder;
+using RideInvalidateFlags = FlagHolder;
+
+namespace OpenRCT2::Scenario
+{
+ enum class Category : uint8_t;
+ enum class ObjectiveType : uint8_t;
+} // namespace OpenRCT2::Scenario
+
+enum
+{
+ S6_TYPE_SAVEDGAME,
+ S6_TYPE_SCENARIO
+};
+
+// For legacy scores file
+enum
+{
+ SCENARIO_FLAGS_VISIBLE = (1 << 0),
+ SCENARIO_FLAGS_COMPLETED = (1 << 1),
+ SCENARIO_FLAGS_SIXFLAGS = (1 << 2)
+};
+
+namespace OpenRCT2::RCT2
+{
+ constexpr StringId kRCT2RideStringStart = 2;
+
+ // clang-format off
+ constexpr uint16_t kRCT2ObjectEntryCount =
+ Limits::kMaxRideObjects +
+ Limits::kMaxSmallSceneryObjects +
+ Limits::kMaxLargeSceneryObjects +
+ Limits::kMaxWallSceneryObjects +
+ Limits::kMaxBannerObjects +
+ Limits::kMaxPathObjects +
+ Limits::kMaxPathAdditionObjects +
+ Limits::kMaxSceneryGroupObjects +
+ Limits::kMaxParkEntranceObjects +
+ Limits::kMaxWaterObjects +
+ Limits::kMaxScenarioMetaObjects;
+ // clang-format on
+ static_assert(kRCT2ObjectEntryCount == 721);
+
+ // clang-format off
+ constexpr int32_t kRCT2ObjectEntryGroupCounts[] = {
+ Limits::kMaxRideObjects,
+ Limits::kMaxSmallSceneryObjects,
+ Limits::kMaxLargeSceneryObjects,
+ Limits::kMaxWallSceneryObjects,
+ Limits::kMaxBannerObjects,
+ Limits::kMaxPathObjects,
+ Limits::kMaxPathAdditionObjects,
+ Limits::kMaxSceneryGroupObjects,
+ Limits::kMaxParkEntranceObjects,
+ Limits::kMaxWaterObjects,
+ Limits::kMaxScenarioMetaObjects,
+ };
+ // clang-format on
+
+ enum class EntityListId : uint8_t
+ {
+ count = 6,
+ };
+#pragma pack(push, 1)
+ /**
+ * Ride structure.
+ * size: 0x0260
+ */
+ struct Ride
+ {
+ uint8_t type; // 0x000
+ // pointer to static info. for example, wild mouse type is 0x36, subtype is
+ // 0x4c.
+ RCT12ObjectEntryIndex subtype; // 0x001
+ uint16_t pad002; // 0x002
+ uint8_t mode; // 0x004
+ VehicleColourSettings vehicleColourSettings; // 0x005
+ RCT12VehicleColour vehicleColours[Limits::kMaxVehicleColours]; // 0x006
+ uint8_t pad046[0x03]; // 0x046, Used to be track colours in RCT1 without expansions
+ // 0 = closed, 1 = open, 2 = test
+ uint8_t status; // 0x049
+ StringId name; // 0x04A
+ union
+ {
+ uint32_t nameArguments; // 0x04C
+ struct
+ {
+ StringId nameArgumentsTypeName; // 0x04C
+ uint16_t nameArgumentsNumber; // 0x04E
+ };
+ };
+ RCT12xy8 overallView; // 0x050
+ RCT12xy8 stationStarts[Limits::kMaxStationsPerRide]; // 0x052
+ uint8_t stationHeights[Limits::kMaxStationsPerRide]; // 0x05A
+ uint8_t stationLength[Limits::kMaxStationsPerRide]; // 0x05E
+ uint8_t stationDepart[Limits::kMaxStationsPerRide]; // 0x062
+ // ride->vehicle index for current train waiting for passengers
+ // at station
+ uint8_t trainAtStation[Limits::kMaxStationsPerRide]; // 0x066
+ RCT12xy8 entrances[Limits::kMaxStationsPerRide]; // 0x06A
+ RCT12xy8 exits[Limits::kMaxStationsPerRide]; // 0x072
+ uint16_t lastPeepInQueue[Limits::kMaxStationsPerRide]; // 0x07A
+ uint8_t pad082[Limits::kMaxStationsPerRide]; // 0x082, Used to be number of peeps in queue in RCT1, but this
+ // has moved.
+ uint16_t vehicles[Limits::kMaxTrainsPerRide]; // 0x086, Points to the first car in the train
+ uint8_t departFlags; // 0x0C6
+
+ // Not sure if these should be uint or sint.
+ uint8_t numStations; // 0x0C7
+ uint8_t numTrains; // 0x0C8
+ uint8_t numCarsPerTrain; // 0x0C9
+ uint8_t proposedNumTrains; // 0x0CA
+ uint8_t proposedNumCarsPerTrain; // 0x0CB
+ uint8_t maxTrains; // 0x0CC
+ uint8_t minMaxCarsPerTrain; // 0x0CD
+ uint8_t minWaitingTime; // 0x0CE
+ uint8_t maxWaitingTime; // 0x0CF
+ union
+ {
+ uint8_t operationOption; // 0x0D0
+ uint8_t timeLimit; // 0x0D0
+ uint8_t numLaps; // 0x0D0
+ uint8_t launchSpeed; // 0x0D0
+ uint8_t speed; // 0x0D0
+ uint8_t rotations; // 0x0D0
+ };
+
+ uint8_t boatHireReturnDirection; // 0x0D1
+ RCT12xy8 boatHireReturnPosition; // 0x0D2
+ uint8_t measurementIndex; // 0x0D4
+ // bits 0 through 4 are the number of helix sections
+ // bit 5: spinning tunnel, water splash, or rapids
+ // bit 6: log reverser, waterfall
+ // bit 7: whirlpool
+ uint8_t specialTrackElements; // 0x0D5
+ uint8_t pad0D6[2]; // 0x0D6
+ // Use ToHumanReadableSpeed if converting to display
+ int32_t maxSpeed; // 0x0D8
+ int32_t averageSpeed; // 0x0DC
+ uint8_t currentTestSegment; // 0x0E0
+ uint8_t averageSpeedTestTimeout; // 0x0E1
+ uint8_t pad0E2[0x2]; // 0x0E2
+ int32_t length[Limits::kMaxStationsPerRide]; // 0x0E4
+ uint16_t time[Limits::kMaxStationsPerRide]; // 0x0F4
+ fixed16_2dp maxPositiveVerticalG; // 0x0FC
+ fixed16_2dp maxNegativeVerticalG; // 0x0FE
+ fixed16_2dp maxLateralG; // 0x100
+ fixed16_2dp previousVerticalG; // 0x102
+ fixed16_2dp previousLateralG; // 0x104
+ uint8_t pad106[0x2]; // 0x106
+ uint32_t testingFlags; // 0x108
+ // x y map location of the current track piece during a test
+ // this is to prevent counting special tracks multiple times
+ RCT12xy8 curTestTrackLocation; // 0x10C
+ // Next 3 variables are related (XXXX XYYY ZZZa aaaa)
+ uint16_t turnCountDefault; // 0x10E X = current turn count
+ uint16_t turnCountBanked; // 0x110
+ uint16_t turnCountSloped; // 0x112 X = number turns > 3 elements
+ union
+ {
+ uint8_t inversions; // 0x114 (???X XXXX)
+ uint8_t holes; // 0x114 (???X XXXX)
+ // This is a very rough approximation of how much of the ride is undercover.
+ // It reaches the maximum value of 7 at about 50% undercover and doesn't increase beyond that.
+ uint8_t shelteredEighths; // 0x114 (XXX?-????)
+ };
+ // Y is number of powered lifts, X is drops
+ uint8_t drops; // 0x115 (YYXX XXXX)
+ uint8_t startDropHeight; // 0x116
+ uint8_t highestDropHeight; // 0x117
+ int32_t shelteredLength; // 0x118
+ // Unused always 0? Should affect nausea
+ uint16_t var11C; // 0x11C
+ uint8_t numShelteredSections; // 0x11E (?abY YYYY)
+ // see CurTestTrackLocation
+ uint8_t curTestTrackZ; // 0x11F
+ // Customer counter in the current 960 game tick (about 30 seconds) interval
+ uint16_t curNumCustomers; // 0x120
+ // Counts ticks to update customer intervals, resets each 960 game ticks.
+ uint16_t numCustomersTimeout; // 0x122
+ // Customer count in the last 10 * 960 game ticks (sliding window)
+ uint16_t numCustomers[Limits::kCustomerHistorySize]; // 0x124
+ money16 price; // 0x138
+ RCT12xy8 chairliftBullwheelLocation[2]; // 0x13A
+ uint8_t chairliftBullwheelZ[2]; // 0x13E
+ OpenRCT2::RideRating::Tuple ratings; // 0x140
+ money16 value; // 0x146
+ uint16_t chairliftBullwheelRotation; // 0x148
+ uint8_t satisfaction; // 0x14A
+ uint8_t satisfactionTimeOut; // 0x14B
+ uint8_t satisfactionNext; // 0x14C
+ RideInvalidateFlags windowInvalidateFlags; // 0x14D
+ uint8_t pad14E[0x02]; // 0x14E
+ uint32_t totalCustomers; // 0x150
+ money32 totalProfit; // 0x154
+ uint8_t popularity; // 0x158
+ uint8_t popularityTimeOut; // 0x159 Updated every purchase and ?possibly by time?
+ uint8_t popularityNext; // 0x15A When timeout reached this will be the next popularity
+ uint8_t numRiders; // 0x15B
+ uint8_t musicTuneId; // 0x15C
+ uint8_t slideInUse; // 0x15D
+ union
+ {
+ uint16_t slidePeep; // 0x15E
+ uint16_t mazeTiles; // 0x15E
+ };
+ uint8_t pad160[0xE]; // 0x160
+ uint8_t slidePeepTShirtColour; // 0x16E
+ uint8_t pad16F[0x7]; // 0x16F
+ uint8_t spiralSlideProgress; // 0x176
+ uint8_t pad177[0x9]; // 0x177
+ int16_t buildDate; // 0x180
+ money16 upkeepCost; // 0x182
+ uint16_t raceWinner; // 0x184
+ uint8_t pad186[0x02]; // 0x186
+ uint32_t musicPosition; // 0x188
+ uint8_t breakdownReasonPending; // 0x18C
+ MechanicStatus mechanicStatus; // 0x18D
+ uint16_t mechanic; // 0x18E
+ uint8_t inspectionStation; // 0x190
+ uint8_t brokenTrain; // 0x191
+ uint8_t brokenCar; // 0x192
+ uint8_t breakdownReason; // 0x193
+ money16 priceSecondary; // 0x194
+ union
+ {
+ struct
+ {
+ uint8_t reliabilitySubvalue; // 0x196, 0 - 255, acts like the decimals for reliabilityPercentage
+ uint8_t reliabilityPercentage; // 0x197, Starts at 100 and decreases from there.
+ };
+ uint16_t reliability; // 0x196
+ };
+ // Small constant used to increase the unreliability as the game continues,
+ // making breakdowns more and more likely.
+ uint8_t unreliabilityFactor; // 0x198
+ // Range from [0, 100]
+ uint8_t downtime; // 0x199
+ uint8_t inspectionInterval; // 0x19A
+ uint8_t lastInspection; // 0x19B
+ uint8_t downtimeHistory[Limits::kDowntimeHistorySize]; // 0x19C
+ uint32_t numPrimaryItemsSold; // 0x1A4
+ uint32_t numSecondaryItemsSold; // 0x1A8
+ uint8_t breakdownSoundModifier; // 0x1AC
+ // Used to oscillate the sound when ride breaks down.
+ // 0 = no change, 255 = max change
+ uint8_t notFixedTimeout; // 0x1AD
+ uint8_t lastCrashType; // 0x1AE
+ uint8_t connectedMessageThrottle; // 0x1AF
+ money32 incomePerHour; // 0x1B0
+ money32 profit; // 0x1B4
+ uint8_t queueTime[Limits::kMaxStationsPerRide]; // 0x1B8
+ uint8_t trackColourMain[Limits::kNumColourSchemes]; // 0x1BC
+ uint8_t trackColourAdditional[Limits::kNumColourSchemes]; // 0x1C0
+ uint8_t trackColourSupports[Limits::kNumColourSchemes]; // 0x1C4
+ uint8_t music; // 0x1C8
+ uint8_t entranceStyle; // 0x1C9
+ uint16_t vehicleChangeTimeout; // 0x1CA
+ uint8_t numBlockBrakes; // 0x1CC
+ uint8_t liftHillSpeed; // 0x1CD
+ uint16_t guestsFavourite; // 0x1CE
+ uint32_t lifecycleFlags; // 0x1D0
+ uint8_t vehicleColoursExtended[Limits::kMaxVehicleColours]; // 0x1D4
+ uint16_t totalAirTime; // 0x1F4
+ uint8_t currentTestStation; // 0x1F6
+ uint8_t numCircuits; // 0x1F7
+ int16_t cableLiftX; // 0x1F8
+ int16_t cableLiftY; // 0x1FA
+ uint8_t cableLiftZ; // 0x1FC
+ uint8_t pad1FD; // 0x1FD
+ uint16_t cableLift; // 0x1FE
+ uint16_t queueLength[Limits::kMaxStationsPerRide]; // 0x200
+ uint8_t pad208[0x58]; // 0x208
+
+ uint8_t getMinCarsPerTrain() const;
+ uint8_t getMaxCarsPerTrain() const;
+ };
+ static_assert(sizeof(Ride) == 0x260);
+
+ /* Track Entrance entry size: 0x06 */
+ struct TD6EntranceElement
+ {
+ int8_t z; // 0x00
+ uint8_t direction; // 0x01
+ int16_t x; // 0x02
+ int16_t y; // 0x04
+
+ constexpr Direction GetDirection() const
+ {
+ return (direction & 0b00001111);
+ }
+
+ constexpr bool IsExit() const
+ {
+ return !!(direction >> 7);
+ }
+ };
+ static_assert(sizeof(TD6EntranceElement) == 0x06);
+
+ /* Track Scenery entry size: 0x16 */
+ struct TD6SceneryElement
+ {
+ RCTObjectEntry SceneryObject; // 0x00
+ int8_t x; // 0x10
+ int8_t y; // 0x11
+ int8_t z; // 0x12
+ uint8_t Flags; // 0x13 direction quadrant tertiary colour
+ uint8_t PrimaryColour; // 0x14
+ uint8_t SecondaryColour; // 0x15
+
+ colour_t getTertiaryWallColour() const;
+ };
+ static_assert(sizeof(TD6SceneryElement) == 0x16);
+
+ /**
+ * Track design structure.
+ * size: 0xA3
+ */
+ struct TD6Track
+ {
+ uint8_t Type; // 0x00
+ RCT12ObjectEntryIndex VehicleType;
+ uint32_t Flags; // 0x02
+ uint8_t RideMode; // 0x06
+ uint8_t VersionAndColourScheme; // 0x07 0b0000_VVCC
+ RCT12VehicleColour VehicleColours[Limits::kMaxTrainsPerRide]; // 0x08
+ uint8_t Pad48; // 0x48
+ uint8_t EntranceStyle; // 0x49
+ uint8_t TotalAirTime; // 0x4A
+ uint8_t DepartFlags; // 0x4B
+ uint8_t NumberOfTrains; // 0x4C
+ uint8_t NumberOfCarsPerTrain; // 0x4D
+ uint8_t MinWaitingTime; // 0x4E
+ uint8_t MaxWaitingTime; // 0x4F
+ uint8_t OperationSetting; // 0x50
+ int8_t MaxSpeed; // 0x51
+ int8_t AverageSpeed; // 0x52
+ uint16_t RideLength; // 0x53
+ uint8_t MaxPositiveVerticalG; // 0x55
+ int8_t MaxNegativeVerticalG; // 0x56
+ uint8_t MaxLateralG; // 0x57
+ union
+ {
+ uint8_t Inversions; // 0x58
+ uint8_t Holes; // 0x58
+ };
+ uint8_t Drops; // 0x59
+ uint8_t HighestDropHeight; // 0x5A
+ uint8_t Excitement; // 0x5B
+ uint8_t Intensity; // 0x5C
+ uint8_t Nausea; // 0x5D
+ money16 UpkeepCost; // 0x5E
+ uint8_t TrackSpineColour[Limits::kNumColourSchemes]; // 0x60
+ uint8_t TrackRailColour[Limits::kNumColourSchemes]; // 0x64
+ uint8_t TrackSupportColour[Limits::kNumColourSchemes]; // 0x68
+ uint32_t Flags2; // 0x6C
+ RCTObjectEntry VehicleObject; // 0x70
+ uint8_t SpaceRequiredX; // 0x80
+ uint8_t SpaceRequiredY; // 0x81
+ uint8_t VehicleAdditionalColour[Limits::kMaxTrainsPerRide]; // 0x82
+ uint8_t LiftHillSpeedNumCircuits; // 0xA2 0bCCCL_LLLL
+ // 0xA3 (data starts here in file)
+ };
+ static_assert(sizeof(TD6Track) == 0xA3);
+
+ /**
+ * scores.dat file header.
+ * size: 0x10
+ */
+ struct ScoresHeader
+ {
+ uint32_t Var0;
+ uint32_t Var4;
+ uint32_t Var8;
+ uint32_t ScenarioCount;
+ };
+ static_assert(sizeof(ScoresHeader) == 0x10);
+
+ /**
+ * An entry of scores.dat
+ * size: 0x02B0
+ */
+ struct ScoresEntry
+ {
+ char Path[256];
+ uint8_t Category;
+ uint8_t Pad0101[0x1F];
+ Scenario::ObjectiveType ObjectiveType;
+ int8_t ObjectiveArg1;
+ int32_t objectiveArg2;
+ uint16_t objectiveArg3;
+ char Name[64];
+ char Details[256];
+ int32_t Flags;
+ money32 CompanyValue;
+ char CompletedBy[64];
+ };
+ static_assert(sizeof(ScoresEntry) == 0x02B0);
+
+ struct Vehicle : RCT12EntityBase
+ {
+ VehiclePitch pitch; // 0x1F
+ VehicleRoll roll; // 0x20
+ uint8_t Pad21[3];
+ int32_t RemainingDistance; // 0x24
+ int32_t Velocity; // 0x28
+ int32_t Acceleration; // 0x2C
+ uint8_t Ride; // 0x30
+ uint8_t VehicleType; // 0x31
+ RCT12VehicleColour Colours; // 0x32
+ union
+ {
+ uint16_t TrackProgress; // 0x34
+ struct
+ {
+ int8_t Var34;
+ uint8_t Var35;
+ };
+ };
+ union
+ {
+ int16_t TrackTypeAndDirection; // 0x36
+ RCT12xy8 BoatLocation; // 0x36
+ };
+ uint16_t TrackX; // 0x38
+ uint16_t TrackY; // 0x3A
+ uint16_t TrackZ; // 0x3C
+ uint16_t NextVehicleOnTrain; // 0x3E
+ uint16_t PrevVehicleOnRide; // 0x40
+ uint16_t NextVehicleOnRide; // 0x42
+ uint16_t Var44;
+ uint16_t Mass; // 0x46
+ uint16_t UpdateFlags; // 0x48
+ uint8_t SwingSprite;
+ uint8_t CurrentStation; // 0x4B
+ union
+ {
+ int16_t SwingPosition; // 0x4C
+ int16_t CurrentTime; // 0x4C
+ struct
+ {
+ int8_t FerrisWheelVar0; // 0x4C
+ int8_t FerrisWheelVar1; // 0x4D
+ };
+ };
+ union
+ {
+ int16_t SwingSpeed;
+ int16_t CrashZ; // 0x4E
+ };
+ uint8_t Status; // 0x50
+ uint8_t SubState; // 0x51
+ uint16_t Peep[32]; // 0x52
+ uint8_t PeepTshirtColours[32]; // 0x92
+ uint8_t NumSeats; // 0xB2
+ uint8_t NumPeeps; // 0xB3
+ uint8_t NextFreeSeat; // 0xB4
+ uint8_t RestraintsPosition; // 0xB5
+ union
+ {
+ int16_t SpinSpeed; // 0xB6
+ int16_t CrashX; // 0xB6
+ };
+ uint16_t Sound2Flags; // 0xB8
+ uint8_t SpinSprite; // 0xBA
+ uint8_t Sound1Id; // 0xBB
+ uint8_t Sound1Volume; // 0xBC
+ uint8_t Sound2Id; // 0xBD
+ uint8_t Sound2Volume; // 0xBE
+ int8_t SoundVectorFactor;
+ union
+ {
+ uint16_t VarC0;
+ int16_t CrashY; // 0xC0
+ uint16_t TimeWaiting; // 0xC0
+ uint16_t CableLiftTarget; // 0xC0
+ };
+ uint8_t Speed; // 0xC2
+ uint8_t PoweredAcceleration; // 0xC3
+ union
+ {
+ uint8_t DodgemsCollisionDirection; // 0xC4
+ uint8_t CollisionDetectionTimer; // 0xC4
+ };
+ uint8_t AnimationFrame; // 0xC5
+ uint8_t PadC6[0x2];
+ uint32_t AnimationState;
+ uint8_t ScreamSoundId; // 0xCC
+ uint8_t TrackSubposition;
+ uint8_t NumLaps; // 0xCE
+ uint8_t BrakeSpeed; // 0xCF
+ uint16_t LostTimeOut; // 0xD0
+ int8_t VerticalDropCountdown; // 0xD1
+ uint8_t VarD3;
+ uint8_t MiniGolfCurrentAnimation;
+ uint8_t MiniGolfFlags; // 0xD5
+ uint8_t RideSubtype; // 0xD6
+ uint8_t ColoursExtended; // 0xD7
+ uint8_t SeatRotation; // 0xD8
+ uint8_t TargetSeatRotation; // 0xD9
+
+ OpenRCT2::RCT12::TrackElemType GetTrackType() const
+ {
+ return static_cast(TrackTypeAndDirection >> 2);
+ }
+ uint8_t GetTrackDirection() const
+ {
+ return TrackTypeAndDirection & kRCT12VehicleTrackDirectionMask;
+ }
+ void SetTrackType(OpenRCT2::RCT12::TrackElemType trackType)
+ {
+ // set the upper 14 bits to 0
+ TrackTypeAndDirection &= ~kRCT12VehicleTrackTypeMask;
+ TrackTypeAndDirection |= EnumValue(trackType) << 2;
+ }
+ void SetTrackDirection(uint8_t trackDirection)
+ {
+ // set the lower 2 bits only
+ TrackTypeAndDirection &= ~kRCT12VehicleTrackDirectionMask;
+ TrackTypeAndDirection |= trackDirection & kRCT12VehicleTrackDirectionMask;
+ }
+ };
+ static_assert(sizeof(Vehicle) == 0xDA);
+
+ struct Peep : RCT12EntityBase
+ {
+ uint8_t Pad1F[0x22 - 0x1F];
+ StringId NameStringIdx; // 0x22
+ uint16_t NextX; // 0x24
+ uint16_t NextY; // 0x26
+ uint8_t NextZ; // 0x28
+ uint8_t NextFlags; // 0x29
+ uint8_t OutsideOfPark; // 0x2A
+ uint8_t State; // 0x2B
+ uint8_t SubState; // 0x2C
+ uint8_t AnimationGroup; // 0x2D
+ uint8_t PeepType; // 0x2E
+ union
+ {
+ uint8_t StaffType; // 0x2F
+ uint8_t NoOfRides; // 0x2F
+ };
+ uint8_t TshirtColour; // 0x30
+ uint8_t TrousersColour; // 0x31
+ uint16_t DestinationX; // 0x32
+ uint16_t DestinationY; // 0x34
+ uint8_t DestinationTolerance; // 0x36
+ uint8_t Var37;
+ uint8_t Energy; // 0x38
+ uint8_t EnergyTarget; // 0x39
+ uint8_t Happiness; // 0x3A
+ uint8_t HappinessTarget; // 0x3B
+ uint8_t Nausea; // 0x3C
+ uint8_t NauseaTarget; // 0x3D
+ uint8_t Hunger; // 0x3E
+ uint8_t Thirst; // 0x3F
+ uint8_t Toilet; // 0x40
+ uint8_t Mass; // 0x41
+ uint8_t TimeToConsume; // 0x42
+ uint8_t Intensity; // 0x43
+ uint8_t NauseaTolerance; // 0x44
+ uint8_t WindowInvalidateFlags; // 0x45
+ money16 PaidOnDrink; // 0x46
+ uint8_t RideTypesBeenOn[16]; // 0x48
+ uint32_t ItemExtraFlags; // 0x58
+ RCT12RideId Photo2RideRef; // 0x5C
+ RCT12RideId Photo3RideRef; // 0x5D
+ RCT12RideId Photo4RideRef; // 0x5E
+ uint8_t Pad5F[0x09]; // 0x5F
+ RCT12RideId CurrentRide; // 0x68
+ uint8_t CurrentRideStation; // 0x69
+ uint8_t CurrentTrain; // 0x6A
+ union
+ {
+ struct
+ {
+ uint8_t CurrentCar; // 0x6B
+ uint8_t CurrentSeat; // 0x6C
+ };
+ uint16_t TimeToSitdown; // 0x6B
+ struct
+ {
+ uint8_t TimeToStand; // 0x6B
+ uint8_t StandingFlags; // 0x6C
+ };
+ };
+ uint8_t SpecialSprite; // 0x6D
+ uint8_t AnimationType; // 0x6E
+ uint8_t NextAnimationType; // 0x6F
+ uint8_t AnimationImageIdOffset; // 0x70
+ uint8_t Action; // 0x71
+ uint8_t AnimationFrameNum; // 0x72
+ uint8_t StepProgress; // 0x73
+ union
+ {
+ uint16_t MechanicTimeSinceCall;
+ uint16_t NextInQueue; // 0x74
+ };
+ uint8_t Pad76;
+ uint8_t Pad77;
+ union
+ {
+ uint8_t MazeLastEdge; // 0x78
+ uint8_t Direction;
+ };
+ RCT12RideId InteractionRideIndex;
+ uint16_t TimeInQueue; // 0x7A
+ uint8_t RidesBeenOn[32]; // 0x7C
+ uint32_t Id; // 0x9C
+ money32 CashInPocket; // 0xA0
+ money32 CashSpent; // 0xA4
+ int32_t ParkEntryTime; // 0xA8
+ int8_t RejoinQueueTimeout; // 0xAC
+ RCT12RideId PreviousRide; // 0xAD
+ uint16_t PreviousRideTimeOut; // 0xAE
+ RCT12PeepThought Thoughts[Limits::kMaxPeepThoughts]; // 0xB0
+ uint8_t PathCheckOptimisation; // 0xC4
+ union
+ {
+ uint8_t StaffId; // 0xC5
+ RCT12RideId GuestHeadingToRideId; // 0xC5
+ };
+ union
+ {
+ uint8_t StaffOrders; // 0xC6
+ uint8_t PeepIsLostCountdown; // 0xC6
+ };
+ RCT12RideId Photo1RideRef; // 0xC7
+ uint32_t PeepFlags; // 0xC8
+ RCT12xyzd8 PathfindGoal; // 0xCC
+ RCT12xyzd8 PathfindHistory[4]; // 0xD0
+ uint8_t NoActionFrameNum; // 0xE0
+ uint8_t LitterCount; // 0xE1
+ union
+ {
+ uint8_t TimeOnRide; // 0xE2
+ uint8_t StaffMowingTimeout; // 0xE2
+ };
+ uint8_t DisgustingCount; // 0xE3
+ union
+ {
+ money16 PaidToEnter; // 0xE4
+ uint16_t StaffLawnsMown; // 0xE4
+ uint16_t StaffRidesFixed; // 0xE4
+ };
+ union
+ {
+ money16 PaidOnRides; // 0xE6
+ uint16_t StaffGardensWatered; // 0xE6
+ uint16_t StaffRidesInspected; // 0xE6
+ };
+ union
+ {
+ money16 PaidOnFood; // 0xE8
+ uint16_t StaffLitterSwept; // 0xE8
+ };
+ union
+ {
+ money16 PaidOnSouvenirs; // 0xEA
+ uint16_t StaffBinsEmptied; // 0xEA
+ };
+ uint8_t NoOfFood; // 0xEC
+ uint8_t NoOfDrinks; // 0xED
+ uint8_t NoOfSouvenirs; // 0xEE
+ uint8_t VandalismSeen; // 0xEF 0xC0 vandalism thought timeout, 0x3F vandalism tiles seen
+ uint8_t VoucherType; // 0xF0
+ RCT12RideId VoucherArguments; // 0xF1 ride_id or string_offset_id
+ uint8_t SurroundingsThoughtTimeout; // 0xF2
+ uint8_t Angriness; // 0xF3
+ uint8_t TimeLost; // 0xF4 the time the peep has been lost when it reaches 254 generates the lost thought
+ uint8_t DaysInQueue; // 0xF5
+ uint8_t BalloonColour; // 0xF6
+ uint8_t UmbrellaColour; // 0xF7
+ uint8_t HatColour; // 0xF8
+ RCT12RideId FavouriteRide; // 0xF9
+ uint8_t FavouriteRideRating; // 0xFA
+ uint8_t PadFB;
+ uint32_t ItemStandardFlags; // 0xFC
+ uint64_t GetItemFlags() const
+ {
+ return ItemStandardFlags | (static_cast(ItemExtraFlags) << 32);
+ }
+ };
+ static_assert(sizeof(Peep) == 0x100);
+
+ enum class StaffMode : uint8_t
+ {
+ none,
+ walk,
+ patrol = 3
+ };
+
+ union Entity
+ {
+ private:
+ uint8_t Pad00[0x100];
+
+ public:
+ RCT12EntityBase Unknown;
+ RCT2::Vehicle Vehicle;
+ RCT2::Peep Peep;
+ RCT12EntityLitter Litter;
+ RCT12EntityBalloon Balloon;
+ RCT12EntityDuck Duck;
+ RCT12EntityJumpingFountain JumpingFountain{};
+ RCT12EntityMoneyEffect MoneyEffect;
+ RCT12EntityCrashedVehicleParticle CrashedVehicleParticle;
+ RCT12EntityCrashSplash CrashSplash;
+ RCT12EntitySteamParticle SteamParticle;
+ RCT12EntityParticle MiscParticle;
+ };
+ static_assert(sizeof(Entity) == 0x100);
+
+ struct RideRatingCalculationData
+ {
+ uint16_t ProximityX;
+ uint16_t ProximityY;
+ uint16_t ProximityZ;
+ uint16_t ProximityStartX;
+ uint16_t ProximityStartY;
+ uint16_t ProximityStartZ;
+ uint8_t CurrentRide;
+ uint8_t State;
+ OpenRCT2::RCT12::TrackElemType ProximityTrackType;
+ uint8_t ProximityBaseHeight;
+ uint16_t ProximityTotal;
+ uint16_t ProximityScores[26];
+ uint16_t NumBrakes;
+ uint16_t NumReversers;
+ uint16_t StationFlags;
+ };
+ static_assert(sizeof(RideRatingCalculationData) == 76);
+
+ /**
+ * SV6/SC6 header chunk
+ * size: 0x20
+ */
+ struct S6Header
+ {
+ uint8_t Type; // 0x00
+ uint8_t ClassicFlag; // 0x01
+ uint16_t NumPackedObjects; // 0x02
+ uint32_t Version; // 0x04
+ uint32_t MagicNumber; // 0x08
+ uint8_t Pad0C[0x14];
+ };
+ static_assert(sizeof(S6Header) == 0x20);
+
+ /**
+ * SC6 information chunk
+ * size: 0x198
+ */
+ struct S6Info
+ {
+ ::EditorStep EditorStep;
+ Scenario::Category Category; // 0x01
+ Scenario::ObjectiveType ObjectiveType; // 0x02
+ uint8_t ObjectiveArg1; // 0x03
+ int32_t ObjectiveArg2; // 0x04
+ uint16_t ObjectiveArg3; // 0x08
+ uint8_t Pad00A[0x3E];
+ char Name[64]; // 0x48
+ char Details[256]; // 0x88
+ RCTObjectEntry Entry; // 0x188
+ };
+ static_assert(sizeof(S6Info) == 0x198);
+
+ struct S6Data
+ {
+ // SC6[0]
+ S6Header Header;
+
+ // SC6[1]
+ S6Info Info;
+
+ // SC6[2]
+ // packed objects
+
+ // SC6[3]
+ union
+ {
+ RCTObjectEntry Objects[kRCT2ObjectEntryCount];
+ struct
+ {
+ RCTObjectEntry RideObjects[Limits::kMaxRideObjects];
+ RCTObjectEntry SceneryObjects[Limits::kMaxSmallSceneryObjects];
+ RCTObjectEntry LargeSceneryObjects[Limits::kMaxLargeSceneryObjects];
+ RCTObjectEntry WallSceneryObjects[Limits::kMaxWallSceneryObjects];
+ RCTObjectEntry BannerObjects[Limits::kMaxBannerObjects];
+ RCTObjectEntry PathObjects[Limits::kMaxPathObjects];
+ RCTObjectEntry PathAdditionObjects[Limits::kMaxPathAdditionObjects];
+ RCTObjectEntry SceneryGroupObjects[Limits::kMaxSceneryGroupObjects];
+ RCTObjectEntry ParkEntranceObjects[Limits::kMaxParkEntranceObjects];
+ RCTObjectEntry WaterObjects[Limits::kMaxWaterObjects];
+ RCTObjectEntry ScenarioMetaObjects[Limits::kMaxScenarioMetaObjects];
+ };
+ };
+
+ // SC6[4]
+ uint16_t ElapsedMonths;
+ uint16_t CurrentDay;
+ uint32_t ScenarioTicks;
+ uint32_t ScenarioSrand0;
+ uint32_t ScenarioSrand1;
+
+ // SC6[5]
+ RCT12TileElement TileElements[Limits::kMaxTileElements];
+
+ // SC6[6]
+ uint32_t NextFreeTileElementPointerIndex;
+ Entity Entities[Limits::kMaxEntitiesRCTCExtended];
+ uint16_t EntityListsHead[EnumValue(EntityListId::count)];
+ uint16_t EntityListsCount[EnumValue(EntityListId::count)];
+ StringId ParkName;
+ uint8_t Pad013573D6[2];
+ uint32_t ParkNameArgs;
+ money32 InitialCash;
+ money32 CurrentLoan;
+ uint32_t ParkFlags;
+ money16 ParkEntranceFee;
+ uint16_t RCT1ParkEntranceX;
+ uint16_t RCT1ParkEntranceY;
+ uint8_t Pad013573EE[2];
+ uint8_t RCT1ParkEntranceZ;
+ uint8_t Pad013573F1;
+ RCT12PeepSpawn PeepSpawns[Limits::kMaxPeepSpawns];
+ uint8_t GuestCountChangeModifier;
+ uint8_t CurrentResearchLevel;
+ uint8_t Pad01357400[4];
+ uint32_t ResearchedRideTypes[Limits::kMaxResearchedRideTypeQuads];
+ uint32_t ResearchedRideEntries[Limits::kMaxResearchedRideEntryQuads];
+ uint32_t ResearchedTrackTypesA[128];
+ uint32_t ResearchedTrackTypesB[128];
+
+ // SC6[7]
+ uint16_t GuestsInPark;
+ uint16_t GuestsHeadingForPark;
+
+ // Ignored in scenario
+ money32 ExpenditureTable[Limits::kExpenditureTableMonthCount][Limits::kExpenditureTypeCount];
+
+ // SC6[8]
+ uint16_t LastGuestsInPark;
+ uint8_t Pad01357BCA[3];
+ uint8_t HandymanColour;
+ uint8_t MechanicColour;
+ uint8_t SecurityColour;
+
+ // Ignored in scenario
+ uint32_t ResearchedSceneryItems[Limits::kMaxResearchedSceneryItemQuads];
+
+ // SC6[9]
+ uint16_t ParkRating;
+
+ // Ignored in scenario
+ uint8_t ParkRatingHistory[kParkRatingHistorySize];
+ uint8_t GuestsInParkHistory[kGuestsInParkHistorySize];
+
+ // SC6[10]
+ uint8_t ActiveResearchTypes;
+ uint8_t ResearchProgressStage;
+ uint32_t LastResearchedItemSubject;
+ uint8_t Pad01357CF8[1000];
+ uint32_t NextResearchItem;
+ uint16_t ResearchProgress;
+ uint8_t NextResearchCategory;
+ uint8_t NextResearchExpectedDay;
+ uint8_t NextResearchExpectedMonth;
+ uint8_t GuestInitialHappiness;
+ uint16_t ParkSize;
+ uint16_t GuestGenerationProbability;
+ uint16_t TotalRideValueForMoney;
+ money32 MaximumLoan;
+ money16 GuestInitialCash;
+ uint8_t GuestInitialHunger;
+ uint8_t GuestInitialThirst;
+ Scenario::ObjectiveType ObjectiveType;
+ uint8_t ObjectiveYear;
+ uint8_t Pad013580FA[2];
+ money32 ObjectiveCurrency;
+ uint16_t ObjectiveGuests;
+ uint8_t CampaignWeeksLeft[20];
+ uint8_t CampaignRideIndex[22];
+
+ // Ignored in scenario
+ money32 BalanceHistory[Limits::kFinanceGraphSize];
+
+ // SC6[11]
+ money32 CurrentExpenditure;
+ money32 CurrentProfit;
+ money32 WeeklyProfitAverageDividend;
+ uint16_t WeeklyProfitAverageDivisor;
+ uint8_t Pad0135833A[2];
+
+ // Ignored in scenario
+ money32 WeeklyProfitHistory[Limits::kFinanceGraphSize];
+
+ // SC6[12]
+ money32 ParkValue;
+
+ // Ignored in scenario
+ money32 ParkValueHistory[Limits::kFinanceGraphSize];
+
+ // SC6[13]
+ money32 CompletedCompanyValue;
+ uint32_t TotalAdmissions;
+ money32 IncomeFromAdmissions;
+ money32 CompanyValue;
+ uint8_t PeepWarningThrottle[16];
+ RCT12Award Awards[Limits::kMaxAwards];
+ money16 LandPrice;
+ money16 ConstructionRightsPrice;
+ uint16_t Word01358774;
+ uint8_t Pad01358776[2];
+ uint32_t CDKey;
+ uint8_t Pad0135877C[64];
+ uint32_t GameVersionNumber;
+ money32 CompletedCompanyValueRecord;
+ uint32_t LoanHash;
+ uint16_t RideCount;
+ uint8_t Pad013587CA[6];
+ money32 HistoricalProfit;
+ uint8_t Pad013587D4[4];
+ char ScenarioCompletedName[32];
+ money32 Cash;
+ uint8_t Pad013587FC[50];
+ uint16_t ParkRatingCasualtyPenalty;
+ uint16_t MapSizeUnits;
+ uint16_t MapSizeMinus2;
+ uint16_t MapSize;
+ uint16_t MapMaxXy;
+ uint32_t SamePriceThroughout;
+ uint16_t SuggestedMaxGuests;
+ uint16_t ParkRatingWarningDays;
+ uint8_t LastEntranceStyle;
+ uint8_t RCT1WaterColour;
+ uint8_t Pad01358842[2];
+ RCT12ResearchItem ResearchItems[Limits::kMaxResearchItems];
+ uint16_t MapBaseZ;
+ char ScenarioName[64];
+ char ScenarioDescription[256];
+ uint8_t CurrentInterestRate;
+ uint8_t Pad0135934B;
+ uint32_t SamePriceThroughoutExtended;
+ int16_t ParkEntranceX[Limits::kMaxParkEntrances];
+ int16_t ParkEntranceY[Limits::kMaxParkEntrances];
+ int16_t ParkEntranceZ[Limits::kMaxParkEntrances];
+ uint8_t ParkEntranceDirection[Limits::kMaxParkEntrances];
+ char ScenarioFilename[256];
+ uint8_t SavedExpansionPackNames[3256];
+ RCT12Banner Banners[Limits::kMaxBanners];
+ char CustomStrings[Limits::kMaxUserStrings][Limits::kMaxUserStringLength];
+ uint32_t GameTicks1;
+ Ride Rides[Limits::kMaxRidesInPark];
+ uint16_t SavedAge; // unused
+ int16_t SavedViewX;
+ int16_t SavedViewY;
+ uint8_t SavedViewZoom;
+ uint8_t SavedViewRotation;
+ RCT12MapAnimation MapAnimations[Limits::kMaxAnimatedObjects];
+ uint16_t NumMapAnimations;
+ uint8_t Pad0138B582[2];
+ RideRatingCalculationData RideRatingsCalcData;
+ uint8_t Pad0138B5D0[60];
+ RCT12RideMeasurement RideMeasurements[8];
+ uint32_t NextGuestIndex;
+ uint16_t GrassAndSceneryTilepos;
+ uint32_t PatrolAreas[(Limits::kMaxStaff + Limits::kStaffTypeCount) * Limits::kPatrolAreaSize];
+ StaffMode StaffModes[Limits::kMaxStaff + Limits::kStaffTypeCount];
+ uint8_t Pad13CA73E;
+ uint8_t Pad13CA73F;
+ uint8_t Byte13CA740;
+ uint8_t Pad13CA741;
+ uint8_t Byte13CA742[4]; // unused
+ RCT12::ClimateType Climate;
+ uint8_t Pad013CA747;
+ uint16_t WeatherUpdateTimer;
+ uint8_t CurrentWeather;
+ uint8_t NextWeather;
+ uint8_t Temperature;
+ uint8_t NextTemperature;
+ uint8_t CurrentWeatherEffect;
+ uint8_t NextWeatherEffect;
+ uint8_t CurrentWeatherGloom;
+ uint8_t NextWeatherGloom;
+ uint8_t CurrentWeatherLevel;
+ uint8_t NextWeatherLevel;
+ RCT12NewsItem recentMessages[Limits::kMaxRecentNewsItems];
+ RCT12NewsItem archivedMessages[Limits::kMaxArchivedNewsItems];
+ char RCT1ScenarioName[62]; // Unused in RCT2
+ uint16_t RCT1ScenarioSlotIndex; // Unused in RCT2
+ uint32_t RCT1ScenarioFlags; // Unused in RCT2
+ uint16_t WidePathTileLoopX;
+ uint16_t WidePathTileLoopY;
+ uint8_t Pad13CE778[434];
+ };
+ static_assert(sizeof(S6Data) == 0x5a3c4a);
+
+ struct StexEntry
+ {
+ StringId ScenarioName; // 0x00
+ StringId ParkName; // 0x02
+ StringId Details; // 0x04
+ uint8_t Var06;
+ };
+ static_assert(sizeof(StexEntry) == 7);
+#pragma pack(pop)
+
+ ObjectEntryIndex RCT2RideTypeToOpenRCT2RideType(uint8_t rct2RideType, const RideObjectEntry& rideEntry);
+ bool RCT2RideTypeNeedsConversion(uint8_t rct2RideType);
+ uint8_t OpenRCT2RideTypeToRCT2RideType(ObjectEntryIndex openrct2Type);
+
+ enum class OriginalRideClass
+ {
+ regular,
+ wildMouse,
+ flatRide,
+ };
+
+ OpenRCT2::TrackElemType RCT2TrackTypeToOpenRCT2(
+ OpenRCT2::RCT12::TrackElemType origTrackType, ride_type_t rideType, bool isFlatRide);
+ OpenRCT2::TrackElemType RCT2TrackTypeToOpenRCT2(
+ OpenRCT2::RCT12::TrackElemType origTrackType, OriginalRideClass originalClass);
+ OpenRCT2::RCT12::TrackElemType OpenRCT2TrackTypeToRCT2(OpenRCT2::TrackElemType origTrackType);
+
+ struct FootpathMapping
+ {
+ std::string_view Original;
+ std::string_view NormalSurface;
+ std::string_view QueueSurface;
+ std::string_view Railing;
+ };
+
+ const FootpathMapping* GetFootpathSurfaceId(
+ const ObjectEntryDescriptor& desc, bool ideallyLoaded = false, bool isQueue = false);
+ std::optional GetBestObjectEntryForSurface(std::string_view surface, std::string_view railings);
+
+ static constexpr std::string_view DefaultTerrainSurfaces[] = {
+ "rct2.terrain_surface.grass", "rct2.terrain_surface.sand", "rct2.terrain_surface.dirt",
+ "rct2.terrain_surface.rock", "rct2.terrain_surface.martian", "rct2.terrain_surface.chequerboard",
+ "rct2.terrain_surface.grass_clumps", "rct2.terrain_surface.ice", "rct2.terrain_surface.grid_red",
+ "rct2.terrain_surface.grid_yellow", "rct2.terrain_surface.grid_purple", "rct2.terrain_surface.grid_green",
+ "rct2.terrain_surface.sand_red", "rct2.terrain_surface.sand_brown",
+ };
+
+ // Additional surface styles added to OpenRCT2 as a feature if RCT1 linked
+ static constexpr std::string_view OpenRCT2HybridTerrainSurfaces[] = {
+ "rct1aa.terrain_surface.roof_red",
+ "rct1ll.terrain_surface.roof_grey",
+ "rct1ll.terrain_surface.rust",
+ "rct1ll.terrain_surface.wood",
+ };
+
+ static constexpr std::string_view DefaultTerrainEdges[] = {
+ "rct2.terrain_edge.rock",
+ "rct2.terrain_edge.wood_red",
+ "rct2.terrain_edge.wood_black",
+ "rct2.terrain_edge.ice",
+ };
+
+ // Additional surface edges added to OpenRCT2 as a feature if RCT1 was linked
+ static constexpr std::string_view OpenRCT2HybridTerrainEdges[] = {
+ "rct1.terrain_edge.brick", "rct1.terrain_edge.iron", "rct1aa.terrain_edge.grey",
+ "rct1aa.terrain_edge.yellow", "rct1aa.terrain_edge.red", "rct1ll.terrain_edge.purple",
+ "rct1ll.terrain_edge.green", "rct1ll.terrain_edge.stone_brown", "rct1ll.terrain_edge.stone_grey",
+ "rct1ll.terrain_edge.skyscraper_a", "rct1ll.terrain_edge.skyscraper_b",
+ };
+} // namespace OpenRCT2::RCT2
+
+std::vector DecryptSea(const fs::path& path);
diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/compatibility/rct2/S6Importer.cpp
similarity index 98%
rename from src/openrct2/rct2/S6Importer.cpp
rename to src/openrct2/compatibility/rct2/S6Importer.cpp
index d1570a0dd326..77e316cf2c7d 100644
--- a/src/openrct2/rct2/S6Importer.cpp
+++ b/src/openrct2/compatibility/rct2/S6Importer.cpp
@@ -7,59 +7,59 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
-#include "../Context.h"
-#include "../Diagnostic.h"
-#include "../Game.h"
-#include "../GameState.h"
-#include "../ParkImporter.h"
-#include "../core/FileStream.h"
-#include "../core/Path.hpp"
-#include "../core/String.hpp"
-#include "../entity/Balloon.h"
-#include "../entity/Duck.h"
-#include "../entity/Fountain.h"
-#include "../entity/Guest.h"
-#include "../entity/Litter.h"
-#include "../entity/MoneyEffect.h"
-#include "../entity/Particle.h"
-#include "../entity/PatrolArea.h"
-#include "../entity/Staff.h"
-#include "../localisation/Formatting.h"
-#include "../object/ObjectList.h"
-#include "../object/ObjectManager.h"
-#include "../object/ObjectRepository.h"
-#include "../object/ScenarioMetaObject.h"
-#include "../park/Legacy.h"
-#include "../park/ParkPreview.h"
-#include "../peep/RideUseSystem.h"
+#include "../../Context.h"
+#include "../../Diagnostic.h"
+#include "../../Game.h"
+#include "../../GameState.h"
+#include "../../ParkImporter.h"
+#include "../../core/FileStream.h"
+#include "../../core/Path.hpp"
+#include "../../core/String.hpp"
+#include "../../entity/Balloon.h"
+#include "../../entity/Duck.h"
+#include "../../entity/Fountain.h"
+#include "../../entity/Guest.h"
+#include "../../entity/Litter.h"
+#include "../../entity/MoneyEffect.h"
+#include "../../entity/Particle.h"
+#include "../../entity/PatrolArea.h"
+#include "../../entity/Staff.h"
+#include "../../localisation/Formatting.h"
+#include "../../object/ObjectList.h"
+#include "../../object/ObjectManager.h"
+#include "../../object/ObjectRepository.h"
+#include "../../object/ScenarioMetaObject.h"
+#include "../../park/Legacy.h"
+#include "../../park/ParkPreview.h"
+#include "../../peep/RideUseSystem.h"
+#include "../../rct12/ScenarioPatcher.h"
+#include "../../rct2/RCT2.h"
+#include "../../ride/Ride.h"
+#include "../../ride/RideData.h"
+#include "../../ride/Vehicle.h"
+#include "../../sawyer_coding/SawyerChunkReader.h"
+#include "../../scenario/Scenario.h"
+#include "../../scenario/ScenarioRepository.h"
+#include "../../scenario/ScenarioSources.h"
+#include "../../world/Climate.h"
+#include "../../world/Entrance.h"
+#include "../../world/Map.h"
+#include "../../world/MapAnimation.h"
+#include "../../world/Park.h"
+#include "../../world/Scenery.h"
+#include "../../world/TilePointerIndex.hpp"
+#include "../../world/tile_element/BannerElement.h"
+#include "../../world/tile_element/EntranceElement.h"
+#include "../../world/tile_element/LargeSceneryElement.h"
+#include "../../world/tile_element/PathElement.h"
+#include "../../world/tile_element/SmallSceneryElement.h"
+#include "../../world/tile_element/SurfaceElement.h"
+#include "../../world/tile_element/TileElement.h"
+#include "../../world/tile_element/TrackElement.h"
+#include "../../world/tile_element/WallElement.h"
#include "../rct12/CSStringConverter.h"
#include "../rct12/EntryList.h"
#include "../rct12/RCT12.h"
-#include "../rct12/ScenarioPatcher.h"
-#include "../rct2/RCT2.h"
-#include "../ride/Ride.h"
-#include "../ride/RideData.h"
-#include "../ride/Vehicle.h"
-#include "../sawyer_coding/SawyerChunkReader.h"
-#include "../scenario/Scenario.h"
-#include "../scenario/ScenarioRepository.h"
-#include "../scenario/ScenarioSources.h"
-#include "../world/Climate.h"
-#include "../world/Entrance.h"
-#include "../world/Map.h"
-#include "../world/MapAnimation.h"
-#include "../world/Park.h"
-#include "../world/Scenery.h"
-#include "../world/TilePointerIndex.hpp"
-#include "../world/tile_element/BannerElement.h"
-#include "../world/tile_element/EntranceElement.h"
-#include "../world/tile_element/LargeSceneryElement.h"
-#include "../world/tile_element/PathElement.h"
-#include "../world/tile_element/SmallSceneryElement.h"
-#include "../world/tile_element/SurfaceElement.h"
-#include "../world/tile_element/TileElement.h"
-#include "../world/tile_element/TrackElement.h"
-#include "../world/tile_element/WallElement.h"
#include
diff --git a/src/openrct2/rct2/SeaDecrypt.cpp b/src/openrct2/compatibility/rct2/SeaDecrypt.cpp
similarity index 95%
rename from src/openrct2/rct2/SeaDecrypt.cpp
rename to src/openrct2/compatibility/rct2/SeaDecrypt.cpp
index de63c5370c06..f3895de29b9e 100644
--- a/src/openrct2/rct2/SeaDecrypt.cpp
+++ b/src/openrct2/compatibility/rct2/SeaDecrypt.cpp
@@ -7,10 +7,10 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
-#include "../core/File.h"
-#include "../core/Numerics.hpp"
-#include "../core/Path.hpp"
-#include "RCT2.h"
+#include "../../core/File.h"
+#include "../../core/Numerics.hpp"
+#include "../../core/Path.hpp"
+#include "../../rct2/RCT2.h"
#include
#include
diff --git a/src/openrct2/rct2/T6Exporter.cpp b/src/openrct2/compatibility/rct2/T6Exporter.cpp
similarity index 94%
rename from src/openrct2/rct2/T6Exporter.cpp
rename to src/openrct2/compatibility/rct2/T6Exporter.cpp
index 3b63eee8573f..0208bfbc0a96 100644
--- a/src/openrct2/rct2/T6Exporter.cpp
+++ b/src/openrct2/compatibility/rct2/T6Exporter.cpp
@@ -9,23 +9,23 @@
#include "T6Exporter.h"
-#include "../Context.h"
-#include "../Diagnostic.h"
-#include "../core/FileStream.h"
-#include "../core/MemoryStream.h"
-#include "../localisation/StringIds.h"
-#include "../object/ObjectList.h"
+#include "../../Context.h"
+#include "../../Diagnostic.h"
+#include "../../core/FileStream.h"
+#include "../../core/MemoryStream.h"
+#include "../../localisation/StringIds.h"
+#include "../../object/ObjectList.h"
+#include "../../rct2/RCT2.h"
+#include "../../ride/Ride.h"
+#include "../../ride/RideData.h"
+#include "../../ride/Station.h"
+#include "../../ride/Track.h"
+#include "../../ride/TrackData.h"
+#include "../../ride/TrackDesign.h"
+#include "../../ride/TrackDesignRepository.h"
+#include "../../sawyer_coding/SawyerChunkWriter.h"
+#include "../../windows/Intent.h"
#include "../rct12/TD46.h"
-#include "../rct2/RCT2.h"
-#include "../ride/Ride.h"
-#include "../ride/RideData.h"
-#include "../ride/Station.h"
-#include "../ride/Track.h"
-#include "../ride/TrackData.h"
-#include "../ride/TrackDesign.h"
-#include "../ride/TrackDesignRepository.h"
-#include "../sawyer_coding/SawyerChunkWriter.h"
-#include "../windows/Intent.h"
#include
diff --git a/src/openrct2/rct2/T6Exporter.h b/src/openrct2/compatibility/rct2/T6Exporter.h
similarity index 96%
rename from src/openrct2/rct2/T6Exporter.h
rename to src/openrct2/compatibility/rct2/T6Exporter.h
index edc29697b47f..89737e2699ef 100644
--- a/src/openrct2/rct2/T6Exporter.h
+++ b/src/openrct2/compatibility/rct2/T6Exporter.h
@@ -9,7 +9,7 @@
#pragma once
-#include "../ride/TrackDesign.h"
+#include "../../ride/TrackDesign.h"
#include
diff --git a/src/openrct2/rct2/T6Importer.cpp b/src/openrct2/compatibility/rct2/T6Importer.cpp
similarity index 95%
rename from src/openrct2/rct2/T6Importer.cpp
rename to src/openrct2/compatibility/rct2/T6Importer.cpp
index 178ffb4c0dd3..1d6b4551876b 100644
--- a/src/openrct2/rct2/T6Importer.cpp
+++ b/src/openrct2/compatibility/rct2/T6Importer.cpp
@@ -7,21 +7,21 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
-#include "../Diagnostic.h"
-#include "../TrackImporter.h"
-#include "../core/FileStream.h"
-#include "../core/MemoryStream.h"
-#include "../core/Path.hpp"
-#include "../core/String.hpp"
-#include "../object/ObjectRepository.h"
-#include "../object/RideObject.h"
+#include "../../Diagnostic.h"
+#include "../../TrackImporter.h"
+#include "../../core/FileStream.h"
+#include "../../core/MemoryStream.h"
+#include "../../core/Path.hpp"
+#include "../../core/String.hpp"
+#include "../../object/ObjectRepository.h"
+#include "../../object/RideObject.h"
+#include "../../rct2/RCT2.h"
+#include "../../ride/Ride.h"
+#include "../../ride/RideData.h"
+#include "../../ride/TrackDesign.h"
+#include "../../ride/TrackDesignRepository.h"
+#include "../../sawyer_coding/SawyerChunkReader.h"
#include "../rct12/TD46.h"
-#include "../rct2/RCT2.h"
-#include "../ride/Ride.h"
-#include "../ride/RideData.h"
-#include "../ride/TrackDesign.h"
-#include "../ride/TrackDesignRepository.h"
-#include "../sawyer_coding/SawyerChunkReader.h"
#include
diff --git a/src/openrct2/drawing/Font.cpp b/src/openrct2/drawing/Font.cpp
index 5fa48895dd6d..b631343766ac 100644
--- a/src/openrct2/drawing/Font.cpp
+++ b/src/openrct2/drawing/Font.cpp
@@ -11,11 +11,11 @@
#include "../Diagnostic.h"
#include "../SpriteIds.h"
+#include "../compatibility/rct12/CSChar.h"
#include "../core/EnumUtils.hpp"
#include "../core/UTF8.h"
#include "../core/UnicodeChar.h"
#include "../localisation/LocalisationService.h"
-#include "../rct12/CSChar.h"
#include "Drawing.h"
#include "ScrollingText.h"
#include "TTF.h"
diff --git a/src/openrct2/entity/EntityList.h b/src/openrct2/entity/EntityList.h
index b654e047bf13..efccaf691a7e 100644
--- a/src/openrct2/entity/EntityList.h
+++ b/src/openrct2/entity/EntityList.h
@@ -10,7 +10,7 @@
#pragma once
#include "../GameState.h"
-#include "../rct12/RCT12.h"
+#include "../compatibility/rct12/RCT12.h"
#include "../world/Location.hpp"
#include "EntityBase.h"
#include "EntityRegistry.h"
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index 93abcffda19a..8b9a8de8b043 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -176,10 +176,19 @@
+
+
+
+
+
+
+
+
+
@@ -423,16 +432,7 @@
-
-
-
-
-
-
-
-
-
@@ -790,6 +790,330 @@
+
+ Level4
+ 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
+ 4263;4265;4548;4549;4555
+ USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
+ MultiThreaded
+ true
+ true
+ /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
+ Full
+ true
+ true
+ false
+ Speed
+ NoListing
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Default
+ Default
+ false
+ Default
+ Column
+ false
+ Prompt
+ false
+ Sync
+ false
+ false
+ false
+ NotSet
+ NotSet
+ Precise
+ true
+ openrct2_pch.h
+ false
+ false
+ false
+ Default
+ false
+ Default
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Cdecl
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
+ Use
+ openrct2_pch.h
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
+ false
+ false
+ false
+ true
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ true
+ false
+ false
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
+ false
+ true
+ true
+ true
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ ProgramDatabase
+ false
+ false
+ false
+ InheritWarningLevel
+ true
+ false
+ true
+
+
+ Level4
+ 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
+ 4263;4265;4548;4549;4555
+ USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
+ MultiThreaded
+ true
+ true
+ /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
+ Full
+ true
+ true
+ false
+ Speed
+ NoListing
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Default
+ Default
+ false
+ Default
+ Column
+ false
+ Prompt
+ false
+ Sync
+ false
+ false
+ false
+ NotSet
+ NotSet
+ Precise
+ true
+ openrct2_pch.h
+ false
+ false
+ false
+ Default
+ false
+ Default
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Cdecl
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
+ Use
+ openrct2_pch.h
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
+ false
+ false
+ false
+ true
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ true
+ false
+ false
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
+ false
+ true
+ true
+ true
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ ProgramDatabase
+ false
+ false
+ false
+ InheritWarningLevel
+ true
+ false
+ true
+
+
+ Level4
+ 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
+ 4263;4265;4548;4549;4555
+ USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
+ MultiThreaded
+ true
+ true
+ /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
+ Full
+ true
+ true
+ false
+ Speed
+ NoListing
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Default
+ Default
+ false
+ Default
+ Column
+ false
+ Prompt
+ false
+ Sync
+ false
+ false
+ false
+ NotSet
+ NotSet
+ Precise
+ true
+ openrct2_pch.h
+ false
+ false
+ false
+ Default
+ false
+ Default
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Cdecl
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
+ Use
+ openrct2_pch.h
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
+ false
+ false
+ false
+ true
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ true
+ false
+ false
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
+ false
+ true
+ true
+ true
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ ProgramDatabase
+ false
+ false
+ false
+ InheritWarningLevel
+ true
+ false
+ true
+
+
+ Level4
+ 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
+ 4263;4265;4548;4549;4555
+ USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
+ MultiThreaded
+ true
+ true
+ /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
+ Full
+ true
+ true
+ false
+ Speed
+ NoListing
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Default
+ Default
+ false
+ Default
+ Column
+ false
+ Prompt
+ false
+ Sync
+ false
+ false
+ false
+ NotSet
+ NotSet
+ Precise
+ true
+ openrct2_pch.h
+ false
+ false
+ false
+ Default
+ false
+ Default
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Cdecl
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
+ Use
+ openrct2_pch.h
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
+ false
+ false
+ false
+ true
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ true
+ false
+ false
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
+ false
+ true
+ true
+ true
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ ProgramDatabase
+ false
+ false
+ false
+ InheritWarningLevel
+ true
+ false
+ true
+
Level4
4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
@@ -871,7 +1195,88 @@
false
true
-
+
+ Level4
+ 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
+ 4263;4265;4548;4549;4555
+ USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
+ MultiThreaded
+ true
+ true
+ /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
+ Full
+ true
+ true
+ false
+ Speed
+ NoListing
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Default
+ Default
+ false
+ Default
+ Column
+ false
+ Prompt
+ false
+ Sync
+ false
+ false
+ false
+ NotSet
+ NotSet
+ Precise
+ true
+ openrct2_pch.h
+ false
+ false
+ false
+ Default
+ false
+ Default
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Cdecl
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
+ Use
+ openrct2_pch.h
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
+ false
+ false
+ false
+ true
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ true
+ false
+ false
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
+ false
+ true
+ true
+ true
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ ProgramDatabase
+ false
+ false
+ false
+ InheritWarningLevel
+ true
+ false
+ true
+
+
Level4
4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
4263;4265;4548;4549;4555
@@ -952,7 +1357,7 @@
false
true
-
+
Level4
4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
4263;4265;4548;4549;4555
@@ -1033,7 +1438,250 @@
false
true
-
+
+ Level4
+ 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
+ 4263;4265;4548;4549;4555
+ USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
+ MultiThreaded
+ true
+ true
+ /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
+ Full
+ true
+ true
+ false
+ Speed
+ NoListing
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Default
+ Default
+ false
+ Default
+ Column
+ false
+ Prompt
+ false
+ Sync
+ false
+ false
+ false
+ NotSet
+ NotSet
+ Precise
+ true
+ openrct2_pch.h
+ false
+ false
+ false
+ Default
+ false
+ Default
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Cdecl
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
+ Use
+ openrct2_pch.h
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
+ false
+ false
+ false
+ true
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ true
+ false
+ false
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
+ false
+ true
+ true
+ true
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ ProgramDatabase
+ false
+ false
+ false
+ InheritWarningLevel
+ true
+ false
+ true
+
+
+ Level4
+ 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
+ 4263;4265;4548;4549;4555
+ USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
+ MultiThreaded
+ true
+ true
+ /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
+ Full
+ true
+ true
+ false
+ Speed
+ NoListing
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Default
+ Default
+ false
+ Default
+ Column
+ false
+ Prompt
+ false
+ Sync
+ false
+ false
+ false
+ NotSet
+ NotSet
+ Precise
+ true
+ openrct2_pch.h
+ false
+ false
+ false
+ Default
+ false
+ Default
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Cdecl
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
+ Use
+ openrct2_pch.h
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
+ false
+ false
+ false
+ true
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ true
+ false
+ false
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
+ false
+ true
+ true
+ true
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ ProgramDatabase
+ false
+ false
+ false
+ InheritWarningLevel
+ true
+ false
+ true
+
+
+ Level4
+ 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
+ 4263;4265;4548;4549;4555
+ USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
+ MultiThreaded
+ true
+ true
+ /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
+ Full
+ true
+ true
+ false
+ Speed
+ NoListing
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Default
+ Default
+ false
+ Default
+ Column
+ false
+ Prompt
+ false
+ Sync
+ false
+ false
+ false
+ NotSet
+ NotSet
+ Precise
+ true
+ openrct2_pch.h
+ false
+ false
+ false
+ Default
+ false
+ Default
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Cdecl
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
+ Use
+ openrct2_pch.h
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
+ false
+ false
+ false
+ true
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ true
+ false
+ false
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
+ false
+ true
+ true
+ true
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ ProgramDatabase
+ false
+ false
+ false
+ InheritWarningLevel
+ true
+ false
+ true
+
+
Level4
4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
4263;4265;4548;4549;4555
@@ -1393,15 +2041,7 @@
-
-
-
-
-
-
-
-
@@ -1529,6 +2169,7 @@
+
diff --git a/src/openrct2/object/PeepAnimationsObject.cpp b/src/openrct2/object/PeepAnimationsObject.cpp
index 33fc76b09c54..d2046b7db062 100644
--- a/src/openrct2/object/PeepAnimationsObject.cpp
+++ b/src/openrct2/object/PeepAnimationsObject.cpp
@@ -11,12 +11,12 @@
#include "../Context.h"
#include "../PlatformEnvironment.h"
+#include "../compatibility/rct12/RCT12.h"
#include "../core/EnumMap.hpp"
#include "../core/Guard.hpp"
#include "../core/Json.hpp"
#include "../drawing/Drawing.h"
#include "../peep/PeepAnimations.h"
-#include "../rct12/RCT12.h"
#include "ObjectRepository.h"
namespace OpenRCT2
diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp
index a1385ea6cf61..0308f433f99c 100644
--- a/src/openrct2/object/RideObject.cpp
+++ b/src/openrct2/object/RideObject.cpp
@@ -13,6 +13,7 @@
#include "../OpenRCT2.h"
#include "../audio/Audio.h"
+#include "../compatibility/rct2/DATLimits.h"
#include "../core/EnumMap.hpp"
#include "../core/FlagHolder.hpp"
#include "../core/IStream.hpp"
@@ -23,7 +24,6 @@
#include "../drawing/Drawing.h"
#include "../entity/Yaw.hpp"
#include "../localisation/Language.h"
-#include "../rct2/DATLimits.h"
#include "../rct2/RCT2.h"
#include "../ride/CarEntry.h"
#include "../ride/Ride.h"
diff --git a/src/openrct2/object/StringTable.cpp b/src/openrct2/object/StringTable.cpp
index 5fa2b68e0978..3963318d9e81 100644
--- a/src/openrct2/object/StringTable.cpp
+++ b/src/openrct2/object/StringTable.cpp
@@ -10,13 +10,13 @@
#include "StringTable.h"
#include "../Context.h"
+#include "../compatibility/rct12/CSStringConverter.h"
#include "../core/EnumUtils.hpp"
#include "../core/Guard.hpp"
#include "../core/IStream.hpp"
#include "../core/Json.hpp"
#include "../core/String.hpp"
#include "../localisation/LocalisationService.h"
-#include "../rct12/CSStringConverter.h"
#include "Object.h"
namespace OpenRCT2
diff --git a/src/openrct2/park/Legacy.cpp b/src/openrct2/park/Legacy.cpp
index d3903496de6e..9ba05727b5ab 100644
--- a/src/openrct2/park/Legacy.cpp
+++ b/src/openrct2/park/Legacy.cpp
@@ -11,6 +11,7 @@
#include "../Context.h"
#include "../Diagnostic.h"
+#include "../compatibility/rct12/RCT12.h"
#include "../entity/EntityList.h"
#include "../entity/Guest.h"
#include "../entity/Staff.h"
@@ -18,7 +19,6 @@
#include "../object/ObjectList.h"
#include "../object/ObjectManager.h"
#include "../object/PeepAnimationsObject.h"
-#include "../rct12/RCT12.h"
#include "../rct2/RCT2.h"
#include "../ride/Ride.h"
#include "../ride/Track.h"
diff --git a/src/openrct2/rct2/RCT2.h b/src/openrct2/rct2/RCT2.h
index 1be847398afa..87cd6e2b4cf9 100644
--- a/src/openrct2/rct2/RCT2.h
+++ b/src/openrct2/rct2/RCT2.h
@@ -9,13 +9,13 @@
#pragma once
+#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/rct2/Limits.h"
#include "../core/FileSystem.hpp"
#include "../core/FixedPoint.hpp"
-#include "../rct12/RCT12.h"
#include "../ride/Angles.h"
#include "../ride/RideRatings.h"
#include "../world/ParkData.h"
-#include "Limits.h"
#include
diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp
index b9b779cbf2d5..dc1f44a23812 100644
--- a/src/openrct2/ride/CableLift.cpp
+++ b/src/openrct2/ride/CableLift.cpp
@@ -10,8 +10,8 @@
#include "CableLift.h"
#include "../audio/Audio.h"
+#include "../compatibility/rct12/RCT12.h"
#include "../entity/EntityList.h"
-#include "../rct12/RCT12.h"
#include "../util/Util.h"
#include "../world/Map.h"
#include "../world/tile_element/TileElement.h"
diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h
index 6773e881a9b5..1d9ea0bfeed6 100644
--- a/src/openrct2/ride/Ride.h
+++ b/src/openrct2/ride/Ride.h
@@ -10,10 +10,10 @@
#pragma once
#include "../Limits.h"
+#include "../compatibility/rct2/Limits.h"
#include "../core/BitSet.hpp"
#include "../core/FixedPoint.hpp"
#include "../core/FlagHolder.hpp"
-#include "../rct2/Limits.h"
#include "RideColour.h"
#include "RideEntry.h"
#include "RideRatings.h"
diff --git a/src/openrct2/ride/RideEntry.h b/src/openrct2/ride/RideEntry.h
index 980cafb76dc9..07e3b9e020c0 100644
--- a/src/openrct2/ride/RideEntry.h
+++ b/src/openrct2/ride/RideEntry.h
@@ -9,7 +9,7 @@
#pragma once
-#include "../rct2/DATLimits.h"
+#include "../compatibility/rct2/DATLimits.h"
#include "CarEntry.h"
#include "RideColour.h"
#include "RideTypes.h"
diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp
index 5f38c61f9f7a..c81a2548b6aa 100644
--- a/src/openrct2/ride/Vehicle.cpp
+++ b/src/openrct2/ride/Vehicle.cpp
@@ -16,6 +16,7 @@
#include "../OpenRCT2.h"
#include "../actions/RideSetStatusAction.h"
#include "../audio/Audio.h"
+#include "../compatibility/rct12/RCT12.h"
#include "../config/Config.h"
#include "../core/EnumUtils.hpp"
#include "../core/FixedPoint.hpp"
@@ -33,7 +34,6 @@
#include "../object/SmallSceneryEntry.h"
#include "../paint/vehicle/Vehicle.MiniGolf.h"
#include "../profiling/Profiling.h"
-#include "../rct12/RCT12.h"
#include "../scenario/Scenario.h"
#include "../scripting/HookEngine.h"
#include "../scripting/ScriptEngine.h"
diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp
index c60496772c67..20c529c60728 100644
--- a/src/openrct2/scenario/Scenario.cpp
+++ b/src/openrct2/scenario/Scenario.cpp
@@ -21,6 +21,7 @@
#include "../actions/ResultWithMessage.h"
#include "../audio/Audio.h"
#include "../compatibility/rct1/RCT1.h"
+#include "../compatibility/rct12/RCT12.h"
#include "../config/Config.h"
#include "../core/BitSet.hpp"
#include "../core/EnumUtils.hpp"
@@ -47,7 +48,6 @@
#include "../object/WaterEntry.h"
#include "../platform/Platform.h"
#include "../profiling/Profiling.h"
-#include "../rct12/RCT12.h"
#include "../ride/Ride.h"
#include "../ride/RideManager.hpp"
#include "../ride/Track.h"
diff --git a/src/openrct2/scenario/ScenarioRepository.cpp b/src/openrct2/scenario/ScenarioRepository.cpp
index 5d6ca298c187..1505a94b35b8 100644
--- a/src/openrct2/scenario/ScenarioRepository.cpp
+++ b/src/openrct2/scenario/ScenarioRepository.cpp
@@ -14,6 +14,8 @@
#include "../Game.h"
#include "../ParkImporter.h"
#include "../PlatformEnvironment.h"
+#include "../compatibility/rct12/CSStringConverter.h"
+#include "../compatibility/rct12/RCT12.h"
#include "../config/Config.h"
#include "../core/Console.hpp"
#include "../core/File.h"
@@ -26,8 +28,6 @@
#include "../localisation/LocalisationService.h"
#include "../platform/Crash.h"
#include "../platform/Platform.h"
-#include "../rct12/CSStringConverter.h"
-#include "../rct12/RCT12.h"
#include "../rct2/RCT2.h"
#include "../sawyer_coding/SawyerChunkReader.h"
#include "Scenario.h"
diff --git a/src/openrct2/scripting/bindings/entity/ScStaff.cpp b/src/openrct2/scripting/bindings/entity/ScStaff.cpp
index dc8f811f8612..dcfbf4d4abe9 100644
--- a/src/openrct2/scripting/bindings/entity/ScStaff.cpp
+++ b/src/openrct2/scripting/bindings/entity/ScStaff.cpp
@@ -11,12 +11,12 @@
#include "ScStaff.hpp"
+ #include "../../../compatibility/rct12/RCT12.h"
#include "../../../entity/PatrolArea.h"
#include "../../../entity/Staff.h"
#include "../../../object/ObjectManager.h"
#include "../../../object/PeepAnimationsObject.h"
#include "../../../peep/PeepAnimations.h"
- #include "../../../rct12/RCT12.h"
#include "../../../world/Map.h"
namespace OpenRCT2::Scripting
From ae6595bf20238cda4195c3a24e52c73ed9639eff Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 18:08:33 -0300
Subject: [PATCH 04/26] Delete /rct1 folder
---
src/openrct2/libopenrct2.vcxproj | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index 8b9a8de8b043..a2bf9e768d90 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -2170,7 +2170,6 @@
-
From e36afc7f5dbdddc45ae492aeec7e32471d958051 Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 18:29:44 -0300
Subject: [PATCH 05/26] Move ScenarioPatcher.h
---
src/openrct2/{ => compatibility}/rct12/ScenarioPatcher.h | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename src/openrct2/{ => compatibility}/rct12/ScenarioPatcher.h (100%)
diff --git a/src/openrct2/rct12/ScenarioPatcher.h b/src/openrct2/compatibility/rct12/ScenarioPatcher.h
similarity index 100%
rename from src/openrct2/rct12/ScenarioPatcher.h
rename to src/openrct2/compatibility/rct12/ScenarioPatcher.h
From a379c69e525a5110ebd54f0ab5247853e4f7b6eb Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 18:30:17 -0300
Subject: [PATCH 06/26] Delete /rct12 directory
---
src/openrct2/libopenrct2.vcxproj | 3 ---
1 file changed, 3 deletions(-)
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index a2bf9e768d90..76f92c6a9ccd 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -2168,8 +2168,5 @@
{c453da76-44b3-4ac8-aaa2-2b64a76993a5}
-
-
-
From 6d9653ca90b297bb6043c7976230f5284cc7098b Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 18:34:36 -0300
Subject: [PATCH 07/26] Solve missing Csg.h errors
---
src/openrct2/config/Config.cpp | 2 +-
src/openrct2/drawing/Drawing.Sprite.cpp | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp
index 30097e931fb2..b9d3d3c51e09 100644
--- a/src/openrct2/config/Config.cpp
+++ b/src/openrct2/config/Config.cpp
@@ -9,6 +9,7 @@
#include "Config.h"
+#include "../compatibility/rct1/Csg.h"
#include "../Context.h"
#include "../Date.h"
#include "../Diagnostic.h"
@@ -29,7 +30,6 @@
#include "../network/Network.h"
#include "../paint/VirtualFloor.h"
#include "../platform/Platform.h"
-#include "../rct1/Csg.h"
#include "../ride/Ride.h"
#include "../scenario/Scenario.h"
#include "../ui/UiContext.h"
diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp
index c4df1000ac52..fab41d2e0f93 100644
--- a/src/openrct2/drawing/Drawing.Sprite.cpp
+++ b/src/openrct2/drawing/Drawing.Sprite.cpp
@@ -9,6 +9,7 @@
#include "Drawing.h"
+#include "../compatibility/rct1/Csg.h"
#include "../Context.h"
#include "../Diagnostic.h"
#include "../OpenRCT2.h"
@@ -20,7 +21,6 @@
#include "../core/MemoryStream.h"
#include "../core/Path.hpp"
#include "../platform/Platform.h"
-#include "../rct1/Csg.h"
#include "../ui/UiContext.h"
#include "ScrollingText.h"
From 9929998a5752761191ca264123e7c11b1b5526e5 Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 18:34:36 -0300
Subject: [PATCH 08/26] Solve missing Csg.h errors
---
src/openrct2/config/Config.cpp | 2 +-
src/openrct2/drawing/Drawing.Sprite.cpp | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp
index 30097e931fb2..3469422ab759 100644
--- a/src/openrct2/config/Config.cpp
+++ b/src/openrct2/config/Config.cpp
@@ -14,6 +14,7 @@
#include "../Diagnostic.h"
#include "../OpenRCT2.h"
#include "../PlatformEnvironment.h"
+#include "../compatibility/rct1/Csg.h"
#include "../core/Console.hpp"
#include "../core/EnumUtils.hpp"
#include "../core/File.h"
@@ -29,7 +30,6 @@
#include "../network/Network.h"
#include "../paint/VirtualFloor.h"
#include "../platform/Platform.h"
-#include "../rct1/Csg.h"
#include "../ride/Ride.h"
#include "../scenario/Scenario.h"
#include "../ui/UiContext.h"
diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp
index c4df1000ac52..435387148e8f 100644
--- a/src/openrct2/drawing/Drawing.Sprite.cpp
+++ b/src/openrct2/drawing/Drawing.Sprite.cpp
@@ -14,13 +14,13 @@
#include "../OpenRCT2.h"
#include "../PlatformEnvironment.h"
#include "../SpriteIds.h"
+#include "../compatibility/rct1/Csg.h"
#include "../config/Config.h"
#include "../core/FileStream.h"
#include "../core/Guard.hpp"
#include "../core/MemoryStream.h"
#include "../core/Path.hpp"
#include "../platform/Platform.h"
-#include "../rct1/Csg.h"
#include "../ui/UiContext.h"
#include "ScrollingText.h"
From 65be89c4b9a31b73ca9eeef7cf83f66bc4268eb9 Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 18:39:25 -0300
Subject: [PATCH 09/26] Fix missing includes again...
---
src/openrct2/config/Config.cpp | 1 -
src/openrct2/drawing/Drawing.Sprite.cpp | 1 -
2 files changed, 2 deletions(-)
diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp
index 0f32263afef5..3469422ab759 100644
--- a/src/openrct2/config/Config.cpp
+++ b/src/openrct2/config/Config.cpp
@@ -9,7 +9,6 @@
#include "Config.h"
-#include "../compatibility/rct1/Csg.h"
#include "../Context.h"
#include "../Date.h"
#include "../Diagnostic.h"
diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp
index 39fbb5991339..435387148e8f 100644
--- a/src/openrct2/drawing/Drawing.Sprite.cpp
+++ b/src/openrct2/drawing/Drawing.Sprite.cpp
@@ -9,7 +9,6 @@
#include "Drawing.h"
-#include "../compatibility/rct1/Csg.h"
#include "../Context.h"
#include "../Diagnostic.h"
#include "../OpenRCT2.h"
From a45b17a5a363353ffd7e5dce0d83bf9cea2c1cf1 Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 18:53:41 -0300
Subject: [PATCH 10/26] Fix missing ScenarioPatcher.h errors
---
src/openrct2/compatibility/rct1/S4Importer.cpp | 2 +-
src/openrct2/compatibility/rct12/ScenarioPatcher.cpp | 2 +-
src/openrct2/compatibility/rct2/S6Importer.cpp | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/openrct2/compatibility/rct1/S4Importer.cpp b/src/openrct2/compatibility/rct1/S4Importer.cpp
index 6a5753e3fffa..5d439762e200 100644
--- a/src/openrct2/compatibility/rct1/S4Importer.cpp
+++ b/src/openrct2/compatibility/rct1/S4Importer.cpp
@@ -45,7 +45,6 @@
#include "../../object/ScenarioMetaObject.h"
#include "../../park/Legacy.h"
#include "../../peep/RideUseSystem.h"
-#include "../../rct12/ScenarioPatcher.h"
#include "../../ride/Ride.h"
#include "../../ride/RideData.h"
#include "../../ride/RideManager.hpp"
@@ -75,6 +74,7 @@
#include "../../world/tile_element/WallElement.h"
#include "../rct12/CSStringConverter.h"
#include "../rct12/EntryList.h"
+#include "../rct12/ScenarioPatcher.h"
#include "RCT1.h"
#include "Tables.h"
diff --git a/src/openrct2/compatibility/rct12/ScenarioPatcher.cpp b/src/openrct2/compatibility/rct12/ScenarioPatcher.cpp
index e715cf76315c..91ae3082e116 100644
--- a/src/openrct2/compatibility/rct12/ScenarioPatcher.cpp
+++ b/src/openrct2/compatibility/rct12/ScenarioPatcher.cpp
@@ -7,7 +7,7 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
-#include "../../rct12/ScenarioPatcher.h"
+#include "../rct12/ScenarioPatcher.h"
#include "../../Context.h"
#include "../../Game.h"
diff --git a/src/openrct2/compatibility/rct2/S6Importer.cpp b/src/openrct2/compatibility/rct2/S6Importer.cpp
index 77e316cf2c7d..78c2aa48fbd2 100644
--- a/src/openrct2/compatibility/rct2/S6Importer.cpp
+++ b/src/openrct2/compatibility/rct2/S6Importer.cpp
@@ -32,7 +32,6 @@
#include "../../park/Legacy.h"
#include "../../park/ParkPreview.h"
#include "../../peep/RideUseSystem.h"
-#include "../../rct12/ScenarioPatcher.h"
#include "../../rct2/RCT2.h"
#include "../../ride/Ride.h"
#include "../../ride/RideData.h"
@@ -60,6 +59,7 @@
#include "../rct12/CSStringConverter.h"
#include "../rct12/EntryList.h"
#include "../rct12/RCT12.h"
+#include "../rct12/ScenarioPatcher.h"
#include
From e3ca1ead93f1c0294d186ddb9b1b64bff101c794 Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 19:01:09 -0300
Subject: [PATCH 11/26] Update include path used by ScenarioPatcher.h
---
src/openrct2/compatibility/rct12/ScenarioPatcher.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/openrct2/compatibility/rct12/ScenarioPatcher.h b/src/openrct2/compatibility/rct12/ScenarioPatcher.h
index b613824e3e4b..089d2fef2782 100644
--- a/src/openrct2/compatibility/rct12/ScenarioPatcher.h
+++ b/src/openrct2/compatibility/rct12/ScenarioPatcher.h
@@ -9,7 +9,7 @@
#pragma once
-#include "../core/StringTypes.h"
+#include "../../core/StringTypes.h"
namespace OpenRCT2::RCT12
{
From 41347d60e3a2fa44e3784c529d1d8b9ac37f641d Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 19:13:01 -0300
Subject: [PATCH 12/26] Fix openrct2-ui project include errors
---
src/openrct2-ui/WindowManager.cpp | 2 +-
src/openrct2-ui/interface/FileBrowser.cpp | 2 +-
src/openrct2-ui/windows/LoadSave.cpp | 1 -
src/openrct2-ui/windows/Options.cpp | 2 +-
4 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/openrct2-ui/WindowManager.cpp b/src/openrct2-ui/WindowManager.cpp
index 2ba5bece6752..8d4ff668323c 100644
--- a/src/openrct2-ui/WindowManager.cpp
+++ b/src/openrct2-ui/WindowManager.cpp
@@ -25,13 +25,13 @@
#include
#include
#include
+#include
#include
#include
#include
#include
#include
#include
-#include
#include
#include
#include
diff --git a/src/openrct2-ui/interface/FileBrowser.cpp b/src/openrct2-ui/interface/FileBrowser.cpp
index bff761d54e4d..865a81dfece7 100644
--- a/src/openrct2-ui/interface/FileBrowser.cpp
+++ b/src/openrct2-ui/interface/FileBrowser.cpp
@@ -16,6 +16,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -24,7 +25,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/src/openrct2-ui/windows/LoadSave.cpp b/src/openrct2-ui/windows/LoadSave.cpp
index 4dbad2392e2e..fbf8143c2357 100644
--- a/src/openrct2-ui/windows/LoadSave.cpp
+++ b/src/openrct2-ui/windows/LoadSave.cpp
@@ -41,7 +41,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp
index 8ff2845c75da..25b3421aa34f 100644
--- a/src/openrct2-ui/windows/Options.cpp
+++ b/src/openrct2-ui/windows/Options.cpp
@@ -26,6 +26,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -40,7 +41,6 @@
#include
#include
#include
-#include
#include
#include
#include
From bef1c60a82975e9071f8a8fb2e77647fd1269339 Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 19:24:54 -0300
Subject: [PATCH 13/26] Fix include errors in tests project
---
test/tests/LocalisationTest.cpp | 2 +-
test/tests/ScenarioPatcherTests.cpp | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/test/tests/LocalisationTest.cpp b/test/tests/LocalisationTest.cpp
index 5e0fa06de5a7..011527c9db8b 100644
--- a/test/tests/LocalisationTest.cpp
+++ b/test/tests/LocalisationTest.cpp
@@ -9,7 +9,7 @@
#include "helpers/StringHelpers.hpp"
#include "openrct2/localisation/Language.h"
-#include "openrct2/rct12/CSStringConverter.h"
+#include "openrct2/compatibility/rct12/CSStringConverter.h"
#include
diff --git a/test/tests/ScenarioPatcherTests.cpp b/test/tests/ScenarioPatcherTests.cpp
index 9f0d6ffe8018..ab6c984c53fd 100644
--- a/test/tests/ScenarioPatcherTests.cpp
+++ b/test/tests/ScenarioPatcherTests.cpp
@@ -13,10 +13,10 @@
#include
#include
#include
+#include
#include
#include
#include
-#include
/* Test that all JSONs are with the expected formatting, otherwise the fetcher will abort
NOTE: This will *not* test that it actually applies the patch, due to the scenarios
From 33612394838ec2b093c0014e2f3bbc214e314f28 Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 19:24:54 -0300
Subject: [PATCH 14/26] Fix include errors in tests project
---
test/tests/LocalisationTest.cpp | 2 +-
test/tests/ScenarioPatcherTests.cpp | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/test/tests/LocalisationTest.cpp b/test/tests/LocalisationTest.cpp
index 5e0fa06de5a7..272ccd648a63 100644
--- a/test/tests/LocalisationTest.cpp
+++ b/test/tests/LocalisationTest.cpp
@@ -8,8 +8,8 @@
*****************************************************************************/
#include "helpers/StringHelpers.hpp"
+#include "openrct2/compatibility/rct12/CSStringConverter.h"
#include "openrct2/localisation/Language.h"
-#include "openrct2/rct12/CSStringConverter.h"
#include
diff --git a/test/tests/ScenarioPatcherTests.cpp b/test/tests/ScenarioPatcherTests.cpp
index 9f0d6ffe8018..ab6c984c53fd 100644
--- a/test/tests/ScenarioPatcherTests.cpp
+++ b/test/tests/ScenarioPatcherTests.cpp
@@ -13,10 +13,10 @@
#include
#include
#include
+#include
#include
#include
#include
-#include
/* Test that all JSONs are with the expected formatting, otherwise the fetcher will abort
NOTE: This will *not* test that it actually applies the patch, due to the scenarios
From f74fd747fcae7c1e6da8516f72d5766d29dee8cb Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 23:09:51 -0300
Subject: [PATCH 15/26] Rename /rct12 to /shared
---
src/openrct2/Game.cpp | 2 +-
src/openrct2/compatibility/rct1/Limits.h | 2 +-
src/openrct2/compatibility/rct1/RCT1.h | 2 +-
.../compatibility/rct1/S4Importer.cpp | 6 +++---
.../compatibility/rct1/T4Importer.cpp | 2 +-
src/openrct2/compatibility/rct2/Limits.h | 2 +-
.../compatibility/rct2/S6Importer.cpp | 8 ++++----
.../compatibility/rct2/T6Exporter.cpp | 2 +-
.../compatibility/rct2/T6Importer.cpp | 2 +-
.../compatibility/{rct12 => shared}/CSChar.h | 0
.../{rct12 => shared}/CSStringConverter.cpp | 0
.../{rct12 => shared}/CSStringConverter.h | 0
.../{rct12 => shared}/EntryList.h | 0
.../compatibility/{rct12 => shared}/Limits.h | 0
.../compatibility/{rct12 => shared}/RCT12.cpp | 0
.../compatibility/{rct12 => shared}/RCT12.h | 0
.../{rct12 => shared}/ScenarioPatcher.cpp | 2 +-
.../{rct12 => shared}/ScenarioPatcher.h | 0
.../compatibility/{rct12 => shared}/TD46.cpp | 0
.../compatibility/{rct12 => shared}/TD46.h | 0
src/openrct2/drawing/Font.cpp | 2 +-
src/openrct2/entity/EntityList.h | 2 +-
src/openrct2/libopenrct2.vcxproj | 20 +++++++++----------
src/openrct2/object/PeepAnimationsObject.cpp | 2 +-
src/openrct2/object/StringTable.cpp | 2 +-
src/openrct2/park/Legacy.cpp | 2 +-
src/openrct2/rct2/RCT2.h | 2 +-
src/openrct2/ride/CableLift.cpp | 2 +-
src/openrct2/ride/Vehicle.cpp | 2 +-
src/openrct2/scenario/Scenario.cpp | 2 +-
src/openrct2/scenario/ScenarioRepository.cpp | 4 ++--
.../scripting/bindings/entity/ScStaff.cpp | 2 +-
test/tests/LocalisationTest.cpp | 2 +-
test/tests/ScenarioPatcherTests.cpp | 2 +-
34 files changed, 39 insertions(+), 39 deletions(-)
rename src/openrct2/compatibility/{rct12 => shared}/CSChar.h (100%)
rename src/openrct2/compatibility/{rct12 => shared}/CSStringConverter.cpp (100%)
rename src/openrct2/compatibility/{rct12 => shared}/CSStringConverter.h (100%)
rename src/openrct2/compatibility/{rct12 => shared}/EntryList.h (100%)
rename src/openrct2/compatibility/{rct12 => shared}/Limits.h (100%)
rename src/openrct2/compatibility/{rct12 => shared}/RCT12.cpp (100%)
rename src/openrct2/compatibility/{rct12 => shared}/RCT12.h (100%)
rename src/openrct2/compatibility/{rct12 => shared}/ScenarioPatcher.cpp (99%)
rename src/openrct2/compatibility/{rct12 => shared}/ScenarioPatcher.h (100%)
rename src/openrct2/compatibility/{rct12 => shared}/TD46.cpp (100%)
rename src/openrct2/compatibility/{rct12 => shared}/TD46.h (100%)
diff --git a/src/openrct2/Game.cpp b/src/openrct2/Game.cpp
index c56cbfe27e37..da18f08e0e3c 100644
--- a/src/openrct2/Game.cpp
+++ b/src/openrct2/Game.cpp
@@ -24,7 +24,7 @@
#include "actions/GameSetSpeedAction.h"
#include "actions/LoadOrQuitAction.h"
#include "audio/Audio.h"
-#include "compatibility/rct12/CSStringConverter.h"
+#include "compatibility/shared/CSStringConverter.h"
#include "config/Config.h"
#include "core/Console.hpp"
#include "core/File.h"
diff --git a/src/openrct2/compatibility/rct1/Limits.h b/src/openrct2/compatibility/rct1/Limits.h
index 5afb75c6180a..be449f86efcc 100644
--- a/src/openrct2/compatibility/rct1/Limits.h
+++ b/src/openrct2/compatibility/rct1/Limits.h
@@ -8,7 +8,7 @@
*****************************************************************************/
#pragma once
-#include "../rct12/Limits.h"
+#include "../shared/Limits.h"
namespace OpenRCT2::RCT1::Limits
{
diff --git a/src/openrct2/compatibility/rct1/RCT1.h b/src/openrct2/compatibility/rct1/RCT1.h
index b95f3211f05f..973179b45d83 100644
--- a/src/openrct2/compatibility/rct1/RCT1.h
+++ b/src/openrct2/compatibility/rct1/RCT1.h
@@ -13,7 +13,7 @@
#include "../../ride/Angles.h"
#include "../../ride/RideRatings.h"
#include "../../world/ParkData.h"
-#include "../rct12/RCT12.h"
+#include "../shared/RCT12.h"
#include "Limits.h"
enum class MechanicStatus : uint8_t;
diff --git a/src/openrct2/compatibility/rct1/S4Importer.cpp b/src/openrct2/compatibility/rct1/S4Importer.cpp
index 5d439762e200..b6c1fb42136b 100644
--- a/src/openrct2/compatibility/rct1/S4Importer.cpp
+++ b/src/openrct2/compatibility/rct1/S4Importer.cpp
@@ -72,9 +72,9 @@
#include "../../world/tile_element/TileElement.h"
#include "../../world/tile_element/TrackElement.h"
#include "../../world/tile_element/WallElement.h"
-#include "../rct12/CSStringConverter.h"
-#include "../rct12/EntryList.h"
-#include "../rct12/ScenarioPatcher.h"
+#include "../shared/CSStringConverter.h"
+#include "../shared/EntryList.h"
+#include "../shared/ScenarioPatcher.h"
#include "RCT1.h"
#include "Tables.h"
diff --git a/src/openrct2/compatibility/rct1/T4Importer.cpp b/src/openrct2/compatibility/rct1/T4Importer.cpp
index 5824515031a9..7a576920c435 100644
--- a/src/openrct2/compatibility/rct1/T4Importer.cpp
+++ b/src/openrct2/compatibility/rct1/T4Importer.cpp
@@ -18,7 +18,7 @@
#include "../../ride/TrackDesign.h"
#include "../../ride/TrackDesignRepository.h"
#include "../../sawyer_coding/SawyerChunkReader.h"
-#include "../rct12/TD46.h"
+#include "../shared/TD46.h"
#include "RCT1.h"
#include "Tables.h"
diff --git a/src/openrct2/compatibility/rct2/Limits.h b/src/openrct2/compatibility/rct2/Limits.h
index f49e32c33b9b..c0706e67095b 100644
--- a/src/openrct2/compatibility/rct2/Limits.h
+++ b/src/openrct2/compatibility/rct2/Limits.h
@@ -8,7 +8,7 @@
*****************************************************************************/
#pragma once
-#include "../rct12/Limits.h"
+#include "../shared/Limits.h"
namespace OpenRCT2::RCT2::Limits
{
diff --git a/src/openrct2/compatibility/rct2/S6Importer.cpp b/src/openrct2/compatibility/rct2/S6Importer.cpp
index 78c2aa48fbd2..e8af345d3844 100644
--- a/src/openrct2/compatibility/rct2/S6Importer.cpp
+++ b/src/openrct2/compatibility/rct2/S6Importer.cpp
@@ -56,10 +56,10 @@
#include "../../world/tile_element/TileElement.h"
#include "../../world/tile_element/TrackElement.h"
#include "../../world/tile_element/WallElement.h"
-#include "../rct12/CSStringConverter.h"
-#include "../rct12/EntryList.h"
-#include "../rct12/RCT12.h"
-#include "../rct12/ScenarioPatcher.h"
+#include "../shared/CSStringConverter.h"
+#include "../shared/EntryList.h"
+#include "../shared/RCT12.h"
+#include "../shared/ScenarioPatcher.h"
#include
diff --git a/src/openrct2/compatibility/rct2/T6Exporter.cpp b/src/openrct2/compatibility/rct2/T6Exporter.cpp
index 0208bfbc0a96..40d36e310fdd 100644
--- a/src/openrct2/compatibility/rct2/T6Exporter.cpp
+++ b/src/openrct2/compatibility/rct2/T6Exporter.cpp
@@ -25,7 +25,7 @@
#include "../../ride/TrackDesignRepository.h"
#include "../../sawyer_coding/SawyerChunkWriter.h"
#include "../../windows/Intent.h"
-#include "../rct12/TD46.h"
+#include "../shared/TD46.h"
#include
diff --git a/src/openrct2/compatibility/rct2/T6Importer.cpp b/src/openrct2/compatibility/rct2/T6Importer.cpp
index 1d6b4551876b..3a172a7d8fb1 100644
--- a/src/openrct2/compatibility/rct2/T6Importer.cpp
+++ b/src/openrct2/compatibility/rct2/T6Importer.cpp
@@ -21,7 +21,7 @@
#include "../../ride/TrackDesign.h"
#include "../../ride/TrackDesignRepository.h"
#include "../../sawyer_coding/SawyerChunkReader.h"
-#include "../rct12/TD46.h"
+#include "../shared/TD46.h"
#include
diff --git a/src/openrct2/compatibility/rct12/CSChar.h b/src/openrct2/compatibility/shared/CSChar.h
similarity index 100%
rename from src/openrct2/compatibility/rct12/CSChar.h
rename to src/openrct2/compatibility/shared/CSChar.h
diff --git a/src/openrct2/compatibility/rct12/CSStringConverter.cpp b/src/openrct2/compatibility/shared/CSStringConverter.cpp
similarity index 100%
rename from src/openrct2/compatibility/rct12/CSStringConverter.cpp
rename to src/openrct2/compatibility/shared/CSStringConverter.cpp
diff --git a/src/openrct2/compatibility/rct12/CSStringConverter.h b/src/openrct2/compatibility/shared/CSStringConverter.h
similarity index 100%
rename from src/openrct2/compatibility/rct12/CSStringConverter.h
rename to src/openrct2/compatibility/shared/CSStringConverter.h
diff --git a/src/openrct2/compatibility/rct12/EntryList.h b/src/openrct2/compatibility/shared/EntryList.h
similarity index 100%
rename from src/openrct2/compatibility/rct12/EntryList.h
rename to src/openrct2/compatibility/shared/EntryList.h
diff --git a/src/openrct2/compatibility/rct12/Limits.h b/src/openrct2/compatibility/shared/Limits.h
similarity index 100%
rename from src/openrct2/compatibility/rct12/Limits.h
rename to src/openrct2/compatibility/shared/Limits.h
diff --git a/src/openrct2/compatibility/rct12/RCT12.cpp b/src/openrct2/compatibility/shared/RCT12.cpp
similarity index 100%
rename from src/openrct2/compatibility/rct12/RCT12.cpp
rename to src/openrct2/compatibility/shared/RCT12.cpp
diff --git a/src/openrct2/compatibility/rct12/RCT12.h b/src/openrct2/compatibility/shared/RCT12.h
similarity index 100%
rename from src/openrct2/compatibility/rct12/RCT12.h
rename to src/openrct2/compatibility/shared/RCT12.h
diff --git a/src/openrct2/compatibility/rct12/ScenarioPatcher.cpp b/src/openrct2/compatibility/shared/ScenarioPatcher.cpp
similarity index 99%
rename from src/openrct2/compatibility/rct12/ScenarioPatcher.cpp
rename to src/openrct2/compatibility/shared/ScenarioPatcher.cpp
index 91ae3082e116..762308c1daf5 100644
--- a/src/openrct2/compatibility/rct12/ScenarioPatcher.cpp
+++ b/src/openrct2/compatibility/shared/ScenarioPatcher.cpp
@@ -7,7 +7,7 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
-#include "../rct12/ScenarioPatcher.h"
+#include "../shared/ScenarioPatcher.h"
#include "../../Context.h"
#include "../../Game.h"
diff --git a/src/openrct2/compatibility/rct12/ScenarioPatcher.h b/src/openrct2/compatibility/shared/ScenarioPatcher.h
similarity index 100%
rename from src/openrct2/compatibility/rct12/ScenarioPatcher.h
rename to src/openrct2/compatibility/shared/ScenarioPatcher.h
diff --git a/src/openrct2/compatibility/rct12/TD46.cpp b/src/openrct2/compatibility/shared/TD46.cpp
similarity index 100%
rename from src/openrct2/compatibility/rct12/TD46.cpp
rename to src/openrct2/compatibility/shared/TD46.cpp
diff --git a/src/openrct2/compatibility/rct12/TD46.h b/src/openrct2/compatibility/shared/TD46.h
similarity index 100%
rename from src/openrct2/compatibility/rct12/TD46.h
rename to src/openrct2/compatibility/shared/TD46.h
diff --git a/src/openrct2/drawing/Font.cpp b/src/openrct2/drawing/Font.cpp
index b631343766ac..9f7b46eab1a7 100644
--- a/src/openrct2/drawing/Font.cpp
+++ b/src/openrct2/drawing/Font.cpp
@@ -11,7 +11,7 @@
#include "../Diagnostic.h"
#include "../SpriteIds.h"
-#include "../compatibility/rct12/CSChar.h"
+#include "../compatibility/shared/CSChar.h"
#include "../core/EnumUtils.hpp"
#include "../core/UTF8.h"
#include "../core/UnicodeChar.h"
diff --git a/src/openrct2/entity/EntityList.h b/src/openrct2/entity/EntityList.h
index efccaf691a7e..edfa5bdbc2ed 100644
--- a/src/openrct2/entity/EntityList.h
+++ b/src/openrct2/entity/EntityList.h
@@ -10,7 +10,7 @@
#pragma once
#include "../GameState.h"
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/RCT12.h"
#include "../world/Location.hpp"
#include "EntityBase.h"
#include "EntityRegistry.h"
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index 76f92c6a9ccd..51df65b052c9 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -176,12 +176,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -790,7 +790,7 @@
-
+
Level4
4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
4263;4265;4548;4549;4555
@@ -871,7 +871,7 @@
false
true
-
+
Level4
4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
4263;4265;4548;4549;4555
@@ -952,7 +952,7 @@
false
true
-
+
Level4
4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
4263;4265;4548;4549;4555
@@ -1033,7 +1033,7 @@
false
true
-
+
Level4
4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
4263;4265;4548;4549;4555
diff --git a/src/openrct2/object/PeepAnimationsObject.cpp b/src/openrct2/object/PeepAnimationsObject.cpp
index d2046b7db062..5b49f6abaa2d 100644
--- a/src/openrct2/object/PeepAnimationsObject.cpp
+++ b/src/openrct2/object/PeepAnimationsObject.cpp
@@ -11,7 +11,7 @@
#include "../Context.h"
#include "../PlatformEnvironment.h"
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/RCT12.h"
#include "../core/EnumMap.hpp"
#include "../core/Guard.hpp"
#include "../core/Json.hpp"
diff --git a/src/openrct2/object/StringTable.cpp b/src/openrct2/object/StringTable.cpp
index 3963318d9e81..517c354dbd18 100644
--- a/src/openrct2/object/StringTable.cpp
+++ b/src/openrct2/object/StringTable.cpp
@@ -10,7 +10,7 @@
#include "StringTable.h"
#include "../Context.h"
-#include "../compatibility/rct12/CSStringConverter.h"
+#include "../compatibility/shared/CSStringConverter.h"
#include "../core/EnumUtils.hpp"
#include "../core/Guard.hpp"
#include "../core/IStream.hpp"
diff --git a/src/openrct2/park/Legacy.cpp b/src/openrct2/park/Legacy.cpp
index 9ba05727b5ab..f104fea58624 100644
--- a/src/openrct2/park/Legacy.cpp
+++ b/src/openrct2/park/Legacy.cpp
@@ -11,7 +11,7 @@
#include "../Context.h"
#include "../Diagnostic.h"
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/RCT12.h"
#include "../entity/EntityList.h"
#include "../entity/Guest.h"
#include "../entity/Staff.h"
diff --git a/src/openrct2/rct2/RCT2.h b/src/openrct2/rct2/RCT2.h
index 87cd6e2b4cf9..3daead6eaa7d 100644
--- a/src/openrct2/rct2/RCT2.h
+++ b/src/openrct2/rct2/RCT2.h
@@ -9,7 +9,7 @@
#pragma once
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/RCT12.h"
#include "../compatibility/rct2/Limits.h"
#include "../core/FileSystem.hpp"
#include "../core/FixedPoint.hpp"
diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp
index dc1f44a23812..51d8a85037e1 100644
--- a/src/openrct2/ride/CableLift.cpp
+++ b/src/openrct2/ride/CableLift.cpp
@@ -10,7 +10,7 @@
#include "CableLift.h"
#include "../audio/Audio.h"
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/RCT12.h"
#include "../entity/EntityList.h"
#include "../util/Util.h"
#include "../world/Map.h"
diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp
index c81a2548b6aa..1f2d50e57047 100644
--- a/src/openrct2/ride/Vehicle.cpp
+++ b/src/openrct2/ride/Vehicle.cpp
@@ -16,7 +16,7 @@
#include "../OpenRCT2.h"
#include "../actions/RideSetStatusAction.h"
#include "../audio/Audio.h"
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/RCT12.h"
#include "../config/Config.h"
#include "../core/EnumUtils.hpp"
#include "../core/FixedPoint.hpp"
diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp
index 20c529c60728..27bbca13ed9b 100644
--- a/src/openrct2/scenario/Scenario.cpp
+++ b/src/openrct2/scenario/Scenario.cpp
@@ -21,7 +21,7 @@
#include "../actions/ResultWithMessage.h"
#include "../audio/Audio.h"
#include "../compatibility/rct1/RCT1.h"
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/RCT12.h"
#include "../config/Config.h"
#include "../core/BitSet.hpp"
#include "../core/EnumUtils.hpp"
diff --git a/src/openrct2/scenario/ScenarioRepository.cpp b/src/openrct2/scenario/ScenarioRepository.cpp
index 1505a94b35b8..c24dd43787f1 100644
--- a/src/openrct2/scenario/ScenarioRepository.cpp
+++ b/src/openrct2/scenario/ScenarioRepository.cpp
@@ -14,8 +14,8 @@
#include "../Game.h"
#include "../ParkImporter.h"
#include "../PlatformEnvironment.h"
-#include "../compatibility/rct12/CSStringConverter.h"
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/CSStringConverter.h"
+#include "../compatibility/shared/RCT12.h"
#include "../config/Config.h"
#include "../core/Console.hpp"
#include "../core/File.h"
diff --git a/src/openrct2/scripting/bindings/entity/ScStaff.cpp b/src/openrct2/scripting/bindings/entity/ScStaff.cpp
index dcfbf4d4abe9..fedf98a2787b 100644
--- a/src/openrct2/scripting/bindings/entity/ScStaff.cpp
+++ b/src/openrct2/scripting/bindings/entity/ScStaff.cpp
@@ -11,7 +11,7 @@
#include "ScStaff.hpp"
- #include "../../../compatibility/rct12/RCT12.h"
+ #include "../../../compatibility/shared/RCT12.h"
#include "../../../entity/PatrolArea.h"
#include "../../../entity/Staff.h"
#include "../../../object/ObjectManager.h"
diff --git a/test/tests/LocalisationTest.cpp b/test/tests/LocalisationTest.cpp
index 272ccd648a63..3cf2b2f0b76f 100644
--- a/test/tests/LocalisationTest.cpp
+++ b/test/tests/LocalisationTest.cpp
@@ -8,7 +8,7 @@
*****************************************************************************/
#include "helpers/StringHelpers.hpp"
-#include "openrct2/compatibility/rct12/CSStringConverter.h"
+#include "openrct2/compatibility/shared/CSStringConverter.h"
#include "openrct2/localisation/Language.h"
#include
diff --git a/test/tests/ScenarioPatcherTests.cpp b/test/tests/ScenarioPatcherTests.cpp
index ab6c984c53fd..c031d22853ec 100644
--- a/test/tests/ScenarioPatcherTests.cpp
+++ b/test/tests/ScenarioPatcherTests.cpp
@@ -13,7 +13,7 @@
#include
#include
#include
-#include
+#include
#include
#include
#include
From f777cda60fd9898ee07b425a05b95354d1c6f55f Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Fri, 9 Jan 2026 23:09:51 -0300
Subject: [PATCH 16/26] Rename /rct12 to /shared
---
src/openrct2/Game.cpp | 2 +-
src/openrct2/compatibility/rct1/Limits.h | 2 +-
src/openrct2/compatibility/rct1/RCT1.h | 2 +-
.../compatibility/rct1/S4Importer.cpp | 6 +++---
.../compatibility/rct1/T4Importer.cpp | 2 +-
src/openrct2/compatibility/rct2/Limits.h | 2 +-
.../compatibility/rct2/S6Importer.cpp | 8 ++++----
.../compatibility/rct2/T6Exporter.cpp | 2 +-
.../compatibility/rct2/T6Importer.cpp | 2 +-
.../compatibility/{rct12 => shared}/CSChar.h | 0
.../{rct12 => shared}/CSStringConverter.cpp | 0
.../{rct12 => shared}/CSStringConverter.h | 0
.../{rct12 => shared}/EntryList.h | 0
.../compatibility/{rct12 => shared}/Limits.h | 0
.../compatibility/{rct12 => shared}/RCT12.cpp | 0
.../compatibility/{rct12 => shared}/RCT12.h | 0
.../{rct12 => shared}/ScenarioPatcher.cpp | 2 +-
.../{rct12 => shared}/ScenarioPatcher.h | 0
.../compatibility/{rct12 => shared}/TD46.cpp | 0
.../compatibility/{rct12 => shared}/TD46.h | 0
src/openrct2/drawing/Font.cpp | 2 +-
src/openrct2/entity/EntityList.h | 2 +-
src/openrct2/libopenrct2.vcxproj | 20 +++++++++----------
src/openrct2/object/PeepAnimationsObject.cpp | 2 +-
src/openrct2/object/StringTable.cpp | 2 +-
src/openrct2/park/Legacy.cpp | 2 +-
src/openrct2/rct2/RCT2.h | 2 +-
src/openrct2/ride/CableLift.cpp | 2 +-
src/openrct2/ride/Vehicle.cpp | 2 +-
src/openrct2/scenario/Scenario.cpp | 2 +-
src/openrct2/scenario/ScenarioRepository.cpp | 4 ++--
.../scripting/bindings/entity/ScStaff.cpp | 2 +-
test/tests/LocalisationTest.cpp | 2 +-
test/tests/ScenarioPatcherTests.cpp | 2 +-
34 files changed, 39 insertions(+), 39 deletions(-)
rename src/openrct2/compatibility/{rct12 => shared}/CSChar.h (100%)
rename src/openrct2/compatibility/{rct12 => shared}/CSStringConverter.cpp (100%)
rename src/openrct2/compatibility/{rct12 => shared}/CSStringConverter.h (100%)
rename src/openrct2/compatibility/{rct12 => shared}/EntryList.h (100%)
rename src/openrct2/compatibility/{rct12 => shared}/Limits.h (100%)
rename src/openrct2/compatibility/{rct12 => shared}/RCT12.cpp (100%)
rename src/openrct2/compatibility/{rct12 => shared}/RCT12.h (100%)
rename src/openrct2/compatibility/{rct12 => shared}/ScenarioPatcher.cpp (99%)
rename src/openrct2/compatibility/{rct12 => shared}/ScenarioPatcher.h (100%)
rename src/openrct2/compatibility/{rct12 => shared}/TD46.cpp (100%)
rename src/openrct2/compatibility/{rct12 => shared}/TD46.h (100%)
diff --git a/src/openrct2/Game.cpp b/src/openrct2/Game.cpp
index c56cbfe27e37..da18f08e0e3c 100644
--- a/src/openrct2/Game.cpp
+++ b/src/openrct2/Game.cpp
@@ -24,7 +24,7 @@
#include "actions/GameSetSpeedAction.h"
#include "actions/LoadOrQuitAction.h"
#include "audio/Audio.h"
-#include "compatibility/rct12/CSStringConverter.h"
+#include "compatibility/shared/CSStringConverter.h"
#include "config/Config.h"
#include "core/Console.hpp"
#include "core/File.h"
diff --git a/src/openrct2/compatibility/rct1/Limits.h b/src/openrct2/compatibility/rct1/Limits.h
index 5afb75c6180a..be449f86efcc 100644
--- a/src/openrct2/compatibility/rct1/Limits.h
+++ b/src/openrct2/compatibility/rct1/Limits.h
@@ -8,7 +8,7 @@
*****************************************************************************/
#pragma once
-#include "../rct12/Limits.h"
+#include "../shared/Limits.h"
namespace OpenRCT2::RCT1::Limits
{
diff --git a/src/openrct2/compatibility/rct1/RCT1.h b/src/openrct2/compatibility/rct1/RCT1.h
index b95f3211f05f..973179b45d83 100644
--- a/src/openrct2/compatibility/rct1/RCT1.h
+++ b/src/openrct2/compatibility/rct1/RCT1.h
@@ -13,7 +13,7 @@
#include "../../ride/Angles.h"
#include "../../ride/RideRatings.h"
#include "../../world/ParkData.h"
-#include "../rct12/RCT12.h"
+#include "../shared/RCT12.h"
#include "Limits.h"
enum class MechanicStatus : uint8_t;
diff --git a/src/openrct2/compatibility/rct1/S4Importer.cpp b/src/openrct2/compatibility/rct1/S4Importer.cpp
index 5d439762e200..b6c1fb42136b 100644
--- a/src/openrct2/compatibility/rct1/S4Importer.cpp
+++ b/src/openrct2/compatibility/rct1/S4Importer.cpp
@@ -72,9 +72,9 @@
#include "../../world/tile_element/TileElement.h"
#include "../../world/tile_element/TrackElement.h"
#include "../../world/tile_element/WallElement.h"
-#include "../rct12/CSStringConverter.h"
-#include "../rct12/EntryList.h"
-#include "../rct12/ScenarioPatcher.h"
+#include "../shared/CSStringConverter.h"
+#include "../shared/EntryList.h"
+#include "../shared/ScenarioPatcher.h"
#include "RCT1.h"
#include "Tables.h"
diff --git a/src/openrct2/compatibility/rct1/T4Importer.cpp b/src/openrct2/compatibility/rct1/T4Importer.cpp
index 5824515031a9..7a576920c435 100644
--- a/src/openrct2/compatibility/rct1/T4Importer.cpp
+++ b/src/openrct2/compatibility/rct1/T4Importer.cpp
@@ -18,7 +18,7 @@
#include "../../ride/TrackDesign.h"
#include "../../ride/TrackDesignRepository.h"
#include "../../sawyer_coding/SawyerChunkReader.h"
-#include "../rct12/TD46.h"
+#include "../shared/TD46.h"
#include "RCT1.h"
#include "Tables.h"
diff --git a/src/openrct2/compatibility/rct2/Limits.h b/src/openrct2/compatibility/rct2/Limits.h
index f49e32c33b9b..c0706e67095b 100644
--- a/src/openrct2/compatibility/rct2/Limits.h
+++ b/src/openrct2/compatibility/rct2/Limits.h
@@ -8,7 +8,7 @@
*****************************************************************************/
#pragma once
-#include "../rct12/Limits.h"
+#include "../shared/Limits.h"
namespace OpenRCT2::RCT2::Limits
{
diff --git a/src/openrct2/compatibility/rct2/S6Importer.cpp b/src/openrct2/compatibility/rct2/S6Importer.cpp
index 78c2aa48fbd2..e8af345d3844 100644
--- a/src/openrct2/compatibility/rct2/S6Importer.cpp
+++ b/src/openrct2/compatibility/rct2/S6Importer.cpp
@@ -56,10 +56,10 @@
#include "../../world/tile_element/TileElement.h"
#include "../../world/tile_element/TrackElement.h"
#include "../../world/tile_element/WallElement.h"
-#include "../rct12/CSStringConverter.h"
-#include "../rct12/EntryList.h"
-#include "../rct12/RCT12.h"
-#include "../rct12/ScenarioPatcher.h"
+#include "../shared/CSStringConverter.h"
+#include "../shared/EntryList.h"
+#include "../shared/RCT12.h"
+#include "../shared/ScenarioPatcher.h"
#include
diff --git a/src/openrct2/compatibility/rct2/T6Exporter.cpp b/src/openrct2/compatibility/rct2/T6Exporter.cpp
index 0208bfbc0a96..40d36e310fdd 100644
--- a/src/openrct2/compatibility/rct2/T6Exporter.cpp
+++ b/src/openrct2/compatibility/rct2/T6Exporter.cpp
@@ -25,7 +25,7 @@
#include "../../ride/TrackDesignRepository.h"
#include "../../sawyer_coding/SawyerChunkWriter.h"
#include "../../windows/Intent.h"
-#include "../rct12/TD46.h"
+#include "../shared/TD46.h"
#include
diff --git a/src/openrct2/compatibility/rct2/T6Importer.cpp b/src/openrct2/compatibility/rct2/T6Importer.cpp
index 1d6b4551876b..3a172a7d8fb1 100644
--- a/src/openrct2/compatibility/rct2/T6Importer.cpp
+++ b/src/openrct2/compatibility/rct2/T6Importer.cpp
@@ -21,7 +21,7 @@
#include "../../ride/TrackDesign.h"
#include "../../ride/TrackDesignRepository.h"
#include "../../sawyer_coding/SawyerChunkReader.h"
-#include "../rct12/TD46.h"
+#include "../shared/TD46.h"
#include
diff --git a/src/openrct2/compatibility/rct12/CSChar.h b/src/openrct2/compatibility/shared/CSChar.h
similarity index 100%
rename from src/openrct2/compatibility/rct12/CSChar.h
rename to src/openrct2/compatibility/shared/CSChar.h
diff --git a/src/openrct2/compatibility/rct12/CSStringConverter.cpp b/src/openrct2/compatibility/shared/CSStringConverter.cpp
similarity index 100%
rename from src/openrct2/compatibility/rct12/CSStringConverter.cpp
rename to src/openrct2/compatibility/shared/CSStringConverter.cpp
diff --git a/src/openrct2/compatibility/rct12/CSStringConverter.h b/src/openrct2/compatibility/shared/CSStringConverter.h
similarity index 100%
rename from src/openrct2/compatibility/rct12/CSStringConverter.h
rename to src/openrct2/compatibility/shared/CSStringConverter.h
diff --git a/src/openrct2/compatibility/rct12/EntryList.h b/src/openrct2/compatibility/shared/EntryList.h
similarity index 100%
rename from src/openrct2/compatibility/rct12/EntryList.h
rename to src/openrct2/compatibility/shared/EntryList.h
diff --git a/src/openrct2/compatibility/rct12/Limits.h b/src/openrct2/compatibility/shared/Limits.h
similarity index 100%
rename from src/openrct2/compatibility/rct12/Limits.h
rename to src/openrct2/compatibility/shared/Limits.h
diff --git a/src/openrct2/compatibility/rct12/RCT12.cpp b/src/openrct2/compatibility/shared/RCT12.cpp
similarity index 100%
rename from src/openrct2/compatibility/rct12/RCT12.cpp
rename to src/openrct2/compatibility/shared/RCT12.cpp
diff --git a/src/openrct2/compatibility/rct12/RCT12.h b/src/openrct2/compatibility/shared/RCT12.h
similarity index 100%
rename from src/openrct2/compatibility/rct12/RCT12.h
rename to src/openrct2/compatibility/shared/RCT12.h
diff --git a/src/openrct2/compatibility/rct12/ScenarioPatcher.cpp b/src/openrct2/compatibility/shared/ScenarioPatcher.cpp
similarity index 99%
rename from src/openrct2/compatibility/rct12/ScenarioPatcher.cpp
rename to src/openrct2/compatibility/shared/ScenarioPatcher.cpp
index 91ae3082e116..762308c1daf5 100644
--- a/src/openrct2/compatibility/rct12/ScenarioPatcher.cpp
+++ b/src/openrct2/compatibility/shared/ScenarioPatcher.cpp
@@ -7,7 +7,7 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
-#include "../rct12/ScenarioPatcher.h"
+#include "../shared/ScenarioPatcher.h"
#include "../../Context.h"
#include "../../Game.h"
diff --git a/src/openrct2/compatibility/rct12/ScenarioPatcher.h b/src/openrct2/compatibility/shared/ScenarioPatcher.h
similarity index 100%
rename from src/openrct2/compatibility/rct12/ScenarioPatcher.h
rename to src/openrct2/compatibility/shared/ScenarioPatcher.h
diff --git a/src/openrct2/compatibility/rct12/TD46.cpp b/src/openrct2/compatibility/shared/TD46.cpp
similarity index 100%
rename from src/openrct2/compatibility/rct12/TD46.cpp
rename to src/openrct2/compatibility/shared/TD46.cpp
diff --git a/src/openrct2/compatibility/rct12/TD46.h b/src/openrct2/compatibility/shared/TD46.h
similarity index 100%
rename from src/openrct2/compatibility/rct12/TD46.h
rename to src/openrct2/compatibility/shared/TD46.h
diff --git a/src/openrct2/drawing/Font.cpp b/src/openrct2/drawing/Font.cpp
index b631343766ac..9f7b46eab1a7 100644
--- a/src/openrct2/drawing/Font.cpp
+++ b/src/openrct2/drawing/Font.cpp
@@ -11,7 +11,7 @@
#include "../Diagnostic.h"
#include "../SpriteIds.h"
-#include "../compatibility/rct12/CSChar.h"
+#include "../compatibility/shared/CSChar.h"
#include "../core/EnumUtils.hpp"
#include "../core/UTF8.h"
#include "../core/UnicodeChar.h"
diff --git a/src/openrct2/entity/EntityList.h b/src/openrct2/entity/EntityList.h
index efccaf691a7e..edfa5bdbc2ed 100644
--- a/src/openrct2/entity/EntityList.h
+++ b/src/openrct2/entity/EntityList.h
@@ -10,7 +10,7 @@
#pragma once
#include "../GameState.h"
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/RCT12.h"
#include "../world/Location.hpp"
#include "EntityBase.h"
#include "EntityRegistry.h"
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index 76f92c6a9ccd..51df65b052c9 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -176,12 +176,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -790,7 +790,7 @@
-
+
Level4
4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
4263;4265;4548;4549;4555
@@ -871,7 +871,7 @@
false
true
-
+
Level4
4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
4263;4265;4548;4549;4555
@@ -952,7 +952,7 @@
false
true
-
+
Level4
4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
4263;4265;4548;4549;4555
@@ -1033,7 +1033,7 @@
false
true
-
+
Level4
4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
4263;4265;4548;4549;4555
diff --git a/src/openrct2/object/PeepAnimationsObject.cpp b/src/openrct2/object/PeepAnimationsObject.cpp
index d2046b7db062..5b49f6abaa2d 100644
--- a/src/openrct2/object/PeepAnimationsObject.cpp
+++ b/src/openrct2/object/PeepAnimationsObject.cpp
@@ -11,7 +11,7 @@
#include "../Context.h"
#include "../PlatformEnvironment.h"
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/RCT12.h"
#include "../core/EnumMap.hpp"
#include "../core/Guard.hpp"
#include "../core/Json.hpp"
diff --git a/src/openrct2/object/StringTable.cpp b/src/openrct2/object/StringTable.cpp
index 3963318d9e81..517c354dbd18 100644
--- a/src/openrct2/object/StringTable.cpp
+++ b/src/openrct2/object/StringTable.cpp
@@ -10,7 +10,7 @@
#include "StringTable.h"
#include "../Context.h"
-#include "../compatibility/rct12/CSStringConverter.h"
+#include "../compatibility/shared/CSStringConverter.h"
#include "../core/EnumUtils.hpp"
#include "../core/Guard.hpp"
#include "../core/IStream.hpp"
diff --git a/src/openrct2/park/Legacy.cpp b/src/openrct2/park/Legacy.cpp
index 9ba05727b5ab..f104fea58624 100644
--- a/src/openrct2/park/Legacy.cpp
+++ b/src/openrct2/park/Legacy.cpp
@@ -11,7 +11,7 @@
#include "../Context.h"
#include "../Diagnostic.h"
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/RCT12.h"
#include "../entity/EntityList.h"
#include "../entity/Guest.h"
#include "../entity/Staff.h"
diff --git a/src/openrct2/rct2/RCT2.h b/src/openrct2/rct2/RCT2.h
index 87cd6e2b4cf9..ad8f3abadbd1 100644
--- a/src/openrct2/rct2/RCT2.h
+++ b/src/openrct2/rct2/RCT2.h
@@ -9,8 +9,8 @@
#pragma once
-#include "../compatibility/rct12/RCT12.h"
#include "../compatibility/rct2/Limits.h"
+#include "../compatibility/shared/RCT12.h"
#include "../core/FileSystem.hpp"
#include "../core/FixedPoint.hpp"
#include "../ride/Angles.h"
diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp
index dc1f44a23812..51d8a85037e1 100644
--- a/src/openrct2/ride/CableLift.cpp
+++ b/src/openrct2/ride/CableLift.cpp
@@ -10,7 +10,7 @@
#include "CableLift.h"
#include "../audio/Audio.h"
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/RCT12.h"
#include "../entity/EntityList.h"
#include "../util/Util.h"
#include "../world/Map.h"
diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp
index c81a2548b6aa..1f2d50e57047 100644
--- a/src/openrct2/ride/Vehicle.cpp
+++ b/src/openrct2/ride/Vehicle.cpp
@@ -16,7 +16,7 @@
#include "../OpenRCT2.h"
#include "../actions/RideSetStatusAction.h"
#include "../audio/Audio.h"
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/RCT12.h"
#include "../config/Config.h"
#include "../core/EnumUtils.hpp"
#include "../core/FixedPoint.hpp"
diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp
index 20c529c60728..27bbca13ed9b 100644
--- a/src/openrct2/scenario/Scenario.cpp
+++ b/src/openrct2/scenario/Scenario.cpp
@@ -21,7 +21,7 @@
#include "../actions/ResultWithMessage.h"
#include "../audio/Audio.h"
#include "../compatibility/rct1/RCT1.h"
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/RCT12.h"
#include "../config/Config.h"
#include "../core/BitSet.hpp"
#include "../core/EnumUtils.hpp"
diff --git a/src/openrct2/scenario/ScenarioRepository.cpp b/src/openrct2/scenario/ScenarioRepository.cpp
index 1505a94b35b8..c24dd43787f1 100644
--- a/src/openrct2/scenario/ScenarioRepository.cpp
+++ b/src/openrct2/scenario/ScenarioRepository.cpp
@@ -14,8 +14,8 @@
#include "../Game.h"
#include "../ParkImporter.h"
#include "../PlatformEnvironment.h"
-#include "../compatibility/rct12/CSStringConverter.h"
-#include "../compatibility/rct12/RCT12.h"
+#include "../compatibility/shared/CSStringConverter.h"
+#include "../compatibility/shared/RCT12.h"
#include "../config/Config.h"
#include "../core/Console.hpp"
#include "../core/File.h"
diff --git a/src/openrct2/scripting/bindings/entity/ScStaff.cpp b/src/openrct2/scripting/bindings/entity/ScStaff.cpp
index dcfbf4d4abe9..fedf98a2787b 100644
--- a/src/openrct2/scripting/bindings/entity/ScStaff.cpp
+++ b/src/openrct2/scripting/bindings/entity/ScStaff.cpp
@@ -11,7 +11,7 @@
#include "ScStaff.hpp"
- #include "../../../compatibility/rct12/RCT12.h"
+ #include "../../../compatibility/shared/RCT12.h"
#include "../../../entity/PatrolArea.h"
#include "../../../entity/Staff.h"
#include "../../../object/ObjectManager.h"
diff --git a/test/tests/LocalisationTest.cpp b/test/tests/LocalisationTest.cpp
index 272ccd648a63..3cf2b2f0b76f 100644
--- a/test/tests/LocalisationTest.cpp
+++ b/test/tests/LocalisationTest.cpp
@@ -8,7 +8,7 @@
*****************************************************************************/
#include "helpers/StringHelpers.hpp"
-#include "openrct2/compatibility/rct12/CSStringConverter.h"
+#include "openrct2/compatibility/shared/CSStringConverter.h"
#include "openrct2/localisation/Language.h"
#include
diff --git a/test/tests/ScenarioPatcherTests.cpp b/test/tests/ScenarioPatcherTests.cpp
index ab6c984c53fd..c031d22853ec 100644
--- a/test/tests/ScenarioPatcherTests.cpp
+++ b/test/tests/ScenarioPatcherTests.cpp
@@ -13,7 +13,7 @@
#include
#include
#include
-#include
+#include
#include
#include
#include
From 2d4a726dea784c0399b9acbce1e7eb89f4f6183f Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Sat, 10 Jan 2026 00:44:39 -0300
Subject: [PATCH 17/26] Move RCT2.h to /compatibility/rct2
---
src/openrct2/Context.cpp | 2 +-
src/openrct2/FileClassifier.cpp | 2 +-
src/openrct2/compatibility/rct2/RCT2.h | 2 +-
.../compatibility/rct2/S6Importer.cpp | 2 +-
.../compatibility/rct2/SeaDecrypt.cpp | 2 +-
.../compatibility/rct2/T6Exporter.cpp | 2 +-
.../compatibility/rct2/T6Importer.cpp | 2 +-
src/openrct2/compatibility/shared/RCT12.cpp | 2 +-
src/openrct2/entity/Guest.cpp | 2 +-
src/openrct2/libopenrct2.vcxproj | 2 +-
src/openrct2/object/RideObject.cpp | 2 +-
src/openrct2/openrct2_pch.h | 2 +-
src/openrct2/park/Legacy.cpp | 2 +-
src/openrct2/park/ParkFile.cpp | 2 +-
src/openrct2/rct2/RCT2.cpp | 2 +-
src/openrct2/rct2/RCT2.h | 1098 -----------------
src/openrct2/ride/TrackDesign.cpp | 2 +-
src/openrct2/ride/TrackDesignSave.cpp | 2 +-
src/openrct2/scenario/ScenarioRepository.cpp | 2 +-
test/tests/S6ImportExportTests.cpp | 2 +-
20 files changed, 19 insertions(+), 1117 deletions(-)
delete mode 100644 src/openrct2/rct2/RCT2.h
diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp
index 6c32660e175a..9a5d1e505fad 100644
--- a/src/openrct2/Context.cpp
+++ b/src/openrct2/Context.cpp
@@ -28,6 +28,7 @@
#include "actions/GameAction.h"
#include "audio/Audio.h"
#include "audio/AudioContext.h"
+#include "compatibility/rct2/RCT2.h"
#include "config/Config.h"
#include "core/Console.hpp"
#include "core/File.h"
@@ -61,7 +62,6 @@
#include "platform/Crash.h"
#include "platform/Platform.h"
#include "profiling/Profiling.h"
-#include "rct2/RCT2.h"
#include "ride/TrackDesignRepository.h"
#include "scenario/Scenario.h"
#include "scenario/ScenarioRepository.h"
diff --git a/src/openrct2/FileClassifier.cpp b/src/openrct2/FileClassifier.cpp
index e666116c1390..03d0ebafac2e 100644
--- a/src/openrct2/FileClassifier.cpp
+++ b/src/openrct2/FileClassifier.cpp
@@ -10,13 +10,13 @@
#include "FileClassifier.h"
#include "Diagnostic.h"
+#include "compatibility/rct2/RCT2.h"
#include "core/Console.hpp"
#include "core/FileStream.h"
#include "core/Memory.hpp"
#include "core/Path.hpp"
#include "core/String.hpp"
#include "park/ParkFile.h"
-#include "rct2/RCT2.h"
#include "sawyer_coding/SawyerChunkReader.h"
#include "sawyer_coding/SawyerCoding.h"
#include "scenario/Scenario.h"
diff --git a/src/openrct2/compatibility/rct2/RCT2.h b/src/openrct2/compatibility/rct2/RCT2.h
index 87cd6e2b4cf9..ad8f3abadbd1 100644
--- a/src/openrct2/compatibility/rct2/RCT2.h
+++ b/src/openrct2/compatibility/rct2/RCT2.h
@@ -9,8 +9,8 @@
#pragma once
-#include "../compatibility/rct12/RCT12.h"
#include "../compatibility/rct2/Limits.h"
+#include "../compatibility/shared/RCT12.h"
#include "../core/FileSystem.hpp"
#include "../core/FixedPoint.hpp"
#include "../ride/Angles.h"
diff --git a/src/openrct2/compatibility/rct2/S6Importer.cpp b/src/openrct2/compatibility/rct2/S6Importer.cpp
index e8af345d3844..dd38dcb9b889 100644
--- a/src/openrct2/compatibility/rct2/S6Importer.cpp
+++ b/src/openrct2/compatibility/rct2/S6Importer.cpp
@@ -32,7 +32,6 @@
#include "../../park/Legacy.h"
#include "../../park/ParkPreview.h"
#include "../../peep/RideUseSystem.h"
-#include "../../rct2/RCT2.h"
#include "../../ride/Ride.h"
#include "../../ride/RideData.h"
#include "../../ride/Vehicle.h"
@@ -56,6 +55,7 @@
#include "../../world/tile_element/TileElement.h"
#include "../../world/tile_element/TrackElement.h"
#include "../../world/tile_element/WallElement.h"
+#include "../rct2/RCT2.h"
#include "../shared/CSStringConverter.h"
#include "../shared/EntryList.h"
#include "../shared/RCT12.h"
diff --git a/src/openrct2/compatibility/rct2/SeaDecrypt.cpp b/src/openrct2/compatibility/rct2/SeaDecrypt.cpp
index f3895de29b9e..8d8774dc38eb 100644
--- a/src/openrct2/compatibility/rct2/SeaDecrypt.cpp
+++ b/src/openrct2/compatibility/rct2/SeaDecrypt.cpp
@@ -10,7 +10,7 @@
#include "../../core/File.h"
#include "../../core/Numerics.hpp"
#include "../../core/Path.hpp"
-#include "../../rct2/RCT2.h"
+#include "../rct2/RCT2.h"
#include
#include
diff --git a/src/openrct2/compatibility/rct2/T6Exporter.cpp b/src/openrct2/compatibility/rct2/T6Exporter.cpp
index 40d36e310fdd..73aee0fcf519 100644
--- a/src/openrct2/compatibility/rct2/T6Exporter.cpp
+++ b/src/openrct2/compatibility/rct2/T6Exporter.cpp
@@ -15,7 +15,6 @@
#include "../../core/MemoryStream.h"
#include "../../localisation/StringIds.h"
#include "../../object/ObjectList.h"
-#include "../../rct2/RCT2.h"
#include "../../ride/Ride.h"
#include "../../ride/RideData.h"
#include "../../ride/Station.h"
@@ -25,6 +24,7 @@
#include "../../ride/TrackDesignRepository.h"
#include "../../sawyer_coding/SawyerChunkWriter.h"
#include "../../windows/Intent.h"
+#include "../rct2/RCT2.h"
#include "../shared/TD46.h"
#include
diff --git a/src/openrct2/compatibility/rct2/T6Importer.cpp b/src/openrct2/compatibility/rct2/T6Importer.cpp
index 3a172a7d8fb1..f60691624d24 100644
--- a/src/openrct2/compatibility/rct2/T6Importer.cpp
+++ b/src/openrct2/compatibility/rct2/T6Importer.cpp
@@ -15,12 +15,12 @@
#include "../../core/String.hpp"
#include "../../object/ObjectRepository.h"
#include "../../object/RideObject.h"
-#include "../../rct2/RCT2.h"
#include "../../ride/Ride.h"
#include "../../ride/RideData.h"
#include "../../ride/TrackDesign.h"
#include "../../ride/TrackDesignRepository.h"
#include "../../sawyer_coding/SawyerChunkReader.h"
+#include "../rct2/RCT2.h"
#include "../shared/TD46.h"
#include
diff --git a/src/openrct2/compatibility/shared/RCT12.cpp b/src/openrct2/compatibility/shared/RCT12.cpp
index b6f709be3453..5084ca748ad4 100644
--- a/src/openrct2/compatibility/shared/RCT12.cpp
+++ b/src/openrct2/compatibility/shared/RCT12.cpp
@@ -13,7 +13,6 @@
#include "../../core/String.hpp"
#include "../../localisation/Formatting.h"
#include "../../object/ObjectList.h"
-#include "../../rct2/RCT2.h"
#include "../../ride/Ride.h"
#include "../../scenario/Scenario.h"
#include "../../world/Banner.h"
@@ -25,6 +24,7 @@
#include "../../world/tile_element/SurfaceElement.h"
#include "../../world/tile_element/WallElement.h"
#include "../rct1/Tables.h"
+#include "../rct2/RCT2.h"
#include "CSStringConverter.h"
#include "EntryList.h"
diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp
index 1f99206b2406..cd8e0f304491 100644
--- a/src/openrct2/entity/Guest.cpp
+++ b/src/openrct2/entity/Guest.cpp
@@ -16,6 +16,7 @@
#include "../OpenRCT2.h"
#include "../SpriteIds.h"
#include "../audio/Audio.h"
+#include "../compatibility/rct2/RCT2.h"
#include "../config/Config.h"
#include "../core/DataSerialiser.h"
#include "../core/Guard.hpp"
@@ -44,7 +45,6 @@
#include "../peep/PeepAnimations.h"
#include "../peep/PeepThoughts.h"
#include "../peep/RideUseSystem.h"
-#include "../rct2/RCT2.h"
#include "../ride/Ride.h"
#include "../ride/RideData.h"
#include "../ride/RideManager.hpp"
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index 51df65b052c9..0b4f73c22cca 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -176,6 +176,7 @@
+
@@ -432,7 +433,6 @@
-
diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp
index 0308f433f99c..92c3d3510284 100644
--- a/src/openrct2/object/RideObject.cpp
+++ b/src/openrct2/object/RideObject.cpp
@@ -14,6 +14,7 @@
#include "../OpenRCT2.h"
#include "../audio/Audio.h"
#include "../compatibility/rct2/DATLimits.h"
+#include "../compatibility/rct2/RCT2.h"
#include "../core/EnumMap.hpp"
#include "../core/FlagHolder.hpp"
#include "../core/IStream.hpp"
@@ -24,7 +25,6 @@
#include "../drawing/Drawing.h"
#include "../entity/Yaw.hpp"
#include "../localisation/Language.h"
-#include "../rct2/RCT2.h"
#include "../ride/CarEntry.h"
#include "../ride/Ride.h"
#include "../ride/RideData.h"
diff --git a/src/openrct2/openrct2_pch.h b/src/openrct2/openrct2_pch.h
index 655dac226e7c..ae7a1c9f6341 100644
--- a/src/openrct2/openrct2_pch.h
+++ b/src/openrct2/openrct2_pch.h
@@ -2,7 +2,7 @@
// Include some expensive headers here to improve compilation speed
+#include "compatibility/rct2/RCT2.h"
#include "core/FileSystem.hpp"
#include "object/Object.h"
-#include "rct2/RCT2.h"
#include "ride/Ride.h"
diff --git a/src/openrct2/park/Legacy.cpp b/src/openrct2/park/Legacy.cpp
index f104fea58624..4edeb98ef8e5 100644
--- a/src/openrct2/park/Legacy.cpp
+++ b/src/openrct2/park/Legacy.cpp
@@ -11,6 +11,7 @@
#include "../Context.h"
#include "../Diagnostic.h"
+#include "../compatibility/rct2/RCT2.h"
#include "../compatibility/shared/RCT12.h"
#include "../entity/EntityList.h"
#include "../entity/Guest.h"
@@ -19,7 +20,6 @@
#include "../object/ObjectList.h"
#include "../object/ObjectManager.h"
#include "../object/PeepAnimationsObject.h"
-#include "../rct2/RCT2.h"
#include "../ride/Ride.h"
#include "../ride/Track.h"
#include "ParkFile.h"
diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp
index b796d10c0345..d76da043fda7 100644
--- a/src/openrct2/park/ParkFile.cpp
+++ b/src/openrct2/park/ParkFile.cpp
@@ -17,6 +17,7 @@
#include "../OpenRCT2.h"
#include "../ParkImporter.h"
#include "../Version.h"
+#include "../compatibility/rct2/RCT2.h"
#include "../config/Config.h"
#include "../core/Console.hpp"
#include "../core/Crypt.h"
@@ -45,7 +46,6 @@
#include "../object/ObjectManager.h"
#include "../object/ObjectRepository.h"
#include "../peep/RideUseSystem.h"
-#include "../rct2/RCT2.h"
#include "../ride/RideManager.hpp"
#include "../ride/ShopItem.h"
#include "../ride/Vehicle.h"
diff --git a/src/openrct2/rct2/RCT2.cpp b/src/openrct2/rct2/RCT2.cpp
index 647ea6cb9d04..25090cb4e9c4 100644
--- a/src/openrct2/rct2/RCT2.cpp
+++ b/src/openrct2/rct2/RCT2.cpp
@@ -7,7 +7,7 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
-#include "RCT2.h"
+#include "../compatibility/rct2/RCT2.h"
#include "../Context.h"
#include "../object/Object.h"
diff --git a/src/openrct2/rct2/RCT2.h b/src/openrct2/rct2/RCT2.h
deleted file mode 100644
index ad8f3abadbd1..000000000000
--- a/src/openrct2/rct2/RCT2.h
+++ /dev/null
@@ -1,1098 +0,0 @@
-/*****************************************************************************
- * Copyright (c) 2014-2026 OpenRCT2 developers
- *
- * For a complete list of all authors, please refer to contributors.md
- * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
- *
- * OpenRCT2 is licensed under the GNU General Public License version 3.
- *****************************************************************************/
-
-#pragma once
-
-#include "../compatibility/rct2/Limits.h"
-#include "../compatibility/shared/RCT12.h"
-#include "../core/FileSystem.hpp"
-#include "../core/FixedPoint.hpp"
-#include "../ride/Angles.h"
-#include "../ride/RideRatings.h"
-#include "../world/ParkData.h"
-
-#include
-
-struct RideObjectEntry;
-enum class EditorStep : uint8_t;
-enum class MechanicStatus : uint8_t;
-enum class RideInvalidateFlag : uint8_t;
-enum class VehicleColourSettings : uint8_t;
-
-template
-struct FlagHolder;
-using RideInvalidateFlags = FlagHolder;
-
-namespace OpenRCT2::Scenario
-{
- enum class Category : uint8_t;
- enum class ObjectiveType : uint8_t;
-} // namespace OpenRCT2::Scenario
-
-enum
-{
- S6_TYPE_SAVEDGAME,
- S6_TYPE_SCENARIO
-};
-
-// For legacy scores file
-enum
-{
- SCENARIO_FLAGS_VISIBLE = (1 << 0),
- SCENARIO_FLAGS_COMPLETED = (1 << 1),
- SCENARIO_FLAGS_SIXFLAGS = (1 << 2)
-};
-
-namespace OpenRCT2::RCT2
-{
- constexpr StringId kRCT2RideStringStart = 2;
-
- // clang-format off
- constexpr uint16_t kRCT2ObjectEntryCount =
- Limits::kMaxRideObjects +
- Limits::kMaxSmallSceneryObjects +
- Limits::kMaxLargeSceneryObjects +
- Limits::kMaxWallSceneryObjects +
- Limits::kMaxBannerObjects +
- Limits::kMaxPathObjects +
- Limits::kMaxPathAdditionObjects +
- Limits::kMaxSceneryGroupObjects +
- Limits::kMaxParkEntranceObjects +
- Limits::kMaxWaterObjects +
- Limits::kMaxScenarioMetaObjects;
- // clang-format on
- static_assert(kRCT2ObjectEntryCount == 721);
-
- // clang-format off
- constexpr int32_t kRCT2ObjectEntryGroupCounts[] = {
- Limits::kMaxRideObjects,
- Limits::kMaxSmallSceneryObjects,
- Limits::kMaxLargeSceneryObjects,
- Limits::kMaxWallSceneryObjects,
- Limits::kMaxBannerObjects,
- Limits::kMaxPathObjects,
- Limits::kMaxPathAdditionObjects,
- Limits::kMaxSceneryGroupObjects,
- Limits::kMaxParkEntranceObjects,
- Limits::kMaxWaterObjects,
- Limits::kMaxScenarioMetaObjects,
- };
- // clang-format on
-
- enum class EntityListId : uint8_t
- {
- count = 6,
- };
-#pragma pack(push, 1)
- /**
- * Ride structure.
- * size: 0x0260
- */
- struct Ride
- {
- uint8_t type; // 0x000
- // pointer to static info. for example, wild mouse type is 0x36, subtype is
- // 0x4c.
- RCT12ObjectEntryIndex subtype; // 0x001
- uint16_t pad002; // 0x002
- uint8_t mode; // 0x004
- VehicleColourSettings vehicleColourSettings; // 0x005
- RCT12VehicleColour vehicleColours[Limits::kMaxVehicleColours]; // 0x006
- uint8_t pad046[0x03]; // 0x046, Used to be track colours in RCT1 without expansions
- // 0 = closed, 1 = open, 2 = test
- uint8_t status; // 0x049
- StringId name; // 0x04A
- union
- {
- uint32_t nameArguments; // 0x04C
- struct
- {
- StringId nameArgumentsTypeName; // 0x04C
- uint16_t nameArgumentsNumber; // 0x04E
- };
- };
- RCT12xy8 overallView; // 0x050
- RCT12xy8 stationStarts[Limits::kMaxStationsPerRide]; // 0x052
- uint8_t stationHeights[Limits::kMaxStationsPerRide]; // 0x05A
- uint8_t stationLength[Limits::kMaxStationsPerRide]; // 0x05E
- uint8_t stationDepart[Limits::kMaxStationsPerRide]; // 0x062
- // ride->vehicle index for current train waiting for passengers
- // at station
- uint8_t trainAtStation[Limits::kMaxStationsPerRide]; // 0x066
- RCT12xy8 entrances[Limits::kMaxStationsPerRide]; // 0x06A
- RCT12xy8 exits[Limits::kMaxStationsPerRide]; // 0x072
- uint16_t lastPeepInQueue[Limits::kMaxStationsPerRide]; // 0x07A
- uint8_t pad082[Limits::kMaxStationsPerRide]; // 0x082, Used to be number of peeps in queue in RCT1, but this
- // has moved.
- uint16_t vehicles[Limits::kMaxTrainsPerRide]; // 0x086, Points to the first car in the train
- uint8_t departFlags; // 0x0C6
-
- // Not sure if these should be uint or sint.
- uint8_t numStations; // 0x0C7
- uint8_t numTrains; // 0x0C8
- uint8_t numCarsPerTrain; // 0x0C9
- uint8_t proposedNumTrains; // 0x0CA
- uint8_t proposedNumCarsPerTrain; // 0x0CB
- uint8_t maxTrains; // 0x0CC
- uint8_t minMaxCarsPerTrain; // 0x0CD
- uint8_t minWaitingTime; // 0x0CE
- uint8_t maxWaitingTime; // 0x0CF
- union
- {
- uint8_t operationOption; // 0x0D0
- uint8_t timeLimit; // 0x0D0
- uint8_t numLaps; // 0x0D0
- uint8_t launchSpeed; // 0x0D0
- uint8_t speed; // 0x0D0
- uint8_t rotations; // 0x0D0
- };
-
- uint8_t boatHireReturnDirection; // 0x0D1
- RCT12xy8 boatHireReturnPosition; // 0x0D2
- uint8_t measurementIndex; // 0x0D4
- // bits 0 through 4 are the number of helix sections
- // bit 5: spinning tunnel, water splash, or rapids
- // bit 6: log reverser, waterfall
- // bit 7: whirlpool
- uint8_t specialTrackElements; // 0x0D5
- uint8_t pad0D6[2]; // 0x0D6
- // Use ToHumanReadableSpeed if converting to display
- int32_t maxSpeed; // 0x0D8
- int32_t averageSpeed; // 0x0DC
- uint8_t currentTestSegment; // 0x0E0
- uint8_t averageSpeedTestTimeout; // 0x0E1
- uint8_t pad0E2[0x2]; // 0x0E2
- int32_t length[Limits::kMaxStationsPerRide]; // 0x0E4
- uint16_t time[Limits::kMaxStationsPerRide]; // 0x0F4
- fixed16_2dp maxPositiveVerticalG; // 0x0FC
- fixed16_2dp maxNegativeVerticalG; // 0x0FE
- fixed16_2dp maxLateralG; // 0x100
- fixed16_2dp previousVerticalG; // 0x102
- fixed16_2dp previousLateralG; // 0x104
- uint8_t pad106[0x2]; // 0x106
- uint32_t testingFlags; // 0x108
- // x y map location of the current track piece during a test
- // this is to prevent counting special tracks multiple times
- RCT12xy8 curTestTrackLocation; // 0x10C
- // Next 3 variables are related (XXXX XYYY ZZZa aaaa)
- uint16_t turnCountDefault; // 0x10E X = current turn count
- uint16_t turnCountBanked; // 0x110
- uint16_t turnCountSloped; // 0x112 X = number turns > 3 elements
- union
- {
- uint8_t inversions; // 0x114 (???X XXXX)
- uint8_t holes; // 0x114 (???X XXXX)
- // This is a very rough approximation of how much of the ride is undercover.
- // It reaches the maximum value of 7 at about 50% undercover and doesn't increase beyond that.
- uint8_t shelteredEighths; // 0x114 (XXX?-????)
- };
- // Y is number of powered lifts, X is drops
- uint8_t drops; // 0x115 (YYXX XXXX)
- uint8_t startDropHeight; // 0x116
- uint8_t highestDropHeight; // 0x117
- int32_t shelteredLength; // 0x118
- // Unused always 0? Should affect nausea
- uint16_t var11C; // 0x11C
- uint8_t numShelteredSections; // 0x11E (?abY YYYY)
- // see CurTestTrackLocation
- uint8_t curTestTrackZ; // 0x11F
- // Customer counter in the current 960 game tick (about 30 seconds) interval
- uint16_t curNumCustomers; // 0x120
- // Counts ticks to update customer intervals, resets each 960 game ticks.
- uint16_t numCustomersTimeout; // 0x122
- // Customer count in the last 10 * 960 game ticks (sliding window)
- uint16_t numCustomers[Limits::kCustomerHistorySize]; // 0x124
- money16 price; // 0x138
- RCT12xy8 chairliftBullwheelLocation[2]; // 0x13A
- uint8_t chairliftBullwheelZ[2]; // 0x13E
- OpenRCT2::RideRating::Tuple ratings; // 0x140
- money16 value; // 0x146
- uint16_t chairliftBullwheelRotation; // 0x148
- uint8_t satisfaction; // 0x14A
- uint8_t satisfactionTimeOut; // 0x14B
- uint8_t satisfactionNext; // 0x14C
- RideInvalidateFlags windowInvalidateFlags; // 0x14D
- uint8_t pad14E[0x02]; // 0x14E
- uint32_t totalCustomers; // 0x150
- money32 totalProfit; // 0x154
- uint8_t popularity; // 0x158
- uint8_t popularityTimeOut; // 0x159 Updated every purchase and ?possibly by time?
- uint8_t popularityNext; // 0x15A When timeout reached this will be the next popularity
- uint8_t numRiders; // 0x15B
- uint8_t musicTuneId; // 0x15C
- uint8_t slideInUse; // 0x15D
- union
- {
- uint16_t slidePeep; // 0x15E
- uint16_t mazeTiles; // 0x15E
- };
- uint8_t pad160[0xE]; // 0x160
- uint8_t slidePeepTShirtColour; // 0x16E
- uint8_t pad16F[0x7]; // 0x16F
- uint8_t spiralSlideProgress; // 0x176
- uint8_t pad177[0x9]; // 0x177
- int16_t buildDate; // 0x180
- money16 upkeepCost; // 0x182
- uint16_t raceWinner; // 0x184
- uint8_t pad186[0x02]; // 0x186
- uint32_t musicPosition; // 0x188
- uint8_t breakdownReasonPending; // 0x18C
- MechanicStatus mechanicStatus; // 0x18D
- uint16_t mechanic; // 0x18E
- uint8_t inspectionStation; // 0x190
- uint8_t brokenTrain; // 0x191
- uint8_t brokenCar; // 0x192
- uint8_t breakdownReason; // 0x193
- money16 priceSecondary; // 0x194
- union
- {
- struct
- {
- uint8_t reliabilitySubvalue; // 0x196, 0 - 255, acts like the decimals for reliabilityPercentage
- uint8_t reliabilityPercentage; // 0x197, Starts at 100 and decreases from there.
- };
- uint16_t reliability; // 0x196
- };
- // Small constant used to increase the unreliability as the game continues,
- // making breakdowns more and more likely.
- uint8_t unreliabilityFactor; // 0x198
- // Range from [0, 100]
- uint8_t downtime; // 0x199
- uint8_t inspectionInterval; // 0x19A
- uint8_t lastInspection; // 0x19B
- uint8_t downtimeHistory[Limits::kDowntimeHistorySize]; // 0x19C
- uint32_t numPrimaryItemsSold; // 0x1A4
- uint32_t numSecondaryItemsSold; // 0x1A8
- uint8_t breakdownSoundModifier; // 0x1AC
- // Used to oscillate the sound when ride breaks down.
- // 0 = no change, 255 = max change
- uint8_t notFixedTimeout; // 0x1AD
- uint8_t lastCrashType; // 0x1AE
- uint8_t connectedMessageThrottle; // 0x1AF
- money32 incomePerHour; // 0x1B0
- money32 profit; // 0x1B4
- uint8_t queueTime[Limits::kMaxStationsPerRide]; // 0x1B8
- uint8_t trackColourMain[Limits::kNumColourSchemes]; // 0x1BC
- uint8_t trackColourAdditional[Limits::kNumColourSchemes]; // 0x1C0
- uint8_t trackColourSupports[Limits::kNumColourSchemes]; // 0x1C4
- uint8_t music; // 0x1C8
- uint8_t entranceStyle; // 0x1C9
- uint16_t vehicleChangeTimeout; // 0x1CA
- uint8_t numBlockBrakes; // 0x1CC
- uint8_t liftHillSpeed; // 0x1CD
- uint16_t guestsFavourite; // 0x1CE
- uint32_t lifecycleFlags; // 0x1D0
- uint8_t vehicleColoursExtended[Limits::kMaxVehicleColours]; // 0x1D4
- uint16_t totalAirTime; // 0x1F4
- uint8_t currentTestStation; // 0x1F6
- uint8_t numCircuits; // 0x1F7
- int16_t cableLiftX; // 0x1F8
- int16_t cableLiftY; // 0x1FA
- uint8_t cableLiftZ; // 0x1FC
- uint8_t pad1FD; // 0x1FD
- uint16_t cableLift; // 0x1FE
- uint16_t queueLength[Limits::kMaxStationsPerRide]; // 0x200
- uint8_t pad208[0x58]; // 0x208
-
- uint8_t getMinCarsPerTrain() const;
- uint8_t getMaxCarsPerTrain() const;
- };
- static_assert(sizeof(Ride) == 0x260);
-
- /* Track Entrance entry size: 0x06 */
- struct TD6EntranceElement
- {
- int8_t z; // 0x00
- uint8_t direction; // 0x01
- int16_t x; // 0x02
- int16_t y; // 0x04
-
- constexpr Direction GetDirection() const
- {
- return (direction & 0b00001111);
- }
-
- constexpr bool IsExit() const
- {
- return !!(direction >> 7);
- }
- };
- static_assert(sizeof(TD6EntranceElement) == 0x06);
-
- /* Track Scenery entry size: 0x16 */
- struct TD6SceneryElement
- {
- RCTObjectEntry SceneryObject; // 0x00
- int8_t x; // 0x10
- int8_t y; // 0x11
- int8_t z; // 0x12
- uint8_t Flags; // 0x13 direction quadrant tertiary colour
- uint8_t PrimaryColour; // 0x14
- uint8_t SecondaryColour; // 0x15
-
- colour_t getTertiaryWallColour() const;
- };
- static_assert(sizeof(TD6SceneryElement) == 0x16);
-
- /**
- * Track design structure.
- * size: 0xA3
- */
- struct TD6Track
- {
- uint8_t Type; // 0x00
- RCT12ObjectEntryIndex VehicleType;
- uint32_t Flags; // 0x02
- uint8_t RideMode; // 0x06
- uint8_t VersionAndColourScheme; // 0x07 0b0000_VVCC
- RCT12VehicleColour VehicleColours[Limits::kMaxTrainsPerRide]; // 0x08
- uint8_t Pad48; // 0x48
- uint8_t EntranceStyle; // 0x49
- uint8_t TotalAirTime; // 0x4A
- uint8_t DepartFlags; // 0x4B
- uint8_t NumberOfTrains; // 0x4C
- uint8_t NumberOfCarsPerTrain; // 0x4D
- uint8_t MinWaitingTime; // 0x4E
- uint8_t MaxWaitingTime; // 0x4F
- uint8_t OperationSetting; // 0x50
- int8_t MaxSpeed; // 0x51
- int8_t AverageSpeed; // 0x52
- uint16_t RideLength; // 0x53
- uint8_t MaxPositiveVerticalG; // 0x55
- int8_t MaxNegativeVerticalG; // 0x56
- uint8_t MaxLateralG; // 0x57
- union
- {
- uint8_t Inversions; // 0x58
- uint8_t Holes; // 0x58
- };
- uint8_t Drops; // 0x59
- uint8_t HighestDropHeight; // 0x5A
- uint8_t Excitement; // 0x5B
- uint8_t Intensity; // 0x5C
- uint8_t Nausea; // 0x5D
- money16 UpkeepCost; // 0x5E
- uint8_t TrackSpineColour[Limits::kNumColourSchemes]; // 0x60
- uint8_t TrackRailColour[Limits::kNumColourSchemes]; // 0x64
- uint8_t TrackSupportColour[Limits::kNumColourSchemes]; // 0x68
- uint32_t Flags2; // 0x6C
- RCTObjectEntry VehicleObject; // 0x70
- uint8_t SpaceRequiredX; // 0x80
- uint8_t SpaceRequiredY; // 0x81
- uint8_t VehicleAdditionalColour[Limits::kMaxTrainsPerRide]; // 0x82
- uint8_t LiftHillSpeedNumCircuits; // 0xA2 0bCCCL_LLLL
- // 0xA3 (data starts here in file)
- };
- static_assert(sizeof(TD6Track) == 0xA3);
-
- /**
- * scores.dat file header.
- * size: 0x10
- */
- struct ScoresHeader
- {
- uint32_t Var0;
- uint32_t Var4;
- uint32_t Var8;
- uint32_t ScenarioCount;
- };
- static_assert(sizeof(ScoresHeader) == 0x10);
-
- /**
- * An entry of scores.dat
- * size: 0x02B0
- */
- struct ScoresEntry
- {
- char Path[256];
- uint8_t Category;
- uint8_t Pad0101[0x1F];
- Scenario::ObjectiveType ObjectiveType;
- int8_t ObjectiveArg1;
- int32_t objectiveArg2;
- uint16_t objectiveArg3;
- char Name[64];
- char Details[256];
- int32_t Flags;
- money32 CompanyValue;
- char CompletedBy[64];
- };
- static_assert(sizeof(ScoresEntry) == 0x02B0);
-
- struct Vehicle : RCT12EntityBase
- {
- VehiclePitch pitch; // 0x1F
- VehicleRoll roll; // 0x20
- uint8_t Pad21[3];
- int32_t RemainingDistance; // 0x24
- int32_t Velocity; // 0x28
- int32_t Acceleration; // 0x2C
- uint8_t Ride; // 0x30
- uint8_t VehicleType; // 0x31
- RCT12VehicleColour Colours; // 0x32
- union
- {
- uint16_t TrackProgress; // 0x34
- struct
- {
- int8_t Var34;
- uint8_t Var35;
- };
- };
- union
- {
- int16_t TrackTypeAndDirection; // 0x36
- RCT12xy8 BoatLocation; // 0x36
- };
- uint16_t TrackX; // 0x38
- uint16_t TrackY; // 0x3A
- uint16_t TrackZ; // 0x3C
- uint16_t NextVehicleOnTrain; // 0x3E
- uint16_t PrevVehicleOnRide; // 0x40
- uint16_t NextVehicleOnRide; // 0x42
- uint16_t Var44;
- uint16_t Mass; // 0x46
- uint16_t UpdateFlags; // 0x48
- uint8_t SwingSprite;
- uint8_t CurrentStation; // 0x4B
- union
- {
- int16_t SwingPosition; // 0x4C
- int16_t CurrentTime; // 0x4C
- struct
- {
- int8_t FerrisWheelVar0; // 0x4C
- int8_t FerrisWheelVar1; // 0x4D
- };
- };
- union
- {
- int16_t SwingSpeed;
- int16_t CrashZ; // 0x4E
- };
- uint8_t Status; // 0x50
- uint8_t SubState; // 0x51
- uint16_t Peep[32]; // 0x52
- uint8_t PeepTshirtColours[32]; // 0x92
- uint8_t NumSeats; // 0xB2
- uint8_t NumPeeps; // 0xB3
- uint8_t NextFreeSeat; // 0xB4
- uint8_t RestraintsPosition; // 0xB5
- union
- {
- int16_t SpinSpeed; // 0xB6
- int16_t CrashX; // 0xB6
- };
- uint16_t Sound2Flags; // 0xB8
- uint8_t SpinSprite; // 0xBA
- uint8_t Sound1Id; // 0xBB
- uint8_t Sound1Volume; // 0xBC
- uint8_t Sound2Id; // 0xBD
- uint8_t Sound2Volume; // 0xBE
- int8_t SoundVectorFactor;
- union
- {
- uint16_t VarC0;
- int16_t CrashY; // 0xC0
- uint16_t TimeWaiting; // 0xC0
- uint16_t CableLiftTarget; // 0xC0
- };
- uint8_t Speed; // 0xC2
- uint8_t PoweredAcceleration; // 0xC3
- union
- {
- uint8_t DodgemsCollisionDirection; // 0xC4
- uint8_t CollisionDetectionTimer; // 0xC4
- };
- uint8_t AnimationFrame; // 0xC5
- uint8_t PadC6[0x2];
- uint32_t AnimationState;
- uint8_t ScreamSoundId; // 0xCC
- uint8_t TrackSubposition;
- uint8_t NumLaps; // 0xCE
- uint8_t BrakeSpeed; // 0xCF
- uint16_t LostTimeOut; // 0xD0
- int8_t VerticalDropCountdown; // 0xD1
- uint8_t VarD3;
- uint8_t MiniGolfCurrentAnimation;
- uint8_t MiniGolfFlags; // 0xD5
- uint8_t RideSubtype; // 0xD6
- uint8_t ColoursExtended; // 0xD7
- uint8_t SeatRotation; // 0xD8
- uint8_t TargetSeatRotation; // 0xD9
-
- OpenRCT2::RCT12::TrackElemType GetTrackType() const
- {
- return static_cast(TrackTypeAndDirection >> 2);
- }
- uint8_t GetTrackDirection() const
- {
- return TrackTypeAndDirection & kRCT12VehicleTrackDirectionMask;
- }
- void SetTrackType(OpenRCT2::RCT12::TrackElemType trackType)
- {
- // set the upper 14 bits to 0
- TrackTypeAndDirection &= ~kRCT12VehicleTrackTypeMask;
- TrackTypeAndDirection |= EnumValue(trackType) << 2;
- }
- void SetTrackDirection(uint8_t trackDirection)
- {
- // set the lower 2 bits only
- TrackTypeAndDirection &= ~kRCT12VehicleTrackDirectionMask;
- TrackTypeAndDirection |= trackDirection & kRCT12VehicleTrackDirectionMask;
- }
- };
- static_assert(sizeof(Vehicle) == 0xDA);
-
- struct Peep : RCT12EntityBase
- {
- uint8_t Pad1F[0x22 - 0x1F];
- StringId NameStringIdx; // 0x22
- uint16_t NextX; // 0x24
- uint16_t NextY; // 0x26
- uint8_t NextZ; // 0x28
- uint8_t NextFlags; // 0x29
- uint8_t OutsideOfPark; // 0x2A
- uint8_t State; // 0x2B
- uint8_t SubState; // 0x2C
- uint8_t AnimationGroup; // 0x2D
- uint8_t PeepType; // 0x2E
- union
- {
- uint8_t StaffType; // 0x2F
- uint8_t NoOfRides; // 0x2F
- };
- uint8_t TshirtColour; // 0x30
- uint8_t TrousersColour; // 0x31
- uint16_t DestinationX; // 0x32
- uint16_t DestinationY; // 0x34
- uint8_t DestinationTolerance; // 0x36
- uint8_t Var37;
- uint8_t Energy; // 0x38
- uint8_t EnergyTarget; // 0x39
- uint8_t Happiness; // 0x3A
- uint8_t HappinessTarget; // 0x3B
- uint8_t Nausea; // 0x3C
- uint8_t NauseaTarget; // 0x3D
- uint8_t Hunger; // 0x3E
- uint8_t Thirst; // 0x3F
- uint8_t Toilet; // 0x40
- uint8_t Mass; // 0x41
- uint8_t TimeToConsume; // 0x42
- uint8_t Intensity; // 0x43
- uint8_t NauseaTolerance; // 0x44
- uint8_t WindowInvalidateFlags; // 0x45
- money16 PaidOnDrink; // 0x46
- uint8_t RideTypesBeenOn[16]; // 0x48
- uint32_t ItemExtraFlags; // 0x58
- RCT12RideId Photo2RideRef; // 0x5C
- RCT12RideId Photo3RideRef; // 0x5D
- RCT12RideId Photo4RideRef; // 0x5E
- uint8_t Pad5F[0x09]; // 0x5F
- RCT12RideId CurrentRide; // 0x68
- uint8_t CurrentRideStation; // 0x69
- uint8_t CurrentTrain; // 0x6A
- union
- {
- struct
- {
- uint8_t CurrentCar; // 0x6B
- uint8_t CurrentSeat; // 0x6C
- };
- uint16_t TimeToSitdown; // 0x6B
- struct
- {
- uint8_t TimeToStand; // 0x6B
- uint8_t StandingFlags; // 0x6C
- };
- };
- uint8_t SpecialSprite; // 0x6D
- uint8_t AnimationType; // 0x6E
- uint8_t NextAnimationType; // 0x6F
- uint8_t AnimationImageIdOffset; // 0x70
- uint8_t Action; // 0x71
- uint8_t AnimationFrameNum; // 0x72
- uint8_t StepProgress; // 0x73
- union
- {
- uint16_t MechanicTimeSinceCall;
- uint16_t NextInQueue; // 0x74
- };
- uint8_t Pad76;
- uint8_t Pad77;
- union
- {
- uint8_t MazeLastEdge; // 0x78
- uint8_t Direction;
- };
- RCT12RideId InteractionRideIndex;
- uint16_t TimeInQueue; // 0x7A
- uint8_t RidesBeenOn[32]; // 0x7C
- uint32_t Id; // 0x9C
- money32 CashInPocket; // 0xA0
- money32 CashSpent; // 0xA4
- int32_t ParkEntryTime; // 0xA8
- int8_t RejoinQueueTimeout; // 0xAC
- RCT12RideId PreviousRide; // 0xAD
- uint16_t PreviousRideTimeOut; // 0xAE
- RCT12PeepThought Thoughts[Limits::kMaxPeepThoughts]; // 0xB0
- uint8_t PathCheckOptimisation; // 0xC4
- union
- {
- uint8_t StaffId; // 0xC5
- RCT12RideId GuestHeadingToRideId; // 0xC5
- };
- union
- {
- uint8_t StaffOrders; // 0xC6
- uint8_t PeepIsLostCountdown; // 0xC6
- };
- RCT12RideId Photo1RideRef; // 0xC7
- uint32_t PeepFlags; // 0xC8
- RCT12xyzd8 PathfindGoal; // 0xCC
- RCT12xyzd8 PathfindHistory[4]; // 0xD0
- uint8_t NoActionFrameNum; // 0xE0
- uint8_t LitterCount; // 0xE1
- union
- {
- uint8_t TimeOnRide; // 0xE2
- uint8_t StaffMowingTimeout; // 0xE2
- };
- uint8_t DisgustingCount; // 0xE3
- union
- {
- money16 PaidToEnter; // 0xE4
- uint16_t StaffLawnsMown; // 0xE4
- uint16_t StaffRidesFixed; // 0xE4
- };
- union
- {
- money16 PaidOnRides; // 0xE6
- uint16_t StaffGardensWatered; // 0xE6
- uint16_t StaffRidesInspected; // 0xE6
- };
- union
- {
- money16 PaidOnFood; // 0xE8
- uint16_t StaffLitterSwept; // 0xE8
- };
- union
- {
- money16 PaidOnSouvenirs; // 0xEA
- uint16_t StaffBinsEmptied; // 0xEA
- };
- uint8_t NoOfFood; // 0xEC
- uint8_t NoOfDrinks; // 0xED
- uint8_t NoOfSouvenirs; // 0xEE
- uint8_t VandalismSeen; // 0xEF 0xC0 vandalism thought timeout, 0x3F vandalism tiles seen
- uint8_t VoucherType; // 0xF0
- RCT12RideId VoucherArguments; // 0xF1 ride_id or string_offset_id
- uint8_t SurroundingsThoughtTimeout; // 0xF2
- uint8_t Angriness; // 0xF3
- uint8_t TimeLost; // 0xF4 the time the peep has been lost when it reaches 254 generates the lost thought
- uint8_t DaysInQueue; // 0xF5
- uint8_t BalloonColour; // 0xF6
- uint8_t UmbrellaColour; // 0xF7
- uint8_t HatColour; // 0xF8
- RCT12RideId FavouriteRide; // 0xF9
- uint8_t FavouriteRideRating; // 0xFA
- uint8_t PadFB;
- uint32_t ItemStandardFlags; // 0xFC
- uint64_t GetItemFlags() const
- {
- return ItemStandardFlags | (static_cast(ItemExtraFlags) << 32);
- }
- };
- static_assert(sizeof(Peep) == 0x100);
-
- enum class StaffMode : uint8_t
- {
- none,
- walk,
- patrol = 3
- };
-
- union Entity
- {
- private:
- uint8_t Pad00[0x100];
-
- public:
- RCT12EntityBase Unknown;
- RCT2::Vehicle Vehicle;
- RCT2::Peep Peep;
- RCT12EntityLitter Litter;
- RCT12EntityBalloon Balloon;
- RCT12EntityDuck Duck;
- RCT12EntityJumpingFountain JumpingFountain{};
- RCT12EntityMoneyEffect MoneyEffect;
- RCT12EntityCrashedVehicleParticle CrashedVehicleParticle;
- RCT12EntityCrashSplash CrashSplash;
- RCT12EntitySteamParticle SteamParticle;
- RCT12EntityParticle MiscParticle;
- };
- static_assert(sizeof(Entity) == 0x100);
-
- struct RideRatingCalculationData
- {
- uint16_t ProximityX;
- uint16_t ProximityY;
- uint16_t ProximityZ;
- uint16_t ProximityStartX;
- uint16_t ProximityStartY;
- uint16_t ProximityStartZ;
- uint8_t CurrentRide;
- uint8_t State;
- OpenRCT2::RCT12::TrackElemType ProximityTrackType;
- uint8_t ProximityBaseHeight;
- uint16_t ProximityTotal;
- uint16_t ProximityScores[26];
- uint16_t NumBrakes;
- uint16_t NumReversers;
- uint16_t StationFlags;
- };
- static_assert(sizeof(RideRatingCalculationData) == 76);
-
- /**
- * SV6/SC6 header chunk
- * size: 0x20
- */
- struct S6Header
- {
- uint8_t Type; // 0x00
- uint8_t ClassicFlag; // 0x01
- uint16_t NumPackedObjects; // 0x02
- uint32_t Version; // 0x04
- uint32_t MagicNumber; // 0x08
- uint8_t Pad0C[0x14];
- };
- static_assert(sizeof(S6Header) == 0x20);
-
- /**
- * SC6 information chunk
- * size: 0x198
- */
- struct S6Info
- {
- ::EditorStep EditorStep;
- Scenario::Category Category; // 0x01
- Scenario::ObjectiveType ObjectiveType; // 0x02
- uint8_t ObjectiveArg1; // 0x03
- int32_t ObjectiveArg2; // 0x04
- uint16_t ObjectiveArg3; // 0x08
- uint8_t Pad00A[0x3E];
- char Name[64]; // 0x48
- char Details[256]; // 0x88
- RCTObjectEntry Entry; // 0x188
- };
- static_assert(sizeof(S6Info) == 0x198);
-
- struct S6Data
- {
- // SC6[0]
- S6Header Header;
-
- // SC6[1]
- S6Info Info;
-
- // SC6[2]
- // packed objects
-
- // SC6[3]
- union
- {
- RCTObjectEntry Objects[kRCT2ObjectEntryCount];
- struct
- {
- RCTObjectEntry RideObjects[Limits::kMaxRideObjects];
- RCTObjectEntry SceneryObjects[Limits::kMaxSmallSceneryObjects];
- RCTObjectEntry LargeSceneryObjects[Limits::kMaxLargeSceneryObjects];
- RCTObjectEntry WallSceneryObjects[Limits::kMaxWallSceneryObjects];
- RCTObjectEntry BannerObjects[Limits::kMaxBannerObjects];
- RCTObjectEntry PathObjects[Limits::kMaxPathObjects];
- RCTObjectEntry PathAdditionObjects[Limits::kMaxPathAdditionObjects];
- RCTObjectEntry SceneryGroupObjects[Limits::kMaxSceneryGroupObjects];
- RCTObjectEntry ParkEntranceObjects[Limits::kMaxParkEntranceObjects];
- RCTObjectEntry WaterObjects[Limits::kMaxWaterObjects];
- RCTObjectEntry ScenarioMetaObjects[Limits::kMaxScenarioMetaObjects];
- };
- };
-
- // SC6[4]
- uint16_t ElapsedMonths;
- uint16_t CurrentDay;
- uint32_t ScenarioTicks;
- uint32_t ScenarioSrand0;
- uint32_t ScenarioSrand1;
-
- // SC6[5]
- RCT12TileElement TileElements[Limits::kMaxTileElements];
-
- // SC6[6]
- uint32_t NextFreeTileElementPointerIndex;
- Entity Entities[Limits::kMaxEntitiesRCTCExtended];
- uint16_t EntityListsHead[EnumValue(EntityListId::count)];
- uint16_t EntityListsCount[EnumValue(EntityListId::count)];
- StringId ParkName;
- uint8_t Pad013573D6[2];
- uint32_t ParkNameArgs;
- money32 InitialCash;
- money32 CurrentLoan;
- uint32_t ParkFlags;
- money16 ParkEntranceFee;
- uint16_t RCT1ParkEntranceX;
- uint16_t RCT1ParkEntranceY;
- uint8_t Pad013573EE[2];
- uint8_t RCT1ParkEntranceZ;
- uint8_t Pad013573F1;
- RCT12PeepSpawn PeepSpawns[Limits::kMaxPeepSpawns];
- uint8_t GuestCountChangeModifier;
- uint8_t CurrentResearchLevel;
- uint8_t Pad01357400[4];
- uint32_t ResearchedRideTypes[Limits::kMaxResearchedRideTypeQuads];
- uint32_t ResearchedRideEntries[Limits::kMaxResearchedRideEntryQuads];
- uint32_t ResearchedTrackTypesA[128];
- uint32_t ResearchedTrackTypesB[128];
-
- // SC6[7]
- uint16_t GuestsInPark;
- uint16_t GuestsHeadingForPark;
-
- // Ignored in scenario
- money32 ExpenditureTable[Limits::kExpenditureTableMonthCount][Limits::kExpenditureTypeCount];
-
- // SC6[8]
- uint16_t LastGuestsInPark;
- uint8_t Pad01357BCA[3];
- uint8_t HandymanColour;
- uint8_t MechanicColour;
- uint8_t SecurityColour;
-
- // Ignored in scenario
- uint32_t ResearchedSceneryItems[Limits::kMaxResearchedSceneryItemQuads];
-
- // SC6[9]
- uint16_t ParkRating;
-
- // Ignored in scenario
- uint8_t ParkRatingHistory[kParkRatingHistorySize];
- uint8_t GuestsInParkHistory[kGuestsInParkHistorySize];
-
- // SC6[10]
- uint8_t ActiveResearchTypes;
- uint8_t ResearchProgressStage;
- uint32_t LastResearchedItemSubject;
- uint8_t Pad01357CF8[1000];
- uint32_t NextResearchItem;
- uint16_t ResearchProgress;
- uint8_t NextResearchCategory;
- uint8_t NextResearchExpectedDay;
- uint8_t NextResearchExpectedMonth;
- uint8_t GuestInitialHappiness;
- uint16_t ParkSize;
- uint16_t GuestGenerationProbability;
- uint16_t TotalRideValueForMoney;
- money32 MaximumLoan;
- money16 GuestInitialCash;
- uint8_t GuestInitialHunger;
- uint8_t GuestInitialThirst;
- Scenario::ObjectiveType ObjectiveType;
- uint8_t ObjectiveYear;
- uint8_t Pad013580FA[2];
- money32 ObjectiveCurrency;
- uint16_t ObjectiveGuests;
- uint8_t CampaignWeeksLeft[20];
- uint8_t CampaignRideIndex[22];
-
- // Ignored in scenario
- money32 BalanceHistory[Limits::kFinanceGraphSize];
-
- // SC6[11]
- money32 CurrentExpenditure;
- money32 CurrentProfit;
- money32 WeeklyProfitAverageDividend;
- uint16_t WeeklyProfitAverageDivisor;
- uint8_t Pad0135833A[2];
-
- // Ignored in scenario
- money32 WeeklyProfitHistory[Limits::kFinanceGraphSize];
-
- // SC6[12]
- money32 ParkValue;
-
- // Ignored in scenario
- money32 ParkValueHistory[Limits::kFinanceGraphSize];
-
- // SC6[13]
- money32 CompletedCompanyValue;
- uint32_t TotalAdmissions;
- money32 IncomeFromAdmissions;
- money32 CompanyValue;
- uint8_t PeepWarningThrottle[16];
- RCT12Award Awards[Limits::kMaxAwards];
- money16 LandPrice;
- money16 ConstructionRightsPrice;
- uint16_t Word01358774;
- uint8_t Pad01358776[2];
- uint32_t CDKey;
- uint8_t Pad0135877C[64];
- uint32_t GameVersionNumber;
- money32 CompletedCompanyValueRecord;
- uint32_t LoanHash;
- uint16_t RideCount;
- uint8_t Pad013587CA[6];
- money32 HistoricalProfit;
- uint8_t Pad013587D4[4];
- char ScenarioCompletedName[32];
- money32 Cash;
- uint8_t Pad013587FC[50];
- uint16_t ParkRatingCasualtyPenalty;
- uint16_t MapSizeUnits;
- uint16_t MapSizeMinus2;
- uint16_t MapSize;
- uint16_t MapMaxXy;
- uint32_t SamePriceThroughout;
- uint16_t SuggestedMaxGuests;
- uint16_t ParkRatingWarningDays;
- uint8_t LastEntranceStyle;
- uint8_t RCT1WaterColour;
- uint8_t Pad01358842[2];
- RCT12ResearchItem ResearchItems[Limits::kMaxResearchItems];
- uint16_t MapBaseZ;
- char ScenarioName[64];
- char ScenarioDescription[256];
- uint8_t CurrentInterestRate;
- uint8_t Pad0135934B;
- uint32_t SamePriceThroughoutExtended;
- int16_t ParkEntranceX[Limits::kMaxParkEntrances];
- int16_t ParkEntranceY[Limits::kMaxParkEntrances];
- int16_t ParkEntranceZ[Limits::kMaxParkEntrances];
- uint8_t ParkEntranceDirection[Limits::kMaxParkEntrances];
- char ScenarioFilename[256];
- uint8_t SavedExpansionPackNames[3256];
- RCT12Banner Banners[Limits::kMaxBanners];
- char CustomStrings[Limits::kMaxUserStrings][Limits::kMaxUserStringLength];
- uint32_t GameTicks1;
- Ride Rides[Limits::kMaxRidesInPark];
- uint16_t SavedAge; // unused
- int16_t SavedViewX;
- int16_t SavedViewY;
- uint8_t SavedViewZoom;
- uint8_t SavedViewRotation;
- RCT12MapAnimation MapAnimations[Limits::kMaxAnimatedObjects];
- uint16_t NumMapAnimations;
- uint8_t Pad0138B582[2];
- RideRatingCalculationData RideRatingsCalcData;
- uint8_t Pad0138B5D0[60];
- RCT12RideMeasurement RideMeasurements[8];
- uint32_t NextGuestIndex;
- uint16_t GrassAndSceneryTilepos;
- uint32_t PatrolAreas[(Limits::kMaxStaff + Limits::kStaffTypeCount) * Limits::kPatrolAreaSize];
- StaffMode StaffModes[Limits::kMaxStaff + Limits::kStaffTypeCount];
- uint8_t Pad13CA73E;
- uint8_t Pad13CA73F;
- uint8_t Byte13CA740;
- uint8_t Pad13CA741;
- uint8_t Byte13CA742[4]; // unused
- RCT12::ClimateType Climate;
- uint8_t Pad013CA747;
- uint16_t WeatherUpdateTimer;
- uint8_t CurrentWeather;
- uint8_t NextWeather;
- uint8_t Temperature;
- uint8_t NextTemperature;
- uint8_t CurrentWeatherEffect;
- uint8_t NextWeatherEffect;
- uint8_t CurrentWeatherGloom;
- uint8_t NextWeatherGloom;
- uint8_t CurrentWeatherLevel;
- uint8_t NextWeatherLevel;
- RCT12NewsItem recentMessages[Limits::kMaxRecentNewsItems];
- RCT12NewsItem archivedMessages[Limits::kMaxArchivedNewsItems];
- char RCT1ScenarioName[62]; // Unused in RCT2
- uint16_t RCT1ScenarioSlotIndex; // Unused in RCT2
- uint32_t RCT1ScenarioFlags; // Unused in RCT2
- uint16_t WidePathTileLoopX;
- uint16_t WidePathTileLoopY;
- uint8_t Pad13CE778[434];
- };
- static_assert(sizeof(S6Data) == 0x5a3c4a);
-
- struct StexEntry
- {
- StringId ScenarioName; // 0x00
- StringId ParkName; // 0x02
- StringId Details; // 0x04
- uint8_t Var06;
- };
- static_assert(sizeof(StexEntry) == 7);
-#pragma pack(pop)
-
- ObjectEntryIndex RCT2RideTypeToOpenRCT2RideType(uint8_t rct2RideType, const RideObjectEntry& rideEntry);
- bool RCT2RideTypeNeedsConversion(uint8_t rct2RideType);
- uint8_t OpenRCT2RideTypeToRCT2RideType(ObjectEntryIndex openrct2Type);
-
- enum class OriginalRideClass
- {
- regular,
- wildMouse,
- flatRide,
- };
-
- OpenRCT2::TrackElemType RCT2TrackTypeToOpenRCT2(
- OpenRCT2::RCT12::TrackElemType origTrackType, ride_type_t rideType, bool isFlatRide);
- OpenRCT2::TrackElemType RCT2TrackTypeToOpenRCT2(
- OpenRCT2::RCT12::TrackElemType origTrackType, OriginalRideClass originalClass);
- OpenRCT2::RCT12::TrackElemType OpenRCT2TrackTypeToRCT2(OpenRCT2::TrackElemType origTrackType);
-
- struct FootpathMapping
- {
- std::string_view Original;
- std::string_view NormalSurface;
- std::string_view QueueSurface;
- std::string_view Railing;
- };
-
- const FootpathMapping* GetFootpathSurfaceId(
- const ObjectEntryDescriptor& desc, bool ideallyLoaded = false, bool isQueue = false);
- std::optional GetBestObjectEntryForSurface(std::string_view surface, std::string_view railings);
-
- static constexpr std::string_view DefaultTerrainSurfaces[] = {
- "rct2.terrain_surface.grass", "rct2.terrain_surface.sand", "rct2.terrain_surface.dirt",
- "rct2.terrain_surface.rock", "rct2.terrain_surface.martian", "rct2.terrain_surface.chequerboard",
- "rct2.terrain_surface.grass_clumps", "rct2.terrain_surface.ice", "rct2.terrain_surface.grid_red",
- "rct2.terrain_surface.grid_yellow", "rct2.terrain_surface.grid_purple", "rct2.terrain_surface.grid_green",
- "rct2.terrain_surface.sand_red", "rct2.terrain_surface.sand_brown",
- };
-
- // Additional surface styles added to OpenRCT2 as a feature if RCT1 linked
- static constexpr std::string_view OpenRCT2HybridTerrainSurfaces[] = {
- "rct1aa.terrain_surface.roof_red",
- "rct1ll.terrain_surface.roof_grey",
- "rct1ll.terrain_surface.rust",
- "rct1ll.terrain_surface.wood",
- };
-
- static constexpr std::string_view DefaultTerrainEdges[] = {
- "rct2.terrain_edge.rock",
- "rct2.terrain_edge.wood_red",
- "rct2.terrain_edge.wood_black",
- "rct2.terrain_edge.ice",
- };
-
- // Additional surface edges added to OpenRCT2 as a feature if RCT1 was linked
- static constexpr std::string_view OpenRCT2HybridTerrainEdges[] = {
- "rct1.terrain_edge.brick", "rct1.terrain_edge.iron", "rct1aa.terrain_edge.grey",
- "rct1aa.terrain_edge.yellow", "rct1aa.terrain_edge.red", "rct1ll.terrain_edge.purple",
- "rct1ll.terrain_edge.green", "rct1ll.terrain_edge.stone_brown", "rct1ll.terrain_edge.stone_grey",
- "rct1ll.terrain_edge.skyscraper_a", "rct1ll.terrain_edge.skyscraper_b",
- };
-} // namespace OpenRCT2::RCT2
-
-std::vector DecryptSea(const fs::path& path);
diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp
index 037e682bef15..1c510ee241a1 100644
--- a/src/openrct2/ride/TrackDesign.cpp
+++ b/src/openrct2/ride/TrackDesign.cpp
@@ -32,6 +32,7 @@
#include "../actions/WallPlaceAction.h"
#include "../actions/WallRemoveAction.h"
#include "../audio/Audio.h"
+#include "../compatibility/rct2/RCT2.h"
#include "../config/Config.h"
#include "../core/DataSerialiser.h"
#include "../core/File.h"
@@ -53,7 +54,6 @@
#include "../object/ObjectRepository.h"
#include "../object/SmallSceneryEntry.h"
#include "../object/StationObject.h"
-#include "../rct2/RCT2.h"
#include "../ride/RideConstruction.h"
#include "../sawyer_coding/SawyerCoding.h"
#include "../world/Footpath.h"
diff --git a/src/openrct2/ride/TrackDesignSave.cpp b/src/openrct2/ride/TrackDesignSave.cpp
index 478643f98559..4a1a69b55707 100644
--- a/src/openrct2/ride/TrackDesignSave.cpp
+++ b/src/openrct2/ride/TrackDesignSave.cpp
@@ -11,6 +11,7 @@
#include "../Diagnostic.h"
#include "../Game.h"
#include "../audio/Audio.h"
+#include "../compatibility/rct2/RCT2.h"
#include "../drawing/Drawing.h"
#include "../interface/Viewport.h"
#include "../localisation/Formatter.h"
@@ -21,7 +22,6 @@
#include "../object/LargeSceneryObject.h"
#include "../object/ObjectList.h"
#include "../object/ObjectManager.h"
-#include "../rct2/RCT2.h"
#include "../sawyer_coding/SawyerCoding.h"
#include "../windows/Intent.h"
#include "../world/Footpath.h"
diff --git a/src/openrct2/scenario/ScenarioRepository.cpp b/src/openrct2/scenario/ScenarioRepository.cpp
index c24dd43787f1..03a380bb36e9 100644
--- a/src/openrct2/scenario/ScenarioRepository.cpp
+++ b/src/openrct2/scenario/ScenarioRepository.cpp
@@ -14,6 +14,7 @@
#include "../Game.h"
#include "../ParkImporter.h"
#include "../PlatformEnvironment.h"
+#include "../compatibility/rct2/RCT2.h"
#include "../compatibility/shared/CSStringConverter.h"
#include "../compatibility/shared/RCT12.h"
#include "../config/Config.h"
@@ -28,7 +29,6 @@
#include "../localisation/LocalisationService.h"
#include "../platform/Crash.h"
#include "../platform/Platform.h"
-#include "../rct2/RCT2.h"
#include "../sawyer_coding/SawyerChunkReader.h"
#include "Scenario.h"
#include "ScenarioCategory.h"
diff --git a/test/tests/S6ImportExportTests.cpp b/test/tests/S6ImportExportTests.cpp
index 774edce68072..d6a9390ef8e1 100644
--- a/test/tests/S6ImportExportTests.cpp
+++ b/test/tests/S6ImportExportTests.cpp
@@ -26,7 +26,7 @@
#include
#include
#include
-#include
+#include
#include
#include
#include
From 85b9a1a5bb90e6a32b393eee29ddec8531737cf5 Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Sat, 10 Jan 2026 00:49:50 -0300
Subject: [PATCH 18/26] Move RCT2.cpp to /compatibility/rct2
---
.../{ => compatibility}/rct2/RCT2.cpp | 16 ++--
src/openrct2/compatibility/rct2/RCT2.h | 14 +--
src/openrct2/libopenrct2.vcxproj | 85 ++++++++++++++++++-
3 files changed, 99 insertions(+), 16 deletions(-)
rename src/openrct2/{ => compatibility}/rct2/RCT2.cpp (97%)
diff --git a/src/openrct2/rct2/RCT2.cpp b/src/openrct2/compatibility/rct2/RCT2.cpp
similarity index 97%
rename from src/openrct2/rct2/RCT2.cpp
rename to src/openrct2/compatibility/rct2/RCT2.cpp
index 25090cb4e9c4..c2f85b48c70d 100644
--- a/src/openrct2/rct2/RCT2.cpp
+++ b/src/openrct2/compatibility/rct2/RCT2.cpp
@@ -7,15 +7,15 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
-#include "../compatibility/rct2/RCT2.h"
+#include "../rct2/RCT2.h"
-#include "../Context.h"
-#include "../object/Object.h"
-#include "../object/ObjectList.h"
-#include "../object/ObjectManager.h"
-#include "../ride/Ride.h"
-#include "../ride/RideData.h"
-#include "../ride/Track.h"
+#include "../../Context.h"
+#include "../../object/Object.h"
+#include "../../object/ObjectList.h"
+#include "../../object/ObjectManager.h"
+#include "../../ride/Ride.h"
+#include "../../ride/RideData.h"
+#include "../../ride/Track.h"
#include
#include
diff --git a/src/openrct2/compatibility/rct2/RCT2.h b/src/openrct2/compatibility/rct2/RCT2.h
index ad8f3abadbd1..d7b902912049 100644
--- a/src/openrct2/compatibility/rct2/RCT2.h
+++ b/src/openrct2/compatibility/rct2/RCT2.h
@@ -9,13 +9,13 @@
#pragma once
-#include "../compatibility/rct2/Limits.h"
-#include "../compatibility/shared/RCT12.h"
-#include "../core/FileSystem.hpp"
-#include "../core/FixedPoint.hpp"
-#include "../ride/Angles.h"
-#include "../ride/RideRatings.h"
-#include "../world/ParkData.h"
+#include "../../core/FileSystem.hpp"
+#include "../../core/FixedPoint.hpp"
+#include "../../ride/Angles.h"
+#include "../../ride/RideRatings.h"
+#include "../../world/ParkData.h"
+#include "../rct2/Limits.h"
+#include "../shared/RCT12.h"
#include
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index 0b4f73c22cca..0d68ca64a241 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -790,6 +790,87 @@
+
+ Level4
+ 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
+ 4263;4265;4548;4549;4555
+ USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
+ MultiThreaded
+ true
+ true
+ /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
+ Full
+ true
+ true
+ false
+ Speed
+ NoListing
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Default
+ Default
+ false
+ Default
+ Column
+ false
+ Prompt
+ false
+ Sync
+ false
+ false
+ false
+ NotSet
+ NotSet
+ Precise
+ true
+ openrct2_pch.h
+ false
+ false
+ false
+ Default
+ false
+ Default
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ Cdecl
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
+ Use
+ openrct2_pch.h
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
+ false
+ false
+ false
+ true
+ false
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ true
+ false
+ false
+ Default
+ false
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
+ false
+ true
+ true
+ true
+ C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
+ ProgramDatabase
+ false
+ false
+ false
+ InheritWarningLevel
+ true
+ false
+ true
+
Level4
4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
@@ -2041,7 +2122,6 @@
-
@@ -2168,5 +2248,8 @@
{c453da76-44b3-4ac8-aaa2-2b64a76993a5}
+
+
+
From 39bff6c5eebcc452db46ab80a31443435c08393a Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Sat, 10 Jan 2026 00:57:50 -0300
Subject: [PATCH 19/26] Fix missing include error in tests project
---
test/tests/S6ImportExportTests.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/tests/S6ImportExportTests.cpp b/test/tests/S6ImportExportTests.cpp
index d6a9390ef8e1..220801589cc4 100644
--- a/test/tests/S6ImportExportTests.cpp
+++ b/test/tests/S6ImportExportTests.cpp
@@ -26,7 +26,7 @@
#include
#include
#include
-#include
+#include
#include
#include
#include
From 6c0c965cdcc00c82b128cd24a60fe26f48d08a9d Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Sat, 10 Jan 2026 00:57:50 -0300
Subject: [PATCH 20/26] Fix missing include error in tests project
---
test/tests/S6ImportExportTests.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/tests/S6ImportExportTests.cpp b/test/tests/S6ImportExportTests.cpp
index d6a9390ef8e1..99df2652113f 100644
--- a/test/tests/S6ImportExportTests.cpp
+++ b/test/tests/S6ImportExportTests.cpp
@@ -18,6 +18,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -26,7 +27,6 @@
#include
#include
#include
-#include
#include
#include
#include
From 17ef4edc7c007c2f29dc42f0c0db111c533ebd0c Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Sat, 10 Jan 2026 01:18:41 -0300
Subject: [PATCH 21/26] Fix libopenrct2.vcxproj file
---
src/openrct2/libopenrct2.vcxproj | 1042 +-----------------------------
1 file changed, 1 insertion(+), 1041 deletions(-)
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index 0d68ca64a241..d5974615c415 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -790,1059 +790,19 @@
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
+
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
From a8a1c9f20ef77bc545535402b3ac7eb9576fb2af Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Sat, 10 Jan 2026 01:18:41 -0300
Subject: [PATCH 22/26] Fix libopenrct2.vcxproj file
---
src/openrct2/libopenrct2.vcxproj | 1066 +-----------------------------
1 file changed, 13 insertions(+), 1053 deletions(-)
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index 0d68ca64a241..3633cf5c8ade 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -790,1059 +790,19 @@
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
-
- Level4
- 4068;4091;4100;4121;4132;4200;4201;4204;4206;4221;4244;
- 4263;4265;4548;4549;4555
- USE_FRIBIDI;__ENABLE_DISCORD__;_UNICODE;UNICODE;NDEBUG;ENABLE_SCRIPTING;__AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;
- MultiThreaded
- true
- true
- /utf-8 /std:c++20 /permissive- /Zc:externConstexpr /Zc:char8_t-
- Full
- true
- true
- false
- Speed
- NoListing
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Default
- Default
- false
- Default
- Column
- false
- Prompt
- false
- Sync
- false
- false
- false
- NotSet
- NotSet
- Precise
- true
- openrct2_pch.h
- false
- false
- false
- Default
- false
- Default
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- Cdecl
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\bin\libopenrct2.pdb
- Use
- openrct2_pch.h
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.pch
- false
- false
- false
- true
- false
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- true
- false
- false
- Default
- false
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\libopenrct2.tlog\
- false
- true
- true
- true
- C:\Users\Matheus\Documents\GitHub\OpenRCT2\obj\libopenrct2\Release_x64\
- ProgramDatabase
- false
- false
- false
- InheritWarningLevel
- true
- false
- true
-
+
+
+
+
+
+
+
+
+
+
+
+
+
From 5e90d79853563d10f01a04c80419c451446567fe Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Sat, 10 Jan 2026 01:40:15 -0300
Subject: [PATCH 23/26] Change rct2.h location in libopenrct2.vcxproj
---
src/openrct2/libopenrct2.vcxproj | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index 3633cf5c8ade..e06fea068177 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -176,7 +176,6 @@
-
@@ -189,6 +188,7 @@
+
From edef785e59efe27118b8f79246ad5c93674391dc Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Sat, 10 Jan 2026 01:40:15 -0300
Subject: [PATCH 24/26] Change rct2.h location in libopenrct2.vcxproj
---
src/openrct2/libopenrct2.vcxproj | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index 3633cf5c8ade..2a02d4d8297c 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -176,7 +176,6 @@
-
@@ -189,6 +188,7 @@
+
@@ -1208,8 +1208,5 @@
{c453da76-44b3-4ac8-aaa2-2b64a76993a5}
-
-
-
From cd25a1f67b70adc0295226d609324bb0658f39f9 Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Sat, 10 Jan 2026 02:34:27 -0300
Subject: [PATCH 25/26] Create FlagHoldersFwd.h
---
src/openrct2/compatibility/FlagHoldersFwd.h | 20 ++++++++++++++++++++
src/openrct2/compatibility/rct2/RCT2.h | 6 +-----
src/openrct2/compatibility/shared/RCT12.h | 5 +----
src/openrct2/libopenrct2.vcxproj | 1 +
4 files changed, 23 insertions(+), 9 deletions(-)
create mode 100644 src/openrct2/compatibility/FlagHoldersFwd.h
diff --git a/src/openrct2/compatibility/FlagHoldersFwd.h b/src/openrct2/compatibility/FlagHoldersFwd.h
new file mode 100644
index 000000000000..7e33a091f423
--- /dev/null
+++ b/src/openrct2/compatibility/FlagHoldersFwd.h
@@ -0,0 +1,20 @@
+/*****************************************************************************
+ * Copyright (c) 2014-2026 OpenRCT2 developers
+ *
+ * For a complete list of all authors, please refer to contributors.md
+ * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
+ *
+ * OpenRCT2 is licensed under the GNU General Public License version 3.
+ *****************************************************************************/
+
+#pragma once
+
+#include "../core/FlagHolder.hpp"
+
+#include
+
+enum class BannerFlag : uint8_t; // Banner.h
+enum class RideInvalidateFlag : uint8_t; // Ride.h
+
+using BannerFlags = FlagHolder;
+using RideInvalidateFlags = FlagHolder;
diff --git a/src/openrct2/compatibility/rct2/RCT2.h b/src/openrct2/compatibility/rct2/RCT2.h
index d7b902912049..fbad465db20a 100644
--- a/src/openrct2/compatibility/rct2/RCT2.h
+++ b/src/openrct2/compatibility/rct2/RCT2.h
@@ -14,6 +14,7 @@
#include "../../ride/Angles.h"
#include "../../ride/RideRatings.h"
#include "../../world/ParkData.h"
+#include "../FlagHoldersFwd.h"
#include "../rct2/Limits.h"
#include "../shared/RCT12.h"
@@ -22,13 +23,8 @@
struct RideObjectEntry;
enum class EditorStep : uint8_t;
enum class MechanicStatus : uint8_t;
-enum class RideInvalidateFlag : uint8_t;
enum class VehicleColourSettings : uint8_t;
-template
-struct FlagHolder;
-using RideInvalidateFlags = FlagHolder;
-
namespace OpenRCT2::Scenario
{
enum class Category : uint8_t;
diff --git a/src/openrct2/compatibility/shared/RCT12.h b/src/openrct2/compatibility/shared/RCT12.h
index 6d5d4fa0b7bf..ed3209261c5c 100644
--- a/src/openrct2/compatibility/shared/RCT12.h
+++ b/src/openrct2/compatibility/shared/RCT12.h
@@ -11,14 +11,13 @@
// Structures shared between both RCT1 and RCT2.
-#include "../../core/EnumUtils.hpp"
-#include "../../core/FlagHolder.hpp"
#include "../../core/Money.hpp"
#include "../../entity/Fountain.h"
#include "../../management/Research.h"
#include "../../object/Object.h"
#include "../../ride/RideTypes.h"
#include "../../world/tile_element/TileElementType.h"
+#include "../FlagHoldersFwd.h"
#include "Limits.h"
#include
@@ -382,8 +381,6 @@ constexpr uint8_t kRCT12InversionAndHoleMask = 0b00011111;
constexpr uint8_t kRCT12RideNumDropsMask = 0b00111111;
enum class RideColourScheme : uint8_t;
-enum class BannerFlag : uint8_t;
-using BannerFlags = FlagHolder;
enum
{
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index 2a02d4d8297c..d98e962b87f6 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -176,6 +176,7 @@
+
From c42788eeb2db537ec071873837aee9e06d1d06d7 Mon Sep 17 00:00:00 2001
From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com>
Date: Sat, 10 Jan 2026 02:54:40 -0300
Subject: [PATCH 26/26] Tidy up some header includes
---
src/openrct2/compatibility/rct2/RCT2.cpp | 2 +-
src/openrct2/compatibility/shared/ScenarioPatcher.cpp | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/openrct2/compatibility/rct2/RCT2.cpp b/src/openrct2/compatibility/rct2/RCT2.cpp
index c2f85b48c70d..89bdbf59012f 100644
--- a/src/openrct2/compatibility/rct2/RCT2.cpp
+++ b/src/openrct2/compatibility/rct2/RCT2.cpp
@@ -7,7 +7,7 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
-#include "../rct2/RCT2.h"
+#include "RCT2.h"
#include "../../Context.h"
#include "../../object/Object.h"
diff --git a/src/openrct2/compatibility/shared/ScenarioPatcher.cpp b/src/openrct2/compatibility/shared/ScenarioPatcher.cpp
index 762308c1daf5..7709a1d5cdbb 100644
--- a/src/openrct2/compatibility/shared/ScenarioPatcher.cpp
+++ b/src/openrct2/compatibility/shared/ScenarioPatcher.cpp
@@ -7,7 +7,7 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
-#include "../shared/ScenarioPatcher.h"
+#include "ScenarioPatcher.h"
#include "../../Context.h"
#include "../../Game.h"