Od lat noszę się z tym żeby upublicznić mój projekt - program do generowania stereogramów na Atari wraz z edytorem do tworzenia obrazków o 16 poziomach głębi.
Z odnalezionych kiedyś na kasetach wielu wersji wybrałem te, które są największe i wyglądają na ulepszone, nie wiem jednak czy rzeczywiście są to wersje ostatnie. Część jest opisana jako fragment do testów, więc może być tak, że te mniejsze wersję są rozwojowymi wersjami tych uznanych za ostatnie.
Program do generowania stereogramów nie działa dobrze w trybie "4" - gdzie powinien generować stereogram od środka obrazka - niestety wynikowy obrazek ma błąd właśnie na środku, gdzie brakuje fragmentu i powstaje jakby zakładka... w pozostałych trybach jest w miarę ok, jednak z tego co widać warstwy mają zmienione wymiary, co być może też jest błędem, a być może zrobiłem to tak celowo.
Niestety nie pamiętam szczegółów działania generatora i póki co nie jestem w stanie tego poprawić.
Co zrobiłem ostatnio: Połączyłem obydwa listingi i przeniosłem do Turbo Basic-a. Teraz generowanie obrazka jest dostępne z poziomu edytora (oryginalnie trzeba było osobno wczytać generator) - jednak uwaga!: obrazek z edytora zostanie usunięty, więc przed generowaniem stereogramu trzeba go zapisać! Na zapisanie stereogramu mamy tylko jedną szansę - tuż po jego wygenerowaniu, później obrazek jest czyszczony! Zapisany stereogram obecnie zawiera część menu, co oczywiście mam zamiar poprawić. Przymiarką do zmian jest dodanie programu "okna", jednak obecnie nie ma to większego zastosowania - można się przełączać między dwoma obrazkami (shift + w), docelowo tej opcji nie planuję zostawić. Doszła opcja inversu (shift +i) - na razie musi wystarczyć do generowania "odwróconych stereogramów" - do patrzenia "X". Teraz oprócz zapisu można też wczytać obrazek (w gr.9) utworzony wcześniej. Zaoszczędziłem też sporo pamięci - tuż po połączeniu listingów w Turbo Basic-u zostało około 100B, teraz około 4KB + miejsce na kopię edytowanego obrazka. Doszła też możliwość odczytywania wzoru z pliku, wcześniej dane należało ręcznie zapisać w liniach Data (ta możliwość została usunięta).
Do programu przygotowałem i skonwertowałem sporo obrazków dostępnych w sieci, a ostatnio też i wzorów. Wzory o szerokości 32 piksele trzeba przygotować zewnętrznymi narzędziami - gotowy wzór zapisuję graph2font-em w formacie mic (rozszerzenie zmieniam na gr8).
Program uruchamiamy z Turbo Basica, najwygodniej z "urządzenia" H6:
NEW
E."H6:STS.TXT
RUN
Wtedy z H: i na H: odczytujemy i zapisujemy pliki.
Uaktualniony fragment instrukcji:
Stereogramy na Atari
Taki upał, a ja jestem chory. Ponieważ jeszcze zupełnie z sił nie opadłem wyciągnąłem pudło z kasetami... Na jednej między utworami usłyszałem znajome piski :) I tak odnalazły się moje programy do tworzenia stereogramów na małym Atari.
Programy te powstały w 1996 roku.
Pierwszy raz ze stereogramami spotkałem się wcześniej - w wakacje w jednej z gazet umieszczony był konkurs - "Co jest na tych obrazkach?" - tak długo się wpatrywałem, aż zobaczyłem i od tej pory stereogramy mnie zafascynowały choć jeszcze wtedy nie wiedziałem, że tak się nazywają.
Pomysł napisania programu generującego stereogramy zrodził się później - pod wpływem programu napisanego na Timex's przez mojego kolegę - generował on stereogram z tekstu. Wtedy przeczytałem książkę "Komputerowe Stereogramy" i na podstawie algorytmów w niej zawartych powstały moje programy na Atari.
Stereogram generowany jest na podstawie grafiki zawierającej dane o poziomach głębi, tzn. każdy kolor oznacza poziom głębi - im jaśniej tym bliżej, lub odwrotnie - zależy jakim sposobem patrzymy.
Edytor grafiki w trybie gr.9 zapewnia możliwość utworzenia stereogramu o 16 poziomach głębi.
Od początku był tak pomyślany, żeby jak najbardziej ułatwić rysowanie grafiki z której zostanie wygenerowany stereogram, stąd opcje edycji linii.
Stereo Rysowanie Instrukcja:
[Program jest zapisany jako listing - wczytujemy go tak jak opisałem powyżej.]
Po uruchomieniu tworzona jest tablica dla szybszego rysowania okręgów.
Ekran:
Pierwszy wskaźnik pokazuje wybrany poziom głębi (kolor)
Drugi wskaźnik pokazuje poziom głębi pod kursorem
Obszar roboczy ograniczony jest ramką - tu możemy rysować.
Na dole umieszczony jest obszar edycji linii - po naciśnięciu spacji pokazuje poziomy linii w której znajduje się kursor.
Klawisze:
strzałki - góra dół - wybór poziomu głębi (koloru) którym rysujemy
joystick - przesuwa kursor
fire - rysuje
shift + p - point - ustawia kolor pod kursorem jako aktualny
tab - zmiana trybu - aby zobaczyć mniej widoczne kolory
shift + k - P-K początek-koniec - kursor przeskakuje w miejsce poprzedniego przełączenia
spacja - wykres głębi bieżącej linii
shift + c - copy - wkleja linię która jest na wykresie
shift + x - merge - wkleja fragmenty linii z wykresu w miejscach bieżącej linii w których jest wybrany obecnie kolor
shift + e - edit - edycja linii
return - wyjście z trybu edycji
strzałka w górę - podnoszenie poziomu
strzałka w dół - obniżanie poziomu
strzałka w lewo - przesuw w lewo
strzałka w prawo - przesuw w prawo
joystick - przesuwa pojedyncze piksele (poczwórna szerokość, bo w gr.9)
shift + f - fill - wypełnia wybranym kolorem (ograniczony bufor, więc dla większych powierzchni trzeba wykonać kilkukrotnie na pominiętych fragmentach)
shift + b - box - prostokąt
shift + l - linia
shift + o - okrąg
w trakcie rysowania np. okręgu
esc - przerwanie rysowania (inne klawisze również przerywają, ale w inny sposób)
shift + i - inverse
control + s - save screen
control + l - load screen
control + g - generuj stereogram
W czasie rysowania joystick'iem jednocześnie można strzałkami zmieniać poziom głębi (kolor)
Tryb edycji linii - edycja danych linii znajdujących się na wykresie - możemy wybrać dowolną linię, nacisnąć spację, shift + e, zmienić wartości w linii, zakończyć return'em i w wybranej kursorem linii wkleić - shift + c - całość, lub - shift + x - tylko fragmenty dla wybranego koloru w danej linii.
Stereogram Generator Instrukcja:
Program posiada opcję zapisu / wczytywania rysunku.
Zapisu (control + s) trzeba dokonać przed wywołaniem części generującej stereogram (control + g), gdyż po wybraniu opcji nasz rysunek w pamięci komputera zostanie zastąpiony stereogramem.
1 - generuje standardowy RDS
kolejne opcje od 2 do 4 generują stereogram z wzoru zapisanego w pliku, który trzeba wskazać.
po wygenerowaniu zapisujemy stereogram (obecnie zapis nagrywa też fragment menu).
[jak opisałem wyżej opcja 4 działa nieprawidłowo]
Na zapisanie stereogramu jest tylko jedna szansa - po ukończeniu pracy generatora - program prosi o podanie ścieżki do zapisu. Następnie stereogram zostanie wyczyszczony!
Docelowo program ma używać przełączanych "ekranów" - mapy głębi i wyjściowego stereogramu.
Program generalnie jest powolny. Warto by było przenieść go do assemblera lub chociaż skompilować [co być może zrobię w późniejszej wersji]. Na emulatorze polecam tryb "warp".
I to na dziś tyle. W załączniku program STS.TXT, 16 przykładowych obrazków głębi, 40 wzorów i 5 wygenerowanych stereogramów (wstawionych powyżej).