

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.amigaos.net/w/index.php?action=history&amp;feed=atom&amp;title=FANT_IFF_Movie_Format</id>
	<title>FANT IFF Movie Format - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.amigaos.net/w/index.php?action=history&amp;feed=atom&amp;title=FANT_IFF_Movie_Format"/>
	<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=FANT_IFF_Movie_Format&amp;action=history"/>
	<updated>2026-05-06T17:10:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=FANT_IFF_Movie_Format&amp;diff=2073&amp;oldid=prev</id>
		<title>Steven Solie: Created page with &quot;= FANT =  &lt;pre&gt; FORM FANT  /*********************************************************************/ /*                                                                   ** ** -...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=FANT_IFF_Movie_Format&amp;diff=2073&amp;oldid=prev"/>
		<updated>2012-05-10T19:09:18Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= FANT =  &amp;lt;pre&amp;gt; FORM FANT  &lt;span class=&quot;autocomment&quot;&gt;*******************************************************************: &lt;/span&gt; /*                                                                   ** ** -...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= FANT =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FORM FANT&lt;br /&gt;
&lt;br /&gt;
/*********************************************************************/&lt;br /&gt;
/*                                                                   **&lt;br /&gt;
** - FantForm.h                                                      **&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**     This is the IFF movie format for Amiga Fantavision.           **&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**     (c) Copyright 1988 Broderbund Software                        **&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**     - FORMAT FROZED May 5, 1988 -                                 **&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**     Implemented by Steve Hales                                    **&lt;br /&gt;
**                                                                   **&lt;br /&gt;
** Overvue -                                                         **&lt;br /&gt;
**     This is a description of the format used for Amiga            **&lt;br /&gt;
**     Fantavision.  It assumes you have intimate knowledge of how   **&lt;br /&gt;
**     IFF-FORMs are constructed, layed out, and read.  This file    **&lt;br /&gt;
**     can be used as a header file.  This is fairly complete, but   **&lt;br /&gt;
**     I&amp;#039;m sure there are a few things missing.                      **&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**     I can be reached in the following ways:                       **&lt;br /&gt;
**       UseNet:   Steve_A_Hales@cup.portal.com  OR                  **&lt;br /&gt;
**                 sun!cup.portal.com!Steve_A_Hales                  **&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**       US Mail:  882 Hagemann Drive                                **&lt;br /&gt;
**                 Livermore, CA, 94550-2420                         **&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**       Phone:    (415) 449-5297                                    **&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**     NOTE:  I cannot, by contract, give out any code to load or    **&lt;br /&gt;
**            play Fantavision movies.  If that is want you want     **&lt;br /&gt;
**            then you will need to contact Broderbund Software      **&lt;br /&gt;
**            directly.  Their number is (415) 492-3200.             **&lt;br /&gt;
**                                                                   **&lt;br /&gt;
** Enjoy!  Aloha.                                                    **&lt;br /&gt;
**                                                                   */&lt;br /&gt;
/*********************************************************************/&lt;br /&gt;
&lt;br /&gt;
/* Misc Fantavision structures&lt;br /&gt;
*/&lt;br /&gt;
typedef struct Rect&lt;br /&gt;
{&lt;br /&gt;
   int left, top, right, bottom;&lt;br /&gt;
};&lt;br /&gt;
typedef struct Point&lt;br /&gt;
{&lt;br /&gt;
   int h, v;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/* Frame opcodes */&lt;br /&gt;
#define opNEXT     0       /* go on to next frame */&lt;br /&gt;
#define opREPEAT   1       /* repeat sequence starting from frame Parm rep1 times */&lt;br /&gt;
#define opGOTO     2       /* goto frame Parm */&lt;br /&gt;
&lt;br /&gt;
/* Frame modes */&lt;br /&gt;
#define fNORMAL    0x0000  /* redraw every frame */&lt;br /&gt;
#define fTRACE     0x0001  /* draw into both paged screens */&lt;br /&gt;
#define fLIGHTNING 0x0020  /* don&amp;#039;t erase background */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Fantavision FORM defines&lt;br /&gt;
*/&lt;br /&gt;
#define ID_FANT    &amp;#039;FANT&amp;#039;          /* FORM type */&lt;br /&gt;
#define ID_FHDR    &amp;#039;FHDR&amp;#039;          /* Movie Header */&lt;br /&gt;
#define ID_FRAM    &amp;#039;FRAM&amp;#039;          /* Format info for a Frame */&lt;br /&gt;
#define ID_POLY    &amp;#039;POLY&amp;#039;          /* Format info for a Polygon */&lt;br /&gt;
#define ID_CSTR    &amp;#039;CSTR&amp;#039;          /* \0 terminated string */&lt;br /&gt;
&lt;br /&gt;
/* Polygon modes */&lt;br /&gt;
#define pTYPEMASK  0x00FF      /* type mask to get just type of poly */&lt;br /&gt;
#define pSELECT    0x8000      /* is object selected? */&lt;br /&gt;
#define pOUTLINE   0x4000      /* outlined polygon using DotModeSide to&lt;br /&gt;
                               ** determine when to not connect a line.&lt;br /&gt;
                               ** ex. 0 draws on all sides, 1 will draw on&lt;br /&gt;
                               ** everyother side, 2 will leave every second&lt;br /&gt;
                               ** side blank, 3 will every third side&lt;br /&gt;
                               ** blank, etc. */&lt;br /&gt;
#define pBACKDROP  0x2000      /* polygon will be dropped into the background&lt;br /&gt;
                               ** during animation. */&lt;br /&gt;
#define pMSKBITMAP 0x1000      /* bitmap has a mask */&lt;br /&gt;
&lt;br /&gt;
/* Polygon types */&lt;br /&gt;
#define pDELETE    0x7000      /* object is a filler (its deleted from display) */&lt;br /&gt;
#define pFILLED    0           /* filled polygon */&lt;br /&gt;
#define pLINE      1           /* not-connected line polygon */&lt;br /&gt;
#define pLINED     2           /* connected line polygon */&lt;br /&gt;
#define pTEXTBLOCK 3           /* text block to draw */&lt;br /&gt;
#define pCIRCLEDOT 4           /* draw circle dots at vertex&amp;#039;s using&lt;br /&gt;
                               ** dotSize at size. */&lt;br /&gt;
#define pRECTDOT   5           /* draw square dots at vertex&amp;#039;s using&lt;br /&gt;
                               ** dotSize at size. */&lt;br /&gt;
#define pBITMAPDOT 6           /* draw dots using a bitmap at vertex&amp;#039;s using&lt;br /&gt;
                               ** BitMap. */&lt;br /&gt;
#define pBITMAP    7           /* draw just bitmap image */&lt;br /&gt;
&lt;br /&gt;
/* These are used for the pTEXTBLOCK polygon type&lt;br /&gt;
*/&lt;br /&gt;
/* Text justification&lt;br /&gt;
*/&lt;br /&gt;
#define tLEFT      0&lt;br /&gt;
#define tCENTER    1&lt;br /&gt;
#define tRIGHT     2&lt;br /&gt;
/* Text style&lt;br /&gt;
*/&lt;br /&gt;
#define tNORMAL    (int)(FS_NORMAL)&lt;br /&gt;
#define tBOLD      (int)(FSF_BOLD)&lt;br /&gt;
#define tITALIC    (int)(FSF_ITALIC)&lt;br /&gt;
#define tUNDERLINE (int)(FSF_UNDERLINED)&lt;br /&gt;
#define tEXTENDED  (int)(FSF_EXTENDED)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Fantavision movie header -&lt;br /&gt;
**&lt;br /&gt;
**     This header defines how much RAM is needed, how many frames, and sounds&lt;br /&gt;
**     in the movie.&lt;br /&gt;
*/&lt;br /&gt;
typedef struct FantHeader&lt;br /&gt;
{&lt;br /&gt;
   int PointsPerObj;       /* number of vertexs per object */&lt;br /&gt;
   int ObjsPerFrame;       /* number of objects per frame */&lt;br /&gt;
   int ScreenDepth;        /* 0 to 6, for number of bit planes */&lt;br /&gt;
   int ScreenWidth;        /* in pixels */&lt;br /&gt;
   int ScreenHeight;       /* in pixels */&lt;br /&gt;
   int BackColor;          /* background color palette number */&lt;br /&gt;
   long SizeOfMovie;       /* RAM Size of movie, expanded */&lt;br /&gt;
   int pad[30];            /* padding for expanding */&lt;br /&gt;
   int NumberOfFrames;&lt;br /&gt;
   int NumberOfSounds;&lt;br /&gt;
   int NumberOfBitMaps;&lt;br /&gt;
   int Background;         /* non-zero if first bitmap is a background */&lt;br /&gt;
   int SpeedOfMovie;       /* 100 is normal speed, 50 is half speed, etc */&lt;br /&gt;
   int pad[3];             /* expansion */&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/* Fantavision frame info -&lt;br /&gt;
**&lt;br /&gt;
**     Each frame has this structure defined.&lt;br /&gt;
*/&lt;br /&gt;
typedef struct FrameFormat&lt;br /&gt;
{&lt;br /&gt;
   int OpCode;                 /* Frame opcode */&lt;br /&gt;
   long Parm;                  /* contains frame number for opNEXT, opREPEAT */&lt;br /&gt;
   char Rep1, Rep2;            /* Rep1 is repeat counter, Rep2 is not used */&lt;br /&gt;
   int TweenRate;              /* number of tweens per frame */&lt;br /&gt;
&lt;br /&gt;
   int ChannelIndex[2];        /* -3 stop sound is this channel&lt;br /&gt;
                               ** -2 modify current sound&lt;br /&gt;
                               ** -1 no sound for this channel&lt;br /&gt;
                               ** (all others) is an index into the sound&lt;br /&gt;
                               ** list.  Which sound to use.&lt;br /&gt;
                               */&lt;br /&gt;
&lt;br /&gt;
   int NumberOfPolys;          /* number of polygons in this frame */&lt;br /&gt;
   int ColorPalette[32];       /* xRGB - format 4 bits per register */&lt;br /&gt;
   int Pan, Tilt;              /* 0 is centered, (+-) amounts are in pixels */&lt;br /&gt;
   int Modes;                  /* Frame modes */&lt;br /&gt;
   int pad;                    /* expansion */&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/* Fantavision polygon info -&lt;br /&gt;
**&lt;br /&gt;
**     Each polygon has this structure defined.&lt;br /&gt;
*/&lt;br /&gt;
typedef struct PolyFormat&lt;br /&gt;
{&lt;br /&gt;
   int NumberOfPoints;         /* how many vertexs for this polygon */&lt;br /&gt;
   int Type;                   /* polygon type */&lt;br /&gt;
   int Color;                  /* palette color number (see note 1) */&lt;br /&gt;
   Rect Bounds;                /* enclosing rectangle of polygon */&lt;br /&gt;
   int Depth;                  /* polygon view depth (see note 2) */&lt;br /&gt;
   char DotModeSize;           /* in pixels, not larger than 40 */&lt;br /&gt;
   char DotModeSide;           /* determines outlining features */&lt;br /&gt;
   int OutlineColor;           /* palette color number for outline */&lt;br /&gt;
   int BitMapIndex;            /* if not -1, then bitmap index into bitmap list */&lt;br /&gt;
   int BMRealWidth;            /* in pixels */&lt;br /&gt;
   int BMRealHeight;&lt;br /&gt;
   int TextLength;             /* length of text for pTEXTBLOCK */&lt;br /&gt;
   int TextJust;&lt;br /&gt;
   char TextSize;              /* size in pixels */&lt;br /&gt;
   char TextStyle;&lt;br /&gt;
   long pad;                   /* expansion */&lt;br /&gt;
   Point p[];                  /* array of points defining vertexs */&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/* Fantavision high-level IFF format.&lt;br /&gt;
**&lt;br /&gt;
   FORM FANT&lt;br /&gt;
       FHDR&lt;br /&gt;
&lt;br /&gt;
       - background -&lt;br /&gt;
       FORM ILBM   if Background is non-zero&lt;br /&gt;
           BMHD&lt;br /&gt;
           BODY&lt;br /&gt;
&lt;br /&gt;
       - bitmap list -&lt;br /&gt;
       NOTE:  If a bitmap has a mask, it will be compute during load time.&lt;br /&gt;
&lt;br /&gt;
       FORM ILBM   times NumberOfBitMaps&lt;br /&gt;
           BMHD&lt;br /&gt;
           BODY&lt;br /&gt;
&lt;br /&gt;
       - sound list -&lt;br /&gt;
   {   FORM 8SVX   times NumberOfSounds&lt;br /&gt;
           VHDR&lt;br /&gt;
           BODY&lt;br /&gt;
       SEFX    }   Default parameters for sound&lt;br /&gt;
&lt;br /&gt;
       - frame list -&lt;br /&gt;
   {   FRAM        times NumberOfFrames&lt;br /&gt;
       SEFX        if sound for channel 1.&lt;br /&gt;
       SEFX        if sound for channel 2.&lt;br /&gt;
       POLY        times NumberOfPolys&lt;br /&gt;
     { CSTR        Text of poly if PolyType = pTEXTBLOCK&lt;br /&gt;
       CSTR  } }   Name of font&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/******- NOTES -**********************************************************/&lt;br /&gt;
/*&lt;br /&gt;
** 1 - The color palette is a number from 0 to 1120.  The first 32 numbers&lt;br /&gt;
**     are normal RGB colors, but the rest index into a pre-defined&lt;br /&gt;
**     set of patterns.&lt;br /&gt;
**&lt;br /&gt;
** 2 - The view depth of each polygon determines the display order.  The&lt;br /&gt;
**     higher the number the closer the polygon is to the viewer.  During&lt;br /&gt;
**     editing, each polygon is assigned numbers in multiplies of 100,&lt;br /&gt;
**     but to function, any number can work.&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Steven Solie</name></author>
	</entry>
</feed>