Šta je novo?

30 godina ZX Spectrum

^ spektrum je bio ozbiljan racunar pa mu sprajtovi nisu trebali :)

Sprajtovi su na spekiju resavani softverski takozvani soft-sprajtovi sto je ponekad znalo da bude i prednost buduci da nije ograniceno po fizickim dimenzijama kao hardverski sprajtovi niti brojem podrzanih sprajtova.
Definitivno je problem predstavljao nacin na koji je odradjen graficki mod pa je stalno moralo da se pazi na raspored boja. Sprajtovi su tek bili posebna prica buduci da su skoro stalno u pokretu. Ali ako se pazilo da sprajt sto bolje popuni pravougaonu povrsinu i da se pazi da se sprajtovi iscrtavaju na pozadini onda se clash manje video_Ovo je manje vise bio problem na svim ranim racunarima koji su omogucavali grafiku u boji. Jednostavno usteda RAM memorije je morala da ispolji i negativne strane.Kod c64 se ipak otislo u drugom pravcu pa su dve tacke iz hiresa spojene u jednu sto je prepolovilo rezoluciju ali je dalo cetiri boje za istu potrosnju ram memorije + su mogil da se iskoriste atributi za boje tako da je paleta obicno bila od 8 boja.
Spectrum je graficki prikaz nasledio od zx80 (81) modela tako da je samo nadogradjena boja. Sada mozda je i moglo da se radi nesto za bolju kolor sliku ali bi to definitivno oduzimalo previse vremena procesoru i vise memorije
 
^ spektrum je bio ozbiljan racunar pa mu sprajtovi nisu trebali :)

Sprajtovi su na spekiju resavani softverski takozvani soft-sprajtovi sto je ponekad znalo da bude i prednost buduci da nije ograniceno po fizickim dimenzijama kao hardverski sprajtovi niti brojem podrzanih sprajtova.
Definitivno je problem predstavljao nacin na koji je odradjen graficki mod pa je stalno moralo da se pazi na raspored boja. Sprajtovi su tek bili posebna prica buduci da su skoro stalno u pokretu. Ali ako se pazilo da sprajt sto bolje popuni pravougaonu povrsinu i da se pazi da se sprajtovi iscrtavaju na pozadini onda se clash manje video_Ovo je manje vise bio problem na svim ranim racunarima koji su omogucavali grafiku u boji. Jednostavno usteda RAM memorije je morala da ispolji i negativne strane.Kod c64 se ipak otislo u drugom pravcu pa su dve tacke iz hiresa spojene u jednu sto je prepolovilo rezoluciju ali je dalo cetiri boje za istu potrosnju ram memorije + su mogil da se iskoriste atributi za boje tako da je paleta obicno bila od 8 boja.
Spectrum je graficki prikaz nasledio od zx80 (81) modela tako da je samo nadogradjena boja. Sada mozda je i moglo da se radi nesto za bolju kolor sliku ali bi to definitivno oduzimalo previse vremena procesoru i vise memorije

Kad vec pominjes c64, tamo je graficki cip podrzavao osam hardverskih sprajtova, a tehnikom rasterskih interapta na ekranu si prakticno mogao da ih imas koliko zelis (klasicna tehnika kojom su nastale sve igre, introi i demoi). Dakle, napravis interapt rutine za razne pozicije elektronskog mlaza, pa na jednom delu zabodes osam sprajtova, na drugom osam, na trecem osam itd. a ako ti treba veci sprajt, spojis nekoliko komada. Cak je upotrebom trikova moglo da se crta i po borderu (tj da se tamo postavljaju sprajtovi) i neke igre su bile tako i radjene (od kraja do kraja ekrana) sto je, koliko znam, na spektrumu nikad nije uradjeno. Doduse secam se nekakvog clanka iz Sveta Kompjutera i rutine uz pomoc koje se i na spektrumu dobijalo nesto slicno, na potpuno neverovatan nacin - tajmovalo se menjanje boje elektronskog mlaza koji klizi po borderu, sto je neverovatan pristup obzirom da je tajming morao da bude savrsen (svaki takt CPU-a se broji i jako je bitan). Za igre nemoguce, ali dovoljno dobro za crtanje skrola po borderu.

