Za početnike

What's new
Emulation FAQ
Emulacija novih konzola
Kako ocenjujemo igre?
Editorial: Žrtve Piraterije
Postavite pitanje na forumu

 
 5 poslednjih tema sa emuforuma

 

System sekcije (informacije i emulatori)

 Arcade
 Console
 Pocket
 Comp

Other emu sections

 Console emu

 Misc.

Ostale sekcije

Shop gaming stuff at Play-Asia.com

Search Play-Asia.com
 

Play-Asia.com - Buy Video Games for Consoles and PC - From Japan, Korea and other Regions!

Play-Asia.com
Buy Video Games for Consoles and PC - From Japan, Korea and other Regions!

Twitter updates

Twitter Updates

Follow us on Twitter

 Emulacija

 Tema: Sve o emulaciji  Autor: ZombieMan


Sadržaj
1. Pojam emulacije
2. Nastanak
3. Osnovna podela
3.1. Softverska emulacija
3.1.1. Struktura
3.1.2. Emulacija niskog nivoa
3.1.3. Emulacija visokog nivoa
3.1.4. Primena
3.2. Hardverska emulacija
3.2.1. Struktura
3.2.2. Primena
4. Emulacija kompjuterskih sistema i igračkih konzola
4.1. Uvod
4.2. Modularna emulacija
4.3. LLE vs HLE
4.4. Kako napraviti emulator?
4.5. Poznatiji emulatori
4.6. Emulator vs The Real Thing
5. Zakjučak
6. Literatura

1. Pojam emulacije
Emulator, kao program koji izvršava emulaciju, je program koji na određenoj platformi (hardver i/ili operativni sistem) omogućava pokretanje softvera pisanog za neku drugu platformu. To postiže mapiranjem i izvršavanjem instrukcija ciljnog sistema na postojećem, fizičkom sistemu. Emulator ubeđuje sam softver da se izvršava na ciljnom sistemu. Primene emulacije su brojne i u zabavne i u profesionalne svrhe, sa različitim metodama pristupa, a zajedničko za sve im je gore navedeno, nevezano za tip.

Treba praviti razliku između emulacije i simulacije. Osnove, gore navedene, su im iste, ali za razliku od simulatora, emulatori se izvršavaju u realnom vremenu uz punu interakciju sa korisnikom. Simulatori se izvršavaju na osnovu unapred unetih i definisanih parametara, bez bilo kakve mogućnosti za interakciju u toku izvršavanja.


2. Nastanak
Sve je počelo sa problemom kompanije IBM, krajem 50-tih. Bio im je potreban novi model, savremeniji i napredniji od konkurentskih. Takođe, bila im je potrebna dobra softverska biblioteka da bi zadržali korisničku bazu. Njihov trenutno najrasprostanjeniji i najmoderniji model bio je IBM 7070 sa izuzetnom softverskom podrškom. Međutim, drugi proizvođači su počeli da kopiraju dizajn IBM 7070, izbacujući svoje modele sa mogućnošću izvršavanja softvera za IBM 7070. Nešto je moralo da se uradi, ali novi dizajn IBM-a nije odgovarao. Još za vreme razvijanja novog modela (1963) IBM je prvo pokušao da problem reši čisto softverskim putem. Razvijen je niz specijalnih simulacionih programa i testova za oponašanje trenutno najpopularnijih IBM-ovih kompjutera. Rezulati su bili obeshrabrujući, najbolji su pokazivali dva puta sporije performanse, dok su najgori išli čak i preko deset puta sporije. Kompjuteri jednostavno nisu bili dovoljno napredni za čist softverski pristup. Drugi potez im je bio rešavanje potpuno preko hardvera, ali vremena je bilo malo, a zadatak vrlo težak. Šta više, takav dizajn ih je ograničavao u razvoju onoga što su namerili. Kompanija je izdala jednu seriju zasnovanu na čistom hardverskom principu (IBM 1410S), ali to je bilo samo prelazno rešenje da bi se održao korak sa konkurencijom. Pravi problem je i dalje ostao.

Sve se promenilo predlogom jednog mladog i nadarenog zaposlenog, Lerija Mosa (Larry Moss). Njegova filozofija je bila sledeća - što je arhitektura novog hardvera sliičnija starom, problem je lakši i manji su gubici u brzini. Čist softverski pristup je prespor, a čist hardverski teško izvodljiv i neefikasan, ali ako bi uzeli samo vitalne delove za hardver, a ostale uredili preko softvera imali bi zadovoljavajući rezultat.

I zaista, pokazalo se kao uspešno rešenje. Hardver nije bio ograničen, a novi napredniji model je mogao softverski da izvrši zadate instrukcije bez primetnih gubitaka. Leri je krstio svoj projekat kao emulator i od tada počinje da se koristi izraz emulacija i emulatori u daljem razvoju informatike. Leri Mos se smatra ocem emulacije.

Godine 1965. IBM je izbacio na tržište model pod imenom System/360, koji je potvrdio IBM-ovo mesto na tržištu. Uz njega se isporučivao Moss Emulator, odnosno poznatiji pod imenom 7070 emulator. System/360 je bio potpuni uspeh i mnogi su ga koristili sa softverom za IBM 7070 sve do početka sedamdesetih, potpuno nesvesni nove tehnologije koju su koristili.
A ostalo je, kako kažu, istorija.


3. Osnovna podela
Osnovna podela emulatora prema uslovima za emulaciju i pristup je: hardverski (firmver), softverski i kombinovani.

- Kod hardverskog, odnosno firmver (firmware) emulatora, proces izvršavanja emuliranog softvera se obavlja potpuno preko zadatog hardvera. Ovo su najbrži emulatori, ali i najteži za implementiranje (skupi i komplikovani).

- Softverski emulatori izvršavaju ceo proces preko softvera bez ikakvog specijalizovanog hardvera. To je najsporiji metod, ali i najisplativiji. Nema potrebe za skupim hardverom.

- Kombinovani emulatori (combo emulators) predstavljaju mešavinu softverskih i hardverskih emulatora. Uglavnom se svode na softver sa dodatnim hardverom, dizajniranim posebno za neki deo ciljnog sistema, kako bi olakšali emulaciju i dobili na brzini i preciznosti. Predstavljaju dobar balans između brzine i tačnosti same emulacije i imaju prihvatljivu cenu. Bili su u većoj upotrebi u prošlosti, da bi ih sada skoro potpuno zamenili softverski emulatori. Prvi emulator je bio ovog tipa.
 

3.1. Softverska emulacija

3.1.1. Struktura
Kao što je više puta pomenuto, ovde je sve urađeno softverski. Ova vrsta emulacije je ubedljivo najčešća na današnjim sistemima s obzirom na tehnološki napredak. Teoretski rečeno, ovakva emulacija bilo kog sistema je moguća na bilo kom drugom sistemu. Međutim, problem je brzina. Lako se može desiti da startni sistem nije dovoljno brz za uspešno emuliranje ciljnog sistema. I u praksi, proces stvaranja potpuno tačnog emulatora je mukotrpan, uglavnom zbog nedovoljne dokumentacije ciljnog sistema.

Većina emulatora emuliraju samo hardversku strukturu. U ovom slučaju OS (operativni sistem), BIOS, i drugi eventualno neophodan softver za podizanje sistema se mora obezbediti za uspešno emuliranje. U suprotnom i ovo se (uz značajan trud) može emulirati i implementirati u sam emulator. U svakom slučaju i OS i softver se prevode od strane emulatora da bi se prilagodili postojećem hardveru, i bili izvršivi na startnom sistemu.

Umesto pune emulacije može se koristiti takozvani sloj kompatibilnosti. On direktno prevodi intsrukcije emuliranog procesora u instrukcije postojećeg, na kome se emulira. Potrebne su sistemske datoteke sistema koji se emulira da bi proces bio uspešan. Ovakav pristup zaobilazi kompleksnost hardverske emulacije i zahtevnost softverske. Primeri za ovakav pristup su Windows emulatori za Unix sisteme, Linux distribucije zasnovane na jednoj određenoj distribuciji (Red Hat), Windows XP kompatibilni mod za starije programe i dr. Sloj kompatibilnosti je izvodljiv samo ako je postojeći procesor naviše kompatibilan sa emuliranim, to jest nije moguće emulirati x86 platformu (PC) na PowerPC platformi (Mac). U takvim slučajevima potrebna je puna emulacija.

Emulatori su tipično podeljeni na module, koji grubo odgovaraju podsistemima emuliranog sistema. To su: procesor (CPU), memorija i ulazno-izlazne jedinice (I/O). Sistemeske magistrale (bus) se uglavnom ne emuliraju, zbog jednostavnosti i brzine. Virtuelne komponente mogu direktno da komuniciraju sa procesorom i memorijom.

