« Architektura Sega Master System (index)

Architektura Sega Master System

Chapter 5: Grafika


Spis Treści

  1. Organizowanie treści
  2. Konstruowanie klatki
    1. Kafelki
    2. Warstwa Tła
    3. Sprite'y
    4. Rezultat
  3. Sekrety i ograniczenia
    1. Wykrywanie kolizji
    2. Potrzeba modułowości
    3. Okulary 3D
  4. Wyjście Wideo

Rysunki na ekranie są tworzone przez niestandardowy układ o nazwie Video Display Processor lub 'VDP'. Wewnętrznie ma ten sam projekt, co Texas Instrument TMS9918 (używany w SG-1000) , ale wzbogacony o więcej funkcji, które omówimy w następnych sekcjach.

Organizowanie treści

Image
Architektura pamięci VDP.

Obok VDP znajduje się 16 KB VRAM, do którego tylko VDP może uzyskać dostęp za pomocą 16-bitowej magistrali danych (Sega zmodyfikowała oryginalny projekt, aby uzyskać dostęp do dwóch układów pamięci z 8-bitowymi magistralami w tym samym czasie ). Jeśli ponownie spojrzysz na obraz płyty głównej, zauważysz, że układy RAM i VRAM są mniej więcej takie same, z wyjątkiem tego, że VRAM używa modelu układu kończącego się na '20', który ma mniejsze opóźnienie .

W przypadku systemu Master, VRAM zawiera wszystko, czego VDP będzie wymagał do renderowania (z wyjątkiem Kolor RAM-u). Procesor wypełnia VRAM zapisując do określonych rejestrów VDP, które z kolei przekazują wartości do VRAM-u. Ponieważ dostęp do VDP odbywa się za pomocą portów WE/WY, CPU musi używać instrukcji IN i OUT.

Konstruowanie klatki

VDP renderuje klatki z rozdzielczością do 256x192 pikseli. Kolejne poprawki dodały obsługę 256x224 px i 256x240 px, jednak aby zachować kompatybilność ze wszystkimi modelami, deweloperzy trzymali się standardowej rozdzielczości. Ten chip ma ten sam tryb działania, co PPU firmy Nintendo, innymi słowy, grafika jest renderowana na bierząco.

Z drugiej strony VDP ma cztery różne tryby działania, które zmieniają charakterystykę klatki (głębia kolorów i rozdzielczość):

Zobaczmy teraz, jak rysowane są klatki krok po kroku. W tym celu pożyczę zasoby z Sonic The Hedgehog. Ponadto, aby ułatwić wyjaśnienie, skupię się na standardowym układzie pamięci, który Sega sugeruje do organizowania zawartości graficznej (pamiętaj tylko, że VDP jest pod tym względem bardzo elastyczny, więc gry mogą go optymalizować).

Kafelki

Image
Wszystkie kafelki.

Image
Pojedynczy kafelek.

Kafelki znalezione w VRAM.

Tryb IV jest oparty na systemie kafelków. Aby przypomnieć poprzednie wyjaśnienia dotyczące silników kafelków, kafelki to po prostu mapy bitowe 8x8 pikseli, które renderer pobiera, aby narysować grafikę gry. W przypadku VDP klatka składa się z dwóch płaszczyzn, warstwy tła i warstwy sprite.

Wewnątrz VRAM znajduje się obszar dedykowany kafelkom nazywany Character generator (Sega nazywa kafelki 'Characters') i jest ustawiony by mieć długość 14 KB. Każdy kafelek zajmuje 32 bajty, dzięki czemu możemy przechowywać do 448 kafelków.

Na każdym kafelku zdefiniowane są 64 piksele, VDP zakłada, że każdy piksel jest zdefiniowany przez 4 bity, co oznacza, że można wybrać do 16 kolorów. Te bity odnoszą się do pojedynczego wpisu w Kolor RAM-ie lub 'CRAM'. Ten obszar znajduje się wewnątrz VDP i przechowuje palety kolorów. Systemy palety kolorów pomagają zmniejszyć rozmiar kafelków w pamięci i umożliwiają programistom zmianę kolorów bez przechowywania wielu kopii.

