>> Thursday, July 26, 2007
And another story by our CD-i developers team: Charles and cdifan! "While developing Frog Feast, I (well we, hello CD-I Fan!) stumbeld on a video mode only present on Mini MMC based boards. There is a 320x224 (or 256 in PAL ) mode supported on the systems such as the 205/910, 350 and, 605. This may be present in other models, but it didn't show up, in the Frog Feast tests. This is what caused the corrupt display experience by a few people. This mode matches the resolution of game systems such as the Sega Genesis/CD and TurboGrafx 16 and, Amiga/Atari ST computer systems. I'm not sure this is a fully supported mode even on the Mini MMC based boards, as there was some pixel garbage in the lower border area, that could not be cleared out."
"If the MCD212 chip was based on a previous chipset, it may've been left over functionality from the earlier chip. There's a document somewhere that details the chips used in each CD-i model. Since the MCD212 was used in other models, the RTOS must not allow the bits to be left unset in other models.
I started investigating why Frog Feast was not displaying correctly on my CD-I 605, and was able to determine the width and height, by drawing lines. Looking into the Balboa source I found both parts of the cause, but didn't put them together. CD-I Fan replied with an e-mail containing both pieces of information, which got me looking at the Green Book again. I noticed that I had overlooked the bit in the 'reload display parameter' instruction, I'd already noticed and corrected the bits in the 'image coding method' instruction.
Although Balboa isn't a good library for game development, it does provide source code that would help a programmer understand CD-I programming. It provides the correct way to interface with the CD RTOS. Unfortunately for me, I found it too late in the process."
cdifan: "The Green Book explicitly defines the above three bits as required to be set, but does not tell you what happens if you forget to set them. Well, Charles found out the hard way: on Mini-MMC hardware you get a different video resolution; on later hardware it has no effect. I suspect that on Maxi-MMC hardware (CD-i 18x series) the effect would have been similar.
Charles actually happened to confirm both my best hopes and worst fears about using CD-i Emulator for development. He found the various tracing and debugging aids (which are much more powerful then whatever was available at the time) invaluable, but also managed to get stuck on the differences between the emulator and "real hardware" in several cases (some of which were bugs in CD-i Emulator, but others where not).
The experience has been enlightening and got me thinking about ways to support developement with the emulator. Bitwise validation of the Display Control Program was easy to add and presto, out rolled the three bits! Of course, Charles had already noticed them by bitwise comparison of DCPs from various other CD-i titles including the early Balboa version of Frog Feast, which speaks volumes about the amount of effort he must have thrown at the problem. Hats off!
About the various hardware versions... Some of this is documented in the Technical Notes series which should appear on ICDIA sometime soon. Early CD-i models used a separate decoding chip per video plane, called VSC (Video System Controller?) on Maxi-MMC and VSR (Video System Revised?) on Mini-MMC, with another chip called VSD (Video System Decoder?) used to combine the outputs of the two video planes. This chipset generation supports the weird resolutions in hardware, but I have not been able to find any software support for it. It may have been a holdover from early development or an attempt to make the chipset reusable for other purposes as well.
The Motorola MCD212 reimplemented the functions of these chips on a single chip called VDSC (Video Decoder and System Controller), and I guess in the reimplementation the "undocumented" functionality got dropped. The VDSC is used in all CD-i players from Mono-I on.
ICDIA has a Comparison table of all Philips and Philips-build consumer CD-i players listing the board types of each CD-i player; the Player Support section of the CD-i Emulator website shows the board types of each CD-i player in the tooltips; the CD-i Types section lists the chipsets used in each board type."
If you want more info: Check the forum.
By: Charles Doty, cdifan