T[ss[ floppiksen numerossa on uusi ohjelma, jolla voit muuttaa Commodoren m[[ritelemi[ merkkej[ mieleiseksesi. Varsin usein merkkej[ muunnellaan vain erin[k\isiksi aakkosiksi, jos niit[ sit-ten viitsit[[n muunnella ollenkaan... T[m[ on kuitenkin hyvin rajoittunutta k[ytt\[, sill[ kuten arvata saattaa, on muunnelluilla merkeill[ tuhat ja yksi k[ytt\[. T[m[ artikkeli on tarkoitettu niille, joille koko prosessi on viel[ hieman ep[selv[ ja jotka ovat kiinnostu-neita siit[, miten saavat omiin ohjel- miinsa v[h[ll[ vaivalla uutta ulkon]k\[.
Todella yksinkertaisesti sanottuna koko homman idea on seuraava: Normaalis-ti 64 ottaa merkkien hahmot ROMista, mutta ei ole mit[[nn estett[ sille, etteik\ niit[ voitaisi ottaa RAMista. ROMia et pysty kopeloimaan, mutta RAM- muisti on sit[ muistia, mit[ yleens[kin k[yt[t. Sinun tarvitsee vain asettaa RAM-muistiin uudet muodot kirjaimille jagrafiikkamerkeille ja sitten kertoa VIC-II -lastulle, ett[ t[st[ l[htien merkkien muodot haetaan sielt[ eik[ ROMista.
Kun 64 n[ytt[[ merkkej[ kuvaruudul-la, sen on haettava merkin muoto ja sen v[ri. T[t[ tehd[[n jatkuvasti, joten onmahdollista muuttaa yhden merkin hahmoa muistissa ja kaikki ruudulla olevat sa- mat merkit muuttavat muotoa silm[nr[p[- yksess[. T[ll[ saadaan aikaan esim. liukuhihnan liikkuminen joissakin pe- leiss[.
Merkeill[ voidaan saada siis ani- maatiota aikaiseksi, mutta sen k[ytt\ siihen on parasta rajoittaa taustan muuttamiseen, sill[ spritet ovat paljon k[tev[mpi[ liikuteltavia ymp[ri kuva- ruutua. Merkeill[ voidaan my\s tehd[ upeita taustoja ohjelmiin. Tarkkuus- grafiikka on hienoa, mutta muotoilluillamerkeill[ voidaan rakentaa legopalikoi- den tapaan yh[ uusia huoneita tai maise-mia. T[st[ esimerkkin[ joystick-adven- turet, joissa on jotain 700 huonetta taisinnep[in. Voit tehd[ vaikkapa a:sta tiilen vasemman puolikkaan ja b:st[ sen oikean puolikkaan ja c:st[ oven jne...
Huomaa, ett[ omat merkit viev[t basic-ohjelmointitilaa ja sinun on syyt[vaikkapa nostaa basicin alkua yl\sp[in, jotta basic-ohjelmasi ei mene tekemiesi merkkien p[[lle ja pilaa niit[. Muistinalarajaa nostat pokeamalla osoitteisiin 43-44 uuden alarajan. Esim. POKE 44,64:POKE 43,0 muuttaa basicin alun osoittee-seen 16384. Nyt voit siirt[[ omat merk-kisi esim. osoitteeseen 12288. T[ll\in olisi muistissa roinaa seuraavasti: 2048-12287 tyhj[[ tilaa, jota ei voi k[ytt[[ basic-ohjelmointiin. T[nne voitlaittaa sprite-hahmoja (sprite-numerot v[lilt[ 32 - 191). 12288-16383 uudet merkit. 16384... basic-ohjelmaa.
Jos ohjelmoit konekielell[, ei si- nulla ole mit[[n ongelmia em. asian suh-teen, mutta noin muuten hommaa kyll[ riitt[[...
2 POKE 56334,PEEK(56334)AND254:rem sul- jetaan Keyscan Interrupt Timer, jotta k[ytt[j[ ei voi siirron aikana h[irit[ sit[ painelemalla nappuloita
3 POKE1,PEEK(1)AND251:rem I/O:t pois ja merkkien ROM-hahmot tilalle
4 FORI=0TO4096:POKE12288+I,PEEK(53248+I):NEXT:rem 53248:ssa on rivi 3:n suorituksen j[lkeen merkkien hahmot ja ne t[ytyysiirt[[ sielt[ v[lille 12288-16383 eli niit[ on 4 kilon verran
5 POKE1,PEEK(1)OR4:rem palautetaan I/O- rutiinit aktiiviseksi, mik[ mahdollistaanormaalin toiminnan
6 POKE56334,PEEK(56334)OR1:rem palaute- taan rivill[ 2 estetty vektori toimi- maan, jolloin kone taas reagoi kirjoi- tukseesi
7 POKE 53272,(PEEK(53272)AND240)+12:rem t[m[ sitten kertoo 64:lle sen, ett[ merkkien hahmot haetaan nyt RAMista
8 END:rem ei kai tartte selitt[[...
No niin. Paljon tapahtui, mutta mit[[n ei n[y tapahtuneen... No, ei kai,kun viel[ tarttis muuttaa ne merkit uu- denn[k\isiksi, jotta tyhminkin meist[ huomaisi, ett[ jotain outoa on tekeill[.
Jokainen merkki muodostuu 8 numero-sta. Jokainen numero on v[lilt[ 0-255. Esim. kirjain A:n numerot lasketaan seu-raavasti:
Tarkkasilm[isimm[t ehk[ huomasivat,ett[ bin[[rilukuun laitetaan nolla tyh- j[[n kohtaan merkki[ ja ykk\nen siihen, mihin halutaan jotain n[kym[[n. Bin[[- riluku muutetaan desimaaliseksi seuraa- vasti: Otetaan oikeanpuolimmaisin luku rivilt[ ja, jos siin[ on ykk\nen, lis[- t[[n loppusummaan tulos laskusta: kaksi potenssiin nolla ( = 1), sitten seuraavakohta rivi[ ment[ess[ oikealta vasemmal-le: jos siin[ on 1, niin lis[[ loppusum-maan 2^1, seuraava kohta: jos on ykk\- nen, niin lis[[ 2^2 jne... Siis jos va- semmanpuoleisin kohta vaakarivi[ on yk- k\nen, niin lis[[ loppusummaan 2^7. Loppusumma on nyt v[lill[ 0-255 (onhan?)ja yht[ merkki[ kohti on 8 rivi[ ja 8 loppusummaa. N[ist[ 8 luvusta muodostuulopulta yksi merkki. Sitten POKEat mu- istiin nuo kahdeksan lukua oikealle pai-kalle. Oikean paikan saat kaavasta (em. ohjelman ajon j[lkeen) 12288+(DISP-LAY CODE). Display code on a:lle 1, b:lle 2 jne...(katso tarkemmin esim. Prog.ref.guide liite B). Seuraava oh- jelma pokeaa yhden merkin numerot oike- alle paikalle:
10 FOR I= (paikka) TO (paikka)+7:READ A:POKEI,A[NEXT
20 DATA 255,255,255,255,255,255,255,255
Em. ohjelma laittaa osoitteeseen (paikka) t[yden neli\n. Sill[lailla jatketaan sitten, kunnes kaikki halutta-vat merkit on l[pik[yty. Hankalaa, mut-ta onneksi on toisaalla Floppiksessa Merkki-maker, eik[ tarvitse laskeskella bittej[...