diff --git a/emulators/ares/Makefile b/emulators/ares/Makefile index 0f3c9edd7c7a..a19403b61a7f 100644 --- a/emulators/ares/Makefile +++ b/emulators/ares/Makefile @@ -1,216 +1,220 @@ PORTNAME= ares -DISTVERSION= 139.20240825 +DISTVERSIONPREFIX= v +DISTVERSION= 140 CATEGORIES= emulators +# committed upstream, remove with next version update +# * contains 'unbreak FreeBSD build' +# https://github.com/Themaister/Granite/pull/135 +# * contains 'NVIDIA fix' +# https://github.com/ares-emulator/ares/issues/1547 +# https://github.com/Themaister/Granite/issues/133 +PATCH_SITES= https://github.com/${GH_ACCOUNT}/${PORTNAME}/commit/ +PATCHFILES= 7135646c447ab7eb3eff18132dbddf7dc03135fa.patch:-p1 + MAINTAINER= bsdcode@disroot.org COMMENT= Multi-system emulator WWW= https://ares-emu.net LICENSE= ISCL LICENSE_FILE= ${WRKSRC}/LICENSE USES= compiler:c++17-lang gmake gnome localbase:ldflags pkgconfig \ xorg USE_GITHUB= yes GH_ACCOUNT= ares-emulator -GH_TAGNAME= efb7f61 USE_GNOME= gtksourceview3 USE_XORG= x11 xext xrandr MAKEFILE= GNUmakefile MAKE_ARGS= compiler=${CC} \ cores= \ hiro=gtk3-se \ local=false \ lto=false \ prefix=${PREFIX} \ ruby=video.none \ sdl2=false \ symbols=false \ threaded=true -OPTIONS_DEFINE= DEBUG DOCS HOTKEYS NVIDIA OPENMP SHADER +OPTIONS_DEFINE= DEBUG DOCS HOTKEYS OPENMP SHADER OPTIONS_DEFAULT= A26 ALSA AO CV FC GB GBA GLX MD MS MSX MYVISION N64 NG \ NGP OPENAL OPENMP OSS PCE PERFORMANCE PS1 SDLAUDIO \ SDLINPUT SFC SG SHADER SPEC UDEV UHID WS XLIB XVIDEO OPTIONS_GROUP= AUDIO CORES INPUT VIDEO OPTIONS_GROUP_AUDIO= ALSA AO OPENAL OSS PULSEAUDIO SDLAUDIO OPTIONS_GROUP_CORES= A26 CV FC GB GBA MD MS MSX MYVISION N64 NG NGP PCE PS1 \ SFC SG SPEC WS OPTIONS_GROUP_INPUT= SDLINPUT UDEV UHID XLIB OPTIONS_GROUP_VIDEO= GLX XVIDEO OPTIONS_SINGLE= PROFILE OPTIONS_SINGLE_PROFILE= ACCURACY PERFORMANCE A26_DESC= Atari 2600 ACCURACY_DESC= Slower but more accurate CV_DESC= ColecoVision FC_DESC= NES / Famicom GBA_DESC= Game Boy Advance GB_DESC= Game Boy HOTKEYS_DESC= Inofficial hotkeys locking patch MD_DESC= Mega Drive / Genesis MSX_DESC= MSX MS_DESC= Master System / Mark III MYVISION_DESC= My Vision N64_DESC= Nintendo 64 NGP_DESC= Neo Geo Pocket NG_DESC= Neo Geo (AES/MVS) -NVIDIA_DESC= Apply shader cache workaround (implies ${NVIDIA_IMPLIES}) PCE_DESC= PC-Engine / TurboGrafx PERFORMANCE_DESC= Faster but less accurate PROFILE_DESC= PS1_DESC= PlayStation SDLAUDIO_DESC= ${SDL_DESC} SDLINPUT_DESC= ${SDL_DESC} SFC_DESC= SNES / Super Famicom SG_DESC= SG-1000 SHADER_DESC= Build with shader support SPEC_DESC= ZX Spectrum UDEV_DESC= UDEV input support UHID_DESC= UHID input support VIDEO_DESC= WS_DESC= WonderSwan XLIB_DESC= XLIB input support A26_MAKE_ARGS= cores+=a26 ACCURACY_MAKE_ARGS= profile=accuracy ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib ALSA_MAKE_ARGS= ruby+=audio.alsa AO_LIB_DEPENDS= libao.so:audio/libao AO_MAKE_ARGS= ruby+=audio.ao CV_MAKE_ARGS= cores+=cv DEBUG_MAKE_ARGS= build=debug DEBUG_MAKE_ARGS_OFF= build=release FC_MAKE_ARGS= cores+=fc GBA_MAKE_ARGS= cores+=gba GB_MAKE_ARGS= cores+=gb GLX_USES= gl GLX_USE= GL=gl GLX_MAKE_ARGS= ruby+=video.glx HOTKEYS_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-hotkeys MD_MAKE_ARGS= cores+=md MSX_MAKE_ARGS= cores+=msx MS_MAKE_ARGS= cores+=ms MYVISION_MAKE_ARGS= cores+=myvision N64_RUN_DEPENDS= ${LOCALBASE}/lib/libvulkan.so:graphics/vulkan-loader N64_MAKE_ARGS= cores+=n64 \ vulkan=true N64_MAKE_ARGS_OFF= vulkan=false -N64_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-ares_n64_vulkan_parallel-rdp_util_timer.cpp NGP_MAKE_ARGS= cores+=ngp NG_MAKE_ARGS= cores+=ng -NVIDIA_IMPLIES= N64 -NVIDIA_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-ares_n64_vulkan_parallel-rdp_vulkan_device.cpp - OPENAL_USES= openal OPENAL_MAKE_ARGS= ruby+=audio.openal OPENMP_MAKE_ARGS= openmp=true OPENMP_MAKE_ARGS_OFF= openmp=false OSS_MAKE_ARGS= ruby+=audio.oss PCE_MAKE_ARGS= cores+=pce PERFORMANCE_MAKE_ARGS= profile=performance PS1_MAKE_ARGS= cores+=ps1 PULSEAUDIO_LIB_DEPENDS= libpulse-simple.so:audio/pulseaudio \ libpulse.so:audio/pulseaudio PULSEAUDIO_MAKE_ARGS= ruby+=audio.pulseaudio \ ruby+=audio.pulseaudiosimple SDLAUDIO_USES= sdl SDLAUDIO_USE= SDL=sdl2 SDLAUDIO_MAKE_ARGS= ruby+=audio.sdl \ sdl2=true SDLINPUT_USES= sdl SDLINPUT_USE= SDL=sdl2 SDLINPUT_MAKE_ARGS= ruby+=input.sdl \ sdl2=true SFC_MAKE_ARGS= cores+=sfc SG_MAKE_ARGS= cores+=sg SHADER_BUILD_DEPENDS= ${LOCALBASE}/include/librashader/librashader.h:devel/librashader SHADER_RUN_DEPENDS= ${LOCALBASE}/${_SHADERS}/bilinear.slangp:games/libretro-shaders-slang \ ${LOCALBASE}/lib/librashader.so:devel/librashader SHADER_MAKE_ARGS= librashader=true SHADER_MAKE_ARGS_OFF= librashader=false SHADER_CFLAGS= -DLIBRA_RUNTIME_OPENGL SHADER_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-desktop-ui_desktop-ui.cpp SPEC_MAKE_ARGS= cores+=spec UDEV_LIB_DEPENDS= libudev.so:devel/libudev-devd UDEV_MAKE_ARGS= ruby+=input.udev UHID_MAKE_ARGS= ruby+=input.uhid WS_MAKE_ARGS= cores+=ws XLIB_MAKE_ARGS= ruby+=input.xlib XVIDEO_USE= XORG=xv XVIDEO_MAKE_ARGS= ruby+=video.xvideo _SHADERS= share/libretro/shaders/shaders_slang .include .if ${PORT_OPTIONS:MOPENAL} && ${ARCH} == "i386" LLD_UNSAFE= yes .endif post-patch: ${REINPLACE_CMD} 's|/usr/local|${LOCALBASE}|g' \ ${WRKSRC}/hiro/GNUmakefile post-patch-SHADER-on: ${REINPLACE_CMD} 's|-I../thirdparty/librashader/include||g' \ ${WRKSRC}/desktop-ui/GNUmakefile ${REINPLACE_CMD} 's|"librashader_ld.h"||g' \ ${WRKSRC}/ruby/video/opengl/opengl.hpp ${REINPLACE_CMD} 's|@@SHADERS@@|${LOCALBASE}/${_SHADERS}/|g' \ ${WRKSRC}/desktop-ui/desktop-ui.cpp do-install: ${INSTALL_PROGRAM} ${WRKSRC}/desktop-ui/out/ares \ ${STAGEDIR}${PREFIX}/bin ${INSTALL_DATA} ${WRKSRC}/desktop-ui/resource/ares.desktop \ ${STAGEDIR}${PREFIX}/share/applications ${MKDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/256x256/apps ${INSTALL_DATA} ${WRKSRC}/desktop-ui/resource/ares.png \ ${STAGEDIR}${PREFIX}/share/icons/hicolor/256x256/apps ${MKDIR} ${STAGEDIR}${DATADIR}/Database (cd ${WRKSRC}/mia/Database && \ ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR}/Database) post-install-DOCS-on: ${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/README.md \ ${STAGEDIR}${DOCSDIR} .include diff --git a/emulators/ares/distinfo b/emulators/ares/distinfo index 3ad7898531d2..5b52ba6e87f1 100644 --- a/emulators/ares/distinfo +++ b/emulators/ares/distinfo @@ -1,3 +1,5 @@ -TIMESTAMP = 1724663853 -SHA256 (ares-emulator-ares-139.20240825-efb7f61_GH0.tar.gz) = 8d4a410b9141399ec0d592edc34ca8dd35d582a87cae3f4ec5fdacc8a1c3c64e -SIZE (ares-emulator-ares-139.20240825-efb7f61_GH0.tar.gz) = 50956365 +TIMESTAMP = 1725355457 +SHA256 (ares-emulator-ares-v140_GH0.tar.gz) = 126464881ca1111a46627cb299516f60ad076bf3015da0b9325d6cac14339f4d +SIZE (ares-emulator-ares-v140_GH0.tar.gz) = 50954599 +SHA256 (7135646c447ab7eb3eff18132dbddf7dc03135fa.patch) = 8a33c760618adf6bcd90894a2002d1aa60ef1cd68458980c341d2175881381a5 +SIZE (7135646c447ab7eb3eff18132dbddf7dc03135fa.patch) = 11018024 diff --git a/emulators/ares/files/extra-patch-ares_n64_vulkan_parallel-rdp_util_timer.cpp b/emulators/ares/files/extra-patch-ares_n64_vulkan_parallel-rdp_util_timer.cpp deleted file mode 100644 index a17e90da8779..000000000000 --- a/emulators/ares/files/extra-patch-ares_n64_vulkan_parallel-rdp_util_timer.cpp +++ /dev/null @@ -1,13 +0,0 @@ -https://github.com/Themaister/Granite/pull/135 - ---- ares/n64/vulkan/parallel-rdp/util/timer.cpp.orig 2024-07-28 10:49:58 UTC -+++ ares/n64/vulkan/parallel-rdp/util/timer.cpp -@@ -107,7 +107,7 @@ int64_t get_current_time_nsecs() - return int64_t(double(li.QuadPart) * static_qpc_freq.inv_freq); - #else - struct timespec ts = {}; --#ifdef ANDROID -+#if defined(ANDROID) || defined(__FreeBSD__) - constexpr auto timebase = CLOCK_MONOTONIC; - #else - constexpr auto timebase = CLOCK_MONOTONIC_RAW; diff --git a/emulators/ares/files/extra-patch-ares_n64_vulkan_parallel-rdp_vulkan_device.cpp b/emulators/ares/files/extra-patch-ares_n64_vulkan_parallel-rdp_vulkan_device.cpp deleted file mode 100644 index ac7c91bee2c2..000000000000 --- a/emulators/ares/files/extra-patch-ares_n64_vulkan_parallel-rdp_vulkan_device.cpp +++ /dev/null @@ -1,13 +0,0 @@ -https://github.com/Themaister/Granite/issues/133 - ---- ares/n64/vulkan/parallel-rdp/vulkan/device.cpp.orig 2024-08-11 00:29:27 UTC -+++ ares/n64/vulkan/parallel-rdp/vulkan/device.cpp -@@ -874,7 +874,7 @@ void Device::init_workarounds() - workarounds.emulate_event_as_pipeline_barrier = true; - } - -- if (ext.driver_id == VK_DRIVER_ID_NVIDIA_PROPRIETARY && gpu_props.driverVersion < VK_VERSION_MAJOR(535)) -+ if (ext.driver_id == VK_DRIVER_ID_NVIDIA_PROPRIETARY) - { - LOGW("Disabling pipeline cache control.\n"); - workarounds.broken_pipeline_cache_control = true; diff --git a/emulators/ares/pkg-message b/emulators/ares/pkg-message index 839b14b86e30..50cb22a05134 100644 --- a/emulators/ares/pkg-message +++ b/emulators/ares/pkg-message @@ -1,37 +1,28 @@ [ { type: install message: <= 535 of the x11/nvidia-driver could encounter -crashes or freezes while using the N64 core, see -https://github.com/ares-emulator/ares/issues/1547 and -https://github.com/Themaister/Granite/issues/133. As a workaround either try to -compile the port with the NVIDIA option set (recommended), or disable the NVIDIA -shader disk cache at startup with - - $ __GL_SHADER_DISK_CACHE=0 ares - The port provides the HOTKEYS option. This applies an inofficial patch which locks all hotkey execution in the unpaused state of the emulator. This can be a convenience for gamepad-only users who want to assign hotkey actions to gamepad buttons but who don't have enough free unassigned buttons left on the gamepad. The port uses the shaders from games/libretro-shaders-slang by default. Users can curate and utilize their own provided collection of shaders by putting them into the user data directory ${HOME}/.local/share/ares/Shaders/ ares won't process its own installed shaders if it finds any shaders in the user data directory. Delete or rename the local shaders directory in order to make ares use its own shaders again. EOM } ]