3.2.4. Видеопроцессор Структурная схема видеопроцессора игровой приставки SEGA MEGA DRIVE приведена на рис. 3.6. Видеопроцессор игровой приставки SEGA MEGA DRIVE формирует сигналы трех основных цветов (R, G, В) и синхронизации. Они преобразуются в стандартный видеосигнал, передаваемый на линейный выход игровой приставки. Посредством отдельных шин данных, адреса и управления к видеопроцессору подключены микросхемы видеопамяти общим объемом 64 Кб. Видеопамять не входит в адресное пространство центрального процессора и доступна для записи и чтения только через регистры видеопроцессора или посредством контроллера прямого доступа к памяти. Используемый в игровой приставке видеопроцессор ориентирован на блочную графику на основе спрайтов: все изображение на экране строится из заранее заданных блоков размером 8x8 точек. Разрешение выводимой на экран картинки составляет 320x224 точки (40x28 символов). Рассмотрим более подробно процесс формирования изображения игровой приставкой SEGA MEGA DRIVE.
РИС. 3.6. Структурная схема видеопроцессора игровой приставки SEGA MEGA DRIVE Распределение видеопамяти В видеопамяти игровой приставки SEGA MEGA DRIVE хранится следующая информация: * знакогенератор, содержащий символы размером 8x8 точек, из которых строится рисунок; * две экранные страницы размером от 32x32 до 128x128 символов; * данные о спрайтах. Расположение этих областей памяти не является строго определенным, а задается программным путем через регистры видеопроцессора. Рассмотрим назначение каждой области. Знакогенератор Видеопроцессор игровой приставки SEGA MEGA DRIVE использует один знакогенератор, содержащий образы символов, из которых будет строиться все изображение. Максимальный размер знакогенератора составляет 2048 символов. Символы имеют фиксированный размер 8x8 точек, причем для задания цвета одной точки используется четыре бита. Следовательно, чтобы определить битовый образ одного символа, нужно 32 байта видеопамяти (по 4 байта для каждой из 8 строк). Применение четырех бит для каждой точки позволяет получить 16 различных цветов в пределах одного символа. Однако цвет с кодом 0 всегда интерпретируется как прозрачный, так что реально видимых цветов будет 15. Первым этапом, необходимым для формирования картинки на экране игровой приставки, является разработка одного или нескольких знакогенераторов, из которых будут составляться фоновое изображение и спрайты. Созданные знакогенераторы записываются в ПЗУ картриджа и во время выполнения программы по мере необходимости копируются в видеопамять. В качестве примера приведем описание символа знакогенератора с изображением буквы «А». На экране этот символ будет отображаться цветом с номером 2 из выбранной палитры. Все числа приведены в шестнадцатеричной системе счисления. ; Описание символа знакогенератора. de.1 $02222200 de.1 $22000220 de.1 $22000220 de.1 $22222220 de.1 $22000220 de.1 $22000220 de.1 $22000220 de.1 $00000000 Экранные страницы Две экранные страницы игровой приставки SEGA MEGA DRIVE содержат информацию о символах, из которых состоит изображение, выводимое на экран. Размер экранной страницы может изменяться от 32x32 до 128x128 символов. На каждый символ отводится по два байта (одно 16-разрядное слово). Назначения разрядов данного слова описываются ниже. D15 - приоритет. Сброс этого бита приведет к тому, что на экране появится вторая экранная страница, поверх нее первая и затем спрайты. При установке этого разряда в 1 у символа первой экранной страницы он будет отображаться поверх спрайтов и закрывать их. При установке в 1 бита приоритета у какого-либо символа второй экранной страницы он будет отображаться поверх первой экранной страницы. D14, D13 - номер палитры. Определяет номер одной из четырех палитр, используемой для задания цветов данного символа. D12 - вертикальное отражение. Если этот разряд установлен, то вместо символа выводится его зеркальное отражение относительно горизонтальной оси. D11 - горизонтальное отражение. Если этот разряд установлен, то вместо символа выводится его зеркальное отражение относительно вертикальной оси. D10 - DO - номер символа. Здесь задается номер одного из символов знакогенератора (от 0 до 2047), который будет показан в данной позиции экрана. Следует отметить, что для формирования цвета точки применяются четыре бита из знакогенератора и два бита, определяющие палитру. Таким образом, одновременно на экране могут отображаться 64 цвета. Однако число возможных цветов, поддерживаемых приставкой, равно 512, поскольку 6-разрядное значение цвета используется как индекс для обращения к одной из ячеек ОЗУ палитры, где записаны действительные 9-разрядные значения, задающие выводимый на экран цвет. Существует еще одна экранная страница - окно. При выводе на экран она совмещается с первой экранной страницей, затем полученное изображение накладывается на вторую экранную страницу, а поверх него располагаются спрайты. Формат окна ничем не отличается от формата обычной экранной страницы. Спрайты Видеопроцессор игровой приставки SEGA MEGA DRIVE позволяет работать с 80 спрайтами размером от 8x8 до 32x32 точки. Спрайт, как и картинка, строится из символов знакогенератора, поэтому размеры спрайта всегда кратны 8. При использовании спрайтов, размер которых превышает 8x8 символов, их изображения формируются из нескольких последовательно расположенных символов знакогенератора. В связи с применением спрайтов видеопроцессор приставки налагает важное ограничение: на одной линии экрана может находиться не более 20 спрайтов одновременно. Память спрайтов. Память спрайтов игровой приставки SEGA MEGA DRIVE представляет собой отдельную область в адресном пространстве видеопроцессора. Этот блок содержит всю необходимую информацию о положении каждого спрайта на экране и режиме его отображения. Для каждого из 80 спрайтов в памяти отведено по восемь байт, в которых находится следующая информация: * байты 1 и 2: сумма координаты верхнего левого угла спрайта по вертикали и числа 128. Значение вертикальной координаты может изменяться от 0 до 511; * байт 3: размеры спрайта. Назначение разрядов этого байта таково: D7 - D4 - не используются. D3, D2 - задание ширины спрайта: 00 - 8 точек; 01 - 16 точек; 10 - 24 точки; 11 - 32 точки. D1, D0 - определение высоты спрайта: 00 - 8 точек; 01 - 16 точек; 10 - 24 точки; 11 - 32 точки; байт 4: номер следующего по приоритету спрайта. С помощью данного байта можно произвольным образом менять порядок вывода спрайтов на экран и соответственно их приоритет (рис. 3.7). Все спрайты должны составлять один непрерывный список, а у последнего спрайта в этот байт записывается 0;
Рис. 3.7. Использование байта связи для задания приоритета спрайтов * байты 5, 6: атрибуты спрайта (приоритет, отражение, используемая палитра), а также номер первого символа спрайта в знакогенераторе. Формат этого слова аналогичен формату слова, которое описывает символы, выводимые на экран. Если размер спрайта превышает 8x8 точек, для его формирования применяются несколько последовательно расположенных символов. Схема генерации такого спрайта показана на рис. 3.8; * байты 7, 8: сумма координаты верхнего левого угла спрайта по горизонтали и числа 128. Значение горизонтальной координаты может изменяться от 0 до 511. ОЗУ палитры ОЗУ палитры представляет собой набор из 64 12-разрядных регистров, в которых хранятся данные о цветах, отображаемых на экране. Для определения цвета нужны только девять разрядов. С помощью 9-разрядных чисел можно задать 512 различных
РИС. 3.8. Формирование спрайтов, состоящих из нескольких символов оттенков, однако размер ОЗУ палитры ограничивает количество одновременно используемых цветов - их не должно быть больше 64. В знакогенераторе указываются четыре младших разряда цвета, а в байте, описывающем символ экранной страницы или спрайт, - два старших. При их совмещении получается 6-разрядное двоичное число в диапазоне 0-63, устанавливающее адрес расположения 12-разрядного кода выводимого на экран цвета в ОЗУ палитры. При описании цвета вводятся три 3-разрядных значения, определяющие интенсивность красной, синей и зеленой составляющих, другие три разряда не задействуются: D11 - D9 - интенсивность синего цвета; D8 - не используется; D7 — D5 — интенсивность зеленого цвета; D4 - не используется; D3 - D1 - интенсивность красного цвета; D0 - не используется. Способы доступа к ОЗУ палитры для чтения установленных значений и записи новых будут рассмотрены в разделе, посвященном регистрам видеопроцессора. Формирование изображения на экране Видеопроцессор совмещает два слоя фоновой картинки, спрайты и окно, после чего выводит полученный результат на экран телевизора. Рассмотрим этот процесс более подробно. Итак, перед началом формирования изображения в памяти должны располагаться: знакогенератор, две экранные страницы, изображение окна, информация о горизонтальной прокрутке и информация о спрайтах. Следует также помнить, что код цвета, у которого четыре младших разряда равны 0, обрабатывается видеопроцессором как прозрачный. Сначала совмещаются первая экранная страница и окно. Положение окна задается путем записи значений во внутренние регистры видеопроцессора с номерами 17 и 18. Более детально этот процесс рассматривается при описании регистров. Затем две экранные страницы и спрайты совмещаются в следующем порядке: 1. Экран, окрашенный в цвет фона. 2. Символы второй экранной страницы с битом приоритета, равным 0. 3. Символы первой экранной страницы с битом приоритета, равным 0. 4. Спрайты с битом приоритета, равным 0. 5. Символы второй экранной страницы с битом приоритета, равным 1. 6.Символы первой экранной страницы с битом приоритета, равным 1. 7. Спрайты с битом приоритета, равным 1. Процесс совмещения экранных страниц, окна и спрайтов поясняется на рис. 3.9. Чересстрочный режим Видеопроцессор игровой приставки SEGA MEGA DRIVE способен формировать изображение на экране в трех режимах: обычном, чересстрочном и чересстрочном с двойным разрешением. В обычном режиме на экран телевизора выводится растр размером 320x224 точки, причем четные кадры ничем не отличаются от нечетных. В чересстрочном режиме дважды отображается одна и та же картинка: в одном кадре в четных строках, а в другом - в нечетных. Это повышает четкость изображения, поскольку размер выводимого на экран фрагмента становится равным 320x448 точек. Изображение на четных и нечетных кадрах также не отличается.
Рис. 3.9. Формирование изображения видеопроцессором игровой приставки SEGA MEGA DRIVE При чересстрочном режиме с двойным разрешением совмещаются две различные части кадра, в результате чего получается картинка с большим разрешением. Каждый символ знакогенератора в таком случае должен занимать не 32, а 64 байта. Во время четных кадров на экран будут выводиться первые 32 байта символа в четные строки, а во время нечетных - вторые 32 байта в нечетные строки. Информация, отображаемая на четных и нечетных кадрах, различна; для человеческого глаза смена кадров незаметна, и два изображения объединяются в одно. Ниже рассматриваются встроенные функции обработки графики видеопроцессором игровой приставки SEGA MEGA DRIVE, способы доступа к видеопамяти и особенности программного обеспечения для видеопроцессора. Аппаратная прокрутка экрана В видеопамяти игровой приставки SEGA MEGA DRIVE имеется специальная область, задающая горизонтальное смещение строк экрана. Изменяя хранящиеся здесь данные, можно плавно прокручивать по горизонтали любые строки. В этой области памяти попарно записаны 16-разрядные числа, первое из которых представляет собой смещение для фрагмента первой экранной страницы, а второе - смещение для того же фрагмента второй экранной страницы. Далее следуют два числа, соответствующие смещению для следующего фрагмента и т.д. В зависимости от режима работы видеопроцессора смещения разрешается задавать тремя способами: для всего экрана, для каждой строки символов или для каждой строки экрана. Само 16-разрядное число интерпретируется как число со знаком в диапазоне от -32768 до 32767, что позволяет прокручивать изображение как вправо, так и влево. Для реализации вертикальной прокрутки экрана используется специальная область памяти, называемая VSRAM. Она не является частью видеопамяти, а представляет собой отдельное статическое ОЗУ объемом 80 байт, доступ к которому возможен через регистры видеопроцессора. В эту память также попарно записываются числа, равные величине вертикального смещения для отдельных блоков первой и второй экранных страниц. В зависимости от установленного режима можно задавать смещение либо для всего экрана сразу, либо для отдельных столбцов шириной по два символа (16 точек). Контроллер прямого доступа к памяти Контроллер прямого доступа к памяти (ПДП) игровой приставки SEGA MEGA DRIVE осуществляет передачу блока информации из ПЗУ или ОЗУ в видеопамять, а также обеспечивает пересылку данных внутри видеопамяти. Наиболее часто эта функция применяется во вре.мя кадрового синхроимпульса для быстрого обновления информации о положении спрайтов на экране, для смены изображения или для заполнения областей экрана. На время работы контроллера ПДП центральный процессор игровой приставки останавливается, однако сопроцессор Z80 продолжает функционировать до обращения к памяти центрального процессора. При использовании прямого доступа к памяти следует помнить о трех особенностях приставки SEGA MEGA DRIVE. Во-первых, видеопамять недоступна во время формирования изображения видеопроцессором, поэтому' пересылку данных посредством прямого доступа к памяти следует производить во время кадрового синхроимпульса. Наиболее часто вызов такой процедуры осуществляют во время обработки соответствующего запроса на прерывание. Во-вторых, во время прямого доступа к памяти центральный процессор приставки может использовать только область памяти, расположенную по адресам FF0000h - FFFFFFh. Поэтому программа должна переместить фрагмент, взаимодействующий с контроллером ПДП, из ПЗУ в верхнюю память В-третьих, адрес источника данных следует записать в регистр ПДП командой записи слова, например MOVE. W. Применять команды записи байта или двойного слова нельзя. Существуют три режима работы контроллера прямого доступа к памяти. Первый режим: передача информации из памяти центрального процессора в видеопамять, ОЗУ палитры или ОЗУ вертикальной прокрутки. При этом данные считываются из памяти центрального процессора словами по 16-разрядов и записываются в видеопамять побайтно, а в ОЗУ палитры и в ОЗУ вертикальной прокрутки - 16-разрядными словами. Второй режим: заполнение видеопамяти, когда во все ячейки видеопамяти в заданном диапазоне помещается один и тот же код. Третий режим: копирование видеопамяти, при котором пересылка данных осуществляется из одной области видеопамяти в другую. Такой режим часто используется для быстрого перемещения фрагментов изображения, расположенных в видеопамяти. С точки зрения программирования контроллер прямого доступа к памяти игровой приставки SEGA MEGA DRIVE представляет собой несколько регистров видеопроцессора. Регистры видеопроцессора В адресном пространстве центрального процессора игровой приставки SEGA MEGA DRIVE видеопроцессор представлен тремя 16-битными регистрами. С помощью этих регистров осуществляется доступ к видеопамяти, ОЗУ палитры и ОЗУ вертикальной прокрутки, а также к внутренним регистрам видеопроцессора и контроллера ПДП. Регистры располагаются по адресам C00000h, C00004h и C00006h. Рассмотрим назначение названных регистров и работу с ними при обращении к видеопамяти и регистрам видеопроцессора. Регистр данных Адрес: C00000h. Tип: запись/чтение. Назначение разрядов. В регистр записывается 16-разрядное значение, которое внутренние схемы видеопроцессора передадут в один из внутренних регистров видеопроцессора или в видеопамять. При чтении через этот регистр из видеопамяти получают слово, расположенное по адресу, который задается через регистр управления C00004h. Данный регистр также доступен при обращении по адресу C00002h. Регистр управления Адрес: C0 00 04h. Тип: запись/чтение. Назначение разрядов. При чтении и при записи назначение разрядов данного регистра различно. Кроме того, в регистр необходимо последовательно записать два 16-разрядных слова, поэтому назначение разрядов будет рассматриваться для каждого случая отдельно. При чтении становится доступным слово состояния видеопроцессора со следующими данными: D15-D10 - разряды не используются. D9 - разряд равен 1, если очередь записи в видеопроцессор пуста. D8 - разряд равен 1, если очередь записи в видеопроцессор полностью занята. D7 - разряд равен 1, если схемы видеопроцессора ожидают поступления кадрового синхроимпульса. D6 - разряд равен 1, если на одной строке оказалось слишком много (более 20) спрайтов. D5 - разряд равен 1, если видеопроцессор обнаружил наложение двух спрайтов (перекрываются пикселы спрайтов, у которых код цвета отличен от 0). D4 - разряд используется, когда видеопроцессор работает в чересстрочном режиме: 1 - отображается четный кадр; 0 - отображается нечетный кадр. D3 - наличие 1 в этом разряде соответствует режиму генерации видеопроцессором кадрового синхроимпульса, в противном случае формируется кадр. D2 - установка в 1 свидетельствует о выработке видеопроцессором в данный момент строчного синхроимпульса. Если же разряд сброшен, формируется строка изображения. D1 - разряд равен 1, когда контроллер прямого доступа к памяти пересылает данные. Если разряд равен 0, то контроллер ПДП находится в режиме ожидания. D0 - информация о стандарте видеосигнала приставки: 1 - работа в режиме PAL; 0 - работа в режиме NTSС. В случае записи в регистр назначение отдельных разрядов при обращении к внутренним регистрам видеопроцессора и при обращении к видеопамяти, ОЗУ палитры и ОЗУ вертикальной прокрутки также различается. Во время доступа к внутренним регистрам видеопроцессора в старшем байте записываемого в регистр числа указывается номер внутреннего регистра микропроцессора, а в младшем байте передаются данные, которые будут помещены в регистр: D15 - D13 - разряды, которые должны содержать двоичное число 100. D12 - D8 - номер внутреннего регистра видеопроцессора. D7 - D0 - данные, записываемые в регистр. Запись в регистр двойного слова (32-разрядного числа) эквивалентна двум последовательным операциям записи 16-разрядного слова, причем сначала сохраняются разряды D31 - D16 двойного слова, а затем разряды D15 - DO. При доступе к видеопамяти, ОЗУ палитры или ОЗУ вертикальной прокрутки в регистр управления помещается код, определяющий нужную область памяти, тип операции (чтение или запись), а также базовый адрес, начиная с которого разрешается доступ к информации. Для этого необходимо последовательно внести в регистр два 16-разрядных слова или одно двойное слово (в таком случае сначала сохраняются разряды D31 - D16, а затем D15 - D0). Структура слов, помещаемых в регистр управления для доступа к видеопамяти, ОЗУ палитры и ОЗУ вертикальной прокрутки и назначение отдельных разрядов показаны на рис. 3.10.
Рис. 3.10. Назначение разрядов слова, записываемого в регистр состояния видеопроцессора ID3 - ID0 - код режима доступа к видеопамяти. Возможны следующие значения: 0000 - чтение из видеопамяти; 0001 - запись в видеопамять; 0011- запись в ОЗУ палитры; 0100 - запись в ОЗУ вертикальной прокрутки: 0101 — чтение из ОЗУ вертикальной прокрутки; 1000 - чтение из ОЗУ палитры. А15 - А0 - адрес, с которого начинаются операции чтения или записи. Регистр счетчика развертки Адрес: С00008h. Тип: чтение. Назначение разрядов. Данный регистр представляет собой счетчик, который возвращает при чтении координаты точки, формируемой на экране в данный момент. В разрядах D15 - D8 передается координата по вертикали (от 0 до 239), а в разрядах D7 - D0 - координата но горизонтали (от 0 до 319). В чересстрочном режиме, когда на экране совмещаются две экранные страницы, координата по вертикали может изменяться в пределах от 0 до 479. В этом случае самый младший разряд координаты не передается, а в разряде D8 находится дополнительный (девятый) разряд координаты. Внутренние регистры видеопроцессора Все управление видеопроцессором осуществляется через 24 внутренних регистра, куда записываются коды, определяющие требуемые параметры изображения и режимы работы. Из регистра состояния можно считывать информацию о текущем режиме работы. Внутренние регистры видеопроцессора доступны только для записи, и обращаться к ним следует через регистр управления видеопроцессором, как было описано выше. Регистр 1 управления режимом работы Номер: 0. Назначение разрядов: D7 — D5 - не используются. В этих разрядах должен быть код 000. D4 - разрешение запроса на прерывание по фронту строчного синхроимпульса. Установка разряда в 1 приводит к тому, что при генерации строчного синхроимпульса центральному процессору игровой приставки посылается запрос на прерывание с приоритетом 4. Если разряд равен 0, то запрос на прерывание вырабатываться не будет. D3, D2 - не используются. В этих разрядах должен быть код 01. D1 - разрешение доступа к счетчику развертки. Если разряд установлен, то при обращении к регистру счетчика развертки C00008H координаты формируемой на экране точки недоступны (внутренний счетчик видеопроцессора остановлен). Чтобы внутренний счетчик передавал данные при чтении из регистра C00008H, разряд должен равняться 0. D0 - разряд не используется и должен быть сброшен. Регистр 2 управления режимом работы Номер: 1. Назначение разрядов: D7 - разряд не используется и должен быть сброшен. D6 - разрешение работы видеопроцессора. Если разряд равен 0, то видеопроцессор не формирует изображение на экране телевизора. Для генерации картинки необходимо, чтобы разряд равнялся 1. D5 - разрешение запроса на прерывание по кадровому синхроимпульсу. Когда разряд установлен в 1, при формировании фронта кадрового синхроимпульса центральному процессору игровой приставки будет послан запрос на прерывание с приоритетом 6. Установка разряда в 0 запрещает генерацию запроса на прерывание. D4 - разрешение работы контроллера прямого доступа к памяти. Чтобы программа могла передавать данные с использованием контроллера ПДП, этот разряд необходимо установить в 1. Если разряд сброшен, контроллер прямого доступа к памяти заблокирован. D3 - определение размера экрана по вертикали. В моделях системы NTSC разряд должен быть равен 0 (именно такие модели наиболее распространены на территории России). Модели, вырабатывающие видеосигнал в системе PAL, могут формировать изображение размером 30 или 28 символьных строк по вертикали. Если этот разряд установлен, картинка будет содержать 30 строк (240 точек) по вертикали, а если сброшен - 28 строк (224 точки). D2 - разряд не используется и должен быть равен 1. D1, D0 - разряды не используются и должны быть равны 0. Регистр базового адреса первой экранной страницы Номер: 2. Назначение разрядов. В регистр записываются три старших разряда (А15 - А13) адреса начала первой экранной страницы в видеопамяти. D7, D6 - разряды не используются и должны быть равны 0. D5 - D3 - разряды А15 - А13 базового адреса первой экранной страницы. D2 - D0 - разряды не используются и должны быть равны 0. Таким образом, если вы хотите, чтобы первая экранная страница начиналась в видеопамяти с адреса 8000h, в этот регистр необходимо поместить число 2 0h. Регистр базового адреса окна Номер: 3. Назначение разрядов. В регистр записываются пять старших разрядов (А15 - А11) адреса начала области с изображением окна в видеопамяти. D7, D6 - разряды не используются и должны быть равны 0. D5 - D2 - разряды А15 - А12 базового адреса окна. D1 - если видеопроцессор формирует изображение размером 40 символов по горизонтали, в этом разряде должен быть 0. Если же видеопроцессор работает в режиме 32 символа по горизонтали, сюда записывается разряд А11 базового адреса. D0 - разряд не используется и должен быть равен 0. Таким образом, если вы хотите, чтобы область окна в видеопамяти начиналась с адреса А000h, в этот регистр необходимо поместить число 28h. Регистр базового адреса второй экранной страницы Номер: 4. Назначение разрядов. В регистр записываются три старших разряда (А15 - А13) адреса начала второй экранной страницы в видеопамяти. D7 - D3 - разряды не используются и должны быть равны 0. D2 - D0 - разряды А15 - А13 базового адреса второй экранной страницы. Таким образом, если вы хотите, чтобы первая экранная страница начиналась в видеопамяти с адреса C000h, в этот регистр необходимо поместить число 06h. Регистр базового адреса области атрибутов спрайтов Номер: 5. Назначение разрядов. В регистр записываются семь старших разрядов (А15 - А9) адреса начала области атрибутов спрайтов в видеопамяти. D7 - разряд не используется и должен быть равен 0. D6 — D1 - разряды А15 - А10 базового адреса области атрибутов спрайтов. D0 - если видеопроцессор формирует изображение размером 40 символов по горизонтали, то разряд должен быть равен 0. Если же видеопроцессор работает в режиме 32 символа по горизонтали, сюда записывается разряд А9 базового адреса. Таким образом, если вы хотите, чтобы область атрибутов спрайтов располагалась в видеопамяти с адреса E800h, в этот регистр необходимо поместить число 74h. Регистр 6 Номер: 6. Назначение разрядов. Регистр не используется. Регистр цвета фона Номер: 7. Назначение разрядов. Данный регистр определяет цвет, в который будет окрашен фон экрана (самый нижний слой изображения). D7, D6 - разряды не используются и должны быть равны 0. D5, D4 - номер палитры (0-3). D3 - D0 - номер цвета в палитре (0-15). Регистр 8 Номер: 8. Назначение разрядов. Регистр не используется. Регистр 9 Номер: 9. Назначение разрядов. Регистр не используется. Регистр периода запроса на прерывание по строчному синхроимпульсу Номер: 10. Назначение разрядов. Записываемое в регистр 8-разрядное значение определяет периодичность запроса на прерывание, посылаемого видеопроцессором по фронту строчного синхроимпульса. Если сюда помещено значение 00h, запрос на прерывание будет генерироваться после формирования каждой строки; при значении 01h - после каждой второй строки; при 02h - после каждой третьей, и т.д. Регистр 3 управления режимом работы Номер: 11. Назначение разрядов: D7 - D4 - разряды не используются и должны быть равны 0. D3 - разрешение запроса на прерывание от внешнего устройства. Разряд необходимо установить в 1, чтобы при поступлении сигнала от внешнего устройства центральному процессору игровой приставки был послан запрос на прерывание с приоритетом 2. Если разряд сброшен, запрос на прерывание формироваться не будет. D2 — режим вертикальной прокрутки экрана. Если разряд равен 0, по вертикали прокручивается экран целиком; в противном случае осуществляется независимая прокрутка для каждых двух столбцов (16 точек) экранной страницы. D1 - D0 - режим горизонтальной прокрутки экрана: 00 - прокручивается экран целиком; 01 - значение не используется; 10 — прокрутка производится независимо для каждой символьной строки (8 точек) экранной страницы; 11 - прокрутка реализуется независимо для каждой строки экрана. Регистр 4 управления режимом работы Номер: 12. Назначение разрядов: D7 - разряд обязательно должен быть равен разряду D0. D6 - D4 - разряды не используются и должны быть равны 0. D3 - разрешение на формирование тени. Установите разряд в 1, чтобы на фоновой картинке появилась тень от спрайтов. Если разряд равен 0, то тень отображаться не будет. D2 - D1 - включение чересстрочного режима: 00 - обычный режим работы; 01 - чересстрочный режим; 10 - код не используется; 11 - чересстрочный режим с двойным разрешением. D0 - размер экрана по горизонтали: 0-32 символа (256 точек); 1-40 символов (320 точек). Регистр базового адреса области параметров горизонтальной прокрутки Номер: 13. Назначение разрядов. В регистр записываются шесть старших разрядов (А15 - А10) адреса начала области с данными для горизонтальной прокрутки экрана в видеопамяти. D7, D6 - разряды не используются и должны быть равны 0. D5 - D0 - разряды А15 - А10 области данных горизонтальной прокрутки. Регистр 14 Номер: 14. Назначение разрядов. Регистр не используется. Регистр увеличения адреса Номер: 15. Назначение разрядов. В данный регистр записывается 8-разрядное значение, которое видеопроцессор автоматически прибавляет к текущему адресу после обращения к видеопамяти. Для последовательного доступа к видеопамяти сюда помещается число 2, поскольку центральный процессор передает 16-разрядное значение, которое преобразуется видеопроцессором в два 8-разрядных. Чтобы прочитать содержимое какой-либо области видеопамяти, необходимо выполнить следующие действия: * записать в регистр управления C00004h слово с кодом, определяющим тип выполняемой операции, и адрес, начиная с которого будет выполняться чтение; * прочитать значение из видеопамяти, обратившись к регистру данных C00000h; * после обращения к регистру данных видеопроцессор автоматически прибавит к установленному адресу значение из регистра увеличения адреса; * при следующей операции чтения из регистра данных C00000h будет получено очередное значение из видеопамяти. Регистр размера области горизонтальной прокрутки Номер: 16. Назначение разрядов. Код, записываемый в данный регистр, определяет размер фрагмента изображения, который будет смещаться при использовании аппаратной прокрутки экрана. Иногда этот регистр называют регистром размера экранной страницы. D7, D6 - разряды не используются и должны быть равны 0. D5, D4 - определение размера прокручиваемой области по вертикали: 00 - 32 символа (256 точек); 01 - 64 символа (512 точек); 10 - код не используется; 11 - 128 символов (1024 точки). D3, D2 - разряды не используются и должны быть равны 0. D1, D0 - установка размера прокручиваемой области по вертикали: 00 - 32 символа (256 точек); 01 - 64 символа (512 точек); 10 - код не используется; 11 - 128 символов (1024 точки). Регистр горизонтальной координаты окна Номер: 17. Назначение разрядов: D7 - если разряд сброшен, окно располагается слева от базовой точки, в противном случае - справа. D6, D5 - разряды не используются и должны быть равны 0. D4 - D0 - определение координаты базовой точки окна по горизонтали: 00000 - левая граница экрана; 00001- - на один символ (8 точек) вправо; 00010 - на два символа вправо; и т.д. Процедура совмещения изображения экранной страницы и окна поясняется на рис. 3.11. Регистр вертикальной координаты окна Номер: 18. Назначение разрядов: D7 — если разряд равен 0, окно располагается выше базовой точки, если равен 1 — ниже. D6, D5 - разряды не используются и должны быть равны 0. D4 - D0 - установка координаты базовой точки окна по вертикали:
РИС. 3.11. Установка положения окна на экранной странице игровой приставки SEGA MEGA DRIVE 00000 - верхняя граница экрана; 00001 - на один символ (8 точек) вниз; 00010 - на два символа вниз; и т.д. Регистры длины блока контроллера ПДП Номер: 19, 20. Назначение разрядов. В эти два регистра записывается 16-разрядное число, определяющее длину блока, который будет перемещен с помощью контроллера ПДП. Младшие восемь разрядов записываются в регистр 18, а старшие - в регистр 19. Регистры адреса блока контроллера ПДП Номер: 21, 22, 23. Назначение разрядов. В эти три регистра записывается адрес начала блока данных, который будет копироваться с помощью контроллера ПДП. В регистр 21 записываются разряды А7 - А0адреса, в регистр 22 — А15 - А8, в регистр 23 - А22 -А16 адреса и код, определяющий режим работы контроллера ПДП. Рассмотрим назначение отдельных разрядов регистра более подробно: D7, D6 - определение типа выполняемой операции. Если разряд D7 равен 0, то блок данных из памяти центрального процессора передается в видеопамять. В этом случае в разряд D6 записывается разряд А23 адреса источника данных. Пересылка информации внутри видеопамяти осуществляется, если разряд D7 равен 1, причем режим зависит от состояния разряда D6: если он равен 0, то видеопамять заполняется посредством записи кода из самой первой ячейки во все ячейки блока; если равен 1, то фрагмент копируется внутри видеопамяти. D5 - D0 - разряды А22 - А16 адреса источника данных. Контроллер прямого доступа к памяти начинает пересылку данных сразу после записи в регистр 23. Для нормальной работы контроллера необходимо, чтобы команда записи в регистр 23 находилась во внутреннем ОЗУ приставки, расположенном по адресам FF0000h - FFFFFFh.
Далее >>