Screen 7 kuvanpakkauksen olen jo saanut selville.
Yksi muistipaikka on siis 8x1 pikseliä ja pikseleitä piirretään muistipaikan arvosta otetun binääriluvun mukaan ("11111111"=kaikki pikselit valkoisina, "00000000"=kaikki pikselit mustia)
Mutta tietääkö kukaan, miten pikselien värit määritellään?
Siis hypistelet muistia suoraan? Olettaisin että siinä on 4 tasoa ja kukin alkaa peräkkäisistä muistiosoitteista. Pika-arvauksella seuraava taso on 8000 tavua suuremmassa osoitteessa. Tai sitten 8192..
Voisitko antaa jonkin esimerkin? Itse en saanut toimimaan.
Itseasiassa värin määritys ei mene tuollain muistipaikan mukaan, vaan se täytyy säätää porttien kautta. Kutakuinkin alla olevan esimerkin mukaisesti:
DEFINT A-Z 'also download http://www.ocf.berkeley.edu/~horie/bitplane.bas 'for a more useful SCREEN 7-12 pixel plotting code (using OUT and POKE) 'this is the fastest version of my EGA direct output program in QBASIC. 'of course it's slow, but hack it all you want, and enjoy. Provided by TRS. SCREEN 7: DEF SEG = &HA000: 'set EGA video segment OUT &H3CE, 5: OUT &H3CF, 0: 'EGA write mode 0 t1# = TIMER FOR S = 0 TO 4000 - 1 '-------------------main loop------------------- OUT &H3C4, 2: OUT &H3C5, 1: 'plane 1, BLUE POKE S, 512: 'write dots OUT &H3C4, 2: OUT &H3C5, 2: 'plane 1, GREEN POKE S, 512: 'write dots OUT &H3C4, 2: OUT &H3C5, 4: 'plane 1, RED POKE S, 512: 'write dots OUT &H3C4, 2: OUT &H3C5, 8: 'plane 1, INTENSITY POKE S, 255: 'write dots IF INKEY$ > "" THEN STOP '-------------------------------------------- NEXT S OUT &H3C4, &H2: OUT &H3C5, &HF: 'reset t2# = TIMER - t1# LOCATE 1, 1: PRINT USING "Time to fill EGA screen: ####.##s"; t2# END
-Grey-
Ok, nyt pitää vain opetella käyttämään tuota. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.