
- •Технический обзор sega genesis конфиденциально собственность sega
- •******* Содержание *******
- •§ 1 Спецификация экрана
- •§2 Внутреннее строение vdp
- •§ 3 Прерывания
- •§ 4 Порты vdp
- •§ 4 Регистры vdp
- •§ 6 Доступ к памяти vdp
- •Чтение из vram (Видеобуфера)
- •§ 7 Пересылка с помощю dma
- •3. Термин: Данные заполнения - байт.
- •§8 Прокрутка экрана (Скроллинг)
- •§ 11 Приоритет
- •3. Режим обратной совместимости
- •4. Системные порты ввода/вывода
- •§ 1 Номер версии
- •§ 2 Порт ввода/вывода
- •§ 4 Управление сопроцессором z80
- •§5 Ресурсы z80
- •5. Распределение vram
- •1 32 Символа по горизонтали
- •2 40 Символов по горизонтали
- •Заголовок картриджа пзу (rom) для mega drive
- •Звуковая система genesis руководство программиста содержание
- •II Управление z80-м со стороны 68k
- •III. Управление чипом fm
- •IV. Управление psg
- •Немножко о “Операторах”
- •Обзор регистров
- •Спецификация огибающей
- •Обзор регистров: Регистр 22h - lfo
- •Регистры 24h и 25h – Таймер a
- •Регистр 26h – Таймер b
- •Регистр 27h
- •Регистр 28h – Включение/выключение ноты
- •Регистры 2ah/2bh – 8 битный цап
- •Тестовая программа
- •Программируемый генератор звука (psg)
- •Частота тонального генератора
- •Управление генератором шума
§ 4 Регистры vdp
VDP имеет для записи регистры от #0 до #23 и для чтения все 25 регистров. Есть 2 режима для установок регистров. Один режим 4 (IV) и один режим 5 (V). Здесь пойдет речь о режиме 5, о режиме 4 смотрите секцию “MARK”. Если менять режим во время кадра, то можно получить разные эффекты.
РЕГИСТР РЕЖИМА №1
-
D7
D6
D5
D4
D3
D2
D1
D0
Регистр №0
0
0
0
IE1
0
1
M3
0
IE1 1 : Включает Строчное прерывание (уровень 4 для 68000)
0: Отключает Строчное прерывание (см. регистр №10)
M3 1 : Останов счетчика координат (X/Y).
0: Включает счетчик координат (X/Y)
РЕГИСТР РЕЖИМА №2
-
D7
D6
D5
D4
D3
D2
D1
D0
Регистр №1
0
DISP
IE0
M1
M2
1
0
0
DISP 1 : Включает отображение (картинка на экране)
0 : Отключает отображение (экран черный)
IE0 1 : Включает Кадровое прерывание (уровень 6 для 68000)
0 : Отключает Кадровое прерывание
M1 1 : DMA включен
0 : DMA выключен
M2 1 : Размер по вертикали 30 символов (режим PAL)
0 : Размер по вертикали 28 символов (режим PAL, в режиме NTSC всегда 0)
БАЗОВЫЙ АДРЕС ПЛОСКОСТИ A
-
D7
D6
D5
D4
D3
D2
D1
D0
Регистр №2
0
0
SA15
SA14
SA13
0
0
0
VRAM АДРЕС $XXX0_0000_0000_0000
БАЗОВЫЙ АДРЕС ДЛЯ ОКНА
-
D7
D6
D5
D4
D3
D2
D1
D0
Регистр №3
0
0
WD15
WD14
WD13
WD12
WD11
0
WD11 должен быть 0 в режиме 40 символов по горизонтали
VRAM АДРЕС $XXXX_X000_0000_0000 (режим 32 символов по горизонтали)
VRAM АДРЕС $XXXX_0000_0000_0000 (режим 40 символов по горизонтали)
БАЗОВЫЙ АДРЕС ПЛОСКОСТИ B
-
D7
D6
D5
D4
D3
D2
D1
D0
Регистр №4
0
0
0
0
0
SB15
SB14
SB13
VRAM АДРЕС $XXX0_0000_0000_0000
БАЗОВЫЙ АДРЕС АТРИБУТОВ СПРАЙТОВ
-
D7
D6
D5
D4
D3
D2
D1
D0
Регистр №5
0
AT15
AT14
AT13
AT12
AT11
AT10
AT9
AT9 должен быть 0 при режиме 40 символов в строке
VRAM АДРЕС $XXXX_XXX0_0000_0000 (32 символа в строке)
VRAM АДРЕС $XXXX_XX00_0000_0000 (40 символов в строке)
РЕГИСТР НЕ ИСПОЛЬЗУЕТСЯ
-
D7
D6
D5
D4
D3
D2
D1
D0
Регистр №6
0
0
0
0
0
0
0
0
ФОНОВЫЙ ЦВЕТ
-
D7
D6
D5
D4
D3
D2
D1
D0
Регистр №7
0
0
CPT1
CPT0
COL3
COL2
COL1
COL0
CPT1,0 : ПАЛИТРА ЦВЕТА
COL3~0 : КОД ЦВЕТА
РЕГИСТР НЕ ИСПОЛЬЗУЕТСЯ
-
D7
D6
D5
D4
D3
D2
D1
D0
Регистр №8
0
0
0
0
0
0
0
0
РЕГИСТР НЕ ИСПОЛЬЗУЕТСЯ
-
D7
D6
D5
D4
D3
D2
D1
D0
Регистр №9
0
0
0
0
0
0
0
0
РЕГИСТР СТРОЧНОГО ПРЕРЫВАНИЯ
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Регистр №10 |
BIT7 |
BIT6 |
BIT5 |
BIT4 |
BIT3 |
BIT2 |
BIT1 |
BIT0 |
Этот регистр используется для указания периода Строчного прерывания (с шагом в 1 строку)
Строчное прерывание разрешается битом IE=1 (в регистре режима №1)
• От переводчика:
• Регистр задает количество пропущенных строк до следующего прерывания (0 – каждая строка,
1 – каждая вторая и т.д.).
РЕГИСТР РЕЖИМА №3
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Регистр №11 |
0 |
0 |
0 |
0 |
IE2 |
VSCR |
HSCR |
LSCR |
IE2 1 : Разрешает Внешнее прерывание (уровень 2 для 68000)
0 : Запрещает Внешнее прерывание
* Смотрите Прерывания и системные порты ввода/вывода
VSCR: режим вертикальной прокрутки HSCR, LSCR: режим горизонтальной прокрутки
-
VSCR
ФУНКЦИЯ
HSCR
LSCR
ФУНКЦИЯ
0
ПОЛНАЯ ПРОКРУТКА
0
0
ПОЛНАЯ ПРОКРУТКА
1
КАЖДЫЕ 2 СИМВОЛА
0
1
ЗАПРЕЩЕНО
1
0
КАЖДЫЙ СИМВОЛ
1
1
КАЖДУЮ СТРОКУ ТОЧЕК
* ДЛЯ ОБОИХ ПЛОСКОСТЕЙ A И B
РЕГИСТР РЕЖИМА №4
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Регистр №12 |
RS0 |
0 |
0 |
0 |
S/TE |
LSM1 |
LSM0 |
RS1 |
RS0 0 : Режим 32 символа в строке
1 : Режим 40 символов в строке
RS1 0 : Режим 32 символа в строке
1 : Режим 40 символов в строке
* RS0 и RS1 должны иметь одинаковые значения.
32 символа 0000_XXX0
40 символа 1000_XXX1
S/TE 1 : Разрешает SHADOW (тень) и HIGHLIGHT (подсветку).
0 : Запрещает SHADOW (тень) и HIGHLIGHT (подсветку).
LSM1, LSM0 : установка чересстрочного режима
-
LSM1
LSM0
ФУНКЦИЯ
0
0
НЕ ЧЕРЕЗСТРОЧНЫЙ
0
1
ЧЕРЕЗСТРОЧНЫЙ
1
0
ЗАПРЕЩЕНО
1
1
ЧЕРЕЗСТРОЧНЫЙ (2x разрешение)
БАЗОВЫЙ АДРЕС ТАБЛИЦЫ ГОРИЗОНТАЛЬОЙ ПРОКРУТКИ
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Регистр №13 |
0 |
0 |
HS15 |
HS14 |
HS13 |
HS12 |
HS11 |
HS10 |
VRAM АДРЕС $XXXX_XX00_0000_0000
РЕГИСТР НЕ ИСПОЛЬЗУЕТСЯ
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Регистр №14 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
АВТОМАТИЧЕСКОЕ УВЕЛИЧЕНИЕ АДРЕСА
Этот регистр настраивает автоматическое увеличение адреса при доступе к ОЗУ.
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Регистр №15 |
INC7 |
INC6 |
INC5 |
INC4 |
INC3 |
INC2 |
INC1 |
INC0 |
INC7~0 : Число увеличения (0~$FF)
На это число увеличится счетчик адреса при каждом обращении к ОЗУ.
• От переводчика:
• Регистр задает число, на которое увеличится счетчик адреса. Если число равно 0, то счетчик адреса
не изменится. Для последовательного обращения необходимо занести число 1. Но при заполнении
знакогенератора удобнее пользоваться словами (WORD), потому, что символы хранятся в ПЗУ (ROM)
картриджа, а архитектура приставки не позволяет обращаться к ПЗУ (ROM) побайтно. Поэтому можно
перебрасывать информацию из ПЗУ (ROM) в VRAM (Видеобуфер) словами (WORD). Число регистра
автоматического увеличения адреса при этом должно быть равно 2.
• Регистр действует на все типы ОЗУ: VRAM (видеобуфер), CRAM (ОЗУ цвета), VSRAM (ОЗУ прокрутки) и т.д.
РАЗМЕР ПРОКРУТКИ
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Регистр №16 |
0 |
0 |
VSZ1 |
VSZ0 |
0 |
0 |
HSZ1 |
HSZ0 |
VSZ1 |
VSZ0 |
ФУНКЦИЯ |
|
HSZ1 |
HSZ0 |
ФУНКЦИЯ |
0 |
0 |
32 символа в высоту |
|
0 |
0 |
32 символа в ширину |
0 |
1 |
64 символа в высоту |
|
0 |
1 |
64 символа в ширину |
1 |
0 |
ЗАПРЕЩЕНО |
|
1 |
0 |
ЗАПРЕЩЕНО |
1 |
1 |
128 символов в высоту |
|
1 |
1 |
128символов в ширину |
* ДЛЯ ОБОИХ ПЛОСКОСТЕЙ A И B
ПОЗИЦИЯ ОКНА ПО ГОРИЗОНТАЛИ
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Регистр №17 |
RIGHT |
0 |
0 |
WHP5 |
WHP4 |
WHP3 |
WHP2 |
WHP1 |
RIGHT 0 : Окно с левой стороны от базовой точки.
1 : Окно с правой стороны от базовой точки.
WHP5 ~ 1 Базовая точка по горизонтали 0=Слева;
1=1 символ вправо;
2=2 символа вправо; и т.д.
ПОЗИЦИЯ ОКНА ПО ВЕРТИКАЛИ
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Регистр №18 |
DOWN |
0 |
0 |
WVP4 |
WVP3 |
WVP2 |
WVP1 |
WVP0 |
DOWN 0 : Окно сверху от базовой точки.
1 : Окно снизу от базовой точки.
WVP4 ~ 0 Базовая точка по вертикали 0=Вверху;
1=1 символ вниз;
2=2 символа вниз; и т.д.
МЛАДШИЙ БАЙТ СЧЕТЧИКА DMA
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Регистр №19 |
LG7 |
LG6 |
LG5 |
LG4 |
LG3 |
LG2 |
LG1 |
LG0 |
СТАРШИЙ БАЙТ СЧЕТЧИКА DMA
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Регистр №20 |
LG15 |
LG14 |
LG13 |
LG12 |
LG11 |
LG10 |
LG9 |
LG8 |
LG15~0 : СЧЕТЧИК DMA
• От переводчика:
• Счетчик DMA задает размер пересылаемой (копируемой) области памяти.
• Значение LG0 – LG15 указывает на количество слов (WORD), т.е. если надо переместить с помощью DMA 256 байт,
число LG должно быть равно 128.
МЛАДШИЙ БАЙТ АДРЕСА ОРИГИНАЛА DMA
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Регистр №21 |
SA8 |
SA7 |
SA6 |
SA5 |
SA4 |
SA3 |
SA2 |
SA1 |
СРЕДНИЙ БАЙТ АДРЕСА ОРИГИНАЛА DMA
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Регистр №22 |
SA16 |
SA15 |
SA14 |
SA13 |
SA12 |
SA11 |
SA10 |
SA9 |
СТАРШИЙ БАЙТ АДРЕСА ОРИГИНАЛА DMA
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Регистр №23 |
DMD1 |
DMD0 |
SA22 |
SA21 |
SA20 |
SA19 |
SA18 |
SA17 |
SA22~1 : Адрес оригинала DMA
DMD1, 0 : Режим DMA
-
DMD1
DMD0
ФУНКЦИЯ
0
SA23
ИЗ ПАМЯТИ В VRAM
1
0
ЗАПОЛНЕНИЕ VRAM
1
1
КОПИРОВАНИЕ VRAM
• От переводчика:
• При инициализации сервиса DMA, необходимо задать размер копируемой/заполняемой области в словах (WORD).
Затем записывается адрес источника и режим. ВАЖНО! Запись адреса начинается с младшего адреса (Регистр №21),
затем записывается средний байт адреса (Регистр №22) а последним записывается старший байт адреса и
режим работы (Регистр №23). Последним записывается адрес приемника. DMA начинает работу сразу после
записи адреса приемника. Кроме того, команда записи в регистр № 23 и адреса приемника должны находится во
внутреннем ОЗУ приставки (Адреса $FF0000 - $FFFFFF). Более подробно о сервисе DMA смотрите ниже.
• Как показала практика, иногда программа инициализации DMA работает и в ПЗУ. Видимо дело в выравнивании команд
процессора М68000 по четным и кратным адресам. Это связано с тем, что из-за особенностей схемы приставки
М68000 может читать из ПЗУ только словами (WORD).