Kuinka voin piirtää pikselin moodissa 0x12(Eli 640x480x4)
Ja mielellään vielä nopeasti kaksoispuskurin kanssa..
Ympäristö olis taas kiva tietää. Jos DJGPP, lue laamatutti.
Luettu... Ei sinnä ollut mitään 0X12 Moodista.
Sovella! Kyllä Se laamatutin tiedoilla pitäis onnistua.
Hmmm... No ei nyt tule mieleen.... Tietääkö kukaan?
Sovella tosiaan.. mode12h:ssa on se täsmälleen sama näyttöbufferi siellä segmentissä 0xA000, suojatussa tilassa kun leikitään selektoreilla niin tunget niitä pikseleitä muistiin osoitteeseen 0xA0000.
Tuplabufferi onnistuu täsmälleen samoin kuin mode13h:nkin kanssa, eli malloc:illa revit vähän muistia ja sinne vaan.
Mode13h vie näyttömuistia 64000 tavua (320x200 = 64000, tavu per pikseli, joten joka pikseli voi saada 256 eri arvoa). Myös mode12h vie 64000 tavua (resoluutio 640x400, 4 bittiä per pikseli eli 16 eri arvoa pikselille). Tässä piileekin mode12h:n piirtämisen "vaikeus" --yhteen tavuun pitää tunkea kaksi pikseliä.
Ei se silti vaikeaa ole, käytät vain shiftejä (<< ja >>) ja tai-bittioperaatiota (|) hyväksesi... jätetään nyt sinullekin jotain tekemistä.. ;)
Hmmm... No ei nyt tule mieleen.... Tietääkö kukaan?
lainaus:
Sovella tosiaan.. mode12h:ssa on se täsmälleen sama näyttöbufferi siellä segmentissä 0xA000, suojatussa tilassa kun leikitään selektoreilla niin tunget niitä pikseleitä muistiin osoitteeseen 0xA0000.
Tuplabufferi onnistuu täsmälleen samoin kuin mode13h:nkin kanssa, eli malloc:illa revit vähän muistia ja sinne vaan.
Mode13h vie näyttömuistia 64000 tavua (320x200 = 64000, tavu per pikseli, joten joka pikseli voi saada 256 eri arvoa). Myös mode12h vie 64000 tavua (resoluutio 640x400, 4 bittiä per pikseli eli 16 eri arvoa pikselille). Tässä piileekin mode12h:n piirtämisen "vaikeus" --yhteen tavuun pitää tunkea kaksi pikseliä.
Ei se silti vaikeaa ole, käytät vain shiftejä (<< ja >>) ja tai-bittioperaatiota (|) hyväksesi... jätetään nyt sinullekin jotain tekemistä.. ;)
Niin no tuon tiesin jo. No kokeillaan jotain..
Fawkz puhuu kyllä hitusen soopaa, sillä mode 12h on 640x480 mode jossa on 4 bitplanea (eli 16 väriä). Pikseleitä ei piirretä tunkemalla kahta nibbleä vierekkäin byteen, vaan laittamalla halutut bitplanet päälle ja kirjoittamalla tavun, jossa jokainen bitti kuvastuu yhteen pikseliin.
Kirjoitusta varten bitplaneja voi asettaa useamman päälle yhtäaikaa, eli ko. tilassa voi siis esim. tyhjentää 8 pikseliä yhden tavun kirjoituksella. Näyttömuistista lukemista varten voidaan valita 1 bitplane kerrallaan.
Yhden halutun värisen pikselin piirto onnistuu ainakin niin, että käy jokaisen bitplanen yksitellen läpi, lukee planella olevan tavun, maskaa siitä halutun pikselin pois päältä tai päälle sen mukaan onko halutun pikselin värissä ko. bitplane päällä vai poissa, ja kirjoittaa ko. tavun takaisin muistiin. En muista oliko tähän yhtään tehokkaampaa keinoa, toisaalta josko ei olekaan niin eihän sitä yksittäisin pikselein kuitenkaan piirretä. Esim. flat-polygonien piirron voi viritellä hyvinkin nopeaksi bitplanetiloissa.
Mistä tahansa EGA/VGA referenssistä löytänee tarvittavat rekisterit noiden planejen nypläämiseen.
Oih, mutu, miksi minut petit.. ;) Kiitoksia tArzAnille valaisusta.
Mikä on EGA referenssi?
Teksti joka käsittelee EGA:aa. Google: EGA reference tjsp.
Tässä on nuo pari tärkeintä funktiota:
setreadplane: anna parametriksi arvo väliltä 0-3
void setreadplane(int plane) { outp(0x3ce, 4); outp(0x3cf, plane & 3); }
setwriteplanes: anna parametriksi arvo jonka alimmat 4 bittiä ilmaisee mitkä planet asetetaan päälle kirjoitusta varten
void setwriteplanes(int planes) { outp(0x3c4, 2); outp(0x3c5, planes); }
Nyt ei ihan tajunnut mitä noilla pitäisi tehrä?
tArzAn, oletkos sä muuten se henkilö joka teki Assemblyillä sen yhen compon erään tuotoksen.. en nyt muista mikä, mut jossakin tuotoksessa oli readmeessä tarzan. Niin oletko sama henkilö?
Muistaakseni Neuroosiverkko 43KB byt tAAt
yurtuftyyyyyyyyygfd
No voihan vahinko...
tAAthan teki myös sen porrasturvat-pelin...
tAAt=tArzAn? Vai joku tiimi johon tArzAn kuuluu?
Porrasturvat on jonku tAAt softaware tjsp. tekemä.
Joskus oli ainakin joku Tarzan tuotanto- gruuppi. Luulisin, että tAAt on kyseinen Tarzan tuotanto, mutta en ole varma.
Vaikka en pidäkään siitä että vastaillaan kysymyksiin toisten puolesta (tässä tapauksessa oikea vastaajahan olisi ollut tArzAn itse) niin:
http://www.taat.fi
Aihe on jo aika vanha, joten et voi enää vastata siihen.