Hraní starých her pro DOS/Windows na CRT se 120 Hz

Omezené vycházení a zavřené podniky způsobily, že jsem se vrátil k hraní starých her. A protože staré hry vypadají nejlépe na CRT monitorech, jeden zapomenutý jsem rovnou vytáhl ze skříně. Jakkoli na CRT vypadají hry v nízkém rozlišení nesrovnatelně lépe než na LCD a mají skvělé barvy, pořád je tu ještě problém s blikáním. Tedy ne nutně…

crt-120hz_08

Být zavřený doma přináší nepříjemnosti i lidem, kteří mohou bez omezení pracovat z home office. Nejsem typ člověka, co by holdoval home office, a když to jde, tak se mu vyhýbám, i když jsem na něj dobře vybaven (chybí mi sociální kontakt a každý, kdo potřebuje poradit, pak akorát volá přes Skype/Teams, což je tak asi 10x horší, než když mi přijde ke stolu). Navíc teď vidím, kolik času bych normálně po večerech trávil cvičením, plaváním, saunou, nebo jakoukoli jinou aktivitou pro psychický odpočinek, což jde teď blbě.

Ale nedá se nic dělat, budeme ty následující měsíce muset všichni nějak zvládnout. Říkal jsem si, že bych si zahrál některé z her, které jsem v dětství z nějakého důvodu nedohrál, nebo jsem od nich měl pouze demo. Vytáhl jsem tedy svůj nedávno opravený (výměna všech kondenzátorů a upravené chlazení) kompaktní stolní počítač Compaq DeskPro SFF EN s 500MHz procesorem, 192 MB operační paměti a hlavně 3D akcelerátorem 3Dfx Voodoo3 2000, abych jej ještě doplnil o 17“ CRT z druhé poloviny 90. let a 4.1 reproduktory Cambridge Soundworks (oboje kdysi koupeno jako nové, jen to někdo za ty roky zapomněl vyhodit). Tímto způsobem jsem získal docela dobovou sestavu počítače z roku 1998-1999.

Onanie s obnovovací frekvencí

Schopnost rychlého překreslování v porovnání s běžným LCD je u CRT obrazovek fajn, ale přinášela s sebou tehdy i spoustu nepříjemností. V závislosti na dosvitu bylo nutné nastavit optimální obnovovací frekvencí obrazu, aby vám monitor do hlavy nevyblikal díru. CRT obrazovky postupně dostávaly kratší dosvit a možnost zobrazovat při stále vyšších obnovovacích frekvencích, což byl krok jednoznačně správným směrem.

Na druhé straně však stál software, a když ten nevěděl, kolik by měl nastavit, obvykle skončil na základních 60 Hz. Spousta lidí takto hrála hry poměrně běžně a třeba jim to ani nevadilo (ne každý je na blikání citlivý, případně si nespojí, že ho bolí hlava právě z blikání obrazovky). V DOSu bylo 60 Hz naprostým standardem pro všechna rozlišení s výjimkou 320×200, 640×200 a 640×400, kde bylo 70 Hz (vychází to z původního návrhu VGA). Pod Windows sice šlo nastavovat víc, ale bylo poměrně snadné, aby hra, která přepíná rozlišení, přepnula současně i obnovovací frekvenci na 60 Hz.

Už tehdy tento problém uměli řešit jen někteří a dnes mi přijde, že se snad tato znalost úplně vytratila. Popsal jsem níže, jak jsem jej vyřešil u sebe, tak to třeba bude užitečné pro ty, kteří mají také v plánu zabít nějaký čas hraním na starém počítači s CRT. Zvýšení frekvence z 60 Hz totiž nepřináší jenom méně blikající obraz, ale taky plynulejší hraní (tedy to, co se nám vrátilo u LCD až v posledních letech).

Já mám 17“ ADI MicroScan 5P+, což je takový levný ($300) monitor z roku 1998 pro méně náročné uživatele. I takový však nemá problém dát 640×480@120Hz a 800×600@100Hz. Dneska je možné sehnat za odvoz mnohem novější a schopnější CRT monitory.

DOS na grafikách s VBE 3.0

U her, které používají natvrdo režimy původní VGA (tedy hlavně 320×200 ve 256 barvách a 640×480 v 16 barvách), máte smůlu. Ty poběží vždy na 60/70 Hz a přistupují přímo k registrům grafiky. Jiné je to v případě SVGA rozlišení, pokud k jejich nastavení hra používá VESA BIOS grafické karty. Přes ten se sice standardně všechny rozlišení pouštějí maximálně v 60 Hz, ale existuje cesta, jak to změnit.

