OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 19:01

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 12 ] 
Autor Zpráva
 Předmět příspěvku: Efekty v demach a ich programovanie
PříspěvekNapsal: 22.08.2013, 18:55 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Inspirovany PC demami (vratane vyborneho Second Reality od Future Crew) a knizkou "Programovanie grafickych adapterov" som sa po skvelej demoparty Demobit'95 rozhodol, ze aj ja trosku zabrdnem do programovania grafickych efektov pre PC. Tuto temu som zalozil preto, aby som sa mohol podelit s tymi zopar rutinkami, ktore sa mi podarilo spravit. A budem velmi rad, ked aj niekto dalsi prispeje rutinkou nejakeho pekneho efektu, popripade zaujimavym know-how z tejto oblasti.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Efekty v demach a ich programovanie
PříspěvekNapsal: 22.08.2013, 19:05 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Pecedlam (s VGA kartou) som vzdy zavidel farebnu paletu, ktora umoznuje malickou zmenou (zapis do farebneho registra) vyvolat velke farebne zmeny na obrazovke. Preto som sa rozhodol, ze aspon na PeCi si naprogramujem nieco s vyuzitim tejto palety. A tak vznikol taky velmi jednoduchy napad - ciary nakreslene lucovito od stredu obrazovky k okrajom, kazda inou farbou, a nasledne paletou som vytvoril efekt ako keby sa ciary otacali okolo stredu.


Přílohy:
Poznámka: Rotacia lucov pomocou palety
LineShine.rar [1.3 KiB]
932 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Efekty v demach a ich programovanie
PříspěvekNapsal: 22.08.2013, 19:21 
Offline
Kecálek
Uživatelský avatar

Registrován: 13.05.2013, 06:28
Příspěvky: 231
Bydliště: Handlova
Has thanked: 118 times
Been thanked: 44 times
Vyborna tema. Mna by zaujmal ZOOM efekt na Amige za pomoci Blittra.
Nieco taketo.

[youtube]http://www.youtube.com/watch?v=TcGs3RrLCKE[/youtube]

Zacal som to aj disassemblerovat. Ale kupil som si PC.

_________________
MiST | Amiga 600 Furia II | Amiga 1200 ACA1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Efekty v demach a ich programovanie
PříspěvekNapsal: 22.08.2013, 19:22 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Dalsiu vlastnost, ktoru som Pecedlam (a vecsine inych platforiem) zavidel, bol textovy rezim. Jeho uzasnou (a dobre znamou) vlastnostou je ze staci zapisat do obrazovej pameti len jediny bajtik a na obrazovke sa ukaze cele pismenko. Druha jeho uzasna vlastnost (ktora uz nie je az tak znama, resp. beznym ludom to nepride) je ze ak mame obrazovku vhodne vyplnenu urcitym znakom, staci v definicii tohto znaku v znakovom fonte zmenit len zopar bajtov (obvykle 8 alebo 16) a toto vyvola velke a rozsiahle zmeny textury na obrazovke. Prave tieto dve vlasnosti su idealne pre demomaking, kde male akcie procesora urobia velke akcie na obrazovke.

Tak som pokusne spravil jeden maly efektik pre textovy rezim. Efektik zaplni obrazovku dvomi znakmi, a nasledne meni ich kresbu v znakovom fonte tak, aby vyvolal dojem ze scrolluje cela obrazovka.

Poznamka: Pokial efekt pustate pod windowsami, je treba najprv spustit command prompt (alebo dosbox), potom sa pomocou ALT+ENTER prepnut do celoobrazovkoveho rezimu a az v tomto rezime spustit efekt. Pokial ho spustite iba v okne, nebude to fungovat, pretoze windowsy nepovolia low-level pristup ku grafickej karte kvoli zmene v znakovom fonte a synchronizacii so zobrazovanim.


