Список опкодов (SCM.INI)

Основной файл, который обеспечивает компиляцию и дизассемблирование скриптов, – INI файл со списком опкодов. В Sanny Builder есть список опкодов для каждого режима редактирования

Игра

Имя файла

Директория

GTA III

SCM.INI

data\gta3

Vice City

VCSCM.INI

data\vc

San Andreas

SASCM.INI

data\sa

Liberty City Stories

LCSSCM.INI

data\lcs

Vice City Stories

VCSSCM.INI

data\vcs

VC Mobile

VCSCM.INI

data\vc_mobile

SA Mobile

SASCM.INI

data\sa_mobile

Формат файла

Строки, начинающиеся с ;, игнорируются.

Метаданные

Файл может иметь особые параметры, которые содержат метаданные о его текущей версии.

VERSION – номер версии. См. директиву $VERSION PUBLISHER – автор изменений DATE – дата обновления Дизассемблер выводит эту информацию в комментарии на первой строке исходника.

Опкоды

Каждая строка с опкодом имеет следующий формат:

xxxx=N, yyyy XXXX – номер опкода N – кол-во параметров yyyy – описание опкода

Не допускается редактирование первых двух значений (номер опкода и кол-во параметров). Описание опкода может меняться свободно.

Если в INI файле содержится несколько определений для одного и того же опкода, используется последнее.

Существует соглашение, по которому описание условного опкода всегда начинается с двух пробелов.

Параметры опкодов

Параметры - это динамическая часть опкода. В описании опкода они начинаются и заканчиваются %

0001=1,wait %1d% ms

Данная строка указывает дизассемблеру, что для опкода 0001 следует написать слова wait и ms, а между ними единственный параметр опкода:

0001: wait 10 ms

Определение параметра включает в себя его порядковый номер и тип.

Порядок следования параметров

Число в параметре %1d% - его порядковый номер. Он нужен, потому что в некоторых опкодах параметры переставлены местами для улучшения читабельности кода.

0053=5,%5d% = create_player %1o% at %2d% %3d% %4d%

Для опкода 0053 дизассемблер поставит 5-й параметр в начале:

0053: $PLAYER_CHAR = сreate_player #NULL at 2488.562 -1666.865 12.8757

Если бы параметры выводились в оригинальном порядке, опкод 0053 выглядел бы так:

0053: сreate_player #NULL at 2488.562 -1666.865 12.8757 $PLAYER_CHAR

Изменение порядка следования параметров должно быть крайней мерой, т.к. оно приводит к несовместимости старых скриптов с новым INI файлом.

Порядок следования параметров может различаться от режима к режиму. Смотрите сравнительную таблицу, чтобы узнать больше.

Типы параметров

Буква после номера параметра обозначает его тип.

d - любое значение p - имя метки o - имя модели (включая объекты) m - имя модели из .ide файла (исключая объекты) g - ключ из .gxt файла x - ID внешнего скрипта k - строковый литерал фиксированной длины (128 байтов)

Типы параметров могут свободно меняться в случае необходимости.