ZX Emulator by Kaz 2007-03-16 00:15:33

Czy możliwe jest programowe emulowanie jednej ośmiobitowej maszynki przez drugą? Jak dotychczas nie pokazano emulatora tego typu na żadnym z komputerów, które można podciągnąć pod naszych wrogów ideowych ;) Ani Commodore nie emuluje Spectrum, ani Amstrad nie emuluje Commodore, itd. Teoretycznie jest to nawet możliwe, aczkolwiek nikt nie pokusił się napisać takiego programu, pewnie ze względów praktycznych. Emulator taki byłby wielokrotnie (wielusetkrotnie?) wolniejszy od oryginału, nie byłoby więc sensu go uruchamiać. Z drugiej strony jest to wyzwanie, które może przyciągnąć maniaków chcących pokazać, że ich maszynka po prostu może... :) I takich właśnie szaleńców mamy na naszym podwórku w postaci Krzysztofa "xxl" Dudka i Konrada "draco030" Kokoszkiewicza, którzy na forum Atari Area zasygnalizowali, iż pracują nad emulacją ZX Spectrum na Atari. Pracują oczywiście niezależnie od siebie, a Ci którzy śledzą dyskusję na ten temat wiedzą, że praca ta ma nawet charakter konkurencyjny :) Obaj w inny sposób podeszli do sprawy - Konrad przygotowuje program sam i zamierza opublikować efekty swojej pracy dopiero, gdy większość emulacji będzie gotowa, podczas gdy Krzysiek prezentuje postępy prac na biężąco, dzięki czemu do rozwoju programu włączyli się też inni. Nie mnie przesądzać, która metoda jest lepsza, obaj koledzy znani są ze swojej pasji do Atari i pracowitości, można być więc pewnym, że oba projekty będą kontynuowane. A jak wiemy, od przybytku głowa nie boli, więc jeśli na końcu tej rywalizacji ujrzymy dwa emulatory to tym lepiej dla nas, szarych zjadaczy... eee, użytkowników Atari.



Na razie głos oddaję Krzyśkowi, który zdecydował się na moją prośbę podzielić się z nami najnowszymi "osiągnięciami" ze swojej programistycznej kuźni. Oto co ma do powiedzenia:

"Od pewnego czasu myślałem o uruchomieniu kodu procesora Z80 na małym Atari. Chciałem napisać scrolla w asemblerze Z80, ale korzystając z funkcji Antica. Pomysł troszkę dziwny... Zacząłem uczyć się programować Z80 i czym więcej czytałem o tym procesorze, tym bardziej zacząłem zastanawiać się, dlaczego nikt nie próbuje zrobić emulatora Z80 na 6502. Na forum dowiedzialem sie, że jednak próby były/są, ale jakoś efektów tych prób nie ma. Jedna osoba czyli draco pisze emulator ZX Spectrum na Atari. Jego założenia wydawały mi się rewelacyjne (stronicowanie pamięci ZX Spectrum), ale po przemyśleniu uznałem, że są błędne i taki emulator nie będzie chodził na każdym Atari z rozszerzoną pamięcią lub na czas wyświetlania obrazu emulator zostanie zatrzymany - wymagana jest stuprocentowa kompatybilność z Atari 130XE, osobny dostęp Antica i 6502 do pamięci. Postanowiłem, że spróbuję napisać emulator, na którym nie uruchomimy większości programów ZX Spectrum, ale te na których akurat mi zależało owszem. Emulator napisałem dość szybko, parę osób z forum aktywnie przyczyniło się do jego powstania (tebe, pr0be, laoo), za co bardzo im dziękuję. Dzięki pomysłom laoo pewnie już wkrótce będziecie mogli zobaczyć o wiele szybszą wersję prezentowanych dziś na atarionline.pl programów z ZX Spectrum. Emulator ciągle jest poprawiany!



Pokrótce wyjaśnię, jak działa emulator. Uruchomi się na każdym Atari (wystarczy 48 KB), program z ZX Spectrum zapisany w pliku SNA ładowany jest do pamięci Atari, program Antica napisany jest tak, że bez udziału 6502 wyświetla pamięć obrazu Spectrum. Pamięć atrybutów nie jest wyświetlana. Emulator pobiera rozkaz Z80, interpretuje go, aktualizuje rejestry emulowanego Z80 na stronie zerowej i wraca do interpretacji kolejnego rozkazu Z80. Szybkość działania nie jest może rewelacyjna, ale emulator raczej miał pokazać, że na Atari można uruchomić program z ZX Spectrum niż emulować go z pełną prędkością. Taka opcja będzie tylko na 16-bitowym procesorze 65816 (mam nadzieję).

