Рубрика «Nes»

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

Game Genie

История о трёх картриджах - 1Game Genie был, вероятно, одним из первых устройств для читерства в видеоиграх, с которым сталкивался обычный игрок на домашней консоли. Это хитрое устройство располагалось между Nintendo Entertainment System (NES) и стандартными игровыми картриджами, и давало игрокам возможность настраивать уровни сложности, перемещаться вперёд по игре или просто экспериментировать.

Для детей в 90-х Game Genie казался настоящим волшебством. Сначала вы вставляли один из игровых картриджей в Game Genie. Затем, не без усилий (потому что вставлялся он довольно трудно), вы подключали конструкцию из Game Genie и игры к консоли и включали её. Но вместо обычного запуска игры появлялся загадочный экран, просивший вводить бессмысленные пароли1. Каждый пароль влиял на игру по-своему, и ни в одной игре пароли не повторялись.

Так как же Game Genie («игровой джинн») выполнял желания игроков? Версии Game Genie существовали для NES, Super NES и Game Boy, а также для Sega Genesis и Game Gear. Они перехватывали обмен данными между консолью и игровым картриджем. Внутренняя работа игровой консоли управлялась битами и байтами, поэтому возможность перезаписи данных, передаваемых из картриджа в консоль, позволяла Game Genie выполнять невероятно мощные трюки.
Читать полностью »

Раз уж прошлая моя статья, к моему большому удивлению, вас заинтересовала. Я решил дополнить её результат, хакнутую версию игры "Contra (J) [T+Rus_Chronix]", небольшим функционалом, заодно показав "code injection" на NES. В этот раз я сделаю так, чтоб игроки начинали игру с прокачанным Spreadgun, для его получения в игре нужно подобрать иконку "S", а за ней "R".

История взлома классической игры на Dendy или Contra со спрэдганом в начале - 1

Все заинтересовавшиеся welcome под кат.Читать полностью »

Задержка ввода на ретро-консолях и эмуляторах - 1

TL;DR В статье описывается известная проблема задержки ввода (input lag), которая проявляется при попытках играть в старые игры на современном железе: эмуляторах ретро-консолей, bluetooth-геймпадах и т.д. Иногда задержки настолько большие, что играть становится невозможно. Я опишу свой путь поиска приемлемой конфигурации для запуска моих любых игр.

С волной популярности одноплатных компьютеров RaspberryPi, OrangePi многие знакомые накупили себе их пачками. Не придумав что с ними делать, они начали лепить из них ретро-консоли на базе эмулятора RetroArch и дистрибутива Recallbox. Когда я попробовал поиграть на этом в свои любимые игры детства я был удивлен: "Как я мог в это играть?". Физика игр казалась какой-то неправильной, ощущение отвратительное. Спустя время мне рассказали, что все дело в задержке ввода, которая на первый взгляд не ощущается как задержка, а именно как другая физика.

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

Неизданную игру для NES обнаружили спустя 30 лет - 1

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

Так произошло с одной из игр для NES. Игра, представляющая собой симулятор рестлинга, увидела свет лишь в качестве прототипа. Она никогда не была издана. Всплыла игра всего несколько дней назад. Как оказалось, сделана она в 1989 году японским разработчиком Thinking Rabbit (автор Sokoban), издателем же должна была стать японская компания Seta.
Читать полностью »

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 — грамотная программа. То есть вы прямо сейчас уже читаете её исходный код! Каждый фрагмент кода будет показан и подробно объяснён, так что можете быть уверены: ничего не упущено. Окончательный код создан сплетением блоков кода. Репозиторий проекта тут.

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