„Az összevisszaságban találd meg az egyszerűséget, a hangzavarban a harmóniát...”

A C64 assembly csodás világa

Assembly forráskódFiatal koromban folyton a Commodore 64 számítógéphez kapott könyveket bújtam. A BASIC nyelvet hamar elsajátítottam, köszönhetően az olyan remekműveknek, mint a Hetedhét. De elég hamar világossá vált bennem az, hogy csak ezzel az eszközzel a kezemben nem fogok tudni elkészíteni olyan játékokat, mint amikkel akkoriban játszottunk. A megoldás a gépközelibb programozás lett volna, ám akárhogy nézegettem a teljesen más gondolkodásmódot igénylő hárombetűs szavakból álló assembly katyvaszt, 10 évesen képtelen voltam megemészteni azt. Viszont mindig is érdekelt, így megtanulásának csak az időpontja volt kérdéses számomra. Ez az idő most érkezett el.

Nemrég Rihárdó megkeresett egy régóta dédelgetett játékötletével. Leírta, hogy mit szeretne, én közöltem vele hogy persze, minden megvalósítható, de naponta keresnek meg ilyen ötletekkel, és ez önmagában mit sem ér. Az eddigi munkáim alapján úgy gondoltam, biztos valami webes stuffot akar, de kiderült, hogy az öreg vasra, az eredeti C64 gépre álmodta meg ezt a játékot. Mi van?? Játékfejlesztés Commodore 64-re 2013-ban? Rengeteg időt igényel, meg kellene hozzá tanulni az assemblyt, anyagi haszna nulla, a dolog értelmét is meg lehetne kérdőjelezni... Egyszóval ezt a feladatot egyenesen nekem találták ki! :)

kiszivárogtatott kép a készülő játékrólSzóval igen, készül egy játék C64-re, a játékhoz a kreatív matériát Rihárdó szolgáltatja, én pedig a csontszáraz bitmunkálatokat végzem. A mellékelt képen a Krissz stúdióból illegálisan kiszivárogtatott ingame jelenetet látsz, amiből levehető, hogy egy felülnézetes, kétszemélyes, autós, versenyzős játékról van szó.

A fejlesztéshez a CBM .prg Studio alkalmazást használjuk mindketten. Roppant hasznos, rengeteg segítséget nyújt, és nem csak a programozásban. A spriteokat, a karakter bitmintákat, a képernyőterveket, mind el lehet vele készíteni. Sok apró okosság van benne, ami megkönnyíti a fejlesztő életét. Érződik, hogy a készítő maga is használja a művét, és tudja, hogy milyen igények merülnek fel a C64 programozása közben. A kapott eredményt emulátorban futtatom, de a kész művet jó lenne majd valahogy az eredeti gépen, a floppy meghajtó kattogásának meghitt hangulata mellett is megtekinteni, de az még odébb van.

A kód 100% assembly. Amit szeretnék ezzel az írással üzenni, az az, hogy sosem késő valamit megtanulni. Olyan ez, mint a szerepjátékok. Az elején még gyorsan lépsz szinteket, és ez nagy kezdeti lökést ad. Mint mindenben, a programozásban is annyira leszel jó, amennyi időt hajlandó vagy rászánni. Én jelenleg a szabadidőm nagy részét erre áldozom, és nagyon élvezem. Valódi sikerélményt ad. A napokban volt olyan probléma, amivel úgy 5 órán át küzdöttem, és egyetlen bit (nem bájt, bit!) volt a ludas. Én eddig is az alapos előre eltervezés híve voltam a programozásban, de az assembly ezt most még jobban megköveteli. Ehhez még hozzájön a szűkös memória és a hardver technológiai korlátaiból fakadó egyéb megkötések. Csak akkor szabad kódolni, ha már teljesen tisztában vagy azzal, hogy mit és hogyan szeretnél, különben rengeteg idő veszhet kárba. Sebaj, így még többet lehet sétálni. :)

Ha valaha is kacérkodtál a gondolattal hogy megtanuld ezt a gyönyörű nyelvet, szerintem ne habozz. Találj ki valamit, akár egy kis játékot, és valósítsd meg. Csak arra kérlek, hogy a mai "programozói" szemléletet tedd félre kicsit, vagyis hogy ha valamit nem tudsz, akkor azzal kezded hogy beírod a keresőbe. Szomorúan tapasztalom, hogy a problémamegoldás manapság annyiból áll, hogy:

probléma -> google -> stackoverflow -> copy/paste

Közlöm veled, hogy ez a módszer kizárólag arra jó, hogy elfelejts gondolkodni. Ami tudom, hogy manapság nem is divat, de hidd el, ha saját magad jössz rá dolgokra, főként a vétett hibáid révén, annál jobb tanulási módszer nincs. Én egy hajnalba nyúló többórás bitvadászat végén egy életre megtanultam, hogy ADC előtt CLC. :)

a játék irányított karaktereiAmint lesz játszható demó, azt közölni fogom, de addig még párszor biztosan lefut az assembler, a neheze most következik. Egy csomó olyan feladat vár még rám, amiről fogalmam sincs, hogy hogyan fogom megoldani, ennek ellenére biztos vagyok benne hogy sikerül. Ettől szép.