FLICK FLI-format Animation Viewer v1.3 4 Jan 1995 -------------------------------------- This program plays FLI/FLC-format bitmapped animation files on any OCS, ECS, AGA or EGS Amiga running OS2.04 or higher. FLI/FLC-format files are produced by Autodesk Animator (Pro) and Autodesk 3D Studio on a PC, as well as by other programs. The files in this archive may be distributed anywhere provided they are unmodified and are not sold for profit. Ownership and copyright of all files remains with the author: Peter McGavin, 86 Totara Crescent, Lower Hutt, New Zealand. e-mail: peterm@maths.grace.cri.nz FEATURES: --------- Supports EGS Spectrum and other third-party graphics cards via EGS libraries. Runs in a draggable, overlappable window in this case. Uses AGA 256-colour screen when AGA is available. Extra-Half-Brite screen (EHB) allows reasonably good colour approximation on OCS/ECS Amigas. 16-colour screen (COLOUR4) allows reasonably good colour approximation on OCS/ECS Amigas in hires (and it's usually faster than 256-colour). Falls back to EHB (lores) or COLOUR4 (hires) when EGS or AGA are not available. Uses an Intuition-friendly Screen. You can flip it to the back, or drag it down in the usual way, while an animation is playing. Plays either from ram or directly from disk. Falls back to disk play when not enough ram is available. Works with any size or resolution FLI/FLC file. Supports double-buffering. The latest OS3.0 double-buffering functions are used if possible. Uses state-of-the-art chunky-to-planar routines. Achieves typically 90 frames/second in WARP mode on an A4000/040. Detects and uses Akiko chip on CD32 for typically 40 frames/second. Uses ASL file-requester. Runs from either icon or shell. Uses icon tooltypes for options (i.e, WorkBench Icons/Information... menu item). Source code is included, so if something doesn't work you can fix it. OPERATION: ---------- I've tried to make it easy to use in many different ways. Just double-click the FLICK icon and select an anim to play from the requester. Alternatively you can set up project icons for your anims (e.g, with IconEdit). Options can be specified either on the commandline or via icon tooltypes. From the SHELL or CLI, the syntax is: FLICK FILE/M,DISK/S,RAM/S,ONCE/S,COLOUR/S,EHB/S,COLOUR4/S,GREY/S, EGS/S,ROM/S,DBUF/S,WARP/S", If you don't specify a file, the file-requester pops up. You can specify a list of files, separated by spaces. However #? wildcards don't work. Options are: DISK: Plays from disk (i.e, plays while reading). RAM (default): Plays from RAM (i.e, loads first, then plays). ONCE: Play once, then quit. (Default is to loop). COLOUR (default): AGA 8-bitplane 256-colour mode. EHB: Extra-Half-Brite 6-bitplane mode. COLOUR4: 4-bitplane 16-colour mode (usually faster). GREY: 4-bitplane 16-grey-scale mode (usually fastest). EGS: 3rd-party graphics card via EGS libraries. ROM: Uses graphics.library WritePixelArray8(). DBUF: Double-buffer. Default is not to double buffer. WARP: Plays real fast. Default speed is what anim says. The options COLOUR, EHB, COLOUR4, GREY and EGS are mutually exclusive. The ROM option may be used in conjunction with COLOUR, EHB, COLOUR4 or GREY, but it has no effect with EGS. The ROM option might be useful with non-EGS 3rd-party graphics cards, via mode-promotion. Without the ROM or EGS options, FLICK writes directly to the Screen's bitmap, which might crash with some cards. The ROM option makes FLICK 100% RTG friendly. KEYBOARD AND MOUSE CONTROLS --------------------------- To quit an animation, press ESC, Q, q or CTRL/C, or click the right mouse button. (In EGS mode, the right mouse button must be clicked inside the window.) Keys F1 through F10 can be used to change the speed as follows: F1 as fast as possible F2 60 frames per second F3 30 frames per second F4 24 frames per second F5 15 frames per second F6 12 frames per second F7 10 frames per second F8 5 frames per second F9 1 frame per second F10 at rate specified in FLI/FLC file The + and - keys can also be used to speed up and slow down an animation while it is playing. Each press doubles or halves the current requested speed. Note: If FLICK cannot run as fast as the requested speed, you may have to press - several times before you see any slowdown. USING EGS LIBRARIES ------------------- FLICK tries to open a window on the default EGS screen if EGS libraries are installed and no overriding options are given. FLICK requires an 8-bit EGS screen. If the default EGS screen is 24-bit or another depth, FLICK gives up on EGS and falls back to COLOUR, EHB and COLOUR4 in that order. To prevent that from happening, either: o Change the default EGS screen to depth-8 with EGS-ScreenMode Prefs; or o Define the FLICK environment variable as the name of a valid EGS screen mode, e.g, SETENV FLICK "LEGSa:VGA 640x480". FLICK will then open a new screen using that mode, instead of using the default EGS screen. EGS Speed is dependent on the EGS driver installed. A GVP Spectrum card is very fast. The Amiga AGA driver is very slow. If your EGS libraries are installed with the AGA driver, use the COLOUR option or tooltype to request an Amiga screenmode. OTHER FREELY DISTRIBUTABLE FLI PLAYERS FOR THE AMIGA: ----------------------------------------------------- Other FLI viewers I know about are: Flit 1.0 by John Bickers. AmiFlick v1.05 by Garrick Meeker. Flip 1.66 by Dominik Tonn. EGSFlick 1.2 by Frank Neumann These should all be available on Aminet or orion.etsu.edu. Flip v1.66 is often faster than FLICK v1.3, but it requires AGA. WHY IS IT SO SLOW? ------------------ Have you tried the WARP option or pressed F1 yet? The default is to play at the speed defined in the anim file, which is usually slow. Have you got EGS libraries installed with the AGA driver? That will be very slow. Disable EGS (e.g, by moving the EGS monitor icon to storage and rebooting) or use the COLOUR option or tooltype with FLICK. EGSFlick 1.2 is faster than FLICK because EGSFlick decompresses all the frames into RAM first. FLICK saves memory by decompressing on the fly. Well actually I think FLICK is quite fast for what it does. FLI-format is exactly the wrong format for the Amiga. That is, everything is stored internally in "chunky" format, but the Amiga has its graphics video-memory arranged in "planar" format. All known algorithms to convert between chunky and planar format are very, very slow. FLICK incorporates several different c2p algorithms optimised for different situations. All the routines are now CPU based. There are separate c2p routines optimised for the 68000, 68020, 68040 and Akiko. All c2p routines attempt to update only parts of the display that changed since last time. If you manage to improve the algorithms significantly, or find a faster one, please let me know. For EHB, COLOUR4 and GREY modes, the program makes an extra translation for every pixel. In EHB and COLOUR4 modes the program performs a long calculation to recompute the translation table every time the colour map changes. (Note: FLICK does not recalculate the currently displayed frame with the new palette, so if the next frame changes only part of the screen then the part which is unchanged will appear in the wrong colours. Fortunately this doesn't happen very often, and it never happens in COLOUR mode on an AGA Amiga.) If you really want to see a FLI-format or FLC-format file played fast, convert it to an Amiga anim format first. The shareware program MainActor is excellent for that. Also AmiFlick can write IFF files, and some of the commercial anim utilities, like ImageFX, can convert directly from FLI to anim. BUGS: ----- Bugs? What bugs? Oh well, maybe the following can be construed as bugs: Anims with lots of colour map changes don't play correctly in EHB, GREY or COLOUR4. Can't select multiple files from file requester. Can't use #? wildcards on commandline. Stdio output window is ugly. THANKS: ------- Thanks to James McCoull for his c2p routines (which I have modified slightly). Thanks to Patrick van Logchem, Dominik Tonn, John Bickers and others for suggestions and testing. DISCLAIMER: ----------- It seems to work for me. Tested on: A3000 + 40MHz Warp engine + Spectrum EGS A4000/040 A500 + Mega Midget Racer CD32 + SX-1 HISTORY: -------- v1.0 19 Dec 1993 First release. v1.1 27 Jan 1994 Fixed some minor bugs (missing "break" statements which fortunately didn't do any harm apart from wasting some memory). Fixed bug where some structures could be left allocated and asl.library left open after certain error conditions. Use V39 Intuition-friendly double-buffering functions when possible. Added ROM option to use graphics.library WritePixelArray8(). Significantly sped up the chunky2planar routine. Got FLC-format support working for 640x480 and 480x300 resolutions. CTRL/C aborts the whole program, not just return to the file requester. Added 68040-optimised c2p routine. Added COLOUR4 mode. Compiled with SAS/C 6.51. v1.2 19 Feb 1994 Fixed bug where mode did not fall back to COLOUR4 for FLC files on ECS Amigas. Worked around SAS/C 6.51 bug in fseek/fread that caused some disk anims to fail. Disk-play now reads a frame at a time instead of a chunk at a time. Improved c2p routine for Chip-only machines by eliminating a mem copy. Fixed bug where dbuf messages weren't replied to after strange error conditions. Added support for FLI/FLC files of any resolution. Wrote a much faster routine for when only part of the display changes each frame (and made it the default). This sped up many anims by a factor of 2 or more. Added NOCOMPARE and NODBUF options. v1.3 4 Jan 1995 Changes almost too numerous to list. Replaced all c2p routines with new, much faster, OCS-friendly ones. Removed NOCOMPARE option, no longer uses blitter at all. Added support for EGS libraries, run in a window. Added + and - keyboard controls. Default is now single-buffered instead of double-buffered. Added exact-speed feature and WARP option. Right-mouse button quits. Auto-detect and use Akiko chip. Rewrote some of the chunk decoding routines in assembly. Added tooltype support. Greatly sped up code for ROM option. For ROM option, allocate bitmap in more system friendly way for gfx cards. Major code restructuring in general.