>> Saturday, October 2, 2010
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.
- 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 size: 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.
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 and disc insertions. The extra information should generally cause it to work without the need 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.
TBA: What happens when the user doesn't have the required ROMs?
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.
It is thus possible to exchange input recording (the preferred file extension is .inp) with other people, for example to reproduce crashes or audio or video decoding bugs.
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).
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 but have different built-in MPEG cartridges (which appear to be VMPEG and IMPEG, but at different 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. These are both variations of other player types.
- Very buggy MPEG support, mainly for Gate Array MPEG cartridges (22ER9141 F1), has been added. TBA: More details.
- 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 options CCIR Limit, Plane A, Plane B and Dim Video that control the decoding of CD-i video data for display. TBA: More details.
- 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 your CD-i keyboard is actually working.
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.