Jak działa system PAL w szczególności w klonie konsoli Nintendo NES, naszym „polskim” Pegasusie? I dlaczego ten ostatni na pewno nie jest konsolą NTSC?
Po filmie opowiadającym o różnicach w prędkości działania pomiędzy konsolami Famicom i NES NTSC a NES PAL i Pegasusami usłyszałem, że się nie znam, bo Pegasus to przecież konsola NIE konsola PAL a konsola NTSC z wymuszonym działaniem w PALu.
Nie wiem, naprawdę nie wiem, skąd wzięła się ta informacja, a raczej to stwierdzenie, że konsola Pegasus, to konsola NTSC z wymuszonym działaniem w rozdzielczości PAL i z częstotliwością 50 Hz. Jedni mówią, że usłyszeli tak na jednym z filmów Dark Archona, choć akurat w to nie wierze, inni że przeczytali o tym w Wikipedii, choć dawno się już tam nie znajduje, a usunięcie tego zdania poprawiający skwitował wiele mówiącym komentarzem: “info wyssane z palca”. Ja dodam jeszcze, że to info w samym sobie jest dodatkowo absurdalnie idiotyczne i wewnętrznie sprzeczne.
Podobne pytania, skąd ja mam informacje, że jakoby Pegasus był konsolą PAL, skoro jest NTSC wywołują u mnie ból głowy. O tym, że Pegasus jest konsolą PAL mówią mi moje własne oczy, bo widzę kolor po podłączeniu jej do telewizora obsługującego tylko PAL.
No właśnie PAL….PAL to nie tylko inna rozdzielczość i inna częstotliwość, to także inny, choć podobny sposób kodowania koloru. Przy okazji – to naprawdę śmieszne – ale istnieje taki nieoficjalny system: NTSC z wymuszoną częstotliwością i rozdzielczością PAL i zachowanym kodowaniem koloru NTSC. Nazywa się NTSC-N/NTSC50 i używają go na przykład… tylko się nie przewróćcie – monitory i komputery Atari ST standardu NTSC po odpaleniu na nich oprogramowania PAL.
Czym jest Pegasus?
A Pegasusy? Na początku strasznie trudno stwierdzić, czym są same pegasusy, bo rynek klonów famicomów to przepastna otchłań pełna różnych wersji, podwersji, braku standardów i kombinacji.
Przyjmijmy jednak, że mamy tu na myśli konsole wyposażone w układy będące klonami czipów Nintendo wyprodukowane przez firmę UMC – klonem CPU o nazwie UA6527P i klonem PPU – układu graficznego o nazwie UA6538. Takie układy znajdowały się w pierwszych dwóch wersjach polskiego Pegasusa IQ-502 oraz w pierwszej wersji MT-777DX. W późniejszych wersjach można znaleźć układy NOAC (NES on a Chip), które zazwyczaj pełnia takie same funkcję jak wyżej wymienione układy. Jeśli ktoś wpisze te nazwy w google, to znajdzie informacje że były to układy stosowane w klonach typu PAL, ale na chwilę o tym zapomnijmy. Udajemy, że o tym nie wiemy.
PALu ciąg dalszy…
PAL to standard przesyłu telewizji kolorowej, w którym pracuje większość odbiorników w Europie. W Polsce oficjalnie rozpoczęto przechodzenie na PAL z początkiem 1992 roku, wcześniej obowiązywał u nas system SECAM. TVP nadawała jeszcze w tym systemie w roku 1994, ale inne stacje przeszły na PAL już w 1993. Wydaje mi się jednak, że w moim domostwie PAL zagościł dość wcześnie. Pamiętam wizytę naszego osiedlowego elektronika prowadzącego serwis TV, który zamontował w naszych odbiornikach – dużym Heliosie i małej Elektronice magiczne płytki dodające obsługę PAL. To mógł być nawet rok 1991, bo wtedy z moich obliczeń mieliśmy w domu konsolę Rambo działającą w systemie PAL i doskonale pamiętam, że dawała ona na naszym telewizorze poprawny kolorowy obraz.
A jak wygląda sygnał PAL?
TV pracujące w tym systemie najczęściej pracują z częstotliwością 50 Hz i wyświetlają 25 klatek obrazu na sekundę. Sygnał do telewizora dociera w sposób ciągły, ale podzielony na linie obrazu. Linie te można utożsamiać z odrysowywaniem linii na ekranie kineskopu przez działo elektronowe od góry do dołu – linia po linii – od lewa do prawa.
Pojedyncza klatka obrazu w sygnale PAL składa się z 625 linii sygnału, przy czym nie każda linia rysowana jest na ekranie. Niektóre z nich zawierają tylko sygnał synchronizacji, niektóre nie mieszczą się na widocznej przez nas części kineskopu.
Sygnał ten ma następujący format – bez wnikania na razie w szczegóły:
- Linia 1-5 przesyłanej klatki obrazu to linie synchronizacyjne.
Mówią one telewizorowi, iż rozpoczyna się nowa klatka obrazu, to też czas na wycelowanie działa elektronowego do pozycji startowej.
- Następnie nadawane jest 305 linii z danymi półobrazu.
Na początku każdej linii nadawany jest krótki sygnał synchronizacji, który mówi telewizorowi, że należy przejść do początku kolejnej linii i zacząć rysować obraz od brzegu ekranu. Następnie nadawany jest obraz znajdujący się w jednej linii na ekranie.
Ważne jest, że ze względów technicznych związanych z budową telewizorów i nadawaniem sygnału radiowego zdecydowano, że te 305 linii to nie 305 kolejnych linii na ekranie, ale co druga linia na ekranie.
Tzn,. że telewizor rysuje najpierw pierwszą linie obrazu z sygnału, potem przeskakuje nie do drugiej, ale do trzeciej linii, potem do piątej, itd. Na ekranie pojawia się więc połowa obrazu. Stąd nazwa tego co przesyłamy – półobraz.
- Po liniach z obrazem nadawane jest kolejne 7 linii synchronizacyjnych.
Informują o końcu pół obrazu, informują one TV o tym, że działo elektronowe musi znowu wrócić na początek ekranu, ale i o tym, że teraz obraz będzie rysowany nie od pierwszej linii (którą już przed chwilą coś narysowaliśmy), ale od linii drugiej.
- Następnie nadawane jest kolejne 305 linii z danymi drugiego półobrazu.
Te zapełniają luki z pierwszego rysowania. Wypełniane są linie parzyste – 2, 4, 6, itd.
- Po 305 liniach obrazu nadawane jest kolejne 3 linie synchronizacyjne kończące pojedynczą klatkę obrazu.
Takich klatek nadawanych jest na sekundę 25. Każda z nich składa się z dwóch półobrazów – można więc powiedzieć, że sam ekran jest odświeżany 50 razy na sekundę, ale co drugą linie. Mamy więc 25 pełnych klatek składających się z 50 półobrazów.
Tak dla ciekawości podam, że długość sygnału trwania 1 linii to 1/25 s dzielone 625 linii czyli 64 ms.
Jednak, że widoczna rozdzielczość PAL to zazwyczaj 576 linii obrazu, a tutaj mamy ich 305+305, czyli 610, skąd ta różnica? Ano stąd, że część linii na górze i na dole obrazu jest po prostu dla nas niewidoczna. Rysuje się poza widoczną dla nas częścią kineskopu.
PAL w konsolach i komputerach
Konsole i komputery z początku lat 80 nie nadawały jednak obrazu do końca tak, jak to przed chwilą przedstawiłem. Robiły troszkę coś innego. Na początku zachowywały się tak samo, jak typowy nadajnik sygnału PAL.
Nadawały 5 linii synchronizacyjnych informujących o początku klatki i rysowaniu linii nieparzystych, następnie nadawały 304 (a nie 305) linii z półobrazem, następnie 3 linie synchronizacyjne mówiące o końcu pół-obrazu… a następnie zamiast przejść do drugiego pół-obrazu, zaczynają nadawać od nowa nową klatkę. Nie nadają więc one 625 linii 25 razy na sekundę, ale 312 linii 50 razy na sekundę.
No tak naprawdę robią, to ciut szybciej, bo czas nadawania każdej linii to nadal te 64 us sekundy, a do nadania w sekundzie mają nie 625 lini tylko 312*2 więc 624 linie. Nadają więcej 1 linie więcej na sekundę – z kolejnej klatki, co daje częstotliwość nie 50 Hz a 50.08Hz.
Dla telewizora sytuacja wygląda następująco. Zaczyna on rysować linie nieparzyste obrazu, po czym dostaje nagle rozkaz rysowania dalej linii nieparzystych obrazu…. Więc co robi? Robi dokładnie to o co się go prosi. Telewizory analogowe ze względu na to, że musiały borykać się z zakłóceniami, błędami w transmisji, często rozjeżdżając się synchronizacją były bardzo odporne na dziwne zachowanie sygnału sterującego. Absolutnie dawały sobie radę z wykonywaniem troszkę niezgodnych ze standardem poleceń z ciut inną częstotliwością. Miały to totalnie w nosie. Po prostu robiły swoje.
Dzięki temu na ekranie mieliśmy tak naprawdę zamiast 25 klatek o pełnej rozdzielczości, 50 klatek w połowie rozdzielczości.
Zapytacie jednak pewnie – no ale jak to jest – przecież na ekranie pojawiała się tylko co druga linia obrazu? Czy więc nie powinniśmy widzieć czarnych linii co drugą linie? Teoretycznie, być może, ale telewizory CRT były urządzeniami analogowymi a nie ekranami LCD. Wbrew temu co się uważa nie miały one na ekranie fizycznie żadnych linii i żadnych pixeli.
Obraz podświetlany przez działo elektronowe, czyli światło, rozlewał się na około pojedynczego punktu na który akurat padał promień, luminofor świecił także na około tego punktu, tylko trochę mniej. Jeśli nawet zobaczycie na ekranie CRT jakąś siateczkę gdy spojrzycie na kineskop z bliska to nie są to w żadnej mierze pixele i nadal mogą być wypełnione światłem nierównomiernie. Stąd na mniejszych telewizorach nie było praktycznie nawet widać, żeby obraz przyciemniał się w miejscach które bezpośrednio nie były oświetlone przez działo elektronowe. Zresztą w ogóle na tego typu telewizorów nie istniało coś takiego jak ostre krawędzie. Panował naturalny antyaliasing, o czym zapominają często twórcy współczesnych gier nawiązujących do pixel art.
W dużych telewizorach CRT takie zjawisko mogło mieć miejsce i obraz mógł być widoczny jako lekko ciemniejszy co drugą linie… Takie efekt można zresztą włączyć na wielu współczesnych emulatorach, jeśli włączycie sobie emulacje CRT. Spróbujcie sami i zastanówcie się, czy tak właśnie wyglądał obraz z komputerów i konsol, jaki widzieliście za młodu. Ja osobiście grając na 7” elektronice efektu tego nie widziałem.
Obraz w Famicomach/Nesach/Pegasusie
I teraz przejdźmy do naszych konsol FAMICOM/NES/PEGASUS i tego jak generują one obraz. Konsole te posiadają dwa główne układy odpowiadające za ich działanie CPU, czyli procesor oraz PPU, czyli Picture Processing Unit, odpowiadający za wyświetlanie grafiki. Działają one co prawda ramie w ramie, ale częściowo niezależnie od siebie.
Wygląda to tak, że momencie gdy PPU generuje sygnał linii zawierających obraz procesor nie ma nic do gadania, zajmuje się wtedy innymi sprawami – np. odczytywaniem tego, jakie guziki gracz nacisnął na padzie, przygotowywaniem reakcji na to, itp.
Mała uwaga – od tej pory podając ilość linii, będą miał na myśli co drugie linie, także jeśli chcecie sobie je fizycznie umiejscowić na ekranie telewizora i wyobrazić ile miejsca zajmują to musicie je w głowie pomnożyć przez dwa.
Liczba linii z obrazem dla NES/Famicoma to 240 dla PPU działającym w trybie NTSC i 239 dla PPU w trybie PAL. Po wygenerowaniu linii z obrazem PPU przechodzi w stan spoczynku, który trwa zaledwie 1 linie – nic wtedy nie robi i nadaje po prostu czarna linie obrazu. Następnie PPU generuje linie, które nie zawierają obrazu – linie synchronizacji i puste czarne linie – ramkę dla obrazu. CPU ma teraz chwilkę by poinformować PPU co ma być wyświetlone za chwile, np. ustawić nowe pozycje spritów. Jako, że PAL ma wyższą rozdzielczość pionową od NTSC konsola działająca w trybie PAL wykorzystuje ten moment by wygenerować po prostu więcej czarnych linii. Jest ich dodatkowo 50 dla PAL.
Ta różnica w ilości lini w pionie pomiędzy NTSC a PAL powoduje, że w przypadku pierwszego te 240 generowanych linii z obrazem wypełnia cały ekran w pionie, a nawet więcej – na ekranie widać bowiem około 224 linie, pozostałe są niewidoczne.
Konsola NTSC generuje 240 linii aktywnego obrazu i umieszcza je na kineskopie o wysokości 224 linii. Nie ma szans by wszystko było widoczne. Telewizor PAL natomiast potrafi wyświetlić widocznych nie 224 a około 268 linii. Oznacza to, że mieści się na nim nie tylko te 239, które generuje konsola palowska z obrazem – czyli widzimy tu 16 dodatkowych linii, których na NTSC raczej nie widać, ale i prawie 30 dodatkowych czarnych linii w postaci ramek na górze i na dole obrazu.
Przez to widoczny obraz z grafiką NTSC i PAL ma inny stosunek wysokości do szerokości. PAL wydaje się być znacznie bardziej spłaszczony w pionie.
Oczywiście ponieważ twórcy gier na konsole NTSC zdawali sobie sprawę, że prawdopodobnie 8 ostatnich pixeli w pionie i poziomie nie będzie widocznych na telewizorze, to albo nie umieszczali tam grafiki, jak np. jest to w przypadku Super Mario Bros, albo nie za bardzo przejmowali się tym, co się tam pojawi – stąd na telewizorach PALowskich możemy mieć w tym miejscu różne artefakty, które są dość częste w przypadku gier scorllowanych – co pewnie posiadacze Pegasusa doskonale pamiętają. Rzecz jasna istnieją też gry, w których grafika tam jest po prostu normalnym przedłużeniem grafiki na reszcie ekranu.
Różne prędkości działania CPU i PPU
I teraz jedna – bardzo ważna informacja – prędkości działania procesora CPU i układu graficznego PPU w Famicomach i NESach nie pokrywają się ze sobą.
W przypadku NESa NTSC i Famicoma w ciągu czasu w jakim PPU wygeneruję 1 linie obrazu w CPU wykonywane jest 113 i ⅔ cyklu, w przypadku NESa PAL w tym czasie procesor wykonuje 106 i 9/16 cyklu.Przy czym realny czas generowania tej linii to czas wynikający ze standardów w NTSC – 63,5 us i PAL 64 us. To podobne czasy, ale przypominam, że konsola NES PAL dodatkowo nadaje te 50 czarnych linii więcej, co za tym idzie generowanie 1 klatki obrazu zajmuje jej więcej czasu, więc działa sporo wolniej.
Z tego wszystkiego wynika, że różnica pomiędzy konsolami FAMICOM/NES NTSC i NES PAL, to nie tylko różnica w prędkości działania samych CPU i ogólnego spowolnienia konsoli, ale też różnica w prędkości działania PPU i co najważniejsze zmiana stosunku prędkości jeden do drugiego.
Okazuje się, że ta ostatnia różnica sprawiała pewne problemy… głównie piratom oprogramowania.
Część kartridży wyprodukowanych z myślą o konsolach FAMICOM NTSC nie zadziała po włożeniu do klona konsoli PAL (oczywiście pomijając różnice w ew, fizycznym kształcie i zabezpieczeniach regionalnych) gdyż ilości cykli procesora na jedną linie obrazu w obu nie pokrywa się. I jeszcze raz przypomnę, że nie chodzi tu o fakt, że nie pokrywają się czasowo, że są ogólnie szybsze czy wolniejsze, tylko że nie pokrywają się ilościowo: 1 113 i ⅔ cykla i 106 i 9/16 cykla na 1 linie. Takich kartridży nie jest ich dużo, ale dla piratów, którzy niezależnie od tego czy kopiowali konsole PALowską, czy NTSC korzystali z dostępnego na miejscu oprogramowania NTSC problem istniał. Szczególnie że do tytułów tym problemem objętych należały takie hity jak Teenage Mutant Ninja Turtles czy Tiny Toon Adventures.
Poprawione pirackie NES PAL
Piraci postanowili więc poprawić Nintendo i ich ewidentny błąd prowadzący do niekompatybilności między regionami.
Zwiększyli więc w swoich klonach pal prędkość procesora tak, by znowu jego działanie porywało się w stosunku 113 i ⅔ cyklu procesora na 1 linie obrazu. Prędkość samego PPU pozostała tutaj oczywiście bez zmian, bo nadal musiał on generować sygnał PAL. Dodatkowo by ujednolicić współdziałanie CPU i PPU usunięto generowanie tych dodatkowych 50 czarnych linii wymaganych przez PAL z miejsca o którym mówiłem.
W tym momencie działanie konsoli stało się bardziej zgodne z działaniem wersji NTSC. Zniknęła ta dodatkowa przerwa, której w konsoli NTSC w tym miejscu nie było. CPU i PPU szły znowu równiutko w parze.
Oczywiście jednak te 50 linii czarnego obrazu kiedyś musiało być wygenerowane, piraci przesunęli je więc do momentu w którym PPU nic nie robi o którym mówiłem wcześniej, który trwał do tej pory 1 linie obrazu, teraz po prostu tra 51 linii obrazu.
Czy Pegasus ro konsola NTSC?
Czy ta zmiana powoduje, że konsola nagle staje się konsolą NTSC. Zastanówmy się. Czy procesor PEGASUSa działa z prędkością, taką jak konsola NTSC? Prędkość procesora PAL to 1,66 MHz, prędkość procesora NTSC to 1.79 MHz, prędkość procesora Pegasusa to 1.77MHz. Zwiększenie tej prędkości do prędkości prawie jak FAMICOMA i NESa NTSC jest jednak nie powodowane chęcią samego zrównania prędkości działania CPU PEGASUSA i CPU konsol NTSC, ale pokrywania się z takim samym stosunkiem taktowania CPU i PPU w PEGASUSIE i konsolach NTSC, choć realna prędkość tych układów w obu przypadkach jest nadal INNA!
Czy układ PPU PEGASA działa z prędkością NTSC albo nadaje sygnał NTSC? Nie. ten układ działa z dokładnie taką samą prędkością jak układ z konsoli NES PAL. Generuje również nadal sygnał PAL
Zapomniałem wcześniej dodać, że ramki w obrazie w konsolach FAMICOM / NES NTSC na górze i na dole generalnie nie występują, a na bokach mają określony przez programistę kolor – np. niebieski w mario. W NES Pal są one zawsze czarne i dokładnie tak samo się zachowuje PEGASUS.
Czy gry na konsoli PEGASUS chodzą szybciej niż na NESie PAL: teoretycznie mogłyby, ale nie chodzą. Wynika to z konstrukcji ogromnej większości gier na NESa. Konstrukcja ta polega na tym, że cała gra oparta jest o synchronizacje jej do generowanego obrazu. Oznacza to, że gra działa w następujący sposób – po kolei za każdym razem gdy rozpoczyna się generowanie kolejne klatki sygnału wideo, kolejnej porcji 312 linii:
- najpierw gra generuje obraz
- następnie generuje dźwięk
- następnie odczytuje stany padów
- następnie wykonuje obliczenia związane z logiką gry
- następnie przygotowuje zmiany w obrazie
- następnie czeka na rozpoczęcie kolejnej klatki sygnału wideo
- i znowu generuje obraz i tak w kółko
Oznacza to, że nasze przysłowiowe Super Mario jeśli nawet nadrobi czas w stosunku do oryginalnej konsoli NES PAL-owskiej korzystając z szybszego w Pegasusie procesora, to i tak musi poczekać z kolejnym krokiem aż pozwoli mu na to układ PPU i da informacje o generowaniu kolejnej klatki wideo PAL. Gra więc dalej działa z taką samą prędkością, jak na konsoli NES PAL.
Także, widzicie sami – PEGASUS to konsola PAL, generująca sygnał PAL, na której gry działają z taką samą prędkością, jak na konsoli NES PAL – tylko o zwiększonej kompatybilności z konsolami FAMICOM/NES NTSC w celu łatwiejszego piracenia gier.
Z NTSC nie ma wspólnego ani żadnej fizycznej prędkości układu,ani charakterystyki sygnału wideo.
Oczywiście ma dużo innych wspólnych rzeczy – raz że konsole Nintendo i famiclony i NTSC i PAL różnią się w budowie głównie zmianami w prędkościach układów, a nie sposobem ich działania, dwa że Pegasus i inne famiclony korzystają z oprogramowania i kartridży rodem z konsoli Famicom NTSC, trzy że najczęściej wyglądem ją przypominają.
Tylko, fakt że jakaś konsola przypomina wyglądem konsole NTSC, czy korzysta z takich samych kształtem nośników danych nie zmienia faktu, że dalej w działaniu jest konsolą PALowską.