atarionline.pl TOMEK-8 vs VBXE demo - 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: CommentAuthormono
      • CommentTime2 Feb 2014 20:02 zmieniony
       
      Część i czołgiem Towarzystwu!
      Miałem swego czasu napad podczas oglądania TOMEK-8 cartridge tech-demo aby sprawdzić, na ile wydajnie dałoby się coś podobnego zrobić z wykorzystaniem znanego i lubianego VBXE.
      Cóż, jak pomyślałem tak też niedawno uczyniłem i oto: http://mono.atari.pl/vbxe/t8vbxe.zip

      W mojej implementacji program ładuje grafiki z dysku, po czym przepisuje je do VRAM i zleca VBXE wygenerowanie grafik przesuniętych o 1,2,3..7 pikseli. CPU zajmuje się tylko aktualizacją pozycji obiektów, określeniem na podstawie pozycji x i y którą grafikę (będącą w jego VRAM) ma pokazać i gdzie, oraz wygenerowaniem blit-listy dla VBXE. VBXE podczas każdej ramki TV wykonuje tę listę i maluje obiekty w swoim VRAM na zorganizowanym tam ekranie wirtualnym o rozmiarze 208+256 x 60+208+60 pikseli (to jakieś 58 * 328 = 19024 bajty), po czym na końcu kopiuje kawałek tegoż ekranu na fizyczny ekran widziany przez ANTICa. Dzięki temu CPU nie musi obcinać obiektów do rozmiaru ekranu i marnować niepotrzebnie cykli. Kompletny obraz malowany jest przez ANTICa co oczywiście spowalnia CPU.
      Oczywiście gdyby wszystko zostało przerzucone na barki VBXE (wyświetlanie grafiki na overlay'u), to nie trzeba byłoby generować przesunięć (akurat to niczego by nie zmieniło i obiekty zajęłyby w VRAM taki sam obszar), CPU miałby więcej czasu na swoje obliczenia i wszyscy żyli by długo i szczęśliwie. Nie o to jednak mi chodziło, a chciałem właśnie sprawdzić możliwości współpracy VBXE (blittera) z ANTIC'em przy malowaniu zwykłej grafiki Atari.
      Parafrazując Nosty'ego mogę powiedzieć, iż na ekranie dzieje się:
      - 12 obiektów o rozmiarach 40x27 pikseli,
      - 12 obiektów o rozmiarach 56x54 piksele,
      - 12 obiektów o rozmiarach 72x57 pikseli,
      - 12 obiektów o rozmiarach 88x43 pikseli
      + okazjonalnie gwiazda śmierci (2 obiekty), teksty (1 obiekt) no i tło (1 obiekt).
      Liczę kształt, jak i maskę jako osobne obiekty.
      W celach poglądowych wprowadzone zostały też wskaźniki obrazujące zajętość:
      - blittera VBXE (pasek po lewej stronie ekranu),
      - CPU (paski po prawej stronie ekranu - 1 pasek to jedna ramka TV, 2 paski to dwie itd.).
      W początkowej fazie z przycinaniem obiektów do ekranu, liczeniem pozycji z częścią ułamkową (ale blitowaniem obiektów od razu na ekran ANTICa) wszystko zajmowało CPU ponad 4 ramki :/ Obecnie obsługa tych 52 obiektów mieści się w ramce (arytmetyka na liczbach całkowitych, koordynaty obiektów na liczbach naturalnych co eliminuje arytmetykę U2, tablicowane dzielenie przez 8, oraz adresy początków linii dla ekranów wirtualnego i rzeczywistego).

      Nie wiem, jak Nosty urządził sobie swój kod i jakie rzeczy robi mu processor na TOMKU, a czym dokładnie zajmuje się CPU, ale widać że wąskim gardłem przetwarzania jest CPU w Atari :/ Niestety. (No i oczywiście umiejętności koderskie człowieka) Tak więc motyw z "Gwiezdnych Wojen" trzeba sobie puścić z empetróchy (a taką fajną muzykę Pinokia miałem na podorędziu w TMC... :/).

      Jak to uruchomić? Otóż wymagania są określone dość klarownie:
      - Sparta DOS X w wersji 4.4x (ja używałem 4.46),
      - VBXE z rdzeniem FX 1.2x (mam 1.24a),
      - Atari XL/XE z minimum 64KB RAM,
      - jakiś nośnik dyskietkowy (przykro mi, ale przez moje lenistwo z magnetem to to nie podziała).

      Jeśli ktoś chciałby się przyjrzeć kodowi, to udostępnię go każdemu chętnemu (obecnie trzeba zamailować), a w późniejszym terminie wygeneruję jakiegoś zipa i instrukcję jak i czym to kompilować.

      Pozostaje mi, jako autorowi życzyć Wam wszystkim smacznego i zachęcić do szczerej krytyki (wyrazy wdzięczności, zachwytu, bluzgi, faki w demach, etc. mile widziane) ze szczególnym uwzględnieniem Nosty'ego gdyż bardzo podoba mi się jego projekt i moralnie wspieram go z całych sił.

      Jak to uruchamiać:

      1. Załadować sterownik VBXEFXS.SYS, który tworzy w pamięci RAM cienie dla rejestrów VBXE (będzie o tym osobny wątek w terminie późniejszym).
      UWAGA!
      Sterownik ten gryzie się z S_VBXE.SYS więc zaleca się niewspółistnienie.

      2. Załadować T8VBXE.COM.
      • 2: CommentAuthorpin
      • CommentTime2 Feb 2014 23:02
       
      nieźle to wygląda na Rapidusie. Szacunkowo 20-25% ramki ;) ... czyli 4-5 razy szybciej :D
      • 3: CommentAuthormono
      • CommentTime3 Feb 2014 00:02
       
      Jest nowa Altirra, która poprawnie realizuje blity VBXE: ->link<-
      • 4: CommentAuthormono
      • CommentTime3 Feb 2014 23:02 zmieniony
       
      Seban zgrał wideo: ->link<-
      • 5:
         
        CommentAuthorxeen
      • CommentTime4 Feb 2014 04:02
       
      dzięki, wygląda imponująco :)
      • 6:
         
        CommentAuthorMaW
      • CommentTime4 Feb 2014 08:02
       
      Pytanie: a jak to się ma do porównania z muzą ?
      • 7: CommentAuthormono
      • CommentTime4 Feb 2014 10:02
       
      Muzyki nie włączałem póki co do kodu, ponieważ interesowało mnie tylko ustalenie co można zrobić i jak dużo.
      • 8:
         
        CommentAuthorjhusak
      • CommentTime4 Feb 2014 16:02
       
      Seban, a czy tylko u mnie tak skacze? (2 do przodu trzy do tyłu - skroll idzie a potem się cofa troszkę i znowu idzie...)

      Ale ogólnie jestem pod wrażeniem.
      • 9: CommentAuthor0xF
      • CommentTime4 Feb 2014 17:02
       
      Prościej byłoby generować obraz przez VBXE z obiektami w 256 kolorach.
      • 10: CommentAuthorseban
      • CommentTime4 Feb 2014 20:02 zmieniony
       
      @jhusak: Hej! U mnie (windows, linux) wszystko jest OK. Odtwarzam VLC (zew. player-em) lub Windows Media Player, ew. Media Player Home Cinema. Bo plugin VLC pod przeglądarką (fire-fox) ścina frame-rate o połowę (~25 fps), ale nie ma efektu "dwa do przodu, trzy do tyłu".

      A może Ci player video próbuje wykonać de-interlace gdy widzi stream 50fps?
      • 11:
         
        CommentAuthortdc
      • CommentTime5 Feb 2014 07:02
       
      Bardzo fajne;)

      mono:

      widać że wąskim gardłem przetwarzania jest CPU w Atari :/ Niestety. (No i oczywiście umiejętności koderskie człowieka)

      Czyli małe Atari stało się pecetem :P
      • 12: CommentAuthormono
      • CommentTime5 Feb 2014 12:02
       
      @0xF: "Oczywiście gdyby wszystko zostało przerzucone na barki VBXE (wyświetlanie grafiki na overlay'u), to nie trzeba byłoby generować przesunięć (akurat to niczego by nie zmieniło i obiekty zajęłyby w VRAM taki sam obszar), CPU miałby więcej czasu na swoje obliczenia i wszyscy żyli by długo i szczęśliwie. Nie o to jednak mi chodziło, a chciałem właśnie sprawdzić możliwości współpracy VBXE (blittera) z ANTIC'em przy malowaniu zwykłej grafiki Atari."
      • 13:
         
        CommentAuthorjhusak
      • CommentTime5 Feb 2014 23:02
       
      To Quicktime mi wariował. Pod VLC jest OK.
      • 14: CommentAuthormono
      • CommentTime23 Jan 2015 21:01
       
      Zaktualizowana wersja używająca VBXEFXS.SYS lub S_VBXE.SYS.
      • 15: CommentAuthorpin
      • CommentTime23 Jan 2015 23:01 zmieniony
       
      Dzięki Mono za aktualizacje. Hehh, pod Spartę to niezłe zaplecze playerów i przeglądarek się porobiło ;)- w sensie źródeł, to w sumie zostało prawie nic. W sumie, to nad *.md8 się kiedyś zastanawiałem, ale chyba wyłącznie ze sentymentu.
      • 16: CommentAuthorpin
      • CommentTime23 Jan 2015 23:01 zmieniony
       
      w runext, to z kojarzeniem typów plików do programów wyjechałem chyba powyżej 50 wpisów ;)