31. 10. 2010

Super NES - super emulátor

SNES - Super Nintendo Entertainment System /o pár dní oslávi 20 výročie, v japonsku štart november-listopad 1990/ je poslednou hárdverovo kvalitnou konzolou od nintenda. Na trhu bolo v tých zlatých časoch, keď ešte boli ochotný a schopný vyrobiť, alebo zabezpečiť pre ňu aj dostatok kvalitného softu. V našich zemepisných šírkach jej bezproblémovo herne sekundovala warez Amiga 500-1200, takže drahé kártridže SNESu nikomu nechýbali a herne na tom bola Amiga aj tak rovnako, alebo lepšie /adventúry, stratégie, simulácie/. Dôvod prečo som teda vlastne hľadal spôsob, ako sa ku možnosti na SNESe niečo zahrať bola práve slávna FF7 pre PSone /1997/ a konkrétne hlad po prejdení jej predchádzajúcich dielov. Bohužial exkluzívne iba pre 16 bit SNES. Mraky nad mojou hlavou sa však roztrhli v okamihu, ako mi doma pristálo Pentium 100 /pretaktované na 133Mhz/ a dnes kultoví kodéri zsKnight a _Demo_ vypustili svoj úžasný emulátor SNES mašiny - ZSNES.

ZSNES. Prvá funkčná verzia napísaná pre všetky svoje výkonnostne kritické časti v čistom ručne ladenom x86 asembleri /neskôr sa ukázalo, že porty na RISC stroje sú týmto krokom značne problematické/. Štart 14.10.1997 a to pre starý MS-DOS. ZSNES sa na mojom "133" Pentiu bežal, pri istých kompromisoch pri spracovaní zvuku, pre JRPG hry na akceptovateľných 15-30fps. Upgrejdom na AMD K6-2 300Mhz sa situácia vyriešila úplne a bolo možné sa pustiť aj do hier, ktoré použivali dodatočne čipy pre akceleráciu 3D grafiky alebo dekompresiu dát v reálnom čase, aby sa toho na kartridž napchalo čo najviac. ZSNES je po odchode jeho dvoch hlavných kóderov vylepšovaný už len sporadicky, a posledná známa verzia 1.51 je viac ako tri roky stará /z januára-leden 2007/. Čas pozrieť sa na konkurenciu.

SNES9x. Paralelne a v rovnakom čase bežiaci vývoj prevažne C++ emulátora /až na ASM emuláciu CPU jadra/. Raz mal niečo lepšie ZSNES /ako prvý emuloval DSP, SA-1, S-DD1 čipy/, potom SNES9x a konkurenčný boj takto trval celé roky. Posledná verzia SNES9x 1.52 pochádza zo začiatku tohto roku. Prináša radikálne prepracovaný audio engine /konečne zneje FF6 korektne !!/, nový interfejs, nový quick save file systém a masívne vylepšenú podporu pre dodatočné akceleračné a pomocné koprocesory. Kvôli presnosti emulácie sa dvihli sa aj nároky na systém. SNES9x je dnes jasnou voľbou pre hranie SNES hier pod WinOS. ZSNES ostáva ako záloha pre staré vykopávky triedy Pentium, MMX, PIIka. Ak si však myslíte, že tu už niet veľa čo vymyslieť a emulácie SNESu je vlastne ukončená, ste na omyle.

BSNES. Ultimatívne riešenie hlavne pre budúce platformy vzdialene hoc aj 10 rokov /výkonné mobily, handheldy, konzoly, PC/. Najnovší projekt bežiaci od roku 2004, neustále updejtovaný projekt. Ide o vrcholné dielko, kde je softvérová low-level emulácia hárdvéru SNESu /dokonca aj Super Gameboya/ na prvom mieste, bez ohľadu na hárdverové nároky /sú v porovnaní so ZSNES - značné/. Reverzné inžinierstvo. Skutočné pochopenie práce CPU - SPC7110, audio CPU SPC700, 3D akcelerátora SuperFX na pixel a cyklus presne. Nekompromisne. Žiadne hacky, speedUPs, pre hru špecifické odrbávky, ktorými sú všetky emulátory priam zamorené. V súčasnosti je možné používať tri režimy presnosti emulácie: Accuracy, Compatibility, Performance. Aj ten najmenej presný je podľa autora stále lepší ako hore uvedená konkurencia. Mód Accuracy navyše používa revolučnú technológiu Dot-based rendering. Narozdiel od klasickej scanline metódy, sa fyzicky vykresľuje naraz nie celý raster riadok/čiara, ale každý pixel framebufferu samostatne. Má to zaujímavé herné výsledky. Napríklad v hre Air Strike Patrol, perfektne funkčnej v každom emulátore sa zrazu pod lietadlom objavil jeho tieň, značne uľahčujúci určenie polohy lietadlo voči zemi a nasledne aj načasovanie zhodenia bomby. Dot-based rendering je schopný aj počas vykresľovania riadku v jeho strede /mid-scanline raster effects/ zapísať novú informáciu, ktorú tam počas IRQ prerušenia zapísalo SNES GPU. Klasický emulátor do celého scanline riadku zapísal uniformnú informácie o jase a "nevšimol" si jeho zmenu /de fakto transparency efekt/ a tieň proste zmizol !!



Battle Blaze - ZSNES, SNES9x, BSNES

Iný príklad - hra Battle Blaze intro efekt s "ohňom". Statické obrázky vyzerajú vcelku zhodne. ZNES však obrazom "nevlní", SNES9x tam má meter grafických scanline glitchov a jedine BSNES prechádza testom vďaka Dot-based renderingu bez ztraty cti. A aby toho nebolo dosť. Je schopný manipuláciou pamäťového adresovania /čip MSU-1/ a vlastným debugerom vytvorenie SNES hry s 4GB kártridžom /bežné SNES hry boli 2-4-6 megové vecičky/. Je teda možné spojiť špičkové SNES JRPG - Chronotrigger s kreslenými FMV animačkami z jeho PSone verzie, čo sa už aj vo virtuálnej podobe naozaj stalo. A poslednou záležitosť na ktorej autor pracuje je SNES Preservation Project. Nič iné ako na bit presná záchrana každej vydanej SNES hry vrátane skenu obalu, manuálu, alebo obrázku PCB matičnej dosky hry. Raz až o 15 rokov na svojom mobile s pol-terabajtovou flashkou nebude mať čo robiť, si môžte stiahnuť jeden veľký SNES archív, kde okrem poslednej verzie BSNES bude aj celý herný "život" tejto kultovej hernej platformy.



PCB doska SNES hry Street Fighter 2 alfa a S-DD1 chip

Teraz teda /lepšie večer - lepšia atmosféra/ urobíte nasledovné. Stiahnete si emulátor SNES9x v1.52 /napríklad win32.fix4/. Spustite ho. Ak nehavaruje, opäť program ukončite. Sám si zatiaľ vytvorí folder ROMS, SAVES atakďalej. Do ROMS si uložte FF3 /FF6 bola v amerike vydaná ako FF3/. Opäť spustite emuláciu, v display-settings potvrďte FULL SCREEN možnosť, nahrajte FF3 romku, ESCAPE zapína/vypína hornú pomocnú lištu. Podobný postup s BSNES v070 /pomocná lišta - stlač TAB/. A hrajte JRPG ďaleko lepšie ako FF10-12-13 dokopy. Budete ohromený hĺbkou, hudbou, emóciami, postavami, dĺžkou, a interaktívnou scénkou s kompletným operným predstavením v divadle.