Связь с администрацией сайта:       

demo

Среди толпы я одинок

11. Формат заголовка в Z-машине

Оглавление

11.1
В главной таблице приведены «точки» для заголовка Z-машины, с которыми интерпретатор должен иметь дело. (Для получения дополнительных заметок о стандартном использовании см в Приложении B) . 
"Hex" означает адрес в шестнадцатеричном виде; 
"V" самая ранняя версия, к которой применимо правило; 
"Dyn" означает, что байт или бит может быть изменен игры во время игры; 
"Int" означает, что интерпретатор может изменить его; 
"Rst" означает, что интерпретатор должен правильно его установить после запуска игры, после восстановления или после перезапуска.
 
формат заголовка

Hex

V

Dyn

Int

Rst

Contents

0

1

     

Номер версии (от 1 до 6)

1

3

     

Flags 1 (в версиях от 1 до 3):

         

Бит 1: Статус тип линии: 0 = очки/ходы, 1 = часы: минуты

         

2: История файла разбита на два диска?

     

*

*

4: Строки состояния нет в наличии?

     

*

*

5: Разъединение экрана доступно?

     

*

*

6: Является переменным шагом шрифта по умолчанию?

 

4

     

Flags 1 (начиная с версии 4):

 

5

 

*

*

Бит 0: Доступные цвета?

 

6

 

*

*

1: Отображение изображения доступно?

 

4

 

*

*

2: Жирный шрифт доступен?

 

4

 

*

*

3: Курсив доступен?

 

4

 

*

*

4: Стиль Fixed-space доступен?

 

6

 

*

*

5: Звуковые эффекты доступны?

 

4

 

*

*

7: Временный ввод с клавиатуры доступен?

4

1

     

База высокой памяти (адрес байта)

6

1

     

Начальное значение счетчика команд (адрес байта)

 

6

     

Упакованный адрес начальной "основной" подпрограммы

8

1

     

Местонахождение словаря (адрес байта)

 

1

     

Местонахождение объекта таблицы (адрес байта)

С

1

     

Расположение таблицы глобальных переменных (адрес байта)

Е

1

     

База статической памяти (адрес байта)

10

1

     

Flags 2:

 

1

*

*

*

Бит 0: устанавливается, когда transcripting включен

 

3

*

 

*

1: Устанавливает в игре, чтобы заставить печатать с фиксированным шагом шрифта

 

6

*

*

 

2: Int устанавливает для запроса перерисовки экрана: игра очищает, когда он соответствует этим требованиям.

 

5

 

*

*

3: Если установлено, игра хочет использовать картинки

 

5

 

*

*

4: Если установлено, то игра хочет использовать опкоды UNDO

 

5

 

*

*

5: Если установлено, то игра хочет использовать мышь

 

5

     

6: Если установлено, то игра хочет использовать цвета

 

5

 

*

*

7: Если установлено, игра хочет использовать звуковые эффекты

 

6

 

*

*

8: Если установлено, игра хочет использовать меню

         

(Для битов 3,4,5,7 и 8, Int снова очищает, если он не может обеспечить требуемый эффект.)

18

2

     

Расположение таблицы сокращений (адрес байта)

1A

3+

     

Длина файла (смотрите примечание)

3+

     

Контрольная сумма файла

1E

4

 

*

*

Номер интерпретатора

1F

4

 

*

*

Версия интерпретатора

Hex

V

Dyn

Int

Rst

Contents

20

4

 

*

*

Высота экрана (линии): 255 означает "бесконечный"

21

4

 

*

*

Ширина экрана (символов)

22

5

 

*

*

Ширина экрана в единицах

24

5

 

*

*

Высота экрана в единицах

26

5

 

*

*

Ширина шрифта в единицах (определяется как ширина '0')

 

6

 

*

*

Высота шрифта в единицах

27

5

 

*

*

Высота шрифта в единицах

 

6

 

*

*

Ширина шрифта в единицах (определяется как ширина '0')

28

6

     

Подпрограммы offset  (делится на 8)

2A

6

     

Статические строки offset  (делится на 8)

2C

5

 

*

*

Цвет фона по умолчанию

2D

5

 

*

*

Цвет переднего плана по умолчанию

2E

5

     

Адрес прекращения таблицы символов (байты)

30

6

 

*

 

Общая ширина текста в пикселях, отправленного в выходной поток 3

32

1

 

*

*

Стандартный номер ревизии

34

5

     

