Game Boy historia

35-letni Game Boy zawstydza PlayStation 5 Pro. Wszystko ma w 60 fps

Michał Porębski | 22.04, 06:40

60 kl./s świętym Graalem graczy. Sony chce wypuścić PS5 Pro, Microsoft gimnastykuje się, co zrobić z Xboksem. Pff, Game Boy umiał to już 35 lat temu. W każdej grze. Mając do dyspozycji 8 KB VRAM. 

Kultowy Game Boy kończy 35 lat, a to doskonała okazja, aby sobie o nim przypomnieć. Nie tylko od strony użytkowej, choć tę definiowało wiele fantastycznych gier, które wielu do dziś wspomina z łezką w oku, ale też technicznej. Dlaczego? Bo jest żywym dowodem na to, że sprzęt, aby być efektywnym, wcale nie musi być efektowny. 

Dalsza część tekstu pod wideo

Poza tym GB był jednym z pierwszych masowych urządzeń konsumenckich, które bazowało na pojedynczym, w dodatku autorskim układzie typu System on chip. I nie bez przyczyny, gdyż, oprócz zmniejszenia kosztów, Nintendo chciało w ten sposób uniknąć powtórki z NES-a i Famicoma. Jak zapewne pamiętacie, tam wzięcie komponentów z półki skończyło się zalewem klonów, z polskim Pegasusem na czele.

Z bardzo osobliwym jak na dzisiejsze standardy układem przetwarzania grafiki i pamięcią liczoną w kilobajtach, nie miał gry celującej poniżej 60 kl./s. Cudotwórstwo? Bynajmniej – szereg dość prymitywnych, ale zaskakująco przemyślanych rozwiązań. 

Sharp LR35902, czyli cherlawe serce bestii

Układ dla Game Boya, model LR35902, zaprojektował Sharp, który w latach 80. XX wieku utrzymywał z Nintendo bardzo bliskie relacje. Tu doskonałym przykładem są telewizory 19SV111 i 19SC111 tego producenta, które to konsolę NES miały wbudowaną. Dosłownie. Przy czym w jednym tylko chipie agregowano procesor centralny, układy przetwarzające grafikę i dźwięk, kontroler I/O oraz boot ROM.

Procesor centralny (CPU), oznaczony jako SM83, to rzecz osobliwa. Część źródeł, zapewne dla uproszczenia, przedstawia go jako odpowiednik bardzo popularnego w tamtym czasie chipu Zilog Z80 (np. ZX Spectrum), ale to dyskusyjne określenie.

Najpierw jednak podstawy. Z definicji SM83 należy do jednostek 8-bitowych, gdyż taki właśnie jest rozmiar jego rejestrów, ale potrafi wykonać wybrane instrukcje 16-bitowe, łącząc rejestry w pary. Prócz tego dysponuje 16-bitową przestrzenią adresową. W rezultacie adresuje do 64 KB pamięci. Być może gdyby Game Boya promowali ludzie od Atari Jaguar, to pałowaliby historię 16-bitowca, ale bez żartów. Kieszonkowy klasyk Big N to wypisz, wymaluj sprzęt 8-bitowy. 

Diagram Sharp LR35902

Podobnie jak Z80, Sharp SM83 ma siedem specjalizowanych rejestrów, ale już zestaw jego instrukcji jest bliższy Intelowi 8080, czyli protoplaście ziloga. Spośród rozszerzonego zestawu instrukcji oferuje jedynie te odpowiedzialne za manipulację pojedynczymi bitami. Nie wspiera instrukcji IN/OUT, więc nie potrafi bezpośrednio komunikować się z interfejsami wejścia i wyjścia, a dane muszą w tym wypadku zostać w całości odwzorowane w pamięci.

Na uwagę zasługuje dość wysokie jak na ten rodzaj procesorów taktowanie, równe 4,19 MHz. Dla odniesienia Zilog Z80A w stacjonarnej Sedze Master System pracuje z częstotliwością 3,58 MHz.

Mniej widowiskowy jest natomiast podsystem pamięci, po 8 KB na pamięć operacyjną i VRAM a także 128 B tzw. HRAM-u (ang. High RAM), umieszczonego obok procesora. Nie szybszego względem zasadniczej puli, lecz traktowanego priorytetowo. Przeważnie jako stos

Gry w 60 fps przy 8 KB pamięci

Z perspektywy czasu, najbardziej fascynujące jest jednak to, jak Game Boy rysował grafikę, bo robił to zupełnie inaczej niż dzisiejsze konsole, które budują obraz piksel po pikselu. Mając ekran o rozdzielczości 160x144 i wspomniane 8 KB pamięci, nie zmieściłby nawet konwencjonalnego bufora ramki, który w optymistycznym wariancie pochłonąłby blisko trzykrotnie więcej. Ale klasyk Nintendo, mimo iż wyposażony w ekran LCD, z pojęcia piksela korzystał tylko w marginalnym stopniu.

