Eli ruutu vaihdetaan mustaksi ja sitten siitä tehdään palettia käyttäen värillinen. Ohjelmaa saa käyttää vapaasti
TYPE varit r AS INTEGER g AS INTEGER b AS INTEGER END TYPE DIM vari(0 TO 255) AS varit SCREEN 13 ' ympyröitä RANDOMIZE TIMER FOR i = 1 TO 500 CIRCLE (INT(RND * 319), INT(RND * 199)), INT(RND * 10), 16 + INT(RND * 255) NEXT COLOR 4: PRINT "toimii!" ' itse ohjelma FOR lue = 0 TO 255 ' luetaan väri OUT (&H3C7), lue vari(lue).r = INP(&H3C9): vari(lue).g = INP(&H3C9): vari(lue).b = INP(&H3C9) ' vaihdetaan mustaksi OUT (&H3C8), lue OUT (&H3C9), 0: OUT (&H3C9), 0: OUT (&H3C9), 0 NEXT FOR kerta = 0 TO 63 FOR v = 0 TO 255 ' luetaan väri OUT (&H3C7), v r = INP(&H3C9): g = INP(&H3C9): b = INP(&H3C9) ' lisätään arvoja IF NOT r = vari(v).r THEN r = r + 1 IF NOT g = vari(v).g THEN g = g + 1 IF NOT b = vari(v).b THEN b = b + 1 ' tallennetaan väri OUT (&H3C8), v OUT (&H3C9), r OUT (&H3C9), g OUT (&H3C9), b NEXT ' viive a = TIMER DO: LOOP UNTIL TIMER - a > .1 NEXT
kommentteja..
tuollaiset "kommentteja kiitos" kommentit ovat aivan turhia, kyllä ihmiset osaa ilman niitäkin kommentoida koodivinkkejä
Ihan OK esimerkki. Ehkä parempi tapa olisi pitää koko paletti taulukossa. Sitten loopissa odottaa vsynciä, ja kirjoittaa koko paletin kerralla. Vsync vähentää tuota "lumisadetta" jota voi esiintyä kun palettiin kirjoitellaan milloin sattuu.
hmm.. sillai olisi tosiaan voinut tehdä..
Hyvä, kunhan vielä itse tajuaisin tuon... :)
Onnistuisko tuo sama assembyllä Out komennolla?
KemXy, jep. out:ille ei btw immediatena voi indeksoida noin suuria portteja, vaan pitää: "mov dx, 3c9h :: out dx, al" tai vastaavaa.
Tästä onkin hyötyä...
edit (2 vuotta myöhemmin ;) ): Tein tuosta vielä semmoisen, että kuva himmennetään takaisin mustaks.
Aihe on jo aika vanha, joten et voi enää vastata siihen.