26

O... Takie rozwiazanie mi sie podoba... koniec z dziesiatkami przelacznikow. Jezeli w setupie naprawde da sie np. ustawiac stereo, to bomba :)

27

macgyver: gdzies niedawno widzialem dual port sram .... u samsunga chyba, ale teraz nie widze - moze wycofali ? Poszukam jeszcze...

candle: mylisz sie. Antic czyta dane obrazu a GTIA czyta dane spriteow.... Antic zatrzymuje procesor, wystawia adres i mowi do GTIA "wez se te dane !" - tak sie to dzieje. 3 bitowa magistrala nie ma NIC do PMG. Polecam stosowne PDF od ANTICA i GTIA.

pomidor

28

electron: przeczytaj to jeszcze raz, jak dalej te same wnioski to wez slownik i popros kogos niech ci przeczyta.. gtia nie ma w swojej stroktorze niczego odpowiedzialnego za dma, cale pobieranie danych odwala antic

przechodze na tumiwisizm

29

Prawda lezy po srodku - ANTIC robi DMA (haltuje CPU, wystawia stosowny adres na magistrali adresowej), ale to GTIA zczytuje z szyny danych wartosc z danego obszaru adresowego - zauwazmy: obszar pamieci na podstawie starszego adresu obszaru spritow, uwzglednienia parametru czy rozdzielczosc stprite-a ma byc dwu- czy jednoliniowa i adres kolejnego bajtu danych wyznacza ANTIC. GTIA moze conajwyzej zczytac z szyny danych (do tego nie trzeba ze strony GTIA mechanizmu do DMA, wystarczy, ze mu ANTIC przekaze "cos" po slawetnych 3-liniach) i nasze kochane GTIA olewa wtedy np. magistrale adresowa, sygnal r/w i po prostu czyta z szyny danych, gdyz to ono naklada maski spriteow na ekran. Swoja droga chetnie bym dowiedzial sie czegos wiecej na temat komunikacji za pomoca owej 3-bitowej magistrali miedzy ANTIC-iem i GTIA, ma ktos jakis opis ?

30

Macgyver: Ty masz racje. Dokladnie o to mi chodzilo. Nie powiedzialem, ze GTIA robi DMA (ten uklad nie ma takiej mozliwosci!) , tylko ze czyta dane duszkow, ktore przygotuje mu antic, tzn. antic wystawia adres, wytwarza odpowiednie sygnaly strobujace a dane, ktore sie w wyniku tego pojawia na szynie czyta juz GTIA. Ot tak sie wspomagaja... (Inne dzialanie byloby nawet nielogiczne - angazowalo by za bardzo transmisje pomiedzy tymi ukladami).  Co do 3 bitowej magistrali - ostatnio zrobilem uklad, ktory zastepuje GTIA, tzn. interpretuje dane z tej magistrali i wyswietla na TV przez wejscie RGB... Dziala we wszystkich trybach oprocz trybow GTIA i nie ma spriteow i rejestrow kolorow.  Ale dziala ! I na ekranie po wlaczeniu kompa mam piekne READY !   A zrobione to jest na 2 ukladach GAL... Mac: robimy projekt nowego GTIA ?  ;) Co do opisu.... PDF  (gtia.pdf) jest gdzies Vaskowych plytach... Ja mam, jak przyniose do roboty to Ci przesle.

Candle: o jakim slowniku mowisz? Poza tym patrz jak wyzej.

pomidor

31

Electron: co do projektu - czemu,nie ? ;)

Przypuszam (nie przegladalem dokumentacji, ale tak mi moj chlopski rozum podpowiada), ze owe 3 bity po prostu przekazuja aktualny numer wyswietlanego koloru (antic rozroznia 5 niezaleznych kolorow) + jakies specjalne wartosci, ktore np. wymuszaja czytanie przez GTIA danych spriteow.
IMHO zawila sprawa emulatora GTIA beda tryby graficzne 9,10,11 - tutaj przydalyby sie jakies rejestry, ktore odczytywalyby 4 kolejne wartosci i rzucaly na ekran jako tryby GTIA - sam moment wyzwolenia pracy moznaby bylo uwarunkowac pojawieniem sie koloru nr.2 (ten rownowazny z komorka 710) - raczej nie slyszalem, zeby ktos uzywal trybow GTIA nakladanych na inny tryb graficzny niz gr.8 (ew gr.0, ktory jest pochodny).
Z sprite-ami moze byc wiekszy problem - ruch poziomy moznaby bylo rozwiazac poprzez jakis system licznika, ktory zliczalby cykle koloru i po osiagnieciu wartosci rownej zawartosci komorki odpowiadajacej za polozenie poziome po prostu by wyswietlal z bufora zawartosc - najpierw jednak trzebaby dokonac jakiegos porownania, z tym co idzie na ekran, zeby uwzglednic kolizje i ustalic priorytety kolorow i duszkow, ktore beda wyswietlane na ekranie.
Najwiekszy problem bylby chyba z definicja kolorow - tu trzebaby bylo dorzucic jakis (EP)ROM z definicjami precyzyjnie dobranych barw.