Procesor je najteži deo za emuliranje, zbog toga što mnogi procesori imaju malo ili nimalo dodirnih tačaka. Najjednostavniji način za emuliranje procesora, bilo glavnog (CPU), bilo grafičkog (GPU) ili nekog drugog je preko Interpretatora (Interpreter), odnosno emulacijom niskog nivoa. Postoje i drugi, napredni i vrlo sofisticirani načini, teži za implementiranje ali sa drugim prednostima.

Memorija se može emulirati prostim nizom elemenata veličine emulirane reči, tj. izjednačivanjem fizičke memorije sa emuliranom. Dobija se na brzini i jednostavnosti, međutim ovakav pristup propada vrlo brzo, čim se desi da se neka lokacija u kopjuterskoj logičkoj memoriji ne podudara sa fizičkom. Ovo se dešava kada emulirani hardver dozvoljava memorijski menadžment (memory menagement) i u tom slučaju potrebno je da MMU (memory menagement unit) logika tog hardvera bude takođe emulirana u okviru memorijskog, procesorskog ili zasebnog modula. Čak i ako emulirani sistem ne poseduje MMU logiku postoje drugi faktori koji mogu da utiču na neslaganje adresa logičke i fizičke memorije. Zbog toga se u emulatorima upotrebljavaju različite procedure za pravilno čitanje i pisanje logičke memorije. Dužnost ovih procedura je pravilno mapiranje (raspoređivanje) svakog pristupa u tačnu lokaciju tačnog objekta u memoriji.

Ulazno-izlazne jedinice se uglavnom tretiraju kao zasebni slučajevi zbog toga što se magistrale ne emuliraju, pa samim tim nema nekog određenog odnosa sa virtuelnim periferijama. Ovo rezultuje povećanjem performansi, pošto svaki I/O modul može biti osmišljen i oblikovan uz dobru ideju i malo truda u standardnom I/O API-ju. Naravno i kod emulatora koji ih tretiraju zasebno, postoje izuzeci.

3.1.2. Emulacija niskog nivoa
LLE (Low Level Emulation) se, kao i emulacija visokog nivoa, odnosi i primenjuje uglavnom na procesore emuliranog sistema (centralni, grafički, zvučni…). Najprostija forma emulacije procesora je Interpretator (Interpreter), koji prevodi instrukcije emuliranog procesora u letu, odnosno za svaku instrukciju emuliranog procesora izvršava instrukcije na postojećem procesoru, koje su semantički ekvivalentne originalnim instrukcijama.

Ovo je omogućeno dodeljivanjem promenljive za svaki registar i flag emuliranog procesora. Na ovaj način, logika emuliranog procesora može manje ili više direktno da se prevede u softverske algoritme, kreirajući softversku re-implementaciju, koja praktično odgovara originalnoj hardverskoj implementaciji.

Interpretatori su vrlo popularni kao procesorski emulatori, zbog mnogo veće jednostavnosi implementiranja od drugih rešenja sa boljim performansama. Njihova brzina je više nego zadovoljavajuća za emuliranje sistema starijih od desetak godina, na današnjim sistemima.

Međutim, problem sa brzinom može biti izuzetan kada se emulira sistem sa procesorskom brzinom iste klase kao startni sistem (emuliranje jednog modernog sistema na drugom sistemu iste generacije, ili primer prvih IBM-ovih pokušaja sa emulacijom čisto softverskim putem). Zbog toga, do pre nekoliko godina nije bilo zamislivo stvaranje praktičnih emulatora novijih sistema ove vrste.

3.1.3. Emulacija visokog nivoa

Ono što je omogućilo savladavanje restrikcija Interpretatora, bio je napredak u dinamičkoj rekompilaciji (dynamic recompilation, dynarec). Jednostavno prevođenje emuliranog programskog koda u izvršiv kod na postojećem sistemu je uglavnom nemoguće zbog nekoliko razloga: mogućnost koda da bude samo-modifikujući (self-modifying), nepostojanja pouzdanog načina za razdvajanje tekstualnog od data (podaci) segmenta (samo tekstualni segment se prevodi, data segment ne sme), ili nepostojanja načina za uspešno komuniciranje sa emuliranim operativnim sistemom kada se učita novi kod, na primer sa diska.

S obzirom da se za ovo koristi kompajler (compiler) za prevođenje, proces je mnogo brži, i imamo mnogo bolje performanse. Ime dinamic recompilation dolazi od prirode ovakvog prevođenja. Znamo da se kompajlerom prvo prevodi, pa onda izvršava program, a u ovom slučaju kompajler prevodi delove koda i snima ih u sistemski keš (cache) da bi ih ponovo upotrebio kada naiđe na isti kod. Ovim se eliminiše potreba interpretatora za stalnim prevođenjem koda koji se ponavlja, i generalno se dobija u performansama.

Da bi se izbegli gore navedeni problemi postoje razne nove tehnike kao na primer Just-In-Time Compiler, odnosno JIT Compiler. JIT Compiler tehnika pokušava da reši problem čekanjem dok procesor ne dođe do još neprevedenog koda, i samo tada ga prevodi “upravo na vreme” (just in time). Prevedeni kod se smešta u za to određeni keš, a originalni nije izgubljen ili promenjen. Ovaj prevedeni kod se onda koristi kad sistem naiđe na identičan problem, štedeći sistemske resurse. Kada sistem naiđe na novi nepoznati kod, ponovo ga prevodi na isti način.

High Level Emulation (HLE) odnosno emulacija visokog nivoa se između ostalog zasniva i na ovakvim tehnikama. Treba znati, međutim, da se ova emulacija može realizovati i uz pomoć Interpretatora, uz veće opterećenje sistema, ali i dalje sa boljim rezultatima od emulacije niskog nivoa.

O čemu je reč? HLE za razliku od LLE ne emulira celu strukturu procesora (promenljive za svaki registar i flag, imitiranje logike emuliranog procesora). HLE se koristi za emuliranje sistema određene kompleksnosti uz manjak znanja o samom sistemu koji treba da se emulira. Ovde programer pokušava da nađe instrukcije između postojećeg i emuliranog procesora koje izvršavaju (makar približno) istu stvar. Ovo je slično upotrebi sloja kompatibilnosti, s tim što ovde procesori ne moraju da imaju zajedničko poreklo. To donekle otežava stvari, zbog toga što se uspešni rezultati ovakvom emulacijom dobijaju uglavnom eksperimentisanjem. Filozofija ovakvog pristupa je da su oba procesora sposobna da obave isti proračun, samo uz drugačiji pristup. Kada nađu ove instrukcije, ostaje im samo da preusmere instrukciju emuliranog sistema u odgovarajuću instrukciju postojećeg, dramatično uvećavajući performanse, pošto u ovom slučaju procesor direktno obrađuje podatke koje dobija. Naravno ne može sve uvek da bude perfektno, bar ne bez malo doterivanja, pošto se lako može desiti da tajming (timing) nije dobar, rezultujući ponekad u sporijem ili čak bržem izvršavanju softvera nego što je odgovarajuće.

Dakle, suštinska razlika u odnosu na LLE je u tome što se podaci obrađuju direktno, ne preko emuliranog sistema.

Prvi ovakav emulator po kome je tehnika i dobila ime izašao je 1999. godine, pod imenom UltraHLE. U pitanju je emulator konzole Nintendo 64, koja je u to vreme predstavljala vrlo napredan hardver, pa su mnogi samim tim tvrdili da do tačne emulacije ovog sistema treba da se čeka još bar 5-6 godina. Tvrdnje su im ispale netačne, upravo zbog primene gore navedenih metoda i emulator je mogao da izvršava softver (igre) u punoj brzini, ipak ne bez problema sa nekim (zbog tajminga i nepotpune implementacije).

Potpunu HLE implementaciju vrlo je teško izvesti. Emulatori obično imaju jedan, manji LLE deo, a koriste HLE onde gde se najviše može dobiti na brzini.

Posle prvog usledili su i drugi, zreliji projekti, na svim poljima. Naravno, treba imati u vidu da je uspešna HLE metoda daleko teža za osmišljavanje i realizovanje od LLE. Kvalitetni emulatori rađeni ovom metodom nastaju više godina i najviše zavise od mogućnosti sistema za različite instrukcije a manje od brzine.

3.1.4. Primena
Danas, u vreme modernih računarskih sistema, softverska emulacija je vrlo rasprostranjena. Jedna od bitnijih uloga joj je u dizajnu novog hardvera: pre same proizvodnje testira se budući softver na emulatorima (i simulatorima) tog, još neproizvedenog hardvera. Tako se štedi u proizvodnji i dobija pouzdan proizvod.

Druge bitne primene dolaze u vidu emuliranih uređaja potrebnih za rad i kompatibilnost sa nekim starijim hardverom (problem izražen u velikim preduzećima kojima se ne menja baš ceo inventar), ili kao zamene za skupe hardverske uređaje za ličnu upotrebu (muzika na primer).

