diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index faf500ebba..2073d293f2 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -88,6 +88,7 @@ jobs:
path: artifacts
if-no-files-found: error
- name: Run Tests
+ if: matrix.platform != 'arm64'
run: . scripts/setenv -q && run-tests
- name: Upload artifacts (openrct2.org)
run: |
diff --git a/openrct2.common.props b/openrct2.common.props
index 85a183c3b4..e111b98460 100644
--- a/openrct2.common.props
+++ b/openrct2.common.props
@@ -19,6 +19,7 @@
x86-windows-static
x64-windows-static
+ arm64-windows-static
true
@@ -53,7 +54,8 @@
C4549: 'operator': operator before comma has no effect; did you intend 'operator'?
C4555: expression has no effect; expected expression with side-effect
-->
- __AVX2__;__SSE4_1__;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;_USE_MATH_DEFINES;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN%(PreprocessorDefinitions)
+ OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;_USE_MATH_DEFINES;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;NOMINMAX;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions)
+ __AVX2__;__SSE4_1__;%(PreprocessorDefinitions)
ENABLE_SCRIPTING;%(PreprocessorDefinitions)
MultiThreaded
MultiThreadedDLL
@@ -79,7 +81,9 @@
DebugFull
- benchmark.lib;brotlicommon-static.lib;brotlidec-static.lib;brotlienc-static.lib;libbreakpadd.lib;libbreakpad_clientd.lib;bz2d.lib;discord-rpc.lib;freetyped.lib;libpng16d.lib;speexdsp.lib;SDL2d.lib;zip.lib;zlibd.lib;%(AdditionalDependencies)
+ benchmark.lib;brotlicommon-static.lib;brotlidec-static.lib;brotlienc-static.lib;%(AdditionalDependencies)
+ libbreakpadd.lib;libbreakpad_clientd.lib;%(AdditionalDependencies)
+ bz2d.lib;discord-rpc.lib;freetyped.lib;libpng16d.lib;speexdsp.lib;SDL2d.lib;zip.lib;zlibd.lib;%(AdditionalDependencies)
@@ -98,7 +102,9 @@
DebugFull
true
true
- benchmark.lib;brotlicommon-static.lib;brotlidec-static.lib;brotlienc-static.lib;libbreakpad.lib;libbreakpad_client.lib;bz2.lib;discord-rpc.lib;freetype.lib;libpng16.lib;speexdsp.lib;SDL2.lib;zip.lib;zlib.lib;%(AdditionalDependencies)
+ benchmark.lib;brotlicommon-static.lib;brotlidec-static.lib;brotlienc-static.lib;%(AdditionalDependencies)
+ libbreakpad.lib;libbreakpad_client.lib;%(AdditionalDependencies)
+ bz2.lib;discord-rpc.lib;freetype.lib;libpng16.lib;speexdsp.lib;SDL2.lib;zip.lib;zlib.lib;%(AdditionalDependencies)
diff --git a/openrct2.proj b/openrct2.proj
index 21d12d0a36..80ac265f3d 100644
--- a/openrct2.proj
+++ b/openrct2.proj
@@ -21,7 +21,7 @@
/D "OPENRCT2_COMMIT_SHA1=\"$(OPENRCT2_SHA1)\"" $(OPENRCT2_CL_ADDITIONALOPTIONS)
/D "OPENRCT2_COMMIT_SHA1_SHORT=\"$(OPENRCT2_SHA1_SHORT)\"" $(OPENRCT2_CL_ADDITIONALOPTIONS)
/D "OPENRCT2_VERSION_TAG=\"$(OPENRCT2_DESCRIBE)\"" $(OPENRCT2_CL_ADDITIONALOPTIONS)
- /D "USE_BREAKPAD" $(OPENRCT2_CL_ADDITIONALOPTIONS)
+ /D "USE_BREAKPAD" $(OPENRCT2_CL_ADDITIONALOPTIONS)
$(MsBuildThisFileDirectory)
$(RootDir)bin\
@@ -41,6 +41,8 @@
69e487023027c2bb199b40b23cce371cd1b4dfde
https://github.com/OpenRCT2/Dependencies/releases/download/v32/openrct2-libs-v32-x64-windows-static.zip
6eb97a49ad30442fe6d08799a0561d7cf0c95d40
+ https://github.com/OpenRCT2/Dependencies/releases/download/v32/openrct2-libs-v32-arm64-windows-static.zip
+ fa5f067fcfb5e76c4d4fb6f2211b422cbbe25f26
2fe3bd994b3189899d93f1d5a881e725e046fdc2
https://github.com/google/googletest/archive/$(GtestVersion).zip
058b9df80244c03f1633cb06e9f70471a29ebb8e
@@ -117,7 +119,7 @@
+ Condition="'$(TestConfig)'!='true' and '$(Platform)'!='ARM64'">
diff --git a/openrct2.sln b/openrct2.sln
index f8e4452fdf..6d4ece018d 100644
--- a/openrct2.sln
+++ b/openrct2.sln
@@ -35,50 +35,72 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
+ Debug|arm64 = Debug|arm64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
+ Release|arm64 = Release|arm64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7A9A57D5-7006-4208-A290-5491BA3C8808}.Debug|Win32.ActiveCfg = Debug|Win32
{7A9A57D5-7006-4208-A290-5491BA3C8808}.Debug|Win32.Build.0 = Debug|Win32
{7A9A57D5-7006-4208-A290-5491BA3C8808}.Debug|x64.ActiveCfg = Debug|x64
{7A9A57D5-7006-4208-A290-5491BA3C8808}.Debug|x64.Build.0 = Debug|x64
+ {7A9A57D5-7006-4208-A290-5491BA3C8808}.Debug|arm64.ActiveCfg = Debug|arm64
+ {7A9A57D5-7006-4208-A290-5491BA3C8808}.Debug|arm64.Build.0 = Debug|arm64
{7A9A57D5-7006-4208-A290-5491BA3C8808}.Release|Win32.ActiveCfg = Release|Win32
{7A9A57D5-7006-4208-A290-5491BA3C8808}.Release|Win32.Build.0 = Release|Win32
{7A9A57D5-7006-4208-A290-5491BA3C8808}.Release|x64.ActiveCfg = Release|x64
{7A9A57D5-7006-4208-A290-5491BA3C8808}.Release|x64.Build.0 = Release|x64
+ {7A9A57D5-7006-4208-A290-5491BA3C8808}.Release|arm64.ActiveCfg = Release|arm64
+ {7A9A57D5-7006-4208-A290-5491BA3C8808}.Release|arm64.Build.0 = Release|arm64
{D24D94F6-2A74-480C-B512-629C306CE92F}.Debug|Win32.ActiveCfg = Debug|Win32
{D24D94F6-2A74-480C-B512-629C306CE92F}.Debug|Win32.Build.0 = Debug|Win32
{D24D94F6-2A74-480C-B512-629C306CE92F}.Debug|x64.ActiveCfg = Debug|x64
{D24D94F6-2A74-480C-B512-629C306CE92F}.Debug|x64.Build.0 = Debug|x64
+ {D24D94F6-2A74-480C-B512-629C306CE92F}.Debug|arm64.ActiveCfg = Debug|arm64
+ {D24D94F6-2A74-480C-B512-629C306CE92F}.Debug|arm64.Build.0 = Debug|arm64
{D24D94F6-2A74-480C-B512-629C306CE92F}.Release|Win32.ActiveCfg = Release|Win32
{D24D94F6-2A74-480C-B512-629C306CE92F}.Release|Win32.Build.0 = Release|Win32
{D24D94F6-2A74-480C-B512-629C306CE92F}.Release|x64.ActiveCfg = Release|x64
{D24D94F6-2A74-480C-B512-629C306CE92F}.Release|x64.Build.0 = Release|x64
+ {D24D94F6-2A74-480C-B512-629C306CE92F}.Release|arm64.ActiveCfg = Release|arm64
+ {D24D94F6-2A74-480C-B512-629C306CE92F}.Release|arm64.Build.0 = Release|arm64
{62B020FA-E4FB-4C6E-B32A-DC999470F155}.Debug|Win32.ActiveCfg = Debug|Win32
{62B020FA-E4FB-4C6E-B32A-DC999470F155}.Debug|Win32.Build.0 = Debug|Win32
{62B020FA-E4FB-4C6E-B32A-DC999470F155}.Debug|x64.ActiveCfg = Debug|x64
{62B020FA-E4FB-4C6E-B32A-DC999470F155}.Debug|x64.Build.0 = Debug|x64
+ {62B020FA-E4FB-4C6E-B32A-DC999470F155}.Debug|arm64.ActiveCfg = Debug|arm64
+ {62B020FA-E4FB-4C6E-B32A-DC999470F155}.Debug|arm64.Build.0 = Debug|arm64
{62B020FA-E4FB-4C6E-B32A-DC999470F155}.Release|Win32.ActiveCfg = Release|Win32
{62B020FA-E4FB-4C6E-B32A-DC999470F155}.Release|Win32.Build.0 = Release|Win32
{62B020FA-E4FB-4C6E-B32A-DC999470F155}.Release|x64.ActiveCfg = Release|x64
{62B020FA-E4FB-4C6E-B32A-DC999470F155}.Release|x64.Build.0 = Release|x64
+ {62B020FA-E4FB-4C6E-B32A-DC999470F155}.Release|arm64.ActiveCfg = Release|arm64
+ {62B020FA-E4FB-4C6E-B32A-DC999470F155}.Release|arm64.Build.0 = Release|arm64
{8DD8AB7D-2EA6-44E3-8265-BAF08E832951}.Debug|Win32.ActiveCfg = Debug|Win32
{8DD8AB7D-2EA6-44E3-8265-BAF08E832951}.Debug|Win32.Build.0 = Debug|Win32
{8DD8AB7D-2EA6-44E3-8265-BAF08E832951}.Debug|x64.ActiveCfg = Debug|x64
{8DD8AB7D-2EA6-44E3-8265-BAF08E832951}.Debug|x64.Build.0 = Debug|x64
+ {8DD8AB7D-2EA6-44E3-8265-BAF08E832951}.Debug|arm64.ActiveCfg = Debug|arm64
+ {8DD8AB7D-2EA6-44E3-8265-BAF08E832951}.Debug|arm64.Build.0 = Debug|arm64
{8DD8AB7D-2EA6-44E3-8265-BAF08E832951}.Release|Win32.ActiveCfg = Release|Win32
{8DD8AB7D-2EA6-44E3-8265-BAF08E832951}.Release|Win32.Build.0 = Release|Win32
{8DD8AB7D-2EA6-44E3-8265-BAF08E832951}.Release|x64.ActiveCfg = Release|x64
{8DD8AB7D-2EA6-44E3-8265-BAF08E832951}.Release|x64.Build.0 = Release|x64
+ {8DD8AB7D-2EA6-44E3-8265-BAF08E832951}.Release|arm64.ActiveCfg = Release|arm64
+ {8DD8AB7D-2EA6-44E3-8265-BAF08E832951}.Release|arm64.Build.0 = Release|arm64
{B6808F71-30B4-4499-8FF6-0B1C86391842}.Debug|Win32.ActiveCfg = Debug|Win32
{B6808F71-30B4-4499-8FF6-0B1C86391842}.Debug|Win32.Build.0 = Debug|Win32
{B6808F71-30B4-4499-8FF6-0B1C86391842}.Debug|x64.ActiveCfg = Debug|x64
{B6808F71-30B4-4499-8FF6-0B1C86391842}.Debug|x64.Build.0 = Debug|x64
+ {B6808F71-30B4-4499-8FF6-0B1C86391842}.Debug|arm64.ActiveCfg = Debug|arm64
+ {B6808F71-30B4-4499-8FF6-0B1C86391842}.Debug|arm64.Build.0 = Debug|arm64
{B6808F71-30B4-4499-8FF6-0B1C86391842}.Release|Win32.ActiveCfg = Release|Win32
{B6808F71-30B4-4499-8FF6-0B1C86391842}.Release|Win32.Build.0 = Release|Win32
{B6808F71-30B4-4499-8FF6-0B1C86391842}.Release|x64.ActiveCfg = Release|x64
{B6808F71-30B4-4499-8FF6-0B1C86391842}.Release|x64.Build.0 = Release|x64
+ {B6808F71-30B4-4499-8FF6-0B1C86391842}.Release|arm64.ActiveCfg = Release|arm64
+ {B6808F71-30B4-4499-8FF6-0B1C86391842}.Release|arm64.Build.0 = Release|arm64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/openrct2-cli/openrct2-cli.vcxproj b/src/openrct2-cli/openrct2-cli.vcxproj
index 9a76591370..a134619da0 100644
--- a/src/openrct2-cli/openrct2-cli.vcxproj
+++ b/src/openrct2-cli/openrct2-cli.vcxproj
@@ -12,6 +12,10 @@
Debug
x64
+
+ Debug
+ arm64
+
Release
Win32
@@ -20,6 +24,10 @@
Release
x64
+
+ Release
+ arm64
+
{B6808F71-30B4-4499-8FF6-0B1C86391842}
@@ -46,6 +54,7 @@
MachineX86
MachineX64
+ MachineARM64
@@ -55,4 +64,4 @@
-
\ No newline at end of file
+
diff --git a/src/openrct2-ui/libopenrct2ui.vcxproj b/src/openrct2-ui/libopenrct2ui.vcxproj
index dbf6d068a8..6a82fbeea3 100644
--- a/src/openrct2-ui/libopenrct2ui.vcxproj
+++ b/src/openrct2-ui/libopenrct2ui.vcxproj
@@ -12,6 +12,10 @@
Debug
x64
+
+ Debug
+ arm64
+
Release
Win32
@@ -20,6 +24,10 @@
Release
x64
+
+ Release
+ arm64
+
@@ -206,7 +214,7 @@
__ENABLE_LIGHTFX__;%(PreprocessorDefinitions)
- USE_BREAKPAD;%(PreprocessorDefinitions)
+ USE_BREAKPAD;%(PreprocessorDefinitions)
@@ -216,7 +224,8 @@
MachineX86
MachineX64
+ MachineARM64
-
\ No newline at end of file
+
diff --git a/src/openrct2-win/openrct2-win.vcxproj b/src/openrct2-win/openrct2-win.vcxproj
index 6a7f8f0f6d..8e81f69b72 100644
--- a/src/openrct2-win/openrct2-win.vcxproj
+++ b/src/openrct2-win/openrct2-win.vcxproj
@@ -12,6 +12,10 @@
Debug
x64
+
+ Debug
+ arm64
+
Release
Win32
@@ -20,6 +24,10 @@
Release
x64
+
+ Release
+ arm64
+
{7A9A57D5-7006-4208-A290-5491BA3C8808}
@@ -46,6 +54,7 @@
MachineX86
MachineX64
+ MachineARM64
@@ -55,4 +64,4 @@
-
\ No newline at end of file
+
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index a661a2f202..28cc879860 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -11,6 +11,10 @@
Debug
x64
+
+ Debug
+ arm64
+
Release
Win32
@@ -19,6 +23,10 @@
Release
x64
+
+ Release
+ arm64
+
{D24D94F6-2A74-480C-B512-629C306CE92F}
@@ -32,7 +40,7 @@
__ENABLE_DISCORD__;__ENABLE_LIGHTFX__;USE_BENCHMARK;%(PreprocessorDefinitions)
- USE_BREAKPAD;%(PreprocessorDefinitions)
+ USE_BREAKPAD;%(PreprocessorDefinitions)
USE_FRIBIDI;%(PreprocessorDefinitions)
@@ -43,6 +51,7 @@
MachineX86
MachineX64
+ MachineARM64
@@ -958,4 +967,4 @@
-
\ No newline at end of file
+
diff --git a/test/tests/BitSetTests.cpp b/test/tests/BitSetTests.cpp
index 8e3f2efaeb..2e2b9ac6ba 100644
--- a/test/tests/BitSetTests.cpp
+++ b/test/tests/BitSetTests.cpp
@@ -15,7 +15,7 @@ using namespace OpenRCT2;
TEST(BitTest, test_index_construction)
{
BitSet<64u> bits({ 0u, 2u, 4u, 6u, 8u, 10u });
-#ifdef _M_X64
+#if defined(_M_X64) || defined(_M_ARM64)
static_assert(std::is_same_v);
#else
static_assert(std::is_same_v);
@@ -94,7 +94,7 @@ TEST(BitTest, test_big)
static_assert(size == 32u);
bits.flip();
-#ifdef _M_X64
+#if defined(_M_X64) || defined(_M_ARM64)
static_assert(std::is_same_v);
static_assert(bits.data().size() == 4);
ASSERT_EQ(bits.data()[0], ~0ULL);
diff --git a/test/tests/tests.vcxproj b/test/tests/tests.vcxproj
index ed49f62ce9..3fe3fd1406 100644
--- a/test/tests/tests.vcxproj
+++ b/test/tests/tests.vcxproj
@@ -21,6 +21,14 @@
Release
x64
+
+ Debug
+ arm64
+
+
+ Release
+ arm64
+
{62B020FA-E4FB-4C6E-B32A-DC999470F155}
@@ -88,4 +96,4 @@
-
\ No newline at end of file
+