451

(12 odpowiedzi, napisanych Miejsca w sieci)

Wogole fajnie ze ktos sie zajął tematem na powaznie. Pozyskują wsparcie wladz, firm i mediow. Fizyczne muzeum w Polsce jest coraz bardziej realne :)

452

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

To realistyczny symulator przejscia przez jezdnie na pasach. Nie wcisnąłeś na czas joya w góre, bum! tiiiiiii i widze ciemnosc: GAME OVER ;)

453

(4 odpowiedzi, napisanych Bałagan)

no toz taka gra byla na Grzybsoniadzie: 5 miejsce "OrderIt"
http://www.atarionline.pl/v01/index.php … ct=nowinki

454

(259 odpowiedzi, napisanych Fabryka - 8bit)

Poniewaz znow jest wiele hipotez i niedomówien, to moze opiszę pokrótce jak chcę zorganizować pierwszy prosty frimeware graficzny i poproszę o komentarze.

Założenia:
1. TOMEK w kazdej ramce od nowa rysuje cały ekran, czyli najpierw tło a na nim wszystkie obiekty. Nie widzę sensu w zabawie w obliczenie które elementy się przesuneły względem ostatniego obrazu i które fragmenty trzeba odswiezac czy zamalowywac. Pojechanie po całosci bedzie szybsze.

2. Z małej ilosci pamięci (8KB a od tego odchodzą jeszcze 2 strony) wynika brak mozliwosci buforowania w większości przypadków. Czyli na początek zakładamy że cały obrac będzie rysowany w czasie miedzy zakonczeniem rysowania przez Antic ostatniej linii obrazu, a rozpoczęciem rysowania pierwszej linii kolejnego obrazu.
Jednak w przyszlosci będę chciał dodać tryb, w ktorym PIC ma dwie pamięci obrazu i w czasie kiedy rysuje na jednej to Anticowi podaje dane z drugiej, a w kolejnej ramce na odwrót. Moze sie to przydać do trybu $0D Antica (160x96 w 4 kolorach).

3. To czy dane dla Antica bedą podawane w trybie graficznym czy tekstowym, to kwestia niezależna od wewnętrznej reprezentacji obrazu, która bedzie zawsze graficzna. Jesli programista Atari zazyczy sobie trybu tekstowego to zmieni jedynie sposob podawania danych dla Antica.

Jest rozkaz: "definiuj tryb graficzny" gdzie podaje sie szerokosc ekranu, ilosc linii i tryb Antica. Obecnie cały ekran obslugiwany przez PIC musi byc w jednym trybie graficznym.
Ale pamietajmy ze dzieki Anticowi i display list, PIC nie musi obslugiwac calego ekranu! Mozna mu zlecic np generowanie tylko 140 linii na ktorych dzieje sie akcja, a np. panel umiescic gdzies w pamieci Atari w dowolnym trybie graficznym.

4. To jak bedzie rysowane tło jest niezalezne od dalszych operacji. Moze to byc statyczny obrazek (najszybsza opcja). Moze byc skladany z kafli o roznej wielkosci. Kwestie scrolla na razie zostawmy do dalszego zastanowienia.

5. Obiekty: tła, bitmapy i fonty będą skladowane w pamieci flash PIC'a. Zakladam ze będą mogly byc tam ladowane przez Atari. Na obiekty bedzie mozna wykorzystac od 66KB do 100KB.

6. Obiekt typu bitmapa moze miec szerokosc bedącą wiekokrotnoscia slowa (2 bajty) i dowolna ilosc linii.

7. Zamierzam zrobic obsluge duszków w formie podobnej do sprzętowych PMG. Liczba duszków będzie ograniczona do max 32 (oceniam ze to wystarczająca liczba, ale się do niej nie przywiązuję na razie). Będą rozkazy, służące do przypisania do duszka bitmapy, ustawienia go na pozycji X,Y itp. Te dane (nr bitmapy, x, y) bedą zapamiętywane w tablicy.

8. NAJWAZNIEJSZE: Schemat generowania obrazu przez Atari będzie wygladal tak:
Tuz po zakonczeniu rysowania ostatniej linii obrazu przez Antic, Atari zarzadza tlem: np wydaje rozkaz narysowania tla o  numerze N z pamieci obiektow, albo rozkaz scrolla itp. Czeka na narysowanie tła. Pamiętajmy, że "czeka" to pojęcie umowne. Przeciez programista bedzie wiedzial co robi i ile mniej wiecej czasu PIC bedzie wykonywal te komendę. Atari moze w tym czasie wykonac cos pozytecznego, np wywolac player muzyki.
Po narysowaniu tła, Atari moze wydać rozkazy rysowania punktów, linii, innych figur geometrycznych, pisania tekstów itp itd. Wszystkie te polecenia będą wykonywane natychmiast.
Wydaje tez rozkazy przypisania obiektow do duszkow (np w celu animacji), zmiany ich pozycji itp.

Atari będzie mialo do dyspozycji również rozkaz "Rysuj obiekt N na pozycji X,Y". Ten rozkaz jest niezalezny od duszkow. Po prostu Tomek wezmie bitmape o wskazanym numerze i natychmiast naniesie ją na obraz w wybranym trybie (OR, AND, XOR, +maska). Po co to? Ano moim zdaniem nie ma sensu marnowac duszkow na jakies drobne obiekty typu pociski, linie lasera,
itp. Tym moze zarzadzac Atari kazac je rysowac w kazdej ramce.

