atarionline.pl Graph2Font - 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: CommentAuthorhubowski
      • CommentTime15 Jan 2020 22:01 zmieniony
       
      Witam wszystkich,

      Potrzebuje porady jak uzyskac tablice znakow po przekonwertowaniu prostej grafiki na font przy uzyciu graph2font.
      Po zapisaniu konwersji na plik assemblera, zauwazylem ze jedyna tablica ktora posiada jakiekolwiek sensowne dane to .charset0 (pozostale albo sa identyczne lub puste).

      Po ustawieniu prostej petli i zapisywaniu wartosci poszczegolnych znakow do kolejnych rejestrow ekranu, jako wynik koncowy mam krzaki.
      Podejrzewam ze w niewlasciwy sposob odczytuje tablice znakow z plikow wynikowych graph2font. Zwracam sie z zapytaniem w jaki sposob moge najprosciej takie wartosci wyeksportowac.

      Zalaczam moj testowy, prosty kod w C, ktory jest oparty na tutorialach ktore znalazlem na zacnym forum :)

      Jedyne co nie do konca ma dla mnie sens w kodzie ponizej to rozmiar tablicy - plik ASM ma tablice o wielkosci 1024 wartosci gdy obszar ekranu w trybie 0 to 960.

      Dzieki!
      -------------------
      #include <atari.h>
      #include <stdio.h>
      #include <peekpoke.h>

      #include "atari_defs.h"

      #define SCREEN_SIZE 40

      unsigned char *video_ptr;
      unsigned char chars;

      unsigned char screen1[1024] = {0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x05,0x15,0x15,0xD5,0x57,0x54,0x54,0x50,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x50,0x50,0x54,0x54,0x55,0xD5,0x15,0x35,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x00,0x00,0x00,0x01,0x0D,0x05,0x15,0x55,0x15,0xD5,0x55,0x54,0x55,0x55,0x55,0x57,0x40,0xC0,0x03,0x15,0x55,0x55,0x50,0x00,0x00,0x0D,0x55,0x55,0x57,0x40,0x00,0x00,0x35,0x55,0x55,0x57,0x00,0x00,0x00,0x00,0x55,0x55,0x57,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x57,0x00,0x00,0x03,0x05,0x55,0x55,0x55,0x55,0x01,0x35,0x55,0x55,0x58,0x40,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x55,0x55,0x7D,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x05,0x00,0x00,0x00,0x00,0x5C,0x5C,0x55,0x55,0x35,0x00,0x00,0x00,0x00,0x00,0x70,0x57,0x55,0x55,0x0D,0x00,0x00,0x00,0x00,0x00,0x50,0x57,0x55,0xD5,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x57,0x01,0x01,0x01,0x0D,0x0D,0x05,0x05,0x05,0x5C,0x50,0x50,0x50,0x70,0x70,0x40,0x40,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x03,0x50,0x5C,0x54,0x57,0xD5,0x15,0x15,0x55,0x00,0x00,0x01,0x35,0x55,0x55,0x5C,0x50,0x0D,0x15,0x55,0x55,0x55,0x15,0x15,0x55,0x55,0x57,0x5C,0x50,0x70,0x40,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x15,0x00,0x00,0x00,0x03,0x05,0x55,0x55,0x54,0x00,0x01,0x15,0x55,0x55,0x5C,0xC0,0x00,0xD5,0x55,0x57,0x70,0x00,0x00,0x00,0x00,0x54,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0xD5,0x05,0x00,0x00,0x00,0x00,0x00,0x40,0x5C,0x55,0x55,0x15,0x01,0x00,0x00,0x05,0x35,0x15,0x15,0x15,0x15,0x15,0x15,0x40,0x40,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x15,0x00,0x00,0x01,0x05,0x95,0x55,0x54,0x50,0x05,0xD5,0x55,0x54,0x50,0xC0,0x00,0x00,0x55,0x53,0xC0,0x00,0x00,0x00,0x00,0x00,0x5C,0x55,0x55,0x15,0x15,0x35,0x15,0x15,0x54,0x54,0x50,0x50,0x70,0x50,0x5C,0x54,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x55,0x00,0x00,0x00,0x0D,0x15,0x55,0x55,0x50,0x01,0x35,0x55,0x55,0x54,0x40,0x00,0x00,0x55,0x57,0x50,0xC0,0x00,0x00,0x00,0x00,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x01,0x05,0x15,0x55,0x00,0x01,0x35,0xD5,0x55,0x54,0x50,0x40,0x55,0x57,0x58,0x40,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x01,0x01,0x05,0xD5,0xD5,0x57,0x54,0x55,0x55,0x55,0x55,0x50,0x55,0x15,0x55,0x55,0x5D,0x40,0x00,0x00,0x55,0x54,0x50,0x50,0x54,0x57,0xD5,0x15,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x15,0x35,0x05,0x05,0x05,0x05,0x0D,0x0D,0xC0,0x40,0x40,0x40,0x40,0x40,0x70,0x50,0x01,0x05,0x15,0x55,0x55,0x54,0x50,0x40,0x55,0x54,0x50,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x05,0x00,0x00,0x00,0x01,0x05,0xD5,0x55,0x54,0x01,0x05,0xD5,0x55,0x54,0x50,0xC0,0x00,0x55,0x55,0x55,0xD5,0x15,0x15,0xD5,0xD5,0x40,0x40,0x40,0xC0,0x00,0x00,0x00,0x00,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x50,0x54,0x57,0x55,0x15,0x05,0x09,0x03,0x00,0x00,0x00,0x00,0x40,0x50,0x54,0x57,0x01,0x01,0x01,0x03,0x00,0x00,0x00,0x00,0x50,0x50,0x5C,0x54,0x54,0x54,0xD5,0x15,0x00,0x00,0x00,0x00,0x00,0x01,0x05,0x15,0x01,0x05,0x35,0xD5,0x55,0x54,0x50,0x40,0x55,0x54,0x50,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x01,0x05,0x15,0x55,0x54,0x50,0x40,0xD5,0x55,0x54,0x50,0xC0,0x00,0x00,0x00,0x50,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x55,0x57,0x54,0x54,0x54,0x54,0x54,0x54,0x55,0x15,0x05,0x01,0x03,0x00,0x00,0x00,0x80,0x40,0x50,0x54,0x55,0x55,0x15,0x05,0x00,0x00,0x00,0x00,0x00,0xC0,0x40,0x50,0x15,0x35,0x05,0x05,0x0D,0x01,0x01,0x00,0x00,0x40,0x40,0x70,0x50,0x50,0x5C,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0D,0x00,0x03,0x09,0x05,0x15,0x55,0x57,0x54,0x55,0x57,0x54,0x50,0x40,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x01,0x05,0x00,0x00,0x00,0x01,0x35,0xD5,0x55,0x54,0x0D,0x15,0x55,0x55,0x5C,0x70,0x00,0x00,0x57,0x50,0x40,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x54,0x54,0x5C,0x5C,0x5C,0x5C,0x5C,0x5C,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x54,0x55,0xD5,0x35,0x05,0x01,0x00,0x00,0x00,0x00,0xC0,0x70,0x5C,0x57,0x55,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x57,0xD5,0x15,0x35,0x05,0x05,0x01,0x03,0x00,0x00,0xC0,0x40,0x70,0x50,0x58,0x54,0x00,0x00,0x00,0x03,0x0D,0x05,0x15,0x55,0x05,0x15,0x55,0x57,0x5C,0x50,0x40,0x00,0x50,0x40,0x00,0x00,0x00,0x01,0x05,0x15,0x00,0x00,0x09,0x35,0xD5,0x55,0x54,0x50,0x15,0x55,0x57,0x5C,0x40,0x00,0x00,0x00,0x50,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x03,0x03,0x03,0x00,0x00,0x5C,0x5C,0x5C,0x54,0x54,0x54,0x54,0x54,0x05,0x0D,0x03,0x00,0x00,0x00,0x00,0x00,0x50,0x54,0x55,0x55,0x15,0x05,0x01,0x00,0x00,0x00,0x00,0xC0,0x70,0x50,0x54,0x55,0x57,0x55,0x15,0x35,0x05,0x0D,0x01,0x03,0x00,0x00,0xC0,0x40,0x70,0x50,0x5C,0x54,0x03,0x01,0x05,0x15,0xD5,0x55,0x54,0x50,0x57,0x54,0x50,0x40,0xC3,0x0D,0x35,0x55,0x55,0x57,0x5C,0x40,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x54,0x54,0x54,0x57,0xD5,0xD5,0x15,0x15,0x95,0x35,0x05,0x01,0x00,0x00,0x00,0x00,0x40,0x70,0x5C,0x57,0x55,0x15,0x05,0x0D,0x00,0x00,0x00,0x00,0x00,0x40,0x50,0x54,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x05,0x05,0x05,0x15,0x55,0x55,0x54,0x50,0x50};
      extern char font_base;

      void set_colors()
      {
      POKE(COLOR1,0xFF);
      POKE(COLOR2,0);
      }

      void set_font()
      {
      POKE(CHBAS,((unsigned int) &font_base)/256);
      }
      void draw_image()
      {
      unsigned char y = 1;

      for (chars=0;chars<sizeof(screen1);chars++) {
      video_ptr[chars]=screen1[chars];
      }
      }

      int main(void)
      {

      _graphics(0);
      set_font();

      video_ptr=(unsigned char*)(PEEKW( PEEKW(560)+4 ));
      draw_image();
      for(;;)
      {

      }
      return 0;
      }
      • 2: CommentAuthorMADRAFi
      • CommentTime15 Jan 2020 22:01
       
      Graph2font powinien zapisac ci 2 rodzaje plikow:
      nazwa.scr
      nazwa.fnt

      scr to zapisane znaki na ekranie czyli na ktorym miejscu ekranu jaki znak postawic, przy uzyciu standardowego fontu to beda losowe literki, cyfry i znaki specjalne

      fnt mozna miec w 2 wersjach.
      w 1 duzym pliku ktory bedzie mial wielkosc rowna wielokrotnosci rozmiaru fontu na atari (ktorym jest 1024 bajty) lub tez kazdy font w osobnym pliku
      Do pokazania grafiki wiec potrzebujesz tablice ze znakami z pliku scr

      W MAD-Pascal scr mozna zaladowac z pliku do tablicy lub miec juz ta tablice wrzucona w kodzie.
      Potem jedynie laduje resourcy typu font pod adres w pamieci i zmieniam ustawiony font na ten pod adresem pamieci.
      • 3: CommentAuthortebe
      • CommentTime15 Jan 2020 23:01
       
      prawy - górny narożnik w G2F, przycisk 'Save all data files'

      pamięć obrazu 40*24 = 960 bajtów (plik SCR), każdy bajt to numer znaku ATASCII, 0..127 znaki bez inwersu, 128..255 te same znaki ale w inwersie

      jeden zestaw znaków liczy sobie 1024 bajty (plik FNT), 128*8 = 1024, każde kolejne 8 bajtów z zestawu opisuje kształt znaku

      G2F zapisuje wszystkie zestawy jeden za drugim, stąd niekiedy większy rozmiar niż 1024 bajty

      plik TAB (24 bajty) to informacja, który zestaw w wierszu ustawić, najczęściej na przerwaniu DLI jest to realizowane
      • 4: CommentAuthorhubowski
      • CommentTime15 Jan 2020 23:01
       
      Dziekuje bardzo za odpowiedzi.

      Kompletnie nie zauwazylem pliku .scr. Teraz musze go jakos zaladowac (wyglada na binarny) i powinno byc z gorki! :)
      • 5:
         
        CommentAuthorKaz
      • CommentTime15 Jan 2020 23:01 zmieniony
       
      Cześć hubowski - pozwoliłem sobie wstawić w Twój post znaczniki [ code ] i [ /code ] (oczywiście bez spacji), żeby się program nie rozjeżdzał w przeglądarce. Teraz jest poprawnie formatowany. Polecam korzystać z tego udogodnienia, dodatkowo można wtedy program od razu zapisać sobie jako ATASCII.

      A nad jaką gierką pracujesz, zdradzisz szczegóły?
      • 6: CommentAuthorhubowski
      • CommentTime15 Jan 2020 23:01
       
      Dzieki Kaz! Szukalem za forumowym FAQ jak sformatowac kod ale nie moglem znalezc - bede pamietal :)

      Bedzie prosta przygodowka (o ktorej opowiadalem Ci przez telefon - to ja:), natomiast z racji tego ze poznaje dopiero bardziej doglebnie mozliwosci Atari, nie dopinam scenariusza bo byc moze beda konieczne ciecia :)
      • 7:
         
        CommentAuthorKaz
      • CommentTime16 Jan 2020 01:01 zmieniony
       
      A, to Ty Hubert! To witaj w swoim pierwszym wątku na AOL :D
      Gra zapowiada się bardzo dobrze, to trzymam kciuki za powodzenie projektu.

      PS. Skorzystam z okazji, żeby podpowiedzieć wszystkim nowym, że FAQ o forum (trochę nieaktualne, ale nie w zakresie znaczników) jest tutaj:

      ->link<-


      Takie aktualnie można robić "myki" na forum:

      [ code ] [ /code ] pozwala wstawić listing dowolnego programu. Program wyświetlony w ramce, z użyciem odpowiedniej czcionki jest oczywiście czytelniejszy niż gdyby był wstawiony jako zwykły tekst. Nie ma podkolorowania słów kluczowych.

      [ code basic ] [ /code ] również przeznaczone do wstawiania listingów, ale tym razem dla programów w Atari Basic i Turbo Basic XL. Wszystkie słowa kluczowe obu tych języków oraz użyte cyfry są wyróżniane kolorem, co ogromnie zwiększa czytelność listingu.

      [ code php ] [ /code ] podobnie jak powyższe pary znaczników, do wstawiania listingów, ale w językach „pecetowskich“. Kolorami wyróżnione są poszczególne elementy listingu.

      [ b ] [ /b ] włączenie pogrubienia tekstu.

      [ u ] [ /u ] włączenie podkreślenia tekstu.

      [ i ] [ /i ] włączenie kursywy czyli pochylenia tekstu.

      [ quote ] [ /quote ] to oczywiście sposób na cytowanie poprzedniej wypowiedzi. Proszę pamiętać o cytowaniu tylko najistotniejszego fragmentu, a nie całości, szczególnie gdy jest ona długa. Po co innym utrudniać zrozumienie, o co nam chodziło?

      [ quote Użytkownik ] [ /quote ] również pozwala cytować wcześniejszą wypowiedź, ale od razu ze wskazaniem jej autora.

      Wstawianie linków do innych stron nie wymaga stosowania żadnych znaczników w tekście, chociaż oczywiście znaczniki [ url= ] oraz [ /url ] działają. Wystarczy jednak podać link poprzedzony _http://_ albo po prostu wkleić link ze strony. Ukaże się nam napis ->link<- , a po najechaniu na niego kursorem myszy w pasku informacyjnym przeglądarki będzie widać cały adres.

      Podobnie jest z wklejaniem grafik, zdjęć i filmów. Jeżeli podamy link do zdjęcia na przykład w formacie jpg to właśnie to zdjęcie zostanie wyświetlone. Jeżeli będzie to film umieszczony na przykład na YouTube to od razu zostanie wyświetlony jego podgląd i możliwość odtwarzania.
      • 8: CommentAuthorMADRAFi
      • CommentTime16 Jan 2020 07:01
       
      Moze jeszcze sie zastanowisz czy nie lepiej pisac w MAD-Pascal :)

      Moglbys np uzyc narzedzia:

      ->link<-

      i exportowac do tablicy ktora ma 40 bajtow na wiersz
      • 9: CommentAuthorhubowski
      • CommentTime16 Jan 2020 08:01 zmieniony
       
      Sklamie, jesli powiem ze sie nie zastanawialem :) Doszedlem jednak do wniosku ze z racji ze pisze cos w C na inna platforme, kolejny jezyk to juz chyba za duzo :) C i tak musze odkurzac bo nie pisalem od czasow studenckich ale w Pascalu to ostatni raz chyba ze 22 lata temu :)

      Co do podlinkowanego narzedzia, jest fantastyczne. Nie tylko od strony funkcjonalnej ale interfejs tez jest super. Uzywam do przerabiania .scr'a na tablice w C. Wieczorem musze poczytac jak (i kiedy przelaczac charsety odczytane z .tab) :)
      • 10: CommentAuthorilmenit
      • CommentTime16 Jan 2020 08:01
       
      @hubowski - CC65 jest równie dobry jak MadPascal (a nawet generuje szybszy kod). Jak piszesz w C/C++/C# na inne platformy, to przesiadka na składnie Pascala nie jest przyjemna :)
      Ja w CC65 piszę dużo (w tym mam jeden właśnie otwarty projekt) i jak masz pytania, to dawaj :)
      Tu jest przykład prostej gry ze źródłami, która używa grafikę na fontach, muzykę i efekty dźwiękowe:
      ->link<-
      A jakbyś chciał bardziej skomplikowany przykład, to "większa gra" jest dostępna tutaj ->link<-
      • 11: CommentAuthorhubowski
      • CommentTime16 Jan 2020 09:01
       
      @ilmenit - dzieki! Czytalem kurs Twojego autorstwa i nie ukrywam ze pomogl mi "ruszyc" z cc65 dla Atari. Pobocznie jak tylko czas mi pozwala zapoznaje sie z architektura Atari, zeby jakos to efektywnie szlo. Z "C-podobnymi" jezykami mialem troche stycznosci, stad wybor cc65.
      • 12:
         
        CommentAuthorbocianu
      • CommentTime17 Jan 2020 00:01
       
      @ilmenit
      CC65 jest równie dobry jak MadPascal (a nawet generuje szybszy kod).


      Możesz podać przykłady w których generuje szybszy kod?
      Jestem serio bardzo ciekaw, bo moje doświadczenia z obydwoma tymi kompilatorami mówią coś zupełnie przeciwnego.
      • 13: CommentAuthorilmenit
      • CommentTime17 Jan 2020 08:01
       
      @bocianu - tu była dyskusja ->link<-
      W przykładach MadPascala w najnowszej wersji jest kod Sieve i ostatnio testowałem - nie poprawiło się od tamtego czasu.

      Kod w CC65 można dodatkowo zoptymalizować zastępując wykorzystany w kodzie tamtym wątku "register" ->link<- , zmiennymi dekladowanymi na zero page używając #pragma zpsym ->link<-
      • 14: CommentAuthorhubowski
      • CommentTime17 Jan 2020 09:01
       
      @ilmenit - pozwolilem sobie wyslac maila z kilkoma pytaniami, daj prosze znac czy doszedl. Troche utknalem w kwesti przelaczania charsetow :(
      • 15: CommentAuthorhubowski
      • CommentTime17 Jan 2020 10:01
       
      Kurcze, na taki wyslalem. Zerknij prosze w spam - jesli tam wyladowalo, musze poprawic rekordy w DNS :(

      Dzieki!
      • 16: CommentAuthorilmenit
      • CommentTime17 Jan 2020 10:01
       
      Już widzę, dałeś do tematu CC65 a miałem ustawiony filtr przenoszący wiadomości z takim tematem do specjalnego folderu (ze względu na subskrybcję mailowej grupy kompilatora cc65). Odpiszę dzisiaj.
      • 17: CommentAuthorhubowski
      • CommentTime17 Jan 2020 10:01
       
      Super, dzieki! Nie ma pospiechu, kiedykolwiek znajdziesz czas - bede wdzieczny :)
      • 18: CommentAuthortebe
      • CommentTime17 Jan 2020 12:01 zmieniony
       
      Ilmenit, mój błąd, nie aktualizowałem skompilowanej wersji SIEVE

      ->link<-

      w miarę możliwości proszę o kompilację aktualną wersją CC65
      • 19: CommentAuthorilmenit
      • CommentTime17 Jan 2020 14:01 zmieniony
       
      + zamienione "while" na "for", ponieważ to są pętle "for" (inicjalizacja zmiennej i na koniec jej inkrement), co teraz generuje troszkę lepszy kod.
      602 ticks (lub 604, zależy od emu i jego wersji - na dwóch kompach dostałem inny wynik, albo od czegoś w ustawieniach e.g. w jednym mam QMEGa).
      • 20: CommentAuthorilmenit
      • CommentTime17 Jan 2020 21:01 zmieniony
       
      @bocianu
      Możesz podać przykłady w których MadPascal generuje szybszy kod?
      • 21: CommentAuthorzbyti
      • CommentTime2 Feb 2020 09:02
       
      Z AA ->link<- bo tutaj się dyskusja urwała.

      C - 608 ticks (optimizations turned on)

      C - 856 ticks (optimizations turned off)

      Mad Pascal - 670 ticks (variables on ZEROPAGE, $DEFINE FAST)

      Mad Pascal - 752 ticks (standard)

      Compiled with the newest CC65 - 602 ticks.
      • 22:
         
        CommentAuthorbocianu
      • CommentTime2 Feb 2020 10:02
       
      @ilmenit: miałem ogólne wrażenie po napisaniu kilku programów w cc65, a potem w mp, że pewne rzeczy działaja szybciej i mam więcej czasu w ramce. Mogło to też wynikać z moich szczątkowej wiedzy na temat Atari w tamtym czasie, albo umiejętności w samym C, ale wrażenie pozostało :)

      jak wrócę z ferii to się chętnie tym pobawię i porównam, bo mam gdzieś na dysku te moje stare rzeczy.
      • 23:
         
        CommentAuthortdc
      • CommentTime3 Feb 2020 11:02
       
      Też jestem tym zainteresowany ;)
      • 24: CommentAuthorzbyti
      • CommentTime16 Feb 2020 15:02 zmieniony
       
      Bawię się właśnie Action!.

      Nie porównywałem dokładnie implementacji algorytmu ale w jednym przebiegu Mad Pascal (bez optymalizacji) wydaje się porównywalny do Action!

      EDIT: po testach w innym wątku należało by powiedzieć, że to Acton! w tym teście jest porównywalny do Mad Pascala, który jest od niego generalnie szybszy.
      • 25: CommentAuthorilmenit
      • CommentTime17 Feb 2020 08:02
       
      Action! to fajne podejście do języka programowania na 6502 i jego konstrukcja umożliwia generowanie całkiem szybkiego kodu. Ale gdy dobrze użyty, cc65 jest szybszy ;)
      • 26: CommentAuthorzbyti
      • CommentTime17 Feb 2020 11:02 zmieniony
       
      @ilmenit ale nie wspomniałem, że wynik Action! jest osiągnięty przy shut off Antic, więc Mad Pascal będzie jednak sporo szybszy od niego bo jego wynik jest osiągnięty przy włączonym ekranie.
      • 27: CommentAuthorzbyti
      • CommentTime17 Feb 2020 12:02
       
      Tutaj wynik przy włączonym ekranie.