Tietääkö kukaan, onko QB:n näyttötilaa mahdollista vaihtaa käyttämättä SCREEN-käskyä? Kun kerran pikseleitäkin voi piirtää ja palauttaa OUT:lla ja INP:llä niin saisiko niillä vaikutettua jotenkin näyttötilaan, tai jos ei saa, niin voi voiko niillä jotenkin edes palauttaa sen hetkisen näyttötilan numeron?
'$include:'qb.bi'
dim shared reg as regtype
reg.ax = &h13
'(13h vga. tarkasta jostain vanhasta oppaasta mikä numero = näyttötila)
call InterruptX(&H10, reg, reg)
sleep ' oota keypressiä, esmes
reg.ax = &h3 'tekstitila
call InterruptX(&H10, reg, reg)
jos käytät edellämainittua tekniikkaa, ei mikään QB:n oma piirtofunktio toimi, vaan antaa virheilmoituksen illegal function call.
Näyttötilan selvittäminen on helppo juttu, sillä tieto siitä on tallennettu muistiin kohtaan 40:49h. Näyttötilojen numerointi ei ole ihan sama kuin QBasicissa, mutta kokeilemalla homma selkenee.
DEF SEG = &H40 tila% = PEEK(&H49) PRINT "Näyttötila on"; tila%
Tuo ei varmaankaan toimi toisin päin:
DEF SEG = &H40 POKE &H49, 13
Vai voisiko se toimia...?
Edit: Mietin justiin uskaltaako kokeilla, kun eikös nuo voi aiheuttaa jotain sekavaa koneelle?
En QB:tä kyllä osaa, mutta eikö tuon pitäisi olla
DEF SEG = &H40 POKE &H49, 13
tuo hunajavohvelin koodi kun viittaisi osoitteeseen 40:40h
40:49h:n sijaan. =)
edit: hunajavohveli ehti näköjään jo korjata =)
Typo huomattu ja korjattu. :)
Taidanpa tässä samassa aiheessa kysyä sitä että miten QB:n omat piirtofunktiot saa toimimaan tuolla tapaa? Siis, sen omat, ei mitään kutsuhommia. Uskoisin siihen olevan keinonsa, kunhan vain tietää mitä kohtaa muistista muuttaa, tai jotain..
-Grey-
Mitä oikein tarkoitat? Sitäkö, että piirtokomennot toimivat, vaikka näyttötilaa ei ole vaihdettu SCREEN-komennolla?
Antti Laaksonen kirjoitti:
Mitä oikein tarkoitat? Sitäkö, että piirtokomennot toimivat, vaikka näyttötilaa ei ole vaihdettu SCREEN-komennolla?
Niin, ilman että käyttää QB:n omaa tapaa vaihtaa näyttötilaa. Uskoisin siihenkin olevan keinonsa. Ainakin sen kokeen perusteella kun kerran vaihdoin näyttötilan kutsuilla 640x480x256 ja sitten laitoin SCREEN 13. Koska QB:n omat tulostus- ja piirtofunktiot ottivat käyttöönsä tuolla kikalla vain 1/4 näytöstä, päättelin siitä että QB laittaa jotakin omia systeemejään päälle että se tietää mikä grafiikkatila on ja miten iso siinä on piirtoalue. Tai jotakin..
-Grey-
näinhän se on.
QB aiheisilla sivulla kuten http://www.qbasicnews.com on mainittu systeemi nimeltä SetVideoSeg, jolla voi asettaa sen muistiosoitteen mihin QB:n piirtofunktiot menee.
täällä saadaam mm. tuplapuskurointi tai, se että voit päivittää koko ruudun tossa 640x480x256 tilassasi, siten että osoitat jokaisen neljänneksen erikseen ja piirrät ne. vissiinkin.
onko toi 640x480x256 joku chained-mode VGA? onko se "standardi"?
pieslice kirjoitti:
QB aiheisilla sivulla kuten http://www.qbasicnews.com on mainittu systeemi nimeltä SetVideoSeg, jolla voi asettaa sen muistiosoitteen mihin QB:n piirtofunktiot menee.
Niin, vaan missäkö tuo systeemi on noilal sivuilla? Etsin tunnin, mutta eipä sattunut silmään mitään siihen viittaavaa. Joskin, eivätpä nuo sivut mitkään selvät ole. Ainakaan minulle..
-Grey-
Siis mikä tuo kutsu 640*480*256 on? Eihän QB:ssä tuollaista ole, tuo on joku kirjasto vai?
hunajavohveli kirjoitti:
Siis mikä tuo kutsu 640*480*256 on? Eihän QB:ssä tuollaista ole, tuo on joku kirjasto vai?
640x480x256, näyttötila resoluutiolla 640x480 ja 256 värillä. Jonkin sortin SVGA-tila, luulisin. Selittäköön joku viisaampi tarkemmin. Minulle kun riittää että tiedän tuon tilan toimivan.
-Grey-
Joo tottahan minä tajusin, että se on 640*480 pikselin ja 256 värin tila, mutta kysyin vaan mitenkä sellaisen saa.
hunajavohveli kirjoitti:
mutta kysyin vaan mitenkä sellaisen saa.
Etsi jostain SVGA-esimerkkejä. Esim. putkassa on ainakin muutama osoite, jos hakua jaksat käyttää ;-) Taikka katso joitain QB-aiheisia sivuja. Mitään alikirjastoja ei tarvita. Ainoastaan oikeat kutsut oikeisiin keskeytyksiin. Tai jotain..
-Grey-
Kappas vaan, joku sitten olikin jo vääntänyt sellaisen 'SetVideoSeg':n -- sellainen on itselläkin ollut tarkoitus värkätä jo pidemmän aikaa. Tuo toteutus näkyykin olevan hieman purkkamainen... ehkä joskus voisi itse viritellä paremman version :-)
Ettei se vaan olisi 640x400 256:lla värillä jota Grey tarkoittaa? PCGPE kutsuu sitä 'Xtended moodiksi': http://www.gamers.org/dEngine/rsc/pcgpe-1.0/xtended.txt
Itseasiassa, puhuin 640x480x256, mutta unohdin että 320x200x256 ei ole siitä aivan 1/4. Ihan pikkuvirhe vain.. Kuitenkin, missä se SetVideoSeg tuolla sivulla oikein, tai miten se edes toteutetaan. Voisi olla tulevaisuudessa sille tarvetta..
-Grey-
Ja hyvä onkin tuo 640x480, mitään vääristysresoja ei enää 320x200:n lisäksi tarvita. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.