Međutim, možda ne najbitniji, ali svakako najrasprostranjeniji vid upotrebe emulacije je za međusobno emuliranje različitih kompjuterskih platformi (Mac, PC/Windows, PC/Linux, Unix…) i za emuliranje mnogobrojnih igračkih konzola (naročito na PC-ju).
 

3.2. Hardverska emulacija

3.2.1. Struktura
Hardverska emulacija je proces imitiranja jednog hardvera (obično sistem u razvoju) drugim hardverom, uglavnom specijalno dizajniranim za emulacione probleme. Sam hardver se konfiguriše tako da odgovara ciljnom i omogući pokretanje softvera za željeni hardver. Ovakav pristup je vrlo koristan u dizajnu novog hardvera. Pošto se sotverski utvrdi kakav je model potreban, pravi se hardverski emulator koji se dalje koristi za testiranje i razvoj. Ovako se radi zbog brzine projektovanja preko softvera i brzine izvršavanja preko hardvera.

Velika primena je u takozvanoj emulaciji unutar kola (in circuit emulation), kada se takav hardverski emulator koristi unutar sistema koji nije potpuno izgrađen, umesto još uvek nepostojećeg dela. Ovo omogućuje izolovanje grešaka i olakšava projektovanje budućeg dela.

Još jedan primer hardverske emulacije na određenim sistemima je firmver (firmvare) emulacija. Ona omogućava potpuno rekonfigurisanje sistema kako bi odgovarao drugom softveru. Ovo znači da startni sistem mora da ima sličnosti sa emuliranim kako bi mogao uspešno da izvršava zadati softver.
Firmver emulacija radi tako što učitani softver aktivira funkciju firmvera koji onda podešava hardver za izvršavanje novih instrukcija, odnosno pretvara novi hardver u stari, čiji softver pokrećemo.

3.2.2. Primena
Hardverska emulacija ima veliku primenu, kao što je malopre pomenuto, u dizajnu sistema i lakšem otkrivanju grešaka. Takođe ima primenu u razvoju softvera za sisteme u razvoju (ako je softverska emulacija prespora). Međutim, najveću primenu ima kod kompatibilnosti za starije sisteme. Tu se koristi firmver emulacija (svima poznat primer Playstation 2 konzole koja pokreće Playstation softver baš na ovaj način, ili kompatibilnost novih 64-bitnih procesora sa 32-bitnim softverom). S obzirom da su ovakvi sistemi naslednici i nadogradnja prethodnika ova emulacija je relativno laka za implementiranje u tom slučaju. Ako se uradi dobro, postižu se savršene, ili čak bolje performanse nego na originalnom sistemu.



4. Emulacija kompjuterskih sistema i igračkih konzola

4.1. Uvod
Zbog svoje rasprostranjenosti i značajnog uticaja na razvoj emulacije posvećujem jednu dužu sekciju ovoj primeni emulacije.

Treba imati u vidu da konzole i razni kompjuterski sistemi, pogotovu novije generacije, imaju izuzetno komplikovanu arhitekturu. Pravi je izazov napisati neki emulator za 3D konzole (što ne znači da su 2D konzole lagane za emulaciju), pogotovu imajući u vidu njihovu brzinu i mogućnosti. Za uspešne rezultate (upotrebljive od strane korisnika) skoro uvek je potrebno pribegavati emulaciji visokog nivoa, sa svim mogućim optimizacijama (dynarec, JIT-compiling i druge). Samim tim povećava se verovatnoća nepotpune tačnosti same emulacije (potrebno je mnogo doterivanja), a i treba imati u vidu da pričamo o vrlo sofisticiranim sistemima. Potrebno je mnogo eksperimentisanja za utvrđivanje i povezivanje međusobno odgovarajućih instrukcija, uz stalnu pažnju na gore navedeni problem.

Starije konzole prolaze malo bolje, s obzirom na niske radne frekvencije njihovih procesora. Ovo znači da se bez većih problema može koristiti Interpretator, čime svi gore navedeni problemi nestaju. Ljudi koji su tvrdili da ćemo mnogo čekati na emulator Nintendo 64 konzole su bili donekle u pravu, tek 2006. godine smo dobili nagoveštaje o potpuno LLE N64 emulatoru (a potrebna mašina je zastrašujuća), koji je još uvek u izradi (Project 64 v1.7).

Kako se emuliraju sistemi za skladištenje podataka sa softverom za starije sisteme? Zbog upotrebe kertrirdža, koji PC računari ne mogu da pročitaju, pribeglo se alternativnim metodama. Uz pomoć modifikovanog originalnog hardvera (ili ručno smišljenim i napravljenim uređajima) pravi se identična kopija sadržaja kertrirdža (ili nekog drugog medijuma), obično nazvana ROM (Read Only Memory). Onda je potrebno da sam emulator može da emulira sistem ulaznih jedinica (u ovom slučaju čitač kertrirdža, ekvivalent CD-ROM-u na današnjim sistemima) i pravilno prepozna i učita iskopirani ROM. Ako je sve dobro urađeno softver može da počne sa izvršavanjem. Ovaj problem nije toliko izražen kod novijih konzola, pošto dotične uglavnom imaju standardne CD/DVD-ROM jedinice, kao i kompjuteri (naravno i tu mora da se podesi ponešto).

Problem može nastati ako se na samim kertrirdžima nalazi neki dodatni hardver, pa sama kopija sofvera nije dovoljna. Potrebno je napisati emulator i za taj hardver i implementirati ga u glavni emulator. Primer za ovo su mnoge igre za NES i SNES konzole.

Kada su u pitanju nove konzole, neko će zapitati zašto su potrebni moćni grafički procesori za postizanje dobrih rezultata, uprkos tome što se koristi HLE metoda. Stvar je u raznim mogućnostima novih grafičkih procesora, koje olakšavaju programerima nalaženje odgovarajućih instrukcija za emuliranu grafiku, uz minimalan gubitak. Razlog za ovo leži u tome što mnogi proizvođači konzola prave custom grafičke sisteme sa svojim pristupom i često nestandardizovanim instrukcijama. Zbog toga i interpretator (vrlo spor) i rekompajler (traži moderan hardver) imaju problema sa nekim sistemima.

U svakom slučaju, ne svodi se sve na igre, programeri emulatora za konzole su ljudi izuzetnog znanja, zato što im je potrebno poznavanje više različitih arhitektura sistema i različitog softvera pisanog za te sisteme. Zbog ovoga emulatori se rade modularno, gde je svaki modul rađen od strane specijalizovanog programera za tu oblast.

4.2. Modularna emulacija
U računarstvu modul predstavlja softversku celinu koja grupiše (uglavnom povezane) podprograme i informacione strukture. Moduli funkcionišu kao nezavisne celine, čineći samo krajnji rezultat vidljiv.

Modularni interfejs definiše elemente koji se prosleđuju modulu i elemente koji se dobijaju od modula. Ovi elementi su vidljivi drugim modulima. Ovakva implementacija sadrži upotrebljiv programski kod, koji odgovara elementima definisanim u interfejsu.

Dakle, moduli su jedinice koje mogu da se prevode odvojeno, što ih čini višestruko upotrebljivim, i omogućava da više ljudi radi na različitim jedinicama.

Modularna emulacija više nije tolika novost, ali ipak spada u skorašnje tehnologije. Zbog više puta pominjanih problema, za novije sisteme se nameće ovakav razvoj. Zbog potrebe izuzetnog programerskog znanja u mnogo različitih oblasti, vrlo je teško, ako ne i nemoguće, da neki kompleksniji emulator napiše jedan čovek. Ovaj pristup omogućava podelu posla ekspertima za različite oblasti, kako bi na kraju dobili kompletan proizvod. Samim tim, pored poboljšanja kvaliteta, ubrzava se razvoj emulatora.

Ovakav posao bi mogao da obavi i tim ljudi, koji bi to sve spakovali u jednu celinu (npr. playstation emulatori Bleem! i VGS), međutim nekada nemamo ovakve uslove. Kada su programeri geografski razdvojeni, i kada glavni programer ne zna, na primer, da isprogramira zvučni modul, on se okreće ovom rešenju. Osoba koja bi mu pomogla ne mora da zna ništa o glavnoj arhitekturi sistema, već samo o zvučnoj.

Drugo ime za module kakve srećemo u emulaciji je plugin (plugin module). Oni mogu imati razne funkcije: grafički, zvučni, razni I/O plugin-ovi, idr. Ovim dobijamo mogućnost izbora, pošto možemo da kombinujemo razne plugin module iste svrhe i time povećamo funkcionalnost jednog istog emulatora. Kada postoji više emulatora istog sistema na tržištu, ukoliko su modularni, autori se trude da naprave specifikaciju, tako da se isti plugin modul može koristiti u različitim emulatorima.

