LZDoom build fails using a recent GCC (14.x), due to C++ (new) dialect changes.
As a workaround, disable the GTK launcher from build to avoid the compilation errors. We don't use it and it's only built of GTK3 dev libraries are detected, but disable it so the compilation is not attempted even when the GTK3 dev libraries are installed.
Based on the feedback from @protocultor:
- add the correct Hat mapping value ('h' and not 'hat')
- don't add automatically direction signs for axis mappings since they're only necessary in certain configurations.
However the info from the ES file is not enough to determine those configurations, though they seem to be an exception rather than the norm.
One case where the signs are needed seems to be when the D-Pad is mapped using axis, so that was left implemented.
New version needs WiringPi, but not the original version that got discontinued. There's an active fork of WiringPi which also provides `.deb` files, so check whether this new version is installed first before compiling locally a static version and using it.
Other modifications:
* modified the installation/build to use `$md_build` and handle the installation ourselves, instead of using the upstream `make` targets. This means the driver is copied to `/opt/retropie` (just like `xboxdrv`) instead of being located in `/usr/local`.
* added a `systemd` unit file to start the driver and don't rely on the upstream `rc.d` service scripts.
* for the libretro core, removed a couple of packages which are not needed for the libretro core.
* for the standalone, removed `libglew` which is only used on Windows for one of the plugins and make the GLU libraries mandatory since the core doesn't build without it.
Added the ability for `runcommand` to load the SDL2 gamecontroller mappings created from the EmulationStation mappings and expose them as a SDL2 hint. Since the user may already have a mechanism to set the hint (from `.bashrc`/`.profile` or perhaps as part of the on-start scripts), don't overwrite the SDL2 hint if exists.
NB: since 2.0.22 the file containing the mappings can be set through the `SDL_HINT_GAMECONTROLLERCONFIG_FILE`, but to accomodate older SDL2 version, we're using `SDL_HINT_GAMECONTROLLERCONFIG` as a hint, which contains the actual mapping strings separated by newlines.
Added an input configuration script which will produce a SDL(2) gamecontroller mapping ([1]) based on the user's choices in the EmulationStation input configuration. The result of the mapping is saved in `/opt/retropie/configs/all/sdl2_gamecontrollerdb.txt`, which can be referenced by `runcommand` to load the mappings through SDL hints ([2] or [3]).
Since we're not trying to overwrite the existing built-in mappings, I've added a query method which needs `python3-sdl2` as dependency.
The mapping produced should follow the user's choices as far as inputs are concerned. The only 'outlier' is the 'hotkey enable' button, which is mapped to the 'Guide' SDL gamepad button IF its value is different than the _Select_ input. This way the extra button present on various gamepads (Xbox/PS) or a dedicated button chosen by the user can be mapped separately.
Ref:
[1] https://wiki.libsdl.org/SDL2/SDL_GameControllerAddMapping
[2] https://wiki.libsdl.org/SDL2/SDL_HINT_GAMECONTROLLERCONFIG
[3] https://wiki.libsdl.org/SDL2/SDL_HINT_GAMECONTROLLERCONFIG_FILE
New in version 1.8 (full change log at https://www.6809.org.uk/xroar/doc/ChangeLog):
* Fix mouse virtual joystick on resize in SDL builds
* New manual and automatic configuration saving from GUI
* Manage HD mounting from drive control dialog
* New MCX128 cartridge support for MC-10
* Fix some of the compatibility modes in GIME emulation
* Assert monitor detect line on CoCo 3 when RGB output selected
* Reduce write latency using Becker port
New in version 1.7:
* Avoid X11 keyboard init when SDL not build with X11 support
* SDL joystick module supports hotplug where possible
* Support reading a SDL gamepad DB file for non-SDL joystick modules
* New -joy-db-file option specifies SDL-compatible gamepad DB file
* New Linux evdev joystick module (hotplug, internal SDL DB, L/R profiles)
* Large changes to underlying UI mechanisms
According to the docs:
> a `.bin` is a DragonDOS or RS-DOS binary file. XRoar will determine which type it is from the header and load it into RAM, then tell the CPU to jump to its start (EXEC) address.
Full changelog is at https://stella-emu.github.io/changelog.html, some highlights:
* Added automatically enabled phosphor modes.
* Enhanced Game Properties dialog for multigame ROMs.
* Added 2nd UI theme and hotkey for toggling UI theme.
* Added bezel support (incl. Sinden Lightgun).
* Added optional type format detection based on colors used.
* Added Joy2B+ controller support.
* Added auto detection for QuadTari attached controllers.
* Enhanced Kid Vid support to play tape audio.
* Added port selection, used for controller default mapping.
* Added missing PlusROM support for E7 bankswitching.
* Enhanced movie cart (MVC) support.
* Accelerated emulation up to ~15% (ARM) (!!)
* Added limited GameLine Master Module bankswitching support.
* Added 03E0 bankswitching for Brazilian Parker Bros ROMs.
* Added WF8 bankswitching used by some certain Coleco white carts.
* Added JANE bankswitching used by Coleco's Tarzan prototype.
* Added ELF mapper for Mattress Monkeys.
* Added BUS bankswitching support for some older demos.
* Fixed broken 7800 pause key support.
NB: since 7.0 requires a C++20 capable compiler, enable this version on GCC 11 or later. Added a version chooser function to pick the correct release tag based on the detected GCC version.
Workaround g++-12 compiler bug/compilation issue on 32bit arm userland with aarch64 kernel on the rpi3 (cortex-a53)
Disabling -ftree-slp-vectorize works around the issue:
{standard input}: Assembler messages:
{standard input}:4045: Error: co-processor offset out of range
make[2]: *** [skeleton.make:2727: obj/Release/src/mame/skeleton/scopus.o] Error 1
Add arch_opts_cxx array to handle adding additional parameters to ARCHOPTS_CXX.
Highlights for the new 12.0 release (full changelog at https://github.com/chernandezba/zesarux/releases/tag/ZEsarUX-12.0):
* Added ZX Microdrive emulation on ZX Spectrum
* Added machines Czerweny CZ 1000, CZ 1500, CZ 1000 Plus, CZ 1500 Plus, CZ 2000, CZ Spectrum, CZ Spectrum Plus
* Added LEC memory extension emulation
* Added Memory Cheat feature: useful to find counters of energy, bombs, ammo or any other cheat in a game
* Added Quicksave screen function
* Added CPC Additional ROMS emulation
* Added setting "--simplemenus" to have a very simple main menu
* Added Visual Cassette Tape window
* Improved ZX Improved Spectrum Next emulation
* Various improvements to emulation and in specific areas (Hilow Datadrive emulation, Debugging, ZX Vision, ZX Desktop)
* Lots of fixes and QoL modifications for emulation and configuration/menus.
The recent rebasing of the `xpad` driver onto the latest upstream version has added a new feature present only on 6.5+ kernels.
Back out that change so that we can still use the driver on older kernels and also pin the source to a repo commit, just to prevent a build failure in case upstream reverts also the offending changes.
NB: This should be just a temporary workaround until upstream fixes the compatibility, which may take some time.