1

Witam Wszystkich,

W związku z mającym ostatnio miejsce wysypem konwersji gier w stylu ZX Spectrum chciałbym podnieśc temat nowego trybu graficznego, który idealnie nadawałby się do tego typu gier. Tryb ten wymaga oczywiście przeróbki sprzętowej, lecz stosunkowo prostej. O tym jednak za chwilę. Tryb jest połowicznym rozwiązaniem problemu zależności między kolorami pikseli w najwyższej rozdzielczości. Jak wiadomo, piksele mogą wtedy przyjmowac dwie niezależne jasności lecz mają wspólny kolor. W trybie, który proponuję, jeden kolor jest zawsze czarny a drugi dowolny. Oczywiście ten dowolny kolor można podmieniac przy pomocy duszków. W takim trybie gry jak Jet Set Willy 2007 czy Knight Lore mogłyby byc jeszcze bardziej zbliżone do oryginału. A i gry z serii Dizzy, które, mam nadzieję, również powstana na Atari, możnaby napisac dużo łatwiej.
A teraz przejdźmy do sposobu działania nowego trybu. Mianowicie polega on na tym, ze jeżeli jasnośc piksela wynosi 0 (najciemniejszy) to kolor piksela nie jest podawany na wyjście video, co jest równoznaczne z tym, że jest on czarny. Przeróbka sprzętowa polega tu na tym, że wykrywany jest stan 0 na wszystkich wyjściach luminancji (LUM0-LUM3) układu GTIA i na czas trwania piksela o jasności 0 wyłączany jest sygnał chrominancji. Wyłączenie sygnału, choc może wydawac się rzeczą trudną, w praktyce jest dośc proste i wymaga użycia jednego tranzystora. Nie będę teraz wdawał się w szczegóły ale powiem tylko, że kiedyś wykonałem proof-of-concept tego pomysłu na mojej Atarce i to działało. Zobaczyłem piękne czerwone litery na szarym tle w GR.0. Dlaczego szarym a nie czarnym nie chce teraz tlumaczyc - tak było łatwiej zrobic test bez budowania całego urządzenia. Idąc dalej, urządzenie musi, tak jak wspomniałem, wykrywac jasnośc 0 na wyjściach LUM0-LUM3. Oprócz tego musi wyłączac sygnał koloru tylko w czasie wyświetlania linii obrazu. Tzn. nie może wyłączac koloru w trakcie przerwy poziomej. Wtedy to po linii chrominancji nadawany jest tzw. burst koloru czyli sygnał synchronizujący kolor dla telewizora. Ponadto musi byc mozliwośc programowego włączania i wyłączania takiego trybu, czyli musi byc jakiś rejestr, który pamięta stan włączenia trybu, co z kolei pociąga za sobą dekoder adresów, itd. Idealnie byłoby, gdyby taki rejestr znajdował się gdzieś w przestrzeni układu GTIA a dokładnie powyżej jego pierwszego wystąpienia czyli np.: $D020. I dobrze by było, gdyby ten rejestr dało się też czytac. To umożliwiłoby wykrywanie istnienia rozszerzenia. Ktoś pewnie zauważy, że sprawdzanie sygnału LUM0 jest mało sensowne z uwagi na fakt, że może on przybrac wartosc 1 tylko w trybie 9 GTIA, ale można sobie wyobrazic nowy tryb oferujący "czarny + 15 odcieni dowolnego koloru" a tak to by było tylko "czarny + 14 odcieni dowolnego koloru". Podsumowując, jest to chyba najprostsze rozszerzenie możliwości GTIA jakie można sobie wyobrazic a jednocześnie dające bardzo ciekawe efekty w grafice wysokiej rozdzielczości.
Teraz mam pytanie, co sądzicie o takim trybie, również w kontekście powstających rozszerzeń GTIA. I czy podobny pomysł był już kiedyś dyskutowany? Czy podjąłby się ktoś zaprojektowania i wykonania elektroniki?

Paweł Rosowski

2

Takiej małej przeróbki nikomu się nie będzie chciało robić. Już lepiej zrobić rewolucję:
  http://vbxe.atari8.info
A ogólnie, to ja jestem przeciwny wszelki zmianom sprzętowym :)

: 404. Stopka not found

3

nie chce bombardowac pomyslu ale wydaje mi sie, ze wieksza szanse powodzenia ma projekt vbxe.

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

4 Ostatnio edytowany przez macgyver (2008-03-14 23:35:40)

