lekcija 6 – Škola programiranja u standardnom bejziku C64

RETRO KUTAK

Lekcija 6 – Ekranska memorija, boje i sprite grafika u Commodore 64 BASIC-u

LEKCIJA PRVA LINK

LEKCIJA DRUGA LINK

LEKCIJA TREĆA LINK

LEKCIJA ČETVRTA LINK

LEKCIJA PETA LINK

LEKCIJA ŠESTA LINK

LEKCIJA SEDMA LINK

Svemirci su među nama (modovi grafike, rad sa multikolor sprajtovima)

Dobrodošli na šesti čas „Male škole programiranja na Commodore 64 u BASIC-u“. Danas ćemo nastaviti sa upoznavanjem mogućnosti i naredbi C64 računara. Dajemo kao i obično neke savete i primere za ono što učimo.

Počnimo sa savetima i objašnjenjima

Za sam početak jedna važna napomena

Kod unosa vrednosti u memorijske lokacije naredbom POKE moramo veoma paziti da li su te lokacije dozvoljene za unos ili su zauzeti programom, važnim podacima za rad sistema i sl. U slučaju da tu pokušamo da unesemo neku vrednost možemo izazvati krah sistema, poremećaj rada računara, brisanje programa koji smo uneli ili korupciju istog i još mnogo neželjenih posledica gde softverski reset (RUN/STOP+RESTORE) ne pomaže.

Naravno ukoliko ugasimo i upalimo računar sve će se vratiti u normalu. Neki računari su imali ugrađeni reset taster koji su u većini slučajeva rešavali ovaj problem. Kod emulatora postoji takozvani softverski i hardverski reset. Softverski će resetovati virtualni sistem kod programa koji nisu uništili važne podatke u bitnim memorijskim lokacijama, a hard reset postavlja sve na početak tako da prekida bilo koju neugodnu situaciju.

Uvek možemo isključiti pa ponovo uključiti emulator. Naravno sa unetim programom možemo se pozdraviti ako isti nismo prethodno snimili na kasetu, disketu ili kod emulatora na virtualnu disketu ili opcijom state i sl.

Ekranska memorija

Prilikom startovanja računara ulazimo u takozvani tekstualni mod. Sve što u tom trenutku vidimo na ekranu mora da se nalazi negde u memorijskoj mapi C64. Memorijske lokacije koje su zadužene za prikaz karaktera na ekranu počinju od adrese 1024 i završavaju sa 2023 (ukupno 1000 karaktera).

Svaki karakter nosi svoj broj (0-255) i ima ih ukupno 256. Pošto postoje dva seta karaktera imamo 512 mogućih karaktera. Upisom nekog broja u memorijsku lokaciju dobićemo karakter vezan za taj broj.

To će najbolje ilustrovati sledeći primeri:

5 M=0
10 PRINT „(SHIFT+CLR/HOME)“
20 FOR I=1024 TO 1279
30 POKE I,M
40 M=M+1
50 NEXT I

Ovaj program će ispisati svih 256 karaktera seta u kome se nalazimo počev od gornje ivice ekrana.

Takođe ovo znači da svaki karakter možemo trenutno prikazati bilo gde na ekranu:

10 M=INT(RND(1)*1000)
20 B=INT(RND(1)*256)
30 POKE 1024+M,B
40 GOTO 10

Posle startovanja ovog programa neprestano će se pojavljivati slučajni karakteri po celom ekranu.

Kolor memorija

Kolor memorija u tekstualnom modu se kreće u memorijskim lokacijama od 55296 do 56295 za svaki karakter u ekranskoj memoriji. Svi karakteri u ekranskoj memoriji imaju svog para u kolor memoriji.

To nam pruža mogućnost da promenimo boju svakom karakteru navodeći memorijsku lokaciju boje na mestu gde se karakter nalazi.

Primer:

10 FOR I=1024 TO 2023
20 POKE I,1
30 NEXT I
40 FOR I=55296 TO 56295
50 POKE I,RND(0)*16
60 NEXT I
70 END

Petascii karakteri

Naredba PRINT koristi PETASCII kodove koji obuhvataju karaktere, boje i akcije. PETASCII kodovi za karaktere razlikuju se od ekranskih kodova za iste znakove. Na primer, ekranski kod za slovo A je 1, a PETASCII kod je 65.

Grafika visoke rezolucije

Jedan od nedostataka standardnog BASIC-a C64 jeste nepostojanje naredbi za visoku grafiku. Rezolucija ovog moda je 320×200 u dve boje. Manipulacija se vrši direktno preko memorijskih lokacija.

