Login

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

   ┌─────────────────┐
   │ ┌───────────────┼─┐
   │ │ ┌─────────────┼─┼───────┐
   │ │ │ ┌───────────┼─┼───────┼───────┐
   │ │ │ │ ┌─────────┼─┼───────┼───────┼──────┐
   │ │ │ │ │ ┌─...─┬─┼─┼───────┼───────┼──────┼───────────────────────────┐
┌─┬┴┬┴┬┴┬┴┬┴┬┴┐   ┌┴┬┬┐   ┌─┬┐   ┌─┬┬─┬──────┬─┬─┬────┬─────────┬────────┬─────────┬────┐
│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