There's no 'gles2' flag, use 'gles' to detect GLES2 only systems and add the GLES build options (e.g. Pi3).
Added the project's README.md file to the installation.
On the rpi5 on 32bit arm rpios bookworm, building failed with
/usr/lib/gcc/arm-linux-gnueabihf/12/include/arm_neon.h:18284:34: error: unknown type name ‘float16x4_t’; did you mean ‘bfloat16x4_t’?
18284 | vfmlal_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b)
| ^~~~~~~~~~~
| bfloat16x4_t
Add the option -mfp16-format=ieee which fixes this.
Use an array add_clags to handle the additional CFLAGS changes and use for the linkage_arm.S workaround.
VLC's MMAL video output doesn't detect which HDMI port is connected, as `omxplayer` did beforehand.
This results in a black screen instead of a splash video/image on a Pi4 where the display is connected to the 2nd HDMI port. Use `tvservice` when the MMAL video output is used to detect the connected screen and pass it on to `vlc`.
Since we're using just the Bourne shell, had to use `case` for wildcard comparison.
Do note that `CMD_OPTS` is modified during the installation of splashscreen, so it's not 100% guaranteed to stay empty.
Remove -ffast-math from makefiles on armv8. This option causes the following error when building on the rpi5 (armv8.2a):
/usr/lib/gcc/arm-linux-gnueabihf/12/include/arm_neon.h: In function ‘float16x4_t vmul_n_f16(float16x4_t, float16_t)’:
/usr/lib/gcc/arm-linux-gnueabihf/12/include/arm_neon.h:17755:14: error: conversion of scalar ‘float’ to vector ‘float16x4_t’ involves truncation
This also disables it for other armv8 platforms (that didn't have this problem), but the option does come with some risks and was added to code which I don't think will benefit such as mupen64plus-ui-console.
The make parameters are needed at the install stage and build stage so move them to a function.
Rename variable $source to $dir in the install loop - This matches the build function. An undefined variable $dir was used previously.
This also fixes some slight differences between them that were unnecessary:
* isPlatform "rpi1" && params+=("VFP=1" "VFP_HARD=1") was missing from the install stage
* install was missing isPlatform "armv8" && params+=("HOST_CPU=armv8") which is needed when building for the rpi5 with 64bit kernel and 32bit userland.
Force PLATFORM=arm on arm systems. Without this mame builds for aarch64 and sets PTR64=1 erroring out with:
static_assert(sizeof(void *) == 8, "PTR64 flag enabled, but was compiled for 32-bit target\n");
This also fixes building of lr-mame2016
New in version 1.6:
* New machine Dragon Professional (Alpha), 'dragonpro'
* New machine Tandy Deluxe Colour Computer, 'deluxecoco'
* New -ram-org option to specify RAM addressing
* New -ram-init option to specify initial RAM state
* 6309 DIVD behaviour fixed against Tim Lindner’s fuzzing tool
* 6309 DIVD timing fixed according to David Banks’s behaviour notes
* 6309 DIVQ behaviour & timing adjusted similarly, though untested
* More accurate observed NTSC CoCo 3 GIME composite video behaviour
* New GTK+ 3 UI
* New printer control dialog (GTK+ 3, Windows) or menu options (Mac OS X+)
* More keyboard virtual joystick profiles included by default
* All physical joysticks selectable from menus by default
There are 2 (uinput) related changes here:
* The SDL2/Uinput based Joy2Key is too slow for Pi1/0 devices, so allow the user to choose the older version. The older version is simpler since it doesn't need or load SDL2/Uinput, thus faster to load on those systems. By default, on ARMv6 devices the old version will be configured.
* The Uinput based event generation of keyboard events is not able to trigger the `runcommand` menu when launching images splash is done via `feh`, since the image display will get always have focus and thus the keybord events will not reach the `runcommand` terminal. So, in order for the `runcommand` menu to work after the splash image, make sure we stop `feh` before launch, just like `fbi` is stopped on non-desktop systems.
The new version has lots of bugfixes and adds support for the new Doom II add-on "Legacy of Rust" released by Bethesda with the Doom(+II) re-release.
New in version 4.13.0:
* Added pistol start gameplay option
* A few ID24 spec implementations, adds support for new Bethesda DOOM + DOOM II re-release and Legacy of Rust
* Several multiplayer network fixes, especially with prediction
* Some savegame fixes, should now be able to delete them on windows
* Add Extra Parameters to iwad selection box
* iwad selection box now always shows unless one of the following is true: it is disabled, -iwad is used from command line, or you load in a gameinfo that suggests an iwad
* Add mbf21 and mbf21 (strict) compatibility presets
* Particles and rollsprites are now square
* ZMusic update, allows selecting a new module player
* Forced-perspective sprite clipping (limited ability for sprites to render under the floor)
* Support for Orthographic projection
* Decoupled animation fixes
* Able to now pass optional parameters in any order
On RaspiOS, the install user is part of the `input` group by default, but on Ubuntu is not. Add it during install so that `joy2key` can work as regular user (i.e. as part of `runcommand`).
Upstream has re-organized the repository with the new versions for DB9/Gamecondriver and removed the version suffix from the source folders. Modified the module to fix the symlink to `/usr/src` needed by `dkms` and also fix the license URL.
Recent Linux kernels (6.2+) have the ability to disable the 'TIOCSTI' ioctl, thus rendering unusable the method of sending keyboard events to the controlling terminal via `fcntl.ioctl` [1]. Not all distributions have left it enabled currently, but Ubuntu 24.04 has it enabled, affecting the `runcommand` ability to generate keyboard events for a joystick.
Use the `python-uinput` module to create a virtual keyboard and send the proper events through it, without relying on the 'curses' or 'fcntl' modules. Now, since the new module doesn't know about Termios codes, which were used previously, I've added a translation table to accomodate scripts using those capability codes. The `python-uinput` uses the Linux event codes [2].
The new method needs the `uinput` Linux kernel module to be loaded beforehand - so add the module to be automatically loaded. The user also needs to be part of the 'input' group, otherwise they won't be able to use the `uinput` interface - RetroPie doesn't automate that, but assumes the installation user belongs to that group.
We also don't need the `termios`/`fnctl` calls, so the terminal handling part has been removed, simpplifying a bit the code.
OTHER changes:
- the device path (/dev/jsX) is now ignored. It hasn't been working since the switch to SDL2 for input processing, but was still parsed for compatibility with the old version.
- when invoking with the debug (--debug|-d) parameter, the script now runs in the foreground, instead of forking and running in the background. It's easier when running it to diagnose issues; running with debugging enabled should not be used for regular usage.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=83efeeeb3d04b22aaed1df99bc70a48fe9d22c4d
[2] https://github.com/tuomasjjrasanen/python-uinput/blob/master/src/ev.py
Don't install the 05-splash.sh script to kill vlc on Raspberry Pi Buster and below. VLC on Buster on RPI4 will output to MMAL which can overlay on top of EmulatioStation.
Remove 05-splash.sh if already present on Buster.
Due to a recent merge of upstream code, the module no longer builds on Linux kernel 5.10, included in Raspberry Pi OS 'buster'.
The change needed to compile is minimal, it's caused by a missing event code from 'input-event-codes.h', part of the kernel's UAPI headers.
The 'capsimg.so' wasn't properly copied after build to the plugins folder, making Amiberry unable to load IPF files.
Also fixes - apparently - a double free crash on the Pi4 build.
DKMS in Bookworm has a bug[1] where the autoinstall function on kernel updates fails due to a miscalculated version comparison, thinking always that the kernel version is newer than the custom version and skipping the installation. The message shown during upgrades is:
xpad.ko.xz:
Running module version sanity check.
Module version for xpad.ko.xz exactly matches what is already found in kernel
DKMS will not replace this module.
You may override by specifying --force.
Added a module version (copied from the `dkms.conf`'s package version) to have 'dkms' always install the out-of-tree version.
[1] https://github.com/dell/dkms/issues/296, fixed by https://github.com/dell/dkms/pull/297
Due to the old EGL version implemented by the old BRCM GLES drivers, the core cannot obtain a (HW) GL context to be used for accelerated video output. Disable this feature on systems using the old/legacy GLES(2) driver.