Program graficzny "Graph8" by Kaz 2008-06-25 02:53:17

Jerzy "Mono" Kut to zupełne przeciwieństwo wielu forumowych krzykaczy, do których sam się pewnie zaliczam :). Zamiast panoszyć się ze swoimi poglądami, w zaciszu dłubie i dłubie... a potem okazuje się, że wydłubał, najczęściej coś, o czym inni tylko rozmawiają, marnując czas na jałowe dyskusje. Pokazałem wczoraj jego rewelacyjne grafiki zrobione autorskim programem Graph8, a dziś prezentuję sam program, w którym powstały. To jeszcze jedno wykopalisko z zeszłego stulecia - aplikacja powstawała w latach 1994-1997. Przez skromność autora dotychczas tylko kilka osób miało przyjemność widzieć to dziełko, ale nastał czas, by zaprezentować je szerszej publiczności.

Mono w Głuchołazach z Epim (po lewej) i TDC (po prawej)


Program, jak sama nazwa wskazuje, służy do tworzenia grafiki w ósmym trybie graficznym czyli w hi-res, w kolorze (w sensie komputerowym) czarnym i białym, o maksymalnych rozmiarach obrazka 320 na 200 pikseli. Działa na standardowym Atari i do prawidłowego działania wymaga oczywiście DOS-a (ma specjalne wsparcie dla SpartaDOS). Z unikalnych rzeczy: posiada własny format zapisu i odczytu danych (format: rozszerzenie GHG - Gephard Hires Graphics, nagłówek tego formatu to dwa bajty szerokości obrazka, potem bajt wysokości, a potem lecą żywe dane od lewej do prawej i z góry na dół), potrafi zapisywać rysunki w formacie peceta (BMP) oraz Amigi (IFF/ILBM). Zaprawdę ciekawe narzędzie jak na lata, w których powstawało.

Po uruchomieniu widzimy ściągawkę ze spisem klawiszy rozpoznawanych przez program. Naciśnięcie dowolnego klawisza przenosi nas na ekran główny. Tutaj mamy nasze pole do rysowania o wymiarach 320 na 200 pikseli, kształt narzędzia (pędzla) do rysowania w lewym, górnym rogu ekranu oraz linię informacyjną na dole ekranu. Pasek informacyjny oprócz nazwy programu zawiera dane o aktualnym kolorze pędzla (Colr) oraz jego rozmiarze (Brsh), wymiarach aktualnego bloku (szerokość i wysokość, standardowo blokiem jest cały obrazek) i aktualnej pozycji pędzla na ekranie (x i y). Rysować możemy klasycznie i oldschoolowo - joystickiem lub klawiaturą (kursory i Shift), albo bardziej nowocześnie - przy użyciu myszki od Amigi (jak pisze Mono: "prawy przycisk trzeba podpiąć do +5V przez rezystor i jest chyba okey - przynajmniej w mojej myszce; ale chyba tutaj nie jest prawy przycisk w ogóle obsługiwany, więc można śmiało wpinać do Atari bez przeróbki i powinno działać").



Klawiszami od 1 do 8 zmianiamy grubości pędzla, klawisz inwersji zmienia kolor pędzla między czarnym i białym (pędzlem, a gumką), Control+Clear czyści ekran. Blok odznacza się wciskając Control+B, po czym należy wcisnąć przycisk i ciągnąć do punktu, w jakim chcesz blok zakończyć (nie mają znaczenia kierunki). Robimy to następująco:
Można to też zrobić joystickiem - wciskamy i trzymamy fire zamiast Shift, przesuwamy kursor na koniec bloku i puszczamy fire. Analogicznie myszą, ale z użyciem jej lewego przycisku. Rozmiar bloku będzie się zmieniał na bieżąco. To, gdzie mamy aktualnie zaznaczony blok można łatwo sprawdzić inwersją bloku (Control+I). Ładowanie bloku odbywa się za pomocą Control+L i wpisania lokacji - linia nazwy pliku ma support do SpartaDOS 3.2d:
Zapis bloku (a więc i całego obrazka) do pliku to Control+S. Program potrafi czytać i zapisywać własny format GHG, a eksportować do prawdziwej pecetowej bitmapy (BMP) całego ekranu odbywa się za pomocą Control+X. Samo X eksportuje do IFF/ILBM. Przetestowałem oba formaty - zarówno mój pecet (BMP, IFF), STE (IFF), jak i Amiga (IFF) czytają je bez problemu. Mamy do dyspozycji schowek - używane są do jego obsługi dwa klawisze: Insert - wstawia blok ze schowka, Delete - pobiera blok do schowka.

I jeszcze komentarz od Jurka: Wszystkie prace zostały wykonane tym właśnie programem przy użyciu: klawiatury, joysticka i myszki od Amigi podłączonej do Atari (różne manipulatory przydawały się na różnych etapach pracy). Rozwijałem ten programik jeszcze pod kątem obsługi różnych kształtów pędzla, ale nie wiem czy jest jakaś działająca wersja. Jak znajdę to podeślę.

