Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > hr.comp.programiranje.java > #25

Re: Citanje color offset-a za svaki pixel u indexed color .bmp file-u?

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-18 00:37 +0200
Organization Noname d.o.o.
Message-ID <MPG.33d75a81ee98a98098afae@news.t-com.hr> (permalink)
References (7 earlier) <okak2v$cql$1@sunce.iskon.hr> <MPG.33d2fff662f7988698afa9@news.t-com.hr> <okfc5i$vtn$1@sunce.iskon.hr> <MPG.33d58695c85cc16a98afad@news.t-com.hr> <oki3vr$2tl$1@sunce.iskon.hr>

Cross-posted to 2 groups.

Show all headers | View raw


In article <oki3vr$2tl$1@sunce.iskon.hr>, Bruno Babic <a@b.c> says...
> Napisao si puno toga sto je meni sve jasno i na cemu sam odrasao... ipak 
> sam svojedobno rasturao na C64, rezultat cega je cak i jedna "konkretna" 
> igra (http://iscro.com/stuff/retro/c64/atomix.t64)


Covjece, ovo je vrhunski!! :-) Svaka cast!! Imao sam na jednom od hard 
diskova Frodo i program radi odlicno. Vidim da si koristio stvari za 
koje je potrebna single cycle emulacija jer u frodo.exe i frodopc.exe 
intro ne radi ispravno. Linije se na granici border-a i ekrana ne 
spajaju nego se vide stepenice a kad se pokrene s frodo.exe onda fali 
donji dio naptpisa 'Atomix' i donji polovica texta 'Issie SW 1994' se 
stalno pomice desno pa skace na pocetno mjesto. Ali u frodosc.exe sve 
radi bez greske.

Jedva sam se sjetio:

LOAD"$",9
LIST
LOAD"ATOMIX",9,1

Osmica je mapirana na folder s primjerima koji dolaze s emulatorom pa 
sam koristio devetku.

Znaci dobar si u 6502 :-) Ja sam s 12 godina poceo uciti Z80 assembler 
i za vrijeme visih razreda osnovne sam uz pisanje grafickih rutina i 
rutina za zvuk za Spectruma pratio sve sta je o Z80 bilo u Racunarima, 
Svetu kompjutera i manje u Moj Mikro i plus toga proanalizirao 
kompletan Spectrumov ROM ukljucujuci i rutine za aproximaciju 
trigonometrijskih funkcija koje onda jos nisam mogo shvatiti (Taylorovi 
redovi, Cebisevljvi polinomi), odnosno shvacao sam kako te rutine rade 
ali onda jos nisam znao kako je moguce da se na takav nacin dobije 
relativno tocna vrijednost sinusa i jos nekih funkcija pomocu kojih se 
onda racunaju sve ostale.

Vjerojatno znas da Spectrum nema hardware-ske sprite-ove i da svo 
iscrtavanje za svaki frame moras raditi software-ski a organizacija 
Spectrumove memorije je poznata po svemu samo ne po jednostavnoj 
layout-u (mada ima i puno kompliciranijih mapiranja).

Na pisanju rutina koje sprite-ove iscrtavale tako da su prvo spremale 
pozadinu pa onda radile AND izmedju maske i pozadine, pa OR izmedju 
rezultata i definicije 'sprite' (i u sljedecem frame-u vracale 
spremljenu pozadinu) se je moglo stvarno puno nauciti. Nije toliki 
problem napisati rutine koje to rade, ali je veliki problem napisati 
rutine koje to rade dovoljno brzo da ostane vremena i za ostale stvari, 
pogotovo jer Spectrum nema ni hardware za zvuk pa i sve valne oblike 
treba generirati upisivanjem jednog bita (istina, postoje rutine koje 
osim bita za kontrolu zvucnika mijenjaju i bit za MIC OUT pa to onda 
zbog hardware-ske izvedbe utjece na high level i na frekvencijsku 
karakteristiku odziva - jer pull-up otpornici, kondenzatori i zvucnik 
predstavljaju kombinaciju RC i RL filtara).

Dosta sam naucio i na skidanju zastita (po Atomix intro-u bi reko da i 
ti isto :-)) ) i na disassembliranju rutina za generiranje zvuka u 
komercijalnim igrama.

Dok mi je stric posudio Commodore-a sam naucio i 6502 ali taj mi se 
assembleri nikada nije dopadao. Smetala mi je memorijski orijentirana 
arhitektura sa samo 3 registra, adresiranjem preko nulte stranice i to 
da za istu stvar vecinom treba napisati vise linija nego na Z80 pa onda 
nisam niti detaljnije proucavao Commodore. SID mi je bio zanimljiv ali 
mi se je nakon rutina za Spectrum (gdje se prakticki mora kontrolirati 
kretanje membrane zvucnika) cinilo da je prejednostavno zvuk dobiti 
upisivanjem brojeva u memorijski mapiranje registre :-)

Uvijek sam se pitao gdje su sad svi oni ljudi koji su osamdesetih i 
devedesetih radili intro-e, trebali bi se jednom naci na picu i malo 
popricati o tim vremenima :-)

> Ono sto sam ja htio reci je da se ne moras baviti toliko necime sto je 
> specificno za scramble hardware ukoliko znas da je u pitanju npr. taj i 
> taj procesor


Scramble ima dva Z80, jedan na manjoj frekvenciji je za zvuk. Za zvuk 
ima i jos dva AY cipa.


> te da je npr. layout spriteova takav i takav


