Skip to content

Conversation

@apancik
Copy link
Contributor

@apancik apancik commented Nov 21, 2024

This pull request introduces changes to enable compiling The Force Engine on macOS. It's a cleanup of #472 (thank you @mlauss2 for your help!)

Hardware: Intel Mac / macOS Sequoia 15.1 / XCode 16.1
SDL2: version 2.30.9, SDL2_image: version 2.8.2, RtMidi: version 6.0.0

Screenshot 2024-11-19 at 5 57 22 PM
Screenshot 2024-11-19 at 5 57 44 PM
Screenshot 2024-11-19 at 5 58 06 PM

@mlauss2
Copy link
Contributor

mlauss2 commented Nov 21, 2024

I like it (obviously).
As a next step, some of the #ifdef APPLE could be replaced with a runtime test for OSX. SDL provides SDL_GetPlatform():

bool isosx = (0 == strcmp(SDL_GetPlatform(), "Mac OS X"));

OpenGL_caps.cpp and renderbackend::createwindow come to mind.

This way your code gets compiler coverage on windows/linux too.

@mlauss2
Copy link
Contributor

mlauss2 commented Nov 21, 2024

something like this:

diff --git a/TheForceEngine/TFE_RenderBackend/Win32OpenGL/openGL_Caps.cpp b/TheForceEngine/TFE_RenderBackend/Win32OpenGL/openGL_Caps.cpp
index 1fe52b54..e74d95b6 100644
--- a/TheForceEngine/TFE_RenderBackend/Win32OpenGL/openGL_Caps.cpp
+++ b/TheForceEngine/TFE_RenderBackend/Win32OpenGL/openGL_Caps.cpp
@@ -1,3 +1,4 @@
+#include <TFE_System/system.h>
 #include "openGL_Caps.h"
 #include "gl.h"
 #include <assert.h>
@@ -39,8 +40,12 @@ namespace OpenGL_Caps
 		glGetIntegerv(GL_MAJOR_VERSION, &gl_maj);
 		glGetIntegerv(GL_MINOR_VERSION, &gl_min);
 
-#ifdef __APPLE__
-		if (gl_maj >= 4) {
+		
+		if (PLAT_OSX == TFE_System::getPlatform())
+		{
+			if (gl_maj < 4)
+				return;
+		
 			m_supportFlags = CAP_PBO | CAP_VBO | CAP_FBO | CAP_UBO | CAP_NON_POW_2 | CAP_TEXTURE_ARRAY;
 
 			if (SDL_GL_ExtensionSupported("GL_EXT_texture_filter_anisotropic")) {
@@ -61,9 +66,9 @@ namespace OpenGL_Caps
 			if (m_textureBufferMaxSize >= GLSPEC_MAX_TEXTURE_BUFFER_SIZE_MIN) {
 				m_deviceTier = DEV_TIER_2;
 			}
+			return;
 		}
-		return;
-#endif
+
 		if (SDL_GL_ExtensionSupported("GL_ARB_pixel_buffer_object"))
 			m_supportFlags |= CAP_PBO | CAP_NON_POW_2;
 		if (SDL_GL_ExtensionSupported("GL_ARB_vertex_buffer_object"))
diff --git a/TheForceEngine/TFE_RenderBackend/Win32OpenGL/renderBackend.cpp b/TheForceEngine/TFE_RenderBackend/Win32OpenGL/renderBackend.cpp
index 4fed0683..33432c9c 100644
--- a/TheForceEngine/TFE_RenderBackend/Win32OpenGL/renderBackend.cpp
+++ b/TheForceEngine/TFE_RenderBackend/Win32OpenGL/renderBackend.cpp
@@ -71,9 +71,7 @@ namespace TFE_RenderBackend
 	void drawVirtualDisplay();
 	void setupPostEffectChain(bool useDynamicTexture, bool useBloom);
 
-#ifdef __APPLE__
 	static GLuint s_globalVAO = 0;
-#endif
 
 	static void printGLInfo(void)
 	{
@@ -91,6 +89,7 @@ namespace TFE_RenderBackend
 	{
 		u32 windowFlags = SDL_WINDOW_OPENGL;
 		bool windowed = !(state.flags & WINFLAG_FULLSCREEN);
+		bool isosx = (PLAT_OSX == TFE_System::getPlatform());
 
 		TFE_Settings_Window* windowSettings = TFE_Settings::getWindowSettings();
 		
@@ -116,13 +115,14 @@ namespace TFE_RenderBackend
 
 		SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, true);
 
-#ifdef __APPLE__
-		// macOS specific OpenGL context setup
-		SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
-		SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
-		SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
-		SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG);
-#endif
+		if (isosx)
+		{
+			// macOS specific OpenGL context setup
+			SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
+			SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
+			SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
+			SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG);
+		}
 
 		TFE_System::logWrite(LOG_MSG, "RenderBackend", "SDL Videodriver: %s", SDL_GetCurrentVideoDriver());
 		SDL_Window* window = SDL_CreateWindow(state.name, x, y, state.width, state.height, windowFlags);
@@ -177,26 +177,27 @@ namespace TFE_RenderBackend
 			uiScale = 150;
 		}
 
