atarionline.pl Tajniki grafiki Atari XL/XE - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1: CommentAuthorcreative
    • CommentTime11 Apr 2013
     
    Przypomniała mi się pewna kwestia, która zawsze kiedyś mnie zastanawiała - chodzi o grafikę z takich gier jak np. Misja czy Klątwa. Jestem pewien, że żołnierze w tej pierwszej, czy główny bohater w tej drugiej nie są sprite'ami, wobec czego powstaje pytanie o to, jak została sprawa rozwiązana, biorąc pod uwagę fakt, że oba się nakładają na tło niczym zwykłe sprite'y (nie ma np. czarnego prostokątnego obrysu, gdyby były to zwykłe znaki). Jedyne rozwiązanie, jakie przychodzi mi do głowy, to nakładanie się wzorca postaci na znak, który jest w tle - co jednak może znacząco zmniejszyć ilość dostępnych znaków...

    Pytanie zatem: czy ktoś wie w jaki sposób to zrobiono?
    • 2: CommentAuthor0xF
    • CommentTime11 Apr 2013
     
    W Misji jest tak jak piszesz. Liczba jednocześnie widocznych żołnierzy jest ograniczona, więc wystarczy na nie kilka znaków.

    Klątwa jest w trybie bitmapowym.
    • 3: CommentAuthorcreative
    • CommentTime12 Apr 2013
     
    Thx. Kolejne pytanie, które mi się kiedyś nasuwało: czemu w Atari Basicu odmienne (niż standardowy) tryby graficzne są obsługiwane następującą instrukcją w przypadku wyświetlania znaków:

    PRINT #6;"Atari"

    Konkretniej, zastanawia mnie, skąd się bierze owa #6? (czemu 6, a nie np. #5, #8 czy coś innego)?
    • 4: CommentAuthorxxl
    • CommentTime12 Apr 2013 zmieniony
     
    to wynika ze sposobu dzialania atari:
    edytor (E:) uzywa kanalu #0
    ekran graficzny czyli urzadzenie S: uzywa #6

    kanalow jest 8 od #0 do #7 - dodatkowo basic uzywa #7 dla operacji czytania zapisu/danych na nosnik
    • 5: CommentAuthor0xF
    • CommentTime12 Apr 2013
     
    Precyzując tę odpowiedź...

    Projektanci systemu operacyjnego Atari założyli, że do operacji wejścia/wyjścia będzie można używać jednocześnie ośmiu tzw. kanałów (w dzisiejszej terminologii nazwalibyśmy je uchwytami strumieni).
    Np. jeśli chcesz zapisać coś do pliku, możesz to zrobić tak:
    OPEN #1,8,0,"D:MOJPLIK.TXT":PRINT #1;"Hello, world!":CLOSE #1

    (wybrałem kanał 1, bo zwykle jego się używa w takim celu, ale równie dobrze działałyby np. 2,3,4,5).

    Kanał 0 został przeznaczony na edytor czyli urządzenie E: (dzisiaj nazwalibyśmy to konsolą). Z kolei projektanci Atari BASIC wymyślili, że instrukcja GRAPHICS otwiera tryb graficzny (urządzenie S:) na kanale 6, a instrukcje LOAD/SAVE/ENTER/LIST/RUN i chyba LPRINT używają kanału 7.
    • 6: CommentAuthorcreative
    • CommentTime14 Apr 2013 zmieniony
     
    Ok. Jednak z tego co pamiętam, ekran w Atari dzięki ANTIC jest dzielony na linie, posiadające łączny adres pamięci obrazu (znak / piksel bez względu na tryb, jeśli nie mieści się w jednej linii, przeskakuje do następnej - może to być linia np. tryb BASICA 0 i następna 7 - nie ma znaczenia jaka, ANTIC wszystkim zarządza sam, tak, że zgodnie z logiką znak nie mieszczący się w trybie 0 staje się kolorowym odpowiednikiem w trybie 7 w tym przykładzie). Umieszczenie czegoś pod tym obszarem jest równoznaczne z wyświetlaniem. Zastanawia mnie tu owo rozróżnienie spowodowane przez dwa odrębne kanały dla - technicznie rzecz biorąc - tego samego urządzenia (obrazu): jeden dla E:, drugi dla S: - ostatecznie z punktu widzenia ANTIC jedno i drugie to obraz, a tryby graficzne są bez znaczenia... Choć jeśli pamięć mnie nie myli, oba (edytor i ekran graficzny) posiadały odrębny adres pamięci obrazu... Z perspektywy czasu, to dość dziwne rozwiązanie, zwłaszcza biorąc pod uwagę dużą elastyczność i możliwości ANTIC'a.
    • 7:
       
      CommentAuthortdc
    • CommentTime14 Apr 2013 zmieniony
     
    Patrzysz na to z punktu widzenia praktyka, projektanci systemów patrzą na zagadnienie bardziej teoretycznie dlatego ich nie rozumiesz. To że coś jest niepotrzebne to jedno, a to że projektant systemu sobie wymyślił że tak ma być to drugie ;)

    Ja jako programista Atari, kompletnie unikam takich rzeczy i programuję właśnie tak jak piszesz od strony praktycznej a nie pomysłów projektantów systemu (który nie jest mi potrzebny poza tym że uruchomi mój program). Oczywiście proszę mi nie zarzucać, że ja nie szanuję projektantów systemu Atari, bo ich szanuję.