Sto se grafike tice, i kod komodora je slicno kao i kod spektruma u hiresu bilo moguce izabrati dve boje iz palete od osam u jednom atributu, a sa polovljenjem rezolucije i 4. Zanimljivo je da je komodor imao i vise od 64 kb memorije, tj 64 kb RAM-a i 20 kb ROM-a, pa su hires slike mogle da se smestaju u RAM-u koji je bio prekopljen sa ROM-om i da se odatle povlace setovanjem flegova u nultom (ili bese prvom, pocinjem da zaboravljam) registru. To je davalo jos neke interesantne mogucnosti za zaludne kakav sam i ja bio kao klinac - snimis kompletan ROM u RAM, iskljucis ROM a ukljucis RAM, pa petljas po masinskim rutinama kernala (da, to se na 64-ki zvao kernal a ne kernel jer je pisac manuala kroz ceo rukopis pogresno spelovao tekst :D ).
 
Rasteri na c64...mmmm.. kad se samo setim :)
Vic chip (gpu u to vreme) je imao bug, kada skupis ekran da ima 39 umesto 40 znakova u redu dok je raster van ekrana, border potpuno nestane sa leve i desne strane.
Drugi trik je bio da se valjda ukljuci hires mod ili vertikalno skupljanje ekrana sa 25 na 24 reda i dok je raster na pocetku ektana i onda nestane border gode i dole.
Na sve to ubacis 100-150 sprajtova dimenzije 24x21px koji jure po preracunatim sin/cos tabelama i eto veselja za oci.
 
Ipak nema, jer hardver ne podrzava sprajtove.

Sprajt je po definiciji bitmap slicica koja se crta nezavisno od pozadine, tj. jednom definises izgled sprajta pa posle samo u registre ubacujes x i y poziciju. Drugim recima, pitanje hardvera, manje softvera. Uz to postoji i kolizija sprajtova (u registru lepo procitas da li su se sprajtovi sudarili ili ne) i preklapanje, sto spektrum nema.

Kod spektruma se to radilo softverski i programer je bio u obavezi da o svemu vodi racuna: da sam 'menja' ekran tako sto se, narodski receno, sprajt crta u okviru pozadine a ne preko nje; da vodi racuna o atributima (sto se i vidi po igrama na spekiju gde ono sto treba da bude sprajt povremeno po ivicama menja boju jer je tesko da se isprati bas sve); da rucno prati poziciju jer ne postoji registar gde graficki cip (koga spektrum u stvari i nema kao odvojenu jedinicu, sve je strpano u ULA) umesto da se generise interapt kad do toga dodje te se iz nekog registra procita koji je fleg nula i jedinica (sto znaci da odmah znas i koja dva sprajta su se sudarila). Nista od ovog spektrum nema.

A nije mi jasan ni deo sa rezolucijom ni sta u stvari mislis pod time? Kod c64 su sprajtovi, osam njih, bili velicine 24x21 bitova i c64 ima vecu rezoluciju od spektruma (320x200 vs 256x192). Ako mislis na velicinu, to se resavalo tako sto se sprajtovi poredjaju jedni pored drugih i dobijes sliku proizvoljne velicine. Moglo je i na c64 da se radi kao i na spektrumu (da se mlatis sa slicicama i rucno ih crtas na ekranu), ali to niko ziv nikada nije radio. Sa sprajtovima je sve to mnogo lakse.
 
Ne ocekivajuci da ce se na bench forumu podici i komodorovci oko grafike, sasvim sam slucano
u Spectaculatoru podigao Art Studio - i setio se koliko sam meseci piksel po piksel , samo sa kursorima
5 6 7 8 i 0 iscrtavao pojeidne slike. Mada, program je sjajan,uz, valjda ploter (?) islo je dosta brze (Valjda Yout tube video Kung Fu Master , domacih autora prikazuje upravo to)

secam se ogromonih likova (na spekiju, naravno ) u igrama : Trap Door 1 i 2, Popeye , Benny Hill, tako nesto nisam video
na debeljku. A sto se tice 3D grafike, tu je pobednik jasan. Medjutim, kao sto znam to su koncepcijski potpuno razlicite
masine a ako je trziste pokazatelj onda je jasno da je potonji ipak pobedio.
 