Kolejny bardzo wazny rozkaz to "Rysuj duszki". Jesli duszkow bedzie 32, to ten rozkaz bedzie mial 4 bajty argumentow: po jednym bicie na duszka. 1 - duszek bedzie rysowany, 0 = duszek nie bedzie rysowany.
Ten rozkaz bedzie mozna wydawac wiele razy w ciągu rysowania jedbego obrazu.
Po co tak? Bo mozemy chciec najpierw narysowac jakies duszki będące na trzecim planie, uzupelniajace tlo o elementy ruchomer, pozniej naniesiemy "ręcznie rysowane" elementy, pociski, rysowane linie itp. A potem kolejnym rozkazem "rysuj duszki" naniesiemy obiekty pierwszoplanowe.
Innymi slowy, mozemy w ten sposob decydowac co na czym rysujemy.

9. Po przygotowaniu calego obrazu. Atari wydaje polecenie: "Generuj dane dla Antica". Od tego momentu PIC wie, ze jesli przyjdzie odczyt z "cwiartki $D5xx nalezacej do Antica" to ma podawac kolejno dane z pamieci ekranu w wybranym trybie.

10. Dzieki temu ze strone $D5 podzielilismy na obszary, w czasie kiedy Antic generuje obraz, program Atari moze jednoczesnie bez konfliktow korzystac z uslug PIC'a, np wydajac rozkazy operacji matematycznych czy inne. Moze nawet wydawac rozkazy wplywajace na pamiec obrazu, ale trzeba pamietac, ze moze to byc "brzydko widac".

I to tyle w duzym skrocie.


tebe napisał/a:

a jak wygląda kwestia detekcji kolizji? jakoś wspomagana czy bez wspomagania?

Nie wygląda. Nie mam na razie pojecia jak to zrobic, a wszystkie metody jakie jestem w stanie wymyslic wydaja mi sie koszmarnie niewydajne szczegolnie przy 32 duszkach.
Choc mysle ze prawdziwie przydatne byloby wychwytywanie nie kolizji "kazdy z kazdym" ale kolizji miedzy 2 obiektami (np. statki 2 graczy) a calą resztą obiektow i tlem.
Ale i tak na razie jest to dla mnie piesn przyszlosci. Outsoursing zakodowania tego bedzie mile widziany :)

455

(259 odpowiedzi, napisanych Fabryka - 8bit)

Bardzo mysle o paralaksie, choc nie do konca rozumiem czemu wszyscy mowia zeby to robic w trybie znakowym. Ja i tak pamiec ekranu w PIC zawsze bede mial w trybie graficznym. Jak ktos bedzie chcial tryb tekstowy to po prostu zmienie sposob generowania z tego ekranu danych dla Antica.

A propos budowania ekranu z kafli itp. To pokazuje ze gdybym mial robic jeden uniwersalny frimeware wyprzedzajac potrzeby to juz do konca zycia nic innego bym nie robil. Wole wypuscic wersje podstawową 1.0 i reagowac na konkretne potrzeby koderow. Przeciez jeden bedzie chcial kafla 16x16, a drugi 24x16 a trzeci poprosi dodatkowo o scroll. Nie sposob przewidziec wszystkiego.
Tym bardziej ze PIC tez nie ma nieskonczonej mocy i nie wszystko pociagnie.

Zrodla udostepnie wszystkim, jak tylko bedzie jakas w miare kompletna i opisana wersja. Z 3 powodow:

1. Ja jestem przecietnym koderem nawet w asm 6502, a tego asm PIC24 ucze sie od miesiaca czy dwoch. Bardzo mozliwe ze ktos podkreci moje procedury zeby dzialaly 2x szybciej.

2. Ten asm jest dosc prosty (wyzej zamiescilem link do opisu rozkazow). Licze na to ze nie ruszajac (a nawet niekoniecznie do konca je rozumiejac) tych najbardziej podstawowych procedur komunikacyjnych, ktos bedzie mogl dopisac sobie potrzebne mu procedury. Czyli np popatrzy jak wyglada moja procka stawiajaca punkt, a druga kreslaca odcinek i dopisze sobie wlasne kreslace okrag. I wzbogaci tym frimeware.

3. Sytuacja ktora opisal XXL, ze ludzie pisza gry a ja na zyczenie pisze im frimeware jest dobra, jesli tych "ludzi" bedzie 2 :P Ale jak bedzie wiecej to nie wydole. Szczegolnie ze jak od poczatku mowie, mam wielkie braki w umiejetnosciach "scenowych". Zaawansowane przekszatalcenia 2D, grafika 3D, czy nawet matematyka zmiennoprzecinkowa to tematy, ktorych nigdy nie uzywalem w asm na Atari. Pomysl ze nagle bede umial zaimplementowac to w asm PIC jest hmmm optymistyczny ;)

456

(259 odpowiedzi, napisanych Fabryka - 8bit)

xxl napisał/a:

zlozmy ze dwie cwiarki odczytu moga lezec kolo siebie. dwie zapisu: jedna rozkaz, druga argumenty.... a gdzie cwiartka odczytu wynikow dla cpu?

