Release Notes for CD-i Emulator, version 0.5.3-beta10
-----------------------------------------------------

This version of CD-i Emulator is the tenth beta release for version 0.5.3,
which is now in maintenance mode as all development has shifted to
version 0.6.0 for which a first public beta release is expected soon.

This beta release can be used standalone, or you can install it over an
existing version 0.5.2 installation (both limited and unlimited editions).

To avoid overwriting the existing wcdiemu.exe file, the executable of
this release is named wcdiemu-v053b10.exe; it will co-exist alongside an
existing version 0.5.2 executable.

The files cdiroms.ini and cditypes.rul are updated versions of those
shipped with version 0.5.2; most files in the sys directory have also
been updated. All other files are either new or identical to their
version 0.5.2 counterparts, except for this RELNOTES file.

These Release Notes expand but do not supersede the Release Notes for
CD-i Emulator version 0.5.2 and earlier 0.5.3-beta versions. You can
find these in the RELNOTES-v052 file and various RELNOTES-v053b* files.

This beta executable is essentially a limited edition: CD-i emulation
is limited to three minutes between CD-i player resets unless you have
already activated an unlimited edition v0.5.2 on your machine or you're
using a Philips Mono-I player system ROM (200 F1, 210 F1, 220 F2).

The Mono-I exception is mainly intended to allow for full compatibility
tests against the MESS/MAME CD-i driver; the limited edition restrictions
will be dropped entirely for all version 0.6.0 releases.

There will be no separate unlimited edition of beta releases and
you cannot activate such releases. You can achieve the same effect by
activating an unlimited edition of version 0.5.2, however,
which is still available for sale on my website.

The beta executable will not register itself with Windows; as a
consequence the Options | Associations menu is not useful (it will
associate file extensions with the version 0.5.2 executable if one
exists on your system).

On Windows Vista and newer registering and associating file extensions
would not work correctly anyway because they require UAC elevation.

The following changes have been made between the version 0.5.3-beta9 and
this version 0.5.3-beta10 release:

- The built-in expiration date has been updated to 2027/01/01.

- Stereo CD-DA audio at 44.1 kHz was incorrectly producing mono output;
  both channels were playing left-channel audio. This has been fixed.

- CD-DA audio disc sectors were being requested with an incorrect sector
  format from disc image files; this has been corrected. As a result,
  playing CD-DA audio from scrambled disc images now works.

- ADPCM audio upsampling has been improved by replacing the previous sample
  duplication method with a polyphase post-filter, producing significantly
  smoother audio output. This is enabled by default and can be turned off
  with the -nopostfilteraudio option.

- The CD-i CDIC hardware uses the last of four duplicate sound parameter
  bytes transmitted with audio sector headers; the emulator was previously
  using the first. This has been corrected and may affect audio decoding
  for some titles.

- A DMA channel initialization problem has been fixed: DMA channel 1 was
  being treated as channel 0.

- The VSYNC interrupt bit in the FMV interrupt status register is now
  emulated correctly; this is needed for correct IMPEG and VMPEG FMV
  cartridge operation. The audio stream status register is now also
  implemented correctly.

- Video data bounds checking has been added; previously, out-of-bounds
  video coordinates in CD-i video data could cause memory access errors.

- A new -runshell option has been added to start an OS-9 shell immediately
  from ROM without going through the normal CD-i player startup sequence.
  This option only works on player ROMs that include the OS-9 shell module;
  it is intended for CD-i software developers.

- A new debugger command "unset" has been added to clear emulator variables
  previously set with the "set" command or a command-line -set option.

- A new debugger command "ei" has been added to display the OS-9 IRQ
  polling table.

- The front panel LED display for the CD-i 200 player is now supported.

- Disc image files with the .scm extension are now included in the
  disc image file selection dialog; this extension is used by some
  disc dumping tools for scrambled disc images.

- Support for pre-standard JNMS disc labels has been added; some discs use
  a disc label format that predates the published standard.

- A buffer allocation bug in disc directory and path table reading has been
  fixed; file read tracing in the debug window is therefore now enabled,
  it used to result in memory corruption crashes.

- The display of PC-relative addresses and labels in the disassembler has
  been corrected.

- The disassembler now shows size suffixes on addresses: absolute word
  addresses show .W and absolute long addresses show .L; short branch
  instructions (BRA, BSR, Bcc) now show a .S suffix.

- The parameter size specifications for the MA_Create and MA_Play OS-9 trap
  definitions as shown in the disassembler contained a typo; this has been
  corrected.

- Several OS-9 trap definitions have been added or corrected in the
  disassembler, including additional F$ trap entries; the SS_PS trap has
  been renamed to SS_SL (GetSlave/SetSlave) to match the correct OS-9
  definition.

- Clock cycle table building for branch and jump instructions (BRA, BSR, JMP,
  JSR) has been corrected; the mnemonic comparisons were failing silently
  due to a rename in the instruction table that was not reflected in the
  cycle counting code.

- The syntax help text for the debugger "d" (dump) command has been
  corrected.

- A buffer allocation bug has been fixed in the internal text formatting
  code where a negative dynamic field width could cause a buffer overrun.

- An uninitialized pointer in the slave device emulation could cause
  random crashes; this has been fixed.

- Several other minor fixes have been made: pointer initialization and
  null pointer fixes, a single-character pattern wildcard fix, a
  correction to the CD-i 490 player NVRAM size (now correctly 32
  kilobytes), a correction to the CD-i 740 IKAT firmware version, and
  a module cache invalidation fix for ScanModules.

If you have bug reports or feature requests, please use the GitHub issue
tracker at https://github.com/cdifan/cdiemu/issues; as of right now
no CD-i Emulator source code is on GitHub but eventually there will be.

For comments, questions, and discussion, you can use the #emulation
subforum of the Philips CD-i Community Discord server reachable
at https://discord.gg/TKPejTfw6D. I am known there as CD-i Fan (cdifan).

You can also reach me via e-mail using cdifan@gmail.com, but this will
not involve the larger CD-i community and is hence discouraged.

If you like my work and/or would like to support future development,
you can also send me a donation. You can send PayPal payments to
payment@cdiemu.org or use one of the following websites:

https://www.buymeacoffee.com/cdifan
https://ko-fi.com/cdifan

Have fun emulating your favorite CD-i titles!