Таблица адресов алфавита (байт), или 0 по умолчанию

36

5

     

Расширение заголовка таблицы адресов (байт)

Некоторые файлы в ранних версиях до 3, не содержат длины и контрольной суммы данных, следовательно, обозначение 3+ .
11.1.1
Это неприемлемо для игры, чтобы изменять поля, которые не помечены как "Dyn". Интерпретатор поэтому свободен в хранении значений таких полей в своих собственных переменных.
11.1.2
Состояние бита transcripting (бит 0 Flags 2) могут быть изменены непосредственно в игре, чтобы включить transcripting включения или выключения (см   S7.3,S7.4). Интерпретатор должен также изменить его, если поток 2 включен или выключен, чтобы гарантировать , что бит всегда отражает истинное положение transcripting. Обратите внимание, что интерпретатор гарантирует, что его значение сохраняется после перезапуска или загрузки.
11.1.3
Infocom использовал номера интерпретаторов:
   1 DECSystem-20 5 Atari ST 9 компании Apple IIc
   2 Apple IIe 6 IBM PC 10 компании Apple IIgs
   3 Macintosh 7 Commodore 128 11 Tandy Color
   4 Amiga 8 Commodore 64
Интерпретатор должен выбрать номер интерпретатора наиболее подходящий для машины  и  продолжать работать дальше. В версиях до 5, основное соображение состоит в том, что поведение "Beyond Zork" зависит от номера интерпретатора (с точки зрения его использования в шрифтах с графическими символами). В версии 6, решение является более серьезным, так как существующие истории файлов Infocom зависят от номера интерпретатора  во многих отношениях: кроме того, некоторые сюжетные файлы ожидают работу только с интерпретаторами для конкретной машины. (Есть, например, специально для версии Amiga.)
11.1.3.1
Современным играм настоятельно рекомендуется тестировать с разными номерами интерпретатора или тестировать информацию заголовка версии интерпретатора для любой игровой машины и меняющегося поведения. Это редко бывает значимым, и стандартный интерпретатор предоставляет множество более эффективных способов для запроса интерпретатора для информации.
11.1.4
*** [1,0] Бит 7 в разделе 'Flags 1' сигнализирует, доступно ли время ожидания для ввода, в 1.0 документа: см предисловие.
11.1.5
*** [1,0] Если интерпретатор подчиняется Revision n.m этого документа, то отлично, насколько кто знает, то байт $ 32 должен быть прописан с n и байт $ 33 с m . Если это ранние (нестандартные) интерпретаторы, они должны оставить эти байты как 0.
11.1.6
Длина файла, хранящегося на $ 1a фактически разделен на константу, в зависимости от версии, чтобы оно уместилось в слово заголовка. Эта константа 2 для версий 1 до 3, 4 для версий от 4 до 5 или 8 для версий 6 и более поздних версий.
11.1.7
В таблице расширение заголовка обеспечивает потенциально неограниченное пространство для получения дополнительной информации заголовка. Это представляет собой таблицу словарных статей, в которых начальное слово содержит число слов данных.
11.1.7.1
Если интерпретатор должен прочитать слово, которое находится за пределами длины таблицы расширения, или таблицы расширения не существует, то результат равен 0.
11.1.7.2
Если интерпретатор должен написать слово, которое находится за пределами длины таблицы расширения, или таблицы продолжения не существует вообще, то получается, что ничего не происходит.
11.1.7.3
*** [1.0] [1.1] Слова в таблице заголовка расширения были распределены следующим образом:
Формат заголовка расширения

Word

V

Dyn

Int

Rst

Contents

0

5

     

Количество дополнительных слов в таблице

1

5

 

*

 

X-координата мыши после клика

2

5

 

*

 

Y-координата мыши после клика

3

5

     

Unicode Таблица трансляции адресов (по желанию)

4

5

     

Flags 3:

 

6

 

*

*

0: Если установлено, то игра хочет использовать прозрачность

5

5

 

*

*

цвет переднего плана по умолчанию True

6

5

 

*

*

цвет фона по умолчанию True

11.1.7.4
*** [1,1] Биты Flags3 устанавливаются игрой, чтобы запросить использование функции. Если интерпретатор не может обеспечить функцию, он должен очистить соответствующий бит.
11.1.7.4.1*** [1.1] Все неиспользуемые биты Flags3 должны быть очищены с помощью интерпретатора.
 

Пред. След. »

Rate this item
(0 votes)
Login to post comments