Z tej samej co cwiartka argumentow. Zapisujesz argumenty, czytasz wyniki z tego samego adresu.
Bedzie dzialac. Zmniejszenie przestrzeni adresowej to pewne potencjalne niedogodnosci ale niewielkie.  Np przy generacji przez PIC'a kodu dla Atari na strone D5, czesciej wystepowalby skok na poczatek obszaru.
Na szczescie, jak juz ustalilismy w przypadku frimeware pod cart dedykowany grom te ograniczenia nie będą Cie dotyczyc :)

457

(259 odpowiedzi, napisanych Fabryka - 8bit)

xxl napisał/a:
nosty napisał/a:

Oczywiscie jesli uwzgledni sie wymagania Sparty i TOMEK bedzie korzystal tylko z polowki strony $D5 to te polowke podzieli sie na 4 czesci.

128/4 = 32

32 to za malo na obszar odczytu antica. obsluzy tylko waski obraz i bez sprzetowego scrolla

No moznaby wtedy oddac Anticowi 2 cwiartki, a pozostale dwie dla rozkazow wydawanych przez program...

458

(259 odpowiedzi, napisanych Fabryka - 8bit)

Grotesque napisał/a:

Ale od strony technicznej. PIC24 to 3.3V. Będziesz stosował translatory na szynach z karta do atari?

Tak jest. Pisalem ze na carcie są 4 chipy: PIC24, 7400 (wykorzystuje 3 bramki), oraz 2 konwertery napiecia 3V3<>5V, kazdy obslugujacy 8 linii. Niestety nie wszystkie nogi PIC'a są "5V tolerant".

Grotesque napisał/a:

A skoro już 3.3V to po co PIC? Nie lepiej wziąć ARMa? Ta sama cena, więcej narzędzi i dokumentacji i w zasadzie nieograniczona moc w góre.

Bo 32-bitowe ARM'y mimo ze szybsze, maja bardziej skomplikowaną architekturę. Paradoksalnie obsluga portow jest w nich czasem wolniejsza niz w prostszych 16-bitowych ukladach, bo maja kilka szyn danych, są nastawione na DMA itd.
Jak dobrze zgadł Jell, do ARM'ow zniecheciel mnie Seban i mial racje :)

Natomiast PIC24 wybralem sam sposrod dziesiątkow innych mikrokontrolerow, kierując sie jednym unikalnym ficzerem, ktorego nie maja mikrokontrolery zadnej innej firmy. Jest to PMP pracujący w opcji SLAVE:
http://ww1.microchip.com/downloads/en/D … 70299C.pdf

jellonek napisał/a:

nosty: majty w dół i poka zródła! to rozwieje wiekszosc watpliwosci ;)

Jak to sie u mnie w podstawowce mowilo: pokazywalem jak bylem maly :P
Na obecnym etapie testow i tworzenia pierwszej wersji frimeware (glownie pod potrzeby Asteroids) nie widze sensu w udostepnieniu zrodel publicznie bo one sie ciagle tworzą. Na razie mam gotowych kilkanascie rozkazow. Ale wysle Ci to co mam na priva, jesli naprawde chcesz wiedziec jak to teraz dziala. Moze sie wciagniesz i pomozesz :)

Jesli ktos jest ciekawy PIC'owego asemblera, to tu jest opis komend:
http://ww1.microchip.com/downloads/en/D … 70157F.pdf

Mnie zachwycily rozkazy typu:
mov [W1++] [W2++]

czyli przeniesienie slowa w trybie adresowania podwojnie indexowanego z postinkrementacja. Inaczej mowiac, pobiera dwubajtowe slowo spod adresu wskazywanego przez rejestr W1, i zapisuje pod adres wskazany  przez rejestr W2, po czym zwieksza oba. I to wszystko w jednym takcie! A rejestry W1 i W2 sa 16-bitowe i pokrywają caly obszar pamieci danych. Czad!

mono napisał/a:

2. Wszystkie procedury ułatwiające żywot programiście niech korzystają z osobnych komórek. Dzięki temu nie zmuszamy go do dyscypliny (i znajomości niuansów 6502), a dajemy możliwość korzystania z dowolnego trybu adresowania jaki mu w danej chwili się zamarzy.

Nie! Wlasnie tego chcialem uniknac i to jest sednem mojego rozwiazania ze dekodowanie adresow nie jest konieczne. Na wiosne zadawalem sporo pytan na forum o timingi dostepu Atari do pamieci. W Glucholazach rozmawialem o tym jeszcze z Candle i chociaz ostateczna opinia byla ze "to jest mozliwe" to z wymagan czasowych wynikalo ze byloby to cholernie trudne nawet dla 40-mipsowego procesora.
I po co? Ile jest rozkazow, ktote wykonuja niejawnie podwojny odczyt czy zapis? Naprawde nie mozna sie powstrzymac przed ich uzywaniem w komunikacji z TOMKIEM?

