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
In the past unsupported scriptmodules for a platform were not loaded, so rp_hasModule would only return true if the module was available for the platform.
As we now load all modules for displaying of information in retropie_setup / retropie_packages output, rp_hasModule function will return true, so we need to use rp_isEnabled instead.
This fixes installing scriptmodules with an sdl1.2-dev dependency on non RPi (eg x86/x11), that previously forced our custom sdl1 and then failed as it's disabled for the target.
Both stand-alone `ppsspp` and the libretro core `lr-ppsspp` share the `$HOME/.config/ppsspp` save file directory.
`moveConfigDir` removes the symlink on removal; this will disconnects the existing saves from the remaining emulator.
ppsspp: Use moveConfigDir only on install.
On removal, do not use the helper function. Remove the symlink manually and only if no remaining PSP emulators.
lr-ppsspp: Libretro core did not link this dir at all, and just used mkUserDir instead. Switch to use moveConfigDir and same fix as above, for libretro core also.
Removed deprecated and unused shader parameter support from ensureSystemretroconfig.
defaultRAConfig takes a single parameter for the system name, but also allows additional
parameter pairs to be added to set default ini configuration key/values
eg. defaultRAConfig "dreamcast" "fps_show" "true"
It also uses $md_conf_root as a base, which ensureSystemretroconfig didn't handle, so we save and reset
this for backward compatibility for anything still using ensureSystemretroconfig
* New:
- Added new CD32 config with 8MB Fast, use that with --autoload option
- Enable RTC automatically if enabled expansions have RTC
- Support for Cycle-Exact mode from XML options (github.com/midwan/amiberry/issues/959)
- Ability to set default soundcard (github.com/midwan/amiberry/issues/963)
* Bugs fixed
- Hotkey mappings didn't work with controller buttons (github.com/midwan/amiberry/issues/949)
- Only check for hotkey buttons if they have been mapped (github.com/midwan/amiberry/issues/949)
- When using Auto-crop and virtual mouse driver, the pointer would not reach the edges of the screen (github.com/midwan/amiberry/issues/962)
- Launch Amiberry binary directly in macOS app bundle (github.com/midwan/amiberry/issues/970)
* Improvements
- Updated bundled AROS ROMs to latest version
- Updated WHDBooter XML and WHDLoad to latest versions
- Picasso96 new features are now optional. DACSWITCH fix.
For architectures not handled by custom logic, we previously checked `uname -m` for i686/x86_64/amd64 and then set __platform=x86.
This change switches to using the actual output of `uname -m` as the __platform variable. If a platform_$__platform function exists, we will call it, otherwise we call platform_native (which used to be platform_x86).
In platform_native we check if the platform is i386/i686/x86_64 and then set an x86 flag.
This seems more logical and allows us to more easily check for x86_86 in scriptmodule flags. It also resolves redream incorrectly having x86_64 added to the flags in d877a81 (which work after this change).
The error: fatalError "Unknown platform - please manually set the __platform variable to one of the following is now removed. As we default to platform_native this could potentially allow RetroPie-Setup to work on something we don't specifically support.
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).
As with e041a0c5 we need to use the same user for running git as the owner of the repository files.
This is also needed for an update check in rp_hasNewerModule as we check the last commit date of scriptmodules in RetroPie-Setup.
Update amiberry version to v5.1 tag
Remove no longer needed libxml2-dev dependency
Add patch for amiberry Makefile so it doesn't override our CFLAGS/CPPFLAGS/LDFLAGS
Remove -O3 from Makefile so it uses our default optimisation level. Previously this was -Ofast but from my own testing -O2 with our compiler flags works best.
Modify build_amiberry with updated paths for caps bootstrap/configure. Override CPUFLAGS for amiberry, so our flags are used, rather than the ones hard-coded into the Makefile.
Include abr and kickstarts folder in install_amiberry. The kickstarts folder includes a freely distributable AROS rom, so let's include it.
Symlink cd32.nvr from "$md_inst/data" to "$md_conf_root/amiga/amiberry" so it's writable by amiberry.
Split uae4arm's shared configure function out so uae4arm and amiberry now only share the launcher code. There is a small amount of duplication with some folder creation in configure_amiberry but it makes sense to split them due to the new amiberry changes.
Rework uae4arm/amiberry configure functions to simplify logic and remove nesting by changing order of calls.
Change the addEmulator calls in uae4arm and amiberry due to parameter ordering changes in the shared launcher script.
Move rom location for amiberry/uae4arm/uae4all to $biosdir/amiga
Create update hook to move / symlink kickstart ROMs from $biosdir to $biosdir/amiga
Add .lha to module description extensions
Added .chd extension to platforms.cfg
Rework the logic in the shared launcher script:
* Instead of setting EMULATOR variable via sed in uae4arm/amiberry we just change "use_amiberry=0" to "use_amiberry=1" in configure_amiberry.
* Argument ordering is changed to simplify the logic. Previously the launch script expected [CONFIG] [ROM/GAME], and setting [CONFIG] to auto or "" would handle it automatically. Now it uses [ROM/GAME] [ARGS]. As passing in a configuration was optional, it made it simpler just to have the ROM first, and then allow additional arguments to be sent to the emulator.
* We now build up an parameters array which avoids duplication and simplifies the code - There is only a single call to launch uae4arm/amiberry with the processed parameters.
* Switched to using the amiberry --model parameter over our previous rp-a500.uae/rp-a1200.uae configs. Users who have set a particular rom to use amiberry-a500/amiberry-a1200 will still get the same functionality but it will instead use --model A500/A1200. A per rom .uae config can still be saved with customised settings for an adf etc.
* added support for .chd files for amiberry
How uae4arm.sh handles launching:
* If the first argument (ROM/GAME) is a .cue or .lha file, and we are launching amiberry, use amiberry's --autoload function.
* Otherwise if a rom argument is present, see if it's an archive (only zip supported currently). If it is, unpack all known disk image extensions from the archive attach each one as floppy drive arguments (-0 / -1 / -2 etc)
* If it's not an archive, treat it as a disk image itself, and try and find additional files starting with the same name (eg Game_Disk1/Game_Disk2) and attach them as floppy drive arguments.
* We then check if there is a .uae config file with the same name as the ROM argument in the ROM's folder or in amiberry's conf folder.
* If there isn't we will try and use a config based on the filename. For uae4arm it will use the pre-installed rp-a500.uae config by default and rp-a1200.uae for any files containing AGA or CD32. For amiberry we use the --model parameter which chooses a default config based on argument. By default we use A500, but switch to A500P if a file contains ECS and A1200 if a file contains AGA, and CD32/CDTV if those strings are included also (Although cd images are handled separately so this may not be too useful).
* We always set -G to not show the GUI when the first argument is present - to override this the first argument can be blank and manual parameters can be used (or the amiberry executable can just be used directly)
Image files for Raspberry Pi OS buster (oldstable) and bulleye are now single files compressed with .xz instead of the zip files used previously.
Add support for decompressing xz as well as an additional check to make sure the image was extracted ok before continuing. Added return codes to the function.
Git reports
fatal: unsafe repository ('$HOME/RetroPie-Setup' is owned by someone else)
This is due to us running `git log` under root on a repo owned by the user it was installed for.
This commit also switches from su to sudo in setup.sh for consistency with other code.
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