E vidis, to kakav je layout sprite-ova i tile-ova na Scramble-u (jos 
uvijek) ne znam :-)) Problem je da su se dizajneri hardware-a trudili 
cim vise zakomplicirati stvari da bi bootleg-erima otezali upgrade 
starih aparata na nove igre bez narucivanja conversion kit-ova.

Iz ovog se clanka vidi koliko ima posla s otkrivanjem kako radi 
odredjeni hardware:

http://aarongiles.com/old-stuff/mame-memories/hunting-for-color-proms/

I to pise covjek koji je pisao firmware za particle generator u CERN-u.

Istina je da su sad svi ti podaci u MAME-u ali nije bas jednostavno do 
njih doci analiziranjem koda a ono sta se nalazi u komentarima (ako ih 
ima) je daleko od dovoljnog.


> da se nalaze 
> tu i tu u memoriji, gdje su koje bitnije memorijske lokacije, itd. To je 
> bila poanta onoga sto sam napisao.
> 
> Da sam ja na tvom mjestu, ja bih uzeo osnovni scramble i napravio od 
> njega jednostavan peek/poke program i taj program bih vrtio pod MAME-om. 
> Zasto? Zato sto bi ti takav program lako omogucio da vizualiziras sve 
> sto taj hardware moze. Poke-as na memorijsku lokaciju da ukljucis 
> sprite, pa na lokaciju za poziciju na ekranu i vec si dobio nekakvo 
> vizualizirano "smece". Zatim pokeas konkretan sadrzaj i voila... znas 
> kako raditi sa spriteovima bez da reverese engineeras Scramble, sto je 
> osjetno sporije.


Upravo sam tako i doso do layout-a za tile-ove i sprite-ove na Pac-Man 
hardware-u. MAME ima odlicne alate za vizualizaciju tile-ova, paleta i 
sprite-ova i dovoljno je promijeniti podatke u ROM-ovima pa u tim 
alatima pogledati kako nakon izmjena izgledaju recimo sprite-ovi.

Ali taj postupak, cak i uz hrpu informacija koju sam o Pac-man 
hardware-u imao iz raznih dokumenata s neta, nije bio bas trivijalan.

Ono isto sta sam napravio za Pac-Man hardware bi trebao napraviti za 
Scramble-ov hardware - razlika je jedino u tome da sam za ovaj prvi 
naso puno informacija koje su mi olaksale/ubrzale postupak. Koristio 
sam informacije za cije su prikupljanje nekim ljudima trebale godine.


> Uz Commodore 64 je uredno dolazila knjiga sa listom bitnih memorijskih 
> lokacija, sve je tamo pisalo... tako nesto tebi treba za taj scramble 
> hardware, odnosno galaxian, odnosno Z80 (koliko vidim, to je CPU).


Upravo to i trazim - problem je medjutim u tome da ne samo da takva 
dokumentacija nije nikad objavljena, nego su se i autori tih uredjaja 
jako potrudili da cim vise zakompliciraju analiziranje.


> Jos bolje rjesenje je da napises svoj jednostavni device za MAME, 
> baziran na scramble deviceu, koji ce doslovno ucitati svih 64k ROM-a 
> (ili koliko vec ima taj hardware) i ti onda lako iz nekog viseg jezika 
> kreiras taj ROM dump kojeg ucitavas u MAME da vidis rezultat svog rada.
 
Cim ja kreiram ROM-ove pa u .zip-u neke od originalnih zamijenim s 
mojima, istog trenutka nakon pokretanja tovog aparata u MAME-u mogu 
stisnuti F4 i vidjeti kako bi izgledao sprite/tile definiran s mojim 
podacima. Nije problem niti napisati kratki program u assembleru koji 
ce obrisati ekran pa prikazati sprite a onda se vrtjeti u beskonacnoj 
petlji u kojoj ce resetirati watchdog timer. Ali to je samo jedan mali 
dio price. Na takav nacin bi se dosta tesko moglo otkriti da su dio 
video memorije i adrese koje uzrokuju da se pripadajuci tile-ovi 
'prikazuju' izvan ekrana. Pac-Man recimo ima u svakom uglu ekrana 4 
tile-a koja se nikad ne vide a ta se mjesta mogu recimo iskoristiti da 
se na njih pomakne sprite kojega treba 'ugasiti'. Koliko vidim i na 
Scramble hardware-u se watchdog resetira *citanjem* iz odredjene 
memorijske lokacije, na Pac-Man-u se on resetira pisanjem. Tu opet nije 
jasno sta tocno znaci broj upisan u tovu lokaciju jer counter ima 
sigurno vise od 8 bitova a u originalnom programu za Pac-Man-a se moze 
vidjeti da u nekim slucajevima u lokaciju za brisanje watchdog-a 
program svaki put upisuje sve manji i manji broj. Koliko vidim jos 
nitko nije otkrito zasto. Ja sam u programu recimo stavio da se u tu 
lokaciju uvijek upisuje nula i cini se da sve radi OK. Takvih stvari 
koje je dosta tesko otkriti ima na desetke.

BTW, vidim da u Atomix-u na pocetku intro-a i nakon pokretanja programa 
na vrhu ekrana titraju karakteri - da li to znaci da si variable za 
rutinu koja raspakirava podatke (ili prije pokretanja prebacuje program 
na drugu lokaciju) stavio u video RAM?
-- 
Let There Be Light
Custom LED driveri prema specifikacijama
http://tinyurl.com/customleddriver

Chupo

Back to hr.comp.programiranje.java | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

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