Программирование для Famicom/NES/Денди в IDE Nesicide на ассемблере ca65 (часть 2)

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

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

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

Программирование для Famicom/NES/Денди в IDE Nesicide на ассемблере ca65 (часть 1)

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

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


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

Подводные камни скроллинга на Famicom/NES/Денди

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

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

Срезаем углы!

Положу сюда перевод моей же статьи которую я написал для блога ребятам из Mega Cat studios.
Я не знаю как правильно назвать этот приём ни по-русски, ни по-английски, поэтому я написал первое что пришло в голову: «Smooth jump feature».
Америку, конечно, этой статьёй я не открыл, наш блог читают в основном искушенные геймдевом люди, но на правах блога почему бы и нет, более того, в тематических чатах телеграма я наблюдал что люди, неравнодушные геймдевом, задаются в том числе и этим вопросом, так что вылезу из ридонли и пографоманю немного.

Начнем издалека, с обработки столкновений, или коллизий. Немудрено, что в процессе создания игры, программист должен позаботиться об этом, наверное, в первую очередь. Это необходимо для того, чтобы игровой персонаж как минимум «чувствовал под ногами землю».
Коллизии — необходимая штука в каждой игре. Если мы упраздним их в Super Mario bros, Марио не сможет разбивать эти замечательные кирпичные блоки, он просто будет пролетать сквозь них. Он не сможет даже бегать по земле, потому что без обработки коллизий провалится сквозь неё в адъ.
Если бы в игре Bomber Man не обрабатывались коллизии персонажа и его врагов, Бомбермен также проходил бы сквозь стены, и не мог бы прятаться за ними от врагов. Короче, коллизии — маст хев.

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

Переключение банков видеопамяти в Famicom/NES/Денди на примере игры Contra Force

Как я писал в статье про графическую архитектуру Famicom/NES/Денди возможности видеочипа консоли были ограничены сразу с нескольких сторон. Всё изображение обязательно состояло из четырёхцветных тайлов 8x8 пикселей и было всего два банка по 256 уникальных таких тайлов которые могли одновременно быть выведены на экран (при этом бОльшая часть изображения состояла из повторяющихся тайлов). Для игр первого поколения подобных Lode Runner или Bomberman двух этих банков видеоданных хватало на всю игру. Но с усложнением игр 512 уникальных тайлов на кадр резко перестало хватать и были изобретены мапперы переключающие банки на лету чтобы значительно увеличить разнообразие выводимого изображения.
Сегодня мы рассмотрим как переключались эти банки тайлов в первом уровне игры Contra Force чтобы увидеть как все эти технические ограничения с одной стороны обходились, а с другой влияли и в некоторых случаях даже формировали геймплей игр.

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

Обзор графической архитектуры Famicom/NES/Денди

Про Famicom/NES/Денди уже написано и рассказано очень много, включая те сведения, что я напишу ниже, включая на этом же самом сайте. Но раз уж у меня получился цикл статей про графику в разных консолях, то обойти вниманием денди из детства не представляю возможным. Так что повторим еще раз как устроена с точки зрения программиста денди…


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

Имитация двух задних фонов в Famicom/NES/Денди

Как я писал в предыдущей статье о VBlank/HBlank, видеочип в денди мог выводить только один задний фон состоящий из плиток тайлов 8x8 пикселей и единственной технической возможностью создать иллюзию нескольких скроллящихся независимо фонов была техника HBlank–отсечения, которая, однако, могла поделить картинку только на горизонтальные полоски. Невозможно было вывести два фона из которых один бы частично заслонял другой.
Однако некоторые из читателей могли бы вспомнить как минимум парочку контр–примеров.

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