Strojna oprema
Telefoni
Računalništvo, telefonija
Namizni računalniki
Telefonija
Programska in razvojna orodja
Programska oprema
Testi in triki
14.08.2026 11:25
Avtor: Peter Čebron

Deli z drugimi:

Share
Sledite nam na Google News

Kako delujejo emulatorji za PlayStation, Xbox, Windows …?

Kaj je emulator? Program, ki »prevede« eno napravo v drugo, kot bi nekdo pretvoril datoteko iz .docx v .pdf? Če bi bilo tako enostavno, bi ob izidu vsake konzole še isti dan dobili tudi emulator, ampak temu ni tako. Čakamo ga več let ali pa ga sploh ne dočakamo. Gre za enega najbolj zahtevnih podvigov v programiranju sploh.

Emulator ni preprost pretvornik, temveč programska različica cele naprave. Procesorja, grafične kartice, pomnilnika, zvočnega čipa in operacijskega sistema, ki mora vse skupaj delovati usklajeno, v realnem času in dovolj natančno, da igra ali program sploh ne opazi razlike.

Kje se razvoj začne? Od kje razvijalcem ideja za razvoj?

Razvijalci emulatorja skoraj nikoli nimajo dostopa do uradne tehnične dokumentacije proizvajalca konzole. Sony, Microsoft ali Nintendo svojih notranjih specifikacij ne delijo. Nasprotno, te informacije varujejo kot poslovno skrivnost. Zato se vsak projekt začne z nečim, kar se v industriji imenuje »reverse engineering« oziroma obratni inženiring. To pomeni, da razvijalci vzamejo pravo strojno opremo, jo razstavijo, analizirajo elektronska vezja, prestrežejo signale med čipi in iz strojne kode firmwarea (torej programske opreme, vgrajene neposredno v napravo) postopoma sestavljajo sliko o tem, kaj procesor dejansko počne z vsakim ukazom.

Pri tem se pogosto uporablja pristop »clean room« oziroma razvoj v čistem prostoru. Ena skupina razčleni in dokumentira, kako naprava deluje, druga skupina pa na podlagi te dokumentacije, ne da bi kdaj videla izvirno kodo proizvajalca, napiše nov program, ki posnema enako vedenje. Ta ločitev ni le tehnična formalnost, temveč pravna zaščita, saj emulacija sama po sebi ni nezakonita, kopiranje zaščitene kode proizvajalca pa je. Poleg tega razvijalci potrebujejo originalni BIOS ali firmware konzole, torej osnovni zagonski program, ki nadzoruje strojno opremo. Tega si morajo uporabniki praviloma pridobiti sami, pogosto neposredno iz lastne konzole, saj ga zakonito ni dovoljeno distribuirati skupaj z emulatorjem.

Kaj vse mora razvijalec obvladati?

Če ste kdaj ali boste brali dnevnike razvijalcev emulatorjev, kot sta na primer RPCS3 za PlayStation 3 ali Eden za Nintendo Switch, boste hitro ugotovili, da za takšnim razvojem mora stati večja ekipa in ne samo en posameznik. Obvladati moraš široko paleto znanja.

Potrebno je razumevanje arhitekture procesorja, ali gre za PowerPC (procesor za Xbox 360), ARM, MIPS ali x86, vključno z vsemi njegovimi ukazi, registri in posebnostmi časovnega usklajevanja. Poleg tega je treba obvladati delovanje grafičnega procesorja in prevesti njegove ukaze v sodobne grafične vmesnike, kot sta Vulkan ali DirectX. Zraven spada še emulacija zvočnega čipa, krmilnikov, pomnilniške hierarhije in operacijskega sistema konzole, ki upravlja z datotekami, nitmi in pravicami dostopa.

Največji tehnični zalogaj je pogosto dinamična rekompilacija, imenovana tudi JIT (angl. just-in-time) prevajanje. Namesto da bi emulator vsak ukaz izvirne konzole tolmačil enega za drugim, kar bi bilo prepočasi, ukaze v realnem času prevede v strojno kodo gostiteljskega procesorja in jih tako izvaja skoraj z izvorno hitrostjo. To zahteva izjemno natančno poznavanje obeh arhitektur hkrati, poleg tega pa mora rezultat ostati bit za bitom enak izvirniku, sicer igra zamrzne, se sesuje ali prikaže napačno grafiko.

