Hát nem egy izgalmas téma, de majd azzá tesszük. Mondjuk azzal, hogy a kód 32 bites protected módú, ezért aztán senki ne próbálja meg Borland C-vel fordítani. Watcom-mal sikeresebb. A program nem azért lett protected mer'én ilyen menő csávó vagyok, hanem mert így bizonyos dolgok lényegesen egyszerűbbek. (pl.: több megás FLI file-okat is úgy be tudunk olvasni, mint a szél.) Ennyit erről. Tehát FLI:

A FLI állományok jellemzői, hogy bonyolultan szerkesztettek, de a mögöttük álló ötlet meglehetősen egyszerű: ne tárold a kép (frame) azon részeit, amelyek megegyeznek az utolsó képkockával. Ez nem csak helyet, de időt is megtakarít. Gyorsabb egy pixelt békén hagyni, mint egy újat megjeleníteni a helyén.

A FLI file-nak egy 128-byte-os fejléc (header) van az elején, amit a képkockák (fame-ek) szekvenciája követ. Az első képkocka byte-alapú futás-idejű tömörítéssel van tárolva (byte run). A további képkockákban csak az előző képkockától való különbségek vannak tárolva. (Esetenként az első és/vagy a későbbi kockák nincsenek sűrítve.) A FLI végén van egy extra frame, amely az első kocka különbségeit tartalmazza az utolsóhoz képest.

FLI fejléc:
 

Offs;byte
méret
név
jelentés
0
4
size
A file hossza, olyan programok számára, amelyek az egész FLI-t egyszerre  akarják beolvasni, ha lehet.(pl. nekünk)
4
2
magic
Az értéke mindig AF11 (hex), ha szabványos fli-ről van szó. Más értéket kell adni neki, ha változtatsz a formátumon (még más felbontásnál is), így az Autodesk Animator nem fog meg próbálkozni az olvasásával.
6
2
frames
A FLI-ben lévő képkockák száma. A FLI file-ok maximális hossza 4000 (képkockák) képkocka.
8
2
width
Képernyő-szélesség (320). (szélesség)
10
2
height
Képernyő-magasság (200). (magasság)
12
2
\flags
Nulla
14
2
/(kapcsoló)
Nulla.
16
2
speed
Képek közötti videójelek száma. (sebesség) (video ticks)
18
4
next
Nulla
22
4
frit
Nulla
26
102
expand
Mind nulla -- jövőbeli felhasználásra (kiterjesztett funkciók).

Ezután jönnek a képkockák, mindegyik saját fejléccel:
 

Offs;byte
méret
név
jelentés
0
4
size
A byte-ok száma ebben a kockában. Az Autodesk Animator 64K-nál kevesebbet igényel
4
2
magic
Mindig F1FA (hex). (azonosító)
6
2
chunks
A 'tömbök' száma ebben a képkockában. (tömbök)
8
8
expand
Mind nulla. Jövőbeni felhasználásra.

 

A képkocka fejléce után következnek egymás után a kockát felépítő tömbök.

Magának a tömbnek van egy fejléce, amit az adatok követnek. A tömb fejléce a következő:
 

Offs;byte
méret
név
jelentés
0
4
size
Byte-ok száma ebben a tömbben. (méret)
4
2
type
A tömb típusa (lásd később). (típus)

Jelenleg 5 fajta tömbtípus található a FLI file-okban:
 

azonosító
név
jelentés
11
FLI_COLOR
Tömörített színtérkép
12
FLI_LC
Sor-tömörített(delta tömörítés) -- a legjellemzőbb tömörítési mód bármely képkockára (Leírja az előző kockához viszonyított pixelkülönbségeket.)
13
FLI_BLACK
Az egész képernyőt a 0.színre állítja be (Csak az első kockánál használatos)
15
FLI_BRUN 
Byte-alapú futásidejű tömörítés -- csak az első képkockánál
16
FLI_COPY
Tömörítetlen 64000 byte érkeztét jelzi.

A tömörítési módszerek mind byte-orientáltak. Ha a tömörített adat páratlan hosszúságnál végződik, egy egyszerű lezáró byte van beszúrva, így az FLI_COPY mindig páros címen kezdődhet. (Ez gyorsítja DMA-t). Persze ezzel nekünk lejátszásnál nem kell törődnünk, mert ez benne van a méretben.
 

FLI_COLOR Tömbök

Az első 2 byte (word) a csomagok száma e tömbön belül. Ezt közvetlenül a csomagok követik. A csomag első byte-ja megmondja, hogy hány színt kell átugrani. A második byte megmondja, hány színt kell kicserélni. Ha ez a byte nulla, az 256-ot jelent. Utána minden cserélendő szín következik 3 byte-osával (egy-egy a vörösre, zöldre, kékre).
 

FLI_LC Tömbök

Ez a legáltalánosabb, és legbonyolultabb tömb. Az első word(2 byte) a sorok azon számát jelzi a képernyő tetejétől kezdve, amelyek megegyeznek az elöző képkockán lévőkkel. (Például, ha csak a képernyő legalsó sorában van mozgás, itt 199 lesz.) A következő szó a megváltoztatandó sorok száma. Ezután következnek magának a sornak az adatai. Minden sor külön van tömörítve; egyéb dolgok mellett ez könnyíti meg az FLI lejátszását kisebb méret mellett.

A tömörített sor első byte-ja a sorban lévő csomagok számát jelzi. Ha a sor nem változik az utolsó kocka óta, akkor ez az érték zéró. Ezután jönnek a csomagok. Egy egyéni csomag formátuma a következő:

nem_változtatott_számláló
méret_számláló
adat

A nem_változtatott számláló egyetlen byte. A méret_számláló szintén egy byte. Ha pozitív, akkor ennyi adatbyte követi, amelyek egyenesen a képernyőre másolandóak. Ha negatív, egyetlen byte követi, amelyet -méret_számláló alkalommal kell kitenni szép sorjában a képernyőre.

A legrosszabb esetben egy FLI_LC képkocka 70K körül lehet. Ha 60000 byte, vagy annál több jön ki, akkor az Autodesk Animator inkább nem alkalmaz tömörítést és a képkockát FLI_COPY-ként menti el.
 
 

FLI_BLACK Tömbök

Ezek nagyon egyszerűek. Egyáltalán nincs adat hozzájuk kapcsolva. Tulajdonképpen az Autodesk Animator-ban csak az első kockához generálódik, miután a felhasználó a FLIC menűbôl a NEW-t választotta.
 

FLI_BRUN Tömbök

Ezek hasonlók, mint a FLI_LC tömbök, de nem foglalkoznak a nem változott pixelekkel. Közvetlenül az első sor adataival kezdődnek, és sorról sorra halad onnan tovább. Egy csomag formátuma a következő:

méret_számláló
adat

Ha a méret_számláló pozitív, az adat egyetlen byte-ot tartalmaz ,melyet méret_számlálószor kell kiküldeni. Ha a méret_számláló negatív, akkor -méret_számláló adat byte van, amelyeket egyenesen a képernyőre lehet küldeni. Az Autodesk Animator-ban ha a 'tömörített' adat úgy néz ki, hogy ha eléri a 60000 byte-ot, a képkocka inkább FLI_COPY-ként lesz tárolva.
 

FLI_COPY Tömbök

Ezek 64000 adatbyte-ot tartalmaznak, amelyek egyenesen a képernyőre küldhetők 
Ennyi Lenne. A lényeg, ahogy máskor is természetesen a programaban van !!! Forrkod.zip

PS: Az FLI file leírásánál igen erősen támaszkodtam Kiszely László leírására. Köszi!!