+516.99
Рейтинг
1433.81
Сила

SWEET16 - архитектура мечты Стива Возняка

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

Дешевый и сердитый 8-битный микропроцессор MOS 6502 стал сердцем очень многих компьютеров и консолей.
Так он был центральным процессором в компьютере Apple II — первом массовом компьютере фирмы Apple эпохальной значимости собственноручной разработки Стива Возняка.

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

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

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

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

Еще раз о терминаторе, MOS 6502 и Ion Maiden

Давно уже я написал эту заметку, но на HYPE не выкладывал ввиду некой «несерьёзности».
Но после того как погрузился в программирование на MOS 6502 думаю что пришла пора так сказать разбавить серьёзность парой забавностей.

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

Программирование для 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 и явно не указывать где находятся код и данные?

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