Kolor RAM przechowuje dwie palety po 16 kolorów każda. Każdy wpis ma szerokość 6 bitów, a każdy zestaw 2 bitów definiuje jeden kolor z modelu RGB. Oznacza to, że do wyboru są 64 kolory.

Warstwa Tła

Image
Przydzielona mapa Ekranu.

Image
Przydzielona mapa Ekranu z zaznaczonym wybranym obszarem.

Przydzielona mapa Ekranu z zaznaczonym wybranym obszarem.

Warstwa tła to duża płaszczyzna, na której rysowane są statyczne kafelki. Aby umieścić coś tutaj, istnieje inny obszar pamięci VRAM o nazwie Mapa Ekranu [ang. Screen map], który ma 1,75 KB.

Umożliwia to programistom zbudowanie warstwy 896 kafelków (32x28 kafelków) , ale jeśli policzymy, zobaczymy, że ta warstwa jest większa niż rozdzielczość wyświetlania tej konsoli. Rzeczywistość jest taka, że widocznych jest tylko 768 kafelków (32x24 kafelki), więc widoczny obszar jest ręcznie wybierany zgodnie z wolą programisty. W związku z tym, powoli zmieniając współrzędne X i Y wybranego obszaru, uzyskuje się efekt przewijania.

Każdy wpis mapy ma 2 bajty szerokości (tak szerokie, jak magistrala danych VDP) i zawiera adres kafelka w 'Character generator' oraz następujące atrybuty:

Co ciekawe, we wpisie znajdują się 3 nieużywane bity, które gra może wykorzystać do innych celów (np. dodatkowe flagi wspomagające silnik gry).

Sprite'y

Image
Renderowana warstwa Sprite.

Sprite to po prostu kafelki, które poruszają się swobodnie. VDP może zrastrować do 64 sprite'ów przy użyciu jednego kafelka (8x8 px) lub dwóch kafelków ułożonych pionowo (8x16 px).

Tabela Atrybutów Sprite [ang. Sprite Attribute Table] to 256-bajtowy obszar w VRAM, który zawiera tablicę wszystkich zdefiniowanych sprite'ów, jej wpisy są podobne do warstwy tła, z wyjątkiem tego, że każdy sprite zawiera dwie dodatkowe wartości reprezentujące współrzędne X/Y.

VDP jest ograniczone do do ośmiu sprite'ów na poziomą linię skanowania . Ponadto, jeśli wiele sprite'ów nakłada się na siebie, wyświetlany będzie pierwszy na liście.

Rezultat

Image
Tada!

VDP automatycznie łączy dwie warstwy, tworząc ostateczną klatkę. Proces renderowania odbywa się linia po linii skanowania, więc VDP tak naprawdę nie wie, jak będzie wyglądać klatka, widzi ją tylko użytkownik, gdy obraz jest tworzony na telewizorze.

Jeśli spojrzysz na przykładowy obraz, możesz zauważyć, że klatka ma pionową kolumnę po lewej stronie. Dzieje się tak, ponieważ mapa ekranu jest wystarczająco wysoka, aby umożliwić przewijanie w pionie bez powstawania artefaktów, ale nie jest wystarczająco szeroka, aby przewijać w poziomie. Tak więc VDP może zamaskować lewą stronę kolumną o rozmiarze 8 pikseli, aby chronić obraz przed pokazywaniem kafelków pośrednich.

