I've been working on a video codec for the TI-8x calculators (or for virtually any device with a monochrome screen) sporadically over the past couple of years. My initial target was the TI-86, but I haven't written any actual assembly code for it yet; I only have working C source for the encoder and decoder.
In my tests, I have achieved compression ratios between 55% and 88% (45% and 12% of the original file size, respectively), depending on the selected video quality. The quality is pixel-exact at 55% and is still quite good up to about 70%. Above that the quality degrades significantly (but it does produce some interesting "artist" effects ). To translate these figures to real-world numbers, a 4:44 long video at 8 fps (128x64 pixels) at 70% compression (decent quality) totals about 694678 bytes. That's an average of 307 bytes per frame, out of the original 1024 bytes in an uncompressed frame. Obviously this is a longer video than anyone would likely to store on a calculator (and about 6 times bigger than the capacity of the TI-86), but shorter videos, say 30 seconds or so, might be quite practical.
Anyway, I'm trying to find out if any other programmers would be interested in such a video codec. If so, I'll post more information about it and some animated GIFs to demonstrate the quality levels, and then I'll probably continue developing it so others can use it. Otherwise I might just abandon this project to focus on other projects.
Be forewarned, though: as I mentioned above, I haven't written any Z80 code yet, so I don't know for sure how well it'll perform. However, I did design the codec to be simple and easy to decode. The encoder, running on a real computer, does the hard work. On my slow, old computer, the encoder runs in about 20 seconds, while the decoder runs in about 2.5 seconds (both on the same 4:44 test video). The C decoder isn't even well optimized. Also, a full-screen video at 8 fps will allow over 5000 clock cycles at 6MHz per 8x8 pixel block (the codec is block-based), which I think will be more than enough. Heck, 500 clock cycles per block may be enough.
In my tests, I have achieved compression ratios between 55% and 88% (45% and 12% of the original file size, respectively), depending on the selected video quality. The quality is pixel-exact at 55% and is still quite good up to about 70%. Above that the quality degrades significantly (but it does produce some interesting "artist" effects ). To translate these figures to real-world numbers, a 4:44 long video at 8 fps (128x64 pixels) at 70% compression (decent quality) totals about 694678 bytes. That's an average of 307 bytes per frame, out of the original 1024 bytes in an uncompressed frame. Obviously this is a longer video than anyone would likely to store on a calculator (and about 6 times bigger than the capacity of the TI-86), but shorter videos, say 30 seconds or so, might be quite practical.
Anyway, I'm trying to find out if any other programmers would be interested in such a video codec. If so, I'll post more information about it and some animated GIFs to demonstrate the quality levels, and then I'll probably continue developing it so others can use it. Otherwise I might just abandon this project to focus on other projects.
Be forewarned, though: as I mentioned above, I haven't written any Z80 code yet, so I don't know for sure how well it'll perform. However, I did design the codec to be simple and easy to decode. The encoder, running on a real computer, does the hard work. On my slow, old computer, the encoder runs in about 20 seconds, while the decoder runs in about 2.5 seconds (both on the same 4:44 test video). The C decoder isn't even well optimized. Also, a full-screen video at 8 fps will allow over 5000 clock cycles at 6MHz per 8x8 pixel block (the codec is block-based), which I think will be more than enough. Heck, 500 clock cycles per block may be enough.