-
Текущие переменные для управления видеокартой «Meteor»:
КООРДИНАТЫ:
xl, xh — координата X в пикселах (младший и старший байты)
yl, yh — координата Y в пикселах (младший и старший байты)
РАЗМЕРЫ ТАЙЛА ИЛИ СПРАЙТА:
dxl, dxh — ширина в пикселах (младший и старший байты)
dyl, dyh — высота в пикселах (младший и старший байты)
ЦВЕТА:
color_1_l, color_1_h — цвет 1 (младший и старший байты)
...
color_4_l, color_4_h — цвет 4 (младший и старший байты)
УПРАВЛЕНИЕ СЛОЯМИ:
layer — номер слоя, на котором рисуем (1-8)
layer_1_on — включение слоя 1 (0 = off, 1 = on)
layer_1_sxl, layer_1_sxh — смещение слоя 1 по-горизонтали (младший и старший байты)
layer_1_syl, layer_1_syh — смещение слоя 1 по-вертикали (младший и старший байты)
...
layer_8_on — включение слоя 8 (0 = off, 1 = on)
layer_8_sxl, layer_8_sxh — смещение слоя 8 по-горизонтали (младший и старший байты)
layer_8_syl, layer_8_syh — смещение слоя 8 по-вертикали (младший и старший байты)
Итого: 57 байтов
Возможно в дальнейшем:
УПРАВЛЕНИЕ ВЫВОДОМ СПРАЙТОВ:
mirror_h — зеркалить по горизонтали
mirror_v — зеркалить по вертикали
alpha — рисовать с учетом коэффициента прозрачности
-
zst,
mirrorh -зеркалить по горизонтали
mirrorv - зеркалить по вертикали
alpha - рисовть с учетом коэффициента прозрачности
-
Предлагаю следующие регистры:
accel_mode - выбор аппаратного ускорения: 0 - через регистр данных, 1 - БЛИТТЕР.
out_mode - режим вывода: 0 - вывод через регистр данных или блиттер, 1- режим ластика;
В режиме ластика при выводе через регистр данных запись любого значения в регистр данных приводит к к заполнению области вывода цветом очистки, при выводе блиттером область вывода заполняется цветом очистки.
out_control - регистр контроля. При выводе через блиттер, значение нулевого бита: 0 - пересылки нет( устанавливается после пересылки), запись 1 - начать пересылку; значение первого бита: 0 - данные из памяти брать последовательно, 1 - данные из памяти выравнивать в соответствии с регистрами dxl, dxh, dyl, dyh, alignment_value( этот режим работы блиттера полезен, когда нужно переслать подготовленную в памяти компьютера теневую область). При выводе через регистр данных, значение нулевого бита устанавливается и сохраняется значение 1 при последовательной записи значений в регистр данных, запись 0 приведёт к сбросу последовательного вывода и дальнейшее заполнение области вывода будет происходить сначала; значение первого бита игнорируются.
Пары регистров clear_color_1_h:clear_color_1_l .. clear_color_1_h:clear_color_1_l - двубайтное значение цвета очистки для каждого слоя с учётом значений прозрачности.
data_format - формат данных для вывода через регистр данных или блиттер:
0 - двуцветный вывод двумя первыми служебными цветами;
1 - двуцветный вывод двумя первыми служебными цветами с учётом маски;
2 - вывод служебными цветами;
3 - ВЫВОД ДВУБАЙТНЫМ ЗНАЧЕНИЕМ ЦВЕТА С УЧЁТОМ ПРОЗРАЧНОСТИ. Запись в регистр данных при таком формате последоватиельна - побойтово передаётся значение цвета.
alignment_value - значение ширины строки по которому происходит выравнивание данных блиттером при считывании данных из памяти.
bl_status - статус пересылки данных блиттером: 0 - пересылка закончена, 1 - пересылка идёт.
Пары регистров bl_addr_h:bl_addr_l - задают начало пересылаемой блиттером области данных в нутри страницы( для регистра bl_addr_h биты 7 и 6 игнорируются).
bl_num_page - номер страницы в которой начинается область данных пересылаемой блиттером.
Адрес назначения во внутренней памяти видеокарты при пересылке блиттером вычисляется автоматически исходя из значений регистров xl, xh, yl, yh. Блиттер сам выравнивае выводимые данные в области вывода и определяет количество пересылаемых байт используя значения регистров dxl, dxh, dyl, dyh. Другими словами - со стороны памяти компьютера данные можно брать с выравниванеием или последовательно, а со стороны области вывода данные выводятся с выравниванием автоматически.
Соглашение о выводе через регистр данных:
Последовательная запись значений в регистр данных приводит к последовательному заполнению области вывода, определяемую регистрами xl, xh, yl, yh, dxl, dxh, dyl, dyh. Перезапись одного из перечисленных регистров приводит к началу последовательного вывода в начало новой области вывода. Что бы сделать сброс последовательного вывода и вернутся к выводу в начало области вывода не переопределяя последнюю - необходимо ваоспользоваться регистром out_control.