22/05/21

Mega Drive! Really?

 V 90. letech, jsa odkojen na hracích automatech, jsem bezostyšně obdivoval tento 16-bitový zázrak od Segy, který se prodával za pro mě nedostižné peníze všude možně po elektrech a hračkářstvích. Na vstupních dveřích obchodu se zdviženým ukazovákem významně pomrkávající Sonic lákající hráče vstoupit. Pestrými barvami hýřící mnohavrstvá 60 fps akce, o jaké se mému ZX Spectru byť i C-64 sotva jen zdálo. Segu Mega Drive jsem si pořídil až v novém tisíciletí z bazaru. A musím přiznat, po dlouhých letech do dnešních dní postupně vystřízlivěl.

Začněme ale od začátku. Mega Drive je tak nějak ušit na konkrétní typ videoher. Zvládá je víceméně průměrně až na výbornou, jak co. Jeho hlavní procesor se v tomto modelovém případu víceméně fláká, grafická karta se potí. V pořádku? No, ani ne. Po letech jsem dospěl k názoru, že systém na hry má být navržen co nejefektivněji a zároveň co nejflexibilněji. To Mega Drive určitě není. Má v hardwaru natvrdo zadrátován jeden model videohry. Jeho čipy tedy disponují výkonem, který ale není všeobecně využitelný – špatně. Dvě dvojrozměrné vrstvy a sprajty. Vše složeno ze znaků – z textového módu chcete-li. Pokud tedy chcete programovat cokoliv, co se jakkoliv začne vymykat zmíněnému scénáři, nastává problém. To se týká především trojrozměrných her, které vyžadují namísto znaků jednotlivé pixely, tedy bitmapu.

Ovšem i u dvojrozměrných her se ptám: co když budu chtít namísto druhé vrsty zobrazit více sprajtů? Co když budu chtít vykreslit jednotlivé pixely namísto celých znaků?


Předně si uvedeme výčet kladných stránek této konzole:

    • dedikovaný grafický procesor – CPU nemusí generovat grafiku a zůstává volné pro jiné výpočty

    • 2 nezávislá skrolující pozadí a k tomu sprajty – poměrně silný základ pro pokročilejší 2D hry

    • CPU může přistupovat do video paměti, i když omezeně – např. Neo Geo neumožňuje CPU vůbec přístup a tím pomocí něj není možné generovat např. 3D grafiku


A nyní nedobré stránky konzole:

    • příliš mnoho komponent a k tomu ne ideálně zapojených – vše kvůli nepotřebné zpětné kompatibilitě s Master System

    • pouze 320/256 pixelů na řádek pro sprajty – při zaplnění této kapacity dochází k viditelným výpadkům vykreslování sprajtů – problém zejména u bojových her s velkými postavami a intenzivních stříleček – problém korektně portovat např. hry z CPS či Neo Geo, ale i Sega16!

    • omezená propustnost do video paměti – Virtua Racing jede kvůli tomu jen na 15 fps, přestože 3D koprocesor v kazetě zvládne mnohem více

    • omezené použití barevné palety na 15 barev po 4 podpaletách

    • neoptimální zapojení Z80 ve vztahu k hardwarovému přerušení hlavního CPU – nemožnost napsat kód Z80 pro 100% korektní softwarové přehrávání digitalizovaného zvuku

    • absence dedikovaného ADPCM čipu pro přehrávání digitalizovaného zvuku – souvisí s výše uvedeným bodem


