Page 1 of 1

Smacker Player for Beeb

Posted: Thu Aug 27, 2020 4:05 pm
by dudleysoft71
While developing my beebScreen library for the ARM Co-processor, I thought I'd try a little experiment with video playback, I chose smacker as a format since it's already palette'd rather than RGB format, the tools allow you to pick how many colours in the palette, and there are available decoders for it since it's part of ffmpeg's avcodec library.

Here are two youtube videos of it running, the first with VideoNULA

The second with the standard beeb palette with dithering:

The dithering feature is a part of the beebScreen library, it's designed to allow easy translation of NULA palettes into the standard beeb palette and is handled transparently by the library.

Re: Smacker Player for Beeb

Posted: Thu Aug 27, 2020 4:52 pm
by tricky
Very nice.

Re: Smacker Player for Beeb

Posted: Thu Aug 27, 2020 11:34 pm
by kieranhj
Looks great!

Is this running on a Pi copro streaming over the Tube? I’ve tried some simple delta video codecs streaming from floppy in MODEs 4 & 7 with mixed results. I’m thinking Smacker is likely going to be too heavyweight at 4kb/s + 2MHz 6502?

Re: Smacker Player for Beeb

Posted: Fri Aug 28, 2020 9:30 am
by dudleysoft71
Yeah. It relies on the arm Co-processor either the pi co processor, or the arm7tdmi Co-processor, which also includes BeenEm.

That video is running at 10fps, 12.5 is possible although occasional frames may go over the limit (it uses a delta compression algorithm that's designed to be quick to decode host side, the parasite side does the heavy lifting converting linear frame buffers and dithering).

I chose 10fps since if I wanted to make it interactive then I'd need time for the host to process input.
I've tried adding sound but unfortunately anything higher than 1khz is too much for the host to handle whilst also handling the video data as well.

Re: Smacker Player for Beeb

Posted: Sat Aug 29, 2020 2:13 pm
by RobC
This is excellent - really great stuff. Where does it load the video from? ADFS on the Beeb or from the Pi itself?

Also, I know that Dragon's Lair was ported to the TI99 using a 128MB cartridge. Would it be possible to use this to do something similar from a hard drive etc. on the Beeb?

Re: Smacker Player for Beeb

Posted: Sat Aug 29, 2020 6:57 pm
by dudleysoft71
The whole video was loaded into memory from an ADFS hard disk l, it can be streamed, I have tried streaming from the ADFS hard disk, its doable, but not ideal, its asking even more of the host and since audio is a struggle adding data loading and transfer to the mix is asking for trouble. Getting data onto the pi is a problem since the pi tube doesn't actually have any FAT filesystem code in it,it would need to be ported from the 1mhz code for BeebSCSI.

I have created a video of the entire game with the death scenes, it's 12.5 minutes long and weighs on at about 11MBytes, so it's possible to load the whole thing at once (with one long load). I want to write a tool to mark up all the clips in the video and then to create the interaction events so it becomes a playable version of Dragon's Lair. Obviously I would need to provide instructions on how to extract the video section since I wouldn't be able to provide that portion as part of the game.

Re: Smacker Player for Beeb

Posted: Sat Aug 29, 2020 10:56 pm
by RobC

If you haven't seen it already, there's a presentation on how the TI99 version was ported here.

Re: Smacker Player for Beeb

Posted: Tue Sep 08, 2020 7:33 pm
by Stwert
Holy crap, that’s awesome work. Surprisingly smooth playback, a lot better than I’d imagined was possible.