DEMO
Mivel gondolom mindenkinek elege van már a sok szar számításból, foglalkozzunk valami olyannal, aminek ugyan semmi köze a demózáshoz, de legalább hasznos lehet. Legalábbis szerintem, Akkó:
FLI lejátszás
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 / (méret) 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 (méret) 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ír ja 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ó adatbyte 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 progrmaban van !!!
A cikk Winword DOC formátumban
Kimmel Tamás
eMail:PC-XUser@IDG.HU, Subject: "abC rovat"
KUMM@MI.STUD.PMMFK.JPTE.HU
Vissza a PC-X User 10 fôoldalához
PS: Az FLI file leírásána’igen erôsen támaszkodtam Kiszely László leírására. Köszi!!