Andrei-Alexandru APOSTOAE (66838) - Mario minimalist

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul reprezinta implementare a jocului Super Mario Bros pe un LCD. Scopul sau e de a ne aduce aminte de poate cel mai cunoscut si vandut joc clasic din istorie.

Descriere generală

Deoarece displayul va avea rezolutie mai mica si va fi monocolor, proiectul este doar o replica a jocului original, dar contine majoritatea functionalitatilor pe care acesta il avea:

  • controlul caracterului principal
    • stanga
    • dreapta
    • saritura
  • platforme solide
  • platforme cu bonus
  • tevi (pipes)
  • coinuri
  • vieti
  • inamici
  • coliziuni
    • player - platforme
    • player - inamic
    • inamici - platforme (trasee hardcodate pentru fiecare inamic)
  • miscare accelerata
  • muzica
    • main theme
    • death
    • game over
    • level finish
    • coins
  • animatii
    • animatie lovit blockuri cu capul
    • animatie steag de finish

Scopul jocului este acela de a ajunge la finalul nivelului. Jocul incepe avand 3 vieti, iar la coliziune din lateral cu un inamic sau la cadere in gol se pierde o viata. Jucatorul poate distruge inamicii sarind pe ei.

Hardware Design

Piesele au fost achizitionate prin comanda data la comun cu intreaga serie si de la magazinul Optimus Digital.

Piesa Nr. bucati Pret pe bucata Pret total
ATMega324 + pachet de baza 1 26.6 26.6
LCD Nokia 5110 1 15.0 15.0
Conector mama-mama 2 4.9 9.8
Conector mama-tata 1 4.9 4.9
Push buttons 4 1.0 4.0
Buzzer activ 1 2.0 2.0
Buzzer pasiv 1 2.0 2.0
Condensatoare rezerva 10uF 2 0.5 1.0
Header pini 1 1.5 1.5
Breadboard testare 1 6.0 6.0
Total 72.8 lei

Software Design

Mediu de dezvoltare

Codul a fost dezvoltat cu ajutorul AVR Studio 5.1. Partea ce tine de hardware din cod a fost implementata cu ajutorul laboratoarelor, care m-au ajutat mai ales la functionalitatea buzzerelor.

Biblioteci AVR

  • avr/io.h
  • avr/interrupt.h
  • util/delay.h
  • avr/pgmspace.h

Pentru display, pentru a nu implementa intregul afisaj pe ecran, am folosit repository-ul avr-nokia5110. Acesta contine pe langa functiile de afisaj si niste modele de caractere deja implementate, pe 3 marimi. Cea mai mica marime (font size), folosita de mine in proiect, reprezinta un caracter ca o matrice de 5×7 pixeli. Repository-ul nu are implementat si partea de backlight, asa ca am implementat eu.

Algoritmi folositi

Nu am folosit algoritmi deosebiti, insa am tinut cont de eficienta in masura cat mai mare. Obiectele (in afara de jucator) scrolleaza, in timp ce jucatorul este intotdeauna centrat pe ecran. Obiectelor li se retin limitele pentru a fi iterabile la verificarea coliziunilor.
Pentru a utiliza eficient memoria, notele din sunete sunt retinute in PROGMEM. Daca nu foloseam acest lucru, as fi fost limita in a folosi foarte putine sunete.
Deoarece am implementat in C si nu exista OOP, valorile pentru stari, pozitie, viteza etc. sunt retinute global.

Rezultate Obţinute

opera.jpg

In urma dezvoltarii, am implementand un nivel din Mario. Fizica obiectelor este implementata realistic, desi jocul e pe un display de rezolutie foarte mica, toate miscarile realizandu-se realistic (cu viteze, acceleratii, etc). Am implementat inamici, platforme si sunete pentru diverse eventuri. Consider ca jocul aduce jucatorul “on a trip down memory lane” intr-o masura acceptabila. Din ce imi propusesem, nu am avut timp sa implementez si powerupul care permite sa tragi.
mario_screenshot.jpg

Video cu gameplay aici.

Concluzii

Imi pare rau ca PM e asa prost pozitionat ca materie, intr-un semestru care nu este neaparat greu, ci incarcat. Mi-ar fi placut sa aloc mult mai mult timp acestui proiect deoarece consider ca as fi putut sa-l imbunatatesc enorm. In orice caz, a fost foarte interesant sa fac un proiect hardware si mai ales sa observ limitarile dezvoltarii.
Multumesc lui Marius Andrei pentru ajutorul de la laborator!

Download

Jurnal

  • 8 mai: lipire placuta cu ATMega
  • 15-17 mai: achizitionare piese si implementarea placii auxiliare cu buzzer, display si butoane
  • 18-24 mai: software development

Bibliografie/Resurse

pm/prj2017/mandrei/apo_mario.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0