If a Gnome or Weston Wayland session is started under Ubuntu 22.04, SDL2 falls back to x11 videodriver. There is ARM hardware which runs much faster and without graphical glitches if the SDL2 wayland video driver is used. To prevent SDL2 from using x11 video driver, export "SDL_VIDEODRIVER=wayland" if Wayland session is detected.
Python3 is the default in current Debian & friends distros, but the current fork from zerojay/xboxdrv.git doesn't support it.
Upstream has moved back to Github [1] and added the necessary fixes for building with `python3`, so merge the upstream code with the various fixes added in zerojay/xboxdrv under retropie/xboxdrv.git. This fixes building under RaspiOS _bullseye_.
Since the new Sconsfile doesn't build with `python2` anymore, make the `python3` usage explicit for the `deps` and `build` phases.
There was a mix of compareVersions "$__os_debian_ver" OP $arg and [[ "$__os_debian_ver OP $arg ]] around the code.
As $__os_debian_ver is always an integer, use the bash built in operators for performance.
The compareVersions call is significantly slower as it uses an external command (dpkg).
Added the patch from @Torben2000 [1] which fixes scraping from the ScreenScraper source.
Can be removed when/if upstream (@sselph) accepts the changes in the main repository.
[1] https://github.com/sselph/scraper/pull/265
One of the depedencies updates has broke the `scraper` build [1].
Until the compatibility is restored (could happen) or scraper is updated (unlikely), just use a previous version of the dependent Go library.
[1] 06967c20ca (commitcomment-75241057)
Added 2 new parameters for the runtime-generated `retroarch.cfg`:
* `libretro_log_level` will add more debug messages from the libretro core, in addition to the frontend debugging messages.
Cand be useful to diagnose core issues, since `--verbose` activates just the frontend logging.
* `libretro_directory` is set to the core file folder (i.e. `/opt/retropie/libretrocores/lr-<core>`).
It is used by during netplay, as a client, when RetroArch attempts to re-load the core used during netplay.
Basically, when connecting to a remote netplay host, RetroArch will try to locate a `core.info` file and then try to re-load the core file. If any of them is missing, the connection fails with "Couldn't find a suitable core or content file".
The netplay issue was reported and diagnosed in #3161. Rather than symlink each installed libretro core to `$HOME/.config/retroarch/cores` (the default value for `libretro_directory`), we'll just set it at runtime with the above parameter. We still need to add the `.info` files for the installed cores, but that's a separate patch.
New stable version:
* improved compatibility with the new BLE enabled controller firmware
* better compatibility with kernels 5.12 or later and latest DKMS versions. On kernels 5.12 or later should no longer Bluetooth ERTM is not unconditionally disabled anymore. For better stability, it's generally recommended to upgrade controllers to the new BLE firmware variant (version 5.x and above) for improved connection stability
* fixed rumble throttling for modern (BLE enabled) firmware
* fixed an issue conforming to the Linux input spec better which improves compatibility with jinput
* improved documentation
Starting with RaspiOS 'bullseye', the `omxplayer` RPI video player is no longer supported.
Use the new EmulationStation build option (`OMX`) to enable the `omxplayer` bits only for `dispmanx` platforms. The new options is added in https://github.com/RetroPie/EmulationStation/pull/792. The `RPI` build option is used only for pre-setting some program settings on the Raspberry Pi platforms (audio/video memory).
Upstream project changed the `makefile` in [1] and `EXTRA_CFLAGS` was removed.
Use the new `EXTRA_CXXFLAGS` instead, so our compiler flags and directives to find the locally compiled `sfml-pi` are passed on.
[1] 502f5d71e5
`libavresample-dev` has been obsoleted by `libswresample-dev` on recent (21.10 and later) Ubuntu versions and Debian Testing.
Also explicitely add the dependency on curl's libs.
Due to the recent addition of the GameMode support, RetroArch needs access to the user's DBUS session socket.
When starting RetroArch from the RetroPie menu, `su` is used to launch it as the install user, but the DBUS socket path is not preserved (`DBUS_SESSION_BUS_ADDRESS`), leading to a en error and then a crash.
Prevent the crash by setting the XDG_RUNTIME_DIR when RetroArch is started with `su`.
NOTE: this primarily affects X11/PC users, where GameMode is part of the desktop install.
Added libsamplerate0-dev dependency to module.
Branch includes reworking the patch for kms modesetting via env variables, some minor changes to our Mali and RPI patches,
and some removal of no longer needed changes. It also includes removal of some debian/control build dependencies which were
added to upstream to align with Debian's packaging. The addition causes dependencies like libwayland-dev and libpulse-dev to
be required for all platforms. As we handle adding dependencies in our sdl module code, these have been removed in our
retropie-2.0.16+ sdl2 branch.
Include fix for detection of videocore due to our renamed include folders (thanks @cmitu).
Added an option to control 'input_auto_game_focus', which controls the auto-loading of Game Focus mode when a game is started.
Useful for using a keyboard on keyboard based systems where Game Focus mode would need be toggled every time.
Added in https://github.com/libretro/RetroArch/pull/11868
Changed from `extra` to `updates` to work-around some kernel upgrades (RPI) disabling the RetroPie `xpad` driver.
Upstream `xpad` repo installs the kernel in `/lib/modules/$KERN_VER/extra`, deleting the built-in module.
During a kernel upgrade, **when** `$KERN_VER` does not change (happened with RPI provided kernels), then `dkms` gets confused about where the module resides:
* the pre-install hook deletes the module in `extra`, but restores the original module in the same location (!)
* the post-install hook sees the module in `extra` and assumes is the one shipped by the kernel and replaces it, but doesn't delete the original (which was just installed).
As a result, during such an upgrade, there are 2 `xpad` modules and `depmod` picks the built-in one, with an ineffective RetroPie `xpad` install.
Now, `depmod` can be configured to look first in other sub-folders (overriding the built-in module tree), but on RPI OS there is no such configuration (see `man 5 depmod.d`). Ubuntu - for instance - ships with a configuration that adds `updates/ubuntu` before the built-in path.
Without a configuration file, `depmod` will look for modules in `updates` first, so moving the install folder to `updates` will result in the the RetroPie's `xpad` being picked first even without a configuration. This may potentially break when there is a configuration for `depmod`, but the work-around is meant for RPI OS, where this config is missing and mainstream Debian/Ubuntu don't usually ship with same `$KERN_VER` on upgrades.
Currently, the WiFi configuration from RetroPie menu needs a keyboard for configuring a connection.
Added a `python` script to display on-screen keyboard which can be operated with `joy2key` and the gamepad, which allows entering the WiFi network/key/password without a keyboard.
The script accepts keyboard input, so it's suited for both keyboard and joystick input. It's using the `urwid` library (https://urwid.org).
The WiFi scriptmodule was modified to use the new OSK script instead of the `dialog` based inputboxes.
Additional modifications to the WiFi module:
- added a confirmation step before removing the WiFi config and stopping the WiFi
- added an info message during the WiFi scanning (instead of having a black screen)
- removed the check for the pass length, it's done by the new OSK script
- reformatted a bit the 'country' warning
NOTE: I've tested the new OSK script with smaller displays, but anything less than 40 cols will not be displayed fully. The OSK keyboard will scroll horizontally (when there's no more space on screen), but this is non-intuitive and might confuse users. _If_ we need to accomodate an even smaller screen size, then the OSK display area should be probably changed to accomodate that (i.e. less letters on a 'keyboard' row).