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

This version of CD-i Emulator is the first beta release for version 0.5.3.

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-v053b1.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; you should also read those (you can find
them in the file RELNOTES-v052).

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 CD-i driver; I haven't decided yet for how long
this exception will be maintained.

With this beta executable you cannot save the contents of NVRAM such as
high scores and other CD-i title settings.

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.

When the beta cycle is over a seperate unlimited edition of the final
version 0.5.3 version will be made available.

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.

This release would probably not have happened in the current timeframe
were it not for the CD-i driver effort of MESS/MAME. This has certainly
catalyzed development and a number of emulation compatibility fixes
and new features have been modeled on or developed in tandem with MESS.

This version of CD-i Emulator incorporates source code from MAME/MESS
(specifically, the lib/util directory and parts of the osd and
osd/windows directories). This is used to support the CHD file format
and the writing of AVI and PNG files. Such re-use is allowed by the
MAME/MESS license for these sources which is basically BSD; the full
license conditions are described in detail in the file MCOPYING.

The following changes have been made between the version 0.5.2 and this
version 0.5.3-beta1 release:

- The minimum operating system requirement is now Windows XP, due to
my switching to Visual Studion 2010 for development. The visual look
of CD-i Emulator has also been upgraded to Common Controls version 6
(needed to display proper UAC icons on Windows Vista and later).

- A number of emulation compatibility problems have been solved. All of
them apply to Mono-I CD-i systems (200, 210 F1, 220 F2), most of them
apply to Mini-MMC CD-i systems (205, 60x, 205/910) and several apply
to all CD-i systems.

- Support for CHD (Compressed Hunks of Data) disc images has been
added. This is the native disc image file format of MESS/MAME; its
main advantages for CD-i Emulator are cross-emulator compatibility and
smaller file sizes. Emulating from CHD files is also somewhat slower
because of the required on-the-fly decompression.

- Support for writing the decoded audio and video streams to various
file formats has been added. The current version includes support for
(uncompressed) WAV, (uncompressed) AVI and (compressed) PNG files.
Use the appropriate -writexxx option for this.

Each uncompressed video frame written to the AVI file takes a little
over 1.2 MB, which results in large file sizes: about 61MB per second.
These numbers are for PAL (50Hz), for NTSC (60Hz) they are a little over
1.0 MB per frame and about 63 MB per second. In contrast, a second of
uncompressed audio is about 172 KB.

You can write a silent AVI file with the -writesilent option; this can
be combined with the -writeavi or -writepng options to write separate
audio and video streams.

