Hlavní navigace

Vlákno názorů k článku Standardní grafické režimy karty VGA od Ondřej Novák - Při testování hry Brány Skeldalu na různých sestavách...

  • 6. 8. 2024 19:32

    Ondřej Novák

    Při testování hry Brány Skeldalu na různých sestavách jsem narazil na PC, které nemělo SVGA vůbec. Prostě normální VGA. A tak jsem si v rámci "vlastní zábavy" zkusil napsat "ovladač" ve hře pro 640x480x16 v odstínech šedi. Hra totiž běžela v 640x480xhicolor, vyžadovala tedy SVGA a existovala i transformace do 256 barev tam, kde nebyl hicolor. Ale transformace na 16 barev?

    Přesně jak se píše v článku, 16-barevná paleta má dvojí transformaci. Obraz se do výhledu maloval po rovinách, a překvapolo mě, jak to bylo pomalé a to nezávisle na typu karty (i na tehdy moderních SVGA). a rychlosti CPU. Bitblt jedné roviny, přepnutí roviny bitblt druhé roviny, přepnutí roviny, atd.... Přesto byly artefakty přepínaní dost vidět. VYpadalo to, jako když se překresluje e-ink display v dnešní době.

    K tomu vznikla ještě varianta s X-mode 320x480x256. Tam se dvojice pixelů vedle sebe sloučily do jednoho a podle tabulky se vybral index pixelu odpovídající barvě v palety. Přenášelo se opět po rovinách, a i tady byly vidět artefakty, tentokrát jako když se otáčí vertikální roleta. Ani tady to nebylo rychlé.

    Jen na okraj, DOOM používal 320x200 ale jako x-mode. Nezasahoval do časování, ale změnil chování bitových rovin. Využívalo se toho, že se malují sloupce, před každým sloupcem se nastavila aktivní bitová rovina a nakreslil se sloupec. DOOM používal double/triple buffering a právě kvůli nutnosti obsadit celou paměť VGA používal tento režim. V režimu lowres se malovaly dvojice bodů, díky tomu, že VGA umí zápis do dvou rovin současně, ale horizontální rozlišení bylo poloviční.

  • 6. 8. 2024 20:42

    Pavel Tišnovský
    Zlatý podporovatel

    jj 640x480 je pomaly a hlavne nema ani double buffering. Proto je docela dost her, ktere prepinaly do 640x400 (to neni standard, ale ma stejne casovani jako textovy rezim, az na pomalejsi pixel clock) a tam je mozne double buffering pouzit, protoze pro 64kB bitplanu je k dispozici nejakych 819 radku. Navic 640x400 melo koukatelnejsi frekvenci 70 Hz, ale zase "natazene" pixely.

  • 6. 8. 2024 21:34

    RRŠ

    Přiznám, že mne tady ten assembler baví. Hlavně proto, že já si tyhle cestu prošlapával v Pascalu, a spoustu věcí prostě vyignoroval - počínaje snahou o co nejrychlejší kód.
    Šel jsem cestou, kterou se neodvážím nazvat double buffering: v paměti jsem si připravil příslušné bitplány a ty, řádek po řádku, kopíroval do videopaměti.
    Mělo to tři výhody:
    - při přípravě jsem se nemusel zabývat přepínáním rovin,
    - při kopírování jsem přepínal jen na začátku řádku (každého bitplane),
    - mohl jsem snadno pracovat s okny menšími, než byla celá obrazovka.