Na początek zaprezentuję opublikowane już jakiś czas temu w sieci demo pod nazwą "circle". Dostępne na ZX Spectrum tutaj, a na Atari tu. Później zdecydowałem, że każdy program będzie opisany numerem wersji, ponieważ laoo zaoferował pomoc w przyśpieszaniu emulowanych programów i wersji zaczęło przybywać. Oto wcześniej nie pokazywana wersja 0.01 gry Death Chase, jednej z pierwszych gier 3D na komputery domowe (numer jeden na tej liście). Na atarionline.pl do ściągnięcia tu. Jest to wersja bez przyspieszeń, sterowanie joystickiem w porcie 1, klawiatura jest podmapowana pod joystick, nie ma dźwięku. A tu można obejrzeć filmik, jak chodzi ta gra na przyspieszonym emulatorze.



W przygotowaniu dwie dalsze gry (strzelanina i platformówka z listy, do której link był powyżej). Kiedy bedą dostępne na Atari? Jeśli jesteście zainteresowani, to już wkrótce, bo doping pomaga :-)


Jak widać, Krzysiek wiele nie potrzebuje, aby prace ciągnąć dalej, dlatego wsparcie programistyczne, że o moralnym nie wspomnę, wielce pożądane. Dopingujmy go, a myślę, że odbędzie się więcej premier nowych gier ze Spectrum na naszym serwisie! :)
Jar-eck 2007-03-16 03:53:38

piknie!

Kaz jak zwykle trzymasz ręke na pulsie,wiedziłem że nie odpuscisz tematu! Będziesz miał okrutnie długą listę do kolejnego Kaz Compo-->jakby nie było, taki Death Chase to nowa pozycja na Atari, a ma byc więcej ;)

Krzysztof, szacunek--jak tylko dotre do domu testuje i napiszę wiecej...

miker 2007-03-16 04:53:29

Brawo Xxl! Szkoda, że Cię nie będzie na Foreverze, jednak zgrałem sobie oba programiki i postaram się gdzieś to tam wyświetlić. :)

Także brawa dla Draca, Laoo i TeBego (a, niech stracę?) ;)

sikor 2007-03-16 08:26:51

Jak dla mnie - nie jest źle. Ponowię moją prośbę do XXL-a - poproszę gierkę tekstową lub statyczną w stylu weź i użyj - wtedy prędkość nie będzie przeszkodą. Ta, jaka jest - wydaje się sensowna, choć zasugerowałbym (o ile to jest możliwe i nie jest jeszcze zrobione) jednak możliwość użycia większej pamięci (może być 128KB w sumie - to nieproblem) i bankowanie ekranów - na moje oko ekran nie nadąża za emulowanym sprzętem, choć może się myle. Na razie rewelacja - czekam na tekstówki ;)

lizart 2007-03-16 14:26:39

nic dodac nic ujac Brawo! jak tylko bede w domu zapuszcze sobie to na real atari!

Jurgi 2007-03-17 21:37:00

"Osobiście zetknąłem się z tą tematyką podczas pracy nad BugHunter-em. Być może wyda się to dziwne, ale ten debugger jest swoistym emulatorem ATARI XL na ATARI XL. Tak, to nie pomyłka! Ci, którzy używali kiedykolwiek BugHunter-a wiedzą, że wykonuje on każdy program naprawdę (…)
Ze wszystkim tym kojarzy mi się jeszcze jeden emulator na ATARI XL. Jeden z bardzo znanych obecnie programistów, autor licznych gier i programów użytkowych pokazywał ml kilka lat temu jeden ze swoich pierwszych programów dla małego ATARI. W tekście programu ze zdumieniem zauważyłem procedury, służące do emulacji rozkazów procesora Z-80. Dopiero po jakimś czasie domyśliłem się powodu, dla którego zostały tam umieszczone. Po prostu, autor programu wcześniej pisywał na Spectrum. Jak widać, każdemu zdarza się "emulować"..."


grzeniu 2007-03-18 11:50:37

mam nadzieję, że to będzie Bomb Jack !

Dolar 2007-03-21 17:11:52

Gdzie byłeś w latach 80?

CePe/ANM 2007-03-21 17:28:38

Dolar: nie jest to smaczne pytanie ;-]

Dracon 2007-03-21 19:30:42

Mam wielki sentyment do DeathChase, jako że była to jedna z pierwszych gier komputerowych, w które lubiłem sobie od czasu do czasu popykać. ;) Co prawda graficzne możliwości ZX'a były przy Atari niezbyt rzucające na kolana, ale niektóre giery potrafiły naprawdę wciągać (w/w albo lepszy niż atarowski JET SET WILLY). :)