Note that with WAV file writing, silent periods (where the CD-i title
doesn't play any audio) are not written to the file.

You can limit the AVI file size by using the -writescale or -writerate
options to reduce the number of video frames per second or the size of
each frame.

With -writepng you need to use one of the macros $time$ or $seq$ in
the file name, otherwise every video frame will be written to the same
PNG file. You can limit the file size with -writescale and the number
of files with -writerate.

The -writeview option controls which view is written out; the default
is to write the full CD-i Emulator window (including window borders,
menu and the toolbar, if visible). Use -writeview video to write only
the CD-i video.

The Emulate | Write... and Emulate | Stop Write menu choices are not
yet functional.

- Support has been added for recording and playing back files containing
CD-i input events such as pointing device movements and clicks, keyboard
presses and disc insertions.

The -record option writes a file containing timestamped input events,
prepended by all the extra information required for faithful playback
which includes things like CD-i player model, DVC cartridge type,
extension roms, PAL/NTSC and special startup options.

The -playback option will read such a file and play back the recorded
input events including disc insertions. The extra information should generally
cause it to work without needing to fiddle with emulator options to
reproduce the exact recording environment.

It is also possible to play back on a different CD-i player model or with
a different DVC cartridge or differing startup options. Command-line
options will override recorded information, and input channels are
somewhat "intelligently" matched to the available input devices.

Recorded disc insertion events contain both the full path to the disc
image file and the title of the disc; during playback CD-i Emulator will
use the full path if possible. If the disc image file does not exist, the
disc title will be used to search the list of recently used disc images.
If no unique match can be found, the file selection dialog will appear to
allow the user to manually select or browse for the disc image.

It is thus possible to exchange input recordings (the preferred file
extension is .inp) with other people, for example to reproduce crashes
or audio or video decoding bugs.

In a future version it will be possible to annotate the recordings and
have the annotations displayed during playback.

You can also use input playback to offline write full-rate full-quality
AVI or PNG files from a CD-i Emulator session, this is generally not
possible in real-time. In this case, use the -playback option together
with -noskip and -nowait.

If you intend your input recording to play back on all CD-i player models,
you should use the -playcdi option to avoid recording the CD-i player
shell because it differs between models. This means that you have to
select the disc image to be inserted before starting the emulation
(use either the -disc or the -selectdisc option or the corresponding
menu choices). You should also explicitly specify -pal or -ntsc.
Note that many ROMs do not allow PAL/NTSC selection; it depends on the
CD-i title if this makes a difference during playback.

The current input recording file format uses a single 32-bit field to
record event times as CPU cycle count; with a clock frequency of 15 MHz
this field will wrap around in 4 minutes and 46 seconds. The internals
of CD-i Emulator require that at least one event is recorded every
two minutes, otherwise playback will lose synchronisation. This will
be fixed in a future version of the file format.

- Minimal support for a number of new player system ROMs has been added:
Philips CD-i 370, DVS VE-200 and LG GDI-700. All of these players use
the "Portable CD-i" board using the 68341 "Integrated CD-i Engine" but
have different built-in MPEG cartridges (which appear to be VMPEG and
IMPEG hardware, but at different memory addresses). These players will
currently boot into the player shell. However, there is no pointing
device support yet so it ends there. The Movies section of the CD-i
Emulator website has YouTube movies of these players booting.

- Proper detection and full emulation of the following player ROMs has
been added: Philips CD-i 200 F1, Philips CD-i 220 F1 and Philips FW380i. 
These are all variations of other player types.

- Support for online compatibility reporting has been added.
You can use the Help | Report menu choice to display detailed
information about the currently emulated CD-i title and CD-i player;
there is also a link to the Report section of the CD-i Emulator
website that will automatically fill in the detailed information.

Reporting about the compatibility of CD-i Emulator has never been easier!
The first time you will have to identify yourself (preferably using
your nickname or handle); after that it's just a matter of selecting
the compatibility level and clicking Publish report.

- Proof-of-concept MPEG decoding support has been added.
This is only implemented for Gate Array MPEG cartridges (22ER9141 F1).
It works best with the AH01 version but later versions sort-of work
also (I don't have an AH00 version to test). The newer VMPEG and IMPEG
cartridges will boot but will usually hang the player at the first MPEG

There are still major bugs in the buffering of MPEG data; currently at
most a single playback operation appears to work. For several titles
this means that the Philips Media bumper animation will play but no
other MPEG, other titles won't even get that far.

The best working title I've found so far is Lucky Luke; it plays the
Philips Media bumper animation (which is MPEG audio and video from disc)
and also the "piano sequence" just before a level (which is MPEG audio
from memory); at the first MPEG sound effect it appears to crash.
The Movies section of the CD-i Emulator website has a YouTube movies of
Lucky Luke playing on a CD-i 605 with an AH01 cartridge.

For now, MPEG video is always centered in the display with a magenta
backdrop color; it depends on the CD-i title if this is visible.

- The Decode menu contains a new option Flush Audio. This can be useful
on fast hardware when audio starts to lag behind.

- The Decode menu contains new toggles CCIR Limit, Plane A, Plane B
and Dim Video that control the decoding of CD-i video data for display.

CCIR limiting is now on by default (it wasn't in previous versions)
which matches the actual CD-i hardware and fixes some artifacts,
but it results in a not-quite-black backdrop of RGB(16,16,16). The
Decode | CCIR Limit menu toggle allows you to turn it off when not
needed or wanted.

You can use the Decode | Plane A/B menu toggles to capture sprites
for many games by turning off one of the frames (sprites are usually
displayed in one of the planes with the other one being background). 

- CD-i keyboard emulation has been added.

There are to my knowledge only a very few titles out there that support
a CD-i keyboard, all of which require the DV cartridge are thus not
(yet) supported by CD-i Emulator.

However, there is (very rudimentary) keyboard support in the Philips
player shells, just enough to verify that the CD-i keyboard is actually

The "old player shell" (found on 60x, 200, 210 F1/F2, 220 F1/F2/F3
and 350) supports the "p" key (lowercase only!) as equivalent to
clicking the "PLAY CD-I" button.

The "new player shell" (found on 210 F3 and up, 220 F4 and up, 4xx, 615,
660 and 740) supports any key to abort the introductory animation.

Supposedly one or both player shells also support the keyboard for naming
favorite track selections, but I haven't verified this.

- You can now control the CD-i pointing device with the keyboard
using the arrow keys (four directions) or the numeric keypad (eight
directions). The [Space] and both [Enter] keys will press button 1,
the [Backspace] and numeric keypad [+] keys will press button 2 and
the [Esc] and numeric keypad [-] keys will simultaneously press buttons
1 and 2. The -keydelta option can be used to control the movement
speed of the pointing device.

There is currently no way to change the key mapping.

- The -[no]wait and -[no]skip options can be used to control frame waiting
and frame skipping (both of these are on by default).

Normally, CD-i Emulator will attempt to maintain real-time emulation
by waiting after frame display or skipping frame decoding, when necessary.
The former is needed on faster computers, the latter on slower ones.

Use of the -nowait option can make your CD-i title unplayably fast and
it will also cause the audio to lag behind if the title plays continuous
audio (most games do). The Decode | Flush Audio menu choice can be used
to catch up in this case.

The -noskip option can be used to avoid accidental frame skipping
on fast hardware or when writing video frames to a file.

- The Emulate | Step menu choice has been added to allow frame stepping
of the emulator. This can be useful to examine or capture animations.

- The Windows cursor is now hidden by default; pressing the [Ctrl] key
will now always display the Windows cursor and free it from emulator
control so that you can use it to select menu choices or click toolbar
buttons. This works much better then the trick with the [Alt] key
(which depends on Windows menu selection behaviour but still works).

- Display of DCP instructions in the debug window now checks for all
reserved bits having their proper values as an aid to CD-i title
developers (inspired by a weird bug during Frog Feast development).

- When dumping DCP instructions in the debug window, you can now specify
that the dump should follow the DCR and/or VSR reload instructions as the
video hardware does.

- There are new pseudo-registers DCPA/B, FCTA/B and LCTA/B in the debug
window usable to specify the start address for dumping DCP instructions.
If you use these, DCP line and index numbers will be tracked in the dump.

- When displaying processor clock tables in the debug window, you can
now specify an HTML format dump.

- Tracing of OS9 system calls in the debug window has been improved
in many small ways; an F$Send call will now symbolically display the signal
being sent as determined from earlier OS9 SSig or FMV Trigger calls.
This is especially useful for FMV signals because these use bitmasks and
are otherwise very tedious to decode by hand.

If you have bug reports, comments or suggestions please post them on
the CD-i Emulator Support Forum at
(you will need to register) so that other people can also find the

Have fun!