Кіріспе

SNES бейне ойын консолі үшін эмулятор.

ZSNES – көбінесе x86 тілінде құрастырылған, Super Nintendo Entertainment System эмуляторы болып табылатын тегін бағдарламалық қамтамасыз ету. Оның Linux, DOS, Windows жүйелері үшін ресми, ал Xbox және macOS жүйелері үшін ресми емес порттары бар.

Өмірбаян

ZSNES-тің әзірлеуі 1997 жылдың 3 шілдесінде басталды және алғашқы нұсқасы 1997 жылдың 14 қазанында DOS жүйесі үшін шығарылды. Одан бері Windows және Linux жүйелеріне ресми түрде портталды. Эмулятор 2001 жылдың 2 сәуірінде GPL 2.0 немесе одан кейінгі лицензия бойынша ақысыз бағдарламалық қамтамасы ретінде таралды. 2009 жылы adventure of link есімді қолданушы ZSNES тақтасында «ZSNES өлген жоқ, ол әлі де даму үстінде» деп мәлімдеді, бұл zsKnight және Demo бастапқы әзірлеушілер кеткеннен кейін жарияланды. Бірақ соңғы нұсқасынан бері (2007 жылдың 24 қаңтарында шыққан 1.51 нұсқасы) даму айтарлықтай баяулады. Даму жұмыстарының көп бөлігі эмулятордың портативтілігін арттыруға бағытталды, C және C++ тілдерінде құрастыру кодын қайта жазу арқылы, соның ішінде Qt кітапханасын қолданатын жаңа графикалық интерфейс құрылды. ZSNES ерекшелігі – ол SNES жақсарту чиптерін белгілі бір деңгейде эмуляциялай алды. 1.50 нұсқасына дейін ZSNES TCP/IP немесе UDP протоколдары арқылы желілік ойынға мүмкіндік берді. ZSNES-тің қызығушылық тудырған алғашқы мүмкіндіктерінің бірі – «ZMV фильмдері» болды. Бұл мүмкіндік ойыншыларға ойын сеансының енгізуін жазуға және оны ZMV файлына шығаруға мүмкіндік берді. Осылайша, ZSNES-тің, сәйкес ROM файлы мен ZMV файлы бар басқа қолданушы, екінші ойыншының ойынын «көруге» мүмкіндік алатын еді. Бұл ойын видеоларының кең таралған онлайн нұсқалары пайда болғанға дейін контентті бөлісудің алғашқы формасы болды. ZSNES негізінен x86 процессорлары үшін төменгі деңгейдегі ассемблер тілінде жазылғандықтан, ARM сияқты RISC архитектурасын қолданатын құрылғыларға ZSNES-ті порттау идеясы өте қиын. Коммерциялық ойын консольдары әдетте x86 процессорларын қолданбады (алғашқы Xbox ең танымал ерекшелік болды), сегізінші буынға дейін, яғни 2013 жылы Xbox One және PlayStation 4 консольдары шыққанға дейін.

Даму тарихы

ZSNES-тің алғашқы жалпыға қолжетімді нұсқасы 1997 жылдың 14 қазанында 0.150 нөмірімен шықты. Ол SNES-тің өзгертілген WDC 65C816 микропроцессорынан алынған 65816 нұсқаулар жиынтығын, сондай-ақ SRAM қолдауын және 7-режимді ішінара жүзеге асыруды қамтиды. Бұған қоса, ZST файлына сақтау күйлерін (save states) қосымша мүмкіндік ретінде ұсыну мүмкіндігі болды. Бұл бастапқы нұсқада DSP-нің кейбір мүмкіндіктері болмады. 1998 жылдың 9 қыркүйегіндегі 0.600 нұсқасы алғаш рет Pharos әзірлеушісін (кодтауға көмектесуші ретінде) енгізді және жаңа 16 биттік графикалық қозғалтқышты жүзеге асырумен, сондай-ақ бұрынғыдан гөрі көбірек функциялары бар жаңа GUI-ді ұсынумен маңызды жетістік болды. Содан кейін, 1998 жылдың 27 қазанында шыққан 0.700 нұсқасы C кодымен компиляцияланған алғашқы нұсқа болды. 1999 жылдың 4 шілдесінен бастап 0.900c/a нұсқасымен бірге, сол кезде маңызды болған жергілікті ZIP мұрағаттауын (compression) қолдау мүмкіндігі қосылды, бұл пайдаланушыларға сол кездегі қымбат дискілерде орынды үнемдеуге мүмкіндік берді. Сонымен қатар, SA 1 чипін қолдауды жақсарту жұмыстары күшейді. 2000 жылдың 1 қыркүйегіндегі 1.000 нұсқасы ZSNES-тің алғашқы ресми Windows нұсқасы болды, ал эмулятордың келесі бірнеше нұсқалары осы порттың сапасын жақсартуға бағытталды. 2001 жылдың 2 сәуірінде бағдарламалық құралдың бастапқы коды жарияланды және командаға Teuf бағдарламашысы қосылды. 2001 жылдың 16 маусымындағы 1.30b нұсқасы Super Nintendo эмуляциясының маңызды кезеңі болып саналады, себебі ол Star Ocean және оның S DD1 мұрағаттау чипіне бастапқы қолдау көрсетті. Бұл ойын жүйенің аппараттық мүмкіндіктерінің шегіне дейін сынап көрді, дауыстық үзінділермен және жақсартылған графикамен мақтанды және эмуляторда іске қосу қиын болды. 2001 жылдың шілдесінде zsKnight жеке себептермен кеткеннен кейін, жоба оған және оның отбасына арналған құрмет ретінде 2001 жылдың 30 қыркүйегінде 1.337 нұсқасын шығарды. Эмулятор 2002 жылдың шілдесіне дейін жаңартылып тұрды, бірақ шығарылымдар тоқтатылды және жаңа қоғамдық нұсқа шығуына екі жылдан астам уақыт кетті. 2004 жылдың 25 желтоқсанында 1.40 нұсқасы шығарылды, бұл жоба үшін маңызды өзгеріс болды, жаңа қатысушылармен және эмулятордың ескірген жүйелерін жақсартумен. Нах және pagefault әзірлеушілері ZSNES код базасының бір бөлігі болған бірнеше белгілі хактарды жоюға және қиын ойындарға қажетті дұрыс кодты жүзеге асыруға ерекше назар аударды. Сонымен қатар, арнайы чиптерді жақсырақ қолдау үшін кең ауқымды жұмыстар жүргізілді. 2006 жылдың 22 желтоқсанындағы v1.50 нұсқасы тағы бір маңызды жаңарту болды, әзірлеушілердің сөзіне сәйкес: "ZSNES - бұл 200 000-нан астам код жолдары бар бағдарлама, және осы нұсқада оның 25% -тан астамы өзгертілді; сондай-ақ, құрастырудың 15% -ы C тіліне ауыстырылды". Бұл эмулятордың соңғы маңызды нұсқасы болды, содан кейін шағын 1.51 нұсқасы шықты және одан кейін даму тоқтатылды.

Қабылдау

ZSNES өзінің ең жақсы кезеңінде жақсы қабылданып, 2005 жылы британдық Retro Gamer ойын журналы эмуляторды «өте әсерлі» деп атап, «тамаша тостер режимін» жоғары бағалады. Алайда, компьютерлер бірте-бірте қуаттырақ бола бастаған сайын, Snes9x және higan сияқты дәлірек SNES эмуляторларының пайда болуымен, кейінгі шолулар ZSNES-ті салыстырмалы түрде төмен дәлдігі үшін ғана емес, сонымен қатар оның бұрынғы танымалдылығы бірнеше жанкүйерлер жасаған аудармалар мен өзгерістердің эмулятордың қателіктерін ескере отырып жасалуына себеп болды, бұл оларды нақты құрылғыларда да, ZSNES-ті алмастырған жаңа эмуляторларда да ойнатуды қиындатады. Кейбір басқа эмуляторларда ZSNES-тің ерекшеліктерін имитациялайтын режимдер бар, бұл ZSNES үшін жасалған өзгерістерді қайта ойнатуға мүмкіндік береді. 2015 жылы 1.51 нұсқасында, арнайы құрастырылған SNES ROM-ның хост жүйесін бақылауға алып, осылайша қауіпті кодты іске қосуға мүмкіндік беретін қауіпсіздік бұзушылық (эксплойт) табылды; одан кейін жартылай түзетілген сынақ нұсқасы шығарылды.