22. 5. 2012

Emulácia je mŕtva

Po neslávnom kolapse herného PC pred viac ako desiatimi rokmi sa ten hnusný bazmek vrátil ku napĺňaniu svojho pôvodného programu. Písanie kravín vo Worde, blbčekovia čo strácaju čas na Facebooku, panici si na 300w+ GPU prehrávajú japonské porno. Veľmi efektívne. Intelektuálny zvyšok ho používa vlastne už len na emuláciu starých a veľmi starých mašín. Aj toto sladké obdobie sa však chýli ku koncu, niet už čo nové emulovať, a na to staré stačí aj mobil od SONY. Konzoly ako PS2 z roku 1999 stále nemajú LLE /low level emulator/ a pravdepodobne ho ani nikdy nedostanú. Priliš komplikované stroje, príliš nízky výkon na strane ex-herného PC. Loď emulácie tvrdo narazila, rozrazila si bok a vyliali sa jej črevá, čo si názorne ukážeme na konzole, o ktorej by ste nikdy nepovedali, že emulovať ju bude problém. Odporná kocka, špinavé fiasko a útek z trhu s osraním zákazníka už po 4 rokoch s názvom Xcrap 1.

CPU.
Má to x86 a emulovať to bude hračka. Zásadný omyl bratia. Google vám vychŕli more literatúry a dokumentácii ale až zistíte, že najdôležitejšie inštrukcie /MOV, INC, DEC, ADD, SUB, SHR, SHL, AND, OR, XO/ majú každá po 20 variánt a to aj v závislosti od adresného módu /8 až 64 bit/ tak vás smiech prejde. Navyše tu máme spracovanie viacerých inštrukcií v jednom cykle, to jest superskalárna architektúra a ani boh okrem intelu nevie ako to vlastne v ich CPU funguje. Nedokážeme to presne emulovať, iba odhadovať a napodobňovať a to nikdy uspokojivo fungovať nebude. Zilog v 8 bit spektre zvladol v jednom takte - jednu inštrukciu a už na jeho super presnú emuláciu potrebujete Pentium 100ku. Pri 16 Bit SNESe - aspoň intel Dual CORE. základná CELL emulácia /práca centra pre vývoj technológií superpočítačov v Barcelone / beží na ninja intel CPU na 1/12 až 1/8 originálnej rýchlosti.

GPU. Je od NVidie, to musí byť hračka. Xcrap 1 GPU aka NV2A vychádza z voľne predajnej Geforce 3ky /NV20/. Narozdiel od RSX pre PS3, kde to zasratá Nvidia odsabotovala a do PS3ky vopchalo prašivú NV 7800 z regálu, pre Xcrape 1 vyvinula kompletne na mieru ušité, zákaznícke, custom riešenie. Xcrap NV2A je teda mix medzi Geforce 3 /NV20 /a Geforce 4 /N25/, dvihli tam počet vertex jednotiek a vyladili špeci low level DX API a najväčšie rošambo sa udialo v registroch. Už pri pôvodnej Geforce 3 ani len netušíme na čo dobrá polovica slúži a grafika ďaleko presahovalo vtedy povinné minimum diktované oficiálnym Direct X 8.0. Pri NV2A je situácia oveľa horšie, exkluzívne registre, bob vie ako vlastne fungujú pixel shader jednotky. Ring 0 access je pod bežným WinOS tabu, takže kernel xcrap GPU ani len nedokážete naprogramovať, nieto ešte emulovať. Lámači železa inak používajú pbKit /pb = push buffer = ovládanie GPU sériou špeci príkazov/ pod OpenXDK

Chipset a audio. NForce 2 čipset je relatívne dobre zmapovaný - USB porty, sieťovka, PCI, AGP zbernice. NVIDIA MCPX dajme tomu, menším problémom je paradoxne audio časť. DSP procesory /štyri/, dobre známa sada AC97 a zákys v podobe NVIDIA SoundStorm APU. Minimum informácii, neemulovateľné, opäť iba HLE /high level emulation/ a teda kostrbatý odhad a mizerná funkcionalita. To isté platí pre BIOS. Kopa základných volaní a operácii je dobre známa, zvyšok ani ťuk. Xcrap podobne ako PS3 a ďalšie konzoly pristupuje na hárdvér pri úvodnej inicializácii priamo, obchádzajúc OS a zanecháva po sebe iba minimum stôp.

RAMDAC. Zariadenie pre prípravu správneho formátu dát pre video výstup. Nuž, xcrap ho nemá, nahrádza ho Video Encoder. Aby to bolo ešte pikantnejšie, každá revízia xcrapu /1.0 až 1.6/ má jeho vlastnú verziu /sú známe napríklad - Conexant CX25871, Focus FS454, Xcalibur/ a čo je ešte šialenejšie, často daný billšmejd dostal aj zvláštny BIOS spárovaný s tým či oným "videovýstup" čipom.

Experti na emuláciu dokonca považujú xcrap 1 za obtiažnejšie emulovateľný ako PS2 /!!/, kde ako som už povedal aj po 12 rokoch treba na spustenie vybraných hier kopu trpezlivosti a voodoo zaklínania. Myslia si to aj preto, lebo grafická karta v PS2ke je vlastne iba super jednoduduchý rasterizér bez kudrliniek, na ktorý stačí hrubá sila a hlavným problémom je heterogénny Emotion engine, čo sú vlastne tri rôzne CPU s vlastnými inštrukčnými sadami /EE core + VU00 + VU01/. Už to vyzerá tak, že nasledujúce roky /desaťročie-a/ sa bude emulátorská scéna venovať iba handheldom ako PSP, 3Ds a PSV. Druhý a tretí menovaný sa črtajú vcelku sľubne vďaka silne štandardizovanému hárdvéru so zopár úpravami /heh ako xcrap/, ale veľké nádeje si nerobím, stále nevieme ani len pracovné frekvencie takých PSV čipov, nie to ešte nejakú podrobnú dokumentáciu /BIOS PSV bude určite zaheslovaný 256 bit DES kľúčom ako zlato vo Fort Knoxe/. Nevadí, získame dosť času na pixel a cyklus perfekt emuláciu takého Megadrajvu, SNES ju už v podobe 101% BSNES - dostal. Niekedy nabudúce napíšem aj zopár vášnivých slov o legendárnych SEGA arkade kabinetoch Model 1, 2 a hlavne Model 3, kde došlo ku zásadnému "emulačnému" pokroku a na obzore sa črtá veľké víťazstvo.