Aby to bylo možné, musí vaše grafická karta podporovat VBE 3.0 (VESA BIOS Extensions). U takové karty totiž BIOS podporuje vedle změny rozlišení i nastavení obnovovací frekvence. Má to však zádrhel, protože VBE 3.0 přišlo až relativně pozdě (jako standard až v 1998) a některým výrobců dlouho trvalo, než ho přestali ignorovat. Skvělou podporu mají grafické karty od 3Dfx (Voodoo Banshee, Voodoo3+) a NVIDIE (Riva/GeForce). ATI (dnes AMD) se dost bránilo, takže ještě první verze Radeonů mají pořád jen VBE 2.0. U Matroxu ani netuším, kdy podporu přidal do svých karet, ale G550 už by ji měl mít.

Pokud tedy máte kartu s VBE 3.0, je všechno jednodušší. Stačí si do počítače nahrát program UniRefresh a nastavit si pro každé rozlišení a barevnou hloubku vlastní obnovovací frekvenci. Po zavedení programu je chování karty pozměněno a platí až do restartu počítače, takže se nic neděje, když nastavíte nějaký nesmysl.

crt-120hz_01

crt-120hz_02

Na obrázku jsem například dělal nastavení, abych si mohl zahrát hru Blood (na enginu Duke Nukem 3D) v 640×400 při 120 Hz. Ta hra má veškerou podpůrnou grafiku (HUD, menu) designovanou na 320×200, takže volba 640×400 je logická, protože 3D prostor je 4x prokreslenější a podpůrná grafika je roztažena přesně 2×2 (tohle platí pro všechny podobné hry, které jsou primárně určené pro 320×200). Na starém CRT navíc hry v takovém rozlišení pořád vypadají velmi „hi-res“.

Pokud bych hru spustil v základním nastavení, pracovala by v 320×200 a změna rozlišení přes VBE 3.0 by nebyla možná. Bylo tedy nutné vlézt do nastavení hry a kromě rozlišení také zvolit, že hra použije VESA módy:

crt-120hz_03

crt-120hz_04

Hry používající 640×480 ve 256 barvách naštěstí celkem běžně zapínají rozlišení rovnou přes VESA, čímž odpadá speciální nastavování ve hře. Vedle Blooda si s vyšší obnovovací frekvencí zahrajete i další hry na Duke enginu, SimCity 2000, Little Big Adventure a další.

Poněkud smutné je, že naopak DOSovské hry pod 3Dfx Glide (tj. 3D akcelerované) zapínají fixně 60 Hz a nejde s tím nic udělat (nebo jsem na to aspoň s Voodoo3 nepřišel, ani po editaci systémových proměnných).

DOS na grafikách bez VBE 3.0

Není nic ztraceno, ani když grafická karta VBE 3.0 nepodporuje. Absenci lze vyřešit pomocí TSR programu SciTech UniVBE, který pro volání dalších programů přidává potřebná rozšíření VESA BIOSu.

Absence VBE 3.0 totiž ještě neznamená, že by grafická karta potřebné funkce neměla. Pouze je nezpřístupňuje tímto standardizovaným způsobem. Stačí tedy, aby UniVBE (nebo jiný podobný program) znal váš grafický čip a vytvořil k němu most.

UniVBE je skvělý nástroj pro staré karty od Matroxu a S3, protože ty byly svého času velmi dobře zdokumentované. VBE 3.0 lze pak dostat i do grafik jako S3 Trio64/Virge a Matrox Millennium. Zejména starých S3 je všude dost a na DOSovské hry jsou perfektní.

Problém je naopak s grafikami od ATI. Zkoušel jsem ATI Radeon 7000 a bez úspěchu (alespoň Rage Pro by mělo být podporované ve verzi 6.7). O něčem svědčí, že ani dnes se nedá sehnat programátorský manuál k těmto čipům, takže se nelze divit.

Jakmile máte grafiku podporovanou v UniVBE a program v DOSu zavedete, stačí pokračovat postupem, jako by vaše grafika měla VBE 3.0 od začátku (spustit UniRefresh, nastavit/spustit hru).

Pokud pouštíte DOSovskou hru pod Windows, je nutné UniVBE spustit například v dávkovém souboru (.bat) těsně před tím.

Windows

Programy a hry pro Windows již nemají možnost komunikovat přímo s BIOSem grafické karty a přepínání rozlišení vykonávají buďto přes základní funkce operačního systému, nebo přes funkce DirectX. O obnovovací frekvenci se nikdo nestará a sází se jednoduše na hodnotu „optimální“, jejíž definice se může lišit v závislosti na ovladači grafiky a také operačním systému (Windows řady NT na „optimální“ mají často tendenci odpovědět: 60 Hz). Z hlediska grafik byla neproblematičtější rozhodně ATI, kde bez instalace kompletních driverů a správné konfigurace monitoru kolikrát ovladač nastavil 60 Hz i na přímou žádost o konkrétní libovolně vyšší frekvenci.

