Metoda přístupu k videu MSX - MSX Video access method

Tyto ColecoVision , SG-1000 , CreatiVision a první generace MSX počítače použít TMS9918A Video Display procesor (VDP), který má svůj vlastní 16 KiB grafické paměti , který nebyl sdílené s hlavní pamětí. Ve srovnání se sjednoceným systémem a grafickou pamětí používanou jinými 8bitovými počítači té doby, jako jsou Apple II , ZX Spectrum a Commodore 64 , má samostatná paměť tu výhodu, že uvolňuje 64 KiB adresní prostor procesoru Z80 pro hlavní RAM a VDP nemusí pro přístup k video paměti kradit cykly CPU . Nevýhodou je, že program musí používat vyhrazené I / O instrukce CPU k ovládání VDP k manipulaci s obsahem video RAM. To nejen zpomaluje přístup k videu, ale také ztěžuje portování her z platforem sjednocené paměti. Pokusy o přenesení her ZX Spectrum (ve Velké Británii, systém nejvíce podobný MSX) byly často zmařeny tímto rozdílem. Programátoři se také museli naučit optimálně využívat pokročilejší schopnosti VDP.

Metoda přístupu k videopaměti TMS9918A je pomalejší než přímý přístup, jak se používá v počítačích s unifikovanou pamětí, protože přístup k videopaměti zahrnoval nejprve výstup nízkého - poté hi-bajtu (14bitové) adresy videopaměti na I / O port 99 $, pak jeden nebo více bajtů 8bitových dat na port 98 $. Po každém zápisu ukazatel paměti přejde na další adresu, takže na po sobě jdoucí adresy lze zapisovat s opakovanými instrukcemi OUT na $ 98. Z80 měla stejně rychlé instrukce bloku OTIR / OTDR, které mohly být použity místo LDIR / LDDR, přesto byla povolena rychlost přístupu VRAM, pokud nebylo během vertikálního zatemnění.

Kvůli rozvržení obrazovky (které bylo shora dolů pro každý znak 8 řádků a poté postupovalo k dalšímu znaku) to však bylo obtížné použít pro programátory, kteří se pokoušeli převést stávající software původně napsaný pro systém, který měl jiné uspořádání rozložení obrazovky. Takže při pokusu o použití videopaměti v režimu vysokého rozlišení TMS9918A konvenčním způsobem může být tato metoda nepřímého přístupu mnohem pomalejší než v 8bitových počítačích s jednotnou pamětí, jako každá jiná část paměti RAM. V důsledku toho by stroje využívající tento VDP mohly být neúčinné při určitých grafických úkolech, jako jsou rolovací hry, které vyžadovaly přesun celé paměti na pozadí. Místo toho, aby mohli používat efektivní a rychlé pokyny pro přesun bloků Z80, museli psát propracované rutiny, které nejprve četly bajty z videopaměti do systémové paměti a poté zpět na jiné místo ve videopaměti, všechny po jednom bajtu.

Aby programátoři zvýšili rychlost na přijatelnou úroveň, často omezili posouvání na kroky 8 pixelů, což vypadalo primitivně ve srovnání s kroky posouvání 1 nebo 2 pixely dostupnými pro stroje ZX Spectrum nebo Commodore 64 (ačkoli Commodore 64 také používal 8-pixelové kroky měl registr s jemným posouváním, který to mohl kompenzovat, MSX-1 ne).

TMS9918A měl k vyrovnání tohoto nedostatku několik funkcí, například programovatelnou znakovou sadu, která umožňovala nepřímý chod ((což výrazně zvýšilo posouvání, protože místo dat v pixelech bylo nutné přesunout pouze tabulku znaků) a 32 hardwarových skřítků . Tito skřítci však byli omezenější než ti v (například) v 8bitových systémech Atari. Protože ve svém nejvyšším rozlišení byly pouze 16x16 pixelů v jedné barvě (s průhledností). Větší nevýhodou však bylo, že ve skutečnosti mohly být současně zobrazeny pouze segmenty řádků skenování od maximálně 4 spritů na libovolné řádce skenování obrázku. Pokus o umístění segmentu řádků skenování 5. skřítků na stejnou linii skenování jako čtyři ostatní by vedl k blikání nebo chybějícím segmentům řádků skenování. Přesto by bylo možné tímto způsobem vytvořit vícebarevné skřítky, jak dokazuje mnoho japonských her. ZX Spectrum nemělo přízraky, ale při přenášení her bylo často příliš velké potíže přepsat herní strukturu, aby se výhody přízraků využily. Takže při přenosu her byly jednoduše ignorovány.

Byly k dispozici triky, jak obejít posouvání a další problémy spojené s rychlostí pomocí chytrých programovacích technik a schopností video čipů, které nebyly v ZX Spectrum k dispozici, například použití režimu bez dokladů, který podporoval více barev. Navíc pomocí vestavěných přeprogramovatelných písem bylo možné kombinovat grafiku s vysokým rozlišením s rychlejším posouváním a zároveň používat skřítky. Tuto metodu široce využívali japonští programátoři píšící nativní software, ale zřídka britští programátoři, kteří programovali software Spectrum.

Většina výše popsaných problémů s videem, zejména limity sprite a rolování, byla opravena u novějších video čipů MSX-2. V té době však na trhu začaly dominovat 16bitové systémy jako Amiga a Atari ST .

Reference