1,601

(99 odpowiedzi, napisanych Sprzęt - 8bit)

Psychol ma przerwe na modlitwe, ale niedługo wróci

z ostatniej z nim rozmowy wynika że potraktował GTIA 14MHz-ami w celu uzyskania gęstszej ilości zmian (1 pixel HiRes = 1 kolor z palety 128 kolorów), trwało to krótko a najbardziej znaczącą zmianą było powstanie dymiącej dziury w GTIA

1,602

(99 odpowiedzi, napisanych Sprzęt - 8bit)

DRACON:
>> Czy ten caly upgrade sluzy tylko do generowania nieruchomych obrazkow, czy tez do jakis efektow w demach?

TEBE:
nie tylko statyczne, ale dema Ci teraz nie napisze, jeśli widziałes dema na C64, Spectrum to wiesz ze z ich mapą kolorów można ruchome efekty uzyskac (dokonam konwersji jakichś obrazków z dem, gier np. North&South)

aktualnie Psychol musi dorzucic pare układów (multiplexerow) aby obniżyć rozdzielczość tej akceleracji GTIA, to co jest pokazane na ekranach przykładowych działa z pełną mocą, obniżenie rozdzielczości pozwoli tworzyć mape kolorów jako pola wielkości znaków 8x8 pixli HiRes (albo wieksze) przy pomocy jednego wpisu do pamięci dopałki, aktualnie są to pola 4x1 HiRes

scroll pionowy widziales na załączonych filmikach?  wiec pinball-e czy inne scrolowane w pionie gry można łatwo uzyskać (scroll w poziomie jest z krokiem co 4 pixle HiRes aktualnie)


DRACON:
>> czemu z lewej strony zawsze sa te "paseczki" (na kazdym obrazku)???

TEBE:
kolorowe paseczki sa widoczne przez to ze za wczesnie w linii wstawiam wartosc do rejestru $d01a, to jest do poprawienia


DRACON:
>> Jaka jest dostepna paleta kolorow do wykorzystania i co sie dzieje,

TEBE:
paleta 128 kolorów, taka jak w Atari, chyba ze zaczniemy uzywać trybów GTIA wtedy 256 kolorów (ale rozdzielczość wtedy spada, pixle 4x1 HiRes, a mapa kolorów 8x1 HiRes)


DRACON:
>> jak sie taki obrazek nagle przelaczy na tryb zwyklego GTIA? ;)

TEBE:
załączony przyklad ASM_EXAMPLE (plik PSYCHOL.OBX) można odpalić pod emulem, czy pod standardową Atarką, zostanie wyświetlona bitmapa w 4 kolorach szarości, bo takie kolory akurat ustawiam na przerwaniu VBL


p.s. #1
imagen21 to efekt zabawy strzałkami kursora, gora/dol scrol pionowy, lewo/prawo scrol poziomy mapy kolorow

p.s. #2
image22, imagen24 to ekran BASIC-a z włączoną dopałką, Psychol napisał krótki program przy tak ograniczonej widoczności, efekt działania jest pod linkiem FILM #3 (video2.mpg)

1,603

(99 odpowiedzi, napisanych Sprzęt - 8bit)

właściwy adres to oczywiście http://madteam.atari8.info/index.php?prod=gtia2

1,604

(99 odpowiedzi, napisanych Sprzęt - 8bit)

http://madteam.atari8.info/index.php?prod=gtia2

Strona uaktualniona o nowe zrzuty ekranów, m.in. grafiki przeniesione z C64

Przykłady imagen20.jpg, imagen19.jpg mają specjalnie skróconą bitmapę aby zmieściły się w pamięci, aktualnie (asm_example.zip) wszystkie dane pakowane są deflaterem, wrzucane pod ROM od adresu $E000 i stamtad rozpakowywane pod właściwe adresy. Jeśli obrazki są bardziej skomplikowane wówczas występuje więcej zmian kolorów/rejestrów i pliki REG.DAT i VAL.DAT nie pakują już się tak dobrze przez co nie mieszczą się pod ROM-em. W nowszej wersji zostanie to poprawione.

Do zassania GFX_CONVERTER, program zamienia BMP-y 320x240 na dane potrzebne do asemblacji ASM_EXAMPLE (wygenerowane pliki GFX.MIC, REG.DAT, VAL.DAT kopiujemy do katalogu z asm, uruchamiamy !GO.BAT i mamy plik który po uruchomieniu na dopałce pokaże obrazek).

