>> Monday, October 19, 2009
It is amazing how fast the development of the MESS CD-i driver goes and how it even helps the development of CD-i Emulator 0.52 as well. A little round up on what happened last week according to some quotes by the developers:
"I just fixed the remaining crackling audio issue via a ghastly hack: Duplicating the last L/R sample pair into an additional 8 samples of slop space at the end of the sample buffer. I'm not sure why this fixes the issue, because our DMA-driven DAC certainly shouldn't be reading off the end of the sample buffer, but the results are undeniable.
And that also fixes the long-standing CD-i Emulator "click to continue" issue on many intro animations!
There was a small bug that reintroduced an issue with Hotel Mario, where the RLE video animations do not appear in front of the correct background. I fixed it by only triggering an interrupt if EOF or EOR is set and the FORM bit is set. This should also fix an issue CD-i Emulator has where the Zelda games don't display the title screen properly. CD-i Emulator also appears to suffer from the same Hotel Mario issue as what I just introduced, so this might help nail that one down.
Right now I have it playing the first sample in Lemmings just fine, albeit poppily, where you hear a lemming say "Let's go!" when you start a level. Unfortunately, the game goes haywire when it's time to play the next sample, and it blows up with a coding type of 0xFF. I think it may be because I'm unclear on when to stop requesting data - maybe when it writes a 0xff as the coding byte?
I can get Sargon Chess running great - oh, but what CD-i Fan is telling me flies completely in the face of what it took to get it to run without freaking out, and Sargon Chess doesn't boot in CD-i Emulator, so I can't use that as a reference in this case. I can get background music running great in Hotel Mario now - oh, but when I lose a life, the game crashes because it's trying to do a DMA transfer from some crazy-assed memory location like 0x05140000. Oh, and with my changes to get sound effects "working", Zenith's menu music is truncated. Oh, and also, Pac-Panic crashes with sound effects enabled, because for some reason it tries to do a DMA with the same crazy-assed memory location. To top it all off, background music doesn't work in Lemmings, it just plays sound effects like it would if I had selected SFX mode.
How would one go developing a game for the CD-i in C, and also generating a standard CD-i disc image in the process so that I can boot it on a real CD-i or an emulator without using CD-i Link?
I ask because the more I think about it, the more it wouldn't surprise me if it would be possible to do a Star Fox clone for the CD-i. For fast flat-shaded polygons, you just need hardware RLE support, and the CD-i has exactly that. I imagine it could be done pretty simply using an RLE CLUT7 layer on top of a horizontally-scrolling CLUT7 layer for the skybox.
Despite advice to the contrary, I'm now forcing any audio sectors that match both the Channel Register and Audio Channel Register to 0x2800 / 0x3200, as it allows Sargon to boot and Compton's Interactive Encyclopedia 1992 to play videos (neither of which work in CD-i Emulator, in my experience). That said, CD-i Emulator has better audio, so... - DYUV planes have Color Key forced to true, as Color Key functionality is only defined for CLUT planes. - Added Mosaic File support. This fixes the graphics in Namco Arcade Classics and Jeopardy, allows Sargon Chess to boot and run fully playably, and videos work properly in Compton's Interactive Encyclopedia 1992. CD Shoot also appears to work well."