Программа для открытия файла nes. Эмулятор денди. Как играть игры денди на компьютере? Файл NES инфицирован вирусом

Про внутреннее устройство NES-игр, на этот раз я расскажу об используемых мной инструментах для исследований.

Большая часть того, что необходимо исследователю, уже есть в эмуляторе FCEUX , который хорошо подходит для отладки игр. В документации стоит досконально изучить раздел Debug , каждый инструмент оттуда полезен исследователю, причём умение использовать их совместно друг с другом усиливает возможности хакера.

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

Использование Lua-скриптов

Собственно, первый способ, пример которого приведён на картинке для привлечения внимания – создание вспомогательных инструментов с помощью встроенного в эмулятор интерпретатора Lua-скрипт.
На примере выше для исследования игры (и просто читерского прохождения, при желании) используется такая возможность скриптов, как вывод изображений на экран поверх отрисовываемой эмулятором картинки .

Таким образом исследователь может заметить то, что недоступно обычному игроку, например, на скриншоте выше из трёх скрытых бриллиантов игрок может допрыгнуть только до первых двух, и никаким образом не может взять третий или даже просто догадаться об его существовании. В «Утиных историях 2» встречаются даже такие драгоценности, которые вообще размещены за пределами игрового уровня.

Другой пример скрипта с выводом на экран дополнительных данных – компас до ближайшего драгоценного камня в «Книге Джунглей»:

Естественно, визуализация информации из оперативной памяти или ROM игры не единственная возможность скриптов.

Другая часто используемая возможность – логгирование происходящего в коде игры , например, шаблон скрипта для дампа разархивированных данных сразу после их распаковки (для SMD игр, но принцип применим и для NES).

Ну, и никто не запрещает создание на Lua-скриптах полноценных утилит , вроде уже включённого в эмулятор редактора нажатых клавиш TasEditor .

Также, на мой взгляд, недооцененной является идея частичного переписывания кода игры на скриптах , когда игровые данные патчатся скриптом на лету для модификации геймплея. Proof-of-concept такого скрипта, модифицирующего врагов в «New Ghostbusters 2»:

Однако, для сложной обработки конкретной игры или создания новых методов хака стоит задуматься об использовании следующего метода.

Модификация исходного кода эмулятора

Здесь есть где разгуляться фантазии на разные темы, не касающиеся исследования игр, вроде добавления в эмуляторы поддержки достижений , 3d-рендера или улучшенной графики , однако я попытаюсь удержаться в рамках темы статьи.

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

Другой простой и полезный пример, который пока ещё отсутствует в последней версии эмулятора – возможность модификации из скрипта памяти PPU .

Модификация эмулятора может также использоваться для того, чтобы встроить в него редактор для конкретной игры с возможностью на лету запустить её и проверить внесённые изменения:

Скрипты для статического анализа кода игры

Предыдущие две категории модификаций касались динамического анализа игры в ходе её выполнения. Однако большая часть исследования – это статический анализ ROM-файла игры (или дампов каких-либо данных из него).

Основной программой для такого анализа кода является интерактивный дизассемблер IDA . Он поддерживает ассемблер 6502, однако требует как плагина для правильной загрузки файлов в формате nes , так и набора скриптов для автоматизации рутинных действий по преобразованию загруженного файла в причёсанный код. Набор скриптов, специфичных для исследования NES-игр собран .

Сами скрипты для IDA могут быть написаны на встроенном языке команд idc или python , в любом случае лучше всего открыть их текстовым редактором и изучить, в большинстве случаев это помогает лучше понять команды самого IDA, которые пригодятся в работе с ним и научиться писать такие скрипты самому. Это очень пригодится, когда понадобится провести несколько сотен однотипных действий, вроде объединения байт в поинтеры или выделения массивов по некоторым правилам.

Инструменты для статического анализа данных игры

IDA хороший инструмент для анализа кода, настолько хороший, что некоторые гуру исследования игр даже считают, что только его достаточно для исследования и изменения игр. Однако, даже имея на руках разобранную до компилируемых и прокомментированных исходников игру, сложно модифицировать игровые данные – уровни, графические карты, анимации персонажей. К сожалению, формат игровых данных часто сильно отличается от игры к игре, поэтому создать универсальные инструменты, подходящие для большинства игр, достаточно трудно.