Přílohy:
Poznámka: Graficky scroll obrazovky v textom rezime
Txt5.rar [3.02 KiB]
913 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Efekty v demach a ich programovanie
PříspěvekNapsal: 22.08.2013, 19:26 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
ObiWanKen píše:
Vyborna tema. Mna by zaujmal ZOOM efekt na Amige za pomoci Blittra.
Napis to do sekcie "Amiga » Amiga - Dema", tam ti skor niekto poradi. Toto je sekcia PC - dema ;)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Efekty v demach a ich programovanie
PříspěvekNapsal: 25.08.2013, 18:05 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Velmi lakavou oblastou na PeCi pre mna boli rozne graficke rezimy. Standartna VGA karta vedela az do 640x480 pri 16 farbach, a 320x200 pri 256 farbach. Samozrejme hned som si oblubil ten 320x200, hlavne preto lebo tam krasne vychadzalo co pixel to bajt a videoramka bola organizovana krasne linearne :thumbup: Ale nelubilo sa mi ze body nie su stvorcove a ked nakreslim kruznicu, bude z toho elipsa :bang:
Vo vyssie spominanej knizke o grafickych adapteroch sa ale pisalo o specialnych X-rezimoch. Jeden z nich bol velmi podobny - 320x240 , 256 farieb, body boli stvorcove. A co som si vsimol, velmi vela dem vyuzivalo prave tento graficky rezim. Najvyssi 256-farebny X rezim, ktory bola standartna VGA karta schopna zvladnut, mal rozlisenie 360x480. Tak som si tento rezim nemohol nevyskusat :)


Přílohy:
Poznámka: Graficky rezim 360x480x256
Mode360x480.rar [1.64 KiB]
905 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Efekty v demach a ich programovanie
PříspěvekNapsal: 25.08.2013, 18:21 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
X-rezimy boli super, ale mali jednu zaujimavu vlastnost. Videoramka bola rozdelena na styri banky a pixely na obrazovke nelezali linearne v ramke tak ako pri klasickom rezime 320x200x256, ale na preskacku v jednotlivych bankach. Takze ak som chcel nakreslit styri pixely vedla seba, musel som postupne zapinat styri banky a kreslit vzdy jeden pixel do jednej banky. Co uz predstavovalo pre program zdrzanie (OUT sa nedal tak dobre pipelinovat ako bezny pristup do pameti) a moje srdce baziace po rychlosti a efektivite kodu plakalo.

Ked som podrobnejsie skumal ako funguje ta VGA karta a co vsetko s nou mozno robit, napadlo ma zeby sa dal realizovat jeden specialny graficky rezim - ma sice nizke rozlisenie, iba 80x60 pixelov po celej obrazovke (a samozrejme 256 farieb), avsak podarilo sa mi VGA kartu naprogramovat tak, ze videoramka je organizovana krasne linearne a cela je naraz pristupna procesoru bez nutnosti akokolvek prepinat pametove banky na VGA karte.

Je to vlastne taky "stvorcekovy" rezim, spektrista by napisal "atributovy" :) Mal som v plane ho vyuzit na nejaky matematicky/algoritmicky narocnejsi efekt, pri ktorom by procesor nestihal za jeden frejm naplnit az 320x200 pixelov. Avsak neskor, ako isiel cas, a vykony PeCi sa zvysovali, prestal mat tento moj specialny graficky rezim prakticky vyznam a tak nejak upadol do zabudnutia :shrug:


Přílohy:
Poznámka: Graficky rezim 80x60x256
Mode80x60.rar [1.46 KiB]
924 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Efekty v demach a ich programovanie
PříspěvekNapsal: 05.06.2014, 21:49 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Jednym z typickych demoefektov na PeCi je aj tzv. rota-zoomer. To sa vezme nejaky obrazok alebo vzor, a zobrazuje sa na obrazovke rozne otoceny a zvecseny. Poviete si mozno - no a co, co je na tom ? :poke: Ved otacat a menit mierku bitmapy dokaze kazdy graficky editor. No dobre, ale skuste to v tom editore robit v realnom case - tak aby z toho vznikla pekna plynula animacia ! :neener: To si uz vyzaduje trosku toho programatorskeho kumstu. :bulb: Alebo nejaky gigahertzovy procesor :joint: Ale pokial by ste to chceli spravit v nejakom frameworku ci nebodaj v jave :puke: , garantujem vam ze ani gigahertzovy multijadrovy procesor vam nepomoze.... :bang:

Ale vratme sa k teme. Tento rotazoomer je odladeny na Pentiu 1 / 200 MHz, ale mal by spravne fungovat aj na beznych 486-kach (neskusal som). Na Pentiu krasne stiha vykreslovat cely obraz synchronne so zobrazovanim, takze otacanie a zvecsovanie je krasne plynule. Cely bezi v klasickom grafickom rezime 320x200, 256 farieb, preto postaci akakolvek VGA karta.

Rotazoomer je napisany pre cisty MSDOS, idealne je ho samozrejme spustat pod nim :thumbup: . Funguje dobre aj pod Win 3.1, Win95, Win98, ME, NT, XP :whist: . Vdaka zmene grafickeho rezimu windowsy pochopia ze chce priamy pristup k VGA karte a umoznia mu ho :clap: . Zial, neda sa spustit pod Win Vista, 7, 8.x, a to ani v dosboxe :cry: . V dosboxe sa sice akoze spusti, ale vzhladom na softwerovu emulaciu rezimu 320x200x256 bezi asi tak 128x pomalsie :bang: a z povodne krasnej plynulej animacie je velky prd :shrug:


Přílohy:
RotaZoomer.rar [51.67 KiB]
898 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Efekty v demach a ich programovanie
PříspěvekNapsal: 06.06.2014, 11:45 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 19:27
Příspěvky: 1011
Has thanked: 231 times
Been thanked: 221 times
Busy píše:
Dalsiu vlastnost, ktoru som Pecedlam (a vecsine inych platforiem) zavidel, bol textovy rezim. Jeho uzasnou (a dobre znamou) vlastnostou je ze staci zapisat do obrazovej pameti len jediny bajtik a na obrazovke sa ukaze cele pismenko. Druha jeho uzasna vlastnost (ktora uz nie je az tak znama, resp. beznym ludom to nepride) je ze ak mame obrazovku vhodne vyplnenu urcitym znakom, staci v definicii tohto znaku v znakovom fonte zmenit len zopar bajtov (obvykle 8 alebo 16) a toto vyvola velke a rozsiahle zmeny textury na obrazovke. Prave tieto dve vlasnosti su idealne pre demomaking, kde male akcie procesora urobia velke akcie na obrazovke.

Tak som pokusne spravil jeden maly efektik pre textovy rezim. Efektik zaplni obrazovku dvomi znakmi, a nasledne meni ich kresbu v znakovom fonte tak, aby vyvolal dojem ze scrolluje cela obrazovka.

Poznamka: Pokial efekt pustate pod windowsami, je treba najprv spustit command prompt (alebo dosbox), potom sa pomocou ALT+ENTER prepnut do celoobrazovkoveho rezimu a az v tomto rezime spustit efekt. Pokial ho spustite iba v okne, nebude to fungovat, pretoze windowsy nepovolia low-level pristup ku grafickej karte kvoli zmene v znakovom fonte a synchronizacii so zobrazovanim.


V DosBOXu to jde. Btw. textovy rezim je hodne pouzivany na C64, kde jsou 4 znakove sady a tak se s nimi animace delaji pekne. Viz treba nova gameska Inception, kde je pohym pozadi delany jen znaky. http://c64.cz/index.php?static=inception (K videni pristu vikend ve Frystaku u Zlina na Schlimeisch party :)

