Создание инструментов для исследования NES-игр. Что такое расширение файла NES? Мой компьютер не показывает расширений файлов, что сделать

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

Jnes – один из самых простых эмуляторов игровой приставки Dandy, отличающийся поддержкой большинства игр для этой приставки, а также рядом дополнительных возможностей. Эмулятор Jnes поддерживает игру по сети, что редко встречается у других эмуляторов. Это даёт возможность насладиться игрой вам и вашему другу, который будет играть на условном втором джойстике. Также, программа Jnes поддерживает эмуляцию светового пистолета. Для его имитации используется обычная компьютерная мышь. Кроме того, для работы программы Jnes не нужно устанавливать каких-либо дополнительных модулей или программ, да и сама утилиты состоит из одного файла...

Nestopia - один из самых мощных эмуляторов приставки Dendy, поддерживающий большое количество различных возможностей и отличающийся понятным пользовательским интерфейсом. На обилие возможностей указывает её размер. Другие эмуляторы для NES, как правило, имеют гораздо меньший размер. Программа позволяет вам сохранять игру в любом месте, для чего можно использовать горячие клавиши. Отличительная особенность здесь в том, что программа предоставляет большое количество ячеек под ваши сохранённые игры, что пригодится любому игроку. Кроме того поддерживает все форматы, в которых хранятся игры для данной приставки, причем речь идёт да...

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

И одновременно 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.

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

Например, на данном рисунке выделен файл 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 нам понадобиться эмуляторы денди игр.

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

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

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

Первый это 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 для продолжения игры.