SCM.INI is the file containing information about opcodes used during disassembling and compiling script files. Sanny Builder ships a list of opcodes for each edit mode.
Liberty City Stories
Vice City Stories
Lines starting with
; are ignored.
Special INI parameters provide metadata information about the opcodes list.
VERSION – defines the version of this file. See the $VERSION directive
PUBLISHER – who authored this version
DATE – the update date.
The disassembler prints the metadata in the first line of the output file.
Each line has the following syntax:
XXXX – the opcode number
N – the number of parameters
yyyy – the opcode description.
The opcode number and the number of parameters are final and can't be changed. The description is open to modifications.
If the INI file contains multiple definitions for the same opcode, the latter controls.
By convention a description for a conditional opcode starts with two spaces.
A parameter is a dynamic part of the opcode. They start and end with
0001=1,wait %1d% ms
This line is the definition of the opcode
0001. When the disassembler finds
0001 in a script it prints the words
ms with the parameter value in-between to the output file.
A parameter consists of two parts: a
number and a
The number in parameter
%1d% is its index. The idea is that some opcodes have their parameters rearranged to make source code more readable.
0053=5,%5d% = create_player %1o% at %2d% %3d% %4d%
The disassembler writes the 5th opcode parameter before any others.
0053: $PLAYER_CHAR = сreate_player #NULL at 2488.562 -1666.865 12.8757
If the parameters will follow their original order, the opcode
0053 would look like:
0053: сreate_player #NULL at 2488.562 -1666.865 12.8757 $PLAYER_CHAR
A letter following the index number indicates the parameter type.
d - any value
p - a label reference
o - any model id (including objects)
m - an
.ide model id (no objects)
g - a key from the
x - an external script ID
k - a fixed-size null-terminated string literal (128 bytes)