Рубрика «Nes» - 5

image

Donkey Kong — это, вероятно, один из величайших аутсайдеров игрового мира. Он нарушил все правила, потому что его создатель, теперь уже легендарный Сигэру Миямото, этих правил не знал. Он не только стал началом одного из ярчайших умов отрасли видеоигр, но и зародил жанр «беги и прыгай», сделав Nintendo одним из старейших столпов индустрии.

Тридцать с лишним лет спустя Donkey Kong по-прежнему остаётся одним из наиболее узнаваемых персонажей, но многое из его истории всё ещё не рассказано. В большинстве рассказов о его разработке Миямото как будто является единственным творцом; его эскизы, идеи и спрайты будто бы воплотились в жизнь благодаря какому-то волшебству или скромным труженикам, не стоящим даже упоминания. На протяжении многих лет вопрос о том, кто же разработал Donkey Kong, оставался неотвеченным, потому что редко задавался.

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

Со скоростью более 1 млрд кадров в секунду, это, возможно, самый быстрый из 8-битных консольных кластеров в мире.

Суперкомпьютер на основе Game Boy - 1
Распределённый тетрис (1989)

Как построить такой компьютер?

Рецепт

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

Зачем кому-то может понадобиться такой компьютер?

Короче говоря: чтобы двигаться по направлению к усилению искусственного интеллекта.
Читать полностью »

image

Часть 1. Пароли

В игре для NES «Mike Tyson’s Punch-Out» используется система паролей, позволяющая игрокам продолжить игру с определённой точки. Каждый пароль состоит из 10 цифр, которые могут иметь значение от 0 до 9. Игра может принимать два типа паролей, которые я называю «обычными» и «особыми» паролями. Особые пароли — это определённые комбинации из 10 цифр, на ввод которых игра реагирует уникальным образом. Полный список особых паролей выглядит так:

  • 075 541 6113 – телефонный сигнал «занято» 1
  • 800 422 2602 – телефонный сигнал «занято» 2
  • 206 882 2040 – телефонный сигнал «занято» 3
  • 135 792 4680 – игра в скрытый турнир: «Another World Circuit» (чтобы пароль был принят, необходимо удерживать кнопку Select и нажать A + B)
  • 106 113 0120 – показ титров (чтобы пароль был принят, необходимо удерживать кнопку Select и нажать A + B)
  • 007 373 5963 – переносит игрока к бою с Майком Тайсоном

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

  • Количество побед в карьере
  • Количество проигрышей в карьере
  • Количество побед нокаутом
  • Следующий противник

Кодирование паролей

В качестве примера для изучения генерации паролей мы используем игру с 24 победами, 1 проигрышем, 19 нокаутом и начинающуюся в мировом турнире с боя против Super Macho Man.
Читать полностью »

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

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

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

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

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

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

Мой результат – это Proof-of-Concept возможности управления эмулятором, он не претендует на скорость или надёжность, но он работает. Я делал его для себя, но так как вопрос о том, как управлять эмулятором с помощью скриптов, встречается достаточно часто, то я выложил исходники на гитхаб.
Читать полностью »

Как «цифровые археологи» обнаружили утерянную версию SimCity для NES и восстановили ее - 1

Игра SimCity является даже не то, что классикой игрового мира, а одним из его столпов. Успех этого симулятора градостроительства никому не удалось повторить, хотя старались многие. Но речь сейчас не о самой игре, а об одной из ее ранних версий, прототипе, который разрабатывался для Nintendo NES. Нет, здесь нет опечатки, именно для NES, а не SNES.

Выход SimCity на Super Nintendo Entertainment System позволил игре приобрести огромную аудиторию — геймеров, предпочитавших консоль любой другой игровой платформе. 8-битная версия была анонсирована примерно в то же время, что и 16-битная, ее возможности во многом повторяли возможности «старшей сестры». Кратко об игре рассказали на CES 1991 года, но затем планы компании изменились и 8-битная версия была отменена. При этом прототип SimCity для NES уже был создан и даже существовал в виде картриджа.
Читать полностью »

В этом руководстве я расскажу, как написать собственную виртуальную машину (VM), способную запускать программы на ассемблере, такие как 2048 (моего друга) или Roguelike (моя). Если вы умеете программировать, но хотите лучше понять, что происходит внутри компьютера и как работают языки программирования, то этот проект для вас. Написание собственной виртуальной машины может показаться немного страшным, но я обещаю, что тема удивительно простая и поучительная.

Окончательный код составляет около 250 строк на C. Достаточно знать лишь основы C или C++, такие как двоичная арифметика. Для сборки и запуска подходит любая Unix-система (включая macOS). Несколько API Unix используются для настройки ввода и отображения консоли, но они не являются существенными для основного кода. (Реализация поддержки Windows приветствуется).

Примечание: эта VM — грамотная программа. То есть вы прямо сейчас уже читаете её исходный код! Каждый фрагмент кода будет показан и подробно объяснён, так что можете быть уверены: ничего не упущено. Окончательный код создан сплетением блоков кода. Репозиторий проекта тут.

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

Что это

CastlevaniaBot — это плагин для эмулятора NES Nintaco, который играет в Castlevania. Если запустить его на экране заставки, то плагин пройдёт всю игру от начала до конца. Или же можно запустить его в любом месте игры, чтобы он прошёл её часть.

В этой статье я расскажу, как создал бота, способного пройти Castlevania, и как вы можете создать нечто подобное для любой игры на NES.
Читать полностью »

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!
Читать полностью »

image

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

Алгоритм

Описание

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

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

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

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

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

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

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

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

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

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

О проекте

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


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