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?
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.
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ä. ;)
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/
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
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.
Miksi taustagrafiikka pitäisi tehdä merkkejä määrittelemällä?
Aihe on jo aika vanha, joten et voi enää vastata siihen.