Рубрика «обратная разработка» - 5

image

В середине 1980-х Nintendo Entertainment System (NES) была обязательной к покупке консолью. Лучший звук, лучшая графика и лучшие игры среди всех консолей того времени — приставка расширяла границы возможного. До сих пор такие проекты, как Super Mario Bros., The Legend of Zelda и Metroid считаются одними из лучших игр всех времён.

Прошло более 30 лет после выпуска NES, а классические игры чувствуют себя прекрасно, чего нельзя сказать о железе, на котором они работали. Имея разрешение всего 256x240, консоль NES не могла предоставить играм достаточно пространства. Тем не менее, бесстрашным разработчикам удалось уместить в играх NES потрясающие, незабываемые миры: лабиринтоподобные подземелья The Legend of Zelda, обширные пространства планеты в Metroid, яркие уровни Super Mario Bros.. Однако из-за аппаратных ограничений NES игроки никогда не могли выйти за пределы разрешения 256x240…

До недавнего времени.

Представляю вашему вниманию проект wideNES — новый способ сыграть в классику NES!
Читать полностью »

Обзор и устройство современных счётчиков электроэнергии - 1

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

image

Первая часть (анализ кода) находится здесь: https://habr.com/post/420725/.

Алгоритм

Описание

Алгоритм непрерывно выполняет следующие шаги:

  1. Ждёт, пока не создастся новое тетримино.
  2. Проверяет тип нового созданного тетримино, тип следующего тетримино (фигура в поле предпросмотра) и содержимое игрового поля.
  3. Исследует все возможные способы добавления двух тетримино на игровое поле и оценивает каждую вероятность.
  4. Перемещает новое созданное тетримино, чтобы оно совпадало с местом наилучшенней обнаруженной вероятности.

Каждый из этих этапов подробно описан ниже.

Поиск блокировки

Рассмотрим упрощённую версию Tetris, в которой фигуры не падают автоматически. Единственный способ спустить фигуру вниз — это мягкий спуск. Убрав из игры тайминги, мы можем полностью описать состояние активного тетримино его позицией и ориентацией. Фигура имеет известное место изначального создания, а для преобразования из одного состояния в другое используются следующие операции:

  • Перемещение на один шаг вниз
  • Перемещение на один шаг влево
  • Перемещение на один шаг вправо
  • Поворот на один шаг против часовой стрелки
  • Поворот на один шаг по часовой стрелке

Читать полностью »

В этой статье я исследую обманчиво простые механики Nintendo Tetris, а во второй части расскажу, как создал ИИ, эксплуатирующий эти механики.

Как я научил ИИ играть в Tetris для NES. Часть 1: анализ кода игры - 1

Попробуйте сами

О проекте

Для тех, кому не хватает упорства, терпения и времени, необходимых для освоения Nintendo Tetris, я создал ИИ, способный играть самостоятельно. Вы наконец-то сможете добраться до уровня 30 и даже дальше. Вы увидите, как получить максимальное количество очков и понаблюдаете за бесконечным изменением счётчиков рядов, уровней и статистики. Узнаете, какие цвета появляются на уровнях, выше которых не мог забраться человек. Посмотрите, насколько далеко можно зайти.
Читать полностью »

image

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

В дополнение к играм NES/Famicom, которые можно получить внутри игры, можно загружать новые игры NES с карты памяти.

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

Введение — объекты консоли NES

Обычные игры для NES, которые можно получить в Animal Crossing, представляют собой отдельные элементы мебели в виде консоли NES с лежащим на ней картриджем.

Расположив этот объект в своём доме и взаимодействуя с ним, можно запустить эту единственную игру. На рисунке ниже показаны Excitebike и Golf.

Реверс-инжиниринг эмулятора NES в игре для GameCube - 2

Читать полностью »

Извлекаем уровни из Super Mario Bros с помощью Python - 1

Введение

Для нового проекта мне понадобилось извлечь данные уровней из классической видеоигры 1985 года Super Mario Bros (SMB). Если конкретнее, то я хотел извлечь фоновую графику каждого уровня игры без интерфейса, подвижных спрайтов и т.п.

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

На первом этапе проекта мы изучим язык ассемблера 6502 и написанный на Python эмулятор. Полный исходный код выложен здесь.
Читать полностью »

Using the code on a real GameCube

Прошлым летом я приступил к реверс-инжинирингу игры Animal Crossing для GameCube. Я хотел исследовать возможность создания модов для этой игры. Кроме того, мне хотелось задокументировать процесс, чтобы создать туториалы для людей, заинтересованных в хакинге ROM-ов и обратной разработке. В этом посте я расскажу о отладочных функциях разработчика, которые остались в игре, а также поделюсь тем, как я обнаружил чит-комбо, с помощью которых их можно разблокировать.
Читать полностью »

Сегодня эксперт Positive Technologies Дмитрий Скляров на конференции Black Hat в Лондоне расскажет о том, как устроена файловая система на которой располагается часть Intel CSME / ME версий 11.x и некоторые файлы для этой системы. Мы представляем вашему вниманию его статью о восстановлении таблиц Хаффмана в Intel ME 11.x.

Восстановление таблиц Хаффмана в Intel ME 11.x - 1

Как известно, многие модули Intel ME 11.x хранятся во Flash-памяти в упакованном виде, и для сжатия применяются два алгоритма — LZMA и Huffman Encoding. Для LZMА существует публичная реализация, которую можно использовать для распаковки, но для Huffman все сложнее. Распаковщик Huffman Encoding в ME реализован на аппаратном уровне, и построение эквивалентного программного кода представляет собой сложную и нестандартную задачу.Читать полностью »

image

Введение

«В моё время игры были лучше. Они были интереснее, потому что геймплей считался более важным, чем графика».

— Геймеры, рождённые в любом десятилетии

Каким бы ни было «ваше время», думаю, вы в какой-то степени согласны с этим мнением. Для меня это был период с середины 80-х до середины 90-х, когда я проводил бесчисленные часы за Sir Fred, Atic Atac, Airborne Ranger, Monkey Island, Twilight: 2000, Stunts, Gunship 2000, Twinsen’s Adventure, Dark Sun, Challenge for Ancient Empires, серией the X-Wing и очень многими другими играми.

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

Сыграть в remastered-версию. Некоторые игры настолько потрясающи и собрали настолько преданную базу фанатов, что выпускается официальное «новое издание». Это точно такая же игра, но с современной графикой. Отличным примером таких игр может быть замечательная Monkey Island Special Edition.

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

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

В начале 90-х на переднем крае прогресса PC-гейминга находилась одна компания: Origin Systems. Её слоганом был «Мы создаём миры» и, чёрт возьми, они ему соответствовали: серии Ultima, Crusader и Wing Commander потрясли воображение игроков.

На создание одной из игр ушло четыре года и больше миллиона человеко-часов: Strike Commander. Знаменитый лётный симулятор имел собственный 3D-движок под названием RealSpace, в котором впервые появились технологии, сегодня воспринимаемые как должное: наложение текстур, затенение по Гуро, изменение уровня детализации и дизеринг цветов.

Мой старой мечтой было поиграть в неё в шлеме виртуальной реальности. Благодаря Oculus Rift эта фантазия стала ещё на один шаг ближе к реальности.

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

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

Реверс-инжиниринг игры Strike Commander - 1

вот это:

Реверс-инжиниринг игры Strike Commander - 2

… и, возможно, вдохновить кого-нибудь присоединиться к моему приключению.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js