atarionline.pl PMG in action! - 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: CommentAuthorw1k
      • CommentTime13 Sep 2010 06:09 zmieniony
       
      how i can create simply PMG in action? is exist little example?
      • 2:
         
        CommentAuthorjhusak
      • CommentTime13 Sep 2010 08:09
       
      You mean PMG, as in title?
      • 3: CommentAuthorw1k
      • CommentTime13 Sep 2010 09:09
       
      yes
      • 4:
         
        CommentAuthorKaz
      • CommentTime13 Sep 2010 11:09
       
      If you can read in Polish I recommend to read "Atari Basic" written by Wieslaw Migut and others:

      ->link<-

      The PMG is described on pages 46-49, including simple example in Atari Basic.
      • 5: CommentAuthorw1k
      • CommentTime13 Sep 2010 11:09
       
      yes, i know some about pmg in basic, but how i can writen DATA in action!?
      • 6:
         
        CommentAuthorjhusak
      • CommentTime13 Sep 2010 16:09 zmieniony
       
      Look into my Battle Ships (BMUSIC) music source:

      ->link<-

      There is a lot of Data lines.
      • 7: CommentAuthorw1k
      • CommentTime14 Sep 2010 15:09
       
      ok, thank you.. hm, it is good idea making games in action in PMG, or exist other techniques?
      • 8: CommentAuthorGury
      • CommentTime15 Sep 2010 20:09
       
      Hi w1k, here is short example of using PMG in Action!

      ;
      ; Player/Missile Graphics demo
      ;
      PROC MAIN()

      CARD X
      BYTE Y
      BYTE A=106
      CARD PMBASE

      ; PLAYER DATA
      BYTE ARRAY PM_DATA=[
      153 189 255 189 153
      ]

      ; SET GR. MODE AND BACKGROUND COLOR
      GRAPHICS(0)
      POKE(710,0)

      ; PLAYER POSITION
      X=120
      Y=48

      ; SET PLAYER ADDRESS
      A=A-8
      POKE(54279,A)
      PMBASE=256*A

      ; ENABLE PM GRAPHICS WITH 2-LINE RES.
      POKE(559,46)
      POKE(53277,3)

      ; SET PLAYER HORIZONTAL POSITION
      POKE(53248,X)

      ; CLEAR PLAYER DATA FIRST
      ZERO(PMBASE+512,128)

      ; SET PLAYER COLOR
      POKE(704,216)

      ; DRAW PLAYER
      MOVEBLOCK(PMBASE+512+Y,PM_DATA,5)

      ; INFINITE LOOP
      DO OD

      RETURN
      • 9:
         
        CommentAuthorCosi
      • CommentTime15 Sep 2010 22:09
       
      Hello Gury! How is Effectus? :)
      • 10:
         
        CommentAuthortdc
      • CommentTime16 Sep 2010 02:09 zmieniony
       

      w1k:

      or exist other techniques?

      Yes, Action! is a very fast and interesting language. All advanced techniques from asm are quite available in Act. For example: hardware graphics multiplexer, interruptions, special modes like HIP etc.
      • 11: CommentAuthorw1k
      • CommentTime16 Sep 2010 07:09
       
      excelent! today i try it, thank you :)
      • 12: CommentAuthorw1k
      • CommentTime16 Sep 2010 07:09 zmieniony
       
      effectus error:

      MoveBlock #PMBASE+512+Y, #PM_DATA, #5
      .IF %3<$0100
      common.asm (220) ERROR: Illegal character: 3
      • 13: CommentAuthorGury
      • CommentTime16 Sep 2010 09:09
       
      Hello w1k, please try that code only in Action!, Effectus does not yet compile it properly.

      Hello to you too, Cosi. Effectus is in continued development and as such, many things are still missing. I am thinking about including symbol table for the code (variables, commands and such...), but not in the current branch of Effectus versions. I plan to make some more amendments to finish first stage of development and then starting with completely different approach to the problem.
      • 14:
         
        CommentAuthorCosi
      • CommentTime16 Sep 2010 10:09
       
      Good luck then! Please let us know, when a new version is ready - I guess some beta tests would be helpful ;-)
      • 15: CommentAuthorw1k
      • CommentTime17 Sep 2010 08:09
       
      and what about sequences in actions? I have to really write procedures from below?
      • 16:
         
        CommentAuthorinsert
      • CommentTime27 Dec 2010 22:12
       
      jak zakonczyc program i wrocic do edytora action zeby na ekranie nie zostawaly smieci po duszku?
      • 17: CommentAuthormono
      • CommentTime27 Dec 2010 22:12
       
      Wyłączyć DMA dla PMG w DMACTLS oraz zablokować przepisywanie sprajtów na ekran w PMGCTL.
      • 18:
         
        CommentAuthorinsert
      • CommentTime27 Dec 2010 23:12
       
      jak to najlepiej zrobic w action?
      • 19: CommentAuthormono
      • CommentTime27 Dec 2010 23:12 zmieniony
       
      Jakoś chyba tak (nie znam action):
      BYTE DMACTL = 559
      BYTE PMGCTL = 53277

      DMACTL = 34
      PMGCTL = 0

      Edit: Powinno działać.
      • 20:
         
        CommentAuthorinsert
      • CommentTime28 Dec 2010 10:12
       
      dlaczego wpisujesz wartosc 34? (prosze o lopatologiczne wyjasnienie)
      • 21: CommentAuthormono
      • CommentTime28 Dec 2010 12:12 zmieniony
       
      DMACTL oraz
      PMGCTL
      Edit: info
      Edit 2: w kodzie dla porządku zmienna powinna się nazywać DMACTLS, bo to jet cień; PMGCTL to PMCNTL (tak mi się jakoś utarło to PMGCTL) - ten nie ma cienia, więc ustawia się od razu rejestr sprzętowy; w zasadzie to tylko wyłączenie przepisywania sprajtów na ekran w PMCNTL powinno wystarczyć - DMACTLS nie musisz ruszać
      • 22:
         
        CommentAuthorinsert
      • CommentTime28 Dec 2010 12:12
       
      ok, ale nie lapie tego, jestem zupelnym poczatkujacym, tam bit 3 odpowiada za PMG dla graczy, powinien byc wyzerowany, liczba 34 w bin to 00100010, czyli zerujesz 3 bit ale dlaczego ustawiasz 6 i 2?
      • 23: CommentAuthormono
      • CommentTime28 Dec 2010 12:12
       
      Za przepisywanie sprajtów z rejestrów GRAFPx/M na ekran odpowiada bit 0 i 1 PMCNTL - kiedy je wyzerujesz sprajty znikną z ekranu niezależnie od ustawienia bitów w GTIACTL(S) oraz DMACTL(S).
      GTIACTL(S) służy tylko do konfigurowanie priorytetów PMG oraz tricków typu łączenie pocisków w 5 playera, lub włączenia trybu nakładania sprajtów (tzn. multicolor - nałożenie sprajtów/pocisków 1 i 2 oraz 3 i 4 na siebie skutkuje uzyskaniem dodatkowego koloru o wartości COLPM1 OR COLPM2 lub COLPM3 OR COLPM4).
      Bity 3 i 2 DMACTL za to służą do włączenia kanału DMA dla ANTICa, który automatycznie przepisuje co linię (lub co dwie - zależnie od bitu 4) dane z pamięci (konfigurowanej rejestrem PMBASE) do rejestrów GRAFPx/M. Bit 5 powoduje pobieranie danych programu displaylist dzięki czemu rysowany jest ekran, no a bity 0 i 1 konfigurują szerokość ekranu.
      • 24:
         
        CommentAuthorinsert
      • CommentTime28 Dec 2010 13:12
       
      oki, to ja to rozumiem tak:

      rejestr PMCNTL ma adres $D01D czyli 53277 dziesietnie, zeruje go w calosci czyli wpisuje w niego wartosc 0

      rejestr DMACTL ma adres $D400 czyli 54272 dziesietnie (dlaczego w przykladzie wpisujesz cos w adres 559 dziesietnie?)

      bity 3 i 2 ustawiam na zero w tym rejestrze zeby wylaczyc DMA dla PMG

      bity 0 i 1 to szerokosc ekranu wiec cos musza miec ustawione, czy tak?

      bit 5 musi byc wlaczony z tego co rozumiem

      wiec myslac tymi wytycznymi do tego rejestru wpisalbym 100010 (od prawej: nie ustawiam bitu 0 informacji o szerokosci ekranu, ustawiam bit 1 na normalny obraz 320 pixeli, zeruje oba DMA dla PMG, kolejny bit to rozdzielczosc graczy i pociskow wiec wstawiam 0 bo mnie to nie interesuje, bit 5 ustawiam na 1 bo ma byc wlaczony) co daje dziesietnie liczbe 34

      dobrze to rozumiem?
      • 25: CommentAuthormono
      • CommentTime28 Dec 2010 14:12
       
      Dokładnie. 559 ($22F) to tzw. rejestr-cień (SHADOW - stąd S na końcu oryginalnej nazwy) rejestru sprzętowego. System na każdym przerwaniu VBLK (co 1/50 lub 1/60 s) ustawia odpowiednie rejestry sprzętowe wartościami zapisanymi w cieniach. Nie wszystkie rejestry sprzętowe mają cienie więc np. takie PMCNTL trzeba ustawiać bezpośrednio.
      Oczywiście jak zablokujesz przerwanie VBLKD (albo ustawisz rejestr CRITIC=$41), to większość cieni nie będzie przepisywana.
      • 26:
         
        CommentAuthorinsert
      • CommentTime28 Dec 2010 14:12
       
      dziekuje! to sie teraz "podlozyles" i bede Cie meczyl ;)