Na FreeHostingu Endora běží desítky tisíc webů. Přidejte se ještě dnes!

Vytvořit web zdarma

Na FreeHostingu Endora běží desítky tisíc webů. Přidejte se ještě dnes!

Vytvořit web zdarma

Knihovna Lite a ukzkov program World

autorem JIVA a dal z internetu

Clem knihovny Lite je poskytnout rozhran, jeden celek, nadstavbu nad samotnm Borland Pascalem 7.0, se kterm lze jednodue a rychle seskldat programy, kter budou v grafickm reimu a umon pehrvat i zvuky. Napklad rychle napsat hru, kter vypad naprosto serizn. Nebo jinak: mohl by to bt program dlajc cokoliv jinho, ovem chceme vynst na obrazovku napklad graf nebo informace. Clem tohoto jednotnho celku "na vechno" je, aby si zachoval status "Lite", tzn. odlehen, mal nebo chcete-li bez cukru.

V souasn dob je Lite koncipovan na program pro reln reimu procesoru. Z volnch 640 KB pamti obsad asi polovinu, mon i vc. Z toho vyplv, e vsledn program Litu me nabt asi tak velikosti 128..192 KB. Pracuje se na verzi pro protected mode, ta bude vyuvat RTM.EXE. Lite se jako projekt pro reln reim a soust vslednho programu logicky skld z mench knihoven. Umon program 150 KB v grafice, se zvuky atd. bez nutnosti dodat jakoukoli dal knihovnu. Jedn se o programovac sadu, kter vznikla sestavenm z knihoven rznch autor. Dalmi zdroji byly manulov programy jako SYSMAN, PCGPE nebo ATHELP. Knihovna je tedy sbraniko, je ovem tak zaformtovan, e by mlo dvat smysl.

Podknihovna *1* - GLOB

V tto sti se nachzej zkladn deklarace popisujc pamov model programu (v tuto chvli real). V souboru Glob, kter pedstavuje prvn podknihovnu tpu, najdeme seznam vech estncti st. Kad st je podknihovna, ve finle se linkuj do jednotnho Litu, kter pesahuje 64 KB. V globu je to rozdlen na veobecn Types, Variables, Const a kad z tchto st je dl rozdlen na 16 podst. V boku je nadepsn prefix, jmna podknihovny, v druhm boku je ppadn koment, v tle asi veprosted jsou definovan typy, promnn a konstanty. 16 - 16 - 16. I v ppad, e dan sekce neobsahuje nic, pesto je zadna jako kolonka pro pozdj mon doplnn.

Ne nsleduje st, kde zase v 16 sekcch podknihoven najdeme programov monosti. Ty si prohldnte, to jsou stavebn kameny pro vsledn program. Ty a jedin ty. Teoreticky k nim pat samozejm jet programov prvky pascalu samho jaksi bez knihoven. Od toho je to Lite, e je to stroh. Ml by v tom bt pehled. Clem je vdy minimalizace okolnch doplujcch variabilit. Co je mon, je dan staticky. To vede ke rychlmu ovldnut rozhran Lite, prakticky bez nutnosti naerpat obshl tma k rychl produktivit grafickch program.

Za Interfacem je Implementation, kter se bez vjimek zakld na include souborech jako v Cku. Include soubory naleznete ve sloce STORE v podslokch s sly a zkrcenmi jmny. Snail jsem se i o to, aby file browser Borland Pascalu, kter zobrazuje dva sloupce, byl optimln pokryt 8+8 soubory podknihoven a dle 16 slokami ve store. Jednotliv koncov include funkce by mly bt jen tak poetn, aby si file browser zachoval schopnost rychlho nalezen a oteven souboru. Kompilace probh bat souborem, kter m peloit vechny podknihovny najednou, ale pokud chcete, kompilujte manuln, postupn od souboru GLOB k dalm podknihovnm. Vechny jsou na sob zvisl navzjem se stoupajc tendenc poteby vech vemi.

Podknihovna *2* - RAM

V tto podknihovn se snam o obsluhu vy pamti. Dokud je knihovna pro real, realizuji to pomoc XMS. Poprv je vidt, e pkazy maj tak prefixy. Je to pro pehled v knihovn, aby bylo zejm, e je pouit stavebn prvek Litu.

Podknihovna *3* - DOS

