Вопрос

Мне интересно, как NES отображает свою графическую мышцу. Я исследовал вещи онлайн и прочитал его, но мне интересно, о последней вещнице: Наобщает.

По сути, от того, что я прочитал, каждый блок 8x8 в NES имеете домена в таблице шаблона, который содержит графическую память. Кроме того, именем также имеет таблицу атрибута, которая устанавливает определенную цветовую палитру для каждого блока 16x16. Они связаны вместе, как это:

(При условии 16 8х8 блоков) Начери с ABCD = указатели на данные спрайты:

ABBB
CDCC
DDDD
DDDD

Таблица атрибутов, с 1 2 3 = указатели на данные цвета палитры, с <значением ссылки на левую, ^ выше, а влево и выше:

1<2<
^'^'
3<3<
^'^'

Итак, в приведенном выше примере, блоки будут окрашены как так

1A 1B 2B 2B

1C 1D 2C 2C

3D 3D 3D 3D

3D 3D 3D 3D

Теперь, если у меня это на фиксированном экране - он отлично работает! Поскольку разрешение NES составляет 256x240 пикселей. Теперь, как эти таблицы корректируются для прокрутки?

Поскольку именем 0 может прокрутить на именем 1, и если вы продолжаете прокрутку, имеющуюся с name 0, снова обернутся. Что я получаю. Но то, что я не получаю, это то, как прокрутить атрибут таблицы, а также вокруг. От того, что я читал в Интернете, 16x16 блоки, которые он назначает атрибуты для того, чтобы вызвать цветные искажения на краевых плитках экрана (как видно, когда вы прокрутите слева направо и наоборот в SMB3).

Концерн у меня есть, это то, что я понимаю, как прокрутить на собственный доступ, но как вы прокрутите таблицу атрибута? Для интенсивности, если у меня есть зеленый блок на левой стороне экрана, перемещение экрана вправо, следует ли в теории, привести к тому, что плитки вправо, чтобы быть зелеными, пока они не будут двигаться в рамках, на которые они вернутся к их нормальные цвета.

~~~~ edit: Я хочу указать, что я знаю о сканированных, х и Ю. Эта мысль просто побежала через мой разум.

Скажем, я в Scanline Y 10. Это означает, что я читаю 10 значений в моих наменяемых таблицах горизонтально. Это будет означать, что мой первый столбец выключен из экрана, так как он имеет только ширину пикселей 8. Однако атрибут цвета остается, поскольку он имеет ширину 16.

Предполагая, что атрибут цвета для всей колонны зеленый, я бы правильно, предположим, что пользователю, первые 6 пикселей слева от экрана будут окрашены зеленым, а самые главные 10 на экране также должны быть зелеными? Итак, я был бы правильным в моем предположении, что в соответствии с экраном слева?

Это было полезно?

Решение

Этот сайт Я уверен, что вы уже очень, очень знакомы. Я буду предисловите это, сказав, что никогда не добрался до программы для NES, но я очень переживаю со всем оборудованием GameBoy, который когда-либо был выпущен, и NES делится многими, аааанимающими с ГБ / ДМГ. Я собираюсь поспорить, что вам либо нужно сделать одну из нескольких вещей:

  1. Не прокрутите таблицу атрибута. Убедитесь, что ваши уровни имеют иллюстрацию цветовых блоков вдоль направления, которое вы двигаетесь. Я думаю, что многие игры первого поколения сделали это.

  2. Продолжайте и дайте ограниченную прокрутку атрибута - просто убедитесь, что области, где происходят изменения, являются частично разделяемыми, либо достаточно разделяемыми, либо достаточно, чтобы изменения не будут задельными.

  3. Выберите свой старый таймер Skool atari 2600 и время Пишите, чтобы зарегистрировать $ 2006 в конце обновления HBLank, чтобы получить подмежку цвета, который вам нужно, подождите несколько тиков, затем вернитесь в период возврата HBLank, чтобы левый край следующего линия не затронута. У меня есть ощущение, что это решение используется чаще всего, но без действительно хорошего эмулятора и терпения, это будет боль в заднице. Он также будет ест немного в вашем общем использовании ЦП, поскольку вы должны ждать в прерываниях на нескольких линиях сканирования, чтобы сделать ваш эффект.

Я хотел бы, чтобы у меня был более конкретный ответ для вас, но это, надеюсь, немного поможет. Благодарность благодарности GB / DMG имели немного более продвинутую систему прокрутки. :)

Другие советы

Как Super Mario Bros. 3 и приключения Kirby's Adventure отображают окраски артефактов на краю экрана при проведении прокрутки. Я верю, что обе игры устанавливают бит, который заготовки левые 8 пикселей экрана, так что 0-8 пикселей будут затронуты на любом кадре.

Если я правильно помню, приключения Кирби всегда пытаются поставить цветные колонны на стороне экрана, который прокручивается, чтобы сделать его менее заметным. Я не думаю, что эти артефакты предотвратимы без перехода на вертикальное зеркалирование, которое вводит свои трудности.

Отказ от ответственности: Это было как пять лет, так как я написал любой код NES.

Каждый доменный имеет свой собственный атрибут таблица, поэтому при прокрутке не должно прокручивать графические артефакты. Тип цвета глюки, который вы ссылаетесь, на самом деле это только проблема, если ваша игра прокручивается как вертикально, так и горизонтально. У вас есть только два наобщающих, поэтому прокрутка обоих способов требует, чтобы вы каннибализовали видимый экран. Существуют различные решения этой проблемы, отличное резюме которого можно найти в этом посте Несдева:

http://nesdev.cparodius.com/bbs/viewtopic.php?p=58509#58509.

Этот сайт может иметь некоторую помощь.http://www.games4nintendo.com/nes/faq.php#4.

(Поиск «Что случилось с $ 2005/2006?» И начните читать вокруг этой области.)

Он в основном выглядит как невозможно получить его Pixel Perfect, однако те, кто будет битами, вы, вероятно, собираетесь надо будет посмотреть.

Хотел бы я быть больше помощи.

Каждый доводчик имеет свой собственный атрибут. Если вы ограничиваете свой игровой мир на два экрана, вам нужно только один раз, вам нужно будет только записать имени и таблицы атрибутов. Тяжелая часть приходит, когда вы пытаетесь заставить миры больше двух экранов. Super Mario Bros. 1 сделал это, прокрутив справа, упаковывая по мере необходимости, и рендеринг уровня одного столбца блоков за раз (16 пикселей), прежде чем этот столбец появился. Я не знаю, как можно было бы подковить это эффективно (имейте в виду, что у вас есть только миллисекунды Vblank Time).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top