-#ifdef __APPLE__
-		// macOS specific setup:
-		// Create and bind a global VAO for macOS
-		glGenVertexArrays(1, &s_globalVAO);
-		if (!s_globalVAO)
+		if (isosx)
 		{
-			TFE_System::logWrite(LOG_ERROR, "RenderBackend", "Failed to create global VAO");
-			SDL_DestroyWindow(window);
-			return nullptr;
-		}
-		glBindVertexArray(s_globalVAO);
+			// macOS specific setup:
+			// Create and bind a global VAO for macOS
+			glGenVertexArrays(1, &s_globalVAO);
+			if (!s_globalVAO)
+			{
+				TFE_System::logWrite(LOG_ERROR, "RenderBackend", "Failed to create global VAO");
+				SDL_DestroyWindow(window);
+				return nullptr;
+			}
+			glBindVertexArray(s_globalVAO);
 
-		// handle Retina displays
-		s32 drawableWidth, drawableHeight;
-		SDL_GL_GetDrawableSize(window, &drawableWidth, &drawableHeight);
-		if (drawableWidth > state.width)
-		{
-			uiScale = (uiScale * drawableWidth) / state.width;
+			// handle Retina displays
+			s32 drawableWidth, drawableHeight;
+			SDL_GL_GetDrawableSize(window, &drawableWidth, &drawableHeight);
+			if (drawableWidth > state.width)
+			{
+				uiScale = (uiScale * drawableWidth) / state.width;
+			}
 		}
-#endif
 
 #ifndef _WIN32
 		SDL_SetWindowFullscreen(window, windowed ? 0 : SDL_WINDOW_FULLSCREEN_DESKTOP);
@@ -1066,9 +1067,8 @@ namespace TFE_RenderBackend
 
 	void bindGlobalVAO(void)
 	{
-#ifdef __APPLE__
-		glBindVertexArray(s_globalVAO);
-#endif
+		if (s_globalVAO)
+			glBindVertexArray(s_globalVAO);
 	}
 
 }  // namespace
diff --git a/TheForceEngine/TFE_System/system.cpp b/TheForceEngine/TFE_System/system.cpp
index 4ce39dce..00985577 100644
--- a/TheForceEngine/TFE_System/system.cpp
+++ b/TheForceEngine/TFE_System/system.cpp
@@ -45,6 +45,7 @@ namespace TFE_System
 	static s32 s_missedFrameCount = 0;
 
 	static char s_versionString[64];
+	static TFE_Platform s_platform;		// win/lin/osx
 
 	void init(f32 refreshRate, bool synced, const char* versionString)
 	{
@@ -62,6 +63,17 @@ namespace TFE_System
 
 		TFE_COUNTER(s_missedFrameCount, "Miss-Predicted Vysnc Intervals");
 		strcpy(s_versionString, versionString);
+
+		const char *sdlplat = SDL_GetPlatform();
+		if (0 == strcmp(sdlplat, "Windows"))
+			s_platform = PLAT_WIN;
+		else if (0 == strcmp(sdlplat, "Mac OS X"))
+			s_platform = PLAT_OSX;
+		else if (0 == strcmp(sdlplat, "Linux"))
+			s_platform = PLAT_LIN;
+		else
+			s_platform = PLAT_UNK;
+		TFE_System::logWrite(LOG_MSG, "Startup", "SDL Platform: '%s' (%u)", sdlplat, s_platform);
 	}
 
 	void shutdown()
@@ -102,6 +114,11 @@ namespace TFE_System
 		return dt;
 	}
 
+	TFE_Platform getPlatform(void)
+	{
+		return s_platform;
+	}
+
 	void update()
 	{
 		// This assumes that SDL_GetPerformanceCounter() is monotonic.
diff --git a/TheForceEngine/TFE_System/system.h b/TheForceEngine/TFE_System/system.h
index 6d2e558d..d39e52fe 100644
--- a/TheForceEngine/TFE_System/system.h
+++ b/TheForceEngine/TFE_System/system.h
@@ -28,6 +28,14 @@ enum LogWriteType
 	LOG_COUNT
 };
 
