Release Notes for openMSX 18.0 (2022-06-12)
===========================================

Again a release with mostly bug fixes and smaller improvements. And of course a
little more blasphemy out there adding support for Sega SG-1000.

Special thanks to all the contributors of this release who are not in the core
team! Keep these pull requests coming!

Here's the list with all highlights and details:

MSX device support:
- V99x8:
  - fixed ugly looking top line when displaying interlacing
  - fixed rounding for 'blue' in YJK modes
  - fixed bug in VRAM access timing, in cases where VDP and CPU are
    simultaneously accessing VRAM, like in Maze of Galious Enhanced. This was
    mostly noticable when replaying a recorded replay.
- V9990:
  - fixed possible crash when switching display modes (seen in SymbOS)
  - fixed BMXL and BMLX commands in P1 in 4bpp modes
- R800: fixed flag behavior of block I/O instructions (only affect Z and N)
- OPL4:
  - fixed aliasing in high pitched notes introduced in 0.15.0
  - fixed missing reset of sample position when wave is changed during release
- Apply Z80 CMOS behaviours to all MSX-ENGINE machines (not only turboR)
- Implemented the known differences between OPM (YM2151, as used in Yamaha
  SFG-01) and OPP (YM2164, as used in Yamaha SFG-05)
- Fixed YM2151/YM2164 timer
- YM2413/OPLL (MSX-Music):
  - incorporated bug fixes in NukeYKT OPLL core from the upstream authors
  - emulate effects of too fast access to YM2413/OPLL when using the (default)
    NukeYKT core. Note: this only works when the speed setting is set to 100%.
- Fixed Sony HBI-55 emulation
- Fixed swapped red/blue colors in laserdisc with SDLGL-PP
- Added disk-changed bit in Sony FDC interface, required for HB-F500P for
  instance
- Added support for Talent TDC-600 external floppy disk drive
- Added support for Canon FDC connectionstyle
- More accurate TC8566AF emulation (turboR FDC)
- Implemented proper emulation of Konami EC-701, thanks to Albert Beevendorp
  and Takamichi Suzukawa
- Added initial support for Sega SG-1000 (and some preparations for SC-3000)
- Carnivore 2:
  - updated initial (out-of-the-box) flash content, with bootmenu 2.50
  - added 2nd PSG feature with configurable I/O ports (new in 2.50 firmware)
  - added user-defined ID and control port I/O (new in 2.50 firmware)
  - report firmware as version 2.50
  - fixed bug that prevented multiple Carnivore 2 cartridges inserted in a
    single machine
- Added 2nd PSG on I/O ports 0x10-0x12 for Boosted configs and also added an
  artificial 2nd PSG extension, for convenience, as alternative to using a
  MegaFlashROM SCC+ SD or Carnivore 2 cartridge for that feature.
- Use cleaned up disk ROMs in several configurations (without registers)
- Fixed several configs that had wrongly a memory mapper: Sony HB-F1XD,
  HB-F1XDmk2, Panasonic FS-A1mk2
- added new machines/extensions, thanks to:
  - Peter Hanraets: Philips VG 8235/39, Panasonic CF-2700 (UK), Casio MX-15,
    Mitsubishi ML-G30 model 1, Mitsubishi ML-G30 model 2, Sanyo MPC-25FS,
    Mitsubishi ML-8000, Daewoo DPC-200 (French), Sony HB-F1XDmk2, Sony HBD-20W,
    Panasonic FS-PW1
  - sergarbes: Sony HB-F700S
  - Meits/Peter Hanraets: Philips VG 8235/20, several VG 8235 improvements.
  - Ricardo Jurcyk Pinheiro: Yamaha AX200
  - NYYRIKKI: Swedish/Finnish localized Spectravideo machines
  - friguron: Spanish Philips NMS 8250
  - Others: Canon V-30F

New or improved emulator features:
- Huge clean ups and fixes of the unicodemaps (using Rebecca Bettencourt's
  mapping tables, which were released as part of Unicode) and other keyboard
  fixes/improvements (e.g. a French/Arabic unicodemap)
- Added MSX character to unicode (and vice versa) mapping, which is used in the
  get_screen script
- Fixed several bugs in save_msx_screen script (as seen in Yupipati)
- Fixed bug in DirAsDSK which could lead to corruption
- Fixed DirAsDSK on MSX systems that require a disk-change signal to notice
  changes
- OSD menu:
  - fixed tape deck OSD menu when there are spaces in the path
  - added menu option to change host to MSX joystick mapping
- Added script that can show where the raster beam is on the screen
- Added script that shows sprite locations and information on the OSD
- Also display hours in the reverse bar
- Fixed crash when using "record_channels cassetteplayer" with resampler=blip
- Don't remove once-breakpoints if condition fails
- Added internal events on breakpoint/watchpoint/condition/probe add/remove
  (unused so far, but may help debugger development)
- Allow multiple errors/warnings to be displayed on OSD
- Large update of the ROM database

Build system, packaging, documentation:
- C++ code is based on C++20 and thus requires a compiler supporting it, e.g.
  g++ 9 or later (10 is recommended and will be necessary for the next release)
  or Visual Studio 2022 or later
- Updated catch2 to 2.13.7
- 3rd party updates of SDL (2.0.20), FreeType (2.11.1), Tcl (8.6.12), libogg
  (1.3.5) and libvorbis (1.3.7)
- Fixed FreeBSD run time crash at startup


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 you 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
CPU's. Running on other operating systems (wherever SDL runs) or CPU's 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:
- Talk to us on #openmsx on libera.chat.
- Use the forum on https://www.msx.org/forum/semi-msx-talk/openmsx
- File a ticket on https://github.com/openMSX/openMSX/issues

Thanks to all contributors for their feedback, support, bug reports, testing,
coding and other help!

Have fun with your emulated MSX!
                                        the openMSX developers
