atarionline.pl atrtools - narzędzia do automatyzacji konwersji + slideshow demko - 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: CommentAuthorgrafi71
      • CommentTime19 Jul 2019 13:07
       
      Hej :)

      Witam serdecznie, od czasu do czasu jestem gościem na tym forum ale nie udzielałem się do tej pory, może czas to zmienić :)

      Jako stary Atarowiec (uwierzcie mi na słowo że stary), wróciłem po 30 latach do korzeni by pobawić się moim pierwszym sprzętem.
      Atari (65xe) miałem mając gdzieś 15-18 lat, więc dość dawno (lata 80-te), trochę programowałem głównie w maszynówce, ale nigdy nie było mi dane bardziej rozwinąć skrzydeł ze względu na braki narzędzi i sprzętu (stacja dysków była poza moim zasięgiem).
      No, ale dziś nie ma takich ograniczeń i na fali sentymentu wróciłem by się trochę pobawić.

      Ale do rzeczy: bawiąc się napisałem konwerter gif -> assembler w python'ie dzieki czemu dobrze nadaje sie do automatyzacji takich konwersji.

      Potrzebny jest tylko plik gif w odpowiedniej ilosci kolorów, ja używam GIMP'a gdzie dowolny jpeg kadruje najpierw z proporcjami 32x20 , nastepnie skaluje do rozdzielczosci 160x192 a nastepnie konwertuje kolory do palety indeksowanej 4-kolorowej i taki obrazek zapisuje jako gif (w przypadku trybu ANTIC $0e i 4 kolorów).

      Narzedzie radzi sobie takze z trybami GTIA ale zawsze założnie jest, że obraz jest w "normalu": 40 bajtów na linię. Nalezy ustawic tylko odpowiedni "rate" (opcja '-r' -> vide dokumentacja).
      Można też używać palety 1-bitowej i trybu ANTIC $0f (rate=8).

      Narzedzie konwertuje takze kolory w formacie RGB do formatu Hue/Sat Atari, tworzac odpowiednia tablice z danymi.

      Zapisywane dane sa w formacie MAD Assembler (bo akurat takiego uzywam).

      Wrzuciłem to do repo na github'ie:

      ->link<-

      Jest tam opis jak to instalowac i uzywac.

      Narzedzie do konwersji grafiki potrafi ja takze kompresowac oraz zapisac do pliku procedure dekompresji (w assemblerze), gdzie trzeba tylko do odpowiednich rejestrow wpisac odpowiednie wartosci (patrz komentarz w tym pliku), vide opcje -c oraz -u nazwa_pliku.asm
      Procedura jest bezstratna wiec mozna ja uzyc takze do innych danych.

      Przyklad jak powinna wygladac display lista w asm:

      .align 1024
      .local dlist_1
      :3 .byte $70
      .byte $4e, a(image_1)
      :101 .byte $0e
      .byte $4e, a(image_1.next_1)
      :89 .byte $0e
      .byte $41, a(dlist_1)
      .endl

      Przyklad jak powinna wygladac procedura wyswietlania obrazu (nieskompresowanego):

      .proc init_image
      mva colors_1.c1 708
      mva colors_1.c2 709
      mva colors_1.c3 710
      mva colors_1.c0 712
      mva #0 GPRIOR
      mwa #dlist_1 SDLSTL
      rts
      .endp

      opcja "-l" skryptu jest po to by kazdy obrazek czy tablica z kolorami mialy unikalna labelkę (tu jest to po prostu wartosc "1" -> stad image_1 oraz colors_1).
      opcja "-a" pozwala wygenerowac odpowiedni align (by dane obrazu zaczynaly sie od bloku 4K).

      Zrobiłem takze proste demko (slideshow: terminator.xex , załączone) gdzie wykorzystywane sa obrazki uzyskane z tego narzedzia (skompresowane, dzieki czemu zmiescilo sie ich 6 i powinny dzialac na 64 KB pamieci - testowalem tylko na Altirze).

      Dodałem także funkcjonalność konwersji muzyki z formatu SAP (ale tylko typ 'B') do assemblera: sapconv (vide dokumentacja). Może kiedyś ją dopracuję, ale i tak dzieki niej wrzuciłem bez problemu muzykę do demka).

      Wrzucam to wszystko bo moze komus się przyda i mam duzy sentyment do tego sprzetu i oczywiście pozdrawiam innych "dziadków"-Atarowców ;)

      Acha, jesli wynalazłem ponownie koło - to trudno - miałem i tak z tym sporo zabawy.

      pozdrawiam,
      Grzegorz aka Gandalf

      ps. czemu Gandalf ? Ksywka jeszcze z liceum, musiałem ją wrzucić :)
      • 2: CommentAuthorgorgh
      • CommentTime19 Jul 2019 13:07
       
      no i pięknie, narzędzi nigdy za wiele, witaj i mamy nadzieję, że jeszcze nas zaskoczysz!
      • 3:
         
        CommentAuthorbocianu
      • CommentTime19 Jul 2019 15:07
       
      super fajne narzędzie.
      gratuluje pomysłu.
      • 4: CommentAuthorgrafi71
      • CommentTime19 Jul 2019 16:07
       
      Dziękuję za miłe słowa :)
      Gdy zdarzy mi się jeszcze dodać jakieś funkcjonalności na pewno dam znać.
      • 5:
         
        CommentAuthorCOR/ira4
      • CommentTime19 Jul 2019 17:07
       
      fajne,Terminator 1 to jeden z moich ulubionych filmów .
      W niedługim czasie będę konwertował ten film na A8 -spod SIDE śmiga aż miło i to z dźwiękiem :-) .
    1.  
      XEX uses $0600-2E0F, it's difficult to find a loader which loads this one on a real Atari. Many loaders do require some memory in the $0700-09FF area (or even more, e.g. DOS), so it would be good to leave this small memory area unused while loading the program (it could be used e.g. after depacking)...
      • 7: CommentAuthorgrafi71
      • CommentTime20 Jul 2019 09:07
       
      @CharlieChaplin

      In the attachement you'll find corrected version.
      I had to replace the music and one of the images, anyway :)
      But it should load now, I hope!

      Regards,
      G.
    2.  
      Tested and works - thank you !
      • 9: CommentAuthorgrafi71
      • CommentTime28 Jul 2019 14:07
       
      Witam ponownie!

      W wolnych chwilach rzeźbię jeszcze przy tym narzędziu i dodałem tam właśnie obsługę kompresji lz4 : zarówno w imgconv jak i sapconv.
      I oto mamy wersję 0.2.0 :)
      A w niej:

      opcja -m pozwala wybrać algorytm kompresji:
      - legacy (dotychczasowy, prosty)
      - lz4

      Przykladowe wywolanie:

      python -m atrtools.imgconv -c -e -r 4 -s obrazek.gif -d obrazek.asm -l labelka -m lz4 -u uncompress.asm

      Jesli podamy takze opcje -u (jak wyzej) to do podanego pliku wygeneruje sie odpowiednia procedura dekompresji.
      W przypadku lz4 procedurę wziąłem stad:
      ->link<-
      Jedna ciekawa rzecz: napisane jest przy algorytmie dekompresji że należy pominąć 11 znaków z początku i 6 znaków z końca skompresowanego pliku. Zauważyłem że prawdą jest pomijanie pierwszych 11 bajtów (co też imgconv robi), pomijanie ostatnich powodowało zwis procedury. Być może python'owa implementacja lz4 nie generuje tych "niepotrzebnych" bajtów.

      Sama dekompresja w przypadku lz4 jest prosta:

      mwa #image_obrazek unlz4.source ; zalaczony obrazek
      mwa #image unlz4.dest ; pamiec ekranu 8KB
      jsr unlz4 ; wywolanie procedury z pliku uncompress.asm

      Dla trybu 'legacy' jest troche wiecej roboty:

      mwa #image_obrazek SCREEN_SRC_L
      mwa #image SCREEN_DST_L
      mwa #(.len image_obrazek) SCREEN_LEN_L
      mwa #0 SCREEN_TMP_L
      jsr uncompress


      Dodatkowo, jeśli nie używamy kompresji program może wygenerować do pliku asm także prostą display listę, musimy tylko podać tryb Antic'a (opcja "-o"; domyślnie jest to 14).
      Może kiedyś, komuś się to narzędzie przyda...

      Załączam proste slideshow jakie zrobilem na szybko gdzie zarowno obrazki jak i muzyka jest skompresowana :)


      pozdrawiam!
      G.
      • 10:
         
        CommentAuthorDracon
      • CommentTime30 Jul 2019 00:07
       
      Z opisu narzędzie wygląda obiecująco.
      Czy powstanie kiedyś do niego jakieś wygodne GUI (pod Windows najlepiej) ? ;o
      • 11: CommentAuthorgrafi71
      • CommentTime30 Jul 2019 08:07
       
      Hej,
      Właściwie to zamiar był taki by był to tylko command line.
      Tak łatwiej coś zautomatyzować, np cały proces budowania za pomocą komendy make :)
      Ciekawe czy ktoś używa make dla małego Atari ?