ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄ¿ Ù -Ä-[ VGA ohjelmointi ]Ä-- À ¿ -Ä-[ perus asiat ]Ä-- Ú ÀÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ -Ä- OSA 1 Ä-- T„m„ on ensimm„isen osan korjattu versio. Vanhassa 1 osaasa oli niin jumalattomasti virheit„, jotka olen nyt korjannut. Olen my”s lis„nnyt muutamia asioita. Siis nyt se alkaa... Hei! T„ss„ se sitten j„lleen tulee. Aloitamme VGA ohjelmoinnin oppaan ottaen esiin perusk„sitteit„. Niihin kuuluvat MCGA tilan k„ynnist„mien ja pikselien piirt„minen. Joka osassa on pieni esimerkki ohjelma, joka sis„lt„„ kaiken sen mit„ olemme siihen asti oppineet. ------------------------------------------------------------------------------ -Ä-[ MCGA tila ]Ä-- Turbo Pascal 7.0:n mukana tulevat BGI ajurit on ensimm„inen asia, jotka pit„„ unohtaa, sill„ ne ovat yksinkertaisesti niin huonoja ett„ hitaita. Siis melkein heti tulee mieleen kysymys: miten saada MCGA tila ilman BGI ajureita? Ja vastaus „skeiseen kysymykseen on seuraava: tietenkin Assembler kielel- l„. Koska Assembler kieli on periaatteessa keskitasoa nopeampi ohjel- mointi kieli, niin t„m„ kieli k„y ihan sopivasti MCGA tilan ohjel- mointiin. MCGA tai 13h tila (320x200x256), johon mahtuu 64000 pikseli„ (320x200) ja samaan aikaan 256 v„ri„, on aika yleinen n„ytt” tila ohjelmoitaessa erilaisia grafiisia ohjelmia, kuten pelej„, demoa yms. Juuri mainitulla tilalla 13h on oma paikka muistissa, joka yleisimmiss„ tapauksissa on $A000. Muilla n„ytt” tiloilla on luonnollisesti eri osoite (mm. teksti-tila $B800). Siis t„ss„ on tarvittava ohjelma MCGA tilan k„ynnist„miseen: ÄÄÄÄÄÄÄPOIKKI!ÄÄÄÄÄÄÄÄÄÄÄÄPOIKKI!ÄÄÄÄÄÄÄÄÄÄÄÄPOIKKI!ÄÄÄÄÄÄÄÄÄÄÄÄPOIKKI!ÄÄÄÄÄÄÄ Program MCGA_tila; Uses Crt; Procedure Video(Tila : Byte); Assembler; { Meid„n proseduuri } Asm MOV AH,00 MOV AL,Tila INT 10H End; Begin Video($13); { Asettaa n„yt”n MCGA tilaan } Delay(5000); { Odotta 5 sekuntia } Video($3); { Asettaa n„yt”n teksti tilaan } End. ÄÄÄÄÄÄÄPOIKKI!ÄÄÄÄÄÄÄÄÄÄÄÄPOIKKI!ÄÄÄÄÄÄÄÄÄÄÄÄPOIKKI!ÄÄÄÄÄÄÄÄÄÄÄÄPOIKKI!ÄÄÄÄÄÄÄ ------------------------------------------------------------------------------ -Ä-[ pikselin piirt„minen ]Ä-- Pikselin piirt„minen MCGA tilaan on odotettua helpompaa kuin ehk„ itse luulet. Nimitt„in se tapahtuu k„ytt„en jo mainittua VGA rekisteri„ ($A000). V„ri, jolla piirret„„n / / Mem[$A000:5]:=1; ³ ³ Osoite \ (VGA) Kohta josta aloitetaan. Esim 319 pirt„„ pikselin ruudun p„„h„n. 1 2 3 4 5 6 7 8 9... ÚÄÂÄÂÄÂÄÂÜÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄ¿ Jokainen ruutu vastaa yht„ ÃÄÅÄÅÄÅÄÅßÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ´ pikseli„. Siis n„in tapahtuu ÃÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ´ komennolla Mem[$A000:5]:=1 ÃÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ´ yksinkertaista, vai mit„? ÃÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ´ ÃÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ´ ÃÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ´ ÃÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ´ ÀÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÙ Siis esimerkiksi Mem[$A000:50] := 26 piirt„„ pikselin 50 pikselin p„„h„n ensimm„isest„ rivist„ v„rill„ 26. Yksinkertaista? ------------------------------------------------------------------------------ T„m„ ensimm„inen osa ei nyt viel„ ollut mik„„n kiinnostava, mutta kunhan p„„semme eteenp„in... Seuraava osa, joka ilmestyy joskus 3-10.11.1995, k„sittelee virtuaali- n„ytt”„ ja spritej„. Anteeksi kaikki mahdolliset virheet. - Acro (Atte)