XXL napisał na forum: "z ramem liniowym bedzie mozliwosc uruchomienia prawie wszystkiego z zx spectrum a dzieki 65816 byc moze bedzie to nawet w miare szybkie" - no sorry, ale to ma powstać emulator dla 4 osób na krzyż, które będą takie "monstra" posiadać i bawić się?! Spodziewałem się, że autor pobawi się w optymalizację kodu i inne sztuczki, co by można było niektóre spectrumowe gierki potestować na (w miarę) typowych, modelach 8-bitowego Atari (pamięć max. do 320 kB), 6502 inside, itp. :]

KAZ - czy doczekam się odpisu na ostatniego maila (sprzed paru tygodni) ?? ;>

xxl 2007-03-21 21:43:39

w latach 80 uczylem sie czytac i pisac :p co do 65816 - jeszcze go nie mam i nie wiadomo czy i kiedy bede mial. draco030 na forum zapowiedzial pojawienie sie emulatora na 6502 na ktorym uruchomicie prawie wszystko z zx wiec spokojnie, swiat programow z zx powodli otwiera sie dla atari ;-) co do moich planow: przyjdzie czas ze dc bedzie dzialal jak trzeba na atari :-)

Kaz 2007-03-22 01:15:55

Dracon - wlasnie odpisalem. Pozdro.

xxl 2007-03-22 20:57:50

jest pewien problem, dystrybucja gry ktora chcialbym udostepnic jest zabroniona, prawa naleza hehe do microsoftu, sprawdzilem (nie wiem dlaczego wczesniej tego nie zrobilem) nie mozna tej gry legalnie sciagnac z sieci. mowa o jetpacu. jakies propozycje? moze emulec powinien byc tylko loaderem? ok. no to skrin: http://atari.pl/zx1.jpg

Ramos 2007-03-22 22:15:36

Swietna rzecz ta emulacja. Gratuluje pomyslu i checi. Na c64 emulowany byl tylko BASIC ZX. Kiedys Swietny bawil sie w emulacje dzwieku z ZX moze by polaczyc ten projekt, dodac BASIC ZX mamy prawie ZX Spectrum :) Mozna by sie dalo wczytywac z magnetu atarki programy zapisane na ZX i odpalane na tym emulatorze? Niestety bedzie problem z uzyskaniem gier w kolorze :(

tebe 2007-03-23 08:25:53

XXL tym lepiej że micro... ma do niej prawa, gra będzie cieszyła się większym powodzeniem, pozatym chyba nie wierzysz w to że micro... śledzi poczynania i postępy ludków w świecie xe/xl :) będzie darmowa reklama :) przesadzasz XXL, martwisz się pierdołami, kończ prace, przyspieszaj kod i udostępniaj...

xxl 2007-03-23 11:31:51

mam pewne opory... jak by nie bylo ze wszystkich trumnowych serwisow zniknela mozliwosc sciagniecia jetpaca... http://atari.pl/jetpac.rar - bez przyspieszen

tebe 2007-03-23 19:03:03

podeślij źródła, podpisze się pod tym i wydam, nie będziesz musiał się bać

Dracon 2007-03-23 20:11:52

Xxl - serio nie ma skąd zgrać tego spectrumowego JETPACA??? :O
Mówisz - masz, wrzuciłem tu (w kilku wersjach):

http://voila.pl/507fv/?1

i gierka działa, bo przed chwilą sprawdziłem pod Spectaculatorem. :)
Mam to ze starej kolekcji (zmirrowanej części ftp-a ze spectrumowymi produkcjami...). :)

xxl 2007-03-24 09:49:13

nie chodzi o to ze nie mam skad sciagnac jetpaca (mam go, zobacz na filmik gdzie dziala na atari), tylko to ze nie mozna go sciagnac legalnie. ok. wroce z wroclawia to zajme sie nim - mam malego buga (jetpac nie strzela) poprawie i udostepnie. acha 'pssst' tego samego autora tez chyba ruszy (dziala ok 2 sekund i zwiecha - ale dobrze rokuje ;-)

Czarny_faraon 2007-03-30 10:41:52

Rewelacja!!! Na coś takiego dawno czekałem.

xxl 2007-04-01 12:27:22

na zx: http://www.mobygames.com/game/zx-spectr … creenshots i na atari: http://atari.pl/pheenix.rar jeszcze troszke cierpliwosci i emulec bedzie gotowy

Kaz 2007-04-01 17:16:33

No ladne, ladne!