Zakaj razvoj traja leta, včasih desetletje?

Odgovor je v veliki meri skrit v enem samem primeru – PlayStation 3. Njen procesor Cell, ki so ga skupaj razvili Sony, Toshiba in IBM, ni bil običajen večjedrni procesor, temveč ena glavna procesna enota (PPU) v kombinaciji z osmimi posebnimi pomožnimi enotami SPU, od katerih je imela vsaka svoj majhen lokalni pomnilnik in ni imela neposrednega dostopa do glavnega sistemskega pomnilnika. Programerji igre so morali delo ročno razdeliti med te enote, saj noben prevajalnik tega ni počel samodejno, kar pomeni, da emulator ne more preprosto prevajati kode, kot bi jo za bolj konvencionalen procesor.

Razumeti mora dejanski namen izjemno specifične, ročno optimizirane kode. Razvijalci RPCS3 so morali narediti tako, da procesor, ki je lomil skoraj vse predpostavke arhitekture x86 o pomnilniku, usklajenosti podatkov in nitih, prisilili, da njegovi programi tečejo na strojni opremi, ki si s Cellom deli le malo skupnih lastnosti. Prvi javno dostopen prototip emulatorja se je pojavil leta 2011, a še danes, več kot desetletje pozneje, ekipa občasno objavi preboj v optimizaciji, ki šele zdaj bistveno pospeši dele iger, ki se prej niso zagnale ali pa so imele hude težave.

Podoben, čeprav nekoliko drugačen izziv predstavlja Xbox 360. Razvoj emulatorja Xenia se je začel leta 2013, prvo komercialno igro pa je uspel zagnati razmeroma hitro, vendar so se razvijalci do leta 2018 zataknili pri natančni emulaciji grafičnega procesorja Xenos, kar je terjalo skoraj tri leta popolnega prepisa grafičnega dela kode, preden se je zmogljivost bistveno izboljšala. Vzrok za tako dolge razvojne cikle ni lenoba ali pomanjkanje sposobnosti, temveč dejstvo, da mora emulator razumeti tisoče robnih primerov, posebnih ukazov, hroščev v izvirni strojni opremi, ki so jih razvijalci iger nevede ali namerno izkoriščali, in časovnih posebnosti, ki jih nobena dokumentacija ne opisuje, ker uradne dokumentacije preprosto ni.

Dodaten dejavnik je pravni pritisk. Nintendo je še posebej znan, da zelo rad vihti sodniško kladivo. Februarja 2024 je vložil tožbo proti razvijalcem priljubljenega emulatorja Yuzu, ker naj bi ta nezakonito zaobšel šifrirno zaščito konzole Switch, kar je razvidno tudi iz dejstva, da so tik pred izidom igre Zelda: Tears of the Kingdom zabeležili milijon prenosov še pred uradnim izidom.

Podjetje Tropic Haze, ki je stalo za Yuzujem, je pristalo na poravnavo v vrednosti 2,4 milijona dolarjev in emulator popolnoma ukinilo, kmalu zatem pa je Nintendo z osebnim kontaktom prepričal tudi glavnega razvijalca konkurenčnega projekta Ryujinx, naj ustavi razvoj, odstrani organizacijo in vsa povezana sredstva. Takšni primeri jasno kažejo, zakaj se veliko nadarjenih razvijalcev raje drži bolj »varnih« starejših konzol, novejši projekti pa pogosto ostajajo anonimni ali razpršeni med več vzporednih odcepljenih različic (angl. forks) istega izvornega projekta.

Zakaj so nekatere konzole trši oreh kot druge?

Splošno pravilo je, da je konzolo lažje emulirati, čim bolj njena notranja arhitektura spominja na standardni osebni računalnik. PlayStation 1 in 2 uporabljata razmeroma konvencionalne procesorje, zato sta bila emulirana relativno zgodaj in danes delujeta brez težav tudi na skromnejši strojni opremi. Ko pa proizvajalci vgradijo lastne, nestandardne rešitve, kot je Cell pri PS3, se zahtevnost eksponentno poveča. Podobno velja za Nintendo Switch, ki temelji na prilagojenem čipu Tegra podjetja Nvidia in ima svoje posebnosti pri upravljanju pomnilnika in grafike.

