Finally, I can talk about this thing. I can't tell you how strange it was to see full-motion video
on my Commodore 1702 monitor.
The output of the Uzebox in this case really is impressive, even with the heavy down-sampling that is required to pull it off. This worked on my Fuzebox with a 1GB Kingston card, formatted as FAT16. The current implementation will NOT understand an SDHC card or anything formatted as other than FAT16 (like FAT32).
Uze isn't kidding about the special handling of the SD card - the video
needs to exist on the card in a completely contiguous run of sectors. In theory, a de-fragmentation pass would achieve the same effect, but I haven't tried that myself. In short, the FAT16 filesystem imposes a lot of overhead for looking up where all the fragments of a file are on the disk, as this lookup data is kept in the File Allocation Table sectors on the disk; so you have to constantly re-read/cache parts of the FAT in order to get anywhere. Indeed, this is like asking someone to pass you the butter, every time you take a bite of your dinner.
This is exacerbated by the fact that as a block-level device, the SD card simply refuses to send data in anything less than 512 byte chunks*, so open wide
This demo side-steps all that and simply treats the disk like a big virtual tape, since the SD card has a rather nice "keep sending me sectors of data until you say when" mode. This of course relies on a filesystem with zero fragmentation, since this ignores the FAT, hence the format-then-write process.
Anyway, the video
renderer itself is ridiculously simple, as it simply sends each byte it reads from the SD card straight out the video
port, at a rate of one pixel every 12 clocks. Audio is being handled in a similar fashion. IMO, the real work is being done offline, by way of pre-processing the video
data to run at the Uzebox's resolution, framerate and color space.
(*CMD18 might be coerced to stop mid sector when issued CMD12, but I haven't tried it, and it's not clear from the specs if that is a reliable behavior anyway)