Bumped the repo version to the 19.1 tag, so it's available for Bullseye and later platforms.
A brief description of things added in 19.x (full changelog at https://raw.githubusercontent.com/openMSX/openMSX/RELEASE_19_1/doc/release-notes.txt):
- bugfixes for VDP and V9990 emulation
- many improvements on machine and extension descriptions
- added mapper for RetroHard MultiCart 31 in 1 cartridges
- implemented (more) I/O port mirroring for S-1985 and S-3527 based machines
for PSG, VDP, PPI, RTC, printer)
- added mapper for Al Alamiah 30-in-1 cartridges
- added mapper for RetroHard MultiCart 31 in 1 cartridges
- improvements and additions to OSD Menu
- many bugfixes and improvements to the disk manipulator
- fixed SaI3xScaler
- added MIDI input support to ALSA
- added YM2151 recording to VGM recorder
- added new machines: Sony HB-11 and Sony HB-F701xx, Polish Spectravideo SVI-738, Victor HC-90A, Nikko PC-70100 (hidden MSX) and Sanyo MPC-10mkII
- added new extensions: Sunrise IDE with Nextor ROM, Swedish Spectravideo SVI-738, Yamaha SKW-01 Word Processor
Updated to the 18.0 release, which requires GCC 9 and it's installable on Debian 11 (bullseye)/Ubuntu 20.04+.
The input auto-loading script has been updated to use the joystick's SDL name, while previously was using the 'udev'
device name. This fixes the issues when the joystick nane (SDL) is different than the 'udev' reported name
and thus prevented the auto-loading.
gcc -dumpversion on GCC >= 7 seems to provide the major version but the documentation suggests this depends on how it's configured.
We only need to test the major version so using compareVersions isn't required.
https://gcc.gnu.org/onlinedocs/gcc/Developer-Options.html states:
>Print the compiler version (for example, 3.0, 6.3.0 or 7)—and don’t do anything else. This is the compiler
>version used in filesystem paths and specs. Depending on how the compiler has been configured it can be
>just a single number (major version), two numbers separated by a dot (major and minor version) or three
>numbers separated by dots (major, minor and patchlevel version).
Ensure __gcc_version only contains the major version just in case in system.sh
Looks like they may be using newer C++ features than gcc 8.x provides, but this module is better
fixed to a specific version anyway as it's required workarounds for similar issues in the past.
Turns out `-m` is not a shorthand for `-machine`.
Changed the names emulators shown in runcommand selection, the '+' may be problematic when storing the entry in emulators.cfg
* Amiga - new extensions supported by `lr-puae`
* C64 - new extensions supported by `lr-vice`
* 3DO - added `.chd`, supported by the Opera Libretro core; updated license URL for the core.
* GC/Wii - added `.rvz`, supported by Dolphin
* MSX - added `.cas`, supported by both `lr-bluesmsx` and `openmsx`
* PC88 - added `.m3u`, supported by `lr-quasi88`
* added a joystick auto-configuration for Emulationstation. Joypad mappings:
* A: MSX controller A; OSD menu : Back
* B: MSX controller B; OSD menu : Action
* D-Pad/Left Analog: MSX controller joystick
* Start - toggle the openMSX OSD menu
* Select - Show on-screen keyboard
* Y - MSX F1
* X - MSX F2
* Left Trigger - MSX F3
* Right Trigger - MSX F4
The joystick's A/B/D-Pad are functional in the openMSX menu, however B is action and A is cancel/back for some reason.
The joystick is loaded using the `retropie-init.tcl` script, automatically loaded and executed during startup. Per-game overrides are possible, as long as the correct configuration script for a gamepad is found (needs some documentation).
* created a minimal configuration, with some performance optimization for Pi0/Pi1 and configuring a default machine.
Auto-saving is disabled, because it will save the joystick configuration and it might pose problems when using different joysticks.
* symlinked the configuration folder into `$configdir/msx/openmsx`.
This is useful for adding new machines/configurations and editing the gamepad auto-configurations.
* symlinked the user's _systemroms_ folder to `$biosdir/openmsx`.
openMSX uses file hashes to identify firmware files, so the filenames/folder structure is not important.
* added one emulator variation for each major MSX model (MSX2/MSX2+/MSX TurboR)
They need the appropriate BIOS/firmware files, otherwise they won't run.
NOTE: there are variations of machines using the open source C-BIOS for each major model, but C-BIOS only supports cartridges, so no tape/disk/floppy images will work.
Older GCC on at least Debian used to output a 3 part version like 6.3.0 with gcc -dumpversion
Newer GCC / OS seems to only output the major version which broke comparisons as dpkg will consider a version such as "6" to be lower than 6.0.0
* replace many of the existing wget | tar commands with the new function
* include error logging in the function via runCmd, to trap download/unpacking issues
* rp_module_menus is no more - instead use rp_module_section with one of
- core (core packages)
- main (main packages - which will be installed by default in the image)
- opt (optional packages)
- exp (experimental packages)
- driver (driver packages)
- config (configuration packages / tools)
* The setup menu organises the data based on the above sections. more could be added in the future if needed. Packages (internally modules), can be added / configured / removed individually, or as entire sections.
* The setup menu will automatically detect if a binary is available to be installed. the nobin flag is no longer needed. modules that install directly from binary via aptInstall or via a prebuilt binary need to use an install_bin_ function instead of install_
* rp_module_section of type "config" will have the "gui_" function called first if it's available, otherwise a standard depends/sources/build/install/configure will be called
* configure is no longer used for "gui" configuration function - use gui_ instead. Had already started to move to this before, but now it is required.
we pass the module id in, which is short and should be clear to the user if manually fiddling with the config. if the parameter is
empty, it the name of the binary will be used
the build/install paths are pregenerated making modules even simpler - we use the module type to decide where to put it, which
will be needed for supplementary / libretrocores