====== Pattern Composer ======
{{pac.png?nolink}}
Компоновщик знакоместной графики (в дальнейшем именуется PAC), входит в состав [[msx:maestro:maestro|ПС «Маэстро»]].
Для работы программы Pattern Composer необходим компьютер [[msx:msx_2|]] оснащенный [[msx:general_purpose_port:general_purpose_port#mouse|манипулятором мышь]] (в дальнейшем просто мышь). Основное назначение РАС — подготовка графики для программ, которые работают в Screen 2 и Screen 4 (для [[msx:yamaha_v9938:yamaha_v9938|V9938]] в режимах [[msx:yamaha_v9938:yamaha_v9938#g2|Graphics 2]] и [[msx:yamaha_v9938:yamaha_v9938#g3|Graphics 3]]). Компьютер [[msx:msx_2|]] используется в качестве инструментальной машины из–за расширенных требований к человеко-машинному интерфейсу PAC (работа с мышью, оконные меню и пр.) и наличия большего количества оперативной памяти для реализации функций РАС. Графика, порождаемая РАС полностью совместима с [[msx:msx_1|]].
При работе с РАС, наиболее предпочтительными являются компьютеры [[msx:msx_2|]], имеющие аппаратуру [[msx:ram:ram#mapper|Memory Mapper]] и более 64 кбайт ОЗУ. Это связано с тем, что при наличии [[msx:ram:ram#mapper|Memory Mapper]], РАС размещает все свои оверлейные программные сегменты и полиэкран пользователя в мэппируемой памяти и не производит дополнительных обращений к диску во время работы. Тем не менее, РАС может работать и на компьютерах [[msx:msx_2|]], имеющих только 64 кбайт RAM и 128 кбайт VRAM. В этом случае, полиэкран пользователя располагается в VRAM (что несколько замедляет работу по сравнению с [[msx:ram:ram#mapper|Memory Mapper]]), a программные сегменты подгружаются по мере необходимости с диска.
РАС написан на языке С (компилятор [[bds_c:bds_c|BDS C]]) с использованием [[msx:maestro:#grplib|Графической Библиотеки MSX для BDS C]].
Для работы используется [[msx:dos103x:|]] (изменённая Леонидом Бараз)
{{:msx:maestro:pac:ar_pac_3_04.dsk|Диск Pattern Composer, версия 3.04}}
[[+tab|wmsx>?MOUSE_MODE=1&DISKA_URL=/_media/msx:maestro:pac:ar_pac_3_04.dsk|Запустить в WebMSX]]
{{:msx:maestro:devdisk_-_pattern_composer_3.04.dsk|Диск c исходным кодом Pattern Composer, версия 3.04}}
{{anchor:commandline}}
====== Командная строка ======
Примеры запуска PAC из командной строки:
* Простой запуск pac
PAC будет загружен и выполнен. По умолчанию он будет использовать стандартную системную библиотеку шаблонов/цветов, находящуюся в файле ''PAC.COM''
* Если Вы планируете использовать собственную библиотеку ''MYLIB.LIB'' (ранее созданную и сохранённую на диске с помощью PAC), выполните: pac l=mylib.lib
* Если вы планируете автоматически загружать свою собственную таблицу [[#mnt|Multi-screen Name Table (MNT)]] с именем ''MYPIC.MNT'', просто выполните: pac mypic.mnt
или pac l=mylib.lib mypic.mnt
(этот пример загрузит файлы ''LIB'' и ''MNT''). Специально подготовленный файл ''P.BAT'' поможет Вам загрузить файлы ''LIB'' и ''MNT'' вместе.
Полный формат командной строки для вызова PAC:
pac [l=libfile] [файл1 ... [файлN]]
{{anchor:files}}
====== Форматы файлов ======
Файлы, которые в настоящий момент могут быть подготовлены при помощи РАС и сохранены на диске, классифицируются следующим образом:
- {{anchor:mnt}} **Multi-screen Name Table (MNT)**
Полиэкран, состоящий из одиночных экранов общим количеством до 21 (каждый одиночный экран — Single-screen Name Table (SNT) 768 байт).
Полиэкран может быть сконфигурирован пользователем с различными шириной и высотой, задаваемых в количестве SNT (см. [[#menu1_config|Screen Config]] в меню РАС) и сохранён в различных вариантах: «Абсолютном» и «Переместимом».
* «Абсолютный» формат является отображением памяти всего полиэкрана //строка за строкой// и используется в рамках «Библиотеки функций» для загрузки и дальнейшей работы со знакоместной графикой. Ширина и высота полиэкрана (в отдельных экранах) являются неотъемлемой частью данных этого формата и автоматически восстанавливаются в РАС при загрузке файла с диска на основе данных, записанных в «абсолютный» файл при его сохранении.
* «Переместимый» формат является отображением памяти полиэкрана //экран за экраном// и, поэтому не связан жестко с конфигурацией полиэкрана. «Переместимый» файл может быть загружен в любую конфигурацию полиэкрана (с любыми высотой и шириной) без её изменения. «Библиотека функций» не поддерживает загрузку «переместимых» полиэкранов и этот формат используется, в основном, для изменения размещения экранов в рамках РАС как альтернатива сохранению одиночных экранов (SNT) в виде отдельных файлов с последующей их одиночной загрузкой. Тем не менее, этот формат может быть эффективно использован в программах пользователя в том случае, когда не требуется скроллинг полиэкрана.
- {{anchor:snt}} **Singe-screen Name Table (SNT)**
Текущее положение окна физического экрана на полиэкране (MNT) — 768 байт Name Table.
- {{anchor:lib}} **Library (LIB)**
Библиотека знакомест: pattern-библиотека (2048 байт) + colour-библиотека (2048 байт). При работе РАС и в большинстве других приложений Библиотека чаще всего является общей для всех 3 частей экрана в Screen 2: верхней, средней и нижней. Однако, это не исключает того, что Ваша будущая программа сможет использовать до трёх независимых друг от друга различных Библиотек для различных третей экрана.
- {{anchor:spr}} **Sprites Library (SPR)**
Библиотека многоцветных спрайтов (2048 байт) — пока не реализовано
Для идентификации различных форматов записи файлов, используется первый байт (первые байты) каждого файла. Ниже приводятся стандартные значения этого байта (байтов) с соответствующими комментариями.
{{anchor:files-formats}}
^ Значение (0x) ^ Описание ^ Режим ^
|F7|MNT в «Абсолютном» (строка за строкой MNT) формате. \\ Следующие 2 байта являются шириной и высотой MNT в одиночных экранах (SNT).|Загрузка и сохранение|
|F8|Special. Использовался для разработки собственно РАС.|Только сохранение таких файлов.|
|F9| MNT в «Переместимом» (экран за экраном SNT) формате с шириной и высотой MNT. \\ В настоящее время не поддерживается. Используется для совместимости со старыми версиями РАС|Только загрузка|
|FA|Sprites (2048 байт) — пока не поддерживается РАС| — |
|FB|SNT — 768 байт|Загрузка и сохранение|
|FC|MNT в «Переместимом» (экран за экраном SNT) формате. Нет байтов ширины и высоты MNT.|:::|
|FD|Библиотека знакомест: Pattern Generator (2048 байт) + Colour Table (2048 байт) + 1байт. \\ Последний байт является //указателем первого свободного// знакоместа для алгоритма автоматического размещения/добавления знакомест РАС.|:::|
|FE|Стандартный формат ''[[msx:basic_dialogue_programming_language:009#bsave_v|BSAVE]]'' / ''[[msx:basic_dialogue_programming_language:009#bload_v|BLOAD]]'' для VRAM [[msx:basic:|]]. \\ Следующие 3 слова (по 2 байта) являются адресами загрузки, конца данных и исполнительным адресом (не имеет смысла для VRAM).|Только загрузка|
====== Управление ======
Назначение кнопок мыши:
|<70% 20% 80%>|
|Левая|Выбор (Do)|
|Правая|Отмена действия или выход из текущего режима (Undo)|
РАС имеет два основных режима работы: [[#menu|Меню (Menu)]] и [[#compose|Компоновка (Compose)]].
Назначение клавиш:
|<70% 20% 30% 50%>|
|Esc|[[#pattern_editor|Pattern editor]]||
|Tab|Вставить|Операции производятся над фрагментом любого размера|
|Ctrl|Вырезать|:::|
|Shift|Скопировать|:::|
|Caps|Выбор элемента библиотеки знакомест для фазы [[#pattern_editor_animation|Мультипликация]]|:::|
|Пробел|В режиме [[#compose|Компоновка (Compose)]]: \\ [[#compose_01|включение]]/[[#compose_02|выключение]] в верхней трети экрана библиотеки знакомест||
|←, ↑, →, ↓|Прокрутка (скроллинг) [[#mnt|Multi-screen Name Table (MNT)]]||
|Graph + ←, ↑, →, ↓|Выбор экрана внутри [[#mnt|Multi-screen Name Table (MNT)]]||
|Cls + Ins + Del|Остановка печати и выход в [[msx:dos:|]]||
|Stop|Остановка печати||
|Select|Включает и выключает встроенный механизм трассировки. \\ Эта информация может помочь при обнаружении ошибки||
|Удержание Alt|Динамический показ позиций курсора в относительных и абсолютных координатах с выводом номера значения патnерна в PGT||
{{anchor:menu}}
====== Меню ======
{{anchor:menu1}}
\\ {{menu1.png?nolink}}
По нажатию на правую кнопку мыши выбирается [[#compose|режим Компоновка (Compose)]]
|<70% 20% 30% 50%>|
^ Обозначение ^ Описание ^^
|Paste|Вставить|Операции производятся над любыми блоками экрана произвольного размера, выход по правой кнопке мыши|
|Cut|Вырезать|:::|
|Copy|Скопировать|:::|
|Cls|Очистить экран||
|||
|Pattern editor +|[[#pattern_editor|Pattern editor]]||
|Sprite editor +|[[#sprite_editor|Sprite editor]]||
|||
|Clear Lib|[[#menu1_clear_lib|Очистка библиотеки]] ||
|||
|Color|[[#menu1_color|Настройка цвета]]||
|||
|Next menu|Переключение между меню: [[#menu1|меню 1]] и [[#menu2|меню 2]]||
|||
|Screen config|[[#menu1_config|Настройка и конфигурирование полиэкрана]]||
|||
|Help info|Вызов встроенной справки||
{{anchor:menu2}}
{{menu2.png?nolink}}
|<70% 20% 80%>|
^ Обозначение ^ Описание ^
|**-Save-**|Сохранить|
|Name tab|[[#snt|Singe-screen Name Table (SNT)]]|
|Library|[[#lib|Library (LIB)]]|
|Sprites|[[#spr|Sprites Library (SPR)]]|
|All name tabs|[[#mnt|Multi-screen Name Table (MNT)]]|
|Next menu|Переключение между меню: [[#menu1|меню 1]] и [[#menu2|меню 2]]|
|**-Load-**|Загрузить|
|Files|[[#files|Файлы]]|
|%%MSX DOS%%|Выход в [[msx:dos:|]]|
|**-Print-**|Напечатать|
|Name tab|[[#snt|Singe-screen Name Table (SNT)]]|
|Picture|Изображение|
|Sprites|Спрайты|
{{anchor:menu1_clear_lib}}
===== Очистка библиотеки знакомест =====
{{menu1-clear-lib.png?nolink}}
{{anchor:menu1_color}}
===== Настройка цвета =====
{{menu1-color.png?nolink}}
Настройка цвета: букв, цифр и фона
{{anchor:menu1_config}}
===== Настройка и конфигурирование полиэкрана =====
\\ {{menu1-config.png?nolink}}
Настройка размера [[#mnt|MNT]]
{{anchor:compose}}
====== Режим компоновки (Compose) ======
В режиме компоновки (Compose) все меню РАС исчезают с экрана и, используя Do и Undo, Вы можете брать паттерны с экрана и располагать их там, где считаете необходимым (при этом РАС модифицирует только Name Table).
Примечание: двойное нажатие на правую кнопку мыши (Double Click Undo) или нажатие на Пробел в режиме компоновки (Compose) приводит к появлению/[[#compose_02|исчезновению]] в верхней трети экрана библиотеки знакомест, из которой Вы можете брать паттерны, которых в данный момент нет на экране.
{{anchor:compose_01}}
{{menu1-compose_01.png?nolink}}
{{anchor:compose_02}}
Библиотека знакомест скрыта (по умолчанию):
\\ {{menu1-compose_02.png?nolink}}
{{anchor:pattern_editor}}
====== Pattern editor ======
{{pattern_editor-01.png?nolink}}
|<70% 20% 30% 50%>|
^ Обозначение ^ Описание ^^
|Ok|Выход в [[#menu|режим меню]]||
|Animation|[[#pattern_editor_animation|Мультипликация]]||
|Clr wrk|Очистка рабочего поля 16×16 точек — путём заливки выбранным цветом \\ Работает Undo (правая кнопка мыши)||
|Clr lib|[[#pattern_editor_lib_clear|Очистка элементов в библиотеке знакомест]]||
|Lib|Работать с [[#pattern_editor_lib|библиотекой знакомест]], ниже указан номер текущего элемента(или первого пустого) \\ Указатель элемента в библиотеке можно переставлять с помощью мыши. Тем самым, узнавать номер паттерна (знакоместа) в библиотеке.||
||||
|{{pattern_editor-left_right.png?nolink}}|Инвертировать изображение по горизонтали||
|{{pattern_editor-image.png?nolink}}|Рабочее поле 16×16 точек. Оно может состоять из 4 паттернов 8×8 (для связности более крупных картинок и для спрайтов)||
|{{pattern_editor-up_down.png?nolink}}|Инвертировать изображение по вертикали||
|{{pattern_editor-color_palette.png?nolink}}|Палитра цветов||
|{{pattern_editor-color_selected.png?nolink}}|Выбранный цвет, в данном примере выбран прозрачный цвет (0)||
||||
|Put|Разместить в библиотеке отредактированный элемент|Операции выполняются с изображением 8×8 точек|
|Get|Вставить в рабочее поле элемент (паттерн) из библиотеки|:::|
{{anchor:pattern_editor_animation}}
===== Мультипликация =====
Режим мультипликация (Animation).
Выбор фазы производиться нажатием на левую кнопку мыши или клавиши Caps.
Выход из режима — правая клавиша мыши.
При выборе анимационных блоков полиэкран можно двигать клавишами курсора, каждый выбранный блок увеличивает счётчик числа фаз анимации.
Анимация запускается стрелками рядом с кнопкой STOP и, если её не останавливать этой кнопкой, то продолжает работать на полиэкране даже при выходе из редактора.
Скорость смены анимационных фаз можно регулировать стрелками около кнопки TEMPO.
{{:msx:maestro:pac:pattern_editor-animation-01.png?nolink}}
Анимация возможна в режиме компоновки на полиэкране не только отдельным паттернами, но блоками любого(!) размера. Для анимации изображения из нескольких блоков их нужно выделить на полиэкране мышью удерживая левую кнопку мыши.
\\ {{:msx:maestro:pac:pattern_editor-animation-02.png?nolink}}
\\ При выборе знакомест на полиэкране для анимации курсор превращается в мигающий {{:msx:maestro:pac:pattern_editor-cursor-plus.png?nolink|"+"}} при помощи которого можно можно задавать размер анимационного блока, произвольно растягивая область выбора с удерживанием левой кнопки мыши. После задания размера первого анимационного блока все остальные блоки выбираются такого же размера и анимируются на полиэкране на месте последнего выбранного блока.
{{anchor:pattern_editor_lib_clear}}
===== Очистка элементов в библиотеке знакомест =====
При очистке библиотеки знакомест удаляется всё, что находится правее и ниже мигающей стрелки на библиотеке. Курсор {{:msx:maestro:pac:pattern_editor-lib_cursor.png?nolink|стрелку}} можно позиционировать при помощи левой кнопки мыши.
Надо иметь в виду, что при удалении элементов, которые используются самим РАС, его меню могут стать искажёнными или даже невидимыми.
{{:msx:maestro:pac:pattern_editor-lib_clear.png?nolink}}
{{anchor:pattern_editor_lib}}
===== Библиотека знакомест =====
Библиотека знакомест может быть загружена функцией ''lodlib()'' из ''GRPLIB'' ([[msx:maestro:maestro|]]) как спрайтовая библиотека. Поэтому подготовка одноцветных спрайтов возможна текущей версией РАС.
По умолчанию библиотека знакомест [[#pattern_editor_lib_open|открыта]], чтобы закрыть её, нужно нажать правую кнопку мыши, чтобы выйти из режима выбора элемента библиотеки и нажать на экране на кнопку Lib, тогда библиотека будет [[#pattern_editor_lib_close|закрыта]].
{{anchor:pattern_editor_lib_open}}
Библиотека знакомест открыта:
\\ {{pattern_editor-02.png?nolink}}
{{anchor:pattern_editor_lib_close}}
Библиотека знакомест закрыта:
\\ {{pattern_editor-03.png?nolink}}
{{anchor:sprite_editor}}
====== Sprite editor ======
Пока не реализован
/*
Прототип:
\\ {{:msx:maestro:pac:pac_sprite-editor-plus_prototype.png?nolink}}
*/
====== Ссылки ======
[[zxpkru>threads/33373-iskhodniki-programm-andreya-rodionova.html?p=1119883&viewfull=1#post1119883|Pattern Composer Plus 3.01]]
{{tag>MSX Programming Rodionov_A_B}}