Teraz co do tych 2 linii adresowych i podzialu strony $D5 na 4 czesci po 64 bajty. Ja znalazlem kilka zastosowan dla takiego podzialu:
1. Antic moze pobierac dane ekranu (np z cwiartki pierszej) a w tym samym czasie procesor moze wydawac rozkazy i odbierac odpowiedzi (np komunikujac sie przez cwiartke drugą).
2. Mozemu "sie umowic" ze rozkazy zawsze wpisujemy do cwiartki pierwszej, a czytajac z niej sprawdzamy status (czy rozkaz juz wykonano), a dane wpisujemy i wyniki odbieramy z cwiartki drugiej. Wtedy, jesli wykonamy np mnozenie, i chcemy wykonac drugie, to nie musimy wydawac drugi raz rozkazu, tylko podajemy od razu dane. PIC przyjmie ze chcemy wykonac ten sam rozkaz. Oszczedzamy jedno LDA/STA.
3. Korzystajac z rozynych cwiartek mozemy wydawac rozkazy PIC'owi w programie glownym i w czasie przerwania VBI. Gdybysmy tego nie mieli, to przeciez mogloby sie zdarzyc ze VBI wstrzeliloby sie w moment kiedy w programie glownym zlecono rozkaz, i jeszcze nie odebrano odpowiedzi. Wtedy korzystanie ze wsparcia PIC'a w przerwaniu byloby niemozliwe.

To wszystko mozna polaczyc majac 2 linie adresowe. Nie jest to jeszcze obecnie oprogramowane ale na pewno bedzie.
Oczywiscie jesli uwzgledni sie wymagania Sparty i TOMEK bedzie korzystal tylko z polowki strony $D5 to te polowke podzieli sie na 4 czesci.

xxl napisał/a:

pomysl z umieszczaniem wspomagaczy na kardrydzu jako taki nie jest nowy. tu jest gra na atari z 1984 Assault Force 3-D
powrot do korzeni

Hahaha no to zobacz to: http://www.atari.org.pl/forum/viewtopic.php?id=2652
Rozwalilo mnie moje wlasne zdanie z 2005-01-11: "Normalnie biore sie do roboty"
7 lat i juz prawie zrobione :)

swinkamor12 napisał/a:

W końcu amiga i małe atari to rodzina - miało te samego ojca (JM).
Czy dałoby radę?

Myslalem ze Amigowcy maja rozszerzen i dopalek do wyboru do koloru :) Sorki ale nie mam pojecia bladego jak dziala Amiga i co z nią bedzie dzialac.

Chyba wyjasnilem wszystkie wątpliwosci.

459

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

gorgh napisał/a:

jeżeli z tme to tylko wysylka niestandardowa, normalna idzie 1,5-2 mc
edit: ze srubkami moze jest inaczej, zamawialem trafo

A sprawdziles czy towar jest w magazynie w odpowiedniej ilosci? Jesli jest to zwykle jak zamawiam o 9 rano to o 14 mam email ze paczka jest juz u kuriera i nastepnego dnia rano jest u mnie.

460

(259 odpowiedzi, napisanych Fabryka - 8bit)

Dobra, sluchajcie, mam juz chyba jasnosc co robic i w jakiej kolejnosci.

Przed chwilą rozmawialem z Pinem, ktory powiedzial mi o kilku zastosowaniach carta w wersji standalone, o ktorych wogole nie pomyslalem.
I choc mnie wciaz najbardziej interesuje idea "invisible upgrade" (jak to ktos napisal na forum atariage), czyli gry na cartridgu ze wspomaganiem, to rozumiem tez potrzebe stworzenia rozszerzenia w wersji uniwersalnej. Boje sie tylko kto napisze na to frimeware w asemblerze PIC24, bo ja jeszcze dlugo moge okazac sie za cienki :/

Plan jest taki: skoncze carta z obecnym procesorem. Wbrew pozorom jest jeszcze sporo do zrobienia. Bardzo licze na pomoc Sebana w kwestii doprecyzowania schematu, ukladu resetu i zasilania. Ma on wielkie doswiadczenie z mikrokontrolerami Microchipa i juz zadeklarowal swoją pomoc, wiec wszystko bedzie OK.
Ja skoncze szybko prosty, uniwersalny frimeware, nastawiony glownie na obsluge duszkow softwarowych w najpoplularniejszych trybach graficznych, oraz inne funkcje graficzne i tekstowe. Do tego dorzuce kilka przydatnych rozkazow matematycznych, operacji bitowych itp. Zobaczymy co sie da zrobic. Moze, przy moich obecnych umiejetnosciach, nie bedzie to super wydajne, czyli np operacje beda 100x szybsze niz na Atari, a nie 200x ;) Ten cartridge bedzie mial mozliwosc flashowania z poziomu Atari (najlepiej) badz PC.  I takie carty wyprodukuje w niewielkiej ilosci i zaoferuje je wraz z dokumentacją naszym atarowskim programistom.
Jesli ktos bedzie chcial pisac gre wykorzystującą ten cart to w miare mozliwosci bede poprawial frimeware, dodawal nowe rozkazy na zyczenie itp. Mam nadzieje, ze pierwsza wydaną gra bedzie Asterodis arcade XXL'a w wersji delux.

Nastepnie kupie zestaw uruchomieniowy dla drozszego, mocniejszego procesora (70MIPS, 56KB RAM, 512KB flash). I zaczne prace nad wersją standalone, kompatybilną ze Spartą itp. Tu bedzie mozna bawic sie w przelaczniki, bardziej rozbudowaną elektronikę itd. Choc nie sądze zebym podjal sie tego to sam, bo nie czuje sie dobrze w tych obszarach. Mam nadzieje ze uda mi sie zainteresowac pomyslem ktoregos z naszych czolowych elektronikow-konstruktorow, kto przejmie ten projekt i zrobi to profesjonalnie.

Jednoczesnie, gdyby ktos chcial poeksperymentowac z frimeware, napisac wlasny lepszy, czy dodac jakies rozkazy, to chetnie zbuduje i wyporzycze cart developerski, pozwalajacy tworzyc i debugowac frimeware. Wykorzystuję do tego tani uklad developerski Microchipa o nazwie Microstick II. W tej chwili czekam na zamowione czesci do kolejnych prototypow.

Przy okazji chcialem podziekowac XXL'owi za pomysly i entuzjazm, Sebanowi za pomoc w elektronice i dzielenie sie wiedzą, oraz Sikorowi za przetlumaczenie info na AtariAge.

461

(259 odpowiedzi, napisanych Fabryka - 8bit)

mono napisał/a:

Jeśli dobrze zrozumiałem, to urządzenie działa tak, że sekwencyjne odczyty z tych samych rejestrów (np. $d500) powodują otrzymywanie kolejnych danych (kolejne bajty wyniku w załączonym przez Ciebie przykładzie na mnożenie, lub też zawartość kolejnych linii ekranowych kiedy antic adresuje urządzenie).

Dokladnie tak! Brak dekodowania adresow wymusza dyscyplinę u programisty Atari. Musi on trzymac sie protokołów
komunikacji. Nie moze nastapic zaden przypadkowy odczyt ze strony $D5xx bo urzadzenia sie rozsynchronizują.
Ale to sie sprawdza. Te animacje z dema zostawilem kiedys wlaczoną na całą noc i rano w dalszym ciagu działała.

Co do wykorzystania rozkazow, ktore wykonuja np dwa odczyty to tak jak napisal Jell sam cartridge nie ma jak sie tego domyslec. Musialbys miec frimeware ktory "wie", o tym ze uzyjesz takich rozkazow.

462

(259 odpowiedzi, napisanych Fabryka - 8bit)

Co do kompatybilnosci ze Spartą i innymi rozszerzeniami wykorzystujacymi strone $D5:

W sumie nie potrzebuje calej strony. Minimalna ilosc jaką muszę miec to 1/4 strony (Antic musi skads czytac kolejne bajty pamieci obrazu linii: od 32 do 48 bajtow). Ale to mocno ograniczy niektore funkcje.

Gdybym mogl wykorzystac pol strony $D5 to juz bylbym zadowolony. Dlaczego?
Bo pierwszy opis cartridga troszke uproscilem :) Tak naprawde PIC dekoduje mi sprzetowo 2 linie adresowe, ktore podlaczylem pod adresy A6 i A7 Atari. Czyli mowiac inaczej cartride wie do ktorej cwiartki strony $D5 Atari sie odwoluje. A to mozna wykorzystac na wiele fajnych sposobow. np do jednej cwiartki bedzie czytal/pisal procesor a na druga ustawimy pamiec ekranu, czyli bedzie do niej siegal tylko Antic. To pozwoli cartridgowi jednoczesnie obslugiwac rozkazy otrzymywane od procesora i niezaleznie generowac w tym samym czasie dane obrazu dla Antica.

Takze najlepiej byloby gdybym mial cala strone "dla siebie", ale jesli rezygnacja z polowy strony $D5 spowoduje ze cart bedzie kompatybilny ze Spartą, to to chyba dobry pomysl.

PS. Fajnie by bylo napisac wsparcie graficze dla tego projektu :) http://www.atariage.com/forums/topic/15 … __st__1800
Ale to chyba wlasnie przyklad frimewaru, ktory musialby byc szyty "na miare".

463

(259 odpowiedzi, napisanych Fabryka - 8bit)

Wymyslilem sobie,  ze ten cart bedzie sluzyl do wydawania gier, a nie bedzie "niezaleznym" rozszerzeniem z 4 powodow:

1. Bo to piekna idea :) Wsadzasz cart w zwykle Atari i grasz w Dooma. Nie obchodzi Cie co jest w srodku.
2. Bo jest tak tani ze mozna wydawac na nim pojedyncze gry.
3. Bo frimeware nigdy nie bedzie do konca uniwersalny i pewnie trzeba bedzie go modyfikowac albo pisac specjalnie na potrzeby konkretnych gier. A rozjechanie sie wersji frimeware to kiepski pomysl.
4. Bo obecna wersja ma tylko 8KB RAM w koprocesorze i nie da sie dolozyc mu RAM'u w zaden sposob.

To ostatnie jest wazne. Bo ta pamiec RAM ledwo starcza na pamiec ekranu i pare buforow i zmiennych. A gdzie trzymac te wszystkie definicje duszkow? We flashu PIC'a.
Oczywiscie kazda gra moze najpierw czyscic PIC'a i zapisac wszystkie potrzebne obiekty do jego flasha, a nawet modyfikowac frimeware na swoje potrzeby, ale to cholernie nieeleganckie rozwiazanie. Po co, skoro cart kosztuje $10?

Ale jest tez drugi procesor Microchipa, ktory mozna wykorzystac: ma 70MIPS, 56KB RAM i 512KB flash. Tyle ze cart z nim kosztowalby 50-60zl. I to jest moim zdaniem przyszly kandydat do wersji standalone, jesli obecny procesor pokaze ze warto nad tym pracowac.

Ale poki co chcialbym skonczyc na obcena wersję uniwersalny prosty frimeware - takie API do obslugi duszkow, stworzyc dokumentacje, przyklady i zainteresowac wykorzystaniem tego carta naszych programistow. To naprawde bedzie proste w uzyciu. 

