« Architektura Mega Drive / Genesis (index)

Architektura Mega Drive / Genesis

Chapter 4: Grafika


Spis Treści

  1. Powód wielu rozdzielczości wyświetlania
  2. Organizowanie treści
    1. Dostępna pamięć
  3. Konstruowanie klatki
    1. Kafelki
    2. Tło
    3. Pierwszy plan
    4. Sprite'y
    5. Rezultat
  4. Dedykowana jednostka transferowa
  5. Wyjście Wideo

Odpowiedź brzmi: Blast Processing!, co jeszcze musisz wiedzieć?

Okej, jeśli chcesz poznać prawdziwą odpowiedź: dane graficzne są przetwarzane przez 68000 i renderowane na zastrzeżonym chipie o nazwie Video Display Processor (w skrócie 'VDP'), który następnie wysyła wynikową klatkę (w postaci linii skanowania) do wyświetlenia.

VDP działa z częstotliwością ~13 MHz i obsługuje wiele trybów rozdzielczości w zależności od regionu: do 320x224 pikseli w NTSC i maksymalnie 320x240 pikseli w PAL.

Powód wielu rozdzielczości wyświetlania

Technicznie rzecz biorąc, VDP może zmieścić 40 lub 32 kolumny kafelków na linię skanowania, a liczba kafelków na wiersz zależy od regionu (28 w NTSC lub 30 w PAL) . Większość gier PAL nie przejmuje się dodatkowymi kafelkami dozwolonymi w systemach PAL (ponieważ prawdopodobnie muszą zachować spójność między dwoma regionami, a NTSC jest wspólnym mianownikiem), więc instruują VDP, aby renderował z 28 rzędami (tak jak zrobiłoby w systemach NTSC). W ten sposób VDP nie ma innego wyjścia, jak wypełnić nieużywany obszar kolorem tła (używanym również podczas overscan).

Możesz zobaczyć, które gry PAL są renderowane w trybie NTSC, sprawdzając Mode Set Register #2 w emulatorze z możliwościami debugowania (tj. Exodus). Jeśli czwarty bit od prawej to 0, to VDP działa w trybie NTSC .

Image
Aby zapewnić szybki tryb dla wielu graczy w Sonic 2 (1992), gra aktywuje 'tryb z przeplotem', aby zamiast tego renderować poziom dla jednego gracza przy użyciu kafelków 8x16 pikseli (wraz z innymi zmianami).

Image
Z kolei bardziej wyrafinowany tryb wieloosobowy Sonic 3 (1994) opiera się na dedykowanych kafelkach 8x8 pikseli, które są oddzielone od poziomów dla jednego gracza.

Co więcej, istnieje dodatkowy parametr, który można ustawić na VDP, aby ułożyć dwa kafelki, tworząc mapy 8x16, a następnie traktować je jako jeden kafelek. Podwaja to rozdzielczość pionową. Jednak zmniejsza to o połowę częstotliwość odświeżania, ponieważ klatki są teraz renderowane z przeplotem (jedna klatka renderuje parzyste linie skanowania, następna nieparzyste itd.), więc jest to bardziej ograniczone pod względem funkcjonalności. Tryb wieloosobowy w Sonic 2 jest dobrą reprezentacją tego trybu .

Na koniec warto zauważyć, że VDP automatycznie zajmuje się dodawaniem dopełnienia dla obszaru overscan, więc gry nie muszą się martwić o to, w które obszary można bezpiecznie rysować grafikę (jak to miało miejsce w przypadku 'stref niebezpiecznych' NES)

Organizowanie treści

Pod względem przetwarzania danych graficznych ten układ ma dwa tryby działania:

A co z Trybem 0 do III? Cóż, należą one do jeszcze starszego SG-1000 i Mega Drive ich nie obsługuje.

Jako ciekawostka, były programista tego systemu powiedział mi później, że struktura poleceń Trybu V (używana do kontrolowania VDP w grze) dziedziczy projekt z TMS9918 (słynny układ wideo używany w SG-1000) . Ułatwiło to zewnętrznym programistom korzystanie z Trybu V bez uzależnienia od oficjalnej dokumentacji (i późniejszych kosztów licencji).

Dostępna pamięć

Image
Architektura pamięci VDP.

Zawartość graficzna jest rozłożona na trzy obszary pamięci :

Konstruowanie klatki

Poniższa sekcja wyjaśnia, w jaki sposób VDP rysuje każdą klatkę, dla celów demonstracyjnych użyto jako przykładu Sonic The Hedgehog. Przed rozpoczęciem polecam zapoznanie się z modus operandi jego poprzednika ponieważ będzie tu często powracać.