Pro hry je typické nastavení rozlišení přes DirectX a tomu lze velmi snadno podstrčit vyšší frekvenci přes nástroj „dxdiag“ (stačí zadat do pole Spustit). Volba se skrývá na poslední kartě (Další nápověda) pod tlačítkem Přepsat. Pouhé zadání hodnoty 120 způsobilo, že každá hra přepínající rozlišení automaticky zkusí dané rozlišení s touto obnovovací frekvencí. Pokud není dostupná, zvolí systém nejbližší nižší.

crt-120hz_07

V mém případě se však monitor přepnul jen do 75 Hz. Důvodem je fakt, že grafická karta nabídne pouze módy, které monitor sdělí jako podporované a pro 640×400 se výrobci mého monitoru evidentně nechtělo reportovat i vyšší frekvence, přestože s nimi monitor nemá žádný problém. Tady je možné problém obejít buďto vyrobením vlastního definičního souboru monitoru (.inf soubor, který nainstalujete místo výchozího „monitor plug-n-play“), nebo jednodušeji přes program PowerStrip.

crt-120hz_05

PowerStrip umožňuje přidání vlastní kombinace rozlišení a obnovovací frekvence, takže jsem si přidal 640×400 při 120 Hz. Změny jsou aktivní pouze, pokud je program spuštěný. Je tedy nutné přidat PowerStrip do „Po spuštění“, nebo jej spouštět ručně kdykoli před hrou.

crt-120hz_06

Od té doby se mi Hexen95, který hraju v těchto týdnech, spouští automaticky v 640×400@120Hz (Hexen95 je verze pro Windows a na rozdíl od verze pro DOS není fixně omezena na pouhých 320×200).

Stále ještě může být problém s některými programy, které přepínají rozlišení mimo DirectX (typicky některé hry v OpenGL). Pokud si nenastavují frekvenci správně, je nutné sáhnout po speciálních utilitách. Některé jsou vázané na konkrétního výrobce grafické karty, jiné čekají na změnu rozlišení, aby okamžitě vynutily další přepnutí (už ovšem se správnou frekvencí).

Zamyšlení ke starým hrám

Nejsem ten typ, co by u toho vysedával denně, ale někdy mě to chytne, a tak si držím tento počítač pěkně nakonfigurovaný a vymazlený do podoby, kdy ho stačí zapnout a všechno perfektně funguje. Mám velkou slabost pro hry 90. let (speciálně z druhé poloviny), protože v té době jsem byl dítě s minimem starostí a spoustou času, takže jsem hodně hrál. Takto to má spousta lidí a je to vázané právě na věk – pro někoho mají stejné kouzlo hry na ZX Spectrum, pro jiného na Amigu, a někdo má doma PC s hi-end dobovým hardwarem na Need for Speed: Underground 2.

Pokud jde o akční hry, všichni si z té doby pamatujeme Doom a Quake v několika verzích od Id Software. Tehdy jsem je také hrál – Doom 1 i 2 jsem dohrál několikrát i na vyšší obtížnosti (teď už ovšem vím, že zdaleka nejlepší verze Dooma ever je fanouškovský Brutal Doom). Quake 1 mě nikdy nechytl (vyloženě se mi nelíbí ten nesourodý design), u Quake 2 se mi líbily jen úrovně použité v demu. Duke Nukem 3D je taky klasika. Kdo to nezažil a zkoumá staré hry, určitě se na tyto musí aspoň podívat, pokud chce pochopit tu dobu. Je toho však mnohem víc a spousta jiných her je podle mě mnohem lepší.

Spoustu zábavy jsem si před lety užil s Extreme Assault (asi jediná hra, kterou jsem dohrál s 3D akcelerací pod DOSem). Kdysi v době příprav na státnice jsem znovu dohrál Little Big Adventure 1 i 2. Blood založený na enginu Duke Nukem 3D jsem tehdy moc nechápal a přišel mi příliš náročný a s divnými zbraněmi. Když jsem se k němu ale loni dostal, musel jsem dohrát všechny epizody i datadisky a doteď mě fascinuje geniální design některých úrovní. Teď hraju Hexen založený na enginu Dooma, který jsem v dávných dobách taky zavrhnul. Nyní ale vidím, že to byla chyba. Úplně vybočoval z tehdy zaběhnutého konceptu zbraní (tj. klasiky: pistole, brokovnice, samopal, raketomet…) a dokonce ani neměl svět rozdělený do standardních levelů. Byl už vývojově dál a já asi ještě nebyl připraven. S ohledem na to, jak se herní svět postupně vyvinul, už to ovšem dávno není problém.

