Расширение файла NES. Эмуляторы денди Прячем ZIP-файл в NES ROM

У вас есть проблема с открытием.NES-файлов? Мы собираем информацию о файловых форматах и можем рассказать для чего нужны файлы NES. Дополнительно мы рекомендуем программы, которые больше всего подходят для открытия или конвертирования таких файлов.

Для чего нужен файловый формат.NES?

Расширение .nes преимущественно ассоциируется с форматом файлов "Образ ПЗУ Nintendo Entertainment System (NES)" (NES ROM Image) и соответствующим ему типом файлов (.nes ). NES — это название пользовавшейся огромной популярностью игровой приставки, также известной как FamiCom (Family Computer - Семейный компьютер), которая была разработана и продавалась компанией Nintendo в 1985-1995 гг. по всему миру.

NES представляла собой 8-разрядную приставку, позволявшую запускать игры на основе аппаратных картриджей и требовавшую подключение к телевизору. Всевозможные нелицензионные клоны NES (Dendy и др.) только добавили приставке популярности, и NES продолжает существовать в мире эмуляции благодаря тому, что для всех основных платформ было создано и выпущено множество эмуляторов NES.



Файл .nes содержит в специальном формате дамп ПЗУ (постоянного запоминающего устройства, ROM) игрового картриджа NES. Это виртуальный файловый эквивалент картриджа с игрой, который можно использовать для запуска данной игры при помощи любого NES-эмулятора.

Существует множество пользовательских утилит и средств разработчика для создания, модификации и любых других операций с файлами .nes . Несмотря на то, что Nintendo является держателем патентов на все свое оригинальное игровое ПО, образы ПЗУ NES (.nes ) доступны для загрузки из многих источников в сети Интернет.

Кроме этого, расширение .nes также служит для обозначения файлов плагинов Nessus (.nes ), также известных как файлы Си-модулей (C-Module). Nessus представляет собой комплексный кросс-платформенный сканер сетевых уязвимостей, разрабатываемый на коммерческой основе Tenable Network Security. Используя многочисленные модули-плагины, Nessus служит для проверки сетей различных конфигураций на предмет известных уязвимостей, лазеек, "дырок" и прочих проблем сетевой безопасности.

Файл .nes — это плагин Nessus, написанный на языке программирования Си. Помимо Nessus, файлы .nes также используются другими сканерами сетевой безопасности, например, Open Vulnerability Assessment System (OpenVAS) в качестве "Си-плагинов" (C-Plugins).

Программы для открытия или конвертации NES файлов

Вы можете открыть файлы NES с помощью следующих программ: 

Лучший эмулятор NES / Dendy и Famicom Disk System с открытым исходным кодом. Поддержка сохранений, джойстиков, эмуляции различных контроллеров, архивов (т.ч. 7z), запись movie и прочее... А также обладает великолепной совместимостью. Портирован под бесчисленное кол-во систем (старое название FCE Ultra). Имеет встроенные инструменты для создания tool-assisted superplay.

Размер: 8.5 MiB | Загрузок: 292188 | Загрузить

Эмулятор NES / Famicom / Dendy и FDS с открытым исходным кодом. Множество настроек, различных фильтров, поддержка Kaillera , запуск РОМов прям из архива, возможность автосохранения и отличная совместимость. Бесспорно, один из самых навороченных и лучших эмуляторов NES.

Дата: 08.06.2008 | Размер: 1.2 MiB | Загрузок: 134522 | Загрузить

Отличный эмулятор NES / Famicom и Famicom Disk System . Поддержка большого количества мапперов, сохранений, фильтров, режима эмуляции Dendy и прочих возможностей.

Неплохой эмулятор NES / Dendy от автора Project64, написан с использованием DirectX API. Поддерживает большое кол-во мапперов и в основном ориентирован запуск USA-ромов. Jnes имеет поддержку сохранений, также игру по сети через Kaillera .

Дата: 25.12.2016 | Размер: 502 KiB | Загрузок: 62747 | Загрузить

Mednafen - это отличный мультиплатформенный эмулятор, который эмулирует следующие платформы:

  • Atari Lynx
  • GameBoy (Color)
  • GameBoy Advance
  • Neo Geo Pocket (Color)
  • Nintendo Entertainment System/Famicom
  • PC Engine (CD)/TurboGrafx 16 (CD)/SuperGrafx
  • PC-FX
  • Sega Game Gear
  • Sega Genesis/MegaDrive
  • Sega Master System
  • Sony PlayStation
  • Super Nintendo Entertainment System/Super Famicom
  • Virtual Boy
  • WonderSwan
Качество эмуляции очень даже хорошее.
Присутствует поддержка графических фильтров.

Внимание: эмулятор запускается только из командной строки. Но вы можете использовать оболочку: Mednaffe или MedGui Reborn .
Для полноценной работы с эмулятором, следует ознакомиться . А так же, не забываем о клавише F1.

Дата: 01-09-2015 | Размер: 17.5 MiB | Загрузок: 57456 | Загрузить