Doduse secam se nekakvog clanka iz Sveta Kompjutera i rutine uz pomoc koje se i na spektrumu dobijalo nesto slicno, na potpuno neverovatan nacin - tajmovalo se menjanje boje elektronskog mlaza koji klizi po borderu, sto je neverovatan pristup obzirom da je tajming morao da bude savrsen (svaki takt CPU-a se broji i jako je bitan). Za igre nemoguce, ali dovoljno dobro za crtanje skrola po borderu.
onda je nesto kao na STu?
da bi se uklonili borderi potrebno je menjati osvezavanje u tacno odredjenom trenutku - za levi i desni border znaci dva puta u HLBu (da yooyo, sve me podseca na ST :p :d)

snimis kompletan ROM u RAM, iskljucis ROM a ukljucis RAM, pa petljas po masinskim rutinama kernala (da, to se na 64-ki zvao kernal a ne kernel jer je pisac manuala kroz ceo rukopis pogresno spelovao tekst :D ).
to sam procitao negde... :D

Meni izgleda isto :)
na spectrumu je brze :p
 
Poslednja izmena:
onda je nesto kao na STu?
da bi se uklonili borderi potrebno je menjati osvezavanje u tacno odredjenom trenutku - za levi i desni border znaci dva puta u HLBu (da yooyo, sve me podseca na ST :p :d)

Ne, onda je slicno kao kod c64, mada nije isti trik (pogledaj gore sta je napisao yooyo, tako se to radilo).

Kod spektruma je stvar bila mnogo bolesnija - rutina je bukvalno napisana tako da se vrsi direktna kontrola elektronskog mlaza koji ide po borderu, pa se ubaci recimo crna boja da se dobije jedan deo slova, pa pauza, pa onda za drugi deo slova, pa pauza pauza, pa trece slovo itd; kad se zavrsi jedan red ide se na sledeci itd itd itd. Vrlo pipavo i potreban je savrseni tajming do koga se, cenim, doslo beskonacnim eksperimentisanjem.

Ne znam da li uspevam da objasnim o cemu se radi, ali evo primera kako to izgleda kada se zavrsi:

http://www.youtube.com/watch?v=zBOPdiGC5EY
 
Veoma dobar trik. C64 je slicne scrollove po borderu izvodio sa sprajtovima. Ja sam pravio mega scroll gde su slova bila 16x16 karaktera (upscale 8x8 fonta) ali nisam mogao da maknem border.
Najvece zezanje koje sam uradio je emulacija z80 na 6510 :D
Preusmerio sam soft interapt (BRK) na moj handler koji je potom analizirao stack da pronadje adresu prekida. Iza BRK instrukcije sam ubacio z80 instrukciju. Moj handler je interpretirao z80 code. Bilo je malo smoreno za pisanje i nisam implementirao ceo z80 set, svega nekoliko instrukcija... vise kao proof of concept.
Na slicnu foru sam napravio 32 fpu registra i floating point rutine sam pozajmio iz basic roma. Crtao sam fraktale sa ovim.
Kada danas pogledam sta sam sve radio cini mi se besmisleno. Samo je bitna jedna stvar. Naucio sam da treba zasukati rukave i odraditi posao. Ako imam ideju za nesto onda to i mogu da izvedem.
 
^^

aj daj neki link sa objasnjenjem; sa cime si kontrolisao elektronski mlaz?? - kod STa (MC68000) u jednom HLBu imas 512 ciklusa. koliko je Z80 imao ciklusa u jednom HLBu (rasterskoj liniji)? koliko mu je ciklusa trebalo da upise "nesto" u "neki" registar? (kod STa je trebalo uraditi dva MOVE.B u pravom trenutku da bi se uklonio border)

btw odlican video.
 
@yooyo

Pazi, ovaj spectrum demo sa linka je totalno lud. Spektrum nema rasterske registra k'o komodor pa da automatski generise interapt i skok na neku rutinu koja recimo oboji liniju od pocetka do kraja ekrana (ukljucujuci border), pa INC-ujes registar $D011 da okine interapt cim mlaz predje u drugu liniju pa obojis border i paper nekom drugom bojom. Ne, ovaj je sve radio rucno - kapiram da je postavljao bordrer i paper pa onda NOP NOP NOP NOP NOP pa mlaz stigne do sledece linije pa opet NOP NOP NOP NOP i tako bukvalno crta svaku pojedinacnu liniju na ekranu. Kako drugacije to na spektrumu da se uradi, nemam pojma :)

@kovacm

