Музей Яндекса продолжает серию вебинаров о творчестве на ретрокомпьютерах (выпуск 2)



На прошлой неделе мы познакомили наших гостей с основами написания chiptune-музыки, запись первого вебинара можно посмотреть здесь.

Второй вебинар будет посвящен созданию пиксельной графики, его проведут Олег Сенин (bfox ) — программист, художник, музыкант на различных ретроплатформах, и Руслан Гроховецкий (ruguevara ) — программист и pixelart-художник на платформе ZX Spectrum, вернувшийся на неё не так давно.

Ждём всех 23 апреля в 19:00 по московскому времени. Участие бесплатное, но количество мест ограничено, пожалуйста, зарегистрируйтесь заранее по ссылке. Трансляцию вебинара также можно будет посмотреть на youtube.

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

Практика

А чтобы материал не остался теорией, мы приглашаем проверить свои силы, приняв участие в конкурсной программе фестиваля «Демодуляция 2020», который состоится осенью. Мы понимаем, что для создания чего-то впечатляющего нужно время, поэтому приём работ уже открыт. Более подробно о правилах конкурсов можно прочитать на нашем сайте.

Музей Яндекса проводит вебинары о творчестве на ретрокомпьютерах



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

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

Первый вебинар был посвящен написанию чиптюн-музыки, и в качестве специального гостя мы пригласили Сергея Косова (mmcm ) — одного из наиболее популярных музыкантов на ZX-Spectrum. Запись вебинара можно посмотреть здесь.

На втором вебинаре рассказывали про основы создания пиксельной графики, в нём принимал участие Руслан Гроховецкий (ruguevara ) — программист и pixelart-художник на платформе ZX Spectrum. Запись тут.

На третьем вебинаре изучали архитектуру, основные средства разработки и систему команд компьютера ZX-Spectrum. Ведущий — Олег Сенин (bfox ): программист, художник, музыкант на различных ретроплатформах. Запись здесь.

На четвёртом вебинаре говорили о программировании визуальных эффектов: узнали как устроен алгоритм горящего пламени, реализовали его в программном коде и на примере этого кода познакомились с основами оптимизации. Ведущий — Олег Сенин (bfox ): программист, художник, музыкант на различных ретроплатформах. Запись вебинара можно посмотреть здесь.

Пятый вебинар был посвящен маппингу и визуальным эффектам на его основе. Разобрали алгоритм полёта по тоннелю и реализовали его в программном коде. Вебинар провели Олег Сенин (bfox ) и Александр Солодков (TmK ) — программисты, художники, музыканты на различных ретроплатформах. Запись тут.

На шестом вебинаре мы разобрали один из самых сложных программных трюков, позволяющий увеличить цветовые возможности компьютера ZX Spectrum — мультиколор. Сравнили результат работы эффекта до и после применения данного метода. Вебинар провели Олег Сенин (bfox ) и Александр Солодков (TmK ) — программисты, художники, музыканты на различных ретроплатформах. Запись тут.

На седьмом вебинаре мы завершли тему маппинга: узнали, что такое субпиксельная оптимизация, рассмотрели способы сокращения расхода памяти, научились создавать таблицы маппинга без использования математических формул, ответили на вопросы зрителей. Вебинар провели Олег Сенин (bfox ) и Александр Солодков (TmK ) — программисты, художники, музыканты на различных ретроплатформах. Запись тут.

Сегодняшний вебинар — последний. Мы узнаем как синхронизировать визуальные эффекты под музыку, напишем диспетчер, управляющий очерёдностью и временем вывода эффектов, и с его помощью попробуем собрать небольшое демо на основе музыки, графики и кода, созданных в течение всех предыдущих вебинаров. Ведущие — Олег Сенин (bfox ) и Александр Солодков (TmK ) — программисты, художники, музыканты на различных ретроплатформах.

Ждём всех 4 июня в 19:00 по московскому времени. Участие бесплатное, пожалуйста, зарегистрируйтесь заранее по ссылке. Трансляцию вебинара можно будет посмотреть на youtube.

Практика

А чтобы материал не остался теорией, мы приглашаем проверить свои силы, приняв участие в конкурсной программе фестиваля «Демодуляция 2020», который состоится осенью. Мы понимаем, что для создания чего-то впечатляющего нужно время, поэтому приём работ уже открыт. Более подробно о правилах конкурсов можно прочитать на нашем сайте.

Программирование для Famicom/NES/Денди в Nesicide+ca65: маппер MMC3 - страницы (8)

Итак на этот момент нам подвластны 32Кб кода/данных в PRG ROM и 8Кб графики в CHR ROM. Но когда этого перестало хватать в ход пошли мапперы — микросхемы встроенные в картриджи переключающие банки памяти. О них у меня есть отдельная обзорная статья. Одним из крайне популярных мапперов был MMC3 и кроме собственной популярности на его базе было создано огромное число производных чипов. В этой статье мы научимся использовать его для увеличения доступного для игры ROM картриджа.

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

Программирование для Famicom/NES/Денди в Nesicide+ca65: музыка и звуки (7)

Если вы еще совсем не в курсе о принципах на которых работает звуковой чип в Famicom/NES/Денди, то можете сперва провести небольшой ликбез по моей статье «О звуке». И надо же так совпало, что в день публикации этой статьи на хабре появилось очень подробное рассмотрение азов тут: habr.com/ru/post/482916/ Рекомендую ознакомится. Итак — в денди у нас есть набор примитивных осцилляторов-каналов: один треугольный, два прямоугольных, один шумовой и один однобитный DCPM. Программируются они через порты которые мы уже описывали в neslib.inc — группа портов с префиксов APU_*. Описание того как каждый канал настраивается, какие параметры имеет и самое главное — эксперименты потом со всем этим великолепием отнимут на мой взгляд слишком много времени у нас и это тот самый случай когда надо воспользоваться уже готовыми решениями. Мы так и поступим и не будем писать звуковой драйвер и редактор для него с нуля — а воспользуемся уже готовым открытым звуковым драйвером для Famicom/NES/Денди — FamiTone2 от Shiru. Драйвер и набор утилит к нему позволяет воспроизводить музыку и звуки созданные в популярном редакторе FamiTracker.

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

Программирование для Famicom/NES/Денди в Nesicide+ca65: ушибленный спрайт (6)

Научившись выводить и задний фон и спрайты мы готовы реализовать технику известную как zero sprite hit. Она применяется главным образом чтобы создать панель статистики в играх со скроллингом. По крайней мере в играх «первой волны».

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

Программирование для Famicom/NES/Денди в Nesicide+ca65: спрайты (5)

Прежде чем перейти к следующему примеру — спрайтам я бы хотел немного обсудить то что мы увидели в примере с задним фоном.

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

Программирование для Famicom/NES/Денди в Nesicide+ca65: задний фон с прокруткой (4)

Итак, после создания модуля neslib который нам еще пригодится в будущем мы можем приступать к формированию основной программы — модуля main.s. Откроем его, удалим всё старое содержимое и начнём наполнять новым кодом:

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

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

Пример 1 — скроллинг заднего фона — neslib

Тот тестовый проект Hello world что мы создали из шаблона Nesicide работает, но мы сейчас переделаем его полностью — от него останется только каркас проекта и два битмапа с двумя наборами тайлов где присутствуют изображения символов текста. Текущий набор исходников можно скачать тут: yadi.sk/d/_THxg1gxuCCVNw — учтите, что у меня они создавались в папке c:\devel\nes и проще всего развернуть их там же.


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

Программирование для 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


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