Pull to refresh
  • by relevance
  • by date
  • by rating

Разработка игр под NES на C. Главы 1-3. От введения до Hello World

Abnormal programming *Assembler *Game development *C *
Translation
Tutorial

Впервые я задумался о том, как разрабатывают игры под приставки где-то через 20 минут после того, как в самый первый раз увидел Turbo Pascal. На глаза иногда попадался Subor с клавиатурой, и появилась мысль: "Наверное можно набрать какую-то программу, а потом в нее поиграть". Но интерес быстро затух, потому что абсолютно никакой информации по этой теме тогда не было доступно. Следующий раз эта же идея всплыла, когда увидел вполне играбельные эмуляторы старых консолей. Тогда стало ясно, что вбивать листинг в саму консоль и необязательно. Где-то очень потом появился Хабр с благожелательной аудиторией для таких вещей. В какой-то момент даже начал собирать разрозненную инфу чтобы написать мануал самому, и вот сегодня наткнулся на готовый учебник, который явно надо перевести.


Разработка под старые консоли документирована вдоль и поперек, но именно по NES 99% информации относятся к разработке на Ассемблере. Меня почему-то зарубило, что надо освоить именно работу с С.


следующая >>>
image

Читать дальше →
Total votes 52: ↑52 and ↓0 +52
Views 30K
Comments 6

Разработка игр под NES на C. Главы 4-6. Рисуем персонажа

Abnormal programming *Assembler *Game development *C *
Translation
Tutorial

В этой части рассмотрим работу с графикой: фон и спрайты персонажей.
<<< предыдущая следующая >>>

image
Источник


Что такое V-blank?


PPU — графический процессор — может или отправлять сигнал в телевизор, или получать информацию от процессора, но не одновременно. Так что единственное время для пересылки это V-blank, период кадрового гасящего импульса.


90% времени PPU отправляет пиксели в видеовыход, строка за строкой слева направо и сверху вниз. Внизу экрана делается пауза, и все повторяется снова. Это происходит 60 раз в секунду. Пауза после отрисовки кадра и есть V-blank. Это весьма короткий промежуток времени. В него реально вложить обновление 2-4 столбцов фоновых тайлов и обновление спрайтов. Обновление фона особенно критично для игр с прокруткой.

Читать дальше →
Total votes 43: ↑43 and ↓0 +43
Views 15K
Comments 2

Разработка игр под NES на C. Главы 7-10. Работа с джойстиком. Коллизии спрайтов

Abnormal programming *Assembler *Game development *C *
Translation
Tutorial

Плавно движемся к написанию игры. В этой части описана работа с джойстиками и коллизиями спрайтов.


<<< предыдущая следующая >>>


image
Источник


Пользовательский ввод


Работа с джойстиками довольно простая. Нажатия кнопок первого джойстика читаются по адресу $4016, а второго — $4017. Достаточно считывать один раз за кадр, сразу после обновления PPU и установки прокрутки.

Читать дальше →
Total votes 20: ↑20 and ↓0 +20
Views 6.9K
Comments 0

Разработка игр под NES на C. Главы 11-13. Пишем и отлаживаем простой платформер

Abnormal programming *Assembler *Game development *C *
Translation
Tutorial

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


<<< предыдущая следующая >>>


image


Источник


Прокрутка


Регистр $2005 управляет прокруткой фона. Первая запись туда выставляет положение горизонтальной прокрутки, а вторая — вертикальной. Если неизвестно, какая прокрутка была выставлена, можно сбросить на горизонтальную чтением из регистра $2002.

Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 6.7K
Comments 0

Разработка игр под NES на C. Главы 14-16. Работа со звуком

Abnormal programming *Assembler *Game development *C *
Translation
Tutorial

В этой части базовая информация о работе со звуком. Звуковая подсистема NES весьма низкоуровневая, ее описание весьма запутано и использует специфическую терминологию, так что описание местами может быть не очень внятное.
<<< предыдущая следующая >>>
image
Источник


Начало работы со звуком


Обзор инструментов, которые представляет нам платформа NES. Впрочем, дальше мы уйдем на более высокий уровень и будем использовать библиотеку Famitracker.


Проще всего пощупать звуковые возможности консоли можно с помощью демки Sound Test, разработанной SnoBrow. Она совместима не со всеми эмуляторами, но FCEUX поддерживается.


Кнопка Селект переключает звуковые каналы, Старт включает их. Доступны 4 канала:
1 — меандр 1
2 — меандр 2
3 — треугольный сигнал
4 — шум

Total votes 19: ↑19 and ↓0 +19
Views 7.3K
Comments 4

Разработка игр под NES на C. Главы 17-21. Своя игра

Abnormal programming *Assembler *Game development *C *
Translation
Tutorial

В этой части соберем все вместе и сделаем простую скроллерную стрелялку на космическую тему: корабль летит и лазерами отстреливает врагов