Btw. skoro udalo sie uzyskac sygnal w postaci niezaleznych skladowych RGB moze warto byloby zrobic cos, zeby mozna bylo podlaczyc Atarke do VGA ? trzebaby bylo wtedy miec 2 razy wieksze synchro poziome (31 kHz) i jakis bufor, ktory by buforowal jedna linie obrazu koncowego i umozliwialby jej dwukrotne wyswietlanie.

Na razie takie mysli nawiedzily moj leb tytulem "zrobienia" GTIA na swiezo po przeczytaniu propozycji Electrona ;)

32

...raczej nie slyszalem, zeby ktos uzywal trybow GTIA nakladanych na inny tryb graficzny niz gr.8 (ew gr.0, ktory jest pochodny).

Teoretycznie nie (choć nie jestem pewny czy ekran podczas wczytywania intra Juzek by Koala nie jest w trybie $e+$40 w $26f), ale zawsze może się tak zdarzyć. Jeśli emulator miałby być 100% to musicie umożliwić narzucanie trybów GTIA na każdy tryb graficzny...

33

Btw. wydaje mi sie, ze GTIA teoretycznie jest w stanie generowac oprocz swoich 3 trybow graficznych takze tryb zgodny z gr.15 - skad taki wniosek ? Pamietacie demko GIRL by Our 5oft ? Zostala tam zastosowana sztuczka, ze w jednej linie ekranu uzyskano 3 tryby graficzne na raz - gr.8, gr.9 i gr.15.  Wykonanie tego tricku polega na tym, ze w trakcie wyswietlania lini w gr.8 wlacza sie maske $40 trybu GTIA (czyli wlacza sie gr.9) a nastepnie, gdy raster "poszedl" nieco dalej z powrotem sie wylaczalo maske $40 (tryb gr.9) - jednak wtedy zamiast gr.8 pojawial sie tryb podobny do gr.15 (w zasadzie od oryginalnego gr.15 roznil sie tylko inna kolejnoscia rejestrow koloru) ale tylko do konca bierzacej linii, a ze ANTIC w Display Liscie mial linie $f (gr.8) a przelaczanie odbywalo sie tylko na rejestrach GTIA stad prosty wniosek, ze owa gr.15 w calosci tworzyl GTIA a nie ANTIC.

34

Z sprite-ami moze byc wiekszy problem - ruch poziomy moznaby bylo rozwiazac poprzez jakis system licznika, ktory zliczalby cykle koloru i po osiagnieciu wartosci rownej zawartosci komorki odpowiadajacej za polozenie poziome po prostu by wyswietlal z bufora zawartosc - najpierw jednak trzebaby dokonac jakiegos porownania, z tym co idzie na ekran, zeby uwzglednic kolizje i ustalic priorytety kolorow i duszkow, ktore beda wyswietlane na ekranie.

! hehe... dlaczego zapodawac 1 bajt? na 1 sprajta? odrazu 4 bajty i mamy sprajty 32*256 :-))) dlaczego? tylko 4 + 1 sprajt? ;-) hmmm pixel sprajta po 0.5 cyklu koloru? :-)

http://atari.pl/hsc/ad.php?i=1.

35

xxl: Oczywiscie, ale nalezaloby zachowac 100% zgodnosci w dol. Wieksze sprite-y oznaczalyby koniecznosc przerobek ANTIC-a, a ten chip jest chyba bardziej zakrecony niz 6502 :) Chyba, zeby zastosowac w ukladzie zastepczym GTIA wlasna pamiec, i od obszaru $d020 umiescic dodatkowe rejestry umozliwiajace sterowanie dodatkami. A jak juz mielibysmy pamiec, to czemu nie wykorzystac jej do mapowania kolorow dla praktycznie kazdego piksela ? :) Wtedy bysmy mogli uzyskac 320*2xx przy palecie 256 kolorow bez ograniczen, bez interlaceow itp - to bylby czad, nie ?
Tylko powraca stary dylemat... czy to bedzie mialo jeszcze cos wspolnego z Atari ?