Prvi emulator sa ovim pristupom bio je PS Emu Pro, emulator Playstation konzole. Njime je definisana specifikacija koja se koristi i u današnjim Playstation emulatorima (ePSXe, AdriPSX, FPSE…). Još jedan primer dobro definisanog sistema je emulacija konzole Nintendo 64 (Project64, Mupen64, 1964…), gde takođe postoji izuzetna specifikacija koja se još uvek koristi.


Vgs, Playstation emulator zasnovan kao jedna celina


Prozor za podešavanje Vgs-a, izuzetno jednostavan, sa svega nekoliko mogućnosti za podešavanje:
kontrola, tona, osvetljaja i snimanja pozicije

Očito, ovakav emulator je vrlo jednostavan za krajnjeg korisnika, koji praktično treba samo da ubaci igru. Međutim, to je istovremeno i najveća mana. Program, ma koliko dobar bio, je ograničen na trenutnu verziju, i ne postoji način da se ikako poboljša mimo toga. Razvoj ovog emulatora je obustavljen. VGS je LLE emulator.


ePSXe, moderan, modularan playstation emulator,
 sa menijem za podešavanje raznih plugin modula.

I tu leži najveći problem modularne emulacije - mnogo podešavanja. Ovoliko podešavanja svakog modula ponaosob nije za početnike. U većini slučajeva potrebno je dobro znati materiju: emulacione pojmove, napredna kompjuterska podešavanja, a ponekad čak i hardversku prirodu emuliranog sistema. Postoje takozvani front-end programi koji ovo malo ublažuju, ali ipak stoji da ovakvi emulatori nisu za potpune početnike.


Meni za izbor plugin modula, u ovom konkretnom slučaju za video emulaciju (grafički procesor - GPU), i meni
 za podesavanje istog, sa dosta parametara za podešavanje, ovaj plugin (Pete’s HwAcelerated Series 1.76)
 se smatra jednim od najboljih, ali i najkomplikovanijih.

Modularni emulatori se ne mogu lako svrstati. Neki moduli mogu biti HLE, a neki LLE. Ovaj plugin je HLE, baš kao i sam emulator (ePSXe).

   
Šematski prikaz funkcionisanja ovih emulatora. VGS na levoj strani, ePSXe na desnoj.

 

4.3. LLE vs HLE
Već je bilo reči o pojmovima emulacije visokog i niskog nivoa. Istaknuto je koje su prednosti i mane oba pristupa.

Međutim treba znati da to ne mora uvek da bude slučaj, HLE nije uvek (mnogo) brži od LLE. Uzmimo na primer konzole starije generacije (Mega Drive, SNES…), kod kojih arhitektura nije toliko hardverski napredna da bi zavisila od ovog pristupa. Jednostavno, LLE je precizniji, Interpretator je dovoljno brz, i dobitak u brzini jednostavno nije toliko značajan da bi programeri ulagali trud. Nepisano je pravilo da, što je sistem sofisticiraniji, veći je (mogući) dobitak u performansama. Zašto mogući? Pa recimo u slučaju zvučnog modula: Implementiranje HLE zvučnog modula stvarno dodaje malo brzine, ali LLE varijanta će posao obaviti samo malo sporije, a dosta preciznije. Primer ovoga su zvučni plugin moduli Nintendo 64 i Playstation emulatora, koji postoje i u HLE i u LLE varijantama (neki čak sadrže oba moda u jednom). I sami programeri naglašavaju da, ukoliko se poseduje dovoljno moćan sistem, bolje je pribeći LLE rešenju.

Primer grafičkog modula je još bolji. Kod modernih sistema koji rade sa trodimenzionalnim objektima (Playstation, Nintendo 64, Sega Saturn, Dreamcast…) LLE varijanta može biti izuzetno zahtevna. Jedini pravi LLE grafički moduli (ili rešenja u okviru jedinstvenih emulatora) trenutno postoje za Playstation (postoji mogućnost izlaska LLE grafičkog modula za emulatore Nintendo 64 konzole u toku 2007. godine). Ovo ne čudi, pošto kada se pogledaju brojke, Playstation ima najslabiji grafički hardver.

Osim u brzini glavna razlika je u izvršavanju. Zbog razloga opisanih u sekcijama 3.1.2. i 3.1.3. znamo da je LLE emulacija mnogo preciznija. LLE daje tačan (ili vrlo blizak) rezultat kao pravo parče hardvera. Ovo, pored tačnosti, znači i da je taj rezultat prilično nepromenljiv, to jest da on ne može da se poboljša u nekim većim razmerama. Tu na scenu stupa HLE. Pošto HLE obrađuje emulirani softver direktno (ne preko emuliranog hardvera) moguće je u velikoj meri uticati na krajnji rezultat. To praktično znači da se može dramatično povećati kvalitet, recimo, grafike (rezolucija, brzina, detalji, teksture…) ili zvuka (veća frekvencija, bolji odjek…), iznad nivoa originalnog sistema. Na primer, Playstation igra koja je stara više godina i tehnički prevaziđena, može se “ispeglati” i učiniti prihvatljivijom za današnje standarde.


Slika iz ePSXe emulatora, sa HLE grafičkim modulom.


Slika iz VGS emulatora (LLE grafika)

Playstation konzola ima niske video modove za 3D, ne podržava filtriranje tekstura, nema veliku memoriju, pa samim tim ne može da prikaže velike pejzaže i dr. Slika 7. prikazuje igru (Crash Team Racing) pokrenutu preko VGS-a u prirodnom (native) grafičkom modu (rezolucija 320x240, bez filtriranja tekstura). Rezolucija i efekti se mogu prisilno povećati, ali to upšte neće dati bolju sliku (emulator je pokrenut u 800x600 windows rezoluciji, sa uključenim AntiAliasing efektima, i Anisotropic filtriranjem). Izlazni rezultat će uvek biti isti. Na slici 6. HLE grafički modul zaobilazi ovaj problem, prosleđujući informacije direktno hardveru PC-a, što se može i videtu po kvalitetu (prava rezolucija 640x480, AntiAliasingX6, AnisotropicX16). Vrhunski odrađeni HLE moduli mogu da potisnu LLE verzije, ali uvek postoji neki izuzetak koji zahteva isključivo LLE.

4.4. Kako napraviti emulator?
Emulator ne može da napravi bilo ko. Potrebno je izuzetno znanje programiranja, i poznavanja samog sistema koji se emulira. Dalje, bitnu ulogu u kreiranju ima izbor programskog jezika. Stariji jezici (npr. BASIC) ovde nemaju šta da traže, zbog nedovoljne brzine generisanja koda. Poželjni jezici su:

- Pascal, mada jedva u upotrebi, predstavlja izbor početnika. Ima dobar odnos između kompleksnosti i lakoće. Nije brzinski šampion, pa nije upotrebljiv za emulatore novije generacije. Jezik nameće veoma disciplinovan kod, što znači da on mora sa se napiše na tačno određen način (za razliku od npr. C/C++, Delphi koji su dosta slobodniji). Ovo onemogućava pisanje “neposlušnog koda”. Ovo je dobro sa sigurnosne strane, ali ima svoju cenu. Ovako generisan kod ima pristojnu brzinu, ali ni približnu kao C/C++ ili mašinski kod, zbog toga što jezik ima interne provere u generisanom kodu koje sprečavaju neposlušan kod. Zbog ovih provera, kod ne može da postigne brzinu drugih jezika.

- Delphi, je naslednik Pascal-a, unapređen je novim mogućnostima, ali još uvek nije šampion brzine. Bez obzira šta može, ipak nije namenjen ovakvoj (ekstenzivnoj) upotrebi.

- C/C++, su jezici profesionalaca. Oba su zapravo prilično isti jezik. Kompajler jezika C može da generiše kod koji može da se koristi direktno sa mašinskim kompajlerom. To znači da pametan programer može da pomeša C i mašinski kod, i tako postigne najbolje rezultate. C++ je noviji, više objektno orijentisaniji.

Mada ovaj jezik nije toliko prihvatljiv kao PASCAL, brzina ovako generisanog koda je mnogo veća, zbog toga što ovaj kod nema nikakve interne provere. Takođe se mora naznačiti koje se hardverske/programerske mogućnosti koriste, što omogućava još efikasniji kod. Kod može da se napiše tako da bude prenosiv na druge operativne sisteme, ali o ovome se mora razmisliti u vreme kreiranja koda, ili proces može postati prilično težak na kraju.