Kafelki

Image
Wiele kafelków zgniecionych razem. Do celów demonstracyjnych wykorzystywana jest paleta domyślna.

Image
Pojedynczy kafelek 8x8 pikseli.

Niektóre kafelki znalezione w VRAM.

Podobnie jak PPU Nintendo, VDP jest silnikiem opartym na kafelkach i jako taki wykorzystuje kafelki (podstawowe mapy bitowe 8x8) do komponowania płaszczyzn graficznych. W przypadku VDP każdy kafelek jest zakodowany za pomocą 4-bajtowej tablicy, gdzie każdy 4-bitowy wpis odpowiada pikselowi, a jego wartość odpowiada wpisowi koloru (wskazując na paletę kolorów).

Kartridże z grami przechowują kafelki w swoim ROM (znajdują się w kartridżu), ale muszą zostać skopiowane do VRAM, żeby VDP mógł je odczytać . Tradycyjnie było to możliwe tylko w określonych ramach czasowych i obsługiwane przez procesor, na szczęście konsola ta dodała specjalne obwody, aby odciążyć to zadanie na VDP (szczegóły omówimy później).

Kafelki służą do zbudowania w sumie czterech płaszczyzn, które po połączeniu tworzą klatkę widzianą na ekranie. Ponadto kafelki płaszczyzn będą się na siebie nakładać, więc VDP zdecyduje, który kafelek będzie widoczny na podstawie typu płaszczyzny i wartości priorytetu kafelka.

Tło

Image
Przydzielona mapa tła.

Image
Przydzielona mapa tła z zaznaczonym wybranym obszarem.

Płaszczyzna tła, znana również jako Płaszczyzna B, to przewijalna mapa kafelków (zestaw kafelków) zawierająca kafelki statyczne .

Ta płaszczyzna może mieć sześć różnych wymiarów: 256x256, 256x512, 256x1024, 512x256, 512x512, 1024x256. Programiści mogą wybrać wymiar, który lepiej pasuje do rodzaju przewijania, który będzie wymagany.

Każdy kafelek może być odwrócony w poziomie i/lub w pionie i mieć ustawiony priorytet.

Na pokazanym przykładzie zauważysz, że obszar wybrany do wyświetlenia nie jest kwadratem... Nie musi nim być!. VDP umożliwia ustawienie wartości przewijania w poziomie dla całej klatki, każdej pojedynczej linii skanowania lub co osiem pikseli. Oznacza to, że programiści mogą kształtować wybrany obszar jak romb i zmieniać jego kąty podczas ruchu gracza, aby symulować efekty perspektywy. Sztuczki takie jak ten nie psują płaszczyzny, VDP pobiera każdą (wybraną) linię poziomą i buduje z niej zwykłą klatkę.

Pierwszy plan

Image
Przydzielona płaszczyzna pierwszego planu.

Image
Przydzielona płaszczyzna pierwszego planu z zaznaczonym wybranym obszarem.

Przykład płaszczyzny pierwszoplanowej, Płaszczyzna Okna nie jest używana.

Płaszczyzna pierwszego planu, znana również jako Płaszczyzna A , ma te same właściwości co płaszczyzna tła, z wyjątkiem tego, że ta płaszczyzna ma wyższy priorytet, więc renderowane tutaj kafelki będą z natury znajdować się nad płaszczyzną tła.

Dodatkowo płaszczyzna ta pozwala się podzielić, tworząc nową płaszczyznę: Płaszczyznę Okna. Jedyna różnica polega na tym, że ta druga się nie przewija.

Podsumowując, możecie zobaczyć nowe wartości priorytetów, a oddzielne płaszczyzny umożliwiają projektantom gry wprowadzanie nowych rodzajów scenerii. Ponadto, używając różnych prędkości przewijania na każdej płaszczyźnie, można osiągnąć efekt paralaksy.

Sprite'y

Image
Przydzielona warstwa Sprite.

Image
Przydzielona warstwa Sprite z zaznaczonym wybranym obszarem.

Na tej płaszczyźnie kafelki są traktowane jako sprite'y. Są one umieszczone na mapie 512x512 pikseli i tylko jej część (rozdzielczość wyjściowa VDP) jest wybierana do wyświetlania. Jest to przydatne do ukrywania niechcianych sprite'ów lub przygotowywania innych, które będą pokazywane w przyszłości. VDP udostępnia również starą funkcję wykrywania kolizji.