36

sekwencja dla lini trybu hi-res:
011 1xx 1xx 1xx ... gdzie x to wartosci poszczegolnych pixli
sekwencja dla trybu 16 odcieni:
011 1sr 1qp 1sr 1qp ... gdzie %pqrs to wartosc jednego pixla
teraz gdy wlaczymy tryb hi-res, odczekamy chwile, wlaczymy tryb 16 odcieni, odczekamy chwile i wylaczymy go to gtia przejdzie do native mode...
jak wyglada linia w native mode?
010 1qp 1qp 1qp ...
i jestesmy w mid-res
problem w tym ze to gtia zglupialo i antic nigdy nie wyslal rozkazu 010, wiec gtia nie wygenerowal hsync, ale zresetowal sobie sposob interpretacji danych od antica

jesli ktos chcialby sie pobawic to prostym jest dodanie powiedzmy mapy kolorow takiej jak w c64
problemem jest zmiksowanie tych informacji z danymi gtia - mamy 4 wyjscia luminacji i tylko jedno koloru
kolor kodowany jest jako przesuniecie fazowe miedzy cstrobe, a wyjsciem na nodze color gtia
trzeba to rozkodowac do rgb i zmiksowac spowrotem

przechodze na tumiwisizm

37

Są dwa rozkazy hsync...  010 włącza - tryb "natywny" - pixel co cykl koloru (np. antic 14), oraz 011 - tryb "hi res" - GTIA dzieli cykl koloru na dwie czesci z czym jest pewien problem - otóż GTIA dostaje zegar 3.54 MHz (PAL) lub 3.57 MHz (NTSC). - z tego wynika, że pixel w hi-res ma długość ... no właśnie 1/2 cyklu koloru - i w zależności od jakości oscylatora komputera niekoniecznie wypełnienie tego zegara wynosi 50 % - powinien to zapewnić sam GTIA, ale w niektórych wykonaniach coś jest skopane i  nie zapewnia. Efekt? W hi-res co drugi pixel jest chudy /  gruby oraz .... słynne walnięte tryby GTIA.  Dobrze byłoby, gdyby przy ew. projektowaniu G2, zegar taktujący dać 14.187 / 2 = 7.09MHz czyli oscylator 14.18 jak w XE a wejście zegara G2 7.09MHz - dzięki dzielnikowi nie będzie problemu z symetrią pixeli. Problem jest z takim oscylatorem - nie ma go w standardowym szeregu! (jest za to 14.318 dla NTSC).

Jeśli by spritey zrobić na własnej pamięci G2, wówczas.... Dlaczego tracić dane, które podawane są jako dotychczasowe duszki ? Jest tego 5 bajtów co linię. Mam taki pomysł :

Każdy z tych bajtów (numery 0...4) przełącza zestawy rejestrów kolorów (6 kompletnych zestawów). Jest to nic innego jak ograniczona (w poziomie do 5 zmian) mapa kolorów ! Co Wy na to?

Acha.... Stara GTIA musi oczywiście zostać - kompatybilność.... plus generacja synchronizacji ! :-)

Jeszcze jedno : W tym celu kupiłem układ ALTERA ACEX1K (TQFP 144).... 130 pln... Potrzebna jeszcze pamięć do spriteow.... i wiele wiele pracy czasu wolnego dużo też ...  :-(

pomidor

38

Jeszcze jedno... Zapomniałem dopowiedzieć co do pomysłu na mapę koloru - miejsce przełączenia odpowiadałoby z dokładnością do cyklu koloru wartości bajtu (obecnego duszka).


Wyjście G2 przewidywałbym jako RGB (trzeba dołączyć DAC) z koderem PAL/NTSC np. AD724. Jakość koloru.... powinna być nieporównywalna !

pomidor

39

sa jakies szanse ze sie upchasz w 200pln? :D bo cos tego nie widze
moje moze bedzie zajmowac 4-5 razy wiecej, ale i koszt bedzie 4-5 razy mniejszy

przechodze na tumiwisizm

40

http://www.averlogic.com/password/AL5DS_Flyer.PDF

http://atari.pl/hsc/ad.php?i=1.