Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: Taustagrafiikka

KemXy [25.06.2003 10:31:51]

#

Eräissä MikroBiteissä(1985/1986) on peliohjelmointikursseja, jossa kerrottiin mm. taustagrafiikan toteuttamisesta. Taustat olivat toteutettu uudelleenmäärittelemällä vakiomerkistö. Tällöin oli helppo toteuttaa taustat tulostamalla merkkejä näytölle.

Oliskiko tämmöinen mahdollista nykyään?

thefox [25.06.2003 15:03:52]

#

Olivatkohan nuo MB:n kurssit mille koneelle? PC:lle?

Ainakin DOS:issa tuollainen on toki mahdollinen toteuttaa, mutta hyödyllisyydestä en osaa sanoa. Itse en tiedä miten vakiomerkistön uudelleenmääritteleminen hoituu, mutta Google tietänee.

KemXy [26.06.2003 10:41:47]

#

Kurssit olivat lähinnä C64:lle. Sen hyödillisyys perustui siihen, että näyttöä pystyttiin vierittämään helposti vaihtamalla jossain osoitteessa(en nyt muista) olevan tavun bittejä. Erikseen olivat myös spritet joiden käyttö oli ilmeisesti kohtalaisen helppoa. Muuten ihan mielenkiintoisia juttuja noinkin vanhoissa lehdissä. ;)

Antti Laaksonen [26.06.2003 18:22:57]

#

lainaus:

Oliskiko tämmöinen mahdollista nykyään?

Onnistuu keskeytyksen 10h kautta, kun AH on 11h ja AL on 10h. Fontti on tallennettu muistiin niin, että yksi bitti vastaa yhtä pikseliä. Lisätietoa keskeytyksen parametreista löytyy tuolta:

http://members.tripod.com/~oldboard/assembly/int_10-11.html

Tässä on QBasic-ohjelma, joka vaihtaa tekstitilassa merkin A kokonaan toisenlaiseksi. Ohjelma toimii ainakin QuickBasic 7.1:lla, kunhan QB käynnistetään /L-vivun kanssa. Jos kokeilet ohjelmaa Windowsissa, siirrä QB kokoruututilaan (Alt+Enter) ennen ohjelman ajamista; ikkunassa fontin vaihtaminen ei onnistu.

'oletusmuuttujatyyppi INTEGER
DEFINT A-Z

'rekisterityyppi
TYPE RegTypeX
	 AX AS INTEGER
	 BX AS INTEGER
	 CX AS INTEGER
	 DX AS INTEGER
	 BP AS INTEGER
	 SI AS INTEGER
	 DI AS INTEGER
	 FLAGS AS INTEGER
	 DS AS INTEGER
	 ES AS INTEGER
END TYPE

'taulukko fonttidatalle
DIM merkki(1 TO 8) AS STRING * 1
'muuttuja rekistereille
DIM i AS RegTypeX

'näytön leveys 80 merkkiä, korkeus 50 merkkiä
WIDTH 80, 50

'luetaan fonttidata taulukkoon
FOR j = 1 TO 8
	READ m
	merkki(j) = CHR$(m)
NEXT

'määritetään keskeytyksen rekisterit:
i.AX = &H1110             'keskeytyksen toiminto
i.BX = &H800              '8 = fontin korkeus
i.CX = 1                  'muutettavien merkki määrä
i.DX = 65                 'ensimmäinen muutettava merkki (A = 65)
i.ES = VARSEG(merkki(1))  'fonttidatan muistisegmentti
i.BP = VARPTR(merkki(1))  'fonttidatan muistiosoite

'kutsutaan keskeytystä
CALL InterruptX(&H10, i, i)

'tyhjennetään näyttö
CLS
'tulostetaan tekstiä, jossa näkyy muuttunut merkki
PRINT "Jopas jotakin, A on muuttunut!"

'fonttidata:
'
'2-järj.    10-järj.
'-------------------
'00000000 = 0
'00010000 = 16
'00011000 = 24
'00011000 = 24
'10010100 = 148
'10011100 = 156
'01010010 = 82
'00100001 = 33

DATA 0,16,24,24,148,156,82,33

KemXy [27.06.2003 09:53:33]

#

Kyllähän tuo toimii, mutta noista ei taida saada monivärisiä, kun on kyse biteistä. Ja anteeksi väärä tieto: Ne peliohjelmointikurssit olivatkin 1987 vuoden lehdissä kun tarkistin.

tejeez [22.07.2003 21:01:16]

#

Miksi taustagrafiikka pitäisi tehdä merkkejä määrittelemällä?

Vastaus

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

Tietoa sivustosta