V Sysmanovi je jedna pamatna veta: "Graficka karta VGA ma s kartou EGA jednu spolecnou vlastnost. Jsou to nocni mury programatoru"
Na klasicke VGA, v dobach malych cernobilych monitoru, jsme pouzivali sadu 512 znaku k tomu, abychom mohli kombinovat normalni a dvojnasobne siroke znaky. Sekundarni sada mela ve spodni casti leve poloviny znaku a v horni casti prave poloviny znaku, takze kdyz jsem chtel zobrazit dvojnasobne siroky znak, treba A, vybral jsem sekundarni sadu a do textu jsem vlozil znaky 0x41 a 0xc1. Jelo to v 8 bitech na znak = 640x480, aby to nedelalo problemy s devatym sloupcem. Vypadalo to celkem dobre.
Nebyla noční můra až u pozdějších SVGA karet, které podporovaly rozlišení do 1024x768 v Hi/TrueColor a paletové režimy, ale každá měla nějak specifické mapování oblastí paměti a driver pro každou z asi třiceti tehdejších grafik měl pár stovek řádků v assembleru?
K tomu šlo nějak nastavit v podstatě jakékoli rozlišení programováním generátoru hodinového signálu a odvozováním synchronizace řádků, sloupců, snímkové frekvence, zpětných běhů, oblastí mimo obrazovku aneb modelines v Linuxu a X11 generované na základě datasheetu monitoru.
31. 7. 2024, 11:19 editováno autorem komentáře
Obrázek 18: Devátý sloupec kopíruje obsah osmého sloupce u vybraných znaků.
Afaik se ten 8. sloupec na 9. kopíruje u všech znaků, ne jen u vybraných. Většina znaků prostě v 8. sloupci nemá pixely … rámečkové a podobné ano.
Ale že to šlo zapnout i tak, aby byl 9. sloupec vždy bez pixelů, to jsem netušil, to je pro mě po těch letech novinka ;).
Jinak velké díky za zobrazení Impulse Trackeru :). Potěšilo.
30. 7. 2024, 10:06 editováno autorem komentáře
Schvalne jsem to jeste jednou vyzkousel. Na EGA toto zobrazi dvojici vodorovnych neprerusovanych car:
mov cx, 45 ; pocet zapisovanych znaku mov al, '_' ; kod zapisovaneho znaku opak: stosb ; zapis znaku inc di ; preskocit atribut loop opak ; opakujeme CX-krat mov di, 160 mov cx, 45 ; pocet zapisovanych znaku mov al, 196 ; kod zapisovaneho znaku opak_2: stosb ; zapis znaku inc di ; preskocit atribut loop opak_2 ; opakujeme CX-krat
To je logicky, protoze jak _ tak i ten znak 160 maji na EGA sirku osmi pixelu. Na VGA ale ten prvni znak bude jen 8 pixelu (prerusovana cara, ne plna) a ten druhy 9 pixelu. Nejaka interni logika to rozlisuje - tedy jen par znaku z horni pulky ASCII si "zrcadli" osmej sloupec do devateho.
Aha, tak to jsem netušil, že podtržítko je na celých 8 sloupců.
Čili když se kreslí v klasickým VGA 80×25 textovým módu grafický myší kurzor s posuvy po pixelech, tak se musí "postižené znaky" na obrazovce nahrazovat těmi vyššími s duplikovaným osmým sloupcem, aby to nepřetrhlo ten kurzor mezi znaky (místo toho se ten kurzor lehce deformuje duplikací 8. sloupce na 9., protože se jich prostě vždycky definuje 8, nikdy 9). Bezdeformační varianta by musela přepínat do módu s reálně zobrazovanými 8 sloupci na znak (já mu říkám "EGA mód"). Tam se hranice znaků při přejíždění kurzorem mezi nimi nepozná, kurzor má tvar stále stejný.
Díky za další zajímavý díl. Připomnělo mi to linuxovou utilitku SVGATextmode, skvělý způsob, jak získat víc místa na textové konsoli. Podle mých vzpomínek nebyl problém s čitelností ani tolik kvůli obnovovací frekvenci 50 Hz, ale kvůli optickému slévání řádků textu u fontů 8x8, už se špatně četly. Ale to jsou jen osobní vzpomínky :)
Co mi vrtalo hlavou jsou vaše popisky u obrázků z Tank wars. Kde je těch 256 barev? Nedalo mi to a zobrazil jsem si histogram. V té úvodní obrazovce hry tvrdí cca 40 barev, ale spousta z nich je tam jen v pár pixelech, viditelných jich podle mne není ani 16, naopak je to ukázka obřího ditheringu. Ten obrázek z průběhu hry působí už úplně směšně, tohle byly ty (nej)horší hry na osmibitech, co se grafiky týče... Kdybyste mi neřekl, odkud to pochází, tipoval bych na ZX Spectrum :)
Pak je najednou screenshot z Dooma nebo toho dungeonu a vypadá to jako úplně jiný svět, to muselo ve své době opravdu oslnit... Já byl v té době v za(u)jetí textovém, tak si to moc nepamatuju :-) Věnoval jsem se spíš tomu, jak spolupracovat s někým, kdo má profi výbavu např. na tisk, protože cokoli na domácím PC mi přišlo zoufale nedokonalé. Tak jsem se učil TeX, PostScript apod. a sháněl brigády ve skutečných grafických studiích...
Dooma jsem nidy nehrál, ale jak velký vliv na to měl koprocesor? Jak šel na počítači 386DX + 387 a jak to naopak fungovalo na 486SX bez koprocesoru?.
Na ČVUT DOOMa zakazovali, protože to hodně zahlcovalo síť (hlavně ty bezdiskový 386/486). Když jsem pak nastoupil na civilní službu na střední školu, tak žáci zkoušeli hrát DOOMa (486DX2-80) a tím pokaždý taky zahltili sít. Honil jsem je, at hrají Heretica ten (aspon z mého pohledu) vypadal dost podobně, ale síti neubližoval. Ta sít byla tenkrát 2x15 počítačů spojených do 10Mb hubu. Ty byly připojený koaxem do serveru.
Já mám pocit, že i Intel 386 DX existoval na 40 MHz - protože to jsem měl, s přidaným 387 koprocesorem. (Mimochodem: byl to můj poslední PC s pasivně chlazeným CPU.)
Napsal bych, že to bylo na svou dobu dělo, ale fakt je, že jsem si to pořizoval ve chvíli, kdy se vyrojily 486-ky. I tak jsem měl doma lepší stroj, než byl můj pracovní v kanceláři (Dell, 386 SX, 25 MHz).
1. 8. 2024, 13:36 editováno autorem komentáře
Intel 386 DX končil na 33 MHz. Všechny 386DX40 u nás (a že jich bylo dost) byly od AMD.
https://en.wikichip.org/wiki/intel/80386
https://en.wikichip.org/wiki/amd/am386
Rozporovat to nebudu, už je to hodně dlouho...!
Jen pamatuji, že jsem na tom měl Windows 3.10, grafickou kartu Paradise VGA (SVGA) s 1 MB paměti - a televizní (grabovací) kartu! Jenže na to grabování už ta 386-ka nestačila (nestíhala komprese, a když jsem přepnul komprimaci na HuffYUV, tak sice stíhal procesor, ale přestal stíhat harddisk), takže jsem upgradoval na 486DX-100, což papírovým výkonem překonalo Novell server, na kterém nám jela firma. ;oD
To je nejaka haluz. 386ka nemohla stihat realtime kompresi absolutne vubec ani z rychliku. TV karty te doby mely obvykle hw kompresi primo na sobe. Ta 386 to musela nestihat kvuli obsluze IO.
Jinak TV karty te doby pro realtime sledovani byly vetsinou propojeny primo na VGA bypassem pres VGA feature konektor.
Je to přesně tak: 386-ka to nestíhala.
Ta karta byla připojená externě VGA kablíkem (délka cca 10 cm), Windows jen nakreslily modý obdélník, předaly souřadnice (levý horní, prvaý dolní...), a kde našla modrou, dala obraz z televize. Grabování prováděla sama, jen to podala skrz Windows na disk. Ten to ale nestíhal.
Zajímavé je, že se tomu dal do cesty postavit kodek, který provedl komprimaci, takže se disku ulevilo - a že HuffYUV to na té 386+387 skoro stíhal (a při dostatku RAM se nechalo nahrát přes 90 minut). Vtip byl v tom, že bez komprese se to cpalo na disk rovnou, jen s nějakou malou cache, zatímco přes kodek toho dost zůstávalo v RAM - takže i mírný stupeň komprimace zajistil, že se to stíhalo.
Nestíhající IO disku bylo navíc důvodem, proč jsem do počítače vrátil starší 40 MB disk - na tom byl systém (C:), zatímco zápis na novější (80 MB, později 135 MB) disk se tolik nebrzdil - limitem byla propustnost jediné IDE kšandy, nikoliv zběsilé kmitání hlaviček.
Nicméně motivace k zakoupení 486-ky byla značná. (Ani pak to ale nějaké real-time komprimování moc nezvládalo - ale mohl jsem na to HuffYUV víc šlápnout. A základní deska měla dva IDE kanály, takže disky mohly být zvlášť.)
Proto grabberi meli vetsinou trochu silnejsi 486 nebo pentium a SCSI disky coz pozdeji vyuzili pro prvni vypalovacky ktere byli tez SCSI.
O trochu pozdeji nekdy kolem roku 96-97 za ery nastubu DVB uz hw komprese nebyla samozrejme treba treba a treba z historickeho receiveru dbox od Nokie slo grabovat primo pres SCSI kabel.
Ona ta karta tenkrát nebyla primárně určená pro grabování, ale opravdu jen sledování televize. To, že jsem byl schopen si film jeden večer (noc) nahrát a druhé odpoledne pustit, byl příjemný bonus. ;o)
Ale je pravda, že mne to motivovalo k posílení stroje - a posléze k pořízení lepší karty... Právě jsem si uvědomil, že s televizí v počítači
žiji pěkných kulatých 30 let! ;oD
Fajn, uznávám: kulaté to bude, až to bude 32 let. ;o)
2. 8. 2024, 20:28 editováno autorem komentáře
I já jsem měl grabovací kartu s tunerem. Byl to věčný souboj s mizernými drivery a mizernými aplikacemi, ale uznávám, že se to dalo používat. Od příchodu DVD, a později rychlého internetu, nějak nemám potřebu. Nechce se mi koukat na příšerně dabované filmy, ořezané na formát 4:3, prokládané reklamami na vložky a prací prášky (nebo co zase dneska letí). Raději si pustím film který chci, kdy chci, v daleko lepší kvalitě, bez dubbingu a bez reklam. Upřímně už si nevzpomenu, kdy jsem měl naposledy televizi puštěnou. Asi někde na hotelu před 5-10 lety.
Souboj s ovladači zůstal, ale aplikace se dost zlepšily.
Kdysi, na Windows 3.10, to bylo celkem pohodové, protože ke kartě byly drivery i aplikace. Na Windows 95 to začalo skřípat (drivery byly schopné shodit systém), na Windows NT to byl trochu boj (systém se nenechal shodit a zabil proces klidně vprostřed práce). Krutý byl přechod na Windows 2000, protože drivery pro NT odmítly fungovat, ale aplikace zůstala stejná...
Nicméně dnes mám kartu, která spokojeně funguje ve Windows 10 (jedenáctky
budou zase boj...) i Linuxu, druhou na Raspberry PI, program na PVR a klienty na všem.
Programů ořezaných na 4:3 je pomálu, ČT vysílá ve FullHD, a pokud si něco chci nahrát (abych se na to druhý/třetí den podíval), není s tím problém.
Jasně komerční stanice v pozemním vysílání dělají, co mohou, aby se na ně, pokud možno, nikdo s dostatkem příčetnosti a alespoň trochu slušným zrakem nedíval. ;oD
asi je to tento level https://doom.fandom.com/wiki/Icon_of_Sin/Doom_II?file=Meet_boss.png
(na 486 prakticky nedohratelny kvuli velke mistnosti a priseram, ktere se tam porad znovu a znovu objevuji - ale ja nejsem zadnej paran, mozna to je pro nekoho lehky)
Jo, ten znám, cílem bylo se asi třikrát trefit raketometem do toho "otvoru" na čele, přičemž hráč vyjížděl výtahem nahoru a když byl úplně nahoře, byl příliš vysoko, takže buďto těsně před dojetím, nebo po dojetí nahoru seskočit a v pádu to trefit. Děsnej vopruzlevel, a pořád ten otvor chrlil nové a nové potvory. Cílem bylo ho killnout před tím, než množství potvor killne hratelnost :).