A jesli ktokolwiek z doswiadczonych programistow zechce przylozyc reke do frimeware i dopisac np rozkazy obslugujace 3D (co niestety wiaze sie z nauczeniem asemblera PIC) to jak tylko przyjdą czesci chetnie zloze i wysle mu carta developerskiego.

464

(259 odpowiedzi, napisanych Fabryka - 8bit)

A "zaraz" napisze jeszcze pare slow na temat Sparty i wykorzystania do gier / standalone.

465

(259 odpowiedzi, napisanych Fabryka - 8bit)

Cart oczywiscie zawiera mikrokontroler. Jest to 16-bitowy PIC24 produkcji Microchipa. Wydajnosc 40MIPS, 8KB RAM, 128KB flash. Od razu powiem, ze poczatkwo wybralem ten model jedynie do zrobienia prototypu proof-of-concept, a docelowo chcialem uzyc drozszego i mocniejszego procka. Ale niespodziewanie okazalo sie, ze ten tez bedzie calkiem uzyteczny a przy tym jest tak tani ze mozna go bedzie uzyc do wydawania konkretnych gier. Ale o tym pozniej.

Na cartridgu znajduja sie 4 chipy: PIC, 7400, 2x konwerter napiecia 3V3<->5V. Do tego kilka elementow dyskretnych i to wszystko.
Koszt elementow <30zl.


Koprocesor na cartridgu byl moja idee fix od wielu lat. Jest to latwe, ale problemem byla zawsze wymiana danych z Atari. Bo cart jak wiadomo nie moze zhaltowac 6502 i Antica zeby uzyskac dostep do RAM'u Atari. Byly znane co najmniej 3 rozwiazania tego problemu:

1. Zwykla pamiec 8KB wpieta w obszar $A000-$BFFF ktorej szyny danych i adresowa sa wahadlowo zamieniane  miedzy Atari a koprocesorem. To zastosowal Zenon i Konop w Weronice, ale elektronika potrzebna do tego jest dosc spora.

2. Pamiec dual-port. Z tym eksperymentowal Seban, ale ta pamiec jest trudno dostepna i droga.

3. Moj stary pomysl: na tyle szybki koprocesor zeby zdolal dekodowac adresy i podstawic dla Atari odpowiednie dane, niejako symulujac dla Atrai zwykla pamiec wlaczona w obszar cartridga, a w tle wykonujac zlecone obliczenia.

Ale tydzien po Glucholazach mialem nagle olsnienie i wymyslilem czwarty sposob :) Zrezygnowalem z dekodowania adresow. Bo wymyslilem jak zrobic to wszystko co pokazalem w demie i co opisal XXL, bez podlaczania do koprocesora szyny adresowej. I to jest (mowiac nieskromnie) jedyny przeblysk geniuszu jaki mialem :)

Tak wiec Atari komunikuje sie z cartem TOMEK-8 wylacznie przez strone $D5xx. I teraz najwazniejsze: koprocesor nie ma pojecia gdzie na tej stronie zapisuje/czyta Atari. A mimo to jest w stanie realizowac rozkazy. O ile tylko programista po stronie Atari bedzie sie trzymal protokolu.

A jest to prosty protokol. Np mnozenie realizuje sie tak:

    lda #$40  ;rozkaz mnozenia
    sta $D500
    lda mnozna
    sta $D500
    lda mnoznik
    sta $D500
    lda $D500    ;lsb wyniku
    ldy $D500    ;msb wyniku

W przypadku rozkazow, ktorych wykonanie zajmuje wiecej czasu i dane nie moga byc odebrane natychmiast, odczyt ze strony $D5 bedzie zwracal kod wydanego rozkazu dotąd az obliczenia trwaja, a po ich zakonczeniu zwroci 0. Jest to sygnal ze mozna odebrac wyniki (jesli rozkaz zaklada ze jakies wyniki beda zwracane), badz wydac kolejny rozkaz.

Ale jak zauwazyl bezrobotny, nawet przy najlepszym wsparciu, Atari nie zdązyloby narysowac takich efektow. A Jell dobrze napisal, ze koprocesor jest "generatorem zawartosci ramu, czytanym przez antic".

Tyle ze wymyslilem proste i chyba pomyslowe rozwiazanie: pamiec ekranu jest w RAM'ie koprocesora. Ustalamy ilosc linii, szerokosc ekranu, tryb graficzny.

Ustalamy tlo, wydajemy rozkazy przesuwajace obiekty (jak widzieliscie nawet kilkadziesiat duzych duszkow na ramke), a nastepnie, co ramkę, zanim Antic zacznie pobierac dane, wydajemy prosty rozkaz: "generuj dane dla Antica".
Caly myk w tym, ze Display List wyglada tak (dla trybu hi-res):

;display list
dl
       dta $70,$70,$70
:192   dta $4F,a($D500)
       dta $41,a(dl)

Czyli pamiec kazdej linii wskazuje na strone $D5 :)
Dodatkowy zysk z takiego pomyslu do zyska paru KB pamieci w Atari.

