Полноэкранная графика на NES

Пользователи ZX Spectrum и других домашних компьютеров 80-х привыкли к красочным полноэкранным заставкам, показываемым во время загрузки игры. Сама возможность отображения таких заставок им справедливо кажется естественной. И казалось бы, такая довольно мощная для своего времени игровая система, как NES, должна с лёгкостью с этим справляться — ведь показывает же она во время игры прокрутку полного экрана с крупными спрайтами со скоростью 50/60 кадров в секунду. Однако, если задуматься, можно вспомнить, что полноэкранные заставочные картинки едва ли встречались в играх, а по большей части это был чёрный экран с относительно небольшим по площади изображением. Конечно же это не случайно. Углубимся в тему.


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

Программируем Апогей

Добрый день!


Решился я наконец написать серию статей о программировании для апогея. Упор в них будет делаться на его архитектуру, вниманию, собственно, программированию будет уделяться меньше, так как подразумевается что вы знакомы с программированием и знаете z80. Итак, начнём!

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

Пишем для NES. Краткая версия.

Изложено в формате 'нет времени объяснять'. Подробное раскрытие каждого небольшого пункта потребует статьи большего объёма, чем этот обзор. Это будет сделано впоследствии, если у читателей обнаружатся конкретные интересы.

Хотите написать игру или демо для NES, Famicom, Денди?

Изучаем. Кладезь актуальной мудрости — NesDev Wiki. Вводные для начинающих — Nerdy Nights на английском, другая на русском. Помним, что старые описания неполны и неточны. Отдельно изучаем 6502. Книг и статей много, поиск начинаем отсюда.

Выбираем между ассемблером и C. Тысяча игр на ассемблере, десятки на C. Код на ассемблере в разы эффективнее, на C пишется в разы быстрее. С ассемлером проще получить помощь зала. Для отчаянных есть экзотика, от BASIC до минимальных Lisp и Python.

Выбираем ассемблер. Три популярных, десятки других. NESASM стар, имеет искусственные ограничения (пришёл с MS-DOS, перепилен с PCE/TG16) и мелкие глюки. Легко освоить, большинство старых уроков под него, выдержит средний проект. Современная альтернатива — ASM6, прост в освоении, но не так популярен. Выбор профессионала — CA65. Мощен и гибок, но сложен в освоении (линкер и конфигурация памяти).

Выбираем компилятор C — CC65. Для работы с железом есть библиотеки neslib и KNES, либо пишем свою. По скорости потолок чистого C — подобие Super Mario Bros. Можно писать частично на C, частично на ассемблере, переписывать фрагменты кода по ходу дела. Очень удобно для прототипирования.

Пишем код. Любимый текстовый редактор, bat или make файлы. Есть развитая IDE для CC65 — NESICIDE, но WIP и почти никем не используется.

Рисуем. Отдельные тайлы редактируем непосредственно в YY-CHR, NES Screen Tool, Tile Layer Pro и других, более сложные изображения импортируем из обычных форматов там же. Для сложных проектов может понадобиться свой велосипед. Без трюков NES не может отобразить полноценную картинку на весь экран, аналога Art Studio не ищите.

Музыка и звуки. Два основных трекера, но нужен проигрыватель, выбирается в зависимости от используемого ассемблера. Пишем в FamiTracker, играем FamiTone или Gradual Games Sound Engine. Пишем в Musetracker, играем MUSE. Штатного плеера FamiTracker хватит для простого демо, но не для игр. По желанию пишем свой плеер, оба трекера имеют текстовый экспорт. Для отчаянных есть древности и экзотика.

Делаем уровни. Готовых решений нет. Набираем вручную, пишем конвертер для универсальных редакторов, изобретаем свой редактор.

Для среднего или большого проекта наверняка понадобятся особые конвертеры и утилиты. Пишем на чём угодно, лишь бы работало. Обычно C++ или Python.

Отлаживаем в эмуляторах. Средства отладки развиты в FCEUX и NintendulatorDX. Высокая точность эмуляции в Nestopia и puNES, но отладчика в них нет. Даже самые точные эмуляторы не показывают всех глюков, проверяем во всех четырёх. Если пишем на C с готовой низкоуровневой библиотекой, на железе наверняка заработает. Выжимаем максимум на ассемблере — обязательно проверяем на железе при помощи Flash-картриджей (EverDrive N8, InviteNES, PowerPak — ищем в интернете) или самодельного картриджа и программатора ПЗУ.

Успехов!

ЗаRulem #15

С удовольствием сообщаю, что начата работа над 15-ым номером газеты!
Срок выхода — ноябрь 2015 года.
Ждем Ваши статьи!

Каждому автору опубликованного материала полагается полноцветный экземпляр газеты!

