Открыть файл nes. Что такое расширение файла 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, формат уровней которой интересен вам, возможно, я исследую и её тоже.

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

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

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

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

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

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

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

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

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

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

У вас есть проблема с открытием.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. Этот формат просто так не открыть. Для открытия формата 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 для продолжения игры.