Amikor adatlapot írok mindig megnézem és leírom, hogy milyen grafikus üzemmódot támogat az adott gép. Azt sajnos nehéz egy táblázatban átadni, hogy a 16 színt milyen megkötésekkel lehet használni. Most sem tudom leírni az összes megoldást amit kitaláltak a hardvereket tervező mérnökök, de megpróbálom ami tőlem telik és legalább pár ismertebbet bemutatok. Ha valahol hibáznék, akkor szóljatok, hogy ki tudjam javítani. A módok nagyjából fejlődési sorrendben követik egymást. Természetesen több is létezett egyszerre, sőt ugyanaz a számítógép többet is támogathatott.
Karakter alapú grafika
A legegyszerűbb gépeknél nem volt igazi grafikus, csak karakteres megjelenítés. Az okos mérnökök több megoldást is kitaláltak, hogy egyszerű grafikát meg lehessen jeleníteni. Ez jól jött nem csak az egyszerű játékokhoz, de mondjuk egy táblázatkezelőhöz (Visicalc) vagy a PC-n népszerű Norton Commanderhez is. Nézzünk 3 példát az egyszerűtől a kifinomultig:
A Commodore PET-nél a karakterkészlet előre definiált. Leonard Tramiel segítségével a ROM-ba került karakterkészletet, amit PETCSII-nek is hívnak, úgy állították össze, hogy több ábra is szerepeljen benne. Többek között a francia kártya jelei is.
bitmap grafika
Bitmap grafikánál már minden képpontot külön lehet címezni. Ez nagyon egyszerűen hangzik mégis több megoldás is született rá. Ennek az oka ár, a RAM méret és sebesség korlát volt, de itt is többet mond el pár példa.
A Primo csak grafikus megjelenítést tud. Ötletes módon szöveges módban a karakterek „képét” másolja a grafikus memóriába. 256×192-as felbontást tud alapból és egy bit egy képpontnak felelt meg. Ezért aztán színeket vagy szürke árnyalatokat nem ismer. PC vonalon a Hercules kártyák rendelkeztek hasonló üzemmóddal, persze nagyobb felbontással.
A Commodore 64 320×200-as felbontást tud megjeleníteni 16 szín mellett. Ez jól hangzik, de nehhez elvileg 320x200x4=256000 bitre, vagyis 32kbájt memóriára van szükségünk, ami a C64 memóriájának rögtön a felét jelentené. A 80-as években drága volt a memória, ezért spórolni kellett vele, ráadásul a grafika mozgatásához kevés lett volna a gép teljesítménye. Két trükköt is bevetettek, hogy kevesebb memória is elég legyen:
- A sprite-ok önálló kis grafikák, amelyek egymástól függetlenül programozhatóak. A C64 videó áramköre (VIC II) 8 darabot kezel és képes érzékelni, ha ezek egymással vagy a háttérrel ütköznek. Gyakorlatilag a VIC ezeket a kis figurákat képes függetlenül mozgatni a háttértől és egymástól is.
- Szín attribútumokat használ a te
ljesen független 16 színű képernyő helyett. Ez azt jelenti, hogy a 320×200-as felbontású kép monokróm, ezért csak 8000 báj méretű. A képernyőt 8×8-as blokkokra osztják és a blokkokhoz tartozó fekete és fehér helyett a megjelenítendő színeket egy 1kbyt méretű szín RAM tárolta. A spórolás azt is jelenteti, hogy a blokkok mérete limitálja a grafikát. A blokkok határainál a színek összefolyhatnak, ez az attribute clash. A kép egy MSX-1-ről jön, de a C64 vagy Spektrum is hasonlót produkál.
A C64 ennél persze többet tud, de nagyjából az eddig leírtakon alapulta többi 8 bites gép. A Spektrum és a CPC nem kezel sprite-okat, de színattribútumokat használ. A TI-99 és az Atari 800 már mind a kettőt használta. Mondhatni variációk egy témára: kevés memória, limitált teljesítmény.
A VGA kártyák 13h módjában minden pixelhez 1 bájt tartozik, ami egyszerre 256 színt jelent. Ehhez 320×200-as felbontásnál majdnem 64kB-ra van szükség. Programozni egyszerű, de teljes képernyős animációnál ez elég sok adat mozgatását jelenti, amit nem gyorsítanak az alap ISA-s kártyák. Ezért volt az, hogy egy 66 MHz-es 486 DX2 hiába számított erőműnek 1993 végén, de egy átlag ISA-s kártyával mégsem tudta megfutni a stabil 30 fps-t Doom alatt. A VGA érdekessége, hogy a többi üzemmódja bitplanar és a kompatibilitás miatt sima text-et is támogat.
Összefoglalás
Sok mindenre nem tértem ki. Nem volt szó az Amiga HAM módjáról, vagy a 8 biteseknél a további funkciókra. Mindegyik megérne több oldalt, de most csak pár linket osztok még meg veletek. A képek egy részét is innen, pontosabban a hozzá kapcsolódó wikimedia oldalról vettem át:
Views: 650