Viewtek A freely distributable picture and animation viewer for the Amiga Written by Thomas Krehbiel (Another fine UBTASITE product) Copyright © 1992,1993 Thomas Krehbiel All Rights Reserved (Notice how the 'tek' in Viewtek is not capitalized in any way.) Distribution, Copyright, Etc. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The Viewtek executables and documentation are Copyright © 1992,1993 by Thomas Krehbiel, All Rights Reserved. Viewtek is NOT public domain. The author retains all rights to the program. See "Distribution.doc" for details about distributing Viewtek. Disclaimer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ No warranties of any kind are made as to the functionality of this program. You are using it at your own risk. Note ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This documentation assumes a basic familiarity with AmigaDOS and the Amiga interface. If you aren't familiar with the concepts of files, directories, gadgets, windows, etc. you should consult your "Introduction to the Amiga" manual. Another excellent source of information is your local Amiga users group. Brief Note On Viewtek 1.05 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Viewtek 1.05 was distributed with the ImageFX 1.5 release. Think of it as sort of a precursor to this version. It was not a complete Viewtek release. Please distribute this version instead of 1.05. Introduction ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Viewtek is an picture and animation viewer utility designed for Workbench 2.0 and up. It started out as a pretty simple project, but naturally it's developed into a large shambling behemoth of a program (well, sort of). Quickstart ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From Workbench: Double-click the VT program icon, and select one or more files from the resulting file requester to view images or animations. From CLI: Type VT followed by one or more image files or directories. Use the left mouse button to proceed to the next image when viewing a batch of images. Viewing Commands ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ESCAPE Abort viewing immediately. BACKSPACE Abort viewing current directory (when using 'ALL'). LMB/RMB Go to next picture (unless using the 'NOCLICK' option). SPACE Will hold on the current picture, when using DELAY. S Will save the currently displayed picture as an ILBM (you will be asked for an output filename). This only works on pictures; not animations (yeah, I know it would be nice to save frames from anims, but gimme a break here... I've only got 2 hands. :) ANY KEY Go to next picture. CTRL+Arrows Move image/anim around on the display (overscan position). Up Arrow (Anim Only) Return to beginning of the animation. Right Arrow (Anim Only) Pause/single step animation. Down Arrow (Anim Only) Resume playing animation after paused. C (Anim Only) Toggle "continuous" mode. F1 (Anim Only) Play animation as fast as possible. F2 (Anim Only) Play animation at 60fps. F3 (Anim Only) Play animation at 30fps. F4 (Anim Only) Play animation at 24fps. F5 (Anim Only) Play animation at 15fps. F6 (Anim Only) Play animation at 12fps. F7 (Anim Only) Play animation at 10fps. F8 (Anim Only) Play animation at 5fps. F9 (Anim Only) Play animation at 1fps. F10 (Anim Only) Play animation at rate specified in ANIM file. Useage From CLI ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Viewtek generally works better from CLI (assuming you can type), since you have more options immediately available to you. The basic syntax is: VT [options] Typing VT ? will give you a brief, jumbled display of all available options like so: Files/M,AL=All/S,BU=BufSize/K/N,CF=Config/K,CL=Clip/S,CO=Cont/S, DE=Delay/K/N,DF=Default/S,DI=Disk/S,DT=DataTypes/S,FO=Forever/S, FP=FPS/K/N,HD=Hide/S,HI=Hires/S,IC=Iconify/S,IL=ILBM/S,IN=Info/S, LA=Lace/S,LM=LowMem/S,LO=Lores/S,LP=Loop/K/N,MA=MaxFrames/K/N, NB=NoBusy/S,NC=NoClick/S,ND=NoDisk/S,NL=NoLace/S,NS=NoScroll/S, NT=NTSC/S,PA=Paused/S,PL=PAL/S,PO=Pointer/S,QU=Quiet/S,RE=Repeat/K/N, S7=Super72/S,SA=Save/K,SC=ScreenMode/K,SP=Speed/K/N,SU=SuperHires/S, UN=UnderScan/S,UT=Unit/K/N: See "Option Keywords" below for details about all available options. Useage From Workbench ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Viewtek may be run from Workbench in several ways. 1) Double-clicking on the Viewtek icon will bring up a requester asking for one or more files to view. 2) You may use extended selection to highlight several picture or animation icons and, while holding shift, double-click on the Viewtek program icon. The files selected will be shown. 3) You may set Viewtek as the default tool for any picture or animation icon. See "Option Keywords" below for tool types that you may use in either the Viewtek icon or any picture project icon. Option Keywords ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ These options are available on the CLI command line, via. Workbench tool types, or in the configuration file. Note that the abbreviations only work on the CLI command line; you must spell the options out from Workbench or in the configuration file. File Handling Options ~~~~~~~~~~~~~~~~~~~~~ Files/M (CLI only) One or more files, directories, or patterns. If you give VT a directory, all files in that directory will be shown (in no special order). Standard AmigaDOS wildcards are supported. Basically, anything that is not a recognizable option is assumed to be a file spec. AL=All/S Tells VT to recursively enter subdirectories. CL=Clip/S Read image from clipboard. DE=Delay/K/N Number of seconds to show each picture or animation before automatically proceeding to the next one. The timer doesn't start until *after* the picture or animation has been loaded. DT=DataTypes/S Force VT to use Datatypes to identify and display files (normally datatypes is the last thing checked before giving up on a file). This lets you, for example, use a datatypes GIF converter instead of the one built into VT. DefaultDir/K (Workbench or Configuration File only) (2.0) Specify the directory where Viewtek will open its initial file requester. FO=Forever/S Repeat showing the list of files given on the command line forever and ever amen (and/or until cancelled). IL=ILBM/S Force VT to assume all files are ILBM pictures. In case you only want to show the first frame of an animation and not the whole thing. NC=NoClick/S (2.0) Disable the standard method of using the mouse buttons to skip to the next picture. With this option enable, you will have to use the keyboard. RE=Repeat/K/N Repeat showing the list of files given on the command line the number of times specified (or until cancelled manually). SA=Save/K Save the resulting image that VT renders to a displayable ILBM file. Makes VT into a (*very*) simple file conversion utility. (NOTE: I have no plans to turn VT into a killer awesome amazing wonderful convert-anything-to-everything- else file converter.) UT=Unit/K/N Specify clipboard unit when showing contents of clipboard. Animation Options ~~~~~~~~~~~~~~~~~ BU=BufSize/K/N Sets the buffer size when playing animations directly from hard drive, in KB (ie. BUFSIZE 128 == 128KB). VT actually allocates 3 of these buffers, so don't get too crazy. Also see the notes on playing animations from disk elsewhere in this document. CO=Cont/S Force animations to be considered "continuous". My definition of a "continuous" animation is one that has those two looping frames stuck on the end (like the kind that DPaint always creates). Normally, VT will only consider an animation to be continuous if a DPAN chunk is found. DI=Disk/S Force animations to be played directly from disk. FP=FPS/K/N Specify animation playback rate in frames per second. LP=Loop/K/N Number of times to loop an animation before continuing on with the next file. Normally, VT will loop until you tell it to stop. MA=MaxFrames/K/N Maximum number of frames to read from an animation. This is handy if you don't quite have enough memory to load an entire animation, or for some reason the anim is corrupted beyond repair halfway through; VT will only read in the number of frames you specify before going on to show it. ND=NoDisk/S Never show animations from disk. Normally, VT will try to play an animation from disk if it sees you don't have enough memory to play the animation from RAM. SP=Speed/K/N Specify animation playback rate in jiffies per frame (one jiffy is 1/60th of a second). PA=Paused/S Begin animations in paused mode; you must hit the right or down arrow to actually begin playing the animation. Display Mode Options ~~~~~~~~~~~~~~~~~~~~ DF=Default/S Force pictures and animations to use the DEFAULT monitor id. This is handy when you have mode promotion on, but a picture you are showing is hard-coded as NTSC... this option forces the picture to use the default monitor id, which in turn causes it to be mode promoted. HI=Hires/S Force pictures and animations into HIRES. Use with caution; some viewmode combinations are not allowed on non-AGA machines. LA=Lace/S Force pictures and animations into INTERLACE. LO=Lores/S Force pictures and animations into LORES. NL=NoLace/S Force pictures and animations into NON-INTERLACE. NS=NoScroll/S Disable autoscrolling large pictures. Why? Beats me. NT=NTSC/S Force pictures and animations to use the NTSC monitor id. PL=PAL/S Force pictures and animations to use the PAL monitor id. S7=Super72/S Force pictures and animations to use the SUPER72 monitor id. Generally only useful on AGA machines. SC=ScreenMode/K Specify the name of any available screen mode to show pictures and animations in. The name must be exact, as shown in the preferences ScreenMode program (be sure to put quotes around the name if it has spaces in it). Case is not sensitive. SU=SuperHires/S Force pictures and animations into SUPERHIRES mode. UN=Underscan/S (1.05) Disables overscan for any pictures or animations that VT shows, this lets you see all the way to the edges of super bitmap pictures. Miscellaneous Options ~~~~~~~~~~~~~~~~~~~~~ HD=Hide/S Hide images while they are being decoded. Normally, VT shows you the images while they are being read; this option causes VT to only show you the images when they are completely decoded. You probably want to set this for slideshow-style presentations. IC=Iconify/S Start VT in iconified mode. When iconified, a little AppIcon appears on your Workbench, where you can drag image icons to view them. Double-clicking the icon gives you options for quitting or showing files interactively. IN=Info/S Only display information about files, do not actually display them. LM=LowMem/S Disable double-buffering of pictures. Handy if you don't have a lot of chip memory. NB=NoBusy/S Do not show a busy pointer at any time. PO=Pointer/S Do not blank the mouse pointer when showing pictures. QU=Quiet/S Do not print any information to the shell. Useage From Directory Utilities ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Viewtek works well in combination with many directory utilities. At least, so I've been told. :) Configuration File (2.0) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Viewtek 2.0 supports a simple configuration file which can be used to set commonly used options so you don't have to type them every time. By default, Viewtek looks for the configuration file as "ENV:VT.defaults", however you may change this with the CONFIG option. Note that command line options override whatever is in the configuration file. Also note that if you specify a switch in the configuration file there is no way to "undo" that switch from the command line. Each line in the configuration file must contain its own option (ie. you cannot put more than one option on a line) just as you would specify them on a CLI command line. However, note that you cannot abbreviate options in the configuration file, they must be spelled out. Playing Animations From Disk ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Viewtek 1.05 can play animations directly from disk... sort of. How well it works depends on many factors: - The speed of your computer. - The speed of your hard drive and/or controller. - The complexity/resolution of the animation. - The chosen playback rate. - The chosen buffer size. - How much you're willing to fiddle with parameters. Here's an overview of how it works: Playback from disk is done with two tasks; one task is responsible for reading data from disk, the other task is responsible for decoding and displaying the frames. Basically, while the disk reader is getting data from disk, the playback task is playing the frames from the previous batch. Buffer Size. The buffer size is very important to the performance of the playback. The idea is to make the buffer size such that a new batch of frames can be read from disk faster than VT can play the frames from the previous batch. If the buffer size is too small, VT will end up stuttering during playback because it has to wait for the disk reader to catch up to the playback task. However, if the buffer size is too large, a lot of wasted time will be spent reading from the hard drive (on my system, reading from the drive for extended periods of time also causes the animations to stutter - not sure if this is just my own HD or a universal problem tho). (NOTE: Animations with large deltas will require larger buffer sizes. Viewtek will inform if you need to increase the buffer size (and give you an approxiamate target size).) Playback Rate. A good way to smooth out the playback is to slow down the playback rate. This will give the disk reader task more time to read from the disk. Animation Complexity. Let me be blunt: If you think a 736x480, HAM8 animation of a camera pan is going to animate well, you're crazy. The Amiga's good, but it ain't *that* good. :) Computer Speed. Obviously, the faster your computer, the better the results are going to be. I personally haven't tried VT on a system equipped with less than a 68040 for quite some time, so I can't really comment on whether it will even work at all on a 68000. Hard Drive Speed. I've tried HD playback on two systems: One is an A4000 with the internal IDE drive, along with a GVP SCSI controller and a Maxtor drive. The other is an A2000 with a GVP G-Force 040 (SCSI controller built-in) and a couple Quantum drives. (Funny how I have all this GVP stuff, ain't it? :) The results I get are generally pretty good, although stuttering animations definitely do happen. Fiddling with the playback rate and buffer size usually helps in all but the most severe cases though. In short, if you have a 1MB A500 and want to genlock your 40MB HAM interlace animations onto videotape for production work, you'll be disappointed. This feature is strictly a novelty at this point. CAVEATS: The Up Arrow does not work when playing anims from disk, and the animations are always played in "continuous" mode; ie. if the anim doesn't have loop frames it's going to look pretty strange. Also, animations with small numbers of frames will not work very well (they might even crash, actually). Datatypes (Kickstart 3.0 And Above) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Viewtek 1.05 makes use of 3.0's datatypes.library. This means that when VT runs across a file it is not capable of reading, it then asks datatypes to try and read the file. If it can, then VT will still be able to show the file. If you want VT to use datatypes exclusively (ie. not try to identify or decode the files within VT at all), use the "DT" option on the command line. This lets you, for example, use the GIF datatype instead of VT's own GIF decoding. VT has been tested successfully with the GIF and PCX datatypes. (These are the only ones I have.) NOTE: Processing files via. datatypes works a little differently than things normally work in VT... there is no way to abort reading a file, and the file is read entirely into memory before even opening a display screen. Compressed Files (Using XPK) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Viewtek 1.05 supports the XPK compression package (a nice package, BTW), allowing it to read any kind of encoding scheme that XPK itself supports. In order to continue using iffparse.library and in general keep VT the way it is, it works a little strangely: the encoded file is decompressed to a temporary file in T:, which is then shown normally by Viewtek. Obviously, this could impose some memory problems if your T: directory happens to be in RAM:. You'll have to get the XPK package elsewhere; consult a BBS near you (I got it from BIX). Hints ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Generally speaking, you will get faster load times if you use the HIDE option, especially with 256-color GIFs on AGA machines. Also, the program sorta *looks* faster if you use the HIDE option since the images blink onscreen instantly. If whatever display card you are using supports standard 2.0 screen mode names, it may be possible to use the SCREENMODE option to open Viewtek images on your display card. Images will be limited to 8 bits, however, and probably will not support HAM. (This has never been tried by me.) The Various Incarnations of Viewtek ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Amiga The standard version of Viewtek will render any file deeper than your available display as either a HAM or HAM8 image (depending on your chipset). IV-24 Images deeper than your display are rendered to the IV-24 board. Note that you will not be able to view large super-bitmap images (except the top-left corner). OpalVision Works just like the IV-24 version, but renders to the OpalVision card. Again, you will not be able to view large super-bitmaps. Retina Works just like the IV-24 version, but renders to the Retina card. Once again, unless there's an autoscrolling feature on the Retina I don't know about, you won't be able to all of large super-bitmaps. This version has not been tested by me at all. However, the code it's based on is known to work. Firecracker Works just like the IV-24 version, but renders to the Firecracker frame buffer. This version has not been tested by me at all. However, the code it's based on is known to work. Examples ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1> VT picdir Show all files in the "picdir" directory. 1> VT picdir ALL Show all files in "picdir", including subdirectories. 1> VT picdir SUPER72 SUPERHIRES LACE Show all files in "picdir", forcing them into Super72 800x600 mode. 1> VT myjpeg SAVE ram:mypic Show "myjpeg", and save the resulting screen to "ram:mypic". 1> VT picdir HIDE Show all files in "picdir", but don't show each picture until it is fully read into memory. 1> VT picdir FOREVER DELAY 2 Show each file in "picdir" for 2 seconds, repeat forever. 1> VT picdir SCREENMODE "MULTISCAN:Productivity" Show all files in "picdir", forcing each one into Productivity mode. The Author ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I can be reached on BIX as "tkrehbiel". BIX is also connected to the Internet, so my Internet address is "tkrehbiel@bix.com". (Warning: I'm pretty slow responding to email these days. And please don't be offended if I answer tersely or not at all, I get a lot of email and I don't really have time to answer each one with pages of text.) (Note: I am currently not available for any sort of programming work, including, but not limited to, custom versions of Viewtek.) Reporting Bugs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When reporting bugs, it would help me a great deal if you could try to be as specific as possible about the conditions under which the program failed. For example, your configuration, what exactly you were doing, what options you were using, what else might have been running, etc. Usually whatever file caused the problems will help me out too, if it's relatively small (you can bixmail stuff to me, or uuencode stuff to me, or whatever). Suggestions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I am always open to suggestions; however, I do have goals in mind for the program so I may not implement every suggestion I get if it doesn't really fit with my "plan". Generally, I'm more likely to implement simpler suggestions than complex suggestions. And I'm very unlikely to support reading other file formats (use DataTypes for this), or saving to other file formats, or more complex rendering algorithms. Frequently Asked Questions (well, some, anyway) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Q. Why don't you include versions compiled for 68030's or 68040's? A. The speed difference is so negligable as to not be worth the effort. (I did try it recently, too.) Q. How come Viewtek's GIF and JPEG renderings on my A2000 don't look as good as some other software? A. Because Viewtek is not meant to be a dedicated rendering program; it is only meant to give you a fairly quick representation of the images. High quality rendering takes time. Viewtek generally works best when you are showing images that aren't deeper than your available display. Q. Will you support display card X? A. Internally, Viewtek 2.0 is organized much better for this type of support, so the chances of supporting new display cards are much better than they used to be. Generally my criteria for picking display cards to support are: 1) how cool is the card, 2) how easy is it to support with the supplied developer info, 3) do I have one, 4) would I be likely to use one regularly. Q. Could you add a feature to show images in little Workbench windows? A. Besides the fact that I think this particular 'feature' isn't even remotely useful, it would require some fairly major internal rewriting. Perhaps when every Amiga owner has a minumum 8-bit (chunky) Workbench I'll consider it. Q. Will there ever be a Viewtek for 1.3 users? A. Hah! Good one... :) Q. What about some kind of graphical front-end? A. It's on my list of things to do at some future date. Which could be anywhere from tomorrow to never. Q. What the heck does UBTASITE mean? A. :) Q. How come you don't release new versions every other day? A. Most of my time is spent working on ImageFX / CineMorph, which is what I get paid for so I give them a little more priority. :) My spare time goes to such projects as Viewtek and Rend24, along with about a dozen other programs that will doubtless never see the light of day (I usually end up writing whatever programs I need; term programs, dir utils, stuff like that). Not to mention my recently awakened all-consuming music habit. Conclusion ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Hope you enjoy the program! - TEK