Sprite'y są tworzone przez połączenie maksymalnie 4x4 kafelków (mapa 32x32 piksele) i wybranie do 16 kolorów (w tym przezroczyste). Jeśli potrzebny jest większy sprite, można połączyć kilka spriteów w jeden.

Może być maksymalnie 20 sprite'ów na linię skanowania i 80 na ekran (przepełnienie spowoduje uszkodzenie całej warstwy).

Region w pamięci VRAM, w którym zdefiniowane są sprite'y, nazywa się Tabela Atrybutów Spriteów (Sprite Attribute Table) , a każdy wpis zawiera indeks kafelków, współrzędne warstwy (x i y), wartość link (zarządza, które sprite'y są rysowane jako pierwsze), priorytet (sprite o najwyższym priorytecie to ten, który ma być wyświetlany podczas nakładania się), indeks palety kolorów oraz odwracanie w pionie i poziomie.

Rezultat

Image
Wynikowa klatka.

Image
Klatka transmitowana do telewizora (format NTSC), VDP automatycznie pokrywa klatkę obszarem overscan, który ukrywa większość telewizorów CRT.

Tada!

Podczas rysowania klatki system będzie kolejno wywoływał różne procedury przerwań w zależności od tego, na co wskazuje wiązka CRT. Jak zapewne widzieliście w poprzednich konsolach, pozwala to procesorowi pracować nad następną klatką (lub zmieniać obecną).

Konwencjonalnie istnieją dwa typy przerwań zwane: H-Blank (każda pozioma linia) i V-Blank (każda klatka).

H-Blank jest wywoływany wielokrotnie, ale ogranicza się do wykonywania krótkich procedur. Ponadto dostępne są tylko CRAM i VSRAM, więc gry mogą tylko aktualizować swoje palety kolorów lub przewijać w pionie swoje płaszczyzny.

V-Blank pozwala na dłuższe procedury z tą wadą, że jest wywoływany tylko 50 lub 60 razy na sekundę (w zależności od regionu konsoli), ale jest w stanie uzyskać dostęp do wszystkich lokalizacji pamięci.

Zauważ, że obszar overscan w przykładzie pokazuje losowo kolorowe kropki w prawym dolnym rogu. Jest to powszechnie znane jako kropki CRAM i dzieje się tak, gdyż procesor aktualizuje palety w CRAM w tym samym czasie, gdy VDP wysyła pozostałe linie skanowania (na przykład dzieje się tak podczas overscanu). Ten konflikt powoduje, że VDP pobiera dowolną wartość, którą w tym czasie zapisuje procesor (w przeciwieństwie do wymaganej lokalizacji w pamięci CRAM), więc obraz zostaje uszkodzony. Ponieważ jednak w tym przypadku gra aktualizuje pamięć CRAM tylko przy overscanie, ta anomalia pozostaje niezauważona na tradycyjnych CRT. Inne gry próbują aktualizować palety w trakcie rysowania klatki, aby uzyskać więcej kolorów, co wiąże się z koniecznością zrównoważenia pojawienia się kropek CRAM.

Dedykowana jednostka transferowa

Do tej pory omówiliśmy, co procesor może zrobić, aby zaktualizować klatki, ale co z VDP? Czy zapewnia coś bardziej specjalistycznego? Cóż, tak, ten układ ma Direct Memory Access ('DMA' w skrócie) który umożliwia przenoszenie danych między lokalizacjami pamięci z większą szybkością i bez interwencji procesora.

DMA może być aktywowany w stanie H-Blank, V-Blank lub aktywnym (poza przerwaniem) i może być używany do zapisu w VRAM, CRAM i/lub VSRAM . Dodatkowo, podczas transferów pamięci RAM procesora za pomocą DMA, magistrala procesora zostanie zablokowana, więc dobre planowanie ma kluczowe znaczenie dla osiągnięcia wydajności.

Wyjątkowe wykorzystanie tych funkcji może zapewnić grafikę o wysokiej rozdzielczości, płynne przewijanie paralaksy i wysoką liczbę klatek na sekundę. Co więcej, Twoja gra może również pojawiać się w reklamach telewizyjnych z dużą ilością oznaczeń Blast Processing!

Wyjście Wideo

Pierwszy projekt tej konsoli (powszechnie określany jako 'Model 1') ma ten sam port wyjścia wideo co Master System. W kolejnych 'Model 2' i 'Model 3' zamiast tego został użyty port mini-DIN.


Previous: 3. CPU

Next: 5. Dźwięk


Rodrigo Copetti © 2026 RSS Feed

Przełącz na wersję nowoczesną

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