CYBERANIM IFF/ANIM-format Animation Player v1.0 8 Sep 1996 ----------------------------------------------- This program plays IFF ANIM3/5/7-format bitmapped animation files on any Amiga+GfxCard with OS3.0 or higher and CyberGraphX V2.18 (40.89) or higher. In general, it can play any IFF ANIM3/5/7-format animation in a different screen mode than intended. It is most useful for playing AGA 256-colour animations on an ECS Amiga with a gfx-card. 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: p.mcgavin@irl.cri.nz (unable to answer mail until mid October) FEATURES: --------- Uses an Intuition-friendly Screen. You can flip it to the back with left-Amiga M, while an animation is playing. Plays either from ram or directly from disk. Falls back to disk play when not enough ram is available. Uses an ASL ScreenMode requester. Supports Extra-Half-Brite (EHB) animations. Uses a double-height Screen and ScrollVPort() for double-buffering. Dragging the Screen up and down (left Amiga left mouse button drag) will reveal both buffers. Note that this method of double-buffering mightn't work properly before CyberGraphX V2.18 (40.89). Make sure you have an up to date version of CyberGraphX or you might see only every second frame. Renders to fastmem bitplanes, then blits to the Screen using gfx-card friendly BltBitMapRastPort(). Blits only the parts of each frame that changed since the previous frame (actually the 2nd-previous frame). Runs from either icon or shell. Uses icon tooltypes for options (i.e, WorkBench Icons/Information... menu item). Playback speed can be controlled with F-keys. Source code is included, so if something doesn't work you can fix it. LIMITATIONS: ------------ Does not support HAM or HAM8 in CyberGraphX modes (although they can be played in the wrong colours). Double-buffering is not synchronised with the gfx-card video beam in CyberGraphX modes. There seems to be no supported way of doing this. My experiments seem to indicate that WaitTOF() still uses the native chipset vblank, which is out of step with the gfx-card vblank. If flicker is a problem, as it is with certain animations on my GVP Spectrum gfx-card, try using the WAITTOF option or try "setenv CYBERGRAPHICS/CPUP2C 1". However these will slow down animations and other graphics operations. Palette changes are not synchronised with the CyberGraphX video beam either, so animations with palette changes may flicker too. CYBERANIM doesn't cope with all anim7-format files, e.g, if the first frame is a DLTA chunk instead of a BODY chunk. When looping an animation, CYBERANIM assumes the last 2 frames restore the first 2 frames exactly. If that is not the case, the animation may jitter and/or garbage may appear on the display the 2nd and subsequent times around. CYBERANIM does not support masks, colour ranges or sound. CYBERANIM ignores unrecognised IFF chunks. Some corrupt anim files may crash CYBERANIM (although most won't). OPERATION: ---------- I've tried to make CYBERANIM easy to use in many different ways. Just double-click the CYBERANIM 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 in icon tooltypes. You can set default tooltypes in the program icon and override them temporarily with tooltypes in any project icon. From the SHELL or CLI, the syntax is: CYBERANIM FILE/M,DISK/S,RAM/S,ONCE/S,WARP/S,NOMODEREQ/S,WAITTOF/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). WARP: Plays real fast. Default speed is what anim says. NOMODEREQ: Tries to guess the best Screen mode to use. WAITTOF: Attempt to avoid flicker. KEYBOARD AND MOUSE CONTROLS --------------------------- To quit an animation, press ESC or Q or click the right mouse button. CYBERANIM also stops when it receives a CTRL/C break signal, e.g, by typing CTRL/C in the Shell window or by using the AmigaDOS BREAK command. Keys F1 through F10 can be used to change animation 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 the speed specified in the anim file WHY IS CYBERANIM 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 often quite slow. What kind of Amiga do you have? CYBERANIM is significantly faster on faster Amigas. Fast memory helps a lot too. What resolution is the anim file? 320x200 is up to 5 times faster than 640x512. In CyberGraphX modes, CYBERANIM unpacks each frame to a temporary buffer in fastmem then blits that buffer to the Screen. Since BltBitMapRastPort() blits only rectangles (BltMaskBitMapRastPort() seems to be slower), CYBERANIM generally blits more than the parts that changed since the previous frame. Other animation players (and CYBERANIM using native modes) unpack each frame directly to the Screen. The latter method is faster but it is not compatible with gfx-cards. On the other hand, CYBERANIM does not use slow chipmem at all in CyberGraphX modes. Anim-format is exactly the wrong format for chunky gfx-cards. That is, everything is stored internally in "planar" format, but the gfx-card has its graphics video-memory arranged in "chunky" format. Algorithms to convert between chunky and planar format are slow. CYBERANIM uses the conversion algorithms built in to CyberGraphX to convert from planar to chunky. CyberGraphX uses the gfx-card's hardware for this if the environment variable CYBERGRAPHICS/CPUP2C is set to 0, otherwise it uses a software algorithm. Note also that animations with less than 8 bitplanes play faster than 8 bitplane animations in native modes, but not necessarily in CyberGraphX modes. That's because there is less memory to move around with less bitplanes in planar modes. This is an advantage planar has over chunky and one of the reasons Amigas have always been so good at animation. BUGS: ----- Bugs? What bugs? Well there probably are bugs because I only started writing this program a few days ago and it hasn't been extensively tested yet. THANKS: ------- Thanks to Frank Mariak and the rest of the CyberGraphX team for CyberGraphX. (By the way, I am not associated with CyberGraphX development, just a satisfied user...) DISCLAIMER: ----------- It seems to work for me. Tested on: A3000 + 40MHz Warp engine + GVP Spectrum EGS & CyberGraphX A4000/040 + CyberVision64 & CyberGraphX HISTORY: -------- v1.0 8 Sep 1996 First release.