Sztuka udawania

Przegląd emulatorów

Gdy będziemy chcieli zagrać w naszą ulubioną grę sprzed kilkunastu lat, to choć komputery PC teoretycznie zachowują kompatybilność wstecz aż po czasy panowania standardu XT, może okazać się to niemożliwe. Stanie się tak przede wszystkim dlatego, że gra wymaga ekstendera pamięci DOS4GW i wykorzystuje nieprodukowaną obecnie kartę dźwiękową Gravis UltraSound, która działała na archaicznym porcie ISA. Aby temu zaradzić, możemy użyć programu DOSBox, który tworzy warstwę pośredniczącą między uruchamianą aplikacją a naszym sprzętem. Warstwa ta udostępnia identyczne interfejsy wejściowe i wyjściowe, tryby graficzne, karty dźwiękowe, tryby działania procesora (rzeczywisty i chroniony) oraz obsługę pamięci typu XMS i EMS. DOSBox umożliwia uruchomienie DOS-owej gry nawet z poziomu Linuksa czy Macintosha. Emulatory dają nam bardzo duże możliwości i potrafią udawać praktycznie wszystko. Dlaczego więc emulacja jest niekiedy tak trudna w realizacji?

Emulator umożliwia utworzenie takich samych interfejsów wejścia i wyjścia, jakie mają oryginalne urządzenia lub programy. Na przykład emulator telefonu komórkowego udostępnia wirtualne klawiaturę i wyświetlacz, wyglądające tak jak te z prawdziwego telefonu. Jeżeli w emulatorze zostanie zachowana zgodność interfejsów, można będzie uruchomić każdą aplikację, która zadziała na oryginalnym urządzeniu.

Emulatory dzielimy przede wszystkim na sprzętowe i programowe. Sprzętowe to te, które swe zadania realizują za pomocą dodatkowego urządzenia. Choć często były one droższe niż symulowane przez nie urządzenie, to cieszyły się dużą popularnością w czasach powolnych komputerów, kiedy brakowało mocy obliczeniowej, aby sprawnie symulować inną maszynę. Dzisiaj emulatory to przede wszystkim programy pozwalające „udawać” sprzęt, system operacyjny czy też nawet cały komputer. Najczęściej emulowane urządzenia to napędy CD/DVD-ROM, telefony komórkowe, starsze komputery i konsole do gier oraz instrumenty muzyczne (przeważnie dotyczy to znanych modeli syntezatorów analogowych oraz cyfrowych). Popularne są również emulatory peceta na pececie, których głównym zadaniem jest umożliwienie uruchomienia innych systemów operacyjnych pod kontrolą np. Windows. Niestety, emulatory bywają używane również niezgodnie z prawem, np. w celu zastępowania kluczy sprzętowych zabezpieczających aplikacje.

Prędkość ślimaka

Niestety, nie ma róży bez kolców. Emulatory ogromnie obciążają maszyny, na których pracują. Dzieje się tak głównie dlatego, że aplikacje wywoływane za pośrednictwem emulatorów muszą zostać poddane specjalnej interpretacji. Analizowany jest kod programu i każda jego instrukcja zostaje przetłumaczona na taką, którą zrozumie nasz komputer. W celu poprawy wydajności emulatorów ich autorzy wprowadzili techniki lepsze od zwykłej interpretacji. Fragmenty kodu, które zostały już raz przetłumaczone na rozkazy procesora PC, są następnie zapamiętywane i gotowe do wywołania w razie konieczności ich ponownego użycia. Tą drogą eliminowana jest wielokrotna analiza kodu w często wykonywanych fragmentach aplikacji.

Tak się dzieje w przypadku samego procesora, ale kolejnym wymagającym elementem jest układ graficzny. Nasz pecet musi jak najdokładniej odwzorować tryby oraz możliwości akceleracji grafiki, które nawet na tak starych komputerach jak Amiga były niemałe (wspomaganie rysowania linii, prostokątów, okręgów, wypełniania powierzchni itp.). I to właśnie dlatego mając komputer PC z zegarem 800 MHz, możemy mieć kłopot z emulacją maszyny, w której wykorzystywany był CPU o częstotliwości 14 MHz.

Poważnym problemem, z którym możemy się zetknąć, starsze gry jest prędkość procesora. Obecne maszyny bywają kilkadziesiąt razy szybsze od swych poprzedników. Bez specjalnego spowolnienia nie mamy jakiejkolwiek szansy w walce z komputerowym „zbyt szybkim” przeciwnikiem.

Istotnym sposobem na przyspieszenie pracy emulatorów jest wirtualizacja, którą przeprowadza się np. podczas emulowania peceta na pececie. Emulator pośredniczy tu jedynie pomiędzy aplikacją a sprzętem. Cały kod programu jest uruchamiany bez większych zmian i narzutów, a urządzenia, takie jak karta graficzna czy dysk twardy, nie są zastępowane programowymi odpowiednikami – emulator wykorzystuje te, które zainstalowano w komputerze.

Opisywane przeze mnie narzędzia mogą się przydać każdemu. Warto je jednak podzielić według funkcjonalności na aplikacje pomocne podczas administrowania, ułatwiające programowanie oraz przeznaczone do użytku domowego.

Reklama

Przykładowe emulatory i ich przeznaczenie
Nazwa System operacyjny Przeznaczenie Adres WWW [http://] Cena
Emulatory dla administratorów
Virtual PC Windows/Mac OS Emulacja PC www.microsoft.com/windows/virtualpc/default.mspx 129 USD
VMware Workstation Windows 2000/Server 2003/XP/2000 Server/Server 2003 64-bit/Professional 64-bit edition, Linux (Mandrake/Red Hut/SuSE) Emulacja PC www.vmware.com 189 USD
Wine Linux Emulacja środowiska Windows www.winehq.com freeware
Emulatory dla domowych użytkowników
RAMDisk Windows 9x/NT/2000/XP Emulacja dysku twardego za pomocą pamięci RAM www.cenatek.com/product_ramdisk.cfm 49 USD
DAEMON Tools Windows 9x/Me/NT/2000/XP Emulacja CD/DVD-ROM-u www.daemon-tools.cc freeware
DOSBox Windows 2000/XP, Linux i FreeBSD Emulacja środowiska DOS dosbox.sourceforge.net freeware
Pdf995 Windows 9x/Me/2000/NT 4.0/XP/Server 2003 Emulacja drukarki www.pdf995.com 19,95 USD
Emulatory dla programistów
Siemens Mobility Toolkit Windows Emulacja telefonów Siemens communication-market.siemens.de freeware
Nokia Developer Platforms Windows/Linux Emulacja telefonów Nokia www.forum.nokia.com freeware
Visual Boy Advance Windows 9x/Me/NT/2000/XP, Linux, BeOS Emulacja konsoli GBA vba.ngemu.com freeware