<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=PIC_%28Koala_Microillustrator%29</id>
	<title>PIC (Koala Microillustrator) - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=PIC_%28Koala_Microillustrator%29"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=PIC_(Koala_Microillustrator)&amp;action=history"/>
	<updated>2026-10-02T14:56:00Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=PIC_(Koala_Microillustrator)&amp;diff=3125&amp;oldid=prev</id>
		<title>imported&gt;Atariki recovery: Reconstructed from archived HTML; see provenance manifest</title>
		<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=PIC_(Koala_Microillustrator)&amp;diff=3125&amp;oldid=prev"/>
		<updated>2026-10-01T08:51:48Z</updated>

		<summary type="html">&lt;p&gt;Reconstructed from archived HTML; see provenance manifest&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Format pliku graficznego stosowany w programie [[Koala Microillustrator]]. Jest to, obok formatu [[Micropainter|Micropaintera]] (.[[MIC]]), najpopularniejszy standard zapisu (kolorowej) grafiki używany na 8-bitowym komputerze Atari.&lt;br /&gt;
&lt;br /&gt;
Dotychczas ukazało się kilka artykułów na temat tegoż formatu zapisu (m.in. w Megazinie  oraz [[Abbuc Magazin]], jednak w pierwszym przypadku informacje te były niekompletne, zaś w drugim były pewne przekłamania i nieścisłości.&lt;br /&gt;
&lt;br /&gt;
W tym artykule opisano poprawnie budowę pliku Koali, a w szczególności jego nagłówka (jako że właśnie o nim były podane błędne informacje), opierając się na wiadomościach z m.in. dwóch powyższych źródeł.&lt;br /&gt;
&lt;br /&gt;
Format zapisu Koali powstał w 1983 roku w firmie Koala Ware. W tej lub lekko zmodyfikowanej wersji jest (był) także używany na innych komputerach, np. C64, Apple (!). W formacie tym można przechować grafikę w większości trybów graficznych i przy różnych rozmiarach ekranu. Na Atari używa się jednak (standardowo) tylko trybu [[Graphics 15]].&lt;br /&gt;
&lt;br /&gt;
=== Nagłówek ===&lt;br /&gt;
&lt;br /&gt;
Początek pliku to specjalny nagłówek, w którym zawarte są najważniejsze informacje o obrazku, tzn. jego szerokość, wysokość, kolory itd. W tabeli poniżej jest dokładny opis nagłówka pliku .PIC:&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Typ&lt;br /&gt;
! Nazwa&lt;br /&gt;
! Opis&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | OFFSET=0 (4 bajty)&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | identyfikator formatu KOALI&lt;br /&gt;
| Oznaczenie formatu Koali. Są tu zawsze wartości = 255,128,201,199.&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | OFFSET=4 (2 bajty)&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | headln&lt;br /&gt;
| Długość nagłówka. Przeznaczone sa na to dwa bajty, ale zwykle jest tu wartość 27, tzn. tyle bajtów ma nagłówek (27=$1b).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | OFFSET=6 (1 bajt)&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | revision&lt;br /&gt;
| Numer wersji programu względnie formatu obrazka. Normalnie jest to wartość $01.&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | OFFSET=7 (1 bajt)&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | typcprs&lt;br /&gt;
| Rodzaj kompresji:&lt;br /&gt;
&lt;br /&gt;
* 0 = nieskompresowane&lt;br /&gt;
* 1 = kompresja pionowa&lt;br /&gt;
* 2 = kompresja pozioma&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | OFFSET=8 (1 bajt)&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | antic-mode&lt;br /&gt;
| Podaje tryb grafiki obrazka według trybów [[ANTIC (układ)|ANTIC]].&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | OFFSET=9 (2 bajty)&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | scrwidth&lt;br /&gt;
| Szerokość obrazu w bajtach. Zwykle jest tutaj wartość 40.&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | OFFSET=11 (2 bajty)&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | scrheight&lt;br /&gt;
| Wysokość obrazu w bajtach. Zwykle jest tutaj wartość 192.&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | OFFSET=13 (5 bajtów)&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | colors&lt;br /&gt;
| Kolory obrazka - nagrywane w takiej kolejności jak w pamięci, 708..712.&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | OFFSET=18 (2 bajty)&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | picln&lt;br /&gt;
| Ogólna długość obrazka (samego, bez nagłówka) w bajtach.&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | OFFSET=20 (2 bajty)&lt;br /&gt;
|width=&amp;quot;10%&amp;quot; align=&amp;quot;center&amp;quot; | unused&lt;br /&gt;
| Zawsze wynosi 0.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Od &amp;#039;&amp;#039;&amp;#039;OFFSET+22&amp;#039;&amp;#039;&amp;#039; są 4 pola zarezerwowane na tekst dla tytułu rysunku, autora i pozostałych uwag. Każda taka komórka tekstowa może mieć maksymalnie 40 znaków i musi być zakończona kodem EOL ($9b, 155 dec). Przeważnie znaleźć można tutaj wartość 155 powtórzoną cztery razy. Wpisując w to miejsce jakiś tekst trzeba go zakończyć EOL-em i zwiększyć odpowiednio długość nagłówka w komórce &amp;quot;headln&amp;quot; (tzn. podać nową wartość długości nagłówka, liczonej razem z &amp;quot;komentarzem&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Nagłówek kończy tzw. &amp;quot;spare byte&amp;quot; (zapasowy bajt). Jego wartość wynosi zazwyczaj 162 ($a2), chociaż popularny [[XL-Art]], nagrywając w kompresji Koali wstawia tu wartość $a5.&lt;br /&gt;
&lt;br /&gt;
=== Okno ===&lt;br /&gt;
&lt;br /&gt;
Według [http://www.cclassic.szu.pl/files/ATARI_XE/Games/Graphics/Koala%2520Format/KOALA%20PICTURE%20FILES.txt Bewesofta] mogą być ładowane pliki z tylko częścią ekranu - ponoć oryginalny program Koala MicroIllustrator potrafi je wczytać. Pozycja i rozmiar tzw. &amp;quot;okna&amp;quot; zdefiniowane są w nagłówku przez pola &amp;quot;scrwidth&amp;quot; i &amp;quot;scrheight&amp;quot;. Te 4 bajty określają początkową pozycję X (w bajtach, a nie w pikselach!), końcową pozycję X obrazu (pierwszą pozycją PO obrazku), początkową pozycję Y obrazu i końcową pozycję Y.&lt;br /&gt;
&lt;br /&gt;
=== Kolory ===&lt;br /&gt;
&lt;br /&gt;
Kolory nagrywane są w kolejności takiej jak w pamięci (708-712), czyli licząc od OFFSET+13 jest nagrywanych pięć bajtów. Wszystkie kolory można dowolnie ustawić w jakimś programie graficznym i ich wartości pojawią się w komórkach &amp;quot;colors&amp;quot; nagłówka. Problem może być jedynie z ustawieniem koloru inwersji ($02c7), który można zmienić tylko w edytorach do [[Logosowanie|logosowania]] grafiki. Jednakże to nieistotne, gdyż inwersja ważna jest tylko w grafice znakowej. W każdym razie wartość, jaką można zwykle zastać (dla rejestru $02c7) w nagłówku, to albo $00, albo $46.&lt;br /&gt;
&lt;br /&gt;
=== Rozszerzenia ===&lt;br /&gt;
&lt;br /&gt;
Bajt 20. z nagłówka (&amp;quot;unused&amp;quot;) został przeznaczony przez twórców formatu na przyszłe użycie. Pozwoliło to [[Hermes|Hermesowi]] (autorowi viewera &amp;quot;ShowPIC v2.0&amp;quot;) bardzo pożytecznie wykorzystać pierwszy bajt z pary &amp;quot;unused&amp;quot;. Mianowicie został on użyty do przechowywania informacji dla GTIA o jej trzech dodatkowych trybach (tj. [[Graphics 9]], [[Graphics 10]], i [[Graphics 11]]). Pozwala to na wczytywanie skompresowanej grafiki również w tych trybach graficznych, co oczywiście zaoszczędza miejsce na dysku. Oto jak zostało to zorganizowane&lt;br /&gt;
&lt;br /&gt;
Dwa najmłodsze bity pierwszego nieużywanego bajtu &amp;quot;unused&amp;quot; zawierają informację o trybie graficznym jak następuje:&lt;br /&gt;
&lt;br /&gt;
* 00 = zwykły tryb ANTIC-a ([[Graphics 8]])&lt;br /&gt;
* 01 = 16 jasności tego samego koloru ([[Graphics 9]])&lt;br /&gt;
* 10 = 9 dowolnych kolorów z palety 256 ([[Graphics 10]])&lt;br /&gt;
* 11 = 16 kolorów o jednakowej jasności ([[Graphics 11]])&lt;br /&gt;
&lt;br /&gt;
Pozostałe bity z tego bajtu oraz drugi wolny bajt są przez viewer &amp;quot;ShowPIC v2.0&amp;quot; nieużywane. Powyższe wykorzystanie bajtu &amp;quot;unused&amp;quot; jest nazwane przez jego pomysłodawcę &amp;quot;PIC v2&amp;quot;. Pomysł Hermesa jest świetny, lecz do tej pory spotkać się można z jej zastosowaniem tylko w &amp;quot;ShowPIC v2.0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Inne uwagi ===&lt;br /&gt;
&lt;br /&gt;
Dużym problemem jest to, że większość tzw. viewerów, showerów, czy loaderów (programów wyświetlających format Koali) potrafi ładować pliki .PIC tylko ze standardową długością nagłówka, wynoszącą $1b (27) bajtów. Tymczasem nagłówek może mieć zmienną długość, np. gdy doda się jeszcze komentarz do obrazka od komórki OFFSET+22. Co więcej, większość loaderów odczytuje z nagłówka tylko jedną rzecz - dane kolorów. Zauważył to już Bewesoft. Taki sposób działania tych programów można wytłumaczyć tylko jednym: &amp;#039;&amp;#039;&amp;#039;lenistwem&amp;#039;&amp;#039;&amp;#039; autorów tychże programików.&lt;br /&gt;
&lt;br /&gt;
Jeśli zechcesz sobie np. dodać komentarz do rysunku, umieszczając go w nagłówku pliku, w odpowiednim miejscu, wiedz, iż na palcach można będzie policzyć programy, które to poprawnie odtworzą. Z testów wynika, że uda Ci się to tylko w:&lt;br /&gt;
&lt;br /&gt;
* loaderze BeweSofta z ABBUC Magazine&lt;br /&gt;
* ShowPIC v2.0 Hermesa&lt;br /&gt;
* oryginalnym programie Koala MicroIllustrator&lt;br /&gt;
&lt;br /&gt;
Z &amp;quot;eliminacji&amp;quot; odpadły natomiast loadery w takich programach, jak: GRAPH VIEW z CrisisSoft, GRAPH.COM Souseda, [[XL-Art]], [[RAMbrandt]] (!), BIT CONVERTER [[Bartman|Bartmana]] oraz paru innych.&lt;br /&gt;
&lt;br /&gt;
Problem ignorowania sobie wartości z nagłówka wynika również z innej, bardziej praktycznej (od wstawiania komentarzy do obrazków) rzeczy - przykładowo XL-Art przy zapisie .PIC-a &amp;quot;zapomina&amp;quot; o zapisaniu w nagłówku Koali informacji o długości samego obrazka (nie wstawia nic do bajtów &amp;quot;picln&amp;quot; w nagłówku obrazka). Jako że większość loaderów również nie sprawdza bajtu &amp;quot;picln&amp;quot;, wszystko jest OK... do czasu, aż napotkasz jakiś program, którego twórca spodziewał się, że są jeszcze dobrze napisane procedury obsługi kompresji Koali i... w tymże programie nie zapomniał o tym bajcie. Wtedy zaczynają się kłopoty, bo program sprawdzający np. bajt &amp;quot;picln&amp;quot;, po prostu nie wczyta takiego .PIC-a, który nie ma tam żadnej wartości (czyli &amp;quot;picln&amp;quot; = $00,$00). Po sprawdzeniu braku odpowiedniej wartości w nagłówku po prostu przerwie odczyt. Do tej pory można zauważyć dwa takie przypadki - w niezłym programie graficznym (dla trybu [[Graphics 15]]) &amp;quot;[[Pixel Artist De Luxe]] v1.3&amp;quot; (swoją drogą jest on pomocny dla posiadaczy tabliczki graficznej) oraz w basicowym programie do wydruku obrazków &amp;quot;PICPRINT&amp;quot;, zamieszczonym w jednym z wydań magazynu &amp;quot;OHAUG&amp;quot;... Obydwa programy &amp;quot;buntowały się&amp;quot; przy próbiw wczytania jakiegoś .PIC-a z XL-Art, ale przyczyna okazała się prozaiczna - brak tego jednego, jedynego bajtu, na który zwracały uwagę. Zatem aby do nich wczytać taki obrazek, należy wpisać do nagłówka odpowiednią wartość w bajtach &amp;quot;picln&amp;quot; za pomocą jakiegoś monitora (dyskowego). Można też wczytać obrazek w postaci .MIC do &amp;quot;Pixela...&amp;quot; i tam zgrać go jako .PIC. Zostanie on zapisany w rzadziej spotykanej poziomej kompresji. Na szczęście nie będzie już kłopotów z ładowaniem tak poprawionego obrazka w drugą stronę, tzn. w np. XL-Art, bo on bajty &amp;quot;picln&amp;quot;, jak już wcześniej wspomniano, ignoruje.&lt;br /&gt;
&lt;br /&gt;
=== Kompresja ===&lt;br /&gt;
&lt;br /&gt;
Wypadałoby na koniec podać jednak budowę samej kompresji KOALI.&lt;br /&gt;
W użyciu może być jeden z trzech typów kompresji (7. bajt nagłówka):&lt;br /&gt;
&lt;br /&gt;
* wartość $00 oznacza brak kompresji w obrazku czyli, że reszta pliku (po nagłówku) zawiera tylko same dane zrzucone wprost z pamięci ekranu.&lt;br /&gt;
&lt;br /&gt;
* wartość $01 - najczęściej używana metoda, tzw. kompresja pionowa. Oznacza ona spakowane dane, które zostaną umieszczone na ekranie w &amp;quot;pionowym&amp;quot; uporządkowaniu: najpierw bajty w liniach parzystych 0,2,4,6, itd. potem bajty w liniach nieparzystych 1,2,5,7 itd. Po rzędach &amp;quot;idą&amp;quot; w ten sam sposób kolumny ekranu.&lt;br /&gt;
&lt;br /&gt;
* metoda $02 również zawiera spakowane dane, ale będą one umieszczone na ekranie tak samo jak w metodzie $00 (poziomo).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Same dane obrazka&amp;#039;&amp;#039;&amp;#039; (tzw. mapa bitowa) są skompresowane prostym algorytmem &amp;#039;&amp;#039;&amp;#039;RLE&amp;#039;&amp;#039;&amp;#039; (redukcja powtarzających się elementów). Kiedy np. pięć razy, jeden za drugim wystąpi w obrazku wartość &amp;quot;0&amp;quot;, nagrane zostaną jako &amp;quot;5x0&amp;quot;. Obrazek jest umieszczony w poszczególnych blokach. Są dwa typy bloków użytych w kompresji KOALI:&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Dane niespakowane&amp;#039;&amp;#039;&amp;#039;. Pierwszy bajt (jako znacznik) ma ustawiony bit 7 (128 dec), reszta tego samego bajtu stanowi długość bloku danych (maksymalnie 127 bajtów). Jeśli ta długość wynosi zero, to jest wtedy jeszcze o dwa bajty więcej - informują one o aktualnej długości (2-bajtowa wartość, więc będzie długi, niespakowany blok!). Następnymi bajtami są już same niespakowane dane.&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Dane spakowane&amp;#039;&amp;#039;&amp;#039;. Pierwszy bajt w takim bloku ma wyzerowany siódmy bit, reszta zaś jest długośćią bloku - tak samo, jak opisana wyżej. Tu jest tylko jeden bajt danych, który wypełni swą wartością wszystkie bajty w bloku. Po prostu informuje on o tym, jaka wartość jest skompresowana, a ze znacznika (pierwszego bajtu w bloku, informującego o statusie i długości całego bloku) wynika, ile razy trzeba go powtórzyć. Tu także może wystąpić długi, spakowany (tym razem) blok składający się z 3 bajtów &amp;quot;informujących&amp;quot; i jednego bajtu danych - zasada jest podobna jak w bloku niespakowanym.&lt;br /&gt;
&lt;br /&gt;
To tyle o budowie pliku w formacie Koali. Mimo, że efektywność kompresji w opisany sposób jest raczej kiepska (szczególnie przy dużych i skomplikowanych obrazkach), to zapis .PIC jest bardzo popularny, zapewne głównie przez prostotę jego realizacji (format podobny do .PIC stosuje np. edytor [[CIN (program)|CIN]], [[Trzmiel]], RGB Shower, czy [[XL-Paint]]...). Jakby jednak na to nie patrzeć, (prawie) zawsze obrazek trochę się skróci i raczej w wyjątkowych przypadkach opłaca się trzymać plik .MIC zamiast .PIC-a.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;(Artykuł pochodzi z magazynu &amp;quot;ENERGY #2&amp;quot;, autorem jest Dracon/Taquart)&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Formaty plików]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Atariki recovery</name></author>
	</entry>
</feed>