Pozatym przy pomocy GFX_CONVERTER-a możemy obejrzeć jak zmieniane są rejestry kolorów, możemy też pliki GFX.MIC, GFX.COL wczytać do G2F i obejrzeć jak wygląda grafika gdy zmieniamy tylko  4 rejestry ($d01a,$d016,$d017,$d018) koloru na początku każdej linii obrazu.

W samym przykładzie ASM_EXAMPLE (PSYCHOL.ASM) aktualnie komunikacja z dopałką GTIA odbywa się przez strone $D6 (przejściowo), zapis do komórek pozycji poziomej i pionowej musi zostać wykonane 2x (przejściowo) pierwszy zapis zatrzaskuje - drugi zapisuje w pamięci (niedopatrzenie związane z zatrzaskiem).

wypełnienie pamięci dopałki wygląda tak (wypełniamy rejestr=$d01e, dana=$00):

    mva #0 xpos
    sta xpos
    sta ypos
    sta ypos

    mva #$1e rin

    lda #$00

    ldx #0
    ldy #0

clr            sta din
    iny
    bne clr

    stx ypos
    stx ypos

    inx
    bne clr

zrezygnowaliśmy z automatycznego zwiększania pozycji pionowej (gdy pozycja pozioma >255) ponieważ nie jest to wykorzystywane tak często (można realizować to programowo) a dzięki temu oszczędzamy miejsce na płytce i na elektronice.

1,605

(99 odpowiedzi, napisanych Sprzęt - 8bit)

tryb pracy wpłynie na szerokość zmian, czyli jak normalnie zmiana rejestru dotyczy szerokości pół znaku tak zmiana trybu może spowodować że zmiana rejestru będzie dotyczyć już szerokości całego znaku

jeszcze raz musze o to zapytać Psychola aby się upewnić, ale zmiana trybu dotyczyć ma też kilku linii (2,4,8 itd.) czyli ogólnie chodzi o to że zmiana zawartości rejestru obowiązywać będzie na większym obszarze co w konsekwencji oznacza mniejsze zużycie pamięci i możliwość jeszcze szybszej aktualizacji pamięci dopałki

1,606

(99 odpowiedzi, napisanych Sprzęt - 8bit)

uzupełnię informację dotyczącą kolejności zapisu rejestru i wartości, nie zwróciłem na to uwagi ale rzeczywiście ma to znaczenie bo pozwala skrócić transfer do pamięci dopalonego GTIA

prawidłowa kolejność to: rejestr, wartość (po zapisie wartości następuje zapisanie w pamięci GTIA)

czyli możemy zapisywać tylko wartości a rejestrem będzie ten który został ostatnio zapisany (taka optymalizacja szybkości i objętości transferu)

kolejne marzenia za grosz: modyfikowany adres startu pobierania przez dopal wartosci ze swojej pamieci.

o czymś takim wspomniał Psychol gdy z nim ostatnio rozmawiałem, dla trybu z najczęstszą zmianą rejestrów byłby tylko jeden 64kb bufor, gdy ustawimy inny tryb pracy i zmiany stają sie szersze, zużycie pamięci spada i wtedy można wskazać adres skąd ma pobierać dane, będzie można zmieścić więcej niż jedną mapę zmian

1,607

(99 odpowiedzi, napisanych Sprzęt - 8bit)

dopałka sama nie potrafi się modyfikować, bo rozpoznaje adresowanie tylko 5 bitów młodszego adresu rejestru (bity 0..4), czyli potrafi zapisywać tylko obszar strony $d000..$d01F (pozostałe bity młodszego adresu rejestru 5..7 są inaczej interpretowane i na nic się zda próba zadresowania >$D01F)

jeśli jest w trybie OFF to wyświetla obraz zwykłe niedopalone GTIA, czarny ekran będzie jak wyłączymy obraz dla ANTIC-a ($D400=0)

można zapisywać/odczytywać na stronie $D0XX ale na końcu rysowania obrazu, wyłączamy dopałke i możemy pisać/czytać $D0XX

1,608

(99 odpowiedzi, napisanych Sprzęt - 8bit)

mozna wygenerować przerwanie, ale jeśli będzie zbyt gęsto umieszczone, np. w tej samej linii kilka razy, to CPU 6502 w najgorszym przypadku (zbyt długi kod obsługi przerwania) nie wyrobi się z obsługą

