Программирование для Famicom/NES/Денди в Nesicide+ca65: архитектура MOS 6502 (2)

Еще немного про сегменты

Если вы до этого программировали на каком-нибудь другом ассемблере для 8-биток, то возможно, что все эти заморочки с сегментами на первый взгляд могут показаться ненужными. Почему бы не использовать директиву .ORG и явно не указывать где находятся код и данные?

Читать дальше →

Программирование для Famicom/NES/Денди в Nesicide+ca65: введение (1)

Оглавление

2 — Архитектура MOS 6502...
3 — Модуль neslib...
4 — Задний фон с прокруткой...
5 — Спрайты...
6 — Ушибленный спрайт...
7 — Музыка и звуки...
8 — Маппер MMC3 — страницы...
9 — Маппер MMC3 — перехват HBlank...
10 — Маппер MMC3 — HBlank+скроллинг...

0. Предисловие

В этой серии статей я попытаюсь как можно быстрее ввести вас в программирование на ассемблере ca65 на 8-битной консоли Famicom/NES/Денди в среде программирования Nesicide.
Статьи не ставят своей целью учить кого либо программировать: вы уже должны быть программистом и понимать что такое программы, ассемблер и как работают процессоры. Многое я попытаюсь объяснить как можно более детально, но определенный багаж знаний и умений конечно надо будет иметь. В принципе в интернете немало переведённой литературы и про MOS 6502 и про Famicom/NES/Денди, поэтому особо даже не буду что-то рекомендовать.
Для первичного ознакомления с основами основ о том что из себя представляет обзорно для программмиста консоль могу отослать к своей же статье: /blog/868.html, хотя похожих статей вообще немало.
Огромная масса полезной информации находится на англоязычном сайте nesdev.com (бесценный источник и для этого моего цикла статьей!).
Если с английским туго, то могу еще отослать к обзору разных материалов от Shiru: hype.retroscene.org/blog/282.html
Начало положено этой статьёй, остальные будут дописываться по мере появления свободного времени, всячески приветствуются комментарии, замечания, корректировки и вопросы помогающие улучшить статьи и дополнить непонятные в них места.

Исходные коды к урокам на момент пока я пишу статьи можно скачать тут: yadi.sk/d/_THxg1gxuCCVNw


Читать дальше →

Разработка для Atari 2600 в браузере

Крайне интересный сайт для тех, кто хотел бы освоить программирование для Atari 2600. Содержит реализованную на HTML5 связку из эмулятора и интегрированного с ним ассемблера с хорошими отладочными возможностями, а также 36 примеров прекрасно документированного кода — начиная от простейшего, типа hello world, продолжая постепенным ростом сложности и освоением аппаратных средств платформы, и заканчивая довольно сложными этюдами, такими как классические трюки с выводом текста и 6-значных десятичных чисел (на 2600 очень трудно отображать текст) и отображением дороги в перспективной проекции, как в гоночных играх. Не обойдён вниманием и звук, поддержка которого также присутствует. В общем, всё, что нужно, чтобы начать писать собственные игры или демо.

Среди интересных возможностей — ассемблер умеет показывать время выполнения команд в тактах, что очень актуально для 2600, где вся работа с графикой напоминает по своей сути мультиколор или бордюрные эффекты на ZX Spectrum.

Напоминаю, что несмотря на близкую к предельной древность (1977 год) и крайнюю ограниченность технических средств (например, всего 128 байт ОЗУ и штатно максимум 4096 байт ПЗУ для программы), на платформе существует довольно активная сцена, создающая немало интересных продов. Прекрасный выбор для поклонников минимализма в поисках самых крупных и самых остроугольных пикселей.

Посетить незамедлительно!

NES - измерение времени выполнения кода

При разработке для ретро-платформ нередко возникает необходимость сделать оценку быстродействия разных частей программы — то, что в современной практике называется 'профилированием'. Например, после добавления новых возможностей в игру её логика перестала укладываться в один кадр, начались замедления, и требуется выяснить, на какой части кода нужно сосредоточить усилия по оптимизации в первую очередь. Конечно, для небольших фрагментов кода на ассемблере всегда можно (и нужно) посчитать время выполнения в тактах вручную, но на больших участках со сложной логикой, либо при написании программы на языке высокого уровня, этот подход не годится. Рассмотрим, какие способы решения этой задачи есть в арсенале современного разработчика для NES.


Читать дальше →

Разбор полётов: демо High Hopes на NES

За редкими исключениями, игровые приставки не завоевали сколько-нибудь заметной популярности в качестве демо-платформ. Эту участь разделяет и NES, оставаясь лишь изредка всплывающей в демо-конкурсах в категориях wild или oldschool экзотикой, а большинство работ для неё в основном примечательно самим выбором платформы. За многие годы существования сцены любительской разработки для NES, демо, в отличие от игр, было написано немного. На Pouet их перечислено всего десять. Наиболее высоко оценённым и популярным из них до сих пор заслуженно является High Hopes, занявшее на Assembly 2007 первое место в категории oldskool demo. На его примере сегодня мы разберём, какие особенности и хитрости применяются при реализации классических демо-эффектов на NES.




Читать дальше →

Карта памяти NES

Одна из первых вещей, которую приходится изучать при освоении низкоуровневого программирования для новой платформы — её карта памяти, то есть где в адресном пространстве находятся ОЗУ, ПЗУ, регистры устройств и тому подобное. Если простота устройства ZX Spectrum, которое можно описать одним предложением — 'нижние 16 килобайт ПЗУ, остальное ОЗУ, экран в начале ОЗУ, весь ввод и вывод через один порт' — позволяет не особо задумываться о самом существовании этого вопроса, то у многих других современных ему платформ дела обстоят несколько сложнее. В особенности это справедливо для NES, карту памяти которой, а также причины именно такой её организации, мы и рассмотрим в этой статье.


Читать дальше →

Hype NES Intro

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

ROM и исходник без единого комментария: shiru.untergrund.net/files/nes/hype.zip

  • avatar
  • [просмотров: 2913]
  • 9
  • +23