From df4ed1bfdca92b3f36d1f7d04a0d4bceb27058b5 Mon Sep 17 00:00:00 2001 From: nia Date: Thu, 15 Dec 2022 11:31:44 +0000 Subject: [PATCH] mgba: Update to 0.10.0. Split the Qt interface into a separate package. Since the Qt interface has noticable performance problems on NetBSD, this saves some significant bloat in the main package by only building the CLI interface by default. Also modify the default settings to provide a best "out of box" experience on NetBSD and SunOS, and remove the MESSAGE file indicating to change the settings. 0.10.0: (2022-10-11) Features: - Preliminary Lua scripting support - Presets for Game Boy palettes - Add Super Game Boy palettes for original Game Boy games - Tool for converting scanned pictures of e-Reader cards to raw dotcode data - Options for muting when inactive, minimized, or for different players in multiplayer - Cheat code support in homebrew ports - Acclerometer and gyro support for controllers on PC - Support for combo "Super Game Boy Color" SGB + GBC ROM hacks - Improved support for HuC-3 mapper, including RTC - Support for 64 kiB SRAM saves used in some bootlegs - Discord Rich Presence now supports time elapsed - Additional scaling shaders - Support for GameShark Advance SP (.gsv) save file importing - Support for multiple saves per game using .sa2, .sa3, etc. - Support for GBX format Game Boy ROMs - New unlicensed GB mappers: NT (newer type), Sachen (MMC1, MMC2) Emulation fixes: - ARM7: Fix unsigned multiply timing - GB: Copy logo from ROM if not running the BIOS intro (fixes mgba.io/i/2378) - GB: Fix HALT breaking M-cycle alignment (fixes mgba.io/i/250) - GB Audio: Fix channel 1/2 reseting edge cases (fixes mgba.io/i/1925) - GB Audio: Properly apply per-model audio differences - GB Audio: Revamp channel rendering - GB Audio: Fix APU re-enable timing glitch - GB I/O: Fix writing to WAVE RAM behavior (fixes mgba.io/i/1334) - GB MBC: Fix edge case with Pocket Cam register accesses (fixes mgba.io/i/2557) - GB Memory: Add cursory cartridge open bus emulation (fixes mgba.io/i/2032) - GB Serialize: Fix loading MBC1 states that affect bank 0 (fixes mgba.io/i/2402) - GB SIO: Fix bidirectional transfer starting (fixes mgba.io/i/2290) - GB Video: Draw SGB border pieces that overlap GB graphics (fixes mgba.io/i/1339) - GBA: Improve timing when not booting from BIOS - GBA: Fix expected entry point for multiboot ELFs (fixes mgba.io/i/2450) - GBA: Fix booting multiboot ROMs with no JOY entrypoint - GBA: Fix 1 MiB ROM mirroring to only mirror 4 times - GBA Audio: Adjust PSG sampling rate with SOUNDBIAS - GBA Audio: Sample FIFOs at SOUNDBIAS-set frequency - GBA BIOS: Work around IRQ handling hiccup in Mario & Luigi (fixes mgba.io/i/1059) - GBA BIOS: Initial HLE timing estimation of UnLz77 functions (fixes mgba.io/i/2141) - GBA DMA: Fix DMA source direction bits being cleared (fixes mgba.io/i/2410) - GBA I/O: Redo internal key input, enabling edge-based key IRQs - GBA I/O: Disable open bus behavior on invalid register 06A - GBA Memory: Fix misaligned 32-bit I/O loads (fixes mgba.io/i/2307) - GBA Video: Fix OpenGL rendering on M1 Macs - GBA Video: Ignore horizontally off-screen sprite timing (fixes mgba.io/i/2391) - GBA Video: Fix Hblank timing (fixes mgba.io/i/2131, mgba.io/i/2310) - GBA Video: Fix rare crash in modes 3-5 - GBA Video: Fix sprites with mid-frame palette changes in GL (fixes mgba.io/i/2476) - GBA Video: Fix OBJ tile wrapping with 2D char mapping (fixes mgba.io/i/2443) - GBA Video: Fix horizontal lines in GL when charbase is changed (fixes mgba.io/i/1631) - GBA Video: Fix sprite layer priority updating in GL Other fixes: - ARM: Disassemble Thumb mov pseudo-instruction properly - ARM: Disassemble ARM asr/lsr #32 properly - ARM: Disassemble ARM movs properly - Core: Don't attempt to restore rewind diffs past start of rewind - Core: Fix the runloop resuming after a game has crashed (fixes mgba.io/i/2451) - Core: Fix crash if library can't be opened - Debugger: Fix crash with extremely long CLI strings - Debugger: Fix multiple conditional watchpoints at the same address - FFmpeg: Fix crash when encoding audio with some containers - FFmpeg: Fix GIF recording (fixes mgba.io/i/2393) - GB: Fix temporary saves - GB: Fix replacing the ROM crashing when accessing ROM base - GB: Don't try to map a 0-byte SRAM (fixes mgba.io/i/2668) - GB, GBA: Save writeback-pending masked saves on unload (fixes mgba.io/i/2396) - mGUI: Fix FPS counter after closing menu - Qt: Fix some hangs when using the debugger console - Qt: Fix crash when clicking past last tile in viewer - Qt: Fix preloading for ROM replacing - Qt: Fix screen not displaying on Wayland (fixes mgba.io/i/2190) - Qt: Fix crash when selecting 256-color sprite in sprite view - Qt: Fix coloration of swatches on styles with distinct frame backgrounds - VFS: Failed file mapping should return NULL on POSIX Misc: - Core: Suspend runloop when a core crashes - Core: Add wallclock offset RTC type - Debugger: Save and restore CLI history - Debugger: GDB now works while the game is paused - Debugger: Add command to load external symbol file (fixes mgba.io/i/2480) - FFmpeg: Support dynamic audio sample rate - GB: Support CGB0 boot ROM loading - GB Audio: Increase sample rate - GB MBC: Filter out MBC errors when cartridge is yanked (fixes mgba.io/i/2488) - GB MBC: Partially implement TAMA5 RTC - GB Video: Add default SGB border - GBA: Automatically skip BIOS if ROM has invalid logo - GBA: Refine multiboot detection (fixes mgba.io/i/2192) - GBA Cheats: Implement "never" type codes (closes mgba.io/i/915) - GBA DMA: Enhanced logging (closes mgba.io/i/2454) - GBA Memory: Implement adjustable EWRAM waitstates (closes mgba.io/i/1276) - GBA Savedata: Store RTC data in savegames (closes mgba.io/i/240) - GBA Video: Implement layer placement for OpenGL renderer (fixes mgba.io/i/1962) - GBA Video: Fix highlighting for sprites with mid-frame palette changes - mGUI: Add margin to right-aligned menu text (fixes mgba.io/i/871) - mGUI: Autosave less frequently when fast-forwarding - Qt: Rearrange menus some - Qt: Clean up cheats dialog - Qt: Only set default controller bindings if loading fails (fixes mgba.io/i/799) - Qt: Save converter now supports importing GameShark Advance saves - Qt: Save positions of multiplayer windows (closes mgba.io/i/2128) - Qt: Add optional frame counter to OSD (closes mgba.io/i/1728) - Qt: Add optional emulation-related information on reset (closes mgba.io/i/1780) - Qt: Add QOpenGLWidget cross-thread codepath for macOS (fixes mgba.io/i/1754) - Qt: Enable -b for Boot BIOS menu option (fixes mgba.io/i/2074) - Qt: Add tile range selection to tile viewer (closes mgba.io/i/2455) - Qt: Show warning if XQ audio is toggled while loaded (fixes mgba.io/i/2295) - Qt: Add e-Card passing to the command line (closes mgba.io/i/2474) - Qt: Boot both a multiboot image and ROM with CLI args (closes mgba.io/i/1941) - Qt: Improve cheat parsing (fixes mgba.io/i/2297) - Qt: Change lossless setting to use WavPack audio - Qt: Use FFmpeg to convert additional camera formats, if available - Qt: Resume crashed game when loading a save state - Qt: Include cheats in bug report - SDL: Support exposing an axis directly as the gyro value (closes mgba.io/i/2531) - VFS: Early return NULL if attempting to map 0 bytes from a file --- emulators/libretro-mgba/Makefile | 16 +- emulators/libretro-mgba/distinfo | 7 - emulators/mgba-qt/DESCR | 8 + emulators/mgba-qt/Makefile | 37 ++++ emulators/mgba-qt/PLIST | 182 ++++++++++++++++++ emulators/mgba-qt/options.mk | 15 ++ emulators/mgba/DESCR | 2 + emulators/mgba/MESSAGE.NetBSD | 11 -- emulators/mgba/Makefile | 24 +-- emulators/mgba/Makefile.common | 26 +++ emulators/mgba/PLIST | 43 +++-- emulators/mgba/PLIST.shaders | 31 --- emulators/mgba/distinfo | 13 +- emulators/mgba/options.mk | 35 +--- emulators/mgba/patches/patch-CMakeLists.txt | 29 --- .../patches/patch-include_mgba-util_math.h | 24 --- ...clude_mgba-util_platform_posix_threading.h | 20 -- .../patch-src_platform_qt_CMakeLists.txt | 16 ++ ...patch-src_platform_qt_ConfigController.cpp | 24 +++ 19 files changed, 357 insertions(+), 206 deletions(-) delete mode 100644 emulators/libretro-mgba/distinfo create mode 100644 emulators/mgba-qt/DESCR create mode 100644 emulators/mgba-qt/Makefile create mode 100644 emulators/mgba-qt/PLIST create mode 100644 emulators/mgba-qt/options.mk delete mode 100644 emulators/mgba/MESSAGE.NetBSD create mode 100644 emulators/mgba/Makefile.common delete mode 100644 emulators/mgba/PLIST.shaders delete mode 100644 emulators/mgba/patches/patch-CMakeLists.txt delete mode 100644 emulators/mgba/patches/patch-include_mgba-util_math.h delete mode 100644 emulators/mgba/patches/patch-include_mgba-util_platform_posix_threading.h create mode 100644 emulators/mgba/patches/patch-src_platform_qt_CMakeLists.txt create mode 100644 emulators/mgba/patches/patch-src_platform_qt_ConfigController.cpp diff --git a/emulators/libretro-mgba/Makefile b/emulators/libretro-mgba/Makefile index 2444808a87f9..9d581f41fc84 100644 --- a/emulators/libretro-mgba/Makefile +++ b/emulators/libretro-mgba/Makefile @@ -1,27 +1,17 @@ -# $NetBSD: Makefile,v 1.15 2021/12/19 11:37:10 nia Exp $ +# $NetBSD: Makefile,v 1.16 2022/12/15 11:31:44 nia Exp $ + +.include "${.CURDIR}/../../emulators/mgba/Makefile.common" -DISTNAME= mgba-0.9.3 PKGNAME= libretro-${DISTNAME} -CATEGORIES= emulators -MASTER_SITES= ${MASTER_SITE_GITHUB:=mgba-emu/} -GITHUB_PROJECT= mgba -MAINTAINER= nia@NetBSD.org HOMEPAGE= https://docs.libretro.com/library/mgba/ COMMENT= Libretro core based on the mGBA emulator -LICENSE= mpl-2.0 - -USE_CMAKE= yes -USE_TOOLS+= pkg-config -USE_LANGUAGES= c c++ OPSYSVARS+= SOEXT SOEXT.Darwin= dylib SOEXT.*= so PLIST_SUBST+= SOEXT=${SOEXT} -WRKSRC= ${WRKDIR}/mgba-${PKGVERSION_NOREV} - CMAKE_ARGS+= -DUSE_DEBUGGERS=OFF CMAKE_ARGS+= -DUSE_GDB_STUB=OFF diff --git a/emulators/libretro-mgba/distinfo b/emulators/libretro-mgba/distinfo deleted file mode 100644 index 1ab22364b889..000000000000 --- a/emulators/libretro-mgba/distinfo +++ /dev/null @@ -1,7 +0,0 @@ -$NetBSD: distinfo,v 1.15 2021/12/19 11:37:10 nia Exp $ - -BLAKE2s (mgba-0.9.3.tar.gz) = 30350fe928c3f3608895639b55739b92b7ffc879fb82f4bd29b95736871e6c50 -SHA512 (mgba-0.9.3.tar.gz) = da65b3c7ec32d732163f129c4fd38949ae2da2980beb3257bf6def5e35534a27b6d30309bb3c9a8d651642f99e1a45db7a8577c8dbf5472153d4551167471b3a -Size (mgba-0.9.3.tar.gz) = 12763090 bytes -SHA1 (patch-CMakeLists.txt) = 61bb343f28a5031732b1a34157e1dca73bbddcd9 -SHA1 (patch-include_mgba-util_math.h) = 83ef3284dd5674f30dc4dec8aefe721ce5939f56 diff --git a/emulators/mgba-qt/DESCR b/emulators/mgba-qt/DESCR new file mode 100644 index 000000000000..6a9adaadafc2 --- /dev/null +++ b/emulators/mgba-qt/DESCR @@ -0,0 +1,8 @@ +mGBA is an emulator for running Game Boy Advance games. It aims to +be faster and more accurate than many existing Game Boy Advance +emulators, as well as adding features that other emulators lack. + +It also supports Game Boy and Game Boy Color games. + +This package contains the Qt graphical user interface and the +command line version. diff --git a/emulators/mgba-qt/Makefile b/emulators/mgba-qt/Makefile new file mode 100644 index 000000000000..3d572f648db1 --- /dev/null +++ b/emulators/mgba-qt/Makefile @@ -0,0 +1,37 @@ +# $NetBSD: Makefile,v 1.1 2022/12/15 11:31:44 nia Exp $ + +.include "${.CURDIR}/../../emulators/mgba/Makefile.common" + +PKGNAME= ${DISTNAME:S/mgba-/mgba-qt-/g} +COMMENT= Emulator for running Game Boy Advance games (GUI version) + +CONFLICTS+= mgba-[0-9]* + +CMAKE_ARGS+= -DBUILD_QT=ON + +# performance problems... +CMAKE_ARGS+= -DBUILD_GL=OFF +CMAKE_ARGS+= -DUSE_EPOXY=OFF + +# C++14 +GCC_REQD+= 5 + +# We probably don't actually want Qt5Multimedia. +# It's an option as an audio output, but SDL supports many more pkgsrc +# platforms natively, without going via PulseAudio. +CMAKE_ARGS+= -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Multimedia=TRUE + +TOOL_DEPENDS+= qt5-qttools-[0-9]*:../../x11/qt5-qttools + +.include "options.mk" +.include "../../archivers/libzip/buildlink3.mk" +.include "../../databases/sqlite3/buildlink3.mk" +.include "../../devel/zlib/buildlink3.mk" +.include "../../devel/SDL2/buildlink3.mk" +.include "../../graphics/hicolor-icon-theme/buildlink3.mk" +.include "../../graphics/png/buildlink3.mk" +.include "../../lang/lua/buildlink3.mk" +.include "../../sysutils/desktop-file-utils/buildlink3.mk" +.include "../../x11/qt5-qtbase/buildlink3.mk" +.include "../../mk/pthread.buildlink3.mk" +.include "../../mk/bsd.pkg.mk" diff --git a/emulators/mgba-qt/PLIST b/emulators/mgba-qt/PLIST new file mode 100644 index 000000000000..7b4caffcda49 --- /dev/null +++ b/emulators/mgba-qt/PLIST @@ -0,0 +1,182 @@ +@comment $NetBSD: PLIST,v 1.1 2022/12/15 11:31:44 nia Exp $ +bin/mgba +bin/mgba-qt +include/mgba-util/circle-buffer.h +include/mgba-util/common.h +include/mgba-util/configuration.h +include/mgba-util/convolve.h +include/mgba-util/crc32.h +include/mgba-util/dllexports.h +include/mgba-util/elf-read.h +include/mgba-util/export.h +include/mgba-util/formatting.h +include/mgba-util/gui.h +include/mgba-util/gui/file-select.h +include/mgba-util/gui/font-metrics.h +include/mgba-util/gui/font.h +include/mgba-util/gui/menu.h +include/mgba-util/hash.h +include/mgba-util/macros.h +include/mgba-util/math.h +include/mgba-util/memory.h +include/mgba-util/patch.h +include/mgba-util/patch/fast.h +include/mgba-util/patch/ips.h +include/mgba-util/patch/ups.h +include/mgba-util/platform/3ds/3ds-vfs.h +include/mgba-util/platform/3ds/threading.h +include/mgba-util/platform/posix/threading.h +include/mgba-util/platform/psp2/sce-vfs.h +include/mgba-util/platform/psp2/threading.h +include/mgba-util/platform/switch/threading.h +include/mgba-util/platform/windows/getopt.h +include/mgba-util/platform/windows/threading.h +include/mgba-util/png-io.h +include/mgba-util/ring-fifo.h +include/mgba-util/socket.h +include/mgba-util/string.h +include/mgba-util/table.h +include/mgba-util/text-codec.h +include/mgba-util/threading.h +include/mgba-util/vector.h +include/mgba-util/vfs.h +include/mgba/core/bitmap-cache.h +include/mgba/core/blip_buf.h +include/mgba/core/cache-set.h +include/mgba/core/cheats.h +include/mgba/core/config.h +include/mgba/core/core.h +include/mgba/core/cpu.h +include/mgba/core/directories.h +include/mgba/core/input.h +include/mgba/core/interface.h +include/mgba/core/library.h +include/mgba/core/lockstep.h +include/mgba/core/log.h +include/mgba/core/map-cache.h +include/mgba/core/mem-search.h +include/mgba/core/rewind.h +include/mgba/core/scripting.h +include/mgba/core/serialize.h +include/mgba/core/sync.h +include/mgba/core/thread.h +include/mgba/core/tile-cache.h +include/mgba/core/timing.h +include/mgba/core/version.h +include/mgba/debugger/debugger.h +include/mgba/feature/commandline.h +include/mgba/feature/thread-proxy.h +include/mgba/feature/updater.h +include/mgba/feature/video-logger.h +include/mgba/flags.h +include/mgba/gb/core.h +include/mgba/gb/interface.h +include/mgba/gba/core.h +include/mgba/gba/interface.h +include/mgba/internal/arm/arm.h +include/mgba/internal/arm/debugger/cli-debugger.h +include/mgba/internal/arm/debugger/debugger.h +include/mgba/internal/arm/debugger/memory-debugger.h +include/mgba/internal/arm/decoder-inlines.h +include/mgba/internal/arm/decoder.h +include/mgba/internal/arm/emitter-arm.h +include/mgba/internal/arm/emitter-inlines.h +include/mgba/internal/arm/emitter-thumb.h +include/mgba/internal/arm/isa-arm.h +include/mgba/internal/arm/isa-inlines.h +include/mgba/internal/arm/isa-thumb.h +include/mgba/internal/arm/macros.h +include/mgba/internal/debugger/cli-debugger.h +include/mgba/internal/debugger/gdb-stub.h +include/mgba/internal/debugger/parser.h +include/mgba/internal/debugger/stack-trace.h +include/mgba/internal/debugger/symbols.h +include/mgba/internal/defines.h +include/mgba/internal/gb/audio.h +include/mgba/internal/gb/cheats.h +include/mgba/internal/gb/debugger/debugger.h +include/mgba/internal/gb/debugger/symbols.h +include/mgba/internal/gb/extra/cli.h +include/mgba/internal/gb/gb.h +include/mgba/internal/gb/input.h +include/mgba/internal/gb/io.h +include/mgba/internal/gb/mbc.h +include/mgba/internal/gb/memory.h +include/mgba/internal/gb/overrides.h +include/mgba/internal/gb/renderers/cache-set.h +include/mgba/internal/gb/renderers/proxy.h +include/mgba/internal/gb/renderers/software.h +include/mgba/internal/gb/serialize.h +include/mgba/internal/gb/sio.h +include/mgba/internal/gb/sio/lockstep.h +include/mgba/internal/gb/sio/printer.h +include/mgba/internal/gb/timer.h +include/mgba/internal/gb/video.h +include/mgba/internal/gba/audio.h +include/mgba/internal/gba/bios.h +include/mgba/internal/gba/cart/ereader.h +include/mgba/internal/gba/cart/gpio.h +include/mgba/internal/gba/cart/matrix.h +include/mgba/internal/gba/cart/vfame.h +include/mgba/internal/gba/cheats.h +include/mgba/internal/gba/dma.h +include/mgba/internal/gba/extra/audio-mixer.h +include/mgba/internal/gba/extra/cli.h +include/mgba/internal/gba/gba.h +include/mgba/internal/gba/input.h +include/mgba/internal/gba/io.h +include/mgba/internal/gba/memory.h +include/mgba/internal/gba/overrides.h +include/mgba/internal/gba/renderers/cache-set.h +include/mgba/internal/gba/renderers/common.h +include/mgba/internal/gba/renderers/gl.h +include/mgba/internal/gba/renderers/proxy.h +include/mgba/internal/gba/renderers/video-software.h +include/mgba/internal/gba/savedata.h +include/mgba/internal/gba/serialize.h +include/mgba/internal/gba/sharkport.h +include/mgba/internal/gba/sio.h +include/mgba/internal/gba/sio/dolphin.h +include/mgba/internal/gba/sio/gbp.h +include/mgba/internal/gba/sio/lockstep.h +include/mgba/internal/gba/timer.h +include/mgba/internal/gba/video.h +include/mgba/internal/script/lua.h +include/mgba/internal/script/socket.h +include/mgba/internal/sm83/debugger/cli-debugger.h +include/mgba/internal/sm83/debugger/debugger.h +include/mgba/internal/sm83/debugger/memory-debugger.h +include/mgba/internal/sm83/decoder.h +include/mgba/internal/sm83/emitter-sm83.h +include/mgba/internal/sm83/isa-sm83.h +include/mgba/internal/sm83/sm83.h +include/mgba/script/context.h +include/mgba/script/macros.h +include/mgba/script/types.h +lib/libmgba.so +lib/libmgba.so.0.10 +lib/libmgba.so.${PKGVERSION} +man/man6/mgba-qt.6 +man/man6/mgba.6 +share/applications/io.mgba.mGBA.desktop +share/doc/mGBA/CHANGES +share/doc/mGBA/LICENSE +share/doc/mGBA/README.md +share/doc/mGBA/README_DE.md +share/doc/mGBA/README_ES.md +share/doc/mGBA/README_ZH_CN.md +share/doc/mGBA/licenses/blip_buf.txt +share/doc/mGBA/licenses/inih.txt +share/icons/hicolor/128x128/apps/io.mgba.mGBA.png +share/icons/hicolor/16x16/apps/io.mgba.mGBA.png +share/icons/hicolor/24x24/apps/io.mgba.mGBA.png +share/icons/hicolor/256x256/apps/io.mgba.mGBA.png +share/icons/hicolor/32x32/apps/io.mgba.mGBA.png +share/icons/hicolor/48x48/apps/io.mgba.mGBA.png +share/icons/hicolor/512x512/apps/io.mgba.mGBA.png +share/icons/hicolor/64x64/apps/io.mgba.mGBA.png +share/icons/hicolor/96x96/apps/io.mgba.mGBA.png +share/mgba/nointro.dat +share/mgba/scripts/pokemon.lua +share/mgba/scripts/socketserver.lua +share/mgba/scripts/sockettest.lua diff --git a/emulators/mgba-qt/options.mk b/emulators/mgba-qt/options.mk new file mode 100644 index 000000000000..71e22b73320c --- /dev/null +++ b/emulators/mgba-qt/options.mk @@ -0,0 +1,15 @@ +# $NetBSD: options.mk,v 1.1 2022/12/15 11:31:44 nia Exp $ + +PKG_OPTIONS_VAR= PKG_OPTIONS.mgba-qt + +PKG_SUPPORTED_OPTIONS+= ffmpeg +PKG_SUGGESTED_OPTIONS+= ffmpeg + +.include "../../mk/bsd.options.mk" + +.if !empty(PKG_OPTIONS:Mffmpeg) +CMAKE_ARGS+= -DUSE_FFMPEG=ON +.include "../../multimedia/ffmpeg5/buildlink3.mk" +.else +CMAKE_ARGS+= -DUSE_FFMPEG=OFF +.endif diff --git a/emulators/mgba/DESCR b/emulators/mgba/DESCR index 3208573c427e..7d368a2e134a 100644 --- a/emulators/mgba/DESCR +++ b/emulators/mgba/DESCR @@ -3,3 +3,5 @@ be faster and more accurate than many existing Game Boy Advance emulators, as well as adding features that other emulators lack. It also supports Game Boy and Game Boy Color games. + +This package contains the command line version. diff --git a/emulators/mgba/MESSAGE.NetBSD b/emulators/mgba/MESSAGE.NetBSD deleted file mode 100644 index 89c9543e1961..000000000000 --- a/emulators/mgba/MESSAGE.NetBSD +++ /dev/null @@ -1,11 +0,0 @@ -=========================================================================== -$NetBSD: MESSAGE.NetBSD,v 1.3 2021/05/02 08:39:59 nia Exp $ - -With the Qt UI, the OpenGL video driver seems to cause frame drops below -6 0FPS on certain hardware. The SDL UI (mgba) seems to be solid, as does -the Software driver. - -You might want to change the audio sample rate (in mGBA's settings) -to the native rate of the device (usually 48000 Hz, or a multiple). - -=========================================================================== diff --git a/emulators/mgba/Makefile b/emulators/mgba/Makefile index 1288589cfdce..7dd21ebf9c6a 100644 --- a/emulators/mgba/Makefile +++ b/emulators/mgba/Makefile @@ -1,28 +1,18 @@ -# $NetBSD: Makefile,v 1.38 2022/11/23 16:19:58 adam Exp $ +# $NetBSD: Makefile,v 1.39 2022/12/15 11:31:44 nia Exp $ -DISTNAME= mgba-0.9.3 -PKGREVISION= 7 -CATEGORIES= emulators -MASTER_SITES= ${MASTER_SITE_GITHUB:=mgba-emu/} +.include "Makefile.common" -MAINTAINER= nia@NetBSD.org -HOMEPAGE= https://mgba.io/ -COMMENT= Emulator for running Game Boy Advance games -LICENSE= mpl-2.0 +COMMENT= Emulator for running Game Boy Advance games (CLI version) -USE_TOOLS+= pkg-config -USE_CMAKE= yes -USE_LANGUAGES= c c++ +CONFLICTS+= mgba-qt-[0-9]* -# C++14 -GCC_REQD+= 5 +CMAKE_ARGS+= -DBUILD_QT=OFF -CMAKE_ARGS+= -DUSE_DISCORD_RPC=OFF -CMAKE_ARGS+= -DSKIP_GIT=ON +# XXX: unsure if any of this is useful with the SDL driver +CMAKE_ARGS+= -DUSE_FFMPEG=OFF .include "options.mk" .include "../../archivers/libzip/buildlink3.mk" -.include "../../databases/sqlite3/buildlink3.mk" .include "../../devel/libelf/buildlink3.mk" .include "../../devel/zlib/buildlink3.mk" .include "../../devel/SDL2/buildlink3.mk" diff --git a/emulators/mgba/Makefile.common b/emulators/mgba/Makefile.common new file mode 100644 index 000000000000..1de539e8b352 --- /dev/null +++ b/emulators/mgba/Makefile.common @@ -0,0 +1,26 @@ +# $NetBSD: Makefile.common,v 1.1 2022/12/15 11:31:44 nia Exp $ + +# used by emulators/libretro-mgba/Makefile +# used by emulators/mgba/Makefile +# used by emulators/mgba-qt/Makefile + +DISTNAME= mgba-0.10.0 +CATEGORIES= emulators +MASTER_SITES= ${MASTER_SITE_GITHUB:=mgba-emu/} + +MAINTAINER= nia@NetBSD.org +HOMEPAGE?= https://mgba.io/ +LICENSE= mpl-2.0 + +USE_TOOLS+= pkg-config +USE_CMAKE= yes +USE_LANGUAGES= c c++ + +CMAKE_ARGS+= -DUSE_DISCORD_RPC=OFF +CMAKE_ARGS+= -DUSE_MINIZIP=OFF +CMAKE_ARGS+= -DSKIP_GIT=ON + +DISTINFO_FILE= ${.CURDIR}/../../emulators/mgba/distinfo +PATCHDIR= ${.CURDIR}/../../emulators/mgba/patches + +.include "../../devel/libelf/buildlink3.mk" diff --git a/emulators/mgba/PLIST b/emulators/mgba/PLIST index 8e329a05e18f..84976d635e37 100644 --- a/emulators/mgba/PLIST +++ b/emulators/mgba/PLIST @@ -1,9 +1,9 @@ -@comment $NetBSD: PLIST,v 1.9 2021/05/02 08:39:59 nia Exp $ +@comment $NetBSD: PLIST,v 1.10 2022/12/15 11:31:44 nia Exp $ bin/mgba -${PLIST.qt}bin/mgba-qt include/mgba-util/circle-buffer.h include/mgba-util/common.h include/mgba-util/configuration.h +include/mgba-util/convolve.h include/mgba-util/crc32.h include/mgba-util/dllexports.h include/mgba-util/elf-read.h @@ -15,6 +15,7 @@ include/mgba-util/gui/font-metrics.h include/mgba-util/gui/font.h include/mgba-util/gui/menu.h include/mgba-util/hash.h +include/mgba-util/macros.h include/mgba-util/math.h include/mgba-util/memory.h include/mgba-util/patch.h @@ -64,6 +65,7 @@ include/mgba/core/version.h include/mgba/debugger/debugger.h include/mgba/feature/commandline.h include/mgba/feature/thread-proxy.h +include/mgba/feature/updater.h include/mgba/feature/video-logger.h include/mgba/flags.h include/mgba/gb/core.h @@ -88,6 +90,7 @@ include/mgba/internal/debugger/gdb-stub.h include/mgba/internal/debugger/parser.h include/mgba/internal/debugger/stack-trace.h include/mgba/internal/debugger/symbols.h +include/mgba/internal/defines.h include/mgba/internal/gb/audio.h include/mgba/internal/gb/cheats.h include/mgba/internal/gb/debugger/debugger.h @@ -110,15 +113,17 @@ include/mgba/internal/gb/timer.h include/mgba/internal/gb/video.h include/mgba/internal/gba/audio.h include/mgba/internal/gba/bios.h +include/mgba/internal/gba/cart/ereader.h +include/mgba/internal/gba/cart/gpio.h +include/mgba/internal/gba/cart/matrix.h +include/mgba/internal/gba/cart/vfame.h include/mgba/internal/gba/cheats.h include/mgba/internal/gba/dma.h include/mgba/internal/gba/extra/audio-mixer.h include/mgba/internal/gba/extra/cli.h include/mgba/internal/gba/gba.h -include/mgba/internal/gba/hardware.h include/mgba/internal/gba/input.h include/mgba/internal/gba/io.h -include/mgba/internal/gba/matrix.h include/mgba/internal/gba/memory.h include/mgba/internal/gba/overrides.h include/mgba/internal/gba/renderers/cache-set.h @@ -131,10 +136,12 @@ include/mgba/internal/gba/serialize.h include/mgba/internal/gba/sharkport.h include/mgba/internal/gba/sio.h include/mgba/internal/gba/sio/dolphin.h +include/mgba/internal/gba/sio/gbp.h include/mgba/internal/gba/sio/lockstep.h include/mgba/internal/gba/timer.h -include/mgba/internal/gba/vfame.h include/mgba/internal/gba/video.h +include/mgba/internal/script/lua.h +include/mgba/internal/script/socket.h include/mgba/internal/sm83/debugger/cli-debugger.h include/mgba/internal/sm83/debugger/debugger.h include/mgba/internal/sm83/debugger/memory-debugger.h @@ -142,12 +149,13 @@ include/mgba/internal/sm83/decoder.h include/mgba/internal/sm83/emitter-sm83.h include/mgba/internal/sm83/isa-sm83.h include/mgba/internal/sm83/sm83.h +include/mgba/script/context.h +include/mgba/script/macros.h +include/mgba/script/types.h lib/libmgba.so -lib/libmgba.so.0.9 +lib/libmgba.so.0.10 lib/libmgba.so.${PKGVERSION} -${PLIST.qt}man/man6/mgba-qt.6 man/man6/mgba.6 -${PLIST.qt}share/applications/mgba-qt.desktop share/doc/mGBA/CHANGES share/doc/mGBA/LICENSE share/doc/mGBA/README.md @@ -156,13 +164,12 @@ share/doc/mGBA/README_ES.md share/doc/mGBA/README_ZH_CN.md share/doc/mGBA/licenses/blip_buf.txt share/doc/mGBA/licenses/inih.txt -share/icons/hicolor/128x128/apps/mgba.png -share/icons/hicolor/16x16/apps/mgba.png -share/icons/hicolor/24x24/apps/mgba.png -share/icons/hicolor/256x256/apps/mgba.png -share/icons/hicolor/32x32/apps/mgba.png -share/icons/hicolor/48x48/apps/mgba.png -share/icons/hicolor/512x512/apps/mgba.png -share/icons/hicolor/64x64/apps/mgba.png -share/icons/hicolor/96x96/apps/mgba.png -${PLIST.qt}share/mgba/nointro.dat +share/icons/hicolor/128x128/apps/io.mgba.mGBA.png +share/icons/hicolor/16x16/apps/io.mgba.mGBA.png +share/icons/hicolor/24x24/apps/io.mgba.mGBA.png +share/icons/hicolor/256x256/apps/io.mgba.mGBA.png +share/icons/hicolor/32x32/apps/io.mgba.mGBA.png +share/icons/hicolor/48x48/apps/io.mgba.mGBA.png +share/icons/hicolor/512x512/apps/io.mgba.mGBA.png +share/icons/hicolor/64x64/apps/io.mgba.mGBA.png +share/icons/hicolor/96x96/apps/io.mgba.mGBA.png diff --git a/emulators/mgba/PLIST.shaders b/emulators/mgba/PLIST.shaders deleted file mode 100644 index d8a1dc26c9ad..000000000000 --- a/emulators/mgba/PLIST.shaders +++ /dev/null @@ -1,31 +0,0 @@ -@comment $NetBSD: PLIST.shaders,v 1.1 2020/01/25 19:26:18 nia Exp $ -share/mgba/shaders/agb001.shader/agb001.fs -share/mgba/shaders/agb001.shader/manifest.ini -share/mgba/shaders/ags001.shader/ags001-light.fs -share/mgba/shaders/ags001.shader/ags001.fs -share/mgba/shaders/ags001.shader/manifest.ini -share/mgba/shaders/fish.shader/fish.fs -share/mgba/shaders/fish.shader/manifest.ini -share/mgba/shaders/gba-color.shader/gba-color.fs -share/mgba/shaders/gba-color.shader/manifest.ini -share/mgba/shaders/lcd.shader/lcd.fs -share/mgba/shaders/lcd.shader/manifest.ini -share/mgba/shaders/motion_blur.shader/manifest.ini -share/mgba/shaders/motion_blur.shader/motion_blur.fs -share/mgba/shaders/pixelate.shader/manifest.ini -share/mgba/shaders/scanlines.shader/manifest.ini -share/mgba/shaders/scanlines.shader/scanlines.fs -share/mgba/shaders/soften.shader/manifest.ini -share/mgba/shaders/soften.shader/soften.fs -share/mgba/shaders/vba_pixelate.shader/manifest.ini -share/mgba/shaders/vba_pixelate.shader/vba_pixelate.fs -share/mgba/shaders/vignette.shader/manifest.ini -share/mgba/shaders/vignette.shader/vignette.fs -share/mgba/shaders/wiiu.shader/manifest.ini -share/mgba/shaders/wiiu.shader/wiiu.fs -share/mgba/shaders/xbr-lv2.shader/manifest.ini -share/mgba/shaders/xbr-lv2.shader/xbr.fs -share/mgba/shaders/xbr-lv2.shader/xbr.vs -share/mgba/shaders/xbr-lv3.shader/manifest.ini -share/mgba/shaders/xbr-lv3.shader/xbr.fs -share/mgba/shaders/xbr-lv3.shader/xbr.vs diff --git a/emulators/mgba/distinfo b/emulators/mgba/distinfo index 3742fe3e4e72..49c93f179980 100644 --- a/emulators/mgba/distinfo +++ b/emulators/mgba/distinfo @@ -1,8 +1,7 @@ -$NetBSD: distinfo,v 1.16 2021/12/19 11:37:10 nia Exp $ +$NetBSD: distinfo,v 1.17 2022/12/15 11:31:44 nia Exp $ -BLAKE2s (mgba-0.9.3.tar.gz) = 30350fe928c3f3608895639b55739b92b7ffc879fb82f4bd29b95736871e6c50 -SHA512 (mgba-0.9.3.tar.gz) = da65b3c7ec32d732163f129c4fd38949ae2da2980beb3257bf6def5e35534a27b6d30309bb3c9a8d651642f99e1a45db7a8577c8dbf5472153d4551167471b3a -Size (mgba-0.9.3.tar.gz) = 12763090 bytes -SHA1 (patch-CMakeLists.txt) = 61bb343f28a5031732b1a34157e1dca73bbddcd9 -SHA1 (patch-include_mgba-util_math.h) = 83ef3284dd5674f30dc4dec8aefe721ce5939f56 -SHA1 (patch-include_mgba-util_platform_posix_threading.h) = 87d25708f24f4f42b3da22d1f2da667d314ac9f5 +BLAKE2s (mgba-0.10.0.tar.gz) = f04dd3389ee4e9df3fa577b3c071d3a47262fb6727fbc7340e9bf100b58a424f +SHA512 (mgba-0.10.0.tar.gz) = 05939f94bc00906d999b955091e8e8059cc13a5b822048f6e002062c2e74069337d947d2cde2f8c1be96e3353a361743d752811c214fa9da31ed6a4893b4d7e8 +Size (mgba-0.10.0.tar.gz) = 14302653 bytes +SHA1 (patch-src_platform_qt_CMakeLists.txt) = 052c533d8df271eb623efec1ec6639da4bea1983 +SHA1 (patch-src_platform_qt_ConfigController.cpp) = 45b5a0aac879905a1471c172c5f23bef9ab33723 diff --git a/emulators/mgba/options.mk b/emulators/mgba/options.mk index 133d125405a2..ab6b3f38033a 100644 --- a/emulators/mgba/options.mk +++ b/emulators/mgba/options.mk @@ -1,35 +1,16 @@ -# $NetBSD: options.mk,v 1.5 2020/06/19 13:06:35 nia Exp $ +# $NetBSD: options.mk,v 1.6 2022/12/15 11:31:44 nia Exp $ PKG_OPTIONS_VAR= PKG_OPTIONS.mgba -PKG_SUPPORTED_OPTIONS+= ffmpeg qt5 opengl -PKG_SUGGESTED_OPTIONS+= ffmpeg qt5 opengl +PKG_SUPPORTED_OPTIONS+= opengl -PLIST_SRC+= PLIST -PLIST_VARS+= qt +.include "../../mk/bsd.prefs.mk" -.include "../../mk/bsd.options.mk" - -.if !empty(PKG_OPTIONS:Mffmpeg) -CMAKE_ARGS+= -DUSE_FFMPEG=ON -.include "../../multimedia/ffmpeg4/buildlink3.mk" -.else -CMAKE_ARGS+= -DUSE_FFMPEG=OFF +.if ${OPSYS} != "Darwin" +PKG_SUGGESTED_OPTIONS+= opengl .endif -.if !empty(PKG_OPTIONS:Mqt5) -PLIST.qt= yes -CMAKE_ARGS+= -DBUILD_QT=ON -# We probably don't actually want Qt5Multimedia. -# It's an option as an audio output, but SDL supports many more pkgsrc -# platforms natively, without going via PulseAudio. -CMAKE_ARGS+= -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Multimedia=TRUE -TOOL_DEPENDS+= qt5-qttools-[0-9]*:../../x11/qt5-qttools -.include "../../x11/qt5-qtbase/buildlink3.mk" -#.include "../../x11/qt5-qtmultimedia/buildlink3.mk" -.else -CMAKE_ARGS+= -DBUILD_QT=OFF -.endif +.include "../../mk/bsd.options.mk" .if !empty(PKG_OPTIONS:Mopengl) CMAKE_ARGS+= -DBUILD_GL=ON @@ -41,7 +22,3 @@ CMAKE_ARGS+= -DUSE_EPOXY=ON CMAKE_ARGS+= -DBUILD_GL=OFF CMAKE_ARGS+= -DUSE_EPOXY=OFF .endif - -.if !empty(PKG_OPTIONS:Mopengl) && !empty(PKG_OPTIONS:Mqt5) -PLIST_SRC+= PLIST.shaders -.endif diff --git a/emulators/mgba/patches/patch-CMakeLists.txt b/emulators/mgba/patches/patch-CMakeLists.txt deleted file mode 100644 index 45cc444e2379..000000000000 --- a/emulators/mgba/patches/patch-CMakeLists.txt +++ /dev/null @@ -1,29 +0,0 @@ -$NetBSD: patch-CMakeLists.txt,v 1.5 2021/11/28 11:34:14 nia Exp $ - -Fix locale detection. - -https://github.com/mgba-emu/mgba/pull/2366 - ---- CMakeLists.txt.orig 2020-08-04 04:46:14.000000000 +0000 -+++ CMakeLists.txt -@@ -364,7 +364,9 @@ if(HAVE_LOCALTIME_R) - list(APPEND FUNCTION_DEFINES HAVE_LOCALTIME_R) - endif() - --if(HAVE_NEWLOCALE AND HAVE_FREELOCALE AND HAVE_USELOCALE OR APPLE) -+check_include_files("locale.h" HAVE_LOCALE) -+ -+if(HAVE_LOCALE OR APPLE) - list(APPEND FUNCTION_DEFINES HAVE_LOCALE) - if (HAVE_SNPRINTF_L) - list(APPEND FUNCTION_DEFINES HAVE_SNPRINTF_L) -@@ -1033,9 +1035,6 @@ endif() - - file(GLOB READMES ${CMAKE_CURRENT_SOURCE_DIR}/README*.md) - --find_program(UNIX2DOS NAMES unix2dos) --find_program(MARKDOWN NAMES markdown kramdown pandoc) -- - if(UNIX OR NOT UNIX2DOS) - if(UNIX OR NOT MARKDOWN) - install(FILES ${READMES} DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT ${BINARY_NAME}) diff --git a/emulators/mgba/patches/patch-include_mgba-util_math.h b/emulators/mgba/patches/patch-include_mgba-util_math.h deleted file mode 100644 index f021aee8d576..000000000000 --- a/emulators/mgba/patches/patch-include_mgba-util_math.h +++ /dev/null @@ -1,24 +0,0 @@ -$NetBSD: patch-include_mgba-util_math.h,v 1.2 2021/11/28 11:34:14 nia Exp $ - -NetBSD defines popcount32 in libc. - -https://github.com/mgba-emu/mgba/pull/2366 - ---- include/mgba-util/math.h.orig 2017-07-16 19:04:50.000000000 +0000 -+++ include/mgba-util/math.h -@@ -10,11 +10,15 @@ - - CXX_GUARD_START - -+#ifndef __NetBSD__ - static inline uint32_t popcount32(unsigned bits) { - bits = bits - ((bits >> 1) & 0x55555555); - bits = (bits & 0x33333333) + ((bits >> 2) & 0x33333333); - return (((bits + (bits >> 4)) & 0xF0F0F0F) * 0x1010101) >> 24; - } -+#else -+unsigned int popcount32(uint32_t); -+#endif - - static inline unsigned clz32(uint32_t bits) { - #if defined(__GNUC__) || __clang__ diff --git a/emulators/mgba/patches/patch-include_mgba-util_platform_posix_threading.h b/emulators/mgba/patches/patch-include_mgba-util_platform_posix_threading.h deleted file mode 100644 index ee9cc7b628f4..000000000000 --- a/emulators/mgba/patches/patch-include_mgba-util_platform_posix_threading.h +++ /dev/null @@ -1,20 +0,0 @@ -$NetBSD: patch-include_mgba-util_platform_posix_threading.h,v 1.3 2021/11/28 11:34:14 nia Exp $ - -Support NetBSD pthreads. - -https://github.com/mgba-emu/mgba/pull/2366 - ---- include/mgba-util/platform/posix/threading.h.orig 2020-01-22 02:17:11.000000000 +0000 -+++ include/mgba-util/platform/posix/threading.h -@@ -94,7 +94,11 @@ static inline int ThreadSetName(const ch - rename_thread(find_thread(NULL), name); - return 0; - #elif defined(HAVE_PTHREAD_SETNAME_NP) -+#if defined(__NetBSD__) -+ return pthread_setname_np(pthread_self(), "%s", (void *)name); -+#else - return pthread_setname_np(pthread_self(), name); -+#endif - #else - UNUSED(name); - return 0; diff --git a/emulators/mgba/patches/patch-src_platform_qt_CMakeLists.txt b/emulators/mgba/patches/patch-src_platform_qt_CMakeLists.txt new file mode 100644 index 000000000000..ceb1496b8e26 --- /dev/null +++ b/emulators/mgba/patches/patch-src_platform_qt_CMakeLists.txt @@ -0,0 +1,16 @@ +$NetBSD: patch-src_platform_qt_CMakeLists.txt,v 1.3 2022/12/15 11:31:44 nia Exp $ + +Mark Multimedia an optional component so we can build without the +Qt5 audio driver (using only SDL). + +--- src/platform/qt/CMakeLists.txt.orig 2022-10-12 03:30:00.000000000 +0000 ++++ src/platform/qt/CMakeLists.txt +@@ -25,7 +25,7 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) + + set(QT_LIBRARIES) + +-find_package(Qt5 COMPONENTS Core Widgets Network Multimedia) ++find_package(Qt5 COMPONENTS Core Widgets Network OPTIONAL_COMPONENTS Multimedia) + set(QT Qt5) + + if(NOT BUILD_GL AND NOT BUILD_GLES2 AND NOT BUILD_GLES3) diff --git a/emulators/mgba/patches/patch-src_platform_qt_ConfigController.cpp b/emulators/mgba/patches/patch-src_platform_qt_ConfigController.cpp new file mode 100644 index 000000000000..65a015163212 --- /dev/null +++ b/emulators/mgba/patches/patch-src_platform_qt_ConfigController.cpp @@ -0,0 +1,24 @@ +$NetBSD: patch-src_platform_qt_ConfigController.cpp,v 1.1 2022/12/15 11:31:44 nia Exp $ + +Use a likely "device native" sample rate on SunOS and NetBSD to avoid +expensive in-kernel resampling. + +The default audioBuffers seems to cause performance problems in Qt. +Using a reasonable power of two causes "less". + +--- src/platform/qt/ConfigController.cpp.orig 2022-10-12 03:30:00.000000000 +0000 ++++ src/platform/qt/ConfigController.cpp +@@ -119,8 +119,13 @@ ConfigController::ConfigController(QObje + m_opts.audioSync = CoreController::AUDIO_SYNC; + m_opts.videoSync = CoreController::VIDEO_SYNC; + m_opts.fpsTarget = 60; ++#if defined(__NetBSD__) || defined(__sun) ++ m_opts.audioBuffers = 2048; ++ m_opts.sampleRate = 48000; ++#else + m_opts.audioBuffers = 1536; + m_opts.sampleRate = 44100; ++#endif + m_opts.volume = 0x100; + m_opts.logLevel = mLOG_WARN | mLOG_ERROR | mLOG_FATAL; + m_opts.rewindEnable = false;