Pri najnovejši generaciji, torej PlayStation 5 in Xbox Series X/S, je situacija še bolj zapletena, saj gre za sisteme, ki so po arhitekturi bližje sodobnim računalnikom (procesorji AMD Zen in grafika RDNA), a hkrati zaščiteni z veliko naprednejšimi varnostnimi mehanizmi, kot so bili na voljo prejšnjim generacijam. Trenutno praktično ne obstaja delujoč emulator za katero koli od teh dveh konzol, saj razvijalci še vedno lomijo osnovne varnostne plasti, kar je precej drugačen in počasnejši izziv od klasične emulacije strojne opreme.

Emulacija na telefonu in računalniku, obstajajo razlike?

Emulacija na mobilnih napravah ima dodatno oviro, ki je uporabniki pogosto ne vidijo. Gre za razliko med procesorsko arhitekturo ARM, ki poganja skoraj vse telefone, in x86, ki je standard na osebnih računalnikih. Ko torej na telefonu poganjaš emulator konzole, ki temelji na x86 ali na PowerPC procesorju, mora program hkrati prevajati ukaze iz izvirne arhitekture v ARM, kar je dodaten sloj računskega dela, ki na računalniku, kjer je gostiteljski procesor pogosto že x86, ni potreben.

Poleg tega je Apple do pred kratkim emulatorje na iPhonih praktično prepovedoval. Apple je šele aprila 2024 v svojih smernicah App Store prvič izrecno dovolil retro emulatorje igralnih konzol, ki lahko zdaj tudi ponujajo prenos iger, pred tem pa je bila edina pot do emulacije na iPhonu bodisi jailbreak bodisi kompliciran obvod prek spletnih aplikacij.

Tudi po tej spremembi ostajajo omejitve. iOS namreč iz varnostnih razlogov strogo omejuje t. i.  JIT-prevajanje, torej dinamično generiranje strojne kode med izvajanjem programa, kar je za zahtevnejše emulatorje glavna tehnika za doseganje sprejemljive hitrosti. Zato marsikateri emulator na iPhonu deluje bistveno počasneje kot enak projekt na Androidu, kjer takšnih omejitev v veliki meri ni in kjer imajo razvijalci že vrsto let bolj odprt dostop do sistemskih virov.

Ali obstaja Windows emulator? Winlator, GameHub, GameNative …

Če berete moje teste telefonov, ste opazili, da večkrat vključim tudi teste različnih Windows iger, poleg Android in Nintendo Switch. V tem primeru izraz »emulator« ni tehnično najbolj natančen. Gre bolj za sklop kompatibilnostnih plastih, zloženih ena na drugo.

Winlator je brezplačna, odprtokodna aplikacija razvijalca z vzdevkom BrunoSX (brunodev85), ki na ARM-osnovanih Android napravah poganja Windows (x86_64) aplikacije in igre neposredno, brez BIOS-a, brez zagona prave kopije Windows in brez slike diska. Namesto tega Winlator združi dve ločeni tehnologiji, ki vsaka rešujeta svoj del problema. Prva je Wine, dobro znan projekt, ki že desetletja prevaja klice Windows API-ja (ukaze za odpiranje datotek, dostop do registra, izris grafike prek Direct3D ali predvajanje zvoka) v ukaze, ki jih razume Linuxovo jedro, na katerem v ozadju teče Android.

Druga tehnologija je Box86 oziroma Box64, ki opravi še bolj temeljno nalogo. V realnem času prevaja same procesorske ukaze iz arhitekture x86 v arhitekturo ARM, saj noben telefon fizično ne premore x86 procesorja. Na to je treba dodati še plast za grafiko. Winlator uporablja Mesin gonilnik Turnip za Adreno grafične procesorje ter orodji DXVK in VKD3D, ki DirectX klice prevedeta v Vulkan, podobno kot to na Linuxu počne Proton.

Uporabnik si znotraj aplikacije ustvari t. i. vsebnik (container), nekakšno izolirano navidezno okolje, v katerem nastavlja ločljivost, navidezno količino VRAM-a, število procesorskih jeder in gonilnike, ločeno za vsako igro ali program posebej.