<<< предыдущая следующая >>>


image
Источник


Планирование

Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Views 7.1K
Comments 1

Разработка игр под NES на C. Главы 22-23. Приложение 1 — мапперы и цифровой звук

Abnormal programming *Assembler *Game development *C *
Translation
Tutorial

Здесь будет информация, не вошедшая в основной цикл, но слишком ценная, чтобы ее игнорировать.


<<< предыдущая следующая >>>


image
Источник


Из нашего обсуждения почти полностью выпала тема мапперов — сопроцессоров в картридже. Если надо сделать игру размером больше 0x8000 байт, то стандартных возможностей консоли для этого не хватит. Маппер позволяет переключать банки памяти в игре, и cc65 умеет с этим работать. Самый популярный маппер — MMC3. Кроме переключения банков памяти, он имеет счетчик строк.

Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Views 5.1K
Comments 0

Разработка игр под NES на C. Глава 24. Приложение 2 — работа с банками памяти

Abnormal programming *Assembler *Game development *C *
Translation
Tutorial
Завершающая часть цикла. В этой главе рассмотрим работу с маппером MMC3 на примерах
<<< предыдущая

image
Источник

Раньше мы не использовали переключение банков памяти, но теперь настало время освоить маппер MMC3. Без маппера можно использовать 32 килобайта PRG ROM для кода и 8 килобайт CHR ROM для графики. Маппер позволяет обойти этот барьер.
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 4.8K
Comments 1

Самая редкая игра для NES выставлена на аукцион

E-commerce management *Games and game consoles

Её обладателем может стать любой желающий, готовый расстаться с 100 тыс. долларов


Stadium Events можно считать пробой контроллера Family Fun Fitness Control Mat компании Bandai. Сегодня подобное можно найти, к примеру, в автоматах Dance Dance Revolution.

На аукцион выставлена копия в лучшем состоянии — её даже не открывали, она всё ещё в заводской упаковке. Подлинность — 85 баллов из 100 по оценке Video Game Authority. На данный момент сумма замерла на отметке 99850 долларов. Это порядка 6 млн рублей по текущему курсу.

Редкость вызвана тем, что Nintendo купила Family Fun Fitness прямо в момент выхода игры. Копии были отозваны для ребрендинга, но несколько всё равно просочились. Из всех продуктов, которые появлялись на прилавке, это самая редкая игра для Nitendo Entertainment System, игровой приставки, известной в России своим клоном Dendy.

Но не стоит думать, что лот действительно уйдёт за 100 тысяч.
Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Views 18K
Comments 14

Netflix на NES: как он работает?

Working with video *Old hardware Games and game consoles

Провайдер потокового мультимедиа показал шуточное приложение для восьмибитной консоли




Netflix — это компания, которая предоставляет своим клиентам платную возможность стримить из Интернета фильмы и сериалы. Пользователи могут делать это либо с компьютера, либо с помощью приложения на множестве устройств: это консоли текущего и предыдущего поколений, смартфоны и планшеты, устройства для чтения электронных книг, «умные» телевизоры, различные приставки. В своём блоге компания показала, что приложение сервиса есть и для Nintendo Entertainment System (эта консоль хорошо известна на пространстве бывшего СССР своим клоном Dendy). Как же работает эта небольшая техническая шутка?
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Views 7.8K
Comments 5

Разбираем новую Nintendo Switch

Бандеролька corporate blog Gadgets Games and game consoles Cybersport
Старт продаж новых приставок Nintendo Switch оказался очень успешным. За первую неделю компании удалось продать больше 1,5 миллиона консолей. К концу марта производитель планирует преодолеть планку в 2 миллиона. С Nintendo Switch игровая реальность выходит на улицы: приставка умеет трансформироваться и трансформирует игру — с домашнего ТВ на экран консоли. Приставка, с которой можно продолжать игру в любом месте, имеет все шансы стать вашей постоянной спутницей. Бандеролька предлагает познакомиться с ней поближе

image
Total votes 14: ↑8 and ↓6 +2
Views 12K
Comments 25

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

Python *Game development *Reverse engineering *
Translation

Введение


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

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

На первом этапе проекта мы изучим язык ассемблера 6502 и написанный на Python эмулятор. Полный исходный код выложен здесь.
Читать дальше →
Total votes 28: ↑26 and ↓2 +24
Views 10K
Comments 1

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

Reverse engineering *Artificial Intelligence Games and game consoles
Translation
В этой статье я исследую обманчиво простые механики Nintendo Tetris, а во второй части расскажу, как создал ИИ, эксплуатирующий эти механики.


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


О проекте


Для тех, кому не хватает упорства, терпения и времени, необходимых для освоения Nintendo Tetris, я создал ИИ, способный играть самостоятельно. Вы наконец-то сможете добраться до уровня 30 и даже дальше. Вы увидите, как получить максимальное количество очков и понаблюдаете за бесконечным изменением счётчиков рядов, уровней и статистики. Узнаете, какие цвета появляются на уровнях, выше которых не мог забраться человек. Посмотрите, насколько далеко можно зайти.
Читать дальше →
Total votes 38: ↑37 and ↓1 +36
Views 10K
Comments 9

Как я научил ИИ играть в Tetris для NES. Часть 2: ИИ

Reverse engineering *Artificial Intelligence Games and game consoles
Translation
image

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

Алгоритм


Описание


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

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

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

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


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

  • Перемещение на один шаг вниз
  • Перемещение на один шаг влево
  • Перемещение на один шаг вправо
  • Поворот на один шаг против часовой стрелки
  • Поворот на один шаг по часовой стрелке
Total votes 29: ↑27 and ↓2 +25
Views 6K
Comments 3

Проект wideNES — выходим за границы экрана NES

Reverse engineering *Games and game consoles
Translation
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!
Читать дальше →
Total votes 90: ↑90 and ↓0 +90
Views 18K
Comments 15

Как была устроена графика NES

Game development *Old hardware Games and game consoles
Translation
image

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

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

В этой статье подразумевается, что вы знакомы с компьютерной математикой, и в частности с тем, что 8 бит = 1 байт, а 8 бит могут обозначать 256 значений. Также необходимо понимание того, как работает шестнадцатеричная запись. Но даже без этих технических знаний статья может показаться интересной.
Читать дальше →
Total votes 67: ↑67 and ↓0 +67
Views 17K
Comments 24

Пишем игру «Жизнь» для NES на Rust

Game development *Rust *Games and game consoles
Translation
image

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

$ cargo install conway-nes

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

$ conway-nes > life.nes

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

$ fceux life.nes    # fceux is a NES emulator

Запустив игру на эмуляторе, нажмите любую кнопку контроллера, чтобы начать заново с рандомизированного состояния.
Читать дальше →
Total votes 28: ↑28 and ↓0 +28
Views 5K
Comments 4

Исследователи восстановили утерянную игру для NES с 30-летних дискет

Game development *Reverse engineering *Games and game consoles
Translation
image

Привет, я основатель Video Game History Foundation Фрэнк Сифалди. Сегодня мы с Ричем Уайтхаусом расскажем вам историю о том, как восстановили и собрали заново Days of Thunder — невыпущенную, никем ранее не виденную игру, соавтором которой был Крис Оберт из Mindscape.

Ушедший от нас в 2012 году программист и дизайнер Крис Оберт (Chris Oberth) сделал долгую и разнообразную карьеру в индустрии видеоигр. Думаю, для большинства из нас главной игрой Криса Оберта была Anteater — аркадный проект, который он придумал и разработал во время работы в Stern (или, возможно, вы знаете клон этой игры под названием Ardy the Aardvark, который сам Крис написал для домашних компьютеров, или ещё один клон, Oil’s Well, созданный другими людьми). Для остальных такой игрой может быть Winter Games для Commodore 64 или, возможно, его последние проекты для аркадных автоматов наподобие Time Killers или World Class Bowling, которые он разрабатывал в Incredible Technologies; или же такими знаковыми играми для вас могли стать несколько проектов, которые он разработал на своём Apple II в конце 70-х и начале 80-х (как он сам любил хвастаться, его Apple II имел серийный номер 201).

В начале 2020 года с Video Game History Foundation связался друг семьи Оберта, попросив помочь разобраться с оставшимися после него материалами. В подвале его дома, где он часто работал, хранились годами нетронутые кучи старых компьютеров, резервных копий на CD-R, гибких дисков, записей, кассет, EPROM и данных на ленточных накопителях, копившиеся со времён его работы с Apple II в конце 70-х. Его семья согласилась временно передать нам эти архивы для разбора.
Total votes 35: ↑35 and ↓0 +35
Views 9K
Comments 14

Эмуляция NES/Famicom/Денди на веб-технологиях. Доклад Яндекса

Яндекс corporate blog Abnormal programming *Assembler *Game development *Games and game consoles
Стек TypeScript, Сanvas и веб-аудио позволяет эмулировать компьютерные системы с использованием веб-технологий. В докладе я на примере приставки NES рассказал, как устроена архитектура компьютеров — процессор, программа, периферийные устройства, отображение I/O на память.


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

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

Я постарался дать советы по оптимизации. Всё же эмуляция — дело такое, при 60 FPS остаётся мало времени на выполнение кода.
Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Views 5.7K
Comments 10

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

VDSina.ru corporate blog Gadgets Games and game consoles IT-companies
Translation


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

Я купил её.
Total votes 81: ↑58 and ↓23 +35
Views 80K
Comments 150
1