Architektura Sega Master System

Praktyczna analiza autorstwa Rodrigo Copetti

Przetłumaczone przez LunaDook & MoonbowPlushie

Edycja klasyczna - Ostatnio zaktualizowany: 30 stycznia 2024

Dostępne języki: 🇬🇧 - English, 🇵🇱 - Polski, 👋 - Dodaj tłumaczenie


O tej edycji

Edycja 'klasyczna' jest wersją alternatywną dla ‘nowoczesnego’ odpowiednika. Do działania nie wymaga JavaScript, najnowocześniejszego CSS ani zawiłego HTML, co czyni go idealnym dla czytelników korzystających z narzędzi ułatwień dostępu lub starszych przeglądarek internetowych. Z drugiej strony użytkownicy e-booków mogą teraz sprawdzić edycję e-bookow.

Ta edycja jest identyczna merytorycznie. Interaktywne widżety zostały uproszczone do pracy z czystym HTML, chociaż będą oferować link do oryginalnego artykułu na wypadek, gdyby czytelnik chciał wypróbować 'pełną wersję'.

Jak zawsze ten artykuł jest dostępny na Github, aby umożliwić czytelnikom zgłaszanie błędów lub proponowanie zmian. Dostępne są również pomocnicze materiały do czytania które pomogą Ci zrozumieć serię. Autor przyjmuje również darowizny, aby poprawić jakość bieżących i nadchodzących artykułów.


Spis Treści

  1. Zdjęcia pomocnicze
  2. Szybkie wprowadzenie
  3. Modele i warianty
  4. CPU
    1. Porównanie względne
    2. Dostępna pamięć
    3. Dostęp do pozostałych komponentów
    4. Kompatybilność wsteczna
  5. Grafika
    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
  6. Dźwięk
    1. Funkcjonalność
      1. Impuls
      2. Szum
      3. Zmiksowane
    2. Sekrety i ograniczenia
      1. Rozszerzenie FM
      2. Dokładność emulacji
      3. Odtwarzanie próbek
  7. WE/WY
    1. Dostępne interfejsy
    2. Górne przerywacze
  8. System Operacyjny
    1. Selektor nośnika
    2. Ekran-niespodzianka
    3. Więcej różnic regionalnych
    4. Możliwość aktualizacji i nowsze układy BIOS
  9. Gry
    1. Nośnik danych
  10. Przeciwdziałanie-Piractwu & Blokowanie Regionu
  11. To wszystko ludziska
  12. Copyright and permissions
  13. Źródła / Czytaj Dalej
  14. Współpraca
  15. Dziennik zmian

Zdjęcia pomocnicze

Modele

Image
Sega Master System.
Wydany 20.10.1985 w Japonii, 09.1986 w Ameryce i 06.1987 w Europie

Płyta Główna

Image
Płyta Główna
Chip dźwiękowy jest osadzony w procesorze wideo.
Image
Płyta główna z zaznaczonymi ważnymi częściami

Diagram

Image
Schemat głównej architektury

Szybkie wprowadzenie

Master System pochodzi z długiej linii sukcesji. To, co zaczęło się jako kolekcja gotowych komponentów, teraz zyskało nową tożsamość dzięki inżynierii Sega.


Modele i warianty

Na początku byłem trochę zdezorientowany, czytając o różnych modelach, które firma Sega sprzedawała, więc oto podsumowanie głównych omawianych modeli, aby uniknąć dalszych nieporozumień:

Odtąd będę używał terminu ‘Master System’ lub ‘SMS’ w odniesieniu do nich wszystkich, z wyjątkiem mówienia o ekskluzywnych funkcjach konkretnego modelu.


CPU

Sega zdecydowała się na pełnoprawny procesor Zilog Z80 pracujący z częstotliwością ~3,58 MHz. Popularny wybór używany przez maszyny takie jak ZX Spectrum i Amstrad CPC.

Procesor Z80 ma ciekawą historię, ponieważ jego autorem jest nikt inny jak twórcy Intela 8080, którzy przestali interesować się kierunkiem, w jakim zmierza Intel, i w 1974 roku postanowili założyć własną firmę krzemową, Zilog. Ich debiutujący produkt można uznać za nieoficjalnego następcę Intel 8080, który zawiera:

Zdjęcie płyty głównej na początku artykułu przedstawia procesor NEC D780C-1, oznacza to po prostu, że SEGA używała chipów produkcji różnych producentów, inne wersje zawierały nawet chip wyprodukowany przez Zilog. Ale w tym artykule nie ma znaczenia, kto wyprodukował procesor, ponieważ wewnętrzne funkcje pozostają takie same.

Porównanie względne

Zauważ, że procesor 6502 (znaleziony w NES) działa tylko na ~2 MHz. Jest to około połowy prędkości chipu Master System. W połączeniu z większym rejestrem Z80 można by pomyśleć, że Master System powinien bez wątpienia przewyższać NES.

I odwrotnie, jeśli się w to zgłębimy, zobaczysz, że 6502 zawiera większe (8-bitowe) ALU. Tak więc operacje arytmetyczne, które mogą zająć tylko dwa cykle w 6502, zużywają cztery na Z80. Ostatecznie, pokazuje to że względne cechy takie jak prędkość CPU lub rozmiar rejestru, gdy analizowane są osobno, mogą być zwodnicze. Zarówno Z80, jak i 6502 mają swoje mocne i słabe strony, jeśli chodzi o różne zadania. Wszystko zależy od umiejętności programisty.

Dostępna pamięć

Jak wspomniano wcześniej, Z80 ma 16-bitową magistralę adresową, więc procesor może wykryć do 64 KB pamięci. W mapie pamięci znajdziesz 8 KB pamięci RAM do ogólnego użytku [2], która jest dublowana w kolejnym bloku 8 KB. Wreszcie mapowane jest również do 48 KB ROM-u gier.

Dostęp do pozostałych komponentów

Jak można wyczytać z poprzedniego akapitu, w przestrzeni adresowej znajduje się tylko główna pamięć RAM i część pamięci ROM kartridża, więc jak program może uzyskać dostęp do innych komponentów? Cóż, w przeciwieństwie do Famicom’u/NES-a Nintendo, nie cały sprzęt Master System jest mapowany przy użyciu lokalizacji pamięci. Zamiast tego niektóre urządzenia peryferyjne znajdują się w przestrzeni WE/WY.

Dzieje się tak, ponieważ rodzina Z80 zawiera interesującą funkcję o nazwie porty WE/WY, która umożliwia procesorowi komunikację z innym sprzętem bez wyczerpania adresów pamięci. W tym celu istnieje oddzielna przestrzeń adresowa dla ‘urządzeń WE/WY’ o nazwie porty i obie mają tę samą magistralę danych i adresową. Różnica polega jednak na tym, że porty są odczytywane i zapisywane odpowiednio za pomocą instrukcji IN i OUT - w przeciwieństwie do tradycyjnej instrukcji ładowania/przechowywania (LD).

Kiedy wykonywana jest instrukcja IN lub OUT, Z80 ustawia linie adresowe wskazujące na urządzenie peryferyjne (które może być na przykład klawiaturą), flaguje swój pin IORQ wskazujący, że żądanie I/O zostało zainicjowane i ostatecznie oznacza pin RD lub pin WR zależnie od tego, czy jest to odpowiednio kod instrukcji IN czy OUT. Zaadresowane urządzenie peryferyjne musi ręcznie sprawdzić magistralę adresową i piny WE/WY oraz wykonać wymaganą operację. W przypadku instrukcji IN, CPU zapisze odebraną wartość w predefiniowanym rejestrze.

Image
Układ adresowania SMS.

Sposób, w jaki SEGA połączyła procesor z resztą komponentów, umożliwia nie tylko dostęp do wartości, ale także pokazywanie/ukrywanie niektórych komponentów przed pojawieniem się na mapie pamięci.

Co ciekawe, Game Boy miał ‘wariant’ Z80, który całkowicie pomijał porty WE/WY. Musiał więc zmieścić wszystko w mapie pamięci.

Kompatybilność wsteczna

Architektura tej konsoli jest bardzo podobna do jej poprzednika, Sega SG-1000, więc Master System zdołał uzyskać wsteczną kompatybilność z SG-1000. Chociaż dotyczy to tylko japońskiego wariantu, ponieważ pozostałe zawierają inne gniazdo kartridża.


Grafika

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) [3], 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 [4]). 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 [5].

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) [6], 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 [7]. 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 [8]. 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 [9].
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.


Dźwięk

Możliwości audio tej konsoli są w dużym stopniu zgodne z resztą konsol z lat 80-tych. Wewnątrz układu VDP znajduje się nieco dostosowana wersja Texas Instruments SN76489 [10], która jest Programowalnym Generatorem Dźwięku lub ‘PSG’. Jest to ten sam typ, który jest używany w NES/Famicom, choć ma inne funkcje.

Funkcjonalność

PSG może syntetyzować tylko ograniczony zestaw fal, każdy kanał przydziela pojedyńczą falę. Wcześniej przedstawiłem kilka PSG w artykule NES i Game Boy, jeśli chcesz przeczytać więcej o tego rodzaju syntezie dźwięku.

W SMS, PSG programuje się zmieniając swój zestaw zewnętrznych rejestrów za pomocą wyżej wymienionych portów I/O.

Przyjrzyjmy się teraz każdemu typowi fali, jaki może wygenerować SN76489:

Impuls

Sonic The Hedgehog (1991).
Kanal impulsu.

Fale impulsowe/tonowe wytwarzają ten kultowy dźwięk z generacji 8-bitowej. Fala dźwiękowa jest generowana przez podtrzymanie napięcia, utrzymywanie go na stałym poziomie, a następnie całkowite obniżenie. Powtarzaj to w stałym tempie, a usłyszysz dźwięk.

Okres fali określi częstotliwość dźwięku (nuta). Jego cykl pracy wpływa na barwę.

Wszystko to jest obsługiwane przez PSG, które może wytwarzać trzy fale impulsowe w tym samym czasie. W szczególności SN76489 udostępnia 10-bitowy licznik na każdym kanale, który będzie używany wewnętrznie do zatrzaskiwania z dużą szybkością, co skutkuje falą impulsową o programowalnej częstotliwości.

Szum

Sonic The Hedgehog (1991).
Kanal szum.

Szum to rodzaj sygnału, który jest związany z zakłóceniami. Kiedy jest wysyłany do głośnika, brzmi jak statyczny.

SN76489 zawiera rejestr przesuwny z liniowym sprzężeniem zwrotnym lub ‘LFSR’, który jest zasilany pewnymi danymi wejściowymi i przełączany w celu wygenerowania sygnału pseudolosowego. Zawiera pewne parametry do przełączania między szumem białym i szumem okresowym, ten ostatni kradnie trzeci kanał impulsowy i podaje go przez LFSR, aby wytworzyć dźwięk podobny do basu (impuls o cztery oktawy niższy).

Używany oscylator można również zmienić, aby zmienić wysokość tonu, do wyboru są cztery opcje.

Gry zwykle używają kanału szumu do perkusji i/lub efektów dźwiękowych.

Zmiksowane

Sonic The Hedgehog (1991).
Wszystkie kanały audio.

Do tej pory omówiliśmy, co każdy kanał robi osobno, ale telewizor będzie po prostu odbierał sygnał mono ze wszystkimi kanałami zmiksowanymi przez PSG.

Wreszcie, układ zawiera również programowalne tłumiki używane do obniżania decybeli każdego kanału, skutecznie działające jako regulacja głośności.

Sekrety i ograniczenia

Podobnie jak VDP, PSG jest oczywisty, ale kryje kilka interesujących funkcji:

Rozszerzenie FM

Interaktywny odtwarzacz dostępny w nowoczesnej edycji
Próbki dźwiękowe
Double Dragon (1987).

Japońska wersja Master System zawiera dodatkowy układ audio firmy Yamaha o nazwie YM2413. Drastycznie różni się od poprzedniego PSG, ponieważ do generowania dźwięku wykorzystuje technikę modulacji częstotliwości. Jeśli jesteś zainteresowany, pokrótce wyjaśniłem, jak to działa, w artykule o Mega Drive.

Ten dokładny układ ma dziewięć kanałów dźwięku. Każdy kanał może wybrać jeden z 16 zaprogramowanych instrumentów lub zdefiniować własny, programując nośną i modulator. Niestety w danym momencie dozwolony jest tylko jeden instrument niestandardowy. Z drugiej strony nowy instrument zapewnia kilka interesujących funkcji, takich jak sterowanie obwiednią ADSR i sprzężenie zwrotne.

YM2413 ma również drugi tryb działania zwany tryb rytmu, który zamiast tego zapewnia sześć kanałów uzupełnionych o pięć dodatkowych kanałów tylko dla instrumentów rytmicznych.

Ostateczny dźwięk jest generowany przez YM2413, który miksuje własne kanały z kanałami PSG.

Wersja Mark III nie zawierała tego układu, ale FM był dostępny jako jednostka rozszerzająca o nazwie FM Sound Unit. Reszta (europejski i amerykański Master Systems) musiała trzymać się PSG, chociaż w końcu pojawiły się instalacje innych firm.

Dokładność emulacji

Image
Porównanie fal impulsowych za pomocą emulatorów.
NES pokazuje pewne zanikanie, podczas gdy SMS mają kształt kwadratu.

Czytając SMS Power (stronę internetową, która zbiera wiele informacji technicznych o systemie), natknąłem się na jedną interesującą sekcję o nazwie ‘The imperfect SN76489’ [11] który omawia pewne rozbieżności, które napotkałem podczas pisania artykułu.

Jeśli ponownie spojrzysz na przykładowy film przedstawiający falę impulsową, zobaczysz, że jest ona wizualizowana za pomocą prawie idealnej fali prostokątnej. Generator impulsów działa poprzez zatrzaśnięcie napięcia w celu wygenerowania tonu. Jednak w obwodach elektrycznych komponenty nie przechodzą natychmiast od zera do jedynki (lub odwrotnie), zawsze występuje okres przejściowy (głównie przypisywany istnieniu filtrów w obwodzie elektrycznym).

Teraz używam emulatorów do przechwytywania oddzielnych kanałów i unikania zakłóceń podczas nagrywania, chociaż emulatory nie zawsze uwzględniają czynnik przejściowy, więc ich wynik może być bliższy ‘idealnemu scenariuszowi’ niż realistycznemu w elektronice lat 80-tych. Spójrz na przykładowy obraz. Obie próbki pochodzą z emulatorów, ale wydaje się, że NES-owa potencjalnie wykazuje zachowanie bliższe światu analogowemu.

W tej chwili nie mam niezbędnych narzędzi, aby potwierdzić, czy SMS powinien wykazywać podobne zachowanie. Ale jeśli tak, nie oznacza to, że to, co usłyszałeś, jest niepoprawne, tylko ma nieco inną głośność (ledwo zauważalnej).

Odtwarzanie próbek

Alex Kidd - The Lost Stars (1986).
1-bitowa próbka PCM.

Chociaż SN76489 nie ma kanału PCM do odtwarzania próbek, jest kilka sztuczek które można wykorzystać do symulacji tej funkcji.

Opierają się one na kanałach impulsowych, odkryto, że jeśli poziom tonu jest ustalony na 1, poziom głośności (który zmienia amplitudę) będzie warunkował kształt przebiegu.

smspower.org opisuje różne projekty, które pozwalają na odtwarzanie 1-bitowych, 4-bitowych i 8-bitowych próbek PCM. Chociaż wymagania dotyczące pamięci gwałtownie wzrastają wraz z większą rozdzielczością i szybkością próbki, najlepsze zastosowania tych exploitów można znaleźć w grach homebrew.

Warto zauważyć, że próbki strumieniowe pochłaniają dużą liczbę cykli procesora, a w tym systemie jest tylko jeden procesor, więc gra może wymagać zatrzymania na krótki czas.


WE/WY

Podobnie jak inne systemy tej generacji, procesor odpowiada głównie za obsługę WE/WY. W tym przypadku procesor Z80 jest wyjątkowy ze względu na specjalne adresowanie WE/WY, ale nadal będą cykle procesora spędzane na przemieszczaniu bitów wokół komponentów.

Z drugiej strony, SMS używa dedykowanego układu kontrolera WE/WY, aby nie tylko łączyć kontrolery, ale także włączać i wyłączać części systemu, co zmieni mapę adresową. Co więcej, ten kontroler jest niezbędny do obsługi rozszerzenia FM, ponieważ moduł FM udostępnia porty, które są w konflikcie z resztą systemu (w sensie, bez interwencji układu WE/WY).

Dostępne interfejsy

Oprócz dwóch portów kontrolerów, system zawiera jedno własnościowe gniazdo kartridży, jedno gniazdo ‘Sega Card’ i jedno gniazdo rozszerzeń zarezerwowane dla ‘przyszłych akcesoriów’. To ostatnie nigdy nie było używane, z wyjątkiem rozszerzenia FM w Mark III. Nawet wtedy, SMS i Mark III miały inny projekt portu rozszerzeń [12].

Górne przerywacze

Inną specjalnością tej konsoli jest to, że zawiera dwa przyciski na górze obudowy, PAUSE i RESET, możesz spróbować zgadnąć, co robią!

Image
Górna część obudowy [13].

Kiedy przycisk PAUSE jest wciśnięty, niemaskowalne przerwanie jest wysyłane do procesora [14]. Wektor przerwań jest przechowywany w samej grze, co oznacza, że od gry zależy odebranie tego naciśnięcia.

Dla kontrastu i z jakiegoś dziwnego powodu przycisk RESET jest obsługiwany jak naciśnięcie klawisza na kontrolerze.


System Operacyjny

Na płycie głównej znajduje się mały 8 KB BIOS ROM, który jest uruchamiany przy każdym włączeniu konsoli. Sam program nie pasuje do kategorii ‘Systemu Operacyjnego’, jest raczej Boot Managerem.

Selektor nośnika

Głównym celem BIOS-u jest załadowanie prawidłowej gry (z dowolnego gniazda gry) z następującym priorytetem: Sega Card, kartridż i moduł rozszerzeń.

Proces rozruchu działa następująco:

  1. Konosla zostaje włączona.
  2. BIOS kopiuje część swojego kodu do głównego RAM.
    • Jest to kluczowy krok, ponieważ program zacznie manipulować portami WE/WY, co w pewnym momencie uniemożliwi dostęp do ROM-u!
  3. Pokaż ekran powitalny (Tylko w USA/Europie).
  4. Sprawdź każdy slot w poszukiwaniu poprawnej gry.
    • Odbywa się to poprzez komunikację z chipem kontrolera WE/WY, aby aktywować wymagane gniazdo. Następnie program startowy kopiuje nagłówek gry (16 bajtów) z każdego slotu, aby sprawdzić, czy zawartość gry jest prawidłowa (czyli prawidłowo włożona). Nagłówek musi mieć zakodowane TMR SEGA.
  5. Przeprowadzane jest sprawdzenie regionu.
  6. Wykonywanie przekierowane zostaje na grę.

Ekran-niespodzianka

Jeśli którykolwiek z testów się nie powiedzie, konsola będzie się zapętlać w nieskończoność, wyświetlając ekran, który prosi użytkownika o włożenie prawidłowej gry:

USA/Europejski komunikat o błędzie (po wstępnym ekranie powitalnym).
Japoński komunikat o ‘błędzie’ (ulepszony przez układ FM!).

Jak widzisz, pomiędzy regionami istnieją pewne kreatywne różnice. Kiedy pierwszy raz usłyszałem japoński, myślałem, że pochodzi od Electric Light Orchestra (zespół), ale tak naprawdę pochodzi ze Space Harrier (gra). Przy okazji, efekt perspektywy na podłodze uzyskuje się poprzez zmianę palet kolorów.

Więcej różnic regionalnych

Ponieważ japoński wariant był wstecznie kompatybilny z SG-1000, sprawdzanie nagłówka jest zastępowane ‘kontrolą integralności’, która zamiast tego odczytuje dane z pierwszych 256 bajtów wiele razy, aby wykryć, czy to śmieci.

Co więcej, Mark III nie ma BIOS-u, więc gniazda są aktywowane przełącznikami sprzętowymi, a kartridż jest medium o najwyższym priorytecie.

Możliwość aktualizacji i nowsze układy BIOS

ROM-u systemu BIOS ze względu na jego charakter nie można aktualizować. Chociaż wraz z wejściem na rynek nowych wersji konsoli odkryto, że Sega zaktualizowała również program BIOS.

Późniejsze BIOS-y zawierały nawet całą grę! W konsekwencji chip ROM stał się większy i towarzyszył mu dedykowany mapper.


Gry

Krótko mówiąc, gry są napisane w zwykłym asemblerze Z80, i tyle. Jeśli czytałeś artykuły o późniejszych konsolach, nie ma tutaj kompilatorów ani oprogramowania wspomagającego (poza asemblerem).

Nośnik danych

Master System udostępnia dwa różne nośniki dystrybucji gier:


Przeciwdziałanie-Piractwu & Blokowanie Regionu

W przeciwieństwie do Nintendo, Sega nie zastosowała agresywnych metod kontrolowania dystrybucji swoich gier, jednak uniemożliwiła systemom amerykańskim i europejskim uruchamianie japońskich gier, zmieniając kształt gniazda kartridża i używając innego sprawdzania nagłówka pamięci ROM.

Ponadto systemy amerykańskie i europejskie musiały zawierać w nagłówku wspomniany kod TMR SEGA. Więc, to umożliwiło im zapobieganie nieautoryzowanej dystrybucji poprzez wykorzystanie praw dotyczących znaków towarowych.


To wszystko ludziska

Uprzednie napisanie artykułu o Nintendo DS naprawdę pokazuje, jak skomplikowana stała się technologia. Master System jest w tym sensie bardzo prosty, nawet po pewnym ‘technicznym czepianiu się dziury’, o którym być może powiedziałem tu i tam.

W każdym razie mam nadzieję, że ten artykuł pomógł ci uzyskać ogólne wrażenie na temat stanu technologii od początku do połowy lat 80-tych. Chciałbym również podziękować społeczności smspower.org i Discordowi /r/Emulation za przeczytanie pierwszego szkicu i wskazanie mnóstwa błędów i sugestii.

Do następnego razu!
Rodrigo

Ten artykuł został poświęcony pamięci Jacinto ‘Pocho’ Fornasier.


Współpraca

Ten artykuł jest częścią serii Architektura Konsol. Jeśli uznałeś go za interesujący, rozważ darowiznę. Twój wkład zostanie wykorzystany na sfinansowanie zakupu narzędzi i zasobów, które pomogą mi poprawić jakość istniejących i przyszłych artykułów.

Donate with PayPal
Become a Patreon

Możesz także zakupić wydanie e-bookowe w języku angielskim. Zyski traktuję jako darowizny.

Image

Wielkie podziękowania dla następujących osób za ich darowiznę:

Możesz też pomóc proponując zmiany i/lub dodając tłumaczenia.


Copyright and permissions

This work is licensed under a Creative Commons Attribution 4.0 International License. You may use it for your work at no cost, even for commercial purposes. But you have to respect the license and reference the article properly. Please take a look at the following guidelines and permissions:

Article information and referencing

For any referencing style, you can use the following information:

For instance, to use with BibTeX:

@misc{copetti-mastersystem,
    url = {https://classic.copetti.org/writings/consoles/master-system/},
    title = {Sega Master System Architecture - A Practical Analysis},
    author = {Rodrigo Copetti},
    year = {2020}
}

or a IEEE style citation:

[1]R. Copetti, "Sega Master System Architecture - A Practical Analysis", Copetti.org, 2020. [Online]. Available: https://classic.copetti.org/writings/consoles/master-system/. [Accessed: day- month- year].

Special use in multimedia (Youtube, Twitch, etc)

I only ask that you at least state the author’s name, the title of the article and the URL of the article, using any style of choice.

You don’t have to include all the information in the same place if it’s not feasible. For instance, if you use the article’s imagery in a Youtube video, you may state either the author’s name or URL of the article at the bottom of the image, and then include the complete reference in the video description. In other words, for any resource used from this website, let your viewers know where it originates from.

This is a very nice example because the channel shows this website directly and their viewers know where to find it. In fact, I was so impressed with their content and commentary that I gave them an interview 🙂.

Appreciated additions

If this article has significantly contributed to your work, I would appreciate it if you could dedicate an acknowledgement section, just like I do with the people and communities that helped me.

This is of course optional and beyond the requirements of the CC license, but I think it’s a nice detail that makes us, the random authors on the net, feel part of something bigger.

Third-party publishing

If you are interested in publishing this article on a third-party website, please get in touch.

If you have translated an article and wish to publish it on a third-party website, I tend to be open about it, but please contact me first.


Źródła / Czytaj Dalej

Audio

CPU

Grafika

WE/WY

Fotografia