To zmienilo cartridge w karte graficzną z banalnie prostą obslugą ze strony Atari. Napisalem na razie prosty frimeware do trybu hi-res: obsluga "duszkow" o dowolnej wielkosci, rysowanie punktow, linii, pisanie tekstu itp. Tworze dokumentacje. Jak wroce zajme sie trybami kolorowymi.
Ale nic nie stoi na przeszkodzie zeby dopisac np obsluge przeksztalcen 2D i 3D, tekstur i co sobie tylko ktos zamarzy. Tzn na przeszkodzie stoją moje marne umiejetnosci. Ale jesli ktos z doswiadczeniem i umiejetnosciami np tebe albo Konop zechcial stworzyc take rozkazy, to mysle ze Doom na Atari bylby w naszym zasiegu.
Dodam, ze cart developerski pozwalajacy wygodnie tworzyc i debugowac program PIC'a z poziomu PC to koszt okolo 160zl i ja chetnie sfinansuje takie narzedzie dla wyzej wspomnianych albo innego doswiadczonego programisty-scenowca, ktory zechce wziac udzial w stworzeniu takiego uniwersalnego frimeware.

Co do pytan o wydanosc, przyklady:
- narysowanie w wybranym miejscu ekranu (co do piksela) obiektu 64x64 piksele OR tlo (lub XOR, lub AND), to okolo 110 taktow Atari,
- narysowanie linii o dlugosci 100 punktow (bresenhamem) to 63 takty Atari,
- przepisanie tla 320x192 punkty to okolo 175 taktow. (tebe miales racje pytajac czy to bity czy bajty, a xxl odpowiedzial blednie. Ten rozkaz nie ma precyzji bitowej tylko 2-bajtową, tzn wykorzystuje to ze koprocesor jest 16-bitowy i dlatego tak to zasuwa)

Czyli jest szybko. Bardzo szybko. A pamietajcie ze ze mnie jest programista dosc mizerny a to byl dla mnie kompletnie nowy asembler, ktorego ucze sie od miesiaca. Mysle ze np rysowanie duszkow spokojnie mogloby byc o 30% szybsze gdyby pisal to np Konop :)

Co jeszcze?
Wspracie dla grafiki jest imho najwazniejsze, ale mozna dopisac do frimeware kalkulator dla liczb rzeczywistych, mozna wsparcie dla obliczen macierzowych, mozna player do muzyki, nie ma ograniczen.

Zrobilem kilka ciekawych eksperymentow. Np cartridge jest na tyle szybki ze jest w stanie wystawic kod dla Atari na strone $D5xx. Do czego to wykorzysac? Mam kilka ciekawych pomyslow na przyszlosc...
Albo zrobilem taki eksperyment: ustawilem DL tryb tekstowy $02 gdzie kazda linia wskazuje na $D500. Jednoczesnie ustawilem adres generatora znakow (CHBAS) na adres $D400. I cartridge generowal dla Antica jednoczesnie dane obrazu w trybie tekstowym jak i dane znakow (od 32 do 63).
Mam tez pomysl jak napisac wsparcie dla odtwarzania muzyki.
No i pomysl sprzed paru dni. Jestem prawie pewny ze bede mogl bootowac Atari z tego cartridga bez pamieci EPROM.

Zalaczam fotke obecnego protorypu. Elementy do zlozenia kolejnych, bardziej przypominajacych cart bede mial niestety dopiero za 2 tygodnie. Jesli dotre na party do Warszawy do oczywiscie przywioze i zademonstruję.

466

(259 odpowiedzi, napisanych Fabryka - 8bit)

kurcze, ale zamieszalem... :)
juz jestem i zaraz opisze wiecej i dokladniej i wyjasnie domysly
dajcie mi 30 min na napisanie posta

467

(259 odpowiedzi, napisanych Fabryka - 8bit)

Przepraszam za kiepską jakosc nagrania:

http://youtu.be/3Uqtxvnk8f0

Tryb hi-res wąski (256x208 pikseli).
Maski obiektow są rysowane osobno, mozna wiec powiedziec ze pod koniec dema, na ekranie lata jednoczesnie:
- 16 "duszkow" o wymiarach 16x9 pikseli,
- 16 "duszkow" 32x32 piksele,
- 16 "duszkow" 64x58 pikseli,
+ teksty.

Kazdy obiekt ustawiany jest na ekranie z precyzja 1 piksela.

Animacja ma 50fps bez buforowania.

To co widzicie jest zarejestrowanie na zwyklym, nierozszerzonym Atari 65XE. Zadnego lutowania, nie trzeba nawet otwierac obudowy. Po prostu wkładasz cartridge i juz. Obraz jest oczywiscie generowany przez Antic, w normalny sposob.

To wszystko wydaje sie na pozor niemozliwe, ale zapewniam, ze to nie jest zaden fejk :) Prototyp stoi na moim biurku i choc wyglada jak kłębek kabli to od 3 tygodni dziala stabilnie. To tylko pierwsza, dosc nieudolna i niewydajna proba pokazania mocy tego cartridga. Zacząłem od trybu hi-res bo planowalismy z XXL'em sprawdzenie tego w boju wlasnie w grze mono. Ale Mortal Kombat to teraz dla Atari bedzie kaszka z mleczkiem.

Obecnie mam tydzien wakacji i slaby dostep do sieci tylko wieczorami. Jutro postaram sie napisac cos wiecej.
PS. Bylbym wdzieczny, gdyby ktos znajacy angielski wrzucil krotkie info na atariage z kilkoma slowami opisu. Ja nie moge sie polaczyc z tamtym forum.

PS2. Poniewaz Zenon nazywa swoje carty tradycyjnie imionami żeńskimi, ja postanowilem nazwac swoj na cześć synka :)

468

(6,129 odpowiedzi, napisanych Kolekcjonowanie)

A ja myslalem czy go nie zalicytowac za 250, podczyscic i wybielic... :)

469

(6,129 odpowiedzi, napisanych Kolekcjonowanie)

maw napisał/a:

Ktoś szukał dyskietek 3" do Amstrada? http://allegro.pl/listing.php/search?st … mp;order=p

Jesli ktos naprawde szuka to moge troche odsprzedac. Taniej niz na tej aukcji.
Mam spory zapas, sam uzywam nieduzo, a przeciez wieczne nie będą.

470

(6,129 odpowiedzi, napisanych Kolekcjonowanie)

Boulder Dash cart:
http://www.ebay.com/itm/Starring-ROCKFO … 1e70b4f8cf

471

(59 odpowiedzi, napisanych Zloty)

koala napisał/a:

Hejo, jako że do PM nie można dodawać załączniki posłużę się "hamsko" forum;)

Do Nostiego:
Łap gierę - z "poprawionym" stopniem trudności - rośnie wraz z punktachą - mam nadzieje że nie za szybko;)

Koala sprawdz maila plis. Wyslalem Ci namiary na zwyciezce konkursu - Tomka "Sundaya" Niedzielę.

472

(3 odpowiedzi, napisanych Bałagan)

rysunek, ktory mnie rozbawil w tym temacie :)
http://www.po-land.pl/obrazek.php?14035

473

(76 odpowiedzi, napisanych Kupię / Sprzedam / Zamienię Atari)

hororus napisał/a:

A dil robiłem z niejakim/niejaką "smittenbyakitten". Babka dosłownie wyrolowała mnie dwukrotnie. Za pierwszym razem paczka która jej posłałem szła niestety kole miesiąca, ale to z winy naszej lub ich poczty. W międzyczasie zgłosiła oczywiście spór, potem roszczenie, potem PayPal wspaniałomyślnie oddał jej kasę (na nic zdały się skany potwierdzeń wysyłki). Zgłosiłem reklamację na poczcie i po niecałym miesiącu okazało się, że paczka dotarła pod wskazany adres. Jakby to ująć - laska już mi kasy nie oddała.

No ale w Paypal isteniej tez cos co sie nazwya "ochrona sprzedajacych". Zlozyles chociaz reklamacje? Nie mowie tu o potwierdzeniach WYSŁANIA, bo za wysylke odpowiadasz zawsze Ty. Bo tylko Ty jestes klientem poczty i tylko Ty mozesz zglosic reklamacje na poczcie. Klient ma dostac przedmiot w stanie jak w opisie, a wysylka jest po Twojej stronie, i Ty za nia odpowiadasz niezaleznie co napiszesz w aukcji. Ale jesli masz potwierdzenie odbioru (np w wyniku reklamacji na poczcie), to z tym powinienes teraz zalozyc reklamacje w Paypalu i zażądać pieniedzy, ktore Ci bezprawnie zabrano.

Ale zauwaz dwie rzeczy:
1. Jesli masz potwierdzenie odbioru po polsku bo byc moze musialbys wykonac tlumaczenie przysiegle :)
2. Przy kazdej aukcji deklarujesz maksymalny czas wysylki. I zdaje sie ze nie moze on byc dowolny, tylko maja w opcjach jakis tam maksymalny, nawet gdybys mieszkal na stacji kosmicznej. I byc moze zasady eBay/paypal mowią, ze jesli klient nie dostal paczki w tym terminie to uznaje sie ze juz jej nie dostanie i juz. Koniec sporu, koniec transakcji. To ze paczka jest juz w drodze i Ty nie mozesz jej zawrocic to Twoja sprawa jako sprzedajacego. Mogles robic interesy na Polskim eBayu, ktory firma laskawie dla Ciebie otworzyla, a nie na amerykanskim czy angielskim :P

Paypal paypalem, ale zawsze pozostaje Ci droga sądowa. Jesli masz dowod ze ktos odebral paczke i nie zaplacil to zglaszasz podejrzenie oszustwa. A jesli nie da jej sie scigac z paragrafu o oszustwie to zawsze pozostaje pozew cywilny za niewywiazanie sie z umowy (brak zapłaty). Jesli Jesli babka jest z UK to moze warto sprobowac.
Pierwsze co mozesz zrobic to wyslac jej (ale pocztą a nie emailem czy przez ebay) poprawnie sformuowane prawnie żądanie zapłaty do okreslonego terminu z postraszeniem sprawą cywilną. Jakby to mialo jakąś pieczatke prawnika to jeszcze lepiej.
Skoro tak Cie wkurzyla to moze warto?

474

(36 odpowiedzi, napisanych Zloty)

I ten obrazek swietnie pokazuje ze rozdzielczosc to nie wszystko... Czy te biale plamki na wszystkich twarzach widoczne w powiekszeniu wynikaja z kompresji czy niedoskonalosci matrycy? Nie znam sie na fotografii ale to pierwsze to chyba zaowocowaloby "kwadratami" kolorow.

475

(36 odpowiedzi, napisanych Zloty)

Przyłączam sie do podziękowań dla Ryska i współzlotowiczów. Wszsytko w tym roku było na poziomie i wcale nie był to "poziom do którego byśmy" ;)