GTIA wygeneruje przerwanie dla CPU, ale go nie zhaltuje, GTIA robi swoje, CPU robi swoje tzn. w przypadku przerwania NMI skacze pod wektor $FFFA do obsługi przerwania (w tym czasie GTIA nadal "zapieprza" do przodu)
starczy czasu na kilka operacji (Antic tworzy linie średnio w czasie ~113 cykli CPU, pod warunkiem że zaczęliśmy od początku linii), rejestry na stronie $d0xx są aktualnie tylko do zapisu, dlatego OS głupieje bo probuje czytać np. $d013 (TRIG3 - znacznik dołączenia kartridża)

WSYNC ($d40a) tutaj nic nie zdziała, zahaltuje CPU6502, ale GTIA będzie robić swoje bo nic nie jest go wstanie zahaltować, możemy jedynie przejść w normalny tryb pracy GTIA co oznacza też że możemy zacząć zapisywać/modyfikować pamięć dopalacza

1,609

(24 odpowiedzi, napisanych Scena - 8bit)

a przez SDLOAD już probowaliście spod Sparty ?

1,610

(99 odpowiedzi, napisanych Sprzęt - 8bit)

koszt, w granicy 100..120 zł na pewno powinno się to zmieścić

aktualnie wykorzystywane rejestry:

$d020 - ON/OFF
$d021 - tryb pracy liczników (ogólnie szersze/węższe zmiany dzięki czemu mamy
        większą/mniejszą zajętość pamięci GTIA i szybszą/wolniejszą możliwość jej modyfikacji)
$d022 - shift Horizontal (w trybie ON), licznik linii poziomej (w trybie OFF)
$d023 - shift Vertical (w trybie ON), licznik linii pionowej (w trybie OFF)
$d024 - DATA - wartość jaką chcemy wstawić do rejestru
$d025 - REJESTR (bity 0..4) do którego zapisujemy
        bity 5..7 do wykorzystania (bit 5 będzie powodował wygenerowanie przerwania NMI)

zapisywanie pamięci GTIA jest gdy $d020=OFF (wartości na jakie będzie reagował mogą jeszcze ulec zmianie), do $d022 wpisujemy pozycje poziomą, do $d023 pozycje pionowa i zaczynamy "zapychać" pamięć, wartość do $d024, młodszy adres rejestru do $d025 (kolejność istotna)

zapis do pamięci GTIA powoduje zwiększenie licznika $d022, jeśli przekroczy 255 to zwiększany jest licznik $d023, liczniki $d022-$d023 pozwalają na różne sposoby zapychania pamięci

gdy zapisaliśmy/zmodyfikowaliśmy pamięć GTIA możemy włączyć wyświetlanie $d020=ON, teraz zmiana licznika $d022 powoduje scrol poziomy, $d023 scrol pionowy wyświetlanej mapy kolorów/rejestrów


aktualnie trzeba wyłączyć OS aby nie nastąpił zwis, OS odczytuje niektóre rejestry np. $d013, jeśli $d013<>$3fa = jmp $c0df czyli pętla bez końca, OS czyści też całe strony pamięci (zdaje się po resecie) $d0,$d2,$d4,$d3 (bez $d301) wpisując tam zera

jeśli gtia w tym trybie ma być "przeźroczysta" dla systemu trzeba uwzględnić w/w sytuacje i pewnie jeszcze troche, aby GTIA nie zaczęło reagować gdy zapisywane są zera, no i żeby wystawić odpowiednie wartości, np. dla $d013=0 (wpiszcie do $3fa wartość <>0 powinien nastąpić zwis).


lepsze efekty do pokazania będą jak Psychol podłączy właściwą pamięć (64kb x 16bit), teraz jedzie na częściach które miał pod ręką

w wersji finalnej ma to byc płytka która wcisnie się w podstawkę po GTIA (jeśli nie ma podstawki trzeba ja wlutować), pare kabelków połączeniowych i koniec (nie ma cięcia ścieżek).

1,611

(99 odpowiedzi, napisanych Sprzęt - 8bit)

moze byc tecza na całej powierzchni ekranu ;)

XXL: tak, tylko pamietaj ze oprocz GRAFPM musisz wczesniej dla kazdej nowej pozycji ustawic HPOSP, no ale czasu masz do takich operacji już wystarczająco

1,612

(99 odpowiedzi, napisanych Sprzęt - 8bit)

ustawiasz licznik na interesującą Cie pozycje X+Y*256, i zaczynasz "wpychać" wartość+rejestr, licznik jest zwiększany automatycznie, po przekroczeniu 256 bajta zwiekszany jest o strone, wiec można wpychać od dowolnej pozycji

1,613

(99 odpowiedzi, napisanych Sprzęt - 8bit)

a tak zeby udowodnic ze gole GTIA nie powiedziało ostatniego słowa

1,614

(99 odpowiedzi, napisanych Sprzęt - 8bit)

Psychol mowi:
schemacik bedzie, jak hard bedzie skonczony, tera trza sie dogadac  w sprawie komunikacji programowej.
kompromis miedzy ilościa rejestrów a subiektywna wydajnościa, osobom niewtajemniczonym w schemat dziekuje za sugestie, nie obchodzi mnie co by można było gdyby... itd.
jest pewien schemat i kilka osób wie co ten hard potrafi, nie da sie tego przebudowac pod czyjes widzimisie...
jest to całkowicie oparte o układy logiczne, żadnych procków i innych dopalaczy na tym nie ma!
wyciska to 100% z gtia, gdzie podczas pracy procesora 6502 hamowanego przez halt z antica nie jest to możliwe.
działa to z taka predkościa jakby niechamowany 6502 wykonywał w jednym cyklu maszynowym:

        lda #$xx
        sta $d0xx

robiłem to w 4 dni po 2-3 godzinki z cześci wylutowanych z płyt od centrali e10a :)

pozdro psychol...

1,615

(99 odpowiedzi, napisanych Sprzęt - 8bit)

ok, rozszerzenia plików zostały poprawiony, wszystkie są na *.JPG

ogólnie bombarduje tylko swoją strone $D0XX czyli strone z rejestrami GTIA, nie ma aktualnie możliwości bombardowania innych obszarów, bo po co

pamięć tak naprawde jest 16-bitowa, dokonując jej zapisu podajemy wartość oraz młodszy bajt adresu rejestru GTIA (kolejność dowolna, bo i tak przechodzi to przez dodatkowe rejestry w których zapisujemy te wartości), ogólnie jeśli CPU wykonuje 2-a cykle zegarowe, GTIA w tym trybie w tym samym czasie jest zdolne wykonać jakby 6 cykli CPU

obraz wyświetlany jest cały od linii 0, pozycji plamki 0, do końca, zawsze wyświetlany jest fullscreen, bez obciążania głównego CPU

główny CPU obciążany jest jedynie przesyłem danych do pamięci GTIA i to jest wąskie gardło, bo wypełnienie całej pamięci z użyciem standardowego CPU6502 trwa ok. 130 ramek (3 sek), w sumie jest to 256x256x2 bajtów (128KB)

na szczęście nie trzeba zawsze wypełniać całej pamięci, można tylko jej fragment, można w sumie nie czekać aż plamka skończy rysować cały obraz ale wtedy trzeba się synchronizować z linią obrazu, ale nie ma licznika linii obrazu jak ma to miejsce w ANTIC-u ($d40b jest tutaj nie używane)

szerokość zmian kolorów uzależniona jest od GTIA, w trybach 9,10,11 OS interpretacja rejestrów GTIA najwyraźniej odbywa się "wolniej" przez co zmiana koloru jest szersza, w pozostałych jest "szybsza" przez co zmiany są węższe


inny sposób wytłumaczenia tego trybu działania GTIA:

wyobraźmy sobie mamy tryb 15OS (160x192 pixle w 4 kolorach), do dyspozycji dostajemy 4 pisaki o dowolnych kolorach z palety atari, możemy nimi rysować obraz linia po linii (od lewej do prawej) i co 2 pixle bitmapy możemy jednemu z tych czterech pisaków przypisać nowy kolor

mozna policzyć ile WSYNC-ów wypadnie, ok. 23 wpisów "sta $d40a" będzie niepotrzebnych

do tego dojdzie inicjalizacja adres-u przerwania ($200), dodatkowo napiszesz swoją szybszą obsługe przerwania NMI, DLI

w niektórych przypadkach pewnie uda się całkowicie zrezygnować z "STA $D40A", usuniesz taki wpis i sprawdzisz czy z obrazem jest wszystko OK

ogólnie zysk lekko licząc 40%, wspomne jeszcze że bitmapa jest szybsza niż tryb znakowy

a bedzie trzecia wersja pod wciśnięty klawisz F7 :D

zapoznaj się z postem #4 - p.s. #4  to da Ci szanse na sukces

1,618

(99 odpowiedzi, napisanych Sprzęt - 8bit)

http://madteam.atari8.info/index.php?prod=gtia2

