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
     
    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
     
    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
     
    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 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
     
    jak zamienisz kolejnosc zapisu do hscroll i wsync to bedzie dzialac ok.
    • 6:
       
      CommentAuthorxeen
    • CommentTime8 Sep 2014 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
     
    sta $d40a
    lda $d20a
    and #3
    sta $d404
    • 8: CommentAuthorxxl
    • CommentTime8 Sep 2014
     
    chodzi o za szybki zapis do hscroll? docyklowanie NOPem po zapisie do wsync zalatwi sprawe?
    • 9:
       
      CommentAuthorjhusak
    • CommentTime8 Sep 2014
     
    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 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
     
    prosto - nie, ale łatwo - jak widać - tak.
    • 12: CommentAuthor0xF
    • CommentTime8 Sep 2014
     
    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.