Space Invaders este un joc arcade clasic , creat in 1986 de catre Tomohiro Nishikado si ca orice joc foare popular a fost clonat pe foarte multe platforme inclusiv Nokia 3310(sub numele de SpaceImpact).Fiind jocul meu preferat de pe acea platforma am decis in clasa a X-a sa imi creez propriul joc bazat pe Space Impact scris in C++ folosind biblioteca Graphica de la Borland.Mi s-a parut interesanta ideea de a porta implementarea mea de SpaceImpact pentru Atmega16 fiind foarte “back to basics” avand posibilitatea sa folosesc un ecran LCD de la un telefon Nokia 3310(LCD PCD8544) precum originalul.
Sccenariul jocului este de tip “Last Man Standing”, obiectivul fiind pilotarea navei protagonistului prin diverse nivele evitand obstacolele si inamicii.
Jucatorul are la dispozitie 4 butoane directionale asezate sub forma WASD,un buton de “Fire”(Q) prin care actioneaza arma principala a navei si un buton de “Power-Up”(E)
pentru activarea bonus crate-urilor gasite pe parcursul nivelului.
Pentru alimentarea LCD-ului am folosit un divizor de tensiune cu rezistente de 3.3k si 1.7k
Proiectul a fost realizat in mare parte in Isis datorita unor probleme legate de conectarea LCD-ului.
Lista de piese
1)Ecran LCD PCD8544 cu 48×84 pixeli
2)1 condensator de 10 μF
3)6 push-buttons
4)2 diode 1n4007
5)5 rezistente de 3k3
6)5 rezistente de 1k8
Proiectul a fost realizat pe o masina ruland Windows 7 folosind ca mediu de dezvoltare Notepad++ si a fost compilat cu AvrGCC.
Pentru interfatarea cu LCD-ul am folosit driverul din Sectiunea Resurse care s-a dovedit satisfacator desi mi-ar fi fost de folos un API grafic mai performant si anume niste functii pentru a genera elipse.
Pentru butoane am activat pull-ups in microcontroller si am verificat configuratia portului C pentru a stabili ce buton s-a apasat.Datorita lipsei de timp proiectul nu are implementata toata functionalitatea avuta in vedere initial.(posibilitatea controlarii Navei cu butoane virtuale de pe un iPhone,comunicatia realizandu-se prin intermediul protocolului OSC)
Eceptand lipsa timpului necesar unei implementari complete,memoria de doar 16KB este o limitare greu de depasit uC(implementarea unei zone de swap folosind un cardSD mi se pare singura varianta viabila) si o piedica in atingerea complexitatii programului original. Totusi proiectul a fost foarte interesant desi a avut unele parti challenging si e un prim pas spre realizarea altor proiecte personale asemanatoare.