Dzisiaj nie umiem już rysować :). To były chyba jedne z ostatnich prac, które zrobiłem w ogóle. Trochę jeszcze rysowałem ołówkiem na papierze, ale to też tamte czasy (pierwsze lata technikum - ponad 10 lat temu). Na Głuchołazach 2007 zastanawiałem się, czy nie pokazać tych obrazków na gfx compo, ale w końcu zrezygnowałem. Dawno to było i nieprawda :). Pokazałem je publicznie w sumie tylko raz, na sztabie u Jada, w obecności Pinokia, Dracona, Truba i Yerzmyeya.



"Prince.ghg" to jakiś szkic; to samo "cos.ghg". "game1.ghg" to szkice postaci do planowanej przeze mnie dawno temu gry polityczno-przygodowej. Obawiam się jednak, że sam nie dałbym rady temu nawet dzisiaj - podstawa to bardzo dobry scenariusz, a nie grafika. "Aplr.ghg" to grafika do playera CMC. "Digits.ghg" to jakieś wydziwiane cyferki. Reszta to różne skończone rzeczy."


Dysk z programem i wszystkimi grafikami jest już w katalogu użytków. Dodatkowo na dyskietce znajduje się programik WORM.COM, który jest ciekawym wygaszaczem ekranu (włącza się zamiast trybu przyciągania uwagi). Enjoy!

------------
Uzupełnienie podesłane przez Jurka:
"Nawiasem mówiąc analizowałem format zapisu pliku GHG i trzeba uściślić - plik jest binarny o następującym formacie:
0...1: LSB-MSB szerokość bloku w pikselach
2: wysokość bloku w pikselach
3..x: grafika

Grafika zapisywana jest począwszy od linii 0 aż do n-1 (dla bloku złożonego z n linii). Każda linia zapisywana jest w postaci m bajtów uszeregowanych następująco:

piksel
0 0 0 1 1 2
0 7 8 5 6 3
-------- -------- --------
0 1 2
bajty

W przypadku gdy ilość pikseli nie jest wielokrotnością 8 (tyle pikseli mieści się w bajcie), bity odpowiadające pikselom poza linią bloku są kasowane na 0, na przykład blok o szerokości 3 pikseli zostanie zapisany następująco:

bity
0 7
***-----
0
bajty.

Ilośc bajtów linii można więc obliczyć za pomocą wzoru: (width+7)/8. Wynik jest oczywiście liczbą całkowitą z OBCIĘTYMI miejscami po przecinku (nie zaokrąglamy)."
Kaz 2008-06-25 02:59:03

Dopiero jak sobie poprobowalem cos narysowac to zrozumialem, skad sie w obrazkach Mono wziely te charakterystyczne "efekty pedzla". To ciekawy feature, nadaje specyficznego klimatu rysunkom.

wuj 2008-06-25 09:33:13

epi, chorujesz na jaskre ?

iak 2008-06-25 10:25:11

Chyba raczej na Jaskra, jeżli już. :)

kanapka 2008-06-25 14:34:03

kolejny nieodkryty talent - sam rysuje, programuje, brawo!

larek 2008-06-25 22:53:59

Ale miałem zły sen! Śniło mi się, że na atarionline.pl wybuchła wojna... Dobrze, że to tylko sen...

Kaz 2008-06-25 23:36:44

News spelnil juz swoja role informacyjno-prewencyjna, nie ma potrzeby, zeby pewne osoby korzystaly z tego do podjudzania ludzi przeciwko sobie. EOT.

Kaz 2008-06-26 01:27:02

Uzupełniłem artykuł o podesłane przez Mono informacje o formacie GHG.

bob_er 2008-06-26 13:22:17

odnosnie formatu:
szerokosc jest podana co do pixla, jendakze dane obrazka sa zaokraglane do pelnego bajta w gore - przynajmniej taka jest praktyka w zalaczonych grafikach.
z tego schematu wylamuje sie tylko 1-szy obrazek (na A chyba). nie wiem, czy on jest uszkodzony, czy tylko ja cos pomieszalem.

mono 2008-06-26 13:42:09

Jeśli chodzi o APLR.GHG to masz rację. Omyłkowo znalazła się tam zwykła bitmapa w formacie .BMP. Wysłałem już maila do Kaza z prośbą o korektę.

yerz 2008-06-27 15:44:06

Ojej, TDC jak zwykle w 4 kolorach. :> Jak on to robi? :>

Kaz 2008-06-27 17:14:18

Kazdy atarowiec ma w standardzie 4 kolory ;)

Kaz 2008-06-27 17:26:05

Przy okazji: dostalem poprawny dysk z grafika APLR, ale czekam jeszcze na drobna poprawke Mono w samym programie, bo odkrylismy, ze w pewnej okreslonej sytuacji prog sie zawiesza. Mono szuka przyczyny, a jak poprawi to skompiluje nam nowa wersje.

bjc 2008-06-27 19:17:08

Ach! Gra polityczno-przygodowa, jeszcze z taką grafiką to byłby hicior! Może Autor powróci do tego tematu....