_____ __ _____ _____ _ _____ _ ___ ___ ___ __ _ | __| | | | _ | |___ _ _ ___ ___ | __ |___ ___| |_|_ | . | _| | | |_|___ _ _ _ _ | __| |__|- -| __| | .'| | | -_| _| | __ -| . | . | '_|_ | . | . | | |__| | | | |_'_| |__| |_____|_____|__| |_|__,|_ |___|_| |_____|___|___|_,_|___|___|___| |_____|_|_|_|___|_,_| |___| fliplayer.c "BOOK386 Linux video player" silent-movie style FLI player Plays an Autodesk Animator FLI film (320x200, the kind ppm2fli writes) with a piano accompaniment synthesised live on an AdLib / OPL2 / OPL3 card by a Reality Adlib Tracker (RAD v1.0) player -- like a pianist playing along to a black-and-white comedy in a 1920s picture house. Title cards open and close the show, and the picture can be tinted grey or sepia and given a slight projector flicker. The RAD tune is NOT built in: you always supply your own module with -t (or play without music with -m). Made for a 386SX-40 with no FPU: integer code only, the film is decoded into RAM and only the changed rows are copied to the (slow) ISA VGA, and if the machine falls behind the picture drops frames to stay in step. The music is ticked at 50 Hz from a SIGALRM timer, independent of the drawing speed. Plain C89 for gcc 2.7.2.3 Build: gcc -O2 -m386 -fomit-frame-pointer -o fliplayer fliplayer.c -lvga Run as root (OPL ports + svgalib): ./fliplayer -t tune.rad [options] movie.fli -t tune.rad the RAD v1.0 module to play (required, unless -m) -p port OPL base port in hex (default 388) -T "text" title shown on the opening card (default: file name) -d ms override the frame delay stored in the FLI -g black & white (grey palette) -e sepia tint -k projector flicker -l loop the film forever (no closing card) -n no title cards -v wait for vertical retrace (no tearing, lower fps) -m mute: no music, no OPL access (no -t needed) -f skip OPL chip detection Keys while the film runs: SPACE pause / resume (the piano falls silent while paused) LEFT jump back 5 seconds (works while paused too) RIGHT jump forward 5 seconds (works while paused too) ESC or q quit Jumping back needs earlier screens, and a FLI file has no index (every frame is a delta), so the player keeps up to MAX_SNAPS snapshots of the screen in RAM (~65 KB each, spaced 5 s apart and thinned out automatically on long films) and re-decodes from the nearest one. Now in order to generate the fli movie you need a recent machine to do the conversions (anything that ffmpeg supports should be convertable really to the fli format) Make a film with: video_to_fli.sh movie.mp4 movie (this needs ffmpeg, imagemagick and ppm2fli (ppm2fli sources included) Sample fli videos in VIDEOS