Интересны материалы по следующим направлениям:
1. Действующие на территории России музеи компьютерной ретротехники;
2. Глюки ZX-Evolution и способы их устранения;
3. Авторские истории об известных спектрумистах (группах) начала 90-х;
4. Истории разработки отечественного ПО (игры, демо, системки, пресса);
5. Все о Dizzy (в том числе и о DizzyAge);
6. Статьи по кодингу на Спектруме (не только ассемблер);
7. Коротенькие авторские рассказы о чем угодно;
8. Рецензии на вновь вышедшие игры и демо;
9. Отчеты о прошедших демопати.

И многое другое! Интересно все про Спектрум и про другие 8-бит ретрокомпьютеры.

Пишите в личку или:

Архитектура и программирование уникального компьютера Vectrex

На CC'2015 была представлена работа «Electric Force» под один из самых необычных компьютеров, с векторым дисплеем и AY8912 на борту — «Vectrex». Пётр Соболев, автор работы, рассказал об этом компьютере подробнее в презентации на пати:



Саму презентацию можно почитать в pdf. А для тех, кого заинтересует данная тема, есть подробная статья — «Архитектура и программирование Vectrex».

Убить Еву

Вот уже неделю не утихают спекуляции на тему зловреда с СС'15, который так никто и не видел. Тут вам и слухи, и догадки, расследования, обвинения… Все это интересно и смешно, но не столь интересно, сколько интересен сам прецедент.

Конечно, технически всем было понятно, что стереть флеш или сд-карту — не вопрос, ведь есть софт, который в них что-то пишет. Но почему-то считалось, что никто не захочет этим воспользоваться. Что ж, так было и будет всегда :) Подобный трюк проделывали еще в прошлом веке. Казалось бы, история должна нас чему-то научить…

Чему?

Объявление о BASE-X 2015


15 ноября 2015 г. состоится виртуальное демокомпо для ZX Spectrum — BASE-X 2015.

* К участию принимаются работы для ZX Spectrum 48/128, написанные на BASIC.
* Работы должны быть предоставлены в одном из двух форматов — TAP или TRD.
* Разрешено использовать только чистый BASIC, исключение составляет лишь музыка, которая может быть проиграна на прерываниях стандартным плеером (ProTracker, Beepola и т.д.). — пример: Silabba by Target Team.
* Загрузка работ (уже работает) и голосование будет организовано на events.retroscene.org.

Вопросы по компо можно задавать в комментариях к данной теме, либо по почте — diver4d at gmail dot com.

P.S. Если вы не знакомы с программированием на бейсике (или давно все позабыли), но хотите сделать демо, и при этом не знаете с чего начать, то можно попробовать прочесть статью о создании одной из демок: Making of «Back 2 Basics».

"Unhinged" trackmo engine

Ну, пока в соседнем топике разбирается многопоточность, посмотрим на такую гораздо более простую вещь, как систему управления событиями в трекмо.

В этом топике я опубликую двиг, разработанный для «Unhinged», и использованный позже как обслуживающий в «Марио».

Зачем это? Дело в том, что пресловутое flow требует от дизайн-мейкера постоянно вводить как новые эффекты, так и их развитие в процессе своего течения.
Соответственно, код демо должен быть настраиваемым — предоставьте себе контролы, которые позволят вам менять внешний вид того же эффекта, который уже на экране. И применяйте их в течении демо именно в тот момент, когда они будут иметь максимальное воздействие на зрителя.

ДАО ГОВОРИТ :)
Главная цель движка трекмо — это Контроль выполнения демо.
Контроль должен быть реализован изменением состояния кода демо в процессе её выполнения (показа), путём изменения значений памяти в её подпрограммах в нужный нам момент, либо изменением вызываемой процедуры (что может быть переходом в следующую часть).

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

Threads on Z80

Привет, друзья.

Хочу поделиться с вами своими наработками. Сперва хочу извиниться за то, что постоянно буду использовать свой ассемблер ASAM. Увы, он работает только под 32-бита, у этого есть ряд причин, но почему это так, — не сейчас.

Теперь о сегодняшней теме, о параллельных потоках. Начиная с 2003 года я постоянно использую два типа потоков на Speccy: первый, мой любимый — это сквозные функции; и второй, о котором пойдёт речь — это классические потоки. Я приведу пример самых простых потоков, и если вам это нужно — вы легко сможете доработать его до своих нужд.

Thread'ы очень просты. Всё сводиться к двум основным процедурам — это создание и переключение потоков. Текущий вариант потоков эволюционировал из простых переключений между блоками памяти в переключение между страницами, что очень удобно для decrunch'ингов чего-нибудь, или для распаковок данных. Хочу отметить, что впервые оправданное использование потоков я ощутил при coding'е под ts-conf'у.

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