Ne mozes da kontrolises mlaz, ali mozes njegovu boju (pricacu o c64, ali verovatno je princip isti i kod spektruma). Dakle, mlaz krece od samog donjeg ugla ekrana nalevo sve dok ne prodje ceo red do krajnjeg levog dela ekrana sto znaci - nacrtana jedna linija; pa se pomeri skroz desno i jedan piksel gore pa crta sledecu liniju; pa kad to zavrsi, opet skroz desno pa piskel gore, i tako svih 320 linija (na spektrumu 256), 30 puta u sekundi. Ovako je kod komodora, a mora biti da je slicno i kod spektruma.

I sad zamisli da zelis da u skupu od 8 linija nesto nacrtas, recimo crni tekst na beloj podlozi? Postavis border i paper na belu, kada elektronski mlaz bude na pocetku prve linije; brojis taktove, stignes do pozicije gde se nalazi deo slova, promenis boju bordera/papera u crnu, okines nekoliko taktova u prazno, pa onda vratis u belu boju - ovime si dobio delic slova. Pa onda opet NOP NOP NOP NOP do nove pozicije gde treba da stoji delic nekog drugog slova, bojis u crno, ostavis par taktova, vracas u belo. I tako ceo red, pa onda predjes u sledeci, pa opet isto, pa isto, pa isto, dok ne iskontrolises svih 8 redova.

Dakle, bukvalno u letu menjas boju koja se iscrtava na poziciji gde trenutno udara elektronsko mlaz i tako dobijes jedan piksel jednog slova.

Valjda je sad jasnije, a ako nije, ne znam kako bolje da objasnim :D
 
Poslednja izmena:
Dosta stvari i na Spectrumu i C64 nisu ni predviđene da se odrade, pa opet na neki način se to odradi.
Recimo border, koji je trebalo da bude border i ništa više, odjednom bude pun efeketa, sa vrhuncem u Sentinelu sa skrolom po vrhu bordera.

U to vreme, grafika na Spectrumu mi je bila nekako preciznija sprajtovi su imali Antialias ;), dok kod C64 je sve bilo nekako "nazubljeno".
O soft sprajtovima na C64 se nije ni razmišljalo jer je imao slab procesor od 1 MHz, ipak je Speki bio mašina na 3.5 MHz pa je to mogao da odradi :)

Jedino, šta mi je na ZX-u nedostajalo, je bila demo scena koja je na C64 bila fantastična, ali Amiga je sve to nadoknadila kasnije...
 
@salac c64 ima vecu rezoluciju od spektruma (320x200 vs 256x192)

Jeste ali je spektrumu to jedina rezolucija i kolor mod mu je isto toliki. Sve nepravilnosti koje se javljaju sa softverskim sprajtovima dolaze od atribut clash problema koji nije direktno povezan sa softverskim sprajtovima. Kada jednom napises rutine koje ce obavljati poslove oko sprajtova vise o tome nemoras da brines. Soft sprajtovi su obicno mnogo fleksibilniji za upoterbu ( razlicite velicine, razlicit broj boja). PC nema sprajtove pa nema problema kao na spektrumu ali je graficki rezim skroz drugaciji. Na c64 igre koriste color graficki rezim gde je stvarna rezolucija 160x200 dakle manje nego kod spekija :) ,ali ruku na srce obicno sve deluje lepse jer nema atribut clasha koji stvarno ruzno deluje. Neveden je lep primer trapdora gde je ekstra odradjen posao pa se problem skoro i ne primecuje. I jos jedna stvar vic je normalno projektovan da prikaze samo 8 sprajtova na ekranu sve ostalo je nastalo kasnije kao "greska u hardveru" i programerski trikovi. Tu spadaju 32 sprajta na ekranu i pisanje po borderu i svasta jos.

Ovo cisto da sve bude jasno ne drzim ni jednu stranu.