- Assembly (mašinski) jezik nije za one sa kratkim živcima i lošim srcem. Generisani kod može biti mnogo brži od C koda, ali je mnogo teži za razumevanje. Ispravno napisan program može da bude višestruko brži od većine C/C++ koda, ali samo ako je programiranje u mašinskom jeziku urađeno dobro. Ako nije urađeno kako valja, biće isti, ako ne i sporiji od efikasno napisanog progama u C/C++ jeziku. Drugim rečima, ovaj jezik autoru daje potencijal pisanja brzog programa, ali ga ne garantuje. Mnogi tvrde da C/C++ kompajler prevodi kod vrlo efikasno, što je tačno. Po njima učenje mašinskog jezika nije uputno. Međutim, pametan programer mašinskog jezika može uvek da nađe nešto što će dati programu još malo snage.

Mašinski jezik je jezik niskog nivoa, što znači da se direktno kompjuteru govori šta da radi, na hardverskom nivou. Ovakav pristup čini jezik vrlo kompleksnim, i zbog ovoga, mnogi autori preferiraju da u mašinskom jeziku urade samo one delove koda koji će najviše dobiti na brzini.

Problem sa ovakvim kodom je to što nije lako prenosiv između različitih tipova mašina (MAC i PC na primer), pošto je kod zavisan od hardvera. Nešto što je pisano za PC neće raditi na drugoj mašini bez neke vrste reprogramiranja.

- Java, je noviji jezik. Kod napisan u ovom jeziku je potpuno (100%) prenosiv na druge operativne sisteme, dok god je to čist Java kod. Nažalost ovo ne dolazi bez teške cene. Ovaj kod nije ni približno brz kao bilo koji drugi, zato što nije optimizovan ni za koji specifičan operativni sistem ili hardver. Drugi razlog je to što, kao i Pascal, Java ima svoje mehanizme internih provera. Takođe Java ima neke specijalne mehanizme provere koji dodatno usporavaju celu stvar. Sve ovo čini Javu dobrim jezikom za pisanje jednostavnih programa, brzo i efikasno, koji pritom mogu da se izvršavaju na svim platformama.

4.5. Poznatiji emulatori

Vremenom, objavljivani su razni emulatori novijih i starijih sistema. Neki od njih su još uvek aktivni, i redovno dobijaju nove verzije. Ovde se nalaze neki od poznatijih.

Playstation
Playstation je jedna od najviše emuliranih konzola. Prvi (dobri) playstation emulatori su bili komercijalni (VGS i Bleem!), i kao takvi izazvali veliku pažnju. Sony je konstantno ulagao sudske tužbe protiv autora, što je ove programe učinilo još poznatijim. Mada su preživeli sud, ovi emulatori ipak bivaju napuštemi. Mada su prevaziđeni, čine značajnu ulogu u istoriji emulacije. Prvi modularni emulator bio je Ps Emu Pro, ali nije dugo živeo. Na svu sreću, drugi su nastavili tom stazom.
VGS, kao jedan od prvih Playstation emulatora, i prvi komercijalan, izašao je prvo samo za Macintosh kompjutere. Kasnije je urađena i PC verzija. Ovaj emulator, mada ne može da se pohvali lepom slikom, ima odličnu kompatibilnost - čak i po današnjim standardima. VGS je LLE emulator, i sve što se tiče grafike obrađuje softverski. Dobra stvar je to što nije potreban moderan grafički hardver za njegovo pokretanje. Takođe, pošto koristi softverski rendering, ne postoje problemi oko prikazivanja raznih specijalnih efekata. Ovo je teško preko PC hardvera, zbog toga što grafički procesor (GPU) Playstation-a nije rađen po istim standardima (custom). Naravno, zvog toga je slika takva, kakva je (vidi Sliku 7.).

Ovaj emulator je sa uspehom pokrenuo veliki broj naslova, bez vidnih problema. Odličan je za početnike, pošto je vrlo jednostavan za upotrebu. Sve što treba uraditi je ubaciti igru u cd-rom, i emulator će automatski početi sa radom. Nažalost, razvoj je prestao početkom 2001. godine (poslednja verzija ovog emulatora je 1.41).

ePSXe se smatra najboljim Playstation emulatorom današnjice. Izrađen od strane ljudi koji sebe na internetu nazivaju Calb, Galtor i _Demo_(poznat kao autor ZSNES emulatora). Besplatan je, i koristi plugin module, koji izrađuje veliki broj ljudi koji ne rade aktivno na samom emulatoru. ePSXe koristi dinamičku rekompilaciju (dynarec, vidi sekciju 3.1.3.) za postizanje boljih rezultata. Emulator je u razvoju dugi niz godina, i bez obzira što je glavni deo (core) HLE, može se reći da su autori postigli kompatibilnost kao i VGS, ako ne i bolju. Inače, svi ostali delovi se emuliraju preko modula (PS Emu Pro specifikacija), koji mogu biti i HLE i LLE, što daje korisniku mogućnost izbora i eksperimentisanja. Na ovaj način kompatibilnost se uvećava još više.

Najpoznatiji autor plugin modula za Playstation emulatore koji se drže PS Emu Pro standarda, je Pete Bernet. U njegovoj zbirci se nalaze moduli za sve delove sistema: Pete’s Soft - grafički softverski modul(LLE), Pete’s DX, Pete’s OpenGL - grafički HLE moduli, Pete’s sound - modul za zvuk, Pete’s Cd - za CD-Rom, i td. Daleko od toga da je jedini, ali je definitivno među najboljima.

Najveći problem autorima grafičkih modula, je custom GPU playstation-a, pošto ne radi kao PC grafičke kartice. Najviše problema ima kod specijalnih efekata. Najveći od njih je onaj u vezi Frame Bufer efekata (mogućnost snimanja, čuvanja i kasnije upotrebe frejmova animacije, za recimo efekat usporenog kretanja, zamućivanja…). Pošto PC grafičke kartice ostvaruju ove efekte na drugi način, vrlo je teško emulirati Frame Bufer ispravno. Nije problem ostvariti ga, već u brzini. Jednostavna mogućnost Playstation GPU-a je da kopira bilo koji frejm u video memoriju i da ga onda prikaže kao teksturu (npr. prikazivanje menija u zavisnosti od sadržaja na ekranu). PC grafičke ovo ne mogu da urade dovoljno brzo, zbog toga što njihova video memorija nije dizajnirana da bude upotrebljena na ovakav način. Na kraju, programeri pribegavaju raznim trikovima (hakovima) da bi učinili efekat ispravnim. Mada može da uspe, ovi “hakovi” mogu da pokvare više nego što doprinose. Čak i sam Pete Bernet naglašava da je preporučljivo korišćenje njegovog Soft modula u igrama koje imaju puno Frame Bufer efekata. Naravno, ne svodi se sve na Frame Bufer, ovo je samo primer.

Pomak na ovom polju učinio je (opet) Pete Bernet, sa svojim OGL2 modulom. Ovaj modul koristi prednosti PC grafičkog hardvera, ali na način kao njegov soft(LLE) modul. Ovo je HLE modul, ali pristup je takav, da se mnoge procedure obavljaju na originalni način (kao u Soft modu). Posledica ovoga je potreba i za veoma brzom i veoma modernom grafičkom. Slika je, naravno, odlična, a efekti (kao Frame Bufer) se prikazuju bez problema (slika 6.).

Konačno, ePSXe nije zvanično mrtav, ali već nekoliko godina nije dobio novu verziju. To i nije toliko loše s obzirom da stalno izlaze nove verzije modula koji mogu da se koriste u njemu. Najsvežija verzija je 1.6.0.

Nintendo 64
Emulacije ove konzole izazvala je najviše kontroverza, pošto je dotad važilo pravilo da za emulaciju nekog sistema treba bar nekoliko godina da bi hardver bio dovoljno moderan. Ova tvrdnja je opovrgnuta od strane ljudi sa nadimcima Epsilon i RealityMan, koji su uveli HLE na velika vrata. Njihov emulator, UltraHLE, bio je sposoban za tačnu emulaciju velikog broja igara, a uz to i nije bio mnogo zahtevan. Zbog ovoga, Nintendo je počeo da vodi rat protiv emulacije, pokušavajući da je prikaže kao ilegalnu, što na svu sreću nije uspeo. Međutim, ovo nije prošlo bez skupo plaćene cene. Ultra HLE je napušten istog momenta kada je i objavljen. Zbog stalnog pritiska autori su odustali u strahu od sudske tužbe. Trebalo je dobrih nekoliko godina da neko napravi i približno dobar prozvod. Na svu sreću to se i dogodilo.

