~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Atari800Win Emulator Atari 800/800XL/130XL/5200 dla Win32 Oryginalny kod Atari800: David Firth (david@signus.demon.co.uk) Oryginalna wersja dla Win32: Richard Lawrence (rich@kesmai.com) 15.05.2000 v2.6b ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Jest to nieoficjalna wersja emulatora Atari800Win oparta na zrodlach Atari800 0.9.9j. Zmiany w kodzie dla Windows bardzo niewielkie. Podstawowym celem opracowania tej wersji bylo uaktualnienie jadra emulatora za pomoca najnowszych zrodel Atari800 i usuniecie kilku niedociagniec obecnych w wersji 2.6. Dodano: 1) Obsluge techniki "przenies i upusc" (drag&drop) dla plikow wykonywalnych oraz obrazow dyskietek i cartridge'ow. Poprawiono: 1) Kilka bledow i niedociagniec, glownie w interfejsie uzytkownika. Obsluga techniki "przenies i upusc" pozwala na proste uruchamianie oprogramowania przeznaczonego dla Atari. Samo "upuszczenie" pliku programu w obrebie okna emulatora nie wystarcza jednak, aby rozpoczac proces jego uruchamiania, jest ono bowiem realizowane dopiero po uaktywnieniu emulatora (np. poprzez wskazanie okna kursorem myszki i wcisniecie jej lewego przycisku). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 06.05.2000 v2.6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Jest to nieoficjalna wersja emulatora Atari800Win oparta na zrodlach Atari800 0.9.9i z pozniejszymi poprawkami Piotra Fusika. Powazniejsze zmiany w kodzie dla Windows: Dodano: 1) Mozliwosc definiowania wlasnych zestawow klawiszy uzywanych do emulacji joysticka (okno dialogowe "Joystick Options"). 2) Opcje menu "Graphics/Save Screenshot" umozliwiajaca zapisywanie zawartosci ekranu emulowanej Atarynki. 3) Okno dialogowe "Palette Options" pozwalajace na uzywanie zewnetrznych palet zdefiniowanych w plikach .ACT. 4) Opcje menu "File/Turn disk" do automatycznej zmiany obrazow dyskietek w stacji dyskow nr 1. 5) Zaawansowane ustawienia DirectDraw w oknie dialogowym "Graphics Options". 6) Wiele nowych skrotow klawiaturowych ulatwiajacych obsluge. Poprawiono: 1) Uklad kilku okien dialogowych oraz wiekszosci opcji menu, ktore zostaly niemal calkowicie przebudowane w celu zwiekszenia spojnosci i ulatwienia obslugi emulatora. 2) Wyjscie z okna monitora komenda CONT nie wymaga restartu emulowanej Atarynki, nawet jesli wywolanie monitora zostalo spowodowane jej zawieszeniem. 3) Nazwy plikow uzyte podczas zapisywania stanu emulatora oraz dzwieku sa zapamietywane podczas danej sesji. 4) Znaczenie klawiszy funkcyjnych: F7 - przelaczanie pomiedzy zwykla a maksymalna predkoscia emulacji, F8 - wywolanie monitora. 5) Wiele pomniejszych rozwiazan i bledow. Dokladniejszy komentarz odnosnie poczynionych zmian: 1. Zaawansowane ustawienia wyswietlania obrazu Przejscie do okna dialogowego "Advanced Graphics Options" nastepuje po uzyciu przycisku "Advanced settings..." w oknie "Graphics Options". Nowoscia jest mozliwosc wyboru trybu wyswietlania obrazu, w ktorym wykorzystywane sa dwa przelaczane bufory. W tym celu nalezy wybrac opcje "Use two flipped buffers for full screen modes without menu". Metoda ta zapewnia zachowanie synchronizacji wyswietlanego obrazu z czestotliwoscia pionowa, z jaka pracuje monitor. Jest przy tym nieco mniej wymagajaca od dotychczasowej, nadal dostepnej poprzez wybor opcji "Always blit directly from display memory to the primary buffer" i uaktywnienie przelacznika "Synchronize blits with the vertical-blank interval". Metoda podwojnego buforowania moze byc aktualnie uzywana jedynie dla trybow pelnoekranowych bez widocznego menu. Warto w tym miejscu przypomniec, iz uaktywnienie opcji emulatora zapewniajacej synchronizacje wyswietlanego obrazu z czestotliwoscia pionowa pracy monitora nie oznacza, iz grafika bedzie automatycznie idealnie plynna. Aby osiagnac doskonala jakosc przewijania obrazu nalezy bowiem spelnic kilka warunkow, ktore zostaly opisane wczesniej w tym dokumencie. W przypadku niektorych kart graficznych konieczne moze sie ponadto okazac odpowiednie ustawienie dodatkowych parametrow. Przykladowo karty Matrox Millennium G400 wymagaja uzycia programu "Matrox Tweak Utility" i uaktywnienia opcji "FlipOnVBlank", aby przelaczanie buforow dla metody "Use two flipped buffers..." odbywalo sie podczas przerwania synchronizacji pionowej. Opcja "Synchronize with VSYNC" wystepujaca w poprzednich wersjach Atari800Win zostala przemianowana na "Wait until the blit can be set up (synchronous blits)" zgodnie z jej faktycznym przeznaczeniem. 2. Definiowanie wlasnych zestawow klawiszy Wprowadzenie opcji definiowania wlasnych zestawow klawiszy powinno ulatwic zabawe emulatorem w przypadku braku joysticka. Program pozwala na zdefiniowanie dwoch takich zestawow. W tym celu nalezy posluzyc sie przyciskami "Keyset A" oraz "Keyset B" w oknie dialogowym "Joystick Options". Podczas definiowania zestawow nalezy zwrocic szczegolna uwage na nastepujace kwestie: · klawisze uzyte do emulacji joysticka sa wylaczane z pozostalych funkcji. Jesli wiec przykladowo klawisz 'A' zostanie w danym zestawie klawiszy uzyty jako ekwiwalent joystickowego kierunku 'w lewo', a klawisz 'L' - 'w prawo', nie bedzie mozliwe napisanie slowa 'Ala', jesli tylko zdefiniowany w ten sposob zestaw zostanie uaktywniony (tj. przypisany do dowolnego portu joysticka). · program sprawdza, czy klawisze przypisane okreslonym kierunkom/ akcjom nie powtarzaja sie, robi to jednak jedynie w obrebie danego zestawu. Mozliwe jest zdefiniowanie dwoch zestawow z tymi samymi klawiszami, nalezy jednak pamietac, iz dzialac beda tylko te nalezace do zestawu przypisanego do portu joysticka o nizszym numerze. · nie jest konieczne definiowanie klawiszy dla kierunkow "skosnych", tj. 'w lewo-przod', 'w prawo-tyl' etc. Jednoczesne nacisniecie dwoch klawiszy przypisanych kierunkom podstawowym da bowiem ten sam efekt. Przykladowo, jesli strzalki kursora w lewo i do przodu przypisane sa adekwatnym kierunkom joysticka, jednoczesne nacisniecie obydwu tych klawiszy spowoduje uzyskanie kierunku 'w lewo-przod'. Emulator udostepnia rowniez predefiniowane zestawy klawiszy: blok klawiszy numerycznych ('Numpad') oraz strzalki kursora i prawy klawisz Ctrl jako 'fire' ('Arrows + RCtrl as fire'). Uzycie w tym celu lewego klawisza Ctrl mogloby sie wydawac rozwiazaniem wygodniejszym, prowadziloby jednak do sytuacji, w ktorej jednoczesne wykorzystanie czterech zestawow klawiszy przez czterech graczy (np. podczas gry w 'M.U.L.E') byloby bardzo utrudnione. Najlepiej jest wiec zdefiniowac sobie wlasny zestaw, zostanie on zapamietany i bedzie zawsze gotowy do uzycia po uruchomieniu emulatora. 3. Automatyczna zmiana dyskow Atari800Win 2.6 pozwala w pewnym stopniu zautomatyzowac zmiane dyskow w emulowanej stacji nr 1. Aby moc korzystac z tej funkcji, nalezy zadbac o nadanie odpowiednich nazw obrazom wykorzystywanych dyskietek. Zmiana dyskietek realizowana jest w ten sposob, ze ostatnia litera/ cyfra nazwy obrazu dyskietki (bez rozszerzenia) jest zwiekszana o jeden (np. w przypadku liter z 'a' na 'b', cyfr '1' na '2'). Jesli plik o tak zmodyfikowanej nazwie istnieje w aktualnym katalogu, zostanie on automatycznie przypisany stacji nr 1. jesli nie, zwiekszanie ostatniego znaku jest kontynuowane az do momentu osiagniecia maksymalnej wartosci ('z', '9'). Wowczas poszukiwanie rozpoczynane jest od wartosci minimalnej ('a', '1'). Przykladowo, jesli wykorzystywane sa dwie dyskietki: Serious 6a.atr Serious 6b.atr i aktualnie przypisana stacji nr 1 jest Serious 6a.atr, to w celu jej wymiany na Serious 6b.atr wystarczy uzyc opcji menu "File/Turn disk" lub posluzyc sie skrotem klawiaturowym Alt-N. Kolejne uzycie Alt-N przypisze ponownie dyskietke Serious 6a.atr. 4. Zapisywanie zawartosci ekranu Opcja menu "Graphics/Save Screenshot" umozliwia zapisywanie zawartosci ekranu (w tym 'interlace') emulowanej Atarynki do plikow w formacie .PCX. Funkcje te mozna rowniez wywolac poslugujac sie klawiszem F10 (z Shift dla ekranow 'interlace'). Nazwy dla zapisywanych plikow .PCX sa automatycznie generowane przez emulator dopoty, dopoki uzytkownik nie wprowadzi wlasnej. 5. Mozliwosc uaktywnienia emulowanej, zawieszonej Atarynki komenda CONT monitora Poprawka ta pozwala m.in. na uzywanie komend CIM przydatnych podczas uruchamiania i testowania programow dla Atari. Poprzednia wersja emulatora nie pozwalala na taka 'reanimacje', co utrudnialo skuteczne wykorzystanie monitora. 6. Skroty klawiaturowe i klawisze funkcyjne Oto kompletna lista skrotow klawiaturowych rozpoznawanych przez emulator: Alt-1 - przypisuje obraz dyskietki stacji dyskow nr 1 Alt-2 - przypisuje obraz dyskietki stacji dyskow nr 2 Alt-3 - przypisuje obraz dyskietki stacji dyskow nr 3 Alt-4 - przypisuje obraz dyskietki stacji dyskow nr 4 Alt-5 - przypisuje obraz dyskietki stacji dyskow nr 5 Alt-6 - przypisuje obraz dyskietki stacji dyskow nr 6 Alt-7 - przypisuje obraz dyskietki stacji dyskow nr 7 Alt-8 - przypisuje obraz dyskietki stacji dyskow nr 8 Alt-A - przelacza pomiedzy kolejnymi trybami "artifactingu" Alt-C - przypisuje obraz cartridge'u Alt-D - wywoluje okno dialogowe "Drive Selections" Alt-E - wlacza/wylacza emulacje dwoch procesorow Pokey Alt-G - wywoluje okno dialogowe "Graphics Options" Alt-H - wywoluje okno dialogowe "Pick Virtual Hard Disk Dirs" Alt-J - wywoluje okno dialogowe "Joystick Options" Alt-K - wywoluje okno dialogowe "Keyboard Templates" Alt-L - uruchamia atarynkowy plik wykonywalny Alt-M - przelacza pomiedzy roznymi typami emulowanych modeli Atari Alt-N - probuje przypisac kolejny obraz dyskietki w stacji nr 1 Alt-O - odczytuje zapisany wczesniej stan emulowanego Atari Alt-P - wywoluje okno dialogowe "Palette Options" Alt-R - wywoluje okno dialogowe "ROM image selections" Alt-S - wywoluje okno dialogowe "Sound Options" Alt-T - wywoluje okno dialogowe "Atari Settings" Alt-U - wlacza/wylacza odtwarzanie dzwieku Alt-V - przelacza pomiedzy systemami wizji PAL/NTSC Alt-Z - zapisuje do pliku aktualny stan emulowanego Atari Alt-Enter - przelacza pomiedzy ostatnio uzywanym trybem okienkowym i pelnoekranowym Lista wykorzystywanych klawiszy funkcyjnych: F2 - klawisz OPTION F3 - klawisz SELECT F4 - klawisz START F5 - klawisz RESET (warm reset) Shift-F5 - symuluje wylaczenie i ponowne wlaczenie Atari (cold reset) F7 - przelacza pomiedzy zwykla a maksymalna predkoscia emulacji F8 - wywoluje okno monitora F9 - wlacza/wylacza pauze F10 - zapisuje do pliku .PCX aktualnie wyswietlany obraz Shift-F10 - zapisuje do pliku .PCX aktualnie wyswietlany obraz w trybie 'interlace' F11 - wlacza/wylacza szybki dotep do dyskow (jesli uaktywniono opcje "Allow ROM patches" w oknie "Atari Settings") ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 01.04.2000 v2.5e ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Jest to nieoficjalna wersja emulatora Atari800Win oparta na zrodlach Atari800 0.9.9g. Powazniejsze zmiany w kodzie dla Windows: Dodano: 1) Opcje "Enable stereo" w oknie dialogowym "Sound Options". Uzywanie tego rozszerzenia ma sens jedynie przy uruchamianiu wykorzystujacego je oprogramowania (glownie nowe programy demonstracyjne). Wsparcie dla dzwieku stereo wprowadzono w wersji 0.9.9g emulatora Atari800. 2) Opcje "Use digitized effects" w oknie dialogowym "Sound Options". Pozwala ona na uaktywnienie metody generowania dzwieku zwanej "volume only". 3) Prosta konsole monitora oparta na oknie DOS. Aby ja wywolac, nalezy wybrac opcje menu "Misc/Monitor" lub nacisnac klawisz F7. 4) Skroty klawiaturowe do wywolywania okna dialogowego "Pick Virtual Hard Disk Directories" (Alt+V) oraz akcji zapisu (Alt+Z) i odczytu (Alt+O) stanu emulatora. Poprawiono: 1) Nieobecna w poprzedniej wersji emulacje dzwiekow klawiatury. Aby ja uaktywnic, nalezy posluzyc sie opcja "Use digitized effects" w oknie dialogowym "Sound Options". 2) Problemy z oknem dialogowym "Sound Options". 3) Obsluge bledow generowanych przez DirectX. 4) Wygode obslugi okna dialogowego "Error Log", ktorego rozmiary mozna teraz zmieniac w zaleznosci od potrzeb. 5) Ustawienia projektu emulatora (Visual C++). 6) Kilka pomniejszych bledow. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 29.02.2000 v2.5d ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Jest to nieoficjalna wersja emulatora Atari800Win oparta na zrodlach Atari800 0.9.9f. Podstawowym celem przy opracowywaniu tej wersji bylo uaktualnienie emulatora. Wprowadzono jednak rowniez kilka zmian w kodzie dla Windows: Dodano: 1) Opcje "Use new binary load method" w oknie dialogowym "Hardware Settings". Przy jej uzyciu mozna wybrac alternatywna metode ladowania plikow wykonywalnych, wprowadzona w wersji 0.9.9d emulatora Atari800. 2) Opcje "File Associations" w menu "Misc". Sluzy ona do rejestrowania plikow rozpoznawanych przez emulator, co pozwala na ich bezposrednie uruchamianie z poziomu Eksploratora Windows. 3) Dwie nowe ikonki (dotychczasowe sa nadal dostepne). 4) Alternatywna metode synchronizacji wyswietlania obrazu przez emulator z czestotliwoscia odswiezania pionowego, z jaka pracuje monitor (eksperymentalnie, szczegoly opisano nizej). Poprawiono: 1) Problemy z wymiarowaniem okna glownego w trybach "okienkowych". 2) Problemy z zapisem informacji w rejestrach pod kontrola Windows NT. 3) Problemy z oknami dialogowymi "Cartridge Management", "Hardware Options" oraz "Graphics Options". Rozpoczeto rowniez reorganizacje kodow dla Windows, m.in. dodano pliki naglowkowe. Wiecej o nowej metodzie synchronizacji: Ujmujac rzecz najprosciej, modyfikacje polegaja na dolaczeniu alternatywnej metody uzyskania plynnej grafiki. Na czym polega problem? Otoz uzyskanie DOSKONALE plynnej grafiki (tj. DOKLADNIE takiej, jak na oryginalnej Atarynce) przy uzyciu emulatora Atari800Win czasem nie jest mozliwe. Czesto wynika to z ograniczen sprzetu (w pelni satysfakcjonujaca emulacje zapewnia dopiero PC ~300MHz), ale nie tylko... Oto lista krokow, jakie nalezy wykonac, aby cieszyc sie plynnym przewijaniem obrazu: 1. Skonfigurowac odpowiednio parametry wyswietlania obrazu w uzywanym przez emulator trybie graficznym. Nalezy do tego celu wykorzystac oprogramowanie producenta karty graficznej lub jakiekolwiek inne, mogace posluzyc do tego celu (np. TweakHZ, Power Strip). Podstawowym parametrem, jaki nalezy zmodyfikowac, jest czestotliwosc odswiezania pionowego (vertical refresh rate). Jesli emulator ma byc uzywany w trybie PAL, nalezy dazyc do uzyskania wyswietlania obrazu z czestotliwoscia 50Hz, dla NTSC czestotliwosc ta wynosic powinna 60Hz. Przykladowo, sterowniki kart graficznych firmy Matrox pozwalaja na ustawienie niemal dowolnej czestotliwosci odswiezania obrazu pod kontola Wingrozy (oczywiscie w dostepnym dla tych kart zakresie). Dzieki temu mozna uzyskac 50Hz i to praktycznie w dowolnej rozdzielczosci. Ograniczeniem jest dopuszczalna, minimalna wartosc czestotliwosci odswiezania poziomego (horizontal refresh rate) monitorow VGA, zazwyczaj wynoszaca 31kHz. W przypadku Millennium G400 mozliwosci ustawienia parametrow wyswietlanego obrazu sa jednak na tyle duze, ze 50Hz uzyskac mozna nawet w rozdzielczosci 320x240. 2. Skonfigurowac emulator. W przypadku Atari800Win nalezy wywolac okno dialogowe "Graphics Options" (Alt+G), a nastepnie wybrac tryb graficzny, ktorego parametry obrazu zostaly zmodyfikowane w punkcie pierwszym oraz zaznaczyc opcje "Wait on VSYNC". Jej wybranie spowoduje, iz emulator bedzie czekal z "przeniesieniem obrazu na ekran" na sygnal przerwania synchronizacji pionowej. Po ustawieniu opcji graficznych nalezy sie jeszcze upewnic, ze emulator pracowac bedzie w systemie, dla ktorego ustawilismy parametry obrazu. W tym celu nalezy wywolac okno "Hardware settings" i wybrac "PAL" (50Hz) lub "NTSC" (60Hz). Opcja "Refresh" w tym oknie musi byc ustawiona na 1. To... prawie wszystko. Powyzszy algorytm zapewnia uzyskanie oczekiwanych rezultatow w przypadku wiekszosci emulatorow, dysponujacych opcja "Synchronize with VSYNC". Niestety, uruchamiajac Atari800Win przezyc mozna spory zawod. Tyle wysilkow, a ekran w niezapomnianym "Boulder Dashu" czesto nadal skacze i wyglada tak, jakby go "rozrywano". Wynika to z zastosowanej metody synchronizacji wyswietlania obrazu przez emulator z czestotliwoscia odswiezania ekranu monitora. Metoda ta czasem po prostu nie dziala (chociazby w przypadku wspomnianych wczesniej kart firmy Matrox). Wowczas wlasnie przydatna okazac sie moze metoda alternatywna. Jej wyboru dokonuje sie w okienku "Graphics Options" (Alt+G) przy uzyciu opcji "Wait on VSYNC". W tym celu nalezy zaznaczyc te opcje, ale tak, by "ptaszek" byl nieco bledszy (mowiac prosciej, wybrac stan drugi trzystanowej kontrolki checkbox :-) ). Nowa metoda synchronizacji dziala jedynie wowczas, gdy uzywane jest DirectDraw (zarowno w trybach pelnoekranowych, jak i okienkowych). Ciekawe efekty daje rownolegle uaktywnienie opcji "Run Atari as fast as possible" (okno "Hardware", Alt+H): mozna wowczas sterowac predkoscia pracy emulatora poprzez zmiane czestotliwosci odswiezania ekranu przez karte graficzna (niestety, przy takich ustawieniach trzeba sie pogodzic z brakiem dzwieku). Tyle na temat zalet. Niestety, wad moze byc wiecej: · nie wszystkie monitory/karty graficzne pozwalaja na prace w 50/60Hz, · przewijanie obrazu moze znacznie zyskac na jakosci, niestety nie mozna tego powiedziec o dzwieku; dotyczy to zwlaszcza programow wykorzystujacych dodatkowe banki pamieci, · opcja "Refresh" w oknie dialogowym "Hardware Settings" musi byc ustawiona na 1; oznacza to, ze musisz dysponowac naprawde wydajna (?) maszyna, aby uzywanie tej metody mialo sens. Metoda uzyskiwania plynnej grafiki powinna dzialac na roznych platformach, o ile tylko dostepne sa odpowiednie narzedzia do zmiany czestotliwosci pionowej wyswietlanego przez karte graficzna obrazu (w przypadku kart Matrox komfortowa sytuacje maja wlasciciele starszych modeli, G400 zostala pod tym wzgledem potraktowana nieco po macoszemu). W kazdym razie warto sprobowac - jakosc grafiki uzyskanej przy pomocy emulatora Fellow (DOS) potrafi powalic na kolana :-). Zycze powodzenia, Harry (szymankowskit@prokom.pl) No coz, pozostala jeszcze rzecz najwazniejsza, czyli podziekowania :-) Chcialbym je przeslac nastepujacym ludziskom: · Piotrowi Fusikowi (Fox/Taquart) za powazne zajecie sie rozwojem emulatora, solidne wsparcie przy testowaniu okienkowej wersji tegoz oraz wiele wartosciowych pomyslow (www.6502.org/users/fox), · Xlentowi za podsylane dema i bezcenna pomoc w testach oraz sliczne strony w duzej mierze poswiecone Atari800Win (http://poczta.pnet.pl/~xlent2/), · Danielowi Kozminskiemu za okazywana zyczliwosc i wytrwalosc w prowadzeniu stron bedacych niezastapionym przewodnikiem po krainie sentymentalnych wspomnien (http://www.atari-area.prv.pl/) · Rafalowi Dziamskiemu (Vasco/Tristesse) za pomoc w testach i doskonala plytke CD po brzegi wypchana oprogramowaniem dla Atari (peacock.au.poznan.pl/~vasco), · mojej zonie Agnieszce za niezwykla cierpliwosc i wyrozumialosc.