Na spekiju si mogao da izazoves interapt kada elektronski mlaz dodje u gornju levu poziciju i mogao si da pratis u kom je redu.Pisanje po borderu ide tako sto u registar za boju bordera upisete boju koju zelite. Z80 je ovo radio poprilicno brzo pa je tacka bila samo dvaputa veca od tacke koju proizvodi ULA. Sada sam zaboravio koji je izbor boje bio u pitanju 8 ili 16 odnosno 15 boja koje je spectrum mogao da prikaze. To sto se iscrtavalo u borderu uopste nije morao da bude samo tekst. Takodje uzmite u obzir da je z80 morao da analizira bit koji predstavlja piksel i da u zavisnosti od njegove vrednosti utice na boju bordera. Ovo je na spekiju radilo perfektno kada sam presao na c64 isprobavao sam neke fazone na tu foru ali 6502 jednostavno je prespor za takvo maltretiranje, naime cpu je uspevao da promeni boju svega 3 ili 4 puta u jednoj liniji.Skoro beskorisno. Ali zato je c64 imao custom cipove koji su bili zaduzeni za maltretiranje i sve one lepe efekte kojima se divimo i dan danas.

Mislim da je na obe masine malo ogranicavajuci faktor bio i sporiji pristup video ram sekciji memorije.
 
@koma
Za ono vreme sezdesetcetvorki i ne treba brzi CPU obzirom da je imao posebne cipove za grafiku, zvuk i periferije.

Kod spektruma je Z80 zajedno sa ULA radio posao koji su kod komodora radili VIC, SID, 2 CIA cipa i sam 6510.

@dejan_osipaonic

Nisi u pravu za 160x200 :) Vecina igara je pisana u MCI rezimu kada imas rezoluciju 320x200 i 4 boje po atributu. U stvari to su dve, da tako kazem, interlejsovane slike od 160x200, tako da se opet dobijalo 320x200. A imas i ciste hires igre (recimo mogu da potpisem da je Trap Door 2 sa linka iz jednog od mojih prethodnih postova radjen u hiresu), mada se javlja apsolutno isti problem sa atributima kao kod spektruma pa su se ljudi retko odlucivali da se cimaju sa time.

Glede crtanja po borderu - naravno ne mora samo tekst da se upisuje obzirom da je moguca kontrola skoro pa u piksel, ali ja nikad na spektrumu nisam video nijednu igru koja je tako radjena (na komodoru sam vidjao, cini mi se creatures ili creatures 2). Pomalo je zamorna ta rabota, mada ne kazem da je nemoguce; to sto ja nisam nesto video ne mora da znaci da toga i nema. Ponavljam, opisivao sam rutinu koja je izasla u SK pre 20-25 godina :)

Ja nisam programirao u asembleru na spektrumu mada sam ga imao i bio sam lenj da burgijam na netu na koji nacin se odredjivala pozicija elektronskog mlaza, ali sad si mi razjasnio mehanizam (interapt u gornjem levom uglu).

Na c64 definitivno ovo ne moze zbog takta procesora (1mhz vs 4.77 mhz) jer mlaz previse brzo brise po ekranu da bi kontrola mogla da bude granularna. U stvari sam 6510 je bio 'RISC like' CPU sa jako malo naredbi i nacina adresiranja, za razliku od Z80 koji je bio visestruko i brzi, i mnogo bogatiji instrukcijama.
 
Poslednja izmena:
U vezi trika na spektrumu... lik je verovatno generisao code u letu na osnovu nekog stanja u memoriji. Primetili ste da je text koji scrolluje po dnu ekrana u stvari imao prilicno grubu rezoluciju. Pretpostavljam da je lik kombinovao seriju NOP instrukcija sa rutinom koja scrolluje text po memoriji. U pravom trenutku je menjao ink color. Vrlo je moguce da za svaki red generise drugaciji code. Samo, ovo je maltret za procesor i nista drugo ne moze da radi.
U svakom slucaju ... respect!
 
Nije spektrum podrzavao sprajtove poput C64. Mislim da je C64 mogao da ima do 16 (ili 8 bese) sprajtova na ekranu i najveca prednost je sto su imali detekciju kolizije i nisu brisali ono sto je ispod. Kod C64 je bio i problem sto ako hoces da koristis 4 boje po 8x8 matrici, morao si da ides na 160x240 rezoluciju koja je jako lose izgledala. Medjutim skoro sve igre su je koristile (vidi se po tome sto je pixel jako sirok). Ja sam pravio programe za onu vecu rezoluciju gde mi nije bila potrebna boja. Kasnije sam igre pravio tako sto sam menjao standardne karaktere na tastaturi i tako dobio brzo iscrtavanje.