Ker gre torej za dve zaporedni prevajanji (najprej API klicev, nato še procesorskih ukazov) je obremenitev strojne opreme telefona precej večja kot pri klasični emulaciji konzole. To je tudi razlog, da Winlator razmeroma dobro poganja starejše ali manj zahtevne igre, pri sodobnih AAA igrah z zahtevnimi grafičnimi motorji, kot je Unreal Engine, pa se pogosto pojavljajo zamiki pri sestavljanju senčilnikov (angl. shader compilation stutter) in občutno segrevanje naprave. Doslej se je toploti najbolje zoperstavil RedMagic 11S Pro, ki pa je za to moral uporabiti ventilator in vodno hlajenje.

Sta GameHub in GameNative drugačna?

Ko je Winlator postal dovolj priljubljen, so se okoli njega začeli pojavljati tekmeci, ki uporabljajo v osnovi enak tehnološki recept (Wine, Box64, Vulkan), a se razlikujejo po tem, kako prijazno je vse skupaj zapakirano.

GameNative se je razvil iz projekta Pluvia, neuradnega Steam odjemalca, ki je prek Winlatorja omogočal prijavo v Steam račun in neposreden zagon iger iz lastne knjižnice, ne da bi uporabnik ročno iskal namestitvene datoteke po spletu. GameNative je nastal kot odcepitev projekta Pluvia in se danes razvija hitreje ter aktivneje od izvirnega projekta.

GameHub ima nekoliko drugačno poreklo. Aplikacijo, prej znano pod imenom GameFusion, izdeluje kitajski proizvajalec gaming kontrolerjev Gamesir, njena prednost pa je predvsem v priročnosti. Podpira prijavo v Steam, kar uradni Winlator privzeto ne omogoča, poleg tega pa podpira vibracije v krmilnikih. Ker gre za produkt kitajskega proizvajalca strojne opreme, se je v skupnosti pojavilo vprašanje zasebnosti, zato je nastala različica GameHub Lite brez vgrajenega sledenja.

Ali je bolje posnemati rezultat ali celotno napravo?

Emulatorjem ni vedno treba poustvariti vsakega tranzistorja originalnega sistema. Pogosto uporabljajo pristop HLE (angl. high-level emulation). Namesto da bi podrobno emuliral celoten kos strojne ali sistemske programske opreme, emulator prepozna, kaj želi igra doseči, in isto funkcijo izvede z lastno implementacijo.

Nasprotje je LLE (angl. low-level emulation), kjer se razvijalec poskuša čim bolj približati dejanskemu vedenju originalne strojne opreme ali firmwarea.

HLE je lahko dramatično hitrejši. Težava nastane, kadar igra ni uporabljala neke funkcije tako, kot je bilo predvideno. Če je razvijalec igre odkril nedokumentirano posebnost pravega sistema in jo namenoma izkoristil, elegantna HLE implementacija morda naredi »logično pravilno« stvar, originalna konzola pa nekaj povsem drugega.

Zakaj ena igra dela popolno, druga pa se sploh ne zažene?

Če emulator zna emulirati PlayStation 2, zakaj bi sploh moralo biti pomembno, katero PS2 igro zaženem? Ker nobena igra ne uporablja konzole na povsem enak način.

Ena igra lahko uporablja samo najpogostejše grafične funkcije, druga pa nenavaden »blending«. Ena uporablja običajne izračune s plavajočo vejico, druga je odvisna od zelo specifičnega načina zaokroževanja. Ena uporablja standardni krmilnik, druga mikrofon ali poseben dodatek. Tretja morda vsebuje dirkalni pogon, katerega delovanje je nehote odvisno od natančnega časa procesorskega dogodka.

Zato testiranje emulatorja ni isto kot testiranje običajne aplikacije. Zares dober regresijski test je knjižnica stotin ali tisočev iger.

In potem pride popravek, zaradi katerega končno pravilno deluje ena igra, vendar pokvari tri druge.

Ironično je, da je »ponaredek« pogosto boljši od originala

Ko je emulator dovolj natančen, se lahko zgodi, da emulirana igra izgleda in deluje bolje kot original.

Igro, ki je bila narejena za 480p, lahko emulator izriše v 1440p ali 4K. Geometrijo lahko izriše z višjo notranjo ločljivostjo, izboljša filtriranje tekstur, uporabi sodobno glajenje robov, popravi razmerje slike in v nekaterih primerih odstrani originalno omejitev hitrosti sličic. Emulator lahko ponudi hitre shranjevalne točke (angl. save states), previjanje časa, nadomestne teksture, popravke in modifikacije, ki na pravi konzoli nikoli niso obstajale.

