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).
Update the build parameters so:
- optimization level matches RetroPie's compiler options (-O2)
- removed `PYTHON` pre-set since it's set now to `python3` by default
- disable PortAudio, not needed since audio is handled by RetroArch
Version 0.263 introduced support for ZSTD compression for CHD files, but the version in Debian 10 Buster is not recent enough to compile MAME. Use the bundled source for `libzstd` instead of the system provided libraries for now.
Pi5 needs an additional X11 configuration stanza for xorg-xserver to start properly. This configuration is handled by the `gldriver-test` package, which installs a couple of services that create the needed configuration files based on the displays connected to the board (HDMI/DSI/etc.). Technically, once the services have run the package can be removed IIF the type of display connection will not change (i.e. will always use HDMI or DSI, etc.)
Since this package is only installed with `raspberrrypi-ui-mods` (i.e. the RaspiOS desktop), let's install it by default on Pi5. The only dependency for the package is `raspi-config`, which is already present on any RaspiOS installation.
Tell the user to save their configuration files if they intend to use any of RetroPie components after removal, i.e. if they previously had an emulator/port installed and they still want to use it after removing RetroPie.