Blame | Last modification | View Log | Download
┌─────────────────┐
│ ┌───────────────┼─┐
│ │ ┌─────────────┼─┼───────┐
│ │ │ ┌───────────┼─┼───────┼───────┐
│ │ │ │ ┌─────────┼─┼───────┼───────┼──────┐
│ │ │ │ │ ┌─...─┬─┼─┼───────┼───────┼──────┼───────────────────────────┐
┌─┬┴┬┴┬┴┬┴┬┴┬┴┐ ┌┴┬┬┐ ┌─┬┐ ┌─┬┬─┬──────┬─┬─┬────┬─────────┬────────┬─────────┬────┐
│0│2│4│6│8│A│C│...│X│X│X│...│X│X│...│X│X│X│Picture│0│0│Tree│MenuNames│Structure│FirstText│Text│
└┬┴─┴─┴─┴─┴─┴┘ 1 └─┴┬┴┬┘ 2 └┬┴┬┘ 3 └┬┴┬┴┬┴──────┴┴┴──┬┴────────┴────┬────┴────────┴───┘
└───────────┘ │ │ │ │ │ │ └────┼────┘ │ │ └─────┘ └─────────┼──────┘
│ │ │ │ │ └──────┼──────┘ │ │
│ │ │ └─...─┴────────┘ │ │
│ └─...─┴─────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
Здесь в Tree главные меню нумируются отдельно начиная с 1, а все субменю тоже отдельно начиная с 1 (все субменю!).
Но это нумерация не используется в процессе игры. В Structure нумеруются уже только действующие меню, субменю (если
у главного меню есть субменю, то номер присваиваеся им, если только главное меню, то номери присваивается ему).
Пример для Tree: Пример для Structure:
┌────────────────┐ ┌──────────────────────────────┐
│Главное меню 1 │ │Адрес названия главного меню 1│
└───┬────────────┘ └───┬──────────────────────────┘
┌─┴────────────┐ ┌─┴──────────────────────┐
│Субменю 1 │ │Адрес названия субменю 1│
└─┬────────────┘ └─┬──────────────────────┘
: ┌─┴──────┐
┌─┴────────────┐ │Номер 1 │
│Субменю 5 │ └─┬──────┘
└─┬────────────┘ ┌─┴────────────┐
┌───┴────────────┐ │Адреса текстов│
│Главное меню 2 │ └─┬────────────┘
└───┬────────────┘ :
┌─┴────────────┐ ┌───┴──────────────────────────┐
│Субменю 6 │ │Адрес названия главного меню 1│
└─┬────────────┘ └───┬──────────────────────────┘
: ┌─┴──────────────────────┐
┌─┴────────────┐ │Адрес названия субменю 5│
│Субменю 12 │ └─┬──────────────────────┘
└─┬────────────┘ ┌─┴──────┐
┌───┴────────────┐ │Номер 5 │
│Главное меню 3 │ └─┬──────┘
└────────────────┘ ┌─┴────────────┐
│Адреса текстов│
└─┬────────────┘
┌───┴──────────────────────────┐
│Адрес названия главного меню 2│
└───┬──────────────────────────┘
┌─┴──────────────────────┐
│Адрес названия субменю 6│
└─┬──────────────────────┘
┌─┴──────┐
│Номер 6 │
└─┬──────┘
┌─┴────────────┐
│Адреса текстов│
└─┬────────────┘
:
┌───┴──────────────────────────┐
│Адрес названия главного меню 2│
└───┬──────────────────────────┘
┌─┴───────────────────────┐
│Адрес названия субменю 12│
└─┬───────────────────────┘
┌─┴──────┐
│Номер 12│
└─┬──────┘
┌─┴────────────┐
│Адреса текстов│
└─┬────────────┘
┌───┴──────────────────────────┐
│Адрес названия главного меню 3│
└───┬──────────────────────────┘
┌─┴───────────────────────┐
│FFFF │
└─┬───────────────────────┘
┌─┴──────┐
│Номер 13│
└─┬──────┘
┌─┴────────────┐
│Адреса текстов│
└──────────────┘
P.S. Адреса текстов это список адресов, которые показываются при следущем нажатии.
1) Указывают на "Aдрес названия главного меню Х" в Structure
2) Указывают на "Главное меню Х" в Tree
3) Указывают на названия файлов рисунков в Picture
------------------------------------------------------------------------------
Структура разделов:
Picture:
Фоновые рисунки
2 (integer) способ прорисовки рисунка
0038 004E 0050
0938 094E 0950
0A38 0A4E 0A50
0B38 0B4E 0B50
где первые две цифры:
00 - прорисовывается сразу весь рисунок;
09 - прорисовывается с эффектом "жалюзи";
0A - прорисовывается одновременно сверху и снизу.
0B - слева направо
две вторые цифры:
38 - это спрайт;
03,50 и 4E - это фоновые рисунки, немного отличаются палитрой (4Е
преобладает фиолетовый цвет)
7 (string) название рисунка, если это фон
5 (string) название рисунка, если это спрайт
Tree:
2 (integer) Адрес названия главного меню #1
2 (integer) Адрес названия субменю меню #1
:::
2 (integer) Адрес названия субменю меню #n
2 (integer) FFFF Конец
:::
2 (integer) Адрес названия главного меню #k
2 (integer) Адрес названия субменю меню #1
:::
2 (integer) Адрес названия субменю меню #n
2 (integer) FFFF Конец
MenuNames:
1 (byte) Порядковый номер главного меню #1
n (string) Название главного меню #1
1 (byte) 0 Конец
:::
1 (byte) Порядковый номер главного меню #n
n (string) Название главного меню #n
1 (byte) 0 Конец
1 (byte) Порядковый номер субменю #1
n (string) Название субменю #1
1 (byte) 0 Конец
:::
1 (byte) Порядковый номер субменю #n
n (string) Название субменю #n
1 (byte) 0 Конец
Structure:
2 (integer) Адрес названия главного меню #1
2 (integer) Адрес названия субменю меню #1
2 (integer) Номер данного меню
2*k (integer) Адреса текста
:::
2 (integer) Адрес названия главного меню #1
2 (integer) Адрес названия субменю меню #k
2 (integer) Номер данного меню
2*k (integer) Адреса текста
:::
2 (integer) Адрес названия главного меню #m
2 (integer) Адрес названия субменю меню #k
2 (integer) Номер данного меню
2*k (integer) Адреса текста
FirstText:
n (string) Текст
4 (long) 0000 Конец
Text:
n (string) Текст
4 (long) 0000 Конец
------------------------------------------------------------------------------
В тексте исполбзуются следующие команды:
01 - Очистка тестового окна после нажатия
04 file - Загрузка сценария file (название OVL файла без расширения)
06 X - Загрузка рисунка X
07 X - Выбор музыки X
08 - Ожидание нажатия любой клавиши
09 - Ожидание нажатия любой клавиши и продолжение через строку
0A - Перенос на следующую строку
0B 01 X -
0B 02 X Y -
0B 03 X Y -
0B 05 X Y - Присвоение локальной переменной X=Y
0B 07 X Y Z -
0B 08 X Y Z - Проверить ячейки X, Y, Z на истинность
0B 09 X Y Z -
0B 0A X - Продолжить если X истинно
0B 14 X Y -
0B 32 X Y Z - Перейти по адресу YZ если X исинно
0B 33 X Y Z - Перейти по адресу YZ если X ложно
0B 34 X Y Z - Перейти по адресу YZ
0B 36 XY - Перейти по адресу XY
0C 01 X Y -
0C 02 X Y -
0C 03 X Y - Присвоение глобальной переменной X=Y
0F -
10 -
11 02 X Y Z -
12 01 X - Отключить главное меню X
12 02 X - Включить главное меню X
12 04 X Y - Отключить в главном меню X субменю Y
12 05 X Y - Включить в главном меню X субменю Y
13 X - Вспышка длительностью X
14 X - Пауза длительностью X