_________________
Have you played ATARI today?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Efekty v demach a ich programovanie
PříspěvekNapsal: 06.06.2014, 11:46 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 19:27
Příspěvky: 1011
Has thanked: 231 times
Been thanked: 221 times
Busy píše:
Jednym z typickych demoefektov na PeCi je aj tzv. rota-zoomer. To sa vezme nejaky obrazok alebo vzor, a zobrazuje sa na obrazovke rozne otoceny a zvecseny. Poviete si mozno - no a co, co je na tom ? :poke: Ved otacat a menit mierku bitmapy dokaze kazdy graficky editor. No dobre, ale skuste to v tom editore robit v realnom case - tak aby z toho vznikla pekna plynula animacia ! :neener: To si uz vyzaduje trosku toho programatorskeho kumstu. :bulb: Alebo nejaky gigahertzovy procesor :joint: Ale pokial by ste to chceli spravit v nejakom frameworku ci nebodaj v jave :puke: , garantujem vam ze ani gigahertzovy multijadrovy procesor vam nepomoze.... :bang:

Ale vratme sa k teme. Tento rotazoomer je odladeny na Pentiu 1 / 200 MHz, ale mal by spravne fungovat aj na beznych 486-kach (neskusal som). Na Pentiu krasne stiha vykreslovat cely obraz synchronne so zobrazovanim, takze otacanie a zvecsovanie je krasne plynule. Cely bezi v klasickom grafickom rezime 320x200, 256 farieb, preto postaci akakolvek VGA karta.

Rotazoomer je napisany pre cisty MSDOS, idealne je ho samozrejme spustat pod nim :thumbup: . Funguje dobre aj pod Win 3.1, Win95, Win98, ME, NT, XP :whist: . Vdaka zmene grafickeho rezimu windowsy pochopia ze chce priamy pristup k VGA karte a umoznia mu ho :clap: . Zial, neda sa spustit pod Win Vista, 7, 8.x, a to ani v dosboxe :cry: . V dosboxe sa sice akoze spusti, ale vzhladom na softwerovu emulaciu rezimu 320x200x256 bezi asi tak 128x pomalsie :bang: a z povodne krasnej plynulej animacie je velky prd :shrug:


Tohle je v DosBOXu pomale, ale aspon je videt, co se s obrazkem deje :)

_________________
Have you played ATARI today?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Efekty v demach a ich programovanie
PříspěvekNapsal: 06.06.2014, 11:54 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 19:27
Příspěvky: 1011
Has thanked: 231 times
Been thanked: 221 times
Busy píše:
Velmi lakavou oblastou na PeCi pre mna boli rozne graficke rezimy. Standartna VGA karta vedela az do 640x480 pri 16 farbach, a 320x200 pri 256 farbach. Samozrejme hned som si oblubil ten 320x200, hlavne preto lebo tam krasne vychadzalo co pixel to bajt a videoramka bola organizovana krasne linearne :thumbup: Ale nelubilo sa mi ze body nie su stvorcove a ked nakreslim kruznicu, bude z toho elipsa :bang:
Vo vyssie spominanej knizke o grafickych adapteroch sa ale pisalo o specialnych X-rezimoch. Jeden z nich bol velmi podobny - 320x240 , 256 farieb, body boli stvorcove. A co som si vsimol, velmi vela dem vyuzivalo prave tento graficky rezim. Najvyssi 256-farebny X rezim, ktory bola standartna VGA karta schopna zvladnut, mal rozlisenie 360x480. Tak som si tento rezim nemohol nevyskusat :)


Jake ma VGA vlastne ty X rezimy? Co vim, tak se jeste (treba i v Second Reality nebo v demoverzi hry Boovie) pouzivalo neco jako 320x400 (nebo 320x480). To uz bylo pekne, sice pixel byl obdelnicek, podobne jako na C64, ale vypadalo to pekne.

_________________
Have you played ATARI today?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Efekty v demach a ich programovanie
PříspěvekNapsal: 06.06.2014, 13:52 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Factor6 píše:
Jake ma VGA vlastne ty X rezimy? Co vim, tak se jeste (treba i v Second Reality nebo v demoverzi hry Boovie) pouzivalo neco jako 320x400 (nebo 320x480).
Pojem X-rezim sa obvykle pouziva pre tie rezimy, ktore normalne neboli dostupne cez bios a ktore bolo treba nastavit priamym pristupom cez OUT do VGA karty.