Modyfikacja opracowana przez Psychola wprowadza nowy tryb pracy GTIA, który można włączyć/wyłączyć programowo. GTIA w tym trybie dokonuje ze stałą częstotliwością zapisu wartości pod wskazanym rejestrem $D0XX (w stylu lda #x\ sta $D0xx). Strona $D0XX z rejestrami GTIA w tym trybie pracy jest tylko do zapisu, nie można z niej nic odczytywać (odczyt możliwy jest po przełączeniu na tryb standardowy na przerwaniu VBL). W zależności od użytego trybu graficznego zmiany kolorów widoczne są na szerokości połowy znaku (np. tryb 8,15OS) lub całej szerokości znaku (np. tryb 9OS). Zapisywana wartość jak i młodszy bajt adresu rejestru $D0XX przechowywana jest w dodatkowej pamięci (128KB) do której dostęp z poziomu CPU możliwy jest na końcu tworzonego obrazu, obraz zawsze tworzony jest na całej szerokości (256 wpisów) i wysokości (256 linii) obrazu (GTIA w tym trybie nie obciąża głównego CPU). Możliwy jest scroll poziomy każdej z linii, jak i scroll pionowy ale już całego obrazu. Na załączonych zrzutach ekranów widać jak zmieniana jest zawartość rejestru $D01A na całej wysokości obrazu (jakość obrazu nie jest najlepsza, winna jest karta graficzna i kabelki połączeniowe). Oczywiście nie musimy dokonywać za pomocą tego trybu wpisów tylko do rejestrów kolorów, możemy dokonywać wpisów do pozostałych rejestrów np. pamięci duchów GRAFP0..3 co spowoduje ich rozmnożenie w linii. Do czego może przydać się taki tryb pracy GTIA? Do stworzenia mapy zmian kolorów dzięki której można wyświetlić obrazek bez interlacu w pełnej palecie kolorów XE/XL, do rozmnożenia duchów w linii, do zmiany trybu graficznego w linii.

p.s.
no i najważniejsze, jest to nadal Atari :)

jeśli masz tych przerwań DLI więcej niż jedno, to podczas transmisji mogą (i najczęściej tak się dzieje) zmienić kolejność wywołań, któreś z nich zostanie pominięte w zależności od obciążenia

rozwiązaniem może być IRQ-SIO loadera z Energy zina grupy Taquart, wtedy możesz i sample odtwarzać podczas transmisji

ogólnie korzystając z DLI kod musi być najkrótszy-rozpętlony, najlepiej pozbyć się też "STA WSYNC"

nie bez powodu grafiki podczas transmisji są mało kolorowe

obsługa przerwania NMI, DLI powinno być Twoje, bo niewątpliwie będzie szybsze od wersji Atari OS, podczas transmisji tylko IRQ jest potrzebne

p.s.
Muppet Movie Show korzysta podczas transmisji z przerwan DLI, jednak nie jest to tak ambitne jak w załączonym przez Probe loaderze

p.s. #2
"STA $D40A" winne jest wszystkiemu, w tych miejscach CPU jest blokowane, to jest HALT

p.s. #3
obrazek podczas transmisji = 1 zestaw znaków, 0 zmian na przerwaniu DLI, zmiany globalne tylko na VBL-u
albo SIO-IRQ loader, ale wtedy transmisja tylko normal

p.s. #4
więcej czasu zyskasz jeśli obrazek będzie bitmapą, wtedy z przerwaniem DLI wstrzelisz się w zadaną linie i użyjesz tylko 1x "STA WSYNC" na początku zmiany, zawsze to zysk i większa szansa na powodzenie

ogólnie pewnie będziesz musiał ręcznie wyedytować w ten sposób jak najkrótsze przerwanie DLI, a Powrooz będzie musiał zrezygnować z 5-ego koloru i przerobić logosa na bitmapę

1,620

(10 odpowiedzi, napisanych Sprzęt - 8bit)

no dobra ale BASCOM AVR nie jest darmowy

1,621

(10 odpowiedzi, napisanych Sprzęt - 8bit)

a te kompilatory IAR A90 (GCC AVR) to darmowe czy kradzione ?

1,622

(10 odpowiedzi, napisanych Sprzęt - 8bit)

Pasiu pracuje we Wrocławiu, a dopałką pewnie zajmuje się w domu, a do domu trafi w najbliższe święta :)

1,623

(27 odpowiedzi, napisanych Sprzęt - 8bit)

Lewis a tak przy okazji to czym zajmujesz sie w Londonie oprócz picia piwa :) ?

1,624

(30 odpowiedzi, napisanych Fabryka - 8bit)

znany jest już koszt Videoboarda ?

1,625

(10 odpowiedzi, napisanych Sprzęt - 8bit)

a jak rozwiązana jest sprawa kompatybilności ze starymi aplikacjami wykorzystującymi banki pamięci, jest osobna pamięc bankowana i osobna liniowa ?