Забавная штука с участием регистров $2005 / $2006 в процессе скроллинга. Если кто-нибудь подробно может объяснить принцип их действия - пишите!
Да нет тут никого)
Всё буржуи, да азиаты)
Легко: (1) Задаёшь валюту X-скроллинг и вставляешь в $2005, и (2) задаёшь валюту Y-скроллинг и вставляешь опять-же в $2005. $2006, по-моему, не играет роль в скроллинге. А так же, это всё можно сделать снаружи NMI.
Русскоговорящие есть? Отзовитесь!
Короче звук в NES для меня темный лес. Да что там в NES, у меня вообще нет ни попыта не знаний программирования звуковых генераторов!
В интернете нашел лишь некоторые определения музыкальных терминов и общее описание но не более. Как блин люди вообще учатся (учились) этому делу. Или лишь избранным разрешается постичь все таинства программирования звука.
Посоветуйте пожалуйста какую нибудь литературу по этому делу. Желательно русскоязычную. Что бы после ее изучению можно было бы плавно перейти на программирование NES pAPU.
С какой целью это нужно? Есть готовые библиотеки для проигрывания музыки и эффектов и удобные редакторы к ним.
Никогда не видел специализированной литературы по программированию звука на звуковых чипах и не думаю, что такая существует. Обычно достаточно документации на чип + общие знания о звуке и музыке + много практики.
С целью более глубоко понимания самих основ.
Хотя конечно можно обойтись и этим "достаточно документации на чип + общие знания о звуке и музыке + много практики", забавно я как раз этим и занимался в последнее время.
Но чертовски трудно и долго разбиратся во всем самостоятельно.
Благодарю вас за быстрый ответ.
Есть вот такое,
на английском. Я не читал, но людей с подобными вопросами часто туда отсылают, и они довольны.
Я в своё время разбирался сам.
Похоже это то, что доктор прописал. Описание на доступном языке ,а главное кратко и понятно. Спасибо!
Русское местечко, здорово.
Какой программой компилировать коды, написанные на asm6502 для NES? Пожалуйста, расскажите как использовать компилятор, если уже есть готовый файл *.asm.
Той, для которой этот файл создан. У каждого компилятора (программы-ассемблера) есть своя специфика, если файл написан под один, то для другого его придётся переделывать.
Про использование каждого конкретного ассемблера написано в документации к нему.
Хорошо. Тогда порекомендуйте какую-нибудь программу-ассемблер 6502 NES. Любую
Самые популярные сейчас - CA65 (из пакета
CC65) и
ASM6. До сих пор сохраняет популярность
NESASM, но он сильно устарел и не рекомендуется к использованию.
Очень круто. Но почему только видео?
Да особо смысла нету. Что работает видно итак.
Ну лично тебе, если интересно могу сбросить ром.
Да, было бы интересно посмотреть. У меня тоже были идеи насчёт подобной игры, не прямого клона, но близкого по процессу. Но я посчитал, что 8 спрайтов на строку слишком мало для подобной игры, ещё и с ограничением в 64 на экран, а у тебя смотрится очень неплохо, несмотря на это - интересно посмотреть внимательно, как это получается.
А может для 'здесь' залить видео на YouTube? Можно приватное, только по ссылке, чтобы в поиске не всплывало, если не хочешь лишнего внимания. Мне кажется, из rar-архива здесь мало кто посмотрит.
Shiru wrote:
Да, было бы интересно посмотреть. У меня тоже были идеи насчёт подобной игры, не прямого клона, но близкого по процессу. Но я посчитал, что 8 спрайтов на строку слишком мало для подобной игры, ещё и с ограничением в 64 на экран, а у тебя смотрится очень неплохо, несмотря на это - интересно посмотреть внимательно, как это получается.
А может для 'здесь' залить видео на YouTube? Можно приватное, только по ссылке, чтобы в поиске не всплывало, если не хочешь лишнего внимания. Мне кажется, из rar-архива здесь мало кто посмотрит.
С ютуб вечная проблема, что там как не лей - 30 fps. Из-за этого вместо мерцания спрайтов при лимитах, этого просто не покажет. Не говоря ж уж о некоторых мерцаниях, которые тут есть, скажем керриолл и червь тут показываются по очереди, если оба на экране.
Ещё видео: (со строчным спрайт лимитом теперь)
Предлагаю начать обсуждение здесь
http://www.forums.nesdev.ru/. Русский форум NesDev. Также прошу помочь в наполнении wiki и сайта на русском языке
http://www.nesdev.ru/
...
По сравнению с последним видосом - сделан туман, стрельба по юниту и другое.
Из последнего что было сделано - дальности атаки добавлены и стрельба по зданиям, так же автоматическая атака в радиусе стрельбы, добавлена постройка плит рядом со зданием или плитами своего дома (несколько тестовых зданий на карте).
Кроме того, добавлен звуковой движок famitone от Shiru с кавером мелодии от него же.
Всем привет!
У меня не самый лучший английский, не уверен, что в wiki я всё правильно понял, поэтому несколько уточняющих вопросов. Буду очень признателен за ответы и помощь.
Есть такой вот мокап:
И мне уже не терпится распилить его на тайлы и собрать первый уровень. :D
Могу ли я использовать тайлы размером 16 px? И сколько в таком случае можно использовать цветов и какие есть ограничения?
И можно ли в тайлах использовать прозрачность для добавления еще одного цвета? Я имею ввиду черный цвет фона:
Сколько спрайтов и тайлов я могу использовать на уровне?
Могу ли я использовать спрайты размером 14x14 px / 3 colors+black? Есть ли в этом случае ограничения на анимацию и какие?
Размеры тайлов и спрайтов, а также ограничения по цветам жёстко заданы устройством приставки и всегда одинаковы. Тайлы всегда имеют размер 8x8 пикселей, 4 цвета (один из цветов 'прозрачный', то есть цвет фона). При этом размер области, для которой назначается палитра - 2x2 тайла, то есть 16x16 пикселей. То есть тайлы можно рисовать как 16x16, но нужно помнить, что их графика будет представлена тайлами 8x8.
В играх часто оперируют не самими тайлами, а так называемыми 'метатайлами' - составными тайлами, которые обычно имеют размер 16x16 (Super Mario Bros) или 32x32 (Adventure Island) пикселя. Т.е. в памяти уровень хранится как список метатайлов - по 4+1 или 16+1 байт на метатайл (+1 - это байт палитры) и карта, составленная из этих метатайлов. Это уменьшает объём данных уровня.
Спрайты могут иметь размер либо 8x8, либо 8x16 (вытянуты в высоту). Размер задаётся для всех спрайтов на экране сразу, т.е. смешивать размеры нельзя. В разных играх используются разные размеры. 8x16 удобнее, если в игре много крупных спрайтов, так как нужно тратить меньше времени на подготовку списка спрайтов, но 8x16 увеличивает шансы превышения лимита спрайтов на строку растра (8 штук), а также доставляет неудобства, если нужно много объектов 8x8, например пуль разного вида. Спрайты больших размеров - это 'метаспрайты', составные. 14x14 можно получить из четырёх спрайтов 8x8 или двух 8x16.
Всего на экране может быть 256 разных на вид тайлов фона и отдельно либо 256 разных на вид спрайтов 8x8, либо 128 разных на вид спрайтов 8x16. Т.е. две страницы графики из 256 блоков 8x8. При использовании CHR RAM или мапперов наборы можно переключать, например, чтобы получить разную графику на разных уровнях. В некоторых играх для анимации используется подмена графики спрайтов, либо подгрузкой новых кадров в CHR RAM, либо переключением части набора графики (такое позволяют некоторые мапперы).
О, спасибо за подробный ответ!
Shiru wrote:
При использовании CHR RAM или мапперов наборы можно переключать, например, чтобы получить разную графику на разных уровнях. В некоторых играх для анимации используется подмена графики спрайтов, либо подгрузкой новых кадров в CHR RAM, либо переключением части набора графики (такое позволяют некоторые мапперы).
Значит буду изучать материалы по метаспрайтам, CHR RAM и мапперам, очень интересно.
08--n7r6-7984 wrote:
Значит буду изучать материалы по метаспрайтам, CHR RAM и мапперам, очень интересно.
Чтобы понятнее можешь глянуть редакторы игр, например редактор чипа и дейла
CAD Editor - там куски и 32x32 и 16x16.
Насчет анимации надо смотреть что лучше подойдет:
Это же не только смена графики (в этом случае надо смотреть что лучше будет chr-rom или chr-ram);
Также можно если спрайты - просто держать несколько спрайтов заранее;
Если фон - менять не графику, а тайлы в карте;
Просто ротация палитры (например водопад).
Ti_ wrote:
08--n7r6-7984 wrote:
Значит буду изучать материалы по метаспрайтам, CHR RAM и мапперам, очень интересно.
Чтобы понятнее можешь глянуть редакторы игр, например редактор чипа и дейла
CAD Editor - там куски и 32x32 и 16x16.
Насчет анимации надо смотреть что лучше подойдет:
Это же не только смена графики (в этом случае надо смотреть что лучше будет chr-rom или chr-ram);
Также можно если спрайты - просто держать несколько спрайтов заранее;
Если фон - менять не графику, а тайлы в карте;
Просто ротация палитры (например водопад).
Мне пока что сложно определиться с такими вещами, не имею никакого представления как это все работает и зачем нужно. Спасибо за ответ, буду копать в этом направлении, за ссылку отдельное спасибо, форум очень интересный, надеюсь найду там необходимую информацию.
Для начала лучше обойтись без мапперов и CHR RAM, самой простейшей конфигурацией (NROM-256, 32 килобайта ПЗУ кода и 8 килобайт ПЗУ графики). И уже когда с ней всё будет понятно, в том числе и ограничения по анимации, можно добавлять мапперы.
Также стоит учитывать, что крутые мапперы типа MMC3 и тем более MMC5 - в основном удел эмуляторов и продвинутых флеш-картриджей, а реальный отдельный картридж сделать будет дорого. Т.е. если есть планы на выпуск серии реальных картриджей, то стоит ограничиться простейшими мапперами на дискретной логике (1-2 микросхемы 74/555 серии), типа UxROM или AxROM. Несмотря на простоту, на них делали очень даже продвинутые игры, типа Battletoads. Ну а начать освоение мапперов можно, например, с CNROM, который отличается от NROM только дополнительными банками ПЗУ графики.
Shiru wrote:
Т.е. если есть планы на выпуск серии реальных картриджей, то стоит ограничиться простейшими мапперами на дискретной логике (1-2 микросхемы 74/555 серии), типа UxROM или AxROM.
Таких планов нет, но я все равно предпочту пойти "классическим" путём, потому что хочу максимально соответствовать всем канонам. А если все получится и результат будет интересным, тогда можно и насчет картриджей подумать.
Shiru wrote:
Для начала лучше обойтись без мапперов и CHR RAM, самой простейшей конфигурацией (NROM-256, 32 килобайта ПЗУ кода и 8 килобайт ПЗУ графики). И уже когда с ней всё будет понятно, в том числе и ограничения по анимации, можно добавлять мапперы.
Значит с этого и начну.
Еще интересен вот какой момент - как это дело можно потестировать? Возможен ли такой вариант - взять похожую игру и поменять в ней графику? Например Jackal - схожая механика, размер метаспрайтов 16х24, протагонист в такой габарит вполне влезет. Насколько мне известно есть специальные патчеры, которые используют для переводов игр, заодно и получу наглядный пример подготовки графики для игры.
Если графика тайлов в игре лежит в ПЗУ графики, то её формат жёстко определён самим железом и потому одинаков во всех играх. То есть изменить графику тайлов в этом случае легко, есть множество соответствующих редакторов. Однако, место хранения и формат палитр, метатайлов и карт уровня не определён ничем и в каждой игре разный, такой, какой посчитали нужным использовать разработчики. В этом случае могут помочь редакторы ресурсов конкретных игр, типа упомянутого выше CAD Editor. Но такие редакторы есть далеко не для всех игр.
08--n7r6-7984 wrote:
Еще интересен вот какой момент - как это дело можно потестировать? Возможен ли такой вариант - взять похожую игру и поменять в ней графику? Например Jackal - схожая механика, размер метаспрайтов 16х24, протагонист в такой габарит вполне влезет. Насколько мне известно есть специальные патчеры, которые используют для переводов игр, заодно и получу наглядный пример подготовки графики для игры.
Ну, во-первых 'метаспрайты' любого(разного) размера могут быть. Это только фон строится из мета-тайлов одинакового размера (16x16 или 32x32).
А насчет Jackal, добавив к тому что Shiru написал, там ещё и графика то как-раз не в ПЗУ(chr-rom) лежит, а просто в роме (prg-rom) - там где код и данные и т.д.; а значит наверняка ещё и сжата. Так что менять её удобно не будет.
Shiru wrote:
Если графика тайлов в игре лежит в ПЗУ графики, то её формат жёстко определён самим железом и потому одинаков во всех играх. То есть изменить графику тайлов в этом случае легко, есть множество соответствующих редакторов. Однако, место хранения и формат палитр, метатайлов и карт уровня не определён ничем и в каждой игре разный, такой, какой посчитали нужным использовать разработчики. В этом случае могут помочь редакторы ресурсов конкретных игр, типа упомянутого выше CAD Editor. Но такие редакторы есть далеко не для всех игр.
Понятно. Ладно, значит соберу все временно в гейммейкер, а там что-нибудь придумаю.
Quote:
В этом случае могут помочь редакторы ресурсов конкретных игр, типа упомянутого выше CAD Editor. Но такие редакторы есть далеко не для всех игр.
Интересный редактор, многое прояснилось. Что касается метаспрайтов, то нашел в топике на emu-land редактор Capcom Sprite Assembler, надеюсь он поможет понять, как готовить спрайты.
Ti_ wrote:
Ну, во-первых 'метаспрайты' любого(разного) размера могут быть. Это только фон строится из мета-тайлов одинакового размера (16x16 или 32x32).
Разного, но не больше 8x8 (или 8x16)? И могут ли они использовать разные цвета?
Quote:
А насчет Jackal, добавив к тому что Shiru написал, там ещё и графика то как-раз не в ПЗУ(chr-rom) лежит, а просто в роме (prg-rom) - там где код и данные и т.д.; а значит наверняка ещё и сжата. Так что менять её удобно не будет.
[/quote]
Ясно, попробую поискать похожие редакторы, даже если там будет другая палитра.
Один произвольно взятый метаспрайт состоит из N апппаратных спрайтов, которые имеют размер 8x8 или 8x16. Эти аппаратные спрайты могут иметь разные смещения относительно центра координат метаспрайта (не обязательно кратно 8, как для тайлов), разные флаги поворота, разные палитры. Они могут частично накладываться друг на друга. Так как NES позволяет использовать только три цвета на спрайт, многие игры использовали несколько наложенных друг на друга спрайтов, чтобы сделать главного героя более цветным. Например, Mega Man - пять цветов, потому что лицо сделано спрайтом с другой палитрой.
Shiru wrote:
Один произвольно взятый метаспрайт состоит из N апппаратных спрайтов, которые имеют размер 8x8 или 8x16. Эти аппаратные спрайты могут иметь разные смещения относительно центра координат метаспрайта (не обязательно кратно 8, как для тайлов), разные флаги поворота, разные палитры. Они могут частично накладываться друг на друга. Так как NES позволяет использовать только три цвета на спрайт, многие игры использовали несколько наложенных друг на друга спрайтов, чтобы сделать главного героя более цветным. Например, Mega Man - пять цветов, потому что лицо сделано спрайтом с другой палитрой.
Отлично! Значит проблему с читаемостью персонажа будет решить проще, осталось найти подходящие цвета и определиться как спрайты будут распологаться относительно друг друга. Спасибо еще раз за ответы!
Еще вопрос - могу ли я использовать для спрайтов
другую системную палитру? Для тайлов я сейчас использую
"NTSC Palette with both Blue and Green Emphasized", в ней нет белого и поэтому все смотрится тускловато - но для тайлов это ок, тем проще будет акцентировать внимание игрока на игровых объектах.
Ну и если интересно, закончил основные анимации персонажа:
Осталось вытянуть читаемость и поправить пару косячных кадров во время движения по диагонали.
У NES всего одна единственная неизменная палитра из 54 цветов, общая для фона и спрайтов. Ввиду того, что цвет в PPU реализован непосредственной генерацией сигнала в NTSC/PAL (если посмотреть на биты цветов, можно увидеть, что младшие 4 управляют оттенком, а следующие 2 яркостью), т.е. в системе нет RGB в принципе, а также аналоговости сигнала и телевизоров, мы никак не можем получить 'правильную' палитру. Точнее, используя реверс-инжиниринг PPU мы знаем, какая палитра математически правильна для такой схемы, но за отсутствием в природе идеального телевизора мы эту самую идеальную палитру никогда в жизни не видели, а видели какую-то условную, присущую конкретно связке отдельно взятых приставки и телевизора. Поэтому во всех эмуляторах палитра отличается, и вообще пользователи наплодили тысячу с лишним её вариантов. Но это касается исключительно эмуляторов. Всё, что касается софта - мы можем более-менее уверенно рассчитывать на уровни яркости, а касательно оттенка цвета остаётся только надеяться, что он будет примерно таким, каким мы его видим. У нас нет никакого контроля над тем, что увидит вместо выбранного оттенка пользователь на его приставке и телевизоре (или эмуляторе). По техническим причинам палитре NES есть чистый белый и чёрный, четыре серых, много синих и зелёных оттенков, но мало красных и жёлтых (вообще нет чистого красного и жёлтого).
Есть один способ немного изменить эту самую неизменную палитру - биты усиления цветовых составляющих. Но они изменяют всю палитру целиком, придавая цветам определённый оттенок, например, зеленоватый. Использование этой фишки можно наблюдать в играх Eurocom (James Bond Jr., Jungle Book) или в Felix The Cat - такая своеобразная выцветшая палитра, напоминающая Commodore 64. Однако, лучше эти биты не трогать, потому что на клонах они работают как повезёт (см. видео Кинамана, он не раз упоминал про эти проблемы), а на RGB PPU не работают вообще.
Shiru wrote:
У NES всего одна единственная неизменная палитра из 54 цветов, общая для фона и спрайтов. Ввиду того, что цвет в PPU реализован непосредственной генерацией сигнала в NTSC/PAL (если посмотреть на биты цветов, можно увидеть, что младшие 4 управляют оттенком, а следующие 2 яркостью), т.е. в системе нет RGB в принципе, а также аналоговости сигнала и телевизоров, мы никак не можем получить 'правильную' палитру. Точнее, используя реверс-инжиниринг PPU мы знаем, какая палитра математически правильна для такой схемы, но за отсутствием в природе идеального телевизора мы эту самую идеальную палитру никогда в жизни не видели, а видели какую-то условную, присущую конкретно связке отдельно взятых приставки и телевизора. Поэтому во всех эмуляторах палитра отличается, и вообще пользователи наплодили тысячу с лишним её вариантов. Но это касается исключительно эмуляторов. Всё, что касается софта - мы можем более-менее уверенно рассчитывать на уровни яркости, а касательно оттенка цвета остаётся только надеяться, что он будет примерно таким, каким мы его видим. У нас нет никакого контроля над тем, что увидит вместо выбранного оттенка пользователь на его приставке и телевизоре (или эмуляторе). По техническим причинам палитре NES есть чистый белый и чёрный, четыре серых, много синих и зелёных оттенков, но мало красных и жёлтых (вообще нет чистого красного и жёлтого).
Есть один способ немного изменить эту самую неизменную палитру - биты усиления цветовых составляющих. Но они изменяют всю палитру целиком, придавая цветам определённый оттенок, например, зеленоватый. Использование этой фишки можно наблюдать в играх Eurocom (James Bond Jr., Jungle Book) или в Felix The Cat - такая своеобразная выцветшая палитра, напоминающая Commodore 64. Однако, лучше эти биты не трогать, потому что на клонах они работают как повезёт (см. видео Кинамана, он не раз упоминал про эти проблемы), а на RGB PPU не работают вообще.
Понятно. Ладно, тогда просто продолжу рисовать, сейчас на эту тему нет смысла голову ломать. А каким способом можно/лучше тестировать это во время разработки? Записывать на картридж с usb разъемом или может эмуляторы генерации сигнала в NTSC/PAL?
Любым удобным способом. Ни тесты на железе, ни на эмуляторах видеосигнала, ничего особенного в плане выбора оттенков цвета не дадут, разве что позволят учесть искажения, свойственные PAL/NTSC (в том числе dot crawling). Надо просто рисовать, учитывая, что такой-то цвет условно-красный, такой условно-синий, и проверять, как оно смотрится в нескольких разных палитрах, чтобы было более-менее нормально. Больше ничего с этим сделать нельзя.
При тестировании же кода однозначно удобнее тестировать и отлаживать в эмуляторах. Тесты на железе нужны только потому, что эмуляторы всё ещё не идеальны. При тестировании на Flash-картриджах надо учитывать, что игра запускается не точно так же, как запускалась бы на реальном картридже, т.к. для вывода меню софт Flash-картриджа инициализирует PPU (по крайней мере, так в Power Pak).
Ок, всё понял, еще раз большое спасибо за подробные ответы =)
Shiru wrote:
Самые популярные сейчас - CA65 (из пакета
CC65) и
ASM6. До сих пор сохраняет популярность
NESASM, но он сильно устарел и не рекомендуется к использованию.
Что с NESASM не так, почему он устарел и не рекомендуется к использованию? Мне кажется он очень удобный, пользуюсь версией
3.1.
Там есть какието баги?
Quote:
Всего на экране может быть 256 разных на вид тайлов фона и отдельно либо 256 разных на вид спрайтов 8x8
64
При этом не более 8 на 1 строку.
So, I don't speak Russian, but since there hasn't been a response to it in a while I want to say I enjoy seeing these DuneEmperor updates, Ti_.
Кто подумал что ничего не сделано, кое-что ещё есть, и думаю ещё будет для демки:
Пушки и стены:
http://www.youtube.com/watch?v=G7aCAy1-70c
Пытаюсь делать игру для денди.
nya wrote:
Пытаюсь делать игру для денди.
Красавелла) Я так понимаю, это еще не игра, а полигон, так сказать.. проба пера. Тайлики потыренные)))
Не забрасывай.
P.S. Исходники можно зыркнуть? )
Обновление.
Contra Force взято как образец.
Объекты за пределами экрана не живут и есть некоторые ограничения в графике. Так вроде нормально работает, но подтормаживает.
Mario допилю, контра сложно изза количества объектов, это нужно под игру подстраивать.
Всё вобщем готово кроме всякой мелочи, играть можно, собираемое борохло сделаю сохраняемым, чтобы не появлялось снова, или сделаю скроллинг в одну сторону, чтобы объекты врагов постоянно не загружались при ходьбе влево вправо. Дракон будет один в конце игры(возможно), уровни будут идти подряд. Ограничение в комнатах 336 штук, не позволяет делать много уровней, и лень.
select во время игры, следующий уровень.