Inace, secam se da sam koristio neki hi-res word procesor (na c64) koji je podrzavao 80 karaktera po redu. Mislim da je jako treptao, a ono sto je bilo jako cudno, dok sam kucao kasetofon se cuo kako radi (!?). Zna li neko zasto je to bilo?
 
Drugi bajt memorije C64 (adresa $0001) je imao bit koji se koristio za I/O sa kasetofonom. Isti bajt se koristio i za menjanje (mapiranje) BASIC ROM-a na adresu $A000-$BFFF. Character video memorija je bila na $0400. Posto za 80x25 znakova u redu nije bilo dovoljno mesta izmedju $0400 i $0800, morali su da presele video memoriju na drugo mesto i jos su morali da generisu karaktere u letu u zavisnosti od parova slova u video memoriji. Verovatno su sve to strpali ispod BASIC-a ili tu negde u blizini, te su cesto morali da pale/gase memorijska banke. Promene bitova na adresi $0001 verovatno su uticale na rad motora kasetofona.

http://sta.c64.org/cbm64mem.html

Da li se neko seca knjige Commodore za sva vremena?
http://www.scribd.com/yugobook/d/75868947-Commodore-Za-Sva-Vremena
 
Ta knjiga je verovatno najbolje stivo za c64 ikada napisano, a sigurno najbolja u vreme kada se pojavila. Imam je i dan-danas.
 
Ja sam je imao, pozajmio je i nikad mi nije vracena :( nisam mogao da prezalim.

Sad cu da pogledam na linku. Ja sam imao knjigu Hrvatskih autora Basic i strojno programiranje. Takodje sasvim fina knjiga, stampana na matricnom stampacu :)

Jako mi se svidela ona knjiga koja je isla uz C64 ali je bila na nemackom :(
 
Nece ova knjiga da se skine kao maler :( Moze li neko da mi posalje na mejl, rado bih je procitao. Citao sam je bas kao klinac.
 
Hvala.

Ja zaboravio da tad nije bio PDF-ova :) , vec da mora knjiga da se skenira :)

ps. sad sam video da ima opis i Simons Basica :( kako sam se ja mucio da pronadjem sve komande po raznim casopisima a evo ovde sve pise :(
 
Poslednja izmena:
Pa uzmes monitor u ruke, pa malo gvirnes pa RAM-u. Mislim, to je samo 64KB. Dovoljno je da pretraziz memoriju u potrazi za nekim stringom (npr. HIRES) i kada ga nadjes, u njegovoj okolini se nalaze i ostale komande.

Na slican nacin sam trazio pokice za igrice. Pokrenem igru, vidim gde na ekranu upisuje broj zivota. Kazem bratu da stavi prst na ekran, bas na to mesto i da drzi prst do daljenjeg. Onda resetujm C64, dovedem cursor na to mesto i moze da skloni prst. Dovoljno je da utvrdim koordinate na ekranu. Posle pretrazim RAM trazeci pocetak video memoije (to je moglo da se menja, default je bio $0400). Kada nadjem gde je video memorija, na to dodam praracunati offset od koordinata na ekranu i dobijem adresu u video memoriji gde igra upisuje broj zivota. Kada znam tu adresu, potrebno je da nadjem instrukciju koja upisjue nesto na tu adresu. Kada nadjem to parce code-a koji upisuje broj zivota na ekran, pogledam malo okolo i obicno nadjem lokacijju gde igra cuva broj zivota. Posle samo pronadjem gde se ta lokacija koristi i menja i instrukciju koja smanjuje broj zivota, pregazim sa NOP. Ostalo je da nadjem pocetak igre i onda SYS XXXXX i pocinje igrica.
Za sve ove prevare sam koristio FC3 kertridz. Prodavali su neki likovi iz Splita. Imao sam i Action Replay MK III. Bez tih dodataka mi je rad na C64 bio nezamisliv :D
 
Da mi nisu uzeli ovu knjigu verovatno bih znao i to da uradim :( , ali sta da radim. Moj cale mi je kupio tu knjigu i ja sam nesto mislio da se menjam sa prijateljicom a da ona meni da neku drugu za pocetak. I ta je bila ok, ali ni blizu kao ova.

Ovako sam sve ucio iz SK, Racunara i MM ali nije to to.

Inace, prvo sto sam uradio kod nje na C64 je da sam pritiskao Chift i C= key i crtao okvire sa onim specijalnim karakterima :) Kako mi se samo to svidelo :)
 
Pa uzmes monitor u ruke, pa malo gvirnes pa RAM-u. Mislim, to je samo 64KB. Dovoljno je da pretraziz memoriju u potrazi za nekim stringom (npr. HIRES) i kada ga nadjes, u njegovoj okolini se nalaze i ostale komande.

Na slican nacin sam trazio pokice za igrice. Pokrenem igru, vidim gde na ekranu upisuje broj zivota. Kazem bratu da stavi prst na ekran, bas na to mesto i da drzi prst do daljenjeg. Onda resetujm C64, dovedem cursor na to mesto i moze da skloni prst. Dovoljno je da utvrdim koordinate na ekranu. Posle pretrazim RAM trazeci pocetak video memoije (to je moglo da se menja, default je bio $0400). Kada nadjem gde je video memorija, na to dodam praracunati offset od koordinata na ekranu i dobijem adresu u video memoriji gde igra upisuje broj zivota. Kada znam tu adresu, potrebno je da nadjem instrukciju koja upisjue nesto na tu adresu. Kada nadjem to parce code-a koji upisuje broj zivota na ekran, pogledam malo okolo i obicno nadjem lokacijju gde igra cuva broj zivota. Posle samo pronadjem gde se ta lokacija koristi i menja i instrukciju koja smanjuje broj zivota, pregazim sa NOP. Ostalo je da nadjem pocetak igre i onda SYS XXXXX i pocinje igrica.
Za sve ove prevare sam koristio FC3 kertridz. Prodavali su neki likovi iz Splita. Imao sam i Action Replay MK III. Bez tih dodataka mi je rad na C64 bio nezamisliv :D

Yooyo splituj temu, mislim da je 'zrelo' :)