Aby zaktualizować grafikę dla następnej klatki bez przerywania aktualnie wyświetlanego obrazu, VDP wysyła dwa typy przerwań do procesora. Jedno, które informuje, że telewizor CRT zakończył przesyłanie wybranej liczby linii skanowania (nazywane przerwaniem poziomym), a drugie, gdy CRT zakończył rysowanie ostatniej linii skanowania (nazywane przerwaniem pionowym) oznaczające zakończenie klatki. Podczas tych zdarzeń wiązka CRT jest ponownie przydzielana, aby narysować następną linię skanowania (interwał wygaszania), więc jakakolwiek zmiana stanu VDP nie zrujnuje istniejącego obrazu. Wygaszanie poziome ma krótsze ramy czasowe niż wygaszanie pionowe, ale nadal pozwala na zmianę takich rzeczy, jak paleta kolorów. To może przynieść pewne efekty.

Sekrety i ograniczenia

Na pierwszy rzut oka VDP może wydawać się kolejnym chipem o minimalnej funkcjonalności, którą teraz uważamy za pewnik. Odwróciło to jednak wiele uwagi od oferty Nintendo w tamtym czasie. A więc, dlaczego tak było?

Wykrywanie kolizji

Po pierwsze, VDP był w stanie określić, czy dwa sprite'y kolidują ze sobą. Dokonano tego sprawdzając jego rejestr status . Nie mógł wykryć, które konkretnie, ale to ograniczenie zostało rozwiązane poprzez odczytywanie również innych rejestrów, takich jak licznik linii skanowania [ang. scan-line counter]. Można to sobie wyobrazić jako metodę 'triangulacji'.

Ta funkcja nie jest jednak nowa, ponieważ TMS9918 również ją zawierał, dlatego SG-1000 również miał wykrywanie kolizji.

Potrzeba modułowości

Kiedy wcześniej analizowałem projekt PPU Nintendo, położyłem nacisk na jego architekturę pamięci wewnętrznej. Chociaż był ograniczony, niektóre ograniczenia były całkiem korzystne, ponieważ umożliwiły rozbudowę systemu za pomocą dodatkowego sprzętu zawartego w kartridżu z grą, co pozwalało obniżyć koszty.

VDP nie korzysta z tego podejścia modułowego. Zamiast tego Sega wprowadziła inne rozwiązanie, które z kolei oszczędza koszty kartridży. Przykładem tego są mniejsza warstwa tła i przerwania poziome.

Okulary 3D

Image
Okulary 3-D Sega .
Wariant amerykański połączony przez port karty.

Okazuje się, że Sega dostarczyła także 'okulary 3D' jako oficjalne akcesorium! Okulary działały zsynchronizowane z CRT. W trakcie rozgrywki gra zmienia położenie obiektów pomiędzy klatkami. Każda soczewka ma ekran LCD, który wyłącza się na czarno, aby zablokować widok. Tak więc właściwa kombinacja migotania grafiki i naprzemiennych przesłon w końcu tworzy w głowie stereoskopowy obraz. Tak więc otrzymujemy efekt '3D'.

Migawki są sterowane z kilku adresów pamięci, ale żaden z nich nie poinformuje konsoli, czy są podłączone okulary, więc gry obsługujące to akcesorium zawierają opcję ustawień, która pozwala użytkownikowi ręcznie aktywować tę funkcję.

Kontrolery LCD są połączone kablem typu jack, który jest podłączony do konsoli. Wersje europejskie i amerykańskie nie zawierały wejścia jack, więc polegają na porcie karty do podłączenia adaptera (więcej o gnieździe na kartę zobaczymy później).

Wyjście Wideo

Złącze wyjścia wideo tego systemu jest niesamowicie poręczne. Wysyła sygnały kompozytowe i RGB, które można sobie wyobrazić jako dwie 'ekstremalne' jakości wideo.

Minusem jest to, że nie zapewnia 'synchronizacji kompozytowej' [ang. composite sync], więc korzystanie z RGB będzie wymagało przechwycenia sygnału synchronizacji z kompozytu, a jego jakość nie jest optymalna.


Previous: 4. CPU

Next: 6. Dźwięk


Rodrigo Copetti © 2026 RSS Feed

Przełącz na wersję nowoczesną

Strona Główna · Artykuły · Wsparcie · O autorze · O stronie