Неофициальный релиз знатного эмулятора самой известной восьмибитной консоли от Nintendo. Исправлен баг вызывающий тормозную реакцию джойстика проявляющуюся на некоторых компьютерах в официальном релизе и некоторые другие досадные глюки.

Исправленная сборка Нестопии 1.37 (стабильной для записи мувиков). Теперь она поддерживает неограниченный размер видео при дампе AVI, а также цветовое пространство RGB32.

Дата: 2.09.2012 | Размер: 866 KiB | Загрузок: 5794 | Загрузить

Довольно продвинутый эмулятор NES / Dendy c открытым исходным кодом для Windows. Среди его возможностей: dendy-режим (hybrid), отладчик, запись видео, настройка цветовой палитры, game genie, редактор заголовков РОМа и прочее.

Дата: 2019-01-02 | Размер: 7.1 MiB | Загрузок: 10958 | Загрузить

Эмулятор NES для Windows. Это концепт-эмулятор, главной особенностью которого является - обратная пересмотра игрового процесса в реальном времени (real-time rewind).

Дата: 2012-03-12 | Размер: 490 KiB | Загрузок: 4923 | Загрузить

Мультисистемный эмулятор приставок Sega Mega Drive, Sega Master System, Sega Game Gear, Nintendo Entertainment System и аркадного автомата Sega System E. Имеет оригинальный 3D-интерфейс, в виде игровой комнаты с игровыми автоматами, телевизорами. Также есть встроенная база данных игр и обложки.

Дата: 16.05.2011 | Размер: 18.3 MiB | Загрузок: 23823 | Загрузить

Один из старейших, продолжающих развитие, эмуляторов NES / Dendy . Имеет графический интерфейс (в DOS-стиле т.к. долгое время эмулятор был для DOS), возможность записи и сохранения игры, создание скриншот, поддержку game genie кодов, сохранений от nesticle и архивов. Для любителей и ностальгирующих.

Мы надеемся, что помогли Вам решить проблему с файлом NES. Если Вы не знаете, где можно скачать приложение из нашего списка, нажмите на ссылку (это название программы) - Вы найдете более подробную информацию относительно места, откуда загрузить безопасную установочную версию необходимого приложения.

Посещение этой страницы должно помочь Вам ответить конкретно на эти, или похожие вопросы:

  • Как открыть файл с расширением NES?
  • Как провести конвертирование файла NES в другой формат?
  • Что такое расширение формата файлов NES?
  • Какие программы обслуживают файл NES?

Если после просмотра материалов на этой странице, Вы по-прежнему не получили удовлетворительного ответа на какой-либо из представленных выше вопросов, это значит что представленная здесь информация о файле NES неполная. Свяжитесь с нами, используя контактный формуляр и напишите, какую информацию Вы не нашли.

Что еще может вызвать проблемы?

Поводов того, что Вы не можете открыть файл NES может быть больше (не только отсутствие соответствующего приложения).
Во-первых - файл NES может быть неправильно связан (несовместим) с установленным приложением для его обслуживания. В таком случае Вам необходимо самостоятельно изменить эту связь. С этой целью нажмите правую кнопку мышки на файле NES, который Вы хотите редактировать, нажмите опцию "Открыть с помощью" а затем выберите из списка программу, которую Вы установили. После такого действия, проблемы с открытием файла NES должны полностью исчезнуть.
Во вторых - файл, который Вы хотите открыть может быть просто поврежден. В таком случае лучше всего будет найти новую его версию, или скачать его повторно с того же источника (возможно по какому-то поводу в предыдущей сессии скачивание файла NES не закончилось и он не может быть правильно открыт).

Вы хотите помочь?

Если у Вас есть дополнительная информация о расширение файла NES мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся и отправьте нам свою информацию о файле NES.

И одновременно ZIP-файл. Он одновременно полностью функционален и как NES ROM, и как ZIP-файл.

Что находится в этом ZIP-файле? Исходный код ROM.

Что случится, если скомпилировать этот исходный код? Он создаст NES ROM, который также является ZIP-файлом, содержащим исходный код этого NES ROM.

Запущенный ROM

Этот NES ROM можно «прожечь» на картридж NES и он будет работать на NES. Даже если конвертировать все данные с картриджа, образ NES всё равно будет ZIP-файлом.

Источник вдохновения

Выпуск 0x14 журнала PoC||GTFO был одновременно PDF, ZIP-файлом и NES ROM. Именно этот выпуск вдохновил меня на создание NES-игры с нуля для Tymkrs .

Способ, использованный мной для создания NES ROM, также являющегося ZIP-файлом - это НЕ тот же способ, который использовался в выпуске issue 0x14 PoC||GTFO . Мой способ встраивает ZIP-файл в NES ROM и позволяет записать образ NES на картридж, сохранив данные ZIP-файла. В методе, использованном PoC||GTFO данные ZIP-файла хранятся за пределами файла ROM NES, поэтому выпуск 0x14 PoC||GTFO нельзя записать на картридж с сохранением данных ZIP-файла.

Формат файлов NES ROM

В этом образе NES используется формат файлов iNES. Формат файлов iNES на самом деле довольно прост.

В начале ROM есть заголовок iNES, который сообщает немного информации о NES ROM, чтобы эмуляторы могли понимать данные образа NES. После заголовка iNES следуют данные PRG, являющиеся данными программной логики NES ROM. Затем идут данные CHR, то есть наборы тайлов фона и спрайтов. Всё пустое пространство в PRG заполнено отступами, кроме того, в конце данных PRG может быть несколько байт (в этом NES ROM есть 6 необходимых байт в конце данных PRG, которые я не могу изменять).


Формат файлов iNES

Формат файлов ZIP

В файлах ZIP достаточно много компонентов, поэтому мы сосредоточимся тех частях, которые для нас важны.

Для каждого файла и каталога, содержащегося в ZIP-файле, существует заголовок файла центрального каталога (Central Directory File Header). Любой заголовок файла центрального каталога можно найти, выполнив поиск байтов сигнатуры заголовка 0x504B0102 в ZIP-файле. Важная часть информации - это локальное смещение заголовка (Local Header Offset), поскольку при встраивании ZIP-файла в NES ROM мы будем менять каждое смещение.


Формат заголовка файла центрального каталога ZIP

ZIP-файлы определяют своё начало и конец, переходя в конец файла и двигаясь к началу, пока не дойдут до байтов 0x504B0506 сигнатуры конца записи центрального каталога (End of Central Directory Record). При встраивании ZIP-файла в NES ROM нам важно обновить смещение центрального каталога (Central Directory Offset) в конце записи центрального каталога. Также мы можем указать длину комментария ZIP-файла (ZIP File Comment Length) и это количество байтов после конца данных ZIP-файла будет комментарием ZIP-файла.


Формат конца записи центрального каталога ZIP

Прячем ZIP-файл в NES ROM

Если мы найдём достаточно отступов в данных PRG, то сможем просто заменить эти пустые данные ZIP-файлом. В своём NES ROM я отсчитывал байты отступов от конца данных PRG, пока не получил достаточно места для встраивания ZIP-файла и записал, насколько далеко в NES ROM я начал встраивать ZIP-файл. Затем я обновил все смещения данных ZIP-файла, прибавив расстояние, на котором начинается в образе NES ZIP-файл. После этого я задал размер длины комментария ZIP-файла равным размеру оставшейся части данных NES ROM, то есть концу данных PRG и всем данным CHR.


Формат файла NESZIP

Этот файл остаётся образом NES, потому что никакие из необходимых данных PRG и данные CHR не повреждены. Также он является ZIP-файлом, потому что все смещения верны и все данные после данных ZIP-файла объявлены комментарием ZIP-файла.

Давайте сначала протестируем файл, чтобы убедиться, что он одновременно является и NES ROM, и ZIP-файлом. Скачав файл как NES ROM, я делаю его копию.


Копия NES ROM

Переименование файла позволяет мне изменить расширение с.nes на.zip.


Меняем расширение копии NES ROM на.zip

После замены расширения на.zip, файл считается ZIP-файлом.

При распаковке этого файла создаётся каталог.


Если мы посмотрим на содержимое каталога, то увидим исходный код файла. Мы просто взяли NES ROM, переименовали его в ZIP-файл и успешно его распаковали.


Обновляя смещения данных ZIP-файла, я решил немного развлечься с этим ZIP-файлом. В заголовках файлов центрального каталога указывается ОС (Host OS), в которой создан ZIP-файл, поэтому я решил сделать так, чтобы ZIP-файл утверждал, что был создан на Atari ST.

Создаём рекурсию

На самом деле, эта часть - самая простая. Запакованный исходный код стал ZIP-файлом, достаточно маленьким, чтобы его можно было легко встроить в NES ROM, поэтому я решил сделать NES/ZIP рекурсивными. Для автоматизации процесса создания ZIP-файла исходного кода или для автоматизации процесса встраивания ZIP-файла в NES ROM потребовалось не так много труда.

Подводим итог

Этот проект является простым proof of concept, демонстрирующим возможность встраивания ZIP-файла в NES ROM способом, создающим файл, который одновременно становится и ZIP-файлом, и образом NES, и позволяющим записывать данные на картридж с сохранением всех их свойств.

Так как я решил сделать этот NES ROM совместимым с печатными платами NES-NROM-128 (из-за их простоты), процесс будет работать практически для любого NES ROM, если в нём будет достаточное количество отступов в данных PRG для встраивания ZIP-файла.

Чтобы реализовать этот процесс на других NES ROM, может потребоваться дополнительная работа, потому что разные ассемблеры 6502 могут заполнять отступами данные PRG по-разному. Я не тестировал этот метод с более сложными играми NES, имеющими переключение банков. Также я не тестировал возможность добавления отступов в размер данных PRG для встраивания ZIP-файлов большего размера.

С учётом всего сказанного, не удивляйтесь, если я дам вам картридж NES с тайным ZIP-файлом, скрытым в данных NES ROM.

Исходный код

Исходный код этого проекта выложен на GitHub (или его можно получить, распаковав файл NES ROM) и имеет лицензию BSD 2-Clause License.