Редакторы тайловых карт

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

Такими программами можно редактировать тайлы графики в играх с наличием CHR-ROM – целыми банками графики. В других играх используется CHR-RAM – видеопамять тайлов в них считывается частями из банка с данными и кодом и копируется в видеопамять (при этом иногда достаточно хитрыми способами, но о них скорее лучше рассказывать в статье о компрессии данных).

На более высоком уровне игры отличаются уже настолько, что общих программ для редактирования практически нет, максимум существуют редакторы, охватывающие несколько игр на одном движке. Про свои попытки сделать универсальный редактор уровней я напишу в конце статьи, пока же приведу ещё несколько общих идей, как находить данные в играх, и утилит, реализующих эти идеи.

В качестве языка реализации я использую python за то, что на нём можно быстро и просто проверить какую-либо догадку, иногда даже прямо в интерактивном режиме.

Коррапт ROM

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

Поиск блоков

Можно также зайти с другой стороны.

Фон, который отображается на экране, задаётся массивом индексов тайлов видеопамяти по фиксированному адресу PPU – для NES существует 4 экранные страницы, которые в зависимости от настроек PPU могут разными способами выводится на экран. Не важно, что именно будет на экране, достаточно просто захватить какую-нибудь загруженную страницу для анализа.

Первая экранная страница (Name Table) расположена по адресам PPU $2000-$23BF. Её содержимое в эмуляторе FCEUX можно посмотреть в окне Debug → Name Table Viewer :

А также в виде байт в окне Debug → Hex Editor, View → PPU Memory (перейти по адресу $2000).

Здесь же можно сделать дамп всей видеопамяти, который пригодится нам для анализа (File → Dump to File → PPU Memory ).

Это просто массив из 960 индексов маленьких тайлов видеопамяти размером 8x8 пикселей. При этом, после реверса большого числа игр известно, что игровые экраны часто описываются блоками большего размера, например, 16x16 или 32x32 пикселей. Таким образом, если мы предположим некоторый размер блока (для начала попробуем самые стандартные – 2x2 тайла, выделены на скриншоте красной рамкой), то мы можем разбить данные из экранной страницы на участки, в каждом из которых окажется описание одного блока.

Так получается список из всех блоков, которые присутствуют на экране. Причём у нас «чистые» описания блоков, без информации о спрайтах персонажей (спрайты рисуются другим способом), и независимый от анимации (анимации фона практически всегда делаются с помощью изменений палитры либо самой видеопамяти, номера тайлов в Name Table остаются неизменными). Однако мы не знаем номера блоков.

У нас есть описание блоков на экране, но мы не знаем их порядок хранения в ROM. Тем не менее, мы можем с некоторой вероятностью предположить, где именно расположено описание блоков. Алгоритм для этого такой:

1. Проходим по всему ROM и размечаем все адреса, по которым обнаруживается какой-нибудь блок, при этом сохраняем его номер (настоящий номер может быть другой, нам важно отметить только отличия блоков друг от друга).

2. Находим область в ROM, в которой обнаружено наибольшее количество РАЗНЫХ блоков. С наибольшей вероятностью именно это и есть описание блоков.

Таким образом, мы можем найти блоки размером 2x2 в играх, в которых они хранятся последовательно.

Это уже неплохо, но есть способ кардинально улучшить результаты работы алгоритма. Дело в том, что существует ограниченное количество основных размеров блоков и способов их хранения в ROM, и мы можем перебрать их все.

Основные размеры блоков: 2x2, 4x2, 2x4 и 4x4, но в случае необходимости легко добавить и другие размеры.

Со способом хранения их в ROM немного хитрее, блоки могут храниться как линейно, так и разбитыми на части массивами (Structure of Arrays , сокращенно SoA), т.е. сначала в ROM хранится массив только первых частей блоков, за ним - массивы со следующими частями. Чаще всего такие массивы хранятся друг за другом, при этом промежуток между началами массивов равен количеству блоков. Чтобы найти в ROM такие SoA-массивы, мы должны узнать их длину, что можно сделать перебором всех вариантов (частенько в играх используется по 256 блоков, так что начинать проверку стоит с этого числа и постепенно его уменьшать).

Всё это выглядит достаточно запутанно, ведь мы опираемся только на вероятность того, что игра использует определённый вид блоков, но на практике утилита находит блоки в 80-90% проверенных игр!