Project 64 se smatra ubedljivo najboljim emulatorom Nintendo 64 konzole. Nije jedini i nije da nema konkurencije (Mupen64, 1964 i dr. su svi izuzetni emulatori). Ono što je izdiglo ovaj emulator je fenomenalni odnos između brzine i tačnosti. Project 64 koristi sve moguće prednosti koje pruža HLE, i kao i ePSXe, i ovo je modularni emulator (čak je i postavio standard za sve ostale). Glavni emulator (core) može da radi u dva moda: interpreter i recompiler. Prvi je tačniji, a drugi brži. Međutim u zadnjim verzijama, recompiler je toliko uznapredovao da je, uglavnom, bezbedno koristiti ga stalno. Sami autori emulatora su uradili i većinu modula, koji odlično obavljaju posao, ali se mogu i promeniti nekima sa strane. Kao i u slučaju Playstation-a i ovde je najveći problem emulacija GPU-a. Nintendo 64 GPU je daleko sofisticiraniji, i (kao za zlo) ima još gori (za PC) način upotrebe Frame Bufer-a. Pošto LLE rešenja još uvek nema, autori su primorani da eksperimentišu. Trenutna verzija (1.6) radi dobar posao, međutim ni među uključenim, a ni među modulima drugih autora ne postoji modul koji može da prikaže potpune Frame Bufer efekte u svim igrama i pri punoj brzini. Izuzetak je Glide64, ali za njegovo korišćenje potrebna je Voodoo 5 grafička kartica (kompanija je odavno propala, i nalaženje ove kartice je prava umetnost). Postoji napredak na ovom polju, ali moraćemo da čekamo, Project64 1.7beta, prevazilazi ove probleme, ali ne zna se kada će puna verzija biti dostupna javnosti.


Glavni meni Project64 emulatora, izbor igara i podešavanja


Project64 u akciji - Zelda: Ocarina Of Time


Project64 (ponovo) u akciji - Super Mario 64

Za razliku od Playstation-a, koji kao medijume koristi najobičnije optičke diskove, čitljive na PC-u, Nintendo je jedina konzola novije generacije koja je kao medijum koristila kertrirdže. Kertrirdži su u prošlosti korišćeni kod skoro svakog sistema, zbog brojnih prednosti (izdržljivost, velika brzina čitanja). Međutim, pojavom optičkih medijuma, većina proizvođača je prešla na njih, zbog većeg kapaciteta i isplativosti. Kertirdži za Nintendo 64 su (kao i kod svih starijih konzola) zapravo obični ROM (Read Only Memory) čipovi. Da, pružaju izuzetne brzine čitanja podataka, ali su i vrlo skupi. Nintendo je zbog brzine ostao pri ovom rešenju (kompanija nije bila zadovoljna tadašnjim brzinama optičkih medija), što se kasnije pokazalo kao greška (igre su morale da budu veoma skupe, zbog cene samog medijuma, a i nije bilo dovoljno prostora za sve za šta je konzola bila sposobna). Zbog ovoga se tvrdi da Nintendo 64 nikada nije ostvario svoj hardverski potencijal.

Ali nije sada reč o tome, već o samoj prirodi ROM-ova. U emulaciji, ROM označava identičnu kopiju originalne memorije koja se nalazila na čipovima u kertrirdžu. Početni problem je u čitljivosti, PC jednostavno ne može direktno da pročita sadržaj originalnog kertrirdža. Moguće je uz pomoć raznih modifkicaja napraviti specijalnu periferiju koja može poslužiti kao čitač. Ali pošto nemaju svi znanja i/ili mogućnosti za ovako nešto, pribeglo se internetu. Grupe ljudi sa određenim znanjem su iskopirale sadržaj kertrirdža i učinile ga javno dostupnim. Ovakvi ROM-ovi se mogu učitati u emulator i on će ih prepoznati i pokrenuti softver sa njih. Postoji pitanje legalnosti ovoga, pošto na ovaj način može da se dođe do besplatnog softvera, pa se nameće da je legalno skinuti samo onaj ROM čiji fizički primerak imamo.

Super Nintendo Entertainment System (SNES)
Ovo je prethodnik Nintendo 64 konzole, a naslednik NES-a (vidi sledeći opis). SNES se smatra najsofisticiranijom 16-bitnom konzolom (N64 je 64-bitan, Playstation je 32-bitan). Jedini konkurent bila je Sega sa svojim Mega Drive-om (o tome kasnije). SNES nije posedovao brz procesor (u odnosu na konkurenciiju - Mega Drive), ali je zato imao razvijen grafički procesor. GPU je takođe bio sporiji od konkurentnog proizvoda (zbog cene) ali mnogo moderniji. Ono što je proguralo konzolu bila je sposobost GPU-a za hardversko skaliranje i rotiranje sprajtova, kao i mnogo veća paleta boja (256). Ovo, doduše nije došlo bez cene, SNES jednostavno nije bio sposoban da istera igre bržeg tempa (zbog velike količine proračuna, i previše sprajtova za radnu memoriju). Znajući ovo, programeri su uglavnom radili žanrove koji ne zahtevaju brzo izvođenje (RPG Igre, logičke, sporije platforme…). Kasnije je Nintendo zaobišao ovaj problem tako što je u kertrirdže ugrađivao specijalne čipove, koji su konzoli davali još snage (ekstra procesori, grafičke ekstenzije i dr.). Ovo je otežalo emulaciju ovih igara, pošto je ovakav hardver vrlo specifičan i slabo dokumentovan.

SNES emulacija ima jake korene i tokom godina objavljen je veliki broj odličnih SNES emulatora. Jedan program ih je sve nadmašio, a bio je prvi od samog početka.

ZSNES je vodeći SNES emulator u svakom aspektu, kodiran od strane autora: zsKnight, PageFault, _Demo_(takođe i ePSXe autor) i Nach. Emulator potiče još iz dana operativnog sistema MS-DOS. ZSNES se vodi kao šampion brzine, (radi na Pentium 166 Mhz računaru, provereno). Sve to ga ne sprečava da istovremeno bude i jako tačan. ZSNES je pravi primer emulatora, pisan je delom u C/C++, a dobrim delom u mašinskom jeziku, što i objašnjava njegovu brzinu. Ovo je jedan od najkompleksnijih emulatora današnjice i ima najmanje internih trikova (hakova) nego bilo koji drugi emulator, bilo kog sistema. ZSNES je još uvek aktivan, i nove verzije izlaze manje ili više redovono. Poslednja verzija (1.51) je izašla početkom 2007. godine.

ZSNES Uspešno emulira većinu dodatnog hardvera, uključujući i većinu specijalnih čipova. U poslednje vreme, autori su postigli skoro savršenu emulaciju glavne konzole, i usmeravaju svoj rad na ostatak specijalnih čipova. Bez obzira na naprednost, ZSNES još uvek izlazi i u verziji za MS-DOS.
Kao i u slučaju emulatora za Nintendo 64 i ovde se igre nalaze u obliku ROM slika originalnih kertrirdža. Ne treba se zbunjivati u slučaju igara sa specijalnim čipovima, samo podaci se koriste, a emulacija ovih čipova treba da bude obezbeđena od strane emulatora. Postojeće ROM-ove je potrebno učitati u sam emulator, i on će ih pokrenuti kao pravi sistem.

ZSNES je besplatan emulator otvorenog koda, što znači da je za njegov kvalitet odgovorno mnogo više ljudi od samih autora. Svako sa dovoljno znanja može doprineti razvoju emulatora.


Glavni meni ZSNES-a



Killer Instinct i Donkey Kong Country na ZSNES-u

Nintendo Entertainment System (NES)
Nes, ili Famicom, kako ga nazivaju u Japanu, bio je prethodnik SNES-a. Zahvaljujući ovoj konzoli Nintendo je stekao slavu koju ima danas.

Dakle, sredinom osamdesetih, tržište elektronske zabave je postalo veoma zasićeno. Kompanije kao Atari su vladale tržištem, alu nisu nudile ništa revolucionarno novo već dugo vremena. Nintendo je uvideo priliku i napravio svoju 8-bitnu konzolu, sa kojom je, zahvaljujući velikoj ponudi dobrog softvera, vrlo brzo preplavio tržište. Koliko je NES bio jak na tržištu govori činjenica da je najveći konkurent, u vidu Sega Master System konzole bio potpuno inferioran u poređenju sa NES-om. U prilog tome ide činjenica da je NES zapravo dosta hardverski slabiji od Master System konzole. Emulacija NES-a je počela odavno, i prvi emulator koji je uspešno emulirao NES izazvao je dosta pažnje. To je zato što je Nesticle, kako se emulator zvao, bio jedan od prvih emulatora uopšte, koji je omogućavao potpuno i nesmetano igranje naslova za NES. Do tada, emulatori su uglavnom važili za nestabilne i problematične programe, čija je funkcionalnost bila pod znakom pitanja. Ovo je, nažalost, bio mač sa dve oštrice. Autor emulatora (nadimak na internetu - Sardu) je bio prepravljen glupim i besmislenim zahtevima: zahtevanje ROM-ova, zamerke za igre, zahtevi da nešto bude emulirano i dr. Sve to od strane ljudi koji su emulaciju uzeli zdravo za gotovo, skinuli progam i mislili da je bogom dan. Zbog ovoga, autor je napustio svoje delo, da bi se tek (mnogo) kasnije vratio na emulacionu scenu.

