Наконец-то с мая у меня дошли руки до этого поста. Речь пойдёт о популярной в 90х восьмибитной видеоприставке NES/Famicom известной у нас под именем Денди. Я в неё почти не играл, у меня тогда был ZX-Spectrum и он меня радовал заметно больше. Но уже в наше время, наблюдая за различными роликами про ретро компьютеры я заметил что во многих играх там мигают спрайты.
От этого глаза начинают через секунды слезиться и посылать друг-друга нафиг. Как можно играть и переться с этого, в отличии от мышей, которые "кололись, плакали, но продолжали залезать на кактус", я не понимаю. Стало интересно, почему так, оказалось, что многие говноигры пытались выжать из 8-битной приставки больше, чем позволяло её устройство.
Ограничение в восемь спрайтов на одной строке.
Слишком много подвижных объектов не сделаешь. Правда, некоторые игры
всё-таки делают, заставляя один из спрайтов исчезать на долю секунды,
что приводит к неприятному мерцанию.
Спрайт это кусочек 8x8 пикселей, не более 64 спрайтов всего, и не более 8
на одной строке, иначе они начинают мигать, но спрайты это не то, что
движется, они могут быть и неподвижными, напр., очки часто делают из
них. У Денди ограничения на количество спрайтов на одной строке, а
разработчики не всегда были внимательны и использовали слишком много
спрайтов. Как они умудрялись пустить такие подделки в продакшн уже другой вопрос. Спрайты из памяти картинки загружаются в оперативку внутри
видеопроцессора, там место для 64 спрайтов и не более. А видеопроцессор,
когда рисует строку, не может обработать больше 8 штук. Приходится отображать большее количество показывая их по очереди, отчего они разумеется мигают.
Более подробнее о характеристиках:
При формировании экрана в память
загружается палитра и тайлы. На каждом экране они могут быть разные. Так создаётся впечатление, что
игра гораздо более красочная, чем она есть на самом деле.
- На NES всё отображаемое на экране делится на спрайты и фон.
- Фон на NES делится на квадраты размером 8 на 8 пикселей, которые
называются тайлами. Итого таких квадратов 30 в высоту и 32 в ширину. Количество тайлов в памяти ограничено. При
этом фон может плавно двигаться горизонтально и/или вертикально.
- Всего NES может отображать около 53-55 цветов, но не все сразу, а только ограниченными наборами из палитр.
- Палитра — это набор из четырёх цветов, т.е. какие-то четыре цвета из этих 53-55 цветов
- Палитр для фона может быть только четыре, при этом один цвет в каждой из них должен быть одинаковым
- Каждая группа из четырёх тайлов (2x2) отображаемых на экране может быть ассоциирована с одной из этих палитр
- Все спрайты на экране одновременно могут быть размером либо 8x8, либо 8x16,но не вместе.
- В зависимости от размера всего их может быть до 64, но на одной строке может отображаться не
более восьми, даже если соответствующая область спрайта прозрачная,
поэтому слишком много подвижных объектов не сделаешь.
- Для спрайтов даются отдельные четыре палитры, один из цветов при этом считается за прозрачность.
Ссылки:
- Игры для NES/Famicom/Денди глазами программиста
https://habr.com/post/229187/
- Фильм про приставку в России 90х "Проклятие серого слонёнка"
https://youtu.be/rJQr3tnjHlg
|