Mq napisał/a:Cyprian, ale z tymi przyciskami myszy, to nie jest że gry nie ogarniają, tylko Eiffel nie ogarnia. Standardowo sprzętowo w Atari połączony jest na sztywno prawy przycisk myszy i fire w drugim porcie joya. W oryginalnym Atari bez względu na to czy wciśniesz prawy przycisk myszy czy fire w joy w drugim porcie, to dla Atari nie robi różnicy, bo to jest ten sam przycisk fizycznie. W Eifflu natomiast zostało to rozdzielone, a nie do końca obsłużone i dlatego są kłopoty.
A taki "tryb zgodności" jak piszesz, to dało by się zrobić jako jakiś program rezydentny, który by w grach ten fire dodatkowo z prawego przycisku myszy czerpał? Jeśli tak, to by też rozwiązało problem dla wszystkich gier od razu.
chodziło mi o to by bezpośrednio w Eiffel by wybór: albo zwykłe działanie ST - tak "tryb zgodności", albo "nowe" czyli to które teraz jest. A może nawet rozszerzyć to które jest do obsługi trzech przycisków.
Mq napisał/a:Z obrazem właśnie nie jest tak jak piszesz, bo przerwania generowane są odrębnym zegarem. Jak zmieniamy podstawowy zegar, to ilość linii się nie zmienia, ilość ramek na sekundę też nie, natomiast zmienia się ilość cykli procesora w linii. I z tego robią się problemy z tzw. docyklowanymi demami, gdzie programiści przewidzieli, że mają określoną ilość cykli, a jak dajemy minimalnie wolniejszy zegar, to tam się robią jakieś pojedyńcze cykle w linii mniej, zaczyna ich brakować i program się sypie.
No chyba, że coś źle zrozumiałem, ale z moich obserwacji wynika, że tak właśnie jest.
Jak budowałem teraz generator z kwarcem z płyty oryginalnym, to potwierdziło się to co mówię. Kwarc przez przypadek wzbudzał mi się na niższej częstotliwości (3x niższej, bo to kwarc tzw. overtonowy i trzeba go odfiltrować, żeby wzbudzał się na 3x wyższej częstotliwości, co już naprawiłem nawiasem mówiąc). No i jak się kwarc wzbudzał na 3x mniejszej częstotliwości, to obraz wyglądał jak na załączonym zdjęciu. Ilość linii obrazu, częstotliwości przerwań synchronizacji poziomych i pionowych się zgadzają, bo inaczej obrazu by w ogóle nie było na monitorze. Natomiast zawartość leci trzy razy wolniej, przez co jest wszystko trzy razy większe i oczywiście jest dodatkowo bajzel. Startujące na tym zdjęciu Atari nie uruchamia żadnych procedur synchronicznie do przerwań, więc nic się nie wysypuje, a komputer normalnie wstaje, tylko wyświetla to co wyświetla. Jednak jak w demach jakieś procedury mają się odpalać zgodnie z przerwaniami, to zaczyna się to sypać, bo procedura nie zdąży wykonać się w całości przed wystąpieniem następnego przerwania.
Sygnały (i przerwania dla procesora) Vsync i Hsync generowane są przez GLUE który jest taktowany zegarem głównym. Ma on wewnętrzne zegary które na sztywno zliczają cykle i generują sygnały H/V i DE (display enable). Więc jeśli nie zaingerujemy procesorem (np. otwieranie ramek) to ilość cykli procesora per linia i linii per ramka obrazu zawsze są takie same. Dodatkowo SHIFTER też jest taktowany zegarem głównym, więc PixelClock - w tym przypadku ilość pikseli w linii jest stała w stosunku do Hsync ("50Hz":512/1024, "60Hz":508/1016, VGA: 896).
MFP ma osobny zegar, z tym że układ ten generuje przerwania wyłącznie dla procesora i nie biorą one udziału w generowaniu obrazu. Jeżeli jednak demo liczy cykle i przerwanie wypadnie w innym miejscu niż procesor się spodziewa (bo zegary są inne niż fabryczne), to otwieranie ramki, czy sync-scroll się posypią.