Zanimljiv nacin da se traze poukovi za igrice, ja sam to radio klasicnim metodama; vidis koliko ima zivota, trazis LDA/LDX/LDY $brojzivota po memoriji (fala monitoru 49152 koji je imao search u sebi), on nadje 10-ak mesta, pogledam svuda ako negde ispod ima DEC/DEX/DEY, promenim broj zivota, startujem igricu i gledam jel' promena zazivela, ako jeste, onda NOP. Nisam imao AR MK III kertridz (koji je bio i relativno skup), vec samo goli reset. Ali moglo je i tako, c64 je imao memoriju sa statickim mosfetovima, tj. za razliku od spekija gde je sof reset brisao ceo ram, kod c64 je ram zadrzavao ono sto je upisano u njega.

E sad, tu se javljao i problem kako drugarima koji nemaju reset dugme niti neke druge ketridze distribuirati poukove, jer power on/off brise RAM za razliku od reseta. Pa je onda bilo neophodno probijanje kroz jedan ili dva lejera pakera kojima su se pirati sluzili (ucitavanje igrice, JMP $EA31 ili NOP posle zavrsetka dekompresije). Kasnije mi je crkla i jedna CIA pa mi je port 2 za dzojstik prestao da radi, pa sam i to jurio po memoriji i menjao port 2 u port 1....

Interesantno i poucno je bilo, a imalo je i prakticnu primenu. Svo to drndanje u asembleru mi je enormno pomoglo na ETF-ovskim studijama (Arhitektura racunara 1 i 2, Impulsna i digitalna elektronika, Mikroprocesorska elektrona i sl i u svim programerskim predmetima).

edit: btw, mislim da u knjizi Commodore za sva vremena i postoji shema za pravljenje reseta. Vrlo je prosto, potrebno je spojiti dva pina na expansion slotu preko tastera.
 
Poslednja izmena:
Na spectrumu pokeove sam tražio, ld a,3 kada ima recimo tri zivota. Onda se traži adresa u memoriji gde to smesta, ld (adresa),a i na kraju se trazi dec koji oduzima. Inače nije uvek bilo tako lako, recimo Jet Set Willy je imao foru sa oduzimanjem putem ROL ili XOR nad bitovima! Bilo je uzbudljivo to traženje pokeova.
Pa rutine za učitavanje, SK je tada bio carski casopis pravi bukvar, a učitelj od koga smo svi učili fore Predrag Bećirić i za Spectrum i za Amigu. Hvala mu na svemu.
 
Poslednja izmena:
Nazad
Vrh Dno