Блин, чё вы как дети. Есть же всё описанное, переводить не собираюсь, дока на инглише, встудию (прикрепил)...
А теперь переведём отрывок:
Оригинал:
13.) Background Layers
----------------------------------------------------------------------------
The VDP manages two background layers, called plane A and plane B.
Name Tables
-----------
There are three tables stored in video RAM that define the layout for
planes A, B, and W.
Each table is a matrix of 16-bit words. Each word has the following format:
pccvhnnnnnnnnnnn
p = Priority flag
c = Palette select
v = Vertical flip
h = Horizontal flip
n = Pattern name
The pattern name is the upper 11 bits of the physical address of pattern
in video RAM. Bit zero of the name is ignored in interlace mode 2.
The vertical and horizontal flip flags tell the VDP to draw the pattern
flipped in either direction.
The palette select allows the pattern to be shown in one of four
16-color palettes.
The priority flag is described later.
The name tables for plane A and B share the same dimensions. The name
table size cannot exceed 8192 bytes, so while a 64x64 or 128x32 name
table is allowed, a size of 128x128 or 64x128 is invalid.
The name table for plane W is 32x32 in 32-cell mode, and 64x32 in 40-cell
mode. This size is fixed and is entirely dependant on the display width.
Window
------
The window plane operates differently from plane A or B. It can be thought
of a 'replacement' for plane A which is used under certain conditions.
That said, plane A cannot be displayed in any area where plane W is
located, it is impossible for them to overlap.
Registers 17 and 18 define an area which the window is restricted to.
In terms of priority and intensity calculation for shadow / hilight mode,
plane W is treated _exactly_ the same as plane A.
Horizontal Scrolling
--------------------
The horizontal scroll table holds the scroll value for every line of
both planes A and B, that can be positioned anywhere within video RAM.
Each entry of the scroll table is a 16-bit word. It has the following
format:
------xxxxxxxxxx
x = Horizontal scroll value (0-3FFh)
Bits D15 through D10 are ignored by the VDP.
The lower three bits of the scroll value provide a pixel offset into each
column comprised of one pattern. The upper seven bits provide an offset
into each column of the name table (0-127).
When the scroll value is larger than the width of the playfield, the
display wraps horizontally.
Scroll values for planes A and B are stored in an interleaved fashion.
Entry #0 of the table is for plane A, entry #1 is for plane B, and this
repeats for the entire length of the table.
The manual says the scroll table is 960 bytes in size,
and this seems like an accurate figure, considering the scroll table
address bits suggest the table can be 1024 bytes.
However, I do not know what happens in double-resolution interlace
mode. To provide a scroll entry for both planes on every line, a total
of 1920 bytes would be needed. (480 lines x 2 planes x 2 bytes per line)
Here is some "C" pseudocode to illustrate how the VDP reads the scroll
table depnding on the settings of bits 0 and 1 of register #11:
void get_scroll(int line, int *scroll_a, int *scroll_b)
{
switch(vdp_reg[11] & 3)
{
case 0x00: /* Full screen */
*scroll_a = *(word *)vram[hscb + 0];
*scroll_b = *(word *)vram[hscb + 2];
break;
case 0x01: /* First eight lines */
*scroll_a = *(word *)vram[hscb + ((line & 7) * 2) + 0];
*scroll_b = *(word *)vram[hscb + ((line & 7) * 2) + 2];
break;
case 0x02: /* Every row */
*scroll_a = *(word *)vram[hscb + ((line & ~7) * 2) + 0];
*scroll_b = *(word *)vram[hscb + ((line & ~7) * 2) + 2];
break;
case 0x03: /* Every line */
*scroll_a = *(word *)vram[hscb + (line * 2) + 0];
*scroll_b = *(word *)vram[hscb + (line * 2) + 2];
break;
}
}
A scroll mode setting of 01b is not valid; however the unlicensed version
of Populous uses it. This mode is identical to per-line scrolling, however
the VDP will only read the first sixteen entries in the scroll table for
every line of the display.
----------------------------------------------------------------------------
14.) Priority
----------------------------------------------------------------------------
The VDP manages a fairly complex system of priorities between the two
background layers and sprites. The basic ordering is:
(back) (front)
A > B > C > D > E' > F' > G'
' = Denotes high priority
A = Backdrop color
B = Low priority plane B
C = Low priority plane A
D = Low priority sprites
E = High priority plane B
F = High priority plane A
G = High priority sprites
The sprite priority bit does not affect inter-sprite priority, only the
relation between background data. Low priority sprites *can* overlap high
priority sprites. Games that do this to mask other sprites include
Castlevania Bloodlines, Raiden Trad, and Alien Soldier.
----------------------------------------------------------------------------
15.) Sprites
----------------------------------------------------------------------------
The Genesis can display a total of eighty 32x32 15-color sprites.
There are of course various restrictions on the display capacity, based
on current configuration of the VDP.
Sprite Attribute Table
----------------------
All sprite data is stored in a region of VRAM called sprite attribute table.
The table is 640 bytes in size. Each 8-byte entry has the following format:
Index + 0 : ------yy yyyyyyyy
Index + 2 : ----hhvv
Index + 3 : -lllllll
Index + 4 : pccvhnnn nnnnnnnn
Index + 6 : ------xx xxxxxxxx
y = Vertical coordinate of sprite
h = Horizontal size in cells (00b=1 cell, 11b=4 cells)
v = Vertical size in cells (00b=1 cell, 11b=4 cells)
l = Link field
p = Priority
c = Color palette
v = Vertical flip
h = Horizontal flip
n = Sprite pattern start index
x = Horizontal coordinate of sprite
Вольный перевод от меня... о, на сайт выложу потом.
13.) Фоновые (задние) Слои
----------------------------------------------------------------------------
VDP управляет двумя фоновыми слоями, называющимися плоскость A (plane A) и плоскость B (plane B).
Name Tables
-----------
Существует три таблицы, тусующиеся в видео памяти (VRAM) которые определяют схему отображения
плоскостей A, B, и W (Window - окно).
Каждая таблица это матрица из 16-битовых слов (word-ов). Каждое слово имеет следуйщий формат:
pccvhnnnnnnnnnnn
p = Priority flag (Флаг приоритета)
c = Palette select (Номер палитры)
v = Vertical flip (Вертикальный ... нету русского слова, короче отобразить ли вертикально зеркалом... (mirror) )
h = Horizontal flip (Горизонтальный флип)
n = Pattern name (Имя шаблона)
Имя шаблона это 11 старших битов (upper 11 bits) физического адреса шаблона
в видео памяти (VRAM). Нулевой бит имени шаблона игнорируется в interlace(черезстрочность) режиме 2.
Вертикальный и горизонтальный флип флаги говорят VDP нарисовать шаблон флипнуто в соответственных направлениях.
Выбор палитры допускает показ шаблона в одной из четырёх 16-цветовых палитр.
Флаг приоритета будет описан пожже.
Таблицы плоскостей A, B имеют одну размерность. Таблицы плоскостей
не могут превосходить размер 8192 байта, поэтому разрешены таблицы
размерами 64x64 или 128x32, а размеры 128x128 или 64x128 запрещены.
Таблица плоскости W имеет размер 32x32 в 32-клеточном режиме, и 64x32 в 40-клеточном режиме
Этот размер фиксирован, и полностью зависит от размера дисплея.
Окно
------
Плоскость окна работает по-другому, в отличии от плоскостей A или B. Её можно представлять
как "замену" для плоскости A, которая используется в некоторых условиях.
Плоскость A не может быть показана в любой месте где плоскость W находится,
они никогда не перекрывают друг друга.
Регистры 17 и 18 определяют область где окно запрещено.
In terms of priority and intensity calculation for shadow / hilight mode,
plane W is treated _exactly_ the same as plane A.
Горизонтальный скролл (прокрутка)
--------------------
The horizontal scroll table holds the scroll value for every line of
both planes A and B, that can be positioned anywhere within video RAM.
Each entry of the scroll table is a 16-bit word. It has the following
format:
------xxxxxxxxxx
x = Horizontal scroll value (0-3FFh)
Bits D15 through D10 are ignored by the VDP.
The lower three bits of the scroll value provide a pixel offset into each
column comprised of one pattern. The upper seven bits provide an offset
into each column of the name table (0-127).
When the scroll value is larger than the width of the playfield, the
display wraps horizontally.
Scroll values for planes A and B are stored in an interleaved fashion.
Entry #0 of the table is for plane A, entry #1 is for plane B, and this
repeats for the entire length of the table.
The manual says the scroll table is 960 bytes in size,
and this seems like an accurate figure, considering the scroll table
address bits suggest the table can be 1024 bytes.
However, I do not know what happens in double-resolution interlace
mode. To provide a scroll entry for both planes on every line, a total
of 1920 bytes would be needed. (480 lines x 2 planes x 2 bytes per line)
Here is some "C" pseudocode to illustrate how the VDP reads the scroll
table depnding on the settings of bits 0 and 1 of register #11:
void get_scroll(int line, int *scroll_a, int *scroll_b)
{
switch(vdp_reg[11] & 3)
{
case 0x00: /* Full screen */
*scroll_a = *(word *)vram[hscb + 0];
*scroll_b = *(word *)vram[hscb + 2];
break;
case 0x01: /* First eight lines */
*scroll_a = *(word *)vram[hscb + ((line & 7) * 2) + 0];
*scroll_b = *(word *)vram[hscb + ((line & 7) * 2) + 2];
break;
case 0x02: /* Every row */
*scroll_a = *(word *)vram[hscb + ((line & ~7) * 2) + 0];
*scroll_b = *(word *)vram[hscb + ((line & ~7) * 2) + 2];
break;
case 0x03: /* Every line */
*scroll_a = *(word *)vram[hscb + (line * 2) + 0];
*scroll_b = *(word *)vram[hscb + (line * 2) + 2];
break;
}
}
A scroll mode setting of 01b is not valid; however the unlicensed version
of Populous uses it. This mode is identical to per-line scrolling, however
the VDP will only read the first sixteen entries in the scroll table for
every line of the display.
----------------------------------------------------------------------------
14.) Приоритет
----------------------------------------------------------------------------
VDP управляет сложной системой приоритетов между двумя фоновыми слоями
и спрайтами. Основной порядок:
(back) (front)
A > B > C > D > E' > F' > G'
' = Означает высокий приоритет
A = Цвет заднего фона
B = Низкого приоритета плоскость B
C = Низкого приоритета плоскость A
D = Низкого приоритета спрайты
E = Высокого приоритета плоскость B
F = Высокого приоритета плоскость A
G = Высокого приоритета спрайты
Бит приоритета в спрайте, не влияет на приоритеты между спрайтами, только
на позицию между слоями. Спрайт низкого приоритета *может* перекрыть
спрайт высокого приоритета. Игры делают это, чтобы скрыть другие спрайты:
Castlevania Bloodlines, Raiden Trad, и Alien Soldier.
----------------------------------------------------------------------------
15.) Спрайты
----------------------------------------------------------------------------
Genesis может показать всего восемьдесят 32x32 15-цветных спрайтов.
Они конечно имеют разные ограничения, основанные на текущей
конфигурации VDP.
Таблица атрибутов спрайтов
----------------------
Все данные о спрайтах записаны в VRAM в месте, называемом "таблица атрибутов спрайтов"
Эта таблица размером 640 байтов. Каждая 8-байтовая запись имеет следующий формат:
Index + 0 : ------yy yyyyyyyy
Index + 2 : ----hhvv
Index + 3 : -lllllll
Index + 4 : pccvhnnn nnnnnnnn
Index + 6 : ------xx xxxxxxxx
y = Вертикальная координата спрайта (сверху вниз)
h = Горизонтальный размер в клетках (cell) (в тайлах) (00b=1 cell, 11b=4 cells)
v = Вертикальный размер в клетках (00b=1 cell, 11b=4 cells)
l = Поле линковки (соединения... привязки, как хотите так и называйте).
p = Приоритет
c = Цветовая палитра
v = Вертикальный флип
h = Горизонтальный флип
n = Индекс начала спрайтового шаблона
x = Горизонтальная координата шаблона
Не всё перевёл... если чо, поможет гугл.