Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Näyttötilan vaihtaminen ilman SCREEN:iä (QB)

Sivun loppuun

hunajavohveli [27.03.2004 14:57:16]

#

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?

pieslice [27.03.2004 20:01:49]

#

'$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)

pieslice [27.03.2004 20:03:11]

#

jos käytät edellämainittua tekniikkaa, ei mikään QB:n oma piirtofunktio toimi, vaan antaa virheilmoituksen illegal function call.

Antti Laaksonen [28.03.2004 00:38:45]

#

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%

hunajavohveli [28.03.2004 11:18:58]

#

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?

peki [28.03.2004 11:21:52]

#

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 =)

hunajavohveli [28.03.2004 11:24:29]

#

Typo huomattu ja korjattu. :)

Grey [28.03.2004 23:26:07]

#

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-

Antti Laaksonen [29.03.2004 12:38:13]

#

Mitä oikein tarkoitat? Sitäkö, että piirtokomennot toimivat, vaikka näyttötilaa ei ole vaihdettu SCREEN-komennolla?

Grey [29.03.2004 12:47:55]

#

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-

pieslice [29.03.2004 13:20:12]

#

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"?

Grey [29.03.2004 14:34:32]

#

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-

hunajavohveli [29.03.2004 20:22:23]

#

Siis mikä tuo kutsu 640*480*256 on? Eihän QB:ssä tuollaista ole, tuo on joku kirjasto vai?

Grey [29.03.2004 21:16:22]

#

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-

hunajavohveli [29.03.2004 22:12:02]

#

Joo tottahan minä tajusin, että se on 640*480 pikselin ja 256 värin tila, mutta kysyin vaan mitenkä sellaisen saa.

Grey [29.03.2004 22:30:20]

#

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-

thefox [30.03.2004 21:02:25]

#

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

Grey [30.03.2004 21:58:46]

#

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-

hunajavohveli [31.03.2004 14:25:15]

#

Ja hyvä onkin tuo 640x480, mitään vääristysresoja ei enää 320x200:n lisäksi tarvita. :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta