Release Notes for openMSX 22.0 (2026-10-28) =========================================== Thanks to many contributors (who make good use of modern AI tools), we have a very long list of changes again. Major features are found in the debugger GUI, with a new Raster Beam Viewer and Tracer functionality. We also have the Quick Setup Editor, for one-window access to all major setup settings. Then AI hit us with dozens of Pull Requests with new and improved functionality... Not all purely AI-generated, but also using AI to analyse bulk measurements. This led to many VDP accuracy improvements and emulation of new devices like plotters, Panasonic FS-JH1 Joy Handle steering wheel (that came with Konami's A1 Spirit), light guns, Franky, Makoto, SD Mapper V1 and SM-X WiFi. There's even a synthetic TCP/IP UNAPI device to be able to try out network programs in openMSX. And many, many more things... Special thanks to all the contributors of this release who are not in the core team! Keep those pull requests coming! Here's the list with all highlights and details: MSX device support: - fixed Yamanooto SCC register visibility - added emulation of the Sony PRN-C41 (like) plotters, including a viewer in the GUI - fixed details on the turboR's FDC emulation, so that now FastCopy 3.0 properly detects it, including the correct number of drives - added MSX Light Gun emulation, controlled with the mouse on the host: - MHT GUN-STICK - ASCII Plus-X Terminator Laser - added Korean 128-in-1 mapper type - added Namco mapper type (A13-not-connected 16kB cartridges) - added ASCII8-R (reversed) mapper type - fixed details of MSX kanji ROM emulation, adding specific behaviour in many machines and devices - added Panasonic FS-JH1 Joy Handle (belongs with Konami's A1 Spirit), including configuration window - added SuperSoniqs Franky emulation (allows playing Sega Master System games on MSX) - added SuperSoniqs Makoto emulation (OPNA sound cartridge) - added SD Mapper V1 emulation - added SM-X WiFi emulation (UNAPI compatible ESP WiFi module), connecting either to a real ESP32 on a host serial port or to an emulated one that uses the host network - updated Neo mapper support to specification version 1.2, now using 14 bits of the segment register (up to 16384 segments) - VDP: - fixed VDP I/O delay to 1 cycle for machines with a T9769 MSX-ENGINE (all subtypes) - added implementation of the TEXT2-mode per line blink (bit 2 in VDP R#2) - improved timing correctness of the YMMM and LMMM commands - several other VDP command timing improvements (including start delays) - improved VDP-VRAM timing even further - fixed display line counter latch (fixes Sex Bomb Bunny shaking screen) - fixed border color changes at the wrong position (last part of Utopia) - fixed wrong location for sprite collision flag raising, causing distorted MSX2+ logo animation - fixed 5th/9th sprite flag raise location, obsoleting the special openMSX workaround in the IO demo - fixed wrong location of application of R#23 changes (8-pixel boundary) - fixed: ignore the TP bit in text, multicolor and YAE modes - PSG: - assume that no PSG implementation mirrors its registers (no evidence found they do so far...) - fixed interpretation of envelope period of 0 (same as 1) - fixed: do not reset the envelope index when writing the envelope shape register - added new machines/extensions, thanks to: - bsittler: Yamaha YIS-805/256 - updated machine/extension configurations of: - Yamaha YIS-503 - Yamaha FD-03, Sony HB-701FD: added missing singlesided tag New or improved emulator features: - GUI: - added Quick Setup Editor window, that allows you to quickly create or change your setup - added a "color blind" theme - added a pitch estimate column to the audio viewer (hidden by default) - sort mapper types in the GUI alphabetically - added "recent machines" to the Machine menu - added slot map viewer - added I/O ports viewer - in the Cartridge Slot window: added a link to Generation MSX where known - fixed history (recent items) for dir-as-disk - added ColecoVision controller configuration window - debugger (including its GUI): - allow to double-click a symbol in the Symbol Manager to jump to it in the disassembly view - allow to double-click an instruction with address to jump to that address in the disassembly view - fixed unstable layout of bitmap viewer when screenmodes change (split) - allow to specify a segment number for symbol files - tile viewer: allow override of the color table - added Raster Beam Viewer, which shows the currently in-progress raster based screen, with coordinates, CRT fade, and position of the beam - with command engine busy overlay - added debug Tracer (console and GUI), with timeline plotting of events in Trace Viewer - integration of Raster Beam Viewer and Tracer: show trace events on raster - rewrote `vdpcmdtrace` in Tcl, using the new `VDP.command` probe (output now goes to stderr and its format changed) - rewrote `cputrace` in Tcl (output now goes to stderr, its format changed and it is a lot slower) - added `cpu_trace` Tcl command which sets up traces that can be viewed in the Trace Viewer - bitmap viewer: show y=[0..1023] again - sprite viewer: fixed sprite attributes section height when zoomed - added a profiler that uses the new Trace Viewer, see the `symboltracer` Tcl command; tracing a function can also be toggled in the Symbol Manager - added option to export the ASCII view of the generic debuggable editor/viewer - added visualization of line commands in the bitmap viewer - added 'romblock16' debuggable - fixed crash with I/O read watchpoints that remove themselves (e.g. with -once) - added a generic bitmap viewer for any debuggable (from the Debugger menu or the hex editor's context menu): configurable bits per pixel (1 to 32), bit order and endianness, up to 2 levels of tiling with custom steps, grayscale, palette and packed color formats, zoom, pixel/tile/group grids (as lines or gaps) and a hover readout of address and value - added tile, sprite and register viewers for the Sega VDP of the Franky, and debuggables for its registers, VRAM and CRAM (see doc/Franky.md) - instead of showing corrupted video, a problem with shaders will now be a fatal error - fixed issues with non-ASCII paths by forcing UTF-8 paths on Windows - improved support for .ttc font files for the GUI - fixed bug where full-width characters could not be displayed correctly in the console input line - added pop-up menus for tab completion, making it easier to complete items like paths with non-ASCII characters - fixed bug with loading savestates with devices containing spaces in the name - fixed bug in CPU loadstate code (showed on Spectravideo SVI-328 for instance) - release cursor grab when openMSX is paused - fixed illegal slot specification as was in the CIEL Expert-Turbo machine for years - fixed an out-of-bounds read in the HQ resampler - improved UI responsiveness when paused/breaked - fixed the pause_on_lost_focus setting which broke since openMSX 20.0 - fixed crash when having built against sdl2-compat - fixed an out-of-bounds access when switching from SCREEN 8 to another mode - fixed crash when an 'after' command switches to another machine - fixed msxcode2unicode and other issues with Tcl 9 - added 'tcl_bridge' command, which allows MSX software to execute Tcl commands - added 'openmsx_info software' to query the ROM database - added UnapiNet: an MSX-UNAPI TCP/IP bridge device. A synthetic device on I/O ports 0x28/0x29 that implements the MSX-UNAPI TCP/IP UNAPI functions (DNS, TCP, UDP, ICMP echo) by bridging to the host's BSD sockets. Needs a specific UNAPINET.ROM driver on the MSX-side - keyboard fixes: - fixed the kbd_numkeypad_enter_key setting and added POSITIONAL mode support - fixed wrong auto-toggle CODE/KANA lock when the key is manually pressed - ignore the Grave key event for Japanese host keyboard layouts to avoid hanging keys - added setting for Japanese Windows hosts to disable the IME interfering with the keyboard emulation - fixed handling of MSX shift keys (2 identical MSX keys, 2 different host keys), which caused problems on some systems - fixed mouse speed scaling, depending on the host display size (including HighDPI) and MSX screen resolution - allow SD cards and SCSI disks also to be manipulated by disk manipulator - fixed several bugs in the cashandler script (to use CAS files directly) - added 'rs232-raw' pluggable that connects to host RS-232C port - added emulation of the MSXPi device - restored the possibility to query the names of the connected host joysticks from Tcl ('openmsx_info joystick') - fixed saving a setup with a '/' in the (machine) name, like "Philips VG 8235/39" and similar issues with saving a screenshot/savestate/replay - added a Maze of Galious password extractor, to easily save passwords in text files and type them in later with type_from_file - dir-as-disk: - added support for 40-track 180kB disk drives (e.g. Talent/AVT DPF-550) - fixed writing files back to host filesystem on no-op data-sector writes - stop using memory mapping of files on Windows, to avoid Windows preventing developers from overwriting the files when openMSX still has them open - huge updates on the ROM database, including a simplified file format and support for Sega SG-1000 and ColecoVision ROMs Build system, packaging, documentation: - required GNU compiler is now at least g++-13 - at least macOS 13.3 is required to run openMSX - the Android build is totally broken; getting it back up would require a lot of effort and help, which we don't plan to do - 3rd party updates of SDL (2.32.10), Dear ImGui (1.92.9 WIP) - added ccache support for faster compiling whilst developing on openMSX - macOS builds are now "notarized" and the installer DMG got a new look - the Windows installer is now built automatically, including Catapult - several fixes on the manual, e.g. debug subcommands and stale examples ...and of course the usual various bug fixes and performance improvements. In "doc/manual/index.html" you can find a set of HTML manuals for openMSX. Make sure to read this if you haven't used openMSX before, but also to learn more about the new and changed features. CPU and graphics performance varies a lot, depending on the openMSX settings and the MSX hardware and software you're emulating. Some things run fine on a 200 MHz machine, others are slow on a 2 GHz machine. For performance tuning tips, see the Setup Guide. openMSX is confirmed to run on the following operating systems: Linux, Windows, macOS, FreeBSD, OpenBSD and NetBSD; on x86, x86-64, PPC, ARM, MIPS and Sparc CPUs. Running on other operating systems (wherever SDL and OpenGL 2.1 run) or CPUs should be possible, but may require some modifications to the build system. If you are compiling on a new platform, please share your experiences (see below for contact info), so we can make openMSX more portable. openMSX Home Page: https://openmsx.org/ Project page on GitHub: https://github.com/openMSX Contact options: - File a ticket on https://github.com/openMSX/openMSX/issues - Use the forum on https://www.msx.org/forum/semi-msx-talk/openmsx - Talk to us on #openmsx on libera.chat or via Discord using the invite https://discord.gg/JV56gzh2qG (the #openmsx-irc-bridge channel is the best place to ask questions there) Thanks to all contributors for their feedback, support, bug reports, testing, coding and other help! Have fun with your emulated MSX! the openMSX developers