Vo vseobecnosti, VGA karta dokazala vycitavat videoramku tak ze stihala na sirku vodorovne vygenerovat 640 alebo 720 pixelov v 16 farbach, alebo polovicny pocet (320 a 360) pixelov v 256 farbach. Na vysku mohla v jednej snimke generovat 200, 350, 400 alebo 480 pixelovych riadkov. Tym padom je urceny aj najvyssi mozny 256-farebny rezim - je to prave 360x480. Inak pocet riadkov 200 sa moc nepouzival (na CRT monitoroch to nevyzeralo dobre).

Bezny textovy rezim 80x25 vyuzival rozlisenie 720x400, pricom znaky boli velke 16x9 pixelov. Font bol len 8-pixelov siroky, deviaty pixel bola medzera medzi znakmi (ramikove znaky tam mali skopirovany osmy bit). Textovy rezim 80x50 potom mal znaky vysoke 8 pixelov. Inak samotna VGA umoznovala nastavit lubovolnu vysku znakov az do 32 pixelov.

Bezne 16-farebne rezimy 640x350, 640x400, 640x480 a pod. priamo vyuzivali toto rozlisenie VGA.
Vsetky standartne 16 a 256 farebne rezimy s rozlisenim Y=200 vyuzivali dvojite riadkovanie, t.j. VGA do monitora odvysielala kazdy pixelovy riadok 2x po sebe. Cize taky klasicky rezim 320x200 bol v skutocnosti 320x400, len mal zdvojene pixelove riadky (t.j. kazdy parny riadok sa vycitaval z tej istej casti pameti odkial predchadzajuci neparny riadok).

A to uz pisem o dalsej vlastnoti VGA karty - umoznila nastavit kolkokrat po sebe sa odvysiela kazdy pixelovy riadok. Vsetky rezimy s 200 a 240 riadkami vyuzivaju dvojite posielanie riadkov. Moj specialny X-rezim 80x60 pixelov ma nastavene dokonca az 8-nasobne posielanie jedneho riadku (preto ma rozlisenie Y len 60) - ale v skutocnosti z hladiska monitora bezi v rozliseni 480 pixelov po Y.

Jednou s vlastnosti VGA karty tiez bolo, ze pristup k videopameti v grafickych rezimoch bol cez 64kB okno (na adrese #A000:0000). 16-farebne rezimy boli realizovane tzv. planarnym adresovanim, t.j. ako styri samostatne monochromaticke videoramky s obvyklym usporiadanim (kazdy bajt je 8 pixelov, presne ako pixely na ZX Spektre), ale kedze videoramky boli styri, kazdy pixel sa vytvaral zo styroch bitov (kazdy bit z inej videoramky) a preto mohol mat 16 farieb. Nieco podobne vyuzivaju aj 256-farebne X-rezimy, takze tu tiez mame styri samostatne bloky pameti, avsak (nastastie) kazdy pixel je urceny jednym celym bajtom, akurat jednotlive pixely sa beru na preskacku postupne zo vsetkych styroch blokov pameti. Taketo usporiadanie umoznuje pomocou 64kB okna adresovat az 256 kB videoramky - kazdy blok pameti je mozne samostatne namapovat do tohoto okna a tak ho spristupnut procesoru.

Tak, tolko co si pametam este z cias ked som sa s tym hraval :) Kto viete viac, popripade doplnte, upresnite.
Inak, viac informacii vie pohladat strycko Google. Len tak namatkovo co som prave teraz nasiel:

http://www.oldgames.sk/mag/bit-38/page/39/
http://www.root.cz/clanky/nestandardni- ... karty-vga/
http://en.wikipedia.org/wiki/Mode_X
http://gameprogrammer.com/3-tweak.html
http://downloads.gamedev.net/pdf/gpbb/gpbb47.pdf
http://www.phatcode.net/res/224/files/h ... 47-01.html


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 12 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 4 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz