# Interchange file format

IFF, sigle de l'anglais Interchange File Format, est un format de fichier multi-usages lancé par Electronic Arts en 1985. Sa spécification - EA IFF 1985 - a été utilisée comme base pour divers formats de fichiers, notamment :
* AIFF, un format de fichier IFF lancé par Apple, et utilisé pour stocker de l'audio ;
* ILBM, un format de fichier IFF lancé par Electronic Arts, et utilisé pour stocker des images matricielles ;
* RIFF est un format de fichier lancé par Microsoft, et inspiré de IFF. Il est la base des formats de fichiers WAV et AVI.

## Les origines

Lancé en 1985 par Electronic Arts le format IFF est initialement destiné aux ordinateurs Commodore Amiga. Il comporte quelques particularités destinées à s'adapter aux caractéristiques des processeurs Motorola 680x0 des ordinateurs Amiga. Dérivé de IFF, le format RIFF est quant à lui adapté aux caractéristiques des processeurs Intel x86.

## Description

Le format IFF est un format de fichier binaire, il est facile à manipuler avec un logiciel, mais difficile à lire pour un humain.
Les fichiers au format IFF sont composés d'un ensemble de blocs. chaque bloc commence avec un code de quatre caractères FourCC, suivi de 32 bits qui contiennent la longueur du bloc en question. Tous les blocs du fichier doivent avoir une longueur paire - alignement sur deux octets destiné à accélérer les traitements sur les processeurs Motorola 68000.
Chaque bloc peut contenir d'autres blocs. Le fichier commence par un des FourCC suivants: FORM, LIST ou CAT␣(le glyphe « ␣ » représente une espace). La liste des codes FourCC de la spécification EA IFF 1985 n'est pas exhaustive, et de nouveaux codes peuvent être ajoutés en fonction des besoins.

### AIFF

AIFF, sigle de Audio Interchange File Format est un format de fichier utilisé pour stocker des sons, de la musique et des paroles. Il a été développé par Apple sur base de la spécification EA IFF 1985.
les fichiers dans ce format commencent par le FourCC FORM, suivi de la longueur du fichier, et de l'indicatif AIFF. le format utilise ses propres FourCC tels que COMM ou SSND.

### ILBM

ILBM, sigle de InterLeaved BitMap est un format de fichier destiné à stocker des images matricielles. Il a été développé par Electronic Arts sur la base de la spécification EA IFF 1985.
Les fichiers dans ce format commencent par le FourCC FORM, suivi de la longueur du fichier, et de l'indicatif ILBM. le format utilise ses propres FourCC tels que BMHD ou CMAP.

#### Extensions (Chunks spéciaux)

En raison des limitations de certaines combinaisons de résolutions d'écran, le coprocesseur Copper est utilisé pour augmenter le nombre de couleurs qui peuvent être affichées simultanément. La palette est alors en constante évolution lors de l'affichage à l'écran.
Les formats les plus connus :
* Dynamic Hires – Images-non-HAM avec CTBL-Chunk
* Dynamic HAM ou DHAM – Images-HAM avec CTBL-Chunk
* Sliced HAM ou SHAM – Images-HAM avec SHAM-Chunk
* Images-MultiPalette – PCHG-Chunk
Toutes ces extensions sont inhabituelles parce que très dépendantes du matériel. Les fichiers HAM6/8 peuvent être facilement convertis dans d'autres formats graphiques classiques tels que le TrueColor.

##### CTBL-Chunk

CTBL pour Color TaBLe.
Ce Chunk inclut, en partant du haut, pour chaque ligne une nouvelle palette de 16 couleurs. Chaque entrée est de deux octets. Dans chaque entrée, les 4 bits de poids faible du premier octet correspondent à la composante rouge. Les 4 bits de poids fort du deuxième octet correspondent à la composante verte et les 4 bits de poids faible correspondent à la composante bleue. 4 bits sont inutilisés.
Cette extension est rare.

##### SHAM-Chunk

SHAM pour Sliced HAM.
Ce Chunk a la même structure que le bloc CTBL. La seule différence est les deux octets du numéro de version au début des blocs qui sont toujours 0.
Cette extension est rare.

##### PCHG-Chunk

PCHG pour Palette CHanGes.

### RIFF

RIFF, acronyme de Resource Interchange File Format est un format de fichier similaire à IFF, défini par Microsoft et utilisé comme base pour divers formats de fichiers multimédia tels que WAVE et AVI.