Jestem przeciwny - wprawdzie z nieco innych powodów niż Eru: jak lansujemy jeden standard (wspomniane wcześniej VBXE), to olewamy inne przeróbki graficzne, aby nie doszło do sytuacji, że mamy 10 różnych rozwiązań niezgodnych ze sobą i każdy ma atarkę z innym. Czas ustandaryzować pewne sprawy.

5

Ale pomysł jest, trzeba go zrealizować, wypróbować, opisać by potomni nie powiedzieli żeśmy spali. Co innego przyjęty standard a co innego działająca nowinka do późniejszych przemyśleń i rozbudowy, tym bardziej że to kilka elementów za grosze.

6

Proponuję popatrzec na to rozszerzenie trochę inaczej. Od strony programisty jest to tylko jeden dodatkowy rejestr. Czyli mamy "nowszą" wersję GTIA z 33-ma rejestrami zamiast 32. VBXE, które emuluje układ GTIA, mogłoby emulowac właśnie tą "nowszą" wersję. Chodzi o to, aby przyjąc 33-ci rejestr za standard, tak aby programiści konwertujący dziś gry działające w trybie wysokiej rozdzielczości a nie korzystające jeszcze z dobrodziejstw VBXE mogli używac tej dodatkowej możliwości. Tak więc podsumowując to proste rozszerzenie nie jest konkurencyjnym projektem dla VBXE lecz powinno się w VBXE zawierac.

7

w przestrzeni adresowej antica jest jakies wolne miejsce na rejestr. 33 to zla liczba.

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

8 Ostatnio edytowany przez macgyver (2008-03-15 09:38:03)

Przestrzeń adresowa antica jest nie do ruszenia fizycznie w prosty sposób jak np. GTIA, POKEY-a czy PIA. Antic pomija MMU i zczytuje adresy z magistrali adresowej i jak złapie $d400-$d4ff to wystawia/odczytuje (w zależności od poziomu na linii R/W) swoje wartości.

9

widzialem kiedys (chyba c&a) schemat podmiany 1 rejestru w ukladzie SID, nie wiem, nie znam sie ale moze z antykiem;) tez by sie dalo.

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

10 Ostatnio edytowany przez macgyver (2008-03-15 10:04:16)

SID tak jak GTIA,PIA i POKEY jest układem pasywnym od strony magistrali adresowej. Takimi układami można w prosty sposób sterować za pomocą sygnału CS (Chip Select), który ustawia bądź kasuje MMU ze wsparciem dekodera (74)138, gdy pojawia się adres z przestrzeni danego układu: np. gdy na liniach adresowych pojawi się adres $D20A, to MMU stwierdza, że to adres z przedziału $D000-$D7FF i uaktywnia układ 74(138), który analizując linie adresowe A8-A10 stwierdza, że wartość (%010=2) oznacza, że należy uaktywnić układ z przestrzeni adresowej $D200-$D2FF (w wypadku architektury Atari 8-bit jest to POKEY) i w tym wypadku wspomniane wcześniej wejście POKEY-a CS (Chip Select) zostaje "uaktywnione".
Analogicznie wygląda to w wypadku PIA, GTIA (SID-a też, mimo, że nie w Atari), ba.. nawet w wypadku urządzeń/modułów podłączanych do złącza Cartridge. Ale nie w wypadku ANTIC-a !!! ANTIC jakgdyby "sam w środku" ma własne odpowiedniki MMU i (74)138 i nie ma wyprowadzonego na zewnątrz sygnału CS. Aby "odciąć" Antica, trzeba fizycznie "ciąć" linie adresowe, zakładać bufory dwukierunkowe na magistralę adresową i danych pomiędzy Antica i resztę systemu. Jak odcinamy Antica to musimy zrobić logikę która i będzie go włączać na czas, gdy ten będzie pobierał dane obrazu, generował sygnał odświeżania pamięci itp. Jak to się mówi - wszystko się da... ale jakim kosztem ?

Jest jeszcze inna opcja (74)138 ma "wiszące w powietrzu" wyjście imitujące CS dla D4.... ale jak podepniemy tam coś to oprócz tego, że trafi to do tego czegoś co podłączyliśmy równolegle trafi to do $d400-$d4ff w ANTICu :P

I zapamiętajcie sobie robaczki - tak naprawdę to Antic a nie 6502 rządzi w Atarce. On dyktuje warunki, to jego musi słuchać 6502 a nie na odwrót. Antic to taki Putin, co z tylnego fotela steruje marionetkowym Miedwiediewem - 6502 ;)

