atarionline.pl Graphics 9 z poziomu assemblera - 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: CommentAuthortomaswoj
    • CommentTime22 May 2016
     
    Cześć,

    zaczynam swoją przygodę dopiero i mam pytanie:
    - czy z poziomu czystego assemblera da się ustawić Gr.9 (ale graficzny) bez konieczności specyfikowania display listy?

    Teraz robie tak:
    LDA #64
    STA 623

    I generalnie tryb sie ustawia, ale jak coś wrzucę w pamięć ekranu, to pojawia się jakiś 'losowy' kleks - zajmuje mi to 2 kolumny (po 4 piksele każda) na wysokość znaku. Obstawiam więc, że mam Gr0 z ustawionym trybem 9 GTIA, ale nadal jest to tryb znakowy. Zwłaszcza że nie znika mi kursor (0,0).

    Jaki jest najprostszy (najmniejszy obiętościowo) sposób żeby uzyskać "czysty", graficzny tryb 9?

    Przegrzebałem parę tutoriali, dokumentów, itd. ale tam wszędzie jest display lista. A jeśli chcę mieć po prostu standardowy, niemieszany, bez DLI, bez scrollingow, tryb 9? Też muszę DL specyfikować?

    Z góry dzięki za wszelkie porady!
    • 2:
       
      CommentAuthorlarek
    • CommentTime22 May 2016 zmieniony
     
    Tryb graficzny 9 to dla Antica nic innego jak tryb graficzny 8. Musisz, jak dla każdego trybu zbudować odpowiednią Display List. Później - tak jak to robisz - informujesz GTIA, że to ma być tryb 9.

    Do zbudowania odpowiedniego DL można wykorzystać OS, czyli wykonać OPEN "coś tam" z parametrami GR8. Na Atariki była chyba odpowiednia procedura, ale Atariki ostatnio leży martwe...

    Budowa własnego DL nie jest trudna :)
    • 3: CommentAuthortomaswoj
    • CommentTime22 May 2016
     
    Hej Larek,

    dzięki wielkie za odpowiedź. Reasumując - nie da się ustawić żadnego trybu graficznego bez zbudowania DL? Pytam, bo przymierzam się do 256b na SV, a tutaj jak wiadomo każdy bajt na wagę złota. Ot takie fanaberie wynikające z kryzysu wieku średniego :)
    • 4: CommentAuthorxxl
    • CommentTime22 May 2016
     
    oczywiscie ze sie da...

    lda #8
    jsr $EF9C
    lda #64
    sta 623

    natomiast jesli chcesz zdobyc poklask wsrod planktonu to uzyj CIO.
    • 5: CommentAuthorwieczor
    • CommentTime22 May 2016
     
    Tryb graficzny to właśnie display list :) Atari nie ma czegoś takiego jak ogólnie tryb - tylko linie w różnych trybach i trzeba go poinformować jakie one mają być :) Ale tak jak Larek podpowiedział - są w OSie procedury robiące takie rzeczy, przypuszczam, że skoro to 256b to RAMu pod BASIC-iem czy OS-em nie potrzebujesz? ;)
    • 6:
       
      CommentAuthorlarek
    • CommentTime22 May 2016 zmieniony
     
    Poczekaj chwilę to pewnie zaraz ktoś napisze jak wywołać jakąś procedurę w OS/może BASIC (jeśli ona tam jest). Ja się na tym nie znam i zawsze robię to "ręcznie" :)


    edit

    XXL i Wieczór mnie uprzedzili :)
    • 7: CommentAuthorwieczor
    • CommentTime22 May 2016 zmieniony
     
    Tylko nie wiem czy się to opłaci, bo i tak będziesz musiał sprawdzić gdzie on to w pamięci zrobił :) Przypuszczalnie pętla budująca DL z pamięcią obrazu tam gdzie chcesz może zajmować mniej ;)

    Edit

    A może nie - jeśli wiesz co masz włączone to wiadomo gdzie to jest.
    • 8: CommentAuthortomaswoj
    • CommentTime22 May 2016
     
    Dzięki XXL.

    wygląda obiecująco, bo jak rozumiem to wywołanie OPEN z OSa o którym wspominał Larek (co mi uświadamia jak króciutki jeszcze jestem, że nie zrozumiałem odpowiedzi :/). Tyle że niestety wygląda na to że u mnie nie zadziałało :/. Dalej, po wywołaniu w/w sekwencji jak wrzucam coś w pamięć ekranu, to dostaje 'piksel' 8x8 podzielony na dwie kolumny 4x8. Używam WUDSN/MADS + Altirra (jeśli to może mieć jakikolwiek wpływ). BASIC wygląda na wyłączony.

    Z góry przepraszam, jeśli to są trywialne pytania, ale nie znam żadnego innego forum gdzie mógłbym je zadać :).
    • 9: CommentAuthorxxl
    • CommentTime22 May 2016
     
    to zadziala tylko jesli atari ma oryginalny rom... w alitirze podejrzewam masz podpiety jakis inny.

    na party po prostu upieraj sie zeby uruchamiac Twoj program na prawdziwym atari a nie jakims przerabianym mutancie ;-)
    • 10: CommentAuthorxxl
    • CommentTime22 May 2016
     
    lda #8
    jsr $ef9c
    lda #64
    sta 623
    lda #$f0
    sta $b000

    pixel miej wiecej w polowie ekranu - sprawdzilem teraz na emulatorze atari800 win plus
    • 11: CommentAuthortomaswoj
    • CommentTime22 May 2016
     
    Na A800winplus z wyłączonym basic z OS-B działa! Dzięki wszystkim za pomoc! :)
    • 12: CommentAuthorwieczor
    • CommentTime22 May 2016
     
    W Altirze też działa. ROM ATARIXL.ROM (nie wiem jaka to wersja). A może przypadkiem wyłączasz ROM?
    • 13: CommentAuthorpin
    • CommentTime22 May 2016
     
    XXL, czyli atari z innym romem to już mutant? ;) dobre.
    • 14: CommentAuthortomaswoj
    • CommentTime22 May 2016
     
    @Wieczor,

    też działa, faktycznie. Pewnie wpadłem w typowe problemy newbie, gdzie zbyt dużo zmian równocześnie spowodowało że przestałem panować nad konfiguracją. Dzięki jeszcze raz! :) Mam nadzieję, że nie zabrałem/zmarnowałem zbyt dużo Waszego czasu!
    • 15: CommentAuthormono
    • CommentTime23 May 2016
     
    ->link<-
    Polecałbym użycie CIO a nie skoków do ROM-u, bo Atari to nie C64 i ma różne ROM-y w różnych maszynach.
    • 16: CommentAuthorwieczor
    • CommentTime23 May 2016
     

    xxl:

    to zadziala tylko jesli atari ma oryginalny rom


    Absolutnie każdy? Bo tych oryginalnych jest kilka. Wszystkie mają to w tym miejscu?
    • 17: CommentAuthor0xF
    • CommentTime23 May 2016
     
    Wzorcowy i bezproblemowy kod jest w linku podesłanym przez mono.