Nesticle je bio pionirski i veoma uspešan projekat. Bio je sposoban da u potpunoj brzini emulira NES sistem. Nesticle je MS-DOS emulator, i za njegovo pokretanje nije potreban jak sistem. Po autoru, može solidno da radi i na 486 računarima (ja sam ga testirao na Pentium 166 Mhz mašini, i radio je bez problema). Sam emulator je postavio standarde, šta jedan dobar emulator treba da poseduje. I mada je danas prevaziđen po pitanju dodatnih mogućnosti, kvalitetu slike i zvuka, treba znati da je baš ovaj emulator utabao stazu budućim generacijama.

Modernih NES emulatora ima veoma mnogo, i dobar deo se odlikuje velikim kvalitetom. Među najpoznatijima su NNNester (koji je portovan na mnogo različitih sistema, u različitim verzijama), VirtuaNES, FCEUltra (jedan od najkompatibilnijih i po meni emulator izbora), RocknesX (postoji u mnogo verzija za različite sisteme), Nestopia (najprecizniji, to jest najtačniji NES emulator, takođe emulator izbora) i mnogi drugi.

FCEUltra deli mnoge napredne funkcije sa gore navedenim emulatorima. Poseduje mogućnosti za emuliranje maltene svih NES periferija (a ima ih mnogo), za različite verzije NES-a, za razne druge ekstra opcije koje nema baš svaki emulator…


Glavni ekran emulatora FCEUltra.

Kao i sve ostale konzole zasnovane na kertrirdžima i u ovom slučaju je potrebno imati originalni ROM igre koju želimo da pokrenemo. Na svu sreću, u ovom slučaju nema specijalnog hardvera u samim kertrirdžima, pa je emulacija olakšana.



Rađanje legendi, Super Mario Bros i Legend Of Zelda

Arkadni aparati
Ovo je veoma širok pojam, pošto se arkadni aparati ubrajaju među najstarije igračke sisteme, a novi se proizvode i danas. To je mnogo različitog hardvera različitih proizvođača, pa se svaki različiti arkadni sistem može tretirati kao zasebna konzola. Postoji puno emulatora za razne arkadne sisteme. Na primer imamo emulatore Nebula i Kawaks za cps1, cps2 sisteme (kompanije CAPCOM) i NeoGeo sistem (kompanije SNK). Specijalizacija za ove sisteme je iz prostog razloga zato što spadaju u najrasprostranjenije arkadne sisteme. Onda, imamo NebulaM2 emulator za Sega Model 1 i Model 2 sisteme, pa Modeler za Sega System 32, itd. Ali postoji još mnogo sistema koji nisu bili toliko rasprostranjeni, ili su previše unikatni. Arkadni emulator koji je sve zasenio naziva se MAME.

MAME (Multiple Arcade System Emulator) predstavlja trud mnogo ljudi širom sveta da emulacija arkadnih automata bude kompletna. Pored, gore pomenutih, najpopularnijih sistema, ovaj emulator emulira skoro svaku arkadnu igru napravljenu u poslednjih 20-30 godina (tim autora konstantno teži savršenstvu). MAME je emulator otvorenog koda (open source), baš kao i ZSNES, i predstavlja jedan od najvećih fenomena emulacije do danas. Još od momenta kada je ispušten u javnost izaziva veliko interesovanje.

Na ovom emulatoru konstantno radi mala armija programera, a novi se stalno priključuju projektu. Emulator je živ kao i nekad, i dobija osveženja na dnevnom nivou. S obzirom da se razni arkadni sistemi stalno izbacuju na tržište, posao ovog emulatora nikad neće biti konačan (što nije loša stvar). U stanju u kakvom je sada, MAME emulira skoro sve rasterske igre (2D) perfektno, ili sa zanemarljvim problemima. Postoji naravno broj igara sa problemima, ali kao što je napomenuto, program stalno dobija poboljšanja u vidu novih verzija. MAME se ne zaustavlja tu, već polako počinje da emulira i arkadne sisteme novije generacije. Sve više i više 3D naslova počinje da radi, ili da pokazuje znake napretka. Svako ko smatra da može da doprinese može da pomogne u razvoju ovog emulatora. Trenutno ima oko 100 ljudi u timu (koji aktivno rade), uz mnogo pomagača sa strane.

MAME je pravi primer svrhe emulacije - arhiviranje. Koliko je zbog ovakvog razvoja MAME uznapredovao, kaže i činjenica da se ROM baza meri desetinama gigabajta. Podržano je na hiljade naslova (u momentu pisanja teksta bilo je podržano oko 6000 naslova) i taj broj stalno raste. Emulator dobija novu verziju ponekad i svaki dan, u ovom minutu to je 1.115.
Opis i prikaz šta sve MAME može, zahteva pisanje doktorata.

SEGA
Najbolje je sačuvano za kraj. Ne, Sega nije konzola. Sega (Service Games) je poznati proizvođač konzola (bivši) i igara. Razlog ovakvog pisanja je obuhvatanje svih Seginih legendarnih sistema u jednom emulatoru.

Sega je započela svoju karijeru kao mala firma, koja se bavila prodajom mehaničkih zabavnih uređaja (fliperi), da bi kasnije počela da pravi igre za arkadne aparate. Ovo im je donelo veliki ugled, kao firma koja zna da zadovolji mušterije. Ohrabreni uspehom sa arkadnim sistemima, ljudi iz kompanije odlučuju da izbace sopstveni sistem na tržište. Prvo su izbacili sistem SG-1000 a malo kasnije i SC-3000, koji su predstavljali solidne sisteme, ali nisu prošli zapaženo. Onda, 1986, Sega izbacuje na tržište svoju prvu pravu konzolu - Sega Master System, ili skraćeno - SMS. SMS je bila vrlo kvalitetna 8-bitna konzola, koja je uprkos boljem hardveru u odnosu na konkureniju (NES), ipak bila pregažena. Izuzetak je evropsko tržište (pogotovu Britanija) koje se tradicionalno smatra Seginim uporištem. Razlog ovome je dosta slabija ponuda softvera, pošto je NES bio na tržištu već neko vreme. Sa ovim na umu Sega kreće u razvoj novog sistema sa kojim bi pretekla konkurenciju. U toku 1988. godine izlazi prvi 16-bitni sistem - Sega Mega Drive, koji tokom 1989. stiže u Ameriku, a tokom 1990. i u Evropu. Bez obzira na nesumnjivu snagu, sistem vodi tešku borbu protiv već zastarelog NES-a. Nova konzola je dovoljna jaka da bi na nju mogli da se portuju najveći arkadni hitovi kompanije, što donekle popravlja stvari. Ali pravi preokret dolazi 1991. godine, objavljivanjem prvog dela igre Sonic The Hedgehog koja osvaja svet preko noći. Mega Drive (Genesis u Americi) postaje najprodavanija konzola u Americi i Evropi i tako ostaje sve do sredine devedesetih (kada SNES konačno preuzima primat). Ovim Sega stiče visoki status među proizvođačima konzola, koji na žalost nije zadržala. Naime, Sega je napravila nekoliko loših poteza sa svojom modernom konzolom (32-bitni Saturn), koja je bila potučena od strane Playstation-a. Zbog ovoga firma nije mogla da se izvuče iz dugova ni uz pomoć Dreamcast konzole, jedne od najboljih konzola novije generacije. Sega se povukla iz posla proizvodnje konzola, ali i dalje pravi igre za druge sisteme. Sega je jedini veliki proizvođač koji je otvoreno i javno prihvatio emulaciju (i čak je iskoristio).

Zanimljive činjenice oko njihove najpoznatije konzole tiču se upotrebe hardverske emulacije. Naime, Mega Drive je bio sposoban da pokreće softver svoga prethodinka (SMS). Postojao je specijalni adapter za kertrirdže koji zapravo nije sardržao specijalan hardver, već samo mali BIOS i nekoliko instrukcija (zvani VDP Mode 4) koji bi po aktivaciji podesili sistem. Mega Drive bi skinuo BIOS, dobio SMS boot kod i ponašao bi se skoro identično kao pravi SMS. Ovo je jedan od prvih firmware emulatora.

Ali to nije sve, postoji još jedan emulator, doduše nikad pušten u javnost. Čuveni programer Yuji Naka (otac Sonika) je tokom 1991. godine radio na NES emulatoru za Mega Drive. Bio je to slobodan projekat i kako je on sam izjavio, nije bio nešto posebno. Program je bio u stanju da pokrene nekoliko igara (među njima i čuveni Super Mario Bros), ali to mu je pružilo veliko zadovoljstvo da vidi konkurentni proizvod kako radi na Mega Drive-u. Ovo ostvarenje se smatra prvim pravim emulatorom, potpuno softverskim, bez ikakvog potrebnog dodatnog hardvera.