Včasih emulator deluje bolje na Linuxu kot na Windowsu

Mnogi emulatorji in prevajalne plasti, kot je Proton, imajo na Linuxu boljšo zmogljivost. Razlaga je predvsem v tem, kako operacijski sistem komunicira s strojno opremo. Vulkan, sodoben in odprt grafični vmesnik, ponuja nižjo porabo procesorja in bolj neposreden nadzor nad grafično kartico kot starejši, a na Windowsu še vedno pogosto uporabljani pristopi, Linuxovi gonilniki za Vulkan pa so v zadnjih letih dozoreli do te mere, da imajo pogosto manj sistemskega dodatnega bremena kot Windows.

Poleg tega orodje DXVK, ki je del Protona, DirectX klice v realnem času prevede v Vulkan, kar je presenetljivo pogosto hitreje, kot če bi Windows sam neposredno izvajal izvirni DirectX klic, saj se s tem izogne določenim slojem operacijskega sistema, ki na Linuxu preprosto ne obstajajo. Linux tudi omogoča nižjo latenco pri komunikaciji med procesi in bolj predvidljivo razporejanje niti znotraj jedra sistema, kar je za emulatorje, ki morajo v vsaki sličici uskladiti na desetine vzporednih opravil, dragocena prednost.

Da se lotiš razvoja emulatorja, moraš biti mojster in hkrati nor

Medtem ko žongliraš procesorske ukaze, API klice, zaščitne mehanizme in tiho upaš, da ti na vrata ne bosta potrkala Sony in Nintendo, moraš še trpeti visoka pričakovanja skupnosti, za katero brez kakršnihkoli finančnih pričakovanj razvijaš emulator. Manjšina, ki pa je zelo vokalna, ima pogosto previsoka in neutemeljena pričakovanja, da je razvoj takšne programske opreme razmeroma enostaven. Če obstaja emulator za Nintendo Switch, razvoj emulatorja za Nintendo Switch 2 vendarle ne mora biti tako zahteven, kajne?

Vsak nov preboj v resnici pomeni mesece iskanja med hrošči, branja hex-dumpov strojne kode in poskušanja razumeti odločitve današnjih in inženirjev iz preteklosti, ki so pred dvajsetimi leti pisali kodo brez misli, da jo bo kdo kdaj poskušal ponovno ustvariti na povsem drugačni strojni opremi.

Kombinacija trme, radovednosti in ljubezni do ohranjanja igralne dediščine je tisto, zaradi česar emulacija sploh obstaja, in zaradi česar se bo boj za vsako naslednjo generacijo konzol znova začel skoraj popolnoma na novo.


Vam je bila novica zanimiva?

Povejte prijateljem, da ste novico prebrali na Računalniških novicah.

Share
Prijavi napako v članku


Kaj berejo drugi?

Partnerji Računalniških novic Prikaži vse

MORDICOM d.o.o.

Šolska ulica 40, 5250 Solkan, Tel: 05 330 03 60
Skoraj nemogoče je preceniti vpliv rešitev za načrtovanje virov podjetja (ERP) v sodobnem poslovnem svetu. ERP sistemi so nadomestili nepovezane delovne tokove in nezdružljiva ... Več
Zlati partner

GROWTHCOM d.o.o.

PE Ljubljana, Šmartinska cesta 152, 1000 Ljubljana, Tel: 051 313 192
Growthcom - vaš specialist za digitalni marketing Svoje 10-letne izkušnje s področja prodaje in digitalnega marketinga je z nami delil direktor podjetja, David Fabjan. V Growthcomu ... Več

NJORKA d.o.o.

Tovarniška cesta 4c, 5270 Ajdovščina, Tel: 05 901 21 22
Podjetja se srečujejo z vse več podatki, za njihovo učinkovito obravnavo pa potrebujejo številne programe in aplikacije, kar sčasoma vodi v administracijsko zmešnjavo in posledično ... Več

Jamada skupina d.o.o.

Cesta k Tamu 12, 2000 Maribor, Tel: 02 330 53 50
Podjetje je bilo ustanovljeno iz bivše DataLab poslovne enote Maribor. Preživeli so obdobje mladostniške zaletavosti in vihravosti. Prerasli so v zrelo podjetje z jasno vizijo, ... Več