atarionline.pl Rzeczy które nie działają na Real HW - 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
      • CommentTime8 Sep 2014 09:09
       
      Otwieram wątek, który może okazać się przydatny dla początkujących i średniozaawansowanych koderów. Nad pewnymi rzeczami dość długo się męczyłem to może to pozwoli komuś innemu zaoszczędzić czas. Być może ktoś z większym doświadczeniem wzbogaci te obserwacje o wyjaśnienia.

      - na prawdziwym Atari problemem jest, jeżeli ostatnią linię scanline w DL ustawimy jako $0F (hires). Rzecz ta działaj bez problemu na emulatorach.

      - Nie można dowolnie zmieniać rejestru HSCROLL na DLI. Z moich obserwacji wynika, że zmiana o 1 działa wszędzie, o np. 3 już niestety tylko na emulatorach.
      • 2: CommentAuthormono
      • CommentTime8 Sep 2014 10:09
       
      Ad.1. Tryb 2 i 3 również. Generalnie chodzi o tryby hiresowe.

      Ad.2. A to czemu? Z moich obserwacji wiem, że problemy powoduje lms+tryb tekstowy+hscroll+vscroll + szeroki ekran, bo sporo rzeczy ANTIC musi pobrać i w pierwszej linii trybu znakowego potrafią pokazać się śmieci. Skrol polega na odpowiednio wcześniejszym przepisaniu wartości obrazu do rejestru przesuwnego wyrzucającego dane na ekran. Jeśli przesuw o większą ilość cykli byłby problemem, to nie dałoby się statycznie ustawiać przesunięcia w tekstowych trybach szerokich (GR.1, GR.2), a to jednak raczej działa.
      Miałbyś gdzieś może jakiś przykład? Ciekawi mnie w jakich okolicznościach taki bug może występować.
      • 3: CommentAuthor0xF
      • CommentTime8 Sep 2014 10:09
       
      Ad. 2. Na DLI można dowolnie zmieniać HSCROLL, pod warunkiem że robimy to poza obszarem DMA obrazu lub w skanlinii bez poziomego przesuwu. Wytłumaczenie, co się dzieje w przeciwnym przypadku wymaga wyjaśnienia całego mechanizmu DMA Antica, jest to chyba w Altirra Hardware Reference Manual.
      • 4:
         
        CommentAuthorxeen
      • CommentTime8 Sep 2014 10:09 zmieniony
       
      Dziękuję za naprostowanie. Z mojej perspektywy konstrukcje rodzaju:

      lda $d20a
      and #1
      sta hscroll
      sta $d40a - działają bez problemu

      ..
      lda $d20a
      and #3 ; na przykład
      sta hscroll
      sta $d40a - działają na emu, nie działają na rela HW (krzaki)

      doczytam sobie zatem jeszcze w ARM. Zmiany robiłem w liniach które mają ustawiony hscroll. Np. w intrze press play on tape na greetingsach zmiana jest co jeden (desynchronizacja napisu). Zmiana co n była "ładniejsza" ale nie działała poprawnie na Atari.
      • 5: CommentAuthorxxl
      • CommentTime8 Sep 2014 11:09
       
      jak zamienisz kolejnosc zapisu do hscroll i wsync to bedzie dzialac ok.
      • 6:
         
        CommentAuthorxeen
      • CommentTime8 Sep 2014 11:09 zmieniony
       
      Wydaje mi się, że z Tobą i Konopem to próbowałem robić na SV - bez powodzenia :)

      Szkoda, że emu to "łyka" - tak czy siak.
      Ale jeszcze chyba warto popróbować, po tym co piszecie.
      • 7: CommentAuthor0xF
      • CommentTime8 Sep 2014 11:09
       
      sta $d40a
      lda $d20a
      and #3
      sta $d404
      • 8: CommentAuthorxxl
      • CommentTime8 Sep 2014 12:09
       
      chodzi o za szybki zapis do hscroll? docyklowanie NOPem po zapisie do wsync zalatwi sprawe?
      • 9:
         
        CommentAuthorjhusak
      • CommentTime8 Sep 2014 12:09
       
      Pragnę podkreślić, że xeenowi chodzi o to, że emulator łyka to, co nie dzała na HW, a nie o to, by działało na HW, bo to łatwo zapewnić jak widać :)
      • 10:
         
        CommentAuthorxeen
      • CommentTime8 Sep 2014 13:09 zmieniony
       
      To co mi nie działało to zmiana hscroll co linię (w liniach który miały ustawiony bit HS). Nie wiem czy to jest kwestia szybkiego zapisu, czy zapisu w odpowiednim momencie.
      Wydaje mi się, że próbowałem sugerowanych kombinacji - właśnie na SV (także zapisu do WSYNC przed manipulacją na HSCROLL i taką kombinację jak podał XXL)

      Byłem zmęczony, ale ktoś twierdził, że to bug Antica.
      Nie rozumiem na razie dlaczego co 1 działa, co 3 nie.
      Muszę doczytać trochę w Manualu i jeszcze poeksperymentować.

      Dla mnie podpowiedzi są cenne i nie jest to prosto zapewnić - także dziękuję :)
      • 11:
         
        CommentAuthorjhusak
      • CommentTime8 Sep 2014 14:09
       
      prosto - nie, ale łatwo - jak widać - tak.
      • 12: CommentAuthor0xF
      • CommentTime8 Sep 2014 15:09
       
      xxl: jak pisałem w poscie 3, problem jest gdy zmieniamy HSCROL na obszarze DMA obrazu. WSYNC przenosi nas na prawa ramke obrazu normalnego, w przypadku HSCROL ANTIC jeszcze pobiera tam dane obrazu.

      xeen: najmłodszy bit HSCROL steruje tylko linią opozniajaca o cykl koloru. Dlatego działa nawet w połowie linii (swoją drogą nie słyszałem, by ktoś tego użył?). Pozostałe bity regulują dzielnik DMA i jeśli są różne wartości HSCROL na początku i na końcu linii, dzielnik DMA "psuje się" i zaczyna generowac więcej DMA, niż oczekujemy w danym trybie.