Tokom godina Sega je izdala razne dodatke za Mega Drive. Najpoznatija su proširenja konzole: Mega CD i Mega 32x (Sega CD i Sega 32x u Americi)

Mega CD je dodatak za originalnu konzolu koji je pored CD dodatka, za čitanje igara i drugih formata na, tada novim, CD medijumima, sadržao u sebi i hardversko pojačanje. Imao je još jedan procesor, iste vrste kao u originalnoj konzoli (ali brži) koji je omogućio bolji softver. Takođe, dodatak je doneo i grafička poboljšanja u vidu hardverskog skaliranja i rotiranja, i povećanje palete boja (sa 64 na 128). Šteta je što većina Mega CD naslova nikad nije iskoristila ove mogućnosti do kraja.

Mega 32x je dodatak koji se sastojao od dva izuzetno (za to vreme) brza procesora, i novog grafičkog čipa (hardversko skaliranje i rotiranje, 15-bitna paleta boja). Nažalost sistem nikad nije iskorišćen do kraja, zbog brze propasti.

Zbog ovoliko varijacija Mega Drive je zanimljiv za emulaciju. Sam Mega Drive je već dosta dugo emuliran, ali su dodaci, u vidu Mega CD i Mega 32x, kvalitetno emulirani tek od nedavno.

Najpoznatiji i jedan od pionira Mega Drive emulatora je Kgen, napisan od strane legende video igara Steve Snake-a. Steve je programer odgovoran za Seginu hit igru NBA Jam, i poznaje hardver bolje nego iko, tako da ne čudi što je Kgen od samog starta važio za jednog od najtačnijih emulatora. Tokom 1998. izašla je finalna verzija Kgen-a i izgledalo je kao da će Steve Snake nestati sa scene. Zanimljiva stvar je Segina reakcija na ovaj emulator. Za razliku od kompanija Nintendo i Sony, Sega je otvoreno prihvatila emulaciju. Čak je i otkupila pravo upotrebe Kgen emulatora, da bi izdala kompilaciju svojih hitova. Sega Smash Pack je bio uspešan naslov za PC i Dreamcast, koji se sastojao iz nekoliko Seginih hitova, a srce kompilacije činio je blago modifikovani Kgen emulator.

Kako je vreme prolazilo Kgen je ipak postajao prevaziđen, pojavljivali su se novi emulatori. Najistaknutiji - Kega i Gens. Kgen nije mrtav, samo je promenio ime. Iza emulatora Kega, ne stoji niko drugi do Steve Snake. Ovog puta to je Windows emulator, sa dobrom podrškom, ali mu je ipak falilo nešto. Nešto što je Gens vremenom dobio - podršku za Mega CD i Mega 32x. Mada nekompletna, ovo je ipak jedan od najboljih MegaCD/32x emulatora današnjice. Gens nije zvanično napušten, ali već više godina nije objavljena nova verzija. Priči još uvek nije kraj. Steve Snake uzvraća udarac, objavljuje dosad najbolji Sega emulator.

Fusion je Sega SG1000/SC3000/Master System/Mega Drive/Mega CD/Mega 32 emulator, sve u jednom, napisan od strane Steve Snake-a. Fusion predstavlja najnapredniji i najkompletniji emulator Seginih sistema dosad (ako izuzmemo Saturn i Dramcast, ali to su ipak sistemi nove generacije). Ne treba zaboraviti i na Game Gear podršku (smanjeni, džepni Master System). Ovo jeste nov emulator, ali je i dugo u razvoju, ako uzmemo u obzir autora. Najbolja stvar je to što je aktivan, i bez obzira što možda nije sve savršeno (SMS podrška zahteva malo rada), na tome se radi.

Naravno, kao i svi drugi sistemi sa kertrirdžima i ovde je potreban ROM igre koju želimo da pokrenemo. Dobra stvar je što Sega nije pribegavala dodatnom hardveru u kertrirdžima, kao Nintendo, već je izdavala samostalne dodatke. Postoji jedan poznat izuzetak, a to je Virtua Racing, koji je u sebi sadržao sh-1 procesor (prethodnik procesora nađenog u Sega 32x sistemu), i koji nije emuliran. Verovatno i neće biti, iz prostog razloga što postoji verzija za Sega 32x, koji je već emuliran.

Još jedan izuzetak je Sonic & Knuckles, koji se vodi kao prvi expansion pack u istoriji igara (dodatak za Sonic The Hedgehog 3). U ovom slučaju bilo je potrebno povezati dva kertrirdža (prvi je na vrhu imao adapter za drugi). Ovo je rešeno pravljenjem ROM-a od ovako povezanih kertrirdža.


Fusion - Glavni ekran, sa primetno mnogo mogućnosti.


Jedna od prvih RPG igara za SMS, Phantasy Star.


Sonic 3 & Knuckles, jedan od najboljih delova serijala.


Vectorman, jedna od najlepših igara za Mega Drive.


Emulacija Mega CD konzole - Sonic The Hedgehog CD.


Virtua Fighter i Virtua Racing - Sistem Mega 32x je bio sposoban za poligonalnu grafiku (3D).

Sve gornje slike potiču iz emulatora Fusion.


4.6. Emulator vs The Real Thing
I na kraju, zašto emulacija? Pored očigledne mogućnosti uštede u kupovini različitog harvera, izvorna svrha emulacije je arhiviranje i očuvanje sistema čije je vreme prošlo. Teško je danas naći stare sisteme u dobrom stanju, a i ako se nađu, njihovi vlasnici ne žele da se rastanu sa njima.

Već znamo da emulatori mogu da poboljšaju originalni sistem, u skoro svakom aspektu. Ali priča se tu ne završava.

Pored ovoga emulatori imaju još neke specijalne mogućnosti, kao što je snimanje pozicije bilo gde i bilo kada (snimanjem celog sadržaja memorije emuliranog sistema u datom trenutku), mogućnost podešavanja brzine, mogućnost varanja (preko samog emulatora, ili preko emuliranih originalnih dodataka), snimanja slika iz igara, pa čak i snimanje filmova.

U naprednije mogućnosti spada menjanje sadržaja igara, u šta spadaju razne grafičke modifikacije, hakovi, a kao najpoznatiji primer, tu je mogućnost prevođenja igara. Dakle, moguće je prevesti igru, koja je bila dostupna samo npr. Japanskom tržištu (uz znanje dotičnog jezika naravno). Zahvaljujući grupama ljudi koji rade prevode, imamo veliki broj nezvaničnih prevoda, a sve zahvaljujući emulaciji.
Postoji još mnogo ovakvih primera, pojedini su ekskluzivni za određene emulatore.

5. Zakjučak
Emulacija ima veliki značaj u kompjuterskoj industriji, razvoju novih sistema, zabavi… Bilo da omogućava rešavanje problema u razvijanju novih sistema, ili jednostavno oživljava nostalgiju za starim sistemima koji više nisu u upotrebi, emulacija je stvorila veliku komunu i mnogi programeri su se baš preko nje dokazali. Kroz emulaciju se može naučiti mnogo o softveru i hardveru i kao što sam napomenuo, programeri emulatora su jedni od najboljih u poslu. Emulacija je dobar sport za buduće programere.


Literatura
1. Sam Pettus "Digital Chameleon, the rise of computer emulation" Zophar’s Domain,
www.zophar.net 1999.
2. Sam Pettus "Emulation: Right or wrong, The EmuFAQ" Zophar’s Domain,
www.zophar.net 1999.
3. "Wikipedia’s aricle on emulation"
www.wikipedia.org 2006
4. Sam Pettus "The history of emulation" Zophar’s Domain,
www.zophar.net 1999.
5. Andrew Wolan "Console Emulation & Its Impact" Emulation Zone,
www.emulationzone.org 1999.

Originalni textovi

Opisi 

Autorski textovi (Editoriali) 

ScreenFun

Interactive stuff

Site Search (powered by Google) 

Emulation Galaxy site sekcije

EmuGlx stuff 

Arhiva vesti 

Links (prijatelji i sl. )


www.digitalnisvettv.com
Va vodič kroz domaće IT trite


http://madfox.on.neobee.net
Prevodi igara na srpski by Mad Fox


www.anime-overdose.com
Anime titlovi na srpskom

www.bg-anime.com
Domaći anime forum/zajednica

www.trablmejker.com
Underground Online!

http://gw-adria.co.cc
Domaci Guild Wars portal
www.iss-world.net
Domaći fan sajt posvećen ISS/WE/PES
www.catacomb.co.yu
Igraonica Catacomb (Novi Sad)
www.gs.rs
Gamers Space
PC i konzole - Vesti, trejleri!

5712110 
All your rights are belong to us.
Emulation Galaxy®™ 1999 - 2008