FORMÁT SOUBORŮ KOALA

Na Atari XL/XE existuje pro ukládání obrázků celá řada různých formátů souborů. Mnohé z nich jsou velice jednoduché, mezi nejpoužívanější však patří také poměrně pokročilý formát "Koala". Tento formát pochází z kreslicího programu KOALA MICROILLUSTRATOR a postupně se rozšířil natolik, že dnes nechybí v nabídce naprosté většiny graficky zaměřených programů. Populární je také díky tomu, že ukládá obrázky komprimovaně a šetří tak dost podstatně místo na disku.

Vše se zdá být v pořádku, soubory jsou hladce přenositelné všemi směry, ovšem jen do chvíle, kdy někdo použije také původní KOALA MICROILLUSTRATOR. Tento program občas "vyplivne" soubor, který jiný software nedokáže správně zpracovat. Proč? Je to jednoduše tím, že pouze KOALA MICROILLUSTRATOR opravdu využívá možnosti formátu Koala - ostatní programy mnoho věcí prostě předpokládají, a proto některé méně obvyklé varianty nedokáží zpracovat.

Abychom mohli v budoucnu vytvářet programy, které podporují "opravdový" formát Koala, přináší tento článek popis zmíněného formátu.

Každý soubor ve formátu Koala začíná hlavičkou, která obsahuje následující údaje:

Pozice (hex)       Funkce
---------------------------------------
 0 - 3:  Identifikace souboru Koala - vždy FF 80 C9 C7.
  4, 5:  Délka hlavičky zmenšená o 1
     6:  Verze formátu souboru - obvykle 1
     7:  Metoda komprese dat: 0, 1, nebo 2
     8:  Grafický režim pro ANTIC - obvykle 0E
 9 - C:  Poloha a velikost obrázku - obvykle 00 28 00 C0
D - 11:  Barvy (kopie systémových proměnných $2C4-$2C8)
12, 13:  Délka celého souboru zmenšená o 1
14, 15:  Vyhrazeno pro budoucí využití - obvykle 00 00
    16:  Název obrázku - max. 14 znaků, zakončeno $9B (EOL)
    ??:  Jméno autora - opět 14 znaků zakončených EOL
    ??:  Další dva řádky doplňujícího textu (každý max. 14 znaků a EOL)
    ??:  Konec hlavičky - vždy $A2

Délka hlavičky závisí na textových položkách na jejím konci, protože však (alespoň pokud vím) dosud žádný program tyto položky nepoužívá, bývá délka obvykle $1B (texty jsou zastoupeny pouze znakem EOL).

Poloha a velikost obrázku jsou určeny čtyřmi parametry v pořadí X-začátek, X-konec, Y-začátek, Y-konec. Souřadnice X je zde udávána v bytech, to znamená ve čtveřicích pixelů; koncové souřadnice jsou o 1 větší, než poslední pozice obsazená obrázkem. Je možno definovat prakticky libovolnou obdélníkovou část obrazovky, při zavádění takového souboru pak obrázek přepíše jen část původního obsahu obrazovky.

Metody komprese dat jsou následující: 0 - žádná komprese, data se ukládají normálně zleva doprava a shora dolů. 1 - komprimovaná data, ukládají se způsobem typickým pro formát Koala (po jednobytových sloupcích zleva doprava, v každém sloupci shora dolů nejprve sudé a potom liché řádky), a konečně 2 - komprimovaná data, ukládají se normálně zleva doprava a shora dolů.

Komprimovaná data obsahují dva druhy položek:

Všechny níže uvedené příklady znamenají dva byty s hodnotou FF:

82 FF FF       (Nepakovaný blok)
80 00 02 FF FF (Dlouhý nepakovaný blok)
02 FF          (Pakovaný blok)
00 00 02 FF    (Dlouhý pakovaný blok)

Právě popsaný formát Koala je schopen vyjádřit prakticky jakoukoliv obdélníkovou část obrazovky v jakémkoliv grafickém režimu, i s připojeným názvem a dalšími údaji o původu obrázku. V praxi bohužel zatím neexistuje program, který by současně obsloužil všechny dostupné možnosti. Relativně nejlépe je na tom zmíněný původní KOALA MICROILLUSTRATOR, který při čtení ignoruje pouze číslo grafického režimu a textové řádky, při zápisu dává vždy celou obrazovku v režimu $0E (odpovídá GRAPHICS 15+16) bez textové informace. Ostatní dostupné programy bohužel v naprosté většině případů ignorují vše mimo barev a vlastních dat - nerozpoznávají délku hlavičky ani metodu komprese dat, o grafickém režimu a velikosti obrázku ani nemluvě.

Pozorný čtenář si jistě všiml, že popsaný původní formát Koala neumožňuje použití zvláštních grafických režimů obvodu GTIA (t.j. GRAPHICS 9 až 11). Proto Tomasz Tatar z Polska navrhl a ve svém programu SHOW 2.0 hend také obsloužil formát "Koala verze 2". V tomto formátu je číslo verze (pozice 6) rovno dvěma, a první z rezervovaných bytů (pozice $14) obsahuje ve spodních dvou bitech identifikaci GTIA režimů - t.j. obsah horních dvou bitů registru PRIOR ($D01B, stín. $26F).

Tato verze sice nebyla uvedena původními autory formátu Koala (kdo ví, kde firma Island Graphics skončila...), přesto však lze vřele doporučit její používání. Pro slučitelnost mezi různými programy je taková definice rozhodně lepší než nic.

Na závěr se ještě zmíním o chybách, které obsahuje program KOALA MICROILLUSTRATOR, a hlavně o způsobu jejich nápravy. Chyb ve zmíněném programu není zrovna málo; ukládání obrázků na disk se týkají tři z nich.

Pokud si chcete vyzkoušet, které zavaděče formátu Koala za něco stojí, a které jsou k ničemu, uložte si z KOALA MICROILLUSTRATORu tři soubory: Normální obrázek (použije metodu komprese 1), široké vodorovné pruhy (použije metodu 2) a náhodný obsah obrazové paměti (použije metodu 0 - pro rychlé získání náhodného obrázku zkopírujte 7680 náhodných čísel do souboru D1:PICTURE a v KOALA MICROILLUSTRATORu stiskněte při zobrazení editační plochy klávesu "<"). Pokud jste použili program opravený podle předchozího odstavce, získáte tři zkušební soubory, které můžete na zkoušku "předhodit" nejrůznějším zavaděčům formátu Koala. Měly by se správně zobrazit všechny, v praxi však naprostá většina programů zobrazí pouze první z nich...

Jiří Bernášek (BEWESOFT)