Index | Thread | Search

From:
Pascal Stumpf <pascal@stumpf.co>
Subject:
[update] games/openmw to 0.50.0
To:
ports@openbsd.org
Date:
Sun, 09 Nov 2025 09:37:49 +0100

Download raw body.

Thread
I have already sent out the devel/collada-dom port which is now
required.  Pieces below are:

Update mygui to 3.4.3 and enable -DMYGUI_DONT_USE_OBSOLETE.

Enable the DAE plugin in graphics/openscenegraph (this is what
collada-dom is for)

And finally the update to 0.50.0.


Index: devel/mygui/Makefile
===================================================================
RCS file: /home/cvs/ports/devel/mygui/Makefile,v
diff -u -p -r1.12 Makefile
--- devel/mygui/Makefile	11 Sep 2023 20:51:24 -0000	1.12
+++ devel/mygui/Makefile	7 Nov 2025 20:50:09 -0000
@@ -1,6 +1,6 @@
 COMMENT =		library for creating GUIs for games and 3D applications
 
-V = 			3.4.1
+V = 			3.4.3
 GH_ACCOUNT = 		MyGUI
 GH_PROJECT = 		mygui
 GH_TAGNAME = 		MyGUI${V}
@@ -30,6 +30,8 @@ CXXFLAGS +=		-fPIC
 CONFIGURE_ARGS += 	-DMYGUI_BUILD_DEMOS=false \
 			-DMYGUI_BUILD_PLUGINS=false \
 			-DMYGUI_BUILD_TOOLS=false \
+			-DMYGUI_DONT_USE_OBSOLETE=ON \
+			-DMYGUI_USE_SYSTEM_GLEW=true \
 			-DMYGUI_RENDERSYSTEM=4 \
 			-DCMAKE_CXX_FLAGS="-I${X11BASE}/include" \
 			-Wno-dev
Index: devel/mygui/distinfo
===================================================================
RCS file: /home/cvs/ports/devel/mygui/distinfo,v
diff -u -p -r1.3 distinfo
--- devel/mygui/distinfo	11 Sep 2023 20:51:24 -0000	1.3
+++ devel/mygui/distinfo	28 Jan 2025 17:54:26 -0000
@@ -1,2 +1,2 @@
-SHA256 (mygui-3.4.1.tar.gz) = vfcwvetK2J5rgiOWfbAapSdNK5OtwsDWqkhC+u7U3ho=
-SIZE (mygui-3.4.1.tar.gz) = 22433198
+SHA256 (mygui-3.4.3.tar.gz) = M8kbUxmTBH53ys421v6nNjS4wXvQ7Rk9TNEqx8Yyir0=
+SIZE (mygui-3.4.3.tar.gz) = 18797995
Index: devel/mygui/patches/patch-Common_Base_Ogre_BaseManager_cpp
===================================================================
RCS file: /home/cvs/ports/devel/mygui/patches/patch-Common_Base_Ogre_BaseManager_cpp,v
diff -u -p -r1.5 patch-Common_Base_Ogre_BaseManager_cpp
--- devel/mygui/patches/patch-Common_Base_Ogre_BaseManager_cpp	11 Sep 2023 20:51:24 -0000	1.5
+++ devel/mygui/patches/patch-Common_Base_Ogre_BaseManager_cpp	28 Jan 2025 18:03:10 -0000
@@ -1,13 +1,9 @@
 Index: Common/Base/Ogre/BaseManager.cpp
 --- Common/Base/Ogre/BaseManager.cpp.orig
 +++ Common/Base/Ogre/BaseManager.cpp
