Pull to refresh
104
0
Send message

Удалённое управление эмулятором Fceux с помощью Python

Reading time8 min
Views5.2K
В статье я опишу, как сделать эмулятор NES управляемым удалённо, и сервер для удалённой отправки команд на него.



Зачем это нужно?


Некоторые эмуляторы различных игровых консолей, в том числе и Fceux, позволяют писать и запускать пользовательские скрипты на Lua. Но Lua – плохой язык для написания серьёзных программ. Это скорее язык для вызова функций, написанных на Си. Авторы эмуляторов используют его только из-за легковесности и простоты встраивания. Точная эмуляция требует много ресурсов процессора, и ранее скорость эмуляции была одной из главных целей авторов, а о возможности скриптования действий если и вспоминали, то далеко не в первую очередь.

Сейчас мощности среднего процессора с головой хватает для эмуляции NES, почему бы тогда не использовать в эмуляторах мощные скриптовые языки вроде Python или JavaScript?

К сожалению, ни в одном из популярных эмуляторов NES нет возможности использовать эти или другие языки. Я обнаружил только малоизвестный проект Nintaco, который также основан на ядре Fceux, зачем-то переписанном на Java. Тогда я решил добавить возможность написания скриптов на Python для управления эмулятором сам.

Мой результат – это Proof-of-Concept возможности управления эмулятором, он не претендует на скорость или надёжность, но он работает. Я делал его для себя, но так как вопрос о том, как управлять эмулятором с помощью скриптов, встречается достаточно часто, то я выложил исходники на гитхаб.
Total votes 15: ↑14 and ↓1+13
Comments0

Устройство спецэффектов для игр под NES. Часть 2

Reading time9 min
Views11K
В этой статье вас ждёт продолжение описания устройства спецэффектов для игр под NES (первая часть здесь). На этот раз будет меньше теории и больше картинок-примеров.


Мы рассмотрим группы эффектов, созданные с помощью переключения позиции скролла видеопроцессора, а также пару эффектов, полученных переключением состояния видеопроцессора.
Total votes 45: ↑44 and ↓1+43
Comments21

Устройство спецэффектов для игр под NES. Часть 1

Reading time19 min
Views14K
Существует несколько серий статей про программирование под NES, одна из них уже даже переведена на русский язык на Хабре. Однако ни одна из них не заходит дальше обзора базовых возможностей консоли – рассматривается общая архитектура консоли, основы ассемблера, вкратце рассказывается, как выводить спрайты на экран, упоминается что-то о музыке и мапперах, и цикл заканчивается.

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

Поэтому перед тем, как запрограммировать что-нибудь, предстоит разобраться с тем, как устроены те или иные эффекты для NES, и статья будет посвящена тому, как это сделать. Существует множество статей из разряда «Игры, выжавшие из NES максимум», попробуем разобраться в том, как сделаны все основные эффекты в этих играх, а также создадим инструменты, которыми можно найти другие игры, не менее технологичные по эффектам.
Total votes 45: ↑45 and ↓0+45
Comments14

Использование инструментов исследования NES-игр на примере разбора формата компрессии игры Felix The Cat

Reading time9 min
Views7.2K
В этой статье я расскажу, как использовать описанные в прошлой статье инструменты для исследования игры Felix The Cat для NES. Моя первоначальная цель была, как обычно, разобрать формат уровней игры и добавить её в свой универсальный редактор уровней CadEditor, однако в ходе изучения игры обнаружилось, что описание уровней сжато (это редкость для NES-игр!), поэтому я также разобрал формат компрессии данных, и написал компрессор, позволяющий сжимать отредактированные уровни так же, как это делали разработчики игры.


Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments5

Создание инструментов для исследования NES-игр

Reading time9 min
Views16K
Я решил продолжить серию публикаций про внутреннее устройство NES-игр, на этот раз я расскажу об используемых мной инструментах для исследований.

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

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


Total votes 43: ↑42 and ↓1+41
Comments9

Разработка игры с использованием пластилиновой анимации

Reading time7 min
Views17K
В конце первой части статьи описывались общие методы съёмки пластилиновой анимации, в этой части я расскажу об особенностях съёмки и обработки конкретно для использования в игре и создании игры с использованием созданной анимации.


Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments16

Создание пластилиновой анимации для использования в мобильной игре

Reading time8 min
Views41K
В статье рассказывается о том, как сделать графику для компьютерной игры, используя пластилин или глину, и что для этого понадобится. Предполагается разбить статью на две части.

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

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


Читать дальше →
Total votes 66: ↑64 and ↓2+62
Comments21

Устройство игрового движка для NES на примере игр «Capcom»

Reading time11 min
Views33K
В моей третьей статье про NES-игры я покажу техники, используемые для создания игровых движков, а именно реализацию скроллинга экрана, переключение банков памяти, организацию списка объектов, устройство системы анимаций персонажей, функции обновления игровых объектов (и обработку столкновений), устройство главной карты. Чтобы не быть голословным в описаниях, я буду приводить дизассемблированный код из конкретных игр (любимый всем «Darkwing Duck», с отсылками к «Chip & Dale» и «Duck Tales»), без него в этой статье не обойтись. В качестве примера рассматривается движок от «Capcom», на модификациях которого работает как минимум пара десятков игр.

Некоторые из рассматриваемых тем не связаны между собой, поэтому статья будет разбита на несколько разделов. Также, из-за обширности, материала хватило бы на небольшую книгу, поэтому иногда я буду давать ссылки на статьи для желающих разобраться в деталях, а описывать только общие вещи, касающие архитектуры движков.
Читать дальше →
Total votes 74: ↑74 and ↓0+74
Comments6

Исследование формата карты уровней NES-игры «Jackal»

Reading time17 min
Views13K
В статье будет описан нестандартный способ поиска данных об уровнях в NES-играх — с помощью последовательного изменения всех данных в образе и исследования последствий («коррапт» в терминах ромхакеров). Для примера я покажу, как найти данные об уровнях в игре «Jackal» для NES и добавить один из её уровней в редактор CadEditor. Данный способ позволяет исследовать любую игру с блочной структурой уровней (почти любую игру на NES), без знания ассемблера X8502, требуются только начальные навыки работы со скриптовыми языками (Lua и Python).
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments7

Устройство уровней в NES-играх

Reading time8 min
Views42K
В этой статье я попробую рассказать о способе хранения уровней в ROM-памяти картриджей для приставки NES.
Я опишу все основные способы и подробно остановлюсь на наиболее часто используемом (из нескольких десятков исследованных мной игр он встречался практически в каждой).

Данный способ я назвал «блочным» (оговорюсь, что многие термины в статье были придуманы мной, так как материалов на данную тему на русском нет; после исследования нескольких игр я занялся изучением англоязычных материалов и документации к редакторам игр для старых платформ, тогда уже нашлись некоторые аналогии, в таких случаях буду приводить свои термины с объяснением их значения и их английские версии). В качестве примеров я буду приводить уровни из игры «Darkwing Duck», а также других игр компании «Capcom», разобранных мной несколько лет назад.

Я постараюсь пропустить описание использования дизассемблера и техническую часть исследования (если будет интерес, можно сделать на эту тему отдельную статью), а остановлюсь на описании, как именно разработчики хранили данные. Зная, что именно искать, найти это внутри образа ROM станет намного проще. Бонусом я покажу готовый редактор уровней и несколько созданных на нём хаков классических NES-игр.
Читать дальше →
Total votes 94: ↑94 and ↓0+94
Comments35

Information

Rating
Does not participate
Date of birth
Registered
Activity