We removed the `python3` parameter setup in commit 2a95dd076a, but the build parameters are also used by Mame/Mess 2016.
Mame2016/Mess2016 have python2 still as default, so re-add the `PYTHON_EXECUTABLE` configuration.
Starting with version 0.265 (April 2024), GCC 10.3 is required for building MAME.
Enforce this requirement when building the emulator and libretro cores, Debian Buster will be getting 0.264 as the last version.
1. I've noticed that on newer version of Meson, dependendant packages like `iir` and `mt32emu` are no longer built and linked statically.
Instead, they're created and then installed as dynamic libraries. The installation goes to `$md_inst/lib/<host-triplet>`, so the resulting binary doesn't work out-of-the-box, but the more important issue is that the `libmt32emu` library is not copied. As a result, `dosbox` will not be able to run on such a system.
The issue above doesn't seem to affect the RaspiOS (32/64bit) builds, but I had it happening on Debian Trixie (testing) and a recent Armbian Jammy 22.04 for OrangePi 5.
To make sure the above issue doesn't happen, link the `iir` and `mt32emu` libraries statically. They're always downloaded and built via Meson _wraps_, since there are no Debian packages for them.
2. Updated the dependency list so that:
* `libslirp` and `fluidsynth` (v2) are installed on Bullseye or newer Debian, so they're not built via Meson wraps
* `sdl2-image-dev` is not needed by `dosbox-staging` anymore.
* added `zlib` as an explicit dependency
Previous commit removed the `retroarch.cfg` from upstream. While the configuration will set the right options in a new config file, we traditionally used the upstream's config as starting point, since it's largely commented and provides pointers for various configuration options.
Restore the previous behavior by including the upstream `retroarch.cfg` in `$md_inst`, since the makefile doesn't copy it during the install target.
Only configure distcc variables if a module does not have the "nodistcc" flag.
Skip builder/setup modules to avoid having distcc changes propagate to modules built from them.
This allows easily disabling distcc for certain modules that are not compatible.
Latest (0.81) version of Dosbox Staging doesn't go along with the legacy GPU VideoCore drivers, resulting in a SDL window initialization crash. Pin the 0.80.1 version for these devices, maybe a GLES2-only rendering path will be added later on, which would solve this issue.
DirkSimple is a laserdisc game player that implements specific titles from scratch, so it uses an arcade game's video content but not its roms. It takes game data in Ogg Theora format, so the "rom" that the core needs is a single .ogv file per game.
Upgraded RetroArch to version 1.18.0. Notable changes, cherry-picked from:
- https://www.libretro.com/index.php/retroarch-1-17-0-release/
- 9e492f74c8
* Netplay
- expanded the protocol to allow multiplayer games running on separate consoles/computers.
Cores like 'Dosbox-Pure' or 'gPSP' support the new protocol.
- add support for joining MITM servers from command line
* Cheevos
- upgrade to v11.0
- don’t track disc changes when achievements are disabled
- inform user when server is unreachable
- fix crash on first load of game with achievements with threaded video
* Input
- fix ghost input when setting RETROK_UNKNOWN
- default ‘Bind Hold’ to 0 to prevent problems with controllers not resting at null state
- don’t save mouse buttons to autoconfig
- add a setting to allow turbo d-pad directions
- change event detection to polling in udev_joypad
- add option for merging ‘Hotkey Enable’ device types
- fix input state combos including R3 and false triggers of RETROK_UNKNOWN (1.18.0)
- add a new turbo mode, "Classic (Toggle)" (1.18.0)
- limit axis threshold setting to sensible values (1.18.0)
* Menu
- fix menu analog stick navigation (1.16.0.1)
- fix word wrapped widget length
- fix quit on content close option
- don’t process menu events while input is being flushed (1.16.0.2)
- add help text to controller drivers
- fix text scaling in 16:9 (RGUI)
- thumbnail related fixes (missing thumbnail bar, fullscreen thumbnail flashing, sidebar focus, OZONE)
- background images take precedence over color themes, default image opacity set the same as color theme opacity (XMB)
- fix segmentation fault when background image is missing (XMB)
- layout/thumbnail fixes – Thumbnail layout adjustments, Header title improvements, Handheld layout adjustments (XMB)
- add sublabels for input bind common entries (1.18.0)
- don't disable fast forward when entering menu (1.18.0)
- add option to disable initial disk change (1.18.0)
- visibility option for disk control notifications (1.18.0)
* Video
- use video refresh rate instead of core refresh rate for menu frame limiting
- limit paused video refresh rate
- enforce swap interval 1 in menu if vsync is on
- add FinalViewportSize support to GLSL
- change rotation type to int to maximize compatibility
* Patching
- add support for XDelta-formatted patches.
- fix patching for cores that support contentless mode
* Other
- Frame Rest, experimental sleep feature aiming to lower CPU usage and temperature when using certain CPU hungry vsync modes
- introduce wp_fractional_scale_v1 protocol for proper fractional scaling (Wayland)
- update wayland-protocols version to 1.31 (Wayland)
RetroPie module changes:
- make `iniConfig` use the same parameters every time
- removed spurious `ret` files on `_install`
- set `input_overlay_enable` to enabled, since the default changed (to 'false') in 1.17.0.
It helps overlay users that didn't explicitely set this parameter in the overlay overrides they're using.
- set `sort_savestates_enable` and `sort_savefiles_enable` to `false`, since in 1.18.0 RetroArch would otherwise create sub-folders under the content path folder for save states and save files (`.srm`) (see RA issue https://github.com/libretro/RetroArch/issues/16430).
The 2.8.1 is a bugfix release and includes upgrades for the following engines: AGI, AGS, GRIM, SWORD2, MM (which is now enabled, it was skipped it in 2.8.0 by accident), mTropolis, NANCY, SCUMM, TWINE, Ultima, and V-Cruise.
Full changelog at https://downloads.scummvm.org/frs/scummvm/2.8.1/ReleaseNotes.html.
Due to changes in BlueZ added to fix CVE-2023-45866, the PS3 controllers won't pair/work anymore with BlueZ.
Since the path consist in only one change to default option (ClassicBondedOnly default changed, see [1]), it's been quickly added by all distros [2], [3].
This has already been reported in the forums and fixed (for Buster) by downgrading the `bluez` package. The same fix cannot be applied to current distros, so we can switch back the option to the way it works with PS3 controllers.
NOTE:
* while technically this make BlueZ vulnerable to CVE-2023-45866, the exploit mentioned works IIF BlueZ is set to 'discoverable' mode.
However, this mode is set only during discoveries, which in RetroPie means just the pairing dialog - I think the risk for a real break-in through the vulnerability described is very low. See [4] for an explanation of the conditions needed to exploit it on BlueZ and a PoC (which didn't work for me, despite having the vulnerable config in place).
* the configuration is set-up only when a PS3 pairing attempt is made.
* when removing a device, the vulnerable configuration will also be removed if no more PS3 paired devices are left.
[1] https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/profiles/input?id=25a471a83e02e1effb15d5a488b3f0085eaeb675
[2] https://ubuntu.com/security/CVE-2023-45866
[3] https://security-tracker.debian.org/tracker/CVE-2023-45866
[4] https://github.com/marcnewlin/hi_my_name_is_keyboard?tab=readme-ov-file#linux-keystroke-injection
The `xpad` kernel module is patched locally in order for the 'triggers_to_buttons' option to work on any supported controller. During installation, the option is also enabled automatically. Historically, this has been used to work-around EmulationStation not detecting the analog shoulder triggers, but the detection works now and this extra option is not needed for EmulationStation.
Leaving the option enabled by default has the side effect of breaking SDL's Gamecontroller API DB mappings (no of buttons and axis are different then the upstream mapping). Since more and more applications/games/emulators/etc. are using this SDL sub-system, it's better we don't enable it anymore.
This change removes the module configuration handled by the scriptmodule - both installation and removal. Users can manually add/remove the configuration if they wish.
7zip/lzma assumes hardware crc support on arm, which breaks compilation on armv7.
Disable the check so it falls back to a software implementation.
Same fix as for mame with 508f3d1e64
Love has switched over to cmake, so the scriptmodule was failing.
Their main branch is considered development, so switch to the last stable tag 11.5 (December 2023).