-@@ -36,15 +36,19 @@ namespace base
- #if MYGUI_PLATFORM == MYGUI_PLATFORM_APPLE
- 		const std::string resourcePath = macBundlePath() + "/Contents/Resources/";
- #else
--		const std::string resourcePath = "";
-+		const std::string resourcePath = "${SYSCONFDIR}/MYGUI/";
- #endif
+@@ -14,12 +14,16 @@ namespace base
+ 	bool BaseManager::createRender(int _width, int _height, bool _windowed)
+ 	{
  		Ogre::String pluginsPath;
 +		char *homedir;
 +		homedir = getenv("HOME");
@@ -15,10 +11,10 @@ Index: Common/Base/Ogre/BaseManager.cpp
 +		homePath = homedir;
  
  #ifndef OGRE_STATIC_LIB
- 		pluginsPath = resourcePath + "plugins.cfg";
+ 		pluginsPath = "plugins.cfg";
  #endif
  
--		mRoot = new Ogre::Root(pluginsPath, resourcePath + "ogre.cfg", resourcePath + "Ogre.log");
+-		mRoot = new Ogre::Root(pluginsPath, "ogre.cfg", "Ogre.log");
 +		mRoot = new Ogre::Root(pluginsPath, homePath + "/mygui-ogre.cfg", homePath + "/mygui-Ogre.log");
  		auto renderSystem = mRoot->getRenderSystemByName(mRoot->getAvailableRenderers()[0]->getName());
  		mRoot->setRenderSystem(renderSystem);
Index: devel/mygui/patches/patch-MyGUIEngine_include_MyGUI_UString_h
===================================================================
RCS file: /home/cvs/ports/devel/mygui/patches/patch-MyGUIEngine_include_MyGUI_UString_h,v
diff -u -p -r1.1 patch-MyGUIEngine_include_MyGUI_UString_h
--- devel/mygui/patches/patch-MyGUIEngine_include_MyGUI_UString_h	21 Aug 2025 16:31:48 -0000	1.1
+++ devel/mygui/patches/patch-MyGUIEngine_include_MyGUI_UString_h	7 Nov 2025 18:58:58 -0000
@@ -2,8 +2,8 @@ Unbreak with libcxx
 Index: MyGUIEngine/include/MyGUI_UString.h
 --- MyGUIEngine/include/MyGUI_UString.h.orig
 +++ MyGUIEngine/include/MyGUI_UString.h
-@@ -154,10 +154,10 @@ namespace MyGUI
- 		static const size_type npos = static_cast<size_type>(~0);
+@@ -163,10 +163,10 @@ namespace MyGUI
+ 		static const size_type npos = std::numeric_limits<size_t>::max();
  
  		//! a single 32-bit Unicode character
 -		using unicode_char = uint32;
Index: devel/mygui/patches/patch-Platforms_OpenGL_OpenGLPlatform_CMakeLists_txt
===================================================================
RCS file: devel/mygui/patches/patch-Platforms_OpenGL_OpenGLPlatform_CMakeLists_txt
diff -N devel/mygui/patches/patch-Platforms_OpenGL_OpenGLPlatform_CMakeLists_txt
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ devel/mygui/patches/patch-Platforms_OpenGL_OpenGLPlatform_CMakeLists_txt	28 Jan 2025 19:33:01 -0000
@@ -0,0 +1,13 @@
+Index: Platforms/OpenGL/OpenGLPlatform/CMakeLists.txt
+--- Platforms/OpenGL/OpenGLPlatform/CMakeLists.txt.orig
++++ Platforms/OpenGL/OpenGLPlatform/CMakeLists.txt
+@@ -25,9 +25,6 @@ add_dependencies(${PROJECTNAME} MyGUIEngine)
+ 
+ if (APPLE OR WIN32)
+ 	target_link_libraries(${PROJECTNAME} ${OPENGL_gl_LIBRARY} MyGUIEngine)
+-else ()
+-	# opengl instead of gl makes it compile and work in a libX11-free wayland setup
+-	target_link_libraries(${PROJECTNAME} ${OPENGL_opengl_LIBRARY} MyGUIEngine)
+ endif ()
+ if (MYGUI_USE_SYSTEM_GLEW)
+ 	target_link_libraries(${PROJECTNAME} ${GLEW_LIBRARIES})
Index: graphics/openscenegraph/Makefile
===================================================================
RCS file: /home/cvs/ports/graphics/openscenegraph/Makefile,v
diff -u -p -r1.40 Makefile
--- graphics/openscenegraph/Makefile	7 Sep 2025 16:33:46 -0000	1.40
+++ graphics/openscenegraph/Makefile	9 Nov 2025 08:36:14 -0000
@@ -10,7 +10,7 @@ GH_ACCOUNT =		openscenegraph
 GH_PROJECT =		OpenSceneGraph
 GH_TAGNAME =		OpenSceneGraph-$V
 DISTNAME =		openscenegraph-${V}
-REVISION =		10
+REVISION =		11
 
 SUBST_VARS +=		V
 
@@ -46,15 +46,17 @@ COMPILER =	base-clang ports-gcc
 
 CXXFLAGS_base-clang =	-std=c++14
 
-WANTLIB += ${COMPILER_LIBCXX} GL Iex-3_4 IlmThread-3_4
-WANTLIB += SDL X11 Xinerama Xrandr fontconfig OpenEXRCore-3_4
-WANTLIB += avcodec avdevice avformat avutil c cairo
-WANTLIB += curl freetype gdal gdk_pixbuf-2.0 gif gio-2.0 glib-2.0
-WANTLIB += gobject-2.0 intl jasper jpeg m png poppler-glib rsvg-2
-WANTLIB += swresample swscale tiff z Imath-3_2 OpenEXR-3_4
+WANTLIB += ${COMPILER_LIBCXX} GL Iex-3_4 IlmThread-3_4 Imath-3_2
+WANTLIB += OpenEXR-3_4 OpenEXRCore-3_4 SDL X11 Xinerama Xrandr
+WANTLIB += avcodec avdevice avformat avutil boost_filesystem c
+WANTLIB += cairo collada-dom2.4-dp curl fontconfig freetype gdal
+WANTLIB += gdk_pixbuf-2.0 gif gio-2.0 glib-2.0 gobject-2.0 intl
+WANTLIB += jasper jpeg m png poppler-glib rsvg-2 swresample swscale
+WANTLIB += tiff z
 
 MODULES =		devel/cmake
-LIB_DEPENDS =		devel/sdl \
+LIB_DEPENDS =		devel/collada-dom \
+			devel/sdl \
 			graphics/openexr \
 			graphics/ffmpeg \
 			graphics/jasper \
Index: graphics/openscenegraph/pkg/PLIST
===================================================================
RCS file: /home/cvs/ports/graphics/openscenegraph/pkg/PLIST,v
diff -u -p -r1.5 PLIST
--- graphics/openscenegraph/pkg/PLIST	11 Mar 2022 19:22:57 -0000	1.5
+++ graphics/openscenegraph/pkg/PLIST	8 Nov 2025 16:42:08 -0000
@@ -669,6 +669,7 @@ lib/osgPlugins-${V}/
 @so lib/osgPlugins-${V}/osgdb_bvh.so
 @so lib/osgPlugins-${V}/osgdb_cfg.so
 @so lib/osgPlugins-${V}/osgdb_curl.so
+@so lib/osgPlugins-${V}/osgdb_dae.so
 @so lib/osgPlugins-${V}/osgdb_dds.so
 @so lib/osgPlugins-${V}/osgdb_deprecated_osg.so
 @so lib/osgPlugins-${V}/osgdb_deprecated_osganimation.so
Index: games/openmw/Makefile
===================================================================
RCS file: /home/cvs/ports/games/openmw/Makefile,v
diff -u -p -r1.38 Makefile
--- games/openmw/Makefile	17 Oct 2025 11:31:01 -0000	1.38
+++ games/openmw/Makefile	8 Nov 2025 17:56:26 -0000
@@ -4,14 +4,13 @@ ONLY_FOR_ARCHS =	amd64 i386
 
 COMMENT =		open source implementation of TES III: Morrowind
 
-V =			0.48.0
+V =			0.50.0
 GH_ACCOUNT =		OpenMW
 GH_PROJECT =		openmw
 GH_TAGNAME =		openmw-$V
 DISTNAME =		openmw-$V
-REVISION =		3
 
-DISTFILES.a = 		e75adf86f91eb3082220085e42dda62679f9a3ea.zip
+DISTFILES.a = 		c393777d26d2ff6519ac23612abf8af42678c9dd.zip
 DIST_SUBDIR =		openmw
 SITES.a =		https://github.com/recastnavigation/recastnavigation/archive/
 
@@ -27,15 +26,17 @@ PERMIT_PACKAGE =	Yes
 USE_NOBTCFI-aarch64 =	Yes
 
 WANTLIB += ${COMPILER_LIBCXX} BulletCollision GL LinearMath MyGUIEngine
-WANTLIB += boost_atomic-mt boost_filesystem-mt boost_iostreams-mt
-WANTLIB += boost_program_options-mt boost_system-mt icudata icui18n
-WANTLIB += icuuc luajit-5.1
-WANTLIB += OpenThreads Qt5Core Qt5Gui Qt5Network Qt5OpenGL Qt5Widgets
-WANTLIB += SDL2 avcodec avformat avutil c lz4 m openal osg osgAnimation
-WANTLIB += osgDB osgFX osgGA osgParticle osgShadow osgText osgUtil
-WANTLIB += osgViewer sqlite3 swresample swscale unshield yaml-cpp
-
-MODULES =		devel/cmake lang/lua x11/qt5
+WANTLIB += OpenThreads Qt6Core Qt6Gui Qt6Network Qt6OpenGL Qt6OpenGLWidgets
+WANTLIB += Qt6Svg Qt6Widgets SDL2 avcodec avformat avutil boost_iostreams-mt
+WANTLIB += boost_program_options-mt boost_random-mt boost_regex-mt
+WANTLIB += boost_system-mt c collada-dom2.4-dp icudata icui18n icuuc luajit-5.1
+WANTLIB += lz4 m openal osg osgAnimation osgDB osgFX osgGA osgParticle
+WANTLIB += osgShadow osgSim osgText osgUtil osgViewer sqlite3
+WANTLIB += swresample swscale unshield yaml-cpp z
+
+MODULES =		devel/cmake lang/lua x11/qt6 lang/clang
+MODCLANG_VERSION =	19
+COMPILER =		ports-clang
 
 BUILD_DEPENDS = 	sysutils/e2fsprogs
 LIB_DEPENDS =		archivers/unshield \
@@ -47,9 +48,10 @@ LIB_DEPENDS =		archivers/unshield \
 			devel/sdl2 \
 			devel/yaml-cpp \
 			graphics/ffmpeg \
-			graphics/openscenegraph \
+			graphics/openscenegraph>=3.6.5p11 \
 			lang/luajit \
-			textproc/icu4c
+			textproc/icu4c \
+			x11/qt6/qtsvg
 RUN_DEPENDS  = 		devel/desktop-file-utils
 
 CONFIGURE_ARGS += 	-DBINDIR=${LOCALBASE}/bin \
@@ -57,12 +59,13 @@ CONFIGURE_ARGS += 	-DBINDIR=${LOCALBASE}
 			-DSYSCONFDIR=${PREFIX}/share/examples/openmw \
 			-DGLOBAL_CONFIG_PATH="${SYSCONFDIR}" \
 			-DOPENMW_RESOURCE_FILES="${LOCALBASE}/share/openmw/resources" \
-			-DCMAKE_PREFIX_PATH="${LOCALBASE}/lib/qt5/cmake" \
-			-DCMAKE_DISABLE_FIND_PACKAGE_Doxygen=ON
+			-DCMAKE_PREFIX_PATH="${LOCALBASE}/lib/qt5/cmake:${LOCALBASE}" \
+			-DCMAKE_DISABLE_FIND_PACKAGE_Doxygen=ON \
+			-DCOLLADA_DOM_VERSION_MINOR=4
 
 NO_TEST =		Yes
 
-WRKDIST =		${WRKDIR}/openmw-openmw-$V
+WRKDIST =		${WRKDIR}/openmw-${GH_TAGNAME}
 
 CFLAGS += 		-I${X11BASE}/include -pthread
 CXXFLAGS +=		-I${X11BASE}/include -pthread
@@ -70,7 +73,10 @@ MODCMAKE_LDFLAGS =		-L${X11BASE}/lib
 
 post-extract:
 	mkdir ${WRKDIST}/extern/fetched
-	mv ${WRKDIR}/recastnavigation-e75adf86f91eb3082220085e42dda62679f9a3ea \
+	mv ${WRKDIR}/recastnavigation-c393777d26d2ff6519ac23612abf8af42678c9dd \
 		${WRKDIST}/extern/fetched/recastnavigation
+
+post-patch:
+	${SUBST_CMD} ${WRKSRC}/components/files/linuxpath.cpp
 
 .include <bsd.port.mk>
Index: games/openmw/distinfo
===================================================================
RCS file: /home/cvs/ports/games/openmw/distinfo,v
diff -u -p -r1.13 distinfo
--- games/openmw/distinfo	25 Apr 2024 22:05:21 -0000	1.13
+++ games/openmw/distinfo	7 Nov 2025 17:06:03 -0000
@@ -1,4 +1,4 @@
-SHA256 (openmw/e75adf86f91eb3082220085e42dda62679f9a3ea.zip) = 0zOarqHYEwe8rCvs4XbFNZ7V+Mj5ch/DYNKPgvkRklM=
-SHA256 (openmw/openmw-0.48.0.tar.gz) = vpe46QCFPEPd6IFvLOSYAftnLP/fSKx6+Xgqv7inSvQ=
-SIZE (openmw/e75adf86f91eb3082220085e42dda62679f9a3ea.zip) = 1644592
-SIZE (openmw/openmw-0.48.0.tar.gz) = 6022261
+SHA256 (openmw/c393777d26d2ff6519ac23612abf8af42678c9dd.zip) = fX/DjJpS29oLodq3DR7VnaEXirHE+iCc23zC3Pzo5Oo=
+SHA256 (openmw/openmw-0.50.0.tar.gz) = cJOozvJlhSIGWFaeuEY2xauQHoL3TIo/ejqK7DW/xUw=
+SIZE (openmw/c393777d26d2ff6519ac23612abf8af42678c9dd.zip) = 1406094
+SIZE (openmw/openmw-0.50.0.tar.gz) = 6244084
Index: games/openmw/patches/patch-apps_openmw_mwsound_ffmpeg_decoder_cpp
===================================================================
RCS file: games/openmw/patches/patch-apps_openmw_mwsound_ffmpeg_decoder_cpp
diff -N games/openmw/patches/patch-apps_openmw_mwsound_ffmpeg_decoder_cpp
--- games/openmw/patches/patch-apps_openmw_mwsound_ffmpeg_decoder_cpp	21 Oct 2025 12:53:02 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,229 +0,0 @@
-https://github.com/OpenMW/openmw/commit/61cb5b4da638d520c41a9d99b5850384b2e22679
-
-Index: apps/openmw/mwsound/ffmpeg_decoder.cpp
---- apps/openmw/mwsound/ffmpeg_decoder.cpp.orig
-+++ apps/openmw/mwsound/ffmpeg_decoder.cpp
-@@ -8,6 +8,10 @@
- #include <components/debug/debuglog.hpp>
- #include <components/vfs/manager.hpp>
- 
-+#if FFMPEG_5_OR_GREATER
-+#include <libavutil/channel_layout.h>
-+#endif
-+
- namespace MWSound
- {
- 
-@@ -29,7 +33,11 @@ int FFmpeg_Decoder::readPacket(void *user_data, uint8_
-     }
- }
- 
-+#if FFMPEG_CONST_WRITEPACKET
-+int FFmpeg_Decoder::writePacket(void*, const uint8_t*, int)
-+#else
- int FFmpeg_Decoder::writePacket(void *, uint8_t *, int)
-+#endif
- {
-     Log(Debug::Error) << "can't write to read-only stream";
-     return -1;
-@@ -124,7 +132,11 @@ bool FFmpeg_Decoder::getAVAudioData()
-             if(!mDataBuf || mDataBufLen < mFrame->nb_samples)
-             {
-                 av_freep(&mDataBuf);
-+#if FFMPEG_5_OR_GREATER
-+                if (av_samples_alloc(&mDataBuf, nullptr, mOutputChannelLayout.nb_channels,
-+#else
-                 if(av_samples_alloc(&mDataBuf, nullptr, av_get_channel_layout_nb_channels(mOutputChannelLayout),
-+#endif
-                                     mFrame->nb_samples, mOutputSampleFormat, 0) < 0)
-                     return false;
-                 else
-@@ -159,7 +171,11 @@ size_t FFmpeg_Decoder::readAVAudioData(void *data, siz
-             if(!getAVAudioData())
-                 break;
-             mFramePos = 0;
-+#if FFMPEG_5_OR_GREATER
-+            mFrameSize = mFrame->nb_samples * mOutputChannelLayout.nb_channels *
-+#else
-             mFrameSize = mFrame->nb_samples * av_get_channel_layout_nb_channels(mOutputChannelLayout) *
-+#endif
-                          av_get_bytes_per_sample(mOutputSampleFormat);
-         }
- 
-@@ -256,11 +272,20 @@ void FFmpeg_Decoder::open(const std::string &fname)
-         else
-             mOutputSampleFormat = AV_SAMPLE_FMT_S16;
- 
-+#if FFMPEG_5_OR_GREATER
-+        mOutputChannelLayout = (*mStream)->codecpar->ch_layout; // sefault
-+        if (mOutputChannelLayout.u.mask == 0)
-+            av_channel_layout_default(&mOutputChannelLayout, mCodecCtx->ch_layout.nb_channels);
-+
-+        mCodecCtx->ch_layout = mOutputChannelLayout;
-+#else
-         mOutputChannelLayout = (*mStream)->codecpar->channel_layout;
-         if(mOutputChannelLayout == 0)
-             mOutputChannelLayout = av_get_default_channel_layout(mCodecCtx->channels);
- 
-         mCodecCtx->channel_layout = mOutputChannelLayout;
-+#endif
-+
-     }
-     catch(...)
-     {
-@@ -346,42 +371,87 @@ void FFmpeg_Decoder::getInfo(int *samplerate, ChannelC
-         *type = SampleType_Int16;
-     }
- 
--    if(mOutputChannelLayout == AV_CH_LAYOUT_MONO)
--        *chans = ChannelConfig_Mono;
--    else if(mOutputChannelLayout == AV_CH_LAYOUT_STEREO)
--        *chans = ChannelConfig_Stereo;
--    else if(mOutputChannelLayout == AV_CH_LAYOUT_QUAD)
--        *chans = ChannelConfig_Quad;
--    else if(mOutputChannelLayout == AV_CH_LAYOUT_5POINT1)
--        *chans = ChannelConfig_5point1;
--    else if(mOutputChannelLayout == AV_CH_LAYOUT_7POINT1)
--        *chans = ChannelConfig_7point1;
--    else
-+#if FFMPEG_5_OR_GREATER
-+    switch (mOutputChannelLayout.u.mask)
-+#else
-+    switch (mOutputChannelLayout)
-+#endif
-     {
--        char str[1024];
--        av_get_channel_layout_string(str, sizeof(str), mCodecCtx->channels, mCodecCtx->channel_layout);
--        Log(Debug::Error) << "Unsupported channel layout: "<< str;
--
--        if(mCodecCtx->channels == 1)
--        {
--            mOutputChannelLayout = AV_CH_LAYOUT_MONO;
-+        case AV_CH_LAYOUT_MONO:
-             *chans = ChannelConfig_Mono;
--        }
--        else
--        {
--            mOutputChannelLayout = AV_CH_LAYOUT_STEREO;
-+            break;
-+        case AV_CH_LAYOUT_STEREO:
-             *chans = ChannelConfig_Stereo;
--        }
--    }
-+            break;
-+        case AV_CH_LAYOUT_QUAD:
-+            *chans = ChannelConfig_Quad;
-+            break;
-+        case AV_CH_LAYOUT_5POINT1:
-+            *chans = ChannelConfig_5point1;
-+            break;
-+        case AV_CH_LAYOUT_7POINT1:
-+            *chans = ChannelConfig_7point1;
-+            break;
-+        default:
-+            char str[1024];
-+#if FFMPEG_5_OR_GREATER
-+            av_channel_layout_describe(&mCodecCtx->ch_layout, str, sizeof(str));
-+            Log(Debug::Error) << "Unsupported channel layout: " << str;
- 
-+            if (mCodecCtx->ch_layout.nb_channels == 1)
-+            {
-+                mOutputChannelLayout = AV_CHANNEL_LAYOUT_MONO;
-+                *chans = ChannelConfig_Mono;
-+            }
-+            else
-+            {
-+                mOutputChannelLayout = AV_CHANNEL_LAYOUT_STEREO;
-+                *chans = ChannelConfig_Stereo;
-+            }
-+#else
-+            av_get_channel_layout_string(str, sizeof(str), mCodecCtx->channels, mCodecCtx->channel_layout);
-+            Log(Debug::Error) << "Unsupported channel layout: " << str;
-+
-+            if (mCodecCtx->channels == 1)
-+            {
-+                mOutputChannelLayout = AV_CH_LAYOUT_MONO;
-+                *chans = ChannelConfig_Mono;
-+            }
-+            else
-+            {
-+                mOutputChannelLayout = AV_CH_LAYOUT_STEREO;
-+                *chans = ChannelConfig_Stereo;
-+            }
-+#endif
-+            break;
-+    }
-     *samplerate = mCodecCtx->sample_rate;
-+#if FFMPEG_5_OR_GREATER
-+    AVChannelLayout ch_layout = mCodecCtx->ch_layout;
-+    if (ch_layout.u.mask == 0)
-+        av_channel_layout_default(&ch_layout, mCodecCtx->ch_layout.nb_channels);
-+
-+    if (mOutputSampleFormat != mCodecCtx->sample_fmt || mOutputChannelLayout.u.mask != ch_layout.u.mask)
-+#else
-     int64_t ch_layout = mCodecCtx->channel_layout;
-     if(ch_layout == 0)
-         ch_layout = av_get_default_channel_layout(mCodecCtx->channels);
- 
-     if(mOutputSampleFormat != mCodecCtx->sample_fmt ||
-        mOutputChannelLayout != ch_layout)
-+#endif
-     {
-+#if FFMPEG_5_OR_GREATER
-+        swr_alloc_set_opts2(&mSwr,                        // SwrContext
-+                            &mOutputChannelLayout,        // output ch layout
-+                            mOutputSampleFormat,          // output sample format
-+                            mCodecCtx->sample_rate,       // output sample rate
-+                            &ch_layout,                   // input ch layout
-+                            mCodecCtx->sample_fmt,        // input sample format
-+                            mCodecCtx->sample_rate,       // input sample rate
-+                            0,                            // logging level offset
-+                            nullptr);                     // log context
-+#else
-         mSwr = swr_alloc_set_opts(mSwr,                   // SwrContext
-                           mOutputChannelLayout,           // output ch layout
-                           mOutputSampleFormat,            // output sample format
-@@ -391,6 +461,7 @@ void FFmpeg_Decoder::getInfo(int *samplerate, ChannelC
-                           mCodecCtx->sample_rate, // input sample rate
-                           0,                              // logging level offset
-                           nullptr);                          // log context
-+#endif
-         if(!mSwr)
-             throw std::runtime_error("Couldn't allocate SwrContext");
-         int init=swr_init(mSwr);
-@@ -419,7 +490,11 @@ void FFmpeg_Decoder::readAll(std::vector<char> &output
- 
-     while(getAVAudioData())
-     {
-+#if FFMPEG_5_OR_GREATER
-+        size_t got = mFrame->nb_samples * mOutputChannelLayout.nb_channels *
-+#else
-         size_t got = mFrame->nb_samples * av_get_channel_layout_nb_channels(mOutputChannelLayout) *
-+#endif
-                      av_get_bytes_per_sample(mOutputSampleFormat);
-         const char *inbuf = reinterpret_cast<char*>(mFrameData[0]);
-         output.insert(output.end(), inbuf, inbuf+got);
-@@ -428,7 +503,11 @@ void FFmpeg_Decoder::readAll(std::vector<char> &output
- 
- size_t FFmpeg_Decoder::getSampleOffset()
- {
-+#if FFMPEG_5_OR_GREATER
-+    int delay = (mFrameSize - mFramePos) / mOutputChannelLayout.nb_channels /
-+#else
-     int delay = (mFrameSize-mFramePos) / av_get_channel_layout_nb_channels(mOutputChannelLayout) /
-+#endif
-                 av_get_bytes_per_sample(mOutputSampleFormat);
-     return (int)(mNextPts*mCodecCtx->sample_rate) - delay;
- }
-@@ -444,7 +523,11 @@ FFmpeg_Decoder::FFmpeg_Decoder(const VFS::Manager* vfs
-   , mNextPts(0.0)
-   , mSwr(nullptr)
-   , mOutputSampleFormat(AV_SAMPLE_FMT_NONE)
-+#if FFMPEG_5_OR_GREATER
-+        , mOutputChannelLayout({})
-+#else
-   , mOutputChannelLayout(0)
-+#endif
-   , mDataBuf(nullptr)
-   , mFrameData(nullptr)
-   , mDataBufLen(0)
Index: games/openmw/patches/patch-apps_openmw_mwsound_ffmpeg_decoder_hpp
===================================================================
RCS file: games/openmw/patches/patch-apps_openmw_mwsound_ffmpeg_decoder_hpp
diff -N games/openmw/patches/patch-apps_openmw_mwsound_ffmpeg_decoder_hpp
--- games/openmw/patches/patch-apps_openmw_mwsound_ffmpeg_decoder_hpp	21 Oct 2025 12:53:02 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,39 +0,0 @@
-https://github.com/OpenMW/openmw/commit/61cb5b4da638d520c41a9d99b5850384b2e22679
-
-Index: apps/openmw/mwsound/ffmpeg_decoder.hpp
---- apps/openmw/mwsound/ffmpeg_decoder.hpp.orig
-+++ apps/openmw/mwsound/ffmpeg_decoder.hpp
-@@ -31,6 +31,9 @@ extern "C"
- #include "sound_decoder.hpp"
- 
- 
-+#define FFMPEG_5_OR_GREATER (LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(57, 28, 100))
-+#define FFMPEG_CONST_WRITEPACKET (LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(60, 12, 100) && !defined(FF_API_AVIO_WRITE_NONCONST))
-+
- namespace MWSound
- {
-     class FFmpeg_Decoder final : public Sound_Decoder
-@@ -49,7 +52,11 @@ namespace MWSound
- 
-         SwrContext *mSwr;
-         enum AVSampleFormat mOutputSampleFormat;
-+#if FFMPEG_5_OR_GREATER
-+        AVChannelLayout mOutputChannelLayout;
-+#else
-         int64_t mOutputChannelLayout;
-+#endif
-         uint8_t *mDataBuf;
-         uint8_t **mFrameData;
-         int mDataBufLen;
-@@ -59,7 +66,11 @@ namespace MWSound
-         Files::IStreamPtr mDataStream;
- 
-         static int readPacket(void *user_data, uint8_t *buf, int buf_size);
-+#if FFMPEG_CONST_WRITEPACKET
-+        static int writePacket(void* user_data, const uint8_t* buf, int buf_size);
-+#else
-         static int writePacket(void *user_data, uint8_t *buf, int buf_size);
-+#endif
-         static int64_t seek(void *user_data, int64_t offset, int whence);
- 
-         bool getAVAudioData();
Index: games/openmw/patches/patch-apps_openmw_mwsound_movieaudiofactory_cpp
===================================================================
RCS file: games/openmw/patches/patch-apps_openmw_mwsound_movieaudiofactory_cpp
diff -N games/openmw/patches/patch-apps_openmw_mwsound_movieaudiofactory_cpp
--- games/openmw/patches/patch-apps_openmw_mwsound_movieaudiofactory_cpp	21 Oct 2025 12:53:02 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,17 +0,0 @@
-https://github.com/OpenMW/openmw/commit/61cb5b4da638d520c41a9d99b5850384b2e22679
-
-Index: apps/openmw/mwsound/movieaudiofactory.cpp
---- apps/openmw/mwsound/movieaudiofactory.cpp.orig
-+++ apps/openmw/mwsound/movieaudiofactory.cpp
-@@ -44,7 +44,11 @@ namespace MWSound
- 
-         size_t getSampleOffset()
-         {
-+#if FFMPEG_5_OR_GREATER
-+            ssize_t clock_delay = (mFrameSize - mFramePos) / mOutputChannelLayout.nb_channels /
-+#else
-             ssize_t clock_delay = (mFrameSize-mFramePos) / av_get_channel_layout_nb_channels(mOutputChannelLayout) /
-+#endif
-                                   av_get_bytes_per_sample(mOutputSampleFormat);
-             return (size_t)(mAudioClock*mAudioContext->sample_rate) - clock_delay;
-         }
Index: games/openmw/patches/patch-apps_openmw_mwstate_charactermanager_hpp
===================================================================
RCS file: games/openmw/patches/patch-apps_openmw_mwstate_charactermanager_hpp
diff -N games/openmw/patches/patch-apps_openmw_mwstate_charactermanager_hpp
--- games/openmw/patches/patch-apps_openmw_mwstate_charactermanager_hpp	19 Apr 2025 15:15:13 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
-Fix build with boost 1.87; from FreeBSD
-
-Index: apps/openmw/mwstate/charactermanager.hpp
---- apps/openmw/mwstate/charactermanager.hpp.orig
-+++ apps/openmw/mwstate/charactermanager.hpp
-@@ -1,6 +1,8 @@
- #ifndef GAME_STATE_CHARACTERMANAGER_H
- #define GAME_STATE_CHARACTERMANAGER_H
- 
-+#include <list>
-+
- #include <boost/filesystem/path.hpp>
- 
- #include "character.hpp"
Index: games/openmw/patches/patch-components_bsa_bsa_file_cpp
===================================================================
RCS file: games/openmw/patches/patch-components_bsa_bsa_file_cpp
diff -N games/openmw/patches/patch-components_bsa_bsa_file_cpp
--- games/openmw/patches/patch-components_bsa_bsa_file_cpp	19 Apr 2025 15:15:13 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,13 +0,0 @@
-Fix build with boost 1.87; from FreeBSD
-
-Index: components/bsa/bsa_file.cpp
---- components/bsa/bsa_file.cpp.orig
-+++ components/bsa/bsa_file.cpp
-@@ -26,6 +26,7 @@
- #include <components/files/constrainedfilestream.hpp>
- 
- #include <cassert>
-+#include <algorithm>
- 
- #include <boost/filesystem/path.hpp>
- #include <boost/filesystem/fstream.hpp>
Index: games/openmw/patches/patch-components_to_utf8_to_utf8_cpp
===================================================================
RCS file: games/openmw/patches/patch-components_to_utf8_to_utf8_cpp
diff -N games/openmw/patches/patch-components_to_utf8_to_utf8_cpp
--- games/openmw/patches/patch-components_to_utf8_to_utf8_cpp	3 Sep 2025 07:51:31 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
-Fix build with libc++19; backported from openmw-0.49.0
-
-Index: components/to_utf8/to_utf8.cpp
---- components/to_utf8/to_utf8.cpp.orig
-+++ components/to_utf8/to_utf8.cpp
-@@ -52,7 +52,7 @@ namespace
-         return std::find_if(input.begin(), input.end(), [] (unsigned char v) { return v == 0 || v >= 128; });
-     }
- 
--    std::basic_string_view<signed char> getTranslationArray(FromType sourceEncoding)
-+    std::span<const signed char> getTranslationArray(FromType sourceEncoding)
-     {
-         switch (sourceEncoding)
-         {
Index: games/openmw/patches/patch-components_to_utf8_to_utf8_hpp
===================================================================
RCS file: games/openmw/patches/patch-components_to_utf8_to_utf8_hpp
diff -N games/openmw/patches/patch-components_to_utf8_to_utf8_hpp
--- games/openmw/patches/patch-components_to_utf8_to_utf8_hpp	3 Sep 2025 07:51:31 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,22 +0,0 @@
-Fix build with libc++19; backported from openmw-0.49.0
-
-Index: components/to_utf8/to_utf8.hpp
---- components/to_utf8/to_utf8.hpp.orig
-+++ components/to_utf8/to_utf8.hpp
-@@ -3,6 +3,7 @@
- 
- #include <string>
- #include <cstring>
-+#include <span>
- #include <vector>
- #include <string_view>
- 
-@@ -46,7 +47,7 @@ namespace ToUTF8
-             inline std::pair<std::size_t, bool> getLengthLegacyEnc(std::string_view input) const;
-             inline void copyFromArrayLegacyEnc(std::string_view::iterator& chp, std::string_view::iterator end, char* &out) const;
- 
--            const std::basic_string_view<signed char> mTranslationArray;
-+            const std::span<const signed char> mTranslationArray;
-     };
- 
-     class Utf8Encoder
Index: games/openmw/patches/patch-extern_CMakeLists_txt
===================================================================
RCS file: /home/cvs/ports/games/openmw/patches/patch-extern_CMakeLists_txt,v
diff -u -p -r1.3 patch-extern_CMakeLists_txt
--- games/openmw/patches/patch-extern_CMakeLists_txt	25 Apr 2024 22:05:21 -0000	1.3
+++ games/openmw/patches/patch-extern_CMakeLists_txt	27 Jan 2025 20:31:24 -0000
@@ -1,15 +1,14 @@
 Index: extern/CMakeLists.txt
 --- extern/CMakeLists.txt.orig
 +++ extern/CMakeLists.txt
-@@ -179,14 +179,7 @@ if(NOT OPENMW_USE_SYSTEM_RECASTNAVIGATION)
+@@ -173,13 +173,7 @@ if(NOT OPENMW_USE_SYSTEM_RECASTNAVIGATION)
      set(RECASTNAVIGATION_TESTS OFF CACHE BOOL "")
      set(RECASTNAVIGATION_EXAMPLES OFF CACHE BOOL "")
  
--    # master on 15 Feb 2021
 -    include(FetchContent)
 -    FetchContent_Declare(recastnavigation
--        URL https://github.com/recastnavigation/recastnavigation/archive/e75adf86f91eb3082220085e42dda62679f9a3ea.zip
--        URL_HASH SHA512=93a19490cdfa55e98a6af9cc050e94af88fdb95fae2059ceeff28b62f3b48515f5fdd2c806c910550933b6861a4f6a91173ee0ed1b61c1396f7b34d4c78f0793
+-        URL https://github.com/recastnavigation/recastnavigation/archive/c393777d26d2ff6519ac23612abf8af42678c9dd.zip
+-        URL_HASH SHA512=48f20cee7a70c2f20f4c68bb74d5af11a1434be85294e37f5fe7b7aae820fbcdff4f35d3be286eaf6f9cbce0aed4201fcc090df409a5bd04aec5fd7c29b3ad94
 -        SOURCE_DIR fetched/recastnavigation
 -    )
 -    FetchContent_MakeAvailableExcludeFromAll(recastnavigation)
Index: games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_audiodecoder_cpp
===================================================================
RCS file: games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_audiodecoder_cpp
diff -N games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_audiodecoder_cpp
--- games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_audiodecoder_cpp	21 Oct 2025 12:53:02 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,147 +0,0 @@
-https://github.com/OpenMW/openmw/commit/61cb5b4da638d520c41a9d99b5850384b2e22679
-
-Index: extern/osg-ffmpeg-videoplayer/audiodecoder.cpp
---- extern/osg-ffmpeg-videoplayer/audiodecoder.cpp.orig
-+++ extern/osg-ffmpeg-videoplayer/audiodecoder.cpp
-@@ -18,6 +18,10 @@ extern "C"
-     #pragma warning (pop)
- #endif
- 
-+#if FFMPEG_5_OR_GREATER
-+    #include <libavutil/channel_layout.h>
-+#endif
-+
- #include "videostate.hpp"
- 
- namespace
-@@ -53,7 +57,11 @@ MovieAudioDecoder::MovieAudioDecoder(VideoState* video
-     : mVideoState(videoState)
-     , mAVStream(*videoState->audio_st)
-     , mOutputSampleFormat(AV_SAMPLE_FMT_NONE)
-+    #if FFMPEG_5_OR_GREATER
-+    , mOutputChannelLayout({})
-+    #else
-     , mOutputChannelLayout(0)
-+    #endif
-     , mOutputSampleRate(0)
-     , mFramePos(0)
-     , mFrameSize(0)
-@@ -109,21 +117,49 @@ void MovieAudioDecoder::setupFormat()
- 
-     AVSampleFormat inputSampleFormat = mAudioContext->sample_fmt;
- 
-+#if FFMPEG_5_OR_GREATER
-+    AVChannelLayout inputChannelLayout = mAudioContext->ch_layout;
-+    if (inputChannelLayout.u.mask != 0)
-+        mOutputChannelLayout = inputChannelLayout;
-+    else
-+        av_channel_layout_default(&mOutputChannelLayout, mAudioContext->ch_layout.nb_channels);
-+#else
-     uint64_t inputChannelLayout = mAudioContext->channel_layout;
-     if (inputChannelLayout == 0)
-         inputChannelLayout = av_get_default_channel_layout(mAudioContext->channels);
-+#endif
- 
-     int inputSampleRate = mAudioContext->sample_rate;
- 
-     mOutputSampleRate = inputSampleRate;
-     mOutputSampleFormat = inputSampleFormat;
-+
-+#if FFMPEG_5_OR_GREATER
-+    adjustAudioSettings(mOutputSampleFormat, mOutputChannelLayout.u.mask, mOutputSampleRate);
-+#else
-     mOutputChannelLayout = inputChannelLayout;
-     adjustAudioSettings(mOutputSampleFormat, mOutputChannelLayout, mOutputSampleRate);
-+#endif
- 
-     if (inputSampleFormat != mOutputSampleFormat
-+        #if FFMPEG_5_OR_GREATER
-+            || inputChannelLayout.u.mask != mOutputChannelLayout.u.mask
-+        #else
-             || inputChannelLayout != mOutputChannelLayout
-+        #endif
-             || inputSampleRate != mOutputSampleRate)
-     {
-+    #if FFMPEG_5_OR_GREATER
-+        swr_alloc_set_opts2(&mAudioResampler->mSwr,
-+          &mOutputChannelLayout,
-+          mOutputSampleFormat,
-+          mOutputSampleRate,
-+          &inputChannelLayout,
-+          inputSampleFormat,
-+          inputSampleRate,
-+          0,                             // logging level offset
-+          nullptr);                      // log context
-+    #else
-         mAudioResampler->mSwr = swr_alloc_set_opts(mAudioResampler->mSwr,
-                           mOutputChannelLayout,
-                           mOutputSampleFormat,
-@@ -133,6 +169,8 @@ void MovieAudioDecoder::setupFormat()
-                           inputSampleRate,
-                           0,                             // logging level offset
-                           nullptr);                      // log context
-+    #endif
-+
-         if(!mAudioResampler->mSwr)
-             fail(std::string("Couldn't allocate SwrContext"));
-         if(swr_init(mAudioResampler->mSwr) < 0)
-@@ -158,7 +196,11 @@ int MovieAudioDecoder::synchronize_audio()
-         if(fabs(avg_diff) >= mAudioDiffThreshold)
-         {
-             int n = av_get_bytes_per_sample(mOutputSampleFormat) *
-+        #if FFMPEG_5_OR_GREATER
-+                    mOutputChannelLayout.nb_channels;
-+        #else
-                     av_get_channel_layout_nb_channels(mOutputChannelLayout);
-+        #endif
-             sample_skip = ((int)(diff * mAudioContext->sample_rate) * n);
-         }
-     }
-@@ -204,7 +246,11 @@ int MovieAudioDecoder::audio_decode_frame(AVFrame *fra
-                 if(!mDataBuf || mDataBufLen < frame->nb_samples)
-                 {
-                     av_freep(&mDataBuf);
-+    #if FFMPEG_5_OR_GREATER
-+                    if(av_samples_alloc(&mDataBuf, nullptr, mOutputChannelLayout.nb_channels,
-+    #else
-                     if(av_samples_alloc(&mDataBuf, nullptr, av_get_channel_layout_nb_channels(mOutputChannelLayout),
-+    #endif
-                                         frame->nb_samples, mOutputSampleFormat, 0) < 0)
-                         break;
-                     else
-@@ -221,7 +267,11 @@ int MovieAudioDecoder::audio_decode_frame(AVFrame *fra
-             else
-                 mFrameData = &frame->data[0];
- 
-+    #if FFMPEG_5_OR_GREATER
-+            int result = frame->nb_samples * mOutputChannelLayout.nb_channels *
-+    #else
-             int result = frame->nb_samples * av_get_channel_layout_nb_channels(mOutputChannelLayout) *
-+    #endif
-                     av_get_bytes_per_sample(mOutputSampleFormat);
- 
-             /* We have data, return it and come back for more later */
-@@ -298,7 +348,11 @@ size_t MovieAudioDecoder::read(char *stream, size_t le
-             len1 = std::min<size_t>(len1, -mFramePos);
- 
-             int n = av_get_bytes_per_sample(mOutputSampleFormat)
-+    #if FFMPEG_5_OR_GREATER
-+                    * mOutputChannelLayout.nb_channels;
-+    #else
-                     * av_get_channel_layout_nb_channels(mOutputChannelLayout);
-+    #endif
- 
-             /* add samples by copying the first sample*/
-             if(n == 1)
-@@ -348,7 +402,11 @@ int MovieAudioDecoder::getOutputSampleRate() const
- 
- uint64_t MovieAudioDecoder::getOutputChannelLayout() const
- {
-+    #if FFMPEG_5_OR_GREATER
-+    return mOutputChannelLayout.u.mask;
-+    #else
-     return mOutputChannelLayout;
-+    #endif
- }
- 
- AVSampleFormat MovieAudioDecoder::getOutputSampleFormat() const
Index: games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_audiodecoder_hpp
===================================================================
RCS file: games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_audiodecoder_hpp
diff -N games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_audiodecoder_hpp
--- games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_audiodecoder_hpp	21 Oct 2025 12:53:02 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,26 +0,0 @@
-https://github.com/OpenMW/openmw/commit/61cb5b4da638d520c41a9d99b5850384b2e22679
-
-Index: extern/osg-ffmpeg-videoplayer/audiodecoder.hpp
---- extern/osg-ffmpeg-videoplayer/audiodecoder.hpp.orig
-+++ extern/osg-ffmpeg-videoplayer/audiodecoder.hpp
-@@ -29,6 +29,8 @@ extern "C"
- typedef SSIZE_T ssize_t;
- #endif
- 
-+#define FFMPEG_5_OR_GREATER (LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(57, 28, 100))
-+
- namespace Video
- {
- 
-@@ -43,7 +45,11 @@ class MovieAudioDecoder (protected)
-     AVCodecContext* mAudioContext;
-     AVStream *mAVStream;
-     enum AVSampleFormat mOutputSampleFormat;
-+    #if FFMPEG_5_OR_GREATER
-+    AVChannelLayout mOutputChannelLayout;
-+    #else
-     uint64_t mOutputChannelLayout;
-+    #endif
-     int mOutputSampleRate;
-     ssize_t mFramePos;
-     ssize_t mFrameSize;
Index: games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_videostate_cpp
===================================================================
RCS file: games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_videostate_cpp
diff -N games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_videostate_cpp
--- games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_videostate_cpp	21 Oct 2025 12:53:02 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,17 +0,0 @@
-https://github.com/OpenMW/openmw/commit/61cb5b4da638d520c41a9d99b5850384b2e22679
-
-Index: extern/osg-ffmpeg-videoplayer/videostate.cpp
---- extern/osg-ffmpeg-videoplayer/videostate.cpp.orig
-+++ extern/osg-ffmpeg-videoplayer/videostate.cpp
-@@ -243,7 +243,11 @@ int VideoState::istream_read(void *user_data, uint8_t 
-     }
- }
- 
-+#if FFMPEG_CONST_WRITEPACKET
-+int VideoState::istream_write(void *, const unsigned char *, int)
-+#else
- int VideoState::istream_write(void *, uint8_t *, int)
-+#endif
- {
-     throw std::runtime_error("can't write to read-only stream");
- }
Index: games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_videostate_hpp
===================================================================
RCS file: games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_videostate_hpp
diff -N games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_videostate_hpp
--- games/openmw/patches/patch-extern_osg-ffmpeg-videoplayer_videostate_hpp	21 Oct 2025 12:53:02 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,30 +0,0 @@
-https://github.com/OpenMW/openmw/commit/61cb5b4da638d520c41a9d99b5850384b2e22679
-
-Index: extern/osg-ffmpeg-videoplayer/videostate.hpp
---- extern/osg-ffmpeg-videoplayer/videostate.hpp.orig
-+++ extern/osg-ffmpeg-videoplayer/videostate.hpp
-@@ -42,6 +42,9 @@ extern "C"
- 
- #define VIDEO_PICTURE_QUEUE_SIZE 50
- 
-+#define FFMPEG_5_OR_GREATER (LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(57, 28, 100))
-+#define FFMPEG_CONST_WRITEPACKET (LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(60, 12, 100) && !defined(FF_API_AVIO_WRITE_NONCONST))
-+
- extern "C"
- {
-     struct SwsContext;
-@@ -155,7 +158,13 @@ struct VideoState {
-     double get_master_clock();
- 
-     static int istream_read(void *user_data, uint8_t *buf, int buf_size);
--    static int istream_write(void *user_data, uint8_t *buf, int buf_size);
-+
-+#if FFMPEG_CONST_WRITEPACKET
-+    static int istream_write(void *, const unsigned char *, int);
-+#else
-+    static int istream_write(void *, uint8_t *, int);
-+#endif
-+
-     static int64_t istream_seek(void *user_data, int64_t offset, int whence);
- 
-     osg::ref_ptr<osg::Texture2D> mTexture;
Index: games/openmw/patches/patch-extern_sol3_sol_optional_implementation_hpp
===================================================================
RCS file: games/openmw/patches/patch-extern_sol3_sol_optional_implementation_hpp
diff -N games/openmw/patches/patch-extern_sol3_sol_optional_implementation_hpp
--- games/openmw/patches/patch-extern_sol3_sol_optional_implementation_hpp	31 Jan 2025 09:03:56 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,15 +0,0 @@
-https://github.com/ThePhD/sol2/pull/1606
-
-Index: extern/sol3/sol/optional_implementation.hpp
---- extern/sol3/sol/optional_implementation.hpp.orig
-+++ extern/sol3/sol/optional_implementation.hpp
-@@ -2191,7 +2191,8 @@ namespace sol {
- 			static_assert(std::is_constructible<T, Args&&...>::value, "T must be constructible with Args");
- 
- 			*this = nullopt;
--			this->construct(std::forward<Args>(args)...);
-+			new (static_cast<void*>(this)) optional(std::in_place, std::forward<Args>(args)...);
-+			return **this;
- 		}
- 
- 		/// Swaps this optional with the other.
Index: games/openmw/pkg/PLIST
===================================================================
RCS file: /home/cvs/ports/games/openmw/pkg/PLIST,v
diff -u -p -r1.13 PLIST
--- games/openmw/pkg/PLIST	25 Apr 2024 22:05:21 -0000	1.13
+++ games/openmw/pkg/PLIST	7 Nov 2025 21:33:42 -0000
@@ -34,11 +34,18 @@ include/recastnavigation/RecastAlloc.h
 include/recastnavigation/RecastAssert.h
 include/recastnavigation/RecastDebugDraw.h
 include/recastnavigation/RecastDump.h
+include/recastnavigation/version.h
+lib/cmake/recastnavigation/
+lib/cmake/recastnavigation/recastnavigation-config-version.cmake
+lib/cmake/recastnavigation/recastnavigation-config.cmake
+lib/cmake/recastnavigation/recastnavigation-targets${MODCMAKE_BUILD_SUFFIX}
+lib/cmake/recastnavigation/recastnavigation-targets.cmake
 @static-lib lib/libDebugUtils.a
 @static-lib lib/libDetour.a
 @static-lib lib/libDetourCrowd.a
 @static-lib lib/libDetourTileCache.a
 @static-lib lib/libRecast.a
+lib/pkgconfig/recastnavigation.pc
 share/applications/org.openmw.cs.desktop
 share/applications/org.openmw.launcher.desktop
 share/doc/pkg-readmes/${PKGSTEM}
@@ -52,12 +59,9 @@ share/examples/openmw/gamecontrollerdb.t
 @sample ${SYSCONFDIR}/openmw/gamecontrollerdb.txt
 share/examples/openmw/openmw.cfg
 @sample ${SYSCONFDIR}/openmw/openmw.cfg
-share/examples/openmw/version
-@sample ${SYSCONFDIR}/openmw/version
 share/metainfo/
 share/metainfo/openmw.appdata.xml
 share/openmw/
-share/openmw/data/
 share/openmw/resources/
 share/openmw/resources/defaultfilters
 share/openmw/resources/lua_api/
@@ -66,72 +70,145 @@ share/openmw/resources/lua_api/coroutine
 share/openmw/resources/lua_api/global.doclua
 share/openmw/resources/lua_api/math.doclua
 share/openmw/resources/lua_api/openmw/
+share/openmw/resources/lua_api/openmw/ambient.lua
+share/openmw/resources/lua_api/openmw/animation.lua
 share/openmw/resources/lua_api/openmw/async.lua
+share/openmw/resources/lua_api/openmw/camera.lua
 share/openmw/resources/lua_api/openmw/core.lua
 share/openmw/resources/lua_api/openmw/debug.lua
+share/openmw/resources/lua_api/openmw/input.lua
+share/openmw/resources/lua_api/openmw/interfaces.lua
+share/openmw/resources/lua_api/openmw/markup.lua
+share/openmw/resources/lua_api/openmw/menu.lua
 share/openmw/resources/lua_api/openmw/nearby.lua
 share/openmw/resources/lua_api/openmw/postprocessing.lua
 share/openmw/resources/lua_api/openmw/self.lua
+share/openmw/resources/lua_api/openmw/storage.lua
 share/openmw/resources/lua_api/openmw/types.lua
 share/openmw/resources/lua_api/openmw/ui.lua
 share/openmw/resources/lua_api/openmw/util.lua
+share/openmw/resources/lua_api/openmw/vfs.lua
 share/openmw/resources/lua_api/openmw/world.lua
 share/openmw/resources/lua_api/string.doclua
 share/openmw/resources/lua_api/table.doclua
 share/openmw/resources/lua_libs/
 share/openmw/resources/lua_libs/content.lua
+share/openmw/resources/lua_libs/util.lua
 share/openmw/resources/openmw.png
 share/openmw/resources/shaders/
-share/openmw/resources/shaders/alpha.glsl
-share/openmw/resources/shaders/blended_depth_postpass_fragment.glsl
-share/openmw/resources/shaders/blended_depth_postpass_vertex.glsl
-share/openmw/resources/shaders/debug_fragment.glsl
-share/openmw/resources/shaders/debug_vertex.glsl
-share/openmw/resources/shaders/depth.glsl
-share/openmw/resources/shaders/fog.glsl
-share/openmw/resources/shaders/fullscreen_tri_fragment.glsl
-share/openmw/resources/shaders/fullscreen_tri_vertex.glsl
-share/openmw/resources/shaders/groundcover_fragment.glsl
-share/openmw/resources/shaders/groundcover_vertex.glsl
-share/openmw/resources/shaders/gui_fragment.glsl
-share/openmw/resources/shaders/gui_vertex.glsl
-share/openmw/resources/shaders/hdr_luminance_fragment.glsl
-share/openmw/resources/shaders/hdr_resolve_fragment.glsl
-share/openmw/resources/shaders/lighting.glsl
-share/openmw/resources/shaders/lighting_util.glsl
-share/openmw/resources/shaders/multiview_resolve_fragment.glsl
-share/openmw/resources/shaders/multiview_resolve_vertex.glsl
-share/openmw/resources/shaders/nv_default_fragment.glsl
-share/openmw/resources/shaders/nv_default_vertex.glsl
-share/openmw/resources/shaders/nv_nolighting_fragment.glsl
-share/openmw/resources/shaders/nv_nolighting_vertex.glsl
-share/openmw/resources/shaders/objects_fragment.glsl
-share/openmw/resources/shaders/objects_vertex.glsl
-share/openmw/resources/shaders/openmw_fragment.glsl
-share/openmw/resources/shaders/openmw_fragment.h.glsl
-share/openmw/resources/shaders/openmw_fragment_multiview.glsl
-share/openmw/resources/shaders/openmw_vertex.glsl
-share/openmw/resources/shaders/openmw_vertex.h.glsl
-share/openmw/resources/shaders/openmw_vertex_multiview.glsl
-share/openmw/resources/shaders/parallax.glsl
-share/openmw/resources/shaders/s360_fragment.glsl
-share/openmw/resources/shaders/s360_vertex.glsl
-share/openmw/resources/shaders/shadowcasting_fragment.glsl
-share/openmw/resources/shaders/shadowcasting_vertex.glsl
-share/openmw/resources/shaders/shadows_fragment.glsl
-share/openmw/resources/shaders/shadows_vertex.glsl
-share/openmw/resources/shaders/sky_fragment.glsl
-share/openmw/resources/shaders/sky_vertex.glsl
-share/openmw/resources/shaders/skypasses.glsl
-share/openmw/resources/shaders/softparticles.glsl
-share/openmw/resources/shaders/terrain_fragment.glsl
-share/openmw/resources/shaders/terrain_vertex.glsl
-share/openmw/resources/shaders/vertexcolors.glsl
-share/openmw/resources/shaders/water_fragment.glsl
-share/openmw/resources/shaders/water_nm.png
-share/openmw/resources/shaders/water_vertex.glsl
+share/openmw/resources/shaders/compatibility/
+share/openmw/resources/shaders/compatibility/bs/
+share/openmw/resources/shaders/compatibility/bs/default.frag
+share/openmw/resources/shaders/compatibility/bs/default.vert
+share/openmw/resources/shaders/compatibility/bs/nolighting.frag
+share/openmw/resources/shaders/compatibility/bs/nolighting.vert
+share/openmw/resources/shaders/compatibility/debug.frag
+share/openmw/resources/shaders/compatibility/debug.vert
+share/openmw/resources/shaders/compatibility/depthclipped.frag
+share/openmw/resources/shaders/compatibility/depthclipped.vert
+share/openmw/resources/shaders/compatibility/fog.glsl
+share/openmw/resources/shaders/compatibility/fullscreen_tri.frag
+share/openmw/resources/shaders/compatibility/fullscreen_tri.vert
+share/openmw/resources/shaders/compatibility/groundcover.frag
+share/openmw/resources/shaders/compatibility/groundcover.vert
+share/openmw/resources/shaders/compatibility/gui.frag
+share/openmw/resources/shaders/compatibility/gui.vert
+share/openmw/resources/shaders/compatibility/luminance/
+share/openmw/resources/shaders/compatibility/luminance/luminance.frag
+share/openmw/resources/shaders/compatibility/luminance/resolve.frag
+share/openmw/resources/shaders/compatibility/multiview_resolve.frag
+share/openmw/resources/shaders/compatibility/multiview_resolve.vert
+share/openmw/resources/shaders/compatibility/normals.glsl
+share/openmw/resources/shaders/compatibility/objects.frag
+share/openmw/resources/shaders/compatibility/objects.vert
+share/openmw/resources/shaders/compatibility/ripples_blobber.frag
+share/openmw/resources/shaders/compatibility/ripples_simulate.frag
+share/openmw/resources/shaders/compatibility/shadowcasting.frag
+share/openmw/resources/shaders/compatibility/shadowcasting.vert
+share/openmw/resources/shaders/compatibility/shadows_fragment.glsl
+share/openmw/resources/shaders/compatibility/shadows_vertex.glsl
+share/openmw/resources/shaders/compatibility/sky.frag
+share/openmw/resources/shaders/compatibility/sky.vert
+share/openmw/resources/shaders/compatibility/terrain.frag
+share/openmw/resources/shaders/compatibility/terrain.vert
+share/openmw/resources/shaders/compatibility/vertexcolors.glsl
+share/openmw/resources/shaders/compatibility/water.frag
+share/openmw/resources/shaders/compatibility/water.vert
+share/openmw/resources/shaders/core/
+share/openmw/resources/shaders/core/gui.frag
+share/openmw/resources/shaders/core/gui.vert
+share/openmw/resources/shaders/core/ripples_blobber.comp
+share/openmw/resources/shaders/core/ripples_simulate.comp
+share/openmw/resources/shaders/lib/
+share/openmw/resources/shaders/lib/core/
+share/openmw/resources/shaders/lib/core/fragment.glsl
+share/openmw/resources/shaders/lib/core/fragment.h.glsl
+share/openmw/resources/shaders/lib/core/fragment_multiview.glsl
+share/openmw/resources/shaders/lib/core/vertex.glsl
+share/openmw/resources/shaders/lib/core/vertex.h.glsl
+share/openmw/resources/shaders/lib/core/vertex_multiview.glsl
+share/openmw/resources/shaders/lib/light/
+share/openmw/resources/shaders/lib/light/lighting.glsl
+share/openmw/resources/shaders/lib/light/lighting_util.glsl
+share/openmw/resources/shaders/lib/luminance/
+share/openmw/resources/shaders/lib/luminance/constants.glsl
+share/openmw/resources/shaders/lib/material/
+share/openmw/resources/shaders/lib/material/alpha.glsl
+share/openmw/resources/shaders/lib/material/parallax.glsl
+share/openmw/resources/shaders/lib/particle/
+share/openmw/resources/shaders/lib/particle/occlusion.glsl
+share/openmw/resources/shaders/lib/particle/soft.glsl
+share/openmw/resources/shaders/lib/sky/
+share/openmw/resources/shaders/lib/sky/passes.glsl
+share/openmw/resources/shaders/lib/util/
+share/openmw/resources/shaders/lib/util/coordinates.glsl
+share/openmw/resources/shaders/lib/util/distortion.glsl
+share/openmw/resources/shaders/lib/util/quickstep.glsl
+share/openmw/resources/shaders/lib/view/
+share/openmw/resources/shaders/lib/view/depth.glsl
+share/openmw/resources/shaders/lib/water/
+share/openmw/resources/shaders/lib/water/fresnel.glsl
+share/openmw/resources/shaders/lib/water/rain_ripples.glsl
+share/openmw/resources/shaders/lib/water/ripples.glsl
+share/openmw/resources/translations/
+share/openmw/resources/translations/components_de.qm
+share/openmw/resources/translations/components_en.qm
+share/openmw/resources/translations/components_fr.qm
+share/openmw/resources/translations/components_pl.qm
+share/openmw/resources/translations/components_ru.qm
+share/openmw/resources/translations/components_sv.qm
+share/openmw/resources/translations/launcher_de.qm
+share/openmw/resources/translations/launcher_en.qm
+share/openmw/resources/translations/launcher_fr.qm
+share/openmw/resources/translations/launcher_pl.qm
+share/openmw/resources/translations/launcher_ru.qm
+share/openmw/resources/translations/launcher_sv.qm
+share/openmw/resources/translations/wizard_de.qm
+share/openmw/resources/translations/wizard_en.qm
+share/openmw/resources/translations/wizard_fr.qm
+share/openmw/resources/translations/wizard_pl.qm
+share/openmw/resources/translations/wizard_ru.qm
+share/openmw/resources/translations/wizard_sv.qm
 share/openmw/resources/version
 share/openmw/resources/vfs/
+share/openmw/resources/vfs-mw/
+share/openmw/resources/vfs-mw/l10n/
+share/openmw/resources/vfs-mw/l10n/Calendar/
+share/openmw/resources/vfs-mw/l10n/Calendar/de.yaml
+share/openmw/resources/vfs-mw/l10n/Calendar/en.yaml
+share/openmw/resources/vfs-mw/l10n/Calendar/fr.yaml
+share/openmw/resources/vfs-mw/l10n/Calendar/gmst.yaml
+share/openmw/resources/vfs-mw/l10n/Calendar/pl.yaml
+share/openmw/resources/vfs-mw/l10n/Calendar/ru.yaml
+share/openmw/resources/vfs-mw/l10n/Calendar/sv.yaml
+share/openmw/resources/vfs-mw/l10n/Interface/
+share/openmw/resources/vfs-mw/l10n/Interface/gmst.yaml
+share/openmw/resources/vfs-mw/l10n/OMWEngine/
+share/openmw/resources/vfs-mw/l10n/OMWEngine/gmst.yaml
+share/openmw/resources/vfs-mw/openmw_aux/
+share/openmw/resources/vfs-mw/openmw_aux/calendarconfig.lua
+share/openmw/resources/vfs/animations/
+share/openmw/resources/vfs/animations/animation-config.yaml
 share/openmw/resources/vfs/builtin.omwscripts
 share/openmw/resources/vfs/fonts/
 share/openmw/resources/vfs/fonts/DejaVuFontLicense.txt
@@ -144,60 +221,61 @@ share/openmw/resources/vfs/fonts/MysticC
 share/openmw/resources/vfs/fonts/MysticCards.ttf
 share/openmw/resources/vfs/fonts/MysticCardsFontLicense.txt
 share/openmw/resources/vfs/l10n/
-share/openmw/resources/vfs/l10n/BuiltInShaders/
-share/openmw/resources/vfs/l10n/BuiltInShaders/de.yaml
-share/openmw/resources/vfs/l10n/BuiltInShaders/en.yaml
-share/openmw/resources/vfs/l10n/BuiltInShaders/fr.yaml
-share/openmw/resources/vfs/l10n/BuiltInShaders/ru.yaml
-share/openmw/resources/vfs/l10n/BuiltInShaders/sv.yaml
 share/openmw/resources/vfs/l10n/Calendar/
 share/openmw/resources/vfs/l10n/Calendar/de.yaml
 share/openmw/resources/vfs/l10n/Calendar/en.yaml
-share/openmw/resources/vfs/l10n/Calendar/fr.yaml
+share/openmw/resources/vfs/l10n/Calendar/pl.yaml
 share/openmw/resources/vfs/l10n/Calendar/ru.yaml
 share/openmw/resources/vfs/l10n/Calendar/sv.yaml
-share/openmw/resources/vfs/l10n/DebugMenu/
-share/openmw/resources/vfs/l10n/DebugMenu/de.yaml
-share/openmw/resources/vfs/l10n/DebugMenu/en.yaml
-share/openmw/resources/vfs/l10n/DebugMenu/fr.yaml
-share/openmw/resources/vfs/l10n/DebugMenu/ru.yaml
-share/openmw/resources/vfs/l10n/DebugMenu/sv.yaml
 share/openmw/resources/vfs/l10n/Interface/
 share/openmw/resources/vfs/l10n/Interface/de.yaml
 share/openmw/resources/vfs/l10n/Interface/en.yaml
 share/openmw/resources/vfs/l10n/Interface/fr.yaml
+share/openmw/resources/vfs/l10n/Interface/pl.yaml
 share/openmw/resources/vfs/l10n/Interface/ru.yaml
 share/openmw/resources/vfs/l10n/Interface/sv.yaml
-share/openmw/resources/vfs/l10n/Navigation/
-share/openmw/resources/vfs/l10n/Navigation/de.yaml
-share/openmw/resources/vfs/l10n/Navigation/en.yaml
-share/openmw/resources/vfs/l10n/Navigation/fr.yaml
-share/openmw/resources/vfs/l10n/Navigation/ru.yaml
-share/openmw/resources/vfs/l10n/Navigation/sv.yaml
 share/openmw/resources/vfs/l10n/OMWCamera/
 share/openmw/resources/vfs/l10n/OMWCamera/de.yaml
 share/openmw/resources/vfs/l10n/OMWCamera/en.yaml
 share/openmw/resources/vfs/l10n/OMWCamera/fr.yaml
+share/openmw/resources/vfs/l10n/OMWCamera/pl.yaml
 share/openmw/resources/vfs/l10n/OMWCamera/ru.yaml
 share/openmw/resources/vfs/l10n/OMWCamera/sv.yaml
-share/openmw/resources/vfs/l10n/PostProcessing/
-share/openmw/resources/vfs/l10n/PostProcessing/de.yaml
-share/openmw/resources/vfs/l10n/PostProcessing/en.yaml
-share/openmw/resources/vfs/l10n/PostProcessing/fr.yaml
-share/openmw/resources/vfs/l10n/PostProcessing/ru.yaml
-share/openmw/resources/vfs/l10n/PostProcessing/sv.yaml
-share/openmw/resources/vfs/l10n/SavegameMenu/
-share/openmw/resources/vfs/l10n/SavegameMenu/de.yaml
-share/openmw/resources/vfs/l10n/SavegameMenu/en.yaml
-share/openmw/resources/vfs/l10n/SavegameMenu/fr.yaml
-share/openmw/resources/vfs/l10n/SavegameMenu/ru.yaml
-share/openmw/resources/vfs/l10n/SavegameMenu/sv.yaml
-share/openmw/resources/vfs/l10n/SettingsMenu/
-share/openmw/resources/vfs/l10n/SettingsMenu/de.yaml
-share/openmw/resources/vfs/l10n/SettingsMenu/en.yaml
-share/openmw/resources/vfs/l10n/SettingsMenu/fr.yaml
-share/openmw/resources/vfs/l10n/SettingsMenu/ru.yaml
-share/openmw/resources/vfs/l10n/SettingsMenu/sv.yaml
+share/openmw/resources/vfs/l10n/OMWCombat/
+share/openmw/resources/vfs/l10n/OMWCombat/de.yaml
+share/openmw/resources/vfs/l10n/OMWCombat/en.yaml
+share/openmw/resources/vfs/l10n/OMWCombat/fr.yaml
+share/openmw/resources/vfs/l10n/OMWCombat/pl.yaml
+share/openmw/resources/vfs/l10n/OMWCombat/ru.yaml
+share/openmw/resources/vfs/l10n/OMWCombat/sv.yaml
+share/openmw/resources/vfs/l10n/OMWControls/
+share/openmw/resources/vfs/l10n/OMWControls/de.yaml
+share/openmw/resources/vfs/l10n/OMWControls/en.yaml
+share/openmw/resources/vfs/l10n/OMWControls/fr.yaml
+share/openmw/resources/vfs/l10n/OMWControls/pl.yaml
+share/openmw/resources/vfs/l10n/OMWControls/ru.yaml
+share/openmw/resources/vfs/l10n/OMWControls/sv.yaml
+share/openmw/resources/vfs/l10n/OMWEngine/
+share/openmw/resources/vfs/l10n/OMWEngine/de.yaml
+share/openmw/resources/vfs/l10n/OMWEngine/en.yaml
+share/openmw/resources/vfs/l10n/OMWEngine/fr.yaml
+share/openmw/resources/vfs/l10n/OMWEngine/pl.yaml
+share/openmw/resources/vfs/l10n/OMWEngine/ru.yaml
+share/openmw/resources/vfs/l10n/OMWEngine/sv.yaml
+share/openmw/resources/vfs/l10n/OMWMusic/
+share/openmw/resources/vfs/l10n/OMWMusic/de.yaml
+share/openmw/resources/vfs/l10n/OMWMusic/en.yaml
+share/openmw/resources/vfs/l10n/OMWMusic/fr.yaml
+share/openmw/resources/vfs/l10n/OMWMusic/pl.yaml
+share/openmw/resources/vfs/l10n/OMWMusic/ru.yaml
+share/openmw/resources/vfs/l10n/OMWMusic/sv.yaml
+share/openmw/resources/vfs/l10n/OMWShaders/
+share/openmw/resources/vfs/l10n/OMWShaders/de.yaml
+share/openmw/resources/vfs/l10n/OMWShaders/en.yaml
+share/openmw/resources/vfs/l10n/OMWShaders/fr.yaml
+share/openmw/resources/vfs/l10n/OMWShaders/pl.yaml
+share/openmw/resources/vfs/l10n/OMWShaders/ru.yaml
+share/openmw/resources/vfs/l10n/OMWShaders/sv.yaml
 share/openmw/resources/vfs/mygui/
 share/openmw/resources/vfs/mygui/OpenMWResourcePlugin.xml
 share/openmw/resources/vfs/mygui/core.skin
@@ -222,6 +300,7 @@ share/openmw/resources/vfs/mygui/openmw_
 share/openmw/resources/vfs/mygui/openmw_console.layout
 share/openmw/resources/vfs/mygui/openmw_console.skin.xml
 share/openmw/resources/vfs/mygui/openmw_container_window.layout
+share/openmw/resources/vfs/mygui/openmw_controllerbuttons.layout
 share/openmw/resources/vfs/mygui/openmw_count_window.layout
 share/openmw/resources/vfs/mygui/openmw_debug_window.layout
 share/openmw/resources/vfs/mygui/openmw_debug_window.skin.xml
@@ -237,6 +316,7 @@ share/openmw/resources/vfs/mygui/openmw_
 share/openmw/resources/vfs/mygui/openmw_infobox.layout
 share/openmw/resources/vfs/mygui/openmw_interactive_messagebox.layout
 share/openmw/resources/vfs/mygui/openmw_interactive_messagebox_notransp.layout
+share/openmw/resources/vfs/mygui/openmw_inventory_tabs.layout
 share/openmw/resources/vfs/mygui/openmw_inventory_window.layout
 share/openmw/resources/vfs/mygui/openmw_itemselection_dialog.layout
 share/openmw/resources/vfs/mygui/openmw_jail_screen.layout
@@ -287,11 +367,13 @@ share/openmw/resources/vfs/mygui/openmw_
 share/openmw/resources/vfs/mygui/skins.xml
 share/openmw/resources/vfs/openmw_aux/
 share/openmw/resources/vfs/openmw_aux/calendar.lua
+share/openmw/resources/vfs/openmw_aux/calendarconfig.lua
 share/openmw/resources/vfs/openmw_aux/time.lua
 share/openmw/resources/vfs/openmw_aux/ui.lua
 share/openmw/resources/vfs/openmw_aux/util.lua
 share/openmw/resources/vfs/scripts/
 share/openmw/resources/vfs/scripts/omw/
+share/openmw/resources/vfs/scripts/omw/activationhandlers.lua
 share/openmw/resources/vfs/scripts/omw/ai.lua
 share/openmw/resources/vfs/scripts/omw/camera/
 share/openmw/resources/vfs/scripts/omw/camera/camera.lua
@@ -300,10 +382,34 @@ share/openmw/resources/vfs/scripts/omw/c
 share/openmw/resources/vfs/scripts/omw/camera/move360.lua
 share/openmw/resources/vfs/scripts/omw/camera/settings.lua
 share/openmw/resources/vfs/scripts/omw/camera/third_person.lua
+share/openmw/resources/vfs/scripts/omw/cellhandlers.lua
+share/openmw/resources/vfs/scripts/omw/combat/
+share/openmw/resources/vfs/scripts/omw/combat/common.lua
+share/openmw/resources/vfs/scripts/omw/combat/global.lua
+share/openmw/resources/vfs/scripts/omw/combat/local.lua
+share/openmw/resources/vfs/scripts/omw/combat/menu.lua
 share/openmw/resources/vfs/scripts/omw/console/
 share/openmw/resources/vfs/scripts/omw/console/global.lua
 share/openmw/resources/vfs/scripts/omw/console/local.lua
+share/openmw/resources/vfs/scripts/omw/console/menu.lua
 share/openmw/resources/vfs/scripts/omw/console/player.lua
+share/openmw/resources/vfs/scripts/omw/crimes.lua
+share/openmw/resources/vfs/scripts/omw/input/
+share/openmw/resources/vfs/scripts/omw/input/actionbindings.lua
+share/openmw/resources/vfs/scripts/omw/input/gamepadcontrols.lua
+share/openmw/resources/vfs/scripts/omw/input/playercontrols.lua
+share/openmw/resources/vfs/scripts/omw/input/settings.lua
+share/openmw/resources/vfs/scripts/omw/input/smoothmovement.lua
+share/openmw/resources/vfs/scripts/omw/mechanics/
+share/openmw/resources/vfs/scripts/omw/mechanics/actorcontroller.lua
+share/openmw/resources/vfs/scripts/omw/mechanics/animationcontroller.lua
+share/openmw/resources/vfs/scripts/omw/mechanics/globalcontroller.lua
+share/openmw/resources/vfs/scripts/omw/mechanics/playercontroller.lua
+share/openmw/resources/vfs/scripts/omw/music/
+share/openmw/resources/vfs/scripts/omw/music/actor.lua
+share/openmw/resources/vfs/scripts/omw/music/helpers.lua
+share/openmw/resources/vfs/scripts/omw/music/music.lua
+share/openmw/resources/vfs/scripts/omw/music/settings.lua
 share/openmw/resources/vfs/scripts/omw/mwui/
 share/openmw/resources/vfs/scripts/omw/mwui/borders.lua
 share/openmw/resources/vfs/scripts/omw/mwui/constants.lua
@@ -315,20 +421,56 @@ share/openmw/resources/vfs/scripts/omw/m
 share/openmw/resources/vfs/scripts/omw/settings/
 share/openmw/resources/vfs/scripts/omw/settings/common.lua
 share/openmw/resources/vfs/scripts/omw/settings/global.lua
+share/openmw/resources/vfs/scripts/omw/settings/menu.lua
 share/openmw/resources/vfs/scripts/omw/settings/player.lua
-share/openmw/resources/vfs/scripts/omw/settings/render.lua
 share/openmw/resources/vfs/scripts/omw/settings/renderers.lua
+share/openmw/resources/vfs/scripts/omw/skillhandlers.lua
+share/openmw/resources/vfs/scripts/omw/ui.lua
+share/openmw/resources/vfs/scripts/omw/usehandlers.lua
+share/openmw/resources/vfs/scripts/omw/worldeventhandlers.lua
 share/openmw/resources/vfs/shaders/
 share/openmw/resources/vfs/shaders/adjustments.omwfx
 share/openmw/resources/vfs/shaders/bloomlinear.omwfx
 share/openmw/resources/vfs/shaders/debug.omwfx
+share/openmw/resources/vfs/shaders/internal_distortion.omwfx
 share/openmw/resources/vfs/textures/
+share/openmw/resources/vfs/textures/omw/
+share/openmw/resources/vfs/textures/omw/water_nm.png
+share/openmw/resources/vfs/textures/omw_menu_icon_active.dds
 share/openmw/resources/vfs/textures/omw_menu_scroll_center_h.dds
 share/openmw/resources/vfs/textures/omw_menu_scroll_center_v.dds
 share/openmw/resources/vfs/textures/omw_menu_scroll_down.dds
 share/openmw/resources/vfs/textures/omw_menu_scroll_left.dds
 share/openmw/resources/vfs/textures/omw_menu_scroll_right.dds
 share/openmw/resources/vfs/textures/omw_menu_scroll_up.dds
+share/openmw/resources/vfs/textures/omw_psx_button_circle.dds
+share/openmw/resources/vfs/textures/omw_psx_button_dpad.dds
+share/openmw/resources/vfs/textures/omw_psx_button_square.dds
+share/openmw/resources/vfs/textures/omw_psx_button_triangle.dds
+share/openmw/resources/vfs/textures/omw_psx_button_x.dds
+share/openmw/resources/vfs/textures/omw_steam_button_a.dds
+share/openmw/resources/vfs/textures/omw_steam_button_b.dds
+share/openmw/resources/vfs/textures/omw_steam_button_dpad.dds
+share/openmw/resources/vfs/textures/omw_steam_button_l1.dds
+share/openmw/resources/vfs/textures/omw_steam_button_l2.dds
+share/openmw/resources/vfs/textures/omw_steam_button_l3.dds
+share/openmw/resources/vfs/textures/omw_steam_button_lstick.dds
+share/openmw/resources/vfs/textures/omw_steam_button_menu.dds
+share/openmw/resources/vfs/textures/omw_steam_button_r1.dds
+share/openmw/resources/vfs/textures/omw_steam_button_r2.dds
+share/openmw/resources/vfs/textures/omw_steam_button_r3.dds
+share/openmw/resources/vfs/textures/omw_steam_button_rstick.dds
+share/openmw/resources/vfs/textures/omw_steam_button_view.dds
+share/openmw/resources/vfs/textures/omw_steam_button_x.dds
+share/openmw/resources/vfs/textures/omw_steam_button_y.dds
+share/openmw/resources/vfs/textures/omw_switch_button_l.dds
+share/openmw/resources/vfs/textures/omw_switch_button_r.dds
+share/openmw/resources/vfs/textures/omw_switch_button_zl.dds
+share/openmw/resources/vfs/textures/omw_switch_button_zr.dds
+share/openmw/resources/vfs/textures/omw_xbox_button_lb.dds
+share/openmw/resources/vfs/textures/omw_xbox_button_lt.dds
+share/openmw/resources/vfs/textures/omw_xbox_button_rb.dds
+share/openmw/resources/vfs/textures/omw_xbox_button_rt.dds
 share/pixmaps/
 share/pixmaps/openmw-cs.png
 share/pixmaps/openmw.png