Układ graficzny Game Boya (PPU) obraz budował z kafelków o wymiarach 8x8 pikseli, których w pamięci mieścił do 256. To wciąż stanowczo zbyt mało, by wypełnić całość, ale dzięki możliwości klonowania i dowolnego obracania elementów, udawało się tę niedogodność ukryć. Zresztą, tak samo jak to, że konsola radziła sobie tylko z 40 ruchomymi kaflami na ekranie i 10 w jednej linii.

Tileset

Nadmiarowe elementy, wchodzące w skład tła, poruszać się nie mogły, aczkolwiek graczy zmyślnie oszukiwano. Działo się tak, gdyż obraz, powstający na ekranie o rozdzielczości 160x144 piksele i zbudowany z kafelków 8x8 pikseli, wbrew pozorom nie powstawał na siatce 20x18. 

Siatka miała wymiary 32x32, a sam wyświetlacz stanowił okno robocze (ang. viewport) o modyfikowalnych z dokładnością do jednego piksela współrzednych X oraz Y. Słowem, rysowany obraz był w rzeczywistości większy niż powierzchnia wyświetlacza. Deweloper określał, który jego fragment widzi gracz w danym momencie. I mógł to robić z częstotliwością – tutaj aplauz, proszę – 60 kl./s.

Nie zawsze więc poruszać musiał się bohater i inne, teoretycznie dynamiczne obiekty na ekranie. Wystarczało wszak przesunąć tło. 

Wszystko to w jednym z czterech odcieni szarości i przy systemie odświeżania naśladującym ekrany CRT. Bo tak, skoro Game Boy nie rysował obrazu pikselami, to musiał robić to liniami. A tu oczywiście rodziła się przestrzeń na kolejne sztuczki, na przykład efekt kołysania obrazu, uzyskiwany przez przesunięcie współrzędnych okna przed zakończeniem rysowania całej klatki.

Muzyka stop, teraz będą efekty

Rzecz jasna, nie tylko w kwestii grafiki deweloperzy musieli mierzyć się z wydawałoby się drastycznymi ograniczeniami. System audio konsoli miał tylko cztery kanały i połowę z nich musiał wykorzystać dla fali impulsowej, mogąc wygenerować jeden z czterech tonów przez modulację szerokości impulsu.

Do tego umożliwiał wygenerowanie przebiegu niestandardowego przy użyciu 4-bitowych próbek przechowywanych w predefiniowanej tabeli i miał generator szumów. Ale właśnie ze względu na ograniczoną liczbę kanałów czasem muzyka w tle musiała zostać przerwana, by odegrać efekty akustyczne.

Schemat podsystemu audio

Teoretycznie architekci Game Boya umożliwili dodanie piątego kanału za pośrednictwem kartridża, ale żaden deweloper nigdy z tej opcji nie skorzystał. Game Boy Advance, mimo iż kompatybilny wstecznie, pinu audio już nie dostał.

Nawiasem mówiąc, inną ciekawostką jest to, że układ audio (APU) otrzymał dwa kanały wyjściowe, przez co mógł operować w trybie stereo. Częściowo. Hamulcowym był monofoniczny głośnik konsolki, stąd rarytasy zarezerwowano dla posiadaczy słuchawek.

A skoro już o kartridżach mowa, to oczywiście i tu nie mogło zabraknąć rozwiązań pomysłowych. Przestrzeń adresowa chipu Sharp LR35902 ograniczała rozmiar gier do 32 KB, ale i na to znaleziono sposób. Instalując w kartridżach układ zwany mapperem, umożliwiano segmentację większej puli, a to zaowocowało nośnikami sięgającymi nawet 1 MB.

Zazwyczaj jednak wykorzystywano moduły o pojemności 16 KB, którym towarzyszyło 8 KB SRAM, podtrzymywane przez zainstalowaną obok baterię w celu zapisywania stanu gry.

Bastion rozwiązań nieszablonowych

Nie oszukujmy się, dziś 35-letni Game Boy to po prostu staroć, który z dużą dozą praw podobieństwa wiekiem przewyższa znaczną część aktywnych graczy, Nikt też raczej nie chciałby wrócić do czasów pamięci liczonej w kilobajtach.

Niemniej jednak coś powinno tu wybrzmieć, zwłaszcza przy jubileuszu: jest to piękne epitafium dla czasów, w których sprzęt pełnił rolę drugorzędną, a programiści starali się walczyć z tym, co mają.

Mniejsza o to, że w legendarnym Mario nie poruszał się bohater, lecz tło. I że efektowne intro Link’s Awakeing to pokłosie manipulacji odświeżaniem linii obrazu, a muzyka w Pokemonach przerywana była efektami akustycznymi.

Twórcy 1042 gier wydanych na GB oficjalnie i niezliczonej liczby tych nielicencjonowanych wykazywali się zapałem i kreatywnością, by osiągnąć może nie upragniony, ale zadowalający efekt.

Michał Porębski Strona autora
Pasjonat technologii, telekomunikacji, smartfonów i filmów science-fiction. Odbył staż w domach mediowych i portalach informacyjnych, a hobbystycznie zajmuje się zgłębianiem wiedzy o grach planszowych. 
cropper