Primer uključivanja visoke rezolucije:

10 POKE 53265,59
20 POKE 53272,28

Visokorezolucijska grafika u standardnom BASIC-u je veoma spora, zbog čega se u praksi retko koristi bez mašinskog jezika.

Multikolor grafika

Multikolor grafika radi u rezoluciji 160×200 sa četiri boje po karakteru. Horizontalna rezolucija je manja, ali omogućava prikaz više boja.

Primer uključivanja multikolor moda:

20 POKE 53265,59
30 POKE 53270,23
40 POKE 53272,28

Kao i kod visoke rezolucije, rad u multikolor grafici iz standardnog BASIC-a veoma je spor.

Kako startujemo uneseni mašinski program iz standardnog bejzika

Naredba SYS služi za startovanje mašinskog programa iz standardnog BASIC-a. Posebno je važna naredba:

SYS 64738

Ona vrši softverski reset računara i vraća sistem u početno stanje.

Krenimo sa današnjom lekcijom

Danas ćemo naučiti još neke funkcije

CHR$ – prikaz PETASCII koda kao karaktera, boje ili akcije

Ova funkcija omogućava prikaz karaktera, boja ili akcija iz PETASCII tabele unošenjem odgovarajućeg broja.

Formati:

PRINT CHR$(65)
A$=CHR$(I)

ASC – prikazuje brojnu vrednost PETASCII karaktera

Data funkcija prikazuje brojnu vrednost prvog karaktera u tekstu ili tekstualnoj promenljivoj.

Formati:

PRINT ASC(„ABCD“)
A=ASC(X$)

LEN – prikaz broja karaktera u tekstu ili tekstualnoj promenljivoj

Funkcija izračunava koliko karaktera sadrži tekst ili promenljiva.

Formati:

PRINT LEN(„ABCDE“)
A=LEN(A$)

STR$ – pretvaranje numeričke u tekstualnu vrednost

Pomoću ove funkcije svaki numerički podatak postaje tekst.

Formati:

PRINT STR$(4)
X$=STR$(M)

VAL – pretvaranje tekstualne vrednosti u numeričku

Ova funkcija pretvara tekstualnu vrednost u broj ukoliko tekst počinje numeričkim podatkom.

Formati:

PRINT VAL(„43“)
M=VAL(X$)

FRE – prikaz slobodne memorije za BASIC i promenljive

Funkcija prikazuje količinu slobodne memorije dostupne za program i promenljive.

Primer:

PRINT FRE(0)+65535*ABS((FRE(0)<0))

TIME (TI)

Prikazuje broj čifova (1/60 sekunde) od uključenja računara.

Primer:

10 PRINT „OD UKLJUCENJA RACUNARA JE PROSLO“;TIME/60;“SEKUNDI“

TIME$ (TI$)

Omogućava očitavanje i podešavanje vremena u računaru.

Primer:

TIME$=“071020″

ON

Naredba omogućava grananje programa prema vrednosti argumenta.

Format:

ON A GOTO broj_linije
ON A GOSUB broj_linije

Svemirska baza 1

Na kraju lekcije prikazana je kompletna mini arkadna igra u kojoj igrač upravlja svemirskim brodom, izbegava projektile i pokušava da stigne do baze. Kroz primer se obrađuju sprite grafika, kolizije, rad sa tastaturom, slučajni brojevi, podprogrami i animacija.

Igra sadrži kompletan izvorni kod sa DATA blokovima za sprite, detekcijom sudara, sistemom pogodaka i mogućnošću pokretanja nove partije.

Na vama je da dobro analizirate datu igricu. Probajte sami da dodate zvuk, još neki sprajt i slično. Naravno imajte u vidu da će sve što dodate usporiti ionako sporu igru ali to je sve u cilju učenja.

Zato ne ustručavajte se. Nagomilajte stvari pa makar posle toga bio jedan frejm u sekundi. Izbacite nešto, dodajte svoje zamisli, promenite parametre, uradite sve što vam padne na pamet.

Ovim završavamo za danas.

Želimo vam uspeha u učenju i uživajte u retro stvarima.

LEKCIJA PRVA LINK

LEKCIJA DRUGA LINK

LEKCIJA TREĆA LINK

LEKCIJA ČETVRTA LINK

LEKCIJA PETA LINK

LEKCIJA ŠESTA LINK

LEKCIJA SEDMA LINK

Ostavite komentar

Vaša adresa e-pošte neće biti objavljena. Neophodna polja su označena *

Scroll to Top