+enum TFE_Platform
+{
+	PLAT_WIN = 0,
+	PLAT_LIN,
+	PLAT_OSX,
+	PLAT_UNK
+};
+
 namespace TFE_System
 {
 	void init(f32 refreshRate, bool synced, const char* versionString);
@@ -39,6 +47,8 @@ namespace TFE_System
 	void update();
 	f64 updateThreadLocal(u64* localTime);
 
+	TFE_Platform getPlatform(void);
+
 	// Timing
 	// --- The current time and delta time are determined once per frame, during the update() function.
 	//     In other words an entire frame operates on a single instance of time.

@apancik
Copy link
Contributor Author

apancik commented Nov 21, 2024

I pushed my initial draft in commit 34d29a9 just before you sent your changes. I'll take a look at how to merge them.

A bigger issue is that shooting weapons no longer works. I’m not sure yet how or where I broke it, especially since I didn’t touch the game logic.

@mlauss2
Copy link
Contributor

mlauss2 commented Nov 21, 2024

I pushed my initial draft in commit 34d29a9 just before you sent your changes. I'll take a look at how to merge them.

Oh i meant this is something for later, but yeah like this.

A bigger issue is that shooting weapons no longer works. I’m not sure yet how or where I broke it, especially since I didn’t touch the game logic.

you need this:

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 80398f03..9a2030dd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -81,6 +81,7 @@ if(ENABLE_TFE)
                # the necessary support file directories into the build env.
                execute_process(COMMAND ln -sf ${CMAKE_SOURCE_DIR}/TheForceEngine/Captions)
                execute_process(COMMAND ln -sf ${CMAKE_SOURCE_DIR}/TheForceEngine/Documentation)
+               execute_process(COMMAND ln -sf  ${CMAKE_SOURCE_DIR}/TheForceEngine/ExternalData)
                execute_process(COMMAND ln -sf ${CMAKE_SOURCE_DIR}/TheForceEngine/Fonts)
                execute_process(COMMAND ln -sf ${CMAKE_SOURCE_DIR}/TheForceEngine/Mods)
                execute_process(COMMAND ln -sf ${CMAKE_SOURCE_DIR}/TheForceEngine/Shaders)
@@ -137,6 +138,7 @@ if(ENABLE_TFE)
        install(DIRECTORY
                "${CMAKE_CURRENT_SOURCE_DIR}/TheForceEngine/Captions"
                "${CMAKE_CURRENT_SOURCE_DIR}/TheForceEngine/Documentation"
+               "${CMAKE_CURRENT_SOURCE_DIR}/TheForceEngine/ExternalData"
                "${CMAKE_CURRENT_SOURCE_DIR}/TheForceEngine/UI_Text"
                "${CMAKE_CURRENT_SOURCE_DIR}/TheForceEngine/UI_Images"
                "${CMAKE_CURRENT_SOURCE_DIR}/TheForceEngine/EditorDef"

@mlauss2
Copy link
Contributor

mlauss2 commented Nov 22, 2024

erm, please just keep the first patch for this PR; the others were just ideas for a new PR after this has been merged, and the patch you need to get projectiles again, which is not at all material for this pr.

@apancik
Copy link
Contributor Author

apancik commented Nov 26, 2024

Alright, I removed the last commit. Let's keep 34d29a9, as it includes unbinding and deleting the global VAO, which should have been there from the beginning.

@mlauss2
Copy link
Contributor

mlauss2 commented Nov 26, 2024

it's fine for me. I have cooked up something a bit different for 34d29a9 which compiles away to nothing when the platform doesn't match but still gets compiler coverage. I'll prepare a PR once your great work has been merged.

@apancik
Copy link
Contributor Author

apancik commented Nov 27, 2024

While testing on Apple Silicon, I discovered that the application crashed immediately due to incorrect file paths. I had the right folders with right permissions on my Intel Mac so that's why I didn't notice it. Commit 929bc7c resolves this issue and uses macOS path conventions.

@mlauss2
Copy link
Contributor

mlauss2 commented Nov 27, 2024

I think this is a good reason to switch to "SDL_GetPrefPath()" (in a separate PR), which does the right thing for all platforms. It will break existing setups though (saved data is located elsewhere).

@finger563
Copy link

This PR compiles and runs for me on MacOS Sequoia 15.4.1 on M1 Pro silicon, though the shots don't work, I'm able to fire blaster / punch, but enemies do not take damage and I also do not take damage when enemies shoot at me. Other than that things seem to work (platforming, interacting with doors / buttons / pickups).

@apancik
Copy link
Contributor Author

apancik commented Apr 29, 2025

@finger563 Thank you for testing on Apple Silicon! The weapon damage issue you've noticed was actually introduced and resolved upstream since this PR was created. Once this PR is merged, the latest upstream changes will include the fix which should resolve the weapon functionality. You can see the required patch by @mlauss2 in the thread above if you want to make it work in the meantime.

@neuromancer
Copy link

Can this PR be rebased on top of master please?

tomkidd added a commit to MacSourcePorts/TheForceEngine that referenced this pull request Dec 5, 2025
This is based on two things.

PR luciusDXL#473 from @apancik
luciusDXL#473

The comment from @gilmorem560 that updated AngelScript code resolves compilation issues on Apple Silicon
luciusDXL#90 (comment)
https://www.angelcode.com/angelscript/

The code changes are sort of like a manual rebase of luciusDXL#473 so perhaps a proper rebase of that and the manual grafting of AngelScript would be a better solution. In any event I want to give credit to the people who really did the work.
@tomkidd tomkidd mentioned this pull request Dec 26, 2025
- Updated build scripts and configurations to support macOS
- Resolved compatibility issues specific to macOS
- Verified successful compilation on macOS environment
@luciusDXL luciusDXL merged commit 36e4e95 into luciusDXL:master Jan 23, 2026
2 checks passed
tomkidd added a commit to MacSourcePorts/TheForceEngine that referenced this pull request Jan 25, 2026
This is based on two things.

PR luciusDXL#473 from @apancik
luciusDXL#473

The comment from @gilmorem560 that updated AngelScript code resolves compilation issues on Apple Silicon
luciusDXL#90 (comment)
https://www.angelcode.com/angelscript/

The code changes are sort of like a manual rebase of luciusDXL#473 so perhaps a proper rebase of that and the manual grafting of AngelScript would be a better solution. In any event I want to give credit to the people who really did the work.
luciusDXL pushed a commit that referenced this pull request Jan 26, 2026
* Updates to run on macOS (see description)

This is based on two things.

PR #473 from @apancik
#473

The comment from @gilmorem560 that updated AngelScript code resolves compilation issues on Apple Silicon
#90 (comment)
https://www.angelcode.com/angelscript/

The code changes are sort of like a manual rebase of #473 so perhaps a proper rebase of that and the manual grafting of AngelScript would be a better solution. In any event I want to give credit to the people who really did the work.

* Fixed building on macOS x86_64

clang doesn't like this one instruction on Intel so I commented it out

* Cjhanged program path logic on macOS

Necessary to get the engine to work in an App Bundle.
Hancock33 added a commit to Hancock33/batocera.piboy that referenced this pull request Feb 1, 2026
--------------------------------------------------------------------------------------------------------
batocera-emulationstation.mk 22db6a2925d92e1f334da75c2d9372af7c4047a5 # Version: Commits on Jan 26, 2026
--------------------------------------------------------------------------------------------------------
update po

Signed-off-by: Nicolas Adenis-Lamarre <nicolas.adenis.lamarre@gmail.com>,

------------------------------------------------------------------------------------------------
batocera-es-piboy.mk 22db6a2925d92e1f334da75c2d9372af7c4047a5 # Version: Commits on Jan 26, 2026
------------------------------------------------------------------------------------------------
update po

Signed-off-by: Nicolas Adenis-Lamarre <nicolas.adenis.lamarre@gmail.com>,

------------------------------------------------------------------------------------------
dolphin-emu.mk c4c2aa8afd6f7e9a254bc56c53132dd5eb2ccc12 # Version: Commits on Jan 26, 2026
------------------------------------------------------------------------------------------
Merge pull request #14253 from JosJuice/dsp-hle-memory

DSP: Remove HLEMemory functions,

------------------------------------------------------------------------------------------
duckstation.mk 5c0a227c1c088b2bb0e89ae7e44da6a38dc2f63a # Version: Commits on Jan 26, 2026
------------------------------------------------------------------------------------------
Qt: Ensure fields in MemoryViewWidget are initialized

Didn't hit this before but better safe than sorry.,

-----------------------------------------------------------------------------------
eden.mk 2f1f9be7a41ba742d31657a75c65f7efffbfce12 # Version: Commits on Jan 26, 2026
-----------------------------------------------------------------------------------
[common] remove assert extra newline (#3362)

-------------------------------------------------------------------------------------
hatari.mk b1ff429934161b5acdeb42b4365c742573846cfa # Version: Commits on Jan 25, 2026
-------------------------------------------------------------------------------------
GEMDOS HD: update documentation,

--------------------------------------------------------------------------------------
melonds.mk bc4726cca9db07baa227a0a02f6670a89ba61c8c # Version: Commits on Jan 26, 2026
--------------------------------------------------------------------------------------
start with SPU muted (POWCNT2=0)

fixes loud pops when booting firmware,

---------------------------------------------------
pcsx2.mk v2.7.65 # Version: Commits on Jan 26, 2026
---------------------------------------------------
- [GS/HW: Reduce barriers on triangle strips/fans.](PCSX2/pcsx2#13866)

,

-----------------------------------------------------------------------------------
play.mk 900e599dd26e4b292ff55738cc8881530eed46ce # Version: Commits on Jan 26, 2026
-----------------------------------------------------------------------------------
Merge pull request #1540 from jpd002/dependabot/github_actions/microsoft/setup-msbuild-2

Bump microsoft/setup-msbuild from 1.3 to 2,

-------------------------------------------------------------------------------------
ppsspp.mk 131c525b56ce6b35b1776449e6bda669b878f924 # Version: Commits on Jan 26, 2026
-------------------------------------------------------------------------------------
Merge pull request #21158 from hrydgard/android-pad-connect

Android and iOS pad connect/disconnect events,

------------------------------------------------------------------------------------
rpcs3.mk 818b11fd2fa2607334f781213e26da5fbb8506b5 # Version: Commits on Jan 26, 2026
------------------------------------------------------------------------------------
Revert adrenalin crash workaround,

-------------------------------------------------------------------------------------
snes9x.mk 830d8552551d7a71e9d084f727dc15cf15d9796c # Version: Commits on Jan 26, 2026
-------------------------------------------------------------------------------------
gtk: Allow netplay port number to use 16-bit range.,

--------------------------------------------------------------------------------------
tsugaru.mk c53e3499ee41a11720bf298a371973c6415ce5b8 # Version: Commits on Jan 25, 2026
--------------------------------------------------------------------------------------
Merge pull request #176 from bcc2528/master

Fix Japanese UI text.,

-------------------------------------------------
vice.mk r45962 # Version: Commits on Jan 26, 2026
-------------------------------------------------
null

-------------------------------------------------------------------------------------------
xenia-canary.mk 67d80958c9d1ff926b9098be7f830c1937921d9a # Version: Commits on Jan 25, 2026
-------------------------------------------------------------------------------------------
[XThread] Remove 10ms delay in thread start,

-------------------------------------------------------------------------------------------
xenia-native.mk 67d80958c9d1ff926b9098be7f830c1937921d9a # Version: Commits on Jan 25, 2026
-------------------------------------------------------------------------------------------
[XThread] Remove 10ms delay in thread start,

-----------------------------------------------------------------------------------
ymir.mk 673a1b8b9f55448f9d50eec60e2c79cf32e76c4a # Version: Commits on Jan 26, 2026
-----------------------------------------------------------------------------------
feat(utils): Use C++20 `<bit>` functions for powers of two,

-------------------------------------------------------------------------------------
ikemen.mk 48a070b69ed9c4b76094d23723119eb62700e1af # Version: Commits on Jan 26, 2026
-------------------------------------------------------------------------------------
style: fix code style issues with gofmt,

-------------------------------------------------------------------------------------------
moonlight-qt.mk 64fea80ac95f607f9c0c5d74dbb02d6b67133190 # Version: Commits on Jan 25, 2026
-------------------------------------------------------------------------------------------
Create the SystemProperties test window on the main thread,

---------------------------------------------------------------
ruffle.mk nightly-2026-01-26 # Version: Commits on Jan 26, 2026
---------------------------------------------------------------
## What's Changed

* chore: Update translations from Crowdin by @kjarosh in ruffle-rs/ruffle#22850

* core: Reimplement text wrapping for compatibility by @adrian17 in ruffle-rs/ruffle#22730

* tests: Rename sample_count to quality and set \high\ by default by @kjarosh in ruffle-rs/ruffle#22847

* chore: Update translations from Crowdin by @kjarosh in ruffle-rs/ruffle#22852

**Full Changelog**: ruffle-rs/ruffle@nightly-2026-01-25...nightly-2026-01-26,

---------------------------------------------------------------------------------------
thextech.mk fdd963a7d6b604869f4d9e58cac93d3d53d9b371 # Version: Commits on Jan 26, 2026
---------------------------------------------------------------------------------------
graphics.cpp: DrawFrozenNPC - ouch, use height, not width (#76),

------------------------------------------------------------------------------------
box64.mk 05b37ab897a7861807bf42353291432d8c880d3c # Version: Commits on Jan 26, 2026
------------------------------------------------------------------------------------
[INTERP] Added F2 0F B7 opcode (for #3353),

------------------------------------------------------------------------------------
cdogs.mk 4240f917953944abfd8dfcdb141e871e653b059e # Version: Commits on Jan 26, 2026
------------------------------------------------------------------------------------
Install NSIS (no longer provided by github windows 2025 runner) #894,

---------------------------------------------------------------------------------------
corsixth.mk 1a5f0d2f8d5fa3d3d512cd3d7de4c5503a368d4b # Version: Commits on Jan 26, 2026
---------------------------------------------------------------------------------------
Accessibility option to provide subtitles for the receptionist's announcements (#3179)

* Accessibility option to provide subtitles for the receptionist's announcements

* Accessibility option to provide subtitles for the receptionist's announcements

* Marking currently unused announcer subtitles

* Addressing failed Lua tests

* Addressing comments and refactoring

* Attempt to fix Lua tests

* Attempt to fix Lua tests

* Incrementing save file version

* Removing tab characters

* Incrementing save file version

* Addressing review comments

* Fixing indentation,

---------------------------------------------------------------------------------------
etlegacy.mk 4ac50925cd58060b4b186d3baa8a2ebef87b88b7 # Version: Commits on Jan 26, 2026
---------------------------------------------------------------------------------------
cgame: fix spawnpoint drawing pos on fallback path (#3273)

When trace fails to find a groundplane, offset the position to the player feet level instead of displaying at the spawnpoint origin.,

---------------------------------------------------------------------------------------------
theforceengine.mk daceeeb9b335b29b8f54d675522022fc684c7111 # Version: Commits on Jan 26, 2026
---------------------------------------------------------------------------------------------
macOS Support (#584)

* Updates to run on macOS (see description)

This is based on two things.

PR #473 from @apancik

luciusDXL/TheForceEngine#473

The comment from @gilmorem560 that updated AngelScript code resolves compilation issues on Apple Silicon

luciusDXL/TheForceEngine#90 (comment)

https://www.angelcode.com/angelscript/

The code changes are sort of like a manual rebase of #473 so perhaps a proper rebase of that and the manual grafting of AngelScript would be a better solution. In any event I want to give credit to the people who really did the work.

* Fixed building on macOS x86_64

clang doesn't like this one instruction on Intel so I commented it out

* Cjhanged program path logic on macOS

Necessary to get the engine to work in an App Bundle.,

-------------------------------------------------------------------------------------------------
shadps4-qtlauncher.mk f8ebecb33a773821e5bf9d3d3e273d2a7f8f4744 # Version: Commits on Jan 26, 2026
-------------------------------------------------------------------------------------------------
Reshow the play button after game close (#238)

* Add call to update UI after game close

* instead of regenerating the header entirely, just swap the play/pause buttons

* fix uninitialized var,,

------------------------------------------------------------
syncthing.mk v2.0.14-rc.2 # Version: Commits on Jan 26, 2026
------------------------------------------------------------
## Major changes in 2.0

- Database backend switched from LevelDB to SQLite. There is a migration on

  first launch which can be lengthy for larger setups. The new database is

  easier to understand and maintain and, hopefully, less buggy.

- The logging format has changed to use structured log entries (a message

  plus several key-value pairs). Additionally, we can now control the log

  level per package, and a new log level WARNING has been inserted between

  INFO and ERROR (which was previously known as WARNING...). The INFO level

  has become more verbose, indicating the sync actions taken by Syncthing. A

  new command line flag `--log-level` sets the default log level for all

  packages, and the `STTRACE` environment variable and GUI has been updated

  to set log levels per package. The `--verbose` and `--logflags` command

  line options have been removed and will be ignored if given.

- Deleted items are no longer kept forever in the database, instead they are

  forgotten after fifteen months. If your use case require deletes to take

  effect after more than a fifteen month delay, set the

  `--db-delete-retention-interval` command line option or corresponding

  environment variable to zero, or a longer time interval of your choosing.

- Modernised command line options parsing. Old single-dash long options are

  no longer supported, e.g. `-home` must be given as `--home`. Some options

  have been renamed, others have become subcommands. All serve options are

  now also accepted as environment variables. See  `syncthing --help` and

  `syncthing serve --help` for details.

- Rolling hash detection of shifted data is no longer supported as this

  effectively never helped. Instead, scanning and syncing is faster and more

  efficient without it.

- A \default folder\ is no longer created on first startup.

- Multiple connections are now used by default between v2 devices. The new

  default value is to use three connections: one for index metadata and two

  for data exchange.

- The following platforms unfortunately no longer get prebuilt binaries for

  download at syncthing.net and on GitHub, due to complexities related to

  cross compilation with SQLite:

  - dragonfly/amd64

  - solaris/amd64

  - linux/ppc64

  - netbsd/*

  - openbsd/386 and openbsd/arm

  - windows/arm

- The handling of conflict resolution involving deleted files has changed. A

  delete can now be the winning outcome of conflict resolution, resulting in

  the deleted file being moved to a conflict copy.

This release is also available as:

* APT repository: https://apt.syncthing.net/

* Docker image: `docker.io/syncthing/syncthing:2.0.14-rc.2` or `ghcr.io/syncthing/syncthing:2.0.14-rc.2`

  (`{docker,ghcr}.io/syncthing/syncthing:2` to follow just the major version)

## What's Changed

### Fixes

* fix(beacon): skip point-to-point interfaces on Android by @bt90 in syncthing/syncthing#10504

* fix(stdiscosrv): use fmt.Println for version output (fixes #10523) by @maishivamhoo123 in syncthing/syncthing#10527

* fix(stdiscosrv): log full device ID on startup by @maishivamhoo123 in syncthing/syncthing#10541

### Other

* chore(api): remove charset declaration from JSON content-type (fixes #10500) by @prathik8794 in syncthing/syncthing#10508

* chore(sqlite): allow periodic database maintenance to be disabled by @pixelspark in syncthing/syncthing#10441

* chore(gui): include license files for fork-awesome assets by @gotmax23 in syncthing/syncthing#10539

* build: add build attestation step at release by @calmh in syncthing/syncthing#10540

## New Contributors

* @prathik8794 made their first contribution in syncthing/syncthing#10508

* @gotmax23 made their first contribution in syncthing/syncthing#10539

* @maishivamhoo123 made their first contribution in syncthing/syncthing#10527

**Full Changelog**: syncthing/syncthing@v2.0.13...v2.0.14-rc.2,

-----------------------------------------------------------------------------------------
winetricks.mk 3483ce867ee10aa084843e97b8f31c9489d6e93d # Version: Commits on Jan 26, 2026
-----------------------------------------------------------------------------------------
Do not give a warning about unknown file arch (when -q is set) (#2457),

-----------------------------------------------------------------------------------
xone.mk 8e772cf696e6fd78ff6b9ca3eba9505391dc44d2 # Version: Commits on Jan 25, 2026
-----------------------------------------------------------------------------------
Another delay,

----------------------------------------------------------------------------------------
hid-tmff2.mk 66e522e26549afab26d032e900ae9f6576c83b9d # Version: Commits on Jan 26, 2026
----------------------------------------------------------------------------------------
Revert \use on_hid_hw_open instead of input_dev->open\

This reverts commit c26573d77369c042dc2b9a881a7f2ff88ddc0dd9.

+ `on_hid_hw_open` is apparently new enough that common distros don't

  have it yet, so let's wait a few years and try again. The old method

  works well enough and if not, just set `open_mode=0`.,

----------------------------------------------------------------------------------------
retroarch.mk 29821a802c4b65aa430fa305443e53c6f35c681f # Version: Commits on Jan 25, 2026
----------------------------------------------------------------------------------------
smb: change UWP build to use libsmb2 from griffin,

---------------------
glslang.mk  NULL-NULL
---------------------
No commit found for SHA: vulkan-tmp-1.4.338,

--------------------------------------
vulkan-utility-libraries.mk  NULL-NULL
--------------------------------------
No commit found for SHA: vulkan-tmp-1.4.338,

-------------------------------------
vulkan-validationlayers.mk  NULL-NULL
-------------------------------------
No commit found for SHA: vulkan-tmp-1.4.338,

----------------------------------------------------------------------------------------
doomretro.mk 14c6d7f7d9918b4aa969b6a7438c2d2bf592bb92 # Version: Commits on Jan 26, 2026
----------------------------------------------------------------------------------------
Minor refactoring to C_BuildObituaryString,

----------------------------------------------------------------------------------------
sonic2013.mk e1b4368eaae58141687b7c39031f2ac087eb85f8 # Version: Commits on Jan 25, 2026
----------------------------------------------------------------------------------------
Android: Add \game\ appCategory

Helps Android 14+ allocate more resources to the game.,

--------------------------------------------------------------------------------------
soniccd.mk 2f5fdb6ad601f99e6be411e235766e2425ca0613 # Version: Commits on Jan 25, 2026
--------------------------------------------------------------------------------------
Android: Add \game\ appCategory

Helps Android 14+ allocate more resources to the game.,

-----------------------------------------------------------------------------------------
sonicmania.mk ae485fb757e51e5869a29e9187faee97fc5b50ee # Version: Commits on Jan 26, 2026
-----------------------------------------------------------------------------------------
HCZ Spear: Fix invalid top size

super mario 64,

----------------------------------------------------------------------------------
trx.mk fbc8a951e1a4a3148b7a57938efecc6a6c350540 # Version: Commits on Jan 26, 2026
----------------------------------------------------------------------------------
cmd/kill: skip targeting dead enemies,

------------------------------------------------------------------------------------------
xash3d-fwgs.mk a26c56629e39b5e5adb729a13c45279ecf2d55da # Version: Commits on Jan 25, 2026
------------------------------------------------------------------------------------------
engine: client: deactivate menu when on escape if we are going back to game,

----------------------------------------------------------------------------------------------
libretro-p2000t.mk 4e8ac5f06ef092d2c39051ca4e0b52f70681376d # Version: Commits on Jan 26, 2026
----------------------------------------------------------------------------------------------
Merge pull request #167 from p2000t/branches/sd-cartridge-emu

added Slot2 SD card emulation support,

--------------------------------------------------------------------------------------------
libretro-pc98.mk 4d585bc2a7d44cd0fc6fb6604f7f5350aa776591 # Version: Commits on Jan 25, 2026
--------------------------------------------------------------------------------------------
Merge pull request #196 from daichungus/readme_patch

Updated cmake instructions in README,

---------------------------------------------------------------------------------------------
libretro-pd777.mk 6fe7aadb63042ecb06f7dffacfd5c208bd27e515 # Version: Commits on Jan 25, 2026
---------------------------------------------------------------------------------------------
Merge upstream,

----------------------------------------------------------------------------------------------
libretro-ppsspp.mk 131c525b56ce6b35b1776449e6bda669b878f924 # Version: Commits on Jan 26, 2026
----------------------------------------------------------------------------------------------
Merge pull request #21158 from hrydgard/android-pad-connect

Android and iOS pad connect/disconnect events,

---------------------------------------------------------------------------------------------
libretro-vba-m.mk d24e4bf7f55edd30a1867639df2cdab9f871329c # Version: Commits on Jan 26, 2026
---------------------------------------------------------------------------------------------
build: fix linkage for macOS vcpkg build

Adjust some link libraries in CMake for the macOS vcpkg build to not

link Homebrew libs.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>,

---------------------------------------------------------------------------------------
bloodmod.mk 757730e3b39d3d845dd0e398046db5523d609bb8 # Version: Commits on Jan 26, 2026
---------------------------------------------------------------------------------------
Introduce gameLocal.msecPrecise to d3xp/

basically the same as in the previous commit, but more complicated

due to d3xp's slowmo feature.

slowmoMsec was always a float, now its value is based on the precise

frametime (16.666ms, added USERCMD_MSEC_PRECISE for that) instead of

USERCMD_MSEC = 16,

------------------------------------------------------------------------------------
cdoom.mk 270da42e013714aafb0cffbb10e6568a85c307a6 # Version: Commits on Jan 26, 2026
------------------------------------------------------------------------------------
Introduce gameLocal.msecPrecise to d3xp/

basically the same as in the previous commit, but more complicated

due to d3xp's slowmo feature.

slowmoMsec was always a float, now its value is based on the precise

frametime (16.666ms, added USERCMD_MSEC_PRECISE for that) instead of

USERCMD_MSEC = 16,

-----------------------------------------------------------------------------------
d3le.mk 45c013c51e970cede5be052b4e9279c76744096b # Version: Commits on Jan 26, 2026
-----------------------------------------------------------------------------------
Introduce gameLocal.msecPrecise to d3xp/

basically the same as in the previous commit, but more complicated

due to d3xp's slowmo feature.

slowmoMsec was always a float, now its value is based on the precise

frametime (16.666ms, added USERCMD_MSEC_PRECISE for that) instead of

USERCMD_MSEC = 16,

----------------------------------------------------------------------------------------
dentonmod.mk 95e71bd01c5b0a4f39cd2ea7bf49ee1899647519 # Version: Commits on Jan 26, 2026
----------------------------------------------------------------------------------------
Introduce gameLocal.msecPrecise to d3xp/

basically the same as in the previous commit, but more complicated

due to d3xp's slowmo feature.

slowmoMsec was always a float, now its value is based on the precise

frametime (16.666ms, added USERCMD_MSEC_PRECISE for that) instead of

USERCMD_MSEC = 16,

----------------------------------------------------------------------------------------
desolated.mk c5aa467045194fcd2a86f1f8aa3c8ca365cbf49a # Version: Commits on Jan 26, 2026
----------------------------------------------------------------------------------------
Introduce gameLocal.msecPrecise to d3xp/

basically the same as in the previous commit, but more complicated

due to d3xp's slowmo feature.

slowmoMsec was always a float, now its value is based on the precise

frametime (16.666ms, added USERCMD_MSEC_PRECISE for that) instead of

USERCMD_MSEC = 16,

-------------------------------------------------------------------------------------
dhewm3.mk a7a9e2075ea60cf2b826909dce0d9ac0629706e6 # Version: Commits on Jan 26, 2026
-------------------------------------------------------------------------------------
Bump version to 1.5.5rc2

and add a note about the fix for incomplete cubemaps to the changelog.

not mentioning the other changes because they were mostly fixes for

things that I broke after 1.5.4,

-------------------------------------------------------------------------------------
eldoom.mk ff4d6d201b0443465ccbf097e240b47f43f24787 # Version: Commits on Jan 26, 2026
-------------------------------------------------------------------------------------
Introduce gameLocal.msecPrecise to d3xp/

basically the same as in the previous commit, but more complicated

due to d3xp's slowmo feature.

slowmoMsec was always a float, now its value is based on the precise

frametime (16.666ms, added USERCMD_MSEC_PRECISE for that) instead of

USERCMD_MSEC = 16,

-----------------------------------------------------------------------------------
fitz.mk 06af5d131c12f244a54d9964818ad9799e8d6654 # Version: Commits on Jan 26, 2026
-----------------------------------------------------------------------------------
Introduce gameLocal.msecPrecise to d3xp/

basically the same as in the previous commit, but more complicated

due to d3xp's slowmo feature.

slowmoMsec was always a float, now its value is based on the precise

frametime (16.666ms, added USERCMD_MSEC_PRECISE for that) instead of

USERCMD_MSEC = 16,

------------------------------------------------------------------------------------
grimm.mk 6f6a78896270a8dcbeacf294a81234ab52bab9d9 # Version: Commits on Jan 26, 2026
------------------------------------------------------------------------------------
Introduce gameLocal.msecPrecise to d3xp/

basically the same as in the previous commit, but more complicated

due to d3xp's slowmo feature.

slowmoMsec was always a float, now its value is based on the precise

frametime (16.666ms, added USERCMD_MSEC_PRECISE for that) instead of

USERCMD_MSEC = 16,

----------------------------------------------------------------------------------------
hardcorps.mk d8bfe6d8084175789fe8552d0426adaa96e9e06e # Version: Commits on Jan 26, 2026
----------------------------------------------------------------------------------------
Introduce gameLocal.msecPrecise to d3xp/

basically the same as in the previous commit, but more complicated

due to d3xp's slowmo feature.

slowmoMsec was always a float, now its value is based on the precise

frametime (16.666ms, added USERCMD_MSEC_PRECISE for that) instead of

USERCMD_MSEC = 16,

----------------------------------------------------------------------------------------
perfected.mk 74624368cb2bec65bd14949dc1dcd521caa9e020 # Version: Commits on Jan 26, 2026
----------------------------------------------------------------------------------------
Introduce gameLocal.msecPrecise to d3xp/

basically the same as in the previous commit, but more complicated

due to d3xp's slowmo feature.

slowmoMsec was always a float, now its value is based on the precise

frametime (16.666ms, added USERCMD_MSEC_PRECISE for that) instead of

USERCMD_MSEC = 16,

---------------------------------------------------------------------------------------
realgibs.mk ed06a7b12cf836a9c2f8abd746c26acb9eeb99f0 # Version: Commits on Jan 26, 2026
---------------------------------------------------------------------------------------
Introduce gameLocal.msecPrecise to d3xp/

basically the same as in the previous commit, but more complicated

due to d3xp's slowmo feature.

slowmoMsec was always a float, now its value is based on the precise

frametime (16.666ms, added USERCMD_MSEC_PRECISE for that) instead of

USERCMD_MSEC = 16,

---------------------------------------------------------------------------------------
rivensin.mk 9cbfc2b03a4aca42f4e848f9e8b465b410c8984e # Version: Commits on Jan 26, 2026
---------------------------------------------------------------------------------------
Introduce gameLocal.msecPrecise to d3xp/

basically the same as in the previous commit, but more complicated

due to d3xp's slowmo feature.

slowmoMsec was always a float, now its value is based on the precise

frametime (16.666ms, added USERCMD_MSEC_PRECISE for that) instead of

USERCMD_MSEC = 16,

--------------------------------------------------------------------------------------
sikkmod.mk 6103ee0772f4216a14ea4946fd9eff7f3a6f4326 # Version: Commits on Jan 26, 2026
--------------------------------------------------------------------------------------
Introduce gameLocal.msecPrecise to d3xp/

basically the same as in the previous commit, but more complicated

due to d3xp's slowmo feature.

slowmoMsec was always a float, now its value is based on the precise

frametime (16.666ms, added USERCMD_MSEC_PRECISE for that) instead of

USERCMD_MSEC = 16,
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants