Kuten kerroin aiemmissa blogeissani Ensimmäinen 6502-konekieliohjelma tehty ja Toinen 6502 assembler-ohjelmani valmistui juuri, leikin vuoden 2017 loppuhetkinä hieman 6502 assembler-ohjelmoinnilla. Ajoin ohjelmiani emuloidussa Commodore 64 ympäristössä VICE:ssä.
En ole peliohjelmoija, joten en tiedä siitä alasta paljonkaan, mutta yritin animoida Manic Miner pelistä varastamani Miner Willy -spriten yksinkertaisesti vaihtamalla jatkuvasti sprite-pointeria. Animointi-idea oli varmaan noin periaatteessa oikea, mutta lopputulos on järkyttävää värinää ja särinää. Päivitys olisi toki pitänyt jotenkin tehdä sulavammaksi. Luultavasti sprite ensinnäkin vaihtuu liian nopeasti ja en tiedä pitäisikö ruudun päivitystä jotenkin tahdistaa suhteessa spriten päivitykseen. Demojen ohjelmoijat ja peliohjelmoijat tietävät nämä jutut Commodore 64:ssä kuten omat taskunsa - minä en tiedä.
Minun täytyy tunnustaa, että minulla ei ole riittävästi mielenkiintoa tutustua Commodore 64:n ohjelmointiin syvällisesti. Halusin lähinnä kokeilla 6502 assembleria ja katsoa saako sillä helposti aikaan jotain näkyvää. Tässä on siis se kolmas, aika kamala ohjelmani third.tar.gz. Kaivoin Manic Mineristä lisää spritedataa, jotta animointi voisi edes teoriassa toimia. Lisäksi spriten liikutuksessa on tietysti se bugi, että se ei siirry ruudun oikeaan laitaan saakka. Tämä johtuu ihan siitä, että 8-bittinen VIC-II näyttöpiirin ohjausrekisteri voi ilmaista vain arvot väliltä 0-255. Jos spriteä haluaa siirtää koko 320 pikselin verran oikealle, pitäisi hyödyntää yhtä ylimääräistä eli yhdeksättä bittiä toisesta rekisteristä. Se ei olisi ollut ollenkaan vaikeaa, mutta en jaksanut nyt alkaa siihen puuhaan.
Olen tyytyväinen korkeamman tason kieliin ja viihdyn oikein hyvin Linuxissa C-koodin parissa. Se on riittävän tehokasta ja kuitenkin melko hyvin siirrettävää eri ympäristöjen välillä. Ymmärrän silti niitäkin, jotka harrastusmielessä haluavat esimerkiksi koodata demoja C64:lle assemblerilla. Kukapa sitä kieltäisikään? Tottakai C64:n rauta on jo vanhentunutta ja se on alkeellista nykymittapuulla mitattuna, mutta se tarjoaa silti haasteita ohjelmoijille ja on mielenkiintoista puuhaa jos viitsii paneutua siihen. Jotkut koodaavat jopa Commodore VIC-20:lle ja kieltäytyvät käyttämästä edes 16KB lisämuistia! He haluavat tehdä demonsa 4KB RAM-muistiin. Minulla ei ole kertakaikkiaan riittävästi aikaa sellaiseen puuhaan. Se vaatisi valtavan vaivannäön perehtyä noiden koneiden saloihin ja tiedosta ei olisi oikeastaan paljonkaan hyötyä missään. Onneksi korkeamman tason kielillä tehtyjä ohjelmistopaketteja on Linuxissa paljon ja niissä riittää minulle tutkittavaa.