Спасибо, на досуге попробую.
  • avatar Shiru
  • 5
Больше платформ, хороших и разных. Считаю, было бы здорово, если бы кто-то, хорошо разбирающийся в этих платформах, тоже поделился здесь своим опытом. У меня есть только ограниченный и давний опыт по C64, рассказать особо нечего, а Atari мне очень нравится (есть 130XE), но сам ничего не делаю и в дебри особо не лезу (кроме 2600, но это опять приставка).
  • avatar diver4d
  • 4
К сожалению NES никак не привлекает, больше тянет на Атари, Коммодор и Амстрад, но все равно очень интересно написано, прям исчерпывающе! Спасибо за наглядные скриншоты с раскладками по тайлсетам!
Обалденная подборка, спасибо!











  • avatar Shiru
  • 6
Полной коллекции наверное пока нет нигде, но я когда подбирал примеры для статьи, попалась такая подборка, там довольно много: nestitlescreens.tumblr.com/. И ещё некоторое время назад нашумело видео PRESS START, почти три часа титульных экранов: www.youtube.com/watch?t=1267&v=iOvaSOFLtJU
Спасибо, обалденная статья, прочитал на одном дыхании. Я давно почитываю о NES, поэтому все оказалось более чем понятным, да и написано доходчиво очень.
Захотелось что-нибудь попробовать нарисовать, я всё же старый фанат приставки. А есть ли какой-то сайт с коллекцией заставок для NES?
Также далее я буду приводить примеры кодов из проектов, процедуры, а они все на этих мнемониках написаны.
Shiru Очень интересная и полновесная статья! В отличии от наших спектрумовских друзей я понимаю все ньюансы, т.к. две игры всё таки сделал на NES. Однако всё равно много нового узнал. Спасибо!
Да, можно пользоваться мнемониками Z80, забыл упомянуть об этом в статье.
  • avatar Shiru
  • 6
В порядке обмена опытом. Когда я писал для РК-совместимых, использовал SjAsm, учитывая отличия 8080 'в уме'. Так было проще, чем другие мнемоники и мучиться с древними ассемблерами. И так как РК-совместимые мало различаются, у меня из одного исходника собирались версии для РК86, Микроши, Апогея и Партнёра, через условную компиляцию.
  • avatar Shiru
  • 2
У NES довольно своеобразная графика, для которой плохо подходят редакторы общего назначения и редакторы для других платформ. Поэтому и пишут свои. Для платформ с 16-цветной графикой, типа Master System, Genesis, SNES, специализированных редакторов уже нет, обходятся конверсией из обычных форматов.
  • avatar Shiru
  • 2
Первый шаг к расширению объёма графики — CNROM, очень простой маппер, даёт 32 килобайта CHR: wiki.nesdev.com/w/index.php/CNROM
  • avatar Shiru
  • 1
В NesDev Wiki собраны нагугленные и проверенные крупицы информации. Когда возникает нетривиальный вопрос, ответ наверняка найдётся там. Карты памяти тоже есть: wiki.nesdev.com/w/index.php/CPU_memory_map, wiki.nesdev.com/w/index.php/PPU_memory_map
  • avatar Shiru
  • 3
Режим спрайтов устанавливается функцией oam_size, 0 для 8x8, 1 для 8x16.
  • avatar Shiru
  • 4
Поправка, в палитры запихивается по три цвета. Нулевой цвет каждой палитры 'прозрачный'. Нулевой цвет в памяти палитр (PPU $3F00) задаёт цвет фона. Таким образом получаем максимум 1+3*4+3*4=25 цветов на экране.
  • avatar Shiru
  • 4
Развёрнуто ответил отдельным постом.
Да, я ещё говорил исходя из своего опыта. То есть, я пока только пользовался набором Ширу для программирования на Си. Тем, кто больше шарит в АСМе, чем я, в этом отношении поймут больше. Если покурят материал, разумеется.
Спрайты есть и по 8х8, и по 8х16, но я не нашёл, как в сборке от Ширу использовать последние.
Отлично, спасибо, то, что надо!
Спрайты — 8*8 пикселей каждый?
Ой, ограничений полно. Начнём с того, что у нас есть восемь палитр и в каждую можно запхать по четыре цвета! Круто, да? Но четыре палитры идут на задний фон. Другие четыре — на спрайты. При этом максимум одновременно находящихся на экране спрайтов — 64. На горизонтальной линии — 8. А если учесть то, что задник может использовать только один банк графики за раз, с планированием картинки начинается полная жопа…

Наглядный пример: battleofthebits.org/arena/Entry/Bo_OM/14745/

Картинка потеряла массу мелких деталей после конверсии. Забиты чуть ли не все спрайты в памяти (учитывая то, что я юзал спрайты 8х8, а не 8х16), а цветность картинки немного потеряла в том, что я использовал спрайты с теми же цветами, что и на заднике.

Если что, бомбу рисовал и потом планировал в GraphicsGale. И потом вручную переносил через редактор Ширу в неймтейбл. Спрайты уже накладывались поверх картинки говнокодом.