Obsah
1. Historie vývoje počítačových her (40. část – popis herní konzole Sega Mega Drive/Sega Genesis)
3. Podporované grafické režimy
5. Scrolling, priorita herních polí a jejich zrcadlení
6. Podpora pro práci se sprity
7. Zvukový subsystém herní konzole Sega Mega Drive
1. Historie vývoje počítačových her (40. část – popis herní konzole Sega Mega Drive/Sega Genesis)
V dnešní části seriálu o historii vývoje výpočetní techniky se budeme zabývat podrobnějším popisem herní konzole Sega Mega Drive a.k.a. Sega Genesis. Popíšeme si především grafický a zvukový subsystém této konzole. Nebude se sice jednat o tak podrobný popis, aby bylo možné ihned začít pro Mega Drive vytvářet nové programy (ano – mnoho programátorů se právě touto činností baví, když už jsou unaveni tvorbou „enterprise řešení“ :-), ale čtenář by měl získat alespoň základní informace o možnostech této konzole a porovnat tyto možnosti s parametry konzolí, které již byly v tomto seriálu popsány. Pro připomenutí: základní technické parametry o herní konzoli Sega Mega Drive jsou shrnuty v následující tabulce:
Vlastnost | Popis |
---|---|
Výrobce | SEGA |
Začátek prodeje | 1988 |
Mikroprocesor | MC68HC00 (CMOS varianta Motorola 68000) |
Hodinová frekvence CPU | 7,61 či 7,67 MHz (podle televizní normy) |
Koprocesor | Zilog Z80 (později kompatibilní čip jiného výrobce) |
Grafický řadič | VDP 315–5313 (později obdobné čipy od Yamahy) |
Televizní norma | PAL či NTSC |
Rozlišení (NTSC) | až 320×224 |
Rozlišení (PAL) | až 320×240 |
Zvukový čip (samply+šum) | Texas Instruments SN76489 |
Zvukový čip (FM syntéza) | Yamaha YM2612 |
Kapacita RAM | 64 kB |
Kapacita Video RAM | 64 kB |
Kapacita Color RAM | 64×9 bitů |
Kapacita Audio RAM | 8 kB |
Obrázek 1: Herní konzole Sega Mega Drive.
2. Grafický subsystém herní konzole Sega Mega Drive a zpětná kompatibilita čipu VDP v konzoli Sega Mega Drive s předchozími verzemi VDP
Začněme nejdříve popisem grafického subsystému. Jak jsme si již řekli v předchozí části tohoto seriálu, byl grafický subsystém herní konzole Sega Mega Drive vytvořen na bázi čipu označovaného zkratkou VDP neboli Video Display Processor. Původní varianty tohoto čipu, které byly založeny na dnes již historickém integrovaném obvodu Texas Instruments TMS9918, byly použity i v osmibitových konzolích Sega Mark III, Sega Master System (II) a taktéž v kapesní herní konzoli Sega Game Gear. Čip VDP 315–5313 použitý v herní konzoli Sega Mega Drive byl již čtvrtým vylepšením původního designu. Tento integrovaný obvod byl částečně zpětně kompatibilní s předchozími třemi variantami VDP, což je důležité, protože díky tomu (a taktéž díky použití koprocesoru Zilog Z80) byla zajištěna možnost přehrávat starší osmibitové hry i na konzoli Sega Mega Drive – viz též tabulka zobrazená pod tímto odstavcem:
Označení čipu | Použito v… |
---|---|
315–5124 | Sega Mark III, Sega Master System |
315–5246 | Sega Master System II, pozdější varianty Sega Master System |
315–5378 | Game Gear |
315–5313 | Genesis, Sega Mega Drive |
Obrázek 2: Herní konzole třetí generace SG-1000 (asijská verze), vybavená původní variantou grafického řadiče VDP.
Grafický řadič VDP se od původního řadiče Texas Instruments TMS9918 odlišoval i podporou většího počtu grafických režimů. Jedná se o čtyři původní grafické režimy známé nejenom z osmibitových herních konzolí Sega: textový režim, rastrový režim Graphic 1, taktéž rastrový režim Graphic 2 a režim Multicolor (ten používal odlišnou organizaci grafické paměti a snažil se napodobit klasický framebuffer). Pátý režim se jmenoval Mode 4, což je označení založené na předpokladu, že režim Multicolor byl pokládán za grafický režim číslo 3. Modernější integrovaný obvod VDP 315–5313 (a jeho různé varianty vyráběné společností Yamaha) použitý v konzolích Sega Mega Drive/Sega Genesis ovšem dokázal v režimu kompatibility pracovat pouze v režimu číslo 4 (Mode 4) a – což je asi mnohem důležitější – nově taktéž nabízel režim 5 (Mode 5), jenž byl použit u naprosté většiny nových her, které pro tyto herní konzole vznikaly. V dalším textu se z tohoto důvodu zaměříme především na popis čipu VDP nastaveného do režimu 5.
Obrázek 3: Herní konzole Sega Master System (SMS), s níž je kompatibilní i konzole Sega Mega Drive.
3. Podporované grafické režimy
V předchozí kapitole jsme se zmínili o grafických režimech původního čipu TMS9918 i o grafických režimech podporovaných v modernějších variantách integrovaného obvodu VDP, které jsou od TMS9918 odvozeny. V následující tabulce je všech šest režimů vypsáno i s podrobnějšími informacemi o těchto režimech. Ve většině grafických režimů bylo kromě pozadí možné pracovat i se sprity:
Režim | Typ | Rozlišení (znaků) | Rozlišení (pixelů) | Poznámka |
---|---|---|---|---|
0 | text | 40×24 | 320×192 | podpora v TMS9918 |
1 | grafika | 32×24 | 256×192 | podpora v TMS9918 |
2 | grafika | 32×24 | 256×192 | podpora v TMS9918 |
3 | grafika | 64×48 | 64×48 | podpora v TMS9918 |
4 | grafika | 32×28/30 | 256×224/240 | režim konzole Sega Master System |
5 (A) | grafika | 32×28/30 | 256×224/240 | nový režim konzole Sega Mega Drive |
5 (B) | grafika | 40×28/30 | 320×224/240 | nový režim konzole Sega Mega Drive |
Obrázek 4: Osazený plošný spoj konzole Sega Mega Drive II
Autor: Nomad (děkuji!).
Ještě možná bude důležité si zobrazit tabulku, v níž je uvedena (zpětná) kompatibilita jednotlivých grafických režimů:
Čip/konzole | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 |
---|---|---|---|---|---|---|
Sega Game 1000 (TMS9918) | A | A | A | A | – | – |
Sega Master System | A | A | A | A | A | – |
Sega Mega Drive | – | – | – | – | A | A |
Čip VDP pracoval s grafickými údaji organizovanými do takzvaných dlaždic (anglicky tiles či též ve firemní dokumentaci cells) o rozměrech 8×8 pixelů, přičemž každému pixelu v dlaždici mohla být přiřazena jedna z patnácti barev uložených v barvové paletě. Barvové palety byly čtyři, každá se šestnácti barvami, i když šestnáctá barva měla speciální význam, zejména při práci se sprity (viz též následující kapitoly). Všechny čtyři barvové palety byly uloženy ve zvláštní oblasti paměti s organizací 64×9 bitů, přičemž tato paměť byla přímo součástí čipu VDP (nejednalo se tedy o samostatný integrovaný obvod). Organizace této paměti je poněkud zvláštní z toho důvodu, protože každá barva byla uložena v devíti bitech: pro každou barvovou složku R, G, B byly vyhrazeny tři bity. V následující kapitole si popíšeme strukturu herních polí playfield, v kapitole šesté pak strukturu spritů.
Obrázek 5: Mikroprocesor MC68HC00 na základní desce Sega Mega Drive.
Autor: Nomad.
4. Herní pole (playfields)
Integrovaný obvod Video Display Processor se staral o vykreslování herní scény na obrazovce televizoru a kromě toho podporoval i blokové přenosy dat s využitím přímého přístupu do paměti (DMA) a taktéž dokázal generovat přerušení na každém obrazovém řádku (horizontal interrupt) i po zobrazení každého snímku (vertical interrupt). Vzhledem k tomu, že i přes relativně vysoký výpočetní výkon mikroprocesoru Motorola 68000 by bylo dosti nepraktické vytvářet dnes zcela běžný framebuffer, jehož obsah by byl modifikovatelný přímo mikroprocesorem, měl čip VDC přidělenou samostatnou paměťovou oblast o velikosti 64 kB, v níž se namísto klasického framebufferu ukládaly grafické informace strukturované do již zmíněných dlaždic o velikostech 8×8 pixelů, takže se VDC v tomto ohledu podobal například čipu Antic, přesněji řečeno jeho textově-grafickým režimům číslo 12 a 13 (zajímavé je, že podobný přístup zvolili i konstruktéři retro herní konzole Uzebox). Tyto dlaždice tvořily čtyři roviny (planes), jejichž prioritu (dnes bychom pravděpodobně řekli Z-pozici) bylo možné v určitých rozmezích měnit. Jedná se o roviny s následujícími názvy:
# | Grafická rovina | Popis |
---|---|---|
1 | BACKGROUND | barva zobrazená na pozadí |
2 | SCROLL A | první herní pole (playfield) dále rozdělená na dlaždice o rozměrech 8×8 pixelů |
3 | SCROLL B | druhé herní pole (playfield) dále rozdělená na dlaždice o rozměrech 8×8 pixelů |
4 | SPRITE | pohyblivé objekty o rozměrech 8×8 až 32×32 pixelů |
Obrázek 6: Herní retro konzole Uzebox obsahující osmibitový mikrořadič AVR řady ATmega. Způsob generování video signálu na této konzoli se do jisté míry podobal VDP.
Roviny nazvané SCROLL A a SCROLL B se souhrnně nazývají herní pole neboli playfield(s). Každá rovina je složena z menších dlaždic o rozměrech 8×8 pixelů, přičemž rozměry každé roviny (přesněji řečeno počet dlaždic pro každou rovinu) lze vybrat z následujících šesti možností: 32×32, 32×64, 32×128, 64×32, 64×64 a 128×32 dlaždic. Mohlo by se tedy zdát, že rozměry obou herních polí určují i rozlišení výsledného obrázku na televizoru, ve skutečnosti se však na televizoru většinou zobrazoval pouze výsek z obou rovin, protože reálné rozlišení bylo určeno jedním z následujících podrežimů grafického režimu číslo 5 (viz též tabulka uvedená v předchozí kapitole):
Režim | Varianta | TV | Velikost (dlaždice) | Rozlišení (pixely) |
---|---|---|---|---|
#5 | #1 | PAL+NTSC | 32×28 | 256×224 |
#5 | #2 | PAL+NTSC | 40×28 | 320×224 |
#5 | #3 | pouze PAL | 32×30 | 256×240 |
#5 | #4 | pouze PAL | 40×30 | 320×240 |
Obrázek 7: Předělávka slavné plošinovky z dob osmibitových počítačů Donkey Kong na herní konzoli Uzebox osazenou mikrořadičem AVR ATmega 644.
5. Scrolling, priorita herních polí a jejich zrcadlení
Jak již název obou herních polí SCROLL A a SCROLL B naznačuje, podporoval čip VDP i jejich scrolling, tj. plynulý (či volitelně naopak méně plynulý) posun všemi směry. Posunovat bylo možné každé herní pole nezávisle na poli druhém. Zajímavé bylo, že informace o posunu herních polí nebyly představovány pouze dvojicí celých čísel (horizontální a vertikální posun), ale celou datovou strukturou umožňující poloautomatický scrolling prováděný buď po jednotlivých dlaždicích, tedy například po osmi řádcích, nebo dokonce po jednotlivých obrazových řádcích, čehož se využívalo například při tvorbě efektu vlnícího se nápisu, simulace 3D zobrazení apod. Se scrollingem souvisí i možnost převrátit jednotlivé dlaždice okolo horizontální a/nebo vertikální osy, čehož bylo taktéž možné využít při tvorbě různých grafických efektů. Stejně jako v případě spritů (viz též následující kapitolu) se pro každou dlaždici, z nichž se skládaly obě herní pole, mohla zvolit barvová paleta a každý pixel v dlaždici mohl být nastaven na vybranou barvu v paletě.
Obrázek 8: Mikroprocesor Zilog Z80 na desce Sega Mega Drive II.
K prvnímu hernímu poli (SCROLL A) byla navíc přiřazena datová struktura nazvaná příznačně WINDOW. Jednalo se o oblast zobrazenou na televizoru, která měla pevně určenou pozici, šířku i výšku, kterou nebylo možné posunovat (scrollovat) a jejíž priorita, tj. Z-pozice vůči ostatním třem rovinám, byla shodná s nastavením priority herního pole SCROLL A. Význam WINDOW spočíval v možnosti zobrazit nějakou pevně umístěnou informaci na obrazovce – typicky se jednalo o ukazatel skóre či ubíhajícího času. Podobného efektu by sice bylo možné dosáhnout i s využitím spritů, tím by se však programátoři zbytečně ochuzovali o možnost využít sprity pro účely, k nimž byly původně vytvořeny – k zobrazení pohyblivých objektů. Pokud by se sprity například použily pro zobrazení šestimístného skóre, bylo by nutné pro každou cifru použít jeden sprite, čímž by programátor „zahodil“ celou desetinu použitelných spritů.
Způsob vzájemné kombinace grafických rovin a nastavení priorit ukazuje následující schéma:
+--------------+ | | | SCROLL B +-------+ | | | +--------------+ | | +--------------+ | +---------------------+ | | | | BACKGROUND | | SCROLL A |----+ | +---------------+ | +---------------+ | | | | | | | | | | | +--------------+ | +----> Řízení | | | | | o-------> priority |-------> | Obrazovka | | +--------------+ | +----> | | | | | | | | | | | | | | | | WINDOW |----+ | +---------------+ | +---------------+ | | | | | BACKGROUND | +--------------+ | +---------------------+ | +--------------+ | | | | | SPRITE +-------+ | | +--------------+
Obrázek 9: Tento čip obsahuje Video RAM využívanou čipem VDP.
6. Podpora pro práci se sprity
Zatímco herní pole (playfield) byla používána především pro zobrazení relativně neměnného herního pozadí, pro práci s pohyblivými objekty se používaly sprity, podobně jako tomu bylo u grafických subsystémů mnoha dalších herních konzolí, na mnoha domácích počítačích (Atari, Commodore C64, …) i na některých počítačích osobních (Amiga). V případě herní konzole Sega Mega Drive bylo možné pracovat buď s 64 sprity v režimu s horizontálním rozlišením 256 pixelů (32 dlaždic), nebo dokonce s osmdesáti sprity v režimu s horizontálním rozlišením 320 pixelů (40 dlaždic). Na jednom obrazovém řádku však bylo možné zobrazit pouze 16 (režim 256×224 pixel) resp. 20 (režim 320×224 pixelů) spritů současně. Pokud se stalo, že se na jednom obrazovém řádku z nějakého důvodu objevilo větší množství spritů, došlo k chybám v zobrazení a navíc se nastavil bitový příznak (konkrétně bit číslo šest) ve stavovém registru čipu VDP. Základní velikost každého spritu odpovídala jedné dlaždici, tj. obrázku o velikosti 8×8 pixelů, ovšem ve skutečnosti bylo možné spojit dvě či čtyři dlaždice jak v horizontálním, tak i ve vertikálním směru a využít tak celkem šestnáct různých velikostí spritů:
8×8, 8×16, 8×24, 8×32 16×8, 16×16, 16×24, 16×32 24×8, 24×16, 24×24, 24×32 32×8, 32×16, 32×24, 32×32
Obrázek 10: Obvod pro převod RGB na signály kompatibilní s PAL a NTSC.
Každá dlaždice o rozměrech 8×8 pixelů byla v paměti vyhrazené pro integrovaný obvod VDP uložena ve 32 bajtech, což znamená, že pro každý pixel byly vyhrazeny čtyři bity. Tyto čtyři bity (šestnáct různých kombinací) určovaly index barvy 0–15 v barvové paletě. Podporovány byly čtyři barvové palety (což je oproti původním čipům VDP a TMS9918 dvojnásobek) po šestnácti barvách nastavované pro každý sprite zvlášť. Ovšem jeden index barvy měl zvláštní význam, protože tento index sloužil ke změně priority zobrazení, tj. pro podporu průhlednosti oblastí ve spritu – přes sprite v místech pixelů s indexem barvy #15 prosvítala buď barva pozadí (BACKGROUND), barva uložená v herním poli SCROLL A či barva uložená v herním poli SCROLL B, a to v závislosti na nastavené prioritě. Celkem bylo možné vybrat osm priorit zobrazení, viz též následující tabulka (a schéma z předchozí kapitoly):
# | S priority | A priority | B priority | Skutečná priorita |
---|---|---|---|---|
0 | 0 | 0 | 0 | S→A→B→G |
1 | 1 | 0 | 0 | S→A→B→G |
2 | 0 | 1 | 0 | A→S→B→G |
3 | 1 | 1 | 0 | S→A→B→G |
4 | 0 | 0 | 1 | B→S→A→G |
5 | 1 | 0 | 1 | S→B→A→G |
6 | 0 | 1 | 1 | A→B→S→G |
7 | 1 | 1 | 1 | S→A→B→G |
kde znaky S, A a B znamenají:
Znak | Význam |
---|---|
S | SPRITE |
A | herní pole SCROLL A |
B | herní pole SCROLL B |
G | barva pozadí (BACKGROUND) |
Obrázek 11: Krystal v Sega Mega Drive II.
7. Zvukový subsystém herní konzole Sega Mega Drive
Zvukový subsystém herní konzole Sega Mega Drive je stejně zajímavý jako její grafický subsystém. I v tomto případě se totiž konstruktéři herní konzole snažili v co největší míře ušetřit práci hlavnímu procesoru (Motorola 68000) a prakticky veškerou funkcionalitu při generování zvuků a hudby převzaly samostatné čipy. Jednalo se především o osmibitový mikroprocesor Zilog Z80 s přidělenou pamětí o kapacitě osmi kilobajtů, který kromě jiného zajišťoval zpětnou kompatibilitu se staršími konzolemi, dále pak o integrovaný obvod Texas Instruments 76489 určený především pro vytváření zvuků (nikoli melodií) ve hrách a při generování hudby se používal poslední čip Yamaha YM 2612. Poznámka: pro osmibitovou herní konzoli Sega Master System existoval rozšiřující modul s hudebním čipem Yamaha YM 2413 (obsahovaly ho pravděpodobně jen japonské verze), tento čip nebyl v Sega Mega Drive používán, i když ho teoreticky bylo možné připojit i k této konzoli.
Obrázek 12: Interní struktura čipu YM 2413 (není součástí Sega Mega Drive).
Pro práci se zvukem byl určen relativně jednoduchý čip Texas Instruments SN76489, který dokázal generovat (obdélníkové) zvukové signály s volitelnou frekvencí a amplitudou. Čip SN76489 obsahoval tři tónové generátory vytvářející periodický obdélníkový signál a jeden generátor šumu s periodou 215-1 realizovaný posuvným registrem se zpětnou vazbou. Frekvence každého tónového generátoru byla určena desetibitovou konstantou uloženou do řídicího registru čipu SN76489. Tato konstanta byla použita ve frekvenční děličce (běžném čítači), přičemž reálná frekvence vytvářeného obdélníkového signálu se vypočítala následovně:
f=Fosc/32n
kde Fosc je frekvence hodinového signálu přiváděného na vstup čipu (3,579545 MHz pro konzole určené pro normu NTSC, 3,546893 MHz pro konzole pro normu PAL).
Obrázek 13: Zvukový čip SN76489.
U každého tónového generátoru bylo taktéž možné určit amplitudu pomocí čtyřbitové hodnoty. Na výstupu se všechny zvukové signály sečetly, takže se rychlou změnou amplitudy a vhodným nastavením frekvencí jednotlivých zvukových kanálů daly generovat i poměrně složité melodie nebo zvuky ve hrách. Jak jsme se již řekli v předchozím odstavci, obsahoval tento čip navíc jeden generátor šumu, který byl implementován pomocí posuvného registru o šířce 15 bitů se zpětnou vazbou (bit, který se vracel na vstup posuvného registru, byl získán logickou operací nonekvivalence (XOR) nejvyšších bitů posuvného registru). Pro generátor šumu bylo možné zvolit pouze tři frekvence: Fosc/64, Fosc/128 a Fosc/256. Poněkud nešikovné je to, že obsah generátoru šumu nebylo možné přečíst mikroprocesorem, protože by se tato funkce mohla hodit ve hrách, které mnohdy vyžadují generátor (pseudo)náhodných čísel.
Obrázek 14: Způsob zapojení čipu SN76489.
Zdroj: firemní dokumentace k tomuto čipu.
Čip SN76489 obsahoval osm řídicích registrů – tři registry pro uložení konstanty pro děličky frekvence tónových generátorů, tři registry pro zápis amplitudy tónových generátorů, registr pro řízení generátoru šumu a konečně registr pro řízení amplitudy a frekvence generátoru šumu. Jak je z tohoto popisu patrné, byly možnosti zvukového čipu SN76489 poněkud menší než možnosti konkurenčních čipů AY-3–8910 či POKEY, na druhou stranu ovšem lepší, než tomu bylo u čipu TIA použitého v herní konzoli Atari 2600.
8. Čip Yamaha YM 2612
Pro vytváření hudby se v herní konzoli Sega Mega Drive používal integrovaný obvod nazvaný Yamaha YM 2612, který je v mnoha ohledech podobný obvodu Yamaha 2151. S druhým jmenovaným integrovaným obvodem již měla společnost SEGA určité zkušenosti, protože ho používala ve svých video automatech a firma Yamaha tento čip používala v některých svých syntetizérech. Vraťme se k čipu Yamaha YM 2612. Ten podporoval celkem šest kanálů, přičemž se zvuk v každém kanálu tvořil pomocí FM syntézy, tj. podobně, jak to znají například programátoři zvukové karty Adlib na PC. Kromě šesti FM kanálů bylo možné jeden kanál (konkrétně šestý kanál) nahradit přímým osmibitovým výstupem – tj. vlastně přehrávačem samplů, který však musel být řízen softwarově (nebylo podporováno DMA). Navíc byl čip YM 2612 vybaven i dvojicí časovačů využitelných ve hrách. Tyto časovače však nebyly připojeny na přerušovací vstupy mikroprocesoru (ani Motoroly 68000 ani Zilogu Z80), takže jediné, co nimi programátor mohl dělat, bylo jejich čtení v programu.
Pro každý ze šesti FM kanálů byl zvuk vytvářen pomocí čtveřice takzvaných operátorů, přičemž pro každý operátor bylo možné zvolit jeho frekvenci a tvar obálky. Navíc se pro každý kanál určila vzájemná konfigurace operátorů – zda byl výstup jednoho operátoru přiveden na vstup operátoru druhého (FM syntéza) či zda se výstupy obou operátorů sečetly. Aby byly zvukové možnosti čipu YM 2612 ještě větší, bylo možné pro první operátor v řadě (u každého kanálu) povolit zpětnovazební smyčku, takže se výstup přiváděl zpět na vstup. Každý FM kanál navíc mohl být ovlivněn nízkofrekvenčním oscilátorem (LFO). Možnosti konfigurace však nebyly tak velké jako v případě karty Adlib (čip OPL2/YM3812), protože k dispozici bylo jen osm možných konfigurací – takzvaných „algoritmů“.
Obrázek 15: V Sega Mega Drive II byl použit tento integrovaný obvod obsahující na jednom čipu: VDP, hudební obvod Yamaha 2612 a řadič sběrnice.
9. Odkazy na Internetu
- SN76489 sound chip details
http://web.inter.nl.net/users/J.Kortink/home/articles/sn76489/ - SN76464 datasheet
http://www.ic-on-line.cn/view_online.php?id=1106623&file=0054%5Csn76494_409323.pdf - Texas Instruments SN76489 (Wikipedia)
http://en.wikipedia.org/wiki/Texas_Instruments_SN76489 - SN76489
http://www.smspower.org/Development/SN76489?sid=ae16503f2fb18070f3f40f2af56807f1 - YM2413 FM Operator Type-LL (OPLL) Application Manual
http://www.smspower.org/maxim/Documents/YM2413ApplicationManual?sid=28c370e1fcac51d5774319979bf96f4c - Programming the Sega MegaDrive
http://darkdust.net/writings/megadrive - MegaDrive / SegaGenesis docs
http://www.genny4ever.net/index.php?page=docs - IGN: Top 25 Consoles
http://www.ign.com/top-25-consoles/13.html - Sega Mega Drive
http://sega.jp/archive/segahard/md/ - Sega Archives
http://sega.jp/archive/segahard/ - Sega Genesisi
http://www.dmoz.org/Games/Video_Games/Console_Platforms/Sega/Genesis/ - The Retro Gen Plays Genesis Games
http://uk.gamespy.com/articles/998/998637p1.html - The Sega Mega Drive/Genesis
http://www.captainwilliams.co.uk/sega/megadrive/megadrive.php - Sega Game Gear 101: A Beginner's Guide
http://www.racketboy.com/retro/sega/gamegear/sega-game-gear-101-a-beginners-guide - SEGA GameGear | Marc's Realm
http://darkdust.net/retrogaming/gamegear - Sega Master System Hardware
http://www.smspower.org/Development/Documents - SMS/GG hardware notes
http://www.smspower.org/uploads/Development/smstech-20021112.txt?sid=28c370e1fcac51d5774319979bf96f4c - Sega Master System Museum
http://alexkidd.com/ - Jadeite's Sega Master System Museum
http://rp_gamer.tripod.com/SMS/1.html - Sega Master System (Wikipedia)
http://en.wikipedia.org/wiki/Sega_Master_System - Sega Card (Wikipedia)
http://en.wikipedia.org/wiki/Sega_Card - Sega Master System VDP documentation
http://www.smspower.org/uploads/Development/msvdp-20021112.txt?sid=28c370e1fcac51d5774319979bf96f4c - bee – The Multi-Console Emulator
http://www.thebeehive.ws/ - TurboGrafx-16 TurboExpress
http://www.allgame.com/platform.php?id=17673 - HuC6280 CPU
http://shu.emuunlim.com/download/pcedocs/pce_cpu.html - Hudson Soft HuC6280 (Wikipedia)
http://en.wikipedia.org/wiki/Hudson_Soft_HuC6280 - TurboGrafx-16 (Wikipedia)
http://en.wikipedia.org/wiki/TurboGrafx-16 - MagicEngine – TurboGrafx-16 emulator
http://www.magicengine.com/ - Motorola 68000 CPU
http://en.wikipedia.org/wiki/68000