Вдобавок, она позволяет отсеять игры с необычной структурой (неблочной), чтобы пристальнее их изучить.

Сравнение CDL-файлов

Эмулятор FCEUX умеет в ходе эмуляции каждую инструкцию отмечать, какие байты были интерпретированы как код, а какие – как данные (меню Debug → Code/Data Logger... ). Эта фича полезна сама по себе и тесно интегрирована с другими отладочными возможностями эмулятора – попробуйте включить этот режим и посмотреть, как изменились другие отладочные окна. Однако, я хочу рассказать об её одном частном применении. Если сохранить два таких cdl-файла, один ДО совершения изучаемого действия, а другой сразу же ПОСЛЕ его окончания, то разница между двумя такими файлами покажет только те данные (или код), которые были использованы во время совершения действия. При грамотном отсечении можно найти нужные данные, всего лишь правильно выбрав два момента времени между измеряемыми событиями.

Составление из базовых тайлов больших игровых структур и сборка в итоге целого уровня напоминает сборку пазла из тысяч кусочков, и доставляет такое же удовольствие, когда, наконец, каждый кусочек оказывается на своём месте.

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

Теги: Добавить метки

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

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

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

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

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

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

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

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

При наличии на компьютере установленной антивирусной программы можносканировать все файлы на компьютере, а также каждый файл в отдельности . Можно выполнить сканирование любого файла, щелкнув правой кнопкой мыши на файл и выбрав соответствующую опцию для выполнения проверки файла на наличие вирусов.

Например, на данном рисунке выделен файл my-file.nes , далее необходимо щелкнуть правой кнопкой мыши по этому файлу, и в меню файла выбрать опцию «сканировать с помощью AVG» . При выборе данного параметра откроется AVG Antivirus, который выполнит проверку данного файла на наличие вирусов.


Иногда ошибка может возникнуть в результате неверной установки программного обеспечения , что может быть связано с проблемой, возникшей в процессе установки. Это может помешать вашей операционной системе связать ваш файл NES с правильным прикладным программным средством , оказывая влияние на так называемые «ассоциации расширений файлов» .

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


Совет: Попробуйте обновить Jnes до последней версии, чтобы убедиться, что установлены последние исправления и обновления.


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


Осторожно: Поврежденный файл может повлечь за собой возникновение сопутствующего ущерба предыдущей или уже существующей вредоносной программы на вашем ПК, поэтому очень важно, чтобы на вашем компьютере постоянно работал обновленный антивирус.


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

Эта проблема обычно связана с типами мультимедийных файлов , которые зависят от успешного открытия аппаратного обеспечения внутри компьютера, например, звуковой карты или видеокарты . Например, если вы пытаетесь открыть аудиофайл, но не можете его открыть, вам может потребоваться обновить драйверы звуковой карты .


Совет: Если при попытке открыть файл NES вы получаете сообщение об ошибке, связанной с.SYS file , проблема, вероятно, может быть связана с поврежденными или устаревшими драйверами устройств , которые необходимо обновить. Данный процесс можно облегчить посредством использования программного обеспечения для обновления драйверов, такого как DriverDoc .


Если шаги не решили проблему , и у вас все еще возникают проблемы с открытием файлов NES, это может быть связано с отсутствием доступных системных ресурсов . Для некоторых версий файлов NES могут потребоваться значительный объем ресурсов (например, память/ОЗУ, вычислительная мощность) для надлежащего открытия на вашем компьютере. Такая проблема встречается достаточно часто, если вы используете достаточно старое компьютерное аппаратное обеспечение и одновременно гораздо более новую операционную систему.

Такая проблема может возникнуть, когда компьютеру трудно справиться с заданием, так как операционная система (и другие службы, работающие в фоновом режиме) могут потреблять слишком много ресурсов для открытия файла NES . Попробуйте закрыть все приложения на вашем ПК, прежде чем открывать Nintendo (NES) ROM File. Освободив все доступные ресурсы на вашем компьютере вы обеспечите налучшие условия для попытки открыть файл NES.