Tato pas je zamlen nhrada DOSU a CRT, kter ale nen dotaen do konce, je jen v nznaku nejnutnjch funkc. K emu to je, kdy je DOS a CRT v zkladnm pascalu. prava na bez CRT a bez DOSu povede k odstrann problm spojench s chybou v nkterch verzch jednotky CRT. Knihovna Lite by vypadala lpe, kdyby nevyadovala nic, dokonce ani DOS a CRT. Nedokoneno.

Podknihovna *4* - VGA

Lite pracuje s VGA fixn v reimu 320x200x256. V GLOBu je pipraven pamov prostor Buffers. Definoval jsem 4 Buffery po 64 KB oslovan 0 1 2 3. Jsou to pointery, kter ukazuj na tyi bloky 64 KB. Ty jsou ptomn v pamti po celou dobu bhu programu. Vechny se pouij. Buffer slo 4 pak pedstavuje VIDEO RAM na segmentu A000h. Prce s VGA je pojata takto: Buffer 0 slou jako pomocn pro natn ze soubor. Do Buffer 1 a 2 se nahrvaj kousky grafiky a grafika fontu a pak se procesem penesen obdln oblasti kopruj dle do Bufferu 3. Ten pedstavuje finln framebuffer, kter je cyklicky vysln (flip) na monitor (Buffer 4).

Podknihovna um nakreslit pixel, ru a przdn nebo pln obdlnk, vymazat nebo zkoprovat cel buffer (vetn synchronizace s obrazovkou - WaitRetrace) a rznmi zpsoby penet obdlnky obsahu z Bufferu do Bufferu (cel nebo s vynechnm prhlednch pixel).

Podknihovna *5* - SVGA

Stejn jako VGA pracuje s fixnm rozlienm 640x480, 256 barev. Nen o moc pomalej ne VGA, tzn. prtok dat odpovd takov rychlosti, e to sta na vtinu loh a nikde nic neblik, ovem vzhledem k vce ne tynsobnmu objemu grafickch dat se dostvme na rychlost pouze 25 FPS a mn. Pouvaj se stejn Buffery 0123 jako ve VGA, jsou v programu platn vude jako vymezen prostor. Buffer 4 u kvli bankovn VRAM nem smysl. Mme monost pst pmo na viditelnou scnu, nebo pout framebuffer v pamti karty (TogglePaging). Jmna a parametry procedur by mly bt stejn jako u VGA (Pixel, Rectangle, Bar, Spr, BarZ, SprZ, Clear, Flip, WaitRetrace), jen se li prefixem SVGA u pkaz.

Podknihovna *6* - 3DFX

Rusk knihovna Inertia, kterou jsem zalenil do Litu tak, aby se pehledn zkompilovala ve verzi pro reln reim a stala se soust monost. V pslun sti STORE (sloka 3DFX) se nachzej soubory knihovny Inertia = profesionln 3D knihovna, kter se pouvala v dob ranch grafickch akcelertor a pak byla uveejnna zdarma. Je pomrn obshl. Umouje softwarov renderovat 3D objekty (formt GVO) na virtuln obrazovku do velikosti 64 KB (tedy 320x200 px).

Podknihovna *7* - TEXT

Obsahuje ti druhy grafickho vypisovn textu a sel. Prvn OutText pe eskm podomcku sestavenm fontem (const). Um bn znaky, ale se specifitjm znakem si neporad. Druh WriteText pe barevnm uivatelskm fontem: do Bufferu 1 nebo 2 se nahraje tabulka znak (pkaz load Default font) a WriteText z n potom bere jednotliv psmena a pen je na vstup. Je to k tomu, abyste si mohli podle vzorov tabulky sestavit svou vlastn, teba jako BMP. Zmn se jen zdrojov soubor a rozmry znak. Tabulka je na 26 psmen, 10 sel a 4 nco, co zbylo (celkem 40 znak). Tet Text je Mircosoftv, pe jednobarevn, umouje kompletn znakovou sadu a fonty nahrv ze soubor FNT.

Tu uvedu: Sprajty ve VGA a SVGA a tady u textu WriteText pracuj tak, e 1 pixel = 1 bajt, stejn jako na obrazovce. Pixely s hodnotou nula se povauj za "prhlednou" ernou barvu, kter se nekresl. Jak by tedy vypadalo BMP s fontem? Pozad bude ern s barvou rovnou nule a jen pixely jinch barev se vykresl.

Podknihovna *8* - MAPS

