Комментарии 81
Также опубликовал небольшую подборочку со ссылками для начинающих разработчиков под эту приставку :)
только трушное NitroSDK, без никаких NitroSystem. Любимая платформа, жаль что GBA не застал.
Насчет homebrew — согласен, если бы нинтенды не были такими жадными до лицензий, да вообще пора уж открыть NitroSDK
круче всего было проходить lot-checks, которых у nintendo довольно много, помню эти бессоные ночи.
помню ради интереса смотре devkitARM, но к удобному привыкаешь быстро и дальше «ага как они это реализовали» дело не пошло
Если вы разобрались с ограничениями фона, со спрайтами всё будет легко. Суть в том, что это движущиеся на экране объекты размером 8x8, 16x16 или 32x32 пикселей. В лучшем случае (зависит от размера) всего их может быть аж 64, но на одной строке может отображаться не более восьми, даже если соответствующая область спрайта прозрачная, поэтому слишком много подвижных объектов не сделаешь.Небольшое уточнение касательно спрайтов. На самом деле они могут быть только двух размеров: 8×8 или 8×16 пикселей, других размеров попросту нет. Если персонаж требовал 16 пикселей в ширину, он съедал 2 позиции из 8 возможных на строку. Картридж никак не мог снять это ограничение, видеопроцессору он мог дополнительно предоставить только 2 килобайта дополнительной RAM видеопамяти (к двум встроенным) для хранения фонов и 8 килобайт CHR-ROM (два набора тайлов по 256 штук). Если программа выводила больше 8 спрайтов на строку — они не рисовались на экране. Но разработчики применяли простой хак для вывода большего количества спрайтов: по чётным кадрам спрайты выводились в одном порядке, по нечётным — в обратном. В результате если на строке было больше 8 спрайтов, то они начинали мерцать, потому что по чётным кадрам были видны одни, а по нечётным — другие.
В личку не сразу посмотрел.
Я вообще сначала писал её для ЖЖ, а потом решил, что она лучше подойдёт на Хабра.
Хотя опять же могу ошибаться. Надеюсь, меня поправят, если что.
Фон на NES делится на квадраты размером 8 на 8 или 16 на 16 пикселей, которые называются тайлами. Итого таких квадратов 30 (15) в высоту и 32 (16) в ширину. При этом фон мог плавно двигаться горизонтально и/или вертикально.На самом деле фон всегда составляется из тайлов 8×8 (собственно других размеров тайлов нет). В видеопамять просто последовательно записываются номера тайлов. А вот палитра устанавливается на группы тайлов 16×16 пикселей, то есть конкретному тайлу задать номер палитры нельзя — только четырём смежным.
>но можно было улучшить ситуацию до 2 цветов на 8х1, подменяя аттрибут цвета после того, как телевизор нарисует линию
Только слишком это ресурсоёмко, так что в играх почти не использовалось (+ проблемы с таймингами на клонах).
>Еще и адресное пространство кадра было нелинейным.
Ну это для удобства сделано как раз:
LD HL, #4000; адрес экрана
INC L; перешли к следующему блоку пикселей 8×1
INC H; перешли к следующей строке знакоместа (при линейной адресации нужно было бы прибавить 32 (256/8) к HL)
Другое дело, что экран при этом ещё на три блока делится :)
Кстати говоря, обновлять экран в подобном древнем железе можно только во время обратного хода луча (VBlank или V/HBlank).
Есть кстати довольно подробное видео про разработку демок под C64:
www.youtube.com/watch?v=So-m4NUzKLw
Вот здесь интересные разборы отрисовки игр на Amiga
www.codetapper.com/amiga/sprite-tricks/
Вдруг не читали
А то бы играли мы все детство в нечто подобное.
Все же здорово, что мы застали эти игры) От АТАРИ до виртуальной реальности Окулус Рифта. Толи еще будет.
облака и кусты — это один и тот же рисунок
Моя жизнь не станет прежней.
Классные методы, вообще нетривиальные решения. Познавательно.
Это как сравнивать игры под iOS и Android. Сперва может показаться, что под iOS больше хороших игр, и вообще в среднем качество несколько выше. На деле же хороших игр примерно столько же, это просто шлака под Android больше выкладывается, т.к. порог вхождения существенно ниже.
Иногда всё-таки и крупные компании решаются на что-то такое. Самое очевидное — это наверное Portal.
А во времена NES/Денди всё казалось чем-то новым и необычным. Ну и игровой процесс несколько иначе строился. Тогда игру можно было пройти за час, но для этого иногда нужно было тренироваться месяц. Сейчас игры обычно проходятся гораздо дольше, но уже с первого раза.
Видео заблокированы
Неудивительно, мой коммент от 2014 года. Вопрос в том, что вы хотите от меня. Могу погуглить за вас:
https://www.youtube.com/watch?v=_TG3BEHdRHI
Жаль, в своё время мне не попалась эта игра.
Из длинных игр я помню названия Kid Cool и Super Mario Bros. 2.
Ещё у пары игр я не помню названий.
Kid Cool выносила мозг сложной физикой управления персонажем :)
Из длинных: Zanac, Jurassic Park, The Jungle Book, Felix The Cat (последняя длинная, но однообразная)
Ога, если заранее знать все фишки, может и проходятся, а если самому без подсказок играть, то это десятки, сотни, а может и тысячи раз повторения одних и тех же ошибок. Чего стоил поиск кристаллов в Jungle Book (и куда там нужно прыгнуть, чтобы попаст на нужную платформу) или какие команды на каком терминале нужно ввести в Jurassic Park, чтобы открыть ворота (и т.п.)
Длина игры на китайских клонах NES определялась качеством блока питания — часа через два-три он перегревался и отключался :(
Del
А как открыть "ресурсы" готовой игры, чтобы, например, перевести в ней тексты на русский?
Игры для NES/Famicom/Денди глазами программиста