Если вы выполнили все описанные выше шаги , а ваш файл NES по-прежнему не открывается, может потребоваться выполнить обновление оборудования . В большинстве случаев, даже при использовании старых версий оборудования, вычислительная мощность может по-прежнему быть более чем достаточной для большинства пользовательских приложений (если вы не выполняете много ресурсоемкой работы процессора, такой как 3D-рендеринг, финансовое/научное моделирование или интенсивная мультимедийная работа). Таким образом, вполне вероятно, что вашему компьютеру не хватает необходимого объема памяти (чаще называемой «ОЗУ», или оперативной памятью) для выполнения задачи открытия файла.

Файл NES поврежден

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

Расширение файла NES не связано с соответствующим приложением

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

Запись, касающаяся файла NES в "Реестре Системы Windows" удалена либо повреждена
Файл NES инфицирован вирусом

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

Вы нашли для себя подходящую игру, в которую хотели бы вспомнить и поиграть. Вы скачали её и теперь у вас возник вопрос: как играть игры денди на компьютере ?

Все денди игры существуют в таком формате как: NES. Этот формат просто так не открыть. Для открытия формата NES нам понадобиться эмуляторы денди игр.

Эмуляторов денди существует очень много, но удобных и нормальных всего лишь несколько.

Ниже перечислены эмуляторы денди, которые можно скачать сразу нажав на ссылку.

Для себя я отобрал два эмулятора, которыми я пользуюсь.

Первый это VirtuaNES 0.97e, который я использую почти для всех игр.

И второй Nestopia 1.40, который я пользуюсь для открытия многоигровок.

На примере эмулятора VirtuaNES 0.97e, я сейчас объясню: как играть игры денди на компьютере?

Сначала скачайте его себе на компьютер:

Потом разархивируйте архив и откройте разархивированную папку VirtuaNES.

Затем откройте файл "VirtuaNES.exe".

Открыв мы увидим черный экран и вверху надписи "File(F)" и т.п.. Это и есть эмулятор.

Шаг 1. Открытие игры.

Для того чтобы открыть игру нажмите сверху надпись "File(F)" и выберете "Open(O)". Или просто нажмите сочетание клавиш "Ctrl+O".

Перед нами появиться окошко "Open Rom file". Здесь указываем путь / выбираем саму денди игру, которую хотим открыть.

И нажимаем кнопку "Открыть".

При открытии некоторых игр будет выходить окошко, в котором написано:
"Because a NES header is illegal, there can be the thing that does not work normally. Do execute?".

При появлении такого окошка нажимаем кнопку "Да".

Все игра денди открыта. Уже можно играть.

Шаг 2. Настройка управления

Уже можно играть, но как? Мы же незнаем клавиш управления. Давайте настроим их.

Для настройки управления нажимаем сверху "Option(C)" и выбираем "Controller(C)".

Для настройки управления первого игрока, у вас должна быть открыта вкладка "Controller1".

Для второго игрока вкладка "Controller2".

Во вкладке первого игрока у вас должно быть выбрано в двух столбиках "10FPS".

Для себя я поставил клавиши управления, которые показаны на скриншоте ниже. Такая настройка управления достаточно удобна.

Для второго игрока настраиваем также, только клавиши управления другие.

Шаг 3. Открытие файла сразу и всегда

Для того чтобы денди игра открывалась сразу при двойном щелчке, то есть скачали с нашего сайта открыли и можно уже играть.

Необходимо открыть игру формата nes, затем выбрать "Выбор программы из списка вручную" и нажимаем "OK".

Ставим галочку около надписи "Использовать ее для всех файлов такого типа" и нажимаем "ОК".

Все теперь вы можете запускать все скачавшие игры с нашего сайта сразу.

Вам не нужно будет открывать эмулятор и нажимать "File(F)" и т.д.. Нужно будет просто открыть игру.

Если у вас не высветились на мониторе таки надписи, то вам нужно навести курсор на игру и нажать правую кнопку мыши.

Потом нажать "Открыть с помощью" и "Выбрать программу". Затем нажимаем "Обзор".

Выбираем эмулятор и ставим галочку возле предложения "Использовать ее для всех файлов такого типа".

Нажимаем "OK" и смело можем играть.

Для паузы игры нужно нажать пробел, а для продолжения игры клавишу P.

При постоянном нажатии пробела игра идет в режиме замедления.

Если при прохождении игры вам нужно закрыть её, а потом, когда появиться свободное время для игры продолжить игру с того же момента. Нужно нажать клавишу S для сохранения и L для продолжения игры.