hexen95

Takže nemá cenu pořád hrát dokola Dooma a Duke3D – je dobré zkouknout i hry, které přímo navazovaly na koncepty načrtnuté těmito hrami, přestože nejsou tak známé. Skrývá se v nich spousta zábavy… a kdy jindy se k nim vrátit než teď?

Na závěr si říkám, že pokud jste pro krácení času taky váhali mezi alkoholismem a hraním starých her a rozhodli jste se pro hry, doporučuju v mezičase mrknout také na pěkný seriál ze zákulisí vývoje kultovních her na kanálu Ars Technica (minimálně díly o Princi z Persie a Abe’s Oddysee jsou luxusní).

Komentáře k článku

  1. 1. mixal11  22.3.2020  10:10:03

    Ku mojej prvej grafickej karte 8bit Sigma VGA (sli k nej pripojit aj EGA monitory) boli pribalene diskety (samozrejme 5.25″) kde boli drivery na nastavovanie rozlisenia/refresh rate, ale len pre rozne popularne programy – nejaky ten AutoCad, Lotus 123 atd – samozrejme pre DOSove verzie.

    Potom som mal Legend 64 na PCI, cip ARK2000MT, bola super pod DOS/Windows a tam som mal tusim nejaku utilitku na refresh rate vseobecne.

  2. 2. mixal11  22.3.2020  10:24:43

    Mam ale pocit (hadat sa nebudem), ze niekto zo znamych mal nejaku Matrox kartu a k nej utilitu kde vedel override na rozlisko 320x200x256 v DOSe.

  3. 3. swarm  22.3.2020  11:15:21

    [1] Doma mám někde manuál k ISA grafice, u které bylo možné vlézt do setupu video BIOSu (!!) a vybrat tam frekvenci pro jednotlivá rozlišení. To mi přišlo fakt pěkný.

    Vím, že u některých starých grafik byly skutečně přibalené „ovladače“, které vynutily vyšší frekvence (v rozlišeních 640×480+). Některé novější ISA Tridenty měly jumper, kterým se to dalo přepnout. Dokonce mám i notebook (Siemens-Nixdorf PCD-4ND), ke kterému byla utilita, po jejímž zavedení šlo vymáčknout na externím monitoru vyšší Hz nejen pro grafická rozlišení, ale třeba také pro textový režim (88Hz v text-mode bylo moc pěkných):

    http://notebookblog.cz/technika/historie-technika/nostalgie-dos-disky-refresh-obrazu-a-pcmcia/

    Pokud jde o zvýšení frekvence v 320x200x8bpp, tam je problém, že ty hry kolikrát počítaly přesně s rychlostí paprsku a měly na přerušení z karty navázanou třeba herní logiku. Když jsem s tím kdysi experimentoval na tom zmíněném notebooku, spíš jsem se dočkal problémů.

  4. 4. Ronoath  24.3.2020  11:29:29

    Taky jsem se vrátil k několika hrám, které jsem kdysi hrál a nedohrál. Pro mě to byl třeba Heretic, který jsem kdysi zkoušel hrát (a zasekl se ve druhém levelu…) a před časem jsem jej dokončil celý, a moc si to užil. Jen jsem využil výhod GZDoomu: jede pod Linuxem, umožňuje vypnout auto zaměřování (což mě ve starých střílečkách rozčiluje) a pustit si hru v nativním rozlišení displeje notebooku. Nicméně, moc teď nehraju, protože kromě dvou možností zmíněných na konci článku krátím čas modelařením: konečně jsem dokončil pár vagonů v měřítku 1:87…

  5. 5. Gondar  1.4.2020  16:41:13

    z tehle doby MOC doporucuju strife..trochu „open-world“, trochu rpg na enginu dooma…tady recenze z diskmagu vyhen (resp. jeho online archivu)…chyby omluvte, bajvoko 25 let je 25 let ;]
    https://nuane.com/vyhen/05/strife.html

  6. 6. tomass  11.5.2022  19:10:23

    Použij EDID VGA (emulator https://www.secomp.cz/vga-edid-emulator-vc010-_d10519.html).
    V programu AW Edid editor si vytvoř svůj ideální monitor, tento soubou nahraj do EDID emulatoru a zapoj ho mezi grafickou kartou a monitorem a máš hotovo.


Napsat komentář