atarionline.pl PMG - pytanie do znawców - 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:
       
      CommentAuthorxeen
    • CommentTime22 Aug 2014 zmieniony
     
    Niestety nie mam aktualnie prawdziwego Atari, żeby to sprawdzić.

    Co się stanie, jeżeli kilka razy w linii na DLI zmienimy pozycję duszka (na takiej samej zasadzie jak np. zmieniamy kolory kilka razy w linii)? Która wartość zostanie "uwzględniona" przez komputer - o ile jest to deterministyczne?
    • 2: CommentAuthorxxl
    • CommentTime22 Aug 2014
     
    duch pojawi sie w dwoch pozycjach.

    jest ciekawsza rzecz. jesli odpowiednio zmienimy szerokosc ducha w linii to duszek zostanie rozciagniety na cala szerokosc ekranu. widzialem cos takiego w tescie Foxa.
    • 3:
       
      CommentAuthorjhusak
    • CommentTime22 Aug 2014 zmieniony
     
    Zależy, czy załapie. Jak załapie, to będzie widać. W środku GTIA jest komparator, i jeśli porównanie pozycji poziomej z aktualną pozycją wyświetlania wypadnie pomyślnie, to rejestr przesuwny duszka zaczyna wywalać go na ekran orując wartość z rejestru graficznego z poprzednią pozostałą zawartością w rejestrze przesuwnym (który z reguły dawno jest pusty).

    Altirra Hardware Reference o tym wspomina, strony 77-80.
    • 4:
       
      CommentAuthorxeen
    • CommentTime22 Aug 2014
     
    dziękuję.

    nie ukrywam, że jestem (mile) zaskoczony i zachęcony do eksperymentów, bo można teoretycznie tego samego ducha wyświetlić dwa razy w linii.

    Ktoś tego użył "na poważnie"? - jest jakaś prodka wykorzystująca te możliwości? (poza Rastą - jak mniemam tam też to tak może działać)
    • 5: CommentAuthortebe
    • CommentTime22 Aug 2014
     
    wielokrotnie Xeen

    ostatnim moim osiągnięciem jest uzyskanie 7 duchów w linii, jeden obok drugiego z możliwością definicji kształtu każdego z nich

    w grze Nibbly, tło stanowią dwa duchy, rozmnożone na całą szerokość, dodatkowo na panelu są mnożone duchy 4 kolorowe
    • 6: CommentAuthorVidol
    • CommentTime22 Aug 2014 zmieniony
     
    ducha mozesz wyswietlic max. 6 razy, na wiecej nie starcza czasu w lini.

    Efekt ten mozna zobaczyc w:
    The Top #3 - w czesci Thorgala
    Bitter Reality - Dragon Bobs
    Nibbly - Murki podkolorowane sprajtami + pionowe belki w dolnym panelu.

    I pewnie jeszcze w paru innych produkcjach ktorych akurat teraz nie pamietam :)

    Tebe byl szybszy :)
    • 7:
       
      CommentAuthorxeen
    • CommentTime22 Aug 2014 zmieniony
     
    No to nieźle

    Wyobrażam sobie taki "nowy" tryb do statycznych obrazków - jeżeli takimi duchami zapełnimy niekoniecznie cały ekran. Oczywiście aby wyrobić się ze zmianą wykorzystujemy wszystkie duchy.

    - hires + 1 kolorowy lowres z duchów

    Co daje w sumie 3 kolory - z tego dwa to hiresowy (w zależności od tego czy na duchu czy nie), jeden lowresowy.

    Bez cudowania takie coś mamy tylko na 40px.
    • 8:
       
      CommentAuthormiker
    • CommentTime22 Aug 2014
     
    Za to inwersując hiresa, tzn. kiedy "rysujemy tłem", to podłożone pod to tło duchy też są "w hiresie". :)
    • 9: CommentAuthorbob_er
    • CommentTime22 Aug 2014
     
    Z tym, że ten 3ci kolor w hiresie to fajnie wygląda, jeśli mamy ten sam kolor wszędzie, tylko w różnych odcieniach. Użyte to jest m.in. w unshaped, w vickym na stronie tytułowej.
    • 10: CommentAuthornosty
    • CommentTime22 Aug 2014
     
    xeen, to tak jakbyś się zachwycił, że można zmieniać kolory między liniami ;)

    Niestety metoda mnożenia duszków ma spore ograniczenia.
    Ja też kiedyś się tak podjarałem, Konop pokazał mi jak to zrobić, ale ostatecznie w praktyce tego jeszcze nie zastosowałem.
    • 11:
       
      CommentAuthortdc
    • CommentTime23 Aug 2014
     
    Ja się kiedyś tym sporo bawiłem, wykorzystałem to i niektórzy to wiedzieli w demku, które wiele lat temu kodowałem na Głuchołazach - oczywiście w Action!;)

    Napisałem też artykuł do Atari Magazynu, gdzie w Action! rozmnażałem duszki, tytuł artka był właśnie taki na wzór tych które się wtedy pojawiały w C&A, "3 tys. duszków na Atari" czy coś podobnego;)
    Artykuł się ostatecznie nie pojawił, bo Bajtek pismo zamknął, ale artek przetrwał do dnia dzisiejszego, może kiedyś go dla potomnych opublikuję.
    • 12: CommentAuthornosty
    • CommentTime23 Aug 2014
     
    tdc - pokaż plis.
    Tzn to demo w Action! wykorzystujące duplikowanie duszków w poziomie.
    Oczywiście nie jest to odpalenie wstawki asemblerowej? Bo tak, to można zrobić rozmnożenie duszków nawet w Basicu :P
    • 13:
       
      CommentAuthorjhusak
    • CommentTime23 Aug 2014
     
    @nosty, nie doceniasz Action!.

    Normalne przypisania typu HPOSP0=100 kompilują się na:

    lda #100
    sta HPOSP0

    Zrobisz to szybciej w asemblerze?
    • 14: CommentAuthornosty
    • CommentTime24 Aug 2014
     
    Tu nie chodzi o szybkość ale o precyzję czasową wykonania instrukcji, co w omawianym przypadku jest kluczowe.

    Dlatego zdziwiłem się uprzejmie, że jakikolwiek język wysokiego poziomu jest do takich sztuczek zdolny.

    PS. Fakt, że nie cenię Action! zbyt wysok i mojego zdania nie ukrywam. Jest tak, odkąd kiedyś poświęciłem kilka dni na jego zgłębienie. Poddałem się kiedy doszedłem do punktu w którym program działał lub nie zależnie od tego czy usunąłem/dodałem linię komentarza ;)
    • 15:
       
      CommentAuthorjhusak
    • CommentTime24 Aug 2014 zmieniony
     
    @Nosty, napisałem kilka sporych programów w Action!, nie natrafiłem na żadne problemy, o które sam bym się nie prosił. Być może używałeś jakiejś trefnej wersji Action!.

    A w Action! możesz sobie po:
    WSYNC=0
    wstawiać nopy [$EA] oraz przypisania.

    I bez problemu to zsynchronizujesz :)

    Można jeszcze pójść dalej i używać bezpośrednich wstawek binarnych (wspomniane [$EA]) jako kod w języku maszynowym, ale wówczas wykraczamy poza temat :) i rzeczywiście można to zrobić w BASIC.
    • 16: CommentAuthorxxl
    • CommentTime24 Aug 2014
     
    ciekawe czy mozna wyciagnac kompilator z action? przy obecnych mozliwosciach deasemblacja i rozdzial edytora/monitora i kompilatora nie powinn abyc bardzo trudna... jest tam jakis haczyk?
    • 17:
       
      CommentAuthorjhusak
    • CommentTime24 Aug 2014 zmieniony
     
    A po co?

    Jeśli chodzi o toolchain to gdzieś tutaj zaproponowałem rozwiązanie przy użyciu emulatora cmdline (atari800) i nagranej sekwencji klawiszy. Gotowe, tylko używać :)

    A haczyk jest taki, że masz 3 przełączane banki; podział pomiędzy kompilator, edytor, monitor i runtime jest z grubsza "bank w bank", ale. Myślę, że jest to łatwe do zrobienia przy pomocy śledzenia wykonywania kodu, ale.
    I tych ale jest trochę, musi się komuś chcieć.

    Trzeba zauważyć, że Action jest kolejną iteracją po PILOT i jeszcze czymś przedtem. I kod jest zwięzły i tricky, co nie ułatwia zadania.
    • 18: CommentAuthorxxl
    • CommentTime24 Aug 2014
     
    czyli jak? piszesz na pc, kompilujesz i program jest do uruchomienia na atari bez wymaganego carta?
    • 19:
       
      CommentAuthorjhusak
    • CommentTime24 Aug 2014 zmieniony
     
    ->link<-

    post nr 7

    ----
    Tak, ale:
    Bez carta - to nie takie proste (w użyciu), ale wykonalne.
    1. Nie używamy procedur bibliotecznych z runtime (ale możemy je sobie w Action zakodować :) lub użyć, bo już są zakodowane na jakichś dyskietkach
    2. Nie używamy więcej niż 3 bajty w parametrach do funkcji (czyli 3 zmienne typu byte, lub 1 zmienna typu card i jedna typu byte)
    3. Nie używamy mnożenia czy nie daj boże dzielenia (i znowu można sobie to zaczytać, bo ponoć wbudowane mnożenie ma jakiś błąd i są pacze.

    Ciekawostka - sposób działania operatorów można zmieniać (np. mnożenie)

    Update:
    Cytując JAC!a i oglądając fragment źródeł Action! umiesczony w linku z pierwszego postu, można zgodzić się z tym, że kod jest logicznie podzielony na banki i łatwo jest wygrzebać np. kompilator.
    • 20:
       
      CommentAuthortdc
    • CommentTime24 Aug 2014 zmieniony
     

    nosty:

    tdc - pokaż plis.

    Nie mam tego teraz przy sobie, ale może gdzieś to zaraz znajdę...

    Jhusak:

    lda #100
    sta HPOSP0

    Zrobisz to szybciej w asemblerze?

    No szczerze, to wymyśliłbym coś;)

    Wystarczy użyć czegoś co np. nie odwołuje się do pamięci, a szczególnie jakaś operacja, która zmieni wsp. x w mniej cykli niż lda. Jest to w tym konkretnym przypadku bardzo trudne, ale można nad tym pomyśleć.

    To największa wada Action! co prawda nie stanowi żadnego problemu wykonanie 99% sztuczek graficznych, czy też jakiś czarodziejskich trybów, jednak to cały czas nie jest asembler. W asmie zawsze można coś wymyślić ciekawego, a Action! albo tego nie zrobi, albo będzie to w nim niewykonalne.

    Oczywiście mówimy o kodowaniu w ekstremalnie małym czasie, czyli operacjach wykonywanych podczas trwania linii rastra. Przykładowo w latach 90. robiłem podobne testy z Bzykiem na pecetach 486 SX chyba 50 MHz i albo się pecet nie wyrabiał ze zmianami w jednej linii, albo ledwo co wyrabiał (już nie pamiętam z jakim zegarem się wyrabiał), a Atari ze swoim 1,7 MHz się wyrabiało i to pięknie, bo takich lda/sta się w jednej linii mieści masa.

    nosty:

    Dlatego zdziwiłem się uprzejmie, że jakikolwiek język wysokiego poziomu jest do takich sztuczek zdolny.

    Właśnie dlatego programowałem w Action! wygoda i możliwości tego typu operacji to była wtedy potęga (i jest po dziś dzień w swojej kategorii).

    jhusak:

    A w Action! możesz sobie po:
    WSYNC=0
    wstawiać nopy [$EA] oraz przypisania.

    I bez problemu to zsynchronizujesz :)

    Już nie pamiętam, ale z pewnością tak to robiłem. Mogę się jeszcze domyślać, że specjalnie do artykułu przygotowałem taki przykład aby docyklowywanie kodu nie było potrzebne.

    xxl:

    ciekawe czy mozna wyciagnac kompilator z action?

    Z pewnością tak tym bardziej że podobno znalazły się źródła.

    Jednak moim zdaniem należy ten kompilator poprawić. Już w tamtych czasach rozmawialiśmy choćby z Kubą o problemach jakie z nim są, pamiętam jak dziś jak Kuba mówił że znalazł coś co kompilator wstawia gdzie popadnie, nie pamiętam teraz szczegółów, może Kuba po latach pamięta?

    Trudno stawiać dzisiejsze wymagania kompilatorowi który bił konkurencję na głowę w latach 80. Dziś z pewnością należy kilka rzeczy dodać, inne nieco poprawić itp.