Sunday, November 15, 2009

Soundmap interrupt timing (II)

Yesterday I did some thinking about the Lemmings sound issue and concluded that the soundmap interrupt timing of the hardware was very different from the one in CD-i Emulator (and MESS CD-i). Today I set out to correct this.

After the timing was right (which turned out to be two separate issues) there was still a sound issue, because every other Lemmings sound buffer was silent. This turned out to be caused by a misassumption on my part: a hardware register that I had assumed was the actual sound playback address turned out to be just the starting address for a new play operation (I concluded this because the register keeps getting reset to the same value, even though sound is active and the DMA buffer addresses keep properly alternating).

A whole lot of CD-i titles suddenly work much better or even apparently perfect:
- Lemmings now has background music and appears to play perfectly.
- Burn:Cycle appears to play perfectly.
- The professional title that was my 05140000 crash testcase plays perfectly.
- Sargon plays much better (it has frameskip issues).
- Escape from CyberCity menu screens now work (the actual game doesn't start).
And several other soundmixing titles still appear to work okay!

The code is still a bit messy and needs to be cleaned up, but I'm spent for today so it will have to wait a bit.

After the cleanup I will continue working on the WAV and AVI writing functions; these and input record/playback are the last issues holding up the beta release.

No comments:

Post a Comment