Jak vidíte, je co zlepšovat. Především si myslím, že Sega udělala jednu zásadní chybu. Mega Drive neměl být zpětně kompatibilní s Master System. Nebyl k tomu objektivní důvod, protože MS neměl významnou penetraci na trhu. Než osazovat systém dalším procesorem Z80 a integrovat zvukové SN, bylo vhodnější investovat do ADPCM čipu. Mega Drive má totiž velké problémy s přehráváním digitalizovaných zvuků, a to z důvodu, že pro jejich přehrávání je nutno napsat kód, který ale vyžaduje velký procesorový čas. Jenomže sekundární Z80 není synchronizována žádným přerušením s chodem hlavního CPU a je tudíž vlastně nemožné korektně načasovat digitální přehrávání. Navíc pokud Z80 přistupuje k digitalizovaným zvukům v ROM, významně omezuje hlavnímu CPU přístup do video paměti. Samozřejmě tyto operace můžete provádět hlavním CPU – 68000, oberete se ale o část jeho strojového času a hlavně: na co je tam potom Z80? Zkrátka totálně nedoladěné, nepromyšlené zapojení. Sega měla zkrátka použít pouze jedno CPU (Motorolu 68000) a jeden zvukový čip (vhodnou verzi Yamahy s integrovaným ADPCM, anebo stávající 2612 a dedikované ADPCM jako např. OKI MSM6295). Jako praktickou demonstraci zprzněného návrhu přehrávání digitalizovaného audia budiž ukázka ze hry Street Fighter II a následně její nadšenecký "patch" z doby nedávno minulé. Jen podotýkám, že samply v ROM jsou 100% kvalitní a przněné jsou až samotnou konzolí při běhu hry…



 

Dalším omezením je limit 320 nebo 256 pixelů na řádek pro sprajty. 320 platí pro video mód 320x224, 256 pro 256x224. Je mi jasné, že je to dáno limity propustnosti použitých pamětí a rychlostí grafického čipu. Tento totiž dopředu obrazový řádek po řádku vyhledává a načítá z video paměti grafická data pro sprajty a míchá je s pozadími – Mega Drive nemá obrazovku uloženou ve formě bitmapy – frame buffer kvůli malé kapacitě video RAM vzhledem ke komplexnosti obrazu. Nicméně určitě stálo za to se nad tím zamyslet vícekrát a pokud možno zvýšit tento strop alespoň na hodnotu 500 pixelů pro 320x224. Vždyť už v roce 1989 vypustil NEC své SupergrafX, které právě hodnotou 500 pixelů na řádek oplývá! Já bych osobně hledal i zvýšení tohoto limitu v možnosti vypustit generování druhé skrolovací roviny a ušetřený čas a propustnost přemístnil do zvýšení limitu pro sprajty – např. by to mohlo být volitelné programem…

Problémy s tímto tzv. přetečením sprajtů (sprite overflow) jsou vidět typicky v bojových hrách s velkými postavami, např. Final Fight pro Sega CD převedeném z Capcom CPS. Často vidíte, jak mizejí celé řádky uprostřed bojovníků jako by je někdo rozpůlil pilkou. Patrné je to taky u intenzivních stříleček jako je Raiden Trad nebo Truxton při upgradu zbraní. Nebo např. Vectorman, který v mnoha úrovních používá sprajty jako další pozadí, ale často toto pozadí při větším počtu objektů částečně mizí.

Pro útěchu Mega Drivu těmito neduhy trpí i TurbografX a SNES. SNES má sice o něco větší limit, než je šířka obrazu (272 na 256x224), ale zato nemá tak flexibilní možnost velikostí sprajtů a k výpadkům renderování v praxi ve hrách zde dochází ještě častěji. Ono totiž pro všechny tyto konzole platí, že do limitu se započítávají i „vypnuté“ pixely, které jsou vždy součástí sprajtů, pokud nechceme zobrazovat jen celé čtvercové bloky o minimální velikosti 8x8 pixelů.

Na závěr dodávám, že je mi jasné, že Sega chtěla zajistit lehkou portovatelnost ze svých automatů, zejména Sega16A (Shinobi, Golden Axe…). Nicméně šetřit a redukovat se mělo na těch nejsprávnějších místech a architektura měla zůstat 100% vybalancovaná a nabízet co největší flexibilitu v renderování. To se tak nějak na 100% určitě nepodařilo.

No comments:

Post a Comment