Tässä vinkissä esitellään QB:n nopea paletin vaihtaminen OUT käskyllä.
Näin voit myös vaihtaa yhden värin kerrallaan, ja luoda oman paletti tiedoston.
HUOM! Toimii kunnolla vain SCREEN 13!
Ensimmäinen OUT käsky on värin QB numero ja kolme seuraavaa ovat Red,Green ja Blue arvot järjestyksessä.
DIM vari AS INTEGER, c AS INTEGER DIM r AS INTEGER, g AS INTEGER, b AS INTEGER SCREEN 13 RANDOMIZE (-TIMER) DO c = c + 1 r=INT(RND*255)+1 g=INT(RND*255)+1 b=INT(RND*255)+1 OUT &H3C8, c 'Värin QB numero OUT &H3C9, r 'Värin RED arvo 0-255 OUT &H3C9, g 'Värin GREEN arvo 0-255 OUT &H3C9, b 'Värin BLUE arvo 0-255 LOOP UNTIL c = 256
Lainausmerkit tuli sitten itsestään tohon koodin, joten ne kannattaa poistaa, että toi toimii.
Nyt ne ovat poissa. Systeemissä on tunnistamaton vika, jonka vuoksi Uudet-alueella olevien vinkkien kommenttejen eteen tulee lainausmerkki. Oiva vihje muuten.
Osa täällä kävijöistä ei varmaan edes tajua, mitä toi tekee...mutta aivan sama mulle =)
Miten se minusta vain tuntuu että se värin maksimiarvo oli QB:ssä 63 tai 64.
Jos sen yli, väri menee mustaksi.
niin ne jotku väittää, mutta mulla tulee qb7.1 aina tonne 255 saakka eri värejä...Ja eihän ne 256 color giffin lataus rutiinitkaan olis mahdollisia, ellei qb tukisi 256 eri väriä samaan aikaan ruudulla (h-13).
En nyt muista sitten, että oliko qb:n vakiopaletissa vain tonne reiluun 60 asti värejä ja loput mustia, mutta kyllä niitä jokatapauksessa saa 256 ruudulle.
Sori, olin vähän sekava. Tarkoitin siis noita out-hommeleiden punaisuusarvoja jne. Niissä maksimi oli 63-64.
Värejähän qb:stä löytyy tietenkin 256 :)
Kaikissa muissa grafiikkatiloissa värejä voi olla kerrallaan korkeintaan 15 erilaista, mutta SCREEN 13:ssa maksimi on tosiaan 256.
Väreistä ja screeneistä puheen ollen herää kysymys:Miten saa jollakin muulla kuin screen 1 tai 0 :lla tekstin alla
olevan mustan värin pois.Siis että kirjoitus ei tee esim.siniseen taustaan
mustaa jälkeä kun käyttää PRINT komentoa.
Sehän onnistuu vaikka sinisellä taustalla näin:
COLOR 15,1:PRINT "Terve"
Eli COLOR -käskyssä ekana tekstin väri ja sitten taustan väri.
MAINOS: Grafiikkatiloissa kannattaa kokeilla tekemääni ohjelmaa "Print joka ei sotke taustaa"
Toi looppi on vähän persiistä kun se looppaa käytännössä 1-256 kun sen pitäis loopata 0-255. Ja r-g-b arvot pitää olla tosiaan väliltä 0-63.
Ja tosiaan, se ei QB:stä ole kiinni se värien määrä (Dj Wolf: "Värejähän qb:stä löytyy tietenkin 256 :)") vaan VGA:sta :)
Tässä ei nyt ole QB:ta käytössä tällä koneella, mutta eikö ole paljon nopeampi tapa muuttaa palettia BIOSin kautta? Muistaakseni seuraava koodi hoitaa homman:
FOR I% = 0 TO 255 P$ = P$ + CHR$(FIX(I% / 4)) NEXT I% Inregs.AX = &H1012 Inregs.BX = &H0 'Ensimmäinen väri Inregs.CX = &H100 'Monta väriä yhteensä Inregs.DX = SADD(P$) Inregs.ES = VARSEG(P$) CALL InterruptX(&H10, Inregs, Outregs) FOR I% = 0 TO 255 LINE (I%, 0)-(I%, 199), I% NEXT I%
Niin ja tietenki muista laittaa alkuun SCREEN 13 :)
Mä en oo eres tajunnu PALETTE käskyä ja tuon olis voinu teherä helepommin niin että:
FOR c = 0 TO 255 ....... NEXT
Aihe on jo aika vanha, joten et voi enää vastata siihen.