Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > hr.comp.programiranje.java > #27
| From | Chupo <bad_n_mad@yahoo.com> |
|---|---|
| Newsgroups | hr.comp.programiranje, hr.comp.programiranje.java |
| Subject | Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? |
| Date | 2017-07-19 01:10 +0200 |
| Organization | Noname d.o.o. |
| Message-ID | <MPG.33d8b3d68ccdbc5698afaf@news.t-com.hr> (permalink) |
| References | (9 earlier) <okfc5i$vtn$1@sunce.iskon.hr> <MPG.33d58695c85cc16a98afad@news.t-com.hr> <oki3vr$2tl$1@sunce.iskon.hr> <MPG.33d75a81ee98a98098afae@news.t-com.hr> <okl956$h69$1@sunce.iskon.hr> |
Cross-posted to 2 groups.
In article <okl956$h69$1@sunce.iskon.hr>, Bruno Babic <a@b.c> says... > Istina, svaki cycle se mora emulirati jer razliciti efekti ustvari > cekaju da VIC dodje sa iscrtavanjem do neke linije ekrana kako bi > zapoceli svoj posao... ako se preskoci jedan cycle, teoretski se kod na > tom dijelu nece pozvati sve do slijedeceg iscrtavanja (kada se mozda > opet ne pozove) itd. Na Spectrumu se takvi efekti mogu postici jedino tako da u interrupt rutini potrosis odredjeni broj T-stanja dok elektronski snop ne stigne na trazeno mjesto. Intrrupt se generira s VBLANK kad pocinje vertrical retrace i onda naprije treba pocekati da snop stigne natrag gore pa do vidljivog dijela ekrana i onda treba cekati u petlji koja uvijek traje tocno toliko taktova koliko traje iscrtavanje jedne linije. Posljedica je da cim se efekt nalazi nize ostaje manje vremena za stvari van interrupt rutine. Tako se moze crtati po borderu ili se moze postici vise od dvije boje po 8x8 pixela. Pretpostavljam da se na Pac-Man hardware-u na slican nacin moze iscrtati vise sprite-ova nego sta ih ima u hardware-u i da se tako moze postici vise od 4 boje po karakteru, napisao sam rutinu koja bi na pravom harware-u trebala raditi ali na MAME-u se to ne moze provjeriti jer se u njemu ekran update-a istog trenutka cim se nesta upise u odgovarajuci registar - bez obzira na to gdje se trenutno nalazi elektroniski snop. U mojim komentarima na ovaj video sam napisao opis rutine: https://youtu.be/4-o57DPCt8k > Tamo negdje '95 sam sanjao u 6502 assembleru i znao sve C64 memorijske > lokacije napamet, a sada bih najvjerojatnije morao sve ispocetka uciti :) Brzo bi se sjetio svega. Ja sam prije par godina iz zezancije napisao par interrupt rutina za Spectruma: https://youtu.be/I-oCUoGAaPA https://youtu.be/eGDLdf3nZL0 i odma sam se sjetio svega. Da sam nekad imao crosscompiler i emulator... SjASMPlus kojega sam koristio je najbolji Z80 compiler kojeg sam vidio a uz to jos moze i generirati Spectrum-om snapshot (.sna) file kojega se onda samo otvori u emulatoru. U vrijeme dok sam stalno pisao programe za Spectrum sam program od par desetaka byte-ova mogo napisati direktno u .hex-u bez da sam ucitavao assembler. Eventualno sam tu i tamo pogledao opcode od neke instrukcije. Jos i sad znam napamet adrese dosta sistemskih variabli ili vaznijih rutina u ROM-u a na Spectrumu nema memorijski mapiranih portova ili periferija nego se koriste IN i OUT instrukcije. Jedino sta je mapirano u memoriju je video RAM. > Recimo to ovako - vise-manje sve sam naucio reverse-engineeringom > introa... a bome ekipa je se znala posteno potruditi da ti otezaju da > dodjes do njihovog koda. Ja sam najvise naucio na skidanju zastita koje su stavili ljudi koji su probili komercijalne zastite. Njihove su nerijetko bile kompilicranije od komercijalnih jer su kombinirali stvari koje su naucili dok su probijali pojedinacne komercijalne zastite. I puno sam naucio iz analiziranja SAVE i LOAD rutina iz ROM-a i speed loader-a koje su koristile neke igre. Tu mora isto sve biti tocno do na takt a na Z80 to nije bas jednostavno postici jer trajanja instrukicija su od 4 do 23 T. > Nebi me bilo tesko nagovoriti da se nadjemo i uzivo... ako se ne varam, > mi smo obojica u okolici VZ? Moramo se jednom dogovoriti da se nadjemo. Ja sam u ZG ali sam jako cesto u okolici Toplica. Dok sam tu onda se s biciklom krecem u krugu od Kalnika do Ivanscice, Beletinca, Beretinca, Vidovca i okolice a s autom sam cesto u Varazdinu. > Uh, ako je to zbilja tako onda doslovno moras sve raditi metodom > pokusaja i pogresaka, a to mi se cini kao iznimno dugotrajan proces. > > Jesi li barem u stanju napisati jednostavan program koji npr. pomjera > sprite kako korisnik pomjera joystick? (pod uvjetom da znas otkud > procitati stanje joysticka) Za Pac-Man hardware mogu napisati sve i prije nego pocnem isprobavati s pisanjem koda za Scramble HW cu napraviti neku igru na Pac-Man-u. Mogo bi bas napraviti port Atomix-a!! :-)) S obzirom da Pac-Man HW nema ni jednu dodatnu tipku (Scramble ima Fire i Bomb) cu morati iskoristiti tipku za 1 Player Start. Mogu napraviti sve gdje ne trebaju kosi smjerovi, vise od dvije tipke (mogo bi iskoristiti i tipku za 2 Player Start) i gdje ne treba scroll background-a za po 1 pixel. Probao sam ocitavati kose smerove, napisao sam rutinu koja ispisuje hex vrijednost memorijske lokacije s koje se ocitava joystick ali nikad nije resetiran vise od jedan bit tako da se mogu ocitatati samo 4 smjera. Mislim da originalni Pac-Man-ov joystick niti nema hod u koso. Ovo sam si inace slozio za testiranje: https://www.dropbox.com/sh/wzju38868exoybm/AAAWVaPnSqPqM07BIEYvfEsDa Bas cu dok uhvatim malo vremena probati na Pac-Man hardware-u napraviti prvi ekran od Atomix-a. Za takve igre (u tu kategoriju spada i Sokoban) me je uvijek zanimalo kako izmisliti dovoljan broj sve tezih i tezih nivoa a koji se sigurno mogu rijesiti. > Upravo tako, to je jedna od najosnovnijih zastita - dekriptiras svoj kod > kroz video RAM pa na taj nacin otezas posao onome tko zeli doci do > dekriptiranog koda jer ne smije napraviti nista sto mijenja sadrzaj > ekrana. No, onaj tko zna da lako promijenis lokaciju video RAM-a lako to > i zaobidje. Zato sam ubacio i jos jednu foru, a to je da se kod koji > dekriptira nalazi na memorijskim lokacijama koje su inace "ispod" ROM-a, > pa moras iskljuciti ROM da bi uopce mogao vidjeti moj kod. Bilo je nevjerojatnih trikova za otezavanje pronalazenja koda. Recimo program se je s kazete poceo ucitavati u neku visoku memorijsku lokaciju i nakon sta je counter za memorijsku lokaciju u koju se byte ucitava doso do kraja RAM-a (65535) se je dalje 'ucitavalo' u memorijske lokacije od 0 pa dalje preko ROM-a i onda u video memoriju pa preko systemskih variabli gdje se je prebrisao vektor za skok u slucaju greske kod ucitavanja (ERRSP) a onda se je program nastavio ucitavati dalje preko nizih adresa RAM-a i snimka je namjerno imala jedan byte manje nego je bilo procitano iz header-a. To je uzrokovalo gresku kod ucitavanja zbog koje se je onda program pokrenuo od adrese na koju je pokazivao ERRSP a tamo je bila rutina za visestruko prebacivanje koda na drugu lokaciju i istovremeno XOR-iranje svakog byte-a s drugom vrijednoscu. Neki programi su cak radili XOR s vrijednoscu R registra koji se na Z80 nakon svake instrukcije povecava za jedan (osim sedmog bita koji se nikad ne mijenja) s tim da se za instrukcije koje imaju jedan od 4 prefixa R povecava za dva pa bi se moglo zakljuciti da se prefix racuna ko jos jedan instrukcija ali za instrukcije s 2 prefixa u opcode-u se R opet povecava za 2. Znalo je biti po 4 ili 5 premjestanja i XOR-iranja blokova byte-ova pa skoka na adresu u bloku i onda jos i premjestanje i XOR-iranje s R koji se stalno mijenja. Ova zastita je osim otezavanja dolaska do koda uzrokovala i da program koji se ucitava bude duzi od ukupnog RAM-a (jer se je ucitavao i preko ROM-a pa su ti byte-ovi bili visak) tako da ga se nije moglo ucitati u neki od programa za kopiranje. Da sam onda imao emulator i debugger ko sad bi stvari za koje su mi onda trebali dani napravio u par sati. Onda sam morao u RAM ucitavati dio po dio koda jer mi je dio RAM-a zauzimao disassembler pa sam, ako se je blok prije pokretanja kopirao na adrese koje je trenutno zauzimao disassembler, morao pripremiti rutinu koja ce otpakirati 'jedan korak' pa opet ispocetka i tako po 5-6 puta a kod je bio namjerno pisan tako da bi se moglo pomisliti da si ga pogresno otpakirao i da je to bezvezan niz byte-ova. -- Let There Be Light Custom LED driveri prema specifikacijama http://tinyurl.com/customleddriver Chupo
Back to hr.comp.programiranje.java | Previous | Next — Previous in thread | Next in thread | Find similar
Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-10 05:46 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-10 14:16 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-10 15:18 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-12 09:32 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-12 23:08 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-14 11:25 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-14 11:27 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-14 15:09 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-14 16:22 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-14 17:21 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-16 11:37 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-16 15:20 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-17 12:36 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-18 00:37 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-18 17:23 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-19 01:10 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-19 15:14 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-19 16:21 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Nikolaj Lazic <nlazicBEZ_OVOGA@mudrac.ffzg.hr> - 2017-07-19 17:08 +0000
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-20 18:04 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-20 19:17 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-20 20:42 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-21 03:58 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-21 05:14 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-21 12:04 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-21 17:24 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-08-04 13:10 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-08-04 17:21 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-08-07 17:30 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-08-07 18:30 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-08-07 18:35 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Chupo <bad_n_mad@yahoo.com> - 2017-07-16 01:04 +0200
Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u? Bruno Babic <a@b.c> - 2017-07-16 11:32 +0200
csiph-web