Sztuka udawania

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.

Przykładowe emulatory i ich przeznaczenie
NazwaSystem operacyjnyPrzeznaczenieAdres WWW [http://]Cena
Emulatory dla administratorów
Virtual PCWindows/Mac OSEmulacja PCwww.microsoft.com/windows/virtualpc/default.mspx129 USD
VMware WorkstationWindows 2000/Server 2003/XP/2000 Server/Server 2003 64-bit/Professional 64-bit edition, Linux (Mandrake/Red Hut/SuSE)Emulacja PCwww.vmware.com189 USD
WineLinuxEmulacja środowiska Windowswww.winehq.comfreeware
Emulatory dla domowych użytkowników
RAMDiskWindows 9x/NT/2000/XPEmulacja dysku twardego za pomocą pamięci RAMwww.cenatek.com/product_ramdisk.cfm49 USD
DAEMON ToolsWindows 9x/Me/NT/2000/XPEmulacja CD/DVD-ROM-uwww.daemon-tools.ccfreeware
DOSBoxWindows 2000/XP, Linux i FreeBSDEmulacja środowiska DOSdosbox.sourceforge.netfreeware
Pdf995Windows 9x/Me/2000/NT 4.0/XP/Server 2003Emulacja drukarkiwww.pdf995.com19,95 USD
Emulatory dla programistów
Siemens Mobility ToolkitWindowsEmulacja telefonów Siemenscommunication-market.siemens.defreeware
Nokia Developer PlatformsWindows/LinuxEmulacja telefonów Nokiawww.forum.nokia.comfreeware
Visual Boy AdvanceWindows 9x/Me/NT/2000/XP, Linux, BeOSEmulacja konsoli GBAvba.ngemu.comfreeware
Więcej:bezcatnews