Рубрика «Nintendo Entertainment System»

Что я понял о праве на ремонт, восстанавливая 30-летнюю NES - 1

В конце 1980-х кто-то купил в настоящем, не электронном, магазине Nintendo Entertainment System (NES), принёс её домой и, предположительно, играл на ней неизвестное количество лет. За последовавшие десятилетия консоль с серийным номером N12180601 сильно пострадала, в конечном итоге оказавшись на eBay в состоянии, которое можно описать только как «мусор». Продавец, находящийся в Англтоне, штат Техас, попросил скромную сумму в 11,99 доллара за повреждённую и неработающую систему, у которой к тому же отсутствовало множество деталей.

Я купил её.
Читать полностью »

Стек TypeScript, Сanvas и веб-аудио позволяет эмулировать компьютерные системы с использованием веб-технологий. В докладе я на примере приставки NES рассказал, как устроена архитектура компьютеров — процессор, программа, периферийные устройства, отображение I/O на память.

Доклад можно разделить на три части:

  1. как устроен процессор 6502 и как его эмулировать, используя JavaScript,
  2. как работает устройство вывода графики и как игры хранят свои ресурсы,
  3. как синтезируется звук с использованием веб-аудио и как это параллелится на два потока с помощью аудиоворклета.

Я постарался дать советы по оптимизации. Всё же эмуляция — дело такое, при 60 FPS остаётся мало времени на выполнение кода.
Читать полностью »

image

Этот пост — о программе на Rust…

$ cargo install conway-nes

…выводящей двоичный файл NES…

$ conway-nes > life.nes

…в котором выполняется конвеевская игра «Жизнь»!

$ fceux life.nes    # fceux is a NES emulator

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

image

Выпущенная в 1983 году домашняя консоль Nintendo Entertainment System (NES) была дешёвой, но мощной машиной, достигшей феноменального успеха. При помощи блока обработки изображений (Picture Processing Unit, PPU) система могла создавать достаточно впечатляющую по тем временам графику, которая и сегодня в нужном контексте выглядит вполне неплохо. Самым важным аспектом была эффективность памяти — при создании графики приходилось обходиться как можно меньшим количеством байтов. Однако вместе с этим NES предоставила разработчикам мощные и простые в использовании функции, позволившие ей выделиться на фоне более старых домашних консолей. Поняв принципы создания графики NES, можно проникнуться техническим совершенством системы и осознать, насколько проще работать современным разработчикам игр.

Фоновая графика NES собиралась из четырёх отдельных компонентов, комбинация которых образовывала изображение, которое мы видим на экране. Каждый компонент отвечал за отдельный аспект; цвет, расположение, «сырая» пиксельная графика и т.д. Такая система может показаться излишне сложной и громоздкой, но в конечном итоге она намного эффективнее использовала память и позволяла создавать простые эффекты в малом объёме кода. Если вы хотите понимать графику NES, то ключевой информацией будут эти четыре компонента.

В этой статье подразумевается, что вы знакомы с компьютерной математикой, и в частности с тем, что 8 бит = 1 байт, а 8 бит могут обозначать 256 значений. Также необходимо понимание того, как работает шестнадцатеричная запись. Но даже без этих технических знаний статья может показаться интересной.
Читать полностью »

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 и даже дальше. Вы увидите, как получить максимальное количество очков и понаблюдаете за бесконечным изменением счётчиков рядов, уровней и статистики. Узнаете, какие цвета появляются на уровнях, выше которых не мог забраться человек. Посмотрите, насколько далеко можно зайти.
Читать полностью »

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

Введение

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

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

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

Не просто ностальгия: самодельные игры для NES продолжают выпускаться - 1

Моё детство пришлось на эпоху Nintendo Entertainment System, и я всегда хотел создать собственную игру для NES. Я записывал идеи в блокнотах, чертил уровни на миллиметровке и тратил кучу времени, сочиняя MIDI-саундтреки для несуществующих игр. Все эти идеи оставались погребёнными в прошлом до 2018 года, когда я увидел документальный фильм Джо Гранато The New 8-bit Heroes о его одиссее по созданию игры своей детской мечты. Сегодня, после успешного сбора средств на его ПО NESMaker в Kickstarter, этот проект может упростить процесс создания собственных игр для NES. Однако Джо был не первым, самодельные (homebrew) игры имеют длинную историю. Сегодня мы исследуем этот уголок истории NES и расскажем о создании игр для NES на протяжении 20 лет после завершения официальной коммерческой жизни системы.
Читать полностью »

Завершающая часть цикла. В этой главе рассмотрим работу с маппером MMC3 на примерах
<<< предыдущая
image
Источник

Раньше мы не использовали переключение банков памяти, но теперь настало время освоить маппер MMC3. Без маппера можно использовать 32 килобайта PRG ROM для кода и 8 килобайт CHR ROM для графики. Маппер позволяет обойти этот барьер.

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


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