Mapa je zklad pro hru, ale i pro jin ely. Mme oblast 640x400 pixel grafiky. Na monitoru se zobrazuje vez napklad 100x100 nebo 320x200 a oblast "Mapa" je vyobrazen segmentu v rozlien 320x200 v rozlien 640x480 segmenty a pak v 640x480 celek. Mapa je sestaven z polek 8x8 pixel (kresl se pes Spr nebo Bar) a je uloen jako ada sel 0..499. Tato sla jsou indexy polek v tabulce sprit. Tabulka je uloena v lev polovin Bufferu 2 (320x200) ve form obdlnku 160x200 px, tedy 20x25 polek 8x8 px. Index 0 odpovd polku v levm hornm rohu, dl to pokrauje doprava a pak po dcch dol. Mapa tedy umouje z modelovch kostiek 8x8 v Bufferu 2 sestavovat na obrazovce opakujc se vzory a podobn. Mlo by to pipomnat dobu Nintendo 8b kazet 128..256 KB.

Podknihovna *9* - TIME

Obsahuje Paletu, Speaker a Timer.

st Timer umonuje Delay (ekn), dle Stopky a promnnou Second automaticky blikajc na frekvenci 1 Hz.

st Paleta umouje pest nebo nastavit RGB sloky jednotlivch barev a vybran seky palety asynchronn stmvat, rozjasovat nebo s nimi blikat. Pracujeme po estnctkch (nap. sek 16 barev 50..65), odtud i prefix.

st Speaker pehrv zvuky na internm pptku potae (PC-Speaker, Dosbox ho emuluje pes reproduktory zvukov karty). Je tu definovan formt na zvuky: vlna vzork pejede a vyd to zvuk asi jako kvknut nebo zakvknut. Pak je tu genertor zvuku. Umouje vyslat oktvu CDEFGAHC tam a zpt jako houkaku nebo teba pozmnit frekvence nkterch not a vytvet fantomov nzkofrekvenn signl navzan na hudb (pouit v psychowalkmanu WORLD).

Podknihovna *10* - SOUND BLASTER 16

Pehrv zvuky na zvukov kart. Jako zklad byl pouit Sound Blaster 16 Ethana Brodskho, kter vtinou hraje, a Mircosoftovy Zvuky, kter nefunguj v Dosboxu. Ve sloce STORE/10-SB16 jsou obsaen utility na prci se zvukem.

Podknihovna *11* - KEYBOARD 1

Moje Lite klvesnice, detekce stisku.

Podknihovna *12* - KEYBOARD 2

Mirkosoftova klvesnice, komplexn program, kvli psan memo v programu WORLD.

Podknihovna *13* - MOUSE

Prce s my, pohyb, stisk.

Podknihovna *14* - MATH

Rutiny pro vynen graf nebo kreslen objekt hry a jejich pohyb po kivkch. Napklad kreslen sely letc po drze.

Podknihovna *15* - IPX

Zcela funkn metoda spojen dvou dosboxovch stanic a vmna dat (paket) po sti.

Podknihovna *16* - MISC

Natn a ukldn datovch formt pro zvuky, grafiku a mapy. A hlavn spoutc a ukonovac procedury PowerOn a PowerOff. Ta prvn se star o nastartovn vech ostatnch st knihovny (inicializace promnnch, alokace Buffer a podobn), volejte ji hned na zatku programu. Tu druhou volejte ped jeho ukonenm, postar se o klid a bezpen vypnut.

Ukzkov program WORLD

Vysoce inn psychedelick nstroj navozujc zmnn stavy vdom. Od lehho ommen a k silnm stavm trvajcm dlouho. Postupujte jen s nejvy mrou opatrnosti, pouijte nejlep rozum, jak mte.

Soubory a odkazy

COMPLETE - Kompletn sloka C:\DOS (Vechny soubory na jednom mst)

SOURCES.zip - Vechny zdrojov kdy a pomocn soubory

TOOLS.zip - Nstroje k prci s datovmi soubory

C-SYSTEM.zip - FreeDOS harddisk C pouzity pri tvorbe

BORLAND.zip - Borland Pascal 7.0 minimalisticka verze

ATHELP.zip - Technicka dokumentace pouziteho pocitace

SYSMAN.zip - Druha takova technicka dokumentace

PCGPE.zip - Prirucka programatora her (anglicky)

Reklamy:
Kdyby se mum dostvalo manelek, jakch si zasluhuj, mli by zatracen tk ivot. Oscar Wilde