Obsah
1. Historie vývoje počítačových her (45. část – grafický subsystém herní konzole SNES)
2. Grafické režimy v herní konzoli SNES
3. Generování pozadí (background)
5. Alternativní podpůrné čipy dostupné pro herní konzoli SNES
6. Čip MARIO aneb Nintendo Super FX
7. Podpora pro akceleraci vykreslování prostorových (3D) objektů čipem Super FX
8. Podpora pro akceleraci vykreslování 2D spritů čipem Super FX
1. Historie vývoje počítačových her (45. část – grafický subsystém herní konzole SNES)
V dnešní části seriálu o historii vývoje výpočetní techniky se zaměříme na popis grafického subsystému herní konzole SNES. Připomeňme si, že tato herní konzole byla založena na šestnáctibitovém mikroprocesoru Ricoh 5A22 odvozeného od čipu WDC 65c816. Tento mikroprocesor je součástí mikroprocesorové řady 6502, na jejímž začátku stál osmibitový čip MOS 6502 (technologie NMOS) následovaný taktéž osmibitovým čipem 65c02 (technologie CMOS). Rozšířením instrukční sady, zvětšením interní šířky pracovních registrů i šířky operandů zpracovávaných v aritmeticko-logické jednotce a dále doplněním tří dalších registrů pak vznikl šestnáctibitový mikroprocesor WDC 65c816 s 24bitovými adresami. Kromě mikroprocesoru byla herní konzole SNES vybavena i samostatně pracujícím zvukovým subsystémem a grafickým subsystémem. Zajímavé je, že tyto subsystémy obsahovaly vlastní RAM, takže skutečně dokázaly pracovat do značné míry nezávisle na činnosti mikroprocesoru.
Obrázek 1: Herní konzole SNES ve variantě určené pro připojení k televizorům pracujícím v normě PAL.
Grafický subsystém herní konzole SNES byl postaven na podobných principech jako tomu bylo u grafického subsystému původního NESu. Obraz posílaný na televizor byl poskládán z několika objektů různých typů. Především se jednalo o pozadí (background), dále pak o okna (window) a konečně o sprity, tj. objekty, které se mohly pohybovat nezávisle na sobě i nezávisle na pozadí. První změnou oproti NESu je nabídka více rozlišení pozadí. Připomeňme si, že v NESu bylo při použití televizní normy PAL rozlišení obrazu rovno 256×240 pixelům, zatímco u normy SECAM bylo horních osm řádků a spodních osm řádků zatemněných, tj. rozlišení bylo sníženo na 256×224 pixelů. V případě herní konzole SNES měli programátoři při výběru rozlišení pozadí více možností: od 256×224 pixelů (neprokládané režimy) až po 512×448 pixelů v případě prokládaných režimů (interlaced modes).
Obrázek 2: Detail připojení modulu se hrou ke konzoli SNES.
2. Grafické režimy v herní konzoli SNES
Grafický subsystém herní konzole SNES má pro svoje potřeby vyhrazenou samostatnou oblast paměti o kapacitě 64 kB. Tato oblast je (zjednodušeně řečeno) rozdělena na čtyři podoblasti:
- Tvary znaků, z nichž každý má velikost 8×8 pixelů.
- 2D pole s dlaždicemi (z těch jsou složena pozadí), odkazuje se na indexy znaků.
- Dvě tabulky spritů, které se odkazují na indexy znaků.
- Barvovou paletu o délce 512 bajtů
Obrázek 3: Jedna z variant ovladače herní konzole SNES.
Podporováno je celkem devět režimů pozadí, přičemž každý režim má odlišné vlastnosti. Z následující tabulky lze vyčíst, kolik současně zobrazitelných pozadí je v daném režimu podporováno a taktéž i počet barev pro jednotlivá pozadí (ta si můžeme představit jako přes sebe se posunující poloprůhledné vrstvy). Pokud je v některém sloupci zobrazena pomlčka, znamená to, že daný grafický režim nepodporuje současné zobrazení tolika různých pozadí:
Režim číslo | Pozadí 1 | Pozadí 2 | Pozadí 3 | Pozadí 4 |
---|---|---|---|---|
0 | 4 | 4 | 4 | 4 |
1 | 16 | 16 | 4 | – |
2 | 16 | 16 | – | – |
3 | 256 | 16 | – | – |
4 | 256 | 4 | – | – |
5 | 16 | 4 | – | – |
6 | 16 | – | – | – |
7 | 256 | – | – | – |
7EXTBG | 256 | 128 | – | – |
Režim číslo 7 má zvláštní postavení, protože pozadím bylo možné rotovat a taktéž měnit jeho zvětšení. Díky jednoduchému triku se zvětšení mohlo měnit pro každý obrazový řádek zvlášť, což se mohlo využít například při simulaci perspektivní projekce. Zvláštnosti tohoto režimu si ještě připomeneme v dalších dílech tohoto seriálu při popisu her, které tento režim využívaly.
Obrázek 4: Tato varianta ovladače byla dodávána s konzolemi určenými pro připojení k televizorům pracujícím v normě PAL.
3. Generování pozadí (background)
Pozadí (background) není v případě herní konzole SNES uloženo v paměti ve formě normálního framebufferu, tj. jako bitmapa s určitým počtem bitů na jeden pixel. Namísto toho se používají podobné datové struktury, s nimiž jsme se již v tomto seriálu několikrát setkali – pozadí je totiž složeno z takzvaných dlaždic (tiles) a ty jsou dále složeny ze znaků (characters). Základní datovou strukturou určující, co se má na pozadí zobrazit, je dvourozměrné pole o rozměrech 32×32, 64×32, 32×64 či 64×64 dlaždic. Pro každou dlaždici jsou v tomto poli vyhrazeny dva bajty, v nichž jsou zakódovány následující informace:
Index | Struktura | Počet bitů | Význam |
---|---|---|---|
15 | V | 1 | povoluje/zakazuje vertikální zrcadlení dlaždice |
14 | H | 1 | povoluje/zakazuje horizontální zrcadlení |
13 | O | 1 | priorita pozadí (oproti spritům a dalším pozadím) |
10 | P | 3 | index barvové palety (0–7) |
0 | C | 10 | index znaku, z nichž se dlaždice skládá (jedná se vždy o čtyři znaky za sebou) |
Každá dlaždice může mít rozlišení 8×8 či 16×16 pixelů, což znamená, že horizontální či vertikální rozměry pozadí mohou nabývat hodnot: 32×8=256 pixelů, 64×8=32×16=512 pixelů či 64×16=1024 pixelů. Tyto rozměry jsou v obou směrech větší, než horizontální i vertikální rozlišení obrazovky, což však nevadí, protože pozadí může (nezávisle na ostatních pozadích) scrollovat.
Obrázek 5: Vytvoření paralelně scrollujícího pozadí ze dvou bitmap, které musí být rozloženy na dlaždice.
4. Zobrazování spritů
Kromě pozadí může být grafická informace zobrazená na televizoru ještě doplněna o sprity, tj. objekty s měnitelnou pozicí (vůči pozadí) a taktéž měnitelnou prioritou, která určuje, jak se jednotlivé sprity a pozadí budou překrývat. V případě herní konzole SNES je možné vykreslit až 128 na sobě nezávislých spritů, ovšem s tím omezením, že na jednom řádku může být zobrazeno pouze 32 spritů. Každý sprite může mít až patnáct barev, přičemž nultý index barvy je vyhrazen pro průhledné pixely – oblasti spritů, přes něž je vidět na pozadí a/nebo sprity s nižší prioritou.
Obrázek 6: Sprity získané z paměťového modulu hry Final Fantasy IV (dvakrát zvětšeno).
Pro všech 128 spritů je v grafické paměti (64kB celkem) vyhrazena oblast o velikosti 544 bajtů, která je rozdělená na dvě části: tabulku o velikosti 512 bajtů a pomocnou tabulku o velikosti 32 bajtů. V první tabulce jsou pro každý sprite vyhrazeny čtyři bajty s následujícím významem:
Bajt číslo | Struktura | Význam |
---|---|---|
1 | xxxxxxxx | Horizontální pozice spritu |
2 | yyyyyyyy | Vertikální pozice spritu |
3 | cccccccc | Index prvního znaku, z něhož je sprite složen |
4 | vhoopppc | Vertikální/horizontální zrcadlení, priorita, barvová paleta, 9.bit znaku |
Ve druhé tabulce o velikosti 32 bajtů jsou pro každý sprite vyhrazeny pouze dva bity, v nichž je uložen nejvyšší bit x-ové a y-ové pozice spritu. V každém bajtu této tabulky jsou tedy uložena data pro čtyři sousedící sprity.
Obrázek 7: Další série spritů získaných z paměťového modulu hry Final Fantasy IV (dvakrát zvětšeno).
5. Alternativní podpůrné čipy dostupné pro herní konzoli SNES
Mezi jednu ze zajímavých vlastností herní konzole SNES, o níž jsme se prozatím nezmínili, patří i možnost přidat na zásuvný modul se hrou další podpůrné integrované obvody. To znamená, že tento modul (cartridge) nemusel obsahovat pouze čip (E)PROM s binárním kódem a daty hry, ale k vybraným herním titulům bylo navíc možné dodat další čip určený pro generování zvuků či podpůrné čipy pro grafický subsystém. Vzhledem k relativně dlouhé době morální životnosti herní konzole SNES se její výrobce dostal do situace, kdy uživatelé začali vyžadovat hry s kvalitnější 3D grafikou, kterou již nebylo možné vykreslit programově, zvláště když vezmeme v potaz spíše průměrný výpočetní výkon mikroprocesoru 65c816 v porovnání s konkurenčními čipy. Jen pro porovnání: na přelomu osmdesátých a devadesátých let minulého století již byly k dispozici výkonné mikroprocesory Motorola 68040 a Intel 80486DX pracující na vyšších frekvencích, než byla frekvence 3,58 MHz v případě 65c816/Ricoh 5A22 ve SNESu (80486DX mělo frekvence 20, 25, 33 a posléze dokonce 50 MHz, Motorola 68040 pak frekvence 25, 33 a později též 40 MHz).
Obrázek 8: Díky existenci výkonných čipů 80386, 80486DX a Motorola 68030/68040 již bylo možné vytvářet hry, v nichž se vykreslovala prostorová scéna programově. Na tomto screenshotu pravděpodobně většina čtenářů pozná slavný Doom, který bylo možné provozovat i na počítači s mikroprocesorem AMD 80386 40MHz (v některých případech se však vykreslování na takto výkonném počítači zpomalilo, například v závěrečné úrovni hry Doom 2).
Pro herní konzoli SNES bylo navrženo popř. upraveno větší množství alternativních podpůrných čipů. Asi nejznámější je čip nazvaný Nintendo Super FX (též MARIO), který akceleroval vykreslování 2D a 3D grafiky. Popisem tohoto zajímavého integrovaného obvodu se budeme zabývat v následující kapitole. Ovšem kromě čipu Nintendo Super FX se na modulech s některými hrami nacházely i další integrované obvody. Jedná se například o SA-1 neboli Super Accelerator 1, což je ve skutečnosti mikroprocesor 65c816, ovšem taktovaný na 10 MHz, tj. zhruba třikrát rychleji, než hlavní mikroprocesor herní konzole SNES. Tento mikroprocesor byl doplněný dalšími moduly s programovatelnými časovači, podporou přímého přístupu do paměti (DMA), bitmapovými operacemi atd. Dalším podpůrným obvodem byl čip S-DD1, jenž podporoval práci s komprimovanými daty (data bylo nutné komprimovat kvůli omezené kapacitě cartridge). Vykreslování 3D grafiky bylo podporováno i čipem nazvaným Cx4, jenž obsahoval moduly pro matematické operace (včetně rotací). Zapomenout nesmíme ani na čipy DSP a DSP-2, které bylo možné použít pro implementaci bitmapových operací, konverzí, výpočtů s vektory dat atd.
Obrázek 9: Dungeon Master ve verzi pro SNES obsahoval čip DSP.
6. Čip MARIO aneb Nintendo Super FX
Jedním z nejznámějších podpůrných integrovaných obvodů, které vznikly pro herní konzoli SNES je čip Nintendo Super FX, který byl původně vyvíjen pod názvem MARIO (což byla poměrně násilně vytvořená zkratka ze sousloví „Mathematical, Argonaut, Rotation and I/O“). Tento čip vznikl společně s vývojem hry StarFox, jejíž herní prostředí bylo z velké části založené na vykreslování prostorových modelů složených z polygonů. Z tohoto důvodu bylo jedním z hlavních úkolů čipu Nintendo Super FX právě vykreslování polygonů s konstantním stínováním (flat shading), ovšem o jejich správné umístění do 3D scény se musel postarat programátor, který musel vyřešit jejich správnou rotaci, změnit barvu polygonu v závislosti na osvětlení atd. (tyto operace dnes dokáže provádět přímo GPU na grafickém akcelerátoru). Ani další pokročilejší efekty, například průhlednost či efekt mlhy, nebyly přímo tímto čipem podporovány (dnes se naopak běžně používají).
Obrázek 10: Hra Super Mario Bros – the Lost Levels je typickou ukázkou 2D hry masivně používající sprity.
Odkazy na další informační zdroje o čipu Nintendo Super FX:
- MyMedia Games Network Retrospective – Nintendo Super FX chip
http://psp.mmgn.com/News/MyMedia-Games-Network-Retrospe-G6W - Wikipedia: Super FX
http://en.wikipedia.org/wiki/Super_FX
Obrázek 11: Hra Super Mario World 2: Yoshi's Island využívající možností čipu Nintendo Super FX.
7. Podpora pro akceleraci vykreslování prostorových (3D) objektů čipem Super FX
Čip Super FX byl založen na mikroprocesoru s architekturou RISC, jenž byl taktovaný hodinovým signálem o frekvenci 21 MHz. Ovšem v první verzi tohoto čipu byla hodinová frekvence interně dělena dvěma na 10,5 MHz, a teprve druhá verze Super FX II dokázala pracovat na plné frekvenci 21 MHz. Interně se jednalo o 16bitový procesor obsahující šestnáct pracovních registrů. Data bylo možné přenášet do paměti RAM rychlostí až 1MB za sekundu, což společně s hodinovou frekvencí 10,5/21 MHz omezovalo celkový počet a velikost vykreslovaných polygonů na několik set až jednotky tisíc. To sice může z dnešního pohledu vypadat jako směšná vykreslovací rychlost, ale na začátku devadesátých let to bylo s ohledem na rozlišení obrazovky dostačující. Celá dvourozměrná či prostorová scéna se vykreslovala do framebufferu vytvořeného v paměti RAM umístěné vedle čipu Super FX. Aby se však scéna skutečně zobrazila, musel se obsah framebufferu přenést s využitím přímého přístupu do paměti (DMA) do video paměti konzole. Toto řešení sice nevypadá příliš elegantně, ale bylo funkční a nevyžadovalo změny v interním zapojení SNESu.
Obrázek 12: Hra Super Mario World 2: Yoshi's Island využívající možností čipu Nintendo Super FX.
8. Podpora pro akceleraci vykreslování 2D spritů čipem Super FX
Ve hře StarFox se s využitím 3D polygonů zobrazovaly například kosmické lodi, ovšem značná část menších předmětů byla zobrazována ve formě 2D spritů s proměnnou velikostí (docházelo ke zmenšování a/nebo zvětšování bitmapy se vzdáleností od pozorovatele a tím pádem i k simulaci perspektivy), což byla další funkce, kterou čip Nintendo Super FX podporoval. Na této funkci vlastně není nic překvapivého, když si uvědomíme, že velká část 3D her, zejména FPS (her viděných z pohledu hráče) původně kombinovala 3D prostředí s 2D sprity. Příkladem může být světoznámá hra Wolfenstein 3D či neméně známá hra Doom, kde se jak 3D scéna, tak i 2D sprity vykreslovaly programově. Možnost podpory práce s 2D sprity, kterou čip Nintendo Super FX programátorům nabízel, byla využita například v čistě dvourozměrné hře Super Mario World 2: Yoshi's Island, kde se Super FX staral o vykreslování spritů, závěrečných bossů (jejichž obrazy překračovaly běžnou velikost spritů) i pro podporu paralaxního scrollingu, tj. pro vytvoření pozadí z několika bitmap zobrazených přes sebe (s využitím průhledné barvy), přičemž každá bitmapa se pohybovala jinou rychlostí.
Obrázek 13: Wolfenstein 3D ve verzi pro počítače PC. Zatímco herní prostředí bylo tvořeno otexturovanými polygony, všechny předměty ve hře i všichni protivníci byli vykreslováni formou prostých 2D spritů, u nichž se pouze měnila jejich velikost v závislosti na vzdálenosti od pozorovatele.
Čip Nintendo Super FX byl použit v několika hrách, zejména v již zmíněném herním titulu StarFox a dále pak ve hrách Stunt Race FX (v Japonsku prodáván pod jménem Wild Trax), ve hře Vortex a upravený čip Super FX 2 byl později dokonce použit pro portaci slavné hry Doom na konzoli SNES, i když zde musela být plocha obrazovky vyhrazená pro 3D pohled oproti PC verzi poněkud zmenšena – zde zvítězila hrubá výpočetní síla mikroprocesorů 80386 a 80486 nad sofistikovanějším řešením použitým v případě SNESu. Nicméně ani s nástupem další generace herních konzolí vybavených již skutečnými 3D akcelerátory nebyla technologie použitá v Super FX ztracena, protože základ tohoto čipu posloužil pro návrh uživatelsky modifikovatelných (zákaznických) mikroprocesorů s architekturou RISC, které byly určeny především pro vestavné systémy (zde má možnost konfigurace schopností mikroprocesoru uživatelem poměrně velký smysl s ohledem na celkovou cenu čipu, jeho energetické nároky atd.).
Obrázek 14: Sloupy, lustry, květina na pozadí, protivníci, střílející zbraň hlavního hrdiny – to vše je zde vykresleno formou 2D spritů.
9. Odkazy na Internetu
- Super NES Programming/Initialization Tutorial
http://en.wikibooks.org/wiki/Super_NES_Programming/Initialization_Tutorial - SNES Development sites
http://www.snescentral.com/development.php - Super NES Programming
http://en.wikibooks.org/wiki/Super_NES_Programming - Super Nintendo Development Wiki
http://wiki.superfamicom.org/snes/show/HomePage - 6502.org
http://www.6502.org/ - The 6502/65C02/65C816 Instruction Set Decoded
http://www.llx.com/~nparker/a2/opcodes.html - 6502 Addressing Modes
http://www.obelisk.demon.co.uk/6502/addressing.html - HuC6280 CPU
http://shu.emuunlim.com/download/pcedocs/pce_cpu.html - Hudson Soft HuC6280 (Wikipedia)
http://en.wikipedia.org/wiki/Hudson_Soft_HuC6280 - William D. Mensch jr.
http://www.computerhalloffame.org/index.php?option=com_content&view=article&id=31&Itemid=4 - Bill Mensch
http://en.wikipedia.org/wiki/Bill_Mensch - SPC 700 Documentation
http://emureview.ztnet.com/developerscorner/SoundCPU/spc.htm - Super NES Programming/SPC700 reference
http://en.wikibooks.org/wiki/Super_NES_Programming/SPC700_reference - Mega Lo Mania
http://www.mobygames.com/game/mega-lo-mania - Mega Lo Mania
http://en.wikipedia.org/wiki/Mega_Lo_Mania - Cannon Fodder
http://www.allgame.com/game.php?id=739 - Cannon Fodder [European]
http://www.allgame.com/game.php?id=15717 - Retrospective: Cannon Fodder
http://www.rockpapershotgun.com/2007/11/11/retrospective-cannon-fodder/ - Cannon Fodder
http://en.wikipedia.org/wiki/Cannon_Fodder_(video_game) - BC Racers
http://en.wikipedia.org/wiki/BC_Racers - Desert Strike Advance
http://www.ign.com/articles/2002/06/03/desert-strike-advance - Three Strikes And You're Out
http://www.eurogamer.net/articles/three-strikes-and-youre-out-article - Head 2 Head: Desert Strike – SNES vs MegaDrive
http://www.retrogamescollector.com/head-2-head-desert-strike-snes-vs-megadrive/ - Desert Strike: Return to the Gulf
http://en.wikipedia.org/wiki/Desert_Strike:_Return_to_the_Gulf - The Chaos Engine (Soldiers of Fortune USA)
http://www.bitmap-brothers.co.uk/our-games/past/chaos-engine.htm - The Chaos Engine series
http://www.mobygames.com/game-group/chaos-engine-series - The Chaos Engine
http://en.wikipedia.org/wiki/Chaos_Engine - The Chaos Engine 2
http://www.bitmap-brothers.co.uk/our-games/past/chaos-engine2.htm - The Chaos Engine series
http://www.mobygames.com/game-group/chaos-engine-series - Moby Games: Speedball series
http://www.mobygames.com/game-group/speedball-series - Bitmap Brothers: Speedball (original)
http://www.bitmap-brothers.co.uk/our-games/past/speedball.htm - Bitmap Brothers: Speedball 2: Brutal Deluxe
http://www.bitmap-brothers.co.uk/our-games/past/speedball2.htm - Wikipedia: Speedball (video game)
http://en.wikipedia.org/wiki/Speedball_(video_game) - Golden Axe
http://strategywiki.org/wiki/Golden_Axe - Golden Axe (series)
http://en.wikipedia.org/wiki/Golden_Axe_(series) - Golden Axe II
http://www.gamespot.com/golden-axe-ii/platform/genesis/ - Golden Axe II
http://strategywiki.org/wiki/Golden_Axe_II - Golden Axe III
http://strategywiki.org/wiki/Golden_Axe_III - Game Freaks 365: Sonic the Hedgehog 2
http://gamefreaks365.com/review.php?artid=1631 - Sonic The Hedgehog 2 (GENESIS)
http://web.archive.org/web/20070831062914/http://sonic.neoseeker.com/sonic_the_hedgehog2/GENESIS/pages/release_dates_background3/ - Neoseeker: Sonic the Hedgehog 2 (16-bit)
http://www.neoseeker.com/Games/Products/GENESIS/sonic_the_hedgehog2/ - Wikipedia: Sonic the Hedgehog 2 (16-bit)
http://en.wikipedia.org/wiki/Sonic_the_Hedgehog2_(16-bit) - Gamespot: Disney's Aladdin
http://www.gamespot.com/disneys-aladdin-in-nasiras-revenge/platform/ps/ - Moby Games: Disney's Aladdin
http://www.mobygames.com/game/disneys-aladdin - Internet Movie Database: Aladdin (I) (Video Game 1993)
http://www.imdb.com/title/tt0204798/ - Wikipedia: Disney's Aladdin (video game)
http://en.wikipedia.org/wiki/Disney's_Aladdin_(video_game) - Eric Chahi
http://en.wikipedia.org/wiki/Eric_Chahi - Wikipedia: Another World (video game)
http://en.wikipedia.org/wiki/Another_World_(video_game) - 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 Genesis
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