CD-i Emulator progress: MPEG decoding, save/restore points, ROM-less emulation
A lot of work has been done on CD-i Emulator in the last month. Cdifan recently posted a very detailed report of his progress, which you can find on his cdibits blog. I've filtered the interesting parts for the blog. Be sure to read the Cdibits blog for the details: It's a tough job to shrink the text into a small size!
Cdifan: "Last January an annoying date-checking bug was found which forced me to release beta2 somewhat earlier than anticipated. After that I did no further work on CD-i Emulator. I resumed CD-i related work in early August. First I spent a few days on Walter Hunt's OS-9 port of gcc, what could be useful for homebrew activities: it's a much more usable C compiler and I intend to use this for ROM-less emulation validation some day.
After that I had another go at the Digital Video cartridge emulation. At the point where I left off last year the major stumbling block was the presumed picture / frame buffering logic of the MPEG video driver. I decided to once again attempt to get "CD-i Full Motion Video Technical Aspects" working. I had previously tried to run this disc on CD-i Emulator, but it always crashed for an unknown reason that I attributed to MPEG device emulation problems. Now that it's fixed some other titles have probably started working but I haven't tested that.
You might think that all of the difficulties are with the MPEG video decoding and that is indeed mostly true. There is currently just one known problem with the MPEG audio decoding: the audio isn't properly attenuated as specified by the driver. This causes little audio distortions at some stream transitions and when buffers run out.
During testing, I often have to do the same exact sequence of mouse actions to get a CD-i application to a problem point and this is starting to be annoying. The obvious solution is a full emulation state save/restore feature, which I've given some thought and started implementing. It's nowhere near finished, though. During the MESS collaboration I spent some time investigating the MESS save/restore mechanism. If at all possible I would love to be compatible for CD-i emulation states, but it turns out to be quite hard to do.
I also made some progress on the ROM-less emulation front. First I spent some time reading up on the internals of OS-9 file managers. I need to implement cross-module calling first. It's not really hard in principle, the design has been done but there are a lot of little details to get right. When cross-module calling is working, I have to find some way of integrating it in the user experience. You could always start over without any NVRAM files, but I'd like to have some way of migrating files between the two possible locations without having to run CD-i Emulator with weird options.
I did some work on saving CD-i IFF image files for each emulated video frame. The motivation for this was to bring full-resolution real-time frame saving into the realm of the possible. The data is written out fine, but it's still too slow. That being so, I am not really very motivated to extend the CD-i IFF decoding. So there is still a lot of work to be done, but it's all quite interesting and will provide for some entertaining evenings and weekends in the coming weeks or possibly months."
[Thanks, cdifan, CDIBITS]
0 comments:
Post a Comment