11

> Jest jeszcze inna opcja (74)138 ma "wiszące w powietrzu" wyjście imitujące CS dla D4.... ale jak podepniemy tam coś to oprócz tego, że trafi to do tego czegoś co podłączyliśmy równolegle trafi to do $d400-$d4ff w ANTICu

no i o to chodzi. ANTIC ma wolny rejestr do ktorego mozemy zapisywac a i tak trafi w kosmos (przy okazji trafiloby w ten dodatkowy rejestr ikplusa) czytac z tego rejestru nie trzeba.

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

12

w kosmos ? a czy nie zapominasz przypadkiem o tym, że to co zostanie wpisane np. pod adres $d44x lub $d41x będzie to równoznaczne z zapisem pod $d40x ? :P :P :P :P

13

a co sie znajduje pod $D408 lub $D406?

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

14

Według atariki "puste" rejestry.

15

Konieczne jest, aby nowy rejestr mozna również czytac. Po to by móc wykryc, czy to "rozszerzona" GTIA czy normalna. Tak więc wydaje mi się, że przestrzeń ANTICa odpada. Mi osobiście wydaje się, że jeżeli jest to rejestr rozszerzający GTIA to powinien znaleźc się w przestrzeni tego właśnie układu. Nie bardzo rozumiem, dlaczego 33 to zła liczba. Ale zawsze może byc 34. Czyli pod adresem $D020 jest rejestr tylko do zapisu, a pod $D021 tylko odczytu, z którego można odczyta to, co zostało zapisane do $D020. Poza tym rejestr lub dwa rejestry można umieścic jeszcze wyżej np. $D040 czy $D080. Czy jest jakiś konkretny powód dla którego nie należy nowego rejestru umieszczac w przestrzeni GTIA? Jeżeli tak, to możnaby jeszcze wziąc pod uwagę obszary $D6XX lub $D7XX. Czy istnieją jakieś rozszerzenia korzystające z tych obszarów?

16

No dobra, powedzmy, że byłbym za, ale żeby ta przeróbka nie była konieczna do działania (czegośtam), czyli jakaś alternatywa na nieprzerobionym sprzęcie wchodzi w grę. :)

I Ty zostaniesz big endianem...

17 Ostatnio edytowany przez macgyver (2008-03-15 11:17:18)

jak obszar GTIA to proponuję np. $d080 lub np. $d0e0 lub gdyby to była pojedyńcza komórka, to nawet $d0ff.

18

Pod $D6xx siedzi TTP a pod $D7xx D-ROM

19

Czyli raczej pozostaje nam tylko obszar GTIA. Adresy $D0FF, $D080 czy $D0E0 są jak najbardziej do przyjęcia. Chyba najbardziej podoba mi się $D0FF.

20

Dla rozbudzenia apetytu zamieszczam linki do screenshotow z Dizzy 2 i Dizzy 3 na ZX Spectrum.
http://en.wikipedia.org/wiki/Image:Trea … _Dizzy.png
http://en.wikipedia.org/wiki/Image:Fant … Screen.png
Ten pierwszy dałoby się zrobic bez problemu w nowym trybie. Ten drugi pewnie musiałby byc odrobinę zmodyfikowany (np: żółtych liter na niebieskim tle nie dałoby się zrobic).

21 Ostatnio edytowany przez pajero (2008-03-15 14:05:11)

Należy pamiętać, o tablicy zmiany kolorów - bo taka tu musiała by być. Czyli nie lepiej używać G2F ?
W obydwu przypadkach dochodzi do dodatkowego zajęcia pamięci.....

22

ikplus dobrze prawi !

STYMulator JIL ST YM2149 mjuz:k @ gnu/linux
SIUP (SIo2Usb2Pc) - SIO2PC USB Edition
PIN ready logo
3M / InD: ... na kasetach były zabezpieczenia w postaci tzw. "mikropierdnięcie" ...

23

Czy nie lepiej używac G2F? To źle postawione pytanie. Nowego trybu należy przede wszystkim używac w połączeniu z G2F. Dopiero wtedy będzie można dostrzec jego wszystkie walory.

24

widzisz ikplus jak to jest gdy się pytasz o opinie, należy ich postawić przed faktem dokonanym

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

Zgadzam sie z TeBe - w takich sprawach nie nalezy sie pytac, tylko dzialac.

Kaz/Rohar
Prowadzę stronę dla obłąkanych: http://atari.online.pl/