Upstream GlideN64 has a regression due to a recent shader related change, which breaks the video output on GLES devices/platforms.
Until this issue is fixed in the upstream GlideN64, build the plugin from a commit before the changes that cause the regression.
The previous build method on the Pi4 uses a CMake toolchain file which assumes a 32bit ARM system.
To make it compile on ARM64, remove the toolchain file usage and add the appropriate defines/options from it to the CMake invocation.
Starting with version 0.265 (April 2024), GCC 10.3 is required for building MAME.
Enforce this requirement when building the emulator and libretro cores, Debian Buster will be getting 0.264 as the last version.
1. I've noticed that on newer version of Meson, dependendant packages like `iir` and `mt32emu` are no longer built and linked statically.
Instead, they're created and then installed as dynamic libraries. The installation goes to `$md_inst/lib/<host-triplet>`, so the resulting binary doesn't work out-of-the-box, but the more important issue is that the `libmt32emu` library is not copied. As a result, `dosbox` will not be able to run on such a system.
The issue above doesn't seem to affect the RaspiOS (32/64bit) builds, but I had it happening on Debian Trixie (testing) and a recent Armbian Jammy 22.04 for OrangePi 5.
To make sure the above issue doesn't happen, link the `iir` and `mt32emu` libraries statically. They're always downloaded and built via Meson _wraps_, since there are no Debian packages for them.
2. Updated the dependency list so that:
* `libslirp` and `fluidsynth` (v2) are installed on Bullseye or newer Debian, so they're not built via Meson wraps
* `sdl2-image-dev` is not needed by `dosbox-staging` anymore.
* added `zlib` as an explicit dependency
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.
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.
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.
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.
Made a few tweaks to optimize bulding MAME:
- bump the RAM requirements, to ensure there's enough memory to complete the build.
- don't build the MAME debugger on non-desktop platforms, since it would need a windowing environment to run anyway.
This allows us to remove the QT dependencies and debugger compilation steps.
- use system's flac/zstd libraries (more could be added)
- tell the linker to remove debugging info, so the binaries don't need a 'strip' call afterwards
- synchronize the optimization level in MAME with RetroPie's optimization flags (-O2), to avoid extra optimization during compiling (MAME defaults to '-O3').
New features in version 1.5:
* Add ability to change Picture Area, seeing more or less border
* New option -vo-picture
* Respect -geometry dimensions in SDL-based UIs
* Add optional 60Hz vertical scaling (on by default)
* New option -no-vo-scale-60hz disables 60Hz scaling
* Faster ROM intercept based printing on CoCo and MC-10
* GIME: respect X offset and HVEN in COCO mode
* MPI slot config moved from global to per-cart, included in -config-print
* Add screenshot to PNG from menu or Control+Shift+S
* Fix printing after switching machines [Jak Fearon]
* Better rendering of paths in Windows dialogs
* Fix some CoCo 3 cartridge behaviour [Christian Haitian]
* GIME: reset video address later (fixes Androne) [Russ Le Blang]
* GIME: fix various $FExx access problems
Modified the module to update the dependencies and improve the initial configuration
* Build changes:
- build dependencies modified to include SDL2. Latest version (as of Jan 2024) enable SDL2 by default on Linux and use it for input auto-configuration.
Gamepads detected using SDL's GameController API are automatically configred based on their mappings.
- disable analytics and update support durign the build. Updates are handled by RetroPie-Setup and - unfortunately - analytics require a keyboard/mouse to get over the initial agreement pop-up that is presented to the user on the 1st run.
* Configuration updates:
- on KMS systems, start Dolphin via X11 by using the `XINIT-WM` launc prefix, which instructs `runcommand` to start a minimal desktop env.
- change the location of the configuration folder, since now Dolphin follows the XDG specs and uses `$XDG_CONFIG_HOME` to store its settings.
It will not affect existing installations, since we symlink-it to the configuration folder anyway and Dolphin will look in the previous location first.
- pre-set a few initial configuration options in the main `Dolphin.ini` configuration file, upating existing options
- add a new pre-set for the graphics backend configuration file in `GFX.ini` to switch to GLES3 on platforms where it is available.
It should help the Pi5 but also other SBCs we support (i.e. OrangePi5 / RK3399) to startw the correct rendering backend.
- set the '-gui' variant as default. Since the 'nogui' doesn't seem to read the configuration files correctly (i.e. no Fullscreen or Hotkeys are working), use the main program started with '--batch' to run a game
Switched the Quasi88 upstream repository to the "Quasi88Kai" fork [1], since it has some new developments and also supports SDL2.
Changes in the fork:
* General updates to the build system and migration to CMake
* All files converted to UTF-8
* Many improvements in Windows, X11, GTK and SDL backends
* Add a RetroAchievements-compatible version "RAQUASI88" (only for Windows at this time)
Had to apply a build patch since:
* SDL2 2.0.10 libraries do not provide the SDL:SDL aliases in the `sdl2-config.cmake`
* Buster's GCC (8) is implementing the filesystem C++17 API in `libstdc++fs`
[1] https://github.com/winterheart/quasi88
The original repository has long been abandoned, but several forks are still active. The (most ?) active one has added support for SDL2 (Audio, GameController API) and MIDI (Fluidsynth) among other things and it even has some SDL3 support in the works. [1]
This commit switches the source of the emulator to [1] and adjusts the dependencies, build instructions and files included. When building with Fluidsynth, install a minimal soundfont and also generate a minimal configuration referencing the installed soundfont path.
[1] https://github.com/TurtleBazooka/px68k, based on https://github.com/kenyahiro/px68k, original repository at https://github.com/hissorii/px68k.
Notable changes in this fork.
* Utilizes SDL2 Renderer (GPU), so "sdl-gfx" is unnecessary
* Supports Full-Screen Mode.(F11)
* Soft keyboard (Right click on F12Menu mode)
* SCSI DiskImage support (Can boot from *.HDS)
* Change final screen output to 24bit (RGB565→RGBA8888)
* Support MIDI-Play (Internal/Munt/fluidsynth/USB-MIDI) (NB: didn't find anything in sources about MUNT, I assume is used on Windows as MIDI softsynth)
* Support US-Keyboard layouts. keyconf.dat shoudl be copied into .keropi folder
* Printer output is saved to File
* Can use XBOX like USB-GamePad (hot-pluggable)
* Add support for CyberStick! (DIGITAL/ANALOG mode)
* FileName's UTF8/SJIS automatic detection Japanese display (dedicated table conversion)
Since recent kernels don't have the BCM string in `/proc/cpuinfo`, update the Raspberry Pi detection to use the device tree.
Other updates:
* simplifed the selection of the OMX output plugin and port number. Applies only to Pi models 0-4, since Pi5 cannot use OMX
* disabled pre-setting the 'pulse' SDL audio driver for non-OMX/ALSA devices. SDL will try 'pulseaudio' ('pulse' is the SDL 1.2 name) then 'alsa' in this order, so there's no need to force it to 'pulseaudio'. Starting with 2.0.22, SDL supports a list of drivers in the AUDIODEVICE hint, but Buster based systems are not there yet.
Latest mame has an issue linking on Raspberry Pi OS Bullseye. It fails with
/usr/bin/ld: BFD (GNU Binutils for Raspbian) 2.35.2 assertion fail ../../bfd/elf32-arm.c:9876
Work around this by using the gold linker.
Added a few new depedencies needed in 2.8.0. The 'sonivox' option is disabled for now, since the package(s) needed are available starting with Debian 12 (bookwork) and Ubuntu 23.04 and thus not available everywhere.
ScummVM 2.8.0: Mysteries, Mammoths, and Muppets changelog (announced in https://www.scummvm.org/news/20231230/, full log at https://downloads.scummvm.org/frs/scummvm/2.8.0/ReleaseNotes.html)
New games added:
* Adibou 1
* Classical Cats
* The Dark Eye
* Dark Side
* Escape From Hell
* Gadget: Invention Travel and Adventure
* Gobliiins 5
* The Excavation of Hob's Barrow
* Kingdom: The Far Reaches
* Might and Magic Book One
* Muppet Treasure Island
* Nancy Drew: The Final Scene
* Nancy Drew: Message in a Haunted Mansion
* Nancy Drew: Secrets Can Kill
* Nancy Drew: Stay Tuned for Danger
* Nancy Drew: Treasure in the Royal Tower
* Primordia
* Reah: Face the Unknown
* Schizm: Mysterious Journey
* Shardlight
* Strangeland
* Syberia and Syberia II (macOS versions only)
* Technobabylon
* The Vampire Diaries
* Whispers of a Machine
* Wrath of the Gods and four other Director titles.
* 14 AGS titles by Stranga and Cloak and Dagger
New Platforms:
* Libretro, now part of the mainline sources
* Atari, added as native port
Engine enhancements:
* AGS engine has been upgraded to 3.6.0.53 from upstream
* Added support for numerous Chinese and Japanese game variants in various engines.
* Implemented a lot of native GUI dialogs for SCUMM games, bringing them closer to the original experience.
* Re-implemented the sound engine for SCUMM Humongous Entertainment games, making them flawless.
* Performed a deep review of the Broken Sword 1 game engine, implementing some small, previously unnoticed things like scene transitions, in-game menu peculiarities, accurate fonts, idle animations, and more. Now, the game is absolutely faithful to the original.
Changes since 5.0.0:
* Altirra OS updated to v3.41
* Altirra BASIC updated to v1.58
* Atari ST/TT/Falcon optimizations
* Fixed keystrokes for inserting/deleting of line/character (#179)
* SIO now resets BRKKEY (fixes Arsantica 3 demo)
* Fixes CTRL and CAPS keys when using SDL12-compat library.
* Show all input events on a single line during recording
* RAM cartridges implementation
* added XEX reading in monitor (useful for patches)
* Added H: device rename; save it in setup file, possibility of renaming the host device (H:) to any letter but C: (cassette), E:, K: and S:
Full changelogs:
- 5.1.0: https://github.com/atari800/atari800/releases/tag/ATARI800_5_1_0
- 5.2.0: https://github.com/atari800/atari800/releases/tag/ATARI800_5_2_0
The `libraspberrypi-bin` package has been deprecated in RaspiOS's latest Bookworm release [1], being replaced with `raspi-utils`.
We need this package for `tvservice`, but on KMS platforms this utility is obsolete and always returns an error.
The changes will:
- leave the `libraspberrypi-bin` dependency in `runcommand` just for RPI+DispmanX platforms (Buster and eariler Raspbian)
- replace the `mupen64plus` dependency with the correct one (`libraspberrypi0`), since this is where the (E)GL(ES) VC drivers are located. `tvservice` , used by the starting script, should be installed by the `runcommand` dependency
[1] RasPiOS 06.Dec.2023 release, list of included packages: https://downloads.raspberrypi.com/raspios_arm64/images/raspios_arm64-2023-12-06/2023-12-05-raspios-bookworm-arm64.info
Previous (and initial) Bookworm release contained the `libraspberrypi-bin` package: https://downloads.raspberrypi.com/raspios_arm64/images/raspios_arm64-2023-10-10/2023-10-10-raspios-bookworm-arm64.info
It's required to fix missing defines building for opengles2 (videocore) as with v1.16.6 of ppsspp.
